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: {PATCH] continuous scroll for doc-view (FOR REVIEW)) Date: Fri, 14 Jan 2022 11:44:57 +0100 Message-ID: References: <86a6fypz3p.fsf@mail.linkov.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="00000000000036e68205d5887f58" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="12186"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Emacs Devel To: Juri Linkov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Jan 14 11:58:23 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 1n8KHm-0002tB-PE for ged-emacs-devel@m.gmane-mx.org; Fri, 14 Jan 2022 11:58:23 +0100 Original-Received: from localhost ([::1]:40246 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n8KHl-000659-R9 for ged-emacs-devel@m.gmane-mx.org; Fri, 14 Jan 2022 05:58:21 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:34446) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n8K5C-0006ox-1q for emacs-devel@gnu.org; Fri, 14 Jan 2022 05:45:27 -0500 Original-Received: from [2607:f8b0:4864:20::931] (port=37713 helo=mail-ua1-x931.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1n8K54-0000Jk-HR for emacs-devel@gnu.org; Fri, 14 Jan 2022 05:45:21 -0500 Original-Received: by mail-ua1-x931.google.com with SMTP id o1so16210803uap.4 for ; Fri, 14 Jan 2022 02:45:10 -0800 (PST) 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 :cc; bh=K4J+DZo9b9MI3+i+UXXHkCQblIlEXUO4vxUrAqjE7bE=; b=i/eDTSY1DUJFJNp9TSQHLblxa43SxrlgCdAfYQtC6QxNc/VZwEay97U/LgZBW+r+7c SaO6v+dSmXgvA9Iei6GQ3rKsV3E09UayQHG0uPKT8nNiEhYY0mb362bqGZ/vvRXsjh6L /zHX+zlmcgPBEgOar1++GOlymWAky+DA3zWpBa53ShNosv5TP1XL4iYo6JEu9S2nfwf7 XPkHxcb3mx7C+h3zT/TzUxgtKUTnxmovaHviS/u1QdXORAiEh/B79mcNlnZzHuxRAey1 wLe/XVhzsxK3u2DJ/NvpKK5zThip9zw6KJuc/Da81OEgWtCBuM38cxgswljfvBPVG3tY /XUA== 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:cc; bh=K4J+DZo9b9MI3+i+UXXHkCQblIlEXUO4vxUrAqjE7bE=; b=6h+MylDemHnYMoNTZg53c9D/t9qykWdu8EpY9lIpNWd47oJzbbyGSszcaG/BdlKs1I viAg7E3OUrcN65ut1HG+pIbBQ//Bh4Y2zQjunmeR8rwQ5kL+2Un7WacH8oVCVymr9BJC IHEsBxh39X361xfDwp67kMmLT51zIvipaZaVP93+ZRHGA9kqV0w88BHWWujNhHmgOt2t jmpMHAwox1KPHrurczaqzIQ30lhuGRQ7SCwjXfKaXyfBaz8EgxyITjFdW+SHzW2QpO6g 7HbJ9mC2cuE/eDz4ki07Om2QvcY+iL3ZlfwOSqchiLTWBNdfpyTKjGE+rVqXu2nw2qOL BXdg== X-Gm-Message-State: AOAM530sgdYJHZthPIo9PonGd2MHvSmqbC99vo6OV4O4GaSMb33pVh1R CDB/bPWzlffXahmGucV356yrp2+Q4v3/KqPjMI/3a+UaOKk= X-Google-Smtp-Source: ABdhPJwSfq+gdapxqqsZwTPIJ35v/dJuuaXJjek05/A9Zsfdzchq+tydS1uTgqcYaO7HQu53X4wzjN0te4CBQ2Mqcww= X-Received: by 2002:a05:6102:3f56:: with SMTP id l22mr3714587vsv.20.1642157110108; Fri, 14 Jan 2022 02:45:10 -0800 (PST) In-Reply-To: <86a6fypz3p.fsf@mail.linkov.net> X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::931 (failed) Received-SPF: pass client-ip=2607:f8b0:4864:20::931; envelope-from=dalanicolai@gmail.com; helo=mail-ua1-x931.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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:284739 Archived-At: --00000000000036e68205d5887f58 Content-Type: multipart/alternative; boundary="00000000000036e67f05d5887f56" --00000000000036e67f05d5887f56 Content-Type: text/plain; charset="UTF-8" > > Thanks, if you want you could attach whole files, because program files > take almost no space on mailing list archives, so this is not a problem > (the problem is when someone posts large screenshots, and even a video). > I wanted to do that already... terrible how in the end I did forget to attach the files... > If it could be used for other images such as for image galleries, > then it should be a separate package like image-mode. > Well, I think I really wouldn't want continuous scroll for images. So I think a separate library for image galleries would be better. I think the logic for only showing full images is a slightly simpler and therefore could be made more flexible. Creating the overlays is really just a few lines. But I am not sure, how exactly the code for an image gallery should look like. Maybe in the end, some code could be shared. A triplet or a doublet means that the scroll bar can't be used for > scrolling all pages? Have you tried to prefill with overlays for all > pages? > Yes, like in the Proof of Concept, all overlays are inserted at once, but they are 'triplet' only showing a triplet of images at the time. So the full buffer can be scrolled with the mouse/scroll-bar, but for some reason updating the images in that case does not seem to work yet (although from the code I would expect it should). Anyway, This time I'll send the message including the attachments... you can have a look (see first message for instructions, if necessary). On Fri, 14 Jan 2022 at 09:19, Juri Linkov wrote: > > I'd really like to mention that I get no hits when searching for that > > thread (actually searching > > for 'the original thread') when searching on `multi image PDF` in the > Emacs > > devel archive. > > (This time) it is not due to too many results. Would be great if you > could > > inform me why that does not work. > > Trying to search any recent subject shows that indexing on mailing lists > was disabled for a few last months. > > > So I will attach two files here, the first is an 'adapted' bookroll.el > > file, and the second is a > > a modified doc-view file that implements the first 'rudimentary' > continuous > > scroll for PDF > > documents(despite the subject title of this message, I am simply > attaching > > the file, > > as you can then more simply load and try it, while I guess you must be > > capable of diffing it with > > the latest doc-view.el file yourself ;). > > Thanks, if you want you could attach whole files, because program files > take almost no space on mailing list archives, so this is not a problem > (the problem is when someone posts large screenshots, and even a video). > > Or you can just make a copy of doc-view.el in your repository, > and send a message when you update it. > > > I am not sure if the bookroll-mode should be a separate package (like > image-mode), > > or that it could just get merged into doc-view. But it is as it is for > the > > development process. > > If it could be used for other images such as for image galleries, > then it should be a separate package like image-mode. > > > To understand the approach of bookmark.el, it is probably most useful to > > look at the Proof > > of Concept file to which I have linked already above. It simply draws a > > triplet of images (pages) > > for each page (and a doublet for the first and last pages), and then it > > uses a 'currently-displayed-images' list, and refreshes pages when > > necessary by comparing with that list. The current page is the page that > > takes more than half of the window height. > > A triplet or a doublet means that the scroll bar can't be used for > scrolling all pages? Have you tried to prefill with overlays for all > pages? > --00000000000036e67f05d5887f56 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Tha= nks, if you want you could attach whole files, because program files
take almost no space on mailing list archives, so this is not a problem
(the problem is when someone posts large screenshots, and even a video).

I wanted to do that already... terrible= how in the end I did forget to attach the files...
=C2=A0
If it could be used f= or other images such as for image galleries,
then it should be a separate package like image-mode.

Well, I think I really would= n't want continuous scroll for images. So I think a separate
= library for image galleries would be better. I think the logic for only sho= wing full images
is a slightly simpler and therefore could be mad= e more flexible. Creating the overlays is
really just a few lines= . But I am not sure, how exactly the code for an image gallery
sh= ould look like. Maybe in the end, some code could be shared.

=
A triplet= or a doublet means that the scroll bar can't be used for
scrolling all pages?=C2=A0 Have you tried to prefill with overlays for all = pages?

Yes, like in the Proof o= f Concept, all overlays are inserted at once, but they are 'triplet'= ;
only showing a triplet of images at the time. So the full buffe= r can be scrolled with the
mouse/scroll-bar, but for some reason = updating the images in that case does not seem
to work yet (altho= ugh from the code I would expect it should).

Anywa= y, This time I'll send the message including the attachments... you can= have a look
(see first message for instructions, if necessary).<= br>


On Fri, 14 Jan 2022 at 09:19, Juri Linkov <juri@linkov.net> wrote:
> I'd really like to me= ntion that I get no hits when searching for that
> thread (actually searching
> for 'the original thread') when searching on `multi image PDF`= in the Emacs
> devel archive.
> (This time) it is not due to too many results. Would be great if you c= ould
> inform me why that does not work.

Trying to search any recent subject shows that indexing on mailing lists was disabled for a few last months.

> So I will attach two files here, the first is an 'adapted' boo= kroll.el
> file, and the second is a
> a modified doc-view file that implements the first 'rudimentary= 9; continuous
> scroll for PDF
> documents(despite the subject title of this message, I am simply attac= hing
> the file,
> as you can then more simply load and try it, while I guess you must be=
> capable of diffing it with
> the latest doc-view.el file yourself ;).

Thanks, if you want you could attach whole files, because program files
take almost no space on mailing list archives, so this is not a problem
(the problem is when someone posts large screenshots, and even a video).
Or you can just make a copy of doc-view.el in your repository,
and send a message when you update it.

> I am not sure if the bookroll-mode should be a separate package (like = image-mode),
> or that it could just get merged into doc-view. But it is as it is for= the
> development process.

If it could be used for other images such as for image galleries,
then it should be a separate package like image-mode.

> To understand the approach of bookmark.el, it is probably most useful = to
> look at the Proof
> of Concept file to which I have linked already above. It simply draws = a
> triplet of images (pages)
> for each page (and a doublet for the first and last pages), and then i= t
> uses a 'currently-displayed-images' list, and refreshes pages = when
> necessary by comparing with that list. The current page is the page th= at
> takes more than half of the window height.

A triplet or a doublet means that the scroll bar can't be used for
scrolling all pages?=C2=A0 Have you tried to prefill with overlays for all = pages?
--00000000000036e67f05d5887f56-- --00000000000036e68205d5887f58 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_kye9f2891 Ozs7IGRvYy12aWV3LmVsIC0tLSBEb2N1bWVudCB2aWV3ZXIgZm9yIEVtYWNzIC0qLSBsZXhpY2Fs LWJpbmRpbmc6IHQgLSotCgo7OyBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KOzsKOzsgQXV0aG9yOiBUYXNzaWxvIEhvcm4gPHRzZGhAZ251Lm9y Zz4KOzsgS2V5d29yZHM6IGZpbGVzLCBwZGYsIHBzLCBkdmkKCjs7IFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIEdOVSBFbWFjcy4KCjs7IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cjs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cjs7IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCjs7 IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgo7OyBHTlUgRW1hY3MgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKOzsgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKOzsg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKOzsg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKOzs7IFJlcXVpcmVtZW50czoKCjs7IFZpZXdpbmcgUFMv UERGL0RWSSBmaWxlcyByZXF1aXJlcyBHaG9zdHNjcmlwdCwgYGR2aXBkZicgKGNvbWVzIHdpdGgK OzsgR2hvc3RzY3JpcHQpIG9yIGBkdmlwZGZtJyAoY29tZXMgd2l0aCB0ZVRlWCBvciBUZVhMaXZl KSBhbmQKOzsgYHBkZnRvdGV4dCcsIHdoaWNoIGNvbWVzIHdpdGggeHBkZiAoaHR0cHM6Ly93d3cu Zm9vbGFicy5jb20veHBkZi8pCjs7IG9yIHBvcHBsZXIgKGh0dHBzOi8vcG9wcGxlci5mcmVlZGVz a3RvcC5vcmcvKS4KOzsgRGp2dSBkb2N1bWVudHMgcmVxdWlyZSBgZGRqdnUnIChmcm9tIERqVnVM aWJyZSkuCjs7IE9ERiBmaWxlcyByZXF1aXJlIGBzb2ZmaWNlJyAoZnJvbSBMaWJyZU9mZmljZSku Cgo7OzsgQ29tbWVudGFyeToKCjs7IERvY1ZpZXcgaXMgYSBkb2N1bWVudCB2aWV3ZXIgZm9yIEVt YWNzLiAgSXQgY29udmVydHMgYSBudW1iZXIgb2YKOzsgZG9jdW1lbnQgZm9ybWF0cyAoaW5jbHVk aW5nIFBERiwgUFMsIERWSSwgRGp2dSBhbmQgT0RGIGZpbGVzKSB0byBhCjs7IHNldCBvZiBQTkcg ZmlsZXMsIG9uZSBQTkcgZm9yIGVhY2ggcGFnZSwgYW5kIGRpc3BsYXlzIHRoZSBQTkcKOzsgaW1h Z2VzIGluc2lkZSBhbiBFbWFjcyBidWZmZXIuICBUaGlzIGJ1ZmZlciB1c2VzIGBkb2Mtdmlldy1t b2RlJwo7OyB3aGljaCBwcm92aWRlcyBjb252ZW5pZW50IGtleSBiaW5kaW5ncyBmb3IgYnJvd3Np bmcgdGhlIGRvY3VtZW50Lgo7Owo7OyBUbyB1c2UgaXQgc2ltcGx5IG9wZW4gYSBkb2N1bWVudCBm aWxlIHdpdGgKOzsKOzsgICAgIEMteCBDLWYgfi9wYXRoL3RvL2RvY3VtZW50IFJFVAo7Owo7OyBh bmQgdGhlIGRvY3VtZW50IHdpbGwgYmUgY29udmVydGVkIGFuZCBkaXNwbGF5ZWQsIGlmIHlvdXIg RW1hY3Mgc3VwcG9ydHMgUE5HCjs7IGltYWdlcy4gIFdpdGggYEMtYyBDLWMnIHlvdSBjYW4gdG9n Z2xlIGJldHdlZW4gdGhlIHJlbmRlcmVkIGltYWdlcwo7OyByZXByZXNlbnRhdGlvbiBhbmQgdGhl IHNvdXJjZSB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkb2N1bWVudC4KOzsKOzsgU2luY2Ug Y29udmVyc2lvbiBtYXkgdGFrZSBzb21lIHRpbWUgYWxsIHRoZSBQTkcgaW1hZ2VzIGFyZSBjYWNo ZWQgaW4gYQo7OyBzdWJkaXJlY3Rvcnkgb2YgYGRvYy12aWV3LWNhY2hlLWRpcmVjdG9yeScgYW5k IHJldXNlZCB3aGVuIHlvdSB3YW50IHRvIHZpZXcKOzsgdGhhdCBmaWxlIGFnYWluLiAgVG8gcmVj b252ZXJ0IGEgZG9jdW1lbnQgaGl0IGBnJyAoYGRvYy12aWV3LXJlY29udmVydC1kb2MnKQo7OyB3 aGVuIGRpc3BsYXlpbmcgdGhlIGRvY3VtZW50LiAgVG8gZGVsZXRlIGFsbCBjYWNoZWQgZmlsZXMg dXNlCjs7IGBkb2Mtdmlldy1jbGVhci1jYWNoZScuICBUbyBvcGVuIHRoZSBjYWNoZSB3aXRoIGRp cmVkLCBzbyB0aGF0IHlvdSBjYW4gdGlkeQo7OyBpdCBvdXQgdXNlIGBkb2Mtdmlldy1kaXJlZC1j YWNoZScuCjs7Cjs7IFdoZW4gY29udmVyc2lvbiBpcyB1bmRlcndheSB0aGUgZmlyc3QgcGFnZSB3 aWxsIGJlIGRpc3BsYXllZCBhcyBzb29uIGFzIGl0Cjs7IGlzIGF2YWlsYWJsZSBhbmQgdGhlIGF2 YWlsYWJsZSBwYWdlcyBhcmUgcmVmcmVzaGVkIGV2ZXJ5Cjs7IGBkb2Mtdmlldy1jb252ZXJzaW9u LXJlZnJlc2gtaW50ZXJ2YWwnIHNlY29uZHMuICBJZiB0aGF0IHZhcmlhYmxlIGlzIG5pbCB0aGUK OzsgcGFnZXMgd29uJ3QgYmUgZGlzcGxheWVkIGJlZm9yZSBjb252ZXJzaW9uIG9mIHRoZSBkb2N1 bWVudCBmaW5pc2hlZAo7OyBjb21wbGV0ZWx5Lgo7Owo7OyBEb2NWaWV3IGxldHMgeW91IHNlbGVj dCBhIHNsaWNlIG9mIHRoZSBkaXNwbGF5ZWQgcGFnZXMuICBUaGlzIHNsaWNlCjs7IHdpbGwgYmUg cmVtZW1iZXJlZCBhbmQgYXBwbGllZCB0byBhbGwgcGFnZXMgb2YgdGhlIGN1cnJlbnQKOzsgZG9j dW1lbnQuICBUaGlzIGVuYWJsZXMgeW91IHRvIGN1dCBhd2F5IHRoZSBtYXJnaW5zIG9mIGEgZG9j dW1lbnQKOzsgdG8gc2F2ZSBzb21lIHNwYWNlLiAgVG8gc2VsZWN0IGEgc2xpY2UgeW91IGNhbiB1 c2UKOzsgYGRvYy12aWV3LXNldC1zbGljZScgKGJvdW5kIHRvIGBjIHMnKSB3aGljaCB3aWxsIHF1 ZXJ5IHlvdSBmb3IgdGhlCjs7IGNvb3JkaW5hdGVzIG9mIHRoZSBzbGljZSdzIHRvcC1sZWZ0IGNv cm5lciBhbmQgaXRzIHdpZHRoIGFuZAo7OyBoZWlnaHQuICBBIG11Y2ggbW9yZSBjb252ZW5pZW50 IHdheSB0byBkbyB0aGUgc2FtZSBpcyBvZmZlcmVkIGJ5Cjs7IHRoZSBjb21tYW5kIGBkb2Mtdmll dy1zZXQtc2xpY2UtdXNpbmctbW91c2UnIChib3VuZCB0byBgYyBtJykuCjs7IEFmdGVyIGludm9j YXRpb24geW91IG9ubHkgaGF2ZSB0byBwcmVzcyBtb3VzZS0xIGF0IHRoZSB0b3AtbGVmdAo7OyBj b3JuZXIgYW5kIGRyYWcgaXQgdG8gdGhlIGJvdHRvbS1yaWdodCBjb3JuZXIgb2YgdGhlIGRlc2ly ZWQgc2xpY2UuCjs7IEV2ZW4gbW9yZSBhY2N1cmF0ZSBhbmQgY29udmVuaWVudCBpcyB0byB1c2UK OzsgYGRvYy12aWV3LXNldC1zbGljZS1mcm9tLWJvdW5kaW5nLWJveCcgKGJvdW5kIHRvIGBjIGIn KSB3aGljaCB1c2VzCjs7IHRoZSBCb3VuZGluZ0JveCBpbmZvcm1hdGlvbiBvZiB0aGUgY3VycmVu dCBwYWdlIHRvIHNldCBhbiBvcHRpbWFsCjs7IHNsaWNlLiAgVG8gcmVzZXQgdGhlIHNsaWNlIHVz ZSBgZG9jLXZpZXctcmVzZXQtc2xpY2UnIChib3VuZCB0byBgYwo7OyByJykuCjs7Cjs7IFlvdSBj YW4gYWxzbyBzZWFyY2ggd2l0aGluIHRoZSBkb2N1bWVudC4gIFRoZSBjb21tYW5kIGBkb2Mtdmll dy1zZWFyY2gnCjs7IChib3VuZCB0byBgQy1zJykgcXVlcmllcyBmb3IgYSBzZWFyY2ggcmVnZXhw IGFuZCBpbml0aWFsaXplcyBhIGxpc3Qgb2YgYWxsCjs7IG1hdGNoaW5nIHBhZ2VzIGFuZCBtZXNz YWdlcyBob3cgbWFueSBtYXRjaC1wYWdlcyB3ZXJlIGZvdW5kLiAgQWZ0ZXIgdGhhdCB5b3UKOzsg Y2FuIGp1bXAgdG8gdGhlIG5leHQgcGFnZSBjb250YWluaW5nIGEgbWF0Y2ggd2l0aCBhbiBhZGRp dGlvbmFsIGBDLXMnLiAgV2l0aAo7OyBgQy1yJyB5b3UgY2FuIGRvIHRoZSBzYW1lLCBidXQgYmFj a3dhcmRzLiAgVG8gc2VhcmNoIGZvciBhIG5ldyByZWdleHAgZ2l2ZSBhCjs7IHByZWZpeCBhcmcg dG8gb25lIG9mIHRoZSBzZWFyY2ggZnVuY3Rpb25zLCBlLmcuIGJ5IHR5cGluZyBgQy11IEMtcycu ICBUaGUKOzsgc2VhcmNoaW5nIHdvcmtzIGJ5IHVzaW5nIGEgcGxhaW4gdGV4dCByZXByZXNlbnRh dGlvbiBvZiB0aGUgZG9jdW1lbnQuICBJZgo7OyB0aGF0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdCB0 aGUgZmlyc3QgaW52b2NhdGlvbiBvZiBgZG9jLXZpZXctc2VhcmNoJyAob3IKOzsgYGRvYy12aWV3 LXNlYXJjaC1iYWNrd2FyZCcpIHN0YXJ0cyB0aGUgY29udmVyc2lvbi4gIFdoZW4gdGhhdCBmaW5p c2hlcyBhbmQKOzsgeW91J3JlIHN0aWxsIHZpZXdpbmcgdGhlIGRvY3VtZW50IChpLmUuIHlvdSBk aWRuJ3Qgc3dpdGNoIHRvIGFub3RoZXIgYnVmZmVyKQo7OyB5b3UncmUgcXVlcmllZCBmb3IgdGhl IHJlZ2V4cCB0aGVuLgo7Owo7OyBEaXJlZCB1c2VycyBjYW4gc2ltcGx5IGhpdCBgdicgb24gYSBk b2N1bWVudCBmaWxlLiAgSWYgaXQncyBhIFBTLCBQREYgb3IgRFZJCjs7IGl0IHdpbGwgYmUgb3Bl bmVkIHVzaW5nIGBkb2Mtdmlldy1tb2RlJy4KOzsKCjs7OyBDb25maWd1cmF0aW9uOgoKOzsgSWYg dGhlIGltYWdlcyBhcmUgdG9vIHNtYWxsIG9yIHRvbyBiaWcgeW91IHNob3VsZCBzZXQgdGhlICIt clhYWCIgb3B0aW9uIGluCjs7IGBkb2Mtdmlldy1naG9zdHNjcmlwdC1vcHRpb25zJyB0byBhbm90 aGVyIHZhbHVlLiAgKFRoZSBiaWdnZXIgeW91ciBzY3JlZW4sCjs7IHRoZSBoaWdoZXIgdGhlIHZh bHVlLikKOzsKOzsgVGhpcyBhbmQgYWxsIG90aGVyIG9wdGlvbnMgY2FuIGJlIHNldCB3aXRoIHRo ZSBjdXN0b21pemF0aW9uIGludGVyZmFjZS4KOzsgU2ltcGx5IGRvCjs7Cjs7ICAgICBNLXggY3Vz dG9taXplLWdyb3VwIFJFVCBkb2MtdmlldyBSRVQKOzsKOzsgYW5kIG1vZGlmeSB0aGVtIHRvIHlv dXIgbmVlZHMuCgo7OzsgVG9kbzoKCjs7IC0gYWRkIHByaW50IGNvbW1hbmQuCjs7IC0gc2hhcmUg bW9yZSBjb2RlIHdpdGggYm9va3JvbGwtbW9kZS4KOzsgLSBiZXR0ZXIgbWVudS4KOzsgLSBCaW5k IHNsaWNpbmcgdG8gYSBkcmFnIGV2ZW50Lgo7OyAtIHpvb20gdGhlIHJlZ2lvbiBhcm91bmQgdGhl IGN1cnNvciAobGlrZSB4ZHZpKS4KOzsgLSBnZXQgcmlkIG9mIHRoZSBzaWxseSBhcnJvdyBpbiB0 aGUgZnJpbmdlLgo7OyAtIGltcHJvdmUgYW50aS1hbGlhc2luZyAocGRmLXV0aWxzIGdldHMgaXQg YmV0dGVyKS4KCjs7OzsgQWJvdXQgaXNlYXJjaCBzdXBwb3J0Cgo7OyBJIHRyaWVkIGltcGxlbWVu dGluZyBpc2VhcmNoIGJ5IHNldHRpbmcKOzsgYGlzZWFyY2gtc2VhcmNoLWZ1bi1mdW5jdGlvbicg YnVmZmVyLWxvY2FsbHksIGJ1dCB0aGF0IGRpZG4ndAo7OyB3b3JrIHRvbyBnb29kLiAgVGhlIGZ1 bmN0aW9uIGRvaW5nIHRoZSByZWFsIHNlYXJjaCB3YXMgY2FsbGVkCjs7IGVuZGxlc3NseSBzb21l aG93LiAgQnV0IGV2ZW4gaWYgd2UnZCBnZXQgdGhhdCB3b3JraW5nIG5vIHJlYWwKOzsgaXNlYXJj aCBmZWVsaW5nIGNvbWVzIHVwIGR1ZSB0byB0aGUgbWlzc2luZyBtYXRjaCBoaWdobGlnaHRpbmcu Cjs7IEN1cnJlbnRseSBJIGRpc3BsYXkgYWxsIGxpbmVzIGNvbnRhaW5pbmcgYSBtYXRjaCBpbiBh IHRvb2x0aXAgYW5kCjs7IGVhY2ggQy1zIG9yIEMtciBqdW1wcyBkaXJlY3RseSB0byB0aGUgbmV4 dC9wcmV2aW91cyBwYWdlIHdpdGggYQo7OyBtYXRjaC4gIFdpdGggaXNlYXJjaCB3ZSBjb3VsZCBv bmx5IGRpc3BsYXkgdGhlIGN1cnJlbnQgbWF0Y2guICBTbwo7OyB3ZSBoYWQgdG8gZGVjaWRlIGlm IGFub3RoZXIgQy1zIGp1bXBzIHRvIHRoZSBuZXh0IHBhZ2Ugd2l0aCBhCjs7IG1hdGNoICh0aHVz IG9ubHkgdGhlIGZpcnN0IG1hdGNoIGluIGEgcGFnZSB3aWxsIGJlIGRpc3BsYXllZCBpbiBhCjs7 IHRvb2x0aXApIG9yIHRvIHRoZSBuZXh0IG1hdGNoLCB3aGljaCB3b3VsZCBkbyBub3RoaW5nIHZp c2libGUKOzsgKGV4Y2VwdCB0aGUgdG9vbHRpcCkgaWYgdGhlIG5leHQgbWF0Y2ggaXMgb24gdGhl IHNhbWUgcGFnZS4KCjs7IEFuZCBpdCdzIG11Y2ggc2xvd2VyIHRoYW4gdGhlIGN1cnJlbnQgc2Vh cmNoIGZhY2lsaXR5LCBiZWNhdXNlCjs7IGlzZWFyY2ggcmVhbGx5IHNlYXJjaGVzIGZvciBlYWNo IHN0ZXAgZm9yd2FyZCBvciBiYWNrd2FyZCB3aGVyZWFzCjs7IHRoZSBjdXJyZW50IGFwcHJvYWNo IHNlYXJjaGVzIG9uY2UgYW5kIHRoZW4gaXQga25vd3MgdG8gd2hpY2gKOzsgcGFnZXMgdG8ganVt cC4KCjs7IEFueXdheSwgaWYgc29tZW9uZSB3aXRoIGJldHRlciBpc2VhcmNoIGtub3dsZWRnZSB3 YW50cyB0byBnaXZlIGl0IGEgdHJ5LAo7OyBmZWVsIGZyZWUgdG8gZG8gaXQuICAtLVRhc3NpbG8K Cjs7OyBDb2RlOgoKKHJlcXVpcmUgJ2NsLWxpYikKKHJlcXVpcmUgJ2RpcmVkKQo7OyBUT0RPIHVu Y29tbWVudDogKHJlcXVpcmUgJ2Jvb2tyb2xsLW1vZGUpCihyZXF1aXJlICdqa2EtY29tcHIpCihl dmFsLXdoZW4tY29tcGlsZSAocmVxdWlyZSAnc3Vici14KSkKCjs7OzsgQ3VzdG9taXphdGlvbiBP cHRpb25zCgooZGVmZ3JvdXAgZG9jLXZpZXcgbmlsCiAgIkluLWJ1ZmZlciB2aWV3ZXIgZm9yIFBE RiwgUG9zdFNjcmlwdCwgRFZJLCBhbmQgREpWVSBmaWxlcy4iCiAgOmxpbmsgJyhmdW5jdGlvbi1s aW5rIGRvYy12aWV3KQogIDp2ZXJzaW9uICIyMi4yIgogIDpncm91cCAnYXBwbGljYXRpb25zCiAg Omdyb3VwICdkYXRhCiAgOmdyb3VwICdtdWx0aW1lZGlhCiAgOnByZWZpeCAiZG9jLXZpZXctIikK CihkZWZjdXN0b20gZG9jLXZpZXctZ2hvc3RzY3JpcHQtcHJvZ3JhbQogIChjb25kCiAgICgobWVt cSBzeXN0ZW0tdHlwZSAnKHdpbmRvd3MtbnQgbXMtZG9zKSkKICAgIChjb25kCiAgICAgOzsgV2lu ZG93cyBHaG9zdHNjcmlwdAogICAgICgoZXhlY3V0YWJsZS1maW5kICJnc3dpbjY0YyIpICJnc3dp bjY0YyIpCiAgICAgKChleGVjdXRhYmxlLWZpbmQgImdzd2luMzJjIikgImdzd2luMzJjIikKICAg ICA7OyBUaGUgR1Mgd3JhcHBlciBjb21pbmcgd2l0aCBUZVggTGl2ZQogICAgICgoZXhlY3V0YWJs ZS1maW5kICJydW5ncyIpICJydW5ncyIpCiAgICAgOzsgVGhlIE1pa1RlWCBidWlsdGluIEdTIENo ZWNrIGlmIG1ncyBpcyBmdW5jdGlvbmFsIGZvciBleHRlcm5hbAogICAgIDs7IG5vbi1NaWtUZVgg YXBwcy4gIFdhcyBhdmFpbGFibGUgdW5kZXI6CiAgICAgOzsgaHR0cDovL2Jsb2cubWlrdGV4Lm9y Zy9wb3N0LzIwMDUvMDQvMDcvU3RhcnRpbmctbWdzZXhlLWF0LXRoZS1ET1MtUHJvbXB0LmFzcHgK ICAgICAoKGFuZCAoZXhlY3V0YWJsZS1maW5kICJtZ3MiKQogICAgICAgICAgICg9IDAgKHNoZWxs LWNvbW1hbmQgIm1ncyAtcSAtZE5PRElTUExBWSAtYyBxdWl0IikpKQogICAgICAibWdzIikpKQog ICAodCAiZ3MiKSkKICAiUHJvZ3JhbSB0byBjb252ZXJ0IFBTIGFuZCBQREYgZmlsZXMgdG8gUE5H LiIKICA6dHlwZSAnZmlsZQogIDp2ZXJzaW9uICIyNy4xIikKCihkZWZjdXN0b20gZG9jLXZpZXct cGRmZHJhdy1wcm9ncmFtCiAgKGNvbmQKICAgKChleGVjdXRhYmxlLWZpbmQgInBkZmRyYXciKSAi cGRmZHJhdyIpCiAgICgoZXhlY3V0YWJsZS1maW5kICJtdWRyYXciKSAibXVkcmF3IikKICAgKChl eGVjdXRhYmxlLWZpbmQgIm11dG9vbCIpICJtdXRvb2wiKQogICAodCAibXVkcmF3IikpCiAgIk5h bWUgb2YgTXVQREYncyBwcm9ncmFtIHRvIGNvbnZlcnQgUERGIGZpbGVzIHRvIFBORy4iCiAgOnR5 cGUgJ2ZpbGUKICA6dmVyc2lvbiAiMjQuNCIpCgooZGVmY3VzdG9tIGRvYy12aWV3LXBkZnRvdGV4 dC1wcm9ncmFtLWFyZ3MgJygiLXJhdyIpCiAgIlBhcmFtZXRlcnMgdG8gZ2l2ZSB0byB0aGUgcGRm dG90ZXh0IGNvbW1hbmQuIgogIDp2ZXJzaW9uICIyNy4xIgogIDp0eXBlICcocmVwZWF0IHN0cmlu ZykpCgooZGVmY3VzdG9tIGRvYy12aWV3LXBkZi0+cG5nLWNvbnZlcnRlci1mdW5jdGlvbgogIChp ZiAoZXhlY3V0YWJsZS1maW5kIGRvYy12aWV3LXBkZmRyYXctcHJvZ3JhbSkKICAgICAgIydkb2Mt dmlldy1wZGYtPnBuZy1jb252ZXJ0ZXItbXVwZGYKICAgICMnZG9jLXZpZXctcGRmLT5wbmctY29u dmVydGVyLWdob3N0c2NyaXB0KQogICJGdW5jdGlvbiB0byBjYWxsIHRvIGNvbnZlcnQgYSBQREYg ZmlsZSBpbnRvIGEgUE5HIGZpbGUuIgogIDp0eXBlICcocmFkaW8KICAgICAgICAgIChmdW5jdGlv bi1pdGVtIGRvYy12aWV3LXBkZi0+cG5nLWNvbnZlcnRlci1naG9zdHNjcmlwdAogICAgICAgICAg ICAgICAgICAgICAgICAgOmRvYyAiVXNlIGdob3N0c2NyaXB0IikKICAgICAgICAgIChmdW5jdGlv bi1pdGVtIGRvYy12aWV3LXBkZi0+cG5nLWNvbnZlcnRlci1tdXBkZgogICAgICAgICAgICAgICAg ICAgICAgICAgOmRvYyAiVXNlIG11cGRmIikKICAgICAgICAgIGZ1bmN0aW9uKQogIDp2ZXJzaW9u ICIyNC40IikKCihkZWZjdXN0b20gZG9jLXZpZXctZ2hvc3RzY3JpcHQtb3B0aW9ucwogICcoIi1k U0FGRVIiIDs7IEF2b2lkIHNlY3VyaXR5IHByb2JsZW1zIHdoZW4gcmVuZGVyaW5nIGZpbGVzIGZy b20gdW50cnVzdGVkCiAgICA7OyBzb3VyY2VzLgogICAgIi1kTk9QQVVTRSIgIi1kVGV4dEFscGhh Qml0cz00IgogICAgIi1kQkFUQ0giICItZEdyYXBoaWNzQWxwaGFCaXRzPTQiICItZFFVSUVUIikK ICAiQSBsaXN0IG9mIG9wdGlvbnMgdG8gZ2l2ZSB0byBnaG9zdHNjcmlwdC4iCiAgOnR5cGUgJyhy ZXBlYXQgc3RyaW5nKSkKCihkZWZjdXN0b20gZG9jLXZpZXctZ2hvc3RzY3JpcHQtZGV2aWNlICJw bmcxNm0iCiAgIk91dHB1dCBkZXZpY2UgdG8gZ2l2ZSB0byBnaG9zdHNjcmlwdC4iCiAgOnR5cGUg J3N0cmluZwogIDp2ZXJzaW9uICIyNy4xIikKCihkZWZjdXN0b20gZG9jLXZpZXctcmVzb2x1dGlv biAxMDAKICAiRG90cyBwZXIgaW5jaCByZXNvbHV0aW9uIHVzZWQgdG8gcmVuZGVyIHRoZSBkb2N1 bWVudHMuCkhpZ2hlciB2YWx1ZXMgcmVzdWx0IGluIGxhcmdlciBpbWFnZXMuIgogIDp0eXBlICdu dW1iZXIpCgooZGVmY3VzdG9tIGRvYy12aWV3LXNjYWxlLWludGVybmFsbHkgdAogICJXaGV0aGVy IHdlIHNob3VsZCB0cnkgdG8gcmVzY2FsZSBpbWFnZXMgb3Vyc2VsdmVzLgpJZiBuaWwsIHRoZSBk b2N1bWVudCBpcyByZS1yZW5kZXJlZCBldmVyeSB0aW1lIHRoZSBzY2FsaW5nIGZhY3RvciBpcyBt b2RpZmllZC4KVGhpcyBvbmx5IGhhcyBhbiBlZmZlY3QgaWYgdGhlIGltYWdlIGxpYnJhcmllcyBs aW5rZWQgd2l0aCBFbWFjcyBzdXBwb3J0CnNjYWxpbmcuIgogIDp2ZXJzaW9uICIyNC40IgogIDp0 eXBlICdib29sZWFuKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1pbWFnZS13aWR0aCA4NTAKICAiRGVm YXVsdCBpbWFnZSB3aWR0aC4KSGFzIG9ubHkgYW4gZWZmZWN0IGlmIGBkb2Mtdmlldy1zY2FsZS1p bnRlcm5hbGx5JyBpcyBub24tbmlsIGFuZCBzdXBwb3J0IGZvcgpzY2FsaW5nIGlzIGNvbXBpbGVk IGludG8gRW1hY3MuIgogIDp2ZXJzaW9uICIyNC4xIgogIDp0eXBlICdudW1iZXIpCgooZGVmY3Vz dG9tIGRvYy12aWV3LWR2aXBkZm0tcHJvZ3JhbSAiZHZpcGRmbSIKICAiUHJvZ3JhbSB0byBjb252 ZXJ0IERWSSBmaWxlcyB0byBQREYuCgpEVkkgZmlsZSB3aWxsIGJlIGNvbnZlcnRlZCB0byBQREYg YmVmb3JlIHRoZSByZXN1bHRpbmcgUERGIGlzCmNvbnZlcnRlZCB0byBQTkcuCgpJZiB0aGlzIGFu ZCBgZG9jLXZpZXctZHZpcGRmLXByb2dyYW0nIGFyZSBzZXQsCmBkb2Mtdmlldy1kdmlwZGYtcHJv Z3JhbScgd2lsbCBiZSBwcmVmZXJyZWQuIgogIDp0eXBlICdmaWxlKQoKKGRlZmN1c3RvbSBkb2Mt dmlldy1kdmlwZGYtcHJvZ3JhbSAiZHZpcGRmIgogICJQcm9ncmFtIHRvIGNvbnZlcnQgRFZJIGZp bGVzIHRvIFBERi4KCkRWSSBmaWxlIHdpbGwgYmUgY29udmVydGVkIHRvIFBERiBiZWZvcmUgdGhl IHJlc3VsdGluZyBQREYgaXMKY29udmVydGVkIHRvIFBORy4KCklmIHRoaXMgYW5kIGBkb2Mtdmll dy1kdmlwZGZtLXByb2dyYW0nIGFyZSBzZXQsCmBkb2Mtdmlldy1kdmlwZGYtcHJvZ3JhbScgd2ls bCBiZSBwcmVmZXJyZWQuIgogIDp0eXBlICdmaWxlKQoKKGRlZmluZS1vYnNvbGV0ZS12YXJpYWJs ZS1hbGlhcyAnZG9jLXZpZXctdW5vY29udi1wcm9ncmFtCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2RvYy12aWV3LW9kZi0+cGRmLWNvbnZlcnRlci1wcm9ncmFtCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIjI0LjQiKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1vZGYtPnBk Zi1jb252ZXJ0ZXItcHJvZ3JhbQogIChjb25kCiAgICgoZXhlY3V0YWJsZS1maW5kICJzb2ZmaWNl IikgInNvZmZpY2UiKQogICAoKGV4ZWN1dGFibGUtZmluZCAidW5vY29udiIpICJ1bm9jb252IikK ICAgKHQgInNvZmZpY2UiKSkKICAiUHJvZ3JhbSB0byBjb252ZXJ0IGFueSBmaWxlIHR5cGUgcmVh ZGFibGUgYnkgT3Blbk9mZmljZS5vcmcgdG8gUERGLgoKTmVlZGVkIGZvciB2aWV3aW5nIE9wZW5P ZmZpY2Uub3JnIChhbmQgTVMgT2ZmaWNlKSBmaWxlcy4iCiAgOnZlcnNpb24gIjI0LjQiCiAgOnR5 cGUgJ2ZpbGUpCgooZGVmY3VzdG9tIGRvYy12aWV3LW9kZi0+cGRmLWNvbnZlcnRlci1mdW5jdGlv bgogIChjb25kCiAgICgoc3RyaW5nLW1hdGNoICJ1bm9jb252XFwnIiBkb2Mtdmlldy1vZGYtPnBk Zi1jb252ZXJ0ZXItcHJvZ3JhbSkKICAgICMnZG9jLXZpZXctb2RmLT5wZGYtY29udmVydGVyLXVu b2NvbnYpCiAgICgoc3RyaW5nLW1hdGNoICJzb2ZmaWNlXFwnIiBkb2Mtdmlldy1vZGYtPnBkZi1j b252ZXJ0ZXItcHJvZ3JhbSkKICAgICMnZG9jLXZpZXctb2RmLT5wZGYtY29udmVydGVyLXNvZmZp Y2UpKQogICJGdW5jdGlvbiB0byBjYWxsIHRvIGNvbnZlcnQgYSBPREYgZmlsZSBpbnRvIGEgUERG IGZpbGUuIgogIDp0eXBlICcocmFkaW8KICAgICAgICAgIChmdW5jdGlvbi1pdGVtIGRvYy12aWV3 LW9kZi0+cGRmLWNvbnZlcnRlci11bm9jb252CiAgICAgICAgICAgICAgICAgICAgICAgICA6ZG9j ICJVc2UgdW5vY29udiIpCiAgICAgICAgICAoZnVuY3Rpb24taXRlbSBkb2Mtdmlldy1vZGYtPnBk Zi1jb252ZXJ0ZXItc29mZmljZQogICAgICAgICAgICAgICAgICAgICAgICAgOmRvYyAiVXNlIExp YnJlT2ZmaWNlIikKICAgICAgICAgIGZ1bmN0aW9uKQogIDp2ZXJzaW9uICIyNC40IikKCihkZWZj dXN0b20gZG9jLXZpZXctcHMycGRmLXByb2dyYW0gInBzMnBkZiIKICAiUHJvZ3JhbSB0byBjb252 ZXJ0IFBTIGZpbGVzIHRvIFBERi4KClBTIGZpbGVzIHdpbGwgYmUgY29udmVydGVkIHRvIFBERiBi ZWZvcmUgc2VhcmNoaW5nIGlzIHBvc3NpYmxlLiIKICA6dHlwZSAnZmlsZSkKCihkZWZjdXN0b20g ZG9jLXZpZXctcGRmdG90ZXh0LXByb2dyYW0gInBkZnRvdGV4dCIKICAiUHJvZ3JhbSB0byBjb252 ZXJ0IFBERiBmaWxlcyB0byBwbGFpbiB0ZXh0LgoKTmVlZGVkIGZvciBzZWFyY2hpbmcuIgogIDp0 eXBlICdmaWxlKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1jYWNoZS1kaXJlY3RvcnkKICAoZXhwYW5k LWZpbGUtbmFtZSAoZm9ybWF0ICJkb2N2aWV3JWQiICh1c2VyLXVpZCkpCgkJICAgIHRlbXBvcmFy eS1maWxlLWRpcmVjdG9yeSkKICAiVGhlIGJhc2UgZGlyZWN0b3J5LCB3aGVyZSB0aGUgUE5HIGlt YWdlcyB3aWxsIGJlIHNhdmVkLiIKICA6dHlwZSAnZGlyZWN0b3J5KQoKKGRlZnZhciBkb2Mtdmll dy1jb252ZXJzaW9uLWJ1ZmZlciAiICpkb2MtdmlldyBjb252ZXJzaW9uIG91dHB1dCoiCiAgIlRo ZSBidWZmZXIgd2hlcmUgbWVzc2FnZXMgZnJvbSB0aGUgY29udmVydGVyIHByb2dyYW1zIGdvIHRv LiIpCgooZGVmY3VzdG9tIGRvYy12aWV3LWNvbnZlcnNpb24tcmVmcmVzaC1pbnRlcnZhbCAxCiAg IkludGVydmFsIGluIHNlY29uZHMgYmV0d2VlbiByZWZyZXNoZXMgb2YgdGhlIERvY1ZpZXcgYnVm ZmVyIHdoaWxlIGNvbnZlcnRpbmcuCkFmdGVyIHN1Y2ggYSByZWZyZXNoIG5ld2x5IGNvbnZlcnRl ZCBwYWdlcyB3aWxsIGJlIGF2YWlsYWJsZSBmb3IKdmlld2luZy4gIElmIHNldCB0byBuaWwgdGhl cmUgd29uJ3QgYmUgYW55IHJlZnJlc2hlcyBhbmQgdGhlCnBhZ2VzIHdvbid0IGJlIGRpc3BsYXll ZCBiZWZvcmUgY29udmVyc2lvbiBvZiB0aGUgd2hvbGUgZG9jdW1lbnQKaGFzIGZpbmlzaGVkLiIK ICA6dHlwZSAnaW50ZWdlcikKCihkZWZjdXN0b20gZG9jLXZpZXctY29udGludW91cyBuaWwKICAi SW4gQ29udGludW91cyBtb2RlIHJlYWNoaW5nIHRoZSBwYWdlIGVkZ2UgYWR2YW5jZXMgdG8gbmV4 dC9wcmV2aW91cyBwYWdlLgpXaGVuIG5vbi1uaWwsIHNjcm9sbGluZyBhIGxpbmUgdXB3YXJkIGF0 IHRoZSBib3R0b20gZWRnZSBvZiB0aGUgcGFnZQptb3ZlcyB0byB0aGUgbmV4dCBwYWdlLCBhbmQg c2Nyb2xsaW5nIGEgbGluZSBkb3dud2FyZCBhdCB0aGUgdG9wIGVkZ2UKb2YgdGhlIHBhZ2UgbW92 ZXMgdG8gdGhlIHByZXZpb3VzIHBhZ2UuIgogIDp0eXBlICdib29sZWFuCiAgOnZlcnNpb24gIjIz LjIiKQoKKGRlZmN1c3RvbSBkb2Mtdmlldy1jb250aW51b3VzLXNjcm9sbCB0CiAgIlRPRE8gd3Jp dGUgZG9jc3RyaW5nIgogIDp0eXBlICdib29sZWFuCiAgOnZlcnNpb24gIjI4LjEiKQoKOzs7OyBJ bnRlcm5hbCBWYXJpYWJsZXMKCihkZWZ2YXItbG9jYWwgZG9jLXZpZXctLWN1cnJlbnQtY29udmVy dGVyLXByb2Nlc3NlcyBuaWwKICAiT25seSB1c2VkIGludGVybmFsbHkuIikKCihkZWZ1biBkb2Mt dmlldy1uZXctd2luZG93LWZ1bmN0aW9uICh3aW5wcm9wcykKICA7OyAobWVzc2FnZSAiTmV3IHdp bmRvdyAlcyBmb3IgYnVmICVzIiAoY2FyIHdpbnByb3BzKSAoY3VycmVudC1idWZmZXIpKQogIChj bC1hc3NlcnQgKG9yIChlcSB0IChjYXIgd2lucHJvcHMpKQogICAgICAgICAgICAgICAgIChlcSAo d2luZG93LWJ1ZmZlciAoY2FyIHdpbnByb3BzKSkgKGN1cnJlbnQtYnVmZmVyKSkpKQogIChsZXQq ICgob2wgKGJvb2tyb2xsLW1vZGUtd2luZG93LWdldCAnb3ZlcmxheSB3aW5wcm9wcykpKQogICAg KGlmIG9sCiAgICAgICAgKHByb2duCiAgICAgICAgICAoc2V0cSBvbCAoY29weS1vdmVybGF5IG9s KSkKICAgICAgICAgIDs7IGBvbCcgbWlnaHQgYWN0dWFsbHkgYmUgZGVhZC4KICAgICAgICAgICht b3ZlLW92ZXJsYXkgb2wgMSAxKSkKICAgICAgKHNldHEgb2wgKG1ha2Utb3ZlcmxheSAxIDEgbmls IHQpKQogICAgICAob3ZlcmxheS1wdXQgb2wgJ2RvYy12aWV3IHQpKQogICAgKG92ZXJsYXktcHV0 IG9sICd3aW5kb3cgKGNhciB3aW5wcm9wcykpCiAgICAodW5sZXNzICh3aW5kb3dwIChjYXIgd2lu cHJvcHMpKQogICAgICA7OyBJdCdzIGEgcHNldWRvIGVudHJ5LiAgTGV0J3MgbWFrZSBzdXJlIGl0 J3Mgbm90IGRpc3BsYXllZCAodGhlCiAgICAgIDs7IGB3aW5kb3cnIHByb3BlcnR5IGlzIG9ubHkg ZWZmZWN0aXZlIGlmIGl0cyB2YWx1ZSBpcyBhIHdpbmRvdykuCiAgICAgIChjbC1hc3NlcnQgKGVx IHQgKGNhciB3aW5wcm9wcykpKQogICAgICAoZGVsZXRlLW92ZXJsYXkgb2wpKQogICAgOzsgKG1l c3NhZ2UgIldJTlAgJXMiIHdpbnByb3BzKQogICAgKGJvb2tyb2xsLW1vZGUtd2luZG93LXB1dCAn b3ZlcmxheSBvbCB3aW5wcm9wcykKICAgICh1bmxlc3MgKGVxIChjYXIgd2lucHJvcHMpIHQpCiAg ICAgIChzZXRxIG92ZXJsYXlzIChici1jcmVhdGUtb3ZlcmxheXMtbGlzdCkpCiAgICAgIChsZXQg KChwIChib29rcm9sbC1tb2RlLXdpbmRvdy1nZXQgJ3BhZ2Ugd2lucHJvcHMpKSkKICAgICAgICAo Ym9va3JvbGwtbW9kZS13aW5kb3ctcHV0ICdvdmVybGF5cyBvdmVybGF5cyB3aW5wcm9wcykpKQog ICAgOzsgKG1lc3NhZ2UgIk9WRVJMQVlTICVzIiAoZG9jLXZpZXctb3ZlcmxheXMpKQogICAgKHdo ZW4gKGFuZCAod2luZG93cCAoY2FyIHdpbnByb3BzKSkKICAgICAgICAgICAgICAgKHN0cmluZ3Ag KG92ZXJsYXktZ2V0IG9sICdkaXNwbGF5KSkKICAgICAgICAgICAgICAgKG51bGwgZG9jLXZpZXct LWN1cnJlbnQtY29udmVydGVyLXByb2Nlc3NlcykpCiAgICAgIDs7IFdlJ3JlIG5vdCBkaXNwbGF5 aW5nIGFuIGltYWdlIHlldCwgc28gbGV0J3MgZG8gc28uICBUaGlzIGhhcHBlbnMgd2hlbgogICAg ICA7OyB0aGUgYnVmZmVyIGlzIGRpc3BsYXllZCBmb3IgdGhlIGZpcnN0IHRpbWUuCiAgICAgIDs7 IERvbid0IGRvIGl0IGlmIHRoZXJlJ3MgYSBjb252ZXJzaW9uIGlzIHJ1bm5pbmcsIHNpbmNlIGlu IHRoYXQgY2FzZSwgaXQKICAgICAgOzsgd2lsbCBiZSBkb25lIGxhdGVyLgogICAgICAod2l0aC1z ZWxlY3RlZC13aW5kb3cgKGNhciB3aW5wcm9wcykKICAgICAgICAoZG9jLXZpZXctZ290by1wYWdl IChib29rcm9sbC1tb2RlLXdpbmRvdy1nZXQgJ3BhZ2UgdCkpKSkpKQoKOzsgKGRlZnVuIGRvYy12 aWV3LW5ldy13aW5kb3ctZnVuY3Rpb24gKHdpbnByb3BzKQo7OyAgIDs7IChtZXNzYWdlICJOZXcg d2luZG93ICVzIGZvciBidWYgJXMiIChjYXIgd2lucHJvcHMpIChjdXJyZW50LWJ1ZmZlcikpCjs7 ICAgKGNsLWFzc2VydCAob3IgKGVxIHQgKGNhciB3aW5wcm9wcykpCjs7ICAgICAgICAgICAgICAg ICAgKGVxICh3aW5kb3ctYnVmZmVyIChjYXIgd2lucHJvcHMpKSAoY3VycmVudC1idWZmZXIpKSkp Cjs7ICAgKGxldCAoKG9scyAoYm9va3JvbGwtbW9kZS13aW5kb3ctZ2V0ICdvdmVybGF5cyB3aW5w cm9wcykpCjs7ICAgICAgICAgKG9sLWkpKSA7OyBsaXN0IGluZGV4ZXMgYXJlIHNoaWZ0ZWQKOzsg ICAgICh1bmxlc3Mgb2xzCjs7ICAgICAgIChzZXRxIG92ZXJsYXlzIChici1jcmVhdGUtb3Zlcmxh eXMtbGlzdCkpCjs7ICAgICAgIChvdmVybGF5LXB1dCAobnRoIChvciBhbCkgb3ZlcmxheXMpICdk b2MtdmlldyB0KSkKOzsgICAgIChvdmVybGF5LXB1dCAoY2FyIG92ZXJsYXlzKSAnd2luZG93IChj YXIgd2lucHJvcHMpKQo7OyAgICAgKHVubGVzcyAod2luZG93cCAoY2FyIHdpbnByb3BzKSkKOzsg ICAgICAgOzsgSXQncyBhIHBzZXVkbyBlbnRyeS4gIExldCdzIG1ha2Ugc3VyZSBpdCdzIG5vdCBk aXNwbGF5ZWQgKHRoZQo7OyAgICAgICA7OyBgd2luZG93JyBwcm9wZXJ0eSBpcyBvbmx5IGVmZmVj dGl2ZSBpZiBpdHMgdmFsdWUgaXMgYSB3aW5kb3cpLgo7OyAgICAgICAoY2wtYXNzZXJ0IChlcSB0 IChjYXIgd2lucHJvcHMpKSkKOzsgICAgICAgKGRlbGV0ZS1vdmVybGF5IChkb2Mtdmlldy1jb250 cm9sLW92ZXJsYXkpKSkKOzsgICAgIChib29rcm9sbC1tb2RlLXdpbmRvdy1wdXQgJ292ZXJsYXlz IG92ZXJsYXlzIHdpbnByb3BzKQo7OyAgICAgKHdoZW4gKGFuZCAod2luZG93cCAoY2FyIHdpbnBy b3BzKSkKOzsgICAgICAgICAgICAgICAgOzsgKHN0cmluZ3AgKG92ZXJsYXktZ2V0IG92ZXJsYXlz ICdkaXNwbGF5KSkKOzsgICAgICAgICAgICAgICAgKG51bGwgZG9jLXZpZXctLWN1cnJlbnQtY29u dmVydGVyLXByb2Nlc3NlcykpCjs7ICAgICAgIDs7IFdlJ3JlIG5vdCBkaXNwbGF5aW5nIGFuIGlt YWdlIHlldCwgc28gbGV0J3MgZG8gc28uICBUaGlzIGhhcHBlbnMgd2hlbgo7OyAgICAgICA7OyB0 aGUgYnVmZmVyIGlzIGRpc3BsYXllZCBmb3IgdGhlIGZpcnN0IHRpbWUuCjs7ICAgICAgIDs7IERv bid0IGRvIGl0IGlmIHRoZXJlJ3MgYSBjb252ZXJzaW9uIGlzIHJ1bm5pbmcsIHNpbmNlIGluIHRo YXQgY2FzZSwgaXQKOzsgICAgICAgOzsgd2lsbCBiZSBkb25lIGxhdGVyLgo7OyAoYnItY3JlYXRl LXBsYWNlaG9sZGVycykpKSkKOzsgICAgICAgOzsgKHdpdGgtc2VsZWN0ZWQtd2luZG93IChjYXIg d2lucHJvcHMpCjs7ICAgICAgIDs7ICAgKGRvYy12aWV3LWdvdG8tcGFnZSAoYm9va3JvbGwtbW9k ZS13aW5kb3ctZ2V0ICdwYWdlIHQpKSkpKSkKCihkZWZ2YXItbG9jYWwgZG9jLXZpZXctLWN1cnJl bnQtZmlsZXMgbmlsCiAgIk9ubHkgdXNlZCBpbnRlcm5hbGx5LiIpCgooZGVmdmFyLWxvY2FsIGRv Yy12aWV3LS1jdXJyZW50LXRpbWVyIG5pbAogICJPbmx5IHVzZWQgaW50ZXJuYWxseS4iKQoKKGRl ZnZhci1sb2NhbCBkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1kaXIgbmlsCiAgIk9ubHkgdXNlZCBp bnRlcm5hbGx5LiIpCgooZGVmdmFyLWxvY2FsIGRvYy12aWV3LS1jdXJyZW50LXNlYXJjaC1tYXRj aGVzIG5pbAogICJPbmx5IHVzZWQgaW50ZXJuYWxseS4iKQoKKGRlZnZhciBkb2Mtdmlldy0tcGVu ZGluZy1jYWNoZS1mbHVzaCBuaWwKICAiT25seSB1c2VkIGludGVybmFsbHkuIikKCihkZWZ2YXIg ZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUgbmlsCiAgIk9ubHkgdXNlZCBpbnRlcm5hbGx5LgpU aGUgZmlsZSBuYW1lIHVzZWQgZm9yIGNvbnZlcnNpb24uICBOb3JtYWxseSBpdCdzIHRoZSBzYW1l IGFzCmBidWZmZXItZmlsZS1uYW1lJywgYnV0IGZvciByZW1vdGUgZmlsZXMsIGNvbXByZXNzZWQg ZmlsZXMgYW5kCmZpbGVzIGluc2lkZSBhbiBhcmNoaXZlIGl0IGlzIGEgdGVtcG9yYXJ5IGNvcHkg b2YKdGhlICh1bmNvbXByZXNzZWQsIGV4dHJhY3RlZCkgZmlsZSByZXNpZGluZyBpbgpgZG9jLXZp ZXctY2FjaGUtZGlyZWN0b3J5Jy4iKQoKKGRlZnZhciBkb2Mtdmlldy1kb2MtdHlwZSBuaWwKICAi VGhlIHR5cGUgb2YgZG9jdW1lbnQgaW4gdGhlIGN1cnJlbnQgYnVmZmVyLgpDYW4gYmUgYGR2aScs IGBwZGYnLCBgcHMnLCBgZGp2dScgb3IgYG9kZicuIikKCihkZWZ2YXIgZG9jLXZpZXctc2luZ2xl LXBhZ2UtY29udmVydGVyLWZ1bmN0aW9uIG5pbAogICJGdW5jdGlvbiB0byBjYWxsIHRvIGNvbnZl cnQgYSBzaW5nbGUgcGFnZSBvZiB0aGUgZG9jdW1lbnQgdG8gYSBiaXRtYXAgZmlsZS4KTWF5IG9w ZXJhdGUgb24gdGhlIHNvdXJjZSBkb2N1bWVudCBvciBvbiBzb21lIGludGVybWVkaWF0ZSAodHlw aWNhbGx5IFBERikKY29udmVyc2lvbiBvZiBpdC4iKQoKKGRlZnZhci1sb2NhbCBkb2Mtdmlldy0t aW1hZ2UtdHlwZSBuaWwKICAiVGhlIHR5cGUgb2YgaW1hZ2UgaW4gdGhlIGN1cnJlbnQgYnVmZmVy LgpDYW4gYmUgYHBuZycgb3IgYHRpZmYnLiIpCgooZGVmdmFyLWxvY2FsIGRvYy12aWV3LS1pbWFn ZS1maWxlLXBhdHRlcm4gbmlsCiAgIlRoZSBgZm9ybWF0JyBwYXR0ZXJuIG9mIGltYWdlIGZpbGUg bmFtZXMuClR5cGljYWxseSBcInBhZ2UtJXMucG5nXCIuIikKCjs7OzsgRG9jVmlldyBLZXltYXBz CgooZGVmdmFyIGRvYy12aWV3LW1vZGUtbWFwCiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5 bWFwKSkpCiAgICAoc2V0LWtleW1hcC1wYXJlbnQgbWFwIGJvb2tyb2xsLW1vZGUtbWFwKQogICAg OzsgTmF2aWdhdGlvbiBpbiB0aGUgZG9jdW1lbnQKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICJu IikgICAgICAgICAnZG9jLXZpZXctbmV4dC1wYWdlKQogICAgKGRlZmluZS1rZXkgbWFwIChrYmQg InAiKSAgICAgICAgICdkb2Mtdmlldy1wcmV2aW91cy1wYWdlKQogICAgKGRlZmluZS1rZXkgbWFw IChrYmQgIjxuZXh0PiIpICAgICdmb3J3YXJkLXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgKGti ZCAiPHByaW9yPiIpICAgJ2JhY2t3YXJkLXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgW3JlbWFw IGZvcndhcmQtcGFnZV0gICdkb2Mtdmlldy1uZXh0LXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAg W3JlbWFwIGJhY2t3YXJkLXBhZ2VdICdkb2Mtdmlldy1wcmV2aW91cy1wYWdlKQogICAgKGRlZmlu ZS1rZXkgbWFwIChrYmQgIlNQQyIpICAgICAgICdkb2Mtdmlldy1zY3JvbGwtdXAtb3ItbmV4dC1w YWdlKQogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIlMtU1BDIikgICAgICdkb2Mtdmlldy1zY3Jv bGwtZG93bi1vci1wcmV2aW91cy1wYWdlKQogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIkRFTCIp ICAgICAgICdkb2Mtdmlldy1zY3JvbGwtZG93bi1vci1wcmV2aW91cy1wYWdlKQogICAgKGRlZmlu ZS1rZXkgbWFwIChrYmQgIkMtbiIpICAgICAgICdkb2Mtdmlldy1uZXh0LWxpbmUtb3ItbmV4dC1w YWdlKQogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIjxkb3duPiIpICAgICdkb2Mtdmlldy1uZXh0 LWxpbmUtb3ItbmV4dC1wYWdlKQogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIkMtcCIpICAgICAg ICdkb2Mtdmlldy1wcmV2aW91cy1saW5lLW9yLXByZXZpb3VzLXBhZ2UpCiAgICAoZGVmaW5lLWtl eSBtYXAgKGtiZCAiPHVwPiIpICAgICAgJ2RvYy12aWV3LXByZXZpb3VzLWxpbmUtb3ItcHJldmlv dXMtcGFnZSkKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICJNLTwiKSAgICAgICAnZG9jLXZpZXct Zmlyc3QtcGFnZSkKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICJNLT4iKSAgICAgICAnZG9jLXZp ZXctbGFzdC1wYWdlKQogICAgKGRlZmluZS1rZXkgbWFwIFtyZW1hcCBnb3RvLWxpbmVdICdkb2Mt dmlldy1nb3RvLXBhZ2UpCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiUkVUIikgICAgICAgJ2lt YWdlLW5leHQtbGluZSkKICAgIDs7IFpvb20gaW4vb3V0LgogICAgKGRlZmluZS1rZXkgbWFwICIr IiAgICAgICAgICAgICAgICdkb2Mtdmlldy1lbmxhcmdlKQogICAgKGRlZmluZS1rZXkgbWFwICI9 IiAgICAgICAgICAgICAgICdkb2Mtdmlldy1lbmxhcmdlKQogICAgKGRlZmluZS1rZXkgbWFwICIt IiAgICAgICAgICAgICAgICdkb2Mtdmlldy1zaHJpbmspCiAgICAoZGVmaW5lLWtleSBtYXAgIjAi ICAgICAgICAgICAgICAgJ2RvYy12aWV3LXNjYWxlLXJlc2V0KQogICAgKGRlZmluZS1rZXkgbWFw IFtyZW1hcCB0ZXh0LXNjYWxlLWFkanVzdF0gJ2RvYy12aWV3LXNjYWxlLWFkanVzdCkKICAgIDs7 IEZpdCB0aGUgaW1hZ2UgdG8gdGhlIHdpbmRvdwogICAgKGRlZmluZS1rZXkgbWFwICJXIiAgICAg ICAgICAgICAgICdkb2Mtdmlldy1maXQtd2lkdGgtdG8td2luZG93KQogICAgKGRlZmluZS1rZXkg bWFwICJIIiAgICAgICAgICAgICAgICdkb2Mtdmlldy1maXQtaGVpZ2h0LXRvLXdpbmRvdykKICAg IChkZWZpbmUta2V5IG1hcCAiUCIgICAgICAgICAgICAgICAnZG9jLXZpZXctZml0LXBhZ2UtdG8t d2luZG93KQogICAgKGRlZmluZS1rZXkgbWFwICJGIiAgICAgICAgICAgICAgICdkb2Mtdmlldy1m aXQtd2luZG93LXRvLXBhZ2UpIDtGID0gZnJhbWUKICAgIDs7IEtpbGxpbmcgdGhlIGJ1ZmZlciAo YW5kIHRoZSBwcm9jZXNzKQogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgImsiKSAgICAgICAgICdp bWFnZS1raWxsLWJ1ZmZlcikKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICJLIikgICAgICAgICAn ZG9jLXZpZXcta2lsbC1wcm9jKQogICAgOzsgU2xpY2luZyB0aGUgaW1hZ2UKICAgIChkZWZpbmUt a2V5IG1hcCAoa2JkICJjIHMiKSAgICAgICAnZG9jLXZpZXctc2V0LXNsaWNlKQogICAgKGRlZmlu ZS1rZXkgbWFwIChrYmQgImMgbSIpICAgICAgICdkb2Mtdmlldy1zZXQtc2xpY2UtdXNpbmctbW91 c2UpCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiYyBiIikgICAgICAgJ2RvYy12aWV3LXNldC1z bGljZS1mcm9tLWJvdW5kaW5nLWJveCkKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICJjIHIiKSAg ICAgICAnZG9jLXZpZXctcmVzZXQtc2xpY2UpCiAgICA7OyBDZW50ZXJpbmcgdGhlIGltYWdlCiAg ICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiYyBoIikgICAgICAgJ2RvYy12aWV3LWNlbnRlci1wYWdl LWhvcml6b250YWxseSkKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICJjIHYiKSAgICAgICAnZG9j LXZpZXctY2VudGVyLXBhZ2UtdmVydGljYWxseSkKICAgIDs7IFNlYXJjaGluZwogICAgKGRlZmlu ZS1rZXkgbWFwIChrYmQgIkMtcyIpICAgICAgICdkb2Mtdmlldy1zZWFyY2gpCiAgICAoZGVmaW5l LWtleSBtYXAgKGtiZCAiPGZpbmQ+IikgICAgJ2RvYy12aWV3LXNlYXJjaCkKICAgIChkZWZpbmUt a2V5IG1hcCAoa2JkICJDLXIiKSAgICAgICAnZG9jLXZpZXctc2VhcmNoLWJhY2t3YXJkKQogICAg OzsgU2hvdyB0aGUgdG9vbHRpcAogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIkMtdCIpICAgICAg ICdkb2Mtdmlldy1zaG93LXRvb2x0aXApCiAgICA7OyBUb2dnbGUgYmV0d2VlbiB0ZXh0IGFuZCBp bWFnZSBkaXNwbGF5IG9yIGVkaXRpbmcKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICJDLWMgQy1j IikgICAnZG9jLXZpZXctdG9nZ2xlLWRpc3BsYXkpCiAgICA7OyBPcGVuIGEgbmV3IGJ1ZmZlciB3 aXRoIGRvYydzIHRleHQgY29udGVudHMKICAgIChkZWZpbmUta2V5IG1hcCAoa2JkICJDLWMgQy10 IikgICAnZG9jLXZpZXctb3Blbi10ZXh0KQogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgInIiKSAg ICAgICAgICdyZXZlcnQtYnVmZmVyKQogICAgbWFwKQogICJLZXltYXAgdXNlZCBieSBgZG9jLXZp ZXctbW9kZScgd2hlbiBkaXNwbGF5aW5nIGEgZG9jIGFzIGEgc2V0IG9mIGltYWdlcy4iKQoKKGRl ZmluZS1vYnNvbGV0ZS1mdW5jdGlvbi1hbGlhcyAnZG9jLXZpZXctcmV2ZXJ0LWJ1ZmZlciAjJ3Jl dmVydC1idWZmZXIgIjI3LjEiKQooZGVmdmFyIHJldmVydC1idWZmZXItcHJlc2VydmUtbW9kZXMp CihkZWZ1biBkb2Mtdmlldy0tcmV2ZXJ0LWJ1ZmZlciAob3JpZy1mdW4gJnJlc3QgYXJncykKICAi UHJlc2VydmUgdGhlIGJ1ZmZlcidzIGN1cnJlbnQgbW9kZSBhbmQgY2hlY2sgUERGIHNhbml0eS4i CiAgKGlmICg8IHVuZG8tb3V0ZXItbGltaXQgKCogMiAoYnVmZmVyLXNpemUpKSkKICAgICAgOzsg SXQncyBub3JtYWwgZm9yIHRoaXMgb3BlcmF0aW9uIHRvIHJlc3VsdCBpbiBhIHZlcnkgbGFyZ2Ug dW5kbyBlbnRyeS4KICAgICAgKHNldHEtbG9jYWwgdW5kby1vdXRlci1saW1pdCAoKiAyIChidWZm ZXItc2l6ZSkpKSkKICAoY2wtbGFiZWxzICgocmV2ZXJ0ICgpCiAgICAgICAgICAgICAgICAgICAg ICAobGV0ICgocmV2ZXJ0LWJ1ZmZlci1wcmVzZXJ2ZS1tb2RlcyB0KSkKICAgICAgICAgICAgICAg ICAgICAgICAgKGFwcGx5IG9yaWctZnVuIGFyZ3MpCiAgICAgICAgICAgICAgICAgICAgICAgIDs7 IFVwZGF0ZSB0aGUgY2FjaGVkIHZlcnNpb24gb2YgdGhlIHBkZiBmaWxlLAogICAgICAgICAgICAg ICAgICAgICAgICA7OyB0b28uICBUaGlzIGlzIHRoZSBvbmUgdGhhdCdzIHVzZWQgd2hlbgogICAg ICAgICAgICAgICAgICAgICAgICA7OyByZW5kZXJpbmcgKGJ1ZyMyNjk5NikuCiAgICAgICAgICAg ICAgICAgICAgICAgICh1bmxlc3MgKGVxdWFsIGJ1ZmZlci1maWxlLW5hbWUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgOzsgRklYTUU6IExhcnMgc2F5cyBoZSBuZWVkZWQgdG8g cmVjcmVhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICA7OyB0aGUgZGlyLCB3ZSBzaG91bGQg ZmlndXJlIG91dCB3aHkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvYy12aWV3LW1ha2Ut c2FmZS1kaXIgZG9jLXZpZXctY2FjaGUtZGlyZWN0b3J5KQogICAgICAgICAgICAgICAgICAgICAg ICAgICh3cml0ZS1yZWdpb24gbmlsIG5pbCBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZSkpKSkp CiAgICAoaWYgKGFuZCAoZXEgJ3BkZiBkb2Mtdmlldy1kb2MtdHlwZSkKICAgICAgICAgICAgIChl eGVjdXRhYmxlLWZpbmQgInBkZmluZm8iKSkKICAgICAgICA7OyBXZSBkb24ndCB3YW50IHRvIHJl dmVydCBpZiB0aGUgUERGIGZpbGUgaXMgY29ycnVwdGVkIHdoaWNoCiAgICAgICAgOzsgbWlnaHQg aGFwcGVuIHdoZW4gaXQgaXMgY3VycmVudGx5IHJlY29tcGlsZWQgZnJvbSBhIHRleAogICAgICAg IDs7IGZpbGUuICAoVE9ETzogV2UnZCBsaWtlIHRvIGhhdmUgc29tZXRoaW5nIGxpa2UgdGhhdCBh bHNvCiAgICAgICAgOzsgZm9yIG90aGVyIHR5cGVzLCBhdCBsZWFzdCBQUywgYnV0IEkgZG9uJ3Qg a25vdyBhIGdvb2Qgd2F5CiAgICAgICAgOzsgdG8gdGVzdCBpZiBhIFBTIGZpbGUgaXMgY29tcGxl dGUuKQogICAgICAgIChpZiAoPSAwIChjYWxsLXByb2Nlc3MgInBkZmluZm8iIG5pbCBuaWwgbmls CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFt ZSkpCiAgICAgICAgICAgIChyZXZlcnQpCiAgICAgICAgICAod2hlbiAoY2FsbGVkLWludGVyYWN0 aXZlbHktcCAnaW50ZXJhY3RpdmUpCiAgICAgICAgICAgIChtZXNzYWdlICJDYW4ndCByZXZlcnQg cmlnaHQgbm93IGJlY2F1c2UgdGhlIGZpbGUgaXMgY29ycnVwdGVkLiIpKSkKICAgICAgKHJldmVy dCkpKSkKCgooZWFzeS1tZW51LWRlZmluZSBkb2Mtdmlldy1tZW51IGRvYy12aWV3LW1vZGUtbWFw CiAgIk1lbnUgZm9yIERvYyBWaWV3IG1vZGUuIgogICcoIkRvY1ZpZXciCiAgICBbIk5leHQgcGFn ZSIgICAgICAgICAgICAgICAgZG9jLXZpZXctbmV4dC1wYWdlCiAgICAgOmhlbHAgICAgICAgICAg ICAgICAgICAgICAgIkdvIHRvIHRoZSBuZXh0IHBhZ2UiXQogICAgWyJQcmV2aW91cyBwYWdlIiAg ICAgICAgICAgIGRvYy12aWV3LXByZXZpb3VzLXBhZ2UKICAgICA6aGVscCAgICAgICAgICAgICAg ICAgICAgICAiR28gdG8gdGhlIHByZXZpb3VzIHBhZ2UiXQogICAgKCJPdGhlciBOYXZpZ2F0aW9u IgogICAgIFsiR28gdG8gcGFnZS4uLiIgICAgICAgICAgIGRvYy12aWV3LWdvdG8tcGFnZQogICAg ICA6aGVscCAgICAgICAgICAgICAgICAgICAgICJHbyB0byBzcGVjaWZpYyBwYWdlIl0KICAgICAi LS0tIgogICAgIFsiRmlyc3QgcGFnZSIgICAgICAgICAgICAgIGRvYy12aWV3LWZpcnN0LXBhZ2UK ICAgICAgOmhlbHAgICAgICAgICAgICAgICAgICAgICAiVmlldyB0aGUgZmlyc3QgcGFnZSJdCiAg ICAgWyJMYXN0IHBhZ2UiICAgICAgICAgICAgICAgZG9jLXZpZXctbGFzdC1wYWdlCiAgICAgIDpo ZWxwICAgICAgICAgICAgICAgICAgICAgIlZpZXcgdGhlIGxhc3QgcGFnZSJdCiAgICAgIi0tLSIK ICAgICBbIk1vdmUgZm9yd2FyZCIgICAgICAgICAgICBkb2Mtdmlldy1zY3JvbGwtdXAtb3ItbmV4 dC1wYWdlCiAgICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgIlNjcm9sbCBwYWdlIHVwIG9y IGdvIHRvIG5leHQgcGFnZSJdCiAgICAgWyJNb3ZlIGJhY2t3YXJkIiAgICAgICAgICAgZG9jLXZp ZXctc2Nyb2xsLWRvd24tb3ItcHJldmlvdXMtcGFnZQogICAgICA6aGVscCAgICAgICAgICAgICAg ICAgICAgICJTY3JvbGwgcGFnZSBkb3duIG9yIGdvIHRvIHByZXZpb3VzIHBhZ2UiXSkKICAgICgi Q29udGludW91cyBTY3JvbGxpbmciCiAgICAgWyJPZmYiICAgICAgICAgICAgICAgICAgICAgKHNl dHEgZG9jLXZpZXctY29udGludW91cyBuaWwpCiAgICAgIDpzdHlsZSByYWRpbyA6c2VsZWN0ZWQg ICAgKGVxIGRvYy12aWV3LWNvbnRpbnVvdXMgbmlsKQogICAgICA6aGVscCAgICAgICAgICAgICAg ICAgICAgICJTY3JvbGxpbmcgc3RvcHMgYXQgcGFnZSBiZWdpbm5pbmcgYW5kIGVuZCJdCiAgICAg WyJPbiIJCSAgICAgICAgKHNldHEgZG9jLXZpZXctY29udGludW91cyB0KQogICAgICA6c3R5bGUg cmFkaW8gOnNlbGVjdGVkICAgIChlcSBkb2Mtdmlldy1jb250aW51b3VzIHQpCiAgICAgIDpoZWxw ICAgICAgICAgICAgICAgICAgICAgIlNjcm9sbGluZyBjb250aW51ZXMgdG8gbmV4dCBvciBwcmV2 aW91cyBwYWdlIl0KICAgICAiLS0tIgogICAgIFsiU2F2ZSBhcyBEZWZhdWx0IiAgICAgICAgIChj dXN0b21pemUtc2F2ZS12YXJpYWJsZSAnZG9jLXZpZXctY29udGludW91cyBkb2Mtdmlldy1jb250 aW51b3VzKQogICAgICA6aGVscCAgICAgICAgICAgICAgICAgICAgICJTYXZlIGN1cnJlbnQgY29u dGludW91cyBzY3JvbGxpbmcgb3B0aW9uIGFzIGRlZmF1bHQiXQogICAgICkKICAgICItLS0iCiAg ICAoIlRvZ2dsZSBlZGl0L2Rpc3BsYXkiCiAgICAgWyJFZGl0IGRvY3VtZW50IiAgICAgICAgICAg ZG9jLXZpZXctdG9nZ2xlLWRpc3BsYXkKICAgICAgOnN0eWxlIHJhZGlvIDpzZWxlY3RlZCAgICAo ZXEgbWFqb3ItbW9kZSAnZG9jLXZpZXctLXRleHQtdmlldy1tb2RlKV0KICAgICBbIkRpc3BsYXkg ZG9jdW1lbnQiICAgICAgICAobGFtYmRhICgpKSA7IGlnbm9yZSBidXQgc2hvdyBubyBrZXliaW5k aW5nCiAgICAgIDpzdHlsZSByYWRpbyA6c2VsZWN0ZWQgICAgKGVxIG1ham9yLW1vZGUgJ2RvYy12 aWV3LW1vZGUpXSkKICAgICgiQWRqdXN0IERpc3BsYXkiCiAgICAgWyJGaXQgdG8gd2luZG93IiAg ICAgICAgICAgZG9jLXZpZXctZml0LXBhZ2UtdG8td2luZG93CiAgICAgIDpoZWxwICAgICAgICAg ICAgICAgICAgICAgIkZpdCB0aGUgaW1hZ2UgdG8gdGhlIHdpbmRvdyJdCiAgICAgWyJGaXQgd2lk dGgiICAgICAgICAgICAgICAgZG9jLXZpZXctZml0LXdpZHRoLXRvLXdpbmRvdwogICAgICA6aGVs cCAgICAgICAgICAgICAgICAgICAgICJGaXQgdGhlIGltYWdlIHdpZHRoIHRvIHRoZSB3aW5kb3cg d2lkdGgiXQogICAgIFsiRml0IGhlaWdodCIgICAgICAgICAgICAgIGRvYy12aWV3LWZpdC1oZWln aHQtdG8td2luZG93CiAgICAgIDpoZWxwICAgICAgICAgICAgICAgICAgICAgIkZpdCB0aGUgaW1h Z2UgaGVpZ2h0IHRvIHRoZSB3aW5kb3cgaGVpZ2h0Il0KICAgICAiLS0tIgogICAgIFsiRW5sYXJn ZSIgICAgICAgICAgICAgICAgIGRvYy12aWV3LWVubGFyZ2UKICAgICAgOmhlbHAgICAgICAgICAg ICAgICAgICAgICAiRW5sYXJnZSB0aGUgZG9jdW1lbnQiXQogICAgIFsiU2hyaW5rIiAgICAgICAg ICAgICAgICAgIGRvYy12aWV3LXNocmluawogICAgICA6aGVscCAgICAgICAgICAgICAgICAgICAg ICJTaHJpbmsgdGhlIGRvY3VtZW50Il0KICAgICAiLS0tIgogICAgIFsiU2V0IFNsaWNlIiAgICAg ICAgICAgICAgIGRvYy12aWV3LXNldC1zbGljZS11c2luZy1tb3VzZQogICAgICA6aGVscCAgICAg ICAgICAgICAgICAgICAgICJTZXQgdGhlIHNsaWNlIG9mIHRoZSBpbWFnZXMgdGhhdCBzaG91bGQg YmUgZGlzcGxheWVkIl0KICAgICBbIlNldCBTbGljZSAoQm91bmRpbmdCb3gpIiBkb2Mtdmlldy1z ZXQtc2xpY2UtZnJvbS1ib3VuZGluZy1ib3gKICAgICAgOmhlbHAgICAgICAgICAgICAgICAgICAg ICAiU2V0IHRoZSBzbGljZSBmcm9tIHRoZSBkb2N1bWVudCdzIEJvdW5kaW5nQm94IGluZm9ybWF0 aW9uIl0KICAgICBbIlNldCBTbGljZSAobWFudWFsKSIJZG9jLXZpZXctc2V0LXNsaWNlCiAgICAg IDpoZWxwICAgICAgICAgICAgICAgICAgICAgIlNldCB0aGUgc2xpY2Ugb2YgdGhlIGltYWdlcyB0 aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQiXQogICAgIFsiUmVzZXQgU2xpY2UiCQlkb2Mtdmlldy1y ZXNldC1zbGljZQogICAgICA6aGVscCAgICAgICAgICAgICAgICAgICAgICJSZXNldCB0aGUgY3Vy cmVudCBzbGljZSIKICAgICAgOmVuYWJsZWQgICAgICAgICAgICAgICAgICAoYm9va3JvbGwtbW9k ZS13aW5kb3ctZ2V0ICdzbGljZSldKQogICAgIi0tLSIKICAgIFsiTmV3IFNlYXJjaCIgICAgICAg ICAgICAgICAoZG9jLXZpZXctc2VhcmNoIHQpCiAgICAgOmhlbHAgICAgICAgICAgICAgICAgICAg ICAgIkluaXRpYXRlIGEgbmV3IHNlYXJjaCJdCiAgICBbIlNlYXJjaCBGb3J3YXJkIiAgICAgICAg ICAgZG9jLXZpZXctc2VhcmNoCiAgICAgOmhlbHAgICAgICAgICAgICAgICAgICAgICAgIkp1bXAg dG8gdGhlIG5leHQgbWF0Y2ggb3IgaW5pdGlhdGUgYSBuZXcgc2VhcmNoIl0KICAgIFsiU2VhcmNo IEJhY2t3YXJkIiAgICAgICAgICBkb2Mtdmlldy1zZWFyY2gtYmFja3dhcmQKICAgICA6aGVscCAg ICAgICAgICAgICAgICAgICAgICAiSnVtcCB0byB0aGUgcHJldmlvdXMgbWF0Y2ggb3IgaW5pdGlh dGUgYSBuZXcgc2VhcmNoIl0KICAgICkpCgooZGVmdmFyIGRvYy12aWV3LW1pbm9yLW1vZGUtbWFw CiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCiAgICA7OyBUb2dnbGUgYmV0d2Vl biB0ZXh0IGFuZCBpbWFnZSBkaXNwbGF5IG9yIGVkaXRpbmcKICAgIChkZWZpbmUta2V5IG1hcCAo a2JkICJDLWMgQy1jIikgJ2RvYy12aWV3LXRvZ2dsZS1kaXNwbGF5KQogICAgbWFwKQogICJLZXlt YXAgdXNlZCBieSBgZG9jLXZpZXctbWlub3ItbW9kZScuIikKCihlYXN5LW1lbnUtZGVmaW5lIGRv Yy12aWV3LW1pbm9yLW1vZGUtbWVudSBkb2Mtdmlldy1taW5vci1tb2RlLW1hcAogICJNZW51IGZv ciBEb2MgVmlldyBtaW5vciBtb2RlLiIKICAnKCJEb2NWaWV3IChlZGl0KSIKICAgICgiVG9nZ2xl IGVkaXQvZGlzcGxheSIKICAgICBbIkVkaXQgZG9jdW1lbnQiICAgICAgICAgICAobGFtYmRhICgp KSA7IGlnbm9yZSBidXQgc2hvdyBubyBrZXliaW5kaW5nCiAgICAgIDpzdHlsZSByYWRpbyA6c2Vs ZWN0ZWQgICAgKGVxIG1ham9yLW1vZGUgJ2RvYy12aWV3LS10ZXh0LXZpZXctbW9kZSldCiAgICAg WyJEaXNwbGF5IGRvY3VtZW50IiAgICAgICAgZG9jLXZpZXctdG9nZ2xlLWRpc3BsYXkKICAgICAg OnN0eWxlIHJhZGlvIDpzZWxlY3RlZCAgICAoZXEgbWFqb3ItbW9kZSAnZG9jLXZpZXctbW9kZSld KQogICAgWyJFeGl0IERvY1ZpZXcgTW9kZSIgZG9jLXZpZXctbWlub3ItbW9kZV0pKQoKOzs7OyBO YXZpZ2F0aW9uIENvbW1hbmRzCgo7OyBGSVhNRTogVGhlIGRvYy12aWV3LWN1cnJlbnQtKiBkZWZp bml0aW9ucyBiZWxvdyBhcmUgbWFjcm9zIGJlY2F1c2UgdGhleQo7OyBtYXAgdG8gYWNjZXNzb3Jz IHdoaWNoIHdlIHdhbnQgdG8gdXNlIHZpYSBgc2V0ZicgYXMgd2VsbCEKKGRlZm1hY3JvIGRvYy12 aWV3LWN1cnJlbnQtcGFnZSAoJm9wdGlvbmFsIHdpbikKICBgKGJvb2tyb2xsLW1vZGUtd2luZG93 LWdldCAncGFnZSAsd2luKSkKKGRlZm1hY3JvIGRvYy12aWV3LWN1cnJlbnQtaW5mbyAoKSAnKGJv b2tyb2xsLW1vZGUtd2luZG93LWdldCAnaW5mbykpCihkZWZtYWNybyBkb2Mtdmlldy1jb250cm9s LW92ZXJsYXkgKCkgJyhib29rcm9sbC1tb2RlLXdpbmRvdy1nZXQgJ292ZXJsYXkpKQooZGVmbWFj cm8gZG9jLXZpZXctb3ZlcmxheXMgKCkgJyhib29rcm9sbC1tb2RlLXdpbmRvdy1nZXQgJ292ZXJs YXlzKSkKKGRlZm1hY3JvIGRvYy12aWV3LWN1cnJlbnQtaW1hZ2UgKCkgJyhib29rcm9sbC1tb2Rl LXdpbmRvdy1nZXQgJ2ltYWdlKSkKKGRlZm1hY3JvIGRvYy12aWV3LWN1cnJlbnQtc2xpY2UgKCkg Jyhib29rcm9sbC1tb2RlLXdpbmRvdy1nZXQgJ3NsaWNlKSkKCihkZWZ1biBkb2Mtdmlldy1sYXN0 LXBhZ2UtbnVtYmVyICgpCiAgKGxlbmd0aCBkb2Mtdmlldy0tY3VycmVudC1maWxlcykpCgooZGVm dW4gZG9jLXZpZXctZ290by1wYWdlIChwYWdlKQogICJWaWV3IHRoZSBwYWdlIGdpdmVuIGJ5IFBB R0UuIgogIChpbnRlcmFjdGl2ZSAiblBhZ2U6ICIpCiAgKGxldCAoKGxlbiAoZG9jLXZpZXctbGFz dC1wYWdlLW51bWJlcikpKQogICAgKGlmICg8IHBhZ2UgMSkKCShzZXRxIHBhZ2UgMSkKICAgICAg KHdoZW4gKGFuZCAoPiBwYWdlIGxlbikKICAgICAgICAgICAgICAgICA7OyBBcyBsb25nIGFzIHRo ZSBjb252ZXJ0ZXIgaXMgcnVubmluZywgd2UgZG9uJ3Qga25vdwogICAgICAgICAgICAgICAgIDs7 IGhvdyBtYW55IHBhZ2VzIHdpbGwgYmUgYXZhaWxhYmxlLgogICAgICAgICAgICAgICAgIChudWxs IGRvYy12aWV3LS1jdXJyZW50LWNvbnZlcnRlci1wcm9jZXNzZXMpKQoJKHNldHEgcGFnZSBsZW4p KSkKICAgIChmb3JjZS1tb2RlLWxpbmUtdXBkYXRlKSAgICAgICAgICAgIDtUbyB1cGRhdGUgYGN1 cnJlbnQtcGFnZScuCiAgICAoc2V0ZiAoZG9jLXZpZXctY3VycmVudC1wYWdlKSBwYWdlCgkgIChk b2Mtdmlldy1jdXJyZW50LWluZm8pCgkgIChjb25jYXQKCSAgIChwcm9wZXJ0aXplCgkgICAgKGZv cm1hdCAiUGFnZSAlZCBvZiAlZC4iIHBhZ2UgbGVuKSAnZmFjZSAnYm9sZCkKCSAgIDs7IFRlbGwg dXNlciBpZiBjb252ZXJ0aW5nIGlzbid0IGZpbmlzaGVkIHlldAoJICAgKGlmIGRvYy12aWV3LS1j dXJyZW50LWNvbnZlcnRlci1wcm9jZXNzZXMKCSAgICAgICAiIChzdGlsbCBjb252ZXJ0aW5nLi4u KVxuIgoJICAgICAiXG4iKQoJICAgOzsgRGlzcGxheSBjb250ZXh0IGluZm9zIGlmIHRoaXMgcGFn ZSBtYXRjaGVzIHRoZSBsYXN0IHNlYXJjaAoJICAgKHdoZW4gKGFuZCBkb2Mtdmlldy0tY3VycmVu dC1zZWFyY2gtbWF0Y2hlcwoJCSAgICAgIChhc3NxIHBhZ2UgZG9jLXZpZXctLWN1cnJlbnQtc2Vh cmNoLW1hdGNoZXMpKQoJICAgICAoY29uY2F0IChwcm9wZXJ0aXplICJTZWFyY2ggbWF0Y2hlczpc biIgJ2ZhY2UgJ2JvbGQpCgkJICAgICAobGV0ICgoY29udGV4dHMgIiIpKQoJCSAgICAgICAoZG9s aXN0IChtIChjZHIgKGFzc3EgcGFnZQoJCQkJCSAgICAgZG9jLXZpZXctLWN1cnJlbnQtc2VhcmNo LW1hdGNoZXMpKSkKCQkJIChzZXRxIGNvbnRleHRzIChjb25jYXQgY29udGV4dHMgIiAgLSBcIiIg bSAiXCJcbiIpKSkKCQkgICAgICAgY29udGV4dHMpKSkpKQogICAgOzsgVXBkYXRlIHRoZSBidWZm ZXIKICAgIDs7IFdlIHVzZWQgdG8gZmluZCB0aGUgZmlsZSBuYW1lIGZyb20gZG9jLXZpZXctLWN1 cnJlbnQtZmlsZXMgYnV0CiAgICA7OyB0aGF0J3Mgbm90IHJpZ2h0IGlmIHRoZSBwYWdlcyBhcmUg bm90IGdlbmVyYXRlZCBzZXF1ZW50aWFsbHkKICAgIDs7IG9yIGlmIHRoZSBwYWdlIGlzbid0IGlu IGRvYy12aWV3LS1jdXJyZW50LWZpbGVzIHlldC4KICAgIChsZXQgKChmaWxlIChleHBhbmQtZmls ZS1uYW1lCiAgICAgICAgICAgICAgICAgKGZvcm1hdCBkb2Mtdmlldy0taW1hZ2UtZmlsZS1wYXR0 ZXJuIHBhZ2UpCiAgICAgICAgICAgICAgICAgKGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRpcikp KSkKICAgICAgKGRvYy12aWV3LWluc2VydC1pbWFnZSBmaWxlIDpwb2ludGVyICdhcnJvdykKICAg ICAgKHdoZW4gKGFuZCAobm90IChmaWxlLWV4aXN0cy1wIGZpbGUpKQogICAgICAgICAgICAgICAg IGRvYy12aWV3LS1jdXJyZW50LWNvbnZlcnRlci1wcm9jZXNzZXMpCiAgICAgICAgOzsgVGhlIFBO RyBmaWxlIGhhc24ndCBiZWVuIGdlbmVyYXRlZCB5ZXQuCiAgICAgICAgKGZ1bmNhbGwgZG9jLXZp ZXctc2luZ2xlLXBhZ2UtY29udmVydGVyLWZ1bmN0aW9uCgkJIGRvYy12aWV3LS1idWZmZXItZmls ZS1uYW1lIGZpbGUgcGFnZQoJCSAobGV0ICgod2luIChzZWxlY3RlZC13aW5kb3cpKSkKCQkgICAo bGFtYmRhICgpCgkJICAgICAoYW5kIChlcSAoY3VycmVudC1idWZmZXIpICh3aW5kb3ctYnVmZmVy IHdpbikpCgkJCSAgOzsgSWYgd2UgY2hhbmdlZCBwYWdlIGluIHRoZSBtZWFuCgkJCSAgOzsgdGlt ZSwgZG9uJ3QgbWVzcyB0aGluZ3MgdXAuCgkJCSAgKGVxIChkb2Mtdmlldy1jdXJyZW50LXBhZ2Ug d2luKSBwYWdlKQoJCQkgIDs7IE1ha2Ugc3VyZSB3ZSBkb24ndCBpbmZsb29wLgoJCQkgIChmaWxl LXJlYWRhYmxlLXAgZmlsZSkKCQkJICAod2l0aC1zZWxlY3RlZC13aW5kb3cgd2luCgkJCSAgICAo ZG9jLXZpZXctZ290by1wYWdlIHBhZ2UpKSkpKSkpKQogICAgOzsgKG1lc3NhZ2UgIkQxICVzIiAo Ym9va3JvbGwtbW9kZS13aW5wcm9wcykpCiAgICAob3ZlcmxheS1wdXQgKGRvYy12aWV3LWNvbnRy b2wtb3ZlcmxheSkKCQkgJ2hlbHAtZWNobyAoZG9jLXZpZXctY3VycmVudC1pbmZvKSkKICAgIChn b3RvLWNoYXIgKHBvaW50LW1pbikpKSkKCihkZWZ1biBkb2Mtdmlldy1uZXh0LXBhZ2UgKCZvcHRp b25hbCBhcmcpCiAgIkJyb3dzZSBBUkcgcGFnZXMgZm9yd2FyZC4iCiAgKGludGVyYWN0aXZlICJw IikKICAoZG9jLXZpZXctZ290by1wYWdlICgrIChkb2Mtdmlldy1jdXJyZW50LXBhZ2UpIChvciBh cmcgMSkpKSkKCihkZWZ1biBkb2Mtdmlldy1wcmV2aW91cy1wYWdlICgmb3B0aW9uYWwgYXJnKQog ICJCcm93c2UgQVJHIHBhZ2VzIGJhY2t3YXJkLiIKICAoaW50ZXJhY3RpdmUgInAiKQogIChkb2Mt dmlldy1nb3RvLXBhZ2UgKC0gKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkgKG9yIGFyZyAxKSkpKQoK KGRlZnVuIGRvYy12aWV3LWZpcnN0LXBhZ2UgKCkKICAiVmlldyB0aGUgZmlyc3QgcGFnZS4iCiAg KGludGVyYWN0aXZlKQogIChkb2Mtdmlldy1nb3RvLXBhZ2UgMSkpCgooZGVmdW4gZG9jLXZpZXct bGFzdC1wYWdlICgpCiAgIlZpZXcgdGhlIGxhc3QgcGFnZS4iCiAgKGludGVyYWN0aXZlKQogIChk b2Mtdmlldy1nb3RvLXBhZ2UgKGRvYy12aWV3LWxhc3QtcGFnZS1udW1iZXIpKSkKCihkZWZ1biBk b2Mtdmlldy1zY3JvbGwtdXAtb3ItbmV4dC1wYWdlICgmb3B0aW9uYWwgYXJnKQogICJTY3JvbGwg cGFnZSB1cCBBUkcgbGluZXMgaWYgcG9zc2libGUsIGVsc2UgZ290byBuZXh0IHBhZ2UuCldoZW4g YGRvYy12aWV3LWNvbnRpbnVvdXMnIGlzIG5vbi1uaWwsIHNjcm9sbGluZyB1cHdhcmQKYXQgdGhl IGJvdHRvbSBlZGdlIG9mIHRoZSBwYWdlIG1vdmVzIHRvIHRoZSBuZXh0IHBhZ2UuCk90aGVyd2lz ZSwgZ290byBuZXh0IHBhZ2Ugb25seSBvbiB0eXBpbmcgU1BDIChBUkcgaXMgbmlsKS4iCiAgKGlu dGVyYWN0aXZlICJQIikKICAoaWYgKG9yIGRvYy12aWV3LWNvbnRpbnVvdXMgKG51bGwgYXJnKSkK ICAgICAgKGxldCAoKGhzY3JvbGwgKHdpbmRvdy1oc2Nyb2xsKSkKCSAgICAoY3VyLXBhZ2UgKGRv Yy12aWV3LWN1cnJlbnQtcGFnZSkpKQoJKHdoZW4gKD0gKHdpbmRvdy12c2Nyb2xsIG5pbCB0KSAo aW1hZ2Utc2Nyb2xsLXVwIGFyZykpCgkgIChkb2Mtdmlldy1uZXh0LXBhZ2UpCgkgICh3aGVuICgv PSBjdXItcGFnZSAoZG9jLXZpZXctY3VycmVudC1wYWdlKSkKCSAgICAoaW1hZ2UtYm9iKQoJICAg IChpbWFnZS1ib2wgMSkpCgkgIChzZXQtd2luZG93LWhzY3JvbGwgKHNlbGVjdGVkLXdpbmRvdykg aHNjcm9sbCkpKQogICAgKGltYWdlLXNjcm9sbC11cCBhcmcpKSkKCihkZWZ1biBkb2Mtdmlldy1z Y3JvbGwtZG93bi1vci1wcmV2aW91cy1wYWdlICgmb3B0aW9uYWwgYXJnKQogICJTY3JvbGwgcGFn ZSBkb3duIEFSRyBsaW5lcyBpZiBwb3NzaWJsZSwgZWxzZSBnb3RvIHByZXZpb3VzIHBhZ2UuCldo ZW4gYGRvYy12aWV3LWNvbnRpbnVvdXMnIGlzIG5vbi1uaWwsIHNjcm9sbGluZyBkb3dud2FyZAph dCB0aGUgdG9wIGVkZ2Ugb2YgdGhlIHBhZ2UgbW92ZXMgdG8gdGhlIHByZXZpb3VzIHBhZ2UuCk90 aGVyd2lzZSwgZ290byBwcmV2aW91cyBwYWdlIG9ubHkgb24gdHlwaW5nIERFTCAoQVJHIGlzIG5p bCkuIgogIChpbnRlcmFjdGl2ZSAiUCIpCiAgKGlmIChvciBkb2Mtdmlldy1jb250aW51b3VzIChu dWxsIGFyZykpCiAgICAgIChsZXQgKChoc2Nyb2xsICh3aW5kb3ctaHNjcm9sbCkpCgkgICAgKGN1 ci1wYWdlIChkb2Mtdmlldy1jdXJyZW50LXBhZ2UpKSkKCSh3aGVuICg9ICh3aW5kb3ctdnNjcm9s bCBuaWwgdCkgKGltYWdlLXNjcm9sbC1kb3duIGFyZykpCgkgIChkb2Mtdmlldy1wcmV2aW91cy1w YWdlKQoJICAod2hlbiAoLz0gY3VyLXBhZ2UgKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkpCgkgICAg KGltYWdlLWVvYikKCSAgICAoaW1hZ2UtYm9sIDEpKQoJICAoc2V0LXdpbmRvdy1oc2Nyb2xsIChz ZWxlY3RlZC13aW5kb3cpIGhzY3JvbGwpKSkKICAgIChpbWFnZS1zY3JvbGwtZG93biBhcmcpKSkK CihkZWZ1biBkb2Mtdmlldy1uZXh0LWxpbmUtb3ItbmV4dC1wYWdlICgmb3B0aW9uYWwgYXJnKQog ICJTY3JvbGwgdXB3YXJkIGJ5IEFSRyBsaW5lcyBpZiBwb3NzaWJsZSwgZWxzZSBnb3RvIG5leHQg cGFnZS4KV2hlbiBgZG9jLXZpZXctY29udGludW91cycgaXMgbm9uLW5pbCwgc2Nyb2xsaW5nIGEg bGluZSB1cHdhcmQKYXQgdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBwYWdlIG1vdmVzIHRvIHRoZSBu ZXh0IHBhZ2UuIgogIChpbnRlcmFjdGl2ZSAicCIpCiAgKGlmIGRvYy12aWV3LWNvbnRpbnVvdXMK ICAgICAgKGxldCAoKGhzY3JvbGwgKHdpbmRvdy1oc2Nyb2xsKSkKCSAgICAoY3VyLXBhZ2UgKGRv Yy12aWV3LWN1cnJlbnQtcGFnZSkpKQoJKHdoZW4gKD0gKHdpbmRvdy12c2Nyb2xsIG5pbCB0KSAo aW1hZ2UtbmV4dC1saW5lIGFyZykpCgkgIChkb2Mtdmlldy1uZXh0LXBhZ2UpCgkgICh3aGVuICgv PSBjdXItcGFnZSAoZG9jLXZpZXctY3VycmVudC1wYWdlKSkKCSAgICAoaW1hZ2UtYm9iKQoJICAg IChpbWFnZS1ib2wgMSkpCgkgIChzZXQtd2luZG93LWhzY3JvbGwgKHNlbGVjdGVkLXdpbmRvdykg aHNjcm9sbCkpKQogICAgKGltYWdlLW5leHQtbGluZSBhcmcpKSkKCihkZWZ1biBkb2Mtdmlldy1w cmV2aW91cy1saW5lLW9yLXByZXZpb3VzLXBhZ2UgKCZvcHRpb25hbCBhcmcpCiAgIlNjcm9sbCBk b3dud2FyZCBieSBBUkcgbGluZXMgaWYgcG9zc2libGUsIGVsc2UgZ290byBwcmV2aW91cyBwYWdl LgpXaGVuIGBkb2Mtdmlldy1jb250aW51b3VzJyBpcyBub24tbmlsLCBzY3JvbGxpbmcgYSBsaW5l IGRvd253YXJkCmF0IHRoZSB0b3AgZWRnZSBvZiB0aGUgcGFnZSBtb3ZlcyB0byB0aGUgcHJldmlv dXMgcGFnZS4iCiAgKGludGVyYWN0aXZlICJwIikKICAoaWYgZG9jLXZpZXctY29udGludW91cwog ICAgICAobGV0ICgoaHNjcm9sbCAod2luZG93LWhzY3JvbGwpKQoJICAgIChjdXItcGFnZSAoZG9j LXZpZXctY3VycmVudC1wYWdlKSkpCgkod2hlbiAoPSAod2luZG93LXZzY3JvbGwgbmlsIHQpIChp bWFnZS1wcmV2aW91cy1saW5lIGFyZykpCgkgIChkb2Mtdmlldy1wcmV2aW91cy1wYWdlKQoJICAo d2hlbiAoLz0gY3VyLXBhZ2UgKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkpCgkgICAgKGltYWdlLWVv YikKCSAgICAoaW1hZ2UtYm9sIDEpKQoJICAoc2V0LXdpbmRvdy1oc2Nyb2xsIChzZWxlY3RlZC13 aW5kb3cpIGhzY3JvbGwpKSkKICAgIChpbWFnZS1wcmV2aW91cy1saW5lIGFyZykpKQoKOzs7OyBV dGlsaXR5IEZ1bmN0aW9ucwoKKGRlZnVuIGRvYy12aWV3LWtpbGwtcHJvYyAoKQogICJLaWxsIHRo ZSBjdXJyZW50IGNvbnZlcnRlciBwcm9jZXNzKGVzKS4iCiAgKGludGVyYWN0aXZlKQogICh3aGls ZSAoY29uc3AgZG9jLXZpZXctLWN1cnJlbnQtY29udmVydGVyLXByb2Nlc3NlcykKICAgIChpZ25v cmUtZXJyb3JzIDs7IFNvbWUgZW50cmllcyBtaWdodCBub3QgYmUgcHJvY2Vzc2VzLCBhbmQgbWF5 YmUKCQkgICA7OyBzb21lIGFyZSBkZWFkIGFscmVhZHk/CiAgICAgIChraWxsLXByb2Nlc3MgKHBv cCBkb2Mtdmlldy0tY3VycmVudC1jb252ZXJ0ZXItcHJvY2Vzc2VzKSkpKQogICh3aGVuIGRvYy12 aWV3LS1jdXJyZW50LXRpbWVyCiAgICAoY2FuY2VsLXRpbWVyIGRvYy12aWV3LS1jdXJyZW50LXRp bWVyKQogICAgKHNldHEgZG9jLXZpZXctLWN1cnJlbnQtdGltZXIgbmlsKSkKICAoc2V0cSBtb2Rl LWxpbmUtcHJvY2VzcyBuaWwpKQoKKGRlZmluZS1vYnNvbGV0ZS1mdW5jdGlvbi1hbGlhcyAnZG9j LXZpZXcta2lsbC1wcm9jLWFuZC1idWZmZXIKICAjJ2ltYWdlLWtpbGwtYnVmZmVyICIyNS4xIikK CihkZWZ1biBkb2Mtdmlldy1tYWtlLXNhZmUtZGlyIChkaXIpCiAgKGNvbmRpdGlvbi1jYXNlIG5p bAogICAgICA7OyBDcmVhdGUgdGVtcCBmaWxlcyB3aXRoIHN0cmljdCBhY2Nlc3MgcmlnaHRzLiAg SXQncyBlYXN5IHRvCiAgICAgIDs7IGxvb3NlbiB0aGVtIGxhdGVyLCB3aGVyZWFzIGl0J3MgaW1w b3NzaWJsZSB0byBjbG9zZSB0aGUKICAgICAgOzsgdGltZS13aW5kb3cgb2YgbG9vc2UgcGVybWlz c2lvbnMgb3RoZXJ3aXNlLgogICAgICAod2l0aC1maWxlLW1vZGVzICNvMDcwMCAobWFrZS1kaXJl Y3RvcnkgZGlyKSkKICAgIChmaWxlLWFscmVhZHktZXhpc3RzCiAgICAgOzsgSW4gY2FzZSBpdCB3 YXMgY3JlYXRlZCBlYXJsaWVyIHdpdGggbG9vc2VyIHJpZ2h0cy4KICAgICA7OyBXZSBjb3VsZCBj aGVjayB0aGUgbW9kZSBpbmZvIHJldHVybmVkIGJ5IGZpbGUtYXR0cmlidXRlcywgYnV0IGl0J3MK ICAgICA7OyBhIHBhaW4gdG8gcGFyc2UgYW5kIGl0IG1heSBub3QgdGVsbCB5b3Ugd2hhdCB3ZSB3 YW50IHVuZGVyCiAgICAgOzsgbm9uLXN0YW5kYXJkIGZpbGUtc3lzdGVtcy4gIFNvIGxldCdzIGp1 c3Qgc2F5IHdoYXQgd2Ugd2FudCBhbmQgbGV0CiAgICAgOzsgdGhlIHVuZGVybHlpbmcgQyBjb2Rl IGFuZCBmaWxlLXN5c3RlbSBmaWd1cmUgaXQgb3V0LgogICAgIDs7IFRoaXMgYWxzbyBlbmRzIHVw IGNoZWNraW5nIGEgYnVuY2ggb2YgdXNlZnVsIGNvbmRpdGlvbnM6IGl0IG1ha2VzCiAgICAgOzsg c3VyZSB3ZSBoYXZlIHdyaXRlLWFjY2VzcyB0byB0aGUgZGlyZWN0b3J5IGFuZCB0aGF0IHdlIG93 biBpdCwgdGh1cwogICAgIDs7IGNsb3NpbmcgYSBidW5jaCBvZiBzZWN1cml0eSBob2xlcy4KICAg ICAoY29uZGl0aW9uLWNhc2UgZXJyb3IKCSAoc2V0LWZpbGUtbW9kZXMgZGlyICNvMDcwMCAnbm9m b2xsb3cpCiAgICAgICAoZmlsZS1lcnJvcgoJKGVycm9yCgkgKGZvcm1hdCAiVW5hYmxlIHRvIHVz ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5ICVzOiAlcyIKCQkgZGlyIChtYXBjb25jYXQgIydpZGVudGl0 eSAoY2RyIGVycm9yKSAiICIpKSkpKSkpKQoKKGRlZnVuIGRvYy12aWV3LS1jdXJyZW50LWNhY2hl LWRpciAoKQogICJSZXR1cm4gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgcG5nIGZpbGVzIG9mIHRo ZSBjdXJyZW50IGRvYyBzaG91bGQgYmUgc2F2ZWQuCkl0J3MgYSBzdWJkaXJlY3Rvcnkgb2YgYGRv Yy12aWV3LWNhY2hlLWRpcmVjdG9yeScuIgogIChpZiBkb2Mtdmlldy0tY3VycmVudC1jYWNoZS1k aXIKICAgICAgZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyCiAgICA7OyBUcnkgYW5kIG1ha2Ug c3VyZSBkb2Mtdmlldy1jYWNoZS1kaXJlY3RvcnkgZXhpc3RzIGFuZCBpcyBzYWZlLgogICAgKGRv Yy12aWV3LW1ha2Utc2FmZS1kaXIgZG9jLXZpZXctY2FjaGUtZGlyZWN0b3J5KQogICAgOzsgTm93 IGNvbXB1dGUgdGhlIHN1YmRpcmVjdG9yeSB0byB1c2UuCiAgICAoc2V0cSBkb2Mtdmlldy0tY3Vy cmVudC1jYWNoZS1kaXIKCSAgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkKCSAgIChleHBhbmQtZmls ZS1uYW1lCgkgICAgKGNvbmNhdCAodGhyZWFkLWxhc3QKICAgICAgICAgICAgICAgICAgICAgIChm aWxlLW5hbWUtbm9uZGlyZWN0b3J5IGRvYy12aWV3LS1idWZmZXItZmlsZS1uYW1lKQogICAgICAg ICAgICAgICAgICAgICAgOzsgYnVnIzEzNjc5CiAgICAgICAgICAgICAgICAgICAgICAoc3Vic3Qt Y2hhci1pbi1zdHJpbmcgPyUgP18pCiAgICAgICAgICAgICAgICAgICAgICA7OyBhcmMtbW9kZSBj b25jYXRlbmF0ZXMgYXJjaGl2ZSBuYW1lIGFuZCBmaWxlIG5hbWUKICAgICAgICAgICAgICAgICAg ICAgIDs7IHdpdGggY29sb24sIHdoaWNoIGlzbid0IGFsbG93ZWQgb24gTVMtV2luZG93cy4KICAg ICAgICAgICAgICAgICAgICAgIChzdWJzdC1jaGFyLWluLXN0cmluZyA/OiA/XykpCiAgICAgICAg ICAgICAgICAgICAgIi0iCiAgICAgICAgICAgICAgICAgICAgKGxldCAoKGZpbGUgZG9jLXZpZXct LWJ1ZmZlci1maWxlLW5hbWUpKQogICAgICAgICAgICAgICAgICAgICAgKHdpdGgtdGVtcC1idWZm ZXIKICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1idWZmZXItbXVsdGlieXRlIG5pbCkKICAg ICAgICAgICAgICAgICAgICAgICAgKGluc2VydC1maWxlLWNvbnRlbnRzLWxpdGVyYWxseSBmaWxl KQogICAgICAgICAgICAgICAgICAgICAgICAobWQ1IChjdXJyZW50LWJ1ZmZlcikpKSkpCiAgICAg ICAgICAgIGRvYy12aWV3LWNhY2hlLWRpcmVjdG9yeSkpKSkpCgo7OzsjIyNhdXRvbG9hZAooZGVm dW4gZG9jLXZpZXctbW9kZS1wICh0eXBlKQogICJSZXR1cm4gbm9uLW5pbCBpZiBkb2N1bWVudCB0 eXBlIFRZUEUgaXMgYXZhaWxhYmxlIGZvciBgZG9jLXZpZXcnLgpEb2N1bWVudCB0eXBlcyBhcmUg c3ltYm9scyBsaWtlIGBkdmknLCBgcHMnLCBgcGRmJywgb3IgYG9kZicgKGFueQpPcGVuRG9jdW1l bnQgZm9ybWF0KS4iCiAgKGFuZCAoZGlzcGxheS1ncmFwaGljLXApCiAgICAgICAoaW1hZ2UtdHlw ZS1hdmFpbGFibGUtcCAncG5nKQogICAgICAgKGNvbmQKCSgoZXEgdHlwZSAnZHZpKQoJIChhbmQg KGRvYy12aWV3LW1vZGUtcCAncGRmKQoJICAgICAgKG9yIChhbmQgZG9jLXZpZXctZHZpcGRmLXBy b2dyYW0KCQkgICAgICAgKGV4ZWN1dGFibGUtZmluZCBkb2Mtdmlldy1kdmlwZGYtcHJvZ3JhbSkp CgkJICAoYW5kIGRvYy12aWV3LWR2aXBkZm0tcHJvZ3JhbQoJCSAgICAgICAoZXhlY3V0YWJsZS1m aW5kIGRvYy12aWV3LWR2aXBkZm0tcHJvZ3JhbSkpKSkpCgkoKG1lbXEgdHlwZSAnKHBvc3RzY3Jp cHQgcHMgZXBzIHBkZikpCgkgKG9yIChhbmQgZG9jLXZpZXctZ2hvc3RzY3JpcHQtcHJvZ3JhbQoJ ICAgICAgICAgIChleGVjdXRhYmxlLWZpbmQgZG9jLXZpZXctZ2hvc3RzY3JpcHQtcHJvZ3JhbSkp CiAgICAgICAgICAgICAoYW5kIGRvYy12aWV3LXBkZmRyYXctcHJvZ3JhbQogICAgICAgICAgICAg ICAgICAoZXhlY3V0YWJsZS1maW5kIGRvYy12aWV3LXBkZmRyYXctcHJvZ3JhbSkpKSkKCSgoZXEg dHlwZSAnb2RmKQoJIChhbmQgZG9jLXZpZXctb2RmLT5wZGYtY29udmVydGVyLXByb2dyYW0KCSAg ICAgIChleGVjdXRhYmxlLWZpbmQgZG9jLXZpZXctb2RmLT5wZGYtY29udmVydGVyLXByb2dyYW0p CgkgICAgICAoZG9jLXZpZXctbW9kZS1wICdwZGYpKSkKCSgoZXEgdHlwZSAnZGp2dSkKCSAoZXhl Y3V0YWJsZS1maW5kICJkZGp2dSIpKQoJKHQgOzsgdW5rbm93biBpbWFnZSB0eXBlCgkgbmlsKSkp KQoKOzs7OyBDb252ZXJzaW9uIEZ1bmN0aW9ucwoKKGRlZnZhciBkb2Mtdmlldy1zaHJpbmstZmFj dG9yIDEuMTI1KQoKKGRlZnVuIGRvYy12aWV3LWVubGFyZ2UgKGZhY3RvcikKICAiRW5sYXJnZSB0 aGUgZG9jdW1lbnQgYnkgRkFDVE9SLiIKICAoaW50ZXJhY3RpdmUgKGxpc3QgZG9jLXZpZXctc2hy aW5rLWZhY3RvcikpCiAgKGlmIGRvYy12aWV3LXNjYWxlLWludGVybmFsbHkKICAgICAgKGxldCAo KG5ldyAoY2VpbGluZyAoKiBmYWN0b3IgZG9jLXZpZXctaW1hZ2Utd2lkdGgpKSkpCiAgICAgICAg KHVubGVzcyAoZXF1YWwgbmV3IGRvYy12aWV3LWltYWdlLXdpZHRoKQogICAgICAgICAgKHNldHEt bG9jYWwgZG9jLXZpZXctaW1hZ2Utd2lkdGggbmV3KQogICAgICAgICAgKGRvYy12aWV3LWluc2Vy dC1pbWFnZQogICAgICAgICAgIChwbGlzdC1nZXQgKGNkciAoZG9jLXZpZXctY3VycmVudC1pbWFn ZSkpIDpmaWxlKQogICAgICAgICAgIDp3aWR0aCBkb2Mtdmlldy1pbWFnZS13aWR0aCkpKQogICAg KGxldCAoKG5ldyAoY2VpbGluZyAoKiBmYWN0b3IgZG9jLXZpZXctcmVzb2x1dGlvbikpKSkKICAg ICAgKHVubGVzcyAoZXF1YWwgbmV3IGRvYy12aWV3LXJlc29sdXRpb24pCiAgICAgICAgKHNldHEt bG9jYWwgZG9jLXZpZXctcmVzb2x1dGlvbiBuZXcpCiAgICAgICAgKGRvYy12aWV3LXJlY29udmVy dC1kb2MpKSkpKQoKKGRlZnVuIGRvYy12aWV3LXNocmluayAoZmFjdG9yKQogICJTaHJpbmsgdGhl IGRvY3VtZW50IGJ5IEZBQ1RPUi4iCiAgKGludGVyYWN0aXZlIChsaXN0IGRvYy12aWV3LXNocmlu ay1mYWN0b3IpKQogIChkb2Mtdmlldy1lbmxhcmdlICgvIDEuMCBmYWN0b3IpKSkKCihkZWZ1biBk b2Mtdmlldy1zY2FsZS1yZXNldCAoKQogICJSZXNldCB0aGUgZG9jdW1lbnQgc2l6ZS96b29tIGxl dmVsIHRvIHRoZSBpbml0aWFsIG9uZS4iCiAgKGludGVyYWN0aXZlKQogIChpZiBkb2Mtdmlldy1z Y2FsZS1pbnRlcm5hbGx5CiAgICAgIChwcm9nbgoJKGtpbGwtbG9jYWwtdmFyaWFibGUgJ2RvYy12 aWV3LWltYWdlLXdpZHRoKQoJKGRvYy12aWV3LWluc2VydC1pbWFnZQoJIChwbGlzdC1nZXQgKGNk ciAoZG9jLXZpZXctY3VycmVudC1pbWFnZSkpIDpmaWxlKQoJIDp3aWR0aCBkb2Mtdmlldy1pbWFn ZS13aWR0aCkpCiAgICAoa2lsbC1sb2NhbC12YXJpYWJsZSAnZG9jLXZpZXctcmVzb2x1dGlvbikK ICAgIChkb2Mtdmlldy1yZWNvbnZlcnQtZG9jKSkpCgooZGVmdW4gZG9jLXZpZXctc2NhbGUtYWRq dXN0IChmYWN0b3IpCiAgIkFkanVzdCB0aGUgc2NhbGUgb2YgdGhlIERvY1ZpZXcgcGFnZSBpbWFn ZXMgYnkgRkFDVE9SLgpGQUNUT1IgZGVmYXVsdHMgdG8gYGRvYy12aWV3LXNocmluay1mYWN0b3In LgoKVGhlIGFjdHVhbCBhZGp1c3RtZW50IG1hZGUgZGVwZW5kcyBvbiB0aGUgZmluYWwgY29tcG9u ZW50IG9mIHRoZQprZXliaW5kaW5nIHVzZWQgdG8gaW52b2tlIHRoZSBjb21tYW5kLCB3aXRoIGFs bCBtb2RpZmllcnMgcmVtb3ZlZDoKCiAgICssID0gICBJbmNyZWFzZSB0aGUgaW1hZ2Ugc2NhbGUg YnkgRkFDVE9SCiAgIC0gICAgICBEZWNyZWFzZSB0aGUgaW1hZ2Ugc2NhbGUgYnkgRkFDVE9SCiAg IDAgICAgICBSZXNldCB0aGUgaW1hZ2Ugc2NhbGUgdG8gdGhlIGluaXRpYWwgc2NhbGUiCiAgKGlu dGVyYWN0aXZlIChsaXN0IGRvYy12aWV3LXNocmluay1mYWN0b3IpKQogIChsZXQgKChldiBsYXN0 LWNvbW1hbmQtZXZlbnQpCgkoZWNoby1rZXlzdHJva2VzIG5pbCkpCiAgICAocGNhc2UgKGV2ZW50 LWJhc2ljLXR5cGUgZXYpCiAgICAgICgob3IgPysgPz0pIChkb2Mtdmlldy1lbmxhcmdlIGZhY3Rv cikpCiAgICAgICg/LSAgICAgICAgIChkb2Mtdmlldy1zaHJpbmsgZmFjdG9yKSkKICAgICAgKD8w ICAgICAgICAgKGRvYy12aWV3LXNjYWxlLXJlc2V0KSkpKSkKCihkZWZ1biBkb2Mtdmlldy1maXQt d2lkdGgtdG8td2luZG93ICgpCiAgIkZpdCB0aGUgaW1hZ2Ugd2lkdGggdG8gdGhlIHdpbmRvdyB3 aWR0aC4iCiAgKGludGVyYWN0aXZlKQogIChsZXQgKCh3aW4td2lkdGggKC0gKG50aCAyICh3aW5k b3ctaW5zaWRlLXBpeGVsLWVkZ2VzKSkKICAgICAgICAgICAgICAgICAgICAgIChudGggMCAod2lu ZG93LWluc2lkZS1waXhlbC1lZGdlcykpKSkKICAgICAgICAoc2xpY2UgKGRvYy12aWV3LWN1cnJl bnQtc2xpY2UpKSkKICAgIChpZiAobm90IHNsaWNlKQogICAgICAgIChsZXQgKChpbWctd2lkdGgg KGNhciAoaW1hZ2UtZGlzcGxheS1zaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo aW1hZ2UtZ2V0LWRpc3BsYXktcHJvcGVydHkpIHQpKSkpCiAgICAgICAgICAoZG9jLXZpZXctZW5s YXJnZSAoLyAoZmxvYXQgd2luLXdpZHRoKSAoZmxvYXQgaW1nLXdpZHRoKSkpKQoKICAgICAgOzsg SWYgc2xpY2UgaXMgc2V0CiAgICAgIChsZXQqICgoc2xpY2Utd2lkdGggKG50aCAyIHNsaWNlKSkK ICAgICAgICAgICAgIChzY2FsZS1mYWN0b3IgKC8gKGZsb2F0IHdpbi13aWR0aCkgKGZsb2F0IHNs aWNlLXdpZHRoKSkpCiAgICAgICAgICAgICAobmV3LXNsaWNlIChtYXBjYXIgKGxhbWJkYSAoeCkg KGNlaWxpbmcgKCogc2NhbGUtZmFjdG9yIHgpKSkgc2xpY2UpKSkKCiAgICAgICAgKGRvYy12aWV3 LWVubGFyZ2Ugc2NhbGUtZmFjdG9yKQogICAgICAgIChzZXRmIChkb2Mtdmlldy1jdXJyZW50LXNs aWNlKSBuZXctc2xpY2UpCiAgICAgICAgKGRvYy12aWV3LWdvdG8tcGFnZSAoZG9jLXZpZXctY3Vy cmVudC1wYWdlKSkpKSkpCgooZGVmdW4gZG9jLXZpZXctZml0LWhlaWdodC10by13aW5kb3cgKCkK ICAiRml0IHRoZSBpbWFnZSBoZWlnaHQgdG8gdGhlIHdpbmRvdyBoZWlnaHQuIgogIChpbnRlcmFj dGl2ZSkKICAobGV0ICgod2luLWhlaWdodCAoLSAobnRoIDMgKHdpbmRvdy1pbnNpZGUtcGl4ZWwt ZWRnZXMpKQogICAgICAgICAgICAgICAgICAgICAgIChudGggMSAod2luZG93LWluc2lkZS1waXhl bC1lZGdlcykpKSkKICAgICAgICAoc2xpY2UgKGRvYy12aWV3LWN1cnJlbnQtc2xpY2UpKSkKICAg IChpZiAobm90IHNsaWNlKQogICAgICAgIChsZXQgKChpbWctaGVpZ2h0IChjZHIgKGltYWdlLWRp c3BsYXktc2l6ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbWFnZS1nZXQtZGlz cGxheS1wcm9wZXJ0eSkgdCkpKSkKICAgICAgICAgIDs7IFdoZW4gdXNlcnMgY2FsbCAnZG9jLXZp ZXctZml0LWhlaWdodC10by13aW5kb3cnLAogICAgICAgICAgOzsgdGhleSBtaWdodCB3YW50IHRv IGdvIHRvIG5leHQgcGFnZSBieSB0eXBpbmcgU1BDCiAgICAgICAgICA7OyBPTkxZIG9uY2UuIFNv IEkgdXNlZCAnKC0gd2luLWhlaWdodCAxKScgaW5zdGVhZCBvZgogICAgICAgICAgOzsgJ3dpbi1o ZWlnaHQnCiAgICAgICAgICAoZG9jLXZpZXctZW5sYXJnZSAoLyAoZmxvYXQgKC0gd2luLWhlaWdo dCAxKSkgKGZsb2F0IGltZy1oZWlnaHQpKSkpCgogICAgICA7OyBJZiBzbGljZSBpcyBzZXQKICAg ICAgKGxldCogKChzbGljZS1oZWlnaHQgKG50aCAzIHNsaWNlKSkKICAgICAgICAgICAgIChzY2Fs ZS1mYWN0b3IgKC8gKGZsb2F0ICgtIHdpbi1oZWlnaHQgMSkpIChmbG9hdCBzbGljZS1oZWlnaHQp KSkKICAgICAgICAgICAgIChuZXctc2xpY2UgKG1hcGNhciAobGFtYmRhICh4KSAoY2VpbGluZyAo KiBzY2FsZS1mYWN0b3IgeCkpKSBzbGljZSkpKQoKICAgICAgICAoZG9jLXZpZXctZW5sYXJnZSBz Y2FsZS1mYWN0b3IpCiAgICAgICAgKHNldGYgKGRvYy12aWV3LWN1cnJlbnQtc2xpY2UpIG5ldy1z bGljZSkKICAgICAgICAoZG9jLXZpZXctZ290by1wYWdlIChkb2Mtdmlldy1jdXJyZW50LXBhZ2Up KSkpKSkKCihkZWZ1biBkb2Mtdmlldy1maXQtcGFnZS10by13aW5kb3cgKCkKICAiRml0IHRoZSBp bWFnZSB0byB0aGUgd2luZG93LgpNb3JlIHNwZWNpZmljYWxseSwgdGhpcyBmdW5jdGlvbiBlbmxh cmdlcyBpbWFnZSBieToKCm1pbiB7KHdpbmRvdy13aWR0aCAvIGltYWdlLXdpZHRoKSwgKHdpbmRv dy1oZWlnaHQgLyBpbWFnZS1oZWlnaHQpfSB0aW1lcy4iCiAgKGludGVyYWN0aXZlKQogIChsZXQg KCh3aW4td2lkdGggKC0gKG50aCAyICh3aW5kb3ctaW5zaWRlLXBpeGVsLWVkZ2VzKSkKICAgICAg ICAgICAgICAgICAgICAgIChudGggMCAod2luZG93LWluc2lkZS1waXhlbC1lZGdlcykpKSkKICAg ICAgICAod2luLWhlaWdodCAoLSAobnRoIDMgKHdpbmRvdy1pbnNpZGUtcGl4ZWwtZWRnZXMpKQog ICAgICAgICAgICAgICAgICAgICAgIChudGggMSAod2luZG93LWluc2lkZS1waXhlbC1lZGdlcykp KSkKICAgICAgICAoc2xpY2UgKGRvYy12aWV3LWN1cnJlbnQtc2xpY2UpKSkKICAgIChpZiAobm90 IHNsaWNlKQogICAgICAgIChsZXQgKChpbWctd2lkdGggKGNhciAoaW1hZ2UtZGlzcGxheS1zaXpl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1hZ2UtZ2V0LWRpc3BsYXktcHJvcGVy dHkpIHQpKSkKICAgICAgICAgICAgICAoaW1nLWhlaWdodCAoY2RyIChpbWFnZS1kaXNwbGF5LXNp emUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1hZ2UtZ2V0LWRpc3BsYXktcHJv cGVydHkpIHQpKSkpCiAgICAgICAgICAoZG9jLXZpZXctZW5sYXJnZSAobWluICgvIChmbG9hdCB3 aW4td2lkdGgpIChmbG9hdCBpbWctd2lkdGgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoLyAoZmxvYXQgKC0gd2luLWhlaWdodCAxKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGZsb2F0IGltZy1oZWlnaHQpKSkpKQogICAgICA7OyBJZiBzbGljZSBpcyBz ZXQKICAgICAgKGxldCogKChzbGljZS13aWR0aCAobnRoIDIgc2xpY2UpKQogICAgICAgICAgICAg KHNsaWNlLWhlaWdodCAobnRoIDMgc2xpY2UpKQogICAgICAgICAgICAgKHNjYWxlLWZhY3RvciAo bWluICgvIChmbG9hdCB3aW4td2lkdGgpIChmbG9hdCBzbGljZS13aWR0aCkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKC8gKGZsb2F0ICgtIHdpbi1oZWlnaHQgMSkpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZsb2F0IHNsaWNlLWhlaWdodCkpKSkKICAgICAg ICAgICAgIChuZXctc2xpY2UgKG1hcGNhciAobGFtYmRhICh4KSAoY2VpbGluZyAoKiBzY2FsZS1m YWN0b3IgeCkpKSBzbGljZSkpKQogICAgICAgIChkb2Mtdmlldy1lbmxhcmdlIHNjYWxlLWZhY3Rv cikKICAgICAgICAoc2V0ZiAoZG9jLXZpZXctY3VycmVudC1zbGljZSkgbmV3LXNsaWNlKQogICAg ICAgIChkb2Mtdmlldy1nb3RvLXBhZ2UgKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkpKSkpKQoKKGRl ZnVuIGRvYy12aWV3LWZpdC13aW5kb3ctdG8tcGFnZSAoKQogICJSZXNpemUgc2VsZWN0ZWQgd2lu ZG93IHNvIGl0IGp1c3QgZml0cyB0aGUgY3VycmVudCBwYWdlLgpSZXNpemUgdGhlIGNvbnRhaW5p bmcgZnJhbWUgaWYgbmVlZGVkLiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCogKChzbGljZSAoZG9j LXZpZXctY3VycmVudC1zbGljZSkpCiAgICAgICAgIChpbWctd2lkdGggIChpZiBzbGljZSAobnRo IDIgc2xpY2UpCiAgICAgICAgICAgICAgICAgICAgICAgKGNhciAoaW1hZ2UtZGlzcGxheS1zaXpl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltYWdlLWdldC1kaXNwbGF5LXByb3BlcnR5 KSB0KSkpKQogICAgICAgICAoaW1nLWhlaWdodCAoaWYgc2xpY2UgKG50aCAzIHNsaWNlKQogICAg ICAgICAgICAgICAgICAgICAgIChjZHIgKGltYWdlLWRpc3BsYXktc2l6ZQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChpbWFnZS1nZXQtZGlzcGxheS1wcm9wZXJ0eSkgdCkpKSkKICAgICAg ICAgKHdpbi13aWR0aCAgKC0gKG50aCAyICh3aW5kb3ctaW5zaWRlLXBpeGVsLWVkZ2VzKSkKICAg ICAgICAgICAgICAgICAgICAgICAgKG50aCAwICh3aW5kb3ctaW5zaWRlLXBpeGVsLWVkZ2VzKSkp KQogICAgICAgICAod2luLWhlaWdodCAoLSAobnRoIDMgKHdpbmRvdy1pbnNpZGUtcGl4ZWwtZWRn ZXMpKQogICAgICAgICAgICAgICAgICAgICAgICAobnRoIDEgKHdpbmRvdy1pbnNpZGUtcGl4ZWwt ZWRnZXMpKSkpCiAgICAgICAgICh3aWR0aC1kaWZmICAoLSBpbWctd2lkdGggIHdpbi13aWR0aCkp CiAgICAgICAgIChoZWlnaHQtZGlmZiAoLSBpbWctaGVpZ2h0IHdpbi1oZWlnaHQpKQogICAgICAg ICAobmV3LWZyYW1lLXBhcmFtcwogICAgICAgICAgOzsgSWYgd2UgY2FuJ3QgcmVzaXplIHRoZSB3 aW5kb3csIHRyeSBhbmQgcmVzaXplIHRoZSBmcmFtZS4KICAgICAgICAgIDs7IFdlIHVzZWQgdG8g Y29tcGFyZSB0aGUgYHdpbmRvdy13aWR0aC9oZWlnaHRgIGFuZCB0aGUKICAgICAgICAgIDs7IGBm cmFtZS13aWR0aC9oZWlnaHRgIGluc3RlYWQgb2YgY2F0Y2hpbmcgdGhlIGVycm9ycywgYnV0CiAg ICAgICAgICA7OyBpdCdzIHRvbyBmaWRkbHkgKGUuZy4gaW4gdGhlIHByZXNlbmNlIG9mIHRoZSBt aW5pd2luZG93LAogICAgICAgICAgOzsgdGhlIGhlaWdodCB0aGUgZnJhbWUgc2hvdWxkIGJlIGVx dWFsIHRvIHRoZSBoZWlnaHQgb2YgdGhlCiAgICAgICAgICA7OyByb290IHdpbmRvdyArMSkuCiAg ICAgICAgICAoYXBwZW5kCiAgICAgICAgICAgKGNvbmRpdGlvbi1jYXNlIG5pbAogICAgICAgICAg ICAgICAocHJvZ24KICAgICAgICAgICAgICAgICAoZW5sYXJnZS13aW5kb3cgKC8gd2lkdGgtZGlm ZiAoZnJhbWUtY2hhci13aWR0aCkpICdob3JpeikKICAgICAgICAgICAgICAgICBuaWwpCiAgICAg ICAgICAgICAoZXJyb3IKICAgICAgICAgICAgICBgKCh3aWR0aCAgLiAodGV4dC1waXhlbHMKICAg ICAgICAgICAgICAgICAgICAgICAgICAgLiAsKCsgKGZyYW1lLXRleHQtd2lkdGgpIHdpZHRoLWRp ZmYpKSkpKSkKICAgICAgICAgICAoY29uZGl0aW9uLWNhc2UgbmlsCiAgICAgICAgICAgICAgIChw cm9nbgogICAgICAgICAgICAgICAgIChlbmxhcmdlLXdpbmRvdyAoLyBoZWlnaHQtZGlmZiAoZnJh bWUtY2hhci1oZWlnaHQpKSBuaWwpCiAgICAgICAgICAgICAgICAgbmlsKQogICAgICAgICAgICAg KGVycm9yCiAgICAgICAgICAgICAgYCgoaGVpZ2h0ICAuICh0ZXh0LXBpeGVscwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgLiAsKCsgKGZyYW1lLXRleHQtaGVpZ2h0KSBoZWlnaHQtZGlmZikp KSkpKSkpKQogICAgKHdoZW4gbmV3LWZyYW1lLXBhcmFtcwogICAgICAobW9kaWZ5LWZyYW1lLXBh cmFtZXRlcnMgKHNlbGVjdGVkLWZyYW1lKSBuZXctZnJhbWUtcGFyYW1zKSkpKQoKKGRlZnVuIGRv Yy12aWV3LWNlbnRlci1wYWdlLWhvcml6b250YWxseSAoKQogICJDZW50ZXIgcGFnZSBob3Jpem9u dGFsbHkgd2hlbiBwYWdlIGlzIHdpZGVyIHRoYW4gd2luZG93LiIKICAoaW50ZXJhY3RpdmUpCiAg KGxldCAoKHBhZ2Utd2lkdGggKGNhciAoaW1hZ2Utc2l6ZSAoZG9jLXZpZXctY3VycmVudC1pbWFn ZSkgJ3BpeGVsKSkpCiAgICAgICAgKHdpbmRvdy13aWR0aCAod2luZG93LWJvZHktd2lkdGggbmls ICdwaXhlbCkpCiAgICAgICAgOzsgSG93IG11Y2ggZG8gd2Ugc2Nyb2xsIGluIG9yZGVyIHRvIGNl bnRlciB0aGUgcGFnZT8KICAgICAgICAocGl4ZWwtaHNjcm9sbCAwKQogICAgICAgIDs7IEhvdyBt YW55IHBpeGVscyBhcmUgdGhlcmUgaW4gYSBjb2x1bW4/CiAgICAgICAgKGNvbC1pbi1waXhlbCAo LyAod2luZG93LWJvZHktd2lkdGggbmlsICdwaXhlbCkKICAgICAgICAgICAgICAgICAgICAgICAg ICh3aW5kb3ctYm9keS13aWR0aCBuaWwpKSkpCiAgICAod2hlbiAoPiBwYWdlLXdpZHRoIHdpbmRv dy13aWR0aCkKICAgICAgKHNldHEgcGl4ZWwtaHNjcm9sbCAoLyAoLSBwYWdlLXdpZHRoIHdpbmRv dy13aWR0aCkgMikpCiAgICAgIChzZXQtd2luZG93LWhzY3JvbGwgKHNlbGVjdGVkLXdpbmRvdykK ICAgICAgICAgICAgICAgICAgICAgICAgICAoLyBwaXhlbC1oc2Nyb2xsIGNvbC1pbi1waXhlbCkp KSkpCgooZGVmdW4gZG9jLXZpZXctY2VudGVyLXBhZ2UtdmVydGljYWxseSAoKQogICJDZW50ZXIg cGFnZSB2ZXJ0aWNhbGx5IHdoZW4gcGFnZSBpcyB3aWRlciB0aGFuIHdpbmRvdy4iCiAgKGludGVy YWN0aXZlKQogIChsZXQgKChwYWdlLWhlaWdodCAoY2RyIChpbWFnZS1zaXplIChkb2Mtdmlldy1j dXJyZW50LWltYWdlKSAncGl4ZWwpKSkKICAgICAgICAod2luZG93LWhlaWdodCAod2luZG93LWJv ZHktaGVpZ2h0IG5pbCAncGl4ZWwpKQogICAgICAgIDs7IEhvdyBtdWNoIGRvIHdlIHNjcm9sbCBp biBvcmRlciB0byBjZW50ZXIgdGhlIHBhZ2U/CiAgICAgICAgKHBpeGVsLXNjcm9sbCAwKSkKICAg ICh3aGVuICg+IHBhZ2UtaGVpZ2h0IHdpbmRvdy1oZWlnaHQpCiAgICAgIChzZXRxIHBpeGVsLXNj cm9sbCAoLyAoLSBwYWdlLWhlaWdodCB3aW5kb3ctaGVpZ2h0KSAyKSkKICAgICAgKHNldC13aW5k b3ctdnNjcm9sbCAoc2VsZWN0ZWQtd2luZG93KSBwaXhlbC1zY3JvbGwgJ3BpeGVsKSkpKQoKKGRl ZnVuIGRvYy12aWV3LXJlY29udmVydC1kb2MgKCkKICAiUmVjb252ZXJ0IHRoZSBjdXJyZW50IGRv Y3VtZW50LgpTaG91bGQgYmUgaW52b2tlZCB3aGVuIHRoZSBjYWNoZWQgaW1hZ2VzIGFyZW4ndCB1 cC10by1kYXRlLiIKICAoaW50ZXJhY3RpdmUpCiAgKGRvYy12aWV3LWtpbGwtcHJvYykKICA7OyBD bGVhciB0aGUgb2xkIGNhY2hlZCBmaWxlcwogICh3aGVuIChmaWxlLWV4aXN0cy1wIChkb2Mtdmll dy0tY3VycmVudC1jYWNoZS1kaXIpKQogICAgKGRlbGV0ZS1kaXJlY3RvcnkgKGRvYy12aWV3LS1j dXJyZW50LWNhY2hlLWRpcikgJ3JlY3Vyc2l2ZSkpCiAgKGtpbGwtbG9jYWwtdmFyaWFibGUgJ2Rv Yy12aWV3LWxhc3QtcGFnZS1udW1iZXIpCiAgKGRvYy12aWV3LWluaXRpYXRlLWRpc3BsYXkpKQoK KGRlZnVuIGRvYy12aWV3LXNlbnRpbmVsIChwcm9jIGV2ZW50KQogICJHZW5lcmljIHNlbnRpbmVs IGZvciBkb2MtdmlldyBjb252ZXJzaW9uIHByb2Nlc3Nlcy4iCiAgKGlmIChub3QgKHN0cmluZy1t YXRjaCAiZmluaXNoZWQiIGV2ZW50KSkKICAgICAgKG1lc3NhZ2UgIkRvY1ZpZXc6IHByb2Nlc3Mg JXMgY2hhbmdlZCBzdGF0dXMgdG8gJXMuIgogICAgICAgICAgICAgICAocHJvY2Vzcy1uYW1lIHBy b2MpCgkgICAgICAgKGlmIChzdHJpbmctbWF0Y2ggIlxcKC4rXFwpXG4/XFwnIiBldmVudCkKCQkg ICAobWF0Y2gtc3RyaW5nIDEgZXZlbnQpCgkJIGV2ZW50KSkKICAgICh3aGVuIChidWZmZXItbGl2 ZS1wIChwcm9jZXNzLWdldCBwcm9jICdidWZmZXIpKQogICAgICAod2l0aC1jdXJyZW50LWJ1ZmZl ciAocHJvY2Vzcy1nZXQgcHJvYyAnYnVmZmVyKQogICAgICAgIChzZXRxIGRvYy12aWV3LS1jdXJy ZW50LWNvbnZlcnRlci1wcm9jZXNzZXMKICAgICAgICAgICAgICAoZGVscSBwcm9jIGRvYy12aWV3 LS1jdXJyZW50LWNvbnZlcnRlci1wcm9jZXNzZXMpKQogICAgICAgIChzZXRxIG1vZGUtbGluZS1w cm9jZXNzCiAgICAgICAgICAgICAgKGlmIGRvYy12aWV3LS1jdXJyZW50LWNvbnZlcnRlci1wcm9j ZXNzZXMKICAgICAgICAgICAgICAgICAgKGZvcm1hdCAiOiVzIiAoY2FyIGRvYy12aWV3LS1jdXJy ZW50LWNvbnZlcnRlci1wcm9jZXNzZXMpKSkpCiAgICAgICAgKGZ1bmNhbGwgKHByb2Nlc3MtZ2V0 IHByb2MgJ2NhbGxiYWNrKSkpKSkpCgooZGVmdW4gZG9jLXZpZXctc3RhcnQtcHJvY2VzcyAobmFt ZSBwcm9ncmFtIGFyZ3MgY2FsbGJhY2spCiAgOzsgTWFrZSBzdXJlIHRoZSBwcm9jZXNzIGlzIHN0 YXJ0ZWQgaW4gYW4gZXhpc3RpbmcgZGlyZWN0b3J5LCAocmF0aGVyIHRoYW4KICA7OyBzb21lIGZp bGUtbmFtZS1oYW5kbGVyLW1hbmFnZWQgZGlyLCBmb3IgZXhhbXBsZSkuCiAgKGxldCogKChkZWZh dWx0LWRpcmVjdG9yeSAob3IgKHVuaGFuZGxlZC1maWxlLW5hbWUtZGlyZWN0b3J5CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQtZGlyZWN0b3J5KQoJCQkgICAgICAoZXhw YW5kLWZpbGUtbmFtZSAifi8iKSkpCiAgICAgICAgIChwcm9jIChhcHBseSAjJ3N0YXJ0LXByb2Nl c3MgbmFtZSBkb2Mtdmlldy1jb252ZXJzaW9uLWJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAg cHJvZ3JhbSBhcmdzKSkpCiAgICAocHVzaCBwcm9jIGRvYy12aWV3LS1jdXJyZW50LWNvbnZlcnRl ci1wcm9jZXNzZXMpCiAgICAoc2V0cSBtb2RlLWxpbmUtcHJvY2VzcyAobGlzdCAoZm9ybWF0ICI6 JXMiIHByb2MpKSkKICAgIChzZXQtcHJvY2Vzcy1zZW50aW5lbCBwcm9jICdkb2Mtdmlldy1zZW50 aW5lbCkKICAgIChwcm9jZXNzLXB1dCBwcm9jICdidWZmZXIgICAoY3VycmVudC1idWZmZXIpKQog ICAgKHByb2Nlc3MtcHV0IHByb2MgJ2NhbGxiYWNrIGNhbGxiYWNrKSkpCgooZGVmdW4gZG9jLXZp ZXctZHZpLT5wZGYgKGR2aSBwZGYgY2FsbGJhY2spCiAgIkNvbnZlcnQgRFZJIHRvIFBERiBhc3lu Y2hyb25vdXNseSBhbmQgY2FsbCBDQUxMQkFDSyB3aGVuIGZpbmlzaGVkLiIKICA7OyBQcmVmZXIg ZHZpcGRmIG92ZXIgZHZpcGRmbSwgYmVjYXVzZSB0aGUgbGF0dGVyIGhhcyBwcm9ibGVtcyBpZiB0 aGUgRFZJCiAgOzsgcmVmZXJlbmNlcyBhbmQgaW5jbHVkZXMgb3RoZXIgUFMgZmlsZXMuCiAgKGlm IChhbmQgZG9jLXZpZXctZHZpcGRmLXByb2dyYW0KCSAgIChleGVjdXRhYmxlLWZpbmQgZG9jLXZp ZXctZHZpcGRmLXByb2dyYW0pKQogICAgICAoZG9jLXZpZXctc3RhcnQtcHJvY2VzcyAiZHZpLT5w ZGYiIGRvYy12aWV3LWR2aXBkZi1wcm9ncmFtCgkJCSAgICAgIChsaXN0IGR2aSBwZGYpCgkJCSAg ICAgIGNhbGxiYWNrKQogICAgKGRvYy12aWV3LXN0YXJ0LXByb2Nlc3MgImR2aS0+cGRmIiBkb2Mt dmlldy1kdmlwZGZtLXByb2dyYW0KCQkJICAgIChsaXN0ICItbyIgcGRmIGR2aSkKCQkJICAgIGNh bGxiYWNrKSkpCgooZGVmdW4gZG9jLXZpZXctcGRmLXBhc3N3b3JkLXByb3RlY3RlZC1naG9zdHNj cmlwdC1wIChwZGYpCiAgIlJldHVybiBub24tbmlsIGlmIGEgUERGIGZpbGUgaXMgcGFzc3dvcmQt cHJvdGVjdGVkLgpUaGUgdGVzdCBpcyBwZXJmb3JtZWQgdXNpbmcgYGRvYy12aWV3LWdob3N0c2Ny aXB0LXByb2dyYW0nLiIKICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgKGFwcGx5ICMnY2FsbC1wcm9j ZXNzIGRvYy12aWV3LWdob3N0c2NyaXB0LXByb2dyYW0gbmlsIChjdXJyZW50LWJ1ZmZlcikKICAg ICAgICAgICBuaWwgYCgsQGRvYy12aWV3LWdob3N0c2NyaXB0LW9wdGlvbnMKICAgICAgICAgICAg ICAgICAiLXNOT0RJU1BMQVkiCiAgICAgICAgICAgICAgICAgLHBkZikpCiAgICAoZ290by1jaGFy IChwb2ludC1taW4pKQogICAgKHNlYXJjaC1mb3J3YXJkICJUaGlzIGZpbGUgcmVxdWlyZXMgYSBw YXNzd29yZCBmb3IgYWNjZXNzLiIgbmlsIHQpKSkKCihkZWZ1biBkb2Mtdmlldy1wZGYtPnBuZy1j b252ZXJ0ZXItZ2hvc3RzY3JpcHQgKHBkZiBwbmcgcGFnZSBjYWxsYmFjaykKICAobGV0ICgocGRm LXBhc3N3ZCAoaWYgKGRvYy12aWV3LXBkZi1wYXNzd29yZC1wcm90ZWN0ZWQtZ2hvc3RzY3JpcHQt cCBwZGYpCiAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkLXBhc3N3ZCAiRW50ZXIgcGFzc3dv cmQgZm9yIFBERiBmaWxlOiAiKSkpKQogICAgKGRvYy12aWV3LXN0YXJ0LXByb2Nlc3MKICAgICAi cGRmL3BzLT5wbmciIGRvYy12aWV3LWdob3N0c2NyaXB0LXByb2dyYW0KICAgICBgKCxAZG9jLXZp ZXctZ2hvc3RzY3JpcHQtb3B0aW9ucwogICAgICAgLChjb25jYXQgIi1zREVWSUNFPSIgZG9jLXZp ZXctZ2hvc3RzY3JpcHQtZGV2aWNlKQogICAgICAgLChmb3JtYXQgIi1yJWQiIChyb3VuZCBkb2Mt dmlldy1yZXNvbHV0aW9uKSkKICAgICAgICxAKGlmIHBhZ2UgYCgsKGZvcm1hdCAiLWRGaXJzdFBh Z2U9JWQiIHBhZ2UpKSkKICAgICAgICxAKGlmIHBhZ2UgYCgsKGZvcm1hdCAiLWRMYXN0UGFnZT0l ZCIgcGFnZSkpKQogICAgICAgLEAoaWYgcGRmLXBhc3N3ZCBgKCwoZm9ybWF0ICItc1BERlBhc3N3 b3JkPSVzIiBwZGYtcGFzc3dkKSkpCiAgICAgICAsKGNvbmNhdCAiLXNPdXRwdXRGaWxlPSIgcG5n KQogICAgICAgLHBkZikKICAgICBjYWxsYmFjaykpKQoKKGRlZmFsaWFzICdkb2Mtdmlldy1wcy0+ cG5nLWNvbnZlcnRlci1naG9zdHNjcmlwdAogICdkb2Mtdmlldy1wZGYtPnBuZy1jb252ZXJ0ZXIt Z2hvc3RzY3JpcHQpCgooZGVmdW4gZG9jLXZpZXctZGp2dS0+dGlmZi1jb252ZXJ0ZXItZGRqdnUg KGRqdnUgdGlmZiBwYWdlIGNhbGxiYWNrKQogICJDb252ZXJ0IFBBR0Ugb2YgYSBESlZVIGZpbGUg dG8gYml0bWFwKHMpIGFzeW5jaHJvbm91c2x5LgpDYWxsIENBTExCQUNLIHdpdGggbm8gYXJndW1l bnRzIHdoZW4gZG9uZS4KSWYgUEFHRSBpcyBuaWwsIGNvbnZlcnQgdGhlIHdob2xlIGRvY3VtZW50 LiIKICAoZG9jLXZpZXctc3RhcnQtcHJvY2VzcwogICAiZGp2dS0+dGlmZiIgImRkanZ1IgogICBg KCItZm9ybWF0PXRpZmYiCiAgICAgOzsgZGRqdnUgb25seSBhY2NlcHRzIHRoZSByYW5nZSAxLTk5 OS4KICAgICAsKGZvcm1hdCAiLXNjYWxlPSVkIiAocm91bmQgZG9jLXZpZXctcmVzb2x1dGlvbikp CiAgICAgOzsgLWVhY2hwYWdlIHdhcyBvbmx5IGFkZGVkIGFmdGVyIGRqdnVsaWJyZS0zLjUuMjUu MyEKICAgICAsQCh1bmxlc3MgcGFnZSAnKCItZWFjaHBhZ2UiKSkKICAgICAsQChpZiBwYWdlIGAo LChmb3JtYXQgIi1wYWdlPSVkIiBwYWdlKSkpCiAgICAgLGRqdnUKICAgICAsdGlmZikKICAgY2Fs bGJhY2spKQoKKGRlZnVuIGRvYy12aWV3LXBkZmRyYXctcHJvZ3JhbS1zdWJjb21tYW5kICgpCiAg IlJldHVybiB0aGUgbXV0b29sIHN1YmNvbW1hbmQgcmVwbGFjaW5nIG11ZHJhdy4KUmVjZW50IE11 UERGIGRpc3RyaWJ1dGlvbnMgcmVwbGFjZWQgYG11ZHJhdycgd2l0aCBgbXV0b29sIGRyYXcnLiIK ICAod2hlbiAoc3RyaW5nLW1hdGNoICJtdXRvb2xbXi9cXF0qJCIgZG9jLXZpZXctcGRmZHJhdy1w cm9ncmFtKQogICAgJygiZHJhdyIpKSkKCihkZWZ1biBkb2Mtdmlldy1wZGYtcGFzc3dvcmQtcHJv dGVjdGVkLXBkZmRyYXctcCAocGRmKQogICJSZXR1cm4gbm9uLW5pbCBpZiBhIFBERiBmaWxlIGlz IHBhc3N3b3JkLXByb3RlY3RlZC4KVGhlIHRlc3QgaXMgcGVyZm9ybWVkIHVzaW5nIGBkb2Mtdmll dy1wZGZkcmF3LXByb2dyYW0nLiIKICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgKGFwcGx5ICMnY2Fs bC1wcm9jZXNzIGRvYy12aWV3LXBkZmRyYXctcHJvZ3JhbSBuaWwgKGN1cnJlbnQtYnVmZmVyKSBu aWwKICAgICAgICAgICBgKCxAKGRvYy12aWV3LXBkZmRyYXctcHJvZ3JhbS1zdWJjb21tYW5kKQog ICAgICAgICAgICAgLChjb25jYXQgIi1vIiBudWxsLWRldmljZSkKICAgICAgICAgICAgIDs7IElu IGNhc2UgUERGIGlzbid0IHBhc3N3b3JkLXByb3RlY3RlZCwgImRyYXciIG9ubHkgb25lIHBhZ2Uu CiAgICAgICAgICAgICAscGRmICIxIikpCiAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAg KHNlYXJjaC1mb3J3YXJkICJlcnJvcjogY2Fubm90IGF1dGhlbnRpY2F0ZSBwYXNzd29yZCIgbmls IHQpKSkKCihkZWZ1biBkb2Mtdmlldy1wZGYtPnBuZy1jb252ZXJ0ZXItbXVwZGYgKHBkZiBwbmcg cGFnZSBjYWxsYmFjaykKICAobGV0ICgocGRmLXBhc3N3ZCAoaWYgKGRvYy12aWV3LXBkZi1wYXNz d29yZC1wcm90ZWN0ZWQtcGRmZHJhdy1wIHBkZikKICAgICAgICAgICAgICAgICAgICAgICAgKHJl YWQtcGFzc3dkICJFbnRlciBwYXNzd29yZCBmb3IgUERGIGZpbGU6ICIpKSkpCiAgICAoZG9jLXZp ZXctc3RhcnQtcHJvY2VzcwogICAgICJwZGYtPnBuZyIgZG9jLXZpZXctcGRmZHJhdy1wcm9ncmFt CiAgICAgYCgsQChkb2Mtdmlldy1wZGZkcmF3LXByb2dyYW0tc3ViY29tbWFuZCkKICAgICAgICwo Y29uY2F0ICItbyIgcG5nKQogICAgICAgLChmb3JtYXQgIi1yJWQiIChyb3VuZCBkb2Mtdmlldy1y ZXNvbHV0aW9uKSkKICAgICAgICxAKGlmIHBkZi1wYXNzd2QgYCgiLXAiICxwZGYtcGFzc3dkKSkK ICAgICAgICxwZGYKICAgICAgICxAKGlmIHBhZ2UgYCgsKGZvcm1hdCAiJWQiIHBhZ2UpKSkpCiAg ICAgY2FsbGJhY2spKSkKCihkZWZ1biBkb2Mtdmlldy1vZGYtPnBkZi1jb252ZXJ0ZXItdW5vY29u diAob2RmIGNhbGxiYWNrKQogICJDb252ZXJ0IE9ERiB0byBQREYgYXN5bmNocm9ub3VzbHkgYW5k IGNhbGwgQ0FMTEJBQ0sgd2hlbiBmaW5pc2hlZC4KVGhlIGNvbnZlcnRlZCBQREYgaXMgcHV0IGlu dG8gdGhlIGN1cnJlbnQgY2FjaGUgZGlyZWN0b3J5LCBhbmQgaXQKaXMgbmFtZWQgbGlrZSBPREYg d2l0aCB0aGUgZXh0ZW5zaW9uIHR1cm5lZCB0byBwZGYuIgogIChkb2Mtdmlldy1zdGFydC1wcm9j ZXNzICJvZGYtPnBkZiIgZG9jLXZpZXctb2RmLT5wZGYtY29udmVydGVyLXByb2dyYW0KCQkJICAo bGlzdCAiLWYiICJwZGYiICItbyIgKGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRpcikgb2RmKQoJ CQkgIGNhbGxiYWNrKSkKCihkZWZ1biBkb2Mtdmlldy1vZGYtPnBkZi1jb252ZXJ0ZXItc29mZmlj ZSAob2RmIGNhbGxiYWNrKQogICJDb252ZXJ0IE9ERiB0byBQREYgYXN5bmNocm9ub3VzbHkgYW5k IGNhbGwgQ0FMTEJBQ0sgd2hlbiBmaW5pc2hlZC4KVGhlIGNvbnZlcnRlZCBQREYgaXMgcHV0IGlu dG8gdGhlIGN1cnJlbnQgY2FjaGUgZGlyZWN0b3J5LCBhbmQgaXQKaXMgbmFtZWQgbGlrZSBPREYg d2l0aCB0aGUgZXh0ZW5zaW9uIHR1cm5lZCB0byBwZGYuIgogIDs7IEZJWE1FOiBzb2ZmaWNlIGRv ZXNuJ3Qgd29yayB3aGVuIHRoZXJlJ3MgYW5vdGhlciBydW5uaW5nCiAgOzsgTGlicmVPZmZpY2Ug aW5zdGFuY2UsIGluIHdoaWNoIGNhc2UgaXQgcmV0dXJucyBzdWNjZXNzIHdpdGhvdXQKICA7OyBh Y3R1YWxseSBkb2luZyBhbnl0aGluZy4gIFNlZSBMaWJyZU9mZmljZSBidWcKICA7OyBodHRwczov L2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzUzMS4gIEEgd29ya2Fyb3Vu ZAogIDs7IGlzIHRvIHN0YXJ0IHNvZmZpY2Ugd2l0aCBhIHNlcGFyYXRlIFVzZXJJbnN0YWxsYXRp b24gZGlyZWN0b3J5LgogIChsZXQgKCh0bXAtdXNlci1pbnN0YWxsLWRpciAobWFrZS10ZW1wLWZp bGUgImxpYnJlb2ZmaWNlLWRvY3ZpZXciIHQpKSkKICAgIChkb2Mtdmlldy1zdGFydC1wcm9jZXNz ICJvZGYtPnBkZiIgZG9jLXZpZXctb2RmLT5wZGYtY29udmVydGVyLXByb2dyYW0KCQkJICAgIChs aXN0CgkJCSAgICAgKGNvbmNhdCAiLWVudjpVc2VySW5zdGFsbGF0aW9uPWZpbGU6Ly8iCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBUaGUgVVJMIG11c3QgYmUKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGZpbGU6Ly8vQzovdG1wL2RpciBvbiBX aW5kb3dzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgaHR0cHM6Ly93 aWtpLmRvY3VtZW50Zm91bmRhdGlvbi5vcmcvVXNlclByb2ZpbGUuCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAod2hlbiAoZXEgc3lzdGVtLXR5cGUgJ3dpbmRvd3MtbnQpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIikKCQkJCSAgICAgdG1wLXVz ZXItaW5zdGFsbC1kaXIpCgkJCSAgICAgIi0taGVhZGxlc3MiICItLWNvbnZlcnQtdG8iICJwZGYi CgkJCSAgICAgIi0tb3V0ZGlyIiAoZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyKSBvZGYpCgkJ CSAgICAobGFtYmRhICgpCgkJCSAgICAgIChkZWxldGUtZGlyZWN0b3J5IHRtcC11c2VyLWluc3Rh bGwtZGlyIHQpCgkJCSAgICAgIChmdW5jYWxsIGNhbGxiYWNrKSkpKSkKCihkZWZ1biBkb2Mtdmll dy1wZGYvcHMtPnBuZyAocGRmLXBzIHBuZykKICA7OyBGSVhNRTogRml4IG5hbWUgYW5kIGRvY3N0 cmluZyB0byBhY2NvdW50IGZvciBkanZ1JnRpZmYuCiAgIkNvbnZlcnQgUERGLVBTIHRvIFBORyBh c3luY2hyb25vdXNseS4iCiAgKGZ1bmNhbGwKICAgKHBjYXNlIGRvYy12aWV3LWRvYy10eXBlCiAg ICAgKCdwZGYgZG9jLXZpZXctcGRmLT5wbmctY29udmVydGVyLWZ1bmN0aW9uKQogICAgICgnZGp2 dSAjJ2RvYy12aWV3LWRqdnUtPnRpZmYtY29udmVydGVyLWRkanZ1KQogICAgIChfICMnZG9jLXZp ZXctcHMtPnBuZy1jb252ZXJ0ZXItZ2hvc3RzY3JpcHQpKQogICBwZGYtcHMgcG5nIG5pbAogICAo bGV0ICgocmVzb2x1dGlvbiBkb2Mtdmlldy1yZXNvbHV0aW9uKSkKICAgICAobGFtYmRhICgpCiAg ICAgICA7OyBPbmx5IGNyZWF0ZSB0aGUgcmVzb2x1dGlvbiBmaWxlIHdoZW4gaXQncyBhbGwgZG9u ZSwgc28gaXQgYWxzbwogICAgICAgOzsgc2VydmVzIGFzIGEgd2l0bmVzcyB0aGF0IHRoZSBjb252 ZXJzaW9uIGlzIGNvbXBsZXRlLgogICAgICAgKHdyaXRlLXJlZ2lvbiAocHJpbjEtdG8tc3RyaW5n IHJlc29sdXRpb24pIG5pbAogICAgICAgICAgICAgICAgICAgICAoZXhwYW5kLWZpbGUtbmFtZSAi cmVzb2x1dGlvbi5lbCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRv Yy12aWV3LS1jdXJyZW50LWNhY2hlLWRpcikpCiAgICAgICAgICAgICAgICAgICAgIG5pbCAnc2ls ZW50bHkpCiAgICAgICAod2hlbiBkb2Mtdmlldy0tY3VycmVudC10aW1lcgogICAgICAgICAoY2Fu Y2VsLXRpbWVyIGRvYy12aWV3LS1jdXJyZW50LXRpbWVyKQogICAgICAgICAoc2V0cSBkb2Mtdmll dy0tY3VycmVudC10aW1lciBuaWwpKQogICAgICAgKGRvYy12aWV3LWRpc3BsYXkgKGN1cnJlbnQt YnVmZmVyKSAnZm9yY2UpKSkpCgogIDs7IFVwZGF0ZSB0aGUgZGlzcGxheWVkIHBhZ2VzIGFzIHNv b24gYXMgdGhleSdyZSBkb25lIGdlbmVyYXRpbmcuCiAgKHdoZW4gZG9jLXZpZXctY29udmVyc2lv bi1yZWZyZXNoLWludGVydmFsCiAgICAoc2V0cSBkb2Mtdmlldy0tY3VycmVudC10aW1lcgogICAg ICAgICAgKHJ1bi1hdC10aW1lICIxIHNlY3MiIGRvYy12aWV3LWNvbnZlcnNpb24tcmVmcmVzaC1p bnRlcnZhbAogICAgICAgICAgICAgICAgICAgICAgICdkb2Mtdmlldy1kaXNwbGF5CiAgICAgICAg ICAgICAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKSkpKSkKCihkZWNsYXJlLWZ1bmN0aW9uIGNs ZWFyLWltYWdlLWNhY2hlICJpbWFnZS5jIiAoJm9wdGlvbmFsIGZpbHRlcikpCgooZGVmdW4gZG9j LXZpZXctZG9jdW1lbnQtPmJpdG1hcCAocGRmIHBuZyBwYWdlcykKICAiQ29udmVydCBhIGRvY3Vt ZW50IGZpbGUgdG8gYml0bWFwIGltYWdlcyBhc3luY2hyb25vdXNseS4KU3RhcnQgYnkgY29udmVy dGluZyBQQUdFUywgYW5kIHRoZW4gdGhlIHJlc3QuIgogIChpZiAobnVsbCBwYWdlcykKICAgICAg KGRvYy12aWV3LXBkZi9wcy0+cG5nIHBkZiBwbmcpCiAgICA7OyBXZSBjb3VsZCByZW5kZXIgc2V2 ZXJhbCBgcGFnZXMnIHdpdGggYSBzaW5nbGUgcHJvY2VzcyBpZiB0aGV5J3JlCiAgICA7OyAoYWxt b3N0KSBjb25zZWN1dGl2ZSwgYnV0IHNpbmNlIGluIDk5JSBvZiB0aGUgY2FzZXMsIHRoZXJlJ2xs IGJlIG9ubHkKICAgIDs7IGEgc2luZ2xlIHBhZ2UgYW55d2F5LCBhbmQgb2YgdGhlIHJlbWFpbmlu ZyAxJSwgZmV3IGNhc2VzIHdpbGwgaGF2ZQogICAgOzsgY29uc2VjdXRpdmUgcGFnZXMsIGl0J3Mg bm90IHdvcnRoIHRoZSB0cm91YmxlLgogICAgKGxldCAoKHJlc3QgKGNkciBwYWdlcykpKQogICAg ICAoZnVuY2FsbCBkb2Mtdmlldy1zaW5nbGUtcGFnZS1jb252ZXJ0ZXItZnVuY3Rpb24KCSAgICAg ICBwZGYgKGZvcm1hdCBwbmcgKGNhciBwYWdlcykpIChjYXIgcGFnZXMpCiAgICAgICAobGFtYmRh ICgpCiAgICAgICAgIChpZiByZXN0CiAgICAgICAgICAgICAoZG9jLXZpZXctZG9jdW1lbnQtPmJp dG1hcCBwZGYgcG5nIHJlc3QpCiAgICAgICAgICAgOzsgWWlwcGllLCB0aGUgaW1wb3J0YW50IHBh Z2VzIGFyZSBkb25lLCB1cGRhdGUgdGhlIGRpc3BsYXkuCiAgICAgICAgICAgKGNsZWFyLWltYWdl LWNhY2hlKQogICAgICAgICAgIDs7IEZvciB0aGUgd2luZG93cyB0aGF0IGhhdmUgYSBtZXNzYWdl IChsaWtlICJXZWxjb21lIHRvCiAgICAgICAgICAgOzsgRG9jVmlldyIpIGRpc3BsYXkgcHJvcGVy dHksIGNsZWFyaW5nIHRoZSBpbWFnZSBjYWNoZSBpcwogICAgICAgICAgIDs7IG5vdCBzdWZmaWNp ZW50LgogICAgICAgICAgIChkb2xpc3QgKHdpbiAoZ2V0LWJ1ZmZlci13aW5kb3ctbGlzdCAoY3Vy cmVudC1idWZmZXIpIG5pbCAndmlzaWJsZSkpCiAgICAgICAgICAgICAod2l0aC1zZWxlY3RlZC13 aW5kb3cgd2luCgkgICAgICAgKHdoZW4gKHN0cmluZ3AgKG92ZXJsYXktZ2V0IChkb2Mtdmlldy1v dmVybGF5cykgJ2Rpc3BsYXkpKQoJCSAoZG9jLXZpZXctZ290by1wYWdlIChkb2Mtdmlldy1jdXJy ZW50LXBhZ2UpKSkpKQogICAgICAgICAgIDs7IENvbnZlcnQgdGhlIHJlc3Qgb2YgdGhlIHBhZ2Vz LgogICAgICAgICAgIChkb2Mtdmlldy1wZGYvcHMtPnBuZyBwZGYgcG5nKSkpKSkpKQoKKGRlZnVu IGRvYy12aWV3LXBkZi0+dHh0IChwZGYgdHh0IGNhbGxiYWNrKQogICJDb252ZXJ0IFBERiB0byBU WFQgYXN5bmNocm9ub3VzbHkgYW5kIGNhbGwgQ0FMTEJBQ0sgd2hlbiBmaW5pc2hlZC4iCiAgKG9y IChleGVjdXRhYmxlLWZpbmQgZG9jLXZpZXctcGRmdG90ZXh0LXByb2dyYW0pCiAgICAgIChlcnJv ciAiWW91IG5lZWQgdGhlIGBwZGZ0b3RleHQnIHByb2dyYW0gdG8gY29udmVydCBhIFBERiB0byB0 ZXh0IikpCiAgKGRvYy12aWV3LXN0YXJ0LXByb2Nlc3MgInBkZi0+dHh0IiBkb2Mtdmlldy1wZGZ0 b3RleHQtcHJvZ3JhbQogICAgICAgICAgICAgICAgICAgICAgICAgIChhcHBlbmQgZG9jLXZpZXct cGRmdG90ZXh0LXByb2dyYW0tYXJncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGxpc3QgcGRmIHR4dCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2spKQoKKGRl ZnVuIGRvYy12aWV3LWN1cnJlbnQtY2FjaGUtZG9jLXBkZiAoKQogICJSZXR1cm4gdGhlIG5hbWUg b2YgdGhlIGRvYy5wZGYgaW4gdGhlIGN1cnJlbnQgY2FjaGUgZGlyLgpUaGlzIGZpbGUgZXhpc3Rz IG9ubHkgaWYgdGhlIGN1cnJlbnQgZG9jdW1lbnQgaXNuJ3QgYSBQREYgb3IgUFMgZmlsZSBhbHJl YWR5LiIKICAoZXhwYW5kLWZpbGUtbmFtZSAiZG9jLnBkZiIgKGRvYy12aWV3LS1jdXJyZW50LWNh Y2hlLWRpcikpKQoKKGRlZnVuIGRvYy12aWV3LWRvYy0+dHh0ICh0eHQgY2FsbGJhY2spCiAgIkNv bnZlcnQgdGhlIGN1cnJlbnQgZG9jdW1lbnQgdG8gdGV4dCBhbmQgY2FsbCBDQUxMQkFDSyB3aGVu IGRvbmUuIgogIChtYWtlLWRpcmVjdG9yeSAoZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyKSB0 KQogIChwY2FzZSBkb2Mtdmlldy1kb2MtdHlwZQogICAgKCdwZGYKICAgICA7OyBEb2MgaXMgYSBQ REYsIHNvIGNvbnZlcnQgaXQgdG8gVFhUCiAgICAgKGRvYy12aWV3LXBkZi0+dHh0IGRvYy12aWV3 LS1idWZmZXItZmlsZS1uYW1lIHR4dCBjYWxsYmFjaykpCiAgICAoJ3BzCiAgICAgOzsgRG9jIGlz IGEgUFMsIHNvIGNvbnZlcnQgaXQgdG8gUERGICh3aGljaCB3aWxsIGJlIGNvbnZlcnRlZCB0bwog ICAgIDs7IFRYVCB0aGVyZWFmdGVyKS4KICAgICAobGV0ICgocGRmIChkb2Mtdmlldy1jdXJyZW50 LWNhY2hlLWRvYy1wZGYpKSkKICAgICAgIChkb2Mtdmlldy1wcy0+cGRmIGRvYy12aWV3LS1idWZm ZXItZmlsZS1uYW1lIHBkZgogICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKSAoZG9j LXZpZXctcGRmLT50eHQgcGRmIHR4dCBjYWxsYmFjaykpKSkpCiAgICAoJ2R2aQogICAgIDs7IERv YyBpcyBhIERWSS4gIFRoaXMgbWVhbnMgdGhhdCBhIGRvYy5wZGYgYWxyZWFkeSBleGlzdHMgaW4g aXRzCiAgICAgOzsgY2FjaGUgc3ViZGlyZWN0b3J5LgogICAgIChkb2Mtdmlldy1wZGYtPnR4dCAo ZG9jLXZpZXctY3VycmVudC1jYWNoZS1kb2MtcGRmKSB0eHQgY2FsbGJhY2spKQogICAgKCdvZGYK ICAgICA7OyBEb2MgaXMgc29tZSBPREYgKG9yIE1TIE9mZmljZSkgZG9jLiAgVGhpcyBtZWFucyB0 aGF0IGEgZG9jLnBkZgogICAgIDs7IGFscmVhZHkgZXhpc3RzIGluIGl0cyBjYWNoZSBzdWJkaXJl Y3RvcnkuCiAgICAgKGRvYy12aWV3LXBkZi0+dHh0IChkb2Mtdmlldy1jdXJyZW50LWNhY2hlLWRv Yy1wZGYpIHR4dCBjYWxsYmFjaykpCiAgICAoXyAoZXJyb3IgIkRvY1ZpZXcgZG9lc24ndCBrbm93 IHdoYXQgdG8gZG8iKSkpKQoKKGRlZnVuIGRvYy12aWV3LXBzLT5wZGYgKHBzIHBkZiBjYWxsYmFj aykKICAiQ29udmVydCBQUyB0byBQREYgYXN5bmNocm9ub3VzbHkgYW5kIGNhbGwgQ0FMTEJBQ0sg d2hlbiBmaW5pc2hlZC4iCiAgKG9yIChleGVjdXRhYmxlLWZpbmQgZG9jLXZpZXctcHMycGRmLXBy b2dyYW0pCiAgICAgIChlcnJvciAiWW91IG5lZWQgdGhlIGBwczJwZGYnIHByb2dyYW0gdG8gY29u dmVydCBQUyB0byBQREYiKSkKICAoZG9jLXZpZXctc3RhcnQtcHJvY2VzcyAicHMtPnBkZiIgZG9j LXZpZXctcHMycGRmLXByb2dyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAobGlzdAogICAg ICAgICAgICAgICAgICAgICAgICAgICA7OyBBdm9pZCBzZWN1cml0eSBwcm9ibGVtcyB3aGVuIHJl bmRlcmluZyBmaWxlcyBmcm9tCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHVudHJ1c3Rl ZCBzb3VyY2VzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAiLWRTQUZFUiIKICAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsgaW4tZmlsZSBhbmQgb3V0LWZpbGUKICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHMgcGRmKQogICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKSkK CihkZWZ1biBkb2Mtdmlldy1hY3RpdmUtcGFnZXMgKCkKICAobGV0ICgocGFnZXMgKCkpKQogICAg KGRvbGlzdCAod2luIChnZXQtYnVmZmVyLXdpbmRvdy1saXN0IChjdXJyZW50LWJ1ZmZlcikgbmls ICd2aXNpYmxlKSkKICAgICAgKGxldCAoKHBhZ2UgKGJvb2tyb2xsLW1vZGUtd2luZG93LWdldCAn cGFnZSB3aW4pKSkKICAgICAgICAodW5sZXNzIChtZW1xIHBhZ2UgcGFnZXMpIChwdXNoIHBhZ2Ug cGFnZXMpKSkpCiAgICBwYWdlcykpCgooZGVmdW4gZG9jLXZpZXctY29udmVydC1jdXJyZW50LWRv YyAoKQogICJDb252ZXJ0IGBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZScgdG8gYSBzZXQgb2Yg cG5nIGZpbGVzLCBvbmUgZmlsZSBwZXIgcGFnZS4KVGhvc2UgZmlsZXMgYXJlIHNhdmVkIGluIHRo ZSBkaXJlY3RvcnkgZ2l2ZW4gYnkgdGhlIGZ1bmN0aW9uCmBkb2Mtdmlldy0tY3VycmVudC1jYWNo ZS1kaXInLiIKICA7OyBMZXQgc3RhbGUgZmlsZXMgc3RpbGwgZGlzcGxheSB3aGlsZSB3ZSByZWNv bXB1dGUgdGhlIG5ldyBvbmVzLCBzbyBvbmx5CiAgOzsgZmx1c2ggdGhlIGNhY2hlIHdoZW4gdGhl IGNvbnZlcnNpb24gaXMgb3Zlci4gIE9uZSBvZiB0aGUgcmVhc29ucyB3aHkgaXQKICA7OyBpcyBp bXBvcnRhbnQgdG8ga2VlcCBkaXNwbGF5aW5nIHRoZSBzdGFsZSBwYWdlIGlzIHNvIHRoYXQgcmV2 ZXJ0LWJ1ZmZlcgogIDs7IHByZXNlcnZlcyB0aGUgaG9yaXpvbnRhbC92ZXJ0aWNhbCBzY3JvbGwg c2V0dGluZ3MgKHdoaWNoIGFyZSBvdGhlcndpc2UKICA7OyByZXNldCBkdXJpbmcgdGhlIHJlZGlz cGxheSkuCiAgKHNldHEgZG9jLXZpZXctLXBlbmRpbmctY2FjaGUtZmx1c2ggdCkKICAobGV0ICgo cG5nLWZpbGUgKGV4cGFuZC1maWxlLW5hbWUKICAgICAgICAgICAgICAgICAgIChmb3JtYXQgZG9j LXZpZXctLWltYWdlLWZpbGUtcGF0dGVybiAiJWQiKQogICAgICAgICAgICAgICAgICAgKGRvYy12 aWV3LS1jdXJyZW50LWNhY2hlLWRpcikpKSkKICAgIChtYWtlLWRpcmVjdG9yeSAoZG9jLXZpZXct LWN1cnJlbnQtY2FjaGUtZGlyKSB0KQogICAgKHBjYXNlIGRvYy12aWV3LWRvYy10eXBlCiAgICAg ICgnZHZpCiAgICAgICA7OyBEVkkgZmlsZXMgaGF2ZSB0byBiZSBjb252ZXJ0ZWQgdG8gUERGIGJl Zm9yZSBHaG9zdHNjcmlwdCBjYW4gcHJvY2VzcwogICAgICAgOzsgaXQuCiAgICAgICAobGV0ICgo cGRmIChkb2Mtdmlldy1jdXJyZW50LWNhY2hlLWRvYy1wZGYpKSkKICAgICAgICAgKGRvYy12aWV3 LWR2aS0+cGRmIGRvYy12aWV3LS1idWZmZXItZmlsZS1uYW1lIHBkZgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGxhbWJkYSAoKSAoZG9jLXZpZXctcGRmL3BzLT5wbmcgcGRmIHBuZy1maWxl KSkpKSkKICAgICAgKCdvZGYKICAgICAgIDs7IE9ERiBmaWxlcyBoYXZlIHRvIGJlIGNvbnZlcnRl ZCB0byBQREYgYmVmb3JlIEdob3N0c2NyaXB0IGNhbgogICAgICAgOzsgcHJvY2VzcyBpdC4KICAg ICAgIChsZXQgKChwZGYgKGRvYy12aWV3LWN1cnJlbnQtY2FjaGUtZG9jLXBkZikpCiAgICAgICAg ICAgICAob3BkZiAoZXhwYW5kLWZpbGUtbmFtZQogICAgICAgICAgICAgICAgICAgIChjb25jYXQg KGZpbGUtbmFtZS1iYXNlIGRvYy12aWV3LS1idWZmZXItZmlsZS1uYW1lKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIi5wZGYiKQogICAgICAgICAgICAgICAgICAgIGRvYy12aWV3LS1jdXJy ZW50LWNhY2hlLWRpcikpCiAgICAgICAgICAgICAocG5nLWZpbGUgcG5nLWZpbGUpKQoJIDs7IFRo ZSB1bm9jb252IHRvb2wgb25seSBzdXBwb3J0cyBhbiBvdXRwdXQgZGlyZWN0b3J5LCBidXQgbm8K CSA7OyBmaWxlIG5hbWUuICBJdCdzIG5hbWVkIGxpa2UgdGhlIGlucHV0IGZpbGUgd2l0aCB0aGUK CSA7OyBleHRlbnNpb24gcmVwbGFjZWQgYnkgcGRmLgogICAgICAgICAoZnVuY2FsbCBkb2Mtdmll dy1vZGYtPnBkZi1jb252ZXJ0ZXItZnVuY3Rpb24gZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUK ICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKQoJCSAgICA7OyBSZW5hbWUgdG8gZG9jLnBkZgoJ CSAgICAocmVuYW1lLWZpbGUgb3BkZiBwZGYpCgkJICAgIChkb2Mtdmlldy1wZGYvcHMtPnBuZyBw ZGYgcG5nLWZpbGUpKSkpKQogICAgICAoKG9yICdwZGYgJ2RqdnUpCiAgICAgICAobGV0ICgocGFn ZXMgKGRvYy12aWV3LWFjdGl2ZS1wYWdlcykpKQogICAgICAgICA7OyBDb252ZXJ0IGRvYyB0byBi aXRtYXAgaW1hZ2VzIHN0YXJ0aW5nIHdpdGggdGhlIGFjdGl2ZSBwYWdlcy4KICAgICAgICAgKGRv Yy12aWV3LWRvY3VtZW50LT5iaXRtYXAgZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUgcG5nLWZp bGUgcGFnZXMpKSkKICAgICAgKF8KICAgICAgIDs7IENvbnZlcnQgdG8gUE5HIGltYWdlcy4KICAg ICAgIChkb2Mtdmlldy1wZGYvcHMtPnBuZyBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZSBwbmct ZmlsZSkpKSkpCgo7Ozs7IFNsaWNpbmcKCihkZWNsYXJlLWZ1bmN0aW9uIGltYWdlLXNpemUgImlt YWdlLmMiIChzcGVjICZvcHRpb25hbCBwaXhlbHMgZnJhbWUpKQoKKGRlZnVuIGRvYy12aWV3LXNl dC1zbGljZSAoeCB5IHdpZHRoIGhlaWdodCkKICAiU2V0IHRoZSBzbGljZSBvZiB0aGUgaW1hZ2Vz IHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZC4KWW91IGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byB0 ZWxsIGRvYy12aWV3IG5vdCB0byBkaXNwbGF5IHRoZQptYXJnaW5zIG9mIHRoZSBkb2N1bWVudC4g IEl0IHByb21wdHMgZm9yIHRoZSB0b3AtbGVmdCBjb3JuZXIgKFgKYW5kIFkpIG9mIHRoZSBzbGlj ZSB0byBkaXNwbGF5IGFuZCBpdHMgV0lEVEggYW5kIEhFSUdIVC4KClNlZSBgZG9jLXZpZXctc2V0 LXNsaWNlLXVzaW5nLW1vdXNlJyBhbmQKYGRvYy12aWV3LXNldC1zbGljZS1mcm9tLWJvdW5kaW5n LWJveCcgZm9yIG1vcmUgY29udmVuaWVudCB3YXlzCnRvIGRvIHRoYXQuICBUbyByZXNldCB0aGUg c2xpY2UgdXNlIGBkb2Mtdmlldy1yZXNldC1zbGljZScuIgogIChpbnRlcmFjdGl2ZQogICAobGV0 KiAoKHNpemUgKGltYWdlLXNpemUgKGRvYy12aWV3LWN1cnJlbnQtaW1hZ2UpIHQpKQoJICAoYSAo cmVhZC1udW1iZXIgKGZvcm1hdCAiVG9wLWxlZnQgWCAoMC4uJWQpOiAiIChjYXIgc2l6ZSkpKSkK CSAgKGIgKHJlYWQtbnVtYmVyIChmb3JtYXQgIlRvcC1sZWZ0IFkgKDAuLiVkKTogIiAoY2RyIHNp emUpKSkpCgkgIChjIChyZWFkLW51bWJlciAoZm9ybWF0ICJXaWR0aCAoMC4uJWQpOiAiICgtIChj YXIgc2l6ZSkgYSkpKSkKCSAgKGQgKHJlYWQtbnVtYmVyIChmb3JtYXQgIkhlaWdodCAoMC4uJWQp OiAiICgtIChjZHIgc2l6ZSkgYikpKSkpCiAgICAgKGxpc3QgYSBiIGMgZCkpKQogIChzZXRmIChk b2Mtdmlldy1jdXJyZW50LXNsaWNlKSAobGlzdCB4IHkgd2lkdGggaGVpZ2h0KSkKICA7OyBSZWRp c3BsYXkKICAoZG9jLXZpZXctZ290by1wYWdlIChkb2Mtdmlldy1jdXJyZW50LXBhZ2UpKSkKCihk ZWZ1biBkb2Mtdmlldy1zZXQtc2xpY2UtdXNpbmctbW91c2UgKCkKICAiU2V0IHRoZSBzbGljZSBv ZiB0aGUgaW1hZ2VzIHRoYXQgc2hvdWxkIGJlIGRpc3BsYXllZC4KWW91IHNldCB0aGUgc2xpY2Ug YnkgcHJlc3NpbmcgbW91c2UtMSBhdCBpdHMgdG9wLWxlZnQgY29ybmVyIGFuZApkcmFnZ2luZyBp dCB0byBpdHMgYm90dG9tLXJpZ2h0IGNvcm5lci4gIFNlZSBhbHNvCmBkb2Mtdmlldy1zZXQtc2xp Y2UnIGFuZCBgZG9jLXZpZXctcmVzZXQtc2xpY2UnLiIKICAoaW50ZXJhY3RpdmUpCiAgKGxldCAo eCB5IHcgaCBkb25lKQogICAgKHdoaWxlIChub3QgZG9uZSkKICAgICAgKGxldCAoKGUgKHJlYWQt ZXZlbnQKCQkoY29uY2F0ICJQcmVzcyBtb3VzZS0xIGF0IHRoZSB0b3AtbGVmdCBjb3JuZXIgYW5k ICIKCQkJImRyYWcgaXQgdG8gdGhlIGJvdHRvbS1yaWdodCBjb3JuZXIhIikpKSkKCSh3aGVuIChl cSAoY2FyIGUpICdkcmFnLW1vdXNlLTEpCgkgIChzZXRxIHggKGNhciAocG9zbi1vYmplY3QteC15 IChldmVudC1zdGFydCBlKSkpKQoJICAoc2V0cSB5IChjZHIgKHBvc24tb2JqZWN0LXgteSAoZXZl bnQtc3RhcnQgZSkpKSkKCSAgKHNldHEgdyAoLSAoY2FyIChwb3NuLW9iamVjdC14LXkgKGV2ZW50 LWVuZCBlKSkpIHgpKQoJICAoc2V0cSBoICgtIChjZHIgKHBvc24tb2JqZWN0LXgteSAoZXZlbnQt ZW5kIGUpKSkgeSkpCgkgIChzZXRxIGRvbmUgdCkpKSkKICAgIChkb2Mtdmlldy1zZXQtc2xpY2Ug eCB5IHcgaCkpKQoKKGRlZnVuIGRvYy12aWV3LWdldC1ib3VuZGluZy1ib3ggKCkKICAiR2V0IHRo ZSBCb3VuZGluZ0JveCBpbmZvcm1hdGlvbiBvZiB0aGUgY3VycmVudCBwYWdlLiIKICAobGV0ICgo cGFnZSAoZG9jLXZpZXctY3VycmVudC1wYWdlKSkKCShkb2MgKGxldCAoKGNhY2hlLWRvYyAoZG9j LXZpZXctY3VycmVudC1jYWNoZS1kb2MtcGRmKSkpCgkgICAgICAgKGlmIChmaWxlLWV4aXN0cy1w IGNhY2hlLWRvYykKCQkgICBjYWNoZS1kb2MKCQkgZG9jLXZpZXctLWJ1ZmZlci1maWxlLW5hbWUp KSkpCiAgICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgICAod2hlbiAoZXEgMCAoaWdub3JlLWVycm9y cwoJCSAgICAocHJvY2Vzcy1maWxlIGRvYy12aWV3LWdob3N0c2NyaXB0LXByb2dyYW0gbmlsIHQK CQkJCSAgbmlsICItZFNBRkVSIiAiLWRCQVRDSCIgIi1kTk9QQVVTRSIgIi1xIgoJCQkJICAiLXNE RVZJQ0U9YmJveCIKCQkJCSAgKGZvcm1hdCAiLWRGaXJzdFBhZ2U9JXMiIHBhZ2UpCgkJCQkgIChm b3JtYXQgIi1kTGFzdFBhZ2U9JXMiIHBhZ2UpCgkJCQkgIGRvYykpKQoJKGdvdG8tY2hhciAocG9p bnQtbWluKSkKCShzYXZlLW1hdGNoLWRhdGEKCSAgKHdoZW4gKHJlLXNlYXJjaC1mb3J3YXJkCgkJ IChjb25jYXQgIiUlQm91bmRpbmdCb3g6ICIKCQkJICJcXChbWzpkaWdpdDpdXStcXCkgXFwoW1s6 ZGlnaXQ6XV0rXFwpICIKCQkJICJcXChbWzpkaWdpdDpdXStcXCkgXFwoW1s6ZGlnaXQ6XV0rXFwp IikKICAgICAgICAgICAgICAgICBuaWwgdCkKCSAgICAobWFwY2FyICMnc3RyaW5nLXRvLW51bWJl cgoJCSAgICAobGlzdCAobWF0Y2gtc3RyaW5nIDEpCgkJCSAgKG1hdGNoLXN0cmluZyAyKQoJCQkg IChtYXRjaC1zdHJpbmcgMykKCQkJICAobWF0Y2gtc3RyaW5nIDQpKSkpKSkpKSkKCihkZWZ2YXIg ZG9jLXZpZXctcGFwZXItc2l6ZXMKICAnKChhNCA1OTUgODQyKQogICAgKGE0LWxhbmRzY2FwZSA4 NDIgNTk1KQogICAgKGxldHRlciA2MTIgNzkyKQogICAgKGxldHRlci1sYW5kc2NhcGUgNzkyIDYx MikKICAgIChsZWdhbCA2MTIgMTAwOCkKICAgIChsZWdhbC1sYW5kc2NhcGUgMTAwOCA2MTIpCiAg ICAoYTMgODQyIDExOTEpCiAgICAoYTMtbGFuZHNjYXBlIDExOTEgODQyKQogICAgKHRhYmxvaWQg NzkyIDEyMjQpCiAgICAobGVkZ2VyIDEyMjQgNzkyKSkKICAiQW4gYWxpc3QgZnJvbSBwYXBlciBz aXplIG5hbWVzIHRvIGRpbWVuc2lvbnMuIikKCihkZWZ1biBkb2Mtdmlldy1ndWVzcy1wYXBlci1z aXplIChpdyBpaCkKICAiR3Vlc3MgdGhlIHBhcGVyIHNpemUgYWNjb3JkaW5nIHRvIHRoZSBhc3Bl Y3QgcmF0aW8uIgogIChjbC1sYWJlbHMgKChkaXYgKHggeSkKCQkgICAocm91bmQgKC8gKCogMTAw LjAgeCkgeSkpKSkKICAgIChsZXQgKChhciAoZGl2IGl3IGloKSkKCSAgKGFsIChtYXBjYXIgKGxh bWJkYSAobCkKCQkJKGxpc3QgKGRpdiAobnRoIDEgbCkgKG50aCAyIGwpKSAoY2FyIGwpKSkKCQkg ICAgICBkb2Mtdmlldy1wYXBlci1zaXplcykpKQogICAgICAoY2FkciAoYXNzb2MgYXIgYWwpKSkp KQoKKGRlZnVuIGRvYy12aWV3LXNjYWxlLWJvdW5kaW5nLWJveCAocHMgaXcgaWggYmIpCiAgKGxp c3QgKC8gKCogKG50aCAwIGJiKSBpdykgKG50aCAxIChhc3NvYyBwcyBkb2Mtdmlldy1wYXBlci1z aXplcykpKQoJKC8gKCogKG50aCAxIGJiKSBpaCkgKG50aCAyIChhc3NvYyBwcyBkb2Mtdmlldy1w YXBlci1zaXplcykpKQoJKC8gKCogKG50aCAyIGJiKSBpdykgKG50aCAxIChhc3NvYyBwcyBkb2Mt dmlldy1wYXBlci1zaXplcykpKQoJKC8gKCogKG50aCAzIGJiKSBpaCkgKG50aCAyIChhc3NvYyBw cyBkb2Mtdmlldy1wYXBlci1zaXplcykpKSkpCgooZGVmdW4gZG9jLXZpZXctc2V0LXNsaWNlLWZy b20tYm91bmRpbmctYm94ICgmb3B0aW9uYWwgZm9yY2UtcGFwZXItc2l6ZSkKICAiU2V0IHRoZSBz bGljZSBmcm9tIHRoZSBkb2N1bWVudCdzIEJvdW5kaW5nQm94IGluZm9ybWF0aW9uLgpUaGUgcmVz dWx0IGlzIHRoYXQgdGhlIG1hcmdpbnMgYXJlIGFsbW9zdCBjb21wbGV0ZWx5IGNyb3BwZWQsCm11 Y2ggbW9yZSBhY2N1cmF0ZSB0aGFuIGNvdWxkIGJlIGRvbmUgbWFudWFsbHkgdXNpbmcKYGRvYy12 aWV3LXNldC1zbGljZS11c2luZy1tb3VzZScuIgogIChpbnRlcmFjdGl2ZSAiUCIpCiAgKGxldCAo KGJiIChkb2Mtdmlldy1nZXQtYm91bmRpbmctYm94KSkpCiAgICAoaWYgKG5vdCBiYikKCShtZXNz YWdlICJCb3VuZGluZ0JveCBjb3VsZG4ndCBiZSBkZXRlcm1pbmVkIikKICAgICAgKGxldCogKChp cyAoaW1hZ2Utc2l6ZSAoZG9jLXZpZXctY3VycmVudC1pbWFnZSkgdCkpCgkgICAgIChpdyAoY2Fy IGlzKSkKCSAgICAgKGloIChjZHIgaXMpKQoJICAgICAocHMgKG9yIChhbmQgKG51bGwgZm9yY2Ut cGFwZXItc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG9jLXZpZXctZ3Vlc3MtcGFw ZXItc2l6ZSBpdyBpaCkpCgkJICAgICAoaW50ZXJuIChjb21wbGV0aW5nLXJlYWQgIlBhcGVyIHNp emU6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvYy12 aWV3LXBhcGVyLXNpemVzCgkJCQkJICAgICAgbmlsIHQpKSkpCgkgICAgIChiYiAoZG9jLXZpZXct c2NhbGUtYm91bmRpbmctYm94IHBzIGl3IGloIGJiKSkKCSAgICAgKHgxIChudGggMCBiYikpCgkg ICAgICh5MSAobnRoIDEgYmIpKQoJICAgICAoeDIgKG50aCAyIGJiKSkKCSAgICAgKHkyIChudGgg MyBiYikpKQoJOzsgV2Uga2VlcCBhIDIgcGl4ZWwgbWFyZ2luLgoJKGRvYy12aWV3LXNldC1zbGlj ZSAoLSB4MSAyKSAoLSBpaCB5MiAyKQoJCQkgICAgKCsgKC0geDIgeDEpIDQpICgrICgtIHkyIHkx KSA0KSkpKSkpCgooZGVmdW4gZG9jLXZpZXctcmVzZXQtc2xpY2UgKCkKICAiUmVzZXQgdGhlIGN1 cnJlbnQgc2xpY2UuCkFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aG9sZSBwYWdlcyB3aWxs IGJlIHZpc2libGUgYWdhaW4uIgogIChpbnRlcmFjdGl2ZSkKICAoc2V0ZiAoZG9jLXZpZXctY3Vy cmVudC1zbGljZSkgbmlsKQogIDs7IFJlZGlzcGxheQogIChkb2Mtdmlldy1nb3RvLXBhZ2UgKGRv Yy12aWV3LWN1cnJlbnQtcGFnZSkpKQoKOzs7OyBEaXNwbGF5CgooZGVmdW4gZG9jLXZpZXctaW5m by1wYWdlcyAoKQogIChsZXQgKChmaWxlIGRvYy12aWV3LS1idWZmZXItZmlsZS1uYW1lKQogICAg ICAgIHBhZ2VzCiAgICAgICAgcGFnZS1zaXplcykKICAgIChwY2FzZSBkb2Mtdmlldy1kb2MtdHlw ZQogICAgICAoKG9yICdwZGYgJ2VwdWIpIChjb25kICgoZXhlY3V0YWJsZS1maW5kICJtdXRvb2wi KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChjYWxsLXByb2Nlc3MgIm11dG9vbCIgbmlsIHQgbmls ICJpbmZvIiAiLU0iIGZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZl ci1zdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9p bnQtbWluKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VhcmNoLWZvcndhcmQt cmVnZXhwICJeUGFnZXM6IFxcKFswLTldKlxcKSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHNldHEgcGFnZXMgKHN0cmluZy10by1udW1iZXIgKG1hdGNoLXN0cmluZyAxKSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlYXJjaC1mb3J3YXJkLXJlZ2V4cCAiXFxb IDAgMCBcXChbMC05XSpcXCkuKiBcXChbMC05XSpcXCkuKiBcXF0iKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChsZXQgKChwYWdlLXNpemUgKGNvbnMgKHN0cmluZy10by1udW1iZXIg KG1hdGNoLXN0cmluZyAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzdHJpbmctdG8tbnVtYmVyIChtYXRjaC1zdHJpbmcgMikpKSkpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBwYWdlLXNpemVzIChtYWtlLWxp c3QgcGFnZXMgcGFnZS1zaXplKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBU T0RPIGFkZCBhbHRlcm5hdGl2ZSB1c2luZyBgcGRmaW5mbyAtYm94JwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApKSkKICAgICAgKCdkanZ1IChsZXQqICgocGFnZXMtaW5mbyAobWFwY2Fy IChsYW1iZGEgKGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz cGxpdC1zdHJpbmcgbCAiWyA9XSIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHByb2Nlc3MtbGluZXMgImRqdnVzZWQiICItZSIgIidzaXplJyIgZmlsZSkpKSkKICAg ICAgICAgICAgICAgICAgICAoc2V0cSBwYWdlLXNpemVzIChtYXBjYXIgKGxhbWJkYSAoZGltcykK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgodyAo c3RyaW5nLXRvLW51bWJlciAobnRoIDEgZGltcykpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoIChzdHJpbmctdG8tbnVtYmVyIChudGggMyBk aW1zKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNvbnMgdyBoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBhZ2VzLWluZm8pKQogICAgICAgICAgICAgICAgICAgIChzZXRxIHBhZ2VzIChsZW5ndGggcGFn ZS1zaXplcykpKSkpCiAgICAoY29ucyBwYWdlcyBwYWdlLXNpemVzKSkpCgooZGVmdW4gZG9jLXZp ZXctaW5zZXJ0LWltYWdlIChmaWxlICZyZXN0IGFyZ3MpCiAgIkluc2VydCB0aGUgZ2l2ZW4gcG5n IEZJTEUuCkFSR1MgaXMgYSBsaXN0IG9mIGltYWdlIGRlc2NyaXB0b3JzLiIKICAod2hlbiBkb2Mt dmlldy0tcGVuZGluZy1jYWNoZS1mbHVzaAogICAgKGNsZWFyLWltYWdlLWNhY2hlKQogICAgKHNl dHEgZG9jLXZpZXctLXBlbmRpbmctY2FjaGUtZmx1c2ggbmlsKSkKICAobGV0ICgob2wgKGRvYy12 aWV3LWNvbnRyb2wtb3ZlcmxheSkpKQogICAgOzsgT25seSBpbnNlcnQgdGhlIGltYWdlIGlmIHRo ZSBidWZmZXIgaXMgdmlzaWJsZS4KICAgICh3aGVuICh3aW5kb3ctbGl2ZS1wIChvdmVybGF5LWdl dCBvbCAnd2luZG93KSkKICAgICAgKGxldCogKChpbWFnZSAoaWYgKGFuZCBmaWxlIChmaWxlLXJl YWRhYmxlLXAgZmlsZSkpCgkJCShpZiAobm90IGRvYy12aWV3LXNjYWxlLWludGVybmFsbHkpCgkJ CSAgICAoYXBwbHkgIydjcmVhdGUtaW1hZ2UgZmlsZSBkb2Mtdmlldy0taW1hZ2UtdHlwZSBuaWwg YXJncykKCQkJICAodW5sZXNzIChtZW1iZXIgOndpZHRoIGFyZ3MpCgkJCSAgICAoc2V0cSBhcmdz IGAoLEBhcmdzIDp3aWR0aCAsZG9jLXZpZXctaW1hZ2Utd2lkdGgpKSkKICAgICAgICAgICAgICAg ICAgICAgICAgICAodW5sZXNzIChtZW1iZXIgOnRyYW5zZm9ybS1zbW9vdGhpbmcgYXJncykKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGFyZ3MgYCgsQGFyZ3MgOnRyYW5zZm9ybS1z bW9vdGhpbmcgdCkpKQoJCQkgIChhcHBseSAjJ2NyZWF0ZS1pbWFnZSBmaWxlIGRvYy12aWV3LS1p bWFnZS10eXBlIG5pbCBhcmdzKSkpKQoJICAgICAoc2xpY2UgKGRvYy12aWV3LWN1cnJlbnQtc2xp Y2UpKQoJICAgICAoaW1nLXdpZHRoIChhbmQgaW1hZ2UgKGNhciAoaW1hZ2Utc2l6ZSBpbWFnZSkp KSkKCSAgICAgKGRpc3BsYXllZC1pbWctd2lkdGggKGlmIChhbmQgaW1hZ2Ugc2xpY2UpCgkJCQkg ICAgICAoKiAoLyAoZmxvYXQgKG50aCAyIHNsaWNlKSkKCQkJCQkgICAgKGNhciAoaW1hZ2Utc2l6 ZSBpbWFnZSAncGl4ZWxzKSkpCgkJCQkJIGltZy13aWR0aCkKCQkJCSAgICBpbWctd2lkdGgpKQoJ ICAgICAod2luZG93LXdpZHRoICh3aW5kb3ctd2lkdGgpKSkKCShzZXRmIChkb2Mtdmlldy1jdXJy ZW50LWltYWdlKSBpbWFnZSkKCTs7IEluIGNhc2UgdGhlIHdpbmRvdyBpcyB3aWRlciB0aGFuIHRo ZSBpbWFnZSwgY2VudGVyIHRoZSBpbWFnZQoJOzsgaG9yaXpvbnRhbGx5LgoJOzsgKG92ZXJsYXkt cHV0IChudGggKDEtIChkb2Mtdmlldy1jdXJyZW50LXBhZ2UpKSBvdmVybGF5cykgJ2JlZm9yZS1z dHJpbmcKCTs7IAkgICAgICh3aGVuIChhbmQgaW1hZ2UgKD4gd2luZG93LXdpZHRoIGRpc3BsYXll ZC1pbWctd2lkdGgpKQoJOzsgCSAgICAgICAocHJvcGVydGl6ZSAiICIgJ2Rpc3BsYXkKCTs7IAkJ CSAgIGAoc3BhY2UgOmFsaWduLXRvICgrIGNlbnRlciAoLTAuNSAuICxkaXNwbGF5ZWQtaW1nLXdp ZHRoKSkpKSkpCgkob3ZlcmxheS1wdXQgKG50aCAoMS0gKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkp IG92ZXJsYXlzKSAnZGlzcGxheQoJCSAgICAgKGNvbmQKCQkgICAgICAoaW1hZ2UKCQkgICAgICAg KGlmIHNsaWNlCgkJCSAgIChsaXN0IChjb25zICdzbGljZSBzbGljZSkgaW1hZ2UpCgkJCSBpbWFn ZSkpCgkJICAgICAgOzsgV2UncmUgdHJ5aW5nIHRvIGRpc3BsYXkgYSBwYWdlIHRoYXQgZG9lc24n dCBleGlzdC4KCQkgICAgICAoZG9jLXZpZXctLWN1cnJlbnQtY29udmVydGVyLXByb2Nlc3NlcwoJ CSAgICAgICA7OyBNYXliZSB0aGUgcGFnZSBkb2Vzbid0IGV4aXN0ICp5ZXQqLgoJCSAgICAgICAi Q2Fubm90IGRpc3BsYXkgdGhpcyBwYWdlICh5ZXQpISIpCgkJICAgICAgKHQKCQkgICAgICAgOzsg VHlwaWNhbGx5IGhhcHBlbnMgaWYgdGhlIGNvbnZlcnNpb24gcHJvY2VzcyBzb21laG93CgkJICAg ICAgIDs7IGZhaWxlZC4gIEJldHRlciBub3Qgc2lnbmFsIGFuIGVycm9yIGhlcmUgYmVjYXVzZSBp dAoJCSAgICAgICA7OyBjb3VsZCBwcmV2ZW50IGEgc3Vic2VxdWVudCByZWNvbnZlcnNpb24gZnJv bSBmaXhpbmcKCQkgICAgICAgOzsgdGhlIHByb2JsZW0uCgkJICAgICAgIChjb25jYXQgIkNhbm5v dCBkaXNwbGF5IHRoaXMgcGFnZSFcbiIKCQkJICAgICAgICJNYXliZSBiZWNhdXNlIG9mIGEgY29u dmVyc2lvbiBmYWlsdXJlISIpKSkpKSkpKQoJOzsgKGxldCAoKHdpbiAob3ZlcmxheS1nZXQgKGRv Yy12aWV3LWNvbnRyb2wtb3ZlcmxheSkgJ3dpbmRvdykpKQoJOzsgICAoaWYgKHN0cmluZ3AgKG92 ZXJsYXktZ2V0IChkb2Mtdmlldy1jb250cm9sLW92ZXJsYXkpICdkaXNwbGF5KSkKCTs7ICAgICAg IChwcm9nbiAgICAgICAgICAgIDtNYWtlIHN1cmUgdGhlIHRleHQgaXMgbm90IHNjcm9sbGVkIG91 dCBvZiB2aWV3LgoJOzsgCShzZXQtd2luZG93LWhzY3JvbGwgd2luIDApCgk7OyAJKHNldC13aW5k b3ctdnNjcm9sbCB3aW4gMCkpCgk7OyAgICAgKGxldCAoKGhzY3JvbGwgKGJvb2tyb2xsLW1vZGUt d2luZG93LWdldCAnaHNjcm9sbCB3aW4pKQoJOzsgCSAgKHZzY3JvbGwgKGJvb2tyb2xsLW1vZGUt d2luZG93LWdldCAndnNjcm9sbCB3aW4pKSkKCTs7ICAgICAgIDs7IFJlc2V0IHNjcm9sbCBzZXR0 aW5ncywgaW4gY2FzZSB0aGV5IHdlcmUgY2hhbmdlZC4KCTs7ICAgICAgIChpZiBoc2Nyb2xsIChz ZXQtd2luZG93LWhzY3JvbGwgd2luIGhzY3JvbGwpKQoJOzsgICAgICAgKGlmIHZzY3JvbGwgKHNl dC13aW5kb3ctdnNjcm9sbCB3aW4gdnNjcm9sbCB0KSkpKSkpKSkpCgooZGVmdW4gZG9jLXZpZXct c29ydCAoYSBiKQogICJSZXR1cm4gbm9uLW5pbCBpZiBBIHNob3VsZCBiZSBzb3J0ZWQgYmVmb3Jl IEIuClByZWRpY2F0ZSBmb3Igc29ydGluZyBgZG9jLXZpZXctLWN1cnJlbnQtZmlsZXMnLiIKICAo b3IgKDwgKGxlbmd0aCBhKSAobGVuZ3RoIGIpKQogICAgICAoYW5kICg9IChsZW5ndGggYSkgKGxl bmd0aCBiKSkKICAgICAgICAgICAoc3RyaW5nPCBhIGIpKSkpCgooZGVmdW4gZG9jLXZpZXctZGlz cGxheSAoYnVmZmVyICZvcHRpb25hbCBmb3JjZSkKICAiU3RhcnQgdmlld2luZyB0aGUgZG9jdW1l bnQgaW4gQlVGRkVSLgpJZiBGT1JDRSBpcyBub24tbmlsLCBzdGFydCB2aWV3aW5nIGV2ZW4gaWYg dGhlIGRvY3VtZW50IGRvZXMgbm90CmhhdmUgdGhlIHBhZ2Ugd2Ugd2FudCB0byB2aWV3LiIKICAo d2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKICAgIChsZXQgKChwcmV2LXBhZ2VzIGRvYy12aWV3 LS1jdXJyZW50LWZpbGVzKSkKICAgICAgKHNldHEgZG9jLXZpZXctLWN1cnJlbnQtZmlsZXMKICAg ICAgICAgICAgKHNvcnQgKGRpcmVjdG9yeS1maWxlcyAoZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUt ZGlyKSB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCBkb2Mtdmll dy0taW1hZ2UtZmlsZS1wYXR0ZXJuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiWzAtOV0rIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KQog ICAgICAgICAgICAgICAgICAnZG9jLXZpZXctc29ydCkpCiAgICAgICh1bmxlc3MgKGVxIChsZW5n dGggcHJldi1wYWdlcykgKGxlbmd0aCBkb2Mtdmlldy0tY3VycmVudC1maWxlcykpCgkoZm9yY2Ut bW9kZS1saW5lLXVwZGF0ZSkpCiAgICAgIChkb2xpc3QgKHdpbiAob3IgKGdldC1idWZmZXItd2lu ZG93LWxpc3QgYnVmZmVyIG5pbCB0KQoJCSAgICAgICAobGlzdCB0KSkpCgkobGV0KiAoKHBhZ2Ug KGRvYy12aWV3LWN1cnJlbnQtcGFnZSB3aW4pKQoJICAgICAgIChwYWdlZmlsZSAoZXhwYW5kLWZp bGUtbmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQgZG9jLXZpZXctLWltYWdl LWZpbGUtcGF0dGVybiBwYWdlKQogICAgICAgICAgICAgICAgICAgICAgICAgIChkb2Mtdmlldy0t Y3VycmVudC1jYWNoZS1kaXIpKSkpCgkgICh3aGVuIChvciBmb3JjZQoJCSAgICAoYW5kIChub3Qg KG1lbWJlciBwYWdlZmlsZSBwcmV2LXBhZ2VzKSkKCQkJIChtZW1iZXIgcGFnZWZpbGUgZG9jLXZp ZXctLWN1cnJlbnQtZmlsZXMpKSkKCSAgICAoaWYgKHdpbmRvd3Agd2luKQoJCSh3aXRoLXNlbGVj dGVkLXdpbmRvdyB3aW4KCQkgIChjbC1hc3NlcnQgKGVxIChjdXJyZW50LWJ1ZmZlcikgYnVmZmVy KSB0KQoJCSAgKGRvYy12aWV3LWdvdG8tcGFnZSBwYWdlKSkKCSAgICAgIChkb2Mtdmlldy1nb3Rv LXBhZ2UgcGFnZSkpKSkpKSkpCgooZGVmdW4gZG9jLXZpZXctYnVmZmVyLW1lc3NhZ2UgKCkKICA7 OyBPbmx5IHNob3cgdGhpcyBtZXNzYWdlIGluaXRpYWxseSwgbm90IHdoZW4gcmVmcmVzaGluZyB0 aGUgYnVmZmVyIChpbiB3aGljaAogIDs7IGNhc2UgaXQncyBiZXR0ZXIgdG8ga2VlcCBkaXNwbGF5 aW5nIHRoZSAic3RhbGUiIHBhZ2Ugd2hpbGUgY29tcHV0aW5nCiAgOzsgdGhlIGZyZXNoIG5ldyBv bmVzKS4KICAodW5sZXNzIChvdmVybGF5LWdldCAoZG9jLXZpZXctY29udHJvbC1vdmVybGF5KSAn ZGlzcGxheSkKICAgIChvdmVybGF5LXB1dCAoZG9jLXZpZXctY29udHJvbC1vdmVybGF5KSAnZGlz cGxheQogICAgICAgICAgICAgICAgIChjb25jYXQgKHByb3BlcnRpemUgIldlbGNvbWUgdG8gRG9j VmlldyEiICdmYWNlICdib2xkKQogICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgogICAgICAg ICAgICAgICAgICAgICAgICAgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzICIKSWYgeW91IHNlZSB0 aGlzIGJ1ZmZlciBpdCBtZWFucyB0aGF0IHRoZSBkb2N1bWVudCB5b3Ugd2FudCB0byB2aWV3IGlz IGJlaW5nCmNvbnZlcnRlZCB0byBQTkcgYW5kIHRoZSBjb252ZXJzaW9uIG9mIHRoZSBmaXJzdCBw YWdlIGhhc24ndCBmaW5pc2hlZCB5ZXQgb3IKYGRvYy12aWV3LWNvbnZlcnNpb24tcmVmcmVzaC1p bnRlcnZhbCcgaXMgc2V0IHRvIG5pbC4KCkZvciBub3cgdGhlc2Uga2V5cyBhcmUgdXNlZnVsOgpc XDxkb2Mtdmlldy1tb2RlLW1hcD4KXFxbcXVpdC13aW5kb3ddIDogQnVyeSB0aGlzIGJ1ZmZlci4g IENvbnZlcnNpb24gd2lsbCBnbyBvbiBpbiBiYWNrZ3JvdW5kLgpcXFtpbWFnZS1raWxsLWJ1ZmZl cl0gOiBLaWxsIHRoZSBjb252ZXJzaW9uIHByb2Nlc3MgYW5kIHRoaXMgYnVmZmVyLgpcXFtkb2Mt dmlldy1raWxsLXByb2NdIDogS2lsbCB0aGUgY29udmVyc2lvbiBwcm9jZXNzLlxuIikpKSkpCgoo ZGVjbGFyZS1mdW5jdGlvbiB0b29sdGlwLXNob3cgInRvb2x0aXAiICh0ZXh0ICZvcHRpb25hbCB1 c2UtZWNoby1hcmVhKSkKCihkZWZ1biBkb2Mtdmlldy1zaG93LXRvb2x0aXAgKCkKICAoaW50ZXJh Y3RpdmUpCiAgKHRvb2x0aXAtc2hvdyAoZG9jLXZpZXctY3VycmVudC1pbmZvKSkpCgo7OyBXZSBk ZWZpbmUgYW4gb3duIG1ham9yIG1vZGUgZm9yIERvY1ZpZXcncyB0ZXh0IGRpc3BsYXkgc28gdGhh dCB3ZQo7OyBjYW4gZWFzaWx5IGRpc3Rpbmd1aXNoIHdoZW4gd2Ugd2FudCB0byB0b2dnbGUgYmFj ayBiZWNhdXNlCjs7IHRleHQtbW9kZSBpcyBhIGxpa2VseSBjYW5kaWRhdGUgZm9yIGEgZGVmYXVs dCBtYWpvci1tb2RlCjs7IChidWcjMzQ0NTEpLgooZGVmaW5lLWRlcml2ZWQtbW9kZSBkb2Mtdmll dy0tdGV4dC12aWV3LW1vZGUgdGV4dC1tb2RlICJEVi9UZXh0IgogICJWaWV3IG1vZGUgdXNlZCBp biBEb2NWaWV3J3MgdGV4dCBidWZmZXJzLiIKICAodmlldy1tb2RlKSkKCihkZWZ1biBkb2Mtdmll dy1vcGVuLXRleHQgKCkKICAiRGlzcGxheSB0aGUgY3VycmVudCBkb2MncyBjb250ZW50cyBhcyB0 ZXh0LiIKICAoaW50ZXJhY3RpdmUpCiAgKGlmIGRvYy12aWV3LS1jdXJyZW50LWNvbnZlcnRlci1w cm9jZXNzZXMKICAgICAgKG1lc3NhZ2UgIkRvY1ZpZXc6IHBsZWFzZSB3YWl0IHRpbGwgY29udmVy c2lvbiBmaW5pc2hlZC4iKQogICAgKGxldCAoKHR4dCAoZXhwYW5kLWZpbGUtbmFtZSAiZG9jLnR4 dCIgKGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRpcikpKQogICAgICAgICAgKHBhZ2UgKGRvYy12 aWV3LWN1cnJlbnQtcGFnZSkpKQogICAgICAoaWYgKGZpbGUtcmVhZGFibGUtcCB0eHQpCgkgIChs ZXQgKChpbmhpYml0LXJlYWQtb25seSB0KQoJCShidWZmZXItdW5kby1saXN0IHQpCgkJKGR2LWJm biBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZSkpCgkgICAgKGVyYXNlLWJ1ZmZlcikKICAgICAg ICAgICAgOzsgRklYTUU6IFJlcGxhY2luZyB0aGUgYnVmZmVyJ3MgUERGIGNvbnRlbnQgd2l0aCBp dHMgdHh0IHJlbmRlcmluZwogICAgICAgICAgICA7OyBpcyBwcmV0dHkgcmlza3kuICBXZSBzaG91 bGQgcHJvYmFibHkgdXNlICphbm90aGVyKgogICAgICAgICAgICA7OyBidWZmZXIgaW5zdGVhZCwg c28gdGhlcmUncyBtdWNoIGxlc3MgcmlzayBvZgogICAgICAgICAgICA7OyBvdmVyd3JpdGluZyB0 aGUgUERGIGZpbGUgd2l0aCBzb21lIHRleHQgcmVuZGVyaW5nLgoJICAgIChzZXQtYnVmZmVyLW11 bHRpYnl0ZSB0KQoJICAgIChpbnNlcnQtZmlsZS1jb250ZW50cyB0eHQpCgkgICAgKGRvYy12aWV3 LS10ZXh0LXZpZXctbW9kZSkKCSAgICAoc2V0cS1sb2NhbCBkb2Mtdmlldy0tYnVmZmVyLWZpbGUt bmFtZSBkdi1iZm4pCgkgICAgKHNldC1idWZmZXItbW9kaWZpZWQtcCBuaWwpCgkgICAgKGRvYy12 aWV3LW1pbm9yLW1vZGUpCiAgICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAg ICAgICAgIDs7IFB1dCBwb2ludCBhdCB0aGUgc3RhcnQgb2YgdGhlIHBhZ2UgdGhlIHVzZXIgd2Fz CiAgICAgICAgICAgIDs7IHJlYWRpbmcuICBQYWdlcyBhcmUgc2VwYXJhdGVkIGJ5IENvbnRyb2wt TCBjaGFyYWN0ZXJzLgogICAgICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQgcGFnZS1kZWxpbWl0 ZXIgbmlsIHQgKDEtIHBhZ2UpKQoJICAgIChhZGQtaG9vayAnd3JpdGUtZmlsZS1mdW5jdGlvbnMK CQkgICAgICAobGFtYmRhICgpCiAgICAgICAgICAgICAgICAgICAgICAgIDs7IEZJWE1FOiBJZiB0 aGUgdXNlciBjaGFuZ2VzIG1ham9yIG1vZGUgYW5kIHRoZW4KICAgICAgICAgICAgICAgICAgICAg ICAgOzsgc2F2ZXMgdGhlIGJ1ZmZlciwgdGhlIFBERiBmaWxlIHdpbGwgYmUgY2xvYmJlcmVkCiAg ICAgICAgICAgICAgICAgICAgICAgIDs7IHdpdGggaXRzIHR4dCByZW5kZXJpbmchCgkJCSh3aGVu IChlcSBtYWpvci1tb2RlICdkb2Mtdmlldy0tdGV4dC12aWV3LW1vZGUpCgkJCSAgKGVycm9yICJD YW5ub3Qgc2F2ZSB0ZXh0IGNvbnRlbnRzIG9mIGRvY3VtZW50ICVzIgoJCQkJIGJ1ZmZlci1maWxl LW5hbWUpKSkKCQkgICAgICBuaWwgdCkpCgkoZG9jLXZpZXctZG9jLT50eHQgdHh0ICdkb2Mtdmll dy1vcGVuLXRleHQpKSkpKQoKOzs7OzsgVG9nZ2xlIGJldHdlZW4gZWRpdGluZyBhbmQgdmlld2lu ZwoKKGRlZnZhci1sb2NhbCBkb2Mtdmlldy1zYXZlZC1zZXR0aW5ncyBuaWwKICAiRG9jLXZpZXcg c2V0dGluZ3Mgc2F2ZWQgd2hpbGUgaW4gc29tZSBvdGhlciBtb2RlLiIpCihwdXQgJ2RvYy12aWV3 LXNhdmVkLXNldHRpbmdzICdwZXJtYW5lbnQtbG9jYWwgdCkKCihkZWZ1biBkb2Mtdmlldy10b2dn bGUtZGlzcGxheSAoKQogICJUb2dnbGUgYmV0d2VlbiBlZGl0aW5nIGEgZG9jdW1lbnQgYXMgdGV4 dCBvciB2aWV3aW5nIGl0LiIKICAoaW50ZXJhY3RpdmUpCiAgKGNvbmQKICAgKChlcSBtYWpvci1t b2RlICdkb2Mtdmlldy1tb2RlKQogICAgOzsgU3dpdGNoIHRvIGVkaXRpbmcgbW9kZQogICAgKGRv Yy12aWV3LWtpbGwtcHJvYykKICAgIChzZXRxIGJ1ZmZlci1yZWFkLW9ubHkgbmlsKQogICAgOzsg U3dpdGNoIHRvIHRoZSBwcmV2aW91c2x5IHVzZWQgbWFqb3IgbW9kZSBvciBmYWxsIGJhY2sgdG8K ICAgIDs7IG5vcm1hbCBtb2RlLgogICAgKGRvYy12aWV3LWZhbGxiYWNrLW1vZGUpCiAgICAoZG9j LXZpZXctbWlub3ItbW9kZSAxKSkKICAgKChlcSBtYWpvci1tb2RlICdkb2Mtdmlldy0tdGV4dC12 aWV3LW1vZGUpCiAgICAobGV0ICgoYnVmZmVyLXVuZG8tbGlzdCB0KSkKICAgICAgOzsgV2UncmUg Y3VycmVudGx5IHZpZXdpbmcgdGhlIGRvY3VtZW50J3MgdGV4dCBjb250ZW50cywgc28gc3dpdGNo CiAgICAgIDs7IGJhY2sgdG8gLgogICAgICAoc2V0cSBidWZmZXItcmVhZC1vbmx5IG5pbCkKICAg ICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGRvYy12aWV3LS1idWZmZXItZmlsZS1uYW1lIG5pbCBu aWwgbmlsIHQpCiAgICAgIChkb2Mtdmlldy1mYWxsYmFjay1tb2RlKQogICAgICAoZG9jLXZpZXct bWlub3ItbW9kZSAxKQogICAgICAoc2V0LWJ1ZmZlci1tb2RpZmllZC1wIG5pbCkpKQogICAodAog ICAgOzsgU3dpdGNoIHRvIGRvYy12aWV3LW1vZGUKICAgICh3aGVuIChhbmQgKGJ1ZmZlci1tb2Rp ZmllZC1wKQoJICAgICAgICh5LW9yLW4tcCAiVGhlIGJ1ZmZlciBoYXMgYmVlbiBtb2RpZmllZC4g IFNhdmUgdGhlIGNoYW5nZXM/ICIpKQogICAgICAoc2F2ZS1idWZmZXIpKQogICAgKGRvYy12aWV3 LW1vZGUpKSkpCgo7Ozs7IFNlYXJjaGluZwoKCihkZWZ1biBkb2Mtdmlldy1zZWFyY2gtaW50ZXJu YWwgKHJlZ2V4cCBmaWxlKQogICJSZXR1cm4gYSBsaXN0IG9mIEZJTEUncyBwYWdlcyB0aGF0IGNv bnRhaW4gdGV4dCBtYXRjaGluZyBSRUdFWFAuClRoZSB2YWx1ZSBpcyBhbiBhbGlzdCBvZiB0aGUg Zm9ybSAoUEFHRSBDT05URVhUUykgd2hlcmUgUEFHRSBpcwp0aGUgcGFnZW51bWJlciBhbmQgQ09O VEVYVFMgYXJlIGFsbCBsaW5lcyBvZiB0ZXh0IGNvbnRhaW5pbmcgYSBtYXRjaC4iCiAgKHdpdGgt dGVtcC1idWZmZXIKICAgIChpbnNlcnQtZmlsZS1jb250ZW50cyBmaWxlKQogICAgKGxldCAoKHBh Z2UgMSkKCSAgKGxhc3RwYWdlIDEpCgkgIG1hdGNoZXMpCiAgICAgICh3aGlsZSAocmUtc2VhcmNo LWZvcndhcmQgKGNvbmNhdCAiXFwoPzpcXChbDF1cXClcXHxcXCgiCgkJCQkJcmVnZXhwICJcXClc XCkiKSBuaWwgdCkKCSh3aGVuIChtYXRjaC1zdHJpbmcgMSkgKHNldHEgcGFnZSAoMSsgcGFnZSkp KQoJKHdoZW4gKG1hdGNoLXN0cmluZyAyKQoJICAoaWYgKC89IHBhZ2UgbGFzdHBhZ2UpCgkgICAg ICAocHVzaCAoY29ucyBwYWdlCgkJCSAgKGxpc3QgKGJ1ZmZlci1zdWJzdHJpbmcKCQkJCSAobGlu ZS1iZWdpbm5pbmctcG9zaXRpb24pCgkJCQkgKGxpbmUtZW5kLXBvc2l0aW9uKSkpKQoJCSAgICBt YXRjaGVzKQoJICAgIChzZXRxIG1hdGNoZXMgKGNvbnMKCQkJICAgKGFwcGVuZAoJCQkgICAgKG9y CgkJCSAgICAgOzsgVGhpcyBwYWdlIGFscmVhZHkgaXMgYSBtYXRjaC4KCQkJICAgICAoY2FyIG1h dGNoZXMpCgkJCSAgICAgOzsgVGhpcyBpcyB0aGUgZmlyc3QgbWF0Y2ggb24gcGFnZS4KCQkJICAg ICAobGlzdCBwYWdlKSkKCQkJICAgIChsaXN0IChidWZmZXItc3Vic3RyaW5nCgkJCQkgICAobGlu ZS1iZWdpbm5pbmctcG9zaXRpb24pCgkJCQkgICAobGluZS1lbmQtcG9zaXRpb24pKSkpCgkJCSAg IChjZHIgbWF0Y2hlcykpKSkKCSAgKHNldHEgbGFzdHBhZ2UgcGFnZSkpKQogICAgICAobnJldmVy c2UgbWF0Y2hlcykpKSkKCihkZWZ1biBkb2Mtdmlldy1zZWFyY2gtbm8tb2YtbWF0Y2hlcyAobGlz dCkKICAiRXh0cmFjdCB0aGUgbnVtYmVyIG9mIG1hdGNoZXMgZnJvbSB0aGUgc2VhcmNoIHJlc3Vs dCBMSVNULiIKICAobGV0ICgobm8gMCkpCiAgICAoZG9saXN0IChwIGxpc3QpCiAgICAgIChzZXRx IG5vICgrIG5vICgxLSAobGVuZ3RoIHApKSkpKQogICAgbm8pKQoKKGRlZnVuIGRvYy12aWV3LXNl YXJjaC1iYWNrd2FyZCAobmV3LXF1ZXJ5KQogICJDYWxsIGBkb2Mtdmlldy1zZWFyY2gnIGZvciBi YWNrd2FyZCBzZWFyY2guCklmIHByZWZpeCBORVctUVVFUlkgaXMgZ2l2ZW4sIGFzayBmb3IgYSBu ZXcgcmVnZXhwLiIKICAoaW50ZXJhY3RpdmUgIlAiKQogIChkb2Mtdmlldy1zZWFyY2ggbmV3LXF1 ZXJ5IHQpKQoKKGRlZnVuIGRvYy12aWV3LXNlYXJjaCAobmV3LXF1ZXJ5ICZvcHRpb25hbCBiYWNr d2FyZCkKICAiSnVtcCB0byB0aGUgbmV4dCBtYXRjaCBvciBpbml0aWF0ZSBhIG5ldyBzZWFyY2gg aWYgTkVXLVFVRVJZIGlzIGdpdmVuLgpJZiB0aGUgY3VycmVudCBkb2N1bWVudCBoYXNuJ3QgYmVl biB0cmFuc2Zvcm1lZCB0byBwbGFpbiB0ZXh0CnRpbGwgbm93IGRvIHRoYXQgZmlyc3QuCklmIEJB Q0tXQVJEIGlzIG5vbi1uaWwsIGp1bXAgdG8gdGhlIHByZXZpb3VzIG1hdGNoLiIKICAoaW50ZXJh Y3RpdmUgIlAiKQogIChpZiAoYW5kIChub3QgbmV3LXF1ZXJ5KQoJICAgZG9jLXZpZXctLWN1cnJl bnQtc2VhcmNoLW1hdGNoZXMpCiAgICAgIChpZiBiYWNrd2FyZAoJICAoZG9jLXZpZXctc2VhcmNo LXByZXZpb3VzLW1hdGNoIDEpCgkoZG9jLXZpZXctc2VhcmNoLW5leHQtbWF0Y2ggMSkpCiAgICA7 OyBOZXcgc2VhcmNoLCBzbyBmb3JnZXQgdGhlIG9sZCByZXN1bHRzLgogICAgKHNldHEgZG9jLXZp ZXctLWN1cnJlbnQtc2VhcmNoLW1hdGNoZXMgbmlsKQogICAgKGxldCAoKHR4dCAoZXhwYW5kLWZp bGUtbmFtZSAiZG9jLnR4dCIKCQkJCSAoZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyKSkpKQog ICAgICAoaWYgKGZpbGUtcmVhZGFibGUtcCB0eHQpCgkgIChwcm9nbgoJICAgIChzZXRxIGRvYy12 aWV3LS1jdXJyZW50LXNlYXJjaC1tYXRjaGVzCgkJICAoZG9jLXZpZXctc2VhcmNoLWludGVybmFs CgkJICAgKHJlYWQtZnJvbS1taW5pYnVmZmVyICJSZWdleHA6ICIpCgkJICAgdHh0KSkKCSAgICAo bWVzc2FnZSAiRG9jVmlldzogc2VhcmNoIHlpZWxkZWQgJWQgbWF0Y2hlcy4iCgkJICAgICAoZG9j LXZpZXctc2VhcmNoLW5vLW9mLW1hdGNoZXMKCQkgICAgICBkb2Mtdmlldy0tY3VycmVudC1zZWFy Y2gtbWF0Y2hlcykpKQoJOzsgV2UgbXVzdCBjb252ZXJ0IHRvIFRYVCBmaXJzdCEKCShpZiBkb2Mt dmlldy0tY3VycmVudC1jb252ZXJ0ZXItcHJvY2Vzc2VzCgkgICAgKG1lc3NhZ2UgIkRvY1ZpZXc6 IHBsZWFzZSB3YWl0IHRpbGwgY29udmVyc2lvbiBmaW5pc2hlZC4iKQoJICAoZG9jLXZpZXctZG9j LT50eHQgdHh0IChsYW1iZGEgKCkgKGRvYy12aWV3LXNlYXJjaCBuaWwpKSkpKSkpKQoKKGRlZnVu IGRvYy12aWV3LXNlYXJjaC1uZXh0LW1hdGNoIChhcmcpCiAgIkdvIHRvIHRoZSBBUkd0aCBuZXh0 IG1hdGNoaW5nIHBhZ2UuIgogIChpbnRlcmFjdGl2ZSAicCIpCiAgKGxldCogKChuZXh0LXBhZ2Vz IChjbC1yZW1vdmUtaWYKCQkgICAgICAobGFtYmRhIChpKSAoPD0gKGNhciBpKSAoZG9jLXZpZXct Y3VycmVudC1wYWdlKSkpCgkJICAgICAgZG9jLXZpZXctLWN1cnJlbnQtc2VhcmNoLW1hdGNoZXMp KQoJIChwYWdlIChjYXIgKG50aCAoMS0gYXJnKSBuZXh0LXBhZ2VzKSkpKQogICAgKGlmIHBhZ2UK CShkb2Mtdmlldy1nb3RvLXBhZ2UgcGFnZSkKICAgICAgKHdoZW4gKGFuZAoJICAgICBkb2Mtdmll dy0tY3VycmVudC1zZWFyY2gtbWF0Y2hlcwoJICAgICAoeS1vci1uLXAgIk5vIG1vcmUgbWF0Y2hl cyBhZnRlciBjdXJyZW50IHBhZ2UuICBXcmFwIHRvIGZpcnN0IG1hdGNoPyAiKSkKCShkb2Mtdmll dy1nb3RvLXBhZ2UgKGNhYXIgZG9jLXZpZXctLWN1cnJlbnQtc2VhcmNoLW1hdGNoZXMpKSkpKSkK CihkZWZ1biBkb2Mtdmlldy1zZWFyY2gtcHJldmlvdXMtbWF0Y2ggKGFyZykKICAiR28gdG8gdGhl IEFSR3RoIHByZXZpb3VzIG1hdGNoaW5nIHBhZ2UuIgogIChpbnRlcmFjdGl2ZSAicCIpCiAgKGxl dCogKChwcmV2LXBhZ2VzIChjbC1yZW1vdmUtaWYKCQkgICAgICAobGFtYmRhIChpKSAoPj0gKGNh ciBpKSAoZG9jLXZpZXctY3VycmVudC1wYWdlKSkpCgkJICAgICAgZG9jLXZpZXctLWN1cnJlbnQt c2VhcmNoLW1hdGNoZXMpKQoJIChwYWdlIChjYXIgKG50aCAoMS0gYXJnKSAobnJldmVyc2UgcHJl di1wYWdlcykpKSkpCiAgICAoaWYgcGFnZQoJKGRvYy12aWV3LWdvdG8tcGFnZSBwYWdlKQogICAg ICAod2hlbiAoYW5kCgkgICAgIGRvYy12aWV3LS1jdXJyZW50LXNlYXJjaC1tYXRjaGVzCgkgICAg ICh5LW9yLW4tcCAiTm8gbW9yZSBtYXRjaGVzIGJlZm9yZSBjdXJyZW50IHBhZ2UuICBXcmFwIHRv IGxhc3QgbWF0Y2g/ICIpKQoJKGRvYy12aWV3LWdvdG8tcGFnZSAoY2FhciAobGFzdCBkb2Mtdmll dy0tY3VycmVudC1zZWFyY2gtbWF0Y2hlcykpKSkpKSkKCjs7OzsgVXNlciBpbnRlcmZhY2UgY29t bWFuZHMgYW5kIHRoZSBtb2RlCgoocHV0ICdkb2Mtdmlldy1tb2RlICdtb2RlLWNsYXNzICdzcGVj aWFsKQoKKGRlZnVuIGRvYy12aWV3LWFscmVhZHktY29udmVydGVkLXAgKCkKICAiUmV0dXJuIG5v bi1uaWwgaWYgdGhlIGN1cnJlbnQgZG9jIHdhcyBhbHJlYWR5IGNvbnZlcnRlZC4iCiAgKGFuZCAo ZmlsZS1leGlzdHMtcCAoZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyKSkKICAgICAgIDs7IENo ZWNrIHRoYXQgdGhlIHJlc29sdXRpb24gaW5mbyBpcyB0aGVyZSwgb3RoZXJ3aXNlIGl0IG1lYW5z CiAgICAgICA7OyB0aGUgY29udmVyc2lvbiBpcyBpbmNvbXBsZXRlLgogICAgICAgKGZpbGUtcmVh ZGFibGUtcCAoZXhwYW5kLWZpbGUtbmFtZSAicmVzb2x1dGlvbi5lbCIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvYy12aWV3LS1jdXJyZW50LWNhY2hlLWRpcikp KQogICAgICAgKD4gKGxlbmd0aCAoZGlyZWN0b3J5LWZpbGVzCiAgICAgICAgICAgICAgICAgICAo ZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyKQogICAgICAgICAgICAgICAgICAgbmlsIChmb3Jt YXQgZG9jLXZpZXctLWltYWdlLWZpbGUtcGF0dGVybiAiWzAtOV0rIikpKQogICAgICAgICAgMCkp KQoKKGRlZnVuIGRvYy12aWV3LWluaXRpYXRlLWRpc3BsYXkgKCkKICA7OyBTd2l0Y2ggdG8gaW1h Z2UgZGlzcGxheSBpZiBwb3NzaWJsZS4KICAoaWYgKGRvYy12aWV3LW1vZGUtcCBkb2Mtdmlldy1k b2MtdHlwZSkKICAgICAgKHByb2duCgkoZG9jLXZpZXctYnVmZmVyLW1lc3NhZ2UpCgkoc2V0ZiAo ZG9jLXZpZXctY3VycmVudC1wYWdlKSAob3IgKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkgMSkpCgko aWYgKGRvYy12aWV3LWFscmVhZHktY29udmVydGVkLXApCgkgICAgKHByb2duCgkgICAgICAobWVz c2FnZSAiRG9jVmlldzogdXNpbmcgY2FjaGVkIGZpbGVzISIpCgkgICAgICA7OyBMb2FkIHRoZSBz YXZlZCByZXNvbHV0aW9uLgoJICAgICAgKGxldCogKChyZXMtZmlsZQogICAgICAgICAgICAgICAg ICAgICAgKGV4cGFuZC1maWxlLW5hbWUgInJlc29sdXRpb24uZWwiCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyKSkpCiAg ICAgICAgICAgICAgICAgICAgIChyZXMKICAgICAgICAgICAgICAgICAgICAgICh3aXRoLXRlbXAt YnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChmaWxlLXJlYWRhYmxlLXAgcmVz LWZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIHJl cy1maWxlKQogICAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkIChjdXJyZW50LWJ1ZmZlcikp KSkpKQogICAgICAgICAgICAgICAgKHdoZW4gKG51bWJlcnAgcmVzKQoJCSAgKHNldHEtbG9jYWwg ZG9jLXZpZXctcmVzb2x1dGlvbiByZXMpKSkKCSAgICAgIChkb2Mtdmlldy1kaXNwbGF5IChjdXJy ZW50LWJ1ZmZlcikgJ2ZvcmNlKSkKCSAgKGRvYy12aWV3LWNvbnZlcnQtY3VycmVudC1kb2MpKQoJ KG1lc3NhZ2UKCSAiJXMiCgkgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzCgkgIChjb25jYXQgIlR5 cGUgXFxbZG9jLXZpZXctdG9nZ2xlLWRpc3BsYXldIHRvIHRvZ2dsZSBiZXR3ZWVuICIKCQkgICJl ZGl0aW5nIG9yIHZpZXdpbmcgdGhlIGRvY3VtZW50LiIpKSkpCiAgICAoaWYgKGltYWdlLXR5cGUt YXZhaWxhYmxlLXAgJ3BuZykKICAgICAgICAobWVzc2FnZSAiQ29udmVyc2lvbiB1dGlsaXR5IFwi JXNcIiBub3QgYXZhaWxhYmxlIGZvciAlcyIKICAgICAgICAgICAgICAgICBkb2Mtdmlldy1naG9z dHNjcmlwdC1wcm9ncmFtCgkgICAgICAgICAoZmlsZS1uYW1lLWV4dGVuc2lvbiBkb2Mtdmlldy0t YnVmZmVyLWZpbGUtbmFtZSkpCiAgICAgIChtZXNzYWdlICJQTkcgc3VwcG9ydCBub3QgYXZhaWxh YmxlOyBjYW4ndCB2aWV3IGRvY3VtZW50IikpCiAgICAoaWYgKGFuZCAoZXhlY3V0YWJsZS1maW5k IGRvYy12aWV3LXBkZnRvdGV4dC1wcm9ncmFtKQoJICAgICAoeS1vci1uLXAKCSAgICAgICJVbmFi bGUgdG8gcmVuZGVyIGZpbGUuICBWaWV3IGV4dHJhY3RlZCB0ZXh0IGluc3RlYWQ/ICIpKQoJKGRv Yy12aWV3LW9wZW4tdGV4dCkKICAgICAgKGRvYy12aWV3LXRvZ2dsZS1kaXNwbGF5KSkpKQoKKGRl ZnZhciBib29rbWFyay1tYWtlLXJlY29yZC1mdW5jdGlvbikKCihkZWZ1biBkb2Mtdmlldy1jbG9u ZS1idWZmZXItaG9vayAoKQogIDs7IEZJWE1FOiBUaGVyZSBhcmUgc2V2ZXJhbCBwb3RlbnRpYWwg cHJvYmxlbXMgbGlua2VkIHdpdGggcmVjb252ZXJzaW9uCiAgOzsgYW5kIGF1dG8tcmV2ZXJ0IHdo ZW4gd2UgaGF2ZSBpbmRpcmVjdCBidWZmZXJzIGJlY2F1c2UgdGhleSBzaGFyZSB0aGVpcgogIDs7 IC90bXAgY2FjaGUgZGlyZWN0b3J5LiAgVGhpcyBzaGFyaW5nIGlzIGdvb2QgKHlvdSdkIHJhdGhl ciBub3QgcmVjb252ZXJ0CiAgOzsgZm9yIGVhY2ggY2xvbmUpLCBidXQgdGhhdCBtZWFucyB0aGF0 IGNsb25lcyBuZWVkIHRvIGNvbGxhYm9yYXRlIGEgYml0LgogIDs7IEkgZ3Vlc3MgaXQgbW9zdGx5 IG1lYW5zOiBkZXRlY3Qgd2hlbiBhIHJlY29udmVyc2lvbiBwcm9jZXNzIGlzIGFscmVhZHkKICA7 OyBydW5uaW5nLCBhbmQgcnVuIHRoZSBzZW50aW5lbCBpbiBhbGwgY2xvbmVzLgogIDs7CiAgOzsg TWF5YmUgdGhlIGNsb25lcyBzaG91bGQgcmVhbGx5IGhhdmUgYSBzZXBhcmF0ZSAvdG1wIGRpcmVj dG9yeQogIDs7IHNvIHRoZXkgY291bGQgaGF2ZSBhIGRpZmZlcmVudCByZXNvbHV0aW9uIGFuZCB5 b3UgY291bGQgdXNlIGNsb25lcwogIDs7IGZvciB6b29taW5nLgogIChyZW1vdmUtb3ZlcmxheXMg KHBvaW50LW1pbikgKHBvaW50LW1heCkgJ2RvYy12aWV3IHQpCiAgKGlmIChjb25zcCBib29rcm9s bC1tb2RlLXdpbnByb3BzLWFsaXN0KSAoc2V0cSBib29rcm9sbC1tb2RlLXdpbnByb3BzLWFsaXN0 IG5pbCkpKQoKKGRlZnVuIGRvYy12aWV3LXNldC1kb2MtdHlwZSAoKQogICJGaWd1cmUgb3V0IHRo ZSBjdXJyZW50IGRvY3VtZW50IHR5cGUgKGBkb2Mtdmlldy1kb2MtdHlwZScpLiIKICAobGV0ICgo bmFtZS10eXBlcwoJICh3aGVuIGJ1ZmZlci1maWxlLW5hbWUKCSAgIChjZHIgKGFzc29jLXN0cmlu ZwogICAgICAgICAgICAgICAgIChmaWxlLW5hbWUtZXh0ZW5zaW9uIGJ1ZmZlci1maWxlLW5hbWUp CiAgICAgICAgICAgICAgICAgJygKICAgICAgICAgICAgICAgICAgIDs7IERWSQogICAgICAgICAg ICAgICAgICAgKCJkdmkiIGR2aSkKICAgICAgICAgICAgICAgICAgIDs7IFBERgogICAgICAgICAg ICAgICAgICAgKCJwZGYiIHBkZikgKCJlcGRmIiBwZGYpCiAgICAgICAgICAgICAgICAgICA7OyBQ b3N0U2NyaXB0CiAgICAgICAgICAgICAgICAgICAoInBzIiBwcykgKCJlcHMiIHBzKQogICAgICAg ICAgICAgICAgICAgOzsgRGpWdQogICAgICAgICAgICAgICAgICAgKCJkanZ1IiBkanZ1KQogICAg ICAgICAgICAgICAgICAgOzsgT3BlbkRvY3VtZW50IGZvcm1hdHMuCiAgICAgICAgICAgICAgICAg ICAoIm9kdCIgb2RmKSAoIm9kcyIgb2RmKSAoIm9kcCIgb2RmKSAoIm9kZyIgb2RmKQogICAgICAg ICAgICAgICAgICAgKCJvZGMiIG9kZikgKCJvZGkiIG9kZikgKCJvZG0iIG9kZikgKCJvdHQiIG9k ZikKICAgICAgICAgICAgICAgICAgICgib3RzIiBvZGYpICgib3RwIiBvZGYpICgib3RnIiBvZGYp CiAgICAgICAgICAgICAgICAgICA7OyBNaWNyb3NvZnQgT2ZmaWNlIGZvcm1hdHMgKGFsc28gaGFu ZGxlZCBieSB0aGUgb2RmCiAgICAgICAgICAgICAgICAgICA7OyBjb252ZXJzaW9uIGNoYWluKS4K ICAgICAgICAgICAgICAgICAgICgiZG9jIiBvZGYpICgiZG9jeCIgb2RmKSAoInhscyIgb2RmKSAo Inhsc3giIG9kZikKICAgICAgICAgICAgICAgICAgICgicHB0IiBvZGYpICgicHBzIiBvZGYpICgi cHB0eCIgb2RmKSAoInJ0ZiIgb2RmKSkKCQkgdCkpKSkKCShjb250ZW50LXR5cGVzCgkgKHNhdmUt ZXhjdXJzaW9uCgkgICAoZ290by1jaGFyIChwb2ludC1taW4pKQoJICAgKGNvbmQKCSAgICAoKGxv b2tpbmctYXQgIiUhIikgJyhwcykpCgkgICAgKChsb29raW5nLWF0ICIlUERGIikgJyhwZGYpKQoJ ICAgICgobG9va2luZy1hdCAiXDM2N1wwMDIiKSAnKGR2aSkpCgkgICAgKChsb29raW5nLWF0ICJB VCZURk9STSIpICcoZGp2dSkpKSkpKQogICAgKHNldHEtbG9jYWwKICAgICBkb2Mtdmlldy1kb2Mt dHlwZQogICAgIChjYXIgKG9yIChucmV2ZXJzZSAoc2VxLWludGVyc2VjdGlvbiBuYW1lLXR5cGVz IGNvbnRlbnQtdHlwZXMgIydlcSkpCiAgICAgICAgICAgICAgKHdoZW4gKGFuZCBuYW1lLXR5cGVz IGNvbnRlbnQtdHlwZXMpCiAgICAgICAgICAgICAgICAoZXJyb3IgIkNvbmZsaWN0aW5nIHR5cGVz OiBuYW1lIHNheXMgJXMgYnV0IGNvbnRlbnQgc2F5cyAlcyIKICAgICAgICAgICAgICAgICAgICAg ICBuYW1lLXR5cGVzIGNvbnRlbnQtdHlwZXMpKQogICAgICAgICAgICAgIG5hbWUtdHlwZXMgY29u dGVudC10eXBlcwogICAgICAgICAgICAgIChlcnJvciAiQ2Fubm90IGRldGVybWluZSB0aGUgZG9j dW1lbnQgdHlwZSIpKSkpKSkKCihkZWZ1biBkb2Mtdmlldy1zZXQtdXAtc2luZ2xlLWNvbnZlcnRl ciAoKQogICJGaW5kIHRoZSByaWdodCBzaW5nbGUtcGFnZSBjb252ZXJ0ZXIgZm9yIHRoZSBjdXJy ZW50IGRvY3VtZW50IHR5cGUuIgogIChwY2FzZS1sZXQgKChgKCxjb252LWZ1bmN0aW9uICx0eXBl ICxleHRlbnNpb24pCiAgICAgICAgICAgICAgIChwY2FzZSBkb2Mtdmlldy1kb2MtdHlwZQogICAg ICAgICAgICAgICAgICgnZGp2dSAobGlzdCAjJ2RvYy12aWV3LWRqdnUtPnRpZmYtY29udmVydGVy LWRkanZ1ICd0aWZmICJ0aWYiKSkKICAgICAgICAgICAgICAgICAoXyAgICAgKGxpc3QgZG9jLXZp ZXctcGRmLT5wbmctY29udmVydGVyLWZ1bmN0aW9uICAncG5nICAicG5nIikpKSkpCiAgICAoc2V0 cS1sb2NhbCBkb2Mtdmlldy1zaW5nbGUtcGFnZS1jb252ZXJ0ZXItZnVuY3Rpb24gY29udi1mdW5j dGlvbikKICAgIChzZXRxLWxvY2FsIGRvYy12aWV3LS1pbWFnZS10eXBlIHR5cGUpCiAgICAoc2V0 cS1sb2NhbCBkb2Mtdmlldy0taW1hZ2UtZmlsZS1wYXR0ZXJuIChjb25jYXQgInBhZ2UtJXMuIiBl eHRlbnNpb24pKSkpCgo7OyBkZXNrdG9wLmVsIGludGVncmF0aW9uCgooZGVmdW4gZG9jLXZpZXct ZGVza3RvcC1zYXZlLWJ1ZmZlciAoX2Rlc2t0b3AtZGlybmFtZSkKICA7OyBGSVhNRTogVGhpcyBp cyB3cm9uZywgc2luY2UgdGhpcyBpbmZvIGlzIHBlci13aW5kb3cgYnV0IHdlIG9ubHkgZG8gaXQg b25jZQogIDs7IGhlcmUgZm9yIHRoZSBidWZmZXIuICBJT1cgaXQgc2hvdWxkIGJlIHNhdmVkIHZp YSBzb21ldGhpbmcgbGlrZQogIDs7IGB3aW5kb3ctcGVyc2lzdGVudC1wYXJhbWV0ZXJzJy4KICBg KChwYWdlIC4gLChkb2Mtdmlldy1jdXJyZW50LXBhZ2UpKQogICAgKHNsaWNlIC4gLChkb2Mtdmll dy1jdXJyZW50LXNsaWNlKSkpKQoKKGRlY2xhcmUtZnVuY3Rpb24gZGVza3RvcC1yZXN0b3JlLWZp bGUtYnVmZmVyICJkZXNrdG9wIgogICAgICAgICAgICAgICAgICAoYnVmZmVyLWZpbGVuYW1lIGJ1 ZmZlci1uYW1lIGJ1ZmZlci1taXNjKSkKCihkZWZ1biBkb2Mtdmlldy1yZXN0b3JlLWRlc2t0b3At YnVmZmVyIChmaWxlIG5hbWUgbWlzYykKICAobGV0ICgocGFnZSAgKGNkciAoYXNzcSAncGFnZSBt aXNjKSkpCgkoc2xpY2UgKGNkciAoYXNzcSAnc2xpY2UgbWlzYykpKSkKICAgIChkZXNrdG9wLXJl c3RvcmUtZmlsZS1idWZmZXIgZmlsZSBuYW1lIG1pc2MpCiAgICA7OyBGSVhNRTogV2UgbmVlZCB0 byBydW4gdGhpcyBjb2RlIGFmdGVyIGRpc3BsYXlpbmcgdGhlIGJ1ZmZlci4KICAgICh3aXRoLXNl bGVjdGVkLXdpbmRvdyAob3IgKGdldC1idWZmZXItd2luZG93IChjdXJyZW50LWJ1ZmZlcikgMCkK CQkJICAgICAgKHNlbGVjdGVkLXdpbmRvdykpCiAgICAgIDs7IEZJWE1FOiBUaGlzIHNob3VsZCBi ZSBkb25lIGZvciBhbGwgd2luZG93cyByZXN0b3JlZCB0aGF0IHNob3cKICAgICAgOzsgdGhpcyBi dWZmZXIuICBCYXNpY2FsbHksIHRoZSBwYWdlL3NsaWNlIHNob3VsZCBiZSBzYXZlZCBhcwogICAg ICA7OyB3aW5kb3ctcGFyYW1ldGVycyBpbiB0aGUgd2luZG93LXN0YXRlKHMpIGFuZCB0aGVuIHJl c3RvcmluZyB0aGlzCiAgICAgIDs7IHdpbmRvdy1zdGF0ZSBzaG91bGQgY2FsbCB1cyBiYWNrICh0 byBpbnRlcnByZXQvdXNlIHRob3NlIHBhcmFtZXRlcnMpLgogICAgICAoZG9jLXZpZXctZ290by1w YWdlIHBhZ2UpCiAgICAgICh3aGVuIHNsaWNlIChhcHBseSAjJ2RvYy12aWV3LXNldC1zbGljZSBz bGljZSkpCiAgICAgIChjdXJyZW50LWJ1ZmZlcikpKSkKCihhZGQtdG8tbGlzdCAnZGVza3RvcC1i dWZmZXItbW9kZS1oYW5kbGVycwoJICAgICAnKGRvYy12aWV3LW1vZGUgLiBkb2Mtdmlldy1yZXN0 b3JlLWRlc2t0b3AtYnVmZmVyKSkKCjs7IChzZXRxIHRyYWNlLWNvdW50ZXIgMCkKCjs7IChkZWZ1 biB0cmFjZS13aW5wcm9wcyAoKQo7OyAgIChzZXRxIHRyYWNlLWNvdW50ZXIgKDErIHRyYWNlLWNv dW50ZXIpKQo7OyAgICh3aGVuLWxldCAoYnVmIChnZXQtYnVmZmVyICJPcHRpY3MsIDV0aCBlZF8g LSBFdWdlbmUgSGVjaHQucGRmIikpCjs7ICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWYKOzsg ICAgICAgKHRyYWNlLXZhbHVlcyB0cmFjZS1jb3VudGVyIGJvb2tyb2xsLW1vZGUtd2lucHJvcHMt YWxpc3QpKSkpCgo7OyAoYWRkLWhvb2sgJ3Bvc3QtY29tbWFuZC1ob29rICMndHJhY2Utd2lucHJv cHMpCgo7OzsjIyNhdXRvbG9hZAooZGVmdW4gZG9jLXZpZXctbW9kZSAoKQogICJNYWpvciBtb2Rl IGluIERvY1ZpZXcgYnVmZmVycy4KCkRvY1ZpZXcgTW9kZSBpcyBhbiBFbWFjcyBkb2N1bWVudCB2 aWV3ZXIuICBJdCBkaXNwbGF5cyBQREYsIFBTCmFuZCBEVkkgZmlsZXMgKGFzIFBORyBpbWFnZXMp IGluIEVtYWNzIGJ1ZmZlcnMuCgpZb3UgY2FuIHVzZSBcXDxkb2Mtdmlldy1tb2RlLW1hcD5cXFtk b2Mtdmlldy10b2dnbGUtZGlzcGxheV0gdG8KdG9nZ2xlIGJldHdlZW4gZGlzcGxheWluZyB0aGUg ZG9jdW1lbnQgb3IgZWRpdGluZyBpdCBhcyB0ZXh0LgpcXHtkb2Mtdmlldy1tb2RlLW1hcH0iCiAg KGludGVyYWN0aXZlKQoKICAoaWYgKD0gKHBvaW50LW1pbikgKHBvaW50LW1heCkpCiAgICAgIDs7 IFRoZSBkb2MgaXMgZW1wdHkgb3IgZG9lc24ndCBleGlzdCBhdCBhbGwsIHNvIGZhbGxiYWNrIHRv CiAgICAgIDs7IGFub3RoZXIgbW9kZS4gIFdlIHVzZWQgdG8gYWxzbyBjaGVjayBmaWxlLWV4aXN0 cy1wLCBidXQgdGhpcwogICAgICA7OyByZXR1cm5zIG5pbCBmb3IgdGFyIG1lbWJlcnMuCiAgICAg IChkb2Mtdmlldy1mYWxsYmFjay1tb2RlKQoKICAgIChtYWpvci1tb2RlLXN1c3BlbmQpCgogICAg KGRvbGlzdCAodmFyIGRvYy12aWV3LXNhdmVkLXNldHRpbmdzKQogICAgICAoc2V0IChtYWtlLWxv Y2FsLXZhcmlhYmxlIChjYXIgdmFyKSkgKGNkciB2YXIpKSkKCiAgICA7OyBGaWd1cmUgb3V0IHRo ZSBkb2N1bWVudCB0eXBlLgogICAgKHVubGVzcyBkb2Mtdmlldy1kb2MtdHlwZQogICAgICAoZG9j LXZpZXctc2V0LWRvYy10eXBlKSkKICAgIChkb2Mtdmlldy1zZXQtdXAtc2luZ2xlLWNvbnZlcnRl cikKICAgICh1bmxlc3MgKG1lbXEgZG9jLXZpZXctZG9jLXR5cGUgJyhwcykpCiAgICAgIChzZXRx LWxvY2FsIHJlcXVpcmUtZmluYWwtbmV3bGluZSBuaWwpKQoKICAgIDs7IFRoZXNlIG1vZGVzIHdp bGwganVzdCBkaXNwbGF5ICIxIiwgc28gdGhleSdyZSBub3QgdmVyeSB1c2VmdWwKICAgIDs7IGlu IHRoaXMgbW9kZS4KICAgIChzZXRxLWxvY2FsIGdsb2JhbC1saW51bS1tb2RlIG5pbAogICAgICAg ICAgICAgICAgZGlzcGxheS1saW5lLW51bWJlcnMtbW9kZSBuaWwpCgogICAgKGRvYy12aWV3LW1h a2Utc2FmZS1kaXIgZG9jLXZpZXctY2FjaGUtZGlyZWN0b3J5KQogICAgOzsgSGFuZGxlIGNvbXBy ZXNzZWQgZmlsZXMsIHJlbW90ZSBmaWxlcywgZmlsZXMgaW5zaWRlIGFyY2hpdmVzCiAgICAoc2V0 cS1sb2NhbCBkb2Mtdmlldy0tYnVmZmVyLWZpbGUtbmFtZQoJCShjb252ZXJ0LXN0YW5kYXJkLWZp bGVuYW1lCiAgICAgICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAgICAgICAgKGprYS1jb21w ci1yZWFsbHktZG8tY29tcHJlc3MKICAgICAgICAgICAgICAgICAgIDs7IEZJWE1FOiB0aGVyZSdz IGEgcmlzayBvZiBuYW1lIGNvbmZsaWN0cyBoZXJlLgogICAgICAgICAgICAgICAgICAgKGV4cGFu ZC1maWxlLW5hbWUKICAgICAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeQog ICAgICAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLXNhbnMtZXh0ZW5zaW9uIGJ1ZmZlci1maWxl LW5hbWUpKQogICAgICAgICAgICAgICAgICAgIGRvYy12aWV3LWNhY2hlLWRpcmVjdG9yeSkpCiAg ICAgICAgICAgICAgICAgIDs7IElzIHRoZSBmaWxlIHJlYWRhYmxlIGJ5IGxvY2FsIHByb2Nlc3Nl cz8KICAgICAgICAgICAgICAgICAgOzsgV2UgdXNlZCB0byB1c2UgYGZpbGUtcmVtb3RlLXAnIGJ1 dCBpdCdzIHVuY2xlYXIgd2hhdCBpdCdzCiAgICAgICAgICAgICAgICAgIDs7IHN1cHBvc2VkIHRv IHJldHVybiBuaWwgZm9yIHRoaW5ncyBsaWtlIGxvY2FsIGZpbGVzIGFjY2Vzc2VkCiAgICAgICAg ICAgICAgICAgIDs7IHZpYSBgc3UnIG9yIHZpYSBmaWxlOi8vLi4uCiAgICAgICAgICAgICAgICAg ICgobGV0ICgoZmlsZS1uYW1lLWhhbmRsZXItYWxpc3QgbmlsKSkKICAgICAgICAgICAgICAgICAg ICAgKG5vdCAoYW5kIGJ1ZmZlci1maWxlLW5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChmaWxlLXJlYWRhYmxlLXAgYnVmZmVyLWZpbGUtbmFtZSkpKSkKICAgICAgICAgICAgICAg ICAgIDs7IEZJWE1FOiB0aGVyZSdzIGEgcmlzayBvZiBuYW1lIGNvbmZsaWN0cyBoZXJlLgogICAg ICAgICAgICAgICAgICAgKGV4cGFuZC1maWxlLW5hbWUKICAgICAgICAgICAgICAgICAgICAoaWYg YnVmZmVyLWZpbGUtbmFtZQoJCQkoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBidWZmZXItZmlsZS1u YW1lKQogICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1uYW1lKSkKICAgICAgICAgICAgICAg ICAgICBkb2Mtdmlldy1jYWNoZS1kaXJlY3RvcnkpKQogICAgICAgICAgICAgICAgICAodCBidWZm ZXItZmlsZS1uYW1lKSkpKQogICAgKHdoZW4gKG5vdCAoc3RyaW5nPSBkb2Mtdmlldy0tYnVmZmVy LWZpbGUtbmFtZSBidWZmZXItZmlsZS1uYW1lKSkKICAgICAgKHdyaXRlLXJlZ2lvbiBuaWwgbmls IGRvYy12aWV3LS1idWZmZXItZmlsZS1uYW1lKSkKCiAgICAoYWRkLWZ1bmN0aW9uIDphcm91bmQg KGxvY2FsICdyZXZlcnQtYnVmZmVyLWZ1bmN0aW9uKSAjJ2RvYy12aWV3LS1yZXZlcnQtYnVmZmVy KQoKICAgIChhZGQtaG9vayAnY2hhbmdlLW1ham9yLW1vZGUtaG9vawoJICAgICAgKGxhbWJkYSAo KQoJCShkb2Mtdmlldy1raWxsLXByb2MpCgkJKHJlbW92ZS1vdmVybGF5cyAocG9pbnQtbWluKSAo cG9pbnQtbWF4KSAnZG9jLXZpZXcgdCkpCgkgICAgICBuaWwgdCkKICAgIChhZGQtaG9vayAnY2xv bmUtaW5kaXJlY3QtYnVmZmVyLWhvb2sgIydkb2Mtdmlldy1jbG9uZS1idWZmZXItaG9vayBuaWwg dCkKICAgIChhZGQtaG9vayAna2lsbC1idWZmZXItaG9vayAjJ2RvYy12aWV3LWtpbGwtcHJvYyBu aWwgdCkKICAgIChzZXRxLWxvY2FsIGRlc2t0b3Atc2F2ZS1idWZmZXIgIydkb2Mtdmlldy1kZXNr dG9wLXNhdmUtYnVmZmVyKQoKICAgIChyZW1vdmUtb3ZlcmxheXMgKHBvaW50LW1pbikgKHBvaW50 LW1heCkgJ2RvYy12aWV3IHQpIDtKdXN0IGluIGNhc2UuCiAgICA7OyBLZWVwIHRyYWNrIG9mIGRp c3BsYXkgaW5mbyAoW3ZoXXNjcm9sbCwgcGFnZSBudW1iZXIsIG92ZXJsYXlzLAogICAgOzsgLi4u KSAgZm9yIGVhY2ggd2luZG93IGluIHdoaWNoIHRoaXMgZG9jdW1lbnQgaXMgc2hvd24uCiAgICAo YWRkLWhvb2sgJ2Jvb2tyb2xsLW1vZGUtbmV3LXdpbmRvdy1mdW5jdGlvbnMKCSAgICAgICMnZG9j LXZpZXctbmV3LXdpbmRvdy1mdW5jdGlvbiBuaWwgdCkKICAgIChib29rcm9sbC1tb2RlLXNldHVw LXdpbnByb3BzKQoKICAgIChzZXRxLWxvY2FsIG1vZGUtbGluZS1wb3NpdGlvbgogICAgICAgICAg ICAgICAgJygiIFAiICg6ZXZhbCAobnVtYmVyLXRvLXN0cmluZyAoZG9jLXZpZXctY3VycmVudC1w YWdlKSkpCiAgICAgICAgICAgICAgICAgICIvIiAoOmV2YWwgKG51bWJlci10by1zdHJpbmcgKGRv Yy12aWV3LWxhc3QtcGFnZS1udW1iZXIpKSkpKQogICAgOzsgRG9uJ3Qgc2Nyb2xsIHVubGVzcyB0 aGUgdXNlciBzcGVjaWZpY2FsbHkgYXNrZWQgZm9yIGl0LgogICAgKHNldHEtbG9jYWwgYXV0by1o c2Nyb2xsLW1vZGUgbmlsKQogICAgKGlmIChib3VuZHAgJ213aGVlbC1zY3JvbGwtdXAtZnVuY3Rp b24pIDsgbm90IC0td2l0aG91dC14IGJ1aWxkCiAgICAgICAgKHNldHEtbG9jYWwgbXdoZWVsLXNj cm9sbC11cC1mdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICMnZG9jLXZpZXctc2Nyb2xsLXVw LW9yLW5leHQtcGFnZSkpCiAgICAoaWYgKGJvdW5kcCAnbXdoZWVsLXNjcm9sbC1kb3duLWZ1bmN0 aW9uKQogICAgICAgIChzZXRxLWxvY2FsIG13aGVlbC1zY3JvbGwtZG93bi1mdW5jdGlvbgogICAg ICAgICAgICAgICAgICAgICMnZG9jLXZpZXctc2Nyb2xsLWRvd24tb3ItcHJldmlvdXMtcGFnZSkp CiAgICAoc2V0cS1sb2NhbCBjdXJzb3ItdHlwZSBuaWwpCiAgICAodXNlLWxvY2FsLW1hcCBkb2Mt dmlldy1tb2RlLW1hcCkKICAgIChhZGQtaG9vayAnYWZ0ZXItcmV2ZXJ0LWhvb2sgIydkb2Mtdmll dy1yZWNvbnZlcnQtZG9jIG5pbCB0KQogICAgKHNldHEtbG9jYWwgYm9va21hcmstbWFrZS1yZWNv cmQtZnVuY3Rpb24KICAgICAgICAgICAgICAgICMnZG9jLXZpZXctYm9va21hcmstbWFrZS1yZWNv cmQpCiAgICAoc2V0cSBtb2RlLW5hbWUgIkRvY1ZpZXciCgkgIGJ1ZmZlci1yZWFkLW9ubHkgdAoJ ICBtYWpvci1tb2RlICdkb2Mtdmlldy1tb2RlKQogICAgKGxldCAoKGluZm8gKGRvYy12aWV3LWlu Zm8tcGFnZXMpKSkKICAgICAgKHNldHEgbnVtYmVyLW9mLXBhZ2VzIChjYXIgaW5mbykKICAgICAg ICAgICAgOzsgVE9ETyBtdWx0aXBseSBieSBhcHByb3ByaWF0ZSBzY2FsaW5nIGZhY3RvcgogICAg ICAgICAgICBpbWFnZS1zaXplcyAoY2RyIGluZm8pKSkKICAgIChzZXRxIGltYWdlLXBvc2l0aW9u cyAobGV0ICgoc3VtIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25z KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvbGlzdCAocyBpbWFnZS1zaXplcykKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggc3VtIHBvc2l0aW9ucykKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNldHEgc3VtICgrIHN1bSAoY2RyIHMpKSkpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobnJldmVyc2UgcG9zaXRpb25zKSkpCiAgICAoZG9jLXZpZXct aW5pdGlhdGUtZGlzcGxheSkKICAgIDs7IFN3aXRjaCBvZmYgdmlldy1tb2RlIGV4cGxpY2l0bHks IGJlY2F1c2UgZG9jLXZpZXctbW9kZSBpcyB0aGUKICAgIDs7IGNhbm9uaWNhbCB2aWV3IG1vZGUg Zm9yIFBERi9QUy9EVkkgZmlsZXMuICBUaGlzIGNvdWxkIGJlCiAgICA7OyBzd2l0Y2hlZCBvbiBh dXRvbWF0aWNhbGx5IGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YKICAgIDs7IGB2aWV3LXJlYWQt b25seScuCiAgICAoc2V0cS1sb2NhbCB2aWV3LXJlYWQtb25seSBuaWwpCiAgICAocnVuLW1vZGUt aG9va3MgJ2RvYy12aWV3LW1vZGUtaG9vaykKICAgIChib29rcm9sbC1tb2RlKSkpCgooZGVmdW4g ZG9jLXZpZXctZmFsbGJhY2stbW9kZSAoKQogICJGYWxsYmFjayB0byB0aGUgcHJldmlvdXMgb3Ig bmV4dCBiZXN0IG1ham9yIG1vZGUuIgogIChsZXQgKCh2YXJzIChpZiAoZGVyaXZlZC1tb2RlLXAg J2RvYy12aWV3LW1vZGUpCiAgICAgICAgICAgICAgICAgIChtYXBjYXIgKGxhbWJkYSAodmFyKSAo Y29ucyB2YXIgKHN5bWJvbC12YWx1ZSB2YXIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAn KGRvYy12aWV3LXJlc29sdXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2tyb2xs LW1vZGUtd2lucHJvcHMtYWxpc3QpKSkpKQogICAgKHJlbW92ZS1vdmVybGF5cyAocG9pbnQtbWlu KSAocG9pbnQtbWF4KSAnZG9jLXZpZXcgdCkKICAgIChtYWpvci1tb2RlLXJlc3RvcmUgJyhkb2Mt dmlldy1tb2RlLW1heWJlIGRvYy12aWV3LW1vZGUpKQogICAgKHdoZW4gdmFycwogICAgICAoc2V0 cS1sb2NhbCBkb2Mtdmlldy1zYXZlZC1zZXR0aW5ncyB2YXJzKSkpKQoKOzs7IyMjYXV0b2xvYWQK KGRlZnVuIGRvYy12aWV3LW1vZGUtbWF5YmUgKCkKICAiU3dpdGNoIHRvIGBkb2Mtdmlldy1tb2Rl JyBpZiBwb3NzaWJsZS4KSWYgdGhlIHJlcXVpcmVkIGV4dGVybmFsIHRvb2xzIGFyZSBub3QgYXZh aWxhYmxlLCB0aGVuIGZhbGxiYWNrCnRvIHRoZSBuZXh0IGJlc3QgbW9kZS4iCiAgKGNvbmRpdGlv bi1jYXNlIG5pbAogICAgICAoZG9jLXZpZXctc2V0LWRvYy10eXBlKQogICAgKGVycm9yIChkb2Mt dmlldy1mYWxsYmFjay1tb2RlKSkpCiAgKGlmIChkb2Mtdmlldy1tb2RlLXAgZG9jLXZpZXctZG9j LXR5cGUpCiAgICAgIChkb2Mtdmlldy1tb2RlKQogICAgKGRvYy12aWV3LWZhbGxiYWNrLW1vZGUp KSkKCjs7OyMjI2F1dG9sb2FkCihkZWZpbmUtbWlub3ItbW9kZSBkb2Mtdmlldy1taW5vci1tb2Rl CiAgIlRvZ2dsZSBkaXNwbGF5aW5nIGJ1ZmZlciB2aWEgRG9jIFZpZXcgKERvYyBWaWV3IG1pbm9y IG1vZGUpLgoKU2VlIHRoZSBjb21tYW5kIGBkb2Mtdmlldy1tb2RlJyBmb3IgbW9yZSBpbmZvcm1h dGlvbiBvbiB0aGlzIG1vZGUuIgogIDpsaWdodGVyICIgRG9jVmlldyIKICAod2hlbiBkb2Mtdmll dy1taW5vci1tb2RlCiAgICAoYWRkLWhvb2sgJ2NoYW5nZS1tYWpvci1tb2RlLWhvb2sgKGxhbWJk YSAoKSAoZG9jLXZpZXctbWlub3ItbW9kZSAtMSkpIG5pbCB0KQogICAgKG1lc3NhZ2UKICAgICAi JXMiCiAgICAgKHN1YnN0aXR1dGUtY29tbWFuZC1rZXlzCiAgICAgICJUeXBlIFxcW2RvYy12aWV3 LXRvZ2dsZS1kaXNwbGF5XSB0byB0b2dnbGUgYmV0d2VlbiBlZGl0aW5nIG9yIHZpZXdpbmcgdGhl IGRvY3VtZW50LiIpKSkpCgooZGVmdW4gZG9jLXZpZXctY2xlYXItY2FjaGUgKCkKICAiRGVsZXRl IHRoZSB3aG9sZSBjYWNoZSAoYGRvYy12aWV3LWNhY2hlLWRpcmVjdG9yeScpLiIKICAoaW50ZXJh Y3RpdmUpCiAgKGRpcmVkLWRlbGV0ZS1maWxlIGRvYy12aWV3LWNhY2hlLWRpcmVjdG9yeSAnYWx3 YXlzKSkKCihkZWZ1biBkb2Mtdmlldy1kaXJlZC1jYWNoZSAoKQogICJPcGVuIGBkaXJlZCcgaW4g YGRvYy12aWV3LWNhY2hlLWRpcmVjdG9yeScuIgogIChpbnRlcmFjdGl2ZSkKICAoZGlyZWQgZG9j LXZpZXctY2FjaGUtZGlyZWN0b3J5KSkKCjs7OzsgUHJlc2VudGF0aW9uIG1vZGUKCihkZWZ2YXIg ZG9jLXZpZXctcHJlc2VudGF0aW9uLW1vZGUtbWFwCiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Ut a2V5bWFwKSkpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxlIiAnZG9jLXZpZXctcHJlc2VudGF0aW9u LWV4aXQpCiAgICAoZGVmaW5lLWtleSBtYXAgInEiICdkb2Mtdmlldy1wcmVzZW50YXRpb24tZXhp dCkKICAgIDs7IChkZWZpbmUta2V5IG1hcCAiQyIgJ2RvYy12aWV3LWNvbnZlcnQtYWxsLXBhZ2Vz KQogICAgbWFwKSkKCihkZWZ2YXItbG9jYWwgZG9jLXZpZXctcHJlc2VudGF0aW9uLS1zcmMtZGF0 YSBuaWwpCgooZGVmdW4gZG9jLXZpZXctcHJlc2VudGF0aW9uLWV4aXQgKCkKICAiTGVhdmUgRG9j LVZpZXcncyBwcmVzZW50YXRpb24gbW9kZS4iCiAgKGludGVyYWN0aXZlKQogIChkb2Mtdmlldy1w cmVzZW50YXRpb24tbW9kZSAtMSkpCgooZGVmaW5lLW1pbm9yLW1vZGUgZG9jLXZpZXctcHJlc2Vu dGF0aW9uLW1vZGUKICAiTWlub3IgbW9kZSB1c2VkIHdoaWxlIGluIHByZXNlbnRhdGlvbiBtb2Rl LiIKICA6aW5pdC12YWx1ZSBuaWwgOmtleW1hcCBkb2Mtdmlldy1wcmVzZW50YXRpb24tbW9kZS1t YXAKICAoaWYgZG9jLXZpZXctcHJlc2VudGF0aW9uLW1vZGUKICAgICAgKHByb2duCiAgICAgICAg KHNldHEtbG9jYWwgbW9kZS1saW5lLWZvcm1hdCBuaWwpCiAgICAgICAgKGRvYy12aWV3LWZpdC1w YWdlLXRvLXdpbmRvdykKICAgICAgICA7OyAoZG9jLXZpZXctY29udmVydC1hbGwtcGFnZXMpCiAg ICAgICAgKQogICAgKGtpbGwtbG9jYWwtdmFyaWFibGUgJ21vZGUtbGluZS1mb3JtYXQpCiAgICAo bGV0ICgocG4gKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkpCiAgICAgICAgICAod2luIChzZWxlY3Rl ZC13aW5kb3cpKSkKICAgICAgKGRvYy12aWV3LXByZXNlbnRhdGlvbi0tcHJvcGFnYXRlLXBuIGRv Yy12aWV3LXByZXNlbnRhdGlvbi0tc3JjLWRhdGEgcG4pCiAgICAgIChzZXRxIGRvYy12aWV3LXBy ZXNlbnRhdGlvbi0tc3JjLWRhdGEgbmlsKQogICAgICAod2l0aC1zZWxlY3RlZC13aW5kb3cgd2lu CiAgICAgICAgKGlmIChhbmQgKG9uZS13aW5kb3ctcCkgKHdpbmRvdy1kZWRpY2F0ZWQtcCkpCiAg ICAgICAgICAgIChkZWxldGUtZnJhbWUpKSkpKSkKCihkZWZ1biBkb2Mtdmlldy1wcmVzZW50YXRp b24tLXByb3BhZ2F0ZS1wbiAoc3JjLWRhdGEgcG4pCiAgKHdoZW4gc3JjLWRhdGEKICAgIChsZXQg KCh3aW4gKGNhciBzcmMtZGF0YSkpKQogICAgICAod2hlbiAoYW5kICh3aW5kb3ctbGl2ZS1wIHdp bikKICAgICAgICAgICAgICAgICAoZXEgKGN1cnJlbnQtYnVmZmVyKSAod2luZG93LWJ1ZmZlciB3 aW4pKSkKICAgICAgICAoc2VsZWN0LXdpbmRvdyB3aW4pKQogICAgICAod2hlbiAoZXEgKGRvYy12 aWV3LWN1cnJlbnQtcGFnZSkgKGNkciBzcmMtZGF0YSkpCiAgICAgICAgKGRvYy12aWV3LWdvdG8t cGFnZSBwbikpKSkpCgooZGVmdW4gZG9jLXZpZXctcHJlc2VudGF0aW9uICgpCiAgIlB1dCBEb2Mt VmlldyBpbiBwcmVzZW50YXRpb24gbW9kZS4iCiAgKGludGVyYWN0aXZlKQogIChsZXQqICgoc3Jj LWRhdGEgKGNvbnMgKHNlbGVjdGVkLXdpbmRvdykgKGRvYy12aWV3LWN1cnJlbnQtcGFnZSkpKQog ICAgICAgICAobWFsIChkaXNwbGF5LW1vbml0b3ItYXR0cmlidXRlcy1saXN0KSkKICAgICAgICAg KG1vbml0b3ItdG9wIDApCiAgICAgICAgIChtb25pdG9yLWxlZnQgMCkKICAgICAgICAgKG1vbml0 b3ItaGVpZ2h0IChkaXNwbGF5LXBpeGVsLWhlaWdodCkpCiAgICAgICAgIChtb25pdG9yLXdpZHRo IChkaXNwbGF5LXBpeGVsLXdpZHRoKSkpCiAgICAoZG9saXN0IChhdHRycyBtYWwpCiAgICAgICh3 aGVuIChtZW1xIChzZWxlY3RlZC1mcmFtZSkgKGFsaXN0LWdldCAnZnJhbWVzIGF0dHJzKSkKICAg ICAgICAobGV0ICgoZ2VvbSAoYWxpc3QtZ2V0ICdnZW9tZXRyeSBhdHRycykpKQogICAgICAgICAg KHdoZW4gZ2VvbQogICAgICAgICAgICAoc2V0cSBtb25pdG9yLWxlZnQgKG50aCAwIGdlb20pKQog ICAgICAgICAgICAoc2V0cSBtb25pdG9yLXRvcCAobnRoIDEgZ2VvbSkpCiAgICAgICAgICAgIChz ZXRxIG1vbml0b3Itd2lkdGggKG50aCAyIGdlb20pKQogICAgICAgICAgICAoc2V0cSBtb25pdG9y LWhlaWdodCAobnRoIDMgZ2VvbSkpKSkpKQogICAgKGxldCAoKGZyYW1lIChtYWtlLWZyYW1lCiAg ICAgICAgICAgICAgICAgIGAoKG1pbmlidWZmZXIgLiBuaWwpCiAgICAgICAgICAgICAgICAgICAg KGZ1bGxzY3JlZW4gLiBmdWxsYm90aCkKICAgICAgICAgICAgICAgICAgICAoaGVpZ2h0IC4gLChj ZWlsaW5nIG1vbml0b3ItaGVpZ2h0IChmcmFtZS1jaGFyLWhlaWdodCkpKQogICAgICAgICAgICAg ICAgICAgIDs7IERvbid0IHVzZSBgY2VpbGluZycgaGVyZSBzaW5jZSBkb2MtdmlldyB3aWxsIGNl bnRlciB0aGUKICAgICAgICAgICAgICAgICAgICA7OyBpbWFnZSBpbnN0ZWFkLgogICAgICAgICAg ICAgICAgICAgICh3aWR0aCAuICwoY2VpbGluZyBtb25pdG9yLXdpZHRoIChmcmFtZS1jaGFyLXdp ZHRoKSkpCiAgICAgICAgICAgICAgICAgICAgKG5hbWUgLiAiRG9jLVZpZXctUHJlc2VudGF0aW9u IikKICAgICAgICAgICAgICAgICAgICAodG9wIC4gLG1vbml0b3ItdG9wKSAobGVmdCAuICxtb25p dG9yLWxlZnQpICh1c2VyLXBvc2l0aW9uIC4gdCkKICAgICAgICAgICAgICAgICAgICAodmVydGlj YWwtc2Nyb2xsLWJhcnMgLiBuaWwpCiAgICAgICAgICAgICAgICAgICAgKGxlZnQtZnJpbmdlIC4g MCkgKHJpZ2h0LWZyaW5nZSAuIDApCiAgICAgICAgICAgICAgICAgICAgKG1lbnUtYmFyLWxpbmVz IC4gMCkKICAgICAgICAgICAgICAgICAgICAodG9vbC1iYXItbGluZXMgLiAwKSkpKSkKICAgICAg KHNlbGVjdC13aW5kb3cgKGZyYW1lLXJvb3Qtd2luZG93IGZyYW1lKSkKICAgICAgKHNldHEgZG9j LXZpZXctcHJlc2VudGF0aW9uLS1zcmMtZGF0YSBzcmMtZGF0YSkKICAgICAgKHNldC13aW5kb3ct ZGVkaWNhdGVkLXAgKHNlbGVjdGVkLXdpbmRvdykgdCkKICAgICAgKGRvYy12aWV3LXByZXNlbnRh dGlvbi1tb2RlIDEpKSkpCgoKOzs7OyBCb29rbWFyayBpbnRlZ3JhdGlvbgoKKGRlY2xhcmUtZnVu Y3Rpb24gYm9va21hcmstbWFrZS1yZWNvcmQtZGVmYXVsdAogICAgICAgICAgICAgICAgICAiYm9v a21hcmsiICgmb3B0aW9uYWwgbm8tZmlsZSBuby1jb250ZXh0IHBvc24pKQooZGVjbGFyZS1mdW5j dGlvbiBib29rbWFyay1wcm9wLWdldCAiYm9va21hcmsiIChib29rbWFyayBwcm9wKSkKKGRlY2xh cmUtZnVuY3Rpb24gYm9va21hcmstZGVmYXVsdC1oYW5kbGVyICJib29rbWFyayIgKGJtaykpCgoo ZGVmdW4gZG9jLXZpZXctYm9va21hcmstbWFrZS1yZWNvcmQgKCkKICAobmNvbmMgKGJvb2ttYXJr LW1ha2UtcmVjb3JkLWRlZmF1bHQpCiAgICAgICAgIGAoKHBhZ2UgICAgIC4gLChkb2Mtdmlldy1j dXJyZW50LXBhZ2UpKQogICAgICAgICAgIChoYW5kbGVyICAuIGRvYy12aWV3LWJvb2ttYXJrLWp1 bXApKSkpCgo7OzsjIyNhdXRvbG9hZAooZGVmdW4gZG9jLXZpZXctYm9va21hcmstanVtcCAoYm1r KQogIDs7IFRoaXMgaW1wbGVtZW50cyB0aGUgYGhhbmRsZXInIGZ1bmN0aW9uIGludGVyZmFjZSBm b3IgcmVjb3JkIHR5cGUKICA7OyByZXR1cm5lZCBieSBgZG9jLXZpZXctYm9va21hcmstbWFrZS1y ZWNvcmQnLCB3aGljaCBzZWUuCiAgKGxldCAoKHBhZ2UgKGJvb2ttYXJrLXByb3AtZ2V0IGJtayAn cGFnZSkpCgkoc2hvdy1mbi1zeW0gKG1ha2Utc3ltYm9sICJkb2Mtdmlldy1ib29rbWFyay1hZnRl ci1qdW1wLWhvb2siKSkpCiAgICAoZnNldCBzaG93LWZuLXN5bQoJICAobGFtYmRhICgpCgkgICAg KHJlbW92ZS1ob29rICdib29rbWFyay1hZnRlci1qdW1wLWhvb2sgc2hvdy1mbi1zeW0pCgkgICAg KHdoZW4gKG5vdCAoZXEgbWFqb3ItbW9kZSAnZG9jLXZpZXctbW9kZSkpCgkgICAgICAoZG9jLXZp ZXctdG9nZ2xlLWRpc3BsYXkpKQoJICAgICh3aXRoLXNlbGVjdGVkLXdpbmRvdwoJCShvciAoZ2V0 LWJ1ZmZlci13aW5kb3cgKGN1cnJlbnQtYnVmZmVyKSAwKQoJCSAgICAoc2VsZWN0ZWQtd2luZG93 KSkKCSAgICAgIChkb2Mtdmlldy1nb3RvLXBhZ2UgcGFnZSkpKSkKICAgIChhZGQtaG9vayAnYm9v a21hcmstYWZ0ZXItanVtcC1ob29rIHNob3ctZm4tc3ltKQogICAgKGJvb2ttYXJrLWRlZmF1bHQt aGFuZGxlciBibWspKSkKCjs7IE9ic29sZXRlLgoKKGRlZnVuIGRvYy12aWV3LWludGVyc2VjdGlv biAobDEgbDIpCiAgKGRlY2xhcmUgKG9ic29sZXRlIHNlcS1pbnRlcnNlY3Rpb24gIjI4LjEiKSkK ICAobnJldmVyc2UgKHNlcS1pbnRlcnNlY3Rpb24gbDEgbDIgIydlcSkpKQoKKHByb3ZpZGUgJ2Rv Yy12aWV3KQoKOzsgTG9jYWwgVmFyaWFibGVzOgo7OyBldmFsOiAob3V0bGluZS1taW5vci1tb2Rl IDEpCjs7IEVuZDoKCjs7OyBkb2Mtdmlldy5lbCBlbmRzIGhlcmUK --00000000000036e68205d5887f58 Content-Type: text/x-emacs-lisp; charset="US-ASCII"; name="bookroll.el" Content-Disposition: attachment; filename="bookroll.el" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kye9x50a1 Ozs7IGJvb2tyb2xsLmVsIC0tLSBCb29rIHJvbGwgcHJvdmlkaW5nIGNvbnRpbnVvdXMgc2Nyb2xs IGZvciBib29rcyBldGMuIC0qLSBsZXhpY2FsLWJpbmRpbmc6dCAtKi0KCjs7IENvcHlyaWdodCAo QykgMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KOzsKOzsgQXV0aG9yOiBEYW5p ZWwgTmljb2xhaSA8ZGFsYW5pY29sYWlAZ21haWwuY29tPgo7OyBLZXl3b3JkczogZmlsZXMsIG11 bHRpbWVkaWEKOzsgUGFja2FnZTogZW1hY3MKCjs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBF bWFjcy4KCjs7IEdOVSBFbWFjcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5Cjs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cjs7IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCjs7IChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgo7OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKOzsgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKOzsgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo7OyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKOzsgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK OzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgoKOzs7IENvbW1lbnRhcnk6Cgo7OzsgQ29kZToKKHJlcXVpcmUgJ2NsLWxp YikKKHJlcXVpcmUgJ3N2ZykKCihkZWZncm91cCBib29rcm9sbCBuaWwKICAiQm9va3JvbGwgc3V0 b21pemF0aW9ucy4iKQoKKGRlZnZhci1sb2NhbCBib29rcm9sbC1tb2RlLXdpbnByb3BzLWFsaXN0 IHQKICAiQWxpc3Qgb2Ygd2luZG93cyB0byB3aW5kb3cgcHJvcGVydGllcy4KRWFjaCBlbGVtZW50 IGhhcyB0aGUgZm9ybSAoV0lORE9XIC4gQUxJU1QpLgpTZWUgYGJvb2tyb2xsLW1vZGUtd2lucHJv cHMnLiIpCgooZGVmY3VzdG9tIGJyLXNjcm9sbC1mcmFjdGlvbiA0CiAgIlNldCB0aGUgc2Nyb2xs IHN0ZXAgc2l6ZSBpbiAxL2ZyYWN0aW9uIG9mIHBhZ2UuIikKCihkZWZ2YXItbG9jYWwgc3BsaXQt cmVnZXhwICJeWzAtOV0iKSA7OyBmb3IgY29sdW1uIG9mIG51bWJlcnMgYXMgcGxhY2Vob2xkZXJz Cjs7IChkZWZ2YXItbG9jYWwgc3BsaXQtcmVnZXhwICJcbiIpIDs7IGZvciBjb2x1bW4gb2YgbnVt YmVycyBhcyBwbGFjZWhvbGRlcnMKKGRlZnZhci1sb2NhbCBzcGxpdC1wb2ludC1vZmZzZXQgMSkK CihkZWZ2YXItbG9jYWwgb3ZlcmxheXMtbGlzdCAnKCkpIDs7IHdlIGFkZCBhIGR1bW15IG92ZXJs YXkgdG8gbWFrZSB0aGUgb3ZlcmxheQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOzsgaW5kaWNlcyBtYXRjaCB3aXRoIHRoZSBwYWdlLW51bWJlcnMKKGRlZnZhci1sb2NhbCBp bWFnZS1zaXplcyBuaWwpCjs7IChkZWZ2YXItbG9jYWwgaW1hZ2Utc2l6ZXMgbmlsKQooZGVmdmFy LWxvY2FsIGltYWdlLXBvc2l0aW9ucyBuaWwpCjs7IChkZWZ2YXItbG9jYWwgaW1hZ2UtcG9zaXRp b25zIG5pbCkKKGRlZnZhci1sb2NhbCBudW1iZXItb2YtcGFnZXMgMCkKCjs7IFdlIHN0YXJ0IHdp dGggdGhlIHNpbXBsZXN0IHNvbHV0aW9uIChpZiB0aGlzIGdpdmVzIHBlcmZvcm1hbmNlIGlzc3Vl cyB0aGVuIHdlCjs7IGNhbiBvcHRpbWl6ZS9tb2RpZnkgaXQgbGF0ZXIpLCB0aGF0IGlzIGFsd2F5 cyBkaXNwbGF5IGEgcGFnZSB0cmlwbGV0IGFyb3VuZAo7OyB0aGUgY3VycmVudGx5IHZpZXdlZCBw YWdlLCBleGNlcHQgZm9yIHRoZSBmaXJzdCBhbmQgbGFzdCBwYWdlcyB3aGVyZSB3ZQo7OyBkaXNw bGF5IG9ubHkgYSBkb3VibGV0LgooZGVmdmFyLWxvY2FsIGN1cnJlbnRseS1kaXNwbGF5ZWQtcGFn ZXMgbmlsKQoKOzs7IFRlc3RpbmcKCjs7IGNyZWF0ZSBjb2xvcmVkIHRlc3QgaW1hZ2VzCihkb3Rp bWVzIChpIDMpCiAgKHNldCAoaW50ZXJuIChmb3JtYXQgImltJXMiICgxKyBpKSkpIChsZXQqICgo dyA4MDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaCAx NjAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN2ZyAo c3ZnLWNyZWF0ZSB3IGgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc3ZnLXJlY3RhbmdsZSBzdmcgMCAwIHcgaCA6ZmlsbC1jb2xvciAocGNhc2UgaQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKDAgInJlZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMSAi Z3JlZW4iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDIgImJsdWUiKSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN2Zy1pbWFnZSBzdmcpKSkpCgo7OyBjcmVh dGUgY29sdW1uIG9mICdwbGFjZWhvbGRlcnMnCihkZWZ1biBici10ZXN0ICgpCiAgKGludGVyYWN0 aXZlKQogIChwb3AtdG8tYnVmZmVyICJib29rcm9sbC10ZXN0IikKICAoZXJhc2UtYnVmZmVyKQog IChib29rcm9sbC1tb2RlKQogIChsZXQgKChpbmhpYml0LXJlYWQtb25seSB0KSkKICAgIChzZXRx IGN1cnNvci10eXBlIG5pbCkKCiAgICAoc2V0cSBpbWFnZS1zaXplcyAobWFrZS1saXN0IDEwMDAg Jyg4MDAgLiAxNjAwKSkpCiAgICAoc2V0cSBpbWFnZS1wb3NpdGlvbnMgKGxldCAoKHN1bSAwKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25zKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAoZG9saXN0IChzIGltYWdlLXNpemVzKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwdXNoIHN1bSBwb3NpdGlvbnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHNldHEgc3VtICgrIHN1bSAoY2RyIHMpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChu cmV2ZXJzZSBwb3NpdGlvbnMpKSkKICAgIChzZXRxIG51bWJlci1vZi1wYWdlcyAobGVuZ3RoIGlt YWdlLXNpemVzKSkKCiAgICAoZG90aW1lcyAoaSAxMDAwKQogICAgICAoaW5zZXJ0IChudW1iZXIt dG8tc3RyaW5nIGkpKQogICAgICAoaW5zZXJ0ICJcbiIpKSkKCiAgKGJyLWNyZWF0ZS1vdmVybGF5 cy1saXN0IHQpCiAgKGJyLWNyZWF0ZS1wbGFjZWhvbGRlcnMpCgogIChnb3RvLWNoYXIgKHBvaW50 LW1pbikpCiAgKGJyLWdvdG8tcGFnZSAxKSkKCjs7OyBDb2RlCgooZGVmdW4gYm9va3JvbGwtbW9k ZS13aW5wcm9wcyAoJm9wdGlvbmFsIHdpbmRvdyBjbGVhbnVwKQogICJSZXR1cm4gd2lucHJvcHMg b2YgV0lORE9XLgpBIHdpbnByb3BzIG9iamVjdCBoYXMgdGhlIHNoYXBlIChXSU5ET1cgLiBBTElT VCkuCldJTkRPVyBkZWZhdWx0cyB0byBgc2VsZWN0ZWQtd2luZG93JyBpZiBpdCBkaXNwbGF5cyB0 aGUgY3VycmVudCBidWZmZXIsIGFuZApvdGhlcndpc2UgaXQgZGVmYXVsdHMgdG8gdCwgdXNlZCBm b3IgdGltZXMgd2hlbiB0aGUgYnVmZmVyIGlzIG5vdCBkaXNwbGF5ZWQuIgogIChjb25kICgobnVs bCB3aW5kb3cpCiAgICAgICAgIChzZXRxIHdpbmRvdwogICAgICAgICAgICAgICAoaWYgKGVxIChj dXJyZW50LWJ1ZmZlcikgKHdpbmRvdy1idWZmZXIpKSAoc2VsZWN0ZWQtd2luZG93KSB0KSkpCiAg ICAgICAgKChlcSB3aW5kb3cgdCkpCgkgICAgICAoKG5vdCAod2luZG93cCB3aW5kb3cpKQoJICAg ICAgIChlcnJvciAiTm90IGEgd2luZG93OiAlcyIgd2luZG93KSkpCiAgKHdoZW4gY2xlYW51cAog ICAgKHNldHEgYm9va3JvbGwtbW9kZS13aW5wcm9wcy1hbGlzdAogIAkgICAgICAoZGVscSBuaWwg KG1hcGNhciAobGFtYmRhICh3aW5wcm9wKQoJCQkgICAgICAgICAgICAgICAgICAgICAgICAobGV0 ICgodyAoY2FyLXNhZmUgd2lucHJvcCkpKQoJCQkJICAgICAgICAgICAgICAgICAgICAgICAgKGlm IChvciAobm90ICh3aW5kb3dwIHcpKSAod2luZG93LWxpdmUtcCB3KSkKCQkJCSAgICAgICAgICAg ICAgICAgICAgICAgICAgICB3aW5wcm9wKSkpCiAgCQkJICAgICAgICAgICAgICAgICAgICBib29r cm9sbC1tb2RlLXdpbnByb3BzLWFsaXN0KSkpKQogIChsZXQgKCh3aW5wcm9wcyAoYXNzcSB3aW5k b3cgYm9va3JvbGwtbW9kZS13aW5wcm9wcy1hbGlzdCkpKQogICAgOzsgRm9yIG5ldyB3aW5kb3dz LCBzZXQgZGVmYXVsdHMgZnJvbSB0aGUgbGF0ZXN0LgogICAgKGlmIHdpbnByb3BzCiAgICAgICAg OzsgTW92ZSB3aW5kb3cgdG8gZnJvbnQuCiAgICAgICAgKHNldHEgYm9va3JvbGwtbW9kZS13aW5w cm9wcy1hbGlzdAogICAgICAgICAgICAgIChjb25zIHdpbnByb3BzIChkZWxxIHdpbnByb3BzIGJv b2tyb2xsLW1vZGUtd2lucHJvcHMtYWxpc3QpKSkKICAgICAgKHNldHEgd2lucHJvcHMgKGNvbnMg d2luZG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb3B5LWFsaXN0IChjZGFyIGJvb2ty b2xsLW1vZGUtd2lucHJvcHMtYWxpc3QpKSkpCiAgICAgIDs7IEFkZCB3aW5wcm9wcyBiZWZvcmUg cnVubmluZyB0aGUgaG9vaywgdG8gYXZvaWQgaW5mLWxvb3BzIGlmIHRoZSBob29rCiAgICAgIDs7 IHRyaWdnZXJzIHdpbmRvdy1jb25maWd1cmF0aW9uLWNoYW5nZS1ob29rLgogICAgICAoc2V0cSBi b29rcm9sbC1tb2RlLXdpbnByb3BzLWFsaXN0CiAgICAgICAgICAgIChjb25zIHdpbnByb3BzIGJv b2tyb2xsLW1vZGUtd2lucHJvcHMtYWxpc3QpKQogICAgICAocnVuLWhvb2std2l0aC1hcmdzICdi b29rcm9sbC1tb2RlLW5ldy13aW5kb3ctZnVuY3Rpb25zIHdpbnByb3BzKSkKICAgIHdpbnByb3Bz KSkKCihkZWZ1biBib29rcm9sbC1tb2RlLXdpbmRvdy1nZXQgKHByb3AgJm9wdGlvbmFsIHdpbnBy b3BzKQogIChkZWNsYXJlIChndi1zZXR0ZXIgKGxhbWJkYSAodmFsKQogICAgICAgICAgICAgICAg ICAgICAgICBgKGJvb2tyb2xsLW1vZGUtd2luZG93LXB1dCAscHJvcCAsdmFsICx3aW5wcm9wcykp KSkKICAodW5sZXNzIChjb25zcCB3aW5wcm9wcykgKHNldHEgd2lucHJvcHMgKGJvb2tyb2xsLW1v ZGUtd2lucHJvcHMgd2lucHJvcHMpKSkKICAoY2RyIChhc3NxIHByb3AgKGNkciB3aW5wcm9wcykp KSkKCihkZWZ1biBib29rcm9sbC1tb2RlLXdpbmRvdy1wdXQgKHByb3AgdmFsICZvcHRpb25hbCB3 aW5wcm9wcykKICAodW5sZXNzIChjb25zcCB3aW5wcm9wcykgKHNldHEgd2lucHJvcHMgKGJvb2ty b2xsLW1vZGUtd2lucHJvcHMgd2lucHJvcHMpKSkKICAodW5sZXNzIChlcSB0IChjYXIgd2lucHJv cHMpKQogICAgKGJvb2tyb2xsLW1vZGUtd2luZG93LXB1dCBwcm9wIHZhbCB0KSkKICAoc2V0Y2Ry IHdpbnByb3BzIChjb25zIChjb25zIHByb3AgdmFsKQogICAgICAgICAgICAgICAgICAgICAgICAg KGRlbHEgKGFzc3EgcHJvcCAoY2RyIHdpbnByb3BzKSkgKGNkciB3aW5wcm9wcykpKSkpCgooZGVm dW4gYm9va3JvbGwtc2V0LXdpbmRvdy12c2Nyb2xsICh2c2Nyb2xsKQogIChzZXRmIChib29rcm9s bC1tb2RlLXdpbmRvdy1nZXQgJ3ZzY3JvbGwpIHZzY3JvbGwpCiAgKHNldC13aW5kb3ctdnNjcm9s bCAoc2VsZWN0ZWQtd2luZG93KSB2c2Nyb2xsIHQpKQoKKGRlZnVuIGJvb2tyb2xsLXNldC13aW5k b3ctaHNjcm9sbCAobmNvbCkKICAoc2V0ZiAoYm9va3JvbGwtbW9kZS13aW5kb3ctZ2V0ICdoc2Ny b2xsKSBuY29sKQogIChzZXQtd2luZG93LWhzY3JvbGwgKHNlbGVjdGVkLXdpbmRvdykgbmNvbCkp CgooZGVmdW4gYm9va3JvbGwtbW9kZS1yZWFwcGx5LXdpbnByb3BzICgpCiAgOzsgV2hlbiBzZXQt d2luZG93LWJ1ZmZlciwgc2V0IGhzY3JvbGwgYW5kIHZzY3JvbGwgdG8gd2hhdCB0aGV5IHdlcmUK ICA7OyBsYXN0IHRpbWUgdGhlIGltYWdlIHdhcyBkaXNwbGF5ZWQgaW4gdGhpcyB3aW5kb3cuCiAg KHdoZW4gKGxpc3RwIGJvb2tyb2xsLW1vZGUtd2lucHJvcHMtYWxpc3QpCiAgICA7OyBCZXdhcmU6 IHRoaXMgY2FsbCB0byBib29rcm9sbC1tb2RlLXdpbnByb3BzIGNhbid0IGJlIG9wdGltaXplZCBh d2F5LAogICAgOzsgYmVjYXVzZSBpdCBub3Qgb25seSBnZXRzIHRoZSB3aW5wcm9wcyBkYXRhIGJ1 dCBzZXRzIGl0IHVwIGlmIG5lZWRlZAogICAgOzsgKGUuZy4gaXQncyB1c2VkIGJ5IGRvYy12aWV3 IHRvIGRpc3BsYXkgdGhlIGltYWdlIGluIGEgbmV3IHdpbmRvdykuCiAgICAobGV0KiAoKHdpbnBy b3BzIChib29rcm9sbC1tb2RlLXdpbnByb3BzIG5pbCB0KSkKICAgICAgICAgICAoaHNjcm9sbCAo Ym9va3JvbGwtbW9kZS13aW5kb3ctZ2V0ICdoc2Nyb2xsIHdpbnByb3BzKSkKICAgICAgICAgICAo dnNjcm9sbCAoYm9va3JvbGwtbW9kZS13aW5kb3ctZ2V0ICd2c2Nyb2xsIHdpbnByb3BzKSkpCiAg ICAgICh3aGVuIChib29rcm9sbC1nZXQtZGlzcGxheS1wcm9wZXJ0eSkgO09ubHkgZG8gaXQgaWYg d2UgZGlzcGxheSBhbiBpbWFnZSEKCSAgICAgIChpZiBoc2Nyb2xsIChzZXQtd2luZG93LWhzY3Jv bGwgKHNlbGVjdGVkLXdpbmRvdykgaHNjcm9sbCkpCgkgICAgICAoaWYgdnNjcm9sbCAoc2V0LXdp bmRvdy12c2Nyb2xsIChzZWxlY3RlZC13aW5kb3cpIHZzY3JvbGwgdCkpKSkpKQoKKGRlZnVuIGJv b2tyb2xsLW1vZGUtc2V0dXAtd2lucHJvcHMgKCkKICA7OyBSZWNvcmQgY3VycmVudCBzY3JvbGwg c2V0dGluZ3MuCiAgKHVubGVzcyAobGlzdHAgYm9va3JvbGwtbW9kZS13aW5wcm9wcy1hbGlzdCkK ICAgIChzZXRxIGJvb2tyb2xsLW1vZGUtd2lucHJvcHMtYWxpc3QgbmlsKSkKICAoYWRkLWhvb2sg J3dpbmRvdy1jb25maWd1cmF0aW9uLWNoYW5nZS1ob29rCgkgICAgICAgICAgIydib29rcm9sbC1t b2RlLXJlYXBwbHktd2lucHJvcHMgbmlsIHQpKQoKKGRlZnVuIGJvb2tyb2xsLWdldC1kaXNwbGF5 LXByb3BlcnR5ICgpCiAgKGdldC1jaGFyLXByb3BlcnR5IChwb2ludC1taW4pICdkaXNwbGF5CiAg ICAgICAgICAgICAgICAgICAgIDs7IFRoZXJlIG1pZ2h0IGJlIGRpZmZlcmVudCBpbWFnZXMgZm9y IGRpZmZlcmVudCBkaXNwbGF5cy4KICAgICAgICAgICAgICAgICAgICAgKGlmIChlcSAod2luZG93 LWJ1ZmZlcikgKGN1cnJlbnQtYnVmZmVyKSkKICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxl Y3RlZC13aW5kb3cpKSkpCgo7OyBUT0RPIHJlcGxhY2UgdGVzdCBzaXplcwooc2V0cSBpbWFnZS1z aXplcyAobWFrZS1saXN0IDEwMCAnKDgwMCAuIDE2MDApKSkKKHNldHEgaW1hZ2UtcG9zaXRpb25z IChsZXQgKChzdW0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9ucykKICAg ICAgICAgICAgICAgICAgICAgICAgKGRvbGlzdCAocyBpbWFnZS1zaXplcykKICAgICAgICAgICAg ICAgICAgICAgICAgICAocHVzaCBzdW0gcG9zaXRpb25zKQogICAgICAgICAgICAgICAgICAgICAg ICAgIChzZXRxIHN1bSAoKyBzdW0gKGNkciBzKSkpKQogICAgICAgICAgICAgICAgICAgICAgICAo bnJldmVyc2UgcG9zaXRpb25zKSkpCihzZXRxIG51bWJlci1vZi1wYWdlcyAobGVuZ3RoIGltYWdl LXNpemVzKSkKCihkZWZ1biBici1pbWFnZS1zaXplICgmb3B0aW9uYWwgcGFnZSkKICAobnRoICgt IChvciBwYWdlIChici1jdXJyZW50LXBhZ2UpKSAxKSBpbWFnZS1zaXplcykpCgooZGVmdW4gYnIt aW1hZ2UtcG9zaXRpb24gKCZvcHRpb25hbCBwYWdlKQogIChudGggKC0gcGFnZSAxKSBpbWFnZS1w b3NpdGlvbnMpKQoKKGRlZnVuIGJyLWNyZWF0ZS1lbXB0eS1wYWdlIChzaXplKQogIChwY2FzZS1s ZXQqICgoYCgsdyAuICxoKSBzaXplKSkKICAgICAgICAgICAgICAgKHN2Zy1pbWFnZSAoc3ZnLWNy ZWF0ZSB3IGgpKSkpCgooZGVmdW4gYnItY3JlYXRlLW92ZXJsYXlzLWxpc3QgKCZvcHRpb25hbCBp bmNsdWRlLWZpcnN0KQogICJDcmVhdGUgbGlzdCBvdmVyIG92ZXJsYXlzIHNwcmVhZCBvdXQgb3Zl ciB0aGUgYnVmZmVyIGNvbnRlbnRzLgpQYXNzIG5vbi1uaWwgdmFsdWUgZm9yIGBpbmNsdWRlLWZp cnN0JyB3aGVuIHRoZSBidWZmZXIgdGV4dCBzdGFydHMKd2l0aCBhIG1hdGNoLgoKVGhlIGZpcnN0 IGVsZW1lbnQgaXMgYSBkdW1teSBlbGVtZW50IHRvIG1ha2Ugb3ZlcmxheXMgaW5kaWNlcwptYXRj aCB3aXRoIHBhZ2UtbnVtYmVycy4iCiAgOzsgZmlyc3Qgb3ZlcmxheSBzdGFydHMgYXQgMQogIChs ZXQgKChiZWcgKGdvdG8tY2hhciAocG9pbnQtbWluKSkpKQogICAgKHdoZW4gaW5jbHVkZS1maXJz dAogICAgICAocHVzaCAobWFrZS1vdmVybGF5IGJlZwogICAgICAgICAgICAgICAgICAgICAgICAg IChzZWFyY2gtZm9yd2FyZC1yZWdleHAgc3BsaXQtcmVnZXhwCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHQpKQogICAgICAgICAgICBvdmVybGF5cy1saXN0KQog ICAgICA7OyAoc2V0cSBiZWcgKC0gKHNlYXJjaC1mb3J3YXJkLXJlZ2V4cCBzcGxpdC1yZWdleHAg bmlsIHQpCiAgICAgIDs7ICAgICAgICAgICAgICAxKSkpCiAgICAgIChzZXRxIGJlZyAoZm9yd2Fy ZC1saW5lKSkpCiAgICA7OyBXZSB3YW50IHRvIGNyZWF0ZSBhbiBvdmVybGF5IGZvciBlYWNoIHBh Z2UgaW4gdGhlIGBpbWFnZS1zaXplcycgbGlzdC4KICAgIDs7IFdoZW4gaW5jbHVkZS1maXJzdCBp cyBub24tbmlsIHRoZW4gdGhlIGxpc3QgYWxyZWFkeSBjb250YWlucyBhIGZpcnN0CiAgICA7OyBv dmVybGF5LiBGb3IgYm90aCBsaXN0cyBhIGxhc3Qgb3ZlcmxheSBpcyBhZGRlZCBhZnRlciB0aGUg bG9vcCB0byBiZSBzdXJlCiAgICA7OyBpdCBleHRlbmRzIHRvIChwb2ludC1tYXgpLgogICAgKGRv bGlzdCAoeCAoaWYgaW5jbHVkZS1maXJzdAogICAgICAgICAgICAgICAgICAgKGNkZHIgaW1hZ2Ut c2l6ZXMpCiAgICAgICAgICAgICAgICAgKGNkciBpbWFnZS1zaXplcykpKQogICAgICAoc2VhcmNo LWZvcndhcmQtcmVnZXhwIHNwbGl0LXJlZ2V4cCBuaWwgdCkKICAgICAgOzsgKGZvcndhcmQtbGlu ZSkKICAgICAgKHB1c2ggKG1ha2Utb3ZlcmxheSBiZWcgKC0gKHBvaW50KSAxIHNwbGl0LXBvaW50 LW9mZnNldCkpIG92ZXJsYXlzLWxpc3QpCiAgICAgIChzZXRxIGJlZyAoLSAocG9pbnQpIDEpKSkK ICAgIChwdXNoIChtYWtlLW92ZXJsYXkgYmVnIChwb2ludC1tYXgpKSBvdmVybGF5cy1saXN0KQog ICAgKHNldHEgb3ZlcmxheXMtbGlzdCAobnJldmVyc2Ugb3ZlcmxheXMtbGlzdCkpKSkKCjs7IFRP RE8gcmVwbGFjZSB0ZXN0IHNpemVzCihkZWZ1biBici1jcmVhdGUtcGxhY2Vob2xkZXJzICgpCiAg KGxldCAoKHBoIChici1jcmVhdGUtZW1wdHktcGFnZSAnKDgwMCAuIDE2MDApKSkKICAgICAgICAo Y29uc3RhbnQtc2l6ZSAoY2wtZXZlcnkgIydlcWwgaW1hZ2Utc2l6ZXMgKGNkciBpbWFnZS1zaXpl cykpKSkKICAgICAgKGRvdGltZXMgKGkgKGxlbmd0aCBpbWFnZS1zaXplcykpCiAgICAgICAgKGxl dCAoKHAgKDErIGkpKSk7OyBzaGlmdCBieSAxIHRvIG1hdGNoIHdpdGggcGFnZSBudW1iZXJzCiAg ICAgICAgICAob3ZlcmxheS1wdXQgKG50aCBwIG92ZXJsYXlzLWxpc3QpICdkaXNwbGF5IChpZiBj b25zdGFudC1zaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoYnItY3JlYXRlLWVtcHR5LXBhZ2UgKG50aCBpIGlt YWdlLXNpemVzKSkpKSkpKSkKCihkZWZ1biBici1jdXJyZW50LXBhZ2UgKCkKICAoaW50ZXJhY3Rp dmUpCiAgKGxldCAoKGkgMCkKICAgICAgICAoY3VyLXBvcyAod2luZG93LXZzY3JvbGwgbmlsIHQp KSkKICAgICh3aGlsZSAoPD0gKG50aCAoMSsgaSkgaW1hZ2UtcG9zaXRpb25zKSAoKyBjdXItcG9z ICgvICh3aW5kb3ctcGl4ZWwtaGVpZ2h0KSAyKSkpCiAgICAgIChzZXRxIGkgKDErIGkpKSkKICAg ICgxKyBpKSkpCiAgICA7OyAod2hpbGUgKDw9IChwcmludCAobnRoICgxKyBpKSBpbWFnZS1wb3Np dGlvbnMpKSAocHJpbnQgKCsgY3VyLXBvcyAoLyAod2luZG93LXBpeGVsLWhlaWdodCkgMikpKSkK ICAgIDs7ICAgKHNldHEgaSAoMSsgaSkpKQogICAgOzsgKHByaW50ICgxKyBpKSkpKQoKKGRlZnVu IGJyLWRpc3BsYXktcGFnZSAocGFnZSBpbWFnZSkKICAobGV0ICgoZWx0ICgtIHBhZ2UgMSkpKQog ICAgKG92ZXJsYXktcHV0IChudGggZWx0IChkb2Mtdmlldy1vdmVybGF5cykpICdkaXNwbGF5IGlt YWdlKSkpCiAgICAgICAgICAgICAgICAgOzsgKHBjYXNlICglIHBhZ2UgMykKICAgICAgICAgICAg ICAgICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCBpbTEpCiAgICAgICAgICAg ICAgICAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgaW0yKQogICAgICAgICAg ICAgICAgIDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgyIGltMykpKSkpCgooZGVm dW4gYnItdW5kaXNwbGF5LXBhZ2UgKHBhZ2UpCiAgKGxldCAoKGVsdCAoLSBwYWdlIDEpKSkKICAg IChvdmVybGF5LXB1dCAobnRoIGVsdCBvdmVybGF5cy1saXN0KQogICAgICAgICAgICAgICAgICdk aXNwbGF5CiAgICAgICAgICAgICAgICAgIChici1jcmVhdGUtZW1wdHktcGFnZSAoY2FyIGltYWdl LXNpemVzKSkpKSkKCihkZWZ1biBici11cGRhdGUtcGFnZS10cmlwbGV0IChwYWdlKQogIChsZXQg KChkaXNwbGF5LXBhZ2VzIChwY2FzZSBwYWdlCiAgICAgICAgICAgICAgICAgICAgICAgICAoMSAn KDEgMikpCiAgICAgICAgICAgICAgICAgICAgICAgICAoKHByZWQgKD0gbnVtYmVyLW9mLXBhZ2Vz KSkgKGxpc3QgcGFnZSAoLSBwYWdlIDEpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIChwIChs aXN0ICgtIHAgMSkgcCAoKyBwIDEpKSkpKSkKICAgIDs7IChsZXQqICgoaW1hZ2UgKGlmIChhbmQg ZmlsZSAoZmlsZS1yZWFkYWJsZS1wIGZpbGUpKQoJCTs7IAkgICAgICAgICAgICAgICAgKGlmIChu b3QgKGFuZCBkb2Mtdmlldy1zY2FsZS1pbnRlcm5hbGx5CgkJOzsgCQkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGZib3VuZHAgJ2ltYWdlbWFnaWNrLXR5cGVzKSkpCgkJOzsgCSAgICAgICAg ICAgICAgICAgICAgKGFwcGx5ICMnY3JlYXRlLWltYWdlIGZpbGUgZG9jLXZpZXctLWltYWdlLXR5 cGUgbmlsIGFyZ3MpCgkJOzsgCSAgICAgICAgICAgICAgICAgICh1bmxlc3MgKG1lbWJlciA6d2lk dGggYXJncykKCQk7OyAJICAgICAgICAgICAgICAgICAgICAoc2V0cSBhcmdzIGAoLEBhcmdzIDp3 aWR0aCAsZG9jLXZpZXctaW1hZ2Utd2lkdGgpKSkKCQk7OyAJICAgICAgICAgICAgICAgICAgKGFw cGx5ICMnY3JlYXRlLWltYWdlIGZpbGUgJ2ltYWdlbWFnaWNrIG5pbCBhcmdzKSkpKQoJICA7OyAg ICAgICAgKHNsaWNlIChkb2Mtdmlldy1jdXJyZW50LXNsaWNlKSkKCSAgOzsgICAgICAgIChpbWct d2lkdGggKGFuZCBpbWFnZSAoY2FyIChpbWFnZS1zaXplIGltYWdlKSkpKQoJICA7OyAgICAgICAg KGRpc3BsYXllZC1pbWctd2lkdGggKGlmIChhbmQgaW1hZ2Ugc2xpY2UpCgkJOzsgCQkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKCogKC8gKGZsb2F0IChudGggMiBzbGljZSkpCgkJOzsgCQkJ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FyIChpbWFnZS1zaXplIGltYWdlICdw aXhlbHMpKSkKCQk7OyAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZy13aWR0aCkK CQk7OyAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nLXdpZHRoKSkKCSAgOzsgICAgICAg ICh3aW5kb3ctd2lkdGggKHdpbmRvdy13aWR0aCkpKQogICAgKGRvbGlzdCAocCBjdXJyZW50bHkt ZGlzcGxheWVkLXBhZ2VzKQogICAgICAodW5sZXNzIChtZW1iZXIgcCBkaXNwbGF5LXBhZ2VzKQog ICAgICAgIChici11bmRpc3BsYXktcGFnZSBwKSkpCiAgICAoZG9saXN0IChwIGRpc3BsYXktcGFn ZXMpCiAgICAgIDs7IFRPRE8gc2VwYXJhdGUgcGRmIGZ1bmN0aW9uIGZyb20gYm9va3JvbGwgcGFj a2FnZQogICAgICAoYnItZGlzcGxheS1wYWdlIHAgKGxldCAoKGZpbGUgKGV4cGFuZC1maWxlLW5h bWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0IGRvYy12aWV3 LS1pbWFnZS1maWxlLXBhdHRlcm4gcCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZG9jLXZpZXctLWN1cnJlbnQtY2FjaGUtZGlyKSkpKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAoZG9jLXZpZXctaW5zZXJ0LWltYWdlIGZpbGUgOnBvaW50ZXIgJ2Fycm93KSkpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IChpZiAoYW5kIGZpbGUgKGZpbGUtcmVhZGFi bGUtcCBmaWxlKSkKCQkJICAgICAgICAgICAgICAgICAgICAgICA7OyAoaWYgKG5vdCAoYW5kIGRv Yy12aWV3LXNjYWxlLWludGVybmFsbHkKCQkJCSAgICAgICAgICAgICAgICAgICAgIDs7ICAgICAg ICAgICAgICAgKGZib3VuZHAgJ2ltYWdlbWFnaWNrLXR5cGVzKSkpCgkJCSAgICAgICAgICAgICAg ICAgICAgICAgOzsgICAgIChhcHBseSAjJ2NyZWF0ZS1pbWFnZSBmaWxlIGRvYy12aWV3LS1pbWFn ZS10eXBlIG5pbCBhcmdzKQoJCQkgICAgICAgICAgICAgICAgICAgICAgIDs7ICAgKHVubGVzcyAo bWVtYmVyIDp3aWR0aCBhcmdzKQoJCQkgICAgICAgICAgICAgICAgICAgICAgIDs7ICAgICAoc2V0 cSBhcmdzIGAoLEBhcmdzIDp3aWR0aCAsZG9jLXZpZXctaW1hZ2Utd2lkdGgpKSkKCQkJICAgICAg ICAgICAgICAgICAgICAgICA7OyAgIChhcHBseSAjJ2NyZWF0ZS1pbWFnZSBmaWxlICdpbWFnZW1h Z2ljayBuaWwgYXJncykpKSkpCiAgICAoc2V0cSBjdXJyZW50bHktZGlzcGxheWVkLXBhZ2VzIGRp c3BsYXktcGFnZXMpKSkKCihkZWZ1biBici1nb3RvLXBhZ2UgKHBhZ2UpCiAgKGludGVyYWN0aXZl ICJuIikKICAoYnItdXBkYXRlLXBhZ2UtdHJpcGxldCBwYWdlKQogIChsZXQqICgoZWx0ICgtIHBh Z2UgMSkpKQogICAgKHNldC13aW5kb3ctdnNjcm9sbCBuaWwgKG50aCBlbHQgaW1hZ2UtcG9zaXRp b25zKSB0KSkpCgooZGVmdW4gYnItc2Nyb2xsLXVwICgpCjs7IChkZWZ1biBwZGYtdmlldy1uZXh0 LWxpbmUtb3ItbmV4dC1wYWdlICgpCiAgKGludGVyYWN0aXZlKQogIDs7IGJlY2F1c2UgcGFnZXMg Y291bGQgaGF2ZSBkaWZmZXJlbnQgaGVpZ2h0cywgd2UgY2FsY3VsYXRlIHRoZSBzdGVwIHNpemUg b24gZWFjaCBzY3JvbGwKICA7OyBUT0RPIGRlZmluZSBjb25zdGFudCBzY3JvbGwgc2l6ZSBpZiBk b2MgaGFzIHNpbmdsZSBwYWdlIGhlaWdodAogIChsZXQgKChzY3JvbGwtc3RlcC1zaXplICgvIChj ZHIgKGJyLWltYWdlLXNpemUpKSBici1zY3JvbGwtZnJhY3Rpb24pKSkKICAgIChzZXQtd2luZG93 LXZzY3JvbGwgbmlsICgrICh3aW5kb3ctdnNjcm9sbCBuaWwgdCkgc2Nyb2xsLXN0ZXAtc2l6ZSkg dCkKICAgIDs7IHdoZW4gY3VycmVudCBwYWdlIGNoYW5nZWQgYWZ0ZXIgc2Nyb2xsaW5nIHRoZW4g dXBkYXRlIGRpc3BsYXllZCBwYWdlcwogICAgKGxldCAoKGN1cnJlbnQtcGFnZSAoYnItY3VycmVu dC1wYWdlKSkpCiAgICAgICAgKGJyLXVwZGF0ZS1wYWdlLXRyaXBsZXQgY3VycmVudC1wYWdlKSkp KQoKOzsgVE9ETyBzZXBhcmF0ZSBwZGYgZnVuY3Rpb25zIGZyb20gYm9va3JvbGwgcGFja2FnZQoo ZGVmdW4gYnItc2Nyb2xsLWRvd24gKCkKOzsgKGRlZnVuIHBkZi12aWV3LXByZXZpb3VzLWxpbmUt b3ItcHJldmlvdXMtcGFnZSAoKQogIChpbnRlcmFjdGl2ZSkKICA7OyBiZWNhdXNlIHBhZ2VzIGNv dWxkIGhhdmUgZGlmZmVyZW50IGhlaWdodHMsIHdlIGNhbGN1bGF0ZSB0aGUgc3RlcCBzaXplIG9u IGVhY2ggc2Nyb2xsCiAgOzsgVE9ETyBkZWZpbmUgY29uc3RhbnQgc2Nyb2xsIHNpemUgaWYgZG9j IGhhcyBzaW5nbGUgcGFnZSBoZWlnaHQKICAobGV0ICgoc2Nyb2xsLXN0ZXAtc2l6ZSAoLyAoY2Ry IChici1pbWFnZS1zaXplKSkgYnItc2Nyb2xsLWZyYWN0aW9uKSkpCiAgICAoc2V0LXdpbmRvdy12 c2Nyb2xsIG5pbCAoLSAod2luZG93LXZzY3JvbGwgbmlsIHQpIHNjcm9sbC1zdGVwLXNpemUpIHQp CiAgICA7OyB3aGVuIGN1cnJlbnQgcGFnZSBjaGFuZ2VkIGFmdGVyIHNjcm9sbGluZyB0aGVuIHVw ZGF0ZSBkaXNwbGF5ZWQgcGFnZXMKICAgIChsZXQgKChjdXJyZW50LXBhZ2UgKGJyLWN1cnJlbnQt cGFnZSkpKQogICAgICAoYnItdXBkYXRlLXBhZ2UtdHJpcGxldCBjdXJyZW50LXBhZ2UpKSkpCgoo ZGVmaW5lLW1pbm9yLW1vZGUgYm9va3JvbGwtbW9kZQogICJUaGlzIGlzIGEgY29udGludW91cyBz Y3JvbGwgZW5naW5lIGZvciByZW5kZXJpbmcgYm9va3MuIgogIDprZXltYXAKICAnKCgiaiIgLiBi ci1zY3JvbGwtdXApCiAgICAoImsiIC4gYnItc2Nyb2xsLWRvd24pCiAgICAoW21vdXNlLTRdIC4g YnItc2Nyb2xsLXVwKQogICAgKChtb3VzZS01KSAuIGJyLXNjcm9sbC1kb3duKSkpCgood2hlbiAo Ym91bmRwICdldmlsLXZlcnNpb24pCiAgKGV2aWwtZGVmaW5lLWtleSAnZXZpbGlmaWVkIGJvb2ty b2xsLW1vZGUtbWFwICJqIiAnYnItc2Nyb2xsLXVwKQogIChldmlsLWRlZmluZS1rZXkgJ2V2aWxp ZmllZCBib29rcm9sbC1tb2RlLW1hcCAiayIgJ2JyLXNjcm9sbC1kb3duKSkK --00000000000036e68205d5887f58--