From mboxrd@z Thu Jan 1 00:00:00 1970
Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail
From: Philipp Stephani
Newsgroups: gmane.emacs.bugs
Subject: bug#45198: 28.0.50; Sandbox mode
Date: Sat, 19 Dec 2020 23:22:08 +0100
Message-ID:
References:
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="00000000000080b8ad05b6d8a897"
Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214";
logging-data="24671"; mail-complaints-to="usenet@ciao.gmane.io"
Cc: Bastien , 45198@debbugs.gnu.org,
=?UTF-8?Q?Jo=C3=A3o_?= =?UTF-8?Q?T=C3=A1vora?=
To: Stefan Monnier
Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Dec 19 23:23:17 2020
Return-path:
Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org
Original-Received: from lists.gnu.org ([209.51.188.17])
by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.92)
(envelope-from )
id 1kqkdA-0006Fm-Qn
for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 19 Dec 2020 23:23:17 +0100
Original-Received: from localhost ([::1]:38222 helo=lists1p.gnu.org)
by lists.gnu.org with esmtp (Exim 4.90_1)
(envelope-from )
id 1kqkd9-00024N-Rn
for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 19 Dec 2020 17:23:15 -0500
Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:43670)
by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from )
id 1kqkcw-0001z7-OW
for bug-gnu-emacs@gnu.org; Sat, 19 Dec 2020 17:23:02 -0500
Original-Received: from debbugs.gnu.org ([209.51.188.43]:60034)
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
(Exim 4.90_1) (envelope-from )
id 1kqkcw-00088f-H9
for bug-gnu-emacs@gnu.org; Sat, 19 Dec 2020 17:23:02 -0500
Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2)
(envelope-from ) id 1kqkcw-0000g5-Bn
for bug-gnu-emacs@gnu.org; Sat, 19 Dec 2020 17:23:02 -0500
X-Loop: help-debbugs@gnu.org
Resent-From: Philipp Stephani
Original-Sender: "Debbugs-submit"
Resent-CC: bug-gnu-emacs@gnu.org
Resent-Date: Sat, 19 Dec 2020 22:23:02 +0000
Resent-Message-ID:
Resent-Sender: help-debbugs@gnu.org
X-GNU-PR-Message: followup 45198
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
Original-Received: via spool by 45198-submit@debbugs.gnu.org id=B45198.16084165502554
(code B ref 45198); Sat, 19 Dec 2020 22:23:02 +0000
Original-Received: (at 45198) by debbugs.gnu.org; 19 Dec 2020 22:22:30 +0000
Original-Received: from localhost ([127.0.0.1]:43347 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from )
id 1kqkcP-0000f7-Tp
for submit@debbugs.gnu.org; Sat, 19 Dec 2020 17:22:30 -0500
Original-Received: from mail-oi1-f178.google.com ([209.85.167.178]:45776)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from ) id 1kqkcL-0000ep-Fu
for 45198@debbugs.gnu.org; Sat, 19 Dec 2020 17:22:28 -0500
Original-Received: by mail-oi1-f178.google.com with SMTP id f132so7149805oib.12
for <45198@debbugs.gnu.org>; Sat, 19 Dec 2020 14:22:25 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
h=mime-version:references:in-reply-to:from:date:message-id:subject:to
:cc; bh=7FK+JaXW1OyrONduSYQ5jzTOnCY5M6FYqcUMVtM96tY=;
b=YFbGtd5yQZ09tm4pTAqh29QRZTHOtGWM8mInlKbivnBJzoIVLzo1a6V5fQgUj5Ndva
sZZHUN3vyfTbEXZ+odD7//c1mewYz7MV478hvPZ095nJyesck4Oo+uC42dH5lEQKBmIX
kH4KrAk0FhXK+ZjAKHzmbqsNYfsq3oHIzcnPTvI2ivx2GiFtBhlOigEcsyeYbWqT90mq
UZRAG5q+lPTaTXApzuS9Sly3+b+CHFa9lN50EJa79tJhRlDT/cMwJxHNdh5JVmEQHrGZ
EWZONeysgcAIzFdnBVVfwCr0bNom0yoAcImgrL5+Qfg+Of8uXQjCT5aXUz1LWnhY1esI
b4Fg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:mime-version:references:in-reply-to:from:date
:message-id:subject:to:cc;
bh=7FK+JaXW1OyrONduSYQ5jzTOnCY5M6FYqcUMVtM96tY=;
b=gYQsPHgn4P/P3/GYxSqOJr5qYwoJMrn62zl+PYDRZMh52Eq0dz0SUsvjNTusafPA6l
eMeW6SULtCQ40tXlyzdpipCG4Rh+tUMiY8X0QrcH1b/iEvheRlHzKgQdtIw64vfawSHA
A2m0f9GLNvmY/7+Jps5F/1BkkXEmojYC+d4polZ5QtyUvVcxskx6Y93Dr7YtBDaXgy+b
eX6MJwAWjny2sDKzEtLSXEyi49nFu0EJvAa882jOYgmJcR9O3snCZjtuolxeLX5w+zot
juf/SKnIfoUuOQVOadjJ4sxI6daTHX9VTaVcVNho6d/7Z6SeI65K2NjYCZE08Mib0HCk
9Zvw==
X-Gm-Message-State: AOAM533dYYPa4MOdXa03nEs+T0wL2+afN803Q9TK53mUGbl4F/r2XwB4
i0dK6nzxQQQVEQK/FkQ/AKpG40PDXAHyUaTy9Bk=
X-Google-Smtp-Source: ABdhPJyKSjy2gd7riw9JqRHetIuWcnhXJSHEpufMQ0fte8LA4gNAgiXcgBzDJzhFUd8qakHC1Q3hvAttYajklpeLQp0=
X-Received: by 2002:aca:3a02:: with SMTP id h2mr6734079oia.65.1608416539743;
Sat, 19 Dec 2020 14:22:19 -0800 (PST)
In-Reply-To:
X-BeenThere: debbugs-submit@debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
X-BeenThere: bug-gnu-emacs@gnu.org
List-Id: "Bug reports for GNU Emacs,
the Swiss army knife of text editors"
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org
Original-Sender: "bug-gnu-emacs"
Xref: news.gmane.io gmane.emacs.bugs:196434
Archived-At:
--00000000000080b8ad05b6d8a897
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Am Mo., 14. Dez. 2020 um 12:05 Uhr schrieb Philipp Stephani
:
> > >> - This will need someone else doing the implementation.
> > > Looks like we already have a volunteer for macOS.
> > > For Linux, this shouldn't be that difficult either. The sandbox needs
> > > to install a mount namespace that only allows read access to Emacs's
> > > installation directory plus any input file and write access to known
> > > output files, and enable syscall filters that forbid everything excep=
t
> > > a list of known-safe syscalls (especially exec). I can take a stab at
> > > that, but I can't promise anything ;-)
> >
> > Looking forward to it.
> >
>
> I've looked into this, and what I'd suggest for now is:
> [=E2=80=A6]
> 2. Generate appropriate seccomp filters using libseccomp or similar.
Here's a patch for this step.
--00000000000080b8ad05b6d8a897
Content-Type: text/x-patch; charset="US-ASCII";
name="0002-Add-a-helper-binary-to-create-a-basic-Secure-Computi.patch"
Content-Disposition: attachment;
filename="0002-Add-a-helper-binary-to-create-a-basic-Secure-Computi.patch"
Content-Transfer-Encoding: base64
Content-ID:
X-Attachment-Id: f_kiw9o4ra0
RnJvbSBmNWQyMThlZjM1NGVjMjFkODU2NjI3MTU3MDk0OGQ3YzZiNzc2NjQ5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwIFN0ZXBoYW5pIDxwaHN0QGdvb2dsZS5jb20+CkRh
dGU6IFRodSwgMTcgRGVjIDIwMjAgMTE6MjA6NTUgKzAxMDAKU3ViamVjdDogW1BBVENIIDIvMl0g
QWRkIGEgaGVscGVyIGJpbmFyeSB0byBjcmVhdGUgYSBiYXNpYyBTZWN1cmUgQ29tcHV0aW5nCiBm
aWx0ZXIuCgpUaGUgYmluYXJ5IHVzZXMgdGhlICdzZWNjb21wJyBoZWxwZXIgbGlicmFyeS4gIFRo
ZSBsaWJyYXJ5IGlzbid0Cm5lZWRlZCB0byBsb2FkIHRoZSBnZW5lcmF0ZWQgU2VjdXJlIENvbXB1
dGluZyBmaWx0ZXIuCgoqIGNvbmZpZ3VyZS5hYzogQ2hlY2sgZm9yICdzZWNjb21wJyBoZWFkZXIg
YW5kIGxpYnJhcnkuCgoqIGxpYi1zcmMvc2VjY29tcC1maWx0ZXIuYzogTmV3IGhlbHBlciBiaW5h
cnkgdG8gZ2VuZXJhdGUgYSBnZW5lcmljClNlY3VyZSBDb21wdXRpbmcgZmlsdGVyIGZvciBHTlUv
TGludXguCgoqIGxpYi1zcmMvTWFrZWZpbGUuaW4gKERPTlRfSU5TVEFMTCk6IEFkZCAnc2VjY29t
cC1maWx0ZXInIGhlbHBlcgpiaW5hcnkgaWYgcG9zc2libGUuCihhbGwpOiBBZGQgU2VjdXJlIENv
bXB1dGluZyBmaWx0ZXIgZmlsZSBpZiBwb3NzaWJsZS4KKHNlY2NvbXAtZmlsdGVyJChFWEVFWFQp
KTogQ29tcGlsZSBoZWxwZXIgYmluYXJ5Lgooc2VjY29tcC1maWx0ZXIuYnBmIHNlY2NvbXAtZmls
dGVyLnBmYyk6IEdlbmVyYXRlIGZpbHRlciBmaWxlcy4KCiogdGVzdC9zcmMvZW1hY3MtdGVzdHMu
ZWwgKGVtYWNzLXRlc3RzL3NlY2NvbXAvYWxsb3dzLXN0ZG91dCkKKGVtYWNzLXRlc3RzL3NlY2Nv
bXAvZm9yYmlkcy1zdWJwcm9jZXNzKTogTmV3IHVuaXQgdGVzdHMuCgoqIHRlc3QvTWFrZWZpbGUu
aW4gKHNyYy9lbWFjcy10ZXN0cy5sb2cpOiBBZGQgZGVwZW5kZW5jeSBvbiB0aGUgaGVscGVyCmJp
bmFyeS4KLS0tCiAuZ2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICA1ICsKIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUg
KwogbGliLXNyYy9NYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxOSArKwog
bGliLXNyYy9zZWNjb21wLWZpbHRlci5jICAgICAgICAgICAgICAgICAgICB8IDMwMyArKysrKysr
KysrKysrKysrKysrKwogdGVzdC9NYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMiArCiB0ZXN0L3NyYy9lbWFjcy1yZXNvdXJjZXMvc2VjY29tcC1maWx0ZXIuYnBmIHwg
ICAxICsKIHRlc3Qvc3JjL2VtYWNzLXRlc3RzLmVsICAgICAgICAgICAgICAgICAgICAgfCAgNDQg
KysrCiA3IGZpbGVzIGNoYW5nZWQsIDM3OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2
NDQgbGliLXNyYy9zZWNjb21wLWZpbHRlci5jCiBjcmVhdGUgbW9kZSAxMjAwMDAgdGVzdC9zcmMv
ZW1hY3MtcmVzb3VyY2VzL3NlY2NvbXAtZmlsdGVyLmJwZgoKZGlmZiAtLWdpdCBhLy5naXRpZ25v
cmUgYi8uZ2l0aWdub3JlCmluZGV4IGJmN2U5MzQ5ODEuLjhjOGIxZjc1ODQgMTAwNjQ0Ci0tLSBh
Ly5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMTg3LDYgKzE4Nyw3IEBAIGxpYi1zcmMv
bWFrZS1kb2NmaWxlCiBsaWItc3JjL21ha2UtZmluZ2VycHJpbnQKIGxpYi1zcmMvbW92ZW1haWwK
IGxpYi1zcmMvcHJvZmlsZQorbGliLXNyYy9zZWNjb21wLWZpbHRlcgogbGliLXNyYy90ZXN0LWRp
c3RyaWIKIGxpYi1zcmMvdXBkYXRlLWdhbWUtc2NvcmUKIG5leHRzdGVwL0NvY29hL0VtYWNzLmJh
c2UvQ29udGVudHMvSW5mby5wbGlzdApAQCAtMjk4LDMgKzI5OSw3IEBAIG50L2VtYWNzLnJjCiBu
dC9lbWFjc2NsaWVudC5yYwogc3JjL2dkYi5pbmkKIC92YXIvCisKKyMgU2VjY29tcCBmaWx0ZXIg
ZmlsZXMuCitsaWItc3JjL3NlY2NvbXAtZmlsdGVyLmJwZgorbGliLXNyYy9zZWNjb21wLWZpbHRl
ci5wZmMKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAwODdk
ZDY3ZTE4Li5jYjY5OGUzNGZlIDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmln
dXJlLmFjCkBAIC00MTg2LDYgKzQxODYsMTEgQEAgQUNfREVGVU4KIAogQUNfQ0hFQ0tfSEVBREVS
UyhbbGludXgvc2VjY29tcC5oXSkKIAorTElCU0VDQ09NUD0KK0FDX0NIRUNLX0hFQURFUihbc2Vj
Y29tcC5oXSwKKyAgW0FDX0NIRUNLX0xJQihbc2VjY29tcF0sIFtzZWNjb21wX2luaXRdLCBbTElC
U0VDQ09NUD0tbHNlY2NvbXBdKV0pCitBQ19TVUJTVChbTElCU0VDQ09NUF0pCisKIE9MRF9MSUJT
PSRMSUJTCiBMSUJTPSIkTElCX1BUSFJFQUQgJExJQl9NQVRIICRMSUJTIgogQUNfQ0hFQ0tfRlVO
Q1MoYWNjZXB0NCBmY2hkaXIgZ2V0aG9zdG5hbWUgXApkaWZmIC0tZ2l0IGEvbGliLXNyYy9NYWtl
ZmlsZS5pbiBiL2xpYi1zcmMvTWFrZWZpbGUuaW4KaW5kZXggYTJkMjdlYWIwMC4uNzJhOTgwZTRk
ZSAxMDA2NDQKLS0tIGEvbGliLXNyYy9NYWtlZmlsZS5pbgorKysgYi9saWItc3JjL01ha2VmaWxl
LmluCkBAIC0yMDksNiArMjA5LDEyIEBAIExJQl9FQUNDRVNTPQogIyMgZW1wdHkgb3IgLWx3c29j
azIgZm9yIE1pbkdXCiBMSUJfV1NPQ0szMj1ATElCX1dTT0NLMzJACiAKK0xJQlNFQ0NPTVA9QExJ
QlNFQ0NPTVBACisKK2lmbmVxICgkKExJQlNFQ0NPTVApLCkKK0RPTlRfSU5TVEFMTCArPSBzZWNj
b21wLWZpbHRlciQoRVhFRVhUKQorZW5kaWYKKwogIyMgRXh0cmEgbGlicmFyaWVzIHRvIHVzZSB3
aGVuIGxpbmtpbmcgbW92ZW1haWwuCiBMSUJTX01PVkUgPSAkKExJQlNfTUFJTCkgJChLUkI0TElC
KSAkKERFU0xJQikgJChLUkI1TElCKSAkKENSWVBUT0xJQikgXAogICAgICAgICAgICAgJChDT01f
RVJSTElCKSAkKExJQkhFU0lPRCkgJChMSUJSRVNPTFYpICQoTElCX1dTT0NLMzIpCkBAIC0yMzgs
NiArMjQ0LDEwIEBAIGNvbmZpZ19oID0KIAogYWxsOiAke0VYRV9GSUxFU30gJHtTQ1JJUFRTfQog
CitpZm5lcSAoJChMSUJTRUNDT01QKSwpCithbGw6IHNlY2NvbXAtZmlsdGVyLmJwZgorZW5kaWYK
KwogLlBIT05ZOiBhbGwgbmVlZC1ibGVzc21haWwgbWF5YmUtYmxlc3NtYWlsCiAKIExPQURMSUJF
UyA9IC4uL2xpYi9saWJnbnUuYSAkKExJQlNfU1lTVEVNKQpAQCAtNDIwLDQgKzQzMCwxMyBAQCB1
cGRhdGUtZ2FtZS1zY29yZSR7RVhFRVhUfToKIGVtYWNzY2xpZW50LnJlczogLi4vbnQvZW1hY3Nj
bGllbnQucmMgJChOVElOQykvLi4vaWNvbnMvZW1hY3MuaWNvCiAJJChBTV9WX1JDKSQoV0lORFJF
UykgLU8gY29mZiAtLWluY2x1ZGUtZGlyPSQoTlRJTkMpLy4uIC1vICRAICQ8CiAKK2lmbmVxICgk
KExJQlNFQ0NPTVApLCkKK3NlY2NvbXAtZmlsdGVyJChFWEVFWFQpOiAkKHNyY2Rpcikvc2VjY29t
cC1maWx0ZXIuYyAkKGNvbmZpZ19oKQorCSQoQU1fVl9DQ0xEKSQoQ0MpICQoQUxMX0NGTEFHUykg
JDwgJChMSUJTRUNDT01QKSAtbyAkQAorCitzZWNjb21wLWZpbHRlci5icGYgc2VjY29tcC1maWx0
ZXIucGZjOiBzZWNjb21wLWZpbHRlciQoRVhFRVhUKQorCSQoQU1fVl9HRU4pLi9zZWNjb21wLWZp
bHRlciQoRVhFRVhUKSBcCisJICBzZWNjb21wLWZpbHRlci5icGYgc2VjY29tcC1maWx0ZXIucGZj
CitlbmRpZgorCiAjIyBNYWtlZmlsZSBlbmRzIGhlcmUuCmRpZmYgLS1naXQgYS9saWItc3JjL3Nl
Y2NvbXAtZmlsdGVyLmMgYi9saWItc3JjL3NlY2NvbXAtZmlsdGVyLmMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTBmZWEwYjQyMQotLS0gL2Rldi9udWxsCisrKyBiL2xp
Yi1zcmMvc2VjY29tcC1maWx0ZXIuYwpAQCAtMCwwICsxLDMwMyBAQAorLyogR2VuZXJhdGUgYSBT
ZWN1cmUgQ29tcHV0aW5nIGZpbHRlciBkZWZpbml0aW9uIGZpbGUuCisKK0NvcHlyaWdodCAoQykg
MjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworVGhpcyBmaWxlIGlzIHBhcnQg
b2YgR05VIEVtYWNzLgorCitHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKK3Rlcm1zIG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK
K0ZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyCit2ZXJzaW9uLgorCitHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZCitXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBCitQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKK1lvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdp
dGggR05VCitFbWFjcy4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz
Lz4uICAqLworCisvKiBUaGlzIHByb2dyYW0gY3JlYXRlcyBhIHNtYWxsIFNlY3VyZSBDb21wdXRp
bmcgZmlsdGVyIHVzYWJsZSBmb3IgYSB0eXBpY2FsCittaW5pbWFsIEVtYWNzIHNhbmRib3guICBT
ZWUgdGhlIG1hbiBwYWdlIGZvciBgc2VjY29tcCcgZm9yIGRldGFpbHMgYWJvdXQgU2VjdXJlCitD
b21wdXRpbmcgZmlsdGVycy4gIFRoaXMgcHJvZ3JhbSByZXF1aXJlcyB0aGUgYGxpYnNlY2NvbXAn
IGxpYnJhcnkuICBIb3dldmVyLAordGhlIHJlc3VsdGluZyBmaWx0ZXIgZmlsZSByZXF1aXJlcyBv
bmx5IGEgTGludXgga2VybmVsIHN1cHBvcnRpbmcgdGhlIFNlY3VyZQorQ29tcHV0aW5nIGV4dGVu
c2lvbi4KKworVXNhZ2U6CisKKyAgc2VjY29tcC1maWx0ZXIgb3V0LmJwZiBvdXQucGZjCisKK1Ro
aXMgd3JpdGVzIHRoZSByYXcgYHN0cnVjdCBzb2NrX2ZpbHRlcicgYXJyYXkgdG8gb3V0LmJwZiBh
bmQgYSBodW1hbi1yZWFkYWJsZQorcmVwcmVzZW50YXRpb24gdG8gb3V0LnBmYy4gICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8bGltaXRz
Lmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2luY2x1ZGUg
PHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNp
bmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHN5
cy9wcmN0bC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+
CisjaW5jbHVkZSA8bGludXgvZnV0ZXguaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUg
PHNjaGVkLmg+CisjaW5jbHVkZSA8c2VjY29tcC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisj
aW5jbHVkZSAidmVyaWZ5LmgiCisKK3N0YXRpYyBBVFRSSUJVVEVfRk9STUFUX1BSSU5URiAoMiwg
MykgX05vcmV0dXJuIHZvaWQKK2ZhaWwgKGludCBlcnJvciwgY29uc3QgY2hhciAqZm9ybWF0LCAu
Li4pCit7CisgIHZhX2xpc3QgYXA7CisgIHZhX3N0YXJ0IChhcCwgZm9ybWF0KTsKKyAgaWYgKGVy
cm9yID09IDApCisgICAgdmZwcmludGYgKHN0ZGVyciwgZm9ybWF0LCBhcCk7CisgIGVsc2UKKyAg
ICB7CisgICAgICBjaGFyIGJ1ZmZlclsxMDAwXTsKKyAgICAgIHZzbnByaW50ZiAoYnVmZmVyLCBz
aXplb2YgYnVmZmVyLCBmb3JtYXQsIGFwKTsKKyAgICAgIGVycm5vID0gZXJyb3I7CisgICAgICBw
ZXJyb3IgKGJ1ZmZlcik7CisgICAgfQorICB2YV9lbmQgKGFwKTsKKyAgZmZsdXNoIChOVUxMKTsK
KyAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKK30KKworLyogVGhpcyBiaW5hcnkgaXMgdHJpdmlhbCwg
c28gd2UgdXNlIGEgc2luZ2xlIGdsb2JhbCBmaWx0ZXIgY29udGV4dCBvYmplY3QgdGhhdAorICAg
d2UgcmVsZWFzZSB1c2luZyBgYXRleGl0Jy4gICovCisKK3N0YXRpYyBzY21wX2ZpbHRlcl9jdHgg
Y3R4OworCitzdGF0aWMgdm9pZAorcmVsZWFzZV9jb250ZXh0ICh2b2lkKQoreworICBzZWNjb21w
X3JlbGVhc2UgKGN0eCk7Cit9CisKKy8qIFdyYXBwZXIgZnVuY3Rpb25zIGFuZCBtYWNyb3MgZm9y
IGxpYnNlY2NvbXAgZnVuY3Rpb25zLiAgV2UgZXhpdCBpbW1lZGlhdGVseQorICAgdXBvbiBhbnkg
ZXJyb3IgdG8gYXZvaWQgZXJyb3IgY2hlY2tpbmcgbm9pc2UuICAqLworCitzdGF0aWMgdm9pZAor
c2V0X2F0dHJpYnV0ZSAoZW51bSBzY21wX2ZpbHRlcl9hdHRyIGF0dHIsIHVpbnQzMl90IHZhbHVl
KQoreworICBpbnQgc3RhdHVzID0gc2VjY29tcF9hdHRyX3NldCAoY3R4LCBhdHRyLCB2YWx1ZSk7
CisgIGlmIChzdGF0dXMgPCAwKQorICAgIGZhaWwgKC1zdGF0dXMsICJzZWNjb21wX2F0dHJfc2V0
IChjdHgsICV1LCAldSkiLCBhdHRyLCB2YWx1ZSk7Cit9CisKKy8qIExpa2UgYHNlY2NvbXBfcnVs
ZV9hZGQgKEFDVElPTiwgU1lTQ0FMTCwgLi4uKScsIGV4Y2VwdCB0aGF0IHlvdSBkb24ndCBoYXZl
IHRvCisgICBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgY29tcGFyYXRvciBhcmd1bWVudHMsIGFuZCBh
bnkgZmFpbHVyZSB3aWxsIGV4aXQgdGhlCisgICBwcm9jZXNzLiAgKi8KKworI2RlZmluZSBSVUxF
KGFjdGlvbiwgc3lzY2FsbCwgLi4uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICBkbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgY29uc3Qgc3Ry
dWN0IHNjbXBfYXJnX2NtcCBhcmdfYXJyYXlbXSA9IHtfX1ZBX0FSR1NfX307ICAgICAgICAgICAg
XAorICAgICAgZW51bSB7IGFyZ19jbnQgPSBzaXplb2YgYXJnX2FycmF5IC8gc2l6ZW9mICphcmdf
YXJyYXkgfTsgICAgICAgICAgXAorICAgICAgaW50IHN0YXR1cyA9IHNlY2NvbXBfcnVsZV9hZGRf
YXJyYXkgKGN0eCwgKGFjdGlvbiksIChzeXNjYWxsKSwgICAgXAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ19jbnQsIGFyZ19hcnJheSk7ICAgICAgICAgXAor
ICAgICAgaWYgKHN0YXR1cyA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBmYWlsICgtc3RhdHVzLCAic2VjY29tcF9ydWxlX2Fk
ZF9hcnJheSAoJXMsICVzLCAlZCwgeyVzfSkiLAlcCisJICAgICAgI2FjdGlvbiwgI3N5c2NhbGws
IGFyZ19jbnQsICNfX1ZBX0FSR1NfXyk7CQlcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHdoaWxlIChm
YWxzZSkKKworc3RhdGljIHZvaWQKK2V4cG9ydF9maWx0ZXIgKGNvbnN0IGNoYXIgKmZpbGUsIGlu
dCAoKmZ1bmN0aW9uKSAoY29uc3Qgc2NtcF9maWx0ZXJfY3R4LCBpbnQpLAorICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgaW50IGZkID0gVEVNUF9GQUlMVVJFX1JFVFJZICgK
KyAgICBvcGVuIChmaWxlLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19CSU5BUlkg
fCBPX0NMT0VYRUMsIDA2NDQpKTsKKyAgaWYgKGZkIDwgMCkKKyAgICBmYWlsIChlcnJubywgIm9w
ZW4gJXMiLCBmaWxlKTsKKyAgaW50IHN0YXR1cyA9IGZ1bmN0aW9uIChjdHgsIGZkKTsKKyAgaWYg
KHN0YXR1cyA8IDApCisgICAgZmFpbCAoLXN0YXR1cywgIiVzIiwgbmFtZSk7CisgIGlmIChjbG9z
ZSAoZmQpICE9IDApCisgICAgZmFpbCAoZXJybm8sICJjbG9zZSIpOworfQorCisjZGVmaW5lIEVY
UE9SVF9GSUxURVIoZmlsZSwgZnVuY3Rpb24pIFwKKyAgZXhwb3J0X2ZpbHRlciAoKGZpbGUpLCAo
ZnVuY3Rpb24pLCAjZnVuY3Rpb24pCisKK2ludAorbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2
KQoreworICBpZiAoYXJnYyAhPSAzKQorICAgIGZhaWwgKDAsICJ1c2FnZTogJXMgb3V0LmJwZiBv
dXQucGZjIiwgYXJndlswXSk7CisKKyAgLyogQW55IHVuaGFuZGxlZCBzeXNjYWxsIHNob3VsZCBh
Ym9ydCB0aGUgRW1hY3MgcHJvY2Vzcy4gICovCisgIGN0eCA9IHNlY2NvbXBfaW5pdCAoU0NNUF9B
Q1RfS0lMTF9QUk9DRVNTKTsKKyAgaWYgKGN0eCA9PSBOVUxMKQorICAgIGZhaWwgKDAsICJzZWNj
b21wX2luaXQiKTsKKyAgYXRleGl0IChyZWxlYXNlX2NvbnRleHQpOworCisgIC8qIFdlIHdhbnQg
dG8gYWJvcnQgaW1tZWRpYXRlbHkgaWYgdGhlIGFyY2hpdGVjdHVyZSBpcyB1bmtub3duLiAgKi8K
KyAgc2V0X2F0dHJpYnV0ZSAoU0NNUF9GTFRBVFJfQUNUX0JBREFSQ0gsIFNDTVBfQUNUX0tJTExf
UFJPQ0VTUyk7CisgIHNldF9hdHRyaWJ1dGUgKFNDTVBfRkxUQVRSX0NUTF9OTlAsIDEpOworICBz
ZXRfYXR0cmlidXRlIChTQ01QX0ZMVEFUUl9DVExfVFNZTkMsIDEpOworICBzZXRfYXR0cmlidXRl
IChTQ01QX0ZMVEFUUl9DVExfTE9HLCAwKTsKKworICB2ZXJpZnkgKENIQVJfQklUID09IDgpOwor
ICB2ZXJpZnkgKHNpemVvZiAoaW50KSA9PSA0ICYmIElOVF9NSU4gPT0gSU5UMzJfTUlOICYmIElO
VF9NQVggPT0gSU5UMzJfTUFYKTsKKyAgdmVyaWZ5IChzaXplb2YgKHZvaWQgKikgPT0gOCk7Cisg
IHZlcmlmeSAoKHVpbnRwdHJfdCkgTlVMTCA9PSAwKTsKKworICAvKiBBbGxvdyBhIGNsZWFuIGV4
aXQuICAqLworICBSVUxFIChTQ01QX0FDVF9BTExPVywgU0NNUF9TWVMgKGV4aXQpKTsKKyAgUlVM
RSAoU0NNUF9BQ1RfQUxMT1csIFNDTVBfU1lTIChleGl0X2dyb3VwKSk7CisKKyAgLyogQWxsb3cg
YG1tYXAnIGFuZCBmcmllbmRzLiAgVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGR5bmFtaWMgbG9hZGlu
ZywgcmVhZGluZworICAgICB0aGUgcG9ydGFibGUgZHVtcCBmaWxlLCBhbmQgdGhyZWFkIGNyZWF0
aW9uLiAgV2UgZG9uJ3QgYWxsb3cgcGFnZXMgdG8gYmUKKyAgICAgYm90aCB3cml0YWJsZSBhbmQg
ZXhlY3V0YWJsZS4gICovCisgIHZlcmlmeSAoTUFQX1BSSVZBVEUgIT0gMCk7CisgIHZlcmlmeSAo
TUFQX1NIQVJFRCAhPSAwKTsKKyAgUlVMRSAoU0NNUF9BQ1RfQUxMT1csIFNDTVBfU1lTIChtbWFw
KSwKKyAgICAgICAgU0NNUF9BMl8zMiAoU0NNUF9DTVBfTUFTS0VEX0VRLCB+KFBST1RfTk9ORSB8
IFBST1RfUkVBRCB8IFBST1RfV1JJVEUpKSwKKyAgICAgICAgLyogT25seSBzdXBwb3J0IGtub3du
IGZsYWdzLiAgTUFQX0RFTllXUklURSBpcyBpZ25vcmVkLCBidXQgc29tZQorICAgICAgICAgICB2
ZXJzaW9ucyBvZiB0aGUgZHluYW1pYyBsb2FkZXIgc3RpbGwgdXNlIGl0LiAgQWxzbyBhbGxvdyBh
bGxvY2F0aW5nCisgICAgICAgICAgIHRocmVhZCBzdGFja3MuICAqLworICAgICAgICBTQ01QX0Ez
XzMyIChTQ01QX0NNUF9NQVNLRURfRVEsCisgICAgICAgICAgICAgICAgICAgIH4oTUFQX1BSSVZB
VEUgfCBNQVBfRklMRSB8IE1BUF9BTk9OWU1PVVMgfCBNQVBfRklYRUQKKyAgICAgICAgICAgICAg
ICAgICAgICB8IE1BUF9ERU5ZV1JJVEUgfCBNQVBfU1RBQ0sgfCBNQVBfTk9SRVNFUlZFKSwKKyAg
ICAgICAgICAgICAgICAgICAgMCkpOworICBSVUxFIChTQ01QX0FDVF9BTExPVywgU0NNUF9TWVMg
KG1tYXApLAorICAgICAgICBTQ01QX0EyXzMyIChTQ01QX0NNUF9NQVNLRURfRVEsIH4oUFJPVF9O
T05FIHwgUFJPVF9SRUFEIHwgUFJPVF9FWEVDKSksCisgICAgICAgIC8qIE9ubHkgc3VwcG9ydCBr
bm93biBmbGFncy4gIE1BUF9ERU5ZV1JJVEUgaXMgaWdub3JlZCwgYnV0IHNvbWUKKyAgICAgICAg
ICAgdmVyc2lvbnMgb2YgdGhlIGR5bmFtaWMgbG9hZGVyIHN0aWxsIHVzZSBpdC4gKi8KKyAgICAg
ICAgU0NNUF9BM18zMiAoU0NNUF9DTVBfTUFTS0VEX0VRLAorICAgICAgICAgICAgICAgICAgICB+
KE1BUF9QUklWQVRFIHwgTUFQX0FOT05ZTU9VUyB8IE1BUF9GSVhFRCB8IE1BUF9ERU5ZV1JJVEUp
LAorICAgICAgICAgICAgICAgICAgICAwKSk7CisgIFJVTEUgKFNDTVBfQUNUX0FMTE9XLCBTQ01Q
X1NZUyAobXVubWFwKSk7CisgIFJVTEUgKFNDTVBfQUNUX0FMTE9XLCBTQ01QX1NZUyAobXByb3Rl
Y3QpLAorCS8qIERvbid0IGFsbG93IG1ha2luZyBwYWdlcyBleGVjdXRhYmxlLiAgKi8KKyAgICAg
ICAgU0NNUF9BMl8zMiAoU0NNUF9DTVBfTUFTS0VEX0VRLCB+KFBST1RfTk9ORSB8IFBST1RfUkVB
RCB8IFBST1RfV1JJVEUpLAorICAgICAgICAgICAgICAgICAgICAwKSk7CisKKyAgLyogRnV0ZXhl
cyBhcmUgdXNlZCBldmVyeXdoZXJlLiAgKi8KKyAgUlVMRSAoU0NNUF9BQ1RfQUxMT1csIFNDTVBf
U1lTIChmdXRleCksCisgICAgICAgIFNDTVBfQTFfMzIgKFNDTVBfQ01QX0VRLCBGVVRFWF9XQUtF
X1BSSVZBVEUpKTsKKworICAvKiBBbGxvdyBiYXNpYyBkeW5hbWljIG1lbW9yeSBtYW5hZ2VtZW50
LiAgKi8KKyAgUlVMRSAoU0NNUF9BQ1RfQUxMT1csIFNDTVBfU1lTIChicmspKTsKKworICAvKiBB
bGxvdyBzb21lIHN0YXR1cyBpbnF1aXJpZXMuICAqLworICBSVUxFIChTQ01QX0FDVF9BTExPVywg
U0NNUF9TWVMgKHVuYW1lKSk7CisgIFJVTEUgKFNDTVBfQUNUX0FMTE9XLCBTQ01QX1NZUyAoZ2V0
dWlkKSk7CisgIFJVTEUgKFNDTVBfQUNUX0FMTE9XLCBTQ01QX1NZUyAoZ2V0ZXVpZCkpOworICBS
VUxFIChTQ01QX0FDVF9BTExPVywgU0NNUF9TWVMgKGdldHBpZCkpOworICBSVUxFIChTQ01QX0FD
VF9BTExPVywgU0NNUF9TWVMgKGdldHBncnApKTsKKworICAvKiBBbGxvdyBvcGVyYXRpb25zIG9u
IG9wZW4gZmlsZSBkZXNjcmlwdG9ycy4gIEZpbGUgZGVzY3JpcHRvcnMgYXJlCisgICAgIGNhcGFi
aWxpdGllcywgYW5kIG9wZXJhdGluZyBvbiB0aGVtIHNob3VsZG4ndCBjYXVzZSBzZWN1cml0eSBp
c3N1ZXMuICAqLworICBSVUxFIChTQ01QX0FDVF9BTExPVywgU0NNUF9TWVMgKHJlYWQpKTsKKyAg
UlVMRSAoU0NNUF9BQ1RfQUxMT1csIFNDTVBfU1lTICh3cml0ZSkpOworICBSVUxFIChTQ01QX0FD
VF9BTExPVywgU0NNUF9TWVMgKGNsb3NlKSk7CisgIFJVTEUgKFNDTVBfQUNUX0FMTE9XLCBTQ01Q
X1NZUyAobHNlZWspKTsKKyAgUlVMRSAoU0NNUF9BQ1RfQUxMT1csIFNDTVBfU1lTIChkdXApKTsK
KyAgUlVMRSAoU0NNUF9BQ1RfQUxMT1csIFNDTVBfU1lTIChkdXAyKSk7CisgIFJVTEUgKFNDTVBf
QUNUX0FMTE9XLCBTQ01QX1NZUyAoZnN0YXQpKTsKKworICAvKiBBbGxvdyByZWFkIG9wZXJhdGlv
bnMgb24gdGhlIGZpbGVzeXN0ZW0uICBJZiBuZWNlc3NhcnksIHRoZXNlIHNob3VsZCBiZQorICAg
ICBmdXJ0aGVyIHJlc3RyaWN0ZWQgdXNpbmcgbW91bnQgbmFtZXNwYWNlcy4gICovCisgIFJVTEUg
KFNDTVBfQUNUX0FMTE9XLCBTQ01QX1NZUyAoYWNjZXNzKSk7CisgIFJVTEUgKFNDTVBfQUNUX0FM
TE9XLCBTQ01QX1NZUyAoZmFjY2Vzc2F0KSk7CisgIFJVTEUgKFNDTVBfQUNUX0FMTE9XLCBTQ01Q
X1NZUyAoc3RhdCkpOworICBSVUxFIChTQ01QX0FDVF9BTExPVywgU0NNUF9TWVMgKHN0YXQ2NCkp
OworICBSVUxFIChTQ01QX0FDVF9BTExPVywgU0NNUF9TWVMgKGxzdGF0KSk7CisgIFJVTEUgKFND
TVBfQUNUX0FMTE9XLCBTQ01QX1NZUyAobHN0YXQ2NCkpOworICBSVUxFIChTQ01QX0FDVF9BTExP
VywgU0NNUF9TWVMgKGZzdGF0YXQ2NCkpOworICBSVUxFIChTQ01QX0FDVF9BTExPVywgU0NNUF9T
WVMgKG5ld2ZzdGF0YXQpKTsKKyAgUlVMRSAoU0NNUF9BQ1RfQUxMT1csIFNDTVBfU1lTIChyZWFk
bGluaykpOworICBSVUxFIChTQ01QX0FDVF9BTExPVywgU0NNUF9TWVMgKHJlYWRsaW5rYXQpKTsK
KyAgUlVMRSAoU0NNUF9BQ1RfQUxMT1csIFNDTVBfU1lTIChnZXRjd2QpKTsKKworICAvKiBBbGxv
dyBvcGVuaW5nIGZpbGVzLCBhc3N1bWluZyB0aGV5IGFyZSBvbmx5IG9wZW5lZCBmb3IgcmVhZGlu
Zy4gICovCisgIHZlcmlmeSAoT19XUk9OTFkgIT0gMCk7CisgIHZlcmlmeSAoT19SRFdSICE9IDAp
OworICB2ZXJpZnkgKE9fQ1JFQVQgIT0gMCk7CisgIFJVTEUgKFNDTVBfQUNUX0FMTE9XLCBTQ01Q
X1NZUyAob3BlbiksCisgICAgICAgIFNDTVBfQTFfMzIgKFNDTVBfQ01QX01BU0tFRF9FUSwKKyAg
ICAgICAgICAgICAgICAgICAgfihPX1JET05MWSB8IE9fQklOQVJZIHwgT19DTE9FWEVDIHwgT19Q
QVRIIHwgT19ESVJFQ1RPUlkpLAorICAgICAgICAgICAgICAgICAgICAwKSk7CisgIFJVTEUgKFND
TVBfQUNUX0FMTE9XLCBTQ01QX1NZUyAob3BlbmF0KSwKKyAgICAgICAgU0NNUF9BMl8zMiAoU0NN
UF9DTVBfTUFTS0VEX0VRLAorICAgICAgICAgICAgICAgICAgICB+KE9fUkRPTkxZIHwgT19CSU5B
UlkgfCBPX0NMT0VYRUMgfCBPX1BBVEggfCBPX0RJUkVDVE9SWSksCisgICAgICAgICAgICAgICAg
ICAgIDApKTsKKworICAvKiBBbGxvdyBgdGNnZXRwZ3JwJy4gICovCisgIFJVTEUgKFNDTVBfQUNU
X0FMTE9XLCBTQ01QX1NZUyAoaW9jdGwpLCBTQ01QX0EwXzMyIChTQ01QX0NNUF9FUSwgU1RESU5f
RklMRU5PKSwKKyAgICAgICAgU0NNUF9BMV8zMiAoU0NNUF9DTVBfRVEsIFRJT0NHUEdSUCkpOwor
CisgIC8qIEFsbG93IHJlYWRpbmcgKGJ1dCBub3Qgc2V0dGluZykgZmlsZSBmbGFncy4gICovCisg
IFJVTEUgKFNDTVBfQUNUX0FMTE9XLCBTQ01QX1NZUyAoZmNudGwpLCBTQ01QX0ExXzMyIChTQ01Q
X0NNUF9FUSwgRl9HRVRGTCkpOworICBSVUxFIChTQ01QX0FDVF9BTExPVywgU0NNUF9TWVMgKGZj
bnRsNjQpLCBTQ01QX0ExXzMyIChTQ01QX0NNUF9FUSwgRl9HRVRGTCkpOworCisgIC8qIEFsbG93
IHJlYWRpbmcgcmFuZG9tIG51bWJlcnMgZnJvbSB0aGUga2VybmVsLiAgKi8KKyAgUlVMRSAoU0NN
UF9BQ1RfQUxMT1csIFNDTVBfU1lTIChnZXRyYW5kb20pKTsKKworICAvKiBDaGFuZ2luZyB0aGUg
dW1hc2sgaXMgdW5jcml0aWNhbC4gICovCisgIFJVTEUgKFNDTVBfQUNUX0FMTE9XLCBTQ01QX1NZ
UyAodW1hc2spKTsKKworICAvKiBBbGxvdyBjcmVhdGlvbiBvZiBwaXBlcy4gICovCisgIFJVTEUg
KFNDTVBfQUNUX0FMTE9XLCBTQ01QX1NZUyAocGlwZSkpOworICBSVUxFIChTQ01QX0FDVF9BTExP
VywgU0NNUF9TWVMgKHBpcGUyKSk7CisKKyAgLyogQWxsb3cgcmVhZGluZyAoYnV0IG5vdCBjaGFu
Z2luZykgcmVzb3VyY2UgbGltaXRzLiAgKi8KKyAgUlVMRSAoU0NNUF9BQ1RfQUxMT1csIFNDTVBf
U1lTIChnZXRybGltaXQpKTsKKyAgUlVMRSAoU0NNUF9BQ1RfQUxMT1csIFNDTVBfU1lTIChwcmxp
bWl0NjQpLAorCVNDTVBfQTBfMzIgKFNDTVBfQ01QX0VRLCAwKSAvKiBwaWQgPT0gMCAoY3VycmVu
dCBwcm9jZXNzKSAqLywKKyAgICAgICAgU0NNUF9BMl82NCAoU0NNUF9DTVBfRVEsIDApIC8qIG5l
d19saW1pdCA9PSBOVUxMICovKTsKKworICAvKiBCbG9jayBjaGFuZ2luZyByZXNvdXJjZSBsaW1p
dHMsIGJ1dCBkb24ndCBjcmFzaC4gICovCisgIFJVTEUgKFNDTVBfQUNUX0VSUk5PIChFUEVSTSks
IFNDTVBfU1lTIChwcmxpbWl0NjQpLAorICAgICAgICBTQ01QX0EwXzMyIChTQ01QX0NNUF9FUSwg
MCkgLyogcGlkID09IDAgKGN1cnJlbnQgcHJvY2VzcykgKi8sCisgICAgICAgIFNDTVBfQTJfNjQg
KFNDTVBfQ01QX05FLCAwKSAvKiBuZXdfbGltaXQgIT0gTlVMTCAqLyk7CisKKyAgLyogRW1hY3Mg
aW5zdGFsbHMgc2lnbmFsIGhhbmRsZXJzLCB3aGljaCBpcyBoYXJtbGVzcy4gICovCisgIFJVTEUg
KFNDTVBfQUNUX0FMTE9XLCBTQ01QX1NZUyAoc2lnYWN0aW9uKSk7CisgIFJVTEUgKFNDTVBfQUNU
X0FMTE9XLCBTQ01QX1NZUyAocnRfc2lnYWN0aW9uKSk7CisgIFJVTEUgKFNDTVBfQUNUX0FMTE9X
LCBTQ01QX1NZUyAoc2lncHJvY21hc2spKTsKKyAgUlVMRSAoU0NNUF9BQ1RfQUxMT1csIFNDTVBf
U1lTIChydF9zaWdwcm9jbWFzaykpOworCisgIC8qIEFsbG93IHRpbWVyIHN1cHBvcnQuICAqLwor
ICBSVUxFIChTQ01QX0FDVF9BTExPVywgU0NNUF9TWVMgKHRpbWVyX2NyZWF0ZSkpOworICBSVUxF
IChTQ01QX0FDVF9BTExPVywgU0NNUF9TWVMgKHRpbWVyZmRfY3JlYXRlKSk7CisKKyAgLyogQWxs
b3cgdGhyZWFkIGNyZWF0aW9uLiAgU2VlIHRoZSBOT1RFUyBzZWN0aW9uIGluIHRoZSBtYW51YWwg
cGFnZSBmb3IgdGhlCisgICAgIGBjbG9uZScgZnVuY3Rpb24uICAqLworICBSVUxFIChTQ01QX0FD
VF9BTExPVywgU0NNUF9TWVMgKGNsb25lKSwKKyAgICAgICAgU0NNUF9BMF82NCAoU0NNUF9DTVBf
TUFTS0VEX0VRLAorCQkgICAgLyogRmxhZ3MgbmVlZGVkIHRvIGNyZWF0ZSB0aHJlYWRzLiAgU2Vl
IGNyZWF0ZV90aHJlYWQgaW4KKwkJICAgICAgIGxpYmMuICAqLworICAgICAgICAgICAgICAgICAg
ICB+KENMT05FX1ZNIHwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxFUyB8IENMT05FX1NZU1ZTRU0KKyAg
ICAgICAgICAgICAgICAgICAgICB8IENMT05FX1NJR0hBTkQgfCBDTE9ORV9USFJFQUQgfCBDTE9O
RV9TRVRUTFMKKyAgICAgICAgICAgICAgICAgICAgICB8IENMT05FX1BBUkVOVF9TRVRUSUQgfCBD
TE9ORV9DSElMRF9DTEVBUlRJRCksCisgICAgICAgICAgICAgICAgICAgIDApKTsKKyAgUlVMRSAo
U0NNUF9BQ1RfQUxMT1csIFNDTVBfU1lTIChzaWdhbHRzdGFjaykpOworICBSVUxFIChTQ01QX0FD
VF9BTExPVywgU0NNUF9TWVMgKHNldF9yb2J1c3RfbGlzdCkpOworCisgIC8qIEFsbG93IHNldHRp
bmcgdGhlIHByb2Nlc3MgbmFtZSBmb3IgbmV3IHRocmVhZHMuICAqLworICBSVUxFIChTQ01QX0FD
VF9BTExPVywgU0NNUF9TWVMgKHByY3RsKSwgU0NNUF9BMF8zMiAoU0NNUF9DTVBfRVEsIFBSX1NF
VF9OQU1FKSk7CisKKyAgLyogQWxsb3cgc29tZSBldmVudCBoYW5kbGluZyBmdW5jdGlvbnMgdXNl
ZCBieSBnbGliLiAgKi8KKyAgUlVMRSAoU0NNUF9BQ1RfQUxMT1csIFNDTVBfU1lTIChldmVudGZk
KSk7CisgIFJVTEUgKFNDTVBfQUNUX0FMTE9XLCBTQ01QX1NZUyAoZXZlbnRmZDIpKTsKKyAgUlVM
RSAoU0NNUF9BQ1RfQUxMT1csIFNDTVBfU1lTICh3YWl0NCkpOworICBSVUxFIChTQ01QX0FDVF9B
TExPVywgU0NNUF9TWVMgKHBvbGwpKTsKKworICAvKiBEb24ndCBhbGxvdyBjcmVhdGluZyBzb2Nr
ZXRzIChuZXR3b3JrIGFjY2VzcyB3b3VsZCBiZSBleHRyZW1lbHkgZGFuZ2Vyb3VzKSwKKyAgICAg
YnV0IGFsc28gZG9uJ3QgY3Jhc2guICAqLworICBSVUxFIChTQ01QX0FDVF9FUlJOTyAoRUFDQ0VT
KSwgU0NNUF9TWVMgKHNvY2tldCkpOworCisgIEVYUE9SVF9GSUxURVIgKGFyZ3ZbMV0sIHNlY2Nv
bXBfZXhwb3J0X2JwZik7CisgIEVYUE9SVF9GSUxURVIgKGFyZ3ZbMl0sIHNlY2NvbXBfZXhwb3J0
X3BmYyk7Cit9CmRpZmYgLS1naXQgYS90ZXN0L01ha2VmaWxlLmluIGIvdGVzdC9NYWtlZmlsZS5p
bgppbmRleCA2N2QyMDNkZjI5Li45OWY2OWY3ZmNkIDEwMDY0NAotLS0gYS90ZXN0L01ha2VmaWxl
LmluCisrKyBiL3Rlc3QvTWFrZWZpbGUuaW4KQEAgLTI3MSw2ICsyNzEsOCBAQCAkKHRlc3RfbW9k
dWxlKTogJCh0ZXN0X21vZHVsZToKIAkgICQoc3JjZGlyKS8uLi9saWIvdGltZXNwZWMuYyAkKHNy
Y2RpcikvLi4vbGliL2dldHRpbWUuYwogZW5kaWYKIAorc3JjL2VtYWNzLXRlc3RzLmxvZzogLi4v
bGliLXNyYy9zZWNjb21wLWZpbHRlci5jCisKICMjIENoZWNrIHRoYXQgdGhlcmUgaXMgbm8gJ2F1
dG9tYXRlZCcgc3ViZGlyZWN0b3J5LCB3aGljaCB3b3VsZAogIyMgaW5kaWNhdGUgYW4gaW5jb21w
bGV0ZSBtZXJnZSBmcm9tIGFuIG9sZGVyIHZlcnNpb24gb2YgRW1hY3Mgd2hlcmUKICMjIHRoZSB0
ZXN0cyB3ZXJlIGFycmFuZ2VkIGRpZmZlcmVudGx5LgpkaWZmIC0tZ2l0IGEvdGVzdC9zcmMvZW1h
Y3MtcmVzb3VyY2VzL3NlY2NvbXAtZmlsdGVyLmJwZiBiL3Rlc3Qvc3JjL2VtYWNzLXJlc291cmNl
cy9zZWNjb21wLWZpbHRlci5icGYKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAw
MC4uYjNkNjAzZDBhZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qvc3JjL2VtYWNzLXJlc291cmNl
cy9zZWNjb21wLWZpbHRlci5icGYKQEAgLTAsMCArMSBAQAorLi4vLi4vLi4vbGliLXNyYy9zZWNj
b21wLWZpbHRlci5icGYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90
ZXN0L3NyYy9lbWFjcy10ZXN0cy5lbCBiL3Rlc3Qvc3JjL2VtYWNzLXRlc3RzLmVsCmluZGV4IDI3
OWVjYjIxMGMuLjk1OTljMjY3ODMgMTAwNjQ0Ci0tLSBhL3Rlc3Qvc3JjL2VtYWNzLXRlc3RzLmVs
CisrKyBiL3Rlc3Qvc3JjL2VtYWNzLXRlc3RzLmVsCkBAIC0yNSw2ICsyNSw4IEBACiAKIChyZXF1
aXJlICdjbC1saWIpCiAocmVxdWlyZSAnZXJ0KQorKHJlcXVpcmUgJ2VydC14KQorKHJlcXVpcmUg
J3N1YnIteCkKIAogKGVydC1kZWZ0ZXN0IGVtYWNzLXRlc3RzL3NlY2NvbXAvYWJzZW50LWZpbGUg
KCkKICAgKGxldCAoKGVtYWNzIChleHBhbmQtZmlsZS1uYW1lIGludm9jYXRpb24tbmFtZSBpbnZv
Y2F0aW9uLWRpcmVjdG9yeSkpCkBAIC04Myw0ICs4NSw0NiBAQCBlbWFjcy10ZXN0cy9zZWNjb21w
L2ludmFsaWQtZmlsZS1zaXplCiAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXF1aWNrIiAi
LS1iYXRjaCIgKGNvbmNhdCAiLS1zZWNjb21wPSIgZmlsdGVyKSkKICAgICAgICAgICAgIDApKSkp
KQogCisoZXJ0LWRlZnRlc3QgZW1hY3MtdGVzdHMvc2VjY29tcC9hbGxvd3Mtc3Rkb3V0ICgpCisg
IChsZXQgKChlbWFjcyAoZXhwYW5kLWZpbGUtbmFtZSBpbnZvY2F0aW9uLW5hbWUgaW52b2NhdGlv
bi1kaXJlY3RvcnkpKQorICAgICAgICAoZmlsdGVyIChlcnQtcmVzb3VyY2UtZmlsZSAic2VjY29t
cC1maWx0ZXIuYnBmIikpCisgICAgICAgIChwcm9jZXNzLWVudmlyb25tZW50IG5pbCkpCisgICAg
KHNraXAtdW5sZXNzIChmaWxlLWV4ZWN1dGFibGUtcCBlbWFjcykpCisgICAgKHNraXAtdW5sZXNz
IChmaWxlLXJlYWRhYmxlLXAgZmlsdGVyKSkKKyAgICA7OyBUaGUgLS1zZWNjb21wIG9wdGlvbiBp
cyBwcm9jZXNzZWQgZWFybHksIHdpdGhvdXQgZmlsZW5hbWUgaGFuZGxlcnMuCisgICAgOzsgVGhl
cmVmb3JlIHJlbW90ZSBvciBxdW90ZWQgZmlsZW5hbWVzIHdvdWxkbid0IHdvcmsuCisgICAgKHNo
b3VsZC1ub3QgKGZpbGUtcmVtb3RlLXAgZmlsdGVyKSkKKyAgICAoY2wtY2FsbGYgZmlsZS1uYW1l
LXVucXVvdGUgZmlsdGVyKQorICAgICh3aXRoLXRlbXAtYnVmZmVyCisgICAgICAobGV0ICgoc3Rh
dHVzIChjYWxsLXByb2Nlc3MgZW1hY3MgbmlsIHQgbmlsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIi0tcXVpY2siICItLWJhdGNoIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChjb25jYXQgIi0tc2VjY29tcD0iIGZpbHRlcikKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoY29uY2F0ICItLWV2YWw9IiAocHJpbjEtdG8tc3RyaW5nCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcobWVzc2Fn
ZSAiSGkiKSkpKSkpCisgICAgICAgIChlcnQtaW5mbyAoKGZvcm1hdCAiUHJvY2VzcyBvdXRwdXQ6
ICVzIiAoYnVmZmVyLXN0cmluZykpKQorICAgICAgICAgIChzaG91bGQgKGVxbCBzdGF0dXMgMCkp
KQorICAgICAgICAoc2hvdWxkIChlcXVhbCAoc3RyaW5nLXRyaW0gKGJ1ZmZlci1zdHJpbmcpKSAi
SGkiKSkpKSkpCisKKyhlcnQtZGVmdGVzdCBlbWFjcy10ZXN0cy9zZWNjb21wL2ZvcmJpZHMtc3Vi
cHJvY2VzcyAoKQorICAobGV0ICgoZW1hY3MgKGV4cGFuZC1maWxlLW5hbWUgaW52b2NhdGlvbi1u
YW1lIGludm9jYXRpb24tZGlyZWN0b3J5KSkKKyAgICAgICAgKGZpbHRlciAoZXJ0LXJlc291cmNl
LWZpbGUgInNlY2NvbXAtZmlsdGVyLmJwZiIpKQorICAgICAgICAocHJvY2Vzcy1lbnZpcm9ubWVu
dCBuaWwpKQorICAgIChza2lwLXVubGVzcyAoZmlsZS1leGVjdXRhYmxlLXAgZW1hY3MpKQorICAg
IChza2lwLXVubGVzcyAoZmlsZS1yZWFkYWJsZS1wIGZpbHRlcikpCisgICAgOzsgVGhlIC0tc2Vj
Y29tcCBvcHRpb24gaXMgcHJvY2Vzc2VkIGVhcmx5LCB3aXRob3V0IGZpbGVuYW1lIGhhbmRsZXJz
LgorICAgIDs7IFRoZXJlZm9yZSByZW1vdGUgb3IgcXVvdGVkIGZpbGVuYW1lcyB3b3VsZG4ndCB3
b3JrLgorICAgIChzaG91bGQtbm90IChmaWxlLXJlbW90ZS1wIGZpbHRlcikpCisgICAgKGNsLWNh
bGxmIGZpbGUtbmFtZS11bnF1b3RlIGZpbHRlcikKKyAgICAod2l0aC10ZW1wLWJ1ZmZlcgorICAg
ICAgKGxldCAoKHN0YXR1cworICAgICAgICAgICAgIChjYWxsLXByb2Nlc3MKKyAgICAgICAgICAg
ICAgZW1hY3MgbmlsIHQgbmlsCisgICAgICAgICAgICAgICItLXF1aWNrIiAiLS1iYXRjaCIKKyAg
ICAgICAgICAgICAgKGNvbmNhdCAiLS1zZWNjb21wPSIgZmlsdGVyKQorICAgICAgICAgICAgICAo
Y29uY2F0ICItLWV2YWw9IiAocHJpbjEtdG8tc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBgKGNhbGwtcHJvY2VzcyAsZW1hY3MgbmlsIG5pbCBuaWwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXZlcnNpb24iKSkpKSkpCisg
ICAgICAgIChlcnQtaW5mbyAoKGZvcm1hdCAiUHJvY2VzcyBvdXRwdXQ6ICVzIiAoYnVmZmVyLXN0
cmluZykpKQorICAgICAgICAgIChzaG91bGQtbm90IChlcWwgc3RhdHVzIDApKSkpKSkpCisKIDs7
OyBlbWFjcy10ZXN0cy5lbCBlbmRzIGhlcmUKLS0gCjIuMjkuMi43MjkuZzQ1ZGFmODc3N2QtZ29v
ZwoK
--00000000000080b8ad05b6d8a897--