From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jens Schmidt via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#66780: [PATCH] Improve rectangle-mark-mode when transient-mark-mode is off Date: Fri, 27 Oct 2023 22:31:24 +0200 Message-ID: <0b1f5f23-b683-4367-beae-332a8d850d32@vodafonemail.de> Reply-To: Jens Schmidt Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------WgCidZID1ewrWNgyZLJcVQ0f" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="3635"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla Thunderbird To: 66780@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Oct 27 22:32:59 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1qwTVq-0000gN-P4 for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 27 Oct 2023 22:32:58 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qwTVR-0008Am-6A; Fri, 27 Oct 2023 16:32:33 -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 1qwTVP-0008AR-Cb for bug-gnu-emacs@gnu.org; Fri, 27 Oct 2023 16:32:31 -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 1qwTVP-0000rB-44 for bug-gnu-emacs@gnu.org; Fri, 27 Oct 2023 16:32:31 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qwTVu-0003lU-EP for bug-gnu-emacs@gnu.org; Fri, 27 Oct 2023 16:33:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Jens Schmidt Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 27 Oct 2023 20:33:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 66780 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.169843874614423 (code B ref -1); Fri, 27 Oct 2023 20:33:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 27 Oct 2023 20:32:26 +0000 Original-Received: from localhost ([127.0.0.1]:37399 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qwTVJ-0003kW-50 for submit@debbugs.gnu.org; Fri, 27 Oct 2023 16:32:26 -0400 Original-Received: from lists.gnu.org ([2001:470:142::17]:35194) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qwTVE-0003kF-DG for submit@debbugs.gnu.org; Fri, 27 Oct 2023 16:32:23 -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 1qwTUY-00084N-R2 for bug-gnu-emacs@gnu.org; Fri, 27 Oct 2023 16:31:39 -0400 Original-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 1qwTUV-0000i1-AA for bug-gnu-emacs@gnu.org; Fri, 27 Oct 2023 16:31:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de; s=vfde-mb-mr2-23sep; t=1698438692; bh=4gG5KIVv8beIdtUVIOkB/GOIDrKo3vRSlBr4B/9au/0=; h=Content-Type:Message-ID:Date:User-Agent:From:Content-Language:To: Subject:From; b=r+2ZcYAk0gqrNF09m6ngdwo4fHxUdhdAU3s6a270y6XXBcbfDBVKDbbF1WYNOgPnH B2K/8NFDMejLWOo8atHzbOo9Fsu5JYQccMU1AhqkdCCd+ZbzCRiVSoOg3GXsDB/Kjg 6Z9EGRYWUeCvmJYZ7cW2jn3N/PZ+uoI0PdBes8X8= Original-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 4SHDpX1jhcz1y2k for ; Fri, 27 Oct 2023 20:31:32 +0000 (UTC) Original-Received: from [192.168.178.41] (port-92-194-118-150.dynamic.as20676.net [92.194.118.150]) (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 4SHDpR59Q3zHnfp for ; Fri, 27 Oct 2023 20:31:24 +0000 (UTC) Content-Language: de-DE-frami, en-US X-purgate-type: clean X-purgate: clean X-purgate-size: 15402 X-purgate-ID: 155817::1698438687-FD7FF94E-2AD5616B/0/0 Received-SPF: pass client-ip=145.253.228.164; envelope-from=jschmidt4gnu@vodafonemail.de; helo=mr4.vodafonemail.de X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:273405 Archived-At: This is a multi-part message in MIME format. --------------WgCidZID1ewrWNgyZLJcVQ0f Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Severity: minor All issues reported here are about using rectangle-mark-mode (RMM) when Transient Mark mode (TMM) is off. Bug#42663 already has mentioned a few issues of this combination, but IMO did not completely describe or solve them. So suppose you start in the Emacs source directory tree ./src/emacs -Q --eval='(transient-mark-mode -1)' README When you then press `C-x ' to enable RMM, the following happens, which is expected: 1. The mark is NOT activated and, hence, the region-rectangle is NOT shown when you move point. Also, point movement stays regular, in that you cannot advance point to after EOL, for example. Again, this restriction is expected and is described already in commit 06dcd2be5d42 provided by Sean to solve bug#42663. However, what has not been described yet is that some parts of RMM actually _are_ active when one enables it with TMM off: 2. The key bindings in `rectangle-mark-mode-map', so that, for example, `C-x C-x' does not exchange point and mark, but instead cycles through the corners of the rectangle spanned by mark and point (using closest accessible buffer positions as an approximation for those positions where point regularly cannot be moved to). (Short reproducer when starting off the "emacs -Q ..." above: M-: (rectangle-mark-mode -1) RET M-< C-x C-4 C-n C-e C-x C-x C-x C-x C-x C-x) 3. Advices on `region-extract-function' and `region-insert-function', so that C-w and C-y still operate on the current rectangle, and not the regular region. (Short reproducer when starting off the "emacs -Q ..." above: M-: (rectangle-mark-mode -1) RET M-< C-x C-4 C-n C-4 C-f C-w) I found 2. and 3. surprising because I would have expected that RMM is completely off. Moreover, RMM does not provide a minor mode lighter so you cannot easily tell whether it is on or off. I have attempted to improve the situation by providing documentation (fix A) in a patch on emacs-29, and some minor code fixes (B and C) in a patch on emacs-master. That latter patch still has a placeholder "bug#XXXXX" which needs to be updated once I have a bug number. * Fix A: Improve Documentation Here is the text that Sean has already added to emacs/killing.tex in commit 06dcd2be5d42: +The region-rectangle works only when the mark is active. In +particular, when Transient Mark mode is off (@pxref{Disabled Transient +Mark}), in addition to typing @kbd{C-x @key{SPC}} you will need to +activate the mark. I first tried to extend on that, but then decided to completely redo the material, like this: + rectangle-mark-mode behaves in a slightly different way when +Transient Mark mode is off (@pxref{Disabled Transient Mark}). In this +case, when you enable rectangle-mark-mode, the region-rectangle is not +automatically enabled. Accordingly, cursor movement with @kbd{C-f}, +@kbd{C-n} etc.@: is confined to the regularly accessible buffer +positions. However, killing and yanking still operate on the +rectangle spanned by point and mark. Also @kbd{C-x C-x} still cycles +through the corners of that rectangle, but only as far as these are at +buffer positions that are regularly accessible. + + As mentioned above, rectangle-mark-mode persists as long the region +is active: If the region gets deactivated, rectangle-mark-mode gets +deactivated as well. But with disabled Transient mark mode there is +usually no active region that would get deactivated, and so you have +to explicitly switch off rectangle-mark-mode when you no longer want +to use it. + + To experience all benefits of rectangle-mark-mode and the +region-rectangle when Transient Mark mode is off, you can temporarily +activate Transient Mark mode after enabling rectangle-mark-mode, for +example, with @kbd{C-@key{SPC} C-@key{SPC}}. @xref{Disabled Transient +Mark}. I also replaced the somewhat unhelpful reference to parent node "@xref{Killing}" further up by references to sibling nodes: so in a rectangular fashion, and killing and yanking operate on the -rectangle. @xref{Killing}. The mode persists only as long as the -region is active. +rectangle. @xref{Deletion and Killing}, @ref{Yanking}. The mode +persists only as long as the region is active. * Fix B: Use a Minor Mode Lighter With TMM off and RMM on, the most important indicator of RMM (the region-rectangle) is not visible. And since RMM's minor mode lighter is nil, one has no visible feedback of it still being active. That can be surprising since some of its features are still active as described above. I tried to improve that by using a minor mode lighter that goes on only if TMM is off, like this: +(defvar rectangle-mark-mode-lighter nil + "Lighter displayed for `rectangle-mark-mode'.") + ;;;###autoload (define-minor-mode rectangle-mark-mode "Toggle the region as rectangular. Activates the region if it's inactive and Transient Mark mode is on. Only lasts until the region is next deactivated." - :lighter nil + :lighter rectangle-mark-mode-lighter (rectangle--reset-crutches) (when rectangle-mark-mode + ;; Make us more visible when Transient Mark mode is off and there + ;; is no rectangle (bug#XXXXX). + (setq rectangle-mark-mode-lighter + (and (not transient-mark-mode) " Rect")) * Fix C: Mark RMM Movement Commands as Shift-Selectable Finally, to make RMM better usable with shift-select-mode, I added the necessary interactive specifiers to the RMM-specific movement commands rectangle-right-char rectangle-left-char rectangle-forward-char rectangle-backward-char rectangle-next-line rectangle-previous-line Please review. Thanks. --------------WgCidZID1ewrWNgyZLJcVQ0f Content-Type: text/x-patch; charset=UTF-8; name="0001-29-Improve-rectangle-mark-mode-when-transient-mark-mode.patch" Content-Disposition: attachment; filename*0="0001-29-Improve-rectangle-mark-mode-when-transient-mark-mode"; filename*1=".patch" Content-Transfer-Encoding: base64 RnJvbSA2ZDdkODNmMTU4YzMzNzFlNTk4NzdlMDJiODhjMzhjNjY0Y2IwZmY5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZW5zIFNjaG1pZHQgPGpzY2htaWR0NGdudUB2b2Rh Zm9uZW1haWwuZGU+CkRhdGU6IFdlZCwgMjUgT2N0IDIwMjMgMjE6MzI6MTcgKzAyMDAKU3Vi amVjdDogW1BBVENIXSBJbXByb3ZlIHJlY3RhbmdsZS1tYXJrLW1vZGUgd2hlbiB0cmFuc2ll bnQtbWFyay1tb2RlIGlzIG9mZgoKKiBkb2MvZW1hY3Mva2lsbGluZy50ZXhpIChSZWN0YW5n bGVzKTogQWRkIGRvY3VtZW50YXRpb24gb24gc3BlY2lmaWNzCm9mIHJlY3RhbmdsZS1tYXJr LW1vZGUgd2hlbiB0cmFuc2llbnQtbWFyay1tb2RlIGlzIG9mZi4KLS0tCiBkb2MvZW1hY3Mv a2lsbGluZy50ZXhpIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RvYy9lbWFjcy9raWxsaW5nLnRleGkgYi9kb2MvZW1hY3Mva2lsbGluZy50ZXhp CmluZGV4IDQ3ZTBiNWUzN2FlLi5lNmE4ZmUyODQ4ZSAxMDA2NDQKLS0tIGEvZG9jL2VtYWNz L2tpbGxpbmcudGV4aQorKysgYi9kb2MvZW1hY3Mva2lsbGluZy50ZXhpCkBAIC05MzksMTMg KzkzOSw4IEBAIFJlY3RhbmdsZXMKIChmaXJzdCBhY3RpdmF0aW5nIHRoZSByZWdpb24gaWYg bmVjZXNzYXJ5KS4gIFdoZW4gdGhpcyBtb2RlIGlzIGVuYWJsZWQsCiBjb21tYW5kcyB0aGF0 IHJlc2l6ZSB0aGUgcmVnaW9uIChAa2Jke0MtZn0sIEBrYmR7Qy1ufSBldGMuKUA6IGRvCiBz byBpbiBhIHJlY3Rhbmd1bGFyIGZhc2hpb24sIGFuZCBraWxsaW5nIGFuZCB5YW5raW5nIG9w ZXJhdGUgb24gdGhlCi1yZWN0YW5nbGUuICBAeHJlZntLaWxsaW5nfS4gIFRoZSBtb2RlIHBl cnNpc3RzIG9ubHkgYXMgbG9uZyBhcyB0aGUKLXJlZ2lvbiBpcyBhY3RpdmUuCi0KLVRoZSBy ZWdpb24tcmVjdGFuZ2xlIHdvcmtzIG9ubHkgd2hlbiB0aGUgbWFyayBpcyBhY3RpdmUuICBJ bgotcGFydGljdWxhciwgd2hlbiBUcmFuc2llbnQgTWFyayBtb2RlIGlzIG9mZiAoQHB4cmVm e0Rpc2FibGVkIFRyYW5zaWVudAotTWFya30pLCBpbiBhZGRpdGlvbiB0byB0eXBpbmcgQGti ZHtDLXggQGtleXtTUEN9fSB5b3Ugd2lsbCBuZWVkIHRvCi1hY3RpdmF0ZSB0aGUgbWFyay4K K3JlY3RhbmdsZS4gIEB4cmVme0RlbGV0aW9uIGFuZCBLaWxsaW5nfSwgQHJlZntZYW5raW5n fS4gIFRoZSBtb2RlCitwZXJzaXN0cyBvbmx5IGFzIGxvbmcgYXMgdGhlIHJlZ2lvbiBpcyBh Y3RpdmUuCiAKIFVubGlrZSB0aGUgc3RhbmRhcmQgcmVnaW9uLCB0aGUgcmVnaW9uLXJlY3Rh bmdsZSBjYW4gaGF2ZSBpdHMgY29ybmVycwogZXh0ZW5kZWQgcGFzdCB0aGUgZW5kIG9mIGJ1 ZmZlciwgb3IgaW5zaWRlIHN0cmV0Y2hlcyBvZiB3aGl0ZSBzcGFjZQpAQCAtOTYyLDYgKzk1 NywyOSBAQCBSZWN0YW5nbGVzCiB0byBtb2RpZnkgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIHJl Z2lvbi1yZWN0YW5nbGUgYmVmb3JlIGludm9raW5nIGFuCiBvcGVyYXRpb24gb24gdGhlIG1h cmtlZCB0ZXh0LgogCisgIHJlY3RhbmdsZS1tYXJrLW1vZGUgYmVoYXZlcyBpbiBhIHNsaWdo dGx5IGRpZmZlcmVudCB3YXkgd2hlbgorVHJhbnNpZW50IE1hcmsgbW9kZSBpcyBvZmYgKEBw eHJlZntEaXNhYmxlZCBUcmFuc2llbnQgTWFya30pLiAgSW4gdGhpcworY2FzZSwgd2hlbiB5 b3UgZW5hYmxlIHJlY3RhbmdsZS1tYXJrLW1vZGUsIHRoZSByZWdpb24tcmVjdGFuZ2xlIGlz IG5vdAorYXV0b21hdGljYWxseSBlbmFibGVkLiAgQWNjb3JkaW5nbHksIGN1cnNvciBtb3Zl bWVudCB3aXRoIEBrYmR7Qy1mfSwKK0BrYmR7Qy1ufSBldGMuQDogaXMgY29uZmluZWQgdG8g dGhlIHJlZ3VsYXJseSBhY2Nlc3NpYmxlIGJ1ZmZlcgorcG9zaXRpb25zLiAgSG93ZXZlciwg a2lsbGluZyBhbmQgeWFua2luZyBzdGlsbCBvcGVyYXRlIG9uIHRoZQorcmVjdGFuZ2xlIHNw YW5uZWQgYnkgcG9pbnQgYW5kIG1hcmsuICBBbHNvIEBrYmR7Qy14IEMteH0gc3RpbGwgY3lj bGVzCit0aHJvdWdoIHRoZSBjb3JuZXJzIG9mIHRoYXQgcmVjdGFuZ2xlLCBidXQgb25seSBh cyBmYXIgYXMgdGhlc2UgYXJlIGF0CitidWZmZXIgcG9zaXRpb25zIHRoYXQgYXJlIHJlZ3Vs YXJseSBhY2Nlc3NpYmxlLgorCisgIEFzIG1lbnRpb25lZCBhYm92ZSwgcmVjdGFuZ2xlLW1h cmstbW9kZSBwZXJzaXN0cyBhcyBsb25nIHRoZSByZWdpb24KK2lzIGFjdGl2ZTogSWYgdGhl IHJlZ2lvbiBnZXRzIGRlYWN0aXZhdGVkLCByZWN0YW5nbGUtbWFyay1tb2RlIGdldHMKK2Rl YWN0aXZhdGVkIGFzIHdlbGwuICBCdXQgd2l0aCBkaXNhYmxlZCBUcmFuc2llbnQgbWFyayBt b2RlIHRoZXJlIGlzCit1c3VhbGx5IG5vIGFjdGl2ZSByZWdpb24gdGhhdCB3b3VsZCBnZXQg ZGVhY3RpdmF0ZWQsIGFuZCBzbyB5b3UgaGF2ZQordG8gZXhwbGljaXRseSBzd2l0Y2ggb2Zm IHJlY3RhbmdsZS1tYXJrLW1vZGUgd2hlbiB5b3Ugbm8gbG9uZ2VyIHdhbnQKK3RvIHVzZSBp dC4KKworICBUbyBleHBlcmllbmNlIGFsbCBiZW5lZml0cyBvZiByZWN0YW5nbGUtbWFyay1t b2RlIGFuZCB0aGUKK3JlZ2lvbi1yZWN0YW5nbGUgd2hlbiBUcmFuc2llbnQgTWFyayBtb2Rl IGlzIG9mZiwgeW91IGNhbiB0ZW1wb3JhcmlseQorYWN0aXZhdGUgVHJhbnNpZW50IE1hcmsg bW9kZSBhZnRlciBlbmFibGluZyByZWN0YW5nbGUtbWFyay1tb2RlLCBmb3IKK2V4YW1wbGUs IHdpdGggQGtiZHtDLUBrZXl7U1BDfSBDLUBrZXl7U1BDfX0uICBAeHJlZntEaXNhYmxlZCBU cmFuc2llbnQKK01hcmt9LgorCiBAbm9kZSBDVUEgQmluZGluZ3MKIEBzZWN0aW9uIENVQSBC aW5kaW5ncwogQGZpbmRleCBjdWEtbW9kZQotLSAKMi4zMC4yCgo= --------------WgCidZID1ewrWNgyZLJcVQ0f Content-Type: text/x-patch; charset=UTF-8; name="0001-30-Improve-rectangle-mark-mode-when-transient-mark-mode.patch" Content-Disposition: attachment; filename*0="0001-30-Improve-rectangle-mark-mode-when-transient-mark-mode"; filename*1=".patch" Content-Transfer-Encoding: base64 RnJvbSAyZWRjNDg5ZjRmODJhNzJiOTE2MjRhNzc5ZjA2YjQ4OGU1ODY1MDdmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZW5zIFNjaG1pZHQgPGpzY2htaWR0NGdudUB2b2Rh Zm9uZW1haWwuZGU+CkRhdGU6IFdlZCwgMjUgT2N0IDIwMjMgMjI6MzY6MTUgKzAyMDAKU3Vi amVjdDogW1BBVENIXSBJbXByb3ZlIHJlY3RhbmdsZS1tYXJrLW1vZGUgd2hlbiB0cmFuc2ll bnQtbWFyay1tb2RlIGlzIG9mZgoKKiBsaXNwL3JlY3QuZWwgKHJlY3RhbmdsZS1tYXJrLW1v ZGUtbGlnaHRlcik6IEFkZCBuZXcgdmFyaWFibGUgLi4uCihyZWN0YW5nbGUtbWFyay1tb2Rl KTogLi4uIGFuZCB1c2UgaXQgaGVyZSB0byBtYWtlIHJlY3RhbmdsZS1tYXJrLW1vZGUKbW9y ZSB2aXNpYmxlLgoocmVjdGFuZ2xlLXJpZ2h0LWNoYXIsIHJlY3RhbmdsZS1sZWZ0LWNoYXIs IHJlY3RhbmdsZS1mb3J3YXJkLWNoYXIpCihyZWN0YW5nbGUtYmFja3dhcmQtY2hhciwgcmVj dGFuZ2xlLW5leHQtbGluZSkKKHJlY3RhbmdsZS1wcmV2aW91cy1saW5lKTogRGVjbGFyZSBh cyBzaGlmdC10cmFuc2xhdGFibGUgbW90aW9uCmNvbW1hbmRzLgotLS0KIGxpc3AvcmVjdC5l bCB8IDIxICsrKysrKysrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE0IGluc2Vy dGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9yZWN0LmVsIGIv bGlzcC9yZWN0LmVsCmluZGV4IDhkYzE4OGIxZGUwLi5mMGI1YTliODA2YSAxMDA2NDQKLS0t IGEvbGlzcC9yZWN0LmVsCisrKyBiL2xpc3AvcmVjdC5lbApAQCAtNjQ2LDE1ICs2NDYsMjIg QEAgcmVjdGFuZ2xlLW1hcmstbW9kZS1tYXAKICAgIjxyZW1hcD4gPG5leHQtbGluZT4iICAg ICAgICAgICAgICAgIydyZWN0YW5nbGUtbmV4dC1saW5lCiAgICI8cmVtYXA+IDxwcmV2aW91 cy1saW5lPiIgICAgICAgICAgICMncmVjdGFuZ2xlLXByZXZpb3VzLWxpbmUpCgorKGRlZnZh ciByZWN0YW5nbGUtbWFyay1tb2RlLWxpZ2h0ZXIgbmlsCisgICJMaWdodGVyIGRpc3BsYXll ZCBmb3IgYHJlY3RhbmdsZS1tYXJrLW1vZGUnLiIpCisKIDs7OyMjI2F1dG9sb2FkCiAoZGVm aW5lLW1pbm9yLW1vZGUgcmVjdGFuZ2xlLW1hcmstbW9kZQogICAiVG9nZ2xlIHRoZSByZWdp b24gYXMgcmVjdGFuZ3VsYXIuCgogQWN0aXZhdGVzIHRoZSByZWdpb24gaWYgaXQncyBpbmFj dGl2ZSBhbmQgVHJhbnNpZW50IE1hcmsgbW9kZSBpcwogb24uICBPbmx5IGxhc3RzIHVudGls IHRoZSByZWdpb24gaXMgbmV4dCBkZWFjdGl2YXRlZC4iCi0gIDpsaWdodGVyIG5pbAorICA6 bGlnaHRlciByZWN0YW5nbGUtbWFyay1tb2RlLWxpZ2h0ZXIKICAgKHJlY3RhbmdsZS0tcmVz ZXQtY3J1dGNoZXMpCiAgICh3aGVuIHJlY3RhbmdsZS1tYXJrLW1vZGUKKyAgICA7OyBNYWtl IHVzIG1vcmUgdmlzaWJsZSB3aGVuIFRyYW5zaWVudCBNYXJrIG1vZGUgaXMgb2ZmIGFuZCB0 aGVyZQorICAgIDs7IGlzIG5vIHJlY3RhbmdsZSAoYnVnI1hYWFhYKS4KKyAgICAoc2V0cSBy ZWN0YW5nbGUtbWFyay1tb2RlLWxpZ2h0ZXIKKyAgICAgICAgICAoYW5kIChub3QgdHJhbnNp ZW50LW1hcmstbW9kZSkgIiBSZWN0IikpCiAgICAgKGFkdmljZS1hZGQgJ3JlZ2lvbi1iZWdp bm5pbmcgOmFyb3VuZCAjJ3JlY3RhbmdsZS0tcmVnaW9uLWJlZ2lubmluZykKICAgICAoYWR2 aWNlLWFkZCAncmVnaW9uLWVuZCA6YXJvdW5kICMncmVjdGFuZ2xlLS1yZWdpb24tZW5kKQog ICAgIChhZGQtaG9vayAnZGVhY3RpdmF0ZS1tYXJrLWhvb2sKQEAgLTcyNywyOSArNzM0LDI5 IEBAIHJlY3RhbmdsZS0tKi1jaGFyCgogKGRlZnVuIHJlY3RhbmdsZS1yaWdodC1jaGFyICgm b3B0aW9uYWwgbikKICAgIkxpa2UgYHJpZ2h0LWNoYXInIGJ1dCBzdGVwcyBpbnRvIHdpZGUg Y2hhcnMgYW5kIG1vdmVzIHBhc3QgRU9MLiIKLSAgKGludGVyYWN0aXZlICJwIikgKHJlY3Rh bmdsZS0tKi1jaGFyICMncmlnaHQtY2hhciBuICMnbGVmdC1jaGFyKSkKKyAgKGludGVyYWN0 aXZlICJecCIpIChyZWN0YW5nbGUtLSotY2hhciAjJ3JpZ2h0LWNoYXIgbiAjJ2xlZnQtY2hh cikpCiAoZGVmdW4gcmVjdGFuZ2xlLWxlZnQtY2hhciAoJm9wdGlvbmFsIG4pCiAgICJMaWtl IGBsZWZ0LWNoYXInIGJ1dCBzdGVwcyBpbnRvIHdpZGUgY2hhcnMgYW5kIG1vdmVzIHBhc3Qg RU9MLiIKLSAgKGludGVyYWN0aXZlICJwIikgKHJlY3RhbmdsZS0tKi1jaGFyICMnbGVmdC1j aGFyIG4gIydyaWdodC1jaGFyKSkKKyAgKGludGVyYWN0aXZlICJecCIpIChyZWN0YW5nbGUt LSotY2hhciAjJ2xlZnQtY2hhciBuICMncmlnaHQtY2hhcikpCgogKGRlZnVuIHJlY3Rhbmds ZS1mb3J3YXJkLWNoYXIgKCZvcHRpb25hbCBuKQogICAiTGlrZSBgZm9yd2FyZC1jaGFyJyBi dXQgc3RlcHMgaW50byB3aWRlIGNoYXJzIGFuZCBtb3ZlcyBwYXN0IEVPTC4iCi0gIChpbnRl cmFjdGl2ZSAicCIpIChyZWN0YW5nbGUtLSotY2hhciAjJ2ZvcndhcmQtY2hhciBuICMnYmFj a3dhcmQtY2hhcikpCisgIChpbnRlcmFjdGl2ZSAiXnAiKSAocmVjdGFuZ2xlLS0qLWNoYXIg Iydmb3J3YXJkLWNoYXIgbiAjJ2JhY2t3YXJkLWNoYXIpKQogKGRlZnVuIHJlY3RhbmdsZS1i YWNrd2FyZC1jaGFyICgmb3B0aW9uYWwgbikKICAgIkxpa2UgYGJhY2t3YXJkLWNoYXInIGJ1 dCBzdGVwcyBpbnRvIHdpZGUgY2hhcnMgYW5kIG1vdmVzIHBhc3QgRU9MLiIKLSAgKGludGVy YWN0aXZlICJwIikgKHJlY3RhbmdsZS0tKi1jaGFyICMnYmFja3dhcmQtY2hhciBuICMnZm9y d2FyZC1jaGFyKSkKKyAgKGludGVyYWN0aXZlICJecCIpIChyZWN0YW5nbGUtLSotY2hhciAj J2JhY2t3YXJkLWNoYXIgbiAjJ2ZvcndhcmQtY2hhcikpCgogKGRlZnVuIHJlY3RhbmdsZS1u ZXh0LWxpbmUgKCZvcHRpb25hbCBuKQogICAiTGlrZSBgbmV4dC1saW5lJyBidXQgc3RlcHMg aW50byB3aWRlIGNoYXJzIGFuZCBtb3ZlcyBwYXN0IEVPTC4KIElnbm9yZXMgYGxpbmUtbW92 ZS12aXN1YWwnLiIKLSAgKGludGVyYWN0aXZlICJwIikKKyAgKGludGVyYWN0aXZlICJecCIp CiAgIChsZXQgKChjb2wgKHJlY3RhbmdsZS0tcG9pbnQtY29sIChwb2ludCkpKSkKICAgICAo Zm9yd2FyZC1saW5lIG4pCiAgICAgKHJlY3RhbmdsZS0tY29sLXBvcyBjb2wgJ3BvaW50KSkp CiAoZGVmdW4gcmVjdGFuZ2xlLXByZXZpb3VzLWxpbmUgKCZvcHRpb25hbCBuKQogICAiTGlr ZSBgcHJldmlvdXMtbGluZScgYnV0IHN0ZXBzIGludG8gd2lkZSBjaGFycyBhbmQgbW92ZXMg cGFzdCBFT0wuCiBJZ25vcmVzIGBsaW5lLW1vdmUtdmlzdWFsJy4iCi0gIChpbnRlcmFjdGl2 ZSAicCIpCisgIChpbnRlcmFjdGl2ZSAiXnAiKQogICAobGV0ICgoY29sIChyZWN0YW5nbGUt LXBvaW50LWNvbCAocG9pbnQpKSkpCiAgICAgKGZvcndhcmQtbGluZSAoLSBuKSkKICAgICAo cmVjdGFuZ2xlLS1jb2wtcG9zIGNvbCAncG9pbnQpKSkKLS0KMi4zMC4yCg== --------------WgCidZID1ewrWNgyZLJcVQ0f--