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,HTML_MESSAGE,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 7151 invoked from network); 24 Apr 2021 20:08:00 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 24 Apr 2021 20:08:00 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1619294880; b=nkT3jbQJkGSlfV11BkfwIlVJkhxxV64g6ZKf3Sh4YsIflpwBPcB6jdSYU+DKBN8VSlSdfqYsBc mx0n6JbsNBxv8sbdCA27lFHtWW5i+CikK8ne29+BlAxTvAXTKsX40zQ1qnMOby7qUMJfz1YfJD RT+LlKVyzBBiU8mmFb2qlKvwu97nccK3obqVdsPCqUCryRCkgQjMN9rGw32PKBehBwB3uPihkQ tzWTwPMJAR1DJVOY+ETSKpWttNvfkgYt2S/STW/J7+IjGrEYdKcFvhtPPq0tIs9RHtqhTQIx/M lvFmIpF4zJSstwqHfvV/gpob3P3T09lD4xBpsISFfvig+A==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-lf1-f43.google.com) smtp.remote-ip=209.85.167.43; 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=1619294880; bh=DeAk6z36xcpYwze0K1ZJOMOcrSaftXKw3n/kq1Bgip4=; 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=qh0KxF4QKBpPi1icx7c+LPaMSZsiVm5Mr1Vvfe2YwXJZjHCS13rJGllYogiMRo+Fmd0WlwsTzz 1l0JDNBDNIEAnwu5+WiC6WYjdr5hlL3wkNZwwOTHYGBYDUOUikXZVjefILV7myE/WH7Z2IMnx/ ZXWG1WvZS4Loz5gkePJZqy3+F24jbx2WuFwOwIIwt1W44b9FGvhIsuoebyek5MMGqEmzVv9a5c D/csP7fzh84UnMEeY+WEG67E54yOKq9muTTsMrS7qyltU6VzLRtt6EJG33+JKzGs/iBG8rkYiM jRZJvpP+lNf+jV73NSA89SnME8q1LcbmHvS6f64nSmDIQQ==; 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=QV5EFoSnvS0P+l8C9U8Y/R9P72ocJpAVbvtaFxCVUqs=; b=JaLUeSYNU3hqNeANOMY7dGFmBl 2l2K1PoiGvdznvDEyqnVD7h+GCCVOaTW1pakvG8rmalEfYF6BV4qFHqdd6KeLwTXBWBpYH9fC42kH +CZvmedqGiAd+jdrRmWVS0iWISJfNLnQiCYg1lcjHEUTThHk+RZOzYx43X1ZNMV/nn1jUqiBUFhq8 i7r5mAqa3a3lYD4U0C0/1ff6JUYpbNL6aAk3KN7XPTeABq337NR+LPdU39UviDZR4zGtWK53P8s3F R0QouwB9Fw6Z/5AY1qIUcPnQUujSazGo8+nwMkwddaAnEa5YtNhmvqjeYWlm579dq7qn2xL9SL0ZG 9k/l6O4Q==; Received: from authenticated user by zero.zsh.org with local id 1laOZH-0003YV-6q; Sat, 24 Apr 2021 20:07:55 +0000 Authentication-Results: zsh.org; iprev=pass (mail-lf1-f43.google.com) smtp.remote-ip=209.85.167.43; 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-f43.google.com ([209.85.167.43]:38630) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1laOYj-0003I0-B2; Sat, 24 Apr 2021 20:07:22 +0000 Received: by mail-lf1-f43.google.com with SMTP id 124so1366155lff.5 for ; Sat, 24 Apr 2021 13:07:21 -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=QV5EFoSnvS0P+l8C9U8Y/R9P72ocJpAVbvtaFxCVUqs=; b=lkIc76TnE1WqCx3wURizvt7yTaYgRC7xAZqYRwTR0lv1ch6IQS6b+UN8ktLaMFn0I9 wGPtcPHg1Kgqb4x/Rux4PhY9YKNEURyQdy4cbyuEuUUpIgMtm61aBoj4+wySN+bBRb4O jGXmcD18KB9WNWHtAsbT9u3/akRZJLSLPbhLejQq8BZpEtHrrA6rGM0f2O8gWLKBQFDl 2ipA+pRS7vZjjZSWCrZ3eRA2KdOgmfj+KIWVStlF+IJvS858HpT/a9dG5ZliiaHVghkB m9E07689JdBl+T9C3YsL8X90CRsQXAHGQmnMj2qHYX5HMgXGRU3wP3TaXhmmj+o5DA6+ KTGQ== 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=QV5EFoSnvS0P+l8C9U8Y/R9P72ocJpAVbvtaFxCVUqs=; b=cHKcYdHbOt9Z2vwmiobjgBbhDrjIS08XjVTGvUxBZfsfzIC1s9dOehHQYsSYXpt5cb kWwOIhzfcEX61pQpAM1BNg4MXElOriMqC8klanuuleMIy+F0DwNc09nhePpiY/2kXCoA PK5VFJYq6TMioYHW9t73bGUmSWuc85w3Tm7ZWyXK80JU9ZWByG39EbjGkzROnUaCBgqZ SSkA7XARKOQI2UDwzNlC5gXchfG6d5oWMg2B6FJUs4KnpBYjwtMlt3KdM6UcpGMz4WWG H8KlAUNgB4P9MI7cNn22Pb+giA4jIq1AdOLu60IaJGycaAN57S6X0kljJHfpaosEiIAE CcWA== X-Gm-Message-State: AOAM531IjfuuqDnYMzwjTnzxvC9bRBOhC3tCgt3E/c3BAFiHjjOGj4KR KZmiLzYioHmdQEAvq6VSkJ9DteyVjeWkL3/U7PBLRqXFP/Zc/A== X-Google-Smtp-Source: ABdhPJwX9tbG86m8SBqQ72COtTcqsCJZkaDC2pIjOa8G4aIbeD1r6S0pLVRSnrP4nyjjgwJr5xRrlbjdOJA9lwq0T0w= X-Received: by 2002:a05:6512:3f8f:: with SMTP id x15mr7080577lfa.102.1619294840514; Sat, 24 Apr 2021 13:07:20 -0700 (PDT) MIME-Version: 1.0 References: <95CDA630-4EE5-4003-8D9C-CCCB9A47F109@gmail.com> <4D587C0C-EB5F-4A58-A0AE-D45E43F432CD@gmail.com> <20210421212717.GE21343@tarpaulin.shahaf.local2> <214AC3E9-FFA5-4F39-A918-562682FE3A3B@gmail.com> In-Reply-To: From: Marlon Richert Date: Sat, 24 Apr 2021 23:06:44 +0300 Message-ID: Subject: Re: [PATCH] Add execute-command() widget function (was Re: [RFC][PATCH] Add change-directory() widget function) To: Bart Schaefer Cc: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000c183f805c0bd759e" X-Seq: 48689 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: --000000000000c183f805c0bd759e Content-Type: multipart/alternative; boundary="000000000000c183f605c0bd759c" --000000000000c183f605c0bd759c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable New patch attached. (Also, I switched from macOS's Mail app back again to Gmail's web app. Let's see how that goes for the line wrapping. I'm unable to reproduce it when reading back my own emails in either app. I don't have to do any horizontal scrolling when reading them.) On Fri, Apr 23, 2021 at 2:27 AM Bart Schaefer wrote: > On Thu, Apr 22, 2021 at 3:55 AM Marlon Richert > wrote: > > > > If I would use push-input instead of push-line-or-edit, the buffer woul= d > not get restored immediately after using the widget. You=E2=80=99d end up= with a > blank command line instead. I want it to work the same from PS2 as it doe= s > from PS1. > > I see. (Also, I forgot that push-input is implemented via > push-line-or-edit, not the other way around.) > > Then how about: > > execute-command() { > local finish=3D"zle .reset-prompt" > case $CONTEXT in > (cont) finish=3D"zle .push-line-or-edit" > ;& > (start) > print -S "${${(q-)@}}" > eval "${(q-)@}" > ;; > (*) return 75 > ;; > esac > eval "$finish" > } > I tried a similar approach with `eval` before, but that doesn't play nice with all prompts, as I outlined in workers/48622: On Tue, Apr 20, 2021 at 4:36 PM Marlon Richert wrote: > There was some discussion as to whether this should or shouldn=E2=80=99t = leave the > executed commands visible in the terminal and/or history. I tried a versi= on > of it that doesn=E2=80=99t put the commands in the buffer but executes th= em > directly and then does zle .reset-prompt, but this can leave the prompt i= n > an incorrect state if the prompt uses precmd hooks. I also tried =E2=80= =9Cmanually=E2=80=9D > running precmd_functions before zle .reset-prompt, but this causes proble= ms > when any precmd hook contains code that doesn=E2=80=99t work when execute= d inside a > widget (for example, echoing an escape code that result in a response fro= m > the terminal). Therefore, I instead settled on pushing the current line, > setting the buffer, and then accepting the line. This seems to me the lea= st > likely to break anything, but I=E2=80=99m open to alternatives. > --000000000000c183f605c0bd759c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
New patch attached.

