Improve regexp support for backreferences numbered greater than 9
Aidan Kehoe <[email protected]> Thu, 16 Jun 2016 14:18:47 +0100
| Newsgroups | gmane.emacs.xemacs.patches |
|---|---|
| Message-ID | <[email protected]> |
CkFQUFJPVkUgQ09NTUlUCgpOT1RFOiBUaGlzIHBhdGNoIGhhcyBiZWVuIGNvbW1pdHRlZC4KCiMg SEcgY2hhbmdlc2V0IHBhdGNoCiMgVXNlciBBaWRhbiBLZWhvZSA8a2Vob2VhQHBhcmhhc2FyZC5u ZXQ+CiMgRGF0ZSAxNDY2MDgzMDc3IC0zNjAwCiMgICAgICBUaHUgSnVuIDE2IDE0OjE3OjU3IDIw MTYgKzAxMDAKIyBOb2RlIElEIDFjMDBjY2Y1NjE5MzkzMjk4ZDBmZTlkNDk1M2NhZWNkMzNiNzEz NzcKIyBQYXJlbnQgIGE1NjFlMDJiYjYyNmNhODFlOGI3MWE5MTFkODM4NTNlYjU2NTUyZjEKSW1w cm92ZSByZWdleHAgc3VwcG9ydCBmb3IgYmFja3JlZmVyZW5jZXMgbnVtYmVyZWQgZ3JlYXRlciB0 aGFuIDEwLgoKc3JjL0NoYW5nZUxvZyBhZGRpdGlvbjoKCjIwMTYtMDYtMTYgIEFpZGFuIEtlaG9l ICA8a2Vob2VhQHBhcmhhc2FyZC5uZXQ+CgoJKiByZWdleC5jOgoJKiByZWdleC5jIChyZWdleF9j b21waWxlKToKCUltcHJvdmUgc3VwcG9ydCBmb3IgaGlnaC1udW1iZXJlZCBiYWNrcmVmZXJlbmNl cyBoZXJlLgoJKiBzZWFyY2guYyAoRnJlcGxhY2VfbWF0Y2gpOgoJU3VwcG9ydCBiYWNrcmVmZXJl bmNlcyBncmVhdGVyIHRoYW4gOSBpbiB0aGlzIGZ1bmN0aW9uLgoKdGVzdHMvQ2hhbmdlTG9nIGFk ZGl0aW9uOgoKMjAxNi0wNi0xNiAgQWlkYW4gS2Vob2UgIDxrZWhvZWFAcGFyaGFzYXJkLm5ldD4K CgkqIGF1dG9tYXRlZC9yZWdleHAtdGVzdHMuZWw6CglUZXN0IGhpZ2gtbnVtYmVyZWQgYmFja3Jl ZmVyZW5jZXMuIENoZWNrIHRoYXQgbm9uLUFTQ0lJIGRlY2ltYWwKCWRpZ2l0cyBhcmUgbm90IGFj Y2VwdGVkIGZvciB0aGlzIHN5bnRheC4KCm1hbi9DaGFuZ2VMb2cgYWRkaXRpb246CgoyMDE2LTA2 LTE2ICBBaWRhbiBLZWhvZSAgPGtlaG9lYUBwYXJoYXNhcmQubmV0PgoKCSogbGlzcHJlZi9zZWFy Y2hpbmcudGV4aSAoU3ludGF4IG9mIFJlZ2V4cHMpOgoJQ2xhcmlmeSB0aGF0IGJhY2tyZWZlcmVu Y2VzIGNhbiB1c2UgbnVtYmVycyBncmVhdGVyIHRoYW4gdGVuLgoKZGlmZiAtciBhNTYxZTAyYmI2 MjYgLXIgMWMwMGNjZjU2MTkzIG1hbi9DaGFuZ2VMb2cKLS0tIGEvbWFuL0NoYW5nZUxvZwlGcmkg SnVuIDAzIDA5OjMwOjQ3IDIwMTYgLTA2MDAKKysrIGIvbWFuL0NoYW5nZUxvZwlUaHUgSnVuIDE2 IDE0OjE3OjU3IDIwMTYgKzAxMDAKQEAgLTEsMyArMSw4IEBACisyMDE2LTA2LTE2ICBBaWRhbiBL ZWhvZSAgPGtlaG9lYUBwYXJoYXNhcmQubmV0PgorCisJKiBsaXNwcmVmL3NlYXJjaGluZy50ZXhp IChTeW50YXggb2YgUmVnZXhwcyk6CisJQ2xhcmlmeSB0aGF0IGJhY2tyZWZlcmVuY2VzIGNhbiB1 c2UgbnVtYmVycyBncmVhdGVyIHRoYW4gdGVuLgorCiAyMDE0LTExLTI0ICBTdGVwaGVuIEouIFR1 cm5idWxsICA8c3RlcGhlbkB4ZW1hY3Mub3JnPgogCiAJKiBsaXNwcmVmL3N0cmluZ3MudGV4aSAo U3RyaW5nIFByb3BlcnRpZXMpOgpkaWZmIC1yIGE1NjFlMDJiYjYyNiAtciAxYzAwY2NmNTYxOTMg bWFuL2xpc3ByZWYvc2VhcmNoaW5nLnRleGkKLS0tIGEvbWFuL2xpc3ByZWYvc2VhcmNoaW5nLnRl eGkJRnJpIEp1biAwMyAwOTozMDo0NyAyMDE2IC0wNjAwCisrKyBiL21hbi9saXNwcmVmL3NlYXJj aGluZy50ZXhpCVRodSBKdW4gMTYgMTQ6MTc6NTcgMjAxNiArMDEwMApAQCAtNDQ4LDIxICs0NDgs MjIgQEAKIGJlY2F1c2UgdGhlcmUgaXMgbm8gY29uZmxpY3QgaW4gcHJhY3RpY2UgYmV0d2VlbiB0 aGUgdHdvIG1lYW5pbmdzLgogSGVyZSBpcyBhbiBleHBsYW5hdGlvbiBvZiB0aGlzIGZlYXR1cmU6 CiAKLUBpdGVtIFxAdmFye2RpZ2l0fQotbWF0Y2hlcyB0aGUgc2FtZSB0ZXh0IHRoYXQgbWF0Y2hl ZCB0aGUgQHZhcntkaWdpdH10aCBvY2N1cnJlbmNlIG9mIGEKK0BpdGVtIFxAdmFye251bX0KK21h dGNoZXMgdGhlIHNhbWUgdGV4dCB0aGF0IG1hdGNoZWQgdGhlIEB2YXJ7bnVtfXRoIG9jY3VycmVu Y2Ugb2YgYQogQHNhbXB7XCggQGRvdHN7fSBcKX0gY29uc3RydWN0LgogCiBJbiBvdGhlciB3b3Jk cywgYWZ0ZXIgdGhlIGVuZCBvZiBhIEBzYW1we1woIEBkb3Rze30gXCl9IGNvbnN0cnVjdCwgdGhl CiBtYXRjaGVyIHJlbWVtYmVycyB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIHRleHQgbWF0 Y2hlZCBieSB0aGF0CiBjb25zdHJ1Y3QuICBUaGVuLCBsYXRlciBvbiBpbiB0aGUgcmVndWxhciBl eHByZXNzaW9uLCB5b3UgY2FuIHVzZQotQHNhbXB7XH0gZm9sbG93ZWQgYnkgQHZhcntkaWdpdH0g dG8gbWF0Y2ggdGhhdCBzYW1lIHRleHQsIHdoYXRldmVyIGl0CitAc2FtcHtcfSBmb2xsb3dlZCBi eSBAdmFye251bX0gdG8gbWF0Y2ggdGhhdCBzYW1lIHRleHQsIHdoYXRldmVyIGl0CiBtYXkgaGF2 ZSBiZWVuLgogCiBUaGUgc3RyaW5ncyBtYXRjaGluZyB0aGUgZmlyc3QgbmluZSBAc2FtcHtcKCBA ZG90c3t9IFwpfSBjb25zdHJ1Y3RzCiBhcHBlYXJpbmcgaW4gYSByZWd1bGFyIGV4cHJlc3Npb24g YXJlIGFzc2lnbmVkIG51bWJlcnMgMSB0aHJvdWdoIDkgaW4KIHRoZSBvcmRlciB0aGF0IHRoZSBv cGVuIHBhcmVudGhlc2VzIGFwcGVhciBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uLgogU28geW91 IGNhbiB1c2UgQHNhbXB7XDF9IHRocm91Z2ggQHNhbXB7XDl9IHRvIHJlZmVyIHRvIHRoZSB0ZXh0 IG1hdGNoZWQKLWJ5IHRoZSBjb3JyZXNwb25kaW5nIEBzYW1we1woIEBkb3Rze30gXCl9IGNvbnN0 cnVjdHMuCitieSB0aGUgY29ycmVzcG9uZGluZyBAc2FtcHtcKCBAZG90c3t9IFwpfSBjb25zdHJ1 Y3RzLCBhbmQgc28gb24gcGFzdAorQHNhbXB7XDEwfSB1cCB0byB0aGUgaW1wbGVtZW50YXRpb24t ZGVmaW5lZCBsaW1pdCwgYXQgbGVhc3QgQHNhbXB7XDEwMH0uCiAKIEZvciBleGFtcGxlLCBAc2Ft cHtcKC4qXClcMX0gbWF0Y2hlcyBhbnkgbmV3bGluZS1mcmVlIHN0cmluZyB0aGF0IGlzCiBjb21w b3NlZCBvZiB0d28gaWRlbnRpY2FsIGhhbHZlcy4gIFRoZSBAc2FtcHtcKC4qXCl9IG1hdGNoZXMg dGhlIGZpcnN0CmRpZmYgLXIgYTU2MWUwMmJiNjI2IC1yIDFjMDBjY2Y1NjE5MyBzcmMvQ2hhbmdl TG9nCi0tLSBhL3NyYy9DaGFuZ2VMb2cJRnJpIEp1biAwMyAwOTozMDo0NyAyMDE2IC0wNjAwCisr KyBiL3NyYy9DaGFuZ2VMb2cJVGh1IEp1biAxNiAxNDoxNzo1NyAyMDE2ICswMTAwCkBAIC0xLDMg KzEsMTEgQEAKKzIwMTYtMDYtMTYgIEFpZGFuIEtlaG9lICA8a2Vob2VhQHBhcmhhc2FyZC5uZXQ+ CisKKwkqIHJlZ2V4LmM6CisJKiByZWdleC5jIChyZWdleF9jb21waWxlKToKKwlJbXByb3ZlIHN1 cHBvcnQgZm9yIGhpZ2gtbnVtYmVyZWQgYmFja3JlZmVyZW5jZXMgaGVyZS4KKwkqIHNlYXJjaC5j IChGcmVwbGFjZV9tYXRjaCk6CisJU3VwcG9ydCBiYWNrcmVmZXJlbmNlcyBncmVhdGVyIHRoYW4g OSBpbiB0aGlzIGZ1bmN0aW9uLgorCiAyMDE2LTA1LTMxICBKZXJyeSBKYW1lcyAgPGphbWVzQHhl bWFjcy5vcmc+CiAKIAkqIHByb2Nlc3MtdW5peC5jICh1bml4X2NyZWF0ZV9wcm9jZXNzKTogTW92 ZSBzZXRzaWQgY2FsbCBiYWNrIHRvCmRpZmYgLXIgYTU2MWUwMmJiNjI2IC1yIDFjMDBjY2Y1NjE5 MyBzcmMvcmVnZXguYwotLS0gYS9zcmMvcmVnZXguYwlGcmkgSnVuIDAzIDA5OjMwOjQ3IDIwMTYg LTA2MDAKKysrIGIvc3JjL3JlZ2V4LmMJVGh1IEp1biAxNiAxNDoxNzo1NyAyMDE2ICswMTAwCkBA IC0yMTM3LDYgKzIxMzcsNDcgQEAKIAogI2VuZGlmCiAKKyNpZmRlZiBlbWFjcworLyogUGFyc2Ug dGhlIGxvbmdlc3QgbnVtYmVyIHdlIGNhbiwgYnV0IGRvbid0IHByb2R1Y2UgYSBiaWdudW0sIHRo YXQgY2FuJ3QKKyAgIGNvcnJlc3BvbmQgdG8gYW55dGhpbmcgd2UncmUgaW50ZXJlc3RlZCBpbiBh bmQgd291bGQgbmVlZGxlc3NseSBjb21wbGljYXRlCisgICBjb2RlLiBBbHNvIGF2b2lkIHRoZSBz aWxlbnQgb3ZlcmZsb3cgaXNzdWVzIG9mIHRoZSBub24tZW1hY3MgY29kZSBiZWxvdy4gKi8KKyNk ZWZpbmUgR0VUX1VOU0lHTkVEX05VTUJFUihudW0pIGRvIFwKKyAgICB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgIElieXRlICpfZ3VzX251bWVuZCA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgIExpc3BfT2JqZWN0IF9ndXNfbnVtbm87ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIC8qIG1vc3QtcG9zaXRpdmUt Zml4bnVtIG9uIDMyIGJpdCBYRW1hY3MgaXMgMTAgZGVjaW1hbCBkaWdpdHMsICAgIFwKKyAgICAg ICAgIG5pbmUgd2lsbCBrZWVwIHVzIGluIGZpeG51bSB0ZXJyaXRvcnkgbm8gbWF0dGVyIG91ciAg ICAgICAgICAgIFwKKyAgICAgICAgIGFyY2hpdGVjdHVyZSAqLyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIEJ5dGVjb3VudCBsaW1pdCA9IG1p biAocGVuZCAtIHAsIDkpLCBpaSA9IDA7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgIC8qIFJlcXVpcmUgdGhhdCBhbnkgZGlnaXRzIGFyZSBBU0NJSS4gV2Ug YWxyZWFkeSByZXF1aXJlIHRoYXQgICAgIFwKKyAgICAgICAgIHRoZSB1c2VyIHR5cGUgQVNDSUkg aW4gb3JkZXIgdG8gdHlwZSB7LCgsfCwgZXRjLCBhbmQgdGhlcmUgaXMgIFwKKyAgICAgICAgIHRo ZSBwb3RlbnRpYWwgZm9yIHNlY3VyaXR5IGhvbGVzIGluIHRoZSBmdXR1cmUgaWYgd2UgYWxsb3cg ICAgIFwKKyAgICAgICAgIG5vbi1BU0NJSSBkaWdpdHMgdG8gc3BlY2lmeSBncm91cHMgaW4gcmVn ZXhwcyBhbmQgb3RoZXIgICAgICAgIFwKKyAgICAgICAgIGNvZGUgdGhhdCBwYXJzZXMgcmVnZXhw cyBpcyBub3QgYXdhcmUgb2YgdGhpcy4gKi8gICAgICAgICAgICAgIFwKKyAgICAgIHdoaWxlIChp aSA8IGxpbWl0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBpZiAoaXRleHRfaWNoYXIgKHAgKyBpaSkg PiAweDdmKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICAgICAgICAgICAgbGltaXQgPSBpaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICAgICBpaSArPSByZXBfYnl0ZXNfYnlfZmlyc3RfYnl0ZSAocFtpaV0pOyAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg IF9ndXNfbnVtbm8gPSBwYXJzZV9pbnRlZ2VyIChwLCAmX2d1c19udW1lbmQsIGxpbWl0LCAxMCwg MSwgUW5pbCk7IFwKKyAgICAgIFBBVEZFVENIIChjKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGlmIChjICE9ICctJyAmJiBGSVhO VU1QIChfZ3VzX251bW5vKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgICBudW0gPSBYUkVBTEZJWE5VTSAoX2d1c19udW1ubyk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBwID0gX2d1c19udW1lbmQ7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICBp ZiAocCAhPSBwZW5kKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgUEFURkVUQ0ggKGMpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorI2Vsc2UKIC8qIEdldCB0aGUg bmV4dCB1bnNpZ25lZCBudW1iZXIgaW4gdGhlIHVuY29tcGlsZWQgcGF0dGVybi4gICovCiAjZGVm aW5lIEdFVF9VTlNJR05FRF9OVU1CRVIobnVtKSAJCQkJCVwKICAgeyBpZiAocCAhPSBwZW5kKQkJ CQkJCQlcCkBAIC0yMTUzLDYgKzIxOTQsNyBAQAogICAgICAgICAgfSAJCQkJCQkJCVwKICAgICAg ICB9IAkJCQkJCQkJXAogICAgIH0KKyNlbmRpZgogCiAvKiBNYXAgYSBzdHJpbmcgdG8gdGhlIGNo YXIgY2xhc3MgaXQgbmFtZXMgKGlmIGFueSkuICAqLwogcmVfd2N0eXBlX3QKQEAgLTM0MTQsOCAr MzQ1NiwxMCBAQAogCiAgICAgICAgICAgICAgICAgaWYgKCEoc3ludGF4ICYgUkVfTk9fQktfQlJB Q0VTKSkKICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0g J1xcJykgRlJFRV9TVEFDS19SRVRVUk4gKFJFR19FQlJBQ0UpOwotCisJCSAgICBpZiAoYyAhPSAn XFwnKQorCQkgICAgICBGUkVFX1NUQUNLX1JFVFVSTiAoUkVHX0JBREJSKTsKKwkJICAgIGlmIChw ID09IHBlbmQpCisJCSAgICAgIEZSRUVfU1RBQ0tfUkVUVVJOIChSRUdfRUVTQ0FQRSk7CiAgICAg ICAgICAgICAgICAgICAgIFBBVEZFVENIIChjKTsKICAgICAgICAgICAgICAgICAgIH0KIApAQCAt MzYyMiw0NiArMzY2Niw0MyBAQAogICAgICAgICAgICAgY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNl ICczJzogY2FzZSAnNCc6IGNhc2UgJzUnOgogICAgICAgICAgICAgY2FzZSAnNic6IGNhc2UgJzcn OiBjYXNlICc4JzogY2FzZSAnOSc6CiAJICAgICAgewotCQlyZWdudW1fdCByZWcsIHJlZ2ludDsK LQkJaW50IG1heV9uZWVkX3RvX3VuZmV0Y2ggPSAwOworCQlyZWdudW1fdCByZWcgPSAtMSwgcmVn aW50OworICAgICAgICAgICAgICAgIHJlX2NoYXIgKm9sZHAgPSBwOworCiAJCWlmIChzeW50YXgg JiBSRV9OT19CS19SRUZTKQogCQkgIGdvdG8gbm9ybWFsX2NoYXI7CiAKLQkJLyogVGhpcyBvbmx5 IGdvZXMgdXAgdG8gOTkuICBJdCBjb3VsZCBiZSBleHRlbmRlZCB0byB3b3JrCi0JCSAgIHVwIHRv IDI1NSAodGhlIG1heGltdW0gbnVtYmVyIG9mIHJlZ2lzdGVycyB0aGF0IGNhbiBiZQotCQkgICBo YW5kbGVkIGJ5IHRoZSBjdXJyZW50IHJlZ2V4cCBlbmdpbmUsIGJlY2F1c2UgaXQgc3RvcmVzCi0J CSAgIGl0cyByZWdpc3RlciBudW1iZXJzIGluIHRoZSBjb21waWxlZCBwYXR0ZXJuIGFzIG9uZSBi eXRlLAotCQkgICB1Z2gpLiAgRG9pbmcgdGhhdCdzIGEgYml0IHRyaWNraWVyLCBiZWNhdXNlIHlv dSBtaWdodAotCQkgICBoYXZlIHRoZSBjYXNlIHdoZXJlIFwyNSBhIGJhY2stcmVmIGJ1dCBcMjU1 IGlzIG5vdCwgLi4uICovCi0JCXJlZyA9IGMgLSAnMCc7Ci0JCWlmIChwIDwgcGVuZCkKLQkJICB7 Ci0JCSAgICBQQVRGRVRDSCAoYyk7Ci0JCSAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCi0J CSAgICAgIHsKLQkJCXJlZ251bV90IG5ld19yZWcgPSByZWcgKiAxMCArIGMgLSAnMCc7Ci0JCQlp ZiAobmV3X3JlZyA8PSBidWZwLT5yZV9uc3ViKQotCQkJICB7Ci0JCQkgICAgcmVnID0gbmV3X3Jl ZzsKLQkJCSAgICBtYXlfbmVlZF90b191bmZldGNoID0gMTsKLQkJCSAgfQotCQkJZWxzZQotCQkJ ICBQQVRVTkZFVENIOwotCQkgICAgICB9Ci0JCSAgICBlbHNlCi0JCSAgICAgIFBBVFVORkVUQ0g7 Ci0JCSAgfQorICAgICAgICAgICAgICAgIFBBVFVORkVUQ0g7CisgICAgICAgICAgICAgICAgR0VU X1VOU0lHTkVEX05VTUJFUiAocmVnKTsKIAkJICAKLQkJaWYgKHJlZyA+IGJ1ZnAtPnJlX25zdWIp Ci0JCSAgRlJFRV9TVEFDS19SRVRVUk4gKFJFR19FU1VCUkVHKTsKKyAgICAgICAgICAgICAgICAv KiBQcm9ncmVzc2l2ZWx5IGRpdmlkZSBkb3duIHRoZSBiYWNrcmVmZXJlbmNlIHVudGlsIHdlIGZp bmQKKyAgICAgICAgICAgICAgICAgICBvbmUgdGhhdCBjb3JyZXNwb25kcyB0byBhbiBleGlzdGlu ZyByZWdpc3Rlci4gKi8KKyAgICAgICAgICAgICAgICB3aGlsZSAocmVnID4gMTAgJiYKKyAgICAg ICAgICAgICAgICAgICAgICAgKHN5bnRheCAmIFJFX05PX01VTFRJX0RJR0lUX0JLX1JFRlMKKyAg ICAgICAgICAgICAgICAgICAgICAgIHx8IChyZWcgPiBidWZwLT5yZV9uc3ViKSkpCisgICAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFBBVFVORkVUQ0g7CisgICAgICAgICAg ICAgICAgICAgIHJlZyAvPSAxMDsKKyAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg ICAgIGlmIChyZWcgPiBidWZwLT5yZV9uc3ViKQorICAgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICAvKiBcTiB3aXRoIG9uZSBkaWdpdCB3aXRoIGEgbm9uLWV4aXN0aW5nIGdy b3VwIGhhcyBhbHdheXMKKyAgICAgICAgICAgICAgICAgICAgICAgYmVlbiBhIHN5bnRheCBlcnJv ci4gKi8KKyAgICAgICAgICAgICAgICAgICAgRlJFRV9TVEFDS19SRVRVUk4gKFJFR19FU1VCUkVH KTsKKyAgICAgICAgICAgICAgICAgIH0KIAogCQlyZWdpbnQgPSBidWZwLT5leHRlcm5hbF90b19p bnRlcm5hbF9yZWdpc3RlcltyZWddOwogCQkvKiBDYW4ndCBiYWNrIHJlZmVyZW5jZSB0byBhIHN1 YmV4cHJlc3Npb24gaWYgaW5zaWRlIG9mIGl0LiAgKi8KIAkJaWYgKGdyb3VwX2luX2NvbXBpbGVf c3RhY2sgKGNvbXBpbGVfc3RhY2ssIHJlZ2ludCkpCiAJCSAgewotCQkgICAgaWYgKG1heV9uZWVk X3RvX3VuZmV0Y2gpCi0JCSAgICAgIFBBVFVORkVUQ0g7Ci0JCSAgICBnb3RvIG5vcm1hbF9jaGFy OworICAgICAgICAgICAgICAgICAgICAvKiBDaGVjayBSRUcsIG5vdCBSRUdJTlQuICovCisgICAg ICAgICAgICAgICAgICAgIHdoaWxlIChyZWcgPiAxMCkKKyAgICAgICAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAgICAgICBQQVRVTkZFVENIOworICAgICAgICAgICAgICAgICAg ICAgICAgcmVnID0gcmVnIC8gMTA7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICBnb3RvIG5vcm1hbF9jaGFyOwogCQkgIH0KIAogI2lmZGVmIGVtYWNzCmRpZmYg LXIgYTU2MWUwMmJiNjI2IC1yIDFjMDBjY2Y1NjE5MyBzcmMvc2VhcmNoLmMKLS0tIGEvc3JjL3Nl YXJjaC5jCUZyaSBKdW4gMDMgMDk6MzA6NDcgMjAxNiAtMDYwMAorKysgYi9zcmMvc2VhcmNoLmMJ VGh1IEp1biAxNiAxNDoxNzo1NyAyMDE2ICswMTAwCkBAIC0yODkwLDUxICsyODkwLDEwNCBAQAog CSAgICAgIGlmIChjID09ICdcXCcgJiYgc3RycG9zIDwgc3RsZW4gLSAxKQogCQl7CiAJCSAgYyA9 IHN0cmluZ19pY2hhciAocmVwbGFjZW1lbnQsICsrc3RycG9zKTsKLQkJICBpZiAoYyA9PSAnJicp CisJCSAgc3dpdGNoIChjKQogCQkgICAgeworCQkgICAgY2FzZSAnJic6CiAJCSAgICAgIGxpdGVy YWxfZW5kID0gc3RycG9zIC0gMTsKIAkJICAgICAgc3Vic3RhcnQgPSBzZWFyY2hfcmVncy5zdGFy dFswXTsKIAkJICAgICAgc3ViZW5kID0gc2VhcmNoX3JlZ3MuZW5kWzBdOworCQkgICAgICBicmVh azsKKwkJICAgIGNhc2UgJ1xcJzoKKwkJICAgICAgLyogU28gd2UgZ2V0IGp1c3Qgb25lIGJhY2tz bGFzaC4gKi8KKwkJICAgICAgbGl0ZXJhbF9lbmQgPSBzdHJwb3M7CisJCSAgICAgIGJyZWFrOwor CQkgICAgY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6IGNhc2UgJzUnOgor CQkgICAgY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6CisJCSAgICAgIHsK KwkJCUlieXRlICpjaGFycG9zCisgICAgICAgICAgICAgICAgICAgICAgICAgID0gc3RyaW5nX2No YXJfYWRkciAocmVwbGFjZW1lbnQsIHN0cnBvcyk7CisJCQlJYnl0ZSAqcmVnZW5kID0gTlVMTDsK KyAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVjb3VudCBsaW1pdCA9IG1pbiAoWFNUUklOR19M RU5HVEggKHJlcGxhY2VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtIChjaGFycG9zIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgWFNUUklOR19EQVRBIChyZXBsYWNlbWVudCkpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbW9zdC1wb3NpdGl2ZS1m aXhudW0gb24gMzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJpdCBpcyB0ZW4gZGVjaW1hbCBkaWdpdHMsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaW5lIHdpbGwga2VlcCB1cyBpbiBmaXhudW0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcnJp dG9yeS4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OSk7CisgICAgICAgICAgICAgICAgICAgICAgICBCeXRlY291bnQgaWkgPSAwOworCQkJTGlzcF9P YmplY3QgcmVnbm87CisJCQlGaXhudW0gcmVnbm9pbmc7CisKKyAgICAgICAgICAgICAgICAgICAg ICAgIC8qIERvbid0IGFjY2VwdCBub24tQVNDSUkgZGVjaW1hbCBkaWdpdHMuIFNlZSB0aGUKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbmluZyBpbiByZWdleC5jLiAqLworICAgICAg ICAgICAgICAgICAgICAgICAgd2hpbGUgKGlpIDwgbGltaXQpCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRleHRfaWNoYXIgKGNo YXJwb3MgKyBpaSkgPiAweDdmKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQgPSBpaTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWkgKz0gcmVwX2J5dGVzX2J5X2ZpcnN0X2J5 dGUgKGNoYXJwb3NbaWldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg ICAgICAgICAgICAgICAgICAvKiBQYXJzZSB0aGUgbG9uZ2VzdCBiYWNrcmVmZXJlbmNlIHdlIGNh biwgYnV0IGRvbid0CisgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWNlIGEgYmlnbnVt LCB0aGF0IGNhbid0IGNvcnJlc3BvbmQgdG8gYQorICAgICAgICAgICAgICAgICAgICAgICAgICAg YmFja3JlZmVyZW5jZSBhbmQgd291bGQgbmVlZGxlc3NseSBjb21wbGljYXRlIGNvZGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZ1cnRoZXIgZG93bi4gICovCisgICAgICAgICAgICAgICAg ICAgICAgICByZWdubyA9IHBhcnNlX2ludGVnZXIgKGNoYXJwb3MsICZyZWdlbmQsIGxpbWl0LCAx MCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUW5p bCk7CisKKwkJCWlmIChGSVhOVU1QIChyZWdubykgJiYKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoKHJlZ25vaW5nID0gWFJFQUxGSVhOVU0gKHJlZ25vKSwgcmVnbm9pbmcgPiAtMSkpKQor ICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogUHJvZ3Jlc3NpdmVseSBkaXZpZGUgZG93biB0aGUgYmFja3JlZmVyZW5jZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVudGlsIHdlIGZpbmQgb25lIHRoYXQgY29ycmVzcG9uZHMg dG8gYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZyByZWdpc3Rlci4g Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocmVnbm9pbmcgPiAxMCAmJgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKHJlZ25vaW5nIDw9IHNlYXJjaF9y ZWdzLm51bV9yZWdzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgREVDX0lCWVRFUFRSIChyZWdlbmQpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZWdub2luZyAvPSAxMDsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWdub2lu ZyA8PSBzZWFyY2hfcmVncy5udW1fcmVncykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbF9lbmQgPSBzdHJwb3Mg LSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJwb3MgPSBzdHJpbmdfaW5k ZXhfYnl0ZV90b19jaGFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcGxh Y2VtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdlbmQgLSBYU1RS SU5HX0RBVEEgKHJlcGxhY2VtZW50KSkgLSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdWJzdGFydCA9IHNlYXJjaF9yZWdzLnN0YXJ0W3JlZ25vaW5nXTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3ViZW5kID0gc2VhcmNoX3JlZ3MuZW5kW3JlZ25vaW5nXTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgfQorCQkJYnJlYWs7CisJCSAgICAgIH0KKwkJICAgIGNhc2UgJ1UnOiBjYXNlICd1JzogY2Fz ZSAnTCc6IGNhc2UgJ2wnOiBjYXNlICdFJzoKKwkJICAgICAgeworCQkJLyogS2VlcCB0cmFjayBv ZiBhbGwgY2FzZSBjaGFuZ2VzIHJlcXVlc3RlZCwgYnV0IGRvbid0CisJCQkgICBtYWtlIHRoZW0g bm93LiAgRG8gdGhlbSBsYXRlciBzbyB3ZSBvdmVycmlkZQorCQkJICAgZXZlcnl0aGluZyBlbHNl LiAqLworCQkJaWYgKCF1bF9wb3NfZHluYXJyKQorCQkJICB7CisJCQkgICAgdWxfcG9zX2R5bmFy ciA9IER5bmFycl9uZXcgKGludCk7CisJCQkgICAgdWxfYWN0aW9uX2R5bmFyciA9IER5bmFycl9u ZXcgKGludCk7CisJCQkgICAgcmVjb3JkX3Vud2luZF9wcm90ZWN0CisJCQkgICAgICAoZnJlZV9j cmVhdGVkX2R5bmFycnMsCisJCQkgICAgICAgbm9zZWV1bV9jb25zCisJCQkgICAgICAgKG1ha2Vf b3BhcXVlX3B0ciAodWxfcG9zX2R5bmFyciksCisJCQkJbWFrZV9vcGFxdWVfcHRyICh1bF9hY3Rp b25fZHluYXJyKSkpOworCQkJICB9CisJCQlsaXRlcmFsX2VuZCA9IHN0cnBvcyAtIDE7CisJCQlE eW5hcnJfYWRkICh1bF9wb3NfZHluYXJyLAorCQkJCSAgICAoIU5JTFAgKGFjY3VtKQorCQkJCSAg ICAgPyBzdHJpbmdfY2hhcl9sZW5ndGggKGFjY3VtKQorCQkJCSAgICAgOiAwKSArIChsaXRlcmFs X2VuZCAtIGxpdGVyYWxfc3RhcnQpKTsKKwkJCUR5bmFycl9hZGQgKHVsX2FjdGlvbl9keW5hcnIs IGMpOworCQkgICAgICB9CiAJCSAgICB9Ci0JCSAgLyogIyMjIyBUaGlzIGxvZ2ljIGlzIHRvdGFs bHkgYnJva2VuLAotCQkgICAgIHNpbmNlIHdlIGNhbiBoYXZlIGJhY2tyZWZzIGxpa2UgIlw5OSIs IHJpZ2h0PyAqLwotCQkgIGVsc2UgaWYgKGMgPj0gJzEnICYmIGMgPD0gJzknICYmCi0JCQkgICBj IDw9IHNlYXJjaF9yZWdzLm51bV9yZWdzICsgJzAnKQotCQkgICAgewotCQkgICAgICBpZiAoc2Vh cmNoX3JlZ3Muc3RhcnRbYyAtICcwJ10gPj0gMCkKLQkJCXsKLQkJCSAgbGl0ZXJhbF9lbmQgPSBz dHJwb3MgLSAxOwotCQkJICBzdWJzdGFydCA9IHNlYXJjaF9yZWdzLnN0YXJ0W2MgLSAnMCddOwot CQkJICBzdWJlbmQgPSBzZWFyY2hfcmVncy5lbmRbYyAtICcwJ107Ci0JCQl9Ci0JCSAgICB9Ci0J CSAgZWxzZSBpZiAoYyA9PSAnVScgfHwgYyA9PSAndScgfHwgYyA9PSAnTCcgfHwgYyA9PSAnbCcg fHwKLQkJCSAgIGMgPT0gJ0UnKQotCQkgICAgewotCQkgICAgICAvKiBLZWVwIHRyYWNrIG9mIGFs bCBjYXNlIGNoYW5nZXMgcmVxdWVzdGVkLCBidXQgZG9uJ3QKLQkJCSBtYWtlIHRoZW0gbm93LiAg RG8gdGhlbSBsYXRlciBzbyB3ZSBvdmVycmlkZQotCQkJIGV2ZXJ5dGhpbmcgZWxzZS4gKi8KLQkJ ICAgICAgaWYgKCF1bF9wb3NfZHluYXJyKQotCQkJewotCQkJICB1bF9wb3NfZHluYXJyID0gRHlu YXJyX25ldyAoaW50KTsKLQkJCSAgdWxfYWN0aW9uX2R5bmFyciA9IER5bmFycl9uZXcgKGludCk7 Ci0JCQkgIHJlY29yZF91bndpbmRfcHJvdGVjdAotCQkJICAgIChmcmVlX2NyZWF0ZWRfZHluYXJy cywKLQkJCSAgICAgbm9zZWV1bV9jb25zCi0JCQkgICAgIChtYWtlX29wYXF1ZV9wdHIgKHVsX3Bv c19keW5hcnIpLAotCQkJICAgICAgbWFrZV9vcGFxdWVfcHRyICh1bF9hY3Rpb25fZHluYXJyKSkp OwotCQkJfQotCQkgICAgICBsaXRlcmFsX2VuZCA9IHN0cnBvcyAtIDE7Ci0JCSAgICAgIER5bmFy cl9hZGQgKHVsX3Bvc19keW5hcnIsCi0JCQkJICAoIU5JTFAgKGFjY3VtKQotCQkJCSAgPyBzdHJp bmdfY2hhcl9sZW5ndGggKGFjY3VtKQotCQkJCSAgOiAwKSArIChsaXRlcmFsX2VuZCAtIGxpdGVy YWxfc3RhcnQpKTsKLQkJICAgICAgRHluYXJyX2FkZCAodWxfYWN0aW9uX2R5bmFyciwgYyk7Ci0J CSAgICB9Ci0JCSAgZWxzZSBpZiAoYyA9PSAnXFwnKQotCQkgICAgLyogU28gd2UgZ2V0IGp1c3Qg b25lIGJhY2tzbGFzaC4gKi8KLQkJICAgIGxpdGVyYWxfZW5kID0gc3RycG9zOwogCQl9CisKIAkg ICAgICBpZiAobGl0ZXJhbF9lbmQgPj0gMCkKIAkJewogCQkgIExpc3BfT2JqZWN0IGxpdGVyYWxf dGV4dCA9IFFuaWw7CkBAIC0zMDUxLDQyICszMTA0LDEwNyBAQAogCQkgaGFuZGxlcyB0aGlzIGNv cnJlY3RseS4KIAkgICAgICAqLwogCSAgICAgIGMgPSBzdHJpbmdfaWNoYXIgKHJlcGxhY2VtZW50 LCArK3N0cnBvcyk7Ci0JICAgICAgaWYgKGMgPT0gJyYnKQotCQlGaW5zZXJ0X2J1ZmZlcl9zdWJz dHJpbmcKLSAgICAgICAgICAgICAgICAgIChidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgbWFr ZV9maXhudW0gKHNlYXJjaF9yZWdzLnN0YXJ0WzBdICsgb2Zmc2V0KSwKLSAgICAgICAgICAgICAg ICAgICBtYWtlX2ZpeG51bSAoc2VhcmNoX3JlZ3MuZW5kWzBdICsgb2Zmc2V0KSk7Ci0JICAgICAg LyogIyMjIyBUaGlzIGxvZ2ljIGlzIHRvdGFsbHkgYnJva2VuLAotCQkgc2luY2Ugd2UgY2FuIGhh dmUgYmFja3JlZnMgbGlrZSAiXDk5IiwgcmlnaHQ/ICovCi0JICAgICAgZWxzZSBpZiAoYyA+PSAn MScgJiYgYyA8PSAnOScgJiYKLQkJICAgICAgIGMgPD0gc2VhcmNoX3JlZ3MubnVtX3JlZ3MgKyAn MCcpCi0JCXsKLQkJICBpZiAoc2VhcmNoX3JlZ3Muc3RhcnRbYyAtICcwJ10gPj0gMSkKLQkJICAg IEZpbnNlcnRfYnVmZmVyX3N1YnN0cmluZwotICAgICAgICAgICAgICAgICAgICAgIChidWZmZXIs Ci0gICAgICAgICAgICAgICAgICAgICAgIG1ha2VfZml4bnVtIChzZWFyY2hfcmVncy5zdGFydFtj IC0gJzAnXSArIG9mZnNldCksCi0gICAgICAgICAgICAgICAgICAgICAgIG1ha2VfZml4bnVtIChz ZWFyY2hfcmVncy5lbmRbYyAtICcwJ10gKyBvZmZzZXQpKTsKLQkJfQotCSAgICAgIGVsc2UgaWYg KGMgPT0gJ1UnIHx8IGMgPT0gJ3UnIHx8IGMgPT0gJ0wnIHx8IGMgPT0gJ2wnIHx8Ci0JCSAgICAg ICBjID09ICdFJykKLQkJewotCQkgIC8qIEtlZXAgdHJhY2sgb2YgYWxsIGNhc2UgY2hhbmdlcyBy ZXF1ZXN0ZWQsIGJ1dCBkb24ndAotCQkgICAgIG1ha2UgdGhlbSBub3cuICBEbyB0aGVtIGxhdGVy IHNvIHdlIG92ZXJyaWRlCi0JCSAgICAgZXZlcnl0aGluZyBlbHNlLiAqLwotCQkgIGlmICghdWxf cG9zX2R5bmFycikKLQkJICAgIHsKLQkJICAgICAgdWxfcG9zX2R5bmFyciA9IER5bmFycl9uZXcg KGludCk7Ci0JCSAgICAgIHVsX2FjdGlvbl9keW5hcnIgPSBEeW5hcnJfbmV3IChpbnQpOwotCQkg ICAgICByZWNvcmRfdW53aW5kX3Byb3RlY3QKLQkJCShmcmVlX2NyZWF0ZWRfZHluYXJycywKLQkJ CSBGY29ucyAobWFrZV9vcGFxdWVfcHRyICh1bF9wb3NfZHluYXJyKSwKLQkJCQltYWtlX29wYXF1 ZV9wdHIgKHVsX2FjdGlvbl9keW5hcnIpKSk7Ci0JCSAgICB9Ci0JCSAgRHluYXJyX2FkZCAodWxf cG9zX2R5bmFyciwgQlVGX1BUIChidWYpKTsKLQkJICBEeW5hcnJfYWRkICh1bF9hY3Rpb25fZHlu YXJyLCBjKTsKLQkJfQotCSAgICAgIGVsc2UKLQkJYnVmZmVyX2luc2VydF9lbWFjc19jaGFyIChi dWYsIGMpOworICAgICAgICAgICAgICBzd2l0Y2ggKGMpCisgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgIGNhc2UgJyYnOgorICAgICAgICAgICAgICAgICAgRmluc2VydF9idWZmZXJf c3Vic3RyaW5nCisgICAgICAgICAgICAgICAgICAgIChidWZmZXIsCisgICAgICAgICAgICAgICAg ICAgICBtYWtlX2ZpeG51bSAoc2VhcmNoX3JlZ3Muc3RhcnRbMF0gKyBvZmZzZXQpLAorICAgICAg ICAgICAgICAgICAgICAgbWFrZV9maXhudW0gKHNlYXJjaF9yZWdzLmVuZFswXSArIG9mZnNldCkp OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAnMSc6IGNh c2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6IGNhc2UgJzUnOgorICAgICAgICAgICAgICAgIGNh c2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOgorICAgICAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICAgICBJYnl0ZSAqY2hhcnBvcworICAgICAgICAgICAgICAgICAg ICAgID0gc3RyaW5nX2NoYXJfYWRkciAocmVwbGFjZW1lbnQsIHN0cnBvcyk7CisgICAgICAgICAg ICAgICAgICAgIElieXRlICpyZWdlbmQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBCeXRl Y291bnQgbGltaXQgPSBtaW4gKFhTVFJJTkdfTEVOR1RIIChyZXBsYWNlbWVudCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIChjaGFycG9zIC0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYU1RSSU5HX0RBVEEgKHJlcGxh Y2VtZW50KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog bW9zdC1wb3NpdGl2ZS1maXhudW0gb24gMzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBiaXQgaXMgdGVuIGRlY2ltYWwgZGlnaXRzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbmUgd2lsbCBrZWVwIHVzIGluIGZp eG51bQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcnJp dG9yeS4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5KTsK KyAgICAgICAgICAgICAgICAgICAgQnl0ZWNvdW50IGlpID0gMDsKKyAgICAgICAgICAgICAgICAg ICAgTGlzcF9PYmplY3QgcmVnbm87CisgICAgICAgICAgICAgICAgICAgIEZpeG51bSByZWdub2lu ZzsKKworICAgICAgICAgICAgICAgICAgICAvKiBEb24ndCBhY2NlcHQgbm9uLUFTQ0lJIGRlY2lt YWwgZGlnaXRzLiBTZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbmluZyBpbiBy ZWdleC5jLiAqLworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaWkgPCBsaW1pdCkKKyAgICAg ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRleHRfaWNo YXIgKGNoYXJwb3MgKyBpaSkgPiAweDdmKSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ID0gaWk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgICAgICAgIGlpICs9IHJlcF9ieXRlc19ieV9maXJzdF9ieXRlIChjaGFycG9zW2lp XSk7CisgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8qIFBh cnNlIHRoZSBsb25nZXN0IGJhY2tyZWZlcmVuY2Ugd2UgY2FuLCBidXQgZG9uJ3QKKyAgICAgICAg ICAgICAgICAgICAgICAgcHJvZHVjZSBhIGJpZ251bSwgdGhhdCBjYW4ndCBjb3JyZXNwb25kIHRv IGEKKyAgICAgICAgICAgICAgICAgICAgICAgYmFja3JlZmVyZW5jZSBhbmQgd291bGQgbmVlZGxl c3NseSBjb21wbGljYXRlIGNvZGUKKyAgICAgICAgICAgICAgICAgICAgICAgZnVydGhlciBkb3du LiAgKi8KKyAgICAgICAgICAgICAgICAgICAgcmVnbm8KKyAgICAgICAgICAgICAgICAgICAgICA9 IHBhcnNlX2ludGVnZXIgKGNoYXJwb3MsICZyZWdlbmQsIGxpbWl0LCAxMCwgMSwgUW5pbCk7CisK KyAgICAgICAgICAgICAgICAgICAgaWYgKEZJWE5VTVAgKHJlZ25vKSAmJgorICAgICAgICAgICAg ICAgICAgICAgICAgKChyZWdub2luZyA9IFhSRUFMRklYTlVNIChyZWdubyksIHJlZ25vaW5nID4g LTEpKSkKKyAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAv KiBQcm9ncmVzc2l2ZWx5IGRpdmlkZSBkb3duIHRoZSBiYWNrcmVmZXJlbmNlIHVudGlsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICB3ZSBmaW5kIG9uZSB0aGF0IGNvcnJlc3BvbmRzIHRvIGFu IGV4aXN0aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlci4gKi8KKyAgICAg ICAgICAgICAgICAgICAgICAgIHdoaWxlIChyZWdub2luZyA+IDEwICYmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIShyZWdub2luZyA8PSBzZWFyY2hfcmVncy5udW1fcmVncykpCisg ICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBE RUNfSUJZVEVQVFIgKHJlZ2VuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnbm9p bmcgLz0gMTA7CisgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKHJlZ25vaW5nIDw9IHNlYXJjaF9yZWdzLm51bV9yZWdzCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJiYgc2VhcmNoX3JlZ3Muc3RhcnRbcmVnbm9pbmddID49IDEpCisg ICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBG aW5zZXJ0X2J1ZmZlcl9zdWJzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChi dWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9maXhudW0gKHNlYXJj aF9yZWdzLnN0YXJ0W3JlZ25vaW5nXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArIG9mZnNldCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFr ZV9maXhudW0gKHNlYXJjaF9yZWdzLmVuZFtyZWdub2luZ10KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKyBvZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdGhlcndpc2U7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAgICAgICBnb3RvIG90aGVyd2lzZTsKKyAgICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgIGNhc2UgJ1UnOiBjYXNlICd1JzogY2FzZSAnTCc6IGNhc2UgJ2wnOiBjYXNlICdFJzoK KyAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLyogS2VlcCB0cmFjayBv ZiBhbGwgY2FzZSBjaGFuZ2VzIHJlcXVlc3RlZCwgYnV0IGRvbid0CisgICAgICAgICAgICAgICAg ICAgICAgIG1ha2UgdGhlbSBub3cuICBEbyB0aGVtIGxhdGVyIHNvIHdlIG92ZXJyaWRlCisgICAg ICAgICAgICAgICAgICAgICAgIGV2ZXJ5dGhpbmcgZWxzZS4gKi8KKyAgICAgICAgICAgICAgICAg ICAgaWYgKCF1bF9wb3NfZHluYXJyKQorICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgIHVsX3Bvc19keW5hcnIgPSBEeW5hcnJfbmV3IChpbnQpOworICAgICAg ICAgICAgICAgICAgICAgICAgdWxfYWN0aW9uX2R5bmFyciA9IER5bmFycl9uZXcgKGludCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRfdW53aW5kX3Byb3RlY3QKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgKGZyZWVfY3JlYXRlZF9keW5hcnJzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgRmNvbnMgKG1ha2Vfb3BhcXVlX3B0ciAodWxfcG9zX2R5bmFyciksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9vcGFxdWVfcHRyICh1bF9hY3Rpb25fZHlu YXJyKSkpOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgRHlu YXJyX2FkZCAodWxfcG9zX2R5bmFyciwgQlVGX1BUIChidWYpKTsKKyAgICAgICAgICAgICAgICAg ICAgRHluYXJyX2FkZCAodWxfYWN0aW9uX2R5bmFyciwgYyk7CisgICAgICAgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg ICAgICAgICAgICAgICAgb3RoZXJ3aXNlOgorICAgICAgICAgICAgICAgICAgYnVmZmVyX2luc2Vy dF9lbWFjc19jaGFyIChidWYsIGMpOworICAgICAgICAgICAgICAgIH0KIAkgICAgfQogCSAgZWxz ZQogCSAgICBidWZmZXJfaW5zZXJ0X2VtYWNzX2NoYXIgKGJ1ZiwgYyk7CmRpZmYgLXIgYTU2MWUw MmJiNjI2IC1yIDFjMDBjY2Y1NjE5MyB0ZXN0cy9DaGFuZ2VMb2cKLS0tIGEvdGVzdHMvQ2hhbmdl TG9nCUZyaSBKdW4gMDMgMDk6MzA6NDcgMjAxNiAtMDYwMAorKysgYi90ZXN0cy9DaGFuZ2VMb2cJ VGh1IEp1biAxNiAxNDoxNzo1NyAyMDE2ICswMTAwCkBAIC0xLDMgKzEsOSBAQAorMjAxNi0wNi0x NiAgQWlkYW4gS2Vob2UgIDxrZWhvZWFAcGFyaGFzYXJkLm5ldD4KKworCSogYXV0b21hdGVkL3Jl Z2V4cC10ZXN0cy5lbDoKKwlUZXN0IGhpZ2gtbnVtYmVyZWQgYmFja3JlZmVyZW5jZXMuIENoZWNr IHRoYXQgbm9uLUFTQ0lJIGRlY2ltYWwKKwlkaWdpdHMgYXJlIG5vdCBhY2NlcHRlZCBmb3IgdGhp cyBzeW50YXguCisKIDIwMTYtMDUtMzEgIEFpZGFuIEtlaG9lICA8a2Vob2VhQHBhcmhhc2FyZC5u ZXQ+CiAKIAkqIGF1dG9tYXRlZC9saXNwLXRlc3RzLmVsOgpkaWZmIC1yIGE1NjFlMDJiYjYyNiAt ciAxYzAwY2NmNTYxOTMgdGVzdHMvYXV0b21hdGVkL3JlZ2V4cC10ZXN0cy5lbAotLS0gYS90ZXN0 cy9hdXRvbWF0ZWQvcmVnZXhwLXRlc3RzLmVsCUZyaSBKdW4gMDMgMDk6MzA6NDcgMjAxNiAtMDYw MAorKysgYi90ZXN0cy9hdXRvbWF0ZWQvcmVnZXhwLXRlc3RzLmVsCVRodSBKdW4gMTYgMTQ6MTc6 NTcgMjAxNiArMDEwMApAQCAtNTMzLDYgKzUzMyw4NCBAQAogCQkJCQkJICAgICAyKSkKICAgICAg ICkpKQogCis7OyBUZXN0aW5nIG1hdGNoaW5nIG9mIGJhY2tyZWZlcmVuY2VzIHdpdGggbnVtYmVy cyBncmVhdGVyIHRoYW4gOS4KKyhtYWNyb2xldAorICAgICgocHJvYmUtYmFja3JlZi1saW1pdHMg KCZyZXN0IGxpbWl0cykKKyAgICAgICAobGlzdCoKKyAgICAgICAgJ2xldAorICAgICAgICAnKChs b2ctd2FybmluZy1zdXBwcmVzc2VkLWNsYXNzZXMKKyAgICAgICAgICAgKGNvbnMgJ3JlZ2V4IGxv Zy13YXJuaW5nLXN1cHByZXNzZWQtY2xhc3NlcykpCisgICAgICAgICAgKGRpc3BsYXktd2Fybmlu Zy1zdXBwcmVzc2VkLWNsYXNzZXMKKyAgICAgICAgICAgKGNvbnMgJ3JlZ2V4IGRpc3BsYXktd2Fy bmluZy1zdXBwcmVzc2VkLWNsYXNzZXMpKSkKKyAgICAgICAgKGNvbnMKKwkgJ3Byb2duCisJIChs b29wIGZvciBsaW1pdCBpbiBsaW1pdHMKKwkgICBjb2xsZWN0CisJICAgYCgsKGlmIChmaXhudW1w IGxpbWl0KQorCQkgICdwcm9nbgorCQkocHJvZ24KKwkJICAoc2V0cSBsaW1pdCAoY2RyIGxpbWl0 KSkKKwkJICAnS25vd24tQnVnLUV4cGVjdC1GYWlsdXJlKSkKKwkgICAgIChBc3NlcnQgCisJICAg ICAgKGVxdWFsCisJICAgICAgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKKwkJKHdpdGgtb3V0 cHV0LXRvLXN0cmluZworCQkgIChsb29wIGZvciBpaSBmcm9tIDEgdG8gLCgtIGxpbWl0IDEpCisJ CSAgICBkbyAod3JpdGUtc2VxdWVuY2UgI3IiXChcKSIpKQorCQkgICh3cml0ZS1zZXF1ZW5jZSAs KGZvcm1hdCAjciJcKGFcKVwlZCIgbGltaXQpKSkKKwkJIlpaIiAiYmJhYWNjIikKKwkgICAgICAg ImJiWlpjYyIpCisgICAgICAgICAgICAgICAgLChmb3JtYXQgImNoZWNraW5nIG1hdGNoaW5nIGJh Y2tyZWZlcmVuY2UgJWQgd29ya3MgXAorYXBwcm9wcmlhdGVseSwgQVNDSUkgZGlnaXRzIiBsaW1p dCkpKSkpCisgICAgICAgIChsb29wIGZvciAoY29kZS1wb2ludCAuIHNjcmlwdCkKKyAgICAgICAg ICBpbiAnKCgjeDA2NjAgLiAiQXJhYmljLUluZGljIikKKyAgICAgICAgICAgICAgICgjeDA2ZjAg LiAiRXh0ZW5kZWQgQXJhYmljLUluZGljIikKKwkgICAgICAgOzsgTm90IGNoZWNraW5nIHRoZSBm dWxsIGxpc3Qgb2YgZGVjaW1hbCBkaWdpdHMgaW4KKwkgICAgICAgOzsgVW5pY29kZSwgdGhhdCBn ZXRzIHRlZGlvdXMuCisgICAgICAgICAgICAgICAoI3gwMDAxZDdmNiAuICJNYXRoZW1hdGljYWwg TW9ub3NwYWNlIikpCisgICAgICAgICAgd2l0aCBkZWNpbWFsLWZpeG51bS10by1zdHJpbmcgPQor ICAgICAgICAgICMnKGxhbWJkYSAoZml4bnVtIHplcm8tY29kZS1wb2ludCkKKyAgICAgICAgICAg ICAgKGxldCAobGlzdCkKKyAgICAgICAgICAgICAgICAod2hpbGUgKG5vdCAoemVyb3AgZml4bnVt KSkKKyAgICAgICAgICAgICAgICAgIChwdXNoIChkZWNvZGUtY2hhciAndWNzICgrIHplcm8tY29k ZS1wb2ludCAoJSBmaXhudW0gMTApKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QpCisg ICAgICAgICAgICAgICAgICAoc2V0cSBmaXhudW0gKC8gZml4bnVtIDEwKSkpCisgICAgICAgICAg ICAgICAgKGNvbmNhdCBsaXN0IG5pbCkpKQorICAgICAgICAgIGNvbGxlY3QKKyAgICAgICAgICAo Y29ucworICAgICAgICAgICAncHJvZ24KKyAgICAgICAgICAgKGxvb3AKKyAgICAgICAgICAgICAg IGZvciBsaW1pdCBpbiBsaW1pdHMKKyAgICAgICAgICAgICAgIGNvbGxlY3QKKyAgICAgICAgICAg ICAgIGAoQXNzZXJ0CisgICAgICAgICAgICAgICAgIChlcXVhbAorICAgICAgICAgICAgICAgICAg KHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZworICAgICAgICAgICAgICAgICAgICh3aXRoLW91dHB1 dC10by1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgIChsb29wIGZvciBpaSBmcm9tIDEgdG8g LCgtIChpZiAoY29uc3AgbGltaXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgbGltaXQgKGNkciBsaW1pdCkpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0KQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRvICh3cml0ZS1zZXF1ZW5jZSAjciJcKFwpIikpCisgICAgICAgICAgICAgICAg ICAgICAod3JpdGUtc2VxdWVuY2UgLChjb25jYXQgI3IiXChhXCkiICJcXCIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2FsbAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsLWZpeG51bS10by1zdHJp bmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQg Y29kZS1wb2ludCkpKSkKKyAgICAgICAgICAgICAgICAgICAiWloiICJiYmFhY2MiKQorICAgICAg ICAgICAgICAgICAgImJiYWFjYyIpCisgICAgICAgICAgICAgICAgICwoZm9ybWF0ICJjaGVja2lu ZyBtYXRjaGluZyBiYWNrcmVmZXJlbmNlICVkIGRvZXMgbm90IHdvcmtcCisgd29yaywgJXMiIGxp bWl0IHNjcmlwdCkpKSkpKSkpCisgIChwcm9iZS1iYWNrcmVmLWxpbWl0cyAxIDkgMTAgNTAgMTAw IDE1MCAyMDAgMjU1IChmYWlsIC4gNTAwKSkpCisKKyhBc3NlcnQKKyAoZXF1YWwKKyAgKHJlcGxh Y2UtcmVnZXhwLWluLXN0cmluZyAjciJcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwo XClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChc KVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwp XChcKVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwoXClc KFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwo XClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChc KVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwpXChcKVwoXClcKFwp XChcKVwoXClcKFwpXChcKVwoXClcKFwpXChhXClcMTAxIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICNyIlwxMDEwMDAiICJhYTAxYmIiKQorICA7OyBHaXZlcyAiYTAxMDAwYmIiIHVuZGVy IEdOVSwgd2hlcmUgdGhlcmUgYXJlIG5vIGJhY2tyZWZlcmVuY2VzIGdyZWF0ZXIKKyAgOzsgdGhh biBuaW5lLCBhbmQgImFhMDFiYiIgYmVmb3JlIHN1cHBvcnQgZm9yIGJhY2tyZWZlcmVuY2VzIGdy ZWF0ZXIgdGhhbiA5OQorICA7OyB3YXMgYWRkZWQuCisgICJhMDAwMDFiYiIpIAorICJjaGVja2lu ZyBoaWdoLW51bWJlcmVkIGJhY2tyZWZlcmVuY2UgaW4gcmVwbGFjaW5nIGNvZGUiKQorCiA7OyBO b3QgdmVyeSBjb21wcmVoZW5zaXZlIHRlc3RzIG9mIHNraXAtY2hhcnMtZm9yd2FyZCwgc2tpcC1j aGFycy1iYWNrZ3JvdW5kOiAKIAogKHdpdGgtc3RyaW5nLWFzLWJ1ZmZlci1jb250ZW50cyAKQEAg LTExMTcsMyArMTE5NSw0IEBACiAgIChBc3NlcnQgKG51bGwgKHJlLXNlYXJjaC1mb3J3YXJkICJb WzphbG51bTpdXSIgbmlsIHQpKQogICAgICAgICAgICJjaGVja2luZyB0aGF0IGEgYnVnIHdpdGgg ZGlydHkgc3ludGF4IHRhYmxlIGNhY2hlcyBoYXMgYmVlbiBmaXhlZCIpKQogICAKKzs7OyBlbmQg b2YgcmVnZXhwLXRlc3RzLmVsCgoKLS0gCuKAmFRyYW1hZG9sIGlzIGZ1cnRoZXIgZmVkIHRvIGNh dHRsZSBb4oCmXSB3aGVuIHdvcmtpbmcgdGhlbSBb4oCmXSAoYXMgZHJhZnQKYW5pbWFscykgc28g dGhhdCB0aGUgYW5pbWFscyBkbyBub3QgZ2V0IHRpcmVkIHF1aWNrbHkuIOKApuKAmQoJ4oCUIEFu Z2V3YW5kdGUgQ2hlbWllLCBTZXB0IDIwMTQsIGRlc2NyaWJpbmcgdGhlIHNvY2lhbCBjb250ZXh0 IG9mCgkoc3ludGhldGljKSB0cmFtYWRvbCBoYXZpbmcgYmVlbiBmb3VuZCBpbiBDYW1lcm9vbiB0 cmVlIHJvb3RzLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWEVtYWNzLVBhdGNoZXMgbWFpbGluZyBsaXN0ClhFbWFjcy1QYXRjaGVzQHhlbWFjcy5vcmcK aHR0cDovL2xpc3RzLnhlbWFjcy5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW1hY3MtcGF0Y2hlcwo=