From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:306:2d92::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms9.migadu.com with LMTPS id SiLvDQ4rzmS8oAAASxT56A (envelope-from ) for ; Sat, 05 Aug 2023 12:57:18 +0200 Received: from aspmx1.migadu.com ([2001:41d0:306:2d92::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id 2HDDDA4rzmTnewEAauVa8A (envelope-from ) for ; Sat, 05 Aug 2023 12:57:18 +0200 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 8E3DF322E3 for ; Sat, 5 Aug 2023 12:57:17 +0200 (CEST) Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=vodafonemail.de header.s=vfde-mb-mr2-21dec header.b="X/zwExOy"; 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"; dmarc=pass (policy=quarantine) header.from=vodafonemail.de ARC-Seal: i=1; s=key1; d=yhetil.org; t=1691233037; a=rsa-sha256; cv=none; b=VN8Pow2gHGm+Nd7iPuViwztLFUAD2Bud+QnfGogz9Db7fZYgIcLzAQDEvfL/re+vE0pJIy lI6k3uSj6vybm8BlAg5yoswJAYqFJO0/KzpcwXn9kQFI6i6E+q4N6OYteDkFDo0B9V+uoO IioSOon8bD2sE0QdjUwuaxBXXbShYZG0bf2esNFWslr+n7o0GjjQJI3CVJJ+/dS2G87qR0 18hvqFqhgrqOegSJhL5hvPZHudF2GD3Xn3qNUTHodswMx+BIxd1oSMzXjAEnXexXnSnUqV /SRM5qN3IxdT9E8I3IWXYhI1QteCUt09fZq8xnGcb8QUoncBE1LWcBwobSjCLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1691233037; 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=WOtMvhkvz2d0YhkDRvalUVMDnOao+Bak+Vmfi1hptG0=; b=VEa9wbBMjvXcHSMbWCz1MM8RM+rZ1LW9SZnDCzr7n6v8MMz6zhyTzbB+w+2wgFWphayw97 9m/3Th2NUsUTl+tOwD3cAXweWkLhY24fI+h+i13QAHak41UsoPwFdNQtPXV+oCHm0e7EsQ eDMAuJPNhlWVC4l8ztiVmDW0I/XfZj//RUUK4CNPhv/j8Tb/xbHclnZ9x9Zpe+stc0cxEp HhUKzI4gDaBSnOATxxTO9e+6/aBRqGkQ2f/mSxnhnCez9df0y1wVlCcKONFR1fV4d8Lvj0 lqZUEPsa96WIpsbna52KopcJSn1tnYYAn/sUGbU3f/6+7QqccvYyfBeMsF1Ixg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=vodafonemail.de header.s=vfde-mb-mr2-21dec header.b="X/zwExOy"; 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"; dmarc=pass (policy=quarantine) header.from=vodafonemail.de Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qSExf-00005F-PD; Sat, 05 Aug 2023 06:56:43 -0400 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 1qSExe-000057-9S for emacs-orgmode@gnu.org; Sat, 05 Aug 2023 06:56:42 -0400 Received: from mr4.vodafonemail.de ([145.253.228.164]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qSExb-0004OI-Ev for emacs-orgmode@gnu.org; Sat, 05 Aug 2023 06:56:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de; s=vfde-mb-mr2-21dec; t=1691232997; bh=WOtMvhkvz2d0YhkDRvalUVMDnOao+Bak+Vmfi1hptG0=; h=Content-Type:Message-ID:Date:User-Agent:Subject:Content-Language: To:References:From:In-Reply-To:From; b=X/zwExOyCEiYp7EMM5ahVuiB43Mjd5yVjJ/oM6wBIaDjzb15PFfJ0RnIdgp2ni6pN pdCb9iTIbY0MldAGKOoTbtPdno+TaUg1sosojHvPZteEwNFA3ZQgKSgChvgbOj+SMl FoPTx9qf2/6yWpfZqz1b9u2S145S+mPK2XESQ3sE= Received: from smtp.vodafone.de (unknown [10.0.0.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by mr4.vodafonemail.de (Postfix) with ESMTPS id 4RHzzT0Hv4z1xy9; Sat, 5 Aug 2023 10:56:36 +0000 (UTC) Received: from [192.168.178.41] (port-92-194-38-186.dynamic.as20676.net [92.194.38.186]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp.vodafone.de (Postfix) with ESMTPSA id 4RHzzK2HJJz9s3Z; Sat, 5 Aug 2023 10:56:26 +0000 (UTC) Content-Type: multipart/mixed; boundary="------------MCU0LSNhdSvlgdRXWqXtNWng" Message-ID: <8c28a287-1a00-4bd2-7180-57e769425e85@vodafonemail.de> Date: Sat, 5 Aug 2023 12:56:25 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.1 Subject: Re: org-agenda queries for absent properties Content-Language: de-DE-frami, en-US To: Ihor Radchenko Cc: Org-mode References: <9132e58f-d89e-f7df-bbe4-43d53a2367d2@vodafonemail.de> <87o7jsinoo.fsf@localhost> <3ac83971-2805-cfde-28a3-891814b95c25@vodafonemail.de> <87wmyendr7.fsf@localhost> From: Jens Schmidt In-Reply-To: <87wmyendr7.fsf@localhost> X-purgate-type: clean X-purgate: clean X-purgate-size: 19013 X-purgate-ID: 155817::1691232992-237FD912-B4BDA979/0/0 Received-SPF: pass client-ip=145.253.228.164; envelope-from=jschmidt4gnu@vodafonemail.de; helo=mr4.vodafonemail.de X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 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, NICE_REPLY_A=-0.093, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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-Spam-Score: -5.61 X-Migadu-Scanner: mx2.migadu.com X-Migadu-Queue-Id: 8E3DF322E3 X-Spam-Score: -5.61 X-TUID: lx+wiEenjmn3 This is a multi-part message in MIME format. --------------MCU0LSNhdSvlgdRXWqXtNWng Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2023-08-02 08:45, Ihor Radchenko wrote: > `rx' would be great. > But even adding comments like in your example would be an improvement. Since the future of this code snippet seems to be uncertain I went for comments only. And I thought I was pretty much done when I noticed at least one major issues in the existing code, so I decided to go with a prerelease first plus some notes and questions. So there will be a follow up to the attached patch, and I leave it to you whether you give it already a review or not. But I'd ask you for your opinion on the following notes, where the first few should be uncritical: - I used "\(?NUM: ... \)" constructs to explicitly number the subres. Hope this is OK w.r.t. style and backward-compatibility. - I fixed the operator-matching subre to also include `==', `!=', `/=' but exclude `<<' and the like which currently give void-function errors. - I did not fix some "a[^b]*b"-style subres to use non-greedy variants since these are strictly speaking not identical. Even though newline characters shouldn't play a big role here ... - I likewise did not fix the number-matching subre allowing for numbers like "1.2.3" to keep things short at least there. `string-to-number' silently takes care of these, even if an exponent gets lost that way. But from here it gets more intersting: - The code uses subre "\\\\-" in property names to (supposedly) allow for inclusion of minus characters in property names, which (probably) could be confused with term negation. - It also unquotes these minus characters for {tag regexps}: (tag (save-match-data (replace-regexp-in-string "\\\\-" "-" (match-string 2 term)))) But it never unquotes them in property names. That missing unquoting could be easily amended, but: - The other issue is: Why do we need "\\\\-" for both property names and {tag regexps}? This forces us to do queries like: {[a\\-z]}|foo\\-bar="baz" where in my opinion {[a\-z]}|foo\-bar="baz" should be sufficient. - Even more, IMO one could do away completely with the minus-quoting and unquoting, since the overall regexp should allow for unambiguously matching minus characters both + in {tag regexps} (because of "{[^}]+}" gobbling them) and + in property names (because a property name must always be followed by some operator) *without* them getting confused with term negation. Or do I miss something here? A cursory test with sth like +foo-bar="xxx"-patchday=202302 seems to work fine. - However, removing the unquoting of {tag regexps} would be a breaking change. Even though I doubt anybody has ever used it, the more it is not mentioned in the documentation. > I had this in mind for a wile, but I am still hoping that we can > eventually (when it is added to Emacs) rely upon peg.el for parsing. Given the fact that we have to discuss issues like those above, I heartily agree. > https://yhetil.org/emacs-devel/875yvtbbn3.fsf@ericabrahamsen.net/ Arthouse thread: Interesting plot, surprising sidelines, not everything comprehensible, (unfortunately) open end. --------------MCU0LSNhdSvlgdRXWqXtNWng Content-Type: text/x-patch; charset=UTF-8; name="0001-org-make-tags-matcher-Add-starred-property-operators.patch" Content-Disposition: attachment; filename*0="0001-org-make-tags-matcher-Add-starred-property-operators.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxNzY1ZTkxZDJmNzg3NWIzMjE3MDNhZmUzNGUzMjc1NGEwMjJiZWY0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZW5zIFNjaG1pZHQgPGpzY2htaWR0NGdudUB2b2Rh Zm9uZW1haWwuZGU+CkRhdGU6IFRodSwgMyBBdWcgMjAyMyAyMjozNDo1NiArMDIwMApTdWJq ZWN0OiBbUEFUQ0hdIG9yZy1tYWtlLXRhZ3MtbWF0Y2hlcjogQWRkIHN0YXJyZWQgcHJvcGVy dHkgb3BlcmF0b3JzLCBtb3JlCiBvcGVyYXRvciBzeW5vbnltcwoKKiBsaXNwL29yZy5lbCAo b3JnLW1ha2UtdGFncy1tYXRjaGVyKTogQWRkIHN0YXJyZWQgcHJvcGVydHkgb3BlcmF0b3Jz LgpSZWNvZ25pemUgYWRkaXRpb25hbCBvcGVyYXRvcnMgIj09IiwgIiE9IiwgIi89Ii4gIENs ZWFuIHVwIGFuZApkb2N1bWVudCBtYXRjaCB0ZXJtIHBhcnNpbmcuCihvcmctb3AtdG8tZnVu Y3Rpb24pOiBSZWNvZ25pemUgYWRkaXRpb25hbCBpbmVxdWFsaXR5IG9wZXJhdG9yICIvPSIu CgoqIGRvYy9vcmctbWFudWFsLm9yZyAoTWF0Y2hpbmcgdGFncyBhbmQgcHJvcGVydGllcyk6 CiogZXRjL09SRy1ORVdTOiAofm9yZy10YWdzLXZpZXd+IHN1cHBvcnRzIG1vcmUgcHJvcGVy dHkgb3BlcmF0b3JzKToKKiB0ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwgKHRlc3Qtb3JnL21h cC1lbnRyaWVzKTogQWRkIGRvY3VtZW50YXRpb24sCmFubm91bmNlbWVudCwgYW5kIHRlc3Rz IG9uIHN0YXJyZWQgYW5kIGFkZGl0aW9uYWwgb3BlcmF0b3JzLgotLS0KIGRvYy9vcmctbWFu dWFsLm9yZyAgICAgICB8IDIwICsrKysrKysrLQogZXRjL09SRy1ORVdTICAgICAgICAgICAg IHwgMTAgKysrKy0KIGxpc3Avb3JnLmVsICAgICAgICAgICAgICB8IDk2ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIHRlc3RpbmcvbGlzcC90ZXN0LW9yZy5l bCB8IDMzICsrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDEzMCBpbnNlcnRpb25z KCspLCAyOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvb3JnLW1hbnVhbC5vcmcg Yi9kb2Mvb3JnLW1hbnVhbC5vcmcKaW5kZXggMTZmYmIyNjhmLi4yNzA1MWZiZmMgMTAwNjQ0 Ci0tLSBhL2RvYy9vcmctbWFudWFsLm9yZworKysgYi9kb2Mvb3JnLW1hbnVhbC5vcmcKQEAg LTkyNDYsMTYgKzkyNDYsMjUgQEAgV2hlbiBtYXRjaGluZyBwcm9wZXJ0aWVzLCBhIG51bWJl ciBvZiBkaWZmZXJlbnQgb3BlcmF0b3JzIGNhbiBiZSB1c2VkCiB0byB0ZXN0IHRoZSB2YWx1 ZSBvZiBhIHByb3BlcnR5LiAgSGVyZSBpcyBhIGNvbXBsZXggZXhhbXBsZToKIAogIytiZWdp bl9leGFtcGxlCi0rd29yay1ib3NzK1BSSU9SSVRZPSJBIitDb2ZmZWU9InVubGltaXRlZCIr RWZmb3J0PDIKKyt3b3JrLWJvc3MrUFJJT1JJVFk9IkEiK0NvZmZlZT0idW5saW1pdGVkIitF ZmZvcnQ8KjIKICAgICAgICAgICtXaXRoPXtTYXJhaFx8RGVubnl9K1NDSEVEVUxFRD49Ijwy MDA4LTEwLTExPiIKICMrZW5kX2V4YW1wbGUKIAorIytjaW5kZXg6IG9wZXJhdG9yLCBmb3Ig cHJvcGVydHkgc2VhcmNoCiAjK3RleGluZm86IEBub2luZGVudAogVGhlIHR5cGUgb2YgY29t cGFyaXNvbiBkZXBlbmRzIG9uIGhvdyB0aGUgY29tcGFyaXNvbiB2YWx1ZSBpcyB3cml0dGVu OgogCiAtIElmIHRoZSBjb21wYXJpc29uIHZhbHVlIGlzIGEgcGxhaW4gbnVtYmVyLCBhIG51 bWVyaWNhbCBjb21wYXJpc29uIGlzCiAgIGRvbmUsIGFuZCB0aGUgYWxsb3dlZCBvcGVyYXRv cnMgYXJlID08PSwgPT09LCA9Pj0sID08PT0sID0+PT0sIGFuZAotICA9PD49LgorICA9PD49 LiAgQXMgc3lub255bSBmb3IgdGhlIGVxdWFsaXR5IG9wZXJhdG9yIHRoZXJlIGlzIGFsc28g PT09PSwgYXMKKyAgc3lub255bXMgZm9yIHRoZSBpbmVxdWFsaXR5IG9wZXJhdG9yIHRoZXJl IGFyZSA9IT09IGFuZCA9Lz09LgorCistIEFsbCBvcGVyYXRvcnMgbWF5IGJlIG9wdGlvbmFs bHkgZm9sbG93ZWQgYnkgYW4gYXN0ZXJpc2sgPSo9LCBsaWtlIGluCisgID08Kj0sID0hPSo9 LCBldGMuICBTdWNoIC9zdGFycmVkIG9wZXJhdG9ycy8gd29yayBsaWtlIHRoZWlyIHJlZ3Vs YXIsCisgIHVuc3RhcnJlZCBjb3VudGVycGFydHMgZXhjZXB0IHRoYXQgdGhleSBtYXRjaCBv bmx5IGhlYWRsaW5lcyB3aGVyZQorICB0aGUgdGVzdGVkIHByb3BlcnR5IGlzIGFjdHVhbGx5 IHByZXNlbnQuICBUaGlzIGlzIG1vc3QgdXNlZnVsIGZvcgorICBzZWFyY2ggdGVybXMgdGhh dCBsb2dpY2FsbHkgZXhjbHVkZSByZXN1bHRzLCBsaWtlIHRoZSBpbmVxdWFsaXR5CisgIG9w ZXJhdG9yLgogCiAtIElmIHRoZSBjb21wYXJpc29uIHZhbHVlIGlzIGVuY2xvc2VkIGluIGRv dWJsZS1xdW90ZXMsIGEgc3RyaW5nCiAgIGNvbXBhcmlzb24gaXMgZG9uZSwgYW5kIHRoZSBz YW1lIG9wZXJhdG9ycyBhcmUgYWxsb3dlZC4KQEAgLTkyODAsNiArOTI4OSwxMyBAQCBzbWFs bGVyIHRoYW4gMiwgYSA9V2l0aD0gcHJvcGVydHkgdGhhdCBpcyBtYXRjaGVkIGJ5IHRoZSBy ZWd1bGFyCiBleHByZXNzaW9uID1TYXJhaFx8RGVubnk9LCBhbmQgdGhhdCBhcmUgc2NoZWR1 bGVkIG9uIG9yIGFmdGVyIE9jdG9iZXIKIDExLCAyMDA4LgogCitOb3RlIHRoYXQgdGhlIHRl c3Qgb24gdGhlID1FRkZPUlQ9IHByb3BlcnR5IHVzZXMgb3BlcmF0b3IgPTwqPSwgc28KK3Ro YXQgdGhlIHNlYXJjaCByZXN1bHQgd2lsbCBpbmNsdWRlIG9ubHkgZW50cmllcyB0aGF0IGFj dHVhbGx5IGhhdmUgYW4KKz1FRkZPUlQ9IHByb3BlcnR5IGRlZmluZWQgYW5kIHdpdGggbnVt ZXJpY2FsIHZhbHVlIHNtYWxsZXIgdGhhbiAyLgorV2l0aCB0aGUgcmVndWxhciA9PD0gb3Bl cmF0b3IsIHRoZSBzZWFyY2ggd291bGQgaGFuZGxlIGVudHJpZXMgd2l0aG91dAorYW4gPUVG Rk9SVD0gcHJvcGVydHkgYXMgaGF2aW5nIGEgemVybyBlZmZvcnQgYW5kIHdvdWxkIGluY2x1 ZGUgdGhlbSBpbgordGhlIHJlc3VsdCBhcyB3ZWxsLgorCiBZb3UgY2FuIGNvbmZpZ3VyZSBP cmcgbW9kZSB0byB1c2UgcHJvcGVydHkgaW5oZXJpdGFuY2UgZHVyaW5nCiBhIHNlYXJjaCwg YnV0IGJld2FyZSB0aGF0IHRoaXMgY2FuIHNsb3cgZG93biBzZWFyY2hlcyBjb25zaWRlcmFi bHkuCiBTZWUgW1sqUHJvcGVydHkgSW5oZXJpdGFuY2VdXSwgZm9yIGRldGFpbHMuCmRpZmYg LS1naXQgYS9ldGMvT1JHLU5FV1MgYi9ldGMvT1JHLU5FV1MKaW5kZXggNGYxNmVkYTI0Li4x MGM1MWUzNTQgMTAwNjQ0Ci0tLSBhL2V0Yy9PUkctTkVXUworKysgYi9ldGMvT1JHLU5FV1MK QEAgLTEyNSw3ICsxMjUsNyBAQCBOZXcgZnVuY3Rpb25zIHRvIHJldHJpZXZlIGFuZCBzZXQg KHZpYSB+c2V0Zn4pIGNvbW1vbmx5IHVzZWQgZWxlbWVudCBwcm9wZXJ0aWVzOgogLSA9OmNv bnRlbnRzLXBvc3QtYWZmaWxpYXRlZD0gOjogfm9yZy1lbGVtZW50LXBvc3QtYWZmaWxpYXRl ZH4KIC0gPTpjb250ZW50cy1wb3N0LWJsYW5rPSA6OiB+b3JnLWVsZW1lbnQtcG9zdC1ibGFu a34KIC0gPTpwYXJlbnQ9IDo6IH5vcmctZWxlbWVudC1wYXJlbnR+Ci0gCisKICoqKioqIE5l dyBtYWNybyB+b3JnLWVsZW1lbnQtd2l0aC1lbmFibGVkLWNhY2hlfgogCiBUaGUgbWFjcm8g YXJyYW5nZXMgdGhlIGVsZW1lbnQgY2FjaGUgdG8gYmUgYWN0aXZlIGR1cmluZyA9Qk9EWT0g ZXhlY3V0aW9uLgpAQCAtNTU4LDYgKzU1OCwxNCBAQCBzcGVjaWFsIHJlcGVhdGVycyB+Kyt+ IGFuZCB+Lit+IGFyZSBza2lwcGVkLgogQSBjYXB0dXJlIHRlbXBsYXRlIGNhbiB0YXJnZXQg fihoZXJlKX4gd2hpY2ggaXMgdGhlIGVxdWl2YWxlbnQgb2YKIGludm9raW5nIGEgY2FwdHVy ZSB0ZW1wbGF0ZSB3aXRoIGEgemVybyBwcmVmaXguCiAKKyoqKiB+b3JnLXRhZ3Mtdmlld34g c3VwcG9ydHMgbW9yZSBwcm9wZXJ0eSBvcGVyYXRvcnMKKworSXQgc3VwcG9ydHMgaW5lcXVh bGl0eSBvcGVyYXRvcnMgfiE9fiBhbmQgfi89fiBpbiBhZGRpdGlvbiB0byB0aGUgbGVzcwor Y29tbW9uIChCQVNJQz8gIFBhc2NhbD8gIFNRTD8pIH48Pn4uICBBbmQgaXQgc3VwcG9ydHMg c3RhcnJlZCB2ZXJzaW9ucworb2YgYWxsIHJlbGF0aW9uYWwgb3BlcmF0b3JzICh+PCp+LCB+ PSp+LCB+IT0qfiwgZXRjLikgdGhhdCB3b3JrIGxpa2UKK3RoZSByZWd1bGFyLCB1bnN0YXJy ZWQgb3BlcmF0b3JzIGJ1dCBtYXRjaCBhIGhlYWRsaW5lIG9ubHkgaWYgdGhlCit0ZXN0ZWQg cHJvcGVydHkgaXMgYWN0dWFsbHkgcHJlc2VudC4KKwogKiogTmV3IGZ1bmN0aW9ucyBhbmQg Y2hhbmdlcyBpbiBmdW5jdGlvbiBhcmd1bWVudHMKICoqKiA9VFlQRVM9IGFyZ3VtZW50IGlu IH5vcmctZWxlbWVudC1saW5lYWdlfiBjYW4gbm93IGJlIGEgc3ltYm9sCiAKZGlmZiAtLWdp dCBhL2xpc3Avb3JnLmVsIGIvbGlzcC9vcmcuZWwKaW5kZXggMWFjOTEyZTYxLi5hMWY0YzFj NTMgMTAwNjQ0Ci0tLSBhL2xpc3Avb3JnLmVsCisrKyBiL2xpc3Avb3JnLmVsCkBAIC0xMTMw NiwxMSArMTEzMDYsMzMgQEAgU2VlIGFsc28gYG9yZy1zY2FuLXRhZ3MnLiIKIAogICAobGV0 ICgobWF0Y2gwIG1hdGNoKQogCShyZSAoY29uY2F0Ci0JICAgICAiXiY/XFwoWy0rOl1cXCk/ XFwoe1tefV0rfVxcfExFVkVMXFwoWzw9Pl1cXHsxLDJcXH1cXCkiCi0JICAgICAiXFwoWzAt OV0rXFwpXFx8XFwoXFwoPzpbWzphbG51bTpdX10rXFwoPzpcXFxcLVxcKSpcXCkrXFwpIgot CSAgICAgIlxcKFs8Pj1dXFx7MSwyXFx9XFwpIgotCSAgICAgIlxcKHtbXn1dK31cXHxcIlte XCJdKlwiXFx8LT9bLjAtOV0rXFwoPzpbZUVdWy0rXT9bMC05XStcXCk/XFwpIgotCSAgICAg IlxcfCIgb3JnLXRhZy1yZSAiXFwpIikpCisJICAgICAiXiIKKwkgICAgIDs7IGltcGxpY2l0 IEFORCBvcGVyYXRvciAoT1IgaXMgZG9uZSBieSBnbG9iYWwgc3BsaXR0aW5nKQorCSAgICAg IiY/IgorCSAgICAgOzsgZXhjbHVzaW9uIGFuZCBpbmNsdXNpb24gKHRoZSBsYXR0ZXIgYmVp bmcgaW1wbGljaXQpCisJICAgICAiXFwoPzE6Wy0rOl1cXCk/IgorCSAgICAgOzsgcXVlcnkg dGVybQorCSAgICAgIlxcKD8yOiIKKwkgICAgICAgICA7OyB0YWcgcmVnZXhwIG1hdGNoCisJ ICAgICAgICAgIntbXn1dK31cXHwiCisJCSA7OyBMRVZFTCBwcm9wZXJ0eSBtYXRjaAorCQkg IkxFVkVMXFwoPzM6Wzw9Pl09P1xcfFshL109XFx8PD5cXClcXCg/NDpbMC05XStcXClcXHwi CisJCSA7OyByZWd1bGFyIHByb3BlcnR5IG1hdGNoCisJCSAiXFwoPzoiCisJCSAgICAgOzsg cHJvcGVydHkgbmFtZQorCQkgICAgICJcXCg/NTpcXCg/OltbOmFsbnVtOl1fXStcXCg/Olxc XFwtXFwpKlxcKStcXCkiCisJCSAgICAgOzsgb3BlcmF0b3IsIG9wdGlvbmFsbHkgc3RhcnJl ZAorCQkgICAgICJcXCg/NjpbPD0+XT0/XFx8WyEvXT1cXHw8PlxcKVxcKD83OlxcKlxcKT8i CisJCSAgICAgOzsgb3BlcmFuZAorCQkgICAgICJcXCg/ODoiCisJCSAgICAgICAgICJ7W159 XSt9XFx8IgorCQkJICJcIlteXCJdKlwiXFx8IgorCQkJICItP1suMC05XStcXCg/OltlRV1b LStdP1swLTldK1xcKT8iCisJCSAgICAgIlxcKSIKKwkJICJcXClcXHwiCisJCSA7OyBleGFj dCB0YWcgbWF0Y2gKKwkJIG9yZy10YWctcmUKKwkgICAgICJcXCkiKSkKIAkoc3RhcnQgMCkK IAl0YWdzbWF0Y2ggdG9kb21hdGNoIHRhZ3NtYXRjaGVyIHRvZG9tYXRjaGVyKQogCkBAIC0x MTM1Miw2ICsxMTM3NCwxMSBAQCBTZWUgYWxzbyBgb3JnLXNjYW4tdGFncycuIgogCSAgICAo bGV0KiAoKHJlc3QgKHN1YnN0cmluZyB0ZXJtIChtYXRjaC1lbmQgMCkpKQogCQkgICAobWlu dXMgKGFuZCAobWF0Y2gtZW5kIDEpCiAJCQkgICAgICAgKGVxdWFsIChtYXRjaC1zdHJpbmcg MSB0ZXJtKSAiLSIpKSkKKwkJICAgOzsgQmluZCB0aGUgd2hvbGUgdGVybSB0byBgdGFnJyBh bmQgdXNlIHRoYXQKKwkJICAgOzsgdmFyaWFibGUgZm9yIGEgdGFnIHJlZ2V4cCBtYXRjaCBp biAoMSkgb3IgYXMgYW4KKwkJICAgOzsgZXhhY3QgdGFnIG1hdGNoIGluICgyKS4gIFVucXVv dGUgcXVvdGVkIG1pbnVzCisJCSAgIDs7IGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGJlIGFj dHVhbGx5IHJlcXVpcmVkCisJCSAgIDs7IG9ubHkgZm9yIHRoZSBmb3JtZXIgY2FzZS4KIAkJ ICAgKHRhZyAoc2F2ZS1tYXRjaC1kYXRhCiAJCQkgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJp bmcKIAkJCSAgICJcXFxcLSIgIi0iIChtYXRjaC1zdHJpbmcgMiB0ZXJtKSkpKQpAQCAtMTEz NjAsNyArMTEzODcsNyBAQCBTZWUgYWxzbyBgb3JnLXNjYW4tdGFncycuIgogCQkgICAocHJv cHAgKG1hdGNoLWVuZCA1KSkKIAkJICAgKG1tCiAJCSAgICAoY29uZAotCQkgICAgIChyZWdl eHAKKwkJICAgICAocmVnZXhwCQkJOyAoMSkKICAgICAgICAgICAgICAgICAgICAgICBgKHdp dGgtc3ludGF4LXRhYmxlIG9yZy1tb2RlLXRhZ3Mtc3ludGF4LXRhYmxlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgKG9yZy1tYXRjaC1hbnktcCAsKHN1YnN0cmluZyB0YWcgMSAtMSkg dGFncy1saXN0KSkpCiAJCSAgICAgKGxldmVscApAQCAtMTEzNjgsMjggKzExMzk1LDQ1IEBA IFNlZSBhbHNvIGBvcmctc2Nhbi10YWdzJy4iCiAJCQlsZXZlbAogCQkJLChzdHJpbmctdG8t bnVtYmVyIChtYXRjaC1zdHJpbmcgNCB0ZXJtKSkpKQogCQkgICAgIChwcm9wcAotCQkgICAg ICAobGV0KiAoKGd2IChwY2FzZSAodXBjYXNlIChtYXRjaC1zdHJpbmcgNSB0ZXJtKSkKKwkJ ICAgICAgKGxldCogKDs7IENvbnZlcnQgcHJvcGVydHkgbmFtZSB0byBhbiBFbGlzcAorCQkJ ICAgICA7OyBhY2Nlc3NvciBmb3IgdGhhdCBwcm9wZXJ0eS4KKwkJCSAgICAgKGd2IChwY2Fz ZSAodXBjYXNlIChtYXRjaC1zdHJpbmcgNSB0ZXJtKSkKIAkJCQkgICAoIkNBVEVHT1JZIgog CQkJCSAgICAnKG9yZy1nZXQtY2F0ZWdvcnkgKHBvaW50KSkpCiAJCQkJICAgKCJUT0RPIiAn dG9kbykKIAkJCQkgICAocCBgKG9yZy1jYWNoZWQtZW50cnktZ2V0IG5pbCAscCkpKSkKLQkJ CSAgICAgKHB2IChtYXRjaC1zdHJpbmcgNyB0ZXJtKSkKKwkJCSAgICAgOzsgRGV0ZXJtaW5l IG9wZXJhbmQgKGFrYS4gcHJvcGVydHkKKwkJCSAgICAgOzsgdmFsdWUpCisJCQkgICAgIChw diAobWF0Y2gtc3RyaW5nIDggdGVybSkpCisJCQkgICAgIDs7IERldGVybWluZSB0eXBlIG9m IG9wZXJhbmQuICBOb3RlIHRoYXQKKwkJCSAgICAgOzsgdGhlc2UgYXJlIG5vdCBleGNsdXNp dmU6IEFueSBUSU1FUCBpcworCQkJICAgICA7OyBhbHNvIFNUUlAuCiAJCQkgICAgIChyZWdl eHAgKGVxIChzdHJpbmctdG8tY2hhciBwdikgP3spKQogCQkJICAgICAoc3RycCAoZXEgKHN0 cmluZy10by1jaGFyIHB2KSA/XCIpKQogCQkJICAgICAodGltZXAgKHN0cmluZy1tYXRjaC1w ICJeXCJbWzxdXFwoPzpbMC05XStcXHxub3dcXHx0b2RheVxcfHRvbW9ycm93XFx8WystXVsw LTldK1tkbXd5XVxcKS4qW10+XVwiJCIgcHYpKQorCQkJICAgICA7OyBNYXNzYWdlIG9wZXJh bmQuICBUSU1FUCBtdXN0IGNvbWUKKwkJCSAgICAgOzsgYmVmb3JlIFNUUlAuCisJCQkgICAg IChwdiAoY29uZCAocmVnZXhwIChzdWJzdHJpbmcgcHYgMSAtMSkpCisJCQkJICAgICAgICh0 aW1lcCAgKG9yZy1tYXRjaGVyLXRpbWUKKwkJCQkJCShzdWJzdHJpbmcgcHYgMSAtMSkpKQor CQkJCSAgICAgICAoc3RycCAgIChzdWJzdHJpbmcgcHYgMSAtMSkpCisJCQkJICAgICAgICh0 ICAgICAgcHYpKSkKKwkJCSAgICAgOzsgQ29udmVydCBvcGVyYXRvciB0byBFbGlzcC4KIAkJ CSAgICAgKHBvIChvcmctb3AtdG8tZnVuY3Rpb24gKG1hdGNoLXN0cmluZyA2IHRlcm0pCi0J CQkJCQkgICAgIChpZiB0aW1lcCAndGltZSBzdHJwKSkpKQotCQkJKHNldHEgcHYgKGlmIChv ciByZWdleHAgc3RycCkgKHN1YnN0cmluZyBwdiAxIC0xKSBwdikpCi0JCQkod2hlbiB0aW1l cCAoc2V0cSBwdiAob3JnLW1hdGNoZXItdGltZSBwdikpKQotCQkJKGNvbmQgKChhbmQgcmVn ZXhwIChlcSBwbyAnLz0pKQotCQkJICAgICAgIGAobm90IChzdHJpbmctbWF0Y2ggLHB2IChv ciAsZ3YgIiIpKSkpCi0JCQkgICAgICAocmVnZXhwIGAoc3RyaW5nLW1hdGNoICxwdiAob3Ig LGd2ICIiKSkpCi0JCQkgICAgICAoc3RycCBgKCxwbyAob3IgLGd2ICIiKSAscHYpKQotCQkJ ICAgICAgKHQKLQkJCSAgICAgICBgKCxwbwotCQkJCSAoc3RyaW5nLXRvLW51bWJlciAob3Ig LGd2ICIiKSkKLQkJCQkgLChzdHJpbmctdG8tbnVtYmVyIHB2KSkpKSkpCi0JCSAgICAgKHQg YChtZW1iZXIgLHRhZyB0YWdzLWxpc3QpKSkpKQorCQkJCQkJICAgICAoaWYgdGltZXAgJ3Rp bWUgc3RycCkpKQorCQkJICAgICA7OyBDb252ZXJ0IHdob2xlIHRlcm0gdG8gRWxpc3AuCisJ CQkgICAgIChwdCAoY29uZCAoKGFuZCByZWdleHAgKGVxIHBvICcvPSkpCisJCQkJCWAobm90 IChzdHJpbmctbWF0Y2ggLHB2IChvciAsZ3YgIiIpKSkpCisJCQkJICAgICAgIChyZWdleHAg YChzdHJpbmctbWF0Y2ggLHB2IChvciAsZ3YgIiIpKSkKKwkJCQkgICAgICAgKHN0cnAgYCgs cG8gKG9yICxndiAiIikgLHB2KSkKKwkJCQkgICAgICAgKHQKKwkJCQkJYCgscG8KKwkJCQkJ ICAoc3RyaW5nLXRvLW51bWJlciAob3IgLGd2ICIiKSkKKwkJCQkJICAsKHN0cmluZy10by1u dW1iZXIgcHYpKSkpKQorCQkJICAgICA7OyBSZXNwZWN0IHRoZSBzdGFyIGFmdGVyIHRoZSBv cGVyYW5kLgorCQkJICAgICAocHQgKGlmIChtYXRjaC1lbmQgNykgYChhbmQgLGd2ICxwdCkg cHQpKSkKKwkJCXB0KSkKKwkJICAgICAodCBgKG1lbWJlciAsdGFnIHRhZ3MtbGlzdCkpKSkp IDsgKDIpCiAJICAgICAgKHB1c2ggKGlmIG1pbnVzIGAobm90ICxtbSkgbW0pIHRhZ3NtYXRj aGVyKQogCSAgICAgIChzZXRxIHRlcm0gcmVzdCkpKQogCSAgKHB1c2ggYChhbmQgLEB0YWdz bWF0Y2hlcikgb3JsaXN0KQpAQCAtMTE1MjAsMTIgKzExNTY0LDEyIEBAIHRoZSBsaXN0IG9m IHRhZ3MgaW4gdGhpcyBncm91cC4iCiAgICJUdXJuIGFuIG9wZXJhdG9yIGludG8gdGhlIGFw cHJvcHJpYXRlIGZ1bmN0aW9uLiIKICAgKHNldHEgb3AKIAkoY29uZAotCSAoKGVxdWFsICBv cCAgICI8IiAgICAgICApICcoPCAgICAgb3JnLXN0cmluZzwgIG9yZy10aW1lPCkpCi0JICgo ZXF1YWwgIG9wICAgIj4iICAgICAgICkgJyg+ICAgICBvcmctc3RyaW5nPiAgb3JnLXRpbWU+ KSkKLQkgKChtZW1iZXIgb3AgJygiPD0iICI9PCIpKSAnKDw9ICAgIG9yZy1zdHJpbmc8PSBv cmctdGltZTw9KSkKLQkgKChtZW1iZXIgb3AgJygiPj0iICI9PiIpKSAnKD49ICAgIG9yZy1z dHJpbmc+PSBvcmctdGltZT49KSkKLQkgKChtZW1iZXIgb3AgJygiPSIgICI9PSIpKSAnKD0g ICAgIHN0cmluZz0gICAgICBvcmctdGltZT0pKQotCSAoKG1lbWJlciBvcCAnKCI8PiIgIiE9 IikpICcoLz0gICAgb3JnLXN0cmluZzw+IG9yZy10aW1lPD4pKSkpCisJICgoZXF1YWwgIG9w ICAgIjwiICAgICAgICAgICAgKSAnKDwgICAgIG9yZy1zdHJpbmc8ICBvcmctdGltZTwpKQor CSAoKGVxdWFsICBvcCAgICI+IiAgICAgICAgICAgICkgJyg+ICAgICBvcmctc3RyaW5nPiAg b3JnLXRpbWU+KSkKKwkgKChtZW1iZXIgb3AgJygiPD0iICI9PCIgICAgICkpICcoPD0gICAg b3JnLXN0cmluZzw9IG9yZy10aW1lPD0pKQorCSAoKG1lbWJlciBvcCAnKCI+PSIgIj0+IiAg ICAgKSkgJyg+PSAgICBvcmctc3RyaW5nPj0gb3JnLXRpbWU+PSkpCisJICgobWVtYmVyIG9w ICcoIj0iICAiPT0iICAgICApKSAnKD0gICAgIHN0cmluZz0gICAgICBvcmctdGltZT0pKQor CSAoKG1lbWJlciBvcCAnKCI8PiIgIiE9IiAiLz0iKSkgJygvPSAgICBvcmctc3RyaW5nPD4g b3JnLXRpbWU8PikpKSkKICAgKG50aCAoaWYgKGVxIHN0cmluZ3AgJ3RpbWUpIDIgKGlmIHN0 cmluZ3AgMSAwKSkgb3ApKQogCiAoZGVmdmFyIG9yZy1hZGQtY29sb24tYWZ0ZXItdGFnLWNv bXBsZXRpb24gbmlsKSAgOzsgZHluYW1pY2FsbHkgc2NvcGVkIHBhcmFtCmRpZmYgLS1naXQg YS90ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwgYi90ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwK aW5kZXggODkwZWE2YThjLi5lZjUyYjk1YzcgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvbGlzcC90 ZXN0LW9yZy5lbAorKysgYi90ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwKQEAgLTI4NTEsNiAr Mjg1MSwxMSBAQCB0ZXN0IDxwb2ludD4KICAgICAgKGVxdWFsICcoMSkKIAkgICAgKG9yZy10 ZXN0LXdpdGgtdGVtcC10ZXh0ICIqIFsjQV0gSDFcbiogWyNCXSBIMiIKIAkgICAgICAob3Jn LW1hcC1lbnRyaWVzICMncG9pbnQgIlBSSU9SSVRZPVwiQVwiIikpKSkKKyAgICA7OyBOZWdh dGl2ZSBwcmlvcml0eSBtYXRjaC4KKyAgICAoc2hvdWxkCisgICAgIChlcXVhbCAnKDExKQor CSAgICAob3JnLXRlc3Qtd2l0aC10ZW1wLXRleHQgIiogWyNBXSBIMVxuKiBbI0JdIEgyIgor CSAgICAgIChvcmctbWFwLWVudHJpZXMgIydwb2ludCAiUFJJT1JJVFkvPVwiQVwiIikpKSkK ICAgICA7OyBEYXRlIG1hdGNoLgogICAgIChzaG91bGQKICAgICAgKGVxdWFsICcoMzYpCkBA IC0yODgxLDYgKzI4ODYsMzQgQEAgU0NIRURVTEVEOiA8MjAxNC0wMy0wNCB0dWUuPiIKIDpU RVNUOiAyCiA6RU5EOiIKIAkgICAgICAob3JnLW1hcC1lbnRyaWVzICMncG9pbnQgIlRFU1Q9 MSIpKSkpCisgICAgOzsgTmVnYXRpdmUgcmVndWxhciBwcm9wZXJ0eSBtYXRjaC4KKyAgICAo c2hvdWxkCisgICAgIChlcXVhbCAnKDM1IDY4KQorCSAgICAob3JnLXRlc3Qtd2l0aC10ZW1w LXRleHQgIgorKiBIMQorOlBST1BFUlRJRVM6Cis6VEVTVDogMQorOkVORDoKKyogSDIKKzpQ Uk9QRVJUSUVTOgorOlRFU1Q6IDIKKzpFTkQ6CisqIEgzIgorCSAgICAgIChvcmctbWFwLWVu dHJpZXMgIydwb2ludCAiVEVTVCE9MSIpKSkpCisgICAgOzsgU3RhcnJlZCBuZWdhdGl2ZSBy ZWd1bGFyIHByb3BlcnR5IG1hdGNoLgorICAgIChzaG91bGQKKyAgICAgKGVxdWFsICcoMzUp CisJICAgIChvcmctdGVzdC13aXRoLXRlbXAtdGV4dCAiCisqIEgxCis6UFJPUEVSVElFUzoK KzpURVNUOiAxCis6RU5EOgorKiBIMgorOlBST1BFUlRJRVM6Cis6VEVTVDogMgorOkVORDoK KyogSDMiCisJICAgICAgKG9yZy1tYXAtZW50cmllcyAjJ3BvaW50ICJURVNUIT0qMSIpKSkp CiAgICAgOzsgTXVsdGlwbGUgY3JpdGVyaWEuCiAgICAgKHNob3VsZAogICAgICAoZXF1YWwg JygyMykKLS0gCjIuMzAuMgoK --------------MCU0LSNhdSvlgdRXWqXtNWng--