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

Alan Mackenzie <[email protected]> Sat, 31 Aug 2024 17:01:07 +0000
Newsgroups gmane.emacs.cc-mode.general
Message-ID <ZtNMU7yz4ApSQPIK@ACM>
SGVsbG8gYWdhaW4sIEFyc2VuLgoKT24gU2F0LCBBdWcgMzEsIDIwMjQgYXQgMDI6NTQ6MDEgKzAy
MDAsIEFyc2VuIEFyc2Vub3ZpxIcgd3JvdGU6Cj4gSGVsbG8sIEFsYW4sCgo+IEFsYW4gTWFja2Vu
emllIDxhY21AbXVjLmRlPiB3cml0ZXM6Cgo+ID4gSGVsbG8sIEFyc2VuLgoKPiA+IEEgc2hvcnQg
cHJvZ3Jlc3MgcmVwb3J0LgoKPiA+IE9uIFdlZCwgQXVnIDIxLCAyMDI0IGF0IDIyOjQwOjAyICsw
MjAwLCBBcnNlbiBBcnNlbm92acSHIHdyb3RlOgo+ID4+IEhlbGxvIEFsYW4sCgo+ID4+IEFsYW4g
TWFja2VuemllIDxhY21AbXVjLmRlPiB3cml0ZXM6Cj4gPj4gPiBUaGFua3MgZm9yIHRoZSBidWcg
cmVwb3J0IQoKPiA+PiBNeSBwbGVhc3VyZS4gIFRoYW5rcyBmb3IgYmVpbmcgYXMgZmFzdCBhcyBh
bHdheXMuCgo+ID4gSSBhcG9sb2dpc2UgZm9yIG5vdCBoYXZpbmcgYmVlbiBhcyBmYXN0IG92ZXIg
dGhlIGxhc3QgZmV3IGRheXMuICBQYXJ0bHksCj4gPiBJJ20gYnJpbmdpbmcgdXAgYSBuZXcgY29t
cHV0ZXIsIHdoaWNoIG5ldmVyIGdvZXMgYXMgZmFzdCBhcyBvbmUgd291bGQKPiA+IGxpa2UuCgo+
IE5vIHdvcnJpZXMsIG9mIGNvdXJzZSEgIEhvcGUgdGhlIHNldHVwIHdlbnQgd2VsbC4KCkl0J3Mg
Z29pbmcgd2VsbCwgdGhhbmtzISAgQXQgdGhlIGN1cnJlbnQgcmF0ZSBvZiBwcm9ncmVzcywgSSds
bCBoYXZlIG15Cm1haWwgc2V0dXAgc2V0IHVwIGJ5IHRoaXMgdGltZSBuZXh0IHdlZWssIGFuZCB0
aGF0IGlzIHRoZSBwb2ludCBhdAp3aGljaCwgYXQgbGVhc3QgZm9yIG1lLCBteSBuZXcgbWFjaGlu
ZSBiZWNvbWVzIG15IGN1cnJlbnQgbWFjaGluZS4KCj4gPiBCdXQgbWFpbmx5IEknbSBzdHJ1Z2ds
aW5nIHdpdGggdGhlIHVuZmF0aG9tYWJsZSBjb21wbGV4aXR5IG9mIEMrKyBsYW1iZGEKPiA+IGZ1
bmN0aW9ucywgYXMgZG9jdW1lbnRlZCBvbgo+ID4gaHR0cHM6Ly9lbi5jcHByZWZlcmVuY2UuY29t
L3cvY3BwL2xhbmd1YWdlL2xhbWJkYS4KCj4gSXQgc2hvdWxkIGJlIHF1aXRlIHNpbXBsZSAtIGp1
c3QgYSBmZXcgb3B0aW9uYWwgcHJvZHVjdGlvbnMgcHJlY2VkZWQgYnkKPiBhbiBpbnRyb2R1Y2Vy
IHByb2R1Y3Rpb24gKHNlZSBodHRwczovL2VlbC5pcy9jKytkcmFmdC9leHByLnByaW0ubGFtYmRh
Cj4gZm9yIGEgZm9ybWFsIGdyYW1tYXIgLSB0aGlzIGlzIHRoZSB0ZXh0IGZyb20gdGhlIHN0YW5k
YXJkIGRyYWZ0KS4KCj4gPiBJbiBteSBub3Qgc28gaHVtYmxlIG9waW5pb24sIHRoZSBDKysgc3Rh
bmRhcmRzIHBlb3BsZSBoYXZlIGNvbXBsZXRlbHkKPiA+IGxvc3QgdGhlIHBsb3QuCgo+IFNob3Vs
ZCBoZWxwIGJlIG5lY2Vzc2FyeSwgSSBkbyB3b3JrIG9uIEcrKyBzbyBJJ20gcXVpdGUgZmFtaWxp
YXIgd2l0aAo+IHRoZSBsYW5ndWFnZS4gIEZlZWwgZnJlZSB0byBwaW5nIG1lLgoKVGhhbmtzISAg
SXQncyBqdXN0IHRoYXQgdGhlIGV4cGxhbmF0b3J5IHRleHQgb24gZW4uY3BwcmVmZXJlbmNlLmNv
bQphYm91dCBqdXN0IGxhbWJkYSBmdW5jdGlvbnMgdGFrZXMgMjAgc2Nyb2xscyBvZiB+NDUgbGlu
ZXMgcGVyIHNjcm9sbCwKY29taW5nIG91dCBhdCBtYW55IGh1bmRyZWRzIG9mIGxpbmVzLCBqdXN0
IGZvciBsYW1iZGEgZnVuY3Rpb25zLiAgSSBmZWVsCnRoYXQgdGhlIGVudGlyZSBsYW5ndWFnZSBw
YXJ0IG9mIEVtYWNzIExpc3AgY291bGQgZml0IGludG8gdGhhdCBxdWl0ZQpjb21mb3J0YWJseSwg
YXQgdGhlIHNhbWUgZGVuc2l0eS4KCj4gPiBUaGUgbnVtYmVyIG9mIHNwZWNpYWwgY2FzZXMgaW4g
anVzdCB0aGUgc3ludGF4LCBhcHBhcmVudGx5IGp1c3QgdG8KPiA+IHNhdmUgYSBmZXcgY2hhcmFj
dGVycyBmcm9tIGEgcHJvZ3JhbSdzIHRleHQsIGhhcyBnb3QgYmV5b25kIHRoZSBwb2ludAo+ID4g
d2hlcmUgYW55Ym9keSBjYW4gZ3Jhc3AgaXQuICBOb2JvZHkgaW4gdGhpcyBncm91cCBvZiBwZW9w
bGUgYXBwZWFycyB0bwo+ID4gYmUgYWJsZSB0byBzYXkgIlNUT1AhIiwgdGhvdWdoIHNvbWVib2R5
IHNvcmVseSBuZWVkcyB0by4gIEkgZHJlYWQgdG8KPiA+IHRoaW5rIHdoYXQgd2lsbCBiZSBjb21p
bmcgb3V0IGluIEMrKzI2LiAgOi0oCgo+IEl0IHJlYWxseSBzaG91bGRuJ3QgYmUgdGhhdCBiYWQg
LSBJJ2xsIGhlbHAgZGVteXN0aWZ5IGlmIG5lZWQgYmUuCgpUaGFua3MhCgo+ID4gQW55aG93LCBJ
J3ZlIHNwZW50IGFsbCBhZnRlcm5vb24gb24gdGhlIHByb2JsZW0gc28gZmFyLCBhbmQgSSB0aGlu
ayBJIGNhbgo+ID4gc2VlIG15IHdheSB0byBhIHNvbHV0aW9uLiAgSXQgd2lsbCBzdGlsbCB0YWtl
IGEgZmV3IG1vcmUgZGF5cyB5ZXQsIEknbQo+ID4gYWZyYWlkLgoKPiBUaGFuayB5b3UgdmVyeSBt
dWNoISAgTXkgYXBvbG9naWVzIGZvciB0aGUgdHJvdWJsZS4KCk5vIGFwb2xvZ2llcyBjYWxsZWQg
Zm9yLiAgWW91IHJhaXNlZCBhIGJ1ZyByZXBvcnQsIGZvciB3aGljaCB0aGFua3MhCgpBbnlob3cs
IEkndmUgZ290IGEgZmlyc3QgdmVyc2lvbiwgaW5jb21wbGV0ZWx5IHRlc3RlZCwgb2YgYSBuZXcg
aGFuZGxpbmcKZm9yIGEgbGFtYmRhIGV4cHJlc3Npb24uICBUaGUgcGF0Y2ggaXMgbm90IG5lYXJs
eSBhcyBiaWcgYXMgaXQgbG9va3MsCnR3byB0aGlyZHMgb2YgaXQgaXMganVzdCByZS1pbmRlbnRp
bmcgYSBsYXJnZSBmdW5jdGlvbiBJIHB1dCBhbiBleHRyYQpgaWYnIGZvcm0gYXJvdW4uCgpXb3Vs
ZCB5b3UgcGxlYXNlIGFwcGx5IHRoaXMgcGF0Y2gsIHdoaWNoIHNob3VsZCBmaXggdGhlIHRlc3Qg
Y2FzZSwgYW5kCnRoZW4gdGVzdCBpdCBvdXQgb24geW91ciByZWFsIEMrKyBjb2RlLCB0aGVuIGxl
dCBtZSBrbm93IGhvdyBpdCdzIGdvbmUuCkknbGwgc2VlIGlmIEkgY2FuIGdldCBzb21lIG5ldyB0
ZXN0IGNhc2VzIHdyaXR0ZW4uICBUaGFua3MhCgoKCmRpZmYgLXIgNDhhZDY2MWEyZDdkIGNjLWVu
Z2luZS5lbAotLS0gYS9jYy1lbmdpbmUuZWwJTW9uIEp1bCAyMiAxMjowOTozNCAyMDI0ICswMDAw
CisrKyBiL2NjLWVuZ2luZS5lbAlTYXQgQXVnIDMxIDE2OjQ0OjM5IDIwMjQgKzAwMDAKQEAgLTEz
MTc4LDIyOSArMTMxNzgsMjIzIEBACiAgIDs7CiAgIDs7IEhlcmUsICJicmFjZSBsaXN0IiBkb2Vz
IG5vdCBpbmNsdWRlIHRoZSBib2R5IG9mIGFuIGVudW0uCiAgIChzYXZlLWV4Y3Vyc2lvbgotICAg
IChsZXQgKChzdGFydCAocG9pbnQpKQotCSAgKGJyYWNlYXNzaWducCAnZG9udGtub3cpCi0JICBp
bmV4cHItYnJhY2UtbGlzdCBidWZwb3MgbWFjcm8tc3RhcnQgcmVzIHBvcyBhZnRlci10eXBlLWlk
LXBvcwotCSAgcG9zMiBpbi1wYXJlbiBwYXJlbnMtYmVmb3JlLWJyYWNlCi0JICBwYXJlbi1zdGF0
ZSBwYXJlbi1wb3MpCi0KLSAgICAgIChzZXRxIHJlcwotCSAgICAob3IgKHByb2duIChjLWJhY2t3
YXJkLXN5bnRhY3RpYy13cykKLQkJICAgICAgIChjLWJhY2stb3Zlci1jb21wb3VuZC1pZGVudGlm
aWVyKSkKLQkJKGMtYmFja3dhcmQtdG9rZW4tMiAxIHQgbGltKSkpCi0gICAgICA7OyBDaGVja3Mg
dG8gZG8gb25seSBvbiB0aGUgZmlyc3Qgc2V4cCBiZWZvcmUgdGhlIGJyYWNlLgotICAgICAgOzsg
SGF2ZSB3ZSBhIEMrKyBpbml0aWFsaXphdGlvbiwgd2l0aG91dCBhbiAiPSI/Ci0gICAgICAoaWYg
KGFuZCAoYy1tYWpvci1tb2RlLWlzICdjKystbW9kZSkKLQkgICAgICAgKGNvbmQKLQkJKChhbmQg
KG9yIChub3QgKG1lbXEgcmVzICcodCAwKSkpCi0JCQkgIChlcSAoY2hhci1hZnRlcikgPywpKQot
CQkgICAgICAoc2V0cSBwYXJlbi1zdGF0ZSAoYy1wYXJzZS1zdGF0ZSkpCi0JCSAgICAgIChzZXRx
IHBhcmVuLXBvcyAoYy1wdWxsLW9wZW4tYnJhY2UgcGFyZW4tc3RhdGUpKQotCQkgICAgICAoZXEg
KGNoYXItYWZ0ZXIgcGFyZW4tcG9zKSA/XCgpKQotCQkgKGdvdG8tY2hhciBwYXJlbi1wb3MpCi0J
CSAoc2V0cSBicmFjZWFzc2lnbnAgJ2MrKy1ub2Fzc2lnbgotCQkgICAgICAgaW4tcGFyZW4gJ2lu
LXBhcmVuKSkKLQkJKChsb29raW5nLWF0IGMtcHJlLWJyYWNlLW5vbi1icmFjZWxpc3Qta2V5KQot
CQkgKHNldHEgYnJhY2Vhc3NpZ25wIG5pbCkpCi0JCSgoYW5kCi0JCSAgKGxvb2tpbmctYXQgYy1m
dW4tbmFtZS1zdWJzdGl0dXRlLWtleSkKLQkJICAobm90IChlcSAoY2hhci1hZnRlciAobWF0Y2gt
ZW5kIDApKSA/XykpKQotCQkgKHNldHEgYnJhY2Vhc3NpZ25wIG5pbCkpCi0JCSgobG9va2luZy1h
dCBjLXJldHVybi1rZXkpKQotCQkoKGFuZCAobG9va2luZy1hdCBjLXN5bWJvbC1zdGFydCkKLQkJ
ICAgICAgKG5vdCAobG9va2luZy1hdCBjLWtleXdvcmRzLXJlZ2V4cCkpKQotCQkgKGlmIChzYXZl
LWV4Y3Vyc2lvbgotCQkgICAgICAgKGFuZCAoemVyb3AgKGMtYmFja3dhcmQtdG9rZW4tMiAxIHQg
bGltKSkKLQkJCSAgICAobG9va2luZy1hdCBjLXByZS1pZC1icmFjZWxpc3Qta2V5KSkpCi0JCSAg
ICAgKHNldHEgYnJhY2Vhc3NpZ25wICdjKystbm9hc3NpZ24pCi0JCSAgIChzZXRxIGFmdGVyLXR5
cGUtaWQtcG9zIChwb2ludCkpKSkKLQkJKChlcSAoY2hhci1hZnRlcikgP1woKQotCQkgKHNldHEg
cGFyZW5zLWJlZm9yZS1icmFjZSB0KQotCQkgOzsgSGF2ZSB3ZSBhIHJlcXVpcmVzIHdpdGggYSBw
YXJlbnRoZXNpcyBsaXN0PwotCQkgKHdoZW4gKHNhdmUtZXhjdXJzaW9uCi0JCQkgKGFuZCAoemVy
b3AgKGMtYmFja3dhcmQtdG9rZW4tMiAxIG5pbCBsaW0pKQotCQkJICAgICAgKGxvb2tpbmctYXQg
Yy1mdW4tbmFtZS1zdWJzdGl0dXRlLWtleSkKLQkJCSAgICAgIChub3QgKGVxIChjaGFyLWFmdGVy
IChtYXRjaC1lbmQgMCkpID9fKSkpKQorICAgICh1bmxlc3MgKGFuZCAoYy1tYWpvci1tb2RlLWlz
ICdjKystbW9kZSkKKwkJIChjLWJhY2t3YXJkLW92ZXItbGFtYmRhLWV4cHJlc3Npb24gbGltKSkK
KyAgICAgIChsZXQgKChzdGFydCAocG9pbnQpKQorCSAgICAoYnJhY2Vhc3NpZ25wICdkb250a25v
dykKKwkgICAgaW5leHByLWJyYWNlLWxpc3QgYnVmcG9zIG1hY3JvLXN0YXJ0IHJlcyBwb3MgYWZ0
ZXItdHlwZS1pZC1wb3MKKwkgICAgcG9zMiBpbi1wYXJlbiA7OyBwYXJlbnMtYmVmb3JlLWJyYWNl
IFNUT1VHSCwgMjAyNC0wOC0zMQorCSAgICBwYXJlbi1zdGF0ZSBwYXJlbi1wb3MpCisKKwkoc2V0
cSByZXMKKwkgICAgICAob3IgKHByb2duIChjLWJhY2t3YXJkLXN5bnRhY3RpYy13cykKKwkJCSAo
Yy1iYWNrLW92ZXItY29tcG91bmQtaWRlbnRpZmllcikpCisJCSAgKGMtYmFja3dhcmQtdG9rZW4t
MiAxIHQgbGltKSkpCisJOzsgQ2hlY2tzIHRvIGRvIG9ubHkgb24gdGhlIGZpcnN0IHNleHAgYmVm
b3JlIHRoZSBicmFjZS4KKwk7OyBIYXZlIHdlIGEgQysrIGluaXRpYWxpemF0aW9uLCB3aXRob3V0
IGFuICI9Ij8KKwkoaWYgKGFuZCAoYy1tYWpvci1tb2RlLWlzICdjKystbW9kZSkKKwkJIChjb25k
CisJCSAgKChhbmQgKG9yIChub3QgKG1lbXEgcmVzICcodCAwKSkpCisJCQkgICAgKGVxIChjaGFy
LWFmdGVyKSA/LCkpCisJCQkoc2V0cSBwYXJlbi1zdGF0ZSAoYy1wYXJzZS1zdGF0ZSkpCisJCQko
c2V0cSBwYXJlbi1wb3MgKGMtcHVsbC1vcGVuLWJyYWNlIHBhcmVuLXN0YXRlKSkKKwkJCShlcSAo
Y2hhci1hZnRlciBwYXJlbi1wb3MpID9cKCkpCisJCSAgIChnb3RvLWNoYXIgcGFyZW4tcG9zKQor
CQkgICAoc2V0cSBicmFjZWFzc2lnbnAgJ2MrKy1ub2Fzc2lnbgorCQkJIGluLXBhcmVuICdpbi1w
YXJlbikpCisJCSAgKChsb29raW5nLWF0IGMtcHJlLWJyYWNlLW5vbi1icmFjZWxpc3Qta2V5KQog
CQkgICAoc2V0cSBicmFjZWFzc2lnbnAgbmlsKSkKLQkJIG5pbCkKLQkJKHQgbmlsKSkKLQkgICAg
ICAgKHNhdmUtZXhjdXJzaW9uCi0JCSAoY29uZAotCQkgICgob3IgKG5vdCAobWVtcSByZXMgJyh0
IDApKSkKLQkJICAgICAgIChlcSAoY2hhci1hZnRlcikgPywpKQotCQkgICAoYW5kIChzZXRxIHBh
cmVuLXN0YXRlIChjLXBhcnNlLXN0YXRlKSkKLQkJCShzZXRxIHBhcmVuLXBvcyAoYy1wdWxsLW9w
ZW4tYnJhY2UgcGFyZW4tc3RhdGUpKQotCQkJKGVxIChjaGFyLWFmdGVyIHBhcmVuLXBvcykgP1wo
KQotCQkJKHNldHEgaW4tcGFyZW4gJ2luLXBhcmVuKQotCQkJKGdvdG8tY2hhciBwYXJlbi1wb3Mp
KSkKLQkJICAoKGxvb2tpbmctYXQgYy1wcmUtYnJhY2Utbm9uLWJyYWNlbGlzdC1rZXkpKQorCQkg
ICgoYW5kCisJCSAgICAobG9va2luZy1hdCBjLWZ1bi1uYW1lLXN1YnN0aXR1dGUta2V5KQorCQkg
ICAgKG5vdCAoZXEgKGNoYXItYWZ0ZXIgKG1hdGNoLWVuZCAwKSkgP18pKSkKKwkJICAgKHNldHEg
YnJhY2Vhc3NpZ25wIG5pbCkpCiAJCSAgKChsb29raW5nLWF0IGMtcmV0dXJuLWtleSkpCiAJCSAg
KChhbmQgKGxvb2tpbmctYXQgYy1zeW1ib2wtc3RhcnQpCi0JCQkobm90IChsb29raW5nLWF0IGMt
a2V5d29yZHMtcmVnZXhwKSkKLQkJCShzYXZlLWV4Y3Vyc2lvbgotCQkJICAoYW5kICh6ZXJvcCAo
Yy1iYWNrd2FyZC10b2tlbi0yIDEgdCBsaW0pKQotCQkJICAgICAgIChsb29raW5nLWF0IGMtcHJl
LWlkLWJyYWNlbGlzdC1rZXkpKSkpKQotCQkgICh0IChzZXRxIGFmdGVyLXR5cGUtaWQtcG9zIChw
b2ludCkpCi0JCSAgICAgbmlsKSkpKQotCSAgKHNldHEgYnJhY2Vhc3NpZ25wICdjKystbm9hc3Np
Z24pKQotCi0gICAgICAod2hlbiAoYW5kIGMtb3B0LWluZXhwci1icmFjZS1saXN0LWtleQotCQkg
KGVxIChjaGFyLWFmdGVyKSA/XFspKQotCTs7IEluIEphdmEsIGFuIGluaXRpYWxpemF0aW9uIGJy
YWNlIGxpc3QgbWF5IGZvbGxvdwotCTs7IGRpcmVjdGx5IGFmdGVyICJuZXcgRm9vW10iLCBzbyBj
aGVjayBmb3IgYSAibmV3IgotCTs7IGVhcmxpZXIuCi0JKHdoaWxlIChlcSBicmFjZWFzc2lnbnAg
J2RvbnRrbm93KQotCSAgKHNldHEgYnJhY2Vhc3NpZ25wCi0JCShjb25kICgoLz0gKGMtYmFja3dh
cmQtdG9rZW4tMiAxIHQgbGltKSAwKSBuaWwpCi0JCSAgICAgICgobG9va2luZy1hdCBjLW9wdC1p
bmV4cHItYnJhY2UtbGlzdC1rZXkpCi0JCSAgICAgICAoc2V0cSBpbmV4cHItYnJhY2UtbGlzdCB0
KQotCQkgICAgICAgdCkKLQkJICAgICAgKChsb29raW5nLWF0ICJcXHN3XFx8XFxzX1xcfFsuW10i
KQotCQkgICAgICAgOzsgQ2Fycnkgb24gbG9va2luZyBpZiB0aGlzIGlzIGFuCi0JCSAgICAgICA7
OyBpZGVudGlmaWVyIChtYXkgY29udGFpbiAiLiIgaW4gSmF2YSkKLQkJICAgICAgIDs7IG9yIGFu
b3RoZXIgIltdIiBzZXhwLgotCQkgICAgICAgJ2RvbnRrbm93KQotCQkgICAgICAodCBuaWwpKSkp
KQotCi0gICAgICAoc2V0cSBwb3MgKHBvaW50KSkKLSAgICAgIChjb25kCi0gICAgICAgKChub3Qg
YnJhY2Vhc3NpZ25wKQotCW5pbCkKLSAgICAgICAoKGFuZCBhZnRlci10eXBlLWlkLXBvcwotCSAg
ICAgKGdvdG8tY2hhciBhZnRlci10eXBlLWlkLXBvcykKLQkgICAgIChzZXRxIHJlcyAoYy1iYWNr
LW92ZXItbWVtYmVyLWluaXRpYWxpemVycykpCi0JICAgICAoZ290by1jaGFyIHJlcykKLQkgICAg
IChlcSAoY2FyIChjLWJlZ2lubmluZy1vZi1kZWNsLTEgbGltKSkgJ3NhbWUpKQotCShjb25zIChw
b2ludCkgbmlsKSkJCTsgUmV0dXJuIHZhbHVlLgotCi0gICAgICAgKChhbmQgYWZ0ZXItdHlwZS1p
ZC1wb3MKLQkgICAgIChwcm9nbgotCSAgICAgICAoYy1iYWNrd2FyZC1zeW50YWN0aWMtd3MpCi0J
ICAgICAgIChlcSAoY2hhci1iZWZvcmUpID9cKCkpKQotCTs7IFNpbmdsZSBpZGVudGlmaWVyIGJl
dHdlZW4gJygnIGFuZCAneycuICBXZSBoYXZlIGEgYnJhY2VsaXN0LgotCShjb25zIGFmdGVyLXR5
cGUtaWQtcG9zICdpbi1wYXJlbikpCi0KLSAgICAgICA7OyBBcmUgd2UgYXQgdGhlIHBhcmVucyBv
ZiBhIEMrKyBsYW1iZGEgZXhwcmVzc2lvbj8KLSAgICAgICAoKGFuZCBwYXJlbnMtYmVmb3JlLWJy
YWNlCi0JICAgICAoc2F2ZS1leGN1cnNpb24KLQkgICAgICAgKGFuZAotCQkoemVyb3AgKGMtYmFj
a3dhcmQtdG9rZW4tMiAxIHQgbGltKSkKLQkJKGMtbG9va2luZy1hdC1jKystbGFtYmRhLWNhcHR1
cmUtbGlzdCkpKSkKLQluaWwpCQkJICAgICA7IGEgbGFtYmRhIGV4cHJlc3Npb24gaXNuJ3QgYSBi
cmFjZSBsaXN0LgotCi0gICAgICAgKHQKLQkoZ290by1jaGFyIHBvcykKLQkod2hlbiAoZXEgYnJh
Y2Vhc3NpZ25wICdkb250a25vdykKLQkgIChsZXQqICgoY2FjaGUtZW50cnkgKGFuZCBjb250YWlu
aW5nLXNleHAKLQkJCQkgICAoYy1sYW9taWItZ2V0LWNhY2hlIGNvbnRhaW5pbmctc2V4cCBwb3Mp
KSkKLQkJIChsaW0yIChvciAoY2FkciBjYWNoZS1lbnRyeSkgbGltKSkKLQkJIHN1Yi1iYXNzaWdu
LXApCi0JICAgIChpZiBjYWNoZS1lbnRyeQotCQkoY29uZAotCQkgKCg8PSAocG9pbnQpIChjYWRy
IGNhY2hlLWVudHJ5KSkKLQkJICA7OyBXZSdyZSBpbnNpZGUgdGhlIHJlZ2lvbiB3ZSd2ZSBhbHJl
YWR5IHNjYW5uZWQgb3Zlciwgc28KLQkJICA7OyBqdXN0IGdvIHRvIHRoYXQgc2NhbidzIGVuZCBw
b3NpdGlvbi4KLQkJICAoZ290by1jaGFyIChudGggMiBjYWNoZS1lbnRyeSkpCi0JCSAgKHNldHEg
YnJhY2Vhc3NpZ25wIChudGggMyBjYWNoZS1lbnRyeSkpKQotCQkgKCg+IChwb2ludCkgKGNhZHIg
Y2FjaGUtZW50cnkpKQotCQkgIDs7IFdlJ3JlIGJleW9uZCB0aGUgcHJldmlvdXMgc2NhbiByZWdp
b24sIHNvIGp1c3Qgc2NhbiBhcwotCQkgIDs7IGZhciBhcyB0aGUgZW5kIG9mIHRoYXQgcmVnaW9u
LgotCQkgIChzZXRxIHN1Yi1iYXNzaWduLXAgKGMtbGFvbWliLWxvb3AgbGltMikpCi0JCSAgKGlm
ICg8PSAocG9pbnQpIChjYWRyIGNhY2hlLWVudHJ5KSkKLQkJICAgICAgKHByb2duCi0JCQkoYy1s
YW9taWItcHV0LWNhY2hlIGNvbnRhaW5pbmctc2V4cAotCQkJCQkgICAgc3RhcnQgKG50aCAyIGNh
Y2hlLWVudHJ5KQotCQkJCQkgICAgKG50aCAzIGNhY2hlLWVudHJ5KSA7OyBzdWItYmFzc2lnbi1w
Ci0JCQkJCSAgICApCi0JCQkoc2V0cSBicmFjZWFzc2lnbnAgKG50aCAzIGNhY2hlLWVudHJ5KSkK
LQkJCShnb3RvLWNoYXIgKG50aCAyIGNhY2hlLWVudHJ5KSkpCi0JCSAgICAoYy1sYW9taWItcHV0
LWNhY2hlIGNvbnRhaW5pbmctc2V4cAotCQkJCQlzdGFydCAocG9pbnQpIHN1Yi1iYXNzaWduLXAp
Ci0JCSAgICAoc2V0cSBicmFjZWFzc2lnbnAgc3ViLWJhc3NpZ24tcCkpKQotCQkgKHQpKQotCi0J
ICAgICAgKHNldHEgYnJhY2Vhc3NpZ25wIChjLWxhb21pYi1sb29wIGxpbSkpCi0JICAgICAgKHdo
ZW4gbGltCi0JCShjLWxhb21pYi1wdXQtY2FjaGUgbGltIHN0YXJ0IChwb2ludCkgYnJhY2Vhc3Np
Z25wKSkpKSkKLQorCQkJKG5vdCAobG9va2luZy1hdCBjLWtleXdvcmRzLXJlZ2V4cCkpKQorCQkg
ICAoaWYgKHNhdmUtZXhjdXJzaW9uCisJCQkgKGFuZCAoemVyb3AgKGMtYmFja3dhcmQtdG9rZW4t
MiAxIHQgbGltKSkKKwkJCSAgICAgIChsb29raW5nLWF0IGMtcHJlLWlkLWJyYWNlbGlzdC1rZXkp
KSkKKwkJICAgICAgIChzZXRxIGJyYWNlYXNzaWducCAnYysrLW5vYXNzaWduKQorCQkgICAgIChz
ZXRxIGFmdGVyLXR5cGUtaWQtcG9zIChwb2ludCkpKSkKKwkJICAoKGVxIChjaGFyLWFmdGVyKSA/
XCgpCisJCSAgIDs7IChzZXRxIHBhcmVucy1iZWZvcmUtYnJhY2UgdCkgU1RPVUdILCAyMDI0LTA4
LTMxCisJCSAgIDs7IEhhdmUgd2UgYSByZXF1aXJlcyB3aXRoIGEgcGFyZW50aGVzaXMgbGlzdD8K
KwkJICAgKHdoZW4gKHNhdmUtZXhjdXJzaW9uCisJCQkgICAoYW5kICh6ZXJvcCAoYy1iYWNrd2Fy
ZC10b2tlbi0yIDEgbmlsIGxpbSkpCisJCQkJKGxvb2tpbmctYXQgYy1mdW4tbmFtZS1zdWJzdGl0
dXRlLWtleSkKKwkJCQkobm90IChlcSAoY2hhci1hZnRlciAobWF0Y2gtZW5kIDApKSA/XykpKSkK
KwkJICAgICAoc2V0cSBicmFjZWFzc2lnbnAgbmlsKSkKKwkJICAgbmlsKQorCQkgICh0IG5pbCkp
CisJCSAoc2F2ZS1leGN1cnNpb24KKwkJICAgKGNvbmQKKwkJICAgICgob3IgKG5vdCAobWVtcSBy
ZXMgJyh0IDApKSkKKwkJCSAoZXEgKGNoYXItYWZ0ZXIpID8sKSkKKwkJICAgICAoYW5kIChzZXRx
IHBhcmVuLXN0YXRlIChjLXBhcnNlLXN0YXRlKSkKKwkJCSAgKHNldHEgcGFyZW4tcG9zIChjLXB1
bGwtb3Blbi1icmFjZSBwYXJlbi1zdGF0ZSkpCisJCQkgIChlcSAoY2hhci1hZnRlciBwYXJlbi1w
b3MpID9cKCkKKwkJCSAgKHNldHEgaW4tcGFyZW4gJ2luLXBhcmVuKQorCQkJICAoZ290by1jaGFy
IHBhcmVuLXBvcykpKQorCQkgICAgKChsb29raW5nLWF0IGMtcHJlLWJyYWNlLW5vbi1icmFjZWxp
c3Qta2V5KSkKKwkJICAgICgobG9va2luZy1hdCBjLXJldHVybi1rZXkpKQorCQkgICAgKChhbmQg
KGxvb2tpbmctYXQgYy1zeW1ib2wtc3RhcnQpCisJCQkgIChub3QgKGxvb2tpbmctYXQgYy1rZXl3
b3Jkcy1yZWdleHApKQorCQkJICAoc2F2ZS1leGN1cnNpb24KKwkJCSAgICAoYW5kICh6ZXJvcCAo
Yy1iYWNrd2FyZC10b2tlbi0yIDEgdCBsaW0pKQorCQkJCSAobG9va2luZy1hdCBjLXByZS1pZC1i
cmFjZWxpc3Qta2V5KSkpKSkKKwkJICAgICh0IChzZXRxIGFmdGVyLXR5cGUtaWQtcG9zIChwb2lu
dCkpCisJCSAgICAgICBuaWwpKSkpCisJICAgIChzZXRxIGJyYWNlYXNzaWducCAnYysrLW5vYXNz
aWduKSkKKworCSh3aGVuIChhbmQgYy1vcHQtaW5leHByLWJyYWNlLWxpc3Qta2V5CisJCSAgIChl
cSAoY2hhci1hZnRlcikgP1xbKSkKKwkgIDs7IEluIEphdmEsIGFuIGluaXRpYWxpemF0aW9uIGJy
YWNlIGxpc3QgbWF5IGZvbGxvdworCSAgOzsgZGlyZWN0bHkgYWZ0ZXIgIm5ldyBGb29bXSIsIHNv
IGNoZWNrIGZvciBhICJuZXciCisJICA7OyBlYXJsaWVyLgorCSAgKHdoaWxlIChlcSBicmFjZWFz
c2lnbnAgJ2RvbnRrbm93KQorCSAgICAoc2V0cSBicmFjZWFzc2lnbnAKKwkJICAoY29uZCAoKC89
IChjLWJhY2t3YXJkLXRva2VuLTIgMSB0IGxpbSkgMCkgbmlsKQorCQkJKChsb29raW5nLWF0IGMt
b3B0LWluZXhwci1icmFjZS1saXN0LWtleSkKKwkJCSAoc2V0cSBpbmV4cHItYnJhY2UtbGlzdCB0
KQorCQkJIHQpCisJCQkoKGxvb2tpbmctYXQgIlxcc3dcXHxcXHNfXFx8Wy5bXSIpCisJCQkgOzsg
Q2Fycnkgb24gbG9va2luZyBpZiB0aGlzIGlzIGFuCisJCQkgOzsgaWRlbnRpZmllciAobWF5IGNv
bnRhaW4gIi4iIGluIEphdmEpCisJCQkgOzsgb3IgYW5vdGhlciAiW10iIHNleHAuCisJCQkgJ2Rv
bnRrbm93KQorCQkJKHQgbmlsKSkpKSkKKworCShzZXRxIHBvcyAocG9pbnQpKQogCShjb25kCi0J
IChicmFjZWFzc2lnbnAKLQkgIDs7IFdlJ3ZlIGhpdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhZ2dy
ZWdhdGUgbGlzdC4KLQkgIChzZXRxIHBvczIgKHBvaW50KSkKLQkgIChjb25zCi0JICAgKGlmIChl
cSAoYy1iZWdpbm5pbmctb2Ytc3RhdGVtZW50LTEgY29udGFpbmluZy1zZXhwKSAnc2FtZSkKLQkg
ICAgICAgKHBvaW50KQotCSAgICAgcG9zMikKLQkgICAob3IgaW4tcGFyZW4gaW5leHByLWJyYWNl
LWxpc3QpKSkKKwkgKChub3QgYnJhY2Vhc3NpZ25wKQorCSAgbmlsKQorCSAoKGFuZCBhZnRlci10
eXBlLWlkLXBvcworCSAgICAgICAoZ290by1jaGFyIGFmdGVyLXR5cGUtaWQtcG9zKQorCSAgICAg
ICAoc2V0cSByZXMgKGMtYmFjay1vdmVyLW1lbWJlci1pbml0aWFsaXplcnMpKQorCSAgICAgICAo
Z290by1jaGFyIHJlcykKKwkgICAgICAgKGVxIChjYXIgKGMtYmVnaW5uaW5nLW9mLWRlY2wtMSBs
aW0pKSAnc2FtZSkpCisJICAoY29ucyAocG9pbnQpIG5pbCkpCQk7IFJldHVybiB2YWx1ZS4KKwog
CSAoKGFuZCBhZnRlci10eXBlLWlkLXBvcwotCSAgICAgICAoc2F2ZS1leGN1cnNpb24KLQkJICh3
aGVuIChlcSAoY2hhci1hZnRlcikgP1w7KQotCQkgICAoYy1mb3J3YXJkLW92ZXItdG9rZW4tYW5k
LXdzIHQpKQotCQkgKHNldHEgYnVmcG9zIChwb2ludCkpCi0JCSAod2hlbiAobG9va2luZy1hdCBj
LW9wdC08Pi1zZXhwLWtleSkKLQkJICAgKGMtZm9yd2FyZC1vdmVyLXRva2VuLWFuZC13cykKLQkJ
ICAgKHdoZW4gKGFuZCAoZXEgKGNoYXItYWZ0ZXIpID88KQotCQkJICAgICAgKGMtZ2V0LWNoYXIt
cHJvcGVydHkgKHBvaW50KSAnc3ludGF4LXRhYmxlKSkKLQkJICAgICAoYy1nby1saXN0LWZvcndh
cmQgbmlsIGFmdGVyLXR5cGUtaWQtcG9zKQotCQkgICAgIChjLWZvcndhcmQtc3ludGFjdGljLXdz
KSkpCi0JCSAoaWYgKGFuZCAobm90IChlcSAocG9pbnQpIGFmdGVyLXR5cGUtaWQtcG9zKSkKLQkJ
CSAgKG9yIChub3QgKGxvb2tpbmctYXQgYy1jbGFzcy1rZXkpKQotCQkJICAgICAgKHNhdmUtZXhj
dXJzaW9uCi0JCQkJKGdvdG8tY2hhciAobWF0Y2gtZW5kIDEpKQotCQkJCShjLWZvcndhcmQtc3lu
dGFjdGljLXdzKQotCQkJCShub3QgKGVxIChwb2ludCkgYWZ0ZXItdHlwZS1pZC1wb3MpKSkpKQot
CQkgICAgIChwcm9nbgotCQkgICAgICAgKHNldHEgcmVzCi0JCQkgICAgIChjLWZvcndhcmQtZGVj
bC1vci1jYXN0LTEgKGMtcG9pbnQgJ2Jvc3dzKQotCQkJCQkJICAgICAgIG5pbCBuaWwpKQotCQkg
ICAgICAgKGFuZCAoY29uc3AgcmVzKQotCQkJICAgIChjb25kCi0JCQkgICAgICgoZXEgKGNhciBy
ZXMpIGFmdGVyLXR5cGUtaWQtcG9zKSkKLQkJCSAgICAgKCg+IChjYXIgcmVzKSBhZnRlci10eXBl
LWlkLXBvcykgbmlsKQotCQkJICAgICAodAotCQkJICAgICAgKGNhdGNoICdmaW5kLWRlY2wKKwkg
ICAgICAgKHByb2duCisJCSAoYy1iYWNrd2FyZC1zeW50YWN0aWMtd3MpCisJCSAoZXEgKGNoYXIt
YmVmb3JlKSA/XCgpKSkKKwkgIDs7IFNpbmdsZSBpZGVudGlmaWVyIGJldHdlZW4gJygnIGFuZCAn
eycuICBXZSBoYXZlIGEgYnJhY2VsaXN0LgorCSAgKGNvbnMgYWZ0ZXItdHlwZS1pZC1wb3MgJ2lu
LXBhcmVuKSkKKworCSAodAorCSAgKGdvdG8tY2hhciBwb3MpCisJICAod2hlbiAoZXEgYnJhY2Vh
c3NpZ25wICdkb250a25vdykKKwkgICAgKGxldCogKChjYWNoZS1lbnRyeSAoYW5kIGNvbnRhaW5p
bmctc2V4cAorCQkJCSAgICAgKGMtbGFvbWliLWdldC1jYWNoZSBjb250YWluaW5nLXNleHAgcG9z
KSkpCisJCSAgIChsaW0yIChvciAoY2FkciBjYWNoZS1lbnRyeSkgbGltKSkKKwkJICAgc3ViLWJh
c3NpZ24tcCkKKwkgICAgICAoaWYgY2FjaGUtZW50cnkKKwkJICAoY29uZAorCQkgICAoKDw9IChw
b2ludCkgKGNhZHIgY2FjaGUtZW50cnkpKQorCQkgICAgOzsgV2UncmUgaW5zaWRlIHRoZSByZWdp
b24gd2UndmUgYWxyZWFkeSBzY2FubmVkIG92ZXIsIHNvCisJCSAgICA7OyBqdXN0IGdvIHRvIHRo
YXQgc2NhbidzIGVuZCBwb3NpdGlvbi4KKwkJICAgIChnb3RvLWNoYXIgKG50aCAyIGNhY2hlLWVu
dHJ5KSkKKwkJICAgIChzZXRxIGJyYWNlYXNzaWducCAobnRoIDMgY2FjaGUtZW50cnkpKSkKKwkJ
ICAgKCg+IChwb2ludCkgKGNhZHIgY2FjaGUtZW50cnkpKQorCQkgICAgOzsgV2UncmUgYmV5b25k
IHRoZSBwcmV2aW91cyBzY2FuIHJlZ2lvbiwgc28ganVzdCBzY2FuIGFzCisJCSAgICA7OyBmYXIg
YXMgdGhlIGVuZCBvZiB0aGF0IHJlZ2lvbi4KKwkJICAgIChzZXRxIHN1Yi1iYXNzaWduLXAgKGMt
bGFvbWliLWxvb3AgbGltMikpCisJCSAgICAoaWYgKDw9IChwb2ludCkgKGNhZHIgY2FjaGUtZW50
cnkpKQorCQkJKHByb2duCisJCQkgIChjLWxhb21pYi1wdXQtY2FjaGUgY29udGFpbmluZy1zZXhw
CisJCQkJCSAgICAgIHN0YXJ0IChudGggMiBjYWNoZS1lbnRyeSkKKwkJCQkJICAgICAgKG50aCAz
IGNhY2hlLWVudHJ5KSA7OyBzdWItYmFzc2lnbi1wCisJCQkJCSAgICAgICkKKwkJCSAgKHNldHEg
YnJhY2Vhc3NpZ25wIChudGggMyBjYWNoZS1lbnRyeSkpCisJCQkgIChnb3RvLWNoYXIgKG50aCAy
IGNhY2hlLWVudHJ5KSkpCisJCSAgICAgIChjLWxhb21pYi1wdXQtY2FjaGUgY29udGFpbmluZy1z
ZXhwCisJCQkJCSAgc3RhcnQgKHBvaW50KSBzdWItYmFzc2lnbi1wKQorCQkgICAgICAoc2V0cSBi
cmFjZWFzc2lnbnAgc3ViLWJhc3NpZ24tcCkpKQorCQkgICAodCkpCisKKwkJKHNldHEgYnJhY2Vh
c3NpZ25wIChjLWxhb21pYi1sb29wIGxpbSkpCisJCSh3aGVuIGxpbQorCQkgIChjLWxhb21pYi1w
dXQtY2FjaGUgbGltIHN0YXJ0IChwb2ludCkgYnJhY2Vhc3NpZ25wKSkpKSkKKworCSAgKGNvbmQK
KwkgICAoYnJhY2Vhc3NpZ25wCisJICAgIDs7IFdlJ3ZlIGhpdCB0aGUgYmVnaW5uaW5nIG9mIHRo
ZSBhZ2dyZWdhdGUgbGlzdC4KKwkgICAgKHNldHEgcG9zMiAocG9pbnQpKQorCSAgICAoY29ucwor
CSAgICAgKGlmIChlcSAoYy1iZWdpbm5pbmctb2Ytc3RhdGVtZW50LTEgY29udGFpbmluZy1zZXhw
KSAnc2FtZSkKKwkJIChwb2ludCkKKwkgICAgICAgcG9zMikKKwkgICAgIChvciBpbi1wYXJlbiBp
bmV4cHItYnJhY2UtbGlzdCkpKQorCSAgICgoYW5kIGFmdGVyLXR5cGUtaWQtcG9zCisJCSAoc2F2
ZS1leGN1cnNpb24KKwkJICAgKHdoZW4gKGVxIChjaGFyLWFmdGVyKSA/XDspCisJCSAgICAgKGMt
Zm9yd2FyZC1vdmVyLXRva2VuLWFuZC13cyB0KSkKKwkJICAgKHNldHEgYnVmcG9zIChwb2ludCkp
CisJCSAgICh3aGVuIChsb29raW5nLWF0IGMtb3B0LTw+LXNleHAta2V5KQorCQkgICAgIChjLWZv
cndhcmQtb3Zlci10b2tlbi1hbmQtd3MpCisJCSAgICAgKHdoZW4gKGFuZCAoZXEgKGNoYXItYWZ0
ZXIpID88KQorCQkJCShjLWdldC1jaGFyLXByb3BlcnR5IChwb2ludCkgJ3N5bnRheC10YWJsZSkp
CisJCSAgICAgICAoYy1nby1saXN0LWZvcndhcmQgbmlsIGFmdGVyLXR5cGUtaWQtcG9zKQorCQkg
ICAgICAgKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MpKSkKKwkJICAgKGlmIChhbmQgKG5vdCAoZXEg
KHBvaW50KSBhZnRlci10eXBlLWlkLXBvcykpCisJCQkgICAgKG9yIChub3QgKGxvb2tpbmctYXQg
Yy1jbGFzcy1rZXkpKQogCQkJCShzYXZlLWV4Y3Vyc2lvbgotCQkJCSAgKGdvdG8tY2hhciAoY2Fy
IHJlcykpCi0JCQkJICAoYy1kby1kZWNsYXJhdG9ycwotCQkJCSAgIChwb2ludC1tYXgpIHQgbmls
IG5pbAotCQkJCSAgIChsYW1iZGEgKGlkLXN0YXJ0IF9pZC1lbmQgX3RvayBfbm90LXRvcCBfZnVu
YyBfaW5pdCkKLQkJCQkgICAgIChjb25kCi0JCQkJICAgICAgKCg+IGlkLXN0YXJ0IGFmdGVyLXR5
cGUtaWQtcG9zKQotCQkJCSAgICAgICAodGhyb3cgJ2ZpbmQtZGVjbCBuaWwpKQotCQkJCSAgICAg
ICgoZXEgaWQtc3RhcnQgYWZ0ZXItdHlwZS1pZC1wb3MpCi0JCQkJICAgICAgICh0aHJvdyAnZmlu
ZC1kZWNsIHQpKSkpKQotCQkJCSAgbmlsKSkpKSkpCi0JCSAgIChzYXZlLWV4Y3Vyc2lvbgotCQkg
ICAgIChnb3RvLWNoYXIgc3RhcnQpCi0JCSAgICAgKG5vdCAoYy1sb29raW5nLWF0LXN0YXRlbWVu
dC1ibG9jaykpKSkpKQotCSAgKGNvbnMgYnVmcG9zIChvciBpbi1wYXJlbiBpbmV4cHItYnJhY2Ut
bGlzdCkpKQotCSAoKG9yIChlcSAoY2hhci1hZnRlcikgP1w7KQotCSAgICAgIDs7IEJyYWNlIGxp
c3RzIGNhbid0IGNvbnRhaW4gYSBzZW1pY29sb24sIHNvIHdlJ3JlIGRvbmUuCi0JICAgICAgKHNh
dmUtZXhjdXJzaW9uCi0JCShjLWJhY2t3YXJkLXN5bnRhY3RpYy13cykKLQkJKGVxIChjaGFyLWJl
Zm9yZSkgP30pKQotCSAgICAgIDs7IFRoZXkgYWxzbyBjYW4ndCBjb250YWluIGEgYmFyZSB9LCB3
aGljaCBpcyBwcm9iYWJseSB0aGUgZW5kCi0JICAgICAgOzsgb2YgYSBmdW5jdGlvbi4KLQkgICAg
ICApCi0JICBuaWwpCi0JICgoYW5kIChzZXRxIG1hY3JvLXN0YXJ0IChwb2ludCkpCi0JICAgICAg
IChjLWZvcndhcmQtdG8tY3BwLWRlZmluZS1ib2R5KQotCSAgICAgICAoZXEgKHBvaW50KSBzdGFy
dCkpCi0JICA7OyBXZSd2ZSBhIG1hY3JvIHdob3NlIGV4cGFuc2lvbiBzdGFydHMgd2l0aCB0aGUg
J3snLgotCSAgOzsgSGV1cmlzdGljYWxseSwgaWYgd2UgaGF2ZSBhICc7JyBpbiBpdCB3ZSd2ZSBu
b3QgZ290IGEKLQkgIDs7IGJyYWNlIGxpc3QsIG90aGVyd2lzZSB3ZSBoYXZlLgotCSAgKGxldCAo
KG1hY3JvLWVuZCAocHJvZ24gKGMtZW5kLW9mLW1hY3JvKSAocG9pbnQpKSkpCi0JICAgIChnb3Rv
LWNoYXIgc3RhcnQpCi0JICAgIChmb3J3YXJkLWNoYXIpCi0JICAgIChpZiAoYW5kIChjLXN5bnRh
Y3RpYy1yZS1zZWFyY2gtZm9yd2FyZCAiWzssXSIgbWFjcm8tZW5kIHQgdCkKLQkJICAgICAoZXEg
KGNoYXItYmVmb3JlKSA/XDspKQotCQluaWwKLQkgICAgICAoY29ucyBtYWNyby1zdGFydCBuaWwp
KSkpIDsgKDIwMTYtMDgtMzApOiBMYXp5ISBXZSBoYXZlIG5vCisJCQkJICAoZ290by1jaGFyICht
YXRjaC1lbmQgMSkpCisJCQkJICAoYy1mb3J3YXJkLXN5bnRhY3RpYy13cykKKwkJCQkgIChub3Qg
KGVxIChwb2ludCkgYWZ0ZXItdHlwZS1pZC1wb3MpKSkpKQorCQkgICAgICAgKHByb2duCisJCQkg
KHNldHEgcmVzCisJCQkgICAgICAgKGMtZm9yd2FyZC1kZWNsLW9yLWNhc3QtMSAoYy1wb2ludCAn
Ym9zd3MpCisJCQkJCQkJIG5pbCBuaWwpKQorCQkJIChhbmQgKGNvbnNwIHJlcykKKwkJCSAgICAg
IChjb25kCisJCQkgICAgICAgKChlcSAoY2FyIHJlcykgYWZ0ZXItdHlwZS1pZC1wb3MpKQorCQkJ
ICAgICAgICgoPiAoY2FyIHJlcykgYWZ0ZXItdHlwZS1pZC1wb3MpIG5pbCkKKwkJCSAgICAgICAo
dAorCQkJCShjYXRjaCAnZmluZC1kZWNsCisJCQkJICAoc2F2ZS1leGN1cnNpb24KKwkJCQkgICAg
KGdvdG8tY2hhciAoY2FyIHJlcykpCisJCQkJICAgIChjLWRvLWRlY2xhcmF0b3JzCisJCQkJICAg
ICAocG9pbnQtbWF4KSB0IG5pbCBuaWwKKwkJCQkgICAgIChsYW1iZGEgKGlkLXN0YXJ0IF9pZC1l
bmQgX3RvayBfbm90LXRvcCBfZnVuYyBfaW5pdCkKKwkJCQkgICAgICAgKGNvbmQKKwkJCQkJKCg+
IGlkLXN0YXJ0IGFmdGVyLXR5cGUtaWQtcG9zKQorCQkJCQkgKHRocm93ICdmaW5kLWRlY2wgbmls
KSkKKwkJCQkJKChlcSBpZC1zdGFydCBhZnRlci10eXBlLWlkLXBvcykKKwkJCQkJICh0aHJvdyAn
ZmluZC1kZWNsIHQpKSkpKQorCQkJCSAgICBuaWwpKSkpKSkKKwkJICAgICAoc2F2ZS1leGN1cnNp
b24KKwkJICAgICAgIChnb3RvLWNoYXIgc3RhcnQpCisJCSAgICAgICAobm90IChjLWxvb2tpbmct
YXQtc3RhdGVtZW50LWJsb2NrKSkpKSkpCisJICAgIChjb25zIGJ1ZnBvcyAob3IgaW4tcGFyZW4g
aW5leHByLWJyYWNlLWxpc3QpKSkKKwkgICAoKG9yIChlcSAoY2hhci1hZnRlcikgP1w7KQorCQk7
OyBCcmFjZSBsaXN0cyBjYW4ndCBjb250YWluIGEgc2VtaWNvbG9uLCBzbyB3ZSdyZSBkb25lLgor
CQkoc2F2ZS1leGN1cnNpb24KKwkJICAoYy1iYWNrd2FyZC1zeW50YWN0aWMtd3MpCisJCSAgKGVx
IChjaGFyLWJlZm9yZSkgP30pKQorCQk7OyBUaGV5IGFsc28gY2FuJ3QgY29udGFpbiBhIGJhcmUg
fSwgd2hpY2ggaXMgcHJvYmFibHkgdGhlIGVuZAorCQk7OyBvZiBhIGZ1bmN0aW9uLgorCQkpCisJ
ICAgIG5pbCkKKwkgICAoKGFuZCAoc2V0cSBtYWNyby1zdGFydCAocG9pbnQpKQorCQkgKGMtZm9y
d2FyZC10by1jcHAtZGVmaW5lLWJvZHkpCisJCSAoZXEgKHBvaW50KSBzdGFydCkpCisJICAgIDs7
IFdlJ3ZlIGEgbWFjcm8gd2hvc2UgZXhwYW5zaW9uIHN0YXJ0cyB3aXRoIHRoZSAneycuCisJICAg
IDs7IEhldXJpc3RpY2FsbHksIGlmIHdlIGhhdmUgYSAnOycgaW4gaXQgd2UndmUgbm90IGdvdCBh
CisJICAgIDs7IGJyYWNlIGxpc3QsIG90aGVyd2lzZSB3ZSBoYXZlLgorCSAgICAobGV0ICgobWFj
cm8tZW5kIChwcm9nbiAoYy1lbmQtb2YtbWFjcm8pIChwb2ludCkpKSkKKwkgICAgICAoZ290by1j
aGFyIHN0YXJ0KQorCSAgICAgIChmb3J3YXJkLWNoYXIpCisJICAgICAgKGlmIChhbmQgKGMtc3lu
dGFjdGljLXJlLXNlYXJjaC1mb3J3YXJkICJbOyxdIiBtYWNyby1lbmQgdCB0KQorCQkgICAgICAg
KGVxIChjaGFyLWJlZm9yZSkgP1w7KSkKKwkJICBuaWwKKwkJKGNvbnMgbWFjcm8tc3RhcnQgbmls
KSkpKSA7ICgyMDE2LTA4LTMwKTogTGF6eSEgV2UgaGF2ZSBubwogCQkJCQk7IGxhbmd1YWdlcyB3
aGVyZQogCQkJCQk7IGBjLW9wdC1pbmV4cHItYnJhY2UtbGlzdC1rZXknIGlzCiAJCQkJCTsgbm9u
LW5pbCBhbmQgd2UgaGF2ZSBtYWNyb3MuCi0JICh0IHQpKSkpCQkJOzsgVGhlIGNhbGxlciBjYW4g
Z28gdXAgb25lIGxldmVsLgotICAgICAgKSkpCisJICAgKHQgdCkpKSkJCQk7OyBUaGUgY2FsbGVy
IGNhbiBnbyB1cCBvbmUgbGV2ZWwuCisJKSkpKQogCiAoZGVmdW4gYy1pbnNpZGUtYnJhY2VsaXN0
LXAgKGNvbnRhaW5pbmctc2V4cCBwYXJlbi1zdGF0ZSBhY2NlcHQtaW4tcGFyZW4pCiAgIDs7IHJl
dHVybiB0aGUgYnVmZmVyIHBvc2l0aW9uIG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJyYWNlIGxp
c3Qgc3RhdGVtZW50CkBAIC0xMzg2Myw2ICsxMzg1Nyw3MSBAQAogCSAobG9va2luZy1hdCBjLXBy
ZS1sYW1iZGEtdG9rZW5zLXJlKSkpCiAgICAobm90IChjLWluLWxpdGVyYWwpKSkpCiAKKyhkZWZ1
biBjLWxvb2tpbmctYXQtYysrLWxhbWJkYS1leHByZXNzaW9uICgmb3B0aW9uYWwgbGltKQorICA7
OyBJZiBwb2ludCBpcyBhdCB0aGUgWyBvcGVuaW5nIGEgQysrIGxhbWJkYSBleHByZXNzaW9ucydz
IGNhcHR1cmUgbGlzdCwKKyAgOzsgYW5kIHRoZSBsYW1iZGEgZXhwcmVzc2lvbiBpcyBjb21wbGV0
ZSwgcmV0dXJuIHRoZSBwb3NpdGlvbiBvZiB0aGUgeyB3aGljaAorICA7OyBvcGVucyB0aGUgYm9k
eSBmb3JtLCBvdGhlcndpc2UgcmV0dXJuIG5pbC4gIExJTSBpcyB0aGUgbGltaXQgZm9yIGZvcndh
cmQKKyAgOzsgc2VhcmNoaW5nIGZvciB0aGUgey4KKyAgKGxldCAoKGhlcmUgKHBvaW50KSkKKwln
b3QtcGFyYW1zKQorICAgICh3aGVuIChhbmQgKGMtbG9va2luZy1hdC1jKystbGFtYmRhLWNhcHR1
cmUtbGlzdCkKKwkgICAgICAgKGMtZ28tbGlzdC1mb3J3YXJkIG5pbCBsaW0pKQorICAgICAgKGMt
Zm9yd2FyZC1zeW50YWN0aWMtd3MgbGltKQorICAgICAgKHdoZW4gKGMtZm9yd2FyZC08Pi1hcmds
aXN0IHQpCisJKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MgbGltKQorCSh3aGVuIChsb29raW5nLWF0
ICJyZXF1aXJlc1xcKFteYS16QS1aMC05X11cXHwkXFwpIikKKwkgIChjLWZvcndhcmQtYysrLXJl
cXVpcmVzLWNsYXVzZSBsaW0gbmlsKSkpCisgICAgICAod2hlbiAoYW5kIChlcSAoY2hhci1hZnRl
cikgP1woKQorCQkgKGMtZ28tbGlzdC1mb3J3YXJkIG5pbCBsaW0pKQorCShzZXRxIGdvdC1wYXJh
bXMgdCkKKwkoYy1mb3J3YXJkLXN5bnRhY3RpYy13cyBsaW0pKQorICAgICAgKHdoaWxlIChhbmQg
Yy1sYW1iZGEtc3BlYy1rZXkgKGxvb2tpbmctYXQgYy1sYW1iZGEtc3BlYy1rZXkpKQorCShnb3Rv
LWNoYXIgKG1hdGNoLWVuZCAxKSkKKwkoYy1mb3J3YXJkLXN5bnRhY3RpYy13cyBsaW0pKQorICAg
ICAgKGxldCAoYWZ0ZXItZXhjZXB0LXBvcykKKwkoY29uZAorCSAoKHNhdmUtZXhjdXJzaW9uCisJ
ICAgIChhbmQgKGxvb2tpbmctYXQgInRocm93XFwoW15hLXpBLVowLTlfXVxcfCRcXCkiKQorCQkg
KHByb2duIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAxKSkKKwkJCShjLWZvcndhcmQtc3lu
dGFjdGljLXdzIGxpbSkKKwkJCShlcSAoY2hhci1hZnRlcikgP1woKSkKKwkJIChjLWdvLWxpc3Qt
Zm9yd2FyZCBuaWwgbGltKQorCQkgKHByb2duIChjLWZvcndhcmQtc3ludGFjdGljLXdzIGxpbSkK
KwkJCShzZXRxIGFmdGVyLWV4Y2VwdC1wb3MgKHBvaW50KSkpKSkKKwkgIChnb3RvLWNoYXIgYWZ0
ZXItZXhjZXB0LXBvcykKKwkgIChjLWZvcndhcmQtc3ludGFjdGljLXdzIGxpbSkpCisJICgobG9v
a2luZy1hdCAibm9leGNlcHRcXChbXmEtekEtWjAtOV9dXFx8JFxcKSIpCisJICAoYy1mb3J3YXJk
LXN5bnRhY3RpYy13cyBsaW0pCisJICAoc2V0cSBhZnRlci1leGNlcHQtcG9zIChwb2ludCkpCisJ
ICAod2hlbiAoYW5kIChlcSAoY2hhci1hZnRlcikgP1woKQorCQkgICAgIChjLWdvLWxpc3QtZm9y
d2FyZCBuaWwgbGltKSkKKwkgICAgKGMtZm9yd2FyZC1zeW50YWN0aWMtd3MgbGltKSkpKSkKKyAg
ICAgIChhbmQgKGxvb2tpbmctYXQgYy1oYXNrZWxsLW9wLXJlKQorCSAgIChnb3RvLWNoYXIgKG1h
dGNoLWVuZCAwKSkKKwkgICAoYy1mb3J3YXJkLXN5bnRhY3RpYy13cyBsaW0pCisJICAgKGMtZm9y
d2FyZC10eXBlIHQpKQkJOyB0IGlzIEJSQUNFLUJMT0NLLVRPTy4KKyAgICAgIChhbmQgZ290LXBh
cmFtcworCSAgIChsb29raW5nLWF0ICJyZXF1aXJlc1xcKFteYS16QS1aMC05X11cXHwkXFwpIikK
KwkgICAoYy1mb3J3YXJkLWMrKy1yZXF1aXJlcy1jbGF1c2UgbGltIG5pbCkpCisgICAgICAocHJv
ZzEgKGFuZCAoZXEgKGNoYXItYWZ0ZXIpID97KQorCQkgIChwb2ludCkpCisJKGdvdG8tY2hhciBo
ZXJlKSkpKSkKKworKGRlZnVuIGMtYmFja3dhcmQtb3Zlci1sYW1iZGEtZXhwcmVzc2lvbiAoJm9w
dGlvbmFsIGxpbSkKKyAgOzsgUG9pbnQgaXMgYXQgYSB7LiAgTW92ZSBiYWNrIG92ZXIgdGhlIGxh
bWJkYSBleHByZXNzaW9uIHRoaXMgaXMgYSBwYXJ0IG9mLAorICA7OyBzdG9wcGluZyBhdCB0aGUg
WyBvZiB0aGUgY2FwdHVyZSBsaXN0LCBpZiB0aGlzIGlzIHRoZSBjYXNlLCByZXR1cm5pbmcKKyAg
OzsgdGhlIHBvc2l0aW9uIG9mIHRoYXQgb3BlbmluZyBicmFja2V0LiAgSWYgd2UncmUgbm90IGF0
IHN1Y2ggYSBsaXN0LCBsZWF2ZQorICA7OyBwb2ludCB1bmNoYW5nZWQgYW5kIHJldHVybiBuaWwu
CisgIChsZXQgKChoZXJlIChwb2ludCkpKQorICAgIChjLXN5bnRhY3RpYy1za2lwLWJhY2t3YXJk
ICJeO31dIiBsaW0gdCkKKyAgICAoaWYgKGFuZCAoZXEgKGNoYXItYmVmb3JlKSA/XF0pCisJICAg
ICAoYy1nby1saXN0LWJhY2t3YXJkIG5pbCBsaW0pCisJICAgICAoZXEgKGMtbG9va2luZy1hdC1j
KystbGFtYmRhLWV4cHJlc3Npb24gKDErIGhlcmUpKQorCQkgaGVyZSkpCisJKHBvaW50KQorICAg
ICAgKGdvdG8tY2hhciBoZXJlKQorICAgICAgbmlsKSkpCisKIChkZWZ1biBjLWMrKy12c2VtaS1w
ICgmb3B0aW9uYWwgcG9zKQogICA7OyBDKysgT25seSAtIElzIHRoZXJlIGEgInZpcnR1YWwgc2Vt
aWNvbG9uIiBhdCBQT1Mgb3IgcG9pbnQ/CiAgIDs7IChTZWUgY2MtZGVmcy5lbCBmb3IgZnVsbCBk
ZXRhaWxzIG9mICJ2aXJ0dWFsIHNlbWljb2xvbnMiLikKZGlmZiAtciA0OGFkNjYxYTJkN2QgY2Mt
bGFuZ3MuZWwKLS0tIGEvY2MtbGFuZ3MuZWwJTW9uIEp1bCAyMiAxMjowOTozNCAyMDI0ICswMDAw
CisrKyBiL2NjLWxhbmdzLmVsCVNhdCBBdWcgMzEgMTY6NDQ6MzkgMjAyNCArMDAwMApAQCAtMjYz
OSw2ICsyNjM5LDE5IEBACiAgIHQgKGMtbWFrZS1rZXl3b3Jkcy1yZSB0IChjLWxhbmctY29uc3Qg
Yy1lcXVhbHMtdHlwZS1jbGF1c2Uta3dkcykpKQogKGMtbGFuZy1kZWZ2YXIgYy1lcXVhbHMtdHlw
ZS1jbGF1c2Uta2V5IChjLWxhbmctY29uc3QgYy1lcXVhbHMtdHlwZS1jbGF1c2Uta2V5KSkKIAor
KGMtbGFuZy1kZWZjb25zdCBjLWxhbWJkYS1zcGVjLWt3ZHMKKyAgIktleXdvcmRzIHdoaWNoIGFy
ZSBzcGVjaWZpZXJzIG9mIGNlcnRhaW4gZWxlbWVudHMgb2YgYSBDKysgbGFtYmRhIGZ1bmN0aW9u
LgorVGhpcyBpcyBvbmx5IHVzZWQgaW4gQysrIE1vZGUuIgorICB0IG5pbAorICBjKysgJygibXV0
YWJsZSIgImNvbnN0ZXhwciIgImNvbnN0ZXZhbCIgInN0YXRpYyIpKQorCisoYy1sYW5nLWRlZmNv
bnN0IGMtbGFtYmRhLXNwZWMta2V5CisgIDs7IEEgcmVndWxhciBleHByZXNzaW9uIHdoaWNoIG1h
dGNoZXMgYSBtZW1iZXIgb2YgYGMtbGFtYmRhLXNwZWMta3dkcycsCisgIDs7IG9yIG5pbC4KKyAg
dCAoaWYgKGMtbGFuZy1jb25zdCBjLWxhbWJkYS1zcGVjLWt3ZHMpCisJKGMtbWFrZS1rZXl3b3Jk
cy1yZSB0IChjLWxhbmctY29uc3QgYy1sYW1iZGEtc3BlYy1rd2RzKSkpKQorKGMtbGFuZy1kZWZ2
YXIgYy1sYW1iZGEtc3BlYy1rZXkgKGMtbGFuZy1jb25zdCBjLWxhbWJkYS1zcGVjLWtleSkpCisK
IChjLWxhbmctZGVmY29uc3QgYy1lcXVhbHMtbm9udHlwZS1kZWNsLWt3ZHMKICAgIktleXdvcmRz
IHdoaWNoIGFyZSBmb2xsb3dlZCBieSBhbiBpZGVudGlmaWVyIHRoZW4gYW4gXCI9XCIKIHNpZ24s
IHdoaWNoIGRlY2xhcmVzIHRoZSBpZGVudGlmaWVyIHRvIGJlIHNvbWV0aGluZyBvdGhlciB0aGFu
IGEKCgoKPiBIYXZlIGEgbG92ZWx5IGRheS4KPiAtLSAKPiBBcnNlbiBBcnNlbm92acSHCgotLSAK
QWxhbiBNYWNrZW56aWUgKE51cmVtYmVyZywgR2VybWFueSkuCgoKCg==