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 24021 invoked from network); 15 Nov 2022 07:02:20 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 15 Nov 2022 07:02:20 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1668495740; b=U6lfIZING0RTUyy3xx29VuqoaU6297tdmcvz3HQItJ5Z55k5q0JEebPKYvHOrN6tysHcZzkcwq 8miNnBm2hUfHheWaHSrYSy94P4lxJmj1cHgkbWNVsAu0/llUoxrhRL5FE+rI1yw6axFPlBOy3s n6nzWmtRrA7i/n6TwymW7UJ+IYiTe0Q0zhrYyMD0hWmGFchyfYdCYoJ0WMSUeBNKRy5HlTcVw+ PmtdH0yHV6aI8IhR2+CUXuREQijMyDWwD/otAT/pC/15dSFoxMNlaO6buI/9M2nD4+r7+4QRA1 nPhky8JfgZ+QgJJ5y4TU54qa0Kx/iAqqbipwi38/7zkEPw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ed1-f54.google.com) smtp.remote-ip=209.85.208.54; dkim=pass header.d=brasslantern-com.20210112.gappssmtp.com header.s=20210112 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=1668495740; bh=ZtuVstpyD44wZUl0bfZLA1p9ILFG3fcykAuDqqBOr5w=; 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=njjgJ2Gbbv/aCLyH/sXwOigHaX+dcUi1ixHY4rXp0KHryhEwgzLwdOfEFrhPzzD3Yh3XjkJ0f7 u4GXUjxg3fAYoQQ+yNKGLdV4A+pKleYO2ZDRhCRosSxlzwPvrG7D4re+nnGcX52JkrkD3H2d9n WudirKp/FDYjm3j3umKmaRBj9svXZh5HhQqV6Ec8kj/0VPGTZ2AnZ5oExtP+LQREdWhcEVjk3w 3X2jaAGfobfcUGoIWzWDJlq4LyG7hTLlfqaaDJK/htcY4LaF+YtcXwcuJku0JK18IfLB44DjcV sK5jDLkLrJS4VZnrU5ClIIRhZu87UdlXw/Btyv4CZqOezQ==; 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=wKtBm/azQAfFvibV9LzszvaxeurW7M/7OrgjiPF/SaI=; b=ORtxyPtKUFXe6kYreI1j4Ls09Z HObB9qet9PvgH11UiF7hS9bbBfxKqdZSzFHDNMoAzJSwqEFg4oIHb+uwOyCV2ylf9wkstIvCcN6zd fCfAp4pBllUuVKf8few4U+6VwcLg1U6aGQ0M1mSVO2Gxu4ix+IVlF/lGc5BaYx8/8eqPenndQ9e2o BD3H3/gl6KAg10fPDlHeOPnUyhhHCGzFEOcFQQokFkkcxxO6Kwc11Xra3SyfABh9V+Vqd1tIk4G21 RG31xM3HtA4Mu3VT4PjXBfGqplcB4ok3XmOnDDYGQi2M6rLWxY00OI8rNSOI8YIV4Rh+6Y0yFslSd +gDsOdfQ==; Received: by zero.zsh.org with local id 1oupxb-0005fj-0P; Tue, 15 Nov 2022 07:02:19 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ed1-f54.google.com) smtp.remote-ip=209.85.208.54; dkim=pass header.d=brasslantern-com.20210112.gappssmtp.com header.s=20210112 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ed1-f54.google.com ([209.85.208.54]:46687) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1oupwy-0005KS-3M; Tue, 15 Nov 2022 07:01:41 +0000 Received: by mail-ed1-f54.google.com with SMTP id u24so20498930edd.13 for ; Mon, 14 Nov 2022 23:01:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20210112.gappssmtp.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=wKtBm/azQAfFvibV9LzszvaxeurW7M/7OrgjiPF/SaI=; b=DBprZZsEIz/ZeifPprLmu0bOv0TFHFqqgTorn5SDWx/DqtJXBW5uDfbyrsf680UTFT 0dA6zyWFKfxpQCoPiFm0DnxaQikBU20zJV3nqMh+PgZ+R9ZFdc+12YNK82hhsf+1Qvd8 OmWr8r+/ti8jxcpaIbv4RVzZyAFZXUIPjp2HfJ1HTc8XOlBR/jm4V3QVoffwvr2D9AMG TSm8T697YMGyXNgYDd8yBHYvah57xF+5VnDAmQ9iKoYowjKRsZ1kDIY32gdSAdVPKzh/ bjnHQ9gfURJgN3ZvuChhfcfUsue4ICZweErVvsGgpzgVKb8MvyBbscB/C9sAXLFz1OvN lY3A== 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=wKtBm/azQAfFvibV9LzszvaxeurW7M/7OrgjiPF/SaI=; b=YOBebyPk49BOo6OdvOdDtbTMKz1X41PEQvKfnWj5+B1OK9S5Qz4Grv7muCl10Xq2oC lzFlPR8W/W2B6izcmZQC6u0u+E+OKBeGEDN+SDic+PhEJmu7BRQgYVb2WVCKKAyCN3fs B7ZlxJJVo2+lD7/Ni0DDmEDdQ53uvpHHcZGoJxiUMG8QK2K2g7tvh/tr7zfQ1b+a49n0 L3HAdZ3vm9MA67EAcGl6yEG46iZZwk2p229ZNhhBBScJBY+nWPLrJgxcx1jOpzMCpFUW lL6L56PX05zWfkDjCML5BPolw6HAfsCKu4mDlcmbHeD/m52kBcEKDNJ9kPdO1hgeORZe SJMg== X-Gm-Message-State: ANoB5pm/mLVum0d4zEo+FhOIeYQ5WvsBdIbshIPZFIvrCfNEtoyfNhsV 24UciWTNz+P8MvauzDlxwwqVR9HcK2Zsd8sNzIOnEQ== X-Google-Smtp-Source: AA0mqf4WY+4gZEIMMYjJvKdsNcbB+80e8tRuRVI/hk5jy2vRQ3gmuC2VUomauyrmHIHaJ/ltysdZh0WUfDYIKY3bRB0= X-Received: by 2002:aa7:c9c2:0:b0:45c:c64d:a6ac with SMTP id i2-20020aa7c9c2000000b0045cc64da6acmr13792335edt.416.1668495699431; Mon, 14 Nov 2022 23:01:39 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Bart Schaefer Date: Mon, 14 Nov 2022 23:01:28 -0800 Message-ID: Subject: [PATCH] Even more ERR_EXIT (was Re: More ERR_EXIT Re: Tests RE behavior of ERR_EXIT) To: Philippe Altherr Cc: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000799aba05ed7ced3b" X-Seq: 50969 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: --000000000000799aba05ed7ced3b Content-Type: text/plain; charset="UTF-8" On Mon, Nov 14, 2022 at 5:11 PM Bart Schaefer wrote: > > [if workers/50929 makes 50897 redundant then] there's no point in > bashing through if/case/for/while/repeat/select individually -- the > only case we have to fix is this one: I was half right. Fixing that case revealed that it was necessary to go through the others, because the "redundant" fix is one level too far up the stack. Attached patch removes 50929 again, and amends this_noerrexit from 50897 in each of the complex command exec* functions. Finally it adds tests to E01options for each of the cases that Philippe previously outlined, with the exception of "select" which is interactive. The tests from 50928 still pass with this patch. I spent a ridiculous amount of time with every change I made flopping back and forth between C03 working and the new E01 failing and vice-versa, before noticing what happened when I nested a brace expression inside another one. Also a minor fix for TRAPDEBUG that caused me some confusion earlier in the process. Are there more cases that need testing? --000000000000799aba05ed7ced3b Content-Type: text/plain; charset="US-ASCII"; name="errexit_thirdtime.txt" Content-Disposition: attachment; filename="errexit_thirdtime.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lahv8pxt0 ZGlmZiAtLWdpdCBhL1NyYy9leGVjLmMgYi9TcmMvZXhlYy5jCmluZGV4IGNlMGMxZjFhZC4uZGM1 ZDVkZDIzIDEwMDY0NAotLS0gYS9TcmMvZXhlYy5jCisrKyBiL1NyYy9leGVjLmMKQEAgLTQ1MSw3 ICs0NTEsMTAgQEAgZXhlY2N1cnNoKEVzdGF0ZSBzdGF0ZSwgaW50IGRvX2V4ZWMpCiAgICAgY21k cG9wKCk7CiAKICAgICBzdGF0ZS0+cGMgPSBlbmQ7Ci0gICAgdGhpc19ub2VycmV4aXQgPSAoV0Nf U1VCTElTVF9UWVBFKCplbmQpICE9IFdDX1NVQkxJU1RfRU5EKTsKKyAgICBpZiAoV0NfU1VCTElT VF9UWVBFKCplbmQpICE9IFdDX1NVQkxJU1RfRU5EKQorCXRoaXNfbm9lcnJleGl0ID0gbm9lcnJl eGl0OworICAgIGVsc2UKKwl0aGlzX25vZXJyZXhpdCA9IDE7CiAKICAgICByZXR1cm4gbGFzdHZh bDsKIH0KQEAgLTE0NDIsOCArMTQ0NSw2IEBAIGV4ZWNsaXN0KEVzdGF0ZSBzdGF0ZSwgaW50IGRv bnRfY2hhbmdlX2pvYiwgaW50IGV4aXRpbmcpCiAJCSAgICBleGVjc2ltcGxlKHN0YXRlKTsKIAkJ ZWxzZQogCQkgICAgZXhlY3BsaW5lKHN0YXRlLCBjb2RlLCBsdHlwZSwgKGx0eXBlICYgWl9FTkQp ICYmIGV4aXRpbmcpOwotCQlpZiAoIWxvY2FsbGV2ZWwgfHwgdW5zZXQoRVJSUkVUVVJOKSkKLQkJ ICAgIHRoaXNfbm9lcnJleGl0ID0gbm9lcnJleGl0OwogCQlzdGF0ZS0+cGMgPSBuZXh0OwogCQln b3RvIHN1Ymxpc3RfZG9uZTsKIAkJYnJlYWs7CkBAIC0xNTM2LDYgKzE1MzcsNyBAQCBzdWJsaXN0 X2RvbmU6CiAJICAgICAqLwogCSAgICBpbnQgb2VycmV4aXRfb3B0ID0gb3B0c1tFUlJFWElUXTsK IAkgICAgb3B0c1tFUlJFWElUXSA9IDA7CisJICAgIG9sZG5vZXJyZXhpdCA9IG5vZXJyZXhpdDsK IAkgICAgbm9lcnJleGl0ID0gTk9FUlJFWElUX0VYSVQgfCBOT0VSUkVYSVRfUkVUVVJOOwogCSAg ICBleGl0aW5nID0gZG9uZXRyYXA7CiAJICAgIHJldCA9IGxhc3R2YWw7CmRpZmYgLS1naXQgYS9T cmMvbG9vcC5jIGIvU3JjL2xvb3AuYwppbmRleCBiZTUyNjEzNjkuLmNkMmY1MzQwYiAxMDA2NDQK LS0tIGEvU3JjL2xvb3AuYworKysgYi9TcmMvbG9vcC5jCkBAIC0yMDgsNyArMjA4LDEwIEBAIGV4 ZWNmb3IoRXN0YXRlIHN0YXRlLCBpbnQgZG9fZXhlYykKICAgICBsb29wcy0tOwogICAgIHNpbXBs ZV9wbGluZSA9IG9sZF9zaW1wbGVfcGxpbmU7CiAgICAgc3RhdGUtPnBjID0gZW5kOwotICAgIHRo aXNfbm9lcnJleGl0ID0gKFdDX1NVQkxJU1RfVFlQRSgqZW5kKSAhPSBXQ19TVUJMSVNUX0VORCk7 CisgICAgaWYgKFdDX1NVQkxJU1RfVFlQRSgqZW5kKSAhPSBXQ19TVUJMSVNUX0VORCkKKwl0aGlz X25vZXJyZXhpdCA9IG5vZXJyZXhpdDsKKyAgICBlbHNlCisJdGhpc19ub2VycmV4aXQgPSAxOwog ICAgIHJldHVybiBsYXN0dmFsOwogfQogCkBAIC0zMzYsNyArMzM5LDEwIEBAIGV4ZWNzZWxlY3Qo RXN0YXRlIHN0YXRlLCBVTlVTRUQoaW50IGRvX2V4ZWMpKQogICAgIGxvb3BzLS07CiAgICAgc2lt cGxlX3BsaW5lID0gb2xkX3NpbXBsZV9wbGluZTsKICAgICBzdGF0ZS0+cGMgPSBlbmQ7Ci0gICAg dGhpc19ub2VycmV4aXQgPSAoV0NfU1VCTElTVF9UWVBFKCplbmQpICE9IFdDX1NVQkxJU1RfRU5E KTsKKyAgICBpZiAoV0NfU1VCTElTVF9UWVBFKCplbmQpICE9IFdDX1NVQkxJU1RfRU5EKQorCXRo aXNfbm9lcnJleGl0ID0gbm9lcnJleGl0OworICAgIGVsc2UKKwl0aGlzX25vZXJyZXhpdCA9IDE7 CiAgICAgcmV0dXJuIGxhc3R2YWw7CiB9CiAKQEAgLTQ3OCw3ICs0ODQsMTAgQEAgZXhlY3doaWxl KEVzdGF0ZSBzdGF0ZSwgVU5VU0VEKGludCBkb19leGVjKSkKICAgICBwb3BoZWFwKCk7CiAgICAg bG9vcHMtLTsKICAgICBzdGF0ZS0+cGMgPSBlbmQ7Ci0gICAgdGhpc19ub2VycmV4aXQgPSAoV0Nf U1VCTElTVF9UWVBFKCplbmQpICE9IFdDX1NVQkxJU1RfRU5EKTsKKyAgICBpZiAoV0NfU1VCTElT VF9UWVBFKCplbmQpICE9IFdDX1NVQkxJU1RfRU5EKQorCXRoaXNfbm9lcnJleGl0ID0gbm9lcnJl eGl0OworICAgIGVsc2UKKwl0aGlzX25vZXJyZXhpdCA9IDE7CiAgICAgcmV0dXJuIGxhc3R2YWw7 CiB9CiAKQEAgLTUzMiw3ICs1NDEsMTAgQEAgZXhlY3JlcGVhdChFc3RhdGUgc3RhdGUsIFVOVVNF RChpbnQgZG9fZXhlYykpCiAgICAgbG9vcHMtLTsKICAgICBzaW1wbGVfcGxpbmUgPSBvbGRfc2lt cGxlX3BsaW5lOwogICAgIHN0YXRlLT5wYyA9IGVuZDsKLSAgICB0aGlzX25vZXJyZXhpdCA9IChX Q19TVUJMSVNUX1RZUEUoKmVuZCkgIT0gV0NfU1VCTElTVF9FTkQpOworICAgIGlmIChXQ19TVUJM SVNUX1RZUEUoKmVuZCkgIT0gV0NfU1VCTElTVF9FTkQpCisJdGhpc19ub2VycmV4aXQgPSBub2Vy cmV4aXQ7CisgICAgZWxzZQorCXRoaXNfbm9lcnJleGl0ID0gMTsKICAgICByZXR1cm4gbGFzdHZh bDsKIH0KIApAQCAtNTg3LDcgKzU5OSwxMCBAQCBleGVjaWYoRXN0YXRlIHN0YXRlLCBpbnQgZG9f ZXhlYykKIAkgICAgbGFzdHZhbCA9IDA7CiAgICAgfQogICAgIHN0YXRlLT5wYyA9IGVuZDsKLSAg ICB0aGlzX25vZXJyZXhpdCA9IChXQ19TVUJMSVNUX1RZUEUoKmVuZCkgIT0gV0NfU1VCTElTVF9F TkQpOworICAgIGlmIChXQ19TVUJMSVNUX1RZUEUoKmVuZCkgIT0gV0NfU1VCTElTVF9FTkQpCisJ dGhpc19ub2VycmV4aXQgPSBub2VycmV4aXQ7CisgICAgZWxzZQorCXRoaXNfbm9lcnJleGl0ID0g MTsKIAogICAgIHJldHVybiBsYXN0dmFsOwogfQpAQCAtNzAxLDcgKzcxNiwxMCBAQCBleGVjY2Fz ZShFc3RhdGUgc3RhdGUsIGludCBkb19leGVjKQogCiAgICAgaWYgKCFhbnlwYXRvaykKIAlsYXN0 dmFsID0gMDsKLSAgICB0aGlzX25vZXJyZXhpdCA9IChXQ19TVUJMSVNUX1RZUEUoKmVuZCkgIT0g V0NfU1VCTElTVF9FTkQpOworICAgIGlmIChXQ19TVUJMSVNUX1RZUEUoKmVuZCkgIT0gV0NfU1VC TElTVF9FTkQpCisJdGhpc19ub2VycmV4aXQgPSBub2VycmV4aXQ7CisgICAgZWxzZQorCXRoaXNf bm9lcnJleGl0ID0gMTsKIAogICAgIHJldHVybiBsYXN0dmFsOwogfQpkaWZmIC0tZ2l0IGEvVGVz dC9FMDFvcHRpb25zLnp0c3QgYi9UZXN0L0UwMW9wdGlvbnMuenRzdAppbmRleCBkMzhmYmVkNzQu LjkzOWExMWE3YSAxMDA2NDQKLS0tIGEvVGVzdC9FMDFvcHRpb25zLnp0c3QKKysrIGIvVGVzdC9F MDFvcHRpb25zLnp0c3QKQEAgLTM4NSw2ICszODUsMTEzIEBACiAxOkVSUl9SRVRVUk4gd2l0aCBh ZGRpdGlvbmFsIGxldmVscwogPkV4ZWN1dGVkCiAKKyAgKAorICAgIHNldG9wdCBFUlJfRVhJVAor ICAgIHsgZmFsc2UgfSBhbHdheXMgeyBwcmludCBJTlNJREU6ICQ/IH0KKyAgICBwcmludCBPVVRT SURFCisgICkKKzE6RVJSX0VYSVQgZnJvbSBzaW1wbGUgYnJhY2UgZXhwcmVzc2lvbgorCisgICgK KyAgICBzZXRvcHQgRVJSX0VYSVQKKyAgICB7IGZhbHNlICYmIHRydWUgfSBhbHdheXMgeyBwcmlu dCBJTlNJREU6ICQ/IH0KKyAgICBwcmludCBPVVRTSURFCisgICkKKzE6RVJSX0VYSVQgZnJvbSBj b25kaXRpb25hbCBicmFjZSBleHByZXNzaW9uCis+SU5TSURFOiAxCisKKyAgKAorICAgIHNldG9w dCBFUlJfRVhJVAorICAgIHsgaWYgdHJ1ZTsgdGhlbiBmYWxzZTsgdHJ1ZTsgZmkgfSBhbHdheXMg eyBwcmludCBJTlNJREU6ICQ/IH0KKyAgICBwcmludCBPVVRTSURFCisgICkKKzE6RVJSX0VYSVQg ZnJvbSAiaWYiIHdpdGggc2ltcGxlIGJvZHkKKworICAoCisgICAgc2V0b3B0IEVSUl9FWElUCisg ICAgeyBpZiB0cnVlOyB0aGVuIGZhbHNlICYmIHRydWU7IGZpIH0gYWx3YXlzIHsgcHJpbnQgSU5T SURFOiAkPyB9CisgICAgcHJpbnQgT1VUU0lERQorICApCisxOkVSUl9FWElUIGZyb20gImlmIiB3 aXRoIGNvbmRpdGlvbmFsIGJvZHkKKz5JTlNJREU6IDEKKworICAoCisgICAgc2V0b3B0IEVSUl9F WElUCisgICAgeyBpZiBmYWxzZTsgdGhlbiA6OyBlbHNlIGZhbHNlOyB0cnVlOyBmaSB9IGFsd2F5 cyB7IHByaW50IElOU0lERTogJD8gfQorICAgIHByaW50IE9VVFNJREUKKyAgKQorMTpFUlJfRVhJ VCBmcm9tICJlbHNlIiB3aXRoIHNpbXBsZSBib2R5CisKKyAgKAorICAgIHNldG9wdCBFUlJfRVhJ VAorICAgIHsgaWYgZmFsc2U7IHRoZW4gOjsgZWxzZSBmYWxzZSAmJiB0cnVlOyBmaSB9IGFsd2F5 cyB7IHByaW50IElOU0lERTogJD8gfQorICAgIHByaW50IE9VVFNJREUKKyAgKQorMTpFUlJfRVhJ VCBmcm9tICJlbHNlIiB3aXRoIGNvbmRpdGlvbmFsIGJvZHkKKz5JTlNJREU6IDEKKworICAoCisg ICAgc2V0b3B0IEVSUl9FWElUCisgICAgeyBjYXNlIHggaW47ICgqKSBmYWxzZTs7IGVzYWMgfSBh bHdheXMgeyBwcmludCBJTlNJREU6ICQ/IH0KKyAgICBwcmludCBPVVRTSURFCisgICkKKzE6RVJS X0VYSVQgZnJvbSAiY2FzZSIgd2l0aCBzaW1wbGUgYm9keQorCisgICgKKyAgICBzZXRvcHQgRVJS X0VYSVQKKyAgICB7IGNhc2UgeCBpbjsgKCopIGZhbHNlICYmIHRydWU7OyBlc2FjIH0gYWx3YXlz IHsgcHJpbnQgSU5TSURFOiAkPyB9CisgICAgcHJpbnQgT1VUU0lERQorICApCisxOkVSUl9FWElU IGZyb20gImNhc2UiIHdpdGggY29uZGl0aW9uYWwgYm9keQorPklOU0lERTogMQorCisgICgKKyAg ICBzZXRvcHQgRVJSX0VYSVQKKyAgICB7IGZvciBfIGluIDE7IGRvIGZhbHNlOyB0cnVlOyBkb25l IH0gYWx3YXlzIHsgcHJpbnQgSU5TSURFOiAkPyB9CisgICAgcHJpbnQgT1VUU0lERQorICApCisx OkVSUl9FWElUIGZyb20gImZvciIgd2l0aCBzaW1wbGUgYm9keQorCisgICgKKyAgICBzZXRvcHQg RVJSX0VYSVQKKyAgICB7IGZvciBfIGluIDE7IGRvIGZhbHNlICYmIHRydWU7IGRvbmUgfSBhbHdh eXMgeyBwcmludCBJTlNJREU6ICQ/IH0KKyAgICBwcmludCBPVVRTSURFCisgICkKKzE6RVJSX0VY SVQgZnJvbSAiZm9yIiB3aXRoIGNvbmRpdGlvbmFsIGJvZHkKKz5JTlNJREU6IDEKKworICAoCisg ICAgc2V0b3B0IEVSUl9FWElUCisgICAgKCkgeyB7IHdoaWxlICgoYXJndlsxXS0tKSk7IGRvIGZh bHNlOyB0cnVlOyBkb25lCisgICAgICAgICB9IGFsd2F5cyB7IHByaW50IElOU0lERTogJD8gfSB9 IDEKKyAgICBwcmludCBPVVRTSURFCisgICkKKzE6RVJSX0VYSVQgZnJvbSAid2hpbGUiIHdpdGgg c2ltcGxlIGJvZHkKKworICAoCisgICAgc2V0b3B0IEVSUl9FWElUCisgICAgKCkgeyB7IHdoaWxl ICgoYXJndlsxXS0tKSk7IGRvIGZhbHNlICYmIHRydWU7IGRvbmUKKyAgICAgICAgIH0gYWx3YXlz IHsgcHJpbnQgSU5TSURFOiAkPyB9IH0gMQorICAgIHByaW50IE9VVFNJREUKKyAgKQorMTpFUlJf RVhJVCBmcm9tICJ3aGlsZSIgd2l0aCBjb25kaXRpb25hbCBib2R5Cis+SU5TSURFOiAxCisKKyAg KAorICAgIHNldG9wdCBFUlJfRVhJVAorICAgIHsgcmVwZWF0ICQ7IGRvIGZhbHNlOyBkb25lIH0g YWx3YXlzIHsgcHJpbnQgSU5TSURFOiAkPyB9CisgICAgcHJpbnQgT1VUU0lERQorICApCisxOkVS Ul9FWElUIGZyb20gInJlcGVhdCIgd2l0aCBzaW1wbGUgYm9keQorCisgICgKKyAgICBzZXRvcHQg RVJSX0VYSVQKKyAgICB7IHJlcGVhdCAxOyBkbyBmYWxzZSAmJiB0cnVlOyBkb25lIH0gYWx3YXlz IHsgcHJpbnQgSU5TSURFOiAkPyB9CisgICAgcHJpbnQgT1VUU0lERQorICApCisxOkVSUl9FWElU IGZyb20gInJlcGVhdCIgd2l0aCBjb25kaXRpb25hbCBib2R5Cis+SU5TSURFOiAxCisKICAgKHBy aW50IGJlZm9yZTsgc2V0b3B0IG5vZXhlYzsgcHJpbnQgYWZ0ZXIpCiAwOk5PX0VYRUMgb3B0aW9u CiA+YmVmb3JlCg== --000000000000799aba05ed7ced3b--