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 autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 20957 invoked from network); 13 Dec 2022 00:03:08 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 13 Dec 2022 00:03:08 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1670889788; b=GWX3q3/KZYm1l1HjilPhTLwLArgbTVAMFOOsxy6X5gcugp+0zM+9iA2IXH9o4JRFxQhVlFgleM Y+ITW5lPlhy6h7J0G6TWPg8UTpmT+eB2+RYOneVo9a8H0yQnql9aDpWTpaJsMrxlgpb/8ky6IS zJy4VpLfLwCBP/sCTkfFLpKi2zGnJUygLPsyJh0PF+vKDOh+Jvyu0AOQNk33nX6/ACpzDz4Ef0 yav09Zr9QzYv+v6SOPtNNp5ICvSXw/osBAYJ3+cAVw6gJxz/BeZbmNaYMaHx1FdAaTIECgOVXZ cvzGdO88+MjK18hyFFSLEzXOvKAtoD4JMbl9jt1HBlXXbg==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-vs1-f49.google.com) smtp.remote-ip=209.85.217.49; dkim=pass header.d=gmail.com header.s=20210112 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-20210803; t=1670889788; bh=XNIzUZ+CbsB3DSWfGdx7EVeyw3qoxRIghEGYm2jmmDs=; 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=UJH/oomNiEKOtbJWdDpVxYi6+knkaH/SWyaIej51NLfOGF+n28ntexWw2NHs+AStya/pToLwpq kJqjHnrLQMznvn8gvvtBOXn0Bsixd5rsAHfgjM15Z7U4vjVgfLgvvD+vrknyCkXwXDZqZHiBtK k8q38liTK4U2zhLAO9pT5uyLtw9i4ncORfdYeMnxzoCBIPHIRdukXWKFuWHaxtJ5CI9wKr8S5h fuMtucvGEeApiv9LjEvGNOWAJgjPmppmCdMYexHyc4EgxzKLtmBHrWraiJEc/sFHarlSD7GmaL b7aIcNCOQl9Z3RLSfmsssCAQYAKWjxeEas1XFOiKzrNeLg==; 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: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=rlljVUsCWmK93VsRklBCfryq4nmpeCyd9kO4MBeRuQw=; b=hzJdZqi2xePuGniPZqZjMLJS4m pliUGnXX7Z8Vdb6EeUD3sFHIA1Latl15WdP4EYInMfEmM7MsiUe6fEaVIGYuSpjIq4nZDOeGB/VTT NhXwLBcuaX7CU1Pg+PG5DOyLv7E81RLTKtNsnOjDdprb5+PsC9sDTOx2iVhrqQl+yAa08xYHKobKC B3PGFA3kaEWQeCIGc+oETvvdZA0YGL9xVjohpqwvyeIkYOhunfGeKsMd6i2VvpSuBMPWDcApUyC+D fciOXeWDqHbzeeOhmvFLIDCfD2sorSv7gl0NMJ/tycPW4DQu2Ye5GYAnNqNoYK2+/AD+4K7zpKqCy UkP93w8A==; Received: by zero.zsh.org with local id 1p4slH-0009Pm-Un; Tue, 13 Dec 2022 00:03:08 +0000 Authentication-Results: zsh.org; iprev=pass (mail-vs1-f49.google.com) smtp.remote-ip=209.85.217.49; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-vs1-f49.google.com ([209.85.217.49]:33628) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1p4skg-00097q-7M; Tue, 13 Dec 2022 00:02:31 +0000 Received: by mail-vs1-f49.google.com with SMTP id d185so13094057vsd.0 for ; Mon, 12 Dec 2022 16:02:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=rlljVUsCWmK93VsRklBCfryq4nmpeCyd9kO4MBeRuQw=; b=lgLnyu3coAR0x4hDltNQZPZtrlN27a+b/mTXDkFns56E/3qCb32aH+24SbxZmUWqXb qKx0Ez2uxpR6LoadeLURzDipHHbyCOvxeQWbc7AJXH8PE0pOeieGwxoiPp4UTCqSHU4d Ex1LOi4I6fM3QjoJPJe0WoohCOa35HSjaqWryIB8oqgiHH8iSc6REBZ8VeghW2nYnsJ3 csg5uMWU+UM+K5ReyGwRmkIzrya6tXDPUqHqgJ4mAzK6rfHRDUMB6Vejc276S3TfsQ+Z JtqAdPzMmK/kq6JCSSDBROIUel+7I2EP6wz0W8kfM8cLVm26DX+cmrg8UDkDxggDhW0L Rmhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc: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=rlljVUsCWmK93VsRklBCfryq4nmpeCyd9kO4MBeRuQw=; b=sORvXuCYKpkmy4wBJ3DQGHOaKdG4tnrBacD2cRCJspqG46Xu8wvvumZHIzIOywti9Y 2fVWJsIwpwQp1NP9WFhea2YTYoRZ0yj0LKh/8xV+WYueGGchjBv9sR0LHqLo4mYv50/3 1Jo4zqNQ4zniaL/g9KBSX9lJZvnjxxZr6C2epL1WRbaK01WGCDx59kdg04PkJvHgzpLZ MM7xArR+bDz10Yb/7NejgheQZWQr32B2hDDyvzyRjE9+gldg9zKRvqIlB60ii0OBv057 v0h7s4zrlkeMIQ8uN9KyXxlynhqNFKpt2uaDTbpXzNX/09hO9W/q0WCjb+t4Ed8qHuL9 sJFg== X-Gm-Message-State: ANoB5pkJ8LbgwDjlQ8pDNFT5aVEkJffFOsFw/jUMIs/VvPYbAdFOJYf1 qXP2fZDDz4x4y0HSoxQWPoAOpNMB+cYBtVeWvvQ= X-Google-Smtp-Source: AA0mqf60y1+vCEmgCGs6Vzj5yoD2Wex2jM/CBLlJLRbRNWWmc1Ajyc/lIUY9MuogPAwUdEK/kX7oZPimg4OhoX4MkMg= X-Received: by 2002:a67:eb92:0:b0:3b2:e50f:ca09 with SMTP id e18-20020a67eb92000000b003b2e50fca09mr9993958vso.29.1670889748885; Mon, 12 Dec 2022 16:02:28 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Philippe Altherr Date: Tue, 13 Dec 2022 01:02:10 +0100 Message-ID: Subject: Re: [PATCH] Better ERR_EXIT and ERR_RETURN documentation To: Bart Schaefer Cc: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000f110f105efaa5559" X-Seq: 51198 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: --000000000000f110f105efaa5559 Content-Type: multipart/alternative; boundary="000000000000f110f005efaa5557" --000000000000f110f005efaa5557 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable > > That sentence is ... exceptional? Yep, yep. I already cringed at the double except and now I notice the "Except for the exceptions" =F0=9F=99=88 Except as explained below, an implicit tt(return) statement is > executed following the same logic described for tt(ERR_EXIT). Awesome! So much better. >> If tt(ERR_RETURN) and tt(ERR_EXIT) are both set, the latter takes > >> precedence. Hence, exit rather than return is triggered when a command > >> has a non-zero exit status. > Does this need to explain the interaction of the cases where ERR_EXIT > is ignored but ERR_RETURN is not? As written it seems to imply that > exit would always occur in the cases where it would otherwise be a > return. Good point. I rephrased as follows: If tt(ERR_RETURN) and tt(ERR_EXIT) are both set, it may happen that both exit and return should be triggered. In that case only exit is triggered. This implicitly covers the special case. I hope it's not necessary to explain it explicitly as it's a rather corner case and it would significantly increase the length of the explanation. Philippe --000000000000f110f005efaa5557 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
That sen= tence is ... exceptional?

