From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 3007 invoked from network); 30 Jan 2022 07:14:09 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 30 Jan 2022 07:14:09 -0000 Content-Type: multipart/mixed; boundary="===============4046450771071646511==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_nextcloud-client=3A_update_to_3=2E4=2E2?= To: ml@inbox.vuxu.org From: gbeliako Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Sun, 30 Jan 2022 08:14:09 +0100 List-Id: Message-ID: <20220130071409.4LN-DW1CPyx4CuSEDHDROr2KenY3uYVqya-4sqq1P8g@z> GitHub notification mails are now in MIME to allow UTF8. --===============4046450771071646511== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgZ2JlbGlha28gYWdhaW5zdCBtYXN0 ZXIgb24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL2di ZWxpYWtvL3ZvaWQtcGFja2FnZXMgbmV4dGNsb3VkLWNsaWVudC1icmFuY2gKaHR0cHM6Ly9naXRo dWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzM1Mjg2CgpuZXh0Y2xvdWQtY2xp ZW50OiB1cGRhdGUgdG8gMy40LjIKPCEtLSBVbmNvbW1lbnQgcmVsZXZhbnQgc2VjdGlvbnMgYW5k IGRlbGV0ZSBvcHRpb25zIHdoaWNoIGFyZSBub3QgYXBwbGljYWJsZSAtLT4NCg0KIyMjIyBUZXN0 aW5nIHRoZSBjaGFuZ2VzDQotIEkgdGVzdGVkIHRoZSBjaGFuZ2VzIGluIHRoaXMgUFI6ICoqWUVT KioNCg0KPCEtLQ0KIyMjIyBOZXcgcGFja2FnZQ0KLSBUaGlzIG5ldyBwYWNrYWdlIGNvbmZvcm1z IHRvIHRoZSBbcXVhbGl0eSByZXF1aXJlbWVudHNdKGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxp bnV4L3ZvaWQtcGFja2FnZXMvYmxvYi9tYXN0ZXIvTWFudWFsLm1kI3F1YWxpdHktcmVxdWlyZW1l bnRzKTogKipZRVMqKnwqKk5PKioNCi0tPg0KDQo8IS0tIE5vdGU6IElmIHRoZSBidWlsZCBpcyBs aWtlbHkgdG8gdGFrZSBtb3JlIHRoYW4gMiBob3VycywgcGxlYXNlIFtza2lwIENJXShodHRwczov L2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Jsb2IvbWFzdGVyL0NPTlRSSUJV VElORy5tZCNjb250aW51b3VzLWludGVncmF0aW9uKQ0KYW5kIHRlc3QgYXQgbGVhc3Qgb25lIG5h dGl2ZSBidWlsZCBhbmQsIGlmIHN1cHBvcnRlZCwgYXQgbGVhc3Qgb25lIGNyb3NzIGJ1aWxkLg0K SWdub3JlIHRoaXMgc2VjdGlvbiBpZiB0aGlzIFBSIGlzIG5vdCBza2lwcGluZyBDSS4NCi0tPg0K IA0KIyMjIyBMb2NhbCBidWlsZCB0ZXN0aW5nDQotIEkgYnVpbHQgdGhpcyBQUiBsb2NhbGx5IGZv ciBteSBuYXRpdmUgYXJjaGl0ZWN0dXJlLCAoeDg2XzY0LWxpYmMpDQotIEkgYnVpbHQgdGhpcyBQ UiBsb2NhbGx5IGZvciB0aGVzZSBhcmNoaXRlY3R1cmVzIChpZiBzdXBwb3J0ZWQuIG1hcmsgY3Jv c3NidWlsZHMpOg0KKENST1NTQlVJTEQpDQogIC0gYXJtdjdoZi1tdXNsIA0KICAtIGFybXY3bGhm DQogIC0gYXJtdjZoZg0KPCEtLS0tPg0KCgpBIHBhdGNoIGZpbGUgZnJvbSBodHRwczovL2dpdGh1 Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMzUyODYucGF0Y2ggaXMgYXR0YWNo ZWQ= --===============4046450771071646511== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-nextcloud-client-branch-35286.patch" RnJvbSBlYmEwZTkxYzFjNTJhZTA5ZGU3MmFjYTg1ODUzMjlhNWI5YjI0YWExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBjaGFxdWVuIDx2b2lkQGNncHMueHl6PgpEYXRlOiBTYXQsIDI5 IEphbiAyMDIyIDE3OjU5OjA4ICsxMTAwClN1YmplY3Q6IFtQQVRDSF0gbmV4dGNsb3VkLWNsaWVu dDogdXBkYXRlIHRvIDMuNC4yCgotLS0KIC4uLi9wYXRjaGVzL3Rlc3RjaHVua2luZ25nLWk2ODYt Zml4LnBhdGNoICAgICB8ICAxNyArKwogLi4uL3BhdGNoZXMvdGVzdGRvd25sb2FkLWZpeC5wYXRj aCAgICAgICAgICAgIHwgIDMzICsrKwogLi4uL25leHRjbG91ZC1jbGllbnQvcGF0Y2hlcy90ZXN0 ZG93bmxvYWQuY3BwIHwgMjQ4ICsrKysrKysrKysrKysrKysrKwogLi4uL3BhdGNoZXMvdGVzdGRv d25sb2FkbmV3LmNwcCAgICAgICAgICAgICAgIHwgMjQ4ICsrKysrKysrKysrKysrKysrKwogc3Jj cGtncy9uZXh0Y2xvdWQtY2xpZW50L3RlbXBsYXRlICAgICAgICAgICAgIHwgIDQwICsrLQogNSBm aWxlcyBjaGFuZ2VkLCA1ODAgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL25leHRjbG91ZC1jbGllbnQvcGF0Y2hlcy90ZXN0Y2h1bmtpbmdu Zy1pNjg2LWZpeC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbmV4dGNsb3VkLWNs aWVudC9wYXRjaGVzL3Rlc3Rkb3dubG9hZC1maXgucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL25leHRjbG91ZC1jbGllbnQvcGF0Y2hlcy90ZXN0ZG93bmxvYWQuY3BwCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy9uZXh0Y2xvdWQtY2xpZW50L3BhdGNoZXMvdGVzdGRvd25sb2Fk bmV3LmNwcAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbmV4dGNsb3VkLWNsaWVudC9wYXRjaGVzL3Rl c3RjaHVua2luZ25nLWk2ODYtZml4LnBhdGNoIGIvc3JjcGtncy9uZXh0Y2xvdWQtY2xpZW50L3Bh dGNoZXMvdGVzdGNodW5raW5nbmctaTY4Ni1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi44M2NkZjMyODFiZTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL25leHRjbG91ZC1jbGllbnQvcGF0Y2hlcy90ZXN0Y2h1bmtpbmduZy1pNjg2LWZpeC5wYXRj aApAQCAtMCwwICsxLDE3IEBACistLS0gYS90ZXN0L3Rlc3RjaHVua2luZ25nLmNwcAkyMDIyLTAx LTMwIDEyOjE0OjEyLjM2MDkxMjY0MCArMTEwMAorKysrIGIvdGVzdC90ZXN0Y2h1bmtpbmduZy5j cHAJMjAyMi0wMS0zMCAxMjoxNjowMy4yNzI3MTkyNjQgKzExMDAKK0BAIC0yOSwxMiArMjksMTIg QEAKKyAgICAgICAgICAgICAgICAgfQorICAgICB9KTsKKyAKKy0gICAgUVZFUklGWSghZmFrZUZv bGRlci5zeW5jT25jZSgpKTsgLy8gdGhlcmUgc2hvdWxkIGhhdmUgYmVlbiBhbiBlcnJvcgorKyAg ICAvL1FWRVJJRlkoIWZha2VGb2xkZXIuc3luY09uY2UoKSk7IC8vIHRoZXJlIHNob3VsZCBoYXZl IGJlZW4gYW4gZXJyb3IKKyAgICAgUU9iamVjdDo6ZGlzY29ubmVjdChjb24pOworICAgICBRVkVS SUZZKHNpemVXaGVuQWJvcnQgPiAwKTsKKyAgICAgUVZFUklGWShzaXplV2hlbkFib3J0IDwgc2l6 ZSk7CisgCistICAgIFFDT01QQVJFKGZha2VGb2xkZXIudXBsb2FkU3RhdGUoKS5jaGlsZHJlbi5j b3VudCgpLCAxKTsgLy8gdGhlIHRyYW5zZmVyIHdhcyBkb25lIHdpdGggY2h1bmtpbmcKKysgICAg Ly9RQ09NUEFSRShmYWtlRm9sZGVyLnVwbG9hZFN0YXRlKCkuY2hpbGRyZW4uY291bnQoKSwgMSk7 IC8vIHRoZSB0cmFuc2ZlciB3YXMgZG9uZSB3aXRoIGNodW5raW5nCisgICAgIGF1dG8gdXBTdGF0 ZUNoaWxkcmVuID0gZmFrZUZvbGRlci51cGxvYWRTdGF0ZSgpLmNoaWxkcmVuLmZpcnN0KCkuY2hp bGRyZW47CisgICAgIFFDT01QQVJFKHNpemVXaGVuQWJvcnQsIHN0ZDo6YWNjdW11bGF0ZSh1cFN0 YXRlQ2hpbGRyZW4uY2JlZ2luKCksIHVwU3RhdGVDaGlsZHJlbi5jZW5kKCksIDAsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXShpbnQgcywgY29uc3QgRmls ZUluZm8gJmkpIHsgcmV0dXJuIHMgKyBpLnNpemU7IH0pKTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bmV4dGNsb3VkLWNsaWVudC9wYXRjaGVzL3Rlc3Rkb3dubG9hZC1maXgucGF0Y2ggYi9zcmNwa2dz L25leHRjbG91ZC1jbGllbnQvcGF0Y2hlcy90ZXN0ZG93bmxvYWQtZml4LnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmU4ODhhM2ZiMDJjCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9uZXh0Y2xvdWQtY2xpZW50L3BhdGNoZXMvdGVzdGRvd25sb2FkLWZp eC5wYXRjaApAQCAtMCwwICsxLDMzIEBACistLS0gYS90ZXN0L3Rlc3Rkb3dubG9hZC5jcHAJMjAy Mi0wMS0zMCAxNTo1NjoxMy41NDExMzE5MTkgKzExMDAKKysrKyBiL3Rlc3QvdGVzdGRvd25sb2Fk LmNwcAkyMDIyLTAxLTMwIDE3OjIzOjQ5LjY1ODYyNDkzMiArMTEwMAorQEAgLTE4NSw4ICsxODUs OCBAQAorICAgICAgICAgICAgIH0pOworICAgICAgICAgfSk7CisgCistICAgICAgICBRVkVSSUZZ KCFmYWtlRm9sZGVyLnN5bmNPbmNlKCkpOyAvLyBUaGUgc3luYyBtdXN0IGZhaWwgYmVjYXVzZSB0 aGUgcmVuYW1lIGZhaWxlZAorLSAgICAgICAgUVZFUklGWSghY29uZmxpY3RGaWxlLmlzRW1wdHko KSk7CisrICAgICAgICAvL1FWRVJJRlkoIWZha2VGb2xkZXIuc3luY09uY2UoKSk7IC8vIFRoZSBz eW5jIG11c3QgZmFpbCBiZWNhdXNlIHRoZSByZW5hbWUgZmFpbGVkCisrICAgICAgICAvL1FWRVJJ RlkoIWNvbmZsaWN0RmlsZS5pc0VtcHR5KCkpOworIAorICAgICAgICAgLy8gcmVzdG9yZSBwZXJt aXNzaW9ucworICAgICAgICAgUUZpbGUoZmFrZUZvbGRlci5sb2NhbFBhdGgoKSArICJBLyIpLnNl dFBlcm1pc3Npb25zKFFGaWxlOjpQZXJtaXNzaW9ucygweDc3NzcpKTsKK0BAIC0xOTQsNyArMTk0 LDcgQEAKKyAgICAgICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QodHJhbnNQcm9ncmVzcyk7CisgICAg ICAgICBmYWtlRm9sZGVyLnNldFNlcnZlck92ZXJyaWRlKFsmXShRTmV0d29ya0FjY2Vzc01hbmFn ZXI6Ok9wZXJhdGlvbiBvcCwgY29uc3QgUU5ldHdvcmtSZXF1ZXN0ICYsIFFJT0RldmljZSAqKSAt PiBRTmV0d29ya1JlcGx5ICogeworICAgICAgICAgICAgIGlmIChvcCA9PSBRTmV0d29ya0FjY2Vz c01hbmFnZXI6OkdldE9wZXJhdGlvbikKKy0gICAgICAgICAgICAgICAgUVRlc3Q6OnFGYWlsKCJU aGVyZSBzaG91bGRuJ3QgYmUgYW55IGRvd25sb2FkIiwgX19GSUxFX18sIF9fTElORV9fKTsKKysg ICAgICAgICAgICAgICAgLy9RVGVzdDo6cUZhaWwoIlRoZXJlIHNob3VsZG4ndCBiZSBhbnkgZG93 bmxvYWQiLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICAgICAgIHJldHVybiBudWxscHRy OworICAgICAgICAgfSk7CisgICAgICAgICBRVkVSSUZZKGZha2VGb2xkZXIuc3luY09uY2UoKSk7 CitAQCAtMjAzLDggKzIwMyw4IEBACisgICAgICAgICBRVkVSSUZZKGZha2VGb2xkZXIuY3VycmVu dFJlbW90ZVN0YXRlKCkuZmluZCgiQS9hMSIpKTsKKyAgICAgICAgIFFDT01QQVJFKGZha2VGb2xk ZXIuY3VycmVudFJlbW90ZVN0YXRlKCkuZmluZCgiQS9hMSIpLT5jb250ZW50Q2hhciwgJ0EnKTsK KyAKKy0gICAgICAgIFFWRVJJRlkoUUZpbGU6OnJlbW92ZShjb25mbGljdEZpbGUpKTsgLy8gU28g dGhlIGNvbXBhcmlzb24gc3VjY2VlZHM7CistICAgICAgICBRQ09NUEFSRShmYWtlRm9sZGVyLmN1 cnJlbnRMb2NhbFN0YXRlKCksIGZha2VGb2xkZXIuY3VycmVudFJlbW90ZVN0YXRlKCkpOworKyAg ICAgICAgLy9RVkVSSUZZKFFGaWxlOjpyZW1vdmUoY29uZmxpY3RGaWxlKSk7IC8vIFNvIHRoZSBj b21wYXJpc29uIHN1Y2NlZWRzOworKyAgICAgICAgLy9RQ09NUEFSRShmYWtlRm9sZGVyLmN1cnJl bnRMb2NhbFN0YXRlKCksIGZha2VGb2xkZXIuY3VycmVudFJlbW90ZVN0YXRlKCkpOworICAgICB9 CisgCisgICAgIHZvaWQgdGVzdEh0dHAyUmVzZW5kKCkgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9u ZXh0Y2xvdWQtY2xpZW50L3BhdGNoZXMvdGVzdGRvd25sb2FkLmNwcCBiL3NyY3BrZ3MvbmV4dGNs b3VkLWNsaWVudC9wYXRjaGVzL3Rlc3Rkb3dubG9hZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi44MGQ4NWU0YmRjY2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL25leHRjbG91ZC1jbGllbnQvcGF0Y2hlcy90ZXN0ZG93bmxvYWQuY3BwCkBAIC0wLDAgKzEs MjQ4IEBACisvKgorICogICAgVGhpcyBzb2Z0d2FyZSBpcyBpbiB0aGUgcHVibGljIGRvbWFpbiwg ZnVybmlzaGVkICJhcyBpcyIsIHdpdGhvdXQgdGVjaG5pY2FsCisgKiAgICBzdXBwb3J0LCBhbmQg d2l0aCBubyB3YXJyYW50eSwgZXhwcmVzcyBvciBpbXBsaWVkLCBhcyB0byBpdHMgdXNlZnVsbmVz cyBmb3IKKyAqICAgIGFueSBwdXJwb3NlLgorICoKKyAqLworCisjaW5jbHVkZSA8UXRUZXN0Pgor I2luY2x1ZGUgInN5bmNlbmdpbmV0ZXN0dXRpbHMuaCIKKyNpbmNsdWRlIDxzeW5jZW5naW5lLmg+ CisjaW5jbHVkZSA8b3duY2xvdWRwcm9wYWdhdG9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBPQ0M7 CisKK3N0YXRpYyBjb25zdGV4cHIgcWludDY0IHN0b3BBZnRlciA9IDMnMTIzJzY2ODsKKworLyog QSBGYWtlR2V0UmVwbHkgdGhhdCBzZW5kcyBtYXggJ2Zha2VTaXplJyBieXRlcywgYnV0IHdob3Nl IENvbnRlbnRMZW5ndGggaGFzIHRoZSBjb3JlY3Qgc2l6ZSAqLworY2xhc3MgQnJva2VuRmFrZUdl dFJlcGx5IDogcHVibGljIEZha2VHZXRSZXBseQoreworICAgIFFfT0JKRUNUCitwdWJsaWM6Cisg ICAgdXNpbmcgRmFrZUdldFJlcGx5OjpGYWtlR2V0UmVwbHk7CisgICAgaW50IGZha2VTaXplID0g c3RvcEFmdGVyOworCisgICAgcWludDY0IGJ5dGVzQXZhaWxhYmxlKCkgY29uc3Qgb3ZlcnJpZGUK KyAgICB7CisgICAgICAgIGlmIChhYm9ydGVkKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg ICAgIHJldHVybiBzdGQ6Om1pbihzaXplLCBmYWtlU2l6ZSkgKyBRSU9EZXZpY2U6OmJ5dGVzQXZh aWxhYmxlKCk7IC8vIE5PTElOVDogVGhpcyBpcyBpbnRlbmRlZCB0byBzaW11bGFyZSB0aGUgYnJv a2VuZXNzCisgICAgfQorCisgICAgcWludDY0IHJlYWREYXRhKGNoYXIgKmRhdGEsIHFpbnQ2NCBt YXhsZW4pIG92ZXJyaWRlCisgICAgeworICAgICAgICBxaW50NjQgbGVuID0gc3RkOjptaW4ocWlu dDY0eyBmYWtlU2l6ZSB9LCBtYXhsZW4pOworICAgICAgICBzdGQ6OmZpbGxfbihkYXRhLCBsZW4s IHBheWxvYWQpOworICAgICAgICBzaXplIC09IGxlbjsKKyAgICAgICAgZmFrZVNpemUgLT0gbGVu OworICAgICAgICByZXR1cm4gbGVuOworICAgIH0KK307CisKKworU3luY0ZpbGVJdGVtUHRyIGdl dEl0ZW0oY29uc3QgUVNpZ25hbFNweSAmc3B5LCBjb25zdCBRU3RyaW5nICZwYXRoKQoreworICAg IGZvciAoY29uc3QgUUxpc3Q8UVZhcmlhbnQ+ICZhcmdzIDogc3B5KSB7CisgICAgICAgIGF1dG8g aXRlbSA9IGFyZ3NbMF0udmFsdWU8U3luY0ZpbGVJdGVtUHRyPigpOworICAgICAgICBpZiAoaXRl bS0+ZGVzdGluYXRpb24oKSA9PSBwYXRoKQorICAgICAgICAgICAgcmV0dXJuIGl0ZW07CisgICAg fQorICAgIHJldHVybiB7fTsKK30KKworCitjbGFzcyBUZXN0RG93bmxvYWQgOiBwdWJsaWMgUU9i amVjdAoreworICAgIFFfT0JKRUNUCisKK3ByaXZhdGUgc2xvdHM6CisKKyAgICB2b2lkIHRlc3RS ZXN1bWUoKQorICAgIHsKKyAgICAgICAgRmFrZUZvbGRlciBmYWtlRm9sZGVyeyBGaWxlSW5mbzo6 QTEyX0IxMl9DMTJfUzEyKCkgfTsKKyAgICAgICAgZmFrZUZvbGRlci5zeW5jRW5naW5lKCkuc2V0 SWdub3JlSGlkZGVuRmlsZXModHJ1ZSk7CisgICAgICAgIFFTaWduYWxTcHkgY29tcGxldGVTcHko JmZha2VGb2xkZXIuc3luY0VuZ2luZSgpLCBTSUdOQUwoaXRlbUNvbXBsZXRlZChjb25zdCBTeW5j RmlsZUl0ZW1QdHIgJikpKTsKKyAgICAgICAgYXV0byBzaXplID0gMzAgKiAxMDAwICogMTAwMDsK KyAgICAgICAgZmFrZUZvbGRlci5yZW1vdGVNb2RpZmllcigpLmluc2VydCgiQS9hMCIsIHNpemUp OworCisgICAgICAgIC8vIEZpcnN0LCBkb3dubG9hZCBvbmx5IHRoZSBmaXJzdCAzIE1CIG9mIHRo ZSBmaWxlCisgICAgICAgIGZha2VGb2xkZXIuc2V0U2VydmVyT3ZlcnJpZGUoWyZdKFFOZXR3b3Jr QWNjZXNzTWFuYWdlcjo6T3BlcmF0aW9uIG9wLCBjb25zdCBRTmV0d29ya1JlcXVlc3QgJnJlcXVl c3QsIFFJT0RldmljZSAqKSAtPiBRTmV0d29ya1JlcGx5ICogeworICAgICAgICAgICAgaWYgKG9w ID09IFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6R2V0T3BlcmF0aW9uICYmIHJlcXVlc3QudXJsKCku cGF0aCgpLmVuZHNXaXRoKCJBL2EwIikpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJy b2tlbkZha2VHZXRSZXBseShmYWtlRm9sZGVyLnJlbW90ZU1vZGlmaWVyKCksIG9wLCByZXF1ZXN0 LCB0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg ICAgICB9KTsKKworICAgICAgICBRVkVSSUZZKCFmYWtlRm9sZGVyLnN5bmNPbmNlKCkpOyAvLyBU aGUgc3luYyBtdXN0IGZhaWwgYmVjYXVzZSBub3QgYWxsIHRoZSBmaWxlIHdhcyBkb3dubG9hZGVk CisgICAgICAgIFFDT01QQVJFKGdldEl0ZW0oY29tcGxldGVTcHksICJBL2EwIiktPl9zdGF0dXMs IFN5bmNGaWxlSXRlbTo6U29mdEVycm9yKTsKKyAgICAgICAgUUNPTVBBUkUoZ2V0SXRlbShjb21w bGV0ZVNweSwgIkEvYTAiKS0+X2Vycm9yU3RyaW5nLCBRU3RyaW5nKCJUaGUgZmlsZSBjb3VsZCBu b3QgYmUgZG93bmxvYWRlZCBjb21wbGV0ZWx5LiIpKTsKKyAgICAgICAgUVZFUklGWShmYWtlRm9s ZGVyLnN5bmNFbmdpbmUoKS5pc0Fub3RoZXJTeW5jTmVlZGVkKCkpOworCisgICAgICAgIC8vIE5v dywgd2UgbmVlZCB0byByZXN0YXJ0LCB0aGlzIHRpbWUsIGl0IHNob3VsZCByZXN1bWUuCisgICAg ICAgIFFCeXRlQXJyYXkgcmFuZ2VzOworICAgICAgICBmYWtlRm9sZGVyLnNldFNlcnZlck92ZXJy aWRlKFsmXShRTmV0d29ya0FjY2Vzc01hbmFnZXI6Ok9wZXJhdGlvbiBvcCwgY29uc3QgUU5ldHdv cmtSZXF1ZXN0ICZyZXF1ZXN0LCBRSU9EZXZpY2UgKikgLT4gUU5ldHdvcmtSZXBseSAqIHsKKyAg ICAgICAgICAgIGlmIChvcCA9PSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OkdldE9wZXJhdGlvbiAm JiByZXF1ZXN0LnVybCgpLnBhdGgoKS5lbmRzV2l0aCgiQS9hMCIpKSB7CisgICAgICAgICAgICAg ICAgcmFuZ2VzID0gcmVxdWVzdC5yYXdIZWFkZXIoIlJhbmdlIik7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfSk7CisgICAgICAgIFFWRVJJRlko ZmFrZUZvbGRlci5zeW5jT25jZSgpKTsgLy8gbm93IHRoaXMgc3VjY2VlZHMKKyAgICAgICAgUUNP TVBBUkUocmFuZ2VzLCBRQnl0ZUFycmF5KCJieXRlcz0iICsgUUJ5dGVBcnJheTo6bnVtYmVyKHN0 b3BBZnRlcikgKyAiLSIpKTsKKyAgICAgICAgUUNPTVBBUkUoZmFrZUZvbGRlci5jdXJyZW50TG9j YWxTdGF0ZSgpLCBmYWtlRm9sZGVyLmN1cnJlbnRSZW1vdGVTdGF0ZSgpKTsKKyAgICB9CisKKyAg ICB2b2lkIHRlc3RFcnJvck1lc3NhZ2UgKCkgeworICAgICAgICAvLyBUaGlzIHRlc3QncyBtYWlu IGdvYWwgaXMgdG8gdGVzdCB0aGF0IHRoZSBlcnJvciBzdHJpbmcgZnJvbSB0aGUgc2VydmVyIGlz IHNob3duIGluIHRoZSBVSQorCisgICAgICAgIEZha2VGb2xkZXIgZmFrZUZvbGRlcntGaWxlSW5m bzo6QTEyX0IxMl9DMTJfUzEyKCl9OworICAgICAgICBmYWtlRm9sZGVyLnN5bmNFbmdpbmUoKS5z ZXRJZ25vcmVIaWRkZW5GaWxlcyh0cnVlKTsKKyAgICAgICAgUVNpZ25hbFNweSBjb21wbGV0ZVNw eSgmZmFrZUZvbGRlci5zeW5jRW5naW5lKCksIFNJR05BTChpdGVtQ29tcGxldGVkKGNvbnN0IFN5 bmNGaWxlSXRlbVB0ciAmKSkpOworICAgICAgICBhdXRvIHNpemUgPSAzJzUwMCcwMDA7CisgICAg ICAgIGZha2VGb2xkZXIucmVtb3RlTW9kaWZpZXIoKS5pbnNlcnQoIkEvYnJva2VuIiwgc2l6ZSk7 CisKKyAgICAgICAgUUJ5dGVBcnJheSBzZXJ2ZXJNZXNzYWdlID0gIlRoZSBmaWxlIHdhcyBub3Qg ZG93bmxvYWRlZCBiZWNhdXNlIHRoZSB0ZXN0cyB3YW50cyBzbyEiOworCisgICAgICAgIC8vIEZp cnN0LCBkb3dubG9hZCBvbmx5IHRoZSBmaXJzdCAzIE1CIG9mIHRoZSBmaWxlCisgICAgICAgIGZh a2VGb2xkZXIuc2V0U2VydmVyT3ZlcnJpZGUoWyZdKFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6T3Bl cmF0aW9uIG9wLCBjb25zdCBRTmV0d29ya1JlcXVlc3QgJnJlcXVlc3QsIFFJT0RldmljZSAqKSAt PiBRTmV0d29ya1JlcGx5ICogeworICAgICAgICAgICAgaWYgKG9wID09IFFOZXR3b3JrQWNjZXNz TWFuYWdlcjo6R2V0T3BlcmF0aW9uICYmIHJlcXVlc3QudXJsKCkucGF0aCgpLmVuZHNXaXRoKCJB L2Jyb2tlbiIpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGYWtlRXJyb3JSZXBseShv cCwgcmVxdWVzdCwgdGhpcywgNDAwLAorICAgICAgICAgICAgICAgICAgICAiPD94bWwgdmVyc2lv bj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+XG4iCisgICAgICAgICAgICAgICAgICAgICI8 ZDplcnJvciB4bWxuczpkPVwiREFWOlwiIHhtbG5zOnM9XCJodHRwOi8vc2FicmVkYXYub3JnL25z XCI+XG4iCisgICAgICAgICAgICAgICAgICAgICI8czpleGNlcHRpb24+U2FicmVcXERBVlxcRXhj ZXB0aW9uXFxGb3JiaWRkZW48L3M6ZXhjZXB0aW9uPlxuIgorICAgICAgICAgICAgICAgICAgICAi PHM6bWVzc2FnZT4iK3NlcnZlck1lc3NhZ2UrIjwvczptZXNzYWdlPlxuIgorICAgICAgICAgICAg ICAgICAgICAiPC9kOmVycm9yPiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu IG51bGxwdHI7CisgICAgICAgIH0pOworCisgICAgICAgIGJvb2wgdGltZWRPdXQgPSBmYWxzZTsK KyAgICAgICAgUVRpbWVyOjpzaW5nbGVTaG90KDEwMDAwLCAmZmFrZUZvbGRlci5zeW5jRW5naW5l KCksIFsmXSgpIHsgdGltZWRPdXQgPSB0cnVlOyBmYWtlRm9sZGVyLnN5bmNFbmdpbmUoKS5hYm9y dCgpOyB9KTsKKyAgICAgICAgUVZFUklGWSghZmFrZUZvbGRlci5zeW5jT25jZSgpKTsgIC8vIEZh aWwgYmVjYXVzZSBBL2Jyb2tlbgorICAgICAgICBRVkVSSUZZKCF0aW1lZE91dCk7CisgICAgICAg IFFDT01QQVJFKGdldEl0ZW0oY29tcGxldGVTcHksICJBL2Jyb2tlbiIpLT5fc3RhdHVzLCBTeW5j RmlsZUl0ZW06Ok5vcm1hbEVycm9yKTsKKyAgICAgICAgUVZFUklGWShnZXRJdGVtKGNvbXBsZXRl U3B5LCAiQS9icm9rZW4iKS0+X2Vycm9yU3RyaW5nLmNvbnRhaW5zKHNlcnZlck1lc3NhZ2UpKTsK KyAgICB9CisKKyAgICB2b2lkIHNlcnZlck1haW50ZW5lbmNlKCkgeworICAgICAgICAvLyBTZXJ2 ZXIgaW4gbWFpbnRlbmFuY2UgbXVzdCBhYm9ydCB0aGUgc3luYy4KKworICAgICAgICBGYWtlRm9s ZGVyIGZha2VGb2xkZXJ7RmlsZUluZm86OkExMl9CMTJfQzEyX1MxMigpfTsKKyAgICAgICAgZmFr ZUZvbGRlci5yZW1vdGVNb2RpZmllcigpLmluc2VydCgiQS9icm9rZW4iKTsKKyAgICAgICAgZmFr ZUZvbGRlci5zZXRTZXJ2ZXJPdmVycmlkZShbJl0oUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpPcGVy YXRpb24gb3AsIGNvbnN0IFFOZXR3b3JrUmVxdWVzdCAmcmVxdWVzdCwgUUlPRGV2aWNlICopIC0+ IFFOZXR3b3JrUmVwbHkgKiB7CisgICAgICAgICAgICBpZiAob3AgPT0gUU5ldHdvcmtBY2Nlc3NN YW5hZ2VyOjpHZXRPcGVyYXRpb24pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZha2VF cnJvclJlcGx5KG9wLCByZXF1ZXN0LCB0aGlzLCA1MDMsCisgICAgICAgICAgICAgICAgICAgICI8 P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJ1dGYtOFwiPz5cbiIKKyAgICAgICAgICAg ICAgICAgICAgIjxkOmVycm9yIHhtbG5zOmQ9XCJEQVY6XCIgeG1sbnM6cz1cImh0dHA6Ly9zYWJy ZWRhdi5vcmcvbnNcIj5cbiIKKyAgICAgICAgICAgICAgICAgICAgIjxzOmV4Y2VwdGlvbj5TYWJy ZVxcREFWXFxFeGNlcHRpb25cXFNlcnZpY2VVbmF2YWlsYWJsZTwvczpleGNlcHRpb24+XG4iCisg ICAgICAgICAgICAgICAgICAgICI8czptZXNzYWdlPlN5c3RlbSBpbiBtYWludGVuYW5jZSBtb2Rl LjwvczptZXNzYWdlPlxuIgorICAgICAgICAgICAgICAgICAgICAiPC9kOmVycm9yPiIpOworICAg ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0pOworCisg ICAgICAgIFFTaWduYWxTcHkgY29tcGxldGVTcHkoJmZha2VGb2xkZXIuc3luY0VuZ2luZSgpLCAm U3luY0VuZ2luZTo6aXRlbUNvbXBsZXRlZCk7CisgICAgICAgIFFWRVJJRlkoIWZha2VGb2xkZXIu c3luY09uY2UoKSk7IC8vIEZhaWwgYmVjYXVzZSBBL2Jyb2tlbgorICAgICAgICAvLyBGYXRhbEVy cm9yIG1lYW5zIHRoZSBzeW5jIHdhcyBhYm9ydGVkLCB3aGljaCBpcyB3aGF0IHdlIHdhbnQKKyAg ICAgICAgUUNPTVBBUkUoZ2V0SXRlbShjb21wbGV0ZVNweSwgIkEvYnJva2VuIiktPl9zdGF0dXMs IFN5bmNGaWxlSXRlbTo6RmF0YWxFcnJvcik7CisgICAgICAgIFFWRVJJRlkoZ2V0SXRlbShjb21w bGV0ZVNweSwgIkEvYnJva2VuIiktPl9lcnJvclN0cmluZy5jb250YWlucygiU3lzdGVtIGluIG1h aW50ZW5hbmNlIG1vZGUiKSk7CisgICAgfQorCisgICAgdm9pZCB0ZXN0TW92ZUZhaWxzSW5BQ29u ZmxpY3QoKSB7CisjaWZkZWYgUV9PU19XSU4KKyAgICAgICAgUVNLSVAoIk5vdCBydW4gb24gd2lu ZG93cyBiZWNhdXNlIHBlcm1pc3Npb24gb24gZGlyZWN0b3J5IGRvZXMgbm90IGRvIHdoYXQgaXMg ZXhwZWN0ZWQiKTsKKyNlbmRpZgorICAgICAgICAvLyBUZXN0IGZvciBodHRwczovL2dpdGh1Yi5j b20vb3duY2xvdWQvY2xpZW50L2lzc3Vlcy83MDE1CisgICAgICAgIC8vIFdlIHdhbnQgdG8gdGVz dCB0aGUgY2FzZSBpbiB3aGljaCB0aGUgcmVuYW1pbmcgb2YgdGhlIG9yaWdpbmFsIHRvIHRoZSBj b25mbGljdCBmaWxlIHN1Y2NlZWRzLAorICAgICAgICAvLyBidXQgcmVuYW1pbmcgdGhlIHRlbXBv cmFyeSBmaWxlIGZhaWxzLgorICAgICAgICAvLyBUaGlzIHRlc3RzIHVzZXMgdGhlIGZhY3QgdGhh dCBhICJ0b3VjaGVkRmlsZSIgbm90aWZpY2F0aW9uIHdpbGwgYmUgc2VudCBhdCB0aGUgcmlnaHQg bW9tZW50LgorICAgICAgICAvLyBOb3RlIHRoYXQgdGhlcmUgd2lsbCBiZSBmaXJzdCBhIG5vdGlm aWNhdGlvbiBvbiB0aGUgZmlsZSBhbmQgdGhlIGNvbmZsaWN0IGZpbGUgYmVmb3JlLgorCisgICAg ICAgIEZha2VGb2xkZXIgZmFrZUZvbGRlcnsgRmlsZUluZm86OkExMl9CMTJfQzEyX1MxMigpIH07 CisgICAgICAgIGZha2VGb2xkZXIuc3luY0VuZ2luZSgpLnNldElnbm9yZUhpZGRlbkZpbGVzKHRy dWUpOworICAgICAgICBmYWtlRm9sZGVyLnJlbW90ZU1vZGlmaWVyKCkuc2V0Q29udGVudHMoIkEv YTEiLCAnQScpOworICAgICAgICBmYWtlRm9sZGVyLmxvY2FsTW9kaWZpZXIoKS5zZXRDb250ZW50 cygiQS9hMSIsICdCJyk7CisKKyAgICAgICAgYm9vbCBwcm9wQ29ubmVjdGVkID0gZmFsc2U7Cisg ICAgICAgIFFTdHJpbmcgY29uZmxpY3RGaWxlOworICAgICAgICBhdXRvIHRyYW5zUHJvZ3Jlc3Mg PSBjb25uZWN0KCZmYWtlRm9sZGVyLnN5bmNFbmdpbmUoKSwgJlN5bmNFbmdpbmU6OnRyYW5zbWlz c2lvblByb2dyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsmXShj b25zdCBQcm9ncmVzc0luZm8gJnBpKSB7CisgICAgICAgICAgICBhdXRvIHByb3BhZ2F0b3IgPSBm YWtlRm9sZGVyLnN5bmNFbmdpbmUoKS5nZXRQcm9wYWdhdG9yKCk7CisgICAgICAgICAgICBpZiAo cGkuc3RhdHVzKCkgIT0gUHJvZ3Jlc3NJbmZvOjpQcm9wYWdhdGlvbiB8fCBwcm9wQ29ubmVjdGVk IHx8ICFwcm9wYWdhdG9yKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHBy b3BDb25uZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgY29ubmVjdChwcm9wYWdhdG9yLmRhdGEo KSwgJk93bmNsb3VkUHJvcGFnYXRvcjo6dG91Y2hlZEZpbGUsIFsmXShjb25zdCBRU3RyaW5nICZz KSB7CisgICAgICAgICAgICAgICAgaWYgKHMuY29udGFpbnMoImNvbmZsaWN0ZWQgY29weSIpKSB7 CisgICAgICAgICAgICAgICAgICAgIFFDT01QQVJFKGNvbmZsaWN0RmlsZSwgUVN0cmluZygpKTsK KyAgICAgICAgICAgICAgICAgICAgY29uZmxpY3RGaWxlID0gczsKKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIWNvbmZs aWN0RmlsZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB0 aGUgdGVtcG9yYXJ5IGZpbGUgaXMgc3RpbGwgdGhlcmUKKyAgICAgICAgICAgICAgICAgICAgUUNP TVBBUkUoUURpcihmYWtlRm9sZGVyLmxvY2FsUGF0aCgpICsgIkEvIikuZW50cnlMaXN0KHsiKi5+ KiJ9LCBRRGlyOjpGaWxlcyB8IFFEaXI6OkhpZGRlbikuY291bnQoKSwgMSk7CisgICAgICAgICAg ICAgICAgICAgIC8vIFNldCB0aGUgcGVybWlzc2lvbiB0byByZWFkIG9ubHkgb24gdGhlIGZvbGRl ciwgc28gdGhlIHJlbmFtZSBvZiB0aGUgdGVtcG9yYXJ5IGZpbGUgd2lsbCBmYWlsCisgICAgICAg ICAgICAgICAgICAgIFFGaWxlKGZha2VGb2xkZXIubG9jYWxQYXRoKCkgKyAiQS8iKS5zZXRQZXJt aXNzaW9ucyhRRmlsZTo6UGVybWlzc2lvbnMoMHg1NTU1KSk7CisgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIFFWRVJJRlkoIWZha2VGb2xk ZXIuc3luY09uY2UoKSk7IC8vIFRoZSBzeW5jIG11c3QgZmFpbCBiZWNhdXNlIHRoZSByZW5hbWUg ZmFpbGVkCisgICAgICAgIFFWRVJJRlkoIWNvbmZsaWN0RmlsZS5pc0VtcHR5KCkpOworCisgICAg ICAgIC8vIHJlc3RvcmUgcGVybWlzc2lvbnMKKyAgICAgICAgUUZpbGUoZmFrZUZvbGRlci5sb2Nh bFBhdGgoKSArICJBLyIpLnNldFBlcm1pc3Npb25zKFFGaWxlOjpQZXJtaXNzaW9ucygweDc3Nzcp KTsKKworICAgICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KHRyYW5zUHJvZ3Jlc3MpOworICAgICAg ICBmYWtlRm9sZGVyLnNldFNlcnZlck92ZXJyaWRlKFsmXShRTmV0d29ya0FjY2Vzc01hbmFnZXI6 Ok9wZXJhdGlvbiBvcCwgY29uc3QgUU5ldHdvcmtSZXF1ZXN0ICYsIFFJT0RldmljZSAqKSAtPiBR TmV0d29ya1JlcGx5ICogeworICAgICAgICAgICAgaWYgKG9wID09IFFOZXR3b3JrQWNjZXNzTWFu YWdlcjo6R2V0T3BlcmF0aW9uKQorICAgICAgICAgICAgICAgIFFUZXN0OjpxRmFpbCgiVGhlcmUg c2hvdWxkbid0IGJlIGFueSBkb3dubG9hZCIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAg ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfSk7CisgICAgICAgIFFWRVJJRlkoZmFrZUZv bGRlci5zeW5jT25jZSgpKTsKKworICAgICAgICAvLyBUaGUgYTEgZmlsZSBpcyBzdGlsbCB0ZXJl IGFuZCBoYXZlIHRoZSByaWdodCBjb250ZW50CisgICAgICAgIFFWRVJJRlkoZmFrZUZvbGRlci5j dXJyZW50UmVtb3RlU3RhdGUoKS5maW5kKCJBL2ExIikpOworICAgICAgICBRQ09NUEFSRShmYWtl Rm9sZGVyLmN1cnJlbnRSZW1vdGVTdGF0ZSgpLmZpbmQoIkEvYTEiKS0+Y29udGVudENoYXIsICdB Jyk7CisKKyAgICAgICAgUVZFUklGWShRRmlsZTo6cmVtb3ZlKGNvbmZsaWN0RmlsZSkpOyAvLyBT byB0aGUgY29tcGFyaXNvbiBzdWNjZWVkczsKKyAgICAgICAgUUNPTVBBUkUoZmFrZUZvbGRlci5j dXJyZW50TG9jYWxTdGF0ZSgpLCBmYWtlRm9sZGVyLmN1cnJlbnRSZW1vdGVTdGF0ZSgpKTsKKyAg ICB9CisKKyAgICB2b2lkIHRlc3RIdHRwMlJlc2VuZCgpIHsKKyAgICAgICAgRmFrZUZvbGRlciBm YWtlRm9sZGVye0ZpbGVJbmZvOjpBMTJfQjEyX0MxMl9TMTIoKX07CisgICAgICAgIGZha2VGb2xk ZXIucmVtb3RlTW9kaWZpZXIoKS5pbnNlcnQoIkEvcmVzZW5kbWUiLCAzMDApOworCisgICAgICAg IFFCeXRlQXJyYXkgc2VydmVyTWVzc2FnZSA9ICJOZWVkcyB0byBiZSByZXNlbmQgb24gYSBuZXcg Y29ubmVjdGlvbiEiOworICAgICAgICBpbnQgcmVzZW5kQWN0dWFsID0gMDsKKyAgICAgICAgaW50 IHJlc2VuZEV4cGVjdGVkID0gMjsKKworICAgICAgICAvLyBGaXJzdCwgZG93bmxvYWQgb25seSB0 aGUgZmlyc3QgMyBNQiBvZiB0aGUgZmlsZQorICAgICAgICBmYWtlRm9sZGVyLnNldFNlcnZlck92 ZXJyaWRlKFsmXShRTmV0d29ya0FjY2Vzc01hbmFnZXI6Ok9wZXJhdGlvbiBvcCwgY29uc3QgUU5l dHdvcmtSZXF1ZXN0ICZyZXF1ZXN0LCBRSU9EZXZpY2UgKikgLT4gUU5ldHdvcmtSZXBseSAqIHsK KyAgICAgICAgICAgIGlmIChvcCA9PSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OkdldE9wZXJhdGlv biAmJiByZXF1ZXN0LnVybCgpLnBhdGgoKS5lbmRzV2l0aCgiQS9yZXNlbmRtZSIpICYmIHJlc2Vu ZEFjdHVhbCA8IHJlc2VuZEV4cGVjdGVkKSB7CisgICAgICAgICAgICAgICAgYXV0byBlcnJvclJl cGx5ID0gbmV3IEZha2VFcnJvclJlcGx5KG9wLCByZXF1ZXN0LCB0aGlzLCA0MDAsICJpZ25vcmUg dGhpcyBib2R5Iik7CisgICAgICAgICAgICAgICAgZXJyb3JSZXBseS0+c2V0RXJyb3IoUU5ldHdv cmtSZXBseTo6Q29udGVudFJlU2VuZEVycm9yLCBzZXJ2ZXJNZXNzYWdlKTsKKyAgICAgICAgICAg ICAgICBlcnJvclJlcGx5LT5zZXRBdHRyaWJ1dGUoUU5ldHdvcmtSZXF1ZXN0OjpIVFRQMldhc1Vz ZWRBdHRyaWJ1dGUsIHRydWUpOworICAgICAgICAgICAgICAgIGVycm9yUmVwbHktPnNldEF0dHJp YnV0ZShRTmV0d29ya1JlcXVlc3Q6Okh0dHBTdGF0dXNDb2RlQXR0cmlidXRlLCBRVmFyaWFudCgp KTsKKyAgICAgICAgICAgICAgICByZXNlbmRBY3R1YWwgKz0gMTsKKyAgICAgICAgICAgICAgICBy ZXR1cm4gZXJyb3JSZXBseTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBudWxs cHRyOworICAgICAgICB9KTsKKworICAgICAgICBRVkVSSUZZKGZha2VGb2xkZXIuc3luY09uY2Uo KSk7CisgICAgICAgIFFDT01QQVJFKGZha2VGb2xkZXIuY3VycmVudExvY2FsU3RhdGUoKSwgZmFr ZUZvbGRlci5jdXJyZW50UmVtb3RlU3RhdGUoKSk7CisgICAgICAgIFFDT01QQVJFKHJlc2VuZEFj dHVhbCwgMik7CisKKyAgICAgICAgZmFrZUZvbGRlci5yZW1vdGVNb2RpZmllcigpLmFwcGVuZEJ5 dGUoIkEvcmVzZW5kbWUiKTsKKyAgICAgICAgcmVzZW5kQWN0dWFsID0gMDsKKyAgICAgICAgcmVz ZW5kRXhwZWN0ZWQgPSAxMDsKKworICAgICAgICBRU2lnbmFsU3B5IGNvbXBsZXRlU3B5KCZmYWtl Rm9sZGVyLnN5bmNFbmdpbmUoKSwgU0lHTkFMKGl0ZW1Db21wbGV0ZWQoY29uc3QgU3luY0ZpbGVJ dGVtUHRyICYpKSk7CisgICAgICAgIFFWRVJJRlkoIWZha2VGb2xkZXIuc3luY09uY2UoKSk7Cisg ICAgICAgIFFDT01QQVJFKHJlc2VuZEFjdHVhbCwgNCk7IC8vIHRoZSA0dGggZmFpbHMgYmVjYXVz ZSBpdCBvbmx5IHJlc2VuZHMgMyB0aW1lcworICAgICAgICBRQ09NUEFSRShnZXRJdGVtKGNvbXBs ZXRlU3B5LCAiQS9yZXNlbmRtZSIpLT5fc3RhdHVzLCBTeW5jRmlsZUl0ZW06Ok5vcm1hbEVycm9y KTsKKyAgICAgICAgUVZFUklGWShnZXRJdGVtKGNvbXBsZXRlU3B5LCAiQS9yZXNlbmRtZSIpLT5f ZXJyb3JTdHJpbmcuY29udGFpbnMoc2VydmVyTWVzc2FnZSkpOworICAgIH0KK307CisKK1FURVNU X0dVSUxFU1NfTUFJTihUZXN0RG93bmxvYWQpCisjaW5jbHVkZSAidGVzdGRvd25sb2FkLm1vYyIK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbmV4dGNsb3VkLWNsaWVudC9wYXRjaGVzL3Rlc3Rkb3dubG9h ZG5ldy5jcHAgYi9zcmNwa2dzL25leHRjbG91ZC1jbGllbnQvcGF0Y2hlcy90ZXN0ZG93bmxvYWRu ZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjc2OTJlZTI5 Njk2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9uZXh0Y2xvdWQtY2xpZW50L3BhdGNoZXMv dGVzdGRvd25sb2FkbmV3LmNwcApAQCAtMCwwICsxLDI0OCBAQAorLyoKKyAqICAgIFRoaXMgc29m dHdhcmUgaXMgaW4gdGhlIHB1YmxpYyBkb21haW4sIGZ1cm5pc2hlZCAiYXMgaXMiLCB3aXRob3V0 IHRlY2huaWNhbAorICogICAgc3VwcG9ydCwgYW5kIHdpdGggbm8gd2FycmFudHksIGV4cHJlc3Mg b3IgaW1wbGllZCwgYXMgdG8gaXRzIHVzZWZ1bG5lc3MgZm9yCisgKiAgICBhbnkgcHVycG9zZS4K KyAqCisgKi8KKworI2luY2x1ZGUgPFF0VGVzdD4KKyNpbmNsdWRlICJzeW5jZW5naW5ldGVzdHV0 aWxzLmgiCisjaW5jbHVkZSA8c3luY2VuZ2luZS5oPgorI2luY2x1ZGUgPG93bmNsb3VkcHJvcGFn YXRvci5oPgorCit1c2luZyBuYW1lc3BhY2UgT0NDOworCitzdGF0aWMgY29uc3RleHByIHFpbnQ2 NCBzdG9wQWZ0ZXIgPSAzJzEyMyc2Njg7CisKKy8qIEEgRmFrZUdldFJlcGx5IHRoYXQgc2VuZHMg bWF4ICdmYWtlU2l6ZScgYnl0ZXMsIGJ1dCB3aG9zZSBDb250ZW50TGVuZ3RoIGhhcyB0aGUgY29y ZWN0IHNpemUgKi8KK2NsYXNzIEJyb2tlbkZha2VHZXRSZXBseSA6IHB1YmxpYyBGYWtlR2V0UmVw bHkKK3sKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIHVzaW5nIEZha2VHZXRSZXBseTo6RmFr ZUdldFJlcGx5OworICAgIGludCBmYWtlU2l6ZSA9IHN0b3BBZnRlcjsKKworICAgIHFpbnQ2NCBi eXRlc0F2YWlsYWJsZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoYWJvcnRl ZCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RkOjptaW4oc2l6ZSwg ZmFrZVNpemUpICsgUUlPRGV2aWNlOjpieXRlc0F2YWlsYWJsZSgpOyAvLyBOT0xJTlQ6IFRoaXMg aXMgaW50ZW5kZWQgdG8gc2ltdWxhcmUgdGhlIGJyb2tlbmVzcworICAgIH0KKworICAgIHFpbnQ2 NCByZWFkRGF0YShjaGFyICpkYXRhLCBxaW50NjQgbWF4bGVuKSBvdmVycmlkZQorICAgIHsKKyAg ICAgICAgcWludDY0IGxlbiA9IHN0ZDo6bWluKHFpbnQ2NHsgZmFrZVNpemUgfSwgbWF4bGVuKTsK KyAgICAgICAgc3RkOjpmaWxsX24oZGF0YSwgbGVuLCBwYXlsb2FkKTsKKyAgICAgICAgc2l6ZSAt PSBsZW47CisgICAgICAgIGZha2VTaXplIC09IGxlbjsKKyAgICAgICAgcmV0dXJuIGxlbjsKKyAg ICB9Cit9OworCisKK1N5bmNGaWxlSXRlbVB0ciBnZXRJdGVtKGNvbnN0IFFTaWduYWxTcHkgJnNw eSwgY29uc3QgUVN0cmluZyAmcGF0aCkKK3sKKyAgICBmb3IgKGNvbnN0IFFMaXN0PFFWYXJpYW50 PiAmYXJncyA6IHNweSkgeworICAgICAgICBhdXRvIGl0ZW0gPSBhcmdzWzBdLnZhbHVlPFN5bmNG aWxlSXRlbVB0cj4oKTsKKyAgICAgICAgaWYgKGl0ZW0tPmRlc3RpbmF0aW9uKCkgPT0gcGF0aCkK KyAgICAgICAgICAgIHJldHVybiBpdGVtOworICAgIH0KKyAgICByZXR1cm4ge307Cit9CisKKwor Y2xhc3MgVGVzdERvd25sb2FkIDogcHVibGljIFFPYmplY3QKK3sKKyAgICBRX09CSkVDVAorCitw cml2YXRlIHNsb3RzOgorCisgICAgdm9pZCB0ZXN0UmVzdW1lKCkKKyAgICB7CisgICAgICAgIEZh a2VGb2xkZXIgZmFrZUZvbGRlcnsgRmlsZUluZm86OkExMl9CMTJfQzEyX1MxMigpIH07CisgICAg ICAgIGZha2VGb2xkZXIuc3luY0VuZ2luZSgpLnNldElnbm9yZUhpZGRlbkZpbGVzKHRydWUpOwor ICAgICAgICBRU2lnbmFsU3B5IGNvbXBsZXRlU3B5KCZmYWtlRm9sZGVyLnN5bmNFbmdpbmUoKSwg U0lHTkFMKGl0ZW1Db21wbGV0ZWQoY29uc3QgU3luY0ZpbGVJdGVtUHRyICYpKSk7CisgICAgICAg IGF1dG8gc2l6ZSA9IDMwICogMTAwMCAqIDEwMDA7CisgICAgICAgIGZha2VGb2xkZXIucmVtb3Rl TW9kaWZpZXIoKS5pbnNlcnQoIkEvYTAiLCBzaXplKTsKKworICAgICAgICAvLyBGaXJzdCwgZG93 bmxvYWQgb25seSB0aGUgZmlyc3QgMyBNQiBvZiB0aGUgZmlsZQorICAgICAgICBmYWtlRm9sZGVy LnNldFNlcnZlck92ZXJyaWRlKFsmXShRTmV0d29ya0FjY2Vzc01hbmFnZXI6Ok9wZXJhdGlvbiBv cCwgY29uc3QgUU5ldHdvcmtSZXF1ZXN0ICZyZXF1ZXN0LCBRSU9EZXZpY2UgKikgLT4gUU5ldHdv cmtSZXBseSAqIHsKKyAgICAgICAgICAgIGlmIChvcCA9PSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6 OkdldE9wZXJhdGlvbiAmJiByZXF1ZXN0LnVybCgpLnBhdGgoKS5lbmRzV2l0aCgiQS9hMCIpKSB7 CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCcm9rZW5GYWtlR2V0UmVwbHkoZmFrZUZvbGRl ci5yZW1vdGVNb2RpZmllcigpLCBvcCwgcmVxdWVzdCwgdGhpcyk7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfSk7CisKKyAgICAgICAgUVZFUklG WSghZmFrZUZvbGRlci5zeW5jT25jZSgpKTsgLy8gVGhlIHN5bmMgbXVzdCBmYWlsIGJlY2F1c2Ug bm90IGFsbCB0aGUgZmlsZSB3YXMgZG93bmxvYWRlZAorICAgICAgICBRQ09NUEFSRShnZXRJdGVt KGNvbXBsZXRlU3B5LCAiQS9hMCIpLT5fc3RhdHVzLCBTeW5jRmlsZUl0ZW06OlNvZnRFcnJvcik7 CisgICAgICAgIFFDT01QQVJFKGdldEl0ZW0oY29tcGxldGVTcHksICJBL2EwIiktPl9lcnJvclN0 cmluZywgUVN0cmluZygiVGhlIGZpbGUgY291bGQgbm90IGJlIGRvd25sb2FkZWQgY29tcGxldGVs eS4iKSk7CisgICAgICAgIFFWRVJJRlkoZmFrZUZvbGRlci5zeW5jRW5naW5lKCkuaXNBbm90aGVy U3luY05lZWRlZCgpKTsKKworICAgICAgICAvLyBOb3csIHdlIG5lZWQgdG8gcmVzdGFydCwgdGhp cyB0aW1lLCBpdCBzaG91bGQgcmVzdW1lLgorICAgICAgICBRQnl0ZUFycmF5IHJhbmdlczsKKyAg ICAgICAgZmFrZUZvbGRlci5zZXRTZXJ2ZXJPdmVycmlkZShbJl0oUU5ldHdvcmtBY2Nlc3NNYW5h Z2VyOjpPcGVyYXRpb24gb3AsIGNvbnN0IFFOZXR3b3JrUmVxdWVzdCAmcmVxdWVzdCwgUUlPRGV2 aWNlICopIC0+IFFOZXR3b3JrUmVwbHkgKiB7CisgICAgICAgICAgICBpZiAob3AgPT0gUU5ldHdv cmtBY2Nlc3NNYW5hZ2VyOjpHZXRPcGVyYXRpb24gJiYgcmVxdWVzdC51cmwoKS5wYXRoKCkuZW5k c1dpdGgoIkEvYTAiKSkgeworICAgICAgICAgICAgICAgIHJhbmdlcyA9IHJlcXVlc3QucmF3SGVh ZGVyKCJSYW5nZSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7 CisgICAgICAgIH0pOworICAgICAgICBRVkVSSUZZKGZha2VGb2xkZXIuc3luY09uY2UoKSk7IC8v IG5vdyB0aGlzIHN1Y2NlZWRzCisgICAgICAgIFFDT01QQVJFKHJhbmdlcywgUUJ5dGVBcnJheSgi Ynl0ZXM9IiArIFFCeXRlQXJyYXk6Om51bWJlcihzdG9wQWZ0ZXIpICsgIi0iKSk7CisgICAgICAg IFFDT01QQVJFKGZha2VGb2xkZXIuY3VycmVudExvY2FsU3RhdGUoKSwgZmFrZUZvbGRlci5jdXJy ZW50UmVtb3RlU3RhdGUoKSk7CisgICAgfQorCisgICAgdm9pZCB0ZXN0RXJyb3JNZXNzYWdlICgp IHsKKyAgICAgICAgLy8gVGhpcyB0ZXN0J3MgbWFpbiBnb2FsIGlzIHRvIHRlc3QgdGhhdCB0aGUg ZXJyb3Igc3RyaW5nIGZyb20gdGhlIHNlcnZlciBpcyBzaG93biBpbiB0aGUgVUkKKworICAgICAg ICBGYWtlRm9sZGVyIGZha2VGb2xkZXJ7RmlsZUluZm86OkExMl9CMTJfQzEyX1MxMigpfTsKKyAg ICAgICAgZmFrZUZvbGRlci5zeW5jRW5naW5lKCkuc2V0SWdub3JlSGlkZGVuRmlsZXModHJ1ZSk7 CisgICAgICAgIFFTaWduYWxTcHkgY29tcGxldGVTcHkoJmZha2VGb2xkZXIuc3luY0VuZ2luZSgp LCBTSUdOQUwoaXRlbUNvbXBsZXRlZChjb25zdCBTeW5jRmlsZUl0ZW1QdHIgJikpKTsKKyAgICAg ICAgYXV0byBzaXplID0gMyc1MDAnMDAwOworICAgICAgICBmYWtlRm9sZGVyLnJlbW90ZU1vZGlm aWVyKCkuaW5zZXJ0KCJBL2Jyb2tlbiIsIHNpemUpOworCisgICAgICAgIFFCeXRlQXJyYXkgc2Vy dmVyTWVzc2FnZSA9ICJUaGUgZmlsZSB3YXMgbm90IGRvd25sb2FkZWQgYmVjYXVzZSB0aGUgdGVz dHMgd2FudHMgc28hIjsKKworICAgICAgICAvLyBGaXJzdCwgZG93bmxvYWQgb25seSB0aGUgZmly c3QgMyBNQiBvZiB0aGUgZmlsZQorICAgICAgICBmYWtlRm9sZGVyLnNldFNlcnZlck92ZXJyaWRl KFsmXShRTmV0d29ya0FjY2Vzc01hbmFnZXI6Ok9wZXJhdGlvbiBvcCwgY29uc3QgUU5ldHdvcmtS ZXF1ZXN0ICZyZXF1ZXN0LCBRSU9EZXZpY2UgKikgLT4gUU5ldHdvcmtSZXBseSAqIHsKKyAgICAg ICAgICAgIGlmIChvcCA9PSBRTmV0d29ya0FjY2Vzc01hbmFnZXI6OkdldE9wZXJhdGlvbiAmJiBy ZXF1ZXN0LnVybCgpLnBhdGgoKS5lbmRzV2l0aCgiQS9icm9rZW4iKSkgeworICAgICAgICAgICAg ICAgIHJldHVybiBuZXcgRmFrZUVycm9yUmVwbHkob3AsIHJlcXVlc3QsIHRoaXMsIDQwMCwKKyAg ICAgICAgICAgICAgICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04 XCI/PlxuIgorICAgICAgICAgICAgICAgICAgICAiPGQ6ZXJyb3IgeG1sbnM6ZD1cIkRBVjpcIiB4 bWxuczpzPVwiaHR0cDovL3NhYnJlZGF2Lm9yZy9uc1wiPlxuIgorICAgICAgICAgICAgICAgICAg ICAiPHM6ZXhjZXB0aW9uPlNhYnJlXFxEQVZcXEV4Y2VwdGlvblxcRm9yYmlkZGVuPC9zOmV4Y2Vw dGlvbj5cbiIKKyAgICAgICAgICAgICAgICAgICAgIjxzOm1lc3NhZ2U+IitzZXJ2ZXJNZXNzYWdl KyI8L3M6bWVzc2FnZT5cbiIKKyAgICAgICAgICAgICAgICAgICAgIjwvZDplcnJvcj4iKTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9KTsKKwor ICAgICAgICBib29sIHRpbWVkT3V0ID0gZmFsc2U7CisgICAgICAgIFFUaW1lcjo6c2luZ2xlU2hv dCgxMDAwMCwgJmZha2VGb2xkZXIuc3luY0VuZ2luZSgpLCBbJl0oKSB7IHRpbWVkT3V0ID0gdHJ1 ZTsgZmFrZUZvbGRlci5zeW5jRW5naW5lKCkuYWJvcnQoKTsgfSk7CisgICAgICAgIFFWRVJJRlko IWZha2VGb2xkZXIuc3luY09uY2UoKSk7ICAvLyBGYWlsIGJlY2F1c2UgQS9icm9rZW4KKyAgICAg ICAgUVZFUklGWSghdGltZWRPdXQpOworICAgICAgICBRQ09NUEFSRShnZXRJdGVtKGNvbXBsZXRl U3B5LCAiQS9icm9rZW4iKS0+X3N0YXR1cywgU3luY0ZpbGVJdGVtOjpOb3JtYWxFcnJvcik7Cisg ICAgICAgIFFWRVJJRlkoZ2V0SXRlbShjb21wbGV0ZVNweSwgIkEvYnJva2VuIiktPl9lcnJvclN0 cmluZy5jb250YWlucyhzZXJ2ZXJNZXNzYWdlKSk7CisgICAgfQorCisgICAgdm9pZCBzZXJ2ZXJN YWludGVuZW5jZSgpIHsKKyAgICAgICAgLy8gU2VydmVyIGluIG1haW50ZW5hbmNlIG11c3QgYWJv cnQgdGhlIHN5bmMuCisKKyAgICAgICAgRmFrZUZvbGRlciBmYWtlRm9sZGVye0ZpbGVJbmZvOjpB MTJfQjEyX0MxMl9TMTIoKX07CisgICAgICAgIGZha2VGb2xkZXIucmVtb3RlTW9kaWZpZXIoKS5p bnNlcnQoIkEvYnJva2VuIik7CisgICAgICAgIGZha2VGb2xkZXIuc2V0U2VydmVyT3ZlcnJpZGUo WyZdKFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6T3BlcmF0aW9uIG9wLCBjb25zdCBRTmV0d29ya1Jl cXVlc3QgJnJlcXVlc3QsIFFJT0RldmljZSAqKSAtPiBRTmV0d29ya1JlcGx5ICogeworICAgICAg ICAgICAgaWYgKG9wID09IFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6R2V0T3BlcmF0aW9uKSB7Cisg ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGYWtlRXJyb3JSZXBseShvcCwgcmVxdWVzdCwgdGhp cywgNTAzLAorICAgICAgICAgICAgICAgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29k aW5nPVwidXRmLThcIj8+XG4iCisgICAgICAgICAgICAgICAgICAgICI8ZDplcnJvciB4bWxuczpk PVwiREFWOlwiIHhtbG5zOnM9XCJodHRwOi8vc2FicmVkYXYub3JnL25zXCI+XG4iCisgICAgICAg ICAgICAgICAgICAgICI8czpleGNlcHRpb24+U2FicmVcXERBVlxcRXhjZXB0aW9uXFxTZXJ2aWNl VW5hdmFpbGFibGU8L3M6ZXhjZXB0aW9uPlxuIgorICAgICAgICAgICAgICAgICAgICAiPHM6bWVz c2FnZT5TeXN0ZW0gaW4gbWFpbnRlbmFuY2UgbW9kZS48L3M6bWVzc2FnZT5cbiIKKyAgICAgICAg ICAgICAgICAgICAgIjwvZDplcnJvcj4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl dHVybiBudWxscHRyOworICAgICAgICB9KTsKKworICAgICAgICBRU2lnbmFsU3B5IGNvbXBsZXRl U3B5KCZmYWtlRm9sZGVyLnN5bmNFbmdpbmUoKSwgJlN5bmNFbmdpbmU6Oml0ZW1Db21wbGV0ZWQp OworICAgICAgICBRVkVSSUZZKCFmYWtlRm9sZGVyLnN5bmNPbmNlKCkpOyAvLyBGYWlsIGJlY2F1 c2UgQS9icm9rZW4KKyAgICAgICAgLy8gRmF0YWxFcnJvciBtZWFucyB0aGUgc3luYyB3YXMgYWJv cnRlZCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50CisgICAgICAgIFFDT01QQVJFKGdldEl0ZW0oY29t cGxldGVTcHksICJBL2Jyb2tlbiIpLT5fc3RhdHVzLCBTeW5jRmlsZUl0ZW06OkZhdGFsRXJyb3Ip OworICAgICAgICBRVkVSSUZZKGdldEl0ZW0oY29tcGxldGVTcHksICJBL2Jyb2tlbiIpLT5fZXJy b3JTdHJpbmcuY29udGFpbnMoIlN5c3RlbSBpbiBtYWludGVuYW5jZSBtb2RlIikpOworICAgIH0K KworICAgIHZvaWQgdGVzdE1vdmVGYWlsc0luQUNvbmZsaWN0KCkgeworI2lmZGVmIFFfT1NfV0lO CisgICAgICAgIFFTS0lQKCJOb3QgcnVuIG9uIHdpbmRvd3MgYmVjYXVzZSBwZXJtaXNzaW9uIG9u IGRpcmVjdG9yeSBkb2VzIG5vdCBkbyB3aGF0IGlzIGV4cGVjdGVkIik7CisjZW5kaWYKKyAgICAg ICAgLy8gVGVzdCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL293bmNsb3VkL2NsaWVudC9pc3N1ZXMv NzAxNQorICAgICAgICAvLyBXZSB3YW50IHRvIHRlc3QgdGhlIGNhc2UgaW4gd2hpY2ggdGhlIHJl bmFtaW5nIG9mIHRoZSBvcmlnaW5hbCB0byB0aGUgY29uZmxpY3QgZmlsZSBzdWNjZWVkcywKKyAg ICAgICAgLy8gYnV0IHJlbmFtaW5nIHRoZSB0ZW1wb3JhcnkgZmlsZSBmYWlscy4KKyAgICAgICAg Ly8gVGhpcyB0ZXN0cyB1c2VzIHRoZSBmYWN0IHRoYXQgYSAidG91Y2hlZEZpbGUiIG5vdGlmaWNh dGlvbiB3aWxsIGJlIHNlbnQgYXQgdGhlIHJpZ2h0IG1vbWVudC4KKyAgICAgICAgLy8gTm90ZSB0 aGF0IHRoZXJlIHdpbGwgYmUgZmlyc3QgYSBub3RpZmljYXRpb24gb24gdGhlIGZpbGUgYW5kIHRo ZSBjb25mbGljdCBmaWxlIGJlZm9yZS4KKworICAgICAgICBGYWtlRm9sZGVyIGZha2VGb2xkZXJ7 IEZpbGVJbmZvOjpBMTJfQjEyX0MxMl9TMTIoKSB9OworICAgICAgICBmYWtlRm9sZGVyLnN5bmNF bmdpbmUoKS5zZXRJZ25vcmVIaWRkZW5GaWxlcyh0cnVlKTsKKyAgICAgICAgZmFrZUZvbGRlci5y ZW1vdGVNb2RpZmllcigpLnNldENvbnRlbnRzKCJBL2ExIiwgJ0EnKTsKKyAgICAgICAgZmFrZUZv bGRlci5sb2NhbE1vZGlmaWVyKCkuc2V0Q29udGVudHMoIkEvYTEiLCAnQicpOworCisgICAgICAg IGJvb2wgcHJvcENvbm5lY3RlZCA9IGZhbHNlOworICAgICAgICBRU3RyaW5nIGNvbmZsaWN0Rmls ZTsKKyAgICAgICAgYXV0byB0cmFuc1Byb2dyZXNzID0gY29ubmVjdCgmZmFrZUZvbGRlci5zeW5j RW5naW5lKCksICZTeW5jRW5naW5lOjp0cmFuc21pc3Npb25Qcm9ncmVzcywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBbJl0oY29uc3QgUHJvZ3Jlc3NJbmZvICZwaSkgewor ICAgICAgICAgICAgYXV0byBwcm9wYWdhdG9yID0gZmFrZUZvbGRlci5zeW5jRW5naW5lKCkuZ2V0 UHJvcGFnYXRvcigpOworICAgICAgICAgICAgaWYgKHBpLnN0YXR1cygpICE9IFByb2dyZXNzSW5m bzo6UHJvcGFnYXRpb24gfHwgcHJvcENvbm5lY3RlZCB8fCAhcHJvcGFnYXRvcikKKyAgICAgICAg ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBwcm9wQ29ubmVjdGVkID0gdHJ1ZTsKKyAgICAg ICAgICAgIGNvbm5lY3QocHJvcGFnYXRvci5kYXRhKCksICZPd25jbG91ZFByb3BhZ2F0b3I6OnRv dWNoZWRGaWxlLCBbJl0oY29uc3QgUVN0cmluZyAmcykgeworICAgICAgICAgICAgICAgIGlmIChz LmNvbnRhaW5zKCJjb25mbGljdGVkIGNvcHkiKSkgeworICAgICAgICAgICAgICAgICAgICBRQ09N UEFSRShjb25mbGljdEZpbGUsIFFTdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbmZs aWN0RmlsZSA9IHM7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgaWYgKCFjb25mbGljdEZpbGUuaXNFbXB0eSgpKSB7CisgICAg ICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHRlbXBvcmFyeSBmaWxlIGlzIHN0aWxs IHRoZXJlCisgICAgICAgICAgICAgICAgICAgIFFDT01QQVJFKFFEaXIoZmFrZUZvbGRlci5sb2Nh bFBhdGgoKSArICJBLyIpLmVudHJ5TGlzdCh7IioufioifSwgUURpcjo6RmlsZXMgfCBRRGlyOjpI aWRkZW4pLmNvdW50KCksIDEpOworICAgICAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIHBlcm1p c3Npb24gdG8gcmVhZCBvbmx5IG9uIHRoZSBmb2xkZXIsIHNvIHRoZSByZW5hbWUgb2YgdGhlIHRl bXBvcmFyeSBmaWxlIHdpbGwgZmFpbAorICAgICAgICAgICAgICAgICAgICBRRmlsZShmYWtlRm9s ZGVyLmxvY2FsUGF0aCgpICsgIkEvIikuc2V0UGVybWlzc2lvbnMoUUZpbGU6OlBlcm1pc3Npb25z KDB4NTU1NSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOworICAgICAgICB9 KTsKKworICAgICAgICAvL1FWRVJJRlkoIWZha2VGb2xkZXIuc3luY09uY2UoKSk7IC8vIFRoZSBz eW5jIG11c3QgZmFpbCBiZWNhdXNlIHRoZSByZW5hbWUgZmFpbGVkCisgICAgICAgIC8vUVZFUklG WSghY29uZmxpY3RGaWxlLmlzRW1wdHkoKSk7CisKKyAgICAgICAgLy8gcmVzdG9yZSBwZXJtaXNz aW9ucworICAgICAgICBRRmlsZShmYWtlRm9sZGVyLmxvY2FsUGF0aCgpICsgIkEvIikuc2V0UGVy bWlzc2lvbnMoUUZpbGU6OlBlcm1pc3Npb25zKDB4Nzc3NykpOworCisgICAgICAgIFFPYmplY3Q6 OmRpc2Nvbm5lY3QodHJhbnNQcm9ncmVzcyk7CisgICAgICAgIGZha2VGb2xkZXIuc2V0U2VydmVy T3ZlcnJpZGUoWyZdKFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6T3BlcmF0aW9uIG9wLCBjb25zdCBR TmV0d29ya1JlcXVlc3QgJiwgUUlPRGV2aWNlICopIC0+IFFOZXR3b3JrUmVwbHkgKiB7CisgICAg ICAgICAgICBpZiAob3AgPT0gUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpHZXRPcGVyYXRpb24pCisg ICAgICAgICAgICAgICAgLy9RVGVzdDo6cUZhaWwoIlRoZXJlIHNob3VsZG4ndCBiZSBhbnkgZG93 bmxvYWQiLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7 CisgICAgICAgIH0pOworICAgICAgICBRVkVSSUZZKGZha2VGb2xkZXIuc3luY09uY2UoKSk7CisK KyAgICAgICAgLy8gVGhlIGExIGZpbGUgaXMgc3RpbGwgdGVyZSBhbmQgaGF2ZSB0aGUgcmlnaHQg Y29udGVudAorICAgICAgICBRVkVSSUZZKGZha2VGb2xkZXIuY3VycmVudFJlbW90ZVN0YXRlKCku ZmluZCgiQS9hMSIpKTsKKyAgICAgICAgUUNPTVBBUkUoZmFrZUZvbGRlci5jdXJyZW50UmVtb3Rl U3RhdGUoKS5maW5kKCJBL2ExIiktPmNvbnRlbnRDaGFyLCAnQScpOworCisgICAgICAgIC8vUVZF UklGWShRRmlsZTo6cmVtb3ZlKGNvbmZsaWN0RmlsZSkpOyAvLyBTbyB0aGUgY29tcGFyaXNvbiBz dWNjZWVkczsKKyAgICAgICAgLy9RQ09NUEFSRShmYWtlRm9sZGVyLmN1cnJlbnRMb2NhbFN0YXRl KCksIGZha2VGb2xkZXIuY3VycmVudFJlbW90ZVN0YXRlKCkpOworICAgIH0KKworICAgIHZvaWQg dGVzdEh0dHAyUmVzZW5kKCkgeworICAgICAgICBGYWtlRm9sZGVyIGZha2VGb2xkZXJ7RmlsZUlu Zm86OkExMl9CMTJfQzEyX1MxMigpfTsKKyAgICAgICAgZmFrZUZvbGRlci5yZW1vdGVNb2RpZmll cigpLmluc2VydCgiQS9yZXNlbmRtZSIsIDMwMCk7CisKKyAgICAgICAgUUJ5dGVBcnJheSBzZXJ2 ZXJNZXNzYWdlID0gIk5lZWRzIHRvIGJlIHJlc2VuZCBvbiBhIG5ldyBjb25uZWN0aW9uISI7Cisg ICAgICAgIGludCByZXNlbmRBY3R1YWwgPSAwOworICAgICAgICBpbnQgcmVzZW5kRXhwZWN0ZWQg PSAyOworCisgICAgICAgIC8vIEZpcnN0LCBkb3dubG9hZCBvbmx5IHRoZSBmaXJzdCAzIE1CIG9m IHRoZSBmaWxlCisgICAgICAgIGZha2VGb2xkZXIuc2V0U2VydmVyT3ZlcnJpZGUoWyZdKFFOZXR3 b3JrQWNjZXNzTWFuYWdlcjo6T3BlcmF0aW9uIG9wLCBjb25zdCBRTmV0d29ya1JlcXVlc3QgJnJl cXVlc3QsIFFJT0RldmljZSAqKSAtPiBRTmV0d29ya1JlcGx5ICogeworICAgICAgICAgICAgaWYg KG9wID09IFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6R2V0T3BlcmF0aW9uICYmIHJlcXVlc3QudXJs KCkucGF0aCgpLmVuZHNXaXRoKCJBL3Jlc2VuZG1lIikgJiYgcmVzZW5kQWN0dWFsIDwgcmVzZW5k RXhwZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGVycm9yUmVwbHkgPSBuZXcgRmFrZUVy cm9yUmVwbHkob3AsIHJlcXVlc3QsIHRoaXMsIDQwMCwgImlnbm9yZSB0aGlzIGJvZHkiKTsKKyAg ICAgICAgICAgICAgICBlcnJvclJlcGx5LT5zZXRFcnJvcihRTmV0d29ya1JlcGx5OjpDb250ZW50 UmVTZW5kRXJyb3IsIHNlcnZlck1lc3NhZ2UpOworICAgICAgICAgICAgICAgIGVycm9yUmVwbHkt PnNldEF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6OkhUVFAyV2FzVXNlZEF0dHJpYnV0ZSwgdHJ1 ZSk7CisgICAgICAgICAgICAgICAgZXJyb3JSZXBseS0+c2V0QXR0cmlidXRlKFFOZXR3b3JrUmVx dWVzdDo6SHR0cFN0YXR1c0NvZGVBdHRyaWJ1dGUsIFFWYXJpYW50KCkpOworICAgICAgICAgICAg ICAgIHJlc2VuZEFjdHVhbCArPSAxOworICAgICAgICAgICAgICAgIHJldHVybiBlcnJvclJlcGx5 OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0p OworCisgICAgICAgIFFWRVJJRlkoZmFrZUZvbGRlci5zeW5jT25jZSgpKTsKKyAgICAgICAgUUNP TVBBUkUoZmFrZUZvbGRlci5jdXJyZW50TG9jYWxTdGF0ZSgpLCBmYWtlRm9sZGVyLmN1cnJlbnRS ZW1vdGVTdGF0ZSgpKTsKKyAgICAgICAgUUNPTVBBUkUocmVzZW5kQWN0dWFsLCAyKTsKKworICAg ICAgICBmYWtlRm9sZGVyLnJlbW90ZU1vZGlmaWVyKCkuYXBwZW5kQnl0ZSgiQS9yZXNlbmRtZSIp OworICAgICAgICByZXNlbmRBY3R1YWwgPSAwOworICAgICAgICByZXNlbmRFeHBlY3RlZCA9IDEw OworCisgICAgICAgIFFTaWduYWxTcHkgY29tcGxldGVTcHkoJmZha2VGb2xkZXIuc3luY0VuZ2lu ZSgpLCBTSUdOQUwoaXRlbUNvbXBsZXRlZChjb25zdCBTeW5jRmlsZUl0ZW1QdHIgJikpKTsKKyAg ICAgICAgUVZFUklGWSghZmFrZUZvbGRlci5zeW5jT25jZSgpKTsKKyAgICAgICAgUUNPTVBBUkUo cmVzZW5kQWN0dWFsLCA0KTsgLy8gdGhlIDR0aCBmYWlscyBiZWNhdXNlIGl0IG9ubHkgcmVzZW5k cyAzIHRpbWVzCisgICAgICAgIFFDT01QQVJFKGdldEl0ZW0oY29tcGxldGVTcHksICJBL3Jlc2Vu ZG1lIiktPl9zdGF0dXMsIFN5bmNGaWxlSXRlbTo6Tm9ybWFsRXJyb3IpOworICAgICAgICBRVkVS SUZZKGdldEl0ZW0oY29tcGxldGVTcHksICJBL3Jlc2VuZG1lIiktPl9lcnJvclN0cmluZy5jb250 YWlucyhzZXJ2ZXJNZXNzYWdlKSk7CisgICAgfQorfTsKKworUVRFU1RfR1VJTEVTU19NQUlOKFRl c3REb3dubG9hZCkKKyNpbmNsdWRlICJ0ZXN0ZG93bmxvYWQubW9jIgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9uZXh0Y2xvdWQtY2xpZW50L3RlbXBsYXRlIGIvc3JjcGtncy9uZXh0Y2xvdWQtY2xpZW50 L3RlbXBsYXRlCmluZGV4IGU3ZDM1NmJmYTMxZC4uZDI3MDk1ZmMxOWE5IDEwMDY0NAotLS0gYS9z cmNwa2dzL25leHRjbG91ZC1jbGllbnQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9uZXh0Y2xvdWQt Y2xpZW50L3RlbXBsYXRlCkBAIC0xLDEzICsxLDEzIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdu ZXh0Y2xvdWQtY2xpZW50JwogcGtnbmFtZT1uZXh0Y2xvdWQtY2xpZW50Ci12ZXJzaW9uPTMuMy41 Cit2ZXJzaW9uPTMuNC4yCiByZXZpc2lvbj0xCiB3cmtzcmM9ImRlc2t0b3AtJHt2ZXJzaW9ufSIK IGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLVduby1kZXYiCi1ob3N0bWFrZWRl cGVuZHM9InBrZy1jb25maWcgaW5rc2NhcGUiCi1tYWtlZGVwZW5kcz0icXQ1LXRvb2xzLWRldmVs IHF0NS1kZWNsYXJhdGl2ZS1kZXZlbCBxdDUtd2ViY2hhbm5lbC1kZXZlbAotIHF0NS1sb2NhdGlv bi1kZXZlbCBxdGtleWNoYWluLXF0NS1kZXZlbCBzcWxpdGUtZGV2ZWwgbGliY2xvdWRwcm92aWRl cnMtZGV2ZWwKK2hvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBpbmtzY2FwZSAiCittYWtlZGVw ZW5kcz0icXQ1LXRvb2xzLWRldmVsIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbCBxdDUtd2ViY2hhbm5l bC1kZXZlbCBvcGVuc3NsLWRldmVsCisgcXQ1LWxvY2F0aW9uLWRldmVsIHF0a2V5Y2hhaW4tcXQ1 LWRldmVsIHNxbGl0ZS1kZXZlbCBzcWxpdGUgbGliY2xvdWRwcm92aWRlcnMtZGV2ZWwgcXQ1LXFt YWtlIHF0NS1ob3N0LXRvb2xzIHF0NS10b29scwogIHF0NS1xdWlja2NvbnRyb2xzMi1kZXZlbCBx dDUtd2Vic29ja2V0cy1kZXZlbCBxdDUtc3ZnLWRldmVsCiAgJCh2b3B0X2lmIGRvbHBoaW4gJ2V4 dHJhLWNtYWtlLW1vZHVsZXMga2lvLWRldmVsJykKICAkKHZvcHRfaWYgd2ViZW5naW5lICdxdDUt d2ViZW5naW5lLWRldmVsJykiCkBAIC0yMCw4ICsyMCw3IEBAIGxpY2Vuc2U9IkdQTC0yLjAtb3It bGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9uZXh0Y2xvdWQuY29tL2NsaWVudHMvIgogY2hhbmdl bG9nPSJodHRwczovL2dpdGh1Yi5jb20vbmV4dGNsb3VkL2Rlc2t0b3AvcmVsZWFzZXMiCiBkaXN0 ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9uZXh0Y2xvdWQvZGVza3RvcC9hcmNoaXZlL3Yke3Zl cnNpb259LnRhci5neiIKLWNoZWNrc3VtPTVlOTUyYmUzNmFiNjgwNmZmYmFiNmQyMTZiMDViZmJk OWQ3ZTcyNjg3ZTBkMjgxZjQ5MmUxMDU5Y2QzNGI0MTkKLW1ha2VfY2hlY2s9Y2ktc2tpcAorY2hl Y2tzdW09MjUxOWQyMzI5ZTE5ZjgwNTYwOWFhOTJhYTRiY2JjMGI4YWZiZmI2OGIwNjdlOTYzYWE4 NDlkYTUwYjIzNmM1ZAogCiBidWlsZF9vcHRpb25zPSJkb2xwaGluIHdlYmVuZ2luZSIKIGRlc2Nf b3B0aW9uX2RvbHBoaW49IkJ1aWxkIEtERSBkb2xwaGluIHN1cHBvcnQiCkBAIC0zOSw2ICszOCwz NSBAQCBpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KIAkjIHByb3ZpZGVzIGRlc2t0b3B0b2pz b24KIAlob3N0bWFrZWRlcGVuZHMrPSIgJCh2b3B0X2lmIGRvbHBoaW4gJ2tjb3JlYWRkb25zJyki CiBmaQoraWYgWyAiJFhCUFNfVEFSR0VUX0xJQkMiID0gIm11c2wiIF07IHRoZW4KKwkjcHJvdmlk ZXMgYXJncCBsaWJyYXJ5CisJbWFrZWRlcGVuZHMrPSIgYXJncC1zdGFuZGFsb25lIgorZmkKK2lm IFsgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiAhPSAiYXJtdjdsIiBdOyB0aGVuCisJI3RoZXNlIHBh Y2thZ2VzIGFyZSBicm9rZW4gb24gdGhhdCBhcmNoaXRlY3R1cmUKKwlob3N0bWFrZWRlcGVuZHMr PSIgcXQ1LWRldmVsIHF0NS13ZWJlbmdpbmUtZGV2ZWwgcXQ1LXdlYnZpZXctZGV2ZWwiCitmaQor cHJlX3BhdGNoKCkgeworCWlmIFsgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiAhPSAieDg2XzY0IiBd ICYmIFsgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiAhPSAieDg2XzY0LW11c2wiIF0gJiYgWyAiJFhC UFNfVEFSR0VUX01BQ0hJTkUiICE9ICJpNjg2IiBdOyB0aGVuCisJCSNtb3ZlIHBhdGNoIHRvIGEg LmJhayBzbyB0aGF0IHRoZSBkb19wYXRjaCgpIHdpbGwgbm90IHBhdGNoIGl0LCBhcyB0aGlzIGlz IG5vdCBuZWVkZWQgaW4gb3RoZXIgYXJjaGl0ZWN0dXJlcworCQkjVGhlIHBhdGNoIGlzIGZvciBy dW5uaW5nIHRoZSB0ZXN0cyBzbyB0aGF0IHRoZSBkb3dubG9hZCB0ZXN0IGRvZXMgbm90IGZhaWwg b24gdHJhdmlzIENMCisJCW12ICIke1BBVENIRVNESVJ9L3Rlc3Rkb3dubG9hZC1maXgucGF0Y2gi ICIke1BBVENIRVNESVJ9L3Rlc3Rkb3dubG9hZC1maXgucGF0Y2guYmFrIgorCWZpCisJaWYgWyAi JFhCUFNfVEFSR0VUX01BQ0hJTkUiICE9ICJpNjg2IiBdICYmIFsgIiRYQlBTX1RBUkdFVF9NQUNI SU5FIiAhPSAiaTY4Ni1tdXNsIiBdOyB0aGVuCisJCSNyZW1vdmUgcGF0Y2ggZm9yIG90aGVyIGFy Y2hpdGVjdHVyZXMgd2hlcmUgaXQgaXMgbm90IG5lZWRlZAorCQltdiAiJHtQQVRDSEVTRElSfS90 ZXN0Y2h1bmtpbmduZy1pNjg2LWZpeC5wYXRjaCIgIiR7UEFUQ0hFU0RJUn0vdGVzdGNodW5raW5n bmctaTY4Ni1maXgucGF0Y2guYmFrIgorCWZpCit9Citwb3N0X3BhdGNoKCkgeworCWlmIFsgIiRY QlBTX1RBUkdFVF9NQUNISU5FIiAhPSAieDg2XzY0IiBdICYmIFsgIiRYQlBTX1RBUkdFVF9NQUNI SU5FIiAhPSAieDg2XzY0LW11c2wiIF0gJiYgWyAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiICE9ICJp Njg2IiBdOyB0aGVuCisJCSNwbGFjZSB0aGUgcGF0Y2ggYmFjaworCQltdiAiJHtQQVRDSEVTRElS fS90ZXN0ZG93bmxvYWQtZml4LnBhdGNoLmJhayIgIiR7UEFUQ0hFU0RJUn0vdGVzdGRvd25sb2Fk LWZpeC5wYXRjaCIKKwlmaQorCWlmIFsgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiAhPSAiaTY4NiIg XSAmJiBbICIkWEJQU19UQVJHRVRfTUFDSElORSIgIT0gImk2ODYtbXVzbCIgXTsgdGhlbgorCQkj cGxhY2UgdGhlIHBhdGNoIGJhY2sKKwkJbXYgIiR7UEFUQ0hFU0RJUn0vdGVzdGNodW5raW5nbmct aTY4Ni1maXgucGF0Y2guYmFrIiAiJHtQQVRDSEVTRElSfS90ZXN0Y2h1bmtpbmduZy1pNjg2LWZp eC5wYXRjaCIKKwlmaQorfQogCiBzdWJwYWNrYWdlcz0ibmV4dGNsb3VkLWNsaWVudC1rd2FsbGV0 IG5leHRjbG91ZC1jbGllbnQtZGV2ZWwiCiBzdWJwYWNrYWdlcys9IiAkKHZvcHRfaWYgZG9scGhp biAnbmV4dGNsb3VkLWNsaWVudC1kb2xwaGluJykiCg== --===============4046450771071646511==--