From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jim Porter Newsgroups: gmane.emacs.bugs Subject: bug#66756: 30.0.50; [PATCH] Improve discussion of 'let' in Elisp Introduction manual Date: Thu, 23 Nov 2023 13:04:01 -0800 Message-ID: <9239b6bd-b476-b6c1-aef9-245e439aee42@gmail.com> References: <3ade119d-0f0d-e60e-1bdc-9c7e02c1559c@gmail.com> <381836df-c16f-b3e7-d0c4-473290e165de@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------kuo0BZ5UmJ4lqgUpf01c05tQ" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="33498"; mail-complaints-to="usenet@ciao.gmane.io" Cc: eliz@gnu.org, 66756@debbugs.gnu.org To: rms@gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Thu Nov 23 22:05:25 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1r6Gt1-0008Wr-K7 for geb-bug-gnu-emacs@m.gmane-mx.org; Thu, 23 Nov 2023 22:05:23 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r6Gse-0006UP-Fw; Thu, 23 Nov 2023 16:05:00 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r6Gsc-0006U2-Bo for bug-gnu-emacs@gnu.org; Thu, 23 Nov 2023 16:04:58 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1r6Gsc-0004K8-4G for bug-gnu-emacs@gnu.org; Thu, 23 Nov 2023 16:04:58 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1r6Gsg-0000DB-53 for bug-gnu-emacs@gnu.org; Thu, 23 Nov 2023 16:05:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 23 Nov 2023 21:05:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 66756 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 66756-submit@debbugs.gnu.org id=B66756.1700773455740 (code B ref 66756); Thu, 23 Nov 2023 21:05:02 +0000 Original-Received: (at 66756) by debbugs.gnu.org; 23 Nov 2023 21:04:15 +0000 Original-Received: from localhost ([127.0.0.1]:35226 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r6Gru-0000Bs-70 for submit@debbugs.gnu.org; Thu, 23 Nov 2023 16:04:14 -0500 Original-Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]:51480) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r6Grs-0000BW-4Z for 66756@debbugs.gnu.org; Thu, 23 Nov 2023 16:04:12 -0500 Original-Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-1cf98f961e9so4291565ad.3 for <66756@debbugs.gnu.org>; Thu, 23 Nov 2023 13:04:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700773442; x=1701378242; darn=debbugs.gnu.org; h=in-reply-to:from:content-language:references:cc:to:subject :mime-version:date:message-id:from:to:cc:subject:date:message-id :reply-to; bh=sCaSlL3HVSC7s/l9nwmdxyHZAV9CNt0duaIAR8Ae59g=; b=VXGF8egtYv003E0/th76+cjnSarPaJEA63F3Se1/lluOGSSHabIu2lIG2O39w//i5W qY2eY3lE8rPFu/XxR4nNSN+Jac3WvkB7J0tee07nAOZEw2NfsqUL2abZCpTfSMUuYL0D uTdnjSwpsxXQ/l+0Qm7faY4cODL5CUvuQ6Bfnfr934nQeYEn2WJupCixytPv/JG+njME Q9ia9CBt9j4u+TvLMYm81ElfcqDbGf0hm/ILcmnOAG4G2uS5uYdgaE9QtHW0+KWyrZOO kKhNlvSahnzWPHDQBjCG2ZJyrIbeAmuehxm84pt+iyQlS2vYZSvjB6Ed4Mty2yxLM6FK uLSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700773442; x=1701378242; h=in-reply-to:from:content-language:references:cc:to:subject :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=sCaSlL3HVSC7s/l9nwmdxyHZAV9CNt0duaIAR8Ae59g=; b=GqPP/bPHhB0NvQZvMM+gOPQH3ws4b7vzt0G/crfwFsYNDHKfPCqoAUgE/fA2fLEM6Z q3TQW/VEvEw9mHGM8qpWxmnQxUOJiJDUMPzGILqTcfDcVYtqBGBpDaSjdqfGuBTbJM11 Od2YcREijOoHjWbWxAdj+VPZ4ZlShCrnNv2N0XNzdjsRaMnuxBxxpcwphk3h+0vDrIXg dv2QJU2RF/y0kkA4EyJ5XoKA3H73kgUTyzXpqgXZwuSKUjgCHoT5nAYvUnNG88D329WC tJ06vkVeulnWSu10NoxuVYPjD7GcsOAX46O4j0vrD4ANlJldSOv5se67E1R+n2jFLSUY GO2w== X-Gm-Message-State: AOJu0YyhDg1fIgOnngK0fC5XV9Igf0pmbO7+8gpmKc5p6OQrBt9j19mN /6gEEoZxw2Ng87eAnK0xQPc= X-Google-Smtp-Source: AGHT+IGZJAnoQCK5m/OuOhaConP3ohn34UdRRwaTsOvL9OuVGXdmMSqxf1uf55xjAWlNHR8mm/hv3Q== X-Received: by 2002:a17:903:2596:b0:1cf:8a98:3ae with SMTP id jb22-20020a170903259600b001cf8a9803aemr483709plb.68.1700773441997; Thu, 23 Nov 2023 13:04:01 -0800 (PST) Original-Received: from [192.168.1.2] (cpe-76-168-148-233.socal.res.rr.com. [76.168.148.233]) by smtp.googlemail.com with ESMTPSA id t15-20020a1709027fcf00b001c898328289sm1817712plb.158.2023.11.23.13.04.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 23 Nov 2023 13:04:01 -0800 (PST) Content-Language: en-US In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:274830 Archived-At: This is a multi-part message in MIME format. --------------kuo0BZ5UmJ4lqgUpf01c05tQ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 11/22/2023 6:57 PM, Richard Stallman wrote: > it could be good to add the following: [snip] > to show that `getx' accesses the current value of the global binding, > not the value that the global binding had when getx was defined. How about this? Instead of adding further examples, I made the existing ones just a bit more complex (I added another 'setq' after defining the function 'getx' to both examples). Then I explained specifically that in the lexical binding example, "... 'getx' sees the current global value of 'x'." Hopefully this strikes the right balance between being explicit and detailed about what's happening without adding too many twists and turns to the section. I wanted to stick with just two blocks of code in this section so that a reader who was skimming (or just reading quickly) could easily pick them out to compare and contrast with each other. Additional code blocks made this harder to do when I tried it. --------------kuo0BZ5UmJ4lqgUpf01c05tQ Content-Type: text/plain; charset=UTF-8; name="0001-Introduce-let-using-lexical-binding-in-the-Lisp-Intr.patch" Content-Disposition: attachment; filename*0="0001-Introduce-let-using-lexical-binding-in-the-Lisp-Intr.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmZGZhZTIxOWJlYzgyNTVlMTczZThlZjQ0OGYzYjQ5ZGU2ZmNjNzUzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFdlZCwgMjUgT2N0IDIwMjMgMjA6NDM6NTcgLTA3MDAKU3ViamVjdDogW1BB VENIXSBJbnRyb2R1Y2UgJ2xldCcgdXNpbmcgbGV4aWNhbCBiaW5kaW5nIGluIHRoZSBMaXNw CiBJbnRyb2R1Y3Rpb24KCiogZG9jL2xpc3BpbnRyby9lbWFjcy1saXNwLWludHJvLnRleGkg KFByZXZlbnQgY29uZnVzaW9uKTogUmV3b3JrIHRoZQpleHBsYW5hdGlvbiB0byBkaXNjdXNz IGhvdyB0aGluZ3Mgd29yayB1bmRlciBsZXhpY2FsIGJpbmRpbmcuCihIb3cgbGV0IEJpbmRz IFZhcmlhYmxlcyk6IERlc2NyaWJlIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGxleGljYWwK YW5kIGR5bmFtaWMgYmluZGluZyAoaW5jbHVkaW5nIGhvdyB0byBjb25maWd1cmUgaXQpLgoo ZGVmdmFyKTogTWVudGlvbiB0aGF0ICdkZWZ2YXInIGRlY2xhcmVzIHZhcmlhYmxlcyBhcyBh bHdheXMKZHluYW1pY2FsbHktYm91bmQgKGJ1ZyM2Njc1NikuCi0tLQogZG9jL2xpc3BpbnRy by9lbWFjcy1saXNwLWludHJvLnRleGkgfCAxNDIgKysrKysrKysrKysrKysrKysrKysrKyst LS0tLQogMSBmaWxlIGNoYW5nZWQsIDExOSBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2MvbGlzcGludHJvL2VtYWNzLWxpc3AtaW50cm8udGV4aSBi L2RvYy9saXNwaW50cm8vZW1hY3MtbGlzcC1pbnRyby50ZXhpCmluZGV4IGM1YjMzYWM1ZWFh Li45MjI4N2E0MTEwYyAxMDA2NDQKLS0tIGEvZG9jL2xpc3BpbnRyby9lbWFjcy1saXNwLWlu dHJvLnRleGkKKysrIGIvZG9jL2xpc3BpbnRyby9lbWFjcy1saXNwLWludHJvLnRleGkKQEAg LTM1OTEsNiArMzU5MSw3IEBAIGxldAogKiBQYXJ0cyBvZiBsZXQgRXhwcmVzc2lvbjo6CiAq IFNhbXBsZSBsZXQgRXhwcmVzc2lvbjo6CiAqIFVuaW5pdGlhbGl6ZWQgbGV0IFZhcmlhYmxl czo6CisqIEhvdyBsZXQgQmluZHMgVmFyaWFibGVzOjoKIEBlbmQgbWVudQogCiBAaWZub3R0 ZXgKQEAgLTM2MDEsMjUgKzM2MDIsMjIgQEAgUHJldmVudCBjb25mdXNpb24KIEBjaW5kZXgg QHNhbXB7bG9jYWwgdmFyaWFibGV9IGRlZmluZWQKIEBjaW5kZXggQHNhbXB7dmFyaWFibGUs IGxvY2FsfSwgZGVmaW5lZAogVGhlIEBjb2Rle2xldH0gc3BlY2lhbCBmb3JtIHByZXZlbnRz IGNvbmZ1c2lvbi4gIEBjb2Rle2xldH0gY3JlYXRlcyBhCi1uYW1lIGZvciBhIEBkZm57bG9j YWwgdmFyaWFibGV9IHRoYXQgb3ZlcnNoYWRvd3MgYW55IHVzZSBvZiB0aGUgc2FtZQotbmFt ZSBvdXRzaWRlIHRoZSBAY29kZXtsZXR9IGV4cHJlc3Npb24uICBUaGlzIGlzIGxpa2UgdW5k ZXJzdGFuZGluZwotdGhhdCB3aGVuZXZlciB5b3VyIGhvc3QgcmVmZXJzIHRvIGBgdGhlIGhv dXNlJycsIGhlIG1lYW5zIGhpcyBob3VzZSwgbm90Ci15b3Vycy4gIChTeW1ib2xzIHVzZWQg aW4gYXJndW1lbnQgbGlzdHMgd29yayB0aGUgc2FtZSB3YXkuCituYW1lIGZvciBhIEBkZm57 bG9jYWwgdmFyaWFibGV9IHRoYXQgb3ZlcnJpZGVzIGFueSB1c2Ugb2YgdGhlIHNhbWUKK25h bWUgb3V0c2lkZSB0aGUgQGNvZGV7bGV0fSBleHByZXNzaW9uIChpbiBjb21wdXRlciBzY2ll bmNlIGphcmdvbiwgd2UKK2NhbGwgdGhpcyBgYGJpbmRpbmcnJyB0aGUgdmFyaWFibGUpLiAg VGhpcyBpcyBsaWtlIHVuZGVyc3RhbmRpbmcgdGhhdAoraW4geW91ciBob3N0J3MgaG9tZSwg d2hlbmV2ZXIgaGUgcmVmZXJzIHRvIGBgdGhlIGhvdXNlJycsIGhlIG1lYW5zIGhpcworaG91 c2UsIG5vdCB5b3Vycy4gIChTeW1ib2xzIHVzZWQgaW4gYXJndW1lbnQgbGlzdHMgd29yayB0 aGUgc2FtZSB3YXkuCiBAeHJlZntkZWZ1biwgLCBUaGUgQGNvZGV7ZGVmdW59IE1hY3JvfS4p CiAKLUxvY2FsIHZhcmlhYmxlcyBjcmVhdGVkIGJ5IGEgQGNvZGV7bGV0fSBleHByZXNzaW9u IHJldGFpbiB0aGVpciB2YWx1ZQotQGVtcGh7b25seX0gd2l0aGluIHRoZSBAY29kZXtsZXR9 IGV4cHJlc3Npb24gaXRzZWxmIChhbmQgd2l0aGluCi1leHByZXNzaW9ucyBjYWxsZWQgd2l0 aGluIHRoZSBAY29kZXtsZXR9IGV4cHJlc3Npb24pOyB0aGUgbG9jYWwKLXZhcmlhYmxlcyBo YXZlIG5vIGVmZmVjdCBvdXRzaWRlIHRoZSBAY29kZXtsZXR9IGV4cHJlc3Npb24uCi0KLUFu b3RoZXIgd2F5IHRvIHRoaW5rIGFib3V0IEBjb2Rle2xldH0gaXMgdGhhdCBpdCBpcyBsaWtl IGEgQGNvZGV7c2V0cX0KLXRoYXQgaXMgdGVtcG9yYXJ5IGFuZCBsb2NhbC4gIFRoZSB2YWx1 ZXMgc2V0IGJ5IEBjb2Rle2xldH0gYXJlCi1hdXRvbWF0aWNhbGx5IHVuZG9uZSB3aGVuIHRo ZSBAY29kZXtsZXR9IGlzIGZpbmlzaGVkLiAgVGhlIHNldHRpbmcKLW9ubHkgYWZmZWN0cyBl eHByZXNzaW9ucyB0aGF0IGFyZSBpbnNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgQGNvZGV7bGV0 fQotZXhwcmVzc2lvbi4gIEluIGNvbXB1dGVyIHNjaWVuY2UgamFyZ29uLCB3ZSB3b3VsZCBz YXkgdGhlIGJpbmRpbmcgb2YKLWEgc3ltYm9sIGlzIHZpc2libGUgb25seSBpbiBmdW5jdGlv bnMgY2FsbGVkIGluIHRoZSBAY29kZXtsZXR9IGZvcm07Ci1pbiBFbWFjcyBMaXNwLCB0aGUg ZGVmYXVsdCBzY29waW5nIGlzIGR5bmFtaWMsIG5vdCBsZXhpY2FsLiAgKFRoZQotbm9uLWRl ZmF1bHQgbGV4aWNhbCBiaW5kaW5nIGlzIG5vdCBkaXNjdXNzZWQgaW4gdGhpcyBtYW51YWwu KQorQW5vdGhlciB3YXkgdG8gdGhpbmsgYWJvdXQgQGNvZGV7bGV0fSBpcyB0aGF0IGl0IGRl ZmluZXMgYSBwbGFjZSBpbgoreW91ciBjb2RlIHdoZXJlIHRoZSB2YXJpYWJsZXMgeW91IG5h bWVkIGhhdmUgdGhlaXIgb3duIGxvY2FsIG1lYW5pbmcuCitPdXRzaWRlIG9mIHRoZSBAY29k ZXtsZXR9IGJvZHksIHRoZXkgaGF2ZSBhbm90aGVyIG1lYW5pbmcgKG9yIHRoZXkgbWF5Citu b3QgYmUgZGVmaW5lZCBhdCBhbGwpLiAgVGhpcyBtZWFucyB0aGF0IGluc2lkZSB0aGUgQGNv ZGV7bGV0fSBib2R5LAorY2FsbGluZyBAY29kZXtzZXRxfSBmb3IgYSB2YXJpYWJsZSBuYW1l ZCBieSB0aGUgQGNvZGV7bGV0fSBleHByZXNzaW9uCit3aWxsIHNldCB0aGUgdmFsdWUgb2Yg dGhlIEBlbXBoe2xvY2FsfSB2YXJpYWJsZSBvZiB0aGF0IG5hbWUuICBUaGlzCithbHNvIG1l YW5zIHRoYXQgb3V0c2lkZSBvZiB0aGUgQGNvZGV7bGV0fSBib2R5LCBjYWxsaW5nIEBjb2Rl e3NldHF9Citmb3IgYSB2YXJpYWJsZSBuYW1lZCBieSB0aGUgQGNvZGV7bGV0fSBleHByZXNz aW9uIHdpbGwgQGVtcGh7bm90fQorYWZmZWN0IHRoYXQgbG9jYWwgdmFyaWFibGUuCiAKIEBj b2Rle2xldH0gY2FuIGNyZWF0ZSBtb3JlIHRoYW4gb25lIHZhcmlhYmxlIGF0IG9uY2UuICBB bHNvLAogQGNvZGV7bGV0fSBnaXZlcyBlYWNoIHZhcmlhYmxlIGl0IGNyZWF0ZXMgYW4gaW5p dGlhbCB2YWx1ZSwgZWl0aGVyIGEKQEAgLTM3NzksNiArMzc3NywxMDIgQEAgVW5pbml0aWFs aXplZCBsZXQgVmFyaWFibGVzCiBAc2FtcHslc30uKSAgVGhlIGZvdXIgdmFyaWFibGVzIGFz IGEgZ3JvdXAgYXJlIHB1dCBpbnRvIGEgbGlzdCB0bwogZGVsaW1pdCB0aGVtIGZyb20gdGhl IGJvZHkgb2YgdGhlIEBjb2Rle2xldH0uCiAKK0Bub2RlIEhvdyBsZXQgQmluZHMgVmFyaWFi bGVzCitAc3Vic2VjdGlvbiBIb3cgQGNvZGV7bGV0fSBCaW5kcyBWYXJpYWJsZXMKK0BjaW5k ZXggTGV4aWNhbCBiaW5kaW5nCitAY2luZGV4IEJpbmRpbmcsIGxleGljYWwKK0BjaW5kZXgg RHluYW1pYyBiaW5kaW5nCitAY2luZGV4IEJpbmRpbmcsIGR5bmFtaWMKKworRW1hY3MgTGlz cCBzdXBwb3J0cyB0d28gZGlmZmVyZW50IHdheXMgb2YgYmluZGluZyB2YXJpYWJsZSBuYW1l cyB0bwordGhlaXIgdmFsdWVzLiAgVGhlc2Ugd2F5cyBhZmZlY3QgdGhlIHBhcnRzIG9mIHlv dXIgcHJvZ3JhbSB3aGVyZSBhCitwYXJ0aWN1bGFyIGJpbmRpbmcgaXMgdmFsaWQgKGluIGNv bXB1dGVyIHNjaWVuY2UgamFyZ29uLCB3ZSBjYWxsIHRoZXNlCitwYXJ0cyBhIGBgc2NvcGUn JykuICBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCBFbWFjcyBMaXNwIHVzZXMgYSBmb3JtIG9m Cit2YXJpYWJsZSBiaW5kaW5nIGNhbGxlZCBgYGR5bmFtaWMgYmluZGluZycnIGJ5IGRlZmF1 bHQuICBIb3dldmVyLCBpbgordGhpcyBtYW51YWwgd2UgZGlzY3VzcyB0aGUgcHJlZmVycmVk IGZvcm0gb2YgYmluZGluZywgY2FsbGVkIGBgbGV4aWNhbAorYmluZGluZycnLCB1bmxlc3Mg b3RoZXJ3aXNlIG5vdGVkIChpbiB0aGUgZnV0dXJlLCB0aGUgRW1hY3MKK21haW50YWluZXJz IHBsYW4gdG8gY2hhbmdlIHRoZSBkZWZhdWx0IHRvIGxleGljYWwgYmluZGluZykuICBJZiB5 b3UKK2hhdmUgcHJvZ3JhbW1lZCBpbiBvdGhlciBsYW5ndWFnZXMgYmVmb3JlLCB5b3UncmUg bGlrZWx5IGFscmVhZHkKK2ZhbWlsaWFyIHdpdGggaG93IGxleGljYWwgYmluZGluZyBiZWhh dmVzLgorCitJbiBvcmRlciB0byB1c2UgbGV4aWNhbCBiaW5kaW5nIGluIGEgcHJvZ3JhbSwg eW91IHNob3VsZCBhZGQgdGhpcyB0bwordGhlIGZpcnN0IGxpbmUgb2YgeW91ciBFbWFjcyBM aXNwIGZpbGU6CisKK0BleGFtcGxlCis7OzsgLSotIGxleGljYWwtYmluZGluZzogdCAtKi0K K0BlbmQgZXhhbXBsZQorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzLCBAcHhy ZWZ7U2VsZWN0aW5nIExpc3AgRGlhbGVjdCwgLCAsCitlbGlzcCwgVGhlIEVtYWNzIExpc3Ag UmVmZXJlbmNlIE1hbnVhbH0uCisKK0FzIHdlIGRpc2N1c3NlZCBiZWZvcmUsIHVuZGVyIGxl eGljYWwgYmluZGluZywgQGNvZGV7bGV0fSBkZWZpbmVzIGEKK0BlbXBoe3BsYWNlfSBpbiB5 b3VyIGNvZGUgd2hlcmUgdGhlIHZhcmlhYmxlcyBoYXZlIHRoZWlyIG93biBsb2NhbAorbWVh bmluZy4gIFVuZGVyIGR5bmFtaWMgYmluZGluZywgdGhlIHJ1bGVzIGFyZSBkaWZmZXJlbnQ6 IGluc3RlYWQsIHlvdQorYXJlIGRlZmluaW5nIGEgQGVtcGh7dGltZX0gaW4geW91ciBjb2Rl IHdoZW4gdGhlIHZhcmlhYmxlcyBoYXZlIHRoZWlyCitvd24gbG9jYWwgbWVhbmluZy4KKwor QW5vdGhlciB3YXkgdG8gdGhpbmsgYWJvdXQgQGNvZGV7bGV0fSB3aGVuIHVzaW5nIGR5bmFt aWMgYmluZGluZyBpcwordGhhdCBpdCBpcyBsaWtlIGEgQGNvZGV7c2V0cX0gdGhhdCBpcyB0 ZW1wb3JhcnkgYW5kIGxvY2FsLiAgVGhlIHZhbHVlcworc2V0IGJ5IEBjb2Rle2xldH0gYXJl IGF1dG9tYXRpY2FsbHkgdW5kb25lIHdoZW4gdGhlIEBjb2Rle2xldH0gaXMKK2ZpbmlzaGVk LiAgVGhlIHNldHRpbmcgb25seSBhZmZlY3RzIGV4cHJlc3Npb25zIHRoYXQgYXJlIGluc2lk ZSB0aGUKK2JvdW5kcyBvZiB0aGUgQGNvZGV7bGV0fSBleHByZXNzaW9uLgorCitJbiBzb21l IGNhc2VzLCBib3RoIGxleGljYWwgYW5kIGR5bmFtaWMgYmluZGluZyBiZWhhdmUgaWRlbnRp Y2FsbHkuCitIb3dldmVyLCBpbiBvdGhlciBjYXNlcywgdGhleSBjYW4gY2hhbmdlIHRoZSBt ZWFuaW5nIG9mIHlvdXIgcHJvZ3JhbS4KK0ZvciBleGFtcGxlLCB1bmRlciBsZXhpY2FsIGJp bmRpbmcsIGlmIHlvdSBjYWxsIGEgZnVuY3Rpb24gaW5zaWRlIG9mIGEKK0Bjb2Rle2xldH0g Ym9keSwgdGhhdCBmdW5jdGlvbidzIGJvZHkgd291bGQgYmUgdW5hYmxlIHRvIGBgc2VlJycg KG9yCittb2RpZnkpIHRoZSB2YWx1ZSBvZiBhIGxvY2FsIHZhcmlhYmxlIGZyb20gdGhlIEBj b2Rle2xldH0gZXhwcmVzc2lvbjoKKworQGV4YW1wbGUKKzs7OyAtKi0gbGV4aWNhbC1iaW5k aW5nOiB0IC0qLQorCisoc2V0cSB4IDApCisKKyhkZWZ1biBnZXR4ICgpCisgIHgpCisKKyhz ZXRxIHggMSkKKworKGxldCAoKHggMikpCisgIChnZXR4KSkKKyAgICAgQHJlc3VsdHt9IDEK K0BlbmQgZXhhbXBsZQorCitAbm9pbmRlbnQKK0hlcmUsIHRoZSByZXN1bHQgb2YgQGNvZGV7 KGdldHgpfSBpcyBAY29kZXsxfS4gIFVuZGVyIGxleGljYWwgYmluZGluZywKK0Bjb2Rle2dl dHh9IGRvZXNuJ3Qgc2VlIHRoZSB2YWx1ZSBmcm9tIG91ciBAY29kZXtsZXR9IGV4cHJlc3Np b24uCitUaGF0J3MgYmVjYXVzZSBpdCBoYXBwZW5zIGluIGEgZGlmZmVyZW50IEBlbXBoe3Bs YWNlfSB0aGFuIHRoZQorQGNvZGV7bGV0fSBib2R5LiAgSW5zdGVhZCwgQGNvZGV7Z2V0eH0g c2VlcyB0aGUgY3VycmVudCBnbG9iYWwgdmFsdWUKK29mIEBjb2Rle3h9LgorCitJZiB3ZSB1 c2UgZHluYW1pYyBiaW5kaW5nIGluc3RlYWQsIHRoZSBiZWhhdmlvciBpcyBkaWZmZXJlbnQ6 CisKK0BleGFtcGxlCis7OzsgLSotIGxleGljYWwtYmluZGluZzogbmlsIC0qLQorCisoc2V0 cSB4IDApCisKKyhkZWZ1biBnZXR4ICgpCisgIHgpCisKKyhzZXRxIHggMSkKKworKGxldCAo KHggMikpCisgIChnZXR4KSkKKyAgICAgQHJlc3VsdHt9IDIKK0BlbmQgZXhhbXBsZQorCitA bm9pZGVudAorTm93LCB0aGUgcmVzdWx0IG9mIEBjb2RleyhnZXR4KX0gaXMgQGNvZGV7Mn0h ICBUaGF0J3MgYmVjYXVzZSB1bmRlcgorZHluYW1pYyBiaW5kaW5nLCB3aGVuIEBjb2Rle2dl dHh9IGxvb2tzIGZvciB0aGUgdmFsdWUgb2YgQGNvZGV7eH0sIGl0CitzZWVzIHRoZSB2YWx1 ZSB3ZSBzZXQgaW4gb3VyIEBjb2Rle2xldH0gZXhwcmVzc2lvbi4gIEluIG90aGVyIHdvcmRz LAordGhlIGNhbGwgdG8gQGNvZGV7Z2V0eH0gaGFwcGVucyBkdXJpbmcgdGhlIEBlbXBoe3Rp bWV9IHdoZW4gb3VyCitAY29kZXtsZXR9IGV4cHJlc3Npb24gaXMgYWN0aXZlLgorCisoU29t ZSB2YXJpYWJsZXMgYXJlIGFsc28gYGBzcGVjaWFsJycsIGFuZCB0aGV5IGFyZSBhbHdheXMg ZHluYW1pY2FsbHkKK2JvdW5kIGV2ZW4gd2hlbiBAY29kZXtsZXhpY2FsLWJpbmRpbmd9IGlz IEBjb2Rle3R9LiAgQHhyZWZ7ZGVmdmFyLCAsCitJbml0aWFsaXppbmcgYSBWYXJpYWJsZSB3 aXRoIEBjb2Rle2RlZnZhcn19LikKKwogQG5vZGUgaWYKIEBzZWN0aW9uIFRoZSBAY29kZXtp Zn0gU3BlY2lhbCBGb3JtCiBAZmluZGV4IGlmCkBAIC05MTMwLDEyICs5MjI0LDE0IEBAIGRl ZnZhcgogZ2l2ZW4gYW4gaW5pdGlhbCB2YWx1ZSBieSB1c2luZyB0aGUgQGNvZGV7ZGVmdmFy fSBzcGVjaWFsIGZvcm0uICBUaGUKIG5hbWUgY29tZXMgZnJvbSBgYGRlZmluZSB2YXJpYWJs ZScnLgogCi1UaGUgQGNvZGV7ZGVmdmFyfSBzcGVjaWFsIGZvcm0gaXMgc2ltaWxhciB0byBA Y29kZXtzZXRxfSBpbiB0aGF0IGl0IHNldHMKLXRoZSB2YWx1ZSBvZiBhIHZhcmlhYmxlLiAg SXQgaXMgdW5saWtlIEBjb2Rle3NldHF9IGluIHR3byB3YXlzOiBmaXJzdCwKLWl0IG9ubHkg c2V0cyB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIGlmIHRoZSB2YXJpYWJsZSBkb2VzIG5v dCBhbHJlYWR5Ci1oYXZlIGEgdmFsdWUuICBJZiB0aGUgdmFyaWFibGUgYWxyZWFkeSBoYXMg YSB2YWx1ZSwgQGNvZGV7ZGVmdmFyfSBkb2VzCi1ub3Qgb3ZlcnJpZGUgdGhlIGV4aXN0aW5n IHZhbHVlLiAgU2Vjb25kLCBAY29kZXtkZWZ2YXJ9IGhhcyBhCi1kb2N1bWVudGF0aW9uIHN0 cmluZy4KK1RoZSBAY29kZXtkZWZ2YXJ9IHNwZWNpYWwgZm9ybSBpcyBzaW1pbGFyIHRvIEBj b2Rle3NldHF9IGluIHRoYXQgaXQKK3NldHMgdGhlIHZhbHVlIG9mIGEgdmFyaWFibGUuICBJ dCBpcyB1bmxpa2UgQGNvZGV7c2V0cX0gaW4gdGhyZWUgd2F5czoKK2ZpcnN0LCBpdCBvbmx5 IHNldHMgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSBpZiB0aGUgdmFyaWFibGUgZG9lcyBu b3QKK2FscmVhZHkgaGF2ZSBhIHZhbHVlLiAgSWYgdGhlIHZhcmlhYmxlIGFscmVhZHkgaGFz IGEgdmFsdWUsCitAY29kZXtkZWZ2YXJ9IGRvZXMgbm90IG92ZXJyaWRlIHRoZSBleGlzdGlu ZyB2YWx1ZS4gIFNlY29uZCwgaXQgbWFya3MKK3RoZSB2YXJpYWJsZSBhcyBgYHNwZWNpYWwn JyBzbyB0aGF0IGl0IGlzIGFsd2F5cyBkeW5hbWljYWxseSBib3VuZCwKK2V2ZW4gd2hlbiBA Y29kZXtsZXhpY2FsLWJpbmRpbmd9IGlzIEBjb2Rle3R9IChAcHhyZWZ7SG93IGxldCBCaW5k cworVmFyaWFibGVzfSkuICBUaGlyZCwgQGNvZGV7ZGVmdmFyfSBoYXMgYSBkb2N1bWVudGF0 aW9uIHN0cmluZy4KIAogKFRoZXJlIGlzIGEgcmVsYXRlZCBtYWNybywgQGNvZGV7ZGVmY3Vz dG9tfSwgZGVzaWduZWQgZm9yIHZhcmlhYmxlcwogdGhhdCBwZW9wbGUgY3VzdG9taXplLiAg SXQgaGFzIG1vcmUgZmVhdHVyZXMgdGhhbiBAY29kZXtkZWZ2YXJ9LgotLSAKMi4yNS4xCgo= --------------kuo0BZ5UmJ4lqgUpf01c05tQ--