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.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 32140 invoked from network); 7 Aug 2023 00:39:20 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 7 Aug 2023 00:39:20 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1691368760; b=fk0Ev/IPEi2KG53eT1QP1Pgzjz3OgmaDxtuVU+JAjyZmHJcg5aUzoVAqAhL3prKGI9N1T5dXVw jdk+6TqeHzqcAOAfaKutH4qphQsSVK+6J+m9z7E9SNB9Bb3dkWDfJlBDCd80AT3N3zdubeYrEt TgnVpFtlKgaOk8BBpMNDR2NdYoWLy+OV+wkzbl6j7+R6530wEGDU9hX7NSb5w3Rs59m+DP/dTB OXyTD/pWRR+8mK7Fsq+fdrxf9w6viKJb4dTNHPF5vIzo7r74bAAPFE2GJw+gKnlCBD6QjrLcsY LxmmHm7fbfFJHwfLCszDcRtZbFuviYr//zt66e6dRPamOA==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ej1-f41.google.com) smtp.remote-ip=209.85.218.41; dkim=pass header.d=brasslantern-com.20221208.gappssmtp.com header.s=20221208 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1691368760; bh=OroHPJhW+FhD7U0qRqj56tufklWmjPLO9veCB7wuXhc=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=LNnwtPNCl3H0557moiTiXzDztWk4Pfv4Of5Fvht9FoP9F9OtYVT52xr12ccwPGxBuXNy1V75os wdK1hpYGMPXx4dwU67OKw5/RD04zyKfVIO/ZQXdSrSZg6GcQnVrXVNxiVfIpZNnbsMqamn4Y3t y3E6JBL2QYBEtieNr4crGWR0k1R17kUImD5HhedrWsllZNxwiW0OYGBj4NvOrDAAawb5hqrhgQ He5BTrX4ePxOCz/wd64KCZ9JunCmUJHfA46LlXGS5yxj2p7RBjp2REYoQ3riJtvONYXLF0e29B 2FKs1Ai0Iva+5YUWm5naOOJB/R/UFxnrfmHUyfimW+0TIA==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:In-Reply-To:References:MIME-Version:Reply-To:Cc: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=++tZF8892GbRuhDPvQ6BF3tJbBLnIp7D+IpA60vIdKA=; b=cjJMqyrevqRNwurm3WLRnkw/EC G5OHJprDH3ueFdJwtKgCFwHcUJwcKdHfndpGrPEMKWIr92O8LQh93fDMdGasE+HS88/w0EP49G6Pf wgkD2oEQkbJ2oXKHjf3Chst32pVFjLmXGlCOpklusaJxtaxduFWsrrNiDMqA1hg/bxW3OPREYd4wL bTXRWi4JFqq2tu5RgwyLzM/0QTqWmO9qpCT9MbSRMqMi369tSQwH8642Gw9YCuuSKjZXXapeAsxQO WjutTHdnTrcbDQjWYsIHQc5GQty/NRsnD7ukPUoerY94NUQkd7ANW9OZR1D6ocIiY+noW0HP/eIHH /Tw7rhZA==; Received: by zero.zsh.org with local id 1qSoHG-000ARY-DC; Mon, 07 Aug 2023 00:39:18 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ej1-f41.google.com) smtp.remote-ip=209.85.218.41; dkim=pass header.d=brasslantern-com.20221208.gappssmtp.com header.s=20221208 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ej1-f41.google.com ([209.85.218.41]:59486) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1qSoGc-000A83-Rk; Mon, 07 Aug 2023 00:38:44 +0000 Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-99c4923195dso581191766b.2 for ; Sun, 06 Aug 2023 17:38:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20221208.gappssmtp.com; s=20221208; t=1691368718; x=1691973518; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=++tZF8892GbRuhDPvQ6BF3tJbBLnIp7D+IpA60vIdKA=; b=3zmb/9LWnRpkRJBzlJJetjNDXeX6nbJt96GZJmH+InCjD4WqKcyWS7XwsZG1KH3mGr nnEsj14jbDf3PXwGqqlxJEZbu02UjTvxFV59MJ1jvjDhiiRiY42XzJBJ24rAkpRvSyG6 89/m0QcB6l+Xa8n6wINPDHuc9+YkbSvw3R+tTZ8HbYTezjzu1BNSiYpEfZwQ1IdhiCGX MU4GXpqKbaYXBYpczVgeXD+9lwWrpQvuaaDyu09UASFs2XYE9u2LWgB9HK1TscZEeXyv 5gDtpB/ZHt+srpia4MMQ/3GRpAHL/qNcK/oh704ngwXWnfes9vETjjsy6eqODfxLCTaN UCTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691368718; x=1691973518; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=++tZF8892GbRuhDPvQ6BF3tJbBLnIp7D+IpA60vIdKA=; b=j2eLLZxGanvRYhVIb4MVZpHq9DHJH8LfT3IFOaysYZ5KCK7ms/ncg+nRnhgb65L60C C10jmsJHTvoCtTTac03SpeZIkVXxAcSgWVU62IHl/CKppEqDMBQvPPBSdzvEH5ZOvOA9 paiKrBZ4B4T4zTCdawNPfw0pH1DGeo6/CiLBBfQ2zprZzjkLOeJAOAVXUdllKYhEyZHh 78bejEbrHybg7JqCDZYCNueeNLmna3n2y7CeB9mBat2CkDSlpX6Gnb3n2seHHzWw6R9a A643SBFx+DTHRFkYYv9bTOER744OCzjbrieWlbOK+A5m6jdXnyZ19XL/eIrTOLTMLnCa qhTQ== X-Gm-Message-State: AOJu0YzNQeApGIchysNvl1qBma1y31NVOJI4gS4AeOEi4By4YIedk2oH sFKetasMNqqimgBX47pZ9D2PWNtXWPcpiNxIkEo86B23Awh+3us95Bs= X-Google-Smtp-Source: AGHT+IG4srg6GwnD8gGc52ZRllm8lTcDmCnDigBGsux4bHwmca78uRcnmB/UdcI1d46gM519q1Kn1vl23PvtnJ4JgKY= X-Received: by 2002:a17:907:b0d:b0:99c:581f:7f51 with SMTP id h13-20020a1709070b0d00b0099c581f7f51mr7754343ejl.54.1691368718086; Sun, 06 Aug 2023 17:38:38 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Bart Schaefer Date: Sun, 6 Aug 2023 17:38:27 -0700 Message-ID: Subject: Re: [PATCH] Improved _shadow / _unshadow To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000a0626d06024a77ae" X-Seq: 52028 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: --000000000000a0626d06024a77ae Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Just realized that I failed to include the "mkshadow" file in the patch. On Sun, Aug 6, 2023 at 3:12=E2=80=AFPM Bart Schaefer wrote: > > On Tue, Jul 4, 2023 at 12:06=E2=80=AFAM Marlon Richert wrote: > > > > Perhaps then at least add documentation for _shadow to compsys.yo? > > I did that the other day (7/26, ChangeLog "unposted (cf. 51899): > Doc/Zsh/compsys.yo: document _shadow") and after reading my own > documentation, decided I didn't like what it said. > > Consequently I've produced the attached patch. The most significant > visible change is that _unshadow no longer requires any arguments (and > ignores any that it gets), instead it just unwinds anything done by > the most recent previous call to _shadow. This includes a special > case for more than one call to _shadow with the same -s suffix > argument, removing my objection to Marlon's _approximate patch in > workers/51861. > > On Thu, Jun 15, 2023 at 7:29=E2=80=AFAM Marlon Richert wrote: > > > > I would find _shadow useful in my own Zsh code, too, not just completio= ns. How > > about moving it from Completion/ to Functions/? > > To address this, this patch adds Functions/Misc/mkshadow, which > defines wrappers around _shadow and _unshadow. Although I didn't > explicitly mention the reasoning in the doc, these are "nofork-ready" > in that they return the suffix in $REPLY, so once those patches are > applied one can do > local suffix=3D${| mkshadow ... } > This is actually implemented via _shadow except that it won't clobber > an existing $REPLY whereas mkshadow unsets REPLY on the way in. > > Other changes under the hood: > * Use namespaces for the global variables used to track state > * Keep track of whether the shadowed command is a function, builtin, > or external, so that the placeholder "command@suffix" function is > consistently created/removed > * Handle many pathological cases such as wanting to shadow the "-" > precommand modifier (although there's still no way to fully duplicate > the precommand behavior) > > And, update the doc for all of this. Here's the whole patch again so it can have one article number when committ= ed. --000000000000a0626d06024a77ae Content-Type: text/plain; charset="US-ASCII"; name="improved_shadow.txt" Content-Disposition: attachment; filename="improved_shadow.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ll057t5s0 ZGlmZiAtLWdpdCBhL0NvbXBsZXRpb24vQmFzZS9VdGlsaXR5L19zaGFkb3cgYi9Db21wbGV0aW9u L0Jhc2UvVXRpbGl0eS9fc2hhZG93CmluZGV4IDViMGY3OWMzNi4uYjVhOGFjYjI0IDEwMDY0NAot LS0gYS9Db21wbGV0aW9uL0Jhc2UvVXRpbGl0eS9fc2hhZG93CisrKyBiL0NvbXBsZXRpb24vQmFz ZS9VdGlsaXR5L19zaGFkb3cKQEAgLTgsNyArOCw3IEBACiAjICAgIH0KICMgICAgIyBJbnZva2Ug Y2FsbGVycyBvZiBmbmFtZQogIyAgfSBhbHdheXMgewotIyAgICBfdW5zaGFkb3cgZm5hbWUKKyMg ICAgX3Vuc2hhZG93CiAjICB9CiAjIyBBbHRlcm5hdGUgdXNhZ2U6CiAjIHsKQEAgLTE5LDcgKzE5 LDcgQEAKICMgICB9CiAjICAgIyBJbnZva2UgY2FsbGVycyBvZiBmbmFtZQogIyB9IGFsd2F5cyB7 Ci0jICAgX3Vuc2hhZG93IC1zIHN1ZmZpeCBmbmFtZQorIyAgIF91bnNoYWRvdwogIyB9CiAjIwog CkBAIC0zMywzNiArMzMsNjIgQEAgem1vZGxvYWQgenNoL3BhcmFtZXRlciAjIE9yIHdoYXQ/CiAj IFRoaXMgcHJvYmFibHkgbmV2ZXIgY29tZXMgdXAsIGJ1dCBwcm90ZWN0IG91cnNlbGYgZnJvbSBy ZWN1cnNpdmUgY2FsbAogIyBjaGFpbnMgdGhhdCBtYXkgZHVwbGljYXRlIHRoZSB0b3AgZWxlbWVu dHMgb2YgJGZ1bmNzdGFjayBieSBjcmVhdGluZwogIyBhIGNvdW50ZXIgb2YgX3NoYWRvdyBjYWxs cyBhbmQgdXNpbmcgaXQgdG8gbWFrZSBzaGFkb3cgbmFtZXMgdW5pcXVlLgotdHlwZXNldCAtZ0hp IF9zaGFkb3dkZXB0aD0wCitidWlsdGluIHR5cGVzZXQgLWdIaSAuc2hhZG93LmRlcHRoPTAKK2J1 aWx0aW4gdHlwZXNldCAtZ0hhIC5zaGFkb3cuc3RhY2sKIAogIyBDcmVhdGUgYSBjb3B5IG9mIGVh Y2ggZm5hbWUgc28gdGhhdCBhIGNhbGxlciBtYXkgcmVkZWZpbmUKIF9zaGFkb3coKSB7Ci0gIGxv Y2FsIC1BIGZzZng9KCAtcyAke2Z1bmNzdGFja1syXX06JHtmdW5jdHJhY2VbMl19OiQoKF9zaGFk b3dkZXB0aCsxKSkgKQotICBsb2NhbCBmbmFtZQorICBlbXVsYXRlIC1MIHpzaAorICBsb2NhbCAt QSBmc2Z4PSggLXMgJHtmdW5jc3RhY2tbMl19OiR7ZnVuY3RyYWNlWzJdfTokKCguc2hhZG93LmRl cHRoKzEpKSApCisgIGxvY2FsIGZuYW1lIHNoYWRvd25hbWUKKyAgbG9jYWwgLWEgZm5hbWVzCiAg IHpwYXJzZW9wdHMgLUsgLUEgZnNmeCAtRCBzOgogICBmb3IgZm5hbWU7IGRvCi0gICAgbG9jYWwg c2hhZG93bmFtZT0ke2ZuYW1lfUAke2ZzZnhbLXNdfQotICAgICgoICR7K2Z1bmN0aW9uc1skZm5h bWVdfSApKSAmJgotICAgICAgYnVpbHRpbiBmdW5jdGlvbnMgLWMgJGZuYW1lICRzaGFkb3duYW1l CisgICAgc2hhZG93bmFtZT0ke2ZuYW1lfUAke2ZzZnhbLXNdfQorICAgIGlmICgoICR7K2Z1bmN0 aW9uc1skc2hhZG93bmFtZV19ICkpCisgICAgdGhlbgorICAgICAgIyBDYWxsZWQgYWdhaW4gd2l0 aCB0aGUgc2FtZSAtcywganVzdCBpZ25vcmUgaXQKKyAgICAgIGNvbnRpbnVlCisgICAgZWxpZiAo KCAkeytmdW5jdGlvbnNbJGZuYW1lXX0gKSkKKyAgICB0aGVuCisgICAgICBidWlsdGluIGZ1bmN0 aW9ucyAtYyAtLSAkZm5hbWUgJHNoYWRvd25hbWUKKyAgICAgIGZuYW1lcys9KGZAJGZuYW1lKQor ICAgIGVsaWYgKCggJHsrYnVpbHRpbnNbJGZuYW1lXX0gKSkKKyAgICB0aGVuCisgICAgICBldmFs ICJmdW5jdGlvbiAtLSAkc2hhZG93bmFtZSB7IGJ1aWx0aW4gJGZuYW1lIFwiXCRAXCIgfSIKKyAg ICAgIGZuYW1lcys9KGJAJGZuYW1lKQorICAgIGVsc2UKKyAgICAgIGV2YWwgImZ1bmN0aW9uIC0t ICRzaGFkb3duYW1lIHsgY29tbWFuZCAkZm5hbWUgXCJcJEBcIiB9IgorICAgICAgZm5hbWVzKz0o Y0AkZm5hbWUpCisgICAgZmkKICAgZG9uZQotICAoKF9zaGFkb3dkZXB0aCsrKSkKKyAgW1sgLXog JFJFUExZIF1dICYmIFJFUExZPSR7ZnNmeFstc119CisgIGJ1aWx0aW4gc2V0IC1BIC5zaGFkb3cu c3RhY2sgJHtmc2Z4Wy1zXX0gJGZuYW1lcyAtLSAkey5zaGFkb3cuc3RhY2t9CisgICgoLnNoYWRv dy5kZXB0aCsrKSkKIH0KIAogIyBSZW1vdmUgdGhlIHJlZGVmaW5lZCBmdW5jdGlvbiBhbmQgc2hh ZG93aW5nIG5hbWUKIF91bnNoYWRvdygpIHsKLSAgbG9jYWwgLUEgZnNmeD0oIC1zICR7ZnVuY3N0 YWNrWzJdfToke2Z1bmN0cmFjZVsyXX06JHtfc2hhZG93ZGVwdGh9ICkKLSAgbG9jYWwgZm5hbWUK LSAgenBhcnNlb3B0cyAtSyAtQSBmc2Z4IC1EIHM6Ci0gIGZvciBmbmFtZTsgZG8KLSAgICBsb2Nh bCBzaGFkb3duYW1lPSR7Zm5hbWV9QCR7ZnNmeFstc119Ci0gICAgaWYgKCggJHsrZnVuY3Rpb25z WyRzaGFkb3duYW1lXX0gKSk7IHRoZW4KLSAgICAgIGJ1aWx0aW4gZnVuY3Rpb25zIC1jICRzaGFk b3duYW1lICRmbmFtZQotICAgICAgYnVpbHRpbiB1bmZ1bmN0aW9uICRzaGFkb3duYW1lCi0gICAg ZWxpZiAoKCAkeytmdW5jdGlvbnNbJGZuYW1lXX0gKSk7IHRoZW4KLSAgICAgIGJ1aWx0aW4gdW5m dW5jdGlvbiAkZm5hbWUKKyAgZW11bGF0ZSAtTCB6c2gKKyAgbG9jYWwgZm5hbWUgc2hhZG93bmFt ZSBmc2Z4PSR7LnNoYWRvdy5zdGFja1sxXX0KKyAgbG9jYWwgLWEgZm5hbWVzCisgIFtbIC1uICRm c2Z4IF1dIHx8IHJldHVybiAxCisgIHNoaWZ0IC5zaGFkb3cuc3RhY2sKKyAgd2hpbGUgW1sgJHsu c2hhZG93LnN0YWNrWzFdP25vIHNoYWRvd3N9ICE9IC0tIF1dOyBkbworICAgIGZuYW1lPSR7LnNo YWRvdy5zdGFja1sxXSM/QH0KKyAgICBzaGFkb3duYW1lPSR7Zm5hbWV9QCR7ZnNmeH0KKyAgICBp ZiAoKCAkeytmdW5jdGlvbnNbJGZuYW1lXX0gKSk7IHRoZW4KKyAgICAgIGJ1aWx0aW4gdW5mdW5j dGlvbiAtLSAkZm5hbWUKICAgICBmaQorICAgIGNhc2UgJHsuc2hhZG93LnN0YWNrWzFdfSBpbgor ICAgICAgKGZAKikgYnVpbHRpbiBmdW5jdGlvbnMgLWMgLS0gJHNoYWRvd25hbWUgJGZuYW1lIDsm CisgICAgICAoW2JjXUAqKSBidWlsdGluIHVuZnVuY3Rpb24gLS0gJHNoYWRvd25hbWUgOzsKKyAg ICBlc2FjCisgICAgc2hpZnQgLnNoYWRvdy5zdGFjawogICBkb25lCi0gICgoX3NoYWRvd2RlcHRo LS0pKQorICBbWyAteiAkUkVQTFkgXV0gJiYgUkVQTFk9JGZzZngKKyAgc2hpZnQgLnNoYWRvdy5z dGFjaworICAoKC5zaGFkb3cuZGVwdGgtLSkpCiB9CiAKICMgVGhpcyBpcyB0cmlja3kuICBXaGVu IHdlIGNhbGwgX3NoYWRvdyByZWN1cnNpdmVseSBmcm9tIGF1dG9sb2FkLApkaWZmIC0tZ2l0IGEv RG9jL1pzaC9jb21wc3lzLnlvIGIvRG9jL1pzaC9jb21wc3lzLnlvCmluZGV4IDMzYmFlYWI0OS4u M2Y3MDhlYjVhIDEwMDY0NAotLS0gYS9Eb2MvWnNoL2NvbXBzeXMueW8KKysrIGIvRG9jL1pzaC9j b21wc3lzLnlvCkBAIC01MjI5LDEzICs1MjI5LDEyIEBAIGFuZCBoZW5jZSBpcyBub3Qgbm9ybWFs bHkgY2FsbGVkIGV4cGxpY2l0bHkuCiApCiBmaW5kZXgoX3NoYWRvdykKIGZpbmRleChfdW5zaGFk b3cpCi14aXRlbSh0dChfc2hhZG93KSBbIHR0KC1zKSB2YXIoc3VmZml4KSBdIHZhcihjb21tYW5k X25hbWUpIC4uLikKLWl0ZW0odHQoX3Vuc2hhZG93KSBbIHR0KC1zKSB2YXIoc3VmZml4KSBdIHZh cihjb21tYW5kX25hbWUpIC4uLikoCit4aXRlbSh0dChfc2hhZG93KSBbIHR0KC1zKSB2YXIoc3Vm Zml4KSBdIFsgLS0gXSB2YXIoY29tbWFuZF9uYW1lKSAuLi4pCitpdGVtKHR0KF91bnNoYWRvdykp KAogVGhlIHR0KF9zaGFkb3cpIGZ1bmN0aW9uIGNyZWF0ZXMgYSBjb3B5IG9mIGVhY2ggb2YgdGhl IHNoZWxsIGZ1bmN0aW9ucwogaW4gdGhlIHZhcihjb21tYW5kX25hbWUpIGFyZ3VtZW50cy4gIFRo ZSBvcmlnaW5hbCBmdW5jdGlvbnMgY2FuIHRoZW4KLWJlIHJlcGxhY2VkIGJ5IG5ldyBpbXBsZW1l bnRhdGlvbnMuICBBIGxhdGVyIGNhbGwgdG8gdHQoX3Vuc2hhZG93KSwKLXdpdGggdGhlIHNhbWUg dmFyKGNvbW1hbmRfbmFtZSkgbGlzdCwgcmVtb3ZlcyB0aGUgbmV3IGltcGxlbWVudGF0aW9ucywK LWlmIGFueSwgYW5kIHJlc3RvcmVzIHRoZSBvcmlnaW5hbHMuCitiZSByZXBsYWNlZCBieSBuZXcg aW1wbGVtZW50YXRpb25zLiAgQSBsYXRlciBjYWxsIHRvIHR0KF91bnNoYWRvdykKK3JlbW92ZXMg dGhlIG5ldyBpbXBsZW1lbnRhdGlvbnMsIGlmIGFueSwgYW5kIHJlc3RvcmVzIHRoZSBvcmlnaW5h bHMuCiAKIFJlY29tbWVuZGVkIHVzYWdlIGlzIHRvIHBhaXIgdHQoX3NoYWRvdykgYW5kIHR0KF91 bnNoYWRvdykgY2FsbHMgYnkKIHVzZSBvZiBhbiBgdHQoYWx3YXlzKScgYmxvY2s6CkBAIC01MjQ2 LDMwICs1MjQ1LDM4IEBAIGV4YW1wbGUoewogICB9CiAgICMgSW52b2tlIGNhbGxlcnMgb2YgZm5h bWUKIH0gYWx3YXlzIHsKLSAgX3Vuc2hhZG93IGZuYW1lCisgIF91bnNoYWRvdwogfSkKIAotQW55 IHZhcihjb21tYW5kX25hbWUpIG1heSBpbnN0ZWFkIGJlIGEgYnVpbHRpbiwgYnV0IGluIHRoYXQg Y2FzZSBubwotY29weSBpcyBjcmVhdGVkLiAgVGhlIGV4cGVjdGF0aW9uIGlzIHRoYXQgYW4gaW5p dGlhbCB0dChfc2hhZG93KSBpcwotZm9sbG93ZWQgYnkgY3JlYXRpbmcgYSB3cmFwcGVyIGZ1bmN0 aW9uLCBhbmQgdGhlcmFmdGVyIGFueSBuZXN0ZWQgb3IKLXJlY3Vyc2l2ZSBjYWxscyB0aHVzIGNv cHkgYW5kIHJlcGxhY2UgdGhlIHdyYXBwZXIgZnVuY3Rpb24uCitUaGUgdmFyKHN1ZmZpeCksIGlm IHN1cHBsaWVkLCBpcyBwcmVwZW5kZWQgYnkgYW4gYHR0KEApJyBjaGFyYWN0ZXIgYW5kCit0aGVu IGFwcGVuZGVkIHRvIGVhY2ggdmFyKGNvbW1hbmRfbmFtZSkgdG8gY3JlYXRlIHRoZSBjb3B5LiAg VGh1cworZXhhbXBsZShfc2hhZG93IC1zIFhYIGZvbykKK2NyZWF0ZXMgYSBmdW5jdGlvbiBuYW1l ZCBgdHQoZm9vQFhYKScuICBUaGlzIHByb3ZpZGVzIGEgd2VsbC1rbm93bgorbmFtZSBmb3IgdGhl IG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIGlmIHRoZSBuZXcgaW1wbGVtZW50YXRpb24gbmVlZHMK K3RvIGNhbGwgaXQgYXMgYSB3cmFwcGVyLiAgSWYgYSBuZXN0ZWQgY2FsbCB0byAgdHQoX3NoYWRv dykgdXNlcyB0aGUKK3NhbWUgdmFyKHN1ZmZpeCksIGVtKG5vIG5ldyBjb3B5IGlzIG1hZGUpLiAg VGhlIHByZXN1bXB0aW9uIHRodXMgaXMKK3RoYXQgc3VmZml4ZXMgYW5kIG5ldyBpbXBsZW1lbnRh dGlvbnMgY29ycmVzcG9uZCBvbmUgdG8gb25lLgorCitJZiB2YXIoY29tbWFuZF9uYW1lKSBpcyBh IGJ1aWx0aW4gb3IgZXh0ZXJuYWwgY29tbWFuZCwgYW5kIHRoZXJlIGhhcyBiZWVuCitubyBwcmVj ZWRpbmcgdHQoX3NoYWRvdykgcmVwbGFjZW1lbnQgbWFkZSwgdGhlIGZ1bmN0aW9uIHNvIGNyZWF0 ZWQgY2FsbHMKK3RoZSBzaGFkb3dlZCBuYW1lIHByZWZpeGVkIGJ5IHRoZSB0dChidWlsdGluKSBv ciB0dChjb21tYW5kKSBrZXl3b3JkcyBhcworYXBwcm9wcmlhdGUuCiBleGFtcGxlKHsKLSAgX3No YWRvdyBjb21wYWRkCi0gIGNvbXBhZGQgTFBBUigpUlBBUigpIHsgYnVpbHRpbiBjb21wYWRkIC1P IHRtcGFyciAiJEAiIH0KKyAgX3NoYWRvdyAtcyB3cmFwIGNvbXBhZGQKKyAgY29tcGFkZCBMUEFS KClSUEFSKCkgeworICAgICMgY29tcGFkZEB3cmFwIHJ1bnMgYnVpbHRpbiBjb21wYWRkCisgICAg Y29tcGFkZEB3cmFwIC1PIHRtcGFyciAiJEAiIH0KIH0gYWx3YXlzIHsKLSAgX3Vuc2hhZG93IGNv bXBhZGQKKyAgX3Vuc2hhZG93CiB9KQogCi1UaGUgdmFyKHN1ZmZpeCksIGlmIHN1cHBsaWVkLCBp cyBwcmVwZW5kZWQgYnkgYW4gYHR0KEApJyBjaGFyYWN0ZXIgYW5kCi10aGVuIGFwcGVuZGVkIHRv IGVhY2ggdmFyKGNvbW1hbmRfbmFtZSkgdG8gY3JlYXRlIHRoZSBjb3B5LiAgVGh1cwotZXhhbXBs ZShfc2hhZG93IC1zIFhYIGZvbykKLWNyZWF0ZXMgYSBmdW5jdGlvbiBuYW1lZCBgdHQoZm9vQFhY KScgKHVubGVzcyBgdHQoZm9vKScgaXMgYSBidWlsdGluKS4KLU5vdGUgdGhhdCBhIG5lc3RlZCBj YWxsIHRvIHR0KF9zaGFkb3cpIHdpdGggdGhlIHNhbWUgdmFyKHN1ZmZpeCkgbWF5Ci1yZXN1bHQg aW4gbmFtZSBjb2xsaXNpb25zIGFuZCB1bmV4cGVjdGVkIHJlc3VsdHMsIGJ1dCB0aGlzIHByb3Zp ZGVzIGEKLXdlbGwta25vd24gbmFtZSBmb3IgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGlmIHRoZSBu ZXcgaW1wbGVtZW50YXRpb24KLW5lZWRzIHRvIGNhbGwgaXQgYXMgYSB3cmFwcGVyLiAgVGhlIHNh bWUgdmFyKHN1ZmZpeCkgbXVzdCBiZSB1c2VkIGluCi10aGUgY2FsbCB0byB0dChfdW5zaGFkb3cp LiAgV2hlbiBubyB2YXIoc3VmZml4KSBpcyBwcmVzZW50LAotdHQoX3NoYWRvdykgY3JlYXRlcyBh IHVuaXF1ZSBzdWZmaXggdG8gYXZvaWQgbmFtZSBjb2xsaXNpb25zLgorV2hlbiBubyB2YXIoc3Vm Zml4KSBhcmd1bWVudCBpcyBwcmVzZW50LCB0dChfc2hhZG93KSBjcmVhdGVzIGEgdW5pcXVlCitz dWZmaXggdG8gYXZvaWQgbmFtZSBjb2xsaXNpb25zLgorCitBcmd1bWVudHMgb2YgdHQoX3Vuc2hh ZG93KSBhcmUgaWdub3JlZC4gIEV2ZXJ5IGxpc3RlZCB2YXIoY29tbWFuZF9uYW1lKQorZm9yIHRo ZSBtb3N0IHJlY2VudCBjYWxsIHRvIHR0KF9zaGFkb3cpIGlzIHJlbW92ZWQuICBUaGlzIGRpZmZl cnMgZnJvbQorYW4gZWFybHkgaW1wbGVtZW50YXRpb24gdGhhdCByZXF1aXJlZCB0dChfdW5zaGFk b3cpIHRvIHJlY2VpdmUgdGhlCitzYW1lIHZhcihzdWZmaXgpIGFuZCB2YXIoY29tbWFuZF9uYW1l KSBsaXN0IGFzIHR0KF9zaGFkb3cpLgogKQogZmluZGV4KF9zdG9yZV9jYWNoZSkKIGl0ZW0odHQo X3N0b3JlX2NhY2hlKSB2YXIoY2FjaGVfaWRlbnRpZmllcikgdmFyKHBhcmFtKSAuLi4pKApkaWZm IC0tZ2l0IGEvRG9jL1pzaC9jb250cmliLnlvIGIvRG9jL1pzaC9jb250cmliLnlvCmluZGV4IDk2 ZGU1YWE5Yi4uZWYxMWQ3N2FkIDEwMDY0NAotLS0gYS9Eb2MvWnNoL2NvbnRyaWIueW8KKysrIGIv RG9jL1pzaC9jb250cmliLnlvCkBAIC00MzM2LDYgKzQzMzYsMjcgQEAgZXhhbXBsZShpcy1hdC1s ZWFzdCAzLjEuNi0xNSAmJiBzZXRvcHQgTk9fR0xPQkFMX1JDUwogaXMtYXQtbGVhc3QgMy4xLjAg JiYgc2V0b3B0IEhJU1RfUkVEVUNFX0JMQU5LUwogaXMtYXQtbGVhc3QgMi42LTE3IHx8IHByaW50 ICJZb3UgY2FuJ3QgdXNlIGlzLWF0LWxlYXN0IGhlcmUuIikKICkKK2ZpbmRleChta3NoYWRvdykK K2ZpbmRleChybXNoYWRvdykKK3hpdGVtKHR0KG1rc2hhZG93KSBbIHR0KC1zKSB2YXIoc3VmZml4 KSBdIFsgLS0gXSB2YXIoY29tbWFuZF9uYW1lKSAuLi4pCitpdGVtKHR0KHJtc2hhZG93KSkoCitU aGVzZSBmdW5jdGlvbnMgYXJlIGFuIGludGVyZmFjZSB0byB0aGUgdHQoX3NoYWRvdykgYW5kIHR0 KF91bnNoYWRvdykKK2NvbXBsZXRpb24gdXRpbGl0aWVzIHRvIG1ha2UgdGhlbSBtb3JlIGVhc2ls eSBhY2Nlc3NpYmxlIGluIG90aGVyCitjb250ZXh0cy4gIFVzYWdlIGlzIGV4YWN0bHkgYXMgZm9y IHRoZSBjb21wbGV0aW9uIHV0aWxpdHk6CitleGFtcGxlKHsKKyAgbWtzaGFkb3cgZm5hbWUKKyAg ZnVuY3Rpb24gZm5hbWUgeworICAgICMgRG8geW91ciBuZXcgdGhpbmcKKyAgfQorICAjIEludm9r ZSBjYWxsZXJzIG9mIGZuYW1lCit9IGFsd2F5cyB7CisgIHJtc2hhZG93Cit9KQorCitVcG9uIHJl dHVybiwgdGhlIHZhbHVlIG9mIHR0KCRSRVBMWSkgaXMgdGhlIHN1ZmZpeCB1c2VkIHRvIGNyZWF0 ZSBhCitjb3B5IG9mIHRoZSBvcmlnaW5hbCB2YXIoY29tbWFuZF9uYW1lKSwgc28gdmFyKGNvbW1h bmRfbmFtZSl0dChAJFJFUExZKQoraW52b2tlcyB0aGF0IG9yaWdpbmFsLgorKQogZmluZGV4KG5z bG9va3VwKQogaXRlbSh0dChuc2xvb2t1cCkgWyB2YXIoYXJnKSAuLi4gXSkoCiBUaGlzIHdyYXBw ZXIgZnVuY3Rpb24gZm9yIHRoZSB0dChuc2xvb2t1cCkgY29tbWFuZCByZXF1aXJlcyB0aGUKZGlm ZiAtLWdpdCBhL0Z1bmN0aW9ucy9NaXNjL21rc2hhZG93IGIvRnVuY3Rpb25zL01pc2MvbWtzaGFk b3cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4yYWUzYTBmMmMKLS0tIC9k ZXYvbnVsbAorKysgYi9GdW5jdGlvbnMvTWlzYy9ta3NoYWRvdwpAQCAtMCwwICsxLDExIEBACisj YXV0b2xvYWQKKyMgRnJvbnQtZW5kIHRvIHRoZSBjb21wbGV0aW9uIGhlbHBlciBfc2hhZG93IGZv ciB1c2Ugb3V0c2lkZSBjb21wbGV0aW9uLgorIyBUaGlzIGp1c3QgZm9yY2VzIHByb3BlciBhdXRv bG9hZCBvZiBfc2hhZG93L191bnNoYWRvdyBhbmQgY2FsbHMgdGhlbS4KKworYXV0b2xvYWQgX3No YWRvdworbWtzaGFkb3coKSB7IHVuc2V0IFJFUExZOyBfc2hhZG93ICIkQCIgfQorcm1zaGFkb3co KSB7IHVuc2V0IFJFUExZOyBfdW5zaGFkb3cgfQorCisjIEJvb3RzdHJhcCBiZWNhdXNlIG9mIGF1 dG9sb2FkIHNwZWNpYWwgY2FzZQordW5zZXQgUkVQTFkKK19zaGFkb3cgIiRAIgo= --000000000000a0626d06024a77ae--