[COMMIT] Import the #'clear-string API from GNU, use it in tls.c
Aidan Kehoe <[email protected]> Sat, 18 Apr 2015 23:15:28 +0100
| Newsgroups | gmane.emacs.xemacs.patches |
|---|---|
| Message-ID | <[email protected]> |
CiBBciBhbiBzZWFjaHTDuiBsw6EgZMOpYWcgZGUgbcOtIEFpYnLDqWFuLCBzY3LDrW9iaCBKZXJy eSBKYW1lczogCgogPiBBaCwgZ29vZCBjYXRjaC4gIFllcywgcGxlYXNlIGNvbW1pdCB0aGlzLgoK TXVsbGluZyBpdCBzb21lIG1vcmUsIEkgc2VlIHRoZXJl4oCZcyBubyB3YXkgZm9yIExpc3AgdG8g ZG8gd2hhdCB3ZSB3YW50IHRvIGRvLAp3aGljaCBpcyBhIGxpbWl0YXRpb24sIGVzcGVjaWFsbHkg Z2l2ZW4gdGhhdCAjJ3JlYWQtcGFzc3dkIGlzIGluIExpc3AuIEnigJl2ZQpjb21taXR0ZWQgdGhl IGJlbG93OyBHTlUgaGF2ZSBhICMnY2xlYXItc3RyaW5nIGFscmVhZHksIHRoaXMgaW1wbGVtZW50 YXRpb24KZG9lcyB0aGUgc2FtZSB0aGluZyB3aGlsZSBhdm9pZGluZyB0aGVpciBleHBvc3VyZSBv ZiB0aGUgYnl0ZS9jaGFyIGRpZmZlcmVuY2UKdG8gTGlzcC4KCiMgSEcgY2hhbmdlc2V0IHBhdGNo CiMgVXNlciBBaWRhbiBLZWhvZSA8a2Vob2VhQHBhcmhhc2FyZC5uZXQ+CiMgRGF0ZSAxNDI5Mzk0 NDE0IC0zNjAwCiMgICAgICBTYXQgQXByIDE4IDIzOjAwOjE0IDIwMTUgKzAxMDAKIyBOb2RlIElE IDA1M2VmMDFiNzFhODY0YzE5NzY2ODFkYWYxMDI1M2UzNzA4MjE4Y2UKIyBQYXJlbnQgIDg3MDRi Nzk1NzU4NWM5ODYwMWZlODFlODRkMmU5NmYwNWQ2MjA2YjQKSW1wb3J0IHRoZSAjJ2NsZWFyLXN0 cmluZyBBUEkgZnJvbSBHTlUsIHVzZSBpdCBpbiB0bHMuYwoKc3JjL0NoYW5nZUxvZyBhZGRpdGlv bjoKCjIwMTUtMDQtMTggIEFpZGFuIEtlaG9lICA8a2Vob2VhQHBhcmhhc2FyZC5uZXQ+CgoJKiBz ZXF1ZW5jZS5jIChGY2xlYXJfc3RyaW5nKTogTmV3LCBBUEkgZnJvbSBHTlUuICBaZXJvIGEgc3Ry aW5nJ3MKCWNvbnRlbnRzLCBtYWtpbmcgc3VyZSB0aGUgdGV4dCBpcyBub3Qga2VwdCBhcm91bmQg ZXZlbiB3aGVuIHRoZQoJc3RyaW5nJ3MgZGF0YSBpcyByZWFsbG9jYXRlZCBiZWNhdXNlIG9mIGEg Y2hhbmdlZCBjaGFyYWN0ZXIKCWxlbmd0aC4KCSogc2VxdWVuY2UuYyAoc3ltc19vZl9zZXF1ZW5j ZSk6IE1ha2UgaXQgYXZhaWxhYmxlIHRvIExpc3AuCgkqIGxpc3AuaDogTWFrZSBpdCBhdmFpbGFi bGUgdG8gQyBjb2RlLgoJKiB0bHMuYyAobnNzX3BrMTFfcGFzc3dvcmQpOiBVc2UgaXQuCgkqIHRs cy5jIChnbnV0bHNfcGsxMV9wYXNzd29yZCk6IFVzZSBpdC4KCSogdGxzLmMgKG9wZW5zc2xfcGFz c3dvcmQpOiBVc2UgaXQuCgp0ZXN0cy9DaGFuZ2VMb2cgYWRkaXRpb246CgoyMDE1LTA0LTE4ICBB aWRhbiBLZWhvZSAgPGtlaG9lYUBwYXJoYXNhcmQubmV0PgoKCSogYXV0b21hdGVkL2xpc3AtdGVz dHMuZWw6CglUZXN0ICMnY2xlYXItc3RyaW5nLCBqdXN0IGFkZGVkLiBVbmZvcnR1bmF0ZWx5IHRo ZXJlJ3Mgbm8gd2F5IHRvCgliZSBjZXJ0YWluIGZyb20gTGlzcCB0aGF0IHRoZSBvbGQgcGFzc3dv cmQgZGF0YSBoYXMgYmVlbiBlcmFzZWQKCWFmdGVyIHJlYWxsb2M7IGl0IG1heSBiZSB3b3J0aCBh ZGRpbmcgYSB0ZXN0IHRvIHRlc3RzLmMsIGJ1dAoJKndlJ2xsIGJlIHJlYWRpbmcgbWVtb3J5IHdl IHNob3VsZG4ndCBiZSosIHNvIHRoYXQgZ2l2ZXMgbWUgcGF1c2UuCgpkaWZmIC1yIDg3MDRiNzk1 NzU4NSAtciAwNTNlZjAxYjcxYTggc3JjL0NoYW5nZUxvZwotLS0gYS9zcmMvQ2hhbmdlTG9nCVNh dCBBcHIgMTEgMTg6MzQ6MTQgMjAxNSArMDEwMAorKysgYi9zcmMvQ2hhbmdlTG9nCVNhdCBBcHIg MTggMjM6MDA6MTQgMjAxNSArMDEwMApAQCAtMSwzICsxLDE1IEBACisyMDE1LTA0LTE4ICBBaWRh biBLZWhvZSAgPGtlaG9lYUBwYXJoYXNhcmQubmV0PgorCisJKiBzZXF1ZW5jZS5jIChGY2xlYXJf c3RyaW5nKTogTmV3LCBBUEkgZnJvbSBHTlUuICBaZXJvIGEgc3RyaW5nJ3MKKwljb250ZW50cywg bWFraW5nIHN1cmUgdGhlIHRleHQgaXMgbm90IGtlcHQgYXJvdW5kIGV2ZW4gd2hlbiB0aGUKKwlz dHJpbmcncyBkYXRhIGlzIHJlYWxsb2NhdGVkIGJlY2F1c2Ugb2YgYSBjaGFuZ2VkIGNoYXJhY3Rl cgorCWxlbmd0aC4KKwkqIHNlcXVlbmNlLmMgKHN5bXNfb2Zfc2VxdWVuY2UpOiBNYWtlIGl0IGF2 YWlsYWJsZSB0byBMaXNwLgorCSogbGlzcC5oOiBNYWtlIGl0IGF2YWlsYWJsZSB0byBDIGNvZGUu CisJKiB0bHMuYyAobnNzX3BrMTFfcGFzc3dvcmQpOiBVc2UgaXQuCisJKiB0bHMuYyAoZ251dGxz X3BrMTFfcGFzc3dvcmQpOiBVc2UgaXQuCisJKiB0bHMuYyAob3BlbnNzbF9wYXNzd29yZCk6IFVz ZSBpdC4KKwogMjAxNS0wNC0wOSAgQWlkYW4gS2Vob2UgIDxrZWhvZWFAcGFyaGFzYXJkLm5ldD4K IAogCSogdGxzLmMgKG5zc19wazExX3Bhc3N3b3JkKToKZGlmZiAtciA4NzA0Yjc5NTc1ODUgLXIg MDUzZWYwMWI3MWE4IHNyYy9saXNwLmgKLS0tIGEvc3JjL2xpc3AuaAlTYXQgQXByIDExIDE4OjM0 OjE0IDIwMTUgKzAxMDAKKysrIGIvc3JjL2xpc3AuaAlTYXQgQXByIDE4IDIzOjAwOjE0IDIwMTUg KzAxMDAKQEAgLTU3ODgsNiArNTc4OCw3IEBACiAKIC8qIERlZmluZWQgaW4gc2VxdWVuY2UuYyAq LwogRVhGVU4gKEZmaWxsLCBNQU5ZKTsKK0VYRlVOIChGY2xlYXJfc3RyaW5nLCAxKTsKIEVYRlVO IChGcmVwbGFjZSwgTUFOWSk7CiAKIC8qIERlZmluZWQgaW4gc2lnbmFsLmMgKi8KZGlmZiAtciA4 NzA0Yjc5NTc1ODUgLXIgMDUzZWYwMWI3MWE4IHNyYy9zZXF1ZW5jZS5jCi0tLSBhL3NyYy9zZXF1 ZW5jZS5jCVNhdCBBcHIgMTEgMTg6MzQ6MTQgMjAxNSArMDEwMAorKysgYi9zcmMvc2VxdWVuY2Uu YwlTYXQgQXByIDE4IDIzOjAwOjE0IDIwMTUgKzAxMDAKQEAgLTQxNTQsNiArNDE1NCw1MiBAQAog ICByZXR1cm4gc2VxdWVuY2U7CiB9CiAKK0RFRlVOICgiY2xlYXItc3RyaW5nIiwgRmNsZWFyX3N0 cmluZywgMSwgMSwgMCwgLyoKK0ZpbGwgU1RSSU5HIHdpdGggP1xceDAwIGNoYXJhY3RlcnMuICBS ZXR1cm4gbmlsLgorCitUaGlzIGRpZmZlcnMgZnJvbSBgZmlsbCcgd2l0aCBhID9cXHgwMCBhcmd1 bWVudCBpbiB0aGF0IGl0IGVuc3VyZXMgdGhhdAorU1RSSU5HJ3MgZXhpc3RpbmcgY29udGVudHMg YXJlIGRpc2NhcmRlZCwgZXZlbiBpbiB0aGUgZXZlbnQgb2YgcmVhbGxvY2F0aW9uCitkdWUgdG8g YSBjaGFuZ2UgaW4gdGhlIGJ5dGUgbGVuZ3RoIG9mIFNUUklORy4gIEluIHRoaXMgaW1wbGVtZW50 YXRpb24sIHRoZQorY2hhcmFjdGVyIGxlbmd0aCBvZiBTVFJJTkcgaXMgbm90IGNoYW5nZWQuCisq LworICAgICAgIChzdHJpbmcpKQoreworICBJYnl0ZSBudWxsYnl0ZVtNQVhfSUNIQVJfTEVOXTsK KyAgQnl0ZWNvdW50IHplcm9sZW4gPSBzZXRfaXRleHRfaWNoYXIgKG51bGxieXRlLCAwKTsKKyAg Q2hhcmNvdW50IHNjb3VudDsKKworICBDSEVDS19TVFJJTkcgKHN0cmluZyk7CisKKyAgc2NvdW50 ID0gc3RyaW5nX2NoYXJfbGVuZ3RoIChzdHJpbmcpOworCisgIC8qIEZpcnN0LCBjbGVhciB0aGUg b3JpZ2luYWwgc3RyaW5nIGRhdGEuICovCisgIG1lbXNldCAoWFNUUklOR19EQVRBIChzdHJpbmcp LCAwLCBYU1RSSU5HX0xFTkdUSCAoc3RyaW5nKSk7CisKKyAgLyogTm93LCByZXNpemUgaWYgdGhh dCdzIG5lY2Vzc2FyeSwgdG8gbWFrZSBzdXJlIExpc3AgaXNuJ3QgY29uZnVzZWQgYnkgdGhlCisg ICAgIGNoYXJhY3RlciBsZW5ndGggb2YgYSBzdHJpbmcgY2hhbmdpbmcuICovCisgIGlmIChzdHJp bmdfY2hhcl9sZW5ndGggKHN0cmluZykgIT0gc2NvdW50KQorICAgIHsKKyAgICAgIElieXRlICpw LCAqcGVuZDsKKyAgICAgIEJ5dGVjb3VudCBkZWx0YSA9ICh6ZXJvbGVuICogc2NvdW50KSAtIFhT VFJJTkdfTEVOR1RIIChzdHJpbmcpOworCisgICAgICByZXNpemVfc3RyaW5nIChzdHJpbmcsIDAs IGRlbHRhKTsKKyAgICAgIHAgPSBYU1RSSU5HX0RBVEEgKHN0cmluZyk7CisgICAgICBwZW5kID0g cCArIFhTVFJJTkdfTEVOR1RIIChzdHJpbmcpOworCisgICAgICB3aGlsZSAocCA8IHBlbmQpCisg ICAgICAgIHsKKyAgICAgICAgICBtZW1jcHkgKHAsIG51bGxieXRlLCB6ZXJvbGVuKTsKKyAgICAg ICAgICBwICs9IHplcm9sZW47CisgICAgICAgIH0KKyAgICB9CisKKyAgaW5pdF9zdHJpbmdfYXNj aWlfYmVnaW4gKHN0cmluZyk7CisgIGJ1bXBfc3RyaW5nX21vZGlmZiAoc3RyaW5nKTsKKyAgc2xl ZGdlaGFtbWVyX2NoZWNrX2FzY2lpX2JlZ2luIChzdHJpbmcpOworCisgIHJldHVybiBRbmlsOwor fQorCiAMCiAvKiBSZXBsYWNlIHRoZSBzdWJzdHJpbmcgb2YgREVTVCBiZWdpbm5pbmcgYXQgU1RB UlQgYW5kIGVuZGluZyBiZWZvcmUgRU5ECiAgICB3aXRoIHRoZSB0ZXh0IGF0IFNPVVJDRSwgd2hp Y2ggaXMgRU5EIC0gU1RBUlQgY2hhcmFjdGVycyBsb25nIGFuZApAQCAtODMxNiw2ICs4MzYyLDcg QEAKICAgREVGU1VCUiAoRm1lcmdlKTsKICAgREVGU1VCUiAoRnNvcnRYKTsKICAgREVGU1VCUiAo RmZpbGwpOworICBERUZTVUJSIChGY2xlYXJfc3RyaW5nKTsKICAgREVGU1VCUiAoRm1hcGNvbmNh dCk7CiAgIERFRlNVQlIgKEZtYXBjYXJYKTsKICAgREVGU1VCUiAoRm1hcHZlY3Rvcik7CmRpZmYg LXIgODcwNGI3OTU3NTg1IC1yIDA1M2VmMDFiNzFhOCBzcmMvdGxzLmMKLS0tIGEvc3JjL3Rscy5j CVNhdCBBcHIgMTEgMTg6MzQ6MTQgMjAxNSArMDEwMAorKysgYi9zcmMvdGxzLmMJU2F0IEFwciAx OCAyMzowMDoxNCAyMDE1ICswMTAwCkBAIC0zMDIsNyArMzAyLDcgQEAKIHN0YXRpYyBjaGFyICoK IG5zc19wazExX3Bhc3N3b3JkIChQSzExU2xvdEluZm8gKnNsb3QsIFBSQm9vbCByZXRyeSwgdm9p ZCAqIFVOVVNFRCAoYXJnKSkKIHsKLSAgTGlzcF9PYmplY3QgbHNwX3Bhc3N3b3JkLCBhcmdzWzJd OworICBMaXNwX09iamVjdCBsc3BfcGFzc3dvcmQ7CiAgIEV4dGJ5dGUgKmNfcGFzc3dvcmQsICpu c3NfcGFzc3dvcmQ7CiAgIGNvbnN0IEV4dGJ5dGUgKnRva2VuX25hbWU7CiAKQEAgLTMxOSwxMCAr MzE5LDkgQEAKICAgbnNzX3Bhc3N3b3JkID0gUExfc3RyZHVwIChjX3Bhc3N3b3JkKTsKIAogICAv KiBXaXBlIG91dCB0aGUgcGFzc3dvcmQgb24gdGhlIHN0YWNrIGFuZCBpbiB0aGUgTGlzcCBzdHJp bmcgKi8KLSAgYXJnc1swXSA9IGxzcF9wYXNzd29yZDsKLSAgYXJnc1sxXSA9IG1ha2VfY2hhciAo JyonKTsKLSAgRmZpbGwgKDIsIGFyZ3MpOworICBGY2xlYXJfc3RyaW5nIChsc3BfcGFzc3dvcmQp OwogICBtZW1zZXQgKGNfcGFzc3dvcmQsICcqJywgc3RybGVuIChjX3Bhc3N3b3JkKSk7CisKICAg cmV0dXJuIG5zc19wYXNzd29yZDsKIH0KIApAQCAtNzI5LDEwICs3MjgsOSBAQAogICBwaW5bbGVu XSA9ICdcMCc7CiAKICAgLyogV2lwZSBvdXQgdGhlIHBhc3N3b3JkIG9uIHRoZSBzdGFjayBhbmQg aW4gdGhlIExpc3Agc3RyaW5nICovCi0gIGFyZ3NbMF0gPSBsc3BfcGFzc3dvcmQ7Ci0gIGFyZ3Nb MV0gPSBtYWtlX2NoYXIgKCcqJyk7Ci0gIEZmaWxsICgyLCBhcmdzKTsKKyAgRmNsZWFyX3N0cmlu ZyAobHNwX3Bhc3N3b3JkKTsKICAgbWVtc2V0IChjX3Bhc3N3b3JkLCAnKicsIHN0cmxlbiAoY19w YXNzd29yZCkpOworCiAgIHJldHVybiBHTlVUTFNfRV9TVUNDRVNTOwogfQogCkBAIC0xMDc1LDcg KzEwNzMsNyBAQAogb3BlbnNzbF9wYXNzd29yZCAoY2hhciAqYnVmLCBpbnQgc2l6ZSwgaW50IFVO VVNFRCAocndmbGFnKSwKIAkJICB2b2lkICpVTlVTRUQgKHVzZXJkYXRhKSkKIHsKLSAgTGlzcF9P YmplY3QgbHNwX3Bhc3N3b3JkLCBhcmdzWzJdOworICBMaXNwX09iamVjdCBsc3BfcGFzc3dvcmQ7 CiAgIEV4dGJ5dGUgKmNfcGFzc3dvcmQ7CiAKICAgbHNwX3Bhc3N3b3JkID0KQEAgLTEwODQsMTAg KzEwODIsOSBAQAogICBzdHJuY3B5IChidWYsIGNfcGFzc3dvcmQsIHNpemUpOwogCiAgIC8qIFdp cGUgb3V0IHRoZSBwYXNzd29yZCBvbiB0aGUgc3RhY2sgYW5kIGluIHRoZSBMaXNwIHN0cmluZyAq LwotICBhcmdzWzBdID0gbHNwX3Bhc3N3b3JkOwotICBhcmdzWzFdID0gbWFrZV9jaGFyICgnKicp OwotICBGZmlsbCAoMiwgYXJncyk7CisgIEZjbGVhcl9zdHJpbmcgKGxzcF9wYXNzd29yZCk7CiAg IG1lbXNldCAoY19wYXNzd29yZCwgJyonLCBzdHJsZW4gKGNfcGFzc3dvcmQpKTsKKwogICByZXR1 cm4gKGludCkgc3RybGVuIChidWYpOwogfQogCmRpZmYgLXIgODcwNGI3OTU3NTg1IC1yIDA1M2Vm MDFiNzFhOCB0ZXN0cy9DaGFuZ2VMb2cKLS0tIGEvdGVzdHMvQ2hhbmdlTG9nCVNhdCBBcHIgMTEg MTg6MzQ6MTQgMjAxNSArMDEwMAorKysgYi90ZXN0cy9DaGFuZ2VMb2cJU2F0IEFwciAxOCAyMzow MDoxNCAyMDE1ICswMTAwCkBAIC0zLDYgKzMsMTQgQEAKIAkqIGF1dG9tYXRlZC9saXNwLXRlc3Rz LmVsOgogCUNoZWNrIGZvciBhIGJ1ZyBqdXN0IGZpeGVkIGluIGNsLW1hY3MuZWwuCiAKKzIwMTUt MDQtMTggIEFpZGFuIEtlaG9lICA8a2Vob2VhQHBhcmhhc2FyZC5uZXQ+CisKKwkqIGF1dG9tYXRl ZC9saXNwLXRlc3RzLmVsOgorCVRlc3QgIydjbGVhci1zdHJpbmcsIGp1c3QgYWRkZWQuIFVuZm9y dHVuYXRlbHkgdGhlcmUncyBubyB3YXkgdG8KKwliZSBjZXJ0YWluIGZyb20gTGlzcCB0aGF0IHRo ZSBvbGQgcGFzc3dvcmQgZGF0YSBoYXMgYmVlbiBlcmFzZWQKKwlhZnRlciByZWFsbG9jOyBpdCBt YXkgYmUgd29ydGggYWRkaW5nIGEgdGVzdCB0byB0ZXN0cy5jLCBidXQKKwkqd2UnbGwgYmUgcmVh ZGluZyBtZW1vcnkgd2Ugc2hvdWxkbid0IGJlKiwgc28gdGhhdCBnaXZlcyBtZSBwYXVzZS4KKwog MjAxNS0wNC0wOCAgQWlkYW4gS2Vob2UgIDxrZWhvZWFAcGFyaGFzYXJkLm5ldD4KIAogCSogYXV0 b21hdGVkL2xpc3AtdGVzdHMuZWw6CmRpZmYgLXIgODcwNGI3OTU3NTg1IC1yIDA1M2VmMDFiNzFh OCB0ZXN0cy9hdXRvbWF0ZWQvbGlzcC10ZXN0cy5lbAotLS0gYS90ZXN0cy9hdXRvbWF0ZWQvbGlz cC10ZXN0cy5lbAlTYXQgQXByIDExIDE4OjM0OjE0IDIwMTUgKzAxMDAKKysrIGIvdGVzdHMvYXV0 b21hdGVkL2xpc3AtdGVzdHMuZWwJU2F0IEFwciAxOCAyMzowMDoxNCAyMDE1ICswMTAwCkBAIC0z Nzk2LDYgKzM3OTYsMzUgQEAKICAgKEFzc2VydCAoZXFsID9ceDA5IChkaWdpdC1jaGFyIDkgbmls IGJpbmFyeS10YWJsZSkpCiAgICAgICAgICAgImNoZWNraW5nIGBkaWdpdC1jaGFyJyByZWZsZWN0 cyBSQURJWC1UQUJMRSwgOSwgYmFzZSAxMCIpKQogCis7OyBUZXN0ICMnY2xlYXItc3RyaW5nLgor CisoQ2hlY2stRXJyb3Igd3JvbmctdHlwZS1hcmd1bWVudCAoY2xlYXItc3RyaW5nIFs/XHgwMCA/ XHhmZl0pKQorKENoZWNrLUVycm9yIHdyb25nLXR5cGUtYXJndW1lbnQgKGNsZWFyLXN0cmluZyAn KD9ceDAwID9ceGZmKSkpCisoQ2hlY2stRXJyb3Igd3JvbmctdHlwZS1hcmd1bWVudCAoY2xlYXIt c3RyaW5nICMqMTAxMCkpCisoQ2hlY2stRXJyb3Igd3JvbmctbnVtYmVyLW9mLWFyZ3VtZW50cyAo Y2xlYXItc3RyaW5nICJoZWxsbyIgPyopKQorCisobGV0KiAoKHRlbXBsYXRlIChjb25jYXQKKyAg ICAgICAgICAgICAgICAgICJ0aGlzIGlzIGEgdGVtcGxhdGUgc3RyaW5nLCAiCisgICAgICAgICAg ICAgICAgICAoaWYgKHVuaWNvZGUtdG8tY2hhciAjeDA2YWYpCisgICAgICAgICAgICAgICAgICAg ICAgKGRlY29kZS1jb2Rpbmctc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgIChjb25jYXQK KyAgICAgICAgICAgICAgICAgICAgICAgICJceGQ4XHhhOFx4ZDlceDg3IFx4ZDlceDg2XHhkOFx4 YjhceGQ4XHhiMSAiCisgICAgICAgICAgICAgICAgICAgICAgICAiXHhkOVx4ODVceGQ5XHg4NiBc eGQ4XHhhZVx4ZDlceDg4XHhkYVx4YTkgIgorICAgICAgICAgICAgICAgICAgICAgICAgIlx4ZDhc eGFlXHhkOVx4ODhceGQ4XHhiNFx4ZDlceDg1XHhkOFx4YjJceGQ5XHg4NyAiCisgICAgICAgICAg ICAgICAgICAgICAgICAiXHhkOFx4YTdceGQ4XHhiM1x4ZDhceGFhIikKKyAgICAgICAgICAgICAg ICAgICAgICAgJ3V0Zi04KSkpKQorICAgICAgIChsZW5ndGggKGxlbmd0aCB0ZW1wbGF0ZSkpCisg ICAgICAgKG51bGwgKG1ha2Utc3RyaW5nIGxlbmd0aCA/XHgwMCkpKQorICAoQXNzZXJ0IChudWxs IChjbGVhci1zdHJpbmcgKGNvcHktc2VxdWVuY2UgdGVtcGxhdGUpKSkpCisgIChBc3NlcnQgKGVx bCBsZW5ndGggKGxldCAoKHN0cmluZyAoY29weS1zZXF1ZW5jZSB0ZW1wbGF0ZSkpKQorICAgICAg ICAgICAgICAgICAgICAgICAgKGNsZWFyLXN0cmluZyBzdHJpbmcpCisgICAgICAgICAgICAgICAg ICAgICAgICAobGVuZ3RoIHN0cmluZykpKSkKKyAgKEFzc2VydCAoZXF1YWwgbnVsbCAobGV0ICgo c3RyaW5nIChjb3B5LXNlcXVlbmNlIHRlbXBsYXRlKSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAoY2xlYXItc3RyaW5nIHN0cmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZykp KSkKKworOzsgTm8gd2F5IHRvIGNoZWNrIGZyb20gTGlzcCB3aGV0aGVyIHRoZSBkYXRhIHdhcyBh Y3R1YWxseSBudWxsZWQuCisKIDs7IENoZWNrIHRoYXQgYSBidWcgaW4gIydjaGVjay10eXBlIHdp dGggbm9uLXNldGZhYmxlIFBMQUNFIChzb21ldGhpbmcgbm90CiA7OyBhY3R1YWxseSBzcGVjaWZp ZWQgYnkgQ29tbW9uIExpc3ApIGhhcyBiZWVuIGZpeGVkLgogKEFzc2VydCAocHJvZzEgdCAoY2hl Y2stdHlwZSAzMDAgZml4bnVtKSkKCgoKLS0gCuKAmFRyYW1hZG9sIGlzIGZ1cnRoZXIgZmVkIHRv IGNhdHRsZSBb4oCmXSB3aGVuIHdvcmtpbmcgdGhlbSBb4oCmXSAoYXMgZHJhZnQKYW5pbWFscykg c28gdGhhdCB0aGUgYW5pbWFscyBkbyBub3QgZ2V0IHRpcmVkIHF1aWNrbHkuIOKApuKAmQoJ4oCU IEFuZ2V3YW5kdGUgQ2hlbWllLCBTZXB0IDIwMTQsIGRlc2NyaWJpbmcgdGhlIHNvY2lhbCBjb250 ZXh0IG9mCgkoc3ludGhldGljKSB0cmFtYWRvbCBoYXZpbmcgYmVlbiBmb3VuZCBpbiBDYW1lcm9v biB0cmVlIHJvb3RzLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWEVtYWNzLVBhdGNoZXMgbWFpbGluZyBsaXN0ClhFbWFjcy1QYXRjaGVzQHhlbWFjcy5v cmcKaHR0cDovL2xpc3RzLnhlbWFjcy5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW1hY3MtcGF0Y2hl cwo=