From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa1.mentor.iphmx.com (esa1.mentor.iphmx.com [68.232.129.153]) by sourceware.org (Postfix) with ESMTPS id 2265E38582A2; Mon, 4 Jul 2022 18:29:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2265E38582A2 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.92,243,1650960000"; d="diff'?scan'208";a="80952146" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa1.mentor.iphmx.com with ESMTP; 04 Jul 2022 10:29:43 -0800 IronPort-SDR: ic1KIUoiHOhI6rS06E8vDWw1Soqdqmoat8teruWQVJRQXwSaJljMilueo9zZP63bDtMLcg4Z9o IYLaqlmUPOP3qC/GuUQVcitwz7rkBNWpsl9R4zt52A1XkbaUms2MkgXc7emmuhi7DzdKOYeprq 79Onp7y9muFXRxl/rhfFIsZGo1m2bu2Aysmu+vgFnsvsEYD7Y6F5vAXJIEEkXw3BhV78CeU4HT KNdpdtnvIV+2PKnWaab09h2LW8L23gcu4tyQnheIJfc0A7K6xFOdAqDskASq0BlBWHoX60RTv0 bOY= Content-Type: multipart/mixed; boundary="------------L0M9GKVGrUzGmsYXFqCDDnVD" Message-ID: <26d77b3f-2665-164d-60e8-9504af8991de@codesourcery.com> Date: Mon, 4 Jul 2022 20:29:37 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [Patch] OpenMP/Fortran: Add support for OpenMP 5.2 linear clause syntax Content-Language: en-US To: Jakub Jelinek CC: gcc-patches , fortran References: <00106b18-d0f4-d449-73de-17831af2006a@codesourcery.com> From: Tobias Burnus In-Reply-To: X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-02.mgc.mentorg.com (139.181.222.2) To svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, NICE_REPLY_A, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: fortran@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Fortran mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Jul 2022 18:29:51 -0000 --------------L0M9GKVGrUzGmsYXFqCDDnVD Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: quoted-printable On 04.07.22 19:20, Jakub Jelinek wrote: > Perhaps you could avoid some code duplication by doing it like: > bool close_paren =3D gfc_match ("val )") =3D=3D MATCH= _YES; > if (close_paren || gfc_match ("val , ") =3D=3D MATCH_= YES) Done! Good idea! I was thinking of things like ...peek_char() but that takes the next char and not the last one; but your method works. >> + else if (!has_modifiers >> + && gfc_match ("%e )", &step) =3D=3D MATCH_YE= S) >> + { >> + if ((step->expr_type =3D=3D EXPR_FUNCTION >> + || step->expr_type =3D=3D EXPR_VARIABLE) >> + && strcmp (step->symtree->name, "step") =3D= =3D 0) >> + { >> + gfc_current_locus =3D old_loc; >> + gfc_match ("step ("); >> + has_error =3D true; >> + } > I think the above should accept even > linear (v : step (1) + 0) or linear (v : step (1, 2, 3) * 1) > which is desirable, because step then will be some other operation (hope > folding isn't performed yet). Well, it does. In that case expr_type =3D=3D EXPR_OP. I added the latter to the C/C++ and the Fortran testcase. >> + !!$omp declare simd linear (x : ref, step (1)) linear (y : step (2)= , uval) > Are all these !! intentional? No =E2=80=93 just a missed undo after debugging. It worked/works after chan= ging it back to '!'. Revised version attached. Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --------------L0M9GKVGrUzGmsYXFqCDDnVD Content-Type: text/x-patch; charset="UTF-8"; name="linear-v3.diff" Content-Disposition: attachment; filename="linear-v3.diff" Content-Transfer-Encoding: base64 T3Blbk1QL0ZvcnRyYW46IEFkZCBzdXBwb3J0IGZvciBPcGVuTVAgNS4yIGxpbmVhciBjbGF1 c2Ugc3ludGF4CgpGb3J0cmFuIHBhcnQgdG8gQy9DKysKY29tbWl0IHIxMy0xMDAyLWcwM2I3 MTQwNjMyM2RkYzA2NWIxZDc4MzdkOGI0M2IxN2U0YjA0OGI1CgpnY2MvZm9ydHJhbi9DaGFu Z2VMb2c6CgoJKiBnZm9ydHJhbi5oIChnZmNfb21wX25hbWVsaXN0KTogVXBkYXRlIGJ5IGNy ZWF0aW5nICdsaW5lYXInIHN0cnVjdCwKCW1vdmUgJ2xpbmVhcl9vcCcgYXMgJ29wJyB0byBp ZCBhbmQgYWRkICdvbGRfbW9kaWZpZXInIHRvIGl0LgoJKiBkdW1wLXBhcnNlLXRyZWUuY2Mg KHNob3dfb21wX25hbWVsaXN0KTogVXBkYXRlIGFjY29yZGluZ2x5LgoJKiBtb2R1bGUuY2Mg KG1pb19vbXBfZGVjbGFyZV9zaW1kKTogTGlrZXdpc2UuCgkqIHRyYW5zLW9wZW5tcC5jYyAo Z2ZjX3RyYW5zX29tcF9jbGF1c2VzKTogTGlrZXdpc2UuCgkqIG9wZW5tcC5jYyAocmVzb2x2 ZV9vbXBfY2xhdXNlcyk6IExpa2V3aXNlOyBhY2NlcHQgbmV3LXN0eWxlCgkndmFsJyBtb2Rp ZmllciB3aXRoIGRvL3NpbWQuCgkoZ2ZjX21hdGNoX29tcF9jbGF1c2VzKTogSGFuZGxlIE9w ZW5NUCA1LjIgbGluZWFyIGNsYXVzZSBzeW50YXguCgpsaWJnb21wL0NoYW5nZUxvZzoKCgkq IGxpYmdvbXAudGV4aSAoT3Blbk1QIDUuMik6IE1hcmsgbGluZWFyLWNsYXVzZSBjaGFuZ2Ug YXMgJ1knLgoKZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6CgoJKiBjLWMrKy1jb21tb24vZ29t cC9saW5lYXItNC5jOiBOZXcgdGVzdC4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItMi5m OTA6IE5ldyB0ZXN0LgoJKiBnZm9ydHJhbi5kZy9nb21wL2xpbmVhci0zLmY5MDogTmV3IHRl c3QuCgkqIGdmb3J0cmFuLmRnL2dvbXAvbGluZWFyLTQuZjkwOiBOZXcgdGVzdC4KCSogZ2Zv cnRyYW4uZGcvZ29tcC9saW5lYXItNS5mOTA6IE5ldyB0ZXN0LgoJKiBnZm9ydHJhbi5kZy9n b21wL2xpbmVhci02LmY5MDogTmV3IHRlc3QuCgkqIGdmb3J0cmFuLmRnL2dvbXAvbGluZWFy LTcuZjkwOiBOZXcgdGVzdC4KCSogZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItOC5mOTA6IE5l dyB0ZXN0LgoKQ28tYXV0aG9yZWQtYnk6IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5j b20+CgogZ2NjL2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVlLmNjICAgICAgICAgICAgICB8ICAg NiArLQogZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCAgICAgICAgICAgICAgICAgICAgICB8ICAg NiArLQogZ2NjL2ZvcnRyYW4vbW9kdWxlLmNjICAgICAgICAgICAgICAgICAgICAgICB8ICAg NiArLQogZ2NjL2ZvcnRyYW4vb3Blbm1wLmNjICAgICAgICAgICAgICAgICAgICAgICB8IDE2 MyArKysrKysrKysrKysrKysrKysrKysrKystLS0tCiBnY2MvZm9ydHJhbi90cmFucy1vcGVu bXAuY2MgICAgICAgICAgICAgICAgIHwgICA1ICstCiBnY2MvdGVzdHN1aXRlL2MtYysrLWNv bW1vbi9nb21wL2xpbmVhci00LmMgIHwgIDM0ICsrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9nb21wL2xpbmVhci0yLmY5MCB8IDExMiArKysrKysrKysrKysrKysrKysrCiBn Y2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbGluZWFyLTMuZjkwIHwgIDM5ICsrKysr KysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItNC5mOTAgfCAxMDIg KysrKysrKysrKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5l YXItNS5mOTAgfCAgNDMgKysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29t cC9saW5lYXItNi5mOTAgfCAgNTQgKysrKysrKysrCiBnY2MvdGVzdHN1aXRlL2dmb3J0cmFu LmRnL2dvbXAvbGluZWFyLTcuZjkwIHwgIDI3ICsrKysrCiBnY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL2dvbXAvbGluZWFyLTguZjkwIHwgIDQ0ICsrKysrKysrCiBsaWJnb21wL2xpYmdv bXAudGV4aSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiAxNCBmaWxlcyBjaGFu Z2VkLCA2MTMgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv Z2NjL2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVlLmNjIGIvZ2NjL2ZvcnRyYW4vZHVtcC1wYXJz ZS10cmVlLmNjCmluZGV4IDg1YzBiOThmNjE1Li41MzUyMDA4YTYzZCAxMDA2NDQKLS0tIGEv Z2NjL2ZvcnRyYW4vZHVtcC1wYXJzZS10cmVlLmNjCisrKyBiL2djYy9mb3J0cmFuL2R1bXAt cGFyc2UtdHJlZS5jYwpAQCAtMTQyMSw4ICsxNDIxLDggQEAgc2hvd19vbXBfbmFtZWxpc3Qg KGludCBsaXN0X3R5cGUsIGdmY19vbXBfbmFtZWxpc3QgKm4pCiAJICBjYXNlIE9NUF9NQVBf UkVMRUFTRTogZnB1dHMgKCJyZWxlYXNlOiIsIGR1bXBmaWxlKTsgYnJlYWs7CiAJICBkZWZh dWx0OiBicmVhazsKIAkgIH0KLSAgICAgIGVsc2UgaWYgKGxpc3RfdHlwZSA9PSBPTVBfTElT VF9MSU5FQVIpCi0Jc3dpdGNoIChuLT51LmxpbmVhcl9vcCkKKyAgICAgIGVsc2UgaWYgKGxp c3RfdHlwZSA9PSBPTVBfTElTVF9MSU5FQVIgJiYgbi0+dS5saW5lYXIub2xkX21vZGlmaWVy KQorCXN3aXRjaCAobi0+dS5saW5lYXIub3ApCiAJICB7CiAJICBjYXNlIE9NUF9MSU5FQVJf UkVGOiBmcHV0cyAoInJlZigiLCBkdW1wZmlsZSk7IGJyZWFrOwogCSAgY2FzZSBPTVBfTElO RUFSX1ZBTDogZnB1dHMgKCJ2YWwoIiwgZHVtcGZpbGUpOyBicmVhazsKQEAgLTE0MzAsNyAr MTQzMCw3IEBAIHNob3dfb21wX25hbWVsaXN0IChpbnQgbGlzdF90eXBlLCBnZmNfb21wX25h bWVsaXN0ICpuKQogCSAgZGVmYXVsdDogYnJlYWs7CiAJICB9CiAgICAgICBmcHJpbnRmIChk dW1wZmlsZSwgIiVzIiwgbi0+c3ltID8gbi0+c3ltLT5uYW1lIDogIm9tcF9hbGxfbWVtb3J5 Iik7Ci0gICAgICBpZiAobGlzdF90eXBlID09IE9NUF9MSVNUX0xJTkVBUiAmJiBuLT51Lmxp bmVhcl9vcCAhPSBPTVBfTElORUFSX0RFRkFVTFQpCisgICAgICBpZiAobGlzdF90eXBlID09 IE9NUF9MSVNUX0xJTkVBUiAmJiBuLT51LmxpbmVhci5vcCAhPSBPTVBfTElORUFSX0RFRkFV TFQpCiAJZnB1dGMgKCcpJywgZHVtcGZpbGUpOwogICAgICAgaWYgKG4tPmV4cHIpCiAJewpk aWZmIC0tZ2l0IGEvZ2NjL2ZvcnRyYW4vZ2ZvcnRyYW4uaCBiL2djYy9mb3J0cmFuL2dmb3J0 cmFuLmgKaW5kZXggNDYzZDk2OTIyMzYuLjY5NmFhZGQ3ZGI2IDEwMDY0NAotLS0gYS9nY2Mv Zm9ydHJhbi9nZm9ydHJhbi5oCisrKyBiL2djYy9mb3J0cmFuL2dmb3J0cmFuLmgKQEAgLTEz NDUsNyArMTM0NSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBnZmNfb21wX25hbWVsaXN0CiAgICAg ICBnZmNfb21wX3JlZHVjdGlvbl9vcCByZWR1Y3Rpb25fb3A7CiAgICAgICBnZmNfb21wX2Rl cGVuZF9vcCBkZXBlbmRfb3A7CiAgICAgICBnZmNfb21wX21hcF9vcCBtYXBfb3A7Ci0gICAg ICBnZmNfb21wX2xpbmVhcl9vcCBsaW5lYXJfb3A7CisgICAgICBzdHJ1Y3QKKwl7CisJICBF TlVNX0JJVEZJRUxEIChnZmNfb21wX2xpbmVhcl9vcCkgb3A6NDsKKwkgIGJvb2wgb2xkX21v ZGlmaWVyOworCX0gbGluZWFyOwogICAgICAgc3RydWN0IGdmY19jb21tb25faGVhZCAqY29t bW9uOwogICAgICAgYm9vbCBsYXN0cHJpdmF0ZV9jb25kaXRpb25hbDsKICAgICB9IHU7CmRp ZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9tb2R1bGUuY2MgYi9nY2MvZm9ydHJhbi9tb2R1bGUu Y2MKaW5kZXggODVhYTE1M2JkNzcuLjVkZGFiZGNmZjRkIDEwMDY0NAotLS0gYS9nY2MvZm9y dHJhbi9tb2R1bGUuY2MKKysrIGIvZ2NjL2ZvcnRyYW4vbW9kdWxlLmNjCkBAIC00MzgzLDEw ICs0MzgzLDEwIEBAIG1pb19vbXBfZGVjbGFyZV9zaW1kIChnZmNfbmFtZXNwYWNlICpucywg Z2ZjX29tcF9kZWNsYXJlX3NpbWQgKipvZHNwKQogCSAgICB9CiAJICBmb3IgKG4gPSBvZHMt PmNsYXVzZXMtPmxpc3RzW09NUF9MSVNUX0xJTkVBUl07IG47IG4gPSBuLT5uZXh0KQogCSAg ICB7Ci0JICAgICAgaWYgKG4tPnUubGluZWFyX29wID09IE9NUF9MSU5FQVJfREVGQVVMVCkK KwkgICAgICBpZiAobi0+dS5saW5lYXIub3AgPT0gT01QX0xJTkVBUl9ERUZBVUxUKQogCQlt aW9fbmFtZSAoNCwgb21wX2RlY2xhcmVfc2ltZF9jbGF1c2VzKTsKIAkgICAgICBlbHNlCi0J CW1pb19uYW1lICgzMiArIG4tPnUubGluZWFyX29wLCBvbXBfZGVjbGFyZV9zaW1kX2NsYXVz ZXMpOworCQltaW9fbmFtZSAoMzIgKyBuLT51LmxpbmVhci5vcCwgb21wX2RlY2xhcmVfc2lt ZF9jbGF1c2VzKTsKIAkgICAgICBtaW9fc3ltYm9sX3JlZiAoJm4tPnN5bSk7CiAJICAgICAg bWlvX2V4cHIgKCZuLT5leHByKTsKIAkgICAgfQpAQCAtNDQzOCw3ICs0NDM4LDcgQEAgbWlv X29tcF9kZWNsYXJlX3NpbWQgKGdmY19uYW1lc3BhY2UgKm5zLCBnZmNfb21wX2RlY2xhcmVf c2ltZCAqKm9kc3ApCiAJICAgIGNhc2UgMzQ6CiAJICAgIGNhc2UgMzU6CiAJICAgICAgKnB0 cnNbMV0gPSBuID0gZ2ZjX2dldF9vbXBfbmFtZWxpc3QgKCk7Ci0JICAgICAgbi0+dS5saW5l YXJfb3AgPSAoZW51bSBnZmNfb21wX2xpbmVhcl9vcCkgKHQgLSAzMik7CisJICAgICAgbi0+ dS5saW5lYXIub3AgPSAoZW51bSBnZmNfb21wX2xpbmVhcl9vcCkgKHQgLSAzMik7CiAJICAg ICAgdCA9IDQ7CiAJICAgICAgZ290byBmaW5pc2hfbmFtZWxpc3Q7CiAJICAgIH0KZGlmZiAt LWdpdCBhL2djYy9mb3J0cmFuL29wZW5tcC5jYyBiL2djYy9mb3J0cmFuL29wZW5tcC5jYwpp bmRleCA1MWI0MjlhNTk3Yy4uYmQ0ZmYyNTlmZTAgMTAwNjQ0Ci0tLSBhL2djYy9mb3J0cmFu L29wZW5tcC5jYworKysgYi9nY2MvZm9ydHJhbi9vcGVubXAuY2MKQEAgLTIzMjQsNiArMjMy NCw3IEBAIGdmY19tYXRjaF9vbXBfY2xhdXNlcyAoZ2ZjX29tcF9jbGF1c2VzICoqY3AsIGNv bnN0IG9tcF9tYXNrIG1hc2ssCiAJICBpZiAoKG1hc2sgJiBPTVBfQ0xBVVNFX0xJTkVBUikK IAkgICAgICAmJiBnZmNfbWF0Y2ggKCJsaW5lYXIgKCIpID09IE1BVENIX1lFUykKIAkgICAg eworCSAgICAgIGJvb2wgb2xkX2xpbmVhcl9tb2RpZmllciA9IGZhbHNlOwogCSAgICAgIGdm Y19vbXBfbGluZWFyX29wIGxpbmVhcl9vcCA9IE9NUF9MSU5FQVJfREVGQVVMVDsKIAkgICAg ICBnZmNfZXhwciAqc3RlcCA9IE5VTEw7CiAKQEAgLTIzMzEsMTcgKzIzMzIsMjYgQEAgZ2Zj X21hdGNoX29tcF9jbGF1c2VzIChnZmNfb21wX2NsYXVzZXMgKipjcCwgY29uc3Qgb21wX21h c2sgbWFzaywKIAkJCQkJICAgICAgICZjLT5saXN0c1tPTVBfTElTVF9MSU5FQVJdLAogCQkJ CQkgICAgICAgZmFsc2UsIE5VTEwsICZoZWFkKQogCQkgID09IE1BVENIX1lFUykKLQkJbGlu ZWFyX29wID0gT01QX0xJTkVBUl9SRUY7CisJCXsKKwkJICBsaW5lYXJfb3AgPSBPTVBfTElO RUFSX1JFRjsKKwkJICBvbGRfbGluZWFyX21vZGlmaWVyID0gdHJ1ZTsKKwkJfQogCSAgICAg IGVsc2UgaWYgKGdmY19tYXRjaF9vbXBfdmFyaWFibGVfbGlzdCAoIiB2YWwgKCIsCiAJCQkJ CQkgICAgJmMtPmxpc3RzW09NUF9MSVNUX0xJTkVBUl0sCiAJCQkJCQkgICAgZmFsc2UsIE5V TEwsICZoZWFkKQogCQkgICAgICAgPT0gTUFUQ0hfWUVTKQotCQlsaW5lYXJfb3AgPSBPTVBf TElORUFSX1ZBTDsKKwkJeworCQkgIGxpbmVhcl9vcCA9IE9NUF9MSU5FQVJfVkFMOworCQkg IG9sZF9saW5lYXJfbW9kaWZpZXIgPSB0cnVlOworCQl9CiAJICAgICAgZWxzZSBpZiAoZ2Zj X21hdGNoX29tcF92YXJpYWJsZV9saXN0ICgiIHV2YWwgKCIsCiAJCQkJCQkgICAgJmMtPmxp c3RzW09NUF9MSVNUX0xJTkVBUl0sCiAJCQkJCQkgICAgZmFsc2UsIE5VTEwsICZoZWFkKQog CQkgICAgICAgPT0gTUFUQ0hfWUVTKQotCQlsaW5lYXJfb3AgPSBPTVBfTElORUFSX1VWQUw7 CisJCXsKKwkJICBsaW5lYXJfb3AgPSBPTVBfTElORUFSX1VWQUw7CisJCSAgb2xkX2xpbmVh cl9tb2RpZmllciA9IHRydWU7CisJCX0KIAkgICAgICBlbHNlIGlmIChnZmNfbWF0Y2hfb21w X3ZhcmlhYmxlX2xpc3QgKCIiLAogCQkJCQkJICAgICZjLT5saXN0c1tPTVBfTElTVF9MSU5F QVJdLAogCQkJCQkJICAgIGZhbHNlLCAmZW5kX2NvbG9uLCAmaGVhZCkKQEAgLTIzNjQsMTQg KzIzNzQsMTE0IEBAIGdmY19tYXRjaF9vbXBfY2xhdXNlcyAoZ2ZjX29tcF9jbGF1c2VzICoq Y3AsIGNvbnN0IG9tcF9tYXNrIG1hc2ssCiAJCSAgICAgIGJyZWFrOwogCQkgICAgfQogCQl9 Ci0JICAgICAgaWYgKGVuZF9jb2xvbiAmJiBnZmNfbWF0Y2ggKCIgJWUgKSIsICZzdGVwKSAh PSBNQVRDSF9ZRVMpCisJICAgICAgZ2ZjX2dvYmJsZV93aGl0ZXNwYWNlICgpOworCSAgICAg IGlmIChvbGRfbGluZWFyX21vZGlmaWVyICYmIGVuZF9jb2xvbikKIAkJewotCQkgIGdmY19m cmVlX29tcF9uYW1lbGlzdCAoKmhlYWQsIGZhbHNlKTsKLQkJICBnZmNfY3VycmVudF9sb2N1 cyA9IG9sZF9sb2M7Ci0JCSAgKmhlYWQgPSBOVUxMOwotCQkgIGJyZWFrOworCQkgIGlmIChn ZmNfbWF0Y2ggKCIgJWUgKSIsICZzdGVwKSAhPSBNQVRDSF9ZRVMpCisJCSAgICB7CisJCSAg ICAgIGdmY19mcmVlX29tcF9uYW1lbGlzdCAoKmhlYWQsIGZhbHNlKTsKKwkJICAgICAgZ2Zj X2N1cnJlbnRfbG9jdXMgPSBvbGRfbG9jOworCQkgICAgICAqaGVhZCA9IE5VTEw7CisJCSAg ICAgIGdvdG8gZXJyb3I7CisJCSAgICB9CiAJCX0KLQkgICAgICBlbHNlIGlmICghZW5kX2Nv bG9uKQorCSAgICAgIGVsc2UgaWYgKGVuZF9jb2xvbikKKwkJeworCQkgIGJvb2wgaGFzX2Vy cm9yID0gZmFsc2U7CisJCSAgYm9vbCBoYXNfbW9kaWZpZXJzID0gZmFsc2U7CisJCSAgYm9v bCBoYXNfc3RlcCA9IGZhbHNlOworCQkgIGJvb2wgZHVwbGljYXRlX3N0ZXAgPSBmYWxzZTsK KwkJICBib29sIGR1cGxpY2F0ZV9tb2QgPSBmYWxzZTsKKwkJICB3aGlsZSAodHJ1ZSkKKwkJ ICAgIHsKKwkJICAgICAgb2xkX2xvYyA9IGdmY19jdXJyZW50X2xvY3VzOworCQkgICAgICBi b29sIGNsb3NlX3BhcmVuID0gZ2ZjX21hdGNoICgidmFsICkiKSA9PSBNQVRDSF9ZRVM7CisJ CSAgICAgIGlmIChjbG9zZV9wYXJlbiB8fCBnZmNfbWF0Y2ggKCJ2YWwgLCAiKSA9PSBNQVRD SF9ZRVMpCisJCQl7CisJCQkgIGlmIChsaW5lYXJfb3AgIT0gT01QX0xJTkVBUl9ERUZBVUxU KQorCQkJICAgIHsKKwkJCSAgICAgIGR1cGxpY2F0ZV9tb2QgPSB0cnVlOworCQkJICAgICAg YnJlYWs7CisJCQkgICAgfQorCQkJICBsaW5lYXJfb3AgPSBPTVBfTElORUFSX1ZBTDsKKwkJ CSAgaGFzX21vZGlmaWVycyA9IHRydWU7CisJCQkgIGlmIChjbG9zZV9wYXJlbikKKwkJCSAg ICBicmVhazsKKwkJCSAgY29udGludWU7CisJCQl9CisJCSAgICAgIGNsb3NlX3BhcmVuID0g Z2ZjX21hdGNoICgidXZhbCApIikgPT0gTUFUQ0hfWUVTOworCQkgICAgICBpZiAoY2xvc2Vf cGFyZW4gfHwgZ2ZjX21hdGNoICgidXZhbCAsICIpID09IE1BVENIX1lFUykKKwkJCXsKKwkJ CSAgaWYgKGxpbmVhcl9vcCAhPSBPTVBfTElORUFSX0RFRkFVTFQpCisJCQkgICAgeworCQkJ ICAgICAgZHVwbGljYXRlX21vZCA9IHRydWU7CisJCQkgICAgICBicmVhazsKKwkJCSAgICB9 CisJCQkgIGxpbmVhcl9vcCA9IE9NUF9MSU5FQVJfVVZBTDsKKwkJCSAgaGFzX21vZGlmaWVy cyA9IHRydWU7CisJCQkgIGlmIChjbG9zZV9wYXJlbikKKwkJCSAgICBicmVhazsKKwkJCSAg Y29udGludWU7CisJCQl9CisJCSAgICAgIGNsb3NlX3BhcmVuID0gZ2ZjX21hdGNoICgicmVm ICkiKSA9PSBNQVRDSF9ZRVM7CisJCSAgICAgIGlmIChjbG9zZV9wYXJlbiB8fCBnZmNfbWF0 Y2ggKCJyZWYgLCAiKSA9PSBNQVRDSF9ZRVMpCisJCQl7CisJCQkgIGlmIChsaW5lYXJfb3Ag IT0gT01QX0xJTkVBUl9ERUZBVUxUKQorCQkJICAgIHsKKwkJCSAgICAgIGR1cGxpY2F0ZV9t b2QgPSB0cnVlOworCQkJICAgICAgYnJlYWs7CisJCQkgICAgfQorCQkJICBsaW5lYXJfb3Ag PSBPTVBfTElORUFSX1JFRjsKKwkJCSAgaGFzX21vZGlmaWVycyA9IHRydWU7CisJCQkgIGlm IChjbG9zZV9wYXJlbikKKwkJCSAgICBicmVhazsKKwkJCSAgY29udGludWU7CisJCQl9CisJ CSAgICAgIGNsb3NlX3BhcmVuID0gKGdmY19tYXRjaCAoInN0ZXAgKCAlZSApICkiLCAmc3Rl cCkKKwkJCQkgICAgID09IE1BVENIX1lFUyk7CisJCSAgICAgIGlmIChjbG9zZV9wYXJlbgor CQkJICB8fCBnZmNfbWF0Y2ggKCJzdGVwICggJWUgKSAsICIsICZzdGVwKSA9PSBNQVRDSF9Z RVMpCisJCQl7CisJCQkgIGlmIChoYXNfc3RlcCkKKwkJCSAgICB7CisJCQkgICAgICBkdXBs aWNhdGVfc3RlcCA9IHRydWU7CisJCQkgICAgICBicmVhazsKKwkJCSAgICB9CisJCQkgIGhh c19tb2RpZmllcnMgPSBoYXNfc3RlcCA9IHRydWU7CisJCQkgIGlmIChjbG9zZV9wYXJlbikK KwkJCSAgICBicmVhazsKKwkJCSAgY29udGludWU7CisJCQl9CisJCSAgICAgIGlmICghaGFz X21vZGlmaWVycworCQkJICAmJiBnZmNfbWF0Y2ggKCIlZSApIiwgJnN0ZXApID09IE1BVENI X1lFUykKKwkJCXsKKwkJCSAgaWYgKChzdGVwLT5leHByX3R5cGUgPT0gRVhQUl9GVU5DVElP TgorCQkJCXx8IHN0ZXAtPmV4cHJfdHlwZSA9PSBFWFBSX1ZBUklBQkxFKQorCQkJICAgICAg JiYgc3RyY21wIChzdGVwLT5zeW10cmVlLT5uYW1lLCAic3RlcCIpID09IDApCisJCQkgICAg eworCQkJICAgICAgZ2ZjX2N1cnJlbnRfbG9jdXMgPSBvbGRfbG9jOworCQkJICAgICAgZ2Zj X21hdGNoICgic3RlcCAoIik7CisJCQkgICAgICBoYXNfZXJyb3IgPSB0cnVlOworCQkJICAg IH0KKwkJCSAgYnJlYWs7CisJCQl9CisJCSAgICAgIGhhc19lcnJvciA9IHRydWU7CisJCSAg ICAgIGJyZWFrOworCQkgICAgfQorCQkgIGlmIChkdXBsaWNhdGVfbW9kIHx8IGR1cGxpY2F0 ZV9zdGVwKQorCQkgICAgeworCQkgICAgICBnZmNfZXJyb3IgKCJNdWx0aXBsZSAlcXMgbW9k aWZpZXJzIHNwZWNpZmllZCBhdCAlQyIsCisJCQkJIGR1cGxpY2F0ZV9tb2QgPyAibGluZWFy IiA6ICJzdGVwIik7CisJCSAgICAgIGhhc19lcnJvciA9IHRydWU7CisJCSAgICB9CisJCSAg aWYgKGhhc19lcnJvcikKKwkJICAgIHsKKwkJICAgICAgZ2ZjX2ZyZWVfb21wX25hbWVsaXN0 ICgqaGVhZCwgZmFsc2UpOworCQkgICAgICAqaGVhZCA9IE5VTEw7CisJCSAgICAgIGdvdG8g ZXJyb3I7CisJCSAgICB9CisJCX0KKwkgICAgICBlbHNlCiAJCXsKIAkJICBzdGVwID0gZ2Zj X2dldF9jb25zdGFudF9leHByIChCVF9JTlRFR0VSLAogCQkJCQkJZ2ZjX2RlZmF1bHRfaW50 ZWdlcl9raW5kLApAQCAtMjM3OSw5ICsyNDg5LDEyIEBAIGdmY19tYXRjaF9vbXBfY2xhdXNl cyAoZ2ZjX29tcF9jbGF1c2VzICoqY3AsIGNvbnN0IG9tcF9tYXNrIG1hc2ssCiAJCSAgbXB6 X3NldF9zaSAoc3RlcC0+dmFsdWUuaW50ZWdlciwgMSk7CiAJCX0KIAkgICAgICAoKmhlYWQp LT5leHByID0gc3RlcDsKLQkgICAgICBpZiAobGluZWFyX29wICE9IE9NUF9MSU5FQVJfREVG QVVMVCkKKwkgICAgICBpZiAobGluZWFyX29wICE9IE9NUF9MSU5FQVJfREVGQVVMVCB8fCBv bGRfbGluZWFyX21vZGlmaWVyKQogCQlmb3IgKGdmY19vbXBfbmFtZWxpc3QgKm4gPSAqaGVh ZDsgbjsgbiA9IG4tPm5leHQpCi0JCSAgbi0+dS5saW5lYXJfb3AgPSBsaW5lYXJfb3A7CisJ CSAgeworCQkgICAgbi0+dS5saW5lYXIub3AgPSBsaW5lYXJfb3A7CisJCSAgICBuLT51Lmxp bmVhci5vbGRfbW9kaWZpZXIgPSBvbGRfbGluZWFyX21vZGlmaWVyOworCQkgIH0KIAkgICAg ICBjb250aW51ZTsKIAkgICAgfQogCSAgaWYgKChtYXNrICYgT01QX0NMQVVTRV9MSU5LKQpA QCAtNzQzOSwyOCArNzU1MiwzOCBAQCByZXNvbHZlX29tcF9jbGF1c2VzIChnZmNfY29kZSAq Y29kZSwgZ2ZjX29tcF9jbGF1c2VzICpvbXBfY2xhdXNlcywKIAkJICAgIGJyZWFrOwogCQkg IGNhc2UgT01QX0xJU1RfTElORUFSOgogCQkgICAgaWYgKGNvZGUKLQkJCSYmIG4tPnUubGlu ZWFyX29wICE9IE9NUF9MSU5FQVJfREVGQVVMVAotCQkJJiYgbi0+dS5saW5lYXJfb3AgIT0g bGluZWFyX29wKQorCQkJJiYgbi0+dS5saW5lYXIub3AgIT0gT01QX0xJTkVBUl9ERUZBVUxU CisJCQkmJiBuLT51LmxpbmVhci5vcCAhPSBsaW5lYXJfb3ApCiAJCSAgICAgIHsKLQkJCWdm Y19lcnJvciAoIkxJTkVBUiBjbGF1c2UgbW9kaWZpZXIgdXNlZCBvbiBETyBvciBTSU1EIgot CQkJCSAgICIgY29uc3RydWN0IGF0ICVMIiwgJm4tPndoZXJlKTsKLQkJCWxpbmVhcl9vcCA9 IG4tPnUubGluZWFyX29wOworCQkJaWYgKG4tPnUubGluZWFyLm9sZF9tb2RpZmllcikKKwkJ CSAgeworCQkJICAgIGdmY19lcnJvciAoIkxJTkVBUiBjbGF1c2UgbW9kaWZpZXIgdXNlZCBv biBETyBvciAiCisJCQkJICAgICAgICJTSU1EIGNvbnN0cnVjdCBhdCAlTCIsICZuLT53aGVy ZSk7CisJCQkgICAgbGluZWFyX29wID0gbi0+dS5saW5lYXIub3A7CisJCQkgIH0KKwkJCWVs c2UgaWYgKG4tPnUubGluZWFyLm9wICE9IE9NUF9MSU5FQVJfVkFMKQorCQkJICB7CisJCQkg ICAgZ2ZjX2Vycm9yICgiTElORUFSIGNsYXVzZSBtb2RpZmllciBvdGhlciB0aGFuIFZBTCAi CisJCQkJICAgICAgICJ1c2VkIG9uIERPIG9yIFNJTUQgY29uc3RydWN0IGF0ICVMIiwKKwkJ CQkgICAgICAgJm4tPndoZXJlKTsKKwkJCSAgICBsaW5lYXJfb3AgPSBuLT51LmxpbmVhci5v cDsKKwkJCSAgfQogCQkgICAgICB9CiAJCSAgICBlbHNlIGlmIChvbXBfY2xhdXNlcy0+b3Jk ZXJlZGMpCiAJCSAgICAgIGdmY19lcnJvciAoIkxJTkVBUiBjbGF1c2Ugc3BlY2lmaWVkIHRv Z2V0aGVyIHdpdGggIgogCQkJCSAiT1JERVJFRCBjbGF1c2Ugd2l0aCBhcmd1bWVudCBhdCAl TCIsCiAJCQkJICZuLT53aGVyZSk7Ci0JCSAgICBlbHNlIGlmIChuLT51LmxpbmVhcl9vcCAh PSBPTVBfTElORUFSX1JFRgorCQkgICAgZWxzZSBpZiAobi0+dS5saW5lYXIub3AgIT0gT01Q X0xJTkVBUl9SRUYKIAkJCSAgICAgJiYgbi0+c3ltLT50cy50eXBlICE9IEJUX0lOVEVHRVIp CiAJCSAgICAgIGdmY19lcnJvciAoIkxJTkVBUiB2YXJpYWJsZSAlcXMgbXVzdCBiZSBJTlRF R0VSICIKIAkJCQkgImF0ICVMIiwgbi0+c3ltLT5uYW1lLCAmbi0+d2hlcmUpOwotCQkgICAg ZWxzZSBpZiAoKG4tPnUubGluZWFyX29wID09IE9NUF9MSU5FQVJfUkVGCi0JCQkgICAgICB8 fCBuLT51LmxpbmVhcl9vcCA9PSBPTVBfTElORUFSX1VWQUwpCisJCSAgICBlbHNlIGlmICgo bi0+dS5saW5lYXIub3AgPT0gT01QX0xJTkVBUl9SRUYKKwkJCSAgICAgIHx8IG4tPnUubGlu ZWFyLm9wID09IE9NUF9MSU5FQVJfVVZBTCkKIAkJCSAgICAgJiYgbi0+c3ltLT5hdHRyLnZh bHVlKQogCQkgICAgICBnZmNfZXJyb3IgKCJMSU5FQVIgZHVtbXkgYXJndW1lbnQgJXFzIHdp dGggVkFMVUUgIgogCQkJCSAiYXR0cmlidXRlIHdpdGggJXMgbW9kaWZpZXIgYXQgJUwiLAog CQkJCSBuLT5zeW0tPm5hbWUsCi0JCQkJIG4tPnUubGluZWFyX29wID09IE9NUF9MSU5FQVJf UkVGCisJCQkJIG4tPnUubGluZWFyLm9wID09IE9NUF9MSU5FQVJfUkVGCiAJCQkJID8gIlJF RiIgOiAiVVZBTCIsICZuLT53aGVyZSk7CiAJCSAgICBlbHNlIGlmIChuLT5leHByKQogCQkg ICAgICB7CmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MgYi9nY2Mv Zm9ydHJhbi90cmFucy1vcGVubXAuY2MKaW5kZXggYzZhNTg0ZDM2ZjIuLmRlMjdlZDUyYzAy IDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1vcGVubXAuY2MKKysrIGIvZ2NjL2Zv cnRyYW4vdHJhbnMtb3Blbm1wLmNjCkBAIC0yNzUxLDcgKzI3NTEsNyBAQCBnZmNfdHJhbnNf b21wX2NsYXVzZXMgKHN0bXRibG9ja190ICpibG9jaywgZ2ZjX29tcF9jbGF1c2VzICpjbGF1 c2VzLAogCQkJCQkJICAgICAgT01QX0NMQVVTRV9MSU5FQVIpOwogCQkJT01QX0NMQVVTRV9E RUNMIChub2RlKSA9IHQ7CiAJCQlvbXBfY2xhdXNlX2xpbmVhcl9raW5kIGtpbmQ7Ci0JCQlz d2l0Y2ggKG4tPnUubGluZWFyX29wKQorCQkJc3dpdGNoIChuLT51LmxpbmVhci5vcCkKIAkJ CSAgewogCQkJICBjYXNlIE9NUF9MSU5FQVJfREVGQVVMVDoKIAkJCSAgICBraW5kID0gT01Q X0NMQVVTRV9MSU5FQVJfREVGQVVMVDsKQEAgLTI3NjksNyArMjc2OSw4IEBAIGdmY190cmFu c19vbXBfY2xhdXNlcyAoc3RtdGJsb2NrX3QgKmJsb2NrLCBnZmNfb21wX2NsYXVzZXMgKmNs YXVzZXMsCiAJCQkgICAgZ2NjX3VucmVhY2hhYmxlICgpOwogCQkJICB9CiAJCQlPTVBfQ0xB VVNFX0xJTkVBUl9LSU5EIChub2RlKSA9IGtpbmQ7Ci0JCQlPTVBfQ0xBVVNFX0xJTkVBUl9P TERfTElORUFSX01PRElGSUVSIChub2RlKSA9IDE7CisJCQlPTVBfQ0xBVVNFX0xJTkVBUl9P TERfTElORUFSX01PRElGSUVSIChub2RlKQorCQkJICA9IG4tPnUubGluZWFyLm9sZF9tb2Rp ZmllcjsKIAkJCWlmIChsYXN0X3N0ZXBfZXhwciAmJiBsYXN0X3N0ZXAgPT0gTlVMTF9UUkVF KQogCQkJICB7CiAJCQkgICAgaWYgKCFkZWNsYXJlX3NpbWQpCmRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2MtYysrLWNvbW1vbi9nb21wL2xpbmVhci00LmMgYi9nY2MvdGVzdHN1aXRl L2MtYysrLWNvbW1vbi9nb21wL2xpbmVhci00LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjU5YzIyYjhmODZiCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vZ29tcC9saW5lYXItNC5jCkBAIC0wLDAgKzEsMzQgQEAK Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1mb3Blbm1wIiB9 ICovCisKK2ludCBzdGVwIChpbnQgeCwgaW50IHksIGludCB6KSB7IHJldHVybiB4ICsgeSAr IHo7IH0KKworaW50Citmb28gKGludCB4KQoreworICBpbnQgaTsKKyAgI3ByYWdtYSBvbXAg cGFyYWxsZWwgZm9yIGxpbmVhciAoeCA6IHN0ZXAgKHN0ZXAgKDEsIDIsIDMpKSkKKyAgZm9y IChpID0gMDsgaSA8IDY0OyBpKyspCisgICAgeCArPSA2OworICByZXR1cm4geDsKK30KKwor aW50CitiYXIgKGludCB4KQoreworICBpbnQgaTsKKyAgI3ByYWdtYSBvbXAgcGFyYWxsZWwg Zm9yIGxpbmVhciAoeCA6IHN0ZXAgKDEsIDIsIDMpKQkvKiB7IGRnLWVycm9yICJleHBlY3Rl ZCIgfSAqLworICBmb3IgKGkgPSAwOyBpIDwgNjQ7IGkrKykKKyAgICB4ICs9IDY7CisgIHJl dHVybiB4OworfQorCitpbnQKK2JhcjIgKGludCB4KQoreworICBpbnQgaTsKKyAgI3ByYWdt YSBvbXAgcGFyYWxsZWwgZm9yIGxpbmVhciAoeCA6IHN0ZXAgKDEsIDIsIDMpICogMSkKKyAg Zm9yIChpID0gMDsgaSA8IDY0OyBpKyspCisgICAgeCArPSA2OworICByZXR1cm4geDsKK30K ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItMi5m OTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbGluZWFyLTIuZjkwCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wNWYwMDdmZDVjMgotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItMi5m OTAKQEAgLTAsMCArMSwxMTIgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgeyBkZy1vcHRp b25zICItZm9wZW5tcCAtZmR1bXAtdHJlZS1vcmlnaW5hbCIgfQorCittb2R1bGUgbQorICBp bXBsaWNpdCBub25lICh0eXBlLCBleHRlcm5hbCkKKworICBpbnRlZ2VyIGkKKworICBpbnRl cmZhY2UKKyAgICBpbnRlZ2VyIGZ1bmN0aW9uIGJhciAoeCwgeSwgeikKKyAgICAgIGludGVn ZXIsIHZhbHVlIDo6IHgsIHksIHoKKyAgICAgICEkb21wIGRlY2xhcmUgc2ltZCBsaW5lYXIg KHggOiB2YWwsIHN0ZXAgKDEpKSBsaW5lYXIgKHkgOiBzdGVwICgyKSkKKyAgICBlbmQKKwor ICAgIGludGVnZXIgZnVuY3Rpb24gYmF6ICh4LCB5LCB6KQorICAgICAgaW50ZWdlciwgdmFs dWUgOjogeCwgeSwgegorICAgICAgISRvbXAgZGVjbGFyZSBzaW1kIGxpbmVhciAoeCA6IHN0 ZXAgKDEpLCB2YWwpCisgICAgZW5kCisKKyAgICBpbnRlZ2VyIGZ1bmN0aW9uIHF1eCAoeCwg dmFsKQorICAgICAgaW50ZWdlciwgdmFsdWUgOjogeCwgdmFsCisgICAgICAhJG9tcCBkZWNs YXJlIHNpbWQgbGluZWFyICh2YWwgKHgpIDogdmFsKSB1bmlmb3JtICh2YWwpCisgICAgZW5k CisKKyAgICBpbnRlZ2VyIGZ1bmN0aW9uIGNvcmdlICh4LCB2YWwpCisgICAgICBpbnRlZ2Vy LCB2YWx1ZSA6OiB4LCB2YWwKKyAgICAgICEkb21wIGRlY2xhcmUgc2ltZCBsaW5lYXIgKHgg OiB2YWwsIHN0ZXAgKHZhbCkpIHVuaWZvcm0gKHZhbCkKKyAgICBlbmQKKworICAgIGludGVn ZXIgZnVuY3Rpb24gZ3JhdWx0ICh4KQorICAgICAgaW50ZWdlciwgdmFsdWUgOjogeAorICAg ICAgISRvbXAgZGVjbGFyZSBzaW1kIGxpbmVhciAoeCA6IHZhbCkKKyAgICBlbmQKKworICAg IGludGVnZXIgZnVuY3Rpb24gc3RlcCAoeCkKKyAgICAgIGludGVnZXIsIHZhbHVlIDo6IHgK KyAgICBlbmQKKyAgZW5kIGludGVyZmFjZQorCitjb250YWlucworCitzdWJyb3V0aW5lIGZv byAoeCx5KQorICBpbnRlZ2VyIDo6IHgsIHkKKyAgaW50ZWdlciA6OiB2YWwKKworICB2YWwg PSAxCisKKyAgISRvbXAgc2ltZCBsaW5lYXIgKGk6IHN0ZXAgKDMpKQorICBkbyBpID0gMCwg MzIsIDMKKyAgZW5kIGRvCisKKyAgISRvbXAgc2ltZCBsaW5lYXIgKGk6IHZhbCwgc3RlcCAo MykpCisgIGRvIGkgPSAwLCAzMiwgMworICBlbmQgZG8KKworICAhJG9tcCBzaW1kIGxpbmVh ciAoeDogc3RlcCAoeSArIDEpKQorICBkbyBpID0gMCwgOQorICAgIHggPSB4ICsgeSArIDEK KyAgZW5kIGRvCisKKyAgISRvbXAgc2ltZCBsaW5lYXIgKHg6IHN0ZXAgKHkgKyAxKSwgdmFs KQorICBkbyBpID0gMCwgOQorICAgIHggPSB4ICsgeSArIDEKKyAgZW5kIGRvCisKKyAgISRv bXAgcGFyYWxsZWwgZG8gbGluZWFyICh4OiBzdGVwICh5ICsgMSkpCisgIGRvIGkgPSAwLCA5 CisgICAgeCA9IHggKyB5ICsgMQorICBlbmQgZG8KKworICAhJG9tcCBwYXJhbGxlbCBkbyBs aW5lYXIgKHg6IHZhbCwgc3RlcCAoeSArIDEpKQorICBkbyBpID0gMCwgOQorICAgIHggPSB4 ICsgeSArIDEKKyAgZW5kIGRvCisKKyAgISRvbXAgcGFyYWxsZWwgZG8gc2ltZCBsaW5lYXIg KGk6IHN0ZXAgKDMpKQorICBkbyBpID0gMCwgMzIsIDMKKyAgZW5kIGRvCisKKyAgISRvbXAg cGFyYWxsZWwgZG8gc2ltZCBsaW5lYXIgKGk6IHN0ZXAgKDMpLCB2YWwpCisgIGRvIGkgPSAw LCAzMiwgMworICBlbmQgZG8KKworICAhJG9tcCBwYXJhbGxlbCBkbyBzaW1kIGxpbmVhciAo eDogc3RlcCAoeSArIDEpKQorICBkbyBpID0gMCwgOQorICAgIHggPSB4ICsgeSArIDEKKyAg ZW5kIGRvCisKKyAgISRvbXAgcGFyYWxsZWwgZG8gc2ltZCBsaW5lYXIgKHg6IHZhbCwgc3Rl cCAoeSArIDEpKQorICBkbyBpID0gMCwgOQorICAgIHggPSB4ICsgeSArIDEKKyAgZW5kIGRv CisKKyAgISRvbXAgcGFyYWxsZWwgZG8gc2ltZCBsaW5lYXIgKGk6IHZhbCArIDApCisgIGRv IGkgPSAwLCA5CisgIGVuZCBkbworCisgICEkb21wIHBhcmFsbGVsIGRvIHNpbWQgbGluZWFy IChpOiBzdGVwICgxKSAqIDEpCisgIGRvIGkgPSAwLCA5CisgIGVuZCBkbworZW5kCitlbmQg bW9kdWxlCisKKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIjcHJhZ21h IG9tcCBwYXJhbGxlbCIgOCAib3JpZ2luYWwiIH0gfQorISB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAtdGltZXMgIiNwcmFnbWEgb21wIGZvciBub3dhaXQiIDYgIm9yaWdpbmFsIiB9 IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIjcHJhZ21hIG9tcCBm b3IgbGluZWFyXFwoeDpEXFwuXFswLTlcXStcXCkgbm93YWl0IiAxICJvcmlnaW5hbCIgfSB9 CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiI3ByYWdtYSBvbXAgZm9y IGxpbmVhclxcKHg6dmFsLHN0ZXBcXChEXFwuXFswLTlcXStcXClcXCkgbm93YWl0IiAxICJv cmlnaW5hbCIgfSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiI3By YWdtYSBvbXAgc2ltZCBsaW5lYXJcXChjb3VudFxcLlxbMC05XF06MVxcKSBsaW5lYXJcXChp OjNcXCkiIDIgIm9yaWdpbmFsIiB9IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICIjcHJhZ21hIG9tcCBzaW1kIGxpbmVhclxcKGNvdW50XFwuXFswLTlcXToxXFwp IGxpbmVhclxcKGk6dmFsLHN0ZXBcXCgzXFwpXFwpIiAyICJvcmlnaW5hbCIgfSB9CishIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiI3ByYWdtYSBvbXAgc2ltZCBsaW5l YXJcXChpOjFcXCkgbGluZWFyXFwoeDpEXFwuXFswLTlcXStcXCkiIDIgIm9yaWdpbmFsIiB9 IH0KKyEgeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICIjcHJhZ21hIG9tcCBz aW1kIGxpbmVhclxcKGk6MVxcKSBsaW5lYXJcXCh4OnZhbCxzdGVwXFwoRFxcLlxbMC05XF0r XFwpXFwpIiAyICJvcmlnaW5hbCIgfSB9CishIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cC10aW1lcyAiI3ByYWdtYSBvbXAgc2ltZCBsaW5lYXJcXChpOkRcXC5cWzAtOVxdK1xcKSIg MiAib3JpZ2luYWwiIH0gfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9nb21wL2xpbmVhci0zLmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9s aW5lYXItMy5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRl ZTg3YjFhODk5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9nb21wL2xpbmVhci0zLmY5MApAQCAtMCwwICsxLDM5IEBACishIHsgZGctZG8gY29tcGls ZSB9CishIHsgZGctb3B0aW9ucyAiLWZvcGVubXAiIH0KKworbW9kdWxlIG0yCisgIGltcGxp Y2l0IG5vbmUgKHR5cGUsIGV4dGVybmFsKQorCisgIGludGVnZXIgOjogdmFsCisKK2NvbnRh aW5zCitpbnRlZ2VyIGZ1bmN0aW9uIHN0ZXAgKHgpCisgIGludGVnZXIsIHZhbHVlIDo6IHgK K2VuZAorc3Vicm91dGluZSBmb28oeCkKKyAgaW50ZWdlciwgdmFsdWUgOjogeAorICAhJG9t cCBkZWNsYXJlIHNpbWQgbGluZWFyICh2YWwgKHgpIDogc3RlcCAoMSkpCSEgeyBkZy1lcnJv ciAicmVxdWlyZXMgYSBjb25zdGFudCBpbnRlZ2VyIGxpbmVhci1zdGVwIGV4cHJlc3Npb24g b3IgZHVtbXkgYXJndW1lbnQiIH0KK2VuZAorZW5kIG1vZHVsZSBtMgorCisKK21vZHVsZSBt CisgIGltcGxpY2l0IG5vbmUgKHR5cGUsIGV4dGVybmFsKQorCisgIGludGVnZXIgOjogdmFs CisKK2NvbnRhaW5zCitpbnRlZ2VyIGZ1bmN0aW9uIHN0ZXAgKHgpCisgIGludGVnZXIsIHZh bHVlIDo6IHgKKyAgISRvbXAgZGVjbGFyZSBzaW1kIGxpbmVhciAodmFsICh4KSA6IHN0ZXAg KDEpKQkhIHsgZGctZXJyb3IgIkZhaWxlZCB0byBtYXRjaCBjbGF1c2UiIH0KK2VuZAorCitp bnRlZ2VyIGZ1bmN0aW9uIGJhciAoeCwgeSwgeikKKyAgaW50ZWdlciwgdmFsdWUgOjogeCwg eSwgegorICAhJG9tcCBkZWNsYXJlIHNpbWQgbGluZWFyICh2YWwgKHgpIDogdmFsKQkJISB7 IGRnLWVycm9yICJyZXF1aXJlcyBhIGNvbnN0YW50IGludGVnZXIgbGluZWFyLXN0ZXAgZXhw cmVzc2lvbiBvciBkdW1teSBhcmd1bWVudCIgfQorZW5kCisKK2ludGVnZXIgZnVuY3Rpb24g YmF6ICh4LCB5LCB6KQorICBpbnRlZ2VyLCB2YWx1ZSA6OiB4LCB5LCB6CitlbmQKK2VuZCBt b2R1bGUgbQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2xp bmVhci00LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItNC5m OTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFjNTMyZjgxMDAw Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2xp bmVhci00LmY5MApAQCAtMCwwICsxLDEwMiBAQAorISB7IGRnLWRvIGNvbXBpbGUgfQorISB7 IGRnLW9wdGlvbnMgIi1mb3Blbm1wIiB9CisKK21vZHVsZSBtCitpbXBsaWNpdCBub25lCisK K2ludGVnZXIgOjogaQorCitpbnRlcmZhY2UKKyAgaW50ZWdlciBmdW5jdGlvbiBiYXIgKHgs ICB5LCB6KQorICAgIGludGVnZXIgOjogeCwgeQorICAgIGludGVnZXIsIHZhbHVlIDo6IHoK KyAgICAhJG9tcCBkZWNsYXJlIHNpbWQgbGluZWFyICh4IDogcmVmLCBzdGVwICgxKSkgbGlu ZWFyICh5IDogc3RlcCAoMiksIHV2YWwpCisgIGVuZAorCisgIGludGVnZXIgZnVuY3Rpb24g YmF6ICh4LCB5LCB6KQorICAgIGludGVnZXIgOjogeAorICAgIGludGVnZXIsIHZhbHVlIDo6 IHksIHoKKyAgICAhJG9tcCBkZWNsYXJlIHNpbWQgbGluZWFyICh4IDogc3RlcCAoMSksIHV2 YWwpCisgIGVuZAorCisgIGludGVnZXIgZnVuY3Rpb24gcXV4ICh4LCByZWYpCisgICAgaW50 ZWdlciA6OiB4CisgICAgaW50ZWdlciwgdmFsdWUgOjogcmVmCisgICAgISRvbXAgZGVjbGFy ZSBzaW1kIGxpbmVhciAocmVmICh4KSA6IHJlZikgdW5pZm9ybSAocmVmKQorICBlbmQKKwor ICBpbnRlZ2VyIGZ1bmN0aW9uIGNvcmdlICh4LCByZWYpCisgICAgaW50ZWdlciA6OiB4Cisg ICAgaW50ZWdlciwgdmFsdWUgOjogcmVmCisgICAgISRvbXAgZGVjbGFyZSBzaW1kIGxpbmVh ciAoeCA6IHJlZiwgc3RlcCAocmVmKSkgdW5pZm9ybSAocmVmKQorICBlbmQKKworICBpbnRl Z2VyIGZ1bmN0aW9uIGdyYXVsdCAoeCkKKyAgICBpbnRlZ2VyIDo6IHgKKyAgICAhJG9tcCBk ZWNsYXJlIHNpbWQgbGluZWFyICh4IDogcmVmKQorICBlbmQKKworICBpbnRlZ2VyIGZ1bmN0 aW9uIHdhbGRvICh4KQorICAgIGludGVnZXIgOjogeAorICAgICEkb21wIGRlY2xhcmUgc2lt ZCBsaW5lYXIgKHggOiB1dmFsKQorICBlbmQKK2VuZCBpbnRlcmZhY2UKKworY29udGFpbnMK KworaW50ZWdlciBmdW5jdGlvbiBzdGVwICh4KQorICBpbnRlZ2VyLCB2YWx1ZSA6OiB4Cisg IHN0ZXAgPSB4CitlbmQKKworc3Vicm91dGluZSBmb28gKHgsIHkpCisgIGludGVnZXIgOjog eCwgeQorICAhJG9tcCBzaW1kIGxpbmVhciAoeDogc3RlcCAoeSArIDEpKQorICBkbyBpID0g MCwgOQorICAgIHggPSB4ICsgeSArIDEKKyAgZW5kIGRvCisKKyAgISRvbXAgc2ltZCBsaW5l YXIgKHg6IHZhbCwgc3RlcCAoeSArIDEpKQorICBkbyBpID0gMCwgOQorICAgIHggPSB4ICsg eSArIDEKKyAgZW5kIGRvCisKKyAgISRvbXAgcGFyYWxsZWwgZG8gbGluZWFyICh4OiBzdGVw ICh5ICsgMSkpCisgIGRvIGkgPSAwLCA5CisgICAgeCA9IHggKyB5ICsgMQorICBlbmQgZG8K KworICAhJG9tcCBwYXJhbGxlbCBkbyBsaW5lYXIgKHg6IHN0ZXAgKHkgKyAxKSwgdmFsKQor ICBkbyBpID0gMCwgOQorICAgIHggPSB4ICsgeSArIDEKKyAgZW5kIGRvCisKKyAgISRvbXAg cGFyYWxsZWwgZG8gc2ltZCBsaW5lYXIgKHg6IHN0ZXAgKHkgKyAxKSkKKyAgZG8gaSA9IDAs IDkKKyAgICB4ID0geCArIHkgKyAxCisgIGVuZCBkbworCisgICEkb21wIHBhcmFsbGVsIGRv IHNpbWQgbGluZWFyICh4OiB2YWwsIHN0ZXAgKHkgKyAxKSkKKyAgZG8gaSA9IDAsIDkKKyAg ICB4ID0geCArIHkgKyAxCisgIGVuZCBkbworCisgICEkb21wIHBhcmFsbGVsIGRvIHNpbWQg bGluZWFyICh4OiBzdGVwICgxKSArIDApCisgIGRvIGkgPSAwLCA5CisgICAgeCA9IHggKyBz dGVwICgxKSArIDAKKyAgZW5kIGRvCisKKyAgYmxvY2sKKyAgICBpbnRlZ2VyLCBwYXJhbWV0 ZXIgOjogcmVmID0gMSwgdXZhbCA9IDIKKyAgICAhJG9tcCBwYXJhbGxlbCBkbyBzaW1kIGxp bmVhciAoeDogcmVmICsgMCkKKyAgICBkbyBpID0gMCwgOQorICAgICAgeCA9IHggKyByZWYg KyAwCisgICAgZW5kIGRvCisKKyAgICAhJG9tcCBwYXJhbGxlbCBkbyBzaW1kIGxpbmVhciAo eDogdXZhbCAqIDEpCisgICAgZG8gaSA9IDAsIDkKKyAgICAgIHggPSB4ICsgdXZhbAorICAg IGVuZCBkbworICBlbmQgYmxvY2sKK2VuZAorZW5kCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2dmb3J0cmFuLmRnL2dvbXAvbGluZWFyLTUuZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9y dHJhbi5kZy9nb21wL2xpbmVhci01LmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uYjAwNDkyZDRiNTgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1 aXRlL2dmb3J0cmFuLmRnL2dvbXAvbGluZWFyLTUuZjkwCkBAIC0wLDAgKzEsNDMgQEAKKyEg eyBkZy1kbyBjb21waWxlIH0KKyEgeyBkZy1vcHRpb25zICItZm9wZW5tcCIgfQorCittb2R1 bGUgbQoraW1wbGljaXQgbm9uZQoraW50ZWdlciA6OiBpCisKK2NvbnRhaW5zCisKK3N1YnJv dXRpbmUgZm9vICh4LCB5KQorICBpbnRlZ2VyIDo6IHgsIHkKKworICAhJG9tcCBzaW1kIGxp bmVhciAoeDogc3RlcCAoeSArIDEpLCByZWYpCQkhIHsgZGctZXJyb3IgIkxJTkVBUiBjbGF1 c2UgbW9kaWZpZXIgb3RoZXIgdGhhbiBWQUwgdXNlZCBvbiBETyBvciBTSU1EIGNvbnN0cnVj dCIgfQorICBkbyBpID0gMCwgMTAKKyAgICB4ID0geCArIHkgKyAxCisgIGVuZCBkbworCisg ICEkb21wIHNpbWQgbGluZWFyICh4OiB1dmFsLCBzdGVwICh5ICsgMSkpCQkhIHsgZGctZXJy b3IgIkxJTkVBUiBjbGF1c2UgbW9kaWZpZXIgb3RoZXIgdGhhbiBWQUwgdXNlZCBvbiBETyBv ciBTSU1EIGNvbnN0cnVjdCIgfQorICBkbyBpID0gMCwgMTAKKyAgICB4ID0geCArIHkgKyAx CisgIGVuZCBkbworCisgICEkb21wIHBhcmFsbGVsIGRvIGxpbmVhciAoeDogcmVmLCBzdGVw ICh5ICsgMSkpCSEgeyBkZy1lcnJvciAiTElORUFSIGNsYXVzZSBtb2RpZmllciBvdGhlciB0 aGFuIFZBTCB1c2VkIG9uIERPIG9yIFNJTUQgY29uc3RydWN0IiB9CisgIGRvIGkgPSAwLCAx MAorICAgIHggPSB4ICsgeSArIDEKKyAgZW5kIGRvCisKKyAgISRvbXAgcGFyYWxsZWwgZG8g bGluZWFyICh4OiBzdGVwICh5ICsgMSksIHV2YWwpCSEgeyBkZy1lcnJvciAiTElORUFSIGNs YXVzZSBtb2RpZmllciBvdGhlciB0aGFuIFZBTCB1c2VkIG9uIERPIG9yIFNJTUQgY29uc3Ry dWN0IiB9CisgIGRvIGkgPSAwLCAxMAorICAgIHggPSB4ICsgeSArIDEKKyAgZW5kIGRvCisK KyAgISRvbXAgcGFyYWxsZWwgZG8gc2ltZCBsaW5lYXIgKHg6IHN0ZXAgKHkgKyAxKSwgcmVm KQkhIHsgZGctZXJyb3IgIkxJTkVBUiBjbGF1c2UgbW9kaWZpZXIgb3RoZXIgdGhhbiBWQUwg dXNlZCBvbiBETyBvciBTSU1EIGNvbnN0cnVjdCIgfQorICBkbyBpID0gMCwgMTAKKyAgICB4 ID0geCArIHkgKyAxCisgIGVuZCBkbworCisgICEkb21wIHBhcmFsbGVsIGRvIHNpbWQgbGlu ZWFyICh4OiB1dmFsLCBzdGVwICh5ICsgMSkpCSEgeyBkZy1lcnJvciAiTElORUFSIGNsYXVz ZSBtb2RpZmllciBvdGhlciB0aGFuIFZBTCB1c2VkIG9uIERPIG9yIFNJTUQgY29uc3RydWN0 IiB9CisgIGRvIGkgPSAwLCAxMAorICAgIHggPSB4ICsgeSArIDEKKyAgZW5kIGRvCitlbmQK K2VuZApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2xpbmVh ci02LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItNi5mOTAK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU3NjkzYmE2ZGUxCi0t LSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2xpbmVh ci02LmY5MApAQCAtMCwwICsxLDU0IEBACishIHsgZGctZG8gY29tcGlsZSB9CishIHsgZGct b3B0aW9ucyAiLWZvcGVubXAiIH0KKworbW9kdWxlIG0KK2ltcGxpY2l0IG5vbmUKK2ludGVn ZXIsIHBhcmFtZXRlciA6OiB2YWwgPSAxCitpbnRlZ2VyLCBwYXJhbWV0ZXIgOjogcmVmID0g MgoraW50ZWdlciwgcGFyYW1ldGVyIDo6IHV2YWwgPSAzCisKK2ludGVyZmFjZQorICBpbnRl Z2VyIGZ1bmN0aW9uIGZvbyAoeCwgeSwgeikKKyAgICBpbXBvcnQKKyAgICBpbXBsaWNpdCBu b25lCisgICAgaW50ZWdlciwgdmFsdWUgOjogeAorICAgIGludGVnZXIgOjogeSwgegorICAg ICEkb21wIGRlY2xhcmUgc2ltZCBsaW5lYXIgKHZhbCAoeCkgOiBzdGVwICgxKSkgbGluZWFy IChyZWYgKHkpIDogc3RlcCAoMikpIGxpbmVhciAodXZhbCAoeikgOiBzdGVwICgzKSkKKwor ISBTVEVQIGlzIGEgZnVuY3Rpb24gLSB0aHVzOgorISB7IGRnLWVycm9yICIneCcgaW4gTElO RUFSIGNsYXVzZSBhdCAuMS4gcmVxdWlyZXMgYSBjb25zdGFudCBpbnRlZ2VyIGxpbmVhci1z dGVwIGV4cHJlc3Npb24gb3IgZHVtbXkgYXJndW1lbnQgc3BlY2lmaWVkIGluIFVOSUZPUk0g Y2xhdXNlIiAiIiB7IHRhcmdldCAqLSotKiB9IC4tMyB9CishIHsgZGctZXJyb3IgIid5JyBp biBMSU5FQVIgY2xhdXNlIGF0IC4xLiByZXF1aXJlcyBhIGNvbnN0YW50IGludGVnZXIgbGlu ZWFyLXN0ZXAgZXhwcmVzc2lvbiBvciBkdW1teSBhcmd1bWVudCBzcGVjaWZpZWQgaW4gVU5J Rk9STSBjbGF1c2UiICIiIHsgdGFyZ2V0ICotKi0qIH0gLi00IH0KKyEgeyBkZy1lcnJvciAi J3onIGluIExJTkVBUiBjbGF1c2UgYXQgLjEuIHJlcXVpcmVzIGEgY29uc3RhbnQgaW50ZWdl ciBsaW5lYXItc3RlcCBleHByZXNzaW9uIG9yIGR1bW15IGFyZ3VtZW50IHNwZWNpZmllZCBp biBVTklGT1JNIGNsYXVzZSIgIiIgeyB0YXJnZXQgKi0qLSogfSAuLTUgfQorCisgIGVuZAor CisgIGludGVnZXIgZnVuY3Rpb24gYmFyICh4LCB5LCB6KQorICAgIGltcG9ydAorICAgIGlt cGxpY2l0IG5vbmUKKyAgICBpbnRlZ2VyLCB2YWx1ZSA6OiB4CisgICAgaW50ZWdlciA6OiB5 LCB6CisgICAgISRvbXAgZGVjbGFyZSBzaW1kIGxpbmVhciAodmFsICh4KSA6IHZhbCkgbGlu ZWFyIChyZWYgKHkpIDogcmVmKSBsaW5lYXIgKHV2YWwgKHopIDogdXZhbCkKKyAgZW5kCisK KyAgaW50ZWdlciBmdW5jdGlvbiBiYXogKHgsIHksIHopCisgICAgaW1wb3J0CisgICAgaW1w bGljaXQgbm9uZQorICAgIGludGVnZXIsIHZhbHVlIDo6IHgKKyAgICBpbnRlZ2VyIDo6IHks IHoKKyAgICAhJG9tcCBkZWNsYXJlIHNpbWQgbGluZWFyICh2YWwgKHgpIDogcmVmKSBsaW5l YXIgKHJlZiAoeSkgOiB1dmFsKSBsaW5lYXIgKHV2YWwgKHopIDogdmFsKQorICBlbmQKKwor ICBpbnRlZ2VyIGZ1bmN0aW9uIHF1eCAoeCwgeSwgeikKKyAgICBpbXBvcnQKKyAgICBpbXBs aWNpdCBub25lCisgICAgaW50ZWdlciwgdmFsdWUgOjogeAorICAgIGludGVnZXIgOjogeSwg egorICAgICEkb21wIGRlY2xhcmUgc2ltZCBsaW5lYXIgKHZhbCAoeCkgOiB1dmFsKSBsaW5l YXIgKHJlZiAoeSkgOiB2YWwpIGxpbmVhciAodXZhbCAoeikgOiByZWYpCisgIGVuZAorZW5k IGludGVyZmFjZQorY29udGFpbnMKKyAgaW50ZWdlciBmdW5jdGlvbiBzdGVwICh4KQorICAg IGludGVnZXIsIHZhbHVlIDo6IHgKKyAgICAgc3RlcCA9IHgKKyAgZW5kCitlbmQgbW9kdWxl CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbGluZWFyLTcu ZjkwIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2xpbmVhci03LmY5MApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWU3NjNhOTJjYTYKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL2dvbXAvbGluZWFyLTcu ZjkwCkBAIC0wLDAgKzEsMjcgQEAKKyEgeyBkZy1kbyBjb21waWxlIH0KKyEgeyBkZy1vcHRp b25zICItZm9wZW5tcCIgfQorCittb2R1bGUgbQorICBpbXBsaWNpdCBub25lICh0eXBlLCBl eHRlcm5hbCkKKworICBpbnRlZ2VyIGkKKworICBpbnRlcmZhY2UKKyAgICBpbnRlZ2VyIGZ1 bmN0aW9uIHMxICh4LCB5LCB6KQorICAgICAgaW50ZWdlciwgdmFsdWUgOjogeCwgeSwgegor ICAgICAgISRvbXAgZGVjbGFyZSBzaW1kIGxpbmVhciAoeCA6IHZhbCwgc3RlcCAoMSksIHZh bCkgICEgeyBkZy1lcnJvciAiTXVsdGlwbGUgJ2xpbmVhcicgbW9kaWZpZXJzIHNwZWNpZmll ZCIgfQorICAgIGVuZAorCisgICAgaW50ZWdlciBmdW5jdGlvbiBzMiAoeCwgeSwgeikKKyAg ICAgIGludGVnZXIsIHZhbHVlIDo6IHgsIHksIHoKKyAgICAgICEkb21wIGRlY2xhcmUgc2lt ZCBsaW5lYXIgKHggOiB2YWwsIHN0ZXAgKDEpLCBzdGVwKDIpKSAgISB7IGRnLWVycm9yICJN dWx0aXBsZSAnc3RlcCcgbW9kaWZpZXJzIHNwZWNpZmllZCIgfQorICAgIGVuZAorCisgICAg aW50ZWdlciBmdW5jdGlvbiBzMyAoeCwgeSwgeikKKyAgICAgIGludGVnZXIsIHZhbHVlIDo6 IHgsIHksIHoKKyAgICAgICEkb21wIGRlY2xhcmUgc2ltZCBsaW5lYXIgKHggOiB2YWwsIHJl Ziwgc3RlcCgyKSkgICEgeyBkZy1lcnJvciAiTXVsdGlwbGUgJ2xpbmVhcicgbW9kaWZpZXJz IHNwZWNpZmllZCIgfQorICAgIGVuZAorCisgIGVuZCBpbnRlcmZhY2UKKworZW5kIG1vZHVs ZQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2xpbmVhci04 LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvZ29tcC9saW5lYXItOC5mOTAKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQyM2RkODRiM2VkCi0tLSAv ZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9nb21wL2xpbmVhci04 LmY5MApAQCAtMCwwICsxLDQ0IEBACishIHsgZGctZG8gY29tcGlsZSB9CishIHsgZGctb3B0 aW9ucyAiLWZvcGVubXAiIH0KKworbW9kdWxlIG0KKyAgaW1wbGljaXQgbm9uZSAodHlwZSwg ZXh0ZXJuYWwpCisKKyAgaW50ZXJmYWNlCisgICAgaW50ZWdlciBmdW5jdGlvbiBzdGVwICh4 LCB5LCB6KQorICAgICAgaW50ZWdlciA6OiB4LCB5LCB6CisgICAgZW5kIGZ1bmN0aW9uIHN0 ZXAKKyAgZW5kIGludGVyZmFjZQorCitjb250YWlucworCitpbnRlZ2VyIGZ1bmN0aW9uIGZv byAoeCkKKyAgaW50ZWdlciwgdmFsdWUgOjogeAorICBpbnRlZ2VyIDo6IGkKKyAgISRvbXAg cGFyYWxsZWwgZG8gbGluZWFyICh4IDogc3RlcCAoc3RlcCAoMSwgMiwgMykpKQorICBkbyBp ID0gMCwgNjMKKyAgICB4ID0geCArIDYKKyAgZW5kIGRvCisgIGZvbyA9IHgKK2VuZAorCitp bnRlZ2VyIGZ1bmN0aW9uIGJhciAoeCkKKyAgaW50ZWdlciwgdmFsdWUgOjogeAorICBpbnRl Z2VyIDo6IGkKKyAgISRvbXAgcGFyYWxsZWwgZG8gbGluZWFyICh4IDogc3RlcCAoMSwgMiwg MykpCSEgeyBkZy1lcnJvciAiNDA6IEludmFsaWQgY2hhcmFjdGVyIGluIG5hbWUiIH0KKyAg ZG8gaSA9IDAsIDYzCisgICAgeCA9IHggKyA2CisgIGVuZCBkbworICBiYXIgPSB4CitlbmQK KworaW50ZWdlciBmdW5jdGlvbiBiYXIyICh4KQorICBpbnRlZ2VyLCB2YWx1ZSA6OiB4Cisg IGludGVnZXIgOjogaQorICAhJG9tcCBwYXJhbGxlbCBkbyBsaW5lYXIgKHggOiBzdGVwICgx LCAyLCAzKSAqIDEpCisgIGRvIGkgPSAwLCA2MworICAgIHggPSB4ICsgNgorICBlbmQgZG8K KyAgYmFyMiA9IHgKK2VuZAorZW5kIG1vZHVsZQpkaWZmIC0tZ2l0IGEvbGliZ29tcC9saWJn b21wLnRleGkgYi9saWJnb21wL2xpYmdvbXAudGV4aQppbmRleCAzOTQyNmZmN2ZiZi4uZTg4 ZmU4OWE1YjEgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvbGliZ29tcC50ZXhpCisrKyBiL2xpYmdv bXAvbGliZ29tcC50ZXhpCkBAIC0zNjMsNyArMzYzLDcgQEAgdG8gYWRkcmVzcyBvZiBtYXRj aGluZyBtYXBwZWQgbGlzdCBpdGVtIHBlciA1LjEsIFNlY3QuIDIuMjEuNy4yIEB0YWIgTiBA dGFiCiBAaXRlbSBDbGF1c2VzIG9uIEBjb2Rle2VuZH0gZGlyZWN0aXZlIGNhbiBiZSBvbiBk aXJlY3RpdmUgQHRhYiBOIEB0YWIKIEBpdGVtIERlcHJlY2F0aW9uIG9mIG5vLWFyZ3VtZW50 IEBjb2Rle2Rlc3Ryb3l9IGNsYXVzZSBvbiBAY29kZXtkZXBvYmp9CiAgICAgICBAdGFiIE4g QHRhYgotQGl0ZW0gQGNvZGV7bGluZWFyfSBjbGF1c2Ugc3ludGF4IGNoYW5nZXMgYW5kIEBj b2Rle3N0ZXB9IG1vZGlmaWVyIEB0YWIgUCBAdGFiIG9ubHkgQy9DKysKK0BpdGVtIEBjb2Rl e2xpbmVhcn0gY2xhdXNlIHN5bnRheCBjaGFuZ2VzIGFuZCBAY29kZXtzdGVwfSBtb2RpZmll ciBAdGFiIFkgQHRhYgogQGl0ZW0gRGVwcmVjYXRpb24gb2YgbWludXMgb3BlcmF0b3IgZm9y IHJlZHVjdGlvbnMgQHRhYiBOIEB0YWIKIEBpdGVtIERlcHJlY2F0aW9uIG9mIHNlcGFyYXRp bmcgQGNvZGV7bWFwfSBtb2RpZmllcnMgd2l0aG91dCBjb21tYSBAdGFiIE4gQHRhYgogQGl0 ZW0gQGNvZGV7ZGVjbGFyZSBtYXBwZXJ9IHdpdGggaXRlcmF0b3IgYW5kIEBjb2Rle3ByZXNl bnR9IG1vZGlmaWVycwo= --------------L0M9GKVGrUzGmsYXFqCDDnVD--