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