From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ciao.gmane.io (ciao.gmane.io [116.202.254.214]) by sourceware.org (Postfix) with ESMTPS id 044F13858C33 for ; Mon, 7 Nov 2022 21:45:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 044F13858C33 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=m.gmane-mx.org Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1os9wF-0007h3-GR for fortran@gcc.gnu.org; Mon, 07 Nov 2022 22:45:51 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: fortran@gcc.gnu.org From: Harald Anlauf Subject: [PATCH, v3] Fortran: ordering of hidden procedure arguments [PR107441] Date: Mon, 7 Nov 2022 22:45:47 +0100 Message-ID: <24c6acfa-6745-c7a3-4bbd-54bd0fa31454@gmx.de> References: <7d8ddf07-e66d-2678-de99-0e575c70ea17@orange.fr> <327319ac-4ef9-1e48-e993-57113d802d3b@orange.fr> <85a5951a-7ea4-57b3-895a-ff7dbf1ef92e@orange.fr> <93a5f029-4411-3424-f6ee-3b2bcf210050@gmx.de> <8725411a-979b-dd53-d1fe-5b041482a8eb@gmx.de> <91afe6ef-e5f4-d3d8-ad15-3271fd4e61cd@orange.fr> <3ca46ea0-ee6a-cbc6-d3af-99b8db698307@orange.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------lYRSjnU3cb0XIZnQCQs3ZfoW" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.0 Content-Language: en-US In-Reply-To: <3ca46ea0-ee6a-cbc6-d3af-99b8db698307@orange.fr> Cc: gcc-patches@gcc.gnu.org X-Spam-Status: No, score=-9.0 required=5.0 tests=BAYES_00,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Message-ID: <20221107214547.LPZN-m6VVLlsxzpPDylmbrjOR55MmOHazlwzZUpVO6M@z> This is a multi-part message in MIME format. --------------lYRSjnU3cb0XIZnQCQs3ZfoW Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Dear all, Am 04.11.22 um 10:53 schrieb Mikael Morin: > Le 03/11/2022 à 23:03, Harald Anlauf a écrit : >> I've spent some time not only staring at create_function_arglist, >> but trying several variations handling the declared hidden parms, >> and applying the necessary adjustments to gfc_get_function_type. >> (Managing linked trees is not the issue, just understanding them.) >> I've been unable to get the declarations in sync, and would need >> help how to debug the mess I've created.  Dropping my patch for >> the time being. >> > If you want, we can meet on IRC somewhen (tonight?). armed with the new knowledge, I could now understand what (more or less) trivially went wrong with my previous patch. The attached patch remedies that: gfc_get_function_type() now properly separates the types of the hidden parameters so that optional+value comes before string length and caf stuff, while in create_function_arglist we simply need to split the walking over the typelists so that the optional+value stuff, which is basically just booleans, is done separately from the other parts. Looking at the tree-dumps, the function decls now seem to be fine at least for the given testcases. I've adjusted one of the testcases to validate this. Regtests fine on x86_64-pc-linux-gnu. OK for mainline? Thanks, Harald --------------lYRSjnU3cb0XIZnQCQs3ZfoW Content-Type: text/x-patch; charset=UTF-8; name="pr107441-v3.diff" Content-Disposition: attachment; filename="pr107441-v3.diff" Content-Transfer-Encoding: base64 RnJvbSA3YmE0MzNjOWMyMmUyMDY1MzJhOWFiY2FkOGZmMWIyMmQzZjc3YjNhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIYXJhbGQgQW5sYXVmIDxhbmxhdWZAZ214LmRlPgpE YXRlOiBGcmksIDI4IE9jdCAyMDIyIDIxOjU4OjA4ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g Rm9ydHJhbjogb3JkZXJpbmcgb2YgaGlkZGVuIHByb2NlZHVyZSBhcmd1bWVudHMgW1BSMTA3 NDQxXQoKVGhlIGdmb3J0cmFuIEFCSSBzcGVjaWZpZXMgdGhlIG9yZGVyIG9mIGdpdmVuIGFu ZCBoaWRkZW4gcHJvY2VkdXJlIGFyZ3VtZW50cywKd2hlcmUgdGhlIGhpZGRlbiBwcmVzZW5j ZSBzdGF0dXMgZmxhZ3Mgb2Ygb3B0aW9uYWwrdmFsdWUgc2NhbGFyIGFyZ3VtZW50cwpzaGFs bCBjb21lIGJlZm9yZSBjaGFyYWN0ZXIgbGVuZ3RoLCBjb2FycmF5IHRva2VuIGFuZCBvZmZz ZXQuCgpnY2MvZm9ydHJhbi9DaGFuZ2VMb2c6CgoJUFIgZm9ydHJhbi8xMDc0NDEKCSogdHJh bnMtZGVjbC5jYyAoY3JlYXRlX2Z1bmN0aW9uX2FyZ2xpc3QpOiBBZGp1c3QgdGhlIG9yZGVy aW5nIG9mCglhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBoaWRkZW4gcHJvY2VkdXJlIGFyZ3Vt ZW50cyB0byBtYXRjaCB0aGUKCWRvY3VtZW50ZWQgQUJJIGZvciBnZm9ydHJhbi4KCSogdHJh bnMtdHlwZXMuY2MgKGdmY19nZXRfZnVuY3Rpb25fdHlwZSk6IFNlcGFyYXRlIGhpZGRlbiBw YXJhbWV0ZXJzCglzbyB0aGF0IHRoZSBwcmVzZW5jZSBmbGFnIGZvciBvcHRpb25hbCt2YWx1 ZSBhcmd1bWVudHMgY29tZSBiZWZvcmUKCXN0cmluZyBsZW5ndGgsIGNvYXJyYXkgdG9rZW4g YW5kIG9mZnNldCwgYXMgcmVxdWlyZWQuCgpnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKCglQ UiBmb3J0cmFuLzEwNzQ0MQoJKiBnZm9ydHJhbi5kZy9jb2FycmF5L3ByMTA3NDQxLWNhZi5m OTA6IE5ldyB0ZXN0LgoJKiBnZm9ydHJhbi5kZy9vcHRpb25hbF9hYnNlbnRfNi5mOTA6IE5l dyB0ZXN0LgoJKiBnZm9ydHJhbi5kZy9vcHRpb25hbF9hYnNlbnRfNy5mOTA6IE5ldyB0ZXN0 LgotLS0KIGdjYy9mb3J0cmFuL3RyYW5zLWRlY2wuY2MgICAgICAgICAgICAgICAgICAgICB8 IDIzICsrKysrLS0KIGdjYy9mb3J0cmFuL3RyYW5zLXR5cGVzLmNjICAgICAgICAgICAgICAg ICAgICB8IDExICsrKy0KIC4uLi9nZm9ydHJhbi5kZy9jb2FycmF5L3ByMTA3NDQxLWNhZi5m OTAgICAgICB8IDI3ICsrKysrKysrKwogLi4uL2dmb3J0cmFuLmRnL29wdGlvbmFsX2Fic2Vu dF82LmY5MCAgICAgICAgIHwgNjAgKysrKysrKysrKysrKysrKysrKwogLi4uL2dmb3J0cmFu LmRnL29wdGlvbmFsX2Fic2VudF83LmY5MCAgICAgICAgIHwgMzEgKysrKysrKysrKwogNSBm aWxlcyBjaGFuZ2VkLCAxNDUgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2NvYXJyYXkvcHIxMDc0 NDEtY2FmLmY5MAogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4u ZGcvb3B0aW9uYWxfYWJzZW50XzYuZjkwCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3Rz dWl0ZS9nZm9ydHJhbi5kZy9vcHRpb25hbF9hYnNlbnRfNy5mOTAKCmRpZmYgLS1naXQgYS9n Y2MvZm9ydHJhbi90cmFucy1kZWNsLmNjIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jYwpp bmRleCA2MzUxNWI5MDcyYS4uOTQ5ODhiODY5MGUgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFu L3RyYW5zLWRlY2wuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMtZGVjbC5jYwpAQCAtMjUw Nyw4ICsyNTA3LDggQEAgY3JlYXRlX2Z1bmN0aW9uX2FyZ2xpc3QgKGdmY19zeW1ib2wgKiBz eW0pCiB7CiAgIHRyZWUgZm5kZWNsOwogICBnZmNfZm9ybWFsX2FyZ2xpc3QgKmY7Ci0gIHRy ZWUgdHlwZWxpc3QsIGhpZGRlbl90eXBlbGlzdDsKLSAgdHJlZSBhcmdsaXN0LCBoaWRkZW5f YXJnbGlzdDsKKyAgdHJlZSB0eXBlbGlzdCwgaGlkZGVuX3R5cGVsaXN0LCBvcHR2YWxfdHlw ZWxpc3Q7CisgIHRyZWUgYXJnbGlzdCwgaGlkZGVuX2FyZ2xpc3QsIG9wdHZhbF9hcmdsaXN0 OwogICB0cmVlIHR5cGU7CiAgIHRyZWUgcGFybTsKIApAQCAtMjUxOCw2ICsyNTE4LDcgQEAg Y3JlYXRlX2Z1bmN0aW9uX2FyZ2xpc3QgKGdmY19zeW1ib2wgKiBzeW0pCiAgICAgIHRoZSBu ZXcgRlVOQ1RJT05fREVDTCBub2RlLiAgKi8KICAgYXJnbGlzdCA9IE5VTExfVFJFRTsKICAg aGlkZGVuX2FyZ2xpc3QgPSBOVUxMX1RSRUU7CisgIG9wdHZhbF9hcmdsaXN0ID0gTlVMTF9U UkVFOwogICB0eXBlbGlzdCA9IFRZUEVfQVJHX1RZUEVTIChUUkVFX1RZUEUgKGZuZGVjbCkp OwogCiAgIGlmIChzeW0tPmF0dHIuZW50cnlfbWFzdGVyKQpAQCAtMjYxOSw2ICsyNjIwLDE1 IEBAIGNyZWF0ZV9mdW5jdGlvbl9hcmdsaXN0IChnZmNfc3ltYm9sICogc3ltKQogICAgIGlm IChmLT5zeW0gIT0gTlVMTCkJLyogSWdub3JlIGFsdGVybmF0ZSByZXR1cm5zLiAgKi8KICAg ICAgIGhpZGRlbl90eXBlbGlzdCA9IFRSRUVfQ0hBSU4gKGhpZGRlbl90eXBlbGlzdCk7CiAK KyAgLyogQWR2YW5jZSBoaWRkZW5fdHlwZWxpc3Qgb3ZlciBvcHRpb25hbCt2YWx1ZSBhcmd1 bWVudCBwcmVzZW5jZSBmbGFncy4gICovCisgIG9wdHZhbF90eXBlbGlzdCA9IGhpZGRlbl90 eXBlbGlzdDsKKyAgZm9yIChmID0gZ2ZjX3N5bV9nZXRfZHVtbXlfYXJncyAoc3ltKTsgZjsg ZiA9IGYtPm5leHQpCisgICAgaWYgKGYtPnN5bSAhPSBOVUxMCisJJiYgZi0+c3ltLT5hdHRy Lm9wdGlvbmFsICYmIGYtPnN5bS0+YXR0ci52YWx1ZQorCSYmICFmLT5zeW0tPmF0dHIuZGlt ZW5zaW9uICYmIGYtPnN5bS0+dHMudHlwZSAhPSBCVF9DTEFTUworCSYmICFnZmNfYnRfc3Ry dWN0IChmLT5zeW0tPnRzLnR5cGUpKQorICAgICAgaGlkZGVuX3R5cGVsaXN0ID0gVFJFRV9D SEFJTiAoaGlkZGVuX3R5cGVsaXN0KTsKKwogICBmb3IgKGYgPSBnZmNfc3ltX2dldF9kdW1t eV9hcmdzIChzeW0pOyBmOyBmID0gZi0+bmV4dCkKICAgICB7CiAgICAgICBjaGFyIG5hbWVb R0ZDX01BWF9TWU1CT0xfTEVOICsgMl07CkBAIC0yNzEyLDE0ICsyNzIyLDE2IEBAIGNyZWF0 ZV9mdW5jdGlvbl9hcmdsaXN0IChnZmNfc3ltYm9sICogc3ltKQogCQkJICAgIFBBUk1fREVD TCwgZ2V0X2lkZW50aWZpZXIgKG5hbWUpLAogCQkJICAgIGJvb2xlYW5fdHlwZV9ub2RlKTsK IAotICAgICAgICAgIGhpZGRlbl9hcmdsaXN0ID0gY2hhaW5vbiAoaGlkZGVuX2FyZ2xpc3Qs IHRtcCk7CisJICBvcHR2YWxfYXJnbGlzdCA9IGNoYWlub24gKG9wdHZhbF9hcmdsaXN0LCB0 bXApOwogICAgICAgICAgIERFQ0xfQ09OVEVYVCAodG1wKSA9IGZuZGVjbDsKICAgICAgICAg ICBERUNMX0FSVElGSUNJQUwgKHRtcCkgPSAxOwogICAgICAgICAgIERFQ0xfQVJHX1RZUEUg KHRtcCkgPSBib29sZWFuX3R5cGVfbm9kZTsKICAgICAgICAgICBUUkVFX1JFQURPTkxZICh0 bXApID0gMTsKICAgICAgICAgICBnZmNfZmluaXNoX2RlY2wgKHRtcCk7CiAKLQkgIGhpZGRl bl90eXBlbGlzdCA9IFRSRUVfQ0hBSU4gKGhpZGRlbl90eXBlbGlzdCk7CisJICAvKiBUaGUg cHJlc2VuY2UgZmxhZyBtdXN0IGJlIGJvb2xlYW4uICAqLworCSAgZ2NjX2Fzc2VydCAoVFJF RV9WQUxVRSAob3B0dmFsX3R5cGVsaXN0KSA9PSBib29sZWFuX3R5cGVfbm9kZSk7CisJICBv cHR2YWxfdHlwZWxpc3QgPSBUUkVFX0NIQUlOIChvcHR2YWxfdHlwZWxpc3QpOwogCX0KIAog ICAgICAgLyogRm9yIG5vbi1jb25zdGFudCBsZW5ndGggYXJyYXkgYXJndW1lbnRzLCBtYWtl IHN1cmUgdGhleSB1c2UKQEAgLTI4NjMsNiArMjg3NSw5IEBAIGNyZWF0ZV9mdW5jdGlvbl9h cmdsaXN0IChnZmNfc3ltYm9sICogc3ltKQogICAgICAgdHlwZWxpc3QgPSBUUkVFX0NIQUlO ICh0eXBlbGlzdCk7CiAgICAgfQogCisgIC8qIEFkZCBoaWRkZW4gcHJlc2VudCBzdGF0dXMg Zm9yIG9wdGlvbmFsK3ZhbHVlIGFyZ3VtZW50cy4gICovCisgIGFyZ2xpc3QgPSBjaGFpbm9u IChhcmdsaXN0LCBvcHR2YWxfYXJnbGlzdCk7CisKICAgLyogQWRkIHRoZSBoaWRkZW4gc3Ry aW5nIGxlbmd0aCBwYXJhbWV0ZXJzLCB1bmxlc3MgdGhlIHByb2NlZHVyZQogICAgICBpcyBi aW5kKEMpLiAgKi8KICAgaWYgKCFzeW0tPmF0dHIuaXNfYmluZF9jKQpkaWZmIC0tZ2l0IGEv Z2NjL2ZvcnRyYW4vdHJhbnMtdHlwZXMuY2MgYi9nY2MvZm9ydHJhbi90cmFucy10eXBlcy5j YwppbmRleCBkZWY3NTUyYWM2Ny4uNDI5MDdiZWNkMjcgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0 cmFuL3RyYW5zLXR5cGVzLmNjCisrKyBiL2djYy9mb3J0cmFuL3RyYW5zLXR5cGVzLmNjCkBA IC0zMTA1LDYgKzMxMDUsNyBAQCBnZmNfZ2V0X2Z1bmN0aW9uX3R5cGUgKGdmY19zeW1ib2wg KiBzeW0sIGdmY19hY3R1YWxfYXJnbGlzdCAqYWN0dWFsX2FyZ3MsCiB7CiAgIHRyZWUgdHlw ZTsKICAgdmVjPHRyZWUsIHZhX2djPiAqdHlwZWxpc3QgPSBOVUxMOworICB2ZWM8dHJlZSwg dmFfZ2M+ICpoaWRkZW5fdHlwZWxpc3QgPSBOVUxMOwogICBnZmNfZm9ybWFsX2FyZ2xpc3Qg KmY7CiAgIGdmY19zeW1ib2wgKmFyZzsKICAgaW50IGFsdGVybmF0ZV9yZXR1cm4gPSAwOwpA QCAtMzIyMiw3ICszMjIzLDcgQEAgZ2ZjX2dldF9mdW5jdGlvbl90eXBlIChnZmNfc3ltYm9s ICogc3ltLCBnZmNfYWN0dWFsX2FyZ2xpc3QgKmFjdHVhbF9hcmdzLAogCSAgICAgICBzbyB0 aGF0IHRoZSB2YWx1ZSBjYW4gYmUgcmV0dXJuZWQuICAqLwogCSAgICB0eXBlID0gYnVpbGRf cG9pbnRlcl90eXBlIChnZmNfY2hhcmxlbl90eXBlX25vZGUpOwogCi0JICB2ZWNfc2FmZV9w dXNoICh0eXBlbGlzdCwgdHlwZSk7CisJICB2ZWNfc2FmZV9wdXNoIChoaWRkZW5fdHlwZWxp c3QsIHR5cGUpOwogCX0KICAgICAgIC8qIEZvciBub25jaGFyYWN0ZXIgc2NhbGFyIGludHJp bnNpYyB0eXBlcywgVkFMVUUgcGFzc2VzIHRoZSB2YWx1ZSwKIAkgaGVuY2UsIHRoZSBvcHRp b25hbCBzdGF0dXMgY2Fubm90IGJlIHRyYW5zZmVycmVkIHZpYSBhIE5VTEwgcG9pbnRlci4K QEAgLTMyNDUsMTEgKzMyNDYsMTUgQEAgZ2ZjX2dldF9mdW5jdGlvbl90eXBlIChnZmNfc3lt Ym9sICogc3ltLCBnZmNfYWN0dWFsX2FyZ2xpc3QgKmFjdHVhbF9hcmdzLAogCQkgICYmIENM QVNTX0RBVEEgKGFyZyktPmF0dHIuY29kaW1lbnNpb24KIAkJICAmJiAhQ0xBU1NfREFUQSAo YXJnKS0+YXR0ci5hbGxvY2F0YWJsZSkpKQogCXsKLQkgIHZlY19zYWZlX3B1c2ggKHR5cGVs aXN0LCBwdm9pZF90eXBlX25vZGUpOyAgLyogY2FmX3Rva2VuLiAgKi8KLQkgIHZlY19zYWZl X3B1c2ggKHR5cGVsaXN0LCBnZmNfYXJyYXlfaW5kZXhfdHlwZSk7ICAvKiBjYWZfb2Zmc2V0 LiAgKi8KKwkgIHZlY19zYWZlX3B1c2ggKGhpZGRlbl90eXBlbGlzdCwgcHZvaWRfdHlwZV9u b2RlKTsgIC8qIGNhZl90b2tlbi4gICovCisJICB2ZWNfc2FmZV9wdXNoIChoaWRkZW5fdHlw ZWxpc3QsIGdmY19hcnJheV9pbmRleF90eXBlKTsgIC8qIGNhZl9vZmZzZXQuICAqLwogCX0K ICAgICB9CiAKKyAgLyogUHV0IGhpZGRlbiBjaGFyYWN0ZXIgbGVuZ3RoLCBjYWZfdG9rZW4s IGNhZl9vZmZzZXQgYXQgdGhlIGVuZC4gICovCisgIHZlY19zYWZlX3Jlc2VydmUgKHR5cGVs aXN0LCB2ZWNfc2FmZV9sZW5ndGggKGhpZGRlbl90eXBlbGlzdCkpOworICB2ZWNfc2FmZV9z cGxpY2UgKHR5cGVsaXN0LCBoaWRkZW5fdHlwZWxpc3QpOworCiAgIGlmICghdmVjX3NhZmVf aXNfZW1wdHkgKHR5cGVsaXN0KQogICAgICAgfHwgc3ltLT5hdHRyLmlzX21haW5fcHJvZ3Jh bQogICAgICAgfHwgc3ltLT5hdHRyLmlmX3NvdXJjZSAhPSBJRlNSQ19VTktOT1dOKQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9jb2FycmF5L3ByMTA3NDQxLWNh Zi5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2NvYXJyYXkvcHIxMDc0NDEtY2Fm LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjNiMjI0MmUy MTcKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2NvYXJy YXkvcHIxMDc0NDEtY2FmLmY5MApAQCAtMCwwICsxLDI3IEBACishIHsgZGctZG8gcnVuIH0K KyEKKyEgUFIgZm9ydHJhbi8xMDc0NDEKKyEgQ2hlY2sgdGhhdCB3aXRoIC1mY29hcnJheT1s aWIsIGNvYXJyYXkgbWV0YWRhdGEgYXJndW1lbnRzIGFyZSBwYXNzZWQKKyEgaW4gdGhlIHJp Z2h0IG9yZGVyIHRvIHByb2NlZHVyZXMuCishCishIENvbnRyaWJ1dGVkIGJ5IE0uTW9yaW4K KworcHJvZ3JhbSBwCisgIGludGVnZXIgOjogY2lbKl0KKyAgY2kgPSAxNworICBjYWxsIHMo MSwgY2ksICJhYmNkIikKK2NvbnRhaW5zCisgIHN1YnJvdXRpbmUgcyhyYSwgY2EsIGMpCisg ICAgaW50ZWdlciA6OiByYSwgY2FbKl0KKyAgICBjaGFyYWN0ZXIoKikgOjogYworICAgIGNh WzFdID0gMTMKKyAgICBpZiAocmEgLz0gMSkgc3RvcCAxCisgICAgaWYgKHRoaXNfaW1hZ2Uo KSA9PSAxKSB0aGVuCisgICAgICBpZiAoY2EgLz0gMTMpIHN0b3AgMgorICAgIGVsc2UKKyAg ICAgIGlmIChjYSAvPSAxNykgc3RvcCAzCisgICAgZW5kIGlmCisgICAgaWYgKGxlbihjKSAv PSA0KSBzdG9wIDQKKyAgICBpZiAoYyAvPSAiYWJjZCIpIHN0b3AgNQorICBlbmQgc3Vicm91 dGluZSBzCitlbmQgcHJvZ3JhbSBwCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL29wdGlvbmFsX2Fic2VudF82LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4u ZGcvb3B0aW9uYWxfYWJzZW50XzYuZjkwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5iOGFiYjA2OTgwYQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2ZvcnRyYW4uZGcvb3B0aW9uYWxfYWJzZW50XzYuZjkwCkBAIC0wLDAgKzEsNjAgQEAK KyEgeyBkZy1kbyBydW4gfQorISBQUiBmb3J0cmFuLzEwNzQ0MQorIQorISBUZXN0IFZBTFVF ICsgT1BUSU9OQUwgZm9yIGludGVnZXIvcmVhbC8uLi4KKyEgaW4gdGhlIHByZXNlbmNlIG9m IG5vbi1vcHRpb25hbCBjaGFyYWN0ZXIgZHVtbWllcworCitwcm9ncmFtIGJ1Z2RlbW8KKyAg aW1wbGljaXQgbm9uZQorICBjaGFyYWN0ZXIgOjogcyA9ICdhJworICBpbnRlZ2VyICAgOjog dAorCisgIHQgPSB0ZXN0b3B0aW9uYWwocykKKyAgY2FsbCB0ZXN0MiAocykKKyAgY2FsbCB0 ZXN0MyAocykKKyAgY2FsbCB0ZXN0NCAodz0nMTIzJyx4PTQyKQorCitjb250YWlucworCisg IGZ1bmN0aW9uIHRlc3RvcHRpb25hbCAodywgeCkgcmVzdWx0KHQpCisgICAgY2hhcmFjdGVy LCBpbnRlbnQoaW4pICAgICAgICAgICAgICAgICAgOjogdworICAgIGludGVnZXIsICAgaW50 ZW50KGluKSwgdmFsdWUsIG9wdGlvbmFsIDo6IHgKKyAgICBpbnRlZ2VyIDo6IHQKKyAgICBw cmludCAqLCAncHJlc2VudCh4KSBpcycsIHByZXNlbnQoeCkKKyAgICB0ID0gMAorICAgIGlm IChwcmVzZW50ICh4KSkgc3RvcCAxCisgIGVuZCBmdW5jdGlvbiB0ZXN0b3B0aW9uYWwKKwor ICBzdWJyb3V0aW5lIHRlc3QyICh3LCB4KQorICAgIGNoYXJhY3RlciwgaW50ZW50KGluKSAg ICAgICAgICAgICAgICAgIDo6IHcKKyAgICBpbnRlZ2VyLCAgIGludGVudChpbiksIHZhbHVl LCBvcHRpb25hbCA6OiB4CisgICAgcHJpbnQqLCAncHJlc2VudCh4KSBpcycsIHByZXNlbnQo eCkKKyAgICBpZiAocHJlc2VudCAoeCkpIHN0b3AgMgorICBlbmQgc3Vicm91dGluZSB0ZXN0 MgorCisgIHN1YnJvdXRpbmUgdGVzdDMgKHcsIHgpCisgICAgY2hhcmFjdGVyLCBpbnRlbnQo aW4pLCAgICAgICAgb3B0aW9uYWwgOjogdworICAgIGludGVnZXIsICAgaW50ZW50KGluKSwg dmFsdWUsIG9wdGlvbmFsIDo6IHgKKyAgICBwcmludCAqLCAncHJlc2VudCh3KSBpcycsIHBy ZXNlbnQodykKKyAgICBwcmludCAqLCAncHJlc2VudCh4KSBpcycsIHByZXNlbnQoeCkKKyAg ICBpZiAoLm5vdC4gcHJlc2VudCAodykpIHN0b3AgMworICAgIGlmIChwcmVzZW50ICh4KSkg c3RvcCA0CisgIGVuZCBzdWJyb3V0aW5lIHRlc3QzCisKKyAgc3Vicm91dGluZSB0ZXN0NCAo ciwgdywgeCkKKyAgICByZWFsLCAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCBvcHRpb25h bCA6OiByCisgICAgY2hhcmFjdGVyKCopLCBpbnRlbnQoaW4pLCAgICAgICAgb3B0aW9uYWwg OjogdworICAgIGludGVnZXIsICAgICAgICAgICAgICAgICAgdmFsdWUsIG9wdGlvbmFsIDo6 IHgKKyAgICBwcmludCAqLCAncHJlc2VudChyKSBpcycsIHByZXNlbnQocikKKyAgICBwcmlu dCAqLCAncHJlc2VudCh3KSBpcycsIHByZXNlbnQodykKKyAgICBwcmludCAqLCAncHJlc2Vu dCh4KSBpcycsIHByZXNlbnQoeCkKKyAgICBpZiAocHJlc2VudCAocikpIHN0b3AgNQorICAg IGlmICgubm90LiBwcmVzZW50ICh3KSkgc3RvcCA2CisgICAgaWYgKC5ub3QuIHByZXNlbnQg KHgpKSBzdG9wIDcKKyAgICBwcmludCAqLCAneD0nLCB4CisgICAgcHJpbnQgKiwgJ2xlbih3 KT0nLCBsZW4odykKKyAgICBpZiAobGVuKHcpIC89IDMpIHN0b3AgOAorICAgIGlmICh4IC89 IDQyKSBzdG9wIDkKKyAgZW5kIHN1YnJvdXRpbmUgdGVzdDQKKworZW5kIHByb2dyYW0gYnVn ZGVtbwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9vcHRpb25hbF9h YnNlbnRfNy5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL29wdGlvbmFsX2Fic2Vu dF83LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWJlOTgx Yzg4ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL29w dGlvbmFsX2Fic2VudF83LmY5MApAQCAtMCwwICsxLDMxIEBACishIHsgZGctZG8gcnVuIH0K KyEgeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1mZHVtcC10cmVlLW9yaWdpbmFsIiB9Cish CishIFBSIGZvcnRyYW4vMTA3NDQxCishIENoZWNrIHRoYXQgcHJvY2VkdXJlIHR5cGVzIGFu ZCBwcm9jZWR1cmUgZGVjbHMgbWF0Y2ggd2hlbiB0aGUgcHJvY2VkdXJlCishIGhhcyBib3Ro IGNoYXJhY3Rlci10eXBlZCBhbmQgb3B0aW9uYWwgdmFsdWUgYXJncy4KKyEKKyEgQ29udHJp YnV0ZWQgYnkgTS5Nb3JpbgorCitwcm9ncmFtIHAKKyAgaW50ZXJmYWNlCisgICAgc3Vicm91 dGluZSBpKGMsIG8pCisgICAgICBjaGFyYWN0ZXIoKikgOjogYworICAgICAgaW50ZWdlciwg b3B0aW9uYWwsIHZhbHVlIDo6IG8KKyAgICBlbmQgc3Vicm91dGluZSBpCisgIGVuZCBpbnRl cmZhY2UKKyAgcHJvY2VkdXJlKGkpLCBwb2ludGVyIDo6IHBwCisgIHBwID0+IHMKKyAgY2Fs bCBwcCgiYWJjZCIpCitjb250YWlucworICBzdWJyb3V0aW5lIHMoYywgbykKKyAgICBjaGFy YWN0ZXIoKikgOjogYworICAgIGludGVnZXIsIG9wdGlvbmFsLCB2YWx1ZSA6OiBvCisgICAg aWYgKHByZXNlbnQobykpIHN0b3AgMQorICAgIGlmIChsZW4oYykgLz0gNCkgc3RvcCAyCisg ICAgaWYgKGMgLz0gImFiY2QiKSBzdG9wIDMKKyAgZW5kIHN1YnJvdXRpbmUgcworZW5kIHBy b2dyYW0gcAorCishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAidm9pZCBzIC4qIGMs IC4qIG8sIGxvZ2ljYWwuKiBfbywgaW50ZWdlci4qIF9jIiAib3JpZ2luYWwiIH0gfQorISB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIiwgaW50ZWdlci4qLCBsb2dpY2FsLiosIGlu dGVnZXIuKiBwcCIgIm9yaWdpbmFsIiB9IH0KLS0gCjIuMzUuMwoK --------------lYRSjnU3cb0XIZnQCQs3ZfoW--