From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Ben Key Newsgroups: gmane.emacs.devel Subject: Re: user-controlled load-path extension: load-dir Date: Wed, 9 Mar 2011 00:50:23 -0600 Message-ID: References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=bcaec52d4b05d16464049e072535 X-Trace: dough.gmane.org 1299653478 21758 80.91.229.12 (9 Mar 2011 06:51:18 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 9 Mar 2011 06:51:18 +0000 (UTC) Cc: tzz@lifelogs.com, ego111@gmail.com To: Emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Mar 09 07:51:12 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1PxDEl-0000Vs-1K for ged-emacs-devel@m.gmane.org; Wed, 09 Mar 2011 07:51:12 +0100 Original-Received: from localhost ([127.0.0.1]:54296 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PxDEj-0005w4-Ul for ged-emacs-devel@m.gmane.org; Wed, 09 Mar 2011 01:51:10 -0500 Original-Received: from [140.186.70.92] (port=41925 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PxDEM-0005pR-Qf for Emacs-devel@gnu.org; Wed, 09 Mar 2011 01:50:48 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PxDEK-0000GB-P1 for Emacs-devel@gnu.org; Wed, 09 Mar 2011 01:50:45 -0500 Original-Received: from mail-bw0-f41.google.com ([209.85.214.41]:42137) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PxDEK-0000Fv-Gd for Emacs-devel@gnu.org; Wed, 09 Mar 2011 01:50:44 -0500 Original-Received: by bwz17 with SMTP id 17so507592bwz.0 for ; Tue, 08 Mar 2011 22:50:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=AvVgvNFb7LbMOR3K/3pyfuxAJ5AOZ0UAJmZ31YXYyfk=; b=OFWxr80EvcXt2uAG6uMOkPMMNbxuesf48hV2qi6dt6pTkiD0w+v03z48l3+tfppgbU 6tx4T0Ie80Usx2zrhRIS8xWvoyHC0Ccnr4Hm3fI+wgqcVoncnO9SlXBMSybSs8N61SRH 7ZEYc26NK751czXUQO9VK71KowhmmfeizUEhw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; b=aOgIa3mQSTaVUW6jVS186Ks4j8XqAm1JzCOYJt4G0N5NWy+84vXMhkig+aFmxn5g6T A+1aLeN7TAcw6sj3rkR3K44y0VTurTKPFdE2WH3KNzDAoUowojfZSyNHscPwBodt4ybi NOmz+noJMeu1zRVUOKRi8nCPIAW50ul4doTOU= Original-Received: by 10.204.175.194 with SMTP id bb2mr5308075bkb.121.1299653443281; Tue, 08 Mar 2011 22:50:43 -0800 (PST) Original-Received: by 10.204.14.147 with HTTP; Tue, 8 Mar 2011 22:50:23 -0800 (PST) In-Reply-To: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.214.41 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:136939 Archived-At: --bcaec52d4b05d16464049e072535 Content-Type: multipart/alternative; boundary=bcaec52d4b05d1645e049e072533 --bcaec52d4b05d1645e049e072533 Content-Type: text/plain; charset=ISO-8859-1 Hello, I have attached to this message version 4 of user-load-dir.el. Several changes have been made to this version. 1. The error handling in load-dir actually works as expected. If one of the files in the user-load-dir generates an error, it is silently ignored and load-dir continues to load all the other files in the user-load-dir. 2. Added the function byte-compile-dir to user-load-dir.el. This function can be used to byte compile all files in the directory specified by the directory parameter. If the optional parameter recurs is non-nil, this is done recursively. 3. Added the function byte-compile-user-load-dir-files. This interactive function may be used to byte compile all files in the user-load-dir. 4. The function load-user-load-dir-files does nothing if user-load-dir is nil. 5. Modified the user-load-dir defcustom so that it is set to t instead of nil in the case that it cannot be initialized at load time due to user-init-file being nil. 6. Modified user-load-dir-after-init-hook so that it only sets user-load-dir to its default value if it is equal to t. The reason I made changes 5 and 6 is to allow for the possibility of this feature being disabled by the user setting user-load-dir to nil. Setting auto-load-files-in-user-load-dir to nil causes to not be called automatically by the user-load-dir-after-init-hook but the files can still be called by calling load-user-load-dir-files interactively. Setting user-load-dir to nil disables load-user-load-dir-files and byte-compile-user-load-dir-files. --bcaec52d4b05d1645e049e072533 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hello,

I have attached to this message version 4 of=
user-load-dir.el.

Several changes have been= made to this version.
  1. The error handlin= g in load-dir actually works as expected.=A0 If one of the files in the use= r-load-dir generates an error, it is silently ignored and load-dir continue= s to load all the other files in the user-load-dir.=
  2. Added the function byte-compile-dir to user-load-dir.e= l.=A0 This function can be used to byte compile all files in the directory = specified by the directory parameter.=A0 If the optional parameter recurs i= s non-nil, this is done recursively.
  3. Added the function byte-compile-user-load-dir-files.= =A0 This interactive function may be used to byte compile all files in the = user-load-dir.
  4. The = function load-user-load-dir-files does nothing if user-load-dir is nil.
  5. Modified the user-load-dir defcustom so that it is set= to t instead of nil in the case that it cannot be initialized at load time= due to user-init-file being nil.
  6. Modified = user-load-dir-after-init-hook so that it only sets user-load-dir to its def= ault value if it is equal to t.
The reason I made changes 5 and 6 is to allow for the= possibility of this feature being disabled by the user setting user-load-d= ir to nil.

Setting auto-load-files-in-user-load-dir to nil causes to= not be called automatically by the user-load-dir-after-init-hook but the f= iles can still be called by calling load-user-load-dir-files interactively.= =A0 Setting
user-load-dir to nil disables load-user-load-dir-files and byte-compile-user-load-dir-file= s.

--bcaec52d4b05d1645e049e072533-- --bcaec52d4b05d16464049e072535 Content-Type: application/octet-stream; name="user-load-dir.el" Content-Disposition: attachment; filename="user-load-dir.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gl1w0rh81 Ozs7IHVzZXItbG9hZC1kaXIuZWwgLS0gQSBxdWljayBhbmQgZGlydHkgaW1wbGVtZW50YXRpb24g b2YgYSB1c2VyIGxvYWQKOzs7IGRpcmVjdG9yeS4gIFRoaXMgZmlsZSBpcyBwcm92aWRlZCBhcyBh IHBvc3NpYmxlIGFuc3dlciB0byB0aGUKOzs7ICJ1c2VyLWNvbnRyb2xsZWQgbG9hZC1wYXRoIGV4 dGVuc2lvbjogbG9hZC1kaXIiIGRpc2N1c3Npb24gb24gdGhlCjs7OyBlbWFjcy1kZXZlbCBsaXN0 IGZvdW5kIGF0Cjs7OyA8aHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2VtYWNzLWRl dmVsLzIwMTEtMDMvbXNnMDAwNDguaHRtbD4uCgo7OzsgVGhpcyBjb3VsZCBldmVudHVhbGx5IGJl IHR1cm5lZCBpbnRvIGFuIEVtYWNzIHBhY2thZ2UgdGhhdCBjYW4gYmUKOzs7IGluc3RhbGxlZCB2 aWEgcGFja2FnZS5lbC4gIEZvciBub3csIHRoaXMgZmlsZSBjYW4gYmUgaW5zdGFsbGVkIGJ5Cjs7 OyBwbGFjaW5nIGl0IHNvbWV3aGVyZSBpbiB5b3VyIGxvYWQgcGF0aCBhbmQgYWRkIHRoZSBsaW5l Cjs7OyAocmVxdWlyZSAndXNlci1sb2FkLWRpcikKOzs7IHRvIHlvdXIgLmVtYWNzIG9yIHNpdGUt c3RhcnQuZWwgZmlsZS4KCjs7OyBDb3B5cmlnaHQgKGMpIDIwMTEgQmVuIEtleQoKOzsgVGhpcyBm aWxlIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkgaXQKOzsgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKOzsgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KOzsKOzsgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAo7OyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKOzsgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo7Owo7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7OyBhbG9uZyB3aXRo IHRoZSBiay1lbWFjcy10b29scyBwYWNrYWdlLiAgSWYgbm90LCBzZWUKOzsgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgoKKGlmIChub3QgKGJvdW5kcCAnZGlyZWN0b3J5LWZpbGVzLW5v LWRvdC1maWxlcy1yZWdleHApKQoJKGRlZmNvbnN0IGRpcmVjdG9yeS1maWxlcy1uby1kb3QtZmls ZXMtcmVnZXhwCgkgICJeXFwoW14uXVxcfFxcLlxcKFteLl1cXHxcXC4uXFwpXFwpLioiCgkgICJS ZWdleHAgbWF0Y2hpbmcgYW55IGZpbGUgbmFtZSBleGNlcHQgXCIuXCIgYW5kIFwiLi5cIi4iKQog ICkKCihkZWZjdXN0b20gdXNlci1sb2FkLWRpcgogIChpZiAobm90IChudWxsIHVzZXItaW5pdC1m aWxlKSkKCSAgOzsgSWYgdGhpcyBmaWxlIGlzIGxvYWRlZCBmcm9tIHNpdGUtc3RhcnQuZWwsIGB1 c2VyLWluaXQtZmlsZScKCSAgOzsgd2lsbCBiZSBuaWwsIHRoaXMgd2lsbCBjYXVzZSBgZmlsZS1u YW1lLWRpcmVjdG9yeScgdG8gdGhyb3cgYW4KCSAgOzsgZXJyb3IgZHVlIHRvIHRoZSBhcmd1bWVu dCBub3QgYmVpbmcgYSBzdHJpbmcuICBBcyBhIHJlc3VsdCwgd2UKCSAgOzsgb25seSBhdHRlbXB0 IHRvIHNldCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBgdXNlci1sb2FkLWRpcicgaGVyZQoJICA7OyBp ZiBgdXNlci1pbml0LWZpbGUnIGlzIG5vdCBuaWwuCgkgIChmb3JtYXQgIiVzLmVtYWNzLmQvbG9h ZC5kIiAoZmlsZS1uYW1lLWRpcmVjdG9yeSAoZXhwYW5kLWZpbGUtbmFtZSB1c2VyLWluaXQtZmls ZSkpKQoJdAoJKQogICJBIHVzZXIgZGVmaW5lZCBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIHVzZXIg Y2FuIHBsYWNlIC5lbCBmaWxlcyB0aGF0CndpbGwgYXV0b21hdGljYWxseSBiZSBsb2FkZWQgYWZ0 ZXIgRW1hY3MgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUuIgogIDp0eXBlICdkaXJlY3RvcnkK ICA6Z3JvdXAgJ2luaXRpYWxpemF0aW9uCiAgOnJlcXVpcmUgJ3VzZXItbG9hZC1kaXIKICApCgoo ZGVmY3VzdG9tIGxvYWQtZmlsZXMtaW4tdXNlci1sb2FkLWRpci1yZWN1cnNpdmVseSBuaWwKICAi Tm9uLW5pbCBjYXVzZXMgYGxvYWQtdXNlci1sb2FkLWRpci1maWxlcycgdG8gbG9hZCBhbGwgLmVs IG9yIC5lbGMKZmlsZXMgaW4gdGhlIGB1c2VyLWxvYWQtZGlyJyBhbmQgaW4gYWxsIHN1YmRpcmVj dG9yaWVzIG9mIHRoZQpgdXNlci1sb2FkLWRpci4nICBOaWwgY2F1c2VzIGBsb2FkLXVzZXItbG9h ZC1kaXItZmlsZXMnIHRvIGxvYWQgb25seQp0aGUgZmlsZXMgaW4gdGhlIGB1c2VyLWxvYWQtZGly LicKClRoZSBkZWZhdWx0IHZhbHVlIGlzIG5pbC4iCiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAg J2luaXRpYWxpemF0aW9uCiAgOnJlcXVpcmUgJ3VzZXItbG9hZC1kaXIKICApCgooZGVmY3VzdG9t IGF1dG8tbG9hZC1maWxlcy1pbi11c2VyLWxvYWQtZGlyIHQKICAiTm9uLW5pbCBjYXVzZXMgYGxv YWQtdXNlci1sb2FkLWRpci1maWxlcycgdG8gYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkKZnJvbSB0 aGUgYGFmdGVyLWluaXQtaG9vay4nICBOaWwgc3VwcHJlc3NlcyB0aGlzIGF1dG9tYXRpYyBsb2Fk aW5nLgpOb3RlIHRoYXQgc2luY2UgYGxvYWQtdXNlci1sb2FkLWRpci1maWxlcycgaXMgYW4gaW50 ZXJhY3RpdmUgZnVuY3Rpb24sCnlvdSBtYXkgY2FsbCBpdCBtYW51YWxseSBieSB1c2luZyAnTS14 IGxvYWQtdXNlci1sb2FkLWRpci1maWxlcycgaWYgeW91CmNob29zZSB0byBzZXQgdGhpcyB2YXJp YWJsZSB0byBuaWwuCgpUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0LiIKICA6dHlwZSAnYm9vbGVhbgog IDpncm91cCAnaW5pdGlhbGl6YXRpb24KICA6cmVxdWlyZSAndXNlci1sb2FkLWRpcgogICkKCihk ZWZ1biBsb2FkLWRpciAoZGlyZWN0b3J5ICZvcHRpb25hbCByZWN1cnNlKQogICJMb2FkIGFsbCBF bWFjcyBMaXNwIGZpbGVzIGluIERJUkVDVE9SWS4KSWYgUkVDVVJTRSBpcyBub24tbmlsLCByZWN1 cnNpdmVseSBsb2FkIGFsbCBzdWNoIGZpbGVzIGluIGFsbApzdWJkaXJlY3Rvcmllcy4KClRoaXMg ZnVuY3Rpb24gaXMgYmFzZWQgb24gb25lIHdyaXR0ZW4gYnkgRXZhbnMgV2lubmVyLiAgU2VlIHRo ZSBtZXNzYWdlCjxodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvZW1hY3MtZGV2ZWwv MjAxMS0wMy9tc2cwMDIzOS5odG1sPgpmb3IgZGV0YWlscy4iCiAgKGludGVyYWN0aXZlICJEIikK ICAobGV0ICh0aGlzLWZpbGUgbG9hZGVkLWZpbGVzLWxpc3QpCgkoZG9saXN0IAoJCShmaWxlIAoJ CSAoZGlyZWN0b3J5LWZpbGVzCgkJICAoZXhwYW5kLWZpbGUtbmFtZSBkaXJlY3RvcnkpIAoJCSAg dCBkaXJlY3RvcnktZmlsZXMtbm8tZG90LWZpbGVzLXJlZ2V4cCkgbmlsKQoJICAoY29uZAoJICAg KChhbmQgcmVjdXJzZSAoZmlsZS1kaXJlY3RvcnktcCBmaWxlKSkKCQkod2hlbiByZWN1cnNlIChs b2FkLWRpciBmaWxlKSkKCQkpCgkgICAoKHN0cmluZy1tYXRjaCAiXFwuZWwkXFx8XFwuZWxjJCIg ZmlsZSkKCQkoc2V0cSB0aGlzLWZpbGUgKGZpbGUtbmFtZS1zYW5zLWV4dGVuc2lvbiBmaWxlKSkK CQkoaWYgKG5vdCAobWVtYmVyIHRoaXMtZmlsZSBsb2FkZWQtZmlsZXMtbGlzdCkpCgkJCShwcm9n bgoJCQkgIChzZXRxIGxvYWRlZC1maWxlcy1saXN0IChhZGQtdG8tbGlzdCAnbG9hZGVkLWZpbGVz LWxpc3QgdGhpcy1maWxlKSkKCQkJICAoaWdub3JlLWVycm9ycwoJCQkJKGxvYWQgdGhpcy1maWxl KSkKCQkJICApCgkJICApCgkJKQoJICAgKQoJICApCgkpCiAgKQoKKGRlZnVuIGxvYWQtdXNlci1s b2FkLWRpci1maWxlcyAoKQogICJMb2FkcyBhbGwgLmVsIGZpbGVzIGZvdW5kIGluIHRoZSBgdXNl ci1sb2FkLWRpci4nIgogIChpbnRlcmFjdGl2ZSkKICAoaWYgKG5vdCAobnVsbCB1c2VyLWxvYWQt ZGlyKSkKCSAgKGxvYWQtZGlyIHVzZXItbG9hZC1kaXIgbG9hZC1maWxlcy1pbi11c2VyLWxvYWQt ZGlyLXJlY3Vyc2l2ZWx5KQoJKQogICkKCihkZWZ1biBieXRlLWNvbXBpbGUtZGlyIChkaXJlY3Rv cnkgJm9wdGlvbmFsIHJlY3Vyc2UpCiAgIkJ5dGUgY29tcGlsZSBhbGwgRW1hY3MgTGlzcCBmaWxl cyBpbiBESVJFQ1RPUlkuICBJZiBSRUNVUlNFIGlzCm5vbi1uaWwsIHJlY3Vyc2l2ZWx5IGJ5dGUg Y29tcGlsZSBhbGwgc3VjaCBmaWxlcyBpbiBhbGwKc3ViZGlyZWN0b3JpZXMuIgogIChpbnRlcmFj dGl2ZSAiRCIpCiAgKGRvbGlzdCAKCSAgKGZpbGUgCgkgICAoZGlyZWN0b3J5LWZpbGVzCgkJKGV4 cGFuZC1maWxlLW5hbWUgZGlyZWN0b3J5KSAKCQl0IGRpcmVjdG9yeS1maWxlcy1uby1kb3QtZmls ZXMtcmVnZXhwKSBuaWwpCgkoY29uZAoJICgoYW5kIHJlY3Vyc2UgKGZpbGUtZGlyZWN0b3J5LXAg ZmlsZSkpCgkgICh3aGVuIHJlY3Vyc2UgKGJ5dGUtY29tcGlsZS1kaXIgZmlsZSkpCgkgICkKCSAo KHN0cmluZy1tYXRjaCAiXFwuZWwkIiBmaWxlKQoJICAoaWdub3JlLWVycm9ycwoJCShieXRlLWNv bXBpbGUtZmlsZSBmaWxlKSkKCSAgKQoJICkKCSkKICApCgooZGVmdW4gYnl0ZS1jb21waWxlLXVz ZXItbG9hZC1kaXItZmlsZXMgKCkKICAiQnl0ZSBjb21waWxlcyBhbGwgLmVsIGZpbGVzIGZvdW5k IGluIHRoZSBgdXNlci1sb2FkLWRpci4nIgogIChpbnRlcmFjdGl2ZSkKICAoaWYgKG5vdCAobnVs bCB1c2VyLWxvYWQtZGlyKSkKCSAgKGJ5dGUtY29tcGlsZS1kaXIgdXNlci1sb2FkLWRpciBsb2Fk LWZpbGVzLWluLXVzZXItbG9hZC1kaXItcmVjdXJzaXZlbHkpCgkpCiAgKQoKKGRlZnVuIHVzZXIt bG9hZC1kaXItYWZ0ZXItaW5pdC1ob29rICgpCiAgIkFuIGBhZnRlci1pbml0LWhvb2snIGZ1bmN0 aW9uIHRoYXQgaXMgdXNlZCB0byBjb25kaXRpb25hbGx5IGNhbGwKYGxvYWQtdXNlci1sb2FkLWRp ci1maWxlcycgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZgpgYXV0by1sb2FkLWZpbGVzLWluLXVz ZXItbG9hZC1kaXInLiIKICAoaWYgKGVxdWFsIHVzZXItbG9hZC1kaXIgdCkKCSAgOzsgSWYgdGhp cyBmaWxlIGlzIGxvYWRlZCBmcm9tIHNpdGUtc3RhcnQuZWwsIGB1c2VyLWxvYWQtZGlyJyBtYXkK CSAgOzsgYmUgbmlsIGF0IHRoaXMgcG9pbnQuICBTZWUgdGhlIGNvbW1lbnRzIGZvciBgdXNlci1s b2FkLWRpcicKCSAgOzsgYWJvdmUuIElmIHRoaXMgaGFwcGVucywgdXNlIHRoZSBkZWZhdWx0IHZh bHVlIGhlcmUuCgkgIChzZXRxIHVzZXItbG9hZC1kaXIKCQkJKGZvcm1hdCAiJXMuZW1hY3MuZC9s b2FkLmQiIChmaWxlLW5hbWUtZGlyZWN0b3J5IChleHBhbmQtZmlsZS1uYW1lIHVzZXItaW5pdC1m aWxlKSkpKQoJKQogIChpZiBhdXRvLWxvYWQtZmlsZXMtaW4tdXNlci1sb2FkLWRpcgoJICAobG9h ZC11c2VyLWxvYWQtZGlyLWZpbGVzKQoJKQogICkKCihhZGQtaG9vayAnYWZ0ZXItaW5pdC1ob29r ICd1c2VyLWxvYWQtZGlyLWFmdGVyLWluaXQtaG9vaykKCihwcm92aWRlICd1c2VyLWxvYWQtZGly KQo= --bcaec52d4b05d16464049e072535--