From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Yuan Fu Newsgroups: gmane.emacs.devel Subject: Re: Extend gdb to filter registers Date: Fri, 17 Jan 2020 18:31:44 -0500 Message-ID: References: <878spmuerf.fsf@mail.linkov.net> <83wod3bx8i.fsf@gnu.org> <9f5ddaa5-0234-a17b-bdd7-81d70a0a50d6@gmx.at> <83FFF194-64CD-409E-8B7A-5A9DF91E79DE@gmail.com> <83v9pb314t.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000e450f1059c5e58d5" Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="30185"; mail-complaints-to="usenet@ciao.gmane.io" Cc: martin rudalics , Juri Linkov , Stefan Monnier , Emacs developers To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Jan 18 00:32:58 2020 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 1isb6n-0007nY-UD for ged-emacs-devel@m.gmane-mx.org; Sat, 18 Jan 2020 00:32:58 +0100 Original-Received: from localhost ([::1]:35632 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1isb6m-0005ns-TM for ged-emacs-devel@m.gmane-mx.org; Fri, 17 Jan 2020 18:32:56 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:34240) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1isb61-0005FH-5G for emacs-devel@gnu.org; Fri, 17 Jan 2020 18:32:11 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1isb5y-00089O-EG for emacs-devel@gnu.org; Fri, 17 Jan 2020 18:32:08 -0500 Original-Received: from mail-oi1-x229.google.com ([2607:f8b0:4864:20::229]:44475) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1isb5p-00083F-70; Fri, 17 Jan 2020 18:31:57 -0500 Original-Received: by mail-oi1-x229.google.com with SMTP id d62so23699528oia.11; Fri, 17 Jan 2020 15:31:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=E/LQj4tbYLc3BUEhCG4kYiroVastjE/mM3G+T/npxNY=; b=ONR8OPw2uPe8zyIeW/8iC/LVcRS224LNNR7VZSqFNHc8vaBqYhOja1c4VY0XQ/yIc1 RUoLArZ0caeOhv85LeJnfulG25Hq34aOx2pet/pHzdkeWRNLYEZ2k/fxhpEzP6dnIuNs tEVI3Vi3pbsLxbwJypiR7SeWCMzG1vZgKZ4WKjOZ+P/pAgnJJwsqMYEk32hATkqik/pN dM5EQvFgHT/lmtJFl9j9PVevir3DP/MQwyFKViLDbczFVwyEYYhivCX/+lT+O8fpEDDF wf2NFxZ5qBkTH6AjhECxqBwOxNYXZIGjxeBOgMwONM77jAyrstkgiHR7advFWPY4s4Zz d/6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=E/LQj4tbYLc3BUEhCG4kYiroVastjE/mM3G+T/npxNY=; b=o9G23jHsgcwwM9FGBokPiOQLRPXYWlTYqpXMhItC/dxCvjFGT2/pkJzXnU8svopKeQ Q4S2eJcJC6L4J4Q4vEbV8ImMBQIE4Vnrom2mo8p5/T//wpDt0WR+U8kZPoFWRqD7UC8A aWcKaxNC35JzLGdBEpiZNfOFsCiwOUYbjW9P1WNAuA2qqgkCbouU91xN+YbESOyCb9i4 IWTvlZNrbfL/8dusKjAGDluCQtmMiksQBLXhoLmDfx4B0+Xcpa/0H/Nj239EDc+mkIuK GvoeuZ88jF+EoTk+Nal5fTa6Dy0+NFSDO5zbFmEsM+Ctc0bF5unrZL4DIlTmE2LFpxV5 LWMQ== X-Gm-Message-State: APjAAAVUFipomE1/xLMkWwTpikw6c6fBETGUfX2f3sFGnYfrNBcxGDy8 GKDMJmOU37ItzYak/uYW+/fXwspr786CeXIJg+t2cGqbzVqC06Ys X-Google-Smtp-Source: APXvYqy7RMApdKKfHefSea97KwLmuZ1tOALqNLQ/f22XGvq6m2jfVjSY7ohSgLF/dG6sA+lFkysXkP5o63iHyMG4fXA= X-Received: by 2002:aca:c509:: with SMTP id v9mr5112468oif.151.1579303915757; Fri, 17 Jan 2020 15:31:55 -0800 (PST) In-Reply-To: X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::229 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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:244313 Archived-At: --000000000000e450f1059c5e58d5 Content-Type: multipart/alternative; boundary="000000000000e450ef059c5e58d3" --000000000000e450ef059c5e58d3 Content-Type: text/plain; charset="UTF-8" I forgot to apply the new trick I learned to gdb-store-window-configuration. The trick makes file writing cleaner. This is the store-window patch with that trick applied Now the following code is used instead of find-file and insert. (with-temp-buffer (prin1 window-config (current-buffer)) (write-file file t)) Yuan On Thu, Jan 16, 2020 at 7:38 PM Yuan Fu wrote: > Here is an updated patch for store-window feature. I fixed some problem of > the last one and added some new features. With this patch, you can > > 1. store your window configuration to a file, and load it back in a gdb > session, and > 2. set a default window config file to be loaded on gdb startup. > 3. Now gdb preserves the window configuration you had before starting gdb > > More about 3.: currently when gdb quits, it leaves you with two windows, > one in gdb comint buffer and one in source buffer, regardless of what you > had before staring gdb. The third commit in the patch makes gdb restore the > old window configuration you had before staring gdb. > > I also attached my window configuration file as default-rearrange. > > Yuan > > > On Thu, Jan 16, 2020 at 10:04 AM Yuan Fu wrote: > >> >> > I'm back working on gdb. This time I fixed a issue where gdb opens more >>> than one window to display source >>> > code. By the design of gdb-mi, it should only have one source window. >>> >>> Thanks, can you show a use case where such a problem happens? >>> >> >> Yes, basically any program with more than one source file and a large >> screen (display-buffer will reuse window if there aren't enough space). >> >> A minimal setup: >> >> a.c: >> >> int f1(int a) { >> return a + 1; >> } >> >> b.c: >> >> #include "a.c" >> >> int main() { >> int b = f1(1); >> int c = 0; >> return b + c; >> } >> >> Steps: >> - M-x gdb >> - b main >> - r >> - s (many times) >> >> And when you step into f1 which is in a.c, gdb opens another window to >> display it (again, if your screen is large enough). >> >> BTW, I say "by design gdb uses a single source window" because >> gdb-display-source-window is written that way. >> >> Yuan >> > --000000000000e450ef059c5e58d3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I forgot to apply the new trick I learned to gdb-store-window-config= uration. The trick makes file writing cleaner. This is the store-window pat= ch with that trick applied
Now the following code is used instead of find-file a= nd insert.

=C2=A0=C2=A0=C2=A0 (with-temp-buffer
=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 (prin1 window-config (current-buffer))
=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 (write-file file t))

Yuan

On Thu, Jan 16, 2020 at 7:38= PM Yuan Fu <casouri@gmail.com&= gt; wrote:
Here is an updated patch for store-window feature. I fixed some problem o= f the last one and added some new features. With this patch, you can

1. stor= e your window configuration to a file, and load it back in a gdb session, a= nd
2. set a default window config file to be loaded on gdb startup.
3. Now gdb pr= eserves the window configuration you had before starting gdb

More about 3.: curr= ently when gdb quits, it leaves you with two windows, one in gdb comint buf= fer and one in source buffer, regardless of what you had before staring gdb= . The third commit in the patch makes gdb restore the old window configurat= ion you had before staring gdb.

I also attached my window configuration file as = default-rearrange.

Yuan


On Thu, Jan 16, 2020 at 10:04 AM Yuan Fu <casouri@gmail.com> = wrote:

> I'm back working on gdb. This time I fixed a issue where gdb opens= more than one window to display source
> code. By the design of gdb-mi, it should only have one source window.<= br>
Thanks, can you show a use case where such a problem happens?

Yes, basically any program with more than one source fil= e and a large screen (display-buffer will reuse window if there aren't = enough space).

A minimal setup:

a.c:

int f1(int a) {
=C2=A0 =C2=A0 ret= urn a + 1;
}

b.c:

#include "a.c"

int main() = {
=C2=A0 =C2=A0 int b =3D f1(1);
=C2=A0 =C2=A0 int c =3D 0;
=C2=A0= =C2=A0 return b + c;
}

Steps:
- M-x gdb
- b main
- r
- s (many times)

And when you step into = f1 which is in a.c, gdb opens another window to display it (again, if your = screen is large enough).

BTW, I say "by design gdb uses a single source win= dow" because gdb-display-source-window is written that way.

Yuan
<= /div>
--000000000000e450ef059c5e58d3-- --000000000000e450f1059c5e58d5 Content-Type: text/x-patch; charset="UTF-8"; name="store-window-new.patch" Content-Disposition: attachment; filename="store-window-new.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k5isp0630 RnJvbSA2ZGI1MjAxZTQxOGJjMTVmZjUxYTE3MDEyNGE4NDE4MjA5M2M2NGRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBZdWFuIEZ1IDxjYXNvdXJpQGdtYWlsLmNvbT4KRGF0ZTogVGh1 LCAxNyBPY3QgMjAxOSAxNzozNTo0OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMS8zXSBBZGQgd2l0 aC1zZWxlY3RlZC13aW5kb3ctdW5kZWRpY2F0ZWQKCiogbGlzcC93aW5kb3cuZWwgKHdpdGgtc2Vs ZWN0ZWQtd2luZG93LXVuZGVkaWNhdGVkKTogbmV3Ci0tLQogbGlzcC93aW5kb3cuZWwgfCAxMyAr KysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdp dCBhL2xpc3Avd2luZG93LmVsIGIvbGlzcC93aW5kb3cuZWwKaW5kZXggNDMzNDg2Mzg1ZC4uOThi OGIyMWY4YSAxMDA2NDQKLS0tIGEvbGlzcC93aW5kb3cuZWwKKysrIGIvbGlzcC93aW5kb3cuZWwK QEAgLTI3OCw2ICsyNzgsMTkgQEAgd2l0aC1kaXNwbGF5ZWQtYnVmZmVyLXdpbmRvdwogCSAgICAg KGZ1bmNhbGwgLHZxdWl0LWZ1bmN0aW9uICx3aW5kb3cgLHZhbHVlKQogCSAgICx2YWx1ZSkpKSkp CiAKKyhkZWZtYWNybyB3aXRoLXNlbGVjdGVkLXdpbmRvdy11bmRlZGljYXRlZCAoJnJlc3QgYm9k eSkKKyAgIlJ1biBCT0RZIGluIHRoZSBzZWxlY3RlZCB3aW5kb3cgdGVtcG9yYXJpbHkgdW5kZWRp Y2F0ZWQuIgorICAobGV0ICgod2luZG93LWRlZGljYXRlZC1zeW0gKGdlbnN5bSkpKQorICAgIGAo bGV0ICgoLHdpbmRvdy1kZWRpY2F0ZWQtc3ltICh3aW5kb3ctZGVkaWNhdGVkLXApKSkKKyAgICAg ICAod2hlbiAsd2luZG93LWRlZGljYXRlZC1zeW0KKyAgICAgICAgIChzZXQtd2luZG93LWRlZGlj YXRlZC1wIG5pbCBuaWwpKQorICAgICAgICxAYm9keQorICAgICAgICh3aGVuICx3aW5kb3ctZGVk aWNhdGVkLXN5bQorICAgICAgICAgOzsgYHdpbmRvdy1kZWRpY2F0ZWQtcCcgcmV0dXJucyB0aGUg dmFsdWUgc2V0IGJ5CisgICAgICAgICA7OyBgc2V0LXdpbmRvdy1kZWRpY2F0ZWQtcCcsIHdoaWNo IGRpZmZlcmVudGlhdGVzCisgICAgICAgICA7OyBub24tbmlsIGFuZCB0LCBzbyB3ZSBjYW5ub3Qg c2ltcGx5IHNldCB0byB0CisgICAgICAgICAoc2V0LXdpbmRvdy1kZWRpY2F0ZWQtcCBuaWwgLHdp bmRvdy1kZWRpY2F0ZWQtc3ltKSkpKSkKKwogOzsgVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25z IGFyZSBsaWtlIGB3aW5kb3ctbmV4dC1zaWJsaW5nJyBhbmQKIDs7IGB3aW5kb3ctcHJldi1zaWJs aW5nJyBidXQgdGhlIFdJTkRPVyBhcmd1bWVudCBpcyBfbm90XyBvcHRpb25hbCAoc28KIDs7IHRo ZXkgZG9uJ3Qgc3Vic3RpdHV0ZSB0aGUgc2VsZWN0ZWQgd2luZG93IGZvciBuaWwpLCBhbmQgdGhl eSByZXR1cm4KLS0gCjIuMjQuMQoKCkZyb20gYmI1ZTQxZTIzMGE4NDUyYjQxYTU2OTM4NjEzMTY0 OGViMjU5OTUwMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogWXVhbiBGdSA8Y2Fzb3Vy aUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTQgT2N0IDIwMTkgMjE6MTE6NDMgLTA0MDAKU3ViamVj dDogW1BBVENIIDIvM10gQWRkIHdpbmRvdyBjb25maWd1cmF0aW9uIHNhdmUvcmVzdG9yZSBmZWF0 dXJlIGZvciBnZGItbWkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWlu OyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCk5vdyB5b3Ug Y2FuIHNhdmUgYSBnZGIgd2luZG93IGNvbmZpZ3VyYXRpb24gdG8gYSBmaWxlIHdpdGgK4oCYZ2Ri LXN0b3JlLXdpbmRvdy1jb25maWd1cmF0aW9u4oCZIGFuZCByZXN0b3JlIGl0IGZyb20gYSBmaWxl CndpdGgg4oCYZ2RiLXJlc3RvcmUtd2luZG93LWNvbmZpZ3VyYXRpb27igJkuIFNldCBhIGRlZmF1 bHQgd2luZG93CmNvbmZpZ3VyYXRpb24gYnkgc2V0dGluZyBnZGItZGVmYXVsdC13aW5kb3ctY29u ZmlndXJhdGlvbi1maWxlLgpOb3RlIHRoYXQgZm9yIHRoZSBkZWZhdWx0IHdpbmRvdyBjb25maWd1 cmF0aW9uIHRvIHRha2UgZWZmZWN0LApnZGItbWFueS13aW5kb3dzIG5lZWRzIHRvIGJlIHQuCgoq IGxpc3AvcHJvZ21vZGVzL2dkYi1taS5lbCAocmVxdWlyZSk6IGFkZCBwY2FzZSwgd3JhcCBpbnNp ZGUK4oCYZXZhbC13aGVuLWNvbXBpbGXigJkKCihnZGItZ2V0LXNvdXJjZS1idWZmZXIpOiBuZXcs IGV4dHJhY3RlZCBvdXQgb2YgZ2RiLXJlc3RvcmUtd2luZG93CihnZGItcmVzdG9yZS13aW5kb3cp OiBleHRyYWN0IG91dCBnZGItZ2V0LXNvdXJjZS1idWZmZXIKCihnZGItc3RvcmUtd2luZG93LWRp cmVjdG9yeSwgZ2RiLWJ1ZmZlci1wLCBnZGItZnVuY3Rpb24tYnVmZmVyLXAsCmdkYi0tYnVmZmVy LXR5cGUsIGdkYi0taW5oaWJpdC13aW5kb3ctZGVkaWNhdGVkLApnZGItc3RvcmUtd2luZG93LWNv bmZpZ3VyYXRpb24sIGdkYi1yZXN0b3JlLXdpbmRvdy1jb25maWd1cmF0aW9uKTogbmV3CgooZ2Ri LWRlZmF1bHQtd2luZG93LWNvbmZpZ3VyYXRpb24tZmlsZSk6IG5ldwooZ2RiLXNldHVwLXdpbmRv d3MpOiBBZGQgYSBjb25kaXRpb24gYnJhbmNoIHRoYXQgbG9hZHMgZGVmYXVsdCB3aW5kb3cKY29u ZmlnIHdoZW4gYXZhaWxhYmxlCgooZ2RiLW1hbnktd2luZG93cywgZ2RiLWdldC1zb3VyY2UtZmls ZSk6IGFkZCBjb21tZW50cwotLS0KIGxpc3AvcHJvZ21vZGVzL2dkYi1taS5lbCB8IDIxMCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNzYg aW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9wcm9nbW9k ZXMvZ2RiLW1pLmVsIGIvbGlzcC9wcm9nbW9kZXMvZ2RiLW1pLmVsCmluZGV4IGIwOGQ0ODdhZjMu LmNmMGM4ZjI5YTkgMTAwNjQ0Ci0tLSBhL2xpc3AvcHJvZ21vZGVzL2dkYi1taS5lbAorKysgYi9s aXNwL3Byb2dtb2Rlcy9nZGItbWkuZWwKQEAgLTkxLDcgKzkxLDggQEAKIChyZXF1aXJlICdndWQp CiAocmVxdWlyZSAnanNvbikKIChyZXF1aXJlICdiaW5kYXQpCi0ocmVxdWlyZSAnY2wtbGliKQor KGV2YWwtd2hlbi1jb21waWxlIChyZXF1aXJlICdjbC1saWIpKQorKGV2YWwtd2hlbi1jb21waWxl IChyZXF1aXJlICdwY2FzZSkpCiAKIChkZWNsYXJlLWZ1bmN0aW9uIHNwZWVkYmFyLWNoYW5nZS1p bml0aWFsLWV4cGFuc2lvbi1saXN0CiAgICAgICAgICAgICAgICAgICAic3BlZWRiYXIiIChuZXct ZGVmYXVsdCkpCkBAIC01ODksNiArNTkwLDIwIEBAIGdkYi1zaG93LW1haW4KICAgOmdyb3VwICdn ZGIKICAgOnZlcnNpb24gIjIyLjEiKQogCisoZGVmY3VzdG9tIGdkYi1zdG9yZS13aW5kb3ctZGly ZWN0b3J5IHVzZXItZW1hY3MtZGlyZWN0b3J5CisgICJUaGUgZGVmYXVsdCBkaXJlY3Rvcnkgd2hl cmUgd2luZG93IGNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHN0b3JlZC4KK0lmIG5pbCwgdXNlIGBk ZWZhdWx0LWRpcmVjdG9yeScuIgorICA6dHlwZSAnc3RyaW5nCisgIDpncm91cCAnZ2RiCisgIDp2 ZXJzaW9uICIyOC4xIikKKworKGRlZmN1c3RvbSBnZGItZGVmYXVsdC13aW5kb3ctY29uZmlndXJh dGlvbi1maWxlIG5pbAorICAiSWYgbm9uLW5pbCwgZ2RiIGxvYWRzIHRoaXMgd2luZG93IGNvbmZp Z3VyYXRpb24gZmlsZSBvbiBzdGFydHVwLgorVGhpcyBzaG91bGQgYmUgYW4gYWJzb2x1dGUgZmls ZSBwYXRoLiIKKyAgOnR5cGUgJ3N0cmluZworICA6Z3JvdXAgJ2dkYgorICA6dmVyc2lvbiAiMjgu MSIpCisKIChkZWZ2YXIgZ2RibWktZGVidWctbW9kZSBuaWwKICAgIldoZW4gbm9uLW5pbCwgcHJp bnQgdGhlIG1lc3NhZ2VzIHNlbnQvcmVjZWl2ZWQgZnJvbSBHREIvTUkgaW4gKk1lc3NhZ2VzKi4i KQogCkBAIC00NTc0LDQxICs0NTg5LDE2NCBAQCBnZGItc2V0LXdpbmRvdy1idWZmZXIKICAgKHNl dC13aW5kb3ctYnVmZmVyIHdpbmRvdyAoZ2V0LWJ1ZmZlciBuYW1lKSkKICAgKHNldC13aW5kb3ct ZGVkaWNhdGVkLXAgd2luZG93IHQpKQogCisoZGVmdW4gZ2RiLWdldC1zb3VyY2UtYnVmZmVyICgp CisgICJSZXR1cm4gYSBidWZmZXIgZGlzcGxheWluZyBzb3VyY2UgZmlsZSBvciBuaWwuCisKK1Ro ZSBzb3VyY2UgZmlsZSB3b3VsZCBiZSB0aGUgbW9zdCByZWxldmFudCBmaWxlIG9yIHRoZSBtYWlu IGZpbGUuIgorICAoaWYgZ3VkLWxhc3QtbGFzdC1mcmFtZQorICAgICAgKGd1ZC1maW5kLWZpbGUg KGNhciBndWQtbGFzdC1sYXN0LWZyYW1lKSkKKyAgICAod2hlbiBnZGItbWFpbi1maWxlCisgICAg ICAoZ3VkLWZpbmQtZmlsZSBnZGItbWFpbi1maWxlKSkpKQorCiAoZGVmdW4gZ2RiLXNldHVwLXdp bmRvd3MgKCkKICAgIkxheW91dCB0aGUgd2luZG93IHBhdHRlcm4gZm9yIG9wdGlvbiBgZ2RiLW1h bnktd2luZG93cycuIgotICAoZ2RiLWdldC1idWZmZXItY3JlYXRlICdnZGItbG9jYWxzLWJ1ZmZl cikKLSAgKGdkYi1nZXQtYnVmZmVyLWNyZWF0ZSAnZ2RiLXN0YWNrLWJ1ZmZlcikKLSAgKGdkYi1n ZXQtYnVmZmVyLWNyZWF0ZSAnZ2RiLWJyZWFrcG9pbnRzLWJ1ZmZlcikKLSAgKHNldC13aW5kb3ct ZGVkaWNhdGVkLXAgKHNlbGVjdGVkLXdpbmRvdykgbmlsKQotICAoc3dpdGNoLXRvLWJ1ZmZlciBn dWQtY29taW50LWJ1ZmZlcikKLSAgKGRlbGV0ZS1vdGhlci13aW5kb3dzKQotICAobGV0ICgod2lu MCAoc2VsZWN0ZWQtd2luZG93KSkKLSAgICAgICAgKHdpbjEgKHNwbGl0LXdpbmRvdyBuaWwgKCAv ICggKiAod2luZG93LWhlaWdodCkgMykgNCkpKQotICAgICAgICAod2luMiAoc3BsaXQtd2luZG93 IG5pbCAoIC8gKHdpbmRvdy1oZWlnaHQpIDMpKSkKLSAgICAgICAgKHdpbjMgKHNwbGl0LXdpbmRv dy1yaWdodCkpKQotICAgIChnZGItc2V0LXdpbmRvdy1idWZmZXIgKGdkYi1sb2NhbHMtYnVmZmVy LW5hbWUpIG5pbCB3aW4zKQotICAgIChzZWxlY3Qtd2luZG93IHdpbjIpCi0gICAgKHNldC13aW5k b3ctYnVmZmVyCi0gICAgIHdpbjIKLSAgICAgKGlmIGd1ZC1sYXN0LWxhc3QtZnJhbWUKLSAgICAg ICAgIChndWQtZmluZC1maWxlIChjYXIgZ3VkLWxhc3QtbGFzdC1mcmFtZSkpCi0gICAgICAgKGlm IGdkYi1tYWluLWZpbGUKLSAgICAgICAgICAgKGd1ZC1maW5kLWZpbGUgZ2RiLW1haW4tZmlsZSkK LSAgICAgICAgIDs7IFB1dCBidWZmZXIgbGlzdCBpbiB3aW5kb3cgaWYgd2UKLSAgICAgICAgIDs7 IGNhbid0IGZpbmQgYSBzb3VyY2UgZmlsZS4KLSAgICAgICAgIChsaXN0LWJ1ZmZlcnMtbm9zZWxl Y3QpKSkpCi0gICAgKHNldHEgZ2RiLXNvdXJjZS13aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpCi0g ICAgKGxldCAoKHdpbjQgKHNwbGl0LXdpbmRvdy1yaWdodCkpKQotICAgICAgKGdkYi1zZXQtd2lu ZG93LWJ1ZmZlcgotICAgICAgIChnZGItZ2V0LWJ1ZmZlci1jcmVhdGUgJ2dkYi1pbmZlcmlvci1p bykgbmlsIHdpbjQpKQotICAgIChzZWxlY3Qtd2luZG93IHdpbjEpCi0gICAgKGdkYi1zZXQtd2lu ZG93LWJ1ZmZlciAoZ2RiLXN0YWNrLWJ1ZmZlci1uYW1lKSkKLSAgICAobGV0ICgod2luNSAoc3Bs aXQtd2luZG93LXJpZ2h0KSkpCi0gICAgICAoZ2RiLXNldC13aW5kb3ctYnVmZmVyIChpZiBnZGIt c2hvdy10aHJlYWRzLWJ5LWRlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChnZGItdGhyZWFkcy1idWZmZXItbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoZ2RiLWJyZWFrcG9pbnRzLWJ1ZmZlci1uYW1lKSkKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbmlsIHdpbjUpKQotICAgIChzZWxlY3Qtd2luZG93IHdpbjApKSkKKyAgKGlmIGdkYi1k ZWZhdWx0LXdpbmRvdy1jb25maWd1cmF0aW9uLWZpbGUKKyAgICAgIChnZGItcmVzdG9yZS13aW5k b3ctY29uZmlndXJhdGlvbgorICAgICAgIGdkYi1kZWZhdWx0LXdpbmRvdy1jb25maWd1cmF0aW9u LWZpbGUpCisgICAgOzsgZGVmYXVsdCBsYXlvdXQKKyAgICAoZ2RiLWdldC1idWZmZXItY3JlYXRl ICdnZGItbG9jYWxzLWJ1ZmZlcikKKyAgICAoZ2RiLWdldC1idWZmZXItY3JlYXRlICdnZGItc3Rh Y2stYnVmZmVyKQorICAgIChnZGItZ2V0LWJ1ZmZlci1jcmVhdGUgJ2dkYi1icmVha3BvaW50cy1i dWZmZXIpCisgICAgKHNldC13aW5kb3ctZGVkaWNhdGVkLXAgKHNlbGVjdGVkLXdpbmRvdykgbmls KQorICAgIChzd2l0Y2gtdG8tYnVmZmVyIGd1ZC1jb21pbnQtYnVmZmVyKQorICAgIChkZWxldGUt b3RoZXItd2luZG93cykKKyAgICAobGV0ICgod2luMCAoc2VsZWN0ZWQtd2luZG93KSkKKyAgICAg ICAgICAod2luMSAoc3BsaXQtd2luZG93IG5pbCAoIC8gKCAqICh3aW5kb3ctaGVpZ2h0KSAzKSA0 KSkpCisgICAgICAgICAgKHdpbjIgKHNwbGl0LXdpbmRvdyBuaWwgKCAvICh3aW5kb3ctaGVpZ2h0 KSAzKSkpCisgICAgICAgICAgKHdpbjMgKHNwbGl0LXdpbmRvdy1yaWdodCkpKQorICAgICAgKGdk Yi1zZXQtd2luZG93LWJ1ZmZlciAoZ2RiLWxvY2Fscy1idWZmZXItbmFtZSkgbmlsIHdpbjMpCisg ICAgICAoc2VsZWN0LXdpbmRvdyB3aW4yKQorICAgICAgKHNldC13aW5kb3ctYnVmZmVyCisgICAg ICAgd2luMgorICAgICAgIChvciAoZ2RiLWdldC1zb3VyY2UtYnVmZmVyKQorICAgICAgICAgICAo bGlzdC1idWZmZXJzLW5vc2VsZWN0KSkpCisgICAgICAoc2V0cSBnZGItc291cmNlLXdpbmRvdyAo c2VsZWN0ZWQtd2luZG93KSkKKyAgICAgIChsZXQgKCh3aW40IChzcGxpdC13aW5kb3ctcmlnaHQp KSkKKyAgICAgICAgKGdkYi1zZXQtd2luZG93LWJ1ZmZlcgorICAgICAgICAgKGdkYi1nZXQtYnVm ZmVyLWNyZWF0ZSAnZ2RiLWluZmVyaW9yLWlvKSBuaWwgd2luNCkpCisgICAgICAoc2VsZWN0LXdp bmRvdyB3aW4xKQorICAgICAgKGdkYi1zZXQtd2luZG93LWJ1ZmZlciAoZ2RiLXN0YWNrLWJ1ZmZl ci1uYW1lKSkKKyAgICAgIChsZXQgKCh3aW41IChzcGxpdC13aW5kb3ctcmlnaHQpKSkKKyAgICAg ICAgKGdkYi1zZXQtd2luZG93LWJ1ZmZlciAoaWYgZ2RiLXNob3ctdGhyZWFkcy1ieS1kZWZhdWx0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGItdGhyZWFkcy1idWZmZXIt bmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGItYnJlYWtwb2ludHMt YnVmZmVyLW5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCB3aW41KSkK KyAgICAgIChzZWxlY3Qtd2luZG93IHdpbjApKSkpCisKKyhkZWZ1biBnZGItYnVmZmVyLXAgKGJ1 ZmZlcikKKyAgIlJldHVybiB0IGlmIEJVRkZFUiBpcyBnZGItcmVsYXRlZC4iCisgICh3aXRoLWN1 cnJlbnQtYnVmZmVyIGJ1ZmZlcgorICAgIChlcSBndWQtbWlub3ItbW9kZSAnZ2RibWkpKSkKKwor KGRlZnVuIGdkYi1mdW5jdGlvbi1idWZmZXItcCAoYnVmZmVyKQorICAiUmV0dXJuIHQgaWYgQlVG RkVSIGlzIGEgZ2RiIGZ1bmN0aW9uIGJ1ZmZlci4KKworRS5nLiwgbG9jYWxzIGJ1ZmZlciwgcmVn aXN0ZXJzIGJ1ZmZlciwgYnV0IGRvbid0IGluY2x1ZGUgdGhlIG1haW4KK2NvbW1hbmQgYnVmZmVy ICh0aGUgb25lIGluIHdoZXJlIHlvdSB0eXBlIGdkYiBjb21tYW5kcykgb3Igc291cmNlCitidWZm ZXJzLiIKKyAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyCisgICAgKGRlcml2ZWQtbW9kZS1w ICdnZGItcGFyZW50LW1vZGUgJ2dkYi1pbmZlcmlvci1pby1tb2RlKSkpCisKKyhkZWZ1biBnZGIt LWJ1ZmZlci10eXBlIChidWZmZXIpCisgICJSZXR1cm4gdGhlIGJ1ZmZlciB0eXBlIG9mIEJVRkZF UiBvciBuaWwuCisKK0J1ZmZlciB0eXBlIGlzIGxpa2UgYGdkYi1yZWdpc3RlcnMtdHlwZScsIGBn ZGItc3RhY2stYnVmZmVyJy4KK1RoaXMgc3ltYm9sIGNhbiBiZSBwYXNzZWQgdG8gYGdkYi1nZXQt YnVmZmVyLWNyZWF0ZScuCisKK1JldHVybiBuaWwgaWYgQlVGRkVSIGlzbid0IGEgZ2RiIGZ1bmN0 aW9uIGJ1ZmZlci4iCisgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlcgorICAgIChjbC1sb29w IGZvciBydWxlIGluIGdkYi1idWZmZXItcnVsZXMKKyAgICAgICAgICAgICBmb3IgbW9kZS1uYW1l ID0gKGdkYi1ydWxlcy1idWZmZXItbW9kZSBydWxlKQorICAgICAgICAgICAgIGZvciB0eXBlID0g KGNhciBydWxlKQorICAgICAgICAgICAgIGlmIChlcSBtb2RlLW5hbWUgbWFqb3ItbW9kZSkKKyAg ICAgICAgICAgICByZXR1cm4gdHlwZQorICAgICAgICAgICAgIGZpbmFsbHkgcmV0dXJuIG5pbCkp KQorCisoZGVmdW4gZ2RiLXN0b3JlLXdpbmRvdy1jb25maWd1cmF0aW9uIChmaWxlKQorICAiU2F2 ZSBjdXJyZW50IHdpbmRvdyBjb25maWd1cmF0aW9uIHRvIEZJTEUuCisKK1lvdSBjYW4gbGF0ZXIg cmVzdG9yZSB0aGlzIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGF0IGZpbGUgYnkKK2BnZGItcmVzdG9y ZS13aW5kb3ctY29uZmlndXJhdGlvbicuIgorICAoaW50ZXJhY3RpdmUgKGxpc3QgKHJlYWQtZmls ZS1uYW1lCisgICAgICAgICAgICAgICAgICAgICAgIlNhdmUgd2luZG93IGNvbmZpZ3VyYXRpb24g dG8gZmlsZTogIgorICAgICAgICAgICAgICAgICAgICAgIChvciBnZGItc3RvcmUtd2luZG93LWRp cmVjdG9yeSBkZWZhdWx0LWRpcmVjdG9yeSkpKSkKKyAgOzsgd2UgcmVwbGFjZSB0aGUgYnVmZmVy IGluIGVhY2ggd2luZG93IHdpdGggYSBwbGFjZWhvbGRlciwgc3RvcmUKKyAgOzsgdGhlIGJ1ZmZl ciB0eXBlIChyZWdpc3RlciwgYnJlYWtwb2ludCwgZXRjKSBpbiB3aW5kb3cgcGFyYW1ldGVycywK KyAgOzsgYW5kIHN0b3JlIHRoZSB3aW5kb3cgY29uZmlndXJhdGlvbgorICAoc2F2ZS13aW5kb3ct ZXhjdXJzaW9uCisgICAgKGxldCAoKHBsYWNlaG9sZGVyIChnZXQtYnVmZmVyLWNyZWF0ZSAiICpn ZGItcGxhY2Vob2xkZXIqIikpCisgICAgICAgICAgKHdpbmRvdy1wZXJzaXN0ZW50LXBhcmFtZXRl cnMKKyAgICAgICAgICAgKGNvbnMgJyhnZGItYnVmZmVyLXR5cGUgLiB3cml0YWJsZSkgd2luZG93 LXBlcnNpc3RlbnQtcGFyYW1ldGVycykpCisgICAgICAgICAgd2luZG93LWNvbmZpZykKKyAgICAg ICh1bndpbmQtcHJvdGVjdAorICAgICAgICAgIChkb2xpc3QgKHdpbiAod2luZG93LWxpc3Qgbmls ICduby1taW5pYnVmZmVyKSkKKyAgICAgICAgICAgIChzZWxlY3Qtd2luZG93IHdpbikKKyAgICAg ICAgICAgICh3aGVuIChnZGItYnVmZmVyLXAgKGN1cnJlbnQtYnVmZmVyKSkKKyAgICAgICAgICAg ICAgKHNldC13aW5kb3ctcGFyYW1ldGVyCisgICAgICAgICAgICAgICBuaWwgJ2dkYi1idWZmZXIt dHlwZQorICAgICAgICAgICAgICAgKGNvbmQgKChnZGItZnVuY3Rpb24tYnVmZmVyLXAgKGN1cnJl bnQtYnVmZmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICA7OyAxKSBpZiBhIHVzZXIgYXJyYW5n ZWQgdGhlIHdpbmRvdyBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgOzsgaGVy c2VsZiBhbmQgc2F2ZXMgaXQsIHdpbmRvd3MgYXJlIHByb2JhYmx5IG5vdAorICAgICAgICAgICAg ICAgICAgICAgIDs7IGRlZGljYXRlZCAyKSB3ZSB1c2UgdGhlIHNhbWUgZGVkaWNhdGlvbiBmbGFn IGFzCisgICAgICAgICAgICAgICAgICAgICAgOzsgaW4gYGdkYi1kaXNwbGF5LWJ1ZmZlcicKKyAg ICAgICAgICAgICAgICAgICAgICAoc2V0LXdpbmRvdy1kZWRpY2F0ZWQtcCBuaWwgdCkKKyAgICAg ICAgICAgICAgICAgICAgICA7OyB3ZSBzYXZlIHRoaXMgZ2RiLWJ1ZmZlci10eXBlIHN5bWJvbCBz bworICAgICAgICAgICAgICAgICAgICAgIDs7IHdlIGNhbiBsYXRlciBwYXNzIGl0IHRvIGBnZGIt Z2V0LWJ1ZmZlci1jcmVhdGUnCisgICAgICAgICAgICAgICAgICAgICAgOzsgb25lIGV4YW1wbGU6 IGBnZGItcmVnaXN0ZXJzLWJ1ZmZlcicKKyAgICAgICAgICAgICAgICAgICAgICAob3IgKGdkYi0t YnVmZmVyLXR5cGUgKGN1cnJlbnQtYnVmZmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg KGVycm9yICJVbnJlY29nbml6ZWQgZ2RiIGJ1ZmZlciBtb2RlOiAlcyIgbWFqb3ItbW9kZSkpKQor ICAgICAgICAgICAgICAgICAgICAgOzsgY29tbWFuZCBidWZmZXIKKyAgICAgICAgICAgICAgICAg ICAgICgoZGVyaXZlZC1tb2RlLXAgJ2d1ZC1tb2RlKSAnY29tbWFuZCkKKyAgICAgICAgICAgICAg ICAgICAgICgoZXF1YWwgKHNlbGVjdGVkLXdpbmRvdykgZ2RiLXNvdXJjZS13aW5kb3cpICdzb3Vy Y2UpKSkKKyAgICAgICAgICAgICAgKHdpdGgtc2VsZWN0ZWQtd2luZG93LXVuZGVkaWNhdGVkCisg ICAgICAgICAgICAgICAoc2V0LXdpbmRvdy1idWZmZXIgbmlsIHBsYWNlaG9sZGVyKQorICAgICAg ICAgICAgICAgKHNldC13aW5kb3ctcHJldi1idWZmZXJzIChzZWxlY3RlZC13aW5kb3cpIG5pbCkK KyAgICAgICAgICAgICAgIChzZXQtd2luZG93LW5leHQtYnVmZmVycyAoc2VsZWN0ZWQtd2luZG93 KSBuaWwpKSkpCisgICAgICAgIDs7IHNhdmUgdGhlIHdpbmRvdyBjb25maWd1cmF0aW9uIHRvIEZJ TEUKKyAgICAgICAgKGxldCAoKHdpbmRvdy1jb25maWcgKHdpbmRvdy1zdGF0ZS1nZXQgbmlsIHQp KSkKKyAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAgICAgICAgICAgKHByaW4xIHdpbmRv dy1jb25maWcgKGN1cnJlbnQtYnVmZmVyKSkKKyAgICAgICAgICAgICh3cml0ZS1maWxlIGZpbGUg dCkpKQorICAgICAgICAoa2lsbC1idWZmZXIgcGxhY2Vob2xkZXIpKSkpKQorCisoZGVmdW4gZ2Ri LXJlc3RvcmUtd2luZG93LWNvbmZpZ3VyYXRpb24gKGZpbGUpCisgICJSZXN0b3JlIHdpbmRvdyBj b25maWd1cmF0aW9uIGZyb20gRklMRS4KKworRklMRSBzaG91bGQgYmUgYSB3aW5kb3cgY29uZmln dXJhdGlvbiBmaWxlIHNhdmVkIGJ5CitgZ2RiLXN0b3JlLXdpbmRvdy1jb25maWd1cmF0aW9uJy4i CisgIChpbnRlcmFjdGl2ZSAobGlzdCAocmVhZC1maWxlLW5hbWUKKyAgICAgICAgICAgICAgICAg ICAgICAiUmVzdG9yZSB3aW5kb3cgY29uZmlndXJhdGlvbiBmcm9tIGZpbGU6ICIKKyAgICAgICAg ICAgICAgICAgICAgICAob3IgZ2RiLXN0b3JlLXdpbmRvdy1kaXJlY3RvcnkgZGVmYXVsdC1kaXJl Y3RvcnkpKSkpCisgIDs7IGJhc2ljYWxseSB3ZSByZXN0b3JlIHdpbmRvdyBjb25maWd1cmF0aW9u IGFuZCBnbyB0aHJvdWdoIGVhY2gKKyAgOzsgd2luZG93IGFuZCByZXN0b3JlIHRoZSBmdW5jdGlv biBidWZmZXJzCisgIChsZXQqICgocGxhY2Vob2xkZXIgKGdldC1idWZmZXItY3JlYXRlICIgKmdk Yi1wbGFjZWhvbGRlcioiKSkpCisgICAgKHVud2luZC1wcm90ZWN0IDsgZG9uJ3QgbGVhayBidWZm ZXIKKyAgICAgICAgKGxldCAoKHdpbmRvdy1jb25maWcgKHdpdGgtdGVtcC1idWZmZXIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5zZXJ0LWZpbGUtY29udGVudHMgZmlsZSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IHdlIG5lZWQgdG8gZ28gdG8gcG9pbnQtbWlu IGV2ZW4gd2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBhcmUgcmVhZGluZyB0 aGUgd2hvbGUgYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlYWQgKGN1 cnJlbnQtYnVmZmVyKSkpKQorICAgICAgICAgICAgICAoc291cmNlLWJ1ZmZlciAoaWYgZ2RiLXNv dXJjZS13aW5kb3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aW5kb3ctYnVm ZmVyIGdkYi1zb3VyY2Utd2luZG93KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChv ciAoZ2RiLWdldC1zb3VyY2UtYnVmZmVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7OyBkbyB0aGUgc2FtZSB0aGluZyBhcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7OyBgZ2RiLXNldHVwLXdpbmRvd3MnCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChsaXN0LWJ1ZmZlcnMtbm9zZWxlY3QpKSkpCisgICAgICAgICAgICAgIGJ1 ZmZlci10eXBlKQorICAgICAgICAgICh3aW5kb3ctc3RhdGUtcHV0IHdpbmRvdy1jb25maWcgKGZy YW1lLXJvb3Qtd2luZG93KSkKKyAgICAgICAgICAoZG9saXN0ICh3aW5kb3cgKHdpbmRvdy1saXN0 IG5pbCAnbm8tbWluaWJ1ZmZlcikpCisgICAgICAgICAgICAod2l0aC1zZWxlY3RlZC13aW5kb3cg d2luZG93CisgICAgICAgICAgICAgIChzZXRxIGJ1ZmZlci10eXBlICh3aW5kb3ctcGFyYW1ldGVy IG5pbCAnZ2RiLWJ1ZmZlci10eXBlKSkKKyAgICAgICAgICAgICAgKHBjYXNlIGJ1ZmZlci10eXBl CisgICAgICAgICAgICAgICAgKCdzb3VyY2UgKHdoZW4gc291cmNlLWJ1ZmZlcgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldC13aW5kb3ctYnVmZmVyIG5pbCBzb3VyY2UtYnVmZmVyKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZ2RiLXNvdXJjZS13aW5kb3cgKHNlbGVj dGVkLXdpbmRvdykpKSkKKyAgICAgICAgICAgICAgICAoJ2NvbW1hbmQgKHN3aXRjaC10by1idWZm ZXIgZ3VkLWNvbWludC1idWZmZXIpKQorICAgICAgICAgICAgICAgIChfIChsZXQgKChidWZmZXIg KGdkYi1nZXQtYnVmZmVyLWNyZWF0ZSBidWZmZXItdHlwZSkpKQorICAgICAgICAgICAgICAgICAg ICAgKHdpdGgtc2VsZWN0ZWQtd2luZG93LXVuZGVkaWNhdGVkCisgICAgICAgICAgICAgICAgICAg ICAgKHNldC13aW5kb3ctYnVmZmVyIG5pbCBidWZmZXIpKSkpKSkpKQorICAgICAgKGtpbGwtYnVm ZmVyIHBsYWNlaG9sZGVyKSkpKQogCiAoZGVmaW5lLW1pbm9yLW1vZGUgZ2RiLW1hbnktd2luZG93 cwogICAiSWYgbmlsIGp1c3QgcG9wIHVwIHRoZSBHVUQgYnVmZmVyIHVubGVzcyBgZ2RiLXNob3ct bWFpbicgaXMgdC4KQEAgLTQ2MjcsNiArNDc2NSw5IEBAIGdkYi1tYW55LXdpbmRvd3MKIChkZWZ1 biBnZGItcmVzdG9yZS13aW5kb3dzICgpCiAgICJSZXN0b3JlIHRoZSBiYXNpYyBhcnJhbmdlbWVu dCBvZiB3aW5kb3dzIHVzZWQgYnkgZ2RiLgogVGhpcyBhcnJhbmdlbWVudCBkZXBlbmRzIG9uIHRo ZSB2YWx1ZSBvZiBvcHRpb24gYGdkYi1tYW55LXdpbmRvd3MnLiIKKyAgOzsgdGhpcyBmdW5jdGlv biBpcyB1c2VkIHdoZW4gdGhlIHVzZXIgbWVzc2VkIHVwIHdpbmRvdworICA7OyBjb25maWd1cmF0 aW9uIGFuZCB3YW50IHRvICJyZXNldCB0byBkZWZhdWx0Ii4gdGhlIGZ1bmN0aW9uIHRoYXQKKyAg Ozsgc2V0cyB1cCB3aW5kb3cgY29uZmlndXJhdGlvbiBvbiBzdGFydCB1cCBpcyBgZ2RiLWdldC1z b3VyY2UtZmlsZScKICAgKGludGVyYWN0aXZlKQogICAoc3dpdGNoLXRvLWJ1ZmZlciBndWQtY29t aW50LWJ1ZmZlcikgO1NlbGVjdCB0aGUgcmlnaHQgd2luZG93IGFuZCBmcmFtZS4KICAgKGRlbGV0 ZS1vdGhlci13aW5kb3dzKQpAQCAtNDY3OCw2ICs0ODE5LDcgQEAgZ2RiLXJlc2V0CiAoZGVmdW4g Z2RiLWdldC1zb3VyY2UtZmlsZSAoKQogICAiRmluZCB0aGUgc291cmNlIGZpbGUgd2hlcmUgdGhl IHByb2dyYW0gc3RhcnRzIGFuZCBkaXNwbGF5IGl0IHdpdGggcmVsYXRlZAogYnVmZmVycywgaWYg cmVxdWlyZWQuIgorICA7OyB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IG9uY2Ugb24gc3Rh cnR1cAogICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAoaWYgKHJlLXNlYXJjaC1mb3J3YXJk IGdkYi1zb3VyY2UtZmlsZS1yZWdleHAgbmlsIHQpCiAgICAgICAoc2V0cSBnZGItbWFpbi1maWxl IChyZWFkIChtYXRjaC1zdHJpbmcgMSkpKSkKLS0gCjIuMjQuMQoKCkZyb20gYzdhYzY3ZWM3NTlk MTZlMWY1ZDIxMmI2ZmFkZjkzZDRlYzg1M2FjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogWXVhbiBGdSA8Y2Fzb3VyaUBnbWFpbC5jb20+CkRhdGU6IFRodSwgMTYgSmFuIDIwMjAgMTg6 NTI6MTcgLTA1MDAKU3ViamVjdDogW1BBVENIIDMvM10gUmVzdG9yZSB3aW5kb3cgY29uZmlndXJh dGlvbiB3aGVuIGdkYiBxdWl0cwoKTWFrZSBnZGIgcHJlc2VydmUgdGhlIHdpbmRvdyBjb25maWd1 cmF0aW9uIHRoYXQgdGhlIHVzZXIgaGFkIGJlZm9yZQpzdGFydGluZyBnZGIuCgoqIGxpc3AvcHJv Z21vZGVzL2dkYi1taS5lbCAoZ2RiLS13aW5kb3ctY29uZmlndXJhdGlvbi1iZWZvcmUpOiBuZXcK KGdkYik6IHNhdmUgY29uZmlndXJhdGlvbiBiZWZvcmUgc3RhcnQKKGdkYi1yZXNldCk6IHJlc3Rv cmUgd2luZG93IGNvbmZpZ3VyYXRpb24KLS0tCiBsaXNwL3Byb2dtb2Rlcy9nZGItbWkuZWwgfCAx MSArKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9saXNwL3Byb2dtb2Rlcy9nZGItbWkuZWwgYi9saXNwL3Byb2dt b2Rlcy9nZGItbWkuZWwKaW5kZXggY2YwYzhmMjlhOS4uNTgyY2NmOTU2MiAxMDA2NDQKLS0tIGEv bGlzcC9wcm9nbW9kZXMvZ2RiLW1pLmVsCisrKyBiL2xpc3AvcHJvZ21vZGVzL2dkYi1taS5lbApA QCAtMjQzLDYgKzI0Myw5IEBAIGdkYi1vdXRwdXQtc2luawogCSAgICAgICBkaXNwb3NpdGlvbiBv ZiBvdXRwdXQgZ2VuZXJhdGVkIGJ5IGNvbW1hbmRzIHRoYXQKIAkgICAgICAgZ2RiIG1vZGUgc2Vu ZHMgdG8gZ2RiIG9uIGl0cyBvd24gYmVoYWxmLiIpCiAKKyhkZWZ2YXIgZ2RiLS13aW5kb3ctY29u ZmlndXJhdGlvbi1iZWZvcmUgbmlsCisgICJTdG9yZXMgdGhlIHdpbmRvdyBjb25maWd1cmF0aW9u IGJlZm9yZSBzdGFydGluZyBnZGIuIikKKwogKGRlZmN1c3RvbSBnZGItZGlzY2FyZC11bm9yZGVy ZWQtcmVwbGllcyB0CiAgICJOb24tbmlsIG1lYW5zIGRpc2NhcmQgYW55IG91dC1vZi1vcmRlciBH REIgcmVwbGllcy4KIFRoaXMgcHJvdGVjdHMgYWdhaW5zdCBsb3N0IEdEQiByZXBsaWVzLCBhc3N1 bWluZyB0aGF0IEdEQiBhbHdheXMKQEAgLTc2Miw2ICs3NjUsMTAgQEAgZ2RiCiAgICAgKGdkYi1y ZXN0b3JlLXdpbmRvd3MpCiAgICAgKGVycm9yCiAgICAgICJNdWx0aXBsZSBkZWJ1Z2dpbmcgcmVx dWlyZXMgcmVzdGFydGluZyBpbiB0ZXh0IGNvbW1hbmQgbW9kZSIpKQorCisgIDs7IHNhdmUgd2lu ZG93IGNvbmZpZ3VyYXRpb24gYmVmb3JlIHN0YXJ0aW5nIGdkYiBzbyB3ZSBjYW4gcmVzdG9yZQor ICA7OyBpdCBhZnRlciBnZGIgcXVpdHMKKyAgKHNldHEgZ2RiLS13aW5kb3ctY29uZmlndXJhdGlv bi1iZWZvcmUgKHdpbmRvdy1zdGF0ZS1nZXQpKQogICA7OwogICAoZ3VkLWNvbW1vbi1pbml0IGNv bW1hbmQtbGluZSBuaWwgJ2d1ZC1nZGJtaS1tYXJrZXItZmlsdGVyKQogCkBAIC00ODE0LDcgKzQ4 MjEsOSBAQCBnZGItcmVzZXQKICAgKGlmIChib3VuZHAgJ3NwZWVkYmFyLWZyYW1lKSAoc3BlZWRi YXItdGltZXItZm4pKQogICAoc2V0cSBndWQtcnVubmluZyBuaWwpCiAgIChzZXRxIGdkYi1hY3Rp dmUtcHJvY2VzcyBuaWwpCi0gIChyZW1vdmUtaG9vayAnYWZ0ZXItc2F2ZS1ob29rICdnZGItY3Jl YXRlLWRlZmluZS1hbGlzdCB0KSkKKyAgKHJlbW92ZS1ob29rICdhZnRlci1zYXZlLWhvb2sgJ2dk Yi1jcmVhdGUtZGVmaW5lLWFsaXN0IHQpCisgIDs7IHJlY292ZXIgd2luZG93IGNvbmZpZ3VyYXRp b24KKyAgKHdpbmRvdy1zdGF0ZS1wdXQgZ2RiLS13aW5kb3ctY29uZmlndXJhdGlvbi1iZWZvcmUp KQogCiAoZGVmdW4gZ2RiLWdldC1zb3VyY2UtZmlsZSAoKQogICAiRmluZCB0aGUgc291cmNlIGZp bGUgd2hlcmUgdGhlIHByb2dyYW0gc3RhcnRzIGFuZCBkaXNwbGF5IGl0IHdpdGggcmVsYXRlZAot LSAKMi4yNC4xCgo= --000000000000e450f1059c5e58d5--