delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2006/05/29/01:18:29

X-Spam-Check-By: sourceware.org
X-Envelope-From: karl AT freefriends DOT org
X-Envelope-To: Ralf DOT Wildenhues AT gmx DOT de
Date: Sun, 28 May 2006 12:13:03 -0500
Message-Id: <200605281713.k4SHD3P20160@f7.net>
MIME-Version: 1.0
From: karl AT freefriends DOT org (Karl Berry)
To: cygwin AT cygwin DOT com, bug-texinfo AT gnu DOT org
CC: Ralf DOT Wildenhues AT gmx DOT de
Subject: Re: Cygwin: texi2dvi stumbles over texinfo.tex
In-Reply-To: <20060528163553.GA400@trixie.casa.cgf.cx>
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Note-from-DJ: This may be spam

--F/67ZsaegY
Content-Type: text/plain; charset=us-ascii
Content-Description: message body text
Content-Transfer-Encoding: 7bit

    i.e., the patch that Ralf Wildenhues previously sent out is correct

Ok, I applied the change to system.h, so that NULL_DEVICE will be
/dev/null under Cygwin.  Makes sense.

Ralf's texi2dvi changes are clearly not generally applicable.  E.g., Eli
has spent a lot of time making Texinfo (and everything else) work under
DJGPP.  I can't just blow that away.  If there's a way to detect when
it's running under Cygwin, then the changes could be conditionalized as
needed, I presume.  I'll attach the current CVS texi2dvi (there have
been tons of changes) in case you or Ralf someone feels like working on
this.

And the texindex.c problem has already been fixed in another way.

Thanks,
Karl


--F/67ZsaegY
Content-Type: application/octet-stream
Content-Disposition: attachment;
	filename="texi2dvi"
Content-Transfer-Encoding: base64