Yep, yep. I alrea= dy cringed at the double except and now I notice the "Except for the e= xceptions"=C2=A0=F0=9F=99=88

=C2=A0 Except as explained below, an implicit = tt(return) statement is
executed following the same logic described for = tt(ERR_EXIT).

Awesome! So much better.=C2= =A0

&= gt;> If tt(ERR_RETURN) and tt(ERR_EXIT) are both set, the latter takes>> precedence. Hence, exit rather than return is triggered when a c= ommand
>> has a non-zero exit status.

Does this need to explain the interaction = of the cases where ERR_EXIT
is ignored but ERR_RETURN is not?=C2=A0 As w= ritten it seems to imply that
exit would always occur in the cases where= it would otherwise be a
return.

Good po= int. I rephrased as follows:=C2=A0

If tt(ERR= _RETURN) and tt(ERR_EXIT) are both set, it may happen that
both exit and= return should be triggered. In that case only exit is
triggered.

This implicitly covers the special case. I hope it&#= 39;s not necessary to explain it explicitly as it's a rather corner cas= e and it would significantly increase the length of the explanation.
<= div>
Philippe

--000000000000f110f005efaa5557-- --000000000000f110f105efaa5559 Content-Type: text/plain; charset="US-ASCII"; name="patch-errexit-documentation-update.txt" Content-Disposition: attachment; filename="patch-errexit-documentation-update.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lblgjwi60 ZGlmZiAtLWdpdCBhL0RvYy9ac2gvb3B0aW9ucy55byBiL0RvYy9ac2gvb3B0aW9ucy55bwppbmRl eCBlOTI5Njk1MzEuLmNiZDNkMGY4ZSAxMDA2NDQKLS0tIGEvRG9jL1pzaC9vcHRpb25zLnlvCisr KyBiL0RvYy9ac2gvb3B0aW9ucy55bwpAQCAtMTcyMywyMiArMTcyMywzMCBAQCBwaW5kZXgoTk9F UlJFWElUKQogY2luZGV4KGV4aXQgc3RhdHVzLCB0cmFwcGluZykKIGl0ZW0odHQoRVJSX0VYSVQp ICh0dCgtZSksIGtzaDogdHQoLWUpKSkoCiBJZiBhIGNvbW1hbmQgaGFzIGEgbm9uLXplcm8gZXhp dCBzdGF0dXMsIGV4ZWN1dGUgdGhlIHR0KFpFUlIpCi10cmFwLCBpZiBzZXQsIGFuZCBleGl0LiAg VGhpcyBpcyBkaXNhYmxlZCB3aGlsZSBydW5uaW5nIGluaXRpYWxpemF0aW9uCi1zY3JpcHRzLgot Ci1UaGUgYmVoYXZpb3VyIGlzIGFsc28gZGlzYWJsZWQgaW5zaWRlIHR0KERFQlVHKSB0cmFwcy4g IEluIHRoaXMKLWNhc2UgdGhlIG9wdGlvbiBpcyBoYW5kbGVkIHNwZWNpYWxseTogaXQgaXMgdW5z ZXQgb24gZW50cnkgdG8KLXRoZSB0cmFwLiAgSWYgdGhlIG9wdGlvbiB0dChERUJVR19CRUZPUkVf Q01EKSBpcyBzZXQsCi1hcyBpdCBpcyBieSBkZWZhdWx0LCBhbmQgdGhlIG9wdGlvbiB0dChFUlJf RVhJVCkgaXMgZm91bmQgdG8gaGF2ZSBiZWVuIHNldAotb24gZXhpdCwgdGhlbiB0aGUgY29tbWFu ZCBmb3Igd2hpY2ggdGhlIHR0KERFQlVHKSB0cmFwIGlzIGJlaW5nIGV4ZWN1dGVkIGlzCi1za2lw cGVkLiAgVGhlIG9wdGlvbiBpcyByZXN0b3JlZCBhZnRlciB0aGUgdHJhcCBleGl0cy4KLQotTm9u LXplcm8gc3RhdHVzIGluIGEgY29tbWFuZCBsaXN0IGNvbnRhaW5pbmcgdHQoJiYpIG9yIHR0KHx8 KSBpcyBpZ25vcmVkCi1mb3IgY29tbWFuZHMgbm90IGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QuICBI ZW5jZQotCi1leGFtcGxlKGZhbHNlICYmIHRydWUpCi0KLWRvZXMgbm90IHRyaWdnZXIgZXhpdC4K K3RyYXAsIGlmIHNldCwgYW5kIGV4aXQuCisKK1RoZSBvcHRpb24gaXMgaWdub3JlZCB3aGVuIGV4 ZWN1dGluZyB0aGUgY29tbWFuZHMgZm9sbG93aW5nIHR0KHdoaWxlKSwKK3R0KHVudGlsKSwgdHQo aWYpLCBvciB0dChlbGlmKSwgYSBwaXBlbGluZSBiZWdpbm5pbmcgd2l0aCB0dCghKSwgb3IKK2Fu eSBjb21tYW5kIG90aGVyIHRoYW4gdGhlIGxhc3QgaW4gY29tbWFuZCBsaXN0IGNvbnRhaW5pbmcg dHQoJiYpIG9yCit0dCh8fCkuICBIZW5jZSBuZWl0aGVyIGB0dChpZiBmb287IHRoZW4gdHJ1ZTsg ZmkpJywgbm9yIGB0dChmb28gJiYKK3RydWUpJyB0cmlnZ2VyIGV4aXQgd2hlbiB0dChmb28pIHJl dHVybnMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgc3RhdHVzLgorTm90ZSB0aGF0IGlmIHR0KGZvbykg aXMgYSBmdW5jdGlvbiwgdGhlIG9wdGlvbiBpcyBhbHNvIGlnbm9yZWQgZHVyaW5nCitpdHMgd2hv bGUgZXhlY3V0aW9uLgorCitUaGUgb3B0aW9uIGlzIGFsc28gaWdub3JlZCB3aGVuIGV4ZWN1dGlu ZyBhIGNvbXBsZXggY29tbWFuZCAodHQoaWYpLAordHQoZm9yKSwgdHQod2hpbGUpLCB0dCh1bnRp bCksIHR0KHJlcGVhdCksIHR0KGNhc2UpLCB0dChzZWxlY3QpLAordHQoYWx3YXlzKSwgb3IgYSBs aXN0IGluIGJyYWNlcykgaWYgaXRzIGV4aXQgc3RhdHVzIGNvbWVzIGZyb20gYQorY29tbWFuZCBl eGVjdXRlZCB3aGlsZSB0aGUgb3B0aW9uIGlzIGlnbm9yZWQuIEhlbmNlLCB0aGUgdHQoaWYpCitj b21tYW5kIGluIGB0dChpZiB0cnVlOyB0aGVuIGZhbHNlICYmIHRydWU7IGZpKScgZG9lcyBub3Qg dHJpZ2dlcgorZXhpdC4KKworRmluYWxseSwgdGhlIG9wdGlvbiBpcyBhbHNvIGlnbm9yZWQgd2hp bGUgcnVubmluZyBpbml0aWFsaXphdGlvbgorc2NyaXB0cyBhbmQgaW5zaWRlIHR0KERFQlVHKSB0 cmFwcy4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIG9wdGlvbiBpcworaGFuZGxlZCBzcGVjaWFs bHk6IGl0IGlzIHVuc2V0IG9uIGVudHJ5IHRvIHRoZSB0cmFwLiAgSWYgdGhlIG9wdGlvbgordHQo REVCVUdfQkVGT1JFX0NNRCkgaXMgc2V0LCBhcyBpdCBpcyBieSBkZWZhdWx0LCBhbmQgdGhlIG9w dGlvbgordHQoRVJSX0VYSVQpIGlzIGZvdW5kIHRvIGhhdmUgYmVlbiBzZXQgb24gZXhpdCwgdGhl biB0aGUgY29tbWFuZCBmb3IKK3doaWNoIHRoZSB0dChERUJVRykgdHJhcCBpcyBiZWluZyBleGVj dXRlZCBpcyBza2lwcGVkLiAgVGhlIG9wdGlvbiBpcworcmVzdG9yZWQgYWZ0ZXIgdGhlIHRyYXAg ZXhpdHMuCiAKIEV4aXRpbmcgZHVlIHRvIHR0KEVSUl9FWElUKSBoYXMgY2VydGFpbiBpbnRlcmFj dGlvbnMgd2l0aCBhc3luY2hyb25vdXMKIGpvYnMgbm90ZWQgaW4KQEAgLTE3NTUsMjkgKzE3NjMs MjkgQEAgcGluZGV4KE5PRVJSUkVUVVJOKQogY2luZGV4KGZ1bmN0aW9uIHJldHVybiwgb24gZXJy b3IpCiBjaW5kZXgocmV0dXJuIGZyb20gZnVuY3Rpb24sIG9uIGVycm9yKQogaXRlbSh0dChFUlJf UkVUVVJOKSkoCisKIElmIGEgY29tbWFuZCBoYXMgYSBub24temVybyBleGl0IHN0YXR1cywgcmV0 dXJuIGltbWVkaWF0ZWx5IGZyb20gdGhlCi1lbmNsb3NpbmcgZnVuY3Rpb24uICBUaGUgbG9naWMg aXMgc2ltaWxhciB0byB0aGF0IGZvciB0dChFUlJfRVhJVCksCi1leGNlcHQgdGhhdCBhbiBpbXBs aWNpdCB0dChyZXR1cm4pIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbnN0ZWFkIG9mIGFuCi10dChl eGl0KS4gIFRoaXMgd2lsbCB0cmlnZ2VyIGFuIGV4aXQgYXQgdGhlIG91dGVybW9zdCBsZXZlbCBv ZiBhCi1ub24taW50ZXJhY3RpdmUgc2NyaXB0LiAgQXQgdGhlIHRvcCBsZXZlbCBvZiBhbiBpbnRl cmFjdGl2ZSBzaGVsbCwKLWl0IHdpbGwgdHJpZ2dlciBhIHJldHVybiB0byB0aGUgY29tbWFuZCBw cm9tcHQ7IGluIG90aGVyCi13b3JkcywgdGhlIHNlcXVlbmNlIG9mIGNvbW1hbmRzIHR5cGVkIGJ5 IHRoZSB1c2VyIG1heSBiZQotdGhvdWdodCBvZiBhcyBhIGZ1bmN0aW9uIGZvciB0aGlzIHB1cnBv c2UuCi0KLU5vcm1hbGx5IHRoaXMgb3B0aW9uIGluaGVyaXRzIHRoZSBiZWhhdmlvdXIgb2YgdHQo RVJSX0VYSVQpIHRoYXQKLWNvZGUgZm9sbG93ZWQgYnkgYHR0KCYmKScgYHR0KHx8KScgZG9lcyBu b3QgdHJpZ2dlciBhIHJldHVybi4gIEhlbmNlCi1pbiB0aGUgZm9sbG93aW5nOgotCi1leGFtcGxl KHN1bW1pdCB8fCB0cnVlKQotCi1ubyByZXR1cm4gaXMgZm9yY2VkIGFzIHRoZSBjb21iaW5lZCBl ZmZlY3QgYWx3YXlzIGhhcyBhIHplcm8gcmV0dXJuCi1zdGF0dXMuCi0KLU5vdGUuIGhvd2V2ZXIs IHRoYXQgaWYgdHQoc3VtbWl0KSBpbiB0aGUgYWJvdmUgZXhhbXBsZSBpcyBpdHNlbGYgYQotZnVu Y3Rpb24sIGNvZGUgaW5zaWRlIGl0IGlzIGNvbnNpZGVyZWQgc2VwYXJhdGVseTogaXQgbWF5IGZv cmNlIGEgcmV0dXJuCi1mcm9tIHR0KHN1bW1pdCkgKGFzc3VtaW5nIHRoZSBvcHRpb24gcmVtYWlu cyBzZXQgd2l0aGluIHR0KHN1bW1pdCkpLCBidXQKLW5vdCBmcm9tIHRoZSBlbmNsb3NpbmcgY29u dGV4dC4gIFRoaXMgYmVoYXZpb3VyIGlzIGRpZmZlcmVudCBmcm9tCi10dChFUlJfRVhJVCkgd2hp Y2ggaXMgdW5hZmZlY3RlZCBieSBmdW5jdGlvbiBzY29wZS4KK2VuY2xvc2luZyBmdW5jdGlvbi4g RXhjZXB0IGFzIGV4cGxhaW5lZCBiZWxvdywgYW4gaW1wbGljaXQgdHQocmV0dXJuKQorc3RhdGVt ZW50IGlzIGV4ZWN1dGVkIGZvbGxvd2luZyB0aGUgc2FtZSBsb2dpYyBkZXNjcmliZWQgZm9yCit0 dChFUlJfRVhJVCkuIFRoaXMgd2lsbCB0cmlnZ2VyIGFuIGV4aXQgYXQgdGhlIG91dGVybW9zdCBs ZXZlbCBvZiBhCitub24taW50ZXJhY3RpdmUgc2NyaXB0LiAgQXQgdGhlIHRvcCBsZXZlbCBvZiBh biBpbnRlcmFjdGl2ZSBzaGVsbCwgaXQKK3dpbGwgdHJpZ2dlciBhIHJldHVybiB0byB0aGUgY29t bWFuZCBwcm9tcHQ7IGluIG90aGVyIHdvcmRzLCB0aGUKK3NlcXVlbmNlIG9mIGNvbW1hbmRzIHR5 cGVkIGJ5IHRoZSB1c2VyIG1heSBiZSB0aG91Z2h0IG9mIGFzIGEgZnVuY3Rpb24KK2ZvciB0aGlz IHB1cnBvc2UuCisKK1VubGlrZSBmb3IgdHQoRVJSX0VYSVQpLCB3aGVuIGEgZnVuY3Rpb24gaXMg Y2FsbGVkIHdoaWxlIHRoZSBvcHRpb24gaXMKK2JlaW5nIGlnbm9yZWQsIHRoZSBvcHRpb24gaXMg Tk9UIGlnbm9yZWQgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhlCitmdW5jdGlvbi4gIEhlbmNl LCBpZiB0dChmb28pIGluIGB0dChmb28gJiYgdHJ1ZSknIGlzIGEgZnVuY3Rpb24sIGNvZGUKK2lu c2lkZSBpdCBpcyBjb25zaWRlcmVkIHNlcGFyYXRlbHk6IGl0IG1heSBmb3JjZSBhIHJldHVybiBm cm9tIHR0KGZvbykKKyhhc3N1bWluZyB0aGUgb3B0aW9uIHJlbWFpbnMgc2V0IHdpdGhpbiB0dChm b28pKS4KKworTGlrZSBmb3IgdHQoRVJSX0VYSVQpLCB0aGUgb3B0aW9uIGlzIGlnbm9yZWQgaW5z aWRlIHR0KERFQlVHKSB0cmFwcworYnV0IGl0J3Mgbm90IHVuc2V0IG9uIGVudHJ5IHRvIHRoZSB0 cmFwIGFuZCBzZXR0aW5nIG9yIHVuc2V0dGluZyBpdAoraW5zaWRlIHRoZSB0cmFwIGhhcyBubyBz cGVjaWFsIGVmZmVjdC4KKworSWYgdHQoRVJSX1JFVFVSTikgYW5kIHR0KEVSUl9FWElUKSBhcmUg Ym90aCBzZXQsIGl0IG1heSBoYXBwZW4gdGhhdAorYm90aCBleGl0IGFuZCByZXR1cm4gc2hvdWxk IGJlIHRyaWdnZXJlZC4gSW4gdGhhdCBjYXNlIG9ubHkgZXhpdCBpcwordHJpZ2dlcmVkLgogKQog cGluZGV4KEVWQUxfTElORU5PKQogcGluZGV4KE5PX0VWQUxfTElORU5PKQo= --000000000000f110f105efaa5559--