Re: master: Perform local common subexpression elimination for some memory loads
Stas Boukarev <[email protected]> Tue, 4 Aug 2026 04:22:08 +0300
| Newsgroups | gmane.lisp.steel-bank.cvs,gmane.lisp.steel-bank.devel |
|---|---|
| Message-ID | <CAF63=11GgUy6z5=hcU0mZMuzPLO+5uvvdp2Und8OnN4JkBN0yQ@mail.gmail.com> |
KGRlZnN0cnVjdCBzCiAgKHggKG1ha2UtYXJyYXkgMykpKQoKKGxldCAoKikKICAobGFtYmRhICgp CiAgICAobGV0KiAoKHMgIy4obWFrZS1zKSkKICAgICAgICAgICAoYSAocy14IHMpKQogICAgICAg ICAgIChiIChzLXggcykpKQogICAgICAodmFsdWVzIChhcmVmIGEgMCkKICAgICAgICAgICAgICAo YXJlZiBiIDApKSkpKQoKCmRlYnVnZ2VyIGludm9rZWQgb24gYSBTQi1JTlQ6QlVHIEBCODAwN0I4 NUFEIGluIHRocmVhZAojPFRIUkVBRCB0aWQ9MTk4NjQwMiAibWFpbiB0aHJlYWQiIFJVTk5JTkcg ezEyMDE0RjAwMDN9PjoKICAgIGZhaWxlZCBBVkVSOiAoRVEgRU5WIChMQU1CREEtRU5WSVJPTk1F TlQgKExBTUJEQS1WQVItSE9NRSBUSElORykpKQoKT24gVHVlLCBBdWcgNCwgMjAyNiBhdCAzOjU5 4oCvQU0gc251Z2xhcyB2aWEgU2JjbC1jb21taXRzCjxzYmNsLWNvbW1pdHNAbGlzdHMuc291cmNl Zm9yZ2UubmV0PiB3cm90ZToKPgo+IFRoZSBicmFuY2ggIm1hc3RlciIgaGFzIGJlZW4gdXBkYXRl ZCBpbiBTQkNMOgo+ICAgICAgICB2aWEgIDEwMGM5YzJiZGNkY2I4NGZmMDRjOGZlZWY5ODNhNWI0 NDY5NWM5N2EgKGNvbW1pdCkKPiAgICAgICBmcm9tICBiNTQxZjJmMjViMTRiNjJmY2FiN2UxNGFh NTEyNGRiNWRkMWQ2YjIwIChjb21taXQpCj4KPiAtIExvZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+IGNvbW1pdCAxMDBj OWMyYmRjZGNiODRmZjA0YzhmZWVmOTgzYTViNDQ2OTVjOTdhCj4gQXV0aG9yOiBEb3VnbGFzIEth dHptYW4gPGRvdWdrQGdvb2dsZS5jb20+Cj4gRGF0ZTogICBUdWUgQXVnIDQgMDA6NTg6MjEgMjAy NiArMDAwMAo+Cj4gICAgIFBlcmZvcm0gbG9jYWwgY29tbW9uIHN1YmV4cHJlc3Npb24gZWxpbWlu YXRpb24gZm9yIHNvbWUgbWVtb3J5IGxvYWRzCj4KPiAgICAgVGhlIHRlY2huaXF1ZSBpcyB0byBm aW5kICJlcXVpdmFsZW50IiBsb2FkcyBpbiBiZXR3ZWVuIHdoaWNoIHRoZXJlIGlzIG5vCj4gICAg IGNvbXB1dGF0aW9uIHRoYXQgYWZmZWN0cyB0aGUgcmVzdWx0IG9mIHRoZSBsb2FkLiBBbHNvIGl0 IG5lZWRzIGEgc3Vycm91bmRpbmcKPiAgICAgTEVULCB3aGljaCBpcyBhdWdtZW50ZWQgd2l0aCBh IG5ldyB0ZW1wIHZhcmlhYmxlIGFzIGlmIHRoZSB1c2VyIGRpZCB0aGF0Lgo+ICAgICBUaGlzIGlz IHNsaWdodGx5IGRlZmljaWVudCBmb3IgdmFyaW91cyByZWFzb25zOgo+ICAgICAxLiBpdCB3b24n dCBkbyBhbnl0aGluZyB3aXRob3V0IHRoZSBMRVQKPiAgICAgMi4gdGhlIG1vcmUga2luZHMgb2Yg Y29tbW9uIHN1YmV4cHJlc3Npb25zIHdlIGFsbG93IChzdWNoIGFzIG1hdGgpLAo+ICAgICAgICB0 aGUgc2xvd2VyIElSMS1PUFRJTUlaRS1DT01CSU5BVElPTiBpcyBnb2luZyB0byBydW4KPiAgICAg My4gdGhlcmUgYXJlIHBvc3NpYmx5IG90aGVyIG5vZGUgdHlwZXMgdGhhdCBzaG91bGQgYmUgYWxs b3dlZCB0byBpbnRlcnZlbmUKPgo+ICAgICBPbiB0aGUgcGx1cyBzaWRlLCBpdCdzIG5vdCBhbGwg dGhhdCBoYXJkIHRvIGV4dGVuZCB0aGUgbG9naWMgdG8gYWNjZXB0Cj4gICAgIG90aGVyIGZ1bmN0 aW9ucyBhcyBwYXJ0aWNpcGFudHMgaW4gY29tbW9uIHN1YmV4cHJlc3Npb25zLgo+Cj4gICAgIEFs bCB0ZXN0IGNhc2VzIHBsdXMgYSBsaXR0bGUgYml0IG9mIGFzc2lzdGFuY2UgZnJvbSBHZW1pbmkK PiAtLS0KPiAgc3JjL2NvbXBpbGVyL2lyMW9wdC5saXNwIHwgMTc5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+ICB0ZXN0cy9sY3NlLnB1cmUubGlzcCAgICAgfCAyMzQgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgeHBlcmZlY3Ro YXNoMzAubGlzcC1leHByIHwgICAzICsKPiAgeHBlcmZlY3RoYXNoNjEubGlzcC1leHByIHwgICAz ICsKPiAgeHBlcmZlY3RoYXNoNjMubGlzcC1leHByIHwgICAzICsKPiAgNSBmaWxlcyBjaGFuZ2Vk LCA0MjIgaW5zZXJ0aW9ucygrKQo+Cj4gZGlmZiAtLWdpdCBhL3NyYy9jb21waWxlci9pcjFvcHQu bGlzcCBiL3NyYy9jb21waWxlci9pcjFvcHQubGlzcAo+IGluZGV4IDg1NTk4MjRmMS4uZGFjMzkz ZTMxIDEwMDY0NAo+IC0tLSBhL3NyYy9jb21waWxlci9pcjFvcHQubGlzcAo+ICsrKyBiL3NyYy9j b21waWxlci9pcjFvcHQubGlzcAo+IEBAIC0xMjIwLDYgKzEyMjAsMTgyIEBACj4gICAgICAgICAg ICAgIChzaG93LXR5cGUtZGVyaXZhdGlvbiBjb21iaW5hdGlvbiByZXMpKQo+ICAgICAgICAgICAg KGNvZXJjZS10by12YWx1ZXMgcmVzKSkpKSkpCj4KPiArKGRlZnVuIGNvbGxlY3QtbHZhci12YXJz IChsdmFyKQo+ICsgIChkZWNsYXJlICh0eXBlIGx2YXIgbHZhcikpCj4gKyAgKGxldCAoKHVzZSAo cHJpbmNpcGFsLWx2YXItdXNlIGx2YXIpKSkKPiArICAgIChjb25kICgocmVmLXAgdXNlKQo+ICsg ICAgICAgICAgIChsZXQgKChsZWFmIChyZWYtbGVhZiB1c2UpKSkKPiArICAgICAgICAgICAgICh3 aGVuIChsYW1iZGEtdmFyLXAgbGVhZikKPiArICAgICAgICAgICAgICAgKGxpc3QgbGVhZikpKSkK PiArICAgICAgICAgICgoY29tYmluYXRpb24tcCB1c2UpCj4gKyAgICAgICAgICAgKG1hcGNhbiAj J2NvbGxlY3QtbHZhci12YXJzIChiYXNpYy1jb21iaW5hdGlvbi1hcmdzIHVzZSkpKQo+ICsgICAg ICAgICAgKHQgbmlsKSkpKQo+ICsKPiArKGRlZnVuIGZpbmQtYWN0aXZlLWxldC1sYW1iZGEgKG5v ZGUpCj4gKyAgKGRlY2xhcmUgKHR5cGUgbm9kZSBub2RlKSkKPiArICAobG9vcCBmb3IgZW52ID0g KG5vZGUtbGV4ZW52IG5vZGUpIHRoZW4gKGxleGVudi1wYXJlbnQgZW52KQo+ICsgICAgICAgIHdo aWxlIGVudgo+ICsgICAgICAgIGRvIChsZXQgKChsIChsZXhlbnYtbGFtYmRhIGVudikpKQo+ICsg ICAgICAgICAgICAgKHdoZW4gKGFuZCBsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIChmdW5j dGlvbmFsLWtpbmQtZXEgbCBsZXQpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGZ1 bmN0aW9uYWwta2luZC1lcSBsIHpvbWJpZSkpKQo+ICsgICAgICAgICAgICAgICAocmV0dXJuIGwp KSkpKQo+ICsKPiArKGRlZnVuIGFkZC12YXJpYWJsZS10by1sZXQtbGFtYmRhIChsZXQtbGFtYmRh IHYpCj4gKyAgKGRlY2xhcmUgKHR5cGUgY2xhbWJkYSBsZXQtbGFtYmRhKQo+ICsgICAgICAgICAg ICh0eXBlIGxhbWJkYS12YXIgdikpCj4gKyAgKHNldGYgKGxhbWJkYS12YXItaG9tZSB2KSBsZXQt bGFtYmRhKQo+ICsgIChzZXRmIChsYW1iZGEtdmFycyBsZXQtbGFtYmRhKSAoYXBwZW5kIChsYW1i ZGEtdmFycyBsZXQtbGFtYmRhKSAobGlzdCB2KSkpCj4gKyAgOzsgVXBkYXRlIHRoZSBjYWxsIHRv IHRoZSBMRVQgbGFtYmRhCj4gKyAgKGxldCogKChyZWYgKGNhciAobGVhZi1yZWZzIGxldC1sYW1i ZGEpKSkKPiArICAgICAgICAgKGNhbGwgKGFuZCByZWYKPiArICAgICAgICAgICAgICAgICAgICAo bm9kZS1sdmFyIHJlZikKPiArICAgICAgICAgICAgICAgICAgICAobHZhci1kZXN0IChub2RlLWx2 YXIgcmVmKSkpKSkKPiArICAgICh3aGVuIChhbmQgY2FsbCAoY29tYmluYXRpb24tcCBjYWxsKSkK PiArICAgICAgKGxldCAoKGR1bW15LWx2YXIgKG1ha2UtbHZhcikpKQo+ICsgICAgICAgIChzZXRm IChsdmFyLWRlc3QgZHVtbXktbHZhcikgY2FsbCkKPiArICAgICAgICAoc2V0ZiAoYmFzaWMtY29t YmluYXRpb24tYXJncyBjYWxsKQo+ICsgICAgICAgICAgICAgIChhcHBlbmQgKGJhc2ljLWNvbWJp bmF0aW9uLWFyZ3MgY2FsbCkgKGxpc3QgZHVtbXktbHZhcikpKQo+ICsgICAgICAgIChzZXRmIChs dmFyLWRlc3QgZHVtbXktbHZhcikgY2FsbCkpKSkpCj4gKwo+ICs7OyBSZXVzZSBvZiBTWU1CT0wt VkFMVUUgb2YgYSBzcGVjaWFsIHZhciB3b3VsZCBiZSBuaWNlLAo+ICs7OyBidXQgU1lNQk9MLVZB TFVFIGl0IGlzIG5vdCByZXByZXNlbnRlZCBhcyBhIGNhbGwgaW4gSVIxCj4gKyhkZWZpbmUtbG9h ZC10aW1lLWdsb2JhbCAqZWxpZGFibGUtbWVtb3J5LWxvYWRzKgo+ICsgICAgJyhjYXIgY2RyICVp bnN0YW5jZS1yZWYgJXJhdy1pbnN0YW5jZS1yZWYvd29yZCAlcmF3LWluc3RhbmNlLXJlZi9zaWdu ZWQtd29yZAo+ICsgICAgICBzYXAtcmVmLTE2IHNpZ25lZC1zYXAtcmVmLTE2IHNiLXN5czo6JXNh cC1yZWYtMTYtaW5kZXhlZCBzYi1zeXM6OiVzaWduZWQtc2FwLXJlZi0xNi1pbmRleGVkCj4gKyAg ICAgIHNhcC1yZWYtMzIgc2lnbmVkLXNhcC1yZWYtMzIgc2Itc3lzOjolc2FwLXJlZi0zMi1pbmRl eGVkIHNiLXN5czo6JXNpZ25lZC1zYXAtcmVmLTMyLWluZGV4ZWQKPiArICAgICAgc2FwLXJlZi02 NCBzaWduZWQtc2FwLXJlZi02NCBzYi1zeXM6OiVzYXAtcmVmLTY0LWluZGV4ZWQgc2Itc3lzOjol c2lnbmVkLXNhcC1yZWYtNjQtaW5kZXhlZAo+ICsgICAgICBzYi1hbGllbjpkZXJlZgo+ICsgICAg ICBzYi1hbGllbjphbGllbi1zYXApKQo+ICsKPiArOzs7IExvb2sgZm9yIGFueSBub2RlIGVxdWl2 YWxlbnQgdG8gTUFUQ0ggY29uc2RlcmluZyBub2RlcyBpbiByZXZlcnNlIHN0YXJ0aW5nIGF0IEZS T00uCj4gKzs7OyBNZW1vcnkgbG9hZHMgZnJvbSB0aGUgc2FtZSBvYmplY3Qrc2xvdCBvciBTQVAr b2Zmc2V0IGNvdWxkIGJlIGVxdWl2YWxlbnQuCj4gKzs7OyBOb3RoaW5nIGVsc2UgY2FuIGJlIGVx dWl2YWxlbnQgKHVudGlsIEkgZW5oYW5jZSB0aGlzKQo+ICsoZGVmdW4gZmluZC1lcXVpdmFsZW50 LW5vZGUtYmFja3dhcmRzIChtYXRjaCBmcm9tKQo+ICsgIChsYWJlbHMgKChsdmFyLWVxdWl2YWxl bnQtcCAobDEgbDIpCj4gKyAgICAgICAgICAgICAoZGVjbGFyZSAodHlwZSBsdmFyIGwxIGwyKSkK PiArICAgICAgICAgICAgIChjb25kICgoZXEgbDEgbDIpIHQpCj4gKyAgICAgICAgICAgICAgICAg ICAoKGFuZCAoY29uc3RhbnQtbHZhci1wIGwxKSAoY29uc3RhbnQtbHZhci1wIGwyKSkKPiArICAg ICAgICAgICAgICAgICAgICAoZXFsIChsdmFyLXZhbHVlIGwxKSAobHZhci12YWx1ZSBsMikpKQo+ ICsgICAgICAgICAgICAgICAgICAgKHQKPiArICAgICAgICAgICAgICAgICAgICAobGV0ICgodTEg KHByaW5jaXBhbC1sdmFyLXVzZSBsMSkpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHUy IChwcmluY2lwYWwtbHZhci11c2UgbDIpKSkKPiArICAgICAgICAgICAgICAgICAgICAgIChjb25k ICgoYW5kIChyZWYtcCB1MSkgKHJlZi1wIHUyKSkKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZXEgKHJlZi1sZWFmIHUxKSAocmVmLWxlYWYgdTIpKSkKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgoYW5kIChjb21iaW5hdGlvbi1wIHUxKSAoY29tYmluYXRpb24tcCB1MikK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcSAoYmFzaWMtY29tYmluYXRp b24ta2luZCB1MSkgOmtub3duKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGVxIChiYXNpYy1jb21iaW5hdGlvbi1raW5kIHUyKSA6a25vd24pKQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChjb21iaW5hdGlvbi1lcXVpdmFsZW50LXAgdTEgdTIpKQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHQgbmlsKSkpKSkpCj4gKyAgICAgICAgICAgKGNvbWJp bmF0aW9uLWVxdWl2YWxlbnQtcCAoYzEgYzIpCj4gKyAgICAgICAgICAgICAoZGVjbGFyZSAodHlw ZSBjb21iaW5hdGlvbiBjMSBjMikpCj4gKyAgICAgICAgICAgICAoYW5kIChlcSAoYmFzaWMtY29t YmluYXRpb24tZnVuLWluZm8gYzEpIChiYXNpYy1jb21iaW5hdGlvbi1mdW4taW5mbyBjMikpCj4g KyAgICAgICAgICAgICAgICAgIChsZXQgKChhcmdzMSAoYmFzaWMtY29tYmluYXRpb24tYXJncyBj MSkpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIChhcmdzMiAoYmFzaWMtY29tYmluYXRpb24t YXJncyBjMikpKQo+ICsgICAgICAgICAgICAgICAgICAgIChhbmQgKD0gKGxlbmd0aCBhcmdzMSkg KGxlbmd0aCBhcmdzMikpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlcnkgIydsdmFy LWVxdWl2YWxlbnQtcCBhcmdzMSBhcmdzMikpKSkpKQo+ICsgICAgKGRvICgobm9kZSBmcm9tIChj dHJhbi11c2UgKG5vZGUtcHJldiBub2RlKSkpKSAoKG51bGwgbm9kZSkpCj4gKyAgICAgICh3aGVu IChhbmQgKGNvbWJpbmF0aW9uLXAgbm9kZSkKPiArICAgICAgICAgICAgICAgICAoZXEgKGNvbWJp bmF0aW9uLWtpbmQgbm9kZSkgOmtub3duKQo+ICsgICAgICAgICAgICAgICAgIChub2RlLWx2YXIg bm9kZSkKPiArICAgICAgICAgICAgICAgICAoY29tYmluYXRpb24tZXF1aXZhbGVudC1wIG5vZGUg bWF0Y2gpKQo+ICsgICAgICAgIChyZXR1cm4gbm9kZSkpCj4gKyAgICAgICh0eXBlY2FzZSBub2Rl Cj4gKyAgICAgICAgKChvciBjc2V0IHJlZiBjYXN0IGNvbWJpbmF0aW9uIGNpZikpCj4gKyAgICAg ICAgKHQKPiArICAgICAgICAgOzsgUmV0dXJuIDpGQUlMIHRvIGFib3J0IHF1aWNrbHkuIFRoaXMg Y291bGQgY2hvb3NlIHRvIGZhaWwgaWYgYSBub24tZmx1c2hhYmxlCj4gKyAgICAgICAgIDs7IGNv bWJpbmF0aW9uIGlzIHNlZW4sIGJ1dCBmb3Igbm93IEknbSBkZWZlcnJpbmcgdGhhdCBzb3VuZG5l c3MgY2hlY2suCj4gKyAgICAgICAgIChyZXR1cm4tZnJvbSBmaW5kLWVxdWl2YWxlbnQtbm9kZS1i YWNrd2FyZHMgOmZhaWwpKSkpKSkKPiArCj4gKzs7OyBBdHRtcHQgdG8gZmluZCBhIENPTUJJTkFU SU9OIGVxdWl2YWxlbnQgdG8gVEhJUyBwcmVjZWRpbmcgaXQgaW4gbm9kZSBvcmRlciwgdGhlIHZh bHVlCj4gKzs7OyBvZiB3aGljaCBjYW4gYmUgc3Vic3RpdHV0ZWQgZm9yIHRoZSBjYWxsIHRvIFRI SVMsIGFjdHVhbGx5IG1ha2luZyB0aGUgc3Vic3RpdHV0aW9uLgo+ICs7OzsgTG9va2luZyBiYWNr d2FyZHMgYXQgbW9zdCBhIGZldyBibG9ja3MgdGVuZHMgdG8gd29yayB3ZWxsIGVub3VnaCwgYW5k IGlucG9ydGFudGx5Cj4gKzs7OyBsaW1pdHMgdGhlIHdvcmsuIFNjYW5uaW5nIG9ubHkgdGhlIGN1 cnJlbnQgYmxvY2sgaXMgaW5hZGVxdWF0ZSBhcyB0aGUgZXhhbXBsZQo+ICs7OzsgaW4gOkxPT1At T1ZFUi1ERVJFRiBzaG93cy4gVGhlIGltbWVkaWF0ZSBwcmVkZWNlc3NvciBpcyBzdGlsbCBub3Qg ZW5vdWdoLCBiZWNhdXNlIHRoZQo+ICs7OzsgcHJlZGVjZXNzb3IgY291bGQgaGF2ZSBiZWVuIHNw bGl0LCBsZWF2aW5nIGEgdGlueSBibG9jayB3aGVyZSB0aGUgb25seSBub2RlIGlzCj4gKzs7OyBh IHRyaXZpYWwgb3BlcmF0aW9uLgo+ICsoZGVmdW4gdHJ5LXJldXNlLWV4cHItdmFsdWUgKHRoaXMp Cj4gKyAgKGRlY2xhcmUgKHR5cGUgY29tYmluYXRpb24gdGhpcykpCj4gKyAgKGJpbmRpbmcqCj4g KyAgICAgICgoaG9tZS1sYW1iZGEgKGZpbmQtYWN0aXZlLWxldC1sYW1iZGEgdGhpcykgOmV4aXQt aWYtbnVsbCkKPiArICAgICAgIChsb29rYmFjayAwKQo+ICsgICAgICAgKGMxCj4gKyAgICAgICAg OzsgSW4gdGhpcyBibG9jaywgZXhwbGljaXRseSBnbyBiYWNrIGEgbm9kZSBzbyB0aGF0IEZJTkQt QkFDS1dBUkRTIGRvZXNuJ3QgY29uc2lkZXIgVEhJUwo+ICsgICAgICAgIDs7IGFzIGVxdWl2YWxl bnQgdG8gaXRzZWxmLiBGYWlsaW5nIHRoYXQsIHRyeSBwcmVkZWNlc3NvciBibG9ja3MsIGJ1dCBv bmx5IGFzIGxvbmcgYXMKPiArICAgICAgICA7OyBwcmVkIGlzIHVuaXF1ZSBzaW5jZSB3ZSBoYXZl IG5vIGluZm9ybWF0aW9uIGFib3V0IG5vZGVzIHRoYXQgZG9taW5hdGUgVEhJUy4KPiArICAgICAg ICAob3IgKGZpbmQtZXF1aXZhbGVudC1ub2RlLWJhY2t3YXJkcyB0aGlzIChjdHJhbi11c2UgKG5v ZGUtcHJldiB0aGlzKSkpCj4gKyAgICAgICAgICAgIChkbyAoKHByZWQgKGJsb2NrLXByZWQgKG5v ZGUtYmxvY2sgdGhpcykpKSkKPiArICAgICAgICAgICAgICAgICgob3IgKD4gbG9va2JhY2sgMykg KG5vdCAoc2luZ2xldG9uLXAgcHJlZCkpKSkKPiArICAgICAgICAgICAgICAoaW5jZiBsb29rYmFj aykKPiArICAgICAgICAgICAgICAobGV0ICgobm9kZSAoYmxvY2stbGFzdCAoY2FyIHByZWQpKSkp Cj4gKyAgICAgICAgICAgICAgICAod2hlbiAobnVsbCBub2RlKSAocmV0dXJuKSkKPiArICAgICAg ICAgICAgICAgIChhd2hlbiAoZmluZC1lcXVpdmFsZW50LW5vZGUtYmFja3dhcmRzIHRoaXMgbm9k ZSkgKHJldHVybiBpdCkpCj4gKyAgICAgICAgICAgICAgICAoc2V0cSBwcmVkIChibG9jay1wcmVk IChub2RlLWJsb2NrIG5vZGUpKSkpKSkKPiArICAgICAgICA6ZXhpdC1pZi1udWxsKQo+ICsgICAg ICAgKHZhcnMgOyBjYW4ndCB1c2UgOmV4aXQtaWYtbnVsbCBoZXJlIGJlY2F1c2UgVkFSUyBjYW4g YmUgYW5kIHVzdWFsbHkgaXMgTklMCj4gKyAgICAgICAgKHVubGVzcyAoZXEgYzEgOmZhaWwpCj4g KyAgICAgICAgICAobWFwY2FuICMnY29sbGVjdC1sdmFyLXZhcnMgKGJhc2ljLWNvbWJpbmF0aW9u LWFyZ3MgYzEpKSkpKQo+ICsgICAgKHdoZW4gKGVxIGMxIDpmYWlsKQo+ICsgICAgICAocmV0dXJu LWZyb20gdHJ5LXJldXNlLWV4cHItdmFsdWUgbmlsKSkKPiArICAgIChsYWJlbHMgKChhbGwtZmx1 c2hhYmxlIChjdHJhbiBlbmQtbm9kZSkKPiArICAgICAgICAgICAgICAgKGRlY2xhcmUgKGN0cmFu IGN0cmFuKSAodHlwZSAob3Igbm9kZSBudWxsKSBlbmQtbm9kZSkpCj4gKyAgICAgICAgICAgICAg IChsb29wIChsZXQgKChub2RlIChjdHJhbi1uZXh0IGN0cmFuKSkpCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgKGNvbmQgKChlcSBub2RlIGVuZC1ub2RlKSAocmV0dXJuIHQpKQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgobm90IChvay10by1mbHVzaCBub2RlKSkgKHJldHVybiBu aWwpKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYW5kIChub3QgZW5kLW5vZGUp IChub3QgKG5vZGUtbmV4dCBub2RlKSkpIChyZXR1cm4gdCkpKQo+ICsgICAgICAgICAgICAgICAg ICAgICAgIChzZXRxIGN0cmFuIChub2RlLW5leHQgbm9kZSkpKSkpCj4gKyAgICAgICAgICAgICAo b2stdG8tZmx1c2ggKG5vZGUpCj4gKyAgICAgICAgICAgICAgIChjb25kICgoc2V0LXAgbm9kZSkg KG5vdCAobWVtYmVyIChzZXQtdmFyIG5vZGUpIHZhcnMpKSkKPiArICAgICAgICAgICAgICAgICAg ICAgKChjb21iaW5hdGlvbi1wIG5vZGUpIChmbHVzaGFibGUtY29tYmluYXRpb24tcCBub2RlKSkK PiArICAgICAgICAgICAgICAgICAgICAgKChiYXNpYy1jb21iaW5hdGlvbi1wIG5vZGUpIG5pbCkK PiArICAgICAgICAgICAgICAgICAgICAgKHQgdCkpKSkgOyBhbnl0aGluZyBlbHNlIHRoZSBiYWNr d2FyZHMgc2VhcmNoIGFsbG93ZWQgaXMgb2sKPiArICAgICAgOzsgV2hlbiBsb29rYmFjaz4wIGl0 J3MgcG9zc2libGUgZm9yIHRoZSBlcXVpdmFsZW50IG5vZGUgdG8gYmUgdGhlIGZpbmFsIG5vZGUK PiArICAgICAgOzsgb2YgaXRzIGJsb2NrLCBpbiB3aGljaCBjYXNlIGl0cyBOT0RFLU5FWFQgaXMg bnVsbC4KPiArICAgICAgKGxldCogKCh0aGlzLWJsb2NrIChub2RlLWJsb2NrIHRoaXMpKQo+ICsg ICAgICAgICAgICAgKHByZWQgKGNhciAoYmxvY2stcHJlZCB0aGlzLWJsb2NrKSkpKQo+ICsgICAg ICAgICh1bmxlc3MgKGlmICg9IGxvb2tiYWNrIDApCj4gKyAgICAgICAgICAgICAgICAgICAgKGFs bC1mbHVzaGFibGUgKG5vZGUtbmV4dCBjMSkgdGhpcykKPiArICAgICAgICAgICAgICAgICAgICAo YW5kCj4gKyAgICAgICAgICAgICAgICAgICAgIDs7IENoZWNrIHByZXYgYmxvY2sgZnJvbSBDMSB0 byBpdHMgZW5kIG9mIGJsb2NrLCBhbmQgY3VycmVudCBibG9jayB1cCB0byBUSElTCj4gKyAgICAg ICAgICAgICAgICAgICAgIChhY29uZCAoKG5vZGUtbmV4dCBjMSkgKGFsbC1mbHVzaGFibGUgaXQg bmlsKSkgKHQgdCkpCj4gKyAgICAgICAgICAgICAgICAgICAgIChhbGwtZmx1c2hhYmxlIChibG9j ay1zdGFydCB0aGlzLWJsb2NrKSB0aGlzKQo+ICsgICAgICAgICAgICAgICAgICAgICA7OyBBbGwg Y2hlY2sgYWxsIG9mIG9uZSBvciBib3RoIGludGVydmVuaW5nIGJsb2Nrcwo+ICsgICAgICAgICAg ICAgICAgICAgICAob3IgKDwgbG9va2JhY2sgMikKPiArICAgICAgICAgICAgICAgICAgICAgICAg IChhbGwtZmx1c2hhYmxlIChibG9jay1zdGFydCBwcmVkKSBuaWwpKQo+ICsgICAgICAgICAgICAg ICAgICAgICAob3IgKDwgbG9va2JhY2sgMykKPiArICAgICAgICAgICAgICAgICAgICAgICAgIChh bGwtZmx1c2hhYmxlIChibG9jay1zdGFydCAoY2FyIChibG9jay1wcmVkIHByZWQpKSkgbmlsKSkp KQo+ICsgICAgICAgICAgKHJldHVybi1mcm9tIHRyeS1yZXVzZS1leHByLXZhbHVlIG5pbCkpKSkK PiArICAgIDs7IFN1YnN0aXR1dGUgQzEncyByZXN1bHQgaW4gZm9yIFRISVMKPiArICAgIChiaW5k aW5nKiAoKGx2YXItYzEgKG5vZGUtbHZhciBjMSkgOmV4aXQtaWYtbnVsbCkKPiArICAgICAgICAg ICAgICAgKGNvbnN1bWVyLTEgKGx2YXItZGVzdCBsdmFyLWMxKSA6ZXhpdC1pZi1udWxsKQo+ICsg ICAgICAgICAgICAgICAoYzIgdGhpcykKPiArICAgICAgICAgICAgICAgKGx2YXItYzIgKG5vZGUt bHZhciBjMikgOmV4aXQtaWYtbnVsbCkKPiArICAgICAgICAgICAgICAgKHYgKG1ha2UtbGFtYmRh LXZhciAoZ2Vuc3ltICJSRVVTRUQtVkFMIikKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA6dHlwZSAoc2luZ2xlLXZhbHVlLXR5cGUgKG5vZGUtZGVyaXZlZC10eXBlIGMxKSkp KQo+ICsgICAgICAgICAgICAgICAobHZhci1uZXcgKG1ha2UtbHZhcikpKQo+ICsgICAgICAoYWRk LXZhcmlhYmxlLXRvLWxldC1sYW1iZGEgaG9tZS1sYW1iZGEgdikKPiArCj4gKyAgICAgIDs7IDEu IFJlZGlyZWN0IGNvbnN1bWVyLTEgdG8gcmVhZCBmcm9tIGx2YXItbmV3Cj4gKyAgICAgIChzdWJz dGl0dXRlLWx2YXIgbHZhci1uZXcgbHZhci1jMSkKPiArCj4gKyAgICAgICh3aXRoLWlyMS1lbnZp cm9ubWVudC1mcm9tLW5vZGUgYzEKPiArICAgICAgICA7OyAyLiBNYWtlIEMxIHdyaXRlIHRvIGEg bmV3IExWQVIsIGFuZCBsaW5rIGl0IHRvIGEgQ1NFVCBvbiBWCj4gKyAgICAgICAgKGxldCAoKGx2 YXItYzEtbmV3IChtYWtlLWx2YXIpKSkKPiArICAgICAgICAgICglZGVsZXRlLWx2YXItdXNlIGMx KQo+ICsgICAgICAgICAgKHVzZS1sdmFyIGMxIGx2YXItYzEtbmV3KQo+ICsgICAgICAgICAgOzsg My4gQ3JlYXRlIFMxIChzZXQgViA9IGx2YXItYzEtbmV3KSBhbmQgaW5zZXJ0IGFmdGVyIEMxCj4g KyAgICAgICAgICAobGV0ICgoczEgKG1ha2Utc2V0IHYgbHZhci1jMS1uZXcpKSkKPiArICAgICAg ICAgICAgKHNldGYgKGx2YXItZGVzdCBsdmFyLWMxLW5ldykgczEpCj4gKyAgICAgICAgICAgIChw dXNoIHMxIChiYXNpYy12YXItc2V0cyB2KSkKPiArICAgICAgICAgICAgKGluc2VydC1ub2RlLWFm dGVyIGMxIHMxKSkpKQo+ICsKPiArICAgICAgOzsgNC4gSW5zZXJ0IHJlZjEgYmVmb3JlIGNvbnN1 bWVyLTEsIHdyaXRpbmcgdG8gbHZhci1uZXcKPiArICAgICAgKGluc2VydC1yZWYtYmVmb3JlIHYg Y29uc3VtZXItMSBsdmFyLW5ldykKPiArICAgICAgOzsgNS4gSW5zZXJ0IHJlZjIgYmVmb3JlIEMy LCBzdGVhbGluZyBDMidzIGx2YXIKPiArICAgICAgKGluc2VydC1yZWYtYmVmb3JlIHYgYzIgdCkK PiArICAgICAgOzsgQzIgaXMgbm93IGRlYWQgYW5kIHdpbGwgYmUgZmx1c2hlZCBieSB0aGUgY2Fs bGVyIQo+ICsgICAgICB0KSkpCj4gKwo+ICA7OzsgRG8gSVIxIG9wdGltaXphdGlvbnMgb24gYSBD T01CSU5BVElPTiBub2RlLgo+ICAoZGVmdW4gaXIxLW9wdGltaXplLWNvbWJpbmF0aW9uIChub2Rl ICZhdXggKHNob3cgKnNob3ctdHJhbnNmb3Jtcy1wKikpCj4gICAgKGRlY2xhcmUgKHR5cGUgY29t YmluYXRpb24gbm9kZSkpCj4gQEAgLTEzMDUsNiArMTQ4MSw5IEBACj4gICAgICAgICAgICAgICAg ICAgICAgICAgKG5vdCAobm9kZS1sdmFyIG5vZGUpKSkKPiAgICAgICAgICAgICAgICAgICAgKHJl dHVybi1mcm9tIGlyMS1vcHRpbWl6ZS1jb21iaW5hdGlvbiAoZmx1c2gtbm9kZSBub2RlKSkpCj4g ICAgICAgICAgICAgICAgICAgKChmb2xkLWNhbGwtZGVyaXZlZC10by1jb25zdGFudCBub2RlKQo+ ICsgICAgICAgICAgICAgICAgICAocmV0dXJuLWZyb20gaXIxLW9wdGltaXplLWNvbWJpbmF0aW9u KSkKPiArICAgICAgICAgICAgICAgICAoKGFuZCAoY29tYmluYXRpb24taXMgbm9kZSAqZWxpZGFi bGUtbWVtb3J5LWxvYWRzKikKPiArICAgICAgICAgICAgICAgICAgICAgICAodHJ5LXJldXNlLWV4 cHItdmFsdWUgbm9kZSkpCj4gICAgICAgICAgICAgICAgICAgIChyZXR1cm4tZnJvbSBpcjEtb3B0 aW1pemUtY29tYmluYXRpb24pKSkKPiAgICAgICAgICAgICAod2hlbiAoYW5kIChpcjEtYXR0cmli dXRlcCAoZnVuLWluZm8tYXR0cmlidXRlcyBpbmZvKSBjb21tdXRhdGl2ZSkKPiAgICAgICAgICAg ICAgICAgICAgICAgICg9IChsZW5ndGggYXJncykgMikKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvbGNz ZS5wdXJlLmxpc3AgYi90ZXN0cy9sY3NlLnB1cmUubGlzcAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMDAwLi40M2IzNGU5OTgKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdGVz dHMvbGNzZS5wdXJlLmxpc3AKPiBAQCAtMCwwICsxLDIzNCBAQAo+ICs7Ozs7IFRoaXMgc29mdHdh cmUgaXMgcGFydCBvZiB0aGUgU0JDTCBzeXN0ZW0uIFNlZSB0aGUgUkVBRE1FIGZpbGUgZm9yCj4g Kzs7OzsgbW9yZSBpbmZvcm1hdGlvbi4KPiArOzs7Owo+ICs7Ozs7IFdoaWxlIG1vc3Qgb2YgU0JD TCBpcyBkZXJpdmVkIGZyb20gdGhlIENNVSBDTCBzeXN0ZW0sIHRoZSB0ZXN0Cj4gKzs7OzsgZmls ZXMgKGxpa2UgdGhpcyBvbmUpIHdlcmUgd3JpdHRlbiBmcm9tIHNjcmF0Y2ggYWZ0ZXIgdGhlIGZv cmsKPiArOzs7OyBmcm9tIENNVSBDTC4KPiArOzs7Owo+ICs7Ozs7IFRoaXMgc29mdHdhcmUgaXMg aW4gdGhlIHB1YmxpYyBkb21haW4gYW5kIGlzIHByb3ZpZGVkIHdpdGgKPiArOzs7OyBhYnNvbHV0 ZWx5IG5vIHdhcnJhbnR5LiBTZWUgdGhlIENPUFlJTkcgYW5kIENSRURJVFMgZmlsZXMgZm9yCj4g Kzs7OzsgbW9yZSBpbmZvcm1hdGlvbi4KPiArCj4gKzs7OzsgVGVzdHMgb2YgbG9jYWwgY29tbW9u IHN1YmV4cHJlc3Npb24gZWxpbWluYXRpb24KPiArCj4gKyhpbXBvcnQgJyhjdHU6aW5zcGVjdC1p cgo+ICsgICAgICAgICAgc2ItYzo6Y29tYmluYXRpb24tZnVuLWRlYnVnLW5hbWUKPiArICAgICAg ICAgIHNiLWM6OmJhc2ljLWNvbWJpbmF0aW9uLXApKQo+ICsKPiArKGRlZnVuIGlyLWNhbGxzIChm b3JtKQo+ICsgIChsZXQgKGNhbGxzKQo+ICsgICAgKGluc3BlY3QtaXIKPiArICAgICBmb3JtCj4g KyAgICAgKGxhbWJkYSAoY29tcG9uZW50KQo+ICsgICAgICAgKGN0dTpkby1ibG9ja3MgKGJsb2Nr IGNvbXBvbmVudCkKPiArICAgICAgICAgKGN0dTpkby1ub2RlcyAobm9kZSBuaWwgYmxvY2spCj4g KyAgICAgICAgICAgKHdoZW4gKGJhc2ljLWNvbWJpbmF0aW9uLXAgbm9kZSkKPiArICAgICAgICAg ICAgIChwdXNoIG5vZGUgY2FsbHMpKSkpKSkKPiArICAgIGNhbGxzKSkKPiArCj4gKyhkZWZtYWNy byBhc3NlcnQtY2FsbHMgKGZ1bi1uYW1lIGV4cGVjdGVkLWNvdW50ICgmcmVzdCBsYW1iZGEtYXJn cykgJmJvZHkgYm9keSkKPiArICAoc2ItaW50OmJpbmRpbmcqCj4gKyAgICAgICgoKGZvcm1zIGRl Y2xzKSAoc2ItaW50OnBhcnNlLWJvZHkgYm9keSBuaWwpKQo+ICsgICAgICAgKGxleHByIGAobGFt YmRhICgsQGxhbWJkYS1hcmdzKQo+ICsgICAgICAgICAgICAgICAgICxAZGVjbHMKPiArICAgICAg ICAgICAgICAgICAgOzsgV2l0aG91dCBhIGNvbnRhaW5pbmcgTEVUIGZvcm0sIHRoZSBjdXJyZW50 IGltcGxlbWVudGF0aW9uIG9mIENTRQo+ICsgICAgICAgICAgICAgICAgICA7OyBpcyB1bndpbGxp bmcgdG8gYmluZCBhIHRlbXBvcmFyeSBsYW1iZGEgdmFyIGZvciByZXVzZS4KPiArICAgICAgICAg ICAgICAgICAgKGxldCAoKGFjdGl2ZS1sZXQtdmFyIDApKQo+ICsgICAgICAgICAgICAgICAgICAg IChwcmludCBhY3RpdmUtbGV0LXZhcikKPiArICAgICAgICAgICAgICAgICAgICAoaW5jZiBhY3Rp dmUtbGV0LXZhciAocmFuZG9tIDUpKQo+ICsgICAgICAgICAgICAgICAgICAgIChwcmludCBhY3Rp dmUtbGV0LXZhcikKPiArICAgICAgICAgICAgICAgICAgICAsQGZvcm1zKSkpKQo+ICsgICAgYChh c3NlcnQgKD0gKGNvdW50ICcsZnVuLW5hbWUgKGlyLWNhbGxzICcsbGV4cHIpIDprZXkgIydjb21i aW5hdGlvbi1mdW4tZGVidWctbmFtZSkKPiArICAgICAgICAgICAgICAgICxleHBlY3RlZC1jb3Vu dCkpKSkKPiArCj4gKzs7OyBCYXNpYyB0ZXN0czogYSBzYW1wbGluZyBvZiBlbGlkYWJsZSBsb2Fk IHR5cGUgd2l0aCB0d28gaWRlbnRpY2FsIGxvYWRzCj4gKwo+ICsod2l0aC10ZXN0ICg6bmFtZSAo OmNzZSA6Y2FyKSkKPiArICAoYXNzZXJ0LWNhbGxzIGNhciAxIChjb25zKQo+ICsgICAgKGRlY2xh cmUgKHR5cGUgY29ucyBjb25zKSkKPiArICAgIChpZiAoY2FyIGNvbnMpCj4gKyAgICAgICAgKHBy aW5jIChjYXIgY29ucykpCj4gKyAgICAgICAgKHByaW5jIChjZHIgY29ucykpKSkpCj4gKwo+ICso d2l0aC10ZXN0ICg6bmFtZSAoOmNzZSA6ZGlmZmVyZW50LW5hbWVzLWZvci1zYW1lLW9iamVjdCkp Cj4gKyAgOzsgWSBhbmQgWCByZWZlciB0byB0aGUgc2FtZSB0aGluZywgYW5kIGl0IGRvZXNuJ3Qg bWF0dGVyCj4gKyAgOzsgd2hvc2UgQ0RSIHdlIHRha2UgZmlyc3QuIE9ubHkgb25lIENEUiBvcGVy YXRpb24gaXMgcGVyZm9ybWVkCj4gKyAgKGFzc2VydC1jYWxscyBjZHIgMSAoeCkKPiArICAgIChk ZWNsYXJlICh0eXBlIGNvbnMgeCkpCj4gKyAgICAobGV0ICgoeSB4KSkKPiArICAgICAgKGxpc3Qg KGNkciB5KSAoY2RyIHgpKSkpCj4gKyAgKGFzc2VydC1jYWxscyBjZHIgMSAoeCkKPiArICAgIChk ZWNsYXJlICh0eXBlIGNvbnMgeCkpCj4gKyAgICAobGV0ICgoeSB4KSkKPiArICAgICAgKGxpc3Qg KGNkciB4KSAoY2RyIHkpKSkpKQo+ICsKPiArKHdpdGgtdGVzdCAoOm5hbWUgKDpjc2UgOmNvbXBv c2l0aW9uLW9mLWN4cikpCj4gKyAgOzsgVGhlIENBUiBleHRyYWN0aW9uIHdoaWNoIGlzIHBhcnQg b2YgdGhlIENEQVIgZnVuY3Rpb24gY2FuIGJlCj4gKyAgOzsgcmV1c2VkIGJhc2VkIG9uIHRoZSBm YWN0IHRoYXQgd2UgZXZhbHVhdGVkIChMSVNUUCAoQ0FSIFgpKQo+ICsgIChhc3NlcnQtY2FsbHMg Y2FyIDEgKHgpCj4gKyAgICAoaWYgKGxpc3RwIChjYXIgeCkpIChjZGFyIHgpKSkKPiArICA7OyBu ZWdhdGl2ZSB0ZXN0IC0gQ0RBUiBvbiBhIGRpZmZlcmVudCBZIGlzIGFub3RoZXIgQ0FSIG9wZXJh dGlvbgo+ICsgIChhc3NlcnQtY2FsbHMgY2FyIDIgKHggeSkKPiArICAgIChpZiAobGlzdHAgKGNh ciB4KSkgKGNkYXIgeSkpKSkKPiArCj4gKyhkZWZzdHJ1Y3QgY3NlLXRlc3QtZm9vIHNsb3QgKHdz bG90IDAgOnR5cGUgc2Itdm06d29yZCkpCj4gKyh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDppbnN0 YW5jZS1yZWYpKQo+ICsgIChhc3NlcnQtY2FsbHMgc2Ita2VybmVsOiVpbnN0YW5jZS1yZWYgMSAo eCkKPiArICAgIDs7IERlcGVuZGluZyBvbiB3aGF0IFRSQU5TRk9STS1JTlNUQU5DRS1UWVBFUCBk b2VzLCBpdCBtaWdodCBhY2Nlc3MgaW5zdGFuY2UtbGF5b3V0Cj4gKyAgICA7OyB1c2luZyAlSU5T VEFOQ0UtUkVGIHdoaWNoIHdvdWxkIGhhdmUgdG8gYmUgZGlzY291bnRlZCBpbiB0aGUgY2FsbCBj b3VudGluZy4KPiArICAgIDs7IEp1c3QgYnJ1dGUtZm9yY2UgdGhlIHR5cGUgdG8gYXZvaWQgdGhh dCBzaXR1YXRpb24uCj4gKyAgICAobGV0ICgoeCAodHJ1bHktdGhlIGNzZS10ZXN0LWZvbyB4KSkp Cj4gKyAgICAgIChpZiAoY3NlLXRlc3QtZm9vLXNsb3QgeCkKPiArICAgICAgICAgIChwcmluYyAo Y3NlLXRlc3QtZm9vLXNsb3QgeCkpCj4gKyAgICAgICAgICBuaWwpKSkpCj4gKwo+ICsod2l0aC10 ZXN0ICg6bmFtZSAoOmNzZSA6cmF3LWluc3RhbmNlLXJlZi93b3JkKSkKPiArICAoYXNzZXJ0LWNh bGxzIHNiLWtlcm5lbDolcmF3LWluc3RhbmNlLXJlZi93b3JkIDEgKHgpCj4gKyAgICAoZGVjbGFy ZSAodHlwZSBjc2UtdGVzdC1mb28geCkpCj4gKyAgICAoaWYgKGxvZ3Rlc3QgKGNzZS10ZXN0LWZv by13c2xvdCB4KSAjeGZmMDAwKQo+ICsgICAgICAgIChwcmluYyAoY3NlLXRlc3QtZm9vLXdzbG90 IHgpKQo+ICsgICAgICAgIG5pbCkpKQo+ICsKPiArKHdpdGgtdGVzdCAoOm5hbWUgKDpjc2UgOnNh cC1yZWYtMzIpKQo+ICsgIChhc3NlcnQtY2FsbHMgc2Itc3lzOnNhcC1yZWYtMzIgMSAoc2FwIG9m ZnNldCkKPiArICAgIChkZWNsYXJlICh0eXBlIHNiLXN5czpzeXN0ZW0tYXJlYS1wb2ludGVyIHNh cCkKPiArICAgICAgICAgICAgICh0eXBlIHNiLXZtOndvcmQgb2Zmc2V0KSkKPiArICAgIChpZiAo cGx1c3AgKHNiLXN5czpzYXAtcmVmLTMyIHNhcCBvZmZzZXQpKQo+ICsgICAgICAgIChwcmluYyAo c2Itc3lzOnNhcC1yZWYtMzIgc2FwIG9mZnNldCkpCj4gKyAgICAgICAgbmlsKSkKPiArICAoYXNz ZXJ0LWNhbGxzIHNiLXN5czpzaWduZWQtc2FwLXJlZi0zMiAxIChzYXAgb2Zmc2V0KQo+ICsgICAg KGRlY2xhcmUgKHR5cGUgc2Itc3lzOnN5c3RlbS1hcmVhLXBvaW50ZXIgc2FwKQo+ICsgICAgICAg ICAgICAgKHR5cGUgc2Itdm06d29yZCBvZmZzZXQpKQo+ICsgICAgKGlmIChwbHVzcCAoc2Itc3lz OnNpZ25lZC1zYXAtcmVmLTMyIHNhcCBvZmZzZXQpKQo+ICsgICAgICAgIChwcmluYyAoc2Itc3lz OnNpZ25lZC1zYXAtcmVmLTMyIHNhcCBvZmZzZXQpKQo+ICsgICAgICAgIG5pbCkpKQo+ICsKPiAr KHdpdGgtdGVzdCAoOm5hbWUgKDpjc2UgOnNhcC1yZWYtNjQpIDpza2lwcGVkLW9uICg6bm90IDo2 NC1iaXQpKQo+ICsgIChhc3NlcnQtY2FsbHMgc2Itc3lzOnNhcC1yZWYtNjQgMSAoc2FwIG9mZnNl dCkKPiArICAgIChkZWNsYXJlICh0eXBlIHNiLXN5czpzeXN0ZW0tYXJlYS1wb2ludGVyIHNhcCkK PiArICAgICAgICAgICAgICh0eXBlIHNiLXZtOndvcmQgb2Zmc2V0KSkKPiArICAgIChpZiAocGx1 c3AgKHNiLXN5czpzYXAtcmVmLTY0IHNhcCBvZmZzZXQpKQo+ICsgICAgICAgIChwcmluYyAoc2It c3lzOnNhcC1yZWYtNjQgc2FwIG9mZnNldCkpCj4gKyAgICAgICAgbmlsKSkKPiArICAoYXNzZXJ0 LWNhbGxzIHNiLXN5czpzaWduZWQtc2FwLXJlZi02NCAxIChzYXAgb2Zmc2V0KQo+ICsgICAgKGRl Y2xhcmUgKHR5cGUgc2Itc3lzOnN5c3RlbS1hcmVhLXBvaW50ZXIgc2FwKQo+ICsgICAgICAgICAg ICAgKHR5cGUgc2Itdm06d29yZCBvZmZzZXQpKQo+ICsgICAgKGlmIChwbHVzcCAoc2Itc3lzOnNp Z25lZC1zYXAtcmVmLTY0IHNhcCBvZmZzZXQpKQo+ICsgICAgICAgIChwcmluYyAoc2Itc3lzOnNp Z25lZC1zYXAtcmVmLTY0IHNhcCBvZmZzZXQpKQo+ICsgICAgICAgIG5pbCkpKQo+ICsKPiArKHdp dGgtdGVzdCAoOm5hbWUgKDpjc2UgOmxvb3Atb3Zlci1kZXJlZikpCj4gKyAgKGxldCAoKGxleHBy Cj4gKyAgICAgICAgICcobGFtYmRhIChmKQo+ICsgICAgICAgICAgICAoZGVjbGFyZSAob3B0aW1p emUgKHNiLWM6OmFsaWVuLWZ1bmNhbGwtc2F2ZXMtZnAtYW5kLXBjIDApCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoc2ItYzo6dHlwZS1jaGVjayAwKSkpCj4gKyAgICAgICAgICAg IDs7IEYgcmV0dXJucyBhIHBvaW50ZXIgdG8gYSBudWxsLXRlcm1pbmF0ZWQgYXJyYXkgb2YgdW5z aWduZWQtaW50Lgo+ICsgICAgICAgICAgICA7OyBUaGUgZGVyZWYgZm9yIHRoZSBsb29wIHRlcm1p bmF0aW9uIHRlc3QsIGFuZCBhZ2FpbiBpbiB0aGUgYm9keQo+ICsgICAgICAgICAgICA7OyBzaG91 bGQgdXNlIGEgc2luZ2xlIG1lbW9yeSBsb2FkLgo+ICsgICAgICAgICAgICAobGV0ICgoYSAoYWxp ZW4tZnVuY2FsbCAodGhlIChhbGllbiAoZnVuY3Rpb24gKCogdW5zaWduZWQpKSkgZikpKSkKPiAr ICAgICAgICAgICAgICAoZG8gKChpbmRleCAwICgxKyBpbmRleCkpKQo+ICsgICAgICAgICAgICAg ICAgICAoKHplcm9wIChkZXJlZiBhIGluZGV4KSkpCj4gKyAgICAgICAgICAgICAgICAocHJpbmMg KHRoZSBmaXhudW0gKGRlcmVmIGEgaW5kZXgpKSkpKSkpKQo+ICsgICAgKGFzc2VydCAoPSAoY291 bnQgIysob3IgYXJtNjQgeDg2LTY0KSAnc2Itc3lzOiVzYXAtcmVmLTY0LWluZGV4ZWQKPiArICAg ICAgICAgICAgICAgICAgICAgICMtKG9yIGFybTY0IHg4Ni02NCkKPiArICAgICAgICAgICAgICAg ICAgICAgIChwcm9nbiAjKzY0LWJpdCAnc2Itc3lzOnNhcC1yZWYtNjQgIy02NC1iaXQgJ3NiLXN5 czpzYXAtcmVmLTMyKQo+ICsgICAgICAgICAgICAgICAgICAgICAgKGlyLWNhbGxzIGxleHByKSA6 a2V5ICMnY29tYmluYXRpb24tZnVuLWRlYnVnLW5hbWUpCj4gKyAgICAgICAgICAgICAgIDEpKSkp Cj4gKwo+ICs7OzsgU0VUUSBvZiBhIHZhcmlhYmxlIHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gYW4g ZWxpZGFibGUgbG9hZCBwcmV2ZW50cyBDU0UuCj4gKzs7OyBXaGVuIGEgdmFyaWFibGUgdGhhdCBw YXJ0aWNpcGF0ZXMgaW4gdGhlIGxvYWQgZXhwcmVzc2lvbiAoZS5nLiwgdGhlIGNvbnMKPiArOzs7 IGJlaW5nIENBUidkKSBpcyBhc3NpZ25lZCBiZXR3ZWVuIHR3byBpZGVudGljYWwgbG9hZHMsIHRo ZSBzZWNvbmQgbG9hZAo+ICs7OzsgbXVzdCBub3QgYmUgZWxpbWluYXRlZCBiZWNhdXNlIHRoZSB2 YXJpYWJsZSBtYXkgcmVmZXJlbmNlIGEgZGlmZmVyZW50IG9iamVjdC4KPiArKHdpdGgtdGVzdCAo Om5hbWUgKDpjc2UgOnNldHEtb2YtbG9hZC1hcmctcHJldmVudHMtY2FyKSkKPiArICA7OyBDT05T IGlzIHRoZSBhcmd1bWVudCB0byBDQVIuIEFzc2lnbmluZyBDT05TIGJldHdlZW4gdHdvIChDQVIg Q09OUykKPiArICA7OyBwcmV2ZW50cyBDU0UuCj4gKyAgKGFzc2VydC1jYWxscyBjYXIgMiAoY29u cyBvdGhlcikKPiArICAgIChkZWNsYXJlICh0eXBlIGNvbnMgY29ucyBvdGhlcikpCj4gKyAgICAo bGV0ICgoYSAoY2FyIGNvbnMpKSkKPiArICAgICAgKHNldHEgY29ucyBvdGhlcikKPiArICAgICAg KGxldCAoKGIgKGNhciBjb25zKSkpCj4gKyAgICAgICAgKGxpc3QgYSBiKSkpKSkKPiArCj4gKyh3 aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDpzZXRxLW9mLWxvYWQtYXJnLXByZXZlbnRzLWNkcikpCj4g KyAgKGFzc2VydC1jYWxscyBjZHIgMiAoY29ucyBvdGhlcikKPiArICAgIChkZWNsYXJlICh0eXBl IGNvbnMgY29ucyBvdGhlcikpCj4gKyAgICAobGV0ICgoYSAoY2RyIGNvbnMpKSkKPiArICAgICAg KHNldHEgY29ucyBvdGhlcikKPiArICAgICAgKGxldCAoKGIgKGNkciBjb25zKSkpCj4gKyAgICAg ICAgKGxpc3QgYSBiKSkpKSkKPiArCj4gKyh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDpzZXRxLW9m LWxvYWQtYXJnLXByZXZlbnRzLWluc3RhbmNlLXJlZikpCj4gKyAgOzsgQXNzaWduaW5nIHRoZSBz dHJ1Y3QgdmFyaWFibGUgYmV0d2VlbiB0d28gcmVhZHMgb2YgdGhlIHNhbWUgc2xvdCBwcmV2ZW50 cyBDU0UuCj4gKyAgKGFzc2VydC1jYWxscyBzYi1rZXJuZWw6JWluc3RhbmNlLXJlZiAyICh4IHkp Cj4gKyAgICAobGV0ICgoeCAodHJ1bHktdGhlIGNzZS10ZXN0LWZvbyB4KSkKPiArICAgICAgICAg ICh5ICh0cnVseS10aGUgY3NlLXRlc3QtZm9vIHkpKSkKPiArICAgICAgKGxldCAoKGEgKGNzZS10 ZXN0LWZvby1zbG90IHgpKSkKPiArICAgICAgICAoc2V0cSB4IHkpCj4gKyAgICAgICAgKGxldCAo KGIgKGNzZS10ZXN0LWZvby1zbG90IHgpKSkKPiArICAgICAgICAgIChsaXN0IGEgYikpKSkpKQo+ ICsKPiArKHdpdGgtdGVzdCAoOm5hbWUgKDpjc2UgOnNldHEtb2YtbG9hZC1hcmctcHJldmVudHMt c2FwLXJlZikpCj4gKyAgOzsgQXNzaWduaW5nIHRoZSBTQVAgdmFyaWFibGUgYmV0d2VlbiB0d28g cmVhZHMgYXQgdGhlIHNhbWUgb2Zmc2V0Cj4gKyAgOzsgbXVzdCBwcmV2ZW50IENTRSBzaW5jZSB0 aGUgc2Vjb25kIHJlYWQgbWF5IHVzZSBhIGRpZmZlcmVudCBTQVAuCj4gKyAgKGFzc2VydC1jYWxs cyBzYi1zeXM6c2FwLXJlZi0zMiAyIChzYXAxIHNhcDIgb2Zmc2V0KQo+ICsgICAgKGRlY2xhcmUg KHR5cGUgc2Itc3lzOnN5c3RlbS1hcmVhLXBvaW50ZXIgc2FwMSBzYXAyKQo+ICsgICAgICAgICAg ICAgKHR5cGUgc2Itdm06d29yZCBvZmZzZXQpKQo+ICsgICAgKGxldCAoKGEgKHNiLXN5czpzYXAt cmVmLTMyIHNhcDEgb2Zmc2V0KSkpCj4gKyAgICAgIChzZXRxIHNhcDEgc2FwMikKPiArICAgICAg KGxldCAoKGIgKHNiLXN5czpzYXAtcmVmLTMyIHNhcDEgb2Zmc2V0KSkpCj4gKyAgICAgICAgKGxp c3QgYSBiKSkpKSkKPiArCj4gKzs7OyBTRVRRIG9mIGFuICp1bnJlbGF0ZWQqIHZhcmlhYmxlIHNo b3VsZCBOT1QgcHJldmVudCBDU0UuCj4gKzs7OyBPbmx5IG11dGF0aW9ucyBvZiB2YXJpYWJsZXMg dGhhdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgbG9hZCBtYXR0ZXIuCj4gKyh3aXRoLXRlc3QgKDpuYW1l ICg6Y3NlIDpzZXRxLW9mLXVucmVsYXRlZC12YXItYWxsb3dzLWNzZSkpCj4gKyAgOzsgWiBpcyBu b3QgYW4gYXJndW1lbnQgdG8gQ0FSLCBzbyBzZXR0aW5nIFogZG9lcyBub3QgaW5oaWJpdCBDU0Uu Cj4gKyAgKGFzc2VydC1jYWxscyBjYXIgMSAoY29ucyB6KQo+ICsgICAgKGRlY2xhcmUgKHR5cGUg Y29ucyBjb25zKSkKPiArICAgIChsZXQgKChhIChjYXIgY29ucykpKQo+ICsgICAgICAoc2V0cSB6 IGEpCj4gKyAgICAgIChsZXQgKChiIChjYXIgY29ucykpKQo+ICsgICAgICAgIChsaXN0IHogYikp KSkpCj4gKwo+ICs7OzsgU0ItVEhSRUFEOkJBUlJJRVIgb2YgYW55IGtpbmQgcHJldmVudHMgZWxp c2lvbiBvZiB0aGUgc2Vjb25kIGxvYWQKPiArOzs7IHNpbmNlIHRoZSBtZW1vcnkgYmFycmllcnMg aXMgbm90IGZsdXNoYWJsZS4gVGhpcyBpcyB0aGUgY29uc2VydmF0aXZlIHN0YW5jZS4KPiArOzs7 IFRoZSBhY3R1YWwgKGxvb3NlcikgcmVxdWlyZW1lbnRzIGFyZSBtb3JlIHN1YnRsZSB0aGFuIEkg Y2FyZSB0byBkZWFsIHdpdGguCj4gKyhkZWZtYWNybyBiYXJyaWVyLXRlc3QgKGtpbmQpCj4gKyAg YCh3aXRoLXRlc3QgKDpuYW1lICg6Y3NlIDpiYXJyaWVyLXByZXZlbnRzLWNhciAsa2luZCkpCj4g KyAgICAgKGFzc2VydC1jYWxscyBjYXIgMiAoY29ucykKPiArICAgICAgKGRlY2xhcmUgKHR5cGUg Y29ucyBjb25zKSkKPiArICAgICAgKGxldCAoKGEgKGNhciBjb25zKSkpCj4gKyAgICAgICAgKHNi LXRocmVhZDpiYXJyaWVyICgsa2luZCkpCj4gKyAgICAgICAgKGxldCAoKGIgKGNhciBjb25zKSkp Cj4gKyAgICAgICAgICAobGlzdCBhIGIpKSkpKSkKPiArKGJhcnJpZXItdGVzdCA6cmVhZCkKPiAr KGJhcnJpZXItdGVzdCA6d3JpdGUpCj4gKyhiYXJyaWVyLXRlc3QgOm1lbW9yeSkKPiArKGJhcnJp ZXItdGVzdCA6Y29tcGlsZXIpCj4gKyhiYXJyaWVyLXRlc3QgOmRhdGEtZGVwZW5kZW5jeSkKPiAr Cj4gKzs7OyBBbnkgbm9uLWZsdXNoYWJsZSBjYWxsIGJldHdlZW4gdHdvIGlkZW50aWNhbCBsb2Fk cyBwcmV2ZW50cyBDU0UKPiArOzs7IGJlY2F1c2UgdGhlIGNhbGwgbWF5IGhhdmUgc2lkZSBlZmZl Y3RzIHRoYXQgbW9kaWZ5IHRoZSBsb2FkZWQgbWVtb3J5Lgo+ICsKPiArKHdpdGgtdGVzdCAoOm5h bWUgKDpjc2UgOm5vbi1mbHVzaGFibGUtY2FsbC1wcmV2ZW50cy1jc2UpKQo+ICsgIDs7IFBSSU5D IGlzIGEgbm9uLWZsdXNoYWJsZQo+ICsgIChhc3NlcnQtY2FsbHMgY2FyIDIgKGNvbnMpCj4gKyAg ICAoZGVjbGFyZSAodHlwZSBjb25zIGNvbnMpKQo+ICsgICAgKGxldCAoKGEgKGNhciBjb25zKSkp Cj4gKyAgICAgIChwcmluYyA0MikKPiArICAgICAgKGxldCAoKGIgKGNhciBjb25zKSkpCj4gKyAg ICAgICAgKGxpc3QgYSBiKSkpKSkKPiArCj4gKzs7OyBEaWZmZXJlbnQgZnVuY3Rpb25zIG9uIHRo ZSBzYW1lIG9iamVjdCBhcmUgTk9UIGNvbnNpZGVyZWQgY29tbW9uIHN1YmV4cHJlc3Npb25zLgo+ ICs7OzsgKENBUiB4KSBhbmQgKENEUiB4KSBhcmUgZGlmZmVyZW50IGxvYWRzIGV2ZW4gaWYgeCBp cyB0aGUgc2FtZS4KPiArKHdpdGgtdGVzdCAoOm5hbWUgKDpjc2UgOmRpZmZlcmVudC1hY2Nlc3Nv cnMtbm90LWNzZSkpCj4gKyAgOzsgQm90aCBDQVIgYW5kIENEUiBzaG91bGQgYXBwZWFyLCBlYWNo IGV4YWN0bHkgb25jZS4KPiArICAoYXNzZXJ0LWNhbGxzIGNhciAxIChjb25zKQo+ICsgICAgKGRl Y2xhcmUgKHR5cGUgY29ucyBjb25zKSkKPiArICAgIChpZiAoY2FyIGNvbnMpCj4gKyAgICAgICAg KHByaW5jIChjZHIgY29ucykpCj4gKyAgICAgICAgbmlsKSkKPiArICAoYXNzZXJ0LWNhbGxzIGNk ciAxIChjb25zKQo+ICsgICAgKGRlY2xhcmUgKHR5cGUgY29ucyBjb25zKSkKPiArICAgIChpZiAo Y2FyIGNvbnMpCj4gKyAgICAgICAgKHByaW5jIChjZHIgY29ucykpCj4gKyAgICAgICAgbmlsKSkp Cj4gZGlmZiAtLWdpdCBhL3hwZXJmZWN0aGFzaDMwLmxpc3AtZXhwciBiL3hwZXJmZWN0aGFzaDMw Lmxpc3AtZXhwcgo+IGluZGV4IDZhNTAzYWNmMC4uMWI3MjI3Yzc4IDEwMDY0NAo+IC0tLSBhL3hw ZXJmZWN0aGFzaDMwLmxpc3AtZXhwcgo+ICsrKyBiL3hwZXJmZWN0aGFzaDMwLmxpc3AtZXhwcgo+ IEBAIC0xNTA2LDYgKzE1MDYsOSBAQAo+ICAoIygxMEJFNzI3NyAxMjIxNEFFOCAxMkUyQ0JEQSAx OTczOTUzOSAxRjM1NTZDNyAxRjY0NDM4NykKPiAgICIoSU5URUdFUiBCSUdOVU0gU0ItVk06OlVO U0lHTkVELUJZVEUtMzEgU0ItVk06OlNJR05FRC1CWVRFLTMyIEZJWE5VTSBTQi1WTTo6UE9TSVRJ VkUtRklYTlVNKSIKPiAgICIoKCYgKF4gdmFsICg+PiB2YWwgMjIpKSA3KSkiKQo+ICsoIygxMEQy RUE0RSAxMjI0QzU1NyAxNUE1OEQ4NSAxNUI1QTJCNSAxNzUyNEE3OCAxNzY5RTQxOSAxODkwNkQw OCkKPiArICIoU0ItQzo6Q1NFVCBTQi1DOjpSRUYgREVMQVkgU0ItQzo6QVJSQVktSU5ERVgtQ0FT VCBDQVNUIFNCLUM6OkNPTUJJTkFUSU9OIFNCLUM6OkNJRikiCj4gKyAiKCgmICgrICg+PiB2YWwg MSkgKD4+IHZhbCA5KSkgNykpIikKPiAgKCMoMTBEMkVBNEUgMTIyNEM1NTcgMTVBNThEODUgMTVC NUEyQjUgMTc1MjRBNzggMTc2OUU0MTkgMTg5MDZEMDggMTk1Nzc1MzkgMUMwNjVDQjggMUQ2NkM5 MzIpCj4gICAiIygoKDpUWVBFIFNCLUM6OlJFRikpICgoOlRZUEUgU0ItQzo6Q09NQklOQVRJT04p KSAoKDpUWVBFIFNCLUM6OkNJRikpICgoOlRZUEUgU0ItQzo6Q1JFVFVSTikpICgoOlRZUEUgU0It Qzo6TVYtQ09NQklOQVRJT04pKSAoKDpUWVBFIEVYSVQpKSAoKDpUWVBFIFNCLUM6OkNTRVQpKSAo KDpUWVBFIERFTEFZKSAoOlRZUEUgU0ItQzo6QVJSQVktSU5ERVgtQ0FTVCkgKDpUWVBFIENBU1Qp KSkiCj4gICAiKChsZXQgKCh0YWIgI2EoKDgpICh1bnNpZ25lZC1ieXRlIDgpIDAgNSAyIDggMTMg MyAwIDApKSkKPiBkaWZmIC0tZ2l0IGEveHBlcmZlY3RoYXNoNjEubGlzcC1leHByIGIveHBlcmZl Y3RoYXNoNjEubGlzcC1leHByCj4gaW5kZXggNmViNzI0ODZiLi5iMWJjMDE0ZmIgMTAwNjQ0Cj4g LS0tIGEveHBlcmZlY3RoYXNoNjEubGlzcC1leHByCj4gKysrIGIveHBlcmZlY3RoYXNoNjEubGlz cC1leHByCj4gQEAgLTQ2Myw2ICs0NjMsOSBAQAo+ICAoIyg5QTMyMEQ0IDM5Q0FBMzM5IDQzQkJF RTE4IDRENjEzNjhGIDUzMjIyREZCIEJGQTg2MTg5IEVEQTEwMzdGIEZFRTk5QTk1KQo+ICAgIiMo KCg6VFlQRSBTQi1DOjpSRUYpKSAoKDpUWVBFIFNCLUM6OkNPTUJJTkFUSU9OKSkgKCg6VFlQRSBT Qi1DOjpNVi1DT01CSU5BVElPTikpICgoOlRZUEUgRVhJVCkpICgoOlRZUEUgU0ItQzo6Q1NFVCkp ICgoOlRZUEUgREVMQVkpICg6VFlQRSBTQi1DOjpBUlJBWS1JTkRFWC1DQVNUKSAoOlRZUEUgQ0FT VCkpKSIKPiAgICIoKCYgKC0gKD4+IHZhbCAzKSAoPj4gdmFsIDI5KSkgNykpIikKPiArKCMoOUEz MjBENCAzOUNBQTMzOSA0M0JCRUUxOCA1MzIyMkRGQiA5MzgwODM3QyBCRkE4NjE4OSBGRUU5OUE5 NSkKPiArICIjKCgoOlRZUEUgU0ItQzo6Q0lGKSAoOlRZUEUgU0ItQzo6Q09NQklOQVRJT04pICg6 VFlQRSBERUxBWSkgKDpUWVBFIFNCLUM6OkFSUkFZLUlOREVYLUNBU1QpICg6VFlQRSBDQVNUKSAo OlRZUEUgU0ItQzo6UkVGKSAoOlRZUEUgU0ItQzo6Q1NFVCkpKSIKPiArICIoKCYgKCsgdmFsICg+ PiB2YWwgMzEpKSA3KSkiKQo+ICAoIyg5QTMyMEQ0IDQzQkJFRTE4IDUzMjIyREZCIEE4QTRDN0Qy IEJGQTg2MTg5IEVBQTNEQTVDIEZFRTk5QTk1KQo+ICAgIiMoKCg6VFlQRSBTQi1DOjpSRUYpKSAo KDpUWVBFIERFTEFZKSAoOlRZUEUgU0ItQzo6QVJSQVktSU5ERVgtQ0FTVCkgKDpUWVBFIENBU1Qp KSAoKDpUWVBFIFNCLUM6OkNPTUJJTkFUSU9OKSkgKCg6VFlQRSBTQi1DOjpFTlRSWSkpICgoOlRZ UEUgU0ItQzo6RU5DTE9TRSkpKSIKPiAgICIoKCYgKF4gKD4+IHZhbCA3KSAoPj4gdmFsIDIzKSkg NykpIikKPiBkaWZmIC0tZ2l0IGEveHBlcmZlY3RoYXNoNjMubGlzcC1leHByIGIveHBlcmZlY3Ro YXNoNjMubGlzcC1leHByCj4gaW5kZXggY2M4NjFiYjMzLi4xM2JiNWQ4NWQgMTAwNjQ0Cj4gLS0t IGEveHBlcmZlY3RoYXNoNjMubGlzcC1leHByCj4gKysrIGIveHBlcmZlY3RoYXNoNjMubGlzcC1l eHByCj4gQEAgLTg3MCw2ICs4NzAsOSBAQAo+ICAoIygxMjEwNjhERCA0RDYxMzY4RiA1ODExMEU3 RiA2N0VFMkQxQSA2RDlBODgzRCA3NDU4OUQ4MiA4OTdCNDY1NiBBNjhBMzk2NSkKPiAgICIjKCgo OlRZUEUgU0ItQzo6UkVGKSkgKCg6VFlQRSBTQi1DOjpDT01CSU5BVElPTikpICgoOlRZUEUgU0It Qzo6TVYtQ09NQklOQVRJT04pKSAoKDpUWVBFIEVYSVQpKSAoKDpUWVBFIFNCLUM6OkNTRVQpKSAo KDpUWVBFIERFTEFZKSAoOlRZUEUgU0ItQzo6QVJSQVktSU5ERVgtQ0FTVCkgKDpUWVBFIENBU1Qp KSkiCj4gICAiKCgmICgtICg+PiB2YWwgNCkgKD4+IHZhbCAxNikpIDcpKSIpCj4gKygjKDEyMTA2 OEREIDU4MTEwRTdGIDY3RUUyRDFBIDZEOUE4ODNEIDc0MkQ0QzU0IDg5N0I0NjU2IEE2OEEzOTY1 KQo+ICsgIiMoKCg6VFlQRSBTQi1DOjpDSUYpICg6VFlQRSBTQi1DOjpDT01CSU5BVElPTikgKDpU WVBFIERFTEFZKSAoOlRZUEUgU0ItQzo6QVJSQVktSU5ERVgtQ0FTVCkgKDpUWVBFIENBU1QpICg6 VFlQRSBTQi1DOjpSRUYpICg6VFlQRSBTQi1DOjpDU0VUKSkpIgo+ICsgIigoJiAoLSAoPj4gdmFs IDQpICg+PiB2YWwgMTYpKSA3KSkiKQo+ICAoIygxMjZBREIwMiAzMUIwOTVERCA0MkQ4M0ZGQiA0 MzQxRjdEOCA2M0M5NzFENyA3QTgwRjIwMSA3QjQwODg4MCA4Rjc5MTJENiBFQkQwMTg3MikKPiAg ICIoOkFMTE9XLU9USEVSLUtFWVMgOlRZUEUgOlJFU1VMVC1TUEVDUyA6QVJHLVNQRUNTIDpDQUxM RVIgOkRFUFMgOkZJUkVEIDpMRVhFTlYgOlNPVVJDRS1QQVRIKSIKPiAgICIoKGxldCAoKHRhYiAj YSgoOCkgKHVuc2lnbmVkLWJ5dGUgOCkgMCA1IDAgMyAwIDUgMTIgNikpKQo+Cj4gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPgo+Cj4gaG9va3MvcG9zdC1yZWNlaXZlCj4gLS0KPiBTQkNMCj4KPgo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gU2JjbC1jb21taXRzIG1h aWxpbmcgbGlzdAo+IFNiY2wtY29tbWl0c0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKPiBodHRwczov L2xpc3RzLnNvdXJjZWZvcmdlLm5ldC9saXN0cy9saXN0aW5mby9zYmNsLWNvbW1pdHMKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpTYmNsLWNvbW1pdHMg bWFpbGluZyBsaXN0ClNiY2wtY29tbWl0c0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9s aXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vc2JjbC1jb21taXRzCg==