From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: dalanicolai Newsgroups: gmane.emacs.devel Subject: Re: Question about scrolling behavior (succesfully continuous scroll in doc-view) Date: Sat, 30 Apr 2022 16:47:26 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000081f36705dde03d39" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="17298"; mail-complaints-to="usenet@ciao.gmane.io" To: Emacs Devel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Apr 30 16:49:51 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nkoPu-0004Hr-Kw for ged-emacs-devel@m.gmane-mx.org; Sat, 30 Apr 2022 16:49:51 +0200 Original-Received: from localhost ([::1]:35690 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nkoPt-0005OK-7a for ged-emacs-devel@m.gmane-mx.org; Sat, 30 Apr 2022 10:49:49 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:39018) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nkoNt-00040v-SB for emacs-devel@gnu.org; Sat, 30 Apr 2022 10:47:45 -0400 Original-Received: from mail-yb1-xb32.google.com ([2607:f8b0:4864:20::b32]:39753) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nkoNn-0000Ch-6H for emacs-devel@gnu.org; Sat, 30 Apr 2022 10:47:45 -0400 Original-Received: by mail-yb1-xb32.google.com with SMTP id r189so19192572ybr.6 for ; Sat, 30 Apr 2022 07:47:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=/AwSb9fPLtbifqv6B1b7a6f1j+BhMDTbtrVFV02BLVQ=; b=bN2/8htZdRCzXbejUaXUoZ56lXxhkMR0uBXnYZI0vHXiBoavaObGOThEt/Mfn1ejAL N5BlS4MF1WzfW+isZAcke0rJRO4w84HZRZKx0vX9DV71wwrnOD55dF9CGUxQ5wGHh3iA 75uAB6nFAcoLkoQ86CsiIG+QSTF6GoxLo5GE2GzTssEsp+nIRYbvpylv55MauT1Cb9OP am/bHyTkYF/eBpNCgTZufOqZE1jSPHCn8YtNfQ8s0GLeeVHjpx/PO2s8eFOt61ZJ/XMD QTqs6USIv+qFTXWsgp/h21xBBmysqhC+WJnbEiWBhjFUYf3Cmq1iyqC6EpKxPvbLzDa/ q7cA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=/AwSb9fPLtbifqv6B1b7a6f1j+BhMDTbtrVFV02BLVQ=; b=DWx9NzVFZyVSCJkyU24ehPlh9VF+IATuIZwUkPKkCRX9g7mqu0DAVqB70G/IEliM9L A1zCzMYAgHuIM1ydH/etuR2IWUXDNt/Yo3br92mq+fuE/hbH0JTS2V9yQgbirdkmm8O3 TA9VAmdBdDEQxzS6qOVQbPQ7rbgI13q0SN645/S0ymIBVpC6zJQIyCSChQXG74QnbtXt uxwvfoByf+quDsLWZPK0LuPxvoStKBgwoNOFnJZhZkM6HT8KlmaGIr/lnC7IYpZv8fce YW1yy4gzYkCUo4SeaJgR/QoAiMcF021w05DsIfzV7y1j9/KMZsCJMPCKwMYBuoj7yBUG rwMw== X-Gm-Message-State: AOAM531M+sa1vTd67GX+bE4FLZg5nxMG54qRk5Aple7+EmAkvUW8xT86 Z56wQ26TyHSLS45IdGhPOJ8Q91MNNe7X0Y0/2l1qn9FKj102TA== X-Google-Smtp-Source: ABdhPJzXcM0B602q+HOcJqi1QL3UFyS6hEkUwTofaO5j92+qVF4grcXhxSOv1laujeHuTNoyF0UpY605H5kDj2cDOHA= X-Received: by 2002:a25:d68c:0:b0:648:d3bd:734e with SMTP id n134-20020a25d68c000000b00648d3bd734emr3996603ybg.277.1651330057876; Sat, 30 Apr 2022 07:47:37 -0700 (PDT) In-Reply-To: Received-SPF: pass client-ip=2607:f8b0:4864:20::b32; envelope-from=dalanicolai@gmail.com; helo=mail-yb1-xb32.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:289059 Archived-At: --00000000000081f36705dde03d39 Content-Type: multipart/alternative; boundary="00000000000081f35f05dde03d37" --00000000000081f35f05dde03d37 Content-Type: text/plain; charset="UTF-8" For anyone who is interested, here are improved versions of image-roll.el and doc-view.el, providing continuous scroll in doc-view. First load `image-mode.el` then load the attached `doc-view.el` and open some document (e.g. (pdf, djvu or epub) in doc-view. After all pages have been converted, do `M-x doc-view-continuous-scroll-minor-mode`. Scroll with arrows, PgUp/PgDn, and S-PgUp/S-PgDn. Except for the minor issue (depending on how to define minor) as decribed in the my previous mails, things seem to work mostly fine (when scrolling in a single buffer). On Fri, 29 Apr 2022 at 16:46, dalanicolai wrote: > Never mind about the first issue, it was due to a little mistake. I'll > attach the corrected version here. > For some reason the 'corrected' version refuses to scroll initially (when > using emacs -Q, it scrolls > correctly immediately on Spacemacs), but after a jump to some page, the > scrolling > can be tested. I find now that there is a small bug when scrolling forward > (when using emacs -Q, > the bug does not 'show' on Spacemacs). > > The second issue mentioned above stays relevant. > > Anyway, I think it looks quite nice. > > On Fri, 29 Apr 2022 at 12:47, dalanicolai wrote: > >> As I realized that implementing continuous scrolling in doc-view, with >> the condition that it is only >> available after all pages have been converted, would not be much work, I >> have implemented it in >> doc-view now. >> >> However, I have two questions: >> >> 1. The scrolling works perfectly fine on Spacemacs, but when using `emacs >> -Q`, >> then scrolling forward does not go smoothly, but it makes 'larger' jumps >> instead. >> Scrolling up works perfectly fine though. >> >> So as it works alright on Spacemacs, I am quite sure this is due to some >> simple scrolling configuration setting. I am hoping that you might have an >> idea what configuration variable is >> responsible. On Spacemacs scrolling forward looks as smooth as scrolling >> backward. >> >> 2. The second question I have asked already yesterday. It can be found >> here >> . >> >> You can simply test the continuous scrolling by first loading >> `image-roll.el` and then load `doc-view.el` (both attached here). Then open >> some document (pdf or djvu; epub works fine also, but >> for some reason it does not scroll smoothly and makes jumps instead). >> Now wait until ALL pages have been converted (you can see the counter in >> the mode line), and >> when done, then activate `doc-view-continuous-scroll-minor-mode`. >> >> Use the arrows to scroll down (not smooth) and up (smooth). My question >> is if you know why >> starting form emacs -Q, scroling down does not go smoothly (while it does >> on Spacemacs). >> >> I have not yet implemented the required logic for 'deactivation' of the >> minor mode. >> Also, I have not yet taken care of the edge cases (scrolling to first and >> last page). >> > --00000000000081f35f05dde03d37 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
For anyone who is interested, here are improved versi= ons of image-roll.el and doc-view.el,
providing continuous scroll= in doc-view.

First load `image-mode.el` then = load the attached `doc-view.el` and open some document (e.g.
(pdf= , djvu or epub) in doc-view.
After all pages have been converted,= do `M-x doc-view-continuous-scroll-minor-mode`.
Scroll with arro= ws, PgUp/PgDn, and S-PgUp/S-PgDn. Except for the minor issue (depending on = how
to define minor) as decribed in the my previous mails, things= seem to work mostly fine (when scrolling
=C2=A0in a single buffe= r).

On Fri, 29 Apr 2022 at 16:46, dalanicolai <dalanicolai@gmail.com> wrote:
Never m= ind about the first issue, it was due to a little mistake. I'll attach = the corrected version here.
For some reason the 'corrected= 9; version refuses to scroll initially (when using emacs -Q, it scrolls
=
correctly immediately on Spacemacs), but after a jump to some pa= ge, the scrolling
can be tested. I find now that there is a small= bug when scrolling forward (when using emacs -Q,
the bug does no= t 'show' on Spacemacs).

The second iss= ue mentioned above stays relevant.

Anyway, I think= it looks quite nice.

On Fri, 29 Apr 2022 at 12:47, dalanicolai &l= t;dalanicolai@gm= ail.com> wrote:
As I realized that implementing continuous scr= olling in doc-view, with the condition that it is only
available = after all pages have been converted, would not be much work, I have impleme= nted it in
doc-view now.

However, I have= two questions:

1. The scrolling works perfectly f= ine on Spacemacs, but when using `emacs -Q`,
then scrolling forwa= rd does not go smoothly, but it makes 'larger' jumps instead.
=
Scrolling up works perfectly fine though.

So = as it works alright on Spacemacs, I am quite sure this is due to some simpl= e scrolling configuration setting. I am hoping that you might have an idea = what configuration variable is
responsible. On Spacemacs scrollin= g forward looks as smooth as scrolling backward.

2= . The second question I have asked already yesterday. It can be found here.

You can simply test t= he continuous scrolling by first loading `image-roll.el` and then load `doc= -view.el` (both attached here). Then open some document (pdf or djvu; epub = works fine also, but
for some reason it does not scroll smoothly = and makes jumps instead).
Now wait until ALL pages have been conv= erted (you can see the counter in the mode line), and
when done, = then activate `doc-view-continuous-scroll-minor-mode`.

=
Use the arrows to scroll down (not smooth) and up (smooth). My questio= n is if you know why
starting form emacs -Q, scroling down does n= ot go smoothly (while it does on Spacemacs).

I hav= e not yet implemented the required logic for 'deactivation' of the = minor mode.
Also, I have not yet taken care of the edge cases (sc= rolling to first and last page).
--00000000000081f35f05dde03d37-- --00000000000081f36705dde03d39 Content-Type: text/x-emacs-lisp; charset="US-ASCII"; name="image-roll.el" Content-Disposition: attachment; filename="image-roll.el" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l2lz8ea90 Ozs7IGltYWdlLXJvbGwuZWwgLS0tIFZpcnR1YWwgc2Nyb2xsIGRpc3BsYXkgZW5naW5lICAtKi0g bGV4aWNhbC1iaW5kaW5nOnQgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDIwMiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KCjs7IEF1dGhvcjogRC4gTC4gTmljb2xhaSA8ZGFsYW5pY29sYWlA Z21haWwuY29tPgo7OyBWZXJzaW9uOiAxLjAKOzsgUGFja2FnZS1SZXF1aXJlczogKGltYWdlLW1v ZGUgc3ZnKQo7OyBLZXl3b3JkczogZmlsZXMsIHBkZgo7OyBVUkw6IGh0dHBzOi8vZ2l0aHViLmNv bS9kYWxhbmljb2xhaS9pbWFnZS1yb2xsLmVsCgoKOzs7IENvbW1lbnRhcnk6Cgo7OyBUaGlzIHBh Y2thZ2UgcHJvdmlkZXMgYSB2aXJ0dWFsIHNjcm9sbCBlbmdpbmUgZm9yIGRpc3BsYXlpbmcgYm9v a3MvZG9jdW1lbnRzLgo7OyBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoZSBwYWNrYWdlIGlzIHRvIHBy b3ZpZGUgYSBjb250aW51b3VzIHNjcm9sbGluZyB3aGVuCjs7IHZpZXdpbmcgZG9jdW1lbnRzLgoK OzsgVGhlIHBhY2thZ2UgaXMgd3JpdHRlbiBpbiBhIHdheSB0aGF0IGl0IHN1cHBvcnRzIGltYWdl cy9wYWdlcyBvZiBkaWZmZXJlbnQKOzsgc2l6ZXMgb24gdGhlIHNhbWUgcm9sbCAoc2VlIGNvbW1l bnQgYWJvdmUgYGltYWdlLXJvbGwtc2Nyb2xsLWZvcndhcmQnKS4gQWxzbwo7OyB0aGVyZSBpcyBu byBtaW51bXVtIG9yIG1heGltdW0gb24gdGhlIHJhbmdlIG9mIHRoZSBzaXplcywgYW5kIGZpbmFs bHksIGl0IGlzCjs7IHdyaXR0ZW4gdG8gc3VwcG9ydCBiZWluZyBkaXNwbGF5ZWQgaW4gKGFueSBu dW1iZXIgb2YpIG11bHRpcGxlIHdpbmRvd3MuCgo7OyBUaGUgY29yZSBmdW5jdGlvbmFsaXR5LCBp LmUuIHRoZSAnc2Nyb2xsJyBpcyBwcm92aWRlZCBieSB0aGUKOzsgYGltYWdlLXJvbGwtLW5ldy13 aW5kb3ctZnVuY3Rpb24nIGFuZCBgaW1hZ2Utcm9sbC0tcmVkaXNwbGF5JyBmdW5jdGlvbnMuIFRo ZQo7OyBmdW5jdGlvbiBgaW1hZ2Utcm9sbC0tbmV3LXdpbmRvdy1mdW5jdGlvbicgc2hvdWxkIGJl IGFkZGVkIHRvIHRoZQo7OyBgaW1hZ2UtbW9kZS1uZXctd2luZG93LWZ1bmN0aW9ucycgd2hpbGUg dGhlIGBpbWFnZS1yb2xsLS1yZWRpc3BsYXknIHNob3VsZCBiZQo7OyBhZGRlZCB0byB0aGUgYHdp bmRvdy1jb25maWd1cmF0aW9uLWNoYW5nZS1ob29rJyBib3RoIGFzIGJ1ZmZlciBsb2NhbCBob29r Cjs7IGZ1bmN0aW9ucyAoaS5lLiBieSBwYXNzaW5nIGEgbm9uLW5pbCBMT0NBTCBhcmd1bWVudCB0 byBgYWRkLWhvb2snKS4gRm9yIHRoZQo7OyBgaW1hZ2UtbW9kZS1uZXctd2luZG93LWZ1bmN0aW9u cycgdG8gaGF2ZSBlZmZlY3QsIHRoZSBgaW1hZ2UtbW9kZS13aW5wcm9wcycKOzsgc2hvdWxkIGJl IGluaXRpYWxpemVkIGJ5IGVpdGhlciB1c2luZyBgaW1hZ2UtbW9kZS1zZXR1cC13aW5wcm9wcycg KGxpa2UgaW4KOzsgdGhlIGJvZHkgb2YgYHBkZi12aWV3LW1vZGUnKSBvciBieSBpbml0aWFsaXpp bmcgdGhlCjs7IGBpbWFnZS1tb2RlLXdpbnByb3BzLWFsaXN0JyBleHBsaWNpdGx5IChieSBzZXR0 aW5nIGl0cyB2YWx1ZSB0byBuaWwsIGxpa2UgaW4KOzsgdGhlIGBpbWFnZS1yb2xsLW1vZGUnIGV4 YW1wbGUpLgoKOzsgVGhlIHBhY2thZ2UgaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlv biB3aXRoIHNvbWUgb3RoZXIgcGFja2FnZSB0aGF0Cjs7IHByb3ZpZGVzIGZlYXR1cmVzIHRvIGV4 dHJhY3QgYW5kIG1hbmFnZSB0aGUgZGF0YSBmcm9tIHRoZSBkb2N1bWVudC4gQW4KOzsgZXhhbXBs ZSBvZiBzdWNoIGEgZmlsZSBpcyB0aGUgZmlsZSBgcGRmLXNjcm9sbC5lbCcgYXQgVVJMOgo7OyBo dHRwczovL2dpdGh1Yi5jb20vZGFsYW5pY29sYWkvcGRmLXRvb2xzL2Jsb2IvaW1hZ2Utcm9sbC12 ZXJzaW9uL2xpc3AvcGRmLXNjcm9sbC5lbAo7OyBUaGUgZmlsZSBgcGRmLXNjcm9sbC5lbCcgcHJv dmlkZXMgdGhlIGNvbmZpZ3VyYXRpb25zIGZvciBwZGYtdG9vbHMgdG8gd29yawo7OyB3aXRoIGBp bWFnZS1yb2xsLmVsJwoKOzsgSG93ZXZlciwgZm9yIGRldmVsb3BtZW50IHB1cnBvc2VzLCB0aGUg cGFja2FnZSBwcm92aWRlcyBhbiBgaW1hZ2Utcm9sbC1kZW1vJwo7OyBmdW5jdGlvbi4gQWxzbywg YXMgYW4gZXhhbXBsZSBvZiBpdHMgdXNhZ2UgaXQgaW5jbHVkZXMgYSBmdW5jdGlvbgo7OyBgaW1h Z2Utcm9sbC1kaXJlY3RvcnknIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHZpZXcgYWxsIGltYWdlcyBp biBzb21lIGRpcmVjdG9yeQo7OyB1c2luZyB0aGUgcm9sbC4KCjs7IFRoaXMgZmlsZSBwcm92aWRl cyBmb3VyIGJ1ZmZlciBsb2NhbCB2YXJpYWJsZXMgdGhhdCBzaG91bGQgYmUgc2V0IHRvIHRoZQo7 OyB2YWx1ZXMgb2YgdGhlIGZ1bmN0aW9ucyB0aGF0IGNvcnJlY3RseSAncmV0cmlldmUnIHRoZSBy ZXF1aXJlZCBkYXRhIGZyb20gdGhlCjs7IGRvY3VtZW50LiBTZWUgdGhlaXIgZG9jc3RyaW5ncyBh bmQgdGhlIGBpbWFnZS1yb2xsLWRpcmVjdG9yeScgZnVuY3Rpb24gKG9yCjs7IGBwZGYtc2Nyb2xs LmVsJykgZm9yIG1vcmUgaW5mby4KCgo7OzsgSXNzdWVzCgo7OyBObyByZWFsIGlzc3VlcyBhcmUg a25vd24gd2hlbiB1c2luZyB0aGlzIHBhY2thZ2UgaW4gYSBjbGVhbiB3YXksIGkuZS4gYnkKOzsg c3RhcnRpbmcgZnJvbSBgZW1hY3MgLVEnLCB0aGVuIGxvYWRpbmcgdGhpcyBwYWNrYWdlIGFuZCB1 c2luZyBpdC4KCjs7IEhvd2V2ZXIsIEkgaGF2ZSBleHBlcmllbmNlZCBzb21lIGVycm9ycyBpbiBy ZWRpc3BsYXkgd2hlbiB1c2luZyB0aGlzIHBhY2thZ2UKOzsgaW4gY29tYmluYXRpb24gd2l0aCB2 ZXJ0aWNvLCBtYXJnaW5hbGlhIGFuZCBzYXZlaGlzdC4gSW4gdGhhdCBjYXNlIHNvbWV0aW1lcwo7 OyBFbWFjcyBpdHMgYHJlZGlzcGxheScgY2FuIGdldCBhIGxpdHRsZSAnY29uZnVzZWQvbWVzc2Vk IHVwJywgc28gdGhhdCBhIHBhZ2UKOzsgKGFsdGhvdWdoIG5ldmVyIHRoZSBmaXJzdCBwYWdlIGJ1 dCBvbmx5IGxhdGVyIHBhZ2VzKSB3aWxsIG5vdCBzaG93IGRpcmVjdGx5Cjs7IHdoZW4gY3JlYXRp bmcgYSBuZXcgKHNlY29uZCwgdGhpcmQsIC4uLikgd2luZG93LiBJbiB0aGF0IGNhc2UgYHJlZGlz cGxheScgY2FuCjs7IGJlIGZvcmNlZCBieSAnYWN0aXZhdGluZycgdGhlIG1pbmlidWZmZXIgKGUu Zy4gYnkgcHJlc3NpbmcgYE0teCcpIGFuZCBoaWRpbmcKOzsgaXQgYWdhaW4uIEl0IGlzIGEgd2Vp cmQgYnVnLCBiZWNhdXNlIGl0IG9ubHkgaGFwcGVucyB3aGVuIGluc3RhbGxpbmcgdGhvc2UKOzsg cGFja2FnZXMgdmlhIGB1c2UtcGFja2FnZScsIGJ1dCBub3Qgd2hlbiB0aGUgcGFja2FnZXMgYXJl IGluc3RhbGxlZCB2aWEKOzsgYHBhY2thZ2UtaW5zdGFsbCcuIEFsc28gaXQgc2VlbXMgdG8gb2Nj dXIgbW9zdGx5IHdoZW4gdGhlc2UgdGhyZWUgcGFja2FnZXMKOzsgYXJlIGNvbWJpbmVkLiBBZGRp dGlvbmFsbHksIGl0IG1pZ2h0IGJlIG1pZ2h0ICdkdWUgdG8nIHVzaW5nIG11bHRpcGxlIEVtYWNz Cjs7IHZlcnNpb25zICh5b3UgY2FuIHRyeSBpZiB0aGUgaXNzdWUgb2NjdXJzIG9uIHRoZSBvdGhl ciBFbWFjcyB2ZXJzaW9uIGFsc28sCjs7IHByb2JhYmx5IG5vdCkuIFNlZQo7OyBodHRwczovL2xp c3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2VtYWNzLWRldmVsLzIwMjItMDQvbXNnMDA4MjkuaHRt bCBBbnl3YXksCjs7IEkgZG9uJ3Qga25vdyB3aGF0IGNhdXNlcyB0aGUgYnVnLCBidXQgdGhpcyBp cyB3aGF0IEkgaGF2ZSBub3RpY2VkIGZyb20KOzsgaW5zcGVjdGluZyBpdC4KCgoocmVxdWlyZSAn aW1hZ2UtbW9kZSkKKHJlcXVpcmUgJ3N2ZykKCihkZWZncm91cCBpbWFnZS1yb2xsIG5pbAogICJJ bWFnZSByb2xsIGNvbmZpZ3VyYXRpb25zLiIpCgooZGVmY3VzdG9tIGltYWdlLXJvbGwtdmVydGlj YWwtbWFyZ2luIDIKICAiVmVydGljYWwgbWFyZ2luIGFyb3VuZCBpbWFnZSAocGl4ZWxzKSwgaS5l LiBwYWdlIHNlcGFyYXRpb24gaGVpZ2h0LgpCZWNhdXNlIHRoZSBtYXJnaW4gaXMgYWRkZWQgdG8g Ym90aCBzaWRlcyBvZiBlYWNoIHBhZ2UsIHRoZSBwYWdlCnNlcGFyYXRpb24gaGVpZ2h0IGlzIHR3 aWNlIHRoaXMgdmFsdWUuIgogIDp0eXBlICdpbnRlZ2VyKQoKKGRlZmN1c3RvbSBpbWFnZS1yb2xs LW92ZXJsYXktZmFjZS1iZy1jb2xvciAiZ3JheSIKICAiQmFja2dyb3VuZCBjb2xvciBvZiBvdmVy bGF5LCBpLmUuIHBhZ2Ugc2VwYXJhdGlvbiBjb2xvci4iCiAgOnR5cGUgJ2NvbG9yKQoKOzsgKGRl ZmN1c3RvbSBpbWFnZS1yb2xsLXN0ZXAtc2l6ZQo7OyAgIDs7IChsYW1iZGEgKCkKOzsgICA7OyAg IChsZXQqICgobyAoaW1hZ2Utcm9sbC1wYWdlLW92ZXJsYXkpKQo7OyAgIDs7ICAgICAgICAgIChz IChvdmVybGF5LWdldCBvICdkaXNwbGF5KSkKOzsgICA7OyAgICAgICAgICAodyAoaW1hZ2UtcHJv cGVydHkgcyA6d2lkdGgpKSkKOzsgICA7OyAgICAgKGlmIHcKOzsgICA7OyAgICAgICAgICgqIDUw Cjs7ICAgOzsgICAgICAgICAgICAoLyAgKGZsb2F0IChpZiAoY29uc3AgdykgKGNhciB3KSB3KSkK OzsgICA7OyAgICAgICAgICAgICAgICAod2luZG93LXBpeGVsLWhlaWdodCkpKQo7OyAgIDs7ICAg ICAgIDUwKSkpCjs7ICAgIlNjcm9sbCBzdGVwIHNpemUuCjs7IFRoZSB2YWx1ZSBjYW4gYmUgZWl0 aGVyIGEgbnVtYmVyIG9yIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBubwo7OyBhcmd1bWVudHMgYW5k IHJldHVybnMgYSBwb3NpdGl2ZSBudW1iZXIuIElmIHRoZSBudW1iZXIgaXMgZXF1YWwKOzsgdG8g b3IgbGFyZ2VyIHRoYW4gMSwgaXQgcmVwcmVzZW50cyBwaXhlbCB1bml0cy4gT3RoZXJ3aXNlLCBp ZiB0aGUKOzsgdmFsdWUgaXMgYmV0d2VlbiAwIGFuZCAxLCBpdCByZXByZXNlbnRzIGEgZnJhY3Rp b24gb2YgdGhlIGN1cnJlbnQKOzsgcGFnZSBoZWlnaHQuIgo7OyAgIDp0eXBlICcoY2hvaWNlIGZ1 bmN0aW9uIGludGVnZXIgZmxvYXQpKQoKKGRlZmN1c3RvbSBpbWFnZS1yb2xsLXN0ZXAtc2l6ZSA1 MAogICJTY3JvbGwgc3RlcCBzaXplIGluIHBpeGVscyB1bml0cy4iCiAgOnR5cGUgJyhjaG9pY2Ug ZnVuY3Rpb24gaW50ZWdlciBmbG9hdCkpCgooZGVmY3VzdG9tIGltYWdlLXJvbGwtY2VudGVyIG5p bAogICJXaGVuIG5vbi1uaWwsIGNlbnRlciB0aGUgcm9sbCBob3Jpem9udGFsbHkgaW4gdGhlIHdp bmRvdy4iCiAgOnR5cGUgJ2Jvb2xlYW4pCgo7OyAoZGVmdmFyLWxvY2FsIGltYWdlLXJvbGwtbnVt YmVyLW9mLXBhZ2VzLWZ1bmN0aW9uIG5pbAo7OyAgICJGdW5jdGlvbiB0aGF0IHNob3VsZCByZXR1 cm4gdGhlIHRvdGFsIG51bWJlciBvZiBwYWdlcy4KOzsgVGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1 cm4gYW4gaW50ZWdlciB3aXRoIHRoZSB0b3RhbCBudW1iZXIgb2YKOzsgcGFnZXMgaW4gdGhlIGRv Y3VtZW50LiIpCihkZWZ2YXItbG9jYWwgaW1hZ2Utcm9sbC1sYXN0LXBhZ2UgMCkKCihkZWZ2YXIt bG9jYWwgaW1hZ2Utcm9sbC1wYWdlLXNpemVzLWZ1bmN0aW9uIG5pbAogICJGdW5jdGlvbiB0aGF0 IHNob3VsZCByZXR1cm4gcGFnZS1zaXplcyBvZiBkb2N1bWVudC4KVGhlIGZ1bmN0aW9uIHNob3Vs ZCByZXR1cm4gYSBsaXN0IG9mIGNvbnNlcyBvZiB0aGUgZm9ybSAoV0lEVEggLgpIRUlHSFQpLCBi b3RoIG51bWJlcnMuIikKCihkZWZ2YXItbG9jYWwgaW1hZ2Utcm9sbC1zZXQtcmVkaXNwbGF5LWZs YWctZnVuY3Rpb24gbmlsCiAgIkZ1bmN0aW9uIHRoYXQgc2V0cyB0aGUgYG5lZWRzLXJlZGlzcGxh eScgd2luZG93IHByb3BlcnR5LgpTZXR0aW5nIHRoaXMgaXMgcmVxdWlyZWQgZm9yIHRoZQpgcGRm LXZpZXctcmVkaXNwbGF5LXNvbWUtd2luZG93cycgdG8gd29yayBjb3JyZWN0bHkuIFRoZSBzYW1l Cm1lY2hhbmlzbSBzaG91bGQgcHJvYmFibHkgZ2V0IHBvcnRlZCB0byBpbWFnZS1yb2xsLmVsIGFs c28sIHRvCm1ha2UgcmVkaXNwbGF5IHdvcmsgY29ycmVjdGx5IG9uIG11bHRpcGxlIHdpbmRvd3Mu IEhvd2V2ZXIsIHRoaXMKaXMgYW4gYWR2YW5jZWQgZmVhdHVyZSB0aGF0IGlzIG5vdCByZXF1aXJl ZCBmb3IgYmFzaWMgaW1hZ2Utcm9sbAp1c2FnZS4iKQoKKGRlZnZhci1sb2NhbCBpbWFnZS1yb2xs LWRpc3BsYXktcGFnZS1mdW5jdGlvbiBuaWwKICAiRnVuY3Rpb24gdGhhdCBzZXRzIHRoZSBvdmVy bGF5J3MgZGlzcGxheSBwcm9wZXJ0eS4KVGhlIGZ1bmN0aW9uIHJlY2VpdmVzIHRoZSBwYWdlIG51 bWJlciBhcyBhIHNpbmdsZQphcmd1bWVudCAoUEFHRSkuIFRoZSBmdW5jdGlvbiBzaG91bGQgdXNl IGAoaW1hZ2Utcm9sbC1wYWdlLW92ZXJsYXkKUEFHRSknIHRvIGFkZCB0aGUgaW1hZ2Ugb2YgdGhl IHBhZ2UgYXMgdGhlIG92ZXJsYXkncwpkaXNwbGF5LXByb3BlcnR5LiIpCgoKKGRlZm1hY3JvIGlt YWdlLXJvbGwtZGVidWcgKG9iamVjdCkKICBgKHByb2duIChwcmludCAoZm9ybWF0ICIlcyA9ICVz IiAsb2JqZWN0IChldmFsICxvYmplY3QpKQogICAgICAgICAgICAgICAgICMnZXh0ZXJuYWwtZGVi dWdnaW5nLW91dHB1dCkKICAgICAgICAgIChldmFsICxvYmplY3QpKSkKCjs7IGRlZmluZSBhcyBt YWNybydzIGZvciBzZXRmLWFiaWxpdHkKCjs7IFRPRE8gdXBkYXRlIGRvY3N0cmluZwooZGVmbWFj cm8gaW1hZ2Utcm9sbC1vdmVybGF5cyAoJm9wdGlvbmFsIHdpbmRvdykKICAiTGlzdCBvZiBvdmVy bGF5cyB0aGF0IG1ha2UgdXAgYSBzY3JvbGwuIgogIGAoaW1hZ2UtbW9kZS13aW5kb3ctZ2V0ICdv dmVybGF5cyAsd2luZG93KSkKCihkZWZtYWNybyBpbWFnZS1yb2xsLXBhZ2Utb3ZlcmxheSAoJm9w dGlvbmFsIHBhZ2UpCiAgIlJldHVybiB0aGUgb3ZlcmxheSB0aGF0IGhvbGQgcGFnZSBudW1iZXIg UEFHRS4KSW1wbGVtZW50ZWQgYXMgbWFjcm8gdG8gbWFrZSBpdCBzZXRmJ2FibGUuIgogIGAobnRo ICgxLSAob3IgLHBhZ2UgKGltYWdlLXJvbGwtY3VycmVudC1wYWdlKSkpCiAgICAgICAgKGltYWdl LXJvbGwtb3ZlcmxheXMpKSkKCihkZWZtYWNybyBpbWFnZS1yb2xsLXBhZ2Utb3ZlcmxheS1nZXQg KHBhZ2UgcHJvcCkKICAiR2V0IG92ZXJsYXktcHJvcGVydHkgUFJPUCBvZiBvdmVybGF5IGhvbGRp bmcgcGFnZSBudW1iZXIgUEFHRS4KSW1wbGVtZW50ZWQgYXMgbWFjcm8gdG8gbWFrZSBpdCBzZXRm J2FibGUuIgogIGAob3ZlcmxheS1nZXQgKG50aCAoMS0gLHBhZ2UpIChpbWFnZS1yb2xsLW92ZXJs YXlzKSkKICAgICAgICAgICAgICAgICxwcm9wKSkKCihkZWZtYWNybyBpbWFnZS1yb2xsLWN1cnJl bnQtcGFnZSAoJm9wdGlvbmFsIHdpbmRvdykKICAiUmV0dXJuIHRoZSBwYWdlIG51bWJlciBvZiB0 aGUgY3VycmVudGx5IGRpc3BsYXllZCBwYWdlLgpUaGUgY3VycmVudCBwYWdlIGlzIHRoZSBwYWdl IHRoYXQgb3ZlcmxhcHMgd2l0aCB0aGUgd2luZG93CnN0YXJ0ICh0aGlzIGNob2ljZSB3YXMgbWFk ZSBpbiBvcmRlciB0byBzaW1wbGlmeSB0aGUgc2Nyb2xsaW5nCmxvZ2ljKSIKICBgKGltYWdlLW1v ZGUtd2luZG93LWdldCAncGFnZSAsd2luZG93KSkKCihkZWZzdWJzdCBpbWFnZS1yb2xsLW92ZXJs YXktaGVpZ2h0IChwYWdlKQogICgrIChjZHIgKGltYWdlLXJvbGwtcGFnZS1vdmVybGF5LWdldCBw YWdlICdvdmVybGF5LXNpemUpKQogICAgICgqIDIgaW1hZ2Utcm9sbC12ZXJ0aWNhbC1tYXJnaW4p KSkKCihkZWZzdWJzdCBpbWFnZS1yb2xsLXBhZ2UtdG8tcG9zIChwYWdlKQogICgxLSAoKiAyIHBh Z2UpKSkKCihkZWZ1biBpbWFnZS1yb2xsLXZpc2libGUtb3ZlcmxheXMgKCkKICAiUGFnZSBudW1i ZXJzIG9mIGN1cnJlbnRseSB2aXNpYmxlIG92ZXJsYXlzLgpUaGUgbnVtYmVycyBhcmUgcmV0dXJu ZWQgaW4gYSBsaXN0LiBPdmVybGF5cyB0aGF0IGFyZSBvbmx5CnBhcnRpYWxseSB2aXNpYmxlIGFy ZSBpbmNsdWRlZC4iCiAgKGxldCogKHZpc2libGUKICAgICAgICAgKHBhZ2UgKGltYWdlLXJvbGwt Y3VycmVudC1wYWdlKSkKICAgICAgICAgKGF2YWlsYWJsZS1oZWlnaHQgKHdpbmRvdy1waXhlbC1o ZWlnaHQpKQogICAgICAgICAobGFzdC1wYWdlIGltYWdlLXJvbGwtbGFzdC1wYWdlKSkKCiAgICAo cHVzaCBwYWdlIHZpc2libGUpCiAgICAoY2wtZGVjZiBhdmFpbGFibGUtaGVpZ2h0ICgtIChpbWFn ZS1yb2xsLW92ZXJsYXktaGVpZ2h0IHBhZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICh3aW5kb3ctdnNjcm9sbCBuaWwgdCkpKQogICAgKGNsLWluY2YgcGFnZSkKCiAgICAodW5s ZXNzICg+IHBhZ2UgaW1hZ2Utcm9sbC1sYXN0LXBhZ2UpCiAgICAgICh3aGlsZSAoPiBhdmFpbGFi bGUtaGVpZ2h0IDApCiAgICAgICAgKHB1c2ggcGFnZSB2aXNpYmxlKQogICAgICAgIChpZiAoPSBw YWdlIGxhc3QtcGFnZSkKICAgICAgICAgICAgKHNldHEgYXZhaWxhYmxlLWhlaWdodCAwKQogICAg ICAgICAgKGNsLWRlY2YgYXZhaWxhYmxlLWhlaWdodCAoaW1hZ2Utcm9sbC1vdmVybGF5LWhlaWdo dCBwYWdlKSkKICAgICAgICAgIChjbC1pbmNmIHBhZ2UpKSkpCiAgICB2aXNpYmxlKSkKCihkZWZ1 biBpbWFnZS1yb2xsLXVuZGlzcGxheS1wYWdlIChwYWdlKQogICJVbmRpc3BsYXkgUEFHRS4KUmVw bGFjZXMgdGhlIGltYWdlIGRpc3BsYXkgcHJvcGVydHkgb2YgdGhlIG92ZXJsYXkgaG9sZGluZyBQ QUdFCndpdGggYSBzcGFjZS4gSXQgc2l6ZSBpcyBkZXRlcm1pbmVkIGZyb20gdGhlIGltYWdlIGl0 cwpgaW1hZ2Utc2l6ZScuIgogIChkaXNwbGF5LXdhcm5pbmcgJyhpbWFnZS1yb2xsKSAoZm9ybWF0 ICJ1bmRpc3BsYXkgJXMiIHBhZ2UpCiAgICAgICAgICAgICAgICAgICA6ZGVidWcgIippbWFnZS1y b2xsLWRlYnVnLWxvZyoiKQogIChsZXQqICgobyAoaW1hZ2Utcm9sbC1wYWdlLW92ZXJsYXkgcGFn ZSkpCiAgICAgICAgIChpbSAob3ZlcmxheS1nZXQgbyAnZGlzcGxheSkpCiAgICAgICAgIChzIChp bWFnZS1zaXplIGltIHQpKQogICAgICAgICAodyAoY2FyIHMpKQogICAgICAgICAoaCAoY2RyIHMp KSkKICAgIChvdmVybGF5LXB1dCBvICdkaXNwbGF5IGAoc3BhY2UgLiAoOndpZHRoICgsdykgOmhl aWdodCAoLGgpKSkpCiAgICAob3ZlcmxheS1wdXQgbyAnZmFjZSBgKDpiYWNrZ3JvdW5kICJncmF5 IikpKSkKCihkZWZ1biBpbWFnZS1yb2xsLS1uZXctd2luZG93LWZ1bmN0aW9uICh3aW5wcm9wcykK ICAiRnVuY3Rpb24gY2FsbGVkIGZpcnN0IGFmdGVyIGRpc3BsYXlpbmcgYnVmZmVyIGluIGEgbmV3 IHdpbmRvdy4KSWYgdGhlIGJ1ZmZlciBpcyBuZXdseSBjcmVhdGVkLCB0aGVuIGl0IGRvZXMgbm90 IGNvbnRhaW4gYW55Cm92ZXJsYXkgYW5kIHRoaXMgZnVuY3Rpb24gZXJhc2VzIHRoZSBidWZmZXIg Y29udGVudHMsIGFmdGVyIHdoaWNoCml0IGluc2VydHMgZW1wdHkgc3BhY2VzIHRoYXQgZWFjaCBo b2xkIGEgb3ZlcmxheS4gSWYgdGhlIGJ1ZmZlcgphbHJlYWR5IGhhcyBvdmVybGF5cyAoaS5lLiBh IHNlY29uZCBvciBzdWJzZXF1ZW50IHdpbmRvdyBpcwpjcmVhdGVkKSwgdGhlIGZ1bmN0aW9uIHNp bXBseSBjb3BpZXMgdGhlIG92ZXJsYXlzIGFuZCBhZGRzIHRoZQpuZXcgd2luZG93IGFzIHdpbmRv dyBvdmVybGF5LXByb3BlcnR5IHRvIGVhY2ggb3ZlcmxheS4KClRoaXMgZnVuY3Rpb24gc2hvdWxk IGJlIGFkZGVkIHRvIGltYWdlLXJvbGwgKGNvbnRpbnVvdXMgc2Nyb2xsKQptaW5vciBtb2RlIGNv bW1hbmRzLCBhZnRlciBlcmFzaW5nIHRoZSBidWZmZXIgdG8gY3JlYXRlIHRoZQpvdmVybGF5cy4i CiAgOzsgKGlmICg9IChidWZmZXItc2l6ZSkgMCkKICAoaWYgKG5vdCAob3ZlcmxheXMtYXQgMSkp CiAgICAgIChsZXQgKG92ZXJsYXlzCiAgICAgICAgICAgIChwYWdlcyBpbWFnZS1yb2xsLWxhc3Qt cGFnZSkKICAgICAgICAgICAgKHdpbiAoY2FyIHdpbnByb3BzKSkKICAgICAgICAgICAgKGluaGli aXQtcmVhZC1vbmx5IHQpKQoKICAgICAgICAoZXJhc2UtYnVmZmVyKQoKICAgICAgICA7OyBoZXJl IHdlIG9ubHkgYWRkIHRoZSAncGFnZScgYW5kICd3aW5kb3cnIG92ZXJsYXktcHJvcGVydGllcywg d2UgYWRkCiAgICAgICAgOzsgbW9yZSBwcm9wZXJ0aWVzL2luZm9ybWF0aW9uIGFzIHNvb24gYXMg aXQgYmVjb21lcyBhdmFpbGFibGUgaW4gdGhlCiAgICAgICAgOzsgJ2ltYWdlLXJvbGwtLXJlZGlz cGxheScgZnVuY3Rpb24KICAgICAgICAoZG90aW1lcyAoaSBwYWdlcykKICAgICAgICAgIChsZXQg KChpICgxKyBpKSkpCiAgICAgICAgICAgIChpbnNlcnQgIiAiKQogICAgICAgICAgICAobGV0ICgo byAobWFrZS1vdmVybGF5ICgxLSAocG9pbnQpKSAocG9pbnQpKSkpCiAgICAgICAgICAgICAgKG92 ZXJsYXktcHV0IG8gJ3BhZ2UgIGkpCiAgICAgICAgICAgICAgKG92ZXJsYXktcHV0IG8gJ3dpbmRv dyB3aW4pCiAgICAgICAgICAgICAgKHB1c2ggbyBvdmVybGF5cykpCiAgICAgICAgICAgIChpbnNl cnQgIlxuIikpKQogICAgICAgIChkZWxldGUtY2hhciAtMSkKICAgICAgICAoaW1hZ2UtbW9kZS13 aW5kb3ctcHV0ICdvdmVybGF5cyAobnJldmVyc2Ugb3ZlcmxheXMpKQogICAgICAgIChzZXQtYnVm ZmVyLW1vZGlmaWVkLXAgbmlsKQoKICAgICAgICA7OyByZXF1aXJlZCB0byBtYWtlIGBwZGYtdmll dy1yZWRpc3BsYXktc29tZS13aW5kb3dzJyBjYWxsIGBwZGYtdmlldy1yZWRpc3BsYXknCiAgICAg ICAgKHdoZW4tbGV0IChmdW4gaW1hZ2Utcm9sbC1zZXQtcmVkaXNwbGF5LWZsYWctZnVuY3Rpb24p CiAgICAgICAgICAoZnVuY2FsbCBmdW4pKSkKICAgIChsZXQgKChvbHMgKG1hcGNhciAobGFtYmRh IChvKQogICAgICAgICAgICAgICAgICAgICAgICAgKGxldCAoKG9jIChjb3B5LW92ZXJsYXkgbykp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAob3ZlcmxheS1wdXQgb2MgJ3dpbmRvdyAoY2Fy IHdpbnByb3BzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgb2MpKQogICAgICAgICAgICAg ICAgICAgICAgIChpbWFnZS1yb2xsLW92ZXJsYXlzKSkpKQogICAgICAoaW1hZ2UtbW9kZS13aW5k b3ctcHV0ICdvdmVybGF5cyBvbHMgd2lucHJvcHMpKSkKCiAgOzsgaW5pdGlhbCBgaW1hZ2Utcm9s bC0tcmVkaXNwbGF5JyBuZWVkcyB0byBrbm93IHdoaWNoIHBhZ2UocykgdG8gZGlzcGxheQogIChz ZXRmIChpbWFnZS1yb2xsLWN1cnJlbnQtcGFnZSAoY2FyIHdpbnByb3BzKSkKICAgICAgICAob3Ig KGltYWdlLXJvbGwtY3VycmVudC1wYWdlIChjYXIgd2lucHJvcHMpKSAxKSkpCgooZGVmdW4gaW1h Z2Utcm9sbC0tcmVkaXNwbGF5ICgmb3B0aW9uYWwgd2luZG93IG5vLXJlbGF0aXZlLXZzY3JvbGwp CiAgIlJlZGlzcGxheSB0aGUgc2Nyb2xsLgpCZXNpZGVzIHRoYXQgdGhpcyBmdW5jdGlvbiBjYW4g YmUgY2FsbGVkIGRpcmVjdGx5LCBpdCBzaG91bGQgYWxzbwpiZSBhZGRlZCB0byB0aGUgYHdpbmRv dy1jb25maWd1cmF0aW9uLWNoYW5nZS1ob29rJy4KClRoZSBhcmd1bWVudCBXSU5ET1cgaXMgbm90 IHVzZWQgaW4gdGhlIGJvZHksIGJ1dCBpdCBleGlzdHMgdG8KbWFrZSB0aGUgZnVuY3Rpb24gY29t cGF0aWJsZSB3aXRoIGBwZGYtdG9vbHMnIChpbiB3aGljaCBjYXNlIGl0CmlzIGEgc3Vic3RpdHV0 ZSBmb3IgdGhlIGBwZGYtdmlldy1yZWRpc3BsYXknIGZ1bmN0aW9uKS4iCiAgKGRpc3BsYXktd2Fy bmluZyAnKGltYWdlLXJvbGwpCiAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJyZWRpc3BsYXkg JXMiIChjYXIgKGltYWdlLW1vZGUtd2lucHJvcHMpKSkKICAgICAgICAgICAgICAgICAgIDpkZWJ1 ZyAiKmltYWdlLXJvbGwtZGVidWctbG9nKiIpCgogIDs7IE5PVEUgdGhlIGAod2hlbiAobGlzdHAg aW1hZ2UtbW9kZS13aW5wcm9wcy1hbGlzdCknIGZyb20KICA7OyBgaW1hZ2UtbW9kZS1yZWFwcGx5 LXdpbnByb3BzJyB3YXMgcmVtb3ZlZCBoZXJlIChidXQgaW4gdGhlIGVuZCBtaWdodCB0dXJuCiAg Ozsgb3V0IHRvIGJlIHJlcXVpcmVkKQoKICA7OyBCZXdhcmU6IHRoaXMgY2FsbCB0byBpbWFnZS1t b2RlLXdpbnByb3BzIGNhbid0IGJlIG9wdGltaXplZCBhd2F5LCBiZWNhdXNlCiAgOzsgaXQgbm90 IG9ubHkgZ2V0cyB0aGUgd2lucHJvcHMgZGF0YSBidXQgc2V0cyBpdCB1cCBpZiBuZWVkZWQgKGUu Zy4gaXQncyB1c2VkCiAgOzsgYnkgZG9jLXZpZXcgdG8gZGlzcGxheSB0aGUgaW1hZ2UgaW4gYSBu ZXcgd2luZG93KS4KICAoaW1hZ2UtbW9kZS13aW5wcm9wcyBuaWwgdCkKCiAgKGxldCogKChwYWdl cyBpbWFnZS1yb2xsLWxhc3QtcGFnZSkKICAgICAgICAgKHBhZ2Utc2l6ZXMgKGlmIGltYWdlLXJv bGwtcGFnZS1zaXplcy1mdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwg aW1hZ2Utcm9sbC1wYWdlLXNpemVzLWZ1bmN0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICht YWtlLWxpc3QgcGFnZXMgKGlmIChmdW5jdGlvbnAgaW1hZ2Utcm9sbC1kZW1vLXBhZ2Utc2l6ZSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbCBpbWFn ZS1yb2xsLWRlbW8tcGFnZS1zaXplKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbWFnZS1yb2xsLWRlbW8tcGFnZS1zaXplKSkpKQogICAgICAgICAobiAwKSkKCiAg ICAoZG9saXN0IChwYWdlLXNpemUgcGFnZS1zaXplcykKICAgICAgKGxldCogKChwYWdlLXdpZHRo IChjYXIgcGFnZS1zaXplKSkKICAgICAgICAgICAgIChvdmVybGV5LWhlaWd0aCAoKyAoY2RyIHBh Z2Utc2l6ZSkgKCogMiBpbWFnZS1yb2xsLXZlcnRpY2FsLW1hcmdpbikpKQogICAgICAgICAgICAg KG8gKG50aCBuIChpbWFnZS1yb2xsLW92ZXJsYXlzKSkpKQogICAgICAgICh3aGVuIGltYWdlLXJv bGwtY2VudGVyCiAgICAgICAgICAob3ZlcmxheS1wdXQgbyAnYmVmb3JlLXN0cmluZwogICAgICAg ICAgICAgICAgICAgICAgICh3aGVuICg+ICh3aW5kb3ctcGl4ZWwtd2lkdGgpIHBhZ2Utd2lkdGgp CiAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcGVydGl6ZSAiICIgJ2Rpc3BsYXkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAoc3BhY2UgOmFsaWduLXRvCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgsKGZsb29yICgvICgtICh3aW5k b3ctcGl4ZWwtd2lkdGgpIHBhZ2Utd2lkdGgpIDIpKSkpKSkpKQogICAgICAgIChvdmVybGF5LXB1 dCBvICdkaXNwbGF5IGAoc3BhY2UgLiAoOndpZHRoICgscGFnZS13aWR0aCkgOmhlaWdodCAoLG92 ZXJsZXktaGVpZ3RoKSkpKQogICAgICAgIChvdmVybGF5LXB1dCBvICdmYWNlIGAoOmJhY2tncm91 bmQgLGltYWdlLXJvbGwtb3ZlcmxheS1mYWNlLWJnLWNvbG9yKSkKICAgICAgICAob3ZlcmxheS1w dXQgbyAnb3ZlcmxheS1zaXplIHBhZ2Utc2l6ZSkKICAgICAgICAoc2V0cSBuICgxKyBuKSkpKSkK ICA7OyBEZXRlcm1pbmUgdG8gZGlzcGxheSBwYWdlcyBhbmQgZGlzcGxheS4gVW5kaXNwbGF5IHBh Z2VzIGlzIG5vdCBuZWNlc3NhcnkgYXMKICA7OyB0aGlzIGlzIHRha2VuIGNhcmUgb2ZmIGJ5IGBp bWFnZS1yb2xsLXVwZGF0ZS1kaXNwbGF5ZWQtcGFnZXMnLgogIChsZXQgKGRpc3BsYXllZCkKICAg IChkb2xpc3QgKHAgKGltYWdlLXJvbGwtdmlzaWJsZS1vdmVybGF5cykpCiAgICAgIChhcHBseSBp bWFnZS1yb2xsLWRpc3BsYXktcGFnZS1mdW5jdGlvbgogICAgICAgICAgICAgcAogICAgICAgICAg ICAgKHdoZW4gKGVxIGltYWdlLXJvbGwtZGlzcGxheS1wYWdlLWZ1bmN0aW9uCiAgICAgICAgICAg ICAgICAgICAgICAgJ2RvYy12aWV3LWluc2VydC1pbWFnZSkKICAgICAgICAgICAgICAgYCg6d2lk dGggLGRvYy12aWV3LWltYWdlLXdpZHRoKSkpCiAgICAgIChwdXNoIHAgZGlzcGxheWVkKSkKICAg IDs7IHN0b3JlIGRpc3BsYXllZCBpbWFnZXMgZm9yIGRldGVybWluaW5nIHdoaWNoIGltYWdlcyB0 byB1cGRhdGUgd2hlbiB1cGRhdGUKICAgIDs7IGlzIHRyaWdnZXJlZAogIChpbWFnZS1tb2RlLXdp bmRvdy1wdXQgJ2Rpc3BsYXllZC1wYWdlcyAocmV2ZXJzZSBkaXNwbGF5ZWQpKQogIDs7IHN0b3Jl IHRoZSBoZWlnaHQgb2YgdGhlIHZpc2libGUgcGFnZXMgZm9yIGRldGVybWluaW5nIHdoZW4gdG8g dXBkYXRlCiAgOzsgaW1hZ2VzLCBuYW1lbHkgd2hlbiBzb21lIHBhcnQgb2YgdGhlIHJvbGwgb3V0 c2lkZSB0aGlzIHJhbmdlIGJlY29tZXMKICA7OyB2aXNpYmxlCiAgKGltYWdlLW1vZGUtd2luZG93 LXB1dCAndmlzaWJsZS1wYWdlcy12c2Nyb2xsLWxpbWl0CiAgICAgICAgICAgICAgICAgICAgICAg ICAoLSAoYXBwbHkgIycrIChtYXBjYXIgIydpbWFnZS1yb2xsLW92ZXJsYXktaGVpZ2h0IGRpc3Bs YXllZCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2luZG93LXRleHQtaGVpZ2h0IG5p bCB0KSkpKQogIDs7IHdlIG9ubHkgbmVlZCB0byBqdW1wIHRvIHRoZSByaWdodCBwYWdlLCB0aGUg dnNjcm9sbCBpcyBjb25zZXJ2ZWQgYW5kIGlmCiAgOzsgcmVxdWlyZWQgY2FuIGJlIHNldCB0byAw IGJlZm9yZSB0aGUgcmVkaXNwbGF5CiAgKHdoZW4tbGV0IChwIChpbWFnZS1yb2xsLWN1cnJlbnQt cGFnZSkpCiAgICAoZ290by1jaGFyICgxLSAoKiAyIHApKSkKICAgIDs7IChyZWRpc3BsYXkpCiAg ICA7OyBUT0RPIGltcGxlbWVudCBpbiByZWRpc3BsYXksIGBmcmFjdGlvbmFsIHZzY3JvbGwnIChp biBwYWdlIHVuaXRzKQogICAgKGltYWdlLXNldC13aW5kb3ctdnNjcm9sbCAob3IgKGltYWdlLW1v ZGUtd2luZG93LWdldCAndnNjcm9sbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGltYWdlLXJvbGwtdmVydGljYWwtbWFyZ2luKSkpKQoKKGRlZnVuIGltYWdlLXJvbGwtdXBkYXRl LWRpc3BsYXllZC1wYWdlcyAoKQogIChsZXQgKChvbGQgKHByaW50IChpbWFnZS1tb2RlLXdpbmRv dy1nZXQgJ2Rpc3BsYXllZC1wYWdlcykgIydleHRlcm5hbC1kZWJ1Z2dpbmctb3V0cHV0KSkKICAg ICAgICAobmV3IChwcmludCAoaW1hZ2Utcm9sbC12aXNpYmxlLW92ZXJsYXlzKSAjJ2V4dGVybmFs LWRlYnVnZ2luZy1vdXRwdXQpKSkKICAgIDs7IGRvbGlzdCBiZWNhdXNlIGlmIGltYWdlcy9wYWdl cyBhcmUgc21hbGwgZW5vdWdoIChvciBhZnRlciBqdW1wcyksIHRoZXJlCiAgICA7OyBtaWdodCBi ZSBtdWx0aXBsZSBpbWFnZSB0aGF0IG5lZWQgdG8gZ2V0IHVwZGF0ZWQKICAgIChkb2xpc3QgKHAg KGNsLXNldC1kaWZmZXJlbmNlIG9sZCBuZXcpKQogICAgICAoaW1hZ2Utcm9sbC11bmRpc3BsYXkt cGFnZSBwKQogICAgICAoaW1hZ2UtbW9kZS13aW5kb3ctcHV0ICdkaXNwbGF5ZWQtcGFnZXMKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBvbGQgKGRlbGV0ZSBwIG9sZCkpKSkgOyBp bXBvcnRhbnQgdG8gdXBkYXRlL3NldHEgb2xkIGJlZm9yZQogICAgOzsgc2V0dGluZy9hcHBlbmRp bmcgbmV3IGJlbG93CiAgICAoZG9saXN0IChwIChjbC1zZXQtZGlmZmVyZW5jZSBuZXcgb2xkKSkK ICAgICAgKGFwcGx5IGltYWdlLXJvbGwtZGlzcGxheS1wYWdlLWZ1bmN0aW9uCiAgICAgICAgICAg ICBwCiAgICAgICAgICAgICAod2hlbiAoZXEgaW1hZ2Utcm9sbC1kaXNwbGF5LXBhZ2UtZnVuY3Rp b24KICAgICAgICAgICAgICAgICAgICAgICAnZG9jLXZpZXctaW5zZXJ0LWltYWdlKQogICAgICAg ICAgICAgICBgKDp3aWR0aCAsZG9jLXZpZXctaW1hZ2Utd2lkdGgpKSkKICAgICAgKGltYWdlLW1v ZGUtd2luZG93LXB1dCAnZGlzcGxheWVkLXBhZ2VzIChzZXRxIG9sZCAoYXBwZW5kIG9sZCAobGlz dCBwKSkpKSkKICAgIDs7IHVwZGF0ZSBhbHNvIHZpc2libGUtcmFuZ2UKICAgIChpbWFnZS1tb2Rl LXdpbmRvdy1wdXQgJ3Zpc2libGUtcGFnZXMtdnNjcm9sbC1saW1pdAogICAgICAgICAgICAgICAg ICAgICAgICAgICAoLSAoYXBwbHkgIycrIChtYXBjYXIgIydpbWFnZS1yb2xsLW92ZXJsYXktaGVp Z2h0IG5ldykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aW5kb3ctdGV4dC1oZWln aHQgbmlsIHQpKSkpKQoKOzsgTk9URSBjb2RlIGJhc2VkIG9uICh0YWtlbiBmcm9tKSBgcGRmLXZp ZXctZ290by1wYWdlJy4KKGRlZnVuIGltYWdlLXJvbGwtZ290by1wYWdlIChwYWdlICZvcHRpb25h bCB3aW5kb3cpCiAgIkdvIHRvIFBBR0UgaW4gZG9jdW1lbnQuIgogIChpbnRlcmFjdGl2ZQogICAo bGlzdCAoaWYgY3VycmVudC1wcmVmaXgtYXJnCiAgICAgICAgICAgICAocHJlZml4LW51bWVyaWMt dmFsdWUgY3VycmVudC1wcmVmaXgtYXJnKQogICAgICAgICAgIChyZWFkLW51bWJlciAiUGFnZTog IikpKSkKICAodW5sZXNzIChhbmQgKD49IHBhZ2UgMSkKICAgICAgICAgICAgICAgKDw9IHBhZ2Ug KGNvdW50LWxpbmVzIChwb2ludC1taW4pIChwb2ludC1tYXgpKSkpCiAgICAoZXJyb3IgIk5vIHN1 Y2ggcGFnZTogJWQiIHBhZ2UpKQogICh1bmxlc3Mgd2luZG93CiAgICAoc2V0cSB3aW5kb3cKICAg ICAgICAgIDs7IChpZiAocGRmLXV0aWwtcGRmLXdpbmRvdy1wKQogICAgICAgICAgICAgIChzZWxl Y3RlZC13aW5kb3cpCiAgICAgICAgICAgIDs7IHQpKSkKICAgICAgICAgICAgICApKQogIChzYXZl LXNlbGVjdGVkLXdpbmRvdwogICAgOzsgU2VsZWN0IHRoZSB3aW5kb3cgZm9yIHRoZSBob29rcyBi ZWxvdy4KICAgICh3aGVuICh3aW5kb3ctbGl2ZS1wIHdpbmRvdykKICAgICAgKHNlbGVjdC13aW5k b3cgd2luZG93ICdub3JlY29yZCkpCiAgICAobGV0ICgoY2hhbmdpbmctcAogICAgICAgICAgIChu b3QgKGVxIHBhZ2UgKGltYWdlLXJvbGwtY3VycmVudC1wYWdlIHdpbmRvdykpKSkpCiAgICAgICh3 aGVuIGNoYW5naW5nLXAKICAgICAgICA7OyAocnVuLWhvb2tzICdwZGYtdmlldy1iZWZvcmUtY2hh bmdlLXBhZ2UtaG9vaykKICAgICAgICAoc2V0ZiAoaW1hZ2Utcm9sbC1jdXJyZW50LXBhZ2Ugd2lu ZG93KSBwYWdlKQogICAgICAgIDs7IChydW4taG9va3MgJ3BkZi12aWV3LWNoYW5nZS1wYWdlLWhv b2spKQogICAgICAgICh3aGVuICh3aW5kb3ctbGl2ZS1wIHdpbmRvdykKICAgICAgICAgIChnb3Rv LWNoYXIgKDEtICgqIDIgcGFnZSkpKQogICAgICAgICAgKGltYWdlLXJvbGwtdXBkYXRlLWRpc3Bs YXllZC1wYWdlcykpCiAgICAgIDs7ICh3aGVuIGNoYW5naW5nLXAKICAgICAgOzsgICAocGRmLXZp ZXctZGVhY3RpdmF0ZS1yZWdpb24pCiAgICAgIDs7ICAgKGZvcmNlLW1vZGUtbGluZS11cGRhdGUp CiAgICAgIDs7ICAgKHJ1bi1ob29rcyAncGRmLXZpZXctYWZ0ZXItY2hhbmdlLXBhZ2UtaG9vaykp KSkKICBuaWwpKSkpCgooZGVmdW4gaW1hZ2Utcm9sbC1uZXh0LXBhZ2UgKCZvcHRpb25hbCBuKQog IChpbnRlcmFjdGl2ZSAicCIpCiAgOzsgKHNldC13aW5kb3ctc3RhcnQgbmlsICgrIChwb2ludCkg MikpCiAgKGltYWdlLXJvbGwtZ290by1wYWdlICgrIChpbWFnZS1yb2xsLWN1cnJlbnQtcGFnZSkg bikpKQoKKGRlZnVuIGltYWdlLXJvbGwtcHJldmlvdXMtcGFnZSAoJm9wdGlvbmFsIG4pCiAgKGlu dGVyYWN0aXZlICJwIikKICAoaW1hZ2Utcm9sbC1uZXh0LXBhZ2UgKC0gbikpKQoKCihkZWZ1biBp bWFnZS1yb2xsLXNjcm9sbC1mb3J3YXJkICgmb3B0aW9uYWwgYmFja3dhcmQgc2NyZWVuKQogIChp bnRlcmFjdGl2ZSkKICAobGV0KiAoKGN1cnJlbnQtcGFnZSAoaW1hZ2Utcm9sbC1jdXJyZW50LXBh Z2UpKQogICAgICAgICAobmV3LXBhZ2UgY3VycmVudC1wYWdlKQogICAgICAgICAoY3VycmVudC1v dmVybGF5LWhlaWdodCAoaW1hZ2Utcm9sbC1vdmVybGF5LWhlaWdodCBjdXJyZW50LXBhZ2UpKQog ICAgICAgICAodmlzaWJsZS1wYWdlcy12c2Nyb2xsLWxpbWl0IChpbWFnZS1tb2RlLXdpbmRvdy1n ZXQgJ3Zpc2libGUtcGFnZXMtdnNjcm9sbC1saW1pdCkpCiAgICAgICAgIChzdGVwLXNpemUgKGlm IHNjcmVlbgogICAgICAgICAgICAgICAgICAgICAgICAod2luZG93LXRleHQtaGVpZ2h0IG5pbCB0 KQogICAgICAgICAgICAgICAgICAgICAgaW1hZ2Utcm9sbC1zdGVwLXNpemUpKQoKICAgICAgICAg OzsgZGV0ZXJtaW5lIG51bWJlciBvZiBwYWdlcyB0byBmb3J3YXJkL2JhY2t3YXJkIChlLmcuIHdo ZW4gc2Nyb2xsaW5nIGEKICAgICAgICAgOzsgZnVsbCBzY3JlZW4gdGhlIGltYWdlcy9wYWdlcyBh cmUgc21hbGwpLiBXZSBzdWJ0cmFjdCwgZnJvbSB0aGUgc3RlcAogICAgICAgICA7OyBzaXplLCB0 aGUgcmVtYWluaW5nIHZpc2libGUgcGFydCBvZiB0aGUgY3VycmVudC1wYWdlLCBhbmQgdGhlbgog ICAgICAgICA7OyBjb250aW51ZSBzdWJ0cmFjdGluZyBwYWdlLW92ZXJsYXkgaGVpZ2h0cyB1bnRp bCBubyBhdmFpbGFibGUgaGVpZ2h0CiAgICAgICAgIDs7IGlzIGxlZnQuIFRvIGFsc28gc2V0IHRo ZSBzY3JvbGwgY29ycmVjdGx5IGFmdGVyIGp1bXBpbmcgdGhlIG51bWJlcgogICAgICAgICA7OyBv ZiBwYWdlcywgd2Ugc3RvcmUgdGhlIHJlbWFpbmluZyBoZWlnaHQsIGkuZS4gdGhlIHJlbWFpbmlu ZyBoZWlnaHQKICAgICAgICAgOzsgYmVmb3JlIHRoZSBsYXN0IHN0ZXAgd2hlcmUgdGhlIGF2YWls YWJsZSBoZWlnaHQgYmVjb21lcyBuZWdhdGl2ZQogICAgICAgICA7OyAoZm9yIHRoZSBlZGdlIGNh c2Ugd2hlbiBhdmFpbGFibGUgaGVpZ2h0IGlzIDAsIHRoZXJlIGlzIG5vIG5ldwogICAgICAgICA7 OyBvdmVybGF5IHZpc2libGUgeWV0IGFuZCB0aGUgYD0nIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUg YHdoaWxlJwogICAgICAgICA7OyBjb25kaXRpb24pCiAgICAgICAgIChhdmFpbGFibGUtaGVpZ2h0 IHN0ZXAtc2l6ZSkKICAgICAgICAgKHJlbWFpbmluZy1oZWlnaHQgYXZhaWxhYmxlLWhlaWdodCkK ICAgICAgICAgbmV3LXZzY3JvbGwpCiAgICAoY29uZCAoYmFja3dhcmQKICAgICAgICAgICAoY2wt ZGVjZiBhdmFpbGFibGUtaGVpZ2h0ICh3aW5kb3ctdnNjcm9sbCBuaWwgdCkpCiAgICAgICAgICAg KHdoaWxlIChhbmQgKD4gbmV3LXBhZ2UgMCkgKD4gYXZhaWxhYmxlLWhlaWdodCAwKSkKICAgICAg ICAgICAgIChzZXRxIHJlbWFpbmluZy1oZWlnaHQgYXZhaWxhYmxlLWhlaWdodCkKICAgICAgICAg ICAgIChzZXRxIG5ldy1wYWdlICgxLSBuZXctcGFnZSkpIDsgYWxsb3cgbmV3LXBhZ2UgYmVjb21l IDwgMQogICAgICAgICAgICAgKGNsLWRlY2YgYXZhaWxhYmxlLWhlaWdodCAoaW1hZ2Utcm9sbC1v dmVybGF5LWhlaWdodCBuZXctcGFnZSkpKSkKICAgICAgICAgICh0CiAgICAgICAgICAgOzsgKGNs LWRlY2YgYXZhaWxhYmxlLWhlaWdodCAoLSAoaW1hZ2Utcm9sbC1vdmVybGF5LWhlaWdodCBjdXJy ZW50LXBhZ2UpCiAgICAgICAgICAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2lu ZG93LXZzY3JvbGwgbmlsIHQpKSkKICAgICAgICAgICAoY2wtZGVjZiBhdmFpbGFibGUtaGVpZ2h0 ICgtIChpbWFnZS1yb2xsLW92ZXJsYXktaGVpZ2h0IGN1cnJlbnQtcGFnZSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy12c2Ny b2xsIG5pbCB0KSkpCiAgICAgICAgICAgKHdoaWxlIChhbmQgKDwgbmV3LXBhZ2UgKDErIGltYWdl LXJvbGwtbGFzdC1wYWdlKSkgKD4gYXZhaWxhYmxlLWhlaWdodCAwKSkKICAgICAgICAgICAgIChz ZXRxIHJlbWFpbmluZy1oZWlnaHQgYXZhaWxhYmxlLWhlaWdodCkKICAgICAgICAgICAgIChzZXRx IG5ldy1wYWdlICgxKyBuZXctcGFnZSkpIDsgYWxsb3cgbmV3LXBhZ2UgPiBsYXN0LXBhZ2UKICAg ICAgICAgICAgIChjbC1kZWNmIGF2YWlsYWJsZS1oZWlnaHQgKGltYWdlLXJvbGwtb3ZlcmxheS1o ZWlnaHQgbmV3LXBhZ2UpKSkpKQoKICAgICh3aGVuIGJhY2t3YXJkCiAgICAgIChzZXRxIHN0ZXAt c2l6ZSAoLSBzdGVwLXNpemUpKSkKCiAgICAod2hlbiAoPSBuZXctcGFnZSBjdXJyZW50LXBhZ2Up CiAgICAgIChzZXRxIG5ldy12c2Nyb2xsICgrICh3aW5kb3ctdnNjcm9sbCBuaWwgdCkgc3RlcC1z aXplKSkpCgoKICAgIChpZiAoY29uZCAoKDwgbmV3LXBhZ2UgY3VycmVudC1wYWdlKQogICAgICAg ICAgICAgICAoZ290by1jaGFyIChpbWFnZS1yb2xsLXBhZ2UtdG8tcG9zIG5ldy1wYWdlKSkKICAg ICAgICAgICAgICAgKHNldGYgKGltYWdlLXJvbGwtY3VycmVudC1wYWdlKSAobWF4IG5ldy1wYWdl IDEpKQogICAgICAgICAgICAgICAoaW1hZ2Utc2V0LXdpbmRvdy12c2Nyb2xsCiAgICAgICAgICAg ICAgICAoaWYgKDwgbmV3LXBhZ2UgMSkKICAgICAgICAgICAgICAgICAgICAodXNlci1lcnJvciAi QmVnaW5uaW5nIG9mIGRvY3VtZW50IikKCiAgICAgICAgICAgICAgICAgICgtIChpbWFnZS1yb2xs LW92ZXJsYXktaGVpZ2h0IChpbWFnZS1yb2xsLWN1cnJlbnQtcGFnZSkpCiAgICAgICAgICAgICAg ICAgICAgIHJlbWFpbmluZy1oZWlnaHQpKSkpCiAgICAgICAgICAgICAgKCg+IG5ldy1wYWdlIGN1 cnJlbnQtcGFnZSkKICAgICAgICAgICAgICAgOzsgKHByaW50ICJoaWVyIikKICAgICAgICAgICAg ICAgKGdvdG8tY2hhciAoaW1hZ2Utcm9sbC1wYWdlLXRvLXBvcyBuZXctcGFnZSkpCiAgICAgICAg ICAgICAgIChzZXRmIChpbWFnZS1yb2xsLWN1cnJlbnQtcGFnZSkgKG1pbiBuZXctcGFnZSBpbWFn ZS1yb2xsLWxhc3QtcGFnZSkpCiAgICAgICAgICAgICAgIChpZiAoPiBuZXctcGFnZSBpbWFnZS1y b2xsLWxhc3QtcGFnZSkKICAgICAgICAgICAgICAgICAgICh1c2VyLWVycm9yICJFbmQgb2YgZG9j dW1lbnQiKQogICAgICAgICAgICAgICAgIChpbWFnZS1zZXQtd2luZG93LXZzY3JvbGwKICAgICAg ICAgICAgICAgICAgcmVtYWluaW5nLWhlaWdodCkpKQogICAgICAgICAgICAgICAoKD4gbmV3LXZz Y3JvbGwKICAgICAgICAgICAgICAgICAgIHZpc2libGUtcGFnZXMtdnNjcm9sbC1saW1pdCkKICAg ICAgICAgICAgICAgIChpbWFnZS1zZXQtd2luZG93LXZzY3JvbGwgKGlmICg8IG5ldy1wYWdlIGlt YWdlLXJvbGwtbGFzdC1wYWdlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbmV3LXZzY3JvbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAodXNlci1lcnJvciAiRW5kIG9mIGRvY3VtZW50IikpKSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgKC0gdmlzaWJsZS1wYWdlcy12c2Nyb2xs LWxpbWl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgICAg aW1hZ2Utcm9sbC12ZXJ0aWNhbC1tYXJnaW4pCiAgICAgICAgKGltYWdlLXJvbGwtdXBkYXRlLWRp c3BsYXllZC1wYWdlcykKICAgICAgKGltYWdlLXNldC13aW5kb3ctdnNjcm9sbCBuZXctdnNjcm9s bCkpKSkKCihkZWZ1biBpbWFnZS1yb2xsLXNjcm9sbC1iYWNrd2FyZCAoKQogIChpbnRlcmFjdGl2 ZSkKICAoaW1hZ2Utcm9sbC1zY3JvbGwtZm9yd2FyZCB0KSkKCihkZWZ1biBpbWFnZS1yb2xsLXNj cm9sbC1zY3JlZW4tZm9yd2FyZCAoKQogIChpbnRlcmFjdGl2ZSkKICAoaW1hZ2Utcm9sbC1zY3Jv bGwtZm9yd2FyZCBuaWwgdCkpCgooZGVmdW4gaW1hZ2Utcm9sbC1zY3JvbGwtc2NyZWVuLWJhY2t3 YXJkICgpCiAgKGludGVyYWN0aXZlKQogIChpbWFnZS1yb2xsLXNjcm9sbC1mb3J3YXJkIHQgdCkp CgooZGVmdW4gaW1hZ2Utcm9sbC1xdWljay1zY3JvbGwgKCkKICAoaW50ZXJhY3RpdmUpCiAgKGRv dGltZXMgKGkgMjAwKQogICAgKGltYWdlLXJvbGwtc2Nyb2xsLWZvcndhcmQpCiAgICAoc2l0LWZv ciAwLjAwMDEpKSkKCihkZWZ1biBpbWFnZS1yb2xsLWRlbW8tZGlzcGxheS1wYWdlIChwYWdlKQog ICJSZXR1cm4gZGVtbyBpbWFnZSBvZiBwYWdlLgpUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgZm9yIHRo ZSBpbWFnZS1yb2xsLWRlbW8uIgogIChsZXQqICgobyAoaW1hZ2Utcm9sbC1wYWdlLW92ZXJsYXkg cGFnZSkpCiAgICAgICAgIChzIChjZHIgKG92ZXJsYXktZ2V0IG8gJ2Rpc3BsYXkpKSkKICAgICAg ICAgKHcgKGNhciAocGxpc3QtZ2V0IHMgOndpZHRoKSkpCiAgICAgICAgIChoIChjYXIgKHBsaXN0 LWdldCBzIDpoZWlnaHQpKSkKICAgICAgICAgKHN2ZyAoc3ZnLWNyZWF0ZSB3IGgpKSkKICAgICh1 bmxlc3MgdyAocHJpbnQgIk5PIFciICMnZXh0ZXJuYWwtZGVidWdnaW5nLW91dHB1dCkpCiAgICAo c3ZnLXJlY3RhbmdsZSBzdmcgMCAwIHcgaCA6ZmlsbC1jb2xvciAid2hpdGUiKQogICAgKHN2Zy10 ZXh0IHN2ZwogICAgICAgICAgICAgIChudW1iZXItdG8tc3RyaW5nIHBhZ2UpCiAgICAgICAgICAg ICAgOmZvbnQtc2l6ZSAiNDAiCiAgICAgICAgICAgICAgOmZpbGwgImJsYWNrIgogICAgICAgICAg ICAgIDp4IDIwCiAgICAgICAgICAgICAgOnkgNTApCiAgICAod2hlbiBpbWFnZS1yb2xsLWNlbnRl cgogICAgICAob3ZlcmxheS1wdXQgbyAnYmVmb3JlLXN0cmluZwogICAgICAgICAgICAgICAgICAg KHdoZW4gKD4gKHdpbmRvdy1waXhlbC13aWR0aCkgdykKICAgICAgICAgICAgICAgICAgICAgKHBy b3BlcnRpemUgIiAiICdkaXNwbGF5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAo c3BhY2UgOmFsaWduLXRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KCwoZmxvb3IgKC8gKC0gKHdpbmRvdy1waXhlbC13aWR0aCkgdykgMikpKSkpKSkpCiAgICAob3Zl cmxheS1wdXQgbyAnZGlzcGxheSAoc3ZnLWltYWdlIHN2ZyA6bWFyZ2luIGAoMCAuICxpbWFnZS1y b2xsLXZlcnRpY2FsLW1hcmdpbikpKSkpCgooZGVmaW5lLWRlcml2ZWQtbW9kZSBpbWFnZS1yb2xs LW1vZGUgc3BlY2lhbC1tb2RlICJJbWFnZSBSb2xsIgogIDs7IHdlIGRvbid0IHVzZSBgKGltYWdl LW1vZGUtc2V0dXAtd2lucHJvcHMpJyBiZWNhdXNlIGl0IHdvdWxkIGFkZGl0aW9uYWxseQogIDs7 IGFkZCBgaW1hZ2UtbW9kZS1yZWFwcGx5LXdpbnByb3BzJyB0byB0aGUKICA7OyBgd2luZG93LWNv bmZpZ3VyYXRpb24tY2hhbmdlLWhvb2snLCBidXQgYGltYWdlLXJvbGwtLXJlZGlzcGxheScgYWxy ZWFkeQogIDs7IHJlYXBwbGllcyB0aGUgdnNjcm9sbCwgc28gd2Ugc2ltcGx5IGluaXRpYWxpemUg dGhlCiAgOzsgYGltYWdlLW1vZGUtd2lucHJvcHMtYWxpc3QnIGhlcmUsIGFuZCBhZGQgbGluZXMg ZnJvbQogIDs7IGBpbWFnZS1tb2RlLXJlYXBwbHktd2lucHJvcHMnIGF0IHRoZSBzdGFydCBvZiBg aW1hZ2Utcm9sbC0tcmVkaXNwbGF5Jy4KICAoYWRkLWhvb2sgJ3dpbmRvdy1jb25maWd1cmF0aW9u LWNoYW5nZS1ob29rICdpbWFnZS1yb2xsLS1yZWRpc3BsYXkgbmlsIHQpCiAgKGFkZC1ob29rICdp bWFnZS1tb2RlLW5ldy13aW5kb3ctZnVuY3Rpb25zICdpbWFnZS1yb2xsLS1uZXctd2luZG93LWZ1 bmN0aW9uIG5pbCB0KQogICh1bmxlc3MgKGxpc3RwIGltYWdlLW1vZGUtd2lucHJvcHMtYWxpc3Qp CiAgICAoc2V0cSBpbWFnZS1tb2RlLXdpbnByb3BzLWFsaXN0IG5pbCkpKQo7OyAoYWRkLWhvb2sg J3dpbmRvdy1jb25maWd1cmF0aW9uLWNoYW5nZS1ob29rCjs7ICAgICAgICAgICAjJ2ltYWdlLW1v ZGUtcmVhcHBseS13aW5wcm9wcyBuaWwgdCkpCjs7IChpbWFnZS1tb2RlLXNldHVwLXdpbnByb3Bz KSkKCihzZXRxIGltYWdlLXJvbGwtbW9kZS1tYXAKICAgICAgKGxldCAoKG1hcCAobWFrZS1zcGFy c2Uta2V5bWFwKSkpCiAgICAgICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIjxkb3duPiIpICdpbWFn ZS1yb2xsLXNjcm9sbC1mb3J3YXJkKQogICAgICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICI8dXA+ IikgJ2ltYWdlLXJvbGwtc2Nyb2xsLWJhY2t3YXJkKQogICAgICAgIChkZWZpbmUta2V5IG1hcCAo a2JkICI8bmV4dD4iKSAnaW1hZ2Utcm9sbC1uZXh0LXBhZ2UpCiAgICAgICAgKGRlZmluZS1rZXkg bWFwIChrYmQgIjxwcmlvcj4iKSAnaW1hZ2Utcm9sbC1wcmV2aW91cy1wYWdlKQogICAgICAgIChk ZWZpbmUta2V5IG1hcCAoa2JkICJTLTxuZXh0PiIpICdpbWFnZS1yb2xsLXNjcm9sbC1zY3JlZW4t Zm9yd2FyZCkKICAgICAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiUy08cHJpb3I+IikgJ2ltYWdl LXJvbGwtc2Nyb2xsLXNjcmVlbi1iYWNrd2FyZCkKICAgICAgICAoZGVmaW5lLWtleSBtYXAgW3Jl bWFwIGdvdG8tbGluZV0gJ2ltYWdlLXJvbGwtZ290by1wYWdlKQogICAgICAgIG1hcCkpCgood2hl biAoZmVhdHVyZXAgJ2V2aWwpCiAgKGV2aWwtZGVmaW5lLWtleSAnbW90aW9uIGltYWdlLXJvbGwt bW9kZS1tYXAKICAgICJqIiAnaW1hZ2Utcm9sbC1zY3JvbGwtZm9yd2FyZAogICAgImsiICdpbWFn ZS1yb2xsLXNjcm9sbC1iYWNrd2FyZAogICAgIkoiICdpbWFnZS1yb2xsLW5leHQtcGFnZQogICAg IksiICdpbWFnZS1yb2xsLXByZXZpb3VzLXBhZ2UKICAgIChrYmQgIkMtaiIpICdpbWFnZS1yb2xs LXNjcm9sbC1zY3JlZW4tZm9yd2FyZAogICAgKGtiZCAiQy1rIikgJ2ltYWdlLXJvbGwtc2Nyb2xs LXNjcmVlbi1iYWNrd2FyZCkpCgooZGVmdW4gaW1hZ2Utcm9sbC1kZW1vICgmb3B0aW9uYWwgcGFn ZS1zaXplIHBhZ2VzKQogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgoYnVmLW5hbWUgIippbWFnZS1y b2xsLWRlbW8qIikpCiAgOzsgICAoaWYgKGdldC1idWZmZXIgYnVmLW5hbWUpCiAgOzsgICAgICAg KHN3aXRjaC10by1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkKICAgICh3aXRoLWN1cnJlbnQtYnVm ZmVyIChnZXQtYnVmZmVyLWNyZWF0ZSBidWYtbmFtZSkKICAgICAgKGVyYXNlLWJ1ZmZlcikKICAg ICAgKGltYWdlLXJvbGwtbW9kZSkKICAgICAgKHNldHEgY3Vyc29yLXR5cGUgbmlsKQogICAgICAo c2V0cSBpbWFnZS1yb2xsLXN0ZXAtc2l6ZSA1MCkKICAgICAgKHNldHEtbG9jYWwgaW1hZ2Utcm9s bC1sYXN0LXBhZ2UgICAgICAgICAgICAgKG9yIHBhZ2VzIDMpCiAgICAgICAgICAgICAgICAgIGlt YWdlLXJvbGwtZGlzcGxheS1wYWdlLWZ1bmN0aW9uICdpbWFnZS1yb2xsLWRlbW8tZGlzcGxheS1w YWdlCiAgICAgICAgICAgICAgICAgIGltYWdlLXJvbGwtZGVtby1wYWdlLXNpemUgICAgICAgIChv ciBwYWdlLXNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChsYW1iZGEgKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGxldCAoKHcgKHdpbmRvdy1waXhlbC13aWR0aCkpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj b25zIHcgKCogMS40IHcpKSkpKSkKCiAgICAgIChzZXRxIGltYWdlLXJvbGwtY2VudGVyIHQpCiAg ICAgIChzd2l0Y2gtdG8tYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpKSkpCg== --00000000000081f36705dde03d39 Content-Type: text/x-emacs-lisp; charset="US-ASCII"; name="doc-view.el" Content-Disposition: attachment; filename="doc-view.el" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l2lz8wv71 O2RvYy12aWV3LmVsIC0tLSBEb2N1bWVudCB2aWV3ZXIgZm9yIEVtYWNzIC0qLSBsZXhpY2FsLWJp bmRpbmc6IHQgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KOzsKOzsgQXV0aG9yOiBUYXNzaWxvIEhvcm4gPHRzZGhAZ251Lm9yZz4K OzsgS2V5d29yZHM6IGZpbGVzLCBwZGYsIHBzLCBkdmksIGRqdnUsIGVwdWIsIGNieiwgZmIyLCB4 cHMsIG9wZW54cHMKCjs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KCjs7IEdOVSBF bWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Cjs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Cjs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCjs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCgo7OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKOzsgYWxvbmcgd2l0aCBH TlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoK Ozs7IFJlcXVpcmVtZW50czoKCjs7IFZpZXdpbmcgUFMvUERGL0RWSSBmaWxlcyByZXF1aXJlcyBH aG9zdHNjcmlwdCwgYGR2aXBkZicgKGNvbWVzIHdpdGgKOzsgR2hvc3RzY3JpcHQpIG9yIGBkdmlw ZGZtJyAoY29tZXMgd2l0aCB0ZVRlWCBvciBUZVhMaXZlKSBhbmQKOzsgYHBkZnRvdGV4dCcsIHdo aWNoIGNvbWVzIHdpdGggeHBkZiAoaHR0cHM6Ly93d3cuZm9vbGFicy5jb20veHBkZi8pCjs7IG9y IHBvcHBsZXIgKGh0dHBzOi8vcG9wcGxlci5mcmVlZGVza3RvcC5vcmcvKS4gRVBVQiwgQ0JaLCBG QjIsIFhQUwo7OyBhbmQgT1hQUyBkb2N1bWVudHMgcmVxdWlyZSBgbXV0b29sJyB3aGljaCBjb21l cyB3aXRoIG11cGRmCjs7IChodHRwczovL211cGRmLmNvbS9pbmRleC5odG1sKS4gRGp2dSBkb2N1 bWVudHMgcmVxdWlyZSBgZGRqdnUnCjs7IChmcm9tIERqVnVMaWJyZSkuICBPREYgZmlsZXMgcmVx dWlyZSBgc29mZmljZScgKGZyb20gTGlicmVPZmZpY2UpLgoKOzs7IENvbW1lbnRhcnk6Cgo7OyBE b2NWaWV3IGlzIGEgZG9jdW1lbnQgdmlld2VyIGZvciBFbWFjcy4gIEl0IGNvbnZlcnRzIGEgbnVt YmVyIG9mCjs7IGRvY3VtZW50IGZvcm1hdHMgKGluY2x1ZGluZyBQREYsIFBTLCBEVkksIERqdnUs IE9ERiwgRVBVQiwgQ0JaLAo7OyBGQjIsIFhQUyBhbmQgT1hQUyBmaWxlcykgdG8gYSBzZXQgb2Yg UE5HIChvciBUSUZGIGZvciBkanZ1KSBmaWxlcywKOzsgb25lIGltYWdlIGZvciBlYWNoIHBhZ2Us IGFuZCBkaXNwbGF5cyB0aGUgaW1hZ2VzIGluc2lkZSBhbiBFbWFjcwo7OyBidWZmZXIuICBUaGlz IGJ1ZmZlciB1c2VzIGBkb2Mtdmlldy1tb2RlJyB3aGljaCBwcm92aWRlcyBjb252ZW5pZW50Cjs7 IGtleSBiaW5kaW5ncyBmb3IgYnJvd3NpbmcgdGhlIGRvY3VtZW50Lgo7Owo7OyBUbyB1c2UgaXQg c2ltcGx5IG9wZW4gYSBkb2N1bWVudCBmaWxlIHdpdGgKOzsKOzsgICAgIEMteCBDLWYgfi9wYXRo L3RvL2RvY3VtZW50IFJFVAo7Owo7OyBhbmQgdGhlIGRvY3VtZW50IHdpbGwgYmUgY29udmVydGVk IGFuZCBkaXNwbGF5ZWQsIGlmIHlvdXIgRW1hY3Mgc3VwcG9ydHMgUE5HCjs7IGltYWdlcy4gIFdp dGggYEMtYyBDLWMnIHlvdSBjYW4gdG9nZ2xlIGJldHdlZW4gdGhlIHJlbmRlcmVkIGltYWdlcwo7 OyByZXByZXNlbnRhdGlvbiBhbmQgdGhlIHNvdXJjZSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRo ZSBkb2N1bWVudC4KOzsKOzsgU2luY2UgY29udmVyc2lvbiBtYXkgdGFrZSBzb21lIHRpbWUgYWxs IHRoZSBQTkcgaW1hZ2VzIGFyZSBjYWNoZWQgaW4gYQo7OyBzdWJkaXJlY3Rvcnkgb2YgYGRvYy12 aWV3LWNhY2hlLWRpcmVjdG9yeScgYW5kIHJldXNlZCB3aGVuIHlvdSB3YW50IHRvIHZpZXcKOzsg dGhhdCBmaWxlIGFnYWluLiAgVG8gcmVjb252ZXJ0IGEgZG9jdW1lbnQgaGl0IGBnJyAoYGRvYy12 aWV3LXJlY29udmVydC1kb2MnKQo7OyB3aGVuIGRpc3BsYXlpbmcgdGhlIGRvY3VtZW50LiAgVG8g ZGVsZXRlIGFsbCBjYWNoZWQgZmlsZXMgdXNlCjs7IGBkb2Mtdmlldy1jbGVhci1jYWNoZScuICBU byBvcGVuIHRoZSBjYWNoZSB3aXRoIGRpcmVkLCBzbyB0aGF0IHlvdSBjYW4gdGlkeQo7OyBpdCBv dXQgdXNlIGBkb2Mtdmlldy1kaXJlZC1jYWNoZScuCjs7Cjs7IFdoZW4gY29udmVyc2lvbiBpcyB1 bmRlcndheSB0aGUgZmlyc3QgcGFnZSB3aWxsIGJlIGRpc3BsYXllZCBhcyBzb29uIGFzIGl0Cjs7 IGlzIGF2YWlsYWJsZSBhbmQgdGhlIGF2YWlsYWJsZSBwYWdlcyBhcmUgcmVmcmVzaGVkIGV2ZXJ5 Cjs7IGBkb2Mtdmlldy1jb252ZXJzaW9uLXJlZnJlc2gtaW50ZXJ2YWwnIHNlY29uZHMuICBJZiB0 aGF0IHZhcmlhYmxlIGlzIG5pbCB0aGUKOzsgcGFnZXMgd29uJ3QgYmUgZGlzcGxheWVkIGJlZm9y ZSBjb252ZXJzaW9uIG9mIHRoZSBkb2N1bWVudCBmaW5pc2hlZAo7OyBjb21wbGV0ZWx5Lgo7Owo7 OyBEb2NWaWV3IGxldHMgeW91IHNlbGVjdCBhIHNsaWNlIG9mIHRoZSBkaXNwbGF5ZWQgcGFnZXMu ICBUaGlzIHNsaWNlCjs7IHdpbGwgYmUgcmVtZW1iZXJlZCBhbmQgYXBwbGllZCB0byBhbGwgcGFn ZXMgb2YgdGhlIGN1cnJlbnQKOzsgZG9jdW1lbnQuICBUaGlzIGVuYWJsZXMgeW91IHRvIGN1dCBh d2F5IHRoZSBtYXJnaW5zIG9mIGEgZG9jdW1lbnQKOzsgdG8gc2F2ZSBzb21lIHNwYWNlLiAgVG8g c2VsZWN0IGEgc2xpY2UgeW91IGNhbiB1c2UKOzsgYGRvYy12aWV3LXNldC1zbGljZScgKGJvdW5k IHRvIGBjIHMnKSB3aGljaCB3aWxsIHF1ZXJ5IHlvdSBmb3IgdGhlCjs7IGNvb3JkaW5hdGVzIG9m IHRoZSBzbGljZSdzIHRvcC1sZWZ0IGNvcm5lciBhbmQgaXRzIHdpZHRoIGFuZAo7OyBoZWlnaHQu ICBBIG11Y2ggbW9yZSBjb252ZW5pZW50IHdheSB0byBkbyB0aGUgc2FtZSBpcyBvZmZlcmVkIGJ5 Cjs7IHRoZSBjb21tYW5kIGBkb2Mtdmlldy1zZXQtc2xpY2UtdXNpbmctbW91c2UnIChib3VuZCB0 byBgYyBtJykuCjs7IEFmdGVyIGludm9jYXRpb24geW91IG9ubHkgaGF2ZSB0byBwcmVzcyBtb3Vz ZS0xIGF0IHRoZSB0b3AtbGVmdAo7OyBjb3JuZXIgYW5kIGRyYWcgaXQgdG8gdGhlIGJvdHRvbS1y aWdodCBjb3JuZXIgb2YgdGhlIGRlc2lyZWQgc2xpY2UuCjs7IEV2ZW4gbW9yZSBhY2N1cmF0ZSBh bmQgY29udmVuaWVudCBpcyB0byB1c2UKOzsgYGRvYy12aWV3LXNldC1zbGljZS1mcm9tLWJvdW5k aW5nLWJveCcgKGJvdW5kIHRvIGBjIGInKSB3aGljaCB1c2VzCjs7IHRoZSBCb3VuZGluZ0JveCBp bmZvcm1hdGlvbiBvZiB0aGUgY3VycmVudCBwYWdlIHRvIHNldCBhbiBvcHRpbWFsCjs7IHNsaWNl LiAgVG8gcmVzZXQgdGhlIHNsaWNlIHVzZSBgZG9jLXZpZXctcmVzZXQtc2xpY2UnIChib3VuZCB0 byBgYwo7OyByJykuCjs7Cjs7IFlvdSBjYW4gYWxzbyBzZWFyY2ggd2l0aGluIHRoZSBkb2N1bWVu dC4gIFRoZSBjb21tYW5kIGBkb2Mtdmlldy1zZWFyY2gnCjs7IChib3VuZCB0byBgQy1zJykgcXVl cmllcyBmb3IgYSBzZWFyY2ggcmVnZXhwIGFuZCBpbml0aWFsaXplcyBhIGxpc3Qgb2YgYWxsCjs7 IG1hdGNoaW5nIHBhZ2VzIGFuZCBtZXNzYWdlcyBob3cgbWFueSBtYXRjaC1wYWdlcyB3ZXJlIGZv dW5kLiAgQWZ0ZXIgdGhhdCB5b3UKOzsgY2FuIGp1bXAgdG8gdGhlIG5leHQgcGFnZSBjb250YWlu aW5nIGEgbWF0Y2ggd2l0aCBhbiBhZGRpdGlvbmFsIGBDLXMnLiAgV2l0aAo7OyBgQy1yJyB5b3Ug Y2FuIGRvIHRoZSBzYW1lLCBidXQgYmFja3dhcmRzLiAgVG8gc2VhcmNoIGZvciBhIG5ldyByZWdl eHAgZ2l2ZSBhCjs7IHByZWZpeCBhcmcgdG8gb25lIG9mIHRoZSBzZWFyY2ggZnVuY3Rpb25zLCBl LmcuIGJ5IHR5cGluZyBgQy11IEMtcycuICBUaGUKOzsgc2VhcmNoaW5nIHdvcmtzIGJ5IHVzaW5n IGEgcGxhaW4gdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZG9jdW1lbnQuICBJZgo7OyB0aGF0 IGRvZXNuJ3QgYWxyZWFkeSBleGlzdCB0aGUgZmlyc3QgaW52b2NhdGlvbiBvZiBgZG9jLXZpZXct c2VhcmNoJyAob3IKOzsgYGRvYy12aWV3LXNlYXJjaC1iYWNrd2FyZCcpIHN0YXJ0cyB0aGUgY29u dmVyc2lvbi4gIFdoZW4gdGhhdCBmaW5pc2hlcyBhbmQKOzsgeW91J3JlIHN0aWxsIHZpZXdpbmcg dGhlIGRvY3VtZW50IChpLmUuIHlvdSBkaWRuJ3Qgc3dpdGNoIHRvIGFub3RoZXIgYnVmZmVyKQo7 OyB5b3UncmUgcXVlcmllZCBmb3IgdGhlIHJlZ2V4cCB0aGVuLgo7Owo7OyBEaXJlZCB1c2VycyBj YW4gc2ltcGx5IGhpdCBgdicgb24gYSBkb2N1bWVudCBmaWxlLiAgSWYgaXQncyBhIFBTLCBQREYg b3IgRFZJCjs7IGl0IHdpbGwgYmUgb3BlbmVkIHVzaW5nIGBkb2Mtdmlldy1tb2RlJy4KOzsKCjs7 OyBDb25maWd1cmF0aW9uOgoKOzsgSWYgdGhlIGltYWdlcyBhcmUgdG9vIHNtYWxsIG9yIHRvbyBi aWcgeW91IHNob3VsZCBzZXQgdGhlICItclhYWCIgb3B0aW9uIGluCjs7IGBkb2Mtdmlldy1naG9z dHNjcmlwdC1vcHRpb25zJyB0byBhbm90aGVyIHZhbHVlLiAgKFRoZSBiaWdnZXIgeW91ciBzY3Jl ZW4sCjs7IHRoZSBoaWdoZXIgdGhlIHZhbHVlLikKOzsKOzsgVGhpcyBhbmQgYWxsIG90aGVyIG9w dGlvbnMgY2FuIGJlIHNldCB3aXRoIHRoZSBjdXN0b21pemF0aW9uIGludGVyZmFjZS4KOzsgU2lt cGx5IGRvCjs7Cjs7ICAgICBNLXggY3VzdG9taXplLWdyb3VwIFJFVCBkb2MtdmlldyBSRVQKOzsK OzsgYW5kIG1vZGlmeSB0aGVtIHRvIHlvdXIgbmVlZHMuCgo7OzsgVG9kbzoKCjs7IC0gYWRkIHBy aW50IGNvbW1hbmQuCjs7IC0gc2hhcmUgbW9yZSBjb2RlIHdpdGggaW1hZ2UtbW9kZS4KOzsgLSBi ZXR0ZXIgbWVudS4KOzsgLSBCaW5kIHNsaWNpbmcgdG8gYSBkcmFnIGV2ZW50Lgo7OyAtIHpvb20g dGhlIHJlZ2lvbiBhcm91bmQgdGhlIGN1cnNvciAobGlrZSB4ZHZpKS4KOzsgLSBnZXQgcmlkIG9m IHRoZSBzaWxseSBhcnJvdyBpbiB0aGUgZnJpbmdlLgo7OyAtIGltcHJvdmUgYW50aS1hbGlhc2lu ZyAocGRmLXV0aWxzIGdldHMgaXQgYmV0dGVyKS4KCjs7OzsgQWJvdXQgaXNlYXJjaCBzdXBwb3J0 Cgo7OyBJIHRyaWVkIGltcGxlbWVudGluZyBpc2VhcmNoIGJ5IHNldHRpbmcKOzsgYGlzZWFyY2gt c2VhcmNoLWZ1bi1mdW5jdGlvbicgYnVmZmVyLWxvY2FsbHksIGJ1dCB0aGF0IGRpZG4ndAo7OyB3 b3JrIHRvbyBnb29kLiAgVGhlIGZ1bmN0aW9uIGRvaW5nIHRoZSByZWFsIHNlYXJjaCB3YXMgY2Fs bGVkCjs7IGVuZGxlc3NseSBzb21laG93LiAgQnV0IGV2ZW4gaWYgd2UnZCBnZXQgdGhhdCB3b3Jr aW5nIG5vIHJlYWwKOzsgaXNlYXJjaCBmZWVsaW5nIGNvbWVzIHVwIGR1ZSB0byB0aGUgbWlzc2lu ZyBtYXRjaCBoaWdobGlnaHRpbmcuCjs7IEN1cnJlbnRseSBJIGRpc3BsYXkgYWxsIGxpbmVzIGNv bnRhaW5pbmcgYSBtYXRjaCBpbiBhIHRvb2x0aXAgYW5kCjs7IGVhY2ggQy1zIG9yIEMtciBqdW1w cyBkaXJlY3RseSB0byB0aGUgbmV4dC9wcmV2aW91cyBwYWdlIHdpdGggYQo7OyBtYXRjaC4gIFdp dGggaXNlYXJjaCB3ZSBjb3VsZCBvbmx5IGRpc3BsYXkgdGhlIGN1cnJlbnQgbWF0Y2guICBTbwo7 OyB3ZSBoYWQgdG8gZGVjaWRlIGlmIGFub3RoZXIgQy1zIGp1bXBzIHRvIHRoZSBuZXh0IHBhZ2Ug d2l0aCBhCjs7IG1hdGNoICh0aHVzIG9ubHkgdGhlIGZpcnN0IG1hdGNoIGluIGEgcGFnZSB3aWxs IGJlIGRpc3BsYXllZCBpbiBhCjs7IHRvb2x0aXApIG9yIHRvIHRoZSBuZXh0IG1hdGNoLCB3aGlj aCB3b3VsZCBkbyBub3RoaW5nIHZpc2libGUKOzsgKGV4Y2VwdCB0aGUgdG9vbHRpcCkgaWYgdGhl IG5leHQgbWF0Y2ggaXMgb24gdGhlIHNhbWUgcGFnZS4KCjs7IEFuZCBpdCdzIG11Y2ggc2xvd2Vy IHRoYW4gdGhlIGN1cnJlbnQgc2VhcmNoIGZhY2lsaXR5LCBiZWNhdXNlCjs7IGlzZWFyY2ggcmVh bGx5IHNlYXJjaGVzIGZvciBlYWNoIHN0ZXAgZm9yd2FyZCBvciBiYWNrd2FyZCB3aGVyZWFzCjs7 IHRoZSBjdXJyZW50IGFwcHJvYWNoIHNlYXJjaGVzIG9uY2UgYW5kIHRoZW4gaXQga25vd3MgdG8g d2hpY2gKOzsgcGFnZXMgdG8ganVtcC4KCjs7IEFueXdheSwgaWYgc29tZW9uZSB3aXRoIGJldHRl ciBpc2VhcmNoIGtub3dsZWRnZSB3YW50cyB0byBnaXZlIGl0IGEgdHJ5LAo7OyBmZWVsIGZyZWUg dG8gZG8gaXQuICAtLVRhc3NpbG8KCjs7OyBDb2RlOgoKKHJlcXVpcmUgJ2NsLWxpYikKKHJlcXVp cmUgJ2RpcmVkKQoocmVxdWlyZSAnaW1hZ2UtbW9kZSkKKHJlcXVpcmUgJ2prYS1jb21wcikKKGV2 YWwtd2hlbi1jb21waWxlIChyZXF1aXJlICdzdWJyLXgpKQoKOzs7OyBDdXN0b21pemF0aW9uIE9w dGlvbnMKCihkZWZncm91cCBkb2MtdmlldyBuaWwKICAiSW4tYnVmZmVyIGRvY3VtZW50IHZpZXdl ci4KVGhlIHZpZXdlciBoYW5kbGVzIFBERiwgUG9zdFNjcmlwdCwgRFZJLCBESlZVLCBPREYsIEVQ VUIsIENCWiwKRkIyLCBYUFMgYW5kIE9YUFMgZmlsZXMsIGlmIHRoZSBhcHByb3ByaWF0ZSBjb252 ZXJ0ZXIgcHJvZ3JhbXMKYXJlIGF2YWlsYWJsZSAoc2VlIEluZm8gbm9kZSBgKGVtYWNzKURvY3Vt ZW50IFZpZXcnKSIKICA6bGluayAnKGZ1bmN0aW9uLWxpbmsgZG9jLXZpZXcpCiAgOnZlcnNpb24g IjIyLjIiCiAgOmdyb3VwICdhcHBsaWNhdGlvbnMKICA6Z3JvdXAgJ2RhdGEKICA6Z3JvdXAgJ211 bHRpbWVkaWEKICA6cHJlZml4ICJkb2Mtdmlldy0iKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1naG9z dHNjcmlwdC1wcm9ncmFtCiAgKGNvbmQKICAgKChtZW1xIHN5c3RlbS10eXBlICcod2luZG93cy1u dCBtcy1kb3MpKQogICAgKGNvbmQKICAgICA7OyBXaW5kb3dzIEdob3N0c2NyaXB0CiAgICAgKChl eGVjdXRhYmxlLWZpbmQgImdzd2luNjRjIikgImdzd2luNjRjIikKICAgICAoKGV4ZWN1dGFibGUt ZmluZCAiZ3N3aW4zMmMiKSAiZ3N3aW4zMmMiKQogICAgIDs7IFRoZSBHUyB3cmFwcGVyIGNvbWlu ZyB3aXRoIFRlWCBMaXZlCiAgICAgKChleGVjdXRhYmxlLWZpbmQgInJ1bmdzIikgInJ1bmdzIikK ICAgICA7OyBUaGUgTWlrVGVYIGJ1aWx0aW4gR1MgQ2hlY2sgaWYgbWdzIGlzIGZ1bmN0aW9uYWwg Zm9yIGV4dGVybmFsCiAgICAgOzsgbm9uLU1pa1RlWCBhcHBzLiAgV2FzIGF2YWlsYWJsZSB1bmRl cjoKICAgICA7OyBodHRwOi8vYmxvZy5taWt0ZXgub3JnL3Bvc3QvMjAwNS8wNC8wNy9TdGFydGlu Zy1tZ3NleGUtYXQtdGhlLURPUy1Qcm9tcHQuYXNweAogICAgICgoYW5kIChleGVjdXRhYmxlLWZp bmQgIm1ncyIpCiAgICAgICAgICAgKD0gMCAoc2hlbGwtY29tbWFuZCAibWdzIC1xIC1kTk9ESVNQ TEFZIC1jIHF1aXQiKSkpCiAgICAgICJtZ3MiKSkpCiAgICh0ICJncyIpKQogICJQcm9ncmFtIHRv IGNvbnZlcnQgUFMgYW5kIFBERiBmaWxlcyB0byBQTkcuIgogIDp0eXBlICdmaWxlCiAgOnZlcnNp b24gIjI3LjEiKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1wZGZkcmF3LXByb2dyYW0KICAoY29uZAog ICAoKGV4ZWN1dGFibGUtZmluZCAicGRmZHJhdyIpICJwZGZkcmF3IikKICAgKChleGVjdXRhYmxl LWZpbmQgIm11ZHJhdyIpICJtdWRyYXciKQogICAoKGV4ZWN1dGFibGUtZmluZCAibXV0b29sIikg Im11dG9vbCIpCiAgICh0ICJtdWRyYXciKSkKICAiTmFtZSBvZiBNdVBERidzIHByb2dyYW0gdG8g Y29udmVydCBQREYgZmlsZXMgdG8gUE5HLiIKICA6dHlwZSAnZmlsZQogIDp2ZXJzaW9uICIyNC40 IikKCihkZWZjdXN0b20gZG9jLXZpZXctcGRmdG90ZXh0LXByb2dyYW0tYXJncyAnKCItcmF3IikK ICAiUGFyYW1ldGVycyB0byBnaXZlIHRvIHRoZSBwZGZ0b3RleHQgY29tbWFuZC4iCiAgOnZlcnNp b24gIjI3LjEiCiAgOnR5cGUgJyhyZXBlYXQgc3RyaW5nKSkKCihkZWZjdXN0b20gZG9jLXZpZXct cGRmLT5wbmctY29udmVydGVyLWZ1bmN0aW9uCiAgKGlmIChleGVjdXRhYmxlLWZpbmQgZG9jLXZp ZXctcGRmZHJhdy1wcm9ncmFtKQogICAgICAjJ2RvYy12aWV3LXBkZi0+cG5nLWNvbnZlcnRlci1t dXBkZgogICAgIydkb2Mtdmlldy1wZGYtPnBuZy1jb252ZXJ0ZXItZ2hvc3RzY3JpcHQpCiAgIkZ1 bmN0aW9uIHRvIGNhbGwgdG8gY29udmVydCBhIFBERiBmaWxlIGludG8gYSBQTkcgZmlsZS4iCiAg OnR5cGUgJyhyYWRpbwogICAgICAgICAgKGZ1bmN0aW9uLWl0ZW0gZG9jLXZpZXctcGRmLT5wbmct Y29udmVydGVyLWdob3N0c2NyaXB0CiAgICAgICAgICAgICAgICAgICAgICAgICA6ZG9jICJVc2Ug Z2hvc3RzY3JpcHQiKQogICAgICAgICAgKGZ1bmN0aW9uLWl0ZW0gZG9jLXZpZXctcGRmLT5wbmct Y29udmVydGVyLW11cGRmCiAgICAgICAgICAgICAgICAgICAgICAgICA6ZG9jICJVc2UgbXVwZGYi KQogICAgICAgICAgZnVuY3Rpb24pCiAgOnZlcnNpb24gIjI0LjQiKQoKKGRlZmN1c3RvbSBkb2Mt dmlldy1naG9zdHNjcmlwdC1vcHRpb25zCiAgJygiLWRTQUZFUiIgOzsgQXZvaWQgc2VjdXJpdHkg cHJvYmxlbXMgd2hlbiByZW5kZXJpbmcgZmlsZXMgZnJvbSB1bnRydXN0ZWQKICAgIDs7IHNvdXJj ZXMuCiAgICAiLWROT1BBVVNFIiAiLWRUZXh0QWxwaGFCaXRzPTQiCiAgICAiLWRCQVRDSCIgIi1k R3JhcGhpY3NBbHBoYUJpdHM9NCIgIi1kUVVJRVQiKQogICJBIGxpc3Qgb2Ygb3B0aW9ucyB0byBn aXZlIHRvIGdob3N0c2NyaXB0LiIKICA6dHlwZSAnKHJlcGVhdCBzdHJpbmcpKQoKKGRlZmN1c3Rv bSBkb2Mtdmlldy1naG9zdHNjcmlwdC1kZXZpY2UgInBuZzE2bSIKICAiT3V0cHV0IGRldmljZSB0 byBnaXZlIHRvIGdob3N0c2NyaXB0LiIKICA6dHlwZSAnc3RyaW5nCiAgOnZlcnNpb24gIjI3LjEi KQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1yZXNvbHV0aW9uIDEwMAogICJEb3RzIHBlciBpbmNoIHJl c29sdXRpb24gdXNlZCB0byByZW5kZXIgdGhlIGRvY3VtZW50cy4KSGlnaGVyIHZhbHVlcyByZXN1 bHQgaW4gbGFyZ2VyIGltYWdlcy4iCiAgOnR5cGUgJ251bWJlcikKCihkZWZjdXN0b20gZG9jLXZp ZXctbXV0b29sLXVzZXItc3R5bGVzaGVldCBuaWwKICAiVXNlciBzdHlsZXNoZWV0IHRvIHVzZSB3 aGVuIGNvbnZlcnRpbmcgRVBVQiBkb2N1bWVudHMgdG8gUERGLiIKICA6dHlwZSAnKGNob2ljZSAo Y29uc3QgbmlsKQogICAgICAgICAgICAgICAgIChmaWxlIDptdXN0LW1hdGNoIHQpKQogIDp2ZXJz aW9uICIyOS4xIikKCihkZWZ2YXIgZG9jLXZpZXctZG9jLXR5cGUgbmlsCiAgIlRoZSB0eXBlIG9m IGRvY3VtZW50IGluIHRoZSBjdXJyZW50IGJ1ZmZlci4KQ2FuIGJlIGBkdmknLCBgcGRmJywgYHBz JywgYGRqdnUnLCBgb2RmJywgYGVwdWInLCBgY2J6JywgYGZiMicsCmB4cHMnIG9yIGBveHBzJy4i KQoKOzsgRklYTUU6IFRoZSBkb2Mtdmlldy1jdXJyZW50LSogZGVmaW5pdGlvbnMgYmVsb3cgYXJl IG1hY3JvcyBiZWNhdXNlIHRoZXkKOzsgbWFwIHRvIGFjY2Vzc29ycyB3aGljaCB3ZSB3YW50IHRv IHVzZSB2aWEgYHNldGYnIGFzIHdlbGwhCihkZWZtYWNybyBkb2Mtdmlldy1jdXJyZW50LXBhZ2Ug KCZvcHRpb25hbCB3aW4pCiAgYChpbWFnZS1tb2RlLXdpbmRvdy1nZXQgJ3BhZ2UgLHdpbikpCihk ZWZtYWNybyBkb2Mtdmlldy1jdXJyZW50LWluZm8gKCkgJyhpbWFnZS1tb2RlLXdpbmRvdy1nZXQg J2luZm8pKQooZGVmbWFjcm8gZG9jLXZpZXctY3VycmVudC1vdmVybGF5ICgpICcoaW1hZ2UtbW9k ZS13aW5kb3ctZ2V0ICdvdmVybGF5KSkKKGRlZm1hY3JvIGRvYy12aWV3LWN1cnJlbnQtaW1hZ2Ug KCkgJyhpbWFnZS1tb2RlLXdpbmRvdy1nZXQgJ2ltYWdlKSkKKGRlZm1hY3JvIGRvYy12aWV3LWN1 cnJlbnQtc2xpY2UgKCkgJyhpbWFnZS1tb2RlLXdpbmRvdy1nZXQgJ3NsaWNlKSkKCihkZWZ2YXIt bG9jYWwgZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyIG5pbAogICJPbmx5IHVzZWQgaW50ZXJu YWxseS4iKQoKKGRlZnVuIGRvYy12aWV3LWN1c3RvbS1zZXQtZXB1Yi1mb250LXNpemUgKG9wdGlv bi1uYW1lIG5ldy12YWx1ZSkKICAoc2V0LWRlZmF1bHQgb3B0aW9uLW5hbWUgbmV3LXZhbHVlKQog IChkb2xpc3QgKHggKGJ1ZmZlci1saXN0KSkKICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHgKICAg ICAgKHdoZW4gKGVxIGRvYy12aWV3LWRvYy10eXBlICdlcHViKQogICAgICAgIChkZWxldGUtZGly ZWN0b3J5IGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRpciB0KQogICAgICAgIChkb2Mtdmlldy1p bml0aWF0ZS1kaXNwbGF5KQogICAgICAgIChkb2Mtdmlldy1nb3RvLXBhZ2UgKGRvYy12aWV3LWN1 cnJlbnQtcGFnZSkpKSkpKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1lcHViLWZvbnQtc2l6ZSBuaWwK ICAiRm9udCBzaXplIGluIHBvaW50cyBmb3IgRVBVQiBsYXlvdXQuIgogIDp0eXBlICcoY2hvaWNl IChjb25zdCBuaWwpIGludGVnZXIpCiAgOnNldCAjJ2RvYy12aWV3LWN1c3RvbS1zZXQtZXB1Yi1m b250LXNpemUKICA6dmVyc2lvbiAiMjkuMSIpCgooZGVmY3VzdG9tIGRvYy12aWV3LXNjYWxlLWlu dGVybmFsbHkgdAogICJXaGV0aGVyIHdlIHNob3VsZCB0cnkgdG8gcmVzY2FsZSBpbWFnZXMgb3Vy c2VsdmVzLgpJZiBuaWwsIHRoZSBkb2N1bWVudCBpcyByZS1yZW5kZXJlZCBldmVyeSB0aW1lIHRo ZSBzY2FsaW5nIGZhY3RvciBpcyBtb2RpZmllZC4KVGhpcyBvbmx5IGhhcyBhbiBlZmZlY3QgaWYg dGhlIGltYWdlIGxpYnJhcmllcyBsaW5rZWQgd2l0aCBFbWFjcyBzdXBwb3J0CnNjYWxpbmcuIgog IDp2ZXJzaW9uICIyNC40IgogIDp0eXBlICdib29sZWFuKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1p bWFnZS13aWR0aCA4NTAKICAiRGVmYXVsdCBpbWFnZSB3aWR0aC4KSGFzIG9ubHkgYW4gZWZmZWN0 IGlmIGBkb2Mtdmlldy1zY2FsZS1pbnRlcm5hbGx5JyBpcyBub24tbmlsIGFuZCBzdXBwb3J0IGZv cgpzY2FsaW5nIGlzIGNvbXBpbGVkIGludG8gRW1hY3MuIgogIDp2ZXJzaW9uICIyNC4xIgogIDp0 eXBlICdudW1iZXIpCgooZGVmY3VzdG9tIGRvYy12aWV3LWR2aXBkZm0tcHJvZ3JhbSAiZHZpcGRm bSIKICAiUHJvZ3JhbSB0byBjb252ZXJ0IERWSSBmaWxlcyB0byBQREYuCgpEVkkgZmlsZSB3aWxs IGJlIGNvbnZlcnRlZCB0byBQREYgYmVmb3JlIHRoZSByZXN1bHRpbmcgUERGIGlzCmNvbnZlcnRl ZCB0byBQTkcuCgpJZiB0aGlzIGFuZCBgZG9jLXZpZXctZHZpcGRmLXByb2dyYW0nIGFyZSBzZXQs CmBkb2Mtdmlldy1kdmlwZGYtcHJvZ3JhbScgd2lsbCBiZSBwcmVmZXJyZWQuIgogIDp0eXBlICdm aWxlKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1kdmlwZGYtcHJvZ3JhbSAiZHZpcGRmIgogICJQcm9n cmFtIHRvIGNvbnZlcnQgRFZJIGZpbGVzIHRvIFBERi4KCkRWSSBmaWxlIHdpbGwgYmUgY29udmVy dGVkIHRvIFBERiBiZWZvcmUgdGhlIHJlc3VsdGluZyBQREYgaXMKY29udmVydGVkIHRvIFBORy4K CklmIHRoaXMgYW5kIGBkb2Mtdmlldy1kdmlwZGZtLXByb2dyYW0nIGFyZSBzZXQsCmBkb2Mtdmll dy1kdmlwZGYtcHJvZ3JhbScgd2lsbCBiZSBwcmVmZXJyZWQuIgogIDp0eXBlICdmaWxlKQoKKGRl ZmluZS1vYnNvbGV0ZS12YXJpYWJsZS1hbGlhcyAnZG9jLXZpZXctdW5vY29udi1wcm9ncmFtICdk b2Mtdmlldy1vZGYtPnBkZi1jb252ZXJ0ZXItcHJvZ3JhbSAiMjQuNCIpCgooZGVmY3VzdG9tIGRv Yy12aWV3LW9kZi0+cGRmLWNvbnZlcnRlci1wcm9ncmFtCiAgKGNvbmQKICAgKChleGVjdXRhYmxl LWZpbmQgInNvZmZpY2UiKSAic29mZmljZSIpCiAgICgoZXhlY3V0YWJsZS1maW5kICJ1bm9jb252 IikgInVub2NvbnYiKQogICAodCAic29mZmljZSIpKQogICJQcm9ncmFtIHRvIGNvbnZlcnQgYW55 IGZpbGUgdHlwZSByZWFkYWJsZSBieSBPcGVuT2ZmaWNlLm9yZyB0byBQREYuCgpOZWVkZWQgZm9y IHZpZXdpbmcgT3Blbk9mZmljZS5vcmcgKGFuZCBNUyBPZmZpY2UpIGZpbGVzLiIKICA6dmVyc2lv biAiMjQuNCIKICA6dHlwZSAnZmlsZSkKCihkZWZjdXN0b20gZG9jLXZpZXctb2RmLT5wZGYtY29u dmVydGVyLWZ1bmN0aW9uCiAgKGNvbmQKICAgKChzdHJpbmctbWF0Y2ggInVub2NvbnZcXCciIGRv Yy12aWV3LW9kZi0+cGRmLWNvbnZlcnRlci1wcm9ncmFtKQogICAgIydkb2Mtdmlldy1vZGYtPnBk Zi1jb252ZXJ0ZXItdW5vY29udikKICAgKChzdHJpbmctbWF0Y2ggInNvZmZpY2VcXCciIGRvYy12 aWV3LW9kZi0+cGRmLWNvbnZlcnRlci1wcm9ncmFtKQogICAgIydkb2Mtdmlldy1vZGYtPnBkZi1j b252ZXJ0ZXItc29mZmljZSkpCiAgIkZ1bmN0aW9uIHRvIGNhbGwgdG8gY29udmVydCBhIE9ERiBm aWxlIGludG8gYSBQREYgZmlsZS4iCiAgOnR5cGUgJyhyYWRpbwogICAgICAgICAgKGZ1bmN0aW9u LWl0ZW0gZG9jLXZpZXctb2RmLT5wZGYtY29udmVydGVyLXVub2NvbnYKICAgICAgICAgICAgICAg ICAgICAgICAgIDpkb2MgIlVzZSB1bm9jb252IikKICAgICAgICAgIChmdW5jdGlvbi1pdGVtIGRv Yy12aWV3LW9kZi0+cGRmLWNvbnZlcnRlci1zb2ZmaWNlCiAgICAgICAgICAgICAgICAgICAgICAg ICA6ZG9jICJVc2UgTGlicmVPZmZpY2UiKQogICAgICAgICAgZnVuY3Rpb24pCiAgOnZlcnNpb24g IjI0LjQiKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1wczJwZGYtcHJvZ3JhbSAicHMycGRmIgogICJQ cm9ncmFtIHRvIGNvbnZlcnQgUFMgZmlsZXMgdG8gUERGLgoKUFMgZmlsZXMgd2lsbCBiZSBjb252 ZXJ0ZWQgdG8gUERGIGJlZm9yZSBzZWFyY2hpbmcgaXMgcG9zc2libGUuIgogIDp0eXBlICdmaWxl KQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1wZGZ0b3RleHQtcHJvZ3JhbSAicGRmdG90ZXh0IgogICJQ cm9ncmFtIHRvIGNvbnZlcnQgUERGIGZpbGVzIHRvIHBsYWluIHRleHQuCgpOZWVkZWQgZm9yIHNl YXJjaGluZy4iCiAgOnR5cGUgJ2ZpbGUpCgooZGVmY3VzdG9tIGRvYy12aWV3LWNhY2hlLWRpcmVj dG9yeQogIChleHBhbmQtZmlsZS1uYW1lIChmb3JtYXQgImRvY3ZpZXclZCIgKHVzZXItdWlkKSkK CQkgICAgdGVtcG9yYXJ5LWZpbGUtZGlyZWN0b3J5KQogICJUaGUgYmFzZSBkaXJlY3RvcnksIHdo ZXJlIHRoZSBQTkcgaW1hZ2VzIHdpbGwgYmUgc2F2ZWQuIgogIDp0eXBlICdkaXJlY3RvcnkpCgoo ZGVmdmFyIGRvYy12aWV3LWNvbnZlcnNpb24tYnVmZmVyICIgKmRvYy12aWV3IGNvbnZlcnNpb24g b3V0cHV0KiIKICAiVGhlIGJ1ZmZlciB3aGVyZSBtZXNzYWdlcyBmcm9tIHRoZSBjb252ZXJ0ZXIg cHJvZ3JhbXMgZ28gdG8uIikKCihkZWZjdXN0b20gZG9jLXZpZXctY29udmVyc2lvbi1yZWZyZXNo LWludGVydmFsIDEKICAiSW50ZXJ2YWwgaW4gc2Vjb25kcyBiZXR3ZWVuIHJlZnJlc2hlcyBvZiB0 aGUgRG9jVmlldyBidWZmZXIgd2hpbGUgY29udmVydGluZy4KQWZ0ZXIgc3VjaCBhIHJlZnJlc2gg bmV3bHkgY29udmVydGVkIHBhZ2VzIHdpbGwgYmUgYXZhaWxhYmxlIGZvcgp2aWV3aW5nLiAgSWYg c2V0IHRvIG5pbCB0aGVyZSB3b24ndCBiZSBhbnkgcmVmcmVzaGVzIGFuZCB0aGUKcGFnZXMgd29u J3QgYmUgZGlzcGxheWVkIGJlZm9yZSBjb252ZXJzaW9uIG9mIHRoZSB3aG9sZSBkb2N1bWVudApo YXMgZmluaXNoZWQuIgogIDp0eXBlICdpbnRlZ2VyKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1jb250 aW51b3VzIG5pbAogICJJbiBDb250aW51b3VzIG1vZGUgcmVhY2hpbmcgdGhlIHBhZ2UgZWRnZSBh ZHZhbmNlcyB0byBuZXh0L3ByZXZpb3VzIHBhZ2UuCldoZW4gbm9uLW5pbCwgc2Nyb2xsaW5nIGEg bGluZSB1cHdhcmQgYXQgdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBwYWdlCm1vdmVzIHRvIHRoZSBu ZXh0IHBhZ2UsIGFuZCBzY3JvbGxpbmcgYSBsaW5lIGRvd253YXJkIGF0IHRoZSB0b3AgZWRnZQpv ZiB0aGUgcGFnZSBtb3ZlcyB0byB0aGUgcHJldmlvdXMgcGFnZS4iCiAgOnR5cGUgJ2Jvb2xlYW4K ICA6dmVyc2lvbiAiMjMuMiIpCgo7Ozs7IEludGVybmFsIFZhcmlhYmxlcwoKKGRlZnZhci1sb2Nh bCBkb2Mtdmlldy0tY3VycmVudC1jb252ZXJ0ZXItcHJvY2Vzc2VzIG5pbAogICJPbmx5IHVzZWQg aW50ZXJuYWxseS4iKQoKKGRlZnVuIGRvYy12aWV3LW5ldy13aW5kb3ctZnVuY3Rpb24gKHdpbnBy b3BzKQogIDs7IChtZXNzYWdlICJOZXcgd2luZG93ICVzIGZvciBidWYgJXMiIChjYXIgd2lucHJv cHMpIChjdXJyZW50LWJ1ZmZlcikpCiAgKGNsLWFzc2VydCAob3IgKGVxIHQgKGNhciB3aW5wcm9w cykpCiAgICAgICAgICAgICAgICAgKGVxICh3aW5kb3ctYnVmZmVyIChjYXIgd2lucHJvcHMpKSAo Y3VycmVudC1idWZmZXIpKSkpCiAgKGxldCAoKG9sIChpbWFnZS1tb2RlLXdpbmRvdy1nZXQgJ292 ZXJsYXkgd2lucHJvcHMpKSkKICAgIChpZiBvbAogICAgICAgIChwcm9nbgogICAgICAgICAgKHNl dHEgb2wgKGNvcHktb3ZlcmxheSBvbCkpCiAgICAgICAgICA7OyBgb2wnIG1pZ2h0IGFjdHVhbGx5 IGJlIGRlYWQuCiAgICAgICAgICAobW92ZS1vdmVybGF5IG9sIChwb2ludC1taW4pIChwb2ludC1t YXgpKSkKICAgICAgKHNldHEgb2wgKG1ha2Utb3ZlcmxheSAocG9pbnQtbWluKSAocG9pbnQtbWF4 KSBuaWwgdCkpCiAgICAgIChvdmVybGF5LXB1dCBvbCAnZG9jLXZpZXcgdCkpCiAgICAob3Zlcmxh eS1wdXQgb2wgJ3dpbmRvdyAoY2FyIHdpbnByb3BzKSkKICAgICh1bmxlc3MgKHdpbmRvd3AgKGNh ciB3aW5wcm9wcykpCiAgICAgIDs7IEl0J3MgYSBwc2V1ZG8gZW50cnkuICBMZXQncyBtYWtlIHN1 cmUgaXQncyBub3QgZGlzcGxheWVkICh0aGUKICAgICAgOzsgYHdpbmRvdycgcHJvcGVydHkgaXMg b25seSBlZmZlY3RpdmUgaWYgaXRzIHZhbHVlIGlzIGEgd2luZG93KS4KICAgICAgKGNsLWFzc2Vy dCAoZXEgdCAoY2FyIHdpbnByb3BzKSkpCiAgICAgIChkZWxldGUtb3ZlcmxheSBvbCkpCiAgICAo aW1hZ2UtbW9kZS13aW5kb3ctcHV0ICdvdmVybGF5IG9sIHdpbnByb3BzKQogICAgKHdoZW4gKGFu ZCAod2luZG93cCAoY2FyIHdpbnByb3BzKSkKICAgICAgICAgICAgICAgKHN0cmluZ3AgKG92ZXJs YXktZ2V0IG9sICdkaXNwbGF5KSkKICAgICAgICAgICAgICAgKG51bGwgZG9jLXZpZXctLWN1cnJl bnQtY29udmVydGVyLXByb2Nlc3NlcykpCiAgICAgIDs7IFdlJ3JlIG5vdCBkaXNwbGF5aW5nIGFu IGltYWdlIHlldCwgc28gbGV0J3MgZG8gc28uICBUaGlzIGhhcHBlbnMgd2hlbgogICAgICA7OyB0 aGUgYnVmZmVyIGlzIGRpc3BsYXllZCBmb3IgdGhlIGZpcnN0IHRpbWUuCiAgICAgIDs7IERvbid0 IGRvIGl0IGlmIHRoZXJlJ3MgYSBjb252ZXJzaW9uIGlzIHJ1bm5pbmcsIHNpbmNlIGluIHRoYXQg Y2FzZSwgaXQKICAgICAgOzsgd2lsbCBiZSBkb25lIGxhdGVyLgogICAgICAod2l0aC1zZWxlY3Rl ZC13aW5kb3cgKGNhciB3aW5wcm9wcykKICAgICAgICAoZG9jLXZpZXctZ290by1wYWdlIChpbWFn ZS1tb2RlLXdpbmRvdy1nZXQgJ3BhZ2UgdCkpKSkpKQoKKGRlZnZhci1sb2NhbCBkb2Mtdmlldy0t Y3VycmVudC1maWxlcyBuaWwKICAiT25seSB1c2VkIGludGVybmFsbHkuIikKCihkZWZ2YXItbG9j YWwgZG9jLXZpZXctLWN1cnJlbnQtdGltZXIgbmlsCiAgIk9ubHkgdXNlZCBpbnRlcm5hbGx5LiIp CgooZGVmdmFyLWxvY2FsIGRvYy12aWV3LS1jdXJyZW50LXNlYXJjaC1tYXRjaGVzIG5pbAogICJP bmx5IHVzZWQgaW50ZXJuYWxseS4iKQoKKGRlZnZhciBkb2Mtdmlldy0tcGVuZGluZy1jYWNoZS1m bHVzaCBuaWwKICAiT25seSB1c2VkIGludGVybmFsbHkuIikKCihkZWZ2YXIgZG9jLXZpZXctLWJ1 ZmZlci1maWxlLW5hbWUgbmlsCiAgIk9ubHkgdXNlZCBpbnRlcm5hbGx5LgpUaGUgZmlsZSBuYW1l IHVzZWQgZm9yIGNvbnZlcnNpb24uICBOb3JtYWxseSBpdCdzIHRoZSBzYW1lIGFzCmBidWZmZXIt ZmlsZS1uYW1lJywgYnV0IGZvciByZW1vdGUgZmlsZXMsIGNvbXByZXNzZWQgZmlsZXMgYW5kCmZp bGVzIGluc2lkZSBhbiBhcmNoaXZlIGl0IGlzIGEgdGVtcG9yYXJ5IGNvcHkgb2YKdGhlICh1bmNv bXByZXNzZWQsIGV4dHJhY3RlZCkgZmlsZSByZXNpZGluZyBpbgpgZG9jLXZpZXctY2FjaGUtZGly ZWN0b3J5Jy4iKQoKKGRlZnZhciBkb2Mtdmlldy1zaW5nbGUtcGFnZS1jb252ZXJ0ZXItZnVuY3Rp b24gbmlsCiAgIkZ1bmN0aW9uIHRvIGNhbGwgdG8gY29udmVydCBhIHNpbmdsZSBwYWdlIG9mIHRo ZSBkb2N1bWVudCB0byBhIGJpdG1hcCBmaWxlLgpNYXkgb3BlcmF0ZSBvbiB0aGUgc291cmNlIGRv Y3VtZW50IG9yIG9uIHNvbWUgaW50ZXJtZWRpYXRlICh0eXBpY2FsbHkgUERGKQpjb252ZXJzaW9u IG9mIGl0LiIpCgooZGVmdmFyLWxvY2FsIGRvYy12aWV3LS1pbWFnZS10eXBlIG5pbAogICJUaGUg dHlwZSBvZiBpbWFnZSBpbiB0aGUgY3VycmVudCBidWZmZXIuCkNhbiBiZSBgcG5nJyBvciBgdGlm ZicuIikKCihkZWZ2YXItbG9jYWwgZG9jLXZpZXctLWltYWdlLWZpbGUtcGF0dGVybiBuaWwKICAi VGhlIGBmb3JtYXQnIHBhdHRlcm4gb2YgaW1hZ2UgZmlsZSBuYW1lcy4KVHlwaWNhbGx5IFwicGFn ZS0lcy5wbmdcIi4iKQoKOzs7OyBEb2NWaWV3IEtleW1hcHMKCihkZWZ2YXIgZG9jLXZpZXctbW9k ZS1tYXAKICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKICAgIChzZXQta2V5bWFw LXBhcmVudCBtYXAgaW1hZ2UtbW9kZS1tYXApCiAgICA7OyBOYXZpZ2F0aW9uIGluIHRoZSBkb2N1 bWVudAogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIm4iKSAgICAgICAgICdkb2Mtdmlldy1uZXh0 LXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAicCIpICAgICAgICAgJ2RvYy12aWV3LXBy ZXZpb3VzLXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiPG5leHQ+IikgICAgJ2Zvcndh cmQtcGFnZSkKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICI8cHJpb3I+IikgICAnYmFja3dhcmQt cGFnZSkKICAgIChkZWZpbmUta2V5IG1hcCBbcmVtYXAgZm9yd2FyZC1wYWdlXSAgJ2RvYy12aWV3 LW5leHQtcGFnZSkKICAgIChkZWZpbmUta2V5IG1hcCBbcmVtYXAgYmFja3dhcmQtcGFnZV0gJ2Rv Yy12aWV3LXByZXZpb3VzLXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiU1BDIikgICAg ICAgJ2RvYy12aWV3LXNjcm9sbC11cC1vci1uZXh0LXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAg KGtiZCAiUy1TUEMiKSAgICAgJ2RvYy12aWV3LXNjcm9sbC1kb3duLW9yLXByZXZpb3VzLXBhZ2Up CiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiREVMIikgICAgICAgJ2RvYy12aWV3LXNjcm9sbC1k b3duLW9yLXByZXZpb3VzLXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiQy1uIikgICAg ICAgJ2RvYy12aWV3LW5leHQtbGluZS1vci1uZXh0LXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAg KGtiZCAiPGRvd24+IikgICAgJ2RvYy12aWV3LW5leHQtbGluZS1vci1uZXh0LXBhZ2UpCiAgICAo ZGVmaW5lLWtleSBtYXAgKGtiZCAiQy1wIikgICAgICAgJ2RvYy12aWV3LXByZXZpb3VzLWxpbmUt b3ItcHJldmlvdXMtcGFnZSkKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICI8dXA+IikgICAgICAn ZG9jLXZpZXctcHJldmlvdXMtbGluZS1vci1wcmV2aW91cy1wYWdlKQogICAgKGRlZmluZS1rZXkg bWFwIChrYmQgIk0tPCIpICAgICAgICdkb2Mtdmlldy1maXJzdC1wYWdlKQogICAgKGRlZmluZS1r ZXkgbWFwIChrYmQgIk0tPiIpICAgICAgICdkb2Mtdmlldy1sYXN0LXBhZ2UpCiAgICAoZGVmaW5l LWtleSBtYXAgW3JlbWFwIGdvdG8tbGluZV0gJ2RvYy12aWV3LWdvdG8tcGFnZSkKICAgIChkZWZp bmUta2V5IG1hcCAoa2JkICJSRVQiKSAgICAgICAnaW1hZ2UtbmV4dC1saW5lKQogICAgOzsgWm9v bSBpbi9vdXQuCiAgICAoZGVmaW5lLWtleSBtYXAgIisiICAgICAgICAgICAgICAgJ2RvYy12aWV3 LWVubGFyZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgIj0iICAgICAgICAgICAgICAgJ2RvYy12aWV3 LWVubGFyZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgIi0iICAgICAgICAgICAgICAgJ2RvYy12aWV3 LXNocmluaykKICAgIChkZWZpbmUta2V5IG1hcCAiMCIgICAgICAgICAgICAgICAnZG9jLXZpZXct c2NhbGUtcmVzZXQpCiAgICAoZGVmaW5lLWtleSBtYXAgW3JlbWFwIHRleHQtc2NhbGUtYWRqdXN0 XSAnZG9jLXZpZXctc2NhbGUtYWRqdXN0KQogICAgOzsgRml0IHRoZSBpbWFnZSB0byB0aGUgd2lu ZG93CiAgICAoZGVmaW5lLWtleSBtYXAgIlciICAgICAgICAgICAgICAgJ2RvYy12aWV3LWZpdC13 aWR0aC10by13aW5kb3cpCiAgICAoZGVmaW5lLWtleSBtYXAgIkgiICAgICAgICAgICAgICAgJ2Rv Yy12aWV3LWZpdC1oZWlnaHQtdG8td2luZG93KQogICAgKGRlZmluZS1rZXkgbWFwICJQIiAgICAg ICAgICAgICAgICdkb2Mtdmlldy1maXQtcGFnZS10by13aW5kb3cpCiAgICAoZGVmaW5lLWtleSBt YXAgIkYiICAgICAgICAgICAgICAgJ2RvYy12aWV3LWZpdC13aW5kb3ctdG8tcGFnZSkgO0YgPSBm cmFtZQogICAgOzsgS2lsbGluZyB0aGUgYnVmZmVyIChhbmQgdGhlIHByb2Nlc3MpCiAgICAoZGVm aW5lLWtleSBtYXAgKGtiZCAiayIpICAgICAgICAgJ2ltYWdlLWtpbGwtYnVmZmVyKQogICAgKGRl ZmluZS1rZXkgbWFwIChrYmQgIksiKSAgICAgICAgICdkb2Mtdmlldy1raWxsLXByb2MpCiAgICA7 OyBTbGljaW5nIHRoZSBpbWFnZQogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgImMgcyIpICAgICAg ICdkb2Mtdmlldy1zZXQtc2xpY2UpCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiYyBtIikgICAg ICAgJ2RvYy12aWV3LXNldC1zbGljZS11c2luZy1tb3VzZSkKICAgIChkZWZpbmUta2V5IG1hcCAo a2JkICJjIGIiKSAgICAgICAnZG9jLXZpZXctc2V0LXNsaWNlLWZyb20tYm91bmRpbmctYm94KQog ICAgKGRlZmluZS1rZXkgbWFwIChrYmQgImMgciIpICAgICAgICdkb2Mtdmlldy1yZXNldC1zbGlj ZSkKICAgIDs7IENlbnRlcmluZyB0aGUgaW1hZ2UKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICJj IGgiKSAgICAgICAnZG9jLXZpZXctY2VudGVyLXBhZ2UtaG9yaXpvbnRhbGx5KQogICAgKGRlZmlu ZS1rZXkgbWFwIChrYmQgImMgdiIpICAgICAgICdkb2Mtdmlldy1jZW50ZXItcGFnZS12ZXJ0aWNh bGx5KQogICAgOzsgU2VhcmNoaW5nCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiQy1zIikgICAg ICAgJ2RvYy12aWV3LXNlYXJjaCkKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICI8ZmluZD4iKSAg ICAnZG9jLXZpZXctc2VhcmNoKQogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIkMtciIpICAgICAg ICdkb2Mtdmlldy1zZWFyY2gtYmFja3dhcmQpCiAgICA7OyBTaG93IHRoZSB0b29sdGlwCiAgICAo ZGVmaW5lLWtleSBtYXAgKGtiZCAiQy10IikgICAgICAgJ2RvYy12aWV3LXNob3ctdG9vbHRpcCkK ICAgIDs7IFRvZ2dsZSBiZXR3ZWVuIHRleHQgYW5kIGltYWdlIGRpc3BsYXkgb3IgZWRpdGluZwog ICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIkMtYyBDLWMiKSAgICdkb2Mtdmlldy10b2dnbGUtZGlz cGxheSkKICAgIDs7IE9wZW4gYSBuZXcgYnVmZmVyIHdpdGggZG9jJ3MgdGV4dCBjb250ZW50cwog ICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIkMtYyBDLXQiKSAgICdkb2Mtdmlldy1vcGVuLXRleHQp CiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiciIpICAgICAgICAgJ3JldmVydC1idWZmZXIpCiAg ICBtYXApCiAgIktleW1hcCB1c2VkIGJ5IGBkb2Mtdmlldy1tb2RlJyB3aGVuIGRpc3BsYXlpbmcg YSBkb2MgYXMgYSBzZXQgb2YgaW1hZ2VzLiIpCgooZGVmaW5lLW9ic29sZXRlLWZ1bmN0aW9uLWFs aWFzICdkb2Mtdmlldy1yZXZlcnQtYnVmZmVyICMncmV2ZXJ0LWJ1ZmZlciAiMjcuMSIpCihkZWZ2 YXIgcmV2ZXJ0LWJ1ZmZlci1wcmVzZXJ2ZS1tb2RlcykKKGRlZnVuIGRvYy12aWV3LS1yZXZlcnQt YnVmZmVyIChvcmlnLWZ1biAmcmVzdCBhcmdzKQogICJQcmVzZXJ2ZSB0aGUgYnVmZmVyJ3MgY3Vy cmVudCBtb2RlIGFuZCBjaGVjayBQREYgc2FuaXR5LiIKICAoaWYgKDwgdW5kby1vdXRlci1saW1p dCAoKiAyIChidWZmZXItc2l6ZSkpKQogICAgICA7OyBJdCdzIG5vcm1hbCBmb3IgdGhpcyBvcGVy YXRpb24gdG8gcmVzdWx0IGluIGEgdmVyeSBsYXJnZSB1bmRvIGVudHJ5LgogICAgICAoc2V0cS1s b2NhbCB1bmRvLW91dGVyLWxpbWl0ICgqIDIgKGJ1ZmZlci1zaXplKSkpKQogIChjbC1sYWJlbHMg KChyZXZlcnQgKCkKICAgICAgICAgICAgICAgIChsZXQgKChyZXZlcnQtYnVmZmVyLXByZXNlcnZl LW1vZGVzIHQpKQogICAgICAgICAgICAgICAgICAoYXBwbHkgb3JpZy1mdW4gYXJncykKICAgICAg ICAgICAgICAgICAgOzsgVXBkYXRlIHRoZSBjYWNoZWQgdmVyc2lvbiBvZiB0aGUgcGRmIGZpbGUs CiAgICAgICAgICAgICAgICAgIDs7IHRvby4gIFRoaXMgaXMgdGhlIG9uZSB0aGF0J3MgdXNlZCB3 aGVuCiAgICAgICAgICAgICAgICAgIDs7IHJlbmRlcmluZyAoYnVnIzI2OTk2KS4KICAgICAgICAg ICAgICAgICAgKHVubGVzcyAoZXF1YWwgYnVmZmVyLWZpbGUtbmFtZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZSkKICAgICAgICAgICAg ICAgICAgICA7OyBGSVhNRTogTGFycyBzYXlzIGhlIG5lZWRlZCB0byByZWNyZWF0ZQogICAgICAg ICAgICAgICAgICAgIDs7IHRoZSBkaXIsIHdlIHNob3VsZCBmaWd1cmUgb3V0IHdoeS4KICAgICAg ICAgICAgICAgICAgICAoZG9jLXZpZXctbWFrZS1zYWZlLWRpciBkb2Mtdmlldy1jYWNoZS1kaXJl Y3RvcnkpCiAgICAgICAgICAgICAgICAgICAgKHdyaXRlLXJlZ2lvbiBuaWwgbmlsIGRvYy12aWV3 LS1idWZmZXItZmlsZS1uYW1lKSkpKSkKICAgIChpZiAoYW5kIChlcSAncGRmIGRvYy12aWV3LWRv Yy10eXBlKQogICAgICAgICAgICAgKGV4ZWN1dGFibGUtZmluZCAicGRmaW5mbyIpKQogICAgICAg IDs7IFdlIGRvbid0IHdhbnQgdG8gcmV2ZXJ0IGlmIHRoZSBQREYgZmlsZSBpcyBjb3JydXB0ZWQg d2hpY2gKICAgICAgICA7OyBtaWdodCBoYXBwZW4gd2hlbiBpdCBpcyBjdXJyZW50bHkgcmVjb21w aWxlZCBmcm9tIGEgdGV4CiAgICAgICAgOzsgZmlsZS4gIChUT0RPOiBXZSdkIGxpa2UgdG8gaGF2 ZSBzb21ldGhpbmcgbGlrZSB0aGF0IGFsc28KICAgICAgICA7OyBmb3Igb3RoZXIgdHlwZXMsIGF0 IGxlYXN0IFBTLCBidXQgSSBkb24ndCBrbm93IGEgZ29vZCB3YXkKICAgICAgICA7OyB0byB0ZXN0 IGlmIGEgUFMgZmlsZSBpcyBjb21wbGV0ZS4pCiAgICAgICAgKGlmICg9IDAgKGNhbGwtcHJvY2Vz cyAicGRmaW5mbyIgbmlsIG5pbCBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv Yy12aWV3LS1idWZmZXItZmlsZS1uYW1lKSkKICAgICAgICAgICAgKHJldmVydCkKICAgICAgICAg ICh3aGVuIChjYWxsZWQtaW50ZXJhY3RpdmVseS1wICdpbnRlcmFjdGl2ZSkKICAgICAgICAgICAg KG1lc3NhZ2UgIkNhbid0IHJldmVydCByaWdodCBub3cgYmVjYXVzZSB0aGUgZmlsZSBpcyBjb3Jy dXB0ZWQuIikpKQogICAgICAocmV2ZXJ0KSkpKQoKCihlYXN5LW1lbnUtZGVmaW5lIGRvYy12aWV3 LW1lbnUgZG9jLXZpZXctbW9kZS1tYXAKICAiTWVudSBmb3IgRG9jIFZpZXcgbW9kZS4iCiAgJygi RG9jVmlldyIKICAgIFsiTmV4dCBwYWdlIiAgICAgICAgICAgICAgICBkb2Mtdmlldy1uZXh0LXBh Z2UKICAgICA6aGVscCAgICAgICAgICAgICAgICAgICAgICAiR28gdG8gdGhlIG5leHQgcGFnZSJd CiAgICBbIlByZXZpb3VzIHBhZ2UiICAgICAgICAgICAgZG9jLXZpZXctcHJldmlvdXMtcGFnZQog ICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgICJHbyB0byB0aGUgcHJldmlvdXMgcGFnZSJd CiAgICAoIk90aGVyIE5hdmlnYXRpb24iCiAgICAgWyJHbyB0byBwYWdlLi4uIiAgICAgICAgICAg ZG9jLXZpZXctZ290by1wYWdlCiAgICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgIkdvIHRv IHNwZWNpZmljIHBhZ2UiXQogICAgICItLS0iCiAgICAgWyJGaXJzdCBwYWdlIiAgICAgICAgICAg ICAgZG9jLXZpZXctZmlyc3QtcGFnZQogICAgICA6aGVscCAgICAgICAgICAgICAgICAgICAgICJW aWV3IHRoZSBmaXJzdCBwYWdlIl0KICAgICBbIkxhc3QgcGFnZSIgICAgICAgICAgICAgICBkb2Mt dmlldy1sYXN0LXBhZ2UKICAgICAgOmhlbHAgICAgICAgICAgICAgICAgICAgICAiVmlldyB0aGUg bGFzdCBwYWdlIl0KICAgICAiLS0tIgogICAgIFsiTW92ZSBmb3J3YXJkIiAgICAgICAgICAgIGRv Yy12aWV3LXNjcm9sbC11cC1vci1uZXh0LXBhZ2UKICAgICAgOmhlbHAgICAgICAgICAgICAgICAg ICAgICAiU2Nyb2xsIHBhZ2UgdXAgb3IgZ28gdG8gbmV4dCBwYWdlIl0KICAgICBbIk1vdmUgYmFj a3dhcmQiICAgICAgICAgICBkb2Mtdmlldy1zY3JvbGwtZG93bi1vci1wcmV2aW91cy1wYWdlCiAg ICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgIlNjcm9sbCBwYWdlIGRvd24gb3IgZ28gdG8g cHJldmlvdXMgcGFnZSJdKQogICAgKCJDb250aW51b3VzIFNjcm9sbGluZyIKICAgICBbIk9mZiIg ICAgICAgICAgICAgICAgICAgICAoc2V0cSBkb2Mtdmlldy1jb250aW51b3VzIG5pbCkKICAgICAg OnN0eWxlIHJhZGlvIDpzZWxlY3RlZCAgICAoZXEgZG9jLXZpZXctY29udGludW91cyBuaWwpCiAg ICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgIlNjcm9sbGluZyBzdG9wcyBhdCBwYWdlIGJl Z2lubmluZyBhbmQgZW5kIl0KICAgICBbIk9uIgkJICAgICAgICAoc2V0cSBkb2Mtdmlldy1jb250 aW51b3VzIHQpCiAgICAgIDpzdHlsZSByYWRpbyA6c2VsZWN0ZWQgICAgKGVxIGRvYy12aWV3LWNv bnRpbnVvdXMgdCkKICAgICAgOmhlbHAgICAgICAgICAgICAgICAgICAgICAiU2Nyb2xsaW5nIGNv bnRpbnVlcyB0byBuZXh0IG9yIHByZXZpb3VzIHBhZ2UiXQogICAgICItLS0iCiAgICAgWyJTYXZl IGFzIERlZmF1bHQiICAgICAgICAgKGN1c3RvbWl6ZS1zYXZlLXZhcmlhYmxlICdkb2Mtdmlldy1j b250aW51b3VzIGRvYy12aWV3LWNvbnRpbnVvdXMpCiAgICAgIDpoZWxwICAgICAgICAgICAgICAg ICAgICAgIlNhdmUgY3VycmVudCBjb250aW51b3VzIHNjcm9sbGluZyBvcHRpb24gYXMgZGVmYXVs dCJdCiAgICAgKQogICAgIi0tLSIKICAgICgiVG9nZ2xlIGVkaXQvZGlzcGxheSIKICAgICBbIkVk aXQgZG9jdW1lbnQiICAgICAgICAgICBkb2Mtdmlldy10b2dnbGUtZGlzcGxheQogICAgICA6c3R5 bGUgcmFkaW8gOnNlbGVjdGVkICAgIChlcSBtYWpvci1tb2RlICdkb2Mtdmlldy0tdGV4dC12aWV3 LW1vZGUpXQogICAgIFsiRGlzcGxheSBkb2N1bWVudCIgICAgICAgIChsYW1iZGEgKCkpIDsgaWdu b3JlIGJ1dCBzaG93IG5vIGtleWJpbmRpbmcKICAgICAgOnN0eWxlIHJhZGlvIDpzZWxlY3RlZCAg ICAoZXEgbWFqb3ItbW9kZSAnZG9jLXZpZXctbW9kZSldKQogICAgKCJBZGp1c3QgRGlzcGxheSIK ICAgICBbIkZpdCB0byB3aW5kb3ciICAgICAgICAgICBkb2Mtdmlldy1maXQtcGFnZS10by13aW5k b3cKICAgICAgOmhlbHAgICAgICAgICAgICAgICAgICAgICAiRml0IHRoZSBpbWFnZSB0byB0aGUg d2luZG93Il0KICAgICBbIkZpdCB3aWR0aCIgICAgICAgICAgICAgICBkb2Mtdmlldy1maXQtd2lk dGgtdG8td2luZG93CiAgICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgIkZpdCB0aGUgaW1h Z2Ugd2lkdGggdG8gdGhlIHdpbmRvdyB3aWR0aCJdCiAgICAgWyJGaXQgaGVpZ2h0IiAgICAgICAg ICAgICAgZG9jLXZpZXctZml0LWhlaWdodC10by13aW5kb3cKICAgICAgOmhlbHAgICAgICAgICAg ICAgICAgICAgICAiRml0IHRoZSBpbWFnZSBoZWlnaHQgdG8gdGhlIHdpbmRvdyBoZWlnaHQiXQog ICAgICItLS0iCiAgICAgWyJFbmxhcmdlIiAgICAgICAgICAgICAgICAgZG9jLXZpZXctZW5sYXJn ZQogICAgICA6aGVscCAgICAgICAgICAgICAgICAgICAgICJFbmxhcmdlIHRoZSBkb2N1bWVudCJd CiAgICAgWyJTaHJpbmsiICAgICAgICAgICAgICAgICAgZG9jLXZpZXctc2hyaW5rCiAgICAgIDpo ZWxwICAgICAgICAgICAgICAgICAgICAgIlNocmluayB0aGUgZG9jdW1lbnQiXQogICAgICItLS0i CiAgICAgWyJTZXQgU2xpY2UiICAgICAgICAgICAgICAgZG9jLXZpZXctc2V0LXNsaWNlLXVzaW5n LW1vdXNlCiAgICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgIlNldCB0aGUgc2xpY2Ugb2Yg dGhlIGltYWdlcyB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQiXQogICAgIFsiU2V0IFNsaWNlIChC b3VuZGluZ0JveCkiIGRvYy12aWV3LXNldC1zbGljZS1mcm9tLWJvdW5kaW5nLWJveAogICAgICA6 aGVscCAgICAgICAgICAgICAgICAgICAgICJTZXQgdGhlIHNsaWNlIGZyb20gdGhlIGRvY3VtZW50 J3MgQm91bmRpbmdCb3ggaW5mb3JtYXRpb24iXQogICAgIFsiU2V0IFNsaWNlIChtYW51YWwpIglk b2Mtdmlldy1zZXQtc2xpY2UKICAgICAgOmhlbHAgICAgICAgICAgICAgICAgICAgICAiU2V0IHRo ZSBzbGljZSBvZiB0aGUgaW1hZ2VzIHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZCJdCiAgICAgWyJS ZXNldCBTbGljZSIJCWRvYy12aWV3LXJlc2V0LXNsaWNlCiAgICAgIDpoZWxwICAgICAgICAgICAg ICAgICAgICAgIlJlc2V0IHRoZSBjdXJyZW50IHNsaWNlIgogICAgICA6ZW5hYmxlZCAgICAgICAg ICAgICAgICAgIChpbWFnZS1tb2RlLXdpbmRvdy1nZXQgJ3NsaWNlKV0pCiAgICAiLS0tIgogICAg WyJOZXcgU2VhcmNoIiAgICAgICAgICAgICAgIChkb2Mtdmlldy1zZWFyY2ggdCkKICAgICA6aGVs cCAgICAgICAgICAgICAgICAgICAgICAiSW5pdGlhdGUgYSBuZXcgc2VhcmNoIl0KICAgIFsiU2Vh cmNoIEZvcndhcmQiICAgICAgICAgICBkb2Mtdmlldy1zZWFyY2gKICAgICA6aGVscCAgICAgICAg ICAgICAgICAgICAgICAiSnVtcCB0byB0aGUgbmV4dCBtYXRjaCBvciBpbml0aWF0ZSBhIG5ldyBz ZWFyY2giXQogICAgWyJTZWFyY2ggQmFja3dhcmQiICAgICAgICAgIGRvYy12aWV3LXNlYXJjaC1i YWNrd2FyZAogICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgICJKdW1wIHRvIHRoZSBwcmV2 aW91cyBtYXRjaCBvciBpbml0aWF0ZSBhIG5ldyBzZWFyY2giXQogICAgKSkKCihkZWZ2YXIgZG9j LXZpZXctbWlub3ItbW9kZS1tYXAKICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkK ICAgIDs7IFRvZ2dsZSBiZXR3ZWVuIHRleHQgYW5kIGltYWdlIGRpc3BsYXkgb3IgZWRpdGluZwog ICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIkMtYyBDLWMiKSAnZG9jLXZpZXctdG9nZ2xlLWRpc3Bs YXkpCiAgICBtYXApCiAgIktleW1hcCB1c2VkIGJ5IGBkb2Mtdmlldy1taW5vci1tb2RlJy4iKQoK KGVhc3ktbWVudS1kZWZpbmUgZG9jLXZpZXctbWlub3ItbW9kZS1tZW51IGRvYy12aWV3LW1pbm9y LW1vZGUtbWFwCiAgIk1lbnUgZm9yIERvYyBWaWV3IG1pbm9yIG1vZGUuIgogICcoIkRvY1ZpZXcg KGVkaXQpIgogICAgKCJUb2dnbGUgZWRpdC9kaXNwbGF5IgogICAgIFsiRWRpdCBkb2N1bWVudCIg ICAgICAgICAgIChsYW1iZGEgKCkpIDsgaWdub3JlIGJ1dCBzaG93IG5vIGtleWJpbmRpbmcKICAg ICAgOnN0eWxlIHJhZGlvIDpzZWxlY3RlZCAgICAoZXEgbWFqb3ItbW9kZSAnZG9jLXZpZXctLXRl eHQtdmlldy1tb2RlKV0KICAgICBbIkRpc3BsYXkgZG9jdW1lbnQiICAgICAgICBkb2Mtdmlldy10 b2dnbGUtZGlzcGxheQogICAgICA6c3R5bGUgcmFkaW8gOnNlbGVjdGVkICAgIChlcSBtYWpvci1t b2RlICdkb2Mtdmlldy1tb2RlKV0pCiAgICBbIkV4aXQgRG9jVmlldyBNb2RlIiBkb2Mtdmlldy1t aW5vci1tb2RlXSkpCgo7Ozs7IE5hdmlnYXRpb24gQ29tbWFuZHMKCihkZWZ1biBkb2Mtdmlldy1s YXN0LXBhZ2UtbnVtYmVyICgpCiAgKGxlbmd0aCBkb2Mtdmlldy0tY3VycmVudC1maWxlcykpCgoo ZGVmdW4gZG9jLXZpZXctZ290by1wYWdlIChwYWdlKQogICJWaWV3IHRoZSBwYWdlIGdpdmVuIGJ5 IFBBR0UuIgogIChpbnRlcmFjdGl2ZSAiblBhZ2U6ICIpCiAgKGxldCAoKGxlbiAoZG9jLXZpZXct bGFzdC1wYWdlLW51bWJlcikpKQogICAgKGlmICg8IHBhZ2UgMSkKCShzZXRxIHBhZ2UgMSkKICAg ICAgKHdoZW4gKGFuZCAoPiBwYWdlIGxlbikKICAgICAgICAgICAgICAgICA7OyBBcyBsb25nIGFz IHRoZSBjb252ZXJ0ZXIgaXMgcnVubmluZywgd2UgZG9uJ3Qga25vdwogICAgICAgICAgICAgICAg IDs7IGhvdyBtYW55IHBhZ2VzIHdpbGwgYmUgYXZhaWxhYmxlLgogICAgICAgICAgICAgICAgIChu dWxsIGRvYy12aWV3LS1jdXJyZW50LWNvbnZlcnRlci1wcm9jZXNzZXMpKQoJKHNldHEgcGFnZSBs ZW4pKSkKICAgIChmb3JjZS1tb2RlLWxpbmUtdXBkYXRlKSAgICAgICAgICAgIDtUbyB1cGRhdGUg YGN1cnJlbnQtcGFnZScuCiAgICAoc2V0ZiAoZG9jLXZpZXctY3VycmVudC1wYWdlKSBwYWdlCgkg IChkb2Mtdmlldy1jdXJyZW50LWluZm8pCgkgIChjb25jYXQKCSAgIChwcm9wZXJ0aXplCgkgICAg KGZvcm1hdCAiUGFnZSAlZCBvZiAlZC4iIHBhZ2UgbGVuKSAnZmFjZSAnYm9sZCkKCSAgIDs7IFRl bGwgdXNlciBpZiBjb252ZXJ0aW5nIGlzbid0IGZpbmlzaGVkIHlldAoJICAgKGlmIGRvYy12aWV3 LS1jdXJyZW50LWNvbnZlcnRlci1wcm9jZXNzZXMKCSAgICAgICAiIChzdGlsbCBjb252ZXJ0aW5n Li4uKVxuIgoJICAgICAiXG4iKQoJICAgOzsgRGlzcGxheSBjb250ZXh0IGluZm9zIGlmIHRoaXMg cGFnZSBtYXRjaGVzIHRoZSBsYXN0IHNlYXJjaAoJICAgKHdoZW4gKGFuZCBkb2Mtdmlldy0tY3Vy cmVudC1zZWFyY2gtbWF0Y2hlcwoJCSAgICAgIChhc3NxIHBhZ2UgZG9jLXZpZXctLWN1cnJlbnQt c2VhcmNoLW1hdGNoZXMpKQoJICAgICAoY29uY2F0IChwcm9wZXJ0aXplICJTZWFyY2ggbWF0Y2hl czpcbiIgJ2ZhY2UgJ2JvbGQpCgkJICAgICAobGV0ICgoY29udGV4dHMgIiIpKQoJCSAgICAgICAo ZG9saXN0IChtIChjZHIgKGFzc3EgcGFnZQoJCQkJCSAgICAgZG9jLXZpZXctLWN1cnJlbnQtc2Vh cmNoLW1hdGNoZXMpKSkKCQkJIChzZXRxIGNvbnRleHRzIChjb25jYXQgY29udGV4dHMgIiAgLSBc IiIgbSAiXCJcbiIpKSkKCQkgICAgICAgY29udGV4dHMpKSkpKQogICAgOzsgVXBkYXRlIHRoZSBi dWZmZXIKICAgIDs7IFdlIHVzZWQgdG8gZmluZCB0aGUgZmlsZSBuYW1lIGZyb20gZG9jLXZpZXct LWN1cnJlbnQtZmlsZXMgYnV0CiAgICA7OyB0aGF0J3Mgbm90IHJpZ2h0IGlmIHRoZSBwYWdlcyBh cmUgbm90IGdlbmVyYXRlZCBzZXF1ZW50aWFsbHkKICAgIDs7IG9yIGlmIHRoZSBwYWdlIGlzbid0 IGluIGRvYy12aWV3LS1jdXJyZW50LWZpbGVzIHlldC4KICAgIChsZXQgKChmaWxlIChleHBhbmQt ZmlsZS1uYW1lCiAgICAgICAgICAgICAgICAgKGZvcm1hdCBkb2Mtdmlldy0taW1hZ2UtZmlsZS1w YXR0ZXJuIHBhZ2UpCiAgICAgICAgICAgICAgICAgKGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRp cikpKSkKICAgICAgKGRvYy12aWV3LWluc2VydC1pbWFnZSBmaWxlIDpwb2ludGVyICdhcnJvdykK ICAgICAgKHdoZW4gKGFuZCAobm90IChmaWxlLWV4aXN0cy1wIGZpbGUpKQogICAgICAgICAgICAg ICAgIGRvYy12aWV3LS1jdXJyZW50LWNvbnZlcnRlci1wcm9jZXNzZXMpCiAgICAgICAgOzsgVGhl IFBORyBmaWxlIGhhc24ndCBiZWVuIGdlbmVyYXRlZCB5ZXQuCiAgICAgICAgKGZ1bmNhbGwgZG9j LXZpZXctc2luZ2xlLXBhZ2UtY29udmVydGVyLWZ1bmN0aW9uCgkJIGRvYy12aWV3LS1idWZmZXIt ZmlsZS1uYW1lIGZpbGUgcGFnZQoJCSAobGV0ICgod2luIChzZWxlY3RlZC13aW5kb3cpKSkKCQkg ICAobGFtYmRhICgpCgkJICAgICAoYW5kIChlcSAoY3VycmVudC1idWZmZXIpICh3aW5kb3ctYnVm ZmVyIHdpbikpCgkJCSAgOzsgSWYgd2UgY2hhbmdlZCBwYWdlIGluIHRoZSBtZWFuCgkJCSAgOzsg dGltZSwgZG9uJ3QgbWVzcyB0aGluZ3MgdXAuCgkJCSAgKGVxIChkb2Mtdmlldy1jdXJyZW50LXBh Z2Ugd2luKSBwYWdlKQoJCQkgIDs7IE1ha2Ugc3VyZSB3ZSBkb24ndCBpbmZsb29wLgoJCQkgIChm aWxlLXJlYWRhYmxlLXAgZmlsZSkKCQkJICAod2l0aC1zZWxlY3RlZC13aW5kb3cgd2luCgkJCSAg ICAoZG9jLXZpZXctZ290by1wYWdlIHBhZ2UpKSkpKSkpKQogICAgKG92ZXJsYXktcHV0IChkb2Mt dmlldy1jdXJyZW50LW92ZXJsYXkpCgkJICdoZWxwLWVjaG8gKGRvYy12aWV3LWN1cnJlbnQtaW5m bykpKSkKCihkZWZ1biBkb2Mtdmlldy1uZXh0LXBhZ2UgKCZvcHRpb25hbCBhcmcpCiAgIkJyb3dz ZSBBUkcgcGFnZXMgZm9yd2FyZC4iCiAgKGludGVyYWN0aXZlICJwIikKICAoZG9jLXZpZXctZ290 by1wYWdlICgrIChkb2Mtdmlldy1jdXJyZW50LXBhZ2UpIChvciBhcmcgMSkpKSkKCihkZWZ1biBk b2Mtdmlldy1wcmV2aW91cy1wYWdlICgmb3B0aW9uYWwgYXJnKQogICJCcm93c2UgQVJHIHBhZ2Vz IGJhY2t3YXJkLiIKICAoaW50ZXJhY3RpdmUgInAiKQogIChkb2Mtdmlldy1nb3RvLXBhZ2UgKC0g KGRvYy12aWV3LWN1cnJlbnQtcGFnZSkgKG9yIGFyZyAxKSkpKQoKKGRlZnVuIGRvYy12aWV3LWZp cnN0LXBhZ2UgKCkKICAiVmlldyB0aGUgZmlyc3QgcGFnZS4iCiAgKGludGVyYWN0aXZlKQogIChk b2Mtdmlldy1nb3RvLXBhZ2UgMSkpCgooZGVmdW4gZG9jLXZpZXctbGFzdC1wYWdlICgpCiAgIlZp ZXcgdGhlIGxhc3QgcGFnZS4iCiAgKGludGVyYWN0aXZlKQogIChkb2Mtdmlldy1nb3RvLXBhZ2Ug KGRvYy12aWV3LWxhc3QtcGFnZS1udW1iZXIpKSkKCihkZWZ1biBkb2Mtdmlldy1zY3JvbGwtdXAt b3ItbmV4dC1wYWdlICgmb3B0aW9uYWwgYXJnKQogICJTY3JvbGwgcGFnZSB1cCBBUkcgbGluZXMg aWYgcG9zc2libGUsIGVsc2UgZ290byBuZXh0IHBhZ2UuCldoZW4gYGRvYy12aWV3LWNvbnRpbnVv dXMnIGlzIG5vbi1uaWwsIHNjcm9sbGluZyB1cHdhcmQKYXQgdGhlIGJvdHRvbSBlZGdlIG9mIHRo ZSBwYWdlIG1vdmVzIHRvIHRoZSBuZXh0IHBhZ2UuCk90aGVyd2lzZSwgZ290byBuZXh0IHBhZ2Ug b25seSBvbiB0eXBpbmcgU1BDIChBUkcgaXMgbmlsKS4iCiAgKGludGVyYWN0aXZlICJQIikKICAo aWYgKG9yIGRvYy12aWV3LWNvbnRpbnVvdXMgKG51bGwgYXJnKSkKICAgICAgKGxldCAoKGhzY3Jv bGwgKHdpbmRvdy1oc2Nyb2xsKSkKCSAgICAoY3VyLXBhZ2UgKGRvYy12aWV3LWN1cnJlbnQtcGFn ZSkpKQoJKHdoZW4gKD0gKHdpbmRvdy12c2Nyb2xsIG5pbCB0KSAoaW1hZ2Utc2Nyb2xsLXVwIGFy ZykpCgkgIChkb2Mtdmlldy1uZXh0LXBhZ2UpCgkgICh3aGVuICgvPSBjdXItcGFnZSAoZG9jLXZp ZXctY3VycmVudC1wYWdlKSkKCSAgICAoaW1hZ2UtYm9iKQoJICAgIChpbWFnZS1ib2wgMSkpCgkg IChzZXQtd2luZG93LWhzY3JvbGwgKHNlbGVjdGVkLXdpbmRvdykgaHNjcm9sbCkpKQogICAgKGlt YWdlLXNjcm9sbC11cCBhcmcpKSkKCihkZWZ1biBkb2Mtdmlldy1zY3JvbGwtZG93bi1vci1wcmV2 aW91cy1wYWdlICgmb3B0aW9uYWwgYXJnKQogICJTY3JvbGwgcGFnZSBkb3duIEFSRyBsaW5lcyBp ZiBwb3NzaWJsZSwgZWxzZSBnb3RvIHByZXZpb3VzIHBhZ2UuCldoZW4gYGRvYy12aWV3LWNvbnRp bnVvdXMnIGlzIG5vbi1uaWwsIHNjcm9sbGluZyBkb3dud2FyZAphdCB0aGUgdG9wIGVkZ2Ugb2Yg dGhlIHBhZ2UgbW92ZXMgdG8gdGhlIHByZXZpb3VzIHBhZ2UuCk90aGVyd2lzZSwgZ290byBwcmV2 aW91cyBwYWdlIG9ubHkgb24gdHlwaW5nIERFTCAoQVJHIGlzIG5pbCkuIgogIChpbnRlcmFjdGl2 ZSAiUCIpCiAgKGlmIChvciBkb2Mtdmlldy1jb250aW51b3VzIChudWxsIGFyZykpCiAgICAgIChs ZXQgKChoc2Nyb2xsICh3aW5kb3ctaHNjcm9sbCkpCgkgICAgKGN1ci1wYWdlIChkb2Mtdmlldy1j dXJyZW50LXBhZ2UpKSkKCSh3aGVuICg9ICh3aW5kb3ctdnNjcm9sbCBuaWwgdCkgKGltYWdlLXNj cm9sbC1kb3duIGFyZykpCgkgIChkb2Mtdmlldy1wcmV2aW91cy1wYWdlKQoJICAod2hlbiAoLz0g Y3VyLXBhZ2UgKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkpCgkgICAgKGltYWdlLWVvYikKCSAgICAo aW1hZ2UtYm9sIDEpKQoJICAoc2V0LXdpbmRvdy1oc2Nyb2xsIChzZWxlY3RlZC13aW5kb3cpIGhz Y3JvbGwpKSkKICAgIChpbWFnZS1zY3JvbGwtZG93biBhcmcpKSkKCihkZWZ1biBkb2Mtdmlldy1u ZXh0LWxpbmUtb3ItbmV4dC1wYWdlICgmb3B0aW9uYWwgYXJnKQogICJTY3JvbGwgdXB3YXJkIGJ5 IEFSRyBsaW5lcyBpZiBwb3NzaWJsZSwgZWxzZSBnb3RvIG5leHQgcGFnZS4KV2hlbiBgZG9jLXZp ZXctY29udGludW91cycgaXMgbm9uLW5pbCwgc2Nyb2xsaW5nIGEgbGluZSB1cHdhcmQKYXQgdGhl IGJvdHRvbSBlZGdlIG9mIHRoZSBwYWdlIG1vdmVzIHRvIHRoZSBuZXh0IHBhZ2UuIgogIChpbnRl cmFjdGl2ZSAicCIpCiAgKGlmIGRvYy12aWV3LWNvbnRpbnVvdXMKICAgICAgKGxldCAoKGhzY3Jv bGwgKHdpbmRvdy1oc2Nyb2xsKSkKCSAgICAoY3VyLXBhZ2UgKGRvYy12aWV3LWN1cnJlbnQtcGFn ZSkpKQoJKHdoZW4gKD0gKHdpbmRvdy12c2Nyb2xsIG5pbCB0KSAoaW1hZ2UtbmV4dC1saW5lIGFy ZykpCgkgIChkb2Mtdmlldy1uZXh0LXBhZ2UpCgkgICh3aGVuICgvPSBjdXItcGFnZSAoZG9jLXZp ZXctY3VycmVudC1wYWdlKSkKCSAgICAoaW1hZ2UtYm9iKQoJICAgIChpbWFnZS1ib2wgMSkpCgkg IChzZXQtd2luZG93LWhzY3JvbGwgKHNlbGVjdGVkLXdpbmRvdykgaHNjcm9sbCkpKQogICAgKGlt YWdlLW5leHQtbGluZSBhcmcpKSkKCihkZWZ1biBkb2Mtdmlldy1wcmV2aW91cy1saW5lLW9yLXBy ZXZpb3VzLXBhZ2UgKCZvcHRpb25hbCBhcmcpCiAgIlNjcm9sbCBkb3dud2FyZCBieSBBUkcgbGlu ZXMgaWYgcG9zc2libGUsIGVsc2UgZ290byBwcmV2aW91cyBwYWdlLgpXaGVuIGBkb2Mtdmlldy1j b250aW51b3VzJyBpcyBub24tbmlsLCBzY3JvbGxpbmcgYSBsaW5lIGRvd253YXJkCmF0IHRoZSB0 b3AgZWRnZSBvZiB0aGUgcGFnZSBtb3ZlcyB0byB0aGUgcHJldmlvdXMgcGFnZS4iCiAgKGludGVy YWN0aXZlICJwIikKICAoaWYgZG9jLXZpZXctY29udGludW91cwogICAgICAobGV0ICgoaHNjcm9s bCAod2luZG93LWhzY3JvbGwpKQoJICAgIChjdXItcGFnZSAoZG9jLXZpZXctY3VycmVudC1wYWdl KSkpCgkod2hlbiAoPSAod2luZG93LXZzY3JvbGwgbmlsIHQpIChpbWFnZS1wcmV2aW91cy1saW5l IGFyZykpCgkgIChkb2Mtdmlldy1wcmV2aW91cy1wYWdlKQoJICAod2hlbiAoLz0gY3VyLXBhZ2Ug KGRvYy12aWV3LWN1cnJlbnQtcGFnZSkpCgkgICAgKGltYWdlLWVvYikKCSAgICAoaW1hZ2UtYm9s IDEpKQoJICAoc2V0LXdpbmRvdy1oc2Nyb2xsIChzZWxlY3RlZC13aW5kb3cpIGhzY3JvbGwpKSkK ICAgIChpbWFnZS1wcmV2aW91cy1saW5lIGFyZykpKQoKOzs7OyBVdGlsaXR5IEZ1bmN0aW9ucwoK KGRlZnVuIGRvYy12aWV3LWtpbGwtcHJvYyAoKQogICJLaWxsIHRoZSBjdXJyZW50IGNvbnZlcnRl ciBwcm9jZXNzKGVzKS4iCiAgKGludGVyYWN0aXZlKQogICh3aGlsZSAoY29uc3AgZG9jLXZpZXct LWN1cnJlbnQtY29udmVydGVyLXByb2Nlc3NlcykKICAgIChpZ25vcmUtZXJyb3JzIDs7IFNvbWUg ZW50cmllcyBtaWdodCBub3QgYmUgcHJvY2Vzc2VzLCBhbmQgbWF5YmUKICAgICAgICAgICAgICAg ICAgICA7IHNvbWUgYXJlIGRlYWQgYWxyZWFkeT8KICAgICAgKGtpbGwtcHJvY2VzcyAocG9wIGRv Yy12aWV3LS1jdXJyZW50LWNvbnZlcnRlci1wcm9jZXNzZXMpKSkpCiAgKHdoZW4gZG9jLXZpZXct LWN1cnJlbnQtdGltZXIKICAgIChjYW5jZWwtdGltZXIgZG9jLXZpZXctLWN1cnJlbnQtdGltZXIp CiAgICAoc2V0cSBkb2Mtdmlldy0tY3VycmVudC10aW1lciBuaWwpKQogIChzZXRxIG1vZGUtbGlu ZS1wcm9jZXNzIG5pbCkpCgooZGVmaW5lLW9ic29sZXRlLWZ1bmN0aW9uLWFsaWFzICdkb2Mtdmll dy1raWxsLXByb2MtYW5kLWJ1ZmZlcgogICMnaW1hZ2Uta2lsbC1idWZmZXIgIjI1LjEiKQoKKGRl ZnVuIGRvYy12aWV3LW1ha2Utc2FmZS1kaXIgKGRpcikKICAoY29uZGl0aW9uLWNhc2UgbmlsCiAg ICAgIDs7IENyZWF0ZSB0ZW1wIGZpbGVzIHdpdGggc3RyaWN0IGFjY2VzcyByaWdodHMuICBJdCdz IGVhc3kgdG8KICAgICAgOzsgbG9vc2VuIHRoZW0gbGF0ZXIsIHdoZXJlYXMgaXQncyBpbXBvc3Np YmxlIHRvIGNsb3NlIHRoZQogICAgICA7OyB0aW1lLXdpbmRvdyBvZiBsb29zZSBwZXJtaXNzaW9u cyBvdGhlcndpc2UuCiAgICAgICh3aXRoLWZpbGUtbW9kZXMgI28wNzAwIChtYWtlLWRpcmVjdG9y eSBkaXIpKQogICAgKGZpbGUtYWxyZWFkeS1leGlzdHMKICAgICA7OyBJbiBjYXNlIGl0IHdhcyBj cmVhdGVkIGVhcmxpZXIgd2l0aCBsb29zZXIgcmlnaHRzLgogICAgIDs7IFdlIGNvdWxkIGNoZWNr IHRoZSBtb2RlIGluZm8gcmV0dXJuZWQgYnkgZmlsZS1hdHRyaWJ1dGVzLCBidXQgaXQncwogICAg IDs7IGEgcGFpbiB0byBwYXJzZSBhbmQgaXQgbWF5IG5vdCB0ZWxsIHlvdSB3aGF0IHdlIHdhbnQg dW5kZXIKICAgICA7OyBub24tc3RhbmRhcmQgZmlsZS1zeXN0ZW1zLiAgU28gbGV0J3MganVzdCBz YXkgd2hhdCB3ZSB3YW50IGFuZCBsZXQKICAgICA7OyB0aGUgdW5kZXJseWluZyBDIGNvZGUgYW5k IGZpbGUtc3lzdGVtIGZpZ3VyZSBpdCBvdXQuCiAgICAgOzsgVGhpcyBhbHNvIGVuZHMgdXAgY2hl Y2tpbmcgYSBidW5jaCBvZiB1c2VmdWwgY29uZGl0aW9uczogaXQgbWFrZXMKICAgICA7OyBzdXJl IHdlIGhhdmUgd3JpdGUtYWNjZXNzIHRvIHRoZSBkaXJlY3RvcnkgYW5kIHRoYXQgd2Ugb3duIGl0 LCB0aHVzCiAgICAgOzsgY2xvc2luZyBhIGJ1bmNoIG9mIHNlY3VyaXR5IGhvbGVzLgogICAgIChj b25kaXRpb24tY2FzZSBlcnJvcgoJIChzZXQtZmlsZS1tb2RlcyBkaXIgI28wNzAwICdub2ZvbGxv dykKICAgICAgIChmaWxlLWVycm9yCgkoZXJyb3IKCSAoZm9ybWF0ICJVbmFibGUgdG8gdXNlIHRl bXBvcmFyeSBkaXJlY3RvcnkgJXM6ICVzIgoJCSBkaXIgKG1hcGNvbmNhdCAjJ2lkZW50aXR5IChj ZHIgZXJyb3IpICIgIikpKSkpKSkpCgooZGVmdW4gZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGly ICgpCiAgIlJldHVybiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBwbmcgZmlsZXMgb2YgdGhlIGN1 cnJlbnQgZG9jIHNob3VsZCBiZSBzYXZlZC4KSXQncyBhIHN1YmRpcmVjdG9yeSBvZiBgZG9jLXZp ZXctY2FjaGUtZGlyZWN0b3J5Jy4iCiAgKGlmIGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRpcgog ICAgICBkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1kaXIKICAgIDs7IFRyeSBhbmQgbWFrZSBzdXJl IGRvYy12aWV3LWNhY2hlLWRpcmVjdG9yeSBleGlzdHMgYW5kIGlzIHNhZmUuCiAgICAoZG9jLXZp ZXctbWFrZS1zYWZlLWRpciBkb2Mtdmlldy1jYWNoZS1kaXJlY3RvcnkpCiAgICA7OyBOb3cgY29t cHV0ZSB0aGUgc3ViZGlyZWN0b3J5IHRvIHVzZS4KICAgIChzZXRxIGRvYy12aWV3LS1jdXJyZW50 LWNhY2hlLWRpcgoJICAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeQoJICAgKGV4cGFuZC1maWxlLW5h bWUKCSAgICAoY29uY2F0ICh0aHJlYWQtbGFzdAogICAgICAgICAgICAgICAgICAgICAgKGZpbGUt bmFtZS1ub25kaXJlY3RvcnkgZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUpCiAgICAgICAgICAg ICAgICAgICAgICA7OyBidWcjMTM2NzkKICAgICAgICAgICAgICAgICAgICAgIChzdWJzdC1jaGFy LWluLXN0cmluZyA/JSA/XykKICAgICAgICAgICAgICAgICAgICAgIDs7IGFyYy1tb2RlIGNvbmNh dGVuYXRlcyBhcmNoaXZlIG5hbWUgYW5kIGZpbGUgbmFtZQogICAgICAgICAgICAgICAgICAgICAg Ozsgd2l0aCBjb2xvbiwgd2hpY2ggaXNuJ3QgYWxsb3dlZCBvbiBNUy1XaW5kb3dzLgogICAgICAg ICAgICAgICAgICAgICAgKHN1YnN0LWNoYXItaW4tc3RyaW5nID86ID9fKSkKICAgICAgICAgICAg ICAgICAgICAiLSIKICAgICAgICAgICAgICAgICAgICAobGV0ICgoZmlsZSBkb2Mtdmlldy0tYnVm ZmVyLWZpbGUtbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgog ICAgICAgICAgICAgICAgICAgICAgICAoc2V0LWJ1ZmZlci1tdWx0aWJ5dGUgbmlsKQogICAgICAg ICAgICAgICAgICAgICAgICAoaW5zZXJ0LWZpbGUtY29udGVudHMtbGl0ZXJhbGx5IGZpbGUpCiAg ICAgICAgICAgICAgICAgICAgICAgIChtZDUgKGN1cnJlbnQtYnVmZmVyKSkpKSkKICAgICAgICAg ICAgZG9jLXZpZXctY2FjaGUtZGlyZWN0b3J5KSkpKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ1biBk b2Mtdmlldy1tb2RlLXAgKHR5cGUpCiAgIlJldHVybiBub24tbmlsIGlmIGRvY3VtZW50IHR5cGUg VFlQRSBpcyBhdmFpbGFibGUgZm9yIGBkb2MtdmlldycuCkRvY3VtZW50IHR5cGVzIGFyZSBzeW1i b2xzIGxpa2UgYGR2aScsIGBwcycsIGBwZGYnLCBgZXB1YicsCmBjYnonLCBgZmIyJywgYHhwcycs IGBveHBzJywgb3Jgb2RmJyAoYW55IE9wZW5Eb2N1bWVudCBmb3JtYXQpLiIKICAoYW5kIChkaXNw bGF5LWdyYXBoaWMtcCkKICAgICAgIChpbWFnZS10eXBlLWF2YWlsYWJsZS1wICdwbmcpCiAgICAg ICAoY29uZAoJKChlcSB0eXBlICdkdmkpCgkgKGFuZCAoZG9jLXZpZXctbW9kZS1wICdwZGYpCgkg ICAgICAob3IgKGFuZCBkb2Mtdmlldy1kdmlwZGYtcHJvZ3JhbQoJCSAgICAgICAoZXhlY3V0YWJs ZS1maW5kIGRvYy12aWV3LWR2aXBkZi1wcm9ncmFtKSkKCQkgIChhbmQgZG9jLXZpZXctZHZpcGRm bS1wcm9ncmFtCgkJICAgICAgIChleGVjdXRhYmxlLWZpbmQgZG9jLXZpZXctZHZpcGRmbS1wcm9n cmFtKSkpKSkKCSgobWVtcSB0eXBlICcocG9zdHNjcmlwdCBwcyBlcHMgcGRmKSkKICAgICAgICAg KG9yIChhbmQgZG9jLXZpZXctZ2hvc3RzY3JpcHQtcHJvZ3JhbQoJICAgICAgICAgIChleGVjdXRh YmxlLWZpbmQgZG9jLXZpZXctZ2hvc3RzY3JpcHQtcHJvZ3JhbSkpCiAgICAgICAgICAgICA7OyBm b3IgcGRmIGFsc28gY2hlY2sgZm9yIGBkb2Mtdmlldy1wZGZkcmF3LXByb2dyYW0nCiAgICAgICAg ICAgICAod2hlbiAoZXEgdHlwZSAncGRmKQogICAgICAgICAgICAgICAoYW5kIGRvYy12aWV3LXBk ZmRyYXctcHJvZ3JhbQogICAgICAgICAgICAgICAgICAgIChleGVjdXRhYmxlLWZpbmQgZG9jLXZp ZXctcGRmZHJhdy1wcm9ncmFtKSkpKSkKCSgoZXEgdHlwZSAnb2RmKQoJIChhbmQgZG9jLXZpZXct b2RmLT5wZGYtY29udmVydGVyLXByb2dyYW0KCSAgICAgIChleGVjdXRhYmxlLWZpbmQgZG9jLXZp ZXctb2RmLT5wZGYtY29udmVydGVyLXByb2dyYW0pCgkgICAgICAoZG9jLXZpZXctbW9kZS1wICdw ZGYpKSkKCSgoZXEgdHlwZSAnZGp2dSkKCSAoZXhlY3V0YWJsZS1maW5kICJkZGp2dSIpKQogICAg ICAgICgobWVtcSB0eXBlICcoZXB1YiBjYnogZmIyIHhwcyBveHBzKSkKICAgICAgICAgOzsgZmly c3QgY2hlY2sgaWYgYGRvYy12aWV3LXBkZmRyYXctcHJvZ3JhbScgaXMgc2V0IHRvIG11dG9vbAog ICAgICAgICAoYW5kIChzdHJpbmc9IGRvYy12aWV3LXBkZmRyYXctcHJvZ3JhbSAibXV0b29sIikK ICAgICAgICAgICAgICAoZXhlY3V0YWJsZS1maW5kICJtdXRvb2wiKSkpCgkodCA7OyB1bmtub3du IGltYWdlIHR5cGUKCSBuaWwpKSkpCgo7Ozs7IENvbnZlcnNpb24gRnVuY3Rpb25zCgooZGVmdmFy IGRvYy12aWV3LXNocmluay1mYWN0b3IgMS4xMjUpCgooZGVmdW4gZG9jLXZpZXctZW5sYXJnZSAo ZmFjdG9yKQogICJFbmxhcmdlIHRoZSBkb2N1bWVudCBieSBGQUNUT1IuIgogIChpbnRlcmFjdGl2 ZSAobGlzdCBkb2Mtdmlldy1zaHJpbmstZmFjdG9yKSkKICAoaWYgZG9jLXZpZXctc2NhbGUtaW50 ZXJuYWxseQogICAgICAobGV0ICgobmV3IChjZWlsaW5nICgqIGZhY3RvciBkb2Mtdmlldy1pbWFn ZS13aWR0aCkpKSkKICAgICAgICAodW5sZXNzIChlcXVhbCBuZXcgZG9jLXZpZXctaW1hZ2Utd2lk dGgpCiAgICAgICAgICAoc2V0cS1sb2NhbCBkb2Mtdmlldy1pbWFnZS13aWR0aCBuZXcpCiAgICAg ICAgICAoZG9jLXZpZXctaW5zZXJ0LWltYWdlCiAgICAgICAgICAgKHBsaXN0LWdldCAoY2RyIChk b2Mtdmlldy1jdXJyZW50LWltYWdlKSkgOmZpbGUpCiAgICAgICAgICAgOndpZHRoIGRvYy12aWV3 LWltYWdlLXdpZHRoKSkpCiAgICAobGV0ICgobmV3IChjZWlsaW5nICgqIGZhY3RvciBkb2Mtdmll dy1yZXNvbHV0aW9uKSkpKQogICAgICAodW5sZXNzIChlcXVhbCBuZXcgZG9jLXZpZXctcmVzb2x1 dGlvbikKICAgICAgICAoc2V0cS1sb2NhbCBkb2Mtdmlldy1yZXNvbHV0aW9uIG5ldykKICAgICAg ICAoZG9jLXZpZXctcmVjb252ZXJ0LWRvYykpKSkpCgooZGVmdW4gZG9jLXZpZXctc2hyaW5rIChm YWN0b3IpCiAgIlNocmluayB0aGUgZG9jdW1lbnQgYnkgRkFDVE9SLiIKICAoaW50ZXJhY3RpdmUg KGxpc3QgZG9jLXZpZXctc2hyaW5rLWZhY3RvcikpCiAgKGRvYy12aWV3LWVubGFyZ2UgKC8gMS4w IGZhY3RvcikpKQoKKGRlZnVuIGRvYy12aWV3LXNjYWxlLXJlc2V0ICgpCiAgIlJlc2V0IHRoZSBk b2N1bWVudCBzaXplL3pvb20gbGV2ZWwgdG8gdGhlIGluaXRpYWwgb25lLiIKICAoaW50ZXJhY3Rp dmUpCiAgKGlmIGRvYy12aWV3LXNjYWxlLWludGVybmFsbHkKICAgICAgKHByb2duCgkoa2lsbC1s b2NhbC12YXJpYWJsZSAnZG9jLXZpZXctaW1hZ2Utd2lkdGgpCgkoZG9jLXZpZXctaW5zZXJ0LWlt YWdlCgkgKHBsaXN0LWdldCAoY2RyIChkb2Mtdmlldy1jdXJyZW50LWltYWdlKSkgOmZpbGUpCgkg OndpZHRoIGRvYy12aWV3LWltYWdlLXdpZHRoKSkKICAgIChraWxsLWxvY2FsLXZhcmlhYmxlICdk b2Mtdmlldy1yZXNvbHV0aW9uKQogICAgKGRvYy12aWV3LXJlY29udmVydC1kb2MpKSkKCihkZWZ1 biBkb2Mtdmlldy1zY2FsZS1hZGp1c3QgKGZhY3RvcikKICAiQWRqdXN0IHRoZSBzY2FsZSBvZiB0 aGUgRG9jVmlldyBwYWdlIGltYWdlcyBieSBGQUNUT1IuCkZBQ1RPUiBkZWZhdWx0cyB0byBgZG9j LXZpZXctc2hyaW5rLWZhY3RvcicuCgpUaGUgYWN0dWFsIGFkanVzdG1lbnQgbWFkZSBkZXBlbmRz IG9uIHRoZSBmaW5hbCBjb21wb25lbnQgb2YgdGhlCmtleWJpbmRpbmcgdXNlZCB0byBpbnZva2Ug dGhlIGNvbW1hbmQsIHdpdGggYWxsIG1vZGlmaWVycyByZW1vdmVkOgoKICAgKywgPSAgIEluY3Jl YXNlIHRoZSBpbWFnZSBzY2FsZSBieSBGQUNUT1IKICAgLSAgICAgIERlY3JlYXNlIHRoZSBpbWFn ZSBzY2FsZSBieSBGQUNUT1IKICAgMCAgICAgIFJlc2V0IHRoZSBpbWFnZSBzY2FsZSB0byB0aGUg aW5pdGlhbCBzY2FsZSIKICAoaW50ZXJhY3RpdmUgKGxpc3QgZG9jLXZpZXctc2hyaW5rLWZhY3Rv cikpCiAgKGxldCAoKGV2IGxhc3QtY29tbWFuZC1ldmVudCkKCShlY2hvLWtleXN0cm9rZXMgbmls KSkKICAgIChwY2FzZSAoZXZlbnQtYmFzaWMtdHlwZSBldikKICAgICAgKChvciA/KyA/PSkgKGRv Yy12aWV3LWVubGFyZ2UgZmFjdG9yKSkKICAgICAgKD8tICAgICAgICAgKGRvYy12aWV3LXNocmlu ayBmYWN0b3IpKQogICAgICAoPzAgICAgICAgICAoZG9jLXZpZXctc2NhbGUtcmVzZXQpKSkpKQoK KGRlZnVuIGRvYy12aWV3LWZpdC13aWR0aC10by13aW5kb3cgKCkKICAiRml0IHRoZSBpbWFnZSB3 aWR0aCB0byB0aGUgd2luZG93IHdpZHRoLiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoKHdpbi13 aWR0aCAoLSAobnRoIDIgKHdpbmRvdy1pbnNpZGUtcGl4ZWwtZWRnZXMpKQogICAgICAgICAgICAg ICAgICAgICAgKG50aCAwICh3aW5kb3ctaW5zaWRlLXBpeGVsLWVkZ2VzKSkpKQogICAgICAgIChz bGljZSAoZG9jLXZpZXctY3VycmVudC1zbGljZSkpKQogICAgKGlmIChub3Qgc2xpY2UpCiAgICAg ICAgKGxldCAoKGltZy13aWR0aCAoY2FyIChpbWFnZS1kaXNwbGF5LXNpemUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChpbWFnZS1nZXQtZGlzcGxheS1wcm9wZXJ0eSkgdCkpKSkKICAg ICAgICAgIChkb2Mtdmlldy1lbmxhcmdlICgvIChmbG9hdCB3aW4td2lkdGgpIChmbG9hdCBpbWct d2lkdGgpKSkpCgogICAgICA7OyBJZiBzbGljZSBpcyBzZXQKICAgICAgKGxldCogKChzbGljZS13 aWR0aCAobnRoIDIgc2xpY2UpKQogICAgICAgICAgICAgKHNjYWxlLWZhY3RvciAoLyAoZmxvYXQg d2luLXdpZHRoKSAoZmxvYXQgc2xpY2Utd2lkdGgpKSkKICAgICAgICAgICAgIChuZXctc2xpY2Ug KG1hcGNhciAobGFtYmRhICh4KSAoY2VpbGluZyAoKiBzY2FsZS1mYWN0b3IgeCkpKSBzbGljZSkp KQoKICAgICAgICAoZG9jLXZpZXctZW5sYXJnZSBzY2FsZS1mYWN0b3IpCiAgICAgICAgKHNldGYg KGRvYy12aWV3LWN1cnJlbnQtc2xpY2UpIG5ldy1zbGljZSkKICAgICAgICAoZG9jLXZpZXctZ290 by1wYWdlIChkb2Mtdmlldy1jdXJyZW50LXBhZ2UpKSkpKSkKCihkZWZ1biBkb2Mtdmlldy1maXQt aGVpZ2h0LXRvLXdpbmRvdyAoKQogICJGaXQgdGhlIGltYWdlIGhlaWdodCB0byB0aGUgd2luZG93 IGhlaWdodC4iCiAgKGludGVyYWN0aXZlKQogIChsZXQgKCh3aW4taGVpZ2h0ICgtIChudGggMyAo d2luZG93LWluc2lkZS1waXhlbC1lZGdlcykpCiAgICAgICAgICAgICAgICAgICAgICAgKG50aCAx ICh3aW5kb3ctaW5zaWRlLXBpeGVsLWVkZ2VzKSkpKQogICAgICAgIChzbGljZSAoZG9jLXZpZXct Y3VycmVudC1zbGljZSkpKQogICAgKGlmIChub3Qgc2xpY2UpCiAgICAgICAgKGxldCAoKGltZy1o ZWlnaHQgKGNkciAoaW1hZ2UtZGlzcGxheS1zaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGltYWdlLWdldC1kaXNwbGF5LXByb3BlcnR5KSB0KSkpKQogICAgICAgICAgOzsgV2hl biB1c2VycyBjYWxsICdkb2Mtdmlldy1maXQtaGVpZ2h0LXRvLXdpbmRvdycsCiAgICAgICAgICA7 OyB0aGV5IG1pZ2h0IHdhbnQgdG8gZ28gdG8gbmV4dCBwYWdlIGJ5IHR5cGluZyBTUEMKICAgICAg ICAgIDs7IE9OTFkgb25jZS4gU28gSSB1c2VkICcoLSB3aW4taGVpZ2h0IDEpJyBpbnN0ZWFkIG9m CiAgICAgICAgICA7OyAnd2luLWhlaWdodCcKICAgICAgICAgIChkb2Mtdmlldy1lbmxhcmdlICgv IChmbG9hdCAoLSB3aW4taGVpZ2h0IDEpKSAoZmxvYXQgaW1nLWhlaWdodCkpKSkKCiAgICAgIDs7 IElmIHNsaWNlIGlzIHNldAogICAgICAobGV0KiAoKHNsaWNlLWhlaWdodCAobnRoIDMgc2xpY2Up KQogICAgICAgICAgICAgKHNjYWxlLWZhY3RvciAoLyAoZmxvYXQgKC0gd2luLWhlaWdodCAxKSkg KGZsb2F0IHNsaWNlLWhlaWdodCkpKQogICAgICAgICAgICAgKG5ldy1zbGljZSAobWFwY2FyIChs YW1iZGEgKHgpIChjZWlsaW5nICgqIHNjYWxlLWZhY3RvciB4KSkpIHNsaWNlKSkpCgogICAgICAg IChkb2Mtdmlldy1lbmxhcmdlIHNjYWxlLWZhY3RvcikKICAgICAgICAoc2V0ZiAoZG9jLXZpZXct Y3VycmVudC1zbGljZSkgbmV3LXNsaWNlKQogICAgICAgIChkb2Mtdmlldy1nb3RvLXBhZ2UgKGRv Yy12aWV3LWN1cnJlbnQtcGFnZSkpKSkpKQoKKGRlZnVuIGRvYy12aWV3LWZpdC1wYWdlLXRvLXdp bmRvdyAoKQogICJGaXQgdGhlIGltYWdlIHRvIHRoZSB3aW5kb3cuCk1vcmUgc3BlY2lmaWNhbGx5 LCB0aGlzIGZ1bmN0aW9uIGVubGFyZ2VzIGltYWdlIGJ5OgoKbWluIHsod2luZG93LXdpZHRoIC8g aW1hZ2Utd2lkdGgpLCAod2luZG93LWhlaWdodCAvIGltYWdlLWhlaWdodCl9IHRpbWVzLiIKICAo aW50ZXJhY3RpdmUpCiAgKGxldCAoKHdpbi13aWR0aCAoLSAobnRoIDIgKHdpbmRvdy1pbnNpZGUt cGl4ZWwtZWRnZXMpKQogICAgICAgICAgICAgICAgICAgICAgKG50aCAwICh3aW5kb3ctaW5zaWRl LXBpeGVsLWVkZ2VzKSkpKQogICAgICAgICh3aW4taGVpZ2h0ICgtIChudGggMyAod2luZG93LWlu c2lkZS1waXhlbC1lZGdlcykpCiAgICAgICAgICAgICAgICAgICAgICAgKG50aCAxICh3aW5kb3ct aW5zaWRlLXBpeGVsLWVkZ2VzKSkpKQogICAgICAgIChzbGljZSAoZG9jLXZpZXctY3VycmVudC1z bGljZSkpKQogICAgKGlmIChub3Qgc2xpY2UpCiAgICAgICAgKGxldCAoKGltZy13aWR0aCAoY2Fy IChpbWFnZS1kaXNwbGF5LXNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWFn ZS1nZXQtZGlzcGxheS1wcm9wZXJ0eSkgdCkpKQogICAgICAgICAgICAgIChpbWctaGVpZ2h0IChj ZHIgKGltYWdlLWRpc3BsYXktc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChp bWFnZS1nZXQtZGlzcGxheS1wcm9wZXJ0eSkgdCkpKSkKICAgICAgICAgIChkb2Mtdmlldy1lbmxh cmdlIChtaW4gKC8gKGZsb2F0IHdpbi13aWR0aCkgKGZsb2F0IGltZy13aWR0aCkpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgvIChmbG9hdCAoLSB3aW4taGVpZ2h0IDEpKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQgaW1nLWhlaWdodCkpKSkpCiAg ICAgIDs7IElmIHNsaWNlIGlzIHNldAogICAgICAobGV0KiAoKHNsaWNlLXdpZHRoIChudGggMiBz bGljZSkpCiAgICAgICAgICAgICAoc2xpY2UtaGVpZ2h0IChudGggMyBzbGljZSkpCiAgICAgICAg ICAgICAoc2NhbGUtZmFjdG9yIChtaW4gKC8gKGZsb2F0IHdpbi13aWR0aCkgKGZsb2F0IHNsaWNl LXdpZHRoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLyAoZmxvYXQgKC0gd2lu LWhlaWdodCAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQgc2xp Y2UtaGVpZ2h0KSkpKQogICAgICAgICAgICAgKG5ldy1zbGljZSAobWFwY2FyIChsYW1iZGEgKHgp IChjZWlsaW5nICgqIHNjYWxlLWZhY3RvciB4KSkpIHNsaWNlKSkpCiAgICAgICAgKGRvYy12aWV3 LWVubGFyZ2Ugc2NhbGUtZmFjdG9yKQogICAgICAgIChzZXRmIChkb2Mtdmlldy1jdXJyZW50LXNs aWNlKSBuZXctc2xpY2UpCiAgICAgICAgKGRvYy12aWV3LWdvdG8tcGFnZSAoZG9jLXZpZXctY3Vy cmVudC1wYWdlKSkpKSkpCgooZGVmdW4gZG9jLXZpZXctZml0LXdpbmRvdy10by1wYWdlICgpCiAg IlJlc2l6ZSBzZWxlY3RlZCB3aW5kb3cgc28gaXQganVzdCBmaXRzIHRoZSBjdXJyZW50IHBhZ2Uu ClJlc2l6ZSB0aGUgY29udGFpbmluZyBmcmFtZSBpZiBuZWVkZWQuIgogIChpbnRlcmFjdGl2ZSkK ICAobGV0KiAoKHNsaWNlIChkb2Mtdmlldy1jdXJyZW50LXNsaWNlKSkKICAgICAgICAgKGltZy13 aWR0aCAgKGlmIHNsaWNlIChudGggMiBzbGljZSkKICAgICAgICAgICAgICAgICAgICAgICAoY2Fy IChpbWFnZS1kaXNwbGF5LXNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1hZ2Ut Z2V0LWRpc3BsYXktcHJvcGVydHkpIHQpKSkpCiAgICAgICAgIChpbWctaGVpZ2h0IChpZiBzbGlj ZSAobnRoIDMgc2xpY2UpCiAgICAgICAgICAgICAgICAgICAgICAgKGNkciAoaW1hZ2UtZGlzcGxh eS1zaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltYWdlLWdldC1kaXNwbGF5LXBy b3BlcnR5KSB0KSkpKQogICAgICAgICAod2luLXdpZHRoICAoLSAobnRoIDIgKHdpbmRvdy1pbnNp ZGUtcGl4ZWwtZWRnZXMpKQogICAgICAgICAgICAgICAgICAgICAgICAobnRoIDAgKHdpbmRvdy1p bnNpZGUtcGl4ZWwtZWRnZXMpKSkpCiAgICAgICAgICh3aW4taGVpZ2h0ICgtIChudGggMyAod2lu ZG93LWluc2lkZS1waXhlbC1lZGdlcykpCiAgICAgICAgICAgICAgICAgICAgICAgIChudGggMSAo d2luZG93LWluc2lkZS1waXhlbC1lZGdlcykpKSkKICAgICAgICAgKHdpZHRoLWRpZmYgICgtIGlt Zy13aWR0aCAgd2luLXdpZHRoKSkKICAgICAgICAgKGhlaWdodC1kaWZmICgtIGltZy1oZWlnaHQg d2luLWhlaWdodCkpCiAgICAgICAgIChuZXctZnJhbWUtcGFyYW1zCiAgICAgICAgICA7OyBJZiB3 ZSBjYW4ndCByZXNpemUgdGhlIHdpbmRvdywgdHJ5IGFuZCByZXNpemUgdGhlIGZyYW1lLgogICAg ICAgICAgOzsgV2UgdXNlZCB0byBjb21wYXJlIHRoZSBgd2luZG93LXdpZHRoL2hlaWdodGAgYW5k IHRoZQogICAgICAgICAgOzsgYGZyYW1lLXdpZHRoL2hlaWdodGAgaW5zdGVhZCBvZiBjYXRjaGlu ZyB0aGUgZXJyb3JzLCBidXQKICAgICAgICAgIDs7IGl0J3MgdG9vIGZpZGRseSAoZS5nLiBpbiB0 aGUgcHJlc2VuY2Ugb2YgdGhlIG1pbml3aW5kb3csCiAgICAgICAgICA7OyB0aGUgaGVpZ2h0IHRo ZSBmcmFtZSBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIGhlaWdodCBvZiB0aGUKICAgICAgICAgIDs7 IHJvb3Qgd2luZG93ICsxKS4KICAgICAgICAgIChhcHBlbmQKICAgICAgICAgICAoY29uZGl0aW9u LWNhc2UgbmlsCiAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgIChlbmxhcmdl LXdpbmRvdyAoLyB3aWR0aC1kaWZmIChmcmFtZS1jaGFyLXdpZHRoKSkgJ2hvcml6KQogICAgICAg ICAgICAgICAgIG5pbCkKICAgICAgICAgICAgIChlcnJvcgogICAgICAgICAgICAgIGAoKHdpZHRo ICAuICh0ZXh0LXBpeGVscwogICAgICAgICAgICAgICAgICAgICAgICAgICAuICwoKyAoZnJhbWUt dGV4dC13aWR0aCkgd2lkdGgtZGlmZikpKSkpKQogICAgICAgICAgIChjb25kaXRpb24tY2FzZSBu aWwKICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgKGVubGFyZ2Utd2luZG93 ICgvIGhlaWdodC1kaWZmIChmcmFtZS1jaGFyLWhlaWdodCkpIG5pbCkKICAgICAgICAgICAgICAg ICBuaWwpCiAgICAgICAgICAgICAoZXJyb3IKICAgICAgICAgICAgICBgKChoZWlnaHQgIC4gKHRl eHQtcGl4ZWxzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICwoKyAoZnJhbWUtdGV4dC1o ZWlnaHQpIGhlaWdodC1kaWZmKSkpKSkpKSkpCiAgICAod2hlbiBuZXctZnJhbWUtcGFyYW1zCiAg ICAgIChtb2RpZnktZnJhbWUtcGFyYW1ldGVycyAoc2VsZWN0ZWQtZnJhbWUpIG5ldy1mcmFtZS1w YXJhbXMpKSkpCgooZGVmdW4gZG9jLXZpZXctY2VudGVyLXBhZ2UtaG9yaXpvbnRhbGx5ICgpCiAg IkNlbnRlciBwYWdlIGhvcml6b250YWxseSB3aGVuIHBhZ2UgaXMgd2lkZXIgdGhhbiB3aW5kb3cu IgogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgocGFnZS13aWR0aCAoY2FyIChpbWFnZS1zaXplIChk b2Mtdmlldy1jdXJyZW50LWltYWdlKSAncGl4ZWwpKSkKICAgICAgICAod2luZG93LXdpZHRoICh3 aW5kb3ctYm9keS13aWR0aCBuaWwgJ3BpeGVsKSkKICAgICAgICA7OyBIb3cgbXVjaCBkbyB3ZSBz Y3JvbGwgaW4gb3JkZXIgdG8gY2VudGVyIHRoZSBwYWdlPwogICAgICAgIChwaXhlbC1oc2Nyb2xs IDApCiAgICAgICAgOzsgSG93IG1hbnkgcGl4ZWxzIGFyZSB0aGVyZSBpbiBhIGNvbHVtbj8KICAg ICAgICAoY29sLWluLXBpeGVsICgvICh3aW5kb3ctYm9keS13aWR0aCBuaWwgJ3BpeGVsKQogICAg ICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy1ib2R5LXdpZHRoIG5pbCkpKSkKICAgICh3aGVu ICg+IHBhZ2Utd2lkdGggd2luZG93LXdpZHRoKQogICAgICAoc2V0cSBwaXhlbC1oc2Nyb2xsICgv ICgtIHBhZ2Utd2lkdGggd2luZG93LXdpZHRoKSAyKSkKICAgICAgKHNldC13aW5kb3ctaHNjcm9s bCAoc2VsZWN0ZWQtd2luZG93KQogICAgICAgICAgICAgICAgICAgICAgICAgICgvIHBpeGVsLWhz Y3JvbGwgY29sLWluLXBpeGVsKSkpKSkKCihkZWZ1biBkb2Mtdmlldy1jZW50ZXItcGFnZS12ZXJ0 aWNhbGx5ICgpCiAgIkNlbnRlciBwYWdlIHZlcnRpY2FsbHkgd2hlbiBwYWdlIGlzIHdpZGVyIHRo YW4gd2luZG93LiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoKHBhZ2UtaGVpZ2h0IChjZHIgKGlt YWdlLXNpemUgKGRvYy12aWV3LWN1cnJlbnQtaW1hZ2UpICdwaXhlbCkpKQogICAgICAgICh3aW5k b3ctaGVpZ2h0ICh3aW5kb3ctYm9keS1oZWlnaHQgbmlsICdwaXhlbCkpCiAgICAgICAgOzsgSG93 IG11Y2ggZG8gd2Ugc2Nyb2xsIGluIG9yZGVyIHRvIGNlbnRlciB0aGUgcGFnZT8KICAgICAgICAo cGl4ZWwtc2Nyb2xsIDApKQogICAgKHdoZW4gKD4gcGFnZS1oZWlnaHQgd2luZG93LWhlaWdodCkK ICAgICAgKHNldHEgcGl4ZWwtc2Nyb2xsICgvICgtIHBhZ2UtaGVpZ2h0IHdpbmRvdy1oZWlnaHQp IDIpKQogICAgICAoc2V0LXdpbmRvdy12c2Nyb2xsIChzZWxlY3RlZC13aW5kb3cpIHBpeGVsLXNj cm9sbCAncGl4ZWwpKSkpCgooZGVmdW4gZG9jLXZpZXctcmVjb252ZXJ0LWRvYyAoKQogICJSZWNv bnZlcnQgdGhlIGN1cnJlbnQgZG9jdW1lbnQuClNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGNh Y2hlZCBpbWFnZXMgYXJlbid0IHVwLXRvLWRhdGUuIgogIChpbnRlcmFjdGl2ZSkKICAoZG9jLXZp ZXcta2lsbC1wcm9jKQogIDs7IENsZWFyIHRoZSBvbGQgY2FjaGVkIGZpbGVzCiAgKHdoZW4gKGZp bGUtZXhpc3RzLXAgKGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRpcikpCiAgICAoZGVsZXRlLWRp cmVjdG9yeSAoZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyKSAncmVjdXJzaXZlKSkKICAoa2ls bC1sb2NhbC12YXJpYWJsZSAnZG9jLXZpZXctbGFzdC1wYWdlLW51bWJlcikKICAoZG9jLXZpZXct aW5pdGlhdGUtZGlzcGxheSkpCgooZGVmdW4gZG9jLXZpZXctc2VudGluZWwgKHByb2MgZXZlbnQp CiAgIkdlbmVyaWMgc2VudGluZWwgZm9yIGRvYy12aWV3IGNvbnZlcnNpb24gcHJvY2Vzc2VzLiIK ICAoaWYgKG5vdCAoc3RyaW5nLW1hdGNoICJmaW5pc2hlZCIgZXZlbnQpKQogICAgICAobWVzc2Fn ZSAiRG9jVmlldzogcHJvY2VzcyAlcyBjaGFuZ2VkIHN0YXR1cyB0byAlcy4iCiAgICAgICAgICAg ICAgIChwcm9jZXNzLW5hbWUgcHJvYykKCSAgICAgICAoaWYgKHN0cmluZy1tYXRjaCAiXFwoLitc XClcbj9cXCciIGV2ZW50KQoJCSAgIChtYXRjaC1zdHJpbmcgMSBldmVudCkKCQkgZXZlbnQpKQog ICAgKHdoZW4gKGJ1ZmZlci1saXZlLXAgKHByb2Nlc3MtZ2V0IHByb2MgJ2J1ZmZlcikpCiAgICAg ICh3aXRoLWN1cnJlbnQtYnVmZmVyIChwcm9jZXNzLWdldCBwcm9jICdidWZmZXIpCiAgICAgICAg KHNldHEgZG9jLXZpZXctLWN1cnJlbnQtY29udmVydGVyLXByb2Nlc3NlcwogICAgICAgICAgICAg IChkZWxxIHByb2MgZG9jLXZpZXctLWN1cnJlbnQtY29udmVydGVyLXByb2Nlc3NlcykpCiAgICAg ICAgKHNldHEgbW9kZS1saW5lLXByb2Nlc3MKICAgICAgICAgICAgICAoaWYgZG9jLXZpZXctLWN1 cnJlbnQtY29udmVydGVyLXByb2Nlc3NlcwogICAgICAgICAgICAgICAgICAoZm9ybWF0ICI6JXMi IChjYXIgZG9jLXZpZXctLWN1cnJlbnQtY29udmVydGVyLXByb2Nlc3NlcykpKSkKICAgICAgICAo ZnVuY2FsbCAocHJvY2Vzcy1nZXQgcHJvYyAnY2FsbGJhY2spKSkpKSkKCihkZWZ1biBkb2Mtdmll dy1zdGFydC1wcm9jZXNzIChuYW1lIHByb2dyYW0gYXJncyBjYWxsYmFjaykKICA7OyBNYWtlIHN1 cmUgdGhlIHByb2Nlc3MgaXMgc3RhcnRlZCBpbiBhbiBleGlzdGluZyBkaXJlY3RvcnksIChyYXRo ZXIgdGhhbgogIDs7IHNvbWUgZmlsZS1uYW1lLWhhbmRsZXItbWFuYWdlZCBkaXIsIGZvciBleGFt cGxlKS4KICAobGV0KiAoKGRlZmF1bHQtZGlyZWN0b3J5IChvciAodW5oYW5kbGVkLWZpbGUtbmFt ZS1kaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdC1kaXJl Y3RvcnkpCgkJCSAgICAgICAgKGV4cGFuZC1maWxlLW5hbWUgIn4vIikpKQogICAgICAgICAocHJv YyAoYXBwbHkgIydzdGFydC1wcm9jZXNzIG5hbWUgZG9jLXZpZXctY29udmVyc2lvbi1idWZmZXIK ICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0gYXJncykpKQogICAgKHB1c2ggcHJvYyBkb2Mt dmlldy0tY3VycmVudC1jb252ZXJ0ZXItcHJvY2Vzc2VzKQogICAgKHNldHEgbW9kZS1saW5lLXBy b2Nlc3MgKGxpc3QgKGZvcm1hdCAiOiVzIiBwcm9jKSkpCiAgICAoc2V0LXByb2Nlc3Mtc2VudGlu ZWwgcHJvYyAnZG9jLXZpZXctc2VudGluZWwpCiAgICAocHJvY2Vzcy1wdXQgcHJvYyAnYnVmZmVy ICAgKGN1cnJlbnQtYnVmZmVyKSkKICAgIChwcm9jZXNzLXB1dCBwcm9jICdjYWxsYmFjayBjYWxs YmFjaykpKQoKKGRlZnVuIGRvYy12aWV3LWR2aS0+cGRmIChkdmkgcGRmIGNhbGxiYWNrKQogICJD b252ZXJ0IERWSSB0byBQREYgYXN5bmNocm9ub3VzbHkgYW5kIGNhbGwgQ0FMTEJBQ0sgd2hlbiBm aW5pc2hlZC4iCiAgOzsgUHJlZmVyIGR2aXBkZiBvdmVyIGR2aXBkZm0sIGJlY2F1c2UgdGhlIGxh dHRlciBoYXMgcHJvYmxlbXMgaWYgdGhlIERWSQogIDs7IHJlZmVyZW5jZXMgYW5kIGluY2x1ZGVz IG90aGVyIFBTIGZpbGVzLgogIChpZiAoYW5kIGRvYy12aWV3LWR2aXBkZi1wcm9ncmFtCgkgICAo ZXhlY3V0YWJsZS1maW5kIGRvYy12aWV3LWR2aXBkZi1wcm9ncmFtKSkKICAgICAgKGRvYy12aWV3 LXN0YXJ0LXByb2Nlc3MgImR2aS0+cGRmIiBkb2Mtdmlldy1kdmlwZGYtcHJvZ3JhbQoJCQkgICAg ICAobGlzdCBkdmkgcGRmKQoJCQkgICAgICBjYWxsYmFjaykKICAgIChkb2Mtdmlldy1zdGFydC1w cm9jZXNzICJkdmktPnBkZiIgZG9jLXZpZXctZHZpcGRmbS1wcm9ncmFtCgkJCSAgICAobGlzdCAi LW8iIHBkZiBkdmkpCgkJCSAgICBjYWxsYmFjaykpKQoKKGRlZnVuIGRvYy12aWV3LXBkZi1wYXNz d29yZC1wcm90ZWN0ZWQtZ2hvc3RzY3JpcHQtcCAocGRmKQogICJSZXR1cm4gbm9uLW5pbCBpZiBh IFBERiBmaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZC4KVGhlIHRlc3QgaXMgcGVyZm9ybWVkIHVz aW5nIGBkb2Mtdmlldy1naG9zdHNjcmlwdC1wcm9ncmFtJy4iCiAgKHdpdGgtdGVtcC1idWZmZXIK ICAgIChhcHBseSAjJ2NhbGwtcHJvY2VzcyBkb2Mtdmlldy1naG9zdHNjcmlwdC1wcm9ncmFtIG5p bCAoY3VycmVudC1idWZmZXIpCiAgICAgICAgICAgbmlsIGAoLEBkb2Mtdmlldy1naG9zdHNjcmlw dC1vcHRpb25zCiAgICAgICAgICAgICAgICAgIi1zTk9ESVNQTEFZIgogICAgICAgICAgICAgICAg ICxwZGYpKQogICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgIChzZWFyY2gtZm9yd2FyZCAi VGhpcyBmaWxlIHJlcXVpcmVzIGEgcGFzc3dvcmQgZm9yIGFjY2Vzcy4iIG5pbCB0KSkpCgooZGVm dW4gZG9jLXZpZXctcGRmLT5wbmctY29udmVydGVyLWdob3N0c2NyaXB0IChwZGYgcG5nIHBhZ2Ug Y2FsbGJhY2spCiAgKGxldCAoKHBkZi1wYXNzd2QgKGlmIChkb2Mtdmlldy1wZGYtcGFzc3dvcmQt cHJvdGVjdGVkLWdob3N0c2NyaXB0LXAgcGRmKQogICAgICAgICAgICAgICAgICAgICAgICAocmVh ZC1wYXNzd2QgIkVudGVyIHBhc3N3b3JkIGZvciBQREYgZmlsZTogIikpKSkKICAgIChkb2Mtdmll dy1zdGFydC1wcm9jZXNzCiAgICAgInBkZi9wcy0+cG5nIiBkb2Mtdmlldy1naG9zdHNjcmlwdC1w cm9ncmFtCiAgICAgYCgsQGRvYy12aWV3LWdob3N0c2NyaXB0LW9wdGlvbnMKICAgICAgICwoY29u Y2F0ICItc0RFVklDRT0iIGRvYy12aWV3LWdob3N0c2NyaXB0LWRldmljZSkKICAgICAgICwoZm9y bWF0ICItciVkIiAocm91bmQgZG9jLXZpZXctcmVzb2x1dGlvbikpCiAgICAgICAsQChpZiBwYWdl IGAoLChmb3JtYXQgIi1kRmlyc3RQYWdlPSVkIiBwYWdlKSkpCiAgICAgICAsQChpZiBwYWdlIGAo LChmb3JtYXQgIi1kTGFzdFBhZ2U9JWQiIHBhZ2UpKSkKICAgICAgICxAKGlmIHBkZi1wYXNzd2Qg YCgsKGZvcm1hdCAiLXNQREZQYXNzd29yZD0lcyIgcGRmLXBhc3N3ZCkpKQogICAgICAgLChjb25j YXQgIi1zT3V0cHV0RmlsZT0iIHBuZykKICAgICAgICxwZGYpCiAgICAgY2FsbGJhY2spKSkKCihk ZWZhbGlhcyAnZG9jLXZpZXctcHMtPnBuZy1jb252ZXJ0ZXItZ2hvc3RzY3JpcHQKICAnZG9jLXZp ZXctcGRmLT5wbmctY29udmVydGVyLWdob3N0c2NyaXB0KQoKKGRlZnVuIGRvYy12aWV3LWRqdnUt PnRpZmYtY29udmVydGVyLWRkanZ1IChkanZ1IHRpZmYgcGFnZSBjYWxsYmFjaykKICAiQ29udmVy dCBQQUdFIG9mIGEgREpWVSBmaWxlIHRvIGJpdG1hcChzKSBhc3luY2hyb25vdXNseS4KQ2FsbCBD QUxMQkFDSyB3aXRoIG5vIGFyZ3VtZW50cyB3aGVuIGRvbmUuCklmIFBBR0UgaXMgbmlsLCBjb252 ZXJ0IHRoZSB3aG9sZSBkb2N1bWVudC4iCiAgKGRvYy12aWV3LXN0YXJ0LXByb2Nlc3MKICAgImRq dnUtPnRpZmYiICJkZGp2dSIKICAgYCgiLWZvcm1hdD10aWZmIgogICAgIDs7IGRkanZ1IG9ubHkg YWNjZXB0cyB0aGUgcmFuZ2UgMS05OTkuCiAgICAgLChmb3JtYXQgIi1zY2FsZT0lZCIgKHJvdW5k IGRvYy12aWV3LXJlc29sdXRpb24pKQogICAgIDs7IC1lYWNocGFnZSB3YXMgb25seSBhZGRlZCBh ZnRlciBkanZ1bGlicmUtMy41LjI1LjMhCiAgICAgLEAodW5sZXNzIHBhZ2UgJygiLWVhY2hwYWdl IikpCiAgICAgLEAoaWYgcGFnZSBgKCwoZm9ybWF0ICItcGFnZT0lZCIgcGFnZSkpKQogICAgICxk anZ1CiAgICAgLHRpZmYpCiAgIGNhbGxiYWNrKSkKCihkZWZ1biBkb2Mtdmlldy1wZGZkcmF3LXBy b2dyYW0tc3ViY29tbWFuZCAoKQogICJSZXR1cm4gdGhlIG11dG9vbCBzdWJjb21tYW5kIHJlcGxh Y2luZyBtdWRyYXcuClJlY2VudCBNdVBERiBkaXN0cmlidXRpb25zIHJlcGxhY2VkIGBtdWRyYXcn IHdpdGggYG11dG9vbCBkcmF3Jy4iCiAgKHdoZW4gKHN0cmluZy1tYXRjaCAibXV0b29sW14vXFxd KiQiIGRvYy12aWV3LXBkZmRyYXctcHJvZ3JhbSkKICAgICcoImRyYXciKSkpCgooZGVmdW4gZG9j LXZpZXctcGRmLXBhc3N3b3JkLXByb3RlY3RlZC1wZGZkcmF3LXAgKHBkZikKICAiUmV0dXJuIG5v bi1uaWwgaWYgYSBQREYgZmlsZSBpcyBwYXNzd29yZC1wcm90ZWN0ZWQuClRoZSB0ZXN0IGlzIHBl cmZvcm1lZCB1c2luZyBgZG9jLXZpZXctcGRmZHJhdy1wcm9ncmFtJy4iCiAgKHdpdGgtdGVtcC1i dWZmZXIKICAgIChhcHBseSAjJ2NhbGwtcHJvY2VzcyBkb2Mtdmlldy1wZGZkcmF3LXByb2dyYW0g bmlsIChjdXJyZW50LWJ1ZmZlcikgbmlsCiAgICAgICAgICAgYCgsQChkb2Mtdmlldy1wZGZkcmF3 LXByb2dyYW0tc3ViY29tbWFuZCkKICAgICAgICAgICAgICwoY29uY2F0ICItbyIgbnVsbC1kZXZp Y2UpCiAgICAgICAgICAgICA7OyBJbiBjYXNlIFBERiBpc24ndCBwYXNzd29yZC1wcm90ZWN0ZWQs ICJkcmF3IiBvbmx5IG9uZSBwYWdlLgogICAgICAgICAgICAgLHBkZiAiMSIpKQogICAgKGdvdG8t Y2hhciAocG9pbnQtbWluKSkKICAgIChzZWFyY2gtZm9yd2FyZCAiZXJyb3I6IGNhbm5vdCBhdXRo ZW50aWNhdGUgcGFzc3dvcmQiIG5pbCB0KSkpCgooZGVmdW4gZG9jLXZpZXctcGRmLT5wbmctY29u dmVydGVyLW11cGRmIChwZGYgcG5nIHBhZ2UgY2FsbGJhY2spCiAgKGxldCogKChwZGYtcGFzc3dk IChpZiAoZG9jLXZpZXctcGRmLXBhc3N3b3JkLXByb3RlY3RlZC1wZGZkcmF3LXAgcGRmKQogICAg ICAgICAgICAgICAgICAgICAgICAgKHJlYWQtcGFzc3dkICJFbnRlciBwYXNzd29yZCBmb3IgUERG IGZpbGU6ICIpKSkKICAgICAgICAgKG9wdGlvbnMgYCgsKGNvbmNhdCAiLW8iIHBuZykKICAgICAg ICAgICAgICAgICAgICAsKGZvcm1hdCAiLXIlZCIgKHJvdW5kIGRvYy12aWV3LXJlc29sdXRpb24p KQogICAgICAgICAgICAgICAgICAgICxAKGlmIHBkZi1wYXNzd2QgYCgiLXAiICxwZGYtcGFzc3dk KSkpKSkKICAgICh3aGVuIChlcSBkb2Mtdmlldy1kb2MtdHlwZSAnZXB1YikKICAgICAgKHdoZW4g ZG9jLXZpZXctZXB1Yi1mb250LXNpemUKICAgICAgICAoc2V0cSBvcHRpb25zIChhcHBlbmQgb3B0 aW9ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdCAoZm9ybWF0ICItUyVzIiBk b2Mtdmlldy1lcHViLWZvbnQtc2l6ZSkpKSkpCiAgICAgICh3aGVuIGRvYy12aWV3LW11dG9vbC11 c2VyLXN0eWxlc2hlZXQKICAgICAgICAoc2V0cSBvcHRpb25zCiAgICAgICAgICAgICAgKGFwcGVu ZCBvcHRpb25zCiAgICAgICAgICAgICAgICAgICAgICAobGlzdCAoZm9ybWF0ICItVSVzIgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhwYW5kLWZpbGUtbmFtZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jLXZpZXctbXV0b29sLXVzZXItc3R5bGVz aGVldCkpKSkpKSkKICAgIChkb2Mtdmlldy1zdGFydC1wcm9jZXNzCiAgICAgInBkZi0+cG5nIiBk b2Mtdmlldy1wZGZkcmF3LXByb2dyYW0KICAgICBgKCxAKGRvYy12aWV3LXBkZmRyYXctcHJvZ3Jh bS1zdWJjb21tYW5kKQogICAgICAgLEBvcHRpb25zCiAgICAgICAscGRmCiAgICAgICAsQChpZiBw YWdlIGAoLChmb3JtYXQgIiVkIiBwYWdlKSkpKQogICAgIGNhbGxiYWNrKSkpCgooZGVmdW4gZG9j LXZpZXctb2RmLT5wZGYtY29udmVydGVyLXVub2NvbnYgKG9kZiBjYWxsYmFjaykKICAiQ29udmVy dCBPREYgdG8gUERGIGFzeW5jaHJvbm91c2x5IGFuZCBjYWxsIENBTExCQUNLIHdoZW4gZmluaXNo ZWQuClRoZSBjb252ZXJ0ZWQgUERGIGlzIHB1dCBpbnRvIHRoZSBjdXJyZW50IGNhY2hlIGRpcmVj dG9yeSwgYW5kIGl0CmlzIG5hbWVkIGxpa2UgT0RGIHdpdGggdGhlIGV4dGVuc2lvbiB0dXJuZWQg dG8gcGRmLiIKICAoZG9jLXZpZXctc3RhcnQtcHJvY2VzcyAib2RmLT5wZGYiIGRvYy12aWV3LW9k Zi0+cGRmLWNvbnZlcnRlci1wcm9ncmFtCgkJCSAgKGxpc3QgIi1mIiAicGRmIiAiLW8iIChkb2Mt dmlldy0tY3VycmVudC1jYWNoZS1kaXIpIG9kZikKCQkJICBjYWxsYmFjaykpCgooZGVmdW4gZG9j LXZpZXctb2RmLT5wZGYtY29udmVydGVyLXNvZmZpY2UgKG9kZiBjYWxsYmFjaykKICAiQ29udmVy dCBPREYgdG8gUERGIGFzeW5jaHJvbm91c2x5IGFuZCBjYWxsIENBTExCQUNLIHdoZW4gZmluaXNo ZWQuClRoZSBjb252ZXJ0ZWQgUERGIGlzIHB1dCBpbnRvIHRoZSBjdXJyZW50IGNhY2hlIGRpcmVj dG9yeSwgYW5kIGl0CmlzIG5hbWVkIGxpa2UgT0RGIHdpdGggdGhlIGV4dGVuc2lvbiB0dXJuZWQg dG8gcGRmLiIKICA7OyBGSVhNRTogc29mZmljZSBkb2Vzbid0IHdvcmsgd2hlbiB0aGVyZSdzIGFu b3RoZXIgcnVubmluZwogIDs7IExpYnJlT2ZmaWNlIGluc3RhbmNlLCBpbiB3aGljaCBjYXNlIGl0 IHJldHVybnMgc3VjY2VzcyB3aXRob3V0CiAgOzsgYWN0dWFsbHkgZG9pbmcgYW55dGhpbmcuICBT ZWUgTGlicmVPZmZpY2UgYnVnCiAgOzsgaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93 X2J1Zy5jZ2k/aWQ9Mzc1MzEuICBBIHdvcmthcm91bmQKICA7OyBpcyB0byBzdGFydCBzb2ZmaWNl IHdpdGggYSBzZXBhcmF0ZSBVc2VySW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KICAobGV0ICgodG1w LXVzZXItaW5zdGFsbC1kaXIgKG1ha2UtdGVtcC1maWxlICJsaWJyZW9mZmljZS1kb2N2aWV3IiB0 KSkpCiAgICAoZG9jLXZpZXctc3RhcnQtcHJvY2VzcyAib2RmLT5wZGYiIGRvYy12aWV3LW9kZi0+ cGRmLWNvbnZlcnRlci1wcm9ncmFtCgkJCSAgICAobGlzdAoJCQkgICAgIChjb25jYXQgIi1lbnY6 VXNlckluc3RhbGxhdGlvbj1maWxlOi8vIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOzsgVGhlIFVSTCBtdXN0IGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7OyBmaWxlOi8vL0M6L3RtcC9kaXIgb24gV2luZG93cy4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDs7IGh0dHBzOi8vd2lraS5kb2N1bWVudGZvdW5kYXRpb24ub3Jn L1VzZXJQcm9maWxlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4g KGVxIHN5c3RlbS10eXBlICd3aW5kb3dzLW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiLyIpCgkJCQkgICAgIHRtcC11c2VyLWluc3RhbGwtZGlyKQoJCQkgICAgICIt LWhlYWRsZXNzIiAiLS1jb252ZXJ0LXRvIiAicGRmIgoJCQkgICAgICItLW91dGRpciIgKGRvYy12 aWV3LS1jdXJyZW50LWNhY2hlLWRpcikgb2RmKQoJCQkgICAgKGxhbWJkYSAoKQoJCQkgICAgICAo ZGVsZXRlLWRpcmVjdG9yeSB0bXAtdXNlci1pbnN0YWxsLWRpciB0KQoJCQkgICAgICAoZnVuY2Fs bCBjYWxsYmFjaykpKSkpCgooZGVmdW4gZG9jLXZpZXctcGRmL3BzLT5wbmcgKHBkZi1wcyBwbmcp CiAgOzsgRklYTUU6IEZpeCBuYW1lIGFuZCBkb2NzdHJpbmcgdG8gYWNjb3VudCBmb3IgZGp2dSZ0 aWZmLgogICJDb252ZXJ0IFBERi1QUyB0byBQTkcgYXN5bmNocm9ub3VzbHkuIgogIChmdW5jYWxs CiAgIChwY2FzZSBkb2Mtdmlldy1kb2MtdHlwZQogICAgICgob3IgJ3BkZiAnb2RmICdlcHViICdj YnogJ2ZiMiAneHBzICdveHBzKQogICAgICBkb2Mtdmlldy1wZGYtPnBuZy1jb252ZXJ0ZXItZnVu Y3Rpb24pCiAgICAgKCdkanZ1ICMnZG9jLXZpZXctZGp2dS0+dGlmZi1jb252ZXJ0ZXItZGRqdnUp CiAgICAgKF8gIydkb2Mtdmlldy1wcy0+cG5nLWNvbnZlcnRlci1naG9zdHNjcmlwdCkpCiAgIHBk Zi1wcyBwbmcgbmlsCiAgIChsZXQgKChyZXNvbHV0aW9uIGRvYy12aWV3LXJlc29sdXRpb24pKQog ICAgIChsYW1iZGEgKCkKICAgICAgIDs7IE9ubHkgY3JlYXRlIHRoZSByZXNvbHV0aW9uIGZpbGUg d2hlbiBpdCdzIGFsbCBkb25lLCBzbyBpdCBhbHNvCiAgICAgICA7OyBzZXJ2ZXMgYXMgYSB3aXRu ZXNzIHRoYXQgdGhlIGNvbnZlcnNpb24gaXMgY29tcGxldGUuCiAgICAgICAod3JpdGUtcmVnaW9u IChwcmluMS10by1zdHJpbmcgcmVzb2x1dGlvbikgbmlsCiAgICAgICAgICAgICAgICAgICAgIChl eHBhbmQtZmlsZS1uYW1lICJyZXNvbHV0aW9uLmVsIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyKSkKICAgICAgICAgICAg ICAgICAgICAgbmlsICdzaWxlbnRseSkKICAgICAgICh3aGVuIGRvYy12aWV3LS1jdXJyZW50LXRp bWVyCiAgICAgICAgIChjYW5jZWwtdGltZXIgZG9jLXZpZXctLWN1cnJlbnQtdGltZXIpCiAgICAg ICAgIChzZXRxIGRvYy12aWV3LS1jdXJyZW50LXRpbWVyIG5pbCkpCiAgICAgICAoZG9jLXZpZXct ZGlzcGxheSAoY3VycmVudC1idWZmZXIpICdmb3JjZSkpKSkKCiAgOzsgVXBkYXRlIHRoZSBkaXNw bGF5ZWQgcGFnZXMgYXMgc29vbiBhcyB0aGV5J3JlIGRvbmUgZ2VuZXJhdGluZy4KICAod2hlbiBk b2Mtdmlldy1jb252ZXJzaW9uLXJlZnJlc2gtaW50ZXJ2YWwKICAgIChzZXRxIGRvYy12aWV3LS1j dXJyZW50LXRpbWVyCiAgICAgICAgICAocnVuLWF0LXRpbWUgIjEgc2VjcyIgZG9jLXZpZXctY29u dmVyc2lvbi1yZWZyZXNoLWludGVydmFsCiAgICAgICAgICAgICAgICAgICAgICAgJ2RvYy12aWV3 LWRpc3BsYXkKICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1idWZmZXIpKSkpKQoKKGRl Y2xhcmUtZnVuY3Rpb24gY2xlYXItaW1hZ2UtY2FjaGUgImltYWdlLmMiICgmb3B0aW9uYWwgZmls dGVyKSkKCihkZWZ1biBkb2Mtdmlldy1kb2N1bWVudC0+Yml0bWFwIChwZGYgcG5nIHBhZ2VzKQog ICJDb252ZXJ0IGEgZG9jdW1lbnQgZmlsZSB0byBiaXRtYXAgaW1hZ2VzIGFzeW5jaHJvbm91c2x5 LgpTdGFydCBieSBjb252ZXJ0aW5nIFBBR0VTLCBhbmQgdGhlbiB0aGUgcmVzdC4iCiAgKGlmIChu dWxsIHBhZ2VzKQogICAgICAoZG9jLXZpZXctcGRmL3BzLT5wbmcgcGRmIHBuZykKICAgIDs7IFdl IGNvdWxkIHJlbmRlciBzZXZlcmFsIGBwYWdlcycgd2l0aCBhIHNpbmdsZSBwcm9jZXNzIGlmIHRo ZXkncmUKICAgIDs7IChhbG1vc3QpIGNvbnNlY3V0aXZlLCBidXQgc2luY2UgaW4gOTklIG9mIHRo ZSBjYXNlcywgdGhlcmUnbGwgYmUgb25seQogICAgOzsgYSBzaW5nbGUgcGFnZSBhbnl3YXksIGFu ZCBvZiB0aGUgcmVtYWluaW5nIDElLCBmZXcgY2FzZXMgd2lsbCBoYXZlCiAgICA7OyBjb25zZWN1 dGl2ZSBwYWdlcywgaXQncyBub3Qgd29ydGggdGhlIHRyb3VibGUuCiAgICAobGV0ICgocmVzdCAo Y2RyIHBhZ2VzKSkpCiAgICAgIChmdW5jYWxsIGRvYy12aWV3LXNpbmdsZS1wYWdlLWNvbnZlcnRl ci1mdW5jdGlvbgoJICAgICAgIHBkZiAoZm9ybWF0IHBuZyAoY2FyIHBhZ2VzKSkgKGNhciBwYWdl cykKICAgICAgICAgICAgICAgKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgIChpZiByZXN0CiAg ICAgICAgICAgICAgICAgICAgIChkb2Mtdmlldy1kb2N1bWVudC0+Yml0bWFwIHBkZiBwbmcgcmVz dCkKICAgICAgICAgICAgICAgICAgIDs7IFlpcHBpZSwgdGhlIGltcG9ydGFudCBwYWdlcyBhcmUg ZG9uZSwgdXBkYXRlIHRoZSBkaXNwbGF5LgogICAgICAgICAgICAgICAgICAgKGNsZWFyLWltYWdl LWNhY2hlKQogICAgICAgICAgICAgICAgICAgOzsgRm9yIHRoZSB3aW5kb3dzIHRoYXQgaGF2ZSBh IG1lc3NhZ2UgKGxpa2UgIldlbGNvbWUgdG8KICAgICAgICAgICAgICAgICAgIDs7IERvY1ZpZXci KSBkaXNwbGF5IHByb3BlcnR5LCBjbGVhcmluZyB0aGUgaW1hZ2UgY2FjaGUgaXMKICAgICAgICAg ICAgICAgICAgIDs7IG5vdCBzdWZmaWNpZW50LgogICAgICAgICAgICAgICAgICAgKGRvbGlzdCAo d2luIChnZXQtYnVmZmVyLXdpbmRvdy1saXN0IChjdXJyZW50LWJ1ZmZlcikgbmlsICd2aXNpYmxl KSkKICAgICAgICAgICAgICAgICAgICAgKHdpdGgtc2VsZWN0ZWQtd2luZG93IHdpbgoJICAgICAg ICAgICAgICAgKHdoZW4gKHN0cmluZ3AgKG92ZXJsYXktZ2V0IChkb2Mtdmlldy1jdXJyZW50LW92 ZXJsYXkpICdkaXNwbGF5KSkKCQkgICAgICAgICAoZG9jLXZpZXctZ290by1wYWdlIChkb2Mtdmll dy1jdXJyZW50LXBhZ2UpKSkpKQogICAgICAgICAgICAgICAgICAgOzsgQ29udmVydCB0aGUgcmVz dCBvZiB0aGUgcGFnZXMuCiAgICAgICAgICAgICAgICAgICAoZG9jLXZpZXctcGRmL3BzLT5wbmcg cGRmIHBuZykpKSkpKSkKCihkZWZ1biBkb2Mtdmlldy1wZGYtPnR4dCAocGRmIHR4dCBjYWxsYmFj aykKICAiQ29udmVydCBQREYgdG8gVFhUIGFzeW5jaHJvbm91c2x5IGFuZCBjYWxsIENBTExCQUNL IHdoZW4gZmluaXNoZWQuIgogIChvciAoZXhlY3V0YWJsZS1maW5kIGRvYy12aWV3LXBkZnRvdGV4 dC1wcm9ncmFtKQogICAgICAoZXJyb3IgIllvdSBuZWVkIHRoZSBgcGRmdG90ZXh0JyBwcm9ncmFt IHRvIGNvbnZlcnQgYSBQREYgdG8gdGV4dCIpKQogIChkb2Mtdmlldy1zdGFydC1wcm9jZXNzICJw ZGYtPnR4dCIgZG9jLXZpZXctcGRmdG90ZXh0LXByb2dyYW0KICAgICAgICAgICAgICAgICAgICAg ICAgICAoYXBwZW5kIGRvYy12aWV3LXBkZnRvdGV4dC1wcm9ncmFtLWFyZ3MKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsaXN0IHBkZiB0eHQpKQogICAgICAgICAgICAgICAgICAg ICAgICAgIGNhbGxiYWNrKSkKCihkZWZ1biBkb2Mtdmlldy1jdXJyZW50LWNhY2hlLWRvYy1wZGYg KCkKICAiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBkb2MucGRmIGluIHRoZSBjdXJyZW50IGNhY2hl IGRpci4KVGhpcyBmaWxlIGV4aXN0cyBvbmx5IGlmIHRoZSBjdXJyZW50IGRvY3VtZW50IGlzbid0 IGEgUERGIG9yIFBTIGZpbGUgYWxyZWFkeS4iCiAgKGV4cGFuZC1maWxlLW5hbWUgImRvYy5wZGYi IChkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1kaXIpKSkKCihkZWZ1biBkb2Mtdmlldy1kb2MtPnR4 dCAodHh0IGNhbGxiYWNrKQogICJDb252ZXJ0IHRoZSBjdXJyZW50IGRvY3VtZW50IHRvIHRleHQg YW5kIGNhbGwgQ0FMTEJBQ0sgd2hlbiBkb25lLiIKICAobWFrZS1kaXJlY3RvcnkgKGRvYy12aWV3 LS1jdXJyZW50LWNhY2hlLWRpcikgdCkKICAocGNhc2UgZG9jLXZpZXctZG9jLXR5cGUKICAgICgn cGRmCiAgICAgOzsgRG9jIGlzIGEgUERGLCBzbyBjb252ZXJ0IGl0IHRvIFRYVAogICAgIChkb2Mt dmlldy1wZGYtPnR4dCBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZSB0eHQgY2FsbGJhY2spKQog ICAgKCdwcwogICAgIDs7IERvYyBpcyBhIFBTLCBzbyBjb252ZXJ0IGl0IHRvIFBERiAod2hpY2gg d2lsbCBiZSBjb252ZXJ0ZWQgdG8KICAgICA7OyBUWFQgdGhlcmVhZnRlcikuCiAgICAgKGxldCAo KHBkZiAoZG9jLXZpZXctY3VycmVudC1jYWNoZS1kb2MtcGRmKSkpCiAgICAgICAoZG9jLXZpZXct cHMtPnBkZiBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZSBwZGYKICAgICAgICAgICAgICAgICAg ICAgICAgIChsYW1iZGEgKCkgKGRvYy12aWV3LXBkZi0+dHh0IHBkZiB0eHQgY2FsbGJhY2spKSkp KQogICAgKCdkdmkKICAgICA7OyBEb2MgaXMgYSBEVkkuICBUaGlzIG1lYW5zIHRoYXQgYSBkb2Mu cGRmIGFscmVhZHkgZXhpc3RzIGluIGl0cwogICAgIDs7IGNhY2hlIHN1YmRpcmVjdG9yeS4KICAg ICAoZG9jLXZpZXctcGRmLT50eHQgKGRvYy12aWV3LWN1cnJlbnQtY2FjaGUtZG9jLXBkZikgdHh0 IGNhbGxiYWNrKSkKICAgICgnb2RmCiAgICAgOzsgRG9jIGlzIHNvbWUgT0RGIChvciBNUyBPZmZp Y2UpIGRvYy4gIFRoaXMgbWVhbnMgdGhhdCBhIGRvYy5wZGYKICAgICA7OyBhbHJlYWR5IGV4aXN0 cyBpbiBpdHMgY2FjaGUgc3ViZGlyZWN0b3J5LgogICAgIChkb2Mtdmlldy1wZGYtPnR4dCAoZG9j LXZpZXctY3VycmVudC1jYWNoZS1kb2MtcGRmKSB0eHQgY2FsbGJhY2spKQogICAgKF8gKGVycm9y ICJEb2NWaWV3IGRvZXNuJ3Qga25vdyB3aGF0IHRvIGRvIikpKSkKCihkZWZ1biBkb2Mtdmlldy1w cy0+cGRmIChwcyBwZGYgY2FsbGJhY2spCiAgIkNvbnZlcnQgUFMgdG8gUERGIGFzeW5jaHJvbm91 c2x5IGFuZCBjYWxsIENBTExCQUNLIHdoZW4gZmluaXNoZWQuIgogIChvciAoZXhlY3V0YWJsZS1m aW5kIGRvYy12aWV3LXBzMnBkZi1wcm9ncmFtKQogICAgICAoZXJyb3IgIllvdSBuZWVkIHRoZSBg cHMycGRmJyBwcm9ncmFtIHRvIGNvbnZlcnQgUFMgdG8gUERGIikpCiAgKGRvYy12aWV3LXN0YXJ0 LXByb2Nlc3MgInBzLT5wZGYiIGRvYy12aWV3LXBzMnBkZi1wcm9ncmFtCiAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxpc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgQXZvaWQgc2Vj dXJpdHkgcHJvYmxlbXMgd2hlbiByZW5kZXJpbmcgZmlsZXMgZnJvbQogICAgICAgICAgICAgICAg ICAgICAgICAgICA7OyB1bnRydXN0ZWQgc291cmNlcy4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgIi1kU0FGRVIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGluLWZpbGUgYW5kIG91 dC1maWxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzIHBkZikKICAgICAgICAgICAgICAg ICAgICAgICAgICBjYWxsYmFjaykpCgooZGVmdW4gZG9jLXZpZXctYWN0aXZlLXBhZ2VzICgpCiAg KGxldCAoKHBhZ2VzICgpKSkKICAgIChkb2xpc3QgKHdpbiAoZ2V0LWJ1ZmZlci13aW5kb3ctbGlz dCAoY3VycmVudC1idWZmZXIpIG5pbCAndmlzaWJsZSkpCiAgICAgIChsZXQgKChwYWdlIChpbWFn ZS1tb2RlLXdpbmRvdy1nZXQgJ3BhZ2Ugd2luKSkpCiAgICAgICAgKHVubGVzcyAobWVtcSBwYWdl IHBhZ2VzKSAocHVzaCBwYWdlIHBhZ2VzKSkpKQogICAgcGFnZXMpKQoKKGRlZnVuIGRvYy12aWV3 LWNvbnZlcnQtY3VycmVudC1kb2MgKCkKICAiQ29udmVydCBgZG9jLXZpZXctLWJ1ZmZlci1maWxl LW5hbWUnIHRvIGEgc2V0IG9mIHBuZyBmaWxlcywgb25lIGZpbGUgcGVyIHBhZ2UuClRob3NlIGZp bGVzIGFyZSBzYXZlZCBpbiB0aGUgZGlyZWN0b3J5IGdpdmVuIGJ5IHRoZSBmdW5jdGlvbgpgZG9j LXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyJy4iCiAgOzsgTGV0IHN0YWxlIGZpbGVzIHN0aWxsIGRp c3BsYXkgd2hpbGUgd2UgcmVjb21wdXRlIHRoZSBuZXcgb25lcywgc28gb25seQogIDs7IGZsdXNo IHRoZSBjYWNoZSB3aGVuIHRoZSBjb252ZXJzaW9uIGlzIG92ZXIuICBPbmUgb2YgdGhlIHJlYXNv bnMgd2h5IGl0CiAgOzsgaXMgaW1wb3J0YW50IHRvIGtlZXAgZGlzcGxheWluZyB0aGUgc3RhbGUg cGFnZSBpcyBzbyB0aGF0IHJldmVydC1idWZmZXIKICA7OyBwcmVzZXJ2ZXMgdGhlIGhvcml6b250 YWwvdmVydGljYWwgc2Nyb2xsIHNldHRpbmdzICh3aGljaCBhcmUgb3RoZXJ3aXNlCiAgOzsgcmVz ZXQgZHVyaW5nIHRoZSByZWRpc3BsYXkpLgogIChzZXRxIGRvYy12aWV3LS1wZW5kaW5nLWNhY2hl LWZsdXNoIHQpCiAgKGxldCAoKHBuZy1maWxlIChleHBhbmQtZmlsZS1uYW1lCiAgICAgICAgICAg ICAgICAgICAoZm9ybWF0IGRvYy12aWV3LS1pbWFnZS1maWxlLXBhdHRlcm4gIiVkIikKICAgICAg ICAgICAgICAgICAgIChkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1kaXIpKSkpCiAgICAobWFrZS1k aXJlY3RvcnkgKGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRpcikgdCkKICAgIChwY2FzZSBkb2Mt dmlldy1kb2MtdHlwZQogICAgICAoJ2R2aQogICAgICAgOzsgRFZJIGZpbGVzIGhhdmUgdG8gYmUg Y29udmVydGVkIHRvIFBERiBiZWZvcmUgR2hvc3RzY3JpcHQgY2FuIHByb2Nlc3MKICAgICAgIDs7 IGl0LgogICAgICAgKGxldCAoKHBkZiAoZG9jLXZpZXctY3VycmVudC1jYWNoZS1kb2MtcGRmKSkp CiAgICAgICAgIChkb2Mtdmlldy1kdmktPnBkZiBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZSBw ZGYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKGRvYy12aWV3LXBkZi9w cy0+cG5nIHBkZiBwbmctZmlsZSkpKSkpCiAgICAgICgnb2RmCiAgICAgICA7OyBPREYgZmlsZXMg aGF2ZSB0byBiZSBjb252ZXJ0ZWQgdG8gUERGIGJlZm9yZSBHaG9zdHNjcmlwdCBjYW4KICAgICAg IDs7IHByb2Nlc3MgaXQuCiAgICAgICAobGV0ICgocGRmIChkb2Mtdmlldy1jdXJyZW50LWNhY2hl LWRvYy1wZGYpKQogICAgICAgICAgICAgKG9wZGYgKGV4cGFuZC1maWxlLW5hbWUKICAgICAgICAg ICAgICAgICAgICAoY29uY2F0IChmaWxlLW5hbWUtYmFzZSBkb2Mtdmlldy0tYnVmZmVyLWZpbGUt bmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICIucGRmIikKICAgICAgICAgICAgICAg ICAgICBkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1kaXIpKQogICAgICAgICAgICAgKHBuZy1maWxl IHBuZy1maWxlKSkKCSA7OyBUaGUgdW5vY29udiB0b29sIG9ubHkgc3VwcG9ydHMgYW4gb3V0cHV0 IGRpcmVjdG9yeSwgYnV0IG5vCgkgOzsgZmlsZSBuYW1lLiAgSXQncyBuYW1lZCBsaWtlIHRoZSBp bnB1dCBmaWxlIHdpdGggdGhlCgkgOzsgZXh0ZW5zaW9uIHJlcGxhY2VkIGJ5IHBkZi4KICAgICAg ICAgKGZ1bmNhbGwgZG9jLXZpZXctb2RmLT5wZGYtY29udmVydGVyLWZ1bmN0aW9uIGRvYy12aWV3 LS1idWZmZXItZmlsZS1uYW1lCiAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkKCQkgICAgOzsg UmVuYW1lIHRvIGRvYy5wZGYKCQkgICAgKHJlbmFtZS1maWxlIG9wZGYgcGRmKQoJCSAgICAoZG9j LXZpZXctcGRmL3BzLT5wbmcgcGRmIHBuZy1maWxlKSkpKSkKICAgICAgOzsgVGhlIGRvYy12aWV3 LW1vZGUtcCBjaGVjayBlbnN1cmVzIHRoYXQgZXB1YiwgY2J6LCBmYjIgYW5kCiAgICAgIDs7IChv KXhwcyBhcmUgaGFuZGxlZCB3aXRoIG11dG9vbAogICAgICAoKG9yICdwZGYgJ2RqdnUgJ2VwdWIg J2NieiAnZmIyICd4cHMgJ294cHMpCiAgICAgICAobGV0ICgocGFnZXMgKGRvYy12aWV3LWFjdGl2 ZS1wYWdlcykpKQogICAgICAgICA7OyBDb252ZXJ0IGRvYyB0byBiaXRtYXAgaW1hZ2VzIHN0YXJ0 aW5nIHdpdGggdGhlIGFjdGl2ZSBwYWdlcy4KICAgICAgICAgKGRvYy12aWV3LWRvY3VtZW50LT5i aXRtYXAgZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUgcG5nLWZpbGUgcGFnZXMpKSkKICAgICAg KF8KICAgICAgIDs7IENvbnZlcnQgdG8gUE5HIGltYWdlcy4KICAgICAgIChkb2Mtdmlldy1wZGYv cHMtPnBuZyBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZSBwbmctZmlsZSkpKSkpCgo7Ozs7IFNs aWNpbmcKCihkZWNsYXJlLWZ1bmN0aW9uIGltYWdlLXNpemUgImltYWdlLmMiIChzcGVjICZvcHRp b25hbCBwaXhlbHMgZnJhbWUpKQoKKGRlZnVuIGRvYy12aWV3LXNldC1zbGljZSAoeCB5IHdpZHRo IGhlaWdodCkKICAiU2V0IHRoZSBzbGljZSBvZiB0aGUgaW1hZ2VzIHRoYXQgc2hvdWxkIGJlIGRp c3BsYXllZC4KWW91IGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byB0ZWxsIGRvYy12aWV3IG5vdCB0 byBkaXNwbGF5IHRoZQptYXJnaW5zIG9mIHRoZSBkb2N1bWVudC4gIEl0IHByb21wdHMgZm9yIHRo ZSB0b3AtbGVmdCBjb3JuZXIgKFgKYW5kIFkpIG9mIHRoZSBzbGljZSB0byBkaXNwbGF5IGFuZCBp dHMgV0lEVEggYW5kIEhFSUdIVC4KClNlZSBgZG9jLXZpZXctc2V0LXNsaWNlLXVzaW5nLW1vdXNl JyBhbmQKYGRvYy12aWV3LXNldC1zbGljZS1mcm9tLWJvdW5kaW5nLWJveCcgZm9yIG1vcmUgY29u dmVuaWVudCB3YXlzCnRvIGRvIHRoYXQuICBUbyByZXNldCB0aGUgc2xpY2UgdXNlIGBkb2Mtdmll dy1yZXNldC1zbGljZScuIgogIChpbnRlcmFjdGl2ZQogICAobGV0KiAoKHNpemUgKGltYWdlLXNp emUgKGRvYy12aWV3LWN1cnJlbnQtaW1hZ2UpIHQpKQoJICAoYSAocmVhZC1udW1iZXIgKGZvcm1h dCAiVG9wLWxlZnQgWCAoMC4uJWQpOiAiIChjYXIgc2l6ZSkpKSkKCSAgKGIgKHJlYWQtbnVtYmVy IChmb3JtYXQgIlRvcC1sZWZ0IFkgKDAuLiVkKTogIiAoY2RyIHNpemUpKSkpCgkgIChjIChyZWFk LW51bWJlciAoZm9ybWF0ICJXaWR0aCAoMC4uJWQpOiAiICgtIChjYXIgc2l6ZSkgYSkpKSkKCSAg KGQgKHJlYWQtbnVtYmVyIChmb3JtYXQgIkhlaWdodCAoMC4uJWQpOiAiICgtIChjZHIgc2l6ZSkg YikpKSkpCiAgICAgKGxpc3QgYSBiIGMgZCkpKQogIChzZXRmIChkb2Mtdmlldy1jdXJyZW50LXNs aWNlKSAobGlzdCB4IHkgd2lkdGggaGVpZ2h0KSkKICA7OyBSZWRpc3BsYXkKICAoZG9jLXZpZXct Z290by1wYWdlIChkb2Mtdmlldy1jdXJyZW50LXBhZ2UpKSkKCihkZWZ1biBkb2Mtdmlldy1zZXQt c2xpY2UtdXNpbmctbW91c2UgKCkKICAiU2V0IHRoZSBzbGljZSBvZiB0aGUgaW1hZ2VzIHRoYXQg c2hvdWxkIGJlIGRpc3BsYXllZC4KWW91IHNldCB0aGUgc2xpY2UgYnkgcHJlc3NpbmcgbW91c2Ut MSBhdCBpdHMgdG9wLWxlZnQgY29ybmVyIGFuZApkcmFnZ2luZyBpdCB0byBpdHMgYm90dG9tLXJp Z2h0IGNvcm5lci4gIFNlZSBhbHNvCmBkb2Mtdmlldy1zZXQtc2xpY2UnIGFuZCBgZG9jLXZpZXct cmVzZXQtc2xpY2UnLiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoeCB5IHcgaCBkb25lKQogICAg KHdoaWxlIChub3QgZG9uZSkKICAgICAgKGxldCAoKGUgKHJlYWQtZXZlbnQKCQkoY29uY2F0ICJQ cmVzcyBtb3VzZS0xIGF0IHRoZSB0b3AtbGVmdCBjb3JuZXIgYW5kICIKCQkJImRyYWcgaXQgdG8g dGhlIGJvdHRvbS1yaWdodCBjb3JuZXIhIikpKSkKCSh3aGVuIChlcSAoY2FyIGUpICdkcmFnLW1v dXNlLTEpCgkgIChzZXRxIHggKGNhciAocG9zbi1vYmplY3QteC15IChldmVudC1zdGFydCBlKSkp KQoJICAoc2V0cSB5IChjZHIgKHBvc24tb2JqZWN0LXgteSAoZXZlbnQtc3RhcnQgZSkpKSkKCSAg KHNldHEgdyAoLSAoY2FyIChwb3NuLW9iamVjdC14LXkgKGV2ZW50LWVuZCBlKSkpIHgpKQoJICAo c2V0cSBoICgtIChjZHIgKHBvc24tb2JqZWN0LXgteSAoZXZlbnQtZW5kIGUpKSkgeSkpCgkgIChz ZXRxIGRvbmUgdCkpKSkKICAgIChkb2Mtdmlldy1zZXQtc2xpY2UgeCB5IHcgaCkpKQoKKGRlZnVu IGRvYy12aWV3LWdldC1ib3VuZGluZy1ib3ggKCkKICAiR2V0IHRoZSBCb3VuZGluZ0JveCBpbmZv cm1hdGlvbiBvZiB0aGUgY3VycmVudCBwYWdlLiIKICAobGV0ICgocGFnZSAoZG9jLXZpZXctY3Vy cmVudC1wYWdlKSkKCShkb2MgKGxldCAoKGNhY2hlLWRvYyAoZG9jLXZpZXctY3VycmVudC1jYWNo ZS1kb2MtcGRmKSkpCgkgICAgICAgKGlmIChmaWxlLWV4aXN0cy1wIGNhY2hlLWRvYykKCQkgICBj YWNoZS1kb2MKCQkgZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUpKSkpCiAgICAod2l0aC10ZW1w LWJ1ZmZlcgogICAgICAod2hlbiAoZXEgMCAoaWdub3JlLWVycm9ycwoJCSAgICAocHJvY2Vzcy1m aWxlIGRvYy12aWV3LWdob3N0c2NyaXB0LXByb2dyYW0gbmlsIHQKCQkJCSAgbmlsICItZFNBRkVS IiAiLWRCQVRDSCIgIi1kTk9QQVVTRSIgIi1xIgoJCQkJICAiLXNERVZJQ0U9YmJveCIKCQkJCSAg KGZvcm1hdCAiLWRGaXJzdFBhZ2U9JXMiIHBhZ2UpCgkJCQkgIChmb3JtYXQgIi1kTGFzdFBhZ2U9 JXMiIHBhZ2UpCgkJCQkgIGRvYykpKQoJKGdvdG8tY2hhciAocG9pbnQtbWluKSkKCShzYXZlLW1h dGNoLWRhdGEKCSAgKHdoZW4gKHJlLXNlYXJjaC1mb3J3YXJkCgkJIChjb25jYXQgIiUlQm91bmRp bmdCb3g6ICIKCQkJICJcXChbWzpkaWdpdDpdXStcXCkgXFwoW1s6ZGlnaXQ6XV0rXFwpICIKCQkJ ICJcXChbWzpkaWdpdDpdXStcXCkgXFwoW1s6ZGlnaXQ6XV0rXFwpIikKICAgICAgICAgICAgICAg ICBuaWwgdCkKCSAgICAobWFwY2FyICMnc3RyaW5nLXRvLW51bWJlcgoJCSAgICAobGlzdCAobWF0 Y2gtc3RyaW5nIDEpCgkJCSAgKG1hdGNoLXN0cmluZyAyKQoJCQkgIChtYXRjaC1zdHJpbmcgMykK CQkJICAobWF0Y2gtc3RyaW5nIDQpKSkpKSkpKSkKCihkZWZ2YXIgZG9jLXZpZXctcGFwZXItc2l6 ZXMKICAnKChhNCA1OTUgODQyKQogICAgKGE0LWxhbmRzY2FwZSA4NDIgNTk1KQogICAgKGxldHRl ciA2MTIgNzkyKQogICAgKGxldHRlci1sYW5kc2NhcGUgNzkyIDYxMikKICAgIChsZWdhbCA2MTIg MTAwOCkKICAgIChsZWdhbC1sYW5kc2NhcGUgMTAwOCA2MTIpCiAgICAoYTMgODQyIDExOTEpCiAg ICAoYTMtbGFuZHNjYXBlIDExOTEgODQyKQogICAgKHRhYmxvaWQgNzkyIDEyMjQpCiAgICAobGVk Z2VyIDEyMjQgNzkyKSkKICAiQW4gYWxpc3QgZnJvbSBwYXBlciBzaXplIG5hbWVzIHRvIGRpbWVu c2lvbnMuIikKCihkZWZ1biBkb2Mtdmlldy1ndWVzcy1wYXBlci1zaXplIChpdyBpaCkKICAiR3Vl c3MgdGhlIHBhcGVyIHNpemUgYWNjb3JkaW5nIHRvIHRoZSBhc3BlY3QgcmF0aW8uIgogIChjbC1s YWJlbHMgKChkaXYgKHggeSkKCQkocm91bmQgKC8gKCogMTAwLjAgeCkgeSkpKSkKICAgIChsZXQg KChhciAoZGl2IGl3IGloKSkKCSAgKGFsIChtYXBjYXIgKGxhbWJkYSAobCkKCQkJKGxpc3QgKGRp diAobnRoIDEgbCkgKG50aCAyIGwpKSAoY2FyIGwpKSkKCQkgICAgICBkb2Mtdmlldy1wYXBlci1z aXplcykpKQogICAgICAoY2FkciAoYXNzb2MgYXIgYWwpKSkpKQoKKGRlZnVuIGRvYy12aWV3LXNj YWxlLWJvdW5kaW5nLWJveCAocHMgaXcgaWggYmIpCiAgKGxpc3QgKC8gKCogKG50aCAwIGJiKSBp dykgKG50aCAxIChhc3NvYyBwcyBkb2Mtdmlldy1wYXBlci1zaXplcykpKQoJKC8gKCogKG50aCAx IGJiKSBpaCkgKG50aCAyIChhc3NvYyBwcyBkb2Mtdmlldy1wYXBlci1zaXplcykpKQoJKC8gKCog KG50aCAyIGJiKSBpdykgKG50aCAxIChhc3NvYyBwcyBkb2Mtdmlldy1wYXBlci1zaXplcykpKQoJ KC8gKCogKG50aCAzIGJiKSBpaCkgKG50aCAyIChhc3NvYyBwcyBkb2Mtdmlldy1wYXBlci1zaXpl cykpKSkpCgooZGVmdW4gZG9jLXZpZXctc2V0LXNsaWNlLWZyb20tYm91bmRpbmctYm94ICgmb3B0 aW9uYWwgZm9yY2UtcGFwZXItc2l6ZSkKICAiU2V0IHRoZSBzbGljZSBmcm9tIHRoZSBkb2N1bWVu dCdzIEJvdW5kaW5nQm94IGluZm9ybWF0aW9uLgpUaGUgcmVzdWx0IGlzIHRoYXQgdGhlIG1hcmdp bnMgYXJlIGFsbW9zdCBjb21wbGV0ZWx5IGNyb3BwZWQsCm11Y2ggbW9yZSBhY2N1cmF0ZSB0aGFu IGNvdWxkIGJlIGRvbmUgbWFudWFsbHkgdXNpbmcKYGRvYy12aWV3LXNldC1zbGljZS11c2luZy1t b3VzZScuIgogIChpbnRlcmFjdGl2ZSAiUCIpCiAgKGxldCAoKGJiIChkb2Mtdmlldy1nZXQtYm91 bmRpbmctYm94KSkpCiAgICAoaWYgKG5vdCBiYikKCShtZXNzYWdlICJCb3VuZGluZ0JveCBjb3Vs ZG4ndCBiZSBkZXRlcm1pbmVkIikKICAgICAgKGxldCogKChpcyAoaW1hZ2Utc2l6ZSAoZG9jLXZp ZXctY3VycmVudC1pbWFnZSkgdCkpCgkgICAgIChpdyAoY2FyIGlzKSkKCSAgICAgKGloIChjZHIg aXMpKQoJICAgICAocHMgKG9yIChhbmQgKG51bGwgZm9yY2UtcGFwZXItc2l6ZSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAoZG9jLXZpZXctZ3Vlc3MtcGFwZXItc2l6ZSBpdyBpaCkpCgkJICAg ICAoaW50ZXJuIChjb21wbGV0aW5nLXJlYWQgIlBhcGVyIHNpemU6ICIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvYy12aWV3LXBhcGVyLXNpemVzCgkJCQkJ ICAgICAgbmlsIHQpKSkpCgkgICAgIChiYiAoZG9jLXZpZXctc2NhbGUtYm91bmRpbmctYm94IHBz IGl3IGloIGJiKSkKCSAgICAgKHgxIChudGggMCBiYikpCgkgICAgICh5MSAobnRoIDEgYmIpKQoJ ICAgICAoeDIgKG50aCAyIGJiKSkKCSAgICAgKHkyIChudGggMyBiYikpKQoJOzsgV2Uga2VlcCBh IDIgcGl4ZWwgbWFyZ2luLgoJKGRvYy12aWV3LXNldC1zbGljZSAoLSB4MSAyKSAoLSBpaCB5MiAy KQoJCQkgICAgKCsgKC0geDIgeDEpIDQpICgrICgtIHkyIHkxKSA0KSkpKSkpCgooZGVmdW4gZG9j LXZpZXctcmVzZXQtc2xpY2UgKCkKICAiUmVzZXQgdGhlIGN1cnJlbnQgc2xpY2UuCkFmdGVyIGNh bGxpbmcgdGhpcyBmdW5jdGlvbiB3aG9sZSBwYWdlcyB3aWxsIGJlIHZpc2libGUgYWdhaW4uIgog IChpbnRlcmFjdGl2ZSkKICAoc2V0ZiAoZG9jLXZpZXctY3VycmVudC1zbGljZSkgbmlsKQogIDs7 IFJlZGlzcGxheQogIChkb2Mtdmlldy1nb3RvLXBhZ2UgKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkp KQoKOzs7OyBDb250aW51b3VzIHNjcm9sbCBtaW5vciBtb2RlICh1c2luZyBpbWFnZS1yb2xsLmVs KQoKKGRlZmluZS1taW5vci1tb2RlIGRvYy12aWV3LWNvbnRpbnVvdXMtc2Nyb2xsLW1pbm9yLW1v ZGUKICAiSWYgZW5hYmxlZCBkaXNwbGF5IGRvY3VtZW50IG9uIGEgdmlydHVhbCBzY3JvbGwgcHJv dmlkaW5nCmNvbnRpbnVvdXMgc2Nyb2xsaW5nLiIKICA6bGlnaHRlciAiIENvbnRpbnVvdXMiCiAg OmtleW1hcCBgKCgsKGtiZCAiPGRvd24+IikgLiBpbWFnZS1yb2xsLXNjcm9sbC1mb3J3YXJkKQog ICAgICAgICAgICAoLChrYmQgIjx1cD4iKSAuIGltYWdlLXJvbGwtc2Nyb2xsLWJhY2t3YXJkKQog ICAgICAgICAgICAoLChrYmQgIjxuZXh0PiIpIC4gaW1hZ2Utcm9sbC1uZXh0LXBhZ2UpCiAgICAg ICAgICAgICgsKGtiZCAiPHByaW9yPiIpIC4gaW1hZ2Utcm9sbC1wcmV2aW91cy1wYWdlKQogICAg ICAgICAgICAoLChrYmQgIlMtPG5leHQ+IikgLiBpbWFnZS1yb2xsLXNjcm9sbC1zY3JlZW4tZm9y d2FyZCkKICAgICAgICAgICAgKCwoa2JkICJTLTxwcmlvcj4iKSAuIGltYWdlLXJvbGwtc2Nyb2xs LXNjcmVlbi1iYWNrd2FyZCkpCiAgOnZlcnNpb24gMjkuMAoKICAoc2V0cS1sb2NhbCBkb2Mtdmll dy1zY2FsZS1pbnRlcm5hbGx5IG5pbAogICAgICAgICAgICAgIGltYWdlLXJvbGwtY2VudGVyIHQp CgogIChzZXRxLWxvY2FsIGltYWdlLXJvbGwtbGFzdC1wYWdlIChkb2Mtdmlldy1sYXN0LXBhZ2Ut bnVtYmVyKQogICAgICAgICAgICAgIGltYWdlLXJvbGwtZGlzcGxheS1wYWdlLWZ1bmN0aW9uICdk b2Mtdmlldy1pbnNlcnQtaW1hZ2UKICAgICAgICAgICAgICBpbWFnZS1yb2xsLXBhZ2Utc2l6ZXMt ZnVuY3Rpb24gJ2RvYy12aWV3LWRlc2lyZWQtcGFnZS1zaXplcwogICAgICAgICAgICAgIGltYWdl LXJvbGwtY2VudGVyIHQpCgogIDs7ICh1bmxlc3MgKGRvYy12aWV3LWFscmVhZHktY29udmVydGVk LXApCiAgOzsgICAodXNlci1lcnJvciAiRG9jdW1lbnQgY29udmVyc2lvbiBub3QgZmluaXNoZWQg eWV0IikpCgogIChhZGQtaG9vayAnd2luZG93LWNvbmZpZ3VyYXRpb24tY2hhbmdlLWhvb2sgJ2lt YWdlLXJvbGwtLXJlZGlzcGxheSBuaWwgdCkKICAoYWRkLWhvb2sgJ2ltYWdlLW1vZGUtbmV3LXdp bmRvdy1mdW5jdGlvbnMgJ2ltYWdlLXJvbGwtLW5ldy13aW5kb3ctZnVuY3Rpb24gbmlsIHQpCiAg KHVubGVzcyAobGlzdHAgaW1hZ2UtbW9kZS13aW5wcm9wcy1hbGlzdCkKICAgIChzZXRxIGltYWdl LW1vZGUtd2lucHJvcHMtYWxpc3QgbmlsKSkKCiAgKGxldCAoKGluaGliaXQtcmVhZC1vbmx5IHQp KQogICAgKGVyYXNlLWJ1ZmZlcikKICAgIChpbWFnZS1yb2xsLS1uZXctd2luZG93LWZ1bmN0aW9u IChsaXN0IChzZWxlY3RlZC13aW5kb3cpKSkpCiAgKGltYWdlLXJvbGwtLXJlZGlzcGxheSkpCgo7 Ozs7IERpc3BsYXkKCihkZWZ1biBkb2Mtdmlldy1kZXNpcmVkLXBhZ2Utc2l6ZSAocGFnZSAmb3B0 aW9uYWwgYXJncykKICA7OyBGdW5jdGlvbiBvbmx5IHVzZXMgZm9yIGltYWdlLXJvbGwgbWlub3Ig bW9kZS4gVGFrZW4gZnJvbQogIDs7IGRvYy12aWV3LWdvdG8tcGFnZSBhbmQgZG9jLXZpZXctaW5z ZXJ0LWltYWdlLgogIChsZXQqICgoZmlsZSAoZXhwYW5kLWZpbGUtbmFtZQogICAgICAgICAgICAg ICAgKGZvcm1hdCBkb2Mtdmlldy0taW1hZ2UtZmlsZS1wYXR0ZXJuIHBhZ2UpCiAgICAgICAgICAg ICAgICAoZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyKSkpCiAgICAgICAgIChpbWFnZSAoaWYg KGFuZCBmaWxlIChmaWxlLXJlYWRhYmxlLXAgZmlsZSkpCgkJCSAgICAgICAgICAgICAgKGlmIChu b3QgZG9jLXZpZXctc2NhbGUtaW50ZXJuYWxseSkKCQkJICAgICAgICAgICAgICAgICAgKGFwcGx5 ICMnY3JlYXRlLWltYWdlIGZpbGUgZG9jLXZpZXctLWltYWdlLXR5cGUgbmlsIGFyZ3MpCgkJCSAg ICAgICAgICAgICAgICAodW5sZXNzIChtZW1iZXIgOndpZHRoIGFyZ3MpCgkJCSAgICAgICAgICAg ICAgICAgIChzZXRxIGFyZ3MgYCgsQGFyZ3MgOndpZHRoICxkb2Mtdmlldy1pbWFnZS13aWR0aCkp KQogICAgICAgICAgICAgICAgICAgICAgKHVubGVzcyAobWVtYmVyIDp0cmFuc2Zvcm0tc21vb3Ro aW5nIGFyZ3MpCiAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGFyZ3MgYCgsQGFyZ3MgOnRy YW5zZm9ybS1zbW9vdGhpbmcgdCkpKQoJCQkgICAgICAgICAgICAgICAgKGFwcGx5ICMnY3JlYXRl LWltYWdlIGZpbGUgZG9jLXZpZXctLWltYWdlLXR5cGUgbmlsIGFyZ3MpKSkpCgkgICAgICAgKHNs aWNlIChkb2Mtdmlldy1jdXJyZW50LXNsaWNlKSkKICAgICAgICAgICAgICAgKHNpemUgKGltYWdl LXNpemUgaW1hZ2UgdCkpCiAgICAgICAgICAgICAgIChhc3BlY3QtcmF0aW8gKC8gKGZsb2F0IChj ZHIgc2l6ZSkpIChjYXIgc2l6ZSkpKQoJICAgICAgIChpbWctd2lkdGggKGFuZCBpbWFnZSAoY2Fy IHNpemUpKSkKCSAgICAgICAoZGlzcGxheWVkLWltZy13aWR0aCAoaWYgKGFuZCBpbWFnZSBzbGlj ZSkKCQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgKCogKC8gKGZsb2F0IChudGggMiBzbGlj ZSkpCgkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhciAoaW1hZ2Utc2l6ZSBp bWFnZSAncGl4ZWxzKSkpCgkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLXdpZHRo KQoJCQkJICAgICAgICAgICAgICAgICAgICAgICAgaW1nLXdpZHRoKSkKICAgICAgICAgICAgICAg KHNjYWxpbmctZmFjdG9yICgvIChmbG9hdCBkb2Mtdmlldy1pbWFnZS13aWR0aCkgZGlzcGxheWVk LWltZy13aWR0aCkpCiAgICAgICAgICAgICAgICh3aWR0aCAoKiBzY2FsaW5nLWZhY3RvciBkaXNw bGF5ZWQtaW1nLXdpZHRoKSkpCiAgICAoY29ucyB3aWR0aAogICAgICAgICAgKCogYXNwZWN0LXJh dGlvIHdpZHRoKSkpKQoKKGRlZnVuIGRvYy12aWV3LWRlc2lyZWQtcGFnZS1zaXplcyAoKQogIDs7 IEZ1bmN0aW9uIG9ubHkgdXNlcyBmb3IgaW1hZ2Utcm9sbCBtaW5vciBtb2RlCiAgKGxldCAocGFn ZS1zaXplcykKICAgIChkb3RpbWVzIChpIChkb2Mtdmlldy1sYXN0LXBhZ2UtbnVtYmVyKSkKICAg ICAgKHB1c2ggKGRvYy12aWV3LWRlc2lyZWQtcGFnZS1zaXplICgxKyBpKSkKICAgICAgICAgICAg cGFnZS1zaXplcykpCiAgICAobnJldmVyc2UgcGFnZS1zaXplcykpKQoKKGRlZnVuIGRvYy12aWV3 LWluc2VydC1pbWFnZSAoZmlsZSAmcmVzdCBhcmdzKQogICJJbnNlcnQgdGhlIGdpdmVuIHBuZyBG SUxFLgpXaGVuIGBkb2Mtdmlldy1jb250aW51b3VzLXNjcm9sbC1taW5vci1tb2RlJyBpcyBub24t bmlsLCBGSUxFCnNob3VsZCBiZSBhIHBhZ2UgbnVtYmVyLiBBUkdTIGlzIGEgbGlzdCBvZiBpbWFn ZSBkZXNjcmlwdG9ycy4iCiAgKHdoZW4gZG9jLXZpZXctLXBlbmRpbmctY2FjaGUtZmx1c2gKICAg IChjbGVhci1pbWFnZS1jYWNoZSkKICAgIChzZXRxIGRvYy12aWV3LS1wZW5kaW5nLWNhY2hlLWZs dXNoIG5pbCkpCiAgKGxldCogKChvbCAoaWYgZG9jLXZpZXctY29udGludW91cy1zY3JvbGwtbWlu b3ItbW9kZQogICAgICAgICAgICAgICAgIChpbWFnZS1yb2xsLXBhZ2Utb3ZlcmxheSBmaWxlKQog ICAgICAgICAgICAgICAoZG9jLXZpZXctY3VycmVudC1vdmVybGF5KSkpKQogICAgKHdoZW4gZG9j LXZpZXctY29udGludW91cy1zY3JvbGwtbWlub3ItbW9kZQogICAgICAoc2V0cSBmaWxlIChleHBh bmQtZmlsZS1uYW1lCiAgICAgICAgICAgICAgICAgIChmb3JtYXQgZG9jLXZpZXctLWltYWdlLWZp bGUtcGF0dGVybiBmaWxlKQogICAgICAgICAgICAgICAgICAoZG9jLXZpZXctLWN1cnJlbnQtY2Fj aGUtZGlyKSkpKQogICAgOzsgT25seSBpbnNlcnQgdGhlIGltYWdlIGlmIHRoZSBidWZmZXIgaXMg dmlzaWJsZS4KICAgICh3aGVuICh3aW5kb3ctbGl2ZS1wIChvdmVybGF5LWdldCBvbCAnd2luZG93 KSkKICAgICAgKGxldCogKChpbWFnZSAoaWYgKGFuZCBmaWxlIChmaWxlLXJlYWRhYmxlLXAgZmls ZSkpCgkJCShpZiAobm90IGRvYy12aWV3LXNjYWxlLWludGVybmFsbHkpCgkJCSAgICAoYXBwbHkg IydjcmVhdGUtaW1hZ2UgZmlsZSBkb2Mtdmlldy0taW1hZ2UtdHlwZSBuaWwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoYXBwZW5kIGFyZ3MgKHdoZW4gZG9jLXZpZXctY29udGlu dW91cy1zY3JvbGwtbWlub3ItbW9kZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChsaXN0IDptYXJnaW4gKGNvbnMgMCBpbWFnZS1yb2xsLXZlcnRpY2Fs LW1hcmdpbikpKSkpCgkJCSAgKHVubGVzcyAobWVtYmVyIDp3aWR0aCBhcmdzKQoJCQkgICAgKHNl dHEgYXJncyBgKCxAYXJncyA6d2lkdGggLGRvYy12aWV3LWltYWdlLXdpZHRoKSkpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgKHVubGVzcyAobWVtYmVyIDp0cmFuc2Zvcm0tc21vb3RoaW5nIGFy Z3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBhcmdzIGAoLEBhcmdzIDp0cmFu c2Zvcm0tc21vb3RoaW5nIHQpKSkKCQkJICAoYXBwbHkgIydjcmVhdGUtaW1hZ2UgZmlsZSBkb2Mt dmlldy0taW1hZ2UtdHlwZSBuaWwgYXJncykpKSkKCSAgICAgKHNsaWNlIChkb2Mtdmlldy1jdXJy ZW50LXNsaWNlKSkKCSAgICAgKGltZy13aWR0aCAoYW5kIGltYWdlIChjYXIgKGltYWdlLXNpemUg aW1hZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICh3aGVuIGRvYy12aWV3LWNvbnRpbnVvdXMtc2Nyb2xsLW1pbm9yLW1vZGUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCkpKSkpCgkgICAgIChk aXNwbGF5ZWQtaW1nLXdpZHRoIChpZiAoYW5kIGltYWdlIHNsaWNlKQoJCQkJICAgICAgKCogKC8g KGZsb2F0IChudGggMiBzbGljZSkpCgkJCQkJICAgIChjYXIgKGltYWdlLXNpemUgaW1hZ2UgJ3Bp eGVscykpKQoJCQkJCSBpbWctd2lkdGgpCgkJCQkgICAgaW1nLXdpZHRoKSkKCSAgICAgKHdpbmRv dy13aWR0aCAoaWYgZG9jLXZpZXctY29udGludW91cy1zY3JvbGwtbWlub3ItbW9kZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy1waXhlbC13aWR0aCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAod2luZG93LXdpZHRoKSkpKQoJKHNldGYgKGRvYy12aWV3LWN1cnJl bnQtaW1hZ2UpIGltYWdlKQoJKHVubGVzcyBkb2Mtdmlldy1jb250aW51b3VzLXNjcm9sbC1taW5v ci1tb2RlCiAgICAgICAgICAobW92ZS1vdmVybGF5IG9sIChwb2ludC1taW4pIChwb2ludC1tYXgp KSkKCTs7IEluIGNhc2UgdGhlIHdpbmRvdyBpcyB3aWRlciB0aGFuIHRoZSBpbWFnZSwgY2VudGVy IHRoZSBpbWFnZQoJOzsgaG9yaXpvbnRhbGx5LgogICAgICAgIChsZXQgKChwaXgtc3BlYyAoaWYg ZG9jLXZpZXctY29udGludW91cy1zY3JvbGwtbWlub3ItbW9kZQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxpc3QgZGlzcGxheWVkLWltZy13aWR0aCkKICAgICAgICAgICAgICAgICAgICAg ICAgICBkaXNwbGF5ZWQtaW1nLXdpZHRoKSkpCgkgIChvdmVybGF5LXB1dCBvbCAnYmVmb3JlLXN0 cmluZwoJCSAgICAgICAod2hlbiAoYW5kIGltYWdlICg+IHdpbmRvdy13aWR0aCBkaXNwbGF5ZWQt aW1nLXdpZHRoKSkKCQkgICAgICAgICAocHJvcGVydGl6ZSAiICIgJ2Rpc3BsYXkKCQkJCSAgICAg YChzcGFjZSA6YWxpZ24tdG8gKCsgY2VudGVyICgtMC41IC4gLHBpeC1zcGVjKSkpKSkpKQoJKG92 ZXJsYXktcHV0IG9sICdkaXNwbGF5CgkJICAgICAoY29uZAoJCSAgICAgIChpbWFnZQoJCSAgICAg ICAoaWYgc2xpY2UKCQkJICAgKGxpc3QgKGNvbnMgJ3NsaWNlIHNsaWNlKSBpbWFnZSkKCQkJIGlt YWdlKSkKCQkgICAgICA7OyBXZSdyZSB0cnlpbmcgdG8gZGlzcGxheSBhIHBhZ2UgdGhhdCBkb2Vz bid0IGV4aXN0LgoJCSAgICAgIChkb2Mtdmlldy0tY3VycmVudC1jb252ZXJ0ZXItcHJvY2Vzc2Vz CgkJICAgICAgIDs7IE1heWJlIHRoZSBwYWdlIGRvZXNuJ3QgZXhpc3QgKnlldCouCgkJICAgICAg ICJDYW5ub3QgZGlzcGxheSB0aGlzIHBhZ2UgKHlldCkhIikKCQkgICAgICAodAoJCSAgICAgICA7 OyBUeXBpY2FsbHkgaGFwcGVucyBpZiB0aGUgY29udmVyc2lvbiBwcm9jZXNzIHNvbWVob3cKCQkg ICAgICAgOzsgZmFpbGVkLiAgQmV0dGVyIG5vdCBzaWduYWwgYW4gZXJyb3IgaGVyZSBiZWNhdXNl IGl0CgkJICAgICAgIDs7IGNvdWxkIHByZXZlbnQgYSBzdWJzZXF1ZW50IHJlY29udmVyc2lvbiBm cm9tIGZpeGluZwoJCSAgICAgICA7OyB0aGUgcHJvYmxlbS4KCQkgICAgICAgKGNvbmNhdCAiQ2Fu bm90IGRpc3BsYXkgdGhpcyBwYWdlIVxuIgoJCQkgICAgICAgIk1heWJlIGJlY2F1c2Ugb2YgYSBj b252ZXJzaW9uIGZhaWx1cmUhIikpKSkKCSh1bmxlc3MgZG9jLXZpZXctY29udGludW91cy1zY3Jv bGwtbWlub3ItbW9kZQogICAgICAgICAgKGxldCAoKHdpbiAob3ZlcmxheS1nZXQgb2wgJ3dpbmRv dykpKQoJICAgKGlmIChzdHJpbmdwIChvdmVybGF5LWdldCBvbCAnZGlzcGxheSkpCgkgICAgICAg KHByb2duICAgICAgICAgICAgO01ha2Ugc3VyZSB0aGUgdGV4dCBpcyBub3Qgc2Nyb2xsZWQgb3V0 IG9mIHZpZXcuCgkJIChzZXQtd2luZG93LWhzY3JvbGwgd2luIDApCgkJIChzZXQtd2luZG93LXZz Y3JvbGwgd2luIDApKQoJICAgICAobGV0ICgoaHNjcm9sbCAoaW1hZ2UtbW9kZS13aW5kb3ctZ2V0 ICdoc2Nyb2xsIHdpbikpCgkJICAgKHZzY3JvbGwgKGltYWdlLW1vZGUtd2luZG93LWdldCAndnNj cm9sbCB3aW4pKSkKCSAgICAgICA7OyBSZXNldCBzY3JvbGwgc2V0dGluZ3MsIGluIGNhc2UgdGhl eSB3ZXJlIGNoYW5nZWQuCgkgICAgICAgKGlmIGhzY3JvbGwgKHNldC13aW5kb3ctaHNjcm9sbCB3 aW4gaHNjcm9sbCkpCgkgICAgICAgKGlmIHZzY3JvbGwgKHNldC13aW5kb3ctdnNjcm9sbCB3aW4g dnNjcm9sbCB0KSkpKSkpKSkpKQoKKGRlZnVuIGRvYy12aWV3LXNvcnQgKGEgYikKICAiUmV0dXJu IG5vbi1uaWwgaWYgQSBzaG91bGQgYmUgc29ydGVkIGJlZm9yZSBCLgpQcmVkaWNhdGUgZm9yIHNv cnRpbmcgYGRvYy12aWV3LS1jdXJyZW50LWZpbGVzJy4iCiAgKG9yICg8IChsZW5ndGggYSkgKGxl bmd0aCBiKSkKICAgICAgKGFuZCAoPSAobGVuZ3RoIGEpIChsZW5ndGggYikpCiAgICAgICAgICAg KHN0cmluZzwgYSBiKSkpKQoKKGRlZnVuIGRvYy12aWV3LWRpc3BsYXkgKGJ1ZmZlciAmb3B0aW9u YWwgZm9yY2UpCiAgIlN0YXJ0IHZpZXdpbmcgdGhlIGRvY3VtZW50IGluIEJVRkZFUi4KSWYgRk9S Q0UgaXMgbm9uLW5pbCwgc3RhcnQgdmlld2luZyBldmVuIGlmIHRoZSBkb2N1bWVudCBkb2VzIG5v dApoYXZlIHRoZSBwYWdlIHdlIHdhbnQgdG8gdmlldy4iCiAgKHdpdGgtY3VycmVudC1idWZmZXIg YnVmZmVyCiAgICAobGV0ICgocHJldi1wYWdlcyBkb2Mtdmlldy0tY3VycmVudC1maWxlcykpCiAg ICAgIChzZXRxIGRvYy12aWV3LS1jdXJyZW50LWZpbGVzCiAgICAgICAgICAgIChzb3J0IChkaXJl Y3RvcnktZmlsZXMgKGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRpcikgdAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgZG9jLXZpZXctLWltYWdlLWZpbGUtcGF0dGVy bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlswLTldKyIpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCkKICAgICAgICAgICAgICAgICAgJ2Rv Yy12aWV3LXNvcnQpKQogICAgICAodW5sZXNzIChlcSAobGVuZ3RoIHByZXYtcGFnZXMpIChsZW5n dGggZG9jLXZpZXctLWN1cnJlbnQtZmlsZXMpKQoJKGZvcmNlLW1vZGUtbGluZS11cGRhdGUpKQog ICAgICAoZG9saXN0ICh3aW4gKG9yIChnZXQtYnVmZmVyLXdpbmRvdy1saXN0IGJ1ZmZlciBuaWwg dCkKCQkgICAgICAgKGxpc3QgdCkpKQoJKGxldCogKChwYWdlIChkb2Mtdmlldy1jdXJyZW50LXBh Z2Ugd2luKSkKCSAgICAgICAocGFnZWZpbGUgKGV4cGFuZC1maWxlLW5hbWUKICAgICAgICAgICAg ICAgICAgICAgICAgICAoZm9ybWF0IGRvYy12aWV3LS1pbWFnZS1maWxlLXBhdHRlcm4gcGFnZSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyKSkp KQoJICAod2hlbiAob3IgZm9yY2UKCQkgICAgKGFuZCAobm90IChtZW1iZXIgcGFnZWZpbGUgcHJl di1wYWdlcykpCgkJCSAobWVtYmVyIHBhZ2VmaWxlIGRvYy12aWV3LS1jdXJyZW50LWZpbGVzKSkp CgkgICAgKGlmICh3aW5kb3dwIHdpbikKCQkod2l0aC1zZWxlY3RlZC13aW5kb3cgd2luCgkJICAo Y2wtYXNzZXJ0IChlcSAoY3VycmVudC1idWZmZXIpIGJ1ZmZlcikgdCkKCQkgIChkb2Mtdmlldy1n b3RvLXBhZ2UgcGFnZSkpCgkgICAgICAoZG9jLXZpZXctZ290by1wYWdlIHBhZ2UpKSkpKSkpKQoK KGRlZnVuIGRvYy12aWV3LWJ1ZmZlci1tZXNzYWdlICgpCiAgOzsgT25seSBzaG93IHRoaXMgbWVz c2FnZSBpbml0aWFsbHksIG5vdCB3aGVuIHJlZnJlc2hpbmcgdGhlIGJ1ZmZlciAoaW4gd2hpY2gK ICA7OyBjYXNlIGl0J3MgYmV0dGVyIHRvIGtlZXAgZGlzcGxheWluZyB0aGUgInN0YWxlIiBwYWdl IHdoaWxlIGNvbXB1dGluZwogIDs7IHRoZSBmcmVzaCBuZXcgb25lcykuCiAgKHVubGVzcyAob3Zl cmxheS1nZXQgKGRvYy12aWV3LWN1cnJlbnQtb3ZlcmxheSkgJ2Rpc3BsYXkpCiAgICAob3Zlcmxh eS1wdXQgKGRvYy12aWV3LWN1cnJlbnQtb3ZlcmxheSkgJ2Rpc3BsYXkKICAgICAgICAgICAgICAg ICAoY29uY2F0IChwcm9wZXJ0aXplICJXZWxjb21lIHRvIERvY1ZpZXchIiAnZmFjZSAnYm9sZCkK ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgIChz dWJzdGl0dXRlLWNvbW1hbmQta2V5cyAiCklmIHlvdSBzZWUgdGhpcyBidWZmZXIgaXQgbWVhbnMg dGhhdCB0aGUgZG9jdW1lbnQgeW91IHdhbnQgdG8gdmlldyBpcyBiZWluZwpjb252ZXJ0ZWQgdG8g UE5HIGFuZCB0aGUgY29udmVyc2lvbiBvZiB0aGUgZmlyc3QgcGFnZSBoYXNuJ3QgZmluaXNoZWQg eWV0IG9yCmBkb2Mtdmlldy1jb252ZXJzaW9uLXJlZnJlc2gtaW50ZXJ2YWwnIGlzIHNldCB0byBu aWwuCgpGb3Igbm93IHRoZXNlIGtleXMgYXJlIHVzZWZ1bDoKXFw8ZG9jLXZpZXctbW9kZS1tYXA+ ClxcW3F1aXQtd2luZG93XSA6IEJ1cnkgdGhpcyBidWZmZXIuICBDb252ZXJzaW9uIHdpbGwgZ28g b24gaW4gYmFja2dyb3VuZC4KXFxbaW1hZ2Uta2lsbC1idWZmZXJdIDogS2lsbCB0aGUgY29udmVy c2lvbiBwcm9jZXNzIGFuZCB0aGlzIGJ1ZmZlci4KXFxbZG9jLXZpZXcta2lsbC1wcm9jXSA6IEtp bGwgdGhlIGNvbnZlcnNpb24gcHJvY2Vzcy5cbiIpKSkpKQoKKGRlY2xhcmUtZnVuY3Rpb24gdG9v bHRpcC1zaG93ICJ0b29sdGlwIiAodGV4dCAmb3B0aW9uYWwgdXNlLWVjaG8tYXJlYSkpCgooZGVm dW4gZG9jLXZpZXctc2hvdy10b29sdGlwICgpCiAgKGludGVyYWN0aXZlKQogICh0b29sdGlwLXNo b3cgKGRvYy12aWV3LWN1cnJlbnQtaW5mbykpKQoKOzsgV2UgZGVmaW5lIGFuIG93biBtYWpvciBt b2RlIGZvciBEb2NWaWV3J3MgdGV4dCBkaXNwbGF5IHNvIHRoYXQgd2UKOzsgY2FuIGVhc2lseSBk aXN0aW5ndWlzaCB3aGVuIHdlIHdhbnQgdG8gdG9nZ2xlIGJhY2sgYmVjYXVzZQo7OyB0ZXh0LW1v ZGUgaXMgYSBsaWtlbHkgY2FuZGlkYXRlIGZvciBhIGRlZmF1bHQgbWFqb3ItbW9kZQo7OyAoYnVn IzM0NDUxKS4KKGRlZmluZS1kZXJpdmVkLW1vZGUgZG9jLXZpZXctLXRleHQtdmlldy1tb2RlIHRl eHQtbW9kZSAiRFYvVGV4dCIKICAiVmlldyBtb2RlIHVzZWQgaW4gRG9jVmlldydzIHRleHQgYnVm ZmVycy4iCiAgKHZpZXctbW9kZSkpCgooZGVmdW4gZG9jLXZpZXctb3Blbi10ZXh0ICgpCiAgIkRp c3BsYXkgdGhlIGN1cnJlbnQgZG9jJ3MgY29udGVudHMgYXMgdGV4dC4iCiAgKGludGVyYWN0aXZl KQogIChpZiBkb2Mtdmlldy0tY3VycmVudC1jb252ZXJ0ZXItcHJvY2Vzc2VzCiAgICAgIChtZXNz YWdlICJEb2NWaWV3OiBwbGVhc2Ugd2FpdCB0aWxsIGNvbnZlcnNpb24gZmluaXNoZWQuIikKICAg IChsZXQgKCh0eHQgKGV4cGFuZC1maWxlLW5hbWUgImRvYy50eHQiIChkb2Mtdmlldy0tY3VycmVu dC1jYWNoZS1kaXIpKSkKICAgICAgICAgIChwYWdlIChkb2Mtdmlldy1jdXJyZW50LXBhZ2UpKSkK ICAgICAgKGlmIChmaWxlLXJlYWRhYmxlLXAgdHh0KQoJICAobGV0ICgoaW5oaWJpdC1yZWFkLW9u bHkgdCkKCQkoYnVmZmVyLXVuZG8tbGlzdCB0KQoJCShkdi1iZm4gZG9jLXZpZXctLWJ1ZmZlci1m aWxlLW5hbWUpKQoJICAgIChlcmFzZS1idWZmZXIpCiAgICAgICAgICAgIDs7IEZJWE1FOiBSZXBs YWNpbmcgdGhlIGJ1ZmZlcidzIFBERiBjb250ZW50IHdpdGggaXRzIHR4dCByZW5kZXJpbmcKICAg ICAgICAgICAgOzsgaXMgcHJldHR5IHJpc2t5LiAgV2Ugc2hvdWxkIHByb2JhYmx5IHVzZSAqYW5v dGhlcioKICAgICAgICAgICAgOzsgYnVmZmVyIGluc3RlYWQsIHNvIHRoZXJlJ3MgbXVjaCBsZXNz IHJpc2sgb2YKICAgICAgICAgICAgOzsgb3ZlcndyaXRpbmcgdGhlIFBERiBmaWxlIHdpdGggc29t ZSB0ZXh0IHJlbmRlcmluZy4KCSAgICAoc2V0LWJ1ZmZlci1tdWx0aWJ5dGUgdCkKCSAgICAoaW5z ZXJ0LWZpbGUtY29udGVudHMgdHh0KQoJICAgIChkb2Mtdmlldy0tdGV4dC12aWV3LW1vZGUpCgkg ICAgKHNldHEtbG9jYWwgZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUgZHYtYmZuKQoJICAgIChz ZXQtYnVmZmVyLW1vZGlmaWVkLXAgbmlsKQoJICAgIChkb2Mtdmlldy1taW5vci1tb2RlKQogICAg ICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgICAgICAgICA7OyBQdXQgcG9pbnQg YXQgdGhlIHN0YXJ0IG9mIHRoZSBwYWdlIHRoZSB1c2VyIHdhcwogICAgICAgICAgICA7OyByZWFk aW5nLiAgUGFnZXMgYXJlIHNlcGFyYXRlZCBieSBDb250cm9sLUwgY2hhcmFjdGVycy4KICAgICAg ICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkIHBhZ2UtZGVsaW1pdGVyIG5pbCB0ICgxLSBwYWdlKSkK CSAgICAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtZnVuY3Rpb25zCgkJICAgICAgKGxhbWJkYSAoKQog ICAgICAgICAgICAgICAgICAgICAgICA7OyBGSVhNRTogSWYgdGhlIHVzZXIgY2hhbmdlcyBtYWpv ciBtb2RlIGFuZCB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIDs7IHNhdmVzIHRoZSBidWZm ZXIsIHRoZSBQREYgZmlsZSB3aWxsIGJlIGNsb2JiZXJlZAogICAgICAgICAgICAgICAgICAgICAg ICA7OyB3aXRoIGl0cyB0eHQgcmVuZGVyaW5nIQoJCQkod2hlbiAoZXEgbWFqb3ItbW9kZSAnZG9j LXZpZXctLXRleHQtdmlldy1tb2RlKQoJCQkgIChlcnJvciAiQ2Fubm90IHNhdmUgdGV4dCBjb250 ZW50cyBvZiBkb2N1bWVudCAlcyIKCQkJCSBidWZmZXItZmlsZS1uYW1lKSkpCgkJICAgICAgbmls IHQpKQoJKGRvYy12aWV3LWRvYy0+dHh0IHR4dCAnZG9jLXZpZXctb3Blbi10ZXh0KSkpKSkKCjs7 Ozs7IFRvZ2dsZSBiZXR3ZWVuIGVkaXRpbmcgYW5kIHZpZXdpbmcKCihkZWZ2YXItbG9jYWwgZG9j LXZpZXctc2F2ZWQtc2V0dGluZ3MgbmlsCiAgIkRvYy12aWV3IHNldHRpbmdzIHNhdmVkIHdoaWxl IGluIHNvbWUgb3RoZXIgbW9kZS4iKQoocHV0ICdkb2Mtdmlldy1zYXZlZC1zZXR0aW5ncyAncGVy bWFuZW50LWxvY2FsIHQpCgooZGVmdW4gZG9jLXZpZXctdG9nZ2xlLWRpc3BsYXkgKCkKICAiVG9n Z2xlIGJldHdlZW4gZWRpdGluZyBhIGRvY3VtZW50IGFzIHRleHQgb3Igdmlld2luZyBpdC4iCiAg KGludGVyYWN0aXZlKQogIChjb25kCiAgICgoZXEgbWFqb3ItbW9kZSAnZG9jLXZpZXctbW9kZSkK ICAgIDs7IFN3aXRjaCB0byBlZGl0aW5nIG1vZGUKICAgIChkb2Mtdmlldy1raWxsLXByb2MpCiAg ICAoc2V0cSBidWZmZXItcmVhZC1vbmx5IG5pbCkKICAgIDs7IFN3aXRjaCB0byB0aGUgcHJldmlv dXNseSB1c2VkIG1ham9yIG1vZGUgb3IgZmFsbCBiYWNrIHRvCiAgICA7OyBub3JtYWwgbW9kZS4K ICAgIChkb2Mtdmlldy1mYWxsYmFjay1tb2RlKQogICAgKGRvYy12aWV3LW1pbm9yLW1vZGUgMSkp CiAgICgoZXEgbWFqb3ItbW9kZSAnZG9jLXZpZXctLXRleHQtdmlldy1tb2RlKQogICAgKGxldCAo KGJ1ZmZlci11bmRvLWxpc3QgdCkpCiAgICAgIDs7IFdlJ3JlIGN1cnJlbnRseSB2aWV3aW5nIHRo ZSBkb2N1bWVudCdzIHRleHQgY29udGVudHMsIHNvIHN3aXRjaAogICAgICA7OyBiYWNrIHRvIC4K ICAgICAgKHNldHEgYnVmZmVyLXJlYWQtb25seSBuaWwpCiAgICAgIChpbnNlcnQtZmlsZS1jb250 ZW50cyBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZSBuaWwgbmlsIG5pbCB0KQogICAgICAoZG9j LXZpZXctZmFsbGJhY2stbW9kZSkKICAgICAgKGRvYy12aWV3LW1pbm9yLW1vZGUgMSkKICAgICAg KHNldC1idWZmZXItbW9kaWZpZWQtcCBuaWwpKSkKICAgKHQKICAgIDs7IFN3aXRjaCB0byBkb2Mt dmlldy1tb2RlCiAgICAod2hlbiAoYW5kIChidWZmZXItbW9kaWZpZWQtcCkKCSAgICAgICAoeS1v ci1uLXAgIlRoZSBidWZmZXIgaGFzIGJlZW4gbW9kaWZpZWQuICBTYXZlIHRoZSBjaGFuZ2VzPyAi KSkKICAgICAgKHNhdmUtYnVmZmVyKSkKICAgIChkb2Mtdmlldy1tb2RlKSkpKQoKOzs7OyBTZWFy Y2hpbmcKCgooZGVmdW4gZG9jLXZpZXctc2VhcmNoLWludGVybmFsIChyZWdleHAgZmlsZSkKICAi UmV0dXJuIGEgbGlzdCBvZiBGSUxFJ3MgcGFnZXMgdGhhdCBjb250YWluIHRleHQgbWF0Y2hpbmcg UkVHRVhQLgpUaGUgdmFsdWUgaXMgYW4gYWxpc3Qgb2YgdGhlIGZvcm0gKFBBR0UgQ09OVEVYVFMp IHdoZXJlIFBBR0UgaXMKdGhlIHBhZ2VudW1iZXIgYW5kIENPTlRFWFRTIGFyZSBhbGwgbGluZXMg b2YgdGV4dCBjb250YWluaW5nIGEgbWF0Y2guIgogICh3aXRoLXRlbXAtYnVmZmVyCiAgICAoaW5z ZXJ0LWZpbGUtY29udGVudHMgZmlsZSkKICAgIChsZXQgKChwYWdlIDEpCgkgIChsYXN0cGFnZSAx KQoJICBtYXRjaGVzKQogICAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkIChjb25jYXQgIlxc KD86XFwoWwxdXFwpXFx8XFwoIgoJCQkJCXJlZ2V4cCAiXFwpXFwpIikgbmlsIHQpCgkod2hlbiAo bWF0Y2gtc3RyaW5nIDEpIChzZXRxIHBhZ2UgKDErIHBhZ2UpKSkKCSh3aGVuIChtYXRjaC1zdHJp bmcgMikKCSAgKGlmICgvPSBwYWdlIGxhc3RwYWdlKQoJICAgICAgKHB1c2ggKGNvbnMgcGFnZQoJ CQkgIChsaXN0IChidWZmZXItc3Vic3RyaW5nCgkJCQkgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9u KQoJCQkJIChsaW5lLWVuZC1wb3NpdGlvbikpKSkKCQkgICAgbWF0Y2hlcykKCSAgICAoc2V0cSBt YXRjaGVzIChjb25zCgkJCSAgIChhcHBlbmQKCQkJICAgIChvcgoJCQkgICAgIDs7IFRoaXMgcGFn ZSBhbHJlYWR5IGlzIGEgbWF0Y2guCgkJCSAgICAgKGNhciBtYXRjaGVzKQoJCQkgICAgIDs7IFRo aXMgaXMgdGhlIGZpcnN0IG1hdGNoIG9uIHBhZ2UuCgkJCSAgICAgKGxpc3QgcGFnZSkpCgkJCSAg ICAobGlzdCAoYnVmZmVyLXN1YnN0cmluZwoJCQkJICAgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9u KQoJCQkJICAgKGxpbmUtZW5kLXBvc2l0aW9uKSkpKQoJCQkgICAoY2RyIG1hdGNoZXMpKSkpCgkg IChzZXRxIGxhc3RwYWdlIHBhZ2UpKSkKICAgICAgKG5yZXZlcnNlIG1hdGNoZXMpKSkpCgooZGVm dW4gZG9jLXZpZXctc2VhcmNoLW5vLW9mLW1hdGNoZXMgKGxpc3QpCiAgIkV4dHJhY3QgdGhlIG51 bWJlciBvZiBtYXRjaGVzIGZyb20gdGhlIHNlYXJjaCByZXN1bHQgTElTVC4iCiAgKGxldCAoKG5v IDApKQogICAgKGRvbGlzdCAocCBsaXN0KQogICAgICAoc2V0cSBubyAoKyBubyAoMS0gKGxlbmd0 aCBwKSkpKSkKICAgIG5vKSkKCihkZWZ1biBkb2Mtdmlldy1zZWFyY2gtYmFja3dhcmQgKG5ldy1x dWVyeSkKICAiQ2FsbCBgZG9jLXZpZXctc2VhcmNoJyBmb3IgYmFja3dhcmQgc2VhcmNoLgpJZiBw cmVmaXggTkVXLVFVRVJZIGlzIGdpdmVuLCBhc2sgZm9yIGEgbmV3IHJlZ2V4cC4iCiAgKGludGVy YWN0aXZlICJQIikKICAoZG9jLXZpZXctc2VhcmNoIG5ldy1xdWVyeSB0KSkKCihkZWZ1biBkb2Mt dmlldy1zZWFyY2ggKG5ldy1xdWVyeSAmb3B0aW9uYWwgYmFja3dhcmQpCiAgIkp1bXAgdG8gdGhl IG5leHQgbWF0Y2ggb3IgaW5pdGlhdGUgYSBuZXcgc2VhcmNoIGlmIE5FVy1RVUVSWSBpcyBnaXZl bi4KSWYgdGhlIGN1cnJlbnQgZG9jdW1lbnQgaGFzbid0IGJlZW4gdHJhbnNmb3JtZWQgdG8gcGxh aW4gdGV4dAp0aWxsIG5vdyBkbyB0aGF0IGZpcnN0LgpJZiBCQUNLV0FSRCBpcyBub24tbmlsLCBq dW1wIHRvIHRoZSBwcmV2aW91cyBtYXRjaC4iCiAgKGludGVyYWN0aXZlICJQIikKICAoaWYgKGFu ZCAobm90IG5ldy1xdWVyeSkKCSAgIGRvYy12aWV3LS1jdXJyZW50LXNlYXJjaC1tYXRjaGVzKQog ICAgICAoaWYgYmFja3dhcmQKCSAgKGRvYy12aWV3LXNlYXJjaC1wcmV2aW91cy1tYXRjaCAxKQoJ KGRvYy12aWV3LXNlYXJjaC1uZXh0LW1hdGNoIDEpKQogICAgOzsgTmV3IHNlYXJjaCwgc28gZm9y Z2V0IHRoZSBvbGQgcmVzdWx0cy4KICAgIChzZXRxIGRvYy12aWV3LS1jdXJyZW50LXNlYXJjaC1t YXRjaGVzIG5pbCkKICAgIChsZXQgKCh0eHQgKGV4cGFuZC1maWxlLW5hbWUgImRvYy50eHQiCgkJ CQkgKGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRpcikpKSkKICAgICAgKGlmIChmaWxlLXJlYWRh YmxlLXAgdHh0KQoJICAocHJvZ24KCSAgICAoc2V0cSBkb2Mtdmlldy0tY3VycmVudC1zZWFyY2gt bWF0Y2hlcwoJCSAgKGRvYy12aWV3LXNlYXJjaC1pbnRlcm5hbAoJCSAgIChyZWFkLWZyb20tbWlu aWJ1ZmZlciAiUmVnZXhwOiAiKQoJCSAgIHR4dCkpCgkgICAgKG1lc3NhZ2UgIkRvY1ZpZXc6IHNl YXJjaCB5aWVsZGVkICVkIG1hdGNoZXMuIgoJCSAgICAgKGRvYy12aWV3LXNlYXJjaC1uby1vZi1t YXRjaGVzCgkJICAgICAgZG9jLXZpZXctLWN1cnJlbnQtc2VhcmNoLW1hdGNoZXMpKSkKCTs7IFdl IG11c3QgY29udmVydCB0byBUWFQgZmlyc3QhCgkoaWYgZG9jLXZpZXctLWN1cnJlbnQtY29udmVy dGVyLXByb2Nlc3NlcwoJICAgIChtZXNzYWdlICJEb2NWaWV3OiBwbGVhc2Ugd2FpdCB0aWxsIGNv bnZlcnNpb24gZmluaXNoZWQuIikKCSAgKGRvYy12aWV3LWRvYy0+dHh0IHR4dCAobGFtYmRhICgp IChkb2Mtdmlldy1zZWFyY2ggbmlsKSkpKSkpKSkKCihkZWZ1biBkb2Mtdmlldy1zZWFyY2gtbmV4 dC1tYXRjaCAoYXJnKQogICJHbyB0byB0aGUgQVJHdGggbmV4dCBtYXRjaGluZyBwYWdlLiIKICAo aW50ZXJhY3RpdmUgInAiKQogIChsZXQqICgobmV4dC1wYWdlcyAoY2wtcmVtb3ZlLWlmCgkJICAg ICAgKGxhbWJkYSAoaSkgKDw9IChjYXIgaSkgKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkpKQoJCSAg ICAgIGRvYy12aWV3LS1jdXJyZW50LXNlYXJjaC1tYXRjaGVzKSkKCSAocGFnZSAoY2FyIChudGgg KDEtIGFyZykgbmV4dC1wYWdlcykpKSkKICAgIChpZiBwYWdlCgkoZG9jLXZpZXctZ290by1wYWdl IHBhZ2UpCiAgICAgICh3aGVuIChhbmQKCSAgICAgZG9jLXZpZXctLWN1cnJlbnQtc2VhcmNoLW1h dGNoZXMKCSAgICAgKHktb3Itbi1wICJObyBtb3JlIG1hdGNoZXMgYWZ0ZXIgY3VycmVudCBwYWdl LiAgV3JhcCB0byBmaXJzdCBtYXRjaD8gIikpCgkoZG9jLXZpZXctZ290by1wYWdlIChjYWFyIGRv Yy12aWV3LS1jdXJyZW50LXNlYXJjaC1tYXRjaGVzKSkpKSkpCgooZGVmdW4gZG9jLXZpZXctc2Vh cmNoLXByZXZpb3VzLW1hdGNoIChhcmcpCiAgIkdvIHRvIHRoZSBBUkd0aCBwcmV2aW91cyBtYXRj aGluZyBwYWdlLiIKICAoaW50ZXJhY3RpdmUgInAiKQogIChsZXQqICgocHJldi1wYWdlcyAoY2wt cmVtb3ZlLWlmCgkJICAgICAgKGxhbWJkYSAoaSkgKD49IChjYXIgaSkgKGRvYy12aWV3LWN1cnJl bnQtcGFnZSkpKQoJCSAgICAgIGRvYy12aWV3LS1jdXJyZW50LXNlYXJjaC1tYXRjaGVzKSkKCSAo cGFnZSAoY2FyIChudGggKDEtIGFyZykgKG5yZXZlcnNlIHByZXYtcGFnZXMpKSkpKQogICAgKGlm IHBhZ2UKCShkb2Mtdmlldy1nb3RvLXBhZ2UgcGFnZSkKICAgICAgKHdoZW4gKGFuZAoJICAgICBk b2Mtdmlldy0tY3VycmVudC1zZWFyY2gtbWF0Y2hlcwoJICAgICAoeS1vci1uLXAgIk5vIG1vcmUg bWF0Y2hlcyBiZWZvcmUgY3VycmVudCBwYWdlLiAgV3JhcCB0byBsYXN0IG1hdGNoPyAiKSkKCShk b2Mtdmlldy1nb3RvLXBhZ2UgKGNhYXIgKGxhc3QgZG9jLXZpZXctLWN1cnJlbnQtc2VhcmNoLW1h dGNoZXMpKSkpKSkpCgo7Ozs7IFVzZXIgaW50ZXJmYWNlIGNvbW1hbmRzIGFuZCB0aGUgbW9kZQoK KHB1dCAnZG9jLXZpZXctbW9kZSAnbW9kZS1jbGFzcyAnc3BlY2lhbCkKCihkZWZ1biBkb2Mtdmll dy1hbHJlYWR5LWNvbnZlcnRlZC1wICgpCiAgIlJldHVybiBub24tbmlsIGlmIHRoZSBjdXJyZW50 IGRvYyB3YXMgYWxyZWFkeSBjb252ZXJ0ZWQuIgogIChhbmQgKGZpbGUtZXhpc3RzLXAgKGRvYy12 aWV3LS1jdXJyZW50LWNhY2hlLWRpcikpCiAgICAgICA7OyBDaGVjayB0aGF0IHRoZSByZXNvbHV0 aW9uIGluZm8gaXMgdGhlcmUsIG90aGVyd2lzZSBpdCBtZWFucwogICAgICAgOzsgdGhlIGNvbnZl cnNpb24gaXMgaW5jb21wbGV0ZS4KICAgICAgIChmaWxlLXJlYWRhYmxlLXAgKGV4cGFuZC1maWxl LW5hbWUgInJlc29sdXRpb24uZWwiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1kaXIpKSkKICAgICAgICg+IChsZW5ndGgg KGRpcmVjdG9yeS1maWxlcwogICAgICAgICAgICAgICAgICAgKGRvYy12aWV3LS1jdXJyZW50LWNh Y2hlLWRpcikKICAgICAgICAgICAgICAgICAgIG5pbCAoZm9ybWF0IGRvYy12aWV3LS1pbWFnZS1m aWxlLXBhdHRlcm4gIlswLTldKyIpKSkKICAgICAgICAgIDApKSkKCihkZWZ1biBkb2Mtdmlldy1p bml0aWF0ZS1kaXNwbGF5ICgpCiAgOzsgU3dpdGNoIHRvIGltYWdlIGRpc3BsYXkgaWYgcG9zc2li bGUuCiAgKGlmIChkb2Mtdmlldy1tb2RlLXAgZG9jLXZpZXctZG9jLXR5cGUpCiAgICAgIChwcm9n bgoJKGRvYy12aWV3LWJ1ZmZlci1tZXNzYWdlKQoJKHNldGYgKGRvYy12aWV3LWN1cnJlbnQtcGFn ZSkgKG9yIChkb2Mtdmlldy1jdXJyZW50LXBhZ2UpIDEpKQoJKGlmIChkb2Mtdmlldy1hbHJlYWR5 LWNvbnZlcnRlZC1wKQoJICAgIChwcm9nbgoJICAgICAgKG1lc3NhZ2UgIkRvY1ZpZXc6IHVzaW5n IGNhY2hlZCBmaWxlcyEiKQoJICAgICAgOzsgTG9hZCB0aGUgc2F2ZWQgcmVzb2x1dGlvbi4KCSAg ICAgIChsZXQqICgocmVzLWZpbGUKICAgICAgICAgICAgICAgICAgICAgIChleHBhbmQtZmlsZS1u YW1lICJyZXNvbHV0aW9uLmVsIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRpcikpKQogICAgICAgICAgICAgICAgICAgICAo cmVzCiAgICAgICAgICAgICAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgICAgICAgICAg ICAgICAgICAgICAod2hlbiAoZmlsZS1yZWFkYWJsZS1wIHJlcy1maWxlKQogICAgICAgICAgICAg ICAgICAgICAgICAgIChpbnNlcnQtZmlsZS1jb250ZW50cyByZXMtZmlsZSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAocmVhZCAoY3VycmVudC1idWZmZXIpKSkpKSkKICAgICAgICAgICAgICAg ICh3aGVuIChudW1iZXJwIHJlcykKCQkgIChzZXRxLWxvY2FsIGRvYy12aWV3LXJlc29sdXRpb24g cmVzKSkpCgkgICAgICAoZG9jLXZpZXctZGlzcGxheSAoY3VycmVudC1idWZmZXIpICdmb3JjZSkp CgkgIChkb2Mtdmlldy1jb252ZXJ0LWN1cnJlbnQtZG9jKSkKCShtZXNzYWdlCgkgIiVzIgoJIChz dWJzdGl0dXRlLWNvbW1hbmQta2V5cwoJICAoY29uY2F0ICJUeXBlIFxcW2RvYy12aWV3LXRvZ2ds ZS1kaXNwbGF5XSB0byB0b2dnbGUgYmV0d2VlbiAiCgkJICAiZWRpdGluZyBvciB2aWV3aW5nIHRo ZSBkb2N1bWVudC4iKSkpKQogICAgKGlmIChpbWFnZS10eXBlLWF2YWlsYWJsZS1wICdwbmcpCiAg ICAgICAgKG1lc3NhZ2UgIkNvbnZlcnNpb24gdXRpbGl0eSBcIiVzXCIgbm90IGF2YWlsYWJsZSBm b3IgJXMiCiAgICAgICAgICAgICAgICAgZG9jLXZpZXctZ2hvc3RzY3JpcHQtcHJvZ3JhbQoJICAg ICAgICAgKGZpbGUtbmFtZS1leHRlbnNpb24gZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUpKQog ICAgICAobWVzc2FnZSAiUE5HIHN1cHBvcnQgbm90IGF2YWlsYWJsZTsgY2FuJ3QgdmlldyBkb2N1 bWVudCIpKQogICAgKGlmIChhbmQgKGV4ZWN1dGFibGUtZmluZCBkb2Mtdmlldy1wZGZ0b3RleHQt cHJvZ3JhbSkKCSAgICAgKHktb3Itbi1wCgkgICAgICAiVW5hYmxlIHRvIHJlbmRlciBmaWxlLiAg VmlldyBleHRyYWN0ZWQgdGV4dCBpbnN0ZWFkPyAiKSkKCShkb2Mtdmlldy1vcGVuLXRleHQpCiAg ICAgIChkb2Mtdmlldy10b2dnbGUtZGlzcGxheSkpKSkKCihkZWZ2YXIgYm9va21hcmstbWFrZS1y ZWNvcmQtZnVuY3Rpb24pCgooZGVmdW4gZG9jLXZpZXctY2xvbmUtYnVmZmVyLWhvb2sgKCkKICA7 OyBGSVhNRTogVGhlcmUgYXJlIHNldmVyYWwgcG90ZW50aWFsIHByb2JsZW1zIGxpbmtlZCB3aXRo IHJlY29udmVyc2lvbgogIDs7IGFuZCBhdXRvLXJldmVydCB3aGVuIHdlIGhhdmUgaW5kaXJlY3Qg YnVmZmVycyBiZWNhdXNlIHRoZXkgc2hhcmUgdGhlaXIKICA7OyAvdG1wIGNhY2hlIGRpcmVjdG9y eS4gIFRoaXMgc2hhcmluZyBpcyBnb29kICh5b3UnZCByYXRoZXIgbm90IHJlY29udmVydAogIDs7 IGZvciBlYWNoIGNsb25lKSwgYnV0IHRoYXQgbWVhbnMgdGhhdCBjbG9uZXMgbmVlZCB0byBjb2xs YWJvcmF0ZSBhIGJpdC4KICA7OyBJIGd1ZXNzIGl0IG1vc3RseSBtZWFuczogZGV0ZWN0IHdoZW4g YSByZWNvbnZlcnNpb24gcHJvY2VzcyBpcyBhbHJlYWR5CiAgOzsgcnVubmluZywgYW5kIHJ1biB0 aGUgc2VudGluZWwgaW4gYWxsIGNsb25lcy4KICA7OwogIDs7IE1heWJlIHRoZSBjbG9uZXMgc2hv dWxkIHJlYWxseSBoYXZlIGEgc2VwYXJhdGUgL3RtcCBkaXJlY3RvcnkKICA7OyBzbyB0aGV5IGNv dWxkIGhhdmUgYSBkaWZmZXJlbnQgcmVzb2x1dGlvbiBhbmQgeW91IGNvdWxkIHVzZSBjbG9uZXMK ICA7OyBmb3Igem9vbWluZy4KICAocmVtb3ZlLW92ZXJsYXlzIChwb2ludC1taW4pIChwb2ludC1t YXgpICdkb2MtdmlldyB0KQogIChpZiAoY29uc3AgaW1hZ2UtbW9kZS13aW5wcm9wcy1hbGlzdCkg KHNldHEgaW1hZ2UtbW9kZS13aW5wcm9wcy1hbGlzdCBuaWwpKSkKCihkZWZ1biBkb2Mtdmlldy1z ZXQtZG9jLXR5cGUgKCkKICAiRmlndXJlIG91dCB0aGUgY3VycmVudCBkb2N1bWVudCB0eXBlIChg ZG9jLXZpZXctZG9jLXR5cGUnKS4iCiAgKGxldCAoKG5hbWUtdHlwZXMKCSAod2hlbiBidWZmZXIt ZmlsZS1uYW1lCgkgICAoY2RyIChhc3NvYy1zdHJpbmcKICAgICAgICAgICAgICAgICAoZmlsZS1u YW1lLWV4dGVuc2lvbiBidWZmZXItZmlsZS1uYW1lKQogICAgICAgICAgICAgICAgICcoCiAgICAg ICAgICAgICAgICAgICA7OyBEVkkKICAgICAgICAgICAgICAgICAgICgiZHZpIiBkdmkpCiAgICAg ICAgICAgICAgICAgICA7OyBQREYKICAgICAgICAgICAgICAgICAgICgicGRmIiBwZGYpICgiZXBk ZiIgcGRmKQogICAgICAgICAgICAgICAgICAgOzsgRVBVQgogICAgICAgICAgICAgICAgICAgKCJl cHViIiBlcHViKQogICAgICAgICAgICAgICAgICAgOzsgUG9zdFNjcmlwdAogICAgICAgICAgICAg ICAgICAgKCJwcyIgcHMpICgiZXBzIiBwcykKICAgICAgICAgICAgICAgICAgIDs7IERqVnUKICAg ICAgICAgICAgICAgICAgICgiZGp2dSIgZGp2dSkKICAgICAgICAgICAgICAgICAgIDs7IE9wZW5E b2N1bWVudCBmb3JtYXRzLgogICAgICAgICAgICAgICAgICAgKCJvZHQiIG9kZikgKCJvZHMiIG9k ZikgKCJvZHAiIG9kZikgKCJvZGciIG9kZikKICAgICAgICAgICAgICAgICAgICgib2RjIiBvZGYp ICgib2RpIiBvZGYpICgib2RtIiBvZGYpICgib3R0IiBvZGYpCiAgICAgICAgICAgICAgICAgICAo Im90cyIgb2RmKSAoIm90cCIgb2RmKSAoIm90ZyIgb2RmKQogICAgICAgICAgICAgICAgICAgOzsg TWljcm9zb2Z0IE9mZmljZSBmb3JtYXRzIChhbHNvIGhhbmRsZWQgYnkgdGhlIG9kZgogICAgICAg ICAgICAgICAgICAgOzsgY29udmVyc2lvbiBjaGFpbikuCiAgICAgICAgICAgICAgICAgICAoImRv YyIgb2RmKSAoImRvY3giIG9kZikgKCJ4bHMiIG9kZikgKCJ4bHN4IiBvZGYpCiAgICAgICAgICAg ICAgICAgICAoInBwdCIgb2RmKSAoInBwcyIgb2RmKSAoInBwdHgiIG9kZikgKCJydGYiIG9kZikK ICAgICAgICAgICAgICAgICAgIDs7IENCWgogICAgICAgICAgICAgICAgICAgKCJjYnoiIGNieikK ICAgICAgICAgICAgICAgICAgIDs7IEZCMgogICAgICAgICAgICAgICAgICAgKCJmYjIiIGZiMikK ICAgICAgICAgICAgICAgICAgIDs7IChPcGVuKVhQUwogICAgICAgICAgICAgICAgICAgKCJ4cHMi IHhwcykgKCJveHBzIiBveHBzKSkKCQkgdCkpKSkKCShjb250ZW50LXR5cGVzCgkgKHNhdmUtZXhj dXJzaW9uCgkgICAoZ290by1jaGFyIChwb2ludC1taW4pKQoJICAgKGNvbmQKCSAgICAoKGxvb2tp bmctYXQgIiUhIikgJyhwcykpCgkgICAgKChsb29raW5nLWF0ICIlUERGIikgJyhwZGYpKQoJICAg ICgobG9va2luZy1hdCAiXDM2N1wwMDIiKSAnKGR2aSkpCgkgICAgKChsb29raW5nLWF0ICJBVCZU Rk9STSIpICcoZGp2dSkpCiAgICAgICAgICAgIDs7IFRoZSBmb2xsb3dpbmcgcGF0dGVybiBhY3R1 YWxseSBpcyBmb3IgcmVjb2duaXppbmcKICAgICAgICAgICAgOzsgemlwLWFyY2hpdmVzLCBzbyB0 aGF0IHRoaXMgc2FtZSBhc3NvY2lhdGlvbiBpcyB1c2VkIGZvcgogICAgICAgICAgICA7OyBjYnog ZmlsZXMuIFRoaXMgaXMgZmluZSwgYXMgY2J6IGZpbGVzIHNob3VsZCBiZSBoYW5kbGVkCiAgICAg ICAgICAgIDs7IGxpa2UgZXB1YiBhbnl3YXkuCiAgICAgICAgICAgICgobG9va2luZy1hdCAiUEsi KSAnKGVwdWIgb2RmKSkpKSkpCiAgICAoc2V0cS1sb2NhbAogICAgIGRvYy12aWV3LWRvYy10eXBl CiAgICAgKGNhciAob3IgKG5yZXZlcnNlIChzZXEtaW50ZXJzZWN0aW9uIG5hbWUtdHlwZXMgY29u dGVudC10eXBlcyAjJ2VxKSkKICAgICAgICAgICAgICAod2hlbiAoYW5kIG5hbWUtdHlwZXMgY29u dGVudC10eXBlcykKICAgICAgICAgICAgICAgIChlcnJvciAiQ29uZmxpY3RpbmcgdHlwZXM6IG5h bWUgc2F5cyAlcyBidXQgY29udGVudCBzYXlzICVzIgogICAgICAgICAgICAgICAgICAgICAgIG5h bWUtdHlwZXMgY29udGVudC10eXBlcykpCiAgICAgICAgICAgICAgbmFtZS10eXBlcyBjb250ZW50 LXR5cGVzCiAgICAgICAgICAgICAgKGVycm9yICJDYW5ub3QgZGV0ZXJtaW5lIHRoZSBkb2N1bWVu dCB0eXBlIikpKSkpKQoKKGRlZnVuIGRvYy12aWV3LXNldC11cC1zaW5nbGUtY29udmVydGVyICgp CiAgIkZpbmQgdGhlIHJpZ2h0IHNpbmdsZS1wYWdlIGNvbnZlcnRlciBmb3IgdGhlIGN1cnJlbnQg ZG9jdW1lbnQgdHlwZS4iCiAgKHBjYXNlLWxldCAoKGAoLGNvbnYtZnVuY3Rpb24gLHR5cGUgLGV4 dGVuc2lvbikKICAgICAgICAgICAgICAgKHBjYXNlIGRvYy12aWV3LWRvYy10eXBlCiAgICAgICAg ICAgICAgICAgKCdkanZ1IChsaXN0ICMnZG9jLXZpZXctZGp2dS0+dGlmZi1jb252ZXJ0ZXItZGRq dnUgJ3RpZmYgInRpZiIpKQogICAgICAgICAgICAgICAgIChfICAgICAobGlzdCBkb2Mtdmlldy1w ZGYtPnBuZy1jb252ZXJ0ZXItZnVuY3Rpb24gICdwbmcgICJwbmciKSkpKSkKICAgIChzZXRxLWxv Y2FsIGRvYy12aWV3LXNpbmdsZS1wYWdlLWNvbnZlcnRlci1mdW5jdGlvbiBjb252LWZ1bmN0aW9u KQogICAgKHNldHEtbG9jYWwgZG9jLXZpZXctLWltYWdlLXR5cGUgdHlwZSkKICAgIChzZXRxLWxv Y2FsIGRvYy12aWV3LS1pbWFnZS1maWxlLXBhdHRlcm4gKGNvbmNhdCAicGFnZS0lcy4iIGV4dGVu c2lvbikpKSkKCjs7IGRlc2t0b3AuZWwgaW50ZWdyYXRpb24KCihkZWZ1biBkb2Mtdmlldy1kZXNr dG9wLXNhdmUtYnVmZmVyIChfZGVza3RvcC1kaXJuYW1lKQogIDs7IEZJWE1FOiBUaGlzIGlzIHdy b25nLCBzaW5jZSB0aGlzIGluZm8gaXMgcGVyLXdpbmRvdyBidXQgd2Ugb25seSBkbyBpdCBvbmNl CiAgOzsgaGVyZSBmb3IgdGhlIGJ1ZmZlci4gIElPVyBpdCBzaG91bGQgYmUgc2F2ZWQgdmlhIHNv bWV0aGluZyBsaWtlCiAgOzsgYHdpbmRvdy1wZXJzaXN0ZW50LXBhcmFtZXRlcnMnLgogIGAoKHBh Z2UgLiAsKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkpCiAgICAoc2xpY2UgLiAsKGRvYy12aWV3LWN1 cnJlbnQtc2xpY2UpKSkpCgooZGVjbGFyZS1mdW5jdGlvbiBkZXNrdG9wLXJlc3RvcmUtZmlsZS1i dWZmZXIgImRlc2t0b3AiCiAgICAgICAgICAgICAgICAgIChidWZmZXItZmlsZW5hbWUgYnVmZmVy LW5hbWUgYnVmZmVyLW1pc2MpKQoKKGRlZnVuIGRvYy12aWV3LXJlc3RvcmUtZGVza3RvcC1idWZm ZXIgKGZpbGUgbmFtZSBtaXNjKQogIChsZXQgKChwYWdlICAoY2RyIChhc3NxICdwYWdlIG1pc2Mp KSkKCShzbGljZSAoY2RyIChhc3NxICdzbGljZSBtaXNjKSkpKQogICAgKGRlc2t0b3AtcmVzdG9y ZS1maWxlLWJ1ZmZlciBmaWxlIG5hbWUgbWlzYykKICAgIDs7IEZJWE1FOiBXZSBuZWVkIHRvIHJ1 biB0aGlzIGNvZGUgYWZ0ZXIgZGlzcGxheWluZyB0aGUgYnVmZmVyLgogICAgKHdpdGgtc2VsZWN0 ZWQtd2luZG93IChvciAoZ2V0LWJ1ZmZlci13aW5kb3cgKGN1cnJlbnQtYnVmZmVyKSAwKQoJCQkg ICAgICAoc2VsZWN0ZWQtd2luZG93KSkKICAgICAgOzsgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRv bmUgZm9yIGFsbCB3aW5kb3dzIHJlc3RvcmVkIHRoYXQgc2hvdwogICAgICA7OyB0aGlzIGJ1ZmZl ci4gIEJhc2ljYWxseSwgdGhlIHBhZ2Uvc2xpY2Ugc2hvdWxkIGJlIHNhdmVkIGFzCiAgICAgIDs7 IHdpbmRvdy1wYXJhbWV0ZXJzIGluIHRoZSB3aW5kb3ctc3RhdGUocykgYW5kIHRoZW4gcmVzdG9y aW5nIHRoaXMKICAgICAgOzsgd2luZG93LXN0YXRlIHNob3VsZCBjYWxsIHVzIGJhY2sgKHRvIGlu dGVycHJldC91c2UgdGhvc2UgcGFyYW1ldGVycykuCiAgICAgIChkb2Mtdmlldy1nb3RvLXBhZ2Ug cGFnZSkKICAgICAgKHdoZW4gc2xpY2UgKGFwcGx5ICMnZG9jLXZpZXctc2V0LXNsaWNlIHNsaWNl KSkKICAgICAgKGN1cnJlbnQtYnVmZmVyKSkpKQoKKGFkZC10by1saXN0ICdkZXNrdG9wLWJ1ZmZl ci1tb2RlLWhhbmRsZXJzCgkgICAgICcoZG9jLXZpZXctbW9kZSAuIGRvYy12aWV3LXJlc3RvcmUt ZGVza3RvcC1idWZmZXIpKQoKOzs7IyMjYXV0b2xvYWQKKGRlZnVuIGRvYy12aWV3LW1vZGUgKCkK ICAiTWFqb3IgbW9kZSBpbiBEb2NWaWV3IGJ1ZmZlcnMuCgpEb2NWaWV3IE1vZGUgaXMgYW4gRW1h Y3MgZG9jdW1lbnQgdmlld2VyLiAgSXQgZGlzcGxheXMgUERGLCBQUwphbmQgRFZJIGZpbGVzIChh cyBQTkcgaW1hZ2VzKSBpbiBFbWFjcyBidWZmZXJzLgoKWW91IGNhbiB1c2UgXFw8ZG9jLXZpZXct bW9kZS1tYXA+XFxbZG9jLXZpZXctdG9nZ2xlLWRpc3BsYXldIHRvCnRvZ2dsZSBiZXR3ZWVuIGRp c3BsYXlpbmcgdGhlIGRvY3VtZW50IG9yIGVkaXRpbmcgaXQgYXMgdGV4dC4KXFx7ZG9jLXZpZXct bW9kZS1tYXB9IgogIChpbnRlcmFjdGl2ZSkKCiAgKGlmICg9IChwb2ludC1taW4pIChwb2ludC1t YXgpKQogICAgICA7OyBUaGUgZG9jIGlzIGVtcHR5IG9yIGRvZXNuJ3QgZXhpc3QgYXQgYWxsLCBz byBmYWxsYmFjayB0bwogICAgICA7OyBhbm90aGVyIG1vZGUuICBXZSB1c2VkIHRvIGFsc28gY2hl Y2sgZmlsZS1leGlzdHMtcCwgYnV0IHRoaXMKICAgICAgOzsgcmV0dXJucyBuaWwgZm9yIHRhciBt ZW1iZXJzLgogICAgICAoZG9jLXZpZXctZmFsbGJhY2stbW9kZSkKCiAgICAobWFqb3ItbW9kZS1z dXNwZW5kKQoKICAgIChkb2xpc3QgKHZhciBkb2Mtdmlldy1zYXZlZC1zZXR0aW5ncykKICAgICAg KHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAoY2FyIHZhcikpIChjZHIgdmFyKSkpCgogICAgOzsg RmlndXJlIG91dCB0aGUgZG9jdW1lbnQgdHlwZS4KICAgICh1bmxlc3MgZG9jLXZpZXctZG9jLXR5 cGUKICAgICAgKGRvYy12aWV3LXNldC1kb2MtdHlwZSkpCiAgICAoZG9jLXZpZXctc2V0LXVwLXNp bmdsZS1jb252ZXJ0ZXIpCiAgICAodW5sZXNzIChtZW1xIGRvYy12aWV3LWRvYy10eXBlICcocHMp KQogICAgICAoc2V0cS1sb2NhbCByZXF1aXJlLWZpbmFsLW5ld2xpbmUgbmlsKSkKCiAgICA7OyBU aGVzZSBtb2RlcyB3aWxsIGp1c3QgZGlzcGxheSAiMSIsIHNvIHRoZXkncmUgbm90IHZlcnkgdXNl ZnVsCiAgICA7OyBpbiB0aGlzIG1vZGUuCiAgICAoc2V0cS1sb2NhbCBnbG9iYWwtbGludW0tbW9k ZSBuaWwKICAgICAgICAgICAgICAgIGRpc3BsYXktbGluZS1udW1iZXJzLW1vZGUgbmlsKQoKICAg IChkb2Mtdmlldy1tYWtlLXNhZmUtZGlyIGRvYy12aWV3LWNhY2hlLWRpcmVjdG9yeSkKICAgIDs7 IEhhbmRsZSBjb21wcmVzc2VkIGZpbGVzLCByZW1vdGUgZmlsZXMsIGZpbGVzIGluc2lkZSBhcmNo aXZlcwogICAgKHNldHEtbG9jYWwgZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUKCQkoY29udmVy dC1zdGFuZGFyZC1maWxlbmFtZQogICAgICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAg ICAgIChqa2EtY29tcHItcmVhbGx5LWRvLWNvbXByZXNzCiAgICAgICAgICAgICAgICAgICA7OyBG SVhNRTogdGhlcmUncyBhIHJpc2sgb2YgbmFtZSBjb25mbGljdHMgaGVyZS4KICAgICAgICAgICAg ICAgICAgIChleHBhbmQtZmlsZS1uYW1lCiAgICAgICAgICAgICAgICAgICAgKGZpbGUtbmFtZS1u b25kaXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgKGZpbGUtbmFtZS1zYW5zLWV4dGVuc2lv biBidWZmZXItZmlsZS1uYW1lKSkKICAgICAgICAgICAgICAgICAgICBkb2Mtdmlldy1jYWNoZS1k aXJlY3RvcnkpKQogICAgICAgICAgICAgICAgICA7OyBJcyB0aGUgZmlsZSByZWFkYWJsZSBieSBs b2NhbCBwcm9jZXNzZXM/CiAgICAgICAgICAgICAgICAgIDs7IFdlIHVzZWQgdG8gdXNlIGBmaWxl LXJlbW90ZS1wJyBidXQgaXQncyB1bmNsZWFyIHdoYXQgaXQncwogICAgICAgICAgICAgICAgICA7 OyBzdXBwb3NlZCB0byByZXR1cm4gbmlsIGZvciB0aGluZ3MgbGlrZSBsb2NhbCBmaWxlcyBhY2Nl c3NlZAogICAgICAgICAgICAgICAgICA7OyB2aWEgYHN1JyBvciB2aWEgZmlsZTovLy4uLgogICAg ICAgICAgICAgICAgICAoKGxldCAoKGZpbGUtbmFtZS1oYW5kbGVyLWFsaXN0IG5pbCkpCiAgICAg ICAgICAgICAgICAgICAgIChub3QgKGFuZCBidWZmZXItZmlsZS1uYW1lCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZmlsZS1yZWFkYWJsZS1wIGJ1ZmZlci1maWxlLW5hbWUpKSkpCiAg ICAgICAgICAgICAgICAgICA7OyBGSVhNRTogdGhlcmUncyBhIHJpc2sgb2YgbmFtZSBjb25mbGlj dHMgaGVyZS4KICAgICAgICAgICAgICAgICAgIChleHBhbmQtZmlsZS1uYW1lCiAgICAgICAgICAg ICAgICAgICAgKGlmIGJ1ZmZlci1maWxlLW5hbWUKCQkJKGZpbGUtbmFtZS1ub25kaXJlY3Rvcnkg YnVmZmVyLWZpbGUtbmFtZSkKICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItbmFtZSkpCiAg ICAgICAgICAgICAgICAgICAgZG9jLXZpZXctY2FjaGUtZGlyZWN0b3J5KSkKICAgICAgICAgICAg ICAgICAgKHQgYnVmZmVyLWZpbGUtbmFtZSkpKSkKICAgICh3aGVuIChub3QgKHN0cmluZz0gZG9j LXZpZXctLWJ1ZmZlci1maWxlLW5hbWUgYnVmZmVyLWZpbGUtbmFtZSkpCiAgICAgICh3cml0ZS1y ZWdpb24gbmlsIG5pbCBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZSkpCgogICAgKGFkZC1mdW5j dGlvbiA6YXJvdW5kIChsb2NhbCAncmV2ZXJ0LWJ1ZmZlci1mdW5jdGlvbikgIydkb2Mtdmlldy0t cmV2ZXJ0LWJ1ZmZlcikKCiAgICAoYWRkLWhvb2sgJ2NoYW5nZS1tYWpvci1tb2RlLWhvb2sKCSAg ICAgIChsYW1iZGEgKCkKCQkoZG9jLXZpZXcta2lsbC1wcm9jKQoJCShyZW1vdmUtb3ZlcmxheXMg KHBvaW50LW1pbikgKHBvaW50LW1heCkgJ2RvYy12aWV3IHQpKQoJICAgICAgbmlsIHQpCiAgICAo YWRkLWhvb2sgJ2Nsb25lLWluZGlyZWN0LWJ1ZmZlci1ob29rICMnZG9jLXZpZXctY2xvbmUtYnVm ZmVyLWhvb2sgbmlsIHQpCiAgICAoYWRkLWhvb2sgJ2tpbGwtYnVmZmVyLWhvb2sgIydkb2Mtdmll dy1raWxsLXByb2MgbmlsIHQpCiAgICAoc2V0cS1sb2NhbCBkZXNrdG9wLXNhdmUtYnVmZmVyICMn ZG9jLXZpZXctZGVza3RvcC1zYXZlLWJ1ZmZlcikKCiAgICAocmVtb3ZlLW92ZXJsYXlzIChwb2lu dC1taW4pIChwb2ludC1tYXgpICdkb2MtdmlldyB0KSA7SnVzdCBpbiBjYXNlLgogICAgOzsgS2Vl cCB0cmFjayBvZiBkaXNwbGF5IGluZm8gKFt2aF1zY3JvbGwsIHBhZ2UgbnVtYmVyLCBvdmVybGF5 LAogICAgOzsgLi4uKSAgZm9yIGVhY2ggd2luZG93IGluIHdoaWNoIHRoaXMgZG9jdW1lbnQgaXMg c2hvd24uCiAgICAoYWRkLWhvb2sgJ2ltYWdlLW1vZGUtbmV3LXdpbmRvdy1mdW5jdGlvbnMKCSAg ICAgICMnZG9jLXZpZXctbmV3LXdpbmRvdy1mdW5jdGlvbiBuaWwgdCkKICAgIChpbWFnZS1tb2Rl LXNldHVwLXdpbnByb3BzKQoKICAgIChzZXRxLWxvY2FsIG1vZGUtbGluZS1wb3NpdGlvbgogICAg ICAgICAgICAgICAgJygiIFAiICg6ZXZhbCAobnVtYmVyLXRvLXN0cmluZyAoZG9jLXZpZXctY3Vy cmVudC1wYWdlKSkpCiAgICAgICAgICAgICAgICAgICIvIiAoOmV2YWwgKG51bWJlci10by1zdHJp bmcgKGRvYy12aWV3LWxhc3QtcGFnZS1udW1iZXIpKSkpKQogICAgOzsgRG9uJ3Qgc2Nyb2xsIHVu bGVzcyB0aGUgdXNlciBzcGVjaWZpY2FsbHkgYXNrZWQgZm9yIGl0LgogICAgKHNldHEtbG9jYWwg YXV0by1oc2Nyb2xsLW1vZGUgbmlsKQogICAgKGlmIChib3VuZHAgJ213aGVlbC1zY3JvbGwtdXAt ZnVuY3Rpb24pIDsgbm90IC0td2l0aG91dC14IGJ1aWxkCiAgICAgICAgKHNldHEtbG9jYWwgbXdo ZWVsLXNjcm9sbC11cC1mdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICMnZG9jLXZpZXctc2Ny b2xsLXVwLW9yLW5leHQtcGFnZSkpCiAgICAoaWYgKGJvdW5kcCAnbXdoZWVsLXNjcm9sbC1kb3du LWZ1bmN0aW9uKQogICAgICAgIChzZXRxLWxvY2FsIG13aGVlbC1zY3JvbGwtZG93bi1mdW5jdGlv bgogICAgICAgICAgICAgICAgICAgICMnZG9jLXZpZXctc2Nyb2xsLWRvd24tb3ItcHJldmlvdXMt cGFnZSkpCiAgICAoc2V0cS1sb2NhbCBjdXJzb3ItdHlwZSBuaWwpCiAgICAodXNlLWxvY2FsLW1h cCBkb2Mtdmlldy1tb2RlLW1hcCkKICAgIChhZGQtaG9vayAnYWZ0ZXItcmV2ZXJ0LWhvb2sgIydk b2Mtdmlldy1yZWNvbnZlcnQtZG9jIG5pbCB0KQogICAgKHNldHEtbG9jYWwgYm9va21hcmstbWFr ZS1yZWNvcmQtZnVuY3Rpb24KICAgICAgICAgICAgICAgICMnZG9jLXZpZXctYm9va21hcmstbWFr ZS1yZWNvcmQpCiAgICAoc2V0cSBtb2RlLW5hbWUgIkRvY1ZpZXciCgkgIGJ1ZmZlci1yZWFkLW9u bHkgdAoJICBtYWpvci1tb2RlICdkb2Mtdmlldy1tb2RlKQogICAgKGRvYy12aWV3LWluaXRpYXRl LWRpc3BsYXkpCiAgICA7OyBTd2l0Y2ggb2ZmIHZpZXctbW9kZSBleHBsaWNpdGx5LCBiZWNhdXNl IGRvYy12aWV3LW1vZGUgaXMgdGhlCiAgICA7OyBjYW5vbmljYWwgdmlldyBtb2RlIGZvciBQREYv UFMvRFZJIGZpbGVzLiAgVGhpcyBjb3VsZCBiZQogICAgOzsgc3dpdGNoZWQgb24gYXV0b21hdGlj YWxseSBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mCiAgICA7OyBgdmlldy1yZWFkLW9ubHknLgog ICAgKHNldHEtbG9jYWwgdmlldy1yZWFkLW9ubHkgbmlsKQogICAgKHJ1bi1tb2RlLWhvb2tzICdk b2Mtdmlldy1tb2RlLWhvb2spKSkKCihkZWZ1biBkb2Mtdmlldy1mYWxsYmFjay1tb2RlICgpCiAg IkZhbGxiYWNrIHRvIHRoZSBwcmV2aW91cyBvciBuZXh0IGJlc3QgbWFqb3IgbW9kZS4iCiAgKGxl dCAoKHZhcnMgKGlmIChkZXJpdmVkLW1vZGUtcCAnZG9jLXZpZXctbW9kZSkKICAgICAgICAgICAg ICAgICAgKG1hcGNhciAobGFtYmRhICh2YXIpIChjb25zIHZhciAoc3ltYm9sLXZhbHVlIHZhcikp KQogICAgICAgICAgICAgICAgICAgICAgICAgICcoZG9jLXZpZXctcmVzb2x1dGlvbgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW1hZ2UtbW9kZS13aW5wcm9wcy1hbGlzdCkpKSkpCiAgICAo cmVtb3ZlLW92ZXJsYXlzIChwb2ludC1taW4pIChwb2ludC1tYXgpICdkb2MtdmlldyB0KQogICAg KG1ham9yLW1vZGUtcmVzdG9yZSAnKGRvYy12aWV3LW1vZGUtbWF5YmUgZG9jLXZpZXctbW9kZSkp CiAgICAod2hlbiB2YXJzCiAgICAgIChzZXRxLWxvY2FsIGRvYy12aWV3LXNhdmVkLXNldHRpbmdz IHZhcnMpKSkpCgo7OzsjIyNhdXRvbG9hZAooZGVmdW4gZG9jLXZpZXctbW9kZS1tYXliZSAoKQog ICJTd2l0Y2ggdG8gYGRvYy12aWV3LW1vZGUnIGlmIHBvc3NpYmxlLgpJZiB0aGUgcmVxdWlyZWQg ZXh0ZXJuYWwgdG9vbHMgYXJlIG5vdCBhdmFpbGFibGUsIHRoZW4gZmFsbGJhY2sKdG8gdGhlIG5l eHQgYmVzdCBtb2RlLiIKICAoY29uZGl0aW9uLWNhc2UgbmlsCiAgICAgIChkb2Mtdmlldy1zZXQt ZG9jLXR5cGUpCiAgICAoZXJyb3IgKGRvYy12aWV3LWZhbGxiYWNrLW1vZGUpKSkKICAoaWYgKGRv Yy12aWV3LW1vZGUtcCBkb2Mtdmlldy1kb2MtdHlwZSkKICAgICAgKGRvYy12aWV3LW1vZGUpCiAg ICAoZG9jLXZpZXctZmFsbGJhY2stbW9kZSkpKQoKOzs7IyMjYXV0b2xvYWQKKGRlZmluZS1taW5v ci1tb2RlIGRvYy12aWV3LW1pbm9yLW1vZGUKICAiVG9nZ2xlIGRpc3BsYXlpbmcgYnVmZmVyIHZp YSBEb2MgVmlldyAoRG9jIFZpZXcgbWlub3IgbW9kZSkuCgpTZWUgdGhlIGNvbW1hbmQgYGRvYy12 aWV3LW1vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgbW9kZS4iCiAgOmxpZ2h0ZXIg IiBEb2NWaWV3IgogICh3aGVuIGRvYy12aWV3LW1pbm9yLW1vZGUKICAgIChhZGQtaG9vayAnY2hh bmdlLW1ham9yLW1vZGUtaG9vayAobGFtYmRhICgpIChkb2Mtdmlldy1taW5vci1tb2RlIC0xKSkg bmlsIHQpCiAgICAobWVzc2FnZQogICAgICIlcyIKICAgICAoc3Vic3RpdHV0ZS1jb21tYW5kLWtl eXMKICAgICAgIlR5cGUgXFxbZG9jLXZpZXctdG9nZ2xlLWRpc3BsYXldIHRvIHRvZ2dsZSBiZXR3 ZWVuIGVkaXRpbmcgb3Igdmlld2luZyB0aGUgZG9jdW1lbnQuIikpKSkKCihkZWZ1biBkb2Mtdmll dy1jbGVhci1jYWNoZSAoKQogICJEZWxldGUgdGhlIHdob2xlIGNhY2hlIChgZG9jLXZpZXctY2Fj aGUtZGlyZWN0b3J5JykuIgogIChpbnRlcmFjdGl2ZSkKICAoZGlyZWQtZGVsZXRlLWZpbGUgZG9j LXZpZXctY2FjaGUtZGlyZWN0b3J5ICdhbHdheXMpKQoKKGRlZnVuIGRvYy12aWV3LWRpcmVkLWNh Y2hlICgpCiAgIk9wZW4gYGRpcmVkJyBpbiBgZG9jLXZpZXctY2FjaGUtZGlyZWN0b3J5Jy4iCiAg KGludGVyYWN0aXZlKQogIChkaXJlZCBkb2Mtdmlldy1jYWNoZS1kaXJlY3RvcnkpKQoKOzs7OyBQ cmVzZW50YXRpb24gbW9kZQoKKGRlZnZhciBkb2Mtdmlldy1wcmVzZW50YXRpb24tbW9kZS1tYXAK ICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKICAgIChkZWZpbmUta2V5IG1hcCAi XGUiICdkb2Mtdmlldy1wcmVzZW50YXRpb24tZXhpdCkKICAgIChkZWZpbmUta2V5IG1hcCAicSIg J2RvYy12aWV3LXByZXNlbnRhdGlvbi1leGl0KQogICAgOzsgKGRlZmluZS1rZXkgbWFwICJDIiAn ZG9jLXZpZXctY29udmVydC1hbGwtcGFnZXMpCiAgICBtYXApKQoKKGRlZnZhci1sb2NhbCBkb2Mt dmlldy1wcmVzZW50YXRpb24tLXNyYy1kYXRhIG5pbCkKCihkZWZ1biBkb2Mtdmlldy1wcmVzZW50 YXRpb24tZXhpdCAoKQogICJMZWF2ZSBEb2MtVmlldydzIHByZXNlbnRhdGlvbiBtb2RlLiIKICAo aW50ZXJhY3RpdmUpCiAgKGRvYy12aWV3LXByZXNlbnRhdGlvbi1tb2RlIC0xKSkKCihkZWZpbmUt bWlub3ItbW9kZSBkb2Mtdmlldy1wcmVzZW50YXRpb24tbW9kZQogICJNaW5vciBtb2RlIHVzZWQg d2hpbGUgaW4gcHJlc2VudGF0aW9uIG1vZGUuIgogIDppbml0LXZhbHVlIG5pbCA6a2V5bWFwIGRv Yy12aWV3LXByZXNlbnRhdGlvbi1tb2RlLW1hcAogIChpZiBkb2Mtdmlldy1wcmVzZW50YXRpb24t bW9kZQogICAgICAocHJvZ24KICAgICAgICAoc2V0cS1sb2NhbCBtb2RlLWxpbmUtZm9ybWF0IG5p bCkKICAgICAgICAoZG9jLXZpZXctZml0LXBhZ2UtdG8td2luZG93KQogICAgICAgIDs7IChkb2Mt dmlldy1jb252ZXJ0LWFsbC1wYWdlcykKICAgICAgICApCiAgICAoa2lsbC1sb2NhbC12YXJpYWJs ZSAnbW9kZS1saW5lLWZvcm1hdCkKICAgIChsZXQgKChwbiAoZG9jLXZpZXctY3VycmVudC1wYWdl KSkKICAgICAgICAgICh3aW4gKHNlbGVjdGVkLXdpbmRvdykpKQogICAgICAoZG9jLXZpZXctcHJl c2VudGF0aW9uLS1wcm9wYWdhdGUtcG4gZG9jLXZpZXctcHJlc2VudGF0aW9uLS1zcmMtZGF0YSBw bikKICAgICAgKHNldHEgZG9jLXZpZXctcHJlc2VudGF0aW9uLS1zcmMtZGF0YSBuaWwpCiAgICAg ICh3aXRoLXNlbGVjdGVkLXdpbmRvdyB3aW4KICAgICAgICAoaWYgKGFuZCAob25lLXdpbmRvdy1w KSAod2luZG93LWRlZGljYXRlZC1wKSkKICAgICAgICAgICAgKGRlbGV0ZS1mcmFtZSkpKSkpKQoK KGRlZnVuIGRvYy12aWV3LXByZXNlbnRhdGlvbi0tcHJvcGFnYXRlLXBuIChzcmMtZGF0YSBwbikK ICAod2hlbiBzcmMtZGF0YQogICAgKGxldCAoKHdpbiAoY2FyIHNyYy1kYXRhKSkpCiAgICAgICh3 aGVuIChhbmQgKHdpbmRvdy1saXZlLXAgd2luKQogICAgICAgICAgICAgICAgIChlcSAoY3VycmVu dC1idWZmZXIpICh3aW5kb3ctYnVmZmVyIHdpbikpKQogICAgICAgIChzZWxlY3Qtd2luZG93IHdp bikpCiAgICAgICh3aGVuIChlcSAoZG9jLXZpZXctY3VycmVudC1wYWdlKSAoY2RyIHNyYy1kYXRh KSkKICAgICAgICAoZG9jLXZpZXctZ290by1wYWdlIHBuKSkpKSkKCihkZWZ1biBkb2Mtdmlldy1w cmVzZW50YXRpb24gKCkKICAiUHV0IERvYy1WaWV3IGluIHByZXNlbnRhdGlvbiBtb2RlLiIKICAo aW50ZXJhY3RpdmUpCiAgKGxldCogKChzcmMtZGF0YSAoY29ucyAoc2VsZWN0ZWQtd2luZG93KSAo ZG9jLXZpZXctY3VycmVudC1wYWdlKSkpCiAgICAgICAgIChtYWwgKGRpc3BsYXktbW9uaXRvci1h dHRyaWJ1dGVzLWxpc3QpKQogICAgICAgICAobW9uaXRvci10b3AgMCkKICAgICAgICAgKG1vbml0 b3ItbGVmdCAwKQogICAgICAgICAobW9uaXRvci1oZWlnaHQgKGRpc3BsYXktcGl4ZWwtaGVpZ2h0 KSkKICAgICAgICAgKG1vbml0b3Itd2lkdGggKGRpc3BsYXktcGl4ZWwtd2lkdGgpKSkKICAgIChk b2xpc3QgKGF0dHJzIG1hbCkKICAgICAgKHdoZW4gKG1lbXEgKHNlbGVjdGVkLWZyYW1lKSAoYWxp c3QtZ2V0ICdmcmFtZXMgYXR0cnMpKQogICAgICAgIChsZXQgKChnZW9tIChhbGlzdC1nZXQgJ2dl b21ldHJ5IGF0dHJzKSkpCiAgICAgICAgICAod2hlbiBnZW9tCiAgICAgICAgICAgIChzZXRxIG1v bml0b3ItbGVmdCAobnRoIDAgZ2VvbSkpCiAgICAgICAgICAgIChzZXRxIG1vbml0b3ItdG9wIChu dGggMSBnZW9tKSkKICAgICAgICAgICAgKHNldHEgbW9uaXRvci13aWR0aCAobnRoIDIgZ2VvbSkp CiAgICAgICAgICAgIChzZXRxIG1vbml0b3ItaGVpZ2h0IChudGggMyBnZW9tKSkpKSkpCiAgICAo bGV0ICgoZnJhbWUgKG1ha2UtZnJhbWUKICAgICAgICAgICAgICAgICAgYCgobWluaWJ1ZmZlciAu IG5pbCkKICAgICAgICAgICAgICAgICAgICAoZnVsbHNjcmVlbiAuIGZ1bGxib3RoKQogICAgICAg ICAgICAgICAgICAgIChoZWlnaHQgLiAsKGNlaWxpbmcgbW9uaXRvci1oZWlnaHQgKGZyYW1lLWNo YXItaGVpZ2h0KSkpCiAgICAgICAgICAgICAgICAgICAgOzsgRG9uJ3QgdXNlIGBjZWlsaW5nJyBo ZXJlIHNpbmNlIGRvYy12aWV3IHdpbGwgY2VudGVyIHRoZQogICAgICAgICAgICAgICAgICAgIDs7 IGltYWdlIGluc3RlYWQuCiAgICAgICAgICAgICAgICAgICAgKHdpZHRoIC4gLChjZWlsaW5nIG1v bml0b3Itd2lkdGggKGZyYW1lLWNoYXItd2lkdGgpKSkKICAgICAgICAgICAgICAgICAgICAobmFt ZSAuICJEb2MtVmlldy1QcmVzZW50YXRpb24iKQogICAgICAgICAgICAgICAgICAgICh0b3AgLiAs bW9uaXRvci10b3ApIChsZWZ0IC4gLG1vbml0b3ItbGVmdCkgKHVzZXItcG9zaXRpb24gLiB0KQog ICAgICAgICAgICAgICAgICAgICh2ZXJ0aWNhbC1zY3JvbGwtYmFycyAuIG5pbCkKICAgICAgICAg ICAgICAgICAgICAobGVmdC1mcmluZ2UgLiAwKSAocmlnaHQtZnJpbmdlIC4gMCkKICAgICAgICAg ICAgICAgICAgICAobWVudS1iYXItbGluZXMgLiAwKQogICAgICAgICAgICAgICAgICAgICh0b29s LWJhci1saW5lcyAuIDApKSkpKQogICAgICAoc2VsZWN0LXdpbmRvdyAoZnJhbWUtcm9vdC13aW5k b3cgZnJhbWUpKQogICAgICAoc2V0cSBkb2Mtdmlldy1wcmVzZW50YXRpb24tLXNyYy1kYXRhIHNy Yy1kYXRhKQogICAgICAoc2V0LXdpbmRvdy1kZWRpY2F0ZWQtcCAoc2VsZWN0ZWQtd2luZG93KSB0 KQogICAgICAoZG9jLXZpZXctcHJlc2VudGF0aW9uLW1vZGUgMSkpKSkKCgo7Ozs7IEJvb2ttYXJr IGludGVncmF0aW9uCgooZGVjbGFyZS1mdW5jdGlvbiBib29rbWFyay1tYWtlLXJlY29yZC1kZWZh dWx0CiAgICAgICAgICAgICAgICAgICJib29rbWFyayIgKCZvcHRpb25hbCBuby1maWxlIG5vLWNv bnRleHQgcG9zbikpCihkZWNsYXJlLWZ1bmN0aW9uIGJvb2ttYXJrLXByb3AtZ2V0ICJib29rbWFy ayIgKGJvb2ttYXJrIHByb3ApKQooZGVjbGFyZS1mdW5jdGlvbiBib29rbWFyay1kZWZhdWx0LWhh bmRsZXIgImJvb2ttYXJrIiAoYm1rKSkKCihkZWZ1biBkb2Mtdmlldy1ib29rbWFyay1tYWtlLXJl Y29yZCAoKQogIChuY29uYyAoYm9va21hcmstbWFrZS1yZWNvcmQtZGVmYXVsdCkKICAgICAgICAg YCgocGFnZSAgICAgLiAsKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkpCiAgICAgICAgICAgKGhhbmRs ZXIgIC4gZG9jLXZpZXctYm9va21hcmstanVtcCkpKSkKCjs7OyMjI2F1dG9sb2FkCihkZWZ1biBk b2Mtdmlldy1ib29rbWFyay1qdW1wIChibWspCiAgOzsgVGhpcyBpbXBsZW1lbnRzIHRoZSBgaGFu ZGxlcicgZnVuY3Rpb24gaW50ZXJmYWNlIGZvciByZWNvcmQgdHlwZQogIDs7IHJldHVybmVkIGJ5 IGBkb2Mtdmlldy1ib29rbWFyay1tYWtlLXJlY29yZCcsIHdoaWNoIHNlZS4KICAobGV0ICgocGFn ZSAoYm9va21hcmstcHJvcC1nZXQgYm1rICdwYWdlKSkKCShzaG93LWZuLXN5bSAobWFrZS1zeW1i b2wgImRvYy12aWV3LWJvb2ttYXJrLWFmdGVyLWp1bXAtaG9vayIpKSkKICAgIChmc2V0IHNob3ct Zm4tc3ltCgkgIChsYW1iZGEgKCkKCSAgICAocmVtb3ZlLWhvb2sgJ2Jvb2ttYXJrLWFmdGVyLWp1 bXAtaG9vayBzaG93LWZuLXN5bSkKCSAgICAod2hlbiAobm90IChlcSBtYWpvci1tb2RlICdkb2Mt dmlldy1tb2RlKSkKCSAgICAgIChkb2Mtdmlldy10b2dnbGUtZGlzcGxheSkpCgkgICAgKHdpdGgt c2VsZWN0ZWQtd2luZG93CgkJKG9yIChnZXQtYnVmZmVyLXdpbmRvdyAoY3VycmVudC1idWZmZXIp IDApCgkJICAgIChzZWxlY3RlZC13aW5kb3cpKQoJICAgICAgKGRvYy12aWV3LWdvdG8tcGFnZSBw YWdlKSkpKQogICAgKGFkZC1ob29rICdib29rbWFyay1hZnRlci1qdW1wLWhvb2sgc2hvdy1mbi1z eW0pCiAgICAoYm9va21hcmstZGVmYXVsdC1oYW5kbGVyIGJtaykpKQoKKHB1dCAnZG9jLXZpZXct Ym9va21hcmstanVtcCAnYm9va21hcmstaGFuZGxlci10eXBlICJEb2N2aWV3IikKCjs7IE9ic29s ZXRlLgoKKGRlZnVuIGRvYy12aWV3LWludGVyc2VjdGlvbiAobDEgbDIpCiAgKGRlY2xhcmUgKG9i c29sZXRlIHNlcS1pbnRlcnNlY3Rpb24gIjI4LjEiKSkKICAobnJldmVyc2UgKHNlcS1pbnRlcnNl Y3Rpb24gbDEgbDIgIydlcSkpKQoKKHByb3ZpZGUgJ2RvYy12aWV3KQoKOzsgTG9jYWwgVmFyaWFi bGVzOgo7OyBldmFsOiAob3V0bGluZS1taW5vci1tb2RlIDEpCjs7IEVuZDoKCjs7OyBkb2Mtdmll dy5lbCBlbmRzIGhlcmUK --00000000000081f36705dde03d39--