From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Ekaitz Zarraga Newsgroups: gmane.lisp.guile.bugs Subject: bug#73188: PEG parser does not support full PEG grammar Date: Mon, 14 Oct 2024 16:00:02 +0200 Message-ID: References: <78a81bc5-cd0d-0506-185b-c733c66e96ae@elenq.tech> <20240912205751.23724-1-ekaitz@elenq.tech> <87cyk3rbkc.fsf_-_@gnu.org> <168e01eb-ac58-4d39-a960-46624e65edde@elenq.tech> <875xpu3nl7.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------3N0zblOVoqBRwSKdoRkb0HaK" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35304"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 73188@debbugs.gnu.org To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-X-From: bug-guile-bounces+guile-bugs=m.gmane-mx.org@gnu.org Mon Oct 14 20:48:16 2024 Return-path: Envelope-to: guile-bugs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1t0Q75-00092c-Mi for guile-bugs@m.gmane-mx.org; Mon, 14 Oct 2024 20:48:16 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1t0Q6f-0003L7-5i; Mon, 14 Oct 2024 14:47:49 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t0Q6b-0003Cv-PP for bug-guile@gnu.org; Mon, 14 Oct 2024 14:47:46 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1t0Q6b-0000mj-6o for bug-guile@gnu.org; Mon, 14 Oct 2024 14:47:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=In-Reply-To:From:References:MIME-Version:Date:To:Subject; bh=kd31iNZI3bBz39wo4CN+ofN8A4B+CopF+NQ/rk1YjxI=; b=XqRXfD5GAwz+fvGmgKk+gUqTvP/L/deIG2jqL2EEBQLg0hDKXtsXkBQuNZobc+hqinFtoDURIlgiUfoiixFI3CHQr5loDT/Uabk52b1orRQf+SDqVEdrJM7ZS+oqV7r2xTCUcNMpJXl5EeW+AiB0jbEqydzL/vCgu39attYbdIWAjig5Ne9ZygxG3CcwH5/arzVUi4KAyHLD8MGZ7uwLZBXyNizmMAMbIqcOaryOiUcs/DknQaS12El1RB2wU9+eazS6EeXvJuFbq2At29DlqXISlXJOPrguLz3rTc7HzLp6YU4cAx86V4qO52LoNX+WjF6bJMTUJhMEwg3uwm2Bxg==; Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1t0Q6s-00085q-1u for bug-guile@gnu.org; Mon, 14 Oct 2024 14:48:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Ekaitz Zarraga Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Mon, 14 Oct 2024 18:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 73188 X-GNU-PR-Package: guile Original-Received: via spool by 73188-submit@debbugs.gnu.org id=B73188.172893163631044 (code B ref 73188); Mon, 14 Oct 2024 18:48:02 +0000 Original-Received: (at 73188) by debbugs.gnu.org; 14 Oct 2024 18:47:16 +0000 Original-Received: from localhost ([127.0.0.1]:44353 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t0Q66-00084c-Ds for submit@debbugs.gnu.org; Mon, 14 Oct 2024 14:47:16 -0400 Original-Received: from dane.soverin.net ([185.233.34.30]:48761) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1t0Q62-000843-BS for 73188@debbugs.gnu.org; Mon, 14 Oct 2024 14:47:13 -0400 Original-Received: from smtp.soverin.net (unknown [10.10.4.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dane.soverin.net (Postfix) with ESMTPS id 4XRzPw4FPFz2xkF; Mon, 14 Oct 2024 14:00:04 +0000 (UTC) Original-Received: from smtp.soverin.net (smtp.soverin.net [10.10.4.99]) by soverin.net (Postfix) with ESMTPSA id 4XRzPv6bfpz3V; Mon, 14 Oct 2024 14:00:03 +0000 (UTC) Authentication-Results: smtp.soverin.net; dkim=pass (2048-bit key; unprotected) header.d=elenq.tech header.i=@elenq.tech header.a=rsa-sha256 header.s=soverin1 header.b=YVMXsuiL; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=elenq.tech; s=soverin1; t=1728914404; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; bh=kd31iNZI3bBz39wo4CN+ofN8A4B+CopF+NQ/rk1YjxI=; b=YVMXsuiLlDYw6cLBzxg7gbPVLKVPDEJEqAt5Uxi5ohVTJStO1EdhVnzdmBb4krnJHhi2j+ jO3pEZWknj2KX07IIhrq4YDfOqaM5q7OXxzXRyiHRpKe36qGD+gKZ4JGE2WaGu7yEIMAVk UH5UhIOZDklSKrOXIZWRKhZ1wR1gsQFm0vKCrfV31vn5QGfDf2eoLoDlzW8XNeNOVcRH3s a5ZbrLkwjdbrql/ESkJqXjyY9Gq00kwXJbMAv/TlS4G3zmrxM0FO3Mz4fbHYqOntd5BcAN 6UQtfpSmknE8UJ/Q+WMJAevdQW3rXYQxl7XJ3vtgdrRimgm++zQRNvWc0i0HPg== Content-Language: en-US, es-ES, eu Autocrypt: addr=ekaitz@elenq.tech; keydata= xsFNBGViSyIBEADY3g71uW/0CVaVm5/ObqTicQXXJRuh1uafIFiUUZoAp1V3V89b3LZ/m0cL 8YNHxTxsx8sKIMYTGlOvARAMiSpDvkmpf5pLn5T7+VvK90FOv/Pkp1tNNT+tvd0m/7C58+39 s7tN+XppbjVRtFuSXY0aFe8rpivZsKxv+tPUHUnQQszXvwgx0GQl8AX99IE+j75NJmBHFVg2 0geKa7QVymu669ix2+zU8vGoOKf5nIS0qG1m/vrtwR3ZuuyWX9/E/uP95ahX5ETWtjhTDbEm MEaRperwbczBewkdERJ34vRrverqKQA1xHXoPsx4NkLMocORFSSCJsveXcgWlU+pUIOYcKUA ARJjHhoWoUH4LZt5EOb7U17AaYMmATUXPCqq8G3jEXq6i0O1J1obCJGIRG02R9GiGp4zrVuv 2hmyoAmed4xYZAtf9WjcbwiunDkMGIxscdSlfEH/9dt7PGdEvkZ0dNSCTbp4ctMI4jAfobAL LReMSGx1CgPi01J61a/n/SgR66AiRJZCyC1u2V7AK1rBOAYzOU4UoePz+yF1I7crjZWAQVo6 DlmmXW+29l/lh2oK5jOuNEcvI6qi+tPCYxpDhUhZeYgqFU+/xgGlMj/XGvwuIFlpVg9ovFMg 6mxskOCVP9xNEp/qHiHqByYu5NRcITo/z/3BUimdXTT4KSq2cQARAQABzSJFa2FpdHogWmFy cmFnYSA8ZWthaXR6QGVsZW5xLnRlY2g+wsGOBBMBCAA4FiEEg/pnRVjAUpRlfkwZt5lM+Jly CyYFAmViSyICGwMFCwkIBwIGFQoJCAsCBBYCAwECH In-Reply-To: <875xpu3nl7.fsf@gnu.org> X-Spampanel-Class: ham X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane-mx.org@gnu.org Original-Sender: bug-guile-bounces+guile-bugs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.lisp.guile.bugs:11039 Archived-At: This is a multi-part message in MIME format. --------------3N0zblOVoqBRwSKdoRkb0HaK Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, So I reviewed the suggestions and this what I have: - Added the comment - Added my copyright line - Nothing in Guix is affected by the changes proposed here, because there's no use of `string-peg` and I didn't change how the S-Expression based PEG works. - The changes applied here only affect to the PEG written as PEG strings and their processing, which was introduced in the documentation as "read the wikipedia", but our PEG definition wasn't implementing the real PEG explained in that wikipedia link. Our documentation claimed that we were able to do things we were not able to do. - I added a link to the paper we are following below the link to the wikipedia page just in case, to let our users know exactly what does our PEG support. The paper says: Literals and character classes can contain C-like escape codes That should be enough for anyone. Also we support `-` in identifiers, but our documentation already said that. I replaced the description of what normal PEG supports. Our docs said PEG only supported alphabetic characters but it has never been true, the paper explains PEG supports alpha, numeric and `_`, but the numeric cannot be the first character (like C identifiers). - What it is true is if people were using `peg-as-peg` for their things, which isn't even exported by the module, their code would have problems. But we can't predict that. - In summary, what I implemented here is a PEG string to PEG Sexp compiler. So it shouldn't affect anyone that uses the PEG Sexp directly and if I did my work properly it shouldn't affect those that used their PEG patterns in strings either, because I only made it work closely to what the paper said, adding a couple of missing features. EXTRA: I rebased the support for the `not-in-range` part, that does touch the PEG sexp part, but only adds more functionality without affecting anything that already existed. In following days I'll review Error reporting and captures that were added in a different thread in guile-devel and see if we can integrate everything to create a production ready PEG parser. Thanks! Ekaitz I attached both patches. --------------3N0zblOVoqBRwSKdoRkb0HaK Content-Type: text/x-patch; charset=UTF-8; name="v3-0001-PEG-Add-full-support-for-PEG-some-extensions.patch" Content-Disposition: attachment; filename*0="v3-0001-PEG-Add-full-support-for-PEG-some-extensions.patch" Content-Transfer-Encoding: base64 RnJvbSA4MTk0NGMyMDM3ZTBkNmQ4Yzk3MmRlZjJjZWIxYWE0YzUxYTYxNDMxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFa2FpdHogWmFycmFnYSA8ZWthaXR6QGVsZW5xLnRl Y2g+CkRhdGU6IFdlZCwgMTEgU2VwIDIwMjQgMjE6MTk6MjYgKzAyMDAKU3ViamVjdDogW1BB VENIIHYzIDEvMl0gUEVHOiBBZGQgZnVsbCBzdXBwb3J0IGZvciBQRUcgKyBzb21lIGV4dGVu c2lvbnMKClRoaXMgY29tbWl0IGFkZHMgc3VwcG9ydCBmb3IgUEVHIGFzIGRlc2NyaWJlZCBp bjoKCiAgICA8aHR0cHM6Ly9iZm9yZC5pbmZvL3B1Yi9sYW5nL3BlZy5wZGY+CgpJdCBhZGRz IHN1cHBvcnQgZm9yIHRoZSBtaXNzaW5nIGZlYXR1cmVzIChjb21tZW50cywgdW5kZXJzY29y ZXMgaW4KaWRlbnRpZmllcnMgYW5kIGVzY2FwaW5nKSB3aGlsZSBrZWVwaW5nIHRoZSBleHRl bnNpb25zIChkYXNoZXMgaW4KaWRlbnRpZmllcnMsIDwgYW5kIDwtLSkuCgpUaGUgbmFtaW5n IHN5c3RlbSB0cmllcyB0byBiZSBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0aGUgb25lIHBy b3Bvc2VkCmluIHRoZSBwYXBlci4KCiogbW9kdWxlL2ljZS05L3BlZy9zdHJpbmctcGVnLnNj bTogUmV3cml0ZSBQRUcgcGFyc2VyLgoqIHRlc3Qtc3VpdGUvdGVzdHMvcGVnLnRlc3Q6IEZp eCBpbXBvcnQKLS0tCiBkb2MvcmVmL2FwaS1wZWcudGV4aSAgICAgICAgICAgIHwgICA4ICst CiBtb2R1bGUvaWNlLTkvcGVnL3N0cmluZy1wZWcuc2NtIHwgNDQyICsrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tCiB0ZXN0LXN1aXRlL3Rlc3RzL3BlZy50ZXN0ICAgICAgIHwg IDMyICsrLQogMyBmaWxlcyBjaGFuZ2VkLCAzMDIgaW5zZXJ0aW9ucygrKSwgMTgwIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9yZWYvYXBpLXBlZy50ZXhpIGIvZG9jL3JlZi9h cGktcGVnLnRleGkKaW5kZXggZDM0ZGRjNjRjLi44NGE5ZTZjNmIgMTAwNjQ0Ci0tLSBhL2Rv Yy9yZWYvYXBpLXBlZy50ZXhpCisrKyBiL2RvYy9yZWYvYXBpLXBlZy50ZXhpCkBAIC0xNyw2 ICsxNywxMCBAQCBXaWtpcGVkaWEgaGFzIGEgY2xlYXIgYW5kIGNvbmNpc2UgaW50cm9kdWN0 aW9uIHRvIFBFR3MgaWYgeW91IHdhbnQgdG8KIGZhbWlsaWFyaXplIHlvdXJzZWxmIHdpdGgg dGhlIHN5bnRheDoKIEB1cmx7aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QYXJzaW5n X2V4cHJlc3Npb25fZ3JhbW1hcn0uCiAKK1RoZSBwYXBlciB0aGF0IGludHJvZHVjZWQgUEVH IGNvbnRhaW5zIGEgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBob3cgUEVHCit3b3Jr cywgYW5kIGRlc2NyaWJlcyBpdHMgc3ludGF4IGluIGRldGFpbDoKK0B1cmx7aHR0cHM6Ly9i Zm9yZC5pbmZvL3B1Yi9sYW5nL3BlZy5wZGZ9CisKIFRoZSBAY29kZXsoaWNlLTkgcGVnKX0g bW9kdWxlIHdvcmtzIGJ5IGNvbXBpbGluZyBQRUdzIGRvd24gdG8gbGFtYmRhCiBleHByZXNz aW9ucy4gIFRoZXNlIGNhbiBlaXRoZXIgYmUgc3RvcmVkIGluIHZhcmlhYmxlcyBhdCBjb21w aWxlLXRpbWUgYnkKIHRoZSBkZWZpbmUgbWFjcm9zIChAY29kZXtkZWZpbmUtcGVnLXBhdHRl cm59IGFuZApAQCAtMjE2LDggKzIyMCw4IEBAIHNob3VsZCBwcm9wYWdhdGUgdXAgdGhlIHBh cnNlIHRyZWUuICBUaGUgbm9ybWFsIEBjb2RlezwtfSBwcm9wYWdhdGVzIHRoZQogbWF0Y2hl ZCB0ZXh0IHVwIHRoZSBwYXJzZSB0cmVlLCBAY29kZXs8LS19IHByb3BhZ2F0ZXMgdGhlIG1h dGNoZWQgdGV4dAogdXAgdGhlIHBhcnNlIHRyZWUgdGFnZ2VkIHdpdGggdGhlIG5hbWUgb2Yg dGhlIG5vbnRlcm1pbmFsLCBhbmQgQGNvZGV7PH0KIGRpc2NhcmRzIHRoYXQgbWF0Y2hlZCB0 ZXh0IGFuZCBwcm9wYWdhdGVzIG5vdGhpbmcgdXAgdGhlIHBhcnNlIHRyZWUuCi1BbHNvLCBu b250ZXJtaW5hbHMgbWF5IGNvbnNpc3Qgb2YgYW55IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXIg b3IgYSBgYC0nJwotY2hhcmFjdGVyIChpbiBub3JtYWwgUEVHcyBub250ZXJtaW5hbHMgY2Fu IG9ubHkgYmUgYWxwaGFiZXRpYykuCitBbHNvLCBub250ZXJtaW5hbHMgbWF5IGluY2x1ZGUg YGAtJycgY2hhcmFjdGVyLCB3aGlsZSBpbiBub3JtYWwgUEVHIGl0IGlzIG5vdAorYWxsb3dl ZC4KIAogRm9yIGV4YW1wbGUsIGlmIHdlOgogQGxpc3AKZGlmZiAtLWdpdCBhL21vZHVsZS9p Y2UtOS9wZWcvc3RyaW5nLXBlZy5zY20gYi9tb2R1bGUvaWNlLTkvcGVnL3N0cmluZy1wZWcu c2NtCmluZGV4IDQ1ZWQxNGJiMS4uZjY4ODY1M2VmIDEwMDY0NAotLS0gYS9tb2R1bGUvaWNl LTkvcGVnL3N0cmluZy1wZWcuc2NtCisrKyBiL21vZHVsZS9pY2UtOS9wZWcvc3RyaW5nLXBl Zy5zY20KQEAgLTEsNiArMSw3IEBACiA7Ozs7IHN0cmluZy1wZWcuc2NtIC0tLSByZXByZXNl bnRpbmcgUEVHIGdyYW1tYXJzIGFzIHN0cmluZ3MKIDs7OzsKLTs7OzsgCUNvcHlyaWdodCAo QykgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKzs7OzsgCUNv cHlyaWdodCAoQykgMjAxMCwgMjAxMSwgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Cis7Ozs7IAlDb3B5cmlnaHQgKEMpIDIwMjQgRWthaXR6IFphcnJhZ2EgPGVrYWl0ekBlbGVu cS50ZWNoPgogOzs7OwogOzs7OyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiA7Ozs7IG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDkgKzIzLDEz IEBACiAgICAgICAgICAgICBkZWZpbmUtcGVnLXN0cmluZy1wYXR0ZXJucwogICAgICAgICAg ICAgcGVnLWdyYW1tYXIpCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgcGVnIHVzaW5nLXBhcnNl cnMpCisgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCiAgICM6dXNlLW1vZHVsZSAoaWNl LTkgcGVnIGNvZGVnZW4pCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgcGVnIHNpbXBsaWZ5LXRy ZWUpKQogCis7OyBUaGlzIG1vZHVsZSBwcm92aWRlcyBzdXBwb3J0IGZvciBQRUcgYXMgZGVz Y3JpYmVkIGluOgorOzsgICA8aHR0cHM6Ly9iZm9yZC5pbmZvL3B1Yi9sYW5nL3BlZy5wZGY+ CisKIDs7IEdldHMgdGhlIGxlZnQtaGFuZCBkZXB0aCBvZiBhIGxpc3QuCiAoZGVmaW5lIChk ZXB0aCBsc3QpCiAgIChpZiAob3IgKG5vdCAobGlzdD8gbHN0KSkgKG51bGw/IGxzdCkpCkBA IC0zOCwyMiArNDMsNTcgQEAKIAogOzsgR3JhbW1hciBmb3IgUEVHcyBpbiBQRUcgZ3JhbW1h ci4KIChkZWZpbmUgcGVnLWFzLXBlZwotImdyYW1tYXIgPC0tIChub250ZXJtaW5hbCAoJzwt LScgLyAnPC0nIC8gJzwnKSBzcCBwYXR0ZXJuKSsKLXBhdHRlcm4gPC0tIGFsdGVybmF0aXZl IChTTEFTSCBzcCBhbHRlcm5hdGl2ZSkqCi1hbHRlcm5hdGl2ZSA8LS0gKFshJl0/IHNwIHN1 ZmZpeCkrCi1zdWZmaXggPC0tIHByaW1hcnkgKFsqKz9dIHNwKSoKLXByaW1hcnkgPC0tICco JyBzcCBwYXR0ZXJuICcpJyBzcCAvICcuJyBzcCAvIGxpdGVyYWwgLyBjaGFyY2xhc3MgLyBu b250ZXJtaW5hbCAhJzwnCi1saXRlcmFsIDwtLSBbJ10gKCFbJ10gLikqIFsnXSBzcAotY2hh cmNsYXNzIDwtLSBMQiAoISddJyAoQ0NyYW5nZSAvIENDc2luZ2xlKSkqIFJCIHNwCi1DQ3Jh bmdlIDwtLSAuICctJyAuCi1DQ3NpbmdsZSA8LS0gLgotbm9udGVybWluYWwgPC0tIFthLXpB LVowLTktXSsgc3AKLXNwIDwgWyBcdFxuXSoKLVNMQVNIIDwgJy8nCi1MQiA8ICdbJwotUkIg PCAnXScKKyIjIEhpZXJhcmNoaWNhbCBzeW50YXgKK0dyYW1tYXIgPC0tIFNwYWNpbmcgRGVm aW5pdGlvbisgRW5kT2ZGaWxlCitEZWZpbml0aW9uIDwtLSBJZGVudGlmaWVyIExFRlRBUlJP VyBFeHByZXNzaW9uCisKK0V4cHJlc3Npb24gPC0tIFNlcXVlbmNlIChTTEFTSCBTZXF1ZW5j ZSkqCitTZXF1ZW5jZSA8LS0gUHJlZml4KgorUHJlZml4IDwtLSAoQU5EIC8gTk9UKT8gU3Vm Zml4CitTdWZmaXggPC0tIFByaW1hcnkgKFFVRVNUSU9OIC8gU1RBUiAvIFBMVVMpPworUHJp bWFyeSA8LS0gSWRlbnRpZmllciAhTEVGVEFSUk9XCisgICAgICAgICAgIC8gT1BFTiBFeHBy ZXNzaW9uIENMT1NFCisgICAgICAgICAgIC8gTGl0ZXJhbCAvIENsYXNzIC8gRE9UCisKKyMg TGV4aWNhbCBzeW50YXgKK0lkZW50aWZpZXIgPC0tIElkZW50U3RhcnQgSWRlbnRDb250KiBT cGFjaW5nCisjIE5PVEU6IGAtYCBpcyBhbiBleHRlbnNpb24KK0lkZW50U3RhcnQgPC0gW2Et ekEtWl9dIC8gJy0nCitJZGVudENvbnQgPC0gSWRlbnRTdGFydCAvIFswLTldCisKK0xpdGVy YWwgPC0tIFNRVU9URSAoIVNRVU9URSBDaGFyKSogU1FVT1RFIFNwYWNpbmcKKyAgICAgICAg LyBEUVVPVEUgKCFEUVVPVEUgQ2hhcikqIERRVU9URSBTcGFjaW5nCitDbGFzcyA8LS0gJ1sn ICghJ10nIFJhbmdlKSogJ10nIFNwYWNpbmcKK1JhbmdlIDwtLSBDaGFyICctJyBDaGFyIC8g Q2hhcgorQ2hhciA8LS0gJ1xcXFwnIFtucnQnXCJcXFtcXF1cXFxcXQorICAgICAgIC8gJ1xc XFwnIFswLTddWzAtN11bMC03XQorICAgICAgIC8gJ1xcXFwnIFswLTddWzAtN10/CisgICAg ICAgLyAhJ1xcXFwnIC4KKworIyBOT1RFOiBgPC0tYCBhbmQgYDxgIGFyZSBleHRlbnNpb25z CitMRUZUQVJST1cgPC0gKCc8LS0nIC8gJzwtJyAvICc8JykgU3BhY2luZworU1FVT1RFIDwt LSBbJ10KK0RRVU9URSA8LS0gW1wiXQorT1BFTkJSQUNLRVQgPCAnWycKK0NMT1NFQlJBQ0tF VCA8ICddJworU0xBU0ggPCAnLycgU3BhY2luZworQU5EIDwtLSAnJicgU3BhY2luZworTk9U IDwtLSAnIScgU3BhY2luZworUVVFU1RJT04gPC0tICc/JyBTcGFjaW5nCitTVEFSIDwtLSAn KicgU3BhY2luZworUExVUyA8LS0gJysnIFNwYWNpbmcKK09QRU4gPCAnKCcgU3BhY2luZwor Q0xPU0UgPCAnKScgU3BhY2luZworRE9UIDwtLSAnLicgU3BhY2luZworCitTcGFjaW5nIDwg KFNwYWNlIC8gQ29tbWVudCkqCitDb21tZW50IDwgJyMnICghRW5kT2ZMaW5lIC4pKiBFbmRP ZkxpbmUKK1NwYWNlIDwgJyAnIC8gJ1x0JyAvIEVuZE9mTGluZQorRW5kT2ZMaW5lIDwgJ1xc clxcbicgLyAnXFxuJyAvICdcXHInCitFbmRPZkZpbGUgPCAhLgogIikKIAorCiAoZGVmaW5l LXN5bnRheCBkZWZpbmUtc2V4cC1wYXJzZXIKICAgKGxhbWJkYSAoeCkKICAgICAoc3ludGF4 LWNhc2UgeCAoKQpAQCAtNjMsMzUgKzEwMyw3OCBAQCBSQiA8ICddJwogICAgICAgICAgICAg ICAoc3luICh3cmFwLXBhcnNlci1mb3ItdXNlcnMgeCBtYXRjaGYgYWNjdW1zeW0gIydzeW0p KSkKICAgICAgICAgICAgI2AoZGVmaW5lIHN5bSAjLHN5bikpKSkpKQogCi0oZGVmaW5lLXNl eHAtcGFyc2VyIHBlZy1ncmFtbWFyIGFsbAotICAoKyAoYW5kIHBlZy1ub250ZXJtaW5hbCAo b3IgIjwtLSIgIjwtIiAiPCIpIHBlZy1zcCBwZWctcGF0dGVybikpKQotKGRlZmluZS1zZXhw LXBhcnNlciBwZWctcGF0dGVybiBhbGwKLSAgKGFuZCBwZWctYWx0ZXJuYXRpdmUKLSAgICAg ICAoKiAoYW5kIChpZ25vcmUgIi8iKSBwZWctc3AgcGVnLWFsdGVybmF0aXZlKSkpKQotKGRl ZmluZS1zZXhwLXBhcnNlciBwZWctYWx0ZXJuYXRpdmUgYWxsCi0gICgrIChhbmQgKD8gKG9y ICIhIiAiJiIpKSBwZWctc3AgcGVnLXN1ZmZpeCkpKQotKGRlZmluZS1zZXhwLXBhcnNlciBw ZWctc3VmZml4IGFsbAotICAoYW5kIHBlZy1wcmltYXJ5ICgqIChhbmQgKG9yICIqIiAiKyIg Ij8iKSBwZWctc3ApKSkpCi0oZGVmaW5lLXNleHAtcGFyc2VyIHBlZy1wcmltYXJ5IGFsbAot ICAob3IgKGFuZCAiKCIgcGVnLXNwIHBlZy1wYXR0ZXJuICIpIiBwZWctc3ApCi0gICAgICAo YW5kICIuIiBwZWctc3ApCi0gICAgICBwZWctbGl0ZXJhbAotICAgICAgcGVnLWNoYXJjbGFz cwotICAgICAgKGFuZCBwZWctbm9udGVybWluYWwgKG5vdC1mb2xsb3dlZC1ieSAiPCIpKSkp Ci0oZGVmaW5lLXNleHAtcGFyc2VyIHBlZy1saXRlcmFsIGFsbAotICAoYW5kICInIiAoKiAo YW5kIChub3QtZm9sbG93ZWQtYnkgIiciKSBwZWctYW55KSkgIiciIHBlZy1zcCkpCi0oZGVm aW5lLXNleHAtcGFyc2VyIHBlZy1jaGFyY2xhc3MgYWxsCi0gIChhbmQgKGlnbm9yZSAiWyIp Ci0gICAgICAgKCogKGFuZCAobm90LWZvbGxvd2VkLWJ5ICJdIikKLSAgICAgICAgICAgICAg IChvciBjaGFyY2xhc3MtcmFuZ2UgY2hhcmNsYXNzLXNpbmdsZSkpKQotICAgICAgIChpZ25v cmUgIl0iKQotICAgICAgIHBlZy1zcCkpCi0oZGVmaW5lLXNleHAtcGFyc2VyIGNoYXJjbGFz cy1yYW5nZSBhbGwgKGFuZCBwZWctYW55ICItIiBwZWctYW55KSkKLShkZWZpbmUtc2V4cC1w YXJzZXIgY2hhcmNsYXNzLXNpbmdsZSBhbGwgcGVnLWFueSkKLShkZWZpbmUtc2V4cC1wYXJz ZXIgcGVnLW5vbnRlcm1pbmFsIGFsbAotICAoYW5kICgrIChvciAocmFuZ2UgI1xhICNceikg KHJhbmdlICNcQSAjXFopIChyYW5nZSAjXDAgI1w5KSAiLSIpKSBwZWctc3ApKQotKGRlZmlu ZS1zZXhwLXBhcnNlciBwZWctc3Agbm9uZQotICAoKiAob3IgIiAiICJcdCIgIlxuIikpKQor KGRlZmluZS1zZXhwLXBhcnNlciBHcmFtbWFyIGFsbAorICAoYW5kIFNwYWNpbmcgKCsgRGVm aW5pdGlvbikgRW5kT2ZGaWxlKSkKKyhkZWZpbmUtc2V4cC1wYXJzZXIgRGVmaW5pdGlvbiBh bGwKKyAgKGFuZCBJZGVudGlmaWVyIExFRlRBUlJPVyBFeHByZXNzaW9uKSkKKyhkZWZpbmUt c2V4cC1wYXJzZXIgRXhwcmVzc2lvbiBhbGwKKyAgKGFuZCBTZXF1ZW5jZSAoKiAoYW5kIFNM QVNIIFNlcXVlbmNlKSkpKQorKGRlZmluZS1zZXhwLXBhcnNlciBTZXF1ZW5jZSBhbGwKKyAg KCogUHJlZml4KSkKKyhkZWZpbmUtc2V4cC1wYXJzZXIgUHJlZml4IGFsbAorICAoYW5kICg/ IChvciBBTkQgTk9UKSkgU3VmZml4KSkKKyhkZWZpbmUtc2V4cC1wYXJzZXIgU3VmZml4IGFs bAorICAoYW5kIFByaW1hcnkgKD8gKG9yIFFVRVNUSU9OIFNUQVIgUExVUykpKSkKKyhkZWZp bmUtc2V4cC1wYXJzZXIgUHJpbWFyeSBhbGwKKyAgKG9yIChhbmQgSWRlbnRpZmllciAobm90 LWZvbGxvd2VkLWJ5IExFRlRBUlJPVykpCisgICAgICAoYW5kIE9QRU4gRXhwcmVzc2lvbiBD TE9TRSkKKyAgICAgIExpdGVyYWwKKyAgICAgIENsYXNzCisgICAgICBET1QpKQorKGRlZmlu ZS1zZXhwLXBhcnNlciBJZGVudGlmaWVyIGFsbAorICAoYW5kIElkZW50U3RhcnQgKCogSWRl bnRDb250KSBTcGFjaW5nKSkKKyhkZWZpbmUtc2V4cC1wYXJzZXIgSWRlbnRTdGFydCBib2R5 CisgIChvciAocmFuZ2UgI1xhICNceikgKHJhbmdlICNcQSAjXFopICJfIiAiLSIpKSA7IE5P VEU6IC0gaXMgYW4gZXh0ZW5zaW9uCisoZGVmaW5lLXNleHAtcGFyc2VyIElkZW50Q29udCBi b2R5CisgIChvciBJZGVudFN0YXJ0IChyYW5nZSAjXDAgI1w5KSkpCisoZGVmaW5lLXNleHAt cGFyc2VyIExpdGVyYWwgYWxsCisgIChvciAoYW5kIFNRVU9URSAoKiAoYW5kIChub3QtZm9s bG93ZWQtYnkgU1FVT1RFKSBDaGFyKSkgU1FVT1RFIFNwYWNpbmcpCisgICAgICAoYW5kIERR VU9URSAoKiAoYW5kIChub3QtZm9sbG93ZWQtYnkgRFFVT1RFKSBDaGFyKSkgRFFVT1RFIFNw YWNpbmcpKSkKKyhkZWZpbmUtc2V4cC1wYXJzZXIgQ2xhc3MgYWxsCisgIChhbmQgT1BFTkJS QUNLRVQgKCogKGFuZCAobm90LWZvbGxvd2VkLWJ5IENMT1NFQlJBQ0tFVCkgUmFuZ2UpKSBD TE9TRUJSQUNLRVQgU3BhY2luZykpCisoZGVmaW5lLXNleHAtcGFyc2VyIFJhbmdlIGFsbAor ICAob3IgKGFuZCBDaGFyIERBU0ggQ2hhcikgQ2hhcikpCisoZGVmaW5lLXNleHAtcGFyc2Vy IENoYXIgYWxsCisgIChvciAoYW5kICJcXCIgKG9yICJuIiAiciIgInQiICInIiAiWyIgIl0i ICJcXCIpKQorICAgICAgKGFuZCAiXFwiIChyYW5nZSAjXDAgI1w3KSAocmFuZ2UgI1wwICNc NykgKHJhbmdlICNcMCAjXDcpKQorICAgICAgKGFuZCAiXFwiIChyYW5nZSAjXDAgI1w3KSAo PyAocmFuZ2UgI1wwICNcNykpKQorICAgICAgKGFuZCAobm90LWZvbGxvd2VkLWJ5ICJcXCIp IHBlZy1hbnkpKSkKKyhkZWZpbmUtc2V4cC1wYXJzZXIgTEVGVEFSUk9XIGJvZHkKKyAgKGFu ZCAob3IgIjwtLSIgIjwtIiAiPCIpIFNwYWNpbmcpKSA7IE5PVEU6IDwtLSBhbmQgPCBhcmUg ZXh0ZW5zaW9ucworKGRlZmluZS1zZXhwLXBhcnNlciBTTEFTSCBub25lCisgIChhbmQgIi8i IFNwYWNpbmcpKQorKGRlZmluZS1zZXhwLXBhcnNlciBBTkQgYWxsCisgIChhbmQgIiYiIFNw YWNpbmcpKQorKGRlZmluZS1zZXhwLXBhcnNlciBOT1QgYWxsCisgIChhbmQgIiEiIFNwYWNp bmcpKQorKGRlZmluZS1zZXhwLXBhcnNlciBRVUVTVElPTiBhbGwKKyAgKGFuZCAiPyIgU3Bh Y2luZykpCisoZGVmaW5lLXNleHAtcGFyc2VyIFNUQVIgYWxsCisgIChhbmQgIioiIFNwYWNp bmcpKQorKGRlZmluZS1zZXhwLXBhcnNlciBQTFVTIGFsbAorICAoYW5kICIrIiBTcGFjaW5n KSkKKyhkZWZpbmUtc2V4cC1wYXJzZXIgT1BFTiBub25lCisgIChhbmQgIigiIFNwYWNpbmcp KQorKGRlZmluZS1zZXhwLXBhcnNlciBDTE9TRSBub25lCisgIChhbmQgIikiIFNwYWNpbmcp KQorKGRlZmluZS1zZXhwLXBhcnNlciBET1QgYWxsCisgIChhbmQgIi4iIFNwYWNpbmcpKQor KGRlZmluZS1zZXhwLXBhcnNlciBTUVVPVEUgbm9uZSAiJyIpCisoZGVmaW5lLXNleHAtcGFy c2VyIERRVU9URSBub25lICJcIiIpCisoZGVmaW5lLXNleHAtcGFyc2VyIE9QRU5CUkFDS0VU IG5vbmUgIlsiKQorKGRlZmluZS1zZXhwLXBhcnNlciBDTE9TRUJSQUNLRVQgbm9uZSAiXSIp CisoZGVmaW5lLXNleHAtcGFyc2VyIERBU0ggbm9uZSAiLSIpCisoZGVmaW5lLXNleHAtcGFy c2VyIFNwYWNpbmcgbm9uZQorICAoKiAob3IgU3BhY2UgQ29tbWVudCkpKQorKGRlZmluZS1z ZXhwLXBhcnNlciBDb21tZW50IG5vbmUKKyAgKGFuZCAiIyIgKCogKGFuZCAobm90LWZvbGxv d2VkLWJ5IEVuZE9mTGluZSkgcGVnLWFueSkpIEVuZE9mTGluZSkpCisoZGVmaW5lLXNleHAt cGFyc2VyIFNwYWNlIG5vbmUKKyAgKG9yICIgIiAiXHQiIEVuZE9mTGluZSkpCisoZGVmaW5l LXNleHAtcGFyc2VyIEVuZE9mTGluZSBub25lCisgIChvciAiXHJcbiIgIlxuIiAiXHIiKSkK KyhkZWZpbmUtc2V4cC1wYXJzZXIgRW5kT2ZGaWxlIG5vbmUKKyAgKG5vdC1mb2xsb3dlZC1i eSBwZWctYW55KSkKKwogCiA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OwogOzs7OzsgUEFS U0UgU1RSSU5HIFBFR1MKQEAgLTEwMSw3ICsxODQsNyBAQCBSQiA8ICddJwogOzsgd2lsbCBk ZWZpbmUgYWxsIG9mIHRoZSBub250ZXJtaW5hbHMgaW4gdGhlIGdyYW1tYXIgd2l0aCBlcXVp dmFsZW50CiA7OyBQRUcgcy1leHByZXNzaW9ucy4KIChkZWZpbmUgKHBlZy1wYXJzZXIgc3Ry IGZvci1zeW50YXgpCi0gIChsZXQgKChwYXJzZWQgKG1hdGNoLXBhdHRlcm4gcGVnLWdyYW1t YXIgc3RyKSkpCisgIChsZXQgKChwYXJzZWQgKG1hdGNoLXBhdHRlcm4gR3JhbW1hciBzdHIp KSkKICAgICAoaWYgKG5vdCBwYXJzZWQpCiAgICAgICAgIChiZWdpbgogICAgICAgICAgIDs7 IChkaXNwbGF5ICJJbnZhbGlkIFBFRyBncmFtbWFyIVxuIikKQEAgLTExMCwxMzIgKzE5Mywx NjAgQEAgUkIgPCAnXScKICAgICAgICAgICAoY29uZAogICAgICAgICAgICAoKG9yIChub3Qg KGxpc3Q/IGxzdCkpIChudWxsPyBsc3QpKQogICAgICAgICAgICAgbHN0KQotICAgICAgICAg ICAoKGVxPyAoY2FyIGxzdCkgJ3BlZy1ncmFtbWFyKQotICAgICAgICAgICAgI2AoYmVnaW4K LSAgICAgICAgICAgICAgICAjLEAobWFwIChsYW1iZGEgKHgpIChwZWctbm9udGVybS0+ZGVm biB4IGZvci1zeW50YXgpKQotICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRleHQtZmxh dHRlbiAobGFtYmRhIChsc3QpICg8PSAoZGVwdGggbHN0KSAyKSkKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNkciBsc3QpKSkpKSkpKSkpCisgICAgICAg ICAgICgoZXE/IChjYXIgbHN0KSAnR3JhbW1hcikKKyAgICAgICAgICAgIChHcmFtbWFyLT5k ZWZuIGxzdCBmb3Itc3ludGF4KSkpKSkpKQogCi07OyBNYWNybyB3cmFwcGVyIGZvciBQRUct UEFSU0VSLiAgUGFyc2VzIFBFRyBncmFtbWFycyBleHByZXNzZWQgYXMgc3RyaW5ncyBhbmQK LTs7IGRlZmluZXMgYWxsIHRoZSBhcHByb3ByaWF0ZSBub250ZXJtaW5hbHMuCi0oZGVmaW5l LXN5bnRheCBkZWZpbmUtcGVnLXN0cmluZy1wYXR0ZXJucwotICAobGFtYmRhICh4KQotICAg IChzeW50YXgtY2FzZSB4ICgpCi0gICAgICAoKF8gc3RyKQotICAgICAgIChwZWctcGFyc2Vy IChzeW50YXgtPmRhdHVtICMnc3RyKSB4KSkpKSkKKzs7IChHcmFtbWFyIChEZWZpbml0aW9u IC4uLikgKERlZmluaXRpb24gLi4uKSkKKyhkZWZpbmUgKEdyYW1tYXItPmRlZm4gbHN0IGZv ci1zeW50YXgpCisgICNgKGJlZ2luCisgICAgICAjLEAobWFwIChsYW1iZGEgKHgpIChEZWZp bml0aW9uLT5kZWZuIHggZm9yLXN5bnRheCkpCisgICAgICAgICAgICAgIChjb250ZXh0LWZs YXR0ZW4gKGxhbWJkYSAobHN0KSAoPD0gKGRlcHRoIGxzdCkgMSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNkciBsc3QpKSkpKQogCi07OyBsc3QgaGFzIGZvcm1hdCAo bm9udGVybSBncmFiYmVyIHBhdHRlcm4pLCB3aGVyZQotOzsgICBub250ZXJtIGlzIGEgc3lt Ym9sICh0aGUgbmFtZSBvZiB0aGUgbm9udGVybWluYWwpLAotOzsgICBncmFiYmVyIGlzIGEg c3RyaW5nIChlaXRoZXIgIjwiLCAiPC0iIG9yICI8LS0iKSwgYW5kCi07OyAgIHBhdHRlcm4g aXMgdGhlIHBhcnNlIG9mIGEgUEVHIHBhdHRlcm4gZXhwcmVzc2VkIGFzIGFzIHN0cmluZy4K LShkZWZpbmUgKHBlZy1ub250ZXJtLT5kZWZuIGxzdCBmb3Itc3ludGF4KQotICAobGV0KiAo KG5vbnRlcm0gKGNhciBsc3QpKQotICAgICAgICAgKGdyYWJiZXIgKGNhZHIgbHN0KSkKLSAg ICAgICAgIChwYXR0ZXJuIChjYWRkciBsc3QpKQotICAgICAgICAgKG5vbnRlcm0tbmFtZSAo ZGF0dW0tPnN5bnRheCBmb3Itc3ludGF4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzdHJpbmctPnN5bWJvbCAoY2FkciBub250ZXJtKSkpKSkKLSAgICAjYChk ZWZpbmUtcGVnLXBhdHRlcm4gIyxub250ZXJtLW5hbWUKKzs7IChEZWZpbml0aW9uIChJZGVu dGlmaWVyICJTb21ldGhpbmciKSAiPC0iIChFeHByZXNzaW9uIC4uLikpCis7OyAgYC0+IChk ZWZpbmUtcGVnLXBhdHRlcm4gU29tZXRoaW5nICdhbGwgLi4uKQorKGRlZmluZSAoRGVmaW5p dGlvbi0+ZGVmbiBsc3QgZm9yLXN5bnRheCkKKyAgKGxldCAoKGlkZW50aWZpZXIgKHNlY29u ZCAoc2Vjb25kIGxzdCkpKQorICAgICAgICAoZ3JhYmJlciAgICAodGhpcmQgIGxzdCkpCisg ICAgICAgIChleHByZXNzaW9uIChmb3VydGggbHN0KSkpCisgICAgI2AoZGVmaW5lLXBlZy1w YXR0ZXJuICMsKGRhdHVtLT5zeW50YXggZm9yLXN5bnRheAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctPnN5bWJvbCBpZGVudGlmaWVyKSkK ICAgICAgICAjLChjb25kCiAgICAgICAgICAgKChzdHJpbmc9PyBncmFiYmVyICI8LS0iKSAo ZGF0dW0tPnN5bnRheCBmb3Itc3ludGF4ICdhbGwpKQogICAgICAgICAgICgoc3RyaW5nPT8g Z3JhYmJlciAiPC0iKSAoZGF0dW0tPnN5bnRheCBmb3Itc3ludGF4ICdib2R5KSkKICAgICAg ICAgICAoZWxzZSAoZGF0dW0tPnN5bnRheCBmb3Itc3ludGF4ICdub25lKSkpCi0gICAgICAg IywoY29tcHJlc3NvciAocGVnLXBhdHRlcm4tPmRlZm4gcGF0dGVybiBmb3Itc3ludGF4KSBm b3Itc3ludGF4KSkpKQotCi07OyBsc3QgaGFzIGZvcm1hdCAoJ3BlZy1wYXR0ZXJuIC4uLiku Ci07OyBBZnRlciB0aGUgY29udGV4dC1mbGF0dGVuLCAoY2RyIGxzdCkgaGFzIGZvcm1hdAot OzsgICAoKCdwZWctYWx0ZXJuYXRpdmUgLi4uKSAuLi4pLCB3aGVyZSB0aGUgb3V0ZXIgbGlz dCBpcyBhIGNvbGxlY3Rpb24KLTs7ICAgb2YgZWxlbWVudHMgZnJvbSBhICcvJyBhbHRlcm5h dGl2ZS4KLShkZWZpbmUgKHBlZy1wYXR0ZXJuLT5kZWZuIGxzdCBmb3Itc3ludGF4KQotICAj YChvciAjLEAobWFwIChsYW1iZGEgKHgpIChwZWctYWx0ZXJuYXRpdmUtPmRlZm4geCBmb3It c3ludGF4KSkKLSAgICAgICAgICAgICAgICAoY29udGV4dC1mbGF0dGVuIChsYW1iZGEgKHgp IChlcT8gKGNhciB4KSAncGVnLWFsdGVybmF0aXZlKSkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjZHIgbHN0KSkpKSkKLQotOzsgbHN0IGhhcyBmb3JtYXQgKCdwZWct YWx0ZXJuYXRpdmUgLi4uKS4KLTs7IEFmdGVyIHRoZSBjb250ZXh0LWZsYXR0ZW4sIChjZHIg bHN0KSBoYXMgdGhlIGZvcm1hdAotOzsgICAoaXRlbSAuLi4pLCB3aGVyZSBlYWNoIGl0ZW0g aGFzIGZvcm1hdCBlaXRoZXIgKCIhIiAuLi4pLCAoIiYiIC4uLiksCi07OyAgIG9yICgncGVn LXN1ZmZpeCAuLi4pLgotKGRlZmluZSAocGVnLWFsdGVybmF0aXZlLT5kZWZuIGxzdCBmb3It c3ludGF4KQotICAjYChhbmQgIyxAKG1hcCAobGFtYmRhICh4KSAocGVnLWJvZHktPmRlZm4g eCBmb3Itc3ludGF4KSkKLSAgICAgICAgICAgICAgICAgKGNvbnRleHQtZmxhdHRlbiAobGFt YmRhICh4KSAob3IgKHN0cmluZz8gKGNhciB4KSkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChlcT8gKGNhciB4KSAncGVnLXN1ZmZpeCkpKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgbHN0KSkpKSkKLQotOzsgbHN0 IGhhcyB0aGUgZm9ybWF0IGVpdGhlcgotOzsgICAoIiEiICgncGVnLXN1ZmZpeCAuLi4pKSwg KCImIiAoJ3BlZy1zdWZmaXggLi4uKSksIG9yCi07OyAgICAgKCdwZWctc3VmZml4IC4uLiku Ci0oZGVmaW5lIChwZWctYm9keS0+ZGVmbiBsc3QgZm9yLXN5bnRheCkKLSAgICAoY29uZAot ICAgICAgKChlcXVhbD8gKGNhciBsc3QpICImIikKLSAgICAgICAjYChmb2xsb3dlZC1ieSAj LChwZWctc3VmZml4LT5kZWZuIChjYWRyIGxzdCkgZm9yLXN5bnRheCkpKQotICAgICAgKChl cXVhbD8gKGNhciBsc3QpICIhIikKLSAgICAgICAjYChub3QtZm9sbG93ZWQtYnkgIywocGVn LXN1ZmZpeC0+ZGVmbiAoY2FkciBsc3QpIGZvci1zeW50YXgpKSkKLSAgICAgICgoZXE/IChj YXIgbHN0KSAncGVnLXN1ZmZpeCkKLSAgICAgICAocGVnLXN1ZmZpeC0+ZGVmbiBsc3QgZm9y LXN5bnRheCkpCi0gICAgICAoZWxzZSBgKHBlZy1wYXJzZS1ib2R5LWZhaWwgLGxzdCkpKSkK LQotOzsgbHN0IGhhcyBmb3JtYXQgKCdwZWctc3VmZml4IDxwZWctcHJpbWFyeT4gKD8gKC8g IioiICI/IiAiKyIpKSkKLShkZWZpbmUgKHBlZy1zdWZmaXgtPmRlZm4gbHN0IGZvci1zeW50 YXgpCi0gIChsZXQgKChpbm5lci1kZWZuIChwZWctcHJpbWFyeS0+ZGVmbiAoY2FkciBsc3Qp IGZvci1zeW50YXgpKSkKLSAgICAoY29uZAotICAgICAgKChudWxsPyAoY2RkciBsc3QpKQot ICAgICAgIGlubmVyLWRlZm4pCi0gICAgICAoKGVxdWFsPyAoY2FkZHIgbHN0KSAiKiIpCi0g ICAgICAgI2AoKiAjLGlubmVyLWRlZm4pKQotICAgICAgKChlcXVhbD8gKGNhZGRyIGxzdCkg Ij8iKQotICAgICAgICNgKD8gIyxpbm5lci1kZWZuKSkKLSAgICAgICgoZXF1YWw/IChjYWRk ciBsc3QpICIrIikKLSAgICAgICAjYCgrICMsaW5uZXItZGVmbikpKSkpCi0KLTs7IFBhcnNl IGEgcHJpbWFyeS4KLShkZWZpbmUgKHBlZy1wcmltYXJ5LT5kZWZuIGxzdCBmb3Itc3ludGF4 KQotICAobGV0ICgoZWwgKGNhZHIgbHN0KSkpCisgICAgICAgIywoY29tcHJlc3NvciAoRXhw cmVzc2lvbi0+ZGVmbiBleHByZXNzaW9uIGZvci1zeW50YXgpIGZvci1zeW50YXgpKSkpCisK Kzs7IChFeHByZXNzaW9uIChTZXF1ZW5jZSBYKSkKKzs7ICBgLT4gKFgpCis7OyAoRXhwcmVz c2lvbiAoU2VxdWVuY2UgWCkgKFNlcXVlbmNlIFkpKQorOzsgIGAtPiAob3IgWCBZKQorOzsg KEV4cHJlc3Npb24gKFNlcXVlbmNlIFgpICgoU2VxdWVuY2UgWSkgKFNlcXVlbmNlIFopIC4u LikpCis7OyAgYC0+IChvciBYIFkgWiAuLi4pCisoZGVmaW5lIChFeHByZXNzaW9uLT5kZWZu IGxzdCBmb3Itc3ludGF4KQorICAobGV0ICgoZmlyc3Qtc2VxdWVuY2UgKHNlY29uZCBsc3Qp KQorICAgICAgICAocmVzdCAgICAgICAgICAgKGNkZHIgIGxzdCkpKQorICAgICNgKG9yICMs KFNlcXVlbmNlLT5kZWZuIGZpcnN0LXNlcXVlbmNlIGZvci1zeW50YXgpCisgICAgICAgICAg IyxAKG1hcCAobGFtYmRhICh4KQorICAgICAgICAgICAgICAgICAgICAoU2VxdWVuY2UtPmRl Zm4geCBmb3Itc3ludGF4KSkKKyAgICAgICAgICAgICAgICAgIChrZXl3b3JkLWZsYXR0ZW4g JyhTZXF1ZW5jZSkgcmVzdCkpKSkpCisKKworKGRlZmluZSAoU2VxdWVuY2UtPmRlZm4gbHN0 IGZvci1zeW50YXgpCisgICNgKGFuZCAjLEAobWFwIChsYW1iZGEgKHgpIChQcmVmaXgtPmRl Zm4geCBmb3Itc3ludGF4KSkgKGNkciBsc3QpKSkpCisKKworOzsgKFByZWZpeCAoU3VmZml4 IC4uLikpCis7OyAgYC0+ICguLi4pCis7OyAoUHJlZml4IChOT1QgIiEiKSAoU3VmZml4IC4u LikpCis7OyAgYC0+IChub3QtZm9sbG93ZWQtYnkgLi4uKQorOzsgKFByZWZpeCAoQU5EICIm IikgKFN1ZmZpeCAuLi4pKQorOzsgIGAtPiAoZm9sbG93ZWQtYnkgLi4uKQorKGRlZmluZSAo UHJlZml4LT5kZWZuIGxzdCBmb3Itc3ludGF4KQorICAobGV0ICgoc3VmZml4IChzZWNvbmQg bHN0KSkpCisgICAgKGNhc2UgKGNhciBzdWZmaXgpCisgICAgICAoJ0FORCAjYChmb2xsb3dl ZC1ieSAjLChTdWZmaXgtPmRlZm4gKHRoaXJkIGxzdCkgZm9yLXN5bnRheCkpKQorICAgICAg KCdOT1QgI2Aobm90LWZvbGxvd2VkLWJ5ICMsKFN1ZmZpeC0+ZGVmbiAodGhpcmQgbHN0KSBm b3Itc3ludGF4KSkpCisgICAgICAoZWxzZSAoU3VmZml4LT5kZWZuIHN1ZmZpeCBmb3Itc3lu dGF4KSkpKSkKKworOzsgKFN1ZmZpeCAoUHJpbWFyeSAuLi4pKQorOzsgIGAtPiAoLi4uKQor OzsgKFN1ZmZpeCAoUHJpbWFyeSAuLi4pIChTVEFSICIqIikpCis7OyAgYC0+ICgqIC4uLikK Kzs7IChTdWZmaXggKFByaW1hcnkgLi4uKSAoUVVFU1RJT04gIj8iKSkKKzs7ICBgLT4gKD8g Li4uKQorOzsgKFN1ZmZpeCAoUHJpbWFyeSAuLi4pIChQTFVTICIrIikpCis7OyAgYC0+ICgr IC4uLikKKyhkZWZpbmUgKFN1ZmZpeC0+ZGVmbiBsc3QgZm9yLXN5bnRheCkKKyAgKGxldCog KChwcmltYXJ5IChzZWNvbmQgbHN0KSkKKyAgICAgICAgIChvdXQgICAgIChQcmltYXJ5LT5k ZWZuIHByaW1hcnkgZm9yLXN5bnRheCkpCisgICAgICAgICAoZXh0cmEgICAoY2RkciBsc3Qp KSkKKyAgICAoaWYgKG51bGw/IGV4dHJhKQorICAgICAgb3V0CisgICAgICAoY2FzZSAoY2Fh ciBleHRyYSkKKyAgICAgICAgKCdRVUVTVElPTiAjYCg/ICMsb3V0KSkKKyAgICAgICAgKCdT VEFSICAgICAjYCgqICMsb3V0KSkKKyAgICAgICAgKCdQTFVTICAgICAjYCgrICMsb3V0KSkp KSkpCisKKyhkZWZpbmUgKFByaW1hcnktPmRlZm4gbHN0IGZvci1zeW50YXgpCisgIChsZXQg KCh2YWx1ZSAoc2Vjb25kIGxzdCkpKQorICAgIChjYXNlIChjYXIgdmFsdWUpCisgICAgICAo J0RPVCAgICAgICAgIydwZWctYW55KQorICAgICAgKCdJZGVudGlmaWVyIChJZGVudGlmaWVy LT5kZWZuIHZhbHVlIGZvci1zeW50YXgpKQorICAgICAgKCdFeHByZXNzaW9uIChFeHByZXNz aW9uLT5kZWZuIHZhbHVlIGZvci1zeW50YXgpKQorICAgICAgKCdMaXRlcmFsICAgIChMaXRl cmFsLT5kZWZuIHZhbHVlIGZvci1zeW50YXgpKQorICAgICAgKCdDbGFzcyAgICAgIChDbGFz cy0+ZGVmbiB2YWx1ZSBmb3Itc3ludGF4KSkpKSkKKworOzsgKElkZW50aWZpZXIgImhlbGxv IikKKzs7ICBgLT4gaGVsbG8KKyhkZWZpbmUgKElkZW50aWZpZXItPmRlZm4gbHN0IGZvci1z eW50YXgpCisgIChkYXR1bS0+c3ludGF4IGZvci1zeW50YXggKHN0cmluZy0+c3ltYm9sIChz ZWNvbmQgbHN0KSkpKQorCis7OyAoTGl0ZXJhbCAoQ2hhciAiYSIpIChDaGFyICJiIikgKENo YXIgImMiKSkKKzs7ICBgLT4gImFiYyIKKyhkZWZpbmUgKExpdGVyYWwtPmRlZm4gbHN0IGZv ci1zeW50YXgpCisgIChhcHBseSBzdHJpbmcgKG1hcCAobGFtYmRhICh4KSAoQ2hhci0+ZGVm biB4IGZvci1zeW50YXgpKSAoY2RyIGxzdCkpKSkKKworOzsgVE9ETzogZW1wdHkgQ2xhc3Mg Y2FuIGhhcHBlbjogYFtdYCwgYnV0IHdoYXQgZG9lcyBpdCByZXByZXNlbnQ/Cis7OyAoQ2xh c3MgLi4uKQorOzsgIGAtPiAob3IgLi4uKQorKGRlZmluZSAoQ2xhc3MtPmRlZm4gbHN0IGZv ci1zeW50YXgpCisgICNgKG9yICMsQChtYXAgKGxhbWJkYSAoeCkgKFJhbmdlLT5kZWZuIHgg Zm9yLXN5bnRheCkpCisgICAgICAgICAgICAgICAgKGNkciBsc3QpKSkpCisKKzs7IEZvciBv bmUgY2hhcmFjdGVyOgorOzsgKFJhbmdlIChDaGFyICJhIikpCis7OyAgYC0+ICJhIgorOzsg T3IgZm9yIGEgcmFuZ2U6Cis7OyAoUmFuZ2UgKENoYXIgImEiKSAoQ2hhciAiYiIpKQorOzsg IGAtPiAocmFuZ2UgI1xhICNcYikKKyhkZWZpbmUgKFJhbmdlLT5kZWZuIGxzdCBmb3Itc3lu dGF4KQogICAoY29uZAotICAgKChsaXN0PyBlbCkKLSAgICAoY29uZAotICAgICAoKGVxPyAo Y2FyIGVsKSAncGVnLWxpdGVyYWwpCi0gICAgICAocGVnLWxpdGVyYWwtPmRlZm4gZWwgZm9y LXN5bnRheCkpCi0gICAgICgoZXE/IChjYXIgZWwpICdwZWctY2hhcmNsYXNzKQotICAgICAg KHBlZy1jaGFyY2xhc3MtPmRlZm4gZWwgZm9yLXN5bnRheCkpCi0gICAgICgoZXE/IChjYXIg ZWwpICdwZWctbm9udGVybWluYWwpCi0gICAgICAoZGF0dW0tPnN5bnRheCBmb3Itc3ludGF4 IChzdHJpbmctPnN5bWJvbCAoY2FkciBlbCkpKSkpKQotICAgKChzdHJpbmc/IGVsKQorICAg ICgoPSAyIChsZW5ndGggbHN0KSkKKyAgICAgKHNlY29uZCAoc2Vjb25kIGxzdCkpKQorICAg ICgoPSAzIChsZW5ndGggbHN0KSkKKyAgICAgI2AocmFuZ2UKKyAgICAgICAgICMsKENoYXIt PmRlZm4gKHNlY29uZCBsc3QpIGZvci1zeW50YXgpCisgICAgICAgICAjLChDaGFyLT5kZWZu ICh0aGlyZCBsc3QpIGZvci1zeW50YXgpKSkpKQorCis7OyAoQ2hhciAiYSIpCis7OyAgYC0+ ICNcYQorOzsgKENoYXIgIlxcbiIpCis7OyAgYC0+ICNcbmV3bGluZQorOzsgKENoYXIgIlxc MTM1IikKKzs7ICBgLT4gI1xdCisoZGVmaW5lIChDaGFyLT5kZWZuIGxzdCBmb3Itc3ludGF4 KQorICAobGV0KiAoKGNoYXJzdHIgKHNlY29uZCBsc3QpKQorICAgICAgICAgKGZpcnN0ICAg KHN0cmluZy1yZWYgY2hhcnN0ciAwKSkpCiAgICAgKGNvbmQKLSAgICAgKChlcXVhbD8gZWwg IigiKQotICAgICAgKHBlZy1wYXR0ZXJuLT5kZWZuIChjYWRkciBsc3QpIGZvci1zeW50YXgp KQotICAgICAoKGVxdWFsPyBlbCAiLiIpCi0gICAgICAoZGF0dW0tPnN5bnRheCBmb3Itc3lu dGF4ICdwZWctYW55KSkKLSAgICAgKGVsc2UgKGRhdHVtLT5zeW50YXggZm9yLXN5bnRheAot ICAgICAgICAgICAgICAgICAgICAgICAgICBgKHBlZy1wYXJzZS1hbnkgdW5rbm93bi1zdHJp bmcgLGxzdCkpKSkpCi0gICAoZWxzZSAoZGF0dW0tPnN5bnRheCBmb3Itc3ludGF4Ci0gICAg ICAgICAgICAgICAgICAgICAgICBgKHBlZy1wYXJzZS1hbnkgdW5rbm93bi1lbCAsbHN0KSkp KSkpCi0KLTs7IFRyaW1zIGNoYXJhY3RlcnMgb2ZmIHRoZSBmcm9udCBhbmQgZW5kIG9mIFNU Ui4KLTs7ICh0cmltLTFjaGFycyAiJ2FiJyIpIC0+ICJhYiIKLShkZWZpbmUgKHRyaW0tMWNo YXJzIHN0cikgKHN1YnN0cmluZyBzdHIgMSAoLSAoc3RyaW5nLWxlbmd0aCBzdHIpIDEpKSkK LQotOzsgUGFyc2VzIGEgbGl0ZXJhbC4KLShkZWZpbmUgKHBlZy1saXRlcmFsLT5kZWZuIGxz dCBmb3Itc3ludGF4KQotICAoZGF0dW0tPnN5bnRheCBmb3Itc3ludGF4ICh0cmltLTFjaGFy cyAoY2FkciBsc3QpKSkpCi0KLTs7IFBhcnNlcyBhIGNoYXJjbGFzcy4KLShkZWZpbmUgKHBl Zy1jaGFyY2xhc3MtPmRlZm4gbHN0IGZvci1zeW50YXgpCi0gICNgKG9yCi0gICAgICMsQCht YXAKLSAgICAgICAgIChsYW1iZGEgKGNjKQotICAgICAgICAgICAoY29uZAotICAgICAgICAg ICAgKChlcT8gKGNhciBjYykgJ2NoYXJjbGFzcy1yYW5nZSkKLSAgICAgICAgICAgICAjYChy YW5nZSAjLChkYXR1bS0+c3ludGF4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZm9yLXN5 bnRheAotICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctcmVmIChjYWRyIGNjKSAw KSkKLSAgICAgICAgICAgICAgICAgICAgICAjLChkYXR1bS0+c3ludGF4Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgZm9yLXN5bnRheAotICAgICAgICAgICAgICAgICAgICAgICAgIChz dHJpbmctcmVmIChjYWRyIGNjKSAyKSkpKQotICAgICAgICAgICAgKChlcT8gKGNhciBjYykg J2NoYXJjbGFzcy1zaW5nbGUpCi0gICAgICAgICAgICAgKGRhdHVtLT5zeW50YXggZm9yLXN5 bnRheCAoY2FkciBjYykpKSkpCi0gICAgICAgICAoY29udGV4dC1mbGF0dGVuCi0gICAgICAg ICAgKGxhbWJkYSAoeCkgKG9yIChlcT8gKGNhciB4KSAnY2hhcmNsYXNzLXJhbmdlKQotICAg ICAgICAgICAgICAgICAgICAgICAgICAoZXE/IChjYXIgeCkgJ2NoYXJjbGFzcy1zaW5nbGUp KSkKLSAgICAgICAgICAoY2RyIGxzdCkpKSkpCisgICAgICAoKD0gMSAoc3RyaW5nLWxlbmd0 aCBjaGFyc3RyKSkgZmlyc3QpCisgICAgICAoKGNoYXItbnVtZXJpYz8gKHN0cmluZy1yZWYg Y2hhcnN0ciAxKSkKKyAgICAgICAoaW50ZWdlci0+Y2hhcgorICAgICAgICAgKHJlZHVjZSAr IDAKKyAgICAgICAgICAgICAgICAgKG1hcAorICAgICAgICAgICAgICAgICAgIChsYW1iZGEg KHggeSkKKyAgICAgICAgICAgICAgICAgICAgICgqICgtIChjaGFyLT5pbnRlZ2VyIHgpIChj aGFyLT5pbnRlZ2VyICNcMCkpIHkpKQorICAgICAgICAgICAgICAgICAgIChyZXZlcnNlIChz dHJpbmctPmxpc3QgY2hhcnN0ciAxKSkKKyAgICAgICAgICAgICAgICAgICAnKDEgOCA2NCkp KSkpCisgICAgICAoZWxzZQorICAgICAgICAoY2FzZSAoc3RyaW5nLXJlZiBjaGFyc3RyIDEp CisgICAgICAgICAgKCgjXG4pICNcbmV3bGluZSkKKyAgICAgICAgICAoKCNccikgI1xyZXR1 cm4pCisgICAgICAgICAgKCgjXHQpICNcdGFiKQorICAgICAgICAgICgoI1wnKSAjXCcpCisg ICAgICAgICAgKCgjXF0pICNcXSkKKyAgICAgICAgICAoKCNcXCkgI1xcKQorICAgICAgICAg ICgoI1xbKSAjXFspKSkpKSkKKworKGRlZmluZSBwZWctZ3JhbW1hciBHcmFtbWFyKQorCis7 OyBNYWNybyB3cmFwcGVyIGZvciBQRUctUEFSU0VSLiAgUGFyc2VzIFBFRyBncmFtbWFycyBl eHByZXNzZWQgYXMgc3RyaW5ncyBhbmQKKzs7IGRlZmluZXMgYWxsIHRoZSBhcHByb3ByaWF0 ZSBub250ZXJtaW5hbHMuCisoZGVmaW5lLXN5bnRheCBkZWZpbmUtcGVnLXN0cmluZy1wYXR0 ZXJucworICAobGFtYmRhICh4KQorICAgIChzeW50YXgtY2FzZSB4ICgpCisgICAgICAoKF8g c3RyKQorICAgICAgIChwZWctcGFyc2VyIChzeW50YXgtPmRhdHVtICMnc3RyKSB4KSkpKSkK IAogOzsgQ29tcHJlc3NlcyBhIGxpc3QgdG8gc2F2ZSB0aGUgb3B0aW1pemVyIHdvcmsuCiA7 OyBlLmcuIChvciAoYW5kIGEpKSAtPiBhCkBAIC0yNjMsMTEgKzM3NCwxMCBAQCBSQiA8ICdd JwogICAgICAobGV0ICgoc3RyaW5nIChzeW50YXgtPmRhdHVtICMnc3RyLXN0eCkpKQogICAg ICAgIChjb21waWxlLXBlZy1wYXR0ZXJuCiAgICAgICAgIChjb21wcmVzc29yCi0gICAgICAg ICAocGVnLXBhdHRlcm4tPmRlZm4KLSAgICAgICAgICAocGVnOnRyZWUgKG1hdGNoLXBhdHRl cm4gcGVnLXBhdHRlcm4gc3RyaW5nKSkgIydzdHItc3R4KQorICAgICAgICAgKEV4cHJlc3Np b24tPmRlZm4KKyAgICAgICAgICAocGVnOnRyZWUgKG1hdGNoLXBhdHRlcm4gRXhwcmVzc2lv biBzdHJpbmcpKSAjJ3N0ci1zdHgpCiAgICAgICAgICAjJ3N0ci1zdHgpCiAgICAgICAgIChp ZiAoZXE/IGFjY3VtICdhbGwpICdib2R5IGFjY3VtKSkpKQogICAgICAoZWxzZSAoZXJyb3Ig IkJhZCBlbWJlZGRlZCBQRUcgc3RyaW5nIiBhcmdzKSkpKQogCiAoYWRkLXBlZy1jb21waWxl ciEgJ3BlZyBwZWctc3RyaW5nLWNvbXBpbGUpCi0KZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUv dGVzdHMvcGVnLnRlc3QgYi90ZXN0LXN1aXRlL3Rlc3RzL3BlZy50ZXN0CmluZGV4IGY1MTY1 NzFlOC4uNTU2MTQ1ZTcyIDEwMDY0NAotLS0gYS90ZXN0LXN1aXRlL3Rlc3RzL3BlZy50ZXN0 CisrKyBiL3Rlc3Qtc3VpdGUvdGVzdHMvcGVnLnRlc3QKQEAgLTI4LDE3ICsyOCwyNSBAQAog OzsgdGhlIG5vbnRlcm1pbmFscyBkZWZpbmVkIGluIHRoZSBQRUcgcGFyc2VyIHdyaXR0ZW4g d2l0aAogOzsgUy1leHByZXNzaW9ucy4KIChkZWZpbmUgZ3JhbW1hci1tYXBwaW5nCi0gICco KGdyYW1tYXIgcGVnLWdyYW1tYXIpCi0gICAgKHBhdHRlcm4gcGVnLXBhdHRlcm4pCi0gICAg KGFsdGVybmF0aXZlIHBlZy1hbHRlcm5hdGl2ZSkKLSAgICAoc3VmZml4IHBlZy1zdWZmaXgp Ci0gICAgKHByaW1hcnkgcGVnLXByaW1hcnkpCi0gICAgKGxpdGVyYWwgcGVnLWxpdGVyYWwp Ci0gICAgKGNoYXJjbGFzcyBwZWctY2hhcmNsYXNzKQotICAgIChDQ3JhbmdlIGNoYXJjbGFz cy1yYW5nZSkKLSAgICAoQ0NzaW5nbGUgY2hhcmNsYXNzLXNpbmdsZSkKLSAgICAobm9udGVy bWluYWwgcGVnLW5vbnRlcm1pbmFsKQotICAgIChzcCBwZWctc3ApKSkKKyAgJygoR3JhbW1h ciBHcmFtbWFyKQorICAgIChEZWZpbml0aW9uIERlZmluaXRpb24pCisgICAgKEV4cHJlc3Np b24gRXhwcmVzc2lvbikKKyAgICAoU2VxdWVuY2UgU2VxdWVuY2UpCisgICAgKFByZWZpeCBQ cmVmaXgpCisgICAgKFN1ZmZpeCBTdWZmaXgpCisgICAgKFByaW1hcnkgUHJpbWFyeSkKKyAg ICAoSWRlbnRpZmllciBJZGVudGlmaWVyKQorICAgIChMaXRlcmFsIExpdGVyYWwpCisgICAg KENsYXNzIENsYXNzKQorICAgIChSYW5nZSBSYW5nZSkKKyAgICAoQ2hhciBDaGFyKQorICAg IChMRUZUQVJST1cgTEVGVEFSUk9XKQorICAgIChBTkQgQU5EKQorICAgIChOT1QgTk9UKQor ICAgIChRVUVTVElPTiBRVUVTVElPTikKKyAgICAoU1RBUiBTVEFSKQorICAgIChQTFVTIFBM VVMpCisgICAgKERPVCBET1QpKSkKIAogOzsgVHJhbnNmb3JtcyB0aGUgbm9udGVybWluYWxz IGRlZmluZWQgaW4gdGhlIFBFRyBwYXJzZXIgd3JpdHRlbiBhcyBhIFBFRyB0byB0aGUgbm9u dGVybWluYWxzIGRlZmluZWQgaW4gdGhlIFBFRyBwYXJzZXIgd3JpdHRlbiB3aXRoIFMtZXhw cmVzc2lvbnMuCiAoZGVmaW5lIChncmFtbWFyLXRyYW5zZm9ybSB4KQpAQCAtNjksNyArNzcs NyBAQAogICAgIChwZWc6dHJlZSAobWF0Y2gtcGF0dGVybiAoQEAgKGljZS05IHBlZykgcGVn LWdyYW1tYXIpIChAQCAoaWNlLTkgcGVnKSBwZWctYXMtcGVnKSkpCiAgICAgKHRyZWUtbWFw CiAgICAgIGdyYW1tYXItdHJhbnNmb3JtCi0gICAgIChwZWc6dHJlZSAobWF0Y2gtcGF0dGVy biBncmFtbWFyIChAQCAoaWNlLTkgcGVnKSBwZWctYXMtcGVnKSkpKSkpKQorICAgICAocGVn OnRyZWUgKG1hdGNoLXBhdHRlcm4gKEBAIChpY2UtOSBwZWcpIHBlZy1ncmFtbWFyKSAoQEAg KGljZS05IHBlZykgcGVnLWFzLXBlZykpKSkpKSkKIAogOzsgQSBncmFtbWFyIGZvciBwYXNj YWwtc3R5bGUgY29tbWVudHMgZnJvbSBXaWtpcGVkaWEuCiAoZGVmaW5lIGNvbW1lbnQtZ3Jh bW1hcgotLSAKMi40Ni4wCgo= --------------3N0zblOVoqBRwSKdoRkb0HaK Content-Type: text/x-patch; charset=UTF-8; name="v3-0002-PEG-Add-support-for-not-in-range-and.patch" Content-Disposition: attachment; filename="v3-0002-PEG-Add-support-for-not-in-range-and.patch" Content-Transfer-Encoding: base64 RnJvbSA2NGExN2JlMDg1ODE0NjVkMTExODViNGEwY2E2MzYzNTRkMmY5NDRjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFa2FpdHogWmFycmFnYSA8ZWthaXR6QGVsZW5xLnRl Y2g+CkRhdGU6IEZyaSwgMTEgT2N0IDIwMjQgMTQ6MjQ6MzAgKzAyMDAKU3ViamVjdDogW1BB VENIIHYzIDIvMl0gUEVHOiBBZGQgc3VwcG9ydCBmb3IgYG5vdC1pbi1yYW5nZWAgYW5kIFte Li4uXQoKTW9kZXJuIFBFRyBzdXBwb3J0cyBpbnZlcnNlZCBjbGFzcyBsaWtlIGBbXmEtel1g IHRoYXQgd291bGQgZ2V0IGFueQpjaGFyYWN0ZXIgbm90IGluIHRoZSBgYS16YCByYW5nZS4g VGhpcyBjb21taXQgYWRkcyBzdXBwb3J0IGZvciB0aGF0IGFuZAphbHNvIGZvciBhIG5ldyBg bm90LWluLXJhbmdlYCBQRUcgcGF0dGVybiBmb3Igc2NoZW1lLgoKKiBtb2R1bGUvaWNlLTkv cGVnL2NvZGVnZW4uc2NtIChjZy1ub3QtaW4tcmFuZ2UpOiBOZXcgZnVuY3Rpb24uCiogbW9k dWxlL2ljZS05L3BlZy9zdHJpbmctcGVnLnNjbTogQWRkIHN1cHBvcnQgZm9yIGBbXi4uLl1g CiogdGVzdC1zdWl0ZS90ZXN0cy9wZWcudGVzdDogVGVzdCBpdC4KKiBkb2MvcmVmL2FwaS1w ZWcudGV4aTogRG9jdW1lbnQgYWNjb3JkaW5nbHkuCi0tLQogZG9jL3JlZi9hcGktcGVnLnRl eGkgICAgICAgICAgICB8ICA4ICsrKysrKysKIG1vZHVsZS9pY2UtOS9wZWcvY29kZWdlbi5z Y20gICAgfCAyMiArKysrKysrKysrKysrKysrKysrCiBtb2R1bGUvaWNlLTkvcGVnL3N0cmlu Zy1wZWcuc2NtIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiB0ZXN0 LXN1aXRlL3Rlc3RzL3BlZy50ZXN0ICAgICAgIHwgIDYgKysrKy0KIDQgZmlsZXMgY2hhbmdl ZCwgNzAgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mv cmVmL2FwaS1wZWcudGV4aSBiL2RvYy9yZWYvYXBpLXBlZy50ZXhpCmluZGV4IDg0YTllNmM2 Yi4uZWRiMDkwYjIwIDEwMDY0NAotLS0gYS9kb2MvcmVmL2FwaS1wZWcudGV4aQorKysgYi9k b2MvcmVmL2FwaS1wZWcudGV4aQpAQCAtMTQ3LDYgKzE0NywxNCBAQCBQYXJzZXMgYW55IGNo YXJhY3RlciBmYWxsaW5nIGJldHdlZW4gQHZhcnthfSBhbmQgQHZhcnt6fS4KIEBjb2Rleyhy YW5nZSAjXGEgI1x6KX0KIEBlbmQgZGVmdHAKIAorQGRlZnRwIHtQRUcgUGF0dGVybn0ge2lu dmVyc2UgcmFuZ2Ugb2YgY2hhcmFjdGVyc30gYSB6CitQYXJzZXMgYW55IGNoYXJhY3RlciBu b3QgZmFsbGluZyBiZXR3ZWVuIEB2YXJ7YX0gYW5kIEB2YXJ7en0uCisKK0Bjb2RleyJbXmEt el0ifQorCitAY29kZXsobm90LWluLXJhbmdlICNcYSAjXHopfQorQGVuZCBkZWZ0cAorCiBF eGFtcGxlOgogCiBAZXhhbXBsZQpkaWZmIC0tZ2l0IGEvbW9kdWxlL2ljZS05L3BlZy9jb2Rl Z2VuLnNjbSBiL21vZHVsZS9pY2UtOS9wZWcvY29kZWdlbi5zY20KaW5kZXggZDgwYzNlODQ5 Li44MjM2N2VmNTUgMTAwNjQ0Ci0tLSBhL21vZHVsZS9pY2UtOS9wZWcvY29kZWdlbi5zY20K KysrIGIvbW9kdWxlL2ljZS05L3BlZy9jb2RlZ2VuLnNjbQpAQCAtMTQwLDYgKzE0MCwyNyBA QCByZXR1cm4gRVhQLiIKICAgICAgICAgICAgICAgICAgICAgICAgICAoKG5vbmUpICNgKGxp c3QgKDErIHBvcykgJygpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAoZWxzZSAoZXJy b3IgImJhZCBhY2N1bSIgYWNjdW0pKSkpKSkpKSkpCiAKKzs7IEdlbmVyYXRlcyBjb2RlIGZv ciBtYXRjaGluZyBhIHJhbmdlIG9mIGNoYXJhY3RlcnMgbm90IGJldHdlZW4gc3RhcnQgYW5k IGVuZC4KKzs7IEUuZy46IChjZy1ub3QtaW4tcmFuZ2Ugc3ludGF4ICNcYSAjXHogJ2JvZHkp CisoZGVmaW5lIChjZy1ub3QtaW4tcmFuZ2UgcGF0IGFjY3VtKQorICAoc3ludGF4LWNhc2Ug cGF0ICgpCisgICAgKChzdGFydCBlbmQpCisgICAgIChpZiAobm90IChhbmQgKGNoYXI/IChz eW50YXgtPmRhdHVtICMnc3RhcnQpKQorICAgICAgICAgICAgICAgICAgIChjaGFyPyAoc3lu dGF4LT5kYXR1bSAjJ2VuZCkpKSkKKyAgICAgICAgIChlcnJvciAicmFuZ2UgUEVHIHNob3Vs ZCBoYXZlIGNoYXJhY3RlcnMgYWZ0ZXIgaXQ7IGluc3RlYWQgZ290IgorICAgICAgICAgICAg ICAgICMnc3RhcnQgIydlbmQpKQorICAgICAjYChsYW1iZGEgKHN0ciBsZW4gcG9zKQorICAg ICAgICAgKGFuZCAoPCBwb3MgbGVuKQorICAgICAgICAgICAgICAobGV0ICgoYyAoc3RyaW5n LXJlZiBzdHIgcG9zKSkpCisgICAgICAgICAgICAgICAgKGFuZCAob3IgKGNoYXI8PyBjIHN0 YXJ0KSAoY2hhcj4/IGMgZW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICMsKGNhc2UgYWNj dW0KKyAgICAgICAgICAgICAgICAgICAgICAgICAoKGFsbCkgI2AobGlzdCAoMSsgcG9zKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0ICdjZy1ub3Qt aW4tcmFuZ2UgKHN0cmluZyBjKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICgobmFt ZSkgI2AobGlzdCAoMSsgcG9zKSAnY2ctbm90LWluLXJhbmdlKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAoKGJvZHkpICNgKGxpc3QgKDErIHBvcykgKHN0cmluZyBjKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgKChub25lKSAjYChsaXN0ICgxKyBwb3MpICcoKSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgKGVsc2UgKGVycm9yICJiYWQgYWNjdW0iIGFjY3Vt KSkpKSkpKSkpKQorCiA7OyBHZW5lcmF0ZSBjb2RlIHRvIG1hdGNoIGEgcGF0dGVybiBhbmQg ZG8gbm90aGluZyB3aXRoIHRoZSByZXN1bHQKIChkZWZpbmUgKGNnLWlnbm9yZSBwYXQgYWNj dW0pCiAgIChzeW50YXgtY2FzZSBwYXQgKCkKQEAgLTMwNCw2ICszMjUsNyBAQCByZXR1cm4g RVhQLiIKICAgICAgICAgKGFzc3Etc2V0ISBwZWctY29tcGlsZXItYWxpc3Qgc3ltYm9sIGZ1 bmN0aW9uKSkpCiAKIChhZGQtcGVnLWNvbXBpbGVyISAncmFuZ2UgY2ctcmFuZ2UpCisoYWRk LXBlZy1jb21waWxlciEgJ25vdC1pbi1yYW5nZSBjZy1ub3QtaW4tcmFuZ2UpCiAoYWRkLXBl Zy1jb21waWxlciEgJ2lnbm9yZSBjZy1pZ25vcmUpCiAoYWRkLXBlZy1jb21waWxlciEgJ2Nh cHR1cmUgY2ctY2FwdHVyZSkKIChhZGQtcGVnLWNvbXBpbGVyISAnYW5kIGNnLWFuZCkKZGlm ZiAtLWdpdCBhL21vZHVsZS9pY2UtOS9wZWcvc3RyaW5nLXBlZy5zY20gYi9tb2R1bGUvaWNl LTkvcGVnL3N0cmluZy1wZWcuc2NtCmluZGV4IGY2ODg2NTNlZi4uMmQyZjk3MmZmIDEwMDY0 NAotLS0gYS9tb2R1bGUvaWNlLTkvcGVnL3N0cmluZy1wZWcuc2NtCisrKyBiL21vZHVsZS9p Y2UtOS9wZWcvc3RyaW5nLXBlZy5zY20KQEAgLTUzLDcgKzUzLDcgQEAgUHJlZml4IDwtLSAo QU5EIC8gTk9UKT8gU3VmZml4CiBTdWZmaXggPC0tIFByaW1hcnkgKFFVRVNUSU9OIC8gU1RB UiAvIFBMVVMpPwogUHJpbWFyeSA8LS0gSWRlbnRpZmllciAhTEVGVEFSUk9XCiAgICAgICAg ICAgIC8gT1BFTiBFeHByZXNzaW9uIENMT1NFCi0gICAgICAgICAgIC8gTGl0ZXJhbCAvIENs YXNzIC8gRE9UCisgICAgICAgICAgIC8gTGl0ZXJhbCAvIENsYXNzIC8gTm90SW5DbGFzcyAv IERPVAogCiAjIExleGljYWwgc3ludGF4CiBJZGVudGlmaWVyIDwtLSBJZGVudFN0YXJ0IElk ZW50Q29udCogU3BhY2luZwpAQCAtNjMsNyArNjMsOCBAQCBJZGVudENvbnQgPC0gSWRlbnRT dGFydCAvIFswLTldCiAKIExpdGVyYWwgPC0tIFNRVU9URSAoIVNRVU9URSBDaGFyKSogU1FV T1RFIFNwYWNpbmcKICAgICAgICAgLyBEUVVPVEUgKCFEUVVPVEUgQ2hhcikqIERRVU9URSBT cGFjaW5nCi1DbGFzcyA8LS0gJ1snICghJ10nIFJhbmdlKSogJ10nIFNwYWNpbmcKK05vdElu Q2xhc3MgPC0tICdbJyBOT1RJTiAgKCEnXScgUmFuZ2UpKiAnXScgU3BhY2luZworQ2xhc3Mg PC0tICdbJyAhTk9USU4gKCEnXScgUmFuZ2UpKiAnXScgU3BhY2luZwogUmFuZ2UgPC0tIENo YXIgJy0nIENoYXIgLyBDaGFyCiBDaGFyIDwtLSAnXFxcXCcgW25ydCdcIlxcW1xcXVxcXFxd CiAgICAgICAgLyAnXFxcXCcgWzAtN11bMC03XVswLTddCkBAIC03Niw2ICs3Nyw3IEBAIFNR VU9URSA8LS0gWyddCiBEUVVPVEUgPC0tIFtcIl0KIE9QRU5CUkFDS0VUIDwgJ1snCiBDTE9T RUJSQUNLRVQgPCAnXScKK05PVElOIDwgJ14nCiBTTEFTSCA8ICcvJyBTcGFjaW5nCiBBTkQg PC0tICcmJyBTcGFjaW5nCiBOT1QgPC0tICchJyBTcGFjaW5nCkBAIC0xMjAsNiArMTIyLDcg QEAgRW5kT2ZGaWxlIDwgIS4KICAgICAgIChhbmQgT1BFTiBFeHByZXNzaW9uIENMT1NFKQog ICAgICAgTGl0ZXJhbAogICAgICAgQ2xhc3MKKyAgICAgIE5vdEluQ2xhc3MKICAgICAgIERP VCkpCiAoZGVmaW5lLXNleHAtcGFyc2VyIElkZW50aWZpZXIgYWxsCiAgIChhbmQgSWRlbnRT dGFydCAoKiBJZGVudENvbnQpIFNwYWNpbmcpKQpAQCAtMTMxLDcgKzEzNCwxMSBAQCBFbmRP ZkZpbGUgPCAhLgogICAob3IgKGFuZCBTUVVPVEUgKCogKGFuZCAobm90LWZvbGxvd2VkLWJ5 IFNRVU9URSkgQ2hhcikpIFNRVU9URSBTcGFjaW5nKQogICAgICAgKGFuZCBEUVVPVEUgKCog KGFuZCAobm90LWZvbGxvd2VkLWJ5IERRVU9URSkgQ2hhcikpIERRVU9URSBTcGFjaW5nKSkp CiAoZGVmaW5lLXNleHAtcGFyc2VyIENsYXNzIGFsbAotICAoYW5kIE9QRU5CUkFDS0VUICgq IChhbmQgKG5vdC1mb2xsb3dlZC1ieSBDTE9TRUJSQUNLRVQpIFJhbmdlKSkgQ0xPU0VCUkFD S0VUIFNwYWNpbmcpKQorICAoYW5kIE9QRU5CUkFDS0VUIChub3QtZm9sbG93ZWQtYnkgTk9U SU4pCisgICAgICAgKCogKGFuZCAobm90LWZvbGxvd2VkLWJ5IENMT1NFQlJBQ0tFVCkgUmFu Z2UpKSBDTE9TRUJSQUNLRVQgU3BhY2luZykpCisoZGVmaW5lLXNleHAtcGFyc2VyIE5vdElu Q2xhc3MgYWxsCisgIChhbmQgT1BFTkJSQUNLRVQgTk9USU4KKyAgICAgICAoKiAoYW5kIChu b3QtZm9sbG93ZWQtYnkgQ0xPU0VCUkFDS0VUKSBSYW5nZSkpIENMT1NFQlJBQ0tFVCBTcGFj aW5nKSkKIChkZWZpbmUtc2V4cC1wYXJzZXIgUmFuZ2UgYWxsCiAgIChvciAoYW5kIENoYXIg REFTSCBDaGFyKSBDaGFyKSkKIChkZWZpbmUtc2V4cC1wYXJzZXIgQ2hhciBhbGwKQEAgLTE0 MSw2ICsxNDgsOCBAQCBFbmRPZkZpbGUgPCAhLgogICAgICAgKGFuZCAobm90LWZvbGxvd2Vk LWJ5ICJcXCIpIHBlZy1hbnkpKSkKIChkZWZpbmUtc2V4cC1wYXJzZXIgTEVGVEFSUk9XIGJv ZHkKICAgKGFuZCAob3IgIjwtLSIgIjwtIiAiPCIpIFNwYWNpbmcpKSA7IE5PVEU6IDwtLSBh bmQgPCBhcmUgZXh0ZW5zaW9ucworKGRlZmluZS1zZXhwLXBhcnNlciBOT1RJTiBub25lCisg IChhbmQgIl4iKSkKIChkZWZpbmUtc2V4cC1wYXJzZXIgU0xBU0ggbm9uZQogICAoYW5kICIv IiBTcGFjaW5nKSkKIChkZWZpbmUtc2V4cC1wYXJzZXIgQU5EIGFsbApAQCAtMjc1LDYgKzI4 NCw3IEBAIEVuZE9mRmlsZSA8ICEuCiAgICAgICAoJ0lkZW50aWZpZXIgKElkZW50aWZpZXIt PmRlZm4gdmFsdWUgZm9yLXN5bnRheCkpCiAgICAgICAoJ0V4cHJlc3Npb24gKEV4cHJlc3Np b24tPmRlZm4gdmFsdWUgZm9yLXN5bnRheCkpCiAgICAgICAoJ0xpdGVyYWwgICAgKExpdGVy YWwtPmRlZm4gdmFsdWUgZm9yLXN5bnRheCkpCisgICAgICAoJ05vdEluQ2xhc3MgKE5vdElu Q2xhc3MtPmRlZm4gdmFsdWUgZm9yLXN5bnRheCkpCiAgICAgICAoJ0NsYXNzICAgICAgKENs YXNzLT5kZWZuIHZhbHVlIGZvci1zeW50YXgpKSkpKQogCiA7OyAoSWRlbnRpZmllciAiaGVs bG8iKQpAQCAtMjg3LDEzICsyOTcsMzQgQEAgRW5kT2ZGaWxlIDwgIS4KIChkZWZpbmUgKExp dGVyYWwtPmRlZm4gbHN0IGZvci1zeW50YXgpCiAgIChhcHBseSBzdHJpbmcgKG1hcCAobGFt YmRhICh4KSAoQ2hhci0+ZGVmbiB4IGZvci1zeW50YXgpKSAoY2RyIGxzdCkpKSkKIAotOzsg VE9ETzogZW1wdHkgQ2xhc3MgY2FuIGhhcHBlbjogYFtdYCwgYnV0IHdoYXQgZG9lcyBpdCBy ZXByZXNlbnQ/Cis7OyAoTm90SW5DbGFzcyAuLi4pCis7OyAgYC0+IChhbmQgLi4uKQorKGRl ZmluZSAoTm90SW5DbGFzcy0+ZGVmbiBsc3QgZm9yLXN5bnRheCkKKyAgI2AoYW5kICMsQCht YXAgKGxhbWJkYSAoeCkgKE5vdEluUmFuZ2UtPmRlZm4geCBmb3Itc3ludGF4KSkKKyAgICAg ICAgICAgICAgICAgKGNkciBsc3QpKSkpCisKIDs7IChDbGFzcyAuLi4pCiA7OyAgYC0+IChv ciAuLi4pCiAoZGVmaW5lIChDbGFzcy0+ZGVmbiBsc3QgZm9yLXN5bnRheCkKICAgI2Aob3Ig IyxAKG1hcCAobGFtYmRhICh4KSAoUmFuZ2UtPmRlZm4geCBmb3Itc3ludGF4KSkKICAgICAg ICAgICAgICAgICAoY2RyIGxzdCkpKSkKIAorOzsgRm9yIG9uZSBjaGFyYWN0ZXI6Cis7OyAo Tm90SW5SYW5nZSAoQ2hhciAiYSIpKQorOzsgIGAtPiAobm90LWluLXJhbmdlICNcYSAjXGEp Cis7OyBPciBmb3IgYSByYW5nZToKKzs7IChOb3RJblJhbmdlIChDaGFyICJhIikgKENoYXIg ImIiKSkKKzs7ICBgLT4gKG5vdC1pbi1yYW5nZSAjXGEgI1xiKQorKGRlZmluZSAoTm90SW5S YW5nZS0+ZGVmbiBsc3QgZm9yLXN5bnRheCkKKyAgKGNvbmQKKyAgICAoKD0gMiAobGVuZ3Ro IGxzdCkpCisgICAgIChsZXQgKChjaCAoQ2hhci0+ZGVmbiAoc2Vjb25kIGxzdCkgZm9yLXN5 bnRheCkpKQorICAgICAgICNgKG5vdC1pbi1yYW5nZSAjLGNoICMsY2gpKSkKKyAgICAoKD0g MyAobGVuZ3RoIGxzdCkpCisgICAgICNgKG5vdC1pbi1yYW5nZQorICAgICAgICAgIywoQ2hh ci0+ZGVmbiAoc2Vjb25kIGxzdCkgZm9yLXN5bnRheCkKKyAgICAgICAgICMsKENoYXItPmRl Zm4gKHRoaXJkIGxzdCkgZm9yLXN5bnRheCkpKSkpCisKIDs7IEZvciBvbmUgY2hhcmFjdGVy OgogOzsgKFJhbmdlIChDaGFyICJhIikpCiA7OyAgYC0+ICJhIgpkaWZmIC0tZ2l0IGEvdGVz dC1zdWl0ZS90ZXN0cy9wZWcudGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvcGVnLnRlc3QKaW5k ZXggNTU2MTQ1ZTcyLi45NjVlMWMxMmYgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3VpdGUvdGVzdHMv cGVnLnRlc3QKKysrIGIvdGVzdC1zdWl0ZS90ZXN0cy9wZWcudGVzdApAQCAtMzgsNiArMzgs NyBAQAogICAgIChJZGVudGlmaWVyIElkZW50aWZpZXIpCiAgICAgKExpdGVyYWwgTGl0ZXJh bCkKICAgICAoQ2xhc3MgQ2xhc3MpCisgICAgKE5vdEluQ2xhc3MgTm90SW5DbGFzcykKICAg ICAoUmFuZ2UgUmFuZ2UpCiAgICAgKENoYXIgQ2hhcikKICAgICAoTEVGVEFSUk9XIExFRlRB UlJPVykKQEAgLTg1LDcgKzg2LDcgQEAKIEVuZCA8LS0gJyopJwogQyA8LSBCZWdpbiBOKiBF bmQKIE4gPC0gQyAvICghQmVnaW4gIUVuZCBaKQotWiA8LSAuIikKK1ogPC0gW15YLVpdIikg OzsgRm9yYmlkIHNvbWUgY2hhcmFjdGVycyB0byB0ZXN0IG5vdC1pbi1yYW5nZQogCiA7OyBB IHNob3J0IC9ldGMvcGFzc3dkIGZpbGUuCiAoZGVmaW5lICpldGMtcGFzc3dkKgpAQCAtMTI1 LDYgKzEyNiw5IEBAIFNMQVNIIDwgJy8nIikKICAgICAobWF0Y2gtcGF0dGVybiBDICIoKmJs YWgqKSIpCiAgICAgKG1ha2UtcHJlYyAwIDggIigqYmxhaCopIgogCSAgICAgICAnKChCZWdp biAiKCoiKSAiYmxhaCIgKEVuZCAiKikiKSkpKSkKKyAgKHBhc3MtaWYKKyAgICJzaW1wbGUg Y29tbWVudCB3aXRoIGZvcmJpZGRlbiBjaGFyIgorICAgKG5vdCAobWF0Y2gtcGF0dGVybiBD ICIoKmJsWWgqKSIpKSkKICAgKHBhc3MtaWYKICAgICJzaW1wbGUgY29tbWVudCBwYWRkZWQi CiAgICAoZXF1YWw/Ci0tIAoyLjQ2LjAKCg== --------------3N0zblOVoqBRwSKdoRkb0HaK--