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==