From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9553 invoked by alias); 11 Jan 2010 21:43:32 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 27591 Received: (qmail 6578 invoked from network); 11 Jan 2010 21:43:30 -0000 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VERIFIED,HTML_MESSAGE autolearn=ham version=3.2.5 Received-SPF: pass (ns1.primenet.com.au: SPF record at _spf.google.com designates 209.85.219.222 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=yH3eg6ko9TFhzcskHxPedE9fsswia3a842bk+xRvFgA=; b=KjpV5CYVRbZ3Ui3xpkEEqG8s4dzc/1q3z9FGX7uhx+4IiwVpw6INaFZ2claciJ+/G5 +vS60i/3VLAawCZQm6xCaxDjenxtKTlwpy9kC677h2J95qojiYSSGB/Z3YV6mBlgITIU 9fo8iF8lqTDd1Z88tz1aNh/wmlxXOulR35fT4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=W2rVCgu3uJiOVD5+hk2nnOzQfuPXFYfj+YAfEQmAbWgWTzhsVwde7nKvBNrZRPs1vv OIfW3lXGVBmMBWAYZjyIYFkjUFKCu0rqzf9MWWSNapZatfYuybyTYlE4cYqpeGKhVK8K jNrG5U+8lET4VBP0satlnYZ/zgsF8w2UAUQ2A= MIME-Version: 1.0 Date: Mon, 11 Jan 2010 22:37:27 +0100 Message-ID: <2d3b879b1001111337q4078c68ep55fb1e788bd865d6@mail.gmail.com> Subject: PATCH: keyboardhack to replace sunkeyboardhack From: Joakim Rosqvist To: zsh-workers@zsh.org Content-Type: multipart/mixed; boundary=001485eba62f0d6714047cea58a1 --001485eba62f0d6714047cea58a1 Content-Type: multipart/alternative; boundary=001485eba62f0d6702047cea589f --001485eba62f0d6702047cea589f Content-Type: text/plain; charset=ISO-8859-1 On my keyboard, singlequote is too close to return and so often gets pressed by mistake. So I've extended the sunkeyboardhack option (which removes an extraneous backquote at the end of the command line). Now, one can put e.g. KEYBOARD_HACK=\' in .zshrc to have singlequote (or any other ascii character) removed from the end of the commandline before it is parsed. This applies only to interactive shells. Should the character chosen be singlequote, backquote or doublequote, there also has to be an odd number of them on the line for the last one to be removed (since they often appear there intentionally). The old sunkeyboardhack option still works and will make backquote the char-to-be-removed. (I apologize for sending the patch as an attachment. It is formatted with git format-patch, but my ISP is playing tricks that prevents me from getting sendmail to work) /Joakim Rosqvist --001485eba62f0d6702047cea589f Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On my keyboard, singlequote is too close to return and so often gets presse= d by mistake.
So I've extended the sunkeyboardhack option (which rem= oves an extraneous backquote
at the end of the command line). Now, one c= an put e.g.

KEYBOARD_HACK=3D\'

in .zshrc to have singlequote (or any oth= er ascii character) removed from the end of the
commandline before it is= parsed. This applies only to interactive shells.
Should the character c= hosen be singlequote, backquote or doublequote, there also
has to be an odd number of them on the line for the last one to be removed<= br>(since they often appear there intentionally). The old sunkeyboardhack o= ption
still works and will make backquote the char-to-be-removed.

(I apologize for sending the patch as an attachment. It is formatted wi= th git format-patch,
but my ISP is playing tricks that prevents me from = getting sendmail to work)

/Joakim Rosqvist


