From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Arni Magnusson Newsgroups: gmane.emacs.bugs Subject: bug#2887: Suggestions for simple.el Date: Sat, 18 Apr 2009 00:08:46 +0000 (GMT) Message-ID: References: <26172.194.144.135.59.1238851923.squirrel@www.hafro.is> <11531.194.144.135.59.1238888128.squirrel@www.hafro.is> <13654.194.144.135.59.1238962672.squirrel@www.hafro.is> <16717.194.144.135.59.1239072410.squirrel@www.hafro.is> Reply-To: Arni Magnusson , 2887@emacsbugs.donarmstrong.com NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-2129641270-1240013331=:7824" X-Trace: ger.gmane.org 1240014255 6219 80.91.229.12 (18 Apr 2009 00:24:15 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 18 Apr 2009 00:24:15 +0000 (UTC) Cc: 2887@emacsbugs.donarmstrong.com To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Apr 18 02:25:34 2009 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1LuyNA-0007Dm-94 for geb-bug-gnu-emacs@m.gmane.org; Sat, 18 Apr 2009 02:25:33 +0200 Original-Received: from localhost ([127.0.0.1]:50577 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LuyLl-0008FC-9w for geb-bug-gnu-emacs@m.gmane.org; Fri, 17 Apr 2009 20:24:05 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LuyLg-0008Eo-J1 for bug-gnu-emacs@gnu.org; Fri, 17 Apr 2009 20:24:00 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LuyLb-00089p-4D for bug-gnu-emacs@gnu.org; Fri, 17 Apr 2009 20:23:59 -0400 Original-Received: from [199.232.76.173] (port=54592 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LuyLa-00089g-Va for bug-gnu-emacs@gnu.org; Fri, 17 Apr 2009 20:23:55 -0400 Original-Received: from rzlab.ucr.edu ([138.23.92.77]:50103) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LuyLa-0006Ri-7T for bug-gnu-emacs@gnu.org; Fri, 17 Apr 2009 20:23:54 -0400 Original-Received: from rzlab.ucr.edu (rzlab.ucr.edu [127.0.0.1]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id n3I0NpCJ003286; Fri, 17 Apr 2009 17:23:52 -0700 Original-Received: (from debbugs@localhost) by rzlab.ucr.edu (8.13.8/8.13.8/Submit) id n3I0F5rm000684; Fri, 17 Apr 2009 17:15:05 -0700 X-Loop: owner@emacsbugs.donarmstrong.com Resent-From: Arni Magnusson Resent-To: bug-submit-list@donarmstrong.com Resent-CC: Emacs Bugs Resent-Date: Sat, 18 Apr 2009 00:15:04 +0000 Resent-Message-ID: Resent-Sender: owner@emacsbugs.donarmstrong.com X-Emacs-PR-Message: followup 2887 X-Emacs-PR-Package: emacs X-Emacs-PR-Keywords: Original-Received: via spool by 2887-submit@emacsbugs.donarmstrong.com id=B2887.124001334631674 (code B ref 2887); Sat, 18 Apr 2009 00:15:04 +0000 Original-Received: (at 2887) by emacsbugs.donarmstrong.com; 18 Apr 2009 00:09:06 +0000 X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. Original-Received: from hafgarpur.hafro.is (hafgarpur.hafro.is [130.208.64.48]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id n3I09062031654 for <2887@emacsbugs.donarmstrong.com>; Fri, 17 Apr 2009 17:09:02 -0700 X-Virus-Scanned: amavisd-new at hafro.is Original-Received: from localhost.localdomain (hafstormur.hafro.is [130.208.66.52]) by hafgarpur.hafro.is (8.14.2/8.14.2/hafro-2.45) with ESMTP id n3I08pMx021331; Sat, 18 Apr 2009 00:08:52 GMT Original-Received: from localhost.localdomain (localhost [127.0.0.1]) by localhost.localdomain (8.14.2/8.14.2/hafro-1.6) with ESMTP id n3I08p03009744; Sat, 18 Apr 2009 00:08:51 GMT Original-Received: from localhost (arnima@localhost) by localhost.localdomain (8.14.2/8.14.2/hafro-0.3) with ESMTP id n3I08oWM009741; Sat, 18 Apr 2009 00:08:51 GMT X-Authentication-Warning: localhost.localdomain: arnima owned process doing -bs X-X-Sender: arnima@localhost.localdomain In-Reply-To: X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) Resent-Date: Fri, 17 Apr 2009 20:23:59 -0400 X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:27290 Archived-At: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-2129641270-1240013331=:7824 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Thanks Stefan, for forwarding my suggestions to emacs-devel. The discussion raised many good points. After considering the viewpoints we have heard so far, here are my (revised) opinions: `backward-delete-word' `delete-word' I think Emacs should provide a simple way for beginning users to have C-backspace and C-delete behave like they would expect, i.e. leaving the clipboard intact. There are different ways to provide this, using a variable and/or functions. Users should not need to write their own functions for something this fundamental. `kill-line-or-region' C-k should probably be bound to this function. This would be appreciated by many `transient-mark-mode' users. I haven't used Emacs without `transient-mark-mode', but don't those people still want C-w bound to `kill-region'? `pull-line-down' `pull-line-up' These are admittedly simple tricks of lesser importance, but anyone trying out the existing `transpose-lines' will read its documentation twice and try to master pulling lines up or down, before giving up. I find myself using these almost every day, with code, data, and config files. `pos-at-beginning-of-line' `pos-at-end-of-line' You're right, it's best to avoid `goto-line'. I have reimplemented these functions (see attachment) to improve the speed. I think they bridge an obvious gap in Emacs Lisp, making it considerably easier to read and write functions that operate on buffer text. `zap-back-to-char' `zap-up-to-char' I believe these more useful than the existing `zap-to-char', which often deletes the beginning of that important location, an opening brace or the like. `delete-trailing-white' > I think [ \t\r] is a good default, and if we introduce a config var > (which I'm not sure is worth the trouble), there's no reason to keep the > special treatment of formfeed. I agree that hardwiring [ \t\r] works fastest and is easy to use and maintain. Attached is my proposed upgrade of this function, where cleaned lines are counted. `delete-all-blank-lines' Vertical analog to `delete-trailing-white', which I use about as often. Anyone trying out the existing `delete-blank-lines' will wonder whether there is a keybinding to delete all blank lines, instead of just around the point. `delete-indentation-nospace' Similar to `delete-indentation' but leaves no space between the joined lines. I find myself using these almost every day, with prose, code, data, and config files. I have bound the two functions to neighboring keybindings. `goto-longest-line' I should probably withdraw this suggestion. After seeing Drew Adam's version, I have concluded that my version is too clunky to be in simple.el, and Drew's version is too large to be in simple.el. Despite being a vertical analog to `end-of-buffer', simple.el should probably not provide this functionality. `downcase-word-or-region' `upcase-word-or-region' M-l and M-u could be bound to this function. This would be appreciated by many `transient-mark-mode' users. I haven't used Emacs without `transient-mark-mode', but don't those people still want C-x C-l and C-x C-u bound to `downcase-region' and `upcase-region'? --- By suggesting so many functions at once, I've taken more of your time than I should. I'm very grateful for your hard work maintaining Emacs, and discussions like this are worthwhile if they lead to improved editing efficiency for users. The functions are all very short, very convenient in my opinion, and importantly they rhyme with functions that are already in simple.el. > This said, I think those new commands, unbound to any key, shouldn't be > placed in simple.el (which is preloaded) but into some other file. I'm > tempted to say "misc.el", where we could stuff any number of "commands > that users might like, but for which we couldn't come up with a good > key-binding". Ooo, I'm afraid misc.el might be a regrettable move in the long run. I think descriptive package names are the way to go, as the base Emacs distribution continues to grow. Perhaps simple.el could be split into something like base-buffers.el, base-mark.el, etc. As it stands, after careful examination of the base packages, I believe my suggested functions belong in simple.el. There are many commands in simple.el that are not bound to keys, including: * Variations of existing bound functions `next-error-no-select', `previous-error-no-select' `newline-and-indent', `reindent-then-newline-and-indent' `undo-only' * Modify buffer text `forward-to-indentation', `backward-to-indentation' `fixup-whitespace' * Information `what-line', `what-cursor-position' `blink-matching-open' * Others that I have bound `copy-region-as-kill' `insert-buffer' My suggested commands are mainly in one category: * Variations of existing bound functions `backward-delete-word', `delete-word' `kill-line-or-region' `pull-line-down', `pull-line-up' `zap-back-to-char', `zap-up-to-char' `delete-indentation-nospace' `downcase-word-or-region', `upcase-word-or-region' * Modify buffer text `delete-all-blank-lines' There are mainly two ways users can find out about such unbound commands: docstring cross-references, and brief entries in the Emacs/Emacs Lisp manuals. The latter manual mentions practically all commands in simple.el. Again, my apologies for the length of this message. If any of my suggestions end up being accepted, I could add some cross-references to their docstrings. Best regards, Arni --8323328-2129641270-1240013331=:7824 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=pos-at-xxx-of-line.el Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=pos-at-xxx-of-line.el KGRlZnVuIHBvcy1hdC1iZWdpbm5pbmctb2YtbGluZSAoTikgIlJldHVybiB0 aGUgcG9zaXRpb24gYXQgYmVnaW5uaW5nIG9mIGxpbmUgTi4iDQogIChzYXZl LWV4Y3Vyc2lvbiAoZ290by1jaGFyIChwb2ludC1taW4pKShsaW5lLWJlZ2lu bmluZy1wb3NpdGlvbiBOKSkpDQoNCihkZWZ1biBwb3MtYXQtZW5kLW9mLWxp bmUgKE4pICJSZXR1cm4gdGhlIHBvc2l0aW9uIGF0IGVuZCBvZiBsaW5lIE4u Ig0KICAoc2F2ZS1leGN1cnNpb24gKGdvdG8tY2hhciAocG9pbnQtbWluKSko bGluZS1lbmQtcG9zaXRpb24gTikpKQ0K --8323328-2129641270-1240013331=:7824 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=unchanged.el Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=unchanged.el KGRlZnVuIGJhY2t3YXJkLWRlbGV0ZS13b3JkIChOKSAiRGVsZXRlIHByZXZp b3VzIE4gd29yZHMuIiAoaW50ZXJhY3RpdmUgIipwIikoZGVsZXRlLXdvcmQg KC0gTikpKQ0KKGRlZnVuIGRlbGV0ZS13b3JkIChOKSAiRGVsZXRlIGZvbGxv d2luZyBOIHdvcmRzLiIgKGludGVyYWN0aXZlICIqcCIpDQogIChkZWxldGUt cmVnaW9uIChwb2ludCkoc2F2ZS1leGN1cnNpb24gKGZvcndhcmQtd29yZCBO KShwb2ludCkpKSkNCg0KKGRlZnVuIGtpbGwtbGluZS1vci1yZWdpb24gKCkg IktpbGwgcmVnaW9uIGlmIHNlbGVjdGVkLCBvdGhlcndpc2Uga2lsbCBsaW5l LiIgKGludGVyYWN0aXZlKQ0KICAoaWYgKGFuZCBtYXJrLWFjdGl2ZSB0cmFu c2llbnQtbWFyay1tb2RlKShraWxsLXJlZ2lvbiAocG9pbnQpKG1hcmspKShr aWxsLWxpbmUpKSkNCg0KKGRlZnVuIHB1bGwtbGluZS1kb3duIChOKSAiUHVs bCBsaW5lIGRvd24gTiB0aW1lcy4iIChpbnRlcmFjdGl2ZSAiKnAiKQ0KICAo bGV0ICgoY29sIChjdXJyZW50LWNvbHVtbikpKShraWxsLXdob2xlLWxpbmUg MSkoZm9yd2FyZC1saW5lIE4pKHlhbmsgMSkocG9wIGtpbGwtcmluZykoZm9y d2FyZC1saW5lIC0xKQ0KICAgICAgIChtb3ZlLXRvLWNvbHVtbiBjb2wpKSkN CihkZWZ1biBwdWxsLWxpbmUtdXAgKE4pICJQdWxsIGxpbmUgdXAgTiB0aW1l cy4iIChpbnRlcmFjdGl2ZSAiKnAiKQ0KICAobGV0ICgoY29sIChjdXJyZW50 LWNvbHVtbikpKShraWxsLXdob2xlLWxpbmUgMSkoZm9yd2FyZC1saW5lICgt IE4pKSh5YW5rIDEpKHBvcCBraWxsLXJpbmcpKGZvcndhcmQtbGluZSAtMSkN CiAgICAgICAobW92ZS10by1jb2x1bW4gY29sKSkpDQoNCihkZWZ1biB6YXAt YmFjay10by1jaGFyIChjaGFyKSAiRGVsZXRlIHJlZ2lvbiBiYWNrIHRvLCBi dXQgbm90IGluY2x1ZGluZywgQ0hBUi4iIChpbnRlcmFjdGl2ZSAiY1phcCBi YWNrIHRvIGNoYXI6ICIpDQogIChsZXQgKChjYXNlLWZvbGQtc2VhcmNoIG5p bCkpDQogICAgKGRlbGV0ZS1yZWdpb24gKHBvaW50KShwcm9nbiAoc2VhcmNo LWJhY2t3YXJkIChjaGFyLXRvLXN0cmluZyBjaGFyKSkoZm9yd2FyZC1jaGFy KShwb2ludCkpKSkpDQooZGVmdW4gemFwLXVwLXRvLWNoYXIgKGNoYXIpICJE ZWxldGUgcmVnaW9uIHVwIHRvLCBidXQgbm90IGluY2x1ZGluZywgQ0hBUi4i IChpbnRlcmFjdGl2ZSAiY1phcCB0byBjaGFyOiAiKQ0KICAobGV0ICgoY2Fz ZS1mb2xkLXNlYXJjaCBuaWwpKQ0KICAgIChkZWxldGUtcmVnaW9uIChwb2lu dCkocHJvZ24gKHNlYXJjaC1mb3J3YXJkIChjaGFyLXRvLXN0cmluZyBjaGFy KSkoYmFja3dhcmQtY2hhcikocG9pbnQpKSkpKQ0KDQooZGVmdW4gZGVsZXRl LWFsbC1ibGFuay1saW5lcyAoKSAiRGVsZXRlIGFsbCBibGFuayBsaW5lcyBp biBidWZmZXIuIiAoaW50ZXJhY3RpdmUpDQogIChzYXZlLWV4Y3Vyc2lvbg0K ICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpDQogICAgKGxldCAoKGNvdW50 IDApKSh3aGlsZSAoc2VhcmNoLWZvcndhcmQgIlxuXG4iIG5pbCB0KShnb3Rv LWNoYXIgKHBvaW50LW1pbikpDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAod2hpbGUgKHNlYXJjaC1mb3J3YXJkICJcblxuIiBuaWwgdCkocmVwbGFj ZS1tYXRjaCAiXG4iKShzZXRxIGNvdW50ICgrIGNvdW50IDEpKSkNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikp KQ0KICAgICAgICAgKGlmICg9IChmb2xsb3dpbmctY2hhcikgMTApKHByb2du IChkZWxldGUtY2hhciAxKShzZXRxIGNvdW50ICgrIGNvdW50IDEpKSkpDQog ICAgICAgICAobWVzc2FnZSAiRGVsZXRlZCAlZCBibGFuayBsaW5lcyIgY291 bnQpKSkpDQoNCihkZWZ1biBkZWxldGUtaW5kZW50YXRpb24tbm9zcGFjZSAo KSAiSm9pbiB0aGlzIGxpbmUgdG8gcHJldmlvdXMgd2l0aCBubyB3aGl0ZXNw YWNlIGF0IGpvaW4uIiAoaW50ZXJhY3RpdmUpDQogIChkZWxldGUtaW5kZW50 YXRpb24pKGRlbGV0ZS1ob3Jpem9udGFsLXNwYWNlKSkNCg0KKGRlZnVuIGRv d25jYXNlLXdvcmQtb3ItcmVnaW9uIChOKSAiRG93bmNhc2UgTiB3b3JkcyBv ciByZWdpb24uIiAoaW50ZXJhY3RpdmUgIipwIikNCiAgKGlmIChhbmQgbWFy ay1hY3RpdmUgdHJhbnNpZW50LW1hcmstbW9kZSkoZG93bmNhc2UtcmVnaW9u IChwb2ludCkobWFyaykpKGRvd25jYXNlLXdvcmQgTikpKQ0KKGRlZnVuIHVw Y2FzZS13b3JkLW9yLXJlZ2lvbiAoTikgIlVwY2FzZSBOIHdvcmRzIG9yIHJl Z2lvbi4iIChpbnRlcmFjdGl2ZSAiKnAiKQ0KICAoaWYgKGFuZCBtYXJrLWFj dGl2ZSB0cmFuc2llbnQtbWFyay1tb2RlKSh1cGNhc2UtcmVnaW9uIChwb2lu dCkobWFyaykpKHVwY2FzZS13b3JkIE4pKSkNCg== --8323328-2129641270-1240013331=:7824 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=delete-trailing-whitespace.el.diff Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=delete-trailing-whitespace.el.diff MTAsMTZjMTAsMTMNCjwgICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2Fy ZCAiXFxzLSQiIG5pbCB0KQ0KPCAJKHNraXAtc3ludGF4LWJhY2t3YXJkICIt IiAoc2F2ZS1leGN1cnNpb24gKGZvcndhcmQtbGluZSAwKSAocG9pbnQpKSkN CjwgCTs7IERvbid0IGRlbGV0ZSBmb3JtZmVlZHMsIGV2ZW4gaWYgdGhleSBh cmUgY29uc2lkZXJlZCB3aGl0ZXNwYWNlLg0KPCAJKHNhdmUtbWF0Y2gtZGF0 YQ0KPCAJICAoaWYgKGxvb2tpbmctYXQgIi4qXGYiKQ0KPCAJICAgICAgKGdv dG8tY2hhciAobWF0Y2gtZW5kIDApKSkpDQo8IAkoZGVsZXRlLXJlZ2lvbiAo cG9pbnQpIChtYXRjaC1lbmQgMCkpKSkpKQ0KLS0tDQo+ICAgICAgIChsZXQg KChjb3VudCAwKSkNCj4gICAgICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3 YXJkICJbIFx0XHJdKyQiIG5pbCB0KQ0KPiAgICAgICAgICAgKHJlcGxhY2Ut bWF0Y2ggIiIpKHNldHEgY291bnQgKDErIGNvdW50KSkpDQo+ICAgICAgICAg KG1lc3NhZ2UgIkNsZWFuZWQgJWQgbGluZXMiIGNvdW50KSkpKSkNCg== --8323328-2129641270-1240013331=:7824 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=delete-trailing-whitespace-suggest.el Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=delete-trailing-whitespace-suggest.el KGRlZnVuIGRlbGV0ZS10cmFpbGluZy13aGl0ZXNwYWNlICgpDQogICJEZWxl dGUgYWxsIHRoZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFjcm9zcyB0aGUgY3Vy cmVudCBidWZmZXIuDQpBbGwgd2hpdGVzcGFjZSBhZnRlciB0aGUgbGFzdCBu b24td2hpdGVzcGFjZSBjaGFyYWN0ZXIgaW4gYSBsaW5lIGlzIGRlbGV0ZWQu DQpUaGlzIHJlc3BlY3RzIG5hcnJvd2luZywgY3JlYXRlZCBieSBcXFtuYXJy b3ctdG8tcmVnaW9uXSBhbmQgZnJpZW5kcy4NCkEgZm9ybWZlZWQgaXMgbm90 IGNvbnNpZGVyZWQgd2hpdGVzcGFjZSBieSB0aGlzIGZ1bmN0aW9uLiINCiAg KGludGVyYWN0aXZlICIqIikNCiAgKHNhdmUtbWF0Y2gtZGF0YQ0KICAgIChz YXZlLWV4Y3Vyc2lvbg0KICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkN CiAgICAgIChsZXQgKChjb3VudCAwKSkNCiAgICAgICAgKHdoaWxlIChyZS1z ZWFyY2gtZm9yd2FyZCAiWyBcdFxyXSskIiBuaWwgdCkNCiAgICAgICAgICAo cmVwbGFjZS1tYXRjaCAiIikoc2V0cSBjb3VudCAoMSsgY291bnQpKSkNCiAg ICAgICAgKG1lc3NhZ2UgIkNsZWFuZWQgJWQgbGluZXMiIGNvdW50KSkpKSkN Cg== --8323328-2129641270-1240013331=:7824 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=delete-trailing-whitespace-cvs.el Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=delete-trailing-whitespace-cvs.el KGRlZnVuIGRlbGV0ZS10cmFpbGluZy13aGl0ZXNwYWNlICgpDQogICJEZWxl dGUgYWxsIHRoZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFjcm9zcyB0aGUgY3Vy cmVudCBidWZmZXIuDQpBbGwgd2hpdGVzcGFjZSBhZnRlciB0aGUgbGFzdCBu b24td2hpdGVzcGFjZSBjaGFyYWN0ZXIgaW4gYSBsaW5lIGlzIGRlbGV0ZWQu DQpUaGlzIHJlc3BlY3RzIG5hcnJvd2luZywgY3JlYXRlZCBieSBcXFtuYXJy b3ctdG8tcmVnaW9uXSBhbmQgZnJpZW5kcy4NCkEgZm9ybWZlZWQgaXMgbm90 IGNvbnNpZGVyZWQgd2hpdGVzcGFjZSBieSB0aGlzIGZ1bmN0aW9uLiINCiAg KGludGVyYWN0aXZlICIqIikNCiAgKHNhdmUtbWF0Y2gtZGF0YQ0KICAgIChz YXZlLWV4Y3Vyc2lvbg0KICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkN CiAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgIlxccy0kIiBuaWwg dCkNCgkoc2tpcC1zeW50YXgtYmFja3dhcmQgIi0iIChzYXZlLWV4Y3Vyc2lv biAoZm9yd2FyZC1saW5lIDApIChwb2ludCkpKQ0KCTs7IERvbid0IGRlbGV0 ZSBmb3JtZmVlZHMsIGV2ZW4gaWYgdGhleSBhcmUgY29uc2lkZXJlZCB3aGl0 ZXNwYWNlLg0KCShzYXZlLW1hdGNoLWRhdGENCgkgIChpZiAobG9va2luZy1h dCAiLipcZiIpDQoJICAgICAgKGdvdG8tY2hhciAobWF0Y2gtZW5kIDApKSkp DQoJKGRlbGV0ZS1yZWdpb24gKHBvaW50KSAobWF0Y2gtZW5kIDApKSkpKSkN Cg== --8323328-2129641270-1240013331=:7824--