From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:403:4876::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id yAN1FHW9o2VQxwAAe85BDQ:P1 (envelope-from ) for ; Sun, 14 Jan 2024 11:54:45 +0100 Received: from aspmx1.migadu.com ([2001:41d0:403:4876::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id yAN1FHW9o2VQxwAAe85BDQ (envelope-from ) for ; Sun, 14 Jan 2024 11:54:45 +0100 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b=c7M4D5yd; dmarc=pass (policy=none) header.from=posteo.net; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1705229685; h=from:from:sender:sender: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:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=LLy50wmSAALI0FtixG9F1G9w/ZiD5d6eLGd1s5vOqrw=; b=HtJXvy2JZMPRzog9VNox9NL5GoY7Oj0tf1+4zj0bOwoheGvqaXptHp3LcnsHvvn7RIy4y8 84Mut2HA+Lg5fCvZ7OT8yvfYJPVBKfNaauG2+G7d9AwoyIY5nrMVfn6bPehXeha606ERxJ pYy/Rj3gcX3/1HFJC7IqVNf+7ESgHykUnCWFGQguXkmDW9/G8nBA9/ncxrO6rsGnQWMimx 92phl1183vHyW3XmIzq9O82dVPjFO9+eMyK8unxEcLj4H8Icb5e7VENugyBrMDqnwnvMga 1s47t2UtmRoUsjkuXGUcxaEZhkaiNrLjjbLMHOUiYQoJCW+WkBadt85hSkhocQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1705229685; a=rsa-sha256; cv=none; b=HYgGy+D5wSeA5uKa7sWCRAghOHlvtLA0Qzc1FfSopDGf8stz5mQJOB6QYEZIPRCh+t4m1q aK9VZ1gY5q8jY5Mfo967r/0NM8s14lDJr1ugwurqXD5A2yAz+/1/h9cpT5YeevQE2mKSEP Y//NVU166mrTcX6tBdw3KqU4MoA5PXdH+wXjg5dsvkj3QiQ/qUOdxzT75I3/53IIRSFbd+ 5aLfUPda3BMVgID2+2VSaYaa/3hFo1I8H+1xJJ6H0Qg7cj2EjHY57fy7LgRQtYdLg0M3/L kTxw2qC7spQOUhDGDbHeERgJQZP67yw+EkJML2D48MLqJzHdsVjnhMeLdwRWlA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=posteo.net header.s=2017 header.b=c7M4D5yd; dmarc=pass (policy=none) header.from=posteo.net; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 8E00F694B4 for ; Sun, 14 Jan 2024 11:54:44 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rOy7o-0001PS-3K; Sun, 14 Jan 2024 05:53:56 -0500 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 1rOy7m-0001Oa-Dg for emacs-orgmode@gnu.org; Sun, 14 Jan 2024 05:53:54 -0500 Received: from mout02.posteo.de ([185.67.36.66]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rOy7j-0007lo-Vu for emacs-orgmode@gnu.org; Sun, 14 Jan 2024 05:53:54 -0500 Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 8835A240104 for ; Sun, 14 Jan 2024 11:53:48 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1705229628; bh=J4/emhRXRRn+UrE4oE/qa394DaTgzXmo43/s6RWViyA=; h=MIME-Version:Date:From:To:Cc:Subject:Message-ID:From; b=c7M4D5yd4B5noGatYt9asJqKjDXUKdeTmp8wL+3VKlcxbvwUZ5YPUTvGZiw0IyTLa 3UVyg0VohWL3hp7Fk0zkqrXWWUZ28Ab/uX6NxTTC6yCsaS8XPudUV2tChbfwtYhZVi ggsrH65NurPAstnMMVYp7FquvdILjN1XoCGDVskNP9WT/5Tl/drTrtlSldO2IvRDxf Q5A4By++f77WPAVKM1XtGBRM6m2mvYDI9WevglCBS9hDOLCSzqQ0vn69uXu7+cyNRO 10/IgsIXKzlX/ThnIvPJdkjsHABPY7p4wqcWu54UB2DHxYAAo+KrXkbB7LW/vvdgwb qOhNnoJUZNw5Q== Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4TCXFS0rCSz6twG; Sun, 14 Jan 2024 11:53:48 +0100 (CET) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_df799a003deed2dd1d05c173ed6940d4" Date: Sun, 14 Jan 2024 10:53:48 +0000 From: gerard.vermeulen@posteo.net To: Ihor Radchenko Cc: Emacs orgmode , emacs-orgmode-bounces+gerard.vermeulen=posteo.net@gnu.org Subject: Re: [PATCH] org-babel-demarcate-block: split using element API In-Reply-To: References: <7e41f9b6e9026a404e256f33371e974c@posteo.net> <87zfxq78ff.fsf@localhost> <87zfxo3taa.fsf@localhost> <87v88a78qd.fsf@localhost> <7f23ea966f0f0aad3fad29b0b96864f3@posteo.net> <87y1d55fc6.fsf@localhost> <37fdcc4bfcf734c2e5ec439d40b4f7d8@posteo.net> <878r50yqmo.fsf@localhost> <442006329cfba666710c989aece5191a@posteo.net> <261356c53e857e0bc4b04f884366edfa@posteo.net> <87bk9uy31w.fsf@localhost> <680e4a4fccf4f3c5c8f51d8215257eff@posteo.net> <87a5p9uute.fsf@localhost> Message-ID: Received-SPF: pass client-ip=185.67.36.66; envelope-from=gerard.vermeulen@posteo.net; helo=mout02.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Scanner: mx10.migadu.com X-Migadu-Spam-Score: -8.43 X-Spam-Score: -8.43 X-Migadu-Queue-Id: 8E00F694B4 X-TUID: C/t1LvAo8BuV --=_df799a003deed2dd1d05c173ed6940d4 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 13.01.2024 21:16, gerard.vermeulen@posteo.net wrote: > On 13.01.2024 16:17, Ihor Radchenko wrote: >> gerard.vermeulen@posteo.net writes: >> >>> Attached you'll find a new patch addressing all you issues. >> >> Thanks! >> I tried to run make test, and I am getting >> FAILED test-ob/demarcate-block ((should (string= region-text >> (org-trim (nth 1 info)))) :form (string= "mark this line as region" >> "") :value nil :explanation (arrays-of-different-length 24 0 "mark >> this line as region" "" first-mismatch-at 0)) > > I have improved a regexp used to mark a region in this sub-test > improving the robustness of the code. > Furthermore, I have replaced all occurrences of (set-mark (point)) > with (set-mark-command nil), but I doubt that this is the reason. > > Nevertheless, I feel I need to point out the limitation of this > particular > test case. > [...] > The text after (mark) and (point) is misaligned. > I tend to mark regions in a way that is compatible with the patch, > but some users won't (maybe they are willing to adapt). > > Patch attached. > I found a way to preserve the (current-column) of text after point and mark in the element API code so that point or region splitting behaves like main where the (current-column)'s remain preserved naturally. I think this is preferable with respect to the previous patch (at least it does not break the expectations of current users). It allowed a minor simplification of the sub-test that failed in your case. New patch attached. Regards -- Gerard --=_df799a003deed2dd1d05c173ed6940d4 Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; name=0001-org-babel-demarcate-block-split-using-element-API.patch Content-Disposition: attachment; filename=0001-org-babel-demarcate-block-split-using-element-API.patch; size=18975 RnJvbSBkYTQxZTUyNmVjYzJlOTAyNDYxYTI5MjU0NWMxOWExOGM4ZjFjNWFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZXJhcmQgVmVybWV1bGVuIDxnZXJhcmQudmVybWV1bGVuQHBv c3Rlby5uZXQ+CkRhdGU6IFRodSwgMTEgSmFuIDIwMjQgMjA6MjA6MDEgKzAxMDAKU3ViamVjdDog W1BBVENIXSBvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrOiBzcGxpdCB1c2luZyBlbGVtZW50IEFQ SQoKKiBsaXNwL29iLWJhYmVsLmVsIChvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrKTogTW9kaWZ5 IGEgY29weQpvZiAob3JnLWVsZW1lbnQtYXQtcG9pbnQpIHRvIHJlcGxhY2UgdGhlIG9sZCBzb3Vy Y2UgYmxvY2sgd2l0aCAyIG9yIDMKbmV3IG1vZGlmaWVkIGNvcGllcyBieSBtZWFucyBvZiBgb3Jn LWVsZW1lbnQtaW50ZXJwcmV0LWRhdGEnLiAgVGhlIDFzdApzb3VyY2UgYmxvY2sgY29udGFpbnMg dGhlIHRleHQgZnJvbSB0aGUgYm9keSBvZiB0aGUgb2xkIGJsb2NrIGJlZm9yZQpwb2ludCBvciBy ZWdpb24sIHRoZSAybmQgYmxvY2sgY29udGFpbnMgdGhlIGJvZHkgdGV4dCBhZnRlciBwb2ludCBv cgpib2R5IHRleHQgd2l0aGluIHJlZ2lvbiwgYW5kIGluIGNhc2Ugb2YgcmVnaW9uLCB0aGUgM3Jk IGJsb2NrIGNvbnRhaW5zCnRoZSB0ZXh0IGFmdGVyIHJlZ2lvbi4gIFRoZSBjYXB0aW9uIGFuZCB0 aGUgbmFtZSBhcmUgZGVsZXRlZCBmcm9tIHRoZQoxIG9yIDIgYmxvY2tzIGJlbG93IHRoZSB1cHBl ciBzb3VyY2UgYmxvY2suICBJbmRlbnQgYWxsIGJsb2NrcwppbW1lZGlhdGVseSBhZnRlciBpbnNl cnRpb24gKHBpdGZhbGwsIHNlZSBsaW5rKS4gIFVzZSA6cG9zdC1ibGFuayB0bwpjb250cm9sIHdo aXRlIGxpbmVzIGJldHdlZW4gaW5zZXJ0ZWQgYmxvY2tzLiAgTGVhdmUgcG9pbnQgYXQgdGhlIGxh c3QKaW5zZXJ0ZWQgYmxvY2suICBUYWtlIGNhcmUgdG8gcHJlc2VydmUgKGN1cnJlbnQtY29sdW1u KSBvZiB0ZXh0CmFmdGVyIHBvaW50IChhbmQgbWFyaykgaW4gdGhlIDJuZCAoYW5kIDNyZCkgYmxv Y2suICBUcnlpbmcgdG8gc3BsaXQKd2hlbiBwb2ludCBvciByZWdpb24gaXMgbm90IHdpdGhpbiB0 aGUgYm9keSBvZiB0aGUgb2xkIHNvdXJjZSBibG9jawpyYWlzZXMgYW4gdXNlci1lcnJvci4KKiBs aXNwL29iLWJhYmVsIChvcmctZ2V0LXNyYy1ibG9jay1pbmZvKTogYWRkIHRoZSAid2l0aGluIGJs YW5rIGxpbmVzCmFmdGVyIGEgc291cmNlIGJsb2NrIiBjb25kaXRpb24gdG8gdGhlIGRvYy1zdHJp bmcgdG8gbWF0Y2ggaXQgd2l0aCB0aGUKZG9jLXN0cmluZyBvZiBhbmQgYSBjb21tZW50IGluIGBv cmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrJy4KKiB0ZXN0aW5nL2xpc3AvdGVzdC1vYi5lbCAodGVz dC1vYi9kZW1hcmNhdGUtYmxvY2spOiBOZXcgdGVzdC4gIEl0CmNoZWNrcyB0ZXN0IGNhc2VzIHRo YXQgYnJva2UgZWFybGllciB2ZXJzaW9ucyBvZiB0aGlzIHBhdGNoLgoKTGluazogaHR0cHM6Ly9s aXN0Lm9yZ21vZGUub3JnLzg3cGx5Nm55dWUuZnNmQGxvY2FsaG9zdC8KLS0tCiBsaXNwL29iLWNv cmUuZWwgICAgICAgICB8ICA5NCArKysrKysrKysrKystLS0tLQogdGVzdGluZy9saXNwL3Rlc3Qt b2IuZWwgfCAyMjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBm aWxlcyBjaGFuZ2VkLCAyODkgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvbGlzcC9vYi1jb3JlLmVsIGIvbGlzcC9vYi1jb3JlLmVsCmluZGV4IDFkZTNhZjZhZC4u ZTIwMGY4MmMwIDEwMDY0NAotLS0gYS9saXNwL29iLWNvcmUuZWwKKysrIGIvbGlzcC9vYi1jb3Jl LmVsCkBAIC03MywxMCArNzMsMTIgQEAKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1lbGVtZW50LXBh cmVudCAib3JnLWVsZW1lbnQtYXN0IiAobm9kZSkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZWxl bWVudC10eXBlICJvcmctZWxlbWVudC1hc3QiIChub2RlICZvcHRpb25hbCBhbm9ueW1vdXMpKQog KGRlY2xhcmUtZnVuY3Rpb24gb3JnLWVsZW1lbnQtdHlwZS1wICJvcmctZWxlbWVudC1hc3QiIChu b2RlICZvcHRpb25hbCB0eXBlcykpCisoZGVjbGFyZS1mdW5jdGlvbiBvcmctZWxlbWVudC1pbnRl cnByZXQtZGF0YSAib3JnLWVsZW1lbnQiIChkYXRhKSkKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1l bnRyeS1nZXQgIm9yZyIgKHBvbSBwcm9wZXJ0eSAmb3B0aW9uYWwgaW5oZXJpdCBsaXRlcmFsLW5p bCkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZXNjYXBlLWNvZGUtaW4tcmVnaW9uICJvcmctc3Jj IiAoYmVnIGVuZCkpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZm9yd2FyZC1oZWFkaW5nLXNhbWUt bGV2ZWwgIm9yZyIgKGFyZyAmb3B0aW9uYWwgaW52aXNpYmxlLW9rKSkKIChkZWNsYXJlLWZ1bmN0 aW9uIG9yZy1pbi1jb21tZW50ZWQtaGVhZGluZy1wICJvcmciICgmb3B0aW9uYWwgbm8taW5oZXJp dGFuY2UpKQorKGRlY2xhcmUtZnVuY3Rpb24gb3JnLWluZGVudC1ibG9jayAib3JnIiAoKSkKIChk ZWNsYXJlLWZ1bmN0aW9uIG9yZy1pbmRlbnQtbGluZSAib3JnIiAoKSkKIChkZWNsYXJlLWZ1bmN0 aW9uIG9yZy1saXN0LWdldC1saXN0LWVuZCAib3JnLWxpc3QiIChpdGVtIHN0cnVjdCBwcmV2cykp CiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctbGlzdC1wcmV2cy1hbGlzdCAib3JnLWxpc3QiIChzdHJ1 Y3QpKQpAQCAtNzAwLDggKzcwMiw5IEBAIEJ5IGRlZmF1bHQsIGNvbnNpZGVyIHRoZSBibG9jayBh dCBwb2ludC4gIEhvd2V2ZXIsIHdoZW4gb3B0aW9uYWwKIGFyZ3VtZW50IERBVFVNIGlzIHByb3Zp ZGVkLCBleHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhhdCBwYXJzZWQKIG9iamVjdCBpbnN0ZWFk LgogCi1SZXR1cm4gbmlsIGlmIHBvaW50IGlzIG5vdCBvbiBhIHNvdXJjZSBibG9jay4gIE90aGVy d2lzZSwgcmV0dXJuCi1hIGxpc3Qgd2l0aCB0aGUgZm9sbG93aW5nIHBhdHRlcm46CitSZXR1cm4g bmlsIGlmIHBvaW50IGlzIG5vdCBvbiBhIHNvdXJjZSBibG9jayAoYmxhbmsgbGluZXMgYWZ0ZXIg YQorc291cmNlIGJsb2NrIGFyZSBjb25zaWRlcmVkIGEgcGFydCBvZiB0aGF0IHNvdXJjZSBibG9j aykuCitPdGhlcndpc2UsIHJldHVybiBhIGxpc3Qgd2l0aCB0aGUgZm9sbG93aW5nIHBhdHRlcm46 CiAKICAgKGxhbmd1YWdlIGJvZHkgYXJndW1lbnRzIHN3aXRjaGVzIG5hbWUgc3RhcnQgY29kZXJl ZikiCiAgIChsZXQqICgoZGF0dW0gKG9yIGRhdHVtIChvcmctZWxlbWVudC1jb250ZXh0KSkpCkBA IC0yMDUxLDcgKzIwNTQsNyBAQCBXaXRoIG9wdGlvbmFsIHByZWZpeCBhcmd1bWVudCBBUkcsIGp1 bXAgYmFja3dhcmQgQVJHIG1hbnkgc291cmNlIGJsb2Nrcy4iCiAgICAgICAoZ290by1jaGFyICht YXRjaC1iZWdpbm5pbmcgNSkpKSkpCiAKIChkZWZ1biBvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2Nr ICgmb3B0aW9uYWwgYXJnKQotICAiV3JhcCBvciBzcGxpdCB0aGUgY29kZSBpbiB0aGUgcmVnaW9u IG9yIG9uIHRoZSBwb2ludC4KKyAgIldyYXAgb3Igc3BsaXQgdGhlIGNvZGUgaW4gYW4gYWN0aXZl IHJlZ2lvbiBvciBhdCBwb2ludC4KIAogV2l0aCBwcmVmaXggYXJndW1lbnQgQVJHLCBhbHNvIGNy ZWF0ZSBhIG5ldyBoZWFkaW5nIGF0IHBvaW50LgogCkBAIC0yMDYxLDQxICsyMDY0LDc2IEBAIGlz IGNyZWF0ZWQuICBJbiBib3RoIGNhc2VzIGlmIHRoZSByZWdpb24gaXMgZGVtYXJjYXRlZCBhbmQg aWYgdGhlCiByZWdpb24gaXMgbm90IGFjdGl2ZSB0aGVuIHRoZSBwb2ludCBpcyBkZW1hcmNhdGVk LgogCiBXaGVuIGNhbGxlZCB3aXRoaW4gYmxhbmsgbGluZXMgYWZ0ZXIgYSBjb2RlIGJsb2NrLCBj cmVhdGUgYSBuZXcgY29kZQotYmxvY2sgb2YgdGhlIHNhbWUgbGFuZ3VhZ2Ugd2l0aCB0aGUgcHJl dmlvdXMuIgorYmxvY2sgb2YgdGhlIHNhbWUgbGFuZ3VhZ2UgYXMgdGhlIHByZXZpb3VzLiIKICAg KGludGVyYWN0aXZlICJQIikKICAgKGxldCogKChpbmZvIChvcmctYmFiZWwtZ2V0LXNyYy1ibG9j ay1pbmZvICduby1ldmFsKSkKIAkgKHN0YXJ0IChvcmctYmFiZWwtd2hlcmUtaXMtc3JjLWJsb2Nr LWhlYWQpKQogICAgICAgICAgOzsgYHN0YXJ0JyB3aWxsIGJlIG5pbCB3aGVuIHdpdGhpbiBzcGFj ZSBsaW5lcyBhZnRlciBzcmMgYmxvY2suCiAJIChibG9jayAoYW5kIHN0YXJ0IChtYXRjaC1zdHJp bmcgMCkpKQotCSAoaGVhZGVycyAoYW5kIHN0YXJ0IChtYXRjaC1zdHJpbmcgNCkpKQorICAgICAg ICAgKGJvZHktYmVnIChhbmQgc3RhcnQgKG1hdGNoLWJlZ2lubmluZyA1KSkpCisgICAgICAgICAo Ym9keS1lbmQgKGFuZCBzdGFydCAobWF0Y2gtZW5kIDUpKSkKIAkgKHN0YXJzIChjb25jYXQgKG1h a2Utc3RyaW5nIChvciAob3JnLWN1cnJlbnQtbGV2ZWwpIDEpID8qKSAiICIpKQogCSAodXBwZXIt Y2FzZS1wIChhbmQgYmxvY2sKIAkJCSAgICAobGV0IChjYXNlLWZvbGQtc2VhcmNoKQogCQkJICAg ICAgKHN0cmluZy1tYXRjaC1wICIjXFwrQkVHSU5fU1JDIiBibG9jaykpKSkpCiAgICAgKGlmIChh bmQgaW5mbyBzdGFydCkgOzsgQXQgc3JjIGJsb2NrLCBidXQgbm90IHdpdGhpbiBibGFuayBsaW5l cyBhZnRlciBpdC4KLSAgICAgICAgKG1hcGMKLSAgICAgICAgIChsYW1iZGEgKHBsYWNlKQotICAg ICAgICAgICAoc2F2ZS1leGN1cnNpb24KLSAgICAgICAgICAgICAoZ290by1jaGFyIHBsYWNlKQot ICAgICAgICAgICAgIChsZXQgKChsYW5nIChudGggMCBpbmZvKSkKLSAgICAgICAgICAgICAgICAg ICAoaW5kZW50IChtYWtlLXN0cmluZyAob3JnLWN1cnJlbnQtdGV4dC1pbmRlbnRhdGlvbikgP1xz KSkpCi0JICAgICAgICh3aGVuIChzdHJpbmctbWF0Y2ggIl5bWzpzcGFjZTpdXSokIgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZyAobGluZS1iZWdp bm5pbmctcG9zaXRpb24pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChsaW5lLWVuZC1wb3NpdGlvbikpKQotICAgICAgICAgICAgICAgICAoZGVs ZXRlLXJlZ2lvbiAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pIChsaW5lLWVuZC1wb3NpdGlvbikp KQotICAgICAgICAgICAgICAgKGluc2VydCAoY29uY2F0Ci0JCSAgICAgICAgKGlmIChsb29raW5n LWF0ICJeIikgIiIgIlxuIikKLQkJICAgICAgICBpbmRlbnQgKGlmIHVwcGVyLWNhc2UtcCAiIytF TkRfU1JDXG4iICIjK2VuZF9zcmNcbiIpCi0JCSAgICAgICAgKGlmIGFyZyBzdGFycyBpbmRlbnQp ICJcbiIKLQkJICAgICAgICBpbmRlbnQgKGlmIHVwcGVyLWNhc2UtcCAiIytCRUdJTl9TUkMgIiAi IytiZWdpbl9zcmMgIikKLQkJICAgICAgICBsYW5nCi0JCSAgICAgICAgKGlmICg+IChsZW5ndGgg aGVhZGVycykgMSkKLQkJCSAgICAoY29uY2F0ICIgIiBoZWFkZXJzKSBoZWFkZXJzKQotCQkgICAg ICAgIChpZiAobG9va2luZy1hdCAiW1xuXHJdIikKLQkJCSAgICAiIgotCQkJICAoY29uY2F0ICJc biIgKG1ha2Utc3RyaW5nIChjdXJyZW50LWNvbHVtbikgPyApKSkpKSkpCi0JICAgKG1vdmUtZW5k LW9mLWxpbmUgMikpCi0gICAgICAgICAoc29ydCAoaWYgKG9yZy1yZWdpb24tYWN0aXZlLXApIChs aXN0IChtYXJrKSAocG9pbnQpKSAobGlzdCAocG9pbnQpKSkgIyc+KSkKKyAgICAgICAgKGxldCog KChjb3B5IChvcmctZWxlbWVudC1jb3B5IChvcmctZWxlbWVudC1hdC1wb2ludCkpKQorICAgICAg ICAgICAgICAgKGJlZm9yZSAob3JnLWVsZW1lbnQtYmVnaW4gY29weSkpCisgICAgICAgICAgICAg ICAoYmV5b25kIChvcmctZWxlbWVudC1lbmQgY29weSkpCisgICAgICAgICAgICAgICAocGFydHMK KyAgICAgICAgICAgICAgICAoaWYgKG9yZy1yZWdpb24tYWN0aXZlLXApCisgICAgICAgICAgICAg ICAgICAgIChsaXN0IGJvZHktYmVnIChyZWdpb24tYmVnaW5uaW5nKSAocmVnaW9uLWVuZCkgYm9k eS1lbmQpCisgICAgICAgICAgICAgICAgICAobGlzdCBib2R5LWJlZyAocG9pbnQpIGJvZHktZW5k KSkpCisgICAgICAgICAgICAgICAocGFkcyA7OyBUbyBjYWxjdWxhdGUgbGVmdC1zaWRlIHdoaXRl LXNwYWNlIHBhZGRpbmcuCisgICAgICAgICAgICAgICAgKGlmIChvcmctcmVnaW9uLWFjdGl2ZS1w KQorICAgICAgICAgICAgICAgICAgICAobGlzdCAocmVnaW9uLWJlZ2lubmluZykgKHJlZ2lvbi1l bmQpKQorICAgICAgICAgICAgICAgICAgKGxpc3QgKHBvaW50KSkpKQorICAgICAgICAgICAgICAg KG4gKC0gKGxlbmd0aCBwYXJ0cykgMikpIDs7IDEgb3IgMiBwYXJ0cyBpbiBgZG9saXN0JyBiZWxv dy4KKyAgICAgICAgICAgICAgIDs7IGBwb3N0LWJsYW5rJyBjYWNoZXMgdGhlIHByb3BlcnR5IGJl Zm9yZSBzZXR0aW5nIGl0IHRvIDAuCisgICAgICAgICAgICAgICAocG9zdC1ibGFuayAob3JnLWVs ZW1lbnQtcHJvcGVydHkgOnBvc3QtYmxhbmsgY29weSkpKQorICAgICAgICAgIDs7IFBvaW50IG9y IHJlZ2lvbiBhcmUgd2l0aGluIGJvZHkgd2hlbiBwYXJ0cyBpcyBpbiBpbmNyZWFzaW5nIG9yZGVy LgorICAgICAgICAgICh1bmxlc3MgKGFwcGx5ICMnPD0gcGFydHMpCisgICAgICAgICAgICAodXNl ci1lcnJvciAiU2VsZWN0IHdpdGhpbiB0aGUgc291cmNlIGJsb2NrIGJvZHkgdG8gc3BsaXQgaXQi KSkKKyAgICAgICAgICAoc2V0cSBwYXJ0cyAobWFwY2FyIChsYW1iZGEgKHApIChidWZmZXItc3Vi c3RyaW5nIChjYXIgcCkgKGNkciBwKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c2VxLW1hcG4gIydjb25zIHBhcnRzIChjZHIgcGFydHMpKSkpCisgICAgICAgICAgOzsgTWFwIHBv c2l0aW9ucyB0byBjb2x1bW5zIGZvciB3aGl0ZS1zcGFjZSBwYWRkaW5nLgorICAgICAgICAgIChz ZXRxIHBhZHMgKG1hcGNhciAobGFtYmRhIChwKSAoc2F2ZS1leGN1cnNpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHApCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhZHMpKQorICAgICAgICAgIChwdXNoIDAgcGFkcykg OzsgVGhlIDFzdCBwYXJ0IG5ldmVyIHJlcXVpcmVzIHdoaXRlLXNwYWNlIHBhZGRpbmcuCisgICAg ICAgICAgKHNldHEgcGFydHMgKG1hcGNhciAobGFtYmRhIChwKSAoc3RyaW5nLWpvaW4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCAobWFrZS1zdHJpbmcg KGNhciBwKSA/XHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGNkciBwKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlcS1tYXBu ICMnY29ucyBwYWRzIHBhcnRzKSkpCisgICAgICAgICAgKGRlbGV0ZS1yZWdpb24gYmVmb3JlIGJl eW9uZCkKKyAgICAgICAgICA7OyBTZXQgYDpwb3N0LWJsYW5rJyB0byAwLiAgV2UgdGFrZSBjYXJl IG9mIHNwYWNpbmcgYmV0d2VlbiBibG9ja3MuCisgICAgICAgICAgKG9yZy1lbGVtZW50LXB1dC1w cm9wZXJ0eSBjb3B5IDpwb3N0LWJsYW5rIDApCisgICAgICAgICAgKG9yZy1lbGVtZW50LXB1dC1w cm9wZXJ0eSBjb3B5IDp2YWx1ZSAoY2FyIHBhcnRzKSkKKyAgICAgICAgICAoaW5zZXJ0IChvcmct ZWxlbWVudC1pbnRlcnByZXQtZGF0YSBjb3B5KSkKKyAgICAgICAgICA7OyBgb3JnLWluZGVudC1i bG9jaycgbWF5IHNlZSBhbm90aGVyIGBvcmctZWxlbWVudCcgKGUuZy4gcGFyYWdyYXBoKQorICAg ICAgICAgIDs7IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBibG9jay4gIEVuc3VyZSB0byBpbmRlbnQg dGhlIGluc2VydGVkIGJsb2NrCisgICAgICAgICAgOzsgYW5kIG1vdmUgcG9pbnQgdG8gaXRzIGVu ZC4KKyAgICAgICAgICAob3JnLWJhYmVsLXByZXZpb3VzLXNyYy1ibG9jayAxKQorICAgICAgICAg IChvcmctaW5kZW50LWJsb2NrKQorICAgICAgICAgIChnb3RvLWNoYXIgKG9yZy1lbGVtZW50LWVu ZCAob3JnLWVsZW1lbnQtYXQtcG9pbnQpKSkKKyAgICAgICAgICAob3JnLWVsZW1lbnQtcHV0LXBy b3BlcnR5IGNvcHkgOmNhcHRpb24gbmlsKQorICAgICAgICAgIChvcmctZWxlbWVudC1wdXQtcHJv cGVydHkgY29weSA6bmFtZSBuaWwpCisgICAgICAgICAgOzsgSW5zZXJ0IHRoZSAybmQgYmxvY2ss IGFuZCB0aGUgM3JkIGJsb2NrIHdoZW4gcmVnaW9uIGlzIGFjdGl2ZS4KKyAgICAgICAgICAoZG9s aXN0IChwYXJ0IChjZHIgcGFydHMpKQorICAgICAgICAgICAgKG9yZy1lbGVtZW50LXB1dC1wcm9w ZXJ0eSBjb3B5IDp2YWx1ZSBwYXJ0KQorICAgICAgICAgICAgKGluc2VydCAoaWYgYXJnIChjb25j YXQgc3RhcnMgIlxuIikgIlxuIikpCisgICAgICAgICAgICAoY2wtZGVjZiBuKQorICAgICAgICAg ICAgKHdoZW4gKD0gbiAwKQorICAgICAgICAgICAgICA7OyBVc2UgYHBvc3QtYmxhbmsnIHRvIHJl c2V0IHRoZSBwcm9wZXJ0eSBvZiB0aGUgbGFzdCBibG9jay4KKyAgICAgICAgICAgICAgKG9yZy1l bGVtZW50LXB1dC1wcm9wZXJ0eSBjb3B5IDpwb3N0LWJsYW5rIHBvc3QtYmxhbmspKQorICAgICAg ICAgICAgKGluc2VydCAob3JnLWVsZW1lbnQtaW50ZXJwcmV0LWRhdGEgY29weSkpCisgICAgICAg ICAgICA7OyBFbnN1cmUgdG8gaW5kZW50IHRoZSBpbnNlcnRlZCBibG9jayBhbmQgbW92ZSBwb2lu dCB0byBpdHMgZW5kLgorICAgICAgICAgICAgKG9yZy1iYWJlbC1wcmV2aW91cy1zcmMtYmxvY2sg MSkKKyAgICAgICAgICAgIChvcmctaW5kZW50LWJsb2NrKQorICAgICAgICAgICAgKGdvdG8tY2hh ciAob3JnLWVsZW1lbnQtZW5kIChvcmctZWxlbWVudC1hdC1wb2ludCkpKSkKKyAgICAgICAgICA7 OyBMZWF2ZSBwb2ludCBhdCB0aGUgbGFzdCBpbnNlcnRlZCBibG9jay4KKyAgICAgICAgICAoZ290 by1jaGFyIChvcmctYmFiZWwtcHJldmlvdXMtc3JjLWJsb2NrIDEpKSkKICAgICAgIChsZXQgKChz dGFydCAocG9pbnQpKQogCSAgICAobGFuZyAob3IgKGNhciBpbmZvKSA7IFJldXNlIGxhbmd1YWdl IGZyb20gcHJldmlvdXMgYmxvY2suCiAgICAgICAgICAgICAgICAgICAgICAgKGNvbXBsZXRpbmct cmVhZApkaWZmIC0tZ2l0IGEvdGVzdGluZy9saXNwL3Rlc3Qtb2IuZWwgYi90ZXN0aW5nL2xpc3Av dGVzdC1vYi5lbAppbmRleCA0MmM3N2NhNTYuLjk1ZGM0NDRmOSAxMDA2NDQKLS0tIGEvdGVzdGlu Zy9saXNwL3Rlc3Qtb2IuZWwKKysrIGIvdGVzdGluZy9saXNwL3Rlc3Qtb2IuZWwKQEAgLTI2LDYg KzI2LDIyOSBAQAogKHJlcXVpcmUgJ29yZy10YWJsZSkKIChldmFsLWFuZC1jb21waWxlIChyZXF1 aXJlICdjbC1saWIpKQogCisoZXJ0LWRlZnRlc3QgdGVzdC1vYi9kZW1hcmNhdGUtYmxvY2sgKCkK KyAgIlRlc3Qgc3BsaXR0aW5nIGFuZCB3cmFwcGluZyBieSBkZW1hcmNhdGlvbi4iCisgIDs7IFRl c3Qgc3BsaXR0aW5nIHdpdGggZHVwbGljYXRpb24gb2YgbGFuZ3VhZ2UsIGJvZHksIHN3aXRjaGVz LCBhbmQgaGVhZGVycy4KKyAgKGxldCAoKGNhcHRpb24gIiMrY2FwdGlvbjogY2FwdGlvbi4iKQor ICAgICAgICAocmVnZXhwIChyeCAiIytjYXB0aW9uOiBjYXB0aW9uLiIpKQorICAgICAgICAob3Jn LWFkYXB0LWluZGVudGF0aW9uIG5pbCkpCisgICAgKG9yZy10ZXN0LXdpdGgtdGVtcC10ZXh0IChm b3JtYXQgIgorJXMKKyMraGVhZGVyOiA6dmFyIGVkZ2U9XCJhbHNvIGR1cGxpY2F0ZWRcIgorIyto ZWFkZXI6IDp3cmFwIFwic3JjIGFueS1zcGFuaXNoIC1uXCIKKyMrbmFtZTogTm9ib2R5CisjK2Jl Z2luX3NyYyBhbnktZW5nbGlzaCAtaSAtbiA6dmFyIGhlcmU9XCJkdXBsaWNhdGVkXCIgOndyYXAg XCJzcmMgYW55LWVuZ2xpc2ggLW5cIgorCithYm92ZSBzcGxpdAorPHBvaW50PgorYmVsb3cgc3Bs aXQKKworIytlbmRfc3JjCitkbyBub3Qgb3JnLWluZGVudC1ibG9jayB0ZXh0IGhlcmUKKyIgY2Fw dGlvbikKKyAgICAgIChsZXQgKCh3cmFwLXZhbCAic3JjIGFueS1zcGFuaXNoIC1uIikgYWJvdmUg YmVsb3cgYXZhcnMgYnZhcnMpCisgICAgICAgIChvcmctYmFiZWwtZGVtYXJjYXRlLWJsb2NrKQor ICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAgICAgICAob3JnLWJhYmVsLW5leHQt c3JjLWJsb2NrKSA7OyB1cHBlciBzb3VyY2UgYmxvY2sKKyAgICAgICAgKHNldHEgYWJvdmUgKG9y Zy1iYWJlbC1nZXQtc3JjLWJsb2NrLWluZm8pKQorICAgICAgICAoc2V0cSBhdmFycyAob3JnLWJh YmVsLS1nZXQtdmFycyAobnRoIDIgYWJvdmUpKSkKKyAgICAgICAgKG9yZy1iYWJlbC1uZXh0LXNy Yy1ibG9jaykgOzsgbG93ZXIgc291cmNlIGJsb2NrCisgICAgICAgIChzZXRxIGJlbG93IChvcmct YmFiZWwtZ2V0LXNyYy1ibG9jay1pbmZvKSkKKyAgICAgICAgKHNldHEgYnZhcnMgKG9yZy1iYWJl bC0tZ2V0LXZhcnMgKG50aCAyIGJlbG93KSkpCisgICAgICAgIDs7IGR1cGxpY2F0ZWQgbXVsdGkt bGluZSBoZWFkZXIgYXJndW1lbnRzOgorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJhbHNvIGR1 cGxpY2F0ZWQiIChjZHIgKGFzc3EgJ2VkZ2UgYXZhcnMpKSkpCisgICAgICAgIChzaG91bGQgKHN0 cmluZz0gImFsc28gZHVwbGljYXRlZCIgKGNkciAoYXNzcSAnZWRnZSBidmFycykpKSkKKyAgICAg ICAgKHNob3VsZCAoc3RyaW5nPSB3cmFwLXZhbCAoY2RyIChhc3NxIDp3cmFwIChudGggMiBhYm92 ZSkpKSkpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0gd3JhcC12YWwgKGNkciAoYXNzcSA6d3Jh cCAobnRoIDIgYmVsb3cpKSkpKQorICAgICAgICA7OyBkdXBsaWNhdGVkIGxhbmd1YWdlLCBvdGhl ciBoZWFkZXIgYXJndW1lbnRzLCBhbmQgc3dpdGNoZXM6CisgICAgICAgIChzaG91bGQgKHN0cmlu Zz0gImFueS1lbmdsaXNoIiAobnRoIDAgYWJvdmUpKSkKKyAgICAgICAgKHNob3VsZCAoc3RyaW5n PSAiYW55LWVuZ2xpc2giIChudGggMCBiZWxvdykpKQorICAgICAgICAoc2hvdWxkIChzdHJpbmc9 ICJhYm92ZSBzcGxpdCIgKG9yZy10cmltIChudGggMSBhYm92ZSkpKSkKKyAgICAgICAgKHNob3Vs ZCAoc3RyaW5nPSAiYmVsb3cgc3BsaXQiIChvcmctdHJpbSAobnRoIDEgYmVsb3cpKSkpCisgICAg ICAgIChzaG91bGQgKHN0cmluZz0gImR1cGxpY2F0ZWQiIChjZHIgKGFzc3EgJ2hlcmUgYXZhcnMp KSkpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0gImR1cGxpY2F0ZWQiIChjZHIgKGFzc3EgJ2hl cmUgYnZhcnMpKSkpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0gIi1pIC1uIiAobnRoIDMgYWJv dmUpKSkKKyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiLWkgLW4iIChudGggMyBiZWxvdykpKQor ICAgICAgICA7OyBub24tZHVwbGljYXRpb24gb2YgbmFtZSBhbmQgY2FwdGlvbiwgd2hpY2ggaXMg bm90IGluIGFib3ZlL2JlbG93LgorICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJOb2JvZHkiIChu dGggNCBhYm92ZSkpKQorICAgICAgICAoc2hvdWxkLW5vdCAoc3RyaW5nPSAiIiAobnRoIDQgYmVs b3cpKSkKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgKHNob3VsZCAo cmUtc2VhcmNoLWZvcndhcmQgcmVnZXhwKSkKKyAgICAgICAgKHNob3VsZC1ub3QgKHJlLXNlYXJj aC1mb3J3YXJkIHJlZ2V4cCBuaWwgJ25vZXJyb3IpKSkpKQorICA7OyBUZXN0IHdyYXBwaW5nIHBv aW50IGluIGJsYW5rIGxpbmVzIGJlbG93IHNvdXJjZSBibG9jaworICAob3JnLXRlc3Qtd2l0aC10 ZW1wLXRleHQgIgorIytiZWdpbl9zcmMgYW55LWxhbmd1YWdlIC1pIC1uIDp2YXIgaGVyZT1cIm5v dCBkdXBsaWNhdGVkXCIKK3RvIHVwcGVyIGJsb2NrCisjK2VuZF9zcmMKKzxwb2ludD4KKyIKKyAg ICAobGV0IChpbmZvIHZhcnMpCisgICAgICAob3JnLWJhYmVsLWRlbWFyY2F0ZS1ibG9jaykKKyAg ICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAob3JnLWJhYmVsLW5leHQtc3JjLWJs b2NrKQorICAgICAgKHNldHEgaW5mbyAob3JnLWJhYmVsLWdldC1zcmMtYmxvY2staW5mbykpICA7 OyB1cHBlciBzb3VyY2UgYmxvY2sgaW5mbworICAgICAgKHNldHEgdmFycyAob3JnLWJhYmVsLS1n ZXQtdmFycyAobnRoIDIgaW5mbykpKQorICAgICAgKHNob3VsZCAoc3RyaW5nPSAiYW55LWxhbmd1 YWdlIiAobnRoIDAgaW5mbykpKQorICAgICAgKHNob3VsZCAoc3RyaW5nPSAidG8gdXBwZXIgYmxv Y2siIChvcmctdHJpbSAobnRoIDEgaW5mbykpKSkKKyAgICAgIChzaG91bGQgKHN0cmluZz0gIm5v dCBkdXBsaWNhdGVkIiAoY2RyIChhc3NxICdoZXJlIHZhcnMpKSkpCisgICAgICAoc2hvdWxkIChz dHJpbmc9ICItaSAtbiIgKG50aCAzIGluZm8pKSkKKyAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMt YmxvY2spCisgICAgICAoc2V0cSBpbmZvIChvcmctYmFiZWwtZ2V0LXNyYy1ibG9jay1pbmZvKSkg OzsgbG93ZXIgc291cmNlIGJsb2NrIGluZm8KKyAgICAgIChzZXRxIHZhcnMgKG9yZy1iYWJlbC0t Z2V0LXZhcnMgKG50aCAyIGluZm8pKSkKKyAgICAgIChzaG91bGQgKHN0cmluZz0gImFueS1sYW5n dWFnZSIgKG50aCAwIGluZm8pKSkKKyAgICAgIChzaG91bGQgKHN0cmluZz0gIiIgKG9yZy10cmlt IChudGggMSBpbmZvKSkpKQorICAgICAgKHNob3VsZC1ub3QgdmFycykKKyAgICAgIChzaG91bGQg KHN0cmluZz0gIiIgKG50aCAzIGluZm8pKSkpKQorICA7OyBUZXN0IHdyYXBwaW5nIHJlZ2lvbiBp biBibGFuayBsaW5lcyBiZWxvdyBzb3VyY2UgYmxvY2sKKyAgKGxldCAoKHJlZ2lvbi10ZXh0ICJt YXJrIHRoaXMgbGluZSBhcyByZWdpb24iKSkKKyAgICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQg KGZvcm1hdCAiCisjK2JlZ2luX3NyYyBhbnktbGFuZ3VhZ2UgLWkgLW4gOnZhciBoZXJlPVwibm90 IGR1cGxpY2F0ZWRcIgordG8gdXBwZXIgYmxvY2sKKyMrZW5kX3NyYworCislcworIiByZWdpb24t dGV4dCkKKyAgICAgIChsZXQgKGluZm8gdmFycykKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQt bWluKSkKKyAgICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkIHJlZ2lvbi10ZXh0KQorICAgICAgICAo c2V0LW1hcmstY29tbWFuZCBuaWwpCisgICAgICAgIChwcmV2aW91cy1saW5lKSA7OyBlbnN1cmUg dGhhdCBwb2ludCBpcyBvbiBhbiBlbXB0eSBsaW5lLgorICAgICAgICAob3JnLWJhYmVsLWRlbWFy Y2F0ZS1ibG9jaykKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAgKG9y Zy1iYWJlbC1uZXh0LXNyYy1ibG9jaykKKyAgICAgICAgKHNldHEgaW5mbyAob3JnLWJhYmVsLWdl dC1zcmMtYmxvY2staW5mbykpICA7OyB1cHBlciBzb3VyY2UgYmxvY2sgaW5mbworICAgICAgICAo c2V0cSB2YXJzIChvcmctYmFiZWwtLWdldC12YXJzIChudGggMiBpbmZvKSkpCisgICAgICAgIChz aG91bGQgKHN0cmluZz0gImFueS1sYW5ndWFnZSIgKG50aCAwIGluZm8pKSkKKyAgICAgICAgKHNo b3VsZCAoc3RyaW5nPSAidG8gdXBwZXIgYmxvY2siIChvcmctdHJpbSAobnRoIDEgaW5mbykpKSkK KyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAibm90IGR1cGxpY2F0ZWQiIChjZHIgKGFzc3EgJ2hl cmUgdmFycykpKSkKKyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSAiLWkgLW4iIChudGggMyBpbmZv KSkpCisgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2spCisgICAgICAgIChzZXRxIGlu Zm8gKG9yZy1iYWJlbC1nZXQtc3JjLWJsb2NrLWluZm8pKSA7OyBsb3dlciBzb3VyY2UgYmxvY2sg aW5mbworICAgICAgICAoc2V0cSB2YXJzIChvcmctYmFiZWwtLWdldC12YXJzIChudGggMiBpbmZv KSkpCisgICAgICAgIChzaG91bGQgKHN0cmluZz0gImFueS1sYW5ndWFnZSIgKG50aCAwIGluZm8p KSkKKyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSByZWdpb24tdGV4dCAob3JnLXRyaW0gKG50aCAx IGluZm8pKSkpCisgICAgICAgIChzaG91bGQtbm90IHZhcnMpCisgICAgICAgIChzaG91bGQgKHN0 cmluZz0gIiIgKG50aCAzIGluZm8pKSkpKSkKKyAgOzsgVGVzdCBwcmVmaXggYXJndW1lbnQgcG9p bnQgc3BsaXR0aW5nLgorICAobGV0ICgob3JnLWFkYXB0LWluZGVudGF0aW9uIHQpCisgICAgICAg IChvcmctZWRpdC1zcmMtY29udGVudC1pbmRlbnRhdGlvbiAyKQorICAgICAgICAob3JnLXNyYy1w cmVzZXJ2ZS1pbmRlbnRhdGlvbiBuaWwpCisgICAgICAgIChvay1jb2wgMTEpCisgICAgICAgIChz dGFycyAiXlxcKlxcKlxcKlxcKlxcKlxcKlxcKlxcKlxcKlxcKiIpKQorICAgIChvcmctdGVzdC13 aXRoLXRlbXAtdGV4dCAiCisqKioqKioqKioqIDEwIHN0YXJzIHdpdGggcG9pbnQgYmV0d2VlbiB0 d28gbGluZXMKKyAgICAgICAgICAgIytiZWdpbl9zcmMgZW1hY3MtbGlzcAorICAgICAgICAgICAg IDs7IHRvIHVwcGVyIGJsb2NrCisgICAgICAgICAgICAgPHBvaW50PgorICAgICAgICAgICAgIDs7 IHRvIGxvd2VyIGJsb2NrCisgICAgICAgICAgICMrZW5kX3NyYworIgorICAgICAgKG9yZy1iYWJl bC1kZW1hcmNhdGUtYmxvY2sgJ2EtcHJlZml4LWFyZykKKyAgICAgIChnb3RvLWNoYXIgKHBvaW50 LW1pbikpCisgICAgICAoZG9saXN0IChyZWdleHAgYCgsc3RhcnMKKyAgICAgICAgICAgICAgICAg ICAgICAgICIjXFwrYmVnIiAiOzsgdG8gdXBwZXIgYmxvY2siICIjXFwrZW5kIgorICAgICAgICAg ICAgICAgICAgICAgICAgLHN0YXJzCisgICAgICAgICAgICAgICAgICAgICAgICAiI1xcK2JlZyIg Ijs7IHRvIGxvd2VyIGJsb2NrIiAiI1xcK2VuZCIpKQorICAgICAgICAoc2hvdWxkIChyZS1zZWFy Y2gtZm9yd2FyZCByZWdleHApKQorICAgICAgICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcg MCkpCisgICAgICAgIChjb25kICgoc3RyaW5nPSByZWdleHAgc3RhcnMpCisgICAgICAgICAgICAg ICAoc2hvdWxkICg9IDAgKGN1cnJlbnQtY29sdW1uKSkpKQorICAgICAgICAgICAgICAoKHN0cmlu Zy1wcmVmaXgtcCAiOzsiIHJlZ2V4cCkKKyAgICAgICAgICAgICAgIChzaG91bGQgKD0gKCsgb2st Y29sIG9yZy1lZGl0LXNyYy1jb250ZW50LWluZGVudGF0aW9uKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAoY3VycmVudC1jb2x1bW4pKSkpCisgICAgICAgICAgICAgICh0IChzaG91bGQgKD0g b2stY29sIChjdXJyZW50LWNvbHVtbikpKSkpKSkpCisgIDs7IFRlc3QgcHJlZml4IGFyZ3VtZW50 IHJlZ2lvbiBzcGxpdHRpbmcuCisgIChsZXQgKChvcmctYWRhcHQtaW5kZW50YXRpb24gdCkKKyAg ICAgICAgKG9yZy1lZGl0LXNyYy1jb250ZW50LWluZGVudGF0aW9uIDIpCisgICAgICAgIChvcmct c3JjLXByZXNlcnZlLWluZGVudGF0aW9uIG5pbCkKKyAgICAgICAgKG9rLWNvbCAxMSkKKyAgICAg ICAgKHN0YXJzICJeXFwqXFwqXFwqXFwqXFwqXFwqXFwqXFwqXFwqXFwqIikKKyAgICAgICAgKHBh cnRzICcoInRvIHVwcGVyIGJsb2NrIiAibWFyayB0aG9zZSB3b3JkcyBhcyByZWdpb24iICJ0byBs b3dlciBibG9jayIpKSkKKyAgICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQgKGZvcm1hdCAiCisq KioqKioqKioqIDEwIHN0YXJzIHdpdGggcmVnaW9uIGJldHdlZW4gdHdvIGxpbmVzCisgICAgICAg ICAgICMraGVhZGVyOiA6dmFyIGI9XCJhbHNvIHNlZW5cIgorICAgICAgICAgICAjK2JlZ2luX3Ny YyBhbnktbGFuZ3VhZ2UgLWkgLW4gOnZhciBhPVwic2VlblwiCisgICAgICAgICAgICAgJXMKKyAg ICAgICAgICAgICAlcworICAgICAgICAgICAgICVzCisgICAgICAgICAgICMrZW5kX3NyYworIiAo bnRoIDAgcGFydHMpIChudGggMSBwYXJ0cykgKG50aCAyIHBhcnRzKSkKKyAgICAgIChsZXQgKChu IDApIGluZm8gdmFycykKKyAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKyAgICAgICAg KHJlLXNlYXJjaC1mb3J3YXJkIChudGggMSBwYXJ0cykpCisgICAgICAgIChzZXQtbWFyay1jb21t YW5kIG5pbCkKKyAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDApKQorICAgICAg ICAob3JnLWJhYmVsLWRlbWFyY2F0ZS1ibG9jayAnYS1wcmVmaXgtYXJndW1lbnQpCisgICAgICAg IChnb3RvLWNoYXIgKHBvaW50LW1pbikpCisgICAgICAgICh3aGlsZSAoPCBuIChsZW5ndGggcGFy dHMpKQorICAgICAgICAgIChvcmctYmFiZWwtbmV4dC1zcmMtYmxvY2spCisgICAgICAgICAgKHNl dHEgaW5mbyAob3JnLWJhYmVsLWdldC1zcmMtYmxvY2staW5mbykpCisgICAgICAgICAgKHNldHEg dmFycyAob3JnLWJhYmVsLS1nZXQtdmFycyAobnRoIDIgaW5mbykpKQorICAgICAgICAgIChzaG91 bGQgKHN0cmluZz0gImFueS1sYW5ndWFnZSIgKG50aCAwIGluZm8pKSkKKyAgICAgICAgICAoc2hv dWxkIChzdHJpbmc9IChudGggbiBwYXJ0cykgKG9yZy10cmltIChudGggMSBpbmZvKSkpKQorICAg ICAgICAgIChzaG91bGQgKHN0cmluZz0gInNlZW4iIChjZHIgKGFzc3EgJ2EgdmFycykpKSkKKyAg ICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICJhbHNvIHNlZW4iIChjZHIgKGFzc3EgJ2IgdmFycykp KSkKKyAgICAgICAgICAoc2hvdWxkIChzdHJpbmc9ICItaSAtbiIgKG50aCAzIGluZm8pKSkKKyAg ICAgICAgICAoY2wtaW5jZiBuKSkpCisgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAg ICAgKGRvbGlzdCAocmVnZXhwIGAoLHN0YXJzCisgICAgICAgICAgICAgICAgICAgICAgICAiI1xc K2JlZyIgLChudGggMCBwYXJ0cykgIiNcXCtlbmQiCisgICAgICAgICAgICAgICAgICAgICAgICAs c3RhcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICIjXFwrYmVnIiAsKG50aCAxIHBhcnRzKSAi I1xcK2VuZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICxzdGFycworICAgICAgICAgICAgICAg ICAgICAgICAgIiNcXCtiZWciICwobnRoIDIgcGFydHMpICIjXFwrZW5kIikpCisgICAgICAgIChz aG91bGQgKHJlLXNlYXJjaC1mb3J3YXJkIHJlZ2V4cCkpCisgICAgICAgIChnb3RvLWNoYXIgKG1h dGNoLWJlZ2lubmluZyAwKSkKKyAgICAgICAgKGNvbmQgKChzdHJpbmc9IHJlZ2V4cCBzdGFycykK KyAgICAgICAgICAgICAgIChzaG91bGQgKD0gMCAoY3VycmVudC1jb2x1bW4pKSkpCisgICAgICAg ICAgICAgICgobWVtcSByZWdleHAgcGFydHMpCisgICAgICAgICAgICAgICAoc2hvdWxkICg9ICgr IG9rLWNvbCBvcmctZWRpdC1zcmMtY29udGVudC1pbmRlbnRhdGlvbikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpKQorICAgICAgICAgICAgICAodCAoc2hvdWxk ICg9IG9rLWNvbCAoY3VycmVudC1jb2x1bW4pKSkpKSkpCisgICAgOzsgVGVzdCBmb3IgYHVzZXIt ZXJyb3JzJ3MuCisgICAgKGxldCogKChjYXB0aW9uICIjK2NhcHRpb246IGNhcHRpb24uIikKKyAg ICAgICAgICAgKHJlZ2V4cCAocnggIiMrY2FwdGlvbjogY2FwdGlvbi4iKSkKKyAgICAgICAgICAg KHdpdGhpbi1ib2R5ICI7OyB3aXRoaW4tYm9keSIpCisgICAgICAgICAgIChiZWxvdy1ibG9jayAi IyBiZWxvdyBibG9jayIpCisgICAgICAgICAgICh0ZW1wLXRleHQgKGZvcm1hdCAiCislcworIyti ZWdpbl9zcmMgZW1hY3MtbGlzcAorCisgICVzCisKKyMrZW5kX3NyYworCislcworIiBjYXB0aW9u IHdpdGhpbi1ib2R5IGJlbG93LWJsb2NrKSkpCisgICAgICA7OyBUZXN0IHBvaW50IGF0IGNhcHRp b24uCisgICAgICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQgdGVtcC10ZXh0CisgICAgICAgIDs7 IFNldCBwb2ludC4KKyAgICAgICAgKHNob3VsZCAocmUtc2VhcmNoLWZvcndhcmQgcmVnZXhwIG5p bCAnbm9lcnJvcikpCisgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAwKSkKKyAg ICAgICAgOzsgQ2hlY2sgKHBvaW50KS4KKyAgICAgICAgKHNob3VsZCAoc3RyaW5nPSBjYXB0aW9u CisgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmcKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgKHBvaW50KSAoKyAocG9pbnQpIChsZW5ndGggY2FwdGlvbikpKSkpCisg ICAgICAgIChzaG91bGQtZXJyb3IgKG9yZy1iYWJlbC1kZW1hcmNhdGUtYmxvY2spIDp0eXBlICd1 c2VyLWVycm9yKSkKKyAgICAgIDs7IFRlc3QgcmVnaW9uIGZyb20gYmVsb3cgdGhlIGJsb2NrICht YXJrKSB0byB3aXRoaW4gdGhlIGJvZHkgKHBvaW50KS4KKyAgICAgIChvcmctdGVzdC13aXRoLXRl bXAtdGV4dCB0ZW1wLXRleHQKKyAgICAgICAgOzsgU2V0IG1hcmsuCisgICAgICAgIChzaG91bGQg KHJlLXNlYXJjaC1mb3J3YXJkIGJlbG93LWJsb2NrIG5pbCAnbm9lcnJvcikpCisgICAgICAgIChn b3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAwKSkKKyAgICAgICAgKHNldC1tYXJrLWNvbW1hbmQg bmlsKQorICAgICAgICA7OyBDaGVjayAobWFyaykuCisgICAgICAgIChzaG91bGQgKHN0cmluZz0g YmVsb3ctYmxvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZwor ICAgICAgICAgICAgICAgICAgICAgICAgICAobWFyaykgKCsgKG1hcmspIChsZW5ndGggYmVsb3ct YmxvY2spKSkpKQorICAgICAgICA7OyBTZXQgcG9pbnQuCisgICAgICAgIChzaG91bGQgKHJlLXNl YXJjaC1iYWNrd2FyZCB3aXRoaW4tYm9keSBuaWwgJ25vZXJyb3IpKQorICAgICAgICAoZ290by1j aGFyIChtYXRjaC1iZWdpbm5pbmcgMCkpCisgICAgICAgIDs7IENoZWNrIChwb2ludCkuCisgICAg ICAgIChzaG91bGQgKHN0cmluZz0gd2l0aGluLWJvZHkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAoYnVmZmVyLXN1YnN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpICgr IChwb2ludCkgKGxlbmd0aCB3aXRoaW4tYm9keSkpKSkpCisgICAgICAgIChzaG91bGQtZXJyb3Ig KG9yZy1iYWJlbC1kZW1hcmNhdGUtYmxvY2spIDp0eXBlICd1c2VyLWVycm9yKSkpKSkKKwogKGVy dC1kZWZ0ZXN0IHRlc3Qtb2IvaW5kZW50ZWQtY2FjaGVkLW9yZy1icmFja2V0LWxpbmsgKCkKICAg IldoZW4gdGhlIHJlc3VsdCBvZiBhIHNvdXJjZSBibG9jayBpcyBhIGNhY2hlZCBpbmRlbnRlZCBs aW5rIGl0CiBzaG91bGQgc3RpbGwgcmV0dXJuIHRoZSBsaW5rLiIKLS0gCjIuNDIuMAoK --=_df799a003deed2dd1d05c173ed6940d4--