Re: master: Make DOCUMENTATION strip markup from SBCL definitions
Stas Boukarev <[email protected]> Tue, 30 Jun 2026 18:14:12 +0300
| Newsgroups | gmane.lisp.steel-bank.cvs,gmane.lisp.steel-bank.devel |
|---|---|
| Message-ID | <CAF63=12bqskHX=c-cHJjts6RL4q3+1C-4AuWWMfAbdzN08B0Dw@mail.gmail.com> |
T25lIGZhY3RvcjogZG9pbmcgaXQgYmVmb3JlIHNhdmluZyB0aGUgY29yZSB3b3VsZCBzYXZlIGJ5 dGVzLgpDYW4gd3JpdGUgb3V0IGFsbCB0aGUgZG9jc3RyaW5ncyBpbiBtYWtlLXRhcmdldC0yLCBi ZWZvcmUgc3RyaXBwaW5nCnRoZW0uIChPciByZW1vdmluZywgd2hpY2ggaXMgZG9uZSB3aXRob3V0 ICMrc2ItZG9jKQpBbHNvIG1lYW5zIG5vdCBsdWdnaW5nIGFyb3VuZCB0aGUgc3RyaXBwaW5nIGNv ZGUgaW4gdGhlIGZpbmFsIGltYWdlLAptb3JlIGJ5dGVzIHNhdmVkLgoKT24gVHVlLCBKdW4gMzAs IDIwMjYgYXQgNjowOOKAr1BNIG1lbGlzZ2wgdmlhIFNiY2wtY29tbWl0cwo8c2JjbC1jb21taXRz QGxpc3RzLnNvdXJjZWZvcmdlLm5ldD4gd3JvdGU6Cj4KPiBUaGUgYnJhbmNoICJtYXN0ZXIiIGhh cyBiZWVuIHVwZGF0ZWQgaW4gU0JDTDoKPiAgICAgICAgdmlhICAyNzYyMWIwMWNhMzllNTA5MzBm NjhkMjljNjk2NjQwMGY0Mjc0MTAzIChjb21taXQpCj4gICAgICAgZnJvbSAgMzMzNWMyYjE1MDkw NjMwYjE5ZWIwYWFhZjU1OTYzNjExODJiNWEwOSAoY29tbWl0KQo+Cj4gLSBMb2cgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K PiBjb21taXQgMjc2MjFiMDFjYTM5ZTUwOTMwZjY4ZDI5YzY5NjY0MDBmNDI3NDEwMwo+IEF1dGhv cjogR2Fib3IgTWVsaXMgPG1lZ2FAcmV0ZXMuaHU+Cj4gRGF0ZTogICBUdWUgSnVuIDMwIDE0OjEz OjA2IDIwMjYgKzAyMDAKPgo+ICAgICBNYWtlIERPQ1VNRU5UQVRJT04gc3RyaXAgbWFya3VwIGZy b20gU0JDTCBkZWZpbml0aW9ucwo+Cj4gICAgIC4uLiBhbmQgbm9ybWFsaXplIHRoZSBpbmRlbnRh dGlvbiBvZiB0aGVpciBkb2NzdHJpbmdzLCB0b28uCj4KPiAgICAgRG9pbmcgdGhpcyBsYXppbHkg aW4gRE9DVU1FTlRBVElPTiBhbGxvd3MgaW50ZXJhY3RpdmUgd29yayBvbgo+ICAgICBkb2NzdHJp bmdzIChlLmcuIGNoYW5nZSBhIGRvY3N0cmluZywgcmVjb21waWxlIGl0cyBkZWZpbml0aW9uLAo+ ICAgICBnZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGZyb20gdGhlIGltYWdlKS4gSSBkb24ndCB0aGlu ayB0aGUgb3ZlcmhlYWQgaW4KPiAgICAgRE9DVU1FTlRBVElPTiBpcyBhIGZhY3Rvci4KPiAtLS0K PiAgY29udHJpYi9zYi1tYW51YWwvZG9jc3RyaW5nLmxpc3AgfCAgNTMgLS0tLS0tLS0tCj4gIGNv bnRyaWIvc2ItbWFudWFsL21hcmtkb3duLmxpc3AgIHwgIDE3IC0tLQo+ICBjb250cmliL3NiLW1h bnVhbC9wYWNrYWdlLmxpc3AgICB8ICAgNSArLQo+ICBjb250cmliL3NiLW1hbnVhbC90ZXhpbmZv Lmxpc3AgICB8ICA0NSArKystLS0tCj4gIHNyYy9wY2wvZG9jdW1lbnRhdGlvbi5saXNwICAgICAg IHwgMjQ3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICA1IGZpbGVz IGNoYW5nZWQsIDI3MyBpbnNlcnRpb25zKCspLCA5NCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1n aXQgYS9jb250cmliL3NiLW1hbnVhbC9kb2NzdHJpbmcubGlzcCBiL2NvbnRyaWIvc2ItbWFudWFs L2RvY3N0cmluZy5saXNwCj4gaW5kZXggNDU1YTM4YjUzLi4zZGM4ZTEzYzEgMTAwNjQ0Cj4gLS0t IGEvY29udHJpYi9zYi1tYW51YWwvZG9jc3RyaW5nLmxpc3AKPiArKysgYi9jb250cmliL3NiLW1h bnVhbC9kb2NzdHJpbmcubGlzcAo+IEBAIC0xLDU4ICsxLDUgQEAKPiAgKGluLXBhY2thZ2UgOnNi LW1hbnVhbCkKPgo+IC07OzsgQmVmb3JlIHByb2Nlc3NpbmcgTWFya2Rvd24sIHRoZSBkb2NzdHJp bmcgaW5kZW50YXRpb24gaXMKPiAtOzs7IG5vcm1hbGl6ZWQgYnkgc3RyaXBwaW5nIHRoZSBsb25n ZXN0IHJ1biBvZiBsZWFkaW5nIHNwYWNlcyBjb21tb24KPiAtOzs7IHRvIGFsbCBub24tYmxhbmsg bGluZXMgZXhjZXB0IHRoZSBmaXJzdC4gVGhpcyBpcyBjb21wYXRpYmxlIHdpdGgKPiAtOzs7IFBB WCAoc2VlIFBBWDo6QE1BUktET1dOLVNVUFBPUlQpLgo+IC0oZGVmdW4gcmVpbmRlbnQtZG9jc3Ry aW5nIChkb2NzdHJpbmcpCj4gLSAgKGxldCAoKGluZGVudGF0aW9uIChkb2NzdHJpbmctaW5kZW50 YXRpb24gZG9jc3RyaW5nKSkpCj4gLSAgICAoc3RyaXAtZG9jc3RyaW5nLWluZGVudCBkb2NzdHJp bmcgaW5kZW50YXRpb24gdCkpKQo+IC0KPiAtCj4gLTs7OzsgVXRpbGl0aWVzIGxpZnRlZCBmcm9t IERSZWYgYW5kIE1HTC1QQVgKPiAtCj4gLTs7OyBSZXR1cm4gdGhlIG1pbmltdW0gbnVtYmVyIG9m IGxlYWRpbmcgc3BhY2VzIGluIG5vbi1ibGFuayBsaW5lcwo+IC07OzsgYWZ0ZXIgdGhlIGZpcnN0 Lgo+IC0oZGVmdW4gZG9jc3RyaW5nLWluZGVudGF0aW9uIChkb2NzdHJpbmcgJmtleSAoZmlyc3Qt bGluZS1zcGVjaWFsLXAgdCkpCj4gLSAgKGxldCAoKG4tbWluLWluZGVudGF0aW9uIG5pbCkpCj4g LSAgICAod2l0aC1pbnB1dC1mcm9tLXN0cmluZyAocyBkb2NzdHJpbmcpCj4gLSAgICAgIChsb29w IGZvciBpIHVwZnJvbSAwCj4gLSAgICAgICAgICAgIGZvciBsaW5lID0gKHJlYWQtbGluZSBzIG5p bCBuaWwpCj4gLSAgICAgICAgICAgIHdoaWxlIGxpbmUKPiAtICAgICAgICAgICAgZG8gKHdoZW4g KGFuZCAob3IgKG5vdCBmaXJzdC1saW5lLXNwZWNpYWwtcCkgKHBsdXNwIGkpKQo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgIChub3QgKGJsYW5rcCBsaW5lKSkpCj4gLSAgICAgICAgICAgICAg ICAgKHdoZW4gKG9yIChudWxsIG4tbWluLWluZGVudGF0aW9uKQo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAoPCAobi1sZWFkaW5nLXNwYWNlcyBsaW5lKSBuLW1pbi1pbmRlbnRhdGlvbikp Cj4gLSAgICAgICAgICAgICAgICAgICAoc2V0cSBuLW1pbi1pbmRlbnRhdGlvbiAobi1sZWFkaW5n LXNwYWNlcyBsaW5lKSkpKSkpCj4gLSAgICAob3Igbi1taW4taW5kZW50YXRpb24gMCkpKQo+IC0K PiAtKGRlZnVuIG4tbGVhZGluZy1zcGFjZXMgKGxpbmUpCj4gLSAgKGxldCAoKG4gMCkpCj4gLSAg ICAobG9vcCBmb3IgaSBiZWxvdyAobGVuZ3RoIGxpbmUpCj4gLSAgICAgICAgICB3aGlsZSAoY2hh cj0gKGFyZWYgbGluZSBpKSAjXFNwYWNlKQo+IC0gICAgICAgICAgZG8gKGluY2YgbikpCj4gLSAg ICBuKSkKPiAtCj4gLShkZWZ1biBzdWJzZXEqIChzZXEgc3RhcnQpCj4gLSAgKHN1YnNlcSBzZXEg KG1pbiAobGVuZ3RoIHNlcSkgc3RhcnQpKSkKPiAtCj4gLShkZWZ1biBzdHJpcC1kb2NzdHJpbmct aW5kZW50IChkb2NzdHJpbmcgaW5kZW50YXRpb24gZmlyc3QtbGluZS1zcGVjaWFsLXApCj4gLSAg KHdpdGgtb3V0cHV0LXRvLXN0cmluZyAob3V0KQo+IC0gICAgKHdpdGgtaW5wdXQtZnJvbS1zdHJp bmcgKHMgZG9jc3RyaW5nKQo+IC0gICAgICAobG9vcCBmb3IgaSB1cGZyb20gMAo+IC0gICAgICAg ICAgICBkbyAobXVsdGlwbGUtdmFsdWUtYmluZCAobGluZSBtaXNzaW5nLW5ld2xpbmUtcCkKPiAt ICAgICAgICAgICAgICAgICAgIChyZWFkLWxpbmUgcyBuaWwgbmlsKQo+IC0gICAgICAgICAgICAg ICAgICh1bmxlc3MgbGluZQo+IC0gICAgICAgICAgICAgICAgICAgKHJldHVybikpCj4gLSAgICAg ICAgICAgICAgICAgKHdyaXRlLXN0cmluZyAoaWYgKGFuZCBmaXJzdC1saW5lLXNwZWNpYWwtcAo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHplcm9wIGkpKQo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUKPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc3Vic2VxKiBsaW5lIGluZGVudGF0aW9uKSkKPiAtICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG91dCkKPiAtICAgICAgICAgICAgICAgICAodW5sZXNz IG1pc3NpbmctbmV3bGluZS1wCj4gLSAgICAgICAgICAgICAgICAgICAodGVycHJpIG91dCkpKSkp KSkKPiAtCj4gLQo+ICA7Ozs7IERldGVybWluaW5nIHRoZSBwYWNrYWdlIGZvciBwYXJzaW5nIGRv Y3N0cmluZ3MKPiAgOzs7Owo+ICA7Ozs7IFRoZSBwYWNrYWdlIGZvciBwYXJzaW5nIGlzIHRoZSBw YWNrYWdlIHRoYXQgd2FzIGluIGVmZmVjdCB3aGVuCj4gZGlmZiAtLWdpdCBhL2NvbnRyaWIvc2It bWFudWFsL21hcmtkb3duLmxpc3AgYi9jb250cmliL3NiLW1hbnVhbC9tYXJrZG93bi5saXNwCj4g aW5kZXggOWU4NTA1ZmUyLi4wY2ExNzk5MWUgMTAwNjQ0Cj4gLS0tIGEvY29udHJpYi9zYi1tYW51 YWwvbWFya2Rvd24ubGlzcAo+ICsrKyBiL2NvbnRyaWIvc2ItbWFudWFsL21hcmtkb3duLmxpc3AK PiBAQCAtMTk0LDIzICsxOTQsNiBAQAo+ICAgICAgICAgICh0Cj4gICAgICAgICAgIChjb25zIChj YXIgbGlzdCkgKGZsYXR0ZW4gKGNkciBsaXN0KSkpKSkpCj4KPiAtKGRlZnVuIHdoaXRlc3BhY2Vw IChjaGFyKQo+IC0gIChmaW5kIGNoYXIgIygjXHRhYiAjXHNwYWNlICNccGFnZSAjXG5ld2xpbmUg I1xyZXR1cm4pKSkKPiAtCj4gLTs7OyBTcGxpdCBTVFJJTkcgaW50byBhIHZlY3RvciBvZiBsaW5l cy4KPiAtKGRlZnVuIHN0cmluZy1saW5lcyAoc3RyaW5nKQo+IC0gIChjb2VyY2UgKHdpdGgtaW5w dXQtZnJvbS1zdHJpbmcgKHMgc3RyaW5nKQo+IC0gICAgICAgICAgICAobG9vcCBmb3IgbGluZSA9 IChyZWFkLWxpbmUgcyBuaWwgbmlsKQo+IC0gICAgICAgICAgICAgICB3aGlsZSBsaW5lIGNvbGxl Y3QgbGluZSkpCj4gLSAgICAgICAgICAndmVjdG9yKSkKPiAtCj4gLTs7OyBQb3NpdGlvbiBvZiB0 aGUgZmlyc3Qgbm9uLVNQQUNFIGNoYXJhY3RlciBpbiBMSU5FLgo+IC0oZGVmdW4gaW5kZW50YXRp b24gKGxpbmUpCj4gLSAgKHBvc2l0aW9uLWlmLW5vdCAobGFtYmRhIChjKSAoY2hhcj0gYyAjXFNw YWNlKSkgbGluZSkpCj4gLQo+IC0oZGVmdW4gYmxhbmtwIChsaW5lKQo+IC0gIChudWxsIChpbmRl bnRhdGlvbiBsaW5lKSkpCj4gLQo+ICAoZGVmdW4gZmxhdHRlbi10by1zdHJpbmcgKGxpc3QpCj4g ICAgKGZvcm1hdCBuaWwgIn57fkF+Xi1+fSIgKGZsYXR0ZW4gbGlzdCkpKQo+Cj4gZGlmZiAtLWdp dCBhL2NvbnRyaWIvc2ItbWFudWFsL3BhY2thZ2UubGlzcCBiL2NvbnRyaWIvc2ItbWFudWFsL3Bh Y2thZ2UubGlzcAo+IGluZGV4IDAyYTdmYWRjMC4uMjU1NThlMDgzIDEwMDY0NAo+IC0tLSBhL2Nv bnRyaWIvc2ItbWFudWFsL3BhY2thZ2UubGlzcAo+ICsrKyBiL2NvbnRyaWIvc2ItbWFudWFsL3Bh Y2thZ2UubGlzcAo+IEBAIC0yLDQgKzIsNyBAQAo+ICAgIChoYW5kbGVyLWJpbmQgKChzYi1pbnQ6 cGFja2FnZS1hdC12YXJpYW5jZSAjJ211ZmZsZS13YXJuaW5nKSkKPiAgICAgIChkZWZwYWNrYWdl IDpzYi1tYW51YWwKPiAgICAgICAgKDp1c2UgOmNsIDpzYi1hbGllbikKPiAtICAgICAgKDpleHBv cnQgIzp1c2UtcGF4KSkpKQo+ICsgICAgICAoOmV4cG9ydCAjOnVzZS1wYXgpCj4gKyAgICAgICg6 aW1wb3J0LWZyb20gIzpzYi1wY2wKPiArICAgICAgICM6c3RyaW5nLWxpbmVzICM6d2hpdGVzcGFj ZXAgIzppbmRlbnRhdGlvbiAjOmJsYW5rcAo+ICsgICAgICAgIzpyZWluZGVudC1kb2NzdHJpbmcp KSkpCj4gZGlmZiAtLWdpdCBhL2NvbnRyaWIvc2ItbWFudWFsL3RleGluZm8ubGlzcCBiL2NvbnRy aWIvc2ItbWFudWFsL3RleGluZm8ubGlzcAo+IGluZGV4IGJhMTAxYzYxZS4uN2JhYmM0NmYwIDEw MDY0NAo+IC0tLSBhL2NvbnRyaWIvc2ItbWFudWFsL3RleGluZm8ubGlzcAo+ICsrKyBiL2NvbnRy aWIvc2ItbWFudWFsL3RleGluZm8ubGlzcAo+IEBAIC0xMCwyOCArMTAsMjkgQEAKPiAgICAgIChs YW1iZGEtbGlzdCogbmFtZSBsb2NhdGl2ZS10eXBlKSkpCj4KPiAgKGRlZnVuICVkb2NzdHJpbmcg KHhyZWYpCj4gLSAgKHZhbHVlcyAobGV0ICgobmFtZSAoeHJlZi1uYW1lIHhyZWYpKQo+IC0gICAg ICAgICAgICAgICAgKGxvY2F0aXZlLXR5cGUgKHhyZWYtbG9jYXRpdmUtdHlwZSB4cmVmKSkpCj4g LSAgICAgICAgICAgIChjYXNlIGxvY2F0aXZlLXR5cGUKPiAtICAgICAgICAgICAgICAoKGZ1bmN0 aW9uIHZhcmlhYmxlIGRlY2xhcmF0aW9uKQo+IC0gICAgICAgICAgICAgICAoZG9jdW1lbnRhdGlv biBuYW1lIGxvY2F0aXZlLXR5cGUpKQo+IC0gICAgICAgICAgICAgICgoZ2VuZXJpYy1mdW5jdGlv bikKPiAtICAgICAgICAgICAgICAgKGRvY3VtZW50YXRpb24gbmFtZSAnZnVuY3Rpb24pKQo+IC0g ICAgICAgICAgICAgICgodHlwZSBjbGFzcyBzdHJ1Y3R1cmUgY29uZGl0aW9uKQo+IC0gICAgICAg ICAgICAgICAoZG9jdW1lbnRhdGlvbiBuYW1lICd0eXBlKSkKPiAtICAgICAgICAgICAgICAodAo+ IC0gICAgICAgICAgICAgICAoY29uZCAoKGVxIGxvY2F0aXZlLXR5cGUgKGR1bW15ICdtYWNybykp Cj4gLSAgICAgICAgICAgICAgICAgICAgICAoZG9jdW1lbnRhdGlvbiAobWFjcm8tZnVuY3Rpb24g bmFtZSkgdCkpCj4gLSAgICAgICAgICAgICAgICAgICAgICgoZXEgbG9jYXRpdmUtdHlwZSAoZHVt bXkgJ3NldGYtZnVuY3Rpb24pKQo+IC0gICAgICAgICAgICAgICAgICAgICAgKGRvY3VtZW50YXRp b24gKGZkZWZpbml0aW9uIG5hbWUpIHQpKQo+IC0gICAgICAgICAgICAgICAgICAgICAoKGVxIGxv Y2F0aXZlLXR5cGUgKGR1bW15ICdzZXRmLWdlbmVyaWMtZnVuY3Rpb24pKQo+IC0gICAgICAgICAg ICAgICAgICAgICAgKGRvY3VtZW50YXRpb24gKGZkZWZpbml0aW9uIG5hbWUpIHQpKQo+IC0gICAg ICAgICAgICAgICAgICAgICAodAo+IC0gICAgICAgICAgICAgICAgICAgICAgKGFzc2VydCBuaWwg KCkgIlVuZXhwZWN0ZWQgbG9jYXRpdmUgdHlwZSBpbiB+Uy4iCj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHhyZWYpKSkpKSkKPiAtICAgICAgICAgIDs7IFRvIGJlIGNvbXBhdGlibGUg d2l0aCBQQVg6OkBQQUNLQUdFLUFORC1SRUFEVEFCTEUsIHdlCj4gLSAgICAgICAgICA7OyBhbHdh eXMgcmV0dXJuIGEgbm9uLU5JTCBwYWNrYWdlLgo+IC0gICAgICAgICAgKGRvY3N0cmluZy1wYWNr YWdlIHhyZWYpKSkKPiArICAobGV0ICgoc2ItcGNsOjoqbm9ybWFsaXplLXNiY2wtZG9jc3RyaW5n cyogbmlsKSkKPiArICAgICh2YWx1ZXMgKGxldCAoKG5hbWUgKHhyZWYtbmFtZSB4cmVmKSkKPiAr ICAgICAgICAgICAgICAgICAgKGxvY2F0aXZlLXR5cGUgKHhyZWYtbG9jYXRpdmUtdHlwZSB4cmVm KSkpCj4gKyAgICAgICAgICAgICAgKGNhc2UgbG9jYXRpdmUtdHlwZQo+ICsgICAgICAgICAgICAg ICAgKChmdW5jdGlvbiB2YXJpYWJsZSBkZWNsYXJhdGlvbikKPiArICAgICAgICAgICAgICAgICAo ZG9jdW1lbnRhdGlvbiBuYW1lIGxvY2F0aXZlLXR5cGUpKQo+ICsgICAgICAgICAgICAgICAgKChn ZW5lcmljLWZ1bmN0aW9uKQo+ICsgICAgICAgICAgICAgICAgIChkb2N1bWVudGF0aW9uIG5hbWUg J2Z1bmN0aW9uKSkKPiArICAgICAgICAgICAgICAgICgodHlwZSBjbGFzcyBzdHJ1Y3R1cmUgY29u ZGl0aW9uKQo+ICsgICAgICAgICAgICAgICAgIChkb2N1bWVudGF0aW9uIG5hbWUgJ3R5cGUpKQo+ ICsgICAgICAgICAgICAgICAgKHQKPiArICAgICAgICAgICAgICAgICAoY29uZCAoKGVxIGxvY2F0 aXZlLXR5cGUgKGR1bW15ICdtYWNybykpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIChkb2N1 bWVudGF0aW9uIChtYWNyby1mdW5jdGlvbiBuYW1lKSB0KSkKPiArICAgICAgICAgICAgICAgICAg ICAgICAoKGVxIGxvY2F0aXZlLXR5cGUgKGR1bW15ICdzZXRmLWZ1bmN0aW9uKSkKPiArICAgICAg ICAgICAgICAgICAgICAgICAgKGRvY3VtZW50YXRpb24gKGZkZWZpbml0aW9uIG5hbWUpIHQpKQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICgoZXEgbG9jYXRpdmUtdHlwZSAoZHVtbXkgJ3NldGYt Z2VuZXJpYy1mdW5jdGlvbikpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIChkb2N1bWVudGF0 aW9uIChmZGVmaW5pdGlvbiBuYW1lKSB0KSkKPiArICAgICAgICAgICAgICAgICAgICAgICAodAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAoYXNzZXJ0IG5pbCAoKSAiVW5leHBlY3RlZCBsb2Nh dGl2ZSB0eXBlIGluIH5TLiIKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cmVm KSkpKSkpCj4gKyAgICAgICAgICAgIDs7IFRvIGJlIGNvbXBhdGlibGUgd2l0aCBQQVg6OkBQQUNL QUdFLUFORC1SRUFEVEFCTEUsIHdlCj4gKyAgICAgICAgICAgIDs7IGFsd2F5cyByZXR1cm4gYSBu b24tTklMIHBhY2thZ2UuCj4gKyAgICAgICAgICAgIChkb2NzdHJpbmctcGFja2FnZSB4cmVmKSkp KQo+Cj4gIChkZWZ1biBsYW1iZGEtbGlzdCogKG5hbWUga2luZCkKPiAgICAoY2FzZSBraW5kCj4g ZGlmZiAtLWdpdCBhL3NyYy9wY2wvZG9jdW1lbnRhdGlvbi5saXNwIGIvc3JjL3BjbC9kb2N1bWVu dGF0aW9uLmxpc3AKPiBpbmRleCAzYmRlYmJjZjEuLjE1ZDljOTM1NyAxMDA2NDQKPiAtLS0gYS9z cmMvcGNsL2RvY3VtZW50YXRpb24ubGlzcAo+ICsrKyBiL3NyYy9wY2wvZG9jdW1lbnRhdGlvbi5s aXNwCj4gQEAgLTIxNiw3ICsyMTYsNDUgQEAKPiAgICAgICAgICAgICAgICAgICh0Cj4gICAgICAg ICAgICAgICAgICAgeCkpKQo+ICAgICAgICAgIChkb2N1bWVudGF0aW9uIChjYWxsLW5leHQtbWV0 aG9kKSkpCj4gLSAgICAobWF5YmUtYWRkLWRlcHJlY2F0aW9uLW5vdGUgbmFtZXNwYWNlIG5hbWUg ZG9jdW1lbnRhdGlvbikpKQo+ICsgICAgKG1heWJlLWFkZC1kZXByZWNhdGlvbi1ub3RlIG5hbWVz cGFjZSBuYW1lCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vcm1hbGl6ZS1z YmNsLWRvY3N0cmluZyB4IG5hbWUgZG9jLXR5cGUKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50YXRpb24pKSkpCj4gKwo+ ICsoZGVmdmFyICpub3JtYWxpemUtc2JjbC1kb2NzdHJpbmdzKiB0KQo+ICsKPiArKGRlZnVuIG5v cm1hbGl6ZS1zYmNsLWRvY3N0cmluZyAob2JqZWN0IG5hbWUgZG9jLXR5cGUgZG9jc3RyaW5nKQo+ ICsgIChpZiAoYW5kICpub3JtYWxpemUtc2JjbC1kb2NzdHJpbmdzKgo+ICsgICAgICAgICAgIGRv Y3N0cmluZwo+ICsgICAgICAgICAgIChzYmNsLWRlZmluaXRpb24tbmFtZS1wIG9iamVjdCBuYW1l IGRvYy10eXBlKSkKPiArICAgICAgKHN0cmluZy1yaWdodC10cmltICcoI1xOZXdsaW5lKSAobWFy a2Rvd24tdG8tcGxhaW4tdGV4dAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAocmVpbmRlbnQtZG9jc3RyaW5nIGRvY3N0cmluZykpKQo+ICsgICAgICBkb2NzdHJpbmcp KQo+ICsKPiArKGRlZnVuIG5vbi1zZXRmLW5hbWUgKG5hbWUpCj4gKyAgKGlmIChhbmQgKGNvbnNw IG5hbWUpCj4gKyAgICAgICAgICAgKGVxIChmaXJzdCBuYW1lKSAnc2V0ZikKPiArICAgICAgICAg ICAoY29uc3AgKGNkciBuYW1lKSkpCj4gKyAgICAgIChzZWNvbmQgbmFtZSkKPiArICAgICAgbmFt ZSkpCj4gKwo+ICsoZGVmdW4gc2JjbC1wYWNrYWdlLW5hbWUtcCAobmFtZSkKPiArICAod2hlbiAo c3RyaW5ncCBuYW1lKQo+ICsgICAgKG9yIChzdHJpbmc9IG5hbWUgIkNPTU1PTi1MSVNQIikKPiAr ICAgICAgICAoYW5kICg+PSAobGVuZ3RoIG5hbWUpIDMpCj4gKyAgICAgICAgICAgICAoc3RyaW5n PSBuYW1lICJTQi0iIDplbmQxIDMpKSkpKQo+ICsKPiArKGRlZnVuIHNiY2wtZGVmaW5pdGlvbi1u YW1lLXAgKG9iamVjdCBuYW1lIGRvYy10eXBlKQo+ICsgIChhbmQgKG1lbWJlciBkb2MtdHlwZSAn KHQgY29tcGlsZXItbWFjcm8gZnVuY3Rpb24gbWV0aG9kLWNvbWJpbmF0aW9uIHNldGYKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmUgdHlwZSB2YXJpYWJsZSBkZWNsYXJhdGlv bikpCj4gKyAgICAgICAoaWYgKGFuZCAocGFja2FnZXAgb2JqZWN0KSAoZXEgZG9jLXR5cGUgdCkp Cj4gKyAgICAgICAgICAgKHNiY2wtcGFja2FnZS1uYW1lLXAgKHBhY2thZ2UtbmFtZSBuYW1lKSkK PiArICAgICAgICAgICAobGV0ICgobmFtZSAobm9uLXNldGYtbmFtZSBuYW1lKSkpCj4gKyAgICAg ICAgICAgICAoaWYgKG51bGwgbmFtZSkKPiArICAgICAgICAgICAgICAgICAobnVsbCBvYmplY3Qp Cj4gKyAgICAgICAgICAgICAgICAgKHdoZW4gKHN5bWJvbHAgbmFtZSkKPiArICAgICAgICAgICAg ICAgICAgIChsZXQgKChwYWNrYWdlIChzeW1ib2wtcGFja2FnZSBuYW1lKSkpCj4gKyAgICAgICAg ICAgICAgICAgICAgICh3aGVuIHBhY2thZ2UKPiArICAgICAgICAgICAgICAgICAgICAgICAoc2Jj bC1wYWNrYWdlLW5hbWUtcCAocGFja2FnZS1uYW1lIHBhY2thZ2UpKSkpKSkpKSkpCj4KPiAgOzs7 IGZ1bmN0aW9ucywgbWFjcm9zLCBhbmQgc3BlY2lhbCBmb3Jtcwo+Cj4gQEAgLTQ2NywzICs1MDUs MjEwIEBAIGNvbXBhcmlzb24uIikKPgo+ICAoZG9saXN0IChhcmdzIChwcm9nMSAqIWRvY3N0cmlu Z3MqIChtYWt1bmJvdW5kICcqIWRvY3N0cmluZ3MqKSkpCj4gICAgKGFwcGx5ICMnKHNldGYgZG9j dW1lbnRhdGlvbikgYXJncykpCj4gKwo+ICs7Ozs7IE1hcmtkb3duIHRvIHBsYWluIHRleHQgYWxv bmcgdGhlIGxpbmVzIG9mIFNCLU1BTlVBTDo6TUFSS0RPV04tVE8tVEVYSU5GTwo+ICsKPiArKGRl ZnVuIG1hcmtkb3duLXRvLXBsYWluLXRleHQgKHN0cmluZykKPiArICAobWFya2Rvd24tbGluZXMt dG8tcGxhaW4tdGV4dCAoc3RyaW5nLWxpbmVzIHN0cmluZykgMCkpCj4gKwo+ICsoZGVmdW4gbWFy a2Rvd24tbGluZXMtdG8tcGxhaW4tdGV4dCAobGluZXMgYmFzZS1pbmRlbnQpCj4gKyAgKHdpdGgt b3V0cHV0LXRvLXN0cmluZyAob3V0KQo+ICsgICAgKGxldCAoKGJ1ZiBuaWwpKQo+ICsgICAgICAo bGFiZWxzICgoZmx1c2ggKCkKPiArICAgICAgICAgICAgICAgICAod3JpdGUtbWQtcGFyYWdyYXBo IGJ1ZiBvdXQpCj4gKyAgICAgICAgICAgICAgICAgKHNldHEgYnVmIG5pbCkpKQo+ICsgICAgICAg IChsb29wIGZvciBsIGJlbG93IChsZW5ndGggbGluZXMpCj4gKyAgICAgICAgICAgICAgZm9yIGxp bmUgPSAoc3ZyZWYgbGluZXMgbCkKPiArICAgICAgICAgICAgICBkbyAobGV0ICgobiAod3JpdGUt bWQtYmxvY2sgbGluZXMgbCBiYXNlLWluZGVudCBvdXQgIydmbHVzaCkpKQo+ICsgICAgICAgICAg ICAgICAgICAgKGlmIG4KPiArICAgICAgICAgICAgICAgICAgICAgICAoaW5jZiBsICgxLSBuKSkK PiArICAgICAgICAgICAgICAgICAgICAgICAocHVzaCBsaW5lIGJ1ZikpKSkKPiArICAgICAgICAo Zmx1c2gpKSkpKQo+ICsKPiArKGRlZnVuIHN0cmluZy1saW5lcyAoc3RyaW5nKQo+ICsgIChjb2Vy Y2UgKHdpdGgtaW5wdXQtZnJvbS1zdHJpbmcgKHMgc3RyaW5nKQo+ICsgICAgICAgICAgICAobG9v cCBmb3IgbGluZSA9IChyZWFkLWxpbmUgcyBuaWwgbmlsKQo+ICsgICAgICAgICAgICAgICAgICB3 aGlsZSBsaW5lIGNvbGxlY3QgbGluZSkpCj4gKyAgICAgICAgICAndmVjdG9yKSkKPiArCj4gKyhk ZWZ1biB3aGl0ZXNwYWNlcCAoY2hhcikKPiArICAoZmluZCBjaGFyICMoI1xUYWIgI1xTcGFjZSAj XFBhZ2UgI1xOZXdsaW5lICNcUmV0dXJuKSkpCj4gKwo+ICsoZGVmdW4gaW5kZW50YXRpb24gKGxp bmUpCj4gKyAgKHBvc2l0aW9uLWlmLW5vdCAjJ3doaXRlc3BhY2VwIGxpbmUpKQo+ICsKPiArKGRl ZnVuIGJsYW5rcCAobGluZSkKPiArICAobnVsbCAoaW5kZW50YXRpb24gbGluZSkpKQo+ICsKPiAr KGRlZnVuIHdyaXRlLW1kLXBhcmFncmFwaCAocmV2ZXJzZWQtbGluZXMgb3V0KQo+ICsgICh3aGVu IHJldmVyc2VkLWxpbmVzCj4gKyAgICAobGV0KiAoKHN0ciAoZm9ybWF0IG5pbCAifnt+QX5efiV+ fSIgKHJldmVyc2UgcmV2ZXJzZWQtbGluZXMpKSkKPiArICAgICAgICAgICAobGVuIChsZW5ndGgg c3RyKSkKPiArICAgICAgICAgICAoYm91bmQgdCkpCj4gKyAgICAgIChsb29wIGZvciBpIGJlbG93 IGxlbgo+ICsgICAgICAgICAgICBmb3IgYyA9IChjaGFyIHN0ciBpKQo+ICsgICAgICAgICAgICBk byAoY29uZAo+ICsgICAgICAgICAgICAgICAgICgoYW5kIGJvdW5kIChjaGFyPSBjICNcXCkpCj4g KyAgICAgICAgICAgICAgICAgICh3aGVuIChhbmQgKDwgKDErIGkpIGxlbikKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoY2hhcj0gKGNoYXIgc3RyICgxKyBpKSkgI1xcKSkKPiArICAg ICAgICAgICAgICAgICAgICAoaW5jZiBpKSkKPiArICAgICAgICAgICAgICAgICAgKHNldGYgYm91 bmQgbmlsKSkKPiArICAgICAgICAgICAgICAgICAoKGNoYXI9IGMgI1xgKQo+ICsgICAgICAgICAg ICAgICAgICAoaW5jZiBpKQo+ICsgICAgICAgICAgICAgICAgICAobG9vcCByZXBlYXQgMgo+ICsg ICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoPCBpIGxlbikKPiArICAgICAgICAgICAgICAg ICAgICAgICAgd2hpbGUgKGNoYXI9IChjaGFyIHN0ciBpKSAjXFwpCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGRvIChpbmNmIGkpKQo+ICsgICAgICAgICAgICAgICAgICAobG9vcCB3aGlsZSAo PCBpIGxlbikKPiArICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGNoYXIvPSAoY2hhciBz dHIgaSkgI1xgKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBkbyAod3JpdGUtY2hhciAoY2hh ciBzdHIgaSkgb3V0KQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5jZiBpKSkKPiAr ICAgICAgICAgICAgICAgICAgKHNldHEgYm91bmQgbmlsKSkKPiArICAgICAgICAgICAgICAgICAo dAo+ICsgICAgICAgICAgICAgICAgICAod3JpdGUtY2hhciBjIG91dCkKPiArICAgICAgICAgICAg ICAgICAgKHNldHEgYm91bmQgKHdoaXRlc3BhY2VwIGMpKSkpKQo+ICsgICAgICAodGVycHJpIG91 dCkpKSkKPiArCj4gKyhkZWZ1biB3cml0ZS1tZC1ibG9jayAobGluZXMgaW5kZXggYmFzZS1pbmRl bnQgb3V0IGZsdXNoLWZuKQo+ICsgIChvciAod3JpdGUtbWQtZmVuY2VkLWNvZGUgbGluZXMgaW5k ZXggYmFzZS1pbmRlbnQgb3V0IGZsdXNoLWZuKQo+ICsgICAgICAod3JpdGUtbWQtaW5kZW50ZWQt Y29kZSBsaW5lcyBpbmRleCBiYXNlLWluZGVudCBvdXQgZmx1c2gtZm4pCj4gKyAgICAgICh3cml0 ZS1tZC1ibG9ja3F1b3RlIGxpbmVzIGluZGV4IGJhc2UtaW5kZW50IG91dCBmbHVzaC1mbikKPiAr ICAgICAgKHdyaXRlLW1kLW1hcmtkb3duLWl0ZW1pemUgbGluZXMgaW5kZXggYmFzZS1pbmRlbnQg b3V0IGZsdXNoLWZuKSkpCj4gKwo+ICsoZGVmdW4gd3JpdGUtbWQtZmVuY2VkLWNvZGUgKGxpbmVz IHN0YXJ0IGJhc2UtaW5kZW50IG91dCBmbHVzaC1mbikKPiArICAoZGVjbGFyZSAoaWdub3JlIGJh c2UtaW5kZW50KSkKPiArICAobGV0KiAoKGxpbmUgKHN2cmVmIGxpbmVzIHN0YXJ0KSkKPiArICAg ICAgICAgKGkgKGluZGVudGF0aW9uIGxpbmUpKSkKPiArICAgICh3aGVuIChhbmQgaSAoPj0gKGxl bmd0aCBsaW5lKSAoKyBpIDMpKQo+ICsgICAgICAgICAgICAgICAoc3RyaW5nPSBsaW5lICJgYGAi IDpzdGFydDEgaSA6ZW5kMSAoKyBpIDMpKSkKPiArICAgICAgKGZ1bmNhbGwgZmx1c2gtZm4pCj4g KyAgICAgIChsb29wIGZvciBsIGZyb20gKDErIHN0YXJ0KSBiZWxvdyAobGVuZ3RoIGxpbmVzKQo+ ICsgICAgICAgICAgICBmb3IgbGluZSA9IChzdnJlZiBsaW5lcyBsKQo+ICsgICAgICAgICAgICBm b3IgaW5kID0gKGluZGVudGF0aW9uIGxpbmUpCj4gKyAgICAgICAgICAgIGlmIChhbmQgaW5kICg+ PSAobGVuZ3RoIGxpbmUpICgrIGluZCAzKSkKPiArICAgICAgICAgICAgICAgICAgICAoc3RyaW5n PSBsaW5lICJgYGAiIDpzdGFydDEgaW5kIDplbmQxICgrIGluZCAzKSkpCj4gKyAgICAgICAgICAg ICAgZG8gKHJldHVybiAoLSAoMSsgbCkgc3RhcnQpKQo+ICsgICAgICAgICAgICBlbHNlIGRvICh3 cml0ZS1saW5lIGxpbmUgb3V0KQo+ICsgICAgICAgICAgICBmaW5hbGx5IChyZXR1cm4gKC0gbCBz dGFydCkpKSkpKQo+ICsKPiArKGRlZnVuIHdyaXRlLW1kLWluZGVudGVkLWNvZGUgKGxpbmVzIHN0 YXJ0IGJhc2UtaW5kZW50IG91dCBmbHVzaC1mbikKPiArICAod2hlbiAob3IgKHplcm9wIHN0YXJ0 KQo+ICsgICAgICAgICAgICAoYmxhbmtwIChzdnJlZiBsaW5lcyAoMS0gc3RhcnQpKSkpCj4gKyAg ICAobGV0ICgoaSAoaW5kZW50YXRpb24gKHN2cmVmIGxpbmVzIHN0YXJ0KSkpKQo+ICsgICAgICAo d2hlbiAoYW5kIGkgKD49IGkgKCsgYmFzZS1pbmRlbnQgNCkpKQo+ICsgICAgICAgIChmdW5jYWxs IGZsdXNoLWZuKQo+ICsgICAgICAgIChsb29wIGZvciBsIGZyb20gc3RhcnQgYmVsb3cgKGxlbmd0 aCBsaW5lcykKPiArICAgICAgICAgICAgICBmb3IgbGluZSA9IChzdnJlZiBsaW5lcyBsKQo+ICsg ICAgICAgICAgICAgIGZvciBpbmQgPSAoaW5kZW50YXRpb24gbGluZSkKPiArICAgICAgICAgICAg ICB3aGlsZSAob3IgKG51bGwgaW5kKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAoPj0gaW5k ICgrIGJhc2UtaW5kZW50IDQpKSkKPiArICAgICAgICAgICAgICBkbyAod3JpdGUtbGluZSBsaW5l IG91dCkKPiArICAgICAgICAgICAgICBmaW5hbGx5IChyZXR1cm4gKC0gbCBzdGFydCkpKSkpKSkK PiArCj4gKyhkZWZ1biB3cml0ZS1tZC1ibG9ja3F1b3RlIChsaW5lcyBzdGFydCBiYXNlLWluZGVu dCBvdXQgZmx1c2gtZm4pCj4gKyAgKHdoZW4gKG9yICh6ZXJvcCBzdGFydCkKPiArICAgICAgICAg ICAgKGJsYW5rcCAoc3ZyZWYgbGluZXMgKDEtIHN0YXJ0KSkpKQo+ICsgICAgKGxldCAoKGkgKGlu ZGVudGF0aW9uIChzdnJlZiBsaW5lcyBzdGFydCkpKSkKPiArICAgICAgKHdoZW4gKGFuZCBpICg8 PSBpICgrIGJhc2UtaW5kZW50IDMpKQo+ICsgICAgICAgICAgICAgICAgIChjaGFyPSAoY2hhciAo c3ZyZWYgbGluZXMgc3RhcnQpIGkpICNcPikpCj4gKyAgICAgICAgKGZ1bmNhbGwgZmx1c2gtZm4p Cj4gKyAgICAgICAgKGxldCAoc3RyaXBwZWQgcHJlZml4ZXMpCj4gKyAgICAgICAgICAobG9vcCBm b3IgbCBmcm9tIHN0YXJ0IGJlbG93IChsZW5ndGggbGluZXMpCj4gKyAgICAgICAgICAgICAgICBm b3IgbGluZSA9IChzdnJlZiBsaW5lcyBsKQo+ICsgICAgICAgICAgICAgICAgZm9yIGluZCA9IChp bmRlbnRhdGlvbiBsaW5lKQo+ICsgICAgICAgICAgICAgICAgd2hpbGUgKGFuZCBpbmQgKDw9IGlu ZCAoKyBiYXNlLWluZGVudCAzKSkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXI9 IChjaGFyIGxpbmUgaW5kKSAjXD4pKQo+ICsgICAgICAgICAgICAgICAgZG8gKGxldCAoKGMtc3Rh cnQgKGlmIChhbmQgKDwgKDErIGluZCkgKGxlbmd0aCBsaW5lKSkKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyPSAoY2hhciBsaW5lICgxKyBpbmQpKSAj XFNwYWNlKSkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKyBpbmQg MikgKDErIGluZCkpKSkKPiArICAgICAgICAgICAgICAgICAgICAgKHB1c2ggKHN1YnNlcSBsaW5l IGMtc3RhcnQpIHN0cmlwcGVkKQo+ICsgICAgICAgICAgICAgICAgICAgICAocHVzaCAoc3Vic2Vx IGxpbmUgMCBjLXN0YXJ0KSBwcmVmaXhlcykpKQo+ICsgICAgICAgICAgKGxldCAoKGlubmVyICht YXJrZG93bi1saW5lcy10by1wbGFpbi10ZXh0Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIChj b2VyY2UgKG5yZXZlcnNlIHN0cmlwcGVkKSAndmVjdG9yKSAwKSkpCj4gKyAgICAgICAgICAgIChs b29wIGZvciBwcmVmaXggaW4gKG5yZXZlcnNlIHByZWZpeGVzKQo+ICsgICAgICAgICAgICAgICAg ICBmb3IgbGluZSBhY3Jvc3MgKHN0cmluZy1saW5lcyBpbm5lcikKPiArICAgICAgICAgICAgICAg ICAgZG8gKHdyaXRlLXN0cmluZyBwcmVmaXggb3V0KQo+ICsgICAgICAgICAgICAgICAgICAgICAo d3JpdGUtbGluZSBsaW5lIG91dCkpKQo+ICsgICAgICAgICAgKGxlbmd0aCBwcmVmaXhlcykpKSkp KQo+ICsKPiArKGRlZnVuIG1heWJlLWl0ZW1pemUtb2Zmc2V0IChsaW5lKQo+ICsgIChsZXQgKChp IChpbmRlbnRhdGlvbiBsaW5lKSkpCj4gKyAgICAod2hlbiAoYW5kIGkgKDwgKDErIGkpIChsZW5n dGggbGluZSkpCj4gKyAgICAgICAgICAgICAgIChmaW5kIChjaGFyIGxpbmUgaSkgIi0qIikKPiAr ICAgICAgICAgICAgICAgKGNoYXI9IChjaGFyIGxpbmUgKDErIGkpKSAjXFNwYWNlKSkKPiArICAg ICAgaSkpKQo+ICsKPiArKGRlZnVuIHdyaXRlLW1kLW1hcmtkb3duLWl0ZW1pemUgKGxpbmVzIHN0 YXJ0IGJhc2UtaW5kZW50IG91dCBmbHVzaC1mbikKPiArICAod2hlbiAoZXFsIChtYXliZS1pdGVt aXplLW9mZnNldCAoc3ZyZWYgbGluZXMgc3RhcnQpKSBiYXNlLWluZGVudCkKPiArICAgIChmdW5j YWxsIGZsdXNoLWZuKQo+ICsgICAgKGxldCAoKGNoaWxkICgrIGJhc2UtaW5kZW50IDQpKQo+ICsg ICAgICAgICAgKGJ1ZiBuaWwpKQo+ICsgICAgICAobGFiZWxzICgoZmx1c2ggKCkKPiArICAgICAg ICAgICAgICAgICAod3JpdGUtbWQtcGFyYWdyYXBoIGJ1ZiBvdXQpCj4gKyAgICAgICAgICAgICAg ICAgKHNldHEgYnVmIG5pbCkpKQo+ICsgICAgICAgIChsb29wIGZvciBsIGZyb20gc3RhcnQgYmVs b3cgKGxlbmd0aCBsaW5lcykKPiArICAgICAgICAgICAgICBmb3IgbGluZSA9IChzdnJlZiBsaW5l cyBsKQo+ICsgICAgICAgICAgICAgIGZvciBpbmQgPSAoaW5kZW50YXRpb24gbGluZSkKPiArICAg ICAgICAgICAgICBkbyAoY29uZCAoKGJsYW5rcCBsaW5lKQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAoZmx1c2gpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICh3cml0ZS1saW5lIGxpbmUg b3V0KSkKPiArICAgICAgICAgICAgICAgICAgICAgICAoKGVxbCAobWF5YmUtaXRlbWl6ZS1vZmZz ZXQgbGluZSkgYmFzZS1pbmRlbnQpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIChmbHVzaCkK PiArICAgICAgICAgICAgICAgICAgICAgICAgKHB1c2ggbGluZSBidWYpKQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICgoPj0gaW5kIGNoaWxkKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAo bGV0ICgobiAod3JpdGUtbWQtYmxvY2sgbGluZXMgbCBjaGlsZCBvdXQgIydmbHVzaCkpKQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBuCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChpbmNmIGwgKDEtIG4pKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo cHVzaCBsaW5lIGJ1ZikpKSkKPiArICAgICAgICAgICAgICAgICAgICAgICAoKD4gaW5kIGJhc2Ut aW5kZW50KQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAocHVzaCBsaW5lIGJ1ZikpCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgKHQKPiArICAgICAgICAgICAgICAgICAgICAgICAgKGxvb3At ZmluaXNoKSkpCj4gKyAgICAgICAgICAgICAgZmluYWxseSAoZmx1c2gpCj4gKyAgICAgICAgICAg ICAgICAgICAgICAocmV0dXJuICgtIGwgc3RhcnQpKSkpKSkpCj4gKwo+ICsKPiArOzs7IE5vcm1h bGl6ZSBkb2NzdHJpbmcgaW5kZW50YXRpb24gYnkgc3RyaXBwaW5nIHRoZSBsb25nZXN0IHJ1biBv Zgo+ICs7OzsgbGVhZGluZyBzcGFjZXMgY29tbW9uIHRvIGFsbCBub24tYmxhbmsgbGluZXMgZXhj ZXB0IHRoZSBmaXJzdC4KPiArKGRlZnVuIHJlaW5kZW50LWRvY3N0cmluZyAoZG9jc3RyaW5nKQo+ ICsgIChsZXQgKChpbmRlbnRhdGlvbiAoZG9jc3RyaW5nLWluZGVudGF0aW9uIGRvY3N0cmluZykp KQo+ICsgICAgKHN0cmlwLWRvY3N0cmluZy1pbmRlbnQgZG9jc3RyaW5nIGluZGVudGF0aW9uIHQp KSkKPiArCj4gKzs7OyBSZXR1cm4gdGhlIG1pbmltdW0gbnVtYmVyIG9mIGxlYWRpbmcgc3BhY2Vz IGluIG5vbi1ibGFuayBsaW5lcwo+ICs7OzsgYWZ0ZXIgdGhlIGZpcnN0Lgo+ICsoZGVmdW4gZG9j c3RyaW5nLWluZGVudGF0aW9uIChkb2NzdHJpbmcgJmtleSAoZmlyc3QtbGluZS1zcGVjaWFsLXAg dCkpCj4gKyAgKGxldCAoKG4tbWluLWluZGVudGF0aW9uIG5pbCkpCj4gKyAgICAod2l0aC1pbnB1 dC1mcm9tLXN0cmluZyAocyBkb2NzdHJpbmcpCj4gKyAgICAgIChsb29wIGZvciBpIHVwZnJvbSAw Cj4gKyAgICAgICAgICAgIGZvciBsaW5lID0gKHJlYWQtbGluZSBzIG5pbCBuaWwpCj4gKyAgICAg ICAgICAgIHdoaWxlIGxpbmUKPiArICAgICAgICAgICAgZG8gKHdoZW4gKGFuZCAob3IgKG5vdCBm aXJzdC1saW5lLXNwZWNpYWwtcCkgKHBsdXNwIGkpKQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgIChub3QgKGJsYW5rcCBsaW5lKSkpCj4gKyAgICAgICAgICAgICAgICAgKHdoZW4gKG9yIChu dWxsIG4tbWluLWluZGVudGF0aW9uKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAoPCAo bi1sZWFkaW5nLXNwYWNlcyBsaW5lKSBuLW1pbi1pbmRlbnRhdGlvbikpCj4gKyAgICAgICAgICAg ICAgICAgICAoc2V0cSBuLW1pbi1pbmRlbnRhdGlvbiAobi1sZWFkaW5nLXNwYWNlcyBsaW5lKSkp KSkpCj4gKyAgICAob3Igbi1taW4taW5kZW50YXRpb24gMCkpKQo+ICsKPiArKGRlZnVuIG4tbGVh ZGluZy1zcGFjZXMgKGxpbmUpCj4gKyAgKGxldCAoKG4gMCkpCj4gKyAgICAobG9vcCBmb3IgaSBi ZWxvdyAobGVuZ3RoIGxpbmUpCj4gKyAgICAgICAgICB3aGlsZSAoY2hhcj0gKGFyZWYgbGluZSBp KSAjXFNwYWNlKQo+ICsgICAgICAgICAgZG8gKGluY2YgbikpCj4gKyAgICBuKSkKPiArCj4gKyhk ZWZ1biBzdHJpcC1kb2NzdHJpbmctaW5kZW50IChkb2NzdHJpbmcgaW5kZW50YXRpb24gZmlyc3Qt bGluZS1zcGVjaWFsLXApCj4gKyAgKHdpdGgtb3V0cHV0LXRvLXN0cmluZyAob3V0KQo+ICsgICAg KHdpdGgtaW5wdXQtZnJvbS1zdHJpbmcgKHMgZG9jc3RyaW5nKQo+ICsgICAgICAobG9vcCBmb3Ig aSB1cGZyb20gMAo+ICsgICAgICAgICAgICBkbyAobXVsdGlwbGUtdmFsdWUtYmluZCAobGluZSBt aXNzaW5nLW5ld2xpbmUtcCkKPiArICAgICAgICAgICAgICAgICAgIChyZWFkLWxpbmUgcyBuaWwg bmlsKQo+ICsgICAgICAgICAgICAgICAgICh1bmxlc3MgbGluZQo+ICsgICAgICAgICAgICAgICAg ICAgKHJldHVybikpCj4gKyAgICAgICAgICAgICAgICAgKHdyaXRlLXN0cmluZyAoaWYgKGFuZCBm aXJzdC1saW5lLXNwZWNpYWwtcAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHplcm9wIGkpKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp bmUKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Vic2VxIGxpbmUgKG1p biAobGVuZ3RoIGxpbmUpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5kZW50YXRpb24pKSkKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG91dCkKPiArICAgICAgICAgICAgICAgICAodW5sZXNzIG1pc3NpbmctbmV3bGluZS1w Cj4gKyAgICAgICAgICAgICAgICAgICAodGVycHJpIG91dCkpKSkpKSkKPgo+IC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4KPgo+IGhvb2tzL3Bvc3QtcmVjZWl2ZQo+IC0tCj4gU0JDTAo+Cj4KPiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IFNiY2wtY29tbWl0cyBtYWls aW5nIGxpc3QKPiBTYmNsLWNvbW1pdHNAbGlzdHMuc291cmNlZm9yZ2UubmV0Cj4gaHR0cHM6Ly9s aXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vc2JjbC1jb21taXRzCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KU2JjbC1jb21taXRzIG1h aWxpbmcgbGlzdApTYmNsLWNvbW1pdHNAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlz dHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL3NiY2wtY29tbWl0cwo=