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=