IyEgL2Jpbi9zaAojIHRleGkyZHZpIC0tLSBwcm9kdWNlIERWSSAob3IgUERG
KSBmaWxlcyBmcm9tIFRleGluZm8gKG9yIChMYSlUZVgpIHNvdXJjZXMuCiMg
JElkOiB0ZXhpMmR2aSx2IDEuNzkgMjAwNi8wNS8yNyAxOTowODoxNCBrYXJs
IEV4cCAkCiMKIyBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5
OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDEsCiMgMjAwMiwgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCiMgYW55
IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYg
bm90LCB5b3UgY2FuIGVpdGhlciBzZW5kIGVtYWlsIHRvIHRoaXMKIyBwcm9n
cmFtJ3MgbWFpbnRhaW5lciBvciB3cml0ZSB0bzogVGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwKIyBJbmMuOyA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yOyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KIwojIE9y
aWdpbmFsIGF1dGhvcjogTm9haCBGcmllZG1hbi4KIwojIFBsZWFzZSBzZW5k
IGJ1ZyByZXBvcnRzLCBldGMuIHRvIGJ1Zy10ZXhpbmZvQGdudS5vcmcuCiMg
SWYgcG9zc2libGUsIHBsZWFzZSBzZW5kIGEgY29weSBvZiB0aGUgb3V0cHV0
IG9mIHRoZSBzY3JpcHQgY2FsbGVkIHdpdGgKIyB0aGUgYC0tZGVidWcnIG9w
dGlvbiB3aGVuIG1ha2luZyBhIGJ1ZyByZXBvcnQuCgp0ZXN0IC1mIC9iaW4v
a3NoICYmIHRlc3QgLXogIiRSVU5OSU5HX0tTSCIgXAogICYmIHsgVU5BTUVT
PWB1bmFtZSAtc2A7IHRlc3QgIngkVU5BTUVTIiA9IHhVTFRSSVg7IH0gMj4v
ZGV2L251bGwgXAogICYmIHsgUlVOTklOR19LU0g9dHJ1ZTsgZXhwb3J0IFJV
Tk5JTkdfS1NIOyBleGVjIC9iaW4va3NoICQwICR7MSsiJEAifTsgfQp1bnNl
dCBSVU5OSU5HX0tTSAoKIyBObyBmYWlsdXJlIHNoYWxsIHJlbWFpbiB1bnB1
bmlzaGVkLgpzZXQgLWUKCiMgVGhpcyBzdHJpbmcgaXMgZXhwYW5kZWQgYnkg
cmNzIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGlzIGZpbGUgaXMgY2hlY2tlZCBv
dXQuCnJjc19yZXZpc2lvbj0nJFJldmlzaW9uOiAxLjc5ICQnCnJjc192ZXJz
aW9uPWBzZXQgLSAkcmNzX3JldmlzaW9uOyBlY2hvICQyYApwcm9ncmFtPWBl
Y2hvICQwIHwgc2VkIC1lICdzIS4qLyEhJ2AKdmVyc2lvbj0idGV4aTJkdmkg
KEdOVSBUZXhpbmZvIDQuOCkgJHJjc192ZXJzaW9uCgpDb3B5cmlnaHQgKEMp
IDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuClRoZXJlIGlz
IE5PIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEKUEFSVElDVUxBUiBQVVJQT1NFLiAgWW91IG1heSBy
ZWRpc3RyaWJ1dGUgY29waWVzIG9mIEdOVSB0ZXhpbmZvCnVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCkZvciBt
b3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZXNlIG1hdHRlcnMsIHNlZSB0aGUg
ZmlsZSBuYW1lZCBDT1BZSU5HLgoiCgpidWlsZF9tb2RlPSR7VEVYSTJEVklf
QlVJTERfTU9ERTotbG9jYWx9CmJ1aWxkX2Rpcj0ke1RFWEkyRFZJX0JVSUxE
X0RJUkVDVE9SWTotLn0KCnVzYWdlPSJVc2FnZTogJHByb2dyYW0gW09QVElP
Tl0uLi4gRklMRS4uLgoKUnVuIGVhY2ggVGV4aW5mbyBvciAoTGEpVGVYIEZJ
TEUgdGhyb3VnaCBUZVggaW4gdHVybiB1bnRpbCBhbGwKY3Jvc3MtcmVmZXJl
bmNlcyBhcmUgcmVzb2x2ZWQsIGJ1aWxkaW5nIGFsbCBpbmRpY2VzLiAgVGhl
IGRpcmVjdG9yeQpjb250YWluaW5nIGVhY2ggRklMRSBpcyBzZWFyY2hlZCBm
b3IgaW5jbHVkZWQgZmlsZXMuICBUaGUgc3VmZml4IG9mIEZJTEUKaXMgdXNl
ZCB0byBkZXRlcm1pbmUgaXRzIGxhbmd1YWdlICgoTGEpVGVYIG9yIFRleGlu
Zm8pLiAgVG8gcHJvY2VzcwooZSlwbGFpbiBUZVggZmlsZXMsIHNldCB0aGUg
ZW52aXJvbm1lbnQgdmFyaWFibGUgTEFURVg9dGV4LgoKSW4gb3JkZXIgdG8g
bWFrZSB0ZXhpMmR2aSBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgb2YgVGVYL0xh
VGVYIGluIEFVQy1UZVgsCnRoZSBGSUxFIG1heSBhbHNvIGJlIGNvbXBvc2Vk
IG9mIHRoZSBmb2xsb3dpbmcgc2ltcGxlIFRlWCBjb21tYW5kcy4KICBcYFxc
aW5wdXR7RklMRX0nICAgICB0aGUgYWN0dWFsIGZpbGUgdG8gY29tcGlsZQog
IFxgXFxub25zdG9wbW9kZScgICAgIHNhbWUgYXMgLS1iYXRjaAoKTWFrZWlu
Zm8gaXMgdXNlZCB0byBwZXJmb3JtIFRleGluZm8gbWFjcm8gZXhwYW5zaW9u
IGJlZm9yZSBydW5uaW5nIFRlWAp3aGVuIG5lZWRlZC4KCkdlbmVyYWwgb3B0
aW9uczoKICAtYiwgLS1iYXRjaCAgICAgICAgIG5vIGludGVyYWN0aW9uCiAg
LUQsIC0tZGVidWcgICAgICAgICB0dXJuIG9uIHNoZWxsIGRlYnVnZ2luZyAo
c2V0IC14KQogIC1oLCAtLWhlbHAgICAgICAgICAgZGlzcGxheSB0aGlzIGhl
bHAgYW5kIGV4aXQgc3VjY2Vzc2Z1bGx5CiAgLW8sIC0tb3V0cHV0PU9GSUxF
ICBsZWF2ZSBvdXRwdXQgaW4gT0ZJTEUgKGltcGxpZXMgLS1jbGVhbik7CiAg
ICAgICAgICAgICAgICAgICAgICAgIG9ubHkgb25lIGlucHV0IEZJTEUgbWF5
IGJlIHNwZWNpZmllZCBpbiB0aGlzIGNhc2UKICAtcSwgLS1xdWlldCAgICAg
ICAgIG5vIG91dHB1dCB1bmxlc3MgZXJyb3JzIChpbXBsaWVzIC0tYmF0Y2gp
CiAgLXMsIC0tc2lsZW50ICAgICAgICBzYW1lIGFzIC0tcXVpZXQKICAtdiwg
LS12ZXJzaW9uICAgICAgIGRpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvbiBh
bmQgZXhpdCBzdWNjZXNzZnVsbHkKICAtViwgLS12ZXJib3NlICAgICAgIHJl
cG9ydCBvbiB3aGF0IGlzIGRvbmUKClRlWCB0dW5pbmc6CiAgLUAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXNlIEBpbnB1dCBpbnN0ZWFkIG9mIFxpbnB1
dCBmb3IgcHJlbG9hZGVkIFRleGluZm8KICAtZSwgLUUsIC0tZXhwYW5kICAg
ICAgICAgICBmb3JjZSBtYWNybyBleHBhbnNpb24gdXNpbmcgbWFrZWluZm8K
ICAtSSBESVIgICAgICAgICAgICAgICAgICAgICBzZWFyY2ggRElSIGZvciBU
ZXhpbmZvIGZpbGVzCiAgLWwsIC0tbGFuZ3VhZ2U9TEFORyAgICAgICAgc3Bl
Y2lmeSB0aGUgTEFORyBvZiBGSUxFIChMYVRlWCBvciBUZXhpbmZvKQogICAg
ICAtLW5vLWxpbmUtZXJyb3IgICAgICAgIGRvIG5vdCBwYXNzIC0tZmlsZS1s
aW5lLWVycm9yIHRvIFRlWAogIC1wLCAtLXBkZiAgICAgICAgICAgICAgICAg
IHVzZSBwZGZ0ZXggb3IgcGRmbGF0ZXggZm9yIHByb2Nlc3NpbmcKICAtciwg
LS1yZWNvZGUgICAgICAgICAgICAgICBjYWxsIHJlY29kZSBiZWZvcmUgVGVY
IHRvIHRyYW5zbGF0ZSBpbnB1dAogICAgICAtLXJlY29kZS1mcm9tPUVOQyAg
ICAgIHJlY29kZSBmcm9tIEVOQyB0byB0aGUgQGRvY3VtZW50ZW5jb2Rpbmcg
ICAgICAgCiAgLXQsIC0tY29tbWFuZD1DTUQgICAgICAgICAgaW5zZXJ0IENN
RCBpbiBjb3B5IG9mIGlucHV0IGZpbGUKICAgb3IgLS10ZXhpbmZvPUNNRCAg
ICAgICAgICBtdWx0aXBsZSB2YWx1ZXMgYWNjdW11bGF0ZQogICAgICAtLXRy
YW5zbGF0ZS1maWxlPUZJTEUgIHVzZSBnaXZlbiBjaGFyc2V0IHRyYW5zbGF0
aW9uIGZpbGUgZm9yIFRlWAoKQnVpbGQgbW9kZXM6CiAgLS1idWlsZD1NT0RF
ICAgICAgICAgc3BlY2lmeSB0aGUgdHJlYXRtZW50IG9mIGF1eGlsaWFyeSBm
aWxlcyBbJGJ1aWxkX21vZGVdCiAgICAgIC0tdGlkeSAgICAgICAgICAgc2Ft
ZSBhcyAtLWJ1aWxkPXRpZHkKICAtYywgLS1jbGVhbiAgICAgICAgICBzYW1l
IGFzIC0tYnVpbGQ9Y2xlYW4KICAgICAgLS1idWlsZC1kaXI9RElSICBzcGVj
aWZ5IHdoZXJlIHRoZSB0aWR5IGNvbXBpbGF0aW9uIGlzIHBlcmZvcm1lZDsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxpZXMgLS10aWR5OwogICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHMgdG8gVEVYSTJEVklfQlVJ
TERfRElSRUNUT1JZIFskYnVpbGRfZGlyXQogIC0tbW9zdGx5LWNsZWFuICAg
ICAgIHJlbW92ZSB0aGUgYXV4aWxpYXJ5IGZpbGVzIGFuZCBkaXJlY3Rvcmll
cwogICAgICAgICAgICAgICAgICAgICAgICAgYnV0IG5vdCB0aGUgb3V0cHV0
CgpUaGUgTU9ERSBzcGVjaWZpZXMgd2hlcmUgdGhlIFRlWCBjb21waWxhdGlv
biB0YWtlcyBwbGFjZSwgYW5kLCBhcyBhCmNvbnNlcXVlbmNlLCBob3cgYXV4
aWxpYXJ5IGZpbGVzIGFyZSB0cmVhdGVkLiAgVGhlIGJ1aWxkIG1vZGUKY2Fu
IGFsc28gYmUgc2V0IHVzaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBU
RVhJMkRWSV9CVUlMRF9NT0RFLgoKVmFsaWQgTU9ERXMgYXJlOgogIFxgbG9j
YWwnICAgICAgY29tcGlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnksIGxl
YXZpbmcgYWxsIHRoZSBhdXhpbGlhcnkKICAgICAgICAgICAgICAgICBmaWxl
cyBhcm91bmQuICBUaGlzIGlzIHRoZSB0cmFkaXRpb25hbCBUZVggdXNlLgog
IFxgdGlkeScgICAgICAgY29tcGlsZSBpbiBhIGxvY2FsICoudDJkIGRpcmVj
dG9yeSwgd2hlcmUgdGhlIGF1eGlsaWFyeSBmaWxlcwogICAgICAgICAgICAg
ICAgIGFyZSBsZWZ0LiAgT3V0cHV0IGZpbGVzIGFyZSBjb3BpZWQgYmFjayB0
byB0aGUgb3JpZ2luYWwgZmlsZS4KICBcYGNsZWFuJyAgICAgIHNhbWUgYXMg
XGB0aWR5JywgYnV0IHJlbW92ZSB0aGUgYXV4aWxpYXJ5IGRpcmVjdG9yeSBh
ZnRlcndhcmRzLgogICAgICAgICAgICAgICAgIEV2ZXJ5IGNvbXBpbGF0aW9u
IHRoZXJlZm9yZSByZXF1aXJlcyB0aGUgZnVsbCBjeWNsZS4KClVzaW5nIHRo
ZSBcYHRpZHknIG1vZGUgYnJpbmdzIHNldmVyYWwgYWR2YW50YWdlczoKICAt
IHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcyBub3QgY2x1dHRlcmVkIHdpdGgg
cGxldGhvcmEgb2YgdGVtcG9yYXJ5IGZpbGVzLgogIC0gY2x1dHRlciBjYW4g
YmUgZXZlbiByZWR1Y2VkIHVzaW5nIC0tYnVpbGQtZGlyPWRpcjogYWxsIHRo
ZSAqLnQyZAogICAgZGlyZWN0b3JpZXMgYXJlIHN0b3JlZCB0aGVyZS4KICAt
IGNsdXR0ZXIgY2FuIGJlIHJlZHVjZWQgdG8gemVybyB1c2luZyAtLWJ1aWxk
LWRpcj0vdG1wL1wkVVNFUi50MmQgb3IKICAgIC0tYnVpbGQtZGlyPSRIT01F
Ly50MmQuCiAgLSB0aGUgb3V0cHV0IGZpbGUgaXMgdXBkYXRlZCBhZnRlciBl
dmVyeSBzdWNjZXNmdWwgVGVYIHJ1biwgZm9yCiAgICBzYWtlIG9mIGNvbmN1
cnJlbnQgdmlzdWFsaXphdGlvbiBvZiB0aGUgb3V0cHV0LiAgSW4gYSBcYGxv
Y2FsJyBidWlsZAogICAgdGhlIHZpZXdlciBzdG9wcyBkdXJpbmcgdGhlIHdo
b2xlIFRlWCBydW4uCiAgLSBpZiB0aGUgY29tcGlsYXRpb24gZmFpbHMsIHRo
ZSBwcmV2aW91cyBzdGF0ZSBvZiB0aGUgb3V0cHV0IGZpbGUKICAgIGlzIHBy
ZXNlcnZlZC4KICAtIFBERiBhbmQgRFZJIGNvbXBpbGF0aW9uIGFyZSBrZXB0
IGluIHNlcGFyYXRlIHN1YmRpcmVjdG9yaWVzCiAgICBwcmV2ZW50aW5nIGFu
eSBwb3NzaWJpbGl0eSBvZiBhdXhpbGlhcnkgZmlsZSBpbmNvbXBhdGliaWxp
dHkuCgpPbiB0aGUgb3RoZXIgaGFuZCwgYmVjYXVzZSBcYHRpZHknIGNvbXBp
bGF0aW9uIHRha2VzIHBsYWNlIGluIGFub3RoZXIKZGlyZWN0b3J5LCBvY2Nh
c2lvbmFsbHkgVGVYIHdvbid0IGJlIGFibGUgdG8gZmluZCBzb21lIGZpbGVz
IChlLmcuLCB3aGVuCnVzaW5nIFxcZ3JhcGhpY3NwYXRoKTogaW4gdGhhdCBj
YXNlIHVzZSAtSSB0byBzcGVjaWZ5IHRoZSBhZGRpdGlvbmFsCmRpcmVjdG9y
aWVzIHRvIGNvbnNpZGVyLgoKVGhlIHZhbHVlcyBvZiB0aGUgQklCVEVYLCBM
QVRFWCAob3IgUERGTEFURVgpLCBNQUtFSU5ERVgsIE1BS0VJTkZPLApURVgg
KG9yIFBERlRFWCksIFRFWElOREVYLCBhbmQgVEhVTUJQREYgZW52aXJvbm1l
bnQgdmFyaWFibGVzIGFyZSB1c2VkCnRvIHJ1biB0aG9zZSBjb21tYW5kcywg
aWYgdGhleSBhcmUgc2V0LiAgQW55IENNRCBzdHJpbmdzIGFyZSBhZGRlZAph
ZnRlciBAc2V0ZmlsZW5hbWUgZm9yIFRleGluZm8gaW5wdXQsIGluIHRoZSBm
aXJzdCBsaW5lIGZvciBMYVRlWCBpbnB1dC4KCkVtYWlsIGJ1ZyByZXBvcnRz
IHRvIDxidWctdGV4aW5mb0BnbnUub3JnPiwKZ2VuZXJhbCBxdWVzdGlvbnMg
YW5kIGRpc2N1c3Npb24gdG8gPGhlbHAtdGV4aW5mb0BnbnUub3JnPi4KVGV4
aW5mbyBob21lIHBhZ2U6IGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS90
ZXhpbmZvLyIKCiMgSW5pdGlhbGl6ZSB2YXJpYWJsZXMgZm9yIG9wdGlvbiBv
dmVycmlkaW5nIGFuZCBvdGhlcndpc2UuCiMgRG9uJ3QgdXNlIGB1bnNldCcg
c2luY2Ugb2xkIGJvdXJuZSBzaGVsbHMgZG9uJ3QgaGF2ZSB0aGlzIGNvbW1h
bmQuCiMgSW5zdGVhZCwgYXNzaWduIHRoZW0gYW4gZW1wdHkgdmFsdWUuCmFj
dGlvbj1jb21waWxlCmJhdGNoPWZhbHNlICAgICAjIHRydWUgZm9yIGJhdGNo
IG1vZGUKZGVidWc9ZmFsc2UKZXNjYXBlPSJcXCIKZXhwYW5kPSAgICAgICAg
ICMgdCBmb3IgZXhwYW5zaW9uIHZpYSBtYWtlaW5mbwppbmNsdWRlcz0KbGlu
ZV9lcnJvcj10cnVlICMgUGFzcyAtLWZpbGUtbGluZS1lcnJvciB0byBUZVgu
Cm5vX2xpbmVfZXJyb3I9ZmFsc2UgICMgYWJzb2x1dGVseSBkbyBub3QgcGFz
cyAtLWZpbGUtbGluZS1lcnJvciB0byBUZVgKb25hbWU9ICAgICAgICAgICMg
LS1vdXRwdXQKb3V0X2xhbmc9ZHZpCnF1aWV0PWZhbHNlICAgICAjIGJ5IGRl
ZmF1bHQgbGV0IHRoZSB0b29scycgbWVzc2FnZSBiZSBkaXNwbGF5ZWQKcmVj
b2RlPWZhbHNlCnNldF9sYW5ndWFnZT0KdGV4dHJhPSAgICAgICAgICMgRXh0
cmEgVGVYIGNvbW1hbmRzIHRvIGluc2VydCBpbiB0aGUgaW5wdXQgZmlsZS4K
dHhpcHJlcmVxPTE5OTkwMTI5ICMgbWluaW11bSB0ZXhpbmZvLnRleCB2ZXJz
aW9uIHdpdGggbWFjcm8gZXhwYW5zaW9uCnZlcmI9ZmFsc2UgICAgICAjIHRy
dWUgZm9yIHZlcmJvc2UgbW9kZQp0cmFuc2xhdGVfZmlsZT0gIyBuYW1lIG9m
IGNoYXJzZXQgdHJhbnNsYXRpb24gZmlsZQpyZWNvZGVfZnJvbT0gICAgIyBp
ZiBub3QgZW1wdHksIHJlY29kZSBmcm9tIHRoaXMgZW5jb2RpbmcgdG8gQGRv
Y3VtZW50ZW5jb2RpbmcKCm9yaWdfcHdkPWBwd2RgCgojIFdlIGhhdmUgdG8g
aW5pdGlhbGl6ZSBJRlMgdG8gc3BhY2UgdGFiIG5ld2xpbmUgc2luY2Ugd2Ug
c2F2ZSBhbmQKIyByZXN0b3JlIElGUyBhbmQgYXBwYXJlbnRseSBQT1NJWCBh
bGxvd3Mgc3R1cGlkL2Jyb2tlbiBiZWhhdmlvciB3aXRoCiMgZW1wdHktYnV0
LXNldCBJRlMuCiMgaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1s
L2F1dG9tYWtlLXBhdGNoZXMvMjAwNi0wNS9tc2cwMDAwOC5odG1sCklGUz0i
IAkKIgoKIyBTeXN0ZW1zIHdoaWNoIGRlZmluZSAkQ09NU1BFQyBvciAkQ29t
U3BlYyB1c2Ugc2VtaWNvbG9ucyB0byBzZXBhcmF0ZQojIGRpcmVjdG9yaWVz
IGluIFRFWElOUFVUUyAtLSBleGNlcHQgZm9yIEN5Z3dpbiwgd2hlcmUgQ09N
U1BFQyBtaWdodCBiZQojIGluaGVyaXRlZCwgYnV0IDogaXMgdXNlZC4KaWYg
dGVzdCAtbiAiJENPTVNQRUMkQ29tU3BlYyIgJiYgdW5hbWUgfCBncmVwIC1p
diBjeWd3aW4gPi9kZXYvbnVsbDsgdGhlbgogIHBhdGhfc2VwPSI7IgplbHNl
CiAgcGF0aF9zZXA9IjoiCmZpCgojIFBhY2lmeSB2ZXJib3NlIGNkcy4KQ0RQ
QVRIPSR7WlNIX1ZFUlNJT04rLn0kcGF0aF9zZXAKCiMgSW4gY2FzZSBzb21l
b25lIGNyYXp5IGluc2lzdHMgb24gdXNpbmcgZ3JlcCAtRS4KOiAke0VHUkVQ
PWVncmVwfQoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiMjIEF1eGls
aWFyeSBmdW5jdGlvbnMuICAjIwojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0g
IyMKCgojIEluIGNhc2UgYGxvY2FsJyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRo
ZSBzaGVsbC4KKAogIGZvbz1iYXIKICB0ZXN0X2xvY2FsICgpIHsKICAgIGxv
Y2FsIGZvbz1mb28KICB9CiAgdGVzdF9sb2NhbAogIHRlc3QgJGZvbyA9IGJh
cgopIHx8IGxvY2FsICgpIHsKICBjYXNlICQxIGluCiAgICAqPSopIGV2YWwg
IiQxIjs7CiAgZXNhYwp9CgoKIyBjZF9vcmlnCiMgLS0tLS0tLQojIFJldHVy
biB0byB0aGUgb3JpZ2luYWwgZGlyZWN0b3J5LgpjZF9vcmlnICgpCnsKICAj
IEluIGNhc2UgJG9yaWdfcHdkIGlzIG9uIGEgZGlmZmVyZW50IGRyaXZlIChm
b3IgRE9TKS4KICBjZCAvCgogICMgUmV0dXJuIHRvIHRoZSBvcmlnaW5hbCBk
aXJlY3Rvcnkgc28gdGhhdAogICMgLSB0aGUgbmV4dCBmaWxlIGlzIHByb2Nl
c3NlZCBpbiBjb3JyZWN0IGNvbmRpdGlvbnMKICAjIC0gdGhlIHRlbXBvcmFy
eSBmaWxlIGNhbiBiZSByZW1vdmVkCiAgY2QgIiRvcmlnX3B3ZCIgfHwgZXhp
dCAxCn0KCiMgZnVuY19kaXJuYW1lIEZJTEUKIyAtLS0tLS0tLS0tLS0tLS0t
LQojIFJldHVybiB0aGUgZGlyZWN0b3J5IHBhcnQgb2YgRklMRS4KZnVuY19k
aXJuYW1lICgpCnsKICBkaXJuYW1lICIkMSIgMj4vZGV2L251bGwgXAogIHx8
IHsgZWNobyAiJDEiIHwgc2VkICdzIS9bXi9dKiQhITtzIV4kIS4hJzsgfQp9
CgoKIyBhYnNvbHV0ZSBOQU1FIC0+IEFCUy1OQU1FCiMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQojIFJldHVybiBhbiBhYnNvbHV0ZSBwYXRoIHRvIE5B
TUUuCmFic29sdXRlICgpCnsKICBjYXNlICQxIGluCiAgIFtcXC9dKiB8ID86
W1xcL10qKQogICAgICAjIEFic29sdXRlIHBhdGhzIGRvbid0IG5lZWQgdG8g
YmUgZXhwYW5kZWQuCiAgICAgIGVjaG8gIiQxIgogICAgICA7OwogICAqKSBs
b2NhbCByZWw9IiRvcmlnX3B3ZC9gZnVuY19kaXJuYW1lICQxYCIKICAgICAg
aWYgdGVzdCAtZCAiJHJlbCI7IHRoZW4KICAgICAgICAoY2QgIiRyZWwiIDI+
L2Rldi9udWxsICYmIGVjaG8gYHB3ZGAvYGJhc2VuYW1lICIkMSJgKTsKICAg
ICAgZWxzZQogICAgICAgIGZhdGFsIDEgIm5vdCBhIGRpcmVjdG9yeTogJHJl
bCIKICAgICAgZmkKICAgICAgOzsKICBlc2FjCn0KCgojIGZpbmRwcm9nIFBS
T0cKIyAtLS0tLS0tLS0tLS0tCiMgUmV0dXJuIHRydWUgaWYgUFJPRyBpcyBz
b21ld2hlcmUgaW4gUEFUSCwgZWxzZSBmYWxzZS4KZmluZHByb2cgKCkKewog
IGxvY2FsIHNhdmVJRlM9JElGUwogIElGUz0kcGF0aF9zZXAgICMgYnJlYWsg
cGF0aCBjb21wb25lbnRzIGF0IHRoZSBwYXRoIHNlcGFyYXRvcgogIGZvciBk
aXIgaW4gJFBBVEg7IGRvCiAgICBJRlM9JHNhdmVJRlMKICAgICMgVGhlIGJh
c2ljIHRlc3QgZm9yIGFuIGV4ZWN1dGFibGUgaXMgYHRlc3QgLWYgJGYgJiYg
dGVzdCAteCAkZicuCiAgICAjIChgdGVzdCAteCcgaXMgbm90IGVub3VnaCwg
YmVjYXVzZSBpdCBjYW4gYWxzbyBiZSB0cnVlIGZvciBkaXJlY3Rvcmllcy4p
CiAgICAjIFdlIGhhdmUgdG8gdHJ5IHRoaXMgYm90aCBmb3IgJDEgYW5kICQx
LmV4ZS4KICAgICMKICAgICMgTm90ZTogT24gQ3lnd2luIGFuZCBESkdQUCwg
YHRlc3QgLXgnIGFsc28gbG9va3MgZm9yIC5leGUuICBPbiBDeWd3aW4sCiAg
ICAjIGFsc28gYHRlc3QgLWYnIGhhcyB0aGlzIGVuaGFuY2VtZW50LCBib3Qg
bm90IG9uIERKR1BQLiAgKEJvdGggYXJlCiAgICAjIGRlc2lnbiBkZWNpc2lv
bnMsIHNvIHRoZXJlIGlzIGxpdHRsZSBjaGFuY2UgdG8gbWFrZSB0aGVtIGNv
bnNpc3RlbnQuKQogICAgIyBUaHVzbHksIGl0IHNlZW1zIHRvIGJlIGRpZmZp
Y3VsdCB0byBtYWtlIHVzZSBvZiB0aGVzZSBlbmhhbmNlbWVudHMuCiAgICAj
CiAgICBpZiAgeyB0ZXN0IC1mICIkZGlyLyQxIgkmJiB0ZXN0IC14ICIkZGly
LyQxIjsgfSB8fAoJeyB0ZXN0IC1mICIkZGlyLyQxLmV4ZSIJJiYgdGVzdCAt
eCAiJGRpci8kMS5leGUiOyB9OyB0aGVuCiAgICAgIHJldHVybiAwCiAgICBm
aQogIGRvbmUKICByZXR1cm4gMQp9CgojIHJlcG9ydCBMSU5FMSBMSU5FMi4u
LgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFJlcG9ydCBzb21lIGluZm9y
bWF0aW9uIG9uIHN0ZGVyci4KcmVwb3J0ICgpCnsKICBmb3IgaSBpbiAiJEAi
CiAgZG8KICAgIGVjaG8gPiYyICIkMDogJGkiCiAgZG9uZQp9CgojIFJlcG9y
dCBzb21lIHZlcmJvc2UgaW5mb3JtYXRpb24uCnZlcmJvc2UgKCkKewogIGlm
ICR2ZXJiOyB0aGVuCiAgICBlY2hvID4mMiAiJDA6ICRAIgogIGZpCn0KCiMg
ZmF0YWwgRVhJVF9TVEFUVVMgTElORTEgTElORTIuLi4KIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFJlcG9ydCBhbiBlcnJvciBhbmQg
ZXhpdCB3aXRoIGZhaWx1cmUuCmZhdGFsICgpCnsKICBzPSQxCiAgc2hpZnQK
ICByZXBvcnQgIiRAIgogIGV4aXQgJHMKfQoKIyBlbnN1cmVfZGlyIERJUjEg
RElSMi4uLgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTWFrZSBzdXJl
IHRoZSBkaXJlY3RvcmllcyBleGlzdC4KZW5zdXJlX2RpciAoKQp7CiAgZm9y
IGRpcgogIGRvCiAgICB0ZXN0IC1kICIkZGlyIiBcCiAgICAgIHx8IG1rZGly
ICIkZGlyIiBcCiAgICAgIHx8IGZhdGFsIDEgImNhbm5vdCBjcmVhdGUgZGly
ZWN0b3J5OiAkZGlyIgogIGRvbmUKfQoKCiMjIC0tLS0tLS0tLS0tLS0tLS0g
IyMKIyMgSGFuZGxpbmcgbGlzdHMuICAjIwojIyAtLS0tLS0tLS0tLS0tLS0t
ICMjCgoKIyBsaXN0X2FwcGVuZCBMSVNULU5BTUUgRUxFTQojIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiMgU2V0IExJU1QtTkFNRSB0byBpdHMgZm9y
bWVyIGNvbnRlbnRzLCB3aXRoIEVMRU0gYXBwZW5kZWQuCmxpc3RfYXBwZW5k
ICgpCnsKICBsb2NhbCBsYV9sPSIkMSIKICBzaGlmdAogIGV2YWwgc2V0IFgg
XCQkbGFfbCAiJEAiCiAgc2hpZnQKICBldmFsICRsYV9sPVwiIiRAIlwiCn0K
CiMgbGlzdF9wcmVmaXggTElTVC1OQU1FIFNFUCAtPiBTVFJJTkcKIyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFJldHVybiBhIHN0
cmluZyB0aGF0IGlzIGNvbXBvc2VkIG9mIHRoZSBMSVNULU5BTUUgd2l0aCBl
YWNoIGl0ZW0KIyBwcmVjZWRlZCBieSBTRVAuCmxpc3RfcHJlZml4ICgpCnsK
ICBsb2NhbCBscF9wPSQyCiAgZXZhbCBzZXQgWCBcJCQxCiAgc2hpZnQKICBs
b2NhbCBscF9yZXMKICBmb3IgaQogIGRvCiAgICBscF9yZXM9IiRscF9yZXMg
XCIkbHBfcFwiIFwiJGlcIiIKICBkb25lCiAgZWNobyAiJGxwX3JlcyIKfQoK
IyBsaXN0X2luZml4IExJU1QtTkFNRSBTRVAgLT4gU1RSSU5HCiMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFNhbWUgYXMgbGlzdF9w
cmVmaXgsIGJ1dCBhIHNlcGFyYXRvci4KbGlzdF9pbmZpeCAoKQp7CiAgZXZh
bCBzZXQgWCBcJCQxCiAgc2hpZnQKICBsb2NhbCBsYV9JRlM9JElGUwogIElG
Uz0kcGF0aF9zZXAKICBlY2hvICIkKiIKICBJRlM9JGxhX0lGUwp9CgojIGxp
c3RfZGlyX3RvX2FicyBMSVNULU5BTUUKIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiMgQ29udmVydCB0aGUgbGlzdCB0byB1c2luZyBvbmx5IGFic29s
dXRlIGRpciBuYW1lcy4KIyBDdXJyZW50bHkgdW51c2VkLCBidXQgc2hvdWxk
IHJlcGxhY2UgYWJzb2x1dGVfZmlsZW5hbWVzIHNvbWUgZGF5LgpsaXN0X2Rp
cl90b19hYnMgKCkKewogIGxvY2FsIGxkX2w9JDEKICBldmFsIHNldCBYIFwk
JGxkX2wKICBzaGlmdAogIGxvY2FsIGxkX3JlcwogIGZvciBkaXIKICBkbwog
ICAgZGlyPWBhYnNvbHV0ZSAiJGRpciJgCiAgICB0ZXN0IC1kICIkZGlyIiB8
fCBjb250aW51ZQogICAgbGRfcmVzPSIkbGRfcmVzIFwiJGRpclwiIgogIGRv
bmUKICBzZXQgWCAkbGRfcmVzOyBzaGlmdAogIGV2YWwgJGxkX2w9XCIkQFwi
Cn0KCiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMgVGVYIGF1
eGlsaWFyeSBmdW5jdGlvbnMuICAjIwojIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tICMjCgojIFNhdmUgVEVYSU5QVVRTIHNvIHdlIGNhbiBjb25zdHJ1
Y3QgYSBuZXcgVEVYSU5QVVRTIHBhdGggZm9yIGVhY2ggZmlsZS4KIyBMaWtl
d2lzZSBmb3IgYmlidGV4IGFuZCBtYWtlaW5kZXguCnRleF9lbnZ2YXJzPSJC
SUJJTlBVVFMgQlNUSU5QVVRTIElOREVYU1RZTEUgVEVYSU5QVVRTIgpmb3Ig
dmFyIGluICR0ZXhfZW52dmFyczsgZG8KICBldmFsICR7dmFyfV9vcmlnPVwk
JHZhcgogIGV4cG9ydCAkdmFyCmRvbmUKCgojIGFic29sdXRlX2ZpbGVuYW1l
cyBURVgtUEFUSCAtPiBURVgtUEFUSAojIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQojIENvbnZlcnQgcmVsYXRpdmUgcGF0aHMg
dG8gYWJzb2x1dGUgcGF0aHMsIHNvIHdlIGNhbiBydW4gaW4gYW5vdGhlcgoj
IGRpcmVjdG9yeSAoZS5nLiwgaW4gdGlkeSBidWlsZCBtb2RlLCBvciBkdXJp
bmcgdGhlIG1hY3JvLXN1cHBvcnQKIyBkZXRlY3Rpb24pLgojCiMgRW1wdHkg
cGF0aCBjb21wb25lbnRzIGFyZSBtZWFuaW5nZnVsIHRvIHRleC4gIFdlIHJl
d3JpdGUgdGhlbQojIGFzIGBFTVBUWScgc28gdGhleSBkb24ndCBnZXQgbG9z
dCB3aGVuIHdlIHNwbGl0IG9uICRwYXRoX3NlcC4KIyBIb3BlZnVsbHkgbm8g
b25lIHdpbGwgaGF2ZSBhbiBhY3R1YWwgZGlyZWN0b3J5IG5hbWVkIEVNUFRZ
LgphYnNvbHV0ZV9maWxlbmFtZXMgKCkKewogIGxvY2FsIHJlcGxhY2VfZW1w
dHk9Ii1lICdzL14kcGF0aF9zZXAvRU1QVFkkcGF0aF9zZXAvZycgXAogICAg
ICAgICAgICAgICAgICAgICAgIC1lICdzLyRwYXRoX3NlcFwkLyR7cGF0aF9z
ZXB9RU1QVFkvZycgXAogICAgICAgICAgICAgICAgICAgICAgIC1lICdzLyRw
YXRoX3NlcCRwYXRoX3NlcC8ke3BhdGhfc2VwfUVNUFRZOi9nJyIKICBsb2Nh
bCByZXM9YGVjaG8gIiQxIiB8IGV2YWwgc2VkICRyZXBsYWNlX2VtcHR5YAog
IHNhdmVfSUZTPSRJRlMKICBJRlM9JHBhdGhfc2VwCiAgc2V0IHggJHJlczsg
c2hpZnQKICByZXM9LgogIGZvciBkaXIKICBkbwogICAgY2FzZSAkZGlyIGlu
CiAgICAgIEVNUFRZKQogICAgICAgIHJlcz0kcmVzJHBhdGhfc2VwCiAgICAg
ICAgOzsKICAgICAgKikKICAgICAgICBpZiB0ZXN0IC1kICRkaXI7IHRoZW4K
CSAgcmVzPSRyZXMkcGF0aF9zZXBgYWJzb2x1dGUgIiRkaXIiYAoJZmkKICAg
ICAgICA7OwogICAgZXNhYwogIGRvbmUKICBlY2hvICIkcmVzIgp9CgoKIyBv
dXRwdXRfYmFzZV9uYW1lIEZJTEUKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IyBUaGUgbmFtZSBvZiB0aGUgRklMRSBwb3NzaWJseSByZW5hbWVkIHRvIHNh
dGlzZnkgLS1vdXRwdXQuCm91dHB1dF9iYXNlX25hbWUgKCkKewogIGNhc2Ug
JG9uYW1lIGluCiAgICAnJykgZWNobyAiJDEiOzsKICAgICAqKSBsb2NhbCBv
dXRfbm9leHQ9YGVjaG8gIiRvbmFtZSIgfCBzZWQgJ3MvXC5bXi5dKiQvLydg
Cglsb2NhbCBmaWxlX2V4dD1gZWNobyAiJDEiIHwgc2VkICdzL14uKlwuLy8n
YAoJZWNobyAiJG91dF9ub2V4dC4kZmlsZV9leHQiCiAgICAgIDs7CiAgZXNh
Ywp9CgojIG1vdmVfdG9fZGVzdCBGSUxFCiMgLS0tLS0tLS0tLS0tLS0tLS0K
IyBNb3ZlIHRoZSBGSUxFIHRvIHRoZSBwbGFjZSB3aGVyZSB0aGUgdXNlciBl
eHBlY3RzIGl0LiAgRklMRSBjYW4gYmUKIyB0aGUgcHJpbmNpcGFsIG91dHB1
dCAoaW4gd2hpY2ggY2FzZSAtbyBkaXJlY3RseSBhcHBseSksIG9yIGFuIGF1
eGlsaWFyeQojIGZpbGUgd2l0aCB0aGUgc2FtZSBiYXNlIG5hbWUuCm1vdmVf
dG9fZGVzdCAoKQp7CiAgbG9jYWwgZGVzdAoKICBjYXNlICR0aWR5OiRvbmFt
ZSBpbgogICAgdHJ1ZTopICBkZXN0PSRvcmlnX3B3ZDs7CiAgICBmYWxzZTop
IGRlc3Q9OzsKICAgICo6KikgICAgZGVzdD0kKG91dHB1dF9iYXNlX25hbWUg
IiQxIik7OwogIGVzYWMKICBpZiB0ZXN0ICEgLWYgIiQxIjsgdGhlbgogICAg
ZmF0YWwgMSAibm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeTogJDEiCiAgZmkK
ICBpZiB0ZXN0IC1uICIkZGVzdCI7IHRoZW4KICAgIHZlcmJvc2UgIkNvcHlp
bmcgJDEgdG8gJGRlc3QiCiAgICBjcCAtcCAiJDEiICIkZGVzdCIKICBmaQp9
CgoKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiMjIE1hbmFnaW5nIHhy
ZWYgZmlsZXMuICAjIwojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKCiMg
YXV4X2ZpbGVfcCBGSUxFCiMgLS0tLS0tLS0tLS0tLS0tCiMgUmV0dXJuIHdp
dGggc3VjY2VzcyB3aXRoIEZJTEUgaXMgYW4gYXV4IGZpbGUuCmF1eF9maWxl
X3AgKCkKewogIHRlc3QgLWYgIiQxIiB8fCByZXR1cm4gMQogIGNhc2UgJDEg
aW4KICAgICouYXV4KSByZXR1cm4gMDs7CiAgICAqKSAgICAgcmV0dXJuIDE7
OwogIGVzYWMKfQoKIyBpbmRleF9maWxlX3AgRklMRQojIC0tLS0tLS0tLS0t
LS0tLS0tCiMgUmV0dXJuIHdpdGggc3VjY2VzcyB3aXRoIEZJTEUgaXMgYW4g
aW5kZXggZmlsZS4KaW5kZXhfZmlsZV9wICgpCnsKICB0ZXN0IC1mICIkMSIg
fHwgcmV0dXJuIDEKICBjYXNlIGBzZWQgJzFxJyAkMWAgaW4KICAgICJcXGVu
dHJ5eyIqfCJcXGluZGV4ZW50cnl7IiopIHJldHVybiAwOzsKICAgICopIHJl
dHVybiAxOzsKICBlc2FjCn0KCiMgeHJlZl9maWxlX3AgRklMRQojIC0tLS0t
LS0tLS0tLS0tLS0KIyBSZXR1cm4gd2l0aCBzdWNjZXNzIGlmIEZJTEUgaXMg
YW4geHJlZiBmaWxlIChpbmRleGVzLCB0YWJsZXMgYW5kIGxpc3RzKS4KeHJl
Zl9maWxlX3AgKCkKewogIHRlc3QgLWYgIiQxIiB8fCByZXR1cm4gMQogICMg
SWYgdGhlIGZpbGUgaXMgbm90IHN1aXRhYmxlIHRvIGJlIGFuIGluZGV4IG9y
IHhyZWYgZmlsZSwgZG9uJ3QKICAjIHByb2Nlc3MgaXQuICBJdCdzIHN1aXRh
YmxlIGlmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgYQogICMgYmFja3NsYXNo
IG9yIHJpZ2h0IHF1b3RlIG9yIGF0LCBhcyBsb25nIGFzIHRoZSBmaXJzdCBs
aW5lIGlzbid0CiAgIyBcaW5wdXQgdGV4aW5mby4KICBjYXNlIGBzZWQgJzFx
JyAkMWAgaW4KICAgICJcXGlucHV0IHRleGluZm8iKikgcmV0dXJuIDE7Owog
ICAgW1xcJydAXSopICAgICAgICAgICByZXR1cm4gMDs7CiAgICAgICAgICAg
KikgICAgICAgICAgIHJldHVybiAxOzsKICBlc2FjCn0KCgojIGdlbmVyYXRl
ZF9maWxlc19nZXQgRklMRU5BTUUtTk9FWFQgW1BSRURJQ0FURS1GSUxURVJd
CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIyBSZXR1cm4gdGhlIGxpc3Qgb2YgZmlsZXMgZ2VuZXJh
dGVkIGJ5IHRoZSBUZVggY29tcGlsYXRpb24gb2YgRklMRU5BTUUtTk9FWFQu
CmdlbmVyYXRlZF9maWxlc19nZXQgKCkKewogIGxvY2FsIGZpbHRlcj10cnVl
CiAgaWYgdGVzdCAtbiAiJDIiOyB0aGVuCiAgICBmaWx0ZXI9JDIKICBmaQoK
ICAjIEdhdGhlciB0aGUgZmlsZXMgY3JlYXRlZCBieSBUZVguCiAgKAogICAg
aWYgdGVzdCAtZiAiJDEubG9nIjsgdGhlbgogICAgICBzZWQgLW4gLWUgInMs
XlxcXFxvcGVub3V0LiogPSBcYFxcKC4qXFwpJ1xcLixcXDEscCIgIiQxLmxv
ZyIKICAgIGZpCiAgICBlY2hvICIkMS5sb2ciCiAgKSB8CiAgIyBEZXBlbmRp
bmcgb24gdGhlc2UgZmlsZXMsIGluZmVyIG91dHB1dHMgZnJvbSBvdGhlciB0
b29scy4KICB3aGlsZSByZWFkIGZpbGU7IGRvCiAgICBlY2hvICRmaWxlCiAg
ICBjYXNlICRsYW5ndWFnZSBpbgogICAgICAodGV4aW5mbykKICAgICAgICAj
IHRleGluZGV4OiB0ZXhpbmZvLmNwIC0+IHRleGluZm8uY3BzCglpZiBpbmRl
eF9maWxlX3AgJGZpbGU7IHRoZW4KCSAgZWNobyAke2ZpbGV9cwoJZmkKCTs7
CiAgICAgIChsYXRleCkKCSMgYmlidGV4OiAqLmF1eCAtPiAqLmJibCBhbmQg
Ki5ibGcuCiAgICAgICAgaWYgYXV4X2ZpbGVfcCAkZmlsZTsgdGhlbgogICAg
ICAgICAgZWNobyAkZmlsZSB8IHNlZCAncy9eXCguKlwpXC5hdXgkL1wxLmJi
bC8nCgkgIGVjaG8gJGZpbGUgfCBzZWQgJ3MvXlwoLipcKVwuYXV4JC9cMS5i
bGcvJwoJZmkKCTs7CiAgICBlc2FjCiAgZG9uZSB8CiAgIyBGaWx0ZXIgZXhp
c3RpbmcgZmlsZXMgbWF0Y2hpbmcgdGhlIGNyaXRlcmlvbi4KICB3aGlsZSBy
ZWFkIGZpbGU7IGRvCiAgICBpZiAkZmlsdGVyICRmaWxlOyB0aGVuCiAgICAg
IGVjaG8gJGZpbGUKICAgIGZpCiAgZG9uZSB8CiAgc29ydAp9CgoKIyB4cmVm
X2ZpbGVzX3NhdmUKIyAtLS0tLS0tLS0tLS0tLS0KIyBTYXZlIHRoZSB4cmVm
IGZpbGVzLgp4cmVmX2ZpbGVzX3NhdmUgKCkKewogICMgU2F2ZSBjb3BpZXMg
b2YgYXV4aWxpYXJ5IGZpbGVzIGZvciBsYXRlciBjb21wYXJpc29uLgogIHhy
ZWZfZmlsZXNfb3JpZz1gZ2VuZXJhdGVkX2ZpbGVzX2dldCAiJGluX25vZXh0
IiB4cmVmX2ZpbGVfcGAKICBpZiB0ZXN0IC1uICIkeHJlZl9maWxlc19vcmln
IjsgdGhlbgogICAgdmVyYm9zZSAiQmFja2luZyB1cCB4cmVmIGZpbGVzOiAk
eHJlZl9maWxlc19vcmlnIgogICAgIyBUaGUgZm9sbG93aW5nIGxpbmUgaW1w
cm92ZXMgYGNwICR4cmVmX2ZpbGVzX29yaWcgIiR3b3JrX2JhayInCiAgICAj
IGJ5IHByZXNlcnZpbmcgdGhlIGRpcmVjdG9yeSBwYXJ0cy4gIFRoaW5rIG9m
CiAgICAjIGNwIGNoYXAxL21haW4uYXV4IGNoYXAyL21haW4uYXV4ICR3b3Jr
X2Jhay4KICAgIHRhciBjZiAtICR4cmVmX2ZpbGVzX29yaWcgfCAoY2QgIiR3
b3JrX2JhayIgJiYgdGFyIHhmIC0pCiAgZmkKfQoKCiMgeHJlZl9maWxlc19j
aGFuZ2VkCiMgLS0tLS0tLS0tLS0tLS0tLS0tCiMgV2hldGhlciB0aGUgeHJl
ZiBmaWxlcyB3ZXJlIGNoYW5nZWQgc2luY2UgdGhlIHByZXZpb3VzIHJ1bi4K
eHJlZl9maWxlc19jaGFuZ2VkICgpCnsKICAjIExhVGVYIChhbmQgdGhlIHBh
Y2thZ2UgY2hhbmdlYmFyKSByZXBvcnQgaW4gdGhlIExPRyBmaWxlIGlmIGl0
CiAgIyBzaG91bGQgYmUgcmVydW4uICBUaGlzIGlzIG5lZWRlZCBmb3IgZmls
ZXMgaW5jbHVkZWQgZnJvbQogICMgc3ViZGlycywgc2luY2UgdGV4aTJkdmkg
ZG9lcyBub3QgdHJ5IHRvIGNvbXBhcmUgeHJlZiBmaWxlcyBpbgogICMgc3Vi
ZGlycy4gIFBlcmZvcm1pbmcgeHJlZiBmaWxlcyB0ZXN0IGlzIHN0aWxsIGdv
b2Qgc2luY2UgTGFUZVgKICAjIGRvZXMgbm90IHJlcG9ydCBjaGFuZ2VzIGlu
IHhyZWYgZmlsZXMuCiAgaWYgZ3JlcCAiUmVydW4gdG8gZ2V0IiAiJGluX25v
ZXh0LmxvZyIgPiY2IDI+JjE7IHRoZW4KICAgIHJldHVybiAwCiAgZmkKCiAg
IyBJZiBvbGQgYW5kIG5ldyBsaXN0cyBkb24ndCBhdCBsZWFzdCBoYXZlIHRo
ZSBzYW1lIGZpbGUgbGlzdCwKICAjIHRoZW4gb25lIGZpbGUgb3IgYW5vdGhl
ciBoYXMgZGVmaW5pdGVseSBjaGFuZ2VkLgogIHhyZWZfZmlsZXNfbmV3PWBn
ZW5lcmF0ZWRfZmlsZXNfZ2V0ICIkaW5fbm9leHQiIHhyZWZfZmlsZV9wYAog
IHZlcmJvc2UgIk9yaWdpbmFsIHhyZWYgZmlsZXMgPSAkeHJlZl9maWxlc19v
cmlnIgogIHZlcmJvc2UgIk5ldyB4cmVmIGZpbGVzICAgICAgPSAkeHJlZl9m
aWxlc19uZXciCiAgaWYgdGVzdCAieCR4cmVmX2ZpbGVzX29yaWciICE9ICJ4
JHhyZWZfZmlsZXNfbmV3IjsgdGhlbgogICAgcmV0dXJuIDAKICBmaQoKICAj
IENvbXBhcmUgZWFjaCBmaWxlIHVudGlsIHdlIGZpbmQgYSBkaWZmZXJlbmNl
LgogIGZvciB0aGlzX2ZpbGUgaW4gJHhyZWZfZmlsZXNfbmV3OyBkbwogICAg
dmVyYm9zZSAiQ29tcGFyaW5nIHhyZWYgZmlsZSBgZWNobyAkdGhpc19maWxl
IHwgc2VkICdzfFwuL3x8ZydgIC4uLiIKICAgICMgY21wIC1zIHJldHVybnMg
bm9uemVybyBleGl0IHN0YXR1cyBpZiBmaWxlcyBkaWZmZXIuCiAgICBpZiBj
bXAgLXMgIiR0aGlzX2ZpbGUiICIkd29ya19iYWsvJHRoaXNfZmlsZSI7IHRo
ZW4gOjsgZWxzZQogICAgICB2ZXJib3NlICJ4cmVmIGZpbGUgYGVjaG8gJHRo
aXNfZmlsZSB8IHNlZCAnc3xcLi98fGcnYCBkaWZmZXJlZCAuLi4iCiAgICAg
IGlmICRkZWJ1ZzsgdGhlbgoJZGlmZiAtdSAiJHdvcmtfYmFrLyR0aGlzX2Zp
bGUiICIkdGhpc19maWxlIgogICAgICBmaQogICAgICByZXR1cm4gMAogICAg
ZmkKICBkb25lCgogICMgTm8gY2hhbmdlLgogIHJldHVybiAxCn0KCgoKIyMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMgUnVubmluZyB0aGUgVGVY
IHN1aXRlLiAgIyMKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKCiMg
cnVuX3RleCAoKQojIC0tLS0tLS0tLS0KIyBSdW4gVGVYIGFzICIkdGV4ICRp
bl9pbnB1dCIsIHRha2luZyBjYXJlIG9mIGVycm9ycyBhbmQgbG9ncy4KcnVu
X3RleCAoKQp7CiAgY2FzZSAkbGFuZ3VhZ2U6JG91dF9sYW5nIGluCiAgICBs
YXRleDpkdmkpICAgdGV4PSR7TEFURVg6LWxhdGV4fTs7CiAgICBsYXRleDpw
ZGYpICAgdGV4PSR7UERGTEFURVg6LXBkZmxhdGV4fTs7CiAgICB0ZXhpbmZv
OmR2aSkKICAgICAgICAjIE1ldGFQb3N0IGFsc28gdXNlcyB0aGUgVEVYIGVu
dmlyb25tZW50IHZhcmlhYmxlLiAgSWYgdGhlIHVzZXIKICAgICAgICAjIGhh
cyBzZXQgVEVYPWxhdGV4IGZvciB0aGF0IHJlYXNvbiwgZG9uJ3QgYm9tYiBv
dXQuCiAgICAgICAgY2FzZSAkVEVYIGluCgkgICpsYXRleCkgdGV4PXRleDs7
ICMgZG9uJ3QgYm90aGVyIHRyeWluZyB0byBmaW5kIGV0ZXgKCSAgICAgICAq
KSB0ZXg9JFRFWAogICAgICAgIGVzYWM7OwogICAgdGV4aW5mbzpwZGYpIHRl
eD0kUERGVEVYOzsKCiAgICAqKSBmYXRhbCAxICIkb3V0X2xhbmcgbm90IHN1
cHBvcnRlZCBmb3IgJGxhbmd1YWdlIjs7CiAgZXNhYwoKICAjIEJld2FyZSBv
ZiBhdXggZmlsZXMgaW4gc3ViZGlyZWN0b3JpZXMgdGhhdCByZXF1aXJlIHRo
ZQogICMgc3ViZGlyZWN0b3J5IHRvIGV4aXN0LgogIGNhc2UgJGxhbmd1YWdl
OiR0aWR5IGluCiAgICBsYXRleDp0cnVlKQogICAgICAgc2VkIC1uICdzfF5b
IF0qXFxpbmNsdWRle1woLipcKS8uKn0uKnxcMXxwJyAiJGluX2lucHV0IiB8
CiAgICAgICBzb3J0IC11IHwKICAgICAgIHdoaWxlIHJlYWQgZAogICAgICAg
ZG8KCSBlbnN1cmVfZGlyICIkd29ya19idWlsZC8kZCIKICAgICAgIGRvbmUK
ICAgICAgIDs7CiAgZXNhYwoKICAjIE5vdGUgdGhhdCB0aGlzIHdpbGwgYmUg
dXNlZCB2aWEgYW4gZXZhbDogcXVvdGUgcHJvcGVybHkuCiAgbG9jYWwgY21k
PSR0ZXgKCiAgIyBJZiBwb3NzaWJsZSwgbWFrZSBUZVggcmVwb3J0IGVycm9y
IGxvY2F0aW9ucyBpbiBHTlUgZm9ybWF0LgogIGlmIHRlc3QgIiR7dGV4X2hl
bHA6K3NldH0iICE9IHNldDsgdGhlbgogICAgIyBHbyB0byBhIHRlbXBvcmFy
eSBkaXJlY3RvcnkgdG8gdHJ5IC0taGVscCwgc2luY2Ugb2xkIHZlcnNpb25z
IHRoYXQKICAgICMgZG9uJ3QgYWNjZXB0IC0taGVscCB3aWxsIGdlbmVyYXRl
IGEgdGV4cHV0LmxvZy4KICAgIHRleF9oZWxwX2Rpcj0kdDJkZGlyL3RleF9o
ZWxwCiAgICBlbnN1cmVfZGlyICIkdGV4X2hlbHBfZGlyIgogICAgdGV4X2hl
bHA9YGNkICIkdGV4X2hlbHBfZGlyIiA+JjYgJiYgJHRleCAtLWhlbHAgPC9k
ZXYvbnVsbCAyPiYxYAogIGZpCiAgaWYgJG5vX2xpbmVfZXJyb3I7IHRoZW4g
OjsgZWxzZQogICAgIyBUaGUgbWsgcHJvZ3JhbSBhbmQgcGVyaGFwcyBvdGhl
cnMgd2FudCB0byBwYXJzZSBUZVgncwogICAgIyBvcmlnaW5hbCBlcnJvciBt
ZXNzYWdlcy4KICAgIGNhc2UgJGxpbmVfZXJyb3I6JHRleF9oZWxwIGluCiAg
ICAgIHRydWU6KmZpbGUtbGluZS1lcnJvciopIGNtZD0iJGNtZCAtLWZpbGUt
bGluZS1lcnJvciI7OwogICAgZXNhYwogIGZpCiAgCiAgIyBUZWxsIFRlWCBh
Ym91dCBUQ1ggZmlsZSwgaWYgc3BlY2lmaWVkLgogIHRlc3QgLW4gIiR0cmFu
c2xhdGVfZmlsZSIgJiYgY21kPSIkY21kIC0tdHJhbnNsYXRlLWZpbGU9JHRy
YW5zbGF0ZV9maWxlIgoKICAjIFRlbGwgVGVYIHRvIGJlIGJhdGNoIGlmIHJl
cXVlc3RlZC4KICBpZiAkYmF0Y2g7IHRoZW4KICAgICMgXGJhdGNobW9kZSBk
b2VzIG5vdCBzaG93IHRlcm1pbmFsIG91dHB1dCBhdCBhbGwsIHNvIHdlIGRv
bid0CiAgICAjIHdhbnQgdGhhdC4gIEFuZCBldmVuIGluIGJhdGNoIG1vZGUs
IFRlWCBpbnNpc3RzIG9uIGhhdmluZyBpbnB1dAogICAgIyBmcm9tIHRoZSB1
c2VyLiAgQ2xvc2UgaXRzIHN0ZGluIHRvIG1ha2UgaXQgaW1wb3NzaWJsZS4K
ICAgIGNtZD0iJGNtZCA8L2Rldi9udWxsICcke2VzY2FwZX1ub25zdG9wbW9k
ZScgJyR7ZXNjYXBlfWlucHV0JyIKICBmaQoKICAjIFRlWCdzIFxpbnB1dCBk
b2VzIG5vdCBzdXBwb3J0IHdoaXRlIHNwYWNlcyBpbiBmaWxlIG5hbWVzLiAg
T3VyCiAgIyBpbnRlbnNpdmUgdXNlIG9mIGFic29sdXRlIGZpbGUgbmFtZXMg
bWFrZXMgdGhpcyB3b3JzZTogdGhlCiAgIyBlbmNsb3NpbmcgZGlyZWN0b3J5
IG5hbWVzIG1heSBpbmNsdWRlIHdoaXRlIHNwYWNlcy4gIEltcHJvdmUgdGhl
CiAgIyBzaXR1YXRpb24gdXNpbmcgYSBzeW1ib2xpYyBsaW5rLiAgRG8gbm90
IGFsdGVyIGluX2lucHV0LgogIGNhc2UgJHRpZHk6YGZ1bmNfZGlybmFtZSAi
JGluX2lucHV0ImAgaW4KICAgIHRydWU6KicgJyopCiAgICAgIF9ydW5fdGV4
X2ZpbGVfbmFtZT1gYmFzZW5hbWUgIiRpbl9pbnB1dCJgCiAgICAgIGlmIHRl
c3QgISAtZiAiJF9ydW5fdGV4X2ZpbGVfbmFtZSI7IHRoZW4KCXZlcmJvc2Ug
bG4gLXNmICIkaW5faW5wdXQiCiAgICAgICAgbG4gLXNmICIkX3J1bl90ZXhf
ZmlsZV9uYW1lIgogICAgICBmaQogICAgICBjbWQ9IiRjbWQgJyRfcnVuX3Rl
eF9maWxlX25hbWUnIgogICAgICA7OwoKICAgICopCiAgICAgIGNtZD0iJGNt
ZCAnJGluX2lucHV0JyIKICAgICAgOzsKICBlc2FjCgogIHZlcmJvc2UgIlJ1
bm5pbmcgJGNtZCAuLi4iCiAgaWYgZXZhbCAiJGNtZCIgPiY1OyB0aGVuCiAg
ICBtb3ZlX3RvX2Rlc3QgIiRpbl9ub2V4dC4kb3V0X2xhbmciCiAgZWxzZQog
ICAgZmF0YWwgMSAiJHRleCBleGl0ZWQgd2l0aCBiYWQgc3RhdHVzLCBxdWl0
dGluZy4iCiAgZmkKfQoKIyBydW5fYmlidGV4ICgpCiMgLS0tLS0tLS0tLS0t
LQojIFJ1biBiaWJ0ZXggb24gY3VycmVudCBmaWxlLgojIC0gSWYgaXRzIGlu
cHV0IChBVVgpIGV4aXN0cy4KIyAtIElmIHNvbWUgY2l0YXRpb25zIGFyZSBt
aXNzaW5nIChMT0cgY29udGFpbnMgYENpdGF0aW9uJykuCiMgICBvciB0aGUg
TE9HIGNvbXBsYWlucyBvZiBhIG1pc3NpbmcgLmJibAojCiMgV2UgcnVuIGJp
YnRleCBmaXJzdCwgYmVjYXVzZSBJIGNhbiBzZWUgcmVhc29ucyBmb3IgdGhl
IGluZGV4ZXMKIyB0byBjaGFuZ2UgYWZ0ZXIgYmlidGV4IGlzIHJ1biwgYnV0
IEkgc2VlIG5vIHJlYXNvbiBmb3IgdGhlCiMgY29udmVyc2UuCiMKIyBEb24n
dCB0cnkgdG8gYmUgdG9vIHNtYXJ0OgojCiMgMS4gUnVubmluZyBiaWJ0ZXgg
b25seSBpZiB0aGUgYmJsIGZpbGUgZXhpc3RzIGFuZCBpcyBvbGRlciB0aGFu
CiMgdGhlIExhVGVYIGZpbGUgaXMgd3JvbmcsIHNpbmNlIHRoZSBkb2N1bWVu
dCBtaWdodCBpbmNsdWRlIGZpbGVzCiMgdGhhdCBoYXZlIGNoYW5nZWQuCiMK
IyAzLiBCZWNhdXNlIHRoZXJlIGNhbiBiZSBzZXZlcmFsIEFVWCAoaWYgdGhl
cmUgYXJlIFxpbmNsdWRlJ3MpLAojIGJ1dCBhIHNpbmdsZSBMT0csIGxvb2tp
bmcgZm9yIG1pc3NpbmcgY2l0YXRpb25zIGluIExPRyBpcwojIGVhc2llciwg
dGhvdWdoIHdlIHRha2UgdGhlIHJpc2sgdG8gbWF0Y2ggZmFsc2UgbWVzc2Fn
ZXMuCnJ1bl9iaWJ0ZXggKCkKewogIGNhc2UgJGxhbmd1YWdlIGluCiAgICBs
YXRleCkgICBiaWJ0ZXg9JHtCSUJURVg6LWJpYnRleH07OwogICAgdGV4aW5m
bykgcmV0dXJuOzsKICBlc2FjCgogICMgIkNpdGF0aW9uIHVuZGVmaW5lZCIg
aXMgZm9yIExhVGVYLCAiVW5kZWZpbmVkIGNpdGF0aW9uIiBmb3IgYnR4bWFj
LnRleC4KICBpZiB0ZXN0IC1yICIkaW5fbm9leHQuYXV4IiBcCiAgICAgJiYg
dGVzdCAtciAiJGluX25vZXh0LmxvZyIgXAogICAgICYmIChncmVwICdXYXJu
aW5nOi4qQ2l0YXRpb24uKnVuZGVmaW5lZCcgIiRpbl9ub2V4dC5sb2ciIFwK
ICAgICAgICAgIHx8IGdyZXAgJy4qVW5kZWZpbmVkIGNpdGF0aW9uJyAiJGlu
X25vZXh0LmxvZyIgXAogICAgICAgICAgfHwgZ3JlcCAnTm8gZmlsZSAuKlwu
YmJsXC4nICIkaW5fbm9leHQubG9nIikgXAogICAgICAgID4mNiAyPiYxOyBc
CiAgdGhlbgogICAgZ2VuZXJhdGVkX2ZpbGVzX2dldCAiJGluX25vZXh0IiB8
CiAgICB3aGlsZSByZWFkIGYKICAgIGRvCiAgICAgIGlmIHRlc3QgLXMgIiRm
IiAmJiBcCiAgICAgICAgIChncmVwICdeXFxiaWJzdHlsZVt7XScgIiRmIiAg
IFwKICAgICAgICAgICYmIGdyZXAgJ15cXGJpYmRhdGFbe10nICIkZiIgXAoJ
ICAjIyBUaGUgZm9sbG93aW5nIGxpbmUgaXMgc3VzcGljaW91czogZmFpbHMg
d2hlbiB0aGVyZQogICAgICAgICAgIyMgYXJlIGNpdGF0aW9ucyBpbiBzdWIg
YXV4IGZpbGVzLiAgV2UgbmVlZCB0byBiZQogICAgICAgICAgIyMgc21hcnRl
ciBpbiB0aGlzIGNhc2UuCiAgICAgICAgICAjIyAmJiBncmVwICdeXFxjaXRh
dGlvblt7XScgIiRmIgoJICApID4mNiAyPiYxOyB0aGVuCiAgICAgICAgdmVy
Ym9zZSAiUnVubmluZyAkYmlidGV4ICRmIC4uLiIKICAgICAgICAkYmlidGV4
ICIkZiIgPiY1IHx8CiAgICAgICAgICBmYXRhbCAxICIkYmlidGV4IGV4aXRl
ZCB3aXRoIGJhZCBzdGF0dXMsIHF1aXR0aW5nLiIKICAgICAgZmkKICAgIGRv
bmUKICBmaQp9CgojIHJ1bl9pbmRleCAoKQojIC0tLS0tLS0tLS0tLQojIFJ1
biB0ZXhpbmRleCAob3IgbWFrZWluZGV4KSBvbiBjdXJyZW50IGluZGV4IGZp
bGVzLiAgSWYgdGhleSBhbHJlYWR5CiMgZXhpc3QsIGFuZCBhZnRlciBydW5u
aW5nIFRlWCBhIGZpcnN0IHRpbWUgdGhlIGluZGV4IGZpbGVzIGRvbid0CiMg
Y2hhbmdlLCB0aGVuIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIHJ1biBUZVggYWdh
aW4uICBCdXQgd2Ugd29uJ3Qga25vdwojIHRoYXQgaWYgdGhlIGluZGV4IGZp
bGVzIGFyZSBvdXQgb2YgZGF0ZSBvciBub25leGlzdGVudC4KcnVuX2luZGV4
ICgpCnsKICBjYXNlICRsYW5ndWFnZSBpbgogICAgbGF0ZXgpICAgdGV4aW5k
ZXg9JHtNQUtFSU5ERVg6LW1ha2VpbmRleH07OwogICAgdGV4aW5mbykgdGV4
aW5kZXg9JHtURVhJTkRFWDotdGV4aW5kZXh9OzsKICBlc2FjCiAgaW5kZXhf
ZmlsZXM9YGdlbmVyYXRlZF9maWxlc19nZXQgJGluX25vZXh0IGluZGV4X2Zp
bGVfcGAKICBpZiB0ZXN0IC1uICIkdGV4aW5kZXgiICYmIHRlc3QgLW4gIiRp
bmRleF9maWxlcyI7IHRoZW4KICAgIHZlcmJvc2UgIlJ1bm5pbmcgJHRleGlu
ZGV4ICRpbmRleF9maWxlcyAuLi4iCiAgICAkdGV4aW5kZXggJGluZGV4X2Zp
bGVzIDI+JjUgMT4mMiB8fAogICAgICAgZmF0YWwgMSAiJHRleGluZGV4IGV4
aXRlZCB3aXRoIGJhZCBzdGF0dXMsIHF1aXR0aW5nLiIKICBmaQp9CgoKIyBy
dW5fdGh1bWJwZGYgKCkKIyAtLS0tLS0tLS0tLS0tLS0KcnVuX3RodW1icGRm
ICgpCnsKICBpZiB0ZXN0ICRvdXRfbGFuZyA9IHBkZiBcCiAgICAgJiYgdGVz
dCAtciAiJGluX25vZXh0LmxvZyIgXAogICAgICYmIGdyZXAgJ3RodW1icGRm
XC5zdHknICAiJGluX25vZXh0LmxvZyIgPiY2IDI+JjE7IFwKICB0aGVuCiAg
ICB0aHVtYnBkZj0ke1RIVU1CUERGOi10aHVtYnBkZn0KICAgIHZlcmJvc2Ug
IlJ1bm5pbmcgJHRodW1icGRmICRpbl9ub2V4dCAuLi4iCiAgICBpZiAkdGh1
bWJwZGYgIiRpbl9ub2V4dCIgPiY1OyB0aGVuCiAgICAgIHJ1bl90ZXgKICAg
IGVsc2UKICAgICAgcmVwb3J0ICIkdGh1bWJwZGYgZXhpdGVkIHdpdGggYmFk
IHN0YXR1cy4iIFwKCSAgICAgIklnbm9yaW5nIGl0cyBvdXRwdXQuIgogICAg
ZmkKICBmaQp9CgoKIyBydW5fdGV4X3N1aXRlICgpCiMgLS0tLS0tLS0tLS0t
LS0tLQojIFJ1biB0aGUgVGVYIHRvb2xzIHVudGlsIGEgZml4IHBvaW50IGlz
IHJlYWNoZWQuCnJ1bl90ZXhfc3VpdGUgKCkKewogICMgQ291bnQgdGhlIG51
bWJlciBvZiBjeWNsZXMuCiAgbG9jYWwgY3ljbGU9MAoKICB3aGlsZSA6OyBk
bwogICAgY3ljbGU9YGV4cHIgJGN5Y2xlICsgMWAKICAgIHZlcmJvc2UgIkN5
Y2xlICRjeWNsZSBmb3IgJGNvbW1hbmRfbGluZV9maWxlbmFtZSIKCiAgICB4
cmVmX2ZpbGVzX3NhdmUKCiAgICBydW5fYmlidGV4CiAgICBydW5faW5kZXgK
ICAgIHJ1bl90ZXgKCiAgICB4cmVmX2ZpbGVzX2NoYW5nZWQgfHwgYnJlYWsK
ICBkb25lCgogICMgSWYgd2Ugd2VyZSB1c2luZyB0aHVtYnBkZiBhbmQgcHJv
ZHVjaW5nIFBERiwgdGhlbiBydW4gdGh1bWJwZGYKICAjIGFuZCBUZVggb25l
IGxhc3QgdGltZS4KICBydW5fdGh1bWJwZGYKfQoKIyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKIyMgVGVYIHByb2Nlc3NpbmcgYXV4
aWxpYXJ5IHRvb2xzLiAgIyMKIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gIyMKCgojIEEgc2VkIHNjcmlwdCB0aGF0IHByZXByb2Nlc3Nl
cyBUZXhpbmZvIHNvdXJjZXMgaW4gb3JkZXIgdG8ga2VlcCB0aGUKIyBpZnRl
eCBzZWN0aW9ucyBvbmx5LiAgV2Ugd2FudCB0byByZW1vdmUgbm9uIFRlWCBz
ZWN0aW9ucywgYW5kIGNvbW1lbnQKIyAod2l0aCBgQGMgdGV4aTJkdmknKSBU
ZVggc2VjdGlvbnMgc28gdGhhdCBtYWtlaW5mbyBkb2VzIG5vdCB0cnkgdG8K
IyBwYXJzZSB0aGVtLiAgTmV2ZXJ0aGVsZXNzLCB3aGlsZSBjb21tZW50aW5n
IFRlWCBzZWN0aW9ucywgZG9uJ3QKIyBjb21tZW50IEBtYWNyby9AZW5kIG1h
Y3JvIHNvIHRoYXQgbWFrZWluZm8gZG9lcyBwcm9wYWdhdGUgdGhlbS4KIyBV
bmZvcnR1bmF0ZWx5IG1ha2VpbmZvIC0taWZ0ZXggLS1uby1pZmluZm8gZG9l
c24ndCB3b3JrIHdlbGwgZW5vdWdoCiMgKHlldCksIG1ha2VpbmZvIGNhbid0
IHBhcnNlIHRoZSBUZVggY29tbWFuZHMsIHNvIHdvcmsgYXJvdW5kIHdpdGgg
c2VkLgojCmNvbW1lbnRfaWZ0ZXg9XAonL15AdGV4LywvXkBlbmQgdGV4L3sK
ICBzL14vQGMgdGV4aTJkdmkvCn0KL15AaWZ0ZXgvLC9eQGVuZCBpZnRleC97
CiAgcy9eL0BjIHRleGkyZHZpLwogIC9eQGMgdGV4aTJkdmlAbWFjcm8vLC9e
QGMgdGV4aTJkdmlAZW5kIG1hY3JvL3sKICAgIHMvXkBjIHRleGkyZHZpLy8K
ICB9Cn0KL15AaWZub3R0ZXgvLC9eQGVuZCBpZm5vdHRleC97CiAgcy9eL0Bj
ICh0ZXhpMmR2aSkvCn0KL15AaWZpbmZvLywvXkBlbmQgaWZpbmZvL3sKICAv
XkBub2RlL3AKICAvXkBtZW51LywvXkBlbmQgbWVudS9wCiAgdAogIHMvXi9A
YyAodGV4aTJkdmkpLwp9CnMvXkBpZm5vdGluZm8vQGMgdGV4aTJkdmlAaWZu
b3RpbmZvLwpzL15AZW5kIGlmbm90aW5mby9AYyB0ZXhpMmR2aUBlbmQgaWZu
b3RpbmZvLycKCiMgVW5jb21tZW50aW5nIGlzIHNpbXBsZTogUmVtb3ZlIGFu
eSBsZWFkaW5nIGBAYyB0ZXhpMmR2aScuCnVuY29tbWVudF9pZnRleD0ncy9e
QGMgdGV4aTJkdmkvLycKCgojIHJ1bl9tYWtlaW5mbyAoKQojIC0tLS0tLS0t
LS0tLS0tLQojIEV4cGFuZCBtYWNybyBjb21tYW5kcyBpbiB0aGUgb3JpZ2lu
YWwgc291cmNlIGZpbGUgdXNpbmcgTWFrZWluZm8uCiMgQWx3YXlzIHVzZSBg
ZW5kJyBmb290bm90ZSBzdHlsZSwgc2luY2UgdGhlIGBzZXBhcmF0ZScgc3R5
bGUKIyBnZW5lcmF0ZXMgZGlmZmVyZW50IG91dHB1dCAoYXJndWFibHkgdGhp
cyBpcyBhIGJ1ZyBpbiAtRSkuICBEaXNjYXJkCiMgbWFpbiBpbmZvIG91dHB1
dCwgdGhlIHVzZXIgYXNrZWQgdG8gcnVuIFRlWCwgbm90IG1ha2VpbmZvLgpy
dW5fbWFrZWluZm8gKCkKewogIGNhc2UgJGxhbmd1YWdlIGluCiAgdGV4aW5m
bykKICAgICMgVW5sZXNzIHJlcXVpcmVkIGJ5IHRoZSB1c2VyLCBtYWtlaW5m
byBleHBhbnNpb24gaXMgd2FudGVkIG9ubHkKICAgICMgaWYgdGV4aW5mby50
ZXggaXMgdG9vIG9sZC4KICAgIGlmIHRlc3QgIiRleHBhbmQiID0gdDsgdGhl
bgogICAgICBtYWtlaW5mbz0ke01BS0VJTkZPOi1tYWtlaW5mb30KICAgIGVs
c2UKICAgICAgIyBDaGVjayBpZiB0ZXhpbmZvLnRleCBwZXJmb3JtcyBtYWNy
byBleHBhbnNpb24gYnkgbG9va2luZyBmb3IKICAgICAgIyBpdHMgdmVyc2lv
bi4gIFRoZSB2ZXJzaW9uIGlzIGEgZGF0ZSBvZiB0aGUgZm9ybSBZRUFSLU1P
LURBLgogICAgICAjIFdlIGRvbid0IG5lZWQgdG8gdXNlIFswLTldIHRvIG1h
dGNoIHRoZSBkaWdpdHMgc2luY2UgYW55d2F5CiAgICAgICMgdGhlIGNvbXBh
cmlzb24gd2l0aCAkdHhpcHJlcmVxLCBhIG51bWJlciwgd2lsbCBmYWlsIHdp
dGggbm9uCiAgICAgICMgZGlnaXRzLgogICAgICAjIFJ1biBpbiBhIHRlbXBv
cmFyeSBkaXJlY3RvcnkgdG8gYXZvaWQgbGVhdmluZyBmaWxlcy4KICAgICAg
dmVyc2lvbl90ZXN0X2Rpcj0kdDJkZGlyL3ZlcnNpb25fdGVzdAogICAgICBl
bnN1cmVfZGlyICIkdmVyc2lvbl90ZXN0X2RpciIKICAgICAgKAogICAgICAg
ICBjZCAiJHZlcnNpb25fdGVzdF9kaXIiCiAgICAgICAgIGVjaG8gJ1xpbnB1
dCB0ZXhpbmZvLnRleCBAYnllJyA+dHhpdmVyc2lvbi50ZXgKICAgICAgICAg
IyBCZSBzdXJlIHRoYXQgaWYgdGV4IHdhbnRzIHRvIGZhaWwsIGl0IGlzIG5v
dCBpbnRlcmFjdGl2ZToKICAgICAgICAgIyBjbG9zZSBzdGRpbi4KICAgICAg
ICAgJFRFWCB0eGl2ZXJzaW9uLnRleCA8L2Rldi9udWxsID50eGl2ZXJzaW9u
Lm91dCAyPnR4aXZlcnNpb24uZXJyCiAgICAgICkKICAgICAgaWYgdGVzdCAk
PyAhPSAwOyB0aGVuCiAgICAgICAgY2F0ICR2ZXJzaW9uX3Rlc3RfZGlyL3R4
aXZlcnNpb24ub3V0CiAgICAgICAgY2F0ICR2ZXJzaW9uX3Rlc3RfZGlyL3R4
aXZlcnNpb24uZXJyID4mMgogICAgICAgIGZhdGFsIDEgInRleGluZm8udGV4
IGFwcGVhcnMgdG8gYmUgYnJva2VuLCBxdWl0dGluZy4iCiAgICAgIGZpCiAg
ICAgIGV2YWwgYHNlZCAtbiAncy9eLipcW1woLipcKXZlcnNpb24gXCguLi4u
XCktXCguLlwpLVwoLi5cKS4qJC90eGlmb3JtYXQ9XDEgdHhpdmVyc2lvbj0i
XDJcM1w0Ii9wJyAkdmVyc2lvbl90ZXN0X2Rpci90eGl2ZXJzaW9uLm91dGAK
ICAgICAgdmVyYm9zZSAidGV4aW5mby50ZXggcHJlbG9hZGVkIGFzIFxgJHR4
aWZvcm1hdCcsIHZlcnNpb24gaXMgXGAkdHhpdmVyc2lvbicgLi4uIgogICAg
ICBpZiB0ZXN0ICIkdHhpcHJlcmVxIiAtbGUgIiR0eGl2ZXJzaW9uIiA+JjYg
Mj4mMTsgdGhlbgogICAgICAgIG1ha2VpbmZvPQogICAgICBlbHNlCiAgICAg
ICAgbWFrZWluZm89JHtNQUtFSU5GTzotbWFrZWluZm99CiAgICAgIGZpCiAg
ICAgICMgQXMgbG9uZyBhcyB3ZSBoYWQgdG8gcnVuIFRlWCwgb2ZmZXIgdGhl
IHVzZXIgdGhpcyBjb252ZW5pZW5jZToKICAgICAgaWYgdGVzdCAiJHR4aWZv
cm1hdCIgPSBUZXhpbmZvOyB0aGVuCgllc2NhcGU9QAogICAgICBmaQogICAg
ZmkKCiAgICBpZiB0ZXN0IC1uICIkbWFrZWluZm8iOyB0aGVuCiAgICAgICMg
aW5fc3JjOiB0aGUgZmlsZSB3aXRoIG1hY3JvcyBleHBhbmRlZC4KICAgICAg
IyBVc2UgdGhlIHNhbWUgYmFzZW5hbWUgdG8gZ2VuZXJhdGUgdGhlIHNhbWUg
YXV4IGZpbGUgbmFtZXMuCiAgICAgIHdvcmtfc3JjPSR3b3JrZGlyL3NyYwog
ICAgICBlbnN1cmVfZGlyICIkd29ya19zcmMiCiAgICAgIGluX3NyYz0kd29y
a19zcmMvJGluX2Jhc2UKICAgICAgbG9jYWwgbWlpbmNsdWRlcz1gbGlzdF9w
cmVmaXggaW5jbHVkZXMgLUlgCiAgICAgIHZlcmJvc2UgIk1hY3JvLWV4cGFu
ZGluZyAkY29tbWFuZF9saW5lX2ZpbGVuYW1lIHRvICRpbl9zcmMgLi4uIgog
ICAgICAjIGV2YWwgJG1ha2VpbmZvIGJlY2F1c2UgaXQgbWlnaHQgYmUgZGVm
aW5lZCBhcyBzb21ldGhpbmcgY29tcGxleAogICAgICAjIChydW5uaW5nIG1p
c3NpbmcpIGFuZCB0aGVuIHdlIGVuZCB1cCB3aXRoIHRoaW5ncyBsaWtlICci
LUkiJywKICAgICAgIyBhbmQgIi1JIiAoaW5jbHVkaW5nIHRoZSBxdW90ZXMp
IGlzIG5vdCBhbiBvcHRpb24gbmFtZS4gIFRoaXMKICAgICAgIyBoYXBwZW5z
IHdpdGggZ2V0dGV4dCAwLjE0LjUsIGF0IGxlYXN0LgogICAgICBzZWQgIiRj
b21tZW50X2lmdGV4IiAiJGNvbW1hbmRfbGluZV9maWxlbmFtZSIgXAogICAg
ICAgIHwgZXZhbCAkbWFrZWluZm8gLS1mb290bm90ZS1zdHlsZT1lbmQgLUkg
IiRpbl9kaXIiICRtaWluY2x1ZGVzIFwKICAgICAgICAgIC1vIC9kZXYvbnVs
bCAtLW1hY3JvLWV4cGFuZD0tIFwKICAgICAgICB8IHNlZCAiJHVuY29tbWVu
dF9pZnRleCIgPiIkaW5fc3JjIgogICAgICAjIENvbnRpbnVlIG9ubHkgaWYg
ZXZlcnl0aGluZyBzdWNjZWVkZWQuCiAgICAgIGlmIHRlc3QgJD8gLW5lIDAg
XAogICAgICAgICB8fCB0ZXN0ICEgLXIgIiRpbl9zcmMiOyB0aGVuCiAgICAg
ICAgdmVyYm9zZSAiRXhwYW5zaW9uIGZhaWxlZCwgaWdub3JlZC4uLiI7CiAg
ICAgIGVsc2UKICAgICAgICBpbl9pbnB1dD0kaW5fc3JjCiAgICAgIGZpCiAg
ICBmaQogICAgOzsKICBlc2FjCn0KCiMgaW5zZXJ0X2NvbW1hbmRzICgpCiMg
LS0tLS0tLS0tLS0tLS0tLS0tCiMgVXNlZCBtb3N0IGNvbW1vbmx5IGZvciBA
ZmluYWxvdXQsIEBzbWFsbGJvb2ssIGV0Yy4KaW5zZXJ0X2NvbW1hbmRzICgp
CnsKICBsb2NhbCB0ZXh0cmFfY21kCiAgY2FzZSAkbGFuZ3VhZ2UgaW4KICAg
IGxhdGV4KSAgIHRleHRyYV9jbWQ9MWk7OwogICAgdGV4aW5mbykgdGV4dHJh
X2NtZD0nL15Ac2V0ZmlsZW5hbWUvYSc7OwogICAgKikgICAgICAgZWNobyAi
JDA6IGludGVybmFsIGVycm9yLCB1bmtub3duIGxhbmd1YWdlOiAkbGFuZ3Vh
Z2UiID4mMjsKICBlc2FjCgogIGlmIHRlc3QgLW4gIiR0ZXh0cmEiOyB0aGVu
CiAgICAjIF94dHIuICBUaGUgZmlsZSB3aXRoIHRoZSB1c2VyJ3MgZXh0cmEg
Y29tbWFuZHMuCiAgICB3b3JrX3h0cj0kd29ya2Rpci94dHIKICAgIGluX3h0
cj0kd29ya194dHIvJGluX2Jhc2UKICAgIGVuc3VyZV9kaXIgIiR3b3JrX3h0
ciIKICAgIHZlcmJvc2UgIkluc2VydGluZyBleHRyYSBjb21tYW5kczogJHRl
eHRyYSIKICAgIHNlZCAiJHRleHRyYV9jbWRcXAokdGV4dHJhIiAiJGluX2lu
cHV0IiA+IiRpbl94dHIiCiAgICBpbl9pbnB1dD0kaW5feHRyCiAgZmkKfQoK
IyBydW5fcmVjb2RlICgpCiMgLS0tLS0tLS0tLS0tLQojIElmIHRoaXMgaXMg
YSBUZXhpbmZvIGZpbGUgd2l0aCBhIHNwZWNpZmllZCBpbnB1dCBlbmNvZGlu
ZywgYW5kCiMgcmVjb2RlIGlzIGF2YWlsYWJsZSwgdGhlbiByZWNvZGUgdG8g
cGxhaW4gNyBiaXQgVGV4aW5mby4KcnVuX3JlY29kZSAoKQp7CiAgbG9jYWwg
ZnJvbQogIGxvY2FsIHRvCiAgCiAgaWYgdGVzdCAkbGFuZ3VhZ2UgPSB0ZXhp
bmZvOyB0aGVuCiAgICBwZ209J3MvXiAqQGRvY3VtZW50ZW5jb2RpbmcgICpc
KFteIF1bXiBdKlwpICokL1wxLwoJdCBmb3VuZAoJZAoJOmZvdW5kCglxJwog
ICAgZW5jb2Rpbmc9YHNlZCAtZSAiJHBnbSIgIiRpbl9pbnB1dCJgCiAgICBp
ZiAkcmVjb2RlICYmIHRlc3QgLW4gIiRlbmNvZGluZyIgJiYgZmluZHByb2cg
cmVjb2RlOyB0aGVuCiAgICAgIGlmIHRlc3QgLW4gIiRyZWNvZGVfZnJvbSI7
IHRoZW4KCWZyb209JHJlY29kZV9mcm9tCgl0bz0kZW5jb2RpbmcKICAgICAg
ZWxzZQogICAgICAgIGZyb209JGVuY29kaW5nCgl0bz0kdGV4aW5mbwogICAg
ICBmaQogICAgICB2ZXJib3NlICJSZWNvZGluZyBmcm9tICRmcm9tIHRvICR0
by4iCiAgICAgICMgX3JjZC4gIFRoZSBUZXhpbmZvIGZpbGUgcmVjb2RlZCBp
biA3Yml0LgogICAgICB3b3JrX3JjZD0kd29ya2Rpci9yZWNvZGUKICAgICAg
aW5fcmNkPSR3b3JrX3JjZC8kaW5fYmFzZQogICAgICBlbnN1cmVfZGlyICIk
d29ya19yY2QiCiAgICAgIGlmIHJlY29kZSAiJGVuY29kaW5nLi4kdG8iIDwi
JGluX2lucHV0IiA+IiRpbl9yY2QiIFwKICAgICAgICAgJiYgdGVzdCAtcyAi
JGluX3JjZCI7IHRoZW4KICAgICAgICBpbl9pbnB1dD0kaW5fcmNkCiAgICAg
IGVsc2UKICAgICAgICB2ZXJib3NlICJSZWNvZGluZyBmYWlsZWQsIHVzaW5n
IG9yaWdpbmFsIGlucHV0LiIKICAgICAgZmkKICAgIGZpCiAgZmkKfQoKIyBj
b21wdXRlX2xhbmd1YWdlIEZJTEVOQU1FCiMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQojIFJldHVybiB0aGUgc2hvcnQgc3RyaW5nIGRlc2NyaWJpbmcg
dGhlIGxhbmd1YWdlIGluIHdoaWNoIEZJTEVOQU1FCiMgaXMgd3JpdHRlbjog
YHRleGluZm8nIG9yIGBsYXRleCcuCmNvbXB1dGVfbGFuZ3VhZ2UgKCkKewog
ICMgSWYgdGhlIHVzZXIgZXhwbGljaXRseSBzcGVjaWZpZWQgdGhlIGxhbmd1
YWdlLCB1c2UgdGhhdC4KICAjIE90aGVyd2lzZSwgaWYgdGhlIGZpcnN0IGxp
bmUgaXMgXGlucHV0IHRleGluZm8sIGFzc3VtZSBpdCdzIHRleGluZm8uCiAg
IyBPdGhlcndpc2UsIGd1ZXNzIGZyb20gdGhlIGZpbGUgZXh0ZW5zaW9uLgog
IGlmIHRlc3QgLW4gIiRzZXRfbGFuZ3VhZ2UiOyB0aGVuCiAgICBlY2hvICRz
ZXRfbGFuZ3VhZ2UKICBlbGlmIHNlZCAxcSAiJDEiIHwgZ3JlcCAnaW5wdXQg
dGV4aW5mbycgPiY2OyB0aGVuCiAgICBlY2hvIHRleGluZm8KICBlbHNlCiAg
ICAjIEdldCB0aGUgdHlwZSBvZiB0aGUgZmlsZSAobGF0ZXggb3IgdGV4aW5m
bykgZnJvbSB0aGUgZ2l2ZW4gbGFuZ3VhZ2UKICAgICMgd2UganVzdCBndWVz
c2VkLCBvciBmcm9tIHRoZSBmaWxlIGV4dGVuc2lvbiBpZiBub3Qgc2V0IHll
dC4KICAgIGNhc2UgJDEgaW4KICAgICAgKi5sdHggfCAqLnRleCB8ICouZHJ2
IHwgKi5kdHgpIGVjaG8gbGF0ZXg7OwogICAgICAqKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWNobyB0ZXhpbmZvOzsKICAgIGVzYWMKICBmaQp9
CgoKIyBydW5fdG9faHRtbCAoKQojIC0tLS0tLS0tLS0tLS0tCiMgQ29udmVy
dCB0byBIVE1MLgpydW5fdG9faHRtbCAoKQp7CiAgaGV2ZWE9JHtIRVZFQTot
aGV2ZWF9CgogICMgQ29tcGlsaW5nIHRvIHRoZSB0bXAgZGlyZWN0b3J5IGVu
YWJsZXMgdG8gcHJlc2VydmUgYSBwcmV2aW91cwogICMgc3VjY2Vzc2Z1bCBj
b21waWxhdGlvbi4gIFVuZm9ydHVuYXRlbHkgaXQgbWFrZXMgaXQgaGFyZCB0
byBtb3ZlCiAgIyB0aGUgaW1hZ2UgYmFjayB0byB0aGUgZGVzdGluYXRpb24g
ZGlyZWN0b3J5LiAgU28gY29tcGlsZSB0byB0aGUKICAjIGFjdHVhbCBkZXN0
aW5hdGlvbi4KICBsb2NhbCB0b19odG1sPSIkaGV2ZWEgLWZpeCAtbm9pc28g
LU8gLW8gJyRvdXRfbmFtZSciCiAgdG9faHRtbD0iJHRvX2h0bWwgYGxpc3Rf
cHJlZml4IGluY2x1ZGVzIC1JYCIKICB0b19odG1sPSIkdG9faHRtbCAnJGlu
X2lucHV0JyIKCiAgdmVyYm9zZSAicnVubmluZyAkdG9faHRtbCIKICBpZiBl
dmFsICIkdG9faHRtbCIgPiY1OyB0aGVuIDo7IGVsc2UKICAgIGZhdGFsIDEg
IiRoZXZlYSBleGl0ZWQgd2l0aCBiYWQgc3RhdHVzLCBxdWl0dGluZy4iCiAg
ZmkKfQoKCiMgcnVuX2NvcmVfY29udmVyc2lvbiAoKQojIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIyBSdW4gdGhlIFRlWCB0b29scyB1bnRpbCBhIGZpeCBw
b2ludCBpcyByZWFjaGVkLgpydW5fY29yZV9jb252ZXJzaW9uICgpCnsKICAj
IE1vdmUgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgogIGlmICR0aWR5OyB0
aGVuCiAgICB2ZXJib3NlICJjZCAkd29ya19idWlsZCIKICAgIGNkICIkd29y
a19idWlsZCIgfHwgZXhpdCAxCiAgZmkKCiAgY2FzZSAkb3V0X2xhbmcgaW4K
ICAgIGR2aXxwZGYpIHJ1bl90ZXhfc3VpdGU7OwogICAgaHRtbCAgICkgcnVu
X3RvX2h0bWw7OwogIGVzYWMKCiAgY2Rfb3JpZwp9CgoKIyBjb21waWxlICgp
CiMgLS0tLS0tLS0tLQojIFJ1biB0aGUgZnVsbCBjb21waWxhdGlvbiBjaGFp
biwgZnJvbSBwcmUtcHJvY2Vzc2luZyB0byBpbnN0YWxsYXRpb24KIyBvZiB0
aGUgb3V0cHV0IGF0IGl0cyBleHBlY3RlZCBsb2NhdGlvbi4KY29tcGlsZSAo
KQp7CiAgIyBTb3VyY2UgZmlsZSBtaWdodCBpbmNsdWRlIGFkZGl0aW9uYWwg
c291cmNlcy4KICAjIFdlIHdhbnQgYC46JG9yaWdfcHdkJyBiZWZvcmUgYW55
dGhpbmcgZWxzZS4gIChXZSdsbCBhZGQgYC46JyBsYXRlcgogICMgYWZ0ZXIg
YWxsIG90aGVyIGRpcmVjdG9yaWVzIGhhdmUgYmVlbiB0dXJuZWQgaW50byBh
YnNvbHV0ZSBwYXRocy4pCiAgIyBgLicgZ29lcyBmaXJzdCB0byBlbnN1cmUg
dGhhdCBhbnkgb2xkIC5hdXgsIC5jcHMsCiAgIyBldGMuIGZpbGVzIGluICR7
ZGlyZWN0b3J5fSBkb24ndCBnZXQgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIGZy
ZXNoZXIKICAjIGZpbGVzIGluIGAuJy4gIEluY2x1ZGUgb3JpZ19wd2QgaW4g
Y2FzZSB3ZSBhcmUgaW4gY2xlYW4gYnVpbGQgbW9kZSwgd2hlcmUKICAjIHdl
J3ZlIGNkJ2QgdG8gYSB0ZW1wIGRpcmVjdG9yeS4KICB0eGluY2x1ZGVzPWBs
aXN0X2luZml4IGluY2x1ZGVzICRwYXRoX3NlcGAKICBjb21tb249IiRvcmln
X3B3ZCRwYXRoX3NlcCRpbl9kaXIkcGF0aF9zZXAkdHhpbmNsdWRlcyRwYXRo
X3NlcCIKICBmb3IgdmFyIGluICR0ZXhfZW52dmFyczsgZG8KICAgIGV2YWwg
dmFsPSJcJGNvbW1vblwkJHt2YXJ9X29yaWciCiAgICAjIENvbnZlcnQgcmVs
YXRpdmUgcGF0aHMgdG8gYWJzb2x1dGUgcGF0aHMsIHNvIHdlIGNhbiBydW4g
aW4gYW5vdGhlcgogICAgIyBkaXJlY3RvcnkgKGUuZy4sIGluIGNsZWFuIGJ1
aWxkIG1vZGUsIG9yIGR1cmluZyB0aGUgbWFjcm8tc3VwcG9ydAogICAgIyBk
ZXRlY3Rpb24pLgogICAgdmFsPWBhYnNvbHV0ZV9maWxlbmFtZXMgIiR2YWwi
YAogICAgZXZhbCAkdmFyPSJcIiR2YWxcIiIKICAgIGV2YWwgZXhwb3J0ICR2
YXIKICAgIGV2YWwgdmVyYm9zZSAiJHZhcj1cJ1wkJHt2YXJ9XCciCiAgZG9u
ZQoKICAjIC0tZXhwYW5kCiAgcnVuX21ha2VpbmZvCgogICMgLS1jb21tYW5k
LCAtLXRleGluZm8KICBpbnNlcnRfY29tbWFuZHMKCiAgIyAtLXJlY29kZQog
IHJ1bl9yZWNvZGUKCiAgIyBSdW4gdW50aWwgYSBmaXggcG9pbnQgaXMgcmVh
Y2hlZC4KICBydW5fY29yZV9jb252ZXJzaW9uCn0KCgojIHJlbW92ZSBGSUxF
UwojIC0tLS0tLS0tLS0tLQpyZW1vdmUgKCkKewogIHZlcmJvc2UgIlJlbW92
aW5nIiAiJEAiCiAgcm0gLXJmICIkQCIKfQoKIyBtb3N0bHlfY2xlYW4KIyAt
LS0tLS0tLS0tLS0KIyBSZW1vdmUgYXV4aWxpYXJ5IGZpbGVzIGFuZCBkaXJl
Y3Rvcmllcy4gIENoYW5nZXMgdGhlIGN1cnJlbnQgZGlyZWN0b3J5Lgptb3N0
bHlfY2xlYW4gKCkKewogIGNkX29yaWcKICBsb2NhbCB0b19yZW1vdmU9IiR0
MmRkaXIiCiAgJHRpZHkgfHwgewogICAgbG9jYWwgbG9nPSR3b3JrX2J1aWxk
LyRpbl9ub2V4dC5sb2cKICAgIHRvX3JlbW92ZT0kdG9fcmVtb3ZlIiAkbG9n
ICIkKGdlbmVyYXRlZF9maWxlc19nZXQgIiR3b3JrX2J1aWxkLyRpbl9ub2V4
dCIpCiAgfQogIHJlbW92ZSAkdG9fcmVtb3ZlCn0KCgojIGNsZWFudXAgKCkK
IyAtLS0tLS0tLS0tCiMgUmVtb3ZlIHdoYXQgc2hvdWxkIGJlIHJlbW92ZWQg
YWNjb3JkaW5nIHRvIG9wdGlvbnMuCiMgQ2FsbGVkIGF0IHRoZSBlbmQgb2Yg
ZWFjaCBjb21waWxhdGlvbiBjeWNsZSwgYW5kIGF0IHRoZSBlbmQgb2YKIyB0
aGUgc2NyaXB0LiAgQ2hhbmdlcyB0aGUgY3VycmVudCBkaXJlY3RvcnkuCmNs
ZWFudXAgKCkKewogIGNhc2UgJGJ1aWxkX21vZGUgaW4KICAgIGxvY2FsKSBj
ZF9vcmlnOyByZW1vdmUgIiR0MmRkaXIiOzsKICAgIGNsZWFuKSBtb3N0bHlf
Y2xlYW47OwogICAgdGlkeSkgIDs7CiAgZXNhYwp9CgoKCiMjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gIyMKIyMgQ29tbWFuZCBsaW5lIHBhcnNpbmcuICAj
IwojIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCgojIFB1c2ggYSB0b2tl
biBhbW9uZyB0aGUgYXJndW1lbnRzIHRoYXQgd2lsbCBiZSB1c2VkIHRvIG5v
dGljZSB3aGVuIHdlCiMgZW5kZWQgb3B0aW9ucy9hcmd1bWVudHMgcGFyc2lu
Zy4KIyBVc2UgInNldCBkdW1teSAuLi47IHNoaWZ0IiByYXRoZXIgdGhhbiAn
c2V0IC0gLi4uIiBiZWNhdXNlIG9uCiMgU29sYXJpcyBzZXQgLSB0dXJucyBv
ZmYgc2V0IC14IChidXQga2VlcHMgc2V0IC1lKS4KIyBVc2UgJHsxKyIkQCJ9
IHJhdGhlciB0aGFuICIkQCIgYmVjYXVzZSBEaWdpdGFsIFVuaXggYW5kIFVs
dHJpeCA0LjMKIyBzdGlsbCBleHBhbmQgIiRAIiB0byBhIHNpbmdsZSBhcmd1
bWVudCAodGhlIGVtcHR5IHN0cmluZykgcmF0aGVyCiMgdGhhbiBub3RoaW5n
IGF0IGFsbC4KYXJnX3NlcD0iJCQtLSQkIgpzZXQgZHVtbXkgJHsxKyIkQCJ9
ICIkYXJnX3NlcCI7IHNoaWZ0CgojIAwKIyBQYXJzZSBjb21tYW5kIGxpbmUg
YXJndW1lbnRzLgp3aGlsZSB0ZXN0IHgiJDEiICE9IHgiJGFyZ19zZXAiOyBk
bwoKICAjIEhhbmRsZSAtLW9wdGlvbj12YWx1ZSBieSBzcGxpdHRpbmcgYXBh
cnQgYW5kIHB1dHRpbmcgYmFjayBvbiBhcmd2LgogIGNhc2UgIiQxIiBpbgog
ICAgLS0qPSopCiAgICAgIG9wdD1gZWNobyAiJDEiIHwgc2VkIC1lICdzLz0u
Ki8vJ2AKICAgICAgdmFsPWBlY2hvICIkMSIgfCBzZWQgLWUgJ3MvW149XSo9
Ly8nYAogICAgICBzaGlmdAogICAgICBzZXQgZHVtbXkgIiRvcHQiICIkdmFs
IiAkezErIiRAIn07IHNoaWZ0CiAgICAgIDs7CiAgZXNhYwoKICAjIFRoaXMg
cmVjb2duaXplcyAtLXF1YXJrIGFzIC0tcXVpZXQuICBTbyB3aGF0LgogIGNh
c2UgIiQxIiBpbgogICAgLUAgKSBlc2NhcGU9QDs7CiAgICAjIFNpbGVudGx5
IGFuZCB3aXRob3V0IGRvY3VtZW50YXRpb24gYWNjZXB0IC1iIGFuZCAtLWJb
YXRjaF0gYXMgc3lub255bXMuCiAgICAtYiB8IC0tYmF0Y2gpIGJhdGNoPXRy
dWU7OwogICAgICAgICAtLWJ1aWxkKSAgICAgIHNoaWZ0OyBidWlsZF9tb2Rl
PSQxOzsKICAgICAgICAgLS1idWlsZC1kaXIpICBzaGlmdDsgYnVpbGRfZGly
PSQxOyBidWlsZF9tb2RlPXRpZHk7OwogICAgLWMgfCAtLWNsZWFuKSBidWls
ZF9tb2RlPWNsZWFuOzsKICAgIC1EIHwgLS1kZWJ1ZykgZGVidWc9dHJ1ZTs7
CiAgICAtZSB8IC1FIHwgLS1leHBhbmQpIGV4cGFuZD10OzsKICAgIC1oIHwg
LS1oZWxwKSBlY2hvICIkdXNhZ2UiOyBleGl0IDA7OwogICAgICAgICAtLWh0
bWwpIG91dF9sYW5nPWh0bWw7OwogICAgLUkgfCAtLUkqKQogICAgICBzaGlm
dAogICAgICAjIFVzZSBhYnNvbHV0ZSBkaXIgbmFtZXMgaW4gdGhlIGluY2x1
ZGVzLgogICAgICB2YWw9YGFic29sdXRlICIkMSJgCiAgICAgIGxpc3RfYXBw
ZW5kIGluY2x1ZGVzICIkdmFsIgogICAgICA7OwogICAgLWwgfCAtLWxhbmcg
fCAtLWxhbmd1YWdlKSBzaGlmdDsgc2V0X2xhbmd1YWdlPSQxOzsKICAgIC0t
bW9zdGx5LWNsZWFuKSBhY3Rpb249bW9zdGx5LWNsZWFuOzsKICAgIC0tbm8t
bGluZS1lcnJvcikgbm9fbGluZV9lcnJvcj10cnVlOzsKICAgIC1vIHwgLS1v
dXQgIHwgLS1vdXRwdXQpCiAgICAgIHNoaWZ0CiAgICAgICMgTWFrZSBpdCBh
YnNvbHV0ZSwganVzdCBpbiBjYXNlIHdlIGFsc28gaGF2ZSAtLWNsZWFuLCBv
ciB3aGF0ZXZlci4KICAgICAgb25hbWU9YGFic29sdXRlICIkMSJgOzsKICAg
IC1wIHwgLS1wZGYpIG91dF9sYW5nPXBkZjs7CiAgICAtcSB8IC1zIHwgLS1x
dWlldCB8IC0tc2lsZW50KSBxdWlldD10cnVlOyBiYXRjaD10cnVlOzsKICAg
IC1yIHwgLS1yZWNvZGUpIHJlY29kZT10cnVlOzsKICAgIC0tcmVjb2RlLWZy
b20pIHNoaWZ0OyByZWNvZGU9dHJ1ZTsgcmVjb2RlX2Zyb209IiQxIjs7CiAg
ICAtdCB8IC0tdGV4aW5mbyB8IC0tY29tbWFuZCApIHNoaWZ0OyB0ZXh0cmE9
IiR0ZXh0cmFcXAoiYGVjaG8gIiQxIiB8IHNlZCAncy9cXFxcL1xcXFxcXFxc
L2cnYDs7CiAgICAtLXRyYW5zbGF0ZS1maWxlICkgc2hpZnQ7IHRyYW5zbGF0
ZV9maWxlPSIkMSI7OyAgICAKICAgIC0tdGlkeSkgYnVpbGRfbW9kZT10aWR5
OzsKICAgIC12IHwgLS12ZXJzKikgZWNobyAiJHZlcnNpb24iOyBleGl0IDA7
OwogICAgLVYgfCAtLXZlcmIqKSB2ZXJiPXRydWU7OwogICAgLS0pICMgV2hh
dCByZW1haW5zIGFyZSBub3Qgb3B0aW9ucy4KICAgICAgc2hpZnQKICAgICAg
d2hpbGUgdGVzdCB4IiQxIiAhPSB4IiRhcmdfc2VwIjsgZG8KICAgICAgICBz
ZXQgZHVtbXkgJHsxKyIkQCJ9ICIkMSI7IHNoaWZ0CiAgICAgICAgc2hpZnQK
ICAgICAgZG9uZQogICAgICBicmVhazs7CiAgICAtKikKICAgICAgZmF0YWwg
MSAiVW5rbm93biBvciBhbWJpZ3VvdXMgb3B0aW9uIFxgJDEnLiIgXAogICAg
ICAgICAgICAgICJUcnkgXGAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9u
LiIKICAgICAgOzsKICAgICopIHNldCBkdW1teSAkezErIiRAIn0gIiQxIjsg
c2hpZnQ7OwogICBlc2FjCiAgIHNoaWZ0CmRvbmUKIyBQb3AgdGhlIHRva2Vu
CnNoaWZ0CgojICR0aWR5OiAgY29tcGlsZSBpbiBhIHQyZCBkaXJlY3Rvcnku
CiMgJGNsZWFuOiByZW1vdmUgYWxsIHRoZSBhdXggZmlsZXMuCmNhc2UgJGJ1
aWxkX21vZGUgaW4KICBsb2NhbCkgY2xlYW49ZmFsc2U7IHRpZHk9ZmFsc2U7
OwogIHRpZHkpICBjbGVhbj1mYWxzZTsgdGlkeT10cnVlOzsKICBjbGVhbikg
Y2xlYW49dHJ1ZTsgIHRpZHk9dHJ1ZTs7CiAgICAgICopIGZhdGFsIDEgImlu
dmFsaWQgYnVpbGQgbW9kZTogJGJ1aWxkX21vZGUiOzsKZXNhYwoKIyBJbnRl
cnByZXQgcmVtYWluaW5nIGNvbW1hbmQgbGluZSBhcmdzIGFzIGZpbGVuYW1l
cy4KY2FzZSAkIyBpbgogMCkKICBmYXRhbCAyICJNaXNzaW5nIGZpbGUgYXJn
dW1lbnRzLiIgIlRyeSBcYC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24u
IgogIDs7CiAxKSA7OwogKikKICBpZiB0ZXN0IC1uICIkb25hbWUiOyB0aGVu
CiAgICBmYXRhbCAyICJDYW4ndCB1c2Ugb3B0aW9uIFxgLS1vdXRwdXQnIHdp
dGggbW9yZSB0aGFuIG9uZSBhcmd1bWVudC4iCiAgZmkKICA7Owplc2FjCgoK
IyBXZSBjYW4ndCBkbyBtdWNoIHdpdGhvdXQgdGV4LgojCmlmIGZpbmRwcm9n
ICR7VEVYOi10ZXh9OyB0aGVuIDo7IGVsc2UgY2F0IDw8RU9NCllvdSBkb24n
dCBoYXZlIGEgd29ya2luZyBUZVggYmluYXJ5ICgke1RFWDotdGV4fSkgaW5z
dGFsbGVkIGFueXdoZXJlIGluCnlvdXIgUEFUSCwgYW5kIHRleGkyZHZpIGNh
bm5vdCBwcm9jZWVkIHdpdGhvdXQgb25lLiAgSWYgeW91IHdhbnQgdG8gdXNl
CnRoaXMgc2NyaXB0LCB5b3UnbGwgbmVlZCB0byBpbnN0YWxsIFRlWCAoaWYg
eW91IGRvbid0IGhhdmUgaXQpIG9yIGNoYW5nZQp5b3VyIFBBVEggb3IgVEVY
IGVudmlyb25tZW50IHZhcmlhYmxlIChpZiB5b3UgZG8pLiAgU2VlIHRoZSAt
LWhlbHAKb3V0cHV0IGZvciBtb3JlIGRldGFpbHMuCgpGb3IgaW5mb3JtYXRp
b24gYWJvdXQgb2J0YWluaW5nIFRlWCwgcGxlYXNlIHNlZSBodHRwOi8vd3d3
LnR1Zy5vcmcuICBJZgp5b3UgaGFwcGVuIHRvIGJlIHVzaW5nIERlYmlhbiwg
eW91IGNhbiBnZXQgaXQgd2l0aCB0aGlzIGNvbW1hbmQ6CiAgYXB0LWdldCBp
bnN0YWxsIHRldGV4LWJpbgpFT00KICBleGl0IDEKZmkKCgojIFdlIHdhbnQg
dG8gdXNlIGV0ZXggKG9yIHBkZnRleCkgaWYgdGhleSBhcmUgYXZhaWxhYmxl
LCBhbmQgdGhlIHVzZXIKIyBkaWRuJ3QgZXhwbGljaXRseSBzcGVjaWZ5LiAg
V2UgZG9uJ3QgY2hlY2sgZm9yIGVsYXRleCBhbmQgcGRmZWxhdGV4CiMgYmVj
YXVzZSAoYXMgb2YgMjAwMyksIHRoZSBMYVRlWCB0ZWFtIGhhcyBhc2tlZCB0
aGF0IG5ldyBkaXN0cmlidXRpb25zCiMgdXNlIGV0ZXggYnkgZGVmYXVsdCBh
bnl3YXkuCiMKIyBFbmQgdXAgd2l0aCB0aGUgVEVYIGFuZCBQREZURVggdmFy
aWFibGVzIHNldCB0byB3aGF0IHdlIGFyZSBnb2luZyB0byB1c2UuCmlmIHRl
c3QgLXogIiRURVgiOyB0aGVuCiAgaWYgZmluZHByb2cgZXRleDsgdGhlbiBU
RVg9ZXRleDsgZWxzZSBURVg9dGV4OyBmaQpmaQojCmlmIHRlc3QgLXogIiRQ
REZURVgiOyB0aGVuCiAgaWYgZmluZHByb2cgcGRmZXRleDsgdGhlbiBQREZU
RVg9cGRmZXRleDsgZWxzZSBQREZURVg9cGRmdGV4OyBmaQpmaQoKCiMgRmls
ZSBkZXNjcmlwdG9yIHVzYWdlOgojIDAgc3RhbmRhcmQgaW5wdXQKIyAxIHN0
YW5kYXJkIG91dHB1dCAoLS12ZXJib3NlIG1lc3NhZ2VzKQojIDIgc3RhbmRh
cmQgZXJyb3IKIyAzIHNvbWUgc3lzdGVtcyBtYXkgb3BlbiBpdCB0byAvZGV2
L3R0eQojIDQgdXNlZCBvbiB0aGUgS3Vib3RhIFRpdGFuCiMgNSB0b29scyBv
dXRwdXQgKHR1cm5lZCBvZmYgYnkgLS1xdWlldCkKIyA2IHRyYWNpbmcvZGVi
dWdnaW5nIChzZXQgLXggb3V0cHV0LCBldGMuKQoKCiMgTWFpbiB0b29scycg
b3V0cHV0IChUZVgsIGV0Yy4pIHRoYXQgVGVYIHVzZXJzIGFyZSB1c2VkIHRv
IHNlZWluZy4KIwojIElmIHF1aWV0LCBkaXNjYXJkLCBlbHNlIHJlZGlyZWN0
IHRvIHRoZSBtZXNzYWdlIGZsb3cuCmlmICRxdWlldDsgdGhlbgogIGV4ZWMg
NT4vZGV2L251bGwKZWxzZQogIGV4ZWMgNT4mMQpmaQoKCiMgRW5hYmxlIHRy
YWNpbmcsIGFuZCBhdXhpbGlhcnkgdG9vbHMgb3V0cHV0LgojCiMgU2hvdWxk
IGJlIHVzZWQgd2hlcmUgeW91J2QgdHlwaWNhbGx5IHVzZSAvZGV2L251bGwg
dG8gdGhyb3cgb3V0cHV0CiMgYXdheS4gIEJ1dCBzb21ldGltZXMgaXQgaXMg
Y29udmVuaWVudCB0byBzZWUgdGhhdCBvdXRwdXQgKGUuZy4sIGZyb20KIyBh
IGdyZXApIHRvIGFpZCBkZWJ1Z2dpbmcuICBFc3BlY2lhbGx5IGRlYnVnZ2lu
ZyBhdCBkaXN0YW5jZSwgdmlhIHRoZQojIHVzZXIuCmlmICRkZWJ1ZzsgdGhl
bgogIGV4ZWMgNj4mMQogIHNldCAteAplbHNlCiAgZXhlYyA2Pi9kZXYvbnVs
bApmaQoKIyAMCgojIGlucHV0X2ZpbGVfbmFtZV9kZWNvZGUKIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiMgRGVjb2RlIENPTU1BTkRfTElORV9GSUxFTkFN
RSwgYW5kIGNvbXB1dGU6CiMgLSBDT01NQU5EX0xJTkVfRklMRU5BTUUgY2xl
YW4gb2YgVGVYIGNvbW1hbmRzCiMgLSBJTl9ESVIKIyAgIFRoZSBkaXJlY3Rv
cnkgdG8gdGhlIGlucHV0IGZpbGUsIHBvc3NpYmx5IGFic29sdXRlIGlmIG5l
ZWRlZC4KIyAtIElOX0RJUl9BQlMKIyAgIFRoZSBhYnNvbHV0ZSBkaXJlY3Rv
cnkgb2YgdGhlIGlucHV0IGZpbGUuCiMgLSBJTl9CQVNFCiMgICBUaGUgaW5w
dXQgZmlsZSBiYXNlIG5hbWUgKG5vIGRpcmVjdG9yeSBwYXJ0KS4KIyAtIElO
X05PRVhUCiMgICBUaGUgaW5wdXQgZmlsZSBuYW1lIHdpdGhvdXQgZXh0ZW5z
aW9ucyAobm9yIGRpcmVjdG9yeSBwYXJ0KS4KIyAtIElOX0lOUFVUCiMgICBE
ZWZhdWx0cyB0byBDT01NQU5EX0xJTkVfRklMRU5BTUUsIGJ1dCBtaWdodCBj
aGFuZ2UgaWYgdGhlCiMgICBpbnB1dCBpcyBwcmVwcm9jZXNzZWQgKHJlY29k
ZSBldGMuKS4gIFdpdGggZGlyZWN0b3J5LCBwb3NzaWJseSBhYnNvbHV0ZS4K
aW5wdXRfZmlsZV9uYW1lX2RlY29kZSAoKQp7CiAgIyBTZWUgaWYgd2UgYXJl
IHJ1biBmcm9tIHdpdGhpbiBBVUMtVGV4LCBpbiB3aGljaCBjYXNlIHdlIGFy
ZQogICMgcGFzc2VkIGBcaW5wdXR7Rk9PLnRleH0nIG9yIGV2ZW4gYFxub25z
dG9wbW9kZVxpbnB1dHtGT08udGV4fScuCiAgY2FzZSAkY29tbWFuZF9saW5l
X2ZpbGVuYW1lIGluCiAgICAqXFxub25zdG9wbW9kZSopCiAgICAgIGJhdGNo
PXRydWU7OwogIGVzYWMKICBjYXNlICRjb21tYW5kX2xpbmVfZmlsZW5hbWUg
aW4KICAgICpcXGlucHV0eyp9KikKICAgICAgIyBMZXQgQVVDLVRlWCBlcnJv
ciBwYXJzZXIgZGVhbCB3aXRoIGxpbmUgbnVtYmVycy4KICAgICAgbGluZV9l
cnJvcj1mYWxzZQogICAgICBjb21tYW5kX2xpbmVfZmlsZW5hbWU9YFwKICAg
ICAgICBleHByIFgiJGNvbW1hbmRfbGluZV9maWxlbmFtZSIgOiBYJy4qaW5w
dXR7XChbXn1dKlwpfSdgCiAgICAgIDs7CiAgZXNhYwoKICAjIElmIHRoZSBD
T01NQU5EX0xJTkVfRklMRU5BTUUgaXMgbm90IGFic29sdXRlIChlLmcuLCAt
LWRlYnVnLnRleCksCiAgIyBwcmVwZW5kIGAuLycgaW4gb3JkZXIgdG8gYXZv
aWQgdGhhdCB0aGUgdG9vbHMgdGFrZSBpdCBhcyBhbiBvcHRpb24uCiAgZWNo
byAiJGNvbW1hbmRfbGluZV9maWxlbmFtZSIgfCAkRUdSRVAgJ14oL3xbQS16
XTovKScgPiY2IFwKICB8fCBjb21tYW5kX2xpbmVfZmlsZW5hbWU9Ii4vJGNv
bW1hbmRfbGluZV9maWxlbmFtZSIKCiAgIyBTZWUgaWYgdGhlIGZpbGUgZXhp
c3RzLiAgSWYgaXQgZG9lc24ndCB3ZSdyZSBpbiB0cm91YmxlIHNpbmNlLCBl
dmVuCiAgIyB0aG91Z2ggdGhlIHVzZXIgbWF5IGJlIGFibGUgdG8gcmVlbnRl
ciBhIHZhbGlkIGZpbGVuYW1lIGF0IHRoZSB0ZXgKICAjIHByb21wdCAoYXNz
dW1pbmcgdGhleSdyZSBhdHRlbmRpbmcgdGhlIHRlcm1pbmFsKSwgdGhpcyBz
Y3JpcHQgd29uJ3QKICAjIGJlIGFibGUgdG8gZmluZCB0aGUgcmlnaHQgeHJl
ZiBmaWxlcyBhbmQgc28gZm9ydGguCiAgdGVzdCAgLXIgIiRjb21tYW5kX2xp
bmVfZmlsZW5hbWUiIHx8CiAgICBmYXRhbCAxICJjYW5ub3QgcmVhZCAkY29t
bWFuZF9saW5lX2ZpbGVuYW1lLCBza2lwcGluZy4iCgogICMgR2V0IHRoZSBu
YW1lIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KICBpbl9kaXI9YGZ1bmNf
ZGlybmFtZSAiJGNvbW1hbmRfbGluZV9maWxlbmFtZSJgCiAgaW5fZGlyX2Fi
cz1gYWJzb2x1dGUgIiRpbl9kaXIiYAogICMgSW4gYSBjbGVhbiBidWlsZCwg
d2UgYGNkJywgc28gZ2V0IGFuIGFic29sdXRlIGZpbGUgbmFtZS4KICBpZiAk
dGlkeTsgdGhlbgogICAgaW5fZGlyPSRpbl9kaXJfYWJzCiAgZmkKCiAgIyBT
dHJpcCBkaXJlY3RvcnkgcGFydCBidXQgbGVhdmUgZXh0ZW5zaW9uLgogIGlu
X2Jhc2U9YGJhc2VuYW1lICIkY29tbWFuZF9saW5lX2ZpbGVuYW1lImAKICAj
IFN0cmlwIGV4dGVuc2lvbi4KICBpbl9ub2V4dD1gZWNobyAiJGluX2Jhc2Ui
IHwgc2VkICdzL1wuW14uXSokLy8nYAoKICAjIFRoZSBub3JtYWxpemVkIGZp
bGUgbmFtZSB0byBjb21waWxlLiAgTXVzdCBhbHdheXMgcG9pbnQgdG8gdGhl
CiAgIyBmaWxlIHRvIGFjdHVhbGx5IGNvbXBpbGUgKGluIGNhc2Ugb2YgcmVj
b2RpbmcsIG1hY3JvLWV4cGFuc2lvbiBldGMuKS4KICBpbl9pbnB1dD0kaW5f
ZGlyLyRpbl9iYXNlCgoKICAjIENvbXB1dGUgdGhlIG91dHB1dCBmaWxlIG5h
bWUuCiAgaWYgdGVzdCB4IiRvbmFtZSIgIT0geDsgdGhlbgogICAgb3V0X25h
bWU9JG9uYW1lCiAgZWxzZQogICAgb3V0X25hbWU9JGluX25vZXh0LiRvdXRf
bGFuZwogIGZpCiAgb3V0X2Rpcj1gZnVuY19kaXJuYW1lICIkb3V0X25hbWUi
YAogIG91dF9kaXJfYWJzPWBhYnNvbHV0ZSAiJG91dF9kaXIiYAogIG91dF9i
YXNlPWBiYXNlbmFtZSAiJG91dF9uYW1lImAKICBvdXRfbm9leHQ9YGVjaG8g
IiRvdXRfYmFzZSIgfCBzZWQgJ3MvXC5bXi5dKiQvLydgCn0KCgojIyAtLS0t
LS0tLS0tLS0tLSAjIwojIyBUZVhpZnkgZmlsZXMuICAjIwojIyAtLS0tLS0t
LS0tLS0tLSAjIwoKZm9yIGNvbW1hbmRfbGluZV9maWxlbmFtZSBpbiAkezEr
IiRAIn07IGRvCiAgdmVyYm9zZSAiUHJvY2Vzc2luZyAkY29tbWFuZF9saW5l
X2ZpbGVuYW1lIC4uLiIKCiAgaW5wdXRfZmlsZV9uYW1lX2RlY29kZQoKICAj
IGB0ZXhpbmZvJyBvciBgbGF0ZXgnPwogIGxhbmd1YWdlPWBjb21wdXRlX2xh
bmd1YWdlICRjb21tYW5kX2xpbmVfZmlsZW5hbWVgCgogICMgQW4gYXV4aWxp
YXJ5IGRpcmVjdG9yeSB1c2VkIGZvciBhbGwgdGhlIGF1eGlsaWFyeSB0YXNr
cyBpbnZvbHZlZAogICMgaW4gY29tcGlsaW5nIHRoaXMgZG9jdW1lbnQuCiAg
Y2FzZSAkYnVpbGRfZGlyIGluCiAgICAgICcnIHwgLiApIHQyZGRpcj0kb3V0
X25vZXh0LnQyZCA7OwogICAgICAqKSAjIEF2b2lkIGNvbGxpc2lvbnMgYmV0
d2VlbiBtdWx0aXBsZSBvY2N1cnJlbmNlcyBvZiB0aGUgc2FtZQoJICMgZmls
ZS4gIFRoZSBzZWQgZXhwcmVzc2lvbiBpcyBmcmFnaWxlIGlmIHRoZSBjd2Qg
aGFzCgkgIyBhY3RpdmUgY2hhcmFjdGVycy4KCSB0MmRkaXI9JGJ1aWxkX2Rp
ci9gZWNobyAiJG91dF9kaXJfYWJzLyRvdXRfbm9leHQudDJkIiB8CiAgICAg
ICAgICAgICBzZWQgInMsXiRvcmlnX3B3ZC8sLCIgfAogICAgICAgICAgICAg
c2VkICdzLC8sISxnJ2AKICBlc2FjCiAgIyBSZW1vdmUgaXQgYXQgZXhpdCBp
ZiBjbGVhbiBtb2RlLgogIHRyYXAgImNsZWFudXAiIDAgMSAyIDE1CgogIGVu
c3VyZV9kaXIgIiRidWlsZF9kaXIiICIkdDJkZGlyIgoKICAjIFdlIHdpbGwg
Y2hhbmdlIGRpcmVjdG9yeSwgYmV0dGVyIHdvcmsgd2l0aCBhbiBhYnNvbHV0
ZSBwYXRoLi4uCiAgdDJkZGlyPWBhYnNvbHV0ZSAiJHQyZGRpciJgCiAgIyBT
b21ldGltZXMgdGhlcmUgYXJlIGluY29tcGF0aWJpbGl0aWVzIGJldHdlZW4g
YXV4aWxpYXJ5IGZpbGVzIGZvcgogICMgRFZJIGFuZCBQREYuICBUaGUgY29u
dGVudHMgY2FuIGFsc28gY2hhbmdlIHdoZXRoZXIgd2Ugd29yayBvbiBQREYK
ICAjIGFuZC9vciBEVkkuICBTbyBrZWVwIHNlcGFyYXRlIHNwYWNlcyBmb3Ig
ZWFjaC4KICB3b3JrZGlyPSR0MmRkaXIvJG91dF9sYW5nCiAgZW5zdXJlX2Rp
ciAiJHdvcmtkaXIiCgogICMgX2J1aWxkLiAgSW4gYSB0aWR5IGJ1aWxkLCB3
aGVyZSB0aGUgYXV4aWxpYXJ5IGZpbGVzIGFyZSBvdXRwdXQuCiAgaWYgJHRp
ZHk7IHRoZW4KICAgIHdvcmtfYnVpbGQ9JHdvcmtkaXIvYnVpbGQKICBlbHNl
CiAgICB3b3JrX2J1aWxkPS4KICBmaQoKICAjIF9iYWsuICBDb3BpZXMgb2Yg
dGhlIHByZXZpb3VzIGF1eGlsaWFyeSBmaWxlcyAoYW5vdGhlciByb3VuZCBp
cwogICMgcnVuIGlmIHRoZXkgZGlmZmVyIGZyb20gdGhlIG5ldyBvbmVzKS4K
ICB3b3JrX2Jhaz0kd29ya2Rpci9iYWsKCiAgIyBNYWtlIHRob3NlIGRpcmVj
dG9yaWVzLgogIGVuc3VyZV9kaXIgIiR3b3JrX2J1aWxkIiAiJHdvcmtfYmFr
IgoKICBjYXNlICRhY3Rpb24gaW4KICAgIGNvbXBpbGUpCiAgICAgICMgQ29t
cGlsZSB0aGUgZG9jdW1lbnQuCiAgICAgIGNvbXBpbGUKICAgICAgY2xlYW51
cAogICAgICA7OwoKICAgIG1vc3RseS1jbGVhbikKICAgICAgbW9zdGx5X2Ns
ZWFuCiAgICAgIDs7CiAgZXNhYwpkb25lCgp2ZXJib3NlICJkb25lLiIKZXhp
dCAwICMgZXhpdCBzdWNjZXNzZnVsbHksIG5vdCBob3dldmVyIHdlIGVuZGVk
IHRoZSBsb29wLgo=


--F/67ZsaegY
Content-Type: text/plain; charset=us-ascii

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/
--F/67ZsaegY--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019