--001485eba62f0d6702047cea589f-- --001485eba62f0d6714047cea58a1 Content-Type: text/x-patch; charset=US-ASCII; name="0001-Add-Keyboardhack-variable-to-extend-sunkeyboardhack.patch" Content-Disposition: attachment; filename="0001-Add-Keyboardhack-variable-to-extend-sunkeyboardhack.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g4brisme0 RnJvbSBmM2U4ZTFlODE3NDkzY2Y2MTkzZjU4NjQyZmI4NTRkMDkxYzViZDk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2FraW0gUm9zcXZpc3QgPGpvYWtpbS5yb3NxdmlzdEBnbWFp bC5jb20+CkRhdGU6IFdlZCwgNiBKYW4gMjAxMCAxOToyMDozMCArMDEwMApTdWJqZWN0OiBbUEFU Q0hdIEFkZCBLZXlib2FyZGhhY2sgdmFyaWFibGUgdG8gZXh0ZW5kIHN1bmtleWJvYXJkaGFjawoK T24gbXkga2V5Ym9hcmQsIHNpbmdsZXF1b3RlIGlzIHRvbyBjbG9zZSB0byByZXR1cm4gYW5kIHNv IG9mdGVuIGdldHMgcHJlc3NlZCBieSBtaXN0YWtlLgpTbyBJJ3ZlIGV4dGVuZGVkIHRoZSBzdW5r ZXlib2FyZGhhY2sgb3B0aW9uICh3aGljaCByZW1vdmVzIGFuIGV4dHJhbmVvdXMgYmFja3F1b3Rl CmF0IHRoZSBlbmQgb2YgdGhlIGNvbW1hbmQgbGluZSkuIE5vdywgb25lIGNhbiBwdXQgZS5nLgoK S0VZQk9BUkRfSEFDSz1cJwoKaW4gLnpzaHJjIHRvIGhhdmUgc2luZ2xlcXVvdGUgKG9yIGFueSBv dGhlciBhc2NpaSBjaGFyYWN0ZXIpIHJlbW92ZWQgZnJvbSB0aGUgZW5kIG9mIHRoZQpjb21tYW5k bGluZSBiZWZvcmUgaXQgaXMgcGFyc2VkLiBUaGlzIGFwcGxpZXMgb25seSB0byBpbnRlcmFjdGl2 ZSBzaGVsbHMuClNob3VsZCB0aGUgY2hhcmFjdGVyIGNob3NlbiBiZSBzaW5nbGVxdW90ZSwgYmFj a3F1b3RlIG9yIGRvdWJsZXF1b3RlLCB0aGVyZSBhbHNvCmhhcyB0byBiZSBhbiBvZGQgbnVtYmVy IG9mIHRoZW0gb24gdGhlIGxpbmUgZm9yIHRoZSBsYXN0IG9uZSB0byBiZSByZW1vdmVkCihzaW5j ZSB0aGV5IG9mdGVuIGFwcGVhciB0aGVyZSBpbnRlbnRpb25hbGx5KS4gVGhlIG9sZCBzdW5rZXli b2FyZGhhY2sgb3B0aW9uCnN0aWxsIHdvcmtzIGFuZCB3aWxsIG1ha2UgYmFja3F1b3RlIHRoZSBj aGFyLXRvLWJlLXJlbW92ZWQuCgovSm9ha2ltIFJvc3F2aXN0Ci0tLQogRG9jL1pzaC9vcHRpb25z LnlvIHwgICAgMiArKwogRG9jL1pzaC9wYXJhbXMueW8gIHwgICAxMCArKysrKysrKysrCiBGRUFU VVJFUyAgICAgICAgICAgfCAgICAxICsKIFNyYy9pbnB1dC5jICAgICAgICB8ICAgMjMgKysrKysr KysrKysrKystLS0tLS0tLS0KIFNyYy9vcHRpb25zLmMgICAgICB8ICAgIDMgKysrCiBTcmMvcGFy YW1zLmMgICAgICAgfCAgIDQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9Eb2MvWnNoL29wdGlvbnMueW8gYi9Eb2MvWnNoL29wdGlvbnMueW8K aW5kZXggNDZlMjFkNi4uNTBkYzNjOSAxMDA2NDQKLS0tIGEvRG9jL1pzaC9vcHRpb25zLnlvCisr KyBiL0RvYy9ac2gvb3B0aW9ucy55bwpAQCAtMTIwOSw2ICsxMjA5LDggQEAgSWYgYSBsaW5lIGVu ZHMgd2l0aCBhIGJhY2txdW90ZSwgYW5kIHRoZXJlIGFyZSBhbiBvZGQgbnVtYmVyCiBvZiBiYWNr cXVvdGVzIG9uIHRoZSBsaW5lLCBpZ25vcmUgdGhlIHRyYWlsaW5nIGJhY2txdW90ZS4KIFRoaXMg aXMgdXNlZnVsIG9uIHNvbWUga2V5Ym9hcmRzIHdoZXJlIHRoZSByZXR1cm4ga2V5IGlzCiB0b28g c21hbGwsIGFuZCB0aGUgYmFja3F1b3RlIGtleSBsaWVzIGFubm95aW5nbHkgY2xvc2UgdG8gaXQu CitEZXByZWNhdGVkIGJ5IHR0KEtFWUJPQVJEX0hBQ0spLCB3aGljaCBsZXRzIHlvdSBjaG9vc2Ug dGhlCitjaGFyYWN0ZXIgdG8gYmUgcmVtb3ZlZC4KICkKIGVuZGl0ZW0oKQogCmRpZmYgLS1naXQg YS9Eb2MvWnNoL3BhcmFtcy55byBiL0RvYy9ac2gvcGFyYW1zLnlvCmluZGV4IDE4YzE0NjguLjE3 OTU1YjkgMTAwNjQ0Ci0tLSBhL0RvYy9ac2gvcGFyYW1zLnlvCisrKyBiL0RvYy9ac2gvcGFyYW1z LnlvCkBAIC04OTcsNiArODk3LDE2IEBAIHNwYWNlIGNoYXJhY3Rlci4KIElmIHRoZSBwYXJhbWV0 ZXIgaXMgdW5zZXQsIHRoZSBkZWZhdWx0IGlzIHVzZWQuICBOb3RlIHRoaXMgaGFzCiBhIGRpZmZl cmVudCBlZmZlY3QgZnJvbSBzZXR0aW5nIHRoZSBwYXJhbWV0ZXIgdG8gYW4gZW1wdHkgc3RyaW5n LgogKQordmluZGV4KEtFWUJPQVJEX0hBQ0spCitpdGVtKHR0KEtFWUJPQVJEX0hBQ0spKSgKK1Ro aXMgdmFyaWFibGUgZGVmaW5lcyBhIGNoYXJhY3RlciB0byBiZSByZW1vdmVkIGZyb20gdGhlIGVu ZCBvZiB0aGUKK2NvbW1hbmQgbGluZSBiZWZvcmUgaW50ZXJwcmV0aW5nIGl0IChpbnRlcmFjdGl2 ZSBzaGVsbHMgb25seSkuIEl0IGlzCitpbnRlbmRlZCB0byBmaXggdGhlIHByb2JsZW0gd2l0aCBr ZXlzIHBsYWNlZCBhbm5veWluZ2x5IGNsb3NlIHRvIHJldHVybgorYW5kIGRlcHJlY2F0ZXMgdGhl IHR0KFNVTktFWUJPQVJESEFDSykgb3B0aW9uIHdoaWNoIGRpZCB0aGlzIGZvcgorYmFja3F1b3Rl cyBvbmx5LiBTaG91bGQgdGhlIGNob3NlbiBjaGFyYWN0ZXIgYmUgb25lIG9mIHNpbmdsZXF1b3Rl LAorZG91YmxlcXVvdGUgb3IgYmFja3F1b3RlLCB0aGVyZSBtdXN0IGFsc28gYmUgYW4gb2RkIG51 bWJlciBvZiB0aGVtCitvbiB0aGUgY29tbWFuZCBsaW5lIGZvciB0aGUgbGFzdCBvbmUgdG8gYmUg cmVtb3ZlZC4KKykKIHZpbmRleChLRVlUSU1FT1VUKQogaXRlbSh0dChLRVlUSU1FT1VUKSkoCiBU aGUgdGltZSB0aGUgc2hlbGwgd2FpdHMsIGluIGh1bmRyZWR0aHMgb2Ygc2Vjb25kcywgZm9yIGFu b3RoZXIga2V5IHRvCmRpZmYgLS1naXQgYS9GRUFUVVJFUyBiL0ZFQVRVUkVTCmluZGV4IDJkYzI3 MzYuLjliMGQwYzIgMTAwNjQ0Ci0tLSBhL0ZFQVRVUkVTCisrKyBiL0ZFQVRVUkVTCkBAIC02Niw2 ICs2Niw3IEBAIHdpdGggaGlzdHZlcmlmeSBvcHRpb24sIHBlcmZvcm1pbmcgY3NoLXN0eWxlIGhp c3RvcnkgZXhwYW5zaW9ucyBjYXVzZXMgdGhlCiAgIGlucHV0IGxpbmUgdG8gYmUgYnJvdWdodCB1 cCBmb3IgZWRpdGluZyBpbnN0ZWFkIG9mIGJlaW5nIGV4ZWN1dGVkCiB3aXRoIHN1bmtleWJvYXJk aGFjayBvcHRpb24sIGFjY2lkZW50YWxseSB0eXBlZCB0cmFpbGluZyBgIGNoYXJhY3RlcnMKICAg YXJlIHJlbW92ZWQgZnJvbSB0aGUgaW5wdXQgbGluZSAoZm9yIHRob3NlIG9mIHlvdSB3aXRoIFN1 biBrZXlib2FyZHMgOi0pICkKK3dpdGggS0VZQk9BUkRfSEFDSywgYW55IGFjY2lkZW50YWxseSB0 eXBlZCB0cmFpbGluZyBhc2NpaSBjaGFyYWN0ZXIgY2FuIGJlIGp1bmtlZAogImNkIG9sZCBuZXci IHJlcGxhY2VzICJvbGQiIHdpdGggIm5ldyIgaW4gZGlyZWN0b3J5IHN0cmluZwogZ2VuZXJhbGl6 ZWQgYXJndW1lbnQgY29tcGxldGlvbiwgbmV3IHN5c3RlbSBiYXNlZCBvbiBzaGVsbCBmdW5jdGlv bnM6CiAgIC0gaGlnaGx5IGNvbnRleHQgc2Vuc2l0aXZlCmRpZmYgLS1naXQgYS9TcmMvaW5wdXQu YyBiL1NyYy9pbnB1dC5jCmluZGV4IDgwZjhlYzguLmQ3NTBlYTcgMTAwNjQ0Ci0tLSBhL1NyYy9p bnB1dC5jCisrKyBiL1NyYy9pbnB1dC5jCkBAIC0yOTEsMTcgKzI5MSwyMiBAQCBpbnB1dGxpbmUo dm9pZCkKIAl6cHV0cyhpbmdldGNsaW5lLCBzdGRlcnIpOwogCWZmbHVzaChzdGRlcnIpOwogICAg IH0KLSAgICBpZiAoKmluZ2V0Y2xpbmUgJiYgaW5nZXRjbGluZVtzdHJsZW4oaW5nZXRjbGluZSkg LSAxXSA9PSAnXG4nICYmCi0JaW50ZXJhY3QgJiYgaXNzZXQoU1VOS0VZQk9BUkRIQUNLKSAmJiBp c3NldChTSElOU1RESU4pICYmCi0JU0hUVFkgIT0gLTEgJiYgKmluZ2V0Y2xpbmUgJiYgaW5nZXRj bGluZVsxXSAmJgotCWluZ2V0Y2xpbmVbc3RybGVuKGluZ2V0Y2xpbmUpIC0gMl0gPT0gJ2AnKSB7 Ci0JLyogSnVuayBhbiB1bm1hdGNoZWQgImAiIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUuICovCi0J aW50IGN0OworICAgIGlmIChrZXlib2FyZGhhY2tjaGFyICYmICppbmdldGNsaW5lICYmCisJaW5n ZXRjbGluZVtzdHJsZW4oaW5nZXRjbGluZSkgLSAxXSA9PSAnXG4nICYmCisJaW50ZXJhY3QgJiYg aXNzZXQoU0hJTlNURElOKSAmJgorCVNIVFRZICE9IC0xICYmIGluZ2V0Y2xpbmVbMV0gJiYKKwlp bmdldGNsaW5lW3N0cmxlbihpbmdldGNsaW5lKSAtIDJdID09IGtleWJvYXJkaGFja2NoYXIpIHsK KwkvKiBKdW5rIGFuIHVud2FudGVkIGNoYXJhY3RlciBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lLgor CSAgIChrZXkgdG9vIGNsb3NlIHRvIHJldHVybiBrZXkpICovCisJaW50IGN0ID0gMTsgIC8qIGZv cmNlIG9kZCAqLwogCWNoYXIgKnB0cjsKIAotCWZvciAoY3QgPSAwLCBwdHIgPSBpbmdldGNsaW5l OyAqcHRyOyBwdHIrKykKLQkgICAgaWYgKCpwdHIgPT0gJ2AnKQotCQljdCsrOworCWlmIChrZXli b2FyZGhhY2tjaGFyID09ICdcJycgfHwga2V5Ym9hcmRoYWNrY2hhciA9PSAnIicgfHwga2V5Ym9h cmRoYWNrY2hhciA9PSAnYCcpIHsKKwkgICAgLyogZm9yIHRoZSBjaGFycyBhYm92ZSwgYWxzbyBy ZXF1aXJlIGFuIG9kZCBjb3VudCBiZWZvcmUganVua2luZyAqLworCSAgICBmb3IgKGN0ID0gMCwg cHRyID0gaW5nZXRjbGluZTsgKnB0cjsgcHRyKyspCisJCWlmICgqcHRyID09IGtleWJvYXJkaGFj a2NoYXIpCisJCSAgICBjdCsrOworCX0KIAlpZiAoY3QgJiAxKSB7CiAJICAgIHB0clstMl0gPSAn XG4nOwogCSAgICBwdHJbLTFdID0gJ1wwJzsKZGlmZiAtLWdpdCBhL1NyYy9vcHRpb25zLmMgYi9T cmMvb3B0aW9ucy5jCmluZGV4IGM1YjdjM2IuLmE1ZjI5OWUgMTAwNjQ0Ci0tLSBhL1NyYy9vcHRp b25zLmMKKysrIGIvU3JjL29wdGlvbnMuYwpAQCAtNzQ4LDYgKzc0OCw5IEBAIGRvc2V0b3B0KGlu dCBvcHRubywgaW50IHZhbHVlLCBpbnQgZm9yY2UpCiAgICAgfSBlbHNlIGlmICgob3B0bm8gPT0g RU1BQ1NNT0RFIHx8IG9wdG5vID09IFZJTU9ERSkgJiYgdmFsdWUpIHsKIAl6bGVlbnRyeShaTEVf Q01EX1NFVF9LRVlNQVAsIG9wdG5vKTsKIAlvcHRzWyhvcHRubyA9PSBFTUFDU01PREUpID8gVklN T0RFIDogRU1BQ1NNT0RFXSA9IDA7CisgICAgfSBlbHNlIGlmIChvcHRubyA9PSBTVU5LRVlCT0FS REhBQ0spIHsKKwkvKiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqLworCWtleWJvYXJkaGFj a2NoYXIgPSAodmFsdWUgPyAnYCcgOiAnXDAnKTsKICAgICB9CiAgICAgb3B0c1tvcHRub10gPSB2 YWx1ZTsKICAgICBpZiAob3B0bm8gPT0gQkFOR0hJU1QgfHwgb3B0bm8gPT0gU0hJTlNURElOKQpk aWZmIC0tZ2l0IGEvU3JjL3BhcmFtcy5jIGIvU3JjL3BhcmFtcy5jCmluZGV4IDA0MjVlMDcuLmFi YzRjMDAgMTAwNjQ0Ci0tLSBhL1NyYy9wYXJhbXMuYworKysgYi9TcmMvcGFyYW1zLmMKQEAgLTEw OCw2ICsxMDgsOSBAQCB6bG9uZyBsaW5lbm8sCQkvKiAkTElORU5PICAgICAgKi8KIG1vZF9leHBv cnQgdW5zaWduZWQgY2hhciBiYW5nY2hhcjsKIC8qKi8KIHVuc2lnbmVkIGNoYXIgaGF0Y2hhciwg aGFzaGNoYXI7CisKKy8qKi8KK3Vuc2lnbmVkIGNoYXIga2V5Ym9hcmRoYWNrY2hhciA9ICdcMCc7 CiAgCiAvKiAkU0VDT05EUyA9IG5vdy50dl9zZWMgLSBzaHRpbWVyLnR2X3NlYwogICogICAgICAg ICAgKyAobm93LnR2X3VzZWMgLSBzaHRpbWVyLnR2X3VzZWMpIC8gMTAwMDAwMC4wCkBAIC0yMDQs NiArMjA3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBnc3Vfc2NhbGFyIGlmc19nc3UgPQogeyBp ZnNnZXRmbiwgaWZzc2V0Zm4sIHN0ZHVuc2V0Zm4gfTsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3N1 X3NjYWxhciB1bmRlcnNjb3JlX2dzdSA9CiB7IHVuZGVyc2NvcmVnZXRmbiwgbnVsbHN0cnNldGZu LCBzdGR1bnNldGZuIH07CitzdGF0aWMgY29uc3Qgc3RydWN0IGdzdV9zY2FsYXIga2V5Ym9hcmRf aGFja19nc3UgPQoreyBrZXlib2FyZGhhY2tnZXRmbiwga2V5Ym9hcmRoYWNrc2V0Zm4sIHN0ZHVu c2V0Zm4gfTsKICNpZmRlZiBVU0VfTE9DQUxFCiBzdGF0aWMgY29uc3Qgc3RydWN0IGdzdV9zY2Fs YXIgbGNfYmxhaF9nc3UgPQogeyBzdHJnZXRmbiwgbGNzZXRmbiwgc3RkdW5zZXRmbiB9OwpAQCAt MjczLDYgKzI3OCw3IEBAIElQREVGMigiVEVSTSIsIHRlcm1fZ3N1LCAwKSwKIElQREVGMigiV09S RENIQVJTIiwgd29yZGNoYXJzX2dzdSwgMCksCiBJUERFRjIoIklGUyIsIGlmc19nc3UsIFBNX0RP TlRJTVBPUlQpLAogSVBERUYyKCJfIiwgdW5kZXJzY29yZV9nc3UsIFBNX1JFQURPTkxZKSwKK0lQ REVGMigiS0VZQk9BUkRfSEFDSyIsIGtleWJvYXJkX2hhY2tfZ3N1LCBQTV9ET05USU1QT1JUKSwK IAogI2lmZGVmIFVTRV9MT0NBTEUKICMgZGVmaW5lIExDSVBERUYobmFtZSkgSVBERUYyKG5hbWUs IGxjX2JsYWhfZ3N1LCBQTV9VTlNFVCkKQEAgLTM4MzQsNiArMzg0MCw0NiBAQCBlcnJub2dldGZu KFVOVVNFRChQYXJhbSBwbSkpCiAgICAgcmV0dXJuIGVycm5vOwogfQogCisvKiBGdW5jdGlvbiB0 byBnZXQgdmFsdWUgZm9yIHNwZWNpYWwgcGFyYW1ldGVyIGBLRVlCT0FSRF9IQUNLJyAqLworCisv KiovCitjaGFyICoKK2tleWJvYXJkaGFja2dldGZuKFVOVVNFRChQYXJhbSBwbSkpCit7CisgICAg c3RhdGljIGNoYXIgYnVmWzJdOworCisgICAgYnVmWzBdID0ga2V5Ym9hcmRoYWNrY2hhcjsKKyAg ICBidWZbMV0gPSAnXDAnOworICAgIHJldHVybiBidWY7Cit9CisKKworLyogRnVuY3Rpb24gdG8g c2V0IHZhbHVlIG9mIHNwZWNpYWwgcGFyYW1ldGVyIGBLRVlCT0FSRF9IQUNLJyAqLworCisvKiov Cit2b2lkCitrZXlib2FyZGhhY2tzZXRmbihVTlVTRUQoUGFyYW0gcG0pLCBjaGFyICp4KQorewor ICAgIGlmICh4KSB7CisJaW50IGxlbiwgaTsKKworCXVubWV0YWZ5KHgsICZsZW4pOworCWlmIChs ZW4gPiAxKSB7CisJICAgIGxlbiA9IDE7CisJICAgIHp3YXJuKCJPbmx5IG9uZSBLRVlCT0FSRF9I QUNLIGNoYXJhY3RlciBjYW4gYmUgZGVmaW5lZCIpOyAgLyogY291bGQgYmUgY2hhbmdlZCBpZiBu ZWVkZWQgKi8KKwl9CisJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisJICAgIGlmICghaXNh c2NpaShTVE9VQyh4W2ldKSkpIHsKKwkJendhcm4oIktFWUJPQVJEX0hBQ0sgY2FuIG9ubHkgY29u dGFpbiBBU0NJSSBjaGFyYWN0ZXJzIik7CisJCXJldHVybjsKKwkgICAgfQorCX0KKwlrZXlib2Fy ZGhhY2tjaGFyID0gbGVuID8gU1RPVUMoeFswXSkgOiAnXDAnOworCWZyZWUoeCk7CisgICAgfSBl bHNlCisJa2V5Ym9hcmRoYWNrY2hhciA9ICdcMCc7Cit9CisKIC8qIEZ1bmN0aW9uIHRvIGdldCB2 YWx1ZSBmb3Igc3BlY2lhbCBwYXJhbWV0ZXIgYGhpc3RjaGFyJyAqLwogCiAvKiovCi0tIAoxLjYu My4zCgo= --001485eba62f0d6714047cea58a1--