(Also, I= switched from macOS's Mail=C2=A0app back again to Gmail's web app.= Let's see how that goes for the line wrapping. I'm unable to repro= duce it when reading back my own emails in either app. I don't have to = do any horizontal scrolling when reading them.)

<= /div>
On Fri, Apr 23, 2021 at 2:27 AM Bart Schaefer <schaefer@brasslantern.com>= wrote:
On Thu, Apr 22, 2021 at 3:55 AM Marlon Richert <marlon.richert@gma= il.com> wrote:
>
> If I would use push-input instead of push-line-or-edit, the buffer wou= ld not get restored immediately after using the widget. You=E2=80=99d end u= p with a blank command line instead. I want it to work the same from PS2 as= it does from PS1.

I see.=C2=A0 (Also, I forgot that push-input is implemented via
push-line-or-edit, not the other way around.)

Then how about:

execute-command() {
=C2=A0 local finish=3D"zle .reset-prompt"
=C2=A0 case $CONTEXT in
=C2=A0 (cont) finish=3D"zle .push-line-or-edit"
=C2=A0 =C2=A0 ;&
=C2=A0 (start)
=C2=A0 =C2=A0 print -S "${${(q-)@}}"
=C2=A0 =C2=A0 eval "${(q-)@}"
=C2=A0 =C2=A0 ;;
=C2=A0 (*) return 75
=C2=A0 =C2=A0 ;;
=C2=A0 esac
=C2=A0 eval "$finish"
}

I tried a similar approach with `eval= ` before, but that doesn't play nice with all prompts, as I outlined in= workers/48622:

On Tue, Apr 20, 2= 021 at 4:36 PM Marlon Richert <marlon.richert@gmail.com> wrote:
There was some discus= sion as to whether this should or shouldn=E2=80=99t leave the executed comm= ands visible in the terminal and/or history. I tried a version of it that d= oesn=E2=80=99t put the commands in the buffer but executes them directly an= d then does zle .reset-prompt, but this can leave the prompt in an incorrec= t state if the prompt uses precmd hooks. I also tried =E2=80=9Cmanually=E2= =80=9D running precmd_functions before zle .reset-prompt, but this causes p= roblems when any precmd hook contains code that doesn=E2=80=99t work when e= xecuted inside a widget (for example, echoing an escape code that result in= a response from the terminal). Therefore, I instead settled on pushing the= current line, setting the buffer, and then accepting the line. This seems = to me the least likely to break anything, but I=E2=80=99m open to alternati= ves.

--000000000000c183f605c0bd759c-- --000000000000c183f805c0bd759e Content-Type: text/plain; charset="US-ASCII"; name="0001-Add-execute-command-widget-function.txt" Content-Disposition: attachment; filename="0001-Add-execute-command-widget-function.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_knw63hgx0 RnJvbSA5ODQ1ZTlkODQzNjZjNzczMWY2ZTBjMTNjOGI2NjFlMzE2MTZlN2QwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJsb24gUmljaGVydCA8bWFybG9uLnJpY2hlcnRAZ21haWwu Y29tPgpEYXRlOiBTYXQsIDI0IEFwciAyMDIxIDIyOjU5OjI3ICswMzAwClN1YmplY3Q6IFtQQVRD SF0gQWRkIGV4ZWN1dGUtY29tbWFuZCgpIHdpZGdldCBmdW5jdGlvbgoKLS0tCiBEb2MvWnNoL2Nv bnRyaWIueW8gICAgICAgICAgICB8IDQzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIEZ1 bmN0aW9ucy9abGUvZXhlY3V0ZS1jb21tYW5kIHwgNTQgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgOTcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IEZ1bmN0aW9ucy9abGUvZXhlY3V0ZS1jb21tYW5kCgpkaWZmIC0tZ2l0IGEvRG9j L1pzaC9jb250cmliLnlvIGIvRG9jL1pzaC9jb250cmliLnlvCmluZGV4IDhiZjFhMjA4ZS4uODE0 MmI4NDE4IDEwMDY0NAotLS0gYS9Eb2MvWnNoL2NvbnRyaWIueW8KKysrIGIvRG9jL1pzaC9jb250 cmliLnlvCkBAIC0yNTAyLDYgKzI1MDIsNDkgQEAgYXJndW1lbnRzOgogCiBleGFtcGxlKHpzdHls ZSA6emxlOmVkaXQtY29tbWFuZC1saW5lIGVkaXRvciBndmltIC1mKQogKQordGluZGV4KGV4ZWN1 dGUtY29tbWFuZCkKK3RpbmRleChjZC11cHdhcmQpCit0aW5kZXgoY2QtYmFja3dhcmQpCit0aW5k ZXgoY2QtZm9yd2FyZCkKK2l0ZW0odHQoZXhlY3V0ZS1jb21tYW5kKSkoCitUaGlzIGZ1bmN0aW9u IGhlbHBzIHlvdSBpbXBsZW1lbnQgd2lkZ2V0cyB0aGF0IGV4ZWN1dGUgYSBzcGVjaWZpZWQgY29t bWFuZAorKHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gYXMgYSBzaW5nbGUgc3RyaW5nIGFyZ3VtZW50 KSB3aXRob3V0IGxvc2luZyB0aGUgY3VycmVudAorY29tbWFuZCBsaW5lLCBpbiBhIGZhc2hpb24g c2ltaWxhciB0byB0aGUgdHQocnVuLWhlbHApIGFuZCB0dCh3aGljaC1jb21tYW5kKSAKK3dpZGdl dHMgKHNlZQoraWZ6bWFuKHRoZSBzdWJzZWN0aW9uIGJmKE1pc2NlbGxhbmVvdXMpIGluIHptYW5y ZWYoenNoemxlKSlcCitpZm56bWFuKG5vZGVyZWYoWkxFIHdpZGdldHMgc3RhbmRhcmQgTWlzY2Vs bGFuZW91cykpKS4gVGhlIGZ1bmN0aW9uIGRvZXMgdGhpcworYXMgZm9sbG93czoKK2VudW1lcmF0 aW9uKAorZWl0KCkgUHVzaCB0aGUgYnVmZmVyIG9udG8gdGhlIGJ1ZmZlciBzdGFjay4KK2VpdCgp IEV4ZWN1dGUgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IHN0cmluZy4KK2VpdCgpIExldCB0aGUgWkxF IHBvcCB0aGUgYnVmZmVyIG9mZiB0aGUgdG9wIG9mIHRoZSBidWZmZXIgc3RhY2sgYW5kIGxvYWQg aXQgCisgIGludG8gdGhlIGVkaXRpbmcgYnVmZmVyLgorKQorCitZb3UgY2FuIHVzZSB0aGlzLCBm b3IgZXhhbXBsZSwgdG8gY3JlYXRlIGtleSBiaW5kaW5ncyB0aGF0IGxldCB5b3UgaW5zdGFudGx5 CitjaGFuZ2UgZGlyZWN0b3JpZXMsIGV2ZW4gd2hpbGUgaW4gdGhlIG1pZGRsZSBvZiB0eXBpbmcg YW5vdGhlciBjb21tYW5kOgorCitleGFtcGxlKGF1dG9sb2FkIC1VeiBleGVjdXRlLWNvbW1hbmQK K3psZSAtTiBjZC1wYXJlbnQ7IGNkLXBhcmVudCtMUEFSKCkrUlBBUigpIHsKKyAgZXhlY3V0ZS1j b21tYW5kIC0tICdjZCAuLicKK30KK3psZSAtTiBwdXNoZC1wcmV2OyBwdXNoZC1wcmV2K0xQQVIo KStSUEFSKCkgeworICBsb2NhbCBzaWduPScrJzsgW1sgLW8gcHVzaGRtaW51cyBdXSAmJiBzaWdu PSctJworICBleGVjdXRlLWNvbW1hbmQgLS0gInB1c2hkICR7c2lnbn0xID4gL2Rldi9udWxsIgor fQoremxlIC1OIHB1c2hkLW5leHQ7IHB1c2hkLW5leHQrTFBBUigpK1JQQVIoKSB7IAorICBsb2Nh bCBzaWduPSctJzsgW1sgLW8gcHVzaGRtaW51cyBdXSAmJiBzaWduPScrJworICBleGVjdXRlLWNv bW1hbmQgLS0gInB1c2hkICR7c2lnbn0wID4gL2Rldi9udWxsIiAKK30KK2JpbmRrZXkgICJeWyR0 ZXJtaW5mb1tjdXUxXSIgY2QtcGFyZW50ICAjIEFsdC1VcCBpbiByYXcgbW9kZQorYmluZGtleSAi XlskdGVybWluZm9ba2N1dTFdIiBjZC1wYXJlbnQgICMgQWx0LVVwIGluIGFwcCBtb2RlCitiaW5k a2V5ICAgICAgICAgICAgICAgICdeWy0nIHB1c2hkLXByZXYgIyBBbHQtTWludXMKK2JpbmRrZXkg ICAgICAgICAgICAgICAgJ15bPScgcHVzaGQtbmV4dCAjIEFsdC1FcXVhbHMpCisKK05vdGUgdGhh dCB3aWRnZXRzIGNyZWF0ZWQgd2l0aCB0aGlzIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIGluc2lk ZSBhIHR0KHNlbGVjdCkKK2xvb3Agb3IgdHQodmFyZWQpLiBVbmRlciB0aG9zZSBjaXJjdW1zdGFu Y2VzLCB0aGUgZnVuY3Rpb24gZG9lcyBub3RoaW5nIGFuZAorcmV0dXJucyBub24temVyby4KKykK IHRpbmRleChleHBhbmQtYWJzb2x1dGUtcGF0aCkKIGl0ZW0odHQoZXhwYW5kLWFic29sdXRlLXBh dGgpKSgKIEV4cGFuZCB0aGUgZmlsZSBuYW1lIHVuZGVyIHRoZSBjdXJzb3IgdG8gYW4gYWJzb2x1 dGUgcGF0aCwgcmVzb2x2aW5nCmRpZmYgLS1naXQgYS9GdW5jdGlvbnMvWmxlL2V4ZWN1dGUtY29t bWFuZCBiL0Z1bmN0aW9ucy9abGUvZXhlY3V0ZS1jb21tYW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMC4uNDAxNGZhODU0Ci0tLSAvZGV2L251bGwKKysrIGIvRnVuY3Rpb25z L1psZS9leGVjdXRlLWNvbW1hbmQKQEAgLTAsMCArMSw1NCBAQAorIyBMZXRzIHlvdSBpbXBsZW1l bnQgd2lkZ2V0cyB0aGF0IGNhbiBleGVjdXRlIGFyYml0cmFyeSBjb21tYW5kcyB3aXRob3V0IGxv c2luZworIyB0aGUgY3VycmVudCBjb21tYW5kIGxpbmUsIGluIGEgZmFzaGlvbiBzaW1pbGFyIHRv ICdydW4taGVscCcgYW5kCisjICd3aGljaC1jb21tYW5kJyB3aWRnZXRzLiBTZWUgdGhlIG1hbnVh bCBmb3IgZXhhbXBsZXMuCisKK3ptb2Rsb2FkIC1GIHpzaC96dXRpbCBiOnpwYXJzZW9wdHMKK2F1 dG9sb2FkIC1VeiBhZGQtemxlLWhvb2std2lkZ2V0CisKK2Nhc2UgJENPTlRFWFQgaW4KKyAgKCBz dGFydCApICMgUFMxCisgICAgOzsKKyAgKCBjb250ICkgICMgUFMyCisgICAgIyBBZGQgYSBvbmUt dGltZSBob29rIHRoYXQgd2lsbCByZS1ydW4gdGhpcyB3aWRnZXQgYXQgdGhlIHRvcC1sZXZlbCBw cm9tcHQuCisgICAgbG9jYWwgaG9vaz1saW5lLWluaXQKKyAgICBsb2NhbCBmdW5jPSR7KHEpOi06 JHsoJSk6LSVOfTokaG9vazokV0lER0VUfQorICAgIGV2YWwgIiRmdW5jKCkgeworICAgICAgIyBN YWtlIHN1cmUgd2UgZG9uJ3QgcnVuIHR3aWNlLgorICAgICAgYWRkLXpsZS1ob29rLXdpZGdldCAt ZCAkaG9vayAkZnVuYworCisgICAgICAjIERvbid0IGxlYXZlIGFueXRoaW5nIGJlaGluZC4KKyAg ICAgIHpsZSAtRCAkZnVuYworICAgICAgdW5mdW5jdGlvbiAkZnVuYworCisgICAgICAjIFVzZSAt dyB0byBlbnN1cmUgXCRXSURHRVQgaXMgc2V0IHRvIG91ciBvcmlnaW5hbCB3aWRnZXQsIG5vdCB0 aGUgaG9vay4KKyAgICAgICMgVGhpcyBkb2Vzbid0IG1hdHRlciBhdCBwcmVzZW50LCBidXQgbWln aHQgbWF0dGVyIGluIGZ1dHVyZSBvciBpZiB0aGlzCisgICAgICAjIGNvZGUgZ2V0cyBjb3B5LXBh c3RlZCBlbHNld2hlcmUuCisgICAgICB6bGUgJHsocSlXSURHRVR9IC13CisgICAgfSIKKyAgICBh ZGQtemxlLWhvb2std2lkZ2V0ICRob29rICR7KFEpZnVuY30KKworICAgICMgTW92ZSB0aGUgZW50 aXJlIGN1cnJlbnQgbXVsdGlsaW5lIGNvbnN0cnVjdCBpbnRvIHRoZSBlZGl0b3IgYnVmZmVyLiBU aGlzCisgICAgIyBmdW5jdGlvbiBpcyB0aGVuIGFib3J0ZWQgYW5kIHdlIHJldHVybiB0byB0aGUg dG9wLWxldmVsIHByb21wdCwgd2hpY2gKKyAgICAjIHRyaWdnZXJzIHRoZSBob29rIGFib3ZlLgor ICAgICMgV2UgZG9uJ3QgdXNlIC5wdXNoLWlucHV0IGhlcmUsIGJlY2F1c2UgdGhhdCB3b3VsZCBy ZXN1bHQgaW4gYSBibGFuaworICAgICMgYnVmZmVyIGFmdGVyd2FyZHMuCisgICAgemxlIC5wdXNo LWxpbmUtb3ItZWRpdAorICAgIHJldHVybiAgIyBDb21tYW5kIGZsb3cgbmV2ZXIgYWN0dWFsbHkg Z2V0cyBoZXJlLiBTZWUgYWJvdmUuCisgICAgOzsKKyAgKCAqICkKKyAgICAjIFdlIGRvbid0IHdh bnQgdGhpcyB0byBiZSB1c2VkIGluIGEgc2VsZWN0IGxvb3Agb3IgaW4gdmFyZWQ6CisgICAgIyAq IEF0IGEgc2VsZWN0IHByb21wdCwgdGhlIGNvbW1hbmQgd291bGRuJ3QgYmUgImV4ZWN1dGVkIjsg aXQnZCBiZSBmZWQgdG8KKyAgICAjICAgc2VsZWN0IGFzIHRoZSB2YWx1ZSBvZiB0aGUgc2VsZWN0 aW9uLgorICAgICMgKiBJbiB2YXJlZCwgaXQgd291bGQgcmVwbGFjZSB0aGUgY29udGVudHMgb2Yg dGhlIHZhcmlhYmxlIHdpdGggdGhlCisgICAgIyAgIGNvbW1hbmQgc3RyaW5nIGFuZCB0aGVuIGV4 aXQgdmFyZWQuCisgICAgcmV0dXJuIDc1ICMgRVhfVEVNUEZBSUw7IHNlZSBgbWFuIDMgc3lzZXhp dHNgLgorICAgIDs7Citlc2FjCisKKyMgUHVzaCB0aGUgY3VycmVudCBidWZmZXIgb250byB0aGUg YnVmZmVyIHN0YWNrIGFuZCBjbGVhciB0aGUgYnVmZmVyLiBUaGUgWkxFCisjIHdpbGwgYXV0by1y ZXN0b3JlIGl0IGF0IHRoZSBuZXh0IHRvcC1sZXZlbCBwcm9tcHQuCit6bGUgLnB1c2gtbGluZQor Cit6cGFyc2VvcHRzIC1EIC0gIyBSZW1vdmUgLSBvciAtLSBhcmd1bWVudC4KK0JVRkZFUj0iJDEi Cit6bGUgLmFjY2VwdC1saW5lCi0tIAoyLjMxLjEKCg== --000000000000c183f805c0bd759e--