From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "pierre kobylanski" Newsgroups: gmane.emacs.bugs Subject: bug#424: new feature: killed-buffer Date: Mon, 16 Jun 2008 10:16:19 +0200 Message-ID: <5d706d390806160116k872a3e0o1d824a6748630d7d@mail.gmail.com> Reply-To: pierre kobylanski , 424@emacsbugs.donarmstrong.com NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_21892_2686342.1213604179166" X-Trace: ger.gmane.org 1213622081 13657 80.91.229.12 (16 Jun 2008 13:14:41 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 16 Jun 2008 13:14:41 +0000 (UTC) To: bug-gnu-emacs@gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Jun 16 15:15:25 2008 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 1K8EXq-00059A-8P for geb-bug-gnu-emacs@m.gmane.org; Mon, 16 Jun 2008 15:14:51 +0200 Original-Received: from localhost ([127.0.0.1]:60210 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K8EX1-0007eA-6U for geb-bug-gnu-emacs@m.gmane.org; Mon, 16 Jun 2008 09:13:59 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1K8A3Z-0003u0-4q for bug-gnu-emacs@gnu.org; Mon, 16 Jun 2008 04:27:17 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1K8A3W-0003sn-Mi for bug-gnu-emacs@gnu.org; Mon, 16 Jun 2008 04:27:15 -0400 Original-Received: from [199.232.76.173] (port=39329 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K8A3V-0003sU-FJ for bug-gnu-emacs@gnu.org; Mon, 16 Jun 2008 04:27:13 -0400 Original-Received: from rzlab.ucr.edu ([138.23.92.77]:47461) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1K8A3U-0000vr-Ks for bug-gnu-emacs@gnu.org; Mon, 16 Jun 2008 04:27:13 -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 m5G8R8x5026694; Mon, 16 Jun 2008 01:27:09 -0700 Original-Received: (from debbugs@localhost) by rzlab.ucr.edu (8.13.8/8.13.8/Submit) id m5G8P5Dv025704; Mon, 16 Jun 2008 01:25:05 -0700 X-Loop: don@donarmstrong.com Resent-From: "pierre kobylanski" Resent-To: bug-submit-list@donarmstrong.com Resent-CC: Emacs Bugs Resent-Date: Mon, 16 Jun 2008 08:25:05 +0000 Resent-Message-ID: Resent-Sender: don@donarmstrong.com X-Emacs-PR-Message: report 424 X-Emacs-PR-Package: emacs X-Emacs-PR-Keywords: Original-Received: via spool by submit@emacsbugs.donarmstrong.com id=B.121360420924359 (code B ref -1); Mon, 16 Jun 2008 08:25:05 +0000 Original-Received: (at submit) by emacsbugs.donarmstrong.com; 16 Jun 2008 08:16:49 +0000 Original-Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id m5G8GeV7024353 for ; Mon, 16 Jun 2008 01:16:42 -0700 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1K89tI-0007Zc-7D for bug-gnu-emacs@gnu.org; Mon, 16 Jun 2008 04:16:40 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1K89tG-0007ZA-Dc for bug-gnu-emacs@gnu.org; Mon, 16 Jun 2008 04:16:39 -0400 Original-Received: from [199.232.76.173] (port=57751 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K89tG-0007Yy-7q for bug-gnu-emacs@gnu.org; Mon, 16 Jun 2008 04:16:38 -0400 Original-Received: from an-out-0708.google.com ([209.85.132.249]:7337) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1K89tF-0006ve-91 for bug-gnu-emacs@gnu.org; Mon, 16 Jun 2008 04:16:37 -0400 Original-Received: by an-out-0708.google.com with SMTP id c38so945941ana.84 for ; Mon, 16 Jun 2008 01:16:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:mime-version:content-type; bh=E3Ca0+cFW0Watl3gwJCIb1QfiwOYvB9ppktq6h9QR6k=; b=sGjVHKIhggxXrpvUiOa38tzrK5Eir1t/aIcTyV04Qd6o7mGLHQaOVgwbRjOY6pA93n HSU8hiRTD4Ii8ISSIJn/U38KdG16P16BLYNaaF/1uO3BSWEa31sDivIOGJ61uYWXa0Bo l/rIq4SVZAl2YtcD3yHZGWzPHx7xB0tGu3fdA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type; b=jW1cg/hp6jmaCPdQRuemOFkVQL/YEaUWyhCMKQrnzXt9WkcuCtgeAylU9MmfMlIVuq UTfc8j9VAWuYw6l9/tCv7Eext2Itubi3HO12vS8RcAE6hM/xlqkfIM/Uw36Bsqq3jBDK 2rMRACc4h7MM21EWvac9sBgDKcJsukGKdkyVo= Original-Received: by 10.100.152.15 with SMTP id z15mr7909883and.138.1213604179185; Mon, 16 Jun 2008 01:16:19 -0700 (PDT) Original-Received: by 10.100.228.14 with HTTP; Mon, 16 Jun 2008 01:16:19 -0700 (PDT) X-detected-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 2) X-detected-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 3) Resent-Date: Mon, 16 Jun 2008 04:27:14 -0400 X-Mailman-Approved-At: Mon, 16 Jun 2008 09:13:52 -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:18421 Archived-At: ------=_Part_21892_2686342.1213604179166 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi guys, I'd like to propose a new feature for emacs: the capability to easily re-open previously killed buffers. Maybe someone else would appreciate it. It proposes three user functions: * killed-buffers-mode Activate/Deactivate remembering killed buffers. To avoid tricky cases, only buffer associated with an existing file are taken into account. * restore-last-killed-buffer Restore previously killed buffer. The number of killed buffers to remember is configurable. Ex: (global-set-key [(meta f8 )] 'restore-last-killed-buffer) * mouse-killed-buffers-menu Display a menu with last killed buffers. A variable controls the number of item displayed, to ensure a reasonable size of the popup menu. This function respects the `mouse-wheel-follow-mouse' setting. I attached a screen-shot of such a menu. Ex: (global-set-key [C-S-down-mouse-4] 'mouse-killed-buffers-menu) Compatibilities / Dependencies : * require emacs 22.1 or above. Indeed, I make use of the `push' macro and the `find-file-hook' variables (that obsoletes `find-file-hooks' since v22.1). * require file-marker.el This is a second file, that defines the file-marker structure. Basically, it looks like a marker: it handles a filename and a point. But I can't use markers as they end with buffer death. Maybe you'll be interested in integrating this in next emacs version. But before that, my code has some bugs to correct: - copyright - autoload - maybe find default keystrokes (that follow emacs spirit). - in text-mode, what about `mouse-killed-buffers-menu' and graphical stuff ? - when killed-buffer-mode is off, the list of killed buffers is not updated, so that we can have a buffer opened that still appear in the killed buffers list. Bug or functionality ? Of course, you have my email for any questions/demands. Thanks for your involvement and time, Pierre ------=_Part_21892_2686342.1213604179166 Content-Type: application/octet-stream; name=killed-buffers.el Content-Transfer-Encoding: base64 X-Attachment-Id: f_fhisfv8y0 Content-Disposition: attachment; filename=killed-buffers.el Ozs7IGtpbGxlZC1idWZmZXJzLmVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBp ZXJyZSBLb2J5bGFuc2tpCjs7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2MS4wLjAgMjAwOC0wNi0xNgoKCjs7IERFU0NSSVBUSU9OCjs7ID09PT09 PT09PT09Cjs7Cjs7ICAgIFJlbWVtYmVyIGxhc3Qga2lsbGVkIGJ1ZmZlcnMKOzsgICAgKG9ubHkg dGhvc2UgYXNzb2NpYXRlZCB3aXRoIGFuIGV4aXN0aW5nIGZpbGUpLgo7Owo7Owo7OyBERVBFTkRF TkNJRVMKOzsgPT09PT09PT09PT09Cjs7Cjs7ICAgICogZW1hY3MgMjIuMSBvciBhYm92ZQo7OyAg ICAgICAgID49IDIyICA6IHB1c2gKOzsgICAgICAgICA+PSAyMi4xOiBmaW5kLWZpbGUtaG9vawo7 Owo7OyAgICAqIGZpbGUtbWFya2VyLmVsCjs7Cjs7Cjs7IENPTkZJR1VSQVRJT04KOzsgPT09PT09 PT09PT09PQo7OyAgICBwdXQgaW4geW91ciAuZW1hY3MKOzsKOzsgICAgOzsgbWFrZSBlbWFjcyBi ZSBhYmxlIHRvIGZpbmQga2lsbGVkLWJ1ZmZlcnMuZWwKOzsgICAgOzsgIChsZXQncyBhc3N1bWUg dGhhdCBkaXJlY3JvcnkgL2hvbWUvbWUvZW1hY3MuYXV4Lwo7OyAgICA7OyAgIGNvbnRhaW5zIGJv dGggZmlsZXMga2lsbGVkLWJ1ZmZlcnMuZWwgYW5kIGZpbGUtbWFya2VyLmVsKQo7OyAgICAocHVz aCAiL2hvbWUvbWUvZW1hY3MuYXV4IiBsb2FkLXBhdGgpCjs7Cjs7ICAgIDs7IGtpbGxlZC1idWZm ZXJzOiByZW1lbWJlciBsYXN0IGtpbGxlZCBidWZmZXJzCjs7ICAgIChyZXF1aXJlICdraWxsZWQt YnVmZmVycyBuaWwgdCkgOyBkbyBub3QgZmFpbCBvbiBlcnJvcgo7Owo7OyAgICA7OyBzZXQgdXAg a2V5L21vdXNlIGJpbmRpbmdzCjs7ICAgICh3aGVuIChmZWF0dXJlcCAna2lsbGVkLWJ1ZmZlcnMp Cjs7ICAgICAgKGdsb2JhbC1zZXQta2V5IFsobWV0YSBmOCldICAgICAgICAncmVzdG9yZS1sYXN0 LWtpbGxlZC1idWZmZXIpCjs7ICAgICAgKGdsb2JhbC1zZXQta2V5IFtDLVMtZG93bi1tb3VzZS00 XSAnbW91c2Uta2lsbGVkLWJ1ZmZlcnMtbWVudSkKOzsgICAgKQo7Owo7Owo7OyBDVVNUT01JWkFU SU9OCjs7ID09PT09PT09PT09PT0KOzsKOzsgICAgTS14IGN1c3RvbWl6ZS1ncm91cCA8UkVUPiBr aWxsZWQtYnVmZmVycwoKCihyZXF1aXJlICdmaWxlLW1hcmtlcikKCgogICAgICAgICAgICAgICAg ICAgICAgICA7Ky0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAgICAgO3wg IHVzZXIgZnVuY3Rpb25zICB8CiAgICAgICAgICAgICAgICAgICAgICAgIDsrLS0tLS0tLS0tLS0t LS0tLS0tKwoKKGRlZmFsaWFzICdyZXN0b3JlLWxhc3Qta2lsbGVkLWJ1ZmZlciAna2ItcmVzdG9y ZS1raWxsZWQtYnVmZmVyKQooZGVmYWxpYXMgJ21vdXNlLWtpbGxlZC1idWZmZXJzLW1lbnUgICdr Yi1tb3VzZS1raWxsZWQtYnVmZmVycy1tZW51KQooZGVmYWxpYXMgJ2tpbGxlZC1idWZmZXJzLW1v ZGUgICAgICAgICdrYi1raWxsZWQtYnVmZmVycy1tb2RlKQoKCgogICAgICAgICAgICAgICAgICAg ICAgICA7Ky0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICAgICAgICAgICAgICAgICAgICAgIDt8ICAg Z3JvdXAgb3B0aW9ucyAgIHwKICAgICAgICAgICAgICAgICAgICAgICAgO3wgIChmb3IgY3VzdG9t aXplKSAgfAogICAgICAgICAgICAgICAgICAgICAgICA7Ky0tLS0tLS0tLS0tLS0tLS0tLS0rCgoK KGRlZmdyb3VwIGtpbGxlZC1idWZmZXJzIG5pbAogICJSZW1lbWJlciBraWxsZWQgYnVmZmVycy4i CiAgOmdyb3VwICdjb252ZW5pZW5jZQogOzpwcmVmaXggImtiLSIKICA6dmVyc2lvbiAiMjIuMS4x IikKCgo7OyBTdXBwb3J0aW5nIHVubGltaXRlZCB1bmRvIGZvciBraWxsZWQgYnVmZmVycyBpcyBu b25zZW5zZS4KKGRlZmN1c3RvbSBrYi1tYXgtdmlzaWJsZS11bmRvIDEwCiAgIlRoZSBtYXhpbXVt IG51bWJlciBvZiBraWxsZWQgYnVmZmVycyB0byBkaXNwbGF5IGluIHRoZSBtb3VzZSBtZW51LgoK MCA8PSBga2ItbWF4LXZpc2libGUtdW5kbycgICgwIG1lYW5zIHplcm8pLgoKSWYgYGtiLW1heC12 aXNpYmxlLXVuZG8nID49IGBrYi1tYXgtbWVtb3JpemVkLXVuZG8nLCBhbGwga2lsbGVkCmJ1ZmZl cnMgd2lsbCBhcHBlYXIgaW4gdGhlIG1lbnUuIEluIHRoZSBvdGhlciBjYXNlLCBpZiB0aGUgbnVt YmVyCm9mIGtpbGxlZCBidWZmZXIgaXMgaGlnaGVyIHRoYW4gYGtiLW1heC12aXNpYmxlLXVuZG8n LCBvbmx5IHRoZQpsYXN0IGtpbGxlZCBidWZmZXJzIHdpbGwgYmUgc2hvd24uIgogIDp0eXBlICdp bnRlZ2VyCiAgOnNldCAobGFtYmRhIChzeW1ib2wgdmFsdWUpICh3aGVuICg+PSB2YWx1ZSAwKSAo c2V0IHN5bWJvbCB2YWx1ZSkpKQogIDpyZXF1aXJlICdraWxsZWQtYnVmZmVycwogIDpncm91cCAn a2lsbGVkLWJ1ZmZlcnMpCgoKKGRlZmN1c3RvbSBrYi1tYXgtbWVtb3JpemVkLXVuZG8gMjUKICAi VGhlIG51bWJlciBvZiBzdXBwb3J0ZWQgdW5kby4KCjAgPD0gYGtiLW1heC1tZW1vcml6ZWQtdW5k bycgICgwIG1lYW5zIHplcm8pLiIKICA6dHlwZSAnaW50ZWdlcgogIDpzZXQgKGxhbWJkYSAoc3lt Ym9sIHZhbHVlKSAod2hlbiAoPj0gdmFsdWUgMCkgKHNldCBzeW1ib2wgdmFsdWUpKSkKICA6cmVx dWlyZSAna2lsbGVkLWJ1ZmZlcnMKICA6Z3JvdXAgJ2tpbGxlZC1idWZmZXJzKQoKCihkZWZjdXN0 b20ga2ItcmVzdG9yZS1wb2ludCB0CiAgIldoZW4gdCwgYWxzbyByZXN0b3JlIHRoZSBjdXJzb3Ig cG9zaXRpb24uIgogIDp0eXBlICdib29sZWFuCiAgOnJlcXVpcmUgJ2tpbGxlZC1idWZmZXJzCiAg Omdyb3VwICdraWxsZWQtYnVmZmVycykKCgoKICAgICAgICAgICAgICAgICAgICAgIDsrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAgIDt8ICBpbnRlcm5hbCB2YXJp YWJsZXMgIHwKICAgICAgICAgICAgICAgICAgICAgIDsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK CgooZGVmdmFyIGtiLWtpbGxlZC1idWZmZXJzLWxpc3QgbmlsCiAgIlRoZSBsaXN0IG9mIGtpbGxl ZCBidWZmZXJzLiBFYWNoIGVsZW1lbnQgaXMgYSBmaWxlLW1hcmtlci4KClNlZSBmdW5jdGlvbiBg ZmlsZS1tYXJrZXInLiIpCgoKCiAgICAgICAgICAgICAgICAgICAgICA7Ky0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgO3wgIGtpbGxlZC1idWZmZXJzIG1vZGUg IHwKICAgICAgICAgICAgICAgICAgICAgIDsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgooZGVm dmFyIGtiLWtpbGxlZC1idWZmZXJzLW1vZGUtb24gdAogICJraWxsZWQtYnVmZmVycyBtb2RlIGFj dGl2YXRpb24gc3RhdGUuIikKCihkZWZ1biBrYi1raWxsZWQtYnVmZmVycy1tb2RlICgpCiAgIkFj dGl2YXRlL0RlYWN0aXZhdGUga2lsbGVkLWJ1ZmZlcnMgbW9kZS4iCiAgKGludGVyYWN0aXZlKQog IChzZXRxIGtiLWtpbGxlZC1idWZmZXJzLW1vZGUtb24gKG5vdCBrYi1raWxsZWQtYnVmZmVycy1t b2RlLW9uKSkKICAobWVzc2FnZSAia2lsbGVkLWJ1ZmZlcnMtbW9kZSBtb2RlIGlzIG5vdyAlcy4i CiAgICAgICAgICAgKGlmIGtiLWtpbGxlZC1idWZmZXJzLW1vZGUtb24gIm9uIiAib2ZmIikpKQoK CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOystLS0tLS0tLS0rCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgO3wgIGhvb2tzICB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OystLS0tLS0tLS0rCgooZGVmdW4ga2ItZmluZC1maWxlLWhvb2sgKCkKICAiV2hlbiBvcGVuaW5n IGEgZmlsZSwgcmVtb3ZlIGl0IGZyb20gdGhlIGBrYi1raWxsZWQtYnVmZmVycy1saXN0Jy4iCiAg KHdoZW4ga2Ita2lsbGVkLWJ1ZmZlcnMtbW9kZS1vbgogICAgKGtiLXJlbW92ZS1idWZmZXItZnJv bS1raWxsZWQtbGlzdCBidWZmZXItZmlsZS1uYW1lKSkpCgooZGVmdW4ga2Ita2lsbC1idWZmZXIt aG9vayAoKQogICJXaGVuIGtpbGxpbmcgYSBidWZmZXIsIHNhdmUgaXQgaW50byB0aGUgYGtiLWtp bGxlZC1idWZmZXJzLWxpc3QnLiIKICAod2hlbiBrYi1raWxsZWQtYnVmZmVycy1tb2RlLW9uCiAg ICAoa2ItYWRkLWJ1ZmZlci10by1raWxsZWQtbGlzdCAoY3VycmVudC1idWZmZXIpKSkpCgoKKGFk ZC1ob29rICdmaW5kLWZpbGUtaG9vayAgICdrYi1maW5kLWZpbGUtaG9vaykKKGFkZC1ob29rICdr aWxsLWJ1ZmZlci1ob29rICdrYi1raWxsLWJ1ZmZlci1ob29rKQoKCgogICAgICAgICAgICAgICAg ICAgIDsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgIDt8 ICBmaW5kaW5nIGEga2lsbGVkIGJ1ZmZlciAgfAogICAgICAgICAgICAgICAgICAgIDsrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwoKCihkZWZ1biBrYi1maW5kLWtpbGxlZC1idWZmZXItaW5k ZXggKGtpbGxlZC1idWZmZXIpCiAgIkZpbmQgdGhlIGluZGV4IG9mIGEga2lsbGVkIGJ1ZmZlciBp biBga2Ita2lsbGVkLWJ1ZmZlcnMtbGlzdCcuCgpJZiBuaWwgb3Igbm90IGZvdW5kLCByZXR1cm4g bmlsLgoKUG9zc2libGUgdmFsdWUvdHlwZSBmb3IgS0lMTEVELUJVRkZFUiBhcmU6CiAgICAgbmls ICAgICAgICAgICAgIC0tPiAgbm90IHNldCAoaW4gdGhpcyBjYXNlLCByZXR1cm4gbmlsKQogICAg YHN0cmluZ3AnICAgICAgICAtLT4gIHRoZSBraWxsZWQgYnVmZmVyIG5hbWUKICAgIGBidWZmZXJw JyAgICAgICAgLS0+ICBhbiBleGlzdGluZyBidWZmZXIKICAgIGBmaWxlLW1hcmtlci1wJyAgLS0+ ICBhIGtpbGxlZCBidWZmZXIKICAgICA8b3RoZXI+ICAgICAgICAgLS0+ICBzaWduYWwgYW4gZXJy b3IiCiAgKGxldCAoKGtpbGxlZC1idWZmZXItZmlsZW5hbWUKICAgICAgICAgKGNvbmQgKChudWxs ICAgIGtpbGxlZC1idWZmZXIpICBuaWwpCiAgICAgICAgICgoZmlsZS1tYXJrZXItcCBraWxsZWQt YnVmZmVyKSAoZmlsZS1tYXJrZXItZmlsZW5hbWUga2lsbGVkLWJ1ZmZlcikpCiAgICAgICAgICAg ICAgICgoYnVmZmVycCBraWxsZWQtYnVmZmVyKSAoa2ItYXV4LWJ1ZmZlci1maWxlbmFtZS1vci1u YW1lIGtpbGxlZC1idWZmZXIpKQogICAgICAgICAgICAgICAoKHN0cmluZ3Aga2lsbGVkLWJ1ZmZl cikgIGtpbGxlZC1idWZmZXIpCiAgICAgICAgICAgICAgICggdCAoZXJyb3IgIlxuXG5FcnJvciBp biBraWxsZWQtYnVmZmVyLmVsOiAoa2ItZmluZC1raWxsZWQtYnVmZmVyLWluZGV4IGtpbGxlZC1i dWZmZXIpXG4gIEtJTExFRC1CVUZGRVIgdHlwZSBpcyBcIiVzXCIsXG4gIGJ1dCBhY2NlcHRhYmxl IHZhbHVlL3R5cGVzIGFyZTogbmlsLCBzdHJpbmcsIGJ1ZmZlciwgYW5kIGZpbGUtbWFya2VyXG4i IChwcmluMS10by1zdHJpbmcgKHR5cGUtb2Yga2lsbGVkLWJ1ZmZlcikpKSkpKSkKCiAgICAoa2It YXV4LWxpc3QtaW5kZXgtZmluZAogICAgIChsYW1iZGEgKGtpbGxlZC1idWZmZXIpCiAgICAgICAo c3RyaW5nLWVxdWFsIGtpbGxlZC1idWZmZXItZmlsZW5hbWUKICAgICAgICAgICAgICAgICAgICAg KGZpbGUtbWFya2VyLWZpbGVuYW1lIGtpbGxlZC1idWZmZXIpKSkKICAgICBrYi1raWxsZWQtYnVm ZmVycy1saXN0KSkpCgoKCiAgICAgICAgICAgICAgICAgICAgOystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICA7fCAgYWRkaW5nIGEga2lsbGVkLWJ1ZmZlciAg fAogICAgICAgICAgICAgICAgICAgIDsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgoKCihk ZWZ1biBrYi1pcy1idWZmZXItZWxpZ2libGUtZm9yLWtpbGxlZC1saXN0IChidWZmZXIpCiAgIlJl dHVybiB0IGlmIEJVRkZFUiBpcyBlbGlnaWJsZSB0byBiZSBwdXQgaW4gYGtiLWtpbGxlZC1idWZm ZXJzLWxpc3QnLgoKQlVGRkVSIGlzIGVsaWdpYmxlIGlmIGl0IHZlcmlmaWVzIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoKIC0gQlVGRkVSIGlzIGFuIGV4aXN0aW5nIGJ1ZmZlcgogLSBCVUZGRVIg aXMgYXNzb2NpYXRlZCB3aXRoIGFuIGV4aXN0aW5nIGZpbGUiCiAgKGFuZCAgYnVmZmVyCiAgICAg ICAgKGJ1ZmZlcnAgYnVmZmVyKQogICAgICAgIChsZXQgKChiZm4gKGJ1ZmZlci1maWxlLW5hbWUg YnVmZmVyKSkpCiAgICAgICAgICAoaWYgYmZuIChmaWxlLWV4aXN0cy1wIGJmbikgbmlsKSkpKQoK CgooZGVmdW4ga2ItYWRkLWJ1ZmZlci10by1raWxsZWQtbGlzdCAoYnVmZmVyKQogICJJZiBCVUZG RVIgaXMgZWxpZ2libGUsIHNhdmUgaXQgaW50byB0aGUgYGtiLWtpbGxlZC1idWZmZXJzLWxpc3Qn LiIKICAod2hlbiAoYW5kIDsgQlVGRkVSIGlzIGVsaWdpYmxlIGFuZCBub3QgYWxyZWFkeSBpbiBr Yi1raWxsZWQtYnVmZmVycy1saXN0CiAgICAgICAgIChrYi1pcy1idWZmZXItZWxpZ2libGUtZm9y LWtpbGxlZC1saXN0IGJ1ZmZlcikKICAgICAgICAgKG5vdCAoa2ItZmluZC1raWxsZWQtYnVmZmVy LWluZGV4IGJ1ZmZlcikpKQogICAgKGxldCAoKGZuIChrYi1hdXgtYnVmZmVyLWZpbGVuYW1lLW9y LW5hbWUgYnVmZmVyKSkKICAgICAgICAgIChwdCAoc2F2ZS1leGN1cnNpb24gKHNldC1idWZmZXIg YnVmZmVyKSAocG9pbnQpKSkpCiAgICAgIDs7IGRvbid0IGxldCB0aGUgbGlzdCBncm93IGluZGVm aW5pdGVseQogICAgICAoa2ItYXV4LWxpc3QtbnRydW5jLWlucGxhY2UKICAgICAgICgxLSBrYi1t YXgtbWVtb3JpemVkLXVuZG8pIGtiLWtpbGxlZC1idWZmZXJzLWxpc3QpCiAgICAgIDs7IHB1dCB0 aGUga2lsbGVkIGJ1ZmZlciBpbnRvIHRoZSBsaXN0CiAgICAgIChwdXNoIChmaWxlLW1hcmtlciBm biBwdCkga2Ita2lsbGVkLWJ1ZmZlcnMtbGlzdCkpKSkKCgoKICAgICAgICAgICAgICAgICAgIDsr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgIDt8ICByZW1v dmluZyBhIGtpbGxlZC1idWZmZXIgIHwKICAgICAgICAgICAgICAgICAgIDsrLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsKCgooZGVmdW4ga2ItcmVtb3ZlLWJ1ZmZlci1mcm9tLWtpbGxlZC1s aXN0IChraWxsZWQtYnVmZmVyKQogICJSZW1vdmUgYSBraWxsZWQgYnVmZmVyIGZyb20gYGtiLWtp bGxlZC1idWZmZXJzLWxpc3QnLAphbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUtbWFy a2VyLgoKU2VlIGBrYi1maW5kLWtpbGxlZC1idWZmZXItaW5kZXgnIGZvciBhY2NlcHRlZCB2YWx1 ZXMgb2YgS0lMTEVELUJVRkZFUi4iCiAgKGxldCAoKG4gKGtiLWZpbmQta2lsbGVkLWJ1ZmZlci1p bmRleCBraWxsZWQtYnVmZmVyKSkpCiAgICAod2hlbiBuIChwcm9nMQogICAgICAgICAgICAgICAg KG50aCBuIGtiLWtpbGxlZC1idWZmZXJzLWxpc3QpCiAgICAgICAgICAgICAgKHNldHEga2Ita2ls bGVkLWJ1ZmZlcnMtbGlzdAogICAgICAgICAgICAgICAgICAgIChrYi1hdXgtbGlzdC1udGgtcmVt b3ZlIG4ga2Ita2lsbGVkLWJ1ZmZlcnMtbGlzdCkpKSkpKQoKCgogICAgICAgICAgICAgICAgICAg OystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICAgICAgICAgICAgIDt8ICBy ZXN0b3JpbmcgYSBraWxsZWQtYnVmZmVyICB8CiAgICAgICAgICAgICAgICAgICA7Ky0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwoKCihkZWZ1biBrYi1yZXN0b3JlLWtpbGxlZC1idWZmZXIg KCZvcHRpb25hbCBraWxsZWQtYnVmZmVyKQogICJSZXN0b3JlIGEga2lsbGVkIGJ1ZmZlci4KCklm IEtJTExFRC1CVUZGRVIgaXMgbmlsLCByZXN0b3JlIHRoZSBsYXN0IGtpbGxlZCBvbmUuIgogIChp bnRlcmFjdGl2ZSkKCiAgOzsgcmVzdG9yZSBsYXN0IG9uZSBpZiBraWxsZWQtYnVmZmVyIG5vdCBz cGVjaWZpZWQKICAod2hlbiAobnVsbCBraWxsZWQtYnVmZmVyKQogICAgKGlmIGtiLWtpbGxlZC1i dWZmZXJzLWxpc3QKICAgICAgICAoc2V0cSBraWxsZWQtYnVmZmVyIChudGggMCBrYi1raWxsZWQt YnVmZmVycy1saXN0KSkKICAgICAgKG1lc3NhZ2UgIiVzIiAibm8ga2lsbGVkIGJ1ZmZlcnMiKSkp CgogICh3aGVuIGtpbGxlZC1idWZmZXIKICAgIChsZXQgKChidWYtZmlsZW5hbWUgKGZpbGUtbWFy a2VyLWZpbGVuYW1lIGtpbGxlZC1idWZmZXIpKQogICAgICAgICAgKGJ1Zi1wb2ludCAgICAoZmls ZS1tYXJrZXItcG9pbnQgICAga2lsbGVkLWJ1ZmZlcikpKQogICAgICAoZmluZC1maWxlIGJ1Zi1m aWxlbmFtZSkKICAgICAgKGtiLXJlbW92ZS1idWZmZXItZnJvbS1raWxsZWQtbGlzdCBidWYtZmls ZW5hbWUpCiAgICAgICh3aGVuIChhbmQgYnVmLXBvaW50IGtiLXJlc3RvcmUtcG9pbnQpIChnb3Rv LWNoYXIgYnVmLXBvaW50KSkpKSkKCgoKICAgICAgICAgICAgICAgICAgICAgICAgICA7Ky0tLS0t LS0tLS0tLS0tKwogICAgICAgICAgICAgICAgICAgICAgICAgIDt8ICBtb3VzZSBtZW51ICB8CiAg ICAgICAgICAgICAgICAgICAgICAgICAgOystLS0tLS0tLS0tLS0tLSsKCgooZGVmdW4ga2ItbW91 c2Uta2lsbGVkLWJ1ZmZlcnMtbWVudSAoZXZlbnQpCiAgIkRpc3BsYXkgYSBwb3B1cCBtZW51IHdp dGggbGFzdCBraWxsZWQgYnVmZmVycy4gUmUtb3BlbiB0aGUgc2VsZWN0ZWQgb25lLiIKICAoaW50 ZXJhY3RpdmUgImUiKQogIChpZiBrYi1raWxsZWQtYnVmZmVycy1saXN0CiAgICAgKHByb2duCiAg ICAgICAobW91c2UtbWluaWJ1ZmZlci1jaGVjayBldmVudCkKICAgICAgIChsZXQqICgoYnVmLW5h bWUtbWF4LWxlbiAwKQogICAgICAgICAgICAgIChuYW1lcyAobWFwY2FyIChsYW1iZGEgKGJ1ZikK ICAgICAgICAgICAgICAgKGxldCogKChidWYtZmlsZW5hbWUgKGZpbGUtbWFya2VyLWZpbGVuYW1l IGJ1ZikpCiAgICAgICAgICAgICAgICAgICAgICAoYnVmLW5hbWUgICAgIChmaWxlLW5hbWUtbm9u ZGlyZWN0b3J5IGJ1Zi1maWxlbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgICAoYnVmLWRpciAg ICAgIChmaWxlLW5hbWUtZGlyZWN0b3J5IGJ1Zi1maWxlbmFtZSkpKQogICAgICAgICAgICAgICAg IChsZXQgKChob21lLWRpciAoZ2V0ZW52LWludGVybmFsICJIT01FIikpKQogICAgICAgICAgICAg ICAgICAgKGlmIChzdHJpbmctbWF0Y2ggKGNvbmNhdCAiXlxcKCIgaG9tZS1kaXIgIlxcKS8iKSBi dWYtZGlyKQogICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGJ1Zi1kaXIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoY29uY2F0ICJ+IiAoc3Vic3RyaW5nIGJ1Zi1kaXIgKG1hdGNoLWVu ZCAxKSkpKSkpCiAgICAgICAgICAgICAgICAoc2V0cSBidWYtbmFtZS1tYXgtbGVuIChtYXggYnVm LW5hbWUtbWF4LWxlbiAobGVuZ3RoIGJ1Zi1uYW1lKSkpCiAgICAgICAgICAgICAgICBgKCxidWYt bmFtZSAsYnVmLWRpciAsYnVmLWZpbGVuYW1lKSkpCiAgICAgICAgICAgICAgICBrYi1raWxsZWQt YnVmZmVycy1saXN0KSkKICAgICAgICAgICAgICAoYnVmLW5hbWUtbWF4LWxlbiAobWluIDI1IGJ1 Zi1uYW1lLW1heC1sZW4pKQogICAgICAgICAgICAgIChidWYtZGlyLW1heC1sZW4gIDM1KQogICAg ICAgICAgICAgIChzdHJzIChtYXBjYXIgKGxhbWJkYSAoeCkKICAgICAgICAgICAgICAgKGxldCog KChidWYtbmFtZSAgICAgKGNhciAgeCkpCiAgICAgICAgICAgICAgICAgICAgICAoYnVmLWRpciAg ICAgIChjYWRyIHgpKQogICAgICAgICAgICAgICAgICAgICAgKGJ1Zi1uYW1lLWxlbiAobGVuZ3Ro IGJ1Zi1uYW1lKSkpCiAgICAgICAgICAgICAgICAgKGlmICg+IGJ1Zi1uYW1lLWxlbiBidWYtbmFt ZS1tYXgtbGVuKQogICAgICAgICAgICAgICAgICAgICAoa2ItYXV4LXN0cmluZy1zZWUtZW5kIChj YXIgKGNkZHIgeCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsg YnVmLW5hbWUtbWF4LWxlbiAzIGJ1Zi1kaXItbWF4LWxlbikpCiAgICAgICAgICAgICAgICAgICAo Y29uY2F0CiAgICAgICAgICAgICAgICAgICAgYnVmLW5hbWUKICAgICAgICAgICAgICAgICAgICAo bWFrZS1zdHJpbmcgKC0gYnVmLW5hbWUtbWF4LWxlbiBidWYtbmFtZS1sZW4pID8gKQogICAgICAg ICAgICAgICAgICAgICIgICAiCiAgICAgICAgICAgICAgICAgICAgKGtiLWF1eC1zdHJpbmctc2Vl LWVuZCBidWYtZGlyIGJ1Zi1kaXItbWF4LWxlbikpKSkpIG5hbWVzKSkKICAgICAgICAgICAgICAo c3RycyAoa2ItYXV4LWxpc3QtbnRydW5jLWlucGxhY2Uga2ItbWF4LXZpc2libGUtdW5kbyBzdHJz KSkKICAgICAgICAgICAgICAobWVudSAoa2ItYXV4LXNpbXBsZS0xbGV2ZWwteC1wb3B1cC1tZW51 ICJraWxsZWQgYnVmZmVycyIgc3RycykpKQogICAgICAgICAobGV0ICgobiAoeC1wb3B1cC1tZW51 IGV2ZW50IG1lbnUpKSkKICAgICAgICAgICAod2hlbiBuCiAgICAgICAgICAgICAod2l0aC1zZWxl Y3RlZC13aW5kb3cgOyByZXNwZWN0IG1vdXNlLXdoZWVsLWZvbGxvdy1tb3VzZSBzZXR0aW5ncwog ICAgICAgICAgICAgICAgIChpZiAoYW5kIChib3VuZHAgJ21vdXNlLXdoZWVsLWZvbGxvdy1tb3Vz ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICBtb3VzZS13aGVlbC1mb2xsb3ctbW91c2UpCiAg ICAgICAgICAgICAgICAgICAgIChtd2hlZWwtZXZlbnQtd2luZG93IGV2ZW50KSAoc2VsZWN0ZWQt d2luZG93KSkKICAgICAgICAgICAgICAgKGtiLXJlc3RvcmUta2lsbGVkLWJ1ZmZlciAobnRoIG4g a2Ita2lsbGVkLWJ1ZmZlcnMtbGlzdCkpKSkpKSkKICAgIChtZXNzYWdlICIlcyIgIm5vIGtpbGxl ZCBidWZmZXJzIikpKQoKCgogICAgICAgICAgICAgICAgICAgICAgOystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSsKICAgICAgICAgICAgICAgICAgICAgIDt8ICBhdXhpbGlhcnkgZnVuY3Rpb25zICB8 CiAgICAgICAgICAgICAgICAgICAgICA7Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwoKCihkZWZ1 biBrYi1hdXgtc3RyaW5nLXNlZS1lbmQgKHN0ciAmb3B0aW9uYWwgbWF4bGVuKQogICJga2lsbGVk LWJ1ZmZlcnMtbW9kZScgYXV4aWxsYXJ5IGZ1bmN0aW9uLgoKQ3V0IHRoZSBiZWdpbm5pbmcgb2Yg dGhlIHN0cmluZyBTVFIgaWYgdG9vIGxvbmcuCklmIE1BWExFTiBpcyBuaWwsIHVzZSB0aGUgY3Vy cmVudCBmcmFtZSB3aWR0aC4iCiAgKGxldCAoKG1heGxlbiAoY29uZCAoKG9yIChudWxsIG1heGxl bikgKDwgbWF4bGVuIDApKSAoZnJhbWUtd2lkdGgpKQogICAgICAgICAgICAgICAgICAgICAgKCB0 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuKSkpCiAgICAgICAgKGxlbiAobGVu Z3RoIHN0cikpKQogICAgKGlmIChhbmQgKD4gbGVuIG1heGxlbikgKD4gbWF4bGVuIDMpKQogICAg ICAgIChjb25jYXQgIi4uLiIgKHN1YnN0cmluZyBzdHIgKC0gbGVuIG1heGxlbiAtMykpKQogICAg ICBzdHIpKSkKCgooZGVmdW4ga2ItYXV4LWxpc3QtaW5kZXgtZmluZCAocCBsKQogICJga2lsbGVk LWJ1ZmZlcnMtbW9kZScgYXV4aWxpYXJ5IGZ1bmN0aW9uLgoKRmluZCB0aGUgaW5kZXggb2YgdGhl IGZpcnN0IGVsZW1lbnQgb2YgbGlzdCBMIHRoYXQgc2F0aXNmaWVzIHByZWRpY2F0ZSBQLiIKICAo bGV0ICgobGVuIChsZW5ndGggbCkpIChpIDApIChsbCBsKSkKICAgICh3aGlsZSAoYW5kICg8IGkg bGVuKSAobm90IChmdW5jYWxsIHAgKHBvcCBsbCkpKSkgKHNldHEgaSAoMSsgaSkpKQogICAgKGlm ICg8IGkgbGVuKSBpIG5pbCkpKQoKCihkZWZ1biBrYi1hdXgtbGlzdC1udHJ1bmMtaW5wbGFjZSAo biBsKQogICJga2lsbGVkLWJ1ZmZlcnMtbW9kZScgYXV4aWxpYXJ5IGZ1bmN0aW9uLgoKVHJ1bmMg bGlzdCBMIHRvIGF0IG1vc3QgTiBlbGVtZW50cyAobW9kaWZ5IHRoZSBsaXN0KS4iCiAgKGxldCAo KGxlbiAobGVuZ3RoIGwpKSkKICAgIChpZiAoYW5kICg+IG4gMCkgKDwgbiBsZW4pKSAoc2V0Y2Ry IChudGhjZHIgKDEtIG4pIGwpIG5pbCkpKQogIGwpCgoKKGRlZnVuIGtiLWF1eC1saXN0LW50aC1y ZW1vdmUgKG4gbCkKICAiYGtpbGxlZC1idWZmZXJzLW1vZGUnIGF1eGlsaWFyeSBmdW5jdGlvbi4K ClJlbW92ZSB0aGUgTnRoIGVsZW1lbnQgb2YgbGlzdCBMIChkbyAqbm90KiBtb2RpZnkgdGhlIGxp c3QpLiIKICAobGV0ICgobGVuIChsZW5ndGggbCkpKQogICAgKGFwcGVuZCAoYnV0bGFzdCBsICgt IGxlbiBuKSkgKGxhc3QgbCAoLSBsZW4gKDErIG4pKSkpKSkKCgooZGVmdW4ga2ItYXV4LWlzLXNw ZWNpYWwtYnVmZmVyIChidWZmZXIpCiAgIlJldHVybiB0IGlmIGJ1ZmZlciBpcyBhIHNwZWNpYWwg YnVmZmVyLiIKICAoYW5kCiAgIChudWxsIChidWZmZXItZmlsZS1uYW1lIGJ1ZmZlcikpCiAgIChr Yi1hdXgtaXMtc3BlY2lhbC1idWZmZXItbmFtZSAoYnVmZmVyLW5hbWUgYnVmZmVyKSkpKQoKCihk ZWZ1biBrYi1hdXgtaXMtc3BlY2lhbC1idWZmZXItbmFtZSAoYnVmZmVyLW5hbWUpCiAgIlJldHVy biB0IGlmIGJ1ZmZlci1uYW1lIGlzIHN0YW5kYXJkIG5hbWUgZm9yIGEgc3BlY2lhbCBidWZmZXIu CgpTcGVjaWFsIGJ1ZmZlcnMgbmFtZXMgdXN1YWxseSBzdGFydCB3aXRoIGEgc3BhY2UgKCcgJykg b3IgYSBzdGFyICgnKicpLiIKICAobGV0ICgoYyAoZWx0IGJ1ZmZlci1uYW1lIDApKSkKICAgIChv ciAoPSBjIDMyKSAoPSBjIDQyKSkpKSA7IFNQQyBvciAnKicKCgooZGVmdW4ga2ItYXV4LWJ1ZmZl ci1maWxlbmFtZS1vci1uYW1lIChidWZmZXIpCiAgIlJldHVybiBidWZmZXItZmlsZS1uYW1lIGlm IG5vbiBuaWwsIGJ1ZmZlci1uYW1lIG90aGVyd2lzZS4iCiAgKGxldCAoKGJmbiAoYnVmZmVyLWZp bGUtbmFtZSBidWZmZXIpKSkKICAgIChpZiBiZm4gYmZuIChidWZmZXItbmFtZSBidWZmZXIpKSkp CgoKKGRlZnVuIGtiLWF1eC1zaW1wbGUtMWxldmVsLXgtcG9wdXAtbWVudSAodGl0bGUgbCkKICAi YGtpbGxlZC1idWZmZXJzLW1vZGUnIGF1eGlsaWFyeSBmdW5jdGlvbi4KCkNyZWF0ZSBhIG9uZSBs ZXZlbCBwb3B1cCBtZW51LCB0byB1c2UgaW4gY29uanVuY3Rpb24gd2l0aCBgeC1wb3B1cC1tZW51 Jy4KSXQgcmV0dXJucwogIC0gdGhlIHJhbmsgb2YgdGhlIGl0ZW0geW91J3ZlIHNlbGVjdGVkIChi ZWdpbm5pbmcgYXQgMCksCiAgLSBvciBuaWwgaWYgdGhlIG1lbnUgaXMgZW1wdHkgb3IgaWYgbm90 aGluZyBoYXMgYmVlbiBzZWxlY3RlZC4KClRJVExFOiBtZW51IHRpdGxlCkwgICAgOiBpdGVtcyBs aXN0IgogIChsZXQqICgobWVudSBuaWwpIChybCAocmV2ZXJzZSBsKSkgKGxlbiAobGVuZ3RoIHJs KSkgKGkgbGVuKSkKICAgICh3aGlsZSAoPj0gKHNldHEgaSAoMS0gaSkpIDApCiAgICAgIChzZXRx IG1lbnUgKGNvbnMgKGNvbnMgKHBvcCBybCkgaSkgbWVudSkpKQogICAgKHNldHEgbWVudSAoY29u cyAiZHVtbXkiIG1lbnUpKQogICAgKHNldHEgbWVudSAoY29ucyB0aXRsZSAobGlzdCBtZW51KSkp CiAgICBtZW51KSkKCgoKKHByb3ZpZGUgJ2tpbGxlZC1idWZmZXJzKQoKOzs7IGtpbGxlZC1idWZm ZXJzLmVsIGVuZHMgaGVyZQo= ------=_Part_21892_2686342.1213604179166 Content-Type: application/octet-stream; name=file-marker.el Content-Transfer-Encoding: base64 X-Attachment-Id: f_fhisg6fa1 Content-Disposition: attachment; filename=file-marker.el Ozs7IGZpbGUtbWFya2VyLmVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBp ZXJyZSBLb2J5bGFuc2tpCjs7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2MS4wLjAgMjAwOC0wNi0xNQoKOzsgREVTQ1JJUFRJT04KOzsgPT09PT09 PT09PT0KOzsKOzsgICAgQSBmaWxlLW1hcmtlciBpcyBhIGRhdGEgc3RydWN0dXJlIHRvIHJlbWVt YmVyCjs7ICAgIGEgZmlsZW5hbWUgYW5kIGEgcG9pbnQgKHRoZSBjdXJzb3IgcG9zaXRpb24gaW4K OzsgICAgdGhhdCBmaWxlKS4KOzsKOzsgICAgVW5saWtlIGEgbWFya2VyLCBpdCBzdXJ2aXZlcyB0 byBhIGJ1ZmZlciBkZWF0aC4KCgoKKGRlZnVuIGZpbGUtbWFya2VyLXAgKG9iaikKICAiUmV0dXJu IHQgaWYgT0JKIGlzIGEgZmlsZS1tYXJrZXIuIgogIChhbmQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDsgQSBmaWxlLW1hcmtlciBpcwogICAodmVjdG9ycCBvYmopICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDsgYSB2ZWN0b3IgYHYnCiAgICg9IDMgICAgKGxlbmd0aCBv YmopKSAgICAgICAgICAgICAgICAgICAgOyAgLSBvZiBsZW5ndGggMwogICAoZXEgJ2ZpbGUtbWFy a2VyIChlbHQgb2JqIDApKSAgICAgICAgICAgIDsgIC0gd2l0aCB2WzBdID0gJ2ZpbGUtbWFya2Vy CiAgIChsZXQgKChmbiAoZWx0IG9iaiAxKSkgKHB0IChlbHQgb2JqIDIpKSkgOyAgLSBhbmQgdlsx XSB0aGUgZmlsZW5hbWUsIGFuZCB2WzJdCiAgICAgKGFuZCAoc3RyaW5ncCBmbikgKG9yIChudWxs IHB0KSAoaW50ZWdlcnAgcHQpKSkpKSkgICAgOyB0aGUgY3Vyc29yIHBvc2l0aW9uCgoKCihkZWZ1 biBjaGVjay1maWxlLW1hcmtlci1wIChvYmopCiAgIlNpZ25hbCBhbiBlcnJvciBpZiBPQkogaXMg bm90IGEgZmlsZS1tYXJrZXIuIgogICh3aGVuIChub3QgKGZpbGUtbWFya2VyLXAgb2JqKSkKICAg IChlcnJvciAiTm90IGEgZmlsZS1tYXJrZXIgKGlzICVzKSIgKHByaW4xLXRvLXN0cmluZyAodHlw ZS1vZiBvYmopKSkpKQoKCgooZGVmdW4gZmlsZS1tYXJrZXIgKCZvcHRpb25hbCBvYmogcG9pbnQp CiAgIkNvbnN0cnVjdCBhIGZpbGUtbWFya2VyLgoKT0JKIGlzIGVpdGhlciBhIGJ1ZmZlciwgYSBt YXJrZXIsIGEgc3RyaW5nLCBvciBuaWwgKG1lYW5zIGN1cnJlbnQgYnVmZmVyKS4KICBJdCBpcyB0 aGVuIHRyYW5zZm9ybWVkIGludG8gYSBzdHJpbmcuCgpQT0lOVCBpcyBhbiBpbnRlZ2VyIG9yIG5p bC4iCiAgKGxldCogKAogICAgICAgICAoYnVmZmVyIChjb25kCiAgICAgICAgICAgKChidWZmZXJw IG9iaikgIG9iaikKICAgICAgICAgICAoKG1hcmtlcnAgb2JqKSAgKGxldCAoKGJ1ZiAobWFya2Vy LWJ1ZmZlciBvYmopKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBidWYgYnVmCiAg ICAgICAgICAgICAgICAgICAgICAgIChlcnJvciAiTWFya2VyIGRvZXNuJ3QgcmVmZXIgdG8gYW4g ZXhpc3RpbmcgYnVmZmVyIikpICkpCiAgICAgICAgICAgKChzdHJpbmdwIG9iaikgIG5pbCkgOyB2 ZXJ5IHNwZWNpYWwgdmFsdWUKICAgICAgICAgICAoKG51bGwgICAgb2JqKSAgKGN1cnJlbnQtYnVm ZmVyKSkKICAgICAgICAgICAoIHQgICAgICAgICAoZXJyb3IgIkJhZCB0eXBlICVzIiAocHJpbjEt dG8tc3RyaW5nICh0eXBlLW9mIG9iaikpKSkgKSkKCiAgICAgICAgIChmaWxlbmFtZSAoaWYgKG51 bGwgYnVmZmVyKSA7IHZlcnkgc3BlY2lhbCB2YWx1ZSA9PiAoc3RyaW5ncCBvYmopCiAgICAgICAg ICAgICAgICAgICAgICAgb2JqCiAgICAgICAgICAgICAgICAgICAgIChsZXQgKChmbiAoYnVmZmVy LWZpbGUtbmFtZSBidWZmZXIpKSkKICAgICAgICAgICAgICAgICAgICAgICAoaWYgZm4gZm4gKGJ1 ZmZlci1uYW1lKSApKSkpCgogICAgICAgICAocG9pbnQgKGNvbmQgKHBvaW50ICBwb2ludCkKICAg ICAgICAgICAgICAgICAgICAgIChidWZmZXIgKHNhdmUtZXhjdXJzaW9uIChzZXQtYnVmZmVyIGJ1 ZmZlcikgKHBvaW50KSkpCiAgICAgICAgICAgICAgICAgICAgICAodCAgICAgIG5pbCkpKQogICAg ICAgICkKICAgIGBbZmlsZS1tYXJrZXIgLGZpbGVuYW1lICxwb2ludF0pKQoKCgooZGVmdW4gZmls ZS1tYXJrZXItZmlsZW5hbWUgKGZpbGUtbWFya2VyKQogICJSZXR1cm4gdGhlIGZpbGVuYW1lIG9m IHRoZSBmaWxlLW1hcmtlci4KCkZJTEUtTUFSS0VSIG11c3QgYmUgYSBmaWxlLW1hcmtlci4gQW4g ZXJyb3IgaXMgc2lnbmFsZWQgb3RoZXJ3aXNlLiIKICAoY2hlY2stZmlsZS1tYXJrZXItcCBmaWxl LW1hcmtlcikKICAoZWx0IGZpbGUtbWFya2VyIDEpKQoKCihkZWZ1biBmaWxlLW1hcmtlci1wb2lu dCAoZmlsZS1tYXJrZXIpCiAgIlJldHVybiB0aGUgcG9pbnQgb2YgdGhlIGZpbGUtbWFya2VyLiBD YW4gYmUgbmlsLgoKRklMRS1NQVJLRVIgbXVzdCBiZSBhIGZpbGUtbWFya2VyLiBBbiBlcnJvciBp cyBzaWduYWxlZCBvdGhlcndpc2UuIgogIChjaGVjay1maWxlLW1hcmtlci1wIGZpbGUtbWFya2Vy KQogIChlbHQgZmlsZS1tYXJrZXIgMikpCgoKCihwcm92aWRlICdmaWxlLW1hcmtlcikKCjs7OyBm aWxlLW1hcmtlci5lbCBlbmRzIGhlcmUK ------=_Part_21892_2686342.1213604179166 Content-Type: image/png; name=killed-buffers.png Content-Transfer-Encoding: base64 X-Attachment-Id: f_fhisg9r32 Content-Disposition: attachment; filename=killed-buffers.png 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 ------=_Part_21892_2686342.1213604179166--