x86-64, amd64, contrib: sb-fiber

Jesse Bouwman via Sbcl-devel <[email protected]> Mon, 01 Jun 2026 19:12:53 +0000
Newsgroups gmane.lisp.steel-bank.devel
Message-ID <[email protected]>
--b1=_D6HjCpfIgRg39jtH6OSxSrrDhqiWoDiY5lB10hD94
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Howdy sbcl-devel,

Here is a revised patch to introduce fibers/coroutines via a sb-fiber contr=
ib and what I believe to be idiomatic x86-64/arm64 runtime support. Subsequ=
ent to providing invaluable guidance on implementation, Charles Zhang was k=
ind enough to review a version a few weeks ago and suggested that it was in=
 good enough shape that I share it here to solicit feedback on interface sh=
ape, completeness and fitness to purpose.

There's been further work over the past few weeks, mainly an outcome of exp=
osing a fiber-based HTTP proxy in a DMZ, where it was promptly incinerated =
by scanners, php probes, etc. The package has gained more consistent interr=
upt and condition support, and notably the ability to migrate fibers betwee=
n threads, which should allow users good flexibility in scheduler design. F=
urther to that, I'll say again that the main goal here has been to introduc=
e the minimal operation set to support user applications: concrete schedule=
r and generator implementations are not provided. I'll share gists of what =
I'm using for those, if there is interest.

Some measurements on arm64, Apple M2, Mac14,2 are:

pingpong (resume, yield)         ~62 ns/op   (2 switches/iter -> ~31 ns/swi=
tch)
switch, 32 live bindings      ~97 ns/op   (binding-stack swap =3D ~2 ns/bin=
ding)
make-fiber, release           ~4.6 us/op   (stack mmap, struct alloc)

(Creation is mmap-bound; pooling is the obvious mitigation.)

A patch is attached, corresponding to https://github.com/jbouwman/sbcl/comm=
it/1c5ba1fc4ee3246e4455e2af998b9e7eb004cbf2

  =E2=80=94 Jesse


--b1=_D6HjCpfIgRg39jtH6OSxSrrDhqiWoDiY5lB10hD94
Content-Type: application/octet-stream; x-unix-mode=0644; name=0001-x86-64-arm64-contrib-cooperative-user-space-coroutin.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=0001-x86-64-arm64-contrib-cooperative-user-space-coroutin.patch

RnJvbSAxYzViYTFmYzRlZTMyNDZlNDQ1NWUyYWY5OThiOWU3ZWIwMDRjYmYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKZXNzZSBCb3V3bWFuIDxqZXNzZS5ib3V3bWFuQHBtLm1lPgpE
YXRlOiBTYXQsIDMwIE1heSAyMDI2IDA4OjM3OjMzIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0geDg2
LTY0LCBhcm02NCwgY29udHJpYjogY29vcGVyYXRpdmUgdXNlci1zcGFjZSBjb3JvdXRpbmVzCgpS
dW50aW1lIHN1cHBvcnQgYW5kIGEgY29udHJpYiAoJ3NiLWZpYmVyJykgdGhhdCBwcm92aWRlIHVz
ZXItc3BhY2UKY29yb3V0aW5lcyB3aXRoIGNvbnRyb2wgYW5kIGJpbmRpbmcgc3RhY2tzLCBjb29w
ZXJhdGl2ZWx5IHNjaGVkdWxlZCwKbWlncmF0YWJsZSBiZXR3ZWVuIE9TIHRocmVhZHMuCgpHYXRl
ZCBvbiA6c2ItZmliZXIgKG9mZiBieSBkZWZhdWx0KSBmb3IgeDg2LTY0IGFuZCBhcm02NCBQT1NJ
WCBidWlsZHMuCkFQSSBkb2N1bWVudGF0aW9uIGluIGNvbnRyaWIvc2ItZmliZXIvc2ItZmliZXIu
dGV4aW5mby4KLS0tCiBjb250cmliL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDIgKy0KIGNvbnRyaWIvc2ItZmliZXIvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgMyArCiBj
b250cmliL3NiLWZpYmVyL1JFQURNRS5tZCAgICAgICAgICAgICAgfCAxMTIgKysrKysKIGNvbnRy
aWIvc2ItZmliZXIvYXJtNjQtdm9wcy5saXNwICAgICAgICB8ICAzOCArKwogY29udHJpYi9zYi1m
aWJlci9jb25zdGFudHMubGlzcCAgICAgICAgIHwgIDIwICsKIGNvbnRyaWIvc2ItZmliZXIvZmli
ZXItZmZpLmxpc3AgICAgICAgICB8IDMwMCArKysrKysrKysrKysKIGNvbnRyaWIvc2ItZmliZXIv
ZmliZXIubGlzcCAgICAgICAgICAgICB8IDM0OCArKysrKysrKysrKysrCiBjb250cmliL3NiLWZp
YmVyL3BhY2thZ2UubGlzcCAgICAgICAgICAgfCAgNTQgKysKIGNvbnRyaWIvc2ItZmliZXIvc2It
ZmliZXIuYXNkICAgICAgICAgICB8ICAyMSArCiBjb250cmliL3NiLWZpYmVyL3NiLWZpYmVyLnRl
eGluZm8gICAgICAgfCAyNDkgKysrKysrKysrKwogY29udHJpYi9zYi1maWJlci94ODYtNjQtdm9w
cy5saXNwICAgICAgIHwgIDMxICsrCiBtYWtlLXRhcmdldC0yLWxvYWQubGlzcCAgICAgICAgICAg
ICAgICAgfCAgIDUgKy0KIHNyYy9hc3NlbWJseS9hcm02NC90cmFtcHMubGlzcCAgICAgICAgICB8
ICAyMCArCiBzcmMvYXNzZW1ibHkveDg2LTY0L3RyYW1wcy5saXNwICAgICAgICAgfCAgMTcgKwog
c3JjL2NvbGQvYmFzZS10YXJnZXQtZmVhdHVyZXMubGlzcC1leHByIHwgICAzICsKIHNyYy9jb2xk
L3NoYXJlZC5saXNwICAgICAgICAgICAgICAgICAgICB8ICAgNiArCiBzcmMvY29tcGlsZXIvYXJt
NjQvbWFjcm9zLmxpc3AgICAgICAgICAgfCAgMzUgKysKIHNyYy9jb21waWxlci9hcm02NC9wYXJt
cy5saXNwICAgICAgICAgICB8ICAxMCArLQogc3JjL2NvbXBpbGVyL3g4Ni02NC9tYWNyb3MubGlz
cCAgICAgICAgIHwgIDI1ICsKIHNyYy9jb21waWxlci94ODYtNjQvcGFybXMubGlzcCAgICAgICAg
ICB8ICAxMSArLQogc3JjL3J1bnRpbWUvQ29uZmlnLmFybTY0LWFuZHJvaWQgICAgICAgIHwgICA1
ICsKIHNyYy9ydW50aW1lL0NvbmZpZy5hcm02NC1ic2QgICAgICAgICAgICB8ICAgNCArCiBzcmMv
cnVudGltZS9Db25maWcuYXJtNjQtZGFyd2luICAgICAgICAgfCAgIDQgKwogc3JjL3J1bnRpbWUv
Q29uZmlnLmFybTY0LWxpbnV4ICAgICAgICAgIHwgICA1ICsKIHNyYy9ydW50aW1lL0NvbmZpZy54
ODYtNjQtYW5kcm9pZCAgICAgICB8ICAgNCArCiBzcmMvcnVudGltZS9Db25maWcueDg2LTY0LWJz
ZCAgICAgICAgICAgfCAgIDQgKwogc3JjL3J1bnRpbWUvQ29uZmlnLng4Ni02NC1kYXJ3aW4gICAg
ICAgIHwgICA0ICsKIHNyYy9ydW50aW1lL0NvbmZpZy54ODYtNjQtaGFpa3UgICAgICAgICB8ICAg
NCArCiBzcmMvcnVudGltZS9Db25maWcueDg2LTY0LWxpbnV4ICAgICAgICAgfCAgIDQgKwogc3Jj
L3J1bnRpbWUvQ29uZmlnLng4Ni02NC1zdW5vcyAgICAgICAgIHwgICA0ICsKIHNyYy9ydW50aW1l
L2FsbG9jLmMgICAgICAgICAgICAgICAgICAgICB8ICAgNCArCiBzcmMvcnVudGltZS9hcm02NC1m
aWJlci5jICAgICAgICAgICAgICAgfCAxNjEgKysrKysrCiBzcmMvcnVudGltZS9hcm02NC1maWJl
ci5oICAgICAgICAgICAgICAgfCAgMjggKysKIHNyYy9ydW50aW1lL2ZpYmVyLmMgICAgICAgICAg
ICAgICAgICAgICB8IDQ2MiArKysrKysrKysrKysrKysrKysKIHNyYy9ydW50aW1lL2ZpYmVyLmgg
ICAgICAgICAgICAgICAgICAgICB8IDEyNCArKysrKwogc3JjL3J1bnRpbWUvZ2VuY2djLmMgICAg
ICAgICAgICAgICAgICAgIHwgIDM0ICstCiBzcmMvcnVudGltZS9pbnRlcnJ1cHQuYyAgICAgICAg
ICAgICAgICAgfCAgIDcgKy0KIHNyYy9ydW50aW1lL2ludGVycnVwdC5oICAgICAgICAgICAgICAg
ICB8ICAgMSArCiBzcmMvcnVudGltZS9wbXJnYy5jICAgICAgICAgICAgICAgICAgICAgfCAgMjMg
Ky0KIHNyYy9ydW50aW1lL3RocmVhZC5oICAgICAgICAgICAgICAgICAgICB8ICAgNyArCiBzcmMv
cnVudGltZS94ODYtNjQtZmliZXIuYyAgICAgICAgICAgICAgfCAxMDkgKysrKysKIHNyYy9ydW50
aW1lL3g4Ni02NC1maWJlci5oICAgICAgICAgICAgICB8ICAyMyArCiB0ZXN0cy9maWJlci5pbXB1
cmUubGlzcCAgICAgICAgICAgICAgICAgfCA2MjUgKysrKysrKysrKysrKysrKysrKysrKysrCiB0
ZXN0cy9maWJlci5wdXJlLmxpc3AgICAgICAgICAgICAgICAgICAgfCA0NTcgKysrKysrKysrKysr
KysrKysKIHRlc3RzL2lucHV0LW1hbmlmZXN0Lmxpc3AtZXhwciAgICAgICAgICB8ICAgMiArCiA0
NSBmaWxlcyBjaGFuZ2VkLCAzNDEwIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCiBjcmVh
dGUgbW9kZSAxMDA2NDQgY29udHJpYi9zYi1maWJlci9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAw
NjQ0IGNvbnRyaWIvc2ItZmliZXIvUkVBRE1FLm1kCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJp
Yi9zYi1maWJlci9hcm02NC12b3BzLmxpc3AKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250cmliL3Ni
LWZpYmVyL2NvbnN0YW50cy5saXNwCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9zYi1maWJl
ci9maWJlci1mZmkubGlzcAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvc2ItZmliZXIvZmli
ZXIubGlzcAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvc2ItZmliZXIvcGFja2FnZS5saXNw
CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9zYi1maWJlci9zYi1maWJlci5hc2QKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBjb250cmliL3NiLWZpYmVyL3NiLWZpYmVyLnRleGluZm8KIGNyZWF0ZSBt
b2RlIDEwMDY0NCBjb250cmliL3NiLWZpYmVyL3g4Ni02NC12b3BzLmxpc3AKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBzcmMvcnVudGltZS9hcm02NC1maWJlci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj
L3J1bnRpbWUvYXJtNjQtZmliZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9ydW50aW1lL2Zp
YmVyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcnVudGltZS9maWJlci5oCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgc3JjL3J1bnRpbWUveDg2LTY0LWZpYmVyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz
cmMvcnVudGltZS94ODYtNjQtZmliZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2ZpYmVy
LmltcHVyZS5saXNwCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvZmliZXIucHVyZS5saXNwCgpk
aWZmIC0tZ2l0IGEvY29udHJpYi9NYWtlZmlsZSBiL2NvbnRyaWIvTWFrZWZpbGUKaW5kZXggMDBl
YzM4OWIzLi5hYWJiMmQ3ZDkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvTWFrZWZpbGUKKysrIGIvY29u
dHJpYi9NYWtlZmlsZQpAQCAtMyw3ICszLDcgQEAgdnBhdGggJS5mYXNsIC4uL29iai9zYmNsLWhv
bWUvY29udHJpYi8KIGNvbnRyaWJzID0gc2ItcG9zaXggc2ItYnNkLXNvY2tldHMgc2ItaW50cm9z
cGVjdCBzYi1jbHRsMiBzYi1hY2xyZXBsIFwKICAgICAgc2Itc3Byb2Ygc2ItY2Fwc3RvbmUgc2It
bWQ1IHNiLWNhcHN0b25lIHNiLWV4ZWN1dGFibGUgc2ItZ21wIHNiLW1wZnIgXAogICAgICBzYi1x
dWV1ZSBzYi1yb3RhdGUtYnl0ZSBzYi1ydCBzYi1zaW1wbGUtc3RyZWFtcyBzYi1jb25jdXJyZW5j
eSBzYi1jb3ZlciBcCi0gICAgIHNiLXNpbWQgc2ItZ3JvdmVsIHNiLXBlcmYgYXNkZgorICAgICBz
Yi1zaW1kIHNiLWdyb3ZlbCBzYi1wZXJmIHNiLWZpYmVyIGFzZGYKIAogYWN0aXZlX2NvbnRyaWJz
ID0gJChmaWx0ZXItb3V0ICQoU0JDTF9DT05UUklCX0JMT0NLTElTVCksJChjb250cmlicykpCiAK
ZGlmZiAtLWdpdCBhL2NvbnRyaWIvc2ItZmliZXIvTWFrZWZpbGUgYi9jb250cmliL3NiLWZpYmVy
L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNjgxNWU2ODc2
Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9zYi1maWJlci9NYWtlZmlsZQpAQCAtMCwwICsx
LDMgQEAKK1NZU1RFTT1zYi1maWJlcgorQ0ZMQUdTKz0tSSQoU0JDTF9UT1ApL3NyYy9ydW50aW1l
CitpbmNsdWRlIC4uL2FzZGYtbW9kdWxlLm1rCmRpZmYgLS1naXQgYS9jb250cmliL3NiLWZpYmVy
L1JFQURNRS5tZCBiL2NvbnRyaWIvc2ItZmliZXIvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMC4uMmVmY2U0ZjM3Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJp
Yi9zYi1maWJlci9SRUFETUUubWQKQEAgLTAsMCArMSwxMTIgQEAKKyMgc2ItZmliZXIgbm90ZXMK
KworVGhlc2UgYXJlIHNvbWUgdGVjaG5pY2FsIG5vdGVzIG9uIGltcGxlbWVudGF0aW9uIG9mIGZp
YmVycy4KK1VzZXItZmFjaW5nIEFQSSBkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCBpbiBgc2It
ZmliZXIudGV4aW5mb2AuCisKKyMjIENvZGUgb3JnYW5pemF0aW9uCisKK3wgUm9sZSAgICAgICB8
IEZpbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wtLS0tLS0tLS0tLS18LS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKK3wgTGlzcCBBUEkgICB8IGBjb250
cmliL3NiLWZpYmVyL2ZpYmVyLmxpc3BgICAgICAgIHwKK3wgTGlzcCA8LT4gQyB8IGBjb250cmli
L3NiLWZpYmVyL2ZpYmVyLWZmaS5saXNwYCAgIHwKK3wgVk9QcyAgICAgICB8IGBjb250cmliL3Ni
LWZpYmVyLzxhcmNoPi12b3BzLmxpc3BgIHwKK3wgQXNzZW1ibHkgICB8IGBzcmMvYXNzZW1ibHkv
PGFyY2g+L3RyYW1wcy5saXNwYCAgIHwKK3wgUnVudGltZSAgICB8IGBzcmMvcnVudGltZS88YXJj
aD4tZmliZXIue2MsIGh9YCAgIHwKK3wgICAgICAgICAgICB8IGBzcmMvcnVudGltZS9maWJlci57
YywgaH1gICAgICAgICAgIHwKKworQyBtYW5hZ2VzIGFsbG9jYXRpb24gb2Ygc3RhY2tzLCBHQyBp
bnRlZ3JhdGlvbiwgYmluZGluZyBzdGFjayBzd2FwLAorcHNldWRvLWF0b21pYyBlbnRyeSBhbmQg
ZXhpdCwgYW5kIGRlZmluZXMgcGVyLWFyY2hpdGVjdHVyZSBjb250ZXh0CitzdHJ1Y3R1cmVzIHRv
IGhvbGQgY2FsbGVlLXNhdmVkIHJlZ2lzdGVycyB0aGF0IGFyZSBwcmVzZXJ2ZWQgd2hlbiBhCitm
aWJlciBpcyBzd2l0Y2hlZC4KKworTGlzcCBtYW5hZ2VzIGFyZ3VtZW50IHZhbGlkYXRpb24sIGNh
dGNoIGFuZCB1bndpbmQgY2hhaW4gc2F2ZSBhbmQKK2luc3RhbGwsIGAqY3VycmVudC1maWJlcipg
LCByZS1zaWduYWxpbmcgY29uZGl0aW9ucyBjYXB0dXJlZCBieSB0aGUKK3RyYW1wb2xpbmUsIGFu
ZCBkZWZpbmVzIHRoZSBWT1AgdGhhdCBpbXBsZW1lbnRzIHJlZ2lzdGVyIHN3YXAgaW5saW5lCith
dCB0aGUgYHN3aXRjaC1maWJlcmAgY2FsbCBzaXRlLgorCisjIyBTdGFjayBsYXlvdXQKKworRmli
ZXJzJyBjb250cm9sIGFuZCBiaW5kaW5nIHN0YWNrcyBhcmUgbWFwcGVkIHJlZ2lvbnMgd2l0aCBn
dWFyZCBwYWdlcwordGhhdCBmb2xsb3cgdGhlIHBlci10aHJlYWQgb3ZlcmZsb3cgbGF5b3V0LiAg
T24KK2AjLWMtc3RhY2staXMtY29udHJvbC1zdGFja2AgdGFyZ2V0cyAoZS5nLiBhcm02NCkgdGhl
IExpc3AgY29udHJvbAorc3RhY2sgYW5kIHRoZSBDIHN0YWNrIGFyZSBzZXBhcmF0ZSByZWdpb25z
IHRoYXQgYm90aCBiZWxvbmcgdG8gYQorZmliZXIuCisKKyMjIEJpbmRpbmcgc3RhY2sgc3dhcAor
CitBIGJpbmRpbmcgc3RhY2sgZW50cnkgaXMgYCh2YWx1ZSwgdGxzLWluZGV4KWAsIHdoZXJlIHZh
bHVlIGlzIHRoZQorVExTIHZhbHVlIGhlbGQganVzdCBiZWZvcmUgdGhlIGJpbmRpbmcgd2FzIHB1
c2hlZC4gIGBOYCBuZXN0ZWQKK2JpbmRpbmdzIG9mIHRoZSBzYW1lIHN5bWJvbCBmb3JtIGEgY2hh
aW46IGVudHJ5IGBrYCBzdG9yZXMgYFZfe2stMX1gLAorYW5kIHRoZSBsaXZlIFRMUyBzbG90IGhv
bGRzIGBWX05gLgorCitgc3dhcF9iaW5kaW5nc197Zm9yd2FyZCxiYWNrd2FyZH1gIGluIGBmaWJl
ci5jYDoKKworVG8gc3VzcGVuZCBhIGZpYmVyLCB3YWxrIHRoZSBlbnRyaWVzIGZyb20gbmV3ZXN0
IHRvIG9sZGVzdCwgZXhjaGFuZ2luZworZWFjaCBlbnRyeSdzIHNhdmVkIHZhbHVlIHdpdGggdGhl
IGxpdmUgVExTLiAgQWZ0ZXIgdGhlIHBhc3MsIGVudHJ5IGBrYAoraG9sZHMgYFZfa2AgYW5kIFRM
UyBob2xkcyBgVl8wYC4gVG8gcmVzdW1lLCB3YWxrIG9sZGVzdCB0byBuZXdlc3QuCisKK1RoZSBg
OnRscy1sb2FkLWluZGlyZWN0YCBmZWF0dXJlIG1haW50YWlucyBhbiBpbmRpcmVjdCBjZWxsIHBl
ciBUTFMKK3Nsb3QgcG9pbnRpbmcgYXQgdGhlIGxpdmUgdmFsdWU7IGBleGNoYW5nZV9iaW5kaW5n
X3dpdGhfdGxzYCBtYWludGFpbnMKK2l0IGFsb25nc2lkZSB0aGUgVExTIGV4Y2hhbmdlLgorCisj
IyBQc2V1ZG8tYXRvbWljIHN3aXRjaCB3aW5kb3cKKworQSB0aHJlYWQgaXMgaW5jb25zaXN0ZW50
IGR1cmluZyBgc3dpdGNoLWZpYmVyYCwgc28gdGhlIHN3YXAgaXMgYnJhY2tldGVkCitieSBwc2V1
ZG8tYXRvbWljLiBUaGUgTGlzcCBzaGltIGVudGVycyBQQSBieSBjYWxsaW5nIHRoZSBDIGZ1bmN0
aW9uCitgc2JfZmliZXJfc3dpdGNoX3ByZXBgLCB3aGljaCBzdGFnZXMgQlNQIHN3YXAsIGNvbnRy
b2wgc3RhY2sgYm91bmRzCitzd2FwLCBzdGF0ZSBmbGlwLCBhbmQgYmluZGluZyBzdGFjayBzd2Fw
LgorCitUaGUgYCVzd2FwLXJlZ3NgIFZPUCB0aGVuIGRvZXMgdGhlIHJlZ2lzdGVyIGFuZCBTUCBz
d2FwLCBhbmQKK3RyYW5zZmVycyBjb250cm9sIHRvIHRoZSByZXN1bWluZyBmaWJlcidzIHN0YWNr
LiAgVGhlIHJlc3VtaW5nIHNpZGUsCithdCB0aGUgVk9QJ3MgYFJFU1VNRWAgbGFiZWwsIGV4aXRz
IFBBIGFuZCBjaGVja3MgdG8gc2VlIGlmIGEgc2lnbmFsCithcnJpdmVkIGR1cmluZyB0aGUgd2lu
ZG93LgorCitgc2JfZmliZXJfZXhpdF9wYWAgaXMgdGhlIHNhbWUgZXhpdCBwYXRoIGZvciB0aGUg
dHJhbXBvbGluZSdzCithdXRvLXJldHVybiBmbG93LCB3aGljaCBydW5zIGluIEMgYW5kIGNhbid0
IHVzZSB0aGUgVk9QJ3MgZXhpdC4KKworIyMgR0MKKworYGV4dHJhX3RocmVhZF9kYXRhLT5maWJl
cl9saXN0YCBlbnVtZXJhdGVzIGV2ZXJ5IHJlZ2lzdGVyZWQgZmliZXIgb24KK2EgdGhyZWFkOiBH
QyB3YWxrcyBpdC4KKworU3VzcGVuZGVkIGZpYmVycyBtYXJrZWQgcnVubmFibGUgb3IgbmV3IGhh
dmUgdGhlaXIgc2F2ZWQgU1AgcmFuZ2UKK2BbY3R4LnNwIC4uIHN0YWNrX2VuZClgIGFuZCB0aGVp
ciBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXJzCitjb25zZXJ2YXRpdmVseSBwaW5uZWQuICBPbiBhcm02
NCB0aGUgc2VwYXJhdGUgTGlzcCBjb250cm9sIHN0YWNrCitgW2Jhc2UsIGNzcF9zYXZlKWAgaXMg
cGlubmVkIHRoZSBzYW1lIHdheTsgdGhlIHJlZ2lvbiBhYm92ZQorYGNzcF9zYXZlYCBpcyBkZWFk
IGFuZCB1bnNjYW5uZWQuCisKK09uIGFybTY0LCBhIGNvbnNlcnZhdGl2ZSBzY2FubmVyIHdhbGtz
IGBbYmFzZSwgQ1NQX3NhdmUpYCBvbiBhCitzdXNwZW5kZWQgZmliZXIgYW5kIHBpbnMgYW55dGhp
bmcgcG9pbnRlci1zaGFwZWQuCisKK2BzYl9maWJlcl9saXNwX3N0YWNrX3N1c3BlbmRgIG1haW50
YWlucyBhIGBkaXJ0eV9oaWdoYCBwZXIgZmliZXI6IHRoZQorYWRkcmVzcyBzdWNoIHRoYXQgYFtk
aXJ0eV9oaWdoLCB1c2FibGVfZW5kKWAgaXMga25vd24gY2xlYW4uICBPbiBlYWNoCitzdXNwZW5k
OgorCistIGBDU1AgPT0gZGlydHlfaGlnaGAgKHRpZ2h0IHlpZWxkIGxvb3ApOiBubyBzY3J1Yi4K
Ky0gYENTUCA8IGRpcnR5X2hpZ2hgIChmaWJlciByZXR1cm5lZCB0byBhIHNoYWxsb3dlciBkZXB0
aCk6IHNjcnViCisgIGBbQ1NQLCBkaXJ0eV9oaWdoKWAuCistIGBDU1AgPiBkaXJ0eV9oaWdoYCAo
ZmliZXIgZ3JldyBhYm92ZSBwcmlvciBjbGVhbiBib3VuZGFyeSk6CisgIHNjcnViIGFsbCB0aGUg
d2F5IHRvIGB1c2FibGVfZW5kYC4KKworVGlnaHQteWllbGQgZmliZXJzIHBheSB6ZXJvIHNjcnVi
IGNvc3QgYWZ0ZXIgdGhlIGZpcnN0IHN1c3BlbmQuCisKKyMjIFRyYW1wb2xpbmUKKworV2hlbiBh
IGZpYmVyJ3MgZW50cnkgZnVuY3Rpb24gcmV0dXJucyBub3JtYWxseSwgY29udHJvbCByZS1lbnRl
cnMKK2BmaWJlcl90cmFtcF9jYCwgd2hpY2ggbWFya3MgdGhlIGZpYmVyIGRlYWQgYW5kIHN3aXRj
aGVzIHRvCitgc2VsZi0+cmV0dXJuX2ZpYmVyYCB2aWEgYHNiX2ZpYmVyX3N3aXRjaF9wcmVwYCAr
IHRoZSBhc3NlbWJseQorYGZpYmVyX3N3YXBfY29udGV4dGAuCisKK1RoZSByZXN1bWluZyBmaWJl
ciBleGl0cyBQQSB2aWEgaXRzIG93biBWT1AgdGFpbCBvcgorYHNiX2ZpYmVyX2V4aXRfcGFgLgor
CitUaGUgTGlzcCB3cmFwcGVyIGZvciB0aGUgcmVzdW1lZCBmaWJlciBpcyBmb3VuZCB2aWEKK2Aq
Y3VycmVudC1maWJlcipgLiBUaGUgTGlzcCBzaGltIHNldHMgaXQgdG8gYHRvYCBiZWZvcmUgdGhl
IHN3YXAsIGFuZAorVExTIHBlcnNpc3RzIGFjcm9zcyB0aGUgc3RhY2sgc3dhcCB1bmNoYW5nZWQu
CisKKyMjIEltYWdlIHN1cnZpdmFsCisKK0Egc2F2ZWQgY29yZSdzIHJlc3RhcnQgcmVzdG9yZXMg
TGlzcCB3cmFwcGVycyBidXQgbm90IHRoZSBDCitgc2JfZmliZXJfY3R4YCBzdHJ1Y3RzIHRoZXkg
cG9pbnQgYXQuICBBbiBgKmluaXQtaG9va3MqYCBjYWxsYmFjaworY2xlYXJzIGAqY3VycmVudC1m
aWJlcipgIG9uIHN0YXJ0dXA7IHVzZXIgY29kZSBob2xkaW5nIHdyYXBwZXJzIGFjcm9zcworYHNh
dmUtbGlzcC1hbmQtZGllYCBpcyBvbiBpdHMgb3duLCBsaWtlIGBzYi10aHJlYWRgLgpkaWZmIC0t
Z2l0IGEvY29udHJpYi9zYi1maWJlci9hcm02NC12b3BzLmxpc3AgYi9jb250cmliL3NiLWZpYmVy
L2FybTY0LXZvcHMubGlzcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjA4
MjE1MDZlNQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvc2ItZmliZXIvYXJtNjQtdm9wcy5s
aXNwCkBAIC0wLDAgKzEsMzggQEAKKzs7OzsgSW5saW5lIHJlZ2lzdGVyL1NQIHN3YXAgZm9yIFNX
SVRDSC1GSUJFUgorCisoaW4tcGFja2FnZSAiU0ItVk0iKQorCisoc2ItYzpkZWZrbm93biBzYi1m
aWJlcjo6JXN3YXAtcmVncworICAgIChzeXN0ZW0tYXJlYS1wb2ludGVyIHN5c3RlbS1hcmVhLXBv
aW50ZXIpICh2YWx1ZXMpCisgICAgKHNiLWM6YWx3YXlzLXRyYW5zbGF0YWJsZSkpCisKKyhkZWZp
bmUtdm9wIChmaWJlci1zd2FwLXJlZ3MpCisgICg6dHJhbnNsYXRlIHNiLWZpYmVyOjolc3dhcC1y
ZWdzKQorICAoOnBvbGljeSA6ZmFzdC1zYWZlKQorICAoOmFyZ3MgKGZyb20gOnNjcyAoc2FwLXJl
ZykgOnRhcmdldCBmcm9tLXRtcCkKKyAgICAgICAgICh0byA6c2NzIChzYXAtcmVnKSA6dGFyZ2V0
IHRvLXRtcCkpCisgICg6YXJnLXR5cGVzIHN5c3RlbS1hcmVhLXBvaW50ZXIgc3lzdGVtLWFyZWEt
cG9pbnRlcikKKyAgKDp0ZW1wb3JhcnkgKDpzYyBzYXAtcmVnIDpvZmZzZXQgbmwwLW9mZnNldAor
ICAgICAgICAgICAgICAgOmZyb20gKDphcmd1bWVudCAwKSA6dG8gKDpyZXN1bHQgMCkpCisgICAg
ICAgICAgICAgIGZyb20tdG1wKQorICAoOnRlbXBvcmFyeSAoOnNjIHNhcC1yZWcgOm9mZnNldCBu
bDEtb2Zmc2V0CisgICAgICAgICAgICAgICA6ZnJvbSAoOmFyZ3VtZW50IDEpIDp0byAoOnJlc3Vs
dCAwKSkKKyAgICAgICAgICAgICAgdG8tdG1wKQorICAoOnRlbXBvcmFyeSAoOnNjIHVuc2lnbmVk
LXJlZyA6b2Zmc2V0IG5sMi1vZmZzZXQpIHRlbXApCisgICg6Z2VuZXJhdG9yIDEwCisgICAgKG1v
dmUgZnJvbS10bXAgZnJvbSkKKyAgICAobW92ZSB0by10bXAgdG8pCisgICAgKGluc3QgYWRyIGxy
LXRuIFJFU1VNRSkKKyAgICAoZW1pdC1zYXZlLWZpYmVyLXJlZ3MgZnJvbS10bXAgdGVtcCkKKyAg
ICAoZW1pdC1yZXN0b3JlLWZpYmVyLXJlZ3MgdG8tdG1wIHRlbXApCisgICAgKGluc3QgcmV0KQor
ICAgIFJFU1VNRQorICAgIChpbnN0IGRtYiA6aXNoc3QpCisgICAgKGluc3Qgc3RyIHd6ci10bgor
ICAgICAgICAgIChAIHRocmVhZC10biAoKiBuLXdvcmQtYnl0ZXMgdGhyZWFkLXBzZXVkby1hdG9t
aWMtYml0cy1zbG90KSkpCisgICAgKGluc3QgbGRyICgzMi1iaXQtcmVnIHRlbXApCisgICAgICAg
ICAgKEAgdGhyZWFkLXRuICgrICgqIG4td29yZC1ieXRlcyB0aHJlYWQtcHNldWRvLWF0b21pYy1i
aXRzLXNsb3QpIDQpKSkKKyAgICAobGV0ICgobm90LWludGVycnVwdGVkIChnZW4tbGFiZWwpKSkK
KyAgICAgIChpbnN0IGNieiB0ZW1wIG5vdC1pbnRlcnJ1cHRlZCkKKyAgICAgIChpbnN0IGJyayBw
ZW5kaW5nLWludGVycnVwdC10cmFwKQorICAgICAgKGVtaXQtbGFiZWwgbm90LWludGVycnVwdGVk
KSkpKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9zYi1maWJlci9jb25zdGFudHMubGlzcCBiL2NvbnRy
aWIvc2ItZmliZXIvY29uc3RhbnRzLmxpc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwLi42ZGMxZjAzNmUKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3NiLWZpYmVyL2Nv
bnN0YW50cy5saXNwCkBAIC0wLDAgKzEsMjAgQEAKKzs7OyAtKi0gTGlzcCAtKi0KKworKCJmaWJl
ci5oIiAic3RkZGVmLmgiKQorCisoKDppbnRlZ2VyLW5vLWNoZWNrICtmaWJlci1uZXcrICAgICAg
IkZJQkVSX05FVyIpCisgKDppbnRlZ2VyLW5vLWNoZWNrICtmaWJlci1ydW5uYWJsZSsgIkZJQkVS
X1JVTk5BQkxFIikKKyAoOmludGVnZXItbm8tY2hlY2sgK2ZpYmVyLXJ1bm5pbmcrICAiRklCRVJf
UlVOTklORyIpCisgKDppbnRlZ2VyLW5vLWNoZWNrICtmaWJlci1kZWFkKyAgICAgIkZJQkVSX0RF
QUQiKQorCisgOzsgKG9ubHkgbWFwIHRoZSBmaWVsZHMgdGhlIExpc3Agc2hpbSBhY3R1YWxseSB0
b3VjaGVzKQorICg6c3RydWN0dXJlIGZpYmVyLWN0eCAoInN0cnVjdCBzYl9maWJlcl9jdHgiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgKChzaWduZWQgMzIpIHN0YXRlICJpbnQiICJzdGF0ZSIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXIgb3duZXIgInZvaWQgKiIgIm93bmVy
IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlciByZXR1cm4tZmliZXIgInZvaWQg
KiIgInJldHVybl9maWJlciIpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXIgY2F0
Y2ggImxpc3BvYmoiICJjdXJyZW50X2NhdGNoX2Jsb2NrIikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAoaW50ZWdlciB1bndpbmQgImxpc3BvYmoiICJjdXJyZW50X3Vud2luZF9wcm90ZWN0X2Js
b2NrIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlciBic3AgImxpc3BvYmogKiIg
ImJpbmRpbmdfc3RhY2tfcG9pbnRlciIpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVn
ZXIgYnMtc3RhcnQgImxpc3BvYmogKiIgImJpbmRpbmdfc3RhY2tfc3RhcnRfZm9yX3RocmVhZCIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgKGludGVnZXIgYnMtYmFzZSAibGlzcG9iaiAqIiAi
YmluZGluZ19zdGFja19iYXNlIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZWdlciBi
cy1lbmQgImxpc3BvYmogKiIgImJpbmRpbmdfc3RhY2tfZW5kIikpKSkKZGlmZiAtLWdpdCBhL2Nv
bnRyaWIvc2ItZmliZXIvZmliZXItZmZpLmxpc3AgYi9jb250cmliL3NiLWZpYmVyL2ZpYmVyLWZm
aS5saXNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uYmRkMGM1MTEwCi0t
LSAvZGV2L251bGwKKysrIGIvY29udHJpYi9zYi1maWJlci9maWJlci1mZmkubGlzcApAQCAtMCww
ICsxLDMwMCBAQAorOzs7OyAtKi0gIExpc3AgLSotCis7Ozs7Cis7Ozs7IHNiLWZpYmVyIEZGSSBi
aW5kaW5ncywgYWxpZW4tcm91dGluZXMsIGZpYmVyIHN0cnVjdCBhbmQgb3RoZXIKKzs7OzsgcnVu
dGltZSBzdXBwb3J0CisKKyhpbi1wYWNrYWdlIDpzYi1maWJlcikKKworIytzYi1maWJlcgorKHBy
b2duCisKKyhkZWZpbmUtYWxpZW4tcm91dGluZSAoInNiX2ZpYmVyX2NyZWF0ZSIgJWZpYmVyLWNy
ZWF0ZSkKKyAgICBzeXN0ZW0tYXJlYS1wb2ludGVyCisgIChzdGFjay1zaXplIHVuc2lnbmVkLWxv
bmcpCisgIChiaW5kaW5nLXN0YWNrLXNpemUgdW5zaWduZWQtbG9uZykpCisKKyhkZWZpbmUtYWxp
ZW4tcm91dGluZSAoInNiX2ZpYmVyX2NyZWF0ZV9tYWluIiAlZmliZXItY3JlYXRlLW1haW4pCisg
ICAgc3lzdGVtLWFyZWEtcG9pbnRlcgorICAodGhyZWFkIHN5c3RlbS1hcmVhLXBvaW50ZXIpKQor
CisoZGVmaW5lLWFsaWVuLXJvdXRpbmUgKCJzYl9maWJlcl9yZWxlYXNlIiAlZmliZXItcmVsZWFz
ZSkKKyAgICB2b2lkCisgIChmaWJlciBzeXN0ZW0tYXJlYS1wb2ludGVyKSkKKworKGRlZmluZS1h
bGllbi1yb3V0aW5lICgic2JfZmliZXJfcmVnaXN0ZXIiICVmaWJlci1yZWdpc3RlcikKKyAgICB2
b2lkCisgICh0aHJlYWQgc3lzdGVtLWFyZWEtcG9pbnRlcikKKyAgKGZpYmVyIHN5c3RlbS1hcmVh
LXBvaW50ZXIpKQorCisoZGVmaW5lLWFsaWVuLXJvdXRpbmUgKCJzYl9maWJlcl91bnJlZ2lzdGVy
IiAlZmliZXItdW5yZWdpc3RlcikKKyAgICB2b2lkCisgICh0aHJlYWQgc3lzdGVtLWFyZWEtcG9p
bnRlcikKKyAgKGZpYmVyIHN5c3RlbS1hcmVhLXBvaW50ZXIpKQorCisoZGVmaW5lLWFsaWVuLXJv
dXRpbmUgKCJzYl9maWJlcl9taWdyYXRlIiAlZmliZXItbWlncmF0ZSkKKyAgICBpbnQKKyAgKGZp
YmVyIHN5c3RlbS1hcmVhLXBvaW50ZXIpCisgIChkZXN0LXRocmVhZCBzeXN0ZW0tYXJlYS1wb2lu
dGVyKSkKKworKGRlZmluZS1hbGllbi1yb3V0aW5lICgic2JfZmliZXJfcHJlcGFyZSIgJWZpYmVy
LXByZXBhcmUpCisgICAgdm9pZAorICAoZmliZXIgc3lzdGVtLWFyZWEtcG9pbnRlcikKKyAgKGZu
IHN5c3RlbS1hcmVhLXBvaW50ZXIpCisgIChhcmcgc3lzdGVtLWFyZWEtcG9pbnRlcikpCisKKyhk
ZWZpbmUtYWxpZW4tcm91dGluZSAoInNiX2ZpYmVyX2NvbnRyb2xfc3RhY2tfc2l6ZV9ieXRlcyIK
KyAgICAgICAgICAgICAgICAgICAgICAgJWZpYmVyLWNvbnRyb2wtc3RhY2stc2l6ZS1ieXRlcykK
KyAgICB1bnNpZ25lZC1sb25nCisgIChmaWJlciBzeXN0ZW0tYXJlYS1wb2ludGVyKSkKKworKGRl
ZmluZS1hbGllbi1yb3V0aW5lICgic2JfZmliZXJfY29udHJvbF9zdGFja191c2VkX2J5dGVzIgor
ICAgICAgICAgICAgICAgICAgICAgICAlZmliZXItY29udHJvbC1zdGFjay11c2VkLWJ5dGVzKQor
ICAgIHVuc2lnbmVkLWxvbmcKKyAgKGZpYmVyIHN5c3RlbS1hcmVhLXBvaW50ZXIpKQorCis7Ozsg
LS0tIENvbmRpdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisKKyhkZWZpbmUtY29uZGl0aW9uIGZpYmVyLWVycm9yIChlcnJvcikK
KyAgKChmaWJlciA6aW5pdGFyZyA6ZmliZXIgOnJlYWRlciBmaWJlci1lcnJvci1maWJlciA6aW5p
dGZvcm0gbmlsKSkKKyAgKDpkb2N1bWVudGF0aW9uCisgICAiQmFzZSBjbGFzcyBmb3Igc2ItZmli
ZXIgZXJyb3JzIHRoYXQgY2FycnkgYSBmaWJlci4gU3ViY2xhc3NlcyBhcmUKK3RoZSByZWNvbW1l
bmRlZCB0YXJnZXRzIGZvciBIQU5ETEVSLUNBU0UgaW4gc2NoZWR1bGVyIGNvZGUuIikpCisKKyhk
ZWZpbmUtY29uZGl0aW9uIGRlYWQtZmliZXItZXJyb3IgKGZpYmVyLWVycm9yKSAoKQorICAoOmRv
Y3VtZW50YXRpb24KKyAgICJPcGVyYXRpb24gYXR0ZW1wdGVkIG9uIGEgZmliZXIgdGhhdCBoYXMg
YmVlbiByZWxlYXNlZCBvciBoYXMgcnVuIHRvCitjb21wbGV0aW9uLiIpCisgICg6cmVwb3J0IChs
YW1iZGEgKGMgc3RyZWFtKQorICAgICAgICAgICAgIChmb3JtYXQgc3RyZWFtICJmaWJlciB+UyBp
cyBkZWFkIG9yIHJlbGVhc2VkIgorICAgICAgICAgICAgICAgICAgICAgKGZpYmVyLWVycm9yLWZp
YmVyIGMpKSkpKQorCisoZGVmaW5lLWNvbmRpdGlvbiBwaW5uZWQtZmliZXItZXJyb3IgKGZpYmVy
LWVycm9yKQorICAoKGRlcHRoIDppbml0YXJnIDpkZXB0aCA6cmVhZGVyIHBpbm5lZC1maWJlci1l
cnJvci1kZXB0aCkpCisgICg6ZG9jdW1lbnRhdGlvbgorICAgIlNXSVRDSC1GSUJFUiB3YXMgYXNr
ZWQgdG8gc3VzcGVuZCBhIGZpYmVyIHdob3NlIHBpbiBjb3VudCBpcworbm9uemVyby4gU2NoZWR1
bGVycyBtYXkgQ0FUQ0ggYW5kIHJldHJ5IGxhdGVyLiIpCisgICg6cmVwb3J0IChsYW1iZGEgKGMg
c3RyZWFtKQorICAgICAgICAgICAgIChmb3JtYXQgc3RyZWFtICJmaWJlciB+UyBpcyBwaW5uZWQg
KGRlcHRoIH5EKTsgY2Fubm90IHN1c3BlbmQiCisgICAgICAgICAgICAgICAgICAgICAoZmliZXIt
ZXJyb3ItZmliZXIgYykKKyAgICAgICAgICAgICAgICAgICAgIChwaW5uZWQtZmliZXItZXJyb3It
ZGVwdGggYykpKSkpCisKKyhkZWZpbmUtY29uZGl0aW9uIGZpYmVyLXRocmVhZC1taXNtYXRjaC1l
cnJvciAoZmliZXItZXJyb3IpCisgICgocm9sZSA6aW5pdGFyZyA6cm9sZSA6cmVhZGVyIGZpYmVy
LXRocmVhZC1taXNtYXRjaC1lcnJvci1yb2xlKSkKKyAgKDpkb2N1bWVudGF0aW9uCisgICAiQSBz
d2l0Y2ggcmVmZXJlbmNlcyBhIGZpYmVyIG93bmVkIGJ5IGEgZGlmZmVyZW50IE9TIHRocmVhZC4g
QSBmaWJlcgoraXMgYm91bmQgdG8gaXRzIG93bmVyIHRocmVhZCAoY2hhbmdlYWJsZSB2aWEgRklC
RVItTUlHUkFURSk7IFJPTEUgaXMKKzpGUk9NIG9yIDpUTy4iKQorICAoOnJlcG9ydCAobGFtYmRh
IChjIHN0cmVhbSkKKyAgICAgICAgICAgICAoZm9ybWF0IHN0cmVhbSAiZmliZXIgflMgKH4ofkF+
KSkgaXMgb3duZWQgYnkgYSBkaWZmZXJlbnQgdGhyZWFkIgorICAgICAgICAgICAgICAgICAgICAg
KGZpYmVyLWVycm9yLWZpYmVyIGMpCisgICAgICAgICAgICAgICAgICAgICAoZmliZXItdGhyZWFk
LW1pc21hdGNoLWVycm9yLXJvbGUgYykpKSkpCisKKyhkZWZpbmUtY29uZGl0aW9uIGZpYmVyLXN0
YXRlLWVycm9yIChmaWJlci1lcnJvcikKKyAgKChzdGF0ZSAgICA6aW5pdGFyZyA6c3RhdGUgICAg
OnJlYWRlciBmaWJlci1zdGF0ZS1lcnJvci1zdGF0ZSkKKyAgIChleHBlY3RlZCA6aW5pdGFyZyA6
ZXhwZWN0ZWQgOnJlYWRlciBmaWJlci1zdGF0ZS1lcnJvci1leHBlY3RlZCkpCisgICg6ZG9jdW1l
bnRhdGlvbgorICAgIkZpYmVyIHdhcyBub3QgaW4gYW4gYWNjZXB0YWJsZSBzdGF0ZSBmb3IgdGhl
IHJlcXVlc3RlZCBvcGVyYXRpb24uCitTVEFURSBpcyB0aGUgYWN0dWFsIGtleXdvcmQgc3RhdGU7
IEVYUEVDVEVEIGlzIGEgbGlzdCBvZiBhY2NlcHRhYmxlCitzdGF0ZXMuIikKKyAgKDpyZXBvcnQg
KGxhbWJkYSAoYyBzdHJlYW0pCisgICAgICAgICAgICAgKGZvcm1hdCBzdHJlYW0gImZpYmVyIH5T
IGlzIGluIHN0YXRlIH5TLCBleHBlY3RlZCB+e35Tfl4gb3Igfn0iCisgICAgICAgICAgICAgICAg
ICAgICAoZmliZXItZXJyb3ItZmliZXIgYykKKyAgICAgICAgICAgICAgICAgICAgIChmaWJlci1z
dGF0ZS1lcnJvci1zdGF0ZSBjKQorICAgICAgICAgICAgICAgICAgICAgKGZpYmVyLXN0YXRlLWVy
cm9yLWV4cGVjdGVkIGMpKSkpKQorCisoZGVmaW5lLWNvbmRpdGlvbiBuby1jdXJyZW50LWZpYmVy
LWVycm9yIChmaWJlci1lcnJvcikKKyAgKChvcGVyYXRpb24gOmluaXRhcmcgOm9wZXJhdGlvbiA6
aW5pdGZvcm0gbmlsCisgICAgICAgICAgICAgIDpyZWFkZXIgbm8tY3VycmVudC1maWJlci1lcnJv
ci1vcGVyYXRpb24pKQorICAoOmRvY3VtZW50YXRpb24KKyAgICJBbiBvcGVyYXRpb24gcmVxdWly
aW5nIGEgY3VycmVudCBmaWJlciB3YXMgYXR0ZW1wdGVkIG9uIGEgdGhyZWFkIHdpdGgKK25vIGZp
YmVyIGJvdW5kIGluICpDVVJSRU5ULUZJQkVSKi4iKQorICAoOnJlcG9ydCAobGFtYmRhIChjIHN0
cmVhbSkKKyAgICAgICAgICAgICAoZm9ybWF0IHN0cmVhbSAifkBbfih+QX4pOiB+XW5vIGN1cnJl
bnQgZmliZXI7IGVzdGFibGlzaCBvbmUgfgord2l0aCBtYWtlLW1haW4tZmliZXIgb3Igd2l0aC1m
aWJlci10aHJlYWQiCisgICAgICAgICAgICAgICAgICAgICAobm8tY3VycmVudC1maWJlci1lcnJv
ci1vcGVyYXRpb24gYykpKSkpCisKKyhkZWNsYWltIChpbmxpbmUgJWZpYmVyLWN0eCkpCisoZGVm
dW4gJWZpYmVyLWN0eCAoc2FwKQorICAoZGVjbGFyZSAodHlwZSBzYi1zeXM6c3lzdGVtLWFyZWEt
cG9pbnRlciBzYXApKQorICAoc2ItYWxpZW46c2FwLWFsaWVuIHNhcCAoKiBmaWJlci1jdHgpKSkK
KworKGRlY2xhaW0gKGlubGluZSAlc3dpdGNoLXByZXApKQorKGRlZnVuICVzd2l0Y2gtcHJlcCAo
ZnJvbSB0bykKKyAgKGRlY2xhcmUgKHR5cGUgc3lzdGVtLWFyZWEtcG9pbnRlciBmcm9tIHRvKSkK
KyAgKGxvY2FsbHkgKGRlY2xhcmUgKG9wdGltaXplIChzYi1jOmFsaWVuLWZ1bmNhbGwtc2F2ZXMt
ZnAtYW5kLXBjIDApKSkKKyAgICAoYWxpZW4tZnVuY2FsbCAoc2ItYWxpZW46ZXh0ZXJuLWFsaWVu
ICJzYl9maWJlcl9zd2l0Y2hfcHJlcCIKKyAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uIHZv
aWQgc3lzdGVtLWFyZWEtcG9pbnRlciBzeXN0ZW0tYXJlYS1wb2ludGVyKSkKKyAgICAgICAgICAg
ICAgICAgICBmcm9tIHRvKSkKKyAgKHZhbHVlcykpCisKKyhkZWZzdHJ1Y3QgKGZpYmVyICg6Y29u
c3RydWN0b3IgJW1ha2UtZmliZXIpCisgICAgICAgICAgICAgICAgICAoOnByaW50LW9iamVjdCAl
cHJpbnQtZmliZXIpKQorICAoc2FwIChzYi1zeXM6aW50LXNhcCAwKSA6dHlwZSBzYi1zeXM6c3lz
dGVtLWFyZWEtcG9pbnRlcikKKyAgKGZ1bmN0aW9uIG5pbCA6dHlwZSAob3IgbnVsbCBmdW5jdGlv
bikpCisgIChwZW5kaW5nLWNvbmRpdGlvbiBuaWwgOnR5cGUgKG9yIG51bGwgY29uZGl0aW9uKSkK
KyAgKGVzY2FwZS1jb25kaXRpb24gbmlsIDp0eXBlIChvciBudWxsIGNvbmRpdGlvbikpCisgIChl
c2NhcGUtdGhyb3ctdGFnIG5pbCA6dHlwZSBzeW1ib2wpCisgIChlc2NhcGUtdGhyb3ctdmFsdWVz
IG5pbCA6dHlwZSBsaXN0KQorICAocGluLWNvdW50IDAgOnR5cGUgKGFuZCBmaXhudW0gdW5zaWdu
ZWQtYnl0ZSkpCisgIChyZXR1cm4tZmliZXIgbmlsIDp0eXBlIChvciBudWxsIGZpYmVyKSkKKyAg
KG5hbWUgbmlsIDp0eXBlIChvciBudWxsIHN0cmluZykpCisgICh0aHJlYWQgbmlsIDp0eXBlIChv
ciBudWxsIHNiLXRocmVhZDp0aHJlYWQpKQorICAodmFsdWUgbmlsIDp0eXBlIGxpc3QpCisgIChy
ZWxlYXNlZC1wIG5pbCA6dHlwZSBib29sZWFuKSkKKworKGRlY2xhaW0gKGlubGluZSAlZmliZXIt
c3RhdGUpKQorKGRlZnVuICVmaWJlci1zdGF0ZSAoZmliZXIpCisgICJSZWFkIHRoZSBDLXNpZGUg
c3RhdGUgd29yZCBvZiBGSUJFUiAoYW4gaW50ZWdlciArZmliZXItLi4uKyB2YWx1ZSkuIgorICAo
ZGVjbGFyZSAodHlwZSBmaWJlciBmaWJlcikpCisgIChmaWJlci1jdHgtc3RhdGUgKCVmaWJlci1j
dHggKGZpYmVyLXNhcCBmaWJlcikpKSkKKworKGRlY2xhaW0gKGlubGluZSBmaWJlci1tYWluLXAp
KQorKGRlZnVuIGZpYmVyLW1haW4tcCAoZmliZXIpCisgICJSZXR1cm4gVCBpZiBGSUJFUiByZXBy
ZXNlbnRzIGEgdGhyZWFkJ3Mgb3duIHN0YWNrIChjcmVhdGVkIGJ5CitNQUtFLU1BSU4tRklCRVIg
b3IgV0lUSC1GSUJFUi1USFJFQUQpLCBOSUwgaWYgRklCRVIgaXMgYSB3b3JrZXIgZmliZXIKK2Ny
ZWF0ZWQgYnkgTUFLRS1GSUJFUi4iCisgIChkZWNsYXJlICh0eXBlIGZpYmVyIGZpYmVyKSkKKyAg
KG51bGwgKGZpYmVyLWZ1bmN0aW9uIGZpYmVyKSkpCisKKyhkZWNsYWltIChpbmxpbmUgZGVsaXZl
ci1wZW5kaW5nIG1heWJlLWVzY2FwZSkpCisoZGVmdW4gZGVsaXZlci1wZW5kaW5nIChmaWJlcikK
KyAgIlBvc3QtcmVzdW1lIGRlbGl2ZXJ5IGhvb2suIElmIEZJQkVSIGhhcyBhbiBpbnRlcnJ1cHQt
c3RhZ2VkCitjb25kaXRpb24sIEVSUk9SIGl0IChhbmQgY2xlYXIgdGhlIHNsb3QpOyBvdGhlcndp
c2UgYSBuby1vcC4gQ2FsbGVkIG9uCit0aGUgZmliZXIgdGhhdCBpcyBhYm91dCB0byAocmUtKXJ1
biwgc28gaW50ZXJydXB0LWZpYmVyIHNlbWFudGljcyBmaXJlCitpbiB0aGUgdGFyZ2V0J3Mgb3du
IGNvbnRleHQuIgorICAoZGVjbGFyZSAodHlwZSBmaWJlciBmaWJlcikpCisgIChsZXQgKChjIChz
aGlmdGYgKGZpYmVyLXBlbmRpbmctY29uZGl0aW9uIGZpYmVyKSBuaWwpKSkKKyAgICAod2hlbiBj
IChlcnJvciBjKSkpKQorCisoZGVmdW4gbWF5YmUtZXNjYXBlIChmaWJlcikKKyAgIlBvc3QtcmVz
dW1lIGRlbGl2ZXJ5IGhvb2suIElmIEZJQkVSJ3MgZW50cnkgZnVuY3Rpb24gZXhpdGVkIHZpYSBh
bgordW5oYW5kbGVkIGVycm9yLCByZS1FUlJPUiB0aGF0IGNvbmRpdGlvbiBvbiB0aGUgcmVzdW1l
cidzIHN0YWNrIChhbmQKK2NsZWFyIHRoZSBzbG90KTsgb3RoZXJ3aXNlIGEgbm8tb3AuIENhbGxl
ZCBvbiB0aGUgcmVzdW1lciBzaWRlIHNvIHRoZQorZXNjYXBlZCBlcnJvciByZS1maXJlcyBpbiB0
aGUgcmVzdW1lcidzIGNvbnRleHQuIgorICAoZGVjbGFyZSAodHlwZSBmaWJlciBmaWJlcikpCisg
IChsZXQgKChjIChzaGlmdGYgKGZpYmVyLWVzY2FwZS1jb25kaXRpb24gZmliZXIpIG5pbCkpKQor
ICAgICh3aGVuIGMgKGVycm9yIGMpKSkpCisKKyhkZWZ1biBtYXliZS1lc2NhcGUtdGhyb3cgKGZp
YmVyKQorICAiUG9zdC1yZXN1bWUgZGVsaXZlcnkgaG9vay4gSWYgYSB0aHJlYWQtcm9vdCB1bndp
bmQgdGFnIGVzY2FwZWQKK0ZJQkVSJ3MgZW50cnkgZnVuY3Rpb24sIHJlLVRIUk9XIGl0IG9uIHRo
ZSByZXN1bWVyJ3Mgc3RhY2sgKGFuZCBjbGVhcgordGhlIHNsb3QpOyBvdGhlcndpc2UgYSBuby1v
cC4iCisgIChkZWNsYXJlICh0eXBlIGZpYmVyIGZpYmVyKSkKKyAgKGxldCAoKHRhZyAoc2hpZnRm
IChmaWJlci1lc2NhcGUtdGhyb3ctdGFnIGZpYmVyKSBuaWwpKSkKKyAgICAod2hlbiB0YWcKKyAg
ICAgICh0aHJvdyB0YWcgKHZhbHVlcy1saXN0IChzaGlmdGYgKGZpYmVyLWVzY2FwZS10aHJvdy12
YWx1ZXMgZmliZXIpIG5pbCkpKSkpKQorCisoZGVmdW4gJXByaW50LWZpYmVyIChmaWJlciBzdHJl
YW0pCisgIChwcmludC11bnJlYWRhYmxlLW9iamVjdCAoZmliZXIgc3RyZWFtIDp0eXBlIHQgOmlk
ZW50aXR5IHQpCisgICAgKGZvcm1hdCBzdHJlYW0gIn5AW35BIH5dfkEiIChmaWJlci1uYW1lIGZp
YmVyKSAoZmliZXItc3RhdGUgZmliZXIpKSkpCisKKyhkZWZ2YXIgKmN1cnJlbnQtZmliZXIqIG5p
bAorICAiRmliZXIgY3VycmVudGx5IHJ1bm5pbmcgb24gdGhpcyB0aHJlYWQsIG9yIE5JTC4iKQor
CisoZGVmaW5lLWFsaWVuLWNhbGxhYmxlIHNiLWZpYmVyLWxpc3AtZW50cnkgdm9pZAorICAgICgo
YXJnIHVuc2lnbmVkLWxvbmcpKQorICAobGV0ICgoZiAqY3VycmVudC1maWJlciopKQorICAgICh3
aGVuIChhbmQgZiAoZmliZXItZnVuY3Rpb24gZikpCisgICAgICAoYXNzZXJ0ICg9IGFyZyAoc2It
c3lzOnNhcC1pbnQgKGZpYmVyLXNhcCBmKSkpKQorICAgICAgKGxldCAoKHNiLWtlcm5lbDoqaGFu
ZGxlci1jbHVzdGVycyogc2Ita2VybmVsOjoqKmluaXRpYWwtaGFuZGxlci1jbHVzdGVycyoqKQor
ICAgICAgICAgICAgKHNiLWtlcm5lbDoqcmVzdGFydC1jbHVzdGVycyogbmlsKSkKKyAgICAgICAg
KGJsb2NrIGRvbmUKKyAgICAgICAgICAoZmxldCAoKHJ1biAoKQorICAgICAgICAgICAgICAgICAg
IDs7IE5vbi1lcnJvciBzaWduYWxzIHByb3BhZ2F0ZSBub3JtYWxseSBzbyBTSUdOQUwgZnJvbQor
ICAgICAgICAgICAgICAgICAgIDs7IGluc2lkZSB0aGUgZmliZXIgYmVoYXZlcyBsaWtlIFNJR05B
TCBhbnl3aGVyZSBlbHNlLgorICAgICAgICAgICAgICAgICAgIChoYW5kbGVyLWNhc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgKGxldCAoKHJ2LWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAobXVsdGlwbGUtdmFsdWUtbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAocHJvZ24gKGRlbGl2ZXItcGVuZGluZyBmKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGZ1bmNhbGwgKGZpYmVyLWZ1bmN0aW9uIGYpKSkpKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAod2hlbiAoZmliZXItcmV0dXJuLWZpYmVyIGYpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoc2V0ZiAoZmliZXItdmFsdWUgKGZpYmVyLXJldHVybi1maWJlciBm
KSkgcnYtbGlzdCkpKQorICAgICAgICAgICAgICAgICAgICAgKGVycm9yIChjKQorICAgICAgICAg
ICAgICAgICAgICAgICAoc2V0ZiAoZmliZXItZXNjYXBlLWNvbmRpdGlvbiBmKSBjKSkpCisgICAg
ICAgICAgICAgICAgICAgKHJldHVybi1mcm9tIGRvbmUpKSkKKyAgICAgICAgICAgIChtYWNyb2xl
dCAoKHdpdGgtcm9vdC1jYXRjaCAodGFnICZib2R5IGlubmVyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgIGAobGV0ICgodmFscyAobXVsdGlwbGUtdmFsdWUtbGlzdCAoY2F0Y2ggLHRhZyAsQGlu
bmVyKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRmIChmaWJlci1lc2NhcGUt
dGhyb3ctdGFnIGYpICx0YWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmli
ZXItZXNjYXBlLXRocm93LXZhbHVlcyBmKSB2YWxzKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChyZXR1cm4tZnJvbSBkb25lKSkpKQorICAgICAgICAgICAgICAod2l0aC1yb290LWNhdGNo
ICdzYi1pbXBsOjp0b3BsZXZlbC1jYXRjaGVyCisgICAgICAgICAgICAgICAgKHdpdGgtcm9vdC1j
YXRjaCAnc2ItaW1wbDo6JWVuZC1vZi10aGUtd29ybGQKKyAgICAgICAgICAgICAgICAgICh3aXRo
LXJvb3QtY2F0Y2ggJ3NiLXRocmVhZDo6JWFib3J0LXRocmVhZAorICAgICAgICAgICAgICAgICAg
ICAod2l0aC1yb290LWNhdGNoICdzYi10aHJlYWQ6OiVyZXR1cm4tZnJvbS10aHJlYWQKKyAgICAg
ICAgICAgICAgICAgICAgICAocnVuKSkpKSkpKSkpKSkpCisKKyhkZWNsYWltIChpbmxpbmUgJXRo
cmVhZC1zbG90IChzZXRmICV0aHJlYWQtc2xvdCkpKQorKGRlZnVuICV0aHJlYWQtc2xvdCAodGgt
c2FwIHNsb3QpCisgIChkZWNsYXJlICh0eXBlIHNiLXN5czpzeXN0ZW0tYXJlYS1wb2ludGVyIHRo
LXNhcCkgKHR5cGUgZml4bnVtIHNsb3QpKQorICAoc2Itc3lzOnNhcC1yZWYtd29yZCB0aC1zYXAg
KGFzaCBzbG90IHNiLXZtOndvcmQtc2hpZnQpKSkKKworKGRlZnVuIChzZXRmICV0aHJlYWQtc2xv
dCkgKHZhbCB0aC1zYXAgc2xvdCkKKyAgKGRlY2xhcmUgKHR5cGUgc2Itc3lzOnN5c3RlbS1hcmVh
LXBvaW50ZXIgdGgtc2FwKQorICAgICAgICAgICAodHlwZSBmaXhudW0gc2xvdCB2YWwpKQorICAo
c2V0ZiAoc2Itc3lzOnNhcC1yZWYtd29yZCB0aC1zYXAgKGFzaCBzbG90IHNiLXZtOndvcmQtc2hp
ZnQpKSB2YWwpKQorCisoZGVjbGFpbSAoaW5saW5lICVjdXJyZW50LXRocmVhZC1iaXRzKSkKKyhk
ZWZ1biAlY3VycmVudC10aHJlYWQtYml0cyAoKQorICAoc2Itc3lzOnNhcC1pbnQgKHNiLXRocmVh
ZDpjdXJyZW50LXRocmVhZC1zYXApKSkKKworKGRlZnZhciAqZmliZXItbGlzcC1lbnRyeS1zYXAq
CisgIChzYi1hbGllbjphbGllbi1zYXAgKGFsaWVuLWNhbGxhYmxlLWZ1bmN0aW9uICdzYi1maWJl
ci1saXNwLWVudHJ5KSkKKyAgIlNBUCBvZiB0aGUgU0ItRklCRVItTElTUC1FTlRSWSB0cmFtcG9s
aW5lLCByZXNvbHZlZCBvbmNlIGF0IGxvYWQKK3RpbWUgYW5kIHJldXNlZCBieSBldmVyeSBNQUtF
LUZJQkVSLiIpCisKKzs7OyAtLS0gJXN3aXRjaCBwaGFzZXMgLS0tCisKKyhkZWNsYWltIChpbmxp
bmUgY2hlY2stc3dpdGNoKSkKKyhkZWZ1biBjaGVjay1zd2l0Y2ggKGZyb20gdG8gZnJvbS1jdHgg
dG8tY3R4KQorICAiVmFsaWRhdGUgdGhhdCAqY3VycmVudCB0aHJlYWQqIG1heSBzd2l0Y2ggRlJP
TSAtPiBUTy4iCisgIChkZWNsYXJlICh0eXBlIGZpYmVyIGZyb20gdG8pKQorICAobGV0ICgodGgt
aW50ICglY3VycmVudC10aHJlYWQtYml0cykpKQorICAgICh1bmxlc3MgKD0gKGZpYmVyLWN0eC1v
d25lciBmcm9tLWN0eCkgdGgtaW50KQorICAgICAgKGVycm9yICdmaWJlci10aHJlYWQtbWlzbWF0
Y2gtZXJyb3IgOmZpYmVyIGZyb20gOnJvbGUgOmZyb20pKQorICAgICh1bmxlc3MgKD0gKGZpYmVy
LWN0eC1vd25lciB0by1jdHgpIHRoLWludCkKKyAgICAgIChlcnJvciAnZmliZXItdGhyZWFkLW1p
c21hdGNoLWVycm9yIDpmaWJlciB0byA6cm9sZSA6dG8pKSkKKyAgKHVubGVzcyAoPSAoZmliZXIt
Y3R4LXN0YXRlIGZyb20tY3R4KSArZmliZXItcnVubmluZyspCisgICAgKGVycm9yICdmaWJlci1z
dGF0ZS1lcnJvcgorICAgICAgICAgICA6ZmliZXIgZnJvbSA6c3RhdGUgKGZpYmVyLXN0YXRlIGZy
b20pIDpleHBlY3RlZCAnKDpydW5uaW5nKSkpCisgICh1bmxlc3MgKHplcm9wIChmaWJlci1waW4t
Y291bnQgZnJvbSkpCisgICAgKGVycm9yICdwaW5uZWQtZmliZXItZXJyb3IgOmZpYmVyIGZyb20g
OmRlcHRoIChmaWJlci1waW4tY291bnQgZnJvbSkpKQorICAobGV0ICgodHMgKGZpYmVyLWN0eC1z
dGF0ZSB0by1jdHgpKSkKKyAgICAodW5sZXNzIChvciAoPSB0cyArZmliZXItcnVubmFibGUrKSAo
PSB0cyArZmliZXItbmV3KykpCisgICAgICAoZXJyb3IgJ2ZpYmVyLXN0YXRlLWVycm9yCisgICAg
ICAgICAgICAgOmZpYmVyIHRvIDpzdGF0ZSAoZmliZXItc3RhdGUgdG8pIDpleHBlY3RlZCAnKDpy
dW5uYWJsZSA6bmV3KSkpKSkKKworKGRlY2xhaW0gKGlubGluZSBzdGFnZS1yZXR1cm4pKQorKGRl
ZnVuIHN0YWdlLXJldHVybiAoZnJvbSB0byBmcm9tLXNhcCB0by1jdHggdmFsdWVzKQorICAiUmVj
b3JkIHRoZSByZXR1cm4gcGF0aCBhbmQgc3RhZ2VkIHZhbHVlcyBvbiBUTyBiZWZvcmUgdGhlIHN3
YXAuCitTYWZlIHRvIGRvIG91dHNpZGUgUEE6IHRoZXNlIHRvdWNoIExpc3Atb3duZWQgc2xvdHMg
b25seS4iCisgIChkZWNsYXJlICh0eXBlIGZpYmVyIGZyb20gdG8pICh0eXBlIGxpc3QgdmFsdWVz
KSkKKyAgKHNldGYgKGZpYmVyLWN0eC1yZXR1cm4tZmliZXIgdG8tY3R4KSAoc2Itc3lzOnNhcC1p
bnQgZnJvbS1zYXApCisgICAgICAgIChmaWJlci1yZXR1cm4tZmliZXIgdG8pICAgICAgICBmcm9t
CisgICAgICAgIChmaWJlci12YWx1ZSB0bykgICAgICAgICAgICAgICB2YWx1ZXMpKQorCisoZGVj
bGFpbSAoaW5saW5lIHN3YXAtZnJhbWVzKSkKKyhkZWZ1biBzd2FwLWZyYW1lcyAodGgtc2FwIGZy
b20tY3R4IHRvLWN0eCkKKyAgIlNhdmUgRlJPTSdzIGNhdGNoL3Vud2luZCBmcmFtZXMsIGluc3Rh
bGwgVE8ncywgdGhlbiBpbnN0YWxsIFRPJ3MKK2JpbmRpbmctc3RhY2sgcG9pbnRlciBhbmQgYmFz
ZS4gUnVucyBpbnNpZGUgUEE6IGNhdGNoL3Vud2luZCBjaGFpbnMKK3BvaW50IGludG8gdGhlIHJ1
bm5pbmcgZmliZXIncyBzdGFjayBhbmQgbXVzdCBzd2FwIGF0b21pY2FsbHkgd2l0aCBTUC4iCisg
IChkZWNsYXJlICh0eXBlIHNiLXN5czpzeXN0ZW0tYXJlYS1wb2ludGVyIHRoLXNhcCkpCisgIChs
ZXQgKCh0YyAoJXRocmVhZC1zbG90IHRoLXNhcCBzYi12bTo6dGhyZWFkLWN1cnJlbnQtY2F0Y2gt
YmxvY2stc2xvdCkpCisgICAgICAgICh0dSAoJXRocmVhZC1zbG90IHRoLXNhcCBzYi12bTo6dGhy
ZWFkLWN1cnJlbnQtdW53aW5kLXByb3RlY3QtYmxvY2stc2xvdCkpKQorICAgIChzZXRmIChmaWJl
ci1jdHgtY2F0Y2ggZnJvbS1jdHgpICB0YworICAgICAgICAgIChmaWJlci1jdHgtdW53aW5kIGZy
b20tY3R4KSB0dQorICAgICAgICAgICgldGhyZWFkLXNsb3QgdGgtc2FwIHNiLXZtOjp0aHJlYWQt
Y3VycmVudC1jYXRjaC1ibG9jay1zbG90KQorICAgICAgICAgICAgKGZpYmVyLWN0eC1jYXRjaCB0
by1jdHgpCisgICAgICAgICAgKCV0aHJlYWQtc2xvdCB0aC1zYXAgc2Itdm06OnRocmVhZC1jdXJy
ZW50LXVud2luZC1wcm90ZWN0LWJsb2NrLXNsb3QpCisgICAgICAgICAgICAoZmliZXItY3R4LXVu
d2luZCB0by1jdHgpKSkKKyAgOzsgQlNQIGluc3RhbGw6IHByZXAgYWxyZWFkeSBjYXB0dXJlZCBG
Uk9NJ3MgQlNQLgorICAoc2V0ZiAoJXRocmVhZC1zbG90IHRoLXNhcCBzYi12bTo6dGhyZWFkLWJp
bmRpbmctc3RhY2stcG9pbnRlci1zbG90KQorICAgICAgICAgIChmaWJlci1jdHgtYnNwIHRvLWN0
eCkKKyAgICAgICAgKCV0aHJlYWQtc2xvdCB0aC1zYXAgc2Itdm06OnRocmVhZC1iaW5kaW5nLXN0
YWNrLXN0YXJ0LXNsb3QpCisgICAgICAgICAgKGZpYmVyLWN0eC1icy1zdGFydCB0by1jdHgpKSkK
KworKGRlY2xhaW0gKGlubGluZSBmbGlwLXN0YXRlcykpCisoZGVmdW4gZmxpcC1zdGF0ZXMgKGZy
b20tY3R4IHRvLWN0eCkKKyAgKHNldGYgKGZpYmVyLWN0eC1zdGF0ZSBmcm9tLWN0eCkgK2ZpYmVy
LXJ1bm5hYmxlKworICAgICAgICAoZmliZXItY3R4LXN0YXRlIHRvLWN0eCkgICArZmliZXItcnVu
bmluZyspKQorCispCmRpZmYgLS1naXQgYS9jb250cmliL3NiLWZpYmVyL2ZpYmVyLmxpc3AgYi9j
b250cmliL3NiLWZpYmVyL2ZpYmVyLmxpc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwLi5lOWUyNWQ5YTAKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3NiLWZpYmVyL2Zp
YmVyLmxpc3AKQEAgLTAsMCArMSwzNDggQEAKKzs7OzsgLSotICBMaXNwIC0qLQorOzs7OworOzs7
OyBzYi1maWJlciBBUEkKKworKGluLXBhY2thZ2UgOnNiLWZpYmVyKQorCisjK3NiLWZpYmVyCiso
cHJvZ24KKworKGRlZnZhciAqZGVmYXVsdC1maWJlci1zdGFjay1zaXplKiA2NTUzNgorICAiRGVm
YXVsdCBjb250cm9sIHN0YWNrIHNpemUgKGJ5dGVzKSBmb3IgTUFLRS1GSUJFUi4iKQorCisoZGVm
dmFyICpkZWZhdWx0LWZpYmVyLWJpbmRpbmctc3RhY2stc2l6ZSogODE5MgorICAiRGVmYXVsdCBi
aW5kaW5nIHN0YWNrIHNpemUgKGJ5dGVzKSBmb3IgTUFLRS1GSUJFUi4iKQorCisoZGVmbWFjcm8g
d2l0aC1maWJlci1zYXAgKChzYXAgYWxsb2MtZm9ybSkgJmJvZHkgYm9keSkKKyAgIkJpbmQgU0FQ
IHRvIEFMTE9DLUZPUk0uICBTaWduYWwgaWYgdGhlIFNBUCBpcyBudWxsOyBvbiBub24tbG9jYWwK
K2V4aXQgZnJvbSBCT0RZLCBjYWxsICVGSUJFUi1SRUxFQVNFIG9uIFNBUC4iCisgIChsZXQgKChv
ayAoZ2Vuc3ltICJPSyIpKSkKKyAgICBgKGxldCAoKCxzYXAgLGFsbG9jLWZvcm0pKQorICAgICAg
ICh3aGVuICh6ZXJvcCAoc2Itc3lzOnNhcC1pbnQgLHNhcCkpCisgICAgICAgICAoZXJyb3IgImZh
aWxlZCB0byBhbGxvY2F0ZSBmaWJlciIpKQorICAgICAgIChsZXQgKCxvaykKKyAgICAgICAgICh1
bndpbmQtcHJvdGVjdAorICAgICAgICAgICAgICAobXVsdGlwbGUtdmFsdWUtcHJvZzEgKHByb2du
ICxAYm9keSkgKHNldGYgLG9rIHQpKQorICAgICAgICAgICAodW5sZXNzICxvayAoJWZpYmVyLXJl
bGVhc2UgLHNhcCkpKSkpKSkKKworOzs7IC0tLSBMaWZlY3ljbGUgLS0tCisKKyhkZWZ1biAlaW5z
dGFsbC1maWJlciAoc2FwIGZ1bmN0aW9uIG5hbWUpCisgICJXcmFwIGFuIGFsbG9jYXRlZCBTQVAg
aW4gYSBmaWJlciBzdHJ1Y3QsIHByZXBhcmUgaXQgKGlmIGEgd29ya2VyKSwKK2FuZCByZWdpc3Rl
ciBpdCB3aXRoIHRoZSBjdXJyZW50IHRocmVhZC4gIENhbGxlciBhcnJhbmdlcworJUZJQkVSLVJF
TEVBU0Ugb24gZmFpbHVyZS4iCisgIChsZXQgKChmICglbWFrZS1maWJlciA6c2FwIHNhcCA6ZnVu
Y3Rpb24gZnVuY3Rpb24gOm5hbWUgbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgOnRocmVh
ZCBzYi10aHJlYWQ6KmN1cnJlbnQtdGhyZWFkKikpKQorICAgICh3aGVuIGZ1bmN0aW9uCisgICAg
ICAoJWZpYmVyLXByZXBhcmUgc2FwICpmaWJlci1saXNwLWVudHJ5LXNhcCogc2FwKSkKKyAgICAo
JWZpYmVyLXJlZ2lzdGVyIChzYi10aHJlYWQ6Y3VycmVudC10aHJlYWQtc2FwKSBzYXApCisgICAg
ZikpCisKKyhkZWZ1biBtYWtlLW1haW4tZmliZXIgKCZrZXkgbmFtZSkKKyAgIkNyZWF0ZSBhIGZp
YmVyIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB0aHJlYWQncyBvd24gc3RhY2sgYW5kIGJpbmQK
KypDVVJSRU5ULUZJQkVSKiB0byBpdC4gIE5BTUUgaXMgYSBzdHJpbmcgbGFiZWwgdXNlZCBieSBQ
UklOVC1PQkpFQ1QuIgorICAod2l0aC1maWJlci1zYXAgKHNhcCAoJWZpYmVyLWNyZWF0ZS1tYWlu
IChzYi10aHJlYWQ6Y3VycmVudC10aHJlYWQtc2FwKSkpCisgICAgKHNldGYgKmN1cnJlbnQtZmli
ZXIqICglaW5zdGFsbC1maWJlciBzYXAgbmlsIG5hbWUpKSkpCisKKyhkZWZtYWNybyB3aXRoLWZp
YmVyLXRocmVhZCAoKCZrZXkgbmFtZSkgJmJvZHkgYm9keSkKKyAgIlJlZ2lzdGVyIGEgbWFpbiBm
aWJlciBvbiB0aGUgY2FsbGluZyB0aHJlYWQgZm9yIHRoZSBkeW5hbWljIGV4dGVudAorb2YgQk9E
WSBhbmQgcmVsZWFzZSBpdCBvbiBleGl0LiAgQSBuby1vcCBpZiBCT0RZIGlzIHJlYWNoZWQgd2l0
aAorKkNVUlJFTlQtRklCRVIqIGFscmVhZHkgYm91bmQuICBOQU1FIGlzIGZvcndhcmRlZCB0byBN
QUtFLU1BSU4tRklCRVIuIgorICAobGV0ICgoY3JlYXRlZCAoZ2Vuc3ltICJDUkVBVEVEIikpKQor
ICAgIGAobGV0KiAoKCpjdXJyZW50LWZpYmVyKiAqY3VycmVudC1maWJlciopCisgICAgICAgICAg
ICAoLGNyZWF0ZWQgKHVubGVzcyAqY3VycmVudC1maWJlciogKG1ha2UtbWFpbi1maWJlciA6bmFt
ZSAsbmFtZSkpKSkKKyAgICAgICAodW53aW5kLXByb3RlY3QgKHByb2duICxAYm9keSkKKyAgICAg
ICAgICh3aGVuICxjcmVhdGVkIChyZWxlYXNlLWZpYmVyICxjcmVhdGVkKSkpKSkpCisKKyhkZWZ1
biBtYWtlLWZpYmVyIChmdW5jdGlvbiAma2V5IG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChzdGFjay1zaXplICpkZWZhdWx0LWZpYmVyLXN0YWNrLXNpemUqKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGJpbmRpbmctc3RhY2stc2l6ZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpkZWZhdWx0LWZpYmVyLWJpbmRpbmctc3RhY2stc2l6ZSopKQor
ICAiQ3JlYXRlIGEgZmliZXIgdGhhdCBydW5zIEZVTkNUSU9OICh6ZXJvLWFyZ3VtZW50KSB3aGVu
IGZpcnN0Citzd2l0Y2hlZCB0by4gIE5BTUUgaXMgYSBzdHJpbmcgbGFiZWwgdXNlZCBieSBQUklO
VC1PQkpFQ1QuCisKK1doZW4gRlVOQ1RJT04gcmV0dXJucywgdGhlIGZpYmVyIGlzIG1hcmtlZCBE
RUFEIGFuZCBjb250cm9sIHN3aXRjaGVzCitiYWNrIHRvIGl0cyBtb3N0IHJlY2VudCByZXN1bWVy
LCBkZWxpdmVyaW5nIEZVTkNUSU9OJ3MgcmV0dXJuIHZhbHVlCithcyB0aGF0IHJlc3VtZXIncyBT
V0lUQ0gtRklCRVIgdmFsdWUuCisKK1RoZSBjYWxsaW5nIHRocmVhZCBtdXN0IGFscmVhZHkgaGF2
ZSBhIG1haW4gZmliZXIgYm91bmQgaW4KKypDVVJSRU5ULUZJQkVSKi4gIFVzZSBNQUtFLU1BSU4t
RklCRVIgb3IgV0lUSC1GSUJFUi1USFJFQUQgdG8gZXN0YWJsaXNoCitvbmUgYmVmb3JlIGNhbGxp
bmcgTUFLRS1GSUJFUi4gIFNpZ25hbHMgYW4gZXJyb3Igb3RoZXJ3aXNlLgorCitGaWJlcnMgYXJl
IGF1dG8tcmVsZWFzZWQgd2hlbiB0aGVpciBvd25pbmcgdGhyZWFkIGV4aXRzOyBleHBsaWNpdAor
UkVMRUFTRS1GSUJFUiBpcyBvbmx5IG5lZWRlZCBpZiB5b3Ugd2FudCB0byByZWNsYWltIHJlc291
cmNlcyBzb29uZXIuIgorICAodW5sZXNzICpjdXJyZW50LWZpYmVyKgorICAgIChlcnJvciAnbm8t
Y3VycmVudC1maWJlci1lcnJvciA6b3BlcmF0aW9uICdtYWtlLWZpYmVyKSkKKyAgKHdpdGgtZmli
ZXItc2FwIChzYXAgKCVmaWJlci1jcmVhdGUgc3RhY2stc2l6ZSBiaW5kaW5nLXN0YWNrLXNpemUp
KQorICAgICglaW5zdGFsbC1maWJlciBzYXAgZnVuY3Rpb24gbmFtZSkpKQorCisoZGVmdW4gcmVs
ZWFzZS1maWJlciAoZmliZXIpCisgICJSZWxlYXNlIEZJQkVSLiAgRm9yIGEgd29ya2VyIGZpYmVy
LCB1bm1hcHMgaXRzIHN0YWNrcyBhbmQgZnJlZXMgdGhlCitib29ra2VlcGluZyBzdHJ1Y3QuICBG
b3IgYSBtYWluIGZpYmVyLCBqdXN0IGZyZWVzIHRoZSBzdHJ1Y3Q7IHRoZQordGhyZWFkJ3Mgb3du
IHN0YWNrIGFuZCBiaW5kaW5nIHN0YWNrIGFyZSB1bnRvdWNoZWQuICBTaWduYWxzCitGSUJFUi1T
VEFURS1FUlJPUiBpZiBGSUJFUiBpcyBhIHdvcmtlciB0aGF0IGlzIHN0aWxsIFJVTk5JTkcuCitS
ZWdpc3RlcmVkIGZpYmVycyBhcmUgcmVsZWFzZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZWlyIG93
bmluZyB0aHJlYWQKK2V4aXRzLiIKKyAgKHVubGVzcyAoZmliZXItcmVsZWFzZWQtcCBmaWJlcikK
KyAgICAod2hlbiAoYW5kIChub3QgKGZpYmVyLW1haW4tcCBmaWJlcikpCisgICAgICAgICAgICAg
ICAoPSAoJWZpYmVyLXN0YXRlIGZpYmVyKSArZmliZXItcnVubmluZyspKQorICAgICAgKGVycm9y
ICdmaWJlci1zdGF0ZS1lcnJvcgorICAgICAgICAgICAgIDpmaWJlciBmaWJlciA6c3RhdGUgOnJ1
bm5pbmcKKyAgICAgICAgICAgICA6ZXhwZWN0ZWQgJyg6bmV3IDpydW5uYWJsZSA6ZGVhZCkpKQor
ICAgICglZmliZXItcmVsZWFzZSAoc2hpZnRmIChmaWJlci1zYXAgZmliZXIpIChzYi1zeXM6aW50
LXNhcCAwKSkpCisgICAgKHNldGYgKGZpYmVyLXRocmVhZCBmaWJlcikgICAgIG5pbAorICAgICAg
ICAgIChmaWJlci1yZWxlYXNlZC1wIGZpYmVyKSB0KQorICAgICh3aGVuIChlcSAqY3VycmVudC1m
aWJlciogZmliZXIpCisgICAgICAoc2V0ZiAqY3VycmVudC1maWJlciogbmlsKSkpKQorCisoZGVm
dW4gZmliZXItc3RhdGUgKGZpYmVyKQorICAiUmV0dXJuIHRoZSBjdXJyZW50IHN0YXRlIG9mIEZJ
QkVSIGFzIGEga2V5d29yZDogOk5FVywgOlJVTk5BQkxFLAorOlJVTk5JTkcsIG9yIDpERUFELiIK
KyAgKGlmIChmaWJlci1yZWxlYXNlZC1wIGZpYmVyKQorICAgICAgOmRlYWQKKyAgICAgIChzdnJl
ZiAjLihjb2VyY2UgJyg6bmV3IDpydW5uYWJsZSA6cnVubmluZyA6ZGVhZCkgJ3NpbXBsZS12ZWN0
b3IpCisgICAgICAgICAgICAgKCVmaWJlci1zdGF0ZSBmaWJlcikpKSkKKworKGRlY2xhaW0gKGlu
bGluZSBmaWJlci1hbGl2ZS1wKSkKKyhkZWZ1biBmaWJlci1hbGl2ZS1wIChmaWJlcikKKyAgIlJl
dHVybiBUIGlmIEZJQkVSIGhhcyBub3QgZmluaXNoZWQgcnVubmluZyBhbmQgaGFzIG5vdCBiZWVu
CityZWxlYXNlZC4iCisgIChkZWNsYXJlICh0eXBlIGZpYmVyIGZpYmVyKSkKKyAgKGFuZCAobm90
IChmaWJlci1yZWxlYXNlZC1wIGZpYmVyKSkKKyAgICAgICAoLz0gKCVmaWJlci1zdGF0ZSBmaWJl
cikgK2ZpYmVyLWRlYWQrKSkpCisKKyhkZWNsYWltIChpbmxpbmUgY3VycmVudC1maWJlcikKKyAg
ICAgICAgIChmdHlwZSAoZnVuY3Rpb24gKCkgKG9yIG51bGwgZmliZXIpKSBjdXJyZW50LWZpYmVy
KSkKKyhkZWZ1biBjdXJyZW50LWZpYmVyICgpCisgICJSZXR1cm4gdGhlIGZpYmVyIGN1cnJlbnRs
eSBydW5uaW5nIG9uIHRoaXMgdGhyZWFkLCBvciBOSUwgaWYgbm8KK21haW4gZmliZXIgaXMgYm91
bmQuIgorICAqY3VycmVudC1maWJlciopCisKKzs7OyAtLS0gU3RhY2stdXNhZ2UgYWNjZXNzb3Jz
IC0tLQorCisoZGVmdW4gZmliZXItY29udHJvbC1zdGFjay1zaXplIChmaWJlcikKKyAgIkJ5dGVz
IG9mIHVzYWJsZSBjb250cm9sLXN0YWNrIHJlZ2lvbiBtYXBwZWQgZm9yIEZJQkVSLiAgRm9yIGEK
K3dvcmtlciBmaWJlciwgdGhlIHNpemUgcGFzc2VkIHRvIE1BS0UtRklCRVIgKHJvdW5kZWQgdXAg
dG8gYSBwYWdlKTsKK2ZvciBhIG1haW4gZmliZXIsIHRoZSBjYWxsaW5nIHRocmVhZCdzIGNvbnRy
b2wgc3RhY2suIgorICAoZGVjbGFyZSAodHlwZSBmaWJlciBmaWJlcikpCisgIChpZiAoZmliZXIt
cmVsZWFzZWQtcCBmaWJlcikKKyAgICAgIDAKKyAgICAgICglZmliZXItY29udHJvbC1zdGFjay1z
aXplLWJ5dGVzIChmaWJlci1zYXAgZmliZXIpKSkpCisKKyhkZWZ1biBmaWJlci1jb250cm9sLXN0
YWNrLXVzYWdlIChmaWJlcikKKyAgIkJ5dGVzIG9mIEZJQkVSJ3MgY29udHJvbCBzdGFjayBjdXJy
ZW50bHkgaW4gdXNlLiAgRm9yIGEgOlJVTk5BQkxFCitvciA6TkVXIGZpYmVyLCB0aGlzIGlzIHRo
ZSBkZXB0aCBhdCBzdXNwZW5zaW9uIChvciBpbml0aWFsIHRyYW1wb2xpbmUKK2ZyYW1lIGZvciA6
TkVXKS4gIEZvciBhIDpSVU5OSU5HIGZpYmVyLCB0aGlzIG1heSBiZSB0aGUgc2F2ZWQgU1AgZnJv
bQordGhlIGxhc3Qgc3VzcGVuZC4iCisgIChkZWNsYXJlICh0eXBlIGZpYmVyIGZpYmVyKSkKKyAg
KGlmIChmaWJlci1yZWxlYXNlZC1wIGZpYmVyKQorICAgICAgMAorICAgICAgKCVmaWJlci1jb250
cm9sLXN0YWNrLXVzZWQtYnl0ZXMgKGZpYmVyLXNhcCBmaWJlcikpKSkKKworKGRlZnVuIGZpYmVy
LWJpbmRpbmctc3RhY2stc2l6ZSAoZmliZXIpCisgICJCeXRlcyBvZiBiaW5kaW5nLXN0YWNrIHJl
Z2lvbiBtYXBwZWQgZm9yIEZJQkVSLiAgUmV0dXJucyAwIGZvciBhCittYWluIGZpYmVyIChpdHMg
YmluZGluZyBzdGFjayBpcyB0aGUgdGhyZWFkJ3Mgb3duLCBub3Qgb3duZWQgYnkgdGhlCitmaWJl
ciB3cmFwcGVyKS4iCisgIChkZWNsYXJlICh0eXBlIGZpYmVyIGZpYmVyKSkKKyAgKGlmIChmaWJl
ci1yZWxlYXNlZC1wIGZpYmVyKQorICAgICAgMAorICAgICAgKGxldCogKChjICglZmliZXItY3R4
IChmaWJlci1zYXAgZmliZXIpKSkKKyAgICAgICAgICAgICAoYiAoZmliZXItY3R4LWJzLWJhc2Ug
YykpCisgICAgICAgICAgICAgKGUgKGZpYmVyLWN0eC1icy1lbmQgYykpKQorICAgICAgICAoaWYg
KG9yICh6ZXJvcCBiKSAoemVyb3AgZSkpIDAgKC0gZSBiKSkpKSkKKworKGRlZnVuIGZpYmVyLWJp
bmRpbmctc3RhY2stdXNhZ2UgKGZpYmVyKQorICAiQnl0ZXMgb2YgYmluZGluZyBzdGFjayBjdXJy
ZW50bHkgaW4gdXNlIGJ5IEZJQkVSIChCU1AgbWludXMKK2JpbmRpbmctc3RhY2sgc3RhcnQpLiAg
V29ya3MgZm9yIGJvdGggd29ya2VyIGFuZCBtYWluIGZpYmVycy4iCisgIChkZWNsYXJlICh0eXBl
IGZpYmVyIGZpYmVyKSkKKyAgKGlmIChmaWJlci1yZWxlYXNlZC1wIGZpYmVyKQorICAgICAgMAor
ICAgICAgKGxldCogKChjICAgICAgICAoJWZpYmVyLWN0eCAoZmliZXItc2FwIGZpYmVyKSkpCisg
ICAgICAgICAgICAgKGJzcCAgICAgIChmaWJlci1jdHgtYnNwIGMpKQorICAgICAgICAgICAgIChi
cy1zdGFydCAoZmliZXItY3R4LWJzLXN0YXJ0IGMpKSkKKyAgICAgICAgKGlmIChvciAoemVyb3Ag
YnNwKSAoemVyb3AgYnMtc3RhcnQpKQorICAgICAgICAgICAgMAorICAgICAgICAgICAgKG1heCAw
ICgtIGJzcCBicy1zdGFydCkpKSkpKQorCisoZGVmdW4gJXN3aXRjaCAoZnJvbSB0byB2YWx1ZXMg
dXBkYXRlLXJldHVybi1wKQorICAiSW50ZXJuYWwgc3dpdGNoIHByaW1pdGl2ZS4gIFN1c3BlbmQg
RlJPTSBhbmQgcmVzdW1lIFRPIHdpdGggVkFMVUVTCitzdGFnZWQgb24gVE8ncyB2YWx1ZSBzbG90
LiAgSWYgVVBEQVRFLVJFVFVSTi1QLCBhbHNvIHNldCBUTydzCityZXR1cm4tZmliZXIgdG8gRlJP
TSAocmVzdW1lL3N3aXRjaCBzZW1hbnRpY3MpOyBvdGhlcndpc2UgbGVhdmUgaXQKK2Fsb25lICh5
aWVsZCBzZW1hbnRpY3MgLS0gcHJlc2VydmVzIFRPJ3MgcHJpb3IgY2FsbGVyIGNoYWluKS4iCisg
IChkZWNsYXJlICh0eXBlIGZpYmVyIGZyb20gdG8pCisgICAgICAgICAgICh0eXBlIGxpc3QgdmFs
dWVzKSkKKyAgKGNvbmQgKChmaWJlci1yZWxlYXNlZC1wIGZyb20pCisgICAgICAgICAoZXJyb3Ig
J2RlYWQtZmliZXItZXJyb3IgOmZpYmVyIGZyb20pKQorICAgICAgICAoKGZpYmVyLXJlbGVhc2Vk
LXAgdG8pCisgICAgICAgICAoZXJyb3IgJ2RlYWQtZmliZXItZXJyb3IgOmZpYmVyIHRvKSkpCisg
IChsZXQqICgoZnJvbS1zYXAgKGZpYmVyLXNhcCBmcm9tKSkKKyAgICAgICAgICh0by1zYXAgKGZp
YmVyLXNhcCB0bykpCisgICAgICAgICAodGgtc2FwIChzYi10aHJlYWQ6Y3VycmVudC10aHJlYWQt
c2FwKSkKKyAgICAgICAgIChmcm9tLWN0eCAoJWZpYmVyLWN0eCBmcm9tLXNhcCkpCisgICAgICAg
ICAodG8tY3R4ICglZmliZXItY3R4IHRvLXNhcCkpKQorICAgIChjaGVjay1zd2l0Y2ggZnJvbSB0
byBmcm9tLWN0eCB0by1jdHgpCisgICAgKGlmIHVwZGF0ZS1yZXR1cm4tcAorICAgICAgICAoc3Rh
Z2UtcmV0dXJuIGZyb20gdG8gZnJvbS1zYXAgdG8tY3R4IHZhbHVlcykKKyAgICAgICAgKHNldGYg
KGZpYmVyLXZhbHVlIHRvKSB2YWx1ZXMpKQorICAgIChzZXRmICpjdXJyZW50LWZpYmVyKiB0bykK
KyAgICAoJXN3aXRjaC1wcmVwIGZyb20tc2FwIHRvLXNhcCkKKyAgICAoc3dhcC1mcmFtZXMgdGgt
c2FwIGZyb20tY3R4IHRvLWN0eCkKKyAgICAoZmxpcC1zdGF0ZXMgZnJvbS1jdHggdG8tY3R4KQor
ICAgICglc3dhcC1yZWdzIGZyb20tc2FwIHRvLXNhcCkKKyAgICA7OyBDb250cm9sIHJlLWVudGVy
cyBoZXJlIHdoZW4gc29tZSBsYXRlciBzd2l0Y2ggcmVzdW1lcyBmcm9tLgorICAgIChzZXRmICpj
dXJyZW50LWZpYmVyKiBmcm9tKSkKKyAgOzsgUG9zdC1yZXN1bWUgZGVsaXZlcnkgKGVhY2ggYSBu
by1vcCB1bmxlc3MgaXRzIHNsb3QgaXMgc2V0KS4gIE9yZGVyIGlzCisgIDs7IGRlbGliZXJhdGU6
IGZyb20ncyBvd24gc3RhZ2VkIGludGVycnVwdCBmaXJlcyBmaXJzdCwgaW4gZnJvbSdzIGNvbnRl
eHQsCisgIDs7IGFuZCBpZiBpdCBkb2VzIGl0IHVud2luZHMgYW5kIHByZWVtcHRzIHRoZSByZXN0
IC0tIGFuIGludGVycnVwdCBvbiB0aGUKKyAgOzsgcmVzdW1lZCBmaWJlciBvdXRyYW5rcyBkZWxp
dmVyaW5nIHRvJ3MgZXNjYXBlLiAgdG8gaXMgYWxyZWFkeSBkZWFkIG9uY2UKKyAgOzsgaXQgaGFz
IGFuIGVzY2FwZSwgc28gYSBwcmVlbXB0ZWQgZXNjYXBlIGlzIGRyb3BwZWQsIG5vdCByZWRlbGl2
ZXJlZC4KKyAgKGRlbGl2ZXItcGVuZGluZyBmcm9tKQorICAobWF5YmUtZXNjYXBlIHRvKQorICAo
bWF5YmUtZXNjYXBlLXRocm93IHRvKQorICAodmFsdWVzLWxpc3QgKGZpYmVyLXZhbHVlIGZyb20p
KSkKKworKGRlZnVuIHN3aXRjaC1maWJlciAoZnJvbSB0byAmcmVzdCB2YWx1ZXMpCisgICJTdXNw
ZW5kIEZST00gYW5kIHJlc3VtZSBUTywgZGVsaXZlcmluZyBWQUxVRVMgdG8gdGhlIHJlc3VtZXIg
YXMKK211bHRpcGxlIHZhbHVlcy4gIFNldHMgVE8ncyByZXR1cm4tZmliZXIgdG8gRlJPTSwgc28g
YSBzdWJzZXF1ZW50CitZSUVMRC1GSUJFUiBpbnNpZGUgVE8gd2lsbCByZXR1cm4gdG8gRlJPTS4g
IFJldHVybnMgd2hhdGV2ZXIgdGhlIG5leHQKK3N3aXRjaCBiYWNrIHRvIEZST00gZGVsaXZlcnMs
IGFsc28gYXMgbXVsdGlwbGUgdmFsdWVzLiIKKyAgKGRlY2xhcmUgKHR5cGUgZmliZXIgZnJvbSB0
bykpCisgICglc3dpdGNoIGZyb20gdG8gdmFsdWVzIHQpKQorCisoZGVmdW4gcmVzdW1lLWZpYmVy
ICh0byAmcmVzdCB2YWx1ZXMpCisgICJTdXNwZW5kIHRoZSBjdXJyZW50IGZpYmVyIGFuZCByZXN1
bWUgVE8sIGRlbGl2ZXJpbmcgVkFMVUVTIGFzCittdWx0aXBsZSB2YWx1ZXMuICBFcXVpdmFsZW50
IHRvIChTV0lUQ0gtRklCRVIgKkNVUlJFTlQtRklCRVIqIFRPCisuIFZBTFVFUyk6IHNldHMgVE8n
cyByZXR1cm4tZmliZXIgdG8gKkNVUlJFTlQtRklCRVIqLCBzbyBZSUVMRC1GSUJFUgoraW5zaWRl
IFRPIGNvbWVzIGJhY2sgaGVyZS4KKworICBZSUVMRC1GSUJFUiAgLS0gc3VzcGVuZCBzZWxmLCBk
ZWxpdmVyIHRvIHRoZSByZXR1cm4gZmliZXIsIHByZXNlcnZlCisgICAgICAgICAgICAgICAgICB0
aGUgcmV0dXJuIGZpYmVyJ3Mgb3duIGNhbGxlciBjaGFpbi4KKyAgUkVTVU1FLUZJQkVSIC0tIHN1
c3BlbmQgc2VsZiwgZGVsaXZlciB0byBhIGNob3NlbiBmaWJlciwgbWFrZSBzZWxmCisgICAgICAg
ICAgICAgICAgICB0aGF0IGZpYmVyJ3MgcmV0dXJuIGZpYmVyLgorICBTV0lUQ0gtRklCRVIgLS0g
ZXhwbGljaXQgRlJPTS9UTyBmb3JtIG9mIFJFU1VNRS1GSUJFUi4iCisgIChkZWNsYXJlICh0eXBl
IGZpYmVyIHRvKSkKKyAgKGxldCAoKGZyb20gKmN1cnJlbnQtZmliZXIqKSkKKyAgICAodW5sZXNz
IGZyb20KKyAgICAgIChlcnJvciAnbm8tY3VycmVudC1maWJlci1lcnJvciA6b3BlcmF0aW9uICdy
ZXN1bWUtZmliZXIpKQorICAgICglc3dpdGNoIGZyb20gdG8gdmFsdWVzIHQpKSkKKworKGRlZm1h
Y3JvIHdpdGgtZmliZXIgKCh2YXIgZnVuY3Rpb24gJnJlc3QgbWFrZS1hcmdzKSAmYm9keSBib2R5
KQorICAiQ3JlYXRlIGEgZmliZXIsIGJpbmQgaXQgdG8gVkFSLCBleGVjdXRlIEJPRFksIHJlbGVh
c2Ugb24gZXhpdC4iCisgIGAobGV0ICgoLHZhciAobWFrZS1maWJlciAsZnVuY3Rpb24gLEBtYWtl
LWFyZ3MpKSkKKyAgICAgKHVud2luZC1wcm90ZWN0IChwcm9nbiAsQGJvZHkpCisgICAgICAgKHJl
bGVhc2UtZmliZXIgLHZhcikpKSkKKworKGRlZnVuIHlpZWxkLWZpYmVyICgmcmVzdCB2YWx1ZXMp
CisgICJTd2l0Y2ggZnJvbSB0aGUgY3VycmVudCBmaWJlciB0byBpdHMgcmV0dXJuIGZpYmVyLCBk
ZWxpdmVyaW5nIFZBTFVFUworYXMgbXVsdGlwbGUgdmFsdWVzIHRvIHRoZSByZXN1bWVyLiAgUmV0
dXJucyB3aGF0ZXZlciB0aGUgbmV4dAorc3dpdGNoLWluIGRlbGl2ZXJzIChhcyBtdWx0aXBsZSB2
YWx1ZXMpLiAgRXJyb3JzIGlmIHRoZSBjdXJyZW50IGZpYmVyCitoYXMgbm8gcmVjb3JkZWQgcmV0
dXJuIGZpYmVyIChuZXZlciByZXN1bWVkKS4iCisgIChsZXQgKChzZWxmICpjdXJyZW50LWZpYmVy
KikpCisgICAgKHVubGVzcyBzZWxmCisgICAgICAoZXJyb3IgJ25vLWN1cnJlbnQtZmliZXItZXJy
b3IgOm9wZXJhdGlvbiAneWllbGQtZmliZXIpKQorICAgIChsZXQgKCh0YXJnZXQgKGZpYmVyLXJl
dHVybi1maWJlciBzZWxmKSkpCisgICAgICAodW5sZXNzIHRhcmdldAorICAgICAgICAoZXJyb3Ig
ImZpYmVyIH5TIGhhcyBubyByZXR1cm4gZmliZXIgKG5ldmVyIHJlc3VtZWQpIiBzZWxmKSkKKyAg
ICAgICglc3dpdGNoIHNlbGYgdGFyZ2V0IHZhbHVlcyBuaWwpKSkpCisKKyhkZWZ1biBqb2luLWZp
YmVyIChmaWJlcikKKyAgIlJlc3VtZSBGSUJFUiBmcm9tIHRoZSBjdXJyZW50IGZpYmVyIHVudGls
IGl0IHJ1bnMgdG8gY29tcGxldGlvbiwKK2FuZCByZXR1cm4gaXRzIGVudHJ5LWZ1bmN0aW9uIHZh
bHVlcy4gIEZJQkVSIG11c3QgYmUgUlVOTkFCTEUgb3IgTkVXCithbmQgb24gdGhlIGN1cnJlbnQg
dGhyZWFkLiIKKyAgKGRlY2xhcmUgKHR5cGUgZmliZXIgZmliZXIpKQorICAobG9vcCB3aXRoIHZz
CisgICAgICAgIHdoaWxlIChmaWJlci1hbGl2ZS1wIGZpYmVyKQorICAgICAgICBkbyAoc2V0ZiB2
cyAobXVsdGlwbGUtdmFsdWUtbGlzdCAocmVzdW1lLWZpYmVyIGZpYmVyKSkpCisgICAgICAgIGZp
bmFsbHkgKHJldHVybiAodmFsdWVzLWxpc3QgdnMpKSkpCisKKyhkZWZ1biBpbnRlcnJ1cHQtZmli
ZXIgKGZpYmVyIGNvbmRpdGlvbikKKyAgIlN0YWdlIENPTkRJVElPTiB0byBiZSBzaWduYWxsZWQg
aW4gRklCRVIgb24gaXRzIG5leHQgcmVzdW1lLgorQ29vcGVyYXRpdmUgLS0gbm90aGluZyBoYXBw
ZW5zIHVudGlsIFNXSVRDSC1GSUJFUiBkZWxpdmVycyBjb250cm9sCitpbnRvIEZJQkVSLCBhdCB3
aGljaCBwb2ludCBDT05ESVRJT04gaXMgc2lnbmFsbGVkIGluIHRoZSBmaWJlcidzIG93bgorY29u
dGV4dC4gIEEgTkVXIGZpYmVyIGlzIGVmZmVjdGl2ZWx5IGNhbmNlbGxlZCAodGhlIGNvbmRpdGlv
biBmaXJlcworYmVmb3JlIGl0cyBlbnRyeSBmdW5jdGlvbiBydW5zKS4iCisgIChkZWNsYXJlICh0
eXBlIGZpYmVyIGZpYmVyKQorICAgICAgICAgICAodHlwZSBjb25kaXRpb24gY29uZGl0aW9uKSkK
KyAgKHVubGVzcyAoZmliZXItYWxpdmUtcCBmaWJlcikKKyAgICAoZXJyb3IgJ2RlYWQtZmliZXIt
ZXJyb3IgOmZpYmVyIGZpYmVyKSkKKyAgKHNldGYgKGZpYmVyLXBlbmRpbmctY29uZGl0aW9uIGZp
YmVyKSBjb25kaXRpb24pCisgIGZpYmVyKQorCisoZGVmbWFjcm8gd2l0aC1pbnRlcnJ1cHRlZC1m
aWJlciAoKGZpYmVyIGNvbmRpdGlvbikgJmJvZHkgYm9keSkKKyAgIlN0YWdlIENPTkRJVElPTiBv
biBGSUJFUiBmb3IgZGVsaXZlcnkgb24gaXRzIG5leHQgcmVzdW1lLCB0aGVuCitleGVjdXRlIEJP
RFkuICBPbiBleGl0IChub3JtYWwgb3Igbm9uLWxvY2FsKSwgaWYgdGhlIHN0YWdlZCBjb25kaXRp
b24KK2hhcyBub3QgYmVlbiBjb25zdW1lZCBieSBhIHJlc3VtZSBpdCBpcyBjbGVhcmVkLiIKKyAg
KGxldCAoKGYgKGdlbnN5bSAiRklCRVIiKSkKKyAgICAgICAgKGMgKGdlbnN5bSAiQ09ORElUSU9O
IikpKQorICAgIGAobGV0ICgoLGYgLGZpYmVyKQorICAgICAgICAgICAoLGMgLGNvbmRpdGlvbikp
CisgICAgICAgKGludGVycnVwdC1maWJlciAsZiAsYykKKyAgICAgICAodW53aW5kLXByb3RlY3Qg
KHByb2duICxAYm9keSkKKyAgICAgICAgICh3aGVuIChlcSAoZmliZXItcGVuZGluZy1jb25kaXRp
b24gLGYpICxjKQorICAgICAgICAgICAoc2V0ZiAoZmliZXItcGVuZGluZy1jb25kaXRpb24gLGYp
IG5pbCkpKSkpKQorCisoZGVjbGFpbSAoaW5saW5lIGZpYmVyLWNvbmRpdGlvbikpCisoZGVmdW4g
ZmliZXItY29uZGl0aW9uIChmaWJlcikKKyAgIlRoZSBjb25kaXRpb24gc3RhZ2VkIGZvciBGSUJF
UidzIG5leHQgcmVzdW1lIGJ5IElOVEVSUlVQVC1GSUJFUiwgb3IKK05JTC4gIENsZWFyZWQgd2hl
biBGSUJFUiBjb25zdW1lcyBpdCBvbiByZXN1bWUuICAoQW4gZW50cnktZnVuY3Rpb24KK2VzY2Fw
ZSBpcyBhIHNlcGFyYXRlIGNoYW5uZWwsIHJlLXNpZ25hbGVkIGluIHRoZSByZXN1bWVyIHJhdGhl
ciB0aGFuCitpbiBGSUJFUiwgYW5kIGlzIG5vdCB2aXNpYmxlIGhlcmUuKSIKKyAgKGRlY2xhcmUg
KHR5cGUgZmliZXIgZmliZXIpKQorICAoZmliZXItcGVuZGluZy1jb25kaXRpb24gZmliZXIpKQor
CisoZGVjbGFpbSAoaW5saW5lIGZpYmVyLXBpbm5lZC1wKSkKKyhkZWZ1biBmaWJlci1waW5uZWQt
cCAoZmliZXIpCisgICJSZXR1cm4gVCBpZiBGSUJFUidzIHBpbiBjb3VudCBpcyBncmVhdGVyIHRo
YW4gemVyby4gU1dJVENILUZJQkVSCit3aWxsIG9ubHkgc3VzcGVuZCBhIGZpYmVyIHdpdGggYSBw
aW4gY291bnQgb2YgemVyby4iCisgIChkZWNsYXJlICh0eXBlIGZpYmVyIGZpYmVyKSkKKyAgKHBs
dXNwIChmaWJlci1waW4tY291bnQgZmliZXIpKSkKKworKGRlZm1hY3JvIHdpdGgtZmliZXItcGlu
bmVkICgoKSAmYm9keSBib2R5KQorICAiSW5jcmVtZW50IHRoZSBjdXJyZW50IGZpYmVyJ3MgcGlu
IGNvdW50IGZvciB0aGUgZHluYW1pYyBleHRlbnQgb2YKK0JPRFk7IFNXSVRDSC1GSUJFUiByZWZ1
c2VzIHRvIHN1c3BlbmQgYSBwaW5uZWQgZmliZXIuICBQaW5zIG5lc3QuIgorICAobGV0ICgoZiAo
Z2Vuc3ltICJQSU5ORUQtRklCRVIiKSkpCisgICAgYChsZXQgKCgsZiAob3IgKmN1cnJlbnQtZmli
ZXIqCisgICAgICAgICAgICAgICAgICAgKGVycm9yICduby1jdXJyZW50LWZpYmVyLWVycm9yCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIDpvcGVyYXRpb24gJ3dpdGgtZmliZXItcGlubmVkKSkp
KQorICAgICAgIChpbmNmIChmaWJlci1waW4tY291bnQgLGYpKQorICAgICAgICh1bndpbmQtcHJv
dGVjdCAocHJvZ24gLEBib2R5KQorICAgICAgICAgKGRlY2YgKGZpYmVyLXBpbi1jb3VudCAsZikp
KSkpKQorCis7OzsgLS0tIENyb3NzLXRocmVhZCBtaWdyYXRpb24gLS0tCisKKyhkZWZ1biBmaWJl
ci1taWdyYXRlIChmaWJlciBkZXN0LXRocmVhZCkKKyAgIkF0b21pY2FsbHkgbW92ZSBGSUJFUidz
IG93bmVyc2hpcCBmcm9tIGl0cyBjdXJyZW50IG93bmVyIHRocmVhZCB0bworREVTVC1USFJFQUQu
ICBBZnRlciB0aGlzIHJldHVybnMsIEZJQkVSIG1heSBiZSBzd2l0Y2hlZCBpbnRvIG9ubHkgZnJv
bQorREVTVC1USFJFQUQuCisKK0ZJQkVSIG11c3QgYmUgaW4gc3RhdGUgOlJVTk5BQkxFLiIKKyAg
KGRlY2xhcmUgKHR5cGUgZmliZXIgZmliZXIpCisgICAgICAgICAgICh0eXBlIHNiLXRocmVhZDp0
aHJlYWQgZGVzdC10aHJlYWQpKQorICAod2hlbiAoZmliZXItcmVsZWFzZWQtcCBmaWJlcikKKyAg
ICAoZXJyb3IgJ2RlYWQtZmliZXItZXJyb3IgOmZpYmVyIGZpYmVyKSkKKyAgKGxldCAoKHN0YXRl
ICglZmliZXItc3RhdGUgZmliZXIpKSkKKyAgICAodW5sZXNzICg9IHN0YXRlICtmaWJlci1ydW5u
YWJsZSspCisgICAgICAoZXJyb3IgJ2ZpYmVyLXN0YXRlLWVycm9yCisgICAgICAgICAgICAgOmZp
YmVyIGZpYmVyCisgICAgICAgICAgICAgOnN0YXRlIChmaWJlci1zdGF0ZSBmaWJlcikKKyAgICAg
ICAgICAgICA6ZXhwZWN0ZWQgJyg6cnVubmFibGUpKSkpCisgIChsZXQgKChkZXN0LXNhcCAoc2It
dGhyZWFkOjp0aHJlYWQtcHJpbWl0aXZlLXRocmVhZCBkZXN0LXRocmVhZCkpKQorICAgICh3aGVu
ICh6ZXJvcCBkZXN0LXNhcCkKKyAgICAgIChlcnJvciAiZGVzdGluYXRpb24gdGhyZWFkIGlzIG5v
dCBsaXZlIikpCisgICAgKGxldCAoKHJjICglZmliZXItbWlncmF0ZSAoZmliZXItc2FwIGZpYmVy
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNiLXN5czppbnQtc2FwIGRlc3Qtc2Fw
KSkpKQorICAgICAgKGNhc2UgcmMKKyAgICAgICAgKDAKKyAgICAgICAgIChzZXRmIChmaWJlci10
aHJlYWQgZmliZXIpIGRlc3QtdGhyZWFkKQorICAgICAgICAgZmliZXIpCisgICAgICAgICgtMQor
ICAgICAgICAgKGVycm9yICdmaWJlci1zdGF0ZS1lcnJvcgorICAgICAgICAgICAgICAgIDpmaWJl
ciBmaWJlcgorICAgICAgICAgICAgICAgIDpzdGF0ZSAoZmliZXItc3RhdGUgZmliZXIpCisgICAg
ICAgICAgICAgICAgOmV4cGVjdGVkICcoOnJ1bm5hYmxlKSkpCisgICAgICAgICgtMgorICAgICAg
ICAgKGVycm9yICdmaWJlci1lcnJvciA6ZmliZXIgZmliZXIpKQorICAgICAgICAodAorICAgICAg
ICAgKGVycm9yICJ1bmV4cGVjdGVkIHJldHVybiBjb2RlIH5EIGZyb20gZmliZXIgbWlncmF0aW9u
IiByYykpKSkpKQorCispCmRpZmYgLS1naXQgYS9jb250cmliL3NiLWZpYmVyL3BhY2thZ2UubGlz
cCBiL2NvbnRyaWIvc2ItZmliZXIvcGFja2FnZS5saXNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMC4uNGI4OGVjYjhhCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9zYi1m
aWJlci9wYWNrYWdlLmxpc3AKQEAgLTAsMCArMSw1NCBAQAorOzs7OyAtKi0gIExpc3AgLSotCisK
KyhkZWZwYWNrYWdlIDpzYi1maWJlcgorICAoOnVzZSA6Y2wgOnNiLWFsaWVuIDpzYi1leHQpCisg
ICg6ZXhwb3J0CisgICAjOipjdXJyZW50LWZpYmVyKgorICAgIzpjdXJyZW50LWZpYmVyCisgICAj
OipkZWZhdWx0LWZpYmVyLXN0YWNrLXNpemUqCisgICAjOipkZWZhdWx0LWZpYmVyLWJpbmRpbmct
c3RhY2stc2l6ZSoKKyAgICM6ZmliZXIKKyAgICM6ZmliZXJwCisgICAjOm1ha2UtZmliZXIKKyAg
ICM6bWFrZS1tYWluLWZpYmVyCisgICAjOndpdGgtZmliZXItdGhyZWFkCisgICAjOnJlbGVhc2Ut
ZmliZXIKKyAgICM6ZmliZXItbmFtZQorICAgIzpmaWJlci10aHJlYWQKKyAgICM6ZmliZXItcmV0
dXJuLWZpYmVyCisgICAjOnN3aXRjaC1maWJlcgorICAgIzpyZXN1bWUtZmliZXIKKyAgICM6eWll
bGQtZmliZXIKKyAgICM6am9pbi1maWJlcgorICAgIzppbnRlcnJ1cHQtZmliZXIKKyAgICM6d2l0
aC1pbnRlcnJ1cHRlZC1maWJlcgorICAgIzpmaWJlci1jb25kaXRpb24KKyAgICM6ZmliZXItYWxp
dmUtcAorICAgIzpmaWJlci1tYWluLXAKKyAgICM6ZmliZXItcmVsZWFzZWQtcAorICAgIzpmaWJl
ci1zdGF0ZQorICAgIzpmaWJlci1jb250cm9sLXN0YWNrLXNpemUKKyAgICM6ZmliZXItY29udHJv
bC1zdGFjay11c2FnZQorICAgIzpmaWJlci1iaW5kaW5nLXN0YWNrLXNpemUKKyAgICM6ZmliZXIt
YmluZGluZy1zdGFjay11c2FnZQorICAgIzp3aXRoLWZpYmVyCisgICAjOndpdGgtZmliZXItcGlu
bmVkCisgICAjOmZpYmVyLXBpbm5lZC1wCisgICAjOmZpYmVyLXBpbi1jb3VudAorICAgIzpmaWJl
ci1taWdyYXRlCisgICA7OyBDb25kaXRpb25zCisgICAjOmZpYmVyLWVycm9yCisgICAjOmZpYmVy
LWVycm9yLWZpYmVyCisgICAjOmRlYWQtZmliZXItZXJyb3IKKyAgICM6cGlubmVkLWZpYmVyLWVy
cm9yCisgICAjOnBpbm5lZC1maWJlci1lcnJvci1kZXB0aAorICAgIzpmaWJlci10aHJlYWQtbWlz
bWF0Y2gtZXJyb3IKKyAgICM6ZmliZXItdGhyZWFkLW1pc21hdGNoLWVycm9yLXJvbGUKKyAgICM6
ZmliZXItc3RhdGUtZXJyb3IKKyAgICM6ZmliZXItc3RhdGUtZXJyb3Itc3RhdGUKKyAgICM6Zmli
ZXItc3RhdGUtZXJyb3ItZXhwZWN0ZWQKKyAgICM6bm8tY3VycmVudC1maWJlci1lcnJvcgorICAg
Izpuby1jdXJyZW50LWZpYmVyLWVycm9yLW9wZXJhdGlvbikpCisKKyhldmFsLXdoZW4gKDpjb21w
aWxlLXRvcGxldmVsIDpsb2FkLXRvcGxldmVsIDpleGVjdXRlKQorICAoc2V0ZiAoc2ItaW50OnN5
c3RlbS1wYWNrYWdlLXAgKGZpbmQtcGFja2FnZSAiU0ItRklCRVIiKSkgdCkpCmRpZmYgLS1naXQg
YS9jb250cmliL3NiLWZpYmVyL3NiLWZpYmVyLmFzZCBiL2NvbnRyaWIvc2ItZmliZXIvc2ItZmli
ZXIuYXNkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZDczMzViMjYxCi0t
LSAvZGV2L251bGwKKysrIGIvY29udHJpYi9zYi1maWJlci9zYi1maWJlci5hc2QKQEAgLTAsMCAr
MSwyMSBAQAorOzs7OyAtKi0gIExpc3AgLSotCisKKyhlcnJvciAiQ2FuJ3QgYnVpbGQgY29udHJp
YnMgd2l0aCBBU0RGIikKKworKGRlZnN5c3RlbSAic2ItZmliZXIiCisgIDpkZWZzeXN0ZW0tZGVw
ZW5kcy1vbiAoInNiLWdyb3ZlbCIpCisgIDpjb21wb25lbnRzICgoOmZpbGUgInBhY2thZ2UiKQor
ICAgICAgICAgICAgICAgKDpzYi1ncm92ZWwtY29uc3RhbnRzLWZpbGUgImNvbnN0YW50cyIKKyAg
ICAgICAgICAgICAgICA6cGFja2FnZSA6c2ItZmliZXIKKyAgICAgICAgICAgICAgICA6aWYtZmVh
dHVyZSAoOmFuZCA6c2ItZmliZXIgKDpvciA6eDg2LTY0IDphcm02NCkgKDpub3QgOndpbjMyKSkK
KyAgICAgICAgICAgICAgICA6ZGVwZW5kcy1vbiAoInBhY2thZ2UiKSkKKyAgICAgICAgICAgICAg
ICg6ZmlsZSAieDg2LTY0LXZvcHMiCisgICAgICAgICAgICAgICAgOmlmLWZlYXR1cmUgKDphbmQg
OnNiLWZpYmVyIDp4ODYtNjQpCisgICAgICAgICAgICAgICAgOmRlcGVuZHMtb24gKCJwYWNrYWdl
IikpCisgICAgICAgICAgICAgICAoOmZpbGUgImFybTY0LXZvcHMiCisgICAgICAgICAgICAgICAg
OmlmLWZlYXR1cmUgKDphbmQgOnNiLWZpYmVyIDphcm02NCkKKyAgICAgICAgICAgICAgICA6ZGVw
ZW5kcy1vbiAoInBhY2thZ2UiKSkKKyAgICAgICAgICAgICAgICg6ZmlsZSAiZmliZXItZmZpIgor
ICAgICAgICAgICAgICAgIDpkZXBlbmRzLW9uICgicGFja2FnZSIgImNvbnN0YW50cyIpKQorICAg
ICAgICAgICAgICAgKDpmaWxlICJmaWJlciIKKyAgICAgICAgICAgICAgICA6ZGVwZW5kcy1vbiAo
InBhY2thZ2UiICJjb25zdGFudHMiICJmaWJlci1mZmkiKSkpKQpkaWZmIC0tZ2l0IGEvY29udHJp
Yi9zYi1maWJlci9zYi1maWJlci50ZXhpbmZvIGIvY29udHJpYi9zYi1maWJlci9zYi1maWJlci50
ZXhpbmZvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZWI3OWE1OTg4Ci0t
LSAvZGV2L251bGwKKysrIGIvY29udHJpYi9zYi1maWJlci9zYi1maWJlci50ZXhpbmZvCkBAIC0w
LDAgKzEsMjQ5IEBACitAbm9kZSBzYi1maWJlcgorQHNlY3Rpb24gc2ItZmliZXIKK0BjaW5kZXgg
RmliZXIKK0BjaW5kZXggU2ItZmliZXIKKworQGNvZGV7c2ItZmliZXJ9IHByb3ZpZGVzIHVzZXIt
c3BhY2UgY29yb3V0aW5lcyB3aXRoIHRoZWlyIG93biBjb250cm9sCithbmQgYmluZGluZyBzdGFj
a3MsIGNvb3BlcmF0aXZlbHkgc2NoZWR1bGVkIGFuZCBydW5uaW5nIG9uIGEgc2luZ2xlIE9TCit0
aHJlYWQgYXQgYSB0aW1lLCB3aXRoIGV4cGxpY2l0IGNyb3NzLXRocmVhZCBtaWdyYXRpb24uCisK
K0Bjb2Rle3N3aXRjaC1maWJlcn0gaXMgdGhlIG9ubHkgY29udHJvbC10cmFuc2ZlciBvcGVyYXRp
b24gYW5kIGlzCitpbnRlbmRlZCB0byBiZSB0aGUgYnVpbGRpbmcgYmxvY2sgZm9yIHNjaGVkdWxl
cnMsIEkvTyBpbnRlZ3JhdGlvbiwgYW5kCitmaWJlci1hd2FyZSBzeW5jaHJvbml6YXRpb24gaW4g
dXNlciBhcHBsaWNhdGlvbiBjb2RlLgorCitAc3Vic2VjdGlvbiBBUEkKKworQGRlZmZuIEZ1bmN0
aW9uIG1ha2UtZmliZXIgZnVuY3Rpb24gJmtleSBuYW1lIChzdGFjay1zaXplIDY1NTM2KSAoYmlu
ZGluZy1zdGFjay1zaXplIDgxOTIpCitDcmVhdGUgYSBuZXcgZmliZXIgd2hvc2UgZW50cnkgQHZh
cntmdW5jdGlvbn0gcnVucyB3aGVuIGZpcnN0IHN3aXRjaGVkCit0by4gIEB2YXJ7bmFtZX0sIGlm
IHN1cHBsaWVkLCBpcyBhIHN0cmluZyBsYWJlbCB1c2VkIGJ5CitAY29kZXtwcmludC1vYmplY3R9
LiAgUmVnaXN0ZXJlZCBmaWJlcnMgYXJlIHJlbGVhc2VkIGF1dG9tYXRpY2FsbHkgYXQKK3RocmVh
ZCBleGl0OyBAY29kZXtyZWxlYXNlLWZpYmVyfSBpcyBvbmx5IG5lZWRlZCBpZiB5b3Ugd2FudCB0
bworcmVjbGFpbSByZXNvdXJjZXMgc29vbmVyLgorCitUaGUgY2FsbGluZyB0aHJlYWQgbXVzdCBh
bHJlYWR5IGhhdmUgYSBtYWluIGZpYmVyIGJvdW5kIGluCitAY29kZXsqY3VycmVudC1maWJlcip9
LiAgVXNlIEBjb2Rle21ha2UtbWFpbi1maWJlcn0gb3IKK0Bjb2Rle3dpdGgtZmliZXItdGhyZWFk
fSB0byBlc3RhYmxpc2ggb25lIGJlZm9yZSBjYWxsaW5nCitAY29kZXttYWtlLWZpYmVyfTsgb3Ro
ZXJ3aXNlIGFuIGVycm9yIGlzIHNpZ25hbGxlZC4KKworSWYgQHZhcntmdW5jdGlvbn0gcmV0dXJu
cyBub3JtYWxseSwgdGhlIGZpYmVyIGlzIG1hcmtlZCBAY29kZXs6ZGVhZH0KK2FuZCBjb250cm9s
IHN3aXRjaGVzIGJhY2sgdG8gaXRzIHJldHVybiBmaWJlciwgd2l0aCB0aGUgZnVuY3Rpb24ncwor
cmV0dXJuIHZhbHVlIChzZWUgQGNvZGV7c3dpdGNoLWZpYmVyfSkuICBJZiBAdmFye2Z1bmN0aW9u
fSBleGl0cyB2aWEKK2FuIHVuaGFuZGxlZCBjb25kaXRpb24sIHRoZSBjb25kaXRpb24gaXMgc3Rv
cmVkIG9uIHRoZSBmaWJlciBhbmQKK3JlLXNpZ25hbGVkIGluIHRoZSBjYWxsZXIncyBjb250ZXh0
LgorQGVuZCBkZWZmbgorCitAZGVmZm4gRnVuY3Rpb24gbWFrZS1tYWluLWZpYmVyICZrZXkgbmFt
ZQorQ3JlYXRlIGEgZmliZXIgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHRocmVhZCdzIG93biBz
dGFjayBhbmQgYmluZAorQGNvZGV7KmN1cnJlbnQtZmliZXIqfS4gIE1vc3QgY29kZSBzaG91bGQg
dXNlCitAY29kZXt3aXRoLWZpYmVyLXRocmVhZH07IEBjb2Rle21ha2UtbWFpbi1maWJlcn0gaXMg
dGhlIGV4cGxpY2l0IGZvcm0KK2ZvciBjYWxsZXJzIHRoYXQgbWFuYWdlIGZpYmVyLXRocmVhZCBs
aWZldGltZSBieSBoYW5kLgorQGVuZCBkZWZmbgorCitAZGVmZm4gTWFjcm8gd2l0aC1maWJlci10
aHJlYWQgKCkgJmJvZHkgYm9keQorUmVnaXN0ZXIgYSBtYWluIGZpYmVyIG9uIHRoZSBjYWxsaW5n
IHRocmVhZCBmb3IgdGhlIGR5bmFtaWMgZXh0ZW50IG9mCitAdmFye2JvZHl9IGFuZCByZWxlYXNl
IGl0IG9uIGV4aXQuICBBIG5vLW9wIGlmIEBjb2RleypjdXJyZW50LWZpYmVyKn0KK2lzIGFscmVh
ZHkgYm91bmQgb24gZW50cnkgKG5lc3RpbmcgaXMgc2FmZSkuCitAZW5kIGRlZmZuCisKK0BkZWZm
biBGdW5jdGlvbiBmaWJlci1uYW1lIGZpYmVyCitUaGUgQGNvZGV7Om5hbWV9IHN0cmluZyBzdXBw
bGllZCB0byBAY29kZXttYWtlLWZpYmVyfSwgb3IgQGNvZGV7bmlsfS4KK0BlbmQgZGVmZm4KKwor
QGRlZmZuIEZ1bmN0aW9uIGZpYmVyLXRocmVhZCBmaWJlcgorVGhlIEBjb2Rle3NiLXRocmVhZDp0
aHJlYWR9IHRoYXQgY3VycmVudGx5IG93bnMgQHZhcntmaWJlcn0gKHRoZSBvbmx5Cit0aHJlYWQg
dGhhdCBtYXkgc3dpdGNoIGludG8gaXQsIHVudGlsIEBjb2Rle2ZpYmVyLW1pZ3JhdGV9IGhhbmRz
IGl0IHRvCithbm90aGVyKSwgb3IgQGNvZGV7bmlsfSBpZiBAdmFye2ZpYmVyfSBoYXMgYmVlbiBy
ZWxlYXNlZC4gIFVzZWZ1bCBmb3IKK2Fzc2VydGlvbnMgaW4gc2NoZWR1bGVyIGNvZGUuCitAZW5k
IGRlZmZuCisKK0BkZWZmbiBGdW5jdGlvbiByZWxlYXNlLWZpYmVyIGZpYmVyCitSZWNsYWltIEB2
YXJ7ZmliZXJ9J3MgcmVzb3VyY2VzLiAgRm9yIGEgd29ya2VyIGZpYmVyLCB1bm1hcHMgaXRzCitz
dGFja3MgYW5kIGZyZWVzIHRoZSBib29ra2VlcGluZyBzdHJ1Y3QuICBGb3IgYSBtYWluIGZpYmVy
LCBqdXN0IGZyZWVzCit0aGUgc3RydWN0OyB0aGUgdGhyZWFkJ3Mgb3duIHN0YWNrIGFuZCBiaW5k
aW5nIHN0YWNrIGFyZSB1bnRvdWNoZWQuCitAdmFye2ZpYmVyfSBtdXN0IG5vdCBiZSBSVU5OSU5H
IChvdGhlciB0aGFuIGEgbWFpbiBmaWJlciwgd2hpY2ggaXMKK2Fsd2F5cyBSVU5OSU5HIHVudGls
IHJlbGVhc2VkKS4gIE9wdGlvbmFsOiByZWdpc3RlcmVkIGZpYmVycyBhcmUKK3JlbGVhc2VkIGF1
dG9tYXRpY2FsbHkgd2hlbiB0aGVpciBvd25pbmcgdGhyZWFkIGV4aXRzLgorQGVuZCBkZWZmbgor
CitAZGVmZm4gTWFjcm8gd2l0aC1maWJlciAodmFyIGZ1bmN0aW9uICZyZXN0IG1ha2UtYXJncykg
JmJvZHkgYm9keQorQGNvZGV7bWFrZS1maWJlcn0gKyBAY29kZXt1bndpbmQtcHJvdGVjdH0gKyBA
Y29kZXtyZWxlYXNlLWZpYmVyfS4KK0BlbmQgZGVmZm4KKworQGRlZmZuIEZ1bmN0aW9uIHN3aXRj
aC1maWJlciBmcm9tIHRvICZyZXN0IHZhbHVlcworU3VzcGVuZCBAdmFye2Zyb219IGFuZCByZXN1
bWUgQHZhcnt0b30sIGRlbGl2ZXJpbmcgQHZhcnt2YWx1ZXN9IGFzCittdWx0aXBsZSB2YWx1ZXMg
dG8gdGhlIHJlc3VtZXIuICBSZXR1cm5zIHdoYXRldmVyIHRoZSBuZXh0IHN3aXRjaC1pbgorZGVs
aXZlcnMgKG9yIEB2YXJ7dG99J3MgZW50cnkgZnVuY3Rpb24ncyByZXR1cm4gdmFsdWVzIGlmIGl0
IHJhbiB0bworY29tcGxldGlvbiksIGFsc28gYXMgbXVsdGlwbGUgdmFsdWVzLiAgQm90aCBmaWJl
cnMgbXVzdCBiZSByZWdpc3RlcmVkCit0byB0aGUgY3VycmVudCB0aHJlYWQ7IEB2YXJ7ZnJvbX0g
bXVzdCBiZSBAY29kZXs6cnVubmluZ30gYW5kCitAdmFye3RvfSBtdXN0IGJlIEBjb2RlezpydW5u
YWJsZX0gb3IgQGNvZGV7Om5ld30uCisKK1RoZSBzd2l0Y2ggcHJlc2VydmVzIHRoZSByZXN1bWVk
IGZpYmVyJ3MgY29udHJvbCBzdGFjaywgYmluZGluZyBzdGFjaywKK0Bjb2RleypoYW5kbGVyLWNs
dXN0ZXJzKn0sIEBjb2RleypyZXN0YXJ0LWNsdXN0ZXJzKn0sIGN1cnJlbnQgY2F0Y2gKK2FuZCB1
bndpbmQtcHJvdGVjdCBjaGFpbnMsIGNhbGxlZS1zYXZlZCByZWdpc3RlcnMsIGFuZCAob24geDg2
LTY0KQordGhlIFNTRSBjb250cm9sIHdvcmQuICBAY29kZXsqY3VycmVudC1maWJlcip9IChwZXIt
dGhyZWFkKSB0cmFja3MgdGhlCityZXN1bWVkIGZpYmVyLgorCitJZiBAdmFye3RvfSdzIGVudHJ5
IGZ1bmN0aW9uIHByZXZpb3VzbHkgZXNjYXBlZCB2aWEgYW4gdW5oYW5kbGVkCitjb25kaXRpb24s
IHRoYXQgY29uZGl0aW9uIGlzIHJlLXNpZ25hbGVkIGhlcmUgaW4gdGhlIGNhbGxlcidzCitjb250
ZXh0LgorQGVuZCBkZWZmbgorCitAZGVmZm4gRnVuY3Rpb24gcmVzdW1lLWZpYmVyIHRvICZyZXN0
IHZhbHVlcworU3VzcGVuZCB0aGUgY3VycmVudCBmaWJlciBhbmQgcmVzdW1lIEB2YXJ7dG99LCBk
ZWxpdmVyaW5nIEB2YXJ7dmFsdWVzfQorYXMgbXVsdGlwbGUgdmFsdWVzLiAgRXF1aXZhbGVudCB0
bworQGNvZGV7KHN3aXRjaC1maWJlciAqY3VycmVudC1maWJlciogdG8gLiB2YWx1ZXMpfTsgc3Vw
cGxpZWQgYXMgdGhlCitjb21tb24tY2FzZSBzaG9ydGhhbmQgYW5kIHRvIG1ha2UgdGhlIHRyaW8g
c3ltbWV0cmljOgorCitAaXRlbWl6ZQorQGl0ZW0gQGNvZGV7eWllbGQtZmliZXJ9ICAtLSBzdXNw
ZW5kIHNlbGYsIGRlbGl2ZXIgdG8gdGhlIHJldHVybiBmaWJlci4KK0BpdGVtIEBjb2Rle3Jlc3Vt
ZS1maWJlcn0gLS0gc3VzcGVuZCBzZWxmLCBkZWxpdmVyIHRvIGEgY2hvc2VuIGZpYmVyLgorQGl0
ZW0gQGNvZGV7c3dpdGNoLWZpYmVyfSAtLSBleHBsaWNpdCBAY29kZXtmcm9tfS9AY29kZXt0b30g
Zm9ybS4KK0BlbmQgaXRlbWl6ZQorCitFcnJvcnMgaWYgQGNvZGV7KmN1cnJlbnQtZmliZXIqfSBp
cyB1bmJvdW5kLgorQGVuZCBkZWZmbgorCitAZGVmZm4gRnVuY3Rpb24geWllbGQtZmliZXIgJnJl
c3QgdmFsdWVzCitTd2l0Y2ggdG8gdGhlIGN1cnJlbnQgZmliZXIncyByZXR1cm4gZmliZXIsIGRl
bGl2ZXJpbmcgQHZhcnt2YWx1ZXN9IGFzCittdWx0aXBsZSB2YWx1ZXMgdG8gdGhlIHJlc3VtZXIn
cyBAY29kZXtzd2l0Y2gtZmliZXJ9IHJldHVybi4gIFJldHVybnMKK3doYXRldmVyIHRoZSBuZXh0
IHN3aXRjaC1pbiBkZWxpdmVycywgYWxzbyBhcyBtdWx0aXBsZSB2YWx1ZXMuICBFcnJvcnMKK2lm
IHRoZSBjdXJyZW50IGZpYmVyIGhhcyBuZXZlciBiZWVuIHJlc3VtZWQuCitAZW5kIGRlZmZuCisK
K0BkZWZmbiBGdW5jdGlvbiBqb2luLWZpYmVyIGZpYmVyCitSZXN1bWUgQHZhcntmaWJlcn0gZnJv
bSBAY29kZXsqY3VycmVudC1maWJlcip9IHJlcGVhdGVkbHkgdW50aWwgaXRzCitlbnRyeSBmdW5j
dGlvbiByZXR1cm5zOyByZXR1cm4gdGhhdCBmdW5jdGlvbidzIHZhbHVlcyBhcyBtdWx0aXBsZQor
dmFsdWVzLiAgUGFyYWxsZWxzIEBjb2Rle3NiLXRocmVhZDpqb2luLXRocmVhZH0gZm9yIGNvb3Bl
cmF0aXZlCitjb3JvdXRpbmVzLgorQGVuZCBkZWZmbgorCitAZGVmZm4gRnVuY3Rpb24gaW50ZXJy
dXB0LWZpYmVyIGZpYmVyIGNvbmRpdGlvbgorU3RhZ2UgQHZhcntjb25kaXRpb259IHRvIGJlIHNp
Z25hbGVkIGluIEB2YXJ7ZmliZXJ9IG9uIGl0cyBuZXh0CityZXN1bWUuICBOb3RoaW5nIGhhcHBl
bnMgdW50aWwgQGNvZGV7c3dpdGNoLWZpYmVyfSBkZWxpdmVycyBjb250cm9sCitpbnRvIEB2YXJ7
ZmliZXJ9LCBhdCB3aGljaCBwb2ludCBAdmFye2NvbmRpdGlvbn0gaXMgc2lnbmFsZWQgaW4gdGhl
CitmaWJlcidzIG93biBjb250ZXh0IChmb3IgYSBydW5uYWJsZSBmaWJlcikgb3IgcmFpc2VkIGJ5
IHRoZSB0cmFtcG9saW5lCitiZWZvcmUgdGhlIGVudHJ5IGZ1bmN0aW9uIHJ1bnMgKGZvciBhIG5l
dyBmaWJlcikuCitAZW5kIGRlZmZuCisKK0BkZWZmbiBGdW5jdGlvbiBmaWJlci1jb25kaXRpb24g
ZmliZXIKK1RoZSBjb25kaXRpb24gKGlmIGFueSkgc3RhZ2VkIGZvciBAdmFye2ZpYmVyfSdzIG5l
eHQgcmVzdW1lLCBvcgorQGNvZGV7bmlsfS4gIENsZWFyZWQgd2hlbiBjb25zdW1lZCBieSBAY29k
ZXtzd2l0Y2gtZmliZXJ9LgorQGVuZCBkZWZmbgorCitAZGVmZm4gTWFjcm8gd2l0aC1maWJlci1w
aW5uZWQgKCkgJmJvZHkgYm9keQorTWFyayB0aGUgY3VycmVudCBmaWJlciB1bnN1c3BlbmRhYmxl
IGZvciB0aGUgZHluYW1pYyBleHRlbnQgb2YKK0B2YXJ7Ym9keX07IEBjb2Rle3N3aXRjaC1maWJl
cn0gc2lnbmFscyBhbiBlcnJvciBpZiBpbnZva2VkIHdpdGggYQorcGlubmVkIEBjb2Rle2Zyb219
LiAgUGlucyBuZXN0LiAgSW50ZW5kZWQgZm9yIEZGSTogd3JhcCBhbnkgcmVnaW9uCitjb250YWlu
aW5nIGxpdmUgZm9yZWlnbiBmcmFtZXMgc28gYSB5aWVsZCBjYW4ndCBsZWF2ZSB0aGVtIGF0b3Ag
YQorcmUtZW50ZXJlZCBzdGFjay4KK0BlbmQgZGVmZm4KKworQGRlZmZuIEZ1bmN0aW9uIGZpYmVy
LXBpbm5lZC1wIGZpYmVyCitAY29kZXt0fSBpZiBAdmFye2ZpYmVyfSBoYXMgYSBub256ZXJvIHBp
biBjb3VudC4KK0BlbmQgZGVmZm4KKworQGRlZmZuIEZ1bmN0aW9uIGZpYmVyLWFsaXZlLXAgZmli
ZXIKK0Bjb2Rle3R9IGlmIEB2YXJ7ZmliZXJ9J3Mgc3RhdGUgaXMgbm90IEBjb2RlezpkZWFkfSAo
aS5lLiBpdCBoYXMgbm90CitydW4gdG8gY29tcGxldGlvbiBvciBiZWVuIHJlbGVhc2VkKS4KK0Bl
bmQgZGVmZm4KKworQGRlZmZuIEZ1bmN0aW9uIGZpYmVyLW1haW4tcCBmaWJlcgorQGNvZGV7dH0g
aWYgQHZhcntmaWJlcn0gcmVwcmVzZW50cyBhIHRocmVhZCdzIG93biBzdGFjayAoY3JlYXRlZCBi
eQorQGNvZGV7bWFrZS1tYWluLWZpYmVyfSBvciBAY29kZXt3aXRoLWZpYmVyLXRocmVhZH0pLCBA
Y29kZXtuaWx9IGlmIGl0CitpcyBhIHdvcmtlciBmaWJlciBjcmVhdGVkIGJ5IEBjb2Rle21ha2Ut
ZmliZXJ9LgorQGVuZCBkZWZmbgorCitAZGVmZm4gRnVuY3Rpb24gZmliZXItc3RhdGUgZmliZXIK
K0tleXdvcmQgc3RhdGU6IEBjb2RlezpuZXd9LCBAY29kZXs6cnVubmFibGV9LCBAY29kZXs6cnVu
bmluZ30sIG9yCitAY29kZXs6ZGVhZH0uCitAZW5kIGRlZmZuCisKK0BkZWZmbiBGdW5jdGlvbiBm
aWJlci1taWdyYXRlIGZpYmVyIGRlc3QtdGhyZWFkCitBdG9taWNhbGx5IHRyYW5zZmVyIG93bmVy
c2hpcCBvZiBAdmFye2ZpYmVyfSBmcm9tIGl0cyBjdXJyZW50IG93bmVyCit0aHJlYWQgdG8gQHZh
cntkZXN0LXRocmVhZH07IGFmdGVyd2FyZHMgb25seSBAdmFye2Rlc3QtdGhyZWFkfSBtYXkKK3N3
aXRjaCBpbnRvIGl0LiAgQHZhcntmaWJlcn0gbXVzdCBiZSBAY29kZXs6cnVubmFibGV9IChzaWdu
YWxzCitAY29kZXtmaWJlci1zdGF0ZS1lcnJvcn0gb3RoZXJ3aXNlKSBhbmQgQHZhcntkZXN0LXRo
cmVhZH0gbXVzdCBiZQorbGl2ZS4gIFJldHVybnMgQHZhcntmaWJlcn0uCitAZW5kIGRlZmZuCisK
K0BzdWJzZWN0aW9uIENvbmRpdGlvbnMKKworQWxsIHNiLWZpYmVyIHByZWNvbmRpdGlvbiBlcnJv
cnMgaW5oZXJpdCBmcm9tIEBjb2Rle2ZpYmVyLWVycm9yfS4KK1NjaGVkdWxlcnMgY2FuIEBjb2Rl
e2hhbmRsZXItY2FzZX0gb24gdGhlIGJhc2UgY2xhc3MgdG8gY2F0Y2ggdGhlbQordW5pZm9ybWx5
LCBvciBvbiBhIHN1YmNsYXNzIGZvciB0YXJnZXRlZCByZWNvdmVyeS4KKworQGRlZmZuIENvbmRp
dGlvbiBmaWJlci1lcnJvcgorQmFzZSBjbGFzczsgb25lIGluaXRhcmcvcmVhZGVyOiBAY29kZXs6
ZmliZXJ9IC8gQGNvZGV7ZmliZXItZXJyb3ItZmliZXJ9LgorQGVuZCBkZWZmbgorCitAZGVmZm4g
Q29uZGl0aW9uIGRlYWQtZmliZXItZXJyb3IKK1NpZ25hbGVkIHdoZW4gQGNvZGV7c3dpdGNoLWZp
YmVyfSBvciBAY29kZXtpbnRlcnJ1cHQtZmliZXJ9IHRvdWNoZXMgYQorZmliZXIgdGhhdCBoYXMg
YmVlbiByZWxlYXNlZCBvciBoYXMgcnVuIHRvIGNvbXBsZXRpb24uCitAZW5kIGRlZmZuCisKK0Bk
ZWZmbiBDb25kaXRpb24gcGlubmVkLWZpYmVyLWVycm9yCitTaWduYWxlZCB3aGVuIEBjb2Rle3N3
aXRjaC1maWJlcn0gd291bGQgc3VzcGVuZCBhIGZpYmVyIHdob3NlIHBpbgorY291bnQgaXMgbm9u
emVyby4gIFJlYWRlciBAY29kZXtwaW5uZWQtZmliZXItZXJyb3ItZGVwdGh9IHJldHVybnMgdGhl
CitwaW4gY291bnQuICBGRkktYXdhcmUgc2NoZWR1bGVycyBjYW4gY2F0Y2ggdGhpcyBhbmQgcmV0
cnkgb25jZSB0aGVpcgorZm9yZWlnbiByZWdpb24gZXhpdHMuCitAZW5kIGRlZmZuCisKK0BkZWZm
biBDb25kaXRpb24gZmliZXItdGhyZWFkLW1pc21hdGNoLWVycm9yCitTaWduYWxlZCB3aGVuIGEg
c3dpdGNoIHJlZmVyZW5jZXMgYSBmaWJlciBvd25lZCBieSBhIGRpZmZlcmVudCBPUwordGhyZWFk
LiAgUmVhZGVyIEBjb2Rle2ZpYmVyLXRocmVhZC1taXNtYXRjaC1lcnJvci1yb2xlfSByZXR1cm5z
CitAY29kZXs6ZnJvbX0gb3IgQGNvZGV7OnRvfS4KK0BlbmQgZGVmZm4KKworQGRlZmZuIENvbmRp
dGlvbiBmaWJlci1zdGF0ZS1lcnJvcgorU2lnbmFsZWQgd2hlbiBhIGZpYmVyIGlzIG5vdCBpbiBh
biBhY2NlcHRhYmxlIHN0YXRlIGZvciB0aGUgcmVxdWVzdGVkCitvcGVyYXRpb24uICBSZWFkZXJz
OiBAY29kZXtmaWJlci1zdGF0ZS1lcnJvci1zdGF0ZX0gKHRoZSBhY3R1YWwKK2tleXdvcmQpLCBA
Y29kZXtmaWJlci1zdGF0ZS1lcnJvci1leHBlY3RlZH0gKGEgbGlzdCBvZiBhY2NlcHRlZAorc3Rh
dGVzKS4KK0BlbmQgZGVmZm4KKworQGRlZmZuIENvbmRpdGlvbiBuby1jdXJyZW50LWZpYmVyLWVy
cm9yCitTaWduYWxlZCB3aGVuIGFuIG9wZXJhdGlvbiB0aGF0IHJlcXVpcmVzIGEgY3VycmVudCBm
aWJlcgorKEBjb2Rle21ha2UtZmliZXJ9LCBAY29kZXtyZXN1bWUtZmliZXJ9LCBAY29kZXt5aWVs
ZC1maWJlcn0sCitAY29kZXt3aXRoLWZpYmVyLXBpbm5lZH0pIHJ1bnMgb24gYSB0aHJlYWQgd2l0
aCBubyBmaWJlciBib3VuZCBpbgorQGNvZGV7KmN1cnJlbnQtZmliZXIqfS4gIEVzdGFibGlzaCBv
bmUgd2l0aCBAY29kZXttYWtlLW1haW4tZmliZXJ9IG9yCitAY29kZXt3aXRoLWZpYmVyLXRocmVh
ZH0uICBSZWFkZXIKK0Bjb2Rle25vLWN1cnJlbnQtZmliZXItZXJyb3Itb3BlcmF0aW9ufSByZXR1
cm5zIHRoZSBvcGVyYXRvciB0aGF0CitzaWduYWxlZCwgb3IgQGNvZGV7bmlsfS4gIENhcnJpZXMg
bm8gZmliZXIuCitAZW5kIGRlZmZuCisKK0BzdWJzZWN0aW9uIEV4YW1wbGUKKworQGxpc3AKKyhy
ZXF1aXJlIDpzYi1maWJlcikKKyh1c2UtcGFja2FnZSA6c2ItZmliZXIpCisKKyh3aXRoLWZpYmVy
LXRocmVhZCAoKQorICAobGV0ICgoY2hpbGQgKG1ha2UtZmliZXIKKyAgICAgICAgICAgICAgICAo
bGFtYmRhICgpCisgICAgICAgICAgICAgICAgICAoZm9ybWF0IHQgImhlbGxvIGZyb20gY2hpbGR+
JSIpCisgICAgICAgICAgICAgICAgICAoeWllbGQtZmliZXIpCisgICAgICAgICAgICAgICAgICAo
Zm9ybWF0IHQgImJhY2sgYWdhaW5+JSIpKSkpKQorICAgIChyZXN1bWUtZmliZXIgY2hpbGQpCisg
ICAgKGZvcm1hdCB0ICJtYWluIHJlc3VtZWR+JSIpCisgICAgKHJlc3VtZS1maWJlciBjaGlsZCkp
KQorQGVuZCBsaXNwCisKK1ByaW50cyBAY29kZXtoZWxsbyBmcm9tIGNoaWxkfSwgQGNvZGV7bWFp
biByZXN1bWVkfSwgQGNvZGV7YmFjayBhZ2Fpbn0uCisKK0EgcmVhbGlzdGljIHNjaGVkdWxlciBs
YXllcnMgbm9uLWJsb2NraW5nIEkvTyBvbiB0b3A6IHdoZW4gYSBmaWJlcgord291bGQgYmxvY2sg
b24gYW4gZmQsIGl0IHJlZ2lzdGVycyB3aXRoCitAY29kZXtwb2xsfS9AY29kZXtlcG9sbH0vQGNv
ZGV7a3F1ZXVlfSBhbmQgeWllbGRzOyB0aGUgc2NoZWR1bGVyJ3MKK3BvbGwgbG9vcCB3YWtlcyBp
dCB3aGVuIHJlYWR5LgorCitAc3Vic2VjdGlvbiBGdXJ0aGVyIE5vdGVzCisKK0BpdGVtaXplCitA
aXRlbSBAc3Ryb25ne1BsYXRmb3Jtcy59ICB4ODYtNjQgYW5kIGFybTY0IFBPU0lYIG9ubHkuCitA
aXRlbSBAc3Ryb25ne05vIHByZWVtcHRpb24ufSAgVGlnaHQgY29tcHV0ZSBsb29wcyBzdGFydmUg
dGhlIHNjaGVkdWxlci4KK0BpdGVtIEBzdHJvbmd7SGFuZGxlciBpc29sYXRpb24ufSAgQSBmaWJl
cidzIGVudHJ5IGZ1bmN0aW9uIHJ1bnMgd2l0aAorZnJlc2ggQGNvZGV7KmhhbmRsZXItY2x1c3Rl
cnMqfSAvIEBjb2RleypyZXN0YXJ0LWNsdXN0ZXJzKn0uCitAaXRlbSBAc3Ryb25ne0ltYWdlIHN1
cnZpdmFsLn0gIEZpYmVycyBkbyBub3Qgc3Vydml2ZQorQGNvZGV7c2F2ZS1saXNwLWFuZC1kaWV9
OyBkcm9wIHdyYXBwZXIgcmVmZXJlbmNlcyBiZWZvcmUgc2F2aW5nLgorQGl0ZW0gQHN0cm9uZ3tH
YXJiYWdlIGNvbGxlY3Rpb24ufSAgQSBzdXNwZW5kZWQgZmliZXIncyBDIGNvbnRyb2wgc3RhY2sK
K2lzIHNjYW5uZWQgY29uc2VydmF0aXZlbHkgZXZlbiBvbiB0aGUgb3RoZXJ3aXNlLXByZWNpc2Ug
YXJtNjQgYmFja2VuZC4KK0BlbmQgaXRlbWl6ZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9zYi1maWJl
ci94ODYtNjQtdm9wcy5saXNwIGIvY29udHJpYi9zYi1maWJlci94ODYtNjQtdm9wcy5saXNwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZDg4OWQzN2M4Ci0tLSAvZGV2L251
bGwKKysrIGIvY29udHJpYi9zYi1maWJlci94ODYtNjQtdm9wcy5saXNwCkBAIC0wLDAgKzEsMzEg
QEAKKzs7OzsgSW5saW5lIHJlZ2lzdGVyL1NQL01YQ1NSIHN3YXAgZm9yIFNXSVRDSC1GSUJFUgor
CisoaW4tcGFja2FnZSAiU0ItVk0iKQorCisoc2ItYzpkZWZrbm93biBzYi1maWJlcjo6JXN3YXAt
cmVncworICAgIChzeXN0ZW0tYXJlYS1wb2ludGVyIHN5c3RlbS1hcmVhLXBvaW50ZXIpICh2YWx1
ZXMpCisgICAgKHNiLWM6YWx3YXlzLXRyYW5zbGF0YWJsZSkpCisKKyhkZWZpbmUtdm9wIChmaWJl
ci1zd2FwLXJlZ3MpCisgICg6dHJhbnNsYXRlIHNiLWZpYmVyOjolc3dhcC1yZWdzKQorICAoOnBv
bGljeSA6ZmFzdC1zYWZlKQorICAoOmFyZ3MgKGZyb20gOnNjcyAoc2FwLXJlZykgOnRhcmdldCBm
cm9tLXRtcCkKKyAgICAgICAgICh0byAgIDpzY3MgKHNhcC1yZWcpIDp0YXJnZXQgdG8tdG1wKSkK
KyAgKDphcmctdHlwZXMgc3lzdGVtLWFyZWEtcG9pbnRlciBzeXN0ZW0tYXJlYS1wb2ludGVyKQor
ICAoOnRlbXBvcmFyeSAoOnNjIHNhcC1yZWcgOm9mZnNldCByYXgtb2Zmc2V0CisgICAgICAgICAg
ICAgICA6ZnJvbSAoOmFyZ3VtZW50IDApIDp0byAoOnJlc3VsdCAwKSkKKyAgICAgICAgICAgICAg
ZnJvbS10bXApCisgICg6dGVtcG9yYXJ5ICg6c2Mgc2FwLXJlZyA6b2Zmc2V0IHJjeC1vZmZzZXQK
KyAgICAgICAgICAgICAgIDpmcm9tICg6YXJndW1lbnQgMSkgOnRvICg6cmVzdWx0IDApKQorICAg
ICAgICAgICAgICB0by10bXApCisgICg6dGVtcG9yYXJ5ICg6c2MgdW5zaWduZWQtcmVnIDpvZmZz
ZXQgcmR4LW9mZnNldCkgdGVtcCkKKyAgKDpnZW5lcmF0b3IgMTAKKyAgICAobW92ZSBmcm9tLXRt
cCBmcm9tKQorICAgIChtb3ZlIHRvLXRtcCB0bykKKyAgICAoaW5zdCBsZWEgdGVtcCAocmlwLXJl
bGF0aXZlLWVhIFJFU1VNRSkpCisgICAgKGluc3QgcHVzaCB0ZW1wKQorICAgIChlbWl0LXNhdmUt
ZmliZXItcmVncyBmcm9tLXRtcCkKKyAgICAoZW1pdC1yZXN0b3JlLWZpYmVyLXJlZ3MgdG8tdG1w
KQorICAgIChpbnN0IHJldCkKKyAgICBSRVNVTUUKKyAgICAoZW1pdC1lbmQtcHNldWRvLWF0b21p
YykpKQpkaWZmIC0tZ2l0IGEvbWFrZS10YXJnZXQtMi1sb2FkLmxpc3AgYi9tYWtlLXRhcmdldC0y
LWxvYWQubGlzcAppbmRleCAzNmM0ZGUzZGMuLmJjODk4YzU3ZSAxMDA2NDQKLS0tIGEvbWFrZS10
YXJnZXQtMi1sb2FkLmxpc3AKKysrIGIvbWFrZS10YXJnZXQtMi1sb2FkLmxpc3AKQEAgLTg3LDcg
Kzg3LDcgQEAKICAgICAgICAgICAgOzsgdGhvdWdoIEkgZG9uJ3QgdGhpbmsgdGhleSBzaG91bGQg
YWxsIGJlIHB1YmxpYy4KICAgICAgICAgICAgOk1TQU4gOlVCU0FOCiAgICAgICAgICAgIDpTQi1T
QUZFUE9JTlQKLSAgICAgICAgICAgOlNCLVRIUkVBRCA6U0ItVU5JQ09ERQorICAgICAgICAgICA6
U0ItVEhSRUFEIDpTQi1VTklDT0RFIDpTQi1GSUJFUgogICAgICAgICAgICA7OyBUaGluZ3Mgd2hp
Y2ggKEkgdGhpbmspIGF0IGxlYXN0IG9uZSBwZXJzb24gaGFzIHJlcXVlc3RlZCBiZSBrZXB0IGFy
b3VuZAogICAgICAgICAgICA6U0ItTERCCiAgICAgICAgICAgIDs7IFdlIGtlZXAgdGhlIDpTQi1Q
QUNLQUdFLUxPQ0tTIGZlYXR1cmUgZGVzcGl0ZSBpdCBubyBsb25nZXIKQEAgLTQ0Miw2ICs0NDIs
OSBAQCBQbGVhc2UgY2hlY2sgdGhhdCBhbGwgc3RyaW5ncyB3aGljaCB3ZXJlIG5vdCByZWNvZ25p
emFibGUgdG8gdGhlIGNvbXBpbGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgbmVl
ZCB0aGlzIGZvciBkZWZpbmluZyBhIHZvcCB3aGljaAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDs7IHRlc3RzIHRoZSB4ODYtNjQgYWxsb2NhdGlvbiBwcm9maWxlcgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNiLXZtOjpwc2V1ZG8tYXRvbWljCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLEAob3IgIysoYW5kIHNiLWZpYmVyIChvciB4ODYtNjQgYXJtNjQpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoc2Itdm06OmVtaXQtc2F2ZS1maWJlci1yZWdz
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYi12bTo6ZW1pdC1yZXN0b3Jl
LWZpYmVyLXJlZ3MpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICxAKG9yICMrKG9yIGFy
bTY0IHg4NiB4ODYtNjQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhzYi12
bTo6JXZlY3Rvci1jYXMtcGFpcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2Itdm06OiVpbnN0YW5jZS1jYXMtcGFpcgpkaWZmIC0tZ2l0IGEvc3JjL2Fzc2VtYmx5L2FybTY0
L3RyYW1wcy5saXNwIGIvc3JjL2Fzc2VtYmx5L2FybTY0L3RyYW1wcy5saXNwCmluZGV4IDQ0ZTlm
YzVmNS4uNjM5MGJmNmZhIDEwMDY0NAotLS0gYS9zcmMvYXNzZW1ibHkvYXJtNjQvdHJhbXBzLmxp
c3AKKysrIGIvc3JjL2Fzc2VtYmx5L2FybTY0L3RyYW1wcy5saXNwCkBAIC0yMDQsMyArMjA0LDIz
IEBACiAgIChsb2FkdyBsci10biBsZXhlbnYtdG4gY2xvc3VyZS1mdW4tc2xvdCBmdW4tcG9pbnRl
ci1sb3d0YWcpCiAgIChpbnN0IGFkZCBsci10biBsci10biA0KQogICAoaW5zdCBiciBsci10bikp
CisKKyMrc2ItZmliZXIKKyhwcm9nbgorCisoZGVmaW5lLWFzc2VtYmx5LXJvdXRpbmUgKGZpYmVy
LXN3YXAtcmVncyAoOnJldHVybi1zdHlsZSA6bm9uZSkpCisgICAgKCg6dGVtcCBubDAgdW5zaWdu
ZWQtcmVnIG5sMC1vZmZzZXQpCisgICAgICg6dGVtcCBubDEgdW5zaWduZWQtcmVnIG5sMS1vZmZz
ZXQpCisgICAgICg6dGVtcCBubDIgdW5zaWduZWQtcmVnIG5sMi1vZmZzZXQpKQorICAoZW1pdC1z
YXZlLWZpYmVyLXJlZ3MgbmwwIG5sMikKKyAgKGVtaXQtcmVzdG9yZS1maWJlci1yZWdzIG5sMSBu
bDIpCisgIChpbnN0IHJldCkpCisKKyhkZWZpbmUtYXNzZW1ibHktcm91dGluZSAoZmliZXItdHJh
bXAgKDpyZXR1cm4tc3R5bGUgOm5vbmUpKQorICAgICgoOnRlbXAgYXJnIHVuc2lnbmVkLXJlZyBu
bDAtb2Zmc2V0KSkKKyAgKGxldCAoKHI5LXRuIChtYWtlLXJhbmRvbS10biAoc2Mtb3ItbG9zZSAn
dW5zaWduZWQtcmVnKSByOS1vZmZzZXQpKSkgOyByOSA9PSB4MTkKKyAgICAoaW5zdCBtb3YgYXJn
IHI5LXRuKSkKKyAgKGluc3QgYmwgKG1ha2UtZml4dXAgImZpYmVyX3RyYW1wX2MiIDpmb3JlaWdu
KSkKKyAgKGluc3QgYnJrIDApKQorCispIDsgZW5kICMrc2ItZmliZXIKZGlmZiAtLWdpdCBhL3Ny
Yy9hc3NlbWJseS94ODYtNjQvdHJhbXBzLmxpc3AgYi9zcmMvYXNzZW1ibHkveDg2LTY0L3RyYW1w
cy5saXNwCmluZGV4IDk3MDNlYzEzMC4uNTYxNTY0NDQ2IDEwMDY0NAotLS0gYS9zcmMvYXNzZW1i
bHkveDg2LTY0L3RyYW1wcy5saXNwCisrKyBiL3NyYy9hc3NlbWJseS94ODYtNjQvdHJhbXBzLmxp
c3AKQEAgLTMxNCwzICszMTQsMjAgQEAKICAgdW5jb250ZW5kZWQKICAgKGluc3QgcG9wIHJheC10
bikpCiApIDsgZW5kIFBST0dOCisKKyMrc2ItZmliZXIKKyhwcm9nbgorKGRlZmluZS1hc3NlbWJs
eS1yb3V0aW5lIChmaWJlci1zd2FwLXJlZ3MgKDpyZXR1cm4tc3R5bGUgOm5vbmUpKQorICAgICgo
OnRlbXAgcmRpIHVuc2lnbmVkLXJlZyByZGktb2Zmc2V0KQorICAgICAoOnRlbXAgcnNpIHVuc2ln
bmVkLXJlZyByc2ktb2Zmc2V0KSkKKyAgKGVtaXQtc2F2ZS1maWJlci1yZWdzIHJkaSkKKyAgKGVt
aXQtcmVzdG9yZS1maWJlci1yZWdzIHJzaSkKKyAgKGluc3QgcmV0KSkKKworKGRlZmluZS1hc3Nl
bWJseS1yb3V0aW5lIChmaWJlci10cmFtcCAoOnJldHVybi1zdHlsZSA6bm9uZSkpCisgICAgKCg6
dGVtcCByZGkgdW5zaWduZWQtcmVnIHJkaS1vZmZzZXQpCisgICAgICg6dGVtcCByMTIgdW5zaWdu
ZWQtcmVnIHIxMi1vZmZzZXQpKQorICAoaW5zdCBtb3YgcmRpIHIxMikKKyAgKGluc3QgY2FsbCAo
bWFrZS1maXh1cCAiZmliZXJfdHJhbXBfYyIgOmZvcmVpZ24pKQorICAoaW5zdCB1ZDIpKQorKSA7
IGVuZCAjK3NiLWZpYmVyCmRpZmYgLS1naXQgYS9zcmMvY29sZC9iYXNlLXRhcmdldC1mZWF0dXJl
cy5saXNwLWV4cHIgYi9zcmMvY29sZC9iYXNlLXRhcmdldC1mZWF0dXJlcy5saXNwLWV4cHIKaW5k
ZXggZWQxZGUzZmQyLi41NDQ0ZmE2MWMgMTAwNjQ0Ci0tLSBhL3NyYy9jb2xkL2Jhc2UtdGFyZ2V0
LWZlYXR1cmVzLmxpc3AtZXhwcgorKysgYi9zcmMvY29sZC9iYXNlLXRhcmdldC1mZWF0dXJlcy5s
aXNwLWV4cHIKQEAgLTE4Myw2ICsxODMsOSBAQAogIDs7IHg4Nm9pZCBEYXJ3aW4sIEZyZWVCU0Qs
IGFuZCBTb2xhcmlzLgogIDsgOnNiLXRocmVhZAogCisgOzsgbG93LWxldmVsIGZpYmVyIHByaW1p
dGl2ZXMgc3VwcG9ydAorIDsgOnNiLWZpYmVyCisKICA7OyBmdXRleCBzdXBwb3J0CiAgOzsKICA7
OyBXaGlsZSBvbiBsaW51eCB3ZSBhcmUgYWJsZSB0byB1c2UgZnV0ZXhlcyBmb3Igb3VyIGxvY2tp
bmcKZGlmZiAtLWdpdCBhL3NyYy9jb2xkL3NoYXJlZC5saXNwIGIvc3JjL2NvbGQvc2hhcmVkLmxp
c3AKaW5kZXggZGY1N2E2ZmVkLi40YmViYWFhMjYgMTAwNjQ0Ci0tLSBhL3NyYy9jb2xkL3NoYXJl
ZC5saXNwCisrKyBiL3NyYy9jb2xkL3NoYXJlZC5saXNwCkBAIC0zODksNiArMzg5LDEyIEBACiAg
ICAgICAgICAgIjpHRU5DR0MgYW5kIDpDSEVORVlHQyBhcmUgaW5jb21wYXRpYmxlIikKICAgICAg
ICAgICgiKGFuZCBzYi1zYWZlcG9pbnQgKG5vdCAoYW5kIChvciBhcm02NCB4ODYgeDg2LTY0KSAo
b3IgZGFyd2luIGxpbnV4IHdpbjMyKSkpKSIKICAgICAgICAgICAiOlNCLVNBRkVQT0lOVCBub3Qg
c3VwcG9ydGVkIG9uIHNlbGVjdGVkIGFyY2gvT1MiKQorICAgICAgICAgKCIoYW5kIHNiLWZpYmVy
IHNiLXNhZmVwb2ludCkiCisgICAgICAgICAgIjpTQi1GSUJFUiBhbmQgOlNCLVNBRkVQT0lOVCBh
cmUgaW5jb21wYXRpYmxlIikKKyAgICAgICAgICgiKGFuZCBzYi1maWJlciAobm90IChvciB4ODYt
NjQgYXJtNjQpKSkiCisgICAgICAgICAgIjpTQi1GSUJFUiByZXF1aXJlcyA6WDg2LTY0IG9yIDpB
Uk02NCIpCisgICAgICAgICAoIihhbmQgc2ItZmliZXIgd2luMzIpIgorICAgICAgICAgICI6U0It
RklCRVIgaXMgbm90IHN1cHBvcnRlZCBvbiA6V0lOMzIiKQogICAgICAgICAgKCIobm90IChvciBl
bGYgbWFjaC1vIHdpbjMyKSkiCiAgICAgICAgICAgIk5vIGV4ZWN1dGUgb2JqZWN0IGZpbGUgZm9y
bWF0IGZlYXR1cmUgZGVmaW5lZCIpCiAgICAgICAgICAoIihhbmQgY29ucy1wcm9maWxpbmcgKG5v
dCBzYi10aHJlYWQpKSIgIjpDT05TLVBST0ZJTElORyByZXF1aXJlcyA6U0ItVEhSRUFEIikKZGlm
ZiAtLWdpdCBhL3NyYy9jb21waWxlci9hcm02NC9tYWNyb3MubGlzcCBiL3NyYy9jb21waWxlci9h
cm02NC9tYWNyb3MubGlzcAppbmRleCBhYzdlOTgwMjIuLmI4YTI2YTMzZiAxMDA2NDQKLS0tIGEv
c3JjL2NvbXBpbGVyL2FybTY0L21hY3Jvcy5saXNwCisrKyBiL3NyYy9jb21waWxlci9hcm02NC9t
YWNyb3MubGlzcApAQCAtNjA5LDMgKzYwOSwzOCBAQAogICAgICAgICAoc2V0ZiBwcmV2LWNvbnN0
YW50IG5pbCkKICAgICAgICAgKGxvYWQtc3RhY2stdG4gLHRlbXAgLHRuKQogICAgICAgICAsdGVt
cCkpKSkKKworIytzYi1maWJlcgorKGZsZXQgKCh1IChvZmZzZXQpIChtYWtlLXJhbmRvbS10biAo
c2Mtb3ItbG9zZSAndW5zaWduZWQtcmVnKSBvZmZzZXQpKQorICAgICAgIChhIChvZmZzZXQpICht
YWtlLXJhbmRvbS10biAoc2Mtb3ItbG9zZSAnYW55LXJlZykgb2Zmc2V0KSkKKyAgICAgICAoZCAo
b2Zmc2V0KSAobWFrZS1yYW5kb20tdG4gKHNjLW9yLWxvc2UgJ2RvdWJsZS1yZWcpIG9mZnNldCkp
KQorOzs7IFNhdmUgYW5kIHJlc3RvcmUgYSBmaWJlcidzIGNhbGxlZS1zYXZlZCBHUC9GUCByZWdp
c3RlciBzdGF0ZS4KKzs7OyBPZmZzZXRzIG1hdGNoIGBzYl9maWJlcl9yZWdzYCBzdHJ1Y3QuCiso
ZGVmdW4gZW1pdC1zYXZlLWZpYmVyLXJlZ3MgKGJhc2UgdG1wKQorICAoaW5zdCBtb3Ytc3AgdG1w
IG5zcC10bikKKyAgKGluc3Qgc3RyIHRtcCAoQCBiYXNlICN4MDApKQorICAoaW5zdCBzdHAgY2Zw
LXRuICAgICAgICBsci10biAgICAgICAgICAoQCBiYXNlICN4MDgpKSAgIDsgeDI5IHgzMAorICAo
aW5zdCBzdHAgKHUgcjktb2Zmc2V0KSAodSByMTAtb2Zmc2V0KSAoQCBiYXNlICN4MTgpKSAgIDsg
eDE5IHgyMAorICAoaW5zdCBzdHAgdGhyZWFkLXRuICAgICBsZXhlbnYtdG4gICAgICAoQCBiYXNl
ICN4MjgpKSAgIDsgeDIxIHgyMgorICAoaW5zdCBzdHAgbmFyZ3MtdG4gICAgICAoYSBuZnAtb2Zm
c2V0KSAoQCBiYXNlICN4MzgpKSAgIDsgeDIzIHgyNAorICAoaW5zdCBzdHAgb2NmcC10biAgICAg
ICBudWxsLXRuICAgICAgICAoQCBiYXNlICN4NDgpKSAgIDsgeDI1IHgyNgorICAoaW5zdCBzdHAg
Y3NwLXRuICAgICAgICBjYXJkdGFibGUtdG4gICAoQCBiYXNlICN4NTgpKSAgIDsgeDI3IHgyOAor
ICAoaW5zdCBzdHAgKGQgIDgpICAgICAgICAoZCAgOSkgICAgICAgICAoQCBiYXNlICN4NjgpKQor
ICAoaW5zdCBzdHAgKGQgMTApICAgICAgICAoZCAxMSkgICAgICAgICAoQCBiYXNlICN4NzgpKQor
ICAoaW5zdCBzdHAgKGQgMTIpICAgICAgICAoZCAxMykgICAgICAgICAoQCBiYXNlICN4ODgpKQor
ICAoaW5zdCBzdHAgKGQgMTQpICAgICAgICAoZCAxNSkgICAgICAgICAoQCBiYXNlICN4OTgpKSkK
KworKGRlZnVuIGVtaXQtcmVzdG9yZS1maWJlci1yZWdzIChiYXNlIHRtcCkKKyAgKGluc3QgbGRy
IHRtcCAoQCBiYXNlICN4MDApKQorICAoaW5zdCBtb3Ytc3AgbnNwLXRuIHRtcCkKKyAgKGluc3Qg
bGRwIGNmcC10biAgICAgICAgbHItdG4gICAgICAgICAgKEAgYmFzZSAjeDA4KSkgICA7IHgyOSB4
MzAKKyAgKGluc3QgbGRwICh1IHI5LW9mZnNldCkgKHUgcjEwLW9mZnNldCkgKEAgYmFzZSAjeDE4
KSkgICA7IHgxOSB4MjAKKyAgKGluc3QgbGRwIHRocmVhZC10biAgICAgbGV4ZW52LXRuICAgICAg
KEAgYmFzZSAjeDI4KSkgICA7IHgyMSB4MjIKKyAgKGluc3QgbGRwIG5hcmdzLXRuICAgICAgKGEg
bmZwLW9mZnNldCkgKEAgYmFzZSAjeDM4KSkgICA7IHgyMyB4MjQKKyAgKGluc3QgbGRwIG9jZnAt
dG4gICAgICAgbnVsbC10biAgICAgICAgKEAgYmFzZSAjeDQ4KSkgICA7IHgyNSB4MjYKKyAgKGlu
c3QgbGRwIGNzcC10biAgICAgICAgY2FyZHRhYmxlLXRuICAgKEAgYmFzZSAjeDU4KSkgICA7IHgy
NyB4MjgKKyAgKGluc3QgbGRwIChkICA4KSAgICAgICAgKGQgIDkpICAgICAgICAgKEAgYmFzZSAj
eDY4KSkKKyAgKGluc3QgbGRwIChkIDEwKSAgICAgICAgKGQgMTEpICAgICAgICAgKEAgYmFzZSAj
eDc4KSkKKyAgKGluc3QgbGRwIChkIDEyKSAgICAgICAgKGQgMTMpICAgICAgICAgKEAgYmFzZSAj
eDg4KSkKKyAgKGluc3QgbGRwIChkIDE0KSAgICAgICAgKGQgMTUpICAgICAgICAgKEAgYmFzZSAj
eDk4KSkpCispCmRpZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvYXJtNjQvcGFybXMubGlzcCBiL3Ny
Yy9jb21waWxlci9hcm02NC9wYXJtcy5saXNwCmluZGV4IDNlODUxODkwMy4uYmM0ZmQ2ZGNlIDEw
MDY0NAotLS0gYS9zcmMvY29tcGlsZXIvYXJtNjQvcGFybXMubGlzcAorKysgYi9zcmMvY29tcGls
ZXIvYXJtNjQvcGFybXMubGlzcApAQCAtMTEyLDEzICsxMTIsMjEgQEAKIDs7OyBzcGFjZSBkaXJl
Y3RseSBhZnRlciB0aGUgc3RhdGljIHN5bWJvbHMuICBUaGF0IHdheSwgdGhlIHJhdy1hZGRyCiA7
OzsgY2FuIGJlIGxvYWRlZCBkaXJlY3RseSBvdXQgb2YgdGhlbSBieSBpbmRpcmVjdGluZyByZWxh
dGl2ZSB0byBOSUwuCiA7OzsKKzs7OyBMaXNwIGFzc2VtYmx5IHJvdXRpbmVzIHdob3NlIGVudHJ5
IGFkZHJlc3NlcyBuZWVkIHRvIGJlCis7OzsgZGlzY292ZXJhYmxlIGZyb20gQyAoZmliZXJfdHJh
bXBfYywgc2JfZmliZXJfcHJlcGFyZSkuCisoZXZhbC13aGVuICg6Y29tcGlsZS10b3BsZXZlbCA6
bG9hZC10b3BsZXZlbCA6ZXhlY3V0ZSkKKyAgKGRlZnBhcmFtZXRlciAqcnVudGltZS1hc20tcm91
dGluZXMqCisgICAgJygjK3NiLWZpYmVyIGZpYmVyLXN3YXAtcmVncworICAgICAgIytzYi1maWJl
ciBmaWJlci10cmFtcCkpKQorCiAoZGVmY29uc3RhbnQtZXF4ICtzdGF0aWMtc3ltYm9scysKICBg
IygjLXNiLXRocmVhZAogICAgICxAJygqYmluZGluZy1zdGFjay1wb2ludGVyKgogICAgICAgICAq
cHNldWRvLWF0b21pYy1hdG9taWMqCiAgICAgICAgICpwc2V1ZG8tYXRvbWljLWludGVycnVwdGVk
KikKICAgICAgOzsgaW50ZXJydXB0IGhhbmRsaW5nCi0gICAgICxAK2NvbW1vbi1zdGF0aWMtc3lt
Ym9scyspCisgICAgICxAK2NvbW1vbi1zdGF0aWMtc3ltYm9scysKKyAgICAgLEAqcnVudGltZS1h
c20tcm91dGluZXMqKQogICAjJ2VxdWFscCkKIAogKGRlZmNvbnN0YW50LWVxeCArc3RhdGljLWZk
ZWZucysgYCMoLEBjb21tb24tc3RhdGljLWZkZWZucykgIydlcXVhbHApCmRpZmYgLS1naXQgYS9z
cmMvY29tcGlsZXIveDg2LTY0L21hY3Jvcy5saXNwIGIvc3JjL2NvbXBpbGVyL3g4Ni02NC9tYWNy
b3MubGlzcAppbmRleCBlYTc1NTA0YWEuLjM4MDljNmYzMyAxMDA2NDQKLS0tIGEvc3JjL2NvbXBp
bGVyL3g4Ni02NC9tYWNyb3MubGlzcAorKysgYi9zcmMvY29tcGlsZXIveDg2LTY0L21hY3Jvcy5s
aXNwCkBAIC00NzksMyArNDc5LDI4IEBACiAgICAgICAgICAod29yZC1pbmRleCAoKyBpbnN0YW5j
ZS1zbG90cy1vZmZzZXQgKGRzZC1pbmRleCBzbG90KSkpKQogICAgIGAoZWEgLCgtIChhc2ggd29y
ZC1pbmRleCB3b3JkLXNoaWZ0KSBpbnN0YW5jZS1wb2ludGVyLWxvd3RhZykKICAgICAgICAgICxi
YXNlLXJlZykpKQorCisjK3NiLWZpYmVyCisocHJvZ24KKzs7OyBTYXZlIGFuZCByZXN0b3JlIGEg
ZmliZXIncyBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXIgc3RhdGUuICBPZmZzZXRzCis7OzsgbWF0Y2gg
YHNiX2ZpYmVyX3JlZ3NgIHN0cnVjdC4KKyhkZWZ1biBlbWl0LXNhdmUtZmliZXItcmVncyAoYmFz
ZSkKKyAgKGluc3QgbW92IChlYSAjeDAwIGJhc2UpIHJzcC10bikKKyAgKGluc3QgbW92IChlYSAj
eDA4IGJhc2UpIHJieC10bikKKyAgKGluc3QgbW92IChlYSAjeDEwIGJhc2UpIHJicC10bikKKyAg
KGluc3QgbW92IChlYSAjeDE4IGJhc2UpIHIxMi10bikKKyAgKGluc3QgbW92IChlYSAjeDIwIGJh
c2UpIHIxMy10bikKKyAgKGluc3QgbW92IChlYSAjeDI4IGJhc2UpIHIxNC10bikKKyAgKGluc3Qg
bW92IChlYSAjeDMwIGJhc2UpIHIxNS10bikKKyAgKGluc3Qgc3RteGNzciAoZWEgI3gzOCBiYXNl
KSkpCisKKyhkZWZ1biBlbWl0LXJlc3RvcmUtZmliZXItcmVncyAoYmFzZSkKKyAgKGluc3QgbW92
IHJzcC10biAoZWEgI3gwMCBiYXNlKSkKKyAgKGluc3QgbW92IHJieC10biAoZWEgI3gwOCBiYXNl
KSkKKyAgKGluc3QgbW92IHJicC10biAoZWEgI3gxMCBiYXNlKSkKKyAgKGluc3QgbW92IHIxMi10
biAoZWEgI3gxOCBiYXNlKSkKKyAgKGluc3QgbW92IHIxMy10biAoZWEgI3gyMCBiYXNlKSkKKyAg
KGluc3QgbW92IHIxNC10biAoZWEgI3gyOCBiYXNlKSkKKyAgKGluc3QgbW92IHIxNS10biAoZWEg
I3gzMCBiYXNlKSkKKyAgKGluc3QgbGRteGNzciAoZWEgI3gzOCBiYXNlKSkpCispCmRpZmYgLS1n
aXQgYS9zcmMvY29tcGlsZXIveDg2LTY0L3Bhcm1zLmxpc3AgYi9zcmMvY29tcGlsZXIveDg2LTY0
L3Bhcm1zLmxpc3AKaW5kZXggNDYzZDhlMDAyLi5iMjI3NDZjN2MgMTAwNjQ0Ci0tLSBhL3NyYy9j
b21waWxlci94ODYtNjQvcGFybXMubGlzcAorKysgYi9zcmMvY29tcGlsZXIveDg2LTY0L3Bhcm1z
Lmxpc3AKQEAgLTE3OSw2ICsxNzksMTQgQEAKIDs7Ozsgc3RhdGljIHN5bWJvbHMKIAogKGRlZnZh
ciAqYmluZGluZy1zdGFjay1wb2ludGVyKikKKworOzs7IEFzc2VtYmx5IHJvdXRpbmVzIHdob3Nl
IGVudHJ5IGFkZHJlc3NlcyBuZWVkIHRvIGJlIGRpc2NvdmVyYWJsZQorOzs7IGZyb20gQworKGV2
YWwtd2hlbiAoOmNvbXBpbGUtdG9wbGV2ZWwgOmxvYWQtdG9wbGV2ZWwgOmV4ZWN1dGUpCisgIChk
ZWZwYXJhbWV0ZXIgKnJ1bnRpbWUtYXNtLXJvdXRpbmVzKgorICAgICcoIytzYi1maWJlciBmaWJl
ci1zd2FwLXJlZ3MKKyAgICAgICMrc2ItZmliZXIgZmliZXItdHJhbXApKSkKKwogOzs7IFRoZXNl
IHN5bWJvbHMgcmVzaWRlIGluIGxvdyBzdGF0aWMgc3BhY2UgYW5kIHJlZmVyZW5jZWQgb2ZmIE5V
TEwtVE4KIChkZWZjb25zdGFudC1lcXggK3N0YXRpYy1zeW1ib2xzKwogIGAjKCxAK2NvbW1vbi1z
dGF0aWMtc3ltYm9scysKQEAgLTE4OSw3ICsxOTcsOCBAQAogICAgICMtc2ItdGhyZWFkICphbGll
bi1zdGFjay1wb2ludGVyKiAgICA7IGEgdGhyZWFkIHNsb3QgaWYgIytzYi10aHJlYWQKICAgICA7
OyBBc20gY29kZSBhc3NlbWJsZWQgYnkgREVGSU5FLUFMSUVOLUNBTExBQkxFIHJlc2lkZXMgaW4g
c3RhdGljIHNwYWNlIGFuZCBsb29rcyB1cAogICAgIDs7IHRoZSBhZGRyZXNzIG9mIHRoZSBDIGhl
bHBlciB2aWEgdGhlIFNZTUJPTC1WQUxVRSBzbG90IG9mIHRoaXMgTGlzcCBzeW1ib2wuCi0gICAg
Y2FsbGJhY2std3JhcHBlci10cmFtcG9saW5lKQorICAgIGNhbGxiYWNrLXdyYXBwZXItdHJhbXBv
bGluZQorICAgICxAKnJ1bnRpbWUtYXNtLXJvdXRpbmVzKikKICAgIydlcXVhbHApCiAKIDs7IE5v
IHN0YXRpYy1mZGVmbnMgYXJlIGFjdHVhbGx5IG5lZWRlZCwgYnV0ICMoKSBoZXJlIGNhdXNlcyB0
aGUKZGlmZiAtLWdpdCBhL3NyYy9ydW50aW1lL0NvbmZpZy5hcm02NC1hbmRyb2lkIGIvc3JjL3J1
bnRpbWUvQ29uZmlnLmFybTY0LWFuZHJvaWQKaW5kZXggNmJkZDQxZDdmLi5lYWUzMjRjYTMgMTAw
NjQ0Ci0tLSBhL3NyYy9ydW50aW1lL0NvbmZpZy5hcm02NC1hbmRyb2lkCisrKyBiL3NyYy9ydW50
aW1lL0NvbmZpZy5hcm02NC1hbmRyb2lkCkBAIC0yMiw2ICsyMiwxMSBAQCBBU1NFTV9TUkMgPSBh
cm02NC1hc3NlbS5TCiBBUkNIX1NSQyA9IGFybTY0LWFyY2guYwogCiBPU19TUkMgPSBsaW51eC1v
cy5jIGxpbnV4LW1tYW4uYyBhcm02NC1saW51eC1vcy5jIGFuZHJvaWQtb3MuYyBhcm02NC1hbmRy
b2lkLW9zLmMKKworaWZkZWYgTElTUF9GRUFUVVJFX1NCX0ZJQkVSCisgIE9TX1NSQyArPSBmaWJl
ci5jIGFybTY0LWZpYmVyLmMKK2VuZGlmCisKIE9TX0xJQlMgPSAtbGRsCiAKIENGTEFHUyArPSAt
c3RkPWdudTk5IC1XdW51c2VkLXBhcmFtZXRlciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciAtbW9t
aXQtbGVhZi1mcmFtZS1wb2ludGVyCmRpZmYgLS1naXQgYS9zcmMvcnVudGltZS9Db25maWcuYXJt
NjQtYnNkIGIvc3JjL3J1bnRpbWUvQ29uZmlnLmFybTY0LWJzZAppbmRleCA2Y2JjZDM0NGIuLjYx
MDNmN2VjYSAxMDA2NDQKLS0tIGEvc3JjL3J1bnRpbWUvQ29uZmlnLmFybTY0LWJzZAorKysgYi9z
cmMvcnVudGltZS9Db25maWcuYXJtNjQtYnNkCkBAIC0xNCw2ICsxNCwxMCBAQCBBUkNIX1NSQyA9
IGFybTY0LWFyY2guYwogCiBPU19TUkMgPSBic2Qtb3MuYyBhcm02NC1ic2Qtb3MuYwogCitpZmRl
ZiBMSVNQX0ZFQVRVUkVfU0JfRklCRVIKKyAgT1NfU1JDICs9IGZpYmVyLmMgYXJtNjQtZmliZXIu
YworZW5kaWYKKwogaWZkZWYgTElTUF9GRUFUVVJFX0dFTkNHQwogICBHQ19TUkMgPSBmdWxsY2dj
LmMgZ2VuY2djLmMgdHJhY2Vyb290LmMKIGVuZGlmCmRpZmYgLS1naXQgYS9zcmMvcnVudGltZS9D
b25maWcuYXJtNjQtZGFyd2luIGIvc3JjL3J1bnRpbWUvQ29uZmlnLmFybTY0LWRhcndpbgppbmRl
eCAxZGUwMGY2ZjQuLjQ2MDIyYzRkZCAxMDA2NDQKLS0tIGEvc3JjL3J1bnRpbWUvQ29uZmlnLmFy
bTY0LWRhcndpbgorKysgYi9zcmMvcnVudGltZS9Db25maWcuYXJtNjQtZGFyd2luCkBAIC0xMyw2
ICsxMywxMCBAQCBDRkxBR1MgKz0gLWcgLVdhbGwgLWZkb2xsYXJzLWluLWlkZW50aWZpZXJzIC1h
cmNoIGFybTY0CiAKIE9TX1NSQyA9IGJzZC1vcy5jIGFybTY0LWJzZC1vcy5jIGRhcndpbi1vcy5j
IGFybTY0LWRhcndpbi1vcy5jCiAKK2lmZGVmIExJU1BfRkVBVFVSRV9TQl9GSUJFUgorICBPU19T
UkMgKz0gZmliZXIuYyBhcm02NC1maWJlci5jCitlbmRpZgorCiBPU19MSUJTID0gLWxjIC1sZGwK
IGlmZGVmIExJU1BfRkVBVFVSRV9TQl9USFJFQUQKICAgT1NfTElCUyArPSAtbHB0aHJlYWQKZGlm
ZiAtLWdpdCBhL3NyYy9ydW50aW1lL0NvbmZpZy5hcm02NC1saW51eCBiL3NyYy9ydW50aW1lL0Nv
bmZpZy5hcm02NC1saW51eAppbmRleCAxNTEwMTQzZDkuLjk5MWU2YjZhZiAxMDA2NDQKLS0tIGEv
c3JjL3J1bnRpbWUvQ29uZmlnLmFybTY0LWxpbnV4CisrKyBiL3NyYy9ydW50aW1lL0NvbmZpZy5h
cm02NC1saW51eApAQCAtMTMsNiArMTMsMTEgQEAgQVNTRU1fU1JDID0gYXJtNjQtYXNzZW0uUwog
QVJDSF9TUkMgPSBhcm02NC1hcmNoLmMKIAogT1NfU1JDID0gbGludXgtb3MuYyBsaW51eC1tbWFu
LmMgYXJtNjQtbGludXgtb3MuYworCitpZmRlZiBMSVNQX0ZFQVRVUkVfU0JfRklCRVIKKyAgT1Nf
U1JDICs9IGZpYmVyLmMgYXJtNjQtZmliZXIuYworZW5kaWYKKwogT1NfTElCUyA9IC1sZGwgLVds
LC1uby1hcy1uZWVkZWQKIAogaWZkZWYgTElTUF9GRUFUVVJFX0lNTU9CSUxFX1NQQUNFCmRpZmYg
LS1naXQgYS9zcmMvcnVudGltZS9Db25maWcueDg2LTY0LWFuZHJvaWQgYi9zcmMvcnVudGltZS9D
b25maWcueDg2LTY0LWFuZHJvaWQKaW5kZXggNzcxOTZiNjU5Li5jMjVmZDVkZDEgMTAwNjQ0Ci0t
LSBhL3NyYy9ydW50aW1lL0NvbmZpZy54ODYtNjQtYW5kcm9pZAorKysgYi9zcmMvcnVudGltZS9D
b25maWcueDg2LTY0LWFuZHJvaWQKQEAgLTIwLDYgKzIwLDEwIEBAIEFTU0VNX1NSQyA9IHg4Ni02
NC1hc3NlbS5TCiBBUkNIX1NSQyA9IHg4Ni02NC1hcmNoLmMKIAogT1NfU1JDID0gbGludXgtb3Mu
YyBsaW51eC1tbWFuLmMgeDg2LTY0LWxpbnV4LW9zLmMgYW5kcm9pZC1vcy5jIHg4Ni02NC1hbmRy
b2lkLW9zLmMKKworaWZkZWYgTElTUF9GRUFUVVJFX1NCX0ZJQkVSCisgIE9TX1NSQyArPSBmaWJl
ci5jIHg4Ni02NC1maWJlci5jCitlbmRpZgogT1NfTElCUyA9IC1sZGwKIAogQ0ZMQUdTICs9IC1X
dW51c2VkLXBhcmFtZXRlciAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciAtbW9taXQtbGVhZi1mcmFt
ZS1wb2ludGVyCmRpZmYgLS1naXQgYS9zcmMvcnVudGltZS9Db25maWcueDg2LTY0LWJzZCBiL3Ny
Yy9ydW50aW1lL0NvbmZpZy54ODYtNjQtYnNkCmluZGV4IDEyNjFmYTFhOS4uMzJhZjZjZTBhIDEw
MDY0NAotLS0gYS9zcmMvcnVudGltZS9Db25maWcueDg2LTY0LWJzZAorKysgYi9zcmMvcnVudGlt
ZS9Db25maWcueDg2LTY0LWJzZApAQCAtMTQsNiArMTQsMTAgQEAgQVNTRU1fU1JDID0geDg2LTY0
LWFzc2VtLlMKIEFSQ0hfU1JDID0geDg2LTY0LWFyY2guYwogCiBPU19TUkMgPSBic2Qtb3MuYyB4
ODYtNjQtYnNkLW9zLmMKKworaWZkZWYgTElTUF9GRUFUVVJFX1NCX0ZJQkVSCisgIE9TX1NSQyAr
PSBmaWJlci5jIHg4Ni02NC1maWJlci5jCitlbmRpZgogT1NfTElCUyA9ICMgLWxkbAogaWZkZWYg
TElTUF9GRUFUVVJFX1NCX0NPUkVfQ09NUFJFU1NJT04KICAgT1NfTElCUyArPSAtbHpzdGQKZGlm
ZiAtLWdpdCBhL3NyYy9ydW50aW1lL0NvbmZpZy54ODYtNjQtZGFyd2luIGIvc3JjL3J1bnRpbWUv
Q29uZmlnLng4Ni02NC1kYXJ3aW4KaW5kZXggYzVkYjU1NDVlLi43ZWFkZWJlNzggMTAwNjQ0Ci0t
LSBhL3NyYy9ydW50aW1lL0NvbmZpZy54ODYtNjQtZGFyd2luCisrKyBiL3NyYy9ydW50aW1lL0Nv
bmZpZy54ODYtNjQtZGFyd2luCkBAIC0zOSw2ICszOSwxMCBAQCBlbmRpZgogQVNTRU1fU1JDID0g
eDg2LTY0LWFzc2VtLlMKIEFSQ0hfU1JDID0geDg2LTY0LWFyY2guYwogCitpZmRlZiBMSVNQX0ZF
QVRVUkVfU0JfRklCRVIKKyAgT1NfU1JDICs9IGZpYmVyLmMgeDg2LTY0LWZpYmVyLmMKK2VuZGlm
CisKIExJTktGTEFHUyArPSAtYXJjaCB4ODZfNjQgLWR5bmFtaWMgLXR3b2xldmVsX25hbWVzcGFj
ZSAtYmluZF9hdF9sb2FkIC1wYWdlemVyb19zaXplIDB4MTAwMDAwCiAKIENGTEFHUyArPSAtYXJj
aCB4ODZfNjQgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIKZGlmZiAtLWdpdCBhL3NyYy9ydW50aW1l
L0NvbmZpZy54ODYtNjQtaGFpa3UgYi9zcmMvcnVudGltZS9Db25maWcueDg2LTY0LWhhaWt1Cmlu
ZGV4IGFhM2Q0NDBjOS4uYzNkMDlmY2ZkIDEwMDY0NAotLS0gYS9zcmMvcnVudGltZS9Db25maWcu
eDg2LTY0LWhhaWt1CisrKyBiL3NyYy9ydW50aW1lL0NvbmZpZy54ODYtNjQtaGFpa3UKQEAgLTEz
LDYgKzEzLDEwIEBAIEFTU0VNX1NSQyA9IHg4Ni02NC1hc3NlbS5TCiBBUkNIX1NSQyA9IHg4Ni02
NC1hcmNoLmMKIE9TX1NSQyA9IGhhaWt1LW9zLmMgeDg2LTY0LWhhaWt1LW9zLmMKIAoraWZkZWYg
TElTUF9GRUFUVVJFX1NCX0ZJQkVSCisgIE9TX1NSQyArPSBmaWJlci5jIHg4Ni02NC1maWJlci5j
CitlbmRpZgorCiBDRkxBR1MgKz0gLUkvYm9vdC9zeXN0ZW0vZGV2ZWxvcC9oZWFkZXJzL3ByaXZh
dGUvc3lzdGVtL2FyY2gveDg2XzY0CiBMSU5LRkxBR1MgKz0gLVdsLC0tZXhwb3J0LWR5bmFtaWMK
IE9TX0xJQlMgKz0gLWxiZSAtbG5ldHdvcmsgLWxic2QKZGlmZiAtLWdpdCBhL3NyYy9ydW50aW1l
L0NvbmZpZy54ODYtNjQtbGludXggYi9zcmMvcnVudGltZS9Db25maWcueDg2LTY0LWxpbnV4Cmlu
ZGV4IGFiYzY1MTliNi4uMGYzMjU0ODBiIDEwMDY0NAotLS0gYS9zcmMvcnVudGltZS9Db25maWcu
eDg2LTY0LWxpbnV4CisrKyBiL3NyYy9ydW50aW1lL0NvbmZpZy54ODYtNjQtbGludXgKQEAgLTEz
LDYgKzEzLDEwIEBAIEFTU0VNX1NSQyA9IHg4Ni02NC1hc3NlbS5TCiBBUkNIX1NSQyA9IHg4Ni02
NC1hcmNoLmMKIE9TX1NSQyA9IGxpbnV4LW9zLmMgbGludXgtbW1hbi5jIHg4Ni02NC1saW51eC1v
cy5jCiAKK2lmZGVmIExJU1BfRkVBVFVSRV9TQl9GSUJFUgorICBPU19TUkMgKz0gZmliZXIuYyB4
ODYtNjQtZmliZXIuYworZW5kaWYKKwogIyBUaGUgIi0tV2wsLS1leHBvcnQtZHluYW1pYyIgZmxh
Z3MgYXJlIGhlcmUgdG8gaGVscCBwZW9wbGUKICMgZXhwZXJpbWVudGluZyB3aXRoIGNhbGxiYWNr
cyBmcm9tIEMgdG8gU0JDTCwgYnkgYWxsb3dpbmcgbGlua2FnZSB0bwogIyBTQkNMIHNyYy9ydW50
aW1lLyouYyBzeW1ib2xzIGZyb20gQy4gV29yayBvbiB0aGlzIGlzIGdvb2QsIGJ1dCBpdCdzCmRp
ZmYgLS1naXQgYS9zcmMvcnVudGltZS9Db25maWcueDg2LTY0LXN1bm9zIGIvc3JjL3J1bnRpbWUv
Q29uZmlnLng4Ni02NC1zdW5vcwppbmRleCA3ZmIzNjljZWEuLmUwODk2NDhhYyAxMDA2NDQKLS0t
IGEvc3JjL3J1bnRpbWUvQ29uZmlnLng4Ni02NC1zdW5vcworKysgYi9zcmMvcnVudGltZS9Db25m
aWcueDg2LTY0LXN1bm9zCkBAIC0xMiw2ICsxMiwxMCBAQCBBU1NFTV9TUkMgPSB4ODYtNjQtYXNz
ZW0uUwogQVJDSF9TUkMgPSB4ODYtNjQtYXJjaC5jCiAKIE9TX1NSQyA9IHN1bm9zLW9zLmMgeDg2
LTY0LXN1bm9zLW9zLmMKKworaWZkZWYgTElTUF9GRUFUVVJFX1NCX0ZJQkVSCisgIE9TX1NSQyAr
PSBmaWJlci5jIHg4Ni02NC1maWJlci5jCitlbmRpZgogT1NfTElCUz0gLWxkbCAtbHNvY2tldCAt
bG5zbCAtbHJ0CiBpZmRlZiBMSVNQX0ZFQVRVUkVfU0JfQ09SRV9DT01QUkVTU0lPTgogICBPU19M
SUJTICs9IC1senN0ZApkaWZmIC0tZ2l0IGEvc3JjL3J1bnRpbWUvYWxsb2MuYyBiL3NyYy9ydW50
aW1lL2FsbG9jLmMKaW5kZXggYTc1Mzg1MDJkLi40ZDJkZjdmOTcgMTAwNjQ0Ci0tLSBhL3NyYy9y
dW50aW1lL2FsbG9jLmMKKysrIGIvc3JjL3J1bnRpbWUvYWxsb2MuYwpAQCAtMjIsNiArMjIsNyBA
QAogI2luY2x1ZGUgImFyY2guaCIgLy8gd2h5IGlzIHRoaXMgd2hlcmUgZnVuY2FsbDIgaXMgZGVj
bGFyZWQ/Pz8KICNpbmNsdWRlICJnZW5lc2lzL3N5bWJvbC5oIgogI2luY2x1ZGUgImNvZGUuaCIK
KyNpbmNsdWRlICJmaWJlci5oIgogCiBsaXNwb2JqKiBhdG9taWNfYnVtcF9zdGF0aWNfc3BhY2Vf
ZnJlZV9wdHIoaW50IG5ieXRlcykKIHsKQEAgLTgxMSw2ICs4MTIsOSBAQCBhbGxvY190aHJlYWRf
c3RydWN0KHZvaWQqIHNwYWNlcykgewogdm9pZCBmcmVlX3RocmVhZF9zdHJ1Y3Qoc3RydWN0IHRo
cmVhZCAqdGgpCiB7CiAgICAgc3RydWN0IGV4dHJhX3RocmVhZF9kYXRhICpleHRyYV9kYXRhID0g
dGhyZWFkX2V4dHJhX2RhdGEodGgpOworI2lmZGVmIExJU1BfRkVBVFVSRV9TQl9GSUJFUgorICAg
IHNiX2ZpYmVyX3JlbGVhc2VfcmVnaXN0ZXJlZCh0aCk7CisjZW5kaWYKICAgICBpZiAoZXh0cmFf
ZGF0YS0+YXJlbmFfc2F2ZWFyZWEpIGZyZWUoZXh0cmFfZGF0YS0+YXJlbmFfc2F2ZWFyZWEpOwog
ICAgIG9zX2RlYWxsb2NhdGUoKG9zX3ZtX2FkZHJlc3NfdCkgdGgtPm9zX2FkZHJlc3MsIFRIUkVB
RF9TVFJVQ1RfU0laRSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvcnVudGltZS9hcm02NC1maWJlci5j
IGIvc3JjL3J1bnRpbWUvYXJtNjQtZmliZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAuLjNmYWEwODVkNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9ydW50aW1lL2FybTY0
LWZpYmVyLmMKQEAgLTAsMCArMSwxNjEgQEAKKyNpbmNsdWRlICJmaWJlci5oIgorI2luY2x1ZGUg
ImFsaWduLmgiCisjaW5jbHVkZSAiZ2VuZXNpcy9zeW1ib2wuaCIKKyNpbmNsdWRlICJnZW5lc2lz
L3N0YXRpYy1zeW1ib2xzLmgiCisjaW5jbHVkZSAib3MuaCIKKyNpbmNsdWRlICJ0aHJlYWQuaCIK
KyNpbmNsdWRlICJ2YWxpZGF0ZS5oIgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0
cmluZy5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisKKyNpZm5kZWYgTUFQX1NUQUNLCisjZGVm
aW5lIE1BUF9TVEFDSyAwCisjZW5kaWYKKwordm9pZCBzYl9maWJlcl9wcmVwYXJlKHN0cnVjdCBz
Yl9maWJlcl9jdHggKmYsCisgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmZuKSh2b2lkICop
LCB2b2lkICphcmcpCit7CisgICAgZi0+ZW50cnlfZm4gPSBmbjsKKyAgICBmLT5lbnRyeV9hcmcg
PSBhcmc7CisgICAgLyogQUFQQ1M2NCByZXF1aXJlcyBTUCB0byBiZSAxNi1ieXRlIGFsaWduZWQg
YXQgcHVibGljIGludGVyZmFjZXMuICovCisgICAgZi0+cmVncy5zcCAgPSAodm9pZCAqKSgodWlu
dHB0cl90KWYtPnN0YWNrX2VuZCAmIH4odWludHB0cl90KTB4Rik7CisgICAgZi0+cmVncy5mcCAg
PSAwOworICAgIGYtPnJlZ3MubHIgID0gKHZvaWQgKilTWU1CT0woRklCRVJfVFJBTVApLT52YWx1
ZTsKKyAgICBmLT5yZWdzLngxOSA9ICh2b2lkICopZjsKKyAgICBmLT5yZWdzLngyMCA9IDA7Cisg
ICAgZi0+cmVncy54MjEgPSAwOworICAgIGYtPnJlZ3MueDIyID0gMDsKKyAgICBmLT5yZWdzLngy
MyA9IDA7CisgICAgZi0+cmVncy54MjQgPSAwOworICAgIGYtPnJlZ3MueDI1ID0gMDsKKyAgICBm
LT5yZWdzLngyNiA9IDA7CisgICAgZi0+cmVncy54MjcgPSAwOworICAgIGYtPnJlZ3MueDI4ID0g
MDsKKyAgICBmLT5yZWdzLmQ4ID0gZi0+cmVncy5kOSA9IGYtPnJlZ3MuZDEwID0gZi0+cmVncy5k
MTEgPSAwLjA7CisgICAgZi0+cmVncy5kMTIgPSBmLT5yZWdzLmQxMyA9IGYtPnJlZ3MuZDE0ID0g
Zi0+cmVncy5kMTUgPSAwLjA7Cit9CisKK3ZvaWQgKnNiX2ZpYmVyX3NwKGNvbnN0IHN0cnVjdCBz
Yl9maWJlcl9jdHggKmYpCit7CisgICAgcmV0dXJuIGYtPnJlZ3Muc3A7Cit9CisKK2ludCBzYl9m
aWJlcl9nY19yZWdzKGNvbnN0IHN0cnVjdCBzYl9maWJlcl9jdHggKmYsIGxpc3BvYmogKm91dCwg
aW50IG1heCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IG4gPSAxMTsKKyAgICBpZiAobWF4IDwg
bikgcmV0dXJuIDA7CisgICAgaW50IGkgPSAwOworICAgIG91dFtpKytdID0gKGxpc3BvYmopZi0+
cmVncy5mcDsKKyAgICBvdXRbaSsrXSA9IChsaXNwb2JqKWYtPnJlZ3MueDE5OworICAgIG91dFtp
KytdID0gKGxpc3BvYmopZi0+cmVncy54MjA7CisgICAgb3V0W2krK10gPSAobGlzcG9iailmLT5y
ZWdzLngyMTsKKyAgICBvdXRbaSsrXSA9IChsaXNwb2JqKWYtPnJlZ3MueDIyOworICAgIG91dFtp
KytdID0gKGxpc3BvYmopZi0+cmVncy54MjM7CisgICAgb3V0W2krK10gPSAobGlzcG9iailmLT5y
ZWdzLngyNDsKKyAgICBvdXRbaSsrXSA9IChsaXNwb2JqKWYtPnJlZ3MueDI1OworICAgIG91dFtp
KytdID0gKGxpc3BvYmopZi0+cmVncy54MjY7CisgICAgb3V0W2krK10gPSAobGlzcG9iailmLT5y
ZWdzLngyNzsKKyAgICBvdXRbaSsrXSA9IChsaXNwb2JqKWYtPnJlZ3MueDI4OworICAgIHJldHVy
biBpOworfQorCit2b2lkIHNiX2ZpYmVyX3JlYmluZF90aHJlYWQoc3RydWN0IHNiX2ZpYmVyX2N0
eCAqZiwgc3RydWN0IHRocmVhZCAqbmV3X293bmVyKQoreworICAgIGYtPnJlZ3MueDIxID0gKHZv
aWQgKiluZXdfb3duZXI7Cit9CisKK2ludCBzYl9maWJlcl9saXNwX3N0YWNrX2FsbG9jKHN0cnVj
dCBzYl9maWJlcl9jdHggKmYsIHNpemVfdCBzaXplKQoreworICAgIHNpemVfdCBwcyA9IG9zX3Jl
cG9ydGVkX3BhZ2Vfc2l6ZTsKKyAgICBzaXplX3QgZ3VhcmQgPSBTVEFDS19HVUFSRF9TSVpFOwor
ICAgIHNpemUgPSBBTElHTl9VUChzaXplID8gc2l6ZSA6IDY1NTM2LCBwcyk7CisgICAgc2l6ZV90
IHRvdGFsID0gc2l6ZSArIDMqZ3VhcmQ7CisgICAgdm9pZCAqcCA9IG1tYXAoTlVMTCwgdG90YWws
IFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisgICAgICAgICAgICAgICAgICAgTUFQX1BSSVZBVEUg
fCBNQVBfQU5PTllNT1VTIHwgTUFQX1NUQUNLLCAtMSwgMCk7CisgICAgaWYgKHAgPT0gTUFQX0ZB
SUxFRCkgcmV0dXJuIC0xOworICAgIG1wcm90ZWN0KChjaGFyICopcCArIHNpemUgKyBndWFyZCwg
ICBndWFyZCwgUFJPVF9OT05FKTsKKyAgICBtcHJvdGVjdCgoY2hhciAqKXAgKyBzaXplICsgMipn
dWFyZCwgZ3VhcmQsIFBST1RfTk9ORSk7CisgICAgZi0+Y29udHJvbF9zdGFja19iYXNlICAgICAg
ID0gKGxpc3BvYmogKilwOworICAgIGYtPmNvbnRyb2xfc3RhY2tfZW5kICAgICAgICA9IChsaXNw
b2JqICopKChjaGFyICopcCArIHRvdGFsKTsKKyAgICBmLT5jb250cm9sX3N0YWNrX3BvaW50ZXIg
ICAgPSAobGlzcG9iaiAqKXA7CisgICAgZi0+Y29udHJvbF9mcmFtZV9wb2ludGVyICAgID0gTlVM
TDsKKyAgICBmLT5jb250cm9sX3N0YWNrX2FsbG9jX3NpemUgPSB0b3RhbDsKKyAgICBmLT5jc19n
dWFyZF9wcm90ZWN0ZWQgICAgICAgPSAxOworICAgIGYtPmRpcnR5X2hpZ2ggICAgICAgICAgICAg
ICA9IChsaXNwb2JqICopcDsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBzYl9maWJlcl9saXNw
X3N0YWNrX2ZyZWUoc3RydWN0IHNiX2ZpYmVyX2N0eCAqZikKK3sKKyAgICBpZiAoZi0+Y29udHJv
bF9zdGFja19hbGxvY19zaXplICYmIGYtPmNvbnRyb2xfc3RhY2tfYmFzZSkKKyAgICAgICAgbXVu
bWFwKGYtPmNvbnRyb2xfc3RhY2tfYmFzZSwgZi0+Y29udHJvbF9zdGFja19hbGxvY19zaXplKTsK
KyAgICBmLT5jb250cm9sX3N0YWNrX2Jhc2UgICAgICAgPSBOVUxMOworICAgIGYtPmNvbnRyb2xf
c3RhY2tfZW5kICAgICAgICA9IE5VTEw7CisgICAgZi0+Y29udHJvbF9zdGFja19wb2ludGVyICAg
ID0gTlVMTDsKKyAgICBmLT5jb250cm9sX2ZyYW1lX3BvaW50ZXIgICAgPSBOVUxMOworICAgIGYt
PmNvbnRyb2xfc3RhY2tfYWxsb2Nfc2l6ZSA9IDA7Cit9CisKK3ZvaWQgc2JfZmliZXJfbGlzcF9z
dGFja19jYXB0dXJlX21haW4oc3RydWN0IHNiX2ZpYmVyX2N0eCAqZiwgc3RydWN0IHRocmVhZCAq
dGgpCit7CisgICAgZi0+Y29udHJvbF9zdGFja19iYXNlICAgICAgID0gdGgtPmNvbnRyb2xfc3Rh
Y2tfc3RhcnQ7CisgICAgZi0+Y29udHJvbF9zdGFja19lbmQgICAgICAgID0gdGgtPmNvbnRyb2xf
c3RhY2tfZW5kOworICAgIGYtPmNvbnRyb2xfc3RhY2tfcG9pbnRlciAgICA9IHRoLT5jb250cm9s
X3N0YWNrX3BvaW50ZXI7CisgICAgZi0+Y29udHJvbF9mcmFtZV9wb2ludGVyICAgID0gdGgtPmNv
bnRyb2xfZnJhbWVfcG9pbnRlcjsKKyAgICBmLT5jb250cm9sX3N0YWNrX2FsbG9jX3NpemUgPSAw
OyAgIC8qIG5vdCBvd25lZCAqLworICAgIGYtPmNzX2d1YXJkX3Byb3RlY3RlZCA9CisgICAgICAg
IHRoLT5zdGF0ZV93b3JkLmNvbnRyb2xfc3RhY2tfZ3VhcmRfcGFnZV9wcm90ZWN0ZWQ7CisgICAg
Zi0+ZGlydHlfaGlnaCA9IHRoLT5jb250cm9sX3N0YWNrX3BvaW50ZXI7Cit9CisKK3ZvaWQgc2Jf
ZmliZXJfbGlzcF9zdGFja19zdXNwZW5kKHN0cnVjdCBzYl9maWJlcl9jdHggKmYsIHN0cnVjdCB0
aHJlYWQgKnRoKQoreworICAgIGYtPmNvbnRyb2xfc3RhY2tfYmFzZSAgICA9IHRoLT5jb250cm9s
X3N0YWNrX3N0YXJ0OworICAgIGYtPmNvbnRyb2xfc3RhY2tfZW5kICAgICA9IHRoLT5jb250cm9s
X3N0YWNrX2VuZDsKKyAgICBmLT5jb250cm9sX3N0YWNrX3BvaW50ZXIgPSB0aC0+Y29udHJvbF9z
dGFja19wb2ludGVyOworICAgIGYtPmNvbnRyb2xfZnJhbWVfcG9pbnRlciA9IHRoLT5jb250cm9s
X2ZyYW1lX3BvaW50ZXI7CisgICAgZi0+Y3NfZ3VhcmRfcHJvdGVjdGVkICAgID0KKyAgICAgICAg
dGgtPnN0YXRlX3dvcmQuY29udHJvbF9zdGFja19ndWFyZF9wYWdlX3Byb3RlY3RlZDsKKyAgICBp
ZiAoZi0+Y29udHJvbF9zdGFja19wb2ludGVyICYmIGYtPmNvbnRyb2xfc3RhY2tfZW5kKSB7Cisg
ICAgICAgIGNoYXIgKmNzcCA9IChjaGFyICopZi0+Y29udHJvbF9zdGFja19wb2ludGVyOworICAg
ICAgICBjaGFyICp1c2FibGVfZW5kID0gKGNoYXIgKilmLT5jb250cm9sX3N0YWNrX2VuZAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLSAzICogU1RBQ0tfR1VBUkRfU0laRTsKKyAgICAgICAg
Y2hhciAqZGlydHlfaGlnaCA9IChjaGFyICopZi0+ZGlydHlfaGlnaDsKKyAgICAgICAgaWYgKGNz
cCA+IGRpcnR5X2hpZ2gpIHsKKyAgICAgICAgICAgIGlmIChjc3AgPCB1c2FibGVfZW5kKQorICAg
ICAgICAgICAgICAgIG1lbXNldChjc3AsIDAsIHVzYWJsZV9lbmQgLSBjc3ApOworICAgICAgICAg
ICAgZi0+ZGlydHlfaGlnaCA9IChsaXNwb2JqICopY3NwOworICAgICAgICB9IGVsc2UgaWYgKGNz
cCA8IGRpcnR5X2hpZ2gpIHsKKyAgICAgICAgICAgIG1lbXNldChjc3AsIDAsIGRpcnR5X2hpZ2gg
LSBjc3ApOworICAgICAgICAgICAgZi0+ZGlydHlfaGlnaCA9IChsaXNwb2JqICopY3NwOworICAg
ICAgICB9CisgICAgfQorfQorCit2b2lkIHNiX2ZpYmVyX2xpc3Bfc3RhY2tfcmVzdW1lKHN0cnVj
dCBzYl9maWJlcl9jdHggKmYsIHN0cnVjdCB0aHJlYWQgKnRoKQoreworICAgIHRoLT5jb250cm9s
X3N0YWNrX3N0YXJ0ICAgPSBmLT5jb250cm9sX3N0YWNrX2Jhc2U7CisgICAgdGgtPmNvbnRyb2xf
c3RhY2tfZW5kICAgICA9IGYtPmNvbnRyb2xfc3RhY2tfZW5kOworICAgIHRoLT5jb250cm9sX3N0
YWNrX3BvaW50ZXIgPSBmLT5jb250cm9sX3N0YWNrX3BvaW50ZXI7CisgICAgdGgtPmNvbnRyb2xf
ZnJhbWVfcG9pbnRlciA9IGYtPmNvbnRyb2xfZnJhbWVfcG9pbnRlcjsKKyAgICB0aC0+c3RhdGVf
d29yZC5jb250cm9sX3N0YWNrX2d1YXJkX3BhZ2VfcHJvdGVjdGVkID0gZi0+Y3NfZ3VhcmRfcHJv
dGVjdGVkOworfQorCitzaXplX3Qgc2JfZmliZXJfY29udHJvbF9zdGFja19zaXplX2J5dGVzKGNv
bnN0IHN0cnVjdCBzYl9maWJlcl9jdHggKmYpCit7CisgICAgaWYgKCFmLT5jb250cm9sX3N0YWNr
X2Jhc2UgfHwgIWYtPmNvbnRyb2xfc3RhY2tfZW5kKSByZXR1cm4gMDsKKyAgICBzaXplX3QgdG90
YWwgPSAoY2hhciAqKWYtPmNvbnRyb2xfc3RhY2tfZW5kIC0gKGNoYXIgKilmLT5jb250cm9sX3N0
YWNrX2Jhc2U7CisgICAgaWYgKGYtPmNvbnRyb2xfc3RhY2tfYWxsb2Nfc2l6ZSA+IDApIHsKKyAg
ICAgICAgc2l6ZV90IGd1YXJkcyA9IDMgKiBTVEFDS19HVUFSRF9TSVpFOworICAgICAgICByZXR1
cm4gdG90YWwgPiBndWFyZHMgPyB0b3RhbCAtIGd1YXJkcyA6IDA7CisgICAgfQorICAgIHJldHVy
biB0b3RhbDsKK30KKworc2l6ZV90IHNiX2ZpYmVyX2NvbnRyb2xfc3RhY2tfdXNlZF9ieXRlcyhj
b25zdCBzdHJ1Y3Qgc2JfZmliZXJfY3R4ICpmKQoreworICAgIGlmIChmLT5jb250cm9sX3N0YWNr
X3BvaW50ZXIgJiYgZi0+Y29udHJvbF9zdGFja19iYXNlKQorICAgICAgICByZXR1cm4gKGNoYXIg
KilmLT5jb250cm9sX3N0YWNrX3BvaW50ZXIgLSAoY2hhciAqKWYtPmNvbnRyb2xfc3RhY2tfYmFz
ZTsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3NyYy9ydW50aW1lL2FybTY0LWZpYmVy
LmggYi9zcmMvcnVudGltZS9hcm02NC1maWJlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMC4uZjBmMzQzYTllCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3J1bnRpbWUvYXJt
NjQtZmliZXIuaApAQCAtMCwwICsxLDI4IEBACisjaWZuZGVmIFNCQ0xfRklCRVJfQVJNNjRfSAor
I2RlZmluZSBTQkNMX0ZJQkVSX0FSTTY0X0gKKworc3RydWN0IHNiX2ZpYmVyX3JlZ3MgeworICAg
IHZvaWQgICAqc3A7ICAgICAvKiAweDAwICovCisgICAgdm9pZCAgICpmcDsgICAgIC8qIDB4MDgg
eDI5ICovCisgICAgdm9pZCAgICpscjsgICAgIC8qIDB4MTAgeDMwICovCisgICAgdm9pZCAgICp4
MTk7ICAgIC8qIDB4MTggKi8KKyAgICB2b2lkICAgKngyMDsgICAgLyogMHgyMCAqLworICAgIHZv
aWQgICAqeDIxOyAgICAvKiAweDI4ICovCisgICAgdm9pZCAgICp4MjI7ICAgIC8qIDB4MzAgKi8K
KyAgICB2b2lkICAgKngyMzsgICAgLyogMHgzOCAqLworICAgIHZvaWQgICAqeDI0OyAgICAvKiAw
eDQwICovCisgICAgdm9pZCAgICp4MjU7ICAgIC8qIDB4NDggKi8KKyAgICB2b2lkICAgKngyNjsg
ICAgLyogMHg1MCAqLworICAgIHZvaWQgICAqeDI3OyAgICAvKiAweDU4ICovCisgICAgdm9pZCAg
ICp4Mjg7ICAgIC8qIDB4NjAgKi8KKyAgICBkb3VibGUgIGQ4OyAgICAgLyogMHg2OCAqLworICAg
IGRvdWJsZSAgZDk7ICAgICAvKiAweDcwICovCisgICAgZG91YmxlICBkMTA7ICAgIC8qIDB4Nzgg
Ki8KKyAgICBkb3VibGUgIGQxMTsgICAgLyogMHg4MCAqLworICAgIGRvdWJsZSAgZDEyOyAgICAv
KiAweDg4ICovCisgICAgZG91YmxlICBkMTM7ICAgIC8qIDB4OTAgKi8KKyAgICBkb3VibGUgIGQx
NDsgICAgLyogMHg5OCAqLworICAgIGRvdWJsZSAgZDE1OyAgICAvKiAweGEwICovCit9OworCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9ydW50aW1lL2ZpYmVyLmMgYi9zcmMvcnVudGltZS9maWJl
ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMGFhY2JlMjcxCi0tLSAv
ZGV2L251bGwKKysrIGIvc3JjL3J1bnRpbWUvZmliZXIuYwpAQCAtMCwwICsxLDQ2MiBAQAorI2lu
Y2x1ZGUgImZpYmVyLmgiCisjaW5jbHVkZSAib3MuaCIKKyNpbmNsdWRlICJnbG9iYWxzLmgiCisj
aW5jbHVkZSAidGhyZWFkLmgiCisjaW5jbHVkZSAidmFsaWRhdGUuaCIKKyNpbmNsdWRlICJpbnRl
cnIuaCIKKyNpbmNsdWRlICJpbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJhbGlnbi5oIgorI2luY2x1
ZGUgImdlbmVzaXMvc3ltYm9sLmgiCisjaW5jbHVkZSAiZ2VuZXNpcy9zdGF0aWMtc3ltYm9scy5o
IgorI2luY2x1ZGUgImxpc3BvYmouaCIKKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUg
PHN0cmluZy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCisj
aWZuZGVmIE1BUF9TVEFDSworI2RlZmluZSBNQVBfU1RBQ0sgMAorI2VuZGlmCisKK2V4dGVybiB2
b2lkIGdjX3ByZXNlcnZlX2ZpYmVyX3dvcmQobGlzcG9iaiB3b3JkKTsKK2V4dGVybiB2b2lkIGdj
X3NjYXZfZmliZXJfYmluZGluZ19zdGFjayhsaXNwb2JqICpiYXNlLCBsaXNwb2JqICplbmQpOwor
Cit2b2lkIGdjX3NjYW5fZmliZXJfc3RhY2tzKHN0cnVjdCB0aHJlYWQgKnRoKQoreworICAgIGZv
ciAoc3RydWN0IHNiX2ZpYmVyX2N0eCAqZiA9IHRocmVhZF9leHRyYV9kYXRhKHRoKS0+ZmliZXJf
bGlzdDsKKyAgICAgICAgIGY7IGYgPSBmLT5uZXh0KSB7CisgICAgICAgIGlmIChmLT5zdGF0ZSAh
PSBGSUJFUl9SVU5OQUJMRSAmJiBmLT5zdGF0ZSAhPSBGSUJFUl9ORVcpIGNvbnRpbnVlOworCisg
ICAgICAgIGxpc3BvYmogKmhpID0gKGxpc3BvYmogKilmLT5zdGFja19lbmQ7CisjaWZkZWYgTElT
UF9GRUFUVVJFX1g4Nl82NAorICAgICAgICAvKiBNYWluIGZpYmVyOiBzdGFja19lbmQ9PU5VTEwg
YnV0IExpc3AgZnJhbWVzIGxpdmUgb24gdGhlCisgICAgICAgICAqIHRocmVhZCdzIEMgc3RhY2sg
Y2FwdHVyZWQgYXQgbWFrZS1tYWluLWZpYmVyIHRpbWUuICovCisgICAgICAgIGlmICghaGkpIGhp
ID0gZi0+Y29udHJvbF9zdGFja19lbmQ7CisjZW5kaWYKKyAgICAgICAgaWYgKGhpKQorICAgICAg
ICAgICAgZm9yIChsaXNwb2JqICpwID0gKGxpc3BvYmogKilzYl9maWJlcl9zcChmKTsgcCA8IGhp
OyBwKyspCisgICAgICAgICAgICAgICAgZ2NfcHJlc2VydmVfZmliZXJfd29yZCgqcCk7CisKKyAg
ICAgICAgbGlzcG9iaiByZWdzWzE2XTsKKyAgICAgICAgaW50IG4gPSBzYl9maWJlcl9nY19yZWdz
KGYsIHJlZ3MsIDE2KTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAg
ICAgICAgICBnY19wcmVzZXJ2ZV9maWJlcl93b3JkKHJlZ3NbaV0pOworCisjaWZkZWYgTElTUF9G
RUFUVVJFX0FSTTY0CisgICAgICAgIGlmIChmLT5jb250cm9sX3N0YWNrX2Jhc2UgJiYgZi0+Y29u
dHJvbF9zdGFja19wb2ludGVyCisgICAgICAgICAgICAmJiBmLT5jb250cm9sX3N0YWNrX3BvaW50
ZXIgPiBmLT5jb250cm9sX3N0YWNrX2Jhc2UpCisgICAgICAgICAgICBmb3IgKGxpc3BvYmogKnAg
PSBmLT5jb250cm9sX3N0YWNrX2Jhc2U7CisgICAgICAgICAgICAgICAgIHAgPCBmLT5jb250cm9s
X3N0YWNrX3BvaW50ZXI7IHArKykKKyAgICAgICAgICAgICAgICBnY19wcmVzZXJ2ZV9maWJlcl93
b3JkKCpwKTsKKyNlbmRpZgorICAgIH0KK30KKwordm9pZCBnY19zY2F2X2ZpYmVyX2JpbmRpbmdf
c3RhY2tzKHN0cnVjdCB0aHJlYWQgKnRoKQoreworICAgIGZvciAoc3RydWN0IHNiX2ZpYmVyX2N0
eCAqZiA9IHRocmVhZF9leHRyYV9kYXRhKHRoKS0+ZmliZXJfbGlzdDsKKyAgICAgICAgIGY7IGYg
PSBmLT5uZXh0KSB7CisgICAgICAgIGlmICgoZi0+c3RhdGUgPT0gRklCRVJfUlVOTkFCTEUgfHwg
Zi0+c3RhdGUgPT0gRklCRVJfTkVXKQorICAgICAgICAgICAgJiYgZi0+YmluZGluZ19zdGFja19i
YXNlKQorICAgICAgICAgICAgZ2Nfc2Nhdl9maWJlcl9iaW5kaW5nX3N0YWNrKGYtPmJpbmRpbmdf
c3RhY2tfYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5i
aW5kaW5nX3N0YWNrX3BvaW50ZXIpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgZmliZXJfZnJl
ZShzdHJ1Y3Qgc2JfZmliZXJfY3R4ICpmKQoreworICAgIGlmIChmLT5zdGFja19iYXNlICYmIGYt
PnN0YWNrX2Jhc2UgIT0gTUFQX0ZBSUxFRCkKKyAgICAgICAgbXVubWFwKGYtPnN0YWNrX2Jhc2Us
IGYtPnN0YWNrX2FsbG9jX3NpemUpOworICAgIGlmIChmLT5iaW5kaW5nX3N0YWNrX2Jhc2UpCisg
ICAgICAgIG11bm1hcChmLT5iaW5kaW5nX3N0YWNrX2Jhc2UsIGYtPmJpbmRpbmdfc3RhY2tfYWxs
b2Nfc2l6ZSk7CisgICAgc2JfZmliZXJfbGlzcF9zdGFja19mcmVlKGYpOworICAgIGZyZWUoZik7
Cit9CisKK3ZvaWQgc2JfZmliZXJfcmVsZWFzZV9yZWdpc3RlcmVkKHN0cnVjdCB0aHJlYWQgKnRo
KQoreworICAgIHN0cnVjdCBleHRyYV90aHJlYWRfZGF0YSAqZWQgPSB0aHJlYWRfZXh0cmFfZGF0
YSh0aCk7CisgICAgc3RydWN0IHNiX2ZpYmVyX2N0eCAqZiA9IGVkLT5maWJlcl9saXN0OworICAg
IGVkLT5maWJlcl9saXN0ID0gTlVMTDsKKyAgICB3aGlsZSAoZikgeworICAgICAgICBzdHJ1Y3Qg
c2JfZmliZXJfY3R4ICpuZXh0ID0gZi0+bmV4dDsKKyAgICAgICAgZi0+b3duZXIgPSBOVUxMOwor
ICAgICAgICBmLT5uZXh0ID0gTlVMTDsKKyAgICAgICAgZmliZXJfZnJlZShmKTsKKyAgICAgICAg
ZiA9IG5leHQ7CisgICAgfQorfQorCitzdHJ1Y3Qgc2JfZmliZXJfY3R4ICpzYl9maWJlcl9jcmVh
dGUoc2l6ZV90IHN0YWNrX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgYmluZGluZ19zdGFja19zaXplKQoreworICAgIHNpemVfdCBwcyA9IG9zX3JlcG9ydGVk
X3BhZ2Vfc2l6ZTsKKyAgICBzdHJ1Y3Qgc2JfZmliZXJfY3R4ICpmID0gY2FsbG9jKDEsIHNpemVv
ZihzdHJ1Y3Qgc2JfZmliZXJfY3R4KSk7CisgICAgaWYgKCFmKSByZXR1cm4gTlVMTDsKKworICAg
IHNpemVfdCBndWFyZCA9IFNUQUNLX0dVQVJEX1NJWkU7CisgICAgc3RhY2tfc2l6ZSA9IEFMSUdO
X1VQKHN0YWNrX3NpemUgPyBzdGFja19zaXplIDogNjU1MzYsIHBzKTsKKyAgICBmLT5zdGFja19h
bGxvY19zaXplID0gMypndWFyZCArIHN0YWNrX3NpemU7CisgICAgZi0+c3RhY2tfYmFzZSA9IG1t
YXAoTlVMTCwgZi0+c3RhY2tfYWxsb2Nfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQ
Uk9UX1JFQUQgfCBQUk9UX1dSSVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgIE1BUF9QUklW
QVRFIHwgTUFQX0FOT05ZTU9VUyB8IE1BUF9TVEFDSywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAtMSwgMCk7CisgICAgaWYgKGYtPnN0YWNrX2Jhc2UgPT0gTUFQX0ZBSUxFRCkgeyBmcmVlKGYp
OyByZXR1cm4gTlVMTDsgfQorCisgICAgbXByb3RlY3QoZi0+c3RhY2tfYmFzZSwgICAgICAgICAg
ICAgICAgICAgIGd1YXJkLCBQUk9UX05PTkUpOworICAgIG1wcm90ZWN0KChjaGFyICopZi0+c3Rh
Y2tfYmFzZSArIGd1YXJkLCAgICBndWFyZCwgUFJPVF9OT05FKTsKKyAgICBmLT5zdGFja19zdGFy
dCA9IChjaGFyICopZi0+c3RhY2tfYmFzZSArIDMqZ3VhcmQ7CisgICAgZi0+c3RhY2tfZW5kICAg
PSAoY2hhciAqKWYtPnN0YWNrX2Jhc2UgKyBmLT5zdGFja19hbGxvY19zaXplOworICAgIGYtPmNz
X2d1YXJkX3Byb3RlY3RlZCA9IDE7CisKKyAgICBiaW5kaW5nX3N0YWNrX3NpemUgPSBBTElHTl9V
UCgKKyAgICAgICAgYmluZGluZ19zdGFja19zaXplID8gYmluZGluZ19zdGFja19zaXplIDogODE5
MiwgcHMpOworICAgIGYtPmJpbmRpbmdfc3RhY2tfYWxsb2Nfc2l6ZSA9IGJpbmRpbmdfc3RhY2tf
c2l6ZSArIDMgKiBwczsKKyAgICBmLT5iaW5kaW5nX3N0YWNrX2Jhc2UgPSBtbWFwKE5VTEwsIGYt
PmJpbmRpbmdfc3RhY2tfYWxsb2Nfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNQVBfUFJJVkFURSB8IE1BUF9BTk9OWU1PVVMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAtMSwgMCk7CisgICAgaWYgKGYtPmJpbmRpbmdfc3RhY2tfYmFzZSA9PSBNQVBf
RkFJTEVEKSB7CisgICAgICAgIG11bm1hcChmLT5zdGFja19iYXNlLCBmLT5zdGFja19hbGxvY19z
aXplKTsKKyAgICAgICAgZnJlZShmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAg
IG1wcm90ZWN0KChjaGFyICopZi0+YmluZGluZ19zdGFja19iYXNlICsgYmluZGluZ19zdGFja19z
aXplICsgcHMsCisgICAgICAgICAgICAgMiAqIHBzLCBQUk9UX05PTkUpOworICAgIGYtPmJpbmRp
bmdfc3RhY2tfZW5kID0gKGxpc3BvYmogKikoKGNoYXIgKilmLT5iaW5kaW5nX3N0YWNrX2Jhc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgYmluZGluZ19zdGFja19z
aXplKTsKKyAgICBmLT5iaW5kaW5nX3N0YWNrX3BvaW50ZXIgPSBmLT5iaW5kaW5nX3N0YWNrX2Jh
c2U7CisgICAgZi0+YmluZGluZ19zdGFja19zdGFydF9mb3JfdGhyZWFkID0gZi0+YmluZGluZ19z
dGFja19iYXNlOworICAgIGYtPmJzX2d1YXJkX3Byb3RlY3RlZCA9IDE7CisKKyAgICBpZiAoc2Jf
ZmliZXJfbGlzcF9zdGFja19hbGxvYyhmLCBzdGFja19zaXplKSAhPSAwKSB7CisgICAgICAgIG11
bm1hcChmLT5zdGFja19iYXNlLCBmLT5zdGFja19hbGxvY19zaXplKTsKKyAgICAgICAgbXVubWFw
KGYtPmJpbmRpbmdfc3RhY2tfYmFzZSwgZi0+YmluZGluZ19zdGFja19hbGxvY19zaXplKTsKKyAg
ICAgICAgZnJlZShmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBm
OworfQorCisvKiBtYWluIGZpYmVyIHdyYXBzIHRoZSB0aHJlYWQncyBvd24gc3RhY2suICovCitz
dHJ1Y3Qgc2JfZmliZXJfY3R4ICpzYl9maWJlcl9jcmVhdGVfbWFpbihzdHJ1Y3QgdGhyZWFkICp0
aCkKK3sKKyAgICBzdHJ1Y3Qgc2JfZmliZXJfY3R4ICpmID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1
Y3Qgc2JfZmliZXJfY3R4KSk7CisgICAgaWYgKCFmKSByZXR1cm4gTlVMTDsKKyAgICBmLT5zdGF0
ZSA9IEZJQkVSX1JVTk5JTkc7CisgICAgZi0+YmluZGluZ19zdGFja19wb2ludGVyICAgICAgICAg
ID0gZ2V0X2JpbmRpbmdfc3RhY2tfcG9pbnRlcih0aCk7CisgICAgZi0+YmluZGluZ19zdGFja19z
dGFydF9mb3JfdGhyZWFkID0gdGgtPmJpbmRpbmdfc3RhY2tfc3RhcnQ7CisgICAgZi0+Y3VycmVu
dF9jYXRjaF9ibG9jayAgICAgICAgICAgID0gdGgtPmN1cnJlbnRfY2F0Y2hfYmxvY2s7CisgICAg
Zi0+Y3VycmVudF91bndpbmRfcHJvdGVjdF9ibG9jayAgID0gdGgtPmN1cnJlbnRfdW53aW5kX3By
b3RlY3RfYmxvY2s7CisgICAgZi0+Y3NfZ3VhcmRfcHJvdGVjdGVkID0gdGgtPnN0YXRlX3dvcmQu
Y29udHJvbF9zdGFja19ndWFyZF9wYWdlX3Byb3RlY3RlZDsKKyAgICBzYl9maWJlcl9saXNwX3N0
YWNrX2NhcHR1cmVfbWFpbihmLCB0aCk7CisgICAgcmV0dXJuIGY7Cit9CisKK3ZvaWQgc2JfZmli
ZXJfcmVsZWFzZShzdHJ1Y3Qgc2JfZmliZXJfY3R4ICpmKQoreworICAgIGlmICghZikgcmV0dXJu
OworICAgIGlmIChmLT5vd25lcikgc2JfZmliZXJfdW5yZWdpc3RlcihmLT5vd25lciwgZik7Cisg
ICAgZmliZXJfZnJlZShmKTsKK30KKwordm9pZCBzYl9maWJlcl9yZWdpc3RlcihzdHJ1Y3QgdGhy
ZWFkICp0aCwgc3RydWN0IHNiX2ZpYmVyX2N0eCAqZmliZXIpCit7CisgICAgYXNzZXJ0KGZpYmVy
LT5vd25lciA9PSBOVUxMKTsKKyAgICBmaWJlci0+b3duZXIgPSB0aDsKKyAgICBmaWJlci0+bmV4
dCA9IHRocmVhZF9leHRyYV9kYXRhKHRoKS0+ZmliZXJfbGlzdDsKKyAgICBfX2F0b21pY19zdG9y
ZV9uKCZ0aHJlYWRfZXh0cmFfZGF0YSh0aCktPmZpYmVyX2xpc3QsCisgICAgICAgICAgICAgICAg
ICAgICBmaWJlciwgX19BVE9NSUNfUkVMRUFTRSk7Cit9CisKK3ZvaWQgc2JfZmliZXJfdW5yZWdp
c3RlcihzdHJ1Y3QgdGhyZWFkICp0aCwgc3RydWN0IHNiX2ZpYmVyX2N0eCAqZmliZXIpCit7Cisg
ICAgc3RydWN0IHNiX2ZpYmVyX2N0eCAqKnBwID0gJnRocmVhZF9leHRyYV9kYXRhKHRoKS0+Zmli
ZXJfbGlzdDsKKyAgICB3aGlsZSAoKnBwKSB7CisgICAgICAgIGlmICgqcHAgPT0gZmliZXIpIHsK
KyAgICAgICAgICAgICpwcCA9IGZpYmVyLT5uZXh0OworICAgICAgICAgICAgZmliZXItPm5leHQg
PSBOVUxMOworICAgICAgICAgICAgZmliZXItPm93bmVyID0gTlVMTDsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBwcCA9ICYoKnBwKS0+bmV4dDsKKyAgICB9Cit9CisK
K3N0YXRpYyBpbnQgZmliZXJfbGlzdF9yZW1vdmUoc3RydWN0IHRocmVhZCAqc3JjLCBzdHJ1Y3Qg
c2JfZmliZXJfY3R4ICpmaWJlcikKK3sKKyAgICBzdHJ1Y3QgZXh0cmFfdGhyZWFkX2RhdGEgKmVk
ID0gdGhyZWFkX2V4dHJhX2RhdGEoc3JjKTsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHN0cnVj
dCBzYl9maWJlcl9jdHggKipwcCA9ICZlZC0+ZmliZXJfbGlzdDsKKyAgICAgICAgc3RydWN0IHNi
X2ZpYmVyX2N0eCAqY3VyID0KKyAgICAgICAgICAgIF9fYXRvbWljX2xvYWRfbigmZWQtPmZpYmVy
X2xpc3QsIF9fQVRPTUlDX0FDUVVJUkUpOworICAgICAgICB3aGlsZSAoY3VyICYmIGN1ciAhPSBm
aWJlcikgeworICAgICAgICAgICAgcHAgID0gJmN1ci0+bmV4dDsKKyAgICAgICAgICAgIGN1ciA9
IGN1ci0+bmV4dDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWN1cikgcmV0dXJuIC0xOyAgICAg
ICAgICAgLyogZmliZXIgbm90IG9uIHRoaXMgbGlzdCAqLworICAgICAgICBzdHJ1Y3Qgc2JfZmli
ZXJfY3R4ICpuZXh0ID0gY3VyLT5uZXh0OworICAgICAgICBpZiAocHAgPT0gJmVkLT5maWJlcl9s
aXN0KSB7CisgICAgICAgICAgICBzdHJ1Y3Qgc2JfZmliZXJfY3R4ICpleHBlY3RlZCA9IGZpYmVy
OworICAgICAgICAgICAgaWYgKF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2VfbigmZWQtPmZpYmVy
X2xpc3QsICZleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmV4dCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19BVE9NSUNfQUNRX1JFTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19BVE9NSUNfQUNRVUlSRSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgICAgICBjb250aW51ZTsgICAgICAgICAgICAgICAgICAgLyogaGVhZCBjaGFuZ2VkOyBy
ZXN0YXJ0IHdhbGsgKi8KKyAgICAgICAgfQorICAgICAgICAqcHAgPSBuZXh0OworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGZpYmVyX2xpc3RfaW5zZXJ0KHN0cnVj
dCB0aHJlYWQgKmRlc3QsIHN0cnVjdCBzYl9maWJlcl9jdHggKmZpYmVyKQoreworICAgIHN0cnVj
dCBleHRyYV90aHJlYWRfZGF0YSAqZWQgPSB0aHJlYWRfZXh0cmFfZGF0YShkZXN0KTsKKyAgICBz
dHJ1Y3Qgc2JfZmliZXJfY3R4ICpoZWFkOworICAgIGRvIHsKKyAgICAgICAgaGVhZCA9IF9fYXRv
bWljX2xvYWRfbigmZWQtPmZpYmVyX2xpc3QsIF9fQVRPTUlDX0FDUVVJUkUpOworICAgICAgICBm
aWJlci0+bmV4dCA9IGhlYWQ7CisgICAgfSB3aGlsZSAoIV9fYXRvbWljX2NvbXBhcmVfZXhjaGFu
Z2VfbigmZWQtPmZpYmVyX2xpc3QsICZoZWFkLCBmaWJlciwgMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fQVRPTUlDX0FDUV9SRUwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0FUT01JQ19BQ1FVSVJFKSk7Cit9CisKK3N0
YXRpYyBpbmxpbmUgdm9pZCBzYl9maWJlcl9lbnRlcl9wYShzdHJ1Y3QgdGhyZWFkICp0aCk7CisK
K2ludCBzYl9maWJlcl9taWdyYXRlKHN0cnVjdCBzYl9maWJlcl9jdHggKmZpYmVyLCBzdHJ1Y3Qg
dGhyZWFkICpkZXN0KQoreworICAgIGlmIChmaWJlci0+c3RhdGUgIT0gRklCRVJfUlVOTkFCTEUp
IHJldHVybiAtMTsKKyAgICBzdHJ1Y3QgdGhyZWFkICpzcmMgPSBmaWJlci0+b3duZXI7CisgICAg
aWYgKCFzcmMpIHJldHVybiAtMjsKKyAgICBpZiAoc3JjID09IGRlc3QpIHJldHVybiAwOworCisg
ICAgc3RydWN0IHRocmVhZCAqc2VsZiA9IGdldF9zYl92bV90aHJlYWQoKTsKKyAgICBzYl9maWJl
cl9lbnRlcl9wYShzZWxmKTsKKyAgICBpbnQgcmMgPSBmaWJlcl9saXN0X3JlbW92ZShzcmMsIGZp
YmVyKTsKKyAgICBpZiAocmMgPT0gMCkgeworICAgICAgICBmaWJlci0+b3duZXIgPSBkZXN0Owor
ICAgICAgICBzYl9maWJlcl9yZWJpbmRfdGhyZWFkKGZpYmVyLCBkZXN0KTsKKyAgICAgICAgZmli
ZXJfbGlzdF9pbnNlcnQoZGVzdCwgZmliZXIpOworICAgIH0KKyAgICBzYl9maWJlcl9leGl0X3Bh
KHNlbGYpOworICAgIHJldHVybiByYzsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHN3YXBfYmlu
ZGluZ3NfZm9yd2FyZCAoc3RydWN0IHRocmVhZCAqdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsaXNwb2JqICpiYXNlLCBsaXNwb2JqICpsaW1pdCk7CitzdGF0
aWMgaW5saW5lIHZvaWQgc3dhcF9iaW5kaW5nc19iYWNrd2FyZChzdHJ1Y3QgdGhyZWFkICp0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3BvYmogKmJhc2Us
IGxpc3BvYmogKmxpbWl0KTsKKwordm9pZCBzYl9maWJlcl9sb3dlcl9ic19ndWFyZChzdHJ1Y3Qg
c2JfZmliZXJfY3R4ICpmKQoreworICAgIHNpemVfdCBwcyA9IG9zX3JlcG9ydGVkX3BhZ2Vfc2l6
ZTsKKyAgICBjaGFyICpiYXNlID0gKGNoYXIgKilmLT5iaW5kaW5nX3N0YWNrX2Jhc2U7CisgICAg
c2l6ZV90IHVzYWJsZSA9IGYtPmJpbmRpbmdfc3RhY2tfYWxsb2Nfc2l6ZSAtIDMgKiBwczsKKyAg
ICBtcHJvdGVjdChiYXNlICsgdXNhYmxlICsgcHMsIHBzLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRF
KTsKKyAgICBtcHJvdGVjdChiYXNlICsgdXNhYmxlLCAgICAgIHBzLCBQUk9UX05PTkUpOworICAg
IGYtPmJzX2d1YXJkX3Byb3RlY3RlZCA9IDA7Cit9CisKK3ZvaWQgc2JfZmliZXJfcmVzZXRfYnNf
Z3VhcmQoc3RydWN0IHNiX2ZpYmVyX2N0eCAqZikKK3sKKyAgICBzaXplX3QgcHMgPSBvc19yZXBv
cnRlZF9wYWdlX3NpemU7CisgICAgY2hhciAqYmFzZSA9IChjaGFyICopZi0+YmluZGluZ19zdGFj
a19iYXNlOworICAgIHNpemVfdCB1c2FibGUgPSBmLT5iaW5kaW5nX3N0YWNrX2FsbG9jX3NpemUg
LSAzICogcHM7CisgICAgbXByb3RlY3QoYmFzZSArIHVzYWJsZSArIHBzLCBwcywgUFJPVF9OT05F
KTsKKyAgICBtcHJvdGVjdChiYXNlICsgdXNhYmxlLCAgICAgIHBzLCBQUk9UX1JFQUQgfCBQUk9U
X1dSSVRFKTsKKyAgICBmLT5ic19ndWFyZF9wcm90ZWN0ZWQgPSAxOworfQorCitzdGF0aWMgaW50
IHNiX2ZpYmVyX2NsYXNzaWZ5X2JzX2ZhdWx0KHN0cnVjdCB0aHJlYWQgKnRoLCB2b2lkICphZGRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2JfZmliZXJf
Y3R4ICoqb3V0X2ZpYmVyKQoreworICAgIHNpemVfdCBwcyA9IG9zX3JlcG9ydGVkX3BhZ2Vfc2l6
ZTsKKyAgICBjaGFyICphID0gKGNoYXIgKilhZGRyOworICAgIGZvciAoc3RydWN0IHNiX2ZpYmVy
X2N0eCAqZiA9IHRocmVhZF9leHRyYV9kYXRhKHRoKS0+ZmliZXJfbGlzdDsKKyAgICAgICAgIGY7
IGYgPSBmLT5uZXh0KSB7CisgICAgICAgIGlmICghZi0+YmluZGluZ19zdGFja19iYXNlKSBjb250
aW51ZTsKKyAgICAgICAgY2hhciAqYmFzZSA9IChjaGFyICopZi0+YmluZGluZ19zdGFja19iYXNl
OworICAgICAgICBzaXplX3QgdXNhYmxlID0gZi0+YmluZGluZ19zdGFja19hbGxvY19zaXplIC0g
MyAqIHBzOworICAgICAgICBjaGFyICpyID0gYmFzZSArIHVzYWJsZSwgKnMgPSByICsgcHMsICpo
ID0gcyArIHBzOworICAgICAgICBpZiAoYSA+PSBoICYmIGEgPCBoICsgcHMpIHsgaWYgKG91dF9m
aWJlcikgKm91dF9maWJlciA9IGY7IHJldHVybiAxOyB9CisgICAgICAgIGlmIChhID49IHMgJiYg
YSA8IHMgKyBwcykgeyBpZiAob3V0X2ZpYmVyKSAqb3V0X2ZpYmVyID0gZjsgcmV0dXJuIDI7IH0K
KyAgICAgICAgaWYgKGEgPj0gciAmJiBhIDwgciArIHBzKSB7IGlmIChvdXRfZmliZXIpICpvdXRf
ZmliZXIgPSBmOyByZXR1cm4gMzsgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworaW50IHNi
X2ZpYmVyX2hhbmRsZV9ic19mYXVsdCh2b2lkICpjb250ZXh0Xywgdm9pZCAqYWRkciwgc3RydWN0
IHRocmVhZCAqdGgpCit7CisgICAgb3NfY29udGV4dF90ICpjb250ZXh0ID0gKG9zX2NvbnRleHRf
dCAqKWNvbnRleHRfOworICAgIHN0cnVjdCBzYl9maWJlcl9jdHggKmYgPSBOVUxMOworICAgIGlu
dCBraW5kID0gc2JfZmliZXJfY2xhc3NpZnlfYnNfZmF1bHQodGgsIGFkZHIsICZmKTsKKyAgICBp
ZiAoa2luZCA9PSAxKSB7ICAgICAgICAgICAgICAgICAgICAvKiBIQVJEIGd1YXJkIGhpdCAqLwor
ICAgICAgICBmYWtlX2ZvcmVpZ25fZnVuY3Rpb25fY2FsbChjb250ZXh0KTsKKyAgICAgICAgbG9z
ZSgiRmliZXIgYmluZGluZyBzdGFjayBleGhhdXN0ZWQsIGZhdWx0OiAlcCwgUEM6ICVwIiwKKyAg
ICAgICAgICAgICBhZGRyLCAodm9pZCopb3NfY29udGV4dF9wYyhjb250ZXh0KSk7CisgICAgfSBl
bHNlIGlmIChraW5kID09IDIpIHsgICAgICAgICAgICAgLyogU09GVCBndWFyZCBoaXQgKi8KKyAg
ICAgICAgc2JfZmliZXJfbG93ZXJfYnNfZ3VhcmQoZik7CisgICAgICAgIGlmIChsb3NlX29uX2Nv
cnJ1cHRpb25fcCkgeworICAgICAgICAgICAgZmFrZV9mb3JlaWduX2Z1bmN0aW9uX2NhbGwoY29u
dGV4dCk7CisgICAgICAgICAgICBsb3NlKCJGaWJlciBiaW5kaW5nIHN0YWNrIGV4aGF1c3RlZCAo
bG9zZS1vbi1jb3JydXB0aW9uKSIpOworICAgICAgICB9CisgICAgICAgIHVuYmxvY2tfc2lnbmFs
c19pbl9jb250ZXh0X2FuZF9tYXliZV93YXJuKGNvbnRleHQpOworICAgICAgICBhcnJhbmdlX3Jl
dHVybl90b19saXNwX2Z1bmN0aW9uCisgICAgICAgICAgICAoY29udGV4dCwgU3RhdGljU3ltYm9s
RnVuY3Rpb24oQklORElOR19TVEFDS19FWEhBVVNURURfRVJST1IpKTsKKyAgICAgICAgcmV0dXJu
IDE7CisgICAgfSBlbHNlIGlmIChraW5kID09IDMpIHsgICAgICAgICAgICAgLyogUkVUVVJOIGd1
YXJkIC0tIHJlLWFybSAqLworICAgICAgICBzYl9maWJlcl9yZXNldF9ic19ndWFyZChmKTsKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit0eXBlZGVmIHZvaWQg
KCpmaWJlcl9zd2FwX3JlZ3NfZm4pKHZvaWQgKnNhdmUsIHZvaWQgKnJlc3RvcmUpOworCisvKiBB
IGZpYmVyIGNhbiBtaWdyYXRlIHRvIGEgZGlmZmVyZW50IE9TIHRocmVhZCBpbnNpZGUgZW50cnlf
Zm4uICBUaGUKKyAqIGNvbXBpbGVyIG1heSBjYWNoZSB0aGUgVExTLXNsb3QgYWRkcmVzcyBvZiBg
Y3VycmVudF90aHJlYWQnLCBtYWtpbmcKKyAqIGNhdXNpbmcgcG9zdC15aWVsZCBgZ2V0X3NiX3Zt
X3RocmVhZCgpJyB0byByZWFkIHRoZSBvbGQgdGhyZWFkJ3MKKyAqIHNsb3QuICBIaWRlIHRoZSBy
ZWFkIGJlaGluZCBhIG5vaW5saW5lIHRvIGRlZmVhdCB0aGUgY2FjaGUuICovCitzdGF0aWMgX19h
dHRyaWJ1dGVfXygobm9pbmxpbmUpKSBzdHJ1Y3QgdGhyZWFkICpmcmVzaF9zYl92bV90aHJlYWQo
dm9pZCkKK3sKKyAgICByZXR1cm4gZ2V0X3NiX3ZtX3RocmVhZCgpOworfQorCit2b2lkIGZpYmVy
X3RyYW1wX2Moc3RydWN0IHNiX2ZpYmVyX2N0eCAqc2VsZikKK3sKKyAgICBzdHJ1Y3QgdGhyZWFk
ICp0aCA9IGdldF9zYl92bV90aHJlYWQoKTsKKyNpZmRlZiBMSVNQX0ZFQVRVUkVfQVJNNjQKKyAg
ICB0aC0+Y29udHJvbF9zdGFja19wb2ludGVyID0gc2VsZi0+Y29udHJvbF9zdGFja19wb2ludGVy
OworICAgIHRoLT5jb250cm9sX2ZyYW1lX3BvaW50ZXIgPSBzZWxmLT5jb250cm9sX2ZyYW1lX3Bv
aW50ZXI7CisjZW5kaWYKKyAgICBzYl9maWJlcl9leGl0X3BhKHRoKTsKKyAgICBzZWxmLT5lbnRy
eV9mbihzZWxmLT5lbnRyeV9hcmcpOworICAgIHNlbGYtPnN0YXRlID0gRklCRVJfREVBRDsKKwor
ICAgIGlmIChzZWxmLT5yZXR1cm5fZmliZXIpIHsKKyAgICAgICAgc3RydWN0IHNiX2ZpYmVyX2N0
eCAqcmV0ID0gc2VsZi0+cmV0dXJuX2ZpYmVyOworICAgICAgICBzdHJ1Y3QgdGhyZWFkICp0aCA9
IGZyZXNoX3NiX3ZtX3RocmVhZCgpOworICAgICAgICBzYl9maWJlcl9zd2l0Y2hfcHJlcChzZWxm
LCByZXQpOworICAgICAgICB0aC0+Y3VycmVudF9jYXRjaF9ibG9jayAgICAgICAgICA9IHJldC0+
Y3VycmVudF9jYXRjaF9ibG9jazsKKyAgICAgICAgdGgtPmN1cnJlbnRfdW53aW5kX3Byb3RlY3Rf
YmxvY2sgPSByZXQtPmN1cnJlbnRfdW53aW5kX3Byb3RlY3RfYmxvY2s7CisgICAgICAgIHNldF9i
aW5kaW5nX3N0YWNrX3BvaW50ZXIodGgsIHJldC0+YmluZGluZ19zdGFja19wb2ludGVyKTsKKyAg
ICAgICAgdGgtPmJpbmRpbmdfc3RhY2tfc3RhcnQgICAgICAgICAgPSByZXQtPmJpbmRpbmdfc3Rh
Y2tfc3RhcnRfZm9yX3RocmVhZDsKKyAgICAgICAgcmV0LT5zdGF0ZSA9IEZJQkVSX1JVTk5JTkc7
CisgICAgICAgICgoZmliZXJfc3dhcF9yZWdzX2ZuKVNZTUJPTChGSUJFUl9TV0FQX1JFR1MpLT52
YWx1ZSkKKyAgICAgICAgICAgICgmc2VsZi0+cmVncywgJnJldC0+cmVncyk7CisgICAgfQorICAg
IGxvc2UoImZpYmVyX3RyYW1wX2MgcmVhY2hlZCBwYXN0IGF1dG8tcmV0dXJuIik7Cit9CisKKy8q
IC0tLSBCaW5kaW5nLXN0YWNrIHN3YXAgLS0tICovCisKKyNpZmRlZiBMSVNQX0ZFQVRVUkVfVExT
X0xPQURfSU5ESVJFQ1QKK2V4dGVybiBsaXNwb2JqICp0bHNpbmRleF90b19zeW1ib2xfbWFwOwor
ZXh0ZXJuIGludCB0bHNfbWFwX3N0YXJ0aW5nX29mZnNldDsKKyMgIGlmbmRlZiBOT19UTFNfVkFM
VUVfTUFSS0VSCisjICAgIGRlZmluZSBOT19UTFNfVkFMVUVfTUFSS0VSICh+KHV3b3JkX3QpMCkK
KyMgIGVuZGlmCisjZW5kaWYKKworc3RhdGljIGlubGluZSB2b2lkIGV4Y2hhbmdlX2JpbmRpbmdf
d2l0aF90bHMoc3RydWN0IHRocmVhZCAqdGgsIHN0cnVjdCBiaW5kaW5nICpiKQoreworICAgIGlm
IChiLT5zeW1ib2wgJiYgYi0+c3ltYm9sICE9IFVOQk9VTkRfTUFSS0VSX1dJREVUQUcpIHsKKyNp
ZmRlZiBMSVNQX0ZFQVRVUkVfU0JfVEhSRUFECisgICAgICAgIGxpc3BvYmogKnRsc19zbG90ID0g
KGxpc3BvYmogKikoYi0+c3ltYm9sICsgKGNoYXIgKil0aCk7CisjZWxzZQorICAgICAgICBsaXNw
b2JqICp0bHNfc2xvdCA9ICZTWU1CT0woYi0+c3ltYm9sKS0+dmFsdWU7CisjZW5kaWYKKyAgICAg
ICAgbGlzcG9iaiB0bXAgPSAqdGxzX3Nsb3Q7CisgICAgICAgICp0bHNfc2xvdCA9IGItPnZhbHVl
OworICAgICAgICBiLT52YWx1ZSA9IHRtcDsKKworI2lmZGVmIExJU1BfRkVBVFVSRV9UTFNfTE9B
RF9JTkRJUkVDVAorICAgICAgICAvKiBNYWludGFpbiB0aGUgaW5kaXJlY3QgY2VsbCBmb3Igc3lt
Ym9scyBhdCBvciBhYm92ZSB0aGUKKyAgICAgICAgICogbWFwLXN0YXJ0aW5nIG9mZnNldCAob3Ro
ZXJzIGFyZSA6YWx3YXlzLXRocmVhZC1sb2NhbDsgc2VlCisgICAgICAgICAqIFJFQURNRS5tZCAi
QmluZGluZy1zdGFjayBzd2FwIikuICovCisgICAgICAgIGlmIChiLT5zeW1ib2wgPj0gKGxpc3Bv
YmopdGxzX21hcF9zdGFydGluZ19vZmZzZXQpIHsKKyAgICAgICAgICAgIGxpc3BvYmogKmluZGly
ZWN0X2NlbGwgPQorICAgICAgICAgICAgICAgIChsaXNwb2JqICopKChjaGFyICopdGggKyBiLT5z
eW1ib2wgLSBOX1dPUkRfQllURVMpOworICAgICAgICAgICAgaWYgKCp0bHNfc2xvdCA9PSAobGlz
cG9iailOT19UTFNfVkFMVUVfTUFSS0VSKSB7CisgICAgICAgICAgICAgICAgbGlzcG9iaiBzeW1i
b2wgPQorICAgICAgICAgICAgICAgICAgICB0bHNpbmRleF90b19zeW1ib2xfbWFwW2ItPnN5bWJv
bCA+PiAoMSArIFdPUkRfU0hJRlQpXTsKKyAgICAgICAgICAgICAgICAqaW5kaXJlY3RfY2VsbCA9
CisgICAgICAgICAgICAgICAgICAgIChzeW1ib2wgPT0gKGxpc3BvYmopTk9fVExTX1ZBTFVFX01B
UktFUikKKyAgICAgICAgICAgICAgICAgICAgPyAobGlzcG9iaikoKGNoYXIgKil0aCArIGItPnN5
bWJvbCAtIDEpCisgICAgICAgICAgICAgICAgICAgIDogc3ltYm9sOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAqaW5kaXJlY3RfY2VsbCA9IChsaXNwb2JqKSgoY2hhciAq
KXRoICsgYi0+c3ltYm9sIC0gMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbmRpZgor
ICAgIH0KK30KKworLyogU3dhcC1pbjogb2xkZXN0IC0+IG5ld2VzdC4gKi8KK3N0YXRpYyBpbmxp
bmUgdm9pZCBzd2FwX2JpbmRpbmdzX2ZvcndhcmQoc3RydWN0IHRocmVhZCAqdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3BvYmogKmJhc2UsIGxpc3BvYmog
KmxpbWl0KQoreworICAgIGZvciAoc3RydWN0IGJpbmRpbmcgKmIgPSAoc3RydWN0IGJpbmRpbmcg
KiliYXNlLAorICAgICAgICAgICAqZW5kID0gKHN0cnVjdCBiaW5kaW5nICopbGltaXQ7CisgICAg
ICAgICBiIDwgZW5kOyBiKyspCisgICAgICAgIGV4Y2hhbmdlX2JpbmRpbmdfd2l0aF90bHModGgs
IGIpOworfQorCisvKiBTd2FwLW91dDogbmV3ZXN0IC0+IG9sZGVzdC4gKi8KK3N0YXRpYyBpbmxp
bmUgdm9pZCBzd2FwX2JpbmRpbmdzX2JhY2t3YXJkKHN0cnVjdCB0aHJlYWQgKnRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzcG9iaiAqYmFzZSwgbGlzcG9i
aiAqbGltaXQpCit7CisgICAgc3RydWN0IGJpbmRpbmcgKnN0YXJ0ID0gKHN0cnVjdCBiaW5kaW5n
ICopYmFzZTsKKyAgICBzdHJ1Y3QgYmluZGluZyAqYiAgICAgPSAoc3RydWN0IGJpbmRpbmcgKils
aW1pdDsKKyAgICB3aGlsZSAoYiA+IHN0YXJ0KSB7IGItLTsgZXhjaGFuZ2VfYmluZGluZ193aXRo
X3Rscyh0aCwgYik7IH0KK30KKworX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQordm9pZCBzYl9m
aWJlcl9zd2l0Y2hfcHJlcChzdHJ1Y3Qgc2JfZmliZXJfY3R4ICpmcm9tLCBzdHJ1Y3Qgc2JfZmli
ZXJfY3R4ICp0bykKK3sKKyAgICBzdHJ1Y3QgdGhyZWFkICp0aCA9IGdldF9zYl92bV90aHJlYWQo
KTsKKyAgICBzYl9maWJlcl9lbnRlcl9wYSh0aCk7CisKKyAgICBmcm9tLT5iaW5kaW5nX3N0YWNr
X3BvaW50ZXIgPSBnZXRfYmluZGluZ19zdGFja19wb2ludGVyKHRoKTsKKworICAgIHNiX2ZpYmVy
X2xpc3Bfc3RhY2tfc3VzcGVuZChmcm9tLCB0aCk7CisgICAgc2JfZmliZXJfbGlzcF9zdGFja19y
ZXN1bWUodG8sIHRoKTsKKworICAgIGlmIChmcm9tLT5iaW5kaW5nX3N0YWNrX2Jhc2UpCisgICAg
ICAgIHN3YXBfYmluZGluZ3NfYmFja3dhcmQodGgsIGZyb20tPmJpbmRpbmdfc3RhY2tfYmFzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tLT5iaW5kaW5nX3N0YWNrX3BvaW50
ZXIpOworICAgIGlmICh0by0+YmluZGluZ19zdGFja19iYXNlKQorICAgICAgICBzd2FwX2JpbmRp
bmdzX2ZvcndhcmQodGgsIHRvLT5iaW5kaW5nX3N0YWNrX2Jhc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0by0+YmluZGluZ19zdGFja19wb2ludGVyKTsKK30KKworc3RhdGljIGlu
bGluZSB2b2lkIHNiX2ZpYmVyX2VudGVyX3BhKHN0cnVjdCB0aHJlYWQgKnRoKQoreworI2lmIGRl
ZmluZWQgTElTUF9GRUFUVVJFX0FSTTY0CisgICAgKCh2b2xhdGlsZSB1aW50MzJfdCAqKSZ0aC0+
cHNldWRvX2F0b21pY19iaXRzKVswXSA9IGZsYWdfUHNldWRvQXRvbWljOworI2Vsc2UKKyAgICB0
aC0+cHNldWRvX2F0b21pY19iaXRzID0gKHV3b3JkX3QpdGg7CisjZW5kaWYKK30KKwordm9pZCBz
Yl9maWJlcl9leGl0X3BhKHN0cnVjdCB0aHJlYWQgKnRoKQoreworI2lmIGRlZmluZWQgTElTUF9G
RUFUVVJFX0FSTTY0CisgICAgdm9sYXRpbGUgdWludDMyX3QgKmhhbHZlcyA9ICh2b2xhdGlsZSB1
aW50MzJfdCAqKSZ0aC0+cHNldWRvX2F0b21pY19iaXRzOworICAgIGhhbHZlc1swXSA9IDA7Cisg
ICAgaWYgKGhhbHZlc1sxXSkgeworICAgICAgICBoYWx2ZXNbMV0gPSAwOworICAgICAgICBhc20g
dm9sYXRpbGUoImJyayAlMCIgOiA6ICJpIih0cmFwX1BlbmRpbmdJbnRlcnJ1cHQpKTsKKyAgICB9
CisjZWxzZQorICAgIHV3b3JkX3QgcGEgPSBfX3N5bmNfeG9yX2FuZF9mZXRjaCgmdGgtPnBzZXVk
b19hdG9taWNfYml0cywgKHV3b3JkX3QpdGgpOworICAgIGlmIChwYSkgeworI2lmIGRlZmluZWQg
TElTUF9GRUFUVVJFX1VEMl9CUkVBS1BPSU5UUworICAgICAgICBhc20gdm9sYXRpbGUoInVkMlxu
XHQuYnl0ZSAlYzAiIDogOiAiaSIodHJhcF9QZW5kaW5nSW50ZXJydXB0KSk7CisjZWxzZQorICAg
ICAgICBhc20gdm9sYXRpbGUoInVkMiIpOworI2VuZGlmCisgICAgfQorI2VuZGlmCit9CmRpZmYg
LS1naXQgYS9zcmMvcnVudGltZS9maWJlci5oIGIvc3JjL3J1bnRpbWUvZmliZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmFjNjgxNjRkNQotLS0gL2Rldi9udWxsCisr
KyBiL3NyYy9ydW50aW1lL2ZpYmVyLmgKQEAgLTAsMCArMSwxMjQgQEAKKyNpZm5kZWYgU0JDTF9G
SUJFUl9ICisjZGVmaW5lIFNCQ0xfRklCRVJfSAorCisjaW5jbHVkZSAibGlzcG9iai5oIgorCisj
aWZkZWYgTElTUF9GRUFUVVJFX1NCX0ZJQkVSCisKKyNpbmNsdWRlICJnZW5lc2lzL3RocmVhZC5o
IgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaWYgZGVmaW5l
ZChMSVNQX0ZFQVRVUkVfWDg2XzY0KQorIyAgaW5jbHVkZSAieDg2LTY0LWZpYmVyLmgiCisjZWxp
ZiBkZWZpbmVkKExJU1BfRkVBVFVSRV9BUk02NCkKKyMgIGluY2x1ZGUgImFybTY0LWZpYmVyLmgi
CisjZWxzZQorIyAgZXJyb3IgImZpYmVyIHN1cHBvcnQgbm90IGltcGxlbWVudGVkIG9uIHRoaXMg
YXJjaGl0ZWN0dXJlIgorI2VuZGlmCisKKy8qIE1pcnJvcmVkIGJ5IHRoZSBmaWJlci1zdGF0ZSBj
b25zdGFudHMgb24gdGhlIExpc3Agc2lkZS4gKi8KK2VudW0gZmliZXJfc3RhdGUgeworICAgIEZJ
QkVSX05FVyAgICAgID0gMCwKKyAgICBGSUJFUl9SVU5OQUJMRSA9IDEsCisgICAgRklCRVJfUlVO
TklORyAgPSAyLAorICAgIEZJQkVSX0RFQUQgICAgID0gMworfTsKKworI2RlZmluZSBGSUJFUl9E
RUZBVUxUX1NUQUNLX1NJWkUgICAgICAgICA2NTUzNgorI2RlZmluZSBGSUJFUl9ERUZBVUxUX0JJ
TkRJTkdfU1RBQ0tfU0laRSA4MTkyCisKK3N0cnVjdCBzYl9maWJlcl9jdHggeworICAgIHN0cnVj
dCBzYl9maWJlcl9yZWdzIHJlZ3M7CisgICAgZW51bSBmaWJlcl9zdGF0ZSAgICAgc3RhdGU7CisK
KyAgICAvKiBDb250cm9sIHN0YWNrICovCisgICAgdm9pZCAgICAqc3RhY2tfYmFzZTsKKyAgICB2
b2lkICAgICpzdGFja19zdGFydDsKKyAgICB2b2lkICAgICpzdGFja19lbmQ7CisgICAgc2l6ZV90
ICAgc3RhY2tfYWxsb2Nfc2l6ZTsKKworICAgIC8qIEJpbmRpbmcgc3RhY2sgKi8KKyAgICBsaXNw
b2JqICpiaW5kaW5nX3N0YWNrX2Jhc2U7CisgICAgbGlzcG9iaiAqYmluZGluZ19zdGFja19lbmQ7
CisgICAgbGlzcG9iaiAqYmluZGluZ19zdGFja19wb2ludGVyOworICAgIHNpemVfdCAgIGJpbmRp
bmdfc3RhY2tfYWxsb2Nfc2l6ZTsKKyAgICAvKiBXaGF0IHRvIGluc3RhbGwgaW50byB0aHJlYWQt
PmJpbmRpbmdfc3RhY2tfc3RhcnQgd2hpbGUgd2UgcnVuLiAqLworICAgIGxpc3BvYmogKmJpbmRp
bmdfc3RhY2tfc3RhcnRfZm9yX3RocmVhZDsKKyAgICAvKiBQZXItZmliZXIgTGlzcC1zdGFjayBi
b3VuZHMgaW5zdGFsbGVkIGluIHRocmVhZC0+Y29udHJvbF9zdGFja18qICovCisgICAgbGlzcG9i
aiAqY29udHJvbF9zdGFja19iYXNlOworICAgIGxpc3BvYmogKmNvbnRyb2xfc3RhY2tfZW5kOwor
I2lmZGVmIExJU1BfRkVBVFVSRV9BUk02NAorICAgIGxpc3BvYmogKmNvbnRyb2xfc3RhY2tfcG9p
bnRlcjsKKyAgICBsaXNwb2JqICpjb250cm9sX2ZyYW1lX3BvaW50ZXI7CisgICAgc2l6ZV90ICAg
Y29udHJvbF9zdGFja19hbGxvY19zaXplOworICAgIGxpc3BvYmogKmRpcnR5X2hpZ2g7CisjZW5k
aWYKKworICAgIC8qIFNhdmVkIHRocmVhZC1zdHJ1Y3QgZmllbGRzLiAqLworICAgIGxpc3BvYmog
IGN1cnJlbnRfY2F0Y2hfYmxvY2s7CisgICAgbGlzcG9iaiAgY3VycmVudF91bndpbmRfcHJvdGVj
dF9ibG9jazsKKworICAgIHN0cnVjdCBzYl9maWJlcl9jdHggKm5leHQ7CisgICAgc3RydWN0IHRo
cmVhZCAgICAgICAqb3duZXI7CisKKyAgICB2b2lkICgqZW50cnlfZm4pKHZvaWQgKmFyZyk7Cisg
ICAgdm9pZCAgKmVudHJ5X2FyZzsKKworICAgIHN0cnVjdCBzYl9maWJlcl9jdHggKnJldHVybl9m
aWJlcjsgIC8qIGF1dG8tcmV0dXJuIHRhcmdldCAqLworCisgICAgdW5zaWduZWQgY2hhciBjc19n
dWFyZF9wcm90ZWN0ZWQ7CisgICAgdW5zaWduZWQgY2hhciBic19ndWFyZF9wcm90ZWN0ZWQ7Cit9
OworCisvKiBMaWZlY3ljbGUgKi8KK3N0cnVjdCBzYl9maWJlcl9jdHggKnNiX2ZpYmVyX2NyZWF0
ZShzaXplX3Qgc3RhY2tfc2l6ZSwgc2l6ZV90IGJpbmRpbmdfc3RhY2tfc2l6ZSk7CitzdHJ1Y3Qg
c2JfZmliZXJfY3R4ICpzYl9maWJlcl9jcmVhdGVfbWFpbihzdHJ1Y3QgdGhyZWFkICp0aCk7Cit2
b2lkICAgICAgICAgICAgICAgICBzYl9maWJlcl9yZWxlYXNlKHN0cnVjdCBzYl9maWJlcl9jdHgg
KmZpYmVyKTsKKworLyogR0MgcmVnaXN0cmF0aW9uICovCit2b2lkIHNiX2ZpYmVyX3JlZ2lzdGVy
ICAoc3RydWN0IHRocmVhZCAqdGgsIHN0cnVjdCBzYl9maWJlcl9jdHggKmZpYmVyKTsKK3ZvaWQg
c2JfZmliZXJfdW5yZWdpc3RlcihzdHJ1Y3QgdGhyZWFkICp0aCwgc3RydWN0IHNiX2ZpYmVyX2N0
eCAqZmliZXIpOworCisvKiBDcm9zcy10aHJlYWQgbWlncmF0aW9uICovCitpbnQgIHNiX2ZpYmVy
X21pZ3JhdGUoc3RydWN0IHNiX2ZpYmVyX2N0eCAqZmliZXIsIHN0cnVjdCB0aHJlYWQgKmRlc3Qp
OworCisvKiBUaHJlYWQtZXhpdCBjbGVhbnVwLiAgQ2FsbGVkIGZyb20gZnJlZV90aHJlYWRfc3Ry
dWN0LiAqLwordm9pZCBzYl9maWJlcl9yZWxlYXNlX3JlZ2lzdGVyZWQoc3RydWN0IHRocmVhZCAq
dGgpOworCisvKiBCaW5kaW5nLXN0YWNrIGd1YXJkIG1hbmlwdWxhdGlvbi4gKi8KK3ZvaWQgc2Jf
ZmliZXJfbG93ZXJfYnNfZ3VhcmQoc3RydWN0IHNiX2ZpYmVyX2N0eCAqZik7Cit2b2lkIHNiX2Zp
YmVyX3Jlc2V0X2JzX2d1YXJkKHN0cnVjdCBzYl9maWJlcl9jdHggKmYpOworCisvKiBIYW5kbGUg
YSBTSUdTRUdWIC8gU0lHQlVTIGFkZHJlc3MgdGhhdCBtYXkgaGF2ZSBsYW5kZWQgb24gYQorICog
ZmliZXIncyBiaW5kaW5nLXN0YWNrIGd1YXJkLiAqLworaW50IHNiX2ZpYmVyX2hhbmRsZV9ic19m
YXVsdCh2b2lkICpjb250ZXh0LCB2b2lkICphZGRyLCBzdHJ1Y3QgdGhyZWFkICp0aCk7CisKK3Zv
aWQgc2JfZmliZXJfc3dpdGNoX3ByZXAoc3RydWN0IHNiX2ZpYmVyX2N0eCAqZnJvbSwgc3RydWN0
IHNiX2ZpYmVyX2N0eCAqdG8pOwordm9pZCBzYl9maWJlcl9leGl0X3BhICAgIChzdHJ1Y3QgdGhy
ZWFkICp0aCk7CisKKy8qIEFyY2gtc3BlY2lmaWMgaGVscGVycyAqLwordm9pZCAgc2JfZmliZXJf
cHJlcGFyZShzdHJ1Y3Qgc2JfZmliZXJfY3R4ICpmLCB2b2lkICgqZm4pKHZvaWQgKiksIHZvaWQg
KmFyZyk7Cit2b2lkICpzYl9maWJlcl9zcCAoY29uc3Qgc3RydWN0IHNiX2ZpYmVyX2N0eCAqZik7
Cit2b2lkICBzYl9maWJlcl9yZWJpbmRfdGhyZWFkKHN0cnVjdCBzYl9maWJlcl9jdHggKmYsIHN0
cnVjdCB0aHJlYWQgKm5ld19vd25lcik7CisvKiBXcml0ZSB0aGUgZmliZXIncyBjYWxsZWUtc2F2
ZWQgR0MtcmVsZXZhbnQgcmVnaXN0ZXIgd29yZHMgaW50byBPVVQKKyAqICh1cCB0byBNQVgpLiBS
ZXR1cm4gdGhlIGNvdW50IGFjdHVhbGx5IHdyaXR0ZW4uICovCitpbnQgICBzYl9maWJlcl9nY19y
ZWdzKGNvbnN0IHN0cnVjdCBzYl9maWJlcl9jdHggKmYsIGxpc3BvYmogKm91dCwgaW50IG1heCk7
CisKKy8qIEdDLXNpZGUgZW50cnkgcG9pbnRzIChzaGFyZWQgYm9keSBpbiBmaWJlci5jKS4gIEVh
Y2ggR0MgVFUgcHJvdmlkZXMKKyAqIGdjX3ByZXNlcnZlX2ZpYmVyX3dvcmQgYW5kIGdjX3NjYXZf
ZmliZXJfYmluZGluZ19zdGFjayBhcyBsZWFmCisgKiBmdW5jdGlvbnM7IHRoZSBzaGFyZWQgc2Nh
bm5lcnMgY2FsbCB0aGVtIGJ5IG5hbWUuICovCit2b2lkIGdjX3NjYW5fZmliZXJfc3RhY2tzICAg
ICAgICAgKHN0cnVjdCB0aHJlYWQgKnRoKTsKK3ZvaWQgZ2Nfc2Nhdl9maWJlcl9iaW5kaW5nX3N0
YWNrcyAoc3RydWN0IHRocmVhZCAqdGgpOworCisvKiBQZXItZmliZXIgTGlzcCBjb250cm9sIHN0
YWNrIGhvb2tzICovCitpbnQgIHNiX2ZpYmVyX2xpc3Bfc3RhY2tfYWxsb2MgICAgICAgKHN0cnVj
dCBzYl9maWJlcl9jdHggKmYsIHNpemVfdCBzaXplKTsKK3ZvaWQgc2JfZmliZXJfbGlzcF9zdGFj
a19mcmVlICAgICAgICAoc3RydWN0IHNiX2ZpYmVyX2N0eCAqZik7Cit2b2lkIHNiX2ZpYmVyX2xp
c3Bfc3RhY2tfY2FwdHVyZV9tYWluKHN0cnVjdCBzYl9maWJlcl9jdHggKmYsIHN0cnVjdCB0aHJl
YWQgKnRoKTsKK3ZvaWQgc2JfZmliZXJfbGlzcF9zdGFja19zdXNwZW5kICAgICAoc3RydWN0IHNi
X2ZpYmVyX2N0eCAqZiwgc3RydWN0IHRocmVhZCAqdGgpOwordm9pZCBzYl9maWJlcl9saXNwX3N0
YWNrX3Jlc3VtZSAgICAgIChzdHJ1Y3Qgc2JfZmliZXJfY3R4ICpmLCBzdHJ1Y3QgdGhyZWFkICp0
aCk7CisKK3ZvaWQgZmliZXJfdHJhbXBfYyhzdHJ1Y3Qgc2JfZmliZXJfY3R4ICpzZWxmKTsKKwor
I2VuZGlmIC8qIExJU1BfRkVBVFVSRV9TQl9GSUJFUiAqLworI2VuZGlmIC8qIFNCQ0xfRklCRVJf
SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3J1bnRpbWUvZ2VuY2djLmMgYi9zcmMvcnVudGltZS9nZW5j
Z2MuYwppbmRleCBjYzUyYjdmNWYuLjRjMzliMTA5OSAxMDA2NDQKLS0tIGEvc3JjL3J1bnRpbWUv
Z2VuY2djLmMKKysrIGIvc3JjL3J1bnRpbWUvZ2VuY2djLmMKQEAgLTUxLDYgKzUxLDcgQEAKICNp
bmNsdWRlICJnZW5lc2lzL2Jyb3RoZXJ0cmVlLmgiCiAjaW5jbHVkZSAiZ2VuZXNpcy9zcGxpdC1v
cmRlcmVkLWxpc3QuaCIKICNpbmNsdWRlICJ2YXItaW8uaCIKKyNpbmNsdWRlICJmaWJlci5oIgog
CiAvKiBmb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwogZXh0ZXJuIEZJTEUgKmdjX2FjdGl2aXR5bG9n
KCk7CkBAIC0xNDUxLDE0ICsxNDUyLDE3IEBAIHN0YXRpYyBsaXNwb2JqIGNvbnNlcnZhdGl2ZV9y
b290X3AobGlzcG9iaiBhZGRyLCBwYWdlX2luZGV4X3QgYWRkcl9wYWdlX2luZGV4KQogICAgICAg
ICAmJiBwbGF1c2libGVfdGFnX3AoYWRkcikpIHJldHVybiBBTUJJR1VPVVNfUE9JTlRFUjsKICAg
ICByZXR1cm4gMDsKIH0KLSNlbGlmIGRlZmluZWQgTElTUF9GRUFUVVJFX01JUFMgfHwgZGVmaW5l
ZCBMSVNQX0ZFQVRVUkVfUFBDNjQgfHwgZGVmaW5lZCBMSVNQX0ZFQVRVUkVfUFBDCisjZWxpZiBk
ZWZpbmVkIExJU1BfRkVBVFVSRV9NSVBTIHx8IGRlZmluZWQgTElTUF9GRUFUVVJFX1BQQzY0IHx8
IGRlZmluZWQgTElTUF9GRUFUVVJFX1BQQyBcCisgICB8fCAoZGVmaW5lZCBMSVNQX0ZFQVRVUkVf
QVJNNjQgJiYgZGVmaW5lZCBMSVNQX0ZFQVRVUkVfU0JfRklCRVIpCiAvKiBDb25zaWRlciBpbnRl
cmlvciBwb2ludGVycyB0byBjb2RlIGFzIHJvb3RzLgogICogQnV0IG1vc3Qgb3RoZXIgcG9pbnRl
cnMgYXJlICp1bmFtYmlndW91cyogY29uc2VydmF0aXZlIHJvb3RzLgogICogVGhpcyBpcyBub3Qg
Imxlc3MgY29uc2VydmF0aXZlIiBwZXIgc2UsIHRoYW4gdGhlIG5vbi1wcmVjaXNlIGNvZGUsCiAg
KiBiZWNhdXNlIGl0J3MgYWN0dWFsbHkgdXAgdG8gdGhlIHVzZXIgb2YgdGhpcyBwcmVkaWNhdGUg
dG8gZGVjaWRlIHdoZWh0aGVyCiAgKiB0aGUgY29udHJvbCBzdGFjayBhcyBhIHdob2xlIGlzIHNj
YW5uZWQgZm9yIG9iamVjdHMgdG8gcGluLgogICogVGhlIHNvLWNhbGxlZCAicHJlY2lzZSIgY29k
ZSBzaG91bGQgZ2VuZXJhbGx5IE5PVCBzY2FuIHRoZSBzdGFjaywKLSAqIGFuZCBub3QgY2FsbCB0
aGlzIG9uIHN0YWNrIHdvcmRzLgorICogYW5kIG5vdCBjYWxsIHRoaXMgb24gc3RhY2sgd29yZHMu
ICBBUk02NCB1c2VzIHRoaXMgb25seSBmb3IgZmliZXIKKyAqIHN0YWNrIHNjYW5uaW5nLCB3aGVy
ZSB0aGUgQyBjb250cm9sIHN0YWNrIG9mIHN1c3BlbmRlZCBmaWJlcnMgaGFzCisgKiBubyBwcmVj
aXNlIHJvb3QgaW5mb3JtYXRpb24uCiAgKiBBbnl3YXksIHRoaXMgY29kZSBpc24ndCBhcyBwZXJm
b3JtYW5jZS1jcml0aWNhbCBhcyB0aGUgeDg2IHZhcmlhbnQsCiAgKiBzbyBpdCdzIG5vdCB3b3J0
aCB0cnlpbmcgdG8gb3B0aW1pemUgb3V0IHRoZSBzZWFyY2ggZm9yIHRoZSBvYmplY3QgKi8KIHN0
YXRpYyBsaXNwb2JqIGNvbnNlcnZhdGl2ZV9yb290X3AobGlzcG9iaiBhZGRyLCBwYWdlX2luZGV4
X3QgYWRkcl9wYWdlX2luZGV4KQpAQCAtMjAwNyw3ICsyMDExLDggQEAgc3RhdGljIHZvaWQgaW1w
YXJ0X21hcmtfc3RpY2tpbmVzcyhsaXNwb2JqIHdvcmQpCiB9CiAjZW5kaWYKIAotI2lmICFHRU5D
R0NfSVNfUFJFQ0lTRSB8fCBkZWZpbmVkIExJU1BfRkVBVFVSRV9NSVBTIHx8IGRlZmluZWQgTElT
UF9GRUFUVVJFX1BQQzY0IHx8IGRlZmluZWQgTElTUF9GRUFUVVJFX1BQQworI2lmICFHRU5DR0Nf
SVNfUFJFQ0lTRSB8fCBkZWZpbmVkIExJU1BfRkVBVFVSRV9NSVBTIHx8IGRlZmluZWQgTElTUF9G
RUFUVVJFX1BQQzY0IHx8IGRlZmluZWQgTElTUF9GRUFUVVJFX1BQQyBcCisgICAgfHwgKGRlZmlu
ZWQgTElTUF9GRUFUVVJFX0FSTTY0ICYmIGRlZmluZWQgTElTUF9GRUFUVVJFX1NCX0ZJQkVSKQog
LyogVGFrZSBhIHBvc3NpYmxlIHBvaW50ZXIgdG8gYSBMaXNwIG9iamVjdCBhbmQgbWFyayBpdHMg
cGFnZSBpbiB0aGUKICAqIHBhZ2VfdGFibGUgc28gdGhhdCBpdCB3aWxsIG5vdCBiZSByZWxvY2F0
ZWQgZHVyaW5nIGEgR0MuCiAgKgpAQCAtMjA2Myw3ICsyMDY4LDkgQEAgc3RhdGljIHZvaWQgTk9f
U0FOSVRJWkVfTUVNT1JZIHByZXNlcnZlX3BvaW50ZXIob3NfY29udGV4dF9yZWdpc3Rlcl90IHdv
cmQsIHZvaWQKICAgICBsaXNwb2JqKiBmb3VuZCA9IHNlYXJjaF9keW5hbWljX3NwYWNlKCh2b2lk
Kil3b3JkKTsKICAgICBpZiAoZm91bmQpIGdjX21hcmtfb2JqKGNvbXB1dGVfbGlzcG9iaihmb3Vu
ZCkpOwogfQorI2VuZGlmCiAKKyNpZiAhR0VOQ0dDX0lTX1BSRUNJU0UgfHwgZGVmaW5lZCBMSVNQ
X0ZFQVRVUkVfTUlQUyB8fCBkZWZpbmVkIExJU1BfRkVBVFVSRV9QUEM2NCB8fCBkZWZpbmVkIExJ
U1BfRkVBVFVSRV9QUEMKIHN0YXRpYyB2b2lkIHN0aWNreV9wcmVzZXJ2ZV9wb2ludGVyKG9zX2Nv
bnRleHRfcmVnaXN0ZXJfdCByZWdpc3Rlcl93b3JkLCB2b2lkKiBhcmcpCiB7CiAgICAgLy8gcmVn
aXN0ZXJzIGNhbiBiZSB3aWRlciB0aGFuIHdvcmRzLiBUaGlzIGNvdWxkIGFjY2VwdCB1d29yZF90
IGFzIHRoZSBhcmcgdHlwZQpAQCAtMzE0NSw2ICszMTUyLDIxIEBAIHN0YXRpYyB2b2lkIHBpbl9j
YWxsX2NoYWluX2FuZF9ib3hlZF9yZWdpc3RlcnMoc3RydWN0IHRocmVhZCogdGgpIHsKIH0KICNl
bmRpZgogCisjaWZkZWYgTElTUF9GRUFUVVJFX1NCX0ZJQkVSCisvKiBMZWFmIGhvb2tzIHN1cHBs
aWVkIHRvIHRoZSBzaGFyZWQgc2Nhbm5lcnMgaW4gZmliZXIuYy4gKi8KK3ZvaWQgZ2NfcHJlc2Vy
dmVfZmliZXJfd29yZChsaXNwb2JqIHdvcmQpCit7CisgICAgLyogU2tpcCB3b3JkcyBiZWxvdyB0
aGUgbnVsbC10cmFwIHJlZ2lvbiAoc21hbGwgZml4bnVtcywgc2NhbGFycykuICovCisgICAgaWYg
KHdvcmQgPj0gQkFDS0VORF9QQUdFX0JZVEVTKQorICAgICAgICBwcmVzZXJ2ZV9wb2ludGVyKHdv
cmQsIDApOworfQorCit2b2lkIGdjX3NjYXZfZmliZXJfYmluZGluZ19zdGFjayhsaXNwb2JqICpi
YXNlLCBsaXNwb2JqICplbmQpCit7CisgICAgc2Nhdl9iaW5kaW5nX3N0YWNrKGJhc2UsIGVuZCwg
Y29tcGFjdGluZ19wKCkgPyAwIDogZ2NfbWFya19vYmopOworfQorI2VuZGlmIC8qIExJU1BfRkVB
VFVSRV9TQl9GSUJFUiAqLworCiAjaWYgIUdFTkNHQ19JU19QUkVDSVNFCiBleHRlcm4gdm9pZCB2
aXNpdF9jb250ZXh0X3JlZ2lzdGVycyh2b2lkICgqcHJvYykob3NfY29udGV4dF9yZWdpc3Rlcl90
LCB2b2lkKiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvc19jb250ZXh0
X3QgKmNvbnRleHQsIHZvaWQqKTsKQEAgLTM0MjcsNiArMzQ0OSw5IEBAIGdhcmJhZ2VfY29sbGVj
dF9nZW5lcmF0aW9uKGdlbmVyYXRpb25faW5kZXhfdCBnZW5lcmF0aW9uLCBpbnQgcmFpc2UsCiAg
ICAgICAgICAgICBzZW1pY29uc2VydmF0aXZlX3Bpbl9zdGFjayh0aCwgZ2VuZXJhdGlvbik7CiAj
ZWxpZiBkZWZpbmVkIHJlZ19MSU5LX1JFVFVSTgogICAgICAgICAgICAgcGluX2NhbGxfY2hhaW5f
YW5kX2JveGVkX3JlZ2lzdGVycyh0aCk7CisjZW5kaWYKKyNpZmRlZiBMSVNQX0ZFQVRVUkVfU0Jf
RklCRVIKKyAgICAgICAgICAgIGdjX3NjYW5fZmliZXJfc3RhY2tzKHRoKTsKICNlbmRpZgogICAg
ICAgICB9CiAgICAgfQpAQCAtMzUyNCw2ICszNTQ5LDkgQEAgZ2FyYmFnZV9jb2xsZWN0X2dlbmVy
YXRpb24oZ2VuZXJhdGlvbl9pbmRleF90IGdlbmVyYXRpb24sIGludCByYWlzZSwKICAgICAgICAg
ICAgIHNjYXZfYmluZGluZ19zdGFjaygobGlzcG9iaiopdGgtPmJpbmRpbmdfc3RhY2tfc3RhcnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3BvYmoqKWdldF9iaW5kaW5nX3N0
YWNrX3BvaW50ZXIodGgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhY3Rp
bmdfcCgpID8gMCA6IGdjX21hcmtfb2JqKTsKKyNpZmRlZiBMSVNQX0ZFQVRVUkVfU0JfRklCRVIK
KyAgICAgICAgICAgIGdjX3NjYXZfZmliZXJfYmluZGluZ19zdGFja3ModGgpOworI2VuZGlmCiAg
ICAgICAgICAgICAvKiBkbyB0aGUgdGxzIGFzIHdlbGwgKi8KICAgICAgICAgICAgIGxpc3BvYmoq
IGZyb20gPSAmdGgtPmxpc3BfdGhyZWFkOwogICAgICAgICAgICAgbGlzcG9iaiogdG8gPSAobGlz
cG9iaiopKFN5bWJvbFZhbHVlKEZSRUVfVExTX0lOREVYLDApICsgKGNoYXIqKXRoKTsKZGlmZiAt
LWdpdCBhL3NyYy9ydW50aW1lL2ludGVycnVwdC5jIGIvc3JjL3J1bnRpbWUvaW50ZXJydXB0LmMK
aW5kZXggZWE0NzFiZWM2Li45Yjk4N2YyZGYgMTAwNjQ0Ci0tLSBhL3NyYy9ydW50aW1lL2ludGVy
cnVwdC5jCisrKyBiL3NyYy9ydW50aW1lL2ludGVycnVwdC5jCkBAIC00Miw2ICs0Miw4IEBACiAK
ICNpbmNsdWRlICJnZW5lc2lzL3NiY2wuaCIKIAorI2luY2x1ZGUgImZpYmVyLmgiCisKICNpbmNs
dWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgpA
QCAtMTcxOSw3ICsxNzIxLDEwIEBAIGJvb2wgaGFuZGxlX2d1YXJkX3BhZ2VfdHJpZ2dlcmVkKG9z
X2NvbnRleHRfdCAqY29udGV4dCxvc192bV9hZGRyZXNzX3QgYWRkcikKICAgICAgICAgICAgIChj
b250ZXh0LCBTdGF0aWNTeW1ib2xGdW5jdGlvbihVTkRFRklORURfQUxJRU5fVkFSSUFCTEVfRVJS
T1IpKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIGVsc2UgcmV0dXJuIDA7CisjaWZk
ZWYgTElTUF9GRUFUVVJFX1NCX0ZJQkVSCisgICAgaWYgKHNiX2ZpYmVyX2hhbmRsZV9ic19mYXVs
dChjb250ZXh0LCBhZGRyLCB0aCkpIHJldHVybiAxOworI2VuZGlmCisgICAgcmV0dXJuIDA7CiB9
CiAMCiAjaWZuZGVmIExJU1BfRkVBVFVSRV9XSU4zMgpkaWZmIC0tZ2l0IGEvc3JjL3J1bnRpbWUv
aW50ZXJydXB0LmggYi9zcmMvcnVudGltZS9pbnRlcnJ1cHQuaAppbmRleCBjOGFlZGIwYjEuLjU3
N2ViNWJjNiAxMDA2NDQKLS0tIGEvc3JjL3J1bnRpbWUvaW50ZXJydXB0LmgKKysrIGIvc3JjL3J1
bnRpbWUvaW50ZXJydXB0LmgKQEAgLTM5LDYgKzM5LDcgQEAgZXh0ZXJuIHZvaWQgYmxvY2tfZGVm
ZXJyYWJsZV9zaWduYWxzKHNpZ3NldF90ICpvbGQpOwogZXh0ZXJuIHZvaWQgYmxvY2tfYmxvY2th
YmxlX3NpZ25hbHMoc2lnc2V0X3QgKm9sZCk7CiAKIGV4dGVybiB2b2lkIHVuYmxvY2tfZGVmZXJy
YWJsZV9zaWduYWxzKHNpZ3NldF90ICp3aGVyZSk7CitleHRlcm4gdm9pZCB1bmJsb2NrX3NpZ25h
bHNfaW5fY29udGV4dF9hbmRfbWF5YmVfd2Fybihvc19jb250ZXh0X3QgKmNvbnRleHQpOwogZXh0
ZXJuIHZvaWQgdW5ibG9ja19nY19zdG9wX3NpZ25hbCh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgbWF5
YmVfc2F2ZV9nY19tYXNrX2FuZF9ibG9ja19kZWZlcnJhYmxlcyhvc19jb250ZXh0X3QgKmNvbnRl
eHQpOwpkaWZmIC0tZ2l0IGEvc3JjL3J1bnRpbWUvcG1yZ2MuYyBiL3NyYy9ydW50aW1lL3Btcmdj
LmMKaW5kZXggZTY4YTI4M2Q0Li5jYjYxYjBmOTggMTAwNjQ0Ci0tLSBhL3NyYy9ydW50aW1lL3Bt
cmdjLmMKKysrIGIvc3JjL3J1bnRpbWUvcG1yZ2MuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgImdlbmVzaXMvZ2MtdGFibGVzLmgiCiAjaW5jbHVkZSAiZ2VuZXNpcy9zcGxpdC1vcmRlcmVk
LWxpc3QuaCIKICNpbmNsdWRlICJ0aHJlYWQuaCIKKyNpbmNsdWRlICJmaWJlci5oIgogI2luY2x1
ZGUgInN5c19tbWFwLmluYyIKIAogLyogZm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KQEAgLTQyMSw3
ICs0MjIsOCBAQCBzdGF0aWMgdm9pZCBpbXBhcnRfbWFya19zdGlja2luZXNzKGxpc3BvYmogd29y
ZCkKICAgICB9CiB9CiAKLSNpZiAhR0VOQ0dDX0lTX1BSRUNJU0UgfHwgZGVmaW5lZCBMSVNQX0ZF
QVRVUkVfTUlQUyB8fCBkZWZpbmVkIExJU1BfRkVBVFVSRV9QUEM2NCB8fCBkZWZpbmVkIExJU1Bf
RkVBVFVSRV9QUEMKKyNpZiAhR0VOQ0dDX0lTX1BSRUNJU0UgfHwgZGVmaW5lZCBMSVNQX0ZFQVRV
UkVfTUlQUyB8fCBkZWZpbmVkIExJU1BfRkVBVFVSRV9QUEM2NCB8fCBkZWZpbmVkIExJU1BfRkVB
VFVSRV9QUEMgXAorICAgIHx8IChkZWZpbmVkIExJU1BfRkVBVFVSRV9BUk02NCAmJiBkZWZpbmVk
IExJU1BfRkVBVFVSRV9TQl9GSUJFUikKIHN0YXRpYyB2b2lkIHByZXNlcnZlX3BvaW50ZXIob3Nf
Y29udGV4dF9yZWdpc3Rlcl90IG9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X19hdHRyaWJ1dGVfXygodW51c2VkKSkgdm9pZCogYXJnKSB7CiAgICAgLyogVGhlIG1hcmstcmVn
aW9uIEdDIG5ldmVyIGZpbHRlcnMgYmFzZWQgb24gdHlwZSB0YWdzLApAQCAtNjE3LDYgKzYxOSwx
OSBAQCBzdGF0aWMgdm9pZCBwaW5fY2FsbF9jaGFpbl9hbmRfYm94ZWRfcmVnaXN0ZXJzKHN0cnVj
dCB0aHJlYWQqIHRoKSB7CiB9CiAjZW5kaWYKIAorI2lmZGVmIExJU1BfRkVBVFVSRV9TQl9GSUJF
Ugordm9pZCBnY19wcmVzZXJ2ZV9maWJlcl93b3JkKGxpc3BvYmogd29yZCkKK3sKKyAgICAvKiBt
cl9wcmVzZXJ2ZV9vYmplY3Qgc2VsZi1maWx0ZXJzOyBubyBwcmUtY3VsbCBuZWVkZWQuICovCisg
ICAgcHJlc2VydmVfcG9pbnRlcih3b3JkLCAwKTsKK30KKwordm9pZCBnY19zY2F2X2ZpYmVyX2Jp
bmRpbmdfc3RhY2sobGlzcG9iaiAqYmFzZSwgbGlzcG9iaiAqZW5kKQoreworICAgIHNjYXZfYmlu
ZGluZ19zdGFjayhiYXNlLCBlbmQsIG1yX3ByZXNlcnZlX29iamVjdCk7Cit9CisjZW5kaWYgLyog
TElTUF9GRUFUVVJFX1NCX0ZJQkVSICovCisKICNpZiAhR0VOQ0dDX0lTX1BSRUNJU0UKIGV4dGVy
biB2b2lkIHZpc2l0X2NvbnRleHRfcmVnaXN0ZXJzKHZvaWQgKCpwcm9jKShvc19jb250ZXh0X3Jl
Z2lzdGVyX3QsIHZvaWQqKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9z
X2NvbnRleHRfdCAqY29udGV4dCwgdm9pZCopOwpAQCAtODgyLDYgKzg5Nyw5IEBAIGdhcmJhZ2Vf
Y29sbGVjdF9nZW5lcmF0aW9uKGdlbmVyYXRpb25faW5kZXhfdCBnZW5lcmF0aW9uLCBpbnQgcmFp
c2UsCiAgICAgICAgICAgICBzZW1pY29uc2VydmF0aXZlX3Bpbl9zdGFjayh0aCwgZ2VuZXJhdGlv
bik7CiAjZWxpZiBkZWZpbmVkIHJlZ19MSU5LX1JFVFVSTgogICAgICAgICAgICAgcGluX2NhbGxf
Y2hhaW5fYW5kX2JveGVkX3JlZ2lzdGVycyh0aCk7CisjZW5kaWYKKyNpZmRlZiBMSVNQX0ZFQVRV
UkVfU0JfRklCRVIKKyAgICAgICAgICAgIGdjX3NjYW5fZmliZXJfc3RhY2tzKHRoKTsKICNlbmRp
ZgogICAgICAgICB9CiAgICAgfQpAQCAtOTc4LDYgKzk5Niw5IEBAIGdhcmJhZ2VfY29sbGVjdF9n
ZW5lcmF0aW9uKGdlbmVyYXRpb25faW5kZXhfdCBnZW5lcmF0aW9uLCBpbnQgcmFpc2UsCiAgICAg
ICAgICAgICBzY2F2X2JpbmRpbmdfc3RhY2soKGxpc3BvYmoqKXRoLT5iaW5kaW5nX3N0YWNrX3N0
YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXNwb2JqKilnZXRfYmluZGlu
Z19zdGFja19wb2ludGVyKHRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcl9w
cmVzZXJ2ZV9vYmplY3QpOworI2lmZGVmIExJU1BfRkVBVFVSRV9TQl9GSUJFUgorICAgICAgICAg
ICAgZ2Nfc2Nhdl9maWJlcl9iaW5kaW5nX3N0YWNrcyh0aCk7CisjZW5kaWYKICAgICAgICAgICAg
IC8qIGRvIHRoZSB0bHMgYXMgd2VsbCAqLwogICAgICAgICAgICAgbGlzcG9iaiogZnJvbSA9ICZ0
aC0+bGlzcF90aHJlYWQ7CiAgICAgICAgICAgICBsaXNwb2JqKiB0byA9IChsaXNwb2JqKikoU3lt
Ym9sVmFsdWUoRlJFRV9UTFNfSU5ERVgsMCkgKyAoY2hhciopdGgpOwpkaWZmIC0tZ2l0IGEvc3Jj
L3J1bnRpbWUvdGhyZWFkLmggYi9zcmMvcnVudGltZS90aHJlYWQuaAppbmRleCA2OWI3OTg5MWYu
LmM0M2UxYzkzYiAxMDA2NDQKLS0tIGEvc3JjL3J1bnRpbWUvdGhyZWFkLmgKKysrIGIvc3JjL3J1
bnRpbWUvdGhyZWFkLmgKQEAgLTMzLDYgKzMzLDEwIEBAIHZvaWQqIG9zX2dldF9jc3Aoc3RydWN0
IHRocmVhZCogdGgpOwogdm9pZCBhc3NlcnRfb25fc3RhY2soc3RydWN0IHRocmVhZCAqdGgsIHZv
aWQgKmVzcCk7CiAjZW5kaWYgLyogZGVmaW5lZChMSVNQX0ZFQVRVUkVfU0JfU0FGRVBPSU5UKSAq
LwogCisjaWZkZWYgTElTUF9GRUFUVVJFX1NCX0ZJQkVSCitzdHJ1Y3Qgc2JfZmliZXJfY3R4Owor
I2VuZGlmCisKIC8qIFRoZSB0aHJlYWQgc3RydWN0IGlzIGdlbmVyYXRlZCBmcm9tIGxpc3AgZHVy
aW5nIGdlbmVzaXMgYW5kIGl0CiAgKiBuZWVkcyB0byBrbm93IHRoZSBzaXplcyBvZiBhbGwgaXRz
IG1lbWJlcnMsIGJ1dCBzb21lIHR5cGVzIG1heSBoYXZlCiAgKiBhcmJpdHJhcnkgbGVuZ3Rocywg
dGh1cyB0aGUgcG9pbnRlcnMgYXJlIHN0b3JlZCBpbnN0ZWFkLiBUaGlzCkBAIC05MSw2ICs5NSw5
IEBAIHN0cnVjdCBleHRyYV90aHJlYWRfZGF0YQogICAgIG9zX2NvbnRleHRfcmVnaXN0ZXJfdCBj
YXJyaWVkX2Jhc2VfcG9pbnRlcjsKICAgICBIQU5ETEUgc3luY2hyb25vdXNfaW9faGFuZGxlX2Fu
ZF9mbGFnOwogICAgIHZvaWQqIHdhaXRpbmdfb25fYWRkcmVzczsgLy8gdXNlZCBvbmx5IGlmICMr
c2ItZnV0ZXgKKyNlbmRpZgorI2lmZGVmIExJU1BfRkVBVFVSRV9TQl9GSUJFUgorICAgIHN0cnVj
dCBzYl9maWJlcl9jdHggKmZpYmVyX2xpc3Q7IC8vIGhlYWQgb2YgcmVnaXN0ZXJlZCBmaWJlciBs
aXN0CiAjZW5kaWYKICAgICBpbnQgYXJlbmFfY291bnQ7IC8vIG51bWJlciBvZiBzdHJ1Y3R1cmVz
IGluIGFyZW5hX3NhdmVhcmVhcwogICAgIGFyZW5hX3N0YXRlKiBhcmVuYV9zYXZlYXJlYTsKZGlm
ZiAtLWdpdCBhL3NyYy9ydW50aW1lL3g4Ni02NC1maWJlci5jIGIvc3JjL3J1bnRpbWUveDg2LTY0
LWZpYmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4wOWZkMTcxOWUK
LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvcnVudGltZS94ODYtNjQtZmliZXIuYwpAQCAtMCwwICsx
LDEwOSBAQAorI2luY2x1ZGUgImZpYmVyLmgiCisjaW5jbHVkZSAiZ2VuZXNpcy9zeW1ib2wuaCIK
KyNpbmNsdWRlICJnZW5lc2lzL3N0YXRpYy1zeW1ib2xzLmgiCisjaW5jbHVkZSA8c3RkaW50Lmg+
CisKK3ZvaWQgc2JfZmliZXJfcHJlcGFyZShzdHJ1Y3Qgc2JfZmliZXJfY3R4ICpmLAorICAgICAg
ICAgICAgICAgICAgICAgIHZvaWQgKCpmbikodm9pZCAqKSwgdm9pZCAqYXJnKQoreworICAgIGYt
PmVudHJ5X2ZuID0gZm47CisgICAgZi0+ZW50cnlfYXJnID0gYXJnOworCisgICAgdm9pZCAqKnNw
ID0gKHZvaWQgKiopZi0+c3RhY2tfZW5kOworICAgIHNwID0gKHZvaWQgKiopKCh1aW50cHRyX3Qp
c3AgJiB+MHhGVUxMKTsgICAgICAvKiAxNi1ieXRlIGFsaWduICovCisgICAgKigtLXNwKSA9ICh2
b2lkICopMDsKKyAgICAqKC0tc3ApID0gKHZvaWQgKilTWU1CT0woRklCRVJfVFJBTVApLT52YWx1
ZTsgLyogUkVUIHRhcmdldCAqLworCisgICAgZi0+cmVncy5yc3AgPSBzcDsKKyAgICBmLT5yZWdz
LnJicCA9IDA7CisgICAgZi0+cmVncy5yYnggPSAwOworICAgIGYtPnJlZ3MucjEyID0gKHZvaWQg
KilmOworICAgIGYtPnJlZ3MucjEzID0gMDsKKyAgICBmLT5yZWdzLnIxNCA9IDA7CisgICAgZi0+
cmVncy5yMTUgPSAwOworCisgICAgdWludDMyX3QgbXhjc3I7CisgICAgX19hc21fXyB2b2xhdGls
ZSAoInN0bXhjc3IgJTAiIDogIj1tIihteGNzcikpOworICAgIGYtPnJlZ3MubXhjc3IgPSBteGNz
cjsKKyAgICBmLT5yZWdzLnBhZF8gID0gMDsKK30KKwordm9pZCAqc2JfZmliZXJfc3AoY29uc3Qg
c3RydWN0IHNiX2ZpYmVyX2N0eCAqZikKK3sKKyAgICByZXR1cm4gZi0+cmVncy5yc3A7Cit9CisK
K2ludCBzYl9maWJlcl9nY19yZWdzKGNvbnN0IHN0cnVjdCBzYl9maWJlcl9jdHggKmYsIGxpc3Bv
YmogKm91dCwgaW50IG1heCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IG4gPSA2OworICAgIGlm
IChtYXggPCBuKSByZXR1cm4gMDsKKyAgICBpbnQgaSA9IDA7CisgICAgb3V0W2krK10gPSAobGlz
cG9iailmLT5yZWdzLnJieDsKKyAgICBvdXRbaSsrXSA9IChsaXNwb2JqKWYtPnJlZ3MucmJwOwor
ICAgIG91dFtpKytdID0gKGxpc3BvYmopZi0+cmVncy5yMTI7CisgICAgb3V0W2krK10gPSAobGlz
cG9iailmLT5yZWdzLnIxMzsKKyAgICBvdXRbaSsrXSA9IChsaXNwb2JqKWYtPnJlZ3MucjE0Owor
ICAgIG91dFtpKytdID0gKGxpc3BvYmopZi0+cmVncy5yMTU7CisgICAgcmV0dXJuIGk7Cit9CisK
K3ZvaWQgc2JfZmliZXJfcmViaW5kX3RocmVhZChzdHJ1Y3Qgc2JfZmliZXJfY3R4ICpmLCBzdHJ1
Y3QgdGhyZWFkICpuZXdfb3duZXIpCit7CisgICAgZi0+cmVncy5yMTMgPSAodm9pZCAqKW5ld19v
d25lcjsKK30KKworLyogTGlzcC1zdGFjayBob29rczogYWxpYXMgY29udHJvbF9zdGFja18qIHRv
IHRoZSBmaWJlcidzIG5hdGl2ZSBDCisgICBzdGFjayByYW5nZS4gKi8KKworaW50IHNiX2ZpYmVy
X2xpc3Bfc3RhY2tfYWxsb2Moc3RydWN0IHNiX2ZpYmVyX2N0eCAqZiwgc2l6ZV90IHNpemUpCit7
CisgICAgKHZvaWQpc2l6ZTsKKyAgICBmLT5jb250cm9sX3N0YWNrX2Jhc2UgPSAobGlzcG9iaiAq
KWYtPnN0YWNrX2Jhc2U7CisgICAgZi0+Y29udHJvbF9zdGFja19lbmQgID0gKGxpc3BvYmogKilm
LT5zdGFja19lbmQ7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgc2JfZmliZXJfbGlzcF9zdGFj
a19mcmVlKHN0cnVjdCBzYl9maWJlcl9jdHggKmYpCit7CisgICAgZi0+Y29udHJvbF9zdGFja19i
YXNlID0gTlVMTDsKKyAgICBmLT5jb250cm9sX3N0YWNrX2VuZCAgPSBOVUxMOworfQorCit2b2lk
IHNiX2ZpYmVyX2xpc3Bfc3RhY2tfY2FwdHVyZV9tYWluKHN0cnVjdCBzYl9maWJlcl9jdHggKmYs
IHN0cnVjdCB0aHJlYWQgKnRoKQoreworICAgIGYtPmNvbnRyb2xfc3RhY2tfYmFzZSA9IHRoLT5j
b250cm9sX3N0YWNrX3N0YXJ0OworICAgIGYtPmNvbnRyb2xfc3RhY2tfZW5kICA9IHRoLT5jb250
cm9sX3N0YWNrX2VuZDsKKyAgICBmLT5jc19ndWFyZF9wcm90ZWN0ZWQgPQorICAgICAgICB0aC0+
c3RhdGVfd29yZC5jb250cm9sX3N0YWNrX2d1YXJkX3BhZ2VfcHJvdGVjdGVkOworfQorCit2b2lk
IHNiX2ZpYmVyX2xpc3Bfc3RhY2tfc3VzcGVuZChzdHJ1Y3Qgc2JfZmliZXJfY3R4ICpmLCBzdHJ1
Y3QgdGhyZWFkICp0aCkKK3sKKyAgICBmLT5jb250cm9sX3N0YWNrX2Jhc2UgPSB0aC0+Y29udHJv
bF9zdGFja19zdGFydDsKKyAgICBmLT5jb250cm9sX3N0YWNrX2VuZCAgPSB0aC0+Y29udHJvbF9z
dGFja19lbmQ7CisgICAgZi0+Y3NfZ3VhcmRfcHJvdGVjdGVkID0gdGgtPnN0YXRlX3dvcmQuY29u
dHJvbF9zdGFja19ndWFyZF9wYWdlX3Byb3RlY3RlZDsKK30KKwordm9pZCBzYl9maWJlcl9saXNw
X3N0YWNrX3Jlc3VtZShzdHJ1Y3Qgc2JfZmliZXJfY3R4ICpmLCBzdHJ1Y3QgdGhyZWFkICp0aCkK
K3sKKyAgICB0aC0+Y29udHJvbF9zdGFja19zdGFydCA9IGYtPmNvbnRyb2xfc3RhY2tfYmFzZTsK
KyAgICB0aC0+Y29udHJvbF9zdGFja19lbmQgICA9IGYtPmNvbnRyb2xfc3RhY2tfZW5kOworICAg
IHRoLT5zdGF0ZV93b3JkLmNvbnRyb2xfc3RhY2tfZ3VhcmRfcGFnZV9wcm90ZWN0ZWQgPSBmLT5j
c19ndWFyZF9wcm90ZWN0ZWQ7Cit9CisKK3NpemVfdCBzYl9maWJlcl9jb250cm9sX3N0YWNrX3Np
emVfYnl0ZXMoY29uc3Qgc3RydWN0IHNiX2ZpYmVyX2N0eCAqZikKK3sKKyAgICBpZiAoZi0+c3Rh
Y2tfc3RhcnQgJiYgZi0+c3RhY2tfZW5kKQorICAgICAgICByZXR1cm4gKGNoYXIgKilmLT5zdGFj
a19lbmQgLSAoY2hhciAqKWYtPnN0YWNrX3N0YXJ0OworICAgIGlmIChmLT5jb250cm9sX3N0YWNr
X2Jhc2UgJiYgZi0+Y29udHJvbF9zdGFja19lbmQpCisgICAgICAgIHJldHVybiAoY2hhciAqKWYt
PmNvbnRyb2xfc3RhY2tfZW5kIC0gKGNoYXIgKilmLT5jb250cm9sX3N0YWNrX2Jhc2U7CisgICAg
cmV0dXJuIDA7Cit9CisKK3NpemVfdCBzYl9maWJlcl9jb250cm9sX3N0YWNrX3VzZWRfYnl0ZXMo
Y29uc3Qgc3RydWN0IHNiX2ZpYmVyX2N0eCAqZikKK3sKKyAgICB2b2lkICpzcCA9IGYtPnJlZ3Mu
cnNwOworICAgIGlmIChzcCAmJiBmLT5zdGFja19lbmQgJiYgKGNoYXIgKilzcCA8IChjaGFyICop
Zi0+c3RhY2tfZW5kKQorICAgICAgICByZXR1cm4gKGNoYXIgKilmLT5zdGFja19lbmQgLSAoY2hh
ciAqKXNwOworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvc3JjL3J1bnRpbWUveDg2LTY0
LWZpYmVyLmggYi9zcmMvcnVudGltZS94ODYtNjQtZmliZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAuLjI4NDVlNmIzNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9ydW50
aW1lL3g4Ni02NC1maWJlci5oCkBAIC0wLDAgKzEsMjMgQEAKKyNpZm5kZWYgU0JDTF9GSUJFUl9Y
ODZfNjRfSAorI2RlZmluZSBTQkNMX0ZJQkVSX1g4Nl82NF9ICisKKyNpbmNsdWRlIDxzdGRpbnQu
aD4KKworLyogQ2FsbGVlLXNhdmVkIHJlZ2lzdGVyIHNldDogUkJYLCBSQlAsIFIxMi1SMTUsIE1Y
Q1NSLiBSU1AgaXMgZmlyc3QKKyAqIGJlY2F1c2UgdGhlIGZhbGxiYWNrIHN3aXRjaGVyIGZpYmVy
LXN3YXAtcmVncyBpcyByZWFjaGVkIHZpYSBDQUxMLAorICogc28gdGhlIGNhbGxlZSdzIHJldHVy
biBQQyBzaXRzIGF0IFtSU1BdIHdoZW4gdGhlIHNhdmUgaGFwcGVucy4gVGhlCisgKiAlc3dhcC1y
ZWdzIFZPUCBwdXNoZXMgUkVTVU1FIGJlZm9yZSBzYXZpbmcgc28gdGhlIHNhbWUgc2hhcGUgd29y
a3MuCisgKi8KK3N0cnVjdCBzYl9maWJlcl9yZWdzIHsKKyAgICB2b2lkICAgICpyc3A7ICAgICAv
KiAweDAwICovCisgICAgdm9pZCAgICAqcmJ4OyAgICAgLyogMHgwOCAqLworICAgIHZvaWQgICAg
KnJicDsgICAgIC8qIDB4MTAgKi8KKyAgICB2b2lkICAgICpyMTI7ICAgICAvKiAweDE4ICovCisg
ICAgdm9pZCAgICAqcjEzOyAgICAgLyogMHgyMCAqLworICAgIHZvaWQgICAgKnIxNDsgICAgIC8q
IDB4MjggKi8KKyAgICB2b2lkICAgICpyMTU7ICAgICAvKiAweDMwICovCisgICAgdWludDMyX3Qg
bXhjc3I7ICAgLyogMHgzOCAqLworICAgIHVpbnQzMl90IHBhZF87ICAgIC8qIDB4M0MgKi8KK307
CisKKyNlbmRpZiAvKiBTQkNMX0ZJQkVSX1g4Nl82NF9IICovCmRpZmYgLS1naXQgYS90ZXN0cy9m
aWJlci5pbXB1cmUubGlzcCBiL3Rlc3RzL2ZpYmVyLmltcHVyZS5saXNwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZDIxNDk2ZDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVz
dHMvZmliZXIuaW1wdXJlLmxpc3AKQEAgLTAsMCArMSw2MjUgQEAKKzs7OzsgU3RyZXNzIGFuZCBy
ZWdyZXNzaW9uIHRlc3RzIGZvciBzYi1maWJlci4KKworOzs7OyBUaGlzIHNvZnR3YXJlIGlzIHBh
cnQgb2YgdGhlIFNCQ0wgc3lzdGVtLiBTZWUgdGhlIFJFQURNRSBmaWxlIGZvcgorOzs7OyBtb3Jl
IGluZm9ybWF0aW9uLgorCisodW5sZXNzIChhbmQgKG1lbWJlciA6c2ItdGhyZWFkICpmZWF0dXJl
cyopCisgICAgICAgICAgICAgKG1lbWJlciA6c2ItZmliZXIgKmZlYXR1cmVzKikKKyAgICAgICAg
ICAgICAob3IgKG1lbWJlciA6eDg2LTY0ICpmZWF0dXJlcyopCisgICAgICAgICAgICAgICAgICht
ZW1iZXIgOmFybTY0ICpmZWF0dXJlcyopKQorICAgICAgICAgICAgIChub3QgKG1lbWJlciA6d2lu
MzIgKmZlYXR1cmVzKikpKQorICAoaW52b2tlLXJlc3RhcnQgJ3J1bi10ZXN0czo6c2tpcC1maWxl
KSkKKworKHJlcXVpcmUgOnNiLWZpYmVyKQorKHVzZS1wYWNrYWdlIDpzYi1maWJlcikKKworKGRl
Zm1hY3JvIHdpdGgtbWFpbi1maWJlciAoKG1haW4pICZib2R5IGJvZHkpCisgIGAobGV0ICgoLG1h
aW4gKG1ha2UtbWFpbi1maWJlcikpKQorICAgICAodW53aW5kLXByb3RlY3QgKHByb2duICxAYm9k
eSkKKyAgICAgICAocmVsZWFzZS1maWJlciAsbWFpbikpKSkKKworKGRlZm1hY3JvIHdpdGgtbWFp
bitjaGlsZCAoKG1haW4gY2hpbGQgZW50cnktZm4gJnJlc3QgbWFrZS1hcmdzKSAmYm9keSBib2R5
KQorICBgKHdpdGgtbWFpbi1maWJlciAoLG1haW4pCisgICAgICh3aXRoLWZpYmVyICgsY2hpbGQg
LGVudHJ5LWZuICxAbWFrZS1hcmdzKSAsQGJvZHkpKSkKKworOzs7IC0tLSBHQyBpbnRlZ3JhdGlv
biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
KHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6Z2Mtd2l0aC1zdXNwZW5kZWQtZmliZXJzKSkKKyAg
KHdpdGgtbWFpbi1maWJlciAobWFpbikKKyAgICAobGV0KiAoKG4gNTApCisgICAgICAgICAgIChm
aWJlcnMgKG1ha2UtYXJyYXkgbikpCisgICAgICAgICAgIChvayAobWFrZS1hcnJheSBuIDppbml0
aWFsLWVsZW1lbnQgbmlsKSkpCisgICAgICAoZG90aW1lcyAoaSBuKQorICAgICAgICAobGV0ICgo
aWR4IGkpKQorICAgICAgICAgIChzZXRmIChhcmVmIGZpYmVycyBpKQorICAgICAgICAgICAgICAg
IChtYWtlLWZpYmVyCisgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAgICAg
ICAgICAobGV0ICgoZGF0YSAobGlzdCAobWFrZS1hcnJheSA1IDppbml0aWFsLWVsZW1lbnQgaWR4
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zIGlkeCAoKiBpZHgg
aWR4KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0IG5pbCAi
ZmliZXItfkQiIGlkeCkpKSkKKyAgICAgICAgICAgICAgICAgICAgIChzd2l0Y2gtZmliZXIgKGFy
ZWYgZmliZXJzIGlkeCkgbWFpbikKKyAgICAgICAgICAgICAgICAgICAgIChzZXRmIChhcmVmIG9r
IGlkeCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKD0gKGFyZWYgKGZpcnN0IGRh
dGEpIDApIGlkeCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKD0gKGNhciAoc2Vj
b25kIGRhdGEpKSBpZHgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmc9
ICh0aGlyZCBkYXRhKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
Zm9ybWF0IG5pbCAiZmliZXItfkQiIGlkeCkpKSkKKyAgICAgICAgICAgICAgICAgICAgIChzd2l0
Y2gtZmliZXIgKGFyZWYgZmliZXJzIGlkeCkgbWFpbikpKSkpKSkKKyAgICAgIChkb3RpbWVzIChp
IG4pIChzd2l0Y2gtZmliZXIgbWFpbiAoYXJlZiBmaWJlcnMgaSkpKQorICAgICAgKGRvdGltZXMg
KF8gMykgKHNiLWV4dDpnYyA6ZnVsbCB0KSkKKyAgICAgIChkb3RpbWVzIChpIG4pIChzd2l0Y2gt
ZmliZXIgbWFpbiAoYXJlZiBmaWJlcnMgaSkpKQorICAgICAgKGRvdGltZXMgKGkgbikgKGFzc2Vy
dCAoYXJlZiBvayBpKSAoKSAiZmliZXIgfkQgY29ycnVwdGVkIiBpKSkKKyAgICAgIChkb3RpbWVz
IChpIG4pIChyZWxlYXNlLWZpYmVyIChhcmVmIGZpYmVycyBpKSkpKSkpCisKKyh3aXRoLXRlc3Qg
KDpuYW1lICg6ZmliZXIgOmdjLWR1cmluZy1yZXBlYXRlZC1zd2l0Y2hlcykpCisgIChsZXQgKChj
b3VudCAwKSkKKyAgICAod2l0aC1tYWluK2NoaWxkIChtYWluIGNoaWxkCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs
b29wIChpbmNmIGNvdW50KSAobWFrZS1hcnJheSAxMDAwKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoeWllbGQtZmliZXIpKSkpCisgICAgICAoZG90aW1lcyAoaSAyMDApCisg
ICAgICAgIChzd2l0Y2gtZmliZXIgbWFpbiBjaGlsZCkKKyAgICAgICAgKHdoZW4gKHplcm9wICht
b2QgaSAyMCkpIChzYi1leHQ6Z2MgOmZ1bGwgdCkpKQorICAgICAgKGFzc2VydCAoPSBjb3VudCAy
MDApKSkpKQorCisod2l0aC10ZXN0ICg6bmFtZSAoOmZpYmVyIDpnYy1kdXJpbmctbWFzcy1jcmVh
dGlvbikpCisgICh3aXRoLWZpYmVyLXRocmVhZCAoKQorICAgIChsZXQgKGZpYmVycykKKyAgICAg
IChkb3RpbWVzIChpIDUwMCkKKyAgICAgICAgKHB1c2ggKG1ha2UtZmliZXIgKGxhbWJkYSAoKSkp
IGZpYmVycykKKyAgICAgICAgKHdoZW4gKHplcm9wIChtb2QgaSA1MCkpIChzYi1leHQ6Z2MgOmZ1
bGwgdCkpKQorICAgICAgKG1hcGMgIydyZWxlYXNlLWZpYmVyIGZpYmVycykpKSkKKworKHdpdGgt
dGVzdCAoOm5hbWUgKDpmaWJlciA6dHJhbXBvbGluZS12cy1nYy1zdG9wKSkKKyAgKGxldCAoKGRv
bmUgKHNiLXRocmVhZDptYWtlLXNlbWFwaG9yZSkpCisgICAgICAgIChzdG9wLWdjIG5pbCkpCisg
ICAgKGxldCAoKGdjLXRocmVhZAorICAgICAgICAgICAgKHNiLXRocmVhZDptYWtlLXRocmVhZAor
ICAgICAgICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgIChsb29wIHVudGlsIHN0b3At
Z2MgZG8gKHNiLWV4dDpnYykgKHNsZWVwIDAuMDAwMSkpKQorICAgICAgICAgICAgIDpuYW1lICJ0
cmFtcG9saW5lLXZzLWdjLXN0b3AgcHVtcGVyIikpKQorICAgICAgKHNiLXRocmVhZDptYWtlLXRo
cmVhZAorICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICh3aXRoLWZpYmVyLXRocmVhZCAoKQor
ICAgICAgICAgICAoZG90aW1lcyAoaSA1MDApCisgICAgICAgICAgICAgKGxldCAoKGYgKG1ha2Ut
ZmliZXIgKGxhbWJkYSAoKSBpKSkpKQorICAgICAgICAgICAgICAgKHJlc3VtZS1maWJlciBmKSkp
KQorICAgICAgICAgKHNiLXRocmVhZDpzaWduYWwtc2VtYXBob3JlIGRvbmUpKQorICAgICAgIDpu
YW1lICJ0cmFtcG9saW5lLXZzLWdjLXN0b3Agd29ya2VyIikKKyAgICAgIChzYi10aHJlYWQ6d2Fp
dC1vbi1zZW1hcGhvcmUgZG9uZSkKKyAgICAgIChzZXRmIHN0b3AtZ2MgdCkKKyAgICAgIChzYi10
aHJlYWQ6am9pbi10aHJlYWQgZ2MtdGhyZWFkKSkpKQorCisoZGVmdmFyICpicy1zdHJlc3MtdmFy
KiA6ZGVmYXVsdCkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6YmluZGluZy1zdGFjay1z
dHJlc3MpKQorICAod2l0aC1tYWluLWZpYmVyIChtYWluKQorICAgIChsZXQqICgobiAyMCkKKyAg
ICAgICAgICAgKGZpYmVycyAobWFrZS1hcnJheSBuKSkKKyAgICAgICAgICAgKHJlc3VsdHMgKG1h
a2UtYXJyYXkgbiA6aW5pdGlhbC1lbGVtZW50IG5pbCkpKQorICAgICAgKGRvdGltZXMgKGkgbikK
KyAgICAgICAgKGxldCAoKGlkeCBpKSkKKyAgICAgICAgICAoc2V0ZiAoYXJlZiBmaWJlcnMgaSkK
KyAgICAgICAgICAgICAgICAobWFrZS1maWJlcgorICAgICAgICAgICAgICAgICAobGFtYmRhICgp
CisgICAgICAgICAgICAgICAgICAgKGxldCAoKCpicy1zdHJlc3MtdmFyKiBpZHgpKQorICAgICAg
ICAgICAgICAgICAgICAgKGRvdGltZXMgKF8gMTApCisgICAgICAgICAgICAgICAgICAgICAgIChz
d2l0Y2gtZmliZXIgKGFyZWYgZmliZXJzIGlkeCkgbWFpbikKKyAgICAgICAgICAgICAgICAgICAg
ICAgKHVubGVzcyAoPSAqYnMtc3RyZXNzLXZhciogaWR4KQorICAgICAgICAgICAgICAgICAgICAg
ICAgIChzZXRmIChhcmVmIHJlc3VsdHMgaWR4KSA6ZmFpbGVkKQorICAgICAgICAgICAgICAgICAg
ICAgICAgIChyZXR1cm4pKSkKKyAgICAgICAgICAgICAgICAgICAgIChzZXRmIChhcmVmIHJlc3Vs
dHMgaWR4KSA6b2spKQorICAgICAgICAgICAgICAgICAgIChzd2l0Y2gtZmliZXIgKGFyZWYgZmli
ZXJzIGlkeCkgbWFpbikpKSkpKQorICAgICAgKGRvdGltZXMgKF8gMTApCisgICAgICAgIChkb3Rp
bWVzIChpIG4pIChzd2l0Y2gtZmliZXIgbWFpbiAoYXJlZiBmaWJlcnMgaSkpKQorICAgICAgICAo
YXNzZXJ0IChlcSAqYnMtc3RyZXNzLXZhciogOmRlZmF1bHQpKSkKKyAgICAgIChkb3RpbWVzIChp
IG4pIChzd2l0Y2gtZmliZXIgbWFpbiAoYXJlZiBmaWJlcnMgaSkpKQorICAgICAgKGRvdGltZXMg
KGkgbikgKGFzc2VydCAoZXEgOm9rIChhcmVmIHJlc3VsdHMgaSkpKSkKKyAgICAgIChkb3RpbWVz
IChpIG4pIChyZWxlYXNlLWZpYmVyIChhcmVmIGZpYmVycyBpKSkpKSkpCisKKyh3aXRoLXRlc3Qg
KDpuYW1lICg6ZmliZXIgOmhhbmRsZXItY2x1c3RlcnMtYWNyb3NzLXN3aXRjaCkpCisgIChsZXQg
KChzZW0gKHNiLXRocmVhZDptYWtlLXNlbWFwaG9yZSkpCisgICAgICAgIChpbm5lci1jYXVnaHQg
bmlsKQorICAgICAgICAob3V0ZXItY2F1Z2h0IG5pbCkpCisgICAgKHNiLXRocmVhZDptYWtlLXRo
cmVhZAorICAgICAobGFtYmRhICgpCisgICAgICAgKGxldCogKChtZiAobWFrZS1tYWluLWZpYmVy
KSkKKyAgICAgICAgICAgICAgKGYgbmlsKSkKKyAgICAgICAgIChzZXRmIGYgKG1ha2UtZmliZXIK
KyAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgICAgICAgKGhhbmRs
ZXItY2FzZQorICAgICAgICAgICAgICAgICAgICAgICAgKGhhbmRsZXItY2FzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChwcm9nbiAoc3dpdGNoLWZpYmVyIGYgbWYpIChlcnJvciAiYm9v
bSIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IgKGUpIChzZXRmIGlubmVyLWNh
dWdodCAocHJpbmMtdG8tc3RyaW5nIGUpKSkpCisgICAgICAgICAgICAgICAgICAgICAgKGVycm9y
IChlKSAoc2V0ZiBvdXRlci1jYXVnaHQgKHByaW5jLXRvLXN0cmluZyBlKSkpKSkpKQorICAgICAg
ICAgKHN3aXRjaC1maWJlciBtZiBmKQorICAgICAgICAgKHN3aXRjaC1maWJlciBtZiBmKQorICAg
ICAgICAgKHJlbGVhc2UtZmliZXIgZikKKyAgICAgICAgIChyZWxlYXNlLWZpYmVyIG1mKSkKKyAg
ICAgICAoc2ItdGhyZWFkOnNpZ25hbC1zZW1hcGhvcmUgc2VtKSkpCisgICAgKGFzc2VydCAoc2It
dGhyZWFkOndhaXQtb24tc2VtYXBob3JlIHNlbSA6dGltZW91dCA1KSkKKyAgICAoYXNzZXJ0IChl
cXVhbCAiYm9vbSIgaW5uZXItY2F1Z2h0KSkKKyAgICAoYXNzZXJ0IChudWxsIG91dGVyLWNhdWdo
dCkpKSkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6aGFuZGxlciA6ZXNjYXBlKSkKKyAg
KGxldCAoY2F1Z2h0KQorICAgICh3aXRoLW1haW4rY2hpbGQgKG1mIGYgKGxhbWJkYSAoKSAoZXJy
b3IgImVycm9yIikpKQorICAgICAgKGhhbmRsZXItY2FzZSAoc3dpdGNoLWZpYmVyIG1mIGYpCisg
ICAgICAgIChlcnJvciAoZSkgKHNldGYgY2F1Z2h0IChwcmluYy10by1zdHJpbmcgZSkpKSkpCisg
ICAgKGFzc2VydCAoZXF1YWwgY2F1Z2h0ICJlcnJvciIpKSkpCisKKyh3aXRoLXRlc3QgKDpuYW1l
ICg6ZmliZXIgOmhhbmRsZXIgOm5lc3RlZCkpCisgIChkb3RpbWVzIChpIDEwMDApCisgICAgKGxl
dCAoY2F1Z2h0KQorICAgICAgKHdpdGgtbWFpbitjaGlsZCAobWYgZgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGxhbWJkYSAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFu
ZGxlci1jYXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFuZGxlci1jYXNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb2duICh5aWVsZC1maWJl
cikgKGVycm9yICJpdGVyIH5BIiBpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGVycm9yIChlKSAoc2V0ZiBjYXVnaHQgKHByaW5jLXRvLXN0cmluZyBlKSkpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciAoKSBuaWwpKSkpCisgICAgICAgIChzd2l0
Y2gtZmliZXIgbWYgZikKKyAgICAgICAgKHN3aXRjaC1maWJlciBtZiBmKQorICAgICAgICAoYXNz
ZXJ0IChzZWFyY2ggKGZvcm1hdCBuaWwgIml0ZXIgfkEiIGkpIChvciBjYXVnaHQgIiIpKSkpKSkp
CisKKyh3aXRoLXRlc3QgKDpuYW1lICg6ZmliZXIgOm11bHRpLXRocmVhZC1pbmRlcGVuZGVudC1m
aWJlcnMpKQorICAobGV0ICgocmVzdWx0cyAobWFrZS1hcnJheSA0IDppbml0aWFsLWVsZW1lbnQg
bmlsKSkKKyAgICAgICAgKGxvY2sgKHNiLXRocmVhZDptYWtlLW11dGV4KSkpCisgICAgKGxldCAo
KHRocmVhZHMKKyAgICAgICAgICAgIChsb29wIGZvciB0aSBiZWxvdyA0IGNvbGxlY3QKKyAgICAg
ICAgICAgICAgICAgIChsZXQgKChpZHggdGkpKQorICAgICAgICAgICAgICAgICAgICAoc2ItdGhy
ZWFkOm1ha2UtdGhyZWFkCisgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgpCisgICAgICAg
ICAgICAgICAgICAgICAgICh3aXRoLWZpYmVyLXRocmVhZCAoKQorICAgICAgICAgICAgICAgICAg
ICAgICAgIChsZXQqICgoY291bnQgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGNoaWxkIChtYWtlLWZpYmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGxhbWJkYSAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGRvdGltZXMgKF8gMTAwMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGluY2YgY291bnQpICh5aWVsZC1maWJlcikpKSkpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGRvdGltZXMgKF8gMTAwMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHN3aXRjaC1maWJlciAqY3VycmVudC1maWJlciogY2hpbGQpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHJlbGVhc2UtZmliZXIgY2hpbGQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc2ItdGhyZWFkOndpdGgtbXV0ZXggKGxvY2spCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChzZXRmIChhcmVmIHJlc3VsdHMgaWR4KSBjb3VudCkpKSkpKSkpKSkKKyAgICAgIChtYXBj
ICMnc2ItdGhyZWFkOmpvaW4tdGhyZWFkIHRocmVhZHMpKQorICAgIChkb3RpbWVzIChpIDQpIChh
c3NlcnQgKD0gMTAwMCAoYXJlZiByZXN1bHRzIGkpKSkpKSkKKworKHdpdGgtdGVzdCAoOm5hbWUg
KDpmaWJlciA6Y3VycmVudC1maWJlci1pcy1wZXItdGhyZWFkKSkKKyAgKGxldCogKChuLXRocmVh
ZHMgNCkKKyAgICAgICAgIChzdGFydCAoc2ItdGhyZWFkOm1ha2Utc2VtYXBob3JlKSkKKyAgICAg
ICAgIChyZXN1bHRzIChtYWtlLWFycmF5IG4tdGhyZWFkcyA6aW5pdGlhbC1lbGVtZW50IG5pbCkp
KQorICAgIChsZXQgKCh0aHJlYWRzCisgICAgICAgICAgICAobG9vcCBmb3IgaSBiZWxvdyBuLXRo
cmVhZHMgY29sbGVjdAorICAgICAgICAgICAgICAgICAgKGxldCAoKGlkeCBpKSkKKyAgICAgICAg
ICAgICAgICAgICAgKHNiLXRocmVhZDptYWtlLXRocmVhZAorICAgICAgICAgICAgICAgICAgICAg
KGxhbWJkYSAoKQorICAgICAgICAgICAgICAgICAgICAgICAod2l0aC1maWJlci10aHJlYWQgKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoYyAobWFrZS1maWJlcgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgpIChsb29wICh5aWVsZC1maWJlcikp
KSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNiLXRocmVhZDp3YWl0LW9uLXNlbWFw
aG9yZSBzdGFydCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYW5kbGVyLWNhc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZ24gKGRvdGltZXMgKF8gNTAwMCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3dpdGNoLWZpYmVyICpjdXJy
ZW50LWZpYmVyKiBjKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNl
dGYgKGFyZWYgcmVzdWx0cyBpZHgpIDpvaykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChlcnJvciAoZSkgKHNldGYgKGFyZWYgcmVzdWx0cyBpZHgpIGUpKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChyZWxlYXNlLWZpYmVyIGMpKSkpKSkpKSkKKyAgICAgIChzbGVlcCAwLjA1
KQorICAgICAgKGRvdGltZXMgKF8gbi10aHJlYWRzKSAoc2ItdGhyZWFkOnNpZ25hbC1zZW1hcGhv
cmUgc3RhcnQpKQorICAgICAgKG1hcGMgIydzYi10aHJlYWQ6am9pbi10aHJlYWQgdGhyZWFkcykp
CisgICAgKGxvb3AgZm9yIHIgYWNyb3NzIHJlc3VsdHMKKyAgICAgICAgICBkbyAoYXNzZXJ0IChl
cSByIDpvaykgKCkgInRocmVhZCBlcnJvcmVkOiB+UyIgcikpKSkKKworKHNiLWFsaWVuOmRlZmlu
ZS1hbGllbi12YXJpYWJsZSAoImxvc2Vfb25fY29ycnVwdGlvbl9wIiAlbG9zZS1vbi1jb3JydXB0
aW9uLXApCisgICAgc2ItYWxpZW46aW50KQorCisoZGVmbWFjcm8gd2l0aG91dC1sb3NlLW9uLWNv
cnJ1cHRpb24gKCZib2R5IGJvZHkpCisgIChsZXQgKChzYXZlZCAoZ2Vuc3ltKSkpCisgICAgYChs
ZXQgKCgsc2F2ZWQgJWxvc2Utb24tY29ycnVwdGlvbi1wKSkKKyAgICAgICAodW53aW5kLXByb3Rl
Y3QgKHByb2duIChzZXRmICVsb3NlLW9uLWNvcnJ1cHRpb24tcCAwKSAsQGJvZHkpCisgICAgICAg
ICAoc2V0ZiAlbG9zZS1vbi1jb3JydXB0aW9uLXAgLHNhdmVkKSkpKSkKKworKHdpdGgtdGVzdCAo
Om5hbWUgKDpmaWJlciA6c3RhY2stb3ZlcmZsb3ctcmVjb3ZlcnMpKQorICAobGV0IChjYXVnaHQp
CisgICAgKHdpdGgtbWFpbitjaGlsZCAobWFpbiBjaGlsZAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGxhbWJkYSAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVjbGFyZSAo
b3B0aW1pemUgKHNwZWVkIDApIChzYWZldHkgMykgKGRlYnVnIDMpKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGhhbmRsZXItY2FzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGxhYmVscyAoKGJsb3cgKG4pICgxKyAoYmxvdyAoMSsgbikpKSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChibG93IDApKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChzdG9yYWdlLWNvbmRpdGlvbiAoKSAoc2V0ZiBjYXVnaHQgdCkpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoeWllbGQtZmliZXIpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOnN0YWNrLXNpemUgNjU1MzYpCisgICAgICAod2l0aG91dC1sb3NlLW9uLWNvcnJ1
cHRpb24gKHN3aXRjaC1maWJlciBtYWluIGNoaWxkKSkpCisgICAgKGFzc2VydCBjYXVnaHQpKSkK
KworKGRlZnZhciAqYnMtYSopIChkZWZ2YXIgKmJzLWIqKSAoZGVmdmFyICpicy1jKikgKGRlZnZh
ciAqYnMtZCopCisKKyh3aXRoLXRlc3QgKDpuYW1lICg6ZmliZXIgOmJpbmRpbmctc3RhY2stb3Zl
cmZsb3ctcmVjb3ZlcnMpKQorICAobGV0IChjYXVnaHQpCisgICAgKHdpdGgtbWFpbitjaGlsZCAo
bWFpbiBjaGlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoZGVjbGFyZSAob3B0aW1pemUgKHNwZWVkIDApIChzYWZl
dHkgMykgKGRlYnVnIDMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYmVscyAo
KHJlY3VyIChkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWNs
YXJlICh0eXBlIGZpeG51bSBkKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAocHJvZ3YgJygqYnMtYSogKmJzLWIqICpicy1jKiAqYnMtZCopCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoMCAwIDAgMCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWN1ciAoMSsgZCkpKSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGhhbmRsZXItY2FzZSAocmVjdXIgMCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzdG9yYWdlLWNvbmRpdGlvbiAoKSAoc2V0ZiBjYXVnaHQg
dCkpKSkpKQorICAgICAgKHdpdGhvdXQtbG9zZS1vbi1jb3JydXB0aW9uIChzd2l0Y2gtZmliZXIg
bWFpbiBjaGlsZCkpKQorICAgIChhc3NlcnQgY2F1Z2h0KSkpCisKKyh3aXRoLXRlc3QgKDpuYW1l
ICg6ZmliZXIgOmZhbm91dC1zY2FsaW5nKSA6c2xvdyB0IDpza2lwcGVkLW9uIChub3QgOnNsb3cp
KQorICAoZG9saXN0IChuICcoMTAgMTAwIDEwMDAgMTAwMDApKQorICAgICh3aXRoLW1haW4tZmli
ZXIgKG1haW4pCisgICAgICAobGV0KiAoKGZpYmVycyAobWFrZS1hcnJheSBuKSkKKyAgICAgICAg
ICAgICAodG90YWwgIDApKQorICAgICAgICAoZG90aW1lcyAoaSBuKQorICAgICAgICAgIChzZXRm
IChhcmVmIGZpYmVycyBpKQorICAgICAgICAgICAgICAgIChtYWtlLWZpYmVyIChsYW1iZGEgKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb29wIChpbmNmIHRvdGFsKSAoeWllbGQt
ZmliZXIpKSkpKSkKKyAgICAgICAgKGxldCogKChyb3VuZHMgKG1heCAxIChmbG9vciAxMDAwMDAg
bikpKQorICAgICAgICAgICAgICAgKHN0YXJ0ICAoZ2V0LWludGVybmFsLXJlYWwtdGltZSkpKQor
ICAgICAgICAgIChkb3RpbWVzIChfIHJvdW5kcykKKyAgICAgICAgICAgIChkb3RpbWVzIChpIG4p
IChzd2l0Y2gtZmliZXIgbWFpbiAoYXJlZiBmaWJlcnMgaSkpKSkKKyAgICAgICAgICAobGV0KiAo
KGVsYXBzZWQgKC8gKC0gKGdldC1pbnRlcm5hbC1yZWFsLXRpbWUpIHN0YXJ0KQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbC10aW1lLXVuaXRzLXBlci1zZWNvbmQpKQorICAg
ICAgICAgICAgICAgICAocmF0ZSAgICAoaWYgKD4gZWxhcHNlZCAwKSAoLyAoKiByb3VuZHMgbikg
ZWxhcHNlZCkgMCkpKQorICAgICAgICAgICAgKGZvcm1hdCB0ICJ+JjsgICB+NkQgZmliZXJzIHgg
fkQgcm91bmRzOiB+LDJGIHN3aXRjaGVzL3NlY34lIgorICAgICAgICAgICAgICAgICAgICBuIHJv
dW5kcyByYXRlKSkpCisgICAgICAgIChhc3NlcnQgKD4gdG90YWwgMCkpCisgICAgICAgIChkb3Rp
bWVzIChpIG4pIChyZWxlYXNlLWZpYmVyIChhcmVmIGZpYmVycyBpKSkpKSkpKQorCisod2l0aC10
ZXN0ICg6bmFtZSAoOmZpYmVyIDpmYW5vdXQtZ2MtdW5kZXItbG9hZCkgOnNsb3cgdCA6c2tpcHBl
ZC1vbiAobm90IDpzbG93KSkKKyAgKGRvbGlzdCAobiAnKDEwMCAxMDAwIDUwMDApKQorICAgICh3
aXRoLW1haW4tZmliZXIgKG1haW4pCisgICAgICAobGV0KiAoKGZpYmVycyAobWFrZS1hcnJheSBu
KSkKKyAgICAgICAgICAgICAob2sgICAgIChtYWtlLWFycmF5IG4gOmluaXRpYWwtZWxlbWVudCBu
aWwpKSkKKyAgICAgICAgKGRvdGltZXMgKGkgbikKKyAgICAgICAgICAobGV0ICgoaWR4IGkpKQor
ICAgICAgICAgICAgKHNldGYgKGFyZWYgZmliZXJzIGkpCisgICAgICAgICAgICAgICAgICAobWFr
ZS1maWJlcgorICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgICAg
ICAgIChsZXQgKChkYXRhIChsaXN0IChjb25zIGlkeCBpZHgpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAobWFrZS1hcnJheSAzIDppbml0aWFsLWVsZW1lbnQgaWR4KSkp
KQorICAgICAgICAgICAgICAgICAgICAgICAoeWllbGQtZmliZXIpCisgICAgICAgICAgICAgICAg
ICAgICAgIChzZXRmIChhcmVmIG9rIGlkeCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGFuZCAoPSBpZHggKGNhciAoZmlyc3QgZGF0YSkpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICg9IGlkeCAoYXJlZiAoc2Vjb25kIGRhdGEpIDApKSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICh5aWVsZC1maWJlcikpKSkpKSkKKyAgICAgICAgKGRvdGltZXMgKGkgbikgKHN3
aXRjaC1maWJlciBtYWluIChhcmVmIGZpYmVycyBpKSkpCisgICAgICAgIChzYi1leHQ6Z2MgOmZ1
bGwgdCkKKyAgICAgICAgKGRvdGltZXMgKGkgbikgKHN3aXRjaC1maWJlciBtYWluIChhcmVmIGZp
YmVycyBpKSkpCisgICAgICAgIChhc3NlcnQgKD0gbiAoY291bnQgdCBvaykpICgpICJHQyBjb3Jy
dXB0aW9uIGF0IG49fkQiIG4pCisgICAgICAgIChkb3RpbWVzIChpIG4pIChyZWxlYXNlLWZpYmVy
IChhcmVmIGZpYmVycyBpKSkpKSkpKQorCisoZGVmdW4gJWNhbGxlci1mcmFtZS1kcml2ZXIgKCkK
KyAgKHdpdGgtbWFpbitjaGlsZCAobWFpbiBjaGlsZCAobGFtYmRhICgpIChsb29wICh5aWVsZC1m
aWJlcikpKSkKKyAgICAoZG90aW1lcyAoXyAxMDAwMDAwKSAoc3dpdGNoLWZpYmVyIG1haW4gY2hp
bGQpKQorICAgIDs7IEZvcmNlIGFuIElOVk9LRS1XSVRILVNBVkVELUZQIHdyYXAgYWZ0ZXIgdGhl
IGxvb3AuCisgICAgKGxldCAoKHggKGdldC1pbnRlcm5hbC1yZWFsLXRpbWUpKSkgKGRlY2xhcmUg
KGlnbm9yZSB4KSkpKSkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6Y2FsbGVyLWZyYW1l
LWxpdmUtYWNyb3NzLTFtLXN3aXRjaGVzKQorICAgICAgICAgICAgOnNsb3cgdCA6c2tpcHBlZC1v
biAobm90IDpzbG93KSkKKyAgKGxldCAoKHdpdG5lc3MgKGxpc3QgOmZpYmVyIDpsaXZlbmVzcy1w
cm9iZSkpKQorICAgICglY2FsbGVyLWZyYW1lLWRyaXZlcikKKyAgICAoYXNzZXJ0IChjb25zcCB3
aXRuZXNzKSkKKyAgICAoYXNzZXJ0IChlcSAoZmlyc3Qgd2l0bmVzcykgOmZpYmVyKSkKKyAgICAo
YXNzZXJ0IChlcSAoc2Vjb25kIHdpdG5lc3MpIDpsaXZlbmVzcy1wcm9iZSkpKSkKKworKHdpdGgt
dGVzdCAoOm5hbWUgKDpmaWJlciA6Z2MtdW5kZXItY3JlYXRlLWRlc3Ryb3ktY2h1cm4pKQorICAo
d2l0aC1maWJlci10aHJlYWQgKCkKKyAgICAoZG90aW1lcyAoaSAyMDApCisgICAgICAocmVsZWFz
ZS1maWJlciAobWFrZS1maWJlciAobGFtYmRhICgpIChtYWtlLWFycmF5IDEwKSkpKQorICAgICAg
KHdoZW4gKHplcm9wIChtb2QgaSAyNSkpIChzYi1leHQ6Z2MgOmZ1bGwgdCkpKSkpCisKKyh3aXRo
LXRlc3QgKDpuYW1lICg6ZmliZXIgOnN3aXRjaC1jeWNsZS1zdXJ2aXZlcy1nYy1jaHVybikgOnNs
b3cgdCA6c2tpcHBlZC1vbiAobm90IDpzbG93KSkKKyAgKHdpdGgtbWFpbi1maWJlciAobWFpbikK
KyAgICAobGV0ICgoaGl0cyAwKSkKKyAgICAgIChkb3RpbWVzIChpIDUwMDApCisgICAgICAgIChs
ZXQgKChleHBlY3RlZCBpKSkKKyAgICAgICAgICAod2l0aC1maWJlciAoY2hpbGQgKGxhbWJkYSAo
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmNmIGhpdHMpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGFzc2VydCAoPSBleHBlY3RlZCBpKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoeWllbGQtZmliZXIpKSkKKyAgICAgICAgICAgIChzd2l0Y2gt
ZmliZXIgbWFpbiBjaGlsZCkpKQorICAgICAgICAod2hlbiAoemVyb3AgKG1vZCBpIDI1MCkpIChz
Yi1leHQ6Z2MgOmZ1bGwgdCkpKQorICAgICAgKGFzc2VydCAoPSBoaXRzIDUwMDApKSkpKQorCiso
d2l0aC10ZXN0ICg6bmFtZSAoOmZpYmVyIDpjcm9zcy10aHJlYWQtZGVzdHJveSkpCisgIChsZXQq
ICgoY3JlYXRlZCBuaWwpCisgICAgICAgICAoY3JlYXRvci1kb25lIChzYi10aHJlYWQ6bWFrZS1z
ZW1hcGhvcmUpKQorICAgICAgICAgKGRlc3Ryb3llci1vayAoc2ItdGhyZWFkOm1ha2Utc2VtYXBo
b3JlKSkKKyAgICAgICAgICh0MSAoc2ItdGhyZWFkOm1ha2UtdGhyZWFkCisgICAgICAgICAgICAg
IChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgICAobGV0ICgobWYgKG1ha2UtbWFpbi1maWJlcikp
KQorICAgICAgICAgICAgICAgICAgKHNldGYgY3JlYXRlZCAobWFrZS1maWJlciAobGFtYmRhICgp
KSkpCisgICAgICAgICAgICAgICAgICAoc2ItdGhyZWFkOnNpZ25hbC1zZW1hcGhvcmUgY3JlYXRv
ci1kb25lKQorICAgICAgICAgICAgICAgICAgKHNiLXRocmVhZDp3YWl0LW9uLXNlbWFwaG9yZSBk
ZXN0cm95ZXItb2sgOnRpbWVvdXQgNSkKKyAgICAgICAgICAgICAgICAgIChyZWxlYXNlLWZpYmVy
IG1mKSkpKSkpCisgICAgKHNiLXRocmVhZDp3YWl0LW9uLXNlbWFwaG9yZSBjcmVhdG9yLWRvbmUg
OnRpbWVvdXQgNSkKKyAgICAocmVsZWFzZS1maWJlciBjcmVhdGVkKQorICAgIChzYi10aHJlYWQ6
c2lnbmFsLXNlbWFwaG9yZSBkZXN0cm95ZXItb2spCisgICAgKHNiLXRocmVhZDpqb2luLXRocmVh
ZCB0MSkpKQorCisod2l0aC10ZXN0ICg6bmFtZSAoOmZpYmVyIDpzaWduYWwtc2FmZS11bmRlci10
aW1lci1nYykpCisgIChsZXQgKChmaXJlZCAwKSkKKyAgICAod2l0aC1tYWluK2NoaWxkIChtYWlu
IGNoaWxkIChsYW1iZGEgKCkgKGxvb3AgKHlpZWxkLWZpYmVyKSkpKQorICAgICAgKGxldCAoKHRp
bWVyIChzYi1leHQ6bWFrZS10aW1lcgorICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgpCisg
ICAgICAgICAgICAgICAgICAgICAgKGluY2YgZmlyZWQpCisgICAgICAgICAgICAgICAgICAgICAg
KHdoZW4gKHplcm9wIChtb2QgZmlyZWQgNTApKSAoc2ItZXh0OmdjKSkpCisgICAgICAgICAgICAg
ICAgICAgIDp0aHJlYWQgc2ItdGhyZWFkOipjdXJyZW50LXRocmVhZCopKSkKKyAgICAgICAgKHNi
LWV4dDpzY2hlZHVsZS10aW1lciB0aW1lciAwLjAwMDUgOnJlcGVhdC1pbnRlcnZhbCAwLjAwMDUp
CisgICAgICAgICh1bndpbmQtcHJvdGVjdAorICAgICAgICAgICAgIChkb3RpbWVzIChfIDIwMDAw
MCkgKHN3aXRjaC1maWJlciBtYWluIGNoaWxkKSkKKyAgICAgICAgICAoc2ItZXh0OnVuc2NoZWR1
bGUtdGltZXIgdGltZXIpKSkpCisgICAgKGFzc2VydCAoPj0gZmlyZWQgMSkpKSkKKworIytzYi10
aHJlYWQKKyh3aXRoLXRlc3QgKDpuYW1lICg6ZmliZXIgOnJlZ2lzdGVyLXByZXBhcmUtZ2MtcmFj
ZSkpCisgIChsZXQgKChzdG9wIG5pbCkpCisgICAgKGxldCAoKGdjLXRoIChzYi10aHJlYWQ6bWFr
ZS10aHJlYWQKKyAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkgKGxvb3AgdW50aWwgc3RvcCBk
byAoc2ItZXh0OmdjKSAoc2xlZXAgMC4wMDA1KSkpKSkKKyAgICAgICAgICAoZHJpdmVycworICAg
ICAgICAgICAgKGxvb3AgZm9yIGQgYmVsb3cgNCBjb2xsZWN0CisgICAgICAgICAgICAgICAgICAo
c2ItdGhyZWFkOm1ha2UtdGhyZWFkCisgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKQorICAg
ICAgICAgICAgICAgICAgICAgKG1ha2UtbWFpbi1maWJlcikKKyAgICAgICAgICAgICAgICAgICAg
IChkb3RpbWVzIChfIDUwKQorICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoZnMgKGxvb3Ag
cmVwZWF0IDE2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0
IChtYWtlLWZpYmVyIChsYW1iZGEgKCkpKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICht
YXBjICMncmVsZWFzZS1maWJlciBmcykpKSkpKSkpCisgICAgICAobWFwYyAjJ3NiLXRocmVhZDpq
b2luLXRocmVhZCBkcml2ZXJzKQorICAgICAgKHNldGYgc3RvcCB0KQorICAgICAgKHNiLXRocmVh
ZDpqb2luLXRocmVhZCBnYy10aCkpKSkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6dGhy
ZWFkLWV4aXQtcmVsZWFzZXMtb3JwaGFuZWQtZmliZXJzKSkKKyAgKGRvdGltZXMgKF8gNTApCisg
ICAgKHNiLXRocmVhZDpqb2luLXRocmVhZAorICAgICAoc2ItdGhyZWFkOm1ha2UtdGhyZWFkCisg
ICAgICAobGFtYmRhICgpCisgICAgICAgIChtYWtlLW1haW4tZmliZXIpCisgICAgICAgIChkb3Rp
bWVzIChfIDIwMCkKKyAgICAgICAgICAobWFrZS1maWJlciAobGFtYmRhICgpIChsb29wICh5aWVs
ZC1maWJlcikpKSkpKSkpKQorICAoc2ItZXh0OmdjIDpmdWxsIHQpKQorCisod2l0aC10ZXN0ICg6
bmFtZSAoOmZpYmVyIDpkZWVwLXN0YWNrLXVuZGVyLWdjKSkKKyAgKGxldCogKChkZXB0aCAyMDAp
CisgICAgICAgICAoYnVpbHQgbmlsKSkKKyAgICAod2l0aC1tYWluK2NoaWxkIChtYWluIGNoaWxk
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChsYWJlbHMgKChyZWMgKG4gYWNjKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChkZWNsYXJlICh0eXBlIGZpeG51bSBuKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHplcm9wIG4pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbiAoeWllbGQtZmliZXIpIGFjYykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlYyAoMS0gbikg
KGNvbnMgbiBhY2MpKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXRmIGJ1
aWx0IChyZWMgZGVwdGggbmlsKSkpKSkKKyAgICAgIChzd2l0Y2gtZmliZXIgbWFpbiBjaGlsZCkg
ICAgICAgICA7IGNoaWxkIHJlYWNoZXMgZGVwdGgsIHlpZWxkcworICAgICAgKHNiLWV4dDpnYyA6
ZnVsbCB0KQorICAgICAgKHNiLWV4dDpnYyA6ZnVsbCB0KQorICAgICAgKHN3aXRjaC1maWJlciBt
YWluIGNoaWxkKSkgICAgICAgIDsgcmVzdW1lLCB1bndpbmQsIGZpYmVyIGRpZXMKKyAgICAoYXNz
ZXJ0ICg9IChsZW5ndGggYnVpbHQpIGRlcHRoKSkKKyAgICAoYXNzZXJ0ICg9IChyZWR1Y2UgIycr
IGJ1aWx0KSAoLyAoKiBkZXB0aCAoMSsgZGVwdGgpKSAyKSkpKSkKKworKHdpdGgtdGVzdCAoOm5h
bWUgKDpmaWJlciA6c2NydWItc2hydW5rLXBhdGggOm5vLXdpdG5lc3MtY29ycnVwdGlvbikKKyAg
ICAgICAgICAgIDpzbG93IHQgOnNraXBwZWQtb24gKG5vdCA6c2xvdykpCisgIChsZXQqICgoaXRl
cmF0aW9ucyAyMDApCisgICAgICAgICAocmVjdXJzZS1kZXB0aCAxNTApCisgICAgICAgICAod2l0
bmVzcyAobG9vcCByZXBlYXQgNjQgY29sbGVjdCAoY29ucyA6YWxpdmUgbmlsKSkpKQorICAgICh3
aXRoLW1haW4rY2hpbGQgKG1haW4gY2hpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChs
YW1iZGEgKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYmVscyAoKHJlYyAobiBh
Y2MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlY2xhcmUgKHR5
cGUgZml4bnVtIG4pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChp
ZiAoemVyb3AgbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YWNjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWMgKDEt
IG4pIChjb25zIG4gYWNjKSkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9v
cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlYyByZWN1cnNlLWRlcHRoIG5p
bCkgOyBncm93cyB+MTUwIGZyYW1lcyArIGNvbnNlcworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHlpZWxkLWZpYmVyKSkpKSkKKyAgICAgIChkb3RpbWVzIChfIGl0ZXJhdGlvbnMp
CisgICAgICAgIChzd2l0Y2gtZmliZXIgbWFpbiBjaGlsZCkKKyAgICAgICAgKHNiLWV4dDpnYyA6
ZnVsbCB0KQorICAgICAgICAoYXNzZXJ0IChldmVyeSAobGFtYmRhIChjKSAoZXEgKGNhciBjKSA6
YWxpdmUpKSB3aXRuZXNzKQorICAgICAgICAgICAgICAgICgpCisgICAgICAgICAgICAgICAgIndp
dG5lc3MgY29ycnVwdGlvbiAtLSBjb25zZXJ2YXRpdmUgc2Nhbm5lciBwaW5uZWQgZ2FyYmFnZSIp
KSkpKQorCisod2l0aC10ZXN0ICg6bmFtZSAoOmZpYmVyIDppbnRlcnJ1cHQtZmliZXIgOm5lc3Rl
ZC1oYW5kbGVyLWNhc2UpKQorICAobGV0IChpbm5lci1jYXVnaHQgb3V0ZXItY2F1Z2h0KQorICAg
ICh3aXRoLW1haW4rY2hpbGQgKG1haW4gY2hpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhbmRsZXItY2FzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhbmRsZXItY2FzZSAoeWllbGQtZmli
ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaW1wbGUtZXJyb3IgKGUp
IChzZXRmIGlubmVyLWNhdWdodCBlKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGVycm9yIChlKSAoc2V0ZiBvdXRlci1jYXVnaHQgZSkpKSkpCisgICAgICAoc3dpdGNoLWZpYmVy
IG1haW4gY2hpbGQpICAgICAgICAgOyBydW4gdG8geWllbGQKKyAgICAgIChpbnRlcnJ1cHQtZmli
ZXIgY2hpbGQgKG1ha2UtY29uZGl0aW9uICdzaW1wbGUtZXJyb3IKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmb3JtYXQtY29udHJvbCAiaW50ZXJydXB0ZWQi
KSkKKyAgICAgIChzd2l0Y2gtZmliZXIgbWFpbiBjaGlsZCkpICAgICAgICA7IHJlc3VtZTsgaW50
ZXJydXB0IGZpcmVzIGluc2lkZSBjaGlsZAorICAgIChhc3NlcnQgaW5uZXItY2F1Z2h0ICAgKCkg
ImlubmVyIGhhbmRsZXItY2FzZSBkaWQgbm90IGNhdGNoIikKKyAgICAoYXNzZXJ0IChudWxsIG91
dGVyLWNhdWdodCkgKCkgIm91dGVyIGhhbmRsZXItY2FzZSBmaXJlZCAoc2hvdWxkIG5vdCkiKQor
ICAgIChhc3NlcnQgKHNlYXJjaCAiaW50ZXJydXB0ZWQiIChwcmluYy10by1zdHJpbmcgaW5uZXIt
Y2F1Z2h0KSkpKSkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6aW50ZXJydXB0LWZpYmVy
IDpoYW5kbGVyLXRyYW5zZm9ybXMtY29uZGl0aW9uKSkKKyAgKGxldCAocmVjZWl2ZWQpCisgICAg
KHdpdGgtbWFpbitjaGlsZCAobWFpbiBjaGlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGxhbWJkYSAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFuZGxlci1jYXNlICh5
aWVsZC1maWJlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2ltcGxlLWVycm9y
ICgpIChlcnJvciAidHJhbnNmb3JtZWQiKSkpKSkKKyAgICAgIChzd2l0Y2gtZmliZXIgbWFpbiBj
aGlsZCkKKyAgICAgIChpbnRlcnJ1cHQtZmliZXIgY2hpbGQgKG1ha2UtY29uZGl0aW9uICdzaW1w
bGUtZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpm
b3JtYXQtY29udHJvbCAib3JpZ2luYWwiKSkKKyAgICAgIChoYW5kbGVyLWNhc2UgKHN3aXRjaC1m
aWJlciBtYWluIGNoaWxkKQorICAgICAgICAoc2ltcGxlLWVycm9yIChlKSAoc2V0ZiByZWNlaXZl
ZCAocHJpbmMtdG8tc3RyaW5nIGUpKSkpKQorICAgIChhc3NlcnQgKHNlYXJjaCAidHJhbnNmb3Jt
ZWQiIHJlY2VpdmVkKSAoKQorICAgICAgICAgICAgImV4cGVjdGVkICd0cmFuc2Zvcm1lZCcsIGdv
dCB+UyIgcmVjZWl2ZWQpKSkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6am9pbi1maWJl
ciA6Y29uZGl0aW9uLWVzY2FwZSkpCisgICh3aXRoLW1haW4rY2hpbGQgKG1haW4gY2hpbGQgKGxh
bWJkYSAoKSAoZXJyb3IgImVzY2FwZXMtdmlhLWpvaW4iKSkpCisgICAgKGhhbmRsZXItY2FzZSAo
am9pbi1maWJlciBjaGlsZCkKKyAgICAgIChzaW1wbGUtZXJyb3IgKGUpCisgICAgICAgIChhc3Nl
cnQgKHNlYXJjaCAiZXNjYXBlcy12aWEtam9pbiIgKHByaW5jLXRvLXN0cmluZyBlKSkpKSkpKQor
Cis7OzsgLS0tIFBhcnRpYWwtZmFpbHVyZSBjbGVhbnVwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCis7OzsKKzs7OyBJZiBhIHN0ZXAgYWZ0ZXIgdGhlIEMtbGV2
ZWwgZmliZXIgYWxsb2NhdGlvbiBzaWduYWxzLCB0aGUgcmF3IFNBUCBtdXN0Cis7OzsgYmUgcmVs
ZWFzZWQgcmF0aGVyIHRoYW4gbGVha2VkLiAgV2UgZm9yY2UgdGhlIGZhaWx1cmUgYnkgc2hhZG93
aW5nCis7OzsgJUZJQkVSLVJFR0lTVEVSIGFuZCBpbnN0cnVtZW50ICVGSUJFUi1SRUxFQVNFIHRv
IGNvdW50IGNsZWFudXAgY2FsbHMuCisKKyhkZWZtYWNybyB3aXRoLWluamVjdGVkLXJlZ2lzdGVy
LWZhaWx1cmUgKChyZWxlYXNlLWNvdW50LXZhcikgJmJvZHkgYm9keSkKKyAgKGxldCAoKG9yaWct
ciAoZ2Vuc3ltKSkgKG9yaWctcmVsIChnZW5zeW0pKSkKKyAgICBgKGxldCogKCgscmVsZWFzZS1j
b3VudC12YXIgMCkKKyAgICAgICAgICAgICgsb3JpZy1yICAgKGZkZWZpbml0aW9uICdzYi1maWJl
cjo6JWZpYmVyLXJlZ2lzdGVyKSkKKyAgICAgICAgICAgICgsb3JpZy1yZWwgKGZkZWZpbml0aW9u
ICdzYi1maWJlcjo6JWZpYmVyLXJlbGVhc2UpKSkKKyAgICAgICAodW53aW5kLXByb3RlY3QKKyAg
ICAgICAgICAgIChwcm9nbgorICAgICAgICAgICAgICAoc2V0ZiAoZmRlZmluaXRpb24gJ3NiLWZp
YmVyOjolZmliZXItcmVnaXN0ZXIpCisgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKHRoIHNh
cCkKKyAgICAgICAgICAgICAgICAgICAgICAoZGVjbGFyZSAoaWdub3JlIHRoIHNhcCkpCisgICAg
ICAgICAgICAgICAgICAgICAgKGVycm9yICJpbmplY3RlZCByZWdpc3RlciBmYWlsdXJlIikpKQor
ICAgICAgICAgICAgICAoc2V0ZiAoZmRlZmluaXRpb24gJ3NiLWZpYmVyOjolZmliZXItcmVsZWFz
ZSkKKyAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoc2FwKQorICAgICAgICAgICAgICAgICAg
ICAgIChpbmNmICxyZWxlYXNlLWNvdW50LXZhcikKKyAgICAgICAgICAgICAgICAgICAgICAoZnVu
Y2FsbCAsb3JpZy1yZWwgc2FwKSkpCisgICAgICAgICAgICAgICxAYm9keSkKKyAgICAgICAgIChz
ZXRmIChmZGVmaW5pdGlvbiAnc2ItZmliZXI6OiVmaWJlci1yZWdpc3RlcikgLG9yaWctcikKKyAg
ICAgICAgIChzZXRmIChmZGVmaW5pdGlvbiAnc2ItZmliZXI6OiVmaWJlci1yZWxlYXNlKSAgLG9y
aWctcmVsKSkpKSkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6bWFrZS1maWJlciA6cGFy
dGlhbC1mYWlsdXJlLXJlbGVhc2VzLXNhcCkpCisgICh3aXRoLW1haW4tZmliZXIgKG1haW4pCisg
ICAgKGFzc2VydCAoZXEgbWFpbiAqY3VycmVudC1maWJlciopKQorICAgIChsZXQgKGdvdC1lcnJv
cikKKyAgICAgICh3aXRoLWluamVjdGVkLXJlZ2lzdGVyLWZhaWx1cmUgKHJlbGVhc2VzKQorICAg
ICAgICAoaGFuZGxlci1jYXNlIChtYWtlLWZpYmVyIChsYW1iZGEgKCkpKQorICAgICAgICAgIChz
aW1wbGUtZXJyb3IgKCkgKHNldGYgZ290LWVycm9yIHQpKSkKKyAgICAgICAgKGFzc2VydCBnb3Qt
ZXJyb3IpCisgICAgICAgIChhc3NlcnQgKD0gMSByZWxlYXNlcykgKCkKKyAgICAgICAgICAgICAg
ICAiZXhwZWN0ZWQgb25lICVmaWJlci1yZWxlYXNlIGNhbGwsIGdvdCB+RCIgcmVsZWFzZXMpKQor
ICAgICAgOzsgU3RhdGUgcmVtYWlucyB1c2FibGU6IGEgc3Vic2VxdWVudCBtYWtlLWZpYmVyIHdv
cmtzIGZpbmUuCisgICAgICAobGV0ICgoZiAobWFrZS1maWJlciAobGFtYmRhICgpKSkpKQorICAg
ICAgICAoYXNzZXJ0IChmaWJlci1hbGl2ZS1wIGYpKQorICAgICAgICAocmVsZWFzZS1maWJlciBm
KSkpKSkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6bWFrZS1tYWluLWZpYmVyIDpwYXJ0
aWFsLWZhaWx1cmUtcmVsZWFzZXMtc2FwKSkKKyAgKGFzc2VydCAobnVsbCAqY3VycmVudC1maWJl
ciopKQorICAobGV0ICgoZ290LWVycm9yIG5pbCkpCisgICAgKHdpdGgtaW5qZWN0ZWQtcmVnaXN0
ZXItZmFpbHVyZSAocmVsZWFzZXMpCisgICAgICAoaGFuZGxlci1jYXNlIChtYWtlLW1haW4tZmli
ZXIpCisgICAgICAgIChzaW1wbGUtZXJyb3IgKCkgKHNldGYgZ290LWVycm9yIHQpKSkKKyAgICAg
IChhc3NlcnQgZ290LWVycm9yKQorICAgICAgKGFzc2VydCAoPSAxIHJlbGVhc2VzKSAoKQorICAg
ICAgICAgICAgICAiZXhwZWN0ZWQgb25lICVmaWJlci1yZWxlYXNlIGNhbGwsIGdvdCB+RCIgcmVs
ZWFzZXMpKQorICAgIDs7IEEgZmFpbGVkIG1ha2UtbWFpbi1maWJlciBtdXN0IG5vdCBwdWJsaXNo
IHRoZSBwYXJ0aWFsIHdyYXBwZXIuCisgICAgKGFzc2VydCAobnVsbCAqY3VycmVudC1maWJlciop
KQorICAgIDs7IFJlY292ZXJ5OiBhIHN1YnNlcXVlbnQgbWFrZS1tYWluLWZpYmVyIHdvcmtzLgor
ICAgIChsZXQgKChtIChtYWtlLW1haW4tZmliZXIpKSkKKyAgICAgIChhc3NlcnQgKGZpYmVyLWFs
aXZlLXAgbSkpCisgICAgICAocmVsZWFzZS1maWJlciBtKSkpKQorCis7OzsgLS0tIENyb3NzLXRo
cmVhZCBtaWdyYXRpb24gLS0tCisKKyh3aXRoLXRlc3QgKDpuYW1lICg6ZmliZXIgOm1pZ3JhdGUg
Om1ldGFkYXRhLW9ubHkpCisgICAgICAgICAgICA6c2tpcHBlZC1vbiAobm90IDpzYi10aHJlYWQp
KQorICAobGV0KiAoKGZpYmVyLWNlbGwgKGxpc3QgbmlsKSkKKyAgICAgICAgIChhLWluc3RhbGxl
ZCAoc2ItdGhyZWFkOm1ha2Utc2VtYXBob3JlIDpuYW1lICJtZXRhb25seS1pbnN0YWxsZWQiKSkK
KyAgICAgICAgIChhLXJlbGVhc2VkICAoc2ItdGhyZWFkOm1ha2Utc2VtYXBob3JlIDpuYW1lICJt
ZXRhb25seS1yZWxlYXNlZCIpKQorICAgICAgICAgKGItZ28gICAgICAgIChzYi10aHJlYWQ6bWFr
ZS1zZW1hcGhvcmUgOm5hbWUgIm1ldGFvbmx5LWItZ28iKSkpCisgICAgKGxldCogKChhLXRocmVh
ZAorICAgICAgICAgICAgIChzYi10aHJlYWQ6bWFrZS10aHJlYWQKKyAgICAgICAgICAgICAgKGxh
bWJkYSAoKQorICAgICAgICAgICAgICAgICh3aXRoLW1haW4tZmliZXIgKGEtbWFpbikKKyAgICAg
ICAgICAgICAgICAgIChsZXQgKChjaGlsZCAobWFrZS1maWJlciAobGFtYmRhICgpICh5aWVsZC1m
aWJlcikgOmRvbmUpKSkpCisgICAgICAgICAgICAgICAgICAgIChyZXN1bWUtZmliZXIgY2hpbGQp
CisgICAgICAgICAgICAgICAgICAgIChzZXRmIChjYXIgZmliZXItY2VsbCkgY2hpbGQpCisgICAg
ICAgICAgICAgICAgICAgIChzYi10aHJlYWQ6c2lnbmFsLXNlbWFwaG9yZSBhLWluc3RhbGxlZCkK
KyAgICAgICAgICAgICAgICAgICAgKHNiLXRocmVhZDp3YWl0LW9uLXNlbWFwaG9yZSBhLXJlbGVh
c2VkKSkpKQorICAgICAgICAgICAgICA6bmFtZSAiZmliZXItbWlncmF0ZS1tZXRhLXNyYyIpKQor
ICAgICAgICAgICAoYi10aHJlYWQKKyAgICAgICAgICAgICAoc2ItdGhyZWFkOm1ha2UtdGhyZWFk
CisgICAgICAgICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgICAoc2ItdGhyZWFkOndh
aXQtb24tc2VtYXBob3JlIGItZ28pCisgICAgICAgICAgICAgICAgOzsgTWlncmF0ZWQgY2hpbGQg
c2l0cyBpbiBCJ3MgZmliZXIgbGlzdC4gIEIgcmVsZWFzZXMKKyAgICAgICAgICAgICAgICA7OyBp
dCB3aXRob3V0IGV2ZXIgc3dpdGNoaW5nIGludG8gaXQuICBUaGUgd3JhcHBlcidzCisgICAgICAg
ICAgICAgICAgOzsgRklCRVItVEhSRUFEIG11c3QgYmUgQiBieSB0aGlzIHBvaW50LCBhbmQKKyAg
ICAgICAgICAgICAgICA7OyBSRUxFQVNFLUZJQkVSIG11c3Qgc3VjY2VlZCB3aXRob3V0IHNpZ25h
bGxpbmcuCisgICAgICAgICAgICAgICAgKHJlbGVhc2UtZmliZXIgKGNhciBmaWJlci1jZWxsKSkp
CisgICAgICAgICAgICAgIDpuYW1lICJmaWJlci1taWdyYXRlLW1ldGEtZGVzdCIpKSkKKyAgICAg
IChzYi10aHJlYWQ6d2FpdC1vbi1zZW1hcGhvcmUgYS1pbnN0YWxsZWQpCisgICAgICAobGV0ICgo
Y2hpbGQgKGNhciBmaWJlci1jZWxsKSkpCisgICAgICAgIChhc3NlcnQgY2hpbGQpCisgICAgICAg
IChhc3NlcnQgKGVxIChzYi1maWJlcjo6ZmliZXItdGhyZWFkIGNoaWxkKSBhLXRocmVhZCkKKyAg
ICAgICAgICAgICAgICBuaWwgImJlZm9yZSBtaWdyYXRlLCBmaWJlcidzIHRocmVhZCBzbG90IHNo
b3VsZCBiZSBBIikKKyAgICAgICAgKGFzc2VydCAoZXEgY2hpbGQgKGZpYmVyLW1pZ3JhdGUgY2hp
bGQgYi10aHJlYWQpKSkKKyAgICAgICAgKGFzc2VydCAoZXEgKHNiLWZpYmVyOjpmaWJlci10aHJl
YWQgY2hpbGQpIGItdGhyZWFkKQorICAgICAgICAgICAgICAgIG5pbCAiYWZ0ZXIgbWlncmF0ZSwg
ZmliZXIncyB0aHJlYWQgc2xvdCBzaG91bGQgYmUgQiIpKQorICAgICAgKHNiLXRocmVhZDpzaWdu
YWwtc2VtYXBob3JlIGItZ28pCisgICAgICAoc2ItdGhyZWFkOmpvaW4tdGhyZWFkIGItdGhyZWFk
KQorICAgICAgKHNiLXRocmVhZDpzaWduYWwtc2VtYXBob3JlIGEtcmVsZWFzZWQpCisgICAgICAo
c2ItdGhyZWFkOmpvaW4tdGhyZWFkIGEtdGhyZWFkKSkpKQorCisod2l0aC10ZXN0ICg6bmFtZSAo
OmZpYmVyIDptaWdyYXRlIDpydW5uYWJsZS1ydW5zLW9uLWRlc3QpCisgICAgICAgICAgICA6c2tp
cHBlZC1vbiAobm90IDpzYi10aHJlYWQpKQorICAobGV0KiAoKGZpYmVyLWNlbGwgKGxpc3Qgbmls
KSkKKyAgICAgICAgIChhLWluc3RhbGxlZCAoc2ItdGhyZWFkOm1ha2Utc2VtYXBob3JlIDpuYW1l
ICJhLWluc3RhbGxlZCIpKQorICAgICAgICAgKGEtcmVsZWFzZWQgIChzYi10aHJlYWQ6bWFrZS1z
ZW1hcGhvcmUgOm5hbWUgImEtcmVsZWFzZWQiKSkKKyAgICAgICAgIChtaWdyYXRlLWRvbmUgKHNi
LXRocmVhZDptYWtlLXNlbWFwaG9yZSA6bmFtZSAibWlncmF0ZS1kb25lIikpCisgICAgICAgICAo
Yi1yZXN1bHQgICAgKGxpc3QgbmlsKSkKKyAgICAgICAgIChvYnNlcnZlZC10aHJlYWQgKGxpc3Qg
bmlsKSkpCisgICAgKGxldCogKChhLXRocmVhZAorICAgICAgICAgICAgIChzYi10aHJlYWQ6bWFr
ZS10aHJlYWQKKyAgICAgICAgICAgICAgKGxhbWJkYSAoKQorICAgICAgICAgICAgICAgICh3aXRo
LW1haW4tZmliZXIgKGEtbWFpbikKKyAgICAgICAgICAgICAgICAgIChsZXQgKChjaGlsZCAobWFr
ZS1maWJlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHlpZWxkLWZpYmVyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzZXRmIChjYXIgb2JzZXJ2ZWQtdGhyZWFkKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNiLXRocmVhZDoqY3VycmVudC10aHJl
YWQqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpib2R5LWRvbmUpKSkpCisg
ICAgICAgICAgICAgICAgICAgIChyZXN1bWUtZmliZXIgY2hpbGQpCisgICAgICAgICAgICAgICAg
ICAgIChzZXRmIChjYXIgZmliZXItY2VsbCkgY2hpbGQpCisgICAgICAgICAgICAgICAgICAgIChz
Yi10aHJlYWQ6c2lnbmFsLXNlbWFwaG9yZSBhLWluc3RhbGxlZCkKKyAgICAgICAgICAgICAgICAg
ICAgKHNiLXRocmVhZDp3YWl0LW9uLXNlbWFwaG9yZSBhLXJlbGVhc2VkKSkpKQorICAgICAgICAg
ICAgICA6bmFtZSAiZmliZXItbWlncmF0ZS1zcmMiKSkpCisgICAgICAoc2ItdGhyZWFkOndhaXQt
b24tc2VtYXBob3JlIGEtaW5zdGFsbGVkKQorICAgICAgKGxldCAoKGNoaWxkIChjYXIgZmliZXIt
Y2VsbCkpKQorICAgICAgICAoYXNzZXJ0IGNoaWxkKQorICAgICAgICAobGV0ICgoYi10aHJlYWQK
KyAgICAgICAgICAgICAgICAoc2ItdGhyZWFkOm1ha2UtdGhyZWFkCisgICAgICAgICAgICAgICAg
IChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgICAgICAoc2ItdGhyZWFkOndhaXQtb24tc2VtYXBo
b3JlIG1pZ3JhdGUtZG9uZSkKKyAgICAgICAgICAgICAgICAgICAod2l0aC1tYWluLWZpYmVyIChi
LW1haW4pCisgICAgICAgICAgICAgICAgICAgICAoc2V0ZiAoY2FyIGItcmVzdWx0KSAoam9pbi1m
aWJlciBjaGlsZCkpKSkKKyAgICAgICAgICAgICAgICAgOm5hbWUgImZpYmVyLW1pZ3JhdGUtZGVz
dCIpKSkKKyAgICAgICAgICAoZmliZXItbWlncmF0ZSBjaGlsZCBiLXRocmVhZCkKKyAgICAgICAg
ICAoYXNzZXJ0IChlcSAoc2ItZmliZXI6OmZpYmVyLXRocmVhZCBjaGlsZCkgYi10aHJlYWQpCisg
ICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICJhZnRlciBtaWdyYXRlLCBm
aWJlciBUSFJFQUQgc2xvdCBzaG91bGQgYmUgQjsgZ290IH5BIgorICAgICAgICAgICAgICAgICAg
KHNiLWZpYmVyOjpmaWJlci10aHJlYWQgY2hpbGQpKQorICAgICAgICAgIChzYi10aHJlYWQ6c2ln
bmFsLXNlbWFwaG9yZSBtaWdyYXRlLWRvbmUpCisgICAgICAgICAgKHNiLXRocmVhZDpqb2luLXRo
cmVhZCBiLXRocmVhZCkKKyAgICAgICAgICAoYXNzZXJ0IChlcSAoY2FyIG9ic2VydmVkLXRocmVh
ZCkgYi10aHJlYWQpCisgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAgICAgICAgICAgICJm
aWJlciBib2R5IHJhbiBvbiB+QTsgZXhwZWN0ZWQgQiA9IH5BIgorICAgICAgICAgICAgICAgICAg
KGNhciBvYnNlcnZlZC10aHJlYWQpIGItdGhyZWFkKQorICAgICAgICAgIChhc3NlcnQgKGVxIChj
YXIgYi1yZXN1bHQpIDpib2R5LWRvbmUpCisgICAgICAgICAgICAgICAgICBuaWwKKyAgICAgICAg
ICAgICAgICAgICJqb2luLWZpYmVyIHJldHVybmVkIH5BOyBleHBlY3RlZCA6Ym9keS1kb25lIgor
ICAgICAgICAgICAgICAgICAgKGNhciBiLXJlc3VsdCkpKSkKKyAgICAgIChzYi10aHJlYWQ6c2ln
bmFsLXNlbWFwaG9yZSBhLXJlbGVhc2VkKQorICAgICAgKHNiLXRocmVhZDpqb2luLXRocmVhZCBh
LXRocmVhZCkpKSkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6bWlncmF0ZSA6cmVqZWN0
cy1yZWxlYXNlZCkKKyAgICAgICAgICAgIDpza2lwcGVkLW9uIChub3QgOnNiLXRocmVhZCkpCisg
IChsZXQqICgob3RoZXIgKHNiLXRocmVhZDptYWtlLXRocmVhZAorICAgICAgICAgICAgICAgICAo
bGFtYmRhICgpIChzYi10aHJlYWQ6dGhyZWFkLXlpZWxkKSA6b2spCisgICAgICAgICAgICAgICAg
IDpuYW1lICJtaWdyYXRlLXZhbGlkYXRlLWRlc3QiKSkKKyAgICAgICAgIChyZWxlYXNlZC1maWJl
ciBuaWwpKQorICAgICh3aXRoLW1haW4tZmliZXIgKG1haW4pCisgICAgICAobGV0ICgoZiAobWFr
ZS1maWJlciAobGFtYmRhICgpIDppbW1lZGlhdGVseS1kb25lKSkpKQorICAgICAgICAoam9pbi1m
aWJlciBmKQorICAgICAgICAocmVsZWFzZS1maWJlciBmKQorICAgICAgICAoc2V0ZiByZWxlYXNl
ZC1maWJlciBmKSkpCisgICAgKGhhbmRsZXItY2FzZQorICAgICAgICAocHJvZ24gKGZpYmVyLW1p
Z3JhdGUgcmVsZWFzZWQtZmliZXIgb3RoZXIpCisgICAgICAgICAgICAgICAoZXJyb3IgImV4cGVj
dGVkIERFQUQtRklCRVItRVJST1I7IG5vbmUgc2lnbmFsZWQiKSkKKyAgICAgIChkZWFkLWZpYmVy
LWVycm9yICgpIDpvaykpCisgICAgKHNiLXRocmVhZDpqb2luLXRocmVhZCBvdGhlcikpKQpkaWZm
IC0tZ2l0IGEvdGVzdHMvZmliZXIucHVyZS5saXNwIGIvdGVzdHMvZmliZXIucHVyZS5saXNwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMGJiZTFkNGRiCi0tLSAvZGV2L251
bGwKKysrIGIvdGVzdHMvZmliZXIucHVyZS5saXNwCkBAIC0wLDAgKzEsNDU3IEBACis7Ozs7IFRl
c3RzIGZvciBzYi1maWJlciwgb25lIHBlciBwdWJsaWMgZW50cnkgcG9pbnQgYW5kIGVycm9yIGNh
c2UuCis7Ozs7IFN0cmVzcyBhbmQgcmVncmVzc2lvbiBjb3ZlcmFnZSBsaXZlcyBpbiBmaWJlci5p
bXB1cmUubGlzcC4KKworOzs7OyBUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIFNCQ0wgc3lz
dGVtLiBTZWUgdGhlIFJFQURNRSBmaWxlIGZvcgorOzs7OyBtb3JlIGluZm9ybWF0aW9uLgorCiso
dW5sZXNzIChhbmQgKG1lbWJlciA6c2ItdGhyZWFkICpmZWF0dXJlcyopCisgICAgICAgICAgICAg
KG1lbWJlciA6c2ItZmliZXIgKmZlYXR1cmVzKikKKyAgICAgICAgICAgICAob3IgKG1lbWJlciA6
eDg2LTY0ICpmZWF0dXJlcyopCisgICAgICAgICAgICAgICAgIChtZW1iZXIgOmFybTY0ICpmZWF0
dXJlcyopKQorICAgICAgICAgICAgIChub3QgKG1lbWJlciA6d2luMzIgKmZlYXR1cmVzKikpKQor
ICAoaW52b2tlLXJlc3RhcnQgJ3J1bi10ZXN0czo6c2tpcC1maWxlKSkKKworKHJlcXVpcmUgOnNi
LWZpYmVyKQorKHVzZS1wYWNrYWdlIDpzYi1maWJlcikKKworKGRlZm1hY3JvIHdpdGgtbWFpbi1m
aWJlciAoKG1haW4pICZib2R5IGJvZHkpCisgIGAobGV0ICgoLG1haW4gKG1ha2UtbWFpbi1maWJl
cikpKQorICAgICAodW53aW5kLXByb3RlY3QgKHByb2duICxAYm9keSkKKyAgICAgICAocmVsZWFz
ZS1maWJlciAsbWFpbikpKSkKKworKGRlZm1hY3JvIHdpdGgtbWFpbitjaGlsZCAoKG1haW4gY2hp
bGQgZW50cnktZm4gJnJlc3QgbWFrZS1hcmdzKSAmYm9keSBib2R5KQorICBgKHdpdGgtbWFpbi1m
aWJlciAoLG1haW4pCisgICAgICh3aXRoLWZpYmVyICgsY2hpbGQgLGVudHJ5LWZuICxAbWFrZS1h
cmdzKSAsQGJvZHkpKSkKKworOzs7IC0tLSBMaWZlY3ljbGUgLS0tCisKKyh3aXRoLXRlc3QgKDpu
YW1lICg6ZmliZXIgOm1ha2UtYW5kLWRlc3Ryb3kpKQorICAod2l0aC1maWJlci10aHJlYWQgKCkK
KyAgICAobGV0ICgoZiAobWFrZS1maWJlciAobGFtYmRhICgpKSkpKQorICAgICAgKGFzc2VydCAo
ZmliZXItYWxpdmUtcCBmKSkKKyAgICAgIChhc3NlcnQgKGVxIChmaWJlci1zdGF0ZSBmKSA6bmV3
KSkKKyAgICAgIChyZWxlYXNlLWZpYmVyIGYpCisgICAgICAoYXNzZXJ0IChub3QgKGZpYmVyLWFs
aXZlLXAgZikpKQorICAgICAgOzsgRG91YmxlIGRlc3Ryb3kgaXMgYSBuby1vcC4KKyAgICAgIChy
ZWxlYXNlLWZpYmVyIGYpKSkpCisKKyh3aXRoLXRlc3QgKDpuYW1lICg6ZmliZXIgOm1ha2UtZmli
ZXIgOmN1c3RvbS1zaXplcykpCisgICh3aXRoLWZpYmVyLXRocmVhZCAoKQorICAgIChsZXQgKChm
IChtYWtlLWZpYmVyIChsYW1iZGEgKCkpIDpzdGFjay1zaXplIDEzMTA3MiA6YmluZGluZy1zdGFj
ay1zaXplIDE2Mzg0KSkpCisgICAgICAoYXNzZXJ0IChmaWJlci1hbGl2ZS1wIGYpKQorICAgICAg
KHJlbGVhc2UtZmliZXIgZikpKSkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6bWFrZS1m
aWJlciA6cmVxdWlyZXMtbWFpbi1maWJlcikpCisgIChsZXQgKChzYi1maWJlcjo6KmN1cnJlbnQt
ZmliZXIqIG5pbCkpCisgICAgKGFzc2VydC1lcnJvciAobWFrZS1maWJlciAobGFtYmRhICgpKSkp
KSkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6d2l0aC1maWJlci1jbGVhbnMtdXApKQor
ICAod2l0aC1maWJlci10aHJlYWQgKCkKKyAgICAobGV0IChjYXB0dXJlZCkKKyAgICAgICh3aXRo
LWZpYmVyIChmIChsYW1iZGEgKCkpIDpzdGFjay1zaXplIDY1NTM2KQorICAgICAgICAoc2V0ZiBj
YXB0dXJlZCBmKQorICAgICAgICAoYXNzZXJ0IChmaWJlci1hbGl2ZS1wIGYpKSkKKyAgICAgIChh
c3NlcnQgKG5vdCAoZmliZXItYWxpdmUtcCBjYXB0dXJlZCkpKSkpKQorCisod2l0aC10ZXN0ICg6
bmFtZSAoOmZpYmVyIDp3aXRoLWZpYmVyLXRocmVhZCA6Y3JlYXRlcy1hbmQtcmVsZWFzZXMpKQor
ICAobGV0ICgoc2ItZmliZXI6OipjdXJyZW50LWZpYmVyKiBuaWwpKQorICAgICh3aXRoLWZpYmVy
LXRocmVhZCAoKQorICAgICAgKGFzc2VydCAodHlwZXAgKmN1cnJlbnQtZmliZXIqICdmaWJlcikp
CisgICAgICAoYXNzZXJ0IChmaWJlci1hbGl2ZS1wICpjdXJyZW50LWZpYmVyKikpKQorICAgIChh
c3NlcnQgKG51bGwgKmN1cnJlbnQtZmliZXIqKSkpKQorCisod2l0aC10ZXN0ICg6bmFtZSAoOmZp
YmVyIDp3aXRoLWZpYmVyLXRocmVhZCA6bmVzdGVkLWlzLW5vb3ApKQorICA7OyBJZiAqQ1VSUkVO
VC1GSUJFUiogaXMgYWxyZWFkeSBib3VuZCwgdGhlIGlubmVyIFdJVEgtRklCRVItVEhSRUFECisg
IDs7IG11c3Qgbm90IGNyZWF0ZSBvciByZWxlYXNlIGFueXRoaW5nLgorICAod2l0aC1tYWluLWZp
YmVyIChvdXRlcikKKyAgICAod2l0aC1maWJlci10aHJlYWQgKCkKKyAgICAgIChhc3NlcnQgKGVx
IG91dGVyICpjdXJyZW50LWZpYmVyKikpKQorICAgIChhc3NlcnQgKGVxIG91dGVyICpjdXJyZW50
LWZpYmVyKikpCisgICAgKGFzc2VydCAoZmliZXItYWxpdmUtcCBvdXRlcikpKSkKKworKHdpdGgt
dGVzdCAoOm5hbWUgKDpmaWJlciA6bWFrZS1tYWluLWZpYmVyKSkKKyAgKHdpdGgtbWFpbi1maWJl
ciAobWFpbikKKyAgICAoYXNzZXJ0IChmaWJlci1hbGl2ZS1wIG1haW4pKQorICAgIChhc3NlcnQg
KGVxIG1haW4gKmN1cnJlbnQtZmliZXIqKSkpKQorCisod2l0aC10ZXN0ICg6bmFtZSAoOmZpYmVy
IDpmaWJlci10aHJlYWQpKQorICAod2l0aC1tYWluK2NoaWxkIChtYWluIGYgKGxhbWJkYSAoKSkp
CisgICAgKGFzc2VydCAoZXEgc2ItdGhyZWFkOipjdXJyZW50LXRocmVhZCogKGZpYmVyLXRocmVh
ZCBtYWluKSkpCisgICAgKGFzc2VydCAoZXEgc2ItdGhyZWFkOipjdXJyZW50LXRocmVhZCogKGZp
YmVyLXRocmVhZCBmKSkpKQorICA7OyBGb3JlaWduIGZpYmVyIGNhcnJpZXMgaXRzIGNyZWF0aW5n
IHRocmVhZC4KKyAgKGxldCogKChvdGhlciAoc2ItdGhyZWFkOm1ha2UtdGhyZWFkCisgICAgICAg
ICAgICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgICAgICAobWFrZS1tYWluLWZpYmVy
KQorICAgICAgICAgICAgICAgICAgIChtYWtlLWZpYmVyIChsYW1iZGEgKCkpKSkKKyAgICAgICAg
ICAgICAgICAgOm5hbWUgImZpYmVyLXRocmVhZC10ZXN0IikpCisgICAgICAgICAoZm9yZWlnbiAo
c2ItdGhyZWFkOmpvaW4tdGhyZWFkIG90aGVyKSkpCisgICAgKGFzc2VydCAoZXEgb3RoZXIgKGZp
YmVyLXRocmVhZCBmb3JlaWduKSkpCisgICAgKHJlbGVhc2UtZmliZXIgZm9yZWlnbikKKyAgICAo
YXNzZXJ0IChudWxsIChmaWJlci10aHJlYWQgZm9yZWlnbikpKSkpCisKKyh3aXRoLXRlc3QgKDpu
YW1lICg6ZmliZXIgOm5hbWUgOmlzLWFjY2Vzc2libGUtYW5kLXByaW50ZWQpKQorICAod2l0aC1m
aWJlci10aHJlYWQgKCkKKyAgICAod2l0aC1maWJlciAoZiAobGFtYmRhICgpKSA6bmFtZSAid29y
a2VyIikKKyAgICAgIChhc3NlcnQgKGVxdWFsICJ3b3JrZXIiIChmaWJlci1uYW1lIGYpKSkKKyAg
ICAgIChhc3NlcnQgKHNlYXJjaCAid29ya2VyIiAocHJpbmMtdG8tc3RyaW5nIGYpKQorICAgICAg
ICAgICAgICAoKQorICAgICAgICAgICAgICAiZXhwZWN0ZWQgUFJJTlQtT0JKRUNUIHRvIG1lbnRp
b24gdGhlIG5hbWUsIGdvdCB+UyIKKyAgICAgICAgICAgICAgKHByaW5jLXRvLXN0cmluZyBmKSkp
CisgICAgKHdpdGgtZmliZXIgKGYgKGxhbWJkYSAoKSkpCisgICAgICAoYXNzZXJ0IChudWxsIChm
aWJlci1uYW1lIGYpKSkpKSkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6am9pbi1maWJl
cikpCisgIDs7IGpvaW4tZmliZXIgZHJpdmVzIEZJQkVSIHRvIGNvbXBsZXRpb24sIHByb3BhZ2F0
ZXMgZW50cnktZm4gcmV0dXJuCisgIDs7IHZhbHVlcyAoaW5jbHVkaW5nIHplcm8pLCBhbmQgbGVh
dmVzIHRoZSBmaWJlciBERUFELgorICAod2l0aC1tYWluK2NoaWxkIChtYWluIGNoaWxkIChsYW1i
ZGEgKCkgKHlpZWxkLWZpYmVyIDpzdGVwKSA6ZG9uZSkpCisgICAgKGFzc2VydCAoZXEgOmRvbmUg
KGpvaW4tZmliZXIgY2hpbGQpKSkKKyAgICAoYXNzZXJ0IChlcSAoZmliZXItc3RhdGUgY2hpbGQp
IDpkZWFkKSkpCisgICh3aXRoLW1haW4rY2hpbGQgKG1haW4gY2hpbGQgKGxhbWJkYSAoKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHlpZWxkLWZpYmVyIDpzdGVwKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlcyA6YSAxICNceCkpKQorICAgIChtdWx0
aXBsZS12YWx1ZS1iaW5kIChrIG4gYykgKGpvaW4tZmliZXIgY2hpbGQpCisgICAgICAoYXNzZXJ0
IChlcSA6YSBrKSkKKyAgICAgIChhc3NlcnQgKGVxbCAxIG4pKQorICAgICAgKGFzc2VydCAoZXFs
ICNceCBjKSkpKQorICAod2l0aC1tYWluK2NoaWxkIChtYWluIGNoaWxkIChsYW1iZGEgKCkgKHlp
ZWxkLWZpYmVyIDpzdGVwKSAodmFsdWVzKSkpCisgICAgKGFzc2VydCAoZXF1YWwgJygpIChtdWx0
aXBsZS12YWx1ZS1saXN0IChqb2luLWZpYmVyIGNoaWxkKSkpKSkpCisKKyh3aXRoLXRlc3QgKDpu
YW1lICg6ZmliZXIgOnlpZWxkLWZpYmVyIDp6ZXJvLXZhbHVlcykpCisgICh3aXRoLW1haW4rY2hp
bGQgKG1haW4gY2hpbGQgKGxhbWJkYSAoKSAoeWllbGQtZmliZXIpKSkKKyAgICAoYXNzZXJ0IChl
cXVhbCAnKCkgKG11bHRpcGxlLXZhbHVlLWxpc3QgKHN3aXRjaC1maWJlciBtYWluIGNoaWxkKSkp
KSkpCisKKzs7OyAtLS0gSW50ZXJydXB0IC8gY29uZGl0aW9uIHN0YWdpbmcgLS0tCisKKyh3aXRo
LXRlc3QgKDpuYW1lICg6ZmliZXIgOmludGVycnVwdC1maWJlciA6bmV3LW5ldmVyLXJ1bnMpKQor
ICAobGV0IChyYW4pCisgICAgKHdpdGgtbWFpbitjaGlsZCAobWFpbiBmIChsYW1iZGEgKCkgKHNl
dGYgcmFuIHQpIDp1bnJlYWNoZWQpKQorICAgICAgKGludGVycnVwdC1maWJlciBmIChtYWtlLWNv
bmRpdGlvbiAnc2ltcGxlLWVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDpmb3JtYXQtY29udHJvbCAiY2FuY2VsbGVkIikpCisgICAgICAoaGFuZGxlci1jYXNl
IChzd2l0Y2gtZmliZXIgbWFpbiBmKQorICAgICAgICAoc2ltcGxlLWVycm9yIChlKQorICAgICAg
ICAgIChhc3NlcnQgKHNlYXJjaCAiY2FuY2VsbGVkIiAocHJpbmMtdG8tc3RyaW5nIGUpKSkpKQor
ICAgICAgKGFzc2VydCAobnVsbCByYW4pKSkpKQorCisod2l0aC10ZXN0ICg6bmFtZSAoOmZpYmVy
IDppbnRlcnJ1cHQtZmliZXIgOnJ1bm5hYmxlLWZpcmVzLWluLWNvbnRleHQpKQorICAobGV0IChj
YXVnaHQpCisgICAgKHdpdGgtbWFpbitjaGlsZCAobWFpbiBmIChsYW1iZGEgKCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoaGFuZGxlci1jYXNlICh5aWVsZC1maWJlcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaW1wbGUtZXJyb3IgKGUpIChzZXRmIGNhdWdo
dCAocHJpbmMtdG8tc3RyaW5nIGUpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OmRvbmUpKQorICAgICAgKHN3aXRjaC1maWJlciBtYWluIGYpICAgICAgICAgICAgIDsgcnVuIHRv
IHRoZSB5aWVsZAorICAgICAgKGludGVycnVwdC1maWJlciBmIChtYWtlLWNvbmRpdGlvbiAnc2lt
cGxlLWVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmb3Jt
YXQtY29udHJvbCAib3VjaCIpKQorICAgICAgKGFzc2VydCAoZXEgOmRvbmUgKGpvaW4tZmliZXIg
ZikpKQorICAgICAgKGFzc2VydCAoc3RyaW5nPSBjYXVnaHQgIm91Y2giKSkpKSkKKworKHdpdGgt
dGVzdCAoOm5hbWUgKDpmaWJlciA6ZmliZXItY29uZGl0aW9uKSkKKyAgKHdpdGgtZmliZXItdGhy
ZWFkICgpCisgICAgKHdpdGgtZmliZXIgKGYgKGxhbWJkYSAoKSkpCisgICAgICAoYXNzZXJ0IChu
dWxsIChmaWJlci1jb25kaXRpb24gZikpKQorICAgICAgKGxldCAoKGMgKG1ha2UtY29uZGl0aW9u
ICdzaW1wbGUtZXJyb3IgOmZvcm1hdC1jb250cm9sICJ4IikpKQorICAgICAgICAoaW50ZXJydXB0
LWZpYmVyIGYgYykKKyAgICAgICAgKGFzc2VydCAoZXEgYyAoZmliZXItY29uZGl0aW9uIGYpKSkp
KSkpCisKKyh3aXRoLXRlc3QgKDpuYW1lICg6ZmliZXIgOmludGVycnVwdC1maWJlciA6c3RheXMt
c3RhZ2VkLWFjcm9zcy15aWVsZCkpCisgIDs7IEEgY29uZGl0aW9uIHN0YWdlZCB2aWEgSU5URVJS
VVBULUZJQkVSIG11c3QgZmlyZSBvbmx5IHdoZW4gdGhlCisgIDs7IHRhcmdldCBhY3R1YWxseSBy
ZXN1bWVzIC0tIG5vdCB3aGVuIHRoZSB0YXJnZXQgeWllbGRzIGJhY2sgdG8KKyAgOzsgaXRzIHJl
c3VtZXIuICBSZWdyZXNzaW9uOiB0aGUgaW50ZXJydXB0IGFuZCBlc2NhcGUgY2hhbm5lbHMgYXJl
CisgIDs7IHNlcGFyYXRlOyBvbmx5IGFuIGVudHJ5LWZ1bmN0aW9uIGVzY2FwZSBwcm9wYWdhdGVz
IHRvIHRoZQorICA7OyByZXN1bWVyLgorICAobGV0ICgoYyAobWFrZS1jb25kaXRpb24gJ3NpbXBs
ZS1lcnJvciA6Zm9ybWF0LWNvbnRyb2wgInN0YWdlZCIpKQorICAgICAgICBjYXVnaHQtaW4tY2hp
bGQpCisgICAgKHdpdGgtbWFpbitjaGlsZCAobWFpbiBjaGlsZAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGxhbWJkYSAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZXJy
dXB0LWZpYmVyICpjdXJyZW50LWZpYmVyKiBjKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoaGFuZGxlci1jYXNlICh5aWVsZC1maWJlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoc2ltcGxlLWVycm9yIChlKSAoc2V0ZiBjYXVnaHQtaW4tY2hpbGQgZSkpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6ZG9uZSkpCisgICAgICAoaGFuZGxlci1jYXNlIChzd2l0
Y2gtZmliZXIgbWFpbiBjaGlsZCkKKyAgICAgICAgKHNpbXBsZS1lcnJvciAoZSkKKyAgICAgICAg
ICAoZXJyb3IgImNvbmRpdGlvbiBsZWFrZWQgdG8gcmVzdW1lcjogflMiIGUpKSkKKyAgICAgIChh
c3NlcnQgKGVxIGMgKGZpYmVyLWNvbmRpdGlvbiBjaGlsZCkpICgpCisgICAgICAgICAgICAgICJj
b25kaXRpb24gbm8gbG9uZ2VyIHN0YWdlZCBvbiBjaGlsZCBhZnRlciB5aWVsZCIpCisgICAgICAo
YXNzZXJ0IChlcSA6ZG9uZSAoam9pbi1maWJlciBjaGlsZCkpKQorICAgICAgKGFzc2VydCAoZXEg
YyBjYXVnaHQtaW4tY2hpbGQpICgpCisgICAgICAgICAgICAgICJjaGlsZCBkaWQgbm90IHNlZSBz
dGFnZWQgY29uZGl0aW9uIG9uIHJlc3VtZSIpKSkpCisKKyh3aXRoLXRlc3QgKDpuYW1lICg6Zmli
ZXIgOmludGVycnVwdC1maWJlciA6ZGVhZC1lcnJvcnMpKQorICAod2l0aC1maWJlci10aHJlYWQg
KCkKKyAgICAobGV0ICgoZiAobWFrZS1maWJlciAobGFtYmRhICgpKSkpKQorICAgICAgKHJlbGVh
c2UtZmliZXIgZikKKyAgICAgIChhc3NlcnQtZXJyb3IKKyAgICAgICAoaW50ZXJydXB0LWZpYmVy
IGYgKG1ha2UtY29uZGl0aW9uICdzaW1wbGUtZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDpmb3JtYXQtY29udHJvbCAieCIpKQorICAgICAgIGRlYWQtZmli
ZXItZXJyb3IpKSkpCisKKzs7OyAtLS0gQ29udHJvbCB0cmFuc2ZlciAtLS0KKworKHdpdGgtdGVz
dCAoOm5hbWUgKDpmaWJlciA6c3dpdGNoLWZpYmVyIDpiYXNpYykpCisgIChsZXQgKGxvZykKKyAg
ICAod2l0aC1tYWluK2NoaWxkIChtYWluIGNoaWxkCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAobGFtYmRhICgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIDpjaGlsZCBs
b2cpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzd2l0Y2gtZmliZXIgKmN1cnJlbnQt
ZmliZXIqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpYmVy
LXJldHVybi1maWJlciAqY3VycmVudC1maWJlciopKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAocHVzaCA6Y2hpbGQtYWdhaW4gbG9nKSkpCisgICAgICAocHVzaCA6bWFpbiBsb2cpCisg
ICAgICAoc3dpdGNoLWZpYmVyIG1haW4gY2hpbGQpCisgICAgICAocHVzaCA6bWFpbi1hZ2FpbiBs
b2cpCisgICAgICAoc3dpdGNoLWZpYmVyIG1haW4gY2hpbGQpCisgICAgICAoYXNzZXJ0IChlcXVh
bCAobnJldmVyc2UgbG9nKSAnKDptYWluIDpjaGlsZCA6bWFpbi1hZ2FpbiA6Y2hpbGQtYWdhaW4p
KSkpKSkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6c3dpdGNoLWZpYmVyIDp2YWx1ZS1p
bikpCisgIDs7IFNXSVRDSC1GSUJFUiBkZWxpdmVycyBWQUxVRSB0byB0aGUgcmVzdW1lZCBmaWJl
ciBhcyB0aGUgcmV0dXJuCisgIDs7IHZhbHVlIG9mIGl0cyBvd24gKHByZWNlZGluZykgWUlFTEQt
RklCRVIgLyBTV0lUQ0gtRklCRVIgY2FsbC4KKyAgKGxldCAocmVjZWl2ZWQpCisgICAgKHdpdGgt
bWFpbitjaGlsZCAobWFpbiBjaGlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJk
YSAoKSAoc2V0ZiByZWNlaXZlZCAoeWllbGQtZmliZXIpKSkpCisgICAgICAoc3dpdGNoLWZpYmVy
IG1haW4gY2hpbGQpICAgICAgICAgICA7IGZpcnN0IGVudHJ5LCBubyB2YWx1ZQorICAgICAgKHN3
aXRjaC1maWJlciBtYWluIGNoaWxkIDpoZWxsbykgICAgOyByZXN1bWVkOiB5aWVsZCByZXR1cm5z
IDpoZWxsbworICAgICAgKGFzc2VydCAoZXEgcmVjZWl2ZWQgOmhlbGxvKSkpKSkKKworKHdpdGgt
dGVzdCAoOm5hbWUgKDpmaWJlciA6eWllbGQtZmliZXIgOnZhbHVlLW91dCkpCisgIDs7IFlJRUxE
LUZJQkVSJ3MgYXJndW1lbnQgYmVjb21lcyBTV0lUQ0gtRklCRVIncyByZXR1cm4gdmFsdWUgaW4K
KyAgOzsgdGhlIHJlc3VtZXIuCisgICh3aXRoLW1haW4rY2hpbGQgKG1haW4gY2hpbGQgKGxhbWJk
YSAoKSAoeWllbGQtZmliZXIgOmZyb20tY2hpbGQpKSkKKyAgICAoYXNzZXJ0IChlcSA6ZnJvbS1j
aGlsZCAoc3dpdGNoLWZpYmVyIG1haW4gY2hpbGQpKSkpKQorCisod2l0aC10ZXN0ICg6bmFtZSAo
OmZpYmVyIDpzd2l0Y2gtZmliZXIgOmVudHJ5LWZuLXJldHVybi1wcm9wYWdhdGVzKSkKKyAgOzsg
V2hlbiBhIGZpYmVyJ3MgZW50cnkgZnVuY3Rpb24gcmV0dXJucyBub3JtYWxseSwgaXRzIHZhbHVl
IGlzCisgIDs7IGRlbGl2ZXJlZCB0byB0aGUgcmVzdW1lciBvbiBhdXRvLXJldHVybi4KKyAgKHdp
dGgtbWFpbitjaGlsZCAobWFpbiBjaGlsZCAobGFtYmRhICgpIDpkb25lKSkKKyAgICAoYXNzZXJ0
IChlcSA6ZG9uZSAoc3dpdGNoLWZpYmVyIG1haW4gY2hpbGQpKSkKKyAgICAoYXNzZXJ0IChlcSAo
ZmliZXItc3RhdGUgY2hpbGQpIDpkZWFkKSkKKyAgICAoYXNzZXJ0IChub3QgKGZpYmVyLWFsaXZl
LXAgY2hpbGQpKSkpKQorCisod2l0aC10ZXN0ICg6bmFtZSAoOmZpYmVyIDp5aWVsZC1maWJlciA6
bm8tcmV0dXJuLWZpYmVyLWVycm9ycykpCisgICh3aXRoLW1haW4tZmliZXIgKG1haW4pCisgICAg
KGFzc2VydCAoZXEgbWFpbiAqY3VycmVudC1maWJlciopKQorICAgIChhc3NlcnQtZXJyb3IgKHlp
ZWxkLWZpYmVyKSkpKQorCisod2l0aC10ZXN0ICg6bmFtZSAoOmZpYmVyIDpyZXN1bWUtZmliZXIg
OmJhc2ljKSkKKyAgOzsgUkVTVU1FLUZJQkVSIGlzIChTV0lUQ0gtRklCRVIgKkNVUlJFTlQtRklC
RVIqIFRPIC4gVkFMVUVTKTsgdGVzdAorICA7OyBib3RoIGRpcmVjdGlvbnMgb2YgdGhlIHZhbHVl
IGNoYW5uZWwgaW5jbHVkaW5nIG11bHRpcGxlIHZhbHVlcy4KKyAgKHdpdGgtbWFpbitjaGlsZCAo
bWFpbiBjaGlsZAorICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChsZXQgKCh2IChtdWx0aXBsZS12YWx1ZS1saXN0ICh5aWVsZC1m
aWJlciA6YSAxICNceCkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpc3QgOmdv
dCB2KSkpKQorICAgIChtdWx0aXBsZS12YWx1ZS1iaW5kIChrIG4gYykgKHJlc3VtZS1maWJlciBj
aGlsZCkKKyAgICAgIChhc3NlcnQgKGVxIDphIGspKQorICAgICAgKGFzc2VydCAoZXFsIDEgbikp
CisgICAgICAoYXNzZXJ0IChlcWwgI1x4IGMpKSkKKyAgICAoYXNzZXJ0IChlcXVhbCAnKDpnb3Qg
KDk5KSkgKHJlc3VtZS1maWJlciBjaGlsZCA5OSkpKSkpCisKKyh3aXRoLXRlc3QgKDpuYW1lICg6
ZmliZXIgOnJlc3VtZS1maWJlciA6bm8tY3VycmVudC1maWJlci1lcnJvcnMpKQorICAod2l0aC1t
YWluK2NoaWxkIChtYWluIGYgKGxhbWJkYSAoKSkpCisgICAgKGFzc2VydCAoZXEgbWFpbiAqY3Vy
cmVudC1maWJlciopKQorICAgIChsZXQgKChzYi1maWJlcjo6KmN1cnJlbnQtZmliZXIqIG5pbCkp
CisgICAgICAoYXNzZXJ0LWVycm9yIChyZXN1bWUtZmliZXIgZikgbm8tY3VycmVudC1maWJlci1l
cnJvcikpKSkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6eWllbGQtcHJlc2VydmVzLXJl
c3VtZXItcmV0dXJuLWZpYmVyKSkKKyAgKHdpdGgtbWFpbi1maWJlciAobWFpbikKKyAgICAobGV0
KiAoKGcyIChtYWtlLWZpYmVyIChsYW1iZGEgKCkgKHlpZWxkLWZpYmVyIDQyKSkpKQorICAgICAg
ICAgICAoZzEgKG1ha2UtZmliZXIKKyAgICAgICAgICAgICAgICAobGFtYmRhICgpCisgICAgICAg
ICAgICAgICAgICAobGV0ICgodiAocmVzdW1lLWZpYmVyIGcyKSkpCisgICAgICAgICAgICAgICAg
ICAgICh5aWVsZC1maWJlciB2KSkpKSkpCisgICAgICAoYXNzZXJ0IChlcWwgNDIgKHJlc3VtZS1m
aWJlciBnMSkpKQorICAgICAgKHJlbGVhc2UtZmliZXIgZzEpCisgICAgICAocmVsZWFzZS1maWJl
ciBnMikpKSkKKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6c3RhY2stdXNhZ2UtYWNjZXNz
b3JzKSkKKyAgKGxldCogKChzdGFjay1zaXplIDEzMTA3MikKKyAgICAgICAgIChicy1zaXplICAg
IDE2Mzg0KSkKKyAgICAod2l0aC1tYWluLWZpYmVyIChtYWluKQorICAgICAgKGxldCAoKGYgKG1h
a2UtZmliZXIgKGxhbWJkYSAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvZ3Yg
JygqcHJpbnQtYmFzZSopICcoMTYpICh5aWVsZC1maWJlcikpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgOnN0YWNrLXNpemUgc3RhY2stc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOmJpbmRpbmctc3RhY2stc2l6ZSBicy1zaXplKSkpCisgICAgICAgIChhc3NlcnQgKD0gc3Rh
Y2stc2l6ZSAoZmliZXItY29udHJvbC1zdGFjay1zaXplIGYpKSkKKyAgICAgICAgKGFzc2VydCAo
PSBicy1zaXplICAgIChmaWJlci1iaW5kaW5nLXN0YWNrLXNpemUgZikpKQorICAgICAgICAoYXNz
ZXJ0ICh6ZXJvcCAoZmliZXItYmluZGluZy1zdGFjay11c2FnZSBmKSkpCisgICAgICAgIChzd2l0
Y2gtZmliZXIgbWFpbiBmKSAgICAgICAgICAgICA7IHJ1biB0byB0aGUgeWllbGQKKyAgICAgICAg
KGFzc2VydCAoPSBzdGFjay1zaXplIChmaWJlci1jb250cm9sLXN0YWNrLXNpemUgZikpKQorICAg
ICAgICAoYXNzZXJ0IChwbHVzcCAoZmliZXItY29udHJvbC1zdGFjay11c2FnZSBmKSkpCisgICAg
ICAgIChhc3NlcnQgKHBsdXNwIChmaWJlci1iaW5kaW5nLXN0YWNrLXVzYWdlIGYpKQorICAgICAg
ICAgICAgICAgICgpCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIFBST0dWIHRvIGdyb3cgdGhl
IGJpbmRpbmcgc3RhY2s7IGdvdCB+RCIKKyAgICAgICAgICAgICAgICAoZmliZXItYmluZGluZy1z
dGFjay11c2FnZSBmKSkKKyAgICAgICAgKHJlbGVhc2UtZmliZXIgZikKKyAgICAgICAgKGFzc2Vy
dCAoemVyb3AgKGZpYmVyLWNvbnRyb2wtc3RhY2stc2l6ZSBmKSkpCisgICAgICAgIChhc3NlcnQg
KHplcm9wIChmaWJlci1jb250cm9sLXN0YWNrLXVzYWdlIGYpKSkKKyAgICAgICAgKGFzc2VydCAo
emVyb3AgKGZpYmVyLWJpbmRpbmctc3RhY2stc2l6ZSBmKSkpCisgICAgICAgIChhc3NlcnQgKHpl
cm9wIChmaWJlci1iaW5kaW5nLXN0YWNrLXVzYWdlIGYpKSkpCisgICAgICA7OyBNYWluIGZpYmVy
OiBiaW5kaW5nLXN0YWNrLXNpemUgPSAwIChub3Qgb3duZWQpOyBvdGhlciB0aHJlZQorICAgICAg
Ozsgc2hvdWxkIGJlIHF1ZXJ5YWJsZSB3aXRob3V0IGVycm9yLgorICAgICAgKGFzc2VydCAoemVy
b3AgKGZpYmVyLWJpbmRpbmctc3RhY2stc2l6ZSBtYWluKSkpCisgICAgICAoZmliZXItY29udHJv
bC1zdGFjay1zaXplIG1haW4pCisgICAgICAoZmliZXItY29udHJvbC1zdGFjay11c2FnZSBtYWlu
KQorICAgICAgKGZpYmVyLWJpbmRpbmctc3RhY2stdXNhZ2UgbWFpbikpKSkKKworOzs7IC0tLSBT
d2l0Y2ggdmFsaWRhdGlvbiAtLS0KKworKHdpdGgtdGVzdCAoOm5hbWUgKDpmaWJlciA6c3dpdGNo
LWZpYmVyIDpkZXN0cm95ZWQtZXJyb3JzKSkKKyAgKHdpdGgtbWFpbi1maWJlciAobWFpbikKKyAg
ICAobGV0ICgoY2hpbGQgKG1ha2UtZmliZXIgKGxhbWJkYSAoKSkpKSkKKyAgICAgIChyZWxlYXNl
LWZpYmVyIGNoaWxkKQorICAgICAgKGFzc2VydC1lcnJvciAoc3dpdGNoLWZpYmVyIG1haW4gY2hp
bGQpIGRlYWQtZmliZXItZXJyb3IpKSkpCisKKyh3aXRoLXRlc3QgKDpuYW1lICg6ZmliZXIgOnN3
aXRjaC1maWJlciA6d3JvbmctdGhyZWFkLWVycm9ycykpCisgICh3aXRoLW1haW4tZmliZXIgKG1h
aW4pCisgICAgKGxldCogKChvdGhlciAoc2ItdGhyZWFkOm1ha2UtdGhyZWFkCisgICAgICAgICAg
ICAgICAgICAgKGxhbWJkYSAoKQorICAgICAgICAgICAgICAgICAgICAgKG1ha2UtbWFpbi1maWJl
cikKKyAgICAgICAgICAgICAgICAgICAgIChtYWtlLWZpYmVyIChsYW1iZGEgKCkpKSkpKQorICAg
ICAgICAgICAoZm9yZWlnbiAoc2ItdGhyZWFkOmpvaW4tdGhyZWFkIG90aGVyKSkpCisgICAgICAo
YXNzZXJ0LWVycm9yIChzd2l0Y2gtZmliZXIgbWFpbiBmb3JlaWduKSBmaWJlci10aHJlYWQtbWlz
bWF0Y2gtZXJyb3IpCisgICAgICAocmVsZWFzZS1maWJlciBmb3JlaWduKSkpKQorCis7OzsgLS0t
IER5bmFtaWMgZW52aXJvbm1lbnQgaXNvbGF0aW9uIGFjcm9zcyBzd2l0Y2hlcyAtLS0KKworKGRl
ZnZhciAqZmliZXItdGVzdC12YXIqIDptYWluLXZhbHVlKQorCisod2l0aC10ZXN0ICg6bmFtZSAo
OmZpYmVyIDpzcGVjaWFsLXZhcmlhYmxlLWlzb2xhdGlvbikpCisgICh3aXRoLW1haW4tZmliZXIg
KG1haW4pCisgICAgKGxldCogKChzZWVuIG5pbCkKKyAgICAgICAgICAgKGNoaWxkIG5pbCkpCisg
ICAgICAoc2V0ZiBjaGlsZCAobWFrZS1maWJlcgorICAgICAgICAgICAgICAgICAgIChsYW1iZGEg
KCkKKyAgICAgICAgICAgICAgICAgICAgIChzZXRmIHNlZW4gKmZpYmVyLXRlc3QtdmFyKikKKyAg
ICAgICAgICAgICAgICAgICAgIChzd2l0Y2gtZmliZXIgY2hpbGQgbWFpbikpKSkKKyAgICAgIChs
ZXQgKCgqZmliZXItdGVzdC12YXIqIDpyZWJvdW5kKSkKKyAgICAgICAgKHN3aXRjaC1maWJlciBt
YWluIGNoaWxkKQorICAgICAgICAoYXNzZXJ0IChlcSAqZmliZXItdGVzdC12YXIqIDpyZWJvdW5k
KSkpCisgICAgICAoYXNzZXJ0IChlcSBzZWVuIDpyZWJvdW5kKSkKKyAgICAgIChyZWxlYXNlLWZp
YmVyIGNoaWxkKSkpKQorCisod2l0aC10ZXN0ICg6bmFtZSAoOmZpYmVyIDpoYW5kbGVyLWNhc2Ut
YWNyb3NzLXN3aXRjaCkpCisgICh3aXRoLW1haW4tZmliZXIgKG1haW4pCisgICAgKGxldCogKChj
aGlsZCBuaWwpCisgICAgICAgICAgIChjYXVnaHQgbmlsKSkKKyAgICAgIChzZXRmIGNoaWxkICht
YWtlLWZpYmVyCisgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKQorICAgICAgICAgICAgICAg
ICAgICAgKGhhbmRsZXItY2FzZQorICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9nbiAoc3dp
dGNoLWZpYmVyIGNoaWxkIG1haW4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChl
cnJvciAidGVzdCBlcnJvciIpKQorICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IgKGMpIChz
ZXRmIGNhdWdodCAocHJpbmMtdG8tc3RyaW5nIGMpKSkpCisgICAgICAgICAgICAgICAgICAgICAo
c3dpdGNoLWZpYmVyIGNoaWxkIG1haW4pKSkpCisgICAgICAoc3dpdGNoLWZpYmVyIG1haW4gY2hp
bGQpCisgICAgICAoc3dpdGNoLWZpYmVyIG1haW4gY2hpbGQpCisgICAgICAoYXNzZXJ0IChzdHJp
bmc9IGNhdWdodCAidGVzdCBlcnJvciIpKQorICAgICAgKHJlbGVhc2UtZmliZXIgY2hpbGQpKSkp
CisKKyh3aXRoLXRlc3QgKDpuYW1lICg6ZmliZXIgOnVud2luZC1wcm90ZWN0LWFjcm9zcy1zd2l0
Y2gpKQorICAod2l0aC1tYWluLWZpYmVyIChtYWluKQorICAgIChsZXQqICgoY2hpbGQgbmlsKQor
ICAgICAgICAgICAoY2xlYW51cC1yYW4gbmlsKSkKKyAgICAgIChzZXRmIGNoaWxkIChtYWtlLWZp
YmVyCisgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKQorICAgICAgICAgICAgICAgICAgICAg
KHVud2luZC1wcm90ZWN0IChzd2l0Y2gtZmliZXIgY2hpbGQgbWFpbikKKyAgICAgICAgICAgICAg
ICAgICAgICAgKHNldGYgY2xlYW51cC1yYW4gdCkpCisgICAgICAgICAgICAgICAgICAgICAoc3dp
dGNoLWZpYmVyIGNoaWxkIG1haW4pKSkpCisgICAgICAoc3dpdGNoLWZpYmVyIG1haW4gY2hpbGQp
CisgICAgICAoc3dpdGNoLWZpYmVyIG1haW4gY2hpbGQpCisgICAgICAoYXNzZXJ0IGNsZWFudXAt
cmFuKQorICAgICAgKHJlbGVhc2UtZmliZXIgY2hpbGQpKSkpCisKKyh3aXRoLXRlc3QgKDpuYW1l
ICg6ZmliZXIgOnRocm93LWNhbm5vdC1lc2NhcGUtZmliZXIpKQorICA7OyBUSFJPVyBvdXQgb2Yg
YSBmaWJlciB0byBhIENBVENIIG9uIHRoZSBjYWxsZXIncyBzdGFjayBpcworICA7OyBpbnRlcmNl
cHRlZCAoY29udHJvbC1lcnJvcikgLS0gaXQgd291bGQgb3RoZXJ3aXNlIHVud2luZCB0byBhCisg
IDs7IGZyYW1lIG9uIGEgZGlmZmVyZW50IHN0YWNrLiAgRGlzdGluZ3Vpc2ggIm91dGVyIGNhdWdo
dCIgdnMKKyAgOzsgImZlbGwgdGhyb3VnaCIgdmlhIHRoZSBlbnRyeS1mbidzIHRlcm1pbmFsIHNl
bnRpbmVsIHZhbHVlLgorICAobGV0IChjaGlsZC1jYXVnaHQpCisgICAgKHdpdGgtbWFpbitjaGls
ZCAobWFpbiBjaGlsZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSAoKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoaGFuZGxlci1jYXNlICh0aHJvdyAnb3V0ZXIgOm91
dGVyLWZpcmVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb250cm9sLWVycm9y
ICgpIChzZXRmIGNoaWxkLWNhdWdodCB0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDpmZWxsLXRocm91Z2gpKQorICAgICAgKGxldCAoKHJlc3VsdCAoY2F0Y2ggJ291dGVyIChzd2l0
Y2gtZmliZXIgbWFpbiBjaGlsZCkpKSkKKyAgICAgICAgKGFzc2VydCBjaGlsZC1jYXVnaHQgKCkg
ImNoaWxkIGRpZCBub3QgY2F0Y2ggQ09OVFJPTC1FUlJPUiIpCisgICAgICAgIChhc3NlcnQgKGVx
IHJlc3VsdCA6ZmVsbC10aHJvdWdoKSAoKQorICAgICAgICAgICAgICAgICJ0aHJvdyBlc2NhcGVk
IHRvIG91dGVyIGNhdGNoIChnb3QgflMpIiByZXN1bHQpKSkpKQorCis7OzsgLS0tIFBpbm5pbmcg
LS0tCisKKyh3aXRoLXRlc3QgKDpuYW1lICg6ZmliZXIgOndpdGgtZmliZXItcGlubmVkIDpwcmVk
aWNhdGUpKQorICAod2l0aC1tYWluLWZpYmVyIChtYWluKQorICAgIChhc3NlcnQgKG5vdCAoZmli
ZXItcGlubmVkLXAgbWFpbikpKQorICAgICh3aXRoLWZpYmVyLXBpbm5lZCAoKQorICAgICAgKGFz
c2VydCAoZmliZXItcGlubmVkLXAgbWFpbikpCisgICAgICAod2l0aC1maWJlci1waW5uZWQgKCkK
KyAgICAgICAgKGFzc2VydCAoPSAyIChmaWJlci1waW4tY291bnQgbWFpbikpKSkKKyAgICAgIChh
c3NlcnQgKGZpYmVyLXBpbm5lZC1wIG1haW4pKSkKKyAgICAoYXNzZXJ0IChub3QgKGZpYmVyLXBp
bm5lZC1wIG1haW4pKSkpKQorCisod2l0aC10ZXN0ICg6bmFtZSAoOmZpYmVyIDp3aXRoLWZpYmVy
LXBpbm5lZCA6bm8tY3VycmVudC1maWJlci1lcnJvcnMpKQorICAobGV0ICgoc2ItZmliZXI6Oipj
dXJyZW50LWZpYmVyKiBuaWwpKQorICAgIChhc3NlcnQtZXJyb3IgKHdpdGgtZmliZXItcGlubmVk
ICgpIDp1bnJlYWNoYWJsZSkgbm8tY3VycmVudC1maWJlci1lcnJvcikpKQorCisod2l0aC10ZXN0
ICg6bmFtZSAoOmZpYmVyIDp3aXRoLWZpYmVyLXBpbm5lZCA6c3dpdGNoLWZyb20tcGlubmVkLWVy
cm9ycykpCisgICh3aXRoLW1haW4rY2hpbGQgKG1haW4gY2hpbGQgKGxhbWJkYSAoKSkpCisgICAg
KHdpdGgtZmliZXItcGlubmVkICgpCisgICAgICAoYXNzZXJ0LWVycm9yIChzd2l0Y2gtZmliZXIg
bWFpbiBjaGlsZCkgcGlubmVkLWZpYmVyLWVycm9yKSkpKQorCis7OzsgLS0tIENvbmRpdGlvbnMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisKKyh3aXRoLXRlc3QgKDpuYW1lICg6ZmliZXIgOmNvbmRpdGlvbnMgOmJhc2UtY2F0Y2hlcy1z
dWJjbGFzc2VzKSkKKyAgOzsgQSBzY2hlZHVsZXIgY2FuIEhBTkRMRVItQ0FTRSBvbiBGSUJFUi1F
UlJPUiB0byBjYXRjaCBhbGwgc2ItZmliZXIKKyAgOzsgcHJlY29uZGl0aW9uIGZhaWx1cmVzIHVu
aWZvcm1seS4KKyAgKHdpdGgtbWFpbi1maWJlciAobWFpbikKKyAgICAobGV0ICgoZGVhZCAobWFr
ZS1maWJlciAobGFtYmRhICgpKSkpKQorICAgICAgKHJlbGVhc2UtZmliZXIgZGVhZCkKKyAgICAg
IChsZXQgKChjYXVnaHQKKyAgICAgICAgICAgICAgKGhhbmRsZXItY2FzZSAoc3dpdGNoLWZpYmVy
IG1haW4gZGVhZCkKKyAgICAgICAgICAgICAgICAoZmliZXItZXJyb3IgKGMpIGMpKSkpCisgICAg
ICAgIChhc3NlcnQgKHR5cGVwIGNhdWdodCAnZGVhZC1maWJlci1lcnJvcikpCisgICAgICAgIChh
c3NlcnQgKGVxIGRlYWQgKGZpYmVyLWVycm9yLWZpYmVyIGNhdWdodCkpKSkpKSkKKworKHdpdGgt
dGVzdCAoOm5hbWUgKDpmaWJlciA6Y29uZGl0aW9ucyA6c3RhdGUtZXJyb3Itc2xvdHMpKQorICA7
OyBGSUJFUi1TVEFURS1FUlJPUiBleHBvc2VzIHRoZSBhY3R1YWwgYW5kIGV4cGVjdGVkIHN0YXRl
cy4KKyAgKHdpdGgtbWFpbitjaGlsZCAobWFpbiBjaGlsZCAobGFtYmRhICgpKSkKKyAgICAoc3dp
dGNoLWZpYmVyIG1haW4gY2hpbGQpICAgICAgICAgICA7IHJ1bnMgdG8gY29tcGxldGlvbiwgbm93
IDpkZWFkCisgICAgKGhhbmRsZXItY2FzZSAoc3dpdGNoLWZpYmVyIG1haW4gY2hpbGQpCisgICAg
ICAoZmliZXItc3RhdGUtZXJyb3IgKGMpCisgICAgICAgIChhc3NlcnQgKGVxIGNoaWxkIChmaWJl
ci1lcnJvci1maWJlciBjKSkpCisgICAgICAgIChhc3NlcnQgKGVxIDpkZWFkIChmaWJlci1zdGF0
ZS1lcnJvci1zdGF0ZSBjKSkpCisgICAgICAgIChhc3NlcnQgKGVxdWFsICcoOnJ1bm5hYmxlIDpu
ZXcpIChmaWJlci1zdGF0ZS1lcnJvci1leHBlY3RlZCBjKSkpKSkpKQorCisod2l0aC10ZXN0ICg6
bmFtZSAoOmZpYmVyIDpjb25kaXRpb25zIDpwaW5uZWQtZXJyb3ItZGVwdGgpKQorICAod2l0aC1t
YWluK2NoaWxkIChtYWluIGNoaWxkIChsYW1iZGEgKCkpKQorICAgICh3aXRoLWZpYmVyLXBpbm5l
ZCAoKQorICAgICAgKHdpdGgtZmliZXItcGlubmVkICgpCisgICAgICAgIChoYW5kbGVyLWNhc2Ug
KHN3aXRjaC1maWJlciBtYWluIGNoaWxkKQorICAgICAgICAgIChwaW5uZWQtZmliZXItZXJyb3Ig
KGMpCisgICAgICAgICAgICAoYXNzZXJ0IChlcSBtYWluIChmaWJlci1lcnJvci1maWJlciBjKSkp
CisgICAgICAgICAgICAoYXNzZXJ0ICg9IDIgKHBpbm5lZC1maWJlci1lcnJvci1kZXB0aCBjKSkp
KSkpKSkpCisKKyh3aXRoLXRlc3QgKDpuYW1lICg6ZmliZXIgOmNvbmRpdGlvbnMgOm5vLWN1cnJl
bnQtZmliZXIpKQorICAobGV0ICgoc2ItZmliZXI6OipjdXJyZW50LWZpYmVyKiBuaWwpKQorICAg
IChsZXQgKChjIChoYW5kbGVyLWNhc2UgKG1ha2UtZmliZXIgKGxhbWJkYSAoKSkpCisgICAgICAg
ICAgICAgICAoZmliZXItZXJyb3IgKGUpIGUpKSkpICAgICAgICAgIDsgY2F1Z2h0IHZpYSB0aGUg
YmFzZSBjbGFzcworICAgICAgKGFzc2VydCAodHlwZXAgYyAnbm8tY3VycmVudC1maWJlci1lcnJv
cikpCisgICAgICAoYXNzZXJ0IChlcSAnbWFrZS1maWJlciAobm8tY3VycmVudC1maWJlci1lcnJv
ci1vcGVyYXRpb24gYykpKQorICAgICAgKGFzc2VydCAobnVsbCAoZmliZXItZXJyb3ItZmliZXIg
YykpKSkKKyAgICAobGV0ICgoYyAoaGFuZGxlci1jYXNlICh5aWVsZC1maWJlcikKKyAgICAgICAg
ICAgICAgIChuby1jdXJyZW50LWZpYmVyLWVycm9yIChlKSBlKSkpKQorICAgICAgKGFzc2VydCAo
ZXEgJ3lpZWxkLWZpYmVyIChuby1jdXJyZW50LWZpYmVyLWVycm9yLW9wZXJhdGlvbiBjKSkpKSkp
CisKKyh3aXRoLXRlc3QgKDpuYW1lICg6ZmliZXIgOmNvbmRpdGlvbnMgOnRocmVhZC1taXNtYXRj
aC1yb2xlKSkKKyAgKHdpdGgtbWFpbi1maWJlciAobWFpbikKKyAgICAobGV0KiAoKG90aGVyIChz
Yi10aHJlYWQ6bWFrZS10aHJlYWQKKyAgICAgICAgICAgICAgICAgICAobGFtYmRhICgpCisgICAg
ICAgICAgICAgICAgICAgICAobWFrZS1tYWluLWZpYmVyKQorICAgICAgICAgICAgICAgICAgICAg
KG1ha2UtZmliZXIgKGxhbWJkYSAoKSkpKSkpCisgICAgICAgICAgIChmb3JlaWduIChzYi10aHJl
YWQ6am9pbi10aHJlYWQgb3RoZXIpKSkKKyAgICAgIChoYW5kbGVyLWNhc2UgKHN3aXRjaC1maWJl
ciBtYWluIGZvcmVpZ24pCisgICAgICAgIChmaWJlci10aHJlYWQtbWlzbWF0Y2gtZXJyb3IgKGMp
CisgICAgICAgICAgKGFzc2VydCAoZXEgZm9yZWlnbiAoZmliZXItZXJyb3ItZmliZXIgYykpKQor
ICAgICAgICAgIChhc3NlcnQgKGVxIDp0byAoZmliZXItdGhyZWFkLW1pc21hdGNoLWVycm9yLXJv
bGUgYykpKSkpCisgICAgICAocmVsZWFzZS1maWJlciBmb3JlaWduKSkpKQorCisod2l0aC10ZXN0
ICg6bmFtZSAoOmZpYmVyIDp3aXRoLWZpYmVyLXBpbm5lZCA6cmVsZWFzZWQtb24tbm9uLWxvY2Fs
LWV4aXQpKQorICAod2l0aC1tYWluLWZpYmVyIChtYWluKQorICAgIChibG9jayBuaWwKKyAgICAg
ICh3aXRoLWZpYmVyLXBpbm5lZCAoKQorICAgICAgICAocmV0dXJuKSkpCisgICAgKGFzc2VydCAo
bm90IChmaWJlci1waW5uZWQtcCBtYWluKSkpKSkKZGlmZiAtLWdpdCBhL3Rlc3RzL2lucHV0LW1h
bmlmZXN0Lmxpc3AtZXhwciBiL3Rlc3RzL2lucHV0LW1hbmlmZXN0Lmxpc3AtZXhwcgppbmRleCBj
MDlhY2VjOTguLmM1OTlhMzk1ZCAxMDA2NDQKLS0tIGEvdGVzdHMvaW5wdXQtbWFuaWZlc3QubGlz
cC1leHByCisrKyBiL3Rlc3RzL2lucHV0LW1hbmlmZXN0Lmxpc3AtZXhwcgpAQCAtNDYsNiArNDYs
OCBAQAogICgiZWxmY29yZS50ZXN0LnNoIiAic3JjL3J1bnRpbWUvc2hyaW5rd3JhcC1zYmNsIikK
ICAoImV4aXQtaGFuZy5pbXB1cmUubGlzcCIgInRlc3RzL2ZjYi10aHJlYWRzLnNvIikKICAoImZj
Yi10aHJlYWRzLmltcHVyZS5saXNwIiAidGVzdHMvZmNiLXRocmVhZHMuc28iKQorICgiZmliZXIu
cHVyZS5saXNwIiAiY29udHJpYi9zYi1maWJlci5mYXNsIikKKyAoImZpYmVyLmltcHVyZS5saXNw
IiAiY29udHJpYi9zYi1maWJlci5mYXNsIikKICAoImZpZm8tc2xvdy5pbXB1cmUubGlzcCIgImNv
bnRyaWIvc2ItcG9zaXguZmFzbCIpCiAgKCJmaWxlY29tcGlsZS5pbXB1cmUubGlzcCIKICAgInRl
c3RzL2RhdGEvd29ua3kxLmxpc3AiCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo=

--b1=_D6HjCpfIgRg39jtH6OSxSrrDhqiWoDiY5lB10hD94
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--b1=_D6HjCpfIgRg39jtH6OSxSrrDhqiWoDiY5lB10hD94
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Sbcl-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sbcl-devel

--b1=_D6HjCpfIgRg39jtH6OSxSrrDhqiWoDiY5lB10hD94--