From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 12385 invoked from network); 12 Nov 2023 21:11:08 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 12 Nov 2023 21:11:08 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1699823468; b=X56f3lkyzs9iG4rwrTOrBeXCyJUxc9TB9Zif3qPYv/3GRCz48C0KYrNGiW/7jy5SBpbD4uV05C 1TPAVMugO677/Iwl3KmyCt5lryn75LALnnR3xPlSXufE7KijwvJN82B3wt9i2k91ibm3MfBBQA 1JqcWhrZhiHmFYiIWTYROSVO1L7TfjjT+XgKE7dpm7l73TGOlXDh4JjuF1RdFSJMS5ccJKJDuQ 0EFV6rGNqZSaBCslQ7Xxifmo7upiWzRzonwQ5Xnd6UPBVpb2IWxGJIHryjugDyHNGXvuHw1HGt rXVmCsoeH1eeb+USgvK5KbekxjqU0tAvX/A/pZJaI3PlbA==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-lj1-f174.google.com) smtp.remote-ip=209.85.208.174; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1699823468; bh=nVwFm1bixnUVLVb2b65MQ+atzPoR++e9He7+bCy43iE=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=s2DINrSK1HM8vtvU8H4sZER4sEtGifKlPHmHm9rk1V56aJfGKxp13Iu0JDXSzahufTwEHbMtN/ a1elc5D/VxsMdzXOOv6CHXAJi4GzwaQq4+KEqQdbBKYSIVspIs/Z8ogP5NEZIN2rC2heb4QjWH JkpQpcXKSJFTDxzVLRlXsLj3ozQ1ZUfRycpb+aWfN6cUkba1vf6CBBhdLZU0wbHFv8wYnt038v 6sl4zudT2a0qgZJ2W3Z8txxon6+T2eRnbXV/ww7fn7CpI5Oqc9q9yRtsLbXRgJ27n9nsSsETfC 6Nnyjs+1yYqOd70fVReIVtQZJJDftZCie6Mq4ygQ89C+/w==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID :Date:From:In-Reply-To:References:MIME-Version:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=5UAw5FJLx5R4kzay1iIxk9dJqdIOdg+NODGucYUMq7k=; b=YEpXj0QmJe55uiQeQtTgPQxP2v P0QQGeFHQZkulVqRUW08KLmAkPeFQCT0vxdzNnL3McSVG8Erl/XYibdYEs77hNflDBX/FtGL1uHLH SuW7AYct0wLJy/uZqA+ww+Al5cuqbeNaJrBfLUQAx6riwmOQmNu7UrnPtXrLC8Cqtk47+Nv7+SnBy gJKxVMZdQ3auSAWk7wiZPHDA1obJAWUWdJUqE47XXi/pE9CuGjZ7iuuDV1ZBBv3bAFaBIDsEzW6kh ZoOXlIBrd5ZCXqoHz3/NJ5cAEgSysFEsBX7qSuKekLBkVnsFm1awVN7Q/p3pB5/FK+KfQtKbnqOj2 Ln5fCEkA==; Received: by zero.zsh.org with local id 1r2HjW-000Cth-4Z; Sun, 12 Nov 2023 21:11:06 +0000 Authentication-Results: zsh.org; iprev=pass (mail-lj1-f174.google.com) smtp.remote-ip=209.85.208.174; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-lj1-f174.google.com ([209.85.208.174]:51583) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1r2His-000CZx-Tw; Sun, 12 Nov 2023 21:10:27 +0000 Received: by mail-lj1-f174.google.com with SMTP id 38308e7fff4ca-2c50fbc218bso49917231fa.3 for ; Sun, 12 Nov 2023 13:10:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20230601.gappssmtp.com; s=20230601; t=1699823426; x=1700428226; darn=zsh.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=5UAw5FJLx5R4kzay1iIxk9dJqdIOdg+NODGucYUMq7k=; b=0uJqv+91bkDSGy7NdiqI5T6sN2AeYr7dledGMq79dl5svcvAGHiwZE+pxncNtHSUJz UC1Q0uvDl/tZxvHgR0AvGBV1Kuv4s0rk5MGm0y8yHrjarDxdwp9sU7YGV3JNtWoqVSyr WHmdmOurQ/2PJDaVG15hbiuecsPj4wC7iP7NZNF6yfNa/myYc9lltK9v6UK5LYelTYrG 9Zii1rnlJBcavdwXajGR5K0ZP+WmRysrOjMkfgF1YPjFOT06utPN/zUl5kTnF1EhB4Lq IvXXcJ7xAcY1uB7G8T/zSjuI14EML1SAZ7jrto21lfMM/bzUiTf4ll2DKNYO2Esqx8FM Dp/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699823426; x=1700428226; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=5UAw5FJLx5R4kzay1iIxk9dJqdIOdg+NODGucYUMq7k=; b=dgx4tAXF6OW9Veaefcf/rIJZQn+v19nsGXTmcPsob4njHkjEjU8OJTBWcirmoMbCdJ sm9/02p/Ra7EhJ9MI9DOOxefv2NaOkDyFtbvudJKT094gdq+fOvSYGLmhDgqJ8kr6aYR cxd6OSCDQYvuykAn8e1wvbPsgkBPl8e9J3D2PH8B7TRtb5pLvLJ4JCtruX07CpeAxRXP hMI8b63gNf7VTcrptj+3kJe2PGegZH3Ev6UhgmwucR10ZIFHO4aO43b3m99hE4AN1iFA OQ4LSVeX2d2PAnMoftlutZTWq9sEheTRIBoEHC9bYfOsZjzRWgDEwcbdERIzEdUb5g4O qxLQ== X-Gm-Message-State: AOJu0YwzhhXTsOiCWvLiKHAQ4uaSPhI0fLkcy4rFfSnnY2FwCnSXlqNd DbNdTfk/JFGDV2Df0qiFjq7J85EkFz73dE0xOSG/7Q== X-Google-Smtp-Source: AGHT+IHek1keWh9vaunLuDSu94xQy5lTewTHbMASRRKTaF/xQSFQIdPIpW95swrNdEDUApcDER65zS0wgITs2To27TQ= X-Received: by 2002:a2e:a99e:0:b0:2bc:b54b:c03f with SMTP id x30-20020a2ea99e000000b002bcb54bc03fmr4072423ljq.5.1699823425812; Sun, 12 Nov 2023 13:10:25 -0800 (PST) MIME-Version: 1.0 References: <1185563186.165566.1619896723304.ref@mail.yahoo.com> <1185563186.165566.1619896723304@mail.yahoo.com> <1293997275.666259.1620093977494@mail.yahoo.com> In-Reply-To: From: Bart Schaefer Date: Sun, 12 Nov 2023 13:10:14 -0800 Message-ID: Subject: Re: Suggested improvement for sticky-note To: vapnik spaknik Cc: Zsh Hackers List Content-Type: multipart/mixed; boundary="0000000000007b0c700609fafb5e" X-Seq: 52296 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: --0000000000007b0c700609fafb5e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Returning 2.5 years later ... > On Mon, May 3, 2021 at 7:06 PM vapnik spaknik wrote: > > > > adds options for selecting a background colour &/or blinking when creat= ing a new sticky note, and automatically adds the appropriate escape codes. The attached revision of sticky-note (which requires the current development version of zsh for ${| code } and namespaces) implements these in a more satisfactory way, by keeping a second file of assigned display attributes alongside the history-formatted file that stores the notes themselves. The assignment of colors, blinking, etc. is now activated by a key binding rather than a command line option, and is customizable by a style. I have not implemented "stacking" of styles at this point, so if you want to change black-on-yellow to blinking-white-on-red, you'll need a single display name for the latter. I'm sure there are undiscovered bugs with this, so mess around if intereste= d. On Sun, May 9, 2021 at 1:50=E2=80=AFPM Bart Schaefer wrote: > > There are a few reasonable suggestions here mixed with quite a number > of things that could be improved. Adding noflowcontrol to the setopts > is probably a good idea, and passing "-e" to vared should at least be > configurable. These are implemented in the attached version. Several vared options can now be controlled with zstyle :sticky-note vared-options ... Read the large comment at the top of the file for a description of what you can do, with some examples. This should eventually go into the contributions doc. > That also caused me to notice that interrupting > sticky-note with a keyboard interrupt (^C) can cause old notes to > disappear, so that should be fixed. I haven't tracked that down yet. Also yet to be fixed is expiring lines from the display file when the corresponding lines expire from the history. > Having the note blink while it is being edited is rather > weird/distracting even if you want it to blink when displayed later. The name of the current selected display style is displayed in the PREDISPLAY string during editing. As a final note, I found an error in the doc for "vared": ... If the -e flag is given, typing ^D (Control-D) on an empty line causes vared to exit immediately with a non-zero return value. This should say "in an empty note" not "empty line". It only works if the whole note would be blank. --0000000000007b0c700609fafb5e Content-Type: application/octet-stream; name=sticky-note Content-Disposition: attachment; filename=sticky-note Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lovyw8kf0 IyEvYmluL3pzaCAtZmkKIyBBIHpzaCBzdGlja3ktbm90ZSAoInBvc3QtaXQiKSBhcHBsaWNhdGlv bi4gIExvYWQgdGhpcyBmaWxlIGFzIGEgZnVuY3Rpb246CiMgICAgYXV0b2xvYWQgLVV6IHN0aWNr eS1ub3RlCiMKIyBJdCBtYXkgdGhlbiBiZSBib3VuZCBhcyBhIHdpZGdldDoKIyAgICB6bGUgLU4g c3RpY2t5LW5vdGUKIyBBbmQvb3IgcnVuIGFzIGEgY29tbWFuZDoKIyAgICBzdGlja3ktbm90ZQoj ICAgIHN0aWNreS1ub3RlIC1iCiMgICAgc3RpY2t5LW5vdGUgLWwgLi4uCiMgVGhlIC1iIG9wdGlv biBpcyBsaWtlICJ6ZWQgLWIiOiBpdCBpbnN0YWxscyBrZXltYXBzL2JpbmRpbmdzIG9ubHkuCiMg VXNlIHRoZSAtbCBvcHRpb24gdG8gbGlzdCBwcmV2aW91cyBzdGlja3kgbm90ZXMuICBNb3N0IG9w dGlvbnMgb2YgdGhlCiMgImZjIC1sIiBjb21tYW5kIGFyZSBzdXBwb3J0ZWQsIGZvciBzZWxlY3Rp bmcgd2hpY2ggbm90ZXMgdG8gZGlzcGxheS4KIyBJZiAic3RpY2t5LW5vdGUgLWwiIGlzIHJ1biBm cm9tIGluc2lkZSBhIHdpZGdldCwgdGhlIGN1cnNvciBpcyBtb3ZlZAojIHRvIHRoZSB0b3AgbGVm dCBvZiB0aGUgdGVybWluYWwgYmVmb3JlIGRpc3BsYXkgYW5kIHJldHVybmVkIHRvIGl0cwojIG9y aWdpbmFsIHBvc2l0aW9uIGFmdGVyIGRpc3BsYXkuICBUaGUgLWwgb3B0aW9uIGlzIGltcGxpY2l0 bHkgYWRkZWQKIyB3aGVuIHN0aWNreS1ub3RlIGlzIGNhbGxlZCBmcm9tIHpsZS1saW5lLWluaXQs IHRvIGF2b2lkIGluYWR2ZXJ0ZW50bHkKIyB0cmFwcGluZyB0aGUgdXNlciBpbnNpZGUgdGhlIG5v dGUgZWRpdG9yLgojCiMgT3RoZXJ3aXNlLCBpbnZva2UgdGhlIGxpbmUgZWRpdG9yIHdpdGggdGhl IHByZXZpb3VzIG5vdGVzIGF2YWlsYWJsZQojIGFzIGFuIGVkaXRvciBoaXN0b3J5LiAgVHdvIHF1 aWNrIHRhcHMgb24gdGhlIHJldHVybi9lbnRlciBrZXkgZmluaXNoCiMgdGhlIG5vdGUsIG9yIHlv dSBjYW4gdXNlIF5YXlcgYXMgdXN1YWwgKFpaIGluIHZpY21kIG1vZGUpLgoKIyBUaGUgYXBwbGlj YXRpb24gaXMgY29uZmlndXJlZCBieSBzZXZlcmFsIHpzdHlsZXMsIGFsbCB1c2luZyB0aGUgY29u dGV4dAojICI6c3RpY2t5LW5vdGUiLiAgVGhlIGNvbXBsZXRlIGxpc3Qgb2Ygc3R5bGVzIGlzIGFu ZCB0aGVpciB0eXBlcyBpczoKIyAgIG5vdGVmaWxlICAgICAgIHN0cmluZyAoZmlsZW5hbWUpCiMg ICBtYXhub3RlcyAgICAgICBudW1iZXIKIyAgIHZhcmVkLW9wdGlvbnMgIGFycmF5CiMgICB0aGVt ZSAgICAgICAgICBhc3NvY2lhdGl2ZSBhcnJheQojICAgZGlzcGxheSAgICAgICAgYXNzb2NpYXRp dmUgYXJyYXkKIyAgIGxpc3QtZGlzcGxheSAgIGJvb2xlYW4gKHN0cmluZyB0cnVlfHllc3xvbnwx IG9yIG5vdCBzZXQgZm9yIGZhbHNlKQoKIyBUaGUgZmlyc3QgdHdvIHN0eWxlcyBhcmUgIm5vdGVm aWxlIiBhbmQgIm1heG5vdGVzIiB0byBuYW1lIHRoZSBmaWxlIGluCiMgd2hpY2ggbm90ZXMgYXJl IHN0b3JlZCBhbmQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG5vdGVzIHRvIHJldGFpbjoKIyAgIHpz dHlsZSA6c3RpY2t5LW5vdGUgbm90ZWZpbGUgfi8uenN0aWNreQojICAgenN0eWxlIDpzdGlja3kt bm90ZSBtYXhub3RlcyAxMDAwCgojIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGFu IGVhcmxpZXIgdmVyc2lvbiwgdGhlIG5vdGVmaWxlIG1heQojIGFsc28gYmUgbmFtZWQgYnkgdGhl IFNUSUNLWUZJTEUgdmFyaWFibGUgKGRlZmF1bHRzIHRvICRIT01FLy56c3RpY2t5KS4KIyBUaGUg bnVtYmVyIG9mIG5vdGVzIHN0b3JlZCBtYXkgYmUgZ2l2ZW4gYnkgU1RJQ0tZU0laRSAoMTAwMCku CgojIFRoZSAidmFyZWQtb3B0aW9ucyIgc3R5bGUgbGlzdHMgb3B0aW9ucyBwYXNzZWQgdG8gdmFy ZWQgd2hlbiBhIG5vdGUKIyBpcyBlZGl0ZWQuIFRoZSB2YXJlZCBvcHRpb25zIC1BLCAtYSwgLWMs IC1NLCBhbmQgLW0gYXJlIGlnbm9yZWQuICBUaGUKIyB1c2VmdWwgb3B0aW9ucyBhcmUgLWksIC1m LCAtZSwgLXAsIC1yLCBhbmQgaW4gdW51c3VhbCBjYXNlcyAtdC4gIFRoZQojIG9wdGlvbnMgLXAg YW5kIC1yIHNob3VsZCB1c2UgdGhlIHNhbWUgc3ludGF4IGFzIHRoZSAicHJvbXB0IiB2YWx1ZSBv ZgojIHRoZSAidGhlbWUiIHN0eWxlLCBkZXNjcmliZWQgYmVsb3csIGFuZCB0aGUgLXIgb3B0aW9u IHNob3VsZC4gIEFzIGEKIyBzcGVjaWFsIGNhc2UsIHRvIG1ha2UgdGhlIG5vdGUgaGlzdG9yeSB1 bmF2YWlsYWJsZSB3aGVuIGVkaXRpbmcsCiMgaW5jbHVkZSAraCBpbiB0aGUgdmFyZWQtb3B0aW9u cyBzdHlsZS4gIEV4YW1wbGU6CiMgICB6c3R5bGUgOnN0aWNreS1ub3RlIHZhcmVkLW9wdGlvbnMg K2ggLWUgLXIgJVQKCiMgVGhlICJ0aGVtZSIgc3R5bGUgbWF5IGJlIHNldCB0byBjb250cm9sIHRo ZSBhcHBlYXJhbmNlIG9mIHRoZSBub3Rlcy4KIyBUaGUgc3R5bGUgaXMgYW4gYXNzb2NpYXRpdmUg YXJyYXk7IHRoZSBjdXJyZW50IHNldCBvZiB2YWx1ZXMgKGRlZmF1bHRzCiMgaW4gcGFyZW5zKSBh cmU6CiMgICBiZyAgICAgPT4gbmFtZSBvciBBTlNJIGVzY2FwZSBmb3IgYmFja2dyb3VuZCBjb2xv ciAoeWVsbG93KQojICAgZmcgICAgID0+IG5hbWUgb3IgQU5TSSBlc2NhcGUgZm9yIGZvcmVncm91 bmQgY29sb3IgKGJsYWNrKQojICAgY29sb3IgID0+IEFOU0kgZXNjYXBlIGZvciBjb2xvciBzY2hl bWUgKCR0aGVtZVtiZ10kdGhlbWVbZmddKQojICAgcmVzZXQgID0+IEFOU0kgZXNjYXBlIHRvIHJl c3RvcmUgIm5vcm1hbCIgY29sb3JzCiMgICBwcm9tcHQgPT4gUGFzc2VkIHRvIHZhcmVkLiAgTWF5 IHJlZmVyIHRvICV7JHt0aGVtZVtiZ119JX0gZXQgYWwuCiMgVmFsdWVzIGdpdmVuIGFzIG5hbWVz IGFyZSBsb29rZWQgdXAgaW4gdGhlICRiZyBhbmQgJGZnIGFycmF5cyBmcm9tIHRoZQojICJjb2xv cnMiIGZ1bmN0aW9uLiAgSWYgYSAiY29sb3IiIGZpZWxkIGlzIHNldCwgdGhlICJiZyIgYW5kICJm ZyIgZmllbGRzCiMgYXJlIG5vdCB1c2VkIHVubGVzcyByZWZlcmVuY2VkIGluICJwcm9tcHQiLiAg VGhlIHByb21wdCB2YWx1ZSBzaG91bGQKIyBiZSBzaW5nbGUtcXVvdGVkIGFuZCBtdXN0IHVzZSBh cHByb3ByaWF0ZSAley4uLiV9IHdyYXBwZXJzIGFyb3VuZAojIHplcm8td2lkdGggb3V0cHV0cyBz dWNoIGFzIGNvbG9yIGNoYW5nZXMuICBFeGFtcGxlOgojICAgenN0eWxlIDpzdGlja3ktbm90ZSB0 aGVtZSBcCiMgICAgIGJnIHJlZCBcCiMgICAgIGZnICRmZ19ib2xkW3llbGxvd10gXAojICAgICBw cm9tcHQgJyV7JHRoZW1lW2JnXSRmZ19ib2xkW3doaXRlXSV9UE9TVC1JVDoleyR0aGVtZVtyZXNl dF0lfScKIyBOT1RFOiAgWW91IG11c3QgZGVmaW5lIGVpdGhlciBjb2xvciBvciBib3RoIGZnIGFu ZCBiZywgYnV0IHRoZSB2YWx1ZXMKIyAkdGhlbWVbY29sb3JdIGFuZCAkdGhlbWVbcmVzZXRdIGFy ZSBhbHdheXMgZ2VuZXJhdGVkIGlmIG9taXR0ZWQuCgojIFRoZSAiZGlzcGxheSIgc3R5bGUgaXMg YW4gYXNzb2NpYXRpdmUgYXJyYXkgbWFwcGluZyBjdXN0b20gZGlzcGxheQojIGF0dHJpYnV0ZSBu YW1lcyB0byB0aGUgQU5TSSBjb2RlcyB0byBlbmFibGUgdGhlbS4gIFRoZSBzdHlsZSBtdXN0IHVz ZQojICIlcyIgYXQgdGhlIHBvc2l0aW9uIHdoZXJlIHRoZSBub3RlIHNob3VsZCBhcHBlYXIsIGFu ZCBtdXN0IGVuZCB3aXRoCiMgQU5TSSBjb2RlcyB0byBkaXNjb250aW51ZSB0aGUgc3R5bGUuICBB biBlbXB0eSB2YWx1ZSB0dXJucyBvZmYgdGhlCiMgZGlzcGxheSBmb3JtYXR0aW5nLiAgRm9yIGV4 YW1wbGU6CiMgICB6c3R5bGUgOnN0aWNreS1ub3RlIGRpc3BsYXkgXAojICAgICBub25lICIiIFwK IyAgICAgYmxpbmsgIiQoZWNob3RpIGJsaW5rKSVzJChlY2hvdGkgc2dyMCkiIFwKIyAgICAgcmV2 ZXJzZSAkJ1xlWzA3bSVzXGVbMDBtJwojIElmIHlvdSB1c2UgdGhpcyBzdHlsZSwgYSBmaWxlIG5h bWVkICRTVElDS1lGSUxFLmRpc3BsYXkgaXMgY3JlYXRlZAojIHRvIHByZXNlcnZlIHRoZSBkaXNw bGF5IGF0dHJpYnV0ZXMgb2YgdGhlIG5vdGVzIGluICRTVElDS1lGSUxFLgojIE5PVEU6IENoYW5n aW5nIHRoZSBkaXNwbGF5IHpzdHlsZSBkb2VzIG5vdCBjaGFuZ2UgdGhlIGRpc3BsYXkgb2YKIyBw cmV2aW91c2x5IGNyZWF0ZWQgbm90ZXMuICBUaGVyZSBpcyBubyBkZWZhdWx0IGRpc3BsYXkgc3R5 bGUuCgojIFRvIHNldCB0aGUgZGlzcGxheSBmb3IgYSBub3RlLCB0eXBlIGN0cmwteCBxdWVzdGlv bi1tYXJrICheWD8pIHRvCiMgcnVuIHRoZSB3aWRnZXQgIl9zdGlja3ktZGlzcGxheSIuICBXaGVu IGEgImRpc3BsYXkiIHN0eWxlIGlzIHNldCwgdGhpcwojIHJlcGxhY2VzIHRoZSBfY29tcGxldGVf aGVscCBiaW5kaW5nIGZyb20gdGhlIGRlZmF1bHQga2V5bWFwLiAgVGhlCiMga2V5bWFwIG5hbWVk ICJzdGlja3kiIG1heSBiZSBtb2RpZmllZCB0byBjdXN0b21pemUgdGhpcywgYWZ0ZXIgcnVubmlu ZwojICJzdGlja3ktbm90ZSAtYiIgdG8gaW5pdGlhbGl6ZS4KCiMgQnkgZGVmYXVsdCB0aGUgZGlz cGxheSBzdHlsZSBpcyBvbmx5IGFwcGxpZWQgd2hlbiAicG9zdGluZyIgbm90ZXMgdG8KIyB0aGUg dG9wIG9mIHRoZSBzY3JlZW4gdmlhIHRoZSBaTEUgd2lkZ2V0LCBidXQgY2FuIGJlIGFwcGxpZWQg dG8gdGhlCiMgb3V0cHV0IG9mICJzdGlja3ktbm90ZSAtbCIgYnkgc2V0dGluZyB0aGUgImxpc3Qt ZGlzcGxheSIgc3R5bGU6CiMgICB6c3R5bGUgOnN0aWNreS1ub3RlIGxpc3QtZGlzcGxheSB0cnVl CgojIEkgZW5jb3VyYWdlIGFsbCB5b3UgY3JlYXRpdmUgcGVvcGxlIHRvIGNvbnRyaWJ1dGUgZW5o YW5jZW1lbnRzIC4uLgoKZW11bGF0ZSAtTFIgenNoCgojIFRPRE86IENsZWFuIHRoaXMgdXAgYXMg bm90ZXMgZXhwaXJlIGZyb20gdGhlIFNUSUNLWUZJTEUuCnR5cGVzZXQgLWdBIC56c3RpY2t5LmRp c3BsYXkKCiMgU2V0IHVwIGtleWJpbmRpbmdzIChhZGFwdGVkIGZyb20gInplZCIpCmlmICEgYmlu ZGtleSAtTSBzdGlja3kgPiYgL2Rldi9udWxsCnRoZW4KICBiaW5ka2V5IC1OIHN0aWNreSBtYWlu CiAgYmluZGtleSAtTSBzdGlja3kgXlheVyBhY2NlcHQtbGluZQogIGJpbmRrZXkgLU0gc3RpY2t5 IF5NXk0gYWNjZXB0LWxpbmUJIyBUd28gcXVpY2sgUkVUcyBlbmRzIG5vdGUKICBiaW5ka2V5IC1N IHN0aWNreSBeTSBzZWxmLWluc2VydC11bm1ldGEKZmkKaWYgISBiaW5ka2V5IC1NIHN0aWNreS12 aWNtZCA+JiAvZGV2L251bGwgCnRoZW4KICBiaW5ka2V5IC1OIHN0aWNreS12aWNtZCB2aWNtZAog IGJpbmRrZXkgLU0gc3RpY2t5LXZpY21kIFpaIGFjY2VwdC1saW5lCmZpCmlmICEgZnVuY3Rpb25z IF9zdGlja3ktZGlzcGxheSA+JiAvZGV2L251bGwgJiYKICAgICB6c3R5bGUgLW0gOnN0aWNreS1u b3RlIGRpc3BsYXkgJyonCnRoZW4KICBmdW5jdGlvbiBfc3RpY2t5LWRpc3BsYXkgewogICAgaWYg W1sgLXogJGNvbXBzdGF0ZVt2YXJlZF0gXV0KICAgIHRoZW4KICAgICAgbG9jYWwgc2F2ZV9idWZm ZXI9JEJVRkZFUiBzYXZlX2N1cnNvcj0kQ1VSU09SCiAgICAgIEJVRkZFUj0KICAgICAgemxlIC1V ICQnXHQnCiAgICAgIHpsZSByZWN1cnNpdmUtZWRpdCAtSyBzdGlja3ktZGlzcGxheQogICAgICAu enN0aWNreS5kaXNwbGF5W2xhc3RdPSRCVUZGRVIKICAgICAgUFJFRElTUExBWT0iWyAkQlVGRkVS IF0gIgogICAgICBCVUZGRVI9JHNhdmVfYnVmZmVyIENVUlNPUj0kc2F2ZV9jdXJzb3IKICAgICAg emxlIHJlc2V0LXByb21wdAogICAgZWxzZQogICAgICB6c3R5bGUgLWEgOnN0aWNreS1ub3RlIGRp c3BsYXkgc3RpY2t5X2Rpc3BsYXlzCiAgICAgIGNvbXBhZGQgLXggIlByZXNzIFRBQiB0byBjaG9v c2UgZGlzcGxheSBtb2RlLCBFTlRFUiB0byBzZXQ6IiBcCgkgICAgICAtViBub3NvcnQgJHsuenN0 aWNreS5kaXNwbGF5W2xhc3RdfSBcCgkgICAgICAkeyR7KG9rKXN0aWNreV9kaXNwbGF5c306IyR7 LnpzdGlja3kuZGlzcGxheVtsYXN0XX19CiAgICAgIGNvbXBzdGF0ZVtpbnNlcnRdPW1lbnUKICAg IGZpCiAgfQogIHpsZSAtTiBfc3RpY2t5LWRpc3BsYXkKICBiaW5ka2V5IC1NIHN0aWNreSAnXlg/ JyBfc3RpY2t5LWRpc3BsYXkKICB6bGUgLUMgc3RpY2t5LWRpc3BsYXktY2hvaWNlcyBtZW51LWNv bXBsZXRlIF9zdGlja3ktZGlzcGxheQogIGJpbmRrZXkgLU4gc3RpY2t5LWRpc3BsYXkKICBiaW5k a2V5IC1NIHN0aWNreS1kaXNwbGF5ICQnXHQnIHN0aWNreS1kaXNwbGF5LWNob2ljZXMKICBiaW5k a2V5IC1NIHN0aWNreS1kaXNwbGF5IF5NIGFjY2VwdC1saW5lCmZpCgpbWyAiJDEiID09IC1iIF1d ICYmIHJldHVybiAwCgpzZXRvcHQgbm9mbG93Y29udHJvbCBub2JhbmdoaXN0IGV4dGVuZGVkaGlz dG9yeSBoaXN0aWdub3JlZHVwcwp6bW9kbG9hZCAtaSB6c2gvZGF0ZXRpbWUKCmxvY2FsIFNUSUNL WUZJTEU9JHtTVElDS1lGSUxFOi0kSE9NRS8uenN0aWNreX0KbG9jYWwgU1RJQ0tZU0laRT0ke1NU SUNLWVNJWkU6LTEwMDB9CmxvY2FsIFBSRURJU1BMQVkgc3RpY2t5IHN0aWNreWZpbGUgc3RpY2t5 c2l6ZQpsb2NhbCAtQSBzdGlja3lfZGlzcGxheXMgdmFyZWRfb3B0aW9ucwoKenN0eWxlIC1zIDpz dGlja3ktbm90ZSBub3RlZmlsZSBzdGlja3lmaWxlIHx8IHN0aWNreWZpbGU9JFNUSUNLWUZJTEUK enN0eWxlIC1zIDpzdGlja3ktbm90ZSBtYXhub3RlcyBzdGlja3lzaXplIHx8IHN0aWNreXNpemU9 JFNUSUNLWVNJWkUKCiMgUG9wdWxhdGUgb3B0aW9ucyB0byB2YXJlZApsb2NhbCAtYSB2MAppZiB6 c3R5bGUgLWEgOnN0aWNreS1ub3RlIHZhcmVkLW9wdGlvbnMgdjAKdGhlbgogIHYwWyR7djBbKGkp LWFdfV09KCkKICB2MFske3YwWyhpKS1BXX1dPSgpCiAgdjBbJHt2MFsoaSktY119XT0oKQogIGlm ICgoICR7djBbKEkpK2hdfSApKQogIHRoZW4KICAgIHYwWyR7djBbKGkpLWhdfV09KCkKICAgIHYw WyR7djBbKGkpK2hdfV09KCkKICBlbHNlCiAgICB2MCs9KC1oICcnKQogIGZpCiAgaWYgKCggJHt2 MFsoSSktZ119ICkpCiAgdGhlbgogICAgdjBbJHt2MFsoaSktZ119XT0oLWcgJycpCiAgZmkKICBp ZiAoKCAke3YwWyhJKS1lXX0gKSkKICB0aGVuCiAgICB2MFske3YwWyhpKS1lXX1dPSgtZSAnJykK ICBmaQogIHZhcmVkX29wdGlvbnM9KCAiJHYwW0BdIiApCmVsc2UKICB2YXJlZF9vcHRpb25zPSgt aCAnJykKZmkKOiAke3ZhcmVkX29wdGlvbnNbLWldOj11bmRlZmluZWQta2V5fQo6ICR7dmFyZWRf b3B0aW9uc1stZl06PXVuZGVmaW5lZC1rZXl9CjogJHt2YXJlZF9vcHRpb25zWy1NXTo6PXN0aWNr eX0KOiAke3ZhcmVkX29wdGlvbnNbLW1dOjo9c3RpY2t5LXZpY21kfQoKIyBMb29rIHVwIGNvbG9y IHRoZW1lCmxvY2FsIC1BIHRoZW1lCigoJCtiZyAmJiAkK2ZnKSkgfHwgeyBhdXRvbG9hZCAtVXog Y29sb3JzOyBjb2xvcnMgfQp6c3R5bGUgLW0gOnN0aWNreS1ub3RlIHRoZW1lICcqJyB8fCB7CiAg ICB6c3R5bGUgOnN0aWNreS1ub3RlIHRoZW1lIGJnIHllbGxvdyBmZyBibGFjawp9CnpzdHlsZSAt YSA6c3RpY2t5LW5vdGUgdGhlbWUgdGhlbWUKKCggJHsrYmdbJHRoZW1lW2JnXV19ICkpICYmIHRo ZW1lW2JnXT0kYmdbJHRoZW1lW2JnXV0KKCggJHsrZmdbJHRoZW1lW2ZnXV19ICkpICYmIHRoZW1l W2ZnXT0kZmdbJHRoZW1lW2ZnXV0KKCggJHsrdGhlbWVbY29sb3JdfSApKSB8fCB0aGVtZVtjb2xv cl09JHRoZW1lW2JnXSR0aGVtZVtmZ10KKCggJHsrdGhlbWVbcmVzZXRdfSApKSB8fCB0aGVtZVty ZXNldF09JHJlc2V0X2NvbG9yCigoICR7K3RoZW1lW3Byb21wdF19ICkpIHx8IHRoZW1lW3Byb21w dF09JHZhcmVkX29wdGlvbnNbLXBdCgp0aGVtZVtwcm9tcHRdPSIkeyhlKXRoZW1lW3Byb21wdF19 JXske3RoZW1lW2NvbG9yXX0lfSIKdmFyZWRfb3B0aW9uc1stcF09JHRoZW1lW3Byb21wdF0KCiMg TG9hZCBwZXItbm90ZSBkaXNwbGF5IHNldHRpbmdzCmlmIFtbIC16ICR7LnpzdGlja3kuZGlzcGxh eX0gJiYgLXIgJHN0aWNreWZpbGUuZGlzcGxheSBdXQp0aGVuCiAgc291cmNlICRzdGlja3lmaWxl LmRpc3BsYXkKZmkKCiMgSWYgaW52b2tlZCBhcyBhIHdpZGdldCwgYmVoYXZlIGEgYml0IGxpa2Ug cnVuLWhlbHAKaWYgemxlCnRoZW4KICB6bW9kbG9hZCAtaSB6c2gvcGFyYW1ldGVyCiAgaWYgW1sg JCogPT0gLSpsKiB8fCAkZnVuY3RyYWNlID09ICp6bGUtbGluZS1pbml0OiogXV0KICB0aGVuCiAg ICBsb2NhbCBudW0gc3RhbXAgY2VvbD0keyBlY2hvdGkgZWwgfQogICAgZmMgLWFwICRzdGlja3lm aWxlICRzdGlja3lzaXplICRzdGlja3lzaXplCiAgICBlY2hvdGkgY3VwICRMSU5FUyAxCiAgICB6 bGUgcmVzZXQtcHJvbXB0CiAgICBlY2hvdGkgc2MKICAgIGVjaG90aSBob21lCiAgICBwcmludCAt bnIgIiR0aGVtZVtjb2xvcl0iCiAgICBmYyAtdCAlcyAtbCAiJHtAOi0tMX0iIHwKICAgICAgd2hp bGUgcmVhZCAtciBudW0gc3RhbXAgc3RpY2t5CiAgICAgIGRvCglpZiBbWyAtbiAkey56c3RpY2t5 LmRpc3BsYXlbJHN0YW1wXX0gXV0KCXRoZW4KCSAgcHJpbnRmIC12IHN0aWNreSAiJHsuenN0aWNr eS5kaXNwbGF5WyRzdGFtcF19JHRoZW1lW2NvbG9yXSIgJHN0aWNreQoJZmkKCXByaW50ZiAlc1xc biAiJG51bSAgIiR7c3RpY2t5Ly8kJ1xcbicvJGNlb2wkJ1xuJ30kY2VvbAogICAgICBkb25lCiAg ICBwcmludCAtbnIgIiR0aGVtZVtyZXNldF0iCiAgICBlY2hvdGkgcmMKICBlbGlmIFtbICRDT05U RVhUID0gKGNvbnR8c2VsZWN0fHZhcmVkKSBdXQogIHRoZW4KICAgIHpsZSAtTSAiTm8gc3RpY2tp ZXMgZHVyaW5nICR7JHsoeilQUkVCVUZGRVJ9WzFdOi0kQ09OVEVYVH0sIHNvcnJ5IgogICAgemxl IC5iZWVwCiAgICB6bGUgLVIKICBlbHNlCiAgICB6bGUgLnB1c2gtbGluZQogICAgQlVGRkVSPXN0 aWNreS1ub3RlCiAgICB6bGUgLmFjY2VwdC1saW5lCiAgZmkKICByZXR1cm4gMApmaQoKIyBJbnZv a2VkIGFzIGEgY29tbWFuZCwgYmVoYXZlIGxpa2UgemVkLCBidXQgd3JpdGUgYSBoaXN0b3J5IGZp bGUKZmMgLWFwICRzdGlja3lmaWxlICRzdGlja3lzaXplICRzdGlja3lzaXplCgojIFdpdGggYSAt bCBvcHRpb24sIGxpc3QgdGhlIGV4aXN0aW5nIHN0aWNreSBub3RlcwppZiBbWyAiJCoiID09IC0q bCogXV0KdGhlbgogIGxvY2FsIG51bSBzdGFtcCBkaXNwbGF5CiAgcHJpbnQgLW5yICIkdGhlbWVb Y29sb3JdIgogICMgVXNlIHJlYWQvcHJpbnQgbG9vcCB0byBpbnRlcnBvbGF0ZSAiXG4iIGluIGhp c3RvcnkgbGluZXMKICBmYyAtdCAlcyAiJEAiIHwKICAgIHdoaWxlIHJlYWQgLXIgbnVtIHN0YW1w IHN0aWNreQogICAgZG8KICAgICAgaWYgenN0eWxlIC10IDpzdGlja3ktbm90ZSBsaXN0LWRpc3Bs YXkgJiYKCSAgW1sgLW4gJHsuenN0aWNreS5kaXNwbGF5WyRzdGFtcF19IF1dCiAgICAgIHRoZW4K CXByaW50ZiAtdiBzdGlja3kgIiR7LnpzdGlja3kuZGlzcGxheVskc3RhbXBdfSR0aGVtZVtjb2xv cl0iICRzdGlja3kKICAgICAgZmkKICAgICAgcHJpbnQgLS0gIiR7fCBzdHJmdGltZSAtcyBSRVBM WSAtbiAnJXggJUg6JU0nICRzdGFtcCB9ICAkc3RpY2t5IgogICAgZG9uZQogIHByaW50IC1uciAi JHRoZW1lW3Jlc2V0XSIKICByZXR1cm4gMApmaQoKIyBFZGl0IGEgbmV3IHN0aWNreSBub3RlIGFu ZCBhZGQgaXQgdG8gdGhlIHN0aWNreWZpbGUKd2hpbGUgdmFyZWQgJHsoa3YpdmFyZWRfb3B0aW9u c30gc3RpY2t5CmRvCiAgewogICAgaWYgW1sgLW4gIiRzdGlja3kiIF1dCiAgICB0aGVuCiAgICAg IHByaW50IC1zIC0tICIkc3RpY2t5IgogICAgICBmYyAtVyAmJiBTQVZFSElTVD0wCiAgICAgICMg RmlsZSBpcyB1cGRhdGVkIGJ1dCBpbnRlcm5hbCAiZmMgLWwiIGlzIG5vdCB5ZXQuICBHZXQgdGhl IHRpbWVzdGFtcC4KICAgICAgc3RhbXA9JHskeyR7fCBsb2NhbCBsaW5lOwoJCSAgd2hpbGUgcmVh ZCBsaW5lOyBkbyBSRVBMWT0kbGluZTsgZG9uZSA8JHN0aWNreWZpbGUgfSM6IH0lJToqfQogICAg ICBpZiBbWyAtbiAkc3RhbXAgJiYgLW4gJHsuenN0aWNreS5kaXNwbGF5W2xhc3RdfSAmJiAtbiAk c3RpY2t5X2Rpc3BsYXlzIF1dCiAgICAgIHRoZW4KCS56c3RpY2t5LmRpc3BsYXlbJHN0YW1wXT0k e3N0aWNreV9kaXNwbGF5c1skey56c3RpY2t5LmRpc3BsYXlbbGFzdF19XX0KICAgICAgICB0eXBl c2V0IC1wIC56c3RpY2t5LmRpc3BsYXkgPnwgJHN0aWNreWZpbGUuZGlzcGxheQogICAgICBmaQog ICAgZmkKICB9IGFsd2F5cyB7CiAgICB1bnNldCBzdGlja3lfZGlzcGxheXMKICAgICgoIFRSWV9C TE9DS19FUlJPUiA9IDAgKSkKICB9ICYmIGJyZWFrCiAgZWNobyAtbiAtZSAnXGEnCmRvbmUKcmV0 dXJuIDAK --0000000000007b0c700609fafb5e--