bug#72695: CC Mode 5.35.2 (C++//l); c++-mode misindents 'if constexpr' inside lambdas

Alan Mackenzie <[email protected]> Mon, 9 Sep 2024 15:15:34 +0000
Newsgroups gmane.emacs.cc-mode.general
Message-ID <Zt8RFllSqMGmBWVy@ACM>
SGVsbG8sIEFyc2VuLgoKT24gU3VuLCBTZXAgMDEsIDIwMjQgYXQgMDM6MDM6MzAgKzAyMDAsIEFy
c2VuIEFyc2Vub3ZpxIcgd3JvdGU6Cj4gSGkgQWxhbiwKCj4gQWxhbiBNYWNrZW56aWUgPGFjbUBt
dWMuZGU+IHdyaXRlczoKCj4gPiBJdCdzIGdvaW5nIHdlbGwsIHRoYW5rcyEgIEF0IHRoZSBjdXJy
ZW50IHJhdGUgb2YgcHJvZ3Jlc3MsIEknbGwgaGF2ZSBteQo+ID4gbWFpbCBzZXR1cCBzZXQgdXAg
YnkgdGhpcyB0aW1lIG5leHQgd2VlaywgYW5kIHRoYXQgaXMgdGhlIHBvaW50IGF0Cj4gPiB3aGlj
aCwgYXQgbGVhc3QgZm9yIG1lLCBteSBuZXcgbWFjaGluZSBiZWNvbWVzIG15IGN1cnJlbnQgbWFj
aGluZS4KCj4gR3JlYXQgdG8gaGVhciEKClRoYW5rcyEgIEknbSBhZnJhaWQgSSd2ZSBzcGVudCBh
bGwgd2VlayBvbiB0aGF0IGRhc2hlZCBlbWFpbCBzZXR1cCwgYW5kCml0J3Mgbm93IGZpbmFsbHkg
d29ya2luZy4gIFNvIEkndmUgbWFkZSBvbmx5IHNvbWUgcHJvZ3Jlc3Mgb24gdGhlIGJ1ZywKc29y
cnkuCgpCdXQgaGVyZSBpcyB3aGF0IEkgaGF2ZToKClsgLi4uLiBdCgo+IEhlaCwgZ2l2ZW4gdGhl
cmUncyBvbmx5IGEgZG96ZW4gb3Igc28gc3ludGF4IGVsZW1lbnRzIGluIEVsaXNwLCBJIGFncmVl
Cj4gOy0pLiAgQysrIGV4cG9zZXMgbG90cyBvZiBmbGV4aWJpbGl0eSwgc28gdGhlIHN5bnRheCBn
cmV3IHRvIG1hdGNoLgoKQW55aG93LCBJJ20gZmVlbGluZyBsZXNzIG5lZ2F0aXZlIGFib3V0IEMr
KydzIHN5bnRheCwgbm93LgoKPiBMYW1iZGEgZXhwcmVzc2lvbnMgZGVjbGFyZSBib3RoIGEgZGF0
YSB0eXBlIGFuZCBhIGZ1bmN0aW9uLCBhbmQgdGhlaXIKPiBzeW50YXggZXhwb3NlcyB0aGUgc3lu
dGF4IGVsZW1lbnRzIG9mIGJvdGgsIGhlbmNlIHRoZSBwcm92ZXJiaWFsCj4gY29tcGxleGl0eSBi
ZWluZyB0aGUgc3VtIG9mIHRoZSB0d28uCgpbIC4uLi4gXQoKPiA+IEFueWhvdywgSSd2ZSBnb3Qg
YSBmaXJzdCB2ZXJzaW9uLCBpbmNvbXBsZXRlbHkgdGVzdGVkLCBvZiBhIG5ldwo+ID4gaGFuZGxp
bmcgZm9yIGEgbGFtYmRhIGV4cHJlc3Npb24uICBUaGUgcGF0Y2ggaXMgbm90IG5lYXJseSBhcyBi
aWcgYXMKPiA+IGl0IGxvb2tzLCB0d28gdGhpcmRzIG9mIGl0IGlzIGp1c3QgcmUtaW5kZW50aW5n
IGEgbGFyZ2UgZnVuY3Rpb24gSQo+ID4gcHV0IGFuIGV4dHJhIGBpZicgZm9ybSBhcm91bi4KCj4g
SSd2ZSB0cmllZCBpdCBvbiBhIGZldyBleGFtcGxlcyBJIGNhbWUgdXAgd2l0aCwgaXQgc2VlbXMg
dG8gd29yayB3ZWxsIGluCj4gJ3JlYWwtbGlmZScgY29kZS4KCj4gSSd2ZSBhbHNvIGNvbnN0cnVj
dGVkIHRoZSBmb2xsb3dpbmcgInN0cmVzcyB0ZXN0IiB3aGljaCBpbmNsdWRlcyAoYWxtb3N0Cj4g
LSBzZWUgYmVsb3cpIGFsbCB0aGUgcHJvZHVjdGlvbnMgdGhhdCBjYW4gZXhpc3QgaW4gYSBsYW1i
ZGEgZnVuY3Rpb24sIGluCj4gdGhlIHNhbWUgY29udGV4dCBhcyB0aGUgb3JpZ2luYWwgYmFkIGV4
YW1wbGU6CgpUaGFua3MsIHRoaXMgd2FzIHZlcnkgdXNlZnVsLiAgQXMgYW4gaW1wb3J0YW50IHF1
ZXN0aW9uLCBjYW4gYW5kIGFsaWduYXMKc3BlY2lmaWVyIGV4aXN0IGluc2lkZSBhIGxhbWJkYSBl
eHByZXNzaW9uPyAgSWYgc28sIHdoYXQgZG9lcyBpdCBtZWFuPwpNeSBuZXcgcGF0Y2ggYmVsb3cg
ZG9lc24ndCAoeWV0KSBoYW5kbGUgaXQuCgo+ICAgdm9pZAo+ICAgZGVmICgpCj4gICB7Cj4gICAg
IGF1dG8gZm9vID0gWyYsCj4gICAJICAgICAgYSwKPiAgIAkgICAgICBiID0gMTIzLAo+ICAgCSAg
ICAgIGMsCj4gICAJICAgICAgLi4uZCwKPiAgIAkgICAgICAuLi5lID0gMTIzCj4gICAJICAgICAg
XQo+ICAgICAgIDx0eXBlbmFtZSBULAo+ICAgICAgICB0eXBlbmFtZSBTPgo+ICAgICAgIC8vYWxp
Z25hcyAoMTI4KQo+ICAgICAgIFtbZ251Ojpub3JldHVybl1dCj4gICAgICAgcmVxdWlyZXMgc29t
ZV9jb25jZXB0PFQ+Cj4gICAgICAgKGludCBhLAo+ICAgICAgICBpbnQgYiwKPiAgICAgICAgaW50
IGMpCj4gICAgICAgY29uc3RldmFsCj4gICAgICAgY29uc3RleHByCj4gICAgICAgbXV0YWJsZQo+
ICAgICAgIHN0YXRpYwo+ICAgICAgIC8vbm9leGNlcHQodHJ1ZSkKPiAgICAgICBbW2dudTo6cGFj
a2VkXV0KPiAgICAgICAvL2FsaWduYXMgKDEyOCkKPiAgICAgICAvLy0+Cj4gICAgICAgLy9pbnQK
PiAgICAgICAvL3JlcXVpcmVzIChzdGQ6OnNhbWVfYXMgPGRlY2x0eXBlIChhKSwgaW50PikKPiAg
ICAgICAgIHsKPiAgICAgICBpZiBjb25zdGV4cHIgKHRydWUpCj4gICAgICAgICA7Cj4gICAgIH0K
PiAgIH0KCkhlcmUncyBhIG1vZGlmaWVkIHZlcnNpb24gd2hpY2ggaXMgbm93IGZ1bGx5IGhhbmRs
ZWQgKGFzIGZhciBhcyBpdCBnb2VzKToKCgp2b2lkCmRlZiAoKQp7CiAgICAgIGF1dG8gZm9vID0g
WyYsCiAgICAgICAgICAgICAgYSwKICAgICAgICAgICAgICBiID0gMTIzLAogICAgICAgICAgICAg
IGMsCiAgICAgICAgICAgICAgLi4uZCwKICAgICAgICAgICAgICAuLi5lID0gMTIzCiAgICAgIF0K
ICAgICAgICA8dHlwZW5hbWUgVCwKICAgICAgICAgdHlwZW5hbWUgUz4KLy9hbGlnbmFzICgxMjgp
CiAgICAgICAgW1tnbnU6Om5vcmV0dXJuXV0KICAgICAgICByZXF1aXJlcyBzb21lX2NvbmNlcHQ8
VD4KICAgICAgICAoaW50IGEsCiAgICAgICAgIGludCBiLAogICAgICAgICBpbnQgYykKICAgICAg
ICBjb25zdGV2YWwKICAgICAgICBjb25zdGV4cHIKICAgICAgICBtdXRhYmxlCiAgICAgICAgc3Rh
dGljCiAgICAgICAgbm9leGNlcHQodHJ1ZSkKICAgICAgICBbW2dudTo6cGFja2VkXV0KLy9hbGln
bmFzICgxMjgpCiAgICAgICAgLT4gaW50CiAgICAgICAgcmVxdWlyZXMgKHN0ZDo6c2FtZV9hcyA8
ZGVjbHR5cGUgKGEpLCBpbnQ+KQogICAgICB7CiAgICAgICAgaWYgY29uc3RleHByICh0cnVlKQog
ICAgICAgICAgOwogICAgICB9Cn0KCgpbIC4uLi4gXQoKPiBJdCBzZWVtcyB0aGF0IGl0IGdldHMg
Y29uZnVzZWQgYnkgdGhlIHRyYWlsaW5nIHJlcXVpcmVzIGNsYXVzZXMsIHRoZQo+IGFsaWduYXMs
IHRoZSBub2V4Y2VwdCBhbmQgdGhlIHRyYWlsaW5nIHJldHVybiB0eXBlIChhbGwgY29tbWVudGVk
IC0KPiB1bmNvbW1lbnQgYW55IG9yIGFsbCB0byByZXByb2R1Y2UpLgoKVGhlc2Ugd2VyZSBjb2Rp
bmcgZXJyb3JzIGluIENDIE1vZGUuICBJIGhvcGUgdGhlIHBhdGNoIGJlbG93IHdpbGwgaGF2ZQpm
aXhlZCB0aGVzZSwgYXBhcnQgZnJvbSB0aGUgYWxpZ25hcyAoc2VlIGFib3ZlKS4KCj4gSG93ZXZl
ciwgdGhpcyBkb2VzIG5vdCBhcHBlYXIgdG8gbmVnYXRpdmVseSBpbXBhY3QgdGhlIHN5bnRheAo+
IHJlY29nbml0aW9uIGluc3RlYWQsIGZvciB0aGUgbW9zdCBwYXJ0IChJIHJlbW92ZWQgYW4gZWxl
bWVudCBmcm9tIHRoZQo+IHN0cmVzcyB0ZXN0IGFib3ZlIGluIG9yZGVyIHRvIGRlbW9uc3RyYXRl
IHRoYXQgdGhlIGlzc3VlIHdpdGgKPiBpbmRlbnRhdGlvbiBhcHBlYXJzIHRvIGJlIHNlcGFyYXRl
KS4KCj4gSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlOgoKPiAgIHZvaWQKPiAgIGRlZiAoKQo+ICAg
ewo+ICAgICBhdXRvIGZvbyA9IFsmLAo+ICAgCSAgICAgIGEsCj4gICAJICAgICAgYiA9IDEyMywK
PiAgIAkgICAgICBjLAo+ICAgCSAgICAgIC4uLmQsCj4gICAJICAgICAgLi4uZSA9IDEyMwo+ICAg
CSAgICAgIF0KPiAgICAgICA8dHlwZW5hbWUgVCwKPiAgICAgICAgdHlwZW5hbWUgUz4KPiAgICAg
ICBhbGlnbmFzICgxMjgpCj4gICAgICAgW1tnbnU6Om5vcmV0dXJuXV0KPiAgICAgICAvL3JlcXVp
cmVzIHNvbWVfY29uY2VwdDxUPgo+ICAgICAgIChpbnQgYSwKPiAgICAgICAgaW50IGIsCj4gICAg
ICAgIGludCBjKQo+ICAgICAgIGNvbnN0ZXZhbAo+ICAgICAgIGNvbnN0ZXhwcgo+ICAgICAgIG11
dGFibGUKPiAgICAgICBzdGF0aWMKPiAgICAgICBub2V4Y2VwdCh0cnVlKQo+ICAgICAgIFtbZ251
OjpwYWNrZWRdXQo+ICAgICAgIGFsaWduYXMgKDEyOCkKPiAgICAgICAtPgo+ICAgICAgIGludAo+
ICAgICAgIHJlcXVpcmVzIChzdGQ6OnNhbWVfYXMgPGRlY2x0eXBlIChhKSwgaW50PikKPiAgICAg
ewo+ICAgICAgIGlmIGNvbnN0ZXhwciAodHJ1ZSkKPiAgICAgICAgIDsKPiAgICAgfQo+ICAgfQoK
PiAuLi4gdW5jb21tZW50aW5nIHRoZSByZXF1aXJlcyBsaW5lIGNvbmZ1c2VzIHRoZSBpbmRlbnRh
dGlvbiBlbmdpbmUuCgpJIHRoaW5rIHRoaXMgaXMgZml4ZWQsIG5vdy4KCj4gSG9wZWZ1bGx5IHRo
ZXNlIGV4YW1wbGVzIGhlbHAuCgpWZXJ5IG11Y2ggc28uCgo+IFBsZWFzZSBhbHNvIG5vdGUgdGhh
dCBpbiBhIGZldyBwbGFjZXMgKHN1Y2ggYXMgYWxpZ25hcywgdGhlIG5vZXhjZXB0Cj4gc3BlY2lm
aWVyLCBSSFMgb2YgYXNzaWdubWVudHMgaW4gdGhlIGNhcHR1cmUgbGlzdCkgbmVhci1hcmJpdHJh
cnkKPiBleHByZXNzaW9ucyBjYW4gYXBwZWFyLCBhbmQgdGhhdCByZXF1aXJlcyBjbGF1c2UgaGF2
ZSBzcGVjaWFsIGJvb2xlYW4KPiBleHByZXNzaW9uIHN5bnRheCAoc2VlCj4gaHR0cHM6Ly9lZWwu
aXMvYysrZHJhZnQvdGVtcC5wcmUjbnQ6cmVxdWlyZXMtY2xhdXNlKS4KCkknbSBhZnJhaWQgSSBo
YXZlbid0IGxvb2tlZCBhdCB0aGlzLCB5ZXQuCgo+IEJvdGggb2YgdGhlc2UgcGllY2VzIG9mIHN5
bnRheCBhcmUgcmV1c2VkIGluIG90aGVyIGNvbnRleHRzIChvdGhlcgo+IGRlY2xhcmF0aW9ucyks
IHNvIGlmIHRoZXJlJ3MgYSBidWcgaW4gdGhlbSBpbiB0aGUgbGFtYmRhIGNhc2UsIGl0IGxpa2Vs
eQo+IGNhcnJpZXMgb3ZlciB0byB0aGUgZ2VuZXJhbCBkZWNsYXJhdGlvbiBjYXNlLgoKPiBUaGFu
ayB5b3UgYWdhaW4gZm9yIG1haW50YWluaW5nIENDLW1vZGUhICBJdCBpcyBpbW1lYXN1cmFibHkg
dXNlZnVsLgo+IEFuZCBhcG9sb2dpZXMgZm9yIHRoZSB0cm91YmxlIDotKQoKTm8gdHJvdWJsZSBh
dCBhbGwhCgpIZXJlJ3MgYW4gdXAgdG8gZGF0ZSB2ZXJzaW9uIG9mIHRoZSBwYXRjaCwgd2hpY2gg
c2hvdWxkIHdvcmsgYmV0dGVyIHRoYW4KdGhlIGxhc3QgdmVyc2lvbi4gIFBsZWFzZSBkbyB0aGUg
dXN1YWwgd2l0aCBpdCwgYW5kIGxldCBtZSBrbm93IGhvdyBpdApnb2VzLiAgVGhhbmtzIQoKCgpk
aWZmIC1yIDQ4YWQ2NjFhMmQ3ZCBjYy1lbmdpbmUuZWwKLS0tIGEvY2MtZW5naW5lLmVsCU1vbiBK
dWwgMjIgMTI6MDk6MzQgMjAyNCArMDAwMAorKysgYi9jYy1lbmdpbmUuZWwJTW9uIFNlcCAwOSAx
NDo0OTo1NSAyMDI0ICswMDAwCkBAIC05OTI5LDEyICs5OTI5LDIwIEBACiAJICgoZXEgKGNoYXIt
YWZ0ZXIpID9cKCkKIAkgIChhbmQgKGMtZ28tbGlzdC1mb3J3YXJkIChwb2ludCkgbGltaXQpCiAJ
ICAgICAgIChlcSAoY2hhci1iZWZvcmUpID9cKSkKLQkgICAgICAgKGxldCAoKGFmdGVyLXBhcmVu
IChwb2ludCkpKQotCQkgKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MgbGltaXQpCi0JCSAocHJvZzEK
LQkJICAgICAobm90IChlcSAoY2hhci1hZnRlcikgP3spKQotCQkgICAod2hlbiBzdG9wLWF0LWVu
ZAotCQkgICAgIChnb3RvLWNoYXIgYWZ0ZXItcGFyZW4pKSkpKSkKKzs7OzsgT0xEIFNUT1VHSCwg
MjAyNC0wOS0wMQorCSAgICAgICA7OyAobGV0ICgoYWZ0ZXItcGFyZW4gKHBvaW50KSkpCisJCSA7
OyAoYy1mb3J3YXJkLXN5bnRhY3RpYy13cyBsaW1pdCkKKwkJIDs7IChwcm9nMQorCQkgOzsgICAg
IChub3QgKGVxIChjaGFyLWFmdGVyKSA/eykpCisJCSA7OyAgICh3aGVuIHN0b3AtYXQtZW5kCisJ
CSA7OyAgICAgKGdvdG8tY2hhciBhZnRlci1wYXJlbikpKSkKKzs7OzsgTkVXIFNUT1VHSCwgMjAy
NC0wOS0wMQorCSAgICAgICAocHJvZ24KKwkJICh1bmxlc3Mgc3RvcC1hdC1lbmQKKwkJICAgKGMt
Zm9yd2FyZC1zeW50YWN0aWMtd3MgbGltaXQpKQorCQkgdCkKKzs7OzsgRU5EIE9GIE5FVyBTVE9V
R0gKKwkJCQkJICAgICAgICkpCiAJICgoYy1mb3J3YXJkLW92ZXItY29tcG91bmQtaWRlbnRpZmll
cikKIAkgIChsZXQgKChhZnRlci1pZCAocG9pbnQpKSkKIAkgICAgKGMtZm9yd2FyZC1zeW50YWN0
aWMtd3MgbGltaXQpCkBAIC0xMzE3OCwyMjkgKzEzMTg2LDIyMyBAQAogICA7OwogICA7OyBIZXJl
LCAiYnJhY2UgbGlzdCIgZG9lcyBub3QgaW5jbHVkZSB0aGUgYm9keSBvZiBhbiBlbnVtLgogICAo
c2F2ZS1leGN1cnNpb24KLSAgICAobGV0ICgoc3RhcnQgKHBvaW50KSkKLQkgIChicmFjZWFzc2ln
bnAgJ2RvbnRrbm93KQotCSAgaW5leHByLWJyYWNlLWxpc3QgYnVmcG9zIG1hY3JvLXN0YXJ0IHJl
cyBwb3MgYWZ0ZXItdHlwZS1pZC1wb3MKLQkgIHBvczIgaW4tcGFyZW4gcGFyZW5zLWJlZm9yZS1i
cmFjZQotCSAgcGFyZW4tc3RhdGUgcGFyZW4tcG9zKQotCi0gICAgICAoc2V0cSByZXMKLQkgICAg
KG9yIChwcm9nbiAoYy1iYWNrd2FyZC1zeW50YWN0aWMtd3MpCi0JCSAgICAgICAoYy1iYWNrLW92
ZXItY29tcG91bmQtaWRlbnRpZmllcikpCi0JCShjLWJhY2t3YXJkLXRva2VuLTIgMSB0IGxpbSkp
KQotICAgICAgOzsgQ2hlY2tzIHRvIGRvIG9ubHkgb24gdGhlIGZpcnN0IHNleHAgYmVmb3JlIHRo
ZSBicmFjZS4KLSAgICAgIDs7IEhhdmUgd2UgYSBDKysgaW5pdGlhbGl6YXRpb24sIHdpdGhvdXQg
YW4gIj0iPwotICAgICAgKGlmIChhbmQgKGMtbWFqb3ItbW9kZS1pcyAnYysrLW1vZGUpCi0JICAg
ICAgIChjb25kCi0JCSgoYW5kIChvciAobm90IChtZW1xIHJlcyAnKHQgMCkpKQotCQkJICAoZXEg
KGNoYXItYWZ0ZXIpID8sKSkKLQkJICAgICAgKHNldHEgcGFyZW4tc3RhdGUgKGMtcGFyc2Utc3Rh
dGUpKQotCQkgICAgICAoc2V0cSBwYXJlbi1wb3MgKGMtcHVsbC1vcGVuLWJyYWNlIHBhcmVuLXN0
YXRlKSkKLQkJICAgICAgKGVxIChjaGFyLWFmdGVyIHBhcmVuLXBvcykgP1woKSkKLQkJIChnb3Rv
LWNoYXIgcGFyZW4tcG9zKQotCQkgKHNldHEgYnJhY2Vhc3NpZ25wICdjKystbm9hc3NpZ24KLQkJ
ICAgICAgIGluLXBhcmVuICdpbi1wYXJlbikpCi0JCSgobG9va2luZy1hdCBjLXByZS1icmFjZS1u
b24tYnJhY2VsaXN0LWtleSkKLQkJIChzZXRxIGJyYWNlYXNzaWducCBuaWwpKQotCQkoKGFuZAot
CQkgIChsb29raW5nLWF0IGMtZnVuLW5hbWUtc3Vic3RpdHV0ZS1rZXkpCi0JCSAgKG5vdCAoZXEg
KGNoYXItYWZ0ZXIgKG1hdGNoLWVuZCAwKSkgP18pKSkKLQkJIChzZXRxIGJyYWNlYXNzaWducCBu
aWwpKQotCQkoKGxvb2tpbmctYXQgYy1yZXR1cm4ta2V5KSkKLQkJKChhbmQgKGxvb2tpbmctYXQg
Yy1zeW1ib2wtc3RhcnQpCi0JCSAgICAgIChub3QgKGxvb2tpbmctYXQgYy1rZXl3b3Jkcy1yZWdl
eHApKSkKLQkJIChpZiAoc2F2ZS1leGN1cnNpb24KLQkJICAgICAgIChhbmQgKHplcm9wIChjLWJh
Y2t3YXJkLXRva2VuLTIgMSB0IGxpbSkpCi0JCQkgICAgKGxvb2tpbmctYXQgYy1wcmUtaWQtYnJh
Y2VsaXN0LWtleSkpKQotCQkgICAgIChzZXRxIGJyYWNlYXNzaWducCAnYysrLW5vYXNzaWduKQot
CQkgICAoc2V0cSBhZnRlci10eXBlLWlkLXBvcyAocG9pbnQpKSkpCi0JCSgoZXEgKGNoYXItYWZ0
ZXIpID9cKCkKLQkJIChzZXRxIHBhcmVucy1iZWZvcmUtYnJhY2UgdCkKLQkJIDs7IEhhdmUgd2Ug
YSByZXF1aXJlcyB3aXRoIGEgcGFyZW50aGVzaXMgbGlzdD8KLQkJICh3aGVuIChzYXZlLWV4Y3Vy
c2lvbgotCQkJIChhbmQgKHplcm9wIChjLWJhY2t3YXJkLXRva2VuLTIgMSBuaWwgbGltKSkKLQkJ
CSAgICAgIChsb29raW5nLWF0IGMtZnVuLW5hbWUtc3Vic3RpdHV0ZS1rZXkpCi0JCQkgICAgICAo
bm90IChlcSAoY2hhci1hZnRlciAobWF0Y2gtZW5kIDApKSA/XykpKSkKKyAgICAodW5sZXNzIChh
bmQgKGMtbWFqb3ItbW9kZS1pcyAnYysrLW1vZGUpCisJCSAoYy1iYWNrd2FyZC1vdmVyLWxhbWJk
YS1leHByZXNzaW9uIGxpbSkpCisgICAgICAobGV0ICgoc3RhcnQgKHBvaW50KSkKKwkgICAgKGJy
YWNlYXNzaWducCAnZG9udGtub3cpCisJICAgIGluZXhwci1icmFjZS1saXN0IGJ1ZnBvcyBtYWNy
by1zdGFydCByZXMgcG9zIGFmdGVyLXR5cGUtaWQtcG9zCisJICAgIHBvczIgaW4tcGFyZW4gOzsg
cGFyZW5zLWJlZm9yZS1icmFjZSBTVE9VR0gsIDIwMjQtMDgtMzEKKwkgICAgcGFyZW4tc3RhdGUg
cGFyZW4tcG9zKQorCisJKHNldHEgcmVzCisJICAgICAgKG9yIChwcm9nbiAoYy1iYWNrd2FyZC1z
eW50YWN0aWMtd3MpCisJCQkgKGMtYmFjay1vdmVyLWNvbXBvdW5kLWlkZW50aWZpZXIpKQorCQkg
IChjLWJhY2t3YXJkLXRva2VuLTIgMSB0IGxpbSkpKQorCTs7IENoZWNrcyB0byBkbyBvbmx5IG9u
IHRoZSBmaXJzdCBzZXhwIGJlZm9yZSB0aGUgYnJhY2UuCisJOzsgSGF2ZSB3ZSBhIEMrKyBpbml0
aWFsaXphdGlvbiwgd2l0aG91dCBhbiAiPSI/CisJKGlmIChhbmQgKGMtbWFqb3ItbW9kZS1pcyAn
YysrLW1vZGUpCisJCSAoY29uZAorCQkgICgoYW5kIChvciAobm90IChtZW1xIHJlcyAnKHQgMCkp
KQorCQkJICAgIChlcSAoY2hhci1hZnRlcikgPywpKQorCQkJKHNldHEgcGFyZW4tc3RhdGUgKGMt
cGFyc2Utc3RhdGUpKQorCQkJKHNldHEgcGFyZW4tcG9zIChjLXB1bGwtb3Blbi1icmFjZSBwYXJl
bi1zdGF0ZSkpCisJCQkoZXEgKGNoYXItYWZ0ZXIgcGFyZW4tcG9zKSA/XCgpKQorCQkgICAoZ290
by1jaGFyIHBhcmVuLXBvcykKKwkJICAgKHNldHEgYnJhY2Vhc3NpZ25wICdjKystbm9hc3NpZ24K
KwkJCSBpbi1wYXJlbiAnaW4tcGFyZW4pKQorCQkgICgobG9va2luZy1hdCBjLXByZS1icmFjZS1u
b24tYnJhY2VsaXN0LWtleSkKIAkJICAgKHNldHEgYnJhY2Vhc3NpZ25wIG5pbCkpCi0JCSBuaWwp
Ci0JCSh0IG5pbCkpCi0JICAgICAgIChzYXZlLWV4Y3Vyc2lvbgotCQkgKGNvbmQKLQkJICAoKG9y
IChub3QgKG1lbXEgcmVzICcodCAwKSkpCi0JCSAgICAgICAoZXEgKGNoYXItYWZ0ZXIpID8sKSkK
LQkJICAgKGFuZCAoc2V0cSBwYXJlbi1zdGF0ZSAoYy1wYXJzZS1zdGF0ZSkpCi0JCQkoc2V0cSBw
YXJlbi1wb3MgKGMtcHVsbC1vcGVuLWJyYWNlIHBhcmVuLXN0YXRlKSkKLQkJCShlcSAoY2hhci1h
ZnRlciBwYXJlbi1wb3MpID9cKCkKLQkJCShzZXRxIGluLXBhcmVuICdpbi1wYXJlbikKLQkJCShn
b3RvLWNoYXIgcGFyZW4tcG9zKSkpCi0JCSAgKChsb29raW5nLWF0IGMtcHJlLWJyYWNlLW5vbi1i
cmFjZWxpc3Qta2V5KSkKKwkJICAoKGFuZAorCQkgICAgKGxvb2tpbmctYXQgYy1mdW4tbmFtZS1z
dWJzdGl0dXRlLWtleSkKKwkJICAgIChub3QgKGVxIChjaGFyLWFmdGVyIChtYXRjaC1lbmQgMCkp
ID9fKSkpCisJCSAgIChzZXRxIGJyYWNlYXNzaWducCBuaWwpKQogCQkgICgobG9va2luZy1hdCBj
LXJldHVybi1rZXkpKQogCQkgICgoYW5kIChsb29raW5nLWF0IGMtc3ltYm9sLXN0YXJ0KQotCQkJ
KG5vdCAobG9va2luZy1hdCBjLWtleXdvcmRzLXJlZ2V4cCkpCi0JCQkoc2F2ZS1leGN1cnNpb24K
LQkJCSAgKGFuZCAoemVyb3AgKGMtYmFja3dhcmQtdG9rZW4tMiAxIHQgbGltKSkKLQkJCSAgICAg
ICAobG9va2luZy1hdCBjLXByZS1pZC1icmFjZWxpc3Qta2V5KSkpKSkKLQkJICAodCAoc2V0cSBh
ZnRlci10eXBlLWlkLXBvcyAocG9pbnQpKQotCQkgICAgIG5pbCkpKSkKLQkgIChzZXRxIGJyYWNl
YXNzaWducCAnYysrLW5vYXNzaWduKSkKLQotICAgICAgKHdoZW4gKGFuZCBjLW9wdC1pbmV4cHIt
YnJhY2UtbGlzdC1rZXkKLQkJIChlcSAoY2hhci1hZnRlcikgP1xbKSkKLQk7OyBJbiBKYXZhLCBh
biBpbml0aWFsaXphdGlvbiBicmFjZSBsaXN0IG1heSBmb2xsb3cKLQk7OyBkaXJlY3RseSBhZnRl
ciAibmV3IEZvb1tdIiwgc28gY2hlY2sgZm9yIGEgIm5ldyIKLQk7OyBlYXJsaWVyLgotCSh3aGls
ZSAoZXEgYnJhY2Vhc3NpZ25wICdkb250a25vdykKLQkgIChzZXRxIGJyYWNlYXNzaWducAotCQko
Y29uZCAoKC89IChjLWJhY2t3YXJkLXRva2VuLTIgMSB0IGxpbSkgMCkgbmlsKQotCQkgICAgICAo
KGxvb2tpbmctYXQgYy1vcHQtaW5leHByLWJyYWNlLWxpc3Qta2V5KQotCQkgICAgICAgKHNldHEg
aW5leHByLWJyYWNlLWxpc3QgdCkKLQkJICAgICAgIHQpCi0JCSAgICAgICgobG9va2luZy1hdCAi
XFxzd1xcfFxcc19cXHxbLltdIikKLQkJICAgICAgIDs7IENhcnJ5IG9uIGxvb2tpbmcgaWYgdGhp
cyBpcyBhbgotCQkgICAgICAgOzsgaWRlbnRpZmllciAobWF5IGNvbnRhaW4gIi4iIGluIEphdmEp
Ci0JCSAgICAgICA7OyBvciBhbm90aGVyICJbXSIgc2V4cC4KLQkJICAgICAgICdkb250a25vdykK
LQkJICAgICAgKHQgbmlsKSkpKSkKLQotICAgICAgKHNldHEgcG9zIChwb2ludCkpCi0gICAgICAo
Y29uZAotICAgICAgICgobm90IGJyYWNlYXNzaWducCkKLQluaWwpCi0gICAgICAgKChhbmQgYWZ0
ZXItdHlwZS1pZC1wb3MKLQkgICAgIChnb3RvLWNoYXIgYWZ0ZXItdHlwZS1pZC1wb3MpCi0JICAg
ICAoc2V0cSByZXMgKGMtYmFjay1vdmVyLW1lbWJlci1pbml0aWFsaXplcnMpKQotCSAgICAgKGdv
dG8tY2hhciByZXMpCi0JICAgICAoZXEgKGNhciAoYy1iZWdpbm5pbmctb2YtZGVjbC0xIGxpbSkp
ICdzYW1lKSkKLQkoY29ucyAocG9pbnQpIG5pbCkpCQk7IFJldHVybiB2YWx1ZS4KLQotICAgICAg
ICgoYW5kIGFmdGVyLXR5cGUtaWQtcG9zCi0JICAgICAocHJvZ24KLQkgICAgICAgKGMtYmFja3dh
cmQtc3ludGFjdGljLXdzKQotCSAgICAgICAoZXEgKGNoYXItYmVmb3JlKSA/XCgpKSkKLQk7OyBT
aW5nbGUgaWRlbnRpZmllciBiZXR3ZWVuICcoJyBhbmQgJ3snLiAgV2UgaGF2ZSBhIGJyYWNlbGlz
dC4KLQkoY29ucyBhZnRlci10eXBlLWlkLXBvcyAnaW4tcGFyZW4pKQotCi0gICAgICAgOzsgQXJl
IHdlIGF0IHRoZSBwYXJlbnMgb2YgYSBDKysgbGFtYmRhIGV4cHJlc3Npb24/Ci0gICAgICAgKChh
bmQgcGFyZW5zLWJlZm9yZS1icmFjZQotCSAgICAgKHNhdmUtZXhjdXJzaW9uCi0JICAgICAgIChh
bmQKLQkJKHplcm9wIChjLWJhY2t3YXJkLXRva2VuLTIgMSB0IGxpbSkpCi0JCShjLWxvb2tpbmct
YXQtYysrLWxhbWJkYS1jYXB0dXJlLWxpc3QpKSkpCi0JbmlsKQkJCSAgICAgOyBhIGxhbWJkYSBl
eHByZXNzaW9uIGlzbid0IGEgYnJhY2UgbGlzdC4KLQotICAgICAgICh0Ci0JKGdvdG8tY2hhciBw
b3MpCi0JKHdoZW4gKGVxIGJyYWNlYXNzaWducCAnZG9udGtub3cpCi0JICAobGV0KiAoKGNhY2hl
LWVudHJ5IChhbmQgY29udGFpbmluZy1zZXhwCi0JCQkJICAgKGMtbGFvbWliLWdldC1jYWNoZSBj
b250YWluaW5nLXNleHAgcG9zKSkpCi0JCSAobGltMiAob3IgKGNhZHIgY2FjaGUtZW50cnkpIGxp
bSkpCi0JCSBzdWItYmFzc2lnbi1wKQotCSAgICAoaWYgY2FjaGUtZW50cnkKLQkJKGNvbmQKLQkJ
ICgoPD0gKHBvaW50KSAoY2FkciBjYWNoZS1lbnRyeSkpCi0JCSAgOzsgV2UncmUgaW5zaWRlIHRo
ZSByZWdpb24gd2UndmUgYWxyZWFkeSBzY2FubmVkIG92ZXIsIHNvCi0JCSAgOzsganVzdCBnbyB0
byB0aGF0IHNjYW4ncyBlbmQgcG9zaXRpb24uCi0JCSAgKGdvdG8tY2hhciAobnRoIDIgY2FjaGUt
ZW50cnkpKQotCQkgIChzZXRxIGJyYWNlYXNzaWducCAobnRoIDMgY2FjaGUtZW50cnkpKSkKLQkJ
ICgoPiAocG9pbnQpIChjYWRyIGNhY2hlLWVudHJ5KSkKLQkJICA7OyBXZSdyZSBiZXlvbmQgdGhl
IHByZXZpb3VzIHNjYW4gcmVnaW9uLCBzbyBqdXN0IHNjYW4gYXMKLQkJICA7OyBmYXIgYXMgdGhl
IGVuZCBvZiB0aGF0IHJlZ2lvbi4KLQkJICAoc2V0cSBzdWItYmFzc2lnbi1wIChjLWxhb21pYi1s
b29wIGxpbTIpKQotCQkgIChpZiAoPD0gKHBvaW50KSAoY2FkciBjYWNoZS1lbnRyeSkpCi0JCSAg
ICAgIChwcm9nbgotCQkJKGMtbGFvbWliLXB1dC1jYWNoZSBjb250YWluaW5nLXNleHAKLQkJCQkJ
ICAgIHN0YXJ0IChudGggMiBjYWNoZS1lbnRyeSkKLQkJCQkJICAgIChudGggMyBjYWNoZS1lbnRy
eSkgOzsgc3ViLWJhc3NpZ24tcAotCQkJCQkgICAgKQotCQkJKHNldHEgYnJhY2Vhc3NpZ25wIChu
dGggMyBjYWNoZS1lbnRyeSkpCi0JCQkoZ290by1jaGFyIChudGggMiBjYWNoZS1lbnRyeSkpKQot
CQkgICAgKGMtbGFvbWliLXB1dC1jYWNoZSBjb250YWluaW5nLXNleHAKLQkJCQkJc3RhcnQgKHBv
aW50KSBzdWItYmFzc2lnbi1wKQotCQkgICAgKHNldHEgYnJhY2Vhc3NpZ25wIHN1Yi1iYXNzaWdu
LXApKSkKLQkJICh0KSkKLQotCSAgICAgIChzZXRxIGJyYWNlYXNzaWducCAoYy1sYW9taWItbG9v
cCBsaW0pKQotCSAgICAgICh3aGVuIGxpbQotCQkoYy1sYW9taWItcHV0LWNhY2hlIGxpbSBzdGFy
dCAocG9pbnQpIGJyYWNlYXNzaWducCkpKSkpCi0KKwkJCShub3QgKGxvb2tpbmctYXQgYy1rZXl3
b3Jkcy1yZWdleHApKSkKKwkJICAgKGlmIChzYXZlLWV4Y3Vyc2lvbgorCQkJIChhbmQgKHplcm9w
IChjLWJhY2t3YXJkLXRva2VuLTIgMSB0IGxpbSkpCisJCQkgICAgICAobG9va2luZy1hdCBjLXBy
ZS1pZC1icmFjZWxpc3Qta2V5KSkpCisJCSAgICAgICAoc2V0cSBicmFjZWFzc2lnbnAgJ2MrKy1u
b2Fzc2lnbikKKwkJICAgICAoc2V0cSBhZnRlci10eXBlLWlkLXBvcyAocG9pbnQpKSkpCisJCSAg
KChlcSAoY2hhci1hZnRlcikgP1woKQorCQkgICA7OyAoc2V0cSBwYXJlbnMtYmVmb3JlLWJyYWNl
IHQpIFNUT1VHSCwgMjAyNC0wOC0zMQorCQkgICA7OyBIYXZlIHdlIGEgcmVxdWlyZXMgd2l0aCBh
IHBhcmVudGhlc2lzIGxpc3Q/CisJCSAgICh3aGVuIChzYXZlLWV4Y3Vyc2lvbgorCQkJICAgKGFu
ZCAoemVyb3AgKGMtYmFja3dhcmQtdG9rZW4tMiAxIG5pbCBsaW0pKQorCQkJCShsb29raW5nLWF0
IGMtZnVuLW5hbWUtc3Vic3RpdHV0ZS1rZXkpCisJCQkJKG5vdCAoZXEgKGNoYXItYWZ0ZXIgKG1h
dGNoLWVuZCAwKSkgP18pKSkpCisJCSAgICAgKHNldHEgYnJhY2Vhc3NpZ25wIG5pbCkpCisJCSAg
IG5pbCkKKwkJICAodCBuaWwpKQorCQkgKHNhdmUtZXhjdXJzaW9uCisJCSAgIChjb25kCisJCSAg
ICAoKG9yIChub3QgKG1lbXEgcmVzICcodCAwKSkpCisJCQkgKGVxIChjaGFyLWFmdGVyKSA/LCkp
CisJCSAgICAgKGFuZCAoc2V0cSBwYXJlbi1zdGF0ZSAoYy1wYXJzZS1zdGF0ZSkpCisJCQkgIChz
ZXRxIHBhcmVuLXBvcyAoYy1wdWxsLW9wZW4tYnJhY2UgcGFyZW4tc3RhdGUpKQorCQkJICAoZXEg
KGNoYXItYWZ0ZXIgcGFyZW4tcG9zKSA/XCgpCisJCQkgIChzZXRxIGluLXBhcmVuICdpbi1wYXJl
bikKKwkJCSAgKGdvdG8tY2hhciBwYXJlbi1wb3MpKSkKKwkJICAgICgobG9va2luZy1hdCBjLXBy
ZS1icmFjZS1ub24tYnJhY2VsaXN0LWtleSkpCisJCSAgICAoKGxvb2tpbmctYXQgYy1yZXR1cm4t
a2V5KSkKKwkJICAgICgoYW5kIChsb29raW5nLWF0IGMtc3ltYm9sLXN0YXJ0KQorCQkJICAobm90
IChsb29raW5nLWF0IGMta2V5d29yZHMtcmVnZXhwKSkKKwkJCSAgKHNhdmUtZXhjdXJzaW9uCisJ
CQkgICAgKGFuZCAoemVyb3AgKGMtYmFja3dhcmQtdG9rZW4tMiAxIHQgbGltKSkKKwkJCQkgKGxv
b2tpbmctYXQgYy1wcmUtaWQtYnJhY2VsaXN0LWtleSkpKSkpCisJCSAgICAodCAoc2V0cSBhZnRl
ci10eXBlLWlkLXBvcyAocG9pbnQpKQorCQkgICAgICAgbmlsKSkpKQorCSAgICAoc2V0cSBicmFj
ZWFzc2lnbnAgJ2MrKy1ub2Fzc2lnbikpCisKKwkod2hlbiAoYW5kIGMtb3B0LWluZXhwci1icmFj
ZS1saXN0LWtleQorCQkgICAoZXEgKGNoYXItYWZ0ZXIpID9cWykpCisJICA7OyBJbiBKYXZhLCBh
biBpbml0aWFsaXphdGlvbiBicmFjZSBsaXN0IG1heSBmb2xsb3cKKwkgIDs7IGRpcmVjdGx5IGFm
dGVyICJuZXcgRm9vW10iLCBzbyBjaGVjayBmb3IgYSAibmV3IgorCSAgOzsgZWFybGllci4KKwkg
ICh3aGlsZSAoZXEgYnJhY2Vhc3NpZ25wICdkb250a25vdykKKwkgICAgKHNldHEgYnJhY2Vhc3Np
Z25wCisJCSAgKGNvbmQgKCgvPSAoYy1iYWNrd2FyZC10b2tlbi0yIDEgdCBsaW0pIDApIG5pbCkK
KwkJCSgobG9va2luZy1hdCBjLW9wdC1pbmV4cHItYnJhY2UtbGlzdC1rZXkpCisJCQkgKHNldHEg
aW5leHByLWJyYWNlLWxpc3QgdCkKKwkJCSB0KQorCQkJKChsb29raW5nLWF0ICJcXHN3XFx8XFxz
X1xcfFsuW10iKQorCQkJIDs7IENhcnJ5IG9uIGxvb2tpbmcgaWYgdGhpcyBpcyBhbgorCQkJIDs7
IGlkZW50aWZpZXIgKG1heSBjb250YWluICIuIiBpbiBKYXZhKQorCQkJIDs7IG9yIGFub3RoZXIg
IltdIiBzZXhwLgorCQkJICdkb250a25vdykKKwkJCSh0IG5pbCkpKSkpCisKKwkoc2V0cSBwb3Mg
KHBvaW50KSkKIAkoY29uZAotCSAoYnJhY2Vhc3NpZ25wCi0JICA7OyBXZSd2ZSBoaXQgdGhlIGJl
Z2lubmluZyBvZiB0aGUgYWdncmVnYXRlIGxpc3QuCi0JICAoc2V0cSBwb3MyIChwb2ludCkpCi0J
ICAoY29ucwotCSAgIChpZiAoZXEgKGMtYmVnaW5uaW5nLW9mLXN0YXRlbWVudC0xIGNvbnRhaW5p
bmctc2V4cCkgJ3NhbWUpCi0JICAgICAgIChwb2ludCkKLQkgICAgIHBvczIpCi0JICAgKG9yIGlu
LXBhcmVuIGluZXhwci1icmFjZS1saXN0KSkpCisJICgobm90IGJyYWNlYXNzaWducCkKKwkgIG5p
bCkKKwkgKChhbmQgYWZ0ZXItdHlwZS1pZC1wb3MKKwkgICAgICAgKGdvdG8tY2hhciBhZnRlci10
eXBlLWlkLXBvcykKKwkgICAgICAgKHNldHEgcmVzIChjLWJhY2stb3Zlci1tZW1iZXItaW5pdGlh
bGl6ZXJzKSkKKwkgICAgICAgKGdvdG8tY2hhciByZXMpCisJICAgICAgIChlcSAoY2FyIChjLWJl
Z2lubmluZy1vZi1kZWNsLTEgbGltKSkgJ3NhbWUpKQorCSAgKGNvbnMgKHBvaW50KSBuaWwpKQkJ
OyBSZXR1cm4gdmFsdWUuCisKIAkgKChhbmQgYWZ0ZXItdHlwZS1pZC1wb3MKLQkgICAgICAgKHNh
dmUtZXhjdXJzaW9uCi0JCSAod2hlbiAoZXEgKGNoYXItYWZ0ZXIpID9cOykKLQkJICAgKGMtZm9y
d2FyZC1vdmVyLXRva2VuLWFuZC13cyB0KSkKLQkJIChzZXRxIGJ1ZnBvcyAocG9pbnQpKQotCQkg
KHdoZW4gKGxvb2tpbmctYXQgYy1vcHQtPD4tc2V4cC1rZXkpCi0JCSAgIChjLWZvcndhcmQtb3Zl
ci10b2tlbi1hbmQtd3MpCi0JCSAgICh3aGVuIChhbmQgKGVxIChjaGFyLWFmdGVyKSA/PCkKLQkJ
CSAgICAgIChjLWdldC1jaGFyLXByb3BlcnR5IChwb2ludCkgJ3N5bnRheC10YWJsZSkpCi0JCSAg
ICAgKGMtZ28tbGlzdC1mb3J3YXJkIG5pbCBhZnRlci10eXBlLWlkLXBvcykKLQkJICAgICAoYy1m
b3J3YXJkLXN5bnRhY3RpYy13cykpKQotCQkgKGlmIChhbmQgKG5vdCAoZXEgKHBvaW50KSBhZnRl
ci10eXBlLWlkLXBvcykpCi0JCQkgIChvciAobm90IChsb29raW5nLWF0IGMtY2xhc3Mta2V5KSkK
LQkJCSAgICAgIChzYXZlLWV4Y3Vyc2lvbgotCQkJCShnb3RvLWNoYXIgKG1hdGNoLWVuZCAxKSkK
LQkJCQkoYy1mb3J3YXJkLXN5bnRhY3RpYy13cykKLQkJCQkobm90IChlcSAocG9pbnQpIGFmdGVy
LXR5cGUtaWQtcG9zKSkpKSkKLQkJICAgICAocHJvZ24KLQkJICAgICAgIChzZXRxIHJlcwotCQkJ
ICAgICAoYy1mb3J3YXJkLWRlY2wtb3ItY2FzdC0xIChjLXBvaW50ICdib3N3cykKLQkJCQkJCSAg
ICAgICBuaWwgbmlsKSkKLQkJICAgICAgIChhbmQgKGNvbnNwIHJlcykKLQkJCSAgICAoY29uZAot
CQkJICAgICAoKGVxIChjYXIgcmVzKSBhZnRlci10eXBlLWlkLXBvcykpCi0JCQkgICAgICgoPiAo
Y2FyIHJlcykgYWZ0ZXItdHlwZS1pZC1wb3MpIG5pbCkKLQkJCSAgICAgKHQKLQkJCSAgICAgIChj
YXRjaCAnZmluZC1kZWNsCisJICAgICAgIChwcm9nbgorCQkgKGMtYmFja3dhcmQtc3ludGFjdGlj
LXdzKQorCQkgKGVxIChjaGFyLWJlZm9yZSkgP1woKSkpCisJICA7OyBTaW5nbGUgaWRlbnRpZmll
ciBiZXR3ZWVuICcoJyBhbmQgJ3snLiAgV2UgaGF2ZSBhIGJyYWNlbGlzdC4KKwkgIChjb25zIGFm
dGVyLXR5cGUtaWQtcG9zICdpbi1wYXJlbikpCisKKwkgKHQKKwkgIChnb3RvLWNoYXIgcG9zKQor
CSAgKHdoZW4gKGVxIGJyYWNlYXNzaWducCAnZG9udGtub3cpCisJICAgIChsZXQqICgoY2FjaGUt
ZW50cnkgKGFuZCBjb250YWluaW5nLXNleHAKKwkJCQkgICAgIChjLWxhb21pYi1nZXQtY2FjaGUg
Y29udGFpbmluZy1zZXhwIHBvcykpKQorCQkgICAobGltMiAob3IgKGNhZHIgY2FjaGUtZW50cnkp
IGxpbSkpCisJCSAgIHN1Yi1iYXNzaWduLXApCisJICAgICAgKGlmIGNhY2hlLWVudHJ5CisJCSAg
KGNvbmQKKwkJICAgKCg8PSAocG9pbnQpIChjYWRyIGNhY2hlLWVudHJ5KSkKKwkJICAgIDs7IFdl
J3JlIGluc2lkZSB0aGUgcmVnaW9uIHdlJ3ZlIGFscmVhZHkgc2Nhbm5lZCBvdmVyLCBzbworCQkg
ICAgOzsganVzdCBnbyB0byB0aGF0IHNjYW4ncyBlbmQgcG9zaXRpb24uCisJCSAgICAoZ290by1j
aGFyIChudGggMiBjYWNoZS1lbnRyeSkpCisJCSAgICAoc2V0cSBicmFjZWFzc2lnbnAgKG50aCAz
IGNhY2hlLWVudHJ5KSkpCisJCSAgICgoPiAocG9pbnQpIChjYWRyIGNhY2hlLWVudHJ5KSkKKwkJ
ICAgIDs7IFdlJ3JlIGJleW9uZCB0aGUgcHJldmlvdXMgc2NhbiByZWdpb24sIHNvIGp1c3Qgc2Nh
biBhcworCQkgICAgOzsgZmFyIGFzIHRoZSBlbmQgb2YgdGhhdCByZWdpb24uCisJCSAgICAoc2V0
cSBzdWItYmFzc2lnbi1wIChjLWxhb21pYi1sb29wIGxpbTIpKQorCQkgICAgKGlmICg8PSAocG9p
bnQpIChjYWRyIGNhY2hlLWVudHJ5KSkKKwkJCShwcm9nbgorCQkJICAoYy1sYW9taWItcHV0LWNh
Y2hlIGNvbnRhaW5pbmctc2V4cAorCQkJCQkgICAgICBzdGFydCAobnRoIDIgY2FjaGUtZW50cnkp
CisJCQkJCSAgICAgIChudGggMyBjYWNoZS1lbnRyeSkgOzsgc3ViLWJhc3NpZ24tcAorCQkJCQkg
ICAgICApCisJCQkgIChzZXRxIGJyYWNlYXNzaWducCAobnRoIDMgY2FjaGUtZW50cnkpKQorCQkJ
ICAoZ290by1jaGFyIChudGggMiBjYWNoZS1lbnRyeSkpKQorCQkgICAgICAoYy1sYW9taWItcHV0
LWNhY2hlIGNvbnRhaW5pbmctc2V4cAorCQkJCQkgIHN0YXJ0IChwb2ludCkgc3ViLWJhc3NpZ24t
cCkKKwkJICAgICAgKHNldHEgYnJhY2Vhc3NpZ25wIHN1Yi1iYXNzaWduLXApKSkKKwkJICAgKHQp
KQorCisJCShzZXRxIGJyYWNlYXNzaWducCAoYy1sYW9taWItbG9vcCBsaW0pKQorCQkod2hlbiBs
aW0KKwkJICAoYy1sYW9taWItcHV0LWNhY2hlIGxpbSBzdGFydCAocG9pbnQpIGJyYWNlYXNzaWdu
cCkpKSkpCisKKwkgIChjb25kCisJICAgKGJyYWNlYXNzaWducAorCSAgICA7OyBXZSd2ZSBoaXQg
dGhlIGJlZ2lubmluZyBvZiB0aGUgYWdncmVnYXRlIGxpc3QuCisJICAgIChzZXRxIHBvczIgKHBv
aW50KSkKKwkgICAgKGNvbnMKKwkgICAgIChpZiAoZXEgKGMtYmVnaW5uaW5nLW9mLXN0YXRlbWVu
dC0xIGNvbnRhaW5pbmctc2V4cCkgJ3NhbWUpCisJCSAocG9pbnQpCisJICAgICAgIHBvczIpCisJ
ICAgICAob3IgaW4tcGFyZW4gaW5leHByLWJyYWNlLWxpc3QpKSkKKwkgICAoKGFuZCBhZnRlci10
eXBlLWlkLXBvcworCQkgKHNhdmUtZXhjdXJzaW9uCisJCSAgICh3aGVuIChlcSAoY2hhci1hZnRl
cikgP1w7KQorCQkgICAgIChjLWZvcndhcmQtb3Zlci10b2tlbi1hbmQtd3MgdCkpCisJCSAgIChz
ZXRxIGJ1ZnBvcyAocG9pbnQpKQorCQkgICAod2hlbiAobG9va2luZy1hdCBjLW9wdC08Pi1zZXhw
LWtleSkKKwkJICAgICAoYy1mb3J3YXJkLW92ZXItdG9rZW4tYW5kLXdzKQorCQkgICAgICh3aGVu
IChhbmQgKGVxIChjaGFyLWFmdGVyKSA/PCkKKwkJCQkoYy1nZXQtY2hhci1wcm9wZXJ0eSAocG9p
bnQpICdzeW50YXgtdGFibGUpKQorCQkgICAgICAgKGMtZ28tbGlzdC1mb3J3YXJkIG5pbCBhZnRl
ci10eXBlLWlkLXBvcykKKwkJICAgICAgIChjLWZvcndhcmQtc3ludGFjdGljLXdzKSkpCisJCSAg
IChpZiAoYW5kIChub3QgKGVxIChwb2ludCkgYWZ0ZXItdHlwZS1pZC1wb3MpKQorCQkJICAgIChv
ciAobm90IChsb29raW5nLWF0IGMtY2xhc3Mta2V5KSkKIAkJCQkoc2F2ZS1leGN1cnNpb24KLQkJ
CQkgIChnb3RvLWNoYXIgKGNhciByZXMpKQotCQkJCSAgKGMtZG8tZGVjbGFyYXRvcnMKLQkJCQkg
ICAocG9pbnQtbWF4KSB0IG5pbCBuaWwKLQkJCQkgICAobGFtYmRhIChpZC1zdGFydCBfaWQtZW5k
IF90b2sgX25vdC10b3AgX2Z1bmMgX2luaXQpCi0JCQkJICAgICAoY29uZAotCQkJCSAgICAgICgo
PiBpZC1zdGFydCBhZnRlci10eXBlLWlkLXBvcykKLQkJCQkgICAgICAgKHRocm93ICdmaW5kLWRl
Y2wgbmlsKSkKLQkJCQkgICAgICAoKGVxIGlkLXN0YXJ0IGFmdGVyLXR5cGUtaWQtcG9zKQotCQkJ
CSAgICAgICAodGhyb3cgJ2ZpbmQtZGVjbCB0KSkpKSkKLQkJCQkgIG5pbCkpKSkpKQotCQkgICAo
c2F2ZS1leGN1cnNpb24KLQkJICAgICAoZ290by1jaGFyIHN0YXJ0KQotCQkgICAgIChub3QgKGMt
bG9va2luZy1hdC1zdGF0ZW1lbnQtYmxvY2spKSkpKSkKLQkgIChjb25zIGJ1ZnBvcyAob3IgaW4t
cGFyZW4gaW5leHByLWJyYWNlLWxpc3QpKSkKLQkgKChvciAoZXEgKGNoYXItYWZ0ZXIpID9cOykK
LQkgICAgICA7OyBCcmFjZSBsaXN0cyBjYW4ndCBjb250YWluIGEgc2VtaWNvbG9uLCBzbyB3ZSdy
ZSBkb25lLgotCSAgICAgIChzYXZlLWV4Y3Vyc2lvbgotCQkoYy1iYWNrd2FyZC1zeW50YWN0aWMt
d3MpCi0JCShlcSAoY2hhci1iZWZvcmUpID99KSkKLQkgICAgICA7OyBUaGV5IGFsc28gY2FuJ3Qg
Y29udGFpbiBhIGJhcmUgfSwgd2hpY2ggaXMgcHJvYmFibHkgdGhlIGVuZAotCSAgICAgIDs7IG9m
IGEgZnVuY3Rpb24uCi0JICAgICAgKQotCSAgbmlsKQotCSAoKGFuZCAoc2V0cSBtYWNyby1zdGFy
dCAocG9pbnQpKQotCSAgICAgICAoYy1mb3J3YXJkLXRvLWNwcC1kZWZpbmUtYm9keSkKLQkgICAg
ICAgKGVxIChwb2ludCkgc3RhcnQpKQotCSAgOzsgV2UndmUgYSBtYWNybyB3aG9zZSBleHBhbnNp
b24gc3RhcnRzIHdpdGggdGhlICd7Jy4KLQkgIDs7IEhldXJpc3RpY2FsbHksIGlmIHdlIGhhdmUg
YSAnOycgaW4gaXQgd2UndmUgbm90IGdvdCBhCi0JICA7OyBicmFjZSBsaXN0LCBvdGhlcndpc2Ug
d2UgaGF2ZS4KLQkgIChsZXQgKChtYWNyby1lbmQgKHByb2duIChjLWVuZC1vZi1tYWNybykgKHBv
aW50KSkpKQotCSAgICAoZ290by1jaGFyIHN0YXJ0KQotCSAgICAoZm9yd2FyZC1jaGFyKQotCSAg
ICAoaWYgKGFuZCAoYy1zeW50YWN0aWMtcmUtc2VhcmNoLWZvcndhcmQgIls7LF0iIG1hY3JvLWVu
ZCB0IHQpCi0JCSAgICAgKGVxIChjaGFyLWJlZm9yZSkgP1w7KSkKLQkJbmlsCi0JICAgICAgKGNv
bnMgbWFjcm8tc3RhcnQgbmlsKSkpKSA7ICgyMDE2LTA4LTMwKTogTGF6eSEgV2UgaGF2ZSBubwor
CQkJCSAgKGdvdG8tY2hhciAobWF0Y2gtZW5kIDEpKQorCQkJCSAgKGMtZm9yd2FyZC1zeW50YWN0
aWMtd3MpCisJCQkJICAobm90IChlcSAocG9pbnQpIGFmdGVyLXR5cGUtaWQtcG9zKSkpKSkKKwkJ
ICAgICAgIChwcm9nbgorCQkJIChzZXRxIHJlcworCQkJICAgICAgIChjLWZvcndhcmQtZGVjbC1v
ci1jYXN0LTEgKGMtcG9pbnQgJ2Jvc3dzKQorCQkJCQkJCSBuaWwgbmlsKSkKKwkJCSAoYW5kIChj
b25zcCByZXMpCisJCQkgICAgICAoY29uZAorCQkJICAgICAgICgoZXEgKGNhciByZXMpIGFmdGVy
LXR5cGUtaWQtcG9zKSkKKwkJCSAgICAgICAoKD4gKGNhciByZXMpIGFmdGVyLXR5cGUtaWQtcG9z
KSBuaWwpCisJCQkgICAgICAgKHQKKwkJCQkoY2F0Y2ggJ2ZpbmQtZGVjbAorCQkJCSAgKHNhdmUt
ZXhjdXJzaW9uCisJCQkJICAgIChnb3RvLWNoYXIgKGNhciByZXMpKQorCQkJCSAgICAoYy1kby1k
ZWNsYXJhdG9ycworCQkJCSAgICAgKHBvaW50LW1heCkgdCBuaWwgbmlsCisJCQkJICAgICAobGFt
YmRhIChpZC1zdGFydCBfaWQtZW5kIF90b2sgX25vdC10b3AgX2Z1bmMgX2luaXQpCisJCQkJICAg
ICAgIChjb25kCisJCQkJCSgoPiBpZC1zdGFydCBhZnRlci10eXBlLWlkLXBvcykKKwkJCQkJICh0
aHJvdyAnZmluZC1kZWNsIG5pbCkpCisJCQkJCSgoZXEgaWQtc3RhcnQgYWZ0ZXItdHlwZS1pZC1w
b3MpCisJCQkJCSAodGhyb3cgJ2ZpbmQtZGVjbCB0KSkpKSkKKwkJCQkgICAgbmlsKSkpKSkpCisJ
CSAgICAgKHNhdmUtZXhjdXJzaW9uCisJCSAgICAgICAoZ290by1jaGFyIHN0YXJ0KQorCQkgICAg
ICAgKG5vdCAoYy1sb29raW5nLWF0LXN0YXRlbWVudC1ibG9jaykpKSkpKQorCSAgICAoY29ucyBi
dWZwb3MgKG9yIGluLXBhcmVuIGluZXhwci1icmFjZS1saXN0KSkpCisJICAgKChvciAoZXEgKGNo
YXItYWZ0ZXIpID9cOykKKwkJOzsgQnJhY2UgbGlzdHMgY2FuJ3QgY29udGFpbiBhIHNlbWljb2xv
biwgc28gd2UncmUgZG9uZS4KKwkJKHNhdmUtZXhjdXJzaW9uCisJCSAgKGMtYmFja3dhcmQtc3lu
dGFjdGljLXdzKQorCQkgIChlcSAoY2hhci1iZWZvcmUpID99KSkKKwkJOzsgVGhleSBhbHNvIGNh
bid0IGNvbnRhaW4gYSBiYXJlIH0sIHdoaWNoIGlzIHByb2JhYmx5IHRoZSBlbmQKKwkJOzsgb2Yg
YSBmdW5jdGlvbi4KKwkJKQorCSAgICBuaWwpCisJICAgKChhbmQgKHNldHEgbWFjcm8tc3RhcnQg
KHBvaW50KSkKKwkJIChjLWZvcndhcmQtdG8tY3BwLWRlZmluZS1ib2R5KQorCQkgKGVxIChwb2lu
dCkgc3RhcnQpKQorCSAgICA7OyBXZSd2ZSBhIG1hY3JvIHdob3NlIGV4cGFuc2lvbiBzdGFydHMg
d2l0aCB0aGUgJ3snLgorCSAgICA7OyBIZXVyaXN0aWNhbGx5LCBpZiB3ZSBoYXZlIGEgJzsnIGlu
IGl0IHdlJ3ZlIG5vdCBnb3QgYQorCSAgICA7OyBicmFjZSBsaXN0LCBvdGhlcndpc2Ugd2UgaGF2
ZS4KKwkgICAgKGxldCAoKG1hY3JvLWVuZCAocHJvZ24gKGMtZW5kLW9mLW1hY3JvKSAocG9pbnQp
KSkpCisJICAgICAgKGdvdG8tY2hhciBzdGFydCkKKwkgICAgICAoZm9yd2FyZC1jaGFyKQorCSAg
ICAgIChpZiAoYW5kIChjLXN5bnRhY3RpYy1yZS1zZWFyY2gtZm9yd2FyZCAiWzssXSIgbWFjcm8t
ZW5kIHQgdCkKKwkJICAgICAgIChlcSAoY2hhci1iZWZvcmUpID9cOykpCisJCSAgbmlsCisJCShj
b25zIG1hY3JvLXN0YXJ0IG5pbCkpKSkgOyAoMjAxNi0wOC0zMCk6IExhenkhIFdlIGhhdmUgbm8K
IAkJCQkJOyBsYW5ndWFnZXMgd2hlcmUKIAkJCQkJOyBgYy1vcHQtaW5leHByLWJyYWNlLWxpc3Qt
a2V5JyBpcwogCQkJCQk7IG5vbi1uaWwgYW5kIHdlIGhhdmUgbWFjcm9zLgotCSAodCB0KSkpKQkJ
CTs7IFRoZSBjYWxsZXIgY2FuIGdvIHVwIG9uZSBsZXZlbC4KLSAgICAgICkpKQorCSAgICh0IHQp
KSkpCQkJOzsgVGhlIGNhbGxlciBjYW4gZ28gdXAgb25lIGxldmVsLgorCSkpKSkKIAogKGRlZnVu
IGMtaW5zaWRlLWJyYWNlbGlzdC1wIChjb250YWluaW5nLXNleHAgcGFyZW4tc3RhdGUgYWNjZXB0
LWluLXBhcmVuKQogICA7OyByZXR1cm4gdGhlIGJ1ZmZlciBwb3NpdGlvbiBvZiB0aGUgYmVnaW5u
aW5nIG9mIHRoZSBicmFjZSBsaXN0IHN0YXRlbWVudApAQCAtMTM4NjMsNiArMTM4NjUsNzIgQEAK
IAkgKGxvb2tpbmctYXQgYy1wcmUtbGFtYmRhLXRva2Vucy1yZSkpKQogICAgKG5vdCAoYy1pbi1s
aXRlcmFsKSkpKQogCisoZGVmdW4gYy1sb29raW5nLWF0LWMrKy1sYW1iZGEtZXhwcmVzc2lvbiAo
Jm9wdGlvbmFsIGxpbSkKKyAgOzsgSWYgcG9pbnQgaXMgYXQgdGhlIFsgb3BlbmluZyBhIEMrKyBs
YW1iZGEgZXhwcmVzc2lvbnMncyBjYXB0dXJlIGxpc3QsCisgIDs7IGFuZCB0aGUgbGFtYmRhIGV4
cHJlc3Npb24gaXMgY29tcGxldGUsIHJldHVybiB0aGUgcG9zaXRpb24gb2YgdGhlIHsgd2hpY2gK
KyAgOzsgb3BlbnMgdGhlIGJvZHkgZm9ybSwgb3RoZXJ3aXNlIHJldHVybiBuaWwuICBMSU0gaXMg
dGhlIGxpbWl0IGZvciBmb3J3YXJkCisgIDs7IHNlYXJjaGluZyBmb3IgdGhlIHsuCisgIChsZXQg
KChoZXJlIChwb2ludCkpCisJZ290LXBhcmFtcykKKyAgICAod2hlbiAoYW5kIChjLWxvb2tpbmct
YXQtYysrLWxhbWJkYS1jYXB0dXJlLWxpc3QpCisJICAgICAgIChjLWdvLWxpc3QtZm9yd2FyZCBu
aWwgbGltKSkKKyAgICAgIChjLWZvcndhcmQtc3ludGFjdGljLXdzIGxpbSkKKyAgICAgICh3aGVu
IChjLWZvcndhcmQtPD4tYXJnbGlzdCB0KQorCShjLWZvcndhcmQtc3ludGFjdGljLXdzIGxpbSkK
Kwkod2hlbiAobG9va2luZy1hdCAicmVxdWlyZXNcXChbXmEtekEtWjAtOV9dXFx8JFxcKSIpCisJ
ICAoYy1mb3J3YXJkLWMrKy1yZXF1aXJlcy1jbGF1c2UgbGltIG5pbCkpKQorICAgICAgKHdoZW4g
KGFuZCAoZXEgKGNoYXItYWZ0ZXIpID9cKCkKKwkJIChjLWdvLWxpc3QtZm9yd2FyZCBuaWwgbGlt
KSkKKwkoc2V0cSBnb3QtcGFyYW1zIHQpCisJKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MgbGltKSkK
KyAgICAgICh3aGlsZSAoYW5kIGMtbGFtYmRhLXNwZWMta2V5IChsb29raW5nLWF0IGMtbGFtYmRh
LXNwZWMta2V5KSkKKwkoZ290by1jaGFyIChtYXRjaC1lbmQgMSkpCisJKGMtZm9yd2FyZC1zeW50
YWN0aWMtd3MgbGltKSkKKyAgICAgIChsZXQgKGFmdGVyLWV4Y2VwdC1wb3MpCisJKGNvbmQKKwkg
KChzYXZlLWV4Y3Vyc2lvbgorCSAgICAoYW5kIChsb29raW5nLWF0ICJ0aHJvd1xcKFteYS16QS1a
MC05X11cXHwkXFwpIikKKwkJIChwcm9nbiAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMSkp
CisJCQkoYy1mb3J3YXJkLXN5bnRhY3RpYy13cyBsaW0pCisJCQkoZXEgKGNoYXItYWZ0ZXIpID9c
KCkpCisJCSAoYy1nby1saXN0LWZvcndhcmQgbmlsIGxpbSkKKwkJIChwcm9nbiAoYy1mb3J3YXJk
LXN5bnRhY3RpYy13cyBsaW0pCisJCQkoc2V0cSBhZnRlci1leGNlcHQtcG9zIChwb2ludCkpKSkp
CisJICAoZ290by1jaGFyIGFmdGVyLWV4Y2VwdC1wb3MpCisJICAoYy1mb3J3YXJkLXN5bnRhY3Rp
Yy13cyBsaW0pKQorCSAoKGxvb2tpbmctYXQgIm5vZXhjZXB0XFwoW15hLXpBLVowLTlfXVxcfCRc
XCkiKQorCSAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDEpKQorCSAgKGMtZm9yd2FyZC1z
eW50YWN0aWMtd3MgbGltKQorCSAgKHNldHEgYWZ0ZXItZXhjZXB0LXBvcyAocG9pbnQpKQorCSAg
KHdoZW4gKGFuZCAoZXEgKGNoYXItYWZ0ZXIpID9cKCkKKwkJICAgICAoYy1nby1saXN0LWZvcndh
cmQgbmlsIGxpbSkpCisJICAgIChjLWZvcndhcmQtc3ludGFjdGljLXdzIGxpbSkpKSkpCisgICAg
ICAoYW5kIChsb29raW5nLWF0IGMtaGFza2VsbC1vcC1yZSkKKwkgICAoZ290by1jaGFyIChtYXRj
aC1lbmQgMCkpCisJICAgKHByb2duIChjLWZvcndhcmQtc3ludGFjdGljLXdzIGxpbSkKKwkJICAo
Yy1mb3J3YXJkLXR5cGUgdCkpKQk7IHQgaXMgQlJBQ0UtQkxPQ0stVE9PLgorICAgICAgKGFuZCBn
b3QtcGFyYW1zCisJICAgKGxvb2tpbmctYXQgInJlcXVpcmVzXFwoW15hLXpBLVowLTlfXVxcfCRc
XCkiKQorCSAgIChjLWZvcndhcmQtYysrLXJlcXVpcmVzLWNsYXVzZSBsaW0gbmlsKSkKKyAgICAg
IChwcm9nMSAoYW5kIChlcSAoY2hhci1hZnRlcikgP3spCisJCSAgKHBvaW50KSkKKwkoZ290by1j
aGFyIGhlcmUpKSkpKQorCisoZGVmdW4gYy1iYWNrd2FyZC1vdmVyLWxhbWJkYS1leHByZXNzaW9u
ICgmb3B0aW9uYWwgbGltKQorICA7OyBQb2ludCBpcyBhdCBhIHsuICBNb3ZlIGJhY2sgb3ZlciB0
aGUgbGFtYmRhIGV4cHJlc3Npb24gdGhpcyBpcyBhIHBhcnQgb2YsCisgIDs7IHN0b3BwaW5nIGF0
IHRoZSBbIG9mIHRoZSBjYXB0dXJlIGxpc3QsIGlmIHRoaXMgaXMgdGhlIGNhc2UsIHJldHVybmlu
ZworICA7OyB0aGUgcG9zaXRpb24gb2YgdGhhdCBvcGVuaW5nIGJyYWNrZXQuICBJZiB3ZSdyZSBu
b3QgYXQgc3VjaCBhIGxpc3QsIGxlYXZlCisgIDs7IHBvaW50IHVuY2hhbmdlZCBhbmQgcmV0dXJu
IG5pbC4KKyAgKGxldCAoKGhlcmUgKHBvaW50KSkpCisgICAgKGMtc3ludGFjdGljLXNraXAtYmFj
a3dhcmQgIl47fV0iIGxpbSB0KQorICAgIChpZiAoYW5kIChlcSAoY2hhci1iZWZvcmUpID9cXSkK
KwkgICAgIChjLWdvLWxpc3QtYmFja3dhcmQgbmlsIGxpbSkKKwkgICAgIChlcSAoYy1sb29raW5n
LWF0LWMrKy1sYW1iZGEtZXhwcmVzc2lvbiAoMSsgaGVyZSkpCisJCSBoZXJlKSkKKwkocG9pbnQp
CisgICAgICAoZ290by1jaGFyIGhlcmUpCisgICAgICBuaWwpKSkKKwogKGRlZnVuIGMtYysrLXZz
ZW1pLXAgKCZvcHRpb25hbCBwb3MpCiAgIDs7IEMrKyBPbmx5IC0gSXMgdGhlcmUgYSAidmlydHVh
bCBzZW1pY29sb24iIGF0IFBPUyBvciBwb2ludD8KICAgOzsgKFNlZSBjYy1kZWZzLmVsIGZvciBm
dWxsIGRldGFpbHMgb2YgInZpcnR1YWwgc2VtaWNvbG9ucyIuKQpAQCAtMTM4NzAsMTEgKzEzOTM4
LDE3IEBACiAgIDs7IFRoaXMgaXMgdHJ1ZSB3aGVuIHBvaW50IGlzIGF0IHRoZSBsYXN0IG5vbiBz
eW50YWN0aWMgV1MgcG9zaXRpb24gb24gdGhlCiAgIDs7IGxpbmUsIGFuZCBlaXRoZXIgdGhlcmUg
aXMgYSAibWFjcm8gd2l0aCBzZW1pY29sb24iIGp1c3QgYmVmb3JlIGl0IChzZWUKICAgOzsgYGMt
YXQtbWFjcm8tdnNlbWktcCcpIG9yIHRoZXJlIGlzIGEgInJlcXVpcmVzIiBjbGF1c2Ugd2hpY2gg
ZW5kcyB0aGVyZS4KLSAgKGxldCAocmVzKQotICAgIChjb25kCi0gICAgICgoc2V0cSByZXMgKGMt
aW4tcmVxdWlyZXMtb3ItYXQtZW5kLW9mLWNsYXVzZSBwb3MpKQotICAgICAgKGFuZCByZXMgKGVx
IChjZHIgcmVzKSB0KSkpCi0gICAgICgoYy1hdC1tYWNyby12c2VtaS1wKSkpKSkKKzs7OzsgVEVN
UCBDT01NRU5URUQgT1VUIFNUT1VHSCwgMjAyNC0wOS0wMQorICA7OyAobGV0IChyZXMpCisgIDs7
ICAgKGNvbmQKKyAgICAgOzsgKChzZXRxIHJlcyAoYy1pbi1yZXF1aXJlcy1vci1hdC1lbmQtb2Yt
Y2xhdXNlIHBvcykpCisgICAgIDs7ICAoYW5kIHJlcyAoZXEgKGNkciByZXMpIHQpKSkKKyAgICAg
OzsgKAorOzs7OyBFTkQgT0YgVENPIFNUT1VHSAorICAgICAgKGMtYXQtbWFjcm8tdnNlbWktcCBw
b3MJCTsgUE9TIGlzIE5FVyBTVE9VR0gsIDIwMjQtMDktMDEKKwkJCSAgICAgKQorCQkJICAgICAg
OzsgKSkpIFRFTVAgQ09NTUVOVEVEIE9VVCBTVE9VR0gsIDIwMjQtMDktMDEKKykKIAogKGRlZnVu
IGMtYXQtbWFjcm8tdnNlbWktcCAoJm9wdGlvbmFsIHBvcykKICAgOzsgSXMgdGhlcmUgYSAidmly
dHVhbCBzZW1pY29sb24iIGF0IFBPUyBvciBwb2ludD8KZGlmZiAtciA0OGFkNjYxYTJkN2QgY2Mt
bGFuZ3MuZWwKLS0tIGEvY2MtbGFuZ3MuZWwJTW9uIEp1bCAyMiAxMjowOTozNCAyMDI0ICswMDAw
CisrKyBiL2NjLWxhbmdzLmVsCU1vbiBTZXAgMDkgMTQ6NDk6NTUgMjAyNCArMDAwMApAQCAtMjYz
OSw2ICsyNjM5LDE5IEBACiAgIHQgKGMtbWFrZS1rZXl3b3Jkcy1yZSB0IChjLWxhbmctY29uc3Qg
Yy1lcXVhbHMtdHlwZS1jbGF1c2Uta3dkcykpKQogKGMtbGFuZy1kZWZ2YXIgYy1lcXVhbHMtdHlw
ZS1jbGF1c2Uta2V5IChjLWxhbmctY29uc3QgYy1lcXVhbHMtdHlwZS1jbGF1c2Uta2V5KSkKIAor
KGMtbGFuZy1kZWZjb25zdCBjLWxhbWJkYS1zcGVjLWt3ZHMKKyAgIktleXdvcmRzIHdoaWNoIGFy
ZSBzcGVjaWZpZXJzIG9mIGNlcnRhaW4gZWxlbWVudHMgb2YgYSBDKysgbGFtYmRhIGZ1bmN0aW9u
LgorVGhpcyBpcyBvbmx5IHVzZWQgaW4gQysrIE1vZGUuIgorICB0IG5pbAorICBjKysgJygibXV0
YWJsZSIgImNvbnN0ZXhwciIgImNvbnN0ZXZhbCIgInN0YXRpYyIpKQorCisoYy1sYW5nLWRlZmNv
bnN0IGMtbGFtYmRhLXNwZWMta2V5CisgIDs7IEEgcmVndWxhciBleHByZXNzaW9uIHdoaWNoIG1h
dGNoZXMgYSBtZW1iZXIgb2YgYGMtbGFtYmRhLXNwZWMta3dkcycsCisgIDs7IG9yIG5pbC4KKyAg
dCAoaWYgKGMtbGFuZy1jb25zdCBjLWxhbWJkYS1zcGVjLWt3ZHMpCisJKGMtbWFrZS1rZXl3b3Jk
cy1yZSB0IChjLWxhbmctY29uc3QgYy1sYW1iZGEtc3BlYy1rd2RzKSkpKQorKGMtbGFuZy1kZWZ2
YXIgYy1sYW1iZGEtc3BlYy1rZXkgKGMtbGFuZy1jb25zdCBjLWxhbWJkYS1zcGVjLWtleSkpCisK
IChjLWxhbmctZGVmY29uc3QgYy1lcXVhbHMtbm9udHlwZS1kZWNsLWt3ZHMKICAgIktleXdvcmRz
IHdoaWNoIGFyZSBmb2xsb3dlZCBieSBhbiBpZGVudGlmaWVyIHRoZW4gYW4gXCI9XCIKIHNpZ24s
IHdoaWNoIGRlY2xhcmVzIHRoZSBpZGVudGlmaWVyIHRvIGJlIHNvbWV0aGluZyBvdGhlciB0aGFu
IGEKCgo+IEhhdmUgYSBsb3ZlbHkgZGF5Lgo+IC0tIAo+IEFyc2VuIEFyc2Vub3ZpxIcKCi0tIApB
bGFuIE1hY2tlbnppZSAoTnVyZW1iZXJnLCBHZXJtYW55KS4KCgoK