From otto.kjell@gmail.com  Mon Mar 11 22:18:42 2013
Received: (at 142) by bugs.x2go.org; 11 Mar 2013 21:18:42 +0000
Received: from mail-vb0-f54.google.com (mail-vb0-f54.google.com [209.85.212.54])
	by ymir (Postfix) with ESMTPS id EDB2B5DB17;
	Mon, 11 Mar 2013 22:18:41 +0100 (CET)
Received: by mail-vb0-f54.google.com with SMTP id l1so1917391vba.27
        for <multiple recipients>; Mon, 11 Mar 2013 14:18:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20120113;
        h=mime-version:x-received:in-reply-to:references:date:message-id
         :subject:from:to:cc:content-type;
        bh=XT0kLTacgAuPLXnxOxgOe+AvpHzkuwOJPFTiiqOY67w=;
        b=tdYE24m77HYzblqf/rloGJGaskYlVm+EyFpdj3w3UGNBA2yXOiltZ+D2qyCSnbD/Vx
         x3lnjqG8GGJXF9oA+/mLzFEc5UA9oJMr3NIdprq7d0lTGbIt+sNyfJgATwMDJc8OiW6Z
         4ovZKr0/jy5TZmpDsLTV9Tmjt0cqaVjYoiuFmZu6DPhl6+c1tAu9el97oglArxoMj1do
         xIuYiBdFBij2dV3gVtfOOjL94j6atAGx2eaWwJoEo/SnVWm0T1vOGRJqnzdOdHpY7bqc
         ydz9fjHYqy/JSTrGDY8WSmT2ee2YI+zBpAawZfXst6vXYgiiskWHYQDBCGkvyRe70sjV
         U0fw==
MIME-Version: 1.0
X-Received: by 10.220.248.74 with SMTP id mf10mr1456681vcb.0.1363036720368;
 Mon, 11 Mar 2013 14:18:40 -0700 (PDT)
Received: by 10.58.24.37 with HTTP; Mon, 11 Mar 2013 14:18:40 -0700 (PDT)
In-Reply-To: <CAHeJaPLjydPxyR4qpjYMNq-pxfeX=ezhDFY4UWgRend-yWeniQ@mail.gmail.com>
References: <CAHeJaPKG2ndmoMFEn3kH91uMzTg3gQAhi-A26Le=Y5cfsHBq-g@mail.gmail.com>
	<20130307160849.9282370a79p2omf5@mail.das-netzwerkteam.de>
	<CAHeJaPLjydPxyR4qpjYMNq-pxfeX=ezhDFY4UWgRend-yWeniQ@mail.gmail.com>
Date: Mon, 11 Mar 2013 22:18:40 +0100
Message-ID: <CAHeJaPKtwCp6J3gWxs3iKNmmfMxMk3NViQiU+7vHyRiYaRC2ig@mail.gmail.com>
Subject: Re: [X2Go-Dev] Bug#142: x2goclient output on stdout
From: Kjell Otto <otto.kjell@gmail.com>
To: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
Cc: 142@bugs.x2go.org, control@bugs.x2go.org
Content-Type: multipart/mixed; boundary=bcaec54a37bc889baa04d7acb75e

--bcaec54a37bc889baa04d7acb75e
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Hi Mike,

unfortunatly, I seem to have missed a bug that was introduced by this
patch regarding windows builds.
Since I was testing and releasing everything under linux and mac, I
missed it in the first patch. I'm really
sorry for this. Please find the corrected patch attached.

The issue was caused by, patch applied, line 9055 which was then
trying to access undefined variables.
I seem to have falsely uncommented the line while correcting the other
printouts:

@@ -8833,7 +9051,9 @@ void ONMainWindow::startWinServers()
         startPulsed();
     }
 // #ifdef CFGCLIENT
-//     x2goDebug<<"xorg settings: "<<startXorgOnStart <<" "<< useXming<<en=
dl;
+
+    //x2goDebug<<"Xorg settings: "<< startXorgOnStart <<" useXming:
"<< useXming;
+
     if ( useInternalX && (internalX=3D=3D XMING))
     {
 // #endif

Before, the patch was uncommenting the line above, which was wrong.

I was now able to build the client under windows and linux, and mac :)

Greetings,
Kjellski


2013/3/11 Kjell Otto <otto.kjell@gmail.com>:
> Hi Mike,
>
> here is my patch boiled down to one commit. You can look at it before
> you apply it here:
> https://github.com/kjellski/x2goclient/compare/master...debug-cleanup
>
> Greetings,
> Kjellski
>
> 2013/3/7 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>:
>> Hi Otto,
>>
>> On Do 07 M=E4r 2013 13:51:25 CET Kjell Otto wrote:
>>
>>> Package: x2goclient
>>>
>>>
>>> The x2goclient has extreme output on stdout while running. It's more
>>> noise then signal and therefor, I've wrapped all the printouts with
>>> #ifdef DEBUG and a #undef DEBUG on the onmainwindow.cpp file.
>>>
>>> Then I've added in printout statements that are parsable with numbered
>>> output and category so that a normal run of the x2goclient would
>>> output like this:
>>>
>>> $ ./client_build/x2goclient --session=3Dx2goserver_RZ --add-to-known-ho=
sts
>>> --hide
>>> x2go-INFO-001> Starting x2goclient...
>>> x2go-WARN-001> Can't load translator: :/x2goclient_en_us
>>> x2go-WARN-002> Can't load translator: :/qt_en_US
>>> x2go-INFO-004> Started  x2goclient.
>>> x2go-INFO-005> $HOME=3D/home/kjellski
>>> x2go-INFO-029> Starting connection to server: 10.3.0.20:22
>>> x2go-INFO-031> SSH connection established.
>>> x2go-INFO-011> Closing x2goclient...
>>> x2go-INFO-018> Waiting for the SSH connection to finish...
>>> x2go-INFO-019> Waited  for the SSH connection to finish.
>>> x2go-INFO-028> Closed  x2goclient.
>>> $
>>>
>>> No GUI will be shown and no try Icons appear. This reflects a bit more
>>> the --hide param and can be used to make a shortcut to the client that
>>> will just open the window.
>>>
>>> Also I've added a log method and provided a script that lets you show
>>> all outputs on the file.
>>>
>>> All changes can be found on this repository in the branch stdout-cleanu=
p:
>>>
>>> https://github.com/kjellski/x2goclient/tree/stdout-cleanup
>>>
>>> If any additional help from my side is required, please contact me and
>>> I try to support the process.
>>
>>
>> yes, help is required.
>>
>> 1. Create fresh (tmp) branch
>> 2. pull over your patches you wish applied in x2goclient.git
>> 3. rebase, boil all single commits down to one commit
>> 4. send the URL to the exact patch/diff for review
>>
>> Mike
>>
>>
>>
>> --
>>
>> DAS-NETZWERKTEAM
>> mike gabriel, rothenstein 5, 24214 neudorf-bornstein
>> fon: +49 (1520) 1976 148
>>
>> GnuPG Key ID 0x25771B31
>> mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de
>>
>> freeBusy:
>> https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.d=
e.xfb

--bcaec54a37bc889baa04d7acb75e
Content-Type: application/octet-stream; 
	name="0001-Added-the-debug-parameter-to-x2goclient.patch"
Content-Disposition: attachment; 
	filename="0001-Added-the-debug-parameter-to-x2goclient.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_he64v5ka1

RnJvbSBkZGJkNTJmY2NiOWEyYjg4OTQwOGNmMzY1YTRmNTkzODU0NDI5MDEyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLamVsbCBPdHRvIDxvdHRvLmtqZWxsQGdtYWlsLmNvbT4KRGF0
ZTogTW9uLCAxMSBNYXIgMjAxMyAxMzoxNDo1OSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIC0gQWRk
ZWQgdGhlIC0tZGVidWcgcGFyYW1ldGVyIHRvIHgyZ29jbGllbnQuCgotIFJlZmFjdG9yZWQgdGhl
IGRlYnVnZ2luZyBvZiAieDJnb0RlYnVnIiB0byBjb250YWluIF9fRklMRV9fOl9fTElORV9fIGlu
IG9yZGVyIHRvIGxldCB1c2VycyBwcm92aWRlIG1vcmUgdXNlZnVsIGluZm9ybWF0aW9ucy4KCi0g
QWRkZWQgeDJnb0luZm9mKE5VTSksIHgyZ29XYXJuaW5nZihOVU0pLCB4MmdvRXJyb3JmKE5VTSkg
dG8gZW5hYmxlIHBhcnNhYmxlIG91dHB1dHMgZm9yIHRoZSBjbGllbnQuCgotIEFkZGVkIHRoZSBz
aG93X3ByaW50b3V0cy5zaCBmaWxlIHRvIGJlIHVzZWQgZm9yIGxvb2tpbmcgaW50byBzb3VyY2Vm
aWxlcyBpbmZvLCB3YXJuaW5nIGFuZCBlcnJvciBtZXNzYWdlcy4gcHVyZSBjb252ZW5pZW5jZSBo
ZXJlLgotLS0KIC5naXRpZ25vcmUgICAgICAgICAgICAgIHwgICAgNyArCiBvbm1haW53aW5kb3cu
Y3BwICAgICAgICB8ICA5NjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t
LS0tLS0tLS0KIG9ubWFpbndpbmRvdy5oICAgICAgICAgIHwgICAgMyArCiBzaG93X3ByaW50b3V0
cy5zaCAgICAgICB8ICAgMzAgKysKIHNzaG1hc3RlcmNvbm5lY3Rpb24uY3BwIHwgICA4OCArKysr
LQogeDJnb2NsaWVudGNvbmZpZy5oICAgICAgfCAgICAyICstCiB4MmdvbG9nZGVidWcuY3BwICAg
ICAgICB8ICAgIDEgLQogeDJnb2xvZ2RlYnVnLmggICAgICAgICAgfCAgIDMzICstCiA4IGZpbGVz
IGNoYW5nZWQsIDc5NSBpbnNlcnRpb25zKCspLCAzMzggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k
ZSAxMDA3NTUgc2hvd19wcmludG91dHMuc2gKCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdp
dGlnbm9yZQppbmRleCA3MjFlMzJjLi5iZDgxZGIyIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisr
KyBiLy5naXRpZ25vcmUKQEAgLTEsNiArMSwxMSBAQAogIyBUZW1wb3Jhcnkgb2JqZWN0IGZpbGVz
L3N0YXRpYyBsaWJzLgogKi5bb2FdCiAKK2NsaWVudF9idWlsZC8KK3BsdWdpbl9idWlsZC8KKy5i
dWlsZF9tYW4yaHRtbAoreDJnb2NsaWVudAorCiAjIEdlbmVyYXRlZCBieSBxbWFrZS4KIG1vY18q
LmNwcAogdWlfKi5oCkBAIC0xNCw0ICsxOSw2IEBAIHgyZ29jbGllbnRfKi5xbQogCiAjIEdlbmVy
YXRlZCBieSBxbWFrZSB3aGVuIGJ1aWxkaW5nIG9uIE9TIFguCiB4MmdvY2xpZW50LmFwcAoreDJn
b2NsaWVudC5kbWcKIAoreDJnb2NsaWVudC5wcm8udXNlcgpkaWZmIC0tZ2l0IGEvb25tYWlud2lu
ZG93LmNwcCBiL29ubWFpbndpbmRvdy5jcHAKaW5kZXggYzk3NDFmOC4uNjQ5NzlkZSAxMDA2NDQK
LS0tIGEvb25tYWlud2luZG93LmNwcAorKysgYi9vbm1haW53aW5kb3cuY3BwCkBAIC0zNiwxOCAr
MzYsMjAgQEAgYm9vbAlPTk1haW5XaW5kb3c6OnBvcnRhYmxlPWZhbHNlOwogUVN0cmluZyBPTk1h
aW5XaW5kb3c6OmhvbWVEaXI7CiBRU3RyaW5nIE9OTWFpbldpbmRvdzo6c2Vzc2lvbkNmZzsKIAot
CiAjaWZkZWYgUV9PU19XSU4KIFFTdHJpbmcgT05NYWluV2luZG93Ojp1M0RldmljZTsKICNlbmRp
ZgogCitib29sIE9OTWFpbldpbmRvdzo6ZGVidWdnaW5nPWZhbHNlOwogCiBPTk1haW5XaW5kb3c6
Ok9OTWFpbldpbmRvdyAoIFFXaWRnZXQgKnBhcmVudCApIDpRTWFpbldpbmRvdyAoIHBhcmVudCAp
CiB7CiAjaWZkZWYgUV9PU19MSU5VWAogICAgIGltYWdlPXNoYXBlPTA7CiAjZW5kaWYKLSAgICB4
MmdvRGVidWc8PCJPTk1haW5XaW5kb3cgY29uc3RydWN0b3IiPDxlbmRsOworICAgIHgyZ29JbmZv
ZigxKSA8PCB0cigiU3RhcnRpbmcgeDJnb2NsaWVudC4uLiIpOworICAgIGRlYnVnZ2luZyA9IGZh
bHNlOworCiAgICAgc2V0Rm9jdXNQb2xpY3kgKCBRdDo6Tm9Gb2N1cyApOwogICAgIGluc3RhbGxU
cmFuc2xhdG9yKCk7CiAgICAgY2xlYW5BbGxGaWxlcz1mYWxzZTsKQEAgLTIxNSw4ICsyMTcsOCBA
QCBPTk1haW5XaW5kb3c6Ok9OTWFpbldpbmRvdyAoIFFXaWRnZXQgKnBhcmVudCApIDpRTWFpbldp
bmRvdyAoIHBhcmVudCApCiAgICAgICAgICAgICBwb3J0YWJsZURhdGFQYXRoPVFEaXI6OmN1cnJl
bnRQYXRoKCk7CiAKICAgICAgICAgaG9tZURpcj1wb3J0YWJsZURhdGFQYXRoOwotICAgICAgICB4
MmdvRGVidWc8PCJydW5uaW5nIGluIFwicG9ydGFibGVcIiBtb2RlXG4iPDwKLSAgICAgICAgICAg
ICAgICAgIkRhdGEgRGlyIGlzICI8PHBvcnRhYmxlRGF0YVBhdGg7CisKKyAgICAgICAgeDJnb0lu
Zm9mKDIpPDx0cigiU3RhcnRpbmcgeDJnb2NsaWVudCBpbiBwb3J0YWJsZSBtb2RlLi4uIGRhdGEg
ZGlyZWN0b3J5IGlzOiAiKTw8cG9ydGFibGVEYXRhUGF0aDsKICAgICAgICAgUVRpbWVyICp0aW1l
ciA9IG5ldyBRVGltZXIodGhpcyk7CiAgICAgICAgIGNvbm5lY3QodGltZXIsIFNJR05BTCh0aW1l
b3V0KCkpLCB0aGlzLCBTTE9UKHNsb3RDaGVja1BvcnRhYmxlRGlyKCkpKTsKICAgICAgICAgdGlt
ZXItPnN0YXJ0KDEwMDApOwpAQCAtMjMzLDcgKzIzNSw2IEBAIE9OTWFpbldpbmRvdzo6T05NYWlu
V2luZG93ICggUVdpZGdldCAqcGFyZW50ICkgOlFNYWluV2luZG93ICggcGFyZW50ICkKICAgICB0
cmF5SWNvbkluaXQoKTsKIAogCi0KICAgICBpZiAoIGVtYmVkTW9kZSApCiAgICAgewogICAgICAg
ICBtaW5pTW9kZT1mYWxzZTsKQEAgLTI2MiwxMyArMjYzLDExIEBAIE9OTWFpbldpbmRvdzo6T05N
YWluV2luZG93ICggUVdpZGdldCAqcGFyZW50ICkgOlFNYWluV2luZG93ICggcGFyZW50ICkKIAog
ICAgIFFEZXNrdG9wV2lkZ2V0IHdkOwogCi0gICAgLy94MmdvRGVidWc8PCJwcmltYXJ5IHNjcmVl
biBnZW9tZXRyeTogIjw8d2Quc2NyZWVuR2VvbWV0cnkod2Quc2NyZWVuTnVtYmVyKHRoaXMpKTsK
LQogICAgIGlmICggd2Quc2NyZWVuR2VvbWV0cnkod2Quc2NyZWVuTnVtYmVyKHRoaXMpKS53aWR0
aCgpIDwxMDI0IHx8CiAgICAgICAgICAgICB3ZC5zY3JlZW5HZW9tZXRyeSh3ZC5zY3JlZW5OdW1i
ZXIodGhpcykpLmhlaWdodCgpIDw3NjggKQogICAgIHsKICAgICAgICAgbWluaU1vZGU9dHJ1ZTsK
LSAgICAgICAgeDJnb0RlYnVnPDwiU3dpdGNoaW5nIHRvIFwibWluaVwiIG1vZGUiOworICAgICAg
ICB4MmdvRGVidWc8PCJTd2l0Y2hpbmcgdG8gXCJtaW5pXCIgbW9kZS4uLiI7CiAgICAgfQogCiAK
QEAgLTM4Myw3ICszODIsOCBAQCBPTk1haW5XaW5kb3c6Ok9OTWFpbldpbmRvdyAoIFFXaWRnZXQg
KnBhcmVudCApIDpRTWFpbldpbmRvdyAoIHBhcmVudCApCiAgICAgaW5pdFN0YXR1c0RsZygpOwog
CiAjaWYgZGVmaW5lZChDRkdQTFVHSU4pICYmIGRlZmluZWQoUV9PU19MSU5VWCkKLSAgICB4Mmdv
RGVidWc8PCJjcmVhdGUgZW1iZWRDb250YWluZXIiPDxlbmRsOworCisgICAgeDJnb0RlYnVnPDwi
Q3JlYXRpbmcgZW1iZWRkZWQgY29udGFpbmVyLiI7CiAgICAgZW1iZWRDb250YWluZXI9bmV3IFFY
MTFFbWJlZENvbnRhaW5lciAoIGZyICk7CiAKICNlbmRpZgpAQCAtNDQ5LDkgKzQ0OSwxMSBAQCBP
Tk1haW5XaW5kb3c6Ok9OTWFpbldpbmRvdyAoIFFXaWRnZXQgKnBhcmVudCApIDpRTWFpbldpbmRv
dyAoIHBhcmVudCApCiAKICAgICBjb25uZWN0KCB4aW5lcmFtYVRpbWVyLCBTSUdOQUwodGltZW91
dCgpKSwgdGhpcywgU0xPVChzbG90Q29uZmlnWGluZXJhbWEoKSkpOwogCi0gICAgeDJnb0RlYnVn
PDwiT05NYWluV2luZG93cyBjb25zdHJ1Y3RvciBmaW5pc2hlZCwgaG9tZSBEaXJlY3RvcnkgaXM6
Ijw8aG9tZURpcjw8ZW5kbDsKKyAgICB4MmdvSW5mb2YoMyk8PHRyKCJTdGFydGVkICB4MmdvY2xp
ZW50LiIpOworICAgIHgyZ29EZWJ1Zzw8IiRIT01FPSIgKyBob21lRGlyLnRvQXNjaWkoKTsKICAg
ICBpZiAodGhpbk1vZGUpCiAgICAgeworICAgICAgICB4MmdvRGVidWc8PCJUaGluTW9kZSBpcyBh
Y3RpdmUuIjsKICAgICAgICAgc2hvd01heGltaXplZCgpOwogICAgICAgICBhY3RpdmF0ZVdpbmRv
dygpOwogICAgICAgICByYWlzZSgpOwpAQCAtNDYxLDEwICs0NjMsMTAgQEAgT05NYWluV2luZG93
OjpPTk1haW5XaW5kb3cgKCBRV2lkZ2V0ICpwYXJlbnQgKSA6UU1haW5XaW5kb3cgKCBwYXJlbnQg
KQogCiBPTk1haW5XaW5kb3c6On5PTk1haW5XaW5kb3coKQogewotICAgIHgyZ29EZWJ1Zzw8Ik9O
TWFpbldpbmRvdyBkZXN0cnVjdG9yIjsKKyAgICB4MmdvRGVidWc8PCJEZXN0cm95aW5nIHgyZ29j
bGllbnQuLi4iOwogICAgIGlmICggIWNsb3NlRXZlbnRTZW50ICkKICAgICAgICAgY2xvc2VDbGll
bnQoKTsKLSAgICB4MmdvRGVidWc8PCJlbmQgb2YgT05NYWluV2luZG93IGRlc3RydWN0b3IiOwor
ICAgIHgyZ29EZWJ1Zzw8IkRlc3Ryb3llZCAgeDJnb2NsaWVudC4iOwogfQogCiB2b2lkIE9OTWFp
bldpbmRvdzo6c2xvdFNodXRkb3duVGhpbkNsaWVudCgpCkBAIC01MDksMTMgKzUxMSwxMiBAQCB2
b2lkIE9OTWFpbldpbmRvdzo6aW5zdGFsbFRyYW5zbGF0b3IoKQogICAgIGZpbGVuYW1lPWZpbGVu
YW1lLnRvTG93ZXIoKTsKICAgICBpZiAoICF4MmdvY2xpZW50VHJhbnNsYXRvci0+bG9hZCAoIGZp
bGVuYW1lICkgKQogICAgIHsKLSAgICAgICAgcURlYnVnICggIkNhbid0IGxvYWQgdHJhbnNsYXRv
ciAoJXMpICFcbiIsCi0gICAgICAgICAgICAgICAgIGZpbGVuYW1lLnRvTG9jYWw4Qml0KCkuZGF0
YSgpICk7CisgICAgICAgIHgyZ29XYXJuaW5nZigxKTw8dHIoIkNhbid0IGxvYWQgdHJhbnNsYXRv
cjogIikgKyBmaWxlbmFtZS50b0FzY2lpKCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAg
ICAgIFFDb3JlQXBwbGljYXRpb246Omluc3RhbGxUcmFuc2xhdG9yICggeDJnb2NsaWVudFRyYW5z
bGF0b3IgKTsKLS8vIAkJeDJnb0RlYnVnPDwidHJhbnNsYXRvciAiPDxmaWxlbmFtZTw8ICIgaW5z
dGFsbGVkIjsKKyAgICAgICAgeDJnb0luZm9mKDQpPDx0cigiVHJhbnNsYXRvcjogIikgKyBmaWxl
bmFtZS50b0FzY2lpKCkgKyB0cigiIGluc3RhbGxlZC4iKTsKICAgICB9CiAKIApAQCAtNTIzLDEz
ICs1MjQsMTIgQEAgdm9pZCBPTk1haW5XaW5kb3c6Omluc3RhbGxUcmFuc2xhdG9yKCkKICAgICBm
aWxlbmFtZT1RU3RyaW5nICggIjovcXRfJTEiICkuYXJnICggUUxvY2FsZTo6c3lzdGVtKCkubmFt
ZSgpICk7CiAgICAgaWYgKCAhcXRUcmFuc2xhdG9yLT5sb2FkICggZmlsZW5hbWUgKSApCiAgICAg
ewotICAgICAgICB4MmdvRGVidWc8PCAiQ2FuJ3QgbG9hZCB0cmFuc2xhdG9yICI8PAotICAgICAg
ICAgICAgICAgICBmaWxlbmFtZS50b0xvY2FsOEJpdCgpLmRhdGEoKSA7CisgICAgICAgIHgyZ29X
YXJuaW5nZigyKTw8dHIoIkNhbid0IGxvYWQgdHJhbnNsYXRvcjogIikgKyBmaWxlbmFtZS50b0Fz
Y2lpKCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIFFDb3JlQXBwbGljYXRpb246
Omluc3RhbGxUcmFuc2xhdG9yICggcXRUcmFuc2xhdG9yICk7Ci0vLyAJCXgyZ29EZWJ1Zzw8InRy
YW5zbGF0b3IgIjw8ZmlsZW5hbWU8PCAiIGluc3RhbGxlZCI7CisgICAgICAgIHgyZ29JbmZvZig1
KTw8dHIoIlRyYW5zbGF0b3I6ICIpICsgZmlsZW5hbWUudG9Bc2NpaSgpICsgdHIoIiBpbnN0YWxs
ZWQuIik7CiAgICAgfQogfQogCkBAIC02NDYsNiArNjQ2LDcgQEAgdm9pZCBPTk1haW5XaW5kb3c6
OmluaXRXaWRnZXRzRW1iZWQoKQogICAgIGlmICggY29uZmlnLmNvbmZGUyYmICggIWNvbmZpZy51
c2VGcyApICkKICAgICB7CiAgICAgICAgIHgyZ29EZWJ1Zzw8ImhpZGUgc2hhcmUiOworCiAgICAg
ICAgIGFjdF9zaGFyZUZvbGRlci0+c2V0VmlzaWJsZSAoIGZhbHNlICk7CiAgICAgfQogCkBAIC05
MDcsNyArOTA4LDggQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RUZXN0Q29ubmVjdGlvbigpCiAK
IHZvaWQgT05NYWluV2luZG93OjpzbG90Q2hhbmdlQnJva2VyUGFzcygpCiB7Ci0gICAgeDJnb0Rl
YnVnPDwiY2hhbmdlIGJyb2tlciBwYXNzIjsKKyAgICB4MmdvRGVidWc8PCJDaGFuZ2luZyBicm9r
ZXIgcGFzc3dvcmQuIjsKKwogICAgIEJyb2tlclBhc3NEbGcgcGFzc0RsZzsKICAgICBpZiAocGFz
c0RsZy5leGVjKCkhPVFEaWFsb2c6OkFjY2VwdGVkKQogICAgICAgICByZXR1cm47CkBAIC05MzAs
NyArOTMyLDcgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RDaGVja1BvcnRhYmxlRGlyKCkKIHsK
ICAgICBpZiAoIVFGaWxlOjpleGlzdHMoaG9tZURpcikpCiAgICAgewotICAgICAgICB4MmdvRGVi
dWc8PCJwb3J0YWJsZSBkaXIgbm90IGV4aXN0cywgY2xvc2UiOworICAgICAgICB4MmdvRGVidWc8
PCJQb3J0YWJsZSBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3RzLCBjbG9zaW5nLiI7CiAgICAgICAg
IGNsb3NlKCk7CiAgICAgfQogfQpAQCAtMTA3Nyw4ICsxMDc5LDEyIEBAIHZvaWQgT05NYWluV2lu
ZG93Ojp0cmF5SWNvbkluaXQoKQogICAgICAgICAgICAgdHJheUljb24tPnNldEljb24oUUljb24g
KCAiOmljb25zLzEyOHgxMjgveDJnby5wbmciKSApOwogICAgICAgICAgICAgdHJheUljb24tPnNl
dFRvb2xUaXAodHIoIkxlZnQgbW91c2UgYnV0dG9uIHRvIGhpZGUvcmVzdG9yZSAtIFJpZ2h0IG1v
dXNlIGJ1dHRvbiB0byBkaXNwbGF5IGNvbnRleHQgbWVudSIpKTsKICAgICAgICAgfQotICAgICAg
ICB0cmF5SWNvbi0+c2hvdygpOwotICAgICAgICBwbHVnQXBwc0luVHJheSgpOworCisgICAgICAg
IGlmICghc3RhcnRIaWRkZW4pCisgICAgICAgIHsKKyAgICAgICAgICAgIHRyYXlJY29uLT5zaG93
KCk7CisgICAgICAgICAgICBwbHVnQXBwc0luVHJheSgpOworICAgICAgICB9CiAgICAgfQogI2Vu
ZGlmCiB9CkBAIC0xMDkzLDcgKzEwOTksOCBAQCBRTWVudSogT05NYWluV2luZG93Ojppbml0VHJh
eUFwcE1lbnUoUVN0cmluZyB0ZXh0LCBRUGl4bWFwIGljb24pCiAKIHZvaWQgT05NYWluV2luZG93
OjpzbG90QXBwTWVudVRyaWdnZXJlZChRQWN0aW9uKiBhY3Rpb24pCiB7Ci0gICAgeDJnb0RlYnVn
PDwic2xvdEFwcE1lbnVUcmlnZ2VyZWQgOiI8PGFjdGlvbi0+ZGF0YSgpLnRvU3RyaW5nKCk8PGVu
ZGw7CisgICAgeDJnb0RlYnVnPDwic2xvdEFwcE1lbnVUcmlnZ2VyZWQ6ICI8PGFjdGlvbi0+ZGF0
YSgpLnRvU3RyaW5nKCk7CisKICAgICBpZiAoYWN0aW9uLT5kYXRhKCkudG9TdHJpbmcoKSAhPSAi
IikKICAgICAgICAgcnVuQXBwbGljYXRpb24oYWN0aW9uLT5kYXRhKCkudG9TdHJpbmcoKSk7CiB9
CkBAIC0xMTAzLDcgKzExMTAsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6cGx1Z0FwcHNJblRyYXko
KQogICAgIGlmICghdHJheUljb24pCiAgICAgICAgIHJldHVybjsKICAgICByZW1vdmVBcHBzRnJv
bVRyYXkoKTsKLSAgICB4MmdvRGVidWc8PCJwbHVnZ2luZyBhcHBzXG4iOworCisgICAgeDJnb0Rl
YnVnPDwiUGx1Z2dpbmcgYXBwcyBpbiB0cmF5LiI7CisKICAgICBib29sIGVtcHR5PXRydWU7CiAg
ICAgdG9wQWN0aW9ucy5jbGVhcigpOwogICAgIGZvcmVhY2goQXBwbGljYXRpb24gYXBwLCBhcHBs
aWNhdGlvbnMpCkBAIC0xMTMzLDcgKzExNDIsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6cmVtb3Zl
QXBwc0Zyb21UcmF5KCkKIHsKICAgICBpZiAoIXRyYXlJY29uKQogICAgICAgICByZXR1cm47Ci0g
ICAgeDJnb0RlYnVnPDwicmVtb3ZlIGFwcHNcbiI7CisKKyAgICB4MmdvRGVidWc8PCJSZW1vdmlu
ZyBhcHBzIGZyb20gdHJheSI7CisKICAgICBmb3IgKGludCBpPTA7IGk8PUFwcGxpY2F0aW9uOjpP
VEhFUjsgKytpKQogICAgIHsKICAgICAgICAgYXBwTWVudVtpXS0+Y2xlYXIoKTsKQEAgLTEyMzcs
MTMgKzEyNDgsMTMgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RSZXNpemUgKCBjb25zdCBRU2l6
ZSBzeiApCiAKIHZvaWQgT05NYWluV2luZG93OjpjbG9zZUNsaWVudCgpCiB7CisgICAgeDJnb0lu
Zm9mKDYpPDx0cigiQ2xvc2luZyB4MmdvY2xpZW50Li4uIik7CiAgICAgaWYodHJheUljb24pCiAg
ICAgICAgIHRyYXlJY29uLT5oaWRlKCk7CiAgICAgY2xvc2VFdmVudFNlbnQ9dHJ1ZTsKICAgICBp
ZiAoICFzdGFydE1heGltaXplZCAmJiAhc3RhcnRIaWRkZW4gJiYgIWVtYmVkTW9kZSApCiAgICAg
ewotICAgICAgICB4MmdvRGVidWc8PCJzYXZpbmcgc2V0dGluZ3MiOwotCisgICAgICAgIHgyZ29E
ZWJ1Zzw8IlNhdmluZyBzZXR0aW5ncy4uLiI7CiAgICAgICAgIFgyZ29TZXR0aW5ncyBzdCAoICJz
aXplcyIgKTsKIAogICAgICAgICBzdC5zZXR0aW5nKCktPnNldFZhbHVlICggIm1haW53aW5kb3cv
c2l6ZSIsCkBAIC0xMjUyLDcgKzEyNjMsNyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6Y2xvc2VDbGll
bnQoKQogICAgICAgICBzdC5zZXR0aW5nKCktPnNldFZhbHVlICggIm1haW53aW5kb3cvbWF4aW1p
emVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFWYXJpYW50ICggaXNNYXhp
bWl6ZWQoKSApICk7CiAgICAgICAgIHN0LnNldHRpbmcoKS0+c3luYygpOwotICAgICAgICB4Mmdv
RGVidWc8PCJkb25lIjsKKyAgICAgICAgeDJnb0RlYnVnPDwiU2F2ZWQgIHNldHRpbmdzLiI7CiAj
aWZkZWYgUV9PU19MSU5VWAogICAgICAgICBpZiAoaW1hZ2UpCiAgICAgICAgICAgICBYRnJlZVBp
eG1hcChRWDExSW5mbzo6ZGlzcGxheSgpLGltYWdlKTsKQEAgLTEyNjQsMjAgKzEyNzUsMTkgQEAg
dm9pZCBPTk1haW5XaW5kb3c6OmNsb3NlQ2xpZW50KCkKICAgICB7CiAgICAgICAgIGlmICggbnhw
cm94eS0+c3RhdGUoKSA9PVFQcm9jZXNzOjpSdW5uaW5nICkKICAgICAgICAgewotICAgICAgICAg
ICAgeDJnb0RlYnVnPDwidGVybWluYXRlIHByb3h5IjsKKyAgICAgICAgICAgIHgyZ29EZWJ1Zzw8
IlRlcm1pbmF0aW5nIHByb3h5Li4uIjsKICAgICAgICAgICAgIG54cHJveHktPnRlcm1pbmF0ZSgp
OwotICAgICAgICAgICAgeDJnb0RlYnVnPDwiZG9uZSI7CisgICAgICAgICAgICB4MmdvRGVidWc8
PCJUZXJtaW5hdGVkICBwcm94eS4iOwogICAgICAgICB9Ci0gICAgICAgIHgyZ29EZWJ1Zzw8ImRl
bGV0ZSBwcm94eSBwcm9jZXNzIjsKKyAgICAgICAgeDJnb0RlYnVnPDwiRGVsZXRpbmcgcHJveHku
Li4iOwogICAgICAgICBkZWxldGUgbnhwcm94eTsKLSAgICAgICAgeDJnb0RlYnVnPDwiZG9uZSI7
Ci0KKyAgICAgICAgeDJnb0RlYnVnPDwiRGVsZXRlZCAgcHJveHkuIjsKICAgICB9CiAgICAgaWYg
KCBzc2hDb25uZWN0aW9uICYmICF1c2VMZGFwKQogICAgIHsKLSAgICAgICAgeDJnb0RlYnVnPDwi
d2FpdGluZyBzc2hDb25uZWN0aW9uIHRvIGZpbmlzaFxuIjsKKyAgICAgICAgeDJnb0RlYnVnPDwi
V2FpdGluZyBmb3IgdGhlIFNTSCBjb25uZWN0aW9uIHRvIGZpbmlzaC4uLiI7CiAgICAgICAgIGRl
bGV0ZSBzc2hDb25uZWN0aW9uOwotICAgICAgICB4MmdvRGVidWc8PCJzc2hDb25uZWN0aW9uIGlz
IGNsb3NlZFxuIjsKKyAgICAgICAgeDJnb0RlYnVnPDwiV2FpdGVkICBmb3IgdGhlIFNTSCBjb25u
ZWN0aW9uIHRvIGZpbmlzaC4iOwogICAgICAgICBzc2hDb25uZWN0aW9uPTA7CiAgICAgfQogICAg
IGlmICh1c2VMZGFwKQpAQCAtMTI4Niw1MSArMTI5NiwyOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6
Y2xvc2VDbGllbnQoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoc2VydmVyU3NoQ29ubmVj
dGlvbnNbaV0pCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwid2Fp
dGluZyBzc2hDb25uZWN0aW9uIHRvIGZpbmlzaFxuIjsKKyAgICAgICAgICAgICAgICB4MmdvRGVi
dWc8PCJXYWl0aW5nIGZvciB0aGUgU1NIIGNvbm5lY3Rpb24gdG8gZmluaXNoLi4uIjsKICAgICAg
ICAgICAgICAgICBkZWxldGUgc2VydmVyU3NoQ29ubmVjdGlvbnNbaV07Ci0gICAgICAgICAgICAg
ICAgeDJnb0RlYnVnPDwic3NoQ29ubmVjdGlvbiBpcyBjbG9zZWRcbiI7CisgICAgICAgICAgICAg
ICAgeDJnb0RlYnVnPDwiV2FpdGVkICBmb3IgdGhlIFNTSCBjb25uZWN0aW9uIHRvIGZpbmlzaC4i
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgLyoJaWYgKCB0dW5uZWwh
PTBsICkKLSAgICAJewotICAgIAkJeDJnb0RlYnVnPDwiZGVsZXRlIHR1bm5lbCI7Ci0gICAgCQlk
ZWxldGUgdHVubmVsOwotICAgIAkJeDJnb0RlYnVnPDwiZG9uZSI7Ci0gICAgCX0KLSAgICAJaWYg
KCBzbmRUdW5uZWwhPTBsICkKLSAgICAJewotICAgIAkJeDJnb0RlYnVnPDwiZGVsZXRlIHNuZCB0
dW5uZWwiOwotICAgIAkJZGVsZXRlIHNuZFR1bm5lbDsKLSAgICAJCXgyZ29EZWJ1Zzw8ImRvbmUi
OwotICAgIAl9Ci0gICAgCWlmICggZnNUdW5uZWwhPTBsICkKLSAgICAJewotICAgIAkJeDJnb0Rl
YnVnPDwiZGVsZXRlIGZzIHR1bm5lbCI7Ci0gICAgCQlkZWxldGUgZnNUdW5uZWw7Ci0gICAgCQl4
MmdvRGVidWc8PCJkb25lIjsKLSAgICAJfQotICAgIAkqLwogICAgIGlmICggc291bmRTZXJ2ZXIg
KQogICAgIHsKLSAgICAgICAgeDJnb0RlYnVnPDwiZGVsZXRlIHNuZCBzZXJ2ZXIiOworICAgICAg
ICB4MmdvRGVidWc8PCJEZWxldGluZyB0aGUgc291bmQgc2VydmVyLi4uIjsKICAgICAgICAgZGVs
ZXRlIHNvdW5kU2VydmVyOwotICAgICAgICB4MmdvRGVidWc8PCJkb25lIjsKKyAgICAgICAgeDJn
b0RlYnVnPDwiRGVsZXRlZCAgdGhlIHNvdW5kIHNlcnZlci4iOwogICAgIH0KICAgICBpZiAoIGdw
Z0FnZW50IT0wbCApCiAgICAgewotICAgICAgICB4MmdvRGVidWc8PCJ0ZXJtaW5hdGUgZ3BnLWFn
ZW50IjsKICAgICAgICAgaWYgKCBncGdBZ2VudC0+c3RhdGUoKSA9PVFQcm9jZXNzOjpSdW5uaW5n
ICkKKyAgICAgICAgeworICAgICAgICAgICAgeDJnb0RlYnVnPDwiVGVybWluYXRpbmcgZ3BnLWFn
ZW50Li4uIjsKICAgICAgICAgICAgIGdwZ0FnZW50LT50ZXJtaW5hdGUoKTsKLSAgICAgICAgeDJn
b0RlYnVnPDwiZG9uZSI7Ci0gICAgfQotICAgIC8qCWlmICggdXNlU3NoQWdlbnQgKQotICAgIAl7
Ci0gICAgCQl4MmdvRGVidWc8PCJ0ZXJtaW5hdGUgc3NoLWFnZW50IjsKLSAgICAJCWZpbmlzaFNz
aEFnZW50KCk7Ci0gICAgCQl4MmdvRGVidWc8PCJkb25lIjsKLSAgICAJfSovCisgICAgICAgICAg
ICB4MmdvRGVidWc8PCJUZXJtaW5hdGVkICBncGctYWdlbnQuIjsKKyAgICAgICAgfQorICAgIH0K
KwogI2lmbmRlZiBRX09TX1dJTgogICAgIGlmICggYWdlbnRQaWQubGVuZ3RoKCkgPjAgKQogICAg
IHsKQEAgLTEzNDUsMTMgKzEzMzMsMTUgQEAgdm9pZCBPTk1haW5XaW5kb3c6OmNsb3NlQ2xpZW50
KCkKICNpZmRlZiBRX09TX1dJTgogICAgIGlmICggcHVsc2VTZXJ2ZXIgKQogICAgIHsKKyAgICAg
ICAgeDJnb0RlYnVnPDwiRGVsZXRpbmcgdGhlIHB1bHNlIHRpbWVyLi4uIjsKICAgICAgICAgZGVs
ZXRlIHB1bHNlVGltZXI7Ci0KLSAgICAgICAgeDJnb0RlYnVnPDwidGVybWluYXRlIHB1bHNlIjsK
KyAgICAgICAgeDJnb0RlYnVnPDwiRGVsZXRlZCAgdGhlIHB1bHNlIHRpbWVyLiI7CisgICAgICAg
IHgyZ29EZWJ1Zzw8IktpbGxpbmcgdGhlIHB1bHNlIHNvdW5kIHNlcnZlci4uLiI7CiAgICAgICAg
IHB1bHNlU2VydmVyLT5raWxsKCk7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8ImRvbmVcbmRlbGV0ZSBw
dWxzZSBwcm9jZXNzIjsKKyAgICAgICAgeDJnb0RlYnVnPDwiS2lsbGVkICB0aGUgcHVsc2Ugc291
bmQgc2VydmVyLiI7CisgICAgICAgIHgyZ29EZWJ1Zzw8IkRlbGV0aW5nIHRoZSBwdWxzZSBwcm9j
ZXNzLi4uIjsKICAgICAgICAgZGVsZXRlIHB1bHNlU2VydmVyOwotICAgICAgICB4MmdvRGVidWc8
PCJkb25lIjsKKyAgICAgICAgeDJnb0RlYnVnPDwiRGVsZXRlZCAgdGhlIHB1bHNlIHByb2Nlc3Mu
IjsKIAogICAgICAgICBRRGlyIGRyICggaG9tZURpciApOwogICAgICAgICBkci5yZW1vdmUgKCBw
dWxzZURpcisiL2NvbmZpZy5wYSIgKTsKQEAgLTEzNjEsMTEgKzEzNTEsMTIgQEAgdm9pZCBPTk1h
aW5XaW5kb3c6OmNsb3NlQ2xpZW50KCkKICAgICB9CiAgICAgaWYgKCB4b3JnICkKICAgICB7Ci0g
ICAgICAgIHgyZ29EZWJ1Zzw8InRlcm1pbmF0ZSB4b3JnIjsKKyAgICAgICAgeDJnb0RlYnVnPDwi
VGVybWluYXRpbmcgeG9yZy4uLiI7CiAgICAgICAgIHhvcmctPnRlcm1pbmF0ZSgpOwotICAgICAg
ICB4MmdvRGVidWc8PCJkb25lXG5kZWxldGUgeG9yZyBwcm9jZXNzIjsKKyAgICAgICAgeDJnb0Rl
YnVnPDwiVGVybWluYXRlZCAgeG9yZy4iOworICAgICAgICB4MmdvRGVidWc8PCJEZWxldGluZyB4
b3JnLi4uIjsKICAgICAgICAgZGVsZXRlIHhvcmc7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8ImRvbmUi
OworICAgICAgICB4MmdvRGVidWc8PCJEZWxldGVkIHhvcmcuIjsKICAgICB9CiAKICAgICBpZiAo
IHdpblNzaGRTdGFydGVkICkKQEAgLTEzNzcsOCArMTM2OCw5IEBAIHZvaWQgT05NYWluV2luZG93
OjpjbG9zZUNsaWVudCgpCiAjZWxzZQogICAgIGlmICggdXNlclNzaGQgJiYgc3NoZCApCiAgICAg
eworICAgICAgICB4MmdvRGVidWc8PCJUZXJtaW5hdGluZyBzc2hkLi4uIjsKICAgICAgICAgc3No
ZC0+dGVybWluYXRlKCk7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8InRlcm1pbmF0aW5nIHVzZXJzcGFj
ZSBzc2hkIjsKKyAgICAgICAgeDJnb0RlYnVnPDwiVGVybWluYXRlZCAgc3NoZC4iOwogICAgICAg
ICBkZWxldGUgc3NoZDsKICAgICB9CiAKQEAgLTE0MDcsMTEgKzEzOTksMTQgQEAgdm9pZCBPTk1h
aW5XaW5kb3c6OmNsb3NlQ2xpZW50KCkKICAgICAgICAgY2xlYW5Qb3J0YWJsZSgpOwogICAgIH0K
ICAgICBTc2hNYXN0ZXJDb25uZWN0aW9uOjpmaW5hbGl6ZUxpYlNzaCgpOworCisgICAgeDJnb0lu
Zm9mKDcpPDx0cigiQ2xvc2VkICB4MmdvY2xpZW50LiIpOwogfQogCiB2b2lkIE9OTWFpbldpbmRv
dzo6Y2xvc2VFdmVudCAoIFFDbG9zZUV2ZW50KiBldmVudCApCiB7Ci0gICAgeDJnb0RlYnVnPDwi
Y2xvc2UgZXZlbnQiOworICAgIHgyZ29EZWJ1Zzw8IkNsb3NlIGV2ZW50IHJlY2VpdmVkLiI7CisK
ICAgICBpZiAodHJheU5vY2xvc2UgJiYgIWJyb2tlck1vZGUpCiAgICAgewogICAgICAgICBoaWRl
KCk7CkBAIC0xNTc0LDcgKzE1NjksOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6ZGlzcGxheVVzZXJz
KCkKICAgICBpZiAoIHVzZVBHUENhcmQgICYmICFQR1BJbml0ZWQpCiAgICAgewogICAgICAgICBQ
R1BJbml0ZWQ9dHJ1ZTsKLSAgICAgICAgeDJnb0RlYnVnPDwiVXNlcnMgbG9hZGVkLCBzdGFydGlu
ZyBzbWFydCBjYXJkIGRhZW1vblxuIjsKKworICAgICAgICB4MmdvRGVidWc8PCJVc2VycyBsb2Fk
ZWQsIHN0YXJ0aW5nIHNtYXJ0IGNhcmQgZGFlbW9uLiI7CisKICAgICAgICAgUVRpbWVyOjpzaW5n
bGVTaG90ICggMTAsIHRoaXMsIFNMT1QgKCBzbG90U3RhcnRQR1BBdXRoKCkgKSApOwogICAgIH0K
IH0KQEAgLTE3MzQsOCArMTczMSw4IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90UGFzc0VudGVy
KCkKICAgICAgICAgewogICAgICAgICAgICAgc1BvcnQ9c0wuZnJvbnQoKS5jX3N0cigpOwogICAg
ICAgICB9Ci0gICAgICAgIHgyZ29EZWJ1Zzw8c2VydmVyLm5hbWU8PCI6IHNzaCBwb3J0IGlzICI8
PHNQb3J0OwogCisgICAgICAgIHgyZ29EZWJ1Zzw8IlNTSC1TZXJ2ZXIoIjw8c2VydmVyLm5hbWU8
PCIpIHBvcnQ6ICI8PHNQb3J0OwogCiAgICAgICAgIFFTdHJpbmcgc0ZhY3Rvcj0iMSI7CiAgICAg
ICAgIGxpc3Q8c3RyaW5nPiBzZXJpYWxOdW1iZXI9TERBUFNlc3Npb246OmdldFN0cmluZ0F0dHJW
YWx1ZXMgKApAQCAtMTc0NCw3ICsxNzQxLDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RQYXNz
RW50ZXIoKQogICAgICAgICB7CiAgICAgICAgICAgICBzRmFjdG9yPXNlcmlhbE51bWJlci5mcm9u
dCgpLmNfc3RyKCk7CiAgICAgICAgIH0KLSAgICAgICAgeDJnb0RlYnVnPDxzZXJ2ZXIubmFtZTw8
IjogZmFjdG9yIGlzICI8PHNGYWN0b3I7CisKKyAgICAgICAgeDJnb0RlYnVnPDwiU1NILVNlcnZl
cigiPDxzZXJ2ZXIubmFtZTw8IikgZmFjdG9yOiAiPDxzRmFjdG9yOworCiAgICAgICAgIHNlcnZl
ci5mYWN0b3I9c0ZhY3Rvci50b0Zsb2F0KCk7CiAgICAgICAgIHNlcnZlci5zZXNzPTA7CiAgICAg
ICAgIHNlcnZlci5zc2hQb3J0PXNQb3J0OwpAQCAtMjE0MCwxMCArMjEzOSwxNiBAQCB2b2lkIE9O
TWFpbldpbmRvdzo6c2xvdFJlYWRTZXNzaW9ucygpCiAgICAgICAgIHN0PSBuZXcgWDJnb1NldHRp
bmdzKCAic2Vzc2lvbnMiICk7CiAKICAgICBRU3RyaW5nTGlzdCBzbHN0PXN0LT5zZXR0aW5nKCkt
PmNoaWxkR3JvdXBzKCk7Ci0gICAgeDJnb0RlYnVnPDwicmVhZCAiPDxzbHN0LnNpemUoKTw8IiBz
ZXNzaW9ucyBmcm9tIGNvbmZpZyBmaWxlIjsKKworICAgIHgyZ29EZWJ1Zzw8IlJlYWRpbmcgIjw8
c2xzdC5zaXplKCk8PCIgc2Vzc2lvbnMgZnJvbSBjb25maWcgZmlsZS4iOworCiAgICAgaWYgKGJy
b2tlck1vZGUgJiYgKHNsc3Quc2l6ZSgpPT0wKSkKICAgICB7Ci0gICAgICAgIFFNZXNzYWdlQm94
Ojpjcml0aWNhbCh0aGlzLHRyKCJFcnJvciIpLHRyKCJYMkdvIHNlc3Npb25zIG5vdCBmb3VuZCIp
KTsKKyAgICAgICAgUVN0cmluZyBlcnJvciA9IHRyKCJObyBYMkdvIHNlc3Npb25zIGZvdW5kLCBj
bG9zaW5nLiIpOworICAgICAgICBpZighc3RhcnRIaWRkZW4pCisgICAgICAgICAgICBRTWVzc2Fn
ZUJveDo6Y3JpdGljYWwodGhpcyx0cigiRXJyb3IiKSxlcnJvcik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHgyZ29FcnJvcmYoMSk8PGVycm9yOyAvLyB0cigiTm8gWDJHbyBzZXNzaW9ucyBu
b3QgZm91bmQsIGNsb3NpbmcuIik7CiAgICAgICAgIGNsb3NlKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0yMzI5LDcgKzIzMzQsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6ZGlzcGxheVRv
b2xCYXIgKCBib29sIHNob3cgKQogYm9vbCBPTk1haW5XaW5kb3c6OmluaXRMZGFwU2Vzc2lvbiAo
IGJvb2wgc2hvd0Vycm9yICkKIHsKICNpZmRlZiBVU0VMREFQCi0gICAgeDJnb0RlYnVnPDwiaW5p
dGluZyBMREFQIFNlc3Npb24iPDxlbmRsOworCisgICAgeDJnb0RlYnVnPDwiSW5pdGlhbGl6aW5n
IExEQVAgc2Vzc2lvbnMuLi4iOworCiAgICAgdHJ5CiAgICAgewogICAgICAgICBsZD1uZXcgTERB
UFNlc3Npb24gKCBsZGFwU2VydmVyLnRvU3RkU3RyaW5nKCksCkBAIC0yMzQwLDcgKzIzNDcsOSBA
QCBib29sIE9OTWFpbldpbmRvdzo6aW5pdExkYXBTZXNzaW9uICggYm9vbCBzaG93RXJyb3IgKQog
ICAgICAgICBRU3RyaW5nIG1lc3NhZ2U9IkV4ZXB0aW9uMCBpbjogIjsKICAgICAgICAgbWVzc2Fn
ZT1tZXNzYWdlK2UuZXJyX3R5cGUuY19zdHIoKTsKICAgICAgICAgbWVzc2FnZT1tZXNzYWdlKyIg
OiAiK2UuZXJyX3N0ci5jX3N0cigpOwotICAgICAgICB4MmdvRGVidWcgPDxtZXNzYWdlPDxlbmRs
OworCisgICAgICAgIHgyZ29EZWJ1Zzw8bWVzc2FnZTsKKwogICAgICAgICBpZiAoIGxkYXBTZXJ2
ZXIxLmxlbmd0aCgpICkKICAgICAgICAgewogICAgICAgICAgICAgdHJ5CkBAIC0yMzU0LDcgKzIz
NjMsOSBAQCBib29sIE9OTWFpbldpbmRvdzo6aW5pdExkYXBTZXNzaW9uICggYm9vbCBzaG93RXJy
b3IgKQogICAgICAgICAgICAgICAgIFFTdHJpbmcgbWVzc2FnZT0iRXhlcHRpb24xIGluOiAiOwog
ICAgICAgICAgICAgICAgIG1lc3NhZ2U9bWVzc2FnZStlLmVycl90eXBlLmNfc3RyKCk7CiAgICAg
ICAgICAgICAgICAgbWVzc2FnZT1tZXNzYWdlKyIgOiAiK2UuZXJyX3N0ci5jX3N0cigpOwotICAg
ICAgICAgICAgICAgIHgyZ29EZWJ1ZyA8PG1lc3NhZ2U8PGVuZGw7CisKKyAgICAgICAgICAgICAg
ICB4MmdvRGVidWc8PG1lc3NhZ2U7CisKICAgICAgICAgICAgICAgICBpZiAoIGxkYXBTZXJ2ZXIy
Lmxlbmd0aCgpICkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHRyeQpA
QCAtMjM3Miw4ICsyMzgzLDggQEAgYm9vbCBPTk1haW5XaW5kb3c6OmluaXRMZGFwU2Vzc2lvbiAo
IGJvb2wgc2hvd0Vycm9yICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5lcnJf
dHlwZS5jX3N0cigpOwogICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1tZXNzYWdlKyIg
OiAiKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmVycl9zdHIuY19zdHIoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHgyZ29EZWJ1ZyA8PG1lc3NhZ2U8PGVuZGw7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCJyZXR1cm4gZmFsc2UiPDxlbmRsOworCisg
ICAgICAgICAgICAgICAgICAgICAgICB4MmdvRGVidWc8PG1lc3NhZ2U7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIHNob3dFcnJvciApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UU1lc3NhZ2VCb3g6OmNyaXRpY2FsICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MGwsdHIgKCAiRXJyb3IiICksCkBAIC0yMzgyLDEyICsyMzkzLDE0IEBAIGJvb2wgT05NYWluV2lu
ZG93Ojppbml0TGRhcFNlc3Npb24gKCBib29sIHNob3dFcnJvciApCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTm9CdXR0b24gKTsKIAorICAgICAgICAgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwi
UmV0dXJuaW5nIGZhbHNlLCAzcmQgdHJ5IGZhaWxlZC4iOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgIHgyZ29EZWJ1Zzw8InJldHVybiBmYWxzZSI8PGVuZGw7CisgICAgICAgICAgICAgICAg
ICAgIHgyZ29EZWJ1Zzw8IlJldHVybmluZyBmYWxzZS4iOworCiAgICAgICAgICAgICAgICAgICAg
IGlmICggc2hvd0Vycm9yICkKICAgICAgICAgICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94Ojpj
cml0aWNhbCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMGwsdHIgKCAiRXJyb3IiICks
CkBAIC0yNDAxLDcgKzI0MTQsOCBAQCBib29sIE9OTWFpbldpbmRvdzo6aW5pdExkYXBTZXNzaW9u
ICggYm9vbCBzaG93RXJyb3IgKQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewot
ICAgICAgICAgICAgeDJnb0RlYnVnPDwicmV0dXJuIGZhbHNlIjw8ZW5kbDsKKyAgICAgICAgICAg
IHgyZ29EZWJ1Zzw8IlJldHVybmluZyBmYWxzZS4iOworCiAgICAgICAgICAgICBpZiAoIHNob3dF
cnJvciApCiAgICAgICAgICAgICAgICAgUU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGwsdHIgKCAi
RXJyb3IiICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZSxRTWVzc2FnZUJveDo6T2ssCkBAIC0yNTMxLDYgKzI1NDUsNyBAQCBib29sIE9OTWFpbldpbmRv
dzo6aW5pdExkYXBTZXNzaW9uICggYm9vbCBzaG93RXJyb3IgKQogICAgICAgICB9CiAgICAgfQog
I2VuZGlmCisgICAgeDJnb0RlYnVnPDwiSW5pdGlhbGl6ZWQgIExEQVAgc2Vzc2lvbnMuIjsKICAg
ICByZXR1cm4gdHJ1ZTsKIAogfQpAQCAtMjcyMyw3ICsyNzM4LDcgQEAgdm9pZCBPTk1haW5XaW5k
b3c6OnNsb3RTZWxlY3RlZEZyb21MaXN0ICggU2Vzc2lvbkJ1dHRvbiogc2Vzc2lvbiApCiAgICAg
fQogICAgIGlmICggY3VycmVudEtleSAhPSBRU3RyaW5nOjpudWxsICYmIGN1cnJlbnRLZXkgIT0g
IiIgJiYgbm9wYXNzICkKICAgICB7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8IkhhdmUga2V5LCBzdGFy
dGluZyBzZXNzaW9uIjw8ZW5kbDsKKyAgICAgICAgeDJnb0RlYnVnPDwiU3RhcnRpbmcgc2Vzc2lv
biB3aXRoIGtleS4iOwogICAgICAgICBzbG90U2Vzc0VudGVyKCk7CiAgICAgfQogICAgIGlmICgg
Y2FyZFJlYWR5IHx8IGF1dG9sb2dpbiB8fCBrcmJsb2dpbiAgKQpAQCAtMjc1OCwxNyArMjc3Mywy
MCBAQCBTc2hNYXN0ZXJDb25uZWN0aW9uKiBPTk1haW5XaW5kb3c6OnN0YXJ0U3NoQ29ubmVjdGlv
biAoIFFTdHJpbmcgaG9zdCwgUVN0cmluZyBwbwogICAgICAgICBRU3RyaW5nIHByb3h5bG9naW4s
IFFTdHJpbmcgcHJveHlwYXNzd29yZCwgUVN0cmluZyBwcm94eUtleSwKICAgICAgICAgYm9vbCBw
cm94eUF1dG9sb2dpbikKIHsKLQorICAgIHgyZ29JbmZvZig4KTw8dHIoIlN0YXJ0aW5nIGNvbm5l
Y3Rpb24gdG8gc2VydmVyOiAiKSArIGhvc3QgKyAiOiIgKyBwb3J0OwogICAgIFNzaE1hc3RlckNv
bm5lY3Rpb24qIGNvbjsKLSAgICB4MmdvRGVidWc8PCJzdGFydCBuZXcgc3NoIGNvbm5lY3Rpb24g
dG8gc2VydmVyOiI8PGhvc3Q8PCI6Ijw8cG9ydDw8ImtyYjogIjw8a3JiTG9naW48PGVuZGw7CisK
KyAgICB4MmdvRGVidWc8PCJTdGFydCBuZXcgc3NoIGNvbm5lY3Rpb24gdG8gc2VydmVyOiI8PGhv
c3Q8PCI6Ijw8cG9ydDw8IiBrcmJMb2dpbjogIjw8a3JiTG9naW47CisKICAgICBmb3IgKCBpbnQg
aT0wOyBpPHNzaEVudi5zaXplKCk7ICsraSApCiAgICAgewogI2lmbmRlZiBRX09TX1dJTgogICAg
ICAgICBRU3RyaW5nTGlzdCBhcmdzPXNzaEVudltpXS5zcGxpdCAoICI9IiApOwotICAgICAgICB4
MmdvRGVidWc8PCJzZXQgRW52ICI8PGFyZ3NbMF08PCIgdG8gIjw8YXJnc1sxXTw8ZW5kbDsKKyAg
ICAgICAgeDJnb0RlYnVnPDwiU2V0dGluZyBFTlYgIiArIGFyZ3NbMF0gKyB0cigiIHRvICIpICsg
YXJnc1sxXTsKICAgICAgICAgc2V0ZW52ICggYXJnc1swXS50b0FzY2lpKCksYXJnc1sxXS50b0Fz
Y2lpKCksMSApOwogI2Vsc2UKLSAgICAgICAgeDJnb0RlYnVnPDwic2V0IEVudiAiPDxzc2hFbnZb
aV08PGVuZGw7CisgICAgICAgIHgyZ29EZWJ1Zzw8IlNldCBFTlY6ICI8PHNzaEVudltpXTsKKwog
ICAgICAgICBfcHV0ZW52ICggc3NoRW52W2ldLnRvQXNjaWkoKSApOwogI2VuZGlmCiAgICAgfQpA
QCAtMjgwOSw2ICsyODI3LDcgQEAgU3NoTWFzdGVyQ29ubmVjdGlvbiogT05NYWluV2luZG93Ojpz
dGFydFNzaENvbm5lY3Rpb24gKCBRU3RyaW5nIGhvc3QsIFFTdHJpbmcgcG8KIAogdm9pZCBPTk1h
aW5XaW5kb3c6OnNsb3RTc2hDb25uZWN0aW9uRXJyb3IgKCBRU3RyaW5nIG1lc3NhZ2UsIFFTdHJp
bmcgbGFzdFNlc3Npb25FcnJvciApCiB7CisgICAgeDJnb0Vycm9yZigyKTw8IHRyKCJDb25uZWN0
aW9uIEVycm9yKCIpICsgbWVzc2FnZSArICIpOiAiICsgbGFzdFNlc3Npb25FcnJvcjsKICAgICBp
ZiAoIHNzaENvbm5lY3Rpb24gKQogICAgIHsKICAgICAgICAgc3NoQ29ubmVjdGlvbi0+d2FpdCgp
OwpAQCAtMjgxNiwyNiArMjgzNSwzNSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdFNzaENvbm5l
Y3Rpb25FcnJvciAoIFFTdHJpbmcgbWVzc2FnZSwgUVN0cmluZyBsYXN0U2Vzc2lvbgogICAgICAg
ICBzc2hDb25uZWN0aW9uPTBsOwogICAgIH0KIAotICAgIFFNZXNzYWdlQm94Ojpjcml0aWNhbCAo
IDBsLG1lc3NhZ2UsbGFzdFNlc3Npb25FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBRTWVzc2FnZUJveDo6T2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1lc3NhZ2VC
b3g6Ok5vQnV0dG9uICk7Ci0gICAgc2V0RW5hYmxlZCAoIHRydWUgKTsKLSAgICBwYXNzRm9ybS0+
c2V0RW5hYmxlZCAoIHRydWUgKTsKLSAgICBzbG90U2hvd1Bhc3NGb3JtKCk7Ci0gICAgcGFzcy0+
c2V0Rm9jdXMoKTsKLSAgICBwYXNzLT5zZWxlY3RBbGwoKTsKKyAgICBpZiAoIXN0YXJ0SGlkZGVu
KQorICAgIHsKKyAgICAgICAgUU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGwsbWVzc2FnZSxsYXN0
U2Vzc2lvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWVzc2FnZUJv
eDo6T2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpOb0J1
dHRvbiApOworICAgICAgICBzZXRFbmFibGVkICggdHJ1ZSApOworICAgICAgICBwYXNzRm9ybS0+
c2V0RW5hYmxlZCAoIHRydWUgKTsKKyAgICAgICAgc2xvdFNob3dQYXNzRm9ybSgpOworICAgICAg
ICBwYXNzLT5zZXRGb2N1cygpOworICAgICAgICBwYXNzLT5zZWxlY3RBbGwoKTsKIAogCi0gICAg
cGFzc0Zvcm0tPnNldEVuYWJsZWQgKCB0cnVlICk7Ci0gICAgaWYgKCBzdGFydEhpZGRlbiApCisg
ICAgICAgIHBhc3NGb3JtLT5zZXRFbmFibGVkICggdHJ1ZSApOworICAgIH0KKyAgICBlbHNlCiAg
ICAgewotICAgICAgICBzdGFydEhpZGRlbj1mYWxzZTsKLSAgICAgICAgc2xvdFJlc2l6ZSgpOwot
ICAgICAgICBzaG93KCk7Ci0gICAgICAgIGFjdGl2YXRlV2luZG93KCk7Ci0gICAgICAgIHJhaXNl
KCk7CisgICAgICAgIC8vIEluIG9yZGVyIHRvIGdldCB0aGlzIGludGVyYWN0aW9uIGZyZWUsIHdl
IG5lZWQgdG8gZnJlZSB0aGlzIGZyb20gd2luZG93cyBhbmQgc3R1ZmYKKyAgICAgICAgLy8gICAg
aWYgKCBzdGFydEhpZGRlbiApCisgICAgICAgIC8vICAgIHsKKyAgICAgICAgLy8gICAgICAgIHN0
YXJ0SGlkZGVuPWZhbHNlOworICAgICAgICAvLyAgICAgICAgc2xvdFJlc2l6ZSgpOworICAgICAg
ICAvLyAgICAgICAgc2hvdygpOworICAgICAgICAvLyAgICAgICAgYWN0aXZhdGVXaW5kb3coKTsK
KyAgICAgICAgLy8gICAgICAgIHJhaXNlKCk7CisgICAgICAgIC8vICAgIH0KKworICAgICAgICAv
LyBjb21wbGV0ZWx5IHF1aXQgdGhlIGFwcGxpY2F0aW9uCisgICAgICAgIHRyYXlRdWl0KCk7CiAg
ICAgfQotCiB9CiAKIApAQCAtMjg0Myw3ICsyODcxLDcgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNs
b3RTc2hDb25uZWN0aW9uRXJyb3IgKCBRU3RyaW5nIG1lc3NhZ2UsIFFTdHJpbmcgbGFzdFNlc3Np
b24KIAogdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RTc2hDb25uZWN0aW9uT2soKQogewotICAgIHgy
Z29EZWJ1Zzw8InNzaCBjb25uZWN0aW9uIG9rIjw8ZW5kbDsKKyAgICB4MmdvRGVidWc8PCJTU0gg
Y29ubmVjdGlvbiBlc3RhYmxpc2hlZC4iOwogICAgIHBhc3NGb3JtLT5zZXRFbmFibGVkICggdHJ1
ZSApOwogICAgIGlmICggdXNlTGRhcCApCiAgICAgewpAQCAtMjg1NiwxNCArMjg4NCwxOSBAQCB2
b2lkIE9OTWFpbldpbmRvdzo6c2xvdFNzaENvbm5lY3Rpb25PaygpCiAKIFNzaE1hc3RlckNvbm5l
Y3Rpb24qICBPTk1haW5XaW5kb3c6OmZpbmRTZXJ2ZXJTc2hDb25uZWN0aW9uKFFTdHJpbmcgaG9z
dCkKIHsKKyAgICB4MmdvRGVidWc8PCJTZWFyY2hpbmcgZm9yIFNTSCBjb25uZWN0aW9ucy4uLiI7
CiAgICAgZm9yIChpbnQgaT0wOyBpPHNlcnZlclNzaENvbm5lY3Rpb25zLmNvdW50KCk7ICsraSkK
ICAgICB7CiAgICAgICAgIGlmIChzZXJ2ZXJTc2hDb25uZWN0aW9uc1tpXSkKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKHNlcnZlclNzaENvbm5lY3Rpb25zW2ldLT5nZXRIb3N0KCk9PWhvc3Qp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwiRm91bmQgU1NIIGNv
bm5lY3Rpb24uIjsKICAgICAgICAgICAgICAgICByZXR1cm4gc2VydmVyU3NoQ29ubmVjdGlvbnNb
aV07CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisgICAgeDJnb1dhcm5pbmdmKDMp
PDwgdHIoIkNvdWxkbid0IGZpbmQgYSBTU0ggY29ubmVjdGlvbi4iKTsKICAgICByZXR1cm4gMGw7
CiB9CiAKQEAgLTI4NzIsNyArMjkwNSw3IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90U2VydlNz
aENvbm5lY3Rpb25PayhRU3RyaW5nIHNlcnZlcikKICAgICBTc2hNYXN0ZXJDb25uZWN0aW9uKiBj
b249ZmluZFNlcnZlclNzaENvbm5lY3Rpb24oc2VydmVyKTsKICAgICBpZiAoIWNvbikKICAgICAg
ICAgcmV0dXJuOwotICAgIHgyZ29EZWJ1Zzw8ImdldHRpbmcgc2Vzc2lvbnMgb24gIjw8c2VydmVy
PDxlbmRsOworICAgIHgyZ29EZWJ1Zzw8IkdldHRpbmcgc2Vzc2lvbnMgb24gSG9zdDogIiArIHNl
cnZlcjsKICAgICBjb24tPmV4ZWN1dGVDb21tYW5kKCAiZXhwb3J0IEhPU1ROQU1FICYmIHgyZ29s
aXN0c2Vzc2lvbnMiLCB0aGlzLCBTTE9UIChzbG90TGlzdEFsbFNlc3Npb25zICggYm9vbCxRU3Ry
aW5nLGludCApICkpOwogfQogCkBAIC0yOTg5LDYgKzMwMjIsMjEgQEAgdm9pZCBPTk1haW5XaW5k
b3c6OnNsb3RTc2hVc2VyQXV0aEVycm9yICggUVN0cmluZyBlcnJvciApCiAgICAgICAgIHNzaENv
bm5lY3Rpb249MGw7CiAgICAgfQogCisgICAgLy8gICAgaWYgKCBzdGFydEhpZGRlbiApCisgICAg
Ly8gICAgeworICAgIC8vICAgICAgICBzdGFydEhpZGRlbj1mYWxzZTsKKyAgICAvLyAgICAgICAg
c2xvdFJlc2l6ZSgpOworICAgIC8vICAgICAgICBzaG93KCk7CisgICAgLy8gICAgICAgIGFjdGl2
YXRlV2luZG93KCk7CisgICAgLy8gICAgICAgIHJhaXNlKCk7CisgICAgLy8gICAgfQorICAgIC8v
IGhpZGRlbiBtZWFucyBoaWRkZW4sIHdlJ2xsIGNsb3NlIHRoZSBjbGllbnQgYWZ0ZXJ3YXJkcy4K
KyAgICBpZiAoIHN0YXJ0SGlkZGVuICkKKyAgICB7CisgICAgICAgIHgyZ29FcnJvcmYoMyk8PCB0
cigiQXV0aGVudGljYXRpb24gZmFpbGVkOiAiKSArIGVycm9yOworICAgICAgICB0cmF5UXVpdCgp
OworICAgIH0KKwogICAgIFFNZXNzYWdlQm94Ojpjcml0aWNhbCAoIDBsLHRyICggIkF1dGhlbnRp
Y2F0aW9uIGZhaWxlZCIgKSxlcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWVz
c2FnZUJveDo6T2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1lc3NhZ2VCb3g6Ok5v
QnV0dG9uICk7CkBAIC0zMDAxLDE0ICszMDQ5LDYgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RT
c2hVc2VyQXV0aEVycm9yICggUVN0cmluZyBlcnJvciApCiAKIAogICAgIHBhc3NGb3JtLT5zZXRF
bmFibGVkICggdHJ1ZSApOwotICAgIGlmICggc3RhcnRIaWRkZW4gKQotICAgIHsKLSAgICAgICAg
c3RhcnRIaWRkZW49ZmFsc2U7Ci0gICAgICAgIHNsb3RSZXNpemUoKTsKLSAgICAgICAgc2hvdygp
OwotICAgICAgICBhY3RpdmF0ZVdpbmRvdygpOwotICAgICAgICByYWlzZSgpOwotICAgIH0KIH0K
IAogdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RTZXNzRW50ZXIoKQpAQCAtMzAyMyw3ICszMDYzLDgg
QEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RTZXNzRW50ZXIoKQogICAgIHsKICAgICAgICAgaWYg
KCFjb25maWcuYnJva2VyQXV0aGVudGljYXRlZCkKICAgICAgICAgewotICAgICAgICAgICAgeDJn
b0RlYnVnPDwic3RhcnRpbmcgYnJva2VyIHJlcXVlc3QiOworCisgICAgICAgICAgICB4MmdvRGVi
dWc8PCJTdGFydGluZyBicm9rZXIgcmVxdWVzdC4iOwogICAgICAgICAgICAgc2xvdFN0YXJ0QnJv
a2VyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMwNTYsNyArMzA5Nyw3
IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90U2Vzc0VudGVyKCkKIAogdm9pZCBPTk1haW5XaW5k
b3c6OmNvbnRpbnVlTm9ybWFsU2Vzc2lvbigpCiB7Ci0gICAgeDJnb0RlYnVnPDwiY29udGludWUg
bm9ybWFsIHgyZ28gc2Vzc2lvbiI8PGVuZGw7CisgICAgeDJnb0RlYnVnPDwiQ29udGludWUgbm9y
bWFsIHgyZ28gc2Vzc2lvbiI7CiAgICAgaWYgKGJyb2tlck1vZGUpCiAgICAgewogICAgICAgICBz
bG90TGlzdFNlc3Npb25zKHRydWUsUVN0cmluZzo6bnVsbCwwKTsKQEAgLTMyNDgsNyArMzI4OSw4
IEBAIGJvb2wgT05NYWluV2luZG93OjpzdGFydFNlc3Npb24gKCBjb25zdCBRU3RyaW5nJiBzaWQg
KQogICAgIGlmKGJyb2tlck1vZGUpCiAgICAgewogICAgICAgICBzc2hQb3J0PWNvbmZpZy5zc2hw
b3J0OwotICAgICAgICB4MmdvRGVidWc8PCJzZXJ2ZXI6ICI8PGhvc3Q7CisKKyAgICAgICAgeDJn
b0RlYnVnPDwiU2VydmVyOiAiPDxob3N0OwogICAgIH0KIAogICAgIFFTdHJpbmcgY21kPXN0LT5z
ZXR0aW5nKCktPnZhbHVlICggc2lkKyIvY29tbWFuZCIsCkBAIC0zMzk5LDkgKzM0NDEsMjQgQEAg
dm9pZCBPTk1haW5XaW5kb3c6OnNsb3RMaXN0U2Vzc2lvbnMgKCBib29sIHJlc3VsdCxRU3RyaW5n
IG91dHB1dCwKICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTsKICAgICAgICAgfQogCi0gICAg
ICAgIFFNZXNzYWdlQm94Ojpjcml0aWNhbCAoIDBsLHRyICggIkVycm9yIiApLG1lc3NhZ2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpPaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUU1lc3NhZ2VCb3g6Ok5vQnV0dG9uICk7CisgICAgICAg
IGlmICggIXN0YXJ0SGlkZGVuICkKKyAgICAgICAgeworICAgICAgICAgICAgUU1lc3NhZ2VCb3g6
OmNyaXRpY2FsICggMGwsdHIgKCAiRXJyb3IiICksbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpPaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpOb0J1dHRvbiApOworICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgUVN0cmluZyBwcmludG91dCA9IHRyKCAi
Q29ubmVjdGlvbiBmYWlsZWQ6ICIpICArIG91dHB1dC50b0FzY2lpKCk7CisKKyAgICAgICAgICAg
IGlmICggb3V0cHV0LmluZGV4T2YgKCAicHVibGlja2V5LHBhc3N3b3JkIiApICE9LTEgKQorICAg
ICAgICAgICAgICAgIHgyZ29FcnJvcmYoNCk8PCB0ciggIkNvbm5lY3Rpb24gZmFpbGVkOiAiKSAg
KyBvdXRwdXQgKyB0cigiIC0gV3JvbmcgcGFzc3dvcmQuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgeDJnb0Vycm9yZig1KTw8IHRyKCAiQ29ubmVjdGlvbiBmYWlsZWQ6ICIp
ICArIG91dHB1dDsKKyAgICAgICAgICAgIHRyYXlRdWl0KCk7CisgICAgICAgIH0KKworCiAvLyAJ
CWN1cnJlbnRLZXk9UVN0cmluZzo6bnVsbDsKICAgICAgICAgc2V0RW5hYmxlZCAoIHRydWUgKTsK
ICAgICAgICAgcGFzc0Zvcm0tPnNldEVuYWJsZWQgKCB0cnVlICk7CkBAIC0zNDIwLDE3ICszNDc3
LDE2IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90TGlzdFNlc3Npb25zICggYm9vbCByZXN1bHQs
UVN0cmluZyBvdXRwdXQsCiAgICAgfQogICAgIGlmICggbWFuYWdlZE1vZGUgfHwgYnJva2VyTW9k
ZSApCiAgICAgewotICAgICAgICB4MmdvRGVidWc8PCJzZXNzIGRhdGE6Ijw8Y29uZmlnLnNlc3Np
b25kYXRhOworICAgICAgICB4MmdvRGVidWc8PCJTZXNzaW9uIGRhdGE6ICIgKyBjb25maWcuc2Vz
c2lvbmRhdGE7CiAgICAgICAgIGlmICggY29uZmlnLnNlc3Npb25kYXRhLmluZGV4T2YgKCAifFN8
IiApID09LTEgKQogICAgICAgICB7Ci0gICAgICAgICAgICB4MmdvRGVidWc8PCJzdGFydCBuZXcg
bWFuYWdlZCBzZXNzaW9uIjsKKyAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IlN0YXJ0aW5nIG5ldyBt
YW5hZ2VkIHNlc3Npb24uIjsKICAgICAgICAgICAgIHN0YXJ0TmV3U2Vzc2lvbigpOwogICAgICAg
ICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgeDJnb1Nlc3Npb24gcz1n
ZXRTZXNzaW9uRnJvbVN0cmluZyAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25m
aWcuc2Vzc2lvbmRhdGEgKTsKLSAgICAgICAgICAgIHgyZ29EZWJ1Zzw8InJlc3VtaW5nIG1hbmFn
ZWQgc2Vzc2lvbjoiPDxzLnNlc3Npb25JZDsKKyAgICAgICAgICAgIHgyZ29TZXNzaW9uIHM9Z2V0
U2Vzc2lvbkZyb21TdHJpbmcgKGNvbmZpZy5zZXNzaW9uZGF0YSk7CisgICAgICAgICAgICB4Mmdv
RGVidWc8PCJSZXN1bWluZyBtYW5hZ2VkIHNlc3Npb24gd2l0aCBJZDogIiArIHMuc2Vzc2lvbklk
OwogICAgICAgICAgICAgcmVzdW1lU2Vzc2lvbiAoIHMgKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CkBAIC0zNzE4LDcgKzM3NzQsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c3RhcnROZXdT
ZXNzaW9uKCkKIAogICAgIFFTdHJpbmcgZ2VvbWV0cnk7CiAjaWZkZWYgUV9PU19XSU4KLSAgICB4
MmdvRGVidWc8PCJmdWxsc2NyZWVuOiAiPDxmdWxsc2NyZWVuOworCisgICAgeDJnb0RlYnVnPDwi
RnVsbHNjcmVlbjogIjw8ZnVsbHNjcmVlbjsKKwogICAgIG1heGltaXplUHJveHlXaW49ZmFsc2U7
CiAgICAgcHJveHlXaW5XaWR0aD13aWR0aDsKICAgICBwcm94eVdpbkhlaWdodD1oZWlnaHQ7CkBA
IC0zNzQwLDcgKzM3OTgsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c3RhcnROZXdTZXNzaW9uKCkK
ICNpZmRlZiBRX09TX1dJTgogLy8gICAgICAgIGZ1bGxzY3JlZW49ZmFsc2U7CiAgICAgICAgIG1h
eGltaXplUHJveHlXaW49dHJ1ZTsKLSAgICAgICAgeDJnb0RlYnVnPDwibWF4aW1pemVQcm94eVdp
bjogIjw8bWF4aW1pemVQcm94eVdpbjsKKworICAgICAgICB4MmdvRGVidWc8PCJNYXhpbWl6ZSBw
cm94eSB3aW46ICI8PG1heGltaXplUHJveHlXaW47CisKICNlbmRpZgogICAgIH0KICAgICBpZiAo
ICEgZnVsbHNjcmVlbiApCkBAIC0zODQzLDcgKzM5MDMsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6
c3RhcnROZXdTZXNzaW9uKCkKICAgICAgICAgICAgICBzaGFkb3dVc2VyKyJYU0hBRCIrc2hhZG93
RGlzcGxheTsKICAgICB9CiAgICAgcmVzdW1pbmdTZXNzaW9uLmZ1bGxzY3JlZW49ZnVsbHNjcmVl
bjsKLSAgICB4MmdvRGVidWc8PGNtZDw8ZW5kbDsKKworICAgIHgyZ29EZWJ1Zzw8IkV4ZWN1dGlu
ZyByZW1vdGUgY29tbWFuZDogIjw8Y21kOworCiAgICAgaWYgKCBtYW5hZ2VkTW9kZSApCiAgICAg
ewogICAgICAgICBzbG90UmV0UmVzdW1lU2VzcyAoIHRydWUsY29uZmlnLnNlc3Npb25kYXRhLDAg
KTsKQEAgLTQwMDcsNyArNDA2OSw4IEBAIHZvaWQgT05NYWluV2luZG93OjpyZXN1bWVTZXNzaW9u
ICggY29uc3QgeDJnb1Nlc3Npb24mIHMgKQogI2lmZGVmIFFfT1NfV0lOCiAvLyAgICAgICAgZnVs
bHNjcmVlbj1mYWxzZTsKICAgICAgICAgbWF4aW1pemVQcm94eVdpbj10cnVlOwotICAgICAgICB4
MmdvRGVidWc8PCJtYXhpbWl6ZVByb3h5V2luOiAiPDxtYXhpbWl6ZVByb3h5V2luOworCisgICAg
ICAgIHgyZ29EZWJ1Zzw8Ik1heGltaXplIHByb3h5IHdpbjogIjw8bWF4aW1pemVQcm94eVdpbjsK
IAogI2VuZGlmCiAgICAgfQpAQCAtNDA5OCwxMCArNDE2MSwxMCBAQCB2b2lkIE9OTWFpbldpbmRv
dzo6c2VsZWN0U2Vzc2lvbiAoIFFTdHJpbmdMaXN0JiBzZXNzaW9ucyApCiAgICAgc2V0RW5hYmxl
ZCAoIHRydWUgKTsKICAgICBzZXNzaW9uU3RhdHVzRGxnLT5oaWRlKCk7CiAgICAgcGFzc0Zvcm0t
PmhpZGUoKTsKLS8vIAl4MmdvRGVidWc8PCJjaGVjayB0eXBlIjsKKwogICAgIGlmICggIXNoYWRv
d1Nlc3Npb24gKQogICAgIHsKLS8vIAkJeDJnb0RlYnVnPDwiISBzaGFkb3ciOworICAgICAgICB4
MmdvRGVidWc8PCJObyBzaGFkb3cgc2Vzc2lvbi4iOwogICAgICAgICBpZiAoICFtaW5pTW9kZSAp
CiAgICAgICAgICAgICBzZWxlY3RTZXNEbGdMYXlvdXQtPnNldENvbnRlbnRzTWFyZ2lucyAoIDI1
LDI1LDEwLDEwICk7CiAKQEAgLTQxMTAsMTMgKzQxNzMsMTMgQEAgdm9pZCBPTk1haW5XaW5kb3c6
OnNlbGVjdFNlc3Npb24gKCBRU3RyaW5nTGlzdCYgc2Vzc2lvbnMgKQogICAgICAgICBiVGVybS0+
c2hvdygpOwogICAgICAgICBzT2stPnNob3coKTsKICAgICAgICAgc0NhbmNlbC0+c2hvdygpOwot
Ly8gCQl4MmdvRGVidWc8PCJzdGFuZGFydCBidXR0b25zIG9rIjsKKwogICAgICAgICBkZXNrdG9w
RmlsdGVyLT5oaWRlKCk7CiAgICAgICAgIGRlc2t0b3BGaWx0ZXJDYi0+aGlkZSgpOwogICAgICAg
ICBiU2hhZG93LT5oaWRlKCk7CiAgICAgICAgIGJTaGFkb3dWaWV3LT5oaWRlKCk7CiAgICAgICAg
IGJDYW5jZWwtPmhpZGUoKTsKLS8vIAkJeDJnb0RlYnVnPDwic2hhZG93IGJ1dHRvbnMgb2siOwor
CiAvLyAJCW1vZGVsLT5jbGVhcigpOwogICAgICAgICBtb2RlbC0+cmVtb3ZlUm93cyAoIDAsbW9k
ZWwtPnJvd0NvdW50KCkgKTsKICAgICAgICAgc2VsZWN0U2Vzc2lvbkxhYmVsLT5zZXRUZXh0ICgg
dHIgKCAiU2VsZWN0IHNlc3Npb246IiApICk7CkBAIC00MTI0LDEwICs0MTg3LDkgQEAgdm9pZCBP
Tk1haW5XaW5kb3c6OnNlbGVjdFNlc3Npb24gKCBRU3RyaW5nTGlzdCYgc2Vzc2lvbnMgKQogICAg
ICAgICBRRm9udE1ldHJpY3MgZm0gKCBzZXNzVHYtPmZvbnQoKSApOwogICAgICAgICBmb3IgKCBp
bnQgcm93ID0gMDsgcm93IDwgc2Vzc2lvbnMuc2l6ZSgpOyArK3JvdyApCiAgICAgICAgIHsKLQot
Ly8gCQkJeDJnb0RlYnVnPDwiZGVjb2Rpbmcgc2Vzc2lvbnN0cjoiPDxzZXNzaW9uc1tyb3ddOwor
ICAgICAgICAgICAgeDJnb0RlYnVnPDwiRGVjb2RpbmcgU2Vzc2lvbnN0cmluZzoiICsgc2Vzc2lv
bnNbcm93XTsKICAgICAgICAgICAgIHgyZ29TZXNzaW9uIHM9Z2V0U2Vzc2lvbkZyb21TdHJpbmcg
KCBzZXNzaW9uc1tyb3ddICk7Ci0vLyAJCQl4MmdvRGVidWc8PCJsaXN0aW5nIGlkOiI8PHMuc2Vz
c2lvbklkOworCiAgICAgICAgICAgICBzZWxlY3RlZFNlc3Npb25zLmFwcGVuZCAoIHMgKTsKICAg
ICAgICAgICAgIFFTdGFuZGFyZEl0ZW0gKml0ZW07CiAKQEAgLTQ0MTIsMTMgKzQ0NzQsMTggQEAg
dm9pZCBPTk1haW5XaW5kb3c6OnNsb3RUZXJtU2Vzc0Zyb21TdCgpCiAjaWZkZWYgUV9PU19MSU5V
WAogICAgIGlmIChkaXJlY3RSRFApCiAgICAgewotICAgICAgICB4MmdvRGVidWc8PCJ0ZXJtaW5h
dGluZyBkaXJlY3QgUkRQIHNlc3Npb24iOworCisgICAgICAgIHgyZ29EZWJ1Zzw8IlRlcm1pbmF0
aW5nIGRpcmVjdCBSRFAgc2Vzc2lvbi4iOworCiAgICAgICAgIG54cHJveHktPnRlcm1pbmF0ZSgp
OwogICAgICAgICBwcm94eVJ1bm5pbmc9ZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAj
ZW5kaWYKLSAgICAvKgl4MmdvRGVidWcgPDwiZGlzY29ubmVjdCBleHBvcnQiPDxlbmRsOworCisg
ICAgeDJnb0RlYnVnPDwiRGlzY29ubmVjdCBleHBvcnQuIjsKKworICAgIC8qCiAgICAgCWRpc2Nv
bm5lY3QgKCBzYkV4cCxTSUdOQUwgKCBjbGlja2VkKCkgKSx0aGlzLAogICAgIAkgICAgICAgICAg
ICAgU0xPVCAoIHNsb3RfZXhwb3J0RGlyZWN0b3J5KCkgKSApOyovCiAgICAgc2JFeHAtPnNldEVu
YWJsZWQgKCBmYWxzZSApOwpAQCAtNDU2MCw3ICs0NjI3LDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6
OnNsb3RSZXRSZXN1bWVTZXNzICggYm9vbCByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBRU3RyaW5nIG91dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCApCiB7Ci0gICAgeDJnb0RlYnVnPDwiQWdlbnQgb3V0cHV0OiI8
PG91dHB1dDsKKworICAgIHgyZ29EZWJ1Zzw8IkFnZW50IG91dHB1dDogIjw8b3V0cHV0OworCiAg
ICAgaWYgKCByZXN1bHQ9PWZhbHNlICkKICAgICB7CiAgICAgICAgIFFTdHJpbmcgbWVzc2FnZT10
ciAoICI8Yj5Db25uZWN0aW9uIGZhaWxlZDwvYj5cbiIgKSArb3V0cHV0OwpAQCAtNDcxNiwxNyAr
NDc4NSwyMyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdFJldFJlc3VtZVNlc3MgKCBib29sIHJl
c3VsdCwKICAgICAgICAgICAgIGlmIChsaW5lLmluZGV4T2YoImdyX3BvcnQ9IikhPS0xKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIHJlc3VtaW5nU2Vzc2lvbi5nclBvcnQ9bGluZS5y
ZXBsYWNlKCJncl9wb3J0PSIsIiIpOwotICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8Im5ldyBn
cl9wb3J0OiAiPDxyZXN1bWluZ1Nlc3Npb24uZ3JQb3J0PDxlbmRsOworCisgICAgICAgICAgICAg
ICAgeDJnb0RlYnVnPDwiTmV3IGdyX3BvcnQ6ICI8PHJlc3VtaW5nU2Vzc2lvbi5nclBvcnQ7CisK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChsaW5lLmluZGV4T2YoInNvdW5kX3BvcnQ9
IikhPS0xKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJlc3VtaW5nU2Vzc2lvbi5z
bmRQb3J0PWxpbmUucmVwbGFjZSgic291bmRfcG9ydD0iLCIiKTsKLSAgICAgICAgICAgICAgICB4
MmdvRGVidWc8PCJuZXcgc291bmRfcG9ydDogIjw8cmVzdW1pbmdTZXNzaW9uLnNuZFBvcnQ8PGVu
ZGw7CisKKyAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCJOZXcgc291bmRfcG9ydDogIjw8cmVz
dW1pbmdTZXNzaW9uLnNuZFBvcnQ7CisKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChs
aW5lLmluZGV4T2YoImZzX3BvcnQ9IikhPS0xKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIHJlc3VtaW5nU2Vzc2lvbi5mc1BvcnQ9bGluZS5yZXBsYWNlKCJmc19wb3J0PSIsIiIpOwot
ICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8Im5ldyBmc19wb3J0OiAiPDxyZXN1bWluZ1Nlc3Np
b24uZnNQb3J0PDxlbmRsOworCisgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwiTmV3IGZzX3Bv
cnQ6ICI8PHJlc3VtaW5nU2Vzc2lvbi5mc1BvcnQ7CisKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICBpZiAocmVzdW1pbmdTZXNzaW9uLnB1Ymxpc2hlZCkKQEAgLTQ4MjcsMTMgKzQ5
MDIsMTMgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RSZXRSZXN1bWVTZXNzICggYm9vbCByZXN1
bHQsCiAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIGlmICggc3lzUHVsc2UgKQot
CisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgc3NoQ29ubmVjdGlvbi0+Y29weUZpbGUo
CiAgICAgICAgICAgICAgICAgICAgICIvdmFyL3J1bi9wdWxzZS8ucHVsc2UtY29va2llIiwKICAg
ICAgICAgICAgICAgICAgICAgIn4vLngyZ28vQy0iKwogICAgICAgICAgICAgICAgICAgICByZXN1
bWluZ1Nlc3Npb24uc2Vzc2lvbklkKwogICAgICAgICAgICAgICAgICAgICAiLy5wdWxzZS1jb29r
aWUiLCB0aGlzLCBTTE9UICggc2xvdFBDb29raWVSZWFkeSAoIGJvb2wsIFFTdHJpbmcsaW50ICkp
KTsKLQorICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewogI2lm
bmRlZiBRX09TX1dJTgpAQCAtNDkzOCw3ICs1MDEzLDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNs
b3RUdW5uZWxPayhpbnQpCiAgICAgLy93YWl0aW5nIGZvciBYCiAgICAgaWYgKCAhd2luU2VydmVy
c1JlYWR5ICkKICAgICB7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8IndhaXRpbmcgZm9yIHdpbi1zZXJ2
ZXJzIjsKKworICAgICAgICB4MmdvRGVidWc8PCJXYWl0aW5nIGZvciB3aW4tc2VydmVycy4iOwor
CiAgICAgICAgIFFUaW1lcjo6c2luZ2xlU2hvdCAoIDEwMCwgdGhpcywgU0xPVCAoIHNsb3RUdW5u
ZWxPaygpICkgKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ5NTEsOSArNTAyOCwxMyBA
QCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdFR1bm5lbE9rKGludCkKICAgICBpZiAoICFkLmV4aXN0
cygpICkKICAgICAgICAgaWYgKCAhZC5ta3BhdGggKCBkaXJwYXRoICkgKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBRU3RyaW5nIG1lc3NhZ2U9dHIgKCAiVW5hYmxlIHRvIGNyZWF0ZSBmb2xkZXI6
IiApICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJwYXRoOwotICAgICAgICAgICAg
UU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGwsdHIgKCAiRXJyb3IiICksbWVzc2FnZSwKKyAgICAg
ICAgICAgIGlmIChzdGFydEhpZGRlbikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB4
MmdvRXJyb3JmKDYpPDwgdHIoICJVbmFibGUgdG8gY3JlYXRlIGZvbGRlcjogIikgICsgZGlycGF0
aDsKKyAgICAgICAgICAgICAgICB0cmF5UXVpdCgpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBRTWVzc2FnZUJveDo6Y3JpdGljYWwgKCAwbCx0ciAoICJFcnJvciIgKSwgdHIgKCAiVW5h
YmxlIHRvIGNyZWF0ZSBmb2xkZXI6ICIgKSArIGRpcnBhdGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBRTWVzc2FnZUJveDo6T2ssCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBRTWVzc2FnZUJveDo6Tm9CdXR0b24gKTsKICAgICAgICAgICAgIHNsb3RT
aG93UGFzc0Zvcm0oKTsKQEAgLTQ5NzcsOSArNTA1OCwxMyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6
c2xvdFR1bm5lbE9rKGludCkKICAgICBRRmlsZSBmaWxlICggZGlycGF0aCsiL29wdGlvbnMiICk7
CiAgICAgaWYgKCAhZmlsZS5vcGVuICggUUlPRGV2aWNlOjpXcml0ZU9ubHkgfCBRSU9EZXZpY2U6
OlRleHQgKSApCiAgICAgewotICAgICAgICBRU3RyaW5nIG1lc3NhZ2U9dHIgKCAiVW5hYmxlIHRv
IHdyaXRlIGZpbGU6IiApICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpcnBhdGgrIi9vcHRp
b25zIjsKLSAgICAgICAgUU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGwsdHIgKCAiRXJyb3IiICks
bWVzc2FnZSwKKyAgICAgICAgaWYgKHN0YXJ0SGlkZGVuKQorICAgICAgICB7CisgICAgICAgICAg
ICB4MmdvRXJyb3JmKDcpPDwgdHIoICJVbmFibGUgdG8gd3JpdGUgZmlsZTogIiApICsgZGlycGF0
aCArICIvb3B0aW9ucyI7CisgICAgICAgICAgICB0cmF5UXVpdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgUU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGwsdHIgKCAiRXJyb3IiICksIHRyKCAiVW5h
YmxlIHRvIHdyaXRlIGZpbGU6ICIgKSArIGRpcnBhdGggKyAiL29wdGlvbnMiLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBRTWVzc2FnZUJveDo6T2ssCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpOb0J1dHRvbiApOwogICAgICAgICBzbG90U2hv
d1Bhc3NGb3JtKCk7CkBAIC01MDEwLDYgKzUwOTUsNyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xv
dFR1bm5lbE9rKGludCkKICAgICBmb3IgKCBpbnQgbD0wOyBsPGVudi5zaXplKCk7ICsrbCApCiAg
ICAgewogLy8gCQl4MmdvRGVidWc8PGVudltsXTw8ZW5kbDsKKwogICAgICAgICBpZiAoIGVudlts
XS5pbmRleE9mICggIlgyR09fTElCIiApID09MCApCiAgICAgICAgIHsKICAgICAgICAgICAgIHgy
Z29saWJwYXRoPWVudltsXS5zcGxpdCAoICI9IiApIFsxXTsKQEAgLTUwMzksMTMgKzUxMjUsMTcg
QEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RUdW5uZWxPayhpbnQpCiAgICAgaWYgKCBkaXNwSW5k
PT0tMSApCiAgICAgewogICAgICAgICBlbnYgPDwiRElTUExBWT1sb2NhbGhvc3Q6IitkaXNwOwor
CiAgICAgICAgIC8qCQl4MmdvRGVidWc8PCJuZXcgZW52IERJU1BMQVkiPDwiRElTUExBWT1sb2Nh
bGhvc3Q6IitkaXNwPDxlbmRsOyovCisKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAg
ZW52W2Rpc3BJbmRdPSJESVNQTEFZPWxvY2FsaG9zdDoiK2Rpc3A7CisKICAgICAgICAgLyoJCXgy
Z29EZWJ1Zzw8ImV4aXN0aW5nIGVudiBESVNQTEFZKCI8PGRpc3BJbmQ8PAogICAgICAgICAJCSIp
IERJU1BMQVk9bG9jYWxob3N0OiIrZGlzcDw8ZW5kbDsqLworCiAgICAgfQogI2VuZGlmIC8vIFFf
T1NfV0lOCiAjaWYgZGVmaW5lZCAoIFFfT1NfREFSV0lOICkKQEAgLTUwNjIsMTcgKzUxNTIsMTQg
QEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RUdW5uZWxPayhpbnQpCiAgICAgfQogICAgIGlmIChk
aXNwSW5kID09IC0xKQogICAgIHsKLSAgICAgICAgeDJnb0RlYnVnIDw8ICJObyBESVNQTEFZIHZh
cmlhYmxlIGZvdW5kIGluIGdsb2JhbCBlbnZpcm9ubWVudCwgdXNpbmcgYXV0b2RldGVjdGVkIHNl
dHRpbmcuIjsKKworICAgICAgICB4MmdvRGVidWc8PCAiTm8gRElTUExBWSB2YXJpYWJsZSBmb3Vu
ZCBpbiBnbG9iYWwgZW52aXJvbm1lbnQsIHVzaW5nIGF1dG9kZXRlY3RlZCBzZXR0aW5nLiI7CisK
ICAgICAgICAgZW52LmFwcGVuZCAoIkRJU1BMQVk9IiArIGRpc3ApOwogICAgIH0KICNlbmRpZgog
ICAgIG54cHJveHktPnNldEVudmlyb25tZW50ICggZW52ICk7Ci0gICAgLyoJeDJnb0RlYnVnPDwi
bmV3IGVudjoiPDxlbmRsOwotICAgIAlmb3IgKCBpbnQgbD0wO2w8ZW52LnNpemUoKTsrK2wgKQot
ICAgIAl7Ci0gICAgCQl4MmdvRGVidWc8PGVudltsXTw8ZW5kbDsKLSAgICAJfQotICAgIAl4Mmdv
RGVidWc8PCIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyI8PGVuZGw7Ki8KKwogICAgIGNvbm5l
Y3QgKCBueHByb3h5LFNJR05BTCAoIGVycm9yICggUVByb2Nlc3M6OlByb2Nlc3NFcnJvciApICks
dGhpcywKICAgICAgICAgICAgICAgU0xPVCAoIHNsb3RQcm94eUVycm9yICggUVByb2Nlc3M6OlBy
b2Nlc3NFcnJvciApICkgKTsKICAgICBjb25uZWN0ICggbnhwcm94eSxTSUdOQUwgKCBmaW5pc2hl
ZCAoIGludCxRUHJvY2Vzczo6RXhpdFN0YXR1cyApICksdGhpcywKQEAgLTUwOTEsNyArNTE3OCw5
IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90VHVubmVsT2soaW50KQogICAgIGRpci5jZCAoICJl
eGUiICk7CiAgICAgcHJveHlDbWQ9IlwiIitkaXIuYWJzb2x1dGVQYXRoKCkgKyIvXCIiK3Byb3h5
Q21kOwogI2VuZGlmIC8vUV9PU19EQVJXSU4KLSAgICB4MmdvRGVidWc8PCJzdGFydGluZyBueHBy
b3h5IHdpdGg6ICI8PHByb3h5Q21kPDxlbmRsOworCisgICAgeDJnb0RlYnVnPDwiU3RhcnRpbmcg
TlggcHJveHksIGNvbW1hbmQ6ICIgKyBwcm94eUNtZDsKKwogICAgIG54cHJveHktPnN0YXJ0ICgg
cHJveHlDbWQgKTsKICAgICBwcm94eVJ1bm5pbmc9dHJ1ZTsKIC8vYWx3YXlzIHNlYXJjaCBmb3Ig
cHJveHlXaW4KQEAgLTUyMTIsNyArNTMwMSw4IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90UHJv
eHlGaW5pc2hlZCAoIGludCxRUHJvY2Vzczo6RXhpdFN0YXR1cyApCiAgICAgaWYgKCBzcG9vbFRp
bWVyICkKICAgICAgICAgZGVsZXRlIHNwb29sVGltZXI7CiAKLSAgICB4MmdvRGVidWc8PCJkZWxl
dGluZyBwcm94eSI8PGVuZGw7CisgICAgeDJnb0RlYnVnPDwiRGVsZXRpbmcgUHJveHkuIiA7CisK
ICAgICBkaXNjb25uZWN0ICggbnhwcm94eSxTSUdOQUwgKCBlcnJvciAoIFFQcm9jZXNzOjpQcm9j
ZXNzRXJyb3IgKSApLHRoaXMsCiAgICAgICAgICAgICAgICAgIFNMT1QgKCBzbG90UHJveHlFcnJv
ciAoIFFQcm9jZXNzOjpQcm9jZXNzRXJyb3IgKSApICk7CiAgICAgZGlzY29ubmVjdCAoIG54cHJv
eHksU0lHTkFMICggZmluaXNoZWQgKCBpbnQsUVByb2Nlc3M6OkV4aXRTdGF0dXMgKSApLHRoaXMs
CkBAIC01MjM3LDcgKzUzMjcsNyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdFByb3h5RmluaXNo
ZWQgKCBpbnQsUVByb2Nlc3M6OkV4aXRTdGF0dXMgKQogICAgIGlmKHByb3h5RXJyU3RyaW5nLmlu
ZGV4T2YoIk5vIGRhdGEgcmVjZWl2ZWQgZnJvbSByZW1vdGUgcHJveHkiKSE9LTEpCiAgICAgewog
ICAgICAgICBlbWVyZ2VuY3lFeGl0PXRydWU7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8IkVtZXJnZW5j
eSBleGl0Ijw8ZW5kbDsKKyAgICAgICAgeDJnb1dhcm5pbmdmKDQpPDwgdHIoICJFbWVyZ2VuY3kg
ZXhpdC4iICk7CiAgICAgfQogCiAjaWYgISAoZGVmaW5lZCAoQ0ZHUExVR0lOKSkKQEAgLTUyNDYs
MjEgKzUzMzYsMjIgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RQcm94eUZpbmlzaGVkICggaW50
LFFQcm9jZXNzOjpFeGl0U3RhdHVzICkKICAgICAgICAgaWYgKCBueHByb3h5LT5zdGF0ZSgpID09
UVByb2Nlc3M6OlJ1bm5pbmcgKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWVyZ2VuY3lFeGl0
PXRydWU7Ci0gICAgICAgICAgICB4MmdvRGVidWc8PCJ3YWl0aW5nIGZvciBwcm94eSB0byBleGl0
Ijw8ZW5kbDsKKyAgICAgICAgICAgIHgyZ29XYXJuaW5nZig1KTw8IHRyKCAiV2FpdGluZyBmb3Ig
cHJveHkgdG8gZXhpdC4iICk7CiAgICAgICAgICAgICBpZiAoICFueHByb3h5LT53YWl0Rm9yRmlu
aXNoZWQgKCAzMDAwICkgKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHgyZ29EZWJ1
Zzw8IkZhaWxlZCwgdHJ5IHRvIGtpbGwiPDxlbmRsOworICAgICAgICAgICAgICAgIHgyZ29XYXJu
aW5nZig2KTw8IHRyKCAiRmFpbGVkLCBraWxsaW5nIHRoZSBwcm94eS4iICk7CiAgICAgICAgICAg
ICAgICAgbnhwcm94eS0+a2lsbCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAg
IHgyZ29EZWJ1Zzw8Im54cHJveHkgbm90IHJ1bm5pbmciPDxlbmRsOworCiAjaWZkZWYgUV9PU19M
SU5VWAogICAgICAgICBpZiAoZGlyZWN0UkRQKQogICAgICAgICAgICAgbnhwcm94eT0wOwogI2Vu
ZGlmCiAgICAgfQogI2VuZGlmCi0gICAgeDJnb0RlYnVnPDwicHJveHkgZGVsZXRlZCI8PGVuZGw7
CisgICAgeDJnb0RlYnVnPDwiV2FpdGluZyBmb3IgcHJveHkgdG8gZXhpdC4iOworCiAgICAgc3Bv
b2xUaW1lcj0wbDsKICAgICB0dW5uZWw9c25kVHVubmVsPWZzVHVubmVsPTBsOwogICAgIHNvdW5k
U2VydmVyPTBsOwpAQCAtNTI3OSwxNCArNTM3MCwxNCBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xv
dFByb3h5RmluaXNoZWQgKCBpbnQsUVByb2Nlc3M6OkV4aXRTdGF0dXMgKQogICAgIGlmICggIWVt
ZXJnZW5jeUV4aXQgJiYgIXNoYWRvd1Nlc3Npb24gJiYgIXVzZVBHUENhcmQgJiYgISAoIGVtYmVk
TW9kZSAmJgogICAgICAgICAgICAgKCBjb25maWcuY2hlY2tleGl0c3RhdHVzPT1mYWxzZSApICkg
KQogICAgIHsKLSAgICAgICAgeDJnb0RlYnVnPDwiY2hlY2tpbmcgZXhpdCBzdGF0dXMiOworICAg
ICAgICB4MmdvRGVidWc8PCJDaGVja2luZyBleGl0IHN0YXR1cy4iOwogICAgICAgICBjaGVja19j
bWRfc3RhdHVzKCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8
ImRlbGV0aW5nIHNzaENvbm5lY3Rpb24gaW5zdGFuY2U6ICI8PGVuZGw7CisgICAgICAgIHgyZ29E
ZWJ1Zzw8IkRlbGV0aW5nIFNTSCBjb25uZWN0aW9uIGluc3RhbmNlLiI7CiAgICAgICAgIGRlbGV0
ZSBzc2hDb25uZWN0aW9uOwotICAgICAgICB4MmdvRGVidWc8PCJkb25lIjw8ZW5kbDsKKyAgICAg
ICAgeDJnb0RlYnVnPDwiRGVsZXRlZCAgU1NIIGNvbm5lY3Rpb24gaW5zdGFuY2UuIiA7CiAgICAg
ICAgIHNzaENvbm5lY3Rpb249MDsKICAgICB9CiAgICAgaWYgKCBzdGFydEhpZGRlbiApCkBAIC01
MzI0LDYgKzU0MTUsNyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdFByb3h5RmluaXNoZWQgKCBp
bnQsUVByb2Nlc3M6OkV4aXRTdGF0dXMgKQogICAgICAgICBzZXNzaW9uU3RhdHVzRGxnLT5oaWRl
KCk7CiAgICAgICAgIHJlc3VtZVNlc3Npb24gKCByZXN1bWluZ1Nlc3Npb24gKTsKICAgICB9Cisg
ICAgeDJnb0RlYnVnPDwiRmluaXNoZWQgUHJveHkuIjsKICAgICBzZXRTdGF0U3RhdHVzICggdHIg
KCAiRmluaXNoZWQiICkgKTsKIH0KIApAQCAtNTMzNCw3ICs1NDI2LDkgQEAgdm9pZCBPTk1haW5X
aW5kb3c6OnNsb3RQcm94eVN0ZGVycigpCiAgICAgaWYgKCBueHByb3h5ICkKICAgICAgICAgcmVz
ZXJyPSBueHByb3h5LT5yZWFkQWxsU3RhbmRhcmRFcnJvcigpOwogICAgIHByb3h5RXJyU3RyaW5n
Kz1yZXNlcnI7Ci0gICAgeDJnb0RlYnVnPDxyZXNlcnI8PGVuZGw7CisKKyAgICB4MmdvRGVidWc8
PCJQcm94eSB3cm90ZSBvbiBzdGRlcnI6ICI8PHJlc2VycjsKKwogICAgIHN0SW5mby0+aW5zZXJ0
UGxhaW5UZXh0ICggcmVzZXJyICk7CiAgICAgc3RJbmZvLT5lbnN1cmVDdXJzb3JWaXNpYmxlKCk7
CiAgICAgaWYgKCBzdEluZm8tPnRvUGxhaW5UZXh0KCkuaW5kZXhPZiAoCkBAIC01NDIxLDcgKzU1
MTUsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdFByb3h5U3RkZXJyKCkKICNpZiBkZWZpbmVk
KCBRX09TX1dJTiApICYmIGRlZmluZWQgKENGR1BMVUdJTikKICAgICBpZiAoIHJlc2Vyci5pbmRl
eE9mICggIlNlc3Npb24gdGVybWluYXRlZCBhdCIgKSAhPS0xICkKICAgICB7Ci0gICAgICAgIHgy
Z29EZWJ1Zzw8InByb3h5IGZpbmlzaGVkIjw8ZW5kbDsKKworICAgICAgICB4MmdvRGVidWc8PCJQ
cm94eSBmaW5pc2hlZC4iOworCiAgICAgICAgIHNsb3RQcm94eUZpbmlzaGVkICggMCwgUVByb2Nl
c3M6Ok5vcm1hbEV4aXQgKTsKICAgICB9CiAjZW5kaWYKQEAgLTU0MzMsOCArNTUyOSw4IEBAIHZv
aWQgT05NYWluV2luZG93OjpzbG90UHJveHlTdGRlcnIoKQogdm9pZCBPTk1haW5XaW5kb3c6OnNs
b3RQcm94eVN0ZG91dCgpCiB7CiAgICAgUVN0cmluZyByZXNvdXQgKCBueHByb3h5LT5yZWFkQWxs
U3RhbmRhcmRPdXRwdXQoKSApOwotICAgIHgyZ29EZWJ1Zzw8cmVzb3V0PDxlbmRsOwogCisgICAg
eDJnb0RlYnVnPDwiUHJveHkgd3JvdGUgb24gc3Rkb3V0OiAiPDxyZXNvdXQ7CiB9CiAKIApAQCAt
NTU4OCw3ICs1Njg0LDcgQEAgYm9vbCBPTk1haW5XaW5kb3c6OnRlcm1TZXNzaW9uICggUVN0cmlu
ZyBzZXNzSWQsIGJvb2wgd2FybiApCiAgICAgICAgIG54cHJveHktPnRlcm1pbmF0ZSgpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0KKyAgICB4MmdvRGVidWc8PCJUZXJtaW5hdGluZyBz
ZXNzaW9uLiI7CiAgICAgc3NoQ29ubmVjdGlvbi0+ZXhlY3V0ZUNvbW1hbmQgKCAieDJnb3Rlcm1p
bmF0ZS1zZXNzaW9uICIrc2Vzc0lkLCB0aGlzLCBTTE9UICggc2xvdFJldFRlcm1TZXNzICggYm9v
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcsaW50KSApICAp
OwogICAgIHByb3h5UnVubmluZz1mYWxzZTsKQEAgLTU5NzAsMTMgKzYwNjYsMTUgQEAgdm9pZCBP
Tk1haW5XaW5kb3c6OnNsb3RSZWFkQXBwbGljYXRpb25zKGJvb2wgcmVzdWx0LCBRU3RyaW5nIG91
dHB1dCwKICAgICAgICAgICAgIGlmIChsaW5lLmluZGV4T2YoIk5hbWVbIitsb2NhbHNob3J0KyJd
PSIpIT0tMSAgfHwgbGluZS5pbmRleE9mKCJOYW1lWyIrbG9jYWxsb25nKyJdPSIpIT0tMSkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBhcHAubmFtZT1RU3RyaW5nOjpmcm9tVXRmOChs
aW5lLnNwbGl0KCI9IilbMV0udG9Bc2NpaSgpKTsKLS8vICAgICAgICAgICAgICAgICB4MmdvRGVi
dWc8PCJsb2NhbCBuYW1lOiAiPDxhcHAubmFtZTw8ZW5kbDsKKworICAgICAgICAgICAgICAgIC8v
ICAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCJsb2NhbCBuYW1lOiAiPDxhcHAubmFtZTw8ZW5k
bDsKKwogICAgICAgICAgICAgICAgIGxvY2FsbmFtZT10cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKGxpbmUuaW5kZXhPZigiQ29tbWVudFsiK2xvY2Fsc2hvcnQrIl09IikhPS0x
IHx8IGxpbmUuaW5kZXhPZigiQ29tbWVudFsiK2xvY2FsbG9uZysiXT0iKSE9LTEpCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgYXBwLmNvbW1lbnQ9UVN0cmluZzo6ZnJvbVV0ZjgobGlu
ZS5zcGxpdCgiPSIpWzFdLnRvQXNjaWkoKSk7Ci0vLyAgICAgICAgICAgICAgICAgeDJnb0RlYnVn
PDwibG9jYWwgY29tbWVudDogIjw8YXBwLmNvbW1lbnQ8PGVuZGw7CisgICAgICAgICAgICAgICAg
Ly8gICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8ImxvY2FsIGNvbW1lbnQ6ICI8PGFwcC5jb21t
ZW50PDxlbmRsOwogICAgICAgICAgICAgICAgIGxvY2FsY29tbWVudD10cnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKGxpbmUuaW5kZXhPZigiTmFtZT0iKSE9LTEgJiYgIWxvY2Fs
bmFtZSkKQEAgLTU5ODQsMTIgKzYwODIsMTIgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RSZWFk
QXBwbGljYXRpb25zKGJvb2wgcmVzdWx0LCBRU3RyaW5nIG91dHB1dCwKICAgICAgICAgICAgICAg
ICBhcHAubmFtZT1saW5lLnNwbGl0KCI9IilbMV07CiAgICAgICAgICAgICAgICAgaWYgKGFwcC5u
YW1lPT1hdXRvc3RhcnRBcHApCiAgICAgICAgICAgICAgICAgICAgIHN0YXJ0QXBwRm91bmQ9dHJ1
ZTsKLS8vICAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCJuYW1lOiAiPDxhcHAubmFtZTw8ZW5k
bDsKKyAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwibmFtZTog
Ijw8YXBwLm5hbWU8PGVuZGw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobGluZS5p
bmRleE9mKCJDb21tZW50PSIpIT0tMSAmJiAhbG9jYWxjb21tZW50KQogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIGFwcC5jb21tZW50PWxpbmUuc3BsaXQoIj0iKVsxXTsKLS8vICAgICAg
ICAgICAgICAgICB4MmdvRGVidWc8PCJjb21tZW50OiAiPDxhcHAuY29tbWVudDw8ZW5kbDsKKyAg
ICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwiY29tbWVudDogIjw8
YXBwLmNvbW1lbnQ8PGVuZGw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobGluZS5p
bmRleE9mKCJFeGVjPSIpIT0tMSkKICAgICAgICAgICAgIHsKQEAgLTYwMDAsNyArNjA5OCw3IEBA
IHZvaWQgT05NYWluV2luZG93OjpzbG90UmVhZEFwcGxpY2F0aW9ucyhib29sIHJlc3VsdCwgUVN0
cmluZyBvdXRwdXQsCiAgICAgICAgICAgICAgICAgYXBwLmV4ZWMucmVwbGFjZSgiJXUiLCIiLFF0
OjpDYXNlSW5zZW5zaXRpdmUpOwogICAgICAgICAgICAgICAgIGlmIChhcHAuZXhlYz09YXV0b3N0
YXJ0QXBwKQogICAgICAgICAgICAgICAgICAgICBzdGFydEFwcEZvdW5kPXRydWU7Ci0vLyAgICAg
ICAgICAgICAgICAgeDJnb0RlYnVnPDwiZXhlYzogIjw8YXBwLmV4ZWM8PGVuZGw7CisgICAgICAg
ICAgICAgICAgLy8gICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8ImV4ZWM6ICI8PGFwcC5leGVj
PDxlbmRsOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGxpbmUuaW5kZXhPZigiQ2F0
ZWdvcmllcz0iKSE9LTEpCiAgICAgICAgICAgICB7CkBAIC02MDY3LDEwICs2MTY1LDEzIEBAIHZv
aWQgT05NYWluV2luZG93OjpzbG90UmVhZEFwcGxpY2F0aW9ucyhib29sIHJlc3VsdCwgUVN0cmlu
ZyBvdXRwdXQsCiAgICAgcGx1Z0FwcHNJblRyYXkoKTsKICAgICBpZiAocnVuU3RhcnRBcHAgJiYg
YXV0b3N0YXJ0QXBwLmxlbmd0aCgpPjEpCiAgICAgewotICAgICAgICBpZiAoIXN0YXJ0QXBwRm91
bmQpCi0gICAgICAgICAgICB4MmdvRGVidWc8PCJBdXRvc3RhcnQgYXBwbGljYXRpb24gIjw8YXV0
b3N0YXJ0QXBwPDwgIiBub3QgZm91bmQgaW4gRGVza3RvcCBmaWxlcyI8PGVuZGw7CisgICAgICAg
IGlmICghc3RhcnRBcHBGb3VuZCkgeworICAgICAgICAgICAgeDJnb0RlYnVnPDwiQXV0b3N0YXJ0
IGFwcGxpY2F0aW9uICI8PGF1dG9zdGFydEFwcDw8ICIgbm90IGZvdW5kIGluIERlc2t0b3AgZmls
ZXMuIjsKKyAgICAgICAgfQogICAgICAgICBlbHNlCisgICAgICAgIHsKICAgICAgICAgICAgIHJ1
bkFwcGxpY2F0aW9uKGF1dG9zdGFydEFwcCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTYw
ODksNiArNjE5MCwxMiBAQCBib29sIE9OTWFpbldpbmRvdzo6cGFyc2VQYXJhbWV0ZXIgKCBRU3Ry
aW5nIHBhcmFtICkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlmIChwYXJh
bSA9PSAiLS1kZWJ1ZyIpCisgICAgeworICAgICAgICBPTk1haW5XaW5kb3c6OmRlYnVnZ2luZyA9
IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIGlmICggcGFyYW0gPT0g
Ii0tcG9ydGFibGUiICkKICAgICB7CiAgICAgICAgIE9OTWFpbldpbmRvdzo6cG9ydGFibGU9dHJ1
ZTsKQEAgLTY0MDMsMTAgKzY1MTAsMTEgQEAgYm9vbCBPTk1haW5XaW5kb3c6OnBhcnNlUGFyYW1l
dGVyICggUVN0cmluZyBwYXJhbSApCiAgICAgICAgIGlmIChmaW5kIT0tMSAmJiBsaW5kICE9LTEp
CiAgICAgICAgIHsKICAgICAgICAgICAgIFFTdHJpbmcgbGFiZWw9dmFsdWUubWlkKGZpbmQrMSxs
aW5kLWZpbmQtMSk7Ci0gICAgICAgICAgICB4MmdvRGVidWc8PCAic2VhcmNoaW5nIGZvciBkcml2
ZSB3aXRoIGxhYmVsOiAiPDxsYWJlbDsKKyAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IlNlYXJjaGlu
ZyBmb3IgZHJpdmUgd2l0aCBsYWJlbDogIjw8bGFiZWw7CisKICAgICAgICAgICAgIFFTdHJpbmcg
ZHJpdmU9d2FwaUdldERyaXZlQnlMYWJlbChsYWJlbCk7CiAgICAgICAgICAgICB2YWx1ZS5yZXBs
YWNlKCIoIitsYWJlbCsiKSIsZHJpdmUpOwotICAgICAgICAgICAgeDJnb0RlYnVnPDwibmV3IHBh
dGg6ICI8PHZhbHVlOworICAgICAgICAgICAgeDJnb0RlYnVnPDwiTmV3IHBhdGg6ICI8PHZhbHVl
OwogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgaWYgKCEgZHIuZXhpc3RzKHZhbHVlKSkKQEAg
LTY2MjMsMTEgKzY3MzEsMTUgQEAgYm9vbCBPTk1haW5XaW5kb3c6OnBhY2tQYXJhbWV0ZXIgKCBR
U3RyaW5nIHZhbCApCiAKIHZvaWQgT05NYWluV2luZG93OjpwcmludEVycm9yICggUVN0cmluZyBw
YXJhbSApCiB7Ci0gICAgcUNyaXRpY2FsICggIiVzIiwgKCB0ciAoICJ3cm9uZyBwYXJhbWV0ZXI6
ICIgKSArcGFyYW0gKS4KLSAgICAgICAgICAgICAgICB0b0xvY2FsOEJpdCgpLmRhdGEoKSApOwot
I2lmZGVmIFFfT1NfV0lOCi0gICAgeDJnb0RlYnVnPDx0ciAoICJ3cm9uZyBwYXJhbWV0ZXI6ICIg
KSArcGFyYW0gPDxlbmRsOwotI2VuZGlmCisgICAgaWYoICFzdGFydEhpZGRlbiApCisgICAgewor
ICAgICAgICBxQ3JpdGljYWwgKCAiJXMiLCAoIHRyICggIldyb25nIHBhcmFtZXRlcjogIiApICtw
YXJhbSApLgorICAgICAgICAgICAgICAgICAgICB0b0xvY2FsOEJpdCgpLmRhdGEoKSApOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICB4MmdvRXJyb3JmKDgpPDx0cigiV3JvbmcgcGFy
YW1ldGVyOiAiKTw8cGFyYW07CisgICAgfQogfQogCiB2b2lkIE9OTWFpbldpbmRvdzo6c2hvd0hl
bHAoKQpAQCAtNjYzNyw2ICs2NzQ5LDcgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNob3dIZWxwKCkK
ICAgICAgICAgIk9wdGlvbnM6XG4iCiAgICAgICAgICItLWhlbHBcdFx0XHRcdCBzaG93IHRoaXMg
bWVzc2FnZVxuIgogICAgICAgICAiLS1oZWxwLXBhY2tcdFx0XHQgc2hvdyBhdmFpbGFibGUgcGFj
ayBtZXRob2RzXG4iCisgICAgICAgICItLWRlYnVnXHRcdFx0XHQgZW5hYmxlcyBleHRlbnNpdmUg
b3V0cHV0IGZvciBjb25zb2xlIG91dHB1dC5cbiIKICAgICAgICAgIi0tbm8tbWVudVx0XHRcdCBo
aWRlIG1lbnUgYmFyXG4iCiAgICAgICAgICItLW5vLXNlc3Npb24tZWRpdFx0XHQgbm90IGFsbG93
IHVzZXIgdG8gZWRpdCBwcmVjb25maWd1cmVkXG4iCiAgICAgICAgICJcdFx0XHRcdCBzZXNzaW9u
c1xuIgpAQCAtNjY2MSw3ICs2Nzc0LDcgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNob3dIZWxwKCkK
ICAgICAgICAgIi0tY29tbWFuZD08Y21kPlx0XHRcdCBTZXQgZGVmYXVsdCBjb21tYW5kLCBkZWZh
dWx0IHZhbHVlICdLREUnXG4iCiAgICAgICAgICItLXNlc3Npb249PHNlc3Npb24+XHRcdCBTdGFy
dCBzZXNzaW9uICdzZXNzaW9uJ1xuIgogICAgICAgICAiLS11c2VyPTx1c2VybmFtZT5cdFx0IHNl
bGVjdCB1c2VyICd1c2VybmFtZSdcbiIKLSAgICAgICAgIi0tZ2VvbWVydHk9PFc+eDxIPnxmdWxs
c2NyZWVuXHQgc2V0IGRlZmF1bHQgZ2VvbWV0cnksIGRlZmF1bHQgIgorICAgICAgICAiLS1nZW9t
ZXRyeT08Vz54PEg+fGZ1bGxzY3JlZW5cdCBzZXQgZGVmYXVsdCBnZW9tZXRyeSwgZGVmYXVsdCAi
CiAgICAgICAgICJ2YWx1ZSAnODAweDYwMCdcbiIKICAgICAgICAgIi0tZHBpPTxkcGk+XHRcdFx0
IHNldCBkcGkgb2YgeDJnb2FnZW50IHRvIGRwaSwgZGVmYXVsdCBub3Qgc2V0XG4iCiAgICAgICAg
ICItLWxpbms9PG1vZGVtfGlzZG58YWRzbHx3YW58bGFuPiBzZXQgZGVmYXVsdCBsaW5rIHR5cGUs
ICIKQEAgLTY2NzcsNyArNjc5MCwxMCBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2hvd0hlbHAoKQog
ICAgICAgICAiYXBwbGljYXRpb25zXCIgbW9kZVxuIgogICAgICAgICAiLS1zZXNzaW9uLWNvbmY9
PGZpbGU+XHRcdCBwYXRoIHRvIGFsdGVybmF0aXZlIHNlc3Npb24gY29uZmlnXG4iOwogICAgIHFD
cml0aWNhbCAoICIlcyIsaGVscE1zZy50b0xvY2FsOEJpdCgpLmRhdGEoKSApOwotICAgIFFNZXNz
YWdlQm94OjppbmZvcm1hdGlvbiAoIHRoaXMsdHIgKCAiT3B0aW9ucyIgKSxoZWxwTXNnICk7Cisg
ICAgaWYgKCFzdGFydEhpZGRlbikKKyAgICB7CisgICAgICAgIFFNZXNzYWdlQm94OjppbmZvcm1h
dGlvbiAoIHRoaXMsdHIgKCAiT3B0aW9ucyIgKSxoZWxwTXNnICk7CisgICAgfQogfQogCiB2b2lk
IE9OTWFpbldpbmRvdzo6c2hvd0hlbHBQYWNrKCkKQEAgLTY3NDksMTAgKzY4NjUsMTIgQEAgdm9p
ZCBPTk1haW5XaW5kb3c6OnNsb3RHZXRTZXJ2ZXJzICggYm9vbCByZXN1bHQsIFFTdHJpbmcgb3V0
cHV0LAogICAgICAgICAgICAgICAgICAgICB4MmdvU2VydmVyc1tqXS5zZXNzPQogICAgICAgICAg
ICAgICAgICAgICAgICAgbHN0WzFdLnRvSW50KCkgKgogICAgICAgICAgICAgICAgICAgICAgICAg
eDJnb1NlcnZlcnNbal0uZmFjdG9yOworCiAgICAgICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8
eDJnb1NlcnZlcnNbal0ubmFtZTw8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6IHNl
c3Npb25zICI8PAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3RbMV0udG9JbnQoKSA8
PAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBtdWx0aXBsaWVkICI8PHgyZ29TZXJ2
ZXJzW2pdLnNlc3M7CisKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC02ODI2LDIyICs2OTQ0LDI2IEBAIHZvaWQgT05NYWluV2luZG93
OjpzbG90TGlzdEFsbFNlc3Npb25zICggYm9vbCByZXN1bHQsUVN0cmluZyBvdXRwdXQsCiAgICAg
ICAgICAgICAgICAgKCBsaXN0ZWRTZXNzaW9ucy5zaXplKCkgPT0xICYmCiAgICAgICAgICAgICAg
ICAgICBsaXN0ZWRTZXNzaW9uc1swXS5sZW5ndGgoKSA8NSApICkKICAgICAgICAgewotLy8gCXgy
Z29EZWJ1Zzw8InN0YXJ0IE5ldyBTZXNzaW9uIjsKKyAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IlN0
YXJ0IG5ldyBzZXNzaW9uLiI7CiAgICAgICAgICAgICBzdGFydE5ld1Nlc3Npb24oKTsKICAgICAg
ICAgfQogICAgICAgICBlbHNlIGlmICggbGlzdGVkU2Vzc2lvbnMuc2l6ZSgpID09MSApCiAgICAg
ICAgIHsKLS8vIAl4MmdvRGVidWc8PCJoYXZlIG9uZSBzZXNzaW9uIjsKKyAgICAgICAgICAgIHgy
Z29EZWJ1Zzw8IkFscmVhZHkgaGF2aW5nIGEgc2Vzc2lvbi4iOwogICAgICAgICAgICAgeDJnb1Nl
c3Npb24gcz1nZXRTZXNzaW9uRnJvbVN0cmluZyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaXN0ZWRTZXNzaW9uc1swXSApOwotLy8gCQl4MmdvRGVidWc8PCJ3aWxsIHByb2NjZWVk
IG9uZSBzZXNzaW9uIjsKKworICAgICAgICAgICAgeDJnb0RlYnVnPDwiV2lsbCBwcm9jY2VlZCB3
aXRoIHNlc3Npb24uIjsKKwogICAgICAgICAgICAgUURlc2t0b3BXaWRnZXQgd2Q7CiAgICAgICAg
ICAgICBpZiAoIHMuc3RhdHVzPT0iUyIgJiYgaXNDb2xvckRlcHRoT2sgKAogICAgICAgICAgICAg
ICAgICAgICAgICAgd2QuZGVwdGgoKSxzLmNvbG9yRGVwdGggKSApCisgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgcmVzdW1lU2Vzc2lvbiAoIHMgKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLS8vIAkJCQl4MmdvRGVidWc8PCJzZWxlY3Qgb25l
IFNlc3Npb24iOworICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IlBsZWFzZSBzZWxlY3Qgb25l
IHNlc3Npb24uLi4iOwogICAgICAgICAgICAgICAgIHNlbGVjdFNlc3Npb24gKCBsaXN0ZWRTZXNz
aW9ucyApOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC02OTI2LDcgKzcwNDgsOCBAQCB2
b2lkIE9OTWFpbldpbmRvdzo6ZXhwb3J0RGlycyAoIFFTdHJpbmcgZXhwb3J0cyxib29sIHJlbW92
YWJsZSApCiAgICAgZHIuZGlyTGlzdD1leHBvcnRzOwogICAgIGRyLmtleT1jcmVhdGVSU0FLZXko
KTsKICAgICBRU3RyaW5nIHBhc3N3ZDsKLSAgICB4MmdvRGVidWc8PCJrZXkgY3JlYXRlZCBvbjog
Ijw8ZHIua2V5OworCisgICAgeDJnb0RlYnVnPDwiS2V5IGNyZWF0ZWQgb246ICI8PGRyLmtleTsK
IAogICAgIHBhc3N3ZD1nZXRDdXJyZW50UGFzcygpOwogCkBAIC03MDkzLDE1ICs3MjE2LDE3IEBA
IFFTdHJpbmcgT05NYWluV2luZG93OjpjcmVhdGVSU0FLZXkoKQogCiAgICAgUVN0cmluZ0xpc3Qg
YXJnczsKIAotICAgIGFyZ3M8PCItdCI8PCJyc2EiPDwiLWIiPDwiMTAyNCI8PCItTiI8PCIiPDwi
LWYiPDxrZXlOYW1lOwotLy8gCXgyZ29EZWJ1ZyA8PGtleU5hbWU8PGVuZGw7CisgICAgYXJnczw8
Ii10Ijw8InJzYSI8PCItYiI8PCIxMDI0Ijw8Ii1OIjw8IiI8PCItZiI8PGtleU5hbWU8PCItcSI7
CisKKyAgICB4MmdvRGVidWc8PCJzc2gta2V5Z2VuICIgKyBhcmdzLmpvaW4oIiAiKTsKIAogICAg
IGlmICggUVByb2Nlc3M6OmV4ZWN1dGUgKCAic3NoLWtleWdlbiIsYXJncyApICE9MCApCiAgICAg
ewotICAgICAgICB4MmdvRGVidWcgPDwic3NoLWtleWdlbiBmYWlsZWQiIDw8ZW5kbDsKKyAgICAg
ICAgeDJnb0RlYnVnPDwic3NoLWtleWdlbiBmYWlsZWQuIiA8PGVuZGw7CiAgICAgICAgIHJldHVy
biBRU3RyaW5nOjpudWxsOwogICAgIH0KLS8vIAl4MmdvRGVidWcgPDwic3NoLWtleWdlbiBvayIg
PDxlbmRsOworICAgIHgyZ29EZWJ1Zzw8InNzaC1rZXlnZW4gc3VjY2VlZGVkLiI7CisKIAogICAg
IFFGaWxlIHJzYSAoICIvZXRjL3NzaC9zc2hfaG9zdF9yc2Ffa2V5LnB1YiIgKTsKICNpZmRlZiBR
X09TX1dJTgpAQCAtNzEzNyw3ICs3MjYyLDcgQEAgUVN0cmluZyBPTk1haW5XaW5kb3c6OmNyZWF0
ZVJTQUtleSgpCiAgICAgICAgIHJzYV9wdWIgPSByc2EucmVhZExpbmUoKTsKICAgICBlbHNlCiAg
ICAgewotICAgICAgICB4MmdvRGVidWc8PCJlcnJvcjogcnNhIGZpbGUgZW1wdHkiOworICAgICAg
ICB4MmdvRXJyb3JmKDkpPDx0cigiUlNBIGZpbGUgZW1wdHkuIik7CiAgICAgICAgIHJldHVybiBR
U3RyaW5nOjpudWxsOwogICAgIH0KIApAQCAtNzE0Niw3ICs3MjcxLDcgQEAgUVN0cmluZyBPTk1h
aW5XaW5kb3c6OmNyZWF0ZVJTQUtleSgpCiAgICAgICAgICAgICAgICAgUUlPRGV2aWNlOjpXcml0
ZU9ubHkgfCBRSU9EZXZpY2U6OlRleHQgfCBRSU9EZXZpY2U6OkFwcGVuZCApCiAgICAgICAgKQog
ICAgIHsKLSAgICAgICAgeDJnb0RlYnVnPDwiZXJyb3Igb3Blbm5pbmcga2V5OiI8PGtleU5hbWU7
CisgICAgICAgIHgyZ29FcnJvcmYoMTApPDx0cigiQ2FuIG5vdCBvcGVuIGtleTogIik8PGtleU5h
bWU7CiAgICAgICAgIHJldHVybiBrZXlOYW1lOwogICAgIH0KICAgICBRVGV4dFN0cmVhbSBvdXQg
KCAmZmlsZSApOwpAQCAtNzE1OCw5ICs3MjgzLDEyIEBAIFFTdHJpbmcgT05NYWluV2luZG93Ojpj
cmVhdGVSU0FLZXkoKQogdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RDb3B5S2V5ICggYm9vbCByZXN1
bHQsIFFTdHJpbmcgb3V0cHV0LCBpbnQgcGlkKQogewogICAgIGZzRXhwb3J0S2V5PXNzaENvbm5l
Y3Rpb24tPmdldFNvdXJjZUZpbGUocGlkKTsKLSAgICB4MmdvRGVidWc8PCJleHBvcnRlZCBrZXkg
Ijw8ZnNFeHBvcnRLZXk7CisKKyAgICB4MmdvRGVidWc8PCJFeHBvcnRlZCBrZXk6ICI8PGZzRXhw
b3J0S2V5OworCiAgICAgUUZpbGU6OnJlbW92ZSAoIGZzRXhwb3J0S2V5ICk7Ci0gICAgeDJnb0Rl
YnVnPDwia2V5IHJlbW92ZWQiOworICAgIHgyZ29EZWJ1Zzw8IktleSByZW1vdmVkLiI7CisKICAg
ICBpZiAoIHJlc3VsdD09ZmFsc2UgKQogICAgIHsKICAgICAgICAgUVN0cmluZyBtZXNzYWdlPXRy
ICggIjxiPkNvbm5lY3Rpb24gZmFpbGVkPC9iPlxuIiApICtvdXRwdXQ7CkBAIC03MTcwLDkgKzcy
OTgsMjMgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RDb3B5S2V5ICggYm9vbCByZXN1bHQsIFFT
dHJpbmcgb3V0cHV0LCBpbnQgcGlkKQogICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOwogICAg
ICAgICB9CiAKLSAgICAgICAgUU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGwsdHIgKCAiRXJyb3Ii
ICksbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1lc3NhZ2VCb3g6
Ok9rLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWVzc2FnZUJveDo6Tm9CdXR0
b24gKTsKKyAgICAgICAgaWYgKCFzdGFydEhpZGRlbikKKyAgICAgICAgeworICAgICAgICAgICAg
UU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGwsdHIgKCAiRXJyb3IiICksbWVzc2FnZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpPaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpOb0J1dHRvbiApOworICAg
ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgUVN0cmluZyBwcmlu
dG91dCA9IHRyKCAiQ29ubmVjdGlvbiBmYWlsZWQ6ICIpICArIG91dHB1dC50b0FzY2lpKCk7CisK
KyAgICAgICAgICAgIGlmICggb3V0cHV0LmluZGV4T2YgKCAicHVibGlja2V5LHBhc3N3b3JkIiAp
ICE9LTEgKQorICAgICAgICAgICAgICAgIHgyZ29FcnJvcmYoMTEpPDwgdHIoICJDb25uZWN0aW9u
IGZhaWxlZDogIikgICsgb3V0cHV0ICsgdHIoIiAtIFdyb25nIHBhc3N3b3JkLiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHgyZ29FcnJvcmYoMTIpPDwgdHIoICJDb25uZWN0
aW9uIGZhaWxlZDogIikgICsgb3V0cHV0OworICAgICAgICAgICAgdHJheVF1aXQoKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIFFGaWxlOjpyZW1vdmUgKCBmc0V4cG9ydEtleSsiLnB1YiIgKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcyNDAsNyArNzM4Miw5IEBAIHZvaWQgT05NYWluV2lu
ZG93OjpzbG90UmV0RXhwb3J0RGlyICggYm9vbCByZXN1bHQsUVN0cmluZyBvdXRwdXQsCiAjaWZk
ZWYgUV9PU19XSU4KICAgICBRRGlyIGRpcjsKICAgICBkaXIubWtwYXRoICggYXV0aG9mbmFtZSsi
XFwueDJnb1xcLnNzaCIgKTsKLSAgICB4MmdvRGVidWc8PCJDcmVhdGluZyAiPDxhdXRob2ZuYW1l
KyJcXC54MmdvXFwuc3NoIjw8ZW5kbDsKKworICAgIHgyZ29EZWJ1Zzw8IkNyZWF0aW5nICI8PGF1
dGhvZm5hbWUrIlxcLngyZ29cXC5zc2giOworCiAgICAgYXV0aG9mbmFtZT13YXBpU2hvcnRGaWxl
TmFtZSAoIGF1dGhvZm5hbWUgKSArIi8ueDJnbyI7CiAjZW5kaWYKICAgICBhdXRob2ZuYW1lKz0i
Ly5zc2gvYXV0aG9yaXplZF9rZXlzIiA7CkBAIC03Mjk2LDEzICs3NDQwLDE1IEBAIHZvaWQgT05N
YWluV2luZG93OjpzbG90RXh0VGltZXIoKQogICAgICAgICAgICAgKCBRRmlsZTo6UmVhZFVzZXJ8
UUZpbGU6OldyaXRlVXNlcnxRRmlsZTo6RXhlVXNlcnwKICAgICAgICAgICAgICAgUUZpbGU6OlJl
YWRPd25lcnxRRmlsZTo6V3JpdGVPd25lcnxRRmlsZTo6RXhlT3duZXIgKSApCiAgICAgewotICAg
ICAgICB4MmdvRGVidWcgPDwiV3JvbmcgcGVybWlzc2lvbnMgb24gIjw8cmVhZExvZ2luc0Zyb20g
PDwiOiI8PGVuZGw7Ci0gICAgICAgIHgyZ29EZWJ1ZyA8PCAoIGludCApICggUUZpbGU6OnBlcm1p
c3Npb25zICgKKworICAgICAgICB4MmdvRGVidWc8PCJXcm9uZyBwZXJtaXNzaW9ucyBvbiAiPDxy
ZWFkTG9naW5zRnJvbSA8PCI6IjsKKyAgICAgICAgeDJnb0RlYnVnPDwgKCBpbnQgKSAoIFFGaWxl
OjpwZXJtaXNzaW9ucyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRM
b2dpbnNGcm9tKyIvLiIgKSApCiAgICAgICAgICAgICAgICAgICA8PCJtdXN0IGJlIjw8ICggaW50
ICkgKCBRRmlsZTo6UmVhZFVzZXJ8UUZpbGU6OldyaXRlVXNlcgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfFFGaWxlOjpFeGVVc2VyfFFGaWxlOjpSZWFkT3duZXJ8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRRmlsZTo6V3JpdGVP
d25lcnwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFGaWxlOjpF
eGVPd25lciApIDw8ZW5kbDsKKwogICAgICAgICBpZiAoIGV4dExvZ2luICkKICAgICAgICAgICAg
IGV4dFRpbWVyLT5zdG9wKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTczMzIsOSArNzQ3OCw5IEBA
IHZvaWQgT05NYWluV2luZG93OjpzbG90RXh0VGltZXIoKQogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBpZiAoIGFyZ3NbMF09PSJsb2dvdXQiICkKICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIHgyZ29EZWJ1ZyA8PAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiBJIEhBVkUgZXh0ZXJuYWwgbG9nb3V0Ijw8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbmRsOworCisgICAgICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IkV4dGVy
bmFsIGxvZ291dC4iOworCiAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMV0ucmVwbGFjZSAoICJc
biIsIiIgKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCBhcmdzWzFdLnNpemUoKSApCiAgICAg
ICAgICAgICAgICAgICAgICAgICBsb2dvdXREaXI9YXJnc1sxXTsKQEAgLTczNDgsNyArNzQ5NCw3
IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90RXh0VGltZXIoKQogICAgIHsKICAgICAgICAgaWYg
KCBsb2dvdXREaXIgIT0gUVN0cmluZzo6bnVsbCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHgy
Z29EZWJ1ZyA8PCJleHRlcm5hbCBsb2dvdXQiPDxlbmRsOworICAgICAgICAgICAgeDJnb0RlYnVn
PDwiRXh0ZXJuYWwgbG9nb3V0IHJlY2VpdmVkIjsKICAgICAgICAgICAgIGV4dGVybmFsTG9nb3V0
ICggbG9nb3V0RGlyICk7CiAgICAgICAgIH0KICAgICB9CkBAIC03MzU2LDcgKzc1MDIsNyBAQCB2
b2lkIE9OTWFpbldpbmRvdzo6c2xvdEV4dFRpbWVyKCkKICAgICB7CiAgICAgICAgIGlmICggbG9n
aW5EaXIgIT0gUVN0cmluZzo6bnVsbCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHgyZ29EZWJ1
ZyA8PCJleHRlcm5hbCBsb2dpbiI8PGVuZGw7CisgICAgICAgICAgICB4MmdvRGVidWc8PCJFeHRl
cm5hbCBsb2dpbi4iOwogICAgICAgICAgICAgZXh0ZXJuYWxMb2dpbiAoIGxvZ2luRGlyICk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC03MzcxLDkgKzc1MTcsMTAgQEAgdm9pZCBPTk1haW5XaW5kb3c6
OnNsb3RFeHBvcnRUaW1lcigpCiAgICAgICAgICAgICBRRmlsZTo6RXhlVXNlcnwKICAgICAgICAg
ICAgIFFGaWxlOjpSZWFkT3duZXJ8UUZpbGU6OldyaXRlT3duZXJ8UUZpbGU6OkV4ZU93bmVyICkg
KQogICAgIHsKLSAgICAgICAgeDJnb0RlYnVnIDw8Ildyb25nIHBlcm1pc3Npb25zIG9uICI8PAor
CisgICAgICAgIHgyZ29EZWJ1Zzw8Ildyb25nIHBlcm1pc3Npb25zIG9uICI8PAogICAgICAgICAg
ICAgICAgICAgcmVhZEV4cG9ydHNGcm9tIDw8IjoiPDxlbmRsOwotICAgICAgICB4MmdvRGVidWcg
PDwgKCBpbnQgKSAoIFFGaWxlOjpwZXJtaXNzaW9ucyAoCisgICAgICAgIHgyZ29EZWJ1Zzw8ICgg
aW50ICkgKCBRRmlsZTo6cGVybWlzc2lvbnMgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWFkRXhwb3J0c0Zyb20rIi8uIiApICkKICAgICAgICAgICAgICAgICAgIDw8Im11
c3QgYmUiPDwgKCBpbnQgKSAoIFFGaWxlOjpSZWFkVXNlcnxRRmlsZTo6V3JpdGVVc2VyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8UUZpbGU6OkV4ZVVzZXJ8UUZp
bGU6OlJlYWRPd25lcnwKQEAgLTc3MDcsNyArNzg1NCw5IEBAIHZvaWQgT05NYWluV2luZG93Ojpz
bG90U2NEYWVtb25FcnJvcigpCiB7CiAgICAgUVN0cmluZyBzdGRPdXQgKCBzY0RhZW1vbi0+cmVh
ZEFsbFN0YW5kYXJkRXJyb3IoKSApOwogICAgIHN0ZE91dD1zdGRPdXQuc2ltcGxpZmllZCgpOwot
ICAgIHgyZ29EZWJ1Zzw8IlNDREFFTU9OIGVycjoiPDxzdGRPdXQ8PGVuZGw7CisKKyAgICB4Mmdv
RGVidWc8PCJTQ0RBRU1PTiBlcnJvcjogIjw8c3RkT3V0OworCiAgICAgaWYgKCBzdGRPdXQuaW5k
ZXhPZiAoICJ1cGRhdGluZyBzbG90IiApICE9LTEgfHwKICAgICAgICAgICAgIHN0ZE91dC5pbmRl
eE9mICggInVwZGF0aW5nIHN0YXR1cyBvZiBzbG90IiApICE9LTEgKQogICAgIHsKQEAgLTc3MjUs
NyArNzg3NCw4IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90U2NEYWVtb25PdXQoKQogewogICAg
IFFTdHJpbmcgc3RkT3V0ICggc2NEYWVtb24tPnJlYWRBbGxTdGFuZGFyZE91dHB1dCgpICk7CiAg
ICAgc3RkT3V0PXN0ZE91dC5zaW1wbGlmaWVkKCk7Ci0gICAgeDJnb0RlYnVnPDwiU0NEQUVNT04g
b3V0OiI8PHN0ZE91dDw8ZW5kbDsKKworICAgIHgyZ29EZWJ1Zzw8IlNDREFFTU9OIG91dDogIjw8
c3RkT3V0OwogfQogCiB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdFNjRGFlbW9uRmluaXNoZWQgKCBp
bnQgLCBRUHJvY2Vzczo6RXhpdFN0YXR1cyApCkBAIC03NzMzLDcgKzc4ODMsOSBAQCB2b2lkIE9O
TWFpbldpbmRvdzo6c2xvdFNjRGFlbW9uRmluaXNoZWQgKCBpbnQgLCBRUHJvY2Vzczo6RXhpdFN0
YXR1cyApCiAgICAgc2NEYWVtb249MGw7CiAgICAgaWYgKCBpc1NjRGFlbW9uT2sgKQogICAgIHsK
LSAgICAgICAgeDJnb0RlYnVnPDwic2NEYWVtb24gZmluaXNoZWQiPDxlbmRsOworCisgICAgICAg
IHgyZ29EZWJ1Zzw8IlNDREFFTU9OIGZpbmlzaGVkLiI8PGVuZGw7CisKICAgICAgICAgZ3BnPW5l
dyBRUHJvY2VzcyAoIHRoaXMgKTsKICAgICAgICAgUVN0cmluZ0xpc3QgYXJndW1lbnRzOwogICAg
ICAgICBhcmd1bWVudHM8PCItLWNhcmQtc3RhdHVzIjsKQEAgLTc3NTUsNyArNzkwNyw5IEBAIHZv
aWQgT05NYWluV2luZG93OjpzbG90R3BnRXJyb3IoKQogewogICAgIFFTdHJpbmcgc3RkT3V0ICgg
Z3BnLT5yZWFkQWxsU3RhbmRhcmRFcnJvcigpICk7CiAgICAgc3RkT3V0PXN0ZE91dC5zaW1wbGlm
aWVkKCk7Ci0gICAgeDJnb0RlYnVnPDwiR1BHIGVycjoiPDxzdGRPdXQ8PGVuZGw7CisKKyAgICB4
MmdvRGVidWc8PCJHUEcgZXJyb3I6ICI8PHN0ZE91dDsKKwogICAgIGlmICggc3RkT3V0LmluZGV4
T2YgKCAiZmFpbGVkIiApICE9LTEgKQogICAgIHsKICAgICAgICAgUU1lc3NhZ2VCb3g6OmNyaXRp
Y2FsICggMGwsdHIgKCAiRXJyb3IiICksCkBAIC03NzcwLDEzICs3OTI0LDE3IEBAIHZvaWQgT05N
YWluV2luZG93OjpzbG90R3BnRXJyb3IoKQogdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RHcGdGaW5p
c2hlZCAoIGludCBleGl0Q29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBRUHJvY2Vzczo6RXhpdFN0YXR1cyBleGl0U3RhdHVzICkKIHsKLSAgICB4MmdvRGVidWc8PCJn
cGcgZmluaXNoZWQsIGV4aXQgY29kZToiPDxleGl0Q29kZTw8IiBleGl0IHN0YXR1czoiPDwKLSAg
ICAgICAgICAgICBleGl0U3RhdHVzPDxlbmRsOworCisgICAgeDJnb0RlYnVnPDwiR1BHIGZpbmlz
aGVkLCBleGl0IGNvZGU6ICI8PGV4aXRDb2RlOworICAgIHgyZ29EZWJ1Zzw8IkdQRyBmaW5pc2hl
ZCwgZXhpdCBzdGF0dXM6Ijw8ZXhpdFN0YXR1czsKKwogICAgIGlmICggZXhpdFN0YXR1cz09MCAp
CiAgICAgewogICAgICAgICBRU3RyaW5nIHN0ZE91dCAoIGdwZy0+cmVhZEFsbFN0YW5kYXJkT3V0
cHV0KCkgKTsKICAgICAgICAgc3RkT3V0LmNob3AgKCAxICk7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8
IkdQRyBvdXQ6Ijw8c3RkT3V0PDxlbmRsOworCisgICAgICAgIHgyZ29EZWJ1Zzw8IkdQRyBvdXQ6
ICI8PHN0ZE91dDsKKwogICAgICAgICBRU3RyaW5nTGlzdCBsaW5lcz1zdGRPdXQuc3BsaXQgKCAi
XG4iICk7CiAgICAgICAgIFFTdHJpbmcgbG9naW47CiAgICAgICAgIFFTdHJpbmcgYXBwSWQ7CkBA
IC03ODAxLDEwICs3OTU5LDE0IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90R3BnRmluaXNoZWQg
KCBpbnQgZXhpdENvZGUsCiAgICAgICAgIGFwcElkPWFwcElkLnNpbXBsaWZpZWQoKTsKICAgICAg
ICAgbG9naW49bG9naW4uc2ltcGxpZmllZCgpOwogICAgICAgICBhdXRoS2V5PWF1dGhLZXkuc2lt
cGxpZmllZCgpOwotICAgICAgICB4MmdvRGVidWc8PCJjYXJkIGRhdGE6ICI8PGFwcElkPDxsb2dp
bjw8YXV0aEtleTw8ZW5kbDsKKworICAgICAgICB4MmdvRGVidWc8PCJDYXJkIGRhdGE6ICI8PGFw
cElkPDxsb2dpbjw8YXV0aEtleTsKKwogICAgICAgICBpZiAoIGxvZ2luPT0iW25vdCBzZXRdIiB8
fCBhdXRoS2V5ID09ICJbbm9uZV0iICkKICAgICAgICAgewotICAgICAgICAgICAgeDJnb0RlYnVn
PDwiQ2FyZCBub3QgY29uZmlndXJlZFxuIjsKKworICAgICAgICAgICAgeDJnb0Vycm9yZigxMyk8
PHRyKCJDYXJkIG5vdCBjb25maWd1cmVkLiIpOworCiAgICAgICAgICAgICBRTWVzc2FnZUJveDo6
Y3JpdGljYWwgKAogICAgICAgICAgICAgICAgIDBsLHRyICggIkVycm9yIiApLAogICAgICAgICAg
ICAgICAgIHRyICgKQEAgLTc4ODAsMTUgKzgwNDIsMTYgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNs
b3RHcGdBZ2VudEZpbmlzaGVkICggaW50ICwgUVByb2Nlc3M6OkV4aXRTdGF0dXMgKQogICAgIFFT
dHJpbmcgZ3BnX2FnZW50X2luZm89ZW52THN0WzBdLnNwbGl0ICggIj0iICkgWzFdOwogICAgIFFT
dHJpbmcgc3NoX2F1dGhfc29jaz1lbnZMc3RbMl0uc3BsaXQgKCAiPSIgKSBbMV07CiAgICAgYWdl
bnRQaWQ9ZW52THN0WzRdLnNwbGl0ICggIj0iICkgWzFdOwotICAgIHgyZ29EZWJ1Zzw8Z3BnX2Fn
ZW50X2luZm88PHNzaF9hdXRoX3NvY2s8PGFnZW50UGlkPDxlbmRsOwotICAgIHgyZ29EZWJ1Zzw8
IkdQR0FHRU5UIG91dDoiPDxlbnZMc3RbMF08PGVudkxzdFsyXTw8ZW52THN0WzRdPDxlbmRsOwor
CisgICAgeDJnb0RlYnVnPDwiR1BHLWFnZW50IGluZm86ICI8PGdwZ19hZ2VudF9pbmZvPDxzc2hf
YXV0aF9zb2NrPDxhZ2VudFBpZDsKKyAgICB4MmdvRGVidWc8PCJHUEctYWdlbnQgcGlkOiAiPDxh
Z2VudFBpZDsKKyAgICB4MmdvRGVidWc8PCJHUEctYWdlbnQgb3V0OiI8PGVudkxzdFswXTw8ZW52
THN0WzJdPDxlbnZMc3RbNF07CiAKICAgICBhZ2VudENoZWNrVGltZXItPnN0YXJ0ICggMTAwMCAp
OwogICAgIGNhcmRSZWFkeT10cnVlOwogCiAgICAgc3NoRW52LmNsZWFyKCk7CiAgICAgc3NoRW52
PDxlbnZMc3RbMF08PGVudkxzdFsyXTw8ZW52THN0WzRdOwotLy8gCXgyZ29EZWJ1Zzw8InNzaGVu
djoiPDxzc2hFbnY8PGVuZGw7CiAKICAgICBpZiAoICF1c2VMZGFwICkKICAgICB7CkBAIC03OTEy
LDcgKzgwNzUsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdEdwZ0FnZW50RmluaXNoZWQgKCBp
bnQgLCBRUHJvY2Vzczo6RXhpdFN0YXR1cyApCiAgICAgICAgIHNzaGFkZC53YWl0Rm9yRmluaXNo
ZWQgKCAtMSApOwogICAgICAgICBRU3RyaW5nIHNzaG91dCAoIHNzaGFkZC5yZWFkQWxsU3RhbmRh
cmRPdXRwdXQoKSApOwogICAgICAgICBzc2hvdXQ9c3Nob3V0LnNpbXBsaWZpZWQoKTsKLSAgICAg
ICAgeDJnb0RlYnVnPDwiU1NILUFERCBvdXQ6Ijw8c3Nob3V0PDxlbmRsOworCisgICAgICAgIHgy
Z29EZWJ1Zzw8IlNTSC1BREQgb3V0OiAiPDxzc2hvdXQ7CisKICAgICAgICAgaWYoYnJva2VyTW9k
ZSkKICAgICAgICAgewogICAgICAgICAgICAgYnJva2VyLT5nZXRVc2VyU2Vzc2lvbnMoKTsKQEAg
LTc5MzEsNyArODA5Niw5IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90R3BnQWdlbnRGaW5pc2hl
ZCAoIGludCAsIFFQcm9jZXNzOjpFeGl0U3RhdHVzICkKICAgICAgICAgICAgIHNzaGFkZC53YWl0
Rm9yRmluaXNoZWQgKCAtMSApOwogICAgICAgICAgICAgUVN0cmluZyBzc2hvdXQgKCBzc2hhZGQu
cmVhZEFsbFN0YW5kYXJkT3V0cHV0KCkgKTsKICAgICAgICAgICAgIHNzaG91dD1zc2hvdXQuc2lt
cGxpZmllZCgpOwotICAgICAgICAgICAgeDJnb0RlYnVnPDwiU1NILUFERCBvdXQ6Ijw8c3Nob3V0
PDxlbmRsOworCisgICAgICAgICAgICB4MmdvRGVidWc8PCJTU0gtQUREIG91dDogIjw8c3Nob3V0
OworCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNzk1NiwxMyArODEyMywx
NCBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdENoZWNrQWdlbnRQcm9jZXNzKCkKICAgICAgICAg
aWYgKCBueHByb3h5ICkKICAgICAgICAgICAgIGlmICggbnhwcm94eS0+c3RhdGUoKSA9PVFQcm9j
ZXNzOjpSdW5uaW5nICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB4MmdvRGVidWc8
PCJTdXNwZW5kaW5nIHNlc3Npb25cbiI7CisgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwiU3Vz
cGVuZGluZyBzZXNzaW9uLi4uIjsKICAgICAgICAgICAgICAgICBzbG90U3VzcGVuZFNlc3NGcm9t
U3QoKTsKKyAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCJTdXNwZW5kZWQgIHNlc3Npb24uIjsK
IC8vICAgICAgICAgICAgICAgICBueHByb3h5LT50ZXJtaW5hdGUoKTsKICAgICAgICAgICAgIH0K
ICAgICB9CiAKLSAgICB4MmdvRGVidWc8PCJncGctYWdlbnQgZmluaXNoZWRcbiI7CisgICAgeDJn
b0RlYnVnPDwiR1BHLUFnZW50IGZpbmlzaGVkLiI7CiAgICAgc2xvdFN0YXJ0UEdQQXV0aCgpOwog
fQogCkBAIC03OTkyLDcgKzgxNjAsOSBAQCBRU3RyaW5nIE9OTWFpbldpbmRvdzo6Z2V0WERpc3Bs
YXkoKQogICAgICAgICAvLyBNYWMgT1MgWCAxMC40IGNvbXBhdGliaWxpdHkgbW9kZS4KICAgICAg
ICAgLy8gVGhlcmUsIGl0IGlzIHBvc3NpYmxlIG5vICRESVNQTEFZIHZhcmlhYmxlIGlzIHNldC4K
ICAgICAgICAgLy8gU3RhcnQgWDExIG1hbnVhbGx5LiBGaXJzdCwgZmluZCBhIGZyZWUgZGlzcGxh
eSBudW1iZXIuCi0gICAgICAgIHgyZ29EZWJ1ZyA8PCAiZW50ZXJpbmcgMTAuNCBjb21wYXQgbW9k
ZSwgY2hlY2tpbmcgZm9yIGZyZWUgWDExIGRpc3BsYXkiOworCisgICAgICAgIHgyZ29EZWJ1Zzw8
ICJlbnRlcmluZyAxMC40IGNvbXBhdCBtb2RlLCBjaGVja2luZyBmb3IgZnJlZSBYMTEgZGlzcGxh
eSI7CisKIAogICAgICAgICBpbnQgeEZyZWVEaXNwID0gMDsKICAgICAgICAgUURpciB4dG1wZGly
ICgiL3RtcC8uWDExLXVuaXgiKTsKQEAgLTgwMjIsNyArODE5Miw4IEBAIFFTdHJpbmcgT05NYWlu
V2luZG93OjpnZXRYRGlzcGxheSgpCiAgICAgICAgIGlmICh4RnJlZURpc3AgIT0gLTEpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHhzb2NrZXQgPSAiL3RtcC8uWDExLXVuaXgvWCIgKyBRU3RyaW5n
OjpudW1iZXIgKHhGcmVlRGlzcCk7Ci0gICAgICAgICAgICB4MmdvRGVidWcgPDwgIlN1Y2Nlc3Nm
dWxseSBkZXRlY3RlZCBmcmVlIHNvY2tldCAiIDw8IHhzb2NrZXQgPDwgIi4iOworCisgICAgICAg
ICAgICB4MmdvRGVidWc8PCAiU3VjY2Vzc2Z1bGx5IGRldGVjdGVkIGZyZWUgc29ja2V0ICIgPDwg
eHNvY2tldCA8PCAiLiI7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoISh4c29ja2V0LmlzRW1w
dHkgKCkpKQpAQCAtODAzMiwxOCArODIwMywyMSBAQCBRU3RyaW5nIE9OTWFpbldpbmRvdzo6Z2V0
WERpc3BsYXkoKQogICAgICAgICAgICAgUVByb2Nlc3NFbnZpcm9ubWVudCBlbnYgPSBRUHJvY2Vz
c0Vudmlyb25tZW50OjpzeXN0ZW1FbnZpcm9ubWVudCAoKTsKICAgICAgICAgICAgIFFQcm9jZXNz
KiBzdGFydHggPSBuZXcgUVByb2Nlc3MgKHRoaXMpOwogCi0gICAgICAgICAgICB4MmdvRGVidWcg
PDwgIlN0YXJ0aW5nIHRoZSBYIHNlcnZlciBvbiBmcmVlIGRpc3BsYXkgcG9ydC4iOworICAgICAg
ICAgICAgeDJnb0RlYnVnPDwgIlN0YXJ0aW5nIHRoZSBYIHNlcnZlciBvbiBmcmVlIGRpc3BsYXkg
cG9ydC4iOworCiAgICAgICAgICAgICBlbnYuaW5zZXJ0ICgwLCAiUEFUSD0vdXNyL2JpbjovYmlu
Oi91c3Ivc2Jpbjovc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL1gxMVI2L2JpbiIpOwogCiAgICAg
ICAgICAgICBzdGFydHgtPnNldFByb2Nlc3NFbnZpcm9ubWVudCAoZW52KTsKICAgICAgICAgICAg
IHN0YXJ0eC0+c3RhcnQgKHhuYW1lICsgUVN0cmluZyAoIiAiKSArIHhvcHQsIFFJT0RldmljZTo6
Tm90T3Blbik7CiAgICAgICAgICAgICBpZiAoc3RhcnR4LT53YWl0Rm9yU3RhcnRlZCAoMzAwMCkp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgeDJnb0RlYnVnIDw8ICJzbGVlcGluZyBm
b3IgdGhyZWUgc2Vjb25kcyI7CisKKyAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCAiU2xlZXBp
bmcgZm9yIHRocmVlIHNlY29uZHMiOwogICAgICAgICAgICAgICAgIGludCBzbGVlcHRpbWUgPSAz
OwogICAgICAgICAgICAgICAgIHdoaWxlICgoc2xlZXB0aW1lID0gc2xlZXAgKHNsZWVwdGltZSkp
KSB7fTsKIAotICAgICAgICAgICAgICAgIHgyZ29EZWJ1ZyA8PCAiTGVhdmluZyBPUyBYIDEwLjQg
Y29tcGF0IG1vZGUuIjsKKyAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCAiTGVhdmluZyBPUyBY
IDEwLjQgY29tcGF0IG1vZGUuIjsKKwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpA
QCAtODA3MSw3ICs4MjQ1LDkgQEAgUVN0cmluZyBPTk1haW5XaW5kb3c6OmdldFhEaXNwbGF5KCkK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIFByZXBlbmQgdGhlIHdlbGwta25vd24gc29j
a2V0IHBhdGguCiAgICAgICAgICAgICB4c29ja2V0LnByZXBlbmQgKCIvdG1wLy5YMTEtdW5peC9Y
Iik7Ci0gICAgICAgICAgICB4MmdvRGVidWcgPDwgInhzb2NrZXQgaW4gY29tcGF0IG1vZGU6ICIg
PDwgeHNvY2tldDsKKworICAgICAgICAgICAgeDJnb0RlYnVnPDwgInhzb2NrZXQgaW4gY29tcGF0
IG1vZGU6ICIgPDwgeHNvY2tldDsKKwogICAgICAgICB9CiAKICAgICAgICAgdW5peFNvY2tldC5j
b25uZWN0VG9TZXJ2ZXIgKHhzb2NrZXQpOwpAQCAtODA5Niw3ICs4MjcyLDcgQEAgUVN0cmluZyBP
Tk1haW5XaW5kb3c6OmdldFhEaXNwbGF5KCkKIAogICAgICAgICAgICAgICAgIGlmIChvaykKICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHgyZ29EZWJ1ZyA8PCAiUmV0dXJu
aW5nIiA8PCBRU3RyaW5nICgiOiIpICsgeHNvY2tldDsKKyAgICAgICAgICAgICAgICAgICAgeDJn
b0RlYnVnPDwiUmV0dXJuaW5nICIgPDwgUVN0cmluZyAoIjoiKSArIHhzb2NrZXQ7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoUVN0cmluZyAoIjoiKSArIHhzb2NrZXQpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTgyMjIsNyArODM5OCw5IEBAIHZvaWQgT05NYWlu
V2luZG93OjpzbG90RXhlY1htb2RtYXAoKQogLy8gIAkgICAgImVjaG8gYWRkIG1vZDUgPSBJU09f
TGV2ZWwzX1NoaWZ0IgogICAgICAgICAiKXwgRElTUExBWT06IgogICAgICAgICArcmVzdW1pbmdT
ZXNzaW9uLmRpc3BsYXkrIiB4bW9kbWFwIC0gIjsKLSAgICB4MmdvRGVidWc8PCJjbWQ6Ijw8Y21k
OworCisgICAgeDJnb0RlYnVnPDwiRXhlY3V0aW5nIHhtb2RtYXAgd2l0aCBjbWQ6ICI8PGNtZDsK
KwogICAgIFNzaFByb2Nlc3MqIHhtb2RQcm9jOwogICAgIHRyeQogICAgIHsKQEAgLTgyNDgsNyAr
ODQyNiwxMSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdEV4ZWNYbW9kbWFwKCkKIAogdm9pZCBP
Tk1haW5XaW5kb3c6OmNoZWNrX2NtZF9zdGF0dXMoKQogewotICAgIHgyZ29EZWJ1Zzw8ImNoZWNr
IGNvbW1hbmQgbWVzc2FnZSI8PGVuZGw7CisgICAgUVN0cmluZyBwYXNzd2Q7CisgICAgUVN0cmlu
ZyB1c2VyPWdldEN1cnJlbnRVbmFtZSgpOworICAgIFFTdHJpbmcgaG9zdD1yZXN1bWluZ1Nlc3Np
b24uc2VydmVyOworICAgIHBhc3N3ZD1nZXRDdXJyZW50UGFzcygpOworCiAgICAgc3NoQ29ubmVj
dGlvbi0+ZXhlY3V0ZUNvbW1hbmQgKCAieDJnb2NtZGV4aXRtZXNzYWdlICIrCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWluZ1Nlc3Npb24uc2Vzc2lvbklkICwgdGhp
cywgU0xPVChzbG90Q21kTWVzc2FnZShib29sLCBRU3RyaW5nLCBpbnQpKSk7CiB9CkBAIC04MjU2
LDYgKzg0MzgsNyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6Y2hlY2tfY21kX3N0YXR1cygpCiB2b2lk
IE9OTWFpbldpbmRvdzo6c2xvdENtZE1lc3NhZ2UgKCBib29sIHJlc3VsdCxRU3RyaW5nIG91dHB1
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCkKIHsKKyAgICB4Mmdv
RGVidWc8PCJDb21tYW5kIE1lc3NhZ2U6ICIgKyBvdXRwdXQ7CiAgICAgaWYgKCByZXN1bHQ9PWZh
bHNlICkKICAgICB7CiAgICAgICAgIGNhcmRSZWFkeT1mYWxzZTsKQEAgLTgyODIsMTAgKzg0NjUs
MTggQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RDbWRNZXNzYWdlICggYm9vbCByZXN1bHQsUVN0
cmluZyBvdXRwdXQsCiAgICAgewogICAgICAgICBRU3RyaW5nIGNtZD1vdXRwdXQ7CiAgICAgICAg
IGNtZC5yZXBsYWNlICggIlgyR09SVU5DT01NQU5EIEVSUiBOT0VYRUM6IiwiIiApOwotICAgICAg
ICBRTWVzc2FnZUJveDo6Y3JpdGljYWwgKCAwbCx0ciAoICJFcnJvciIgKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHIgKCAiVW5hYmxlIHRvIGV4ZWN1dGU6ICIgKSArCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCxRTWVzc2FnZUJveDo6T2ssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpOb0J1dHRvbiApOworCisgICAg
ICAgIGlmKHN0YXJ0SGlkZGVuKQorICAgICAgICB7CisgICAgICAgICAgICB4MmdvRXJyb3JmKDE0
KTw8IHRyKCAiVW5hYmxlIHRvIGV4ZWN1dGU6ICIpICsgY21kOworICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgUU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGws
dHIgKCAiRXJyb3IiICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ciAo
ICJVbmFibGUgdG8gZXhlY3V0ZTogIiApICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNtZCxRTWVzc2FnZUJveDo6T2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBRTWVzc2FnZUJveDo6Tm9CdXR0b24gKTsKKyAgICAgICAgfQogICAgIH0KICAgICBk
ZWxldGUgc3NoQ29ubmVjdGlvbjsKICAgICBzc2hDb25uZWN0aW9uPTA7CkBAIC04Mjk1LDggKzg0
ODYsMTAgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RDbWRNZXNzYWdlICggYm9vbCByZXN1bHQs
UVN0cmluZyBvdXRwdXQsCiBpbnQgT05NYWluV2luZG93OjpzdGFydFNzaEZzVHVubmVsKCkKIHsK
ICAgICBmc1R1blJlYWR5PWZhbHNlOwotICAgIHgyZ29EZWJ1Zzw8InN0YXJ0aW5nIGZzIHR1bm5l
bCBmb3I6Ijw8cmVzdW1pbmdTZXNzaW9uLnNlc3Npb25JZDw8Ci0gICAgICAgICAgICAgIlxuZnMg
cG9ydDogIjw8cmVzdW1pbmdTZXNzaW9uLmZzUG9ydDsKKworICAgIHgyZ29EZWJ1Zzw8IlN0YXJ0
aW5nIGZzIHR1bm5lbCBmb3I6ICI8PHJlc3VtaW5nU2Vzc2lvbi5zZXNzaW9uSWQ7CisgICAgeDJn
b0RlYnVnPDwiZnMgcG9ydDogIjw8cmVzdW1pbmdTZXNzaW9uLmZzUG9ydDsKKwogCiAgICAgaWYg
KCByZXN1bWluZ1Nlc3Npb24uZnNQb3J0Lmxlbmd0aCgpIDw9MCApCiAgICAgewpAQCAtODM2OCw3
ICs4NTYxLDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnN0YXJ0WDJnb01vdW50KCkKICNpZmRlZiBR
X09TX1dJTgogICAgIFFEaXIgdGRpcjsKICAgICB0ZGlyLm1rcGF0aCAoIGF1dGhvZm5hbWUrIlxc
LngyZ29cXC5zc2giICk7Ci0gICAgeDJnb0RlYnVnPDwiQ3JlYXRpbmcgIjw8YXV0aG9mbmFtZSsi
XFwueDJnb1xcLnNzaCI8PGVuZGw7CisKKyAgICB4MmdvRGVidWc8PCJDcmVhdGluZyAiPDxhdXRo
b2ZuYW1lKyJcXC54MmdvXFwuc3NoIjsKKwogICAgIGF1dGhvZm5hbWU9d2FwaVNob3J0RmlsZU5h
bWUgKCBhdXRob2ZuYW1lICkgKyIvLngyZ28iOwogI2VuZGlmCiAgICAgYXV0aG9mbmFtZSs9ICIv
LnNzaC9hdXRob3JpemVkX2tleXMiIDsKQEAgLTg0ODgsNyArODY4Myw2IEBAIHZvaWQgT05NYWlu
V2luZG93OjpzdGFydFgyZ29Nb3VudCgpCiAKICAgICBkaXItPnBpZD1zc2hDb25uZWN0aW9uLT5l
eGVjdXRlQ29tbWFuZChjbWQsdGhpcyxTTE9UICggc2xvdFJldEV4cG9ydERpciAoIGJvb2wsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyxpbnQpICkp
OwotCiB9CiAKIHZvaWQgT05NYWluV2luZG93OjpzbG90Q2hlY2tQcmludFNwb29sKCkKQEAgLTg1
NzQsMTQgKzg3NjgsMTggQEAgYm9vbCBPTk1haW5XaW5kb3c6OmlzU2VydmVyUnVubmluZyAoIGlu
dCBwb3J0ICkKICAgICBpUmVzdWx0ID0gV1NBU3RhcnR1cChNQUtFV09SRCgyLCAyKSwgJndzYURh
dGEpOwogICAgIGlmIChpUmVzdWx0ICE9IDApCiAgICAgewotICAgICAgICB4MmdvRGVidWc8PCJX
QVJOSU5HOiBXU0FTdGFydHVwIGZhaWxlZDogIjw8IGlSZXN1bHQ8PGVuZGw7CisKKyAgICAgICAg
eDJnb0RlYnVnPDwiV0FSTklORzogV1NBU3RhcnR1cCBmYWlsZWQ6ICI8PCBpUmVzdWx0OworCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBhZGRyLnNfYWRkciA9IGluZXRfYWRk
cigiMTI3LjAuMC4xIik7CiAgICAgaWYgKGFkZHIuc19hZGRyID09IElOQUREUl9OT05FKQogICAg
IHsKKwogICAgICAgICB4MmdvRGVidWc8PCAiV0FSTklORzogIFRoZSBJUHY0IGFkZHJlc3MgZW50
ZXJlZCBtdXN0IGJlIGEgbGVnYWwgYWRkcmVzc1xuIjsKKwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC04NTg5LDEwICs4Nzg3LDEzIEBAIGJvb2wgT05NYWluV2luZG93Ojppc1Nl
cnZlclJ1bm5pbmcgKCBpbnQgcG9ydCApCiAgICAgbG9jYWxIb3N0ID0gZ2V0aG9zdGJ5YWRkcigo
Y2hhciopJmFkZHIsNCwgQUZfSU5FVCk7CiAgICAgaWYgKCFsb2NhbEhvc3QpCiAgICAgewotICAg
ICAgICB4MmdvRGVidWc8PCJXQVJOSU5HOiBnZXRob3N0YnlhZGRyIGZhaWxlZDogIjw8V1NBR2V0
TGFzdEVycm9yKCk8PGVuZGw7CisKKyAgICAgICAgeDJnb0RlYnVnPDwiV0FSTklORzogZ2V0aG9z
dGJ5YWRkciBmYWlsZWQ6ICI8PFdTQUdldExhc3RFcnJvcigpOworCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0gICAgeDJnb0RlYnVnPDwiZ290IGxvY2FsaG9zdCI8PGVuZGw7CisgICAg
eDJnb0RlYnVnPDwiZ290IGxvY2FsaG9zdCI7CisKIAogICAgIGxvY2FsSVAgPSBpbmV0X250b2Eg
KCooc3RydWN0IGluX2FkZHIgKikqbG9jYWxIb3N0LT5oX2FkZHJfbGlzdCk7CiAKQEAgLTg2MDMs
NyArODgwNCw4IEBAIGJvb2wgT05NYWluV2luZG93Ojppc1NlcnZlclJ1bm5pbmcgKCBpbnQgcG9y
dCApCiAgICAgQ29ubmVjdFNvY2tldCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQ
Uk9UT19UQ1ApOwogICAgIGlmIChDb25uZWN0U29ja2V0ID09IElOVkFMSURfU09DS0VUKQogICAg
IHsKLSAgICAgICAgeDJnb0RlYnVnPDwiV0FSTklORzogc29ja2V0IGZhaWxlZCB3aXRoIGVycm9y
OiAiPDwgV1NBR2V0TGFzdEVycm9yKCk8PGVuZGw7CisgICAgICAgIHgyZ29EZWJ1Zzw8IldBUk5J
Tkc6IHNvY2tldCBmYWlsZWQgd2l0aCBlcnJvcjogIjw8IFdTQUdldExhc3RFcnJvcigpOworCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTg2MTEsMTEgKzg4MTMsMTUgQEAgYm9v
bCBPTk1haW5XaW5kb3c6OmlzU2VydmVyUnVubmluZyAoIGludCBwb3J0ICkKICAgICBpZiAoaVJl
c3VsdCA9PSBTT0NLRVRfRVJST1IpCiAgICAgewogICAgICAgICBjbG9zZXNvY2tldChDb25uZWN0
U29ja2V0KTsKLSAgICAgICAgeDJnb0RlYnVnPDwiUG9ydCBpcyBmcmVlOiAiPDxwb3J0PDxlbmRs
OworCisgICAgICAgIHgyZ29EZWJ1Zzw8IlBvcnQgaXMgZnJlZTogIjw8cG9ydDsKKwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGNsb3Nlc29ja2V0KENvbm5lY3RTb2NrZXQpOwot
ICAgIHgyZ29EZWJ1Zzw8IlBvcnQgYWxyZWFkeSB1c2VkOiAiPDxwb3J0PDxlbmRsOworCisgICAg
eDJnb0RlYnVnPDwiUG9ydCBhbHJlYWR5IHVzZWQ6ICI8PHBvcnQ7CisKICAgICByZXR1cm4gdHJ1
ZTsKICNlbmRpZgogICAgIFFUY3BTb2NrZXQgdGNwU29ja2V0ICggMCApOwpAQCAtODY3Myw3ICs4
ODc5LDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnN0YXJ0WE9yZyAoKQogICAgIGlmIChpbnRlcm5h
bFg9PVZDWFNSVikKICAgICAgICAgZXhlYz1hcHBEaXIrIlxcdmN4c3J2XFx2Y3hzcnYuZXhlIjsK
ICAgICB3aW5TZXJ2ZXJzUmVhZHk9ZmFsc2U7CisKICAgICB4MmdvRGVidWc8PCJ1c2luZyBpbnRl
cm5hbCBYOiAiPDx1c2VJbnRlcm5hbFg7CisKIC8vI2lmZGVmIENGR0NMSUVOVAogICAgIGlmICgh
dXNlSW50ZXJuYWxYIHx8IGludGVybmFsWCE9WE1JTkcpCiAgICAgewpAQCAtODY5NCwxMCArODkw
MiwxMyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c3RhcnRYT3JnICgpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdJTjoKICAgICAgICAgICAgICAgICBjbWRMaW5lPXhv
cmdXaW5PcHRpb25zOwotICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8Ild4SDoiPDx4b3JnV2lk
dGg8PCJ4Ijw8eG9yZ0hlaWdodDw8ZW5kbDsKKworICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8
Ild4SDoiPDx4b3JnV2lkdGg8PCJ4Ijw8eG9yZ0hlaWdodDsKKwogICAgICAgICAgICAgICAgIGNt
ZExpbmUucmVwbGFjZSgiJXciLHhvcmdXaWR0aCk7CiAgICAgICAgICAgICAgICAgY21kTGluZS5y
ZXBsYWNlKCIlaCIseG9yZ0hlaWdodCk7Ci0gICAgICAgICAgICAgICAgeDJnb0RlYnVnPDxjbWRM
aW5lPDxlbmRsOworCisgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDxjbWRMaW5lOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC04NzMzLDcgKzg5
NDQsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c3RhcnRYT3JnICgpCiAgICAgICAgIHhvcmctPiBz
ZXRXb3JraW5nRGlyZWN0b3J5ICggd29ya2luZ0Rpcik7CiAgICAgfQogCi0gICAgeDJnb0RlYnVn
PDwicnVubmluZyI8PGV4ZWM8PCIgIjw8YXJncy5qb2luKCIgIik7CisKKyAgICB4MmdvRGVidWc8
PCJSdW5uaW5nICI8PGV4ZWM8PCIgIjw8YXJncy5qb2luKCIgIik7CisKICAgICB4b3JnLT5zdGFy
dCAoIGV4ZWMsIGFyZ3MgKTsKIAogCkBAIC04NzYwLDcgKzg5NzMsOSBAQCB2b2lkIE9OTWFpbldp
bmRvdzo6c2xvdENoZWNrWE9yZ0Nvbm5lY3Rpb24oKQogICAgICsrd2FpdGluZ0Zvclg7CiAgICAg
aWYgKGlzU2VydmVyUnVubmluZyg2MDAwK3hEaXNwbGF5KSkKICAgICB7Ci0gICAgICAgIHgyZ29E
ZWJ1Zzw8IlggaXMgc3RhcnRlZCI7CisKKyAgICAgICAgeDJnb0RlYnVnPDwiWCBpcyBzdGFydGVk
LiI7CisKICAgICAgICAgc2xvdFNldFdpblNlcnZlcnNSZWFkeSgpOwogICAgIH0KICAgICBlbHNl
CkBAIC04Nzc1LDcgKzg5OTAsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdENoZWNrWE9yZ0Nv
bm5lY3Rpb24oKQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAg
ICAgeDJnb0RlYnVnPDwid2FpdGluZyBmb3IgWCI7CisKKyAgICAgICAgICAgIHgyZ29EZWJ1Zzw8
Ii4uLndhaXRpbmcgZm9yIFguIjsKKwogICAgICAgICAgICAgUVRpbWVyOjpzaW5nbGVTaG90KDEw
MDAsIHRoaXMsIFNMT1Qoc2xvdENoZWNrWE9yZ0Nvbm5lY3Rpb24oKSkpOwogICAgICAgICB9CiAg
ICAgfQpAQCAtODgwNSw3ICs5MDIyLDggQEAgdm9pZCBXaW5TZXJ2ZXJTdGFydGVyOjpydW4oKQog
CiB2b2lkIE9OTWFpbldpbmRvdzo6c3RhcnRXaW5TZXJ2ZXJzKCkKIHsKLSAgICB4MmdvRGVidWc8
PCJTdGFydGluZyB3aW4gc2VydmVycyI8PGVuZGw7CisKKyAgICB4MmdvRGVidWc8PCJTdGFydGlu
ZyB3aW4gc2VydmVycy4uLiI7CiAKICAgICBRU3RyaW5nIGV0Y0Rpcj1ob21lRGlyKyIvLngyZ28v
ZXRjIjsKICAgICBRRGlyIGRyICggaG9tZURpciApOwpAQCAtODgzMyw3ICs5MDUxLDkgQEAgdm9p
ZCBPTk1haW5XaW5kb3c6OnN0YXJ0V2luU2VydmVycygpCiAgICAgICAgIHN0YXJ0UHVsc2VkKCk7
CiAgICAgfQogLy8gI2lmZGVmIENGR0NMSUVOVAotLy8gICAgIHgyZ29EZWJ1Zzw8Inhvcmcgc2V0
dGluZ3M6ICI8PHN0YXJ0WG9yZ09uU3RhcnQgPDwiICI8PCB1c2VYbWluZzw8ZW5kbDsKKworICAg
IC8veDJnb0RlYnVnPDwiWG9yZyBzZXR0aW5nczogIjw8IHN0YXJ0WG9yZ09uU3RhcnQgPDwiIHVz
ZVhtaW5nOiAiPDwgdXNlWG1pbmc7CisKICAgICBpZiAoIHVzZUludGVybmFsWCAmJiAoaW50ZXJu
YWxYPT0gWE1JTkcpKQogICAgIHsKIC8vICNlbmRpZgpAQCAtODg4MCwyMyArOTEwMCwyOSBAQCB2
b2lkIE9OTWFpbldpbmRvdzo6c2F2ZUN5Z251c1NldHRpbmdzKCkKICAgICB7CiAgICAgICAgIGlm
ICggaGF2ZUN5U29sRW50cnkoKSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHgyZ29EZWJ1Zzw8
IkN5Z251cyBTb2x1dGlvbnMgZW50cnkgZXhpc3QiOworCisgICAgICAgICAgICB4MmdvRGVidWc8
PCJDeWdudXMgU29sdXRpb25zIGVudHJ5IGV4aXN0cy4iOworCiAgICAgICAgICAgICBjeVNvbEVu
dHJ5PXRydWU7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAg
ICBjeVNvbEVudHJ5PWZhbHNlOwotICAgICAgICAgICAgeDJnb0RlYnVnPDwiQ3lnbnVzIFNvbHV0
aW9ucyBlbnRyeSBub3QgZXhpc3QiOworCisgICAgICAgICAgICB4MmdvRGVidWc8PCJDeWdudXMg
U29sdXRpb25zIGVudHJ5IG5vdCBleGlzdC4iOworCiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
IGhhdmVDeWd3aW5FbnRyeSgpICkKICAgICAgICAgewotICAgICAgICAgICAgeDJnb0RlYnVnPDwi
Q3lnd2luIGVudHJ5IGV4aXN0IjsKKworICAgICAgICAgICAgeDJnb0RlYnVnPDwiQ3lnd2luIGVu
dHJ5IGV4aXN0LiI7CisKICAgICAgICAgICAgIGN5RW50cnk9dHJ1ZTsKICAgICAgICAgfQogICAg
ICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IkN5Z3dpbiBlbnRy
eSBub3QgZXhpc3QiOworICAgICAgICAgICAgeDJnb0RlYnVnPDwiQ3lnd2luIGVudHJ5IG5vdCBl
eGlzdC4iOwogICAgICAgICAgICAgY3lFbnRyeT1mYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAg
LTg5MDYsNyArOTEzMiw5IEBAIHZvaWQgT05NYWluV2luZG93OjpzYXZlQ3lnbnVzU2V0dGluZ3Mo
KQogICAgICAgICAgICAgICAgICAgICAgIFFTZXR0aW5nczo6TmF0aXZlRm9ybWF0ICk7CiAgICAg
b2xkRXRjRGlyPVFTdHJpbmc6Om51bGw7CiAgICAgb2xkRXRjRGlyPWV0Y3N0LnZhbHVlICggIm5h
dGl2ZSIsb2xkRXRjRGlyICkudG9TdHJpbmcoKTsKLSAgICB4MmdvRGVidWc8PCJvbGQgZXRjOiI8
PG9sZEV0Y0Rpcjw8ZW5kbDsKKworICAgIHgyZ29EZWJ1Zzw8Ik9sZCBldGM6ICI8PG9sZEV0Y0Rp
cjsKKwogICAgIFFTdHJpbmcgbmV3RXRjPWhvbWVEaXIrIi8ueDJnby9ldGMiOwogICAgIFFEaXIg
ZCAoIG5ld0V0YyApOwogICAgIGlmICggIWQuZXhpc3RzKCkgKQpAQCAtODkxNSwzMSArOTE0Myw0
MCBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2F2ZUN5Z251c1NldHRpbmdzKCkKIAogICAgIGV0Y3N0
LnNldFZhbHVlICggIm5hdGl2ZSIsd2FwaVNob3J0RmlsZU5hbWUgKCBuZXdFdGMgKSApOwogICAg
IGV0Y3N0LnN5bmMoKTsKLSAgICB4MmdvRGVidWc8PCJuZXcgZXRjOiI8PHdhcGlTaG9ydEZpbGVO
YW1lICggbmV3RXRjICkgPDxlbmRsOworCisgICAgeDJnb0RlYnVnPDwiTmV3IGV0YzogIjw8d2Fw
aVNob3J0RmlsZU5hbWUgKCBuZXdFdGMgKTsKKwogCiAgICAgUVNldHRpbmdzIGJpbnN0ICggIkhL
RVlfQ1VSUkVOVF9VU0VSXFxTb2Z0d2FyZSIKICAgICAgICAgICAgICAgICAgICAgICAiXFxDeWdu
dXMgU29sdXRpb25zXFxDeWd3aW5cXG1vdW50cyB2MlxcL2JpbiIsCiAgICAgICAgICAgICAgICAg
ICAgICAgUVNldHRpbmdzOjpOYXRpdmVGb3JtYXQgKTsKICAgICBvbGRCaW5EaXI9UVN0cmluZzo6
bnVsbDsKICAgICBvbGRCaW5EaXI9Ymluc3QudmFsdWUgKCAibmF0aXZlIixvbGRCaW5EaXIgKS50
b1N0cmluZygpOwotICAgIHgyZ29EZWJ1Zzw8Im9sZCBiaW46Ijw8b2xkQmluRGlyPDxlbmRsOwor
CisgICAgeDJnb0RlYnVnPDwiT2xkIGJpbjogIjw8b2xkQmluRGlyOworCiAgICAgUVN0cmluZyBu
ZXdCaW49YXBwRGlyOwogICAgIG5ld0Jpbi5yZXBsYWNlICggIi8iLCJcXCIgKTsKICAgICBiaW5z
dC5zZXRWYWx1ZSAoICJuYXRpdmUiLHdhcGlTaG9ydEZpbGVOYW1lICggbmV3QmluICkgKTsKICAg
ICBiaW5zdC5zeW5jKCk7Ci0gICAgeDJnb0RlYnVnPDwibmV3IGJpbjoiPDxuZXdCaW48PGVuZGw7
CisKKyAgICB4MmdvRGVidWc8PCJOZXcgYmluOiAiPDxuZXdCaW47CiAKICAgICBRU2V0dGluZ3Mg
dG1wc3QgKCAiSEtFWV9DVVJSRU5UX1VTRVJcXFNvZnR3YXJlIgogICAgICAgICAgICAgICAgICAg
ICAgICJcXEN5Z251cyBTb2x1dGlvbnNcXEN5Z3dpblxcbW91bnRzIHYyXFwvdG1wIiwKICAgICAg
ICAgICAgICAgICAgICAgICBRU2V0dGluZ3M6Ok5hdGl2ZUZvcm1hdCApOwogICAgIG9sZFRtcERp
cj1RU3RyaW5nOjpudWxsOwogICAgIG9sZFRtcERpcj10bXBzdC52YWx1ZSAoICJuYXRpdmUiLG9s
ZFRtcERpciApLnRvU3RyaW5nKCk7Ci0gICAgeDJnb0RlYnVnPDwib2xkIHRtcDoiPDxvbGRUbXBE
aXI8PGVuZGw7CisKKyAgICB4MmdvRGVidWc8PCJPbGQgdG1wOiAiPDxvbGRUbXBEaXI7CisKICAg
ICBRU3RyaW5nIG5ld1RtcD1RRGlyOjp0ZW1wUGF0aCgpOwogICAgIG5ld1RtcC5yZXBsYWNlICgg
Ii8iLCJcXCIgKTsKICAgICB0bXBzdC5zZXRWYWx1ZSAoICJuYXRpdmUiLHdhcGlTaG9ydEZpbGVO
YW1lICggbmV3VG1wICkgKTsKICAgICB0bXBzdC5zeW5jKCk7Ci0gICAgeDJnb0RlYnVnPDwibmV3
IHRtcDoiPDxuZXdUbXA8PGVuZGw7CisKKyAgICB4MmdvRGVidWc8PCJOZXcgdG1wOiAiPDxuZXdU
bXA7CisKIH0KIAogdm9pZCBPTk1haW5XaW5kb3c6OnJlc3RvcmVDeWdudXNTZXR0aW5ncygpCkBA
IC04OTUwLDcgKzkxODcsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6cmVzdG9yZUN5Z251c1NldHRp
bmdzKCkKICAgICAgICAgUVNldHRpbmdzIHN0ICggIkhLRVlfQ1VSUkVOVF9VU0VSXFxTb2Z0d2Fy
ZSIKICAgICAgICAgICAgICAgICAgICAgICAgIlxcQ3lnbnVzIFNvbHV0aW9uc1xcQ3lnd2luXFxt
b3VudHMgdjJcXC9ldGMiLAogICAgICAgICAgICAgICAgICAgICAgICBRU2V0dGluZ3M6Ok5hdGl2
ZUZvcm1hdCApOwotICAgICAgICB4MmdvRGVidWc8PCJSZW1vdmluZyAvZXRjIGZyb20gY3lnd2lu
IG1vdW50c1xuIjsKKworICAgICAgICB4MmdvRGVidWc8PCJSZW1vdmluZyAvZXRjIGZyb20gY3ln
d2luIG1vdW50cy4iOworCiAgICAgICAgIHN0LnJlbW92ZSAoICIiICk7CiAgICAgICAgIHN0LnN5
bmMoKTsKICAgICB9CkBAIC04OTYxLDE0ICs5MjAwLDE4IEBAIHZvaWQgT05NYWluV2luZG93Ojpy
ZXN0b3JlQ3lnbnVzU2V0dGluZ3MoKQogICAgICAgICAgICAgICAgICAgICAgICBRU2V0dGluZ3M6
Ok5hdGl2ZUZvcm1hdCApOwogICAgICAgICBzdC5zZXRWYWx1ZSAoICJuYXRpdmUiLG9sZEV0Y0Rp
ciApOwogICAgICAgICBzdC5zeW5jKCk7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8IlJlc3RvcmluZyAv
ZXRjIGluIGN5Z3dpbiBtb3VudHNcbiI7CisKKyAgICAgICAgeDJnb0RlYnVnPDwiUmVzdG9yaW5n
IC9ldGMgaW4gY3lnd2luIG1vdW50cy4iOworCiAgICAgfQogICAgIGlmICggb2xkQmluRGlyPT1R
U3RyaW5nOjpudWxsICkKICAgICB7CiAgICAgICAgIFFTZXR0aW5ncyBzdCAoICJIS0VZX0NVUlJF
TlRfVVNFUlxcU29mdHdhcmUiCiAgICAgICAgICAgICAgICAgICAgICAgICJcXEN5Z251cyBTb2x1
dGlvbnNcXEN5Z3dpblxcbW91bnRzIHYyXFwvYmluIiwKICAgICAgICAgICAgICAgICAgICAgICAg
UVNldHRpbmdzOjpOYXRpdmVGb3JtYXQgKTsKLSAgICAgICAgeDJnb0RlYnVnPDwiUmVtb3Zpbmcg
L2JpbiBmcm9tIGN5Z3dpbiBtb3VudHNcbiI7CisKKyAgICAgICAgeDJnb0RlYnVnPDwiUmVtb3Zp
bmcgL2JpbiBmcm9tIGN5Z3dpbiBtb3VudHMuIjsKKwogICAgICAgICBzdC5yZW1vdmUgKCAiIiAp
OwogICAgICAgICBzdC5zeW5jKCk7CiAgICAgfQpAQCAtODk3OSwxNCArOTIyMiwxOCBAQCB2b2lk
IE9OTWFpbldpbmRvdzo6cmVzdG9yZUN5Z251c1NldHRpbmdzKCkKICAgICAgICAgICAgICAgICAg
ICAgICAgUVNldHRpbmdzOjpOYXRpdmVGb3JtYXQgKTsKICAgICAgICAgc3Quc2V0VmFsdWUgKCAi
bmF0aXZlIixvbGRCaW5EaXIgKTsKICAgICAgICAgc3Quc3luYygpOwotICAgICAgICB4MmdvRGVi
dWc8PCJSZXN0b3JpbmcgL2JpbiBpbiBjeWd3aW4gbW91bnRzXG4iOworCisgICAgICAgIHgyZ29E
ZWJ1Zzw8IlJlc3RvcmluZyAvYmluIGluIGN5Z3dpbiBtb3VudHMuIjsKKwogICAgIH0KICAgICBp
ZiAoIG9sZFRtcERpcj09UVN0cmluZzo6bnVsbCApCiAgICAgewogICAgICAgICBRU2V0dGluZ3Mg
c3QgKCAiSEtFWV9DVVJSRU5UX1VTRVJcXFNvZnR3YXJlIgogICAgICAgICAgICAgICAgICAgICAg
ICAiXFxDeWdudXMgU29sdXRpb25zXFxDeWd3aW5cXG1vdW50cyB2MlxcL3RtcCIsCiAgICAgICAg
ICAgICAgICAgICAgICAgIFFTZXR0aW5nczo6TmF0aXZlRm9ybWF0ICk7Ci0gICAgICAgIHgyZ29E
ZWJ1Zzw8IlJlbW92aW5nIC90bXAgZnJvbSBjeWd3aW4gbW91bnRzXG4iOworCisgICAgICAgIHgy
Z29EZWJ1Zzw8IlJlbW92aW5nIC90bXAgZnJvbSBjeWd3aW4gbW91bnRzLiI7CisKICAgICAgICAg
c3QucmVtb3ZlICggIiIgKTsKICAgICAgICAgc3Quc3luYygpOwogICAgIH0KQEAgLTg5OTcsNyAr
OTI0NCw5IEBAIHZvaWQgT05NYWluV2luZG93OjpyZXN0b3JlQ3lnbnVzU2V0dGluZ3MoKQogICAg
ICAgICAgICAgICAgICAgICAgICBRU2V0dGluZ3M6Ok5hdGl2ZUZvcm1hdCApOwogICAgICAgICBz
dC5zZXRWYWx1ZSAoICJuYXRpdmUiLG9sZFRtcERpciApOwogICAgICAgICBzdC5zeW5jKCk7Ci0g
ICAgICAgIHgyZ29EZWJ1Zzw8IlJlc3RvcmluZyAvdG1wIGluIGN5Z3dpbiBtb3VudHNcbiI7CisK
KyAgICAgICAgeDJnb0RlYnVnPDwiUmVzdG9yaW5nIC90bXAgaW4gY3lnd2luIG1vdW50cy4iOwor
CiAgICAgfQogICAgIGlmICggT05NYWluV2luZG93Ojpwb3J0YWJsZSApCiAgICAgewpAQCAtOTAx
Nyw3ICs5MjY2LDggQEAgdm9pZCBPTk1haW5XaW5kb3c6OnJlbW92ZUN5Z3dpbkVudHJ5KCkKICAg
ICBRU2V0dGluZ3Mgc3QgKCAiSEtFWV9DVVJSRU5UX1VTRVJcXFNvZnR3YXJlIgogICAgICAgICAg
ICAgICAgICAgICJcXEN5Z251cyBTb2x1dGlvbnNcXEN5Z3dpbiIsCiAgICAgICAgICAgICAgICAg
ICAgUVNldHRpbmdzOjpOYXRpdmVGb3JtYXQgKTsKLSAgICB4MmdvRGVidWc8PCJSZW1vdmluZyBj
eWd3aW5cbiI7CisgICAgeDJnb0RlYnVnPDwiUmVtb3ZpbmcgY3lnd2luLiI7CisKICAgICBzdC5y
ZW1vdmUgKCAiIiApOwogICAgIHN0LnN5bmMoKTsKIApAQCAtOTAyOCw3ICs5Mjc4LDkgQEAgdm9p
ZCBPTk1haW5XaW5kb3c6OnJlbW92ZUN5U29sRW50cnkoKQogICAgIFFTZXR0aW5ncyBzdCAoICJI
S0VZX0NVUlJFTlRfVVNFUlxcU29mdHdhcmUiCiAgICAgICAgICAgICAgICAgICAgIlxcQ3lnbnVz
IFNvbHV0aW9ucyIsCiAgICAgICAgICAgICAgICAgICAgUVNldHRpbmdzOjpOYXRpdmVGb3JtYXQg
KTsKLSAgICB4MmdvRGVidWc8PCJSZW1vdmluZyBjeWdudXMgc29sdXRpb25zXG4iOworCisgICAg
eDJnb0RlYnVnPDwiUmVtb3ZpbmcgY3lnbnVzIHNvbHV0aW9ucy4iOworCiAgICAgc3QucmVtb3Zl
ICggIiIgKTsKICAgICBzdC5zeW5jKCk7CiB9CkBAIC05MDQ1LDcgKzkyOTcsOSBAQCB2b2lkIE9O
TWFpbldpbmRvdzo6c3RhcnRQdWxzZWQoKQogICAgIFFEaXIgZHIgKCBob21lRGlyICk7CiAgICAg
ZHIubWtwYXRoICggcHVsc2VEaXIgKTsKICAgICBwdWxzZURpcj13YXBpU2hvcnRGaWxlTmFtZSAo
IHB1bHNlRGlyICk7Ci0gICAgeDJnb0RlYnVnPDwidGVtcGxhdGU6ICI8PHB1bHNlRGlyKyIvdG1w
Ijw8ZW5kbDsKKworICAgIHgyZ29EZWJ1Zzw8InB1bHNlIHRlbXBsYXRlOiAiPDxwdWxzZURpcisi
L3RtcCI7CisKICAgICBRVGVtcG9yYXJ5RmlsZSogZmw9bmV3IFFUZW1wb3JhcnlGaWxlICggcHVs
c2VEaXIrIi90bXAiICk7CiAgICAgZmwtPm9wZW4oKTsKICAgICBwdWxzZURpcj1mbC0+ZmlsZU5h
bWUoKTsKQEAgLTkwNTMsNyArOTMwNyw5IEBAIHZvaWQgT05NYWluV2luZG93OjpzdGFydFB1bHNl
ZCgpCiAgICAgZGVsZXRlIGZsOwogICAgIFFGaWxlOjpyZW1vdmUgKCBwdWxzZURpciApOwogICAg
IGRyLm1rcGF0aCAoIHB1bHNlRGlyICk7Ci0gICAgeDJnb0RlYnVnPDwicHVsc2UgdG1wIGZpbGU6
ICI8PHB1bHNlRGlyPDxlbmRsOworCisgICAgeDJnb0RlYnVnPDwicHVsc2UgdG1wIGZpbGU6ICI8
PHB1bHNlRGlyOworCiAgICAgUVN0cmluZ0xpc3QgcEVudj1RUHJvY2Vzczo6c3lzdGVtRW52aXJv
bm1lbnQoKTsKICAgICBmb3IgKCBpbnQgaT0wOyBpPHBFbnYuc2l6ZSgpOyArK2kgKQogICAgIHsK
QEAgLTkwOTMsMTIgKzkzNDksMTUgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnN0YXJ0UHVsc2VkKCkK
ICAgICBwdWxzZVNlcnZlci0+c2V0V29ya2luZ0RpcmVjdG9yeSAoIHdhcGlTaG9ydEZpbGVOYW1l
ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBEaXIrIlxc
cHVsc2UiICkgKTsKICAgICBwdWxzZVNlcnZlci0+c3RhcnQgKCAicHVsc2VcXHB1bHNlYXVkaW8u
ZXhlIixwdWxzZUFyZ3MgKTsKLSAgICB4MmdvRGVidWc8PCJzdGFydGluZyBwdWxzZVxccHVsc2Vh
dWRpby5leGUgIjw8cHVsc2VBcmdzLmpvaW4gKCAiICIgKSA8PAorCisgICAgeDJnb0RlYnVnPDwi
U3RhcnRpbmcgcHVsc2VcXHB1bHNlYXVkaW8uZXhlICI8PHB1bHNlQXJncy5qb2luICggIiAiICkg
PDwKICAgICAgICAgICAgICAiIHdvcmtpbmcgZGlyOiAiPDwKLSAgICAgICAgICAgICB3YXBpU2hv
cnRGaWxlTmFtZSAoIGFwcERpcisiXFxwdWxzZSIgKSA8PGVuZGw7CisgICAgICAgICAgICAgd2Fw
aVNob3J0RmlsZU5hbWUgKCBhcHBEaXIrIlxccHVsc2UiICk7CisKICAgICBwdWxzZVRpbWVyPW5l
dyBRVGltZXIodGhpcyk7Ci0gICAgeDJnb0RlYnVnPDwiY29ubmVjdCB0aW1lciI7CisKICAgICBj
b25uZWN0IChwdWxzZVRpbWVyLCBTSUdOQUwodGltZW91dCgpKSwgdGhpcywgU0xPVChzbG90Q2hl
Y2tQdWxzZSgpKSk7CisgICAgeDJnb0RlYnVnPDwiQ29ubmVjdGVkIHRpbWVyLiI7CiAgICAgcHVs
c2VUaW1lci0+c3RhcnQoMjAwMCk7CiB9CiAKQEAgLTkxMDgsNyArOTM2Nyw5IEBAIHZvaWQgT05N
YWluV2luZG93OjpzbG90Q2hlY2tQdWxzZSgpCiAgICAgaWYocHVsc2VTZXJ2ZXItPnN0YXRlKCkh
PVFQcm9jZXNzOjpSdW5uaW5nKQogICAgIHsKICAgICAgICAgcHVsc2VTZXJ2ZXItPnN0YXJ0ICgg
InB1bHNlXFxwdWxzZWF1ZGlvLmV4ZSIscHVsc2VBcmdzICk7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8
InJlc3RhcnRpbmcgcHVsc2VcXHB1bHNlYXVkaW8uZXhlICI8PHB1bHNlQXJncy5qb2luICggIiAi
ICk7CisKKyAgICAgICAgeDJnb0RlYnVnPDwiUmVzdGFydGluZyBwdWxzZVxccHVsc2VhdWRpby5l
eGUgIjw8cHVsc2VBcmdzLmpvaW4gKCAiICIgKTsKKwogICAgIH0KIH0KIApAQCAtOTExNiw3ICs5
Mzc3LDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RDaGVja1B1bHNlKCkKIC8vICNpZmRlZiBD
RkdDTElFTlQKIHZvaWQgT05NYWluV2luZG93Ojp4b3JnU2V0dGluZ3MoKQogewotICAgIHgyZ29E
ZWJ1Zzw8ImdldHRpbmcgeG9yZyBzZXR0aW5ncyI8PGVuZGw7CisKKyAgICB4MmdvRGVidWc8PCJH
ZXR0aW5nIFhvcmcgc2V0dGluZ3MuIjsKKwogCiAgICAgWDJnb1NldHRpbmdzIHN0ICggInNldHRp
bmdzIiApOwogCkBAIC05MTUxLDcgKzk0MTQsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6eG9yZ1Nl
dHRpbmdzKCkKIAogdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RTZXRXaW5TZXJ2ZXJzUmVhZHkoKQog
ewotICAgIHgyZ29EZWJ1Zzw8ImFsbCB3aW5zZXJ2ZXJzIGFyZSBzdGFydGVkXG4iOworCisgICAg
eDJnb0RlYnVnPDwiQWxsIHdpbnNlcnZlcnMgYXJlIHN0YXJ0ZWQuIjsKKwogICAgIHdpblNlcnZl
cnNSZWFkeT10cnVlOwogICAgIHJlc3RvcmVDeWdudXNTZXR0aW5ncygpOwogfQpAQCAtOTE3MSwx
MCArOTQzNiwxMiBAQCB2b2lkIE9OTWFpbldpbmRvdzo6Z2VuZXJhdGVFdGNGaWxlcygpCiAgICAg
ICAgIFFTdHJpbmcgc2lkLCBzeXMsIHVzZXIsIGdyc2lkLCBncm5hbWU7CiAgICAgICAgIGlmICgg
IXdhcGlBY2NvdW50SW5mbyAoICZzaWQsJnVzZXIsJmdyc2lkLCAmZ3JuYW1lLCAmc3lzICkgKQog
ICAgICAgICB7Ci0vLyAJCQl4MmdvRGVidWc8PCJHZXQgYWNjb3VudCBpbmZvIGZhaWxlZFxuIjsK
KworICAgICAgICAgICAgeDJnb0RlYnVnPDwiR2V0IGFjY291bnQgaW5mbyBmYWlsZWQuIjsKICAg
ICAgICAgICAgIGNsb3NlKCk7CiAgICAgICAgIH0KIAorCiAvLyAJCXgyZ29EZWJ1Zzw8InNpZDog
Ijw8c2lkIDw8IiBzeXN0ZW06Ijw8CiAvLyAJCXN5czw8ICIgdXNlcjogIjw8dXNlcjw8IiBncm91
cCBzaWQ6Ijw8Z3JzaWQ8PAogLy8gCQkiZ3JvdXAgbmFtZTogIjw8Z3JuYW1lPDxlbmRsOwpAQCAt
OTIwOSw3ICs5NDc2LDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OmdlbmVyYXRlRXRjRmlsZXMoKQog
ICAgICAgICAgICA8PGFwcERpcjw8Ii9zZnRwLXNlcnZlclxuIjsKICNlbmRpZgogICAgICAgICBm
aWxlLmNsb3NlKCk7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8ZXRjRGlyICsiL3NzaGRfY29uZmlnIGNy
ZWF0ZWQiOworCisgICAgICAgIHgyZ29EZWJ1Zzw8ZXRjRGlyICsiL3NzaGRfY29uZmlnIGNyZWF0
ZWQuIjsKKwogI2lmZGVmIFFfT1NfV0lOCiAgICAgfQogI2VuZGlmCkBAIC05MjIzLDcgKzk0OTIs
OSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6Z2VuZXJhdGVIb3N0RHNhS2V5KCkKICAgICBpZiAoICFR
RmlsZTo6ZXhpc3RzICggZXRjRGlyKyIvc3NoX2hvc3RfZHNhX2tleSIgKSB8fAogICAgICAgICAg
ICAgIVFGaWxlOjpleGlzdHMgKCBldGNEaXIrIi9zc2hfaG9zdF9kc2Ffa2V5LnB1YiIgKSApCiAg
ICAgewotICAgICAgICAvKgkJeDJnb0RlYnVnPDwiR2VuZXJhdGluZyBob3N0IERTQSBrZXlcbiI7
Ki8KKworICAgICAgICB4MmdvRGVidWc8PCJHZW5lcmF0aW5nIGhvc3QgRFNBIGtleS4iOworCiAj
aWZkZWYgUV9PU19XSU4KICAgICAgICAgUVN0cmluZyBmbmFtZT1jeWd3aW5QYXRoICggd2FwaVNo
b3J0RmlsZU5hbWUgKCBldGNEaXIgKSApICsKICAgICAgICAgICAgICAgICAgICAgICAiL3NzaF9o
b3N0X2RzYV9rZXkiOwpAQCAtOTI2Miw3ICs5NTMzLDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnN0
YXJ0U3NoZCgpCiAgICAgZGVza3RvcE5hbWUrPWdldGVudiAoICJVU0VSTkFNRSIgKTsKICAgICBj
aGFyKiBkZXNrdG9wPW5ldyBjaGFyW2Rlc2t0b3BOYW1lLnNpemUoKSArMV07CiAgICAgc3RyY3B5
ICggZGVza3RvcCxkZXNrdG9wTmFtZS5jX3N0cigpICk7Ci0gICAgeDJnb0RlYnVnPDwiQ3JlYXRp
bmcgZGVza3RvcDogIjw8ZGVza3RvcDw8ZW5kbDsKKworICAgIHgyZ29EZWJ1Zzw8IkNyZWF0aW5n
IGRlc2t0b3A6ICI8PGRlc2t0b3A7CisKICAgICBpZiAoICFDcmVhdGVEZXNrdG9wQSAoCiAgICAg
ICAgICAgICAgICAgZGVza3RvcCwKICAgICAgICAgICAgICAgICAwLApAQCAtOTI3Myw3ICs5NTQ2
LDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnN0YXJ0U3NoZCgpCiAgICAgICAgICAgICApICkKICAg
ICB7CiAgICAgICAgIHN0cmNweSAoIGRlc2t0b3AsIiIgKTsKLSAgICAgICAgeDJnb0RlYnVnPDwi
RGVza3RvcCBjcmVhdGlvbiBmYWlsZWQsIHVzaW5nIGRlZmF1bHRcbiI7CisKKyAgICAgICAgeDJn
b0RlYnVnPDwiRGVza3RvcCBjcmVhdGlvbiBmYWlsZWQsIHVzaW5nIGRlZmF1bHQuIjsKKwogICAg
IH0KICAgICBaZXJvTWVtb3J5ICggJnNpLCBzaXplb2YgKCBzaSApICk7CiAgICAgWmVyb01lbW9y
eSAoICZzc2hkLCBzaXplb2YgKCBzc2hkICkgKTsKQEAgLTkyOTksNyArOTU3NCw4IEBAIHZvaWQg
T05NYWluV2luZG93OjpzdGFydFNzaGQoKQogICAgIGFyZ3VtZW50czw8Ii1mIjw8ZXRjRGlyICsi
L3NzaGRfY29uZmlnIjw8ICItaCIgPDwKICAgICAgICAgICAgICBldGNEaXIrIi9zc2hfaG9zdF9k
c2Ffa2V5Ijw8Ii1EIjw8Ii1wIjw8Y2xpZW50U3NoUG9ydDsKICAgICBzc2hkLT5zdGFydCAoIGFw
cERpcisiL3NzaGQiLGFyZ3VtZW50cyApOwotICAgIHgyZ29EZWJ1Zzw8IlVzZXJtb2RlIHNzaGQg
c3RhcnRlZCI7CisgICAgeDJnb0RlYnVnPDwiVXNlcm1vZGUgc3NoZCBzdGFydGVkLiI7CisKICNl
bmRpZgogfQogCkBAIC05NDAxLDcgKzk2NzcsMTQgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RT
ZXRQcm94eVdpbkZ1bGxzY3JlZW4oKQogdm9pZCBPTk1haW5XaW5kb3c6OnJlc2l6ZVByb3h5V2lu
T25EaXNwbGF5KGludCBkaXNwKQogewogICAgIFFSZWN0IGdlb209UUFwcGxpY2F0aW9uOjpkZXNr
dG9wKCktPnNjcmVlbkdlb21ldHJ5KGRpc3AtMSk7Ci0gICAgLy94MmdvRGVidWc8PCJyZXNpemlu
ZyBwcm94eSB3aW4gdG8gZml0IGRpc3BsYXkgIjw8ZGlzcDw8IigiPDxnZW9tPDwiKSI8PGVuZGw7
CisKKyAgICBRU3RyaW5nIGdlb1N0ciA9CisgICAgICAgICAgICAiKHg6ICIgKyBRU3RyaW5nKCIl
MSIpLmFyZyhnZW9tLngoKSkgKworICAgICAgICAgICAgIiwgeTogIisgUVN0cmluZygiJTEiKS5h
cmcoZ2VvbS55KCkpICsKKyAgICAgICAgICAgICIsIHc6ICIrIFFTdHJpbmcoIiUxIikuYXJnKGdl
b20ud2lkdGgoKSkgKworICAgICAgICAgICAgIiwgaDogIisgUVN0cmluZygiJTEiKS5hcmcoZ2Vv
bS5oZWlnaHQoKSk7CisgICAgeDJnb0RlYnVnPDwiUmVzaXppbmcgcHJveHkgd2luZG93IHRvIGZp
dCBEaXNwbGF5OiAiICsgUVN0cmluZygiJTEiKS5hcmcoZGlzcCkgKyAiICIgKyBnZW9TdHI7CisK
ICNpZmRlZiBRX09TX0xJTlVYCiAgICAgWFN5bmMoUVgxMUluZm86OmRpc3BsYXkoKSxmYWxzZSk7
CiAgICAgWE1vdmVXaW5kb3coUVgxMUluZm86OmRpc3BsYXkoKSwgcHJveHlXaW5JZCxnZW9tLngo
KSxnZW9tLnkoKSk7CkBAIC05NDQ0LDE0ICs5NzI3LDIxIEBAIHZvaWQgT05NYWluV2luZG93Ojpz
bG90Q29uZmlnWGluZXJhbWEoKQogICAgIFFSZWN0IG5ld0dlb21ldHJ5PXByb3h5V2luR2VvbWV0
cnkoKTsKICAgICBpZiAobmV3R2VvbWV0cnkuaXNOdWxsKCkpCiAgICAgewotLy8gICAgIHgyZ29E
ZWJ1Zzw8ImVycm9yIGdldHRpbmcgd2luZG93IGdlb21ldHJ5ICh3aW5kb3cgY2xvc2VkPylcbiI7
CisgICAgICAgIHgyZ29XYXJuaW5nZig3KTw8IHRyKCJFcnJvciBnZXR0aW5nIHdpbmRvdyBnZW9t
ZXRyeSAod2luZG93IGNsb3NlZCk/Iik7CiAgICAgICAgIHhpbmVyYW1hVGltZXItPnN0b3AoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobmV3R2VvbWV0cnk9PWxhc3REaXNwbGF5
R2VvbWV0cnkpCiAgICAgICAgIHJldHVybjsKICAgICBsYXN0RGlzcGxheUdlb21ldHJ5PW5ld0dl
b21ldHJ5OwotLy8gICAgeDJnb0RlYnVnPDwiTmV3IHByb3h5IGdlb21ldHJ5OiAiPDxsYXN0RGlz
cGxheUdlb21ldHJ5PDxlbmRsOworCisgICAgUVN0cmluZyBnZW9TdHIgPQorICAgICAgICAgICAg
Iih4OiAiICsgUVN0cmluZygiJTEiKS5hcmcobGFzdERpc3BsYXlHZW9tZXRyeS54KCkpICsKKyAg
ICAgICAgICAgICIsIHk6ICIrIFFTdHJpbmcoIiUxIikuYXJnKGxhc3REaXNwbGF5R2VvbWV0cnku
eSgpKSArCisgICAgICAgICAgICAiLCB3OiAiKyBRU3RyaW5nKCIlMSIpLmFyZyhsYXN0RGlzcGxh
eUdlb21ldHJ5LndpZHRoKCkpICsKKyAgICAgICAgICAgICIsIGg6ICIrIFFTdHJpbmcoIiUxIiku
YXJnKGxhc3REaXNwbGF5R2VvbWV0cnkuaGVpZ2h0KCkpOworICAgIHgyZ29EZWJ1Zzw8Ik5ldyBw
cm94eSBnZW9tZXRyeTogIiArIGdlb1N0cjsKKwogICAgIFFEZXNrdG9wV2lkZ2V0KiByb290PVFB
cHBsaWNhdGlvbjo6ZGVza3RvcCgpOwogICAgIFFMaXN0PFFSZWN0PiBuZXdYaW5lcmFtYVNjcmVl
bnM7CiAgICAgZm9yIChpbnQgaT0wOyBpPCByb290LT5udW1TY3JlZW5zKCk7ICsraSkKQEAgLTk0
NjMsMTcgKzk3NTMsMTkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RDb25maWdYaW5lcmFtYSgp
CiAgICAgICAgICAgICBpbnRlcnNlY3Rpb249cm9vdC0+c2NyZWVuR2VvbWV0cnkoaSkuaW50ZXJz
ZWN0ZWQobGFzdERpc3BsYXlHZW9tZXRyeSk7CiAgICAgICAgIGlmICghaW50ZXJzZWN0aW9uLmlz
TnVsbCgpKQogICAgICAgICB7Ci0vLyAgICAgICAgICAgIHgyZ29EZWJ1Zzw8ImludGVyc2VjdGVk
IHdpdGggIjw8aTw8IjogIjw8aW50ZXJzZWN0aW9uPDxlbmRsOworICAgICAgICAgICAgLy8gICAg
ICAgICAgICB4MmdvRGVidWc8PCJpbnRlcnNlY3RlZCB3aXRoICI8PGk8PCI6ICI8PGludGVyc2Vj
dGlvbjw8ZW5kbDsKICAgICAgICAgICAgIGludGVyc2VjdGlvbi5tb3ZlTGVmdChpbnRlcnNlY3Rp
b24ueCgpLWxhc3REaXNwbGF5R2VvbWV0cnkueCgpKTsKICAgICAgICAgICAgIGludGVyc2VjdGlv
bi5tb3ZlVG9wKGludGVyc2VjdGlvbi55KCktbGFzdERpc3BsYXlHZW9tZXRyeS55KCkpOwotLy8g
ICAgICAgICAgICB4MmdvRGVidWc8PCJ4aW5lcmFtYSBzY3JlZW46ICI8PGludGVyc2VjdGlvbjw8
ZW5kbDsKKworICAgICAgICAgICAgLy8gICAgICAgICAgICB4MmdvRGVidWc8PCJ4aW5lcmFtYSBz
Y3JlZW46ICI8PGludGVyc2VjdGlvbjw8ZW5kbDsKICAgICAgICAgICAgIG5ld1hpbmVyYW1hU2Ny
ZWVuczw8aW50ZXJzZWN0aW9uOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICh4aW5lcmFtYVNj
cmVlbnMgIT0gbmV3WGluZXJhbWFTY3JlZW5zKQogICAgIHsKICAgICAgICAgeGluZXJhbWFTY3Jl
ZW5zPW5ld1hpbmVyYW1hU2NyZWVuczsKLS8vICAgICAgICB4MmdvRGVidWc8PCJ4aW5lcmFtYSBz
Y3JlZW4gY2hhbmdlZCwgbmV3IHNjcmVlbnM6ICI8PHhpbmVyYW1hU2NyZWVuczw8ZW5kbDsKKyAg
ICAgICAgLy8gICAgICAgIHgyZ29EZWJ1Zzw8InhpbmVyYW1hIHNjcmVlbiBjaGFuZ2VkLCBuZXcg
c2NyZWVuczogIjw8eGluZXJhbWFTY3JlZW5zPDxlbmRsOworCiAgICAgICAgIHhpbmVyYW1hVGlt
ZXItPnN0b3AoKTsKICAgICAgICAgUVN0cmluZ0xpc3Qgc2NyZWVuczsKICAgICAgICAgZm9yZWFj
aCAoUVJlY3QgZGlzcCwgeGluZXJhbWFTY3JlZW5zKQpAQCAtOTQ4Miw3ICs5Nzc0LDYgQEAgdm9p
ZCBPTk1haW5XaW5kb3c6OnNsb3RDb25maWdYaW5lcmFtYSgpCiAgICAgICAgIFFTdHJpbmcgY21k
PSJleHBvcnQgRElTUExBWT06IityZXN1bWluZ1Nlc3Npb24uZGlzcGxheSsiO3ByaW50ZiAnIitz
Y3JlZW5zLmpvaW4oIlxcXFxuIikrIicgPiAgfi8ueDJnby9DLSIrCiAgICAgICAgICAgICAgICAg
ICAgIHJlc3VtaW5nU2Vzc2lvbi5zZXNzaW9uSWQrIi94aW5lcmFtYS5jb25mIjsKIAotICAgICAg
ICB4MmdvRGVidWc8PGNtZDw8ZW5kbDsKICAgICAgICAgc3NoQ29ubmVjdGlvbi0+ZXhlY3V0ZUNv
bW1hbmQoY21kLCB0aGlzLCBTTE9UKHNsb3RYaW5lcmFtYUNvbmZpZ3VyZWQoKSkpOwogICAgIH0K
IH0KQEAgLTk1MTQsMTIgKzk4MDUsMTQgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RYaW5lcmFt
YUNvbmZpZ3VyZWQoKQogdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RGaW5kUHJveHlXaW4oKQogewog
I2lmbmRlZiBRX09TX0RBUldJTgotLy8gICAgIHgyZ29EZWJ1Zzw8InNlYXJjaCBwcm94eSB3aW46
ICI8PCJYMkdPLSIrcmVzdW1pbmdTZXNzaW9uLnNlc3Npb25JZDsKKyAgICB4MmdvRGVidWc8PCJT
ZWFyY2hpbmcgcHJveHkgd2luOiBYMkdPLSIgKyByZXN1bWluZ1Nlc3Npb24uc2Vzc2lvbklkOwor
CiAgICAgcHJveHlXaW5JZD1maW5kV2luZG93ICggIlgyR08tIityZXN1bWluZ1Nlc3Npb24uc2Vz
c2lvbklkICk7CiAgICAgYm9vbCB4aW5lcmFtYT1kZWZhdWx0WGluZXJhbWE7CiAgICAgaWYgKCBw
cm94eVdpbklkICkKICAgICB7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8InByb3h5IHdpbiBmb3VuZDoi
PDxwcm94eVdpbklkOworICAgICAgICB4MmdvRGVidWc8PCJQcm94eSB3aW4gZm91bmQ6ICIgKyBR
U3RyaW5nKCIlMSIpLmFyZyhwcm94eVdpbklkKTsKKwogICAgICAgICBzZXRQcm94eVdpblRpdGxl
KCk7CiAgICAgICAgIHByb3h5V2luVGltZXItPnN0b3AoKTsKICAgICAgICAgaWYgKCFlbWJlZE1v
ZGUpCkBAIC05NTU1LDcgKzk4NDgsOCBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdEZpbmRQcm94
eVdpbigpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoeGluZXJhbWEpCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwiU3RhcnRpbmcgeGluZXJhbWEgdGlt
ZXJcbiI7CisgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwiU3RhcnRpbmcgWGluZXJhbWEgVGlt
ZXIuIjsKKwogICAgICAgICAgICAgICAgIGxhc3REaXNwbGF5R2VvbWV0cnk9UVJlY3QoKTsKICAg
ICAgICAgICAgICAgICB4aW5lcmFtYVNjcmVlbnMuY2xlYXIoKTsKICAgICAgICAgICAgICAgICB4
aW5lcmFtYVRpbWVyLT5zdGFydCg1MDApOwpAQCAtOTU2NCwyMyArOTg1OCwyNiBAQCB2b2lkIE9O
TWFpbldpbmRvdzo6c2xvdEZpbmRQcm94eVdpbigpCiAKICAgICAgICAgaWYgKCBlbWJlZE1vZGUg
KQogICAgICAgICB7Ci0gICAgICAgICAgICB4MmdvRGVidWc8PCJjaGVja2luZyByb290bGVzcyBj
b25maWciOworICAgICAgICAgICAgeDJnb0RlYnVnPDwiQ2hlY2tpbmcgcm9vdGxlc3MgY29uZmln
LiI7CisKICAgICAgICAgICAgIGlmICggY29uZmlnLnJvb3RsZXNzICkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCJ3aW4gaXMgcm9vdGxlc3MiOworICAgICAgICAg
ICAgICAgIHgyZ29EZWJ1Zzw8IldpbmRvdyBpcyByb290bGVzcy4iOwogICAgICAgICAgICAgICAg
IGFjdF9lbWJlZENvbnRvbC0+c2V0RW5hYmxlZCAoIGZhbHNlICk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2xvdEF0dGFjaFByb3h5V2luZG93KCk7
CiAgICAgICAgIH0KICNpZmRlZiBRX09TX1dJTgotICAgICAgICB4MmdvRGVidWc8PCJtYXhpbWl6
ZVByb3h5V2luOiAiPDxtYXhpbWl6ZVByb3h5V2luOworICAgICAgICB4MmdvRGVidWc8PCJNYXhp
bWl6ZSBwcm94eSB3aW46ICI8PG1heGltaXplUHJveHlXaW47CisKICAgICAgICAgaWYgKCAhc3Rh
cnRFbWJlZGRlZCApCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICggbWF4aW1pemVQcm94eVdp
biApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgUURlc2t0b3BXaWRnZXQgZHc7Ci0g
ICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwibWFraW5nIHByb3h5IHdpbiBmdWxsIHNjcmVlbiI7
CisKKyAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCJNYWtpbmcgcHJveHkgd2luIGZ1bGwgc2Ny
ZWVuLiI7CiAgICAgICAgICAgICAgICAgd2FwaVNldEZTV2luZG93ICggKCBIV05EICkgcHJveHlX
aW5JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdy5zY3JlZW5HZW9tZXRy
eSAoIHRoaXMgKSApOwogICAgICAgICAgICAgICAgIC8qd2FwaVNob3dXaW5kb3cgKCAoIEhXTkQg
KSBwcm94eVdpbklkLApAQCAtOTYyMSw5ICs5OTE4LDggQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNs
b3REZXRhY2hQcm94eVdpbmRvdygpCiAgICAgLy9hbmQgcmVjb25uZWN0CiAgICAgaWYgKCAhZW1i
ZWRDb250cm9sQ2hhbmdlZCApCiAgICAgewotICAgICAgICB4MmdvRGVidWc8PCJcbiI7CiAgICAg
ICAgIHNsb3RGaW5kUHJveHlXaW4oKTsKLSAgICAgICAgeDJnb0RlYnVnPDwicHJveHkgd2luIGRl
dGFjaGVkLCBwcm94eXdpbiBpczoiPDxwcm94eVdpbklkPDxlbmRsOworICAgICAgICB4MmdvRGVi
dWc8PCJQcm94eSB3aW4gZGV0YWNoZWQsIHByb3h5d2luIGlzOiAiPDxwcm94eVdpbklkOwogICAg
IH0KICNlbmRpZgogICAgIGVtYmVkQ29udHJvbENoYW5nZWQ9ZmFsc2U7CkBAIC05NjMyLDcgKzk5
MjgsOCBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdERldGFjaFByb3h5V2luZG93KCkKIAogdm9p
ZCBPTk1haW5XaW5kb3c6OnNsb3RBdHRhY2hQcm94eVdpbmRvdygpCiB7Ci0gICAgeDJnb0RlYnVn
PDwic2xvdEF0dGFjaFByb3h5IjsKKyAgICB4MmdvRGVidWc8PCJzbG90QXR0YWNoUHJveHlXaW5k
b3cuIjsKKwogICAgIGlmICggc3RhcnRFbWJlZGRlZCApCiAgICAgewogICAgICAgICBlbWJlZENv
bnRyb2xDaGFuZ2VkPWZhbHNlOwpAQCAtOTY0Niw3ICs5OTQzLDkgQEAgdm9pZCBPTk1haW5XaW5k
b3c6OnNsb3RBdHRhY2hQcm94eVdpbmRvdygpCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAg
ICAgIHgyZ29EZWJ1Zzw8InN0YXJ0IGVtYmVkZGVkIHdhcyBmYWxzZSI7CisKKyAgICAgICAgeDJn
b0RlYnVnPDwiU3RhcnQgZW1iZWRkZWQgd2FzIGZhbHNlLiI7CisKICAgICAgICAgc3RhcnRFbWJl
ZGRlZD10cnVlOwogICAgIH0KIApAQCAtOTk1NCw3ICsxMDI1Myw5IEBAIHZvaWQgT05NYWluV2lu
ZG93OjpzbG90Q2hhbmdlS2JkTGF5b3V0KGNvbnN0IFFTdHJpbmcmIGxheW91dCkKICNpZmRlZiBR
X09TX0xJTlVYCiAgICAgUVN0cmluZ0xpc3QgYXJnczsKICAgICBhcmdzPDwiLWxheW91dCI8PGxh
eW91dDsKLSAgICB4MmdvRGVidWc8PCJydW5uaW5nIHNldHhrYm1hcCB3aXRoIHBhcmFtczogIjw8
YXJncy5qb2luKCIgIik7CisKKyAgICB4MmdvRGVidWc8PCJSdW5uaW5nIHNldHhrYm1hcCB3aXRo
IHBhcmFtczogIjw8YXJncy5qb2luKCIgIik7CisKICAgICBRUHJvY2Vzczo6c3RhcnREZXRhY2hl
ZCgic2V0eGtibWFwIixhcmdzKTsKICNlbmRpZgogfQpAQCAtMTA3MjcsOCArMTEwMjgsMTAgQEAg
dm9pZCBPTk1haW5XaW5kb3c6OnNsb3RBY3RpdmF0ZVdpbmRvdygpCiAgICAgICAgIFFBcHBsaWNh
dGlvbjo6c2V0QWN0aXZlV2luZG93ICggdGhpcyApIDsKICAgICAgICAgYWN0aXZhdGVXaW5kb3co
KTsKIAorCiAgICAgICAgIC8qCQl4MmdvRGVidWc8PCJmb2N1czoiPDxwYXNzLT5oYXNGb2N1cygp
OwotICAgICAgICAJCXgyZ29EZWJ1Zzw8ImFjdGl2OiI8PHBhc3MtPmlzQWN0aXZlV2luZG93KCk7
Ki8KKyAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCJhY3RpdjoiPDxwYXNzLT5pc0FjdGl2ZVdp
bmRvdygpOyovCisKICAgICAgICAgUVRpbWVyOjpzaW5nbGVTaG90ICggNTAsIHRoaXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNMT1QgKCBzbG90RW1iZWRUb29sQmFyVG9vbFRpcCgp
ICkgKTsKICAgICB9CkBAIC0xMDg3Niw3ICsxMTE3OSw2IEBAIFFTdHJpbmcgT05NYWluV2luZG93
Ojp1M0RhdGFQYXRoKCkKICAgICBRU3RyaW5nIGRwYXRoOwogICAgIGZvciAoIGludCBpPTA7IGk8
ZW52LnNpemUoKTsgKytpICkKICAgICB7Ci0vLyAJCXgyZ29EZWJ1ZyA8PCBlbnZbaV07CiAgICAg
ICAgIC8vY2hlY2sgaWYgd2UgaGF2ZSBVMyBTeXN0ZW0KICAgICAgICAgaWYgKCBlbnZbaV0uaW5k
ZXhPZiAoICJVM19BUFBfREFUQV9QQVRIPSIgKSA9PTAgKQogICAgICAgICB7CkBAIC0xMDkxMiwx
NCArMTEyMTQsMTggQEAgdm9pZCBPTk1haW5XaW5kb3c6OmNsZWFuUG9ydGFibGUoKQogCiB2b2lk
IE9OTWFpbldpbmRvdzo6cmVtb3ZlRGlyICggUVN0cmluZyBwYXRoICkKIHsKLSAgICB4MmdvRGVi
dWc8PCJlbnRlcmluZyAiIDw8cGF0aDsKKworICAgIHgyZ29EZWJ1Zzw8InJlbW92ZURpciwgZW50
ZXJpbmc6ICIgPDxwYXRoOworCiAgICAgUURpciBkciAoIHBhdGggKTsKICAgICBRU3RyaW5nTGlz
dCBmaWxlcz1kci5lbnRyeUxpc3QgKCBRRGlyOjpGaWxlcyApOwogICAgIGZvciAoIGludCBpPTA7
IGk8ZmlsZXMuc2l6ZSgpOyArK2kgKQogICAgIHsKICAgICAgICAgaWYgKCBmaWxlc1tpXSE9Imtu
b3duX2hvc3RzIiB8fCBjbGVhbkFsbEZpbGVzKQogICAgICAgICB7Ci0gICAgICAgICAgICB4Mmdv
RGVidWc8PCJjbGVhbmluZyBmaWxlOiI8PHBhdGgrIi8iK2ZpbGVzW2ldOworCisgICAgICAgICAg
ICB4MmdvRGVidWc8PCJDbGVhbmluZyBmaWxlOiAiPDxwYXRoKyIvIitmaWxlc1tpXTsKKwogICAg
ICAgICAgICAgZHIucmVtb3ZlICggcGF0aCsiLyIrZmlsZXNbaV0gKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTEwOTcxLDYgKzExMjc3LDcgQEAgbG9uZyBPTk1haW5XaW5kb3c6OlgxMUZpbmRXaW5k
b3cgKCBRU3RyaW5nIHRleHQsIGxvbmcgcm9vdFdpbiApCiAKIGxvbmcgT05NYWluV2luZG93Ojpm
aW5kV2luZG93ICggUVN0cmluZyB0ZXh0ICkKIHsKKyAgICB4MmdvRGVidWc8PCJTZWFyY2hpbmcg
d2luZG93IHdpdGggdGl0bGU6ICIgKyB0ZXh0OwogI2lmZGVmIFFfT1NfTElOVVgKICAgICByZXR1
cm4gWDExRmluZFdpbmRvdyAoIHRleHQgKTsKICNlbmRpZgpAQCAtMTA5ODUsNyArMTEyOTIsOSBA
QCBsb25nIE9OTWFpbldpbmRvdzo6ZmluZFdpbmRvdyAoIFFTdHJpbmcgdGV4dCApCiB2b2lkIE9O
TWFpbldpbmRvdzo6c2V0WDJnb2NvbmZpZyAoIGNvbnN0IFFTdHJpbmcmIHRleHQgKQogewogICAg
IG1feDJnb2NvbmZpZz10ZXh0OwotICAgIHgyZ29EZWJ1Zzw8ImhhdmUgc2Vzc2lvbiBjb25maWci
OworCisgICAgeDJnb0RlYnVnPDwiSGF2ZWluZyBhIHNlc3Npb24gY29uZmlnLiI7CisKICAgICBp
bml0V2lkZ2V0c0VtYmVkKCk7CiB9CiAKQEAgLTEwOTk1LDEyICsxMTMwNCwxNiBAQCB2b2lkIE9O
TWFpbldpbmRvdzo6ZG9QbHVnaW5Jbml0KCkKICAgICBEbF9pbmZvIGluZm87CiAgICAgZGxhZGRy
ICggKCB2b2lkKiApICYgKCBPTk1haW5XaW5kb3c6OmdldFBvcnRhYmxlICksJmluZm8gKTsKICAg
ICBRU3RyaW5nIGZuYW1lPWluZm8uZGxpX2ZuYW1lOworCiAgICAgeDJnb0RlYnVnPDwiQXBwbGlj
YXRpb24gbmFtZToiIDw8Zm5hbWU7CisKICAgICBRU3RyaW5nIGNsaWVudERpcjsKICAgICBRU3Ry
aW5nIHBsdWdpbkRpcjsKICAgICBpbnQgcG9zPWZuYW1lLmxhc3RJbmRleE9mICggIi8iICk7CiAg
ICAgcGx1Z2luRGlyPWZuYW1lLmxlZnQgKCBwb3MgKTsKLSAgICB4MmdvRGVidWc8PCJQbHVnaW4g
RGlyOiIgPDxwbHVnaW5EaXI7CisKKyAgICB4MmdvRGVidWc8PCJQbHVnaW4gZGlyZWN0b3J5OiAi
IDw8cGx1Z2luRGlyOworCiAgICAgUURpciBkciAoIHBsdWdpbkRpciApOwogICAgIGlmICggZHIu
ZXhpc3RzICggIngyZ29jbGllbnQveDJnb2NsaWVudCIgKSApCiAgICAgewpAQCAtMTEwMjYsNyAr
MTEzMzksOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6ZG9QbHVnaW5Jbml0KCkKICAgICAgICAgICAg
IGNsaWVudERpcj1wbHVnaW5EaXI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgeDJnb0RlYnVnPDwi
Q2xpZW50IERpcjoiPDxjbGllbnREaXI7CisKKyAgICB4MmdvRGVidWc8PCJDbGllbnQgZGlyZWN0
b3J5OiAiPDxjbGllbnREaXI7CisKICAgICBRU3RyaW5nIHBhdGg9Z2V0ZW52ICggIlBBVEgiICk7
CiAgICAgcGF0aD1jbGllbnREaXIrIjoiK3BsdWdpbkRpcisiOiIrcGF0aDsKICAgICBzZXRlbnYg
KCAiUEFUSCIscGF0aC50b0FzY2lpICgpLDEgKTsKQEAgLTExMTAyLDcgKzExNDE3LDkgQEAgdm9p
ZCBPTk1haW5XaW5kb3c6OnNsb3RVcGRhdGVFbWJlZFdpbmRvdygpCiAgICAgICAgIG9sZENvbnRh
aW5lclNpemU9ZW1iZWRDb250YWluZXItPnNpemUoKTsKICAgICAgICAgb2xkQ2hpbGRQb3M9IG1h
cFRvR2xvYmFsICgKICAgICAgICAgICAgICAgICAgICAgICAgICBRUG9pbnQgKCAwLDAgKSApOwot
ICAgICAgICB4MmdvRGVidWc8PCJ1cGRhdGluZyBlbWJlZGRlZCB3aW5kb3ciPDxlbmRsOworCisg
ICAgICAgIHgyZ29EZWJ1Zzw8IlVwZGF0aW5nIGVtYmVkZGVkIHdpbmRvdy4iOworCiAgICAgfQog
fQogCkBAIC0xMTExNSw3ICsxMTQzMiw5IEBAIHZvaWQgT05NYWluV2luZG93OjplbWJlZFdpbmRv
dyAoIGxvbmcgd25kSWQgKQogICAgIGNoaWxkSWQ9d25kSWQ7CiAgICAgZW1iZWRDb250YWluZXIt
PnNob3coKTsKICNpZmRlZiBRX09TX0xJTlVYCi0gICAgeDJnb0RlYnVnPDwiZW1iZWRkaW5nICI8
PHduZElkPDwiIGluIGNvbnRhaW5lciI8PGVuZGw7CisKKyAgICB4MmdvRGVidWc8PCJFbWJlZGRp
bmcgd2luZG93IHdpdGggaWQgIjw8d25kSWQ8PCIgaW4gY29udGFpbmVyLiI7CisKICAgICBlbWJl
ZENvbnRhaW5lci0+ZW1iZWRDbGllbnQgKCB3bmRJZCApOwogI2VuZGlmCiAjaWZkZWYgUV9PU19X
SU4KZGlmZiAtLWdpdCBhL29ubWFpbndpbmRvdy5oIGIvb25tYWlud2luZG93LmgKaW5kZXggNWE0
OGNiYS4uNDFlZWNhNyAxMDA2NDQKLS0tIGEvb25tYWlud2luZG93LmgKKysrIGIvb25tYWlud2lu
ZG93LmgKQEAgLTMyNCw2ICszMjQsOSBAQCBwdWJsaWM6CiAgICAgICAgIEFSVFMsCiAgICAgICAg
IEVTRAogICAgIH07CisKKyAgICBzdGF0aWMgYm9vbCBkZWJ1Z2dpbmc7CisKICAgICBzdGF0aWMg
Ym9vbCBwb3J0YWJsZTsKICAgICBPTk1haW5XaW5kb3cgKCBRV2lkZ2V0ICpwYXJlbnQgPSAwICk7
CiAgICAgfk9OTWFpbldpbmRvdygpOwpkaWZmIC0tZ2l0IGEvc2hvd19wcmludG91dHMuc2ggYi9z
aG93X3ByaW50b3V0cy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zZjE2
YzI0Ci0tLSAvZGV2L251bGwKKysrIGIvc2hvd19wcmludG91dHMuc2gKQEAgLTAsMCArMSwzMCBA
QAorIyEvYmluL2Jhc2gKKworZGllICgpIHsKKyAgICBlY2hvID4mMiAiJEAiCisgICAgZXhpdCAx
Cit9CisKK1sgIiQjIiAtZXEgMSBdIHx8IGRpZSAiWW91IGhhdmUgdG8gcHJvdmlkZSB0aGUgZmls
ZW5hbWUgdG8gYmUgcGFyc2VkIGZvciBwcmludG91dHMsIGV4aXRpbmcuIgorCitlY2hvICItLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKK2VjaG8gIkRFQlVHUyIK
K2VjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorY2F0
IC1uICQxIHwgZ3JlcCAneDJnb0RlYnVnJyAgICAgfCBzZWQgLWUgJ3MvXCheXHMqWzAtOV0qXClb
IFx0XC9cKl0qeDJnb0RlYnVnXHMqPDxccypcKC4qXCkkL1wxOlx0IFwyLycgICB8IHNlZCAtZSAn
cy8sLy9nJyB8IHNvcnQgLWsxbgorZWNobyAiJERFQlVHUyIKKworZWNobyAiLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCitlY2hvICJJTkZPUyIKK2VjaG8gIi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorY2F0IC1uICQxIHwg
Z3JlcCAneDJnb0luZm9mKCcgICAgfCBzZWQgLWUgJ3MvXCheXHMqWzAtOV0qXClbIFx0XC9cKl0q
eDJnb0luZm9mKFwoWzAtOV0qXCkpXHMqPDxccypcKC4qXCkkL1wxOlx0XDJcdFwzLycgICAgfCBz
ZWQgLWUgJ3MvLC8vZycgfCBzb3J0IC1rMm4KKworZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCitlY2hvICJXQVJOSU5HUyIKK2VjaG8gIi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorY2F0IC1uICQxIHwgZ3JlcCAn
eDJnb1dhcm5pbmdmKCcgfCBzZWQgLWUgJ3MvXCheXHMqWzAtOV0qXClbIFx0XC9cKl0qeDJnb1dh
cm5pbmdmKFwoWzAtOV0qXCkpXHMqPDxccypcKC4qXCkkL1wxOlx0XDJcdFwzLycgfCBzZWQgLWUg
J3MvLC8vZycgfCBzb3J0IC1rMm4KKworZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0iCitlY2hvICJFUlJPUlMiCitlY2hvICItLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKK2NhdCAtbiAkMSB8IGdyZXAgJ3gyZ29FcnJv
cmYoJyAgIHwgc2VkIC1lICdzL1woXlxzKlswLTldKlwpWyBcdFwvXCpdKngyZ29FcnJvcmYoXChb
MC05XSpcKSlccyo8PFxzKlwoLipcKSQvXDE6XHRcMlx0XDMvJyAgIHwgc2VkIC1lICdzLywvL2cn
IHwgc29ydCAtazJuCisKZGlmZiAtLWdpdCBhL3NzaG1hc3RlcmNvbm5lY3Rpb24uY3BwIGIvc3No
bWFzdGVyY29ubmVjdGlvbi5jcHAKaW5kZXggMGRiNDA3Ny4uMGI2YmViOSAxMDA2NDQKLS0tIGEv
c3NobWFzdGVyY29ubmVjdGlvbi5jcHAKKysrIGIvc3NobWFzdGVyY29ubmVjdGlvbi5jcHAKQEAg
LTMxOSw3ICszMTksOSBAQCB2b2lkIFNzaE1hc3RlckNvbm5lY3Rpb246OnJ1bigpCiAgICAgICAg
IGlmICggc3NoX2luaXQoKSAhPTAgKQogICAgICAgICB7CiAgICAgICAgICAgICBRU3RyaW5nIGVy
cj10ciAoICJDYW4gbm90IGluaXRpYWxpemUgbGlic3NoIiApOworI2lmZGVmIERFQlVHCiAgICAg
ICAgICAgICB4MmdvRGVidWc8PGVycjw8ZW5kbDsKKyNlbmRpZgogICAgICAgICAgICAgZW1pdCBj
b25uZWN0aW9uRXJyb3IgKCBlcnIsIiIgKTsKICAgICAgICAgICAgIHF1aXQoKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTM0NSw3ICszNDcsOSBAQCB2b2lkIFNzaE1hc3RlckNvbm5lY3Rpb246
OnJ1bigpCiAgICAgaWYgKCBteV9zc2hfc2Vzc2lvbiA9PSBOVUxMICkKICAgICB7CiAgICAgICAg
IFFTdHJpbmcgZXJyPXRyICggIkNhbiBub3QgY3JlYXRlIHNzaCBzZXNzaW9uIiApOworI2lmZGVm
IERFQlVHCiAgICAgICAgIHgyZ29EZWJ1Zzw8ZXJyPDxlbmRsOworI2VuZGlmCiAgICAgICAgIGVt
aXQgY29ubmVjdGlvbkVycm9yICggZXJyLCIiICk7CiAgICAgICAgIGlmICggcmV2ZXJzZVR1bm5l
bCApCiAgICAgICAgICAgICBlbWl0IGlvRXJyICggcmV2ZXJzZVR1bm5lbENyZWF0b3IsZXJyLCIi
ICk7CkBAIC0zNzMsNyArMzc3LDkgQEAgdm9pZCBTc2hNYXN0ZXJDb25uZWN0aW9uOjpydW4oKQog
ICAgICAgICBpZiAoIXRjcFByb3h5U29ja2V0LT53YWl0Rm9yQ29ubmVjdGVkKDMwMDAwKSkKICAg
ICAgICAgewogICAgICAgICAgICAgUVN0cmluZyBtZXNzYWdlPXRyICggIkNhbiBub3QgY29ubmVj
dCB0byBwcm94eSBzZXJ2ZXIiICk7CisjaWZkZWYgREVCVUcKICAgICAgICAgICAgIHgyZ29EZWJ1
Zzw8bWVzc2FnZTw8ZW5kbDsKKyNlbmRpZgogICAgICAgICAgICAgZW1pdCBjb25uZWN0aW9uRXJy
b3IgKCAiUHJveHkiLCBtZXNzYWdlICk7CiAgICAgICAgICAgICBzc2hfZnJlZSAoIG15X3NzaF9z
ZXNzaW9uICk7CiAgICAgICAgICAgICBxdWl0KCk7CkBAIC0zOTQsMTIgKzQwMCwxNiBAQCB2b2lk
IFNzaE1hc3RlckNvbm5lY3Rpb246OnJ1bigpCiAgICAgewogICAgICAgICBpZihkaXNjb25uZWN0
U2Vzc2lvbkZsYWcpCiAgICAgICAgIHsKKyNpZmRlZiBERUJVRwogICAgICAgICAgICAgeDJnb0Rl
YnVnPDwic2Vzc2lvbiBhbHJlYWR5IGRpc2Nvbm5lY3RlZCwgZXhpdGluZyI8PGVuZGw7CisjZW5k
aWYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBRU3RyaW5nIGVycj1z
c2hfZ2V0X2Vycm9yICggbXlfc3NoX3Nlc3Npb24gKTsKICAgICAgICAgUVN0cmluZyBtZXNzYWdl
PXRyICggIkNhbiBub3QgY29ubmVjdCB0byAiICkgK2hvc3QrIjoiK1FTdHJpbmc6Om51bWJlciAo
IHBvcnQgKTsKKyNpZmRlZiBERUJVRwogICAgICAgICB4MmdvRGVidWc8PG1lc3NhZ2U8PCIgLSAi
PDxlcnI7CisjZW5kaWYKICAgICAgICAgZW1pdCBjb25uZWN0aW9uRXJyb3IgKCBtZXNzYWdlLCBl
cnIgKTsKICAgICAgICAgaWYgKCByZXZlcnNlVHVubmVsICkKICAgICAgICAgICAgIGVtaXQgaW9F
cnIgKCByZXZlcnNlVHVubmVsQ3JlYXRvcixtZXNzYWdlLGVyciApOwpAQCAtNDA5LDcgKzQxOSw5
IEBAIHZvaWQgU3NoTWFzdGVyQ29ubmVjdGlvbjo6cnVuKCkKICAgICB9CiAgICAgaWYoZGlzY29u
bmVjdFNlc3Npb25GbGFnKQogICAgIHsKKyNpZmRlZiBERUJVRwogICAgICAgICB4MmdvRGVidWc8
PCJzZXNzaW9uIGFscmVhZHkgZGlzY29ubmVjdGVkLCBleGl0aW5nIjw8ZW5kbDsKKyNlbmRpZgog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFFTdHJpbmcgZXJyTXNnOwpAQCAtNDE4LDcgKzQz
MCw5IEBAIHZvaWQgU3NoTWFzdGVyQ29ubmVjdGlvbjo6cnVuKCkKICAgICB7CiAgICAgICAgIGlm
KGRpc2Nvbm5lY3RTZXNzaW9uRmxhZykKICAgICAgICAgeworI2lmZGVmIERFQlVHCiAgICAgICAg
ICAgICB4MmdvRGVidWc8PCJzZXNzaW9uIGFscmVhZHkgZGlzY29ubmVjdGVkLCBleGl0aW5nIjw8
ZW5kbDsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHdy
aXRlSG9zdEtleT13cml0ZUhvc3RLZXlSZWFkeT1mYWxzZTsKQEAgLTQ0Myw3ICs0NTcsOSBAQCB2
b2lkIFNzaE1hc3RlckNvbm5lY3Rpb246OnJ1bigpCiAKICAgICBpZihkaXNjb25uZWN0U2Vzc2lv
bkZsYWcpCiAgICAgeworI2lmZGVmIERFQlVHCiAgICAgICAgIHgyZ29EZWJ1Zzw8InNlc3Npb24g
YWxyZWFkeSBkaXNjb25uZWN0ZWQsIGV4aXRpbmciPDxlbmRsOworI2VuZGlmCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgc3NoX29wdGlvbnNfc2V0ICggbXlfc3NoX3Nlc3Npb24sIFNTSF9P
UFRJT05TX1VTRVIsIHVzZXIudG9Bc2NpaSgpICk7CkBAIC00NTksNyArNDc1LDkgQEAgdm9pZCBT
c2hNYXN0ZXJDb25uZWN0aW9uOjpydW4oKQogICAgIHsKICAgICAgICAgaWYoZGlzY29ubmVjdFNl
c3Npb25GbGFnKQogICAgICAgICB7CisjaWZkZWYgREVCVUcKICAgICAgICAgICAgIHgyZ29EZWJ1
Zzw8InNlc3Npb24gYWxyZWFkeSBkaXNjb25uZWN0ZWQsIGV4aXRpbmciPDxlbmRsOworI2VuZGlm
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICNpZmRlZiBERUJVRwpAQCAtNDcxLDE0
ICs0ODksMTggQEAgdm9pZCBTc2hNYXN0ZXJDb25uZWN0aW9uOjpydW4oKQogICAgIHsKICAgICAg
ICAgaWYoZGlzY29ubmVjdFNlc3Npb25GbGFnKQogICAgICAgICB7CisjaWZkZWYgREVCVUcKICAg
ICAgICAgICAgIHgyZ29EZWJ1Zzw8InNlc3Npb24gYWxyZWFkeSBkaXNjb25uZWN0ZWQsIGV4aXRp
bmciPDxlbmRsOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgUVN0cmluZyBlcnI7CiAgICAgICAgIGlmICgha2VyYmVyb3MpCiAgICAgICAgICAgICBlcnI9
c3NoX2dldF9lcnJvciAoIG15X3NzaF9zZXNzaW9uICk7CiAgICAgICAgIFFTdHJpbmcgbWVzc2Fn
ZT10ciAoICJBdXRoZW50aWNhdGlvbiBmYWlsZWQiICk7CisjaWZkZWYgREVCVUcKICAgICAgICAg
eDJnb0RlYnVnPDxtZXNzYWdlPDwiIC0gIjw8ZXJyOworI2VuZGlmCiAgICAgICAgIGVtaXQgdXNl
ckF1dGhFcnJvciAoIGF1dGhFcnJvcnMuam9pbiAoICJcbiIgKSApOwogICAgICAgICBpZiAoIHJl
dmVyc2VUdW5uZWwgKQogICAgICAgICAgICAgZW1pdCBpb0VyciAoIHJldmVyc2VUdW5uZWxDcmVh
dG9yLG1lc3NhZ2UsZXJyICk7CkBAIC01MDQsMTIgKzUyNiwxNiBAQCB2b2lkIFNzaE1hc3RlckNv
bm5lY3Rpb246OnJ1bigpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmKGRpc2Nvbm5lY3RTZXNz
aW9uRmxhZykKICAgICAgICAgICAgIHsKKyNpZmRlZiBERUJVRwogICAgICAgICAgICAgICAgIHgy
Z29EZWJ1Zzw8InNlc3Npb24gYWxyZWFkeSBkaXNjb25uZWN0ZWQsIGV4aXRpbmciPDxlbmRsOwor
I2VuZGlmCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgUVN0cmluZyBlcnI9c3NoX2dldF9lcnJvciAoIG15X3NzaF9zZXNzaW9uICk7CiAgICAgICAg
ICAgICBRU3RyaW5nIG1lc3NhZ2U9dHIgKCAiY2hhbm5lbF9mb3J3YXJkX2xpc3RlbiBmYWlsZWQi
ICk7CisjaWZkZWYgREVCVUcKICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8bWVzc2FnZTw8IiAtICI8
PGVycjsKKyNlbmRpZgogICAgICAgICAgICAgZW1pdCBpb0VyciAoIHJldmVyc2VUdW5uZWxDcmVh
dG9yLCBtZXNzYWdlLCBlcnIgKTsKICAgICAgICAgICAgIHNzaF9kaXNjb25uZWN0ICggbXlfc3No
X3Nlc3Npb24gKTsKICAgICAgICAgICAgIHNzaF9mcmVlICggbXlfc3NoX3Nlc3Npb24gKTsKQEAg
LTkyMywxMyArOTQ5LDE3IEBAIHZvaWQgU3NoTWFzdGVyQ29ubmVjdGlvbjo6Y29weSgpCiAgICAg
ICAgIHNzaF9zY3Agc2NwPXNzaF9zY3BfbmV3ICggbXlfc3NoX3Nlc3Npb24sIFNTSF9TQ1BfV1JJ
VEV8U1NIX1NDUF9SRUNVUlNJVkUsIGRzdFBhdGgudG9Bc2NpaSgpICk7CiAgICAgICAgIGlmICgg
c2NwID09IE5VTEwgKQogICAgICAgICB7CisjaWZkZWYgREVCVUcKICAgICAgICAgICAgIHgyZ29E
ZWJ1Zzw8IkVycm9yIGFsbG9jYXRpbmcgc2NwIHNlc3Npb246ICI8PCBzc2hfZ2V0X2Vycm9yICgg
bXlfc3NoX3Nlc3Npb24gKSA8PGVuZGw7CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBpbnQgcmMgPSBzc2hfc2NwX2luaXQgKCBzY3AgKTsKICAgICAgICAg
aWYgKCByYyAhPSBTU0hfT0sgKQogICAgICAgICB7CisjaWZkZWYgREVCVUcKICAgICAgICAgICAg
IHgyZ29EZWJ1Zzw8IkVycm9yIGluaXRpYWxpemluZyBzY3Agc2Vzc2lvbjogIjw8IHNzaF9nZXRf
ZXJyb3IgKCBteV9zc2hfc2Vzc2lvbiApIDw8ZW5kbDsKKyNlbmRpZgogICAgICAgICAgICAgc3No
X3NjcF9mcmVlICggc2NwICk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTk1
MCw3ICs5ODAsOSBAQCB2b2lkIFNzaE1hc3RlckNvbm5lY3Rpb246OmNvcHkoKQogICAgICAgICB7
CiAgICAgICAgICAgICBRU3RyaW5nIGVyck1zZz10ciAoICJDYW4gbm90IGNyZWF0ZSByZW1vdGUg
ZmlsZSAiICkgK2NvcHlSZXF1ZXN0c1tpXS5kc3Q7CiAgICAgICAgICAgICBRU3RyaW5nIHNlcnI9
c3NoX2dldF9lcnJvciAoIG15X3NzaF9zZXNzaW9uICk7CisjaWZkZWYgREVCVUcKICAgICAgICAg
ICAgIHgyZ29EZWJ1Zzw8ZXJyTXNnPDwiIC0gIjw8c2Vycjw8ZW5kbDsKKyNlbmRpZgogICAgICAg
ICAgICAgZW1pdCBjb3B5RXJyICggY29weVJlcXVlc3RzW2ldLmNyZWF0b3IsIGVyck1zZywgc2Vy
ciApOwogICAgICAgICAgICAgY29weVJlcXVlc3RzLnJlbW92ZUF0ICggaSApOwogICAgICAgICAg
ICAgc3NoX3NjcF9jbG9zZSAoIHNjcCApOwpAQCAtOTYyLDcgKzk5NCw5IEBAIHZvaWQgU3NoTWFz
dGVyQ29ubmVjdGlvbjo6Y29weSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIFFTdHJpbmcgc2Vy
cj1zc2hfZ2V0X2Vycm9yICggbXlfc3NoX3Nlc3Npb24gKTsKICAgICAgICAgICAgIFFTdHJpbmcg
ZXJyTXNnPXRyICggIkNhbiBub3Qgd3JpdGUgdG8gcmVtb3RlIGZpbGUgIiApICtjb3B5UmVxdWVz
dHNbaV0uZHN0OworI2lmZGVmIERFQlVHCiAgICAgICAgICAgICB4MmdvRGVidWc8PGVyck1zZzw8
IiAtICI8PHNlcnI8PGVuZGw7CisjZW5kaWYKICAgICAgICAgICAgIGVtaXQgY29weUVyciAoIGNv
cHlSZXF1ZXN0c1tpXS5jcmVhdG9yLCBlcnJNc2csIHNlcnIgKTsKICAgICAgICAgICAgIGNvcHlS
ZXF1ZXN0cy5yZW1vdmVBdCAoIGkgKTsKICAgICAgICAgICAgIHNzaF9zY3BfY2xvc2UgKCBzY3Ag
KTsKQEAgLTEwNzUsNyArMTEwOSw5IEBAIHZvaWQgU3NoTWFzdGVyQ29ubmVjdGlvbjo6Y2hhbm5l
bExvb3AoKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBl
cnJNc2c9dHIgKCAiY2FuIG5vdCBjb25uZWN0IHRvICIgKSArCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldmVyc2VUdW5uZWxMb2NhbEhvc3QrIjoiK1FTdHJpbmc6Om51bWJl
ciAoIHJldmVyc2VUdW5uZWxMb2NhbFBvcnQgKTsKKyNpZmRlZiBERUJVRwogICAgICAgICAgICAg
ICAgICAgICB4MmdvRGVidWc8PGVyck1zZzw8ZW5kbDsKKyNlbmRpZgogICAgICAgICAgICAgICAg
ICAgICBlbWl0IGlvRXJyICggcmV2ZXJzZVR1bm5lbENyZWF0b3IsIGVyck1zZywgIiIgKTsKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTEwOCw3
ICsxMTQ0LDkgQEAgdm9pZCBTc2hNYXN0ZXJDb25uZWN0aW9uOjpjaGFubmVsTG9vcCgpCiAgICAg
ICAgIGNoYW5uZWxDb25uZWN0aW9uc011dGV4LmxvY2soKTsKICAgICAgICAgaWYgKCBjaGFubmVs
Q29ubmVjdGlvbnMuc2l6ZSgpIDw9MCApCiAgICAgICAgIHsKLS8vICAgICAgICAgICAgIHgyZ29E
ZWJ1Zzw8Im5vIGNoYW5uZWwgY29ubmVjdGlvbnMsIHdhaXRpbmdcbiI7CisjaWZkZWYgREVCVUcK
KyAgICAgICAgICAgIC8vICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8Im5vIGNoYW5uZWwgY29ubmVj
dGlvbnMsIHdhaXRpbmdcbiI7CisjZW5kaWYKICAgICAgICAgICAgIGNoYW5uZWxDb25uZWN0aW9u
c011dGV4LnVubG9jaygpOwogICAgICAgICAgICAgdXNsZWVwICggNTAwICk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKQEAgLTExNDgsNyArMTE4Niw5IEBAIHZvaWQgU3NoTWFzdGVyQ29ubmVjdGlv
bjo6Y2hhbm5lbExvb3AoKQogICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBlcnI9c3No
X2dldF9lcnJvciAoIG15X3NzaF9zZXNzaW9uICk7CiAgICAgICAgICAgICAgICAgICAgICAgICBR
U3RyaW5nIGVycm9yTXNnPXRyICggImNoYW5uZWxfb3Blbl9mb3J3YXJkIGZhaWxlZCIgKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGVtaXQgaW9FcnIgKCBjaGFubmVsQ29ubmVjdGlvbnNbaV0u
Y3JlYXRvciwgZXJyb3JNc2csIGVyciApOworI2lmZGVmIERFQlVHCiAgICAgICAgICAgICAgICAg
ICAgICAgICB4MmdvRGVidWc8PGVycm9yTXNnPDwiOiAiPDxlcnI8PGVuZGw7CisjZW5kaWYKICAg
ICAgICAgICAgICAgICAgICAgfQogI2lmZGVmIERFQlVHCiAgICAgICAgICAgICAgICAgICAgIGVs
c2UKQEAgLTExNjcsMTQgKzEyMDcsMTggQEAgdm9pZCBTc2hNYXN0ZXJDb25uZWN0aW9uOjpjaGFu
bmVsTG9vcCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIGVycj1zc2hfZ2V0X2Vy
cm9yICggbXlfc3NoX3Nlc3Npb24gKTsKICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcg
ZXJyb3JNc2c9dHIgKCAiY2hhbm5lbF9vcGVuX3Nlc3Npb24gZmFpbGVkIiApOwogICAgICAgICAg
ICAgICAgICAgICAgICAgZW1pdCBpb0VyciAoIGNoYW5uZWxDb25uZWN0aW9uc1tpXS5jcmVhdG9y
LCBlcnJvck1zZywgZXJyICk7CisjaWZkZWYgREVCVUcKICAgICAgICAgICAgICAgICAgICAgICAg
IHgyZ29EZWJ1Zzw8ZXJyb3JNc2c8PCI6ICI8PGVycjw8ZW5kbDsKKyNlbmRpZgogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBjaGFubmVsX3JlcXVl
c3RfZXhlYyAoIGNoYW5uZWwsIGNoYW5uZWxDb25uZWN0aW9uc1tpXS5jb21tYW5kLnRvQXNjaWko
KSApICE9IFNTSF9PSyApCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIFFTdHJpbmcgZXJyPXNzaF9nZXRfZXJyb3IgKCBteV9zc2hfc2Vzc2lvbiApOwogICAg
ICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBlcnJvck1zZz10ciAoICJjaGFubmVsX3JlcXVl
c3RfZXhlYyBmYWlsZWQiICk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0IGlvRXJyICgg
Y2hhbm5lbENvbm5lY3Rpb25zW2ldLmNyZWF0b3IsIGVycm9yTXNnLCBlcnIgKTsKKyNpZmRlZiBE
RUJVRwogICAgICAgICAgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDxlcnJvck1zZzw8IjogIjw8
ZXJyPDxlbmRsOworI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIH0KICNpZmRlZiBERUJVRwog
ICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC0xMTk2LDExICsxMjQwLDE1IEBAIHZvaWQgU3No
TWFzdGVyQ29ubmVjdGlvbjo6Y2hhbm5lbExvb3AoKQogCiAgICAgICAgIGlmICggcmV0dmFsID09
IC0xICkKICAgICAgICAgeworI2lmZGVmIERFQlVHCiAgICAgICAgICAgICB4MmdvRGVidWc8PCJz
ZWxlY3QgZXJyb3JcbiI7CisjZW5kaWYKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAKLS8vICAgICAgICAgeDJnb0RlYnVnPDwic2VsZWN0IGV4aXRlZCI8PGVuZGw7CisjaWZkZWYg
REVCVUcKKyAgICAgICAgLy8gICAgICAgICB4MmdvRGVidWc8PCJzZWxlY3QgZXhpdGVkIjw8ZW5k
bDsKKyNlbmRpZgogCiAgICAgICAgIGNoYW5uZWxDb25uZWN0aW9uc011dGV4LmxvY2soKTsKICAg
ICAgICAgZm9yICggaW50IGk9Y2hhbm5lbENvbm5lY3Rpb25zLnNpemUoKS0xOyBpPj0wOyAtLWkg
KQpAQCAtMTIxMSwxMCArMTI1OSwxNCBAQCB2b2lkIFNzaE1hc3RlckNvbm5lY3Rpb246OmNoYW5u
ZWxMb29wKCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICggY2hh
bm5lbF9wb2xsICggY2hhbm5lbCwxICkgPjAgKQogICAgICAgICAgICAgewotLy8gICAgICAgICAg
ICAgIHgyZ29EZWJ1Zzw8InJlYWQgZXJyIGRhdGEgZnJvbSBjaGFubmVsXG4iOworI2lmZGVmIERF
QlVHCisgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8InJlYWQgZXJy
IGRhdGEgZnJvbSBjaGFubmVsXG4iOworI2VuZGlmCiAgICAgICAgICAgICAgICAgbmJ5dGVzID0g
Y2hhbm5lbF9yZWFkICggY2hhbm5lbCwgYnVmZmVyLCBzaXplb2YgKCBidWZmZXIgKS0xLCAxICk7
CiAgICAgICAgICAgICAgICAgZW1pdCBzdGRFcnIgKCBjaGFubmVsQ29ubmVjdGlvbnNbaV0uY3Jl
YXRvciwgUUJ5dGVBcnJheSAoIGJ1ZmZlcixuYnl0ZXMgKSApOwotLy8gICAgICAgICAgICAgIHgy
Z29EZWJ1Zzw8bmJ5dGVzPDwiIGVyciBmcm9tIGNoYW5uZWwiPDxlbmRsOworI2lmZGVmIERFQlVH
CisgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8bmJ5dGVzPDwiIGVy
ciBmcm9tIGNoYW5uZWwiPDxlbmRsOworI2VuZGlmCiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpbnQgcmV6PWNoYW5uZWxfcG9sbCAoIGNoYW5uZWwsMCApOwogICAgICAgICAgICAgaWYgKCBy
ZXo9PVNTSF9FT0YgKQpAQCAtMTIyOCw5ICsxMjgwLDEzIEBAIHZvaWQgU3NoTWFzdGVyQ29ubmVj
dGlvbjo6Y2hhbm5lbExvb3AoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCByZXo+
MCApCiAgICAgICAgICAgICB7Ci0vLyAgICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8InJlYWQg
ZGF0YSBmcm9tIGNoYW5uZWwgIjw8Y2hhbm5lbDw8ZW5kbDsKKyNpZmRlZiBERUJVRworICAgICAg
ICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwicmVhZCBkYXRhIGZyb20g
Y2hhbm5lbCAiPDxjaGFubmVsPDxlbmRsOworI2VuZGlmCiAgICAgICAgICAgICAgICAgbmJ5dGVz
ID0gY2hhbm5lbF9yZWFkICggY2hhbm5lbCwgYnVmZmVyLCBzaXplb2YgKCBidWZmZXIgKS0xLCAw
ICk7Ci0vLyAgICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8bmJ5dGVzPDwiIGZyb20gY2hhbm5l
bCAiPDxjaGFubmVsPDxlbmRsOworI2lmZGVmIERFQlVHCisgICAgICAgICAgICAgICAgLy8gICAg
ICAgICAgICAgICAgICB4MmdvRGVidWc8PG5ieXRlczw8IiBmcm9tIGNoYW5uZWwgIjw8Y2hhbm5l
bDw8ZW5kbDsKKyNlbmRpZgogICAgICAgICAgICAgICAgIGlmICggbmJ5dGVzID4gMCApCiAgICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBpZiAoIHRjcFNvY2tldD4wICkKQEAg
LTEyMzgsMTIgKzEyOTQsMTYgQEAgdm9pZCBTc2hNYXN0ZXJDb25uZWN0aW9uOjpjaGFubmVsTG9v
cCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlbmQgKCB0Y3BTb2NrZXQsYnVmZmVy
LCBuYnl0ZXMsMCApICE9IG5ieXRlcyApCiAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBlcnJNc2c9dHIgKCAiZXJyb3Igd3JpdGlu
ZyB0byBzb2NrZXQiICk7CisjaWZkZWYgREVCVUcKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB4MmdvRGVidWc8PCJlcnJvciB3cml0aW5nICI8PG5ieXRlczw8IiB0byB0Y3Agc29ja2V0Ijw8
dGNwU29ja2V0PDxlbmRsOworI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1p
dCBpb0VyciAoIGNoYW5uZWxDb25uZWN0aW9uc1tpXS5jcmVhdG9yLGVyck1zZywiIiApOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplICggaSApOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotLy8gICAg
ICAgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwid3JvdGUgIjw8bmJ5dGVzPDwiIHRvIHRjcCBz
b2NrZXQgIjw8dGNwU29ja2V0PDxlbmRsOworI2lmZGVmIERFQlVHCisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCJ3cm90ZSAiPDxuYnl0
ZXM8PCIgdG8gdGNwIHNvY2tldCAiPDx0Y3BTb2NrZXQ8PGVuZGw7CisjZW5kaWYKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIHsKQEAgLTEyNTcsNyArMTMxNyw5IEBAIHZvaWQgU3NoTWFzdGVyQ29ubmVjdGlvbjo6Y2hh
bm5lbExvb3AoKQogICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIGVycj1zc2hfZ2V0X2Vycm9y
ICggbXlfc3NoX3Nlc3Npb24gKTsKICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBlcnJvck1z
Zz10ciAoICJlcnJvciByZWFkaW5nIGNoYW5uZWwiICk7CiAgICAgICAgICAgICAgICAgICAgIGVt
aXQgaW9FcnIgKCBjaGFubmVsQ29ubmVjdGlvbnNbaV0uY3JlYXRvciwgZXJyb3JNc2csIGVyciAp
OworI2lmZGVmIERFQlVHCiAgICAgICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8ZXJyb3JNc2c8
PCIgLSAiPDxlcnI8PGVuZGw7CisjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUg
KCBpICk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0K
QEAgLTEyNzksNyArMTM0MSw5IEBAIHZvaWQgU3NoTWFzdGVyQ29ubmVjdGlvbjo6Y2hhbm5lbExv
b3AoKQogICAgICAgICAgICAgaWYgKCBGRF9JU1NFVCAoIHRjcFNvY2tldCwmcmZkcyApICkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBuYnl0ZXMgPSByZWN2ICggdGNwU29ja2V0LCBi
dWZmZXIsIHNpemVvZiAoIGJ1ZmZlciApLTEsMCApOwotLy8gICAgICAgICAgICAgICAgICB4Mmdv
RGVidWc8PG5ieXRlczw8IiBieXRlcyBmcm9tIHRjcCBzb2NrZXQgIjw8dGNwU29ja2V0PDxlbmRs
OworI2lmZGVmIERFQlVHCisgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICB4Mmdv
RGVidWc8PG5ieXRlczw8IiBieXRlcyBmcm9tIHRjcCBzb2NrZXQgIjw8dGNwU29ja2V0PDxlbmRs
OworI2VuZGlmCiAgICAgICAgICAgICAgICAgaWYgKCBuYnl0ZXMgPiAwICkKICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGlmICggY2hhbm5lbF93cml0ZSAoIGNoYW5uZWws
IGJ1ZmZlciwgbmJ5dGVzICkgIT1uYnl0ZXMgKQpAQCAtMTI4NywxMSArMTM1MSwxNSBAQCB2b2lk
IFNzaE1hc3RlckNvbm5lY3Rpb246OmNoYW5uZWxMb29wKCkKICAgICAgICAgICAgICAgICAgICAg
ICAgIFFTdHJpbmcgZXJyPXNzaF9nZXRfZXJyb3IgKCBteV9zc2hfc2Vzc2lvbiApOwogICAgICAg
ICAgICAgICAgICAgICAgICAgUVN0cmluZyBlcnJvck1zZz10ciAoICJjaGFubmVsX3dyaXRlIGZh
aWxlZCIgKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQgaW9FcnIgKCBjaGFubmVsQ29u
bmVjdGlvbnNbaV0uY3JlYXRvciwgZXJyb3JNc2csIGVyciApOworI2lmZGVmIERFQlVHCiAgICAg
ICAgICAgICAgICAgICAgICAgICB4MmdvRGVidWc8PGVycm9yTXNnPDwiIC0gIjw8ZXJyPDxlbmRs
OworI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSAoIGkgKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9Ci0vLyAg
ICAgICAgICAgICAgICAgICAgICB4MmdvRGVidWc8PG5ieXRlczw8IiBieXRlcyB3cm90ZSB0byBj
aGFubmVsIjw8Y2hhbm5lbDw8ZW5kbDsKKyNpZmRlZiBERUJVRworICAgICAgICAgICAgICAgICAg
ICAvLyAgICAgICAgICAgICAgICAgICAgICB4MmdvRGVidWc8PG5ieXRlczw8IiBieXRlcyB3cm90
ZSB0byBjaGFubmVsIjw8Y2hhbm5lbDw8ZW5kbDsKKyNlbmRpZgogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBpZiAoIG5ieXRlcyA8IDAgKQogICAgICAgICAgICAgICAgIHsKQEAg
LTEyOTksNyArMTM2Nyw5IEBAIHZvaWQgU3NoTWFzdGVyQ29ubmVjdGlvbjo6Y2hhbm5lbExvb3Ao
KQogICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIGVycj0iIjsKICAgICAgICAgICAgICAgICAg
ICAgUVN0cmluZyBlcnJvck1zZz10ciAoICJlcnJvciByZWFkaW5nIHRjcCBzb2NrZXQiICk7CiAg
ICAgICAgICAgICAgICAgICAgIGVtaXQgaW9FcnIgKCBjaGFubmVsQ29ubmVjdGlvbnNbaV0uY3Jl
YXRvciwgZXJyb3JNc2csIGVyciApOworI2lmZGVmIERFQlVHCiAgICAgICAgICAgICAgICAgICAg
IHgyZ29EZWJ1Zzw8ZXJyb3JNc2c8PCIgLSAiPDxlcnI8PGVuZGw7CisjZW5kaWYKICAgICAgICAg
ICAgICAgICAgICAgZmluYWxpemUgKCBpICk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3gyZ29jbGllbnRjb25maWcuaCBiL3gy
Z29jbGllbnRjb25maWcuaAppbmRleCAzNDFjMWY3Li5lODU3ZTUzIDEwMDY0NAotLS0gYS94Mmdv
Y2xpZW50Y29uZmlnLmgKKysrIGIveDJnb2NsaWVudGNvbmZpZy5oCkBAIC0yMyw3ICsyMyw3IEBA
CiAjaW5jbHVkZSA8cWdsb2JhbC5oPgogCiAKLS8vICNkZWZpbmUgTE9HRklMRSBRRGlyOjpob21l
UGF0aCgpKyIveDJnb2NsaWVudC5sb2ciCisvLyNkZWZpbmUgTE9HRklMRSBRRGlyOjpob21lUGF0
aCgpKyIveDJnb2NsaWVudC5sb2ciCiAKICNpZiAhZGVmaW5lZCBRX09TX1dJTgogI2RlZmluZSBV
U0VMREFQCmRpZmYgLS1naXQgYS94MmdvbG9nZGVidWcuY3BwIGIveDJnb2xvZ2RlYnVnLmNwcApp
bmRleCBjMjFjMWMzLi4wZmQ4YWRhIDEwMDY0NAotLS0gYS94MmdvbG9nZGVidWcuY3BwCisrKyBi
L3gyZ29sb2dkZWJ1Zy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAgWDJnb0xvZ0RlYnVnOjpYMmdvTG9n
RGVidWcoKTpRVGV4dFN0cmVhbSgpCiAgICAgfQogfQogCi0KIFgyZ29Mb2dEZWJ1Zzo6flgyZ29M
b2dEZWJ1ZygpCiB7CiAgCWxvZ0ZpbGUuY2xvc2UoKTsKZGlmZiAtLWdpdCBhL3gyZ29sb2dkZWJ1
Zy5oIGIveDJnb2xvZ2RlYnVnLmgKaW5kZXggYjM1Zjc4My4uZGVkNmQ4ZCAxMDA2NDQKLS0tIGEv
eDJnb2xvZ2RlYnVnLmgKKysrIGIveDJnb2xvZ2RlYnVnLmgKQEAgLTIwLDIxICsyMCw1MCBAQAog
I2luY2x1ZGUgPFFUZXh0U3RyZWFtPgogI2luY2x1ZGUgPFFGaWxlPgogI2luY2x1ZGUgIngyZ29j
bGllbnRjb25maWcuaCIKKyNpbmNsdWRlICJvbm1haW53aW5kb3cuaCIKIC8qKgogCUBhdXRob3Ig
T2xla3NhbmRyIFNobmV5ZGVyIDxvbGVrc2FuZHIuc2huZXlkZXJAb2J2aW91c2x5LW5pY2UuZGU+
CiAqLworCisjZGVmaW5lIF9feDJnb1ByZWZpeCAgICAgICJ4MmdvLSIKKyNkZWZpbmUgX194Mmdv
RGVidWdQcmVmaXggIkRFQlVHLSIKKyNkZWZpbmUgX194MmdvSW5mb1ByZWZpeCAgIklORk8tIgor
I2RlZmluZSBfX3gyZ29XYXJuaW5nUHJlZml4ICAiV0FSTklORy0iCisjZGVmaW5lIF9feDJnb0Vy
cm9yUHJlZml4ICJFUlJPUi0iCisjZGVmaW5lIF9feDJnb1Bvc3RmaXggICAgICI+ICIKKwogI2lm
ZGVmIExPR0ZJTEUKIGNsYXNzIFgyZ29Mb2dEZWJ1ZzogcHVibGljIFFUZXh0U3RyZWFtCiB7CiBw
dWJsaWM6CiAgICAgWDJnb0xvZ0RlYnVnKCk7CiAgICAgflgyZ29Mb2dEZWJ1ZygpOworCiAgcHJp
dmF0ZToKICAgICAgUUZpbGUgbG9nRmlsZTsKIH07Ci0jZGVmaW5lIHgyZ29EZWJ1ZyBYMmdvTG9n
RGVidWcoKQorCisjZGVmaW5lIF9feDJnb0RlYnVnICAgWDJnb0xvZ0RlYnVnKCk8PCJcbiIKKyNk
ZWZpbmUgX194MmdvSW5mbyAgICBYMmdvTG9nRGVidWcoKTw8IlxuIgorI2RlZmluZSBfX3gyZ29X
YXJuaW5nIFgyZ29Mb2dEZWJ1ZygpPDwiXG4iCisjZGVmaW5lIF9feDJnb0Vycm9yICAgWDJnb0xv
Z0RlYnVnKCk8PCJcbiIKKwogI2Vsc2UKKwogI2luY2x1ZGUgPFFEZWJ1Zz4KLSNkZWZpbmUgeDJn
b0RlYnVnIHFEZWJ1ZygpCisKKyNkZWZpbmUgX194MmdvRGVidWcgICBxRGVidWcoKS5ub3NwYWNl
KCkKKyNkZWZpbmUgX194MmdvSW5mbyAgICBxRGVidWcoKS5ub3NwYWNlKCkKKyNkZWZpbmUgX194
MmdvV2FybmluZyBxV2FybmluZygpLm5vc3BhY2UoKQorI2RlZmluZSBfX3gyZ29FcnJvciAgIHFD
cml0aWNhbCgpLm5vc3BhY2UoKQorCiAjZW5kaWYgLy9MT0dGSUxFCisKKyNkZWZpbmUgeDJnb0Rl
YnVnZiAgICAgICAgX194MmdvRGVidWcgIDw8X194MmdvUHJlZml4PDxfX3gyZ29EZWJ1Z1ByZWZp
eCAgPDxfX0ZJTEVfXzw8IjoiPDxfX0xJTkVfXzw8X194MmdvUG9zdGZpeAorI2RlZmluZSB4Mmdv
SW5mb2YoTlVNKSAgICBfX3gyZ29JbmZvICAgPDxfX3gyZ29QcmVmaXg8PF9feDJnb0luZm9QcmVm
aXggICA8PE5VTSAgICAgICAgICAgICAgICAgICAgPDxfX3gyZ29Qb3N0Zml4CisjZGVmaW5lIHgy
Z29XYXJuaW5nZihOVU0pIF9feDJnb1dhcm5pbmc8PF9feDJnb1ByZWZpeDw8X194MmdvV2Fybmlu
Z1ByZWZpeDw8TlVNICAgICAgICAgICAgICAgICAgICA8PF9feDJnb1Bvc3RmaXgKKyNkZWZpbmUg
eDJnb0Vycm9yZihOVU0pICAgX194MmdvRXJyb3IgIDw8X194MmdvUHJlZml4PDxfX3gyZ29FcnJv
clByZWZpeCAgPDxOVU0gICAgICAgICAgICAgICAgICAgIDw8X194MmdvUG9zdGZpeAorCisjZGVm
aW5lIHgyZ29EZWJ1ZyAgICAgIGlmIChPTk1haW5XaW5kb3c6OmRlYnVnZ2luZykgeDJnb0RlYnVn
ZgorCiAjZW5kaWYgLy9YMkdPTE9HREVCVUdfSAotLSAKMS43LjkuNQoK
--bcaec54a37bc889baa04d7acb75e--
