From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Christopher Genovese Newsgroups: gmane.emacs.devel Subject: Re: Ibuffer improvements: filtering, documentation, bug fix, tests Date: Tue, 22 Nov 2016 18:45:10 -0500 Message-ID: References: <877f7zhg79.fsf@gmail.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a1143d830228c7e0541ec5eda X-Trace: blaine.gmane.org 1479858379 15931 195.159.176.226 (22 Nov 2016 23:46:19 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 22 Nov 2016 23:46:19 +0000 (UTC) Cc: emacs-devel To: Tino Calancha Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Nov 23 00:46:07 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c9KlK-000294-QI for ged-emacs-devel@m.gmane.org; Wed, 23 Nov 2016 00:46:07 +0100 Original-Received: from localhost ([::1]:58558 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c9KlM-0001hp-C1 for ged-emacs-devel@m.gmane.org; Tue, 22 Nov 2016 18:46:08 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:48212) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c9Kl1-0001hO-8X for emacs-devel@gnu.org; Tue, 22 Nov 2016 18:45:58 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c9Kko-0008IS-Kh for emacs-devel@gnu.org; Tue, 22 Nov 2016 18:45:47 -0500 Original-Received: from mail-io0-x22e.google.com ([2607:f8b0:4001:c06::22e]:33906) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1c9Kkn-0008Hp-H1 for emacs-devel@gnu.org; Tue, 22 Nov 2016 18:45:34 -0500 Original-Received: by mail-io0-x22e.google.com with SMTP id c21so87769381ioj.1 for ; Tue, 22 Nov 2016 15:45:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=dgMxU1QnHpxHQPFKeyJKLtnO7uB9f1e0mdmUBQL7jr4=; b=I/blAiJ8qM7UT7mr55+u4Tyg+/uMRN/63tFcHAgU4hjphI8bPapBTy9Ep6/3M9Osiy 55T2B/P1cGEDS0dpen6p2S/PNFAABo5B/ZR5OvWZNEXXDA6kIehnacYDqbDw9sPb8c4N RF+C8XhyYk8hmlqaBe49LOJl9Ew6XElztog2en2zCvuKL2B2CDMI9r4k2DsWiYkZ0xHJ 6skmu+MIsX7OMEdyrFk8MqOIlspSyOg3SWQUFV1oFCMW1tyqvsWZwBROTJTARhxN9ssL uj56nZLg+yLyb6Rr3cArIK6XbnXOfFusKfbm5shoZsdVaqoJMG8Tte5+rkDDjGu/lC0j SO8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=dgMxU1QnHpxHQPFKeyJKLtnO7uB9f1e0mdmUBQL7jr4=; b=f8l7YZ6jJvBjX2UvLnv26R6j/vWZTPqSuSBLpRrwMg+1JFcPHYyPUc/Lqwo+iwPAo0 191kFXebdHO5RVq/vZFtKBL/34pjvMP4DqZ12tTkKiCrqT70imheIB5Jw1SitCZnQSEI H0Q1AxHa+Ob+b07S/8KwzHnOQCqggki8hBTjUXJhEAZmq8XeyZZlzR4U/wISU9mH4Q7o Lct7umNCQ/SyTVRx/C5TBz+Mzk2OpXzFWHd7k0L9945uoXS/bSDl9EvUiLI19Equj2xy U6RdQQmF8r4wHw24h9LB7UgSMK1NoxBme9uQdv06gwASOpLg5UeL2QRgETaOpsPWIjda 7lgQ== X-Gm-Message-State: AKaTC00ksU99wEz+Fi2VlqfSrkROhECQ0IfUtuzTFsf0AEEXUO5aP7HPU/uuK7C9I00i9pW4GLNPEV9txprNnQ== X-Received: by 10.36.5.80 with SMTP id 77mr760984itl.90.1479858330939; Tue, 22 Nov 2016 15:45:30 -0800 (PST) Original-Received: by 10.107.12.35 with HTTP; Tue, 22 Nov 2016 15:45:10 -0800 (PST) In-Reply-To: <877f7zhg79.fsf@gmail.com> X-Google-Sender-Auth: wMr65wfANZOi5ZXB0o-ceaJBKns X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4001:c06::22e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:209550 Archived-At: --001a1143d830228c7e0541ec5eda Content-Type: multipart/alternative; boundary=001a1143d830228c780541ec5ed8 --001a1143d830228c780541ec5ed8 Content-Type: text/plain; charset=UTF-8 Hi Tino, Thanks so much for your detailed and very helpful comments. I've made almost all your suggested changes, and for the few exceptions, I changed the code in the direction I think you intended. Below, I give specific responses to each of your points. Please take a look. There are a few questions/points for your consideration therein. I haven't had a chance yet to split the commit to isolate the saved filters fix, but I will do that tomorrow and submit appropriate patches and bug reports. (Below, I do describe the bug more precisely and give an example.) I still thought it would be useful to respond to your suggestions now. I've attached a patch file of the most recent commit on my branch against the current master for reference. Thanks again for all your feedback and help! Regards, Chris > ibuffer-filter-by-filename-extension > > I would call this: > ibuffer-filter-by-extension > or > ibuffer-filter-by-file-extension I agree that those are simpler. I had gone with the more complicated name to make clear that also filters on whether the buffer is visiting a file. But that is also clear with the simpler name. I've used file-extension to make clear that this applies to file buffers only. By related reasoning, I've also changed filename-directory and filename-base to directory and basename; see the note below in response to your basename comment for how I've handled these in the revision. > ibuffer-filter-by-filename-root I have eliminated this as you suggested. > You mention somewhere in the patch: > ;; This should probably be called pathname but kept for backward compatibility > The word 'filename' is right... Good point. I've eliminated this comment. > ibuffer-filter-by-filename-base > I would call this: > ibuffer-filter-by-basename > > But what i would do, instead of defining this command and binding it > to '/ F' i would define instead: I see your point, but I still think there are good reasons to keep this one. This filter is useful to prevent inadvertent matching both against random parts of a file's path and against utility (non-file) buffers with systematically related names. I think this is a fairly common use case. (For me, this is one of the filters I use most often interactively.) Moreover, the buffer name and the buffer file name need not be the same (e.g., with uniquify/ multiple files of the same name, or the edge case of explicit renaming). The buffer name filter you suggest is already available as ibuffer-filter-by-name (/ n). Here's what I've done on this: 1. Add a `ibuffer-filter-by-visiting-file' (/ v) that selects buffers that are visiting a file. This is useful in its own right (see next item). It also makes '/ n' + '/ v' [that is, (and (name . "...") (visiting-file))] almost the same as my '/ F', or put another way, makes '/ F' a more precise shortcut. 2. Changed `ibuffer-filter-by-filename-directory' to `ibuffer-filter-by-directory' and changed the functionality so that in a file buffer it matches against the file's path but in a non-file buffer matches against default-directory. This is of practical interest and '/ /' + '/ v' [that is, (and (directory . "...") (visiting-file))] gives the original functionality quite simply. 3. Keep the `ibuffer-filter-by-basename', making the name change you suggested and keeping it on '/ F'. It does no harm here and, I think, adds some value. Let me know what you think. > I like the new command `ibuffer-filter-chosen-by-completion', and > i think your proposal of binding it to '/ TAB' is a good choice; the > other command previously bound to '/ TAB' its also bound to '/ t', so > this change seems for better. > > Similar thoughs applies to binding `ibuffer-filter-by-filename-directory' > to '/ /'; this is consistent with `ibuffer-mark-dired-buffers' ('* /'). > Your alternative binding for `ibuffer-filter-disable' ('/ DEL') > is easy to remember. > > That said, reassign key bindings is usually a matter of concern. > It might be people get used to '/ TAB' and '/ /' standing for their > current bindings. It must be a consensus before changing any long > standing key bindings. Understood. I think the new bindings are highly mnemonic and will happily advocate for them. But the need for consensus makes total sense. (Note: '/ d' is already bound to ibuffer-decompose-filter or I would have used it. I felt that the change I made keeps the mnemonic strong with less overall impact -- what's a better match for decompose?, for instance.) > You use a macro from subr-x.el in ibuf-ext.el, so you need to: > (eval-when-compile (require 'subr-x)) Done. Good catch! > There are several trailing white spaces in your patch. Fixed. > Your commit message don't follow the Emacs standards. Thanks for spelling that out. I've fixed this on the new commit rather than amend the old message and modify the history. If you think more is required here, let me know. > You might want to write NEWS entry for the new features. Done, and included in this commit/patch. > I would change the wording in `ibuffer-included-in-filters-p' doc string. Done. > Once you add `ibuffer-and-filter' there is code duplication...I would > extract the common code in a new auxiliar function.... Done. I removed some additional code duplication by using ibuffer-decompose-filter as well and more with the push, while eliminating unnecessary nesting in the result. > In `ibuffer-filter-by-starred-name' you are matching a buffer name > starting with "*". That covers all special buffers but it might > add some garbage. That makes sense. This means thinking of starred buffers as special entities, in which case you don't want to match '*foo''s. If you want those, you can filter by name explicitly. I've made the suggested change. > Could you create a receipt where the bug cause an actual failure? > ... I don't object to the new format, though. > I agree is more clear when writing filters by hand. > > I much prefer if this part of the patch go to a separated bug report. OK, I'll do that. Just for the discussion here, the issue is at the following point in the *original* `ibuffer-save-filters': (ibuffer-aif (assoc name ibuffer-saved-filters) (setcdr it filters) (push (list name filters) ibuffer-saved-filters)) This treats existing filters (setcdr) and new filters (push) inconsistently. Using the default value of ibuffer-saved-filters (("gnus" ((or (mode . message-mode) (mode . mail-mode) (mode . gnus-group-mode) (mode . gnus-summary-mode) (mode . gnus-article-mode)))) ("programming" ((or (mode . emacs-lisp-mode) (mode . cperl-mode) (mode . c-mode) (mode . java-mode) (mode . idl-mode) (mode . lisp-mode))))) and doing (ibuffer-save-filters "foo" '((name . "foo") (derived-mode . text-mode))) (ibuffer-save-filters "gnus" '((filename . ".") (or (derived-mode . prog-mode) (mode . "compilation-mode")))) gives the following incorrect value for `ibuffer-saved-filters' (("foo" ((name . "foo") (derived-mode . text-mode))) ("gnus" (filename . ".") (or (derived-mode . prog-mode) (mode . "compilation-mode"))) ("programming" ((or (mode . emacs-lisp-mode) (mode . cperl-mode) (mode . c-mode) (mode . java-mode) (mode . idl-mode) (mode . lisp-mode))))) As you can see, the existing entry "gnus" breaks the expected format. So to be more precise than I was earlier: In addition to the unnecessary nesting level, this breaks anytime you save to an existing filter. My change replaces the `list' with a `cons' and replaces various `cadr''s with `cdr''s, making the two cases consistent and eliminating the extra nesting. Tomorrow, I will pull out the saved filter changes and submit a formal bug report with patches for the two approaches, making the other ibuffer changes independent. For the moment, to facilitate discussion, I've included the commit with my previous approach included and attached the patch. Sorry for the extra delay on doing the splitting, but I'm on it. On Sat, Nov 19, 2016 at 6:17 AM, Tino Calancha wrote: > Christopher Genovese writes: > > > I'd like to submit some mild changes in Ibuffer (ibuffer.el, ibuf-ext.el, > > and ibuffer-tests.el) > > > The proposed changes are as follows: > > > > + Compound filters > > > > Add support for 'and' and normalize handling of 'not' to allow the > > original "spliced" format as well as a more lispy "sexp" format. > > > > Original documentation for the structure of compound filters was > > almost completely lacking. The updated code documents compound > > filter structure and clarifies the language used throughout, > > providing a single authoritative source for documentation on each > > concept. > > > > Fixed bug in 'saved' filter handling. There was an inconsistency in > > how the data was accessed at different points that would cause > > failure. (I do wonder if anyone ever uses saved filters based on > > this.) There are two choices in how to fix this; I made one but am > > open to both. > > > > + New pre-defined filters and an interactive filtering command > > > > Several new filters are defined by default to handle some very > > common filtering tasks (e.g., matching filename components since > > the 'filename' filter matches on the absolute pathname). A new > > command is offered to select a filter by completion on the > > descriptions, which is very easy to use without remembering key > > bindings. > > > > + Documentation fixes throughout ibuf-ext.el > > > > + Many new tests and fixed bug in original test. > > > Hi Chris, > > thank you very much for your time preparing this patch! > I have some comments. > > I) > > ibuffer-filter-by-filename-extension > > I would call this: > ibuffer-filter-by-extension > or > ibuffer-filter-by-file-extension > > II) > *) > ibuffer-filter-by-filename-root > > i don't think this deserves a separated keybinding. Most of > the time you will be well served with > `ibuffer-filter-by-filename-base'. > Actually, I wouldn't introduce `ibuffer-filter-by-filename-root' at all. > > You mention somewhere in the patch: > ;; This should probably be called pathname but kept for backward > compatibility > The word 'filename' is right; in Emacs it's standard to refer as filename > to the > _full_ name of the file. > > *) > ibuffer-filter-by-filename-base > I would call this: > ibuffer-filter-by-basename > > But what i would do, instead of defining this command and binding it > to '/ F' i would define instead: > > (define-ibuffer-filter buffer-name > "Limit current view to buffers with its name matching QUALIFIER." > (:description "buffer name" > :reader (read-from-minibuffer > "Filter by buffer name (regex): ")) > (string-match qualifier (buffer-name buf))) > > And i would bind it to '/ b'. > This has the advantage that it would match any buffers not just those > visiting a file on disk. > > *) > I like the new command `ibuffer-filter-chosen-by-completion', and > i think your proposal of binding it to '/ TAB' is a good choice; the > other command previously bound to '/ TAB' its also bound to '/ t', so > this change seems for better. > > Similar thoughs applies to binding `ibuffer-filter-by-filename-directory' > to '/ /'; this is consistent with `ibuffer-mark-dired-buffers' ('* /'). > Your alternative binding for `ibuffer-filter-disable' ('/ DEL') > is easy to remember. > > That said, reassign key bindings is usually a matter of concern. > It might be people get used to '/ TAB' and '/ /' standing for their > current bindings. It must be a consensus before changing any long > standing key bindings. > Alternatively, we could bind `ibuffer-mark-dired-buffers' to '/ d'. > > III) > You use a macro from subr-x.el in ibuf-ext.el, so you need to: > (eval-when-compile (require 'subr-x)) > > IV) There are several trailing white spaces in your patch. > > V) Your commit message don't follow the Emacs standards. For instance, > instead of: > * lisp/ibuf-ext.el: added paragraph to file commentary > * lisp/ibuf-ext.el (ibuffer-saved-filters): clarified documentation, > specified customization type, and simplified data format to be > consistent with `ibuffer-save-filters' > * lisp/ibuf-ext.el (ibuffer-update-saved-filters-format): new function > that transforms `ibuffer-saved-filters'-style alist format > > I should read: > * lisp/ibuf-ext.el: added paragraph to file commentary > (ibuffer-saved-filters): clarified documentation, > specified customization type, and simplified data format to be > consistent with `ibuffer-save-filters'. > (ibuffer-update-saved-filters-format): new function > that transforms `ibuffer-saved-filters'-style alist format. > > that is: End sentences with a period. Write the modified file > just one. > > You might want to write NEWS entry for the new features. > > VI) > I would change the wording in `ibuffer-included-in-filters-p' doc string. > Instead of > "Does the buffer BUF successfully pass all of the given FILTERS?" > someting like: > "Return non-nil if BUF pass all FILTERS." > > VII) > Once you add `ibuffer-and-filter' there is code duplication with > `ibuffer-or-filter'. I would extract the common code in a new > auxiliar function `ibuffer--or-and-filter' as follows: > > (defun ibuffer--or-and-filter (op arg) > (if arg > (progn > (when (or (null ibuffer-filtering-qualifiers) > (not (eq op (caar ibuffer-filtering-qualifiers)))) > (error "Top filter is not an %s" (upcase (symbol-name op)))) > (let ((lim (pop ibuffer-filtering-qualifiers))) > (setq ibuffer-filtering-qualifiers > (nconc (cdr lim) ibuffer-filtering-qualifiers)))) > (when (< (length ibuffer-filtering-qualifiers) 2) > (error "Need two filters to %s" (upcase (symbol-name op)))) > ;; If the second filter is an op, just add to it. > (let ((first (pop ibuffer-filtering-qualifiers)) > (second (pop ibuffer-filtering-qualifiers))) > (if (eq op (car second)) > (push (nconc (list op first) (cdr second)) > ibuffer-filtering-qualifiers) > (push (list op first second) > ibuffer-filtering-qualifiers)))) > (ibuffer-update nil t)) > > ;;;###autoload > (defun ibuffer-or-filter (&optional reverse) > "Replace the top two filters in this buffer with their logical OR. > If optional argument REVERSE is non-nil, instead break the top OR > filter into parts." > (interactive "P") > (ibuffer--or-and-filter 'or reverse)) > > ;;;###autoload > (defun ibuffer-and-filter (&optional decompose) > "Replace the top two filters in this buffer with their logical AND. > If optional argument DECOMPOSE is non-nil, instead break the top AND > filter into parts." > (interactive "P") > (ibuffer--or-and-filter 'and decompose)) > > IX) > In `ibuffer-filter-by-starred-name' you are matching a buffer name > starting with "*". That covers all special buffers but it might > add some garbage. For instance, sometimes i miss-type a new buffer > "*foo", and then i just make a new one "*foo*" without deleting > "*foo". I prefer if the filter do not show "*foo". > I use the following more paranoid regexp: > "\\`\\*[^*]+\\*\\(?\\)\\'" > This regexp matches "*foo*" and "*foo*<2>" but it doesn't match neither > "*foo" nor "foo*". > > X) > > Fixed bug in 'saved' filter handling. There was an inconsistency in > > how the data was accessed at different points that would cause > > failure. (I do wonder if anyone ever uses saved filters based on > > this.) There are two choices in how to fix this; I made one but am > > open to both. > Could you create a receipt where the bug cause an actual failure? > > Even if there is no failure i agree it looks nicer because you decrease > 1 level the nesting, and make `ibuffer-saved-filters' looks similar than > `ibuffer-saved-filter-groups'. That is an advantage when the user is > writing filters by hand; but usually an user compose the filters from > Ibuffer, > and save them with '/ s', so the actual format is an implementation detail. > > As you know, we have an implicit 'AND', that is the reason why the original > implemention lack of an explicit `and'. I don't object to the new format, > though. > I agree is more clear when writing filters by hand. > > I much prefer if this part of the patch go to a separated bug report. > > Cheers, > Tino > --001a1143d830228c780541ec5ed8 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Tino,

Thanks so much for your detailed and very = helpful comments.

I've made almost all your suggested changes, a= nd for the few
exceptions, I changed the code in the direction I think y= ou
intended.

Below, I give specific responses to each of your poi= nts.
Please take a look. There are a few questions/points for
your co= nsideration therein.

I haven't had a chance yet to split the com= mit to isolate the
saved filters fix, but I will do that tomorrow and su= bmit
appropriate patches and bug reports. (Below, I do describe the
b= ug more precisely and give an example.)

I still thought it would be = useful to respond to your
suggestions now. I've attached a patch fil= e of the most recent
commit on my branch against the current master for = reference.

Thanks again for all your feedback and help!

=C2= =A0=C2=A0 Regards, Chris


> ibuffer-filter-by-filename-extensi= on
>=C2=A0
> I would call this:
> ibuffer-filter-by-exte= nsion
> or
> ibuffer-filter-by-file-extension

I agree th= at those are simpler. I had gone with the more complicated
name to make = clear that also filters on whether the buffer is visiting a
file. But th= at is also clear with the simpler name.

I've used file-extension= to make clear that this applies to file buffers
only. By related reason= ing, I've also changed filename-directory and
filename-base to direc= tory and basename; see the note below in
response to your basename comme= nt for how I've handled these in the
revision.


> ibuff= er-filter-by-filename-root

I have eliminated this as you suggested.<= br>

> You mention somewhere in the patch:
> ;; This should = probably be called pathname but kept for backward compatibility
> The= word 'filename' is right...

Good point. I've eliminated= this comment.


> ibuffer-filter-by-filename-base
> I wo= uld call this:
> ibuffer-filter-by-basename
>=C2=A0
> Bu= t what i would do, instead of defining this command and binding it
> = to '/ F' i would define instead:

I see your point, but I sti= ll think there are good reasons to keep this
one. This filter is useful = to prevent inadvertent matching both against
random parts of a file'= s path and against utility (non-file) buffers
with systematically relate= d names. I think this is a fairly common use
case. (For me, this is one = of the filters I use most often
interactively.) Moreover, the buffer nam= e and the buffer file name need
not be the same (e.g., with uniquify/ mu= ltiple files of the same name,
or the edge case of explicit renaming).
The buffer name filter you suggest is already available as
ibuffer= -filter-by-name (/ n).

Here's what I've done on this:
=C2=A01. Add a `ibuffer-filter-by-visiting-file' (/ v) that selects=C2=A0=C2=A0=C2=A0 buffers that are visiting a file. This is useful in its= own
=C2=A0=C2=A0=C2=A0 right (see next item). It also makes '/ n= 9; + '/ v' [that is,
=C2=A0=C2=A0=C2=A0 (and (name . "...&q= uot;) (visiting-file))] almost the same as
=C2=A0=C2=A0=C2=A0 my '/ = F', or put another way, makes '/ F' a more precise
=C2=A0=C2= =A0=C2=A0 shortcut.

=C2=A02. Changed `ibuffer-filter-by-filename-dir= ectory' to
=C2=A0=C2=A0=C2=A0 `ibuffer-filter-by-directory' and = changed the functionality so that
=C2=A0=C2=A0=C2=A0 in a file buffer it= matches against the file's path but in a
=C2=A0=C2=A0=C2=A0 non-fil= e buffer matches against default-directory. This is of
=C2=A0=C2=A0=C2= =A0 practical interest and '/ /' + '/ v'
=C2=A0=C2=A0=C2= =A0 [that is, (and (directory . "...") (visiting-file))] gives th= e original
=C2=A0=C2=A0=C2=A0 functionality quite simply.

=C2=A03= . Keep the `ibuffer-filter-by-basename', making the name
=C2=A0=C2= =A0=C2=A0 change you suggested and keeping it on '/ F'.=C2=A0 It do= es
=C2=A0=C2=A0=C2=A0 no harm here and, I think, adds some value.
Let me know what you think.


> I like the new command `ibuffe= r-filter-chosen-by-completion', and
> i think your proposal of bi= nding it to '/ TAB' is a good choice; the
> other command pre= viously bound to '/ TAB' its also bound to '/ t', so
>= ; this change seems for better.
>=C2=A0
> Similar thoughs appl= ies to binding `ibuffer-filter-by-filename-directory'
> to '/= /'; this is consistent with `ibuffer-mark-dired-buffers' ('* /= ').
> Your alternative binding for `ibuffer-filter-disable' (= '/ DEL')
> is easy to remember.
>=C2=A0
> That s= aid, reassign key bindings is usually a matter of concern.
> It might= be people get used to '/ TAB' and '/ /' standing for their=
> current bindings.=C2=A0 It must be a consensus before changing any= long
> standing key bindings.

Understood.

I think the= new bindings are highly mnemonic and will happily advocate
for them. Bu= t the need for consensus makes total sense.

(Note: '/ d' is = already bound to ibuffer-decompose-filter or I would have
used it. I fel= t that the change I made keeps the mnemonic strong with
less overall imp= act -- what's a better match for decompose?, for instance.)


= > You use a macro from subr-x.el in ibuf-ext.el, so you need to:
>= (eval-when-compile (require 'subr-x))

Done. Good catch!

=
> There are several trailing white spaces in your patch.

Fixe= d.


> Your commit message=C2=A0 don't follow the Emacs sta= ndards.

Thanks for spelling that out. I've fixed this on the new=
commit rather than amend the old message and modify
the history. If = you think more is required here, let
me know.


> You might= want to write NEWS entry for the new features.

Done, and included i= n this commit/patch.


> I would change the wording in `ibuffer= -included-in-filters-p' doc string.

Done.


> Once y= ou add `ibuffer-and-filter' there is code duplication...I would
>= extract the common code in a new auxiliar function....

Done. I remo= ved some additional code duplication by using
ibuffer-decompose-filter a= s well and more with the push, while
eliminating unnecessary nesting in = the result.


> In `ibuffer-filter-by-starred-name' you are= matching a buffer name
> starting with "*".=C2=A0 That cov= ers all special buffers but it might
> add some garbage.

That = makes sense. This means thinking of starred buffers as special
entities,= in which case you don't want to match '*foo''s. If you wan= t
those, you can filter by name explicitly. I've made the suggested<= br>change.


> Could you create a receipt where the bug cause a= n actual failure?
> ... I don't object to the new format, though.=
> I agree is more clear when writing filters by hand.
>
>= ; I much prefer if this part of the patch go to a separated bug report.
=
OK, I'll do that. Just for the discussion here, the issue is
at = the following point in the *original* `ibuffer-save-filters':

= =C2=A0 (ibuffer-aif (assoc name ibuffer-saved-filters)
=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 (setcdr it filters)
=C2=A0=C2=A0=C2=A0 (push (list name = filters) ibuffer-saved-filters))

This treats existing filters (setcd= r) and new filters (push)
inconsistently. Using the default value of ibu= ffer-saved-filters

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ((&quo= t;gnus"
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ((or=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (mod= e . message-mode)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 (mode . mail-mode)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 (mode . gnus-group-mode)
=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (mode . gnus-summary-mode)=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (mod= e . gnus-article-mode))))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 ("programming"
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 ((or
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 (mode . emacs-lisp-mode)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (mode . cperl-mode)
=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (mode . c-mode)
=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (mode . java-m= ode)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 = (mode . idl-mode)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 (mode . lisp-mode)))))

and doing

=C2=A0=C2=A0 (i= buffer-save-filters "foo" '((name . "foo") (derived= -mode . text-mode)))
=C2=A0=C2=A0 (ibuffer-save-filters "gnus"= '((filename . ".")
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 (or (derived-mode . prog-mode)
=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (mode . "compilation-mod= e"))))

gives the following incorrect value for `ibuffer-saved-f= ilters'

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (("foo&q= uot;
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ((name . &qu= ot;foo")
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 (derived-mode . text-mode)))
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 ("gnus"
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 (filename . ".")
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 (or
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 (derived-mode . prog-mode)
=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (mode . "compilation-mode"))= )
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ("programming&qu= ot;
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ((or
=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (mode . ema= cs-lisp-mode)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 (mode . cperl-mode)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 (mode . c-mode)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (mode . java-mode)
=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (mode . idl-mode)
= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (mode . = lisp-mode)))))

As you can see, the existing entry "gnus" b= reaks the expected format.
So to be more precise than I was earlier: In = addition to the unnecessary
nesting level, this breaks anytime you save = to an existing filter. My
change replaces the `list' with a `cons= 9; and replaces various `cadr''s
with `cdr''s, making th= e two cases consistent and eliminating the extra
nesting.

Tomorr= ow, I will pull out the saved filter changes and submit a
formal bug rep= ort with patches for the two approaches, making
the other ibuffer change= s independent. For the moment, to
facilitate discussion, I've includ= ed the commit with my previous
approach included and attached the patch.= Sorry for the extra
delay on doing the splitting, but I'm on it.


On= Sat, Nov 19, 2016 at 6:17 AM, Tino Calancha <tino.calancha@gmail.c= om> wrote:
Christopher Genovese <genovese@cmu.= edu> writes:

> I'd like to submit some mild changes in Ibuffer (ibuffer.el, ibuf-= ext.el,
> and ibuffer-tests.el)

> The proposed changes are as follows:
>
>=C2=A0 =C2=A0+ Compound filters
>
>=C2=A0 =C2=A0 =C2=A0Add support for 'and' and normalize handlin= g of 'not' to allow the
>=C2=A0 =C2=A0 =C2=A0original "spliced" format as well as a mo= re lispy "sexp" format.
>
>=C2=A0 =C2=A0 =C2=A0Original documentation for the structure of compoun= d filters was
>=C2=A0 =C2=A0 =C2=A0almost completely lacking. The updated code documen= ts compound
>=C2=A0 =C2=A0 =C2=A0filter structure and clarifies the language used th= roughout,
>=C2=A0 =C2=A0 =C2=A0providing a single authoritative source for documen= tation on each
>=C2=A0 =C2=A0 =C2=A0concept.
>
>=C2=A0 =C2=A0 =C2=A0Fixed bug in 'saved' filter handling. There= was an inconsistency in
>=C2=A0 =C2=A0 =C2=A0how the data was accessed at different points that = would cause
>=C2=A0 =C2=A0 =C2=A0failure. (I do wonder if anyone ever uses saved fil= ters based on
>=C2=A0 =C2=A0 =C2=A0this.) There are two choices in how to fix this; I = made one but am
>=C2=A0 =C2=A0 =C2=A0open to both.
>
>=C2=A0 =C2=A0+ New pre-defined filters and an interactive filtering com= mand
>
>=C2=A0 =C2=A0 =C2=A0Several new filters are defined by default to handl= e some very
>=C2=A0 =C2=A0 =C2=A0common filtering tasks (e.g., matching filename com= ponents since
>=C2=A0 =C2=A0 =C2=A0the 'filename' filter matches on the absolu= te pathname). A new
>=C2=A0 =C2=A0 =C2=A0command is offered to select a filter by completion= on the
>=C2=A0 =C2=A0 =C2=A0descriptions, which is very easy to use without rem= embering key
>=C2=A0 =C2=A0 =C2=A0bindings.
>
>=C2=A0 =C2=A0+ Documentation fixes throughout ibuf-ext.el
>
>=C2=A0 =C2=A0+ Many new tests and fixed bug in original test.
>
Hi Chris,

thank you very much for your time preparing this patch!
I have some comments.

I)

ibuffer-filter-by-filename-extension

I would call this:
ibuffer-filter-by-extension
or
ibuffer-filter-by-file-extension

II)
*)
ibuffer-filter-by-filename-root

i don't think this deserves a separated keybinding.=C2=A0 Most of
the time you will be well served with
`ibuffer-filter-by-filename-base'.
Actually, I wouldn't introduce `ibuffer-filter-by-filename-root= 9; at all.

You mention somewhere in the patch:
;; This should probably be called pathname but kept for backward compatibil= ity
The word 'filename' is right; in Emacs it's standard to refer a= s filename to the
_full_ name of the file.

*)
ibuffer-filter-by-filename-base
I would call this:
ibuffer-filter-by-basename

But what i would do, instead of defining this command and binding it
to '/ F' i would define instead:

(define-ibuffer-filter buffer-name
=C2=A0 =C2=A0 "Limit current view to buffers with its name matching QU= ALIFIER."
=C2=A0 (:description "buffer name"
=C2=A0 =C2=A0:reader (read-from-minibuffer
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 "Filter by buffer name (rege= x): "))
=C2=A0 (string-match qualifier (buffer-name buf)))

And i would bind it to '/ b'.
This has the advantage that it would match any buffers not just those
visiting a file on disk.

*)
I like the new command `ibuffer-filter-chosen-by-completion', and<= br> i think your proposal of binding it to '/ TAB' is a good choice; th= e
other command previously bound to '/ TAB' its also bound to '/ = t', so
this change seems for better.

Similar thoughs applies to binding `ibuffer-filter-by-filename-directo= ry'
to '/ /'; this is consistent with `ibuffer-mark-dired-buffers' = ('* /').
Your alternative binding for `ibuffer-filter-disable' ('/ DEL')=
is easy to remember.

That said, reassign key bindings is usually a matter of concern.
It might be people get used to '/ TAB' and '/ /' standing f= or their
current bindings.=C2=A0 It must be a consensus before changing any long
standing key bindings.
Alternatively, we could bind `ibuffer-mark-dired-buffers' to '/ d&#= 39;.

III)
You use a macro from subr-x.el in ibuf-ext.el, so you need to:
(eval-when-compile (require 'subr-x))

IV) There are several trailing white spaces in your patch.

V) Your commit message=C2=A0 don't follow the Emacs standards.=C2=A0 Fo= r instance,
instead of:
* lisp/ibuf-ext.el: added paragraph to file commentary
* lisp/ibuf-ext.el (ibuffer-saved-filters): clarified documentation,
=C2=A0 specified customization type, and simplified data format to be
=C2=A0 consistent with `ibuffer-save-filters'
* lisp/ibuf-ext.el (ibuffer-update-saved-filters-format): new function=
=C2=A0 that transforms `ibuffer-saved-filters'-style alist format

I should read:
* lisp/ibuf-ext.el: added paragraph to file commentary
(ibuffer-saved-filters): clarified documentation,
specified customization type, and simplified data format to be
consistent with `ibuffer-save-filters'.
(ibuffer-update-saved-filters-format): new function
that transforms `ibuffer-saved-filters'-style alist format.

that is: End sentences with a period.=C2=A0 Write the modified file
just one.

You might want to write NEWS entry for the new features.

VI)
I would change the wording in `ibuffer-included-in-filters-p' doc = string.
Instead of
"Does the buffer BUF successfully pass all of the given FILTERS?"=
someting like:
"Return non-nil if BUF pass all FILTERS."

VII)
Once you add `ibuffer-and-filter' there is code duplication with
`ibuffer-or-filter'.=C2=A0 I would extract the common code in a new
auxiliar function `ibuffer--or-and-filter' as follows:

(defun ibuffer--or-and-filter (op arg)
=C2=A0 (if arg
=C2=A0 =C2=A0 =C2=A0 (progn
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (when (or (null ibuffer-filtering-qualifiers) =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (not (eq op = (caar ibuffer-filtering-qualifiers))))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (error "Top filter is not an %s&quo= t; (upcase (symbol-name op))))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (let ((lim (pop ibuffer-filtering-qualifiers))<= wbr>)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (setq ibuffer-filtering-qualifiers
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (nconc (cdr lim) ib= uffer-filtering-qualifiers))))
=C2=A0 =C2=A0 (when (< (length ibuffer-filtering-qualifiers) 2)
=C2=A0 =C2=A0 =C2=A0 (error "Need two filters to %s" (upcase (sym= bol-name op))))
=C2=A0 =C2=A0 ;; If the second filter is an op, just add to it.
=C2=A0 =C2=A0 (let ((first (pop ibuffer-filtering-qualifiers))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (second (pop ibuffer-filtering-qualifier= s)))
=C2=A0 =C2=A0 =C2=A0 (if (eq op (car second))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (push (nconc (list op first) (cdr second= ))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ibuffer-filtering-q= ualifiers)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (push (list op first second)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ibuffer-filtering-qualifie= rs))))
=C2=A0 (ibuffer-update nil t))

;;;###autoload
(defun ibuffer-or-filter (&optional reverse)
=C2=A0 "Replace the top two filters in this buffer with their logical = OR.
If optional argument REVERSE is non-nil, instead break the top OR
filter into parts."
=C2=A0 (interactive "P")
=C2=A0 (ibuffer--or-and-filter 'or reverse))

;;;###autoload
(defun ibuffer-and-filter (&optional decompose)
=C2=A0 "Replace the top two filters in this buffer with their logical = AND.
If optional argument DECOMPOSE is non-nil, instead break the top AND
filter into parts."
=C2=A0 (interactive "P")
=C2=A0 (ibuffer--or-and-filter 'and decompose))

IX)
In `ibuffer-filter-by-starred-name' you are matching a buffer name=
starting with "*".=C2=A0 That covers all special buffers but it m= ight
add some garbage.=C2=A0 For instance, sometimes i miss-type a new buffer "*foo", and then i just make a new one "*foo*" without = deleting
"*foo".=C2=A0 I prefer if the filter do not show "*foo"= .
I use the following more paranoid regexp:
"\\`\\*[^*]+\\*\\(<?[[:digit:]]*>?\\)\\'"
This regexp matches "*foo*" and "*foo*<2>" but it= doesn't match neither
"*foo" nor "foo*".

X)
>=C2=A0 =C2=A0 Fixed bug in 'saved' filter hand= ling. There was an inconsistency in
>=C2=A0 =C2=A0 how the data was accessed at different points that would = cause
>=C2=A0 =C2=A0 failure. (I do wonder if anyone ever uses saved filters b= ased on
>=C2=A0 =C2=A0 this.) There are two choices in how to fix this; I made o= ne but am
>=C2=A0 =C2=A0 open to both.
Could you create a receipt where the bug cause an actual failure?
Even if there is no failure i agree it looks nicer because you decrease
1 level the nesting, and make `ibuffer-saved-filters' looks similar tha= n
`ibuffer-saved-filter-groups'.=C2=A0 That is an advantage when the user= is
writing filters by hand; but usually an user compose the filters from Ibuff= er,
and save them with '/ s', so the actual format is an implementation= detail.

As you know, we have an implicit 'AND', that is the reason why the = original
implemention lack of an explicit `and'.=C2=A0 I don't object to the= new format, though.
I agree is more clear when writing filters by hand.

I much prefer if this part of the patch go to a separated bug report.

Cheers,
Tino

--001a1143d830228c780541ec5ed8-- --001a1143d830228c7e0541ec5eda Content-Type: text/x-diff; charset=US-ASCII; name="revised-ibuffer-and-filters.patch" Content-Disposition: attachment; filename="revised-ibuffer-and-filters.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ivu5apee0 RnJvbSBhMzMxZThjMDgyMGIxYzFlNWM0NWM1MWUyNmQ4OWNkOWZmYWQ2YjlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQ2hyaXN0b3BoZXIgUi4gR2Vub3Zlc2UiIDxnZW5vdmVzZUBj bXUuZWR1PgpEYXRlOiBUaHUsIDE3IE5vdiAyMDE2IDAwOjQ0OjI3IC0wNTAwClN1YmplY3Q6IFtQ QVRDSCAxLzJdIElidWZmZXIgaW1wcm92ZW1lbnRzOiBmaWx0ZXJzLCBkb2N1bWVudGF0aW9uLCBi dWcgZml4ZXMsCiB0ZXN0cwoKKyBQcm92aWRlcyBjb21wb3VuZCBmaWx0ZXIgdG8gc3VwcG9ydCBl eHBsaWNpdCBsb2dpY2FsICdhbmQnCgogIFdoaWxlIGN1cnJlbnQgYW5kIHNhdmVkIGlidWZmZXIg ZmlsdGVyIGxpc3RzIG9mZmVyIGFuIGltcGxpY2l0CiAgbG9naWNhbCAnYW5kJywgaXQgY2FuIGJl IHVzZWZ1bCBmb3IgZGVmaW5pbmcgY29tcGxleCBmaWx0ZXJzCiAgYW5kIGZpbHRlciBncm91cHMg dG8gYmUgYWJsZSB0byB1c2UgJ2FuZCcgZXhwbGljaXRseSB3aXRoaW4gYQogIGZpbHRlci4gQWx0 aG91Z2ggdGhpcyBjb3VsZCBiZSBhY2hpZXZlZCB3aXRoIERlTW9yZ2FuJ3MgbGF3cwogIHVzaW5n ICdvcicgYW5kICdub3QnLCBvciBzYXZlZCBmaWx0ZXJzLCBib3RoIG9wdGlvbnMgYXJlCiAgdW5u ZWNlc3NhcmlseSBvbmVyb3VzLiBQcm92aWRpbmcgYW4gJ2FuZCcgY29udmVuaWVudGx5CiAgaW5j cmVhc2VzIGZpbHRlcmluZyBwb3dlciBhdCBuZWdsaWdpYmxlIGNvc3QuCgorIEFjY2VwdHMgJ25v dCcgY29tcG91bmQgaW4gKG5vdCAuIHF1YWxpZmllciksIChub3QgcXVhbGlmaWVyKSBmb3JtcwoK ICBUaGUgb3JpZ2luYWwgJ25vdCcgY29tcG91bmQgZmlsdGVyIGV4cGVjdHMgdGhlIGZvcm0KICAo bm90IC4gcXVhbGlmaWVyKSwgZS5nLiwgKG5vdCBzaXplLWd0IC4gMTAwKS4gVGhpcyBhZGRzCiAg c3VwcG9ydCwgYXQgbmVnbGlnaWJsZSBjb3N0LCBmb3IgdGhlIGFsdGVybmF0aXZlLCBtb3JlIGxp c3B5LAogIGZvcm0gbGlrZSAobm90IChzaXplLWd0IC4gMTAwKSkgb3IgKG5vdCAob3IgLi4uKSku IFRoZQogIG9yaWdpbmFsIGxvb2tzIG5pY2Ugd2l0aCBudWxsYXJ5IGZpbHRlcnMgbGlrZSAobm90 IG1vZGlmaWVkKSwKICBhbmQgdGhlIG5ldyBmb3JtIGlzIHBsZWFzYW50bHkgY29uc2lzdGVudCB3 aXRoIHNleHAgc3RydWN0dXJlCiAgb2YgJ2FuZCcgYW5kICdvcicuCgorIFNpZ25pZmljYW50IGRv Y3VtZW50YXRpb24gaW1wcm92ZW1lbnRzIGZvciBmaWx0ZXJpbmcKCiAgVGhlIHN0cnVjdHVyZSBv ZiBjb21wb3VuZCBmaWx0ZXJzIGhhZCBub3QgYmVlbiBkb2N1bWVudGVkLiBUaGUKICBuZXcgZG9j dW1lbnRhdGlvbiBnaXZlcyBhbiBhdXRob3JpdGF0aXZlIHNvdXJjZSBmb3IgZWFjaAogIGNvbmNl cHQgYW5kIG1ha2VzIHRoZSBsYW5ndWFnZSB1c2VkIHRocm91Z2hvdXQgbW9yZSBjbGVhciBhbmQK ICBjb25zaXN0ZW50IChlLmcuLCBkaXN0aW5ndWlzaGluZyBxdWFsaWZpZXIgZGF0YSBmcm9tIGdl bmVyYWwKICBmaWx0ZXIgc3BlY2lmaWNhdGlvbnMpLgoKKyBEZWZpbmVzIHNldmVyYWwgY29tbW9u bHkgbmVlZGVkIGZpbHRlcnMKCiAgVGhlIGV4aXN0aW5nICdmaWxlbmFtZScgbWF0Y2hlcyBhZ2Fp bnN0IHRoZSBmdWxsIHBhdGhuYW1lIG9mCiAgdGhlIGJ1ZmZlcidzIGZpbGUuIFRoaXMgY2FuIGJl IGluY29udmVuaWVudCBmb3IgcHJlY2lzZWx5CiAgZmlsdGVyaW5nIGZpbGVzLCBzbyBzZXZlcmFs IG5ldyBmaWx0ZXJzIGFyZSBwcmUtZGVmaW5lZCB0bwogIG1hdGNoIHBhcnRpY3VsYXIgcGF0aG5h bWUgY29tcG9uZW50cy4gSW4gYWRkaXRpb24sIGNvbnZlbmllbnQKICBudWxsYXJ5IGZpbHRlcnMg Zm9yIHN0YXJyZWQgYW5kIG1vZGlmaWVkIGJ1ZmZlcnMgYXJlIHByb3ZpZGVkLgoKKyBGaXhlcyBi dWcgaW4gYGlidWZmZXItc2F2ZS1maWx0ZXJzJwoKICBUaGUgc3RydWN0dXJlIG9mIGBpYnVmZmVy LXNhdmVkLWZpbHRlcnMnIGFuZAogIGBpYnVmZmVyLXNhdmUtZmlsdGVyJyB3ZXJlIGluY29uc2lz dGVudCwgd2l0aCB0aGUgZm9ybWVyCiAgaGF2aW5nIGFuIGV4dHJhIGxpc3QgbGV2ZWwgaW4gZWFj aCBhbGlzdCBlbGVtZW50LiBUaGlzIHZlcnNpb24KICBmaXhlcyB0aGUgaW5jb25zaXN0ZW5jeSBi eSBzaW1wbGlmeWluZyBgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzJwogIHRvIHJlbW92ZSB0aGUgZXh0 cmEgbGlzdCBsZXZlbCBhbmQgYXV0b21hdGljYWxseSBjaGVja3MgdG8KICByZXBhaXIgZXhpc3Rp bmcgZm9ybWF0cy4gKEFsdGVybmF0aXZlbHksIHRoZSBhY2Nlc3MgY29kZSBjb3VsZAogIGJlIHNw ZWNpYWwtY2FzZWQgbGVhdmluZyB0aGUgdmFyaWFibGUgZm9ybWF0IGludGFjdC4gVGhpcwogIGFs dGVybmF0aXZlIHdvdWxkIGFyZ3VhYmx5IGJlIGxvd2VyIGltcGFjdCwgYnV0IHRoZSBjaGFuZ2UK ICBtYWRlIHNlZW1lZCBhc3RoZXRpY2FsbHkgbmljZXIuKQoKKyBEZWZpbmVzIGNvbXBsZXRpb24t YmFzZWQgaW50ZXJhY3RpdmUgZmlsdGVyaW5nIGNvbW1hbmQKCiAgTmV3IGNvbW1hbmQgdG8gc2Vs ZWN0IGEgZmlsdGVyIGJ5IGNvbXBsZXRpb24gb24gZmlsdGVyCiAgZGVzY3JpcHRpb25zLiBFYXN5 IHRvIHVzZSBhbmQgYm91bmQgdG8gLy1UQUIgbW5lbW9uaWNhbGx5LgoKKyBGaXhlcyBzbWFsbCBi dWcgaW4gb3JpZ2luYWwgdGVzdAoKICBUaGUgb25lIG9yaWdpbmFsIHRlc3QgZmFpbGVkIHVuZXhw ZWN0ZWRseSBpZiBpYnVmLWV4dCB3ZXJlCiAgbG9hZGVkLgoKKyBBZGRzIGEgc3Vic3RhbnRpYWwg bnVtYmVyIG9mIGFkZGl0aW9uYWwgdGVzdHMgd2l0aCBmZWF0dXJlIGlidWYtZXh0CgogIE1hbnkg bmV3IHRlc3RzIGluIGVydCwgbGVhdmluZyB0aGUgZW52aXJvbm1lbnQgdW50b3VjaGVkLAogIGNv dmVyIG1vc3QgYXNwZWN0cyBvZiBmaWx0ZXJpbmcsIG9sZCBhbmQgbmV3LgoKKyBNYWtlcyBhIGZl dyBtbmVtb25pYyBjaGFuZ2VzIHRvIGRlZmF1bHQgZmlsdGVyaW5nIHBhcnQgb2Yga2V5bWFwCgpU aGVzZSBjaGFuZ3MgYXJlIG1vc3RseSBxdWl0ZSBzbWFsbCBidXQgZGlzdHJpYnV0ZWQgYWNyb3Nz CnNldmVyYWwgZnVuY3Rpb25zIGFuZCBkb2NzdHJpbmdzLiBTZWUgdGhlIGNoYW5nZSBsb2cgYmVs b3cuCgpDaGFuZ2UgTG9nOiAyMDE2LTExLTE2CUNocmlzdG9waGVyIFIuIEdlbm92ZXNlCSA8Z2Vu b3Zlc2VAY211LmVkdT4KCiogbGlzcC9pYnVmLWV4dC5lbDogYWRkZWQgcGFyYWdyYXBoIHRvIGZp bGUgY29tbWVudGFyeQoqIGxpc3AvaWJ1Zi1leHQuZWwgKGlidWZmZXItc2F2ZWQtZmlsdGVycyk6 IGNsYXJpZmllZCBkb2N1bWVudGF0aW9uLAogIHNwZWNpZmllZCBjdXN0b21pemF0aW9uIHR5cGUs IGFuZCBzaW1wbGlmaWVkIGRhdGEgZm9ybWF0IHRvIGJlCiAgY29uc2lzdGVudCB3aXRoIGBpYnVm ZmVyLXNhdmUtZmlsdGVycycKKiBsaXNwL2lidWYtZXh0LmVsIChpYnVmZmVyLXVwZGF0ZS1zYXZl ZC1maWx0ZXJzLWZvcm1hdCk6IG5ldyBmdW5jdGlvbgogIHRoYXQgdHJhbnNmb3JtcyBgaWJ1ZmZl ci1zYXZlZC1maWx0ZXJzJy1zdHlsZSBhbGlzdCBmb3JtYXQKKiBsaXNwL2lidWYtZXh0LmVsIChp YnVmZmVyLXJlcGFpci1zYXZlZC1maWx0ZXJzKTogbmV3IGZ1bmN0aW9uIHRoYXQKICB0cmFuc2Zv cm1zIGBpYnVmZmVyLXNhdmVkLWZpbHRlcnMnIHRvIG5ldyBmb3JtYXQgaWYgbmVlZGVkCiogbGlz cC9pYnVmLWV4dC5lbCAoaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycyk6IG5ldyBkb2N1bWVu dGF0aW9uCiAgaXMgdGhlIGF1dGhvcml0YXRpdmUgc291cmNlIGZvciBmaWx0ZXIgc3BlY2lmaWNh dGlvbiBmb3JtYXQKKiBsaXNwL2lidWYtZXh0LmVsIChpYnVmZmVyLWZpbHRlci1ncm91cHMpOiBu ZXcgZG9jdW1lbnRhdGlvbgogIGNsYXJpZmllcyBmaWx0ZXIgZ3JvdXAgc3RydWN0dXJlIGFuZCBy b2xlCiogbGlzcC9pYnVmLWV4dC5lbCAoaWJ1ZmZlci11bmFyeS1vcGVyYW5kKTogbmV3IGZ1bmN0 aW9uIHRyYW5zcGFyZW50bHkKICBoYW5kbGVzIG5vdCBmb3JtYXRzIGZvciBjb21wb3VuZCBmaWx0 ZXJzCiogbGlzcC9pYnVmLWV4dC5lbCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXItcCk6IG5l dyBkb2NzdHJpbmcKICBhbmQgbm93IGhhbmRsZXMgJ25vdCcgZnVsbHkKKiBsaXNwL2lidWYtZXh0 LmVsIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlci1wLTEpOiBoYW5kbGVzICdhbmQnCiAgY29t cG91bmQgZmlsdGVycyBhbmQgY29uc2lzdGVudCBoYW5kbGluZyBvZiAnc2F2ZWQnIGZpbHRlciBk YXRhCiogbGlzcC9pYnVmLWV4dC5lbCAoaWJ1ZmZlci1kZWNvbXBvc2UtZmlsdGVyKTogaGFuZGxl cyAnYW5kJyBhcyB3ZWxsLAogIG1hZGUgaGFuZGxpbmcgb2YgJ3NhdmVkJyBmaWx0ZXIgZGF0YSBh bmQgJ25vdCcgY29uc2lzdGVudCB3aXRoCiAgb3RoZXIgdXNlcwoqIGxpc3AvaWJ1Zi1leHQuZWwg KGlidWZmZXItYW5kLWZpbHRlcik6IG5ldyBmdW5jdGlvbiBhbmFsb2dvdXMgdG8KICBgaWJ1ZmZl ci1vci1maWx0ZXInIGZvciBjb21wbGV0ZW5lc3MKKiBsaXNwL2lidWYtZXh0LmVsIChpYnVmZmVy LW1heWJlLXNhdmUtc3R1ZmYpOiBoYW5kbGUgJ3NhdmVkJyBmaWx0ZXIKICBkYXRhIGNvbnNpc3Rl bnRseSB3aXRoIG90aGVyIHVzZXMKKiBsaXNwL2lidWYtZXh0LmVsIChpYnVmZmVyLWZvcm1hdC1x dWFsaWZpZXIpOiBoYW5kbGUgJ2FuZCcgZmlsdGVycwoqIGxpc3AvaWJ1Zi1leHQuZWwgKGlidWZm ZXItZmlsdGVyLWJ5LSopOiBuZXcgcHJlLWRlZmluZWQgZmlsdGVycwogIGZpbGVuYW1lLWJhc2Us IGZpbGVuYW1lLWV4dGVuc2lvbiwgZmlsZW5hbWUtZGlyZWN0b3J5LAogIGZpbGVuYW1lLXJvb3Qs IHN0YXJyZWQtbmFtZSwgYW5kIG1vZGlmaWVkCiogbGlzcC9pYnVmLWV4dC5lbCAoaWJ1ZmZlci1m aWx0ZXItY2hvc2VuLWJ5LWNvbXBsZXRpb24pOiBuZXcKICBpbnRlcmFjdGl2ZSBjb21tYW5kIGZv ciBlYXNpbHkgY2hvb3NpbmcgYSBmaWx0ZXIKKiBsaXNwL2lidWYtZXh0LmVsOiBtYW55IHNtYWxs IGltcHJvdmVtZW50cyB0aHJvdWdob3V0IHRvIGRvY3N0cmluZ3MsCiAgdmFyaWFibGUgbmFtaW5n LCBhbmQgc3BhY2luZwoqIGxpc3AvaWJ1ZmZlci5lbDoga2V5bWFwIGFuZCBtZW51IGFkZGl0aW9u cy9jaGFuZ2VzIGZvciBmaWx0ZXJpbmcKKiB0ZXN0L2xpc3AvaWJ1ZmZlci10ZXN0cy5lbCAoaWJ1 ZmZlci1hdXRvbG9hZCk6IGFkZGVkIGFwcHJvcHJpYXRlCiAgc2tpcCBzcGVjaWZpY2F0aW9uCiog dGVzdC9saXNwL2lidWZmZXItdGVzdHMuZWwgKGlidWZmZXItKik6IG1hbnkgYWRkaXRpb25hbCB0 ZXN0cwogIHRoYXQgYXJlIHNraXBwZWQgdW5sZXNzIGlidWYtZXh0IGlzIGxvYWRlZC4KLS0tCiBs aXNwL2lidWYtZXh0LmVsICAgICAgICAgICB8IDQ5MiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0KIGxpc3AvaWJ1ZmZlci5lbCAgICAgICAgICAgIHwgIDY3ICsrKysrLQog dGVzdC9saXNwL2lidWZmZXItdGVzdHMuZWwgfCA1NjUgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystCiAzIGZpbGVzIGNoYW5nZWQsIDEwMjEgaW5zZXJ0aW9ucygr KSwgMTAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpc3AvaWJ1Zi1leHQuZWwgYi9saXNw L2lidWYtZXh0LmVsCmluZGV4IGIzZDE0NTIuLmE5YjMzN2IgMTAwNjQ0Ci0tLSBhL2xpc3AvaWJ1 Zi1leHQuZWwKKysrIGIvbGlzcC9pYnVmLWV4dC5lbApAQCAtMjgsNiArMjgsMTMgQEAKIDs7IFRo ZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBsb2FkZWQgd2hlbiBjYWxsZWQs IGJ1dCB5b3UKIDs7IGNhbiBleHBsaWNpdGx5IChyZXF1aXJlICdpYnVmLWV4dCkgaW4geW91ciB+ Ly5lbWFjcyB0byBoYXZlIHRoZW0KIDs7IHByZWxvYWRlZC4KKzs7Cis7OyBGb3IgZGV0YWlscyBv biB0aGUgc3RydWN0dXJlIG9mIGlidWZmZXIgZmlsdGVycyBhbmQgZmlsdGVyIGdyb3VwcywKKzs7 IHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdmFyaWFibGVzIGBpYnVmZmVyLWZpbHRlcmluZy1x dWFsaWZpZXJzJywKKzs7IGBpYnVmZmVyLWZpbHRlci1ncm91cHMnLCBhbmQgYGlidWZmZXItc2F2 ZWQtZmlsdGVycycgaW4gdGhhdCBvcmRlci4KKzs7IFRoZSB2YXJpYWJsZSBgaWJ1ZmZlci1maWx0 ZXJpbmctYWxpc3QnIGNvbnRhaW5zIG5hbWVzIGFuZAorOzsgZGVzY3JpcHRpb25zIG9mIHRoZSBj dXJyZW50bHkgZGVmaW5lZCBmaWx0ZXJzOyBhbHNvIHNlZSB0aGUgbWFjcm8KKzs7IGBkZWZpbmUt aWJ1ZmZlci1maWx0ZXInLgogCiA7OzsgQ29kZToKIApAQCAtMzcsNyArNDQsOSBAQAogICAocmVx dWlyZSAnaWJ1Zi1tYWNzKQogICAocmVxdWlyZSAnY2wtbGliKSkKIAorCiA7OzsgVXRpbGl0eSBm dW5jdGlvbnMKKwogKGRlZnVuIGlidWZmZXItZGVsZXRlLWFsaXN0IChrZXkgYWxpc3QpCiAgICJE ZWxldGUgYWxsIGVudHJpZXMgaW4gQUxJU1QgdGhhdCBoYXZlIGEga2V5IGVxdWFsIHRvIEtFWS4i CiAgIChsZXQgKGVudHJ5KQpAQCAtMTE5LDM1ICsxMjgsMTc3IEBAIEJ1ZmZlcnMgd2hvc2UgbWFq b3IgbW9kZSBpcyBpbiB0aGlzIGxpc3QsIGFyZSBub3Qgc2VhcmNoZWQuIgogCiAoZGVmdmFyIGli dWZmZXItYXV0by1idWZmZXJzLWNoYW5nZWQgbmlsKQogCi0oZGVmY3VzdG9tIGlidWZmZXItc2F2 ZWQtZmlsdGVycyAnKCgiZ251cyIKLQkJCQkgICAgKChvciAobW9kZSAuIG1lc3NhZ2UtbW9kZSkK LQkJCQkJIChtb2RlIC4gbWFpbC1tb2RlKQotCQkJCQkgKG1vZGUgLiBnbnVzLWdyb3VwLW1vZGUp Ci0JCQkJCSAobW9kZSAuIGdudXMtc3VtbWFyeS1tb2RlKQotCQkJCQkgKG1vZGUgLiBnbnVzLWFy dGljbGUtbW9kZSkpKSkKLQkJCQkgICAoInByb2dyYW1taW5nIgotCQkJCSAgICAoKG9yIChtb2Rl IC4gZW1hY3MtbGlzcC1tb2RlKQotCQkJCQkgKG1vZGUgLiBjcGVybC1tb2RlKQotCQkJCQkgKG1v ZGUgLiBjLW1vZGUpCi0JCQkJCSAobW9kZSAuIGphdmEtbW9kZSkKLQkJCQkJIChtb2RlIC4gaWRs LW1vZGUpCi0JCQkJCSAobW9kZSAuIGxpc3AtbW9kZSkpKSkpCi0KLSAgIkFuIGFsaXN0IG9mIGZp bHRlciBxdWFsaWZpZXJzIHRvIHN3aXRjaCBiZXR3ZWVuLgotCi1UaGlzIHZhcmlhYmxlIHNob3Vs ZCBsb29rIGxpa2UgKChcIlNUUklOR1wiIFFVQUxJRklFUlMpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChcIlNUUklOR1wiIFFVQUxJRklFUlMpIC4uLiksIHdoZXJlCi1RVUFMSUZJ RVJTIGlzIGEgbGlzdCBvZiB0aGUgc2FtZSBmb3JtIGFzCi1gaWJ1ZmZlci1maWx0ZXJpbmctcXVh bGlmaWVycycuCi1TZWUgYWxzbyB0aGUgdmFyaWFibGVzIGBpYnVmZmVyLWZpbHRlcmluZy1xdWFs aWZpZXJzJywKLWBpYnVmZmVyLWZpbHRlcmluZy1hbGlzdCcsIGFuZCB0aGUgZnVuY3Rpb25zCi1g aWJ1ZmZlci1zd2l0Y2gtdG8tc2F2ZWQtZmlsdGVycycsIGBpYnVmZmVyLXNhdmUtZmlsdGVycycu IgotICA6dHlwZSAnKHJlcGVhdCBzZXhwKQorKGRlZnVuIGlidWZmZXItdXBkYXRlLXNhdmVkLWZp bHRlcnMtZm9ybWF0IChmaWx0ZXJzKQorICAiVHJhbnNmb3JtcyBhbGlzdCBmcm9tIG9sZCB0byBu ZXcgYGlidWZmZXItc2F2ZWQtZmlsdGVycycgZm9ybWF0LgorCitTcGVjaWZpY2FsbHksIGNvbnZl cnRzIG9sZC1mb3JtYXQgYWxpc3Qgd2l0aCB2YWx1ZXMgb2YgdGhlCitmb3JtIChTVFJJTkcgKEZJ TFRFUi1TUEVDUy4uLikpIHRvIGFsaXN0IHdpdGggdmFsdWVzIG9mIHRoZQorZm9ybSAoU1RSSU5H IEZJTFRFUi1TUEVDUy4uLiksIHdoZXJlIGVhY2ggZmlsdGVyIHNwZWMgc2hvdWxkIGJlIGEKK2Nv bnMgY2VsbCB3aXRoIGEgc3ltYm9sIGluIHRoZSBjYXIuIEFueSBlbGVtZW50cyBpbiB0aGUgbGF0 dGVyCitmb3JtIGFyZSBrZXB0IGFzIGlzLgorCitSZXR1cm5zIChPTEQtRk9STUFULURFVEVDVEVE PyAuIFVQREFURUQtU0FWRUQtRklMVEVSUy1MSVNUKS4iCisgICh3aGVuIGZpbHRlcnMKKyAgICAo bGV0KiAoKG9sZC1mb3JtYXQtZGV0ZWN0ZWQgbmlsKQorICAgICAgICAgICAoZml4LWZpbHRlciAo bGFtYmRhIChmaWx0ZXItc3BlYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN5bWJv bHAgKGNhciAoY2FkciBmaWx0ZXItc3BlYykpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmaWx0ZXItc3BlYworICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgb2xkLWZvcm1h dC1kZXRlY3RlZCB0KSA7IHNpZGUtZWZmZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAo Y29ucyAoY2FyIGZpbHRlci1zcGVjKSAoY2FkciBmaWx0ZXItc3BlYykpKSkpCisgICAgICAgICAg IChmaXhlZCAobWFwY2FyIGZpeC1maWx0ZXIgZmlsdGVycykpKQorICAgICAgKGNvbnMgb2xkLWZv cm1hdC1kZXRlY3RlZCBmaXhlZCkpKSkKKworKGRlZmN1c3RvbSBpYnVmZmVyLXNhdmVkLWZpbHRl cnMgJygoInByb2dyYW1taW5nIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG9yIChkZXJpdmVkLW1vZGUgLiBwcm9nLW1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG1vZGUgICAgICAgICAuIGVzcy1tb2RlKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlICAgICAgICAgLiBjb21waWxhdGlvbi1tb2Rl KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidGV4dCBkb2N1bWVudCIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXJpdmVkLW1vZGUgICAgICAu IHRleHQtbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKHN0 YXJyZWQtbmFtZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIlRlWCIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAoZGVyaXZlZC1tb2RlIC4g dGV4LW1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGUg ICAgICAgICAuIGxhdGV4LW1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG1vZGUgICAgICAgICAuIGNvbnRleHQtbW9kZSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobW9kZSAgICAgICAgIC4gYW1zLXRleC1tb2RlKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlICAgICAgICAgLiBiaWJ0ZXgt bW9kZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIndlYiIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAoZGVyaXZlZC1tb2RlIC4gc2dtbC1t b2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXJpdmVkLW1v ZGUgLiBjc3MtbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bW9kZSAgICAgICAgIC4gamF2YXNjcmlwdC1tb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChtb2RlICAgICAgICAgLiBqczItbW9kZSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZSAgICAgICAgIC4gc2Nzcy1tb2RlKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXJpdmVkLW1vZGUgLiBoYW1s LW1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGUgICAg ICAgICAuIHNhc3MtbW9kZSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ImdudXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKG1vZGUgLiBt ZXNzYWdlLW1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1v ZGUgLiBtYWlsLW1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG1vZGUgLiBnbnVzLWdyb3VwLW1vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG1vZGUgLiBnbnVzLXN1bW1hcnktbW9kZSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobW9kZSAuIGdudXMtYXJ0aWNsZS1tb2RlKSkpKQorCisgICJB biBhbGlzdCBtYXBwaW5nIHNhdmVkIGZpbHRlciBuYW1lcyB0byBmaWx0ZXIgc3BlY2lmaWNhdGlv bnMuCisKK0VhY2ggZWxlbWVudCBzaG91bGQgbG9vayBsaWtlIChcIk5BTUVcIiAuIEZJTFRFUi1M SVNUKSwgd2hlcmUKK0ZJTFRFUi1MSVNUIGhhcyB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgdGhlIHZh cmlhYmxlCitgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycycsIHdoaWNoIHNlZS4gVGhlIGZp bHRlcnMgZGVmaW5lZAoraGVyZSBhcmUgam9pbmVkIHdpdGggYW4gaW1wbGljaXQgbG9naWNhbCBg YW5kJyBhbmQgYXNzb2NpYXRlZAord2l0aCBOQU1FLiBUaGUgY29tYmluZWQgc3BlY2lmaWNhdGlv biBjYW4gYmUgdXNlZCBieSBuYW1lIGluCitvdGhlciBmaWx0ZXIgc3BlY2lmaWNhdGlvbnMgdmlh IHRoZSBgc2F2ZWQnIHF1YWxpZmllciAoYWdhaW4sIHNlZQorYGlidWZmZXItZmlsdGVyaW5nLXF1 YWxpZmllcnMnKS4gVGhleSBjYW4gYWxzbyBiZSBzd2l0Y2hlZCB0byBieQorbmFtZSAoc2VlIHRo ZSBmdW5jdGlvbnMgYGlidWZmZXItc3dpdGNoLXRvLXNhdmVkLWZpbHRlcnMnIGFuZAorYGlidWZm ZXItc2F2ZS1maWx0ZXJzJykuIFRoZSB2YXJpYWJsZSBgaWJ1ZmZlci1zYXZlLXdpdGgtY3VzdG9t JworYWZmZWN0cyBob3cgdGhpcyBpbmZvcm1hdGlvbiBpcyBzYXZlZCBmb3IgZnV0dXJlIHNlc3Np b25zLiBUaGlzCit2YXJpYWJsZSBjYW4gYmUgc2V0IGRpcmVjdGx5IGZyb20gbGlzcCBjb2RlLiIK KyAgOnR5cGUgJyhhbGlzdCA6a2V5LXR5cGUgKHN0cmluZyA6dGFnICJGaWx0ZXIgbmFtZSIpCisg ICAgICAgICAgICAgICAgOnZhbHVlLXR5cGUgKHJlcGVhdCA6dGFnICJGaWx0ZXIgc3BlY2lmaWNh dGlvbiIgc2V4cCkpCisgIDpzZXQgKGxhbWJkYSAoc3ltYm9sIHZhbHVlKQorICAgICAgICAgOzsg SnVzdCBzZXQtZGVmYXVsdCBidXQgdXBkYXRlIGxlZ2FjeSBvbGQtc3R5bGUgZm9ybWF0CisgICAg ICAgICAoc2V0LWRlZmF1bHQgc3ltYm9sIChjZHIgKGlidWZmZXItdXBkYXRlLXNhdmVkLWZpbHRl cnMtZm9ybWF0IHZhbHVlKSkpKQogICA6Z3JvdXAgJ2lidWZmZXIpCiAKKyhkZWZ2YXIgaWJ1ZmZl ci1vbGQtc2F2ZWQtZmlsdGVycy13YXJuaW5nCisgIChjb25jYXQgIkRlcHJlY2F0ZWQgZm9ybWF0 IGRldGVjdGVkIGZvciB2YXJpYWJsZSBgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzJy4KKworVGhlIGZv cm1hdCBoYXMgYmVlbiByZXBhaXJlZCBhbmQgdGhlIHZhcmlhYmxlIG1vZGlmaWVkIGFjY29yZGlu Z2x5LiAKK1lvdSBjYW4gc2F2ZSB0aGUgY3VycmVudCB2YWx1ZSB0aHJvdWdoIHRoZSBjdXN0b21p emUgc3lzdGVtIGJ5CitlaXRoZXIgY2xpY2tpbmcgb3IgaGl0dGluZyByZXR1cm4gIgorICAgICAg ICAgICAgKG1ha2UtdGV4dC1idXR0b24KKyAgICAgICAgICAgICAiaGVyZSIgbmlsCisgICAgICAg ICAgICAgJ2ZhY2UgJyg6d2VpZ2h0IGJvbGQgOmluaGVyaXQgYnV0dG9uKQorICAgICAgICAgICAg ICdtb3VzZS1mYWNlICcoOndlaWdodCBub3JtYWwgOmJhY2tncm91bmQgImdyYXk1MCIgOmluaGVy aXQgYnV0dG9uKQorICAgICAgICAgICAgICdmb2xsb3ctbGluayB0CisgICAgICAgICAgICAgJ2hl bHAtZWNobyAiQ2xpY2sgb3IgUkVUOiBzYXZlIG5ldyB2YWx1ZSBpbiBjdXN0b21pemUiCisgICAg ICAgICAgICAgJ2FjdGlvbiAobGFtYmRhIChiKQorICAgICAgICAgICAgICAgICAgICAgICAoaWYg KG5vdCAoZmJvdW5kcCAnY3VzdG9taXplLXNhdmUtdmFyaWFibGUpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG1lc3NhZ2UgIkN1c3RvbWl6ZSBub3QgYXZhaWxhYmxlOyB2YWx1ZSBub3Qg c2F2ZWQiKQorICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21pemUtc2F2ZS12YXJpYWJs ZSAnaWJ1ZmZlci1zYXZlZC1maWx0ZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlidWZmZXItc2F2ZWQtZmlsdGVycykKKyAgICAgICAgICAgICAg ICAgICAgICAgICAobWVzc2FnZSAiU2F2ZWQgdXBkYXRlZCBpYnVmZmVyLXNhdmVkLWZpbHRlcnMu IikpKSkKKyAgICAgICAgICAgICIuIFNlZSBiZWxvdyBmb3IKK2FuIGV4cGxhbmF0aW9uIGFuZCBh bHRlcm5hdGl2ZSB3YXlzIHRvIHNhdmUgdGhlIHJlcGFpcmVkIHZhbHVlLgorCitFeHBsYW5hdGlv bjogRm9yIHRoZSBsaXN0IHZhcmlhYmxlIGBpYnVmZmVyLXNhdmVkLWZpbHRlcnMnLCAgICAgICAg ICAgICAgIAorZWxlbWVudHMgb2YgdGhlIGZvcm0gKFNUUklORyAoRklMVEVSLVNQRUNTLi4uKSkg YXJlIGRlcHJlY2F0ZWQKK2FuZCBzaG91bGQgaW5zdGVhZCBoYXZlIHRoZSBmb3JtIChTVFJJTkcg RklMVEVSLVNQRUNTLi4uKSwgd2hlcmUKK2VhY2ggZmlsdGVyIHNwZWMgaXMgYSBjb25zIGNlbGwg d2l0aCBhIHN5bWJvbCBpbiB0aGUgY2FyLiBTZWUKK2BpYnVmZmVyLXNhdmVkLWZpbHRlcnMnIGZv ciBkZXRhaWxzLiBUaGUgcmVwYWlyZWQgdmFsdWUgZml4ZXMgCit0aGlzIGZvcm1hdCB3aXRob3V0 IGNoYW5naW5nIHRoZSBtZWFuaW5nIG9mIHRoZSBzYXZlZCBmaWx0ZXJzLiAKKworQWx0ZXJuYXRp dmUgd2F5cyB0byBzYXZlIHRoZSByZXBhaXJlZCB2YWx1ZToKKworICAxLiBEbyBNLXggY3VzdG9t aXplLXZhcmlhYmxlIGFuZCBlbnRlcmluZyBgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzJyAKKyAgICAg d2hlbiBwcm9tcHRlZC4gCisKKyAgMi4gU2V0IHRoZSB1cGRhdGVkIHZhbHVlIG1hbnVhbGx5IGJ5 IGNvcHlpbmcgdGhlIAorICAgICBmb2xsb3dpbmcgZW1hY3MtbGlzcCBmb3JtIHRvIHlvdXIgZW1h Y3MgaW5pdCBmaWxlLgorCislcworIikpCisKKyhkZWZ1biBpYnVmZmVyLXJlcGFpci1zYXZlZC1m aWx0ZXJzICgpCisgICJVcGRhdGVzIGBpYnVmZmVyLXNhdmVkLWZpbHRlcnMnIHRvIGl0cyBuZXct c3R5bGUgZm9ybWF0LCBpZiBuZWVkZWQuCisKK0lmIHRoaXMgbGlzdCBoYXMgYW55IGVsZW1lbnRz IG9mIHRoZSBvbGQtc3R5bGUgZm9ybWF0LCBhCitkZXByZWNhdGlvbiB3YXJuaW5nIGlzIHJhaXNl ZCwgd2l0aCBhIGJ1dHRvbiBhbGxvd2luZyBwZXJzaXN0ZW50Cit1cGRhdGUuIEFueSB1cGRhdGVk IGZpbHRlcnMgcmV0YWluIHRoZWlyIG1lYW5pbmcgaW4gdGhlIG5ldworZm9ybWF0LiBTZWUgYGli dWZmZXItdXBkYXRlLXNhdmVkLWZpbHRlcnMtZm9ybWF0JyBhbmQKK2BpYnVmZmVyLXNhdmVkLWZp bHRlcnMnIGZvciBkZXRhaWxzIG9mIHRoZSBvbGQgYW5kIG5ldyBmb3JtYXRzLiIKKyAgKHdoZW4g KGFuZCAoYm91bmRwICdpYnVmZmVyLXNhdmVkLWZpbHRlcnMpIGlidWZmZXItc2F2ZWQtZmlsdGVy cykKKyAgICAobGV0ICgoZml4ZWQgKGlidWZmZXItdXBkYXRlLXNhdmVkLWZpbHRlcnMtZm9ybWF0 IGlidWZmZXItc2F2ZWQtZmlsdGVycykpKQorICAgICAgKHByb2cxCisgICAgICAgICAgKHNldHEg aWJ1ZmZlci1zYXZlZC1maWx0ZXJzIChjZHIgZml4ZWQpKQorICAgICAgICAod2hlbi1sZXQgKG9s ZC1mb3JtYXQtZGV0ZWN0ZWQ/IChjYXIgZml4ZWQpKQorICAgICAgICAgIChsZXQgKCh3YXJuaW5n LXNlcmllcyB0KQorICAgICAgICAgICAgICAgICh1cGRhdGVkLWZvcm0KKyAgICAgICAgICAgICAg ICAgKHdpdGgtb3V0cHV0LXRvLXN0cmluZworICAgICAgICAgICAgICAgICAgIChwcCBgKHNldHEg aWJ1ZmZlci1zYXZlZC1maWx0ZXJzICcsaWJ1ZmZlci1zYXZlZC1maWx0ZXJzKSkpKSkKKyAgICAg ICAgICAgIChkaXNwbGF5LXdhcm5pbmcKKyAgICAgICAgICAgICAnaWJ1ZmZlcgorICAgICAgICAg ICAgIChmb3JtYXQgaWJ1ZmZlci1vbGQtc2F2ZWQtZmlsdGVycy13YXJuaW5nIHVwZGF0ZWQtZm9y bSkpKSkpKSkpCisKIChkZWZ2YXIgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycyBuaWwKLSAg IkEgbGlzdCBsaWtlIChTWU1CT0wgLiBRVUFMSUZJRVIpIHdoaWNoIGZpbHRlcnMgdGhlIGN1cnJl bnQgYnVmZmVyIGxpc3QuCi1TZWUgYWxzbyBgaWJ1ZmZlci1maWx0ZXJpbmctYWxpc3QnLiIpCisg ICJBIGxpc3Qgc3BlY2lmeWluZyB0aGUgZmlsdGVycyBjdXJyZW50bHkgYWN0aW5nIG9uIHRoZSBi dWZmZXIgbGlzdC4KKworSWYgdGhpcyBsaXN0IGlzIG5pbCwgdGhlbiBubyBmaWx0ZXJzIGFyZSBj dXJyZW50bHkgaW4KK2VmZmVjdC4gT3RoZXJ3aXNlLCBlYWNoIGVsZW1lbnQgb2YgdGhpcyBsaXN0 IHNwZWNpZmllcyBhIHNpbmdsZQorZmlsdGVyLCBhbmQgYWxsIG9mIHRoZSBzcGVjaWZpZWQgZmls dGVycyBpbiB0aGUgbGlzdCBhcmUgYXBwbGllZAorc3VjY2Vzc2l2ZWx5IHRvIHRoZSBidWZmZXIg bGlzdC4KKworRWFjaCBmaWx0ZXIgc3BlY2lmaWNhdGlvbiBjYW4gYmUgb2YgdHdvIHR5cGVzOiBz aW1wbGUgb3IgY29tcG91bmQuCisKK0Egc2ltcGxlIGZpbHRlciBzcGVjaWZpY2F0aW9uIGhhcyB0 aGUgZm9ybSAoU1lNQk9MIC4gUVVBTElGSUVSKSwKK3doZXJlIFNZTUJPTCBpcyBhIGtleSBpbiB0 aGUgYWxpc3QgYGlidWZmZXItZmlsdGVyaW5nLWFsaXN0JyB0aGF0CitkZXRlcm1pbmVzIHRoZSBm aWx0ZXIgZnVuY3Rpb24gdG8gdXNlIGFuZCBRVUFMSUZJRVIgaXMgdGhlIGRhdGEKK3Bhc3NlZCB0 byB0aGF0IGZ1bmN0aW9uIChhbG9uZyB3aXRoIHRoZSBidWZmZXIgYmVpbmcgY29uc2lkZXJlZCku CisKK0EgY29tcG91bmQgZmlsdGVyIHNwZWNpZmljYXRpb24gY2FuIGhhdmUgb25lIG9mIGZvdXIg Zm9ybXM6CisKKy0tIChub3QgRklMVEVSLVNQRUMpCisKKyAgIFJlcHJlc2VudHMgdGhlIGxvZ2lj YWwgY29tcGxlbWVudCBvZiBGSUxURVItU1BFQywgd2hpY2gKKyAgIGlzIGFueSBzaW5nbGUgZmls dGVyIHNwZWNpZmljYXRpb24sIHNpbXBsZSBvciBjb21wb3VuZC4KKyAgIFRoZSBmb3JtIChub3Qg LiBGSUxURVItU1BFQykgaXMgYWxzbyBhY2NlcHRlZCBoZXJlLgorCistLSAoYW5kIEZJTFRFUi1T UEVDUy4uLikKKworICAgUmVwcmVzZW50cyB0aGUgbG9naWNhbC1hbmQgb2YgdGhlIGZpbHRlcnMg ZGVmaW5lZCBieSBvbmUgb3IKKyAgIG1vcmUgZmlsdGVyIHNwZWNpZmljYXRpb25zIEZJTFRFUi1T UEVDUy4uLiwgd2hlcmUgZWFjaAorICAgc3BlY2lmaWNhdGlvbiBjYW4gYmUgc2ltcGxlIG9yIGNv bXBvdW5kLiAgTm90ZSB0aGF0IGFuZCBpcworICAgaW1wbGljaXRseSBhcHBsaWVkIHRvIHRoZSBm aWx0ZXJzIGluIHRoZSB0b3AtbGV2ZWwgbGlzdC4KKworLS0gKG9yIEZJTFRFUi1TUEVDUy4uLikK KworICAgUmVwcmVzZW50cyB0aGUgbG9naWNhbC1vciBvZiB0aGUgZmlsdGVycyBkZWZpbmVkIGJ5 IG9uZSBvcgorICAgbW9yZSBmaWx0ZXIgc3BlY2lmaWNhdGlvbnMgRklMVEVSLVNQRUNTLi4uLCB3 aGVyZSBlYWNoCisgICBzcGVjaWZpY2F0aW9uIGNhbiBiZSBzaW1wbGUgb3IgY29tcG91bmQuCisK Ky0tIChzYXZlZCAuIFwiTkFNRVwiKQorCisgICBSZXByZXNlbnRzIHRoZSBmaWx0ZXIgc2F2ZWQg dW5kZXIgdGhlIHN0cmluZyBOQU1FCisgICBpbiB0aGUgYWxpc3QgYGlidWZmZXItc2F2ZWQtZmls dGVycycuIEl0IGlzIGFuCisgICBlcnJvciB0byBuYW1lIGEgZmlsdGVyIHRoYXQgaGFzIG5vdCBi ZWVuIHNhdmVkLgorCitUaGlzIHZhcmlhYmxlIGlzIGxvY2FsIHRvIGVhY2ggaWJ1ZmZlciBidWZm ZXIuIikKIAogOzsgVGhpcyBpcyBub3cgZnJvYmJlZCBieSBgZGVmaW5lLWlidWZmZXItZmlsdGVy Jy4KIChkZWZ2YXIgaWJ1ZmZlci1maWx0ZXJpbmctYWxpc3QgbmlsCkBAIC0xNzksMTAgKzMzMCwx OCBAQCB0byB0aGlzIHZhcmlhYmxlLiIKIChkZWZ2YXIgaWJ1ZmZlci1jb21waWxlZC1maWx0ZXIt Zm9ybWF0cyBuaWwpCiAKIChkZWZ2YXIgaWJ1ZmZlci1maWx0ZXItZ3JvdXBzIG5pbAotICAiQSBs aXN0IGxpa2UgKChcIk5BTUVcIiAoKFNZTUJPTCAuIFFVQUxJRklFUikgLi4uKSAuLi4pIHdoaWNo IGdyb3VwcyBidWZmZXJzLgotVGhlIFNZTUJPTCBzaG91bGQgYmUgb25lIGZyb20gYGlidWZmZXIt ZmlsdGVyaW5nLWFsaXN0Jy4KLVRoZSBRVUFMSUZJRVIgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIFFV QUxJRklFUiBpbgotYGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMnLiIpCisgICJBbiBhbGlz dCBnaXZpbmcgdGhpcyBidWZmZXIncyBhY3RpdmUgZmlsdGVyIGdyb3Vwcywgb3IgbmlsIGlmIG5v bmUuCisKK1RoaXMgYWxpc3QgbWFwcyBmaWx0ZXIgZ3JvdXAgbGFiZWxzIHRvIGZpbHRlciBzcGVj aWZpY2F0aW9uCitsaXN0cy4gIEVhY2ggZWxlbWVudCBoYXMgdGhlIGZvcm0gKFwiTEFCRUxcIiBG SUxURVItU1BFQ1MuLi4pLAord2hlcmUgRklMVEVSLVNQRUNTLi4uIHJlcHJlc2VudHMgb25lIG9y IG1vcmUgZmlsdGVyCitzcGVjaWZpY2F0aW9ucyBvZiB0aGUgc2FtZSBmb3JtIGFzIGFsbG93ZWQg YXMgZWxlbWVudHMgb2YKK2BpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzJy4KKworRWFjaCBm aWx0ZXIgZ3JvdXAgaXMgZGlzcGxheWVkIGFzIGEgc2VwYXJhdGUgc2VjdGlvbiBpbiB0aGUKK2li dWZmZXIgbGlzdCwgaGVhZGVkIGJ5IExBQkVMIGFuZCBkaXNwbGF5aW5nIG9ubHkgdGhlIGJ1ZmZl cnMKK3RoYXQgcGFzcyB0aHJvdWdoIGFsbCB0aGUgZmlsdGVycyBhc3NvY2lhdGVkIHdpdGggTkFN RSBpbiB0aGlzCitsaXN0LiIpCiAKIChkZWZjdXN0b20gaWJ1ZmZlci1zaG93LWVtcHR5LWZpbHRl ci1ncm91cHMgdAogICAiSWYgbm9uLW5pbCwgdGhlbiBzaG93IHRoZSBuYW1lcyBvZiBmaWx0ZXIg Z3JvdXBzIHdoaWNoIGFyZSBlbXB0eS4iCkBAIC0xOTIsMjAgKzM1MSwyMSBAQCBUaGUgUVVBTElG SUVSIHNob3VsZCBiZSB0aGUgc2FtZSBhcyBRVUFMSUZJRVIgaW4KIChkZWZjdXN0b20gaWJ1ZmZl ci1zYXZlZC1maWx0ZXItZ3JvdXBzIG5pbAogICAiQW4gYWxpc3Qgb2YgZmlsdGVyaW5nIGdyb3Vw cyB0byBzd2l0Y2ggYmV0d2Vlbi4KIAotVGhpcyB2YXJpYWJsZSBzaG91bGQgbG9vayBsaWtlICgo XCJTVFJJTkdcIiBRVUFMSUZJRVJTKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo XCJTVFJJTkdcIiBRVUFMSUZJRVJTKSAuLi4pLCB3aGVyZQotUVVBTElGSUVSUyBpcyBhIGxpc3Qg b2YgdGhlIHNhbWUgZm9ybSBhcwotYGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMnLgorRWFj aCBlbGVtZW50IGlzIG9mIHRoZSBmb3JtIChcIk5BTUVcIiAuIEZJTFRFUi1HUk9VUC1MSVNUKSwK K3doZXJlIE5BTUUgaXMgYSB1bmlxdWUgYnV0IGFyYml0cmFyeSBuYW1lIGFuZCBGSUxURVItR1JP VVAtTElTVAoraXMgYSBsaXN0IG9mIGZpbHRlciBncm91cHMgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1 cmUgYXMKK2FsbG93ZWQgZm9yIGBpYnVmZmVyLWZpbHRlci1ncm91cHMnLgogCi1TZWUgYWxzbyB0 aGUgdmFyaWFibGVzIGBpYnVmZmVyLWZpbHRlci1ncm91cHMnLAotYGlidWZmZXItZmlsdGVyaW5n LXF1YWxpZmllcnMnLCBgaWJ1ZmZlci1maWx0ZXJpbmctYWxpc3QnLCBhbmQgdGhlCi1mdW5jdGlv bnMgYGlidWZmZXItc3dpdGNoLXRvLXNhdmVkLWZpbHRlci1ncm91cHMnLAotYGlidWZmZXItc2F2 ZS1maWx0ZXItZ3JvdXBzJy4iCitTZWUgYWxzbyB0aGUgZnVuY3Rpb25zIGBpYnVmZmVyLXNhdmUt ZmlsdGVyLWdyb3VwcycgYW5kCitgaWJ1ZmZlci1zd2l0Y2gtdG8tc2F2ZWQtZmlsdGVyLWdyb3Vw cycgZm9yIHNhdmluZyBhbmQgc3dpdGNoaW5nCitiZXR3ZWVuIHNldHMgb2YgZmlsdGVyIGdyb3Vw cywgYW5kIHRoZSB2YXJpYWJsZQorYGlidWZmZXItc2F2ZS13aXRoLWN1c3RvbScgdGhhdCBhZmZl Y3RzIGhvdyB0aGlzIGluZm9ybWF0aW9uIGlzCitzYXZlZC4iCiAgIDp0eXBlICcocmVwZWF0IHNl eHApCiAgIDpncm91cCAnaWJ1ZmZlcikKIAogKGRlZnZhciBpYnVmZmVyLWhpZGRlbi1maWx0ZXIt Z3JvdXBzIG5pbAotICAiQSBsaXN0IG9mIGZpbHRlcmluZyBncm91cHMgd2hpY2ggYXJlIGN1cnJl bnRseSBoaWRkZW4uIikKKyAgIlRoZSBsaXN0IG9mIGZpbHRlciBncm91cHMgdGhhdCBhcmUgY3Vy cmVudGx5IGhpZGRlbi4iKQogCiAoZGVmdmFyIGlidWZmZXItZmlsdGVyLWdyb3VwLWtpbGwtcmlu ZyBuaWwpCiAKQEAgLTUxMiwxOCArNjcyLDM4IEBAIFRvIGV2YWx1YXRlIGEgZm9ybSB3aXRob3V0 IHZpZXdpbmcgdGhlIGJ1ZmZlciwgc2VlIGBpYnVmZmVyLWRvLWV2YWwnLiIKIAogOzs7IyMjYXV0 b2xvYWQKIChkZWZ1biBpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcCAoYnVmIGZpbHRlcnMp CisgICJEb2VzIHRoZSBidWZmZXIgQlVGIHN1Y2Nlc3NmdWxseSBwYXNzIGFsbCBvZiB0aGUgZ2l2 ZW4gRklMVEVSUz8KKworQlVGIGlzIGEgbGlzcCBidWZmZXIgb2JqZWN0LCBhbmQgRklMVEVSUyBp cyBhIGxpc3Qgb2YgZmlsdGVyCitzcGVjaWZpY2F0aW9ucyB3aXRoIHRoZSBzYW1lIHN0cnVjdHVy ZSBhcworYGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMnLiIKICAgKG5vdAogICAgKG1lbXEg bmlsIDs7IGEgZmlsdGVyIHdpbGwgcmV0dXJuIG5pbCBpZiBpdCBmYWlsZWQKLQkgKG1hcGNhcgot CSAgOzsgZmlsdGVyIHNob3VsZCBiZSBsaWtlIChUWVBFIC4gUVVBTElGSUVSKSwgb3IKLQkgIDs7 IChvciAoVFlQRSAuIFFVQUxJRklFUikgKFRZUEUgLiBRVUFMSUZJRVIpIC4uLikKLQkgICMnKGxh bWJkYSAocXVhbCkKLQkgICAgICAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXItcCBidWYgcXVh bCkpCi0JICBmaWx0ZXJzKSkpKQorCSAobWFwY2FyICMnKGxhbWJkYSAoZmlsdGVyKQorICAgICAg ICAgICAgICAgICAgICAgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVyLXAgYnVmIGZpbHRlcikp CisgICAgICAgICAgICAgICAgIGZpbHRlcnMpKSkpCisKKyhkZWZ1biBpYnVmZmVyLXVuYXJ5LW9w ZXJhbmQgKGZpbHRlcikKKyAgIkV4dHJhY3RzIG9wZXJhbmQgZnJvbSBhIHVuYXJ5IGNvbXBvdW5k IEZJTFRFUiBzcGVjaWZpY2F0aW9uLgorCitGSUxURVIgc2hvdWxkIGJlIGEgY29ucyBjZWxsIG9m IGVpdGhlciBmb3JtIChmIC4gZCkgb3IgKGYgZCksCit3aGVyZSBvcGVyYW5kIGQgaXMgaXRzZWxm IGEgY29ucyBjZWxsLCBvciBuaWwuIFJldHVybnMgZC4iCisgIChsZXQqICgodGFpbCAoY2RyIGZp bHRlcikpCisgICAgICAgICAobWF5YmUtcSAoY2FyLXNhZmUgdGFpbCkpKQorICAgIChpZiAoY29u c3AgbWF5YmUtcSkgbWF5YmUtcSB0YWlsKSkpCiAKIChkZWZ1biBpYnVmZmVyLWluY2x1ZGVkLWlu LWZpbHRlci1wIChidWYgZmlsdGVyKQorICAiRG9lcyB0aGUgYnVmZmVyIEJVRiBzdWNjZXNzZnVs bHkgcGFzcyBGSUxURVI/CisKK0JVRiBpcyBhIGxpc3AgYnVmZmVyIG9iamVjdCwgYW5kIEZJTFRF UiBpcyBhIGZpbHRlcgorc3BlY2lmaWNhdGlvbiwgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMg YW4gZWxlbWVudCBvZiB0aGUgbGlzdAorYGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMnLiIK ICAgKGlmIChlcSAoY2FyIGZpbHRlcikgJ25vdCkKLSAgICAgIChub3QgKGlidWZmZXItaW5jbHVk ZWQtaW4tZmlsdGVyLXAtMSBidWYgKGNkciBmaWx0ZXIpKSkKKyAgICAgIChsZXQgKChpbm5lciAo aWJ1ZmZlci11bmFyeS1vcGVyYW5kIGZpbHRlcikpKQorICAgICAgICA7OyBBVFROOiBBbGxvd3Mg KG5vdCAobm90IC4uLikpIGV0Yy4gSXMgZml4aW5nIHRoaXMgd29ydGh3aGlsZT8KKyAgICAgICAg KGlmIChlcSAoY2FyIGlubmVyKSAnbm90KSAKKyAgICAgICAgICAgIChpYnVmZmVyLWluY2x1ZGVk LWluLWZpbHRlci1wIGJ1ZiAoaWJ1ZmZlci11bmFyeS1vcGVyYW5kIGlubmVyKSkKKyAgICAgICAg ICAobm90IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlci1wLTEgYnVmIGlubmVyKSkpKQogICAg IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlci1wLTEgYnVmIGZpbHRlcikpKQogCiAoZGVmdW4g aWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXItcC0xIChidWYgZmlsdGVyKQpAQCAtNTMxLDE3ICs3 MTEsMjUgQEAgVG8gZXZhbHVhdGUgYSBmb3JtIHdpdGhvdXQgdmlld2luZyB0aGUgYnVmZmVyLCBz ZWUgYGlidWZmZXItZG8tZXZhbCcuIgogICAgKG5vdAogICAgIChwY2FzZSAoY2FyIGZpbHRlcikK ICAgICAgIChgb3IKKyAgICAgICA7OzsgQVRUTjogU2hvcnQtY2lyY3VpdGluZyBhbHRlcm5hdGl2 ZSB3aXRoIHBhcmFsbGVsIHN0cnVjdHVyZSB3L2BhbmQKKyAgICAgICA7OyhjYXRjaCAnaGFzLW1h dGNoCisgICAgICAgOzsgIChkb2xpc3QgKGZpbHRlci1zcGVjIChjZHIgZmlsdGVyKSBuaWwpCisg ICAgICAgOzsgICAgKHdoZW4gKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVyLXAgYnVmIGZpbHRl ci1zcGVjKQorICAgICAgIDs7ICAgICAgKHRocm93ICdoYXMtbWF0Y2ggdCkpKSkKICAgICAgICAo bWVtcSB0IChtYXBjYXIgIycobGFtYmRhICh4KQotCQkJICAgKGlidWZmZXItaW5jbHVkZWQtaW4t ZmlsdGVyLXAgYnVmIHgpKQotCQkgICAgICAgKGNkciBmaWx0ZXIpKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXItcCBidWYgeCkpCisgICAg ICAgICAgICAgICAgICAgICAgIChjZHIgZmlsdGVyKSkpKQorICAgICAgKGBhbmQKKyAgICAgICAo Y2F0Y2ggJ25vLW1hdGNoCisgICAgICAgICAoZG9saXN0IChmaWx0ZXItc3BlYyAoY2RyIGZpbHRl cikgdCkKKyAgICAgICAgICAgKHVubGVzcyAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXItcCBi dWYgZmlsdGVyLXNwZWMpCisgICAgICAgICAgICAgKHRocm93ICduby1tYXRjaCBuaWwpKSkpKQog ICAgICAgKGBzYXZlZAotICAgICAgIChsZXQgKChkYXRhCi0JICAgICAgKGFzc29jIChjZHIgZmls dGVyKQotCQkgICAgIGlidWZmZXItc2F2ZWQtZmlsdGVycykpKQotCSAodW5sZXNzIGRhdGEKLQkg ICAoaWJ1ZmZlci1maWx0ZXItZGlzYWJsZSB0KQotCSAgIChlcnJvciAiVW5rbm93biBzYXZlZCBm aWx0ZXIgJXMiIChjZHIgZmlsdGVyKSkpCi0JIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMt cCBidWYgKGNhZHIgZGF0YSkpKSkKKyAgICAgICAobGV0ICgoZGF0YSAoYXNzb2MgKGNkciBmaWx0 ZXIpIGlidWZmZXItc2F2ZWQtZmlsdGVycykpKQorICAgICAgICAgKHVubGVzcyBkYXRhCisgICAg ICAgICAgIChpYnVmZmVyLWZpbHRlci1kaXNhYmxlIHQpCisgICAgICAgICAgIChlcnJvciAiVW5r bm93biBzYXZlZCBmaWx0ZXIgJXMiIChjZHIgZmlsdGVyKSkpCisgICAgICAgICAoaWJ1ZmZlci1p bmNsdWRlZC1pbi1maWx0ZXJzLXAgYnVmIChjZHIgZGF0YSkpKSkKICAgICAgIChfCiAgICAgICAg KHBjYXNlLWxldCAoKGAoLF90eXBlICxfZGVzYyAsZnVuYykKICAgICAgICAgICAgICAgICAgICAg KGFzc3EgKGNhciBmaWx0ZXIpIGlidWZmZXItZmlsdGVyaW5nLWFsaXN0KSkpCkBAIC04MjgsMzkg KzEwMTYsMzYgQEAgZ3JvdXAgZGVmaW5pdGlvbnMgYnkgc2V0dGluZyBgaWJ1ZmZlci1maWx0ZXIt Z3JvdXBzJyB0byBuaWwuIgogICAgICh3aGVuIGJ1ZgogICAgICAgKGlidWZmZXItanVtcC10by1i dWZmZXIgKGJ1ZmZlci1uYW1lIGJ1ZikpKSkpCiAKLShkZWZ1biBpYnVmZmVyLXB1c2gtZmlsdGVy IChxdWFsaWZpZXIpCi0gICJBZGQgUVVBTElGSUVSIHRvIGBpYnVmZmVyLWZpbHRlcmluZy1xdWFs aWZpZXJzJy4iCi0gIChwdXNoIHF1YWxpZmllciBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJz KSkKKyhkZWZ1biBpYnVmZmVyLXB1c2gtZmlsdGVyIChmaWx0ZXItc3BlY2lmaWNhdGlvbikKKyAg IkFkZCBGSUxURVItU1BFQ0lGSUNBVElPTiB0byBgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVy cycuIgorICAocHVzaCBmaWx0ZXItc3BlY2lmaWNhdGlvbiBpYnVmZmVyLWZpbHRlcmluZy1xdWFs aWZpZXJzKSkKIAogOzs7IyMjYXV0b2xvYWQKIChkZWZ1biBpYnVmZmVyLWRlY29tcG9zZS1maWx0 ZXIgKCkKLSAgIlNlcGFyYXRlIHRoZSB0b3AgY29tcG91bmQgZmlsdGVyIChPUiwgTk9ULCBvciBT QVZFRCkgaW4gdGhpcyBidWZmZXIuCisgICJTZXBhcmF0ZSB0aGlzIGJ1ZmZlcidzIHRvcCBjb21w b3VuZCBmaWx0ZXIgKEFORCwgT1IsIE5PVCwgb3IgU0FWRUQpLgogCiBUaGlzIG1lYW5zIHRoYXQg dGhlIHRvcG1vc3QgZmlsdGVyIG9uIHRoZSBmaWx0ZXJpbmcgc3RhY2ssIHdoaWNoIG11c3QKIGJl IGEgY29tcGxleCBmaWx0ZXIgbGlrZSAoT1IgW25hbWU6IGZvb10gW21vZGU6IGJhci1tb2RlXSks IHdpbGwgYmUKLXR1cm5lZCBpbnRvIHR3byBzZXBhcmF0ZSBmaWx0ZXJzIFtuYW1lOiBmb29dIGFu ZCBbbW9kZTogYmFyLW1vZGVdLiIKK3R1cm5lZCBpbnRvIHNlcGFyYXRlIGZpbHRlcnMsIGxpa2Ug W25hbWU6IGZvb10gYW5kIFttb2RlOiBiYXItbW9kZV0uIgogICAoaW50ZXJhY3RpdmUpCiAgICh3 aGVuIChudWxsIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCiAgICAgKGVycm9yICJObyBm aWx0ZXJzIGluIGVmZmVjdCIpKQogICAobGV0ICgobGltIChwb3AgaWJ1ZmZlci1maWx0ZXJpbmct cXVhbGlmaWVycykpKQogICAgIChwY2FzZSAoY2FyIGxpbSkKLSAgICAgIChgb3IKKyAgICAgICgo b3IgJ29yICdhbmQpCiAgICAgICAgKHNldHEgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycyAo YXBwZW5kCi0JCQkJCSAgKGNkciBsaW0pCi0JCQkJCSAgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlm aWVycykpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIg bGltKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidWZmZXIt ZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkKICAgICAgIChgc2F2ZWQKLSAgICAgICAobGV0ICgoZGF0 YQotCSAgICAgIChhc3NvYyAoY2RyIGxpbSkKLQkJICAgICBpYnVmZmVyLXNhdmVkLWZpbHRlcnMp KSkKLQkgKHVubGVzcyBkYXRhCi0JICAgKGlidWZmZXItZmlsdGVyLWRpc2FibGUpCi0JICAgKGVy cm9yICJVbmtub3duIHNhdmVkIGZpbHRlciAlcyIgKGNkciBsaW0pKSkKLQkgKHNldHEgaWJ1ZmZl ci1maWx0ZXJpbmctcXVhbGlmaWVycyAoYXBwZW5kCi0JCQkJCSAgICAoY2FkciBkYXRhKQotCQkJ CQkgICAgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKSkKKyAgICAgICAobGV0ICgoZGF0 YSAoYXNzb2MgKGNkciBsaW0pIGlidWZmZXItc2F2ZWQtZmlsdGVycykpKQorICAgICAgICAgKHVu bGVzcyBkYXRhCisgICAgICAgICAgIChpYnVmZmVyLWZpbHRlci1kaXNhYmxlKQorICAgICAgICAg ICAoZXJyb3IgIlVua25vd24gc2F2ZWQgZmlsdGVyICVzIiAoY2RyIGxpbSkpKQorICAgICAgICAg KHNldHEgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycyAoYXBwZW5kCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIGRhdGEpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZp ZXJzKSkpKQogICAgICAgKGBub3QKLSAgICAgICAocHVzaCAoY2RyIGxpbSkKLQkgICAgIGlidWZm ZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAgIChwdXNoIChpYnVmZmVyLXVuYXJ5LW9w ZXJhbmQgbGltKSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkKICAgICAgIChfCiAgICAg ICAgKGVycm9yICJGaWx0ZXIgdHlwZSAlcyBpcyBub3QgY29tcG91bmQiIChjYXIgbGltKSkpKSkK ICAgKGlidWZmZXItdXBkYXRlIG5pbCB0KSkKQEAgLTg5MiwxMiArMTA3NywxMiBAQCB0dXJuZWQg aW50byB0d28gc2VwYXJhdGUgZmlsdGVycyBbbmFtZTogZm9vXSBhbmQgW21vZGU6IGJhci1tb2Rl XS4iCiAgIChpYnVmZmVyLXVwZGF0ZSBuaWwgdCkpCiAKIDs7OyMjI2F1dG9sb2FkCi0oZGVmdW4g aWJ1ZmZlci1vci1maWx0ZXIgKCZvcHRpb25hbCByZXZlcnNlKQorKGRlZnVuIGlidWZmZXItb3It ZmlsdGVyICgmb3B0aW9uYWwgZGVjb21wb3NlKQogICAiUmVwbGFjZSB0aGUgdG9wIHR3byBmaWx0 ZXJzIGluIHRoaXMgYnVmZmVyIHdpdGggdGhlaXIgbG9naWNhbCBPUi4KLUlmIG9wdGlvbmFsIGFy Z3VtZW50IFJFVkVSU0UgaXMgbm9uLW5pbCwgaW5zdGVhZCBicmVhayB0aGUgdG9wIE9SCitJZiBv cHRpb25hbCBhcmd1bWVudCBERUNPTVBPU0UgaXMgbm9uLW5pbCwgaW5zdGVhZCBicmVhayB0aGUg dG9wIE9SCiBmaWx0ZXIgaW50byBwYXJ0cy4iCiAgIChpbnRlcmFjdGl2ZSAiUCIpCi0gIChpZiBy ZXZlcnNlCisgIChpZiBkZWNvbXBvc2UKICAgICAgIChwcm9nbgogCSh3aGVuIChvciAobnVsbCBp YnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQogCQkgIChub3QgKGVxICdvciAoY2FhciBpYnVm ZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpKQpAQCAtOTE3LDYgKzExMDIsMzIgQEAgZmlsdGVy IGludG8gcGFydHMuIgogCSAgICAgIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkpCiAg IChpYnVmZmVyLXVwZGF0ZSBuaWwgdCkpCiAKKzs7OyMjI2F1dG9sb2FkCisoZGVmdW4gaWJ1ZmZl ci1hbmQtZmlsdGVyICgmb3B0aW9uYWwgZGVjb21wb3NlKQorICAiUmVwbGFjZSB0aGUgdG9wIHR3 byBmaWx0ZXJzIGluIHRoaXMgYnVmZmVyIHdpdGggdGhlaXIgbG9naWNhbCBBTkQuCitJZiBvcHRp b25hbCBhcmd1bWVudCBERUNPTVBPU0UgaXMgbm9uLW5pbCwgaW5zdGVhZCBicmVhayB0aGUgdG9w IEFORAorZmlsdGVyIGludG8gcGFydHMuIgorICAoaW50ZXJhY3RpdmUgIlAiKQorICAoaWYgZGVj b21wb3NlCisgICAgICAocHJvZ24KKyAgICAgICAgKHdoZW4gKG9yIChudWxsIGlidWZmZXItZmls dGVyaW5nLXF1YWxpZmllcnMpCisgICAgICAgICAgICAgICAgICAobm90IChlcSAnYW5kIChjYWFy IGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkpCisgICAgICAgICAgKGVycm9yICJUb3Ag ZmlsdGVyIGlzIG5vdCBhbiBBTkQiKSkKKyAgICAgICAgKGxldCAoKGxpbSAocG9wIGlidWZmZXIt ZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkKKyAgICAgICAgICAoc2V0cSBpYnVmZmVyLWZpbHRlcmlu Zy1xdWFsaWZpZXJzCisgICAgICAgICAgICAgICAgKG5jb25jIChjZHIgbGltKSBpYnVmZmVyLWZp bHRlcmluZy1xdWFsaWZpZXJzKSkpKQorICAgICh3aGVuICg8IChsZW5ndGggaWJ1ZmZlci1maWx0 ZXJpbmctcXVhbGlmaWVycykgMikKKyAgICAgIChlcnJvciAiTmVlZCB0d28gZmlsdGVycyB0byBB TkQiKSkKKyAgICA7OyBJZiB0aGUgc2Vjb25kIGZpbHRlciBpcyBhbiBBTkQsIGp1c3QgYWRkIHRv IGl0LgorICAgIChsZXQgKChmaXJzdCAocG9wIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMp KQorICAgICAgICAgIChzZWNvbmQgKHBvcCBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkp CisgICAgICAoaWYgKGVxICdhbmQgKGNhciBzZWNvbmQpKQorICAgICAgICAgIChwdXNoIChuY29u YyAobGlzdCAnYW5kIGZpcnN0KSAoY2RyIHNlY29uZCkpCisgICAgICAgICAgICAgICAgaWJ1ZmZl ci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgKHB1c2ggKGxpc3QgJ2FuZCBmaXJzdCBz ZWNvbmQpCisgICAgICAgICAgICAgIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkpCisg IChpYnVmZmVyLXVwZGF0ZSBuaWwgdCkpCisKIChkZWZ1biBpYnVmZmVyLW1heWJlLXNhdmUtc3R1 ZmYgKCkKICAgKHdoZW4gaWJ1ZmZlci1zYXZlLXdpdGgtY3VzdG9tCiAgICAgKGlmIChmYm91bmRw ICdjdXN0b21pemUtc2F2ZS12YXJpYWJsZSkKQEAgLTkzOSw3ICsxMTUwLDcgQEAgSW50ZXJhY3Rp dmVseSwgcHJvbXB0IGZvciBOQU1FLCBhbmQgdXNlIHRoZSBjdXJyZW50IGZpbHRlcnMuIgogICAg ICAgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKQogICAoaWJ1ZmZlci1haWYgKGFzc29j IG5hbWUgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzKQogICAgICAgKHNldGNkciBpdCBmaWx0ZXJzKQot ICAgIChwdXNoIChsaXN0IG5hbWUgZmlsdGVycykgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzKSkKKyAg ICAocHVzaCAoY29ucyBuYW1lIGZpbHRlcnMpIGlidWZmZXItc2F2ZWQtZmlsdGVycykpCiAgIChp YnVmZmVyLW1heWJlLXNhdmUtc3R1ZmYpKQogCiA7OzsjIyNhdXRvbG9hZApAQCAtOTg5LDcgKzEy MDAsOSBAQCBJbnRlcmFjdGl2ZWx5LCBwcm9tcHQgZm9yIE5BTUUsIGFuZCB1c2UgdGhlIGN1cnJl bnQgZmlsdGVycy4iCiAKIChkZWZ1biBpYnVmZmVyLWZvcm1hdC1xdWFsaWZpZXIgKHF1YWxpZmll cikKICAgKGlmIChlcSAoY2FyLXNhZmUgcXVhbGlmaWVyKSAnbm90KQotICAgICAgKGNvbmNhdCAi IFtOT1QiIChpYnVmZmVyLWZvcm1hdC1xdWFsaWZpZXItMSAoY2RyIHF1YWxpZmllcikpICJdIikK KyAgICAgIChjb25jYXQgIiBbTk9UIgorICAgICAgICAgICAgICAoaWJ1ZmZlci1mb3JtYXQtcXVh bGlmaWVyLTEgKGlidWZmZXItdW5hcnktb3BlcmFuZCBxdWFsaWZpZXIpKQorICAgICAgICAgICAg ICAiXSIpCiAgICAgKGlidWZmZXItZm9ybWF0LXF1YWxpZmllci0xIHF1YWxpZmllcikpKQogCiAo ZGVmdW4gaWJ1ZmZlci1mb3JtYXQtcXVhbGlmaWVyLTEgKHF1YWxpZmllcikKQEAgLTk5OCwxNCAr MTIxMSwxNiBAQCBJbnRlcmFjdGl2ZWx5LCBwcm9tcHQgZm9yIE5BTUUsIGFuZCB1c2UgdGhlIGN1 cnJlbnQgZmlsdGVycy4iCiAgICAgIChjb25jYXQgIiBbZmlsdGVyOiAiIChjZHIgcXVhbGlmaWVy KSAiXSIpKQogICAgIChgb3IKICAgICAgKGNvbmNhdCAiIFtPUiIgKG1hcGNvbmNhdCAjJ2lidWZm ZXItZm9ybWF0LXF1YWxpZmllcgotCQkJICAgICAgIChjZHIgcXVhbGlmaWVyKSAiIikgIl0iKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIHF1YWxpZmllcikgIiIpICJdIikp CisgICAgKGBhbmQKKyAgICAgKGNvbmNhdCAiIFtBTkQiIChtYXBjb25jYXQgIydpYnVmZmVyLWZv cm1hdC1xdWFsaWZpZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNkciBxdWFs aWZpZXIpICIiKSAiXSIpKQogICAgIChfCiAgICAgIChsZXQgKCh0eXBlIChhc3NxIChjYXIgcXVh bGlmaWVyKSBpYnVmZmVyLWZpbHRlcmluZy1hbGlzdCkpKQogICAgICAgICh1bmxlc3MgcXVhbGlm aWVyCi0JIChlcnJvciAiSWJ1ZmZlcjogYmFkIHF1YWxpZmllciAlcyIgcXVhbGlmaWVyKSkKKyAg ICAgICAgIChlcnJvciAiSWJ1ZmZlcjogYmFkIHF1YWxpZmllciAlcyIgcXVhbGlmaWVyKSkKICAg ICAgICAoY29uY2F0ICIgWyIgKGNhZHIgdHlwZSkgIjogIiAoZm9ybWF0ICIlc10iIChjZHIgcXVh bGlmaWVyKSkpKSkpKQogCi0KIChkZWZ1biBpYnVmZmVyLWxpc3QtYnVmZmVyLW1vZGVzICgmb3B0 aW9uYWwgaW5jbHVkZS1wYXJlbnRzKQogICAiQ3JlYXRlIGEgY29tcGxldGlvbiB0YWJsZSBvZiBi dWZmZXIgbW9kZXMgY3VycmVudGx5IGluIHVzZS4KIElmIElOQ0xVREUtUEFSRU5UUyBpcyBub24t bmlsIHRoZW4gaW5jbHVkZSBwYXJlbnQgbW9kZXMuIgpAQCAtMTAyMyw3ICsxMjM4LDcgQEAgSWYg SU5DTFVERS1QQVJFTlRTIGlzIG5vbi1uaWwgdGhlbiBpbmNsdWRlIHBhcmVudCBtb2Rlcy4iCiAK IDs7OyMjI2F1dG9sb2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktbW9kZSAiaWJ1Zi1l eHQiKQogKGRlZmluZS1pYnVmZmVyLWZpbHRlciBtb2RlCi0gICJUb2dnbGUgY3VycmVudCB2aWV3 IHRvIGJ1ZmZlcnMgd2l0aCBtYWpvciBtb2RlIFFVQUxJRklFUi4iCisgICJMaW1pdCBjdXJyZW50 IHZpZXcgdG8gYnVmZmVycyB3aXRoIG1ham9yIG1vZGUgUVVBTElGSUVSLiIKICAgKDpkZXNjcmlw dGlvbiAibWFqb3IgbW9kZSIKICAgIDpyZWFkZXIKICAgIChsZXQqICgoYnVmIChpYnVmZmVyLWN1 cnJlbnQtYnVmZmVyKSkKQEAgLTEwNDMsNyArMTI1OCw3IEBAIElmIElOQ0xVREUtUEFSRU5UUyBp cyBub24tbmlsIHRoZW4gaW5jbHVkZSBwYXJlbnQgbW9kZXMuIgogCiA7OzsjIyNhdXRvbG9hZCAo YXV0b2xvYWQgJ2lidWZmZXItZmlsdGVyLWJ5LXVzZWQtbW9kZSAiaWJ1Zi1leHQiKQogKGRlZmlu ZS1pYnVmZmVyLWZpbHRlciB1c2VkLW1vZGUKLSAgIlRvZ2dsZSBjdXJyZW50IHZpZXcgdG8gYnVm ZmVycyB3aXRoIG1ham9yIG1vZGUgUVVBTElGSUVSLgorICAiTGltaXQgY3VycmVudCB2aWV3IHRv IGJ1ZmZlcnMgd2l0aCBtYWpvciBtb2RlIFFVQUxJRklFUi4KIENhbGxlZCBpbnRlcmFjdGl2ZWx5 LCB0aGlzIGZ1bmN0aW9uIGFsbG93cyBzZWxlY3Rpb24gb2YgbW9kZXMKIGN1cnJlbnRseSB1c2Vk IGJ5IGJ1ZmZlcnMuIgogICAoOmRlc2NyaXB0aW9uICJtYWpvciBtb2RlIGluIHVzZSIKQEAgLTEw NjIsNyArMTI3Nyw3IEBAIGN1cnJlbnRseSB1c2VkIGJ5IGJ1ZmZlcnMuIgogCiA7OzsjIyNhdXRv bG9hZCAoYXV0b2xvYWQgJ2lidWZmZXItZmlsdGVyLWJ5LWRlcml2ZWQtbW9kZSAiaWJ1Zi1leHQi KQogKGRlZmluZS1pYnVmZmVyLWZpbHRlciBkZXJpdmVkLW1vZGUKLSAgICAiVG9nZ2xlIGN1cnJl bnQgdmlldyB0byBidWZmZXJzIHdob3NlIG1ham9yIG1vZGUgaW5oZXJpdHMgZnJvbSBRVUFMSUZJ RVIuIgorICAgICJMaW1pdCBjdXJyZW50IHZpZXcgdG8gYnVmZmVycyB3aG9zZSBtYWpvciBtb2Rl IGluaGVyaXRzIGZyb20gUVVBTElGSUVSLiIKICAgKDpkZXNjcmlwdGlvbiAiZGVyaXZlZCBtb2Rl IgogCQk6cmVhZGVyCiAJCShpbnRlcm4KQEAgLTEwNzMsMjIgKzEyODgsODMgQEAgY3VycmVudGx5 IHVzZWQgYnkgYnVmZmVycy4iCiAKIDs7OyMjI2F1dG9sb2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1m aWx0ZXItYnktbmFtZSAiaWJ1Zi1leHQiKQogKGRlZmluZS1pYnVmZmVyLWZpbHRlciBuYW1lCi0g ICJUb2dnbGUgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgd2l0aCBuYW1lIG1hdGNoaW5nIFFVQUxJ RklFUi4iCisgICJMaW1pdCBjdXJyZW50IHZpZXcgdG8gYnVmZmVycyB3aXRoIG5hbWUgbWF0Y2hp bmcgUVVBTElGSUVSLiIKICAgKDpkZXNjcmlwdGlvbiAiYnVmZmVyIG5hbWUiCiAgICA6cmVhZGVy IChyZWFkLWZyb20tbWluaWJ1ZmZlciAiRmlsdGVyIGJ5IG5hbWUgKHJlZ2V4cCk6ICIpKQogICAo c3RyaW5nLW1hdGNoIHF1YWxpZmllciAoYnVmZmVyLW5hbWUgYnVmKSkpCiAKKzs7OyMjI2F1dG9s b2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktc3RhcnJlZC1uYW1lICJpYnVmLWV4dCIp CisoZGVmaW5lLWlidWZmZXItZmlsdGVyIHN0YXJyZWQtbmFtZQorICAgICJMaW1pdCBjdXJyZW50 IHZpZXcgdG8gYnVmZmVycyB3aXRoIG5hbWUgYmVnaW5uaW5nIHdpdGggKi4iCisgICg6ZGVzY3Jp cHRpb24gInN0YXJyZWQgYnVmZmVyIG5hbWUiCisgICA6cmVhZGVyIG5pbCkKKyAgKHN0cmluZy1t YXRjaCAiXFxgKiIgKGJ1ZmZlci1uYW1lIGJ1ZikpKQorCis7OyBUaGlzIHNob3VsZCBwcm9iYWJs eSBiZSBjYWxsZWQgcGF0aG5hbWUgYnV0IGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkK IDs7OyMjI2F1dG9sb2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktZmlsZW5hbWUgImli dWYtZXh0IikKLShkZWZpbmUtaWJ1ZmZlci1maWx0ZXIgZmlsZW5hbWUKLSAgIlRvZ2dsZSBjdXJy ZW50IHZpZXcgdG8gYnVmZmVycyB3aXRoIGZpbGVuYW1lIG1hdGNoaW5nIFFVQUxJRklFUi4iCi0g ICg6ZGVzY3JpcHRpb24gImZpbGVuYW1lIgotICAgOnJlYWRlciAocmVhZC1mcm9tLW1pbmlidWZm ZXIgIkZpbHRlciBieSBmaWxlbmFtZSAocmVnZXhwKTogIikpCisoZGVmaW5lLWlidWZmZXItZmls dGVyIGZpbGVuYW1lICAKKyAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdpdGggZnVs bCBmaWxlIHBhdGhuYW1lIG1hdGNoaW5nIFFVQUxJRklFUi4KKworRm9yIGV4YW1wbGUsIGZvciBh IGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggZmlsZSAnL2EvYi9jLmQnLCB0aGlzCittYXRjaGVzIGFn YWluc3QgJy9hL2IvYy5kJy4iCisgICg6ZGVzY3JpcHRpb24gImZpbGUgcGF0aG5hbWUiCisgICA6 cmVhZGVyIChyZWFkLWZyb20tbWluaWJ1ZmZlciAiRmlsdGVyIGJ5IGZpbGUgcGF0aG5hbWUgKHJl Z2V4cCk6ICIpKQogICAoaWJ1ZmZlci1hd2hlbiAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWYgKGli dWZmZXItYnVmZmVyLWZpbGUtbmFtZSkpCiAgICAgKHN0cmluZy1tYXRjaCBxdWFsaWZpZXIgaXQp KSkKIAorOzsgSWYgZmlsZW5hbWUgYWJvdmUgd2VyZSByZW5hbWVkIHRvIHBhdGhuYW1lLCB0aGlz IGNvdWxkIGJlIGNhbGxlZCBmaWxlbmFtZS4KKzs7OyMjI2F1dG9sb2FkIChhdXRvbG9hZCAnaWJ1 ZmZlci1maWx0ZXItYnktZmlsZW5hbWUtYmFzZSAiaWJ1Zi1leHQiKQorKGRlZmluZS1pYnVmZmVy LWZpbHRlciBmaWxlbmFtZS1iYXNlIAorICAgICJMaW1pdCBjdXJyZW50IHZpZXcgdG8gYnVmZmVy cyB3aXRoIGZpbGUgYmFzZW5hbWUgbWF0Y2hpbmcgUVVBTElGSUVSLgorCitGb3IgZXhhbXBsZSwg Zm9yIGEgYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCBmaWxlICcvYS9iL2MuZCcsIHRoaXMKK21hdGNo ZXMgYWdhaW5zdCAnYy5kJy4iCisgICg6ZGVzY3JpcHRpb24gImZpbGUgYmFzZW5hbWUiCisgICA6 cmVhZGVyIChyZWFkLWZyb20tbWluaWJ1ZmZlcgorICAgICAgICAgICAgIkZpbHRlciBieSBmaWxl IG5hbWUsIHdpdGhvdXQgZGlyZWN0b3J5IHBhcnQgKHJlZ2V4KTogIikpCisgIChpYnVmZmVyLWF3 aGVuICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZiAoaWJ1ZmZlci1idWZmZXItZmlsZS1uYW1lKSkK KyAgICAoc3RyaW5nLW1hdGNoIHF1YWxpZmllciAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBpdCkp KSkKKworOzs7IyMjYXV0b2xvYWQgKGF1dG9sb2FkICdpYnVmZmVyLWZpbHRlci1ieS1maWxlbmFt ZS1leHRlbnNpb24gImlidWYtZXh0IikKKyhkZWZpbmUtaWJ1ZmZlci1maWx0ZXIgZmlsZW5hbWUt ZXh0ZW5zaW9uCisgICAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdpdGggZmlsZW5h bWUgZXh0ZW5zaW9uIG1hdGNoaW5nIFFVQUxJRklFUi4KKworVGhlIHNlcGFyYXRvciBjaGFyYWN0 ZXIgKHR5cGljYWxseSBgLicpIGlzIG5vdCBwYXJ0IG9mIHRoZQorcGF0dGVybi4gRm9yIGV4YW1w bGUsIGZvciBhIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggZmlsZQorJy9hL2IvYy5kJywgdGhpcyBt YXRjaGVzIGFnYWluc3QgJ2QnLiIKKyAgKDpkZXNjcmlwdGlvbiAiZmlsZW5hbWUgZXh0ZW5zaW9u IgorICAgOnJlYWRlciAocmVhZC1mcm9tLW1pbmlidWZmZXIKKyAgICAgICAgICAgICJGaWx0ZXIg YnkgZmlsZW5hbWUgZXh0ZW5zaW9uIHdpdGhvdXQgc2VwYXJhdG9yIChyZWdleCk6ICIpKQorICAo aWJ1ZmZlci1hd2hlbiAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWYgKGlidWZmZXItYnVmZmVyLWZp bGUtbmFtZSkpCisgICAgKHN0cmluZy1tYXRjaCBxdWFsaWZpZXIgKG9yIChmaWxlLW5hbWUtZXh0 ZW5zaW9uIGl0KSAiIikpKSkKKworOzs7IyMjYXV0b2xvYWQgKGF1dG9sb2FkICdpYnVmZmVyLWZp bHRlci1ieS1maWxlbmFtZS1yb290ICJpYnVmLWV4dCIpCisoZGVmaW5lLWlidWZmZXItZmlsdGVy IGZpbGVuYW1lLXJvb3QKKyAgICAiTGltaXQgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgd2l0aCBm aWxlIGJhc2VuYW1lIG1hdGNoaW5nIFFVQUxJRklFUi4KKworVGhlIGZpbGVuYW1lIHJvb3QgaXMg dGhlIHBhcnQgb2YgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGZpbGUgd2l0aG91dAordGhlIGRp cmVjdG9yeSBvciBleHRlbnNpb24vc3VmZml4IGNvbXBvbmVudHMuIEZvciBleGFtcGxlLCBmb3Ig YSBidWZmZXIKK2Fzc29jaWF0ZWQgd2l0aCBmaWxlICcvYS9iL2MuZCcsIHRoaXMgbWF0Y2hlcyBh Z2FpbnN0ICdjJy4iCisgICg6ZGVzY3JpcHRpb24gImZpbGVuYW1lIHJvb3QiCisgICA6cmVhZGVy IChyZWFkLWZyb20tbWluaWJ1ZmZlciAiRmlsdGVyIGJ5IGZpbGVuYW1lIHJvb3QgKHJlZ2V4KTog IikpCisgIChpYnVmZmVyLWF3aGVuICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZiAoaWJ1ZmZlci1i dWZmZXItZmlsZS1uYW1lKSkKKyAgICAoc3RyaW5nLW1hdGNoIHF1YWxpZmllciAoZmlsZS1uYW1l LWJhc2UgaXQpKSkpCisKKzs7OyMjI2F1dG9sb2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXIt YnktZmlsZW5hbWUtZGlyZWN0b3J5ICJpYnVmLWV4dCIpCisoZGVmaW5lLWlidWZmZXItZmlsdGVy IGZpbGVuYW1lLWRpcmVjdG9yeQorICAgICJMaW1pdCBjdXJyZW50IHZpZXcgdG8gYnVmZmVycyB3 aXRoIGZpbGVuYW1lIGRpcmVjdG9yeSBtYXRjaGluZyBRVUFMSUZJRVIuCisKK0ZvciBleGFtcGxl LCBmb3IgYSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIGZpbGUgJy9hL2IvYy5kJywgdGhpcworbWF0 Y2hlcyBhZ2FpbnN0ICcvYS9iJy4iCisgICg6ZGVzY3JpcHRpb24gImRpcmVjdG9yeSBuYW1lIgor ICAgOnJlYWRlciAocmVhZC1mcm9tLW1pbmlidWZmZXIgIkZpbHRlciBieSBkaXJlY3RvcnkgbmFt ZSAocmVnZXgpOiAiKSkKKyAgKGlidWZmZXItYXdoZW4gKHdpdGgtY3VycmVudC1idWZmZXIgYnVm IChpYnVmZmVyLWJ1ZmZlci1maWxlLW5hbWUpKQorICAgIChsZXQgKChkaXJuYW1lIChmaWxlLW5h bWUtZGlyZWN0b3J5IGl0KSkpCisgICAgICAod2hlbiBkaXJuYW1lIChzdHJpbmctbWF0Y2ggcXVh bGlmaWVyIGRpcm5hbWUpKSkpKQorCiA7OzsjIyNhdXRvbG9hZCAoYXV0b2xvYWQgJ2lidWZmZXIt ZmlsdGVyLWJ5LXNpemUtZ3QgICJpYnVmLWV4dCIpCiAoZGVmaW5lLWlidWZmZXItZmlsdGVyIHNp emUtZ3QKLSAgIlRvZ2dsZSBjdXJyZW50IHZpZXcgdG8gYnVmZmVycyB3aXRoIHNpemUgZ3JlYXRl ciB0aGFuIFFVQUxJRklFUi4iCisgICJMaW1pdCBjdXJyZW50IHZpZXcgdG8gYnVmZmVycyB3aXRo IHNpemUgZ3JlYXRlciB0aGFuIFFVQUxJRklFUi4iCiAgICg6ZGVzY3JpcHRpb24gInNpemUgZ3Jl YXRlciB0aGFuIgogICAgOnJlYWRlcgogICAgKHN0cmluZy10by1udW1iZXIgKHJlYWQtZnJvbS1t aW5pYnVmZmVyICJGaWx0ZXIgYnkgc2l6ZSBncmVhdGVyIHRoYW46ICIpKSkKQEAgLTEwOTcsMTYg KzEzNzMsMjMgQEAgY3VycmVudGx5IHVzZWQgYnkgYnVmZmVycy4iCiAKIDs7OyMjI2F1dG9sb2Fk IChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktc2l6ZS1sdCAgImlidWYtZXh0IikKIChkZWZp bmUtaWJ1ZmZlci1maWx0ZXIgc2l6ZS1sdAotICAgIlRvZ2dsZSBjdXJyZW50IHZpZXcgdG8gYnVm ZmVycyB3aXRoIHNpemUgbGVzcyB0aGFuIFFVQUxJRklFUi4iCisgICAiTGltaXQgY3VycmVudCB2 aWV3IHRvIGJ1ZmZlcnMgd2l0aCBzaXplIGxlc3MgdGhhbiBRVUFMSUZJRVIuIgogICAoOmRlc2Ny aXB0aW9uICJzaXplIGxlc3MgdGhhbiIKICAgIDpyZWFkZXIKICAgIChzdHJpbmctdG8tbnVtYmVy IChyZWFkLWZyb20tbWluaWJ1ZmZlciAiRmlsdGVyIGJ5IHNpemUgbGVzcyB0aGFuOiAiKSkpCiAg ICg8ICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZiAoYnVmZmVyLXNpemUpKQogICAgICBxdWFsaWZp ZXIpKQogCis7OzsjIyNhdXRvbG9hZCAoYXV0b2xvYWQgJ2lidWZmZXItZmlsdGVyLWJ5LW1vZGlm aWVkICJpYnVmLWV4dCIpCisoZGVmaW5lLWlidWZmZXItZmlsdGVyIG1vZGlmaWVkCisgICAiTGlt aXQgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgdGhhdCBhcmUgbWFya2VkIGFzIG1vZGlmaWVkLiIK KyAgKDpkZXNjcmlwdGlvbiAibW9kaWZpZWQiCisgICA6cmVhZGVyIG5pbCkKKyAgKGJ1ZmZlci1t b2RpZmllZC1wIGJ1ZikpCisKIDs7OyMjI2F1dG9sb2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0 ZXItYnktY29udGVudCAiaWJ1Zi1leHQiKQogKGRlZmluZS1pYnVmZmVyLWZpbHRlciBjb250ZW50 Ci0gICAiVG9nZ2xlIGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdob3NlIGNvbnRlbnRzIG1hdGNo IFFVQUxJRklFUi4iCisgICAiTGltaXQgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgd2hvc2UgY29u dGVudHMgbWF0Y2ggUVVBTElGSUVSLiIKICAgKDpkZXNjcmlwdGlvbiAiY29udGVudCIKICAgIDpy ZWFkZXIgKHJlYWQtZnJvbS1taW5pYnVmZmVyICJGaWx0ZXIgYnkgY29udGVudCAocmVnZXhwKTog IikpCiAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZgpAQCAtMTExNiwxMiArMTM5OSwzMyBAQCBj dXJyZW50bHkgdXNlZCBieSBidWZmZXJzLiIKIAogOzs7IyMjYXV0b2xvYWQgKGF1dG9sb2FkICdp YnVmZmVyLWZpbHRlci1ieS1wcmVkaWNhdGUgImlidWYtZXh0IikKIChkZWZpbmUtaWJ1ZmZlci1m aWx0ZXIgcHJlZGljYXRlCi0gICAiVG9nZ2xlIGN1cnJlbnQgdmlldyB0byBidWZmZXJzIGZvciB3 aGljaCBRVUFMSUZJRVIgcmV0dXJucyBub24tbmlsLiIKKyAgICJMaW1pdCBjdXJyZW50IHZpZXcg dG8gYnVmZmVycyBmb3Igd2hpY2ggUVVBTElGSUVSIHJldHVybnMgbm9uLW5pbC4iCiAgICg6ZGVz Y3JpcHRpb24gInByZWRpY2F0ZSIKICAgIDpyZWFkZXIgKHJlYWQtbWluaWJ1ZmZlciAiRmlsdGVy IGJ5IHByZWRpY2F0ZSAoZm9ybSk6ICIpKQogICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWYKICAg ICAoZXZhbCBxdWFsaWZpZXIpKSkKIAorOzs7IyMjYXV0b2xvYWQgKGF1dG9sb2FkICdpYnVmZmVy LWZpbHRlci1jaG9zZW4tYnktY29tcGxldGlvbiAiaWJ1Zi1leHQiKQorKGRlZnVuIGlidWZmZXIt ZmlsdGVyLWNob3Nlbi1ieS1jb21wbGV0aW9uICgpCisgICJTZWxlY3QgYW5kIGFwcGx5IGZpbHRl ciBjaG9zZW4gYnkgY29tcGxldGlvbiBhZ2FpbnN0IGF2YWlsYWJsZSBmaWx0ZXJzLgorSW5kaWNh dGVzIGNvcnJlc3BvbmRpbmcga2V5IHNlcXVlbmNlcyBpbiBlY2hvIGFyZWEgYWZ0ZXIgZmlsdGVy aW5nLgorCitUaGUgY29tcGxldGlvbiBtYXRjaGVzIGFnYWluc3QgdGhlIGZpbHRlciBkZXNjcmlw dGlvbiB0ZXh0IG9mCitlYWNoIGZpbHRlciBpbiBgaWJ1ZmZlci1maWx0ZXJpbmctYWxpc3QnLiIK KyAgKGludGVyYWN0aXZlKQorICAobGV0KiAoKGZpbHRlcnMgKG1hcGNhciAobGFtYmRhICh4KSAo Y29ucyAoY2FkciB4KSAoY2FyIHgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1ZmZl ci1maWx0ZXJpbmctYWxpc3QpKQorICAgICAgICAgKG1hdGNoIChjb21wbGV0aW5nLXJlYWQgIkZp bHRlciBieTogIiBmaWx0ZXJzIG5pbCB0KSkKKyAgICAgICAgIChmaWx0ZXIgKGNkciAoYXNzb2Mg bWF0Y2ggZmlsdGVycykpKQorICAgICAgICAgKGNvbW1hbmQgKGludGVybiAoY29uY2F0ICJpYnVm ZmVyLWZpbHRlci1ieS0iIChzeW1ib2wtbmFtZSBmaWx0ZXIpKSkpKQorICAgIChjYWxsLWludGVy YWN0aXZlbHkgY29tbWFuZCkKKyAgICAobWVzc2FnZSAiJXMgY2FuIGJlIHJ1biB3aXRoIGtleSBz ZXF1ZW5jZXM6ICVzIgorICAgICAgICAgICAgIGNvbW1hbmQKKyAgICAgICAgICAgICAobWFwY29u Y2F0ICMna2V5LWRlc2NyaXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAod2hlcmUtaXMt aW50ZXJuYWwgY29tbWFuZCBpYnVmZmVyLW1vZGUtbWFwIG5pbCB0KQorICAgICAgICAgICAgICAg ICAgICAgICAgIm9yICIpKSkpCisKKwogOzs7IFNvcnRpbmcKIAogOzs7IyMjYXV0b2xvYWQKZGlm ZiAtLWdpdCBhL2xpc3AvaWJ1ZmZlci5lbCBiL2xpc3AvaWJ1ZmZlci5lbAppbmRleCBiMzNjMmUz Li4xODFhMDFjIDEwMDY0NAotLS0gYS9saXNwL2lidWZmZXIuZWwKKysrIGIvbGlzcC9pYnVmZmVy LmVsCkBAIC01MTgsMjggKzUxOCw0MCBAQCBkaXJlY3RvcnksIGxpa2UgYGRlZmF1bHQtZGlyZWN0 b3J5Jy4iCiAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgInMgZiIpICdpYnVmZmVyLWRvLXNvcnQt YnktZmlsZW5hbWUvcHJvY2VzcykKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAicyBtIikgJ2li dWZmZXItZG8tc29ydC1ieS1tYWpvci1tb2RlKQogCisgICAgKGRlZmluZS1rZXkgbWFwIChrYmQg Ii8gUkVUIikgJ2lidWZmZXItZmlsdGVyLWJ5LW1vZGUpCiAgICAgKGRlZmluZS1rZXkgbWFwIChr YmQgIi8gbSIpICdpYnVmZmVyLWZpbHRlci1ieS11c2VkLW1vZGUpCiAgICAgKGRlZmluZS1rZXkg bWFwIChrYmQgIi8gTSIpICdpYnVmZmVyLWZpbHRlci1ieS1kZXJpdmVkLW1vZGUpCiAgICAgKGRl ZmluZS1rZXkgbWFwIChrYmQgIi8gbiIpICdpYnVmZmVyLWZpbHRlci1ieS1uYW1lKQotICAgIChk ZWZpbmUta2V5IG1hcCAoa2JkICIvIGMiKSAnaWJ1ZmZlci1maWx0ZXItYnktY29udGVudCkKLSAg ICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBlIikgJ2lidWZmZXItZmlsdGVyLWJ5LXByZWRpY2F0 ZSkKKyAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyAqIikgJ2lidWZmZXItZmlsdGVyLWJ5LXN0 YXJyZWQtbmFtZSkKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBmIikgJ2lidWZmZXItZmls dGVyLWJ5LWZpbGVuYW1lKQotICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvID4iKSAnaWJ1ZmZl ci1maWx0ZXItYnktc2l6ZS1ndCkKKyAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBGIikgJ2li dWZmZXItZmlsdGVyLWJ5LWZpbGVuYW1lLWJhc2UpCisgICAgKGRlZmluZS1rZXkgbWFwIChrYmQg Ii8gLiIpICdpYnVmZmVyLWZpbHRlci1ieS1maWxlbmFtZS1leHRlbnNpb24pCisgICAgKGRlZmlu ZS1rZXkgbWFwIChrYmQgIi8gciIpICdpYnVmZmVyLWZpbHRlci1ieS1maWxlbmFtZS1yb290KQor ICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIC8iKSAnaWJ1ZmZlci1maWx0ZXItYnktZmlsZW5h bWUtZGlyZWN0b3J5KQogICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIDwiKSAnaWJ1ZmZlci1m aWx0ZXItYnktc2l6ZS1sdCkKLSAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyByIikgJ2lidWZm ZXItc3dpdGNoLXRvLXNhdmVkLWZpbHRlcnMpCisgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8g PiIpICdpYnVmZmVyLWZpbHRlci1ieS1zaXplLWd0KQorICAgIChkZWZpbmUta2V5IG1hcCAoa2Jk ICIvIGkiKSAnaWJ1ZmZlci1maWx0ZXItYnktbW9kaWZpZWQpCisgICAgKGRlZmluZS1rZXkgbWFw IChrYmQgIi8gYyIpICdpYnVmZmVyLWZpbHRlci1ieS1jb250ZW50KQorICAgIChkZWZpbmUta2V5 IG1hcCAoa2JkICIvIGUiKSAnaWJ1ZmZlci1maWx0ZXItYnktcHJlZGljYXRlKQorICAgIChkZWZp bmUta2V5IG1hcCAoa2JkICIvIFRBQiIpICdpYnVmZmVyLWZpbHRlci1jaG9zZW4tYnktY29tcGxl dGlvbikKKworICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIHciKSAnaWJ1ZmZlci1zd2l0Y2gt dG8tc2F2ZWQtZmlsdGVycykKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBhIikgJ2lidWZm ZXItYWRkLXNhdmVkLWZpbHRlcnMpCiAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8geCIpICdp YnVmZmVyLWRlbGV0ZS1zYXZlZC1maWx0ZXJzKQogICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIv IGQiKSAnaWJ1ZmZlci1kZWNvbXBvc2UtZmlsdGVyKQogICAgIChkZWZpbmUta2V5IG1hcCAoa2Jk ICIvIHMiKSAnaWJ1ZmZlci1zYXZlLWZpbHRlcnMpCiAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQg Ii8gcCIpICdpYnVmZmVyLXBvcC1maWx0ZXIpCisgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8g PHVwPiIpICdpYnVmZmVyLXBvcC1maWx0ZXIpCiAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8g ISIpICdpYnVmZmVyLW5lZ2F0ZS1maWx0ZXIpCiAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8g dCIpICdpYnVmZmVyLWV4Y2hhbmdlLWZpbHRlcnMpCi0gICAgKGRlZmluZS1rZXkgbWFwIChrYmQg Ii8gVEFCIikgJ2lidWZmZXItZXhjaGFuZ2UtZmlsdGVycykKICAgICAoZGVmaW5lLWtleSBtYXAg KGtiZCAiLyBvIikgJ2lidWZmZXItb3ItZmlsdGVyKQorICAgIChkZWZpbmUta2V5IG1hcCAoa2Jk ICIvIHwiKSAnaWJ1ZmZlci1vci1maWx0ZXIpCisgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8g JiIpICdpYnVmZmVyLWFuZC1maWx0ZXIpCiAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8gZyIp ICdpYnVmZmVyLWZpbHRlcnMtdG8tZmlsdGVyLWdyb3VwKQogICAgIChkZWZpbmUta2V5IG1hcCAo a2JkICIvIFAiKSAnaWJ1ZmZlci1wb3AtZmlsdGVyLWdyb3VwKQorICAgIChkZWZpbmUta2V5IG1h cCAoa2JkICIvIFMtPHVwPiIpICdpYnVmZmVyLXBvcC1maWx0ZXItZ3JvdXApCiAgICAgKGRlZmlu ZS1rZXkgbWFwIChrYmQgIi8gRCIpICdpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXItZ3JvdXApCi0g ICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8gLyIpICdpYnVmZmVyLWZpbHRlci1kaXNhYmxlKQor ICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIERFTCIpICdpYnVmZmVyLWZpbHRlci1kaXNhYmxl KQogCiAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIk0tbiIpICdpYnVmZmVyLWZvcndhcmQtZmls dGVyLWdyb3VwKQogICAgIChkZWZpbmUta2V5IG1hcCAiXHQiICdpYnVmZmVyLWZvcndhcmQtZmls dGVyLWdyb3VwKQpAQCAtNjQ3LDI5ICs2NTksNjIgQEAgZGlyZWN0b3J5LCBsaWtlIGBkZWZhdWx0 LWRpcmVjdG9yeScuIgogICAgIChkZWZpbmUta2V5LWFmdGVyIG1hcCBbbWVudS1iYXIgdmlldyBm aWx0ZXIgZmlsdGVyLWRpc2FibGVdCiAgICAgICAnKG1lbnUtaXRlbSAiRGlzYWJsZSBhbGwgZmls dGVyaW5nIiBpYnVmZmVyLWZpbHRlci1kaXNhYmxlCiAgICAgICAgIDplbmFibGUgKGFuZCAoZmVh dHVyZXAgJ2lidWYtZXh0KSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpCisKICAgICAo ZGVmaW5lLWtleS1hZnRlciBtYXAgW21lbnUtYmFyIHZpZXcgZmlsdGVyIGZpbHRlci1ieS1tb2Rl XQogICAgICAgJyhtZW51LWl0ZW0gIkFkZCBmaWx0ZXIgYnkgYW55IG1ham9yIG1vZGUuLi4iIGli dWZmZXItZmlsdGVyLWJ5LW1vZGUpKQogICAgIChkZWZpbmUta2V5LWFmdGVyIG1hcCBbbWVudS1i YXIgdmlldyBmaWx0ZXIgZmlsdGVyLWJ5LXVzZWQtbW9kZV0KICAgICAgICcobWVudS1pdGVtICJB ZGQgZmlsdGVyIGJ5IGEgbWFqb3IgbW9kZSBpbiB1c2UuLi4iCiAgICAgICAgIGlidWZmZXItZmls dGVyLWJ5LXVzZWQtbW9kZSkpCiAgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2 aWV3IGZpbHRlciBmaWx0ZXItYnktZGVyaXZlZC1tb2RlXQotICAgICAgJyhtZW51LWl0ZW0gIkFk ZCBmaWx0ZXIgYnkgZGVyaXZlZCBtb2RlLi4uIgorICAgICAgJyhtZW51LWl0ZW0gIkFkZCBmaWx0 ZXIgYnkgZGVyaXZlZCBtb2RlLi4uIiAKICAgICAgICAgICAgICAgICAgIGlidWZmZXItZmlsdGVy LWJ5LWRlcml2ZWQtbW9kZSkpCiAgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2 aWV3IGZpbHRlciBmaWx0ZXItYnktbmFtZV0KICAgICAgICcobWVudS1pdGVtICJBZGQgZmlsdGVy IGJ5IGJ1ZmZlciBuYW1lLi4uIiBpYnVmZmVyLWZpbHRlci1ieS1uYW1lKSkKKyAgICAoZGVmaW5l LWtleS1hZnRlciBtYXAgW21lbnUtYmFyIHZpZXcgZmlsdGVyIGZpbHRlci1ieS1zdGFycmVkLW5h bWVdCisgICAgICAnKG1lbnUtaXRlbSAiQWRkIGZpbHRlciBieSBzdGFycmVkIGJ1ZmZlciBuYW1l Li4uIgorICAgICAgICAgICAgICAgICAgaWJ1ZmZlci1maWx0ZXItYnktc3RhcnJlZC1uYW1lCisg ICAgICAgICAgICAgICAgICA6aGVscCAiTGlzdCBidWZmZXJzIHdob3NlIG5hbWVzIGJlZ2luIHdp dGggYSBzdGFyIikpCiAgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2aWV3IGZp bHRlciBmaWx0ZXItYnktZmlsZW5hbWVdCi0gICAgICAnKG1lbnUtaXRlbSAiQWRkIGZpbHRlciBi eSBmaWxlbmFtZS4uLiIgaWJ1ZmZlci1maWx0ZXItYnktZmlsZW5hbWUpKQorICAgICAgJyhtZW51 LWl0ZW0gIkFkZCBmaWx0ZXIgYnkgZnVsbCBwYXRobmFtZS4uLiIgaWJ1ZmZlci1maWx0ZXItYnkt ZmlsZW5hbWUKKyAgICAgICAgICAgICAgICAgIDpoZWxwCisgICAgICAgICAgICAgICAgICAoY29u Y2F0ICJGb3IgYSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIGZpbGUgJy9hL2IvYy5kJywgIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBidWZmZXIgaWYgYSBnaXZlbiBwYXR0ZXJuIG1h dGNoZXMgJy9hL2IvYy5kJyIpKSkKKyAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAgW21lbnUtYmFy IHZpZXcgZmlsdGVyIGZpbHRlci1ieS1maWxlbmFtZS1iYXNlXQorICAgICAgJyhtZW51LWl0ZW0g IkFkZCBmaWx0ZXIgYnkgZmlsZSBiYXNlbmFtZS4uLiIKKyAgICAgICAgICAgICAgICAgIGlidWZm ZXItZmlsdGVyLWJ5LWZpbGVuYW1lLWJhc2UKKyAgICAgICAgICAgICAgICAgIDpoZWxwIChjb25j YXQgIkZvciBhIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggZmlsZSAnL2EvYi9jLmQnLCAiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGJ1ZmZlciBpZiBhIGdpdmVuIHBhdHRl cm4gbWF0Y2hlcyAnYy5kJyIpKSkKKyAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAgW21lbnUtYmFy IHZpZXcgZmlsdGVyIGZpbHRlci1ieS1maWxlbmFtZS1leHRlbnNpb25dCisgICAgICAnKG1lbnUt aXRlbSAiQWRkIGZpbHRlciBieSBmaWxlbmFtZSBleHRlbnNpb24uLi4iCisgICAgICAgICAgICAg ICAgICBpYnVmZmVyLWZpbHRlci1ieS1maWxlbmFtZS1leHRlbnNpb24KKyAgICAgICAgICAgICAg ICAgIDpoZWxwIChjb25jYXQgIkZvciBhIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggZmlsZSAnL2Ev Yi9jLmQnLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGJ1ZmZlciBp ZiBhIGdpdmVuIHBhdHRlcm4gbWF0Y2hlcyAnZCciKSkpCisgICAgKGRlZmluZS1rZXktYWZ0ZXIg bWFwIFttZW51LWJhciB2aWV3IGZpbHRlciBmaWx0ZXItYnktZmlsZW5hbWUtcm9vdF0KKyAgICAg ICcobWVudS1pdGVtICJBZGQgZmlsdGVyIGJ5IGZpbGVuYW1lIHJvb3QuLi4iCisgICAgICAgICAg ICAgICAgICBpYnVmZmVyLWZpbHRlci1ieS1maWxlbmFtZS1yb290CisgICAgICAgICAgICAgICAg ICA6aGVscCAoY29uY2F0ICJGb3IgYSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIGZpbGUgJy9hL2Iv Yy5kJywgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBidWZmZXIgaWYg YSBnaXZlbiBwYXR0ZXJuIG1hdGNoZXMgJ2MnIikpKQorICAgIChkZWZpbmUta2V5LWFmdGVyIG1h cCBbbWVudS1iYXIgdmlldyBmaWx0ZXIgZmlsdGVyLWJ5LWZpbGVuYW1lLWRpcmVjdG9yeV0KKyAg ICAgICcobWVudS1pdGVtICJBZGQgZmlsdGVyIGJ5IGZpbGVuYW1lJ3MgZGlyZWN0b3J5Li4uIgor ICAgICAgICAgICAgICAgICAgaWJ1ZmZlci1maWx0ZXItYnktZmlsZW5hbWUtZGlyZWN0b3J5Cisg ICAgICAgICAgICAgICAgICA6aGVscAorICAgICAgICAgICAgICAgICAgKGNvbmNhdCAiRm9yIGEg YnVmZmVyIGFzc29jaWF0ZWQgd2l0aCBmaWxlICcvYS9iL2MuZCcsICIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgImxpc3QgYnVmZmVyIGlmIGEgZ2l2ZW4gcGF0dGVybiBtYXRjaGVzICcvYS9i JyIpKSkKICAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAgW21lbnUtYmFyIHZpZXcgZmlsdGVyIGZp bHRlci1ieS1zaXplLWx0XQogICAgICAgJyhtZW51LWl0ZW0gIkFkZCBmaWx0ZXIgYnkgc2l6ZSBs ZXNzIHRoYW4uLi4iIGlidWZmZXItZmlsdGVyLWJ5LXNpemUtbHQpKQogICAgIChkZWZpbmUta2V5 LWFmdGVyIG1hcCBbbWVudS1iYXIgdmlldyBmaWx0ZXIgZmlsdGVyLWJ5LXNpemUtZ3RdCiAgICAg ICAnKG1lbnUtaXRlbSAiQWRkIGZpbHRlciBieSBzaXplIGdyZWF0ZXIgdGhhbi4uLiIKICAgICAg ICAgaWJ1ZmZlci1maWx0ZXItYnktc2l6ZS1ndCkpCisgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFw IFttZW51LWJhciB2aWV3IGZpbHRlciBmaWx0ZXItYnktbW9kaWZpZWRdCisgICAgICAnKG1lbnUt aXRlbSAiQWRkIGZpbHRlciBieSBtb2RpZmllZCBidWZmZXIuLi4iIGlidWZmZXItZmlsdGVyLWJ5 LW1vZGlmaWVkCisgICAgICAgICAgICAgICAgICA6aGVscCAiTGlzdCBidWZmZXJzIHRoYXQgYXJl IG1hcmtlZCBhcyBtb2RpZmllZCIpKQogICAgIChkZWZpbmUta2V5LWFmdGVyIG1hcCBbbWVudS1i YXIgdmlldyBmaWx0ZXIgZmlsdGVyLWJ5LWNvbnRlbnRdCiAgICAgICAnKG1lbnUtaXRlbSAiQWRk IGZpbHRlciBieSBjb250ZW50IChyZWdleHApLi4uIgogICAgICAgICBpYnVmZmVyLWZpbHRlci1i eS1jb250ZW50KSkKICAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAgW21lbnUtYmFyIHZpZXcgZmls dGVyIGZpbHRlci1ieS1wcmVkaWNhdGVdCiAgICAgICAnKG1lbnUtaXRlbSAiQWRkIGZpbHRlciBi eSBMaXNwIHByZWRpY2F0ZS4uLiIKICAgICAgICAgaWJ1ZmZlci1maWx0ZXItYnktcHJlZGljYXRl KSkKKwogICAgIChkZWZpbmUta2V5LWFmdGVyIG1hcCBbbWVudS1iYXIgdmlldyBmaWx0ZXIgcG9w LWZpbHRlcl0KICAgICAgICcobWVudS1pdGVtICJSZW1vdmUgdG9wIGZpbHRlciIgaWJ1ZmZlci1w b3AtZmlsdGVyCiAgICAgICAgIDplbmFibGUgKGFuZCAoZmVhdHVyZXAgJ2lidWYtZXh0KSBpYnVm ZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpCkBAIC02ODIsNiArNzI3LDEyIEBAIGRpcmVjdG9y eSwgbGlrZSBgZGVmYXVsdC1kaXJlY3RvcnknLiIKICAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAg W21lbnUtYmFyIHZpZXcgZmlsdGVyIG5lZ2F0ZS1maWx0ZXJdCiAgICAgICAnKG1lbnUtaXRlbSAi TmVnYXRlIHRvcCBmaWx0ZXIiIGlidWZmZXItbmVnYXRlLWZpbHRlcgogICAgICAgICA6ZW5hYmxl IChhbmQgKGZlYXR1cmVwICdpYnVmLWV4dCkgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykp KQorICAgIChkZWZpbmUta2V5LWFmdGVyIG1hcCBbbWVudS1iYXIgdmlldyBmaWx0ZXIgYW5kLWZp bHRlcl0KKyAgICAgICcobWVudS1pdGVtICJBTkQgdG9wIHR3byBmaWx0ZXJzIiBpYnVmZmVyLWFu ZC1maWx0ZXIKKyAgICAgICAgOmVuYWJsZSAoYW5kIChmZWF0dXJlcCAnaWJ1Zi1leHQpIGlidWZm ZXItZmlsdGVyaW5nLXF1YWxpZmllcnMKKyAgICAgICAgICAgICAgICAgICAgIChjZHIgaWJ1ZmZl ci1maWx0ZXJpbmctcXVhbGlmaWVycykpCisgICAgICAgIDpoZWxwCisgICAgICAgICJDcmVhdGUg YSBuZXcgZmlsdGVyIHdoaWNoIGlzIHRoZSBsb2dpY2FsIEFORCBvZiB0aGUgdG9wIHR3byBmaWx0 ZXJzIikpCiAgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2aWV3IGZpbHRlciBk ZWNvbXBvc2UtZmlsdGVyXQogICAgICAgJyhtZW51LWl0ZW0gIkRlY29tcG9zZSB0b3AgZmlsdGVy IiBpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXIKICAgICAgICAgOmVuYWJsZSAoYW5kIChmZWF0dXJl cCAnaWJ1Zi1leHQpCmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvaWJ1ZmZlci10ZXN0cy5lbCBiL3Rl c3QvbGlzcC9pYnVmZmVyLXRlc3RzLmVsCmluZGV4IGRlMjgxYzAuLmFhMDY5OTQgMTAwNjQ0Ci0t LSBhL3Rlc3QvbGlzcC9pYnVmZmVyLXRlc3RzLmVsCisrKyBiL3Rlc3QvbGlzcC9pYnVmZmVyLXRl c3RzLmVsCkBAIC0yMiw3ICsyMiw4IEBACiAocmVxdWlyZSAnaWJ1ZmZlcikKIAogKGVydC1kZWZ0 ZXN0IGlidWZmZXItYXV0b2xvYWQgKCkKLSAgIlRlc3RzIHRvIHNlZSB3aGV0aGVyIHJlZnRleC1h dWMgaGFzIGJlZW4gYXV0b2xvYWRlZCIKKyAgIlRlc3RzIHRvIHNlZSB3aGV0aGVyIGlidWZmZXIg aGFzIGJlZW4gYXV0b2xvYWRlZCIKKyAgKHNraXAtdW5sZXNzIChub3QgKGZlYXR1cmVwICdpYnVm LWV4dCkpKQogICAoc2hvdWxkCiAgICAoZmJvdW5kcCAnaWJ1ZmZlci1tYXJrLXVuc2F2ZWQtYnVm ZmVycykpCiAgIChzaG91bGQKQEAgLTMwLDUgKzMxLDU2NyBAQAogICAgIChzeW1ib2wtZnVuY3Rp b24KICAgICAgJ2lidWZmZXItbWFyay11bnNhdmVkLWJ1ZmZlcnMpKSkpCiAKKzs7IFRlc3QgRmls dGVyIEluY2x1c2lvbgorKGxldCogKHRlc3QtYnVmZmVyLWxpc3QgIDsgYWNjdW11bGF0ZWQgYnVm ZmVycyB0byBjbGVhbiB1cAorICAgICAgIDs7IFV0aWxpdHkgZnVuY3Rpb25zIHdpdGhvdXQgcG9s bHV0aW5nIHRoZSBlbnZpcm9ubWVudAorICAgICAgIChzZXQtYnVmZmVyLW1vZGUKKyAgICAgICAg KGxhbWJkYSAoYnVmZmVyIG1vZGUpCisgICAgICAgICAgIlNldCBCVUZGRVIncyBtYWpvciBtb2Rl IHRvIE1PREUsIGEgbW9kZSBmdW5jdGlvbiwgb3IgZnVuZGFtZW50YWwuIgorICAgICAgICAgICh3 aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlcgorICAgICAgICAgICAgKGZ1bmNhbGwgKG9yIG1vZGUg IydmdW5kYW1lbnRhbC1tb2RlKSkpKSkKKyAgICAgICAoc2V0LWJ1ZmZlci1jb250ZW50cworICAg ICAgICAobGFtYmRhIChidWZmZXIgc2l6ZSBpbmNsdWRlLWNvbnRlbnQpCisgICAgICAgICAgIkFk ZCBleGFjdGx5IFNJWkUgYnl0ZXMgdG8gQlVGRkVSLCBpbmNsdWRpbmcgSU5DTFVERS1DT05URU5U LiIKKyAgICAgICAgICAod2hlbiAob3Igc2l6ZSBpbmNsdWRlLWNvbnRlbnQpCisgICAgICAgICAg ICAobGV0KiAoKHVuaXQgIlxuIikKKyAgICAgICAgICAgICAgICAgICAoY2h1bmsgImNjY2NjY2Nj Y2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NcbiIpCisgICAgICAgICAgICAgICAgICAgKGNodW5rLXNp emUgKGxlbmd0aCBjaHVuaykpCisgICAgICAgICAgICAgICAgICAgKHNpemUgKGlmIChhbmQgc2l6 ZSBpbmNsdWRlLWNvbnRlbnQgKHN0cmluZ3AgaW5jbHVkZS1jb250ZW50KSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKC0gc2l6ZSAobGVuZ3RoIGluY2x1ZGUtY29udGVudCkpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplKSkpCisgICAgICAgICAgICAgICh1bmxlc3MgKG9y IChudWxsIHNpemUpICg+IHNpemUgMCkpCisgICAgICAgICAgICAgICAgKGVycm9yICJzaXplIGFy Z3VtZW50IG11c3QgYmUgbmlsIG9yIHBvc2l0aXZlIikpCisgICAgICAgICAgICAgICh3aXRoLWN1 cnJlbnQtYnVmZmVyIGJ1ZmZlcgorICAgICAgICAgICAgICAgICh3aGVuIGluY2x1ZGUtY29udGVu dAorICAgICAgICAgICAgICAgICAgKGluc2VydCBpbmNsdWRlLWNvbnRlbnQpKQorICAgICAgICAg ICAgICAgICh3aGVuIHNpemUKKyAgICAgICAgICAgICAgICAgIChkb3RpbWVzIChfIChmbG9vciBz aXplIGNodW5rLXNpemUpKQorICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0IGNodW5rKSkKKyAg ICAgICAgICAgICAgICAgIChkb3RpbWVzIChfIChtb2Qgc2l6ZSBjaHVuay1zaXplKSkKKyAgICAg ICAgICAgICAgICAgICAgKGluc2VydCB1bml0KSkpCisgICAgICAgICAgICAgICAgOzsgcHJldmVu dCBxdWVyeSBvbiBjbGVhbnVwCisgICAgICAgICAgICAgICAgKHNldC1idWZmZXItbW9kaWZpZWQt cCBuaWwpKSkpKSkKKyAgICAgICAoY3JlYXRlLWZpbGUtYnVmZmVyCisgICAgICAgIChsYW1iZGEg KHByZWZpeCAmcmVzdCBhcmdzLXBsaXN0KQorICAgICAgICAgICJDcmVhdGUgYSBmaWxlIGFuZCBi dWZmZXIgd2l0aCBkZXNpZ25hdGVkIHByb3BlcnRpZXMuCisgICAgICAgIFBSRUZJWCBpcyBhIHN0 cmluZyBnaXZpbmcgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmFtZSwgYW5kIEFSR1MtUExJU1QKKyAg ICAgICAgaXMgYSBzZXJpZXMgb2Yga2V5d29yZC12YWx1ZSBwYWlycywgd2l0aCBhbGxvd2VkIGtl eXdvcmRzCisgICAgICAgIDpzdWZmaXggU1RSSU5HLCA6c2l6ZSBOVU1CRVIsIDptb2RlIE1PREUt RlVOQywgOmluY2x1ZGUtY29udGVudCBTVFJJTkcuICAKKyAgICAgICAgUmV0dXJucyB0aGUgY3Jl YXRlZCBidWZmZXIuIgorICAgICAgICAgIChsZXQqICgoc3VmZml4ICAocGxpc3QtZ2V0IGFyZ3Mt cGxpc3QgOnN1ZmZpeCkpCisgICAgICAgICAgICAgICAgIChzaXplICAgIChwbGlzdC1nZXQgYXJn cy1wbGlzdCA6c2l6ZSkpCisgICAgICAgICAgICAgICAgIChpbmNsdWRlIChwbGlzdC1nZXQgYXJn cy1wbGlzdCA6aW5jbHVkZS1jb250ZW50KSkKKyAgICAgICAgICAgICAgICAgKG1vZGUgICAgKHBs aXN0LWdldCBhcmdzLXBsaXN0IDptb2RlKSkKKyAgICAgICAgICAgICAgICAgKGZpbGUgICAgKG1h a2UtdGVtcC1maWxlIHByZWZpeCBuaWwgc3VmZml4KSkKKyAgICAgICAgICAgICAgICAgKGJ1ZiAg ICAgKGZpbmQtZmlsZS1ub3NlbGVjdCBmaWxlIHQpKSkKKyAgICAgICAgICAgIChwdXNoIGJ1ZiB0 ZXN0LWJ1ZmZlci1saXN0KSA7IHJlY29yZCBmb3IgY2xlYW51cAorICAgICAgICAgICAgKGZ1bmNh bGwgc2V0LWJ1ZmZlci1tb2RlIGJ1ZiBtb2RlKQorICAgICAgICAgICAgKGZ1bmNhbGwgc2V0LWJ1 ZmZlci1jb250ZW50cyBidWYgc2l6ZSBpbmNsdWRlKQorICAgICAgICAgICAgYnVmKSkpCisgICAg ICAgKGNyZWF0ZS1ub24tZmlsZS1idWZmZXIKKyAgICAgICAgKGxhbWJkYSAocHJlZml4ICZyZXN0 IGFyZ3MtcGxpc3QpCisgICAgICAgICAgIkNyZWF0ZSBhIGZpbGUgYW5kIGJ1ZmZlciB3aXRoIGRl c2lnbmF0ZWQgcHJvcGVydGllcy4KKyAgICAgICAgUFJFRklYIGlzIGEgc3RyaW5nIGdpdmluZyB0 aGUgYmVnaW5uaW5nIG9mIHRoZSBuYW1lLCBhbmQgQVJHUy1QTElTVAorICAgICAgICBpcyBhIHNl cmllcyBvZiBrZXl3b3JkLXZhbHVlIHBhaXJzLCB3aXRoIGFsbG93ZWQga2V5d29yZHMKKyAgICAg ICAgOnNpemUgTlVNQkVSLCA6bW9kZSBNT0RFLUZVTkMsIDppbmNsdWRlLWNvbnRlbnQgU1RSSU5H LgorICAgICAgICBSZXR1cm5zIHRoZSBjcmVhdGVkIGJ1ZmZlci4iCisgICAgICAgICAgKGxldCog KChzaXplICAgIChwbGlzdC1nZXQgYXJncy1wbGlzdCA6c2l6ZSkpCisgICAgICAgICAgICAgICAg IChpbmNsdWRlIChwbGlzdC1nZXQgYXJncy1wbGlzdCA6aW5jbHVkZS1jb250ZW50KSkKKyAgICAg ICAgICAgICAgICAgKG1vZGUgICAgKHBsaXN0LWdldCBhcmdzLXBsaXN0IDptb2RlKSkKKyAgICAg ICAgICAgICAgICAgKGJ1ZiAgICAgKGdlbmVyYXRlLW5ldy1idWZmZXIgcHJlZml4KSkpCisgICAg ICAgICAgICAocHVzaCBidWYgdGVzdC1idWZmZXItbGlzdCkgOyByZWNvcmQgZm9yIGNsZWFudXAK KyAgICAgICAgICAgIChmdW5jYWxsIHNldC1idWZmZXItbW9kZSBidWYgbW9kZSkKKyAgICAgICAg ICAgIChmdW5jYWxsIHNldC1idWZmZXItY29udGVudHMgYnVmIHNpemUgaW5jbHVkZSkKKyAgICAg ICAgICAgIGJ1ZikpKQorICAgICAgIChjbGVhbi11cAorICAgICAgICAobGFtYmRhICgpCisgICAg ICAgICAgIlJlc3RvcmUgYWxsIGVtYWNzIHN0YXRlIG1vZGlmaWVkIGR1cmluZyB0aGUgdGVzdHMi CisgICAgICAgICAgKHdoaWxlIHRlc3QtYnVmZmVyLWxpc3QgICAgICAgOyBjcmVhdGVkIHRlbXBv cmFyeSBidWZmZXJzCisgICAgICAgICAgICAobGV0ICgoYnVmIChwb3AgdGVzdC1idWZmZXItbGlz dCkpKQorICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWYgKGJ1cnktYnVmZmVy KSkgOyBlbnN1cmUgbm90IHNlbGVjdGVkCisgICAgICAgICAgICAgIChraWxsLWJ1ZmZlciBidWYp KSkpKSkKKyAgOzsgVGVzdHMKKyAgKGVydC1kZWZ0ZXN0IGlidWZmZXItZmlsdGVyLWluY2x1c2lv bi0xICgpCisgICAgIlRlc3RzIGluY2x1c2lvbiB1c2luZyBiYXNpYyBmaWx0ZXIgY29tYmluYXRv cnMgd2l0aCBhIHNpbmdsZSBidWZmZXIuIgorICAgIChza2lwLXVubGVzcyAoZmVhdHVyZXAgJ2li dWYtZXh0KSkKKyAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAgKGxldCAoKGJ1ZgorICAgICAg ICAgICAgICAgKGZ1bmNhbGwgY3JlYXRlLWZpbGUtYnVmZmVyICJpYnVmLXRlc3QtMSIgOnNpemUg MTAwCisgICAgICAgICAgICAgICAgICAgICAgICA6aW5jbHVkZS1jb250ZW50ICJPbmUgcmluZyB0 byBydWxlIHRoZW0gYWxsXG4iKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRl ZC1pbi1maWx0ZXJzLXAgYnVmICcoKHNpemUtZ3QgLiA5OSkpKSkKKyAgICAgICAgICAoc2hvdWxk IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcCBidWYgJygoc2l6ZS1sdCAuIDEwMSkpKSkK KyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAg ICAgICAgICAgICAgIGJ1ZiAnKChtb2RlIC4gZnVuZGFtZW50YWwtbW9kZSkpKSkKKyAgICAgICAg ICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAg ICAgIGJ1ZiAnKChjb250ZW50IC4gInJpbmcgdG8gcnVsZSB0aGVtIGFsbCIpKSkpCisgICAgICAg ICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAg ICAgICBidWYgJygoYW5kIChjb250ZW50IC4gInJpbmcgdG8gcnVsZSB0aGVtIGFsbCIpKSkpKQor ICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAg ICAgICAgICAgICAgYnVmICcoKGFuZCAoYW5kIChjb250ZW50IC4gInJpbmcgdG8gcnVsZSB0aGVt IGFsbCIpKSkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRl cnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChhbmQgKGFuZCAoYW5kIChjb250ZW50IC4g InJpbmcgdG8gcnVsZSB0aGVtIGFsbCIpKSkpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZl ci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYgJygob3IgKGNv bnRlbnQgLiAicmluZyB0byBydWxlIHRoZW0gYWxsIikpKSkpCisgICAgICAgICAgKHNob3VsZCAo aWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYgJygo bm90IChub3QgKGNvbnRlbnQgLiAicmluZyB0byBydWxlIHRoZW0gYWxsIikpKSkpKQorICAgICAg ICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAg ICAgICAgYnVmICcoKGFuZCAoc2l6ZS1ndCAuIDk5KQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGNvbnRlbnQgLiAicmluZyB0byBydWxlIHRoZW0gYWxsIikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChtb2RlIC4gZnVuZGFtZW50YWwtbW9kZSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChmaWxlbmFtZS1iYXNlIC4gIlxcYGlidWYtdGVzdC0xIikpKSkpCisg ICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAg ICAgICAgICAgICBidWYgJygobm90IChvciAobm90IChzaXplLWd0IC4gOTkpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGNvbnRlbnQgLiAicmluZyB0byBydWxlIHRo ZW0gYWxsIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAobW9kZSAu IGZ1bmRhbWVudGFsLW1vZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChu b3QgKGZpbGVuYW1lLWJhc2UgLiAiXFxgaWJ1Zi10ZXN0LTEiKSkpKSkpKQorICAgICAgICAgIChz aG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAg YnVmICcoKGFuZCAob3IgKHNpemUtZ3QgLiA5OSkgKHNpemUtbHQgLiAxMCkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoYW5kIChjb250ZW50IC4gInJpbmcuKmFsbCIpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb250ZW50IC4gInJ1bGUiKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGVudCAuICJ0aGVtIGFsbCIpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb250ZW50IC4gIk9uZSIpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG5vdCAobW9kZSAuIHRleHQtbW9kZSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoZmlsZW5hbWUtYmFzZSAuICJcXGBpYnVmLXRlc3QtMSIpKSkp KSkKKyAgICAgIChmdW5jYWxsIGNsZWFuLXVwKSkpCisgIAorICAoZXJ0LWRlZnRlc3QgaWJ1ZmZl ci1maWx0ZXItaW5jbHVzaW9uLTIgKCkKKyAgICAiVGVzdHMgaW5jbHVzaW9uIG9mIGJhc2ljIGZp bHRlcnMgaW4gY29tYmluYXRpb24gb24gYSBzaW5nbGUgYnVmZmVyLiIKKyAgICAoc2tpcC11bmxl c3MgKGZlYXR1cmVwICdpYnVmLWV4dCkpCisgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgIChs ZXQgKChidWYKKyAgICAgICAgICAgICAgIChmdW5jYWxsIGNyZWF0ZS1maWxlLWJ1ZmZlciAiaWJ1 Zi10ZXN0LTIiIDpzaXplIDIwMAorICAgICAgICAgICAgICAgICAgICAgICAgOm1vZGUgIyd0ZXh0 LW1vZGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDppbmNsdWRlLWNvbnRlbnQgImFuZCBpbiB0 aGUgZGFya25lc3MgZmluZCB0aGVtXG4iKSkpCisgICAgICAgICAgKG1lc3NhZ2UgIi0tPiAlcyIg YnVmKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wIGJ1 ZiAnKChzaXplLWd0IC4gMTk5KSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVk ZWQtaW4tZmlsdGVycy1wIGJ1ZiAnKChzaXplLWx0IC4gMjAxKSkpKQorICAgICAgICAgIChzaG91 bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wIGJ1ZiAnKChub3Qgc2l6ZS1ndCAuIDIw MCkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcCBi dWYgJygobm90IChzaXplLWd0IC4gMjAwKSkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVy LWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChhbmQgKHNp emUtZ3QgLiAxOTkpIChzaXplLWx0IC4gMjAxKSkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVm ZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChvciAo c2l6ZS1ndCAuIDE5OSkgKHNpemUtZ3QgLiAyMDEpKSkpKQorICAgICAgICAgIChzaG91bGQgKGli dWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKG9y IChzaXplLWd0IC4gMjAxKSAoc2l6ZS1ndCAuIDE5OSkpKSkpCisgICAgICAgICAgKHNob3VsZCAo aWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYgJygo c2l6ZS1ndCAuIDE5OSkgKG1vZGUgLiB0ZXh0LW1vZGUpCisgICAgICAgICAgICAgICAgICAgICAg ICAgKGNvbnRlbnQgLiAiZGFya25lc3MgZmluZCB0aGVtIikpKSkKKyAgICAgICAgICAoc2hvdWxk IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAn KChhbmQgKHNpemUtZ3QgLiAxOTkpIChtb2RlIC4gdGV4dC1tb2RlKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGNvbnRlbnQgLiAiZGFya25lc3MgZmluZCB0aGVtIikpKSkpCisgICAg ICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAg ICAgICAgICBidWYgJygobm90IChvciAobm90IChzaXplLWd0IC4gMTk5KSkgKG5vdCAobW9kZSAu IHRleHQtbW9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoY29u dGVudCAuICJkYXJrbmVzcyBmaW5kIHRoZW0iKSkpKSkpKQorICAgICAgICAgIChzaG91bGQgKGli dWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKG9y IChzaXplLWd0IC4gMjAwKSAoY29udGVudCAuICJkYXJrbmVzcyBmaW5kIHRoZW0iKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZGVyaXZlZC1tb2RlIC4gZW1hY3MtbGlzcC1tb2RlKSkp KSkKKyAgICAgICAgICAoc2hvdWxkLW5vdCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAK KyAgICAgICAgICAgICAgICAgICAgICAgYnVmICcoKG9yIChzaXplLWd0IC4gMjAwKSAoY29udGVu dCAuICJydWxlIHRoZW0gYWxsIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChk ZXJpdmVkLW1vZGUgLiBlbWFjcy1saXNwLW1vZGUpKSkpKQorICAgICAgICAgIChtZXNzYWdlICIt LT4gJXMiIGJ1ZikpCisgICAgICAoZnVuY2FsbCBjbGVhbi11cCkpKQorCisgIChlcnQtZGVmdGVz dCBpYnVmZmVyLWZpbHRlci1pbmNsdXNpb24tMyAoKQorICAgICJUZXN0cyBpbmNsdXNpb24gd2l0 aCBmaWxlbmFtZSBmaWx0ZXJzIG9uIHNwZWNpZmllZCBidWZmZXJzLiIKKyAgICAoc2tpcC11bmxl c3MgKGZlYXR1cmVwICdpYnVmLWV4dCkpCisgICAgKHVud2luZC1wcm90ZWN0CisgICAgICAgIChs ZXQqICgoYnVmQQorICAgICAgICAgICAgICAgIChmdW5jYWxsIGNyZWF0ZS1maWxlLWJ1ZmZlciAi aWJ1Zi10ZXN0LTMuYSIgOnNpemUgNTAKKyAgICAgICAgICAgICAgICAgICAgICAgICA6bW9kZSAj J3RleHQtbW9kZQorICAgICAgICAgICAgICAgICAgICAgICAgIDppbmNsdWRlLWNvbnRlbnQgIi4u LmJ1dCBhIG11bHRpdHVkZSBvZiBkcm9wcz9cbiIpKQorICAgICAgICAgICAgICAgKGJ1ZkIKKyAg ICAgICAgICAgICAgICAoZnVuY2FsbCBjcmVhdGUtbm9uLWZpbGUtYnVmZmVyICJpYnVmLXRlc3Qt My5iIiA6c2l6ZSA1MAorICAgICAgICAgICAgICAgICAgICAgICAgIDptb2RlICMndGV4dC1tb2Rl CisgICAgICAgICAgICAgICAgICAgICAgICAgOmluY2x1ZGUtY29udGVudCAiLi4uYnV0IGEgbXVs dGl0dWRlIG9mIGRyb3BzP1xuIikpCisgICAgICAgICAgICAgICAoZGlyQSAod2l0aC1jdXJyZW50 LWJ1ZmZlciBidWZBIGRlZmF1bHQtZGlyZWN0b3J5KSkKKyAgICAgICAgICAgICAgIChkaXJCICh3 aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZkIgZGVmYXVsdC1kaXJlY3RvcnkpKSkKKyAgICAgICAgICAo c2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAg IGJ1ZkEgJygoZmlsZW5hbWUtYmFzZSAuICJpYnVmLXRlc3QtMyIpKSkpCisgICAgICAgICAgKHNo b3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBi dWZBICcoKGZpbGVuYW1lLXJvb3QgLiAiaWJ1Zi10ZXN0LTMiKSkpKQorICAgICAgICAgIChzaG91 bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVm QSAnKChmaWxlbmFtZS1iYXNlIC4gInRlc3QtM1xcLmEiKSkpKQorICAgICAgICAgIChzaG91bGQg KGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmQSAn KChmaWxlbmFtZS1leHRlbnNpb24gLiAiYSIpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZl ci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWZBIChsaXN0IChj b25zICdmaWxlbmFtZS1kaXJlY3RvcnkgZGlyQSkpKSkKKyAgICAgICAgICAoc2hvdWxkLW5vdCAo aWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICAgICAgYnVm QiAnKChmaWxlbmFtZS1iYXNlIC4gImlidWYtdGVzdC0zIikpKSkKKyAgICAgICAgICAoc2hvdWxk LW5vdCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICAg ICAgYnVmQiAnKChmaWxlbmFtZS1yb290IC4gImlidWYtdGVzdC0zIikpKSkKKyAgICAgICAgICAo c2hvdWxkLW5vdCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAg ICAgICAgICAgYnVmQiAnKChmaWxlbmFtZS1leHRlbnNpb24gLiAiYiIpKSkpCisgICAgICAgICAg KHNob3VsZC1ub3QgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAg ICAgICAgICAgIGJ1ZkIgKGxpc3QgKGNvbnMgJ2ZpbGVuYW1lLWRpcmVjdG9yeSBkaXJCKSkpKQor ICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAg ICAgICAgICAgICAgYnVmQSAnKChuYW1lIC4gImlidWYtdGVzdC0zIikpKSkKKyAgICAgICAgICAo c2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAg IGJ1ZkIgJygobmFtZSAuICJpYnVmLXRlc3QtMyIpKSkpKQorICAgICAgKGZ1bmNhbGwgY2xlYW4t dXApKSkKKworICAoZXJ0LWRlZnRlc3QgaWJ1ZmZlci1maWx0ZXItaW5jbHVzaW9uLTQgKCkKKyAg ICAiVGVzdHMgaW5jbHVzaW9uIHdpdGggdmFyaW91cyBmaWx0ZXJzIG9uIGEgc2luZ2xlIGJ1ZmZl ci4iCisgICAgKHNraXAtdW5sZXNzIChmZWF0dXJlcCAnaWJ1Zi1leHQpKQorICAgICh1bndpbmQt cHJvdGVjdAorICAgICAgICAobGV0ICgoYnVmCisgICAgICAgICAgICAgICAoZnVuY2FsbCBjcmVh dGUtZmlsZS1idWZmZXIgImlidWYtdGVzdC00IgorICAgICAgICAgICAgICAgICAgICAgICAgOm1v ZGUgIydlbWFjcy1saXNwLW1vZGUgOnN1ZmZpeCAiLmVsIgorICAgICAgICAgICAgICAgICAgICAg ICAgOmluY2x1ZGUtY29udGVudCAiKG1lc3NhZ2UgXCItLSVzLS1cIiAnZW1hY3Mtcm9ja3MpXG4i KSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAg ICAgICAgICAgICAgICAgICBidWYgJygoZmlsZW5hbWUtZXh0ZW5zaW9uIC4gImVsIikpKSkKKyAg ICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAg ICAgICAgICAgIGJ1ZiAnKChkZXJpdmVkLW1vZGUgLiBwcm9nLW1vZGUpKSkpCisgICAgICAgICAg KHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAg ICBidWYgJygodXNlZC1tb2RlIC4gZW1hY3MtbGlzcC1tb2RlKSkpKQorICAgICAgICAgIChzaG91 bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVm ICcoKG1vZGUgLiBlbWFjcy1saXNwLW1vZGUpKSkpCisgICAgICAgICAgKHdpdGgtY3VycmVudC1i dWZmZXIgYnVmIChzZXQtYnVmZmVyLW1vZGlmaWVkLXAgdCkpCisgICAgICAgICAgKHNob3VsZCAo aWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAgYnVmICcoKG1vZGlmaWVkKSkpKQorICAgICAg ICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZiAoc2V0LWJ1ZmZlci1tb2RpZmllZC1wIG5pbCkp CisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAgYnVmICco KG5vdCBtb2RpZmllZCkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWlu LWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChhbmQgKGZpbGVuYW1lLWV4dGVu c2lvbiAuICJlbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVyaXZlZC1tb2Rl IC4gcHJvZy1tb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCBtb2RpZmll ZCkpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAK KyAgICAgICAgICAgICAgICAgICBidWYgJygob3IgKGZpbGVuYW1lLWV4dGVuc2lvbiAuICJ0ZXgi KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVyaXZlZC1tb2RlIC4gcHJvZy1tb2Rl KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kaWZpZWQpKSkpKQorICAgICAgICAg IChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAg ICAgYnVmICcoKGZpbGVuYW1lLWV4dGVuc2lvbiAuICJlbCIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgKGRlcml2ZWQtbW9kZSAuIHByb2ctbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAobm90IG1vZGlmaWVkKSkpKSkKKyAgICAgIChmdW5jYWxsIGNsZWFuLXVwKSkpCisKKyAgKGVy dC1kZWZ0ZXN0IGlidWZmZXItZmlsdGVyLWluY2x1c2lvbi01ICgpCisgICAgIlRlc3RzIGluY2x1 c2lvbiB3aXRoIHZhcmlvdXMgZmlsdGVycyBvbiBhIHNpbmdsZSBidWZmZXIuIgorICAgIChza2lw LXVubGVzcyAoZmVhdHVyZXAgJ2lidWYtZXh0KSkKKyAgICAodW53aW5kLXByb3RlY3QKKyAgICAg ICAgKGxldCAoKGJ1ZgorICAgICAgICAgICAgICAgKGZ1bmNhbGwgY3JlYXRlLW5vbi1maWxlLWJ1 ZmZlciAiaWJ1Zi10ZXN0LTUuZWwiCisgICAgICAgICAgICAgICAgICAgICAgICA6bW9kZSAjJ2Vt YWNzLWxpc3AtbW9kZSAKKyAgICAgICAgICAgICAgICAgICAgICAgIDppbmNsdWRlLWNvbnRlbnQK KyAgICAgICAgICAgICAgICAgICAgICAgICIobWVzc2FnZSBcIi0tJXMtLVwiIFwiSXQgcmVhbGx5 IGRvZXMhXCIpXG4iKSkpCisgICAgICAgICAgKHNob3VsZC1ub3QgKGlidWZmZXItaW5jbHVkZWQt aW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChmaWxlbmFtZS1leHRl bnNpb24gLiAiZWwiKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4t ZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKHNpemUtZ3QgLiAxOCkpKSkKKyAg ICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAg ICAgICAgICAgIGJ1ZiAnKChwcmVkaWNhdGUgLiAobGFtYmRhICgpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKD4gKC0gKHBvaW50LW1heCkgKHBvaW50LW1pbikpIDE4 KSkpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAK KyAgICAgICAgICAgICAgICAgICBidWYgJygoYW5kIChtb2RlIC4gZW1hY3MtbGlzcC1tb2RlKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChzdGFycmVkLW5hbWUpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNpemUtZ3QgLiAxOCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoYW5kIChub3QgKHNpemUtZ3QgLiAxMDApKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoY29udGVudCAuICJbSWlddCAgKnJlYWxseSBkb2VzISIp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAobmFtZSAuICJ0ZXN0LTUi KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZmlsZW5hbWUg LiAidGVzdC01IikpKSkpKSkpKQorICAgICAgKGZ1bmNhbGwgY2xlYW4tdXApKSkKKworICAoZXJ0 LWRlZnRlc3QgaWJ1ZmZlci1maWx0ZXItaW5jbHVzaW9uLTYgKCkKKyAgICAiVGVzdHMgaW5jbHVz aW9uIHVzaW5nIHNhdmVkIGZpbHRlcnMgYW5kIERlTW9yZ2FuJ3MgbGF3cy4iCisgICAgKHNraXAt dW5sZXNzIChmZWF0dXJlcCAnaWJ1Zi1leHQpKQorICAgICh1bndpbmQtcHJvdGVjdAorICAgICAg ICAobGV0ICgoYnVmCisgICAgICAgICAgICAgICAoZnVuY2FsbCBjcmVhdGUtbm9uLWZpbGUtYnVm ZmVyICIqaWJ1Zi10ZXN0LTYqIiA6c2l6ZSA2NQorICAgICAgICAgICAgICAgICAgICAgICAgOm1v ZGUgIyd0ZXh0LW1vZGUpKQorICAgICAgICAgICAgICAoYnVmMgorICAgICAgICAgICAgICAgKGZ1 bmNhbGwgY3JlYXRlLWZpbGUtYnVmZmVyICJpYnVmLXRlc3QtNmEiIDpzdWZmaXggIi5odG1sIgor ICAgICAgICAgICAgICAgICAgICAgICAgOm1vZGUgIydodG1sLW1vZGUKKyAgICAgICAgICAgICAg ICAgICAgICAgIDppbmNsdWRlLWNvbnRlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICI8SFRN TD48Qk9EWT48SDE+SGVsbG8sIFdvcmxkITwvSDE+PC9CT0RZPjwvSFRNTD4iKSkpCisgICAgICAg ICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAgYnVmICcoKHN0YXJyZWQt bmFtZSkpKSkKKyAgICAgICAgICAoc2hvdWxkLW5vdCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0 ZXJzLXAKKyAgICAgICAgICAgICAgICAgICAgICAgYnVmICcoKHNhdmVkIC4gInRleHQgZG9jdW1l bnQiKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1w IGJ1ZjIgJygoc2F2ZWQgLiAid2ViIikpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWlu Y2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZjIgJygobm90IChhbmQg KG5vdCAoZGVyaXZlZC1tb2RlIC4gc2dtbC1tb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChub3QgKGRlcml2ZWQtbW9kZSAuIGNzcy1tb2RlKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKG1vZGUgICAgICAgICAuIGphdmFzY3JpcHQt bW9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChtb2RlICAg ICAgICAgLiBqczItbW9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bm90IChtb2RlICAgICAgICAgLiBzY3NzLW1vZGUpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG5vdCAoZGVyaXZlZC1tb2RlIC4gaGFtbC1tb2RlKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKG1vZGUgICAgICAgICAuIHNhc3MtbW9kZSkp KSkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAor ICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChhbmQgKHN0YXJyZWQtbmFtZSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChvciAoc2l6ZS1ndCAuIDUwKSAoZmlsZW5hbWUgLiAiZm9vIikp KSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisg ICAgICAgICAgICAgICAgICAgYnVmICcoKG5vdCAob3IgKG5vdCBzdGFycmVkLW5hbWUpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAoc2l6ZS1sdCAuIDUxKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZmlsZW5hbWUgLiAiZm9vIikp KSkpKSkpKQorICAgICAgKGZ1bmNhbGwgY2xlYW4tdXApKSkKKworICAoZXJ0LWRlZnRlc3QgaWJ1 ZmZlci1maWx0ZXItaW5jbHVzaW9uLTcgKCkKKyAgICAiVGVzdHMgaW5jbHVzaW9uIHdpdGggdmFy aW91cyBmaWx0ZXJzIG9uIGEgc2luZ2xlIGJ1ZmZlci4iCisgICAgKHNraXAtdW5sZXNzIChmZWF0 dXJlcCAnaWJ1Zi1leHQpKQorICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAobGV0ICgoYnVm CisgICAgICAgICAgICAgICAoZnVuY2FsbCBjcmVhdGUtbm9uLWZpbGUtYnVmZmVyICJpYnVmLXRl c3QtNyIKKyAgICAgICAgICAgICAgICAgICAgICAgIDptb2RlICMnYXJ0aXN0LW1vZGUpKSkKKyAg ICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAg ICAgICAgICAgIGJ1ZiAnKChub3QgKHN0YXJyZWQtbmFtZSkpKSkpCisgICAgICAgICAgKHNob3Vs ZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWYg Jygobm90IHN0YXJyZWQtbmFtZSkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1 ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChub3QgKG5vdCAobm90 IHN0YXJyZWQtbmFtZSkpKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQt aW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmICcoKG5vdCAobW9kaWZpZWQpKSkp KQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAg ICAgICAgICAgICAgICAgYnVmICcoKG5vdCBtb2RpZmllZCkpKSkKKyAgICAgICAgICAoc2hvdWxk IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAn KChub3QgKG5vdCAobm90IG1vZGlmaWVkKSkpKSkpKQorICAgICAgKGZ1bmNhbGwgY2xlYW4tdXAp KSkKKworICAoZXJ0LWRlZnRlc3QgaWJ1ZmZlci1maWx0ZXItaW5jbHVzaW9uLTggKCkKKyAgICAi VGVzdHMgaW5jbHVzaW9uIHdpdGggdmFyaW91cyBmaWx0ZXJzIG9uIGEgc2luZ2xlIGJ1ZmZlci4i CisgICAgKHNraXAtdW5sZXNzIChmZWF0dXJlcCAnaWJ1Zi1leHQpKQorICAgICh1bndpbmQtcHJv dGVjdAorICAgICAgICAobGV0ICgoYnVmCisgICAgICAgICAgICAgICAoZnVuY2FsbCBjcmVhdGUt bm9uLWZpbGUtYnVmZmVyICJpYnVmLXRlc3QtOCIKKyAgICAgICAgICAgICAgICAgICAgICAgIDpt b2RlICMnYXJ0aXN0LW1vZGUpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVk LWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChhbmQgKG5vdCAoc3RhcnJl ZC1uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lIC4gInRlc3QtOCIp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChzaXplLWd0IC4gMTAwKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlIC4gcGljdHVyZS1tb2RlKSkpKSkpCisg ICAgICAoZnVuY2FsbCBjbGVhbi11cCkpKSkKKworOzsgVGVzdCBGaWx0ZXIgQ29tYmluYXRpb24g YW5kIERlY29tcG9zaXRpb24KKyhsZXQqIChpYnVmZmVyLXRvLWtpbGwgICAgICAgOyBpZiBub24t bmlsLCBraWxsIHRoaXMgYnVmZmVyIGF0IGNsZWFudXAKKyAgICAgICAoaWJ1ZmZlci1hbHJlYWR5 ICdjaGVjaykgOyBleGlzdGluZyBpYnVmZmVyIGJ1ZmZlciB0byB1c2UgYnV0IG5vdCBraWxsCisg ICAgICAgOzsgVXRpbGl0eSBmdW5jdGlvbnMgd2l0aG91dCBwb2xsdXRpbmcgdGhlIGVudmlyb25t ZW50CisgICAgICAgKGdldC10ZXN0LWlidWZmZXIKKyAgICAgICAgKGxhbWJkYSAoKQorICAgICAg ICAgICJSZXR1cm5zIGEgdGVzdCBpYnVmZmVyLW1vZGUgYnVmZmVyLCBjcmVhdGluZyBvbmUgaWYg bmVjZXNzYXJ5LgorICAgICAgICBJZiBhIG5ldyBidWZmZXIgaXMgY3JlYXRlZCwgaXQgaXMgbmFt ZWQgIFwiKlRlc3QtSWJ1ZmZlcipcIiBhbmQgaXMKKyAgICAgICAgc2F2ZWQgdG8gYGlidWZmZXIt dG8ta2lsbCcgZm9yIGxhdGVyIGNsZWFudXAuIgorICAgICAgICAgICh3aGVuIChlcSBpYnVmZmVy LWFscmVhZHkgJ2NoZWNrKQorICAgICAgICAgICAgKHNldHEgaWJ1ZmZlci1hbHJlYWR5CisgICAg ICAgICAgICAgICAgICAoY2F0Y2ggJ2ZvdW5kLWJ1ZgorICAgICAgICAgICAgICAgICAgICAoZG9s aXN0IChidWYgKGJ1ZmZlci1saXN0KSBuaWwpCisgICAgICAgICAgICAgICAgICAgICAgKHdoZW4g KHdpdGgtY3VycmVudC1idWZmZXIgYnVmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZGVyaXZlZC1tb2RlLXAgJ2lidWZmZXItbW9kZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAo dGhyb3cgJ2ZvdW5kLWJ1ZiBidWYpKSkpKSkKKyAgICAgICAgICAob3IgaWJ1ZmZlci1hbHJlYWR5 CisgICAgICAgICAgICAgIGlidWZmZXItdG8ta2lsbAorICAgICAgICAgICAgICAobGV0ICgodGVz dC1pYnVmLW5hbWUgIipUZXN0LUlidWZmZXIqIikpCisgICAgICAgICAgICAgICAgKGlidWZmZXIg bmlsIHRlc3QtaWJ1Zi1uYW1lIG5pbCB0KQorICAgICAgICAgICAgICAgIChzZXRxIGlidWZmZXIt dG8ta2lsbCAoZ2V0LWJ1ZmZlciB0ZXN0LWlidWYtbmFtZSkpKSkpKQorICAgICAgIChjbGVhbi11 cAorICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAgIlJlc3RvcmUgYWxsIGVtYWNzIHN0YXRl IG1vZGlmaWVkIGR1cmluZyB0aGUgdGVzdHMiCisgICAgICAgICAgKHdoZW4gaWJ1ZmZlci10by1r aWxsICAgICAgICAgOyBjcmVhdGVkIGlidWZmZXIgCisgICAgICAgICAgICAod2l0aC1jdXJyZW50 LWJ1ZmZlciBpYnVmZmVyLXRvLWtpbGwKKyAgICAgICAgICAgICAgKHNldC1idWZmZXItbW9kaWZp ZWQtcCBuaWwpCisgICAgICAgICAgICAgIChidXJ5LWJ1ZmZlcikpCisgICAgICAgICAgICAoa2ls bC1idWZmZXIgaWJ1ZmZlci10by1raWxsKQorICAgICAgICAgICAgKHNldHEgaWJ1ZmZlci10by1r aWxsIG5pbCkpCisgICAgICAgICAgKHdoZW4gKGFuZCBpYnVmZmVyLWFscmVhZHkgKG5vdCAoZXEg aWJ1ZmZlci1hbHJlYWR5ICdjaGVjaykpKQorICAgICAgICAgICAgOzsgcmVzdG9yZSBleGlzdGlu ZyBpYnVmZmVyIHN0YXRlCisgICAgICAgICAgICAoaWJ1ZmZlci11cGRhdGUgbmlsIHQpKSkpKQor ICA7OyBUZXN0cworICAoZXJ0LWRlZnRlc3QgaWJ1ZmZlci1kZWNvbXBvc2UtZmlsdGVyICgpCisg ICAgIlRlc3RzIGBpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXInIGZvciBhbmQsIG9yLCBub3QsIGFu ZCBzYXZlZC4iCisgICAgKHNraXAtdW5sZXNzIChmZWF0dXJlcCAnaWJ1Zi1leHQpKQorICAgICh1 bndpbmQtcHJvdGVjdAorICAgICAgICAobGV0ICgoaWJ1ZiAoZnVuY2FsbCBnZXQtdGVzdC1pYnVm ZmVyKSkpCisgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgaWJ1ZgorICAgICAgICAgICAg KGxldCAoKGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMgbmlsKQorICAgICAgICAgICAgICAg ICAgKGlidWZmZXItZmlsdGVyLWdyb3VwcyBuaWwpCisgICAgICAgICAgICAgICAgICAoZmlsdGVy cyAnKChzaXplLWd0IC4gMTAwKSAobm90IChzdGFycmVkLW5hbWUpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobmFtZSAuICJmb28iKSkpKQorICAgICAgICAgICAgICAocHJvZ24KKyAg ICAgICAgICAgICAgICAocHVzaCAoY29ucyAnb3IgZmlsdGVycykgaWJ1ZmZlci1maWx0ZXJpbmct cXVhbGlmaWVycykKKyAgICAgICAgICAgICAgICAoaWJ1ZmZlci1kZWNvbXBvc2UtZmlsdGVyKQor ICAgICAgICAgICAgICAgIChzaG91bGQgKGVxdWFsIGZpbHRlcnMgaWJ1ZmZlci1maWx0ZXJpbmct cXVhbGlmaWVycykpCisgICAgICAgICAgICAgICAgKHNldHEgaWJ1ZmZlci1maWx0ZXJpbmctcXVh bGlmaWVycyBuaWwpKQorICAgICAgICAgICAgICAocHJvZ24KKyAgICAgICAgICAgICAgICAocHVz aCAoY29ucyAnYW5kIGZpbHRlcnMpIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCisgICAg ICAgICAgICAgICAgKGlidWZmZXItZGVjb21wb3NlLWZpbHRlcikKKyAgICAgICAgICAgICAgICAo c2hvdWxkIChlcXVhbCBmaWx0ZXJzIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAg ICAgICAgICAgICAgIChzZXRxIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMgbmlsKSkKKyAg ICAgICAgICAgICAgKHByb2duCisgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QgJ25vdCAoY2Fy IGZpbHRlcnMpKSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAg IChpYnVmZmVyLWRlY29tcG9zZS1maWx0ZXIpCisgICAgICAgICAgICAgICAgKHNob3VsZCAoZXF1 YWwgKGxpc3QgKGNhciBmaWx0ZXJzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp YnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkKKyAgICAgICAgICAgICAgICAoc2V0cSBpYnVm ZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzIG5pbCkpCisgICAgICAgICAgICAgIChwcm9nbgorICAg ICAgICAgICAgICAgIChwdXNoIChjb25zICdub3QgKGNhciBmaWx0ZXJzKSkgaWJ1ZmZlci1maWx0 ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAgICAoaWJ1ZmZlci1kZWNvbXBvc2UtZmls dGVyKQorICAgICAgICAgICAgICAgIChzaG91bGQgKGVxdWFsIChsaXN0IChjYXIgZmlsdGVycykp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlm aWVycykpCisgICAgICAgICAgICAgICAgKHNldHEgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVy cyBuaWwpKQorICAgICAgICAgICAgICAobGV0ICgoZ251cyAoYXNzb2MgImdudXMiIGlidWZmZXIt c2F2ZWQtZmlsdGVycykpKQorICAgICAgICAgICAgICAgIChwdXNoICcoc2F2ZWQgLiAiZ251cyIp IGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCisgICAgICAgICAgICAgICAgKGlidWZmZXIt ZGVjb21wb3NlLWZpbHRlcikKKyAgICAgICAgICAgICAgICAoc2hvdWxkIChlcXVhbCAoY2RyIGdu dXMpIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAgICAgICAgICAgIChpYnVm ZmVyLWRlY29tcG9zZS1maWx0ZXIpCisgICAgICAgICAgICAgICAgKHNob3VsZCAoZXF1YWwgKGNk ciAoY2FkciBnbnVzKSkgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpCisgICAgICAgICAg ICAgICAgKHNldHEgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycyBuaWwpKQorICAgICAgICAg ICAgICAod2hlbiAobm90IChhc3NvYyAiX191bmtub3duX18iIGlidWZmZXItc2F2ZWQtZmlsdGVy cykpCisgICAgICAgICAgICAgICAgKHB1c2ggJyhzYXZlZCAuICJfX3Vrbm93bl9fIikgaWJ1ZmZl ci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAgICAoc2hvdWxkLWVycm9yIChp YnVmZmVyLWRlY29tcG9zZS1maWx0ZXIpIDp0eXBlICdlcnJvcikKKyAgICAgICAgICAgICAgICAo c2V0cSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzIG5pbCkpCisgICAgICAgICAgICAgIChw cm9nbgorICAgICAgICAgICAgICAgIChwdXNoIChjYXIgZmlsdGVycykgaWJ1ZmZlci1maWx0ZXJp bmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAgICAoc2hvdWxkLWVycm9yIChpYnVmZmVyLWRl Y29tcG9zZS1maWx0ZXIpIDp0eXBlICdlcnJvcikKKyAgICAgICAgICAgICAgICAoc2V0cSBpYnVm ZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzIG5pbCkpKSkpCisgICAgICAoZnVuY2FsbCBjbGVhbi11 cCkpKQorCisgIChlcnQtZGVmdGVzdCBpYnVmZmVyLWFuZC1maWx0ZXIgKCkKKyAgICAiVGVzdHMg YGlidWZmZXItYW5kLWZpbHRlcicgaW4gYW4gSWJ1ZmZlciBidWZmZXIuIgorICAgIChza2lwLXVu bGVzcyAoZmVhdHVyZXAgJ2lidWYtZXh0KSkKKyAgICAodW53aW5kLXByb3RlY3QKKyAgICAgICAg KGxldCAoKGlidWYgKGZ1bmNhbGwgZ2V0LXRlc3QtaWJ1ZmZlcikpKQorICAgICAgICAgICh3aXRo LWN1cnJlbnQtYnVmZmVyIGlidWYKKyAgICAgICAgICAgIChsZXQgKChpYnVmZmVyLWZpbHRlcmlu Zy1xdWFsaWZpZXJzIG5pbCkKKyAgICAgICAgICAgICAgICAgIChpYnVmZmVyLWZpbHRlci1ncm91 cHMgbmlsKQorICAgICAgICAgICAgICAgICAgKGZpbHRlcnMgWyhzaXplLWd0IC4gMTAwKSAobm90 IChzdGFycmVkLW5hbWUpKV0pKQorICAgICAgICAgICAgICAoc2hvdWxkLWVycm9yIChpYnVmZmVy LWFuZC1maWx0ZXIpIDp0eXBlICdlcnJvcikKKyAgICAgICAgICAgICAgKHByb2duCisgICAgICAg ICAgICAgICAgKHB1c2ggKGFyZWYgZmlsdGVycyAxKSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZp ZXJzKQorICAgICAgICAgICAgICAgIChzaG91bGQtZXJyb3IgKGlidWZmZXItYW5kLWZpbHRlcikg OnR5cGUgJ2Vycm9yKSkKKyAgICAgICAgICAgICAgKHNob3VsZCAocHJvZ24KKyAgICAgICAgICAg ICAgICAgICAgICAgIChwdXNoIChhcmVmIGZpbHRlcnMgMCkgaWJ1ZmZlci1maWx0ZXJpbmctcXVh bGlmaWVycykKKyAgICAgICAgICAgICAgICAgICAgICAgIChpYnVmZmVyLWFuZC1maWx0ZXIpCisg ICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChlcXVhbCAobGlzdCAnYW5kIChhcmVmIGZpbHRl cnMgMCkgKGFyZWYgZmlsdGVycyAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChjYXIgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChudWxsIChjZHIgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKSkp CisgICAgICAgICAgICAgIChzaG91bGQgKHByb2duCisgICAgICAgICAgICAgICAgICAgICAgICAo aWJ1ZmZlci1hbmQtZmlsdGVyICdkZWNvbXBvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAo YW5kIChlcXVhbCAoYXJlZiBmaWx0ZXJzIDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAocG9wIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZXF1YWwgKGFyZWYgZmlsdGVycyAxKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHBvcCBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG51bGwgaWJ1ZmZlci1maWx0ZXJpbmctcXVh bGlmaWVycykpKSkpKSkKKyAgICAgIChmdW5jYWxsIGNsZWFuLXVwKSkpCisgIAorICAoZXJ0LWRl ZnRlc3QgaWJ1ZmZlci1vci1maWx0ZXIgKCkKKyAgICAiVGVzdHMgYGlidWZmZXItb3ItZmlsdGVy JyBpbiBhbiBJYnVmZmVyIGJ1ZmZlci4iCisgICAgKHNraXAtdW5sZXNzIChmZWF0dXJlcCAnaWJ1 Zi1leHQpKQorICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAobGV0ICgoaWJ1ZiAoZnVuY2Fs bCBnZXQtdGVzdC1pYnVmZmVyKSkpCisgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgaWJ1 ZgorICAgICAgICAgICAgKGxldCAoKGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMgbmlsKQor ICAgICAgICAgICAgICAgICAgKGlidWZmZXItZmlsdGVyLWdyb3VwcyBuaWwpCisgICAgICAgICAg ICAgICAgICAoZmlsdGVycyBbKHNpemUtZ3QgLiAxMDApIChub3QgKHN0YXJyZWQtbmFtZSkpXSkp CisgICAgICAgICAgICAgIChzaG91bGQtZXJyb3IgKGlidWZmZXItb3ItZmlsdGVyKSA6dHlwZSAn ZXJyb3IpCisgICAgICAgICAgICAgIChwcm9nbgorICAgICAgICAgICAgICAgIChwdXNoIChhcmVm IGZpbHRlcnMgMSkgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAg ICAoc2hvdWxkLWVycm9yIChpYnVmZmVyLW9yLWZpbHRlcikgOnR5cGUgJ2Vycm9yKSkKKyAgICAg ICAgICAgICAgKHNob3VsZCAocHJvZ24KKyAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChh cmVmIGZpbHRlcnMgMCkgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgICAg ICAgICAgICAgICAgIChpYnVmZmVyLW9yLWZpbHRlcikKKyAgICAgICAgICAgICAgICAgICAgICAg IChhbmQgKGVxdWFsIChsaXN0ICdvciAoYXJlZiBmaWx0ZXJzIDApIChhcmVmIGZpbHRlcnMgMSkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIGlidWZmZXItZmlsdGVy aW5nLXF1YWxpZmllcnMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnVsbCAoY2Ry IGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkpKQorICAgICAgICAgICAgICAoc2hvdWxk IChwcm9nbgorICAgICAgICAgICAgICAgICAgICAgICAgKGlidWZmZXItb3ItZmlsdGVyICdkZWNv bXBvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChlcXVhbCAoYXJlZiBmaWx0ZXJz IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9wIGlidWZmZXItZmls dGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXF1YWwg KGFyZWYgZmlsdGVycyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBv cCBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG51bGwgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKSkpKSkKKyAgICAgIChm dW5jYWxsIGNsZWFuLXVwKSkpKQorCisoZXJ0LWRlZnRlc3QgaWJ1ZmZlci1zYXZlLWZpbHRlcnMg KCkKKyAgIlRlc3RzIHRoYXQgYGlidWZmZXItc2F2ZS1maWx0ZXJzJyBzYXZlcyBpbiB0aGUgcHJv cGVyIGZvcm1hdC4iCisgIChza2lwLXVubGVzcyAoZmVhdHVyZXAgJ2lidWYtZXh0KSkKKyAgKGxl dCAoKGlidWZmZXItc2F2ZS13aXRoLWN1c3RvbSBuaWwpCisgICAgICAgIChpYnVmZmVyLXNhdmVk LWZpbHRlcnMgbmlsKQorICAgICAgICAodGVzdDEgJygobW9kZSAuIG9yZy1tb2RlKQorICAgICAg ICAgICAgICAgICAob3IgKHNpemUtZ3QgLiAxMDAwMCkKKyAgICAgICAgICAgICAgICAgICAgIChh bmQgKG5vdCAoc3RhcnJlZC1uYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVu YW1lLWRpcmVjdG9yeSAuICJcPG9yZ1w+IikpKSkpCisgICAgICAgICh0ZXN0MiAnKChvciAobW9k ZSAuIGVtYWNzLWxpc3AtbW9kZSkgKGZpbGVuYW1lLWV4dGVuc2lvbiAuICJlbGM/IikKKyAgICAg ICAgICAgICAgICAgICAgIChhbmQgKHN0YXJyZWQtbmFtZSkgKG5hbWUgLiAiZWxpc3AiKSkKKyAg ICAgICAgICAgICAgICAgICAgIChtb2RlIC4gbGlzcC1pbnRlcmFjdGlvbi1tb2RlKSkpKQorICAg ICAgICAodGVzdDMgJygoc2l6ZS1sdCAuIDEwMCkgKGRlcml2ZWQtbW9kZSAuIHByb2ctbW9kZSkK KyAgICAgICAgICAgICAgICAgKG9yIChmaWxlbmFtZS1yb290IC4gInNjcmF0Y2giKQorICAgICAg ICAgICAgICAgICAgICAgKGZpbGVuYW1lLXJvb3QgLiAiYm9ueiIpCisgICAgICAgICAgICAgICAg ICAgICAoZmlsZW5hbWUtcm9vdCAuICJ0ZW1wIikpKSkpCisgICAgKGlidWZmZXItc2F2ZS1maWx0 ZXJzICJ0ZXN0MSIgdGVzdDEpCisgICAgKHNob3VsZCAoZXF1YWwgKGNhciBpYnVmZmVyLXNhdmVk LWZpbHRlcnMpIChjb25zICJ0ZXN0MSIgdGVzdDEpKSkKKyAgICAoaWJ1ZmZlci1zYXZlLWZpbHRl cnMgInRlc3QyIiB0ZXN0MikKKyAgICAoc2hvdWxkIChlcXVhbCAoY2FyIGlidWZmZXItc2F2ZWQt ZmlsdGVycykgKGNvbnMgInRlc3QyIiB0ZXN0MikpKQorICAgIChzaG91bGQgKGVxdWFsIChjYWRy IGlidWZmZXItc2F2ZWQtZmlsdGVycykgKGNvbnMgInRlc3QxIiB0ZXN0MSkpKQorICAgIChpYnVm ZmVyLXNhdmUtZmlsdGVycyAidGVzdDMiIHRlc3QzKQorICAgIChzaG91bGQgKGVxdWFsIChjYXIg aWJ1ZmZlci1zYXZlZC1maWx0ZXJzKSAoY29ucyAidGVzdDMiIHRlc3QzKSkpCisgICAgKHNob3Vs ZCAoZXF1YWwgKGNhZHIgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzKSAoY29ucyAidGVzdDIiIHRlc3Qy KSkpCisgICAgKHNob3VsZCAoZXF1YWwgKGNhciAoY2RkciBpYnVmZmVyLXNhdmVkLWZpbHRlcnMp KSAoY29ucyAidGVzdDEiIHRlc3QxKSkpCisgICAgKHNob3VsZCAoZXF1YWwgKGNkciAoYXNzb2Mg InRlc3QxIiBpYnVmZmVyLXNhdmVkLWZpbHRlcnMpKSB0ZXN0MSkpCisgICAgKHNob3VsZCAoZXF1 YWwgKGNkciAoYXNzb2MgInRlc3QyIiBpYnVmZmVyLXNhdmVkLWZpbHRlcnMpKSB0ZXN0MikpCisg ICAgKHNob3VsZCAoZXF1YWwgKGNkciAoYXNzb2MgInRlc3QzIiBpYnVmZmVyLXNhdmVkLWZpbHRl cnMpKSB0ZXN0MykpKSkKKworKGVydC1kZWZ0ZXN0IGlidWZmZXItZm9ybWF0LXF1YWxpZmllciAo KQorICAiVGVzdHMgc3RyaW5nIHJlY29tbWVuZGF0aW9uIG9mIGZpbHRlciBmcm9tIGBpYnVmZmVy LWZvcm1hdC1xdWFsaWZpZXInLiIKKyAgKHNraXAtdW5sZXNzIChmZWF0dXJlcCAnaWJ1Zi1leHQp KQorICAobGV0ICgodGVzdDEgJyhtb2RlIC4gb3JnLW1vZGUpKQorICAgICAgICAodGVzdDIgJyhz aXplLWx0IC4gMTAwKSkKKyAgICAgICAgKHRlc3QzICcoZGVyaXZlZC1tb2RlIC4gcHJvZy1tb2Rl KSkKKyAgICAgICAgKHRlc3Q0ICcob3IgKHNpemUtZ3QgLiAxMDAwMCkKKyAgICAgICAgICAgICAg ICAgICAgKGFuZCAobm90IChzdGFycmVkLW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAg IChmaWxlbmFtZS1kaXJlY3RvcnkgLiAiXFw8b3JnXFw+IikpKSkKKyAgICAgICAgKHRlc3Q1ICco b3IgKGZpbGVuYW1lLXJvb3QgLiAic2NyYXRjaCIpCisgICAgICAgICAgICAgICAgICAgIChmaWxl bmFtZS1yb290IC4gImJvbnoiKQorICAgICAgICAgICAgICAgICAgICAoZmlsZW5hbWUtcm9vdCAu ICJ0ZW1wIikpKQorICAgICAgICAodGVzdDYgJyhvciAobW9kZSAuIGVtYWNzLWxpc3AtbW9kZSkg KGZpbGVuYW1lLWV4dGVuc2lvbiAuICJlbGM/IikKKyAgICAgICAgICAgICAgICAgICAgKGFuZCAo c3RhcnJlZC1uYW1lKSAobmFtZSAuICJlbGlzcCIpKQorICAgICAgICAgICAgICAgICAgICAobW9k ZSAuIGxpc3AtaW50ZXJhY3Rpb24tbW9kZSkpKQorICAgICAgICAoZGVzY3JpcHRpb24gKGxhbWJk YSAocSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGNhZHIgKGFzc3EgcSBpYnVmZmVyLWZpbHRl cmluZy1hbGlzdCkpKSkKKyAgICAgICAgKHRhZyAobGFtYmRhICgmcmVzdCBhcmdzICkKKyAgICAg ICAgICAgICAgIChjb25jYXQgIiBbIiAoYXBwbHkgIydjb25jYXQgYXJncykgIl0iKSkpKQorICAg IChzaG91bGQgKGVxdWFsIChpYnVmZmVyLWZvcm1hdC1xdWFsaWZpZXIgdGVzdDEpCisgICAgICAg ICAgICAgICAgICAgKGZ1bmNhbGwgdGFnIChmdW5jYWxsIGRlc2NyaXB0aW9uICdtb2RlKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICI6ICIgIm9yZy1tb2RlIikpKQorICAgIChzaG91bGQg KGVxdWFsIChpYnVmZmVyLWZvcm1hdC1xdWFsaWZpZXIgdGVzdDIpCisgICAgICAgICAgICAgICAg ICAgKGZ1bmNhbGwgdGFnIChmdW5jYWxsIGRlc2NyaXB0aW9uICdzaXplLWx0KQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICI6ICIgIjEwMCIpKSkKKyAgICAoc2hvdWxkIChlcXVhbCAoaWJ1 ZmZlci1mb3JtYXQtcXVhbGlmaWVyIHRlc3QzKQorICAgICAgICAgICAgICAgICAgIChmdW5jYWxs IHRhZyAoZnVuY2FsbCBkZXNjcmlwdGlvbiAnZGVyaXZlZC1tb2RlKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICI6ICIgInByb2ctbW9kZSIpKSkKKyAgICAoc2hvdWxkIChlcXVhbCAoaWJ1 ZmZlci1mb3JtYXQtcXVhbGlmaWVyIHRlc3Q0KQorICAgICAgICAgICAgICAgICAgIChmdW5jYWxs IHRhZyAiT1IiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgdGFnIChmdW5j YWxsIGRlc2NyaXB0aW9uICdzaXplLWd0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICI6ICIgKGZvcm1hdCAiJXMiIDEwMDAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZnVuY2FsbCB0YWcgIkFORCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZnVuY2FsbCB0YWcgIk5PVCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZnVuY2FsbCB0YWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBkZXNjcmlwdGlvbgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdz dGFycmVkLW5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIjogIiAibmlsIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGZ1bmNhbGwgdGFnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGZ1bmNhbGwgZGVzY3JpcHRpb24gJ2ZpbGVuYW1lLWRpcmVjdG9yeSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiAiICJcXDxvcmdcXD4i KSkpKSkKKyAgICAoc2hvdWxkIChlcXVhbCAoaWJ1ZmZlci1mb3JtYXQtcXVhbGlmaWVyIHRlc3Q1 KQorICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIHRhZyAiT1IiCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGZ1bmNhbGwgdGFnIChmdW5jYWxsIGRlc2NyaXB0aW9uICdmaWxlbmFtZS1y b290KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6ICIgICJzY3JhdGNo IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCB0YWcgKGZ1bmNhbGwgZGVz Y3JpcHRpb24gJ2ZpbGVuYW1lLXJvb3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIjogIiAiYm9ueiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwg dGFnIChmdW5jYWxsIGRlc2NyaXB0aW9uICdmaWxlbmFtZS1yb290KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICI6ICIgInRlbXAiKSkpKQorICAgIChzaG91bGQgKGVxdWFs IChpYnVmZmVyLWZvcm1hdC1xdWFsaWZpZXIgdGVzdDYpCisgICAgICAgICAgICAgICAgICAgKGZ1 bmNhbGwgdGFnICJPUiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCB0YWcg KGZ1bmNhbGwgZGVzY3JpcHRpb24gJ21vZGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIjogIiAiZW1hY3MtbGlzcC1tb2RlIikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZnVuY2FsbCB0YWcgKGZ1bmNhbGwgZGVzY3JpcHRpb24gJ2ZpbGVuYW1lLWV4dGVuc2lv bikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiAiICJlbGM/IikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCB0YWcgIkFORCIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCB0YWcKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBkZXNjcmlwdGlvbiAnc3RhcnJl ZC1uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6 ICIgIm5pbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwg dGFnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNh bGwgZGVzY3JpcHRpb24gJ25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIjogIiAiZWxpc3AiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZnVuY2FsbCB0YWcgKGZ1bmNhbGwgZGVzY3JpcHRpb24gJ21vZGUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIjogIiAibGlzcC1pbnRlcmFjdGlvbi1tb2RlIikpKSkpKQor CisoZXJ0LWRlZnRlc3QgaWJ1ZmZlci11bmFyeS1vcGVyYW5kICgpCisgICJUZXN0cyBgaWJ1ZmZl ci11bmFyeS1vcGVyYW5kJzogKG5vdCBjZWxsKSBvciAobm90IC4gY2VsbCkgLT4gY2VsbC4iCisg IChza2lwLXVubGVzcyAoZmVhdHVyZXAgJ2lidWYtZXh0KSkKKyAgKHNob3VsZCAoZXF1YWwgKGli dWZmZXItdW5hcnktb3BlcmFuZCAnKG5vdCAuIChtb2RlICJmb28iKSkpCisgICAgICAgICAgICAg ICAgICcobW9kZSAiZm9vIikpKQorICAoc2hvdWxkIChlcXVhbCAoaWJ1ZmZlci11bmFyeS1vcGVy YW5kICcobm90IChtb2RlICJmb28iKSkpCisgICAgICAgICAgICAgICAgICcobW9kZSAiZm9vIikp KQorICAoc2hvdWxkIChlcXVhbCAoaWJ1ZmZlci11bmFyeS1vcGVyYW5kICcobm90ICJjZHIiKSkK KyAgICAgICAgICAgICAgICAgJygiY2RyIikpKQorICAoc2hvdWxkIChlcXVhbCAoaWJ1ZmZlci11 bmFyeS1vcGVyYW5kICcobm90KSkgbmlsKSkKKyAgKHNob3VsZCAoZXF1YWwgKGlidWZmZXItdW5h cnktb3BlcmFuZCAnKG5vdCAuIGEpKSAnYSkpKQorCisKIChwcm92aWRlICdpYnVmZmVyLXRlc3Rz KQogOzsgaWJ1ZmZlci10ZXN0cy5lbCBlbmRzIGhlcmUKLS0gCjIuMTAuMAoKCkZyb20gMWY2ZTQy YjY0MTk5M2JmNDg0YmU0M2FkNGU5YjQ5NDZiZDIwZTYwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogIkNocmlzdG9waGVyIFIuIEdlbm92ZXNlIiA8Z2Vub3Zlc2VAY211LmVkdT4KRGF0 ZTogVHVlLCAyMiBOb3YgMjAxNiAxMToyNDo1MCAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBG dXJ0aGVyIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMgaW4gcmVzcG9uc2UgdG8gZW1hY3MtZGV2ZWwK IGNvbW1lbnRzCgpUaGVzZSBpbmNsdWRlOgoKICArIFJlbmFtaW5nIG5ldyBmaWxlbmFtZSBmaWx0 ZXJzCgogICAgICAgZmlsZW5hbWUtYmFzZSAgICAgIC0+IGJhc2VuYW1lCiAgICAgICBmaWxlbmFt ZS1leHRlbnNpb24gLT4gZmlsZS1leHRlbnNpb24KICAgICAgIGZpbGVuYW1lLWRpcmVjdG9yeSAt PiBkaXJlY3RvcnkKCiAgICBhbmQgZWxpbWluYXRpbmcgZmlsZW5hbWUtcm9vdC4KCiAgICBUaGUg ZGlyZWN0b3J5IGZpbHRlciBub3cgbWF0Y2hlcyB0aGUgZmlsZW5hbWUncyBkaXJlY3RvcnkKICAg IGNvbXBvbmVudCBpbiBmaWxlIGJ1ZmZlcnMgYW5kIGRlZmF1bHQtZGlyZWN0b3J5IGluIG5vbi1m aWxlCiAgICBidWZmZXJzLgoKICArIEFkZGVkIG5ldyBwcmUtZGVmaW5lZCBmaWx0ZXIgdmlzaXRp bmctZmlsZSBib3VuZCB0byAnLyB2JwoKICArIFJlc3RvcmVkICcvIHInIGJpbmRpbmcgdG8gaXRz IG9yaWdpbmFsIHN0YXRlLCAnLyB3JyByZW1vdmVkCgogICsgUmVxdWlyZWQgJ3N1YnIteCBpbiBl dmFsLXdoZW4tY29tcGlsZQoKICArIEFkZGVkIE5FV1MgZW50cnkgZm9yIHRoZSBuZXcgdXNlci1m b2N1c2VkIGZlYXR1cmVzCgogICsgSW1wcm92ZWQgY29kaW5nIG9mIGlidWZmZXItYW5kLWZpbHRl ciBhbmQgaWJ1ZmZlci1vci1maWx0ZXIKCiAgKyBSb2J1c3RpZmllZCByZWdleCBmb3Igc3RhcnJl ZC1uYW1lLiBJdCBub3cgbWF0Y2hlcwogICAgYnVmZmVycyBpbiBlbWFjcyAic3RhcnJlZCIgc3R5 bGUgICpuYW1lKiBvciAqbmFtZSo8ZGlnaXQ+CiAgICBidXQgbm90ICpuYW1lIGFsb25lLgoKICAr IEFkZGVkIHNvbWUgbmV3IHRlc3RzLiBBbGwgdGVzdHMgcGFzcyBvbiBhIGZyZXNoIGJ1aWxkIG9m IGVtYWNzLgotLS0KIGV0Yy9ORVdTICAgICAgICAgICAgICAgICAgIHwgIDg2ICsrKysrKysrKysr KysrKysKIGxpc3AvaWJ1Zi1leHQuZWwgICAgICAgICAgIHwgMTc2ICsrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tCiBsaXNwL2lidWZmZXIuZWwgICAgICAgICAgICB8ICAzNSArKysrLS0t CiB0ZXN0L2xpc3AvaWJ1ZmZlci10ZXN0cy5lbCB8IDI0NiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMzY5IGluc2VydGlvbnMo KyksIDE3NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdTCmlu ZGV4IDE1YzI2NGYuLmRmMzhmOTYgMTAwNjQ0Ci0tLSBhL2V0Yy9ORVdTCisrKyBiL2V0Yy9ORVdT CkBAIC0yODMsNiArMjgzLDkyIEBAIHRoZSBmaWxlJ3MgYWN0dWFsIGNvbnRlbnQgYmVmb3JlIHBy b21wdGluZyB0aGUgdXNlci4KICoqIElidWZmZXIKIAogLS0tCisqKiogQSBuZXcgZmlsdGVyIGNv bW1hbmQgJ2lidWZmZXItZmlsdGVyLWJ5LWJhc2VuYW1lJworKHdpdGggcXVhbGlmaWVyICdiYXNl bmFtZScgaW4gZmlsdGVyIGRhdGEpIG1hdGNoZXMgaW4gYQorZmlsZSBidWZmZXIgYWdhaW5zdCB0 aGUgZmlsZSBiYXNlIG5hbWUgKGFuYWxvZ291cyB0byB3aGF0CisnZmlsZS1uYW1lLW5vbmRpcmVj dG9yeScgcmV0dXJucyk7IGJvdW5kIHRvICcvIGInLgorCistLS0KKyoqKiBBIG5ldyBmaWx0ZXIg Y29tbWFuZCAnaWJ1ZmZlci1maWx0ZXItYnktZmlsZS1leHRlbnNpb24nCisod2l0aCBxdWFsaWZp ZXIgJ2ZpbGUtZXh0ZW5zaW9uJyBpbiBmaWx0ZXIgZGF0YSkgbWF0Y2hlcworYWdhaW5zdCB0aGUg ZmlsZSBuYW1lJ3MgZXh0ZW5zaW9uIHdpdGhvdXQgdGhlIHNlcGFyYXRvcgoraW4gYSBmaWxlIGJ1 ZmZlcjsgYm91bmQgdG8gJy8gLicuCisKKy0tLSAKKyoqKiBBIG5ldyBmaWx0ZXIgY29tbWFuZCAn aWJ1ZmZlci1maWx0ZXItYnktZGlyZWN0b3J5JworKHdpdGggcXVhbGlmaWVyICdkaXJlY3Rvcnkn IGluIGZpbHRlciBkYXRhKSBtYXRjaGVzCithZ2FpbnN0IHRoZSBmaWxlbmFtZSdzIGRpcmVjdG9y eSBjb21wb25lbnQgaW4gYSBmaWxlCitidWZmZXIgYW5kIGFnYWluc3QgJ2RlZmF1bHQtZGlyZWN0 b3J5JyBvdGhlcndpc2U7Citib3VuZCB0byAnLyAvJy4KKworLS0tCisqKiogQSBuZXcgZmlsdGVy IGNvbW1hbmQgJ2lidWZmZXItZmlsdGVyLWJ5LXN0YXJyZWQtbmFtZScKKyh3aXRoIHF1YWxpZmll ciAnc3RhcnJlZC1uYW1lJyBpbiBmaWx0ZXIgZGF0YSkgbWF0Y2hlcworYnVmZmVycyB3aG9zZSBu YW1lcyBiZWdpbiBhbmQgZW5kIHdpdGggKiwgYWxvbmcgd2l0aCBhbgorb3B0aW9uYWwgc3VmZml4 IG9mIHRoZSBmb3JtIGRpZ2l0cyBvciA8ZGlnaXRzPjsKK2JvdW5kIHRvICcvIConLgorCistLS0K KyoqKiBBIG5ldyBmaWx0ZXIgY29tbWFuZCAnaWJ1ZmZlci1maWx0ZXItYnktbW9kaWZpZWQnCiso d2l0aCBxdWFsaWZpZXIgJ21vZGlmaWVkJyBpbiBmaWx0ZXIgZGF0YSkgbWF0Y2hlcyBidWZmZXJz Cit0aGF0IGFyZSBtYXJrZWQgbW9kaWZpZWQ7IGJvdW5kIHRvICcvIGknLgorCistLS0KKyoqKiBB IG5ldyBmaWx0ZXIgY29tbWFuZCAnaWJ1ZmZlci1maWx0ZXItYnktdmlzaXRpbmctZmlsZScKKyh3 aXRoIHRhZyAndmlzaXRpbmctZmlsZScgaW4gZmlsdGVyIGRhdGEpIG1hdGNoZXMgYnVmZmVycwor dGhhdCBhcmUgdmlzaXRpbmcgZmlsZXM7IGJvdW5kIHRvICcvIHYnLgorCistLS0KKyoqKiBBIG5l dyBjb21tYW5kICdpYnVmZmVyLWZpbHRlci1jaG9zZW4tYnktY29tcGxldGlvbicgdG8KK3NlbGVj dCBhbmQgYXBwbHkgYSBmaWx0ZXIgaW50ZXJhY3RpdmVseSBieSBjb21wbGV0aW9uIG9uCit0aGUg ZmlsdGVyIGRlc2NyaXB0aW9uOyBib3VuZCB0byAnLyBUQUInLgorCistLS0KKyoqKiBUaGUgZGF0 YSBmb3JtYXQgc3BlY2lmeWluZyBmaWx0ZXJzIGhhcyBiZWVuIGV4dGVuZGVkCit0byBhbGxvdyBp LiBleHBsaWNpdCBsb2dpY2FsICdhbmQnIG9mIG90aGVyIGZpbHRlcnMgYW5kCitpaS4gYSBtb3Jl IGZsZXhpYmxlIGZvcm0gZm9yIGxvZ2ljYWwgJ25vdCcgb2YgYQorZmlsdGVyLiBUaGlzIGlzIHVz ZWZ1bCBmb3IgY29uc3RydWN0aW5nIGNvbXBsZXggZmlsdGVycworYW5kIGZpbHRlciBncm91cHMs IGVzcGVjaWFsbHkgd2hlbiBkb2luZyBzbyBtYW51YWxseS4gU2VlCitkb2N1bWVudGF0aW9uIGZv ciAnaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycycgZm9yIGZ1bGwKK2RldGFpbHMuCisKKy0t LQorKioqIEEgbmV3IGNvbW1hbmQgJ2lidWZmZXItYW5kLWZpbHRlcicgdGhhdCByZXBsYWNlcyB0 aGUKK3RvcCB0d28gZmlsdGVycyBvbiB0aGUgZmlsdGVyIHN0YWNrIHdpdGggdGhlaXIgbG9naWNh bAorJ2FuZCcgYXMgYSBzaW5nbGUgZmlsdGVyOyBib3VuZCB0byAnLyAmJy4KKworLS0tCisqKiog VGhlIGNvbW1hbmQgJ2lidWZmZXItb3ItZmlsdGVyJyBpcyBib3VuZCB0byAnLyB8JyBhcword2Vs bCBhcyB0aGUgb3JpZ2luYWwgYmluZGluZyAnLyBvJy4KKworLS0tCisqKiogVGhlIGNvbW1hbmQg J2lidWZmZXItZmlsdGVyLWRpc2FibGUnIGlzIG5vdyBib3VuZAordG8gJy8gREVMJyBpbnN0ZWFk IG9mICcvIC8nLgorCistLS0KKyoqKiBUaGUgY29tbWFuZHMgJ2lidWZmZXItcG9wLWZpbHRlcicg YW5kCisnaWJ1ZmZlci1wb3AtZmlsdGVyLWdyb3VwJyBub3cgaGF2ZSBhbHRlcm5hdGl2ZSBrZXkK K2JpbmRpbmdzICcvIDx1cD4nIGFuZCAnLyBTLTx1cD4nLCByZXNwZWN0aXZlbHkuICBUaGVzZQor Y29tbWFuZHMgY29udGludWUgdG8gYmUgYm91bmQgdG8gJy8gcCcgYW5kICcvIFAnLAorcmVzcGVj dGl2ZWx5LCBhcyB3ZWxsLgorCistLS0KKyoqKiBUaGUgY29tbWFuZCAnaWJ1ZmZlci1leGNoYW5n ZS1maWx0ZXInIGNvbnRpbnVlcwordG8gYmUgYm91bmQgdG8gJy8gdCcgYnV0IGlzIG5vIGxvbmdl ciBib3VuZCB0byAnLyBUQUInLgorCistLS0KKyoqKiBUaGUgZm9ybWF0IG9mICdpYnVmZmVyLXNh dmVkLWZpbHRlcnMnIGhhcyBiZWVuCitzaW1wbGlmaWVkIHNsaWdodGx5LCByZW1vdmluZyBhbiB1 bm5lY2Vzc2FyeSBsZXZlbCBvZgorcGFyZW50aGVzZXMgYXJvdW5kIHRoZSBmaWx0ZXIgbGlzdC4g U2VlIGRvY3VtZW50YXRpb24gZm9yCit0aGUgdmFyaWFibGUgJ2lidWZmZXItc2F2ZWQtZmlsdGVy cycgYW5kIHRoZSBmdW5jdGlvbgorJ2lidWZmZXItdXBkYXRlLXNhdmVkLWZpbHRlcnMtZm9ybWF0 JyBmb3IgZGV0YWlscyBvZiB0aGUKK25ldyBhbmQgb2xkIGZvcm1hdHMuIEZpbHRlcnMgc2F2ZWQg dGhyb3VnaCB0aGUgY3VzdG9taXplCittZWNoYW5pc20gKHRoZSBkZWZhdWx0KSBhcmUgdXBkYXRl ZCBhdXRvbWF0aWNhbGx5OyB0aG9zZQord2hvIHNldCB0aGUgc2F2ZWQgZmlsdGVycyBtYW51YWxs eSBjYW4gcnVuIHRoZSBuZXcgY29tbWFuZAorJ2lidWZmZXItcmVwYWlyLXNhdmVkLWZpbHRlcnMn IHRvIGNoZWNrIHRoZSB2YXJpYWJsZSdzCitmb3JtYXQgYW5kIGVhc2lseSB1cGRhdGUgaXQgaWYg bmVjZXNzYXJ5LgorCistLS0KICoqKiBBIG5ldyBjb21tYW5kICdpYnVmZmVyLWNvcHktYnVmZmVy bmFtZS1hcy1raWxsJzsgYm91bmQKIHRvICdCJy4KIApkaWZmIC0tZ2l0IGEvbGlzcC9pYnVmLWV4 dC5lbCBiL2xpc3AvaWJ1Zi1leHQuZWwKaW5kZXggYTliMzM3Yi4uZGExMzY3NCAxMDA2NDQKLS0t IGEvbGlzcC9pYnVmLWV4dC5lbAorKysgYi9saXNwL2lidWYtZXh0LmVsCkBAIC00Miw3ICs0Miw4 IEBACiAKIChldmFsLXdoZW4tY29tcGlsZQogICAocmVxdWlyZSAnaWJ1Zi1tYWNzKQotICAocmVx dWlyZSAnY2wtbGliKSkKKyAgKHJlcXVpcmUgJ2NsLWxpYikKKyAgKHJlcXVpcmUgJ3N1YnIteCkp CiAKIAogOzs7IFV0aWxpdHkgZnVuY3Rpb25zCkBAIC0xOTksMzcgKzIwMCwzNyBAQCB2YXJpYWJs ZSBjYW4gYmUgc2V0IGRpcmVjdGx5IGZyb20gbGlzcCBjb2RlLiIKIChkZWZ2YXIgaWJ1ZmZlci1v bGQtc2F2ZWQtZmlsdGVycy13YXJuaW5nCiAgIChjb25jYXQgIkRlcHJlY2F0ZWQgZm9ybWF0IGRl dGVjdGVkIGZvciB2YXJpYWJsZSBgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzJy4KIAotVGhlIGZvcm1h dCBoYXMgYmVlbiByZXBhaXJlZCBhbmQgdGhlIHZhcmlhYmxlIG1vZGlmaWVkIGFjY29yZGluZ2x5 LiAKK1RoZSBmb3JtYXQgaGFzIGJlZW4gcmVwYWlyZWQgYW5kIHRoZSB2YXJpYWJsZSBtb2RpZmll ZCBhY2NvcmRpbmdseS4KIFlvdSBjYW4gc2F2ZSB0aGUgY3VycmVudCB2YWx1ZSB0aHJvdWdoIHRo ZSBjdXN0b21pemUgc3lzdGVtIGJ5CiBlaXRoZXIgY2xpY2tpbmcgb3IgaGl0dGluZyByZXR1cm4g IgotICAgICAgICAgICAgKG1ha2UtdGV4dC1idXR0b24KLSAgICAgICAgICAgICAiaGVyZSIgbmls Ci0gICAgICAgICAgICAgJ2ZhY2UgJyg6d2VpZ2h0IGJvbGQgOmluaGVyaXQgYnV0dG9uKQotICAg ICAgICAgICAgICdtb3VzZS1mYWNlICcoOndlaWdodCBub3JtYWwgOmJhY2tncm91bmQgImdyYXk1 MCIgOmluaGVyaXQgYnV0dG9uKQotICAgICAgICAgICAgICdmb2xsb3ctbGluayB0Ci0gICAgICAg ICAgICAgJ2hlbHAtZWNobyAiQ2xpY2sgb3IgUkVUOiBzYXZlIG5ldyB2YWx1ZSBpbiBjdXN0b21p emUiCi0gICAgICAgICAgICAgJ2FjdGlvbiAobGFtYmRhIChiKQotICAgICAgICAgICAgICAgICAg ICAgICAoaWYgKG5vdCAoZmJvdW5kcCAnY3VzdG9taXplLXNhdmUtdmFyaWFibGUpKQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG1lc3NhZ2UgIkN1c3RvbWl6ZSBub3QgYXZhaWxhYmxlOyB2 YWx1ZSBub3Qgc2F2ZWQiKQotICAgICAgICAgICAgICAgICAgICAgICAgIChjdXN0b21pemUtc2F2 ZS12YXJpYWJsZSAnaWJ1ZmZlci1zYXZlZC1maWx0ZXJzCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidWZmZXItc2F2ZWQtZmlsdGVycykKLSAgICAg ICAgICAgICAgICAgICAgICAgICAobWVzc2FnZSAiU2F2ZWQgdXBkYXRlZCBpYnVmZmVyLXNhdmVk LWZpbHRlcnMuIikpKSkKLSAgICAgICAgICAgICIuIFNlZSBiZWxvdyBmb3IKKyAgICAgICAgICAo bWFrZS10ZXh0LWJ1dHRvbgorICAgICAgICAgICAiaGVyZSIgbmlsCisgICAgICAgICAgICdmYWNl ICcoOndlaWdodCBib2xkIDppbmhlcml0IGJ1dHRvbikKKyAgICAgICAgICAgJ21vdXNlLWZhY2Ug Jyg6d2VpZ2h0IG5vcm1hbCA6YmFja2dyb3VuZCAiZ3JheTUwIiA6aW5oZXJpdCBidXR0b24pCisg ICAgICAgICAgICdmb2xsb3ctbGluayB0CisgICAgICAgICAgICdoZWxwLWVjaG8gIkNsaWNrIG9y IFJFVDogc2F2ZSBuZXcgdmFsdWUgaW4gY3VzdG9taXplIgorICAgICAgICAgICAnYWN0aW9uIChs YW1iZGEgKGIpCisgICAgICAgICAgICAgICAgICAgICAoaWYgKG5vdCAoZmJvdW5kcCAnY3VzdG9t aXplLXNhdmUtdmFyaWFibGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgIChtZXNzYWdlICJD dXN0b21pemUgbm90IGF2YWlsYWJsZTsgdmFsdWUgbm90IHNhdmVkIikKKyAgICAgICAgICAgICAg ICAgICAgICAgKGN1c3RvbWl6ZS1zYXZlLXZhcmlhYmxlICdpYnVmZmVyLXNhdmVkLWZpbHRlcnMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidWZmZXIt c2F2ZWQtZmlsdGVycykKKyAgICAgICAgICAgICAgICAgICAgICAgKG1lc3NhZ2UgIlNhdmVkIHVw ZGF0ZWQgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzLiIpKSkpCisgICAgICAgICAgIi4gU2VlIGJlbG93 IGZvcgogYW4gZXhwbGFuYXRpb24gYW5kIGFsdGVybmF0aXZlIHdheXMgdG8gc2F2ZSB0aGUgcmVw YWlyZWQgdmFsdWUuCiAKLUV4cGxhbmF0aW9uOiBGb3IgdGhlIGxpc3QgdmFyaWFibGUgYGlidWZm ZXItc2F2ZWQtZmlsdGVycycsICAgICAgICAgICAgICAgCitFeHBsYW5hdGlvbjogRm9yIHRoZSBs aXN0IHZhcmlhYmxlIGBpYnVmZmVyLXNhdmVkLWZpbHRlcnMnLAogZWxlbWVudHMgb2YgdGhlIGZv cm0gKFNUUklORyAoRklMVEVSLVNQRUNTLi4uKSkgYXJlIGRlcHJlY2F0ZWQKIGFuZCBzaG91bGQg aW5zdGVhZCBoYXZlIHRoZSBmb3JtIChTVFJJTkcgRklMVEVSLVNQRUNTLi4uKSwgd2hlcmUKIGVh Y2ggZmlsdGVyIHNwZWMgaXMgYSBjb25zIGNlbGwgd2l0aCBhIHN5bWJvbCBpbiB0aGUgY2FyLiBT ZWUKLWBpYnVmZmVyLXNhdmVkLWZpbHRlcnMnIGZvciBkZXRhaWxzLiBUaGUgcmVwYWlyZWQgdmFs dWUgZml4ZXMgCi10aGlzIGZvcm1hdCB3aXRob3V0IGNoYW5naW5nIHRoZSBtZWFuaW5nIG9mIHRo ZSBzYXZlZCBmaWx0ZXJzLiAKK2BpYnVmZmVyLXNhdmVkLWZpbHRlcnMnIGZvciBkZXRhaWxzLiBU aGUgcmVwYWlyZWQgdmFsdWUgZml4ZXMKK3RoaXMgZm9ybWF0IHdpdGhvdXQgY2hhbmdpbmcgdGhl IG1lYW5pbmcgb2YgdGhlIHNhdmVkIGZpbHRlcnMuCiAKIEFsdGVybmF0aXZlIHdheXMgdG8gc2F2 ZSB0aGUgcmVwYWlyZWQgdmFsdWU6CiAKLSAgMS4gRG8gTS14IGN1c3RvbWl6ZS12YXJpYWJsZSBh bmQgZW50ZXJpbmcgYGlidWZmZXItc2F2ZWQtZmlsdGVycycgCi0gICAgIHdoZW4gcHJvbXB0ZWQu IAorICAxLiBEbyBNLXggY3VzdG9taXplLXZhcmlhYmxlIGFuZCBlbnRlcmluZyBgaWJ1ZmZlci1z YXZlZC1maWx0ZXJzJworICAgICB3aGVuIHByb21wdGVkLgogCi0gIDIuIFNldCB0aGUgdXBkYXRl ZCB2YWx1ZSBtYW51YWxseSBieSBjb3B5aW5nIHRoZSAKKyAgMi4gU2V0IHRoZSB1cGRhdGVkIHZh bHVlIG1hbnVhbGx5IGJ5IGNvcHlpbmcgdGhlCiAgICAgIGZvbGxvd2luZyBlbWFjcy1saXNwIGZv cm0gdG8geW91ciBlbWFjcyBpbml0IGZpbGUuCiAKICVzCkBAIC0yNDMsNiArMjQ0LDcgQEAgZGVw cmVjYXRpb24gd2FybmluZyBpcyByYWlzZWQsIHdpdGggYSBidXR0b24gYWxsb3dpbmcgcGVyc2lz dGVudAogdXBkYXRlLiBBbnkgdXBkYXRlZCBmaWx0ZXJzIHJldGFpbiB0aGVpciBtZWFuaW5nIGlu IHRoZSBuZXcKIGZvcm1hdC4gU2VlIGBpYnVmZmVyLXVwZGF0ZS1zYXZlZC1maWx0ZXJzLWZvcm1h dCcgYW5kCiBgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzJyBmb3IgZGV0YWlscyBvZiB0aGUgb2xkIGFu ZCBuZXcgZm9ybWF0cy4iCisgIChpbnRlcmFjdGl2ZSkKICAgKHdoZW4gKGFuZCAoYm91bmRwICdp YnVmZmVyLXNhdmVkLWZpbHRlcnMpIGlidWZmZXItc2F2ZWQtZmlsdGVycykKICAgICAobGV0ICgo Zml4ZWQgKGlidWZmZXItdXBkYXRlLXNhdmVkLWZpbHRlcnMtZm9ybWF0IGlidWZmZXItc2F2ZWQt ZmlsdGVycykpKQogICAgICAgKHByb2cxCkBAIC02NzIsNyArNjc0LDcgQEAgVG8gZXZhbHVhdGUg YSBmb3JtIHdpdGhvdXQgdmlld2luZyB0aGUgYnVmZmVyLCBzZWUgYGlidWZmZXItZG8tZXZhbCcu IgogCiA7OzsjIyNhdXRvbG9hZAogKGRlZnVuIGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1w IChidWYgZmlsdGVycykKLSAgIkRvZXMgdGhlIGJ1ZmZlciBCVUYgc3VjY2Vzc2Z1bGx5IHBhc3Mg YWxsIG9mIHRoZSBnaXZlbiBGSUxURVJTPworICAiUmV0dXJucyBub24tbmlsIGlmIGJ1ZmZlciBC VUYgcGFzc2VzIGFsbCBGSUxURVJTLgogCiBCVUYgaXMgYSBsaXNwIGJ1ZmZlciBvYmplY3QsIGFu ZCBGSUxURVJTIGlzIGEgbGlzdCBvZiBmaWx0ZXIKIHNwZWNpZmljYXRpb25zIHdpdGggdGhlIHNh bWUgc3RydWN0dXJlIGFzCkBAIC03MDAsOCArNzAyLDggQEAgc3BlY2lmaWNhdGlvbiwgd2l0aCB0 aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgYW4gZWxlbWVudCBvZiB0aGUgbGlzdAogYGlidWZmZXItZmls dGVyaW5nLXF1YWxpZmllcnMnLiIKICAgKGlmIChlcSAoY2FyIGZpbHRlcikgJ25vdCkKICAgICAg IChsZXQgKChpbm5lciAoaWJ1ZmZlci11bmFyeS1vcGVyYW5kIGZpbHRlcikpKQotICAgICAgICA7 OyBBVFROOiBBbGxvd3MgKG5vdCAobm90IC4uLikpIGV0Yy4gSXMgZml4aW5nIHRoaXMgd29ydGh3 aGlsZT8KLSAgICAgICAgKGlmIChlcSAoY2FyIGlubmVyKSAnbm90KSAKKyAgICAgICAgOzsgQWxs b3dzIChub3QgKG5vdCAuLi4pKSBldGMsIHdoaWNoIG1heSBiZSBvdmVya2lsbAorICAgICAgICAo aWYgKGVxIChjYXIgaW5uZXIpICdub3QpCiAgICAgICAgICAgICAoaWJ1ZmZlci1pbmNsdWRlZC1p bi1maWx0ZXItcCBidWYgKGlidWZmZXItdW5hcnktb3BlcmFuZCBpbm5lcikpCiAgICAgICAgICAg KG5vdCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXItcC0xIGJ1ZiBpbm5lcikpKSkKICAgICAo aWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXItcC0xIGJ1ZiBmaWx0ZXIpKSkKQEAgLTEwMzMsMTcg KzEwMzUsMTUgQEAgdHVybmVkIGludG8gc2VwYXJhdGUgZmlsdGVycywgbGlrZSBbbmFtZTogZm9v XSBhbmQgW21vZGU6IGJhci1tb2RlXS4iCiAgIChsZXQgKChsaW0gKHBvcCBpYnVmZmVyLWZpbHRl cmluZy1xdWFsaWZpZXJzKSkpCiAgICAgKHBjYXNlIChjYXIgbGltKQogICAgICAgKChvciAnb3Ig J2FuZCkKLSAgICAgICAoc2V0cSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzIChhcHBlbmQK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIGxpbSkKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVmZmVyLWZpbHRlcmlu Zy1xdWFsaWZpZXJzKSkpCisgICAgICAgKHNldHEgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVy cworICAgICAgICAgICAgIChuY29uYyAoY2RyIGxpbSkgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlm aWVycykpKQogICAgICAgKGBzYXZlZAogICAgICAgIChsZXQgKChkYXRhIChhc3NvYyAoY2RyIGxp bSkgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzKSkpCiAgICAgICAgICAodW5sZXNzIGRhdGEKICAgICAg ICAgICAgKGlidWZmZXItZmlsdGVyLWRpc2FibGUpCiAgICAgICAgICAgIChlcnJvciAiVW5rbm93 biBzYXZlZCBmaWx0ZXIgJXMiIChjZHIgbGltKSkpCi0gICAgICAgICAoc2V0cSBpYnVmZmVyLWZp bHRlcmluZy1xdWFsaWZpZXJzIChhcHBlbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChjZHIgZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkpCisgICAgICAg ICAoc2V0cSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzCisgICAgICAgICAgICAgICAoYXBw ZW5kIChjZHIgZGF0YSkgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKSkKICAgICAgIChg bm90CiAgICAgICAgKHB1c2ggKGlidWZmZXItdW5hcnktb3BlcmFuZCBsaW0pIGlidWZmZXItZmls dGVyaW5nLXF1YWxpZmllcnMpKQogICAgICAgKF8KQEAgLTEwNzYsMzEgKzEwNzYsMjggQEAgdHVy bmVkIGludG8gc2VwYXJhdGUgZmlsdGVycywgbGlrZSBbbmFtZTogZm9vXSBhbmQgW21vZGU6IGJh ci1tb2RlXS4iCiAJICBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkKICAgKGlidWZmZXIt dXBkYXRlIG5pbCB0KSkKIAorKGRlZnVuIGlidWZmZXItLW9yLWFuZC1maWx0ZXIgKG9wIGRlY29t cG9zZSkKKyAgKGlmIGRlY29tcG9zZQorICAgICAgKGlmIChlcSBvcCAoY2FhciBpYnVmZmVyLWZp bHRlcmluZy1xdWFsaWZpZXJzKSkKKyAgICAgICAgICAoaWJ1ZmZlci1kZWNvbXBvc2UtZmlsdGVy KQorICAgICAgICAoZXJyb3IgIlRvcCBmaWx0ZXIgaXMgbm90IGFuICVzIiAodXBjYXNlIChzeW1i b2wtbmFtZSBvcCkpKSkKKyAgICAod2hlbiAoPCAobGVuZ3RoIGlidWZmZXItZmlsdGVyaW5nLXF1 YWxpZmllcnMpIDIpCisgICAgICAoZXJyb3IgIk5lZWQgdHdvIGZpbHRlcnMgdG8gJXMiICh1cGNh c2UgKHN5bWJvbC1uYW1lIG9wKSkpKQorICAgIDs7IElmIGVpdGhlciBmaWx0ZXIgaXMgYW4gb3As IGVsaW1pbmF0ZSB1bm5lY2Vzc2FyeSBuZXN0aW5nLgorICAgIChsZXQgKChmaXJzdCAocG9wIGli dWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAgICAgIChzZWNvbmQgKHBvcCBpYnVm ZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpCisgICAgICAocHVzaCAobmNvbmMgKGlmIChlcSBv cCAoY2FyIGZpcnN0KSkgZmlyc3QgKGxpc3Qgb3AgZmlyc3QpKQorICAgICAgICAgICAgICAgICAg IChpZiAoZXEgb3AgKGNhciBzZWNvbmQpKSAoY2RyIHNlY29uZCkgKGxpc3Qgc2Vjb25kKSkpCisg ICAgICAgICAgICBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpCisgIChpYnVmZmVyLXVw ZGF0ZSBuaWwgdCkpCisKIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gaWJ1ZmZlci1vci1maWx0ZXIg KCZvcHRpb25hbCBkZWNvbXBvc2UpCiAgICJSZXBsYWNlIHRoZSB0b3AgdHdvIGZpbHRlcnMgaW4g dGhpcyBidWZmZXIgd2l0aCB0aGVpciBsb2dpY2FsIE9SLgogSWYgb3B0aW9uYWwgYXJndW1lbnQg REVDT01QT1NFIGlzIG5vbi1uaWwsIGluc3RlYWQgYnJlYWsgdGhlIHRvcCBPUgogZmlsdGVyIGlu dG8gcGFydHMuIgogICAoaW50ZXJhY3RpdmUgIlAiKQotICAoaWYgZGVjb21wb3NlCi0gICAgICAo cHJvZ24KLQkod2hlbiAob3IgKG51bGwgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKLQkJ ICAobm90IChlcSAnb3IgKGNhYXIgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKSkKLQkg IChlcnJvciAiVG9wIGZpbHRlciBpcyBub3QgYW4gT1IiKSkKLQkobGV0ICgobGltIChwb3AgaWJ1 ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKQotCSAgKHNldHEgaWJ1ZmZlci1maWx0ZXJpbmct cXVhbGlmaWVycwotCQkobmNvbmMgKGNkciBsaW0pIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmll cnMpKSkpCi0gICAgKHdoZW4gKDwgKGxlbmd0aCBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJz KSAyKQotICAgICAgKGVycm9yICJOZWVkIHR3byBmaWx0ZXJzIHRvIE9SIikpCi0gICAgOzsgSWYg dGhlIHNlY29uZCBmaWx0ZXIgaXMgYW4gT1IsIGp1c3QgYWRkIHRvIGl0LgotICAgIChsZXQgKChm aXJzdCAocG9wIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQotCSAgKHNlY29uZCAocG9w IGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkKLSAgICAgIChpZiAoZXEgJ29yIChjYXIg c2Vjb25kKSkKLQkgIChwdXNoIChuY29uYyAobGlzdCAnb3IgZmlyc3QpIChjZHIgc2Vjb25kKSkK LQkJaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKLQkocHVzaCAobGlzdCAnb3IgZmlyc3Qg c2Vjb25kKQotCSAgICAgIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkpCi0gIChpYnVm ZmVyLXVwZGF0ZSBuaWwgdCkpCisgIChpYnVmZmVyLS1vci1hbmQtZmlsdGVyICdvciBkZWNvbXBv c2UpKQogCiA7OzsjIyNhdXRvbG9hZAogKGRlZnVuIGlidWZmZXItYW5kLWZpbHRlciAoJm9wdGlv bmFsIGRlY29tcG9zZSkKQEAgLTExMDgsMjUgKzExMDUsNyBAQCBmaWx0ZXIgaW50byBwYXJ0cy4i CiBJZiBvcHRpb25hbCBhcmd1bWVudCBERUNPTVBPU0UgaXMgbm9uLW5pbCwgaW5zdGVhZCBicmVh ayB0aGUgdG9wIEFORAogZmlsdGVyIGludG8gcGFydHMuIgogICAoaW50ZXJhY3RpdmUgIlAiKQot ICAoaWYgZGVjb21wb3NlCi0gICAgICAocHJvZ24KLSAgICAgICAgKHdoZW4gKG9yIChudWxsIGli dWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCi0gICAgICAgICAgICAgICAgICAobm90IChlcSAn YW5kIChjYWFyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkpCi0gICAgICAgICAgKGVy cm9yICJUb3AgZmlsdGVyIGlzIG5vdCBhbiBBTkQiKSkKLSAgICAgICAgKGxldCAoKGxpbSAocG9w IGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkKLSAgICAgICAgICAoc2V0cSBpYnVmZmVy LWZpbHRlcmluZy1xdWFsaWZpZXJzCi0gICAgICAgICAgICAgICAgKG5jb25jIChjZHIgbGltKSBp YnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpKQotICAgICh3aGVuICg8IChsZW5ndGggaWJ1 ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykgMikKLSAgICAgIChlcnJvciAiTmVlZCB0d28gZmls dGVycyB0byBBTkQiKSkKLSAgICA7OyBJZiB0aGUgc2Vjb25kIGZpbHRlciBpcyBhbiBBTkQsIGp1 c3QgYWRkIHRvIGl0LgotICAgIChsZXQgKChmaXJzdCAocG9wIGlidWZmZXItZmlsdGVyaW5nLXF1 YWxpZmllcnMpKQotICAgICAgICAgIChzZWNvbmQgKHBvcCBpYnVmZmVyLWZpbHRlcmluZy1xdWFs aWZpZXJzKSkpCi0gICAgICAoaWYgKGVxICdhbmQgKGNhciBzZWNvbmQpKQotICAgICAgICAgIChw dXNoIChuY29uYyAobGlzdCAnYW5kIGZpcnN0KSAoY2RyIHNlY29uZCkpCi0gICAgICAgICAgICAg ICAgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKLSAgICAgICAgKHB1c2ggKGxpc3QgJ2Fu ZCBmaXJzdCBzZWNvbmQpCi0gICAgICAgICAgICAgIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmll cnMpKSkpCi0gIChpYnVmZmVyLXVwZGF0ZSBuaWwgdCkpCisgIChpYnVmZmVyLS1vci1hbmQtZmls dGVyICdhbmQgZGVjb21wb3NlKSkKIAogKGRlZnVuIGlidWZmZXItbWF5YmUtc2F2ZS1zdHVmZiAo KQogICAod2hlbiBpYnVmZmVyLXNhdmUtd2l0aC1jdXN0b20KQEAgLTEyOTUsMTUgKzEyNzQsMTYg QEAgY3VycmVudGx5IHVzZWQgYnkgYnVmZmVycy4iCiAKIDs7OyMjI2F1dG9sb2FkIChhdXRvbG9h ZCAnaWJ1ZmZlci1maWx0ZXItYnktc3RhcnJlZC1uYW1lICJpYnVmLWV4dCIpCiAoZGVmaW5lLWli dWZmZXItZmlsdGVyIHN0YXJyZWQtbmFtZQotICAgICJMaW1pdCBjdXJyZW50IHZpZXcgdG8gYnVm ZmVycyB3aXRoIG5hbWUgYmVnaW5uaW5nIHdpdGggKi4iCisgICAgIkxpbWl0IGN1cnJlbnQgdmll dyB0byBidWZmZXJzIHdpdGggbmFtZSBiZWdpbm5pbmcgYW5kIGVuZGluZword2l0aCAqLCBhbG9u ZyB3aXRoIGFuIG9wdGlvbmFsIHN1ZmZpeCBvZiB0aGUgZm9ybSBkaWdpdHMgb3IKKzxkaWdpdHM+ LiIKICAgKDpkZXNjcmlwdGlvbiAic3RhcnJlZCBidWZmZXIgbmFtZSIKICAgIDpyZWFkZXIgbmls KQotICAoc3RyaW5nLW1hdGNoICJcXGAqIiAoYnVmZmVyLW5hbWUgYnVmKSkpCisgIChzdHJpbmct bWF0Y2ggIlxcYFxcKlteKl0rXFwqXFwoPzo8W1s6ZGlnaXQ6XV0rPlxcKT9cXCciIChidWZmZXIt bmFtZSBidWYpKSkKIAotOzsgVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgY2FsbGVkIHBhdGhuYW1l IGJ1dCBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CiA7OzsjIyNhdXRvbG9hZCAoYXV0 b2xvYWQgJ2lidWZmZXItZmlsdGVyLWJ5LWZpbGVuYW1lICJpYnVmLWV4dCIpCi0oZGVmaW5lLWli dWZmZXItZmlsdGVyIGZpbGVuYW1lICAKLSAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJz IHdpdGggZnVsbCBmaWxlIHBhdGhuYW1lIG1hdGNoaW5nIFFVQUxJRklFUi4KKyhkZWZpbmUtaWJ1 ZmZlci1maWx0ZXIgZmlsZW5hbWUKKyAgICAiTGltaXQgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMg d2l0aCBmdWxsIGZpbGUgcGF0aG5hbWUgbWF0Y2hpbmcgUVVBTElGSUVSLgogCiBGb3IgZXhhbXBs ZSwgZm9yIGEgYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCBmaWxlICcvYS9iL2MuZCcsIHRoaXMKIG1h dGNoZXMgYWdhaW5zdCAnL2EvYi9jLmQnLiIKQEAgLTEzMTMsOCArMTI5Myw4IEBAIG1hdGNoZXMg YWdhaW5zdCAnL2EvYi9jLmQnLiIKICAgICAoc3RyaW5nLW1hdGNoIHF1YWxpZmllciBpdCkpKQog CiA7OyBJZiBmaWxlbmFtZSBhYm92ZSB3ZXJlIHJlbmFtZWQgdG8gcGF0aG5hbWUsIHRoaXMgY291 bGQgYmUgY2FsbGVkIGZpbGVuYW1lLgotOzs7IyMjYXV0b2xvYWQgKGF1dG9sb2FkICdpYnVmZmVy LWZpbHRlci1ieS1maWxlbmFtZS1iYXNlICJpYnVmLWV4dCIpCi0oZGVmaW5lLWlidWZmZXItZmls dGVyIGZpbGVuYW1lLWJhc2UgCis7OzsjIyNhdXRvbG9hZCAoYXV0b2xvYWQgJ2lidWZmZXItZmls dGVyLWJ5LWJhc2VuYW1lICJpYnVmLWV4dCIpCisoZGVmaW5lLWlidWZmZXItZmlsdGVyIGJhc2Vu YW1lCiAgICAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdpdGggZmlsZSBiYXNlbmFt ZSBtYXRjaGluZyBRVUFMSUZJRVIuCiAKIEZvciBleGFtcGxlLCBmb3IgYSBidWZmZXIgYXNzb2Np YXRlZCB3aXRoIGZpbGUgJy9hL2IvYy5kJywgdGhpcwpAQCAtMTMyNSw4ICsxMzA1LDggQEAgbWF0 Y2hlcyBhZ2FpbnN0ICdjLmQnLiIKICAgKGlidWZmZXItYXdoZW4gKHdpdGgtY3VycmVudC1idWZm ZXIgYnVmIChpYnVmZmVyLWJ1ZmZlci1maWxlLW5hbWUpKQogICAgIChzdHJpbmctbWF0Y2ggcXVh bGlmaWVyIChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IGl0KSkpKQogCi07OzsjIyNhdXRvbG9hZCAo YXV0b2xvYWQgJ2lidWZmZXItZmlsdGVyLWJ5LWZpbGVuYW1lLWV4dGVuc2lvbiAiaWJ1Zi1leHQi KQotKGRlZmluZS1pYnVmZmVyLWZpbHRlciBmaWxlbmFtZS1leHRlbnNpb24KKzs7OyMjI2F1dG9s b2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktZmlsZS1leHRlbnNpb24gImlidWYtZXh0 IikKKyhkZWZpbmUtaWJ1ZmZlci1maWx0ZXIgZmlsZS1leHRlbnNpb24KICAgICAiTGltaXQgY3Vy cmVudCB2aWV3IHRvIGJ1ZmZlcnMgd2l0aCBmaWxlbmFtZSBleHRlbnNpb24gbWF0Y2hpbmcgUVVB TElGSUVSLgogCiBUaGUgc2VwYXJhdG9yIGNoYXJhY3RlciAodHlwaWNhbGx5IGAuJykgaXMgbm90 IHBhcnQgb2YgdGhlCkBAIC0xMzM4LDI5ICsxMzE4LDE5IEBAIHBhdHRlcm4uIEZvciBleGFtcGxl LCBmb3IgYSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIGZpbGUKICAgKGlidWZmZXItYXdoZW4gKHdp dGgtY3VycmVudC1idWZmZXIgYnVmIChpYnVmZmVyLWJ1ZmZlci1maWxlLW5hbWUpKQogICAgIChz dHJpbmctbWF0Y2ggcXVhbGlmaWVyIChvciAoZmlsZS1uYW1lLWV4dGVuc2lvbiBpdCkgIiIpKSkp CiAKLTs7OyMjI2F1dG9sb2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktZmlsZW5hbWUt cm9vdCAiaWJ1Zi1leHQiKQotKGRlZmluZS1pYnVmZmVyLWZpbHRlciBmaWxlbmFtZS1yb290Ci0g ICAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdpdGggZmlsZSBiYXNlbmFtZSBtYXRj aGluZyBRVUFMSUZJRVIuCis7OzsjIyNhdXRvbG9hZCAoYXV0b2xvYWQgJ2lidWZmZXItZmlsdGVy LWJ5LWRpcmVjdG9yeSAiaWJ1Zi1leHQiKQorKGRlZmluZS1pYnVmZmVyLWZpbHRlciBkaXJlY3Rv cnkKKyAgICAiTGltaXQgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgd2l0aCBkaXJlY3RvcnkgbWF0 Y2hpbmcgUVVBTElGSUVSLgogCi1UaGUgZmlsZW5hbWUgcm9vdCBpcyB0aGUgcGFydCBvZiB0aGUg ZnVsbCBwYXRobmFtZSBvZiB0aGUgZmlsZSB3aXRob3V0Ci10aGUgZGlyZWN0b3J5IG9yIGV4dGVu c2lvbi9zdWZmaXggY29tcG9uZW50cy4gRm9yIGV4YW1wbGUsIGZvciBhIGJ1ZmZlcgotYXNzb2Np YXRlZCB3aXRoIGZpbGUgJy9hL2IvYy5kJywgdGhpcyBtYXRjaGVzIGFnYWluc3QgJ2MnLiIKLSAg KDpkZXNjcmlwdGlvbiAiZmlsZW5hbWUgcm9vdCIKLSAgIDpyZWFkZXIgKHJlYWQtZnJvbS1taW5p YnVmZmVyICJGaWx0ZXIgYnkgZmlsZW5hbWUgcm9vdCAocmVnZXgpOiAiKSkKLSAgKGlidWZmZXIt YXdoZW4gKHdpdGgtY3VycmVudC1idWZmZXIgYnVmIChpYnVmZmVyLWJ1ZmZlci1maWxlLW5hbWUp KQotICAgIChzdHJpbmctbWF0Y2ggcXVhbGlmaWVyIChmaWxlLW5hbWUtYmFzZSBpdCkpKSkKLQot Ozs7IyMjYXV0b2xvYWQgKGF1dG9sb2FkICdpYnVmZmVyLWZpbHRlci1ieS1maWxlbmFtZS1kaXJl Y3RvcnkgImlidWYtZXh0IikKLShkZWZpbmUtaWJ1ZmZlci1maWx0ZXIgZmlsZW5hbWUtZGlyZWN0 b3J5Ci0gICAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdpdGggZmlsZW5hbWUgZGly ZWN0b3J5IG1hdGNoaW5nIFFVQUxJRklFUi4KLQotRm9yIGV4YW1wbGUsIGZvciBhIGJ1ZmZlciBh c3NvY2lhdGVkIHdpdGggZmlsZSAnL2EvYi9jLmQnLCB0aGlzCi1tYXRjaGVzIGFnYWluc3QgJy9h L2InLiIKK0ZvciBhIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggZmlsZSAnL2EvYi9jLmQnLCB0aGlz IG1hdGNoZXMKK2FnYWluc3QgJy9hL2InLiBGb3IgYSBidWZmZXIgbm90IGFzc29jaWF0ZWQgd2l0 aCBhIGZpbGUsIHRoaXMKK21hdGNoZXMgYWdhaW5zdCB0aGUgdmFsdWUgb2YgYGRlZmF1bHQtZGly ZWN0b3J5JyBpbiB0aGF0IGJ1ZmZlci4iCiAgICg6ZGVzY3JpcHRpb24gImRpcmVjdG9yeSBuYW1l IgogICAgOnJlYWRlciAocmVhZC1mcm9tLW1pbmlidWZmZXIgIkZpbHRlciBieSBkaXJlY3Rvcnkg bmFtZSAocmVnZXgpOiAiKSkKLSAgKGlidWZmZXItYXdoZW4gKHdpdGgtY3VycmVudC1idWZmZXIg YnVmIChpYnVmZmVyLWJ1ZmZlci1maWxlLW5hbWUpKQotICAgIChsZXQgKChkaXJuYW1lIChmaWxl LW5hbWUtZGlyZWN0b3J5IGl0KSkpCi0gICAgICAod2hlbiBkaXJuYW1lIChzdHJpbmctbWF0Y2gg cXVhbGlmaWVyIGRpcm5hbWUpKSkpKQorICAoaWJ1ZmZlci1haWYgKHdpdGgtY3VycmVudC1idWZm ZXIgYnVmIChpYnVmZmVyLWJ1ZmZlci1maWxlLW5hbWUpKQorICAgICAgKGxldCAoKGRpcm5hbWUg KGZpbGUtbmFtZS1kaXJlY3RvcnkgaXQpKSkKKyAgICAgICAgKHdoZW4gZGlybmFtZSAoc3RyaW5n LW1hdGNoIHF1YWxpZmllciBkaXJuYW1lKSkpCisgICAgKHdoZW4gZGVmYXVsdC1kaXJlY3Rvcnkg KHN0cmluZy1tYXRjaCBxdWFsaWZpZXIgZGVmYXVsdC1kaXJlY3RvcnkpKSkpCiAKIDs7OyMjI2F1 dG9sb2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktc2l6ZS1ndCAgImlidWYtZXh0IikK IChkZWZpbmUtaWJ1ZmZlci1maWx0ZXIgc2l6ZS1ndApAQCAtMTM3Myw3ICsxMzQzLDcgQEAgbWF0 Y2hlcyBhZ2FpbnN0ICcvYS9iJy4iCiAKIDs7OyMjI2F1dG9sb2FkIChhdXRvbG9hZCAnaWJ1ZmZl ci1maWx0ZXItYnktc2l6ZS1sdCAgImlidWYtZXh0IikKIChkZWZpbmUtaWJ1ZmZlci1maWx0ZXIg c2l6ZS1sdAotICAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHdpdGggc2l6ZSBsZXNz IHRoYW4gUVVBTElGSUVSLiIKKyAgICAiTGltaXQgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgd2l0 aCBzaXplIGxlc3MgdGhhbiBRVUFMSUZJRVIuIgogICAoOmRlc2NyaXB0aW9uICJzaXplIGxlc3Mg dGhhbiIKICAgIDpyZWFkZXIKICAgIChzdHJpbmctdG8tbnVtYmVyIChyZWFkLWZyb20tbWluaWJ1 ZmZlciAiRmlsdGVyIGJ5IHNpemUgbGVzcyB0aGFuOiAiKSkpCkBAIC0xMzgyLDExICsxMzUyLDE5 IEBAIG1hdGNoZXMgYWdhaW5zdCAnL2EvYicuIgogCiA7OzsjIyNhdXRvbG9hZCAoYXV0b2xvYWQg J2lidWZmZXItZmlsdGVyLWJ5LW1vZGlmaWVkICJpYnVmLWV4dCIpCiAoZGVmaW5lLWlidWZmZXIt ZmlsdGVyIG1vZGlmaWVkCi0gICAiTGltaXQgY3VycmVudCB2aWV3IHRvIGJ1ZmZlcnMgdGhhdCBh cmUgbWFya2VkIGFzIG1vZGlmaWVkLiIKKyAgICAiTGltaXQgY3VycmVudCB2aWV3IHRvIGJ1ZmZl cnMgdGhhdCBhcmUgbWFya2VkIGFzIG1vZGlmaWVkLiIKICAgKDpkZXNjcmlwdGlvbiAibW9kaWZp ZWQiCiAgICA6cmVhZGVyIG5pbCkKICAgKGJ1ZmZlci1tb2RpZmllZC1wIGJ1ZikpCiAKKzs7OyMj I2F1dG9sb2FkIChhdXRvbG9hZCAnaWJ1ZmZlci1maWx0ZXItYnktdmlzaXRpbmctZmlsZSAiaWJ1 Zi1leHQiKQorKGRlZmluZS1pYnVmZmVyLWZpbHRlciB2aXNpdGluZy1maWxlCisgICAgIkxpbWl0 IGN1cnJlbnQgdmlldyB0byBidWZmZXJzIHRoYXQgYXJlIHZpc2l0aW5nIGEgZmlsZS4KK1RoaXMg aW5jbHVkZXMgYnVmZmVycyB2aXNpdGluZyBhIGRpcmVjdG9yeSBpbiBkaXJlZC4iCisgICg6ZGVz Y3JpcHRpb24gInZpc2l0aW5nIGEgZmlsZSIKKyAgIDpyZWFkZXIgbmlsKQorICAod2l0aC1jdXJy ZW50LWJ1ZmZlciBidWYgKGlidWZmZXItYnVmZmVyLWZpbGUtbmFtZSkpKQorCiA7OzsjIyNhdXRv bG9hZCAoYXV0b2xvYWQgJ2lidWZmZXItZmlsdGVyLWJ5LWNvbnRlbnQgImlidWYtZXh0IikKIChk ZWZpbmUtaWJ1ZmZlci1maWx0ZXIgY29udGVudAogICAgIkxpbWl0IGN1cnJlbnQgdmlldyB0byBi dWZmZXJzIHdob3NlIGNvbnRlbnRzIG1hdGNoIFFVQUxJRklFUi4iCmRpZmYgLS1naXQgYS9saXNw L2lidWZmZXIuZWwgYi9saXNwL2lidWZmZXIuZWwKaW5kZXggMTgxYTAxYy4uNzdhNjg4MCAxMDA2 NDQKLS0tIGEvbGlzcC9pYnVmZmVyLmVsCisrKyBiL2xpc3AvaWJ1ZmZlci5lbApAQCAtNTI0LDE4 ICs1MjQsMTggQEAgZGlyZWN0b3J5LCBsaWtlIGBkZWZhdWx0LWRpcmVjdG9yeScuIgogICAgIChk ZWZpbmUta2V5IG1hcCAoa2JkICIvIG4iKSAnaWJ1ZmZlci1maWx0ZXItYnktbmFtZSkKICAgICAo ZGVmaW5lLWtleSBtYXAgKGtiZCAiLyAqIikgJ2lidWZmZXItZmlsdGVyLWJ5LXN0YXJyZWQtbmFt ZSkKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBmIikgJ2lidWZmZXItZmlsdGVyLWJ5LWZp bGVuYW1lKQotICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIEYiKSAnaWJ1ZmZlci1maWx0ZXIt YnktZmlsZW5hbWUtYmFzZSkKLSAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyAuIikgJ2lidWZm ZXItZmlsdGVyLWJ5LWZpbGVuYW1lLWV4dGVuc2lvbikKLSAgICAoZGVmaW5lLWtleSBtYXAgKGti ZCAiLyByIikgJ2lidWZmZXItZmlsdGVyLWJ5LWZpbGVuYW1lLXJvb3QpCi0gICAgKGRlZmluZS1r ZXkgbWFwIChrYmQgIi8gLyIpICdpYnVmZmVyLWZpbHRlci1ieS1maWxlbmFtZS1kaXJlY3Rvcnkp CisgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIi8gYiIpICdpYnVmZmVyLWZpbHRlci1ieS1iYXNl bmFtZSkKKyAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyAuIikgJ2lidWZmZXItZmlsdGVyLWJ5 LWZpbGUtZXh0ZW5zaW9uKQorICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIC8iKSAnaWJ1ZmZl ci1maWx0ZXItYnktZGlyZWN0b3J5KQogICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIDwiKSAn aWJ1ZmZlci1maWx0ZXItYnktc2l6ZS1sdCkKICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyA+ IikgJ2lidWZmZXItZmlsdGVyLWJ5LXNpemUtZ3QpCiAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQg Ii8gaSIpICdpYnVmZmVyLWZpbHRlci1ieS1tb2RpZmllZCkKKyAgICAoZGVmaW5lLWtleSBtYXAg KGtiZCAiLyB2IikgJ2lidWZmZXItZmlsdGVyLWJ5LXZpc2l0aW5nLWZpbGUpCiAgICAgKGRlZmlu ZS1rZXkgbWFwIChrYmQgIi8gYyIpICdpYnVmZmVyLWZpbHRlci1ieS1jb250ZW50KQogICAgIChk ZWZpbmUta2V5IG1hcCAoa2JkICIvIGUiKSAnaWJ1ZmZlci1maWx0ZXItYnktcHJlZGljYXRlKQog ICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIFRBQiIpICdpYnVmZmVyLWZpbHRlci1jaG9zZW4t YnktY29tcGxldGlvbikKIAotICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICIvIHciKSAnaWJ1ZmZl ci1zd2l0Y2gtdG8tc2F2ZWQtZmlsdGVycykKKyAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiLyBy IikgJ2lidWZmZXItc3dpdGNoLXRvLXNhdmVkLWZpbHRlcnMpCiAgICAgKGRlZmluZS1rZXkgbWFw IChrYmQgIi8gYSIpICdpYnVmZmVyLWFkZC1zYXZlZC1maWx0ZXJzKQogICAgIChkZWZpbmUta2V5 IG1hcCAoa2JkICIvIHgiKSAnaWJ1ZmZlci1kZWxldGUtc2F2ZWQtZmlsdGVycykKICAgICAoZGVm aW5lLWtleSBtYXAgKGtiZCAiLyBkIikgJ2lidWZmZXItZGVjb21wb3NlLWZpbHRlcikKQEAgLTY2 Niw3ICs2NjYsNyBAQCBkaXJlY3RvcnksIGxpa2UgYGRlZmF1bHQtZGlyZWN0b3J5Jy4iCiAgICAg ICAnKG1lbnUtaXRlbSAiQWRkIGZpbHRlciBieSBhIG1ham9yIG1vZGUgaW4gdXNlLi4uIgogICAg ICAgICBpYnVmZmVyLWZpbHRlci1ieS11c2VkLW1vZGUpKQogICAgIChkZWZpbmUta2V5LWFmdGVy IG1hcCBbbWVudS1iYXIgdmlldyBmaWx0ZXIgZmlsdGVyLWJ5LWRlcml2ZWQtbW9kZV0KLSAgICAg ICcobWVudS1pdGVtICJBZGQgZmlsdGVyIGJ5IGRlcml2ZWQgbW9kZS4uLiIgCisgICAgICAnKG1l bnUtaXRlbSAiQWRkIGZpbHRlciBieSBkZXJpdmVkIG1vZGUuLi4iCiAgICAgICAgICAgICAgICAg ICBpYnVmZmVyLWZpbHRlci1ieS1kZXJpdmVkLW1vZGUpKQogICAgIChkZWZpbmUta2V5LWFmdGVy IG1hcCBbbWVudS1iYXIgdmlldyBmaWx0ZXIgZmlsdGVyLWJ5LW5hbWVdCiAgICAgICAnKG1lbnUt aXRlbSAiQWRkIGZpbHRlciBieSBidWZmZXIgbmFtZS4uLiIgaWJ1ZmZlci1maWx0ZXItYnktbmFt ZSkpCkBAIC02NzksMjQgKzY3OSwxOSBAQCBkaXJlY3RvcnksIGxpa2UgYGRlZmF1bHQtZGlyZWN0 b3J5Jy4iCiAgICAgICAgICAgICAgICAgICA6aGVscAogICAgICAgICAgICAgICAgICAgKGNvbmNh dCAiRm9yIGEgYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCBmaWxlICcvYS9iL2MuZCcsICIKICAgICAg ICAgICAgICAgICAgICAgICAgICAgImxpc3QgYnVmZmVyIGlmIGEgZ2l2ZW4gcGF0dGVybiBtYXRj aGVzICcvYS9iL2MuZCciKSkpCi0gICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2 aWV3IGZpbHRlciBmaWx0ZXItYnktZmlsZW5hbWUtYmFzZV0KKyAgICAoZGVmaW5lLWtleS1hZnRl ciBtYXAgW21lbnUtYmFyIHZpZXcgZmlsdGVyIGZpbHRlci1ieS1iYXNlbmFtZV0KICAgICAgICco bWVudS1pdGVtICJBZGQgZmlsdGVyIGJ5IGZpbGUgYmFzZW5hbWUuLi4iCi0gICAgICAgICAgICAg ICAgICBpYnVmZmVyLWZpbHRlci1ieS1maWxlbmFtZS1iYXNlCisgICAgICAgICAgICAgICAgICBp YnVmZmVyLWZpbHRlci1ieS1iYXNlbmFtZQogICAgICAgICAgICAgICAgICAgOmhlbHAgKGNvbmNh dCAiRm9yIGEgYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCBmaWxlICcvYS9iL2MuZCcsICIKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QgYnVmZmVyIGlmIGEgZ2l2ZW4gcGF0dGVy biBtYXRjaGVzICdjLmQnIikpKQotICAgIChkZWZpbmUta2V5LWFmdGVyIG1hcCBbbWVudS1iYXIg dmlldyBmaWx0ZXIgZmlsdGVyLWJ5LWZpbGVuYW1lLWV4dGVuc2lvbl0KLSAgICAgICcobWVudS1p dGVtICJBZGQgZmlsdGVyIGJ5IGZpbGVuYW1lIGV4dGVuc2lvbi4uLiIKLSAgICAgICAgICAgICAg ICAgIGlidWZmZXItZmlsdGVyLWJ5LWZpbGVuYW1lLWV4dGVuc2lvbgorICAgIChkZWZpbmUta2V5 LWFmdGVyIG1hcCBbbWVudS1iYXIgdmlldyBmaWx0ZXIgZmlsdGVyLWJ5LWZpbGUtZXh0ZW5zaW9u XQorICAgICAgJyhtZW51LWl0ZW0gIkFkZCBmaWx0ZXIgYnkgZmlsZSBuYW1lIGV4dGVuc2lvbi4u LiIKKyAgICAgICAgICAgICAgICAgIGlidWZmZXItZmlsdGVyLWJ5LWZpbGUtZXh0ZW5zaW9uCiAg ICAgICAgICAgICAgICAgICA6aGVscCAoY29uY2F0ICJGb3IgYSBidWZmZXIgYXNzb2NpYXRlZCB3 aXRoIGZpbGUgJy9hL2IvYy5kJywgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi bGlzdCBidWZmZXIgaWYgYSBnaXZlbiBwYXR0ZXJuIG1hdGNoZXMgJ2QnIikpKQotICAgIChkZWZp bmUta2V5LWFmdGVyIG1hcCBbbWVudS1iYXIgdmlldyBmaWx0ZXIgZmlsdGVyLWJ5LWZpbGVuYW1l LXJvb3RdCi0gICAgICAnKG1lbnUtaXRlbSAiQWRkIGZpbHRlciBieSBmaWxlbmFtZSByb290Li4u IgotICAgICAgICAgICAgICAgICAgaWJ1ZmZlci1maWx0ZXItYnktZmlsZW5hbWUtcm9vdAotICAg ICAgICAgICAgICAgICAgOmhlbHAgKGNvbmNhdCAiRm9yIGEgYnVmZmVyIGFzc29jaWF0ZWQgd2l0 aCBmaWxlICcvYS9iL2MuZCcsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxp c3QgYnVmZmVyIGlmIGEgZ2l2ZW4gcGF0dGVybiBtYXRjaGVzICdjJyIpKSkKLSAgICAoZGVmaW5l LWtleS1hZnRlciBtYXAgW21lbnUtYmFyIHZpZXcgZmlsdGVyIGZpbHRlci1ieS1maWxlbmFtZS1k aXJlY3RvcnldCisgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2aWV3IGZpbHRl ciBmaWx0ZXItYnktZGlyZWN0b3J5XQogICAgICAgJyhtZW51LWl0ZW0gIkFkZCBmaWx0ZXIgYnkg ZmlsZW5hbWUncyBkaXJlY3RvcnkuLi4iCi0gICAgICAgICAgICAgICAgICBpYnVmZmVyLWZpbHRl ci1ieS1maWxlbmFtZS1kaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgIGlidWZmZXItZmlsdGVy LWJ5LWRpcmVjdG9yeQogICAgICAgICAgICAgICAgICAgOmhlbHAKICAgICAgICAgICAgICAgICAg IChjb25jYXQgIkZvciBhIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggZmlsZSAnL2EvYi9jLmQnLCAi CiAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGJ1ZmZlciBpZiBhIGdpdmVuIHBhdHRl cm4gbWF0Y2hlcyAnL2EvYiciKSkpCkBAIC03MDgsNiArNzAzLDEwIEBAIGRpcmVjdG9yeSwgbGlr ZSBgZGVmYXVsdC1kaXJlY3RvcnknLiIKICAgICAoZGVmaW5lLWtleS1hZnRlciBtYXAgW21lbnUt YmFyIHZpZXcgZmlsdGVyIGZpbHRlci1ieS1tb2RpZmllZF0KICAgICAgICcobWVudS1pdGVtICJB ZGQgZmlsdGVyIGJ5IG1vZGlmaWVkIGJ1ZmZlci4uLiIgaWJ1ZmZlci1maWx0ZXItYnktbW9kaWZp ZWQKICAgICAgICAgICAgICAgICAgIDpoZWxwICJMaXN0IGJ1ZmZlcnMgdGhhdCBhcmUgbWFya2Vk IGFzIG1vZGlmaWVkIikpCisgICAgKGRlZmluZS1rZXktYWZ0ZXIgbWFwIFttZW51LWJhciB2aWV3 IGZpbHRlciBmaWx0ZXItYnktdmlzaXRpbmctZmlsZV0KKyAgICAgICcobWVudS1pdGVtICJBZGQg ZmlsdGVyIGJ5IG1vZGlmaWVkIGJ1ZmZlci4uLiIKKyAgICAgICAgICAgICAgICAgIGlidWZmZXIt ZmlsdGVyLWJ5LXZpc2l0aW5nLWZpbGUKKyAgICAgICAgICAgICAgICAgIDpoZWxwICJMaXN0IGJ1 ZmZlcnMgdGhhdCBhcmUgdmlzaXRpbmcgZmlsZXMiKSkKICAgICAoZGVmaW5lLWtleS1hZnRlciBt YXAgW21lbnUtYmFyIHZpZXcgZmlsdGVyIGZpbHRlci1ieS1jb250ZW50XQogICAgICAgJyhtZW51 LWl0ZW0gIkFkZCBmaWx0ZXIgYnkgY29udGVudCAocmVnZXhwKS4uLiIKICAgICAgICAgaWJ1ZmZl ci1maWx0ZXItYnktY29udGVudCkpCmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvaWJ1ZmZlci10ZXN0 cy5lbCBiL3Rlc3QvbGlzcC9pYnVmZmVyLXRlc3RzLmVsCmluZGV4IGFhMDY5OTQuLmU3NDdiYWIg MTAwNjQ0Ci0tLSBhL3Rlc3QvbGlzcC9pYnVmZmVyLXRlc3RzLmVsCisrKyBiL3Rlc3QvbGlzcC9p YnVmZmVyLXRlc3RzLmVsCkBAIC02Niw3ICs2Niw3IEBACiAgICAgICAgICAgIkNyZWF0ZSBhIGZp bGUgYW5kIGJ1ZmZlciB3aXRoIGRlc2lnbmF0ZWQgcHJvcGVydGllcy4KICAgICAgICAgUFJFRklY IGlzIGEgc3RyaW5nIGdpdmluZyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuYW1lLCBhbmQgQVJHUy1Q TElTVAogICAgICAgICBpcyBhIHNlcmllcyBvZiBrZXl3b3JkLXZhbHVlIHBhaXJzLCB3aXRoIGFs bG93ZWQga2V5d29yZHMKLSAgICAgICAgOnN1ZmZpeCBTVFJJTkcsIDpzaXplIE5VTUJFUiwgOm1v ZGUgTU9ERS1GVU5DLCA6aW5jbHVkZS1jb250ZW50IFNUUklORy4gIAorICAgICAgICA6c3VmZml4 IFNUUklORywgOnNpemUgTlVNQkVSLCA6bW9kZSBNT0RFLUZVTkMsIDppbmNsdWRlLWNvbnRlbnQg U1RSSU5HLgogICAgICAgICBSZXR1cm5zIHRoZSBjcmVhdGVkIGJ1ZmZlci4iCiAgICAgICAgICAg KGxldCogKChzdWZmaXggIChwbGlzdC1nZXQgYXJncy1wbGlzdCA6c3VmZml4KSkKICAgICAgICAg ICAgICAgICAgKHNpemUgICAgKHBsaXN0LWdldCBhcmdzLXBsaXN0IDpzaXplKSkKQEAgLTgwLDcg KzgwLDcgQEAKICAgICAgICAgICAgIGJ1ZikpKQogICAgICAgIChjcmVhdGUtbm9uLWZpbGUtYnVm ZmVyCiAgICAgICAgIChsYW1iZGEgKHByZWZpeCAmcmVzdCBhcmdzLXBsaXN0KQotICAgICAgICAg ICJDcmVhdGUgYSBmaWxlIGFuZCBidWZmZXIgd2l0aCBkZXNpZ25hdGVkIHByb3BlcnRpZXMuCisg ICAgICAgICAgIkNyZWF0ZSBhIG5vbi1maWxlIGFuZCBidWZmZXIgd2l0aCBkZXNpZ25hdGVkIHBy b3BlcnRpZXMuCiAgICAgICAgIFBSRUZJWCBpcyBhIHN0cmluZyBnaXZpbmcgdGhlIGJlZ2lubmlu ZyBvZiB0aGUgbmFtZSwgYW5kIEFSR1MtUExJU1QKICAgICAgICAgaXMgYSBzZXJpZXMgb2Yga2V5 d29yZC12YWx1ZSBwYWlycywgd2l0aCBhbGxvd2VkIGtleXdvcmRzCiAgICAgICAgIDpzaXplIE5V TUJFUiwgOm1vZGUgTU9ERS1GVU5DLCA6aW5jbHVkZS1jb250ZW50IFNUUklORy4KQEAgLTEyOCwx MiArMTI4LDEyIEBACiAgICAgICAgICAgICAgICAgICAgYnVmICcoKGFuZCAoc2l6ZS1ndCAuIDk5 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRlbnQgLiAicmluZyB0byBydWxl IHRoZW0gYWxsIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlIC4gZnVuZGFt ZW50YWwtbW9kZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlbmFtZS1iYXNl IC4gIlxcYGlidWYtdGVzdC0xIikpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo YmFzZW5hbWUgLiAiXFxgaWJ1Zi10ZXN0LTEiKSkpKSkKICAgICAgICAgICAoc2hvdWxkIChpYnVm ZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAogICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChub3Qg KG9yIChub3QgKHNpemUtZ3QgLiA5OSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG5vdCAoY29udGVudCAuICJyaW5nIHRvIHJ1bGUgdGhlbSBhbGwiKSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobm90IChtb2RlIC4gZnVuZGFtZW50YWwtbW9kZSkpCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoZmlsZW5hbWUtYmFzZSAuICJc XGBpYnVmLXRlc3QtMSIpKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG5vdCAoYmFzZW5hbWUgLiAiXFxgaWJ1Zi10ZXN0LTEiKSkpKSkpKQogICAgICAgICAgIChzaG91 bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCiAgICAgICAgICAgICAgICAgICAgYnVm ICcoKGFuZCAob3IgKHNpemUtZ3QgLiA5OSkgKHNpemUtbHQgLiAxMCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoYW5kIChjb250ZW50IC4gInJpbmcuKmFsbCIpCkBAIC0xNDEsOSAr MTQxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnRlbnQgLiAi dGhlbSBhbGwiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGVudCAu ICJPbmUiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKG1vZGUgLiB0ZXh0 LW1vZGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVuYW1lLWJhc2UgLiAi XFxgaWJ1Zi10ZXN0LTEiKSkpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFz ZW5hbWUgLiAiXFxgaWJ1Zi10ZXN0LTEiKSkpKSkpCiAgICAgICAoZnVuY2FsbCBjbGVhbi11cCkp KQotICAKKwogICAoZXJ0LWRlZnRlc3QgaWJ1ZmZlci1maWx0ZXItaW5jbHVzaW9uLTIgKCkKICAg ICAiVGVzdHMgaW5jbHVzaW9uIG9mIGJhc2ljIGZpbHRlcnMgaW4gY29tYmluYXRpb24gb24gYSBz aW5nbGUgYnVmZmVyLiIKICAgICAoc2tpcC11bmxlc3MgKGZlYXR1cmVwICdpYnVmLWV4dCkpCkBA IC0xNTIsNyArMTUyLDYgQEAKICAgICAgICAgICAgICAgIChmdW5jYWxsIGNyZWF0ZS1maWxlLWJ1 ZmZlciAiaWJ1Zi10ZXN0LTIiIDpzaXplIDIwMAogICAgICAgICAgICAgICAgICAgICAgICAgOm1v ZGUgIyd0ZXh0LW1vZGUKICAgICAgICAgICAgICAgICAgICAgICAgIDppbmNsdWRlLWNvbnRlbnQg ImFuZCBpbiB0aGUgZGFya25lc3MgZmluZCB0aGVtXG4iKSkpCi0gICAgICAgICAgKG1lc3NhZ2Ug Ii0tPiAlcyIgYnVmKQogICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmls dGVycy1wIGJ1ZiAnKChzaXplLWd0IC4gMTk5KSkpKQogICAgICAgICAgIChzaG91bGQgKGlidWZm ZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wIGJ1ZiAnKChzaXplLWx0IC4gMjAxKSkpKQogICAgICAg ICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wIGJ1ZiAnKChub3Qgc2l6 ZS1ndCAuIDIwMCkpKSkKQEAgLTE3Nyw4ICsxNzYsNyBAQAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZGVyaXZlZC1tb2RlIC4gZW1hY3MtbGlzcC1tb2RlKSkpKSkKICAgICAgICAgICAo c2hvdWxkLW5vdCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKICAgICAgICAgICAgICAg ICAgICAgICAgYnVmICcoKG9yIChzaXplLWd0IC4gMjAwKSAoY29udGVudCAuICJydWxlIHRoZW0g YWxsIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXJpdmVkLW1vZGUgLiBl bWFjcy1saXNwLW1vZGUpKSkpKQotICAgICAgICAgIChtZXNzYWdlICItLT4gJXMiIGJ1ZikpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVyaXZlZC1tb2RlIC4gZW1hY3MtbGlz cC1tb2RlKSkpKSkpCiAgICAgICAoZnVuY2FsbCBjbGVhbi11cCkpKQogCiAgIChlcnQtZGVmdGVz dCBpYnVmZmVyLWZpbHRlci1pbmNsdXNpb24tMyAoKQpAQCAtMTk2LDIzICsxOTQsMTkgQEAKICAg ICAgICAgICAgICAgIChkaXJBICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZkEgZGVmYXVsdC1kaXJl Y3RvcnkpKQogICAgICAgICAgICAgICAgKGRpckIgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmQiBk ZWZhdWx0LWRpcmVjdG9yeSkpKQogICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQt aW4tZmlsdGVycy1wCi0gICAgICAgICAgICAgICAgICAgYnVmQSAnKChmaWxlbmFtZS1iYXNlIC4g ImlidWYtdGVzdC0zIikpKSkKLSAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWlu LWZpbHRlcnMtcAotICAgICAgICAgICAgICAgICAgIGJ1ZkEgJygoZmlsZW5hbWUtcm9vdCAuICJp YnVmLXRlc3QtMyIpKSkpCisgICAgICAgICAgICAgICAgICAgYnVmQSAnKChiYXNlbmFtZSAuICJp YnVmLXRlc3QtMyIpKSkpCiAgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1m aWx0ZXJzLXAKLSAgICAgICAgICAgICAgICAgICBidWZBICcoKGZpbGVuYW1lLWJhc2UgLiAidGVz dC0zXFwuYSIpKSkpCisgICAgICAgICAgICAgICAgICAgYnVmQSAnKChiYXNlbmFtZSAuICJ0ZXN0 LTNcXC5hIikpKSkKICAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRl cnMtcAotICAgICAgICAgICAgICAgICAgIGJ1ZkEgJygoZmlsZW5hbWUtZXh0ZW5zaW9uIC4gImEi KSkpKQorICAgICAgICAgICAgICAgICAgIGJ1ZkEgJygoZmlsZS1leHRlbnNpb24gLiAiYSIpKSkp CiAgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKLSAgICAg ICAgICAgICAgICAgICBidWZBIChsaXN0IChjb25zICdmaWxlbmFtZS1kaXJlY3RvcnkgZGlyQSkp KSkKKyAgICAgICAgICAgICAgICAgICBidWZBIChsaXN0IChjb25zICdkaXJlY3RvcnkgZGlyQSkp KSkKICAgICAgICAgICAoc2hvdWxkLW5vdCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAK LSAgICAgICAgICAgICAgICAgICAgICAgYnVmQiAnKChmaWxlbmFtZS1iYXNlIC4gImlidWYtdGVz dC0zIikpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgYnVmQiAnKChiYXNlbmFtZSAuICJpYnVm LXRlc3QtMyIpKSkpCiAgICAgICAgICAgKHNob3VsZC1ub3QgKGlidWZmZXItaW5jbHVkZWQtaW4t ZmlsdGVycy1wCi0gICAgICAgICAgICAgICAgICAgICAgIGJ1ZkIgJygoZmlsZW5hbWUtcm9vdCAu ICJpYnVmLXRlc3QtMyIpKSkpCi0gICAgICAgICAgKHNob3VsZC1ub3QgKGlidWZmZXItaW5jbHVk ZWQtaW4tZmlsdGVycy1wCi0gICAgICAgICAgICAgICAgICAgICAgIGJ1ZkIgJygoZmlsZW5hbWUt ZXh0ZW5zaW9uIC4gImIiKSkpKQotICAgICAgICAgIChzaG91bGQtbm90IChpYnVmZmVyLWluY2x1 ZGVkLWluLWZpbHRlcnMtcAotICAgICAgICAgICAgICAgICAgICAgICBidWZCIChsaXN0IChjb25z ICdmaWxlbmFtZS1kaXJlY3RvcnkgZGlyQikpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgYnVm QiAnKChmaWxlLWV4dGVuc2lvbiAuICJiIikpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVy LWluY2x1ZGVkLWluLWZpbHRlcnMtcCAKKyAgICAgICAgICAgICAgICAgICBidWZCIChsaXN0IChj b25zICdkaXJlY3RvcnkgZGlyQikpKSkKICAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1 ZGVkLWluLWZpbHRlcnMtcAogICAgICAgICAgICAgICAgICAgIGJ1ZkEgJygobmFtZSAuICJpYnVm LXRlc3QtMyIpKSkpCiAgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0 ZXJzLXAKQEAgLTIyOCw3ICsyMjIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgOm1vZGUg IydlbWFjcy1saXNwLW1vZGUgOnN1ZmZpeCAiLmVsIgogICAgICAgICAgICAgICAgICAgICAgICAg OmluY2x1ZGUtY29udGVudCAiKG1lc3NhZ2UgXCItLSVzLS1cIiAnZW1hY3Mtcm9ja3MpXG4iKSkp CiAgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKLSAgICAg ICAgICAgICAgICAgICBidWYgJygoZmlsZW5hbWUtZXh0ZW5zaW9uIC4gImVsIikpKSkKKyAgICAg ICAgICAgICAgICAgICBidWYgJygoZmlsZS1leHRlbnNpb24gLiAiZWwiKSkpKQogICAgICAgICAg IChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCiAgICAgICAgICAgICAgICAg ICAgYnVmICcoKGRlcml2ZWQtbW9kZSAuIHByb2ctbW9kZSkpKSkKICAgICAgICAgICAoc2hvdWxk IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcApAQCAtMjQwLDE1ICsyMzQsMTUgQEAKICAg ICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWYgKHNldC1idWZmZXItbW9kaWZpZWQtcCBu aWwpKQogICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wIGJ1 ZiAnKChub3QgbW9kaWZpZWQpKSkpCiAgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNsdWRl ZC1pbi1maWx0ZXJzLXAKLSAgICAgICAgICAgICAgICAgICBidWYgJygoYW5kIChmaWxlbmFtZS1l eHRlbnNpb24gLiAiZWwiKQorICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChhbmQgKGZpbGUtZXh0 ZW5zaW9uIC4gImVsIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXJpdmVkLW1v ZGUgLiBwcm9nLW1vZGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IG1vZGlm aWVkKSkpKSkKICAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMt cAotICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChvciAoZmlsZW5hbWUtZXh0ZW5zaW9uIC4gInRl eCIpCisgICAgICAgICAgICAgICAgICAgYnVmICcoKG9yIChmaWxlLWV4dGVuc2lvbiAuICJ0ZXgi KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVyaXZlZC1tb2RlIC4gcHJvZy1tb2Rl KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kaWZpZWQpKSkpKQogICAgICAgICAg IChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCi0gICAgICAgICAgICAgICAg ICAgYnVmICcoKGZpbGVuYW1lLWV4dGVuc2lvbiAuICJlbCIpCisgICAgICAgICAgICAgICAgICAg YnVmICcoKGZpbGUtZXh0ZW5zaW9uIC4gImVsIikKICAgICAgICAgICAgICAgICAgICAgICAgICAo ZGVyaXZlZC1tb2RlIC4gcHJvZy1tb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgIChub3Qg bW9kaWZpZWQpKSkpKQogICAgICAgKGZ1bmNhbGwgY2xlYW4tdXApKSkKQEAgLTI1OSwxMSArMjUz LDExIEBACiAgICAgKHVud2luZC1wcm90ZWN0CiAgICAgICAgIChsZXQgKChidWYKICAgICAgICAg ICAgICAgIChmdW5jYWxsIGNyZWF0ZS1ub24tZmlsZS1idWZmZXIgImlidWYtdGVzdC01LmVsIgot ICAgICAgICAgICAgICAgICAgICAgICAgOm1vZGUgIydlbWFjcy1saXNwLW1vZGUgCisgICAgICAg ICAgICAgICAgICAgICAgICA6bW9kZSAjJ2VtYWNzLWxpc3AtbW9kZQogICAgICAgICAgICAgICAg ICAgICAgICAgOmluY2x1ZGUtY29udGVudAogICAgICAgICAgICAgICAgICAgICAgICAgIihtZXNz YWdlIFwiLS0lcy0tXCIgXCJJdCByZWFsbHkgZG9lcyFcIilcbiIpKSkKICAgICAgICAgICAoc2hv dWxkLW5vdCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKLSAgICAgICAgICAgICAgICAg ICAgICAgYnVmICcoKGZpbGVuYW1lLWV4dGVuc2lvbiAuICJlbCIpKSkpCisgICAgICAgICAgICAg ICAgICAgICAgIGJ1ZiAnKChmaWxlLWV4dGVuc2lvbiAuICJlbCIpKSkpCiAgICAgICAgICAgKHNo b3VsZCAoaWJ1ZmZlci1pbmNsdWRlZC1pbi1maWx0ZXJzLXAKICAgICAgICAgICAgICAgICAgICBi dWYgJygoc2l6ZS1ndCAuIDE4KSkpKQogICAgICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVk ZWQtaW4tZmlsdGVycy1wCkBAIC0zMzQsMTcgKzMyOCw1NyBAQAogICAgICAgKGZ1bmNhbGwgY2xl YW4tdXApKSkKIAogICAoZXJ0LWRlZnRlc3QgaWJ1ZmZlci1maWx0ZXItaW5jbHVzaW9uLTggKCkK LSAgICAiVGVzdHMgaW5jbHVzaW9uIHdpdGggdmFyaW91cyBmaWx0ZXJzIG9uIGEgc2luZ2xlIGJ1 ZmZlci4iCisgICAgIlRlc3RzIGluY2x1c2lvbiB3aXRoIHZhcmlvdXMgZmlsdGVycy4iCiAgICAg KHNraXAtdW5sZXNzIChmZWF0dXJlcCAnaWJ1Zi1leHQpKQogICAgICh1bndpbmQtcHJvdGVjdAot ICAgICAgICAobGV0ICgoYnVmCi0gICAgICAgICAgICAgICAoZnVuY2FsbCBjcmVhdGUtbm9uLWZp bGUtYnVmZmVyICJpYnVmLXRlc3QtOCIKLSAgICAgICAgICAgICAgICAgICAgICAgIDptb2RlICMn YXJ0aXN0LW1vZGUpKSkKLSAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZp bHRlcnMtcAotICAgICAgICAgICAgICAgICAgIGJ1ZiAnKChhbmQgKG5vdCAoc3RhcnJlZC1uYW1l KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lIC4gInRlc3QtOCIpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChzaXplLWd0IC4gMTAwKSkKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChtb2RlIC4gcGljdHVyZS1tb2RlKSkpKSkpCisgICAgICAg IChsZXQgKChidWZBCisgICAgICAgICAgICAgICAoZnVuY2FsbCBjcmVhdGUtbm9uLWZpbGUtYnVm ZmVyICJpYnVmLXRlc3QtOGEiCisgICAgICAgICAgICAgICAgICAgICAgICA6bW9kZSAjJ2FydGlz dC1tb2RlKSkKKyAgICAgICAgICAgICAgKGJ1ZkIgKGZ1bmNhbGwgY3JlYXRlLW5vbi1maWxlLWJ1 ZmZlciAiKmlidWYtdGVzdC04YioiIDpzaXplIDMyKSkKKyAgICAgICAgICAgICAgKGJ1ZkMgKGZ1 bmNhbGwgY3JlYXRlLWZpbGUtYnVmZmVyICJpYnVmLXRlc3Q4YyIgOnN1ZmZpeCAiKiIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOnNpemUgNjQpKQorICAgICAgICAgICAgICAoYnVmRCAo ZnVuY2FsbCBjcmVhdGUtZmlsZS1idWZmZXIgIippYnVmLXRlc3Q4ZCIgOnNpemUgMTI4KSkKKyAg ICAgICAgICAgICAgKGJ1ZkUgKGZ1bmNhbGwgY3JlYXRlLWZpbGUtYnVmZmVyICIqaWJ1Zi10ZXN0 OGUiIDpzdWZmaXggIio8Mj4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpzaXplIDE2 KSkKKyAgICAgICAgICAgICAgKGJ1ZkYgKGFuZCAoZnVuY2FsbCBjcmVhdGUtbm9uLWZpbGUtYnVm ZmVyICIqaWJ1Zi10ZXN0OGYqIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBj cmVhdGUtbm9uLWZpbGUtYnVmZmVyICIqaWJ1Zi10ZXN0OGYqIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDpzaXplIDgpKSkpCisgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZm ZXIgYnVmQSAoc2V0LWJ1ZmZlci1tb2RpZmllZC1wIHQpKQorICAgICAgICAgIChzaG91bGQgKGli dWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmQSAnKChh bmQgKG5vdCBzdGFycmVkLW5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1v ZGlmaWVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lIC4gInRlc3QtOCIp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoc2l6ZS1ndCAuIDEwMCkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGUgLiBwaWN0dXJlLW1vZGUpKSkpKQor ICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZkEgKHNldC1idWZmZXItbW9kaWZpZWQt cCBuaWwpKQorICAgICAgICAgIChzaG91bGQtbm90IChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRl cnMtcAorICAgICAgICAgICAgICAgICAgICAgICBidWZBICcoKG9yIChzdGFycmVkLW5hbWUpICh2 aXNpdGluZy1maWxlKSAobW9kaWZpZWQpKSkpKQorICAgICAgICAgIChzaG91bGQgKGlidWZmZXIt aW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAgICAgICAgICAgYnVmQiAnKChhbmQgKHN0 YXJyZWQtbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSAuICJ0ZXN0 Lio4YiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNpemUtZ3QgLiAzMSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IHZpc2l0aW5nLWZpbGUpKSkpKQorICAg ICAgICAgIChzaG91bGQgKGlidWZmZXItaW5jbHVkZWQtaW4tZmlsdGVycy1wCisgICAgICAgICAg ICAgICAgICAgYnVmQyAnKChhbmQgKG5vdCAoc3RhcnJlZC1uYW1lKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAodmlzaXRpbmctZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAobmFtZSAuICI4Y1teKl0qXFwqIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2l6ZS1sdCAuIDY1KSkpKSkKKyAgICAgICAgICAoc2hvdWxkIChpYnVmZmVyLWluY2x1 ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAgICAgIGJ1ZkQgJygoYW5kIChub3QgKHN0 YXJyZWQtbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZpc2l0aW5nLWZp bGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgLiAiXFxgXFwqLip0ZXN0 OGQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaXplLWx0IC4gMTI5KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaXplLWd0IC4gMTI3KSkpKSkKKyAgICAgICAg ICAoc2hvdWxkIChpYnVmZmVyLWluY2x1ZGVkLWluLWZpbHRlcnMtcAorICAgICAgICAgICAgICAg ICAgIGJ1ZkUgJygoYW5kIChzdGFycmVkLW5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHZpc2l0aW5nLWZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5h bWUgLiAiOGUuKj9cXCo8W1s6ZGlnaXQ6XV0rPiIpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHNpemUtZ3QgLiAxMCkpKSkpCisgICAgICAgICAgKHNob3VsZCAoaWJ1ZmZlci1pbmNs dWRlZC1pbi1maWx0ZXJzLXAKKyAgICAgICAgICAgICAgICAgICBidWZGICcoKGFuZCAoc3RhcnJl ZC1uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKHZpc2l0aW5nLWZp bGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lIC4gIjhmXFwqPFtbOmRp Z2l0Ol1dPiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNpemUtbHQgLiAxMCkp KSkpKQogICAgICAgKGZ1bmNhbGwgY2xlYW4tdXApKSkpCiAKIDs7IFRlc3QgRmlsdGVyIENvbWJp bmF0aW9uIGFuZCBEZWNvbXBvc2l0aW9uCkBAIC0zNzEsNyArNDA1LDcgQEAKICAgICAgICAoY2xl YW4tdXAKICAgICAgICAgKGxhbWJkYSAoKQogICAgICAgICAgICJSZXN0b3JlIGFsbCBlbWFjcyBz dGF0ZSBtb2RpZmllZCBkdXJpbmcgdGhlIHRlc3RzIgotICAgICAgICAgICh3aGVuIGlidWZmZXIt dG8ta2lsbCAgICAgICAgIDsgY3JlYXRlZCBpYnVmZmVyIAorICAgICAgICAgICh3aGVuIGlidWZm ZXItdG8ta2lsbCAgICAgICAgIDsgY3JlYXRlZCBpYnVmZmVyCiAgICAgICAgICAgICAod2l0aC1j dXJyZW50LWJ1ZmZlciBpYnVmZmVyLXRvLWtpbGwKICAgICAgICAgICAgICAgKHNldC1idWZmZXIt bW9kaWZpZWQtcCBuaWwpCiAgICAgICAgICAgICAgIChidXJ5LWJ1ZmZlcikpCkBAIC00MzgsNyAr NDcyLDggQEAKICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBpYnVmCiAgICAgICAgICAg ICAobGV0ICgoaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycyBuaWwpCiAgICAgICAgICAgICAg ICAgICAoaWJ1ZmZlci1maWx0ZXItZ3JvdXBzIG5pbCkKLSAgICAgICAgICAgICAgICAgIChmaWx0 ZXJzIFsoc2l6ZS1ndCAuIDEwMCkgKG5vdCAoc3RhcnJlZC1uYW1lKSldKSkKKyAgICAgICAgICAg ICAgICAgIChmaWx0ZXJzIFsoc2l6ZS1ndCAuIDEwMCkgKG5vdCAoc3RhcnJlZC1uYW1lKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZW5hbWUgLiAiQSIpIChtb2RlIC4gdGV4dC1t b2RlKV0pKQogICAgICAgICAgICAgICAoc2hvdWxkLWVycm9yIChpYnVmZmVyLWFuZC1maWx0ZXIp IDp0eXBlICdlcnJvcikKICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgKHB1 c2ggKGFyZWYgZmlsdGVycyAxKSBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQpAQCAtNDU1 LDkgKzQ5MCw1NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvcCBp YnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGVxdWFsIChhcmVmIGZpbHRlcnMgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwb3AgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChudWxsIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkpKSkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsIGlidWZmZXItZmlsdGVyaW5nLXF1 YWxpZmllcnMpKSkpCisgICAgICAgICAgICAgIChzaG91bGQgKHByb2duCisgICAgICAgICAgICAg ICAgICAgICAgICAocHVzaCAobGlzdCAnYW5kIChhcmVmIGZpbHRlcnMgMikgKGFyZWYgZmlsdGVy cyAzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidWZmZXItZmlsdGVyaW5nLXF1 YWxpZmllcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCAobGlzdCAnYW5kIChhcmVm IGZpbHRlcnMgMCkgKGFyZWYgZmlsdGVycyAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCisgICAgICAgICAgICAgICAgICAgICAg ICAoaWJ1ZmZlci1hbmQtZmlsdGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAoZXF1 YWwgKGxpc3QgJ2FuZCAoYXJlZiBmaWx0ZXJzIDApIChhcmVmIGZpbHRlcnMgMSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVmIGZpbHRlcnMgMikgKGFyZWYg ZmlsdGVycyAzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIgaWJ1 ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChudWxsIChjZHIgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKSkpCisgICAgICAgICAg ICAgIChwb3AgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAgKHNo b3VsZCAocHJvZ24KKyAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChsaXN0ICdvciAoYXJl ZiBmaWx0ZXJzIDIpIChhcmVmIGZpbHRlcnMgMykpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAgICAgICAg ICAgKHB1c2ggKGxpc3QgJ2FuZCAoYXJlZiBmaWx0ZXJzIDApIChhcmVmIGZpbHRlcnMgMSkpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJz KQorICAgICAgICAgICAgICAgICAgICAgICAgKGlidWZmZXItYW5kLWZpbHRlcikKKyAgICAgICAg ICAgICAgICAgICAgICAgIChhbmQgKGVxdWFsIChsaXN0ICdhbmQgKGFyZWYgZmlsdGVycyAwKSAo YXJlZiBmaWx0ZXJzIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobGlzdCAnb3IgKGFyZWYgZmlsdGVycyAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGFyZWYgZmlsdGVycyAzKSkpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY2FyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnVsbCAoY2RyIGlidWZmZXItZmlsdGVyaW5n LXF1YWxpZmllcnMpKSkpKQorICAgICAgICAgICAgICAocG9wIGlidWZmZXItZmlsdGVyaW5nLXF1 YWxpZmllcnMpCisgICAgICAgICAgICAgIChzaG91bGQgKHByb2duCisgICAgICAgICAgICAgICAg ICAgICAgICAocHVzaCAobGlzdCAnYW5kIChhcmVmIGZpbHRlcnMgMikgKGFyZWYgZmlsdGVycyAz KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidWZmZXItZmlsdGVyaW5nLXF1YWxp ZmllcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCAobGlzdCAnb3IgKGFyZWYgZmls dGVycyAwKSAoYXJlZiBmaWx0ZXJzIDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAgICAgICAgICAgIChp YnVmZmVyLWFuZC1maWx0ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChlcXVhbCAo bGlzdCAnYW5kIChsaXN0ICdvciAoYXJlZiBmaWx0ZXJzIDApCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFyZWYgZmlsdGVycyAxKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVmIGZpbHRlcnMgMikgKGFy ZWYgZmlsdGVycyAzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIg aWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChudWxsIChjZHIgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKSkpCisgICAgICAg ICAgICAgIChwb3AgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAg KHNob3VsZCAocHJvZ24KKyAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChsaXN0ICdvciAo YXJlZiBmaWx0ZXJzIDIpIChhcmVmIGZpbHRlcnMgMykpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAgICAg ICAgICAgKHB1c2ggKGxpc3QgJ29yIChhcmVmIGZpbHRlcnMgMCkgKGFyZWYgZmlsdGVycyAxKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmll cnMpCisgICAgICAgICAgICAgICAgICAgICAgICAoaWJ1ZmZlci1hbmQtZmlsdGVyKQorICAgICAg ICAgICAgICAgICAgICAgICAgKGFuZCAoZXF1YWwgKGxpc3QgJ2FuZAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgJ29yIChhcmVmIGZpbHRlcnMgMCkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVmIGZpbHRl cnMgMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCAn b3IgKGFyZWYgZmlsdGVycyAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGFyZWYgZmlsdGVycyAzKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoY2FyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobnVsbCAoY2RyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmll cnMpKSkpKSkpKQogICAgICAgKGZ1bmNhbGwgY2xlYW4tdXApKSkKLSAgCisKICAgKGVydC1kZWZ0 ZXN0IGlidWZmZXItb3ItZmlsdGVyICgpCiAgICAgIlRlc3RzIGBpYnVmZmVyLW9yLWZpbHRlcicg aW4gYW4gSWJ1ZmZlciBidWZmZXIuIgogICAgIChza2lwLXVubGVzcyAoZmVhdHVyZXAgJ2lidWYt ZXh0KSkKQEAgLTQ2Niw3ICs1NDksOCBAQAogICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy IGlidWYKICAgICAgICAgICAgIChsZXQgKChpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzIG5p bCkKICAgICAgICAgICAgICAgICAgIChpYnVmZmVyLWZpbHRlci1ncm91cHMgbmlsKQotICAgICAg ICAgICAgICAgICAgKGZpbHRlcnMgWyhzaXplLWd0IC4gMTAwKSAobm90IChzdGFycmVkLW5hbWUp KV0pKQorICAgICAgICAgICAgICAgICAgKGZpbHRlcnMgWyhzaXplLWd0IC4gMTAwKSAobm90IChz dGFycmVkLW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlbmFtZSAuICJB IikgKG1vZGUgLiB0ZXh0LW1vZGUpXSkpCiAgICAgICAgICAgICAgIChzaG91bGQtZXJyb3IgKGli dWZmZXItb3ItZmlsdGVyKSA6dHlwZSAnZXJyb3IpCiAgICAgICAgICAgICAgIChwcm9nbgogICAg ICAgICAgICAgICAgIChwdXNoIChhcmVmIGZpbHRlcnMgMSkgaWJ1ZmZlci1maWx0ZXJpbmctcXVh bGlmaWVycykKQEAgLTQ4Myw3ICs1NjcsNTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwb3AgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChlcXVhbCAoYXJlZiBmaWx0ZXJzIDEpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAocG9wIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMp KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnVsbCBpYnVmZmVyLWZpbHRlcmluZy1x dWFsaWZpZXJzKSkpKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnVsbCBpYnVm ZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKSkpKQorICAgICAgICAgICAgICAoc2hvdWxkIChwcm9n bgorICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QgJ29yIChhcmVmIGZpbHRlcnMg MikgKGFyZWYgZmlsdGVycyAzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidWZm ZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCAo bGlzdCAnb3IgKGFyZWYgZmlsdGVycyAwKSAoYXJlZiBmaWx0ZXJzIDEpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAg ICAgICAgICAgICAgICAgIChpYnVmZmVyLW9yLWZpbHRlcikKKyAgICAgICAgICAgICAgICAgICAg ICAgIChhbmQgKGVxdWFsIChsaXN0ICdvciAoYXJlZiBmaWx0ZXJzIDApIChhcmVmIGZpbHRlcnMg MSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVmIGZpbHRl cnMgMikgKGFyZWYgZmlsdGVycyAzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChjYXIgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChudWxsIChjZHIgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykpKSkp CisgICAgICAgICAgICAgIChwb3AgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAg ICAgICAgICAgKHNob3VsZCAocHJvZ24KKyAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChs aXN0ICdhbmQgKGFyZWYgZmlsdGVycyAyKSAoYXJlZiBmaWx0ZXJzIDMpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWJ1ZmZlci1maWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAg ICAgICAgICAgICAgICAgIChwdXNoIChsaXN0ICdvciAoYXJlZiBmaWx0ZXJzIDApIChhcmVmIGZp bHRlcnMgMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVmZmVyLWZpbHRlcmlu Zy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgKGlidWZmZXItb3ItZmlsdGVy KQorICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAoZXF1YWwgKGxpc3QgJ29yIChhcmVmIGZp bHRlcnMgMCkgKGFyZWYgZmlsdGVycyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxpc3QgJ2FuZCAoYXJlZiBmaWx0ZXJzIDIpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJlZiBmaWx0ZXJzIDMpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIgaWJ1ZmZlci1maWx0ZXJpbmctcXVh bGlmaWVycykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsIChjZHIgaWJ1ZmZl ci1maWx0ZXJpbmctcXVhbGlmaWVycykpKSkpCisgICAgICAgICAgICAgIChwb3AgaWJ1ZmZlci1m aWx0ZXJpbmctcXVhbGlmaWVycykKKyAgICAgICAgICAgICAgKHNob3VsZCAocHJvZ24KKyAgICAg ICAgICAgICAgICAgICAgICAgIChwdXNoIChsaXN0ICdvciAoYXJlZiBmaWx0ZXJzIDIpIChhcmVm IGZpbHRlcnMgMykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVmZmVyLWZpbHRl cmluZy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKGxpc3QgJ2Fu ZCAoYXJlZiBmaWx0ZXJzIDApIChhcmVmIGZpbHRlcnMgMSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpYnVmZmVyLWZpbHRlcmluZy1xdWFsaWZpZXJzKQorICAgICAgICAgICAgICAg ICAgICAgICAgKGlidWZmZXItb3ItZmlsdGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgKGFu ZCAoZXF1YWwgKGxpc3QgJ29yIChsaXN0ICdhbmQgKGFyZWYgZmlsdGVycyAwKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmVmIGZpbHRlcnMg MSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJlZiBmaWx0 ZXJzIDIpIChhcmVmIGZpbHRlcnMgMykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY2FyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobnVsbCAoY2RyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpKSkp KQorICAgICAgICAgICAgICAocG9wIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCisgICAg ICAgICAgICAgIChzaG91bGQgKHByb2duCisgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCAo bGlzdCAnYW5kIChhcmVmIGZpbHRlcnMgMikgKGFyZWYgZmlsdGVycyAzKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMpCisgICAgICAg ICAgICAgICAgICAgICAgICAocHVzaCAobGlzdCAnYW5kIChhcmVmIGZpbHRlcnMgMCkgKGFyZWYg ZmlsdGVycyAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlidWZmZXItZmlsdGVy aW5nLXF1YWxpZmllcnMpCisgICAgICAgICAgICAgICAgICAgICAgICAoaWJ1ZmZlci1vci1maWx0 ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChlcXVhbCAobGlzdCAnb3IKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0ICdhbmQgKGFyZWYgZmls dGVycyAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGFyZWYgZmlsdGVycyAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChsaXN0ICdhbmQgKGFyZWYgZmlsdGVycyAyKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGFyZWYgZmlsdGVycyAzKSkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoY2FyIGlidWZmZXItZmlsdGVyaW5nLXF1YWxpZmllcnMp KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnVsbCAoY2RyIGlidWZmZXItZmlsdGVy aW5nLXF1YWxpZmllcnMpKSkpKSkpKQogICAgICAgKGZ1bmNhbGwgY2xlYW4tdXApKSkpCiAKIChl cnQtZGVmdGVzdCBpYnVmZmVyLXNhdmUtZmlsdGVycyAoKQpAQCAtNDk0LDE0ICs2MjYsMTQgQEAK ICAgICAgICAgKHRlc3QxICcoKG1vZGUgLiBvcmctbW9kZSkKICAgICAgICAgICAgICAgICAgKG9y IChzaXplLWd0IC4gMTAwMDApCiAgICAgICAgICAgICAgICAgICAgICAoYW5kIChub3QgKHN0YXJy ZWQtbmFtZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlbmFtZS1kaXJlY3Rvcnkg LiAiXDxvcmdcPiIpKSkpKQotICAgICAgICAodGVzdDIgJygob3IgKG1vZGUgLiBlbWFjcy1saXNw LW1vZGUpIChmaWxlbmFtZS1leHRlbnNpb24gLiAiZWxjPyIpCisgICAgICAgICAgICAgICAgICAg ICAgICAgIChkaXJlY3RvcnkgLiAiXDxvcmdcPiIpKSkpKQorICAgICAgICAodGVzdDIgJygob3Ig KG1vZGUgLiBlbWFjcy1saXNwLW1vZGUpIChmaWxlLWV4dGVuc2lvbiAuICJlbGM/IikKICAgICAg ICAgICAgICAgICAgICAgIChhbmQgKHN0YXJyZWQtbmFtZSkgKG5hbWUgLiAiZWxpc3AiKSkKICAg ICAgICAgICAgICAgICAgICAgIChtb2RlIC4gbGlzcC1pbnRlcmFjdGlvbi1tb2RlKSkpKQogICAg ICAgICAodGVzdDMgJygoc2l6ZS1sdCAuIDEwMCkgKGRlcml2ZWQtbW9kZSAuIHByb2ctbW9kZSkK LSAgICAgICAgICAgICAgICAgKG9yIChmaWxlbmFtZS1yb290IC4gInNjcmF0Y2giKQotICAgICAg ICAgICAgICAgICAgICAgKGZpbGVuYW1lLXJvb3QgLiAiYm9ueiIpCi0gICAgICAgICAgICAgICAg ICAgICAoZmlsZW5hbWUtcm9vdCAuICJ0ZW1wIikpKSkpCisgICAgICAgICAgICAgICAgIChvciAo ZmlsZW5hbWUgLiAic2NyYXRjaCIpCisgICAgICAgICAgICAgICAgICAgICAoZmlsZW5hbWUgLiAi Ym9ueiIpCisgICAgICAgICAgICAgICAgICAgICAoZmlsZW5hbWUgLiAidGVtcCIpKSkpKQogICAg IChpYnVmZmVyLXNhdmUtZmlsdGVycyAidGVzdDEiIHRlc3QxKQogICAgIChzaG91bGQgKGVxdWFs IChjYXIgaWJ1ZmZlci1zYXZlZC1maWx0ZXJzKSAoY29ucyAidGVzdDEiIHRlc3QxKSkpCiAgICAg KGlidWZmZXItc2F2ZS1maWx0ZXJzICJ0ZXN0MiIgdGVzdDIpCkBAIC01MjMsMTEgKzY1NSwxMSBA QAogICAgICAgICAodGVzdDMgJyhkZXJpdmVkLW1vZGUgLiBwcm9nLW1vZGUpKQogICAgICAgICAo dGVzdDQgJyhvciAoc2l6ZS1ndCAuIDEwMDAwKQogICAgICAgICAgICAgICAgICAgICAoYW5kIChu b3QgKHN0YXJyZWQtbmFtZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVuYW1lLWRp cmVjdG9yeSAuICJcXDxvcmdcXD4iKSkpKQotICAgICAgICAodGVzdDUgJyhvciAoZmlsZW5hbWUt cm9vdCAuICJzY3JhdGNoIikKLSAgICAgICAgICAgICAgICAgICAgKGZpbGVuYW1lLXJvb3QgLiAi Ym9ueiIpCi0gICAgICAgICAgICAgICAgICAgIChmaWxlbmFtZS1yb290IC4gInRlbXAiKSkpCi0g ICAgICAgICh0ZXN0NiAnKG9yIChtb2RlIC4gZW1hY3MtbGlzcC1tb2RlKSAoZmlsZW5hbWUtZXh0 ZW5zaW9uIC4gImVsYz8iKQorICAgICAgICAgICAgICAgICAgICAgICAgIChkaXJlY3RvcnkgLiAi XFw8b3JnXFw+IikpKSkKKyAgICAgICAgKHRlc3Q1ICcob3IgKGZpbGVuYW1lIC4gInNjcmF0Y2gi KQorICAgICAgICAgICAgICAgICAgICAoZmlsZW5hbWUgLiAiYm9ueiIpCisgICAgICAgICAgICAg ICAgICAgIChmaWxlbmFtZSAuICJ0ZW1wIikpKQorICAgICAgICAodGVzdDYgJyhvciAobW9kZSAu IGVtYWNzLWxpc3AtbW9kZSkgKGZpbGUtZXh0ZW5zaW9uIC4gImVsYz8iKQogICAgICAgICAgICAg ICAgICAgICAoYW5kIChzdGFycmVkLW5hbWUpIChuYW1lIC4gImVsaXNwIikpCiAgICAgICAgICAg ICAgICAgICAgIChtb2RlIC4gbGlzcC1pbnRlcmFjdGlvbi1tb2RlKSkpCiAgICAgICAgIChkZXNj cmlwdGlvbiAobGFtYmRhIChxKQpAQCAtNTU0LDIxICs2ODYsMjEgQEAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhcnJl ZC1uYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICI6ICIgIm5pbCIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChmdW5jYWxsIHRhZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChmdW5jYWxsIGRlc2NyaXB0aW9uICdmaWxlbmFtZS1kaXJlY3RvcnkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgZGVzY3JpcHRpb24g J2RpcmVjdG9yeSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiOiAiICJcXDxvcmdcXD4iKSkpKSkKICAgICAoc2hvdWxkIChlcXVhbCAoaWJ1ZmZlci1mb3Jt YXQtcXVhbGlmaWVyIHRlc3Q1KQogICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIHRhZyAiT1Ii Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgdGFnIChmdW5jYWxsIGRlc2Ny aXB0aW9uICdmaWxlbmFtZS1yb290KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5j YWxsIHRhZyAoZnVuY2FsbCBkZXNjcmlwdGlvbiAnZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIjogIiAgInNjcmF0Y2giKQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChmdW5jYWxsIHRhZyAoZnVuY2FsbCBkZXNjcmlwdGlvbiAnZmlsZW5hbWUtcm9v dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCB0YWcgKGZ1bmNhbGwgZGVz Y3JpcHRpb24gJ2ZpbGVuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICI6ICIgImJvbnoiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIHRhZyAo ZnVuY2FsbCBkZXNjcmlwdGlvbiAnZmlsZW5hbWUtcm9vdCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZnVuY2FsbCB0YWcgKGZ1bmNhbGwgZGVzY3JpcHRpb24gJ2ZpbGVuYW1lKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6ICIgInRlbXAiKSkpKQogICAgIChz aG91bGQgKGVxdWFsIChpYnVmZmVyLWZvcm1hdC1xdWFsaWZpZXIgdGVzdDYpCiAgICAgICAgICAg ICAgICAgICAgKGZ1bmNhbGwgdGFnICJPUiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo ZnVuY2FsbCB0YWcgKGZ1bmNhbGwgZGVzY3JpcHRpb24gJ21vZGUpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIjogIiAiZW1hY3MtbGlzcC1tb2RlIikKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZnVuY2FsbCB0YWcgKGZ1bmNhbGwgZGVzY3JpcHRpb24gJ2ZpbGVu YW1lLWV4dGVuc2lvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCB0YWcg KGZ1bmNhbGwgZGVzY3JpcHRpb24gJ2ZpbGUtZXh0ZW5zaW9uKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICI6ICIgImVsYz8iKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChmdW5jYWxsIHRhZyAiQU5EIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChmdW5jYWxsIHRhZwotLSAKMi4xMC4wCgo= --001a1143d830228c7e0541ec5eda--