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#51622: 29.0.50; [PATCH v2] Abbreviate remote home directories in `abbreviate-file-name' Date: Sat, 13 Nov 2021 18:10:50 -0800 Message-ID: <9c2f6b1b-9091-3996-e414-0de4b1618f7f@gmail.com> References: <5ac0b5f3-302c-2f96-771c-8d38088aa573@gmail.com> <87mtmhmh60.fsf@gmx.de> <87a6ihchbo.fsf@gmx.de> <87sfw7u7zw.fsf@gmx.de> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------815EB32426E180BBE894AFA8" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="23168"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 51622@debbugs.gnu.org To: Michael Albinus Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Nov 14 03:12:12 2021 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 1mm507-0005nI-N3 for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 14 Nov 2021 03:12:11 +0100 Original-Received: from localhost ([::1]:35838 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mm506-0006u2-1i for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 13 Nov 2021 21:12:10 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:48514) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mm4zy-0006tt-JO for bug-gnu-emacs@gnu.org; Sat, 13 Nov 2021 21:12:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:37102) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mm4zx-0005lh-VY for bug-gnu-emacs@gnu.org; Sat, 13 Nov 2021 21:12:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mm4zx-0005Dh-Jo for bug-gnu-emacs@gnu.org; Sat, 13 Nov 2021 21:12:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Jim Porter Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 14 Nov 2021 02:12:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 51622 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 51622-submit@debbugs.gnu.org id=B51622.163685586319995 (code B ref 51622); Sun, 14 Nov 2021 02:12:01 +0000 Original-Received: (at 51622) by debbugs.gnu.org; 14 Nov 2021 02:11:03 +0000 Original-Received: from localhost ([127.0.0.1]:48648 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mm4z0-0005CG-91 for submit@debbugs.gnu.org; Sat, 13 Nov 2021 21:11:03 -0500 Original-Received: from mail-pj1-f49.google.com ([209.85.216.49]:51064) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mm4yw-0005Bq-6p for 51622@debbugs.gnu.org; Sat, 13 Nov 2021 21:11:00 -0500 Original-Received: by mail-pj1-f49.google.com with SMTP id x7so9804764pjn.0 for <51622@debbugs.gnu.org>; Sat, 13 Nov 2021 18:10:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:cc:references:from:message-id:date:mime-version :in-reply-to:content-language; bh=1TYUrrSAfHxfWRWFqH8pZkm295Sve84c5tAxVD7l5RM=; b=P0z7L1tZp8oMOO5wCBQ3/jEqIOOQhbJGdNuRgr0nuNh7oWxyLy9PuzQXxCVddax5Pd iZzGdKYPmOnHA34BetNeVDPBAErAfs0xwS8J1ytUKja1wevN9HpLRIY9hb4zoaJPvG17 QVrDwdHd75Uu9rJ+r1Uf7kjCYkTGiljzZjsqa1/mwMIdOFnmLf/AuqCKmDA6MbyLKwuP 48qlfAc0cl321Qw36GgUnkYcNay/AktbJVPq9GtgdpaeB22/5YY3d7OnzRtwsT5H0Cf4 OiN8WuKNIteyA76HKmgF47iEHpVVL1W0+NftRZXmS9/ESF+3nIhoff/VRLrLdELNKzYP 3LFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :mime-version:in-reply-to:content-language; bh=1TYUrrSAfHxfWRWFqH8pZkm295Sve84c5tAxVD7l5RM=; b=nXe4YpHvQfdzYO/yNp+Ru+tSlFM/r7TiuSE8J7VDAKjXLMcoToKkXHHVlPjgjxMbax oeDd21h2Rb/HGhMPIJb4qcAyKjWEM67EaRdwwSJqp2dyOdmFPGooHP/la4slqoOc2+1e sxHTghhxk9UKg+yMIR5r4Aq+vBISDjgNabPhrOFqEFrrqbvVDGap5aZUkfyaOX48SiZd XvaUc91LguEfIc69Xay55DR8pGaxPMaq87nX57aT6wJ4zRusYFKyu/hC0IxEesCnQRrq Nsx97dmjr0jaOSYssN4Db+6HsPG1y2t4we/vNtDhQ2BeQLKqFNQD1h14SuwBU3WrcIlY eVQw== X-Gm-Message-State: AOAM531jmcunJAHYpM/UtzgbVWGHvJuzePkFIWy2hjZen6rWdjZA/0kh cT68uW5pyQBbdB1GBawxT6Dv1JEIvyI= X-Google-Smtp-Source: ABdhPJyRGLXuE5x19ixTGh7TJf+Q4ZMU+4YbVZ5n7Pqs9CzDD3gE2hm12XJC5Z0Tol0ECA4IFYk/GA== X-Received: by 2002:a17:903:32c2:b0:141:eed4:ec0a with SMTP id i2-20020a17090332c200b00141eed4ec0amr22338059plr.74.1636855852179; Sat, 13 Nov 2021 18:10:52 -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 f3sm10706133pfg.167.2021.11.13.18.10.50 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 13 Nov 2021 18:10:51 -0800 (PST) In-Reply-To: <87sfw7u7zw.fsf@gmx.de> Content-Language: en-US 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" Xref: news.gmane.io gmane.emacs.bugs:219871 Archived-At: This is a multi-part message in MIME format. --------------815EB32426E180BBE894AFA8 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 11/7/2021 10:37 AM, Michael Albinus wrote: > Nice. I've pushed them to the emacs-28 branch in your name, merged also > to the master branch. Maybe you could also add a test for quoted file > names, i.e. a file name "/:/home/albinus/" should *not* be > abbreviated. See files-tests-file-name-non-special-* tests in > files-tests.el. Ok, I added a test for this in the first patch. >> +** Tramp >> + >> ++++ >> +*** Tramp supports abbreviating remote home directories now. >> +When calling 'abbreviate-file-name' on a Tramp filename, the result >> +will abbreviate the home directory to "~". > > You made it under the Tramp heading. I believe there shall be a more > general entry, that 'abbreviate-file-name' respects file name handlers > now. The entry in the Tramp section can be kept, but in a more general > sense. We don't abbreviate only to "~", but also to "~user", see below. I added a NEWS entry to mention that `abbreviate-file-name' respects file name handlers now. I didn't update the Tramp entry though since I haven't added "~user" support (at least, not yet...). See below for some explanation. > Tramp can more. If there are two remote users "jim" and "micha", then > you have > > (expand-file-name "/ssh:jim@host:~/") => "/ssh:jim@host:/home/jim/" > (expand-file-name "/ssh:jim@host:~micha/") => "/ssh:jim@host:/home/micha/" > > abbreviate-file-name is somehow the reverse function of > expand-file-name. So it would be great, if we could have > > (abbreviate-file-name "/ssh:jim@host:/home/micha/") => "/ssh:jim@host:~micha/" > > Of course, we cannot check for any remote user's home directory. But we > have the Tramp cache. expand-file-name adds connection properties for > home directories, like ("~" . "/home/jim") and ("~micha" . "/home/micha") > in the above examples. If somebody has already used > "/ssh:jim@host:~micha/", and this is cached as ("~micha" . "/home/micha"), > then abbreviate-file-name shall do such an abbreviation. WDYT? I looked at doing this, but it was a bit more complex than I thought it would be initially, so I've held off for now. This does seem like a useful feature though, and would probably be nice to have for local paths too. It should be possible to enhance `expand-file-name' to cache the "~user" -> "/home/user" mapping similarly to how `tramp-sh-handle-expand-file-name' does. I could keep working on this patch to add "~user" support, or maybe that could be a followup for later. Incidentally, another interesting feature would be abbreviating default methods/users. That's probably easy when Tramp has filled in those values since the file name has `tramp-default' properties set. I'm not sure how tricky it would be to do without those properties though. >> + ;; If any elt of directory-abbrev-alist matches this name or the >> + ;; home dir, abbreviate accordingly. >> + (dolist (dir-abbrev directory-abbrev-alist) >> + (when (string-match (car dir-abbrev) filename) >> + (setq filename >> + (concat (cdr dir-abbrev) >> + (substring filename (match-end 0))))) >> + (when (string-match (car dir-abbrev) home-dir) >> + (setq home-dir >> + (concat (cdr dir-abbrev) >> + (substring home-dir (match-end 0)))))) > > Well, this is copied code from abbreviate-file-name. Usually I try to > avoid such code duplication, it's hard to maintain when it changes in > the first place . Instead, I call the original function via > tramp-run-real-handler, and use the result for further changes. > > But abbreviate-file-name does much more than handling > directory-abbrev-alist. Hmm. I've tried to reduce as much duplication as possible here by creating two new functions: `directory-abbrev-make-regexp' and `directory-abbrev-apply'. The former just takes a directory and returns a regexp that would match it, and the latter loops over `directory-abbrev-alist' and applies the transformations. I tried to do this via `(tramp-run-real-handler #'abbreviate-file-name ...)', but it ended up being simpler (and faster to execute) this way. > I prefer to keep things together. So I would like to see > tramp-testNN-abbreviate-file-name closed to > tramp-test05-expand-file-name. Could we call the new function > tramp-test07-abbreviate-file-name? I know it will be a lot of work to > rename all the other test functions, and I herewith volunteer to do this > dirty task. Ok, fixed. >> + (let ((home-dir (expand-file-name "/mock:localhost:~"))) > > You hard-code the mock method. But this is available only if > $REMOTE_TEMPORARY_FILE_DIRECTORY is not set; I'd prefer to run > tramp-tests.el in many different environments. So please use something > like > > (let ((home-dir (expand-file-name (concat (file-remote-p tramp-test-temporary-file-directory) "~"))))) Fixed this too. I also attached a slightly-updated benchmark script as well as new results. Performance on local file names is the same as before the patch, and just slightly faster than before with Tramp file names. (Most of the performance improvements here happened in bug#51699, so I mainly wanted to maintain the current performance in this patch.) --------------815EB32426E180BBE894AFA8 Content-Type: text/plain; charset=UTF-8; name="0001-Add-another-abbreviate-file-name-test.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Add-another-abbreviate-file-name-test.patch" RnJvbSAwMDNkMDEyYWRjNzY3MWY5ZjBhZDQyY2Y5YWNhNWYxNDdhOGQwYzBjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFNhdCwgMTMgTm92IDIwMjEgMTc6Mzg6MzYgLTA4MDAKU3ViamVjdDogW1BB VENIIDEvMl0gOyBBZGQgYW5vdGhlciAnYWJicmV2aWF0ZS1maWxlLW5hbWUnIHRlc3QKCiog dGVzdC9saXNwL2ZpbGVzLXRlc3RzLmVsCihmaWxlcy10ZXN0cy1hYmJyZXZpYXRlLWZpbGUt bmFtZS1ub24tc3BlY2lhbCk6IE5ldyB0ZXN0LgotLS0KIHRlc3QvbGlzcC9maWxlcy10ZXN0 cy5lbCB8IDkgKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvdGVzdC9saXNwL2ZpbGVzLXRlc3RzLmVsIGIvdGVzdC9saXNwL2ZpbGVz LXRlc3RzLmVsCmluZGV4IGQwMGYxY2UzMjYuLmRmNTdkNzhmY2EgMTAwNjQ0Ci0tLSBhL3Rl c3QvbGlzcC9maWxlcy10ZXN0cy5lbAorKysgYi90ZXN0L2xpc3AvZmlsZXMtdGVzdHMuZWwK QEAgLTEzNjQsNiArMTM2NCwxNSBAQCBmaWxlcy10ZXN0cy1hYmJyZXZpYXRlLWZpbGUtbmFt ZS1kaXJlY3RvcnktYWJicmV2LWFsaXN0CiAgICAgICAgICAgICAgICAgICAgICAoYWJicmV2 aWF0ZS1maWxlLW5hbWUKICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0IGhvbWVkaXIg Im5vd2hlcmUvc3BlY2lhbC9oZXJlIikpKSkpKQogCisoZXJ0LWRlZnRlc3QgZmlsZXMtdGVz dHMtYWJicmV2aWF0ZS1maWxlLW5hbWUtbm9uLXNwZWNpYWwgKCkKKyAgKGxldCogKChob21l ZGlyIHRlbXBvcmFyeS1maWxlLWRpcmVjdG9yeSkKKyAgICAgICAgIChwcm9jZXNzLWVudmly b25tZW50IChjb25zIChmb3JtYXQgIkhPTUU9JXMiIGhvbWVkaXIpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLWVudmlyb25tZW50KSkKKyAgICAgICAg IChhYmJyZXZpYXRlZC1ob21lLWRpciBuaWwpKQorICAgIDs7IENoZWNrIHRoYXQgYWJicmV2 aWF0aW9uIGRvZXNuJ3Qgb2NjdXIgZm9yIHF1b3RlZCBmaWxlIG5hbWVzLgorICAgIChzaG91 bGQgKGVxdWFsIChjb25jYXQgIi86IiBob21lZGlyICJmb28vYmFyIikKKyAgICAgICAgICAg ICAgICAgICAoYWJicmV2aWF0ZS1maWxlLW5hbWUgKGNvbmNhdCAiLzoiIGhvbWVkaXIgImZv by9iYXIiKSkpKSkpCisKIChlcnQtZGVmdGVzdCBmaWxlcy10ZXN0cy1hYmJyZXZpYXRlZC1o b21lLWRpciAoKQogICAiVGVzdCB0aGF0IGNoYW5naW5nIEhPTUUgZG9lcyBub3QgY29uZnVz ZSBgYWJicmV2aWF0ZS1maWxlLW5hbWUnLgogU2VlIDxodHRwczovL2RlYmJ1Z3MuZ251Lm9y Zy8xOTY1NyMyMD4uIgotLSAKMi4yNS4xCgo= --------------815EB32426E180BBE894AFA8 Content-Type: text/plain; charset=UTF-8; name="0002-Support-abbreviating-home-directory-of-Tramp-filenam.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0002-Support-abbreviating-home-directory-of-Tramp-filenam.pa"; filename*1="tch" RnJvbSA1ZDA0OWQ5ZmI5MDI4MTk3MjZiNDcyNzgyZGQyZDAyOGUzZDYxNjVmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gUG9ydGVyIDxqcG9ydGVyYnVnc0BnbWFpbC5j b20+CkRhdGU6IFNhdCwgMTMgTm92IDIwMjEgMTc6MjM6NDIgLTA4MDAKU3ViamVjdDogW1BB VENIIDIvMl0gU3VwcG9ydCBhYmJyZXZpYXRpbmcgaG9tZSBkaXJlY3Rvcnkgb2YgVHJhbXAg ZmlsZW5hbWVzCgoqIGxpc3AvZmlsZXMuZWwgKGRpcmVjdG9yeS1hYmJyZXYtbWFrZS1yZWdl eHApOgooZGlyZWN0b3J5LWFiYnJldi1hcHBseSk6IE5ldyBmdW5jdGlvbnMuCihhYmJyZXZp YXRlLWZpbGUtbmFtZSk6IENoZWNrIGZvciBmaWxlIG5hbWUgaGFuZGxlci4KKGZpbGUtbmFt ZS1ub24tc3BlY2lhbCk6CiogbGlzcC9uZXQvdHJhbXAuZWwgKHRyYW1wLWZpbGUtbmFtZS1m b3Itb3BlcmF0aW9uKToKKiBsaXNwL25ldC90cmFtcC1zaC5lbCAodHJhbXAtc2gtZmlsZS1u YW1lLWhhbmRsZXItYWxpc3QpOgpBZGQgJ2FiYnJldmlhdGUtZmlsZS1uYW1lJy4KKHRyYW1w LXNoLWhhbmRsZS1hYmJyZXZpYXRlLWZpbGUtbmFtZSk6IE5ldyBmdW5jdGlvbi4KKiB0ZXN0 L2xpc3AvbmV0L3RyYW1wLXRlc3RzLmVsICh0cmFtcC10ZXN0NDYtYWJicmV2aWF0ZS1maWxl LW5hbWUpOgpOZXcgdGVzdC4KKiBkb2MvbGlzcHJlZi9maWxlcy50ZXhpIChNYWdpYyBGaWxl IE5hbWVzKTogTWVudGlvbgonYWJicmV2aWF0ZS1maWxlLW5hbWUnIGluIHRoZSBsaXN0IG9m IG1hZ2ljIGZpbGUgbmFtZSBoYW5kbGVycy4KKiBldGMvTkVXUzogQW5ub3VuY2UgdGhlIGNo YW5nZS4KLS0tCiBkb2MvbGlzcHJlZi9maWxlcy50ZXhpICAgICAgIHwgICA3ICstCiBldGMv TkVXUyAgICAgICAgICAgICAgICAgICAgIHwgIDEwICsrKwogbGlzcC9maWxlcy5lbCAgICAg ICAgICAgICAgICB8IDE0MyArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQog bGlzcC9uZXQvdHJhbXAtc2guZWwgICAgICAgICB8ICAyMCArKysrLQogbGlzcC9uZXQvdHJh bXAuZWwgICAgICAgICAgICB8ICAgMiArCiB0ZXN0L2xpc3AvbmV0L3RyYW1wLXRlc3RzLmVs IHwgIDI1ICsrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCAxMzUgaW5zZXJ0aW9ucygrKSwgNzIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvZmlsZXMudGV4aSBiL2Rv Yy9saXNwcmVmL2ZpbGVzLnRleGkKaW5kZXggZDkzNzcwYTBkMi4uNGIxMTRiYTExMSAxMDA2 NDQKLS0tIGEvZG9jL2xpc3ByZWYvZmlsZXMudGV4aQorKysgYi9kb2MvbGlzcHJlZi9maWxl cy50ZXhpCkBAIC0zMzA4LDggKzMzMDgsOCBAQCBNYWdpYyBGaWxlIE5hbWVzCiAKIEBpZm5v dHRleAogQG5vaW5kZW50Ci1AY29kZXthY2Nlc3MtZmlsZX0sIEBjb2Rle2FkZC1uYW1lLXRv LWZpbGV9LAotQGNvZGV7Ynl0ZS1jb21waWxlci1iYXNlLWZpbGUtbmFtZX0sQCoKK0Bjb2Rl e2FiYnJldmlhdGUtZmlsZS1uYW1lfSwgQGNvZGV7YWNjZXNzLWZpbGV9LAorQGNvZGV7YWRk LW5hbWUtdG8tZmlsZX0sIEBjb2Rle2J5dGUtY29tcGlsZXItYmFzZS1maWxlLW5hbWV9LEAq CiBAY29kZXtjb3B5LWRpcmVjdG9yeX0sIEBjb2Rle2NvcHktZmlsZX0sCiBAY29kZXtkZWxl dGUtZGlyZWN0b3J5fSwgQGNvZGV7ZGVsZXRlLWZpbGV9LAogQGNvZGV7ZGlmZi1sYXRlc3Qt YmFja3VwLWZpbGV9LApAQCAtMzM2OCw3ICszMzY4LDggQEAgTWFnaWMgRmlsZSBOYW1lcwog QGlmdGV4CiBAbm9pbmRlbnQKIEBmbHVzaGxlZnQKLUBjb2Rle2FjY2Vzcy1maWxlfSwgQGNv ZGV7YWRkLW5hbWUtdG8tZmlsZX0sCitAY29kZXthYmJyZXZpYXRlLWZpbGUtbmFtZX0sIEBj b2Rle2FjY2Vzcy1maWxlfSwKK0Bjb2Rle2FkZC1uYW1lLXRvLWZpbGV9LAogQGNvZGV7Ynl0 ZS1jb21AZGlzY3JldGlvbmFyeXt9e317fXBpbGVyLWJhc2UtZmlsZS1uYW1lfSwKIEBjb2Rl e2NvcHktZGlyZWN0b3J5fSwgQGNvZGV7Y29weS1maWxlfSwKIEBjb2Rle2RlbGV0ZS1kaXJl Y3Rvcnl9LCBAY29kZXtkZWxldGUtZmlsZX0sCmRpZmYgLS1naXQgYS9ldGMvTkVXUyBiL2V0 Yy9ORVdTCmluZGV4IGMzNjJlNTZjZWUuLjQ4ZmYwNmVmMjggMTAwNjQ0Ci0tLSBhL2V0Yy9O RVdTCisrKyBiL2V0Yy9ORVdTCkBAIC00OTcsNiArNDk3LDEzIEBAIFRoZSBuZXdseSBjcmVh dGVkIGJ1ZmZlciB3aWxsIGJlIGRpc3BsYXllZCB2aWEgJ2Rpc3BsYXktYnVmZmVyJywgd2hp Y2gKIGNhbiBiZSBjdXN0b21pemVkIHRocm91Z2ggdGhlIHVzdWFsIG1lY2hhbmlzbSBvZiAn ZGlzcGxheS1idWZmZXItYWxpc3QnCiBhbmQgZnJpZW5kcy4KIAorKiogVHJhbXAKKworKysr CisqKiogVHJhbXAgc3VwcG9ydHMgYWJicmV2aWF0aW5nIHJlbW90ZSBob21lIGRpcmVjdG9y aWVzIG5vdy4KK1doZW4gY2FsbGluZyAnYWJicmV2aWF0ZS1maWxlLW5hbWUnIG9uIGEgVHJh bXAgZmlsZW5hbWUsIHRoZSByZXN1bHQKK3dpbGwgYWJicmV2aWF0ZSB0aGUgaG9tZSBkaXJl Y3RvcnkgdG8gIn4iLgorCiAMCiAqIE5ldyBNb2RlcyBhbmQgUGFja2FnZXMgaW4gRW1hY3Mg MjkuMQogCkBAIC02MzIsNiArNjM5LDkgQEAgVGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbiBp cyB1c2VmdWwgd2hlbiB3cml0aW5nIGNvZGUgdGhhdCBwYXJzZXMKIGZpbGVzIGF0IHJ1bi10 aW1lLCBhbmQgYWxsb3dzIExpc3AgcHJvZ3JhbXMgdG8gcmUtcGFyc2UgZmlsZXMgb25seQog d2hlbiB0aGV5IGhhdmUgY2hhbmdlZC4KIAorKysrCisqKiAnYWJicmV2aWF0ZS1maWxlLW5h bWUnIG5vdyByZXNwZWN0cyBtYWdpYyBmaWxlIG5hbWUgaGFuZGxlcnMuCisKIC0tLQogKiog TmV3IGZ1bmN0aW9uICdmb250LWhhcy1jaGFyLXAnLgogVGhpcyBjYW4gYmUgdXNlZCB0byBj aGVjayB3aGV0aGVyIGEgc3BlY2lmaWMgZm9udCBoYXMgYSBnbHlwaCBmb3IgYQpkaWZmIC0t Z2l0IGEvbGlzcC9maWxlcy5lbCBiL2xpc3AvZmlsZXMuZWwKaW5kZXggMzQ5MGQwNDI4YS4u NDliZjA2YmZjMSAxMDA2NDQKLS0tIGEvbGlzcC9maWxlcy5lbAorKysgYi9saXNwL2ZpbGVz LmVsCkBAIC02OCw2ICs2OCwzMSBAQCBkaXJlY3RvcnktYWJicmV2LWFsaXN0CiAgIDpncm91 cCAnYWJicmV2CiAgIDpncm91cCAnZmluZC1maWxlKQogCisoZGVmdW4gZGlyZWN0b3J5LWFi YnJldi1tYWtlLXJlZ2V4cCAoZGlyZWN0b3J5KQorICAiQ3JlYXRlIGEgcmVnZXhwIHRvIG1h dGNoIERJUkVDVE9SWSBmb3IgYGRpcmVjdG9yeS1hYmJyZXYtYWxpc3QnLiIKKyAgKGxldCAo KHJlZ2V4cAorICAgICAgICAgOzsgV2UgaW5jbHVkZSBhIHNsYXNoIGF0IHRoZSBlbmQsIHRv IGF2b2lkIHNwdXJpb3VzCisgICAgICAgICA7OyBtYXRjaGVzIHN1Y2ggYXMgYC91c3IvZm9v YmFyJyB3aGVuIHRoZSBob21lIGRpciBpcworICAgICAgICAgOzsgYC91c3IvZm9vJy4KKyAg ICAgICAgIChjb25jYXQgIlxcYCIgKHJlZ2V4cC1xdW90ZSBkaXJlY3RvcnkpICJcXCgvXFx8 XFwnXFwpIikpKQorICAgIDs7IFRoZSB2YWx1ZSBvZiByZWdleHAgY291bGQgYmUgbXVsdGli eXRlIG9yIHVuaWJ5dGUuICBJbiB0aGUKKyAgICA7OyBsYXR0ZXIgY2FzZSwgd2UgbmVlZCB0 byBkZWNvZGUgaXQuCisgICAgKGlmIChtdWx0aWJ5dGUtc3RyaW5nLXAgcmVnZXhwKQorICAg ICAgICByZWdleHAKKyAgICAgIChkZWNvZGUtY29kaW5nLXN0cmluZyByZWdleHAKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGVxIHN5c3RlbS10eXBlICd3aW5kb3dzLW50 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXRmLTgKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxvY2FsZS1jb2Rpbmctc3lzdGVtKSkpKSkKKworKGRlZnVu IGRpcmVjdG9yeS1hYmJyZXYtYXBwbHkgKGZpbGVuYW1lKQorICAiQXBwbHkgdGhlIGFiYnJl dmlhdGlvbnMgaW4gYGRpcmVjdG9yeS1hYmJyZXYtYWxpc3QnIHRvIEZJTEVOQU1FLgorTm90 ZSB0aGF0IHdoZW4gY2FsbGluZyB0aGlzLCB5b3Ugc2hvdWxkIHNldCBgY2FzZS1mb2xkLXNl YXJjaCcgYXMKK2FwcHJvcHJpYXRlIGZvciB0aGUgZmlsZXN5c3RlbSB1c2VkIGZvciBGSUxF TkFNRS4iCisgIChkb2xpc3QgKGRpci1hYmJyZXYgZGlyZWN0b3J5LWFiYnJldi1hbGlzdCBm aWxlbmFtZSkKKyAgICAod2hlbiAoc3RyaW5nLW1hdGNoIChjYXIgZGlyLWFiYnJldikgZmls ZW5hbWUpCisgICAgICAgICAoc2V0cSBmaWxlbmFtZSAoY29uY2F0IChjZHIgZGlyLWFiYnJl dikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZyBmaWxlbmFt ZSAobWF0Y2gtZW5kIDApKSkpKSkpCisKIChkZWZjdXN0b20gbWFrZS1iYWNrdXAtZmlsZXMg dAogICAiTm9uLW5pbCBtZWFucyBtYWtlIGEgYmFja3VwIG9mIGEgZmlsZSB0aGUgZmlyc3Qg dGltZSBpdCBpcyBzYXZlZC4KIFRoaXMgY2FuIGJlIGRvbmUgYnkgcmVuYW1pbmcgdGhlIGZp bGUgb3IgYnkgY29weWluZy4KQEAgLTIwMTUsNzMgKzIwNDAsNTQgQEAgYWJicmV2aWF0ZS1m aWxlLW5hbWUKIHN0YXJ0ZWQgRW1hY3MsIHNldCBgYWJicmV2aWF0ZWQtaG9tZS1kaXInIHRv IG5pbCBzbyBpdCB3aWxsIGJlIHJlY2FsY3VsYXRlZCkuIgogICA7OyBHZXQgcmlkIG9mIHRo ZSBwcmVmaXhlcyBhZGRlZCBieSB0aGUgYXV0b21vdW50ZXIuCiAgIChzYXZlLW1hdGNoLWRh dGEgICAgICAgICAgICAgICAgICAgICAgO0ZJWE1FOiBXaHk/Ci0gICAgKGlmIChhbmQgYXV0 b21vdW50LWRpci1wcmVmaXgKLQkgICAgIChzdHJpbmctbWF0Y2ggYXV0b21vdW50LWRpci1w cmVmaXggZmlsZW5hbWUpCi0JICAgICAoZmlsZS1leGlzdHMtcCAoZmlsZS1uYW1lLWRpcmVj dG9yeQotCQkJICAgICAoc3Vic3RyaW5nIGZpbGVuYW1lICgxLSAobWF0Y2gtZW5kIDApKSkp KSkKLQkoc2V0cSBmaWxlbmFtZSAoc3Vic3RyaW5nIGZpbGVuYW1lICgxLSAobWF0Y2gtZW5k IDApKSkpKQotICAgIDs7IEF2b2lkIHRyZWF0aW5nIC9ob21lL2ZvbyBhcyAvaG9tZS9Gb28g ZHVyaW5nIGB+JyBzdWJzdGl0dXRpb24uCi0gICAgKGxldCAoKGNhc2UtZm9sZC1zZWFyY2gg KGZpbGUtbmFtZS1jYXNlLWluc2Vuc2l0aXZlLXAgZmlsZW5hbWUpKSkKLSAgICAgIDs7IElm IGFueSBlbHQgb2YgZGlyZWN0b3J5LWFiYnJldi1hbGlzdCBtYXRjaGVzIHRoaXMgbmFtZSwK LSAgICAgIDs7IGFiYnJldmlhdGUgYWNjb3JkaW5nbHkuCi0gICAgICAoZG9saXN0IChkaXIt YWJicmV2IGRpcmVjdG9yeS1hYmJyZXYtYWxpc3QpCi0JKGlmIChzdHJpbmctbWF0Y2ggKGNh ciBkaXItYWJicmV2KSBmaWxlbmFtZSkKLQkgICAgKHNldHEgZmlsZW5hbWUKLQkJICAoY29u Y2F0IChjZHIgZGlyLWFiYnJldikKLQkJCSAgKHN1YnN0cmluZyBmaWxlbmFtZSAobWF0Y2gt ZW5kIDApKSkpKSkKLSAgICAgIDs7IENvbXB1dGUgYW5kIHNhdmUgdGhlIGFiYnJldmlhdGVk IGhvbWVkaXIgbmFtZS4KLSAgICAgIDs7IFdlIGRlZmVyIGNvbXB1dGluZyB0aGlzIHVudGls IHRoZSBmaXJzdCB0aW1lIGl0J3MgbmVlZGVkLCB0bwotICAgICAgOzsgZ2l2ZSB0aW1lIGZv ciBkaXJlY3RvcnktYWJicmV2LWFsaXN0IHRvIGJlIHNldCBwcm9wZXJseS4KLSAgICAgIDs7 IFdlIGluY2x1ZGUgYSBzbGFzaCBhdCB0aGUgZW5kLCB0byBhdm9pZCBzcHVyaW91cyBtYXRj aGVzCi0gICAgICA7OyBzdWNoIGFzIGAvdXNyL2Zvb2Jhcicgd2hlbiB0aGUgaG9tZSBkaXIg aXMgYC91c3IvZm9vJy4KLSAgICAgICh1bmxlc3MgYWJicmV2aWF0ZWQtaG9tZS1kaXIKLSAg ICAgICAgKHB1dCAnYWJicmV2aWF0ZWQtaG9tZS1kaXIgJ2hvbWUgKGV4cGFuZC1maWxlLW5h bWUgIn4iKSkKLSAgICAgICAgKHNldHEgYWJicmV2aWF0ZWQtaG9tZS1kaXIKLSAgICAgICAg ICAgICAgKGxldCogKChhYmJyZXZpYXRlZC1ob21lLWRpciAiXFxgXFwnLiIpIDtJbXBvc3Np YmxlIHJlZ2V4cC4KLSAgICAgICAgICAgICAgICAgICAgIChyZWdleHAKLSAgICAgICAgICAg ICAgICAgICAgICAoY29uY2F0ICJcXGAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAocmVnZXhwLXF1b3RlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFiYnJl dmlhdGUtZmlsZS1uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZXQg J2FiYnJldmlhdGVkLWhvbWUtZGlyICdob21lKSkpCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiXFwoL1xcfFxcJ1xcKSIpKSkKLSAgICAgICAgICAgICAgICA7OyBEZXBlbmRp bmcgb24gd2hldGhlciBkZWZhdWx0LWRpcmVjdG9yeSBkb2VzIG9yCi0gICAgICAgICAgICAg ICAgOzsgZG9lc24ndCBpbmNsdWRlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCB0aGUgdmFsdWUK LSAgICAgICAgICAgICAgICA7OyBvZiBhYmJyZXZpYXRlZC1ob21lLWRpciBjb3VsZCBiZSBt dWx0aWJ5dGUgb3IKLSAgICAgICAgICAgICAgICA7OyB1bmlieXRlLiAgSW4gdGhlIGxhdHRl ciBjYXNlLCB3ZSBuZWVkIHRvIGRlY29kZQotICAgICAgICAgICAgICAgIDs7IGl0LiAgTm90 ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZvciB0aGUKLSAgICAgICAgICAgICAg ICA7OyBmaXJzdCB0aW1lIChmcm9tIHN0YXJ0dXAuZWwpIHdoZW4KLSAgICAgICAgICAgICAg ICA7OyBsb2NhbGUtY29kaW5nLXN5c3RlbSBpcyBhbHJlYWR5IHNldCB1cC4KLSAgICAgICAg ICAgICAgICAoaWYgKG11bHRpYnl0ZS1zdHJpbmctcCByZWdleHApCi0gICAgICAgICAgICAg ICAgICAgIHJlZ2V4cAotICAgICAgICAgICAgICAgICAgKGRlY29kZS1jb2Rpbmctc3RyaW5n IHJlZ2V4cAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAo ZXEgc3lzdGVtLXR5cGUgJ3dpbmRvd3MtbnQpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICd1dGYtOAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbG9jYWxlLWNvZGluZy1zeXN0ZW0pKSkpKSkKLQotICAgICAgOzsg SWYgRklMRU5BTUUgc3RhcnRzIHdpdGggdGhlIGFiYnJldmlhdGVkIGhvbWVkaXIsCi0gICAg ICA7OyBhbmQgfiBoYXNuJ3QgY2hhbmdlZCBzaW5jZSBhYmJyZXZpYXRlZC1ob21lLWRpciB3 YXMgc2V0LAotICAgICAgOzsgbWFrZSBpdCBzdGFydCB3aXRoIGB+JyBpbnN0ZWFkLgotICAg ICAgOzsgSWYgfiBoYXMgY2hhbmdlZCwgd2UgaWdub3JlIGFiYnJldmlhdGVkLWhvbWUtZGly IHJhdGhlciB0aGFuCi0gICAgICA7OyBpbnZhbGlkYXRpbmcgaXQsIG9uIHRoZSBhc3N1bXB0 aW9uIHRoYXQgYSBjaGFuZ2UgaW4gSE9NRQotICAgICAgOzsgaXMgbGlrZWx5IHRlbXBvcmFy eSAoZWcgZm9yIHRlc3RpbmcpLgotICAgICAgOzsgRklYTUUgSXMgaXQgZXZlbiB3b3J0aCBj YWNoaW5nIGFiYnJldmlhdGVkLWhvbWUtZGlyPwotICAgICAgOzsgUmVmOiBodHRwczovL2Rl YmJ1Z3MuZ251Lm9yZy8xOTY1NyMyMAotICAgICAgKGxldCAobWIxKQotICAgICAgICAoaWYg KGFuZCAoc3RyaW5nLW1hdGNoIGFiYnJldmlhdGVkLWhvbWUtZGlyIGZpbGVuYW1lKQotICAg ICAgICAgICAgICAgICAoc2V0cSBtYjEgKG1hdGNoLWJlZ2lubmluZyAxKSkKLQkgICAgICAg ICA7OyBJZiB0aGUgaG9tZSBkaXIgaXMganVzdCAvLCBkb24ndCBjaGFuZ2UgaXQuCi0JICAg ICAgICAgKG5vdCAoYW5kICg9IChtYXRjaC1lbmQgMCkgMSkKLQkJCSAgICg9IChhcmVmIGZp bGVuYW1lIDApID8vKSkpCi0JICAgICAgICAgOzsgTVMtRE9TIHJvb3QgZGlyZWN0b3JpZXMg Y2FuIGNvbWUgd2l0aCBhIGRyaXZlIGxldHRlcjsKLQkgICAgICAgICA7OyBOb3ZlbGwgTmV0 d2FyZSBhbGxvd3MgZHJpdmUgbGV0dGVycyBiZXlvbmQgYFo6Jy4KLQkgICAgICAgICAobm90 IChhbmQgKG1lbXEgc3lzdGVtLXR5cGUgJyhtcy1kb3Mgd2luZG93cy1udCBjeWd3aW4pKQot CQkJICAgKHN0cmluZy1tYXRjaCAiXFxgW2EtekEtYF06L1xcJyIgZmlsZW5hbWUpKSkKLSAg ICAgICAgICAgICAgICAgKGVxdWFsIChnZXQgJ2FiYnJldmlhdGVkLWhvbWUtZGlyICdob21l KQotICAgICAgICAgICAgICAgICAgICAgICAgKGV4cGFuZC1maWxlLW5hbWUgIn4iKSkpCi0J ICAgIChzZXRxIGZpbGVuYW1lCi0JCSAgKGNvbmNhdCAifiIKLQkJCSAgKHN1YnN0cmluZyBm aWxlbmFtZSBtYjEpKSkpCi0gICAgICAgIGZpbGVuYW1lKSkpKQorICAgIChpZi1sZXQgKCho YW5kbGVyIChmaW5kLWZpbGUtbmFtZS1oYW5kbGVyIGZpbGVuYW1lICdhYmJyZXZpYXRlLWZp bGUtbmFtZSkpKQorICAgICAgICAoZnVuY2FsbCBoYW5kbGVyICdhYmJyZXZpYXRlLWZpbGUt bmFtZSBmaWxlbmFtZSkKKyAgICAgIChpZiAoYW5kIGF1dG9tb3VudC1kaXItcHJlZml4Cisg ICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoIGF1dG9tb3VudC1kaXItcHJlZml4IGZpbGVu YW1lKQorICAgICAgICAgICAgICAgKGZpbGUtZXhpc3RzLXAgKGZpbGUtbmFtZS1kaXJlY3Rv cnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Vic3RyaW5nIGZpbGVuYW1l ICgxLSAobWF0Y2gtZW5kIDApKSkpKSkKKyAgICAgICAgICAoc2V0cSBmaWxlbmFtZSAoc3Vi c3RyaW5nIGZpbGVuYW1lICgxLSAobWF0Y2gtZW5kIDApKSkpKQorICAgICAgOzsgQXZvaWQg dHJlYXRpbmcgL2hvbWUvZm9vIGFzIC9ob21lL0ZvbyBkdXJpbmcgYH4nIHN1YnN0aXR1dGlv bi4KKyAgICAgIChsZXQgKChjYXNlLWZvbGQtc2VhcmNoIChmaWxlLW5hbWUtY2FzZS1pbnNl bnNpdGl2ZS1wIGZpbGVuYW1lKSkpCisgICAgICAgIDs7IElmIGFueSBlbHQgb2YgZGlyZWN0 b3J5LWFiYnJldi1hbGlzdCBtYXRjaGVzIHRoaXMgbmFtZSwKKyAgICAgICAgOzsgYWJicmV2 aWF0ZSBhY2NvcmRpbmdseS4KKyAgICAgICAgKHNldHEgZmlsZW5hbWUgKGRpcmVjdG9yeS1h YmJyZXYtYXBwbHkgZmlsZW5hbWUpKQorCisgICAgICAgIDs7IENvbXB1dGUgYW5kIHNhdmUg dGhlIGFiYnJldmlhdGVkIGhvbWVkaXIgbmFtZS4KKyAgICAgICAgOzsgV2UgZGVmZXIgY29t cHV0aW5nIHRoaXMgdW50aWwgdGhlIGZpcnN0IHRpbWUgaXQncyBuZWVkZWQsIHRvCisgICAg ICAgIDs7IGdpdmUgdGltZSBmb3IgZGlyZWN0b3J5LWFiYnJldi1hbGlzdCB0byBiZSBzZXQg cHJvcGVybHkuCisgICAgICAgICh1bmxlc3MgYWJicmV2aWF0ZWQtaG9tZS1kaXIKKyAgICAg ICAgICAocHV0ICdhYmJyZXZpYXRlZC1ob21lLWRpciAnaG9tZSAoZXhwYW5kLWZpbGUtbmFt ZSAifiIpKQorICAgICAgICAgIChzZXRxIGFiYnJldmlhdGVkLWhvbWUtZGlyCisgICAgICAg ICAgICAgICAgKGRpcmVjdG9yeS1hYmJyZXYtbWFrZS1yZWdleHAKKyAgICAgICAgICAgICAg ICAgKGxldCAoKGFiYnJldmlhdGVkLWhvbWUtZGlyICJcXGBcXCcuIikpIDtJbXBvc3NpYmxl IHJlZ2V4cC4KKyAgICAgICAgICAgICAgICAgICAoYWJicmV2aWF0ZS1maWxlLW5hbWUKKyAg ICAgICAgICAgICAgICAgICAgKGdldCAnYWJicmV2aWF0ZWQtaG9tZS1kaXIgJ2hvbWUpKSkp KSkKKworICAgICAgICA7OyBJZiBGSUxFTkFNRSBzdGFydHMgd2l0aCB0aGUgYWJicmV2aWF0 ZWQgaG9tZWRpciwKKyAgICAgICAgOzsgYW5kIH4gaGFzbid0IGNoYW5nZWQgc2luY2UgYWJi cmV2aWF0ZWQtaG9tZS1kaXIgd2FzIHNldCwKKyAgICAgICAgOzsgbWFrZSBpdCBzdGFydCB3 aXRoIGB+JyBpbnN0ZWFkLgorICAgICAgICA7OyBJZiB+IGhhcyBjaGFuZ2VkLCB3ZSBpZ25v cmUgYWJicmV2aWF0ZWQtaG9tZS1kaXIgcmF0aGVyIHRoYW4KKyAgICAgICAgOzsgaW52YWxp ZGF0aW5nIGl0LCBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGEgY2hhbmdlIGluIEhPTUUKKyAg ICAgICAgOzsgaXMgbGlrZWx5IHRlbXBvcmFyeSAoZWcgZm9yIHRlc3RpbmcpLgorICAgICAg ICA7OyBGSVhNRSBJcyBpdCBldmVuIHdvcnRoIGNhY2hpbmcgYWJicmV2aWF0ZWQtaG9tZS1k aXI/CisgICAgICAgIDs7IFJlZjogaHR0cHM6Ly9kZWJidWdzLmdudS5vcmcvMTk2NTcjMjAK KyAgICAgICAgKGxldCAobWIxKQorICAgICAgICAgIChpZiAoYW5kIChzdHJpbmctbWF0Y2gg YWJicmV2aWF0ZWQtaG9tZS1kaXIgZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgICAgKHNl dHEgbWIxIChtYXRjaC1iZWdpbm5pbmcgMSkpCisgICAgICAgICAgICAgICAgICAgOzsgSWYg dGhlIGhvbWUgZGlyIGlzIGp1c3QgLywgZG9uJ3QgY2hhbmdlIGl0LgorICAgICAgICAgICAg ICAgICAgIChub3QgKGFuZCAoPSAobWF0Y2gtZW5kIDApIDEpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICg9IChhcmVmIGZpbGVuYW1lIDApID8vKSkpCisgICAgICAgICAgICAg ICAgICAgOzsgTVMtRE9TIHJvb3QgZGlyZWN0b3JpZXMgY2FuIGNvbWUgd2l0aCBhIGRyaXZl IGxldHRlcjsKKyAgICAgICAgICAgICAgICAgICA7OyBOb3ZlbGwgTmV0d2FyZSBhbGxvd3Mg ZHJpdmUgbGV0dGVycyBiZXlvbmQgYFo6Jy4KKyAgICAgICAgICAgICAgICAgICAobm90IChh bmQgKG1lbXEgc3lzdGVtLXR5cGUgJyhtcy1kb3Mgd2luZG93cy1udCBjeWd3aW4pKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLW1hdGNoICJcXGBbYS16QS1gXTov XFwnIiBmaWxlbmFtZSkpKQorICAgICAgICAgICAgICAgICAgIChlcXVhbCAoZ2V0ICdhYmJy ZXZpYXRlZC1ob21lLWRpciAnaG9tZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4 cGFuZC1maWxlLW5hbWUgIn4iKSkpCisgICAgICAgICAgICAgIChzZXRxIGZpbGVuYW1lCisg ICAgICAgICAgICAgICAgICAgIChjb25jYXQgIn4iCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHN1YnN0cmluZyBmaWxlbmFtZSBtYjEpKSkpCisgICAgICAgICAgZmlsZW5hbWUp KSkpKQogCiAoZGVmdW4gZmluZC1idWZmZXItdmlzaXRpbmcgKGZpbGVuYW1lICZvcHRpb25h bCBwcmVkaWNhdGUpCiAgICJSZXR1cm4gdGhlIGJ1ZmZlciB2aXNpdGluZyBmaWxlIEZJTEVO QU1FIChhIHN0cmluZykuCkBAIC03ODM2LDEwICs3ODQyLDExIEBAIGZpbGUtbmFtZS1ub24t c3BlY2lhbAogCTs7IEdldCBhIGxpc3Qgb2YgdGhlIGluZGljZXMgb2YgdGhlIGFyZ3MgdGhh dCBhcmUgZmlsZSBuYW1lcy4KIAkoZmlsZS1hcmctaW5kaWNlcwogCSAoY2RyIChvciAoYXNz cSBvcGVyYXRpb24KLQkJCScoOzsgVGhlIGZpcnN0IHNldmVuIGFyZSBzcGVjaWFsIGJlY2F1 c2UgdGhleQorCQkJJyg7OyBUaGUgZmlyc3QgZWlnaHQgYXJlIHNwZWNpYWwgYmVjYXVzZSB0 aGV5CiAJCQkgIDs7IHJldHVybiBhIGZpbGUgbmFtZS4gIFdlIHdhbnQgdG8gaW5jbHVkZQog CQkJICA7OyB0aGUgLzogaW4gdGhlIHJldHVybiB2YWx1ZS4gIFNvIGp1c3QKIAkJCSAgOzsg YXZvaWQgc3RyaXBwaW5nIGl0IGluIHRoZSBmaXJzdCBwbGFjZS4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKGFiYnJldmlhdGUtZmlsZS1uYW1lKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAoZGlyZWN0b3J5LWZpbGUtbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGV4cGFuZC1maWxlLW5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxl LW5hbWUtYXMtZGlyZWN0b3J5KQpkaWZmIC0tZ2l0IGEvbGlzcC9uZXQvdHJhbXAtc2guZWwg Yi9saXNwL25ldC90cmFtcC1zaC5lbAppbmRleCBjNjEwMjVhODZiLi5hNzdmZmU0MzJiIDEw MDY0NAotLS0gYS9saXNwL25ldC90cmFtcC1zaC5lbAorKysgYi9saXNwL25ldC90cmFtcC1z aC5lbApAQCAtOTQyLDcgKzk0Miw4IEBAIHRyYW1wLXZjLXJlZ2lzdGVyZWQtcmVhZC1maWxl LW5hbWVzCiA7OyBOZXcgaGFuZGxlcnMgc2hvdWxkIGJlIGFkZGVkIGhlcmUuCiA7OzsjIyN0 cmFtcC1hdXRvbG9hZAogKGRlZmNvbnN0IHRyYW1wLXNoLWZpbGUtbmFtZS1oYW5kbGVyLWFs aXN0Ci0gICcoKGFjY2Vzcy1maWxlIC4gdHJhbXAtaGFuZGxlLWFjY2Vzcy1maWxlKQorICAn KChhYmJyZXZpYXRlLWZpbGUtbmFtZSAuIHRyYW1wLXNoLWhhbmRsZS1hYmJyZXZpYXRlLWZp bGUtbmFtZSkKKyAgICAoYWNjZXNzLWZpbGUgLiB0cmFtcC1oYW5kbGUtYWNjZXNzLWZpbGUp CiAgICAgKGFkZC1uYW1lLXRvLWZpbGUgLiB0cmFtcC1zaC1oYW5kbGUtYWRkLW5hbWUtdG8t ZmlsZSkKICAgICA7OyBgYnl0ZS1jb21waWxlci1iYXNlLWZpbGUtbmFtZScgcGVyZm9ybWVk IGJ5IGRlZmF1bHQgaGFuZGxlci4KICAgICAoY29weS1kaXJlY3RvcnkgLiB0cmFtcC1zaC1o YW5kbGUtY29weS1kaXJlY3RvcnkpCkBAIC0xODAxLDYgKzE4MDIsMjMgQEAgdHJhbXAtc2gt aGFuZGxlLWZpbGUtbmFtZS1hbGwtY29tcGxldGlvbnMKIAkgICAgICAgKHB1c2ggKGJ1ZmZl ci1zdWJzdHJpbmcgKHBvaW50KSAocG9pbnQtYXQtZW9sKSkgcmVzdWx0KSkpCiAJICAgcmVz dWx0KSkpKSkpCiAKKyhkZWZ1biB0cmFtcC1zaC1oYW5kbGUtYWJicmV2aWF0ZS1maWxlLW5h bWUgKGZpbGVuYW1lKQorICAiTGlrZSBgYWJicmV2aWF0ZS1maWxlLW5hbWUnIGZvciBUcmFt cCBmaWxlcy4iCisgIChsZXQqICgoY2FzZS1mb2xkLXNlYXJjaCAodHJhbXAtaGFuZGxlLWZp bGUtbmFtZS1jYXNlLWluc2Vuc2l0aXZlLXAgZmlsZW5hbWUpKQorICAgICAgICAgKGhvbWUt ZGlyCisgICAgICAgICAgKHdpdGgtcGFyc2VkLXRyYW1wLWZpbGUtbmFtZSBmaWxlbmFtZSBu aWwKKyAgICAgICAgICAgICh3aXRoLXRyYW1wLWNvbm5lY3Rpb24tcHJvcGVydHkgdiAiaG9t ZS1kaXJlY3RvcnkiCisgICAgICAgICAgICAgIChkaXJlY3RvcnktYWJicmV2LWFwcGx5ICh0 cmFtcC1zaC1oYW5kbGUtZXhwYW5kLWZpbGUtbmFtZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHRyYW1wLW1ha2UtdHJhbXAtZmlsZS1uYW1lIHYgIn4iKSkp KSkpKQorICAgIDs7IElmIGFueSBlbHQgb2YgZGlyZWN0b3J5LWFiYnJldi1hbGlzdCBtYXRj aGVzIHRoaXMgbmFtZSwKKyAgICA7OyBhYmJyZXZpYXRlIGFjY29yZGluZ2x5LgorICAgIChz ZXRxIGZpbGVuYW1lIChkaXJlY3RvcnktYWJicmV2LWFwcGx5IGZpbGVuYW1lKSkKKyAgICAo aWYgKHN0cmluZy1tYXRjaCAoZGlyZWN0b3J5LWFiYnJldi1tYWtlLXJlZ2V4cCBob21lLWRp cikgZmlsZW5hbWUpCisgICAgICAgICh3aXRoLXBhcnNlZC10cmFtcC1maWxlLW5hbWUgZmls ZW5hbWUgbmlsCisgICAgICAgICAgKHRyYW1wLW1ha2UtdHJhbXAtZmlsZS1uYW1lCisgICAg ICAgICAgIHYgKGNvbmNhdCAifiIgKHN1YnN0cmluZyBmaWxlbmFtZSAobWF0Y2gtYmVnaW5u aW5nIDEpKSkpKQorICAgICAgZmlsZW5hbWUpKSkKKwogOzsgY3AsIG12IGFuZCBsbgogCiAo ZGVmdW4gdHJhbXAtc2gtaGFuZGxlLWFkZC1uYW1lLXRvLWZpbGUKZGlmZiAtLWdpdCBhL2xp c3AvbmV0L3RyYW1wLmVsIGIvbGlzcC9uZXQvdHJhbXAuZWwKaW5kZXggODc2YmJiMmM1NC4u NTJmMzliZjM1NSAxMDA2NDQKLS0tIGEvbGlzcC9uZXQvdHJhbXAuZWwKKysrIGIvbGlzcC9u ZXQvdHJhbXAuZWwKQEAgLTI0OTUsNiArMjQ5NSw4IEBAIHRyYW1wLWZpbGUtbmFtZS1mb3It b3BlcmF0aW9uCiAJICAgICAgZmlsZS1zeXN0ZW0taW5mbwogCSAgICAgIDs7IEVtYWNzIDI4 KyBvbmx5LgogCSAgICAgIGZpbGUtbG9ja2VkLXAgbG9jay1maWxlIG1ha2UtbG9jay1maWxl LW5hbWUgdW5sb2NrLWZpbGUKKwkgICAgICA7OyBFbWFjcyAyOSsgb25seS4KKwkgICAgICBh YmJyZXZpYXRlLWZpbGUtbmFtZQogCSAgICAgIDs7IFRyYW1wIGludGVybmFsIG1hZ2ljIGZp bGUgbmFtZSBmdW5jdGlvbi4KIAkgICAgICB0cmFtcC1zZXQtZmlsZS11aWQtZ2lkKSkKICAg ICAoaWYgKGZpbGUtbmFtZS1hYnNvbHV0ZS1wIChudGggMCBhcmdzKSkKZGlmZiAtLWdpdCBh L3Rlc3QvbGlzcC9uZXQvdHJhbXAtdGVzdHMuZWwgYi90ZXN0L2xpc3AvbmV0L3RyYW1wLXRl c3RzLmVsCmluZGV4IDUyYzYxNTlkYzEuLjY5OGQxOGI1MjggMTAwNjQ0Ci0tLSBhL3Rlc3Qv bGlzcC9uZXQvdHJhbXAtdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL25ldC90cmFtcC10ZXN0 cy5lbApAQCAtMjI4OSw2ICsyMjg5LDMxIEBAIHRyYW1wLXRlc3QwNi1kaXJlY3RvcnktZmls ZS1uYW1lCiAJICAoc2hvdWxkIChzdHJpbmctZXF1YWwgKGZpbGUtbmFtZS1kaXJlY3Rvcnkg ZmlsZSkgZmlsZSkpCiAJICAoc2hvdWxkIChzdHJpbmctZXF1YWwgKGZpbGUtbmFtZS1ub25k aXJlY3RvcnkgZmlsZSkgIiIpKSkpKSkpCiAKKyhlcnQtZGVmdGVzdCB0cmFtcC10ZXN0MDct YWJicmV2aWF0ZS1maWxlLW5hbWUgKCkKKyAgIkNoZWNrIHRoYXQgVHJhbXAgYWJicmV2aWF0 ZXMgZmlsZSBuYW1lcyBjb3JyZWN0bHkuIgorICAoc2tpcC11bmxlc3MgKHRyYW1wLS10ZXN0 LWVuYWJsZWQpKQorICAoc2tpcC11bmxlc3MgKHRyYW1wLS10ZXN0LWVtYWNzMjktcCkpCisK KyAgKGxldCogKChyZW1vdGUtaG9zdCAoZmlsZS1yZW1vdGUtcCB0cmFtcC10ZXN0LXRlbXBv cmFyeS1maWxlLWRpcmVjdG9yeSkpCisgICAgICAgICAoaG9tZS1kaXIgKGV4cGFuZC1maWxl LW5hbWUgKGNvbmNhdCByZW1vdGUtaG9zdCAifiIpKSkpCisgICAgOzsgQ2hlY2sgaG9tZS1k aXIgYWJicmV2aWF0aW9uLgorICAgIChzaG91bGQgKGVxdWFsIChhYmJyZXZpYXRlLWZpbGUt bmFtZSAoY29uY2F0IGhvbWUtZGlyICIvZm9vL2JhciIpKQorICAgICAgICAgICAgICAgICAg IChjb25jYXQgcmVtb3RlLWhvc3QgIn4vZm9vL2JhciIpKSkKKyAgICAoc2hvdWxkIChlcXVh bCAoYWJicmV2aWF0ZS1maWxlLW5hbWUgKGNvbmNhdCByZW1vdGUtaG9zdAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvbm93aGVyZS9zcGVj aWFsIikpCisgICAgICAgICAgICAgICAgICAgKGNvbmNhdCByZW1vdGUtaG9zdCAiL25vd2hl cmUvc3BlY2lhbCIpKSkKKyAgICA7OyBDaGVjayBgZGlyZWN0b3J5LWFiYnJldi1hbGlzdCcg YWJicmV2aWF0aW9uLgorICAgIChsZXQgKChkaXJlY3RvcnktYWJicmV2LWFsaXN0CisgICAg ICAgICAgIGAoKCwoY29uY2F0ICJcXGAiIChyZWdleHAtcXVvdGUgaG9tZS1kaXIpICIvZm9v IikKKyAgICAgICAgICAgICAgLiAsKGNvbmNhdCBob21lLWRpciAiL2YiKSkKKyAgICAgICAg ICAgICAoLChjb25jYXQgIlxcYCIgKHJlZ2V4cC1xdW90ZSByZW1vdGUtaG9zdCkgIi9ub3do ZXJlIikKKyAgICAgICAgICAgICAgLiAsKGNvbmNhdCByZW1vdGUtaG9zdCAiL253IikpKSkp CisgICAgICAoc2hvdWxkIChlcXVhbCAoYWJicmV2aWF0ZS1maWxlLW5hbWUgKGNvbmNhdCBo b21lLWRpciAiL2Zvby9iYXIiKSkKKyAgICAgICAgICAgICAgICAgICAgIChjb25jYXQgcmVt b3RlLWhvc3QgIn4vZi9iYXIiKSkpCisgICAgICAoc2hvdWxkIChlcXVhbCAoYWJicmV2aWF0 ZS1maWxlLW5hbWUgKGNvbmNhdCByZW1vdGUtaG9zdAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9ub3doZXJlL3NwZWNpYWwiKSkKKyAg ICAgICAgICAgICAgICAgICAgIChjb25jYXQgcmVtb3RlLWhvc3QgIi9udy9zcGVjaWFsIikp KSkpKQorCiAoZXJ0LWRlZnRlc3QgdHJhbXAtdGVzdDA3LWZpbGUtZXhpc3RzLXAgKCkKICAg IkNoZWNrIGBmaWxlLWV4aXN0LXAnLCBgd3JpdGUtcmVnaW9uJyBhbmQgYGRlbGV0ZS1maWxl Jy4iCiAgIChza2lwLXVubGVzcyAodHJhbXAtLXRlc3QtZW5hYmxlZCkpCi0tIAoyLjI1LjEK Cg== --------------815EB32426E180BBE894AFA8 Content-Type: text/plain; charset=UTF-8; name="benchmark.el" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="benchmark.el" KHNldHEgdHJhbXAtdmVyYm9zZSAwCiAgICAgIHVzZXItbmFtZSAiamltIgogICAgICByZW1v dGUtaG9zdCAoY29uY2F0ICIvc3NoeDoiIHVzZXItbmFtZSAiQGxvY2FsaG9zdDoiKSkKCihk ZWZ1biBmaWxsLWRpcmVjdG9yeS1hYmJyZXYtYWxpc3QgKGNvdW50KQogIChzZXRxIGRpcmVj dG9yeS1hYmJyZXYtYWxpc3QKICAgICAgICAobGV0IChyZXN1bHQpCiAgICAgICAgICAoZG90 aW1lcyAoaSBjb3VudCByZXN1bHQpCiAgICAgICAgICAgIChzZXRxIHJlc3VsdCAoY29ucyAo Y29ucyAoZm9ybWF0ICJcXGAvaG9tZS9hYmJyJWQiICgxKyBpKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgIi9ob21lL2FiYnIlZCIgaSkpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpKSkpKSkKCihkZWZ1biBydW4tdGVz dCAoY291bnQgJm9wdGlvbmFsIHBhdGgpCiAgKGxldCogKChhYmJyZXZpYXRlLWhvbWUtZGly IG5pbCkKICAgICAgICAgKHBhdGggKG9yIHBhdGggKGNvbmNhdCAiL2hvbWUvIiB1c2VyLW5h bWUgIi9zcmMvcHJvamVjdCIpKSkKICAgICAgICAgKHJlbW90ZS1wYXRoIChjb25jYXQgcmVt b3RlLWhvc3QgcGF0aCkpKQogICAgKGdhcmJhZ2UtY29sbGVjdCkKICAgIChiZW5jaG1hcmsg MTAwMCBgKGFiYnJldmlhdGUtZmlsZS1uYW1lICxwYXRoKSkKICAgIChnYXJiYWdlLWNvbGxl Y3QpCiAgICAoYmVuY2htYXJrIDEwMDAgYChhYmJyZXZpYXRlLWZpbGUtbmFtZSAscmVtb3Rl LXBhdGgpKSkpCgooZmluZC1maWxlIChjb25jYXQgcmVtb3RlLWhvc3QgIn4iKSkKCihtZXNz YWdlICJFbXB0eSBgZGlyZWN0b3J5LWFiYnJldi1hbGlzdCciKQoocnVuLXRlc3QgMTAwMCkK KG1lc3NhZ2UgIiIpCgooZmlsbC1kaXJlY3RvcnktYWJicmV2LWFsaXN0IDEwMCkKKG1lc3Nh Z2UgIjEwMCBpdGVtcyBpbiBgZGlyZWN0b3J5LWFiYnJldi1hbGlzdCcgKG5vIG1hdGNoZXMp IikKKHJ1bi10ZXN0IDEwMDApCihtZXNzYWdlICIiKQoKKG1lc3NhZ2UgIjEwMCBpdGVtcyBp biBgZGlyZWN0b3J5LWFiYnJldi1hbGlzdCcgKGFsbCBtYXRjaGVzKSIpCihydW4tdGVzdCAx MDAwICIvaG9tZS9hYmJyMTAwL3NyYy9wcm9qZWN0IikKKG1lc3NhZ2UgIiIpCgooZmlsbC1k aXJlY3RvcnktYWJicmV2LWFsaXN0IDUwMCkKKG1lc3NhZ2UgIjUwMCBpdGVtcyBpbiBgZGly ZWN0b3J5LWFiYnJldi1hbGlzdCcgKG5vIG1hdGNoZXMpIikKKHJ1bi10ZXN0IDEwMDApCiht ZXNzYWdlICIiKQoKKG1lc3NhZ2UgIjUwMCBpdGVtcyBpbiBgZGlyZWN0b3J5LWFiYnJldi1h bGlzdCcgKGFsbCBtYXRjaGVzKSIpCihydW4tdGVzdCAxMDAwICIvaG9tZS9hYmJyMTAwL3Ny Yy9wcm9qZWN0IikK --------------815EB32426E180BBE894AFA8 Content-Type: text/plain; charset=UTF-8; name="benchmark-results.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="benchmark-results.txt" RW1hY3MgMjkgbWFzdGVyCi0tLS0tLS0tLS0tLS0tLQoKRW1wdHkg4oCYZGlyZWN0b3J5LWFi YnJldi1hbGlzdOKAmQpMb2NhbCB8IEVsYXBzZWQgdGltZTogMC4wODIwOTRzICgwLjAxMjk4 MXMgaW4gMSBHQ3MpClRyYW1wIHwgRWxhcHNlZCB0aW1lOiAwLjU3MDQ0MXMgKDAuMTc1MDEz cyBpbiAxMyBHQ3MpCgoxMDAgaXRlbXMgaW4g4oCYZGlyZWN0b3J5LWFiYnJldi1hbGlzdOKA mSAobm8gbWF0Y2hlcykKTG9jYWwgfCBFbGFwc2VkIHRpbWU6IDAuMzM0MzIwcyAoMC4xMjkz NTFzIGluIDEwIEdDcykKVHJhbXAgfCBFbGFwc2VkIHRpbWU6IDAuODM4MzY2cyAoMC4yOTQz MzBzIGluIDIyIEdDcykKCjEwMCBpdGVtcyBpbiDigJhkaXJlY3RvcnktYWJicmV2LWFsaXN0 4oCZIChhbGwgbWF0Y2hlcykKTG9jYWwgfCBFbGFwc2VkIHRpbWU6IDAuNTMwMTg3cyAoMC4z MjAxNjVzIGluIDI1IEdDcykKVHJhbXAgfCBFbGFwc2VkIHRpbWU6IDAuODM2MTkwcyAoMC4y ODUzNzFzIGluIDIyIEdDcykKCjUwMCBpdGVtcyBpbiDigJhkaXJlY3RvcnktYWJicmV2LWFs aXN04oCZIChubyBtYXRjaGVzKQpMb2NhbCB8IEVsYXBzZWQgdGltZTogMS4wODkyMjlzICgw LjQ5MjIyNXMgaW4gMzggR0NzKQpUcmFtcCB8IEVsYXBzZWQgdGltZTogMS41ODczNTFzICgw LjY0OTAxNHMgaW4gNTAgR0NzKQoKNTAwIGl0ZW1zIGluIOKAmGRpcmVjdG9yeS1hYmJyZXYt YWxpc3TigJkgKGFsbCBtYXRjaGVzKQpMb2NhbCB8IEVsYXBzZWQgdGltZTogMS4yOTIxMDNz ICgwLjY4NzYzMXMgaW4gNTMgR0NzKQpUcmFtcCB8IEVsYXBzZWQgdGltZTogMS41OTIyMTBz ICgwLjY1MTA5MHMgaW4gNTAgR0NzKQoKCldpdGggcGF0Y2gKLS0tLS0tLS0tLQoKRW1wdHkg 4oCYZGlyZWN0b3J5LWFiYnJldi1hbGlzdOKAmQpMb2NhbCB8IEVsYXBzZWQgdGltZTogMC4w NzYxMzZzICgwLjAxMjk0OXMgaW4gMSBHQ3MpClRyYW1wIHwgRWxhcHNlZCB0aW1lOiAwLjUx MDQ0NXMgKDAuMTYwMDUycyBpbiAxMiBHQ3MpCgoxMDAgaXRlbXMgaW4g4oCYZGlyZWN0b3J5 LWFiYnJldi1hbGlzdOKAmSAobm8gbWF0Y2hlcykKTG9jYWwgfCBFbGFwc2VkIHRpbWU6IDAu MzQyNTA5cyAoMC4xMzA5MTZzIGluIDEwIEdDcykKVHJhbXAgfCBFbGFwc2VkIHRpbWU6IDAu NzgwMjAxcyAoMC4yODExMThzIGluIDIxIEdDcykKCjEwMCBpdGVtcyBpbiDigJhkaXJlY3Rv cnktYWJicmV2LWFsaXN04oCZIChhbGwgbWF0Y2hlcykKTG9jYWwgfCBFbGFwc2VkIHRpbWU6 IDAuNTM4MzUzcyAoMC4zMjM4OThzIGluIDI1IEdDcykKVHJhbXAgfCBFbGFwc2VkIHRpbWU6 IDAuNjk5MjYycyAoMC4yNDU5NDJzIGluIDE5IEdDcykKCjUwMCBpdGVtcyBpbiDigJhkaXJl Y3RvcnktYWJicmV2LWFsaXN04oCZIChubyBtYXRjaGVzKQpMb2NhbCB8IEVsYXBzZWQgdGlt ZTogMS4xMDQ3ODZzICgwLjUwMDg4MHMgaW4gMzggR0NzKQpUcmFtcCB8IEVsYXBzZWQgdGlt ZTogMS41MjQ2NjJzICgwLjY0MjIzNnMgaW4gNDkgR0NzKQoKNTAwIGl0ZW1zIGluIOKAmGRp cmVjdG9yeS1hYmJyZXYtYWxpc3TigJkgKGFsbCBtYXRjaGVzKQpMb2NhbCB8IEVsYXBzZWQg dGltZTogMS4yOTkxNjBzICgwLjY4Nzg2N3MgaW4gNTMgR0NzKQpUcmFtcCB8IEVsYXBzZWQg dGltZTogMS41MTk4MjlzICgwLjY1MTY5MXMgaW4gNDcgR0NzKQoK --------------815EB32426E180BBE894AFA8--