From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 4264 invoked from network); 28 Feb 2022 22:04:17 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 28 Feb 2022 22:04:17 -0000 Content-Type: multipart/mixed; boundary="===============7598559121448605782==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_Llvm13?= To: ml@inbox.vuxu.org From: motorto Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Mon, 28 Feb 2022 23:04:16 +0100 List-Id: Message-ID: <20220228220416.VhtR76dje5qMvoOQPyVqHZd6RYHMwuEguokuherVw9g@z> GitHub notification mails are now in MIME to allow UTF8. --===============7598559121448605782== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgbW90b3J0byBhZ2FpbnN0IG1hc3Rl ciBvbiB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vbW90 b3J0by92b2lkLXBhY2thZ2VzIGxsdm0xMwpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvMzU4OTUKCkxsdm0xMwpUaGlzIGFkZHMgTExWTSAxMyBhbmQgdXBk YXRlcyBmcm9tIExMVk0gMTIuDQoNCldvcmstaW4tcHJvZ3Jlc3MNCg0KVGhlIGZvbGxvd2luZyBw YWNrYWdlcyB3YXMgcmVtb3ZlZDoNCiAqIGJlaWduZXQgLS0gdXBzdHJlYW0gaXMgZGVhZA0KDQpU aGUgZm9sbG93aW5nIHBhY2thZ2VzIHdlcmUgdXBkYXRlZCBvciBwYXRjaGVkOg0KICogaXNwYw0K ICogcXRjcmVhdG9yDQogKiB6aWcNCg0KUmVidWlsdCBwYWNrYWdlczoNCg0KKiBqdUNpKysgDQoq IGtkZXZlbG9wIA0KKiBjb2RlbGl0ZSANCiogIGNocm9taXVtDQoqIG1lc2EgDQoqIGluY2x1ZGUt d2hhdC15b3UtdXNlIA0KKiBjY2xzIA0KKiBjbGF6eSANCiogYnBmdHJhY2UgDQoqIHF0NSANCiog cnRhZ3MgDQoqIHNoaWJva2VuMiANCiogZ25vbWUtYnVpbGRlcg0KKiBiY2MNCg0KKEkgYW0gcHJv YmFibHkgbWlzc2luZyBzb21lIHBhY2thZ2VzKQ0KDQoNClRoYW5rcyBAREJMb3VpcyBmb3IgeW91 ciBoYXJkIHdvcmshIA0KCgpBIHBhdGNoIGZpbGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9p ZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMzU4OTUucGF0Y2ggaXMgYXR0YWNoZWQ= --===============7598559121448605782== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-llvm13-35895.patch" RnJvbSBkNmYyYzI0NTAzYjRhZjAzOTdjMmEyYTdkNjE3MDk3OTBiZDA4ODllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9u aT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBGcmksIDMxIERlYyAy MDIxIDE2OjIxOjMwICswMjAwClN1YmplY3Q6IFtQQVRDSCAwMS8yMF0gTmV3IHBhY2thZ2U6IGxs dm0xMy0xMy4wLjAKCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDE2ICstCiBzcmNwa2dzL2NsYW5nICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvY2xhbmctYW5hbHl6ZXIgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjcGtncy9jbGFuZy10b29scy1leHRyYSAgICAgICAgICAgICAgICAg ICAgIHwgICAyICstCiBzcmNwa2dzL2xpYmNsYW5nICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDIgKy0KIHNyY3BrZ3MvbGliY2xhbmctY3BwICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMiArLQogc3JjcGtncy9saWJjeHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAyICstCiBzcmNwa2dzL2xpYmN4eC1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyY3BrZ3MvbGliY3h4YWJpICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMiArLQogc3JjcGtncy9saWJjeHhhYmktZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgIHwg ICAyICstCiBzcmNwa2dzL2xpYmxsdm0xMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjcGtncy9saWJvbXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAy ICstCiBzcmNwa2dzL2xpYm9tcC1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIg Ky0KIHNyY3BrZ3MvbGxkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiAr LQogc3JjcGtncy9sbGQtZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICst CiBzcmNwa2dzL2xsZGIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0K IHNyY3BrZ3MvbGxkYi1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQog c3JjcGtncy9sbHZtLWxpYnVud2luZCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBz cmNwa2dzL2xsdm0tbGlidW53aW5kLWRldmVsICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4u Li9sbHZtMTMvZmlsZXMvbGx2bS1Db25maWctbGx2bS1jb25maWcuaCAgICB8ICAgOSArCiAuLi5j bGFuZy0wMDEtZml4LXVud2luZC1jaGFpbi1pbmNsdXNpb24ucGF0Y2ggfCAgNDQgKysKIC4uLi9w YXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoICB8IDExMCArKysrKwogLi4u L2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoIHwgIDEzICsKIC4uLi9w YXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNoICB8ICA0OCArKwogLi4uL2Nv bXBpbGVyLXJ0LWFhcmNoNjQtdWNvbnRleHQucGF0Y2ggICAgICAgIHwgIDExICsKIC4uLi9jb21w aWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRjaCAgICB8ICAzNSArKwogLi4uL3BhdGNo ZXMvY29tcGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNoIHwgIDYyICsrKwogc3JjcGtncy9s bHZtMTMvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaCAgICAgIHwgIDI2ICsrCiBzcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2ggICAgICAgfCAgMjIgKwogLi4uL2xsdm0xMy9w YXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hhcmVkLnBhdGNoIHwgIDExICsKIHNyY3BrZ3MvbGx2bTEz L3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNoICAgICB8ICAyNSArKwogc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9saWJ1bndpbmQtcHBjMzIucGF0Y2ggIHwgIDYzICsrKwogc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9sbGRiLW11c2wucGF0Y2ggICAgICAgIHwgIDMxICsrCiBzcmNwa2dzL2xsdm0xMy9w YXRjaGVzL2xsdm0tMDAxLW11c2wucGF0Y2ggICAgfCAgNTcgKysrCiAuLi4vcGF0Y2hlcy9sbHZt LTAwMi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoICAgfCAgMzAgKysKIC4uLi9wYXRjaGVzL2xsdm0t MDAzLXBwYy1zZWN1cmVwbHQucGF0Y2ggICAgICB8ICAxMSArCiAuLi4vcGF0Y2hlcy9sbHZtLTAw NC1vdmVycmlkZS1vcHQucGF0Y2ggICAgICAgfCAgMTggKwogLi4uL2xsdm0xMy9wYXRjaGVzL2xs dm0tMDA1LXBwYy1iaWdwaWMucGF0Y2ggIHwgIDM2ICsrCiAuLi4vcGF0Y2hlcy9sbHZtLTAwNi1h YXJjaDY0LW1mX2V4ZWMucGF0Y2ggICAgfCAgMjUgKysKIC4uLi9sbHZtMTMvcGF0Y2hlcy9wcGMz Mi1jb21waWxlci1ydC5wYXRjaCAgICB8ICAyMSArCiBzcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZSAg ICAgICAgICAgICAgICAgICAgICAgfCA0MjMgKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2xs dm0xMy91cGRhdGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogNDIgZmlsZXMgY2hh bmdlZCwgMTE2NSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEy MDAwMCBzcmNwa2dzL2xpYmxsdm0xMwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEz L2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwMS1maXgtdW53aW5kLWNoYWluLWluY2x1c2lvbi5w YXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDAy LWFkZC1tdXNsLXRyaXBsZXMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0x My9wYXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVz bC1lbGZ2Mi5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEzL3BhdGNoZXMv Y29tcGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvbGx2bTEzL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBwYzY0LW11c2wucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NvbXBpbGVyLXJ0 LXhyYXktcHBjNjQtbXVzbC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEz L3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2xsdm0xMy9wYXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hhcmVkLnBhdGNoCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYnVud2luZC1wcGMzMi5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGxkYi1tdXNsLnBhdGNo CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAwMS1tdXNs LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAw Mi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZt MTMvcGF0Y2hlcy9sbHZtLTAwMy1wcGMtc2VjdXJlcGx0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAwNC1vdmVycmlkZS1vcHQucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDA1LXBwYy1iaWdw aWMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0t MDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2 bTEzL3BhdGNoZXMvcHBjMzItY29tcGlsZXItcnQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2xsdm0xMy90ZW1wbGF0ZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEz L3VwZGF0ZQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4 IDhmMTcxYzg1ZDk5Yi4uMzQ2OTZlNTQ4YzgzIDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisr KyBiL2NvbW1vbi9zaGxpYnMKQEAgLTk3MywxMSArOTczLDEyIEBAIGxpYnVjaGFyZGV0LnNvLjAg dWNoYXJkZXQtMC4wLjZfMQogbGliZ3Rrc291cmNldmlld21tLTMuMC5zby4wIGd0a3NvdXJjZXZp ZXdtbS0zLjIuMF8xCiBsaWJ5YWpsLnNvLjIgeWFqbC0yLjAuMV8xCiBsaWJjb25mdXNlLnNvLjIg Y29uZnVzZS0zLjIuMV8xCi1saWJsbGRiLnNvLjEyIGxsZGItMTIuMC4wXzEKLWxpYmNsYW5nLnNv LjEyIGxpYmNsYW5nLTEyLjAuMF8xCi1saWJjbGFuZy1jcHAuc28uMTIgbGliY2xhbmctY3BwLTEy LjAuMF8xCitsaWJsbGRiLnNvLjEzIGxsZGItMTMuMC4wXzEKK2xpYmNsYW5nLnNvLjEzIGxpYmNs YW5nLTEzLjAuMF8xCitsaWJjbGFuZy1jcHAuc28uMTMgbGliY2xhbmctY3BwLTEzLjAuMF8xCiBs aWJMTFZNLTExLnNvIGxpYmxsdm0xMS0xMS4wLjBfMQogbGliTExWTS0xMi5zbyBsaWJsbHZtMTIt MTIuMC4wXzEKK2xpYkxMVk0tMTMuc28gbGlibGx2bTEzLTEzLjAuMF8xCiBsaWJpc29mcy5zby42 IGxpYmlzb2ZzLTAuNi4yNF8xCiBsaWJtcGFjay5zby4wIGxpYm1wYWNrLTEuMC41XzEKIGxpYkdl b0lQLnNvLjEgbGliZ2VvaXAtMS40LjhfMQpAQCAtNDExNSwzICs0MTE2LDEyIEBAIGxpYmp2bS5z byBvcGVuamRrMTctanJlLTE3LjAuMSsxMl8xCiBsaWJydHRvcG8uc28uMSBsaWJydHRvcG8tMS4x LjBfMQogbGlic3BhdGlhbGl0ZS5zby43IGxpYnNwYXRpYWxpdGUtNS4wLjFfMQogbW9kX3NwYXRp YWxpdGUuc28uNyBsaWJzcGF0aWFsaXRlLTUuMC4xXzEKK2xpYm9tcC5zbyBsaWJvbXAtMTMuMC4w XzEKK2xpYm9tcHRhcmdldC5ydGwuYW1kZ3B1LnNvIGxpYm9tcC0xMy4wLjBfMQorbGlib21wdGFy Z2V0LnJ0bC5jdWRhLnNvIGxpYm9tcC0xMy4wLjBfMQorbGlib21wdGFyZ2V0LnJ0bC54ODZfNjQu c28gbGlib21wLTEzLjAuMF8xCitsaWJhcmNoZXIuc28gbGlib21wLTEzLjAuMF8xCitsaWJvbXB0 YXJnZXQuc28gbGlib21wLTEzLjAuMF8xCitsaWJsbGRiSW50ZWxGZWF0dXJlcy5zby4xMyBsbGRi LTEzLjAuMF8xCitsaWJMVE8uc28uMTMgbGx2bTEzLTEzLjAuMF8xCitsaWJSZW1hcmtzLnNvLjEz IGxsdm0xMy0xMy4wLjBfMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jbGFuZyBiL3NyY3BrZ3MvY2xh bmcKaW5kZXggY2Q2MGZkN2E5ODFiLi5kNjM2NmQ3ZDNiOTUgMTIwMDAwCi0tLSBhL3NyY3BrZ3Mv Y2xhbmcKKysrIGIvc3JjcGtncy9jbGFuZwpAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvc3JjcGtncy9jbGFuZy1hbmFseXplciBiL3NyY3BrZ3MvY2xhbmctYW5hbHl6ZXIK aW5kZXggY2Q2MGZkN2E5ODFiLi5kNjM2NmQ3ZDNiOTUgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvY2xh bmctYW5hbHl6ZXIKKysrIGIvc3JjcGtncy9jbGFuZy1hbmFseXplcgpAQCAtMSArMSBAQAotbGx2 bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jbGFuZy10b29scy1leHRyYSBiL3NyY3Br Z3MvY2xhbmctdG9vbHMtZXh0cmEKaW5kZXggY2Q2MGZkN2E5ODFiLi5kNjM2NmQ3ZDNiOTUgMTIw MDAwCi0tLSBhL3NyY3BrZ3MvY2xhbmctdG9vbHMtZXh0cmEKKysrIGIvc3JjcGtncy9jbGFuZy10 b29scy1leHRyYQpAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9saWJjbGFuZyBiL3NyY3BrZ3MvbGliY2xhbmcKaW5kZXggY2Q2MGZkN2E5ODFiLi5kNjM2NmQ3 ZDNiOTUgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGliY2xhbmcKKysrIGIvc3JjcGtncy9saWJjbGFu ZwpAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEz ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJjbGFu Zy1jcHAgYi9zcmNwa2dzL2xpYmNsYW5nLWNwcAppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdk M2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJjbGFuZy1jcHAKKysrIGIvc3JjcGtncy9saWJj bGFuZy1jcHAKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK K2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bGliY3h4IGIvc3JjcGtncy9saWJjeHgKaW5kZXggY2Q2MGZkN2E5ODFiLi5kNjM2NmQ3ZDNiOTUg MTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGliY3h4CisrKyBiL3NyY3BrZ3MvbGliY3h4CkBAIC0xICsx IEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmN4eC1kZXZlbCBiL3Ny Y3BrZ3MvbGliY3h4LWRldmVsCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEyMDAw MAotLS0gYS9zcmNwa2dzL2xpYmN4eC1kZXZlbAorKysgYi9zcmNwa2dzL2xpYmN4eC1kZXZlbApA QCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEzClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJjeHhhYmkg Yi9zcmNwa2dzL2xpYmN4eGFiaQppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAw MDAKLS0tIGEvc3JjcGtncy9saWJjeHhhYmkKKysrIGIvc3JjcGtncy9saWJjeHhhYmkKQEAgLTEg KzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliY3h4YWJpLWRldmVs IGIvc3JjcGtncy9saWJjeHhhYmktZGV2ZWwKaW5kZXggY2Q2MGZkN2E5ODFiLi5kNjM2NmQ3ZDNi OTUgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGliY3h4YWJpLWRldmVsCisrKyBiL3NyY3BrZ3MvbGli Y3h4YWJpLWRldmVsCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNw a2dzL2xpYmxsdm0xMyBiL3NyY3BrZ3MvbGlibGx2bTEzCm5ldyBmaWxlIG1vZGUgMTIwMDAwCmlu ZGV4IDAwMDAwMDAwMDAwMC4uZDYzNjZkN2QzYjk1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9saWJsbHZtMTMKQEAgLTAsMCArMSBAQAorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJvbXAgYi9zcmNwa2dzL2xpYm9tcAppbmRleCBj ZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJvbXAKKysr IGIvc3JjcGtncy9saWJvbXAKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbGlib21wLWRldmVsIGIvc3JjcGtncy9saWJvbXAtZGV2ZWwKaW5kZXggY2Q2MGZk N2E5ODFiLi5kNjM2NmQ3ZDNiOTUgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGlib21wLWRldmVsCisr KyBiL3NyY3BrZ3MvbGlib21wLWRldmVsCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg LS1naXQgYS9zcmNwa2dzL2xsZCBiL3NyY3BrZ3MvbGxkCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYz NjZkN2QzYjk1IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xsZAorKysgYi9zcmNwa2dzL2xsZApAQCAt MSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEzClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbGQtZGV2ZWwgYi9z cmNwa2dzL2xsZC1kZXZlbAppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAK LS0tIGEvc3JjcGtncy9sbGQtZGV2ZWwKKysrIGIvc3JjcGtncy9sbGQtZGV2ZWwKQEAgLTEgKzEg QEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGxkYiBiL3NyY3BrZ3MvbGxk YgppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9s bGRiCisrKyBiL3NyY3BrZ3MvbGxkYgpAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9sbGRiLWRldmVsIGIvc3JjcGtncy9sbGRiLWRldmVsCmluZGV4IGNkNjBm ZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xsZGItZGV2ZWwKKysr IGIvc3JjcGtncy9sbGRiLWRldmVsCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xsdm0tbGlidW53aW5kIGIvc3JjcGtncy9sbHZtLWxpYnVud2luZAppbmRl eCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9sbHZtLWxp YnVud2luZAorKysgYi9zcmNwa2dzL2xsdm0tbGlidW53aW5kCkBAIC0xICsxIEBACi1sbHZtMTIK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0tbGlidW53aW5kLWRldmVsIGIvc3JjcGtn cy9sbHZtLWxpYnVud2luZC1kZXZlbAppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAx MjAwMDAKLS0tIGEvc3JjcGtncy9sbHZtLWxpYnVud2luZC1kZXZlbAorKysgYi9zcmNwa2dzL2xs dm0tbGlidW53aW5kLWRldmVsCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS9zcmNwa2dzL2xsdm0xMy9maWxlcy9sbHZtLUNvbmZpZy1sbHZtLWNvbmZpZy5oIGIvc3JjcGtn cy9sbHZtMTMvZmlsZXMvbGx2bS1Db25maWctbGx2bS1jb25maWcuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJmYTA4YzliZTY5NgotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvbGx2bTEzL2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmgKQEAgLTAsMCAr MSw5IEBACisjaW5jbHVkZSA8Yml0cy93b3Jkc2l6ZS5oPgorCisjaWYgX19XT1JEU0laRSA9PSAz MgorI2luY2x1ZGUgImxsdm0tY29uZmlnLTMyLmgiCisjZWxpZiBfX1dPUkRTSVpFID09IDY0Cisj aW5jbHVkZSAibGx2bS1jb25maWctNjQuaCIKKyNlbHNlCisjZXJyb3IgIlVua25vd24gd29yZCBz aXplIgorI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAw MS1maXgtdW53aW5kLWNoYWluLWluY2x1c2lvbi5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNo ZXMvY2xhbmctMDAxLWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTRlYWE3NzgzZTdhCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jbGFuZy0wMDEtZml4LXVud2luZC1jaGFpbi1p bmNsdXNpb24ucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSAzNTI5NzQxNjlmMGQyYjVkYTNk NTMyMWY1ODhmNWUzYjU5NDEzMzBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5k cmVhIEJyYW5jYWxlb25pIDxtaXdheGVAZ21haWwuY29tPgorRGF0ZTogVHVlLCA4IFNlcCAyMDE1 IDIyOjE0OjU3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMi83XSBmaXggdW53aW5kIGNoYWluIGlu Y2x1c2lvbgorCistLS0KKyBsaWIvSGVhZGVycy91bndpbmQuaCB8IDkgKysrKystLS0tCisgMSBm aWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdp dCBhL2xpYi9IZWFkZXJzL3Vud2luZC5oIGIvbGliL0hlYWRlcnMvdW53aW5kLmgKK2luZGV4IDMw M2Q3OTIuLjQ0ZTEwY2MgMTAwNjQ0CistLS0gYS9jbGFuZy9saWIvSGVhZGVycy91bndpbmQuaAor KysrIGIvY2xhbmcvbGliL0hlYWRlcnMvdW53aW5kLmgKK0BAIC05LDkgKzksNiBAQAorIAorIC8q IFNlZSAiRGF0YSBEZWZpbml0aW9ucyBmb3IgbGliZ2NjX3MiIGluIHRoZSBMaW51eCBTdGFuZGFy ZCBCYXNlLiovCisgCistI2lmbmRlZiBfX0NMQU5HX1VOV0lORF9ICistI2RlZmluZSBfX0NMQU5H X1VOV0lORF9ICistCisgI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBfX2hhc19pbmNsdWRlX25l eHQoPHVud2luZC5oPikKKyAvKiBEYXJ3aW4gKGZyb20gMTEueCBvbikgcHJvdmlkZSBhbiB1bndp bmQuaC4gSWYgdGhhdCdzIGF2YWlsYWJsZSwKKyAgKiB1c2UgaXQuIGxpYnVud2luZCB3cmFwcyBz b21lIG9mIGl0cyBkZWZpbml0aW9ucyBpbiAjaWZkZWYgX0dOVV9TT1VSQ0UsCitAQCAtMzksNiAr MzYsOSBAQAorICMgZW5kaWYKKyAjZWxzZQorIAorKyNpZm5kZWYgX19DTEFOR19VTldJTkRfSAor KyNkZWZpbmUgX19DTEFOR19VTldJTkRfSAorKworICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAKKyAj aWZkZWYgX19jcGx1c3BsdXMKK0BAIC0zMjIsNiArMzIyLDcgQEAgX1Vud2luZF9QdHIgX1Vud2lu ZF9HZXRUZXh0UmVsQmFzZShzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICopOworIH0KKyAjZW5kaWYK KyAKKysjZW5kaWYgLyogX19DTEFOR19VTldJTkRfSCAqLworKworICNlbmRpZgorIAorLSNlbmRp ZiAvKiBfX0NMQU5HX1VOV0lORF9IICovCistLSAKKzIuNS4xCmRpZmYgLS1naXQgYS9zcmNwa2dz L2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoIGIvc3JjcGtn cy9sbHZtMTMvcGF0Y2hlcy9jbGFuZy0wMDItYWRkLW11c2wtdHJpcGxlcy5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI1Njg4ZDQwZGJjMgotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDAyLWFkZC1tdXNsLXRyaXBs ZXMucGF0Y2gKQEAgLTAsMCArMSwxMTAgQEAKKy0tLSBhL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENo YWlucy9HbnUuY3BwCisrKysgYi9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvR251LmNwcAor QEAgLTIwODYsNyArMjA4Niw4IEBAIHZvaWQgR2VuZXJpY19HQ0M6OkdDQ0luc3RhbGxhdGlvbkRl dGVjdG9yOjpBZGREZWZhdWx0R0NDUHJlZml4ZXMoCisgICBzdGF0aWMgY29uc3QgY2hhciAqY29u c3QgQVJNSEZUcmlwbGVzW10gPSB7ImFybS1saW51eC1nbnVlYWJpaGYiLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcm12N2hsLXJlZGhhdC1saW51eC1n bnVlYWJpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi YXJtdjZobC1zdXNlLWxpbnV4LWdudWVhYmkiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJhcm12N2hsLXN1c2UtbGludXgtZ251ZWFiaSJ9OworKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcm12N2hsLXN1c2UtbGlu dXgtZ251ZWFiaSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImFybXY3bC1saW51eC1nbnVlYWJpaGYifTsKKyAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25z dCBBUk1lYkxpYkRpcnNbXSA9IHsiL2xpYiJ9OworICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0 IEFSTWViVHJpcGxlc1tdID0geyJhcm1lYi1saW51eC1nbnVlYWJpIiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWItbGludXgtYW5kcm9pZGVhYmki fTsKK0BAIC0yMTUzLDggKzIxNTQsNyBAQCB2b2lkIEdlbmVyaWNfR0NDOjpHQ0NJbnN0YWxsYXRp b25EZXRlY3Rvcjo6QWRkRGVmYXVsdEdDQ1ByZWZpeGVzKAorICAgICAgICJwb3dlcnBjNjQtc3Vz ZS1saW51eCIsICJwb3dlcnBjLW1vbnRhdmlzdGEtbGludXhzcGUifTsKKyAgIHN0YXRpYyBjb25z dCBjaGFyICpjb25zdCBQUENMRUxpYkRpcnNbXSA9IHsiL2xpYjMyIiwgIi9saWIifTsKKyAgIHN0 YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUENMRVRyaXBsZXNbXSA9IHsicG93ZXJwY2xlLWxpbnV4 LWdudSIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBv d2VycGNsZS11bmtub3duLWxpbnV4LWdudSIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInBvd2VycGNsZS1saW51eC1tdXNsIn07CisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGNsZS11bmtub3duLWxpbnV4 LWdudSJ9OworIAorICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQzY0TGliRGlyc1tdID0g eyIvbGliNjQiLCAiL2xpYiJ9OworICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQzY0VHJp cGxlc1tdID0geworQEAgLTIyMzUsNiArMjIzNSw4NyBAQCB2b2lkIEdlbmVyaWNfR0NDOjpHQ0NJ bnN0YWxsYXRpb25EZXRlY3Rvcjo6QWRkRGVmYXVsdEdDQ1ByZWZpeGVzKAorICAgICByZXR1cm47 CisgICB9CisgCisrICBpZiAoVGFyZ2V0VHJpcGxlLmlzTXVzbCgpKSB7CisrICAgIHN0YXRpYyBj b25zdCBjaGFyICpjb25zdCBBQXJjaDY0TXVzbFRyaXBsZXNbXSA9IHsiYWFyY2g2NC1saW51eC1t dXNsIn07CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBBUk1IRk11c2xUcmlwbGVzW10g PSB7CisrICAgICAgICAiYXJtLWxpbnV4LW11c2xlYWJpaGYiLCAiYXJtdjdsLWxpbnV4LW11c2xl YWJpaGYiCisrICAgIH07CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBBUk1NdXNsVHJp cGxlc1tdID0geyJhcm0tbGludXgtbXVzbGVhYmkifTsKKysgICAgc3RhdGljIGNvbnN0IGNoYXIg KmNvbnN0IFg4Nl82NE11c2xUcmlwbGVzW10gPSB7Ing4Nl82NC1saW51eC1tdXNsIn07CisrICAg IHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBYODZNdXNsVHJpcGxlc1tdID0geyJpNjg2LWxpbnV4 LW11c2wifTsKKysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IE1JUFNNdXNsVHJpcGxlc1td ID0geworKyAgICAgICAgIm1pcHMtbGludXgtbXVzbCIsICJtaXBzZWwtbGludXgtbXVzbCIsCisr ICAgICAgICAibWlwc2VsLWxpbnV4LW11c2xoZiIsICJtaXBzLWxpbnV4LW11c2xoZiIKKysgICAg fTsKKysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQ011c2xUcmlwbGVzW10gPSB7InBv d2VycGMtbGludXgtbXVzbCJ9OworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDTEVN dXNsVHJpcGxlc1tdID0geyJwb3dlcnBjbGUtbGludXgtbXVzbCJ9OworKyAgICBzdGF0aWMgY29u c3QgY2hhciAqY29uc3QgUFBDNjRNdXNsVHJpcGxlc1tdID0geyJwb3dlcnBjNjQtbGludXgtbXVz bCJ9OworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDNjRMRU11c2xUcmlwbGVzW10g PSB7InBvd2VycGM2NGxlLWxpbnV4LW11c2wifTsKKysKKysgICAgc3dpdGNoIChUYXJnZXRUcmlw bGUuZ2V0QXJjaCgpKSB7CisrICAgIGNhc2UgbGx2bTo6VHJpcGxlOjphYXJjaDY0OgorKyAgICAg IExpYkRpcnMuYXBwZW5kKGJlZ2luKEFBcmNoNjRMaWJEaXJzKSwgZW5kKEFBcmNoNjRMaWJEaXJz KSk7CisrICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oQUFyY2g2NE11c2xUcmlwbGVz KSwgZW5kKEFBcmNoNjRNdXNsVHJpcGxlcykpOworKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5k KGJlZ2luKEFBcmNoNjRMaWJEaXJzKSwgZW5kKEFBcmNoNjRMaWJEaXJzKSk7CisrICAgICAgQmlh cmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oQUFyY2g2NE11c2xUcmlwbGVzKSwgZW5kKEFB cmNoNjRNdXNsVHJpcGxlcykpOworKyAgICAgIGJyZWFrOworKyAgICBjYXNlIGxsdm06OlRyaXBs ZTo6YXJtOgorKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKEFSTUxpYkRpcnMpLCBlbmQoQVJN TGliRGlycykpOworKyAgICAgIGlmIChUYXJnZXRUcmlwbGUuZ2V0RW52aXJvbm1lbnQoKSA9PSBs bHZtOjpUcmlwbGU6Ok11c2xFQUJJSEYpIHsKKysgICAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5k KGJlZ2luKEFSTUhGTXVzbFRyaXBsZXMpLCBlbmQoQVJNSEZNdXNsVHJpcGxlcykpOworKyAgICAg IH0gZWxzZSB7CisrICAgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBUk1NdXNsVHJp cGxlcyksIGVuZChBUk1NdXNsVHJpcGxlcykpOworKyAgICAgIH0KKysgICAgICBicmVhazsKKysg ICAgY2FzZSBsbHZtOjpUcmlwbGU6Ong4Nl82NDoKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdp bihYODZfNjRMaWJEaXJzKSwgZW5kKFg4Nl82NExpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlh c2VzLmFwcGVuZChiZWdpbihYODZfNjRNdXNsVHJpcGxlcyksIGVuZChYODZfNjRNdXNsVHJpcGxl cykpOworKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFg4NkxpYkRpcnMpLCBlbmQo WDg2TGliRGlycykpOworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4 Nk11c2xUcmlwbGVzKSwgZW5kKFg4Nk11c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAg IGNhc2UgbGx2bTo6VHJpcGxlOjp4ODY6CisrICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2 TGliRGlycyksIGVuZChYODZMaWJEaXJzKSk7CisrICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQo YmVnaW4oWDg2TXVzbFRyaXBsZXMpLCBlbmQoWDg2TXVzbFRyaXBsZXMpKTsKKysgICAgICBCaWFy Y2hMaWJEaXJzLmFwcGVuZChiZWdpbihYODZfNjRMaWJEaXJzKSwgZW5kKFg4Nl82NExpYkRpcnMp KTsKKysgICAgICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihYODZfNjRNdXNsVHJp cGxlcyksIGVuZChYODZfNjRNdXNsVHJpcGxlcykpOworKyAgICAgIGJyZWFrOworKyAgICBjYXNl IGxsdm06OlRyaXBsZTo6bWlwczoKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihNSVBTTGli RGlycyksIGVuZChNSVBTTGliRGlycykpOworKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJl Z2luKE1JUFNNdXNsVHJpcGxlcyksIGVuZChNSVBTTXVzbFRyaXBsZXMpKTsKKysgICAgICBicmVh azsKKysgICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzoKKysgICAgICBMaWJEaXJzLmFwcGVuZChi ZWdpbihQUENMaWJEaXJzKSwgZW5kKFBQQ0xpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2Vz LmFwcGVuZChiZWdpbihQUENNdXNsVHJpcGxlcyksIGVuZChQUENNdXNsVHJpcGxlcykpOworKyAg ICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQzY0TGliRGlycyksIGVuZChQUEM2NExp YkRpcnMpKTsKKysgICAgICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUEM2NE11 c2xUcmlwbGVzKSwgZW5kKFBQQzY0TXVzbFRyaXBsZXMpKTsKKysgICAgICBicmVhazsKKysgICAg Y2FzZSBsbHZtOjpUcmlwbGU6OnBwY2xlOgorKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQ Q0xFTGliRGlycyksIGVuZChQUENMRUxpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFw cGVuZChiZWdpbihQUENMRU11c2xUcmlwbGVzKSwgZW5kKFBQQ0xFTXVzbFRyaXBsZXMpKTsKKysg ICAgICBCaWFyY2hMaWJEaXJzLmFwcGVuZChiZWdpbihQUEM2NExFTGliRGlycyksIGVuZChQUEM2 NExFTGliRGlycykpOworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQ QzY0TEVNdXNsVHJpcGxlcyksIGVuZChQUEM2NExFTXVzbFRyaXBsZXMpKTsKKysgICAgICBicmVh azsKKysgICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0OgorKyAgICAgIExpYkRpcnMuYXBwZW5k KGJlZ2luKFBQQzY0TGliRGlycyksIGVuZChQUEM2NExpYkRpcnMpKTsKKysgICAgICBUcmlwbGVB bGlhc2VzLmFwcGVuZChiZWdpbihQUEM2NE11c2xUcmlwbGVzKSwgZW5kKFBQQzY0TXVzbFRyaXBs ZXMpKTsKKysgICAgICBCaWFyY2hMaWJEaXJzLmFwcGVuZChiZWdpbihQUENMaWJEaXJzKSwgZW5k KFBQQ0xpYkRpcnMpKTsKKysgICAgICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQ UENNdXNsVHJpcGxlcyksIGVuZChQUENNdXNsVHJpcGxlcykpOworKyAgICAgIGJyZWFrOworKyAg ICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjRsZToKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdp bihQUEM2NExFTGliRGlycyksIGVuZChQUEM2NExFTGliRGlycykpOworKyAgICAgIFRyaXBsZUFs aWFzZXMuYXBwZW5kKGJlZ2luKFBQQzY0TEVNdXNsVHJpcGxlcyksIGVuZChQUEM2NExFTXVzbFRy aXBsZXMpKTsKKysgICAgICBCaWFyY2hMaWJEaXJzLmFwcGVuZChiZWdpbihQUENMRUxpYkRpcnMp LCBlbmQoUFBDTEVMaWJEaXJzKSk7CisrICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQo YmVnaW4oUFBDTEVNdXNsVHJpcGxlcyksIGVuZChQUENMRU11c2xUcmlwbGVzKSk7CisrICAgICAg YnJlYWs7CisrICAgIGRlZmF1bHQ6CisrICAgICAgYnJlYWs7CisrICAgIH0KKysgICAgVHJpcGxl QWxpYXNlcy5wdXNoX2JhY2soVGFyZ2V0VHJpcGxlLnN0cigpKTsKKysgICAgaWYgKFRhcmdldFRy aXBsZS5zdHIoKSAhPSBCaWFyY2hUcmlwbGUuc3RyKCkpCisrICAgICAgQmlhcmNoVHJpcGxlQWxp YXNlcy5wdXNoX2JhY2soQmlhcmNoVHJpcGxlLnN0cigpKTsKKysgICAgcmV0dXJuOworKyAgfQor KworICAgLy8gQW5kcm9pZCB0YXJnZXRzIHNob3VsZCBub3QgdXNlIEdOVS9MaW51eCB0b29scyBv ciBsaWJyYXJpZXMuCisgICBpZiAoVGFyZ2V0VHJpcGxlLmlzQW5kcm9pZCgpKSB7CisgICAgIHN0 YXRpYyBjb25zdCBjaGFyICpjb25zdCBBQXJjaDY0QW5kcm9pZFRyaXBsZXNbXSA9IHsKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDAzLXBwYzY0LWR5bmFtaWMtbGlu a2VyLXBhdGgucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1k eW5hbWljLWxpbmtlci1wYXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uNGFkNjQxMmQxZTZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0aC5wYXRjaApAQCAtMCww ICsxLDEzIEBACistLS0gYS9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvTGludXguY3BwCisr KysgYi9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvTGludXguY3BwCitAQCAtNTA0LDEwICs1 MDQsNiBAQCBzdGQ6OnN0cmluZyBMaW51eDo6Z2V0RHluYW1pY0xpbmtlcihjb25zdCBBcmdMaXN0 ICZBcmdzKSBjb25zdCB7CisgICAgIExvYWRlciA9ICJsZC5zby4xIjsKKyAgICAgYnJlYWs7Cisg ICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjQ6CistICAgIExpYkRpciA9ICJsaWI2NCI7CistICAg IExvYWRlciA9CistICAgICAgICAodG9vbHM6OnBwYzo6aGFzUFBDQWJpQXJnKEFyZ3MsICJlbGZ2 MiIpKSA/ICJsZDY0LnNvLjIiIDogImxkNjQuc28uMSI7CistICAgIGJyZWFrOworICAgY2FzZSBs bHZtOjpUcmlwbGU6OnBwYzY0bGU6CisgICAgIExpYkRpciA9ICJsaWI2NCI7CisgICAgIExvYWRl ciA9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1t dXNsLWVsZnYyLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jbGFuZy0wMDQtcHBjNjQt bXVzbC1lbGZ2Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjIxZmM4MDAzYzVmMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMv Y2xhbmctMDA0LXBwYzY0LW11c2wtZWxmdjIucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorLS0tIGEv Y2xhbmcvbGliL0Jhc2ljL1RhcmdldHMvUFBDLmgKKysrKyBiL2NsYW5nL2xpYi9CYXNpYy9UYXJn ZXRzL1BQQy5oCitAQCAtNDE1LDExICs0MTUsMTAgQEAgcHVibGljOgorICAgICAgIExvbmdEb3Vi bGVGb3JtYXQgPSAmbGx2bTo6QVBGbG9hdDo6SUVFRWRvdWJsZSgpOworICAgICB9IGVsc2UgaWYg KChUcmlwbGUuZ2V0QXJjaCgpID09IGxsdm06OlRyaXBsZTo6cHBjNjRsZSkpIHsKKyAgICAgICBE YXRhTGF5b3V0ID0gImUtbTplLWk2NDo2NC1uMzI6NjQiOworLSAgICAgIEFCSSA9ICJlbGZ2MiI7 CisgICAgIH0gZWxzZSB7CisgICAgICAgRGF0YUxheW91dCA9ICJFLW06ZS1pNjQ6NjQtbjMyOjY0 IjsKKy0gICAgICBBQkkgPSAiZWxmdjEiOworICAgICB9CisrICAgIEFCSSA9ICJlbGZ2MiI7Cisg CisgICAgIGlmIChUcmlwbGUuaXNPU0ZyZWVCU0QoKSB8fCBUcmlwbGUuaXNPU09wZW5CU0QoKSB8 fCBUcmlwbGUuaXNNdXNsKCkpIHsKKyAgICAgICBMb25nRG91YmxlV2lkdGggPSBMb25nRG91Ymxl QWxpZ24gPSA2NDsKKy0tLSBhL2NsYW5nL2xpYi9Db2RlR2VuL1RhcmdldEluZm8uY3BwCisrKysg Yi9jbGFuZy9saWIvQ29kZUdlbi9UYXJnZXRJbmZvLmNwcAorQEAgLTEwOTI3LDkgKzEwOTI3LDkg QEAgY29uc3QgVGFyZ2V0Q29kZUdlbkluZm8gJkNvZGVHZW5Nb2R1bGU6OmdldFRhcmdldENvZGVH ZW5JbmZvKCkgeworICAgICAgIHJldHVybiBTZXRDR0luZm8obmV3IEFJWFRhcmdldENvZGVHZW5J bmZvKFR5cGVzLCAvKklzNjRCaXQqLyB0cnVlKSk7CisgCisgICAgIGlmIChUcmlwbGUuaXNPU0Jp bkZvcm1hdEVMRigpKSB7CistICAgICAgUFBDNjRfU1ZSNF9BQklJbmZvOjpBQklLaW5kIEtpbmQg PSBQUEM2NF9TVlI0X0FCSUluZm86OkVMRnYxOworLSAgICAgIGlmIChnZXRUYXJnZXQoKS5nZXRB QkkoKSA9PSAiZWxmdjIiKQorLSAgICAgICAgS2luZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxG djI7CisrICAgICAgUFBDNjRfU1ZSNF9BQklJbmZvOjpBQklLaW5kIEtpbmQgPSBQUEM2NF9TVlI0 X0FCSUluZm86OkVMRnYyOworKyAgICAgIGlmIChnZXRUYXJnZXQoKS5nZXRBQkkoKSA9PSAiZWxm djEiKQorKyAgICAgICAgS2luZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjE7CisgICAgICAg Ym9vbCBJc1NvZnRGbG9hdCA9IENvZGVHZW5PcHRzLkZsb2F0QUJJID09ICJzb2Z0IjsKKyAKKyAg ICAgICByZXR1cm4gU2V0Q0dJbmZvKAorLS0tIGEvY2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5z L0NsYW5nLmNwcAorKysrIGIvY2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0NsYW5nLmNwcAor QEAgLTE5MjAsMTQgKzE5MjAsNyBAQCB2b2lkIENsYW5nOjpBZGRQUENUYXJnZXRBcmdzKGNvbnN0 IEFyZ0xpc3QgJkFyZ3MsCisgICBjb25zdCBsbHZtOjpUcmlwbGUgJlQgPSBnZXRUb29sQ2hhaW4o KS5nZXRUcmlwbGUoKTsKKyAgIGlmIChULmlzT1NCaW5Gb3JtYXRFTEYoKSkgeworICAgICBzd2l0 Y2ggKGdldFRvb2xDaGFpbigpLmdldEFyY2goKSkgeworLSAgICBjYXNlIGxsdm06OlRyaXBsZTo6 cHBjNjQ6IHsKKy0gICAgICBpZiAoKFQuaXNPU0ZyZWVCU0QoKSAmJiBULmdldE9TTWFqb3JWZXJz aW9uKCkgPj0gMTMpIHx8CistICAgICAgICAgIFQuaXNPU09wZW5CU0QoKSB8fCBULmlzTXVzbCgp KQorLSAgICAgICAgQUJJTmFtZSA9ICJlbGZ2MiI7CistICAgICAgZWxzZQorLSAgICAgICAgQUJJ TmFtZSA9ICJlbGZ2MSI7CistICAgICAgYnJlYWs7CistICAgIH0KKysgICAgY2FzZSBsbHZtOjpU cmlwbGU6OnBwYzY0OgorICAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjRsZToKKyAgICAgICBB QklOYW1lID0gImVsZnYyIjsKKyAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2 bTEzL3BhdGNoZXMvY29tcGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaCBiL3NyY3BrZ3Mv bGx2bTEzL3BhdGNoZXMvY29tcGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg5M2MwNTlkN2I4ZAotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY29tcGlsZXItcnQtYWFyY2g2NC11Y29u dGV4dC5wYXRjaApAQCAtMCwwICsxLDExIEBACistLS0gYS9jb21waWxlci1ydC9saWIvc2FuaXRp emVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY3BwLm9yaWcKKysrKyBiL2NvbXBpbGVyLXJ0L2xp Yi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5jcHAKK0BAIC0xNzk5LDcgKzE3OTks NyBAQAorIAorIHN0YXRpYyBib29sIEFhcmNoNjRHZXRFU1IodWNvbnRleHRfdCAqdWNvbnRleHQs IHU2NCAqZXNyKSB7CisgICBzdGF0aWMgY29uc3QgdTMyIGtFc3JNYWdpYyA9IDB4NDU1MzUyMDE7 CistICB1OCAqYXV4ID0gdWNvbnRleHQtPnVjX21jb250ZXh0Ll9fcmVzZXJ2ZWQ7CisrICB1OCAq YXV4ID0gcmVpbnRlcnByZXRfY2FzdDx1OCAqPih1Y29udGV4dC0+dWNfbWNvbnRleHQuX19yZXNl cnZlZCk7CisgICB3aGlsZSAodHJ1ZSkgeworICAgICBfYWFyY2g2NF9jdHggKmN0eCA9IChfYWFy Y2g2NF9jdHggKilhdXg7CisgICAgIGlmIChjdHgtPnNpemUgPT0gMCkgYnJlYWs7CmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNhbml0aXplci1wcGM2NC1t dXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jb21waWxlci1ydC1zYW5pdGl6ZXIt cHBjNjQtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjM1ZjE2ZDI0ZjM0MAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMv Y29tcGlsZXItcnQtc2FuaXRpemVyLXBwYzY0LW11c2wucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAor LS0tIGEvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNw cAorKysrIGIvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4 LmNwcAorQEAgLTc0LDYgKzc0LDEwIEBACisgI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisgI2Vu ZGlmCisgCisrI2lmIFNBTklUSVpFUl9MSU5VWCAmJiBkZWZpbmVkKF9fcG93ZXJwY19fKQorKyNp bmNsdWRlIDxhc20vcHRyYWNlLmg+CisrI2VuZGlmCisrCisgI2lmIFNBTklUSVpFUl9MSU5VWCAm JiAhU0FOSVRJWkVSX0FORFJPSUQKKyAjaW5jbHVkZSA8c3lzL3BlcnNvbmFsaXR5Lmg+CisgI2Vu ZGlmCistLS0gYS9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfcGxh dGZvcm1fbGltaXRzX3Bvc2l4LmNwcAorKysrIGIvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9j b21tb24vc2FuaXRpemVyX3BsYXRmb3JtX2xpbWl0c19wb3NpeC5jcHAKK0BAIC05Miw3ICs5Miw3 IEBACisgIyBpbmNsdWRlIDx1dGltZS5oPgorICMgaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgorICNp ZiBkZWZpbmVkKF9fbWlwczY0KSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9f YXJtX18pIHx8IFwKKy0gICAgU0FOSVRJWkVSX1JJU0NWNjQKKysgICAgZGVmaW5lZChfX3Bvd2Vy cGNfXykgfHwgU0FOSVRJWkVSX1JJU0NWNjQKKyAjICBpbmNsdWRlIDxhc20vcHRyYWNlLmg+Cisg IyAgaWZkZWYgX19hcm1fXworIHR5cGVkZWYgc3RydWN0IHVzZXJfZnByZWdzIGVsZl9mcHJlZ3Nl dF90OworLS0tIGEvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX3N0 b3B0aGV3b3JsZF9saW51eF9saWJjZGVwLmNwcAorKysrIGIvY29tcGlsZXItcnQvbGliL3Nhbml0 aXplcl9jb21tb24vc2FuaXRpemVyX3N0b3B0aGV3b3JsZF9saW51eF9saWJjZGVwLmNwcAorQEAg LTMxLDcgKzMxLDcgQEAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+IC8vIGZvciBwaWRfdAorICNp bmNsdWRlIDxzeXMvdWlvLmg+IC8vIGZvciBpb3ZlYworICNpbmNsdWRlIDxlbGYuaD4gLy8gZm9y IE5UX1BSU1RBVFVTCistI2lmIChkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBTQU5JVElaRVJfUklT Q1Y2NCkgJiYgIVNBTklUSVpFUl9BTkRST0lECisrI2lmIChkZWZpbmVkKF9fYWFyY2g2NF9fKSB8 fCBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBTQU5JVElaRVJfUklTQ1Y2NCkgJiYgIVNBTklUSVpF Ul9BTkRST0lECisgLy8gR0xJQkMgMi4yMCsgc3lzL3VzZXIgZG9lcyBub3QgaW5jbHVkZSBhc20v cHRyYWNlLmgKKyAjIGluY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKyAjZW5kaWYKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY29tcGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNo IGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jb21waWxlci1ydC14cmF5LXBwYzY0LW11c2wucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kMGI2MWM4MGM4OTcK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NvbXBpbGVyLXJ0LXhy YXktcHBjNjQtbXVzbC5wYXRjaApAQCAtMCwwICsxLDYyIEBACistLS0gYS9jb21waWxlci1ydC9s aWIveHJheS94cmF5X3Bvd2VycGM2NC5pbmMKKysrKyBiL2NvbXBpbGVyLXJ0L2xpYi94cmF5L3hy YXlfcG93ZXJwYzY0LmluYworQEAgLTEyLDcgKzEyLDEzIEBACisgCisgI2luY2x1ZGUgPGNzdGRp bnQ+CisgI2luY2x1ZGUgPG11dGV4PgorKyNpZmRlZiBfX0dMSUJDX18KKyAjaW5jbHVkZSA8c3lz L3BsYXRmb3JtL3BwYy5oPgorKyNlbHNlCisrI2luY2x1ZGUgPGNjdHlwZT4KKysjaW5jbHVkZSA8 Y3N0cmluZz4KKysjaW5jbHVkZSA8Y3N0ZGxpYj4KKysjZW5kaWYKKyAKKyAjaW5jbHVkZSAieHJh eV9kZWZzLmgiCisgCitAQCAtMjAsMTMgKzI2LDQ1IEBAIG5hbWVzcGFjZSBfX3hyYXkgeworIAor IEFMV0FZU19JTkxJTkUgdWludDY0X3QgcmVhZFRTQyh1aW50OF90ICZDUFUpIFhSQVlfTkVWRVJf SU5TVFJVTUVOVCB7CisgICBDUFUgPSAwOworKyNpZmRlZiBfX0dMSUJDX18KKyAgIHJldHVybiBf X3BwY19nZXRfdGltZWJhc2UoKTsKKysjZWxzZQorKyAgcmV0dXJuIF9fYnVpbHRpbl9wcGNfZ2V0 X3RpbWViYXNlKCk7CisrI2VuZGlmCisgfQorIAorIGlubGluZSB1aW50NjRfdCBnZXRUU0NGcmVx dWVuY3koKSBYUkFZX05FVkVSX0lOU1RSVU1FTlQgeworICAgc3RhdGljIHN0ZDo6bXV0ZXggTTsK KyAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBHdWFyZChNKTsKKysjaWZkZWYgX19HTElC Q19fCisgICByZXR1cm4gX19wcGNfZ2V0X3RpbWViYXNlX2ZyZXEoKTsKKysjZWxzZQorKyAgLyog RklYTUU6IGEgbGVzcyBkaXJ0eSBpbXBsZW1lbnRhdGlvbj8gKi8KKysgIHN0YXRpYyB1aW50NjRf dCBiYXNlOworKyAgaWYgKCFiYXNlKSB7CisrICAgIEZJTEUgKmYgPSBmb3BlbigiL3Byb2MvY3B1 aW5mbyIsICJyYiIpOworKyAgICBpZiAoZikgeworKyAgICAgIHNzaXplX3QgbnI7CisrICAgICAg LyogdmlydHVhbGx5IGFsd2F5cyBiaWcgZW5vdWdoIHRvIGhvbGQgdGhlIGxpbmUgKi8KKysgICAg ICBjaGFyIGJ1Zls1MTJdOworKyAgICAgIHdoaWxlIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBm KSkgeworKyAgICAgICAgY2hhciAqcmV0ID0gc3Ryc3RyKGJ1ZiwgInRpbWViYXNlIik7CisrICAg ICAgICBpZiAoIXJldCkgeworKyAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysgICAg ICAgIHJldCArPSBzaXplb2YoInRpbWViYXNlIikgLSAxOworKyAgICAgICAgcmV0ID0gc3RyY2hy KHJldCwgJzonKTsKKysgICAgICAgIGlmICghcmV0KSB7CisrICAgICAgICAgIGNvbnRpbnVlOwor KyAgICAgICAgfQorKyAgICAgICAgYmFzZSA9IHN0cnRvdWwocmV0ICsgMSwgbnVsbHB0ciwgMTAp OworKyAgICAgICAgYnJlYWs7CisrICAgICAgfQorKyAgICAgIGZjbG9zZShmKTsKKysgICAgfQor KyAgfQorKyAgcmV0dXJuIGJhc2U7CisrI2VuZGlmCisgfQorIAorIGlubGluZSBib29sIHByb2Jl UmVxdWlyZWRDUFVGZWF0dXJlcygpIFhSQVlfTkVWRVJfSU5TVFJVTUVOVCB7CmRpZmYgLS1naXQg YS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYmN4eC1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZt MTMvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmJiZDMxZmZjMmNiMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2 bTEzL3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorLS0tIGEvbGli Y3h4L2luY2x1ZGUvbG9jYWxlCisrKysgYi9saWJjeHgvaW5jbHVkZS9sb2NhbGUKK0BAIC03NDIs NyArNzQyLDExIEBAIF9fbnVtX2dldF9zaWduZWRfaW50ZWdyYWwoY29uc3QgY2hhciogX19hLCBj b25zdCBjaGFyKiBfX2FfZW5kLAorICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxk ZWNsdHlwZShlcnJubyk+Ojp0eXBlIF9fc2F2ZV9lcnJubyA9IGVycm5vOworICAgICAgICAgZXJy bm8gPSAwOworICAgICAgICAgY2hhciAqX19wMjsKKysjaWYgZGVmaW5lZChfX2xpbnV4X18pICYm ICFkZWZpbmVkKF9fR0xJQkNfXykKKysgICAgICAgIGxvbmcgbG9uZyBfX2xsID0gc3RydG9sbChf X2EsICZfX3AyLCBfX2Jhc2UpOworKyNlbHNlCisgICAgICAgICBsb25nIGxvbmcgX19sbCA9IHN0 cnRvbGxfbChfX2EsICZfX3AyLCBfX2Jhc2UsIF9MSUJDUFBfR0VUX0NfTE9DQUxFKTsKKysjZW5k aWYKKyAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6 dHlwZSBfX2N1cnJlbnRfZXJybm8gPSBlcnJubzsKKyAgICAgICAgIGlmIChfX2N1cnJlbnRfZXJy bm8gPT0gMCkKKyAgICAgICAgICAgICBlcnJubyA9IF9fc2F2ZV9lcnJubzsKK0BAIC03ODIsNyAr Nzg2LDExIEBAIF9fbnVtX2dldF91bnNpZ25lZF9pbnRlZ3JhbChjb25zdCBjaGFyKiBfX2EsIGNv bnN0IGNoYXIqIF9fYV9lbmQsCisgICAgICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPGRl Y2x0eXBlKGVycm5vKT46OnR5cGUgX19zYXZlX2Vycm5vID0gZXJybm87CisgICAgICAgICBlcnJu byA9IDA7CisgICAgICAgICBjaGFyICpfX3AyOworKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYg IWRlZmluZWQoX19HTElCQ19fKQorKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fbGwgPSBz dHJ0b3VsbChfX2EsICZfX3AyLCBfX2Jhc2UpOworKyNlbHNlCisgICAgICAgICB1bnNpZ25lZCBs b25nIGxvbmcgX19sbCA9IHN0cnRvdWxsX2woX19hLCAmX19wMiwgX19iYXNlLCBfTElCQ1BQX0dF VF9DX0xPQ0FMRSk7CisrI2VuZGlmCisgICAgICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNl PGRlY2x0eXBlKGVycm5vKT46OnR5cGUgX19jdXJyZW50X2Vycm5vID0gZXJybm87CisgICAgICAg ICBpZiAoX19jdXJyZW50X2Vycm5vID09IDApCisgICAgICAgICAgICAgZXJybm8gPSBfX3NhdmVf ZXJybm87CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYmN4eC1wcGMucGF0 Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43YTkyZjgwMDRlMWMKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2gKQEAgLTAsMCArMSwy MiBAQAorVGhpcyBlbnN1cmVzIGBpc19pZWM1NTlgIGlzIGRlZmluZWQgY29ycmVjdGx5IHVuZGVy IGFsbCBsb25nIGRvdWJsZSBBQklzLAoraW5jbHVkaW5nIG11c2wgYW5kIGl0cyA2NC1iaXQgbG9u ZyBkb3VibGUuIEFsc28sIGBfX3BwY19fYCBvciBgX19wcGM2NF9fYAoraXMgbm90IGRlZmluZWQg b24gZ2NjLgorCistLS0gYS9saWJjeHgvaW5jbHVkZS9saW1pdHMKKysrKyBiL2xpYmN4eC9pbmNs dWRlL2xpbWl0cworQEAgLTQyNiw4ICs0MjYsMTQgQEAgcHJvdGVjdGVkOgorICAgICBfTElCQ1BQ X0lOTElORV9WSVNJQklMSVRZIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiB0eXBlIHNpZ25hbGlu Z19OYU4oKSBfTk9FWENFUFQge3JldHVybiBfX2J1aWx0aW5fbmFuc2woIiIpO30KKyAgICAgX0xJ QkNQUF9JTkxJTkVfVklTSUJJTElUWSBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgdHlwZSBkZW5v cm1fbWluKCkgX05PRVhDRVBUIHtyZXR1cm4gX19MREJMX0RFTk9STV9NSU5fXzt9CisgCistI2lm IChkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSkKKysjaWYgZGVmaW5lZChf X3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyNpZiAoX19MREJMX01BWF9F WFBfXyA+IF9fREJMX01BWF9FWFBfXykgfHwgKF9fTERCTF9NQU5UX0RJR19fID09IF9fREJMX01B TlRfRElHX18pCisrICAgIC8qIElFRUUgNzU0IHF1YWRydXBsZSBvciBkb3VibGUgcHJlY2lzaW9u ICovCisrICAgIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiBjb25zdCBib29sIGlzX2llYzU1OSA9 IHRydWU7CisrI2Vsc2UKKysgICAgLyogMTI4LWJpdCBJQk0gZG91YmxlLWRvdWJsZSAqLworICAg ICBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgY29uc3QgYm9vbCBpc19pZWM1NTkgPSBmYWxzZTsK KysjZW5kaWYKKyAjZWxzZQorICAgICBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgY29uc3QgYm9v bCBpc19pZWM1NTkgPSB0cnVlOworICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9saWJjeHgtc3NwLW5vbnNoYXJlZC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNo ZXMvbGliY3h4LXNzcC1ub25zaGFyZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi43MDI5MmJlYjJmY2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hhcmVkLnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAK Ky0tLSBhL2xpYmN4eC9DTWFrZUxpc3RzLnR4dAorKysrIGIvbGliY3h4L0NNYWtlTGlzdHMudHh0 CitAQCAtNzY5LDYgKzc2OSw4IEBAIGZ1bmN0aW9uKGN4eF9saW5rX3N5c3RlbV9saWJyYXJpZXMg dGFyZ2V0KQorICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgYXRv bWljKQorICAgZW5kaWYoKQorIAorKyNzc3AgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3Rhcmdl dH0gUFJJVkFURSBzc3Bfbm9uc2hhcmVkKQorKworICAgaWYgKE1JTkdXKQorICAgICB0YXJnZXRf bGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgIiR7TUlOR1dfTElCUkFSSUVTfSIpCisg ICBlbmRpZigpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYmN4eGFiaS1k bC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2ExNWY5ZGI4Yzk4Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2gKQEAg LTAsMCArMSwyNSBAQAorQWxzbyBsaW5rIHRvIC1sZGwgdG8gcHJldmVudCB1bmRlZmluZWQgcmVm ZXJlbmNlcy4KKworLS0tIGEvbGliY3h4YWJpL3NyYy9DTWFrZUxpc3RzLnR4dAorKysrIGIvbGli Y3h4YWJpL3NyYy9DTWFrZUxpc3RzLnR4dAorQEAgLTczLDYgKzczLDcgQEAKKyAgIGVuZGlmKCkK KyAKKyAgIGFkZF9saWJyYXJ5X2ZsYWdzX2lmKExJQkNYWEFCSV9IQVNfQ19MSUIgYykKKysgIGFk ZF9saWJyYXJ5X2ZsYWdzX2lmKExJQkNYWEFCSV9IQVNfQ19MSUIgZGwpCisgZW5kaWYoKQorIAor IGlmIChMSUJDWFhBQklfVVNFX0xMVk1fVU5XSU5ERVIpCistLS0gYS9saWJjeHgvQ01ha2VMaXN0 cy50eHQKKysrKyBiL2xpYmN4eC9DTWFrZUxpc3RzLnR4dAorQEAgLTc0NSw2ICs3NDUsMTAgQEAK KyAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGFyZ2V0fSBQUklWQVRFIG0pCisgICBlbmRp ZigpCisgCisrICBpZiAoTElCQ1hYX0hBU19DX0xJQikKKysgICAgdGFyZ2V0X2xpbmtfbGlicmFy aWVzKCR7dGFyZ2V0fSBQUklWQVRFIGRsKQorKyAgZW5kaWYoKQorKworICAgaWYgKExJQkNYWF9I QVNfUlRfTElCKQorICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUg cnQpCisgICBlbmRpZigpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYnVu d2luZC1wcGMzMi5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGlidW53aW5kLXBwYzMy LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzRhYTc1NzZl Y2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9saWJ1bndpbmQt cHBjMzIucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorVGhpcyBmaXhlcyBidWlsZCBhdCBsZWFzdCB3 aXRoIGdjYzkgd2hpY2ggZG9lcyBub3QgZGVmaW5lIGBfX3BwY19fYC4KKworLS0tIGEvbGlidW53 aW5kL2luY2x1ZGUvX19saWJ1bndpbmRfY29uZmlnLmgKKysrKyBiL2xpYnVud2luZC9pbmNsdWRl L19fbGlidW53aW5kX2NvbmZpZy5oCitAQCAtNDksNyArNDksNyBAQAorICMgIGRlZmluZSBfTElC VU5XSU5EX0NPTlRFWFRfU0laRSAxNjcKKyAjICBkZWZpbmUgX0xJQlVOV0lORF9DVVJTT1JfU0la RSAxNzkKKyAjICBkZWZpbmUgX0xJQlVOV0lORF9ISUdIRVNUX0RXQVJGX1JFR0lTVEVSIF9MSUJV TldJTkRfSElHSEVTVF9EV0FSRl9SRUdJU1RFUl9QUEM2NAorLSMgZWxpZiBkZWZpbmVkKF9fcHBj X18pCisrIyBlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCisgIyAgZGVmaW5lIF9MSUJVTldJTkRf VEFSR0VUX1BQQyAxCisgIyAgZGVmaW5lIF9MSUJVTldJTkRfQ09OVEVYVF9TSVpFIDExNworICMg IGRlZmluZSBfTElCVU5XSU5EX0NVUlNPUl9TSVpFIDEyNAorLS0tIGEvbGlidW53aW5kL3NyYy9V bndpbmRSZWdpc3RlcnNSZXN0b3JlLlMKKysrKyBiL2xpYnVud2luZC9zcmMvVW53aW5kUmVnaXN0 ZXJzUmVzdG9yZS5TCitAQCAtMzkyLDcgKzM5Miw3IEBAIExub3ZlYzoKKyAgIFBQQzY0X0xSKDMp CisgICBiY3RyCisgCistI2VsaWYgZGVmaW5lZChfX3BwY19fKQorKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjX18pCisgCisgREVGSU5FX0xJQlVOV0lORF9GVU5DVElPTihfWk45bGlidW53aW5kMTNS ZWdpc3RlcnNfcHBjNmp1bXB0b0V2KQorIC8vCistLS0gYS9saWJ1bndpbmQvc3JjL1Vud2luZFJl Z2lzdGVyc1NhdmUuUworKysrIGIvbGlidW53aW5kL3NyYy9VbndpbmRSZWdpc3RlcnNTYXZlLlMK K0BAIC01NTQsNyArNTU0LDcgQEAgREVGSU5FX0xJQlVOV0lORF9GVU5DVElPTihfX3Vud19nZXRj b250ZXh0KQorICAgYmxyCisgCisgCistI2VsaWYgZGVmaW5lZChfX3BwY19fKQorKyNlbGlmIGRl ZmluZWQoX19wb3dlcnBjX18pCisgCisgLy8KKyAvLyBleHRlcm4gaW50IHVud19nZXRjb250ZXh0 KHVud19jb250ZXh0X3QqIHRocmVhZF9zdGF0ZSkKKy0tLSBhL2xpYnVud2luZC9zcmMvY29uZmln LmgKKysrKyBiL2xpYnVud2luZC9zcmMvY29uZmlnLmgKK0BAIC05NSwxMiArOTUsMTIgQEAKKyAj ZGVmaW5lIF9MSUJVTldJTkRfQlVJTERfU0pMSl9BUElTCisgI2VuZGlmCisgCistI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8 fCBkZWZpbmVkKF9fcHBjNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBj X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAjZGVmaW5lIF9MSUJVTldJTkRfU1VQUE9S VF9GUkFNRV9BUElTCisgI2VuZGlmCisgCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX194ODZfNjRfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAg ZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fcHBjNjRfXykgfHwgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKSB8fCAgICAgICAgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVk KF9fcG93ZXJwYzY0X18pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICghZGVm aW5lZChfX0FQUExFX18pICYmIGRlZmluZWQoX19hcm1fXykpIHx8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgKGRlZmluZWQoX19hcm02NF9fKSB8fCBkZWZpbmVkKF9fYWFy Y2g2NF9fKSkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBkZWZpbmVkKF9f bWlwc19fKQorLS0tIGEvbGlidW53aW5kL3NyYy9saWJ1bndpbmQuY3BwCisrKysgYi9saWJ1bndp bmQvc3JjL2xpYnVud2luZC5jcHAKK0BAIC00Miw3ICs0Miw3IEBAIF9MSUJVTldJTkRfSElEREVO IGludCBfX3Vud19pbml0X2xvY2FsKHVud19jdXJzb3JfdCAqY3Vyc29yLAorICMgZGVmaW5lIFJF R0lTVEVSX0tJTkQgUmVnaXN0ZXJzX3g4Nl82NAorICNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKyAjIGRlZmluZSBSRUdJU1RFUl9LSU5EIFJlZ2lzdGVyc19wcGM2NAorLSNlbGlmIGRlZmlu ZWQoX19wcGNfXykKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwY19fKQorICMgZGVmaW5lIFJFR0lT VEVSX0tJTkQgUmVnaXN0ZXJzX3BwYworICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCisgIyBk ZWZpbmUgUkVHSVNURVJfS0lORCBSZWdpc3RlcnNfYXJtNjQKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bGx2bTEzL3BhdGNoZXMvbGxkYi1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9s bGRiLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42 MDFjMGQxMzg1MjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xs ZGItbXVzbC5wYXRjaApAQCAtMCwwICsxLDMxIEBACistLS0gYS9sbGRiL3NvdXJjZS9QbHVnaW5z L1Byb2Nlc3MvTGludXgvUHJvY2ZzLmgKKysrKyBiL2xsZGIvc291cmNlL1BsdWdpbnMvUHJvY2Vz cy9MaW51eC9Qcm9jZnMuaAorQEAgLTEwLDIxICsxMCwxMiBAQAorIC8vIHN5cy9wcm9jZnMuaCBv biBBbmRyb2lkL0xpbnV4IGZvciBhbGwgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMuCisgCisgI2lu Y2x1ZGUgPHN5cy9wdHJhY2UuaD4KKysjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorIAorLSNpZmRl ZiBfX0FORFJPSURfXworLSNpZiBkZWZpbmVkKF9fYXJtNjRfXykgfHwgZGVmaW5lZChfX2FhcmNo NjRfXykKKy10eXBlZGVmIHVuc2lnbmVkIGxvbmcgZWxmX2dyZWdfdDsKKy10eXBlZGVmIGVsZl9n cmVnX3QKKy0gICAgZWxmX2dyZWdzZXRfdFsoc2l6ZW9mKHN0cnVjdCB1c2VyX3B0X3JlZ3MpIC8g c2l6ZW9mKGVsZl9ncmVnX3QpKV07CistdHlwZWRlZiBzdHJ1Y3QgdXNlcl9mcHNpbWRfc3RhdGUg ZWxmX2ZwcmVnc2V0X3Q7CistI2lmbmRlZiBOVF9GUFJFR1NFVAorLSNkZWZpbmUgTlRfRlBSRUdT RVQgTlRfUFJGUFJFRworLSNlbmRpZiAvLyBOVF9GUFJFR1NFVAorLSNlbGlmIGRlZmluZWQoX19t aXBzX18pCistI2lmbmRlZiBOVF9GUFJFR1NFVAorLSNkZWZpbmUgTlRfRlBSRUdTRVQgTlRfUFJG UFJFRworLSNlbmRpZiAvLyBOVF9GUFJFR1NFVAorLSNlbmRpZgorLSNlbHNlIC8vIF9fQU5EUk9J RF9fCisrI2lmICFkZWZpbmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX3Bvd2VycGNfXykKKysj ZGVmaW5lIHB0X3JlZ3MgbXVzbF9wdF9yZWdzCisrI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KKysj dW5kZWYgcHRfcmVncworKyNlbHNlCisgI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KKy0jZW5kaWYg Ly8gX19BTkRST0lEX18KKysjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNo ZXMvbGx2bS0wMDEtbXVzbC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDEt bXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmYyYTNm OGQ2MjgxMwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0w MDEtbXVzbC5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIGZhY2EzZmJkMTVkMGMzMTA4NDkz YzNjNTRjZDkzMTM4ZTA0OWFjNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRy ZWEgQnJhbmNhbGVvbmkgPG1pd2F4ZUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDggU2VwIDIwMTUg MjI6MDM6MDIgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIG11c2wKKworLS0tCisgaW5jbHVk ZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmggfCA5ICsrKysrKysrKworIGxpYi9T dXBwb3J0L0R5bmFtaWNMaWJyYXJ5LmNwcCAgICAgICAgICAgIHwgMiArLQorIGxpYi9TdXBwb3J0 L1VuaXgvU2lnbmFscy5pbmMgICAgICAgICAgICAgIHwgNiArKystLS0KKyB1dGlscy91bml0dGVz dC9nb29nbGV0ZXN0L3NyYy9ndGVzdC5jYyAgICB8IDEgKworIDUgZmlsZXMgY2hhbmdlZCwgMTcg aW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGx2 bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5oIGIvaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1Rh cmdldExpYnJhcnlJbmZvLmgKK2luZGV4IDM0YThhMWUzLi4xMjE0ZWNlNSAxMDA2NDQKKy0tLSBh L2xsdm0vaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmgKKysrKyBiL2xs dm0vaW5jbHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmgKK0BAIC0xOCw2ICsx OCwxNSBAQAorICNpbmNsdWRlICJsbHZtL0lSL1Bhc3NNYW5hZ2VyLmgiCisgI2luY2x1ZGUgImxs dm0vUGFzcy5oIgorIAorKyN1bmRlZiBmb3BlbjY0CisrI3VuZGVmIGZzZWVrbzY0CisrI3VuZGVm IGZzdGF0NjQKKysjdW5kZWYgZnN0YXR2ZnM2NAorKyN1bmRlZiBmdGVsbG82NAorKyN1bmRlZiBs c3RhdDY0CisrI3VuZGVmIHN0YXQ2NAorKyN1bmRlZiB0bXBmaWxlNjQKKysKKyBuYW1lc3BhY2Ug bGx2bSB7CisgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEFycmF5UmVmOworIGNsYXNzIFRy aXBsZTsKK2RpZmYgLS1naXQgYS9saWIvU3VwcG9ydC9Vbml4L0R5bmFtaWNMaWJyYXJ5LmluYyBi L2xpYi9TdXBwb3J0L1VuaXgvRHluYW1pY0xpYnJhcnkuaW5jCitpbmRleCBhMmEzNzk5Ni4uMmY4 NmM0NzAgMTAwNjQ0CistLS0gYS9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvRHluYW1pY0xpYnJhcnku aW5jCisrKysgYi9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvRHluYW1pY0xpYnJhcnkuaW5jCitAQCAt MTAyLDcgKzEwMiw3IEBAIHN0YXRpYyB2b2lkICpEb1NlYXJjaChjb25zdCBjaGFyKiBTeW1ib2xO YW1lKSB7CisgCisgLy8gVGhpcyBtYWNybyByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIGEgd2VsbC1r bm93biwgZXhwbGljaXQgc3ltYm9sCisgI2RlZmluZSBFWFBMSUNJVF9TWU1CT0woU1lNKSBcCist ICAgaWYgKCFzdHJjbXAoU3ltYm9sTmFtZSwgI1NZTSkpIHJldHVybiAmU1lNCisrICAgaWYgKCFz dHJjbXAoU3ltYm9sTmFtZSwgI1NZTSkpIHJldHVybiAodm9pZCAqKSZTWU0KKyAKKyAvLyBVbmRl ciBnbGliYyB3ZSBoYXZlIGEgd2VpcmQgc2l0dWF0aW9uLiBUaGUgc3RkZXJyL291dC9pbiBzeW1i b2xzIGFyZSBib3RoCisgLy8gbWFjcm9zIGFuZCBnbG9iYWwgdmFyaWFibGVzIGJlY2F1c2Ugb2Yg c3RhbmRhcmRzIHJlcXVpcmVtZW50cy4gU28sIHdlCitkaWZmIC0tZ2l0IGEvdXRpbHMvdW5pdHRl c3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MgYi91dGlscy91bml0dGVzdC9nb29nbGV0ZXN0L3Ny Yy9ndGVzdC5jYworaW5kZXggZDg4MmFiMmUuLmYxZmIxMmQwIDEwMDY0NAorLS0tIGEvbGx2bS91 dGlscy91bml0dGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC5jYworKysrIGIvbGx2bS91dGlscy91 bml0dGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC5jYworQEAgLTEyOCw2ICsxMjgsNyBAQAorIAor ICNpZiBHVEVTVF9DQU5fU1RSRUFNX1JFU1VMVFNfCisgIyBpbmNsdWRlIDxhcnBhL2luZXQuaD4g IC8vIE5PTElOVAorKyMgaW5jbHVkZSA8c3lzL3NvY2tldC5oPiAgLy8gTk9MSU5UCisgIyBpbmNs dWRlIDxuZXRkYi5oPiAgLy8gTk9MSU5UCisgIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ICAvLyBO T0xJTlQKKyAjIGluY2x1ZGUgPHN5cy90eXBlcy5oPiAgLy8gTk9MSU5UCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDAyLW11c2wtcHBjNjQtZWxmdjIucGF0Y2ggYi9z cmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDAyLW11c2wtcHBjNjQtZWxmdjIucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wMDcxZDk2NGJkMzcKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDAyLW11c2wtcHBjNjQt ZWxmdjIucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorVGhpcyBwYXRjaGVzIExMVk0gdG8gdXNlIEVM RnYyIG9uIHBwYzY0IHVuY29uZGl0aW9uYWxseSB1bmxlc3Mgb3ZlcnJpZGRlbi4gV2UKK25lZWQg dGhpcyBiZWNhdXNlIHVubGlrZSBtb3N0IGRpc3Ryb3Mgd2UgdXNlIEVMRnYyIGZvciBib3RoIGds aWJjIGFuZCBtdXNsCitvbiBiaWcgZW5kaWFuIHBwYzY0LgorCitkaWZmIC0tZ2l0IGEvbGliL1Rh cmdldC9Qb3dlclBDL1BQQ1RhcmdldE1hY2hpbmUuY3BwIGIvbGliL1RhcmdldC9Qb3dlclBDL1BQ Q1RhcmdldE1hY2hpbmUuY3BwCitpbmRleCAwNjM0ODMzZS4uYjdjYmMyZTcgMTAwNjQ0CistLS0g YS9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENUYXJnZXRNYWNoaW5lLmNwcAorKysrIGIvbGx2 bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAKK0BAIC0yMjIsOSArMjIy LDggQEAgc3RhdGljIFBQQ1RhcmdldE1hY2hpbmU6OlBQQ0FCSSBjb21wdXRlVGFyZ2V0QUJJKGNv bnN0IFRyaXBsZSAmVFQsCisgCisgICBzd2l0Y2ggKFRULmdldEFyY2goKSkgeworICAgY2FzZSBU cmlwbGU6OnBwYzY0bGU6CistICAgIHJldHVybiBQUENUYXJnZXRNYWNoaW5lOjpQUENfQUJJX0VM RnYyOworICAgY2FzZSBUcmlwbGU6OnBwYzY0OgorLSAgICByZXR1cm4gUFBDVGFyZ2V0TWFjaGlu ZTo6UFBDX0FCSV9FTEZ2MTsKKysgICAgcmV0dXJuIFBQQ1RhcmdldE1hY2hpbmU6OlBQQ19BQklf RUxGdjI7CisgICBkZWZhdWx0OgorICAgICByZXR1cm4gUFBDVGFyZ2V0TWFjaGluZTo6UFBDX0FC SV9VTktOT1dOOworICAgfQorZGlmZiAtLWdpdCBhL3Rlc3QvQ29kZUdlbi9Qb3dlclBDL3BwYzY0 LWVsZi1hYmkubGwgYi90ZXN0L0NvZGVHZW4vUG93ZXJQQy9wcGM2NC1lbGYtYWJpLmxsCitpbmRl eCA4YjFjZjZiNS4uMjk2YTJhZmEgMTAwNjQ0CistLS0gYS9sbHZtL3Rlc3QvQ29kZUdlbi9Qb3dl clBDL3BwYzY0LWVsZi1hYmkubGwKKysrKyBiL2xsdm0vdGVzdC9Db2RlR2VuL1Bvd2VyUEMvcHBj NjQtZWxmLWFiaS5sbAorQEAgLTEsNCArMSw1IEBACistOyBSVU46IGxsYyAtdmVyaWZ5LW1hY2hp bmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0LXVua25vd24tbGludXgtZ251IDwgJXMgfCBGaWxl Q2hlY2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2MQorKzsgUlVOOiBsbGMgLXZlcmlmeS1t YWNoaW5laW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudSA8ICVzIHwg RmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKKys7IFJVTjogbGxjIC12ZXJp ZnktbWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1tdXNsIDwg JXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2MgorIDsgUlVOOiBsbGMg LXZlcmlmeS1tYWNoaW5laW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdu dSAtdGFyZ2V0LWFiaSBlbGZ2MSA8ICVzIHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hF Q0stRUxGdjEKKyA7IFJVTjogbGxjIC12ZXJpZnktbWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dl cnBjNjQtdW5rbm93bi1saW51eC1nbnUgLXRhcmdldC1hYmkgZWxmdjIgPCAlcyB8IEZpbGVDaGVj ayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYyCisgOyBSVU46IGxsYyAtdmVyaWZ5LW1hY2hp bmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUgPCAlcyB8IEZp bGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYyCmRpZmYgLS1naXQgYS9zcmNwa2dz L2xsdm0xMy9wYXRjaGVzL2xsdm0tMDAzLXBwYy1zZWN1cmVwbHQucGF0Y2ggYi9zcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2xsdm0tMDAzLXBwYy1zZWN1cmVwbHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iNWQxNTk3NDM3NWQKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDAzLXBwYy1zZWN1cmVwbHQucGF0Y2gKQEAg LTAsMCArMSwxMSBAQAorLS0tIGEvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDU3VidGFyZ2V0 LmNwcAorKysrIGIvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDU3VidGFyZ2V0LmNwcAorQEAg LTE2NSw3ICsxNjUsNyBAQCB2b2lkIFBQQ1N1YnRhcmdldDo6aW5pdFN1YnRhcmdldEZlYXR1cmVz KFN0cmluZ1JlZiBDUFUsIFN0cmluZ1JlZiBGUykgeworIAorICAgaWYgKChUYXJnZXRUcmlwbGUu aXNPU0ZyZWVCU0QoKSAmJiBUYXJnZXRUcmlwbGUuZ2V0T1NNYWpvclZlcnNpb24oKSA+PSAxMykg fHwKKyAgICAgICBUYXJnZXRUcmlwbGUuaXNPU05ldEJTRCgpIHx8IFRhcmdldFRyaXBsZS5pc09T T3BlbkJTRCgpIHx8CistICAgICAgVGFyZ2V0VHJpcGxlLmlzTXVzbCgpKQorKyAgICAgIGlzVGFy Z2V0TGludXgoKSkKKyAgICAgU2VjdXJlUGx0ID0gdHJ1ZTsKKyAKKyAgIGlmIChIYXNTUEUgJiYg SXNQUEM2NCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDQtb3Zl cnJpZGUtb3B0LnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAwNC1vdmVycmlk ZS1vcHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41MWQw ZTRiMzFiMzIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0t MDA0LW92ZXJyaWRlLW9wdC5wYXRjaApAQCAtMCwwICsxLDE4IEBACitUaGlzIGFsbG93cyB1cyB0 byBvdmVycmlkZSB0aGUgb3B0aW1pemF0aW9uIGxldmVsIGFzIG5vdCBhbGwgcGxhdGZvcm1zIGNh bgorZGVhbCB3aXRoIC1PMy4KKworLS0tIGEvbGx2bS9DTWFrZUxpc3RzLnR4dAorKysrIGIvbGx2 bS9DTWFrZUxpc3RzLnR4dAorQEAgLTkxOCw2ICs5MTgsMTIgQEAgaWYoIE1JTkdXIEFORCBOT1Qg IiR7Q01BS0VfQ1hYX0NPTVBJTEVSX0lEfSIgTUFUQ0hFUyAiQ2xhbmciICkKKyAgIGxsdm1fcmVw bGFjZV9jb21waWxlcl9vcHRpb24oQ01BS0VfQ1hYX0ZMQUdTX1JFTEVBU0UgIi1PMyIgIi1PMiIp CisgZW5kaWYoKQorIAorK3NldChWT0lEX0NYWF9PUFRfRkxBR1MgIiIgQ0FDSEUgU1RSSU5HICJP cHRpbWl6YXRpb24gbGV2ZWwgdG8gdXNlIikKKysKKytpZiAoTk9UIFZPSURfQ1hYX09QVF9GTEFH UyBTVFJFUVVBTCAiIikKKysgICAgbGx2bV9yZXBsYWNlX2NvbXBpbGVyX29wdGlvbihDTUFLRV9D WFhfRkxBR1NfUkVMRUFTRSAiLU8zIiAiJHtWT0lEX0NYWF9PUFRfRkxBR1N9IikKKytlbmRpZigp CisrCisgIyBQdXQgdGhpcyBiZWZvcmUgdGJsZ2VuLiBFbHNlIHdlIGhhdmUgYSBjaXJjdWxhciBk ZXBlbmRlbmNlLgorIGFkZF9zdWJkaXJlY3RvcnkobGliL0RlbWFuZ2xlKQorIGFkZF9zdWJkaXJl Y3RvcnkobGliL1N1cHBvcnQpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xs dm0tMDA1LXBwYy1iaWdwaWMucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDA1 LXBwYy1iaWdwaWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li5kMzMyNjg3YjlkOTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVz L2xsdm0tMDA1LXBwYy1iaWdwaWMucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSBmM2RiZGQ0 OWMwNmJmYWZjMWQ2MTM4MDk0Y2Y0Mjg4OWMxNGQzOGI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQorRnJvbTogU2FtdWVsIEhvbGxhbmQgPHNhbXVlbEBzaG9sbGFuZC5vcmc+CitEYXRlOiBTdW4s IDMgTm92IDIwMTkgMTA6NTc6MjcgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gW0xMVk1dW1Bvd2Vy UENdIEFzc3VtZSBCaWdQSUMgaWYgbm8gUElDIGxldmVsIGlzIHNwZWNpZmllZAorCistLS0KKyBs bHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENBc21QcmludGVyLmNwcCAgfCAyICstCisgbGx2bS9s aWIvVGFyZ2V0L1Bvd2VyUEMvUFBDTUNJbnN0TG93ZXIuY3BwIHwgMiArLQorIDIgZmlsZXMgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGli L1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3BwIGIvbGliL1RhcmdldC9Qb3dlclBDL1BQ Q0FzbVByaW50ZXIuY3BwCitpbmRleCBjY2UyMWYzMi4uODdjYTVmOWIgMTAwNjQ0CistLS0gYS9s bHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENBc21QcmludGVyLmNwcAorKysrIGIvbGx2bS9saWIv VGFyZ2V0L1Bvd2VyUEMvUFBDQXNtUHJpbnRlci5jcHAKK0BAIC01MjAsNyArNTIwLDcgQEAgdm9p ZCBQUENBc21QcmludGVyOjpFbWl0VGxzQ2FsbChjb25zdCBNYWNoaW5lSW5zdHIgKk1JLAorIAor ICAgLy8gQWRkIDMyNzY4IG9mZnNldCB0byB0aGUgc3ltYm9sIHNvIHdlIGZvbGxvdyB1cCB0aGUg bGF0ZXN0IEdPVC9QTFQgQUJJLgorICAgaWYgKEtpbmQgPT0gTUNTeW1ib2xSZWZFeHByOjpWS19Q TFQgJiYgU3VidGFyZ2V0LT5pc1NlY3VyZVBsdCgpICYmCistICAgICAgTS0+Z2V0UElDTGV2ZWwo KSA9PSBQSUNMZXZlbDo6QmlnUElDKQorKyAgICAgIE0tPmdldFBJQ0xldmVsKCkgIT0gUElDTGV2 ZWw6OlNtYWxsUElDKQorICAgICBUbHNSZWYgPSBNQ0JpbmFyeUV4cHI6OmNyZWF0ZUFkZCgKKyAg ICAgICAgIFRsc1JlZiwgTUNDb25zdGFudEV4cHI6OmNyZWF0ZSgzMjc2OCwgT3V0Q29udGV4dCks IE91dENvbnRleHQpOworICAgY29uc3QgTWFjaGluZU9wZXJhbmQgJk1PID0gTUktPmdldE9wZXJh bmQoMik7CitkaWZmIC0tZ2l0IGEvbGliL1RhcmdldC9Qb3dlclBDL1BQQ01DSW5zdExvd2VyLmNw cCBiL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENNQ0luc3RMb3dlci5jcHAKK2luZGV4IDVjYzE4MGQ3 Li5hNWIwMjU2NSAxMDA2NDQKKy0tLSBhL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ01DSW5z dExvd2VyLmNwcAorKysrIGIvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDTUNJbnN0TG93ZXIu Y3BwCitAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBNQ09wZXJhbmQgR2V0U3ltYm9sUmVmKGNv bnN0IE1hY2hpbmVPcGVyYW5kICZNTywgY29uc3QgTUNTeW1ib2wgKlN5bWJvbCwKKyAgIGNvbnN0 IE1DRXhwciAqRXhwciA9IE1DU3ltYm9sUmVmRXhwcjo6Y3JlYXRlKFN5bWJvbCwgUmVmS2luZCwg Q3R4KTsKKyAgIC8vIElmIC1tc2VjdXJlLXBsdCAtZlBJQywgYWRkIDMyNzY4IHRvIHN5bWJvbC4K KyAgIGlmIChTdWJ0YXJnZXQtPmlzU2VjdXJlUGx0KCkgJiYgVE0uaXNQb3NpdGlvbkluZGVwZW5k ZW50KCkgJiYKKy0gICAgICBNLT5nZXRQSUNMZXZlbCgpID09IFBJQ0xldmVsOjpCaWdQSUMgJiYK KysgICAgICBNLT5nZXRQSUNMZXZlbCgpICE9IFBJQ0xldmVsOjpTbWFsbFBJQyAmJgorICAgICAg IE1PLmdldFRhcmdldEZsYWdzKCkgPT0gUFBDSUk6Ok1PX1BMVCkKKyAgICAgRXhwciA9CisgICAg ICAgICBNQ0JpbmFyeUV4cHI6OmNyZWF0ZUFkZChFeHByLCBNQ0NvbnN0YW50RXhwcjo6Y3JlYXRl KDMyNzY4LCBDdHgpLCBDdHgpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9s bHZtLTAwNi1hYXJjaDY0LW1mX2V4ZWMucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xs dm0tMDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmEwMGFiZDIxNjY2NQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2 bTEzL3BhdGNoZXMvbGx2bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNoCkBAIC0wLDAgKzEsMjUg QEAKK0ZpeCBmYWlsdXJlcyBpbiBBbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC4qIG9u IGFhcmNoNjQ6CisKKyAgICBGYWlsaW5nIFRlc3RzICg4KToKKyAgICAgICAgTExWTS1Vbml0IDo6 IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3Qu QWxsb2NBbmRSZWxlYXNlLzMKKyAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0 VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuRHVwbGljYXRlTmVhci8zCisg ICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0 cy9NYXBwZWRNZW1vcnlUZXN0LkVuYWJsZWRXcml0ZS8zCisgICAgICAgIExMVk0tVW5pdCA6OiBT dXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0Lk11 bHRpcGxlQWxsb2NBbmRSZWxlYXNlLzMKKyAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9T dXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuU3VjY2Vzc2l2ZU5l YXIvMworICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0 aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5VbmFsaWduZWROZWFyLzMKKyAgICAgICAgTExWTS1V bml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9y eVRlc3QuWmVyb05lYXIvMworICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRU ZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5aZXJvU2l6ZU5lYXIvMworCitV cHN0cmVhbS1Jc3N1ZTogaHR0cHM6Ly9idWdzLmxsdm0ub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3 OCNjMTAKKworLS0tIGEvbGx2bS9saWIvU3VwcG9ydC9Vbml4L01lbW9yeS5pbmMKKysrKyBiL2xs dm0vbGliL1N1cHBvcnQvVW5peC9NZW1vcnkuaW5jCitAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMg aW50IGdldFBvc2l4UHJvdGVjdGlvbkZsYWdzKHVuc2lnbmVkIEZsYWdzKSB7CisgICAgIHJldHVy biBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFIHwgUFJPVF9FWEVDOworICAgY2FzZSBsbHZtOjpzeXM6 Ok1lbW9yeTo6TUZfRVhFQzoKKyAjaWYgKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQo X19QT1dFUlBDX18pIHx8IGRlZmluZWQgKF9fcHBjX18pIHx8IFwKKy0gICAgIGRlZmluZWQoX1BP V0VSKSB8fCBkZWZpbmVkKF9BUkNIX1BQQykpCisrICAgICBkZWZpbmVkKF9QT1dFUikgfHwgZGVm aW5lZChfQVJDSF9QUEMpIHx8IChkZWZpbmVkKF9fbGludXhfXykgJiYgZGVmaW5lZChfX2FhcmNo NjRfXykpKQorICAgICAvLyBPbiBQb3dlclBDLCBoYXZpbmcgYW4gZXhlY3V0YWJsZSBwYWdlIHRo YXQgaGFzIG5vIHJlYWQgcGVybWlzc2lvbgorICAgICAvLyBjYW4gaGF2ZSB1bmludGVuZGVkIGNv bnNlcXVlbmNlcy4gIFRoZSBmdW5jdGlvbiBJbnZhbGlkYXRlSW5zdHJ1Y3Rpb24tCisgICAgIC8v IENhY2hlIHVzZXMgaW5zdHJ1Y3Rpb25zIGRjYmYgYW5kIGljYmksIGJvdGggb2Ygd2hpY2ggYXJl IHRyZWF0ZWQgYnkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvcHBjMzItY29t cGlsZXItcnQucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL3BwYzMyLWNvbXBpbGVyLXJ0 LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGUwYTlhNzc5 ZDFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9wcGMzMi1jb21w aWxlci1ydC5wYXRjaApAQCAtMCwwICsxLDIxIEBACitjb21taXQgYmE0ZWRlNTk1ZmY5NTk5MjMy ZjVkZDJiNDM4NGMyNDMxMzdiNTNmYworQXV0aG9yOiBEYW5pZWwgS29sZXNhIDxkYW5pZWxAb2N0 YWZvcmdlLm9yZz4KK0RhdGU6ICAgVHVlIEp1biAyMiAyMzo0MDo1NCAyMDIxICswMjAwCisKKyAg ICBlbmFibGUgY29tcGlsZXItcnQgc3VwcG9ydCBmb3IgcHBjMzIKKworZGlmZiAtLWdpdCBhL2Nv bXBpbGVyLXJ0L2NtYWtlL2Jhc2UtY29uZmlnLWl4LmNtYWtlIGIvY29tcGlsZXItcnQvY21ha2Uv YmFzZS1jb25maWctaXguY21ha2UKK2luZGV4IDFlZGFiNDMuLjVjMGM4YTIgMTAwNjQ0CistLS0g YS9jb21waWxlci1ydC9jbWFrZS9iYXNlLWNvbmZpZy1peC5jbWFrZQorKysrIGIvY29tcGlsZXIt cnQvY21ha2UvYmFzZS1jb25maWctaXguY21ha2UKK0BAIC0xODIsOSArMTgyLDcgQEAgbWFjcm8o dGVzdF90YXJnZXRzKQorICAgICBlbHNlaWYoIiR7Q09NUElMRVJfUlRfREVGQVVMVF9UQVJHRVRf QVJDSH0iIE1BVENIRVMgInBvd2VycGM2NGxlIikKKyAgICAgICB0ZXN0X3RhcmdldF9hcmNoKHBv d2VycGM2NGxlICIiICItbTY0IikKKyAgICAgZWxzZWlmKCIke0NPTVBJTEVSX1JUX0RFRkFVTFRf VEFSR0VUX0FSQ0h9IiBNQVRDSEVTICJwb3dlcnBjIikKKy0gICAgICBpZihDTUFLRV9TWVNURU1f TkFNRSBNQVRDSEVTICJBSVgiKQorLSAgICAgICAgdGVzdF90YXJnZXRfYXJjaChwb3dlcnBjICIi ICItbTMyIikKKy0gICAgICBlbmRpZigpCisrICAgICAgdGVzdF90YXJnZXRfYXJjaChwb3dlcnBj ICIiICItbTMyIikKKyAgICAgICB0ZXN0X3RhcmdldF9hcmNoKHBvd2VycGM2NCAiIiAiLW02NCIp CisgICAgIGVsc2VpZigiJHtDT01QSUxFUl9SVF9ERUZBVUxUX1RBUkdFVF9BUkNIfSIgTUFUQ0hF UyAiczM5MHgiKQorICAgICAgIHRlc3RfdGFyZ2V0X2FyY2goczM5MHggIiIgIiIpCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGx2bTEzL3RlbXBsYXRlCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDhkODQ3NDcyNTI1Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvdGVtcGxhdGUKQEAgLTAsMCArMSw0MjMgQEAK KyMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xsdm0xMycKK3BrZ25hbWU9bGx2bTEzCit2ZXJzaW9uPTEz LjAuMAorcmV2aXNpb249MQord3Jrc3JjPSJsbHZtLXByb2plY3QtJHt2ZXJzaW9ufS5zcmMiCiti dWlsZF93cmtzcmM9bGx2bQorYnVpbGRfc3R5bGU9Y21ha2UKK2NvbmZpZ3VyZV9hcmdzPSIKKyAt RENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSAtV25vLWRldgorIC1ERU5BQkxFX0xJTktFUl9CVUlM RF9JRD1ZRVMKKyAtRExMREJfVVNFX1NZU1RFTV9TSVg9WUVTCisgLURMSUJDWFhfQ1hYX0FCST1s aWJjeHhhYmkKKyAtRExJQkNYWF9FTkFCTEVfU1RBVElDX0FCSV9MSUJSQVJZPVlFUworIC1ETElC Q1hYQUJJX1VTRV9MTFZNX1VOV0lOREVSPVlFUworIC1ETElCQ1hYQUJJX0VOQUJMRV9TVEFUSUNf VU5XSU5ERVI9WUVTCisgLURMSUJPTVBfRU5BQkxFX1NIQVJFRD1ZRVMKKyAtRExJQk9NUF9JTlNU QUxMX0FMSUFTRVM9Tk8KKyAtRExMVk1fSU5DTFVERV9ET0NTPVlFUworIC1ETExWTV9CVUlMRF9E T0NTPVlFUworIC1ETExWTV9FTkFCTEVfU1BISU5YPVlFUworIC1EU1BISU5YX1dBUk5JTkdTX0FT X0VSUk9SUz1OTworIC1ETExWTV9JTlNUQUxMX1VUSUxTPVlFUworIC1ETExWTV9CVUlMRF9MTFZN X0RZTElCPVlFUworIC1ETExWTV9MSU5LX0xMVk1fRFlMSUI9WUVTCisgLURMTFZNX0VOQUJMRV9S VFRJPVlFUworIC1ETExWTV9FTkFCTEVfRkZJPVlFUworIC1ETExWTV9CSU5VVElMU19JTkNESVI9 L3Vzci9pbmNsdWRlIgoraG9zdG1ha2VkZXBlbmRzPSJwZXJsIHB5dGhvbjMgemxpYi1kZXZlbCBs aWJmZmktZGV2ZWwgc3dpZyBweXRob24zLVNwaGlueAorIHB5dGhvbjMtcmVjb21tb25tYXJrIHB5 dGhvbjMtc3BoaW54LWF1dG9tb2RhcGkiCittYWtlZGVwZW5kcz0icHl0aG9uMy1kZXZlbCB6bGli LWRldmVsIGVsZnV0aWxzLWRldmVsIGxpYmZmaS1kZXZlbCBsaWJlZGl0LWRldmVsCisgbGlieG1s Mi1kZXZlbCBiaW51dGlscy1kZXZlbCBsaWJhdG9taWMtZGV2ZWwiCitkZXBlbmRzPSJsaWJsbHZt MTM+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCitzaG9ydF9kZXNjPSJMb3cgTGV2ZWwgVmlydHVh bCBNYWNoaW5lIgorbWFpbnRhaW5lcj0icTY2IDxkYW5pZWxAb2N0YWZvcmdlLm9yZz4iCitsaWNl bnNlPSJBcGFjaGUtMi4wIgoraG9tZXBhZ2U9Imh0dHBzOi8vd3d3Lmxsdm0ub3JnIgorZGlzdGZp bGVzPSJodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvcmVsZWFzZXMvZG93bmxv YWQvbGx2bW9yZy0ke3ZlcnNpb259L2xsdm0tcHJvamVjdC0ke3ZlcnNpb259LnNyYy50YXIueHoi CitjaGVja3N1bT02MDc1YWQzMGYxYWMwZTE1ZjA3YzFiZjA2MmMxZTEyNjhjMjQxZDY3NGYxMWJk MzJjZGYwZTA0MGM3MWYyYmYzCitsaWIzMmRpc2FibGVkPXllcworcHl0aG9uX3ZlcnNpb249Mwor CitpZiBbICIkWEJQU19UQVJHRVRfTElCQyIgPSAibXVzbCIgXTsgdGhlbgorCWNvbmZpZ3VyZV9h cmdzKz0iIC1ETElCQ1hYX0hBU19NVVNMX0xJQkM9WUVTIgorCW1ha2VkZXBlbmRzKz0iIGxpYmV4 ZWNpbmZvLWRldmVsIgorCWRlcGVuZHMrPSIgbGliZXhlY2luZm8tZGV2ZWwiCitmaQorCisjICJv cGVyYW5kIG91dCBvZiByYW5nZSIgYXNzZW1ibGVyIGZhaWx1cmVzCitjYXNlICIkWEJQU19UQVJH RVRfTUFDSElORSIgaW4KKwlwcGM2NCopIDs7CisJcHBjKikgY29uZmlndXJlX2FyZ3MrPSIgLURD TEFOR19FTkFCTEVfQ0xBTkdEPU9GRiIgOzsKK2VzYWMKKworX2VuYWJsZWRfcHJvamVjdHM9ImNs YW5nO2NsYW5nLXRvb2xzLWV4dHJhO2NvbXBpbGVyLXJ0O2xpYmN4eDtsaWJjeHhhYmk7bGlidW53 aW5kO2xsZCIKKworX2xsZGJfZW5hYmxlPXllcworX2xpYm9tcF9lbmFibGU9bm8KKworY2FzZSAi JFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJcHBjNjRsZSopIDs7CisJcHBjKnxpNjg2KikgX2xs ZGJfZW5hYmxlPW5vIDs7Citlc2FjCisKK2Nhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgor CXg4Nl82NCp8YWFyY2g2NCp8cHBjNjQqKSBfbGlib21wX2VuYWJsZT15ZXM7OworZXNhYworCitz dWJwYWNrYWdlcz0iY2xhbmctdG9vbHMtZXh0cmEiCisKKyMgbXVzdCBnbyBiZWZvcmUgY2xhbmcK K2lmIFsgIiRfbGlib21wX2VuYWJsZSIgPSAieWVzIiBdOyB0aGVuCisJX2VuYWJsZWRfcHJvamVj dHMrPSI7b3Blbm1wIgorCXN1YnBhY2thZ2VzKz0iIGxpYm9tcCBsaWJvbXAtZGV2ZWwiCisJIyBi ZWNhdXNlIG9mIGNtYWtlIG5vbnNlbnNlIHJlZmVyZW5jaW5nIGxpYm9tcHRhcmdldC5zby4qCisJ ZGVwZW5kcys9IiBsaWJvbXA+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCitmaQorCitzdWJwYWNr YWdlcys9IiBjbGFuZyBjbGFuZy1hbmFseXplciBsaWJjbGFuZyBsaWJjbGFuZy1jcHAKKyBsbHZt LWxpYnVud2luZCBsbHZtLWxpYnVud2luZC1kZXZlbCBsaWJjeHggbGliY3h4LWRldmVsCisgbGli Y3h4YWJpIGxpYmN4eGFiaS1kZXZlbCBsaWJsbHZtMTMiCisKK2lmIFsgIiRfbGxkYl9lbmFibGUi ID0gInllcyIgXTsgdGhlbgorCSMgWFhYIGZhaWxzIHRvIGNyb3NzIGNvbXBpbGUgZHVlIHRvIHB5 dGhvbgorCV9lbmFibGVkX3Byb2plY3RzKz0iO2xsZGIiCisJc3VicGFja2FnZXMrPSIgbGxkYiBs bGRiLWRldmVsIgorZmkKKworc3VicGFja2FnZXMrPSIgbGxkIGxsZC1kZXZlbCIKKworY29uZmln dXJlX2FyZ3MrPSIgLURMTFZNX0VOQUJMRV9QUk9KRUNUUz0ke19lbmFibGVkX3Byb2plY3RzfSIK KworcG9zdF9wYXRjaCgpIHsKKwlpZiBbICIkX2xsZGJfZW5hYmxlIiA9ICJ5ZXMiIF07IHRoZW4K KwkJaWYgWyAiJFhCUFNfVEFSR0VUX0xJQkMiID0gIm11c2wiIF07IHRoZW4KKwkJCXZzZWQgLWkg J3N8X19wdHJhY2VfcmVxdWVzdHxpbnR8ZycgXAorCQkJCSR7d3Jrc3JjfS9sbGRiL3NvdXJjZS9Q bHVnaW5zL1Byb2Nlc3MvTGludXgvTmF0aXZlUHJvY2Vzc0xpbnV4LmNwcAorCQlmaQorCQkjIGRp c2FibGUgZG9jcyBmb3IgbGxkYiBhcyB0aGV5IGZhaWwgdG8gZ2VuZXJhdGUKKwkJdnNlZCAtaSAn L2FkZF9zdWJkaXJlY3RvcnkoZG9jcykvZCcgXAorCQkJJHt3cmtzcmN9L2xsZGIvQ01ha2VMaXN0 cy50eHQKKwlmaQorCisJIyB1cGRhdGUgY29uZmlnLmd1ZXNzIGZvciBiZXR0ZXIgcGxhdGZvcm0g ZGV0ZWN0aW9uCisJY3AgJFhCUFNfQ09NTU9ORElSL2Vudmlyb25tZW50L2NvbmZpZ3VyZS9hdXRv bWFrZS9jb25maWcuZ3Vlc3MgXAorCQkke3dya3NyY30vbGx2bS9jbWFrZQorCisJIyBmaXggbGlu a2VyIGZhaWx1cmVzIG9uIHNvbWUgYXJjaHMKKwl2c2VkIC1pICdzLGNoZWNrX2xpYnJhcnlfZXhp c3RzKGdjY19zIC4qLHNldChMSUJDWFhBQklfSEFTX0dDQ19TX0xJQiBPTiksJyBcCisJCSR7d3Jr c3JjfS9saWJjeHhhYmkvY21ha2UvY29uZmlnLWl4LmNtYWtlCisJdnNlZCAtaSAncyxjaGVja19s aWJyYXJ5X2V4aXN0cyhnY2MgLiosc2V0KExJQkNYWEFCSV9IQVNfR0NDX0xJQiBPTiksJyBcCisJ CSR7d3Jrc3JjfS9saWJjeHhhYmkvY21ha2UvY29uZmlnLWl4LmNtYWtlCisKKwkjIG5lZWQgbGli c3NwX25vbnNoYXJlZCBvbiBzb21lIG11c2wgcGxhdGZvcm1zIChiZWNhdXNlIG9mIG5vZGVmYXVs dGxpYnMpCisJY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXBwYzY0KikgOzsKKwkJ cHBjKi1tdXNsfGk2ODYtbXVzbHxtaXBzKi1tdXNsKQorCQkJdnNlZCAtaSAncyxeIyBTZXR1cCBm bGFncy4kLGFkZF9saWJyYXJ5X2ZsYWdzKHNzcF9ub25zaGFyZWQpLCcgXAorCQkJCSR7d3Jrc3Jj fS9saWJ1bndpbmQvc3JjL0NNYWtlTGlzdHMudHh0CisJCQl2c2VkIC1pICdzLF4jIFNldHVwIGZs YWdzLiQsYWRkX2xpYnJhcnlfZmxhZ3Moc3NwX25vbnNoYXJlZCksJyBcCisJCQkJJHt3cmtzcmN9 L2xpYmN4eGFiaS9zcmMvQ01ha2VMaXN0cy50eHQKKwkJCXZzZWQgLWkgJ3MsI3NzcCwsJyAke3dy a3NyY30vbGliY3h4L0NNYWtlTGlzdHMudHh0CisJCQk7OworCWVzYWMKKworCWNhc2UgIiRYQlBT X1RBUkdFVF9NQUNISU5FIiBpbgorCQl4ODZfNjQtbXVzbCkgIyBzb21lIHNhbml0aXplciBjdXJy ZW50bHkgb25seSBvbiB4ODZfNjQgc3R1ZmYgbmVlZHMgYmFja3RyYWNlCisJCQl2c2VkIC1pICdz LCMgU2V0IGNvbW1vbiBsaW5rIGZsYWdzLixsaXN0KEFQUEVORCBTQU5JVElaRVJfQ09NTU9OX0xJ TktfTElCUyBleGVjaW5mbyksJyBcCisJCQkJJHt3cmtzcmN9L2NvbXBpbGVyLXJ0L0NNYWtlTGlz dHMudHh0CisJCQk7OworCQlhcm0qLW11c2x8aTY4Ni1tdXNsKSAjIHNhbml0aXplciBjb2RlIGlz IGJyb2tlbiBzaW5jZSBpdCBkdXBsaWNhdGVzIHNvbWUgbGliYyBiaXRzCisJCQl2c2VkIC1pICdz L3NldChDT01QSUxFUl9SVF9IQVNfU0FOSVRJWkVSX0NPTU1PTiBUUlVFKS9zZXQoQ09NUElMRVJf UlRfSEFTX1NBTklUSVpFUl9DT01NT04gRkFMU0UpLycgXAorCQkJCSR7d3Jrc3JjfS9jb21waWxl ci1ydC9jbWFrZS9jb25maWctaXguY21ha2UKKwkJCTs7CisJZXNhYworfQorCitwcmVfY29uZmln dXJlKCkgeworCWxvY2FsIHRyaXBsZXQKKworCSMgVmFzdGx5IHJlZHVjZSBzaXplIG9mIGRlYnVn Z2luZyBzeW1ib2xzOgorCUNGTEFHUz0ke0NGTEFHUy8gLWcvIC1nMX0KKwlDWFhGTEFHUz0ke0NY WEZMQUdTLyAtZy8gLWcxfQorCisJIyBzaW5jZSBnY2M5LCB0aGUgYnVpbGQgbGlrZXMgdG8gYmxv dyB1cCBmb3IgcHBjMzIgYXBwYXJlbnRseSBiZWNhdXNlCisJIyBvZiBjbGFuZyBiZWluZyB0b28g bGFyZ2UgZm9yIGEgMjQtYml0IHJlbGF0aXZlIGNhbGwgdG8gdGhlIFBMVCwgc28KKwkjIG9wdGlt aXplIGZvciBzaXplIGluc3RlYWQKKwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJ cHBjNjQqKSA7OworCQltaXBzKi1tdXNsfHBwYyopIGNvbmZpZ3VyZV9hcmdzKz0iIC1EVk9JRF9D WFhfT1BUX0ZMQUdTPS1PcyIgOzsKKwllc2FjCisKKwlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRo ZW4KKwkJbXNnX25vcm1hbCAiQnVpbGRpbmcgaG9zdCB0YmxnZW5cbiIKKwkJbWtkaXIgLXAgYnVp bGQvSE9TVAorCQljZCBidWlsZC9IT1NUCisJCUNDPSIkQlVJTERfQ0MiIENYWD0iJEJVSUxEX0NY WCIgQ0ZMQUdTPSIkQlVJTERfQ0ZMQUdTIiBcCisJCQlDWFhGTEFHUz0iJEJVSUxEX0NYWEZMQUdT IiBMREZMQUdTPSIkQlVJTERfTERGTEFHUyIgXAorCQkJY21ha2UgLi4vLi4gLURDTUFLRV9CVUlM RF9UWVBFPVJlbGVhc2UgXAorCQkJLURMTFZNX0VOQUJMRV9QUk9KRUNUUz0ke19lbmFibGVkX3By b2plY3RzfQorCQltYWtlICR7bWFrZWpvYnN9IC1DIHV0aWxzL1RhYmxlR2VuCisJCW1ha2UgJHtt YWtlam9ic30gLUMgdG9vbHMvY2xhbmcvdXRpbHMvVGFibGVHZW4KKwkJWyAiJF9sbGRiX2VuYWJs ZSIgPSAieWVzIiBdICYmIG1ha2UgJHttYWtlam9ic30gLUMgdG9vbHMvbGxkYi91dGlscy9UYWJs ZUdlbgorCQljb25maWd1cmVfYXJncys9IiAtRExMVk1fVEFCTEVHRU49JHt3cmtzcmN9L2xsdm0v YnVpbGQvSE9TVC9iaW4vbGx2bS10YmxnZW4iCisJCWNvbmZpZ3VyZV9hcmdzKz0iIC1EQ0xBTkdf VEFCTEVHRU49JHt3cmtzcmN9L2xsdm0vYnVpbGQvSE9TVC9iaW4vY2xhbmctdGJsZ2VuIgorCQlb ICIkX2xsZGJfZW5hYmxlIiA9ICJ5ZXMiIF0gJiYgY29uZmlndXJlX2FyZ3MrPSIgLURMTERCX1RB QkxFR0VOPSR7d3Jrc3JjfS9sbHZtL2J1aWxkL0hPU1QvYmluL2xsZGItdGJsZ2VuIgorCQljZCAu Li8uLgorCWZpCisKKwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJaTY4NiopIF9h cmNoPSJYODYiOzsKKwkJeDg2XzY0KikgX2FyY2g9Ilg4NiI7OworCQlhcm12NSopIF9hcmNoPSJB cm12NXRlIjs7CisJCWFybXY2KikgX2FyY2g9IkFybXY2Ijs7CisJCWFybXY3KikgX2FyY2g9IkFy bXY3Ijs7CisJCWFhcmNoNjQqKSBfYXJjaD0iQUFyY2g2NCI7OworCQltaXBzKikgX2FyY2g9Ik1p cHMiOzsKKwkJcHBjKikgX2FyY2g9IlBvd2VyUEMiOzsKKwkJcmlzY3Y2NCopIF9hcmNoPSJSSVND VjY0Ijs7CisJZXNhYworCisJdHJpcGxldD0ke1hCUFNfQ1JPU1NfVFJJUExFVDotJFhCUFNfVFJJ UExFVH0KKworCWNvbmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9UQVJHRVRfQVJDSD0ke19hcmNofSIK Kwljb25maWd1cmVfYXJncys9IiAtRExMVk1fSE9TVF9UUklQTEU9JHt0cmlwbGV0fSIKKwljb25m aWd1cmVfYXJncys9IiAtRExMVk1fREVGQVVMVF9UQVJHRVRfVFJJUExFPSR7dHJpcGxldH0iCit9 CisKK2RvX2luc3RhbGwoKSB7CisJY2QgYnVpbGQKKwljbWFrZSAtRENNQUtFX0lOU1RBTExfUFJF RklYPSR7REVTVERJUn0vdXNyIC1QIGNtYWtlX2luc3RhbGwuY21ha2UKKworCSMgUmVxdWlyZWQg Zm9yIG11bHRpbGliLgorCWlmIFsgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiA9ICJ4ODZfNjQiIF07 IHRoZW4KKwkJZm9yIF9oZWFkZXIgaW4gbGx2bS1jb25maWc7IGRvCisJCQltdiAke0RFU1RESVJ9 L3Vzci9pbmNsdWRlL2xsdm0vQ29uZmlnLyR7X2hlYWRlcn17LC02NH0uaAorCQkJdmluc3RhbGwg JHtGSUxFU0RJUn0vbGx2bS1Db25maWctJHtfaGVhZGVyfS5oIDY0NCBcCisJCQkJdXNyL2luY2x1 ZGUvbGx2bS9Db25maWcgJHtfaGVhZGVyfS5oCisJCWRvbmUKKwlmaQorCisJIyBSZW1vdmUgbGx2 bS1jb25maWctaG9zdCBpbiBjcm9zcyBidWlsZHMuCisJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0 aGVuCisJCXJtIC1mICR7REVTVERJUn0vdXNyL2Jpbi9sbHZtLWNvbmZpZy1ob3N0CisJZmkKKwor CSMgSW5zdGFsbCBsaWJjeHhhYmkgaGVhZGVycworCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJjeHhh YmkvaW5jbHVkZS9fX2N4eGFiaV9jb25maWcuaCA2NDQgdXNyL2luY2x1ZGUKKwl2aW5zdGFsbCAk e3dya3NyY30vbGliY3h4YWJpL2luY2x1ZGUvY3h4YWJpLmggNjQ0IHVzci9pbmNsdWRlCisKKwkj IEluc3RhbGwgbGlidW53aW5kIGhlYWRlcnMKKwl2aW5zdGFsbCAke3dya3NyY30vbGlidW53aW5k L2luY2x1ZGUvX19saWJ1bndpbmRfY29uZmlnLmggNjQ0IHVzci9pbmNsdWRlCisJdmluc3RhbGwg JHt3cmtzcmN9L2xpYnVud2luZC9pbmNsdWRlL2xpYnVud2luZC5oIDY0NCB1c3IvaW5jbHVkZQor CXZpbnN0YWxsICR7d3Jrc3JjfS9saWJ1bndpbmQvaW5jbHVkZS91bndpbmQuaCA2NDQgdXNyL2lu Y2x1ZGUKKwl2aW5zdGFsbCAke3dya3NyY30vbGlidW53aW5kL2luY2x1ZGUvbWFjaC1vL2NvbXBh Y3RfdW53aW5kX2VuY29kaW5nLmggXAorCQk2NDQgdXNyL2luY2x1ZGUvbWFjaC1vCit9CisKK2Ns YW5nLWFuYWx5emVyX3BhY2thZ2UoKSB7CisJcHljb21waWxlX2RpcnM9InVzci9zaGFyZS9zY2Fu LXZpZXciCisJZGVwZW5kcz0iY2xhbmctJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSBweXRob24zIHBl cmwiCisJc2hvcnRfZGVzYys9IiAtIEEgc291cmNlIGNvZGUgYW5hbHlzaXMgZnJhbWV3b3JrIgor CWhvbWVwYWdlPSJodHRwczovL2NsYW5nLWFuYWx5emVyLmxsdm0ub3JnLyIKKwlwa2dfaW5zdGFs bCgpIHsKKwkJdm1vdmUgdXNyL3NoYXJlL21hbi9tYW4xL3NjYW4tYnVpbGQuMQorCQl2bW92ZSAi L3Vzci9iaW4vc2Nhbi0qIgorCQl2bW92ZSAiL3Vzci9zaGFyZS9zY2FuLSoiCisJCXZtb3ZlICIv dXNyL2xpYmV4ZWMvKmFuYWx5emVyIgorCX0KK30KKworY2xhbmctdG9vbHMtZXh0cmFfcGFja2Fn ZSgpIHsKKwlsaWIzMmRpc2FibGVkPXllcworCWRlcGVuZHM9ImNsYW5nLSR7dmVyc2lvbn1fJHty ZXZpc2lvbn0gcHl0aG9uMyIKKwlzaG9ydF9kZXNjKz0iIC0gRXh0cmEgQ2xhbmcgdG9vbHMiCisJ aG9tZXBhZ2U9Imh0dHBzOi8vY2xhbmcubGx2bS5vcmcvZXh0cmEvIgorCXBrZ19pbnN0YWxsKCkg eworCQl2bW92ZSB1c3IvaW5jbHVkZS9jbGFuZy10aWR5CisJCXZtb3ZlIHVzci9iaW4vY2xhbmct YXBwbHktcmVwbGFjZW1lbnRzCisJCXZtb3ZlIHVzci9iaW4vY2xhbmctcXVlcnkKKwkJdm1vdmUg dXNyL2Jpbi9jbGFuZy1yZW5hbWUKKwkJdm1vdmUgdXNyL2Jpbi9jbGFuZy10aWR5CisJCXZtb3Zl IHVzci9iaW4vZGlhZ3Rvb2wKKwkJdm1vdmUgdXNyL2Jpbi9maW5kLWFsbC1zeW1ib2xzCisJCXZt b3ZlIHVzci9iaW4vaG1hcHRvb2wKKwkJdm1vdmUgdXNyL2Jpbi9tb2R1bGFyaXplCisJCXZtb3Zl IHVzci9iaW4vcHAtdHJhY2UKKwkJdm1vdmUgdXNyL2Jpbi9zYW5jb3YKKwkJdm1vdmUgInVzci9s aWIvbGliY2xhbmdBcHBseVJlcGxhY2VtZW50cyoiCisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5n UXVlcnkqIgorCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZ1RpZHkqIgorCQl2bW92ZSAidXNyL3No YXJlL2NsYW5nLyp0aWR5KiIKKwkJdm1vdmUgdXNyL3NoYXJlL2RvYy9jbGFuZy10b29scworCQl2 bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjEvZXh0cmFjbGFuZ3Rvb2xzLjEKKwkJdm1vdmUgdXNyL3No YXJlL21hbi9tYW4xL2RpYWd0b29sLjEKKwl9Cit9CisKK2NsYW5nX3BhY2thZ2UoKSB7CisJbGli MzJkaXNhYmxlZD15ZXMKKwlkZXBlbmRzPSJsaWJzdGRjKystZGV2ZWwgbGliZ2NjLWRldmVsICBi aW51dGlscyAke1hCUFNfVEFSR0VUX0xJQkN9LWRldmVsCisJIGxpYmNsYW5nLSR7dmVyc2lvbn1f JHtyZXZpc2lvbn0iCisJc2hvcnRfZGVzYys9IiAtIEMgbGFuZ3VhZ2UgZmFtaWx5IGZyb250ZW5k IgorCWhvbWVwYWdlPSJodHRwczovL2NsYW5nLmxsdm0ub3JnLyIKKwlwa2dfaW5zdGFsbCgpIHsK KwkJdm1vdmUgdXNyL2luY2x1ZGUvY2xhbmcKKwkJdm1vdmUgdXNyL2luY2x1ZGUvY2xhbmctYwor CQl2bW92ZSAidXNyL2Jpbi8qY2xhbmcqIgorCQl2bW92ZSB1c3IvYmluL2MtaW5kZXgtdGVzdAor CQl2bW92ZSB1c3IvbGliL2NsYW5nCisJCXZtb3ZlIHVzci9saWIvY21ha2UvY2xhbmcKKwkJdm1v dmUgInVzci9saWIvbGliY2xhbmcqLmEiCisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nKi5zbyIK KwkJdm1vdmUgdXNyL3NoYXJlL2NsYW5nCisJCXZtb3ZlIHVzci9zaGFyZS9kb2MvY2xhbmcKKwkJ dm1vdmUgdXNyL3NoYXJlL21hbi9tYW4xL2NsYW5nLjEKKwl9Cit9CisKK2xpYmNsYW5nX3BhY2th Z2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIEMgZnJvbnRlbmQgcnVudGltZSBsaWJyYXJ5IgorCXBr Z19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZy5zby4qIgorCX0KK30KKwor bGliY2xhbmctY3BwX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIEMgZnJvbnRlbmQgcnVu dGltZSBsaWJyYXJ5IChDKysgaW50ZXJmYWNlKSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUg InVzci9saWIvbGliY2xhbmctY3BwLnNvLioiCisJfQorfQorCitsbGRfcGFja2FnZSgpIHsKKwls aWIzMmRpc2FibGVkPXllcworCXNob3J0X2Rlc2MrPSIgLSBsaW5rZXIiCisJaG9tZXBhZ2U9Imh0 dHBzOi8vbGxkLmxsdm0ub3JnIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvYmluL2xs ZCoKKwkJdm1vdmUgdXNyL2Jpbi93YXNtLWxkCisJCXZtb3ZlIHVzci9iaW4vbGQubGxkKgorCQl2 bW92ZSB1c3IvYmluL2xkNjQubGxkKgorCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2xsZAorCX0KK30K KworbGxkLWRldmVsX3BhY2thZ2UoKSB7CisJbGliMzJkaXNhYmxlZD15ZXMKKwlzaG9ydF9kZXNj Kz0iIC0gbGlua2VyIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJaG9tZXBhZ2U9Imh0dHBzOi8vbGxk Lmxsdm0ub3JnIgorCWRlcGVuZHM9ImxsZD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlwa2df aW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2luY2x1ZGUvbGxkCisJCXZtb3ZlIHVzci9saWIvY21h a2UvbGxkCisJCXZtb3ZlICJ1c3IvbGliL2xpYmxsZCphIgorCX0KK30KKworbGxkYl9wYWNrYWdl KCkgeworCWxpYjMyZGlzYWJsZWQ9eWVzCisJZGVwZW5kcys9IiBweXRob24zLXNpeCIKKwlzaG9y dF9kZXNjKz0iIC0gTExEQiBkZWJ1Z2dlciIKKwlob21lcGFnZT0iaHR0cHM6Ly9sbGRiLmxsdm0u b3JnLyIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2Jpbi8qbGxkYioKKwkJdm1vdmUg dXNyL2xpYi9saWJsbGRiKnNvLioKKwkJdm1vdmUgL3Vzci9saWIvcHl0aG9uKgorCX0KK30KKwor bGxkYi1kZXZlbF9wYWNrYWdlKCkgeworCWxpYjMyZGlzYWJsZWQ9eWVzCisJZGVwZW5kcz0ibGxk Yj49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gTExEQiBkZWJ1Z2dl ciAtIGRldmVsb3BtZW50IGZpbGVzIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5j bHVkZS9sbGRiCisJCXZtb3ZlICJ1c3IvbGliL2xpYmxsZGIqLnNvIgorCX0KK30KKworbGx2bS1s aWJ1bndpbmRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gbGlidW53aW5kIgorCXBrZ19p bnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJ1bndpbmQuc28uKiIKKwl9Cit9CisKK2xs dm0tbGlidW53aW5kLWRldmVsX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIGxpYnVud2lu ZCAtIGRldmVsb3BtZW50IGZpbGVzIgorCWRlcGVuZHM9Imxsdm0tbGlidW53aW5kPj0ke3ZlcnNp b259XyR7cmV2aXNpb259IgorCWNvbmZsaWN0cz0ibGlidW53aW5kLWRldmVsPj0wIgorCXBrZ19p bnN0YWxsKCkgeworCQl2bW92ZSB1c3IvbGliL2xpYnVud2luZC5zbworCQl2bW92ZSB1c3IvbGli L2xpYnVud2luZC5hCisJCXZtb3ZlICJ1c3IvaW5jbHVkZS8qdW53aW5kKiIKKwkJdm1vdmUgdXNy L2luY2x1ZGUvbWFjaC1vCisJCXZtb3ZlIHVzci9zaGFyZS9kb2MvbGlidW53aW5kCisJfQorfQor CitsaWJjeHhhYmlfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gbG93IGxldmVsIHN1cHBv cnQgZm9yIGxpYmMrKyIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYysr YWJpLnNvLioiCisJfQorfQorCitsaWJjeHhhYmktZGV2ZWxfcGFja2FnZSgpIHsKKwlzaG9ydF9k ZXNjKz0iIC0gbG93IGxldmVsIHN1cHBvcnQgZm9yIGxpYmMrKyAtIGRldmVsb3BtZW50IGZpbGVz IgorCWRlcGVuZHM9ImxpYmN4eGFiaT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlwa2dfaW5z dGFsbCgpIHsKKwkJdm1vdmUgdXNyL2xpYi9saWJjKythYmkuc28KKwkJdm1vdmUgdXNyL2xpYi9s aWJjKythYmkuYQorCQl2bW92ZSAidXNyL2luY2x1ZGUvKmN4eGFiaSoiCisJfQorfQorCitsaWJj eHhfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQysrIHN0YW5kYXJkIGxpYnJhcnkiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmMrKy5zby4qIgorCX0KK30KKwor bGliY3h4LWRldmVsX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIEMrKyBzdGFuZGFyZCBs aWJyYXJ5IC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJZGVwZW5kcz0ibGliY3h4Pj0ke3ZlcnNpb259 XyR7cmV2aXNpb259IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvbGliL2xpYmMrKy5z bworCQl2bW92ZSB1c3IvbGliL2xpYmMrKy5hCisJCXZtb3ZlIHVzci9saWIvbGliYysrZXhwZXJp bWVudGFsLmEKKwkJdm1vdmUgdXNyL2luY2x1ZGUvYysrCisJCXZtb3ZlIHVzci9zaGFyZS9kb2Mv bGliY3h4CisJfQorfQorCitsaWJvbXBfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQ2xh bmcgT3Blbk1QIHN1cHBvcnQgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNy L2xpYi9saWJvbXAuc28KKwkJdm1vdmUgInVzci9saWIvbGlib21wdGFyZ2V0LnJ0bC4qLnNvIgor CQl2bW92ZSB1c3IvbGliL2xpYmFyY2hlci5zbworCX0KK30KKworbGlib21wLWRldmVsX3BhY2th Z2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIENsYW5nIE9wZW5NUCBzdXBwb3J0IGxpYnJhcnkgLSBk ZXZlbG9wbWVudCBmaWxlcyIKKwlkZXBlbmRzPSJsaWJvbXA+PSR7dmVyc2lvbn1fJHtyZXZpc2lv bn0iCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYm9tcCouc28iCisJCXZt b3ZlICJ1c3IvbGliL2xpYmFyY2hlcioiCisJCXZtb3ZlICJ1c3IvaW5jbHVkZS9vbXAqLmgiCisJ CXZtb3ZlICJ1c3IvbGliL2NsYW5nLyR7dmVyc2lvbn0vaW5jbHVkZS9vbXAqLmgiCisJCXZtb3Zl IHVzci9zaGFyZS9tYW4vbWFuMS9sbHZtb3Blbm1wLjEKKwkJdm1vdmUgdXNyL3NoYXJlL2RvYy9v cGVubXAKKwl9Cit9CisKK2xpYmxsdm0xM19wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBy dW50aW1lIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYkxM Vk0tKi5zbyoiCisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvdXBkYXRlIGIvc3Jj cGtncy9sbHZtMTMvdXBkYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uZTk1Y2YyNmIzNTg2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvdXBkYXRl CkBAIC0wLDAgKzEsMyBAQAorc2l0ZT0iaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9q ZWN0L3JlbGVhc2VzIgorcGF0dGVybj0ibGx2bW9yZy1cSyhcZCsuKXsyfVxkKygtcmNcZCspPyIK K2lnbm9yZT0iKi1yYyoiCgpGcm9tIGNlY2NkYzFlZDljYTJlMmFmYjFhOWQ4NmQ5MzI4ZDdkNmNh NzgzN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0yMER1 cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+CkRh dGU6IEZyaSwgMzEgRGVjIDIwMjEgMTY6MjM6MTcgKzAyMDAKU3ViamVjdDogW1BBVENIIDAyLzIw XSBsbHZtOiB1cGRhdGUgdG8gMTMuMC4wCgotLS0KIHNyY3BrZ3MvbGx2bS90ZW1wbGF0ZSB8IDYg KysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGx2bS90ZW1wbGF0 ZQppbmRleCBhOTJkYjZmOTRmOWYuLmJjZmVlODIwOThmZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9s bHZtL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGx2bS90ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGx2bScKIHBrZ25hbWU9bGx2bQotdmVyc2lvbj0xMi4w LjAKK3ZlcnNpb249MTMuMC4wCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1tZXRhCi1kZXBlbmRz PSJsbHZtMTIiCi1yZXBsYWNlcz0ibGx2bTExPj0wIGxsdm0xMD49MCBsbHZtOT49MCBsbHZtOD49 MCBsbHZtNz49MCBsbHZtNi4wPj0wIGxsdm0zLjk+PTAiCitkZXBlbmRzPSJsbHZtMTMiCityZXBs YWNlcz0ibGx2bTEyPj0wIGxsdm0xMT49MCBsbHZtMTA+PTAgbGx2bTk+PTAgbGx2bTg+PTAgbGx2 bTc+PTAgbGx2bTYuMD49MCBsbHZtMy45Pj0wIgogc2hvcnRfZGVzYz0iTExWTSBtZXRhIHBhY2th Z2UiCiBtYWludGFpbmVyPSJFbm5vIEJvbGFuZCA8Z290dG94QHZvaWRsaW51eC5vcmc+IgogbGlj ZW5zZT0iUHVibGljIERvbWFpbiIKCkZyb20gYTZmMzhkNmExZTA0MDM3N2NhMTNhY2U3MzM3NzRh OGY1YzY0ZmJmMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0xvdWlz PTIwRHVwcj1DMz1BOT0yMEJlcnRvbmk/PQogPGxvdWlzZGJAbGVzcGV0aXRzcGVkZXN0cmVzLm9y Zz4KRGF0ZTogRnJpLCAzMSBEZWMgMjAyMSAxNjo0Mzo1NiArMDIwMApTdWJqZWN0OiBbUEFUQ0gg MDMvMjBdIGxsdm0xMjogcmVtb3ZlIGNsYW5nIHBhcnRzCgotLS0KIC4uLmNsYW5nLTAwMS1maXgt dW53aW5kLWNoYWluLWluY2x1c2lvbi5wYXRjaCB8ICA0NCAtLS0KIC4uLi9wYXRjaGVzL2NsYW5n LTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoICB8IDExMCAtLS0tLS0tCiAuLi4vY2xhbmctMDAz LXBwYzY0LWR5bmFtaWMtbGlua2VyLXBhdGgucGF0Y2ggfCAgMTMgLQogLi4uL3BhdGNoZXMvY2xh bmctMDA0LXBwYzY0LW11c2wtZWxmdjIucGF0Y2ggIHwgIDQ4IC0tLQogLi4uL2NvbXBpbGVyLXJ0 LWFhcmNoNjQtdWNvbnRleHQucGF0Y2ggICAgICAgIHwgIDExIC0KIC4uLi9jb21waWxlci1ydC1z YW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRjaCAgICB8ICAzNSAtLQogLi4uL2xsdm0xMi9wYXRjaGVz L2NvbXBpbGVyLXJ0LXNpemVfdC5wYXRjaCAgIHwgIDEwIC0KIC4uLi9wYXRjaGVzL2NvbXBpbGVy LXJ0LXhyYXktcHBjNjQtbXVzbC5wYXRjaCB8ICA2MiAtLS0tCiBzcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2xpYmN4eC1tdXNsLnBhdGNoICAgICAgfCAgMjYgLS0KIHNyY3BrZ3MvbGx2bTEyL3BhdGNo ZXMvbGliY3h4LXBwYy5wYXRjaCAgICAgICB8ICAyMiAtLQogLi4uL2xsdm0xMi9wYXRjaGVzL2xp YmN4eC1zc3Atbm9uc2hhcmVkLnBhdGNoIHwgIDExIC0KIHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMv bGliY3h4YWJpLWRsLnBhdGNoICAgICB8ICAyNSAtLQogc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9s aWJ1bndpbmQtcHBjMzIucGF0Y2ggIHwgIDYzIC0tLS0KIHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMv bGxkYi1tdXNsLnBhdGNoICAgICAgICB8ICAzMSAtLQogLi4uL2xsdm0xMi9wYXRjaGVzL3BwYzMy LWNvbXBpbGVyLXJ0LnBhdGNoICAgIHwgIDIxIC0tCiBzcmNwa2dzL2xsdm0xMi90ZW1wbGF0ZSAg ICAgICAgICAgICAgICAgICAgICAgfCAzMDEgKy0tLS0tLS0tLS0tLS0tLS0tCiAxNiBmaWxlcyBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgODMyIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAxLWZpeC11bndpbmQtY2hhaW4taW5j bHVzaW9uLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9j bGFuZy0wMDItYWRkLW11c2wtdHJpcGxlcy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAzLXBwYzY0LWR5bmFtaWMtbGlua2VyLXBhdGgucGF0 Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwNC1w cGM2NC1tdXNsLWVsZnYyLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIv cGF0Y2hlcy9jb21waWxlci1ydC1hYXJjaDY0LXVjb250ZXh0LnBhdGNoCiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jb21waWxlci1ydC1zYW5pdGl6ZXItcHBjNjQt bXVzbC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29t cGlsZXItcnQtc2l6ZV90LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIv cGF0Y2hlcy9jb21waWxlci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2gKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1tdXNsLnBhdGNoCiBkZWxldGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoCiBkZWxldGUg bW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtc3NwLW5vbnNoYXJlZC5w YXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4YWJp LWRsLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJ1 bndpbmQtcHBjMzIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2xsZGItbXVzbC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3Bh dGNoZXMvcHBjMzItY29tcGlsZXItcnQucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0x Mi9wYXRjaGVzL2NsYW5nLTAwMS1maXgtdW53aW5kLWNoYWluLWluY2x1c2lvbi5wYXRjaCBiL3Ny Y3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAxLWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9u LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNGVhYTc3ODNlN2EuLjAwMDAw MDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwMS1maXgtdW53aW5k LWNoYWluLWluY2x1c2lvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZy b20gMzUyOTc0MTY5ZjBkMmI1ZGEzZDUzMjFmNTg4ZjVlM2I1OTQxMzMwZSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IEFuZHJlYSBCcmFuY2FsZW9uaSA8bWl3YXhlQGdtYWlsLmNvbT4K LURhdGU6IFR1ZSwgOCBTZXAgMjAxNSAyMjoxNDo1NyArMDIwMAotU3ViamVjdDogW1BBVENIIDIv N10gZml4IHVud2luZCBjaGFpbiBpbmNsdXNpb24KLQotLS0tCi0gbGliL0hlYWRlcnMvdW53aW5k LmggfCA5ICsrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDQgZGVs ZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvSGVhZGVycy91bndpbmQuaCBiL2xpYi9IZWFk ZXJzL3Vud2luZC5oCi1pbmRleCAzMDNkNzkyLi40NGUxMGNjIDEwMDY0NAotLS0tIGEvY2xhbmcv bGliL0hlYWRlcnMvdW53aW5kLmgKLSsrKyBiL2NsYW5nL2xpYi9IZWFkZXJzL3Vud2luZC5oCi1A QCAtOSw5ICs5LDYgQEAKLSAKLSAvKiBTZWUgIkRhdGEgRGVmaW5pdGlvbnMgZm9yIGxpYmdjY19z IiBpbiB0aGUgTGludXggU3RhbmRhcmQgQmFzZS4qLwotIAotLSNpZm5kZWYgX19DTEFOR19VTldJ TkRfSAotLSNkZWZpbmUgX19DTEFOR19VTldJTkRfSAotLQotICNpZiBkZWZpbmVkKF9fQVBQTEVf XykgJiYgX19oYXNfaW5jbHVkZV9uZXh0KDx1bndpbmQuaD4pCi0gLyogRGFyd2luIChmcm9tIDEx Lnggb24pIHByb3ZpZGUgYW4gdW53aW5kLmguIElmIHRoYXQncyBhdmFpbGFibGUsCi0gICogdXNl IGl0LiBsaWJ1bndpbmQgd3JhcHMgc29tZSBvZiBpdHMgZGVmaW5pdGlvbnMgaW4gI2lmZGVmIF9H TlVfU09VUkNFLAotQEAgLTM5LDYgKzM2LDkgQEAKLSAjIGVuZGlmCi0gI2Vsc2UKLSAKLSsjaWZu ZGVmIF9fQ0xBTkdfVU5XSU5EX0gKLSsjZGVmaW5lIF9fQ0xBTkdfVU5XSU5EX0gKLSsKLSAjaW5j bHVkZSA8c3RkaW50Lmg+Ci0gCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi1AQCAtMzIyLDYgKzMyMiw3 IEBAIF9VbndpbmRfUHRyIF9VbndpbmRfR2V0VGV4dFJlbEJhc2Uoc3RydWN0IF9VbndpbmRfQ29u dGV4dCAqKTsKLSB9Ci0gI2VuZGlmCi0gCi0rI2VuZGlmIC8qIF9fQ0xBTkdfVU5XSU5EX0ggKi8K LSsKLSAjZW5kaWYKLSAKLS0jZW5kaWYgLyogX19DTEFOR19VTldJTkRfSCAqLwotLS0gCi0yLjUu MQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDItYWRkLW11c2wt dHJpcGxlcy5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAyLWFkZC1tdXNs LXRyaXBsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1Njg4ZDQwZGJj Mi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAyLWFk ZC1tdXNsLXRyaXBsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLS0t IGEvY2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0dudS5jcHAKLSsrKyBiL2NsYW5nL2xpYi9E cml2ZXIvVG9vbENoYWlucy9HbnUuY3BwCi1AQCAtMjA4Niw3ICsyMDg2LDggQEAgdm9pZCBHZW5l cmljX0dDQzo6R0NDSW5zdGFsbGF0aW9uRGV0ZWN0b3I6OkFkZERlZmF1bHRHQ0NQcmVmaXhlcygK LSAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBBUk1IRlRyaXBsZXNbXSA9IHsiYXJtLWxpbnV4 LWdudWVhYmloZiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImFybXY3aGwtcmVkaGF0LWxpbnV4LWdudWVhYmkiLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJhcm12NmhsLXN1c2UtbGludXgtZ251ZWFiaSIsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtc3Vz ZS1saW51eC1nbnVlYWJpIn07Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImFybXY3aGwtc3VzZS1saW51eC1nbnVlYWJpIiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJtdjdsLWxpbnV4LWdudWVhYmloZiJ9Owot ICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTWViTGliRGlyc1tdID0geyIvbGliIn07Ci0g ICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQVJNZWJUcmlwbGVzW10gPSB7ImFybWViLWxpbnV4 LWdudWVhYmkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJhcm1lYi1saW51eC1hbmRyb2lkZWFiaSJ9OwotQEAgLTIxNTMsOCArMjE1NCw3IEBAIHZvaWQg R2VuZXJpY19HQ0M6OkdDQ0luc3RhbGxhdGlvbkRldGVjdG9yOjpBZGREZWZhdWx0R0NDUHJlZml4 ZXMoCi0gICAgICAgInBvd2VycGM2NC1zdXNlLWxpbnV4IiwgInBvd2VycGMtbW9udGF2aXN0YS1s aW51eHNwZSJ9OwotICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFTGliRGlyc1tdID0g eyIvbGliMzIiLCAiL2xpYiJ9OwotICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFVHJp cGxlc1tdID0geyJwb3dlcnBjbGUtbGludXgtZ251IiwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwY2xlLXVua25vd24tbGludXgtZ251IiwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwY2xlLWxp bnV4LW11c2wifTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAicG93ZXJwY2xlLXVua25vd24tbGludXgtZ251In07Ci0gCi0gICBzdGF0aWMgY29uc3QgY2hh ciAqY29uc3QgUFBDNjRMaWJEaXJzW10gPSB7Ii9saWI2NCIsICIvbGliIn07Ci0gICBzdGF0aWMg Y29uc3QgY2hhciAqY29uc3QgUFBDNjRUcmlwbGVzW10gPSB7Ci1AQCAtMjIzNSw2ICsyMjM1LDg3 IEBAIHZvaWQgR2VuZXJpY19HQ0M6OkdDQ0luc3RhbGxhdGlvbkRldGVjdG9yOjpBZGREZWZhdWx0 R0NDUHJlZml4ZXMoCi0gICAgIHJldHVybjsKLSAgIH0KLSAKLSsgIGlmIChUYXJnZXRUcmlwbGUu aXNNdXNsKCkpIHsKLSsgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFBcmNoNjRNdXNsVHJp cGxlc1tdID0geyJhYXJjaDY0LWxpbnV4LW11c2wifTsKLSsgICAgc3RhdGljIGNvbnN0IGNoYXIg KmNvbnN0IEFSTUhGTXVzbFRyaXBsZXNbXSA9IHsKLSsgICAgICAgICJhcm0tbGludXgtbXVzbGVh YmloZiIsICJhcm12N2wtbGludXgtbXVzbGVhYmloZiIKLSsgICAgfTsKLSsgICAgc3RhdGljIGNv bnN0IGNoYXIgKmNvbnN0IEFSTU11c2xUcmlwbGVzW10gPSB7ImFybS1saW51eC1tdXNsZWFiaSJ9 OwotKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgWDg2XzY0TXVzbFRyaXBsZXNbXSA9IHsi eDg2XzY0LWxpbnV4LW11c2wifTsKLSsgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFg4Nk11 c2xUcmlwbGVzW10gPSB7Imk2ODYtbGludXgtbXVzbCJ9OwotKyAgICBzdGF0aWMgY29uc3QgY2hh ciAqY29uc3QgTUlQU011c2xUcmlwbGVzW10gPSB7Ci0rICAgICAgICAibWlwcy1saW51eC1tdXNs IiwgIm1pcHNlbC1saW51eC1tdXNsIiwKLSsgICAgICAgICJtaXBzZWwtbGludXgtbXVzbGhmIiwg Im1pcHMtbGludXgtbXVzbGhmIgotKyAgICB9OwotKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29u c3QgUFBDTXVzbFRyaXBsZXNbXSA9IHsicG93ZXJwYy1saW51eC1tdXNsIn07Ci0rICAgIHN0YXRp YyBjb25zdCBjaGFyICpjb25zdCBQUENMRU11c2xUcmlwbGVzW10gPSB7InBvd2VycGNsZS1saW51 eC1tdXNsIn07Ci0rICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUEM2NE11c2xUcmlwbGVz W10gPSB7InBvd2VycGM2NC1saW51eC1tdXNsIn07Ci0rICAgIHN0YXRpYyBjb25zdCBjaGFyICpj b25zdCBQUEM2NExFTXVzbFRyaXBsZXNbXSA9IHsicG93ZXJwYzY0bGUtbGludXgtbXVzbCJ9Owot KwotKyAgICBzd2l0Y2ggKFRhcmdldFRyaXBsZS5nZXRBcmNoKCkpIHsKLSsgICAgY2FzZSBsbHZt OjpUcmlwbGU6OmFhcmNoNjQ6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oQUFyY2g2NExp YkRpcnMpLCBlbmQoQUFyY2g2NExpYkRpcnMpKTsKLSsgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVu ZChiZWdpbihBQXJjaDY0TXVzbFRyaXBsZXMpLCBlbmQoQUFyY2g2NE11c2xUcmlwbGVzKSk7Ci0r ICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4oQUFyY2g2NExpYkRpcnMpLCBlbmQoQUFy Y2g2NExpYkRpcnMpKTsKLSsgICAgICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihB QXJjaDY0TXVzbFRyaXBsZXMpLCBlbmQoQUFyY2g2NE11c2xUcmlwbGVzKSk7Ci0rICAgICAgYnJl YWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjphcm06Ci0rICAgICAgTGliRGlycy5hcHBlbmQo YmVnaW4oQVJNTGliRGlycyksIGVuZChBUk1MaWJEaXJzKSk7Ci0rICAgICAgaWYgKFRhcmdldFRy aXBsZS5nZXRFbnZpcm9ubWVudCgpID09IGxsdm06OlRyaXBsZTo6TXVzbEVBQklIRikgewotKyAg ICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oQVJNSEZNdXNsVHJpcGxlcyksIGVuZChB Uk1IRk11c2xUcmlwbGVzKSk7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIFRyaXBsZUFsaWFz ZXMuYXBwZW5kKGJlZ2luKEFSTU11c2xUcmlwbGVzKSwgZW5kKEFSTU11c2xUcmlwbGVzKSk7Ci0r ICAgICAgfQotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6eDg2XzY0Ogot KyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKFg4Nl82NExpYkRpcnMpLCBlbmQoWDg2XzY0TGli RGlycykpOwotKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nl82NE11c2xUcmlw bGVzKSwgZW5kKFg4Nl82NE11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGliRGlycy5hcHBl bmQoYmVnaW4oWDg2TGliRGlycyksIGVuZChYODZMaWJEaXJzKSk7Ci0rICAgICAgQmlhcmNoVHJp cGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oWDg2TXVzbFRyaXBsZXMpLCBlbmQoWDg2TXVzbFRyaXBs ZXMpKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6Ong4NjoKLSsgICAg ICBMaWJEaXJzLmFwcGVuZChiZWdpbihYODZMaWJEaXJzKSwgZW5kKFg4NkxpYkRpcnMpKTsKLSsg ICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihYODZNdXNsVHJpcGxlcyksIGVuZChYODZN dXNsVHJpcGxlcykpOwotKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFg4Nl82NExp YkRpcnMpLCBlbmQoWDg2XzY0TGliRGlycykpOwotKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMu YXBwZW5kKGJlZ2luKFg4Nl82NE11c2xUcmlwbGVzKSwgZW5kKFg4Nl82NE11c2xUcmlwbGVzKSk7 Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjptaXBzOgotKyAgICAgIExp YkRpcnMuYXBwZW5kKGJlZ2luKE1JUFNMaWJEaXJzKSwgZW5kKE1JUFNMaWJEaXJzKSk7Ci0rICAg ICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oTUlQU011c2xUcmlwbGVzKSwgZW5kKE1JUFNN dXNsVHJpcGxlcykpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBj OgotKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQ0xpYkRpcnMpLCBlbmQoUFBDTGliRGly cykpOwotKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQ011c2xUcmlwbGVzKSwg ZW5kKFBQQ011c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4o UFBDNjRMaWJEaXJzKSwgZW5kKFBQQzY0TGliRGlycykpOwotKyAgICAgIEJpYXJjaFRyaXBsZUFs aWFzZXMuYXBwZW5kKGJlZ2luKFBQQzY0TXVzbFRyaXBsZXMpLCBlbmQoUFBDNjRNdXNsVHJpcGxl cykpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjbGU6Ci0rICAg ICAgTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDTEVMaWJEaXJzKSwgZW5kKFBQQ0xFTGliRGlycykp OwotKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQ0xFTXVzbFRyaXBsZXMpLCBl bmQoUFBDTEVNdXNsVHJpcGxlcykpOwotKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2lu KFBQQzY0TEVMaWJEaXJzKSwgZW5kKFBQQzY0TEVMaWJEaXJzKSk7Ci0rICAgICAgQmlhcmNoVHJp cGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDNjRMRU11c2xUcmlwbGVzKSwgZW5kKFBQQzY0TEVN dXNsVHJpcGxlcykpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBj NjQ6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDNjRMaWJEaXJzKSwgZW5kKFBQQzY0 TGliRGlycykpOwotKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQzY0TXVzbFRy aXBsZXMpLCBlbmQoUFBDNjRNdXNsVHJpcGxlcykpOwotKyAgICAgIEJpYXJjaExpYkRpcnMuYXBw ZW5kKGJlZ2luKFBQQ0xpYkRpcnMpLCBlbmQoUFBDTGliRGlycykpOwotKyAgICAgIEJpYXJjaFRy aXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQ011c2xUcmlwbGVzKSwgZW5kKFBQQ011c2xUcmlw bGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NGxlOgot KyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQzY0TEVMaWJEaXJzKSwgZW5kKFBQQzY0TEVM aWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDNjRMRU11c2xU cmlwbGVzKSwgZW5kKFBQQzY0TEVNdXNsVHJpcGxlcykpOwotKyAgICAgIEJpYXJjaExpYkRpcnMu YXBwZW5kKGJlZ2luKFBQQ0xFTGliRGlycyksIGVuZChQUENMRUxpYkRpcnMpKTsKLSsgICAgICBC aWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUENMRU11c2xUcmlwbGVzKSwgZW5kKFBQ Q0xFTXVzbFRyaXBsZXMpKTsKLSsgICAgICBicmVhazsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBi cmVhazsKLSsgICAgfQotKyAgICBUcmlwbGVBbGlhc2VzLnB1c2hfYmFjayhUYXJnZXRUcmlwbGUu c3RyKCkpOwotKyAgICBpZiAoVGFyZ2V0VHJpcGxlLnN0cigpICE9IEJpYXJjaFRyaXBsZS5zdHIo KSkKLSsgICAgICBCaWFyY2hUcmlwbGVBbGlhc2VzLnB1c2hfYmFjayhCaWFyY2hUcmlwbGUuc3Ry KCkpOwotKyAgICByZXR1cm47Ci0rICB9Ci0rCi0gICAvLyBBbmRyb2lkIHRhcmdldHMgc2hvdWxk IG5vdCB1c2UgR05VL0xpbnV4IHRvb2xzIG9yIGxpYnJhcmllcy4KLSAgIGlmIChUYXJnZXRUcmlw bGUuaXNBbmRyb2lkKCkpIHsKLSAgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFBcmNoNjRB bmRyb2lkVHJpcGxlc1tdID0gewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9j bGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0aC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvY2xhbmctMDAzLXBwYzY0LWR5bmFtaWMtbGlua2VyLXBhdGgucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhZDY0MTJkMWU2Yy4uMDAwMDAwMDAwMDAwCi0tLSBh L3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAzLXBwYzY0LWR5bmFtaWMtbGlua2VyLXBh dGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0tLS0gYS9jbGFuZy9saWIv RHJpdmVyL1Rvb2xDaGFpbnMvTGludXguY3BwCi0rKysgYi9jbGFuZy9saWIvRHJpdmVyL1Rvb2xD aGFpbnMvTGludXguY3BwCi1AQCAtNTA0LDEwICs1MDQsNiBAQCBzdGQ6OnN0cmluZyBMaW51eDo6 Z2V0RHluYW1pY0xpbmtlcihjb25zdCBBcmdMaXN0ICZBcmdzKSBjb25zdCB7Ci0gICAgIExvYWRl ciA9ICJsZC5zby4xIjsKLSAgICAgYnJlYWs7Ci0gICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjQ6 Ci0tICAgIExpYkRpciA9ICJsaWI2NCI7Ci0tICAgIExvYWRlciA9Ci0tICAgICAgICAodG9vbHM6 OnBwYzo6aGFzUFBDQWJpQXJnKEFyZ3MsICJlbGZ2MiIpKSA/ICJsZDY0LnNvLjIiIDogImxkNjQu c28uMSI7Ci0tICAgIGJyZWFrOwotICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0bGU6Ci0gICAg IExpYkRpciA9ICJsaWI2NCI7Ci0gICAgIExvYWRlciA9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xs dm0xMi9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNoIGIvc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMjFmYzgwMDNjNWYxLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3Jj cGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS0tLSBhL2NsYW5nL2xpYi9CYXNpYy9UYXJnZXRz L1BQQy5oCi0rKysgYi9jbGFuZy9saWIvQmFzaWMvVGFyZ2V0cy9QUEMuaAotQEAgLTQxNSwxMSAr NDE1LDEwIEBAIHB1YmxpYzoKLSAgICAgICBMb25nRG91YmxlRm9ybWF0ID0gJmxsdm06OkFQRmxv YXQ6OklFRUVkb3VibGUoKTsKLSAgICAgfSBlbHNlIGlmICgoVHJpcGxlLmdldEFyY2goKSA9PSBs bHZtOjpUcmlwbGU6OnBwYzY0bGUpKSB7Ci0gICAgICAgRGF0YUxheW91dCA9ICJlLW06ZS1pNjQ6 NjQtbjMyOjY0IjsKLS0gICAgICBBQkkgPSAiZWxmdjIiOwotICAgICB9IGVsc2UgewotICAgICAg IERhdGFMYXlvdXQgPSAiRS1tOmUtaTY0OjY0LW4zMjo2NCI7Ci0tICAgICAgQUJJID0gImVsZnYx IjsKLSAgICAgfQotKyAgICBBQkkgPSAiZWxmdjIiOwotIAotICAgICBpZiAoVHJpcGxlLmlzT1NG cmVlQlNEKCkgfHwgVHJpcGxlLmlzT1NPcGVuQlNEKCkgfHwgVHJpcGxlLmlzTXVzbCgpKSB7Ci0g ICAgICAgTG9uZ0RvdWJsZVdpZHRoID0gTG9uZ0RvdWJsZUFsaWduID0gNjQ7Ci0tLS0gYS9jbGFu Zy9saWIvQ29kZUdlbi9UYXJnZXRJbmZvLmNwcAotKysrIGIvY2xhbmcvbGliL0NvZGVHZW4vVGFy Z2V0SW5mby5jcHAKLUBAIC0xMDkyNyw5ICsxMDkyNyw5IEBAIGNvbnN0IFRhcmdldENvZGVHZW5J bmZvICZDb2RlR2VuTW9kdWxlOjpnZXRUYXJnZXRDb2RlR2VuSW5mbygpIHsKLSAgICAgICByZXR1 cm4gU2V0Q0dJbmZvKG5ldyBBSVhUYXJnZXRDb2RlR2VuSW5mbyhUeXBlcywgLypJczY0Qml0Ki8g dHJ1ZSkpOwotIAotICAgICBpZiAoVHJpcGxlLmlzT1NCaW5Gb3JtYXRFTEYoKSkgewotLSAgICAg IFBQQzY0X1NWUjRfQUJJSW5mbzo6QUJJS2luZCBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZvOjpF TEZ2MTsKLS0gICAgICBpZiAoZ2V0VGFyZ2V0KCkuZ2V0QUJJKCkgPT0gImVsZnYyIikKLS0gICAg ICAgIEtpbmQgPSBQUEM2NF9TVlI0X0FCSUluZm86OkVMRnYyOwotKyAgICAgIFBQQzY0X1NWUjRf QUJJSW5mbzo6QUJJS2luZCBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZvOjpFTEZ2MjsKLSsgICAg ICBpZiAoZ2V0VGFyZ2V0KCkuZ2V0QUJJKCkgPT0gImVsZnYxIikKLSsgICAgICAgIEtpbmQgPSBQ UEM2NF9TVlI0X0FCSUluZm86OkVMRnYxOwotICAgICAgIGJvb2wgSXNTb2Z0RmxvYXQgPSBDb2Rl R2VuT3B0cy5GbG9hdEFCSSA9PSAic29mdCI7Ci0gCi0gICAgICAgcmV0dXJuIFNldENHSW5mbygK LS0tLSBhL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9DbGFuZy5jcHAKLSsrKyBiL2NsYW5n L2xpYi9Ecml2ZXIvVG9vbENoYWlucy9DbGFuZy5jcHAKLUBAIC0xOTIwLDE0ICsxOTIwLDcgQEAg dm9pZCBDbGFuZzo6QWRkUFBDVGFyZ2V0QXJncyhjb25zdCBBcmdMaXN0ICZBcmdzLAotICAgY29u c3QgbGx2bTo6VHJpcGxlICZUID0gZ2V0VG9vbENoYWluKCkuZ2V0VHJpcGxlKCk7Ci0gICBpZiAo VC5pc09TQmluRm9ybWF0RUxGKCkpIHsKLSAgICAgc3dpdGNoIChnZXRUb29sQ2hhaW4oKS5nZXRB cmNoKCkpIHsKLS0gICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0OiB7Ci0tICAgICAgaWYgKChU LmlzT1NGcmVlQlNEKCkgJiYgVC5nZXRPU01ham9yVmVyc2lvbigpID49IDEzKSB8fAotLSAgICAg ICAgICBULmlzT1NPcGVuQlNEKCkgfHwgVC5pc011c2woKSkKLS0gICAgICAgIEFCSU5hbWUgPSAi ZWxmdjIiOwotLSAgICAgIGVsc2UKLS0gICAgICAgIEFCSU5hbWUgPSAiZWxmdjEiOwotLSAgICAg IGJyZWFrOwotLSAgICB9Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NDoKLSAgICAgY2Fz ZSBsbHZtOjpUcmlwbGU6OnBwYzY0bGU6Ci0gICAgICAgQUJJTmFtZSA9ICJlbGZ2MiI7Ci0gICAg ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0 LWFhcmNoNjQtdWNvbnRleHQucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NvbXBpbGVy LXJ0LWFhcmNoNjQtdWNvbnRleHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDg5M2MwNTlkN2I4ZC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMv Y29tcGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEx ICswLDAgQEAKLS0tLSBhL2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXpl cl9saW51eC5jcHAub3JpZwotKysrIGIvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24v c2FuaXRpemVyX2xpbnV4LmNwcAotQEAgLTE3OTksNyArMTc5OSw3IEBACi0gCi0gc3RhdGljIGJv b2wgQWFyY2g2NEdldEVTUih1Y29udGV4dF90ICp1Y29udGV4dCwgdTY0ICplc3IpIHsKLSAgIHN0 YXRpYyBjb25zdCB1MzIga0Vzck1hZ2ljID0gMHg0NTUzNTIwMTsKLS0gIHU4ICphdXggPSB1Y29u dGV4dC0+dWNfbWNvbnRleHQuX19yZXNlcnZlZDsKLSsgIHU4ICphdXggPSByZWludGVycHJldF9j YXN0PHU4ICo+KHVjb250ZXh0LT51Y19tY29udGV4dC5fX3Jlc2VydmVkKTsKLSAgIHdoaWxlICh0 cnVlKSB7Ci0gICAgIF9hYXJjaDY0X2N0eCAqY3R4ID0gKF9hYXJjaDY0X2N0eCAqKWF1eDsKLSAg ICAgaWYgKGN0eC0+c2l6ZSA9PSAwKSBicmVhazsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBwYzY0LW11c2wucGF0Y2ggYi9zcmNwa2dz L2xsdm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNhbml0aXplci1wcGM2NC1tdXNsLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWYxNmQyNGYzNDAuLjAwMDAwMDAwMDAwMAot LS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNhbml0aXplci1wcGM2NC1t dXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLS0tIGEvY29tcGlsZXIt cnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNwcAotKysrIGIvY29tcGls ZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNwcAotQEAgLTc0LDYg Kzc0LDEwIEBACi0gI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0gI2VuZGlmCi0gCi0rI2lmIFNB TklUSVpFUl9MSU5VWCAmJiBkZWZpbmVkKF9fcG93ZXJwY19fKQotKyNpbmNsdWRlIDxhc20vcHRy YWNlLmg+Ci0rI2VuZGlmCi0rCi0gI2lmIFNBTklUSVpFUl9MSU5VWCAmJiAhU0FOSVRJWkVSX0FO RFJPSUQKLSAjaW5jbHVkZSA8c3lzL3BlcnNvbmFsaXR5Lmg+Ci0gI2VuZGlmCi0tLS0gYS9jb21w aWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfcGxhdGZvcm1fbGltaXRzX3Bv c2l4LmNwcAotKysrIGIvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVy X3BsYXRmb3JtX2xpbWl0c19wb3NpeC5jcHAKLUBAIC05Miw3ICs5Miw3IEBACi0gIyBpbmNsdWRl IDx1dGltZS5oPgotICMgaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotICNpZiBkZWZpbmVkKF9fbWlw czY0KSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLS0g ICAgU0FOSVRJWkVSX1JJU0NWNjQKLSsgICAgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgU0FOSVRJ WkVSX1JJU0NWNjQKLSAjICBpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0gIyAgaWZkZWYgX19hcm1f XwotIHR5cGVkZWYgc3RydWN0IHVzZXJfZnByZWdzIGVsZl9mcHJlZ3NldF90OwotLS0tIGEvY29t cGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX3N0b3B0aGV3b3JsZF9saW51 eF9saWJjZGVwLmNwcAotKysrIGIvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2Fu aXRpemVyX3N0b3B0aGV3b3JsZF9saW51eF9saWJjZGVwLmNwcAotQEAgLTMxLDcgKzMxLDcgQEAK LSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+IC8vIGZvciBwaWRfdAotICNpbmNsdWRlIDxzeXMvdWlv Lmg+IC8vIGZvciBpb3ZlYwotICNpbmNsdWRlIDxlbGYuaD4gLy8gZm9yIE5UX1BSU1RBVFVTCi0t I2lmIChkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBTQU5JVElaRVJfUklTQ1Y2NCkgJiYgIVNBTklU SVpFUl9BTkRST0lECi0rI2lmIChkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93 ZXJwY19fKSB8fCBTQU5JVElaRVJfUklTQ1Y2NCkgJiYgIVNBTklUSVpFUl9BTkRST0lECi0gLy8g R0xJQkMgMi4yMCsgc3lzL3VzZXIgZG9lcyBub3QgaW5jbHVkZSBhc20vcHRyYWNlLmgKLSAjIGlu Y2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvY29tcGlsZXItcnQtc2l6ZV90LnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hl cy9jb21waWxlci1ydC1zaXplX3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDJjNjMwNjNhNWU5ZS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMv Y29tcGlsZXItcnQtc2l6ZV90LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAot LS0tIGEvY29tcGlsZXItcnQvbGliL2Z1enplci9GdXp6ZXJJbnRlcmNlcHRvcnMuY3BwLm9yaWcK LSsrKyBiL2NvbXBpbGVyLXJ0L2xpYi9mdXp6ZXIvRnV6emVySW50ZXJjZXB0b3JzLmNwcAotQEAg LTI1LDYgKzI1LDcgQEAKLSAgIH0KLSAKLSAjaW5jbHVkZSA8Y2Fzc2VydD4KLSsjaW5jbHVkZSA8 Y3N0ZGRlZj4KLSAjaW5jbHVkZSA8Y3N0ZGludD4KLSAjaW5jbHVkZSA8ZGxmY24uaD4gLy8gZm9y IGRsc3ltKCkKLSAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXIt cnQteHJheS1wcGM2NC1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jb21waWxl ci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGQwYjYxYzgwYzg5Ny4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMv Y29tcGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIg KzAsMCBAQAotLS0tIGEvY29tcGlsZXItcnQvbGliL3hyYXkveHJheV9wb3dlcnBjNjQuaW5jCi0r KysgYi9jb21waWxlci1ydC9saWIveHJheS94cmF5X3Bvd2VycGM2NC5pbmMKLUBAIC0xMiw3ICsx MiwxMyBAQAotIAotICNpbmNsdWRlIDxjc3RkaW50PgotICNpbmNsdWRlIDxtdXRleD4KLSsjaWZk ZWYgX19HTElCQ19fCi0gI2luY2x1ZGUgPHN5cy9wbGF0Zm9ybS9wcGMuaD4KLSsjZWxzZQotKyNp bmNsdWRlIDxjY3R5cGU+Ci0rI2luY2x1ZGUgPGNzdHJpbmc+Ci0rI2luY2x1ZGUgPGNzdGRsaWI+ Ci0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgInhyYXlfZGVmcy5oIgotIAotQEAgLTIwLDEzICsyNiw0 NSBAQCBuYW1lc3BhY2UgX194cmF5IHsKLSAKLSBBTFdBWVNfSU5MSU5FIHVpbnQ2NF90IHJlYWRU U0ModWludDhfdCAmQ1BVKSBYUkFZX05FVkVSX0lOU1RSVU1FTlQgewotICAgQ1BVID0gMDsKLSsj aWZkZWYgX19HTElCQ19fCi0gICByZXR1cm4gX19wcGNfZ2V0X3RpbWViYXNlKCk7Ci0rI2Vsc2UK LSsgIHJldHVybiBfX2J1aWx0aW5fcHBjX2dldF90aW1lYmFzZSgpOwotKyNlbmRpZgotIH0KLSAK LSBpbmxpbmUgdWludDY0X3QgZ2V0VFNDRnJlcXVlbmN5KCkgWFJBWV9ORVZFUl9JTlNUUlVNRU5U IHsKLSAgIHN0YXRpYyBzdGQ6Om11dGV4IE07Ci0gICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRl eD4gR3VhcmQoTSk7Ci0rI2lmZGVmIF9fR0xJQkNfXwotICAgcmV0dXJuIF9fcHBjX2dldF90aW1l YmFzZV9mcmVxKCk7Ci0rI2Vsc2UKLSsgIC8qIEZJWE1FOiBhIGxlc3MgZGlydHkgaW1wbGVtZW50 YXRpb24/ICovCi0rICBzdGF0aWMgdWludDY0X3QgYmFzZTsKLSsgIGlmICghYmFzZSkgewotKyAg ICBGSUxFICpmID0gZm9wZW4oIi9wcm9jL2NwdWluZm8iLCAicmIiKTsKLSsgICAgaWYgKGYpIHsK LSsgICAgICBzc2l6ZV90IG5yOwotKyAgICAgIC8qIHZpcnR1YWxseSBhbHdheXMgYmlnIGVub3Vn aCB0byBob2xkIHRoZSBsaW5lICovCi0rICAgICAgY2hhciBidWZbNTEyXTsKLSsgICAgICB3aGls ZSAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZikpIHsKLSsgICAgICAgIGNoYXIgKnJldCA9IHN0 cnN0cihidWYsICJ0aW1lYmFzZSIpOwotKyAgICAgICAgaWYgKCFyZXQpIHsKLSsgICAgICAgICAg Y29udGludWU7Ci0rICAgICAgICB9Ci0rICAgICAgICByZXQgKz0gc2l6ZW9mKCJ0aW1lYmFzZSIp IC0gMTsKLSsgICAgICAgIHJldCA9IHN0cmNocihyZXQsICc6Jyk7Ci0rICAgICAgICBpZiAoIXJl dCkgewotKyAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgIH0KLSsgICAgICAgIGJhc2UgPSBz dHJ0b3VsKHJldCArIDEsIG51bGxwdHIsIDEwKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIH0K LSsgICAgICBmY2xvc2UoZik7Ci0rICAgIH0KLSsgIH0KLSsgIHJldHVybiBiYXNlOwotKyNlbmRp ZgotIH0KLSAKLSBpbmxpbmUgYm9vbCBwcm9iZVJlcXVpcmVkQ1BVRmVhdHVyZXMoKSBYUkFZX05F VkVSX0lOU1RSVU1FTlQgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJj eHgtbXVzbC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZDMxZmZjMmNiMS4uMDAwMDAwMDAwMDAw Ci0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSwyNiArMCwwIEBACi0tLS0gYS9saWJjeHgvaW5jbHVkZS9sb2NhbGUKLSsrKyBi L2xpYmN4eC9pbmNsdWRlL2xvY2FsZQotQEAgLTc0Miw3ICs3NDIsMTEgQEAgX19udW1fZ2V0X3Np Z25lZF9pbnRlZ3JhbChjb25zdCBjaGFyKiBfX2EsIGNvbnN0IGNoYXIqIF9fYV9lbmQsCi0gICAg ICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGVycm5vKT46OnR5cGUgX19z YXZlX2Vycm5vID0gZXJybm87Ci0gICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAgICBjaGFyICpf X3AyOwotKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoX19HTElCQ19fKQotKyAg ICAgICAgbG9uZyBsb25nIF9fbGwgPSBzdHJ0b2xsKF9fYSwgJl9fcDIsIF9fYmFzZSk7Ci0rI2Vs c2UKLSAgICAgICAgIGxvbmcgbG9uZyBfX2xsID0gc3RydG9sbF9sKF9fYSwgJl9fcDIsIF9fYmFz ZSwgX0xJQkNQUF9HRVRfQ19MT0NBTEUpOwotKyNlbmRpZgotICAgICAgICAgdHlwZW5hbWUgcmVt b3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJubyk+Ojp0eXBlIF9fY3VycmVudF9lcnJubyA9IGVy cm5vOwotICAgICAgICAgaWYgKF9fY3VycmVudF9lcnJubyA9PSAwKQotICAgICAgICAgICAgIGVy cm5vID0gX19zYXZlX2Vycm5vOwotQEAgLTc4Miw3ICs3ODYsMTEgQEAgX19udW1fZ2V0X3Vuc2ln bmVkX2ludGVncmFsKGNvbnN0IGNoYXIqIF9fYSwgY29uc3QgY2hhciogX19hX2VuZCwKLSAgICAg ICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlwZSBfX3Nh dmVfZXJybm8gPSBlcnJubzsKLSAgICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgIGNoYXIgKl9f cDI7Ci0rI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX0dMSUJDX18pCi0rICAg ICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19sbCA9IHN0cnRvdWxsKF9fYSwgJl9fcDIsIF9fYmFz ZSk7Ci0rI2Vsc2UKLSAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2xsID0gc3RydG91bGxf bChfX2EsICZfX3AyLCBfX2Jhc2UsIF9MSUJDUFBfR0VUX0NfTE9DQUxFKTsKLSsjZW5kaWYKLSAg ICAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlwZSBf X2N1cnJlbnRfZXJybm8gPSBlcnJubzsKLSAgICAgICAgIGlmIChfX2N1cnJlbnRfZXJybm8gPT0g MCkKLSAgICAgICAgICAgICBlcnJubyA9IF9fc2F2ZV9lcnJubzsKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LXBwYy5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNo ZXMvbGliY3h4LXBwYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E5MmY4 MDA0ZTFjLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgt cHBjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhpcyBlbnN1cmVzIGBp c19pZWM1NTlgIGlzIGRlZmluZWQgY29ycmVjdGx5IHVuZGVyIGFsbCBsb25nIGRvdWJsZSBBQklz LAotaW5jbHVkaW5nIG11c2wgYW5kIGl0cyA2NC1iaXQgbG9uZyBkb3VibGUuIEFsc28sIGBfX3Bw Y19fYCBvciBgX19wcGM2NF9fYAotaXMgbm90IGRlZmluZWQgb24gZ2NjLgotCi0tLS0gYS9saWJj eHgvaW5jbHVkZS9saW1pdHMKLSsrKyBiL2xpYmN4eC9pbmNsdWRlL2xpbWl0cwotQEAgLTQyNiw4 ICs0MjYsMTQgQEAgcHJvdGVjdGVkOgotICAgICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHN0 YXRpYyBfTElCQ1BQX0NPTlNURVhQUiB0eXBlIHNpZ25hbGluZ19OYU4oKSBfTk9FWENFUFQge3Jl dHVybiBfX2J1aWx0aW5fbmFuc2woIiIpO30KLSAgICAgX0xJQkNQUF9JTkxJTkVfVklTSUJJTElU WSBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgdHlwZSBkZW5vcm1fbWluKCkgX05PRVhDRVBUIHty ZXR1cm4gX19MREJMX0RFTk9STV9NSU5fXzt9Ci0gCi0tI2lmIChkZWZpbmVkKF9fcHBjX18pIHx8 IGRlZmluZWQoX19wcGM2NF9fKSkKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQotKyNpZiAoX19MREJMX01BWF9FWFBfXyA+IF9fREJMX01BWF9FWFBf XykgfHwgKF9fTERCTF9NQU5UX0RJR19fID09IF9fREJMX01BTlRfRElHX18pCi0rICAgIC8qIElF RUUgNzU0IHF1YWRydXBsZSBvciBkb3VibGUgcHJlY2lzaW9uICovCi0rICAgIHN0YXRpYyBfTElC Q1BQX0NPTlNURVhQUiBjb25zdCBib29sIGlzX2llYzU1OSA9IHRydWU7Ci0rI2Vsc2UKLSsgICAg LyogMTI4LWJpdCBJQk0gZG91YmxlLWRvdWJsZSAqLwotICAgICBzdGF0aWMgX0xJQkNQUF9DT05T VEVYUFIgY29uc3QgYm9vbCBpc19pZWM1NTkgPSBmYWxzZTsKLSsjZW5kaWYKLSAjZWxzZQotICAg ICBzdGF0aWMgX0xJQkNQUF9DT05TVEVYUFIgY29uc3QgYm9vbCBpc19pZWM1NTkgPSB0cnVlOwot ICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtc3NwLW5v bnNoYXJlZC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LXNzcC1ub25zaGFy ZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMjkyYmViMmZjZC4uMDAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LXNzcC1ub25zaGFy ZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0tLS0gYS9saWJjeHgvQ01h a2VMaXN0cy50eHQKLSsrKyBiL2xpYmN4eC9DTWFrZUxpc3RzLnR4dAotQEAgLTc2OSw2ICs3Njks OCBAQCBmdW5jdGlvbihjeHhfbGlua19zeXN0ZW1fbGlicmFyaWVzIHRhcmdldCkKLSAgICAgdGFy Z2V0X2xpbmtfbGlicmFyaWVzKCR7dGFyZ2V0fSBQUklWQVRFIGF0b21pYykKLSAgIGVuZGlmKCkK LSAKLSsjc3NwICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgc3NwX25v bnNoYXJlZCkKLSsKLSAgIGlmIChNSU5HVykKLSAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7 dGFyZ2V0fSBQUklWQVRFICIke01JTkdXX0xJQlJBUklFU30iKQotICAgZW5kaWYoKQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2ggYi9zcmNwa2dz L2xsdm0xMi9wYXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggM2ExNWY5ZGI4Yzk4Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIv cGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBA Ci1BbHNvIGxpbmsgdG8gLWxkbCB0byBwcmV2ZW50IHVuZGVmaW5lZCByZWZlcmVuY2VzLgotCi0t LS0gYS9saWJjeHhhYmkvc3JjL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9saWJjeHhhYmkvc3JjL0NN YWtlTGlzdHMudHh0Ci1AQCAtNzMsNiArNzMsNyBAQAotICAgZW5kaWYoKQotIAotICAgYWRkX2xp YnJhcnlfZmxhZ3NfaWYoTElCQ1hYQUJJX0hBU19DX0xJQiBjKQotKyAgYWRkX2xpYnJhcnlfZmxh Z3NfaWYoTElCQ1hYQUJJX0hBU19DX0xJQiBkbCkKLSBlbmRpZigpCi0gCi0gaWYgKExJQkNYWEFC SV9VU0VfTExWTV9VTldJTkRFUikKLS0tLSBhL2xpYmN4eC9DTWFrZUxpc3RzLnR4dAotKysrIGIv bGliY3h4L0NNYWtlTGlzdHMudHh0Ci1AQCAtNzQ1LDYgKzc0NSwxMCBAQAotICAgICB0YXJnZXRf bGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgbSkKLSAgIGVuZGlmKCkKLSAKLSsgIGlm IChMSUJDWFhfSEFTX0NfTElCKQotKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9 IFBSSVZBVEUgZGwpCi0rICBlbmRpZigpCi0rCi0gICBpZiAoTElCQ1hYX0hBU19SVF9MSUIpCi0g ICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSBydCkKLSAgIGVuZGlm KCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGlidW53aW5kLXBwYzMyLnBh dGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJ1bndpbmQtcHBjMzIucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0YWE3NTc2ZWNmOS4uMDAwMDAwMDAwMDAwCi0tLSBh L3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGlidW53aW5kLXBwYzMyLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsNjMgKzAsMCBAQAotVGhpcyBmaXhlcyBidWlsZCBhdCBsZWFzdCB3aXRoIGdjYzkg d2hpY2ggZG9lcyBub3QgZGVmaW5lIGBfX3BwY19fYC4KLQotLS0tIGEvbGlidW53aW5kL2luY2x1 ZGUvX19saWJ1bndpbmRfY29uZmlnLmgKLSsrKyBiL2xpYnVud2luZC9pbmNsdWRlL19fbGlidW53 aW5kX2NvbmZpZy5oCi1AQCAtNDksNyArNDksNyBAQAotICMgIGRlZmluZSBfTElCVU5XSU5EX0NP TlRFWFRfU0laRSAxNjcKLSAjICBkZWZpbmUgX0xJQlVOV0lORF9DVVJTT1JfU0laRSAxNzkKLSAj ICBkZWZpbmUgX0xJQlVOV0lORF9ISUdIRVNUX0RXQVJGX1JFR0lTVEVSIF9MSUJVTldJTkRfSElH SEVTVF9EV0FSRl9SRUdJU1RFUl9QUEM2NAotLSMgZWxpZiBkZWZpbmVkKF9fcHBjX18pCi0rIyBl bGlmIGRlZmluZWQoX19wb3dlcnBjX18pCi0gIyAgZGVmaW5lIF9MSUJVTldJTkRfVEFSR0VUX1BQ QyAxCi0gIyAgZGVmaW5lIF9MSUJVTldJTkRfQ09OVEVYVF9TSVpFIDExNwotICMgIGRlZmluZSBf TElCVU5XSU5EX0NVUlNPUl9TSVpFIDEyNAotLS0tIGEvbGlidW53aW5kL3NyYy9VbndpbmRSZWdp c3RlcnNSZXN0b3JlLlMKLSsrKyBiL2xpYnVud2luZC9zcmMvVW53aW5kUmVnaXN0ZXJzUmVzdG9y ZS5TCi1AQCAtMzkyLDcgKzM5Miw3IEBAIExub3ZlYzoKLSAgIFBQQzY0X0xSKDMpCi0gICBiY3Ry Ci0gCi0tI2VsaWYgZGVmaW5lZChfX3BwY19fKQotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18p Ci0gCi0gREVGSU5FX0xJQlVOV0lORF9GVU5DVElPTihfWk45bGlidW53aW5kMTNSZWdpc3RlcnNf cHBjNmp1bXB0b0V2KQotIC8vCi0tLS0gYS9saWJ1bndpbmQvc3JjL1Vud2luZFJlZ2lzdGVyc1Nh dmUuUwotKysrIGIvbGlidW53aW5kL3NyYy9VbndpbmRSZWdpc3RlcnNTYXZlLlMKLUBAIC01NTQs NyArNTU0LDcgQEAgREVGSU5FX0xJQlVOV0lORF9GVU5DVElPTihfX3Vud19nZXRjb250ZXh0KQot ICAgYmxyCi0gCi0gCi0tI2VsaWYgZGVmaW5lZChfX3BwY19fKQotKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjX18pCi0gCi0gLy8KLSAvLyBleHRlcm4gaW50IHVud19nZXRjb250ZXh0KHVud19jb250 ZXh0X3QqIHRocmVhZF9zdGF0ZSkKLS0tLSBhL2xpYnVud2luZC9zcmMvY29uZmlnLmgKLSsrKyBi L2xpYnVud2luZC9zcmMvY29uZmlnLmgKLUBAIC05NSwxMiArOTUsMTIgQEAKLSAjZGVmaW5lIF9M SUJVTldJTkRfQlVJTERfU0pMSl9BUElTCi0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVk KF9fcHBjNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSAjZGVmaW5lIF9MSUJVTldJTkRfU1VQUE9SVF9GUkFNRV9B UElTCi0gI2VuZGlmCi0gCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZf NjRfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgZGVmaW5lZChf X3BwY19fKSB8fCBkZWZpbmVkKF9fcHBjNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSB8 fCAgICAgICAgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcG93ZXJw YzY0X18pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICghZGVmaW5lZChfX0FQ UExFX18pICYmIGRlZmluZWQoX19hcm1fXykpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgKGRlZmluZWQoX19hcm02NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSkg fHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICBkZWZpbmVkKF9fbWlwc19fKQot LS0tIGEvbGlidW53aW5kL3NyYy9saWJ1bndpbmQuY3BwCi0rKysgYi9saWJ1bndpbmQvc3JjL2xp YnVud2luZC5jcHAKLUBAIC00Miw3ICs0Miw3IEBAIF9MSUJVTldJTkRfSElEREVOIGludCBfX3Vu d19pbml0X2xvY2FsKHVud19jdXJzb3JfdCAqY3Vyc29yLAotICMgZGVmaW5lIFJFR0lTVEVSX0tJ TkQgUmVnaXN0ZXJzX3g4Nl82NAotICNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAjIGRl ZmluZSBSRUdJU1RFUl9LSU5EIFJlZ2lzdGVyc19wcGM2NAotLSNlbGlmIGRlZmluZWQoX19wcGNf XykKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwY19fKQotICMgZGVmaW5lIFJFR0lTVEVSX0tJTkQg UmVnaXN0ZXJzX3BwYwotICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCi0gIyBkZWZpbmUgUkVH SVNURVJfS0lORCBSZWdpc3RlcnNfYXJtNjQKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3Bh dGNoZXMvbGxkYi1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbGRiLW11c2wu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwMWMwZDEzODUyMy4uMDAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGxkYi1tdXNsLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLS0tIGEvbGxkYi9zb3VyY2UvUGx1Z2lucy9Qcm9j ZXNzL0xpbnV4L1Byb2Nmcy5oCi0rKysgYi9sbGRiL3NvdXJjZS9QbHVnaW5zL1Byb2Nlc3MvTGlu dXgvUHJvY2ZzLmgKLUBAIC0xMCwyMSArMTAsMTIgQEAKLSAvLyBzeXMvcHJvY2ZzLmggb24gQW5k cm9pZC9MaW51eCBmb3IgYWxsIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzLgotIAotICNpbmNsdWRl IDxzeXMvcHRyYWNlLmg+Ci0rI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSAKLS0jaWZkZWYgX19B TkRST0lEX18KLS0jaWYgZGVmaW5lZChfX2FybTY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18p Ci0tdHlwZWRlZiB1bnNpZ25lZCBsb25nIGVsZl9ncmVnX3Q7Ci0tdHlwZWRlZiBlbGZfZ3JlZ190 Ci0tICAgIGVsZl9ncmVnc2V0X3RbKHNpemVvZihzdHJ1Y3QgdXNlcl9wdF9yZWdzKSAvIHNpemVv ZihlbGZfZ3JlZ190KSldOwotLXR5cGVkZWYgc3RydWN0IHVzZXJfZnBzaW1kX3N0YXRlIGVsZl9m cHJlZ3NldF90OwotLSNpZm5kZWYgTlRfRlBSRUdTRVQKLS0jZGVmaW5lIE5UX0ZQUkVHU0VUIE5U X1BSRlBSRUcKLS0jZW5kaWYgLy8gTlRfRlBSRUdTRVQKLS0jZWxpZiBkZWZpbmVkKF9fbWlwc19f KQotLSNpZm5kZWYgTlRfRlBSRUdTRVQKLS0jZGVmaW5lIE5UX0ZQUkVHU0VUIE5UX1BSRlBSRUcK LS0jZW5kaWYgLy8gTlRfRlBSRUdTRVQKLS0jZW5kaWYKLS0jZWxzZSAvLyBfX0FORFJPSURfXwot KyNpZiAhZGVmaW5lZChfX0dMSUJDX18pICYmIGRlZmluZWQoX19wb3dlcnBjX18pCi0rI2RlZmlu ZSBwdF9yZWdzIG11c2xfcHRfcmVncwotKyNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+Ci0rI3VuZGVm IHB0X3JlZ3MKLSsjZWxzZQotICNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+Ci0tI2VuZGlmIC8vIF9f QU5EUk9JRF9fCi0rI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL3Bw YzMyLWNvbXBpbGVyLXJ0LnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9wcGMzMi1jb21w aWxlci1ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUwYTlhNzc5ZDFi Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9wcGMzMi1jb21waWxl ci1ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLWNvbW1pdCBiYTRlZGU1 OTVmZjk1OTkyMzJmNWRkMmI0Mzg0YzI0MzEzN2I1M2ZjCi1BdXRob3I6IERhbmllbCBLb2xlc2Eg PGRhbmllbEBvY3RhZm9yZ2Uub3JnPgotRGF0ZTogICBUdWUgSnVuIDIyIDIzOjQwOjU0IDIwMjEg KzAyMDAKLQotICAgIGVuYWJsZSBjb21waWxlci1ydCBzdXBwb3J0IGZvciBwcGMzMgotCi1kaWZm IC0tZ2l0IGEvY29tcGlsZXItcnQvY21ha2UvYmFzZS1jb25maWctaXguY21ha2UgYi9jb21waWxl ci1ydC9jbWFrZS9iYXNlLWNvbmZpZy1peC5jbWFrZQotaW5kZXggMWVkYWI0My4uNWMwYzhhMiAx MDA2NDQKLS0tLSBhL2NvbXBpbGVyLXJ0L2NtYWtlL2Jhc2UtY29uZmlnLWl4LmNtYWtlCi0rKysg Yi9jb21waWxlci1ydC9jbWFrZS9iYXNlLWNvbmZpZy1peC5jbWFrZQotQEAgLTE4Miw5ICsxODIs NyBAQCBtYWNybyh0ZXN0X3RhcmdldHMpCi0gICAgIGVsc2VpZigiJHtDT01QSUxFUl9SVF9ERUZB VUxUX1RBUkdFVF9BUkNIfSIgTUFUQ0hFUyAicG93ZXJwYzY0bGUiKQotICAgICAgIHRlc3RfdGFy Z2V0X2FyY2gocG93ZXJwYzY0bGUgIiIgIi1tNjQiKQotICAgICBlbHNlaWYoIiR7Q09NUElMRVJf UlRfREVGQVVMVF9UQVJHRVRfQVJDSH0iIE1BVENIRVMgInBvd2VycGMiKQotLSAgICAgIGlmKENN QUtFX1NZU1RFTV9OQU1FIE1BVENIRVMgIkFJWCIpCi0tICAgICAgICB0ZXN0X3RhcmdldF9hcmNo KHBvd2VycGMgIiIgIi1tMzIiKQotLSAgICAgIGVuZGlmKCkKLSsgICAgICB0ZXN0X3RhcmdldF9h cmNoKHBvd2VycGMgIiIgIi1tMzIiKQotICAgICAgIHRlc3RfdGFyZ2V0X2FyY2gocG93ZXJwYzY0 ICIiICItbTY0IikKLSAgICAgZWxzZWlmKCIke0NPTVBJTEVSX1JUX0RFRkFVTFRfVEFSR0VUX0FS Q0h9IiBNQVRDSEVTICJzMzkweCIpCi0gICAgICAgdGVzdF90YXJnZXRfYXJjaChzMzkweCAiIiAi IikKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3RlbXBsYXRlIGIvc3JjcGtncy9sbHZtMTIv dGVtcGxhdGUKaW5kZXggN2NlMTgwMjhlNGEzLi43YjM2MWJiYmY1YmMgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvbGx2bTEyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGx2bTEyL3RlbXBsYXRlCkBAIC0x LDI1ICsxLDE3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsbHZtMTInCiBwa2duYW1lPWxsdm0x MgogdmVyc2lvbj0xMi4wLjEKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIHdya3NyYz0ibGx2bS1w cm9qZWN0LSR7dmVyc2lvbn0uc3JjIgogYnVpbGRfd3Jrc3JjPWxsdm0KIGJ1aWxkX3N0eWxlPWNt YWtlCiBjb25maWd1cmVfYXJncz0iCiAgLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgLVduby1k ZXYKICAtREVOQUJMRV9MSU5LRVJfQlVJTERfSUQ9WUVTCi0gLURMTERCX1VTRV9TWVNURU1fU0lY PVlFUwotIC1ETElCQ1hYX0NYWF9BQkk9bGliY3h4YWJpCi0gLURMSUJDWFhfRU5BQkxFX1NUQVRJ Q19BQklfTElCUkFSWT1ZRVMKLSAtRExJQkNYWEFCSV9VU0VfTExWTV9VTldJTkRFUj1ZRVMKLSAt RExJQkNYWEFCSV9FTkFCTEVfU1RBVElDX1VOV0lOREVSPVlFUwotIC1ETElCT01QX0VOQUJMRV9T SEFSRUQ9WUVTCi0gLURMSUJPTVBfSU5TVEFMTF9BTElBU0VTPU5PCiAgLURMTFZNX0lOQ0xVREVf RE9DUz1ZRVMKICAtRExMVk1fQlVJTERfRE9DUz1ZRVMKICAtRExMVk1fRU5BQkxFX1NQSElOWD1Z RVMKICAtRFNQSElOWF9XQVJOSU5HU19BU19FUlJPUlM9Tk8KLSAtRExMVk1fSU5TVEFMTF9VVElM Uz1ZRVMKICAtRExMVk1fQlVJTERfTExWTV9EWUxJQj1ZRVMKICAtRExMVk1fTElOS19MTFZNX0RZ TElCPVlFUwogIC1ETExWTV9FTkFCTEVfUlRUST1ZRVMKQEAgLTUxLDg3ICs0MywxMCBAQCBjYXNl ICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KIAlwcGMqKSBjb25maWd1cmVfYXJncys9IiAtRENM QU5HX0VOQUJMRV9DTEFOR0Q9T0ZGIiA7OwogZXNhYwogCi1fZW5hYmxlZF9wcm9qZWN0cz0iY2xh bmc7Y2xhbmctdG9vbHMtZXh0cmE7Y29tcGlsZXItcnQ7bGliY3h4O2xpYmN4eGFiaTtsaWJ1bndp bmQ7bGxkIgotCi1fbGxkYl9lbmFibGU9eWVzCi1fbGlib21wX2VuYWJsZT1ubwotCi1jYXNlICIk WEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQlwcGM2NGxlKikgOzsKLQlwcGMqfGk2ODYqKSBfbGxk Yl9lbmFibGU9bm8gOzsKLWVzYWMKLQotY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0J eDg2XzY0KnxhYXJjaDY0KnxwcGM2NCopIF9saWJvbXBfZW5hYmxlPXllczs7Ci1lc2FjCi0KLXN1 YnBhY2thZ2VzPSJjbGFuZy10b29scy1leHRyYSIKLQotIyBtdXN0IGdvIGJlZm9yZSBjbGFuZwot aWYgWyAiJF9saWJvbXBfZW5hYmxlIiA9ICJ5ZXMiIF07IHRoZW4KLQlfZW5hYmxlZF9wcm9qZWN0 cys9IjtvcGVubXAiCi0Jc3VicGFja2FnZXMrPSIgbGlib21wIGxpYm9tcC1kZXZlbCIKLQkjIGJl Y2F1c2Ugb2YgY21ha2Ugbm9uc2Vuc2UgcmVmZXJlbmNpbmcgbGlib21wdGFyZ2V0LnNvLioKLQlk ZXBlbmRzKz0iIGxpYm9tcD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLWZpCi0KLXN1YnBhY2th Z2VzKz0iIGNsYW5nIGNsYW5nLWFuYWx5emVyIGxpYmNsYW5nIGxpYmNsYW5nLWNwcAotIGxsdm0t bGlidW53aW5kIGxsdm0tbGlidW53aW5kLWRldmVsIGxpYmN4eCBsaWJjeHgtZGV2ZWwKLSBsaWJj eHhhYmkgbGliY3h4YWJpLWRldmVsIGxpYmxsdm0xMiIKLQotaWYgWyAiJF9sbGRiX2VuYWJsZSIg PSAieWVzIiBdOyB0aGVuCi0JIyBYWFggZmFpbHMgdG8gY3Jvc3MgY29tcGlsZSBkdWUgdG8gcHl0 aG9uCi0JX2VuYWJsZWRfcHJvamVjdHMrPSI7bGxkYiIKLQlzdWJwYWNrYWdlcys9IiBsbGRiIGxs ZGItZGV2ZWwiCi1maQotCi1zdWJwYWNrYWdlcys9IiBsbGQgbGxkLWRldmVsIgotCi1jb25maWd1 cmVfYXJncys9IiAtRExMVk1fRU5BQkxFX1BST0pFQ1RTPSR7X2VuYWJsZWRfcHJvamVjdHN9Igot CiBwb3N0X3BhdGNoKCkgewotCWlmIFsgIiRfbGxkYl9lbmFibGUiID0gInllcyIgXTsgdGhlbgot CQlpZiBbICIkWEJQU19UQVJHRVRfTElCQyIgPSAibXVzbCIgXTsgdGhlbgotCQkJdnNlZCAtaSAn c3xfX3B0cmFjZV9yZXF1ZXN0fGludHxnJyBcCi0JCQkJJHt3cmtzcmN9L2xsZGIvc291cmNlL1Bs dWdpbnMvUHJvY2Vzcy9MaW51eC9OYXRpdmVQcm9jZXNzTGludXguY3BwCi0JCWZpCi0JCSMgZGlz YWJsZSBkb2NzIGZvciBsbGRiIGFzIHRoZXkgZmFpbCB0byBnZW5lcmF0ZQotCQl2c2VkIC1pICcv YWRkX3N1YmRpcmVjdG9yeShkb2NzKS9kJyBcCi0JCQkke3dya3NyY30vbGxkYi9DTWFrZUxpc3Rz LnR4dAotCWZpCi0KIAkjIHVwZGF0ZSBjb25maWcuZ3Vlc3MgZm9yIGJldHRlciBwbGF0Zm9ybSBk ZXRlY3Rpb24KIAljcCAkWEJQU19DT01NT05ESVIvZW52aXJvbm1lbnQvY29uZmlndXJlL2F1dG9t YWtlL2NvbmZpZy5ndWVzcyBcCiAJCSR7d3Jrc3JjfS9sbHZtL2NtYWtlCi0KLQkjIGZpeCBsaW5r ZXIgZmFpbHVyZXMgb24gc29tZSBhcmNocwotCXZzZWQgLWkgJ3MsY2hlY2tfbGlicmFyeV9leGlz dHMoZ2NjX3MgLiosc2V0KExJQkNYWEFCSV9IQVNfR0NDX1NfTElCIE9OKSwnIFwKLQkJJHt3cmtz cmN9L2xpYmN4eGFiaS9jbWFrZS9jb25maWctaXguY21ha2UKLQl2c2VkIC1pICdzLGNoZWNrX2xp YnJhcnlfZXhpc3RzKGdjYyAuKixzZXQoTElCQ1hYQUJJX0hBU19HQ0NfTElCIE9OKSwnIFwKLQkJ JHt3cmtzcmN9L2xpYmN4eGFiaS9jbWFrZS9jb25maWctaXguY21ha2UKLQotCSMgbmVlZCBsaWJz c3Bfbm9uc2hhcmVkIG9uIHNvbWUgbXVzbCBwbGF0Zm9ybXMgKGJlY2F1c2Ugb2Ygbm9kZWZhdWx0 bGlicykKLQljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkJcHBjNjQqKSA7OwotCQlw cGMqLW11c2x8aTY4Ni1tdXNsfG1pcHMqLW11c2wpCi0JCQl2c2VkIC1pICdzLF4jIFNldHVwIGZs YWdzLiQsYWRkX2xpYnJhcnlfZmxhZ3Moc3NwX25vbnNoYXJlZCksJyBcCi0JCQkJJHt3cmtzcmN9 L2xpYnVud2luZC9zcmMvQ01ha2VMaXN0cy50eHQKLQkJCXZzZWQgLWkgJ3MsXiMgU2V0dXAgZmxh Z3MuJCxhZGRfbGlicmFyeV9mbGFncyhzc3Bfbm9uc2hhcmVkKSwnIFwKLQkJCQkke3dya3NyY30v bGliY3h4YWJpL3NyYy9DTWFrZUxpc3RzLnR4dAotCQkJdnNlZCAtaSAncywjc3NwLCwnICR7d3Jr c3JjfS9saWJjeHgvQ01ha2VMaXN0cy50eHQKLQkJCTs7Ci0JZXNhYwotCi0JY2FzZSAiJFhCUFNf VEFSR0VUX01BQ0hJTkUiIGluCi0JCXg4Nl82NC1tdXNsKSAjIHNvbWUgc2FuaXRpemVyIGN1cnJl bnRseSBvbmx5IG9uIHg4Nl82NCBzdHVmZiBuZWVkcyBiYWNrdHJhY2UKLQkJCXZzZWQgLWkgJ3Ms IyBTZXQgY29tbW9uIGxpbmsgZmxhZ3MuLGxpc3QoQVBQRU5EIFNBTklUSVpFUl9DT01NT05fTElO S19MSUJTIGV4ZWNpbmZvKSwnIFwKLQkJCQkke3dya3NyY30vY29tcGlsZXItcnQvQ01ha2VMaXN0 cy50eHQKLQkJCTs7Ci0JCWFybSotbXVzbHxpNjg2LW11c2wpICMgc2FuaXRpemVyIGNvZGUgaXMg YnJva2VuIHNpbmNlIGl0IGR1cGxpY2F0ZXMgc29tZSBsaWJjIGJpdHMKLQkJCXZzZWQgLWkgJ3Mv c2V0KENPTVBJTEVSX1JUX0hBU19TQU5JVElaRVJfQ09NTU9OIFRSVUUpL3NldChDT01QSUxFUl9S VF9IQVNfU0FOSVRJWkVSX0NPTU1PTiBGQUxTRSkvJyBcCi0JCQkJJHt3cmtzcmN9L2NvbXBpbGVy LXJ0L2NtYWtlL2NvbmZpZy1peC5jbWFrZQotCQkJOzsKLQllc2FjCiB9CiAKIHByZV9jb25maWd1 cmUoKSB7CkBAIC0xNTgsMTAgKzczLDggQEAgcHJlX2NvbmZpZ3VyZSgpIHsKIAkJCWNtYWtlIC4u Ly4uIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIFwKIAkJCS1ETExWTV9FTkFCTEVfUFJPSkVD VFM9JHtfZW5hYmxlZF9wcm9qZWN0c30KIAkJbWFrZSAke21ha2Vqb2JzfSAtQyB1dGlscy9UYWJs ZUdlbgotCQltYWtlICR7bWFrZWpvYnN9IC1DIHRvb2xzL2NsYW5nL3V0aWxzL1RhYmxlR2VuCiAJ CVsgIiRfbGxkYl9lbmFibGUiID0gInllcyIgXSAmJiBtYWtlICR7bWFrZWpvYnN9IC1DIHRvb2xz L2xsZGIvdXRpbHMvVGFibGVHZW4KIAkJY29uZmlndXJlX2FyZ3MrPSIgLURMTFZNX1RBQkxFR0VO PSR7d3Jrc3JjfS9sbHZtL2J1aWxkL0hPU1QvYmluL2xsdm0tdGJsZ2VuIgotCQljb25maWd1cmVf YXJncys9IiAtRENMQU5HX1RBQkxFR0VOPSR7d3Jrc3JjfS9sbHZtL2J1aWxkL0hPU1QvYmluL2Ns YW5nLXRibGdlbiIKIAkJWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdICYmIGNvbmZpZ3VyZV9h cmdzKz0iIC1ETExEQl9UQUJMRUdFTj0ke3dya3NyY30vbGx2bS9idWlsZC9IT1NUL2Jpbi9sbGRi LXRibGdlbiIKIAkJY2QgLi4vLi4KIAlmaQpAQCAtMjAyLDIxOCArMTE1LDYgQEAgZG9faW5zdGFs bCgpIHsKIAlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KIAkJcm0gLWYgJHtERVNURElSfS91 c3IvYmluL2xsdm0tY29uZmlnLWhvc3QKIAlmaQotCi0JIyBJbnN0YWxsIGxpYmN4eGFiaSBoZWFk ZXJzCi0Jdmluc3RhbGwgJHt3cmtzcmN9L2xpYmN4eGFiaS9pbmNsdWRlL19fY3h4YWJpX2NvbmZp Zy5oIDY0NCB1c3IvaW5jbHVkZQotCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJjeHhhYmkvaW5jbHVk ZS9jeHhhYmkuaCA2NDQgdXNyL2luY2x1ZGUKLQotCSMgSW5zdGFsbCBsaWJ1bndpbmQgaGVhZGVy cwotCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJ1bndpbmQvaW5jbHVkZS9fX2xpYnVud2luZF9jb25m aWcuaCA2NDQgdXNyL2luY2x1ZGUKLQl2aW5zdGFsbCAke3dya3NyY30vbGlidW53aW5kL2luY2x1 ZGUvbGlidW53aW5kLmggNjQ0IHVzci9pbmNsdWRlCi0Jdmluc3RhbGwgJHt3cmtzcmN9L2xpYnVu d2luZC9pbmNsdWRlL3Vud2luZC5oIDY0NCB1c3IvaW5jbHVkZQotCXZpbnN0YWxsICR7d3Jrc3Jj fS9saWJ1bndpbmQvaW5jbHVkZS9tYWNoLW8vY29tcGFjdF91bndpbmRfZW5jb2RpbmcuaCBcCi0J CTY0NCB1c3IvaW5jbHVkZS9tYWNoLW8KLX0KLQotY2xhbmctYW5hbHl6ZXJfcGFja2FnZSgpIHsK LQlweWNvbXBpbGVfZGlycz0idXNyL3NoYXJlL3NjYW4tdmlldyIKLQlkZXBlbmRzPSJjbGFuZy0k e3ZlcnNpb259XyR7cmV2aXNpb259IHB5dGhvbjMgcGVybCIKLQlzaG9ydF9kZXNjKz0iIC0gQSBz b3VyY2UgY29kZSBhbmFseXNpcyBmcmFtZXdvcmsiCi0JaG9tZXBhZ2U9Imh0dHBzOi8vY2xhbmct YW5hbHl6ZXIubGx2bS5vcmcvIgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSB1c3Ivc2hhcmUv bWFuL21hbjEvc2Nhbi1idWlsZC4xCi0JCXZtb3ZlICIvdXNyL2Jpbi9zY2FuLSoiCi0JCXZtb3Zl ICIvdXNyL3NoYXJlL3NjYW4tKiIKLQkJdm1vdmUgIi91c3IvbGliZXhlYy8qYW5hbHl6ZXIiCi0J fQotfQotCi1jbGFuZy10b29scy1leHRyYV9wYWNrYWdlKCkgewotCWxpYjMyZGlzYWJsZWQ9eWVz Ci0JZGVwZW5kcz0iY2xhbmctJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSBweXRob24zIgotCXNob3J0 X2Rlc2MrPSIgLSBFeHRyYSBDbGFuZyB0b29scyIKLQlob21lcGFnZT0iaHR0cHM6Ly9jbGFuZy5s bHZtLm9yZy9leHRyYS8iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9pbmNsdWRlL2Ns YW5nLXRpZHkKLQkJdm1vdmUgdXNyL2Jpbi9jbGFuZy1hcHBseS1yZXBsYWNlbWVudHMKLQkJdm1v dmUgdXNyL2Jpbi9jbGFuZy1xdWVyeQotCQl2bW92ZSB1c3IvYmluL2NsYW5nLXJlbmFtZQotCQl2 bW92ZSB1c3IvYmluL2NsYW5nLXRpZHkKLQkJdm1vdmUgdXNyL2Jpbi9kaWFndG9vbAotCQl2bW92 ZSB1c3IvYmluL2ZpbmQtYWxsLXN5bWJvbHMKLQkJdm1vdmUgdXNyL2Jpbi9obWFwdG9vbAotCQl2 bW92ZSB1c3IvYmluL21vZHVsYXJpemUKLQkJdm1vdmUgdXNyL2Jpbi9wcC10cmFjZQotCQl2bW92 ZSB1c3IvYmluL3NhbmNvdgotCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZ0FwcGx5UmVwbGFjZW1l bnRzKiIKLQkJdm1vdmUgInVzci9saWIvbGliY2xhbmdRdWVyeSoiCi0JCXZtb3ZlICJ1c3IvbGli L2xpYmNsYW5nVGlkeSoiCi0JCXZtb3ZlICJ1c3Ivc2hhcmUvY2xhbmcvKnRpZHkqIgotCQl2bW92 ZSB1c3Ivc2hhcmUvZG9jL2NsYW5nLXRvb2xzCi0JCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9l eHRyYWNsYW5ndG9vbHMuMQotCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjEvZGlhZ3Rvb2wuMQot CX0KLX0KLQotY2xhbmdfcGFja2FnZSgpIHsKLQlsaWIzMmRpc2FibGVkPXllcwotCWRlcGVuZHM9 ImxpYnN0ZGMrKy1kZXZlbCBsaWJnY2MtZGV2ZWwgIGJpbnV0aWxzICR7WEJQU19UQVJHRVRfTElC Q30tZGV2ZWwKLQkgbGliY2xhbmctJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLQlzaG9ydF9kZXNj Kz0iIC0gQyBsYW5ndWFnZSBmYW1pbHkgZnJvbnRlbmQiCi0JaG9tZXBhZ2U9Imh0dHBzOi8vY2xh bmcubGx2bS5vcmcvIgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSB1c3IvaW5jbHVkZS9jbGFu ZwotCQl2bW92ZSB1c3IvaW5jbHVkZS9jbGFuZy1jCi0JCXZtb3ZlICJ1c3IvYmluLypjbGFuZyoi Ci0JCXZtb3ZlIHVzci9iaW4vYy1pbmRleC10ZXN0Ci0JCXZtb3ZlIHVzci9saWIvY2xhbmcKLQkJ dm1vdmUgdXNyL2xpYi9jbWFrZS9jbGFuZwotCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZyouYSIK LQkJdm1vdmUgInVzci9saWIvbGliY2xhbmcqLnNvIgotCQl2bW92ZSB1c3Ivc2hhcmUvY2xhbmcK LQkJdm1vdmUgdXNyL3NoYXJlL2RvYy9jbGFuZwotCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjEv Y2xhbmcuMQotCX0KLX0KLQotbGliY2xhbmdfcGFja2FnZSgpIHsKLQlzaG9ydF9kZXNjKz0iIC0g QyBmcm9udGVuZCBydW50aW1lIGxpYnJhcnkiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1 c3IvbGliL2xpYmNsYW5nLnNvLioiCi0JfQotfQotCi1saWJjbGFuZy1jcHBfcGFja2FnZSgpIHsK LQlzaG9ydF9kZXNjKz0iIC0gQyBmcm9udGVuZCBydW50aW1lIGxpYnJhcnkgKEMrKyBpbnRlcmZh Y2UpIgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZy1jcHAuc28u KiIKLQl9Ci19Ci0KLWxsZF9wYWNrYWdlKCkgewotCWxpYjMyZGlzYWJsZWQ9eWVzCi0Jc2hvcnRf ZGVzYys9IiAtIGxpbmtlciIKLQlob21lcGFnZT0iaHR0cHM6Ly9sbGQubGx2bS5vcmciCi0JcGtn X2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9iaW4vbGxkKgotCQl2bW92ZSB1c3IvYmluL3dhc20t bGQKLQkJdm1vdmUgdXNyL2Jpbi9sZC5sbGQqCi0JCXZtb3ZlIHVzci9iaW4vbGQ2NC5sbGQqCi0J CXZtb3ZlIHVzci9zaGFyZS9kb2MvbGxkCi0JfQotfQotCi1sbGQtZGV2ZWxfcGFja2FnZSgpIHsK LQlsaWIzMmRpc2FibGVkPXllcwotCXNob3J0X2Rlc2MrPSIgLSBsaW5rZXIgLSBkZXZlbG9wbWVu dCBmaWxlcyIKLQlob21lcGFnZT0iaHR0cHM6Ly9sbGQubGx2bS5vcmciCi0JZGVwZW5kcz0ibGxk Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSB1c3Iv aW5jbHVkZS9sbGQKLQkJdm1vdmUgdXNyL2xpYi9jbWFrZS9sbGQKLQkJdm1vdmUgInVzci9saWIv bGlibGxkKmEiCi0JfQotfQotCi1sbGRiX3BhY2thZ2UoKSB7Ci0JbGliMzJkaXNhYmxlZD15ZXMK LQlkZXBlbmRzKz0iIHB5dGhvbjMtc2l4IgotCXNob3J0X2Rlc2MrPSIgLSBMTERCIGRlYnVnZ2Vy IgotCWhvbWVwYWdlPSJodHRwczovL2xsZGIubGx2bS5vcmcvIgotCXBrZ19pbnN0YWxsKCkgewot CQl2bW92ZSB1c3IvYmluLypsbGRiKgotCQl2bW92ZSB1c3IvbGliL2xpYmxsZGIqc28uKgotCQl2 bW92ZSAvdXNyL2xpYi9weXRob24qCi0JfQotfQotCi1sbGRiLWRldmVsX3BhY2thZ2UoKSB7Ci0J bGliMzJkaXNhYmxlZD15ZXMKLQlkZXBlbmRzPSJsbGRiPj0ke3ZlcnNpb259XyR7cmV2aXNpb259 IgotCXNob3J0X2Rlc2MrPSIgLSBMTERCIGRlYnVnZ2VyIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCi0J cGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9pbmNsdWRlL2xsZGIKLQkJdm1vdmUgInVzci9s aWIvbGlibGxkYiouc28iCi0JfQotfQotCi1sbHZtLWxpYnVud2luZF9wYWNrYWdlKCkgewotCXNo b3J0X2Rlc2MrPSIgLSBsaWJ1bndpbmQiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3Iv bGliL2xpYnVud2luZC5zby4qIgotCX0KLX0KLQotbGx2bS1saWJ1bndpbmQtZGV2ZWxfcGFja2Fn ZSgpIHsKLQlzaG9ydF9kZXNjKz0iIC0gbGlidW53aW5kIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCi0J ZGVwZW5kcz0ibGx2bS1saWJ1bndpbmQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi0JY29uZmxp Y3RzPSJsaWJ1bndpbmQtZGV2ZWw+PTAiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9s aWIvbGlidW53aW5kLnNvCi0JCXZtb3ZlIHVzci9saWIvbGlidW53aW5kLmEKLQkJdm1vdmUgInVz ci9pbmNsdWRlLyp1bndpbmQqIgotCQl2bW92ZSB1c3IvaW5jbHVkZS9tYWNoLW8KLQkJdm1vdmUg dXNyL3NoYXJlL2RvYy9saWJ1bndpbmQKLQl9Ci19Ci0KLWxpYmN4eGFiaV9wYWNrYWdlKCkgewot CXNob3J0X2Rlc2MrPSIgLSBsb3cgbGV2ZWwgc3VwcG9ydCBmb3IgbGliYysrIgotCXBrZ19pbnN0 YWxsKCkgewotCQl2bW92ZSAidXNyL2xpYi9saWJjKythYmkuc28uKiIKLQl9Ci19Ci0KLWxpYmN4 eGFiaS1kZXZlbF9wYWNrYWdlKCkgewotCXNob3J0X2Rlc2MrPSIgLSBsb3cgbGV2ZWwgc3VwcG9y dCBmb3IgbGliYysrIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCi0JZGVwZW5kcz0ibGliY3h4YWJpPj0k e3ZlcnNpb259XyR7cmV2aXNpb259IgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSB1c3IvbGli L2xpYmMrK2FiaS5zbwotCQl2bW92ZSB1c3IvbGliL2xpYmMrK2FiaS5hCi0JCXZtb3ZlICJ1c3Iv aW5jbHVkZS8qY3h4YWJpKiIKLQl9Ci19Ci0KLWxpYmN4eF9wYWNrYWdlKCkgewotCXNob3J0X2Rl c2MrPSIgLSBDKysgc3RhbmRhcmQgbGlicmFyeSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUg InVzci9saWIvbGliYysrLnNvLioiCi0JfQotfQotCi1saWJjeHgtZGV2ZWxfcGFja2FnZSgpIHsK LQlzaG9ydF9kZXNjKz0iIC0gQysrIHN0YW5kYXJkIGxpYnJhcnkgLSBkZXZlbG9wbWVudCBmaWxl cyIKLQlkZXBlbmRzPSJsaWJjeHg+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi0JcGtnX2luc3Rh bGwoKSB7Ci0JCXZtb3ZlIHVzci9saWIvbGliYysrLnNvCi0JCXZtb3ZlIHVzci9saWIvbGliYysr LmEKLQkJdm1vdmUgdXNyL2xpYi9saWJjKytleHBlcmltZW50YWwuYQotCQl2bW92ZSB1c3IvaW5j bHVkZS9jKysKLQkJdm1vdmUgdXNyL3NoYXJlL2RvYy9saWJjeHgKLQl9Ci19Ci0KLWxpYm9tcF9w YWNrYWdlKCkgewotCXNob3J0X2Rlc2MrPSIgLSBDbGFuZyBPcGVuTVAgc3VwcG9ydCBsaWJyYXJ5 IgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSB1c3IvbGliL2xpYm9tcC5zbwotCQl2bW92ZSAi dXNyL2xpYi9saWJvbXB0YXJnZXQucnRsLiouc28iCi0JCXZtb3ZlIHVzci9saWIvbGliYXJjaGVy LnNvCi0JCXZtb3ZlICJ1c3IvbGliL2xpYm9tcCouc28uKiIKLQl9Ci19Ci0KLWxpYm9tcC1kZXZl bF9wYWNrYWdlKCkgewotCXNob3J0X2Rlc2MrPSIgLSBDbGFuZyBPcGVuTVAgc3VwcG9ydCBsaWJy YXJ5IC0gZGV2ZWxvcG1lbnQgZmlsZXMiCi0JZGVwZW5kcz0ibGlib21wPj0ke3ZlcnNpb259XyR7 cmV2aXNpb259IgotCXBrZ19pbnN0YWxsKCkgewotCQl2bW92ZSAidXNyL2xpYi9saWJvbXAqLnNv IgotCQl2bW92ZSAidXNyL2xpYi9saWJhcmNoZXIqIgotCQl2bW92ZSAidXNyL2luY2x1ZGUvb21w Ki5oIgotCQl2bW92ZSAidXNyL2xpYi9jbGFuZy8ke3ZlcnNpb259L2luY2x1ZGUvb21wKi5oIgot CQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjEvbGx2bW9wZW5tcC4xCi0JCXZtb3ZlIHVzci9zaGFy ZS9kb2Mvb3Blbm1wCi0JfQogfQogCiBsaWJsbHZtMTJfcGFja2FnZSgpIHsKCkZyb20gYzUyM2Vm NzBiMzliZGQyOWExMmEyOTljMzNmZTMwYjllMjAwMjE2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogPT9VVEYtOD9xP0xvdWlzPTIwRHVwcj1DMz1BOT0yMEJlcnRvbmk/PQogPGxvdWlz ZGJAbGVzcGV0aXRzcGVkZXN0cmVzLm9yZz4KRGF0ZTogU2F0LCAxIEphbiAyMDIyIDE1OjU3OjU5 ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwNC8yMF0gcnRhZ3M6IHJlYnVpbGQgZm9yIGxsdm0xMwoK LS0tCiBzcmNwa2dzL3J0YWdzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ydGFncy90ZW1w bGF0ZSBiL3NyY3BrZ3MvcnRhZ3MvdGVtcGxhdGUKaW5kZXggYjQ5NmExYjBlNzIxLi45YjE2MWU2 OTBkNzYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcnRhZ3MvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9y dGFncy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3J0YWdz JwogcGtnbmFtZT1ydGFncwogdmVyc2lvbj0yLjM4Ci1yZXZpc2lvbj01CityZXZpc2lvbj02CiBi dWlsZF9zdHlsZT1jbWFrZQogIyBEb24ndCBydW4gdGVzdHMgaW4gZG9faW5zdGFsbCwgcGxlYXNl LgogY29uZmlndXJlX2FyZ3M9Ii1EU0tJUF9DVEVTVD1UUlVFIgoKRnJvbSAyM2M2MzgyNmJjY2Yx NGMxNDQzNTNiZmU0MzhiMzM5M2VlM2I4MDVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9uaT89CiA8bG91aXNkYkBsZXNw ZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBTYXQsIDEgSmFuIDIwMjIgMTU6NTg6MjcgKzAyMDAK U3ViamVjdDogW1BBVENIIDA1LzIwXSBicGZ0cmFjZTogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0K IHNyY3BrZ3MvYnBmdHJhY2UvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JwZnRyYWNlL3Rl bXBsYXRlIGIvc3JjcGtncy9icGZ0cmFjZS90ZW1wbGF0ZQppbmRleCAyOGFiM2M2MjYzOTkuLmVi MjQ4MGQyMjMwZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9icGZ0cmFjZS90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2JwZnRyYWNlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnYnBmdHJhY2UnCiBwa2duYW1lPWJwZnRyYWNlCiB2ZXJzaW9uPTAuMTQuMQotcmV2aXNp b249MQorcmV2aXNpb249MgogYXJjaHM9Ing4Nl82NCogYWFyY2g2NCogcHBjNjQqIgogYnVpbGRf c3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItREJVSUxEX1RFU1RJTkc9T0ZGIiAgIyBuZWVk cyByb290IHRvIHJ1bgoKRnJvbSBlYjE4ODc0MDE4MmE1NTAwMDQ5Njc5MzZlNzFmMjM0NDRjODVl OGM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXBy PUMzPUE5PTIwQmVydG9uaT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRl OiBTYXQsIDEgSmFuIDIwMjIgMTU6NTg6MzggKzAyMDAKU3ViamVjdDogW1BBVENIIDA2LzIwXSBj bGF6eTogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3MvY2xhenkvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2NsYXp5L3RlbXBsYXRlIGIvc3JjcGtncy9jbGF6eS90ZW1wbGF0ZQpp bmRleCAxMWYzYmFiNTVhZWYuLmY4MWRlMDhhYjgzNiAxMDA2NDQKLS0tIGEvc3JjcGtncy9jbGF6 eS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NsYXp5L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnY2xhenknCiBwa2duYW1lPWNsYXp5CiB2ZXJzaW9uPTEuMTEK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBidWlsZF9oZWxwZXI9 cWVtdQogaG9zdG1ha2VkZXBlbmRzPSJsbHZtIgoKRnJvbSBlZDc1MDdkMGQ4MTJiZWQzNjhjYmM1 YjBhODIzNDRhMDkwNmEzZTUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04 P3E/TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9uaT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRl c3RyZXMub3JnPgpEYXRlOiBTYXQsIDEgSmFuIDIwMjIgMTU6NTg6NDkgKzAyMDAKU3ViamVjdDog W1BBVENIIDA3LzIwXSBjY2xzOiByZWJ1aWxkIGZvciBsbHZtMTMKCi0tLQogc3JjcGtncy9jY2xz L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jY2xzL3RlbXBsYXRlIGIvc3JjcGtncy9jY2xz L3RlbXBsYXRlCmluZGV4IGZiYjdjNjg0N2JjMS4uNDBhYmEzYjU1YmZlIDEwMDY0NAotLS0gYS9z cmNwa2dzL2NjbHMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jY2xzL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY2NscycKIHBrZ25hbWU9Y2NscwogdmVyc2lv bj0wLjIwMjEwMzMwCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQog aG9zdG1ha2VkZXBlbmRzPSJjbGFuZy10b29scy1leHRyYSIKIG1ha2VkZXBlbmRzPSJsbHZtIG5j dXJzZXMtZGV2ZWwgcmFwaWRqc29uIHpsaWItZGV2ZWwgY2xhbmctdG9vbHMtZXh0cmEiCgpGcm9t IDUwYmM2MjVmNTk4NjgxMDA2YzMyYjg3NTc1YWQyMWFmYzlhMzExMjMgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0K IDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAx NTo1OTozNSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDgvMjBdIGluY2x1ZGUtd2hhdC15b3UtdXNl OiByZWJ1aWxkIGZvciBsbHZtMTMKCi0tLQogc3JjcGtncy9pbmNsdWRlLXdoYXQteW91LXVzZS90 ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2luY2x1ZGUtd2hhdC15b3UtdXNlL3RlbXBs YXRlIGIvc3JjcGtncy9pbmNsdWRlLXdoYXQteW91LXVzZS90ZW1wbGF0ZQppbmRleCBiMTNiYjdl ZTU2YWYuLmI0YjE2NzQwMWViZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9pbmNsdWRlLXdoYXQteW91 LXVzZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2luY2x1ZGUtd2hhdC15b3UtdXNlL3RlbXBsYXRl CkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnaW5jbHVkZS13aGF0LXlvdS11 c2UnCiBwa2duYW1lPWluY2x1ZGUtd2hhdC15b3UtdXNlCi12ZXJzaW9uPTAuMTYKK3ZlcnNpb249 MC4xNwogcmV2aXNpb249MQogd3Jrc3JjPSIke3BrZ25hbWV9IgogYnVpbGRfc3R5bGU9Y21ha2UK QEAgLTEyLDcgKzEyLDcgQEAgbWFpbnRhaW5lcj0iTGVhaCBOZXVraXJjaGVuIDxsZWFoQHZ1eHUu b3JnPiIKIGxpY2Vuc2U9Ik5DU0EiCiBob21lcGFnZT0iaHR0cHM6Ly9pbmNsdWRlLXdoYXQteW91 LXVzZS5vcmcvIgogZGlzdGZpbGVzPSJodHRwczovL2luY2x1ZGUtd2hhdC15b3UtdXNlLm9yZy9k b3dubG9hZHMvJHtwa2duYW1lfS0ke3ZlcnNpb259LnNyYy50YXIuZ3oiCi1jaGVja3N1bT04ZDZm YzliMjU1MzQzYmMxZTVlYzQ1OWUzOTUxMmRmMWQ1MWM2MGUwMzU2Mjk4NWUwMDc2MDM2MTE5ZmY1 YTFjCitjaGVja3N1bT1lY2E3YzA0ZjhiNDE2YjYzODVlZDAwZTMzNjY5YTdmYTQ2OTNjZDI2Y2I3 MmI1MjJjZGU1NTg4MjhlYjBjNjY1CiBweXRob25fdmVyc2lvbj0zCiAKIHBvc3RfaW5zdGFsbCgp IHsKCkZyb20gZmY3ODFkYWE0ODIyZTA3YzYwNDQxM2UwNmI0YTMxODA3ZGIxOTMwOCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0xvdWlzPTIwRHVwcj1DMz1BOT0yMEJl cnRvbmk/PQogPGxvdWlzZGJAbGVzcGV0aXRzcGVkZXN0cmVzLm9yZz4KRGF0ZTogU2F0LCAxIEph biAyMDIyIDE2OjAxOjIxICswMjAwClN1YmplY3Q6IFtQQVRDSCAwOS8yMF0gY29kZWxpdGU6IHJl YnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNwa2dzL2NvZGVsaXRlL3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9jb2RlbGl0ZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvY29kZWxpdGUvdGVtcGxhdGUK aW5kZXggM2E5OTNhMmMwY2ZiLi4yNGUyYzg3OWRkNDUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY29k ZWxpdGUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jb2RlbGl0ZS90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2NvZGVsaXRlJwogcGtnbmFtZT1jb2RlbGl0ZQog dmVyc2lvbj0xNS4wLjYKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtl CiBidWlsZF9oZWxwZXI9Y21ha2Utd3hXaWRnZXRzLWd0azMKIGNvbmZpZ3VyZV9hcmdzPSItRFdJ VEhfUENIPTAgLURXSVRIX1dYX0NPTkZJRz13eC1jb25maWctZ3RrMwoKRnJvbSA1YjA4NGQ3YzY0 ZWViY2U1Nzk0MDJiMTZhODkzZWVmNzNmZDFiMTk0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9uaT89CiA8bG91aXNkYkBs ZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBTYXQsIDEgSmFuIDIwMjIgMTY6MjI6NDggKzAy MDAKU3ViamVjdDogW1BBVENIIDEwLzIwXSBrZGV2ZWxvcDogcmVidWlsZCBmb3IgbGx2bTEzCgot LS0KIHNyY3BrZ3Mva2RldmVsb3AvdGVtcGxhdGUgfCAzICsrLQogMSBmaWxlIGNoYW5nZWQsIDIg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mva2RldmVs b3AvdGVtcGxhdGUgYi9zcmNwa2dzL2tkZXZlbG9wL3RlbXBsYXRlCmluZGV4IDc2YWZlMmUzNGNh MC4uZmIzYWFhZDg5YTQ3IDEwMDY0NAotLS0gYS9zcmNwa2dzL2tkZXZlbG9wL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3Mva2RldmVsb3AvdGVtcGxhdGUKQEAgLTEsNyArMSw4IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdrZGV2ZWxvcCcKIHBrZ25hbWU9a2RldmVsb3AKKzw8PDw8PDwgSEVBRAogdmVy c2lvbj0yMS4xMi4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQog Y29uZmlndXJlX2FyZ3M9Ii1EQlVJTERfVEVTVElORz1PRkYiCiBob3N0bWFrZWRlcGVuZHM9ImV4 dHJhLWNtYWtlLW1vZHVsZXMgcXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHF0NS10b29scwoKRnJv bSAyOWIxMTIxZDNmODg2MjYwODllZjVkMmRhNzFmOTZmNzEzNTRhZmFkIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9uaT89 CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBTYXQsIDEgSmFuIDIwMjIg MTY6MjM6MDcgKzAyMDAKU3ViamVjdDogW1BBVENIIDExLzIwXSBqdUNpKys6IHJlYnVpbGQgZm9y IGxsdm0xMwoKLS0tCiBzcmNwa2dzL2p1Q2krKy90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFu Z2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv anVDaSsrL3RlbXBsYXRlIGIvc3JjcGtncy9qdUNpKysvdGVtcGxhdGUKaW5kZXggMWE3NjA0YjQ0 YTAwLi41MTAzMzI0ZGVjMjAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvanVDaSsrL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvanVDaSsrL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnanVDaSsrJwogcGtnbmFtZT1qdUNpKysKIHZlcnNpb249MS42LjIKLXJldmlzaW9u PTIKK3JldmlzaW9uPTMKIF9saWJjbGFuZ21tX2NvbW1pdD0iYjM0MmY0ZGQ2ZGU0ZmU1MDlhNjky YTRiNGZjZmM3ZTI0YWFlOTU5MCIKIF90aW55X2NvbW1pdD0iYzljOGJmODEwZGRhZDhjZDE3ODgy YjlhOWVlNjI4YTY5MGU3NzlmNSIKIHdya3NyYz0ianVjaXBwLXYke3ZlcnNpb259IgoKRnJvbSAx ZjFiYzAyZGU3M2E2NjQ3ZTZmZGRiY2Y2ZmE5YWY1ZjBhNWQ3MzJkIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9uaT89CiA8 bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBTYXQsIDEgSmFuIDIwMjIgMTg6 MzA6MDEgKzAyMDAKU3ViamVjdDogW1BBVENIIDEyLzIwXSBsbHZtMTM6IGZpeCBsaWJvbXAqIHBh Y2thZ2VzCgotLS0KIHNyY3BrZ3MvbGx2bTEzL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvbGx2bTEzL3RlbXBsYXRlIGIvc3JjcGtncy9sbHZtMTMvdGVtcGxhdGUKaW5kZXggMDhkODQ3 NDcyNTI1Li5iZmM5MTA1NmQyNzcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGx2bTEzL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvbGx2bTEzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnbGx2bTEzJwogcGtnbmFtZT1sbHZtMTMKIHZlcnNpb249MTMuMC4wCi1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiB3cmtzcmM9Imxsdm0tcHJvamVjdC0ke3ZlcnNpb259LnNyYyIK IGJ1aWxkX3dya3NyYz1sbHZtCiBidWlsZF9zdHlsZT1jbWFrZQpAQCAtMzk3LDYgKzM5Nyw3IEBA IGxpYm9tcF9wYWNrYWdlKCkgewogCXNob3J0X2Rlc2MrPSIgLSBDbGFuZyBPcGVuTVAgc3VwcG9y dCBsaWJyYXJ5IgogCXBrZ19pbnN0YWxsKCkgewogCQl2bW92ZSB1c3IvbGliL2xpYm9tcC5zbwor CQl2bW92ZSB1c3IvbGliL2xpYm9tcHRhcmdldC5zbwogCQl2bW92ZSAidXNyL2xpYi9saWJvbXB0 YXJnZXQucnRsLiouc28iCiAJCXZtb3ZlIHVzci9saWIvbGliYXJjaGVyLnNvCiAJfQpAQCAtNDA2 LDcgKzQwNyw2IEBAIGxpYm9tcC1kZXZlbF9wYWNrYWdlKCkgewogCXNob3J0X2Rlc2MrPSIgLSBD bGFuZyBPcGVuTVAgc3VwcG9ydCBsaWJyYXJ5IC0gZGV2ZWxvcG1lbnQgZmlsZXMiCiAJZGVwZW5k cz0ibGlib21wPj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgogCXBrZ19pbnN0YWxsKCkgewotCQl2 bW92ZSAidXNyL2xpYi9saWJvbXAqLnNvIgogCQl2bW92ZSAidXNyL2xpYi9saWJhcmNoZXIqIgog CQl2bW92ZSAidXNyL2luY2x1ZGUvb21wKi5oIgogCQl2bW92ZSAidXNyL2xpYi9jbGFuZy8ke3Zl cnNpb259L2luY2x1ZGUvb21wKi5oIgoKRnJvbSA3ODQyYTI2NTEzNjE3MDZkNWNhMDU1NGFlZjQ4 NDQzMzA4MjM0ZmY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91 aXM9MjBEdXByPUMzPUE5PTIwQmVydG9uaT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMu b3JnPgpEYXRlOiBTdW4sIDE2IEphbiAyMDIyIDE0OjMzOjU2ICswMjAwClN1YmplY3Q6IFtQQVRD SCAxMy8yMF0gY2hyb21pdW06IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNwa2dzL2Nocm9t aXVtL3RlbXBsYXRlIHwgOCArLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUg Yi9zcmNwa2dzL2Nocm9taXVtL3RlbXBsYXRlCmluZGV4IDkyYzQ4ZTU1MDU5OS4uMjQzOTI1MTFm ZjlhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2Nocm9taXVtL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv Y2hyb21pdW0vdGVtcGxhdGUKQEAgLTIwLDcgKzIwLDcgQEAgZGVzY19vcHRpb25fZGVidWc9IkJ1 aWxkIHdpdGggZGVidWcgc3ltYm9scyIKIGRlc2Nfb3B0aW9uX2pzX29wdGltaXplPSJPcHRpbWl6 ZSB0aGUgSlMgdXNlZCBmb3IgQ2hyb21pdW0ncyBVSSIKIGRlc2Nfb3B0aW9uX3BpcGV3aXJlPSJF bmFibGUgc3VwcG9ydCBmb3Igc2NyZWVuIHNoYXJpbmcgZm9yIFdlYlJUQyB2aWEgUGlwZVdpcmUi CiAKLWhvc3RtYWtlZGVwZW5kcz0iJCh2b3B0X2lmIGNsYW5nICJjbGFuZyBsbGQgbGx2bTEyIikg cHl0aG9uIHB5dGhvbjMgcGtnY29uZiBwZXJsIGdwZXJmIGJpc29uIG5pbmphIG5vZGVqcyBod2lk cworaG9zdG1ha2VkZXBlbmRzPSIkKHZvcHRfaWYgY2xhbmcgImNsYW5nIGxsZCBsbHZtMTMiKSBw eXRob24gcHl0aG9uMyBwa2djb25mIHBlcmwgZ3BlcmYgYmlzb24gbmluamEgbm9kZWpzIGh3aWRz CiAgbGliYXRvbWljLWRldmVsIGxpYmV2ZW50LWRldmVsIGxpYmdsaWItZGV2ZWwgJCh2b3B0X2lm IGpzX29wdGltaXplIG9wZW5qZGspIHdheWxhbmQtZGV2ZWwgbGliZXBveHktZGV2ZWwiCiBtYWtl ZGVwZW5kcz0ibGlicG5nLWRldmVsIGd0aystZGV2ZWwgZ3RrKzMtZGV2ZWwgbnNzLWRldmVsIHBj aXV0aWxzLWRldmVsCiAgbGliWGktZGV2ZWwgbGliZ2NyeXB0LWRldmVsIGxpYmdub21lLWtleXJp bmctZGV2ZWwgY3Vwcy1kZXZlbCBlbGZ1dGlscy1kZXZlbApAQCAtMjY3LDEyICsyNjcsNiBAQCBk b19jb25maWd1cmUoKSB7CiAJCSdkaXNhYmxlX2ZpZWxkdHJpYWxfdGVzdGluZ19jb25maWc9dHJ1 ZScKIAogCQknaXNfb2ZmaWNpYWxfYnVpbGQ9dHJ1ZScKLQotCQkjIHNlZ2ZhdWx0cyB3aXRoIGxs dm0tMTIuMC4xCi0JCSdpc19jZmk9ZmFsc2UnCi0JCSd1c2VfdGhpbl9sdG89ZmFsc2UnCi0JCSd1 c2VfY2ZpX2ljYWxsPWZhbHNlJwotCQknY2hyb21lX3Bnb19waGFzZT0wJwogCSkKIAogCWlmIFsg IiRDUk9TU19CVUlMRCIgXTsgdGhlbgoKRnJvbSA0OTEyMTAzYzg5ODFmMmJiM2Y4MmE3MDk2YmE3 NzE1ZDQ3YTQxN2Q5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91 aXM9MjBEdXByPUMzPUE5PTIwQmVydG9uaT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMu b3JnPgpEYXRlOiBTdW4sIDE2IEphbiAyMDIyIDE0OjM5OjA0ICswMjAwClN1YmplY3Q6IFtQQVRD SCAxNC8yMF0gbGx2bTEyOiByZW1vdmUKCi0tLQogc3JjcGtncy9sbHZtMTIvSU5TVEFMTC5tc2cg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9sbHZtMTIvZmlsZXMvbGx2bS1Db25maWct bGx2bS1jb25maWcuaCAgICB8ICAgOSAtLQogc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAw MS1tdXNsLnBhdGNoICAgIHwgIDU3IC0tLS0tLS0tLQogLi4uL3BhdGNoZXMvbGx2bS0wMDItbXVz bC1wcGM2NC1lbGZ2Mi5wYXRjaCAgIHwgIDMwIC0tLS0tCiAuLi4vcGF0Y2hlcy9sbHZtLTAwMy1w cGMtc2VjdXJlcGx0LnBhdGNoICAgICAgfCAgMTEgLS0KIC4uLi9wYXRjaGVzL2xsdm0tMDA0LW92 ZXJyaWRlLW9wdC5wYXRjaCAgICAgICB8ICAxOCAtLS0KIC4uLi9sbHZtMTIvcGF0Y2hlcy9sbHZt LTAwNS1wcGMtYmlncGljLnBhdGNoICB8ICAzNiAtLS0tLS0KIC4uLi9wYXRjaGVzL2xsdm0tMDA2 LWFhcmNoNjQtbWZfZXhlYy5wYXRjaCAgICB8ICAyNSAtLS0tCiBzcmNwa2dzL2xsdm0xMi90ZW1w bGF0ZSAgICAgICAgICAgICAgICAgICAgICAgfCAxMjAgKy0tLS0tLS0tLS0tLS0tLS0tCiBzcmNw a2dzL2xsdm0xMi91cGRhdGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgLQogMTAgZmls ZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzMDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvSU5TVEFMTC5tc2cKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2xsdm0xMi9maWxlcy9sbHZtLUNvbmZpZy1sbHZtLWNvbmZpZy5oCiBkZWxldGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwMS1tdXNsLnBhdGNoCiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwMi1tdXNsLXBwYzY0 LWVsZnYyLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9s bHZtLTAwMy1wcGMtc2VjdXJlcGx0LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9sbHZtLTAwNC1vdmVycmlkZS1vcHQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA1LXBwYy1iaWdwaWMucGF0Y2gKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA2LWFhcmNoNjQt bWZfZXhlYy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3VwZGF0ZQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL0lOU1RBTEwubXNnIGIvc3JjcGtncy9sbHZtMTIv SU5TVEFMTC5tc2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wMDRh Y2Y3YjUzMGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMi9JTlNUQUxMLm1zZwpA QCAtMCwwICsxIEBACitsbHZtMTIgaXMgbm8gbG9uZ2VyIHByb3ZpZGVkIGJ5IFZvaWQgTGludXgK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmln LmggYi9zcmNwa2dzL2xsdm0xMi9maWxlcy9sbHZtLUNvbmZpZy1sbHZtLWNvbmZpZy5oCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmEwOGM5YmU2OTYuLjAwMDAwMDAwMDAwMAotLS0g YS9zcmNwa2dzL2xsdm0xMi9maWxlcy9sbHZtLUNvbmZpZy1sbHZtLWNvbmZpZy5oCisrKyAvZGV2 L251bGwKQEAgLTEsOSArMCwwIEBACi0jaW5jbHVkZSA8Yml0cy93b3Jkc2l6ZS5oPgotCi0jaWYg X19XT1JEU0laRSA9PSAzMgotI2luY2x1ZGUgImxsdm0tY29uZmlnLTMyLmgiCi0jZWxpZiBfX1dP UkRTSVpFID09IDY0Ci0jaW5jbHVkZSAibGx2bS1jb25maWctNjQuaCIKLSNlbHNlCi0jZXJyb3Ig IlVua25vd24gd29yZCBzaXplIgotI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9w YXRjaGVzL2xsdm0tMDAxLW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0t MDAxLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYTNmOGQ2Mjgx My4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDEtbXVz bC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUZyb20gZmFjYTNmYmQxNWQw YzMxMDg0OTNjM2M1NGNkOTMxMzhlMDQ5YWM0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZy b206IEFuZHJlYSBCcmFuY2FsZW9uaSA8bWl3YXhlQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgOCBT ZXAgMjAxNSAyMjowMzowMiArMDIwMAotU3ViamVjdDogW1BBVENIIDMvM10gbXVzbAotCi0tLS0K LSBpbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaCB8IDkgKysrKysrKysr Ci0gbGliL1N1cHBvcnQvRHluYW1pY0xpYnJhcnkuY3BwICAgICAgICAgICAgfCAyICstCi0gbGli L1N1cHBvcnQvVW5peC9TaWduYWxzLmluYyAgICAgICAgICAgICAgfCA2ICsrKy0tLQotIHV0aWxz L3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjICAgIHwgMSArCi0gNSBmaWxlcyBjaGFu Z2VkLCAxNyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaW5j bHVkZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmggYi9pbmNsdWRlL2xsdm0vQW5h bHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaAotaW5kZXggMzRhOGExZTMuLjEyMTRlY2U1IDEwMDY0 NAotLS0tIGEvbGx2bS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaAot KysrIGIvbGx2bS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaAotQEAg LTE4LDYgKzE4LDE1IEBACi0gI2luY2x1ZGUgImxsdm0vSVIvUGFzc01hbmFnZXIuaCIKLSAjaW5j bHVkZSAibGx2bS9QYXNzLmgiCi0gCi0rI3VuZGVmIGZvcGVuNjQKLSsjdW5kZWYgZnNlZWtvNjQK LSsjdW5kZWYgZnN0YXQ2NAotKyN1bmRlZiBmc3RhdHZmczY0Ci0rI3VuZGVmIGZ0ZWxsbzY0Ci0r I3VuZGVmIGxzdGF0NjQKLSsjdW5kZWYgc3RhdDY0Ci0rI3VuZGVmIHRtcGZpbGU2NAotKwotIG5h bWVzcGFjZSBsbHZtIHsKLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgQXJyYXlSZWY7Ci0g Y2xhc3MgVHJpcGxlOwotZGlmZiAtLWdpdCBhL2xpYi9TdXBwb3J0L1VuaXgvRHluYW1pY0xpYnJh cnkuaW5jIGIvbGliL1N1cHBvcnQvVW5peC9EeW5hbWljTGlicmFyeS5pbmMKLWluZGV4IGEyYTM3 OTk2Li4yZjg2YzQ3MCAxMDA2NDQKLS0tLSBhL2xsdm0vbGliL1N1cHBvcnQvVW5peC9EeW5hbWlj TGlicmFyeS5pbmMKLSsrKyBiL2xsdm0vbGliL1N1cHBvcnQvVW5peC9EeW5hbWljTGlicmFyeS5p bmMKLUBAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIHZvaWQgKkRvU2VhcmNoKGNvbnN0IGNoYXIq IFN5bWJvbE5hbWUpIHsKLSAKLSAvLyBUaGlzIG1hY3JvIHJldHVybnMgdGhlIGFkZHJlc3Mgb2Yg YSB3ZWxsLWtub3duLCBleHBsaWNpdCBzeW1ib2wKLSAjZGVmaW5lIEVYUExJQ0lUX1NZTUJPTChT WU0pIFwKLS0gICBpZiAoIXN0cmNtcChTeW1ib2xOYW1lLCAjU1lNKSkgcmV0dXJuICZTWU0KLSsg ICBpZiAoIXN0cmNtcChTeW1ib2xOYW1lLCAjU1lNKSkgcmV0dXJuICh2b2lkICopJlNZTQotIAot IC8vIFVuZGVyIGdsaWJjIHdlIGhhdmUgYSB3ZWlyZCBzaXR1YXRpb24uIFRoZSBzdGRlcnIvb3V0 L2luIHN5bWJvbHMgYXJlIGJvdGgKLSAvLyBtYWNyb3MgYW5kIGdsb2JhbCB2YXJpYWJsZXMgYmVj YXVzZSBvZiBzdGFuZGFyZHMgcmVxdWlyZW1lbnRzLiBTbywgd2UKLWRpZmYgLS1naXQgYS91dGls cy91bml0dGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC5jYyBiL3V0aWxzL3VuaXR0ZXN0L2dvb2ds ZXRlc3Qvc3JjL2d0ZXN0LmNjCi1pbmRleCBkODgyYWIyZS4uZjFmYjEyZDAgMTAwNjQ0Ci0tLS0g YS9sbHZtL3V0aWxzL3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjCi0rKysgYi9sbHZt L3V0aWxzL3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjCi1AQCAtMTI4LDYgKzEyOCw3 IEBACi0gCi0gI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KLSAjIGluY2x1ZGUgPGFycGEv aW5ldC5oPiAgLy8gTk9MSU5UCi0rIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ICAvLyBOT0xJTlQK LSAjIGluY2x1ZGUgPG5ldGRiLmg+ICAvLyBOT0xJTlQKLSAjIGluY2x1ZGUgPHN5cy9zb2NrZXQu aD4gIC8vIE5PTElOVAotICMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDItbXVzbC1wcGM2NC1lbGZ2Mi5w YXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDItbXVzbC1wcGM2NC1lbGZ2Mi5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA3MWQ5NjRiZDM3Li4wMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwMi1tdXNsLXBwYzY0LWVs ZnYyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotVGhpcyBwYXRjaGVzIExM Vk0gdG8gdXNlIEVMRnYyIG9uIHBwYzY0IHVuY29uZGl0aW9uYWxseSB1bmxlc3Mgb3ZlcnJpZGRl bi4gV2UKLW5lZWQgdGhpcyBiZWNhdXNlIHVubGlrZSBtb3N0IGRpc3Ryb3Mgd2UgdXNlIEVMRnYy IGZvciBib3RoIGdsaWJjIGFuZCBtdXNsCi1vbiBiaWcgZW5kaWFuIHBwYzY0LgotCi1kaWZmIC0t Z2l0IGEvbGliL1RhcmdldC9Qb3dlclBDL1BQQ1RhcmdldE1hY2hpbmUuY3BwIGIvbGliL1Rhcmdl dC9Qb3dlclBDL1BQQ1RhcmdldE1hY2hpbmUuY3BwCi1pbmRleCAwNjM0ODMzZS4uYjdjYmMyZTcg MTAwNjQ0Ci0tLS0gYS9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENUYXJnZXRNYWNoaW5lLmNw cAotKysrIGIvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAKLUBA IC0yMjIsOSArMjIyLDggQEAgc3RhdGljIFBQQ1RhcmdldE1hY2hpbmU6OlBQQ0FCSSBjb21wdXRl VGFyZ2V0QUJJKGNvbnN0IFRyaXBsZSAmVFQsCi0gCi0gICBzd2l0Y2ggKFRULmdldEFyY2goKSkg ewotICAgY2FzZSBUcmlwbGU6OnBwYzY0bGU6Ci0tICAgIHJldHVybiBQUENUYXJnZXRNYWNoaW5l OjpQUENfQUJJX0VMRnYyOwotICAgY2FzZSBUcmlwbGU6OnBwYzY0OgotLSAgICByZXR1cm4gUFBD VGFyZ2V0TWFjaGluZTo6UFBDX0FCSV9FTEZ2MTsKLSsgICAgcmV0dXJuIFBQQ1RhcmdldE1hY2hp bmU6OlBQQ19BQklfRUxGdjI7Ci0gICBkZWZhdWx0OgotICAgICByZXR1cm4gUFBDVGFyZ2V0TWFj aGluZTo6UFBDX0FCSV9VTktOT1dOOwotICAgfQotZGlmZiAtLWdpdCBhL3Rlc3QvQ29kZUdlbi9Q b3dlclBDL3BwYzY0LWVsZi1hYmkubGwgYi90ZXN0L0NvZGVHZW4vUG93ZXJQQy9wcGM2NC1lbGYt YWJpLmxsCi1pbmRleCA4YjFjZjZiNS4uMjk2YTJhZmEgMTAwNjQ0Ci0tLS0gYS9sbHZtL3Rlc3Qv Q29kZUdlbi9Qb3dlclBDL3BwYzY0LWVsZi1hYmkubGwKLSsrKyBiL2xsdm0vdGVzdC9Db2RlR2Vu L1Bvd2VyUEMvcHBjNjQtZWxmLWFiaS5sbAotQEAgLTEsNCArMSw1IEBACi0tOyBSVU46IGxsYyAt dmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0LXVua25vd24tbGludXgtZ251 IDwgJXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2MQotKzsgUlVOOiBs bGMgLXZlcmlmeS1tYWNoaW5laW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4 LWdudSA8ICVzIHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKLSs7IFJV TjogbGxjIC12ZXJpZnktbWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjQtdW5rbm93bi1s aW51eC1tdXNsIDwgJXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2Mgot IDsgUlVOOiBsbGMgLXZlcmlmeS1tYWNoaW5laW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtu b3duLWxpbnV4LWdudSAtdGFyZ2V0LWFiaSBlbGZ2MSA8ICVzIHwgRmlsZUNoZWNrICVzIC1jaGVj ay1wcmVmaXg9Q0hFQ0stRUxGdjEKLSA7IFJVTjogbGxjIC12ZXJpZnktbWFjaGluZWluc3RycyAt bXRyaXBsZT1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUgLXRhcmdldC1hYmkgZWxmdjIgPCAl cyB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYyCi0gOyBSVU46IGxsYyAt dmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1n bnUgPCAlcyB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYyCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDAzLXBwYy1zZWN1cmVwbHQucGF0Y2gg Yi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDAzLXBwYy1zZWN1cmVwbHQucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZDE1OTc0Mzc1ZC4uMDAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLS0tLSBhL2xsdm0vbGliL1RhcmdldC9Qb3dl clBDL1BQQ1N1YnRhcmdldC5jcHAKLSsrKyBiL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ1N1 YnRhcmdldC5jcHAKLUBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBQUENTdWJ0YXJnZXQ6OmluaXRT dWJ0YXJnZXRGZWF0dXJlcyhTdHJpbmdSZWYgQ1BVLCBTdHJpbmdSZWYgRlMpIHsKLSAKLSAgIGlm ICgoVGFyZ2V0VHJpcGxlLmlzT1NGcmVlQlNEKCkgJiYgVGFyZ2V0VHJpcGxlLmdldE9TTWFqb3JW ZXJzaW9uKCkgPj0gMTMpIHx8Ci0gICAgICAgVGFyZ2V0VHJpcGxlLmlzT1NOZXRCU0QoKSB8fCBU YXJnZXRUcmlwbGUuaXNPU09wZW5CU0QoKSB8fAotLSAgICAgIFRhcmdldFRyaXBsZS5pc011c2wo KSkKLSsgICAgICBpc1RhcmdldExpbnV4KCkpCi0gICAgIFNlY3VyZVBsdCA9IHRydWU7Ci0gCi0g ICBpZiAoSGFzU1BFICYmIElzUFBDNjQpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2xsdm0tMDA0LW92ZXJyaWRlLW9wdC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMv bGx2bS0wMDQtb3ZlcnJpZGUtb3B0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA1MWQwZTRiMzFiMzIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVz L2xsdm0tMDA0LW92ZXJyaWRlLW9wdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAg QEAKLVRoaXMgYWxsb3dzIHVzIHRvIG92ZXJyaWRlIHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgYXMg bm90IGFsbCBwbGF0Zm9ybXMgY2FuCi1kZWFsIHdpdGggLU8zLgotCi0tLS0gYS9sbHZtL0NNYWtl TGlzdHMudHh0Ci0rKysgYi9sbHZtL0NNYWtlTGlzdHMudHh0Ci1AQCAtOTE4LDYgKzkxOCwxMiBA QCBpZiggTUlOR1cgQU5EIE5PVCAiJHtDTUFLRV9DWFhfQ09NUElMRVJfSUR9IiBNQVRDSEVTICJD bGFuZyIgKQotICAgbGx2bV9yZXBsYWNlX2NvbXBpbGVyX29wdGlvbihDTUFLRV9DWFhfRkxBR1Nf UkVMRUFTRSAiLU8zIiAiLU8yIikKLSBlbmRpZigpCi0gCi0rc2V0KFZPSURfQ1hYX09QVF9GTEFH UyAiIiBDQUNIRSBTVFJJTkcgIk9wdGltaXphdGlvbiBsZXZlbCB0byB1c2UiKQotKwotK2lmIChO T1QgVk9JRF9DWFhfT1BUX0ZMQUdTIFNUUkVRVUFMICIiKQotKyAgICBsbHZtX3JlcGxhY2VfY29t cGlsZXJfb3B0aW9uKENNQUtFX0NYWF9GTEFHU19SRUxFQVNFICItTzMiICIke1ZPSURfQ1hYX09Q VF9GTEFHU30iKQotK2VuZGlmKCkKLSsKLSAjIFB1dCB0aGlzIGJlZm9yZSB0YmxnZW4uIEVsc2Ug d2UgaGF2ZSBhIGNpcmN1bGFyIGRlcGVuZGVuY2UuCi0gYWRkX3N1YmRpcmVjdG9yeShsaWIvRGVt YW5nbGUpCi0gYWRkX3N1YmRpcmVjdG9yeShsaWIvU3VwcG9ydCkKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaCBiL3NyY3BrZ3MvbGx2 bTEyL3BhdGNoZXMvbGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggZDMzMjY4N2I5ZDkyLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZt MTIvcGF0Y2hlcy9sbHZtLTAwNS1wcGMtYmlncGljLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MzYgKzAsMCBAQAotRnJvbSBmM2RiZGQ0OWMwNmJmYWZjMWQ2MTM4MDk0Y2Y0Mjg4OWMxNGQzOGI2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2FtdWVsIEhvbGxhbmQgPHNhbXVlbEBz aG9sbGFuZC5vcmc+Ci1EYXRlOiBTdW4sIDMgTm92IDIwMTkgMTA6NTc6MjcgLTA2MDAKLVN1Ympl Y3Q6IFtQQVRDSF0gW0xMVk1dW1Bvd2VyUENdIEFzc3VtZSBCaWdQSUMgaWYgbm8gUElDIGxldmVs IGlzIHNwZWNpZmllZAotCi0tLS0KLSBsbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENBc21Qcmlu dGVyLmNwcCAgfCAyICstCi0gbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDTUNJbnN0TG93ZXIu Y3BwIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u cygtKQotCi1kaWZmIC0tZ2l0IGEvbGliL1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3Bw IGIvbGliL1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3BwCi1pbmRleCBjY2UyMWYzMi4u ODdjYTVmOWIgMTAwNjQ0Ci0tLS0gYS9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENBc21Qcmlu dGVyLmNwcAotKysrIGIvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDQXNtUHJpbnRlci5jcHAK LUBAIC01MjAsNyArNTIwLDcgQEAgdm9pZCBQUENBc21QcmludGVyOjpFbWl0VGxzQ2FsbChjb25z dCBNYWNoaW5lSW5zdHIgKk1JLAotIAotICAgLy8gQWRkIDMyNzY4IG9mZnNldCB0byB0aGUgc3lt Ym9sIHNvIHdlIGZvbGxvdyB1cCB0aGUgbGF0ZXN0IEdPVC9QTFQgQUJJLgotICAgaWYgKEtpbmQg PT0gTUNTeW1ib2xSZWZFeHByOjpWS19QTFQgJiYgU3VidGFyZ2V0LT5pc1NlY3VyZVBsdCgpICYm Ci0tICAgICAgTS0+Z2V0UElDTGV2ZWwoKSA9PSBQSUNMZXZlbDo6QmlnUElDKQotKyAgICAgIE0t PmdldFBJQ0xldmVsKCkgIT0gUElDTGV2ZWw6OlNtYWxsUElDKQotICAgICBUbHNSZWYgPSBNQ0Jp bmFyeUV4cHI6OmNyZWF0ZUFkZCgKLSAgICAgICAgIFRsc1JlZiwgTUNDb25zdGFudEV4cHI6OmNy ZWF0ZSgzMjc2OCwgT3V0Q29udGV4dCksIE91dENvbnRleHQpOwotICAgY29uc3QgTWFjaGluZU9w ZXJhbmQgJk1PID0gTUktPmdldE9wZXJhbmQoMik7Ci1kaWZmIC0tZ2l0IGEvbGliL1RhcmdldC9Q b3dlclBDL1BQQ01DSW5zdExvd2VyLmNwcCBiL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENNQ0luc3RM b3dlci5jcHAKLWluZGV4IDVjYzE4MGQ3Li5hNWIwMjU2NSAxMDA2NDQKLS0tLSBhL2xsdm0vbGli L1RhcmdldC9Qb3dlclBDL1BQQ01DSW5zdExvd2VyLmNwcAotKysrIGIvbGx2bS9saWIvVGFyZ2V0 L1Bvd2VyUEMvUFBDTUNJbnN0TG93ZXIuY3BwCi1AQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBN Q09wZXJhbmQgR2V0U3ltYm9sUmVmKGNvbnN0IE1hY2hpbmVPcGVyYW5kICZNTywgY29uc3QgTUNT eW1ib2wgKlN5bWJvbCwKLSAgIGNvbnN0IE1DRXhwciAqRXhwciA9IE1DU3ltYm9sUmVmRXhwcjo6 Y3JlYXRlKFN5bWJvbCwgUmVmS2luZCwgQ3R4KTsKLSAgIC8vIElmIC1tc2VjdXJlLXBsdCAtZlBJ QywgYWRkIDMyNzY4IHRvIHN5bWJvbC4KLSAgIGlmIChTdWJ0YXJnZXQtPmlzU2VjdXJlUGx0KCkg JiYgVE0uaXNQb3NpdGlvbkluZGVwZW5kZW50KCkgJiYKLS0gICAgICBNLT5nZXRQSUNMZXZlbCgp ID09IFBJQ0xldmVsOjpCaWdQSUMgJiYKLSsgICAgICBNLT5nZXRQSUNMZXZlbCgpICE9IFBJQ0xl dmVsOjpTbWFsbFBJQyAmJgotICAgICAgIE1PLmdldFRhcmdldEZsYWdzKCkgPT0gUFBDSUk6Ok1P X1BMVCkKLSAgICAgRXhwciA9Ci0gICAgICAgICBNQ0JpbmFyeUV4cHI6OmNyZWF0ZUFkZChFeHBy LCBNQ0NvbnN0YW50RXhwcjo6Y3JlYXRlKDMyNzY4LCBDdHgpLCBDdHgpOwpkaWZmIC0tZ2l0IGEv c3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwNi1hYXJjaDY0LW1mX2V4ZWMucGF0Y2ggYi9z cmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAwYWJkMjE2NjY1Li4wMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwNi1hYXJjaDY0LW1mX2V4ZWMucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1GaXggZmFpbHVyZXMgaW4gQWxsb2NhdGlv blRlc3RzL01hcHBlZE1lbW9yeVRlc3QuKiBvbiBhYXJjaDY0OgotCi0gICAgRmFpbGluZyBUZXN0 cyAoOCk6Ci0gICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0FsbG9j YXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0LkFsbG9jQW5kUmVsZWFzZS8zCi0gICAgICAgIExM Vk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRN ZW1vcnlUZXN0LkR1cGxpY2F0ZU5lYXIvMwotICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9ydC8u L1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5FbmFibGVkV3Jp dGUvMwotICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0 aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5NdWx0aXBsZUFsbG9jQW5kUmVsZWFzZS8zCi0gICAg ICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9N YXBwZWRNZW1vcnlUZXN0LlN1Y2Nlc3NpdmVOZWFyLzMKLSAgICAgICAgTExWTS1Vbml0IDo6IFN1 cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuVW5h bGlnbmVkTmVhci8zCi0gICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3VwcG9ydFRlc3Rz L0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0Llplcm9OZWFyLzMKLSAgICAgICAgTExW TS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1l bW9yeVRlc3QuWmVyb1NpemVOZWFyLzMKLQotVXBzdHJlYW0tSXNzdWU6IGh0dHBzOi8vYnVncy5s bHZtLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNzgjYzEwCi0KLS0tLSBhL2xsdm0vbGliL1N1cHBv cnQvVW5peC9NZW1vcnkuaW5jCi0rKysgYi9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvTWVtb3J5Lmlu YwotQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIGludCBnZXRQb3NpeFByb3RlY3Rpb25GbGFncyh1 bnNpZ25lZCBGbGFncykgewotICAgICByZXR1cm4gUFJPVF9SRUFEIHwgUFJPVF9XUklURSB8IFBS T1RfRVhFQzsKLSAgIGNhc2UgbGx2bTo6c3lzOjpNZW1vcnk6Ok1GX0VYRUM6Ci0gI2lmIChkZWZp bmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fUE9XRVJQQ19fKSB8fCBkZWZpbmVkIChfX3Bw Y19fKSB8fCBcCi0tICAgICBkZWZpbmVkKF9QT1dFUikgfHwgZGVmaW5lZChfQVJDSF9QUEMpKQot KyAgICAgZGVmaW5lZChfUE9XRVIpIHx8IGRlZmluZWQoX0FSQ0hfUFBDKSB8fCAoZGVmaW5lZChf X2xpbnV4X18pICYmIGRlZmluZWQoX19hYXJjaDY0X18pKSkKLSAgICAgLy8gT24gUG93ZXJQQywg aGF2aW5nIGFuIGV4ZWN1dGFibGUgcGFnZSB0aGF0IGhhcyBubyByZWFkIHBlcm1pc3Npb24KLSAg ICAgLy8gY2FuIGhhdmUgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMuICBUaGUgZnVuY3Rpb24gSW52 YWxpZGF0ZUluc3RydWN0aW9uLQotICAgICAvLyBDYWNoZSB1c2VzIGluc3RydWN0aW9ucyBkY2Jm IGFuZCBpY2JpLCBib3RoIG9mIHdoaWNoIGFyZSB0cmVhdGVkIGJ5CmRpZmYgLS1naXQgYS9zcmNw a2dzL2xsdm0xMi90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGx2bTEyL3RlbXBsYXRlCmluZGV4IDdiMzYx YmJiZjViYy4uZTdlNDBjYWU0MTNlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xsdm0xMi90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2xsdm0xMi90ZW1wbGF0ZQpAQCAtMSwxMjUgKzEsMTMgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2xsdm0xMicKIHBrZ25hbWU9bGx2bTEyCiB2ZXJzaW9uPTEyLjAuMQot cmV2aXNpb249Mwotd3Jrc3JjPSJsbHZtLXByb2plY3QtJHt2ZXJzaW9ufS5zcmMiCi1idWlsZF93 cmtzcmM9bGx2bQotYnVpbGRfc3R5bGU9Y21ha2UKLWNvbmZpZ3VyZV9hcmdzPSIKLSAtRENNQUtF X0JVSUxEX1RZUEU9UmVsZWFzZSAtV25vLWRldgotIC1ERU5BQkxFX0xJTktFUl9CVUlMRF9JRD1Z RVMKLSAtRExMVk1fSU5DTFVERV9ET0NTPVlFUwotIC1ETExWTV9CVUlMRF9ET0NTPVlFUwotIC1E TExWTV9FTkFCTEVfU1BISU5YPVlFUwotIC1EU1BISU5YX1dBUk5JTkdTX0FTX0VSUk9SUz1OTwot IC1ETExWTV9CVUlMRF9MTFZNX0RZTElCPVlFUwotIC1ETExWTV9MSU5LX0xMVk1fRFlMSUI9WUVT Ci0gLURMTFZNX0VOQUJMRV9SVFRJPVlFUwotIC1ETExWTV9FTkFCTEVfRkZJPVlFUwotIC1ETExW TV9CSU5VVElMU19JTkNESVI9L3Vzci9pbmNsdWRlIgotaG9zdG1ha2VkZXBlbmRzPSJwZXJsIHB5 dGhvbjMgemxpYi1kZXZlbCBsaWJmZmktZGV2ZWwgc3dpZyBweXRob24zLVNwaGlueAotIHB5dGhv bjMtcmVjb21tb25tYXJrIHB5dGhvbjMtc3BoaW54LWF1dG9tb2RhcGkiCi1tYWtlZGVwZW5kcz0i cHl0aG9uMy1kZXZlbCB6bGliLWRldmVsIGVsZnV0aWxzLWRldmVsIGxpYmZmaS1kZXZlbCBsaWJl ZGl0LWRldmVsCi0gbGlieG1sMi1kZXZlbCBiaW51dGlscy1kZXZlbCBsaWJhdG9taWMtZGV2ZWwi Ci1kZXBlbmRzPSJsaWJsbHZtMTI+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi1zaG9ydF9kZXNj PSJMb3cgTGV2ZWwgVmlydHVhbCBNYWNoaW5lIgorcmV2aXNpb249NAorYnVpbGRfc3R5bGU9bWV0 YQorc2hvcnRfZGVzYz0iTG93IExldmVsIFZpcnR1YWwgTWFjaGluZSAocmVtb3ZlZCBwYWNrYWdl KSIKIG1haW50YWluZXI9InE2NiA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+IgotbGljZW5zZT0iQXBh Y2hlLTIuMCIKK2xpY2Vuc2U9Im1ldGFwYWNrYWdlIgogaG9tZXBhZ2U9Imh0dHBzOi8vd3d3Lmxs dm0ub3JnIgotZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3Qv cmVsZWFzZXMvZG93bmxvYWQvbGx2bW9yZy0ke3ZlcnNpb259L2xsdm0tcHJvamVjdC0ke3ZlcnNp b259LnNyYy50YXIueHoiCi1jaGVja3N1bT0xMjljYjI1Y2QxMzY3N2FhZDk1MWNlNWMyZGViMGZl NGFmYzFlOWQ5ODk1MGY1M2I1MWJkY2ZiNWE3M2FmYTBlCi1saWIzMmRpc2FibGVkPXllcwotcHl0 aG9uX3ZlcnNpb249MwotCi1pZiBbICIkWEJQU19UQVJHRVRfTElCQyIgPSAibXVzbCIgXTsgdGhl bgotCWNvbmZpZ3VyZV9hcmdzKz0iIC1ETElCQ1hYX0hBU19NVVNMX0xJQkM9WUVTIgotCW1ha2Vk ZXBlbmRzKz0iIGxpYmV4ZWNpbmZvLWRldmVsIgotCWRlcGVuZHMrPSIgbGliZXhlY2luZm8tZGV2 ZWwiCi1maQotCi0jICJvcGVyYW5kIG91dCBvZiByYW5nZSIgYXNzZW1ibGVyIGZhaWx1cmVzCi1j YXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQlwcGM2NCopIDs7Ci0JcHBjKikgY29uZmln dXJlX2FyZ3MrPSIgLURDTEFOR19FTkFCTEVfQ0xBTkdEPU9GRiIgOzsKLWVzYWMKLQotcG9zdF9w YXRjaCgpIHsKLQkjIHVwZGF0ZSBjb25maWcuZ3Vlc3MgZm9yIGJldHRlciBwbGF0Zm9ybSBkZXRl Y3Rpb24KLQljcCAkWEJQU19DT01NT05ESVIvZW52aXJvbm1lbnQvY29uZmlndXJlL2F1dG9tYWtl L2NvbmZpZy5ndWVzcyBcCi0JCSR7d3Jrc3JjfS9sbHZtL2NtYWtlCi19Ci0KLXByZV9jb25maWd1 cmUoKSB7Ci0JbG9jYWwgdHJpcGxldAotCi0JIyBWYXN0bHkgcmVkdWNlIHNpemUgb2YgZGVidWdn aW5nIHN5bWJvbHM6Ci0JQ0ZMQUdTPSR7Q0ZMQUdTLyAtZy8gLWcxfQotCUNYWEZMQUdTPSR7Q1hY RkxBR1MvIC1nLyAtZzF9Ci0KLQkjIHNpbmNlIGdjYzksIHRoZSBidWlsZCBsaWtlcyB0byBibG93 IHVwIGZvciBwcGMzMiBhcHBhcmVudGx5IGJlY2F1c2UKLQkjIG9mIGNsYW5nIGJlaW5nIHRvbyBs YXJnZSBmb3IgYSAyNC1iaXQgcmVsYXRpdmUgY2FsbCB0byB0aGUgUExULCBzbwotCSMgb3B0aW1p emUgZm9yIHNpemUgaW5zdGVhZAotCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCQlw cGM2NCopIDs7Ci0JCW1pcHMqLW11c2x8cHBjKikgY29uZmlndXJlX2FyZ3MrPSIgLURWT0lEX0NY WF9PUFRfRkxBR1M9LU9zIiA7OwotCWVzYWMKLQotCWlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhl bgotCQltc2dfbm9ybWFsICJCdWlsZGluZyBob3N0IHRibGdlblxuIgotCQlta2RpciAtcCBidWls ZC9IT1NUCi0JCWNkIGJ1aWxkL0hPU1QKLQkJQ0M9IiRCVUlMRF9DQyIgQ1hYPSIkQlVJTERfQ1hY IiBDRkxBR1M9IiRCVUlMRF9DRkxBR1MiIFwKLQkJCUNYWEZMQUdTPSIkQlVJTERfQ1hYRkxBR1Mi IExERkxBR1M9IiRCVUlMRF9MREZMQUdTIiBcCi0JCQljbWFrZSAuLi8uLiAtRENNQUtFX0JVSUxE X1RZUEU9UmVsZWFzZSBcCi0JCQktRExMVk1fRU5BQkxFX1BST0pFQ1RTPSR7X2VuYWJsZWRfcHJv amVjdHN9Ci0JCW1ha2UgJHttYWtlam9ic30gLUMgdXRpbHMvVGFibGVHZW4KLQkJWyAiJF9sbGRi X2VuYWJsZSIgPSAieWVzIiBdICYmIG1ha2UgJHttYWtlam9ic30gLUMgdG9vbHMvbGxkYi91dGls cy9UYWJsZUdlbgotCQljb25maWd1cmVfYXJncys9IiAtRExMVk1fVEFCTEVHRU49JHt3cmtzcmN9 L2xsdm0vYnVpbGQvSE9TVC9iaW4vbGx2bS10YmxnZW4iCi0JCVsgIiRfbGxkYl9lbmFibGUiID0g InllcyIgXSAmJiBjb25maWd1cmVfYXJncys9IiAtRExMREJfVEFCTEVHRU49JHt3cmtzcmN9L2xs dm0vYnVpbGQvSE9TVC9iaW4vbGxkYi10YmxnZW4iCi0JCWNkIC4uLy4uCi0JZmkKLQotCWNhc2Ug IiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCQlpNjg2KikgX2FyY2g9Ilg4NiI7OwotCQl4ODZf NjQqKSBfYXJjaD0iWDg2Ijs7Ci0JCWFybXY1KikgX2FyY2g9IkFybXY1dGUiOzsKLQkJYXJtdjYq KSBfYXJjaD0iQXJtdjYiOzsKLQkJYXJtdjcqKSBfYXJjaD0iQXJtdjciOzsKLQkJYWFyY2g2NCop IF9hcmNoPSJBQXJjaDY0Ijs7Ci0JCW1pcHMqKSBfYXJjaD0iTWlwcyI7OwotCQlwcGMqKSBfYXJj aD0iUG93ZXJQQyI7OwotCQlyaXNjdjY0KikgX2FyY2g9IlJJU0NWNjQiOzsKLQllc2FjCi0KLQl0 cmlwbGV0PSR7WEJQU19DUk9TU19UUklQTEVUOi0kWEJQU19UUklQTEVUfQotCi0JY29uZmlndXJl X2FyZ3MrPSIgLURMTFZNX1RBUkdFVF9BUkNIPSR7X2FyY2h9IgotCWNvbmZpZ3VyZV9hcmdzKz0i IC1ETExWTV9IT1NUX1RSSVBMRT0ke3RyaXBsZXR9IgotCWNvbmZpZ3VyZV9hcmdzKz0iIC1ETExW TV9ERUZBVUxUX1RBUkdFVF9UUklQTEU9JHt0cmlwbGV0fSIKLX0KLQotZG9faW5zdGFsbCgpIHsK LQljZCBidWlsZAotCWNtYWtlIC1EQ01BS0VfSU5TVEFMTF9QUkVGSVg9JHtERVNURElSfS91c3Ig LVAgY21ha2VfaW5zdGFsbC5jbWFrZQotCi0JIyBSZXF1aXJlZCBmb3IgbXVsdGlsaWIuCi0JaWYg WyAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiID0gIng4Nl82NCIgXTsgdGhlbgotCQlmb3IgX2hlYWRl ciBpbiBsbHZtLWNvbmZpZzsgZG8KLQkJCW12ICR7REVTVERJUn0vdXNyL2luY2x1ZGUvbGx2bS9D b25maWcvJHtfaGVhZGVyfXssLTY0fS5oCi0JCQl2aW5zdGFsbCAke0ZJTEVTRElSfS9sbHZtLUNv bmZpZy0ke19oZWFkZXJ9LmggNjQ0IFwKLQkJCQl1c3IvaW5jbHVkZS9sbHZtL0NvbmZpZyAke19o ZWFkZXJ9LmgKLQkJZG9uZQotCWZpCi0KLQkjIFJlbW92ZSBsbHZtLWNvbmZpZy1ob3N0IGluIGNy b3NzIGJ1aWxkcy4KLQlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KLQkJcm0gLWYgJHtERVNU RElSfS91c3IvYmluL2xsdm0tY29uZmlnLWhvc3QKLQlmaQotfQogCiBsaWJsbHZtMTJfcGFja2Fn ZSgpIHsKIAlzaG9ydF9kZXNjKz0iIC0gcnVudGltZSBsaWJyYXJ5IgotCXBrZ19pbnN0YWxsKCkg ewotCQl2bW92ZSAidXNyL2xpYi9saWJMTFZNLSouc28qIgotCX0KIH0KZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbGx2bTEyL3VwZGF0ZSBiL3NyY3BrZ3MvbGx2bTEyL3VwZGF0ZQpkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggZTk1Y2YyNmIzNTg2Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtn cy9sbHZtMTIvdXBkYXRlCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1zaXRlPSJodHRw czovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvcmVsZWFzZXMiCi1wYXR0ZXJuPSJsbHZt b3JnLVxLKFxkKy4pezJ9XGQrKC1yY1xkKyk/IgotaWdub3JlPSIqLXJjKiIKCkZyb20gMTNjYzNj NTMxNTJiZGI5OWUzOTY1MDZkYjFhZWQ0YjgyMTk2NmYyYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBDZXJxdWVpcmE/PSA8YWNlcnF1ZWlyYTAy MUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjggRmViIDIwMjIgMjE6NDI6NTUgKzAwMDAKU3ViamVj dDogW1BBVENIIDE1LzIwXSBtZXNhOiByZWJ1aWxkIGZvciBsbHZtMTMKCi0tLQogc3JjcGtncy9t ZXNhL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tZXNhL3RlbXBsYXRlIGIvc3JjcGtncy9t ZXNhL3RlbXBsYXRlCmluZGV4IGViODFjYmIzNDVhNS4uZDA0OTliYTlmYmNhIDEwMDY0NAotLS0g YS9zcmNwa2dzL21lc2EvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tZXNhL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWVzYScKIHBrZ25hbWU9bWVzYQogdmVy c2lvbj0yMS4zLjUKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBj b25maWd1cmVfYXJncz0iLURnbHZuZD10cnVlIC1Ec2hhcmVkLWdsYXBpPWVuYWJsZWQgLURnYm09 ZW5hYmxlZCAtRGVnbD1lbmFibGVkCiAgLURvc21lc2E9dHJ1ZSAtRGdsZXMxPWVuYWJsZWQgLURn bGVzMj1lbmFibGVkIC1EZ2x4PWRyaSAtRGRyaTM9ZW5hYmxlZAoKRnJvbSBjNGMwM2UwODRjZDEz N2E0ODdjMWQzYTQyM2I1MGJiZWU2Yzc0NTFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMENlcnF1ZWlyYT89IDxhY2VycXVlaXJhMDIxQGdtYWls LmNvbT4KRGF0ZTogTW9uLCAyOCBGZWIgMjAyMiAyMTo0Mzo1NiArMDAwMApTdWJqZWN0OiBbUEFU Q0ggMTYvMjBdIHF0Y3JlYXRvcjogdXBkYXRlIHRvIDYuMC4yLgoKLS0tCiAuLi4vcXRjcmVhdG9y L3BhdGNoZXMvNi4wLjItLWJhY2t0cmFjZS5wYXRjaCAgfCA0NCArKysrKysrKysrKysrKysrKysr CiAuLi4vcXRjcmVhdG9yL3BhdGNoZXMvUVRDUkVBVE9SQlVHLTI2OTEwLmRpZmYgfCAzOSArKysr KysrKysrKysrKysrCiBzcmNwa2dzL3F0Y3JlYXRvci90ZW1wbGF0ZSAgICAgICAgICAgICAgICAg ICAgfCAgOCArKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyksIDQgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdGNyZWF0b3IvcGF0Y2hlcy82LjAu Mi0tYmFja3RyYWNlLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdGNyZWF0b3Iv cGF0Y2hlcy9RVENSRUFUT1JCVUctMjY5MTAuZGlmZgoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXRj cmVhdG9yL3BhdGNoZXMvNi4wLjItLWJhY2t0cmFjZS5wYXRjaCBiL3NyY3BrZ3MvcXRjcmVhdG9y L3BhdGNoZXMvNi4wLjItLWJhY2t0cmFjZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLmM1N2UxZWNjNThiMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mv cXRjcmVhdG9yL3BhdGNoZXMvNi4wLjItLWJhY2t0cmFjZS5wYXRjaApAQCAtMCwwICsxLDQ0IEBA CitGcm9tIDcyMmQ4NGZlZTUzMjFlZTY5MDlmMTJjMWQxMGIwOTdjMjRiYTFhZGMgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/UGlvdHI9MjBXPUMzPUIzamNpaz89IDxj aG9jaW1pZXJAdGxlbi5wbD4KK0RhdGU6IFNhdCwgMjIgSmFuIDIwMjIgMTc6Mjk6NTkgKzAxMDAK K1N1YmplY3Q6IFtQQVRDSF0gYmFja3RyYWNlCisKKworZGlmZiAtLWdpdCBhL3NyYy9saWJzL3V0 aWxzL3F0Y2Fzc2VydC5jcHAgYi9zcmMvbGlicy91dGlscy9xdGNhc3NlcnQuY3BwCitpbmRleCA1 NjBkZjQzYS4uODdjYTZmZDUgMTAwNjQ0CistLS0gYS9zcmMvbGlicy91dGlscy9xdGNhc3NlcnQu Y3BwCisrKysgYi9zcmMvbGlicy91dGlscy9xdGNhc3NlcnQuY3BwCitAQCAtNDAsNyArNDAsNyBA QCB2b2lkIGR1bXBCYWNrdHJhY2UoaW50IG1heGRlcHRoKQorIHsKKyAgICAgaWYgKG1heGRlcHRo ID09IC0xKQorICAgICAgICAgbWF4ZGVwdGggPSAxMDAwOworLSNpZiBkZWZpbmVkKFFfT1NfVU5J WCkKKysjaWYgZGVmaW5lZChRX09TX1VOSVgpICYmIGRlZmluZWQoX19HTElCQ19fKQorICAgICB2 b2lkICpidFsxMDAwXSA9IHtudWxscHRyfTsKKyAgICAgaW50IHNpemUgPSBiYWNrdHJhY2UoYnQs IHNpemVvZihidCkgLyBzaXplb2YoYnRbMF0pKTsKKyAgICAgY2hhciAqKmxpbmVzID0gYmFja3Ry YWNlX3N5bWJvbHMoYnQsIHNpemUpOworZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL3FtbGRlc2ln bmVyL2Rlc2lnbmVyY29yZS9leGNlcHRpb25zL2V4Y2VwdGlvbi5jcHAgYi9zcmMvcGx1Z2lucy9x bWxkZXNpZ25lci9kZXNpZ25lcmNvcmUvZXhjZXB0aW9ucy9leGNlcHRpb24uY3BwCitpbmRleCBh M2E5ODA2Zi4uYmI2Y2MzMGQgMTAwNjQ0CistLS0gYS9zcmMvcGx1Z2lucy9xbWxkZXNpZ25lci9k ZXNpZ25lcmNvcmUvZXhjZXB0aW9ucy9leGNlcHRpb24uY3BwCisrKysgYi9zcmMvcGx1Z2lucy9x bWxkZXNpZ25lci9kZXNpZ25lcmNvcmUvZXhjZXB0aW9ucy9leGNlcHRpb24uY3BwCitAQCAtOTks NyArOTksNyBAQCBib29sIEV4Y2VwdGlvbjo6d2FybkFib3V0RXhjZXB0aW9uKCkKKyAjZW5kaWYK KyB9CisgCistI2lmZGVmIFFfT1NfTElOVVgKKysjaWYgZGVmaW5lZChRX09TX1VOSVgpICYmIGRl ZmluZWQoX19HTElCQ19fKQorIHN0YXRpYyBRU3RyaW5nIGdldEJhY2tUcmFjZSgpCisgeworICAg ICBRU3RyaW5nIGJhY2tUcmFjZTsKK0BAIC0xMzcsNyArMTM3LDcgQEAgRXhjZXB0aW9uOjpFeGNl cHRpb24oaW50IGxpbmUsIGNvbnN0IFFCeXRlQXJyYXkgJmZ1bmN0aW9uLAorICAgLCBtX2Z1bmN0 aW9uKFFTdHJpbmc6OmZyb21VdGY4KGZ1bmN0aW9uKSkKKyAgICwgbV9maWxlKFFTdHJpbmc6OmZy b21VdGY4KGZpbGUpKQorICAgLCBtX2Rlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKQorLSAgI2lmZGVm IFFfT1NfTElOVVgKKysgICNpZiBkZWZpbmVkKFFfT1NfVU5JWCkgJiYgZGVmaW5lZChfX0dMSUJD X18pCisgICAsIG1fYmFja1RyYWNlKGdldEJhY2tUcmFjZSgpKQorICAgI2VuZGlmCisgeworLS0g CisyLjM0LjEKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdGNyZWF0b3IvcGF0Y2hlcy9RVENSRUFU T1JCVUctMjY5MTAuZGlmZiBiL3NyY3BrZ3MvcXRjcmVhdG9yL3BhdGNoZXMvUVRDUkVBVE9SQlVH LTI2OTEwLmRpZmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YzA3 YzcyY2NmMTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0Y3JlYXRvci9wYXRjaGVzL1FU Q1JFQVRPUkJVRy0yNjkxMC5kaWZmCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gYjNlOWYyNGVkMWMw ZDNjMGVlNDkxN2Q0YjQ0OWRhOTBlMDBlODg4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IE1hcmNvIEJ1YmtlIDxtYXJjby5idWJrZUBxdC5pbz4KK0RhdGU6IE1vbiwgMjQgSmFuIDIw MjIgMTQ6Mzg6MjkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gUW1sRGVzaWduZXI6IEZpeCAzMiBi aXQKKworQmVjYXVzZSBzdGQ6OnB0cmRpZmZfdCBhbmQgaW50IGFyZSB0aGUgc2FtZSB1bmRlciAz MiBiaXQgdGhlIGNvbnN0cnVjdG9yCitpcyBjaGFuZ2VkIHRvIGEgdGVtcGxhdGUuIFRoZSBjbGFz cyBpcyBwcml2YXRlIHNvIGl0IGlzIHZlcnkgdW5saWtlbHkKK3RoYXQgaXQgbGVhZHMgdG8gZXJy b3JzLgorCitUYXNrLW51bWJlcjogUVRDUkVBVE9SQlVHLTI2OTEwCitDaGFuZ2UtSWQ6IEk5NGM5 ODdiOWI2ZDJmMDQ4NzY3NDBmZjI4M2EzMzljMGRiMDU2Y2ZkCitSZXZpZXdlZC1ieTogPGdpdGh1 Yi1hY3Rpb25zLXF0LWNyZWF0b3JAY3Jpc3RpYW5hZGFtLmV1PgorUmV2aWV3ZWQtYnk6IENocmlz dG9waGUgR2lib3VkZWF1eCA8Y2hyaXN0b3BoZUBrcm9wLmZyPgorUmV2aWV3ZWQtYnk6IEVpa2Ug WmlsbGVyIDxlaWtlLnppbGxlckBxdC5pbz4KK1Jldmlld2VkLWJ5OiBRdCBDSSBCb3QgPHF0X2Np X2JvdEBxdC1wcm9qZWN0Lm9yZz4KKy0tLQorCitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvcW1s ZGVzaWduZXIvZGVzaWduZXJjb3JlL3Byb2plY3RzdG9yYWdlL3N0b3JhZ2VjYWNoZS5oIGIvc3Jj L3BsdWdpbnMvcW1sZGVzaWduZXIvZGVzaWduZXJjb3JlL3Byb2plY3RzdG9yYWdlL3N0b3JhZ2Vj YWNoZS5oCitpbmRleCA3NDdjM2Q5Li4yN2QyOTA1IDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMv cW1sZGVzaWduZXIvZGVzaWduZXJjb3JlL3Byb2plY3RzdG9yYWdlL3N0b3JhZ2VjYWNoZS5oCisr KysgYi9zcmMvcGx1Z2lucy9xbWxkZXNpZ25lci9kZXNpZ25lcmNvcmUvcHJvamVjdHN0b3JhZ2Uv c3RvcmFnZWNhY2hlLmgKK0BAIC02NywxNSArNjcsOCBAQAorIAorICAgICAgICAgU3RvcmFnZUNh Y2hlSW5kZXgoY29uc3QgY2hhciAqKSA9IGRlbGV0ZTsKKyAKKy0gICAgICAgIGNvbnN0ZXhwciBl eHBsaWNpdCBTdG9yYWdlQ2FjaGVJbmRleChpbnQgaWQpIG5vZXhjZXB0CistICAgICAgICAgICAg OiBpZHtpZH0KKy0gICAgICAgIHt9CistCistICAgICAgICBjb25zdGV4cHIgZXhwbGljaXQgU3Rv cmFnZUNhY2hlSW5kZXgoc3RkOjpzaXplX3QgaWQpIG5vZXhjZXB0CistICAgICAgICAgICAgOiBp ZHtzdGF0aWNfY2FzdDxpbnQ+KGlkKX0KKy0gICAgICAgIHt9CistCistICAgICAgICBjb25zdGV4 cHIgZXhwbGljaXQgU3RvcmFnZUNhY2hlSW5kZXgoc3RkOjpwdHJkaWZmX3QgaWQpIG5vZXhjZXB0 CisrICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ2VyVHlwZT4KKysgICAgICAgIGNvbnN0 ZXhwciBleHBsaWNpdCBTdG9yYWdlQ2FjaGVJbmRleChJbnRlZ2VyVHlwZSBpZCkgbm9leGNlcHQK KyAgICAgICAgICAgICA6IGlke3N0YXRpY19jYXN0PGludD4oaWQpfQorICAgICAgICAge30KKyAK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXRjcmVhdG9yL3RlbXBsYXRlIGIvc3JjcGtncy9xdGNyZWF0 b3IvdGVtcGxhdGUKaW5kZXggMjhlODcxYjQwNmU1Li5hYzExNTJiY2NhMGMgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvcXRjcmVhdG9yL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXRjcmVhdG9yL3RlbXBs YXRlCkBAIC0xLDEzICsxLDEzIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdGNyZWF0b3InCiBw a2duYW1lPXF0Y3JlYXRvcgotdmVyc2lvbj01LjAuMwordmVyc2lvbj02LjAuMgogcmV2aXNpb249 MQogd3Jrc3JjPSJxdC1jcmVhdG9yLW9wZW5zb3VyY2Utc3JjLSR7dmVyc2lvbn0iCiBidWlsZF9z dHlsZT1xbWFrZQogbWFrZV9pbnN0YWxsX2FyZ3M9IklOU1RBTExfUk9PVD1cJHtERVNURElSfS91 c3IiCi1ob3N0bWFrZWRlcGVuZHM9ImNsYW5nIGxsdm0gcGVybCBwa2ctY29uZmlnIHB5dGhvbjMg d2hpY2ggcXQ1LXFtYWtlCitob3N0bWFrZWRlcGVuZHM9Imxsdm0xMyBwZXJsIHBrZy1jb25maWcg cHl0aG9uMyB3aGljaCBxdDUtcW1ha2UKICBxdDUtaG9zdC10b29scyIKLW1ha2VkZXBlbmRzPSJx dDUtZGVjbGFyYXRpdmUtZGV2ZWwgcXQ1LXNjcmlwdC1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwKK21h a2VkZXBlbmRzPSJxdDUtZGVjbGFyYXRpdmUtZGV2ZWwgcXQ1LXNjcmlwdC1kZXZlbCBxdDUtdG9v bHMtZGV2ZWwgcXQ1LXN2Zy1kZXZlbAogIHF0NS1xdWlja2NvbnRyb2xzIGNsYW5nIGxsdm0iCiBk ZXBlbmRzPSJxdDUtZGVjbGFyYXRpdmUtZGV2ZWwgcXQ1LXF1aWNrY29udHJvbHMgcXQ1LXBsdWdp bi1zcWxpdGUiCiBzaG9ydF9kZXNjPSJDcm9zcy1wbGF0Zm9ybSBJREUgZm9yIFF0IGRldmVsb3Bl cnMiCkBAIC0xNiw3ICsxNiw3IEBAIGxpY2Vuc2U9IkxHUEwtMy4wLW9yLWxhdGVyLCBjdXN0b206 UXRDb21wYW55LUdQTC1FeGNlcHRpb24tMS4wIgogaG9tZXBhZ2U9Imh0dHBzOi8vd2lraS5xdC5p by9DYXRlZ29yeTpUb29sczo6UXRDcmVhdG9yIgogY2hhbmdlbG9nPSJodHRwczovL2NvZGUucXQu aW8vY2dpdC9xdC1jcmVhdG9yL3F0LWNyZWF0b3IuZ2l0L3BsYWluL2Rpc3QvY2hhbmdlcy0ke3Zl cnNpb259Lm1kIgogZGlzdGZpbGVzPSJodHRwczovL2Rvd25sb2FkLnF0LmlvL29mZmljaWFsX3Jl bGVhc2VzL3F0Y3JlYXRvci8ke3ZlcnNpb24lLip9LyR7dmVyc2lvbn0vJHt3cmtzcmN9LnRhci54 eiIKLWNoZWNrc3VtPTdmZDNiMTQzMTBiY2VjZWU2YjEzNGY4Y2I3ZjRjMGVkMjM4NWQ3ZjRjZWNk NDhkNzU2YzVjMWZkNjUwY2UyZWIKK2NoZWNrc3VtPTNkMTczYzFhMDJjZTU1MTM3YTIzZjI5NGUx YTg0MGQ3NjQ4NjU2ZTk3ODI2MDY3ZWIyOWQ5ZGY2NTMzNTFiZmEKIHJlcGxhY2VzPSJxdGNyZWF0 b3ItZGF0YT49MCIKIHB5dGhvbl92ZXJzaW9uPTMKIAoKRnJvbSBiMGYwMzk2ZTA5Y2Q2ZWJkZGZm YzAwYjU3MDI4MzRlMDM3Yzk0NjE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VU Ri04P3E/QW5kcj1DMz1BOT0yMENlcnF1ZWlyYT89IDxhY2VycXVlaXJhMDIxQGdtYWlsLmNvbT4K RGF0ZTogTW9uLCAyOCBGZWIgMjAyMiAyMTo0Njo0OCArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMTcv MjBdIGlzcGM6IHVwZGF0ZSB0byAxLjE3LjAuCgotLS0KIC4uLi9pc3BjL3BhdGNoZXMvY21ha2Ut YnVpbGQtdHlwZS1ub25lLnBhdGNoICB8ICAgMTggLQogc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2 bTEyLTAwMS5wYXRjaCAgICAgICAgIHwgICA1NyAtCiBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZt MTItMDAyLnBhdGNoICAgICAgICAgfCAgOTIzIC0tLS0tLS0tCiBzcmNwa2dzL2lzcGMvcGF0Y2hl cy9sbHZtMTItMDAzLnBhdGNoICAgICAgICAgfCAxNTA0IC0tLS0tLS0tLS0tLQogc3JjcGtncy9p c3BjL3BhdGNoZXMvbGx2bTEyLTAwNC5wYXRjaCAgICAgICAgIHwgICAzNCAtCiBzcmNwa2dzL2lz cGMvcGF0Y2hlcy9sbHZtMTItMDA1LnBhdGNoICAgICAgICAgfCAgMzcyIC0tLQogc3JjcGtncy9p c3BjL3BhdGNoZXMvbGx2bTEyLTAwNi5wYXRjaCAgICAgICAgIHwgIDEyNiAtCiBzcmNwa2dzL2lz cGMvcGF0Y2hlcy9sbHZtMTItMDA3LnBhdGNoICAgICAgICAgfCAgMTYwIC0tCiBzcmNwa2dzL2lz cGMvcGF0Y2hlcy9sbHZtMTItMDA4LnBhdGNoICAgICAgICAgfCAgMTQ5IC0tCiBzcmNwa2dzL2lz cGMvcGF0Y2hlcy9sbHZtMTItMDA5LnBhdGNoICAgICAgICAgfCAyMTA5IC0tLS0tLS0tLS0tLS0t LS0tCiBzcmNwa2dzL2lzcGMvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2 ICstCiAxMSBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDU0NTUgZGVsZXRpb25zKC0p CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pc3BjL3BhdGNoZXMvY21ha2UtYnVpbGQtdHlw ZS1ub25lLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2 bTEyLTAwMS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xs dm0xMi0wMDIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9s bHZtMTItMDAzLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pc3BjL3BhdGNoZXMv bGx2bTEyLTAwNC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaXNwYy9wYXRjaGVz L2xsdm0xMi0wMDUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lzcGMvcGF0Y2hl cy9sbHZtMTItMDA2LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pc3BjL3BhdGNo ZXMvbGx2bTEyLTAwNy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaXNwYy9wYXRj aGVzL2xsdm0xMi0wMDgucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lzcGMvcGF0 Y2hlcy9sbHZtMTItMDA5LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMv Y21ha2UtYnVpbGQtdHlwZS1ub25lLnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMvY21ha2Ut YnVpbGQtdHlwZS1ub25lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTFl MzUzYzczMTQuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9jbWFrZS1i dWlsZC10eXBlLW5vbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1JbmRl eDogaXNwYy0xLjE1LjAvQ01ha2VMaXN0cy50eHQKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpc3BjLTEuMTUu MC5vcmlnL0NNYWtlTGlzdHMudHh0Ci0rKysgaXNwYy0xLjE1LjAvQ01ha2VMaXN0cy50eHQKLUBA IC0xNTcsMTMgKzE1Nyw2IEBAIHNldChPVVRQVVRfUkVMRUFTRSBSZWxlYXNlL2JpbikKLSBzZXQo Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElS fS9iaW4gKQotIAotIGlmKENNQUtFX0JVSUxEX1RZUEUpCi0tICAgICMgVmFsaWRhdGUgYnVpbGQg dHlwZQotLSAgICBzZXQoQ09ORklHVVJBVElPTl9UWVBFUyAiRGVidWc7UmVsZWFzZTtSZWxXaXRo RGViSW5mbyIpCi0tCi0tICAgIHN0cmluZyhGSU5EICIke0NPTkZJR1VSQVRJT05fVFlQRVN9IiAi JHtDTUFLRV9CVUlMRF9UWVBFfSIgTUFUQ0hFRF9DT05GSUcpCi0tICAgIGlmICgke01BVENIRURf Q09ORklHfSBFUVVBTCAtMSkKLS0gICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJDTUFLRV9C VUlMRF9UWVBFICgke0NNQUtFX0JVSUxEX1RZUEV9KSBhbGxvd3Mgb25seSB0aGUgZm9sbG93aW5n IHZhbHVlczogJHtDT05GSUdVUkFUSU9OX1RZUEVTfSIpCi0tICAgIGVuZGlmKCkKLSBlbHNlKE5P VCBDTUFLRV9CVUlMRF9UWVBFKQotICAgICBzZXQoQ01BS0VfQlVJTERfVFlQRSAiUmVsZWFzZSIp Ci0gICAgIG1lc3NhZ2UoU1RBVFVTICJCdWlsZCB0eXBlIG5vdCBzcGVjaWZpZWQ6IFVzZSBSZWxl YXNlIGJ5IGRlZmF1bHQuIikKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0x Mi0wMDEucGF0Y2ggYi9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAxLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjJkM2Y1YTQwOWUuLjAwMDAwMDAwMDAwMAotLS0g YS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAxLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNTcgKzAsMCBAQAotRnJvbSAxYzBmODlkY2NiNzc0ZjIxNmM3ZjZlNzZhOTllZTkwN2ExZTY0 MWNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRG1pdHJ5IEJhYm9raW4gPGRtaXRy eS55LmJhYm9raW5AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAyMiBEZWMgMjAyMCAxNzowMzo1OSAt MDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggdG8gd29yayB3aXRoIExMVk0gdHJ1bmsgYWZ0ZXIg bGx2bS9sbHZtLXByb2plY3RANDFjM2IyNzEzCi0KLS0tLQotIHNyYy9jdHguY3BwIHwgMTggKysr KysrKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDYgZGVs ZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9jdHguY3BwCi1pbmRl eCA2ZmJiOGI5Y2YuLjk3N2U5ZDIyMiAxMDA2NDQKLS0tLSBhL3NyYy9jdHguY3BwCi0rKysgYi9z cmMvY3R4LmNwcAotQEAgLTE0NzMsMTEgKzE0NzMsMTUgQEAgdm9pZCBGdW5jdGlvbkVtaXRDb250 ZXh0OjpBZGREZWJ1Z1BvcyhsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IFNvdXJjZVBvcyAqcG9z LAotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IGxsdm06OmR5bl9jYXN0PGxsdm06Oklu c3RydWN0aW9uPih2YWx1ZSk7Ci0gICAgIGlmIChpbnN0ICE9IE5VTEwgJiYgbS0+ZGlCdWlsZGVy KSB7Ci0gICAgICAgICBTb3VyY2VQb3MgcCA9IHBvcyA/ICpwb3MgOiBjdXJyZW50UG9zOwotLSAg ICAgICAgaWYgKHAuZmlyc3RfbGluZSAhPSAwKQotKyAgICAgICAgaWYgKHAuZmlyc3RfbGluZSAh PSAwKSB7Ci0gICAgICAgICAgICAgLy8gSWYgZmlyc3RfbGluZSA9PSAwLCB0aGVuIHdlJ3JlIGlu IHRoZSBtaWRkbGUgb2Ygc2V0dGluZyB1cAotICAgICAgICAgICAgIC8vIHRoZSBzdGFuZGFyZCBs aWJyYXJ5IG9yIHRoZSBsaWtlOyBkb24ndCBhZGQgZGVidWcgcG9zaXRpb25zCi0gICAgICAgICAg ICAgLy8gZm9yIHRob3NlIGZ1bmN0aW9ucwotLSAgICAgICAgICAgIGluc3QtPnNldERlYnVnTG9j KGxsdm06OkRlYnVnTG9jOjpnZXQocC5maXJzdF9saW5lLCBwLmZpcnN0X2NvbHVtbiwgc2NvcGUg PyBzY29wZSA6IEdldERJU2NvcGUoKSkpOwotKyAgICAgICAgICAgIHNjb3BlID0gc2NvcGUgPyBz Y29wZSA6IEdldERJU2NvcGUoKTsKLSsgICAgICAgICAgICBsbHZtOjpEZWJ1Z0xvYyBkaUxvYyA9 Ci0rICAgICAgICAgICAgICAgIGxsdm06OkRJTG9jYXRpb246OmdldChzY29wZS0+Z2V0Q29udGV4 dCgpLCBwLmZpcnN0X2xpbmUsIHAuZmlyc3RfY29sdW1uLCBzY29wZSwgbnVsbHB0ciwgZmFsc2Up OwotKyAgICAgICAgICAgIGluc3QtPnNldERlYnVnTG9jKGRpTG9jKTsKLSsgICAgICAgIH0KLSAg ICAgfQotIH0KLSAKLUBAIC0xNTE4LDkgKzE1MjIsMTAgQEAgdm9pZCBGdW5jdGlvbkVtaXRDb250 ZXh0OjpFbWl0VmFyaWFibGVEZWJ1Z0luZm8oU3ltYm9sICpzeW0pIHsKLSAgICAgbGx2bTo6RElM b2NhbFZhcmlhYmxlICp2YXIgPSBtLT5kaUJ1aWxkZXItPmNyZWF0ZUF1dG9WYXJpYWJsZSgKLSAg ICAgICAgIHNjb3BlLCBzeW0tPm5hbWUsIHN5bS0+cG9zLkdldERJRmlsZSgpLCBzeW0tPnBvcy5m aXJzdF9saW5lLCBkaVR5cGUsIHRydWUgLyogcHJlc2VydmUgdGhyb3VnaCBvcHRzICovKTsKLSAK LSsgICAgbGx2bTo6RGVidWdMb2MgZGlMb2MgPQotKyAgICAgICAgbGx2bTo6RElMb2NhdGlvbjo6 Z2V0KHNjb3BlLT5nZXRDb250ZXh0KCksIHN5bS0+cG9zLmZpcnN0X2xpbmUsIHN5bS0+cG9zLmZp cnN0X2NvbHVtbiwgc2NvcGUsIG51bGxwdHIsIGZhbHNlKTsKLSAgICAgbGx2bTo6SW5zdHJ1Y3Rp b24gKmRlY2xhcmVJbnN0ID0KLS0gICAgICAgIG0tPmRpQnVpbGRlci0+aW5zZXJ0RGVjbGFyZShz eW0tPnN0b3JhZ2VQdHIsIHZhciwgbS0+ZGlCdWlsZGVyLT5jcmVhdGVFeHByZXNzaW9uKCksCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6RGVidWdMb2M6OmdldChz eW0tPnBvcy5maXJzdF9saW5lLCBzeW0tPnBvcy5maXJzdF9jb2x1bW4sIHNjb3BlKSwgYmJsb2Nr KTsKLSsgICAgICAgIG0tPmRpQnVpbGRlci0+aW5zZXJ0RGVjbGFyZShzeW0tPnN0b3JhZ2VQdHIs IHZhciwgbS0+ZGlCdWlsZGVyLT5jcmVhdGVFeHByZXNzaW9uKCksIGRpTG9jLCBiYmxvY2spOwot ICAgICBBZGREZWJ1Z1BvcyhkZWNsYXJlSW5zdCwgJnN5bS0+cG9zLCBzY29wZSk7Ci0gfQotIAot QEAgLTE1MzUsOSArMTU0MCwxMCBAQCB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6OkVtaXRGdW5j dGlvblBhcmFtZXRlckRlYnVnSW5mbyhTeW1ib2wgKnN5bSwgaW50IGFyZ051bQotICAgICAgICAg bS0+ZGlCdWlsZGVyLT5jcmVhdGVQYXJhbWV0ZXJWYXJpYWJsZShzY29wZSwgc3ltLT5uYW1lLCBh cmdOdW0gKyAxLCBzeW0tPnBvcy5HZXRESUZpbGUoKSwgc3ltLT5wb3MuZmlyc3RfbGluZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlUeXBlLCB0cnVl IC8qIHByZXNlcnZlIHRocm91Z2ggb3B0cyAqLywgZmxhZ3MpOwotIAotKyAgICBsbHZtOjpEZWJ1 Z0xvYyBkaUxvYyA9Ci0rICAgICAgICBsbHZtOjpESUxvY2F0aW9uOjpnZXQoc2NvcGUtPmdldENv bnRleHQoKSwgc3ltLT5wb3MuZmlyc3RfbGluZSwgc3ltLT5wb3MuZmlyc3RfY29sdW1uLCBzY29w ZSwgbnVsbHB0ciwgZmFsc2UpOwotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqZGVjbGFyZUluc3Qg PQotLSAgICAgICAgbS0+ZGlCdWlsZGVyLT5pbnNlcnREZWNsYXJlKHN5bS0+c3RvcmFnZVB0ciwg dmFyLCBtLT5kaUJ1aWxkZXItPmNyZWF0ZUV4cHJlc3Npb24oKSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsbHZtOjpEZWJ1Z0xvYzo6Z2V0KHN5bS0+cG9zLmZpcnN0X2xp bmUsIHN5bS0+cG9zLmZpcnN0X2NvbHVtbiwgc2NvcGUpLCBiYmxvY2spOwotKyAgICAgICAgbS0+ ZGlCdWlsZGVyLT5pbnNlcnREZWNsYXJlKHN5bS0+c3RvcmFnZVB0ciwgdmFyLCBtLT5kaUJ1aWxk ZXItPmNyZWF0ZUV4cHJlc3Npb24oKSwgZGlMb2MsIGJibG9jayk7Ci0gICAgIEFkZERlYnVnUG9z KGRlY2xhcmVJbnN0LCAmc3ltLT5wb3MsIHNjb3BlKTsKLSB9Ci0gCmRpZmYgLS1naXQgYS9zcmNw a2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAyLnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMv bGx2bTEyLTAwMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDkwM2YzMGRh MTBkLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMi5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkyMyArMCwwIEBACi1Gcm9tIDA1OTdhNzlkMDg0YzAx NDc4MDEzNmRhOTA2YWZlMjFkMTVlOTgyY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBEZWVwYWtSYWplbmRyYWt1bWFyYW4gPGRlZXBhay5yYWplbmRyYWt1bWFyYW5AaW50ZWwuY29t PgotRGF0ZTogVHVlLCA1IEphbiAyMDIxIDEzOjUzOjMwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hd IFJlbW92ZSBMTFZNIDguMCBhbmQgTExWTSA5LjAuICgjMTk2NikKLQotLS0tCi0gLmFwcHZleW9y LnltbCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgLS0KLSAudHJhdmlzLnltbCAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgNyAtLS0KLSBDTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAg ICAgICAgICAgfCAxMiArKy0tLS0KLSBzcmMvYXN0LmNwcCAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgNCAtLQotIHNyYy9jdHguY3BwICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMwIC0t LS0tLS0tLS0tLS0KLSBzcmMvZ2VuL0dsb2JhbHNMb2NhbGl6YXRpb24uY3BwICAgICAgfCAgNCAt LQotIHNyYy9pc3BjLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwIC0tLS0tLS0tLQot IHNyYy9pc3BjLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstCi0gc3JjL2lzcGNf dmVyc2lvbi5oICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KLSBzcmMvbWFpbi5jcHAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAxMyAtLS0tLS0KLSBzcmMvbW9kdWxlLmNwcCAgICAgICAgICAg ICAgICAgICAgICAgfCAyNyAtLS0tLS0tLS0tLS0KLSBzcmMvbW9kdWxlLmggICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMiAtCi0gc3JjL29wdC5jcHAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgNjQgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy90eXBlLmNwcCAgICAgICAg ICAgICAgICAgICAgICAgICB8IDEwICsrLS0tCi0gdGVzdHMvbGl0LXRlc3RzLzE3NzEuaXNwYyAg ICAgICAgICAgIHwgIDEgLQotIHRlc3RzL2xpdC10ZXN0cy8xODQ0LmlzcGMgICAgICAgICAgICB8 ICAzIC0tCi0gdGVzdHMvbGl0LXRlc3RzLzE5MjYuaXNwYyAgICAgICAgICAgIHwgIDIgLQotIHRl c3RzL2xpdC10ZXN0cy9jcHVzX3g4Ni5pc3BjICAgICAgICB8ICAyICsKLSB0ZXN0cy9saXQtdGVz dHMvY3B1c194ODZfbGx2bTEwLmlzcGMgfCAxMSAtLS0tLQotIHRlc3RzL2xpdC10ZXN0cy9saXQu Y2ZnICAgICAgICAgICAgICB8ICA1IC0tLQotIDIwIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlv bnMoKyksIDIxMyBkZWxldGlvbnMoLSkKLSBkZWxldGUgbW9kZSAxMDA2NDQgdGVzdHMvbGl0LXRl c3RzL2NwdXNfeDg2X2xsdm0xMC5pc3BjCi0KLWRpZmYgLS1naXQgYS8uYXBwdmV5b3IueW1sIGIv LmFwcHZleW9yLnltbAotaW5kZXggNDUxYTdiM2UwLi43OTQ1Y2NhMmEgMTAwNjQ0Ci0tLS0gYS8u YXBwdmV5b3IueW1sCi0rKysgYi8uYXBwdmV5b3IueW1sCi1AQCAtNDEsOCArNDEsNiBAQCBlbnZp cm9ubWVudDoKLSAgICAgICBMTFZNX1ZFUlNJT046IGxhdGVzdAotICAgICAtIEFQUFZFWU9SX0JV SUxEX1dPUktFUl9JTUFHRTogVmlzdWFsIFN0dWRpbyAyMDE5Ci0gICAgICAgTExWTV9WRVJTSU9O OiAxMC4wCi0tICAgIC0gQVBQVkVZT1JfQlVJTERfV09SS0VSX0lNQUdFOiBWaXN1YWwgU3R1ZGlv IDIwMTkKLS0gICAgICBMTFZNX1ZFUlNJT046IDkuMAotIAotIGZvcjoKLSAtCi1AQCAtNjIsNyAr NjAsNiBAQCBmb3I6Ci0gICAgICAgICBpZiAiJUFQUFZFWU9SX0JVSUxEX1dPUktFUl9JTUFHRSUi PT0iVmlzdWFsIFN0dWRpbyAyMDE5IiAoIChzZXQgZ2VuZXJhdG9yPSJWaXN1YWwgU3R1ZGlvIDE2 IikgJiAoc2V0IHZzdmVyc2lvbj0yMDE5KSkKLSAgICAgICAgIHNldCBMTFZNX1RBUj1sbHZtLTEx LjAuMC13aW4udnMyMDE5LVJlbGVhc2UrQXNzZXJ0cy14ODYuYXJtLndhc20uN3oKLSAgICAgICAg IGlmICIlTExWTV9WRVJTSU9OJSI9PSIxMC4wIiAoc2V0IExMVk1fVEFSPWxsdm0tMTAuMC4xLXdp bi52czIwMTktUmVsZWFzZStBc3NlcnRzLXg4Ni5hcm0ud2FzbS56aXApCi0tICAgICAgICBpZiAi JUxMVk1fVkVSU0lPTiUiPT0iOS4wIiAoc2V0IExMVk1fVEFSPWxsdm0tOS4wLjEtd2luLnZzMjAx Ny1SZWxlYXNlK0Fzc2VydHMteDg2LmFybS53YXNtLnppcCkKLSAgIGluc3RhbGw6Ci0gICAgIC0g cHM6IGNob2NvIGluc3RhbGwgLS1uby1wcm9ncmVzcyB3aW5mbGV4Ymlzb24zIHdnZXQgN3ppcAot ICAgICAtIGNtZDogfC0KLWRpZmYgLS1naXQgYS8udHJhdmlzLnltbCBiLy50cmF2aXMueW1sCi1p bmRleCAyZTk2MDE3YTYuLjNhNmI4NTI2NCAxMDA2NDQKLS0tLSBhLy50cmF2aXMueW1sCi0rKysg Yi8udHJhdmlzLnltbAotQEAgLTEwOCwxMyArMTA4LDYgQEAgam9iczoKLSAgICAgICAgIC0gTExW TV9UQVI9bGx2bS0xMC4wLjEtdWJ1bnR1MTYuMDQtUmVsZWFzZStBc3NlcnRzLXg4Ni5hcm0ud2Fz bS50YXIueHoKLSAgICAgICAgIC0gTExWTV9SRVBPPWh0dHBzOi8vZ2l0aHViLmNvbS9kYmFib2tp bi9sbHZtLXByb2plY3QKLSAgICAgICAgIC0gSVNQQ19IT01FPSRUUkFWSVNfQlVJTERfRElSCi0t ICAgICMgTExWTSA5LjAgKyBVYnVudHUgMTYuMDQ6IGJ1aWxkLCBsaXQgdGVzdHMsIGV4YW1wbGVz IChidWlsZCArIHJ1biksIGJlbmNobWFya3MgKGJ1aWxkICsgdHJpYWwgcnVuKQotLSAgICAtIDw8 OiAqbXlfdGFnCi0tICAgICAgZW52OgotLSAgICAgICAgLSBMTFZNX1ZFUlNJT049OS4wIE9TPVVi dW50dTE2LjA0Ci0tICAgICAgICAtIExMVk1fVEFSPWxsdm0tOS4wLjEtdWJ1bnR1MTYuMDQtUmVs ZWFzZStBc3NlcnRzLXg4Ni5hcm0ud2FzbS50YXIueHoKLS0gICAgICAgIC0gTExWTV9SRVBPPWh0 dHBzOi8vZ2l0aHViLmNvbS9kYmFib2tpbi9sbHZtLXByb2plY3QKLS0gICAgICAgIC0gSVNQQ19I T01FPSRUUkFWSVNfQlVJTERfRElSCi0gICAgICMgV0FTTSBlbmFibGVkIGJ1aWxkCi0gICAgICMg TExWTSAxMS4wICsgVWJ1bnR1IDE2LjA0OiBidWlsZCwgbGl0IHRlc3RzLCBleGFtcGxlcyAoYnVp bGQpLCBiZW5jaG1hcmtzIChidWlsZCArIHRyaWFsIHJ1bikKLSAgICAgLSA8PDogKm15X3RhZwot ZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDVmYTg2 M2ZjZi4uYTZiM2VkMjUxIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtl TGlzdHMudHh0Ci1AQCAtMjQxLDEwICsyNDEsOCBAQCBpZiAoWDg2X0VOQUJMRUQpCi0gICAgICAg ICBhdngyLWk4eDMyIGF2eDItaTE2eDE2Ci0gICAgICAgICBhdngyLWkzMng0IGF2eDItaTMyeDgg YXZ4Mi1pMzJ4MTYgYXZ4Mi1pNjR4NAotICAgICAgICAgYXZ4NTEya25sLWkzMngxNgotLSAgICAg ICAgYXZ4NTEyc2t4LWkzMngxNiBhdng1MTJza3gtaTMyeDgpCi0tICAgIGlmICgke0xMVk1fVkVS U0lPTl9OVU1CRVJ9IFZFUlNJT05fR1JFQVRFUl9FUVVBTCAiMTAuMC4wIikKLS0gICAgICAgIGxp c3QoQVBQRU5EIElTUENfVEFSR0VUUyBhdng1MTJza3gtaTh4NjQgYXZ4NTEyc2t4LWkxNngzMikK LS0gICAgZW5kaWYoKQotKyAgICAgICAgYXZ4NTEyc2t4LWkzMngxNiBhdng1MTJza3gtaTMyeDgK LSsgICAgICAgIGF2eDUxMnNreC1pOHg2NCBhdng1MTJza3gtaTE2eDMyKQotIGVuZGlmKCkKLSBp ZiAoQVJNX0VOQUJMRUQpCi0gICAgIGxpc3QoQVBQRU5EIElTUENfVEFSR0VUUyBuZW9uLWk4eDE2 IG5lb24taTE2eDggbmVvbi1pMzJ4NCBuZW9uLWkzMng4KQotQEAgLTI1OSwxMSArMjU3LDcgQEAg aWYgKFdBU01fRU5BQkxFRCkKLSBlbmRpZigpCi0gCi0gc2V0KENMQU5HX0xJQlJBUllfTElTVCBj bGFuZ0Zyb250ZW5kIGNsYW5nRHJpdmVyIGNsYW5nU2VyaWFsaXphdGlvbiBjbGFuZ1BhcnNlIGNs YW5nU2VtYSBjbGFuZ0FuYWx5c2lzIGNsYW5nQVNUIGNsYW5nQmFzaWMgY2xhbmdFZGl0IGNsYW5n TGV4KQotLXNldChMTFZNX0NPTVBPTkVOVFMgZW5naW5lIGlwbyBiaXRyZWFkZXIgYml0d3JpdGVy IGluc3RydW1lbnRhdGlvbiBsaW5rZXIgb3B0aW9uKQotLQotLWlmICgke0xMVk1fVkVSU0lPTl9O VU1CRVJ9IFZFUlNJT05fR1JFQVRFUl9FUVVBTCAiMTAuMC4wIikKLS0gICAgbGlzdChBUFBFTkQg TExWTV9DT01QT05FTlRTIGZyb250ZW5kb3Blbm1wKQotLWVuZGlmKCkKLStzZXQoTExWTV9DT01Q T05FTlRTIGVuZ2luZSBpcG8gYml0cmVhZGVyIGJpdHdyaXRlciBpbnN0cnVtZW50YXRpb24gbGlu a2VyIG9wdGlvbiBmcm9udGVuZG9wZW5tcCkKLSAKLSBpZiAoWDg2X0VOQUJMRUQpCi0gICAgIGxp c3QoQVBQRU5EIExMVk1fQ09NUE9ORU5UUyB4ODYpCi1kaWZmIC0tZ2l0IGEvc3JjL2FzdC5jcHAg Yi9zcmMvYXN0LmNwcAotaW5kZXggMjBmNzVhMjljLi41YTQzYzQ4NTQgMTAwNjQ0Ci0tLS0gYS9z cmMvYXN0LmNwcAotKysrIGIvc3JjL2FzdC5jcHAKLUBAIC00NCw5ICs0NCw3IEBACi0gI2luY2x1 ZGUgInN5bS5oIgotICNpbmNsdWRlICJ1dGlsLmgiCi0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9O ID49IElTUENfTExWTV8xMF8wCi0gI2luY2x1ZGUgPGxsdm0vU3VwcG9ydC9UaW1lUHJvZmlsZXIu aD4KLS0jZW5kaWYKLSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAvLyBBU1ROb2RlCi0gCi1AQCAtNjIs OSArNjAsNyBAQCB2b2lkIEFTVDo6QWRkRnVuY3Rpb24oU3ltYm9sICpzeW0sIFN0bXQgKmNvZGUp IHsKLSB9Ci0gCi0gdm9pZCBBU1Q6OkdlbmVyYXRlSVIoKSB7Ci0tI2lmIElTUENfTExWTV9WRVJT SU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29w ZSgiR2VuZXJhdGVJUiIpOwotLSNlbmRpZgotICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg aSA8IGZ1bmN0aW9ucy5zaXplKCk7ICsraSkKLSAgICAgICAgIGZ1bmN0aW9uc1tpXS0+R2VuZXJh dGVJUigpOwotIH0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9jdHguY3BwCi1pbmRl eCA5NzdlOWQyMjIuLjQyYzRlYTA5ZCAxMDA2NDQKLS0tLSBhL3NyYy9jdHguY3BwCi0rKysgYi9z cmMvY3R4LmNwcAotQEAgLTMwOSwyMSArMzA5LDEzIEBAIEZ1bmN0aW9uRW1pdENvbnRleHQ6OkZ1 bmN0aW9uRW1pdENvbnRleHQoRnVuY3Rpb24gKmZ1bmMsIFN5bWJvbCAqZnVuU3ltLCBsbHZtOjpG Ci0gICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKLSAgICAgICAgICAgICBzbnByaW50ZihidWYs IHNpemVvZihidWYpLCAiX19vZmZfYWxsX29uX21hc2tfJXMiLCBnLT50YXJnZXQtPkdldElTQVN0 cmluZygpKTsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzhfMAotLSAg ICAgICAgICAgIGxsdm06OkNvbnN0YW50ICpvZmZGdW5jID0gbS0+bW9kdWxlLT5nZXRPckluc2Vy dEZ1bmN0aW9uKGJ1ZiwgTExWTVR5cGVzOjpWb2lkVHlwZSk7Ci0tI2Vsc2UgLy8gTExWTSA5LjAr Ci0gICAgICAgICAgICAgbGx2bTo6RnVuY3Rpb25DYWxsZWUgb2ZmRnVuY0NhbGxlZSA9IG0tPm1v ZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbihidWYsIExMVk1UeXBlczo6Vm9pZFR5cGUpOwotICAg ICAgICAgICAgIGxsdm06OkNvbnN0YW50ICpvZmZGdW5jID0gbGx2bTo6Y2FzdDxsbHZtOjpDb25z dGFudD4ob2ZmRnVuY0NhbGxlZS5nZXRDYWxsZWUoKSk7Ci0tI2VuZGlmCi0gICAgICAgICAgICAg QXNzZXJ0UG9zKGN1cnJlbnRQb3MsIGxsdm06OmlzYTxsbHZtOjpGdW5jdGlvbj4ob2ZmRnVuYykp OwotICAgICAgICAgICAgIGxsdm06OkJhc2ljQmxvY2sgKm9mZkJCID0gbGx2bTo6QmFzaWNCbG9j azo6Q3JlYXRlKCpnLT5jdHgsICJlbnRyeSIsIChsbHZtOjpGdW5jdGlvbiAqKW9mZkZ1bmMsIDAp OwotICAgICAgICAgICAgIGxsdm06OlN0b3JlSW5zdCAqaW5zdCA9IG5ldyBsbHZtOjpTdG9yZUlu c3QoTExWTU1hc2tBbGxPZmYsIGdsb2JhbEFsbE9uTWFza1B0ciwgb2ZmQkIpOwotICAgICAgICAg ICAgIGlmIChnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5KSB7Ci0tI2lmIElTUENfTExWTV9WRVJT SU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgICAgICAgICAgICAgaW5zdC0+c2V0QWxpZ25tZW50 KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkpOwotLSNlbHNlIC8vIExMVk0g MTAuMCsKLSAgICAgICAgICAgICAgICAgaW5zdC0+c2V0QWxpZ25tZW50KGxsdm06Ok1heWJlQWxp Z24oZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSkudmFsdWVPck9uZSgpKTsK LS0jZW5kaWYKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgbGx2bTo6UmV0dXJuSW5zdDo6 Q3JlYXRlKCpnLT5jdHgsIG9mZkJCKTsKLSAgICAgICAgIH0KLUBAIC0yMjg4LDExICsyMjgwLDcg QEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkxvYWRJbnN0KGxsdm06OlZhbHVl ICpwdHIsIGNvbnN0IFR5cGUgKnR5cGUsIGMKLSAjZW5kaWYKLSAKLSAgICAgaWYgKGctPm9wdC5m b3JjZUFsaWduZWRNZW1vcnkgJiYgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocHQt PmdldEVsZW1lbnRUeXBlKCkpKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExW TV85XzAKLS0gICAgICAgIGluc3QtPnNldEFsaWdubWVudChnLT50YXJnZXQtPmdldE5hdGl2ZVZl Y3RvckFsaWdubWVudCgpKTsKLS0jZWxzZSAvLyBMTFZNIDEwLjArCi0gICAgICAgICBpbnN0LT5z ZXRBbGlnbm1lbnQobGx2bTo6TWF5YmVBbGlnbihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFs aWdubWVudCgpKS52YWx1ZU9yT25lKCkpOwotLSNlbmRpZgotICAgICB9Ci0gCi0gICAgIEFkZERl YnVnUG9zKGluc3QpOwotQEAgLTI0MzEsMTEgKzI0MTksNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1h c2ssCi0gICAgICAgICAgICAgICAgIC8vIHZzIHRoZSBwcm9wZXIgYWxpZ25tZW50IGluIHByYWN0 aWNlLikKLSAgICAgICAgICAgICAgICAgaW50IGFsaWduID0gMTsKLSAKLS0jaWYgSVNQQ19MTFZN X1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgICAgICAgICBpbnN0LT5zZXRBbGln bm1lbnQoYWxpZ24pOwotLSNlbHNlIC8vIExMVk0gMTAuMCsKLSAgICAgICAgICAgICAgICAgaW5z dC0+c2V0QWxpZ25tZW50KGxsdm06Ok1heWJlQWxpZ24oYWxpZ24pLnZhbHVlT3JPbmUoKSk7Ci0t I2VuZGlmCi0gICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgIEFkZERlYnVnUG9zKGluc3Qp OwotQEAgLTI2NDksMTEgKzI2MzMsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4 dDo6QWxsb2NhSW5zdChsbHZtOjpUeXBlICpsbHZtVHlwZSwgY29uc3QgY2hhciAqbgotICAgICAg ICAgYWxpZ24gPSBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpOwotIAotICAg ICBpZiAoYWxpZ24gIT0gMCkgewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BDX0xMVk1f OV8wCi0tICAgICAgICBpbnN0LT5zZXRBbGlnbm1lbnQoYWxpZ24pOwotLSNlbHNlIC8vIExMVk0g MTAuMCsKLSAgICAgICAgIGluc3QtPnNldEFsaWdubWVudChsbHZtOjpNYXliZUFsaWduKGFsaWdu KS52YWx1ZU9yT25lKCkpOwotLSNlbmRpZgotICAgICB9Ci0gICAgIC8vIERvbid0IGFkZCBkZWJ1 Z2dpbmcgaW5mbyB0byBhbGxvY2EgaW5zdHJ1Y3Rpb25zCi0gICAgIHJldHVybiBpbnN0OwotQEAg LTI5MjYsMTEgKzI5MDYsNyBAQCB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6OlN0b3JlSW5zdChs bHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlZhbHVlICpwdHIsIGNvbnN0Ci0gICAgIGxsdm06OlN0 b3JlSW5zdCAqaW5zdCA9IG5ldyBsbHZtOjpTdG9yZUluc3QodmFsdWUsIHB0ciwgYmJsb2NrKTsK LSAKLSAgICAgaWYgKGctPm9wdC5mb3JjZUFsaWduZWRNZW1vcnkgJiYgbGx2bTo6ZHluX2Nhc3Q8 bGx2bTo6VmVjdG9yVHlwZT4ocHQtPmdldEVsZW1lbnRUeXBlKCkpKSB7Ci0tI2lmIElTUENfTExW TV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgICAgIGluc3QtPnNldEFsaWdubWVudChn LT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpKTsKLS0jZWxzZSAvLyBMTFZNIDEw LjArCi0gICAgICAgICBpbnN0LT5zZXRBbGlnbm1lbnQobGx2bTo6TWF5YmVBbGlnbihnLT50YXJn ZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpKS52YWx1ZU9yT25lKCkpOwotLSNlbmRpZgot ICAgICB9Ci0gCi0gI2lmZGVmIElTUENfR0VOWF9FTkFCTEVECi1AQCAtMzAyNSwxNiArMzAwMSwx MCBAQCB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6Ok1lbWNweUluc3QobGx2bTo6VmFsdWUgKmRl c3QsIGxsdm06OlZhbHVlICpzcmMsIGxsdm06OgotICAgICB9Ci0gICAgIGlmIChhbGlnbiA9PSBO VUxMKQotICAgICAgICAgYWxpZ24gPSBMTFZNSW50MzIoMSk7Ci0tI2lmIElTUENfTExWTV9WRVJT SU9OIDw9IElTUENfTExWTV84XzAKLS0gICAgbGx2bTo6Q29uc3RhbnQgKm1jRnVuYyA9Ci0tICAg ICAgICBtLT5tb2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24oImxsdm0ubWVtY3B5LnAwaTgucDBp OC5pNjQiLCBMTFZNVHlwZXM6OlZvaWRUeXBlLCBMTFZNVHlwZXM6OlZvaWRQb2ludGVyVHlwZSwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVHlwZXM6OlZvaWRQ b2ludGVyVHlwZSwgTExWTVR5cGVzOjpJbnQ2NFR5cGUsIExMVk1UeXBlczo6Qm9vbFR5cGUpOwot LSNlbHNlIC8vIExMVk0gOS4wKwotICAgICBsbHZtOjpGdW5jdGlvbkNhbGxlZSBtY0Z1bmNDYWxs ZWUgPQotICAgICAgICAgbS0+bW9kdWxlLT5nZXRPckluc2VydEZ1bmN0aW9uKCJsbHZtLm1lbWNw eS5wMGk4LnAwaTguaTY0IiwgTExWTVR5cGVzOjpWb2lkVHlwZSwgTExWTVR5cGVzOjpWb2lkUG9p bnRlclR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVR5 cGVzOjpWb2lkUG9pbnRlclR5cGUsIExMVk1UeXBlczo6SW50NjRUeXBlLCBMTFZNVHlwZXM6OkJv b2xUeXBlKTsKLSAgICAgbGx2bTo6Q29uc3RhbnQgKm1jRnVuYyA9IGxsdm06OmNhc3Q8bGx2bTo6 Q29uc3RhbnQ+KG1jRnVuY0NhbGxlZS5nZXRDYWxsZWUoKSk7Ci0tI2VuZGlmCi0gICAgIEFzc2Vy dFBvcyhjdXJyZW50UG9zLCBtY0Z1bmMgIT0gTlVMTCk7Ci0gICAgIEFzc2VydFBvcyhjdXJyZW50 UG9zLCBsbHZtOjppc2E8bGx2bTo6RnVuY3Rpb24+KG1jRnVuYykpOwotIAotZGlmZiAtLWdpdCBh L3NyYy9nZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAgYi9zcmMvZ2VuL0dsb2JhbHNMb2NhbGl6 YXRpb24uY3BwCi1pbmRleCAxOTNhNjYyODkuLmExNzZlOTQ2MiAxMDA2NDQKLS0tLSBhL3NyYy9n ZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAKLSsrKyBiL3NyYy9nZW4vR2xvYmFsc0xvY2FsaXph dGlvbi5jcHAKLUBAIC00NzAsMTEgKzQ3MCw3IEBAIHZvaWQgR2xvYmFsc0xvY2FsaXphdGlvbjo6 TG9jYWxpemVHbG9iYWxzKExvY2FsaXphdGlvbkluZm8gJkxJKSB7Ci0gICAgICAgICBJbnN0cnVj dGlvbiAmRmlyc3RJID0gKkZuLT5nZXRFbnRyeUJsb2NrKCkuYmVnaW4oKTsKLSAgICAgICAgIFR5 cGUgKkVsZW1UeSA9IEdWLT5nZXRUeXBlKCktPmdldEVsZW1lbnRUeXBlKCk7Ci0gICAgICAgICBB bGxvY2FJbnN0ICpBbGxvY2EgPSBuZXcgQWxsb2NhSW5zdChFbGVtVHksIDAsIEdWLT5nZXROYW1l KCkgKyAiLmxvY2FsIiwgJkZpcnN0SSk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENf TExWTV85XzAKLS0gICAgICAgIEFsbG9jYS0+c2V0QWxpZ25tZW50KEdWLT5nZXRBbGlnbm1lbnQo KSk7Ci0tI2Vsc2UgLy8gTExWTSAxMC4wKwotICAgICAgICAgQWxsb2NhLT5zZXRBbGlnbm1lbnQo bGx2bTo6TWF5YmVBbGlnbihHVi0+Z2V0QWxpZ25tZW50KCkpKTsKLS0jZW5kaWYKLSAgICAgICAg IGlmICghaXNhPFVuZGVmVmFsdWU+KEdWLT5nZXRJbml0aWFsaXplcigpKSkKLSAgICAgICAgICAg ICBuZXcgU3RvcmVJbnN0KEdWLT5nZXRJbml0aWFsaXplcigpLCBBbGxvY2EsICZGaXJzdEkpOwot IAotZGlmZiAtLWdpdCBhL3NyYy9pc3BjLmNwcCBiL3NyYy9pc3BjLmNwcAotaW5kZXggZTJkMGYy MDZlLi5mYWM1MjMzZjcgMTAwNjQ0Ci0tLS0gYS9zcmMvaXNwYy5jcHAKLSsrKyBiL3NyYy9pc3Bj LmNwcAotQEAgLTI3Miw5ICsyNzIsNyBAQCB0eXBlZGVmIGVudW0gewotICAgICBDUFVfU2lsdmVy bW9udCwKLSAKLSAgICAgQ1BVX0lDWCwKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19M TFZNXzEwXzAKLSAgICAgQ1BVX1RHTCwKLS0jZW5kaWYKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04g Pj0gSVNQQ19MTFZNXzEyXzAKLSAgICAgQ1BVX0FETCwKLSAgICAgQ1BVX1NQUiwKLUBAIC0zNjUs MTAgKzM2Myw4IEBAIGNsYXNzIEFsbENQVXMgewotIAotICAgICAgICAgbmFtZXNbQ1BVX0lDWF0u cHVzaF9iYWNrKCJpY2VsYWtlLXNlcnZlciIpOwotICAgICAgICAgbmFtZXNbQ1BVX0lDWF0ucHVz aF9iYWNrKCJpY3giKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAK LSAgICAgICAgIG5hbWVzW0NQVV9UR0xdLnB1c2hfYmFjaygidGlnZXJsYWtlIik7Ci0gICAgICAg ICBuYW1lc1tDUFVfVEdMXS5wdXNoX2JhY2soInRnbCIpOwotLSNlbmRpZgotICNpZiBJU1BDX0xM Vk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTJfMAotICAgICAgICAgbmFtZXNbQ1BVX0FETF0ucHVz aF9iYWNrKCJhbGRlcmxha2UiKTsKLSAgICAgICAgIG5hbWVzW0NQVV9BRExdLnB1c2hfYmFjaygi YWRsIik7Ci1AQCAtNDExLDExICs0MDcsOSBAQCBjbGFzcyBBbGxDUFVzIHsKLSAgICAgICAgIGNv bXBhdFtDUFVfQURMXSA9IFNldChDUFVfQURMLCBDUFVfeDg2XzY0LCBDUFVfQm9ubmVsbCwgQ1BV X1BlbnJ5biwgQ1BVX0NvcmUyLCBDUFVfTmVoYWxlbSwgQ1BVX1NpbHZlcm1vbnQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ1BVX1NhbmR5QnJpZGdlLCBDUFVfSXZ5QnJpZGdlLCBD UFVfSGFzd2VsbCwgQ1BVX0Jyb2Fkd2VsbCwgQ1BVX05vbmUpOwotICNlbmRpZgotLSNpZiBJU1BD X0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICAgICAgY29tcGF0W0NQVV9UR0xd ID0KLSAgICAgICAgICAgICBTZXQoQ1BVX1RHTCwgQ1BVX3g4Nl82NCwgQ1BVX0Jvbm5lbGwsIENQ VV9QZW5yeW4sIENQVV9Db3JlMiwgQ1BVX05laGFsZW0sIENQVV9TaWx2ZXJtb250LCBDUFVfU2Fu ZHlCcmlkZ2UsCi0gICAgICAgICAgICAgICAgIENQVV9JdnlCcmlkZ2UsIENQVV9IYXN3ZWxsLCBD UFVfQnJvYWR3ZWxsLCBDUFVfU0tYLCBDUFVfSUNMLCBDUFVfSUNYLCBDUFVfTm9uZSk7Ci0tI2Vu ZGlmCi0gICAgICAgICBjb21wYXRbQ1BVX0lDWF0gPSBTZXQoQ1BVX0lDWCwgQ1BVX3g4Nl82NCwg Q1BVX0Jvbm5lbGwsIENQVV9QZW5yeW4sIENQVV9Db3JlMiwgQ1BVX05laGFsZW0sIENQVV9TaWx2 ZXJtb250LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVV9TYW5keUJyaWRnZSwg Q1BVX0l2eUJyaWRnZSwgQ1BVX0hhc3dlbGwsIENQVV9Ccm9hZHdlbGwsIENQVV9TS1gsIENQVV9J Q0wsIENQVV9Ob25lKTsKLSAKLUBAIC01NTYsOSArNTUwLDcgQEAgVGFyZ2V0OjpUYXJnZXQoQXJj aCBhcmNoLCBjb25zdCBjaGFyICpjcHUsIElTUENUYXJnZXQgaXNwY190YXJnZXQsIGJvb2wgcGlj LCBib28KLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEyXzAKLSAgICAgICAg IGNhc2UgQ1BVX1NQUjoKLSAjZW5kaWYKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19M TFZNXzEwXzAKLSAgICAgICAgIGNhc2UgQ1BVX1RHTDoKLS0jZW5kaWYKLSAgICAgICAgIGNhc2Ug Q1BVX0lDWDoKLSAgICAgICAgIGNhc2UgQ1BVX0lDTDoKLSAgICAgICAgIGNhc2UgQ1BVX1NLWDoK LUBAIC05MTYsNyArOTA4LDYgQEAgVGFyZ2V0OjpUYXJnZXQoQXJjaCBhcmNoLCBjb25zdCBjaGFy ICpjcHUsIElTUENUYXJnZXQgaXNwY190YXJnZXQsIGJvb2wgcGljLCBib28KLSAgICAgICAgIH0K LSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIElTUENUYXJnZXQ6OmF2eDUxMnNreF9pOHg2NDoK LS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAgLy8gTExWTSAxMC4wKwot ICAgICAgICAgLy8gVGhpcyB0YXJnZXQgaXMgZW5hYmxlZCBvbmx5IGZvciBMTFZNIDEwLjAgYW5k IGxhdGVyCi0gICAgICAgICAvLyBiZWNhdXNlIExMVk0gcmVxdWlyZXMgYSBudW1iZXIgb2YgZml4 ZXMsIHdoaWNoIGFyZQotICAgICAgICAgLy8gY29tbWl0dGVkIHRvIExMVk0gMTEuMCBhbmQgY2Fu IGJlIGFwcGxpZWQgdG8gMTAuMCwgYnV0IG5vdAotQEAgLTkzNywxMiArOTI4LDcgQEAgVGFyZ2V0 OjpUYXJnZXQoQXJjaCBhcmNoLCBjb25zdCBjaGFyICpjcHUsIElTUENUYXJnZXQgaXNwY190YXJn ZXQsIGJvb2wgcGljLCBib28KLSAgICAgICAgIHRoaXMtPm1faGFzVmVjUHJlZmV0Y2ggPSBmYWxz ZTsKLSAgICAgICAgIENQVWZyb21JU0EgPSBDUFVfU0tYOwotICAgICAgICAgYnJlYWs7Ci0tI2Vs c2UKLS0gICAgICAgIHVuc3VwcG9ydGVkX3RhcmdldCA9IHRydWU7Ci0tICAgICAgICBicmVhazsK LS0jZW5kaWYKLSAgICAgY2FzZSBJU1BDVGFyZ2V0Ojphdng1MTJza3hfaTE2eDMyOgotLSNpZiBJ U1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMCAvLyBMTFZNIDEwLjArCi0gICAgICAg ICAvLyBUaGlzIHRhcmdldCBpcyBlbmFibGVkIG9ubHkgZm9yIExMVk0gMTAuMCBhbmQgbGF0ZXIK LSAgICAgICAgIC8vIGJlY2F1c2UgTExWTSByZXF1aXJlcyBhIG51bWJlciBvZiBmaXhlcywgd2hp Y2ggYXJlCi0gICAgICAgICAvLyBjb21taXR0ZWQgdG8gTExWTSAxMS4wIGFuZCBjYW4gYmUgYXBw bGllZCB0byAxMC4wLCBidXQgbm90Ci1AQCAtOTYzLDEwICs5NDksNiBAQCBUYXJnZXQ6OlRhcmdl dChBcmNoIGFyY2gsIGNvbnN0IGNoYXIgKmNwdSwgSVNQQ1RhcmdldCBpc3BjX3RhcmdldCwgYm9v bCBwaWMsIGJvbwotICAgICAgICAgdGhpcy0+bV9oYXNWZWNQcmVmZXRjaCA9IGZhbHNlOwotICAg ICAgICAgQ1BVZnJvbUlTQSA9IENQVV9TS1g7Ci0gICAgICAgICBicmVhazsKLS0jZWxzZQotLSAg ICAgICAgdW5zdXBwb3J0ZWRfdGFyZ2V0ID0gdHJ1ZTsKLS0gICAgICAgIGJyZWFrOwotLSNlbmRp ZgotICNpZmRlZiBJU1BDX0FSTV9FTkFCTEVECi0gICAgIGNhc2UgSVNQQ1RhcmdldDo6bmVvbl9p OHgxNjoKLSAgICAgICAgIHRoaXMtPm1faXNhID0gVGFyZ2V0OjpORU9OOwotQEAgLTE2NjIsMTEg KzE2NDQsOSBAQCBHbG9iYWxzOjpHbG9iYWxzKCkgewotICAgICBpc011bHRpVGFyZ2V0Q29tcGls YXRpb24gPSBmYWxzZTsKLSAgICAgZXJyb3JMaW1pdCA9IC0xOwotIAotLSNpZiBJU1BDX0xMVk1f VkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBlbmFibGVUaW1lVHJhY2UgPSBmYWxzZTsK LSAgICAgLy8gc2V0IGRlZmF1bHQgZ3JhbnVsYXJpdHkgdG8gNTAwLgotICAgICB0aW1lVHJhY2VH cmFudWxhcml0eSA9IDUwMDsKLS0jZW5kaWYKLSAgICAgdGFyZ2V0ID0gTlVMTDsKLSAgICAgY3R4 ID0gbmV3IGxsdm06OkxMVk1Db250ZXh0OwotIAotZGlmZiAtLWdpdCBhL3NyYy9pc3BjLmggYi9z cmMvaXNwYy5oCi1pbmRleCBlMjVkODgzMGUuLmRlMzU3YTIxYyAxMDA2NDQKLS0tLSBhL3NyYy9p c3BjLmgKLSsrKyBiL3NyYy9pc3BjLmgKLUBAIC02OTUsMTMgKzY5NSwxMiBAQCBzdHJ1Y3QgR2xv YmFscyB7Ci0gCi0gICAgIC8qIE51bWJlciBvZiBlcnJvcnMgdG8gc2hvdyBpbiBJU1BDLiAqLwot ICAgICBpbnQgZXJyb3JMaW1pdDsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZN XzEwXzAKLSsKLSAgICAgLyogV2hlbiB0cnVlLCBlbmFibGUgY29tcGlsZSB0aW1lIHRyYWNpbmcu ICovCi0gICAgIGJvb2wgZW5hYmxlVGltZVRyYWNlOwotIAotICAgICAvKiBXaGVuIGNvbXBpbGUg dGltZSB0cmFjaW5nIGlzIGVuYWJsZWQsIHNldCB0aW1lIGdyYW51bGFyaXR5LiAqLwotICAgICBp bnQgdGltZVRyYWNlR3JhbnVsYXJpdHk7Ci0tI2VuZGlmCi0gfTsKLSAKLSBlbnVtIHsKLWRpZmYg LS1naXQgYS9zcmMvaXNwY192ZXJzaW9uLmggYi9zcmMvaXNwY192ZXJzaW9uLmgKLWluZGV4IGQ3 ODEzNDdmZC4uNDM0YjJkNjc4IDEwMDY0NAotLS0tIGEvc3JjL2lzcGNfdmVyc2lvbi5oCi0rKysg Yi9zcmMvaXNwY192ZXJzaW9uLmgKLUBAIC00NCwxMyArNDQsMTEgQEAKLSAKLSAjZGVmaW5lIElT UENfTExWTV9WRVJTSU9OIChMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMDAwMCArIExMVk1fVkVSU0lP Tl9NSU5PUiAqIDEwMCkKLSAKLS0jZGVmaW5lIElTUENfTExWTV84XzAgODAwMDAKLS0jZGVmaW5l IElTUENfTExWTV85XzAgOTAwMDAKLSAjZGVmaW5lIElTUENfTExWTV8xMF8wIDEwMDAwMAotICNk ZWZpbmUgSVNQQ19MTFZNXzExXzAgMTEwMDAwCi0gI2RlZmluZSBJU1BDX0xMVk1fMTJfMCAxMjAw MDAKLSAKLS0jZGVmaW5lIE9MREVTVF9TVVBQT1JURURfTExWTSBJU1BDX0xMVk1fOF8wCi0rI2Rl ZmluZSBPTERFU1RfU1VQUE9SVEVEX0xMVk0gSVNQQ19MTFZNXzEwXzAKLSAjZGVmaW5lIExBVEVT VF9TVVBQT1JURURfTExWTSBJU1BDX0xMVk1fMTJfMAotIAotICNpZmRlZiBfX2lzcGNfX3hzdHIK LWRpZmYgLS1naXQgYS9zcmMvbWFpbi5jcHAgYi9zcmMvbWFpbi5jcHAKLWluZGV4IDhmNjQzMzBj Yy4uNWM5MjBlYWJjIDEwMDY0NAotLS0tIGEvc3JjL21haW4uY3BwCi0rKysgYi9zcmMvbWFpbi5j cHAKLUBAIC01NSw5ICs1NSw3IEBACi0gI2luY2x1ZGUgPGxsdm0vU3VwcG9ydC9TaWduYWxzLmg+ Ci0gI2luY2x1ZGUgPGxsdm0vU3VwcG9ydC9UYXJnZXRSZWdpc3RyeS5oPgotICNpbmNsdWRlIDxs bHZtL1N1cHBvcnQvVGFyZ2V0U2VsZWN0Lmg+Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElT UENfTExWTV8xMF8wCi0gI2luY2x1ZGUgPGxsdm0vU3VwcG9ydC9Ub29sT3V0cHV0RmlsZS5oPgot LSNlbmRpZgotIAotICNpZmRlZiBJU1BDX0hPU1RfSVNfV0lORE9XUwotICNkZWZpbmUgc3RyY2Fz ZWNtcCBzdHJpY21wCi1AQCAtMTgxLDExICsxNzksOSBAQCBzdGF0aWMgdm9pZCBsUHJpbnRWZXJz aW9uKCkgewotICAgICBzbnByaW50Zih0YXJnZXRIZWxwLCBzaXplb2YodGFyZ2V0SGVscCksICJb LS10YXJnZXQtb3M9PG9zPl1cdFx0XHRTZWxlY3QgdGFyZ2V0IE9TLiAgPG9zPj17JXN9IiwKLSAg ICAgICAgICAgICAgZy0+dGFyZ2V0X3JlZ2lzdHJ5LT5nZXRTdXBwb3J0ZWRPU2VzKCkuY19zdHIo KSk7Ci0gICAgIFByaW50V2l0aFdvcmRCcmVha3ModGFyZ2V0SGVscCwgMjQsIFRlcm1pbmFsV2lk dGgoKSwgc3Rkb3V0KTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAK LSAgICAgcHJpbnRmKCIgICAgWy0tdGltZS10cmFjZV1cdFx0XHRUdXJuIG9uIHRpbWUgcHJvZmls ZXIuIEdlbmVyYXRlcyBKU09OIGZpbGUgYmFzZWQgb24gb3V0cHV0IGZpbGVuYW1lLlxuIik7Ci0g ICAgIHByaW50ZigiICAgIFstLXRpbWUtdHJhY2UtZ3JhbnVsYXJpdHk9PHZhbHVlPlx0TWluaW11 bSB0aW1lIGdyYW51bGFyaXR5IChpbiBtaWNyb3NlY29uZHMpIHRyYWNlZCBieSB0aW1lICIKLSAg ICAgICAgICAgICJwcm9maWxlci5cbiIpOwotLSNlbmRpZgotICAgICBwcmludGYoIiAgICBbLS12 ZXJzaW9uXVx0XHRcdFx0UHJpbnQgaXNwYyB2ZXJzaW9uXG4iKTsKLSAjaWZkZWYgSVNQQ19HRU5Y X0VOQUJMRUQKLSAgICAgcHJpbnRmKCIgICAgWy0tdmMtb3B0aW9ucz08XCItb3B0aW9uMSAtb3B0 aW9uMi4uLlwiPl1cdFx0XHRcdFBhc3MgYWRkaXRpb25hbCBvcHRpb25zIHRvIFZlY3RvciBDb21w aWxlciBiYWNrZW5kXG4iKTsKLUBAIC00NjIsNyArNDU4LDYgQEAgc3RhdGljIHZvaWQgc2V0Q2Fs bGluZ0NvbnYoVmVjdG9yQ2FsbFN0YXR1cyB2ZWN0b3JDYWxsLCBBcmNoIGFyY2gpIHsKLSAgICAg fQotIH0KLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSBzdGF0 aWMgdm9pZCB3cml0ZUNvbXBpbGVUaW1lRmlsZShjb25zdCBjaGFyICpvdXRGaWxlTmFtZSkgewot ICAgICBsbHZtOjpTbWFsbFN0cmluZzwxMjg+IGpzb25GaWxlTmFtZShvdXRGaWxlTmFtZSk7Ci0g ICAgIGpzb25GaWxlTmFtZS5hcHBlbmQoIi5qc29uIik7Ci1AQCAtNDc5LDcgKzQ3NCw2IEBAIHN0 YXRpYyB2b2lkIHdyaXRlQ29tcGlsZVRpbWVGaWxlKGNvbnN0IGNoYXIgKm91dEZpbGVOYW1lKSB7 Ci0gICAgIG9mLT5rZWVwKCk7Ci0gICAgIHJldHVybjsKLSB9Ci0tI2VuZGlmCi0gCi0gc3RhdGlj IHN0ZDo6c2V0PGludD4gUGFyc2luZ1BoYXNlcyhjaGFyICpzdGFnZXMsIEFyZ0Vycm9ycyAmZXJy b3JIYW5kbGVyKSB7Ci0gICAgIGNvbnN0ZXhwciBpbnQgcGFyc2luZ19saW1pdCA9IDEwMDsKLUBA IC03OTEsMTIgKzc4NSwxMCBAQCBpbnQgbWFpbihpbnQgQXJnYywgY2hhciAqQXJndltdKSB7Ci0g ICAgICAgICAgICAgfQotICAgICAgICAgfSBlbHNlIGlmICghc3RybmNtcChhcmd2W2ldLCAiLS1m b3JjZS1hbGlnbm1lbnQ9IiwgMTgpKSB7Ci0gICAgICAgICAgICAgZy0+Zm9yY2VBbGlnbm1lbnQg PSBhdG9pKGFyZ3ZbaV0gKyAxOCk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExW TV8xMF8wCi0gICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi0tdGltZS10cmFj ZSIpKSB7Ci0gICAgICAgICAgICAgZy0+ZW5hYmxlVGltZVRyYWNlID0gdHJ1ZTsKLSAgICAgICAg IH0gZWxzZSBpZiAoIXN0cm5jbXAoYXJndltpXSwgIi0tdGltZS10cmFjZS1ncmFudWxhcml0eT0i LCAyNSkpIHsKLSAgICAgICAgICAgICBnLT50aW1lVHJhY2VHcmFudWxhcml0eSA9IGF0b2koYXJn dltpXSArIDI1KTsKLS0jZW5kaWYKLSAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ld LCAiLS13b2ZmIikgfHwgIXN0cmNtcChhcmd2W2ldLCAiLXdvZmYiKSkgewotICAgICAgICAgICAg IGctPmRpc2FibGVXYXJuaW5ncyA9IHRydWU7Ci0gICAgICAgICAgICAgZy0+ZW1pdFBlcmZXYXJu aW5ncyA9IGZhbHNlOwotQEAgLTEwNTksNyArMTA1MSw2IEBAIGludCBtYWluKGludCBBcmdjLCBj aGFyICpBcmd2W10pIHsKLSAKLSAgICAgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgdGhl IFRhcmdldE9TIGlzIGRlY2lkZWQuCi0gICAgIHNldENhbGxpbmdDb252KHZlY3RvckNhbGwsIGFy Y2gpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBpZiAo Zy0+ZW5hYmxlVGltZVRyYWNlKSB7Ci0gICAgICAgICBsbHZtOjp0aW1lVHJhY2VQcm9maWxlcklu aXRpYWxpemUoZy0+dGltZVRyYWNlR3JhbnVsYXJpdHksICJpc3BjIik7Ci0gICAgIH0KLUBAIC0x MDc3LDkgKzEwNjgsNSBAQCBpbnQgbWFpbihpbnQgQXJnYywgY2hhciAqQXJndltdKSB7Ci0gICAg ICAgICB9Ci0gICAgICAgICBsbHZtOjp0aW1lVHJhY2VQcm9maWxlckNsZWFudXAoKTsKLSAgICAg fQotLSNlbHNlCi0tICAgIGludCByZXQgPSBNb2R1bGU6OkNvbXBpbGVBbmRPdXRwdXQoZmlsZSwg YXJjaCwgY3B1LCB0YXJnZXRzLCBmbGFncywgb3QsIG91dEZpbGVOYW1lLCBoZWFkZXJGaWxlTmFt ZSwgZGVwc0ZpbGVOYW1lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRlcHNUYXJnZXROYW1lLCBob3N0U3R1YkZpbGVOYW1lLCBkZXZTdHViRmlsZU5hbWUpOwotLSNl bmRpZgotICAgICByZXR1cm4gcmV0OwotIH0KLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlLmNwcCBi L3NyYy9tb2R1bGUuY3BwCi1pbmRleCBmZTc0NTJkZjEuLmE4NWZlYzc3YSAxMDA2NDQKLS0tLSBh L3NyYy9tb2R1bGUuY3BwCi0rKysgYi9zcmMvbW9kdWxlLmNwcAotQEAgLTE3MCw5ICsxNzAsNyBA QCBNb2R1bGU6Ok1vZHVsZShjb25zdCBjaGFyICpmbikgewotICAgICBtb2R1bGUtPnNldERhdGFM YXlvdXQoZy0+dGFyZ2V0LT5nZXREYXRhTGF5b3V0KCktPmdldFN0cmluZ1JlcHJlc2VudGF0aW9u KCkpOwotIAotICAgICBpZiAoZy0+Z2VuZXJhdGVEZWJ1Z2dpbmdTeW1ib2xzKSB7Ci0tI2lmIElT UENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgICAgICBsbHZtOjpUaW1lVHJh Y2VTY29wZSBUaW1lU2NvcGUoIkNyZWF0ZSBEZWJ1ZyBEYXRhIik7Ci0tI2VuZGlmCi0gICAgICAg ICAvLyBUbyBlbmFibGUgZGVidWcgaW5mb3JtYXRpb24gb24gV2luZG93cywgd2UgaGF2ZSB0byBs ZXQgbGx2bSBrbm93LCB0aGF0Ci0gICAgICAgICAvLyBkZWJ1ZyBpbmZvcm1hdGlvbiBzaG91bGQg YmUgZW1pdHRlZCBpbiBDb2RlVmlldyBmb3JtYXQuCi0gICAgICAgICBpZiAoZy0+dGFyZ2V0X29z ID09IFRhcmdldE9TOjp3aW5kb3dzKSB7Ci1AQCAtMjI2LDEwICsyMjQsOCBAQCBleHRlcm4gWVlf QlVGRkVSX1NUQVRFIHl5X2NyZWF0ZV9idWZmZXIoRklMRSAqLCBpbnQpOwotIGV4dGVybiB2b2lk IHl5X2RlbGV0ZV9idWZmZXIoWVlfQlVGRkVSX1NUQVRFKTsKLSAKLSBpbnQgTW9kdWxlOjpDb21w aWxlRmlsZSgpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAg ICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgQ29tcGlsZUZpbGVUaW1lU2NvcGUoCi0gICAgICAgICAi Q29tcGlsZUZpbGUiLCBsbHZtOjpTdHJpbmdSZWYoZmlsZW5hbWUgKyAoIl8iICsgc3RkOjpzdHJp bmcoZy0+dGFyZ2V0LT5HZXRJU0FTdHJpbmcoKSkpKSk7Ci0tI2VuZGlmCi0gICAgIGV4dGVybiB2 b2lkIFBhcnNlckluaXQoKTsKLSAgICAgUGFyc2VySW5pdCgpOwotIAotQEAgLTIzOCwxOCArMjM0 LDE0IEBAIGludCBNb2R1bGU6OkNvbXBpbGVGaWxlKCkgewotICAgICAvLyB2YXJpYWJsZSAnbScg dG8gYmUgaW5pdGlhbGl6ZWQgYW5kIGF2YWlsYWJsZSAod2hpY2ggaXQgaXNuJ3QgdW50aWwKLSAg ICAgLy8gdGhlIE1vZHVsZSBjb25zdHJ1Y3RvciByZXR1cm5zLi4uKQotICAgICB7Ci0tI2lmIElT UENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgICAgICBsbHZtOjpUaW1lVHJh Y2VTY29wZSBUaW1lU2NvcGUoIkRlZmluZVN0ZGxpYiIpOwotLSNlbmRpZgotICAgICAgICAgRGVm aW5lU3RkbGliKHN5bWJvbFRhYmxlLCBnLT5jdHgsIG1vZHVsZSwgZy0+aW5jbHVkZVN0ZGxpYik7 Ci0gICAgIH0KLSAKLSAgICAgYm9vbCBydW5QcmVwcm9jZXNzb3IgPSBnLT5ydW5DUFA7Ci0gCi0g ICAgIGlmIChydW5QcmVwcm9jZXNzb3IpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQ Q19MTFZNXzEwXzAKLSAgICAgICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29wZSgiRnJv bnRlbmQgcGFyc2VyIik7Ci0tI2VuZGlmCi0gICAgICAgICBpZiAoIUlzU3RkaW4oZmlsZW5hbWUp KSB7Ci0gICAgICAgICAgICAgLy8gVHJ5IHRvIG9wZW4gdGhlIGZpbGUgZmlyc3QsIHNpbmNlIG90 aGVyd2lzZSB3ZSBjcmFzaCBpbiB0aGUKLSAgICAgICAgICAgICAvLyBwcmVwcm9jZXNzb3IgaWYg dGhlIGZpbGUgZG9lc24ndCBleGlzdC4KLUBAIC0yNjgsOSArMjYwLDcgQEAgaW50IE1vZHVsZTo6 Q29tcGlsZUZpbGUoKSB7Ci0gICAgICAgICB5eXBhcnNlKCk7Ci0gICAgICAgICB5eV9kZWxldGVf YnVmZmVyKHN0cmJ1Zik7Ci0gICAgIH0gZWxzZSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49 IElTUENfTExWTV8xMF8wCi0gICAgICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBUaW1lU2NvcGUo IkZyb250ZW5kIHBhcnNlciIpOwotLSNlbmRpZgotICAgICAgICAgLy8gTm8gcHJlcHJvY2Vzc29y LCBqdXN0IG9wZW4gdXAgdGhlIGZpbGUgaWYgaXQncyBub3Qgc3RkaW4uLgotICAgICAgICAgRklM RSAqZiA9IE5VTEw7Ci0gICAgICAgICBpZiAoSXNTdGRpbihmaWxlbmFtZSkpIHsKLUBAIC0yOTcs OSArMjg3LDcgQEAgaW50IE1vZHVsZTo6Q29tcGlsZUZpbGUoKSB7Ci0gCi0gICAgIGlmIChkaUJ1 aWxkZXIpCi0gICAgICAgICBkaUJ1aWxkZXItPmZpbmFsaXplKCk7Ci0tI2lmIElTUENfTExWTV9W RVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVT Y29wZSgiT3B0aW1pemUiKTsKLS0jZW5kaWYKLSAgICAgaWYgKGVycm9yQ291bnQgPT0gMCkKLSAg ICAgICAgIE9wdGltaXplKG1vZHVsZSwgZy0+b3B0LmxldmVsKTsKLSAKLUBAIC0xMjQzLDE1ICsx MjMxLDggQEAgYm9vbCBNb2R1bGU6OndyaXRlT2JqZWN0RmlsZU9yQXNzZW1ibHkobGx2bTo6VGFy Z2V0TWFjaGluZSAqdGFyZ2V0TWFjaGluZSwgbGx2bToKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpvdXRGaWxlTmFtZSkgewotICAgICAvLyBGaWd1 cmUgb3V0IGlmIHdlJ3JlIGdlbmVyYXRpbmcgb2JqZWN0IGZpbGUgb3IgYXNzZW1ibHkgb3V0cHV0 LCBhbmQKLSAgICAgLy8gc2V0IGJpbmFyeSBvdXRwdXQgZm9yIG9iamVjdCBmaWxlcwotLSNpZiBJ U1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BDX0xMVk1fOV8wCi0tICAgIEFzc2VydCghZy0+dGFyZ2V0 LT5pc0dlblhUYXJnZXQoKSk7Ci0tICAgIGxsdm06OlRhcmdldE1hY2hpbmU6OkNvZGVHZW5GaWxl VHlwZSBmaWxlVHlwZSA9Ci0tICAgICAgICAob3V0cHV0VHlwZSA9PSBPYmplY3QpID8gbGx2bTo6 VGFyZ2V0TWFjaGluZTo6Q0dGVF9PYmplY3RGaWxlIDogbGx2bTo6VGFyZ2V0TWFjaGluZTo6Q0dG VF9Bc3NlbWJseUZpbGU7Ci0tICAgIGJvb2wgYmluYXJ5ID0gKGZpbGVUeXBlID09IGxsdm06OlRh cmdldE1hY2hpbmU6OkNHRlRfT2JqZWN0RmlsZSk7Ci0tI2Vsc2UgLy8gTExWTSAxMC4wKwotICAg ICBsbHZtOjpDb2RlR2VuRmlsZVR5cGUgZmlsZVR5cGUgPSAob3V0cHV0VHlwZSA9PSBPYmplY3Qp ID8gbGx2bTo6Q0dGVF9PYmplY3RGaWxlIDogbGx2bTo6Q0dGVF9Bc3NlbWJseUZpbGU7Ci0gICAg IGJvb2wgYmluYXJ5ID0gKGZpbGVUeXBlID09IGxsdm06OkNHRlRfT2JqZWN0RmlsZSk7Ci0tI2Vu ZGlmCi0gCi0gICAgIGxsdm06OnN5czo6ZnM6Ok9wZW5GbGFncyBmbGFncyA9IGJpbmFyeSA/IGxs dm06OnN5czo6ZnM6OkZfTm9uZSA6IGxsdm06OnN5czo6ZnM6OkZfVGV4dDsKLSAKLUBAIC0yMjE5 LDExICsyMjAwLDcgQEAgdm9pZCBNb2R1bGU6OmV4ZWNQcmVwcm9jZXNzb3IoY29uc3QgY2hhciAq aW5maWxlbmFtZSwgbGx2bTo6cmF3X3N0cmluZ19vc3RyZWFtICoKLSAgICAgaW5zdC5zZXRUYXJn ZXQodGFyZ2V0KTsKLSAgICAgaW5zdC5jcmVhdGVTb3VyY2VNYW5hZ2VyKGluc3QuZ2V0RmlsZU1h bmFnZXIoKSk7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0g ICAgY2xhbmc6OkZyb250ZW5kSW5wdXRGaWxlIGlucHV0RmlsZShpbmZpbGVuYW1lLCBjbGFuZzo6 SW5wdXRLaW5kOjpVbmtub3duKTsKLS0jZWxzZSAvLyBMTFZNIDEwLjArCi0gICAgIGNsYW5nOjpG cm9udGVuZElucHV0RmlsZSBpbnB1dEZpbGUoaW5maWxlbmFtZSwgY2xhbmc6OklucHV0S2luZCgp KTsKLS0jZW5kaWYKLSAKLSAgICAgaW5zdC5Jbml0aWFsaXplU291cmNlTWFuYWdlcihpbnB1dEZp bGUpOwotIAotQEAgLTI3MjIsOSArMjY5OSw3IEBAIGludCBNb2R1bGU6OkNvbXBpbGVBbmRPdXRw dXQoY29uc3QgY2hhciAqc3JjRmlsZSwgQXJjaCBhcmNoLCBjb25zdCBjaGFyICpjcHUsIHN0Ci0g Ci0gICAgICAgICBtID0gbmV3IE1vZHVsZShzcmNGaWxlKTsKLSAgICAgICAgIGlmIChtLT5Db21w aWxlRmlsZSgpID09IDApIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEw XzAKLSAgICAgICAgICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBUaW1lU2NvcGUoIkJhY2tlbmQi KTsKLS0jZW5kaWYKLSAjaWZkZWYgSVNQQ19HRU5YX0VOQUJMRUQKLSAgICAgICAgICAgICBpZiAo b3V0cHV0VHlwZSA9PSBBc20gfHwgb3V0cHV0VHlwZSA9PSBPYmplY3QpIHsKLSAgICAgICAgICAg ICAgICAgaWYgKGctPnRhcmdldC0+aXNHZW5YVGFyZ2V0KCkpIHsKLUBAIC0yODU1LDkgKzI4MzAs NyBAQCBpbnQgTW9kdWxlOjpDb21waWxlQW5kT3V0cHV0KGNvbnN0IGNoYXIgKnNyY0ZpbGUsIEFy Y2ggYXJjaCwgY29uc3QgY2hhciAqY3B1LCBzdAotIAotICAgICAgICAgICAgIG0gPSBuZXcgTW9k dWxlKHNyY0ZpbGUpOwotICAgICAgICAgICAgIGludCBjb21waWxlRmlsZUVycm9yID0gbS0+Q29t cGlsZUZpbGUoKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAg ICAgICAgICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBUaW1lU2NvcGUoIkJhY2tlbmQiKTsKLS0j ZW5kaWYKLSAgICAgICAgICAgICBpZiAoY29tcGlsZUZpbGVFcnJvciA9PSAwKSB7Ci0gICAgICAg ICAgICAgICAgIC8vIENyZWF0ZSB0aGUgZGlzcGF0Y2ggbW9kdWxlLCB1bmxlc3MgYWxyZWFkeSBj cmVhdGVkOwotICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgbGF0dGVyIGNhc2UsIGp1c3QgZG8g dGhlIGNoZWNraW5nCi1kaWZmIC0tZ2l0IGEvc3JjL21vZHVsZS5oIGIvc3JjL21vZHVsZS5oCi1p bmRleCA2MWQzY2ZlYTAuLjYwMzEyNGQ1MCAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGUuaAotKysr IGIvc3JjL21vZHVsZS5oCi1AQCAtNDMsOSArNDMsNyBAQAotIAotICNpbmNsdWRlIDxsbHZtL0lS L0RlYnVnSW5mby5oPgotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBf MAotICNpbmNsdWRlIDxsbHZtL1N1cHBvcnQvVGltZVByb2ZpbGVyLmg+Ci0tI2VuZGlmCi0gCi0g I2lmZGVmIElTUENfR0VOWF9FTkFCTEVECi0gI2luY2x1ZGUgIm9jbF9pZ2NfaW50ZXJmYWNlL2ln Y19vY2xfZGV2aWNlX2N0eC5oIgotZGlmZiAtLWdpdCBhL3NyYy9vcHQuY3BwIGIvc3JjL29wdC5j cHAKLWluZGV4IGE2NTVhODM0NC4uNWIxYWM3YjYzIDEwMDY0NAotLS0tIGEvc3JjL29wdC5jcHAK LSsrKyBiL3NyYy9vcHQuY3BwCi1AQCAtNjYsNiArNjYsNyBAQAotICNpbmNsdWRlIDxsbHZtL0lS L0luc3RydWN0aW9ucy5oPgotICNpbmNsdWRlIDxsbHZtL0lSL0ludHJpbnNpY0luc3QuaD4KLSAj aW5jbHVkZSA8bGx2bS9JUi9JbnRyaW5zaWNzLmg+Ci0rI2luY2x1ZGUgPGxsdm0vSVIvSW50cmlu c2ljc1g4Ni5oPgotICNpbmNsdWRlIDxsbHZtL0lSL0xlZ2FjeVBhc3NNYW5hZ2VyLmg+Ci0gI2lu Y2x1ZGUgPGxsdm0vSVIvTW9kdWxlLmg+Ci0gI2luY2x1ZGUgPGxsdm0vSVIvUGF0dGVybk1hdGNo Lmg+Ci1AQCAtODUsOSArODYsNiBAQAotICNpbmNsdWRlIDxsbHZtL1RyYW5zZm9ybXMvU2NhbGFy L0luc3RTaW1wbGlmeVBhc3MuaD4KLSAjaW5jbHVkZSA8bGx2bS9UcmFuc2Zvcm1zL1V0aWxzLmg+ Ci0gI2luY2x1ZGUgPGxsdm0vVHJhbnNmb3Jtcy9VdGlscy9CYXNpY0Jsb2NrVXRpbHMuaD4KLS0j aWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLS0jaW5jbHVkZSA8bGx2bS9J Ui9JbnRyaW5zaWNzWDg2Lmg+Ci0tI2VuZGlmCi0gCi0gI2lmZGVmIElTUENfSE9TVF9JU19MSU5V WAotICNpbmNsdWRlIDxhbGxvY2EuaD4KLUBAIC0xMDAzLDEwICsxMDAxLDcgQEAgYm9vbCBJbnRy aW5zaWNzT3B0OjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAg ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBjYWxsSW5zdC0+ Z2V0Q2FsbGVkRnVuY3Rpb24oKSA9PSBhdnhNYXNrZWRMb2FkMzIgPyA0IDogODsKLSAgICAgICAg ICAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDApLCAi X2xvYWQiKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAg ICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbG9hZEluc3QgPQotLSAgICAgICAgICAgICAg ICAgICAgbmV3IGxsdm06OkxvYWRJbnN0KGNhc3RQdHIsIG5hbWUsIGZhbHNlIC8qIG5vdCB2b2xh dGlsZSAqLywgYWxpZ24sIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotLSNlbGlmIElTUENf TExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8wCi0rI2lmIElTUENfTExWTV9WRVJTSU9OID09 IElTUENfTExWTV8xMF8wCi0gICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpsb2Fk SW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChjYXN0UHRyLCBuYW1lLCBmYWxzZSAvKiBub3Qgdm9s YXRpbGUgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGFsaWduKSwgKGxsdm06Okluc3Ry dWN0aW9uICopTlVMTCk7Ci0gI2Vsc2UKLUBAIC0xMDQzLDEzICsxMDM4LDggQEAgYm9vbCBJbnRy aW5zaWNzT3B0OjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAg ICAgICAgICAgICAgICAgIGFsaWduID0gZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1l bnQoKTsKLSAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgYWxpZ24g PSBjYWxsSW5zdC0+Z2V0Q2FsbGVkRnVuY3Rpb24oKSA9PSBhdnhNYXNrZWRTdG9yZTMyID8gNCA6 IDg7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgICAgICAg ICAgICAgbGx2bTo6U3RvcmVJbnN0ICpzdG9yZUluc3QgPSBuZXcgbGx2bTo6U3RvcmVJbnN0KHJ2 YWx1ZSwgY2FzdFB0ciwgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0tICAgICAgICAgICAg ICAgIHN0b3JlSW5zdC0+c2V0QWxpZ25tZW50KGFsaWduKTsKLS0jZWxzZQotICAgICAgICAgICAg ICAgICBsbHZtOjpTdG9yZUluc3QgKnN0b3JlSW5zdCA9IG5ldyBsbHZtOjpTdG9yZUluc3QocnZh bHVlLCBjYXN0UHRyLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6 TWF5YmVBbGlnbihhbGlnbikudmFsdWVPck9uZSgpKTsKLS0jZW5kaWYKLSAgICAgICAgICAgICAg ICAgbENvcHlNZXRhZGF0YShzdG9yZUluc3QsIGNhbGxJbnN0KTsKLSAgICAgICAgICAgICAgICAg bGx2bTo6UmVwbGFjZUluc3RXaXRoSW5zdChjYWxsSW5zdCwgc3RvcmVJbnN0KTsKLSAKLUBAIC0x MDY2LDkgKzEwNTYsNyBAQCBib29sIEludHJpbnNpY3NPcHQ6OnJ1bk9uQmFzaWNCbG9jayhsbHZt OjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wgSW50cmluc2ljc09wdDo6cnVuT25GdW5jdGlv bihsbHZtOjpGdW5jdGlvbiAmRikgewotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BD X0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIkludHJpbnNp Y3NPcHQ6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wg bW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYp IHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtMTIz OSw5ICsxMjI3LDcgQEAgYm9vbCBJbnN0cnVjdGlvblNpbXBsaWZ5UGFzczo6cnVuT25CYXNpY0Js b2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBJbnN0cnVjdGlvblNpbXBsaWZ5 UGFzczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikgewotIAotLSNpZiBJU1BDX0xM Vk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBG dW5jU2NvcGUoIkluc3RydWN0aW9uU2ltcGxpZnlQYXNzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXRO YW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZv ciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBy dW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTI5NzQsMTYgKzI5NjAsMTAgQEAgc3RhdGljIGJvb2wg bEltcHJvdmVNYXNrZWRTdG9yZShsbHZtOjpDYWxsSW5zdCAqY2FsbEluc3QpIHsKLSAKLSAgICAg ICAgICAgICBsdmFsdWUgPSBuZXcgbGx2bTo6Qml0Q2FzdEluc3QobHZhbHVlLCBwdHJUeXBlLCAi bHZhbHVlX3RvX3B0cl90eXBlIiwgY2FsbEluc3QpOwotICAgICAgICAgICAgIGxDb3B5TWV0YWRh dGEobHZhbHVlLCBjYWxsSW5zdCk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExW TV85XzAKLS0gICAgICAgICAgICBzdG9yZSA9Ci0tICAgICAgICAgICAgICAgIG5ldyBsbHZtOjpT dG9yZUluc3QocnZhbHVlLCBsdmFsdWUsIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5 ID8gZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSA6IGluZm8tPmFsaWduKTsK LS0jZWxzZQotICAgICAgICAgICAgIHN0b3JlID0gbmV3IGxsdm06OlN0b3JlSW5zdCgKLSAgICAg ICAgICAgICAgICAgcnZhbHVlLCBsdmFsdWUsIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywKLSAg ICAgICAgICAgICAgICAgbGx2bTo6TWF5YmVBbGlnbihnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5 ID8gZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSA6IGluZm8tPmFsaWduKQot ICAgICAgICAgICAgICAgICAgICAgLnZhbHVlT3JPbmUoKSk7Ci0tI2VuZGlmCi0gICAgICAgICB9 Ci0gICAgICAgICBpZiAoc3RvcmUgIT0gTlVMTCkgewotICAgICAgICAgICAgIGxDb3B5TWV0YWRh dGEoc3RvcmUsIGNhbGxJbnN0KTsKLUBAIC0zMDU5LDExICszMDM5LDcgQEAgc3RhdGljIGJvb2wg bEltcHJvdmVNYXNrZWRMb2FkKGxsdm06OkNhbGxJbnN0ICpjYWxsSW5zdCwgbGx2bTo6QmFzaWNC bG9jazo6aXRlcmEKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBsbHZtOjpUeXBlICpwdHJUeXBl ID0gbGx2bTo6UG9pbnRlclR5cGU6OmdldChjYWxsSW5zdC0+Z2V0VHlwZSgpLCAwKTsKLSAgICAg ICAgICAgICBwdHIgPSBuZXcgbGx2bTo6Qml0Q2FzdEluc3QocHRyLCBwdHJUeXBlLCAicHRyX2Nh c3RfZm9yX2xvYWQiLCBjYWxsSW5zdCk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENf TExWTV85XzAKLS0gICAgICAgICAgICBsb2FkID0gbmV3IGxsdm06OkxvYWRJbnN0KHB0ciwgY2Fs bEluc3QtPmdldE5hbWUoKSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZy0+b3B0LmZvcmNlQWxpZ25lZE1lbW9yeSA/IGct PnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkgOiBpbmZvLT5hbGlnbiwKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5V TEwpOwotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8wCi0rI2lmIElT UENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8wCi0gICAgICAgICAgICAgbG9hZCA9IG5l dyBsbHZtOjpMb2FkSW5zdCgKLSAgICAgICAgICAgICAgICAgcHRyLCBjYWxsSW5zdC0+Z2V0TmFt ZSgpLCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sCi0gICAgICAgICAgICAgICAgIGxsdm06Ok1h eWJlQWxpZ24oZy0+b3B0LmZvcmNlQWxpZ25lZE1lbW9yeSA/IGctPnRhcmdldC0+Z2V0TmF0aXZl VmVjdG9yQWxpZ25tZW50KCkgOiBpbmZvLT5hbGlnbikKLUBAIC0zMTI5LDkgKzMxMDUsNyBAQCBi b29sIEltcHJvdmVNZW1vcnlPcHNQYXNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9j ayAmYmIpIHsKLSAKLSBib29sIEltcHJvdmVNZW1vcnlPcHNQYXNzOjpydW5PbkZ1bmN0aW9uKGxs dm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExW TV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiSW1wcm92ZU1lbW9y eU9wc1Bhc3M6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJv b2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6 IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAt MzQyNCw5ICszMzk4LDcgQEAgbGx2bTo6VmFsdWUgKmxHRVBBbmRMb2FkKGxsdm06OlZhbHVlICpi YXNlUHRyLCBpbnQ2NF90IG9mZnNldCwgaW50IGFsaWduLCBsbHZtOjoKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgbGx2bTo6VHlwZSAqdHlwZSkgewotICAgICBsbHZtOjpWYWx1ZSAqcHRyID0g bEdFUEluc3QoYmFzZVB0ciwgTExWTUludDY0KG9mZnNldCksICJuZXdfYmFzZSIsIGluc2VydEJl Zm9yZSk7Ci0gICAgIHB0ciA9IG5ldyBsbHZtOjpCaXRDYXN0SW5zdChwdHIsIGxsdm06OlBvaW50 ZXJUeXBlOjpnZXQodHlwZSwgMCksICJwdHJfY2FzdCIsIGluc2VydEJlZm9yZSk7Ci0tI2lmIElT UENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgcmV0dXJuIG5ldyBsbHZtOjpM b2FkSW5zdChwdHIsICJnYXRoZXJfbG9hZCIsIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgYWxp Z24sIGluc2VydEJlZm9yZSk7Ci0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZN XzEwXzAKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSAgICAgcmV0 dXJuIG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsICJnYXRoZXJfbG9hZCIsIGZhbHNlIC8qIG5vdCB2 b2xhdGlsZSAqLywgbGx2bTo6TWF5YmVBbGlnbihhbGlnbiksIGluc2VydEJlZm9yZSk7Ci0gI2Vs c2UgLy8gTExWTSAxMS4wKwotICAgICByZXR1cm4gbmV3IGxsdm06OkxvYWRJbnN0KGxsdm06OmR5 bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihwdHItPmdldFR5cGUoKSktPmdldFBvaW50ZXJFbGVt ZW50VHlwZSgpLCBwdHIsCi1AQCAtNDEzNSw5ICs0MTA3LDcgQEAgYm9vbCBHYXRoZXJDb2FsZXNj ZVBhc3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wg R2F0aGVyQ29hbGVzY2VQYXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0g Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRp bWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiR2F0aGVyQ29hbGVzY2VQYXNzOjpydW5PbkZ1bmN0aW9u IiwgRi5nZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7 Ci0gICAgIGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmll ZEFueSB8PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTQ0NjcsOSArNDQzNyw3IEBAIGJvb2wg UmVwbGFjZVBzZXVkb01lbW9yeU9wc1Bhc3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Js b2NrICZiYikgewotIAotIGJvb2wgUmVwbGFjZVBzZXVkb01lbW9yeU9wc1Bhc3M6OnJ1bk9uRnVu Y3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0g SVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJSZXBs YWNlUHNldWRvTWVtb3J5T3BzUGFzczo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0j ZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJh c2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Js b2NrKEJCKTsKLUBAIC00NTczLDkgKzQ1NDEsNyBAQCBib29sIElzQ29tcGlsZVRpbWVDb25zdGFu dFBhc3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wg SXNDb21waWxlVGltZUNvbnN0YW50UGFzczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAm RikgewotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBs bHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIklzQ29tcGlsZVRpbWVDb25zdGFudFBhc3M6 OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZp ZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAg ICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtNTIwMSw5ICs1 MTY3LDcgQEAgYm9vbCBQZWVwaG9sZVBhc3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Js b2NrICZiYikgewotIAotIGJvb2wgUGVlcGhvbGVQYXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1 bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8w Ci0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiUGVlcGhvbGVQYXNzOjpydW5P bkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55 ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAg ICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTUyOTksOSArNTI2Myw3 IEBAIGJvb2wgUmVwbGFjZVN0ZGxpYlNoaWZ0UGFzczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJh c2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBSZXBsYWNlU3RkbGliU2hpZnRQYXNzOjpydW5PbkZ1 bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49 IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiUmVw bGFjZVN0ZGxpYlNoaWZ0UGFzczo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5k aWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2lj QmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2Nr KEJCKTsKLUBAIC01Mzk5LDkgKzUzNjEsNyBAQCBsbHZtOjpJbnN0cnVjdGlvbiAqRml4Qm9vbGVh blNlbGVjdFBhc3M6OmZpeFNlbGVjdChsbHZtOjpTZWxlY3RJbnN0ICpzZWwsIGxsdm06OgotIH0K LSAKLSBib29sIEZpeEJvb2xlYW5TZWxlY3RQYXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0 aW9uICZGKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAg IGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiRml4Qm9vbGVhblNlbGVjdFBhc3M6OnJ1 bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRB bnkgPSBmYWxzZTsKLSAKLSAgICAgcmV0dXJuIG1vZGlmaWVkQW55OwotQEAgLTU5NjQsOSArNTky NCw3IEBAIGJvb2wgR2VuWEdhdGhlckNvYWxlc2Npbmc6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpC YXNpY0Jsb2NrICZiYikgewotIH0KLSAKLSBib29sIEdlblhHYXRoZXJDb2FsZXNjaW5nOjpydW5P bkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49 IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiR2Vu WEdhdGhlckNvYWxlc2Npbmc6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlm Ci0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Js b2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhC Qik7Ci1AQCAtNjExMyw5ICs2MDcxLDcgQEAgYm9vbCBQcm9tb3RlVG9Qcml2YXRlTWVtb3J5UGFz czo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBQcm9t b3RlVG9Qcml2YXRlTWVtb3J5UGFzczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikg ewotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZt OjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIlByb21vdGVUb1ByaXZhdGVNZW1vcnlQYXNzOjpy dW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVk QW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAg ICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTYxODEsOSArNjEz Nyw3IEBAIGJvb2wgUmVwbGFjZUxMVk1JbnRyaW5zaWNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6 QmFzaWNCbG9jayAmYmIpIHsKLSAKLSBib29sIFJlcGxhY2VMTFZNSW50cmluc2ljczo6cnVuT25G dW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikgewotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+ PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIlJl cGxhY2VMTFZNSW50cmluc2ljczo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5k aWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2lj QmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2Nr KEJCKTsKLUBAIC02Mjc4LDkgKzYyMzIsNyBAQCBib29sIFJlcGxhY2VVbnN1cHBvcnRlZEluc3Rz OjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAKLSBib29sIFJlcGxh Y2VVbnN1cHBvcnRlZEluc3RzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0g Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRp bWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiUmVwbGFjZVVuc3VwcG9ydGVkSW5zdHM6OnJ1bk9uRnVu Y3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBm YWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1v ZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtNjM2OSw5ICs2MzIxLDcgQEAg Ym9vbCBDaGVja1Vuc3VwcG9ydGVkSW5zdHM6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Js b2NrICZiYikgewotIH0KLSAKLSBib29sIENoZWNrVW5zdXBwb3J0ZWRJbnN0czo6cnVuT25GdW5j dGlvbihsbHZtOjpGdW5jdGlvbiAmRikgewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BD X0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIkNoZWNrVW5z dXBwb3J0ZWRJbnN0czo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAg ICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sg JkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsK LUBAIC02NDQwLDkgKzYzOTAsNyBAQCBib29sIE1hbmdsZU9wZW5DTEJ1aWx0aW5zOjpydW5PbkJh c2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSB9Ci0gCi0gYm9vbCBNYW5nbGVPcGVu Q0xCdWlsdGluczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikgewotLSNpZiBJU1BD X0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29w ZSBGdW5jU2NvcGUoIk1hbmdsZU9wZW5DTEJ1aWx0aW5zOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXRO YW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZv ciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBy dW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTY4MjgsOSArNjc3Niw3IEBAIGJvb2wgRml4QWRkcmVz c1NwYWNlOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gICAgIC8vIFRyYW5z Zm9ybWF0aW9ucyBhcmUgY29ycmVjdCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBub3QgaW50ZXJuYWwu Ci0gICAgIC8vIFRoaXMgaXMgZHVlIHRvIGFkZHJlc3Mgc3BhY2UgY2FsY3VsYXRpb24gYWxnb3Jp dGhtLgotICAgICAvLyBUT0RPOiBwcm9ibGVtcyBjYW4gYmUgbWV0IGluIGNhc2Ugb2YgU3RhY2sg Q2FsbHMKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2 bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJGaXhBZGRyZXNzU3BhY2U6OnJ1bk9uRnVuY3Rp b24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGlmIChGLmdldExpbmthZ2UoKSA9PSBs bHZtOjpHbG9iYWxWYWx1ZTo6TGlua2FnZVR5cGVzOjpJbnRlcm5hbExpbmthZ2UpCi0gICAgICAg ICByZXR1cm4gZmFsc2U7Ci0gCi1AQCAtNjg1NCw5ICs2ODAwLDcgQEAgY2xhc3MgRGVtb3RlUEhJ cyA6IHB1YmxpYyBsbHZtOjpGdW5jdGlvblBhc3MgewotIGNoYXIgRGVtb3RlUEhJczo6SUQgPSAw OwotIAotIGJvb2wgRGVtb3RlUEhJczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikg ewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpU aW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIkRlbW90ZVBISXM6OnJ1bk9uRnVuY3Rpb24iLCBGLmdl dE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGlmIChGLmlzRGVjbGFyYXRpb24oKSB8fCBza2lwRnVu Y3Rpb24oRikpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgIHN0ZDo6dmVjdG9yPGxsdm06 Okluc3RydWN0aW9uICo+IFdvcmtMaXN0OwotZGlmZiAtLWdpdCBhL3NyYy90eXBlLmNwcCBiL3Ny Yy90eXBlLmNwcAotaW5kZXggNjg4YTRlODc0Li5mYTBjYjA0ZGIgMTAwNjQ0Ci0tLS0gYS9zcmMv dHlwZS5jcHAKLSsrKyBiL3NyYy90eXBlLmNwcAotQEAgLTE4MjIsMTQgKzE4MjIsMTAgQEAgbGx2 bTo6RElUeXBlICpTdHJ1Y3RUeXBlOjpHZXRESVR5cGUobGx2bTo6RElTY29wZSAqc2NvcGUpIGNv bnN0IHsKLSAgICAgbGx2bTo6RElGaWxlICpkaUZpbGUgPSBwb3MuR2V0RElGaWxlKCk7Ci0gICAg IGxsdm06OkRJTmFtZXNwYWNlICpkaVNwYWNlID0gcG9zLkdldERJTmFtZXNwYWNlKCk7Ci0gICAg IHJldHVybiBtLT5kaUJ1aWxkZXItPmNyZWF0ZVN0cnVjdFR5cGUoZGlTcGFjZSwgR2V0U3RyaW5n KCksIGRpRmlsZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw b3MuZmlyc3RfbGluZSwgICAgICAgICAgLy8gTGluZSBudW1iZXIKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQtPmdldFNpemVJbkJpdHMoKSwgLy8gU2l6 ZSBpbiBiaXRzCi0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQtPmdldEFsaWdubWVu dCgpICogOCwgLy8gQWxpZ25tZW50IGluIGJpdHMKLS0jZWxzZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTExWTSAxMC4w KwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5maXJzdF9s aW5lLCAgICAgICAgICAgICAgICAgICAgIC8vIExpbmUgbnVtYmVyCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0LT5nZXRTaXplSW5CaXRzKCksICAgICAg ICAgICAgLy8gU2l6ZSBpbiBiaXRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGF5b3V0LT5nZXRBbGlnbm1lbnQoKS52YWx1ZSgpICogOCwgLy8gQWxpZ25tZW50 IGluIGJpdHMKLS0jZW5kaWYKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsbHZtOjpESU5vZGU6OkZsYWdaZXJvLCAvLyBGbGFncwotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkRJTm9kZTo6RmxhZ1plcm8sICAgICAgICAg ICAgIC8vIEZsYWdzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TlVMTCwgZWxlbWVudHMpOwotIH0KLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9saXQtdGVzdHMvMTc3 MS5pc3BjIGIvdGVzdHMvbGl0LXRlc3RzLzE3NzEuaXNwYwotaW5kZXggOTgwNjRkODRkLi40ZmVi NzNkZDcgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9saXQtdGVzdHMvMTc3MS5pc3BjCi0rKysgYi90ZXN0 cy9saXQtdGVzdHMvMTc3MS5pc3BjCi1AQCAtNSw3ICs1LDYgQEAKLSAvLyBSVU46ICV7aXNwY30g JXMgLS10YXJnZXQ9c3NlNC1pMTZ4OCAtLWVtaXQtYXNtIC1vIC0gfCBGaWxlQ2hlY2sgJXMgLWNo ZWNrLXByZWZpeD1DSEVDS1NTRTRfSTE2WDgKLSAvLyBSVU46ICV7aXNwY30gJXMgLS10YXJnZXQ9 c3NlNC1pOHgxNiAtLWVtaXQtYXNtIC1vIC0gfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1D SEVDS1NTRTRfSThYMTYKLSAKLS0vLyBSRVFVSVJFUzogTExWTV8xMF8wKwotIC8vIFJFUVVJUkVT OiBYODZfRU5BQkxFRAotIAotIC8vIENIRUNLQVZYMl9JMzJYODoge3tbYS16XSp4b3JbYS16XSp9 fSAgJXhtbTAsICV4bW0wLCAleG1tMAotZGlmZiAtLWdpdCBhL3Rlc3RzL2xpdC10ZXN0cy8xODQ0 LmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvMTg0NC5pc3BjCi1pbmRleCA3OTNhODg2NmMuLjE4OWVk ZjRjMyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy8xODQ0LmlzcGMKLSsrKyBiL3Rlc3Rz L2xpdC10ZXN0cy8xODQ0LmlzcGMKLUBAIC02LDkgKzYsNiBAQAotIAotIC8vIFJFUVVJUkVTOiBY ODZfRU5BQkxFRAotIAotLS8vIEl0IGRvZXNuJ3Qgd29yayBmb3IgYW55dGhpbmcgZWFybGllciB0 aGFuIDEwLjAsIGJ1dCBpdCB3aWxsIG5vdCBiZSBmaXhlZCwgc28gZG9uJ3QgcnVuLgotLS8vIFJF UVVJUkVTOiBMTFZNXzEwXzArCi0tCi0gZXh0ZXJuIHVuaWZvcm0gdW5zaWduZWQgaW50NjQgdmFy XzY7Ci0gZXh0ZXJuIHVuaWZvcm0gdW5zaWduZWQgaW50MTYgdmFyXzExOwotIGV4dGVybiB1bmlm b3JtIGJvb2wgYXJyXzIwMSBbMV0gWzE1XSBbMjBdOwotZGlmZiAtLWdpdCBhL3Rlc3RzL2xpdC10 ZXN0cy8xOTI2LmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvMTkyNi5pc3BjCi1pbmRleCA3MGY3Y2Mz YzIuLjc5MjFjOTFhNiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy8xOTI2LmlzcGMKLSsr KyBiL3Rlc3RzL2xpdC10ZXN0cy8xOTI2LmlzcGMKLUBAIC0yLDggKzIsNiBAQAotIC8vIFJVTjog Y2F0ICVULzE5MjYuby5qc29uIFwKLSAvLyBSVU46ICAgfCBGaWxlQ2hlY2sgJXMKLSAKLS0vLyBS RVFVSVJFUzogTExWTV8xMF8wKwotLQotIC8vIENIRUNLOiAidHJhY2VFdmVudHMiCi0gLy8gQ0hF Q0s6ICJkZXRhaWwiCi0gZXhwb3J0IHVuaWZvcm0gaW50IGZvbyh1bmlmb3JtIGludCBhW10sIHVu aWZvcm0gaW50IGNvdW50KSB7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvbGl0LXRlc3RzL2NwdXNfeDg2 LmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvY3B1c194ODYuaXNwYwotaW5kZXggNTE2ZWZkZDRjLi40 ZDYwMTg2ZjYgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9saXQtdGVzdHMvY3B1c194ODYuaXNwYwotKysr IGIvdGVzdHMvbGl0LXRlc3RzL2NwdXNfeDg2LmlzcGMKLUBAIC0yNCw2ICsyNCw4IEBACi0gLy87 IFJVTjogJXtpc3BjfSAlcyAtbyAldC5vIC0tbm9zdGRsaWIgLS10YXJnZXQ9c3NlMi1pMzJ4NCAt LWNwdT1pY2wKLSAvLzsgUlVOOiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRhcmdl dD1zc2UyLWkzMng0IC0tY3B1PWljZWxha2Utc2VydmVyCi0gLy87IFJVTjogJXtpc3BjfSAlcyAt byAldC5vIC0tbm9zdGRsaWIgLS10YXJnZXQ9c3NlMi1pMzJ4NCAtLWNwdT1pY3gKLSsvLzsgUlVO OiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRhcmdldD1zc2UyLWkzMng0IC0tY3B1 PXRpZ2VybGFrZQotKy8vOyBSVU46ICV7aXNwY30gJXMgLW8gJXQubyAtLW5vc3RkbGliIC0tdGFy Z2V0PXNzZTItaTMyeDQgLS1jcHU9dGdsCi0gCi0gLy8gUkVRVUlSRVM6IFg4Nl9FTkFCTEVECi0g Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvbGl0LXRlc3RzL2NwdXNfeDg2X2xsdm0xMC5pc3BjIGIvdGVz dHMvbGl0LXRlc3RzL2NwdXNfeDg2X2xsdm0xMC5pc3BjCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IGVmMDAwMDBlNS4uMDAwMDAwMDAwCi0tLS0gYS90ZXN0cy9saXQtdGVzdHMvY3B1 c194ODZfbGx2bTEwLmlzcGMKLSsrKyAvZGV2L251bGwKLUBAIC0xLDExICswLDAgQEAKLS0vLyBU aGUgdGVzdCBjaGVja3MgdGhhdCBjcHUgZGVmaW5pdGlvbnMgKGluY2x1ZGluZyBhbGwgc3lub255 bXMpIGFyZSBzdWNjZXNzZnVsbHkgY29uc3VtZWQgYnkgY29tcGlsZXIuCi0tCi0tLy87IFJVTjog JXtpc3BjfSAlcyAtbyAldC5vIC0tbm9zdGRsaWIgLS10YXJnZXQ9c3NlMi1pMzJ4NCAtLWNwdT10 aWdlcmxha2UKLS0vLzsgUlVOOiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRhcmdl dD1zc2UyLWkzMng0IC0tY3B1PXRnbAotLQotLS8vIFJFUVVJUkVTOiBYODZfRU5BQkxFRAotLS8v IFJFUVVJUkVTOiBMTFZNXzEwXzArCi0tCi0tdW5pZm9ybSBpbnQgaTsKLS0KLS12b2lkIGZvbygp IHt9Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvbGl0LXRlc3RzL2xpdC5jZmcgYi90ZXN0cy9saXQtdGVz dHMvbGl0LmNmZwotaW5kZXggMTcwMTY1NzlkLi4wNDVlNjk0MzcgMTAwNjQ0Ci0tLS0gYS90ZXN0 cy9saXQtdGVzdHMvbGl0LmNmZwotKysrIGIvdGVzdHMvbGl0LXRlc3RzL2xpdC5jZmcKLUBAIC0z MCwxMSArMzAsNiBAQCBwcmludCgiQ29uZmlnOiIpCi0gCi0gIyBMTFZNIHZlcnNpb24KLSBsbHZt X3ZlcnNpb24gPSBMb29zZVZlcnNpb24oaXNwY19sbHZtX3ZlcnNpb25fbnVtYmVyKQotLWlmIGxs dm1fdmVyc2lvbiA+PSBMb29zZVZlcnNpb24oIjEwLjAuMCIpOgotLSAgICBwcmludCgiTExWTV8x MF8wKzogWUVTIikKLS0gICAgY29uZmlnLmF2YWlsYWJsZV9mZWF0dXJlcy5hZGQoIkxMVk1fMTBf MCsiKQotLWVsc2U6Ci0tICAgIHByaW50KCJMTFZNXzEwXzArOiBOTyIpCi0gCi0gaWYgbGx2bV92 ZXJzaW9uID49IExvb3NlVmVyc2lvbigiMTIuMC4wIik6Ci0gICAgIHByaW50KCJMTFZNXzEyXzAr OiBZRVMiKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMy5wYXRj aCBiL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDMucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDA0MjNhZmM5ZTNmOS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3Mv aXNwYy9wYXRjaGVzL2xsdm0xMi0wMDMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTA0ICsw LDAgQEAKLUZyb20gMTg1MWQxOGIyMTNkYmFkMTY5OTM3MDc2MTc2YjJkNTUwOTczM2M3NiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlZXBhayBSYWplbmRyYWt1bWFyYW4gPGRlZXBh ay5yYWplbmRyYWt1bWFyYW5AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAxMiBKYW4gMjAyMSAyMjox NToxMiAtMDgwMAotU3ViamVjdDogW1BBVENIXSBmaXhlcyAjMTgyMSAtIFJlbW92aW5nIExMVk1H ZXROYW1lKCkgYW5kIHN3aXRjaGluZyB0bwotIExMVk06OlR3aW5lLgotCi0tLS0KLSBzcmMvY3R4 LmNwcCAgICAgIHwgMzA0ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCi0gc3JjL2N0eC5oICAgICAgICB8ICA3MiArKysrKy0tLS0tLQotIHNyYy9leHByLmNw cCAgICAgfCAgMzYgKysrLS0tCi0gc3JjL2xsdm11dGlsLmNwcCB8ICAxNyAtLS0KLSBzcmMvbGx2 bXV0aWwuaCAgIHwgICA1IC0KLSBzcmMvb3B0LmNwcCAgICAgIHwgMTAzICsrKysrKysrKy0tLS0t LS0KLSA2IGZpbGVzIGNoYW5nZWQsIDI1NSBpbnNlcnRpb25zKCspLCAyODIgZGVsZXRpb25zKC0p Ci0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9jdHguY3BwCi1pbmRleCA0MmM0ZWEw OWQuLmRlZDUyNGI3MSAxMDA2NDQKLS0tLSBhL3NyYy9jdHguY3BwCi0rKysgYi9zcmMvY3R4LmNw cAotQEAgLTEwMjAsOCArMTAyMCw4IEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6RW1pdENh c2VMYWJlbChpbnQgdmFsdWUsIGJvb2wgY2hlY2tNYXNrLCBTb3VyY2VQb3MgcG9zCi0gICAgIGxs dm06OkJhc2ljQmxvY2sgKmJiQ2FzZUltcGwgPSBOVUxMOwotICAgICBpZiAoZW1pdEdlblhIYXJk d2FyZU1hc2soKSkgewotICAgICAgICAgLy8gQ3JlYXRlIGJhc2ljIGJsb2NrIHdpdGggYWN0dWFs IGNhc2UgaW1wbGVtZW50YXRpb24KLS0gICAgICAgIHN0ZDo6c3RyaW5nIGJiTmFtZSA9IGJiQ2Fz ZS0+Z2V0TmFtZSgpLnN0cigpICsgIl9pbXBsIjsKLS0gICAgICAgIGJiQ2FzZUltcGwgPSBDcmVh dGVCYXNpY0Jsb2NrKGJiTmFtZS5jX3N0cigpLCBiYkNhc2UpOwotKyAgICAgICAgbGx2bTo6VHdp bmUgYmJOYW1lID0gbGx2bTo6VHdpbmUoYmJDYXNlLT5nZXROYW1lKCkpICsgIl9pbXBsIjsKLSsg ICAgICAgIGJiQ2FzZUltcGwgPSBDcmVhdGVCYXNpY0Jsb2NrKGJiTmFtZSwgYmJDYXNlKTsKLSAg ICAgfQotICNlbmRpZgotIAotQEAgLTExODUsNyArMTE4NSw3IEBAIGJvb2wgRnVuY3Rpb25FbWl0 Q29udGV4dDo6aW5pdExhYmVsQkJsb2NrcyhBU1ROb2RlICpub2RlLCB2b2lkICpkYXRhKSB7Ci0g ICAgIGlmIChjdHgtPmxhYmVsTWFwLmZpbmQobHMtPm5hbWUpICE9IGN0eC0+bGFiZWxNYXAuZW5k KCkpCi0gICAgICAgICBFcnJvcihscy0+cG9zLCAiTXVsdGlwbGUgbGFiZWxzIG5hbWVkIFwiJXNc IiBpbiBmdW5jdGlvbi4iLCBscy0+bmFtZS5jX3N0cigpKTsKLSAgICAgZWxzZSB7Ci0tICAgICAg ICBsbHZtOjpCYXNpY0Jsb2NrICpiYiA9IGN0eC0+Q3JlYXRlQmFzaWNCbG9jayhscy0+bmFtZS5j X3N0cigpKTsKLSsgICAgICAgIGxsdm06OkJhc2ljQmxvY2sgKmJiID0gY3R4LT5DcmVhdGVCYXNp Y0Jsb2NrKGxzLT5uYW1lKTsKLSAgICAgICAgIGN0eC0+bGFiZWxNYXBbbHMtPm5hbWVdID0gYmI7 Ci0gICAgIH0KLSAgICAgcmV0dXJuIHRydWU7Ci1AQCAtMTI5OSw3ICsxMjk5LDcgQEAgbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFueShsbHZtOjpWYWx1ZSAqbWFzaykgewotICAg ICAvLyBXZSBjYW4gYWN0dWFsbHkgY2FsbCBlaXRoZXIgb25lLCBzaW5jZSBib3RoIGFyZSBpMzJz IGFzIGZhciBhcwotICAgICAvLyBMTFZNJ3MgdHlwZSBzeXN0ZW0gaXMgY29uY2VybmVkLi4uCi0g ICAgIGxsdm06OkZ1bmN0aW9uICpmbW0gPSBtbVswXS0+ZnVuY3Rpb247Ci0tICAgIHJldHVybiBD YWxsSW5zdChmbW0sIE5VTEwsIG1hc2ssIExMVk1HZXROYW1lKG1hc2ssICJfYW55IikpOwotKyAg ICByZXR1cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCBtYXNrLCBsbHZtOjpUd2luZShtYXNrLT5nZXRO YW1lKCkpICsgIl9hbnkiKTsKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRl eHQ6OkFsbChsbHZtOjpWYWx1ZSAqbWFzaykgewotQEAgLTEzMTUsNyArMTMxNSw3IEBAIGxsdm06 OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBbGwobGx2bTo6VmFsdWUgKm1hc2spIHsKLSAg ICAgLy8gV2UgY2FuIGFjdHVhbGx5IGNhbGwgZWl0aGVyIG9uZSwgc2luY2UgYm90aCBhcmUgaTMy cyBhcyBmYXIgYXMKLSAgICAgLy8gTExWTSdzIHR5cGUgc3lzdGVtIGlzIGNvbmNlcm5lZC4uLgot ICAgICBsbHZtOjpGdW5jdGlvbiAqZm1tID0gbW1bMF0tPmZ1bmN0aW9uOwotLSAgICByZXR1cm4g Q2FsbEluc3QoZm1tLCBOVUxMLCBtYXNrLCBMTFZNR2V0TmFtZShtYXNrLCAiX2FsbCIpKTsKLSsg ICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwgbWFzaywgbGx2bTo6VHdpbmUobWFzay0+Z2V0 TmFtZSgpKSArICJfYWxsIik7Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250 ZXh0OjpOb25lKGxsdm06OlZhbHVlICptYXNrKSB7Ci1AQCAtMTMzMSw3ICsxMzMxLDcgQEAgbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Ok5vbmUobGx2bTo6VmFsdWUgKm1hc2spIHsK LSAgICAgLy8gV2UgY2FuIGFjdHVhbGx5IGNhbGwgZWl0aGVyIG9uZSwgc2luY2UgYm90aCBhcmUg aTMycyBhcyBmYXIgYXMKLSAgICAgLy8gTExWTSdzIHR5cGUgc3lzdGVtIGlzIGNvbmNlcm5lZC4u LgotICAgICBsbHZtOjpGdW5jdGlvbiAqZm1tID0gbW1bMF0tPmZ1bmN0aW9uOwotLSAgICByZXR1 cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCBtYXNrLCBMTFZNR2V0TmFtZShtYXNrLCAiX25vbmUiKSk7 Ci0rICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIG1hc2ssIGxsdm06OlR3aW5lKG1hc2st PmdldE5hbWUoKSkgKyAiX25vbmUiKTsKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1p dENvbnRleHQ6OkxhbmVNYXNrKGxsdm06OlZhbHVlICp2KSB7Ci1AQCAtMTM0OSw3ICsxMzQ5LDcg QEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkxhbmVNYXNrKGxsdm06OlZhbHVl ICp2KSB7Ci0gICAgIC8vIFdlIGNhbiBhY3R1YWxseSBjYWxsIGVpdGhlciBvbmUsIHNpbmNlIGJv dGggYXJlIGkzMnMgYXMgZmFyIGFzCi0gICAgIC8vIExMVk0ncyB0eXBlIHN5c3RlbSBpcyBjb25j ZXJuZWQuLi4KLSAgICAgbGx2bTo6RnVuY3Rpb24gKmZtbSA9IG1tWzBdLT5mdW5jdGlvbjsKLS0g ICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwgdiwgTExWTUdldE5hbWUodiwgIl9tb3Ztc2si KSk7Ci0rICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIHYsIGxsdm06OlR3aW5lKHYtPmdl dE5hbWUoKSkgKyAiX21vdm1zayIpOwotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6TWFza3NBbGxFcXVhbChsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2Mikg ewotQEAgLTEzNjQsMTEgKzEzNjQsMTIgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRl eHQ6Ok1hc2tzQWxsRXF1YWwobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAqdjIKLSAjZWxz ZQotICAgICBpZiAoZy0+dGFyZ2V0LT5nZXRBcmNoKCkgPT0gQXJjaDo6d2FzbTMyKSB7Ci0gICAg ICAgICBsbHZtOjpGdW5jdGlvbiAqZm1tID0gbS0+bW9kdWxlLT5nZXRGdW5jdGlvbigiX193YXNt X2NtcF9tc2tfZXEiKTsKLS0gICAgICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIHt2MSwg djJ9LCBMTFZNR2V0TmFtZSgid2FzbV9jbXBfbXNrX2VxIiwgdjEsIHYyKSk7Ci0rICAgICAgICBy ZXR1cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCB7djEsIHYyfSwgKChsbHZtOjpUd2luZSgid2FzbV9j bXBfbXNrX2VxXyIpICsgdjEtPmdldE5hbWUoKSkgKyAiXyIpICsgdjItPmdldE5hbWUoKSk7Ci0g ICAgIH0KLSAgICAgbGx2bTo6VmFsdWUgKm1tMSA9IExhbmVNYXNrKHYxKTsKLSAgICAgbGx2bTo6 VmFsdWUgKm1tMiA9IExhbmVNYXNrKHYyKTsKLS0gICAgcmV0dXJuIENtcEluc3QobGx2bTo6SW5z dHJ1Y3Rpb246OklDbXAsIGxsdm06OkNtcEluc3Q6OklDTVBfRVEsIG1tMSwgbW0yLCBMTFZNR2V0 TmFtZSgiZXF1YWwiLCB2MSwgdjIpKTsKLSsgICAgcmV0dXJuIENtcEluc3QobGx2bTo6SW5zdHJ1 Y3Rpb246OklDbXAsIGxsdm06OkNtcEluc3Q6OklDTVBfRVEsIG1tMSwgbW0yLAotKyAgICAgICAg ICAgICAgICAgICAoKGxsdm06OlR3aW5lKCJlcXVhbF8iKSArIHYxLT5nZXROYW1lKCkpICsgIl8i KSArIHYyLT5nZXROYW1lKCkpOwotICNlbmRpZgotIH0KLSAKLUBAIC0xMzkyLDcgKzEzOTMsNyBA QCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0U3RyaW5nUHRyKGNvbnN0IHN0 ZDo6c3RyaW5nICZzdHIpIHsKLSAgICAgcmV0dXJuIG5ldyBsbHZtOjpCaXRDYXN0SW5zdChsc3Ry UHRyLCBMTFZNVHlwZXM6OlZvaWRQb2ludGVyVHlwZSwgInN0cl92b2lkX3B0ciIsIGJibG9jayk7 Ci0gfQotIAotLWxsdm06OkJhc2ljQmxvY2sgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkNyZWF0ZUJh c2ljQmxvY2soY29uc3QgY2hhciAqbmFtZSwgbGx2bTo6QmFzaWNCbG9jayAqaW5zZXJ0QWZ0ZXIp IHsKLStsbHZtOjpCYXNpY0Jsb2NrICpGdW5jdGlvbkVtaXRDb250ZXh0OjpDcmVhdGVCYXNpY0Js b2NrKGNvbnN0IGxsdm06OlR3aW5lICZuYW1lLCBsbHZtOjpCYXNpY0Jsb2NrICppbnNlcnRBZnRl cikgewotICAgICBsbHZtOjpCYXNpY0Jsb2NrICpuZXdCQiA9IGxsdm06OkJhc2ljQmxvY2s6OkNy ZWF0ZSgqZy0+Y3R4LCBuYW1lLCBsbHZtRnVuY3Rpb24pOwotICAgICBpZiAoaW5zZXJ0QWZ0ZXIp Ci0gICAgICAgICBuZXdCQi0+bW92ZUFmdGVyKGluc2VydEFmdGVyKTsKLUBAIC0xNDE2LDE0ICsx NDE3LDE1IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpJMVZlY1RvQm9vbFZl YyhsbHZtOjpWYWx1ZSAqYikgewotIAotICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7 IGkgPCBhdC0+Z2V0TnVtRWxlbWVudHMoKTsgKytpKSB7Ci0gICAgICAgICAgICAgbGx2bTo6VmFs dWUgKmVsdCA9IEV4dHJhY3RJbnN0KGIsIGkpOwotLSAgICAgICAgICAgIGxsdm06OlZhbHVlICpz ZXh0ID0gU3dpdGNoQm9vbFNpemUoZWx0LCBMTFZNVHlwZXM6OkJvb2xWZWN0b3JTdG9yYWdlVHlw ZSwgTExWTUdldE5hbWUoZWx0LCAiX3RvX2Jvb2x2ZWMiKSk7Ci0rICAgICAgICAgICAgbGx2bTo6 VmFsdWUgKnNleHQgPQotKyAgICAgICAgICAgICAgICBTd2l0Y2hCb29sU2l6ZShlbHQsIExMVk1U eXBlczo6Qm9vbFZlY3RvclN0b3JhZ2VUeXBlLCBsbHZtOjpUd2luZShlbHQtPmdldE5hbWUoKSkg KyAiX3RvX2Jvb2x2ZWMiKTsKLSAgICAgICAgICAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgc2V4 dCwgaSk7Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm4gcmV0OwotICAgICB9IGVsc2Ugewot ICAgICAgICAgLy8gRm9yIG5vbi1hcnJheSB0eXBlcywgY29udmVydCB0byAnTExWTVR5cGVzOjpC b29sVmVjdG9yVHlwZScgaWYKLSAgICAgICAgIC8vIG5lY2Vzc2FyeS4KLS0gICAgICAgIHJldHVy biBTd2l0Y2hCb29sU2l6ZShiLCBMTFZNVHlwZXM6OkJvb2xWZWN0b3JUeXBlLCBMTFZNR2V0TmFt ZShiLCAiX3RvX2Jvb2x2ZWMiKSk7Ci0rICAgICAgICByZXR1cm4gU3dpdGNoQm9vbFNpemUoYiwg TExWTVR5cGVzOjpCb29sVmVjdG9yVHlwZSwgbGx2bTo6VHdpbmUoYi0+Z2V0TmFtZSgpKSArICJf dG9fYm9vbHZlYyIpOwotICAgICB9Ci0gfQotIAotQEAgLTE1NjMsNyArMTU2NSw3IEBAIHN0YXRp YyBpbnQgbEFycmF5VmVjdG9yV2lkdGgobGx2bTo6VHlwZSAqdCkgewotIH0KLSAKLSBsbHZtOjpW YWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rp b246OkJpbmFyeU9wcyBpbnN0LCBsbHZtOjpWYWx1ZSAqdjAsIGxsdm06OlZhbHVlICp2MSwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodjAgPT0gTlVMTCB8fCB2 MSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3Vu dCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMTU3Myw3ICsxNTc1LDcgQEAgbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkJpbmFyeU9wZXJhdG9yKGxsdm06Okluc3Ry dWN0aW9uOjpCaW5hcnlPcHMgaW4KLSAgICAgbGx2bTo6VHlwZSAqdHlwZSA9IHYwLT5nZXRUeXBl KCk7Ci0gICAgIGludCBhcnJheVNpemUgPSBsQXJyYXlWZWN0b3JXaWR0aCh0eXBlKTsKLSAgICAg aWYgKGFycmF5U2l6ZSA9PSAwKSB7Ci0tICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqYm9wID0g bGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShpbnN0LCB2MCwgdjEsIG5hbWUgPyBuYW1lIDog IiIsIGJibG9jayk7Ci0rICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqYm9wID0gbGx2bTo6Qmlu YXJ5T3BlcmF0b3I6OkNyZWF0ZShpbnN0LCB2MCwgdjEsIG5hbWUsIGJibG9jayk7Ci0gICAgICAg ICBBZGREZWJ1Z1Bvcyhib3ApOwotICAgICAgICAgcmV0dXJuIGJvcDsKLSAgICAgfSBlbHNlIHsK LUBAIC0xNTkxLDcgKzE1OTMsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6 QmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkJpbmFyeU9wcyBpbgotICAgICB9Ci0g fQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpOb3RPcGVyYXRvcihsbHZt OjpWYWx1ZSAqdiwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVt aXRDb250ZXh0OjpOb3RPcGVyYXRvcihsbHZtOjpWYWx1ZSAqdiwgY29uc3QgbGx2bTo6VHdpbmUg Jm5hbWUpIHsKLSAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJl bnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotQEAgLTE2 MDMsMTQgKzE2MDUsMTQgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Ok5vdE9w ZXJhdG9yKGxsdm06OlZhbHVlICp2LCBjb25zdCBjaGFyICpuYW1lKQotICAgICBsbHZtOjpUeXBl ICp0eXBlID0gdi0+Z2V0VHlwZSgpOwotICAgICBpbnQgYXJyYXlTaXplID0gbEFycmF5VmVjdG9y V2lkdGgodHlwZSk7Ci0gICAgIGlmIChhcnJheVNpemUgPT0gMCkgewotLSAgICAgICAgbGx2bTo6 SW5zdHJ1Y3Rpb24gKmJpbnN0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZU5vdCh2LCBu YW1lID8gbmFtZSA6ICJub3QiLCBiYmxvY2spOwotKyAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24g KmJpbnN0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZU5vdCh2LCBuYW1lLmlzVHJpdmlh bGx5RW1wdHkoKSA/ICJub3QiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgICAgIEFkZERlYnVnUG9z KGJpbnN0KTsKLSAgICAgICAgIHJldHVybiBiaW5zdDsKLSAgICAgfSBlbHNlIHsKLSAgICAgICAg IGxsdm06OlZhbHVlICpyZXQgPSBsbHZtOjpVbmRlZlZhbHVlOjpnZXQodHlwZSk7Ci0gICAgICAg ICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgbGx2 bTo6VmFsdWUgKmEgPSBFeHRyYWN0SW5zdCh2LCBpKTsKLS0gICAgICAgICAgICBsbHZtOjpWYWx1 ZSAqb3AgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlTm90KGEsIG5hbWUgPyBuYW1lIDog Im5vdCIsIGJibG9jayk7Ci0rICAgICAgICAgICAgbGx2bTo6VmFsdWUgKm9wID0gbGx2bTo6Qmlu YXJ5T3BlcmF0b3I6OkNyZWF0ZU5vdChhLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICJub3Qi IDogbmFtZSwgYmJsb2NrKTsKLSAgICAgICAgICAgICBBZGREZWJ1Z1BvcyhvcCk7Ci0gICAgICAg ICAgICAgcmV0ID0gSW5zZXJ0SW5zdChyZXQsIG9wLCBpKTsKLSAgICAgICAgIH0KLUBAIC0xNjM4 LDcgKzE2NDAsNyBAQCBzdGF0aWMgbGx2bTo6VHlwZSAqbEdldE1hdGNoaW5nQm9vbFZlY3RvclR5 cGUobGx2bTo6VHlwZSAqdHlwZSkgewotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6Q21wSW5zdChsbHZtOjpJbnN0cnVjdGlvbjo6T3RoZXJPcHMgaW5zdCwgbGx2bTo6 Q21wSW5zdDo6UHJlZGljYXRlIHByZWQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnYwLCBsbHZtOjpWYWx1ZSAqdjEsIGNvbnN0IGNoYXIg Km5hbWUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZt OjpWYWx1ZSAqdjAsIGxsdm06OlZhbHVlICp2MSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsK LSAgICAgaWYgKHYwID09IE5VTEwgfHwgdjEgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9z KGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwot QEAgLTE2NDgsNyArMTY1MCw4IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpD bXBJbnN0KGxsdm06Okluc3RydWN0aW9uOjpPdGhlck9wcyBpbnN0LCBsbHZtCi0gICAgIGxsdm06 OlR5cGUgKnR5cGUgPSB2MC0+Z2V0VHlwZSgpOwotICAgICBpbnQgYXJyYXlTaXplID0gbEFycmF5 VmVjdG9yV2lkdGgodHlwZSk7Ci0gICAgIGlmIChhcnJheVNpemUgPT0gMCkgewotLSAgICAgICAg bGx2bTo6SW5zdHJ1Y3Rpb24gKmNpID0gbGx2bTo6Q21wSW5zdDo6Q3JlYXRlKGluc3QsIHByZWQs IHYwLCB2MSwgbmFtZSA/IG5hbWUgOiAiY21wIiwgYmJsb2NrKTsKLSsgICAgICAgIGxsdm06Oklu c3RydWN0aW9uICpjaSA9Ci0rICAgICAgICAgICAgbGx2bTo6Q21wSW5zdDo6Q3JlYXRlKGluc3Qs IHByZWQsIHYwLCB2MSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAiY21wIiA6IG5hbWUsIGJi bG9jayk7Ci0gICAgICAgICBBZGREZWJ1Z1BvcyhjaSk7Ci0gICAgICAgICByZXR1cm4gY2k7Ci0g ICAgIH0gZWxzZSB7Ci1AQCAtMTY1NywxNCArMTY2MCwxNCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6Q21wSW5zdChsbHZtOjpJbnN0cnVjdGlvbjo6T3RoZXJPcHMgaW5zdCwg bGx2bQotICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkgewotICAg ICAgICAgICAgIGxsdm06OlZhbHVlICphID0gRXh0cmFjdEluc3QodjAsIGkpOwotICAgICAgICAg ICAgIGxsdm06OlZhbHVlICpiID0gRXh0cmFjdEluc3QodjEsIGkpOwotLSAgICAgICAgICAgIGxs dm06OlZhbHVlICpvcCA9IENtcEluc3QoaW5zdCwgcHJlZCwgYSwgYiwgbmFtZSk7Ci0rICAgICAg ICAgICAgbGx2bTo6VmFsdWUgKm9wID0gQ21wSW5zdChpbnN0LCBwcmVkLCBhLCBiLCBuYW1lLmlz VHJpdmlhbGx5RW1wdHkoKSA/ICJjbXAiIDogbmFtZSk7Ci0gICAgICAgICAgICAgcmV0ID0gSW5z ZXJ0SW5zdChyZXQsIG9wLCBpKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiByZXQ7Ci0g ICAgIH0KLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlNtZWFyVW5p Zm9ybShsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1 ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U21lYXJVbmlmb3JtKGxsdm06OlZhbHVlICp2YWx1ZSwg Y29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAg ICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAg ICByZXR1cm4gTlVMTDsKLUBAIC0xNzA0LDIxICsxNzA3LDE5IEBAIGxsdm06OlZhbHVlICpGdW5j dGlvbkVtaXRDb250ZXh0OjpTbWVhclVuaWZvcm0obGx2bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBj aGFyICpuCi0gICAgIHJldHVybiByZXQ7Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVt aXRDb250ZXh0OjpCaXRDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5 cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4 dDo6Qml0Q2FzdEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25z dCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAg ICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJl dHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICBu YW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfYml0Y2FzdCIpOwotLQotLSAgICBsbHZtOjpJbnN0 cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpCaXRDYXN0SW5zdCh2YWx1ZSwgdHlwZSwgbmFtZSwg YmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6Qml0Q2Fz dEluc3QoCi0rICAgICAgICB2YWx1ZSwgdHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBs bHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfYml0Y2FzdCIgOiBuYW1lLCBiYmxvY2sp OwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpQdHJUb0ludEluc3QobGx2bTo6VmFsdWUg KnZhbHVlLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IGxsdm06OlR3aW5l ICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3Mo Y3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1A QCAtMTcyOCwyMyArMTcyOSwxOSBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6 UHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgY2hhciAqbgotICAgICAgICAg Ly8gbm8tb3AgZm9yIHZhcnlpbmcgcG9pbnRlcnM7IHRoZXkncmUgYWxyZWFkeSB2ZWN0b3JzIG9m IGludHMKLSAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkK LS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9wdHIyaW50Iik7Ci0gICAgIGxs dm06OlR5cGUgKnR5cGUgPSBMTFZNVHlwZXM6OlBvaW50ZXJJbnRUeXBlOwotLSAgICBsbHZtOjpJ bnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpQdHJUb0ludEluc3QodmFsdWUsIHR5cGUsIG5h bWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OlB0 clRvSW50SW5zdCgKLSsgICAgICAgIHZhbHVlLCB0eXBlLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHko KSA/IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9wdHIyaW50IiA6IG5hbWUsIGJi bG9jayk7Ci0gICAgIEFkZERlYnVnUG9zKGluc3QpOwotICAgICByZXR1cm4gaW5zdDsKLSB9Ci0g Ci0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlB0clRvSW50SW5zdChsbHZtOjpW YWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpQdHJUb0ludEluc3QobGx2bTo6VmFsdWUg KnZhbHVlLCBsbHZtOjpUeXBlICp0b1R5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0g ICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywg bS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0g ICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwg Il9wdHIyaW50Iik7Ci0tCi0gICAgIGxsdm06OlR5cGUgKmZyb21UeXBlID0gdmFsdWUtPmdldFR5 cGUoKTsKLSAgICAgaWYgKGxsdm06OmlzYTxsbHZtOjpWZWN0b3JUeXBlPihmcm9tVHlwZSkpIHsK LSAgICAgICAgIC8vIHZhcnlpbmcgcG9pbnRlcgotQEAgLTE3NTIsMjcgKzE3NDksMjYgQEAgbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAq dmFsdWUsIGxsdm06OlR5cGUgKnQKLSAgICAgICAgICAgICAvLyBhbHJlYWR5IHRoZSByaWdodCB0 eXBlLS1kb25lCi0gICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICAgZWxzZSBpZiAo ZnJvbVR5cGUtPmdldFNjYWxhclNpemVJbkJpdHMoKSA+IHRvVHlwZS0+Z2V0U2NhbGFyU2l6ZUlu Qml0cygpKQotLSAgICAgICAgICAgIHJldHVybiBUcnVuY0luc3QodmFsdWUsIHRvVHlwZSwgbmFt ZSk7Ci0rICAgICAgICAgICAgcmV0dXJuIFRydW5jSW5zdCh2YWx1ZSwgdG9UeXBlLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpU d2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfcHRyMmludCIgOiBuYW1lKTsKLSAgICAgICAgIGVs c2UgewotICAgICAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBmcm9tVHlwZS0+Z2V0U2Nh bGFyU2l6ZUluQml0cygpIDwgdG9UeXBlLT5nZXRTY2FsYXJTaXplSW5CaXRzKCkpOwotLSAgICAg ICAgICAgIHJldHVybiBaRXh0SW5zdCh2YWx1ZSwgdG9UeXBlLCBuYW1lKTsKLSsgICAgICAgICAg ICByZXR1cm4gWkV4dEluc3QodmFsdWUsIHRvVHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkg PyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfcHRyMmludCIgOiBuYW1lKTsKLSAg ICAgICAgIH0KLSAgICAgfQotIAotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBs bHZtOjpQdHJUb0ludEluc3QodmFsdWUsIHRvVHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2 bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6UHRyVG9JbnRJbnN0KAotKyAgICAgICAg dmFsdWUsIHRvVHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1 ZS0+Z2V0TmFtZSgpKSArICJfcHRyMmludCIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1 Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5j dGlvbkVtaXRDb250ZXh0OjpJbnRUb1B0ckluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpU eXBlICp0b1R5cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25F bWl0Q29udGV4dDo6SW50VG9QdHJJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAq dG9UeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUgPT0gTlVM TCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsK LSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwp Ci0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfaW50MnB0ciIpOwotLQotICAg ICBsbHZtOjpUeXBlICpmcm9tVHlwZSA9IHZhbHVlLT5nZXRUeXBlKCk7Ci0gICAgIGlmIChsbHZt Ojppc2E8bGx2bTo6VmVjdG9yVHlwZT4oZnJvbVR5cGUpKSB7Ci0gICAgICAgICAvLyB2YXJ5aW5n IHBvaW50ZXIKLUBAIC0xNzgwLDk1ICsxNzc2LDg3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVt aXRDb250ZXh0OjpJbnRUb1B0ckluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0 Ci0gICAgICAgICAgICAgLy8gZG9uZQotICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAg ICAgIGVsc2UgaWYgKGZyb21UeXBlLT5nZXRTY2FsYXJTaXplSW5CaXRzKCkgPiB0b1R5cGUtPmdl dFNjYWxhclNpemVJbkJpdHMoKSkKLS0gICAgICAgICAgICByZXR1cm4gVHJ1bmNJbnN0KHZhbHVl LCB0b1R5cGUsIG5hbWUpOwotKyAgICAgICAgICAgIHJldHVybiBUcnVuY0luc3QodmFsdWUsIHRv VHlwZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlFbXB0 eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX2ludDJwdHIiIDogbmFtZSk7 Ci0gICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgZnJv bVR5cGUtPmdldFNjYWxhclNpemVJbkJpdHMoKSA8IHRvVHlwZS0+Z2V0U2NhbGFyU2l6ZUluQml0 cygpKTsKLS0gICAgICAgICAgICByZXR1cm4gWkV4dEluc3QodmFsdWUsIHRvVHlwZSwgbmFtZSk7 Ci0rICAgICAgICAgICAgcmV0dXJuIFpFeHRJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUuaXNUcml2 aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX2ludDJwdHIi IDogbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgIH0KLSAKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24g Kmluc3QgPSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUsIGJibG9j ayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OkludFRvUHRySW5z dCgKLSsgICAgICAgIHZhbHVlLCB0b1R5cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gbGx2 bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX2ludDJwdHIiIDogbmFtZSwgYmJsb2NrKTsK LSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVybiBpbnN0OwotIH0KLSAKLS1sbHZt OjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6VHJ1bmNJbnN0KGxsdm06OlZhbHVl ICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06Oklu c3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpUcnVuY0luc3QobGx2bTo6VmFsdWUgKnZh bHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBp ZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVy cm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlm IChuYW1lID09IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfdHJ1 bmMiKTsKLS0KLSAgICAgLy8gVE9ETzogd2Ugc2hvdWxkIHByb2JhYmx5IGhhbmRsZSB0aGUgYXJy YXkgY2FzZSBhcyBpbgotICAgICAvLyBlLmcuIEJpdENhc3RJbnN0KCksIGJ1dCB3ZSBkb24ndCBj dXJyZW50bHkgbmVlZCB0aGF0IGZ1bmN0aW9uYWxpdHkKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24g Kmluc3QgPSBuZXcgbGx2bTo6VHJ1bmNJbnN0KHZhbHVlLCB0eXBlLCBuYW1lLCBiYmxvY2spOwot KyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpUcnVuY0luc3QoCi0rICAg ICAgICB2YWx1ZSwgdHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2 YWx1ZS0+Z2V0TmFtZSgpKSArICJfdHJ1bmMiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVi dWdQb3MoaW5zdCk7Ci0gICAgIHJldHVybiBpbnN0OwotIH0KLSAKLSBsbHZtOjpJbnN0cnVjdGlv biAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q2FzdEluc3QobGx2bTo6SW5zdHJ1Y3Rpb246OkNhc3RP cHMgb3AsIGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkg ewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAg ICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJl dHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICBu YW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfY2FzdCIpOwotLQotICAgICAvLyBUT0RPOiB3ZSBz aG91bGQgcHJvYmFibHkgaGFuZGxlIHRoZSBhcnJheSBjYXNlIGFzIGluCi0gICAgIC8vIGUuZy4g Qml0Q2FzdEluc3QoKSwgYnV0IHdlIGRvbid0IGN1cnJlbnRseSBuZWVkIHRoYXQgZnVuY3Rpb25h bGl0eQotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IGxsdm06OkNhc3RJbnN0OjpDcmVh dGUob3AsIHZhbHVlLCB0eXBlLCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpJbnN0cnVjdGlv biAqaW5zdCA9IGxsdm06OkNhc3RJbnN0OjpDcmVhdGUoCi0rICAgICAgICBvcCwgdmFsdWUsIHR5 cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUo KSkgKyAiX2Nhc3QiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0g ICAgIHJldHVybiBpbnN0OwotIH0KLSAKLS1sbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6RlBDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUs IGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29u dGV4dDo6RlBDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNv bnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAg ICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAg cmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAg IG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9jYXN0Iik7Ci0tCi0gICAgIC8vIFRPRE86IHdl IHNob3VsZCBwcm9iYWJseSBoYW5kbGUgdGhlIGFycmF5IGNhc2UgYXMgaW4KLSAgICAgLy8gZS5n LiBCaXRDYXN0SW5zdCgpLCBidXQgd2UgZG9uJ3QgY3VycmVudGx5IG5lZWQgdGhhdCBmdW5jdGlv bmFsaXR5Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6Q2FzdEluc3Q6OkNy ZWF0ZUZQQ2FzdCh2YWx1ZSwgdHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1 Y3Rpb24gKmluc3QgPSBsbHZtOjpDYXN0SW5zdDo6Q3JlYXRlRlBDYXN0KAotKyAgICAgICAgdmFs dWUsIHR5cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdl dE5hbWUoKSkgKyAiX2Nhc3QiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoaW5z dCk7Ci0gICAgIHJldHVybiBpbnN0OwotIH0KLSAKLS1sbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rp b25FbWl0Q29udGV4dDo6U0V4dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0 eXBlLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6SW5zdHJ1Y3Rpb24gKkZ1bmN0aW9uRW1p dENvbnRleHQ6OlNFeHRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwg Y29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAg ICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAg ICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKQotLSAgICAg ICAgbmFtZSA9IExMVk1HZXROYW1lKHZhbHVlLCAiX3NleHQiKTsKLS0KLSAgICAgLy8gVE9ETzog d2Ugc2hvdWxkIHByb2JhYmx5IGhhbmRsZSB0aGUgYXJyYXkgY2FzZSBhcyBpbgotICAgICAvLyBl LmcuIEJpdENhc3RJbnN0KCksIGJ1dCB3ZSBkb24ndCBjdXJyZW50bHkgbmVlZCB0aGF0IGZ1bmN0 aW9uYWxpdHkKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6U0V4dElu c3QodmFsdWUsIHR5cGUsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICpp bnN0ID0gbmV3IGxsdm06OlNFeHRJbnN0KAotKyAgICAgICAgdmFsdWUsIHR5cGUsIG5hbWUuaXNU cml2aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX3NleHQi IDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVybiBp bnN0OwotIH0KLSAKLS1sbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6WkV4 dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBjaGFyICpu YW1lKSB7Ci0rbGx2bTo6SW5zdHJ1Y3Rpb24gKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlpFeHRJbnN0 KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUg Jm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhj dXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSAg ICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKQotLSAgICAgICAgbmFtZSA9IExMVk1HZXRO YW1lKHZhbHVlLCAiX3pleHQiKTsKLS0KLSAgICAgLy8gVE9ETzogd2Ugc2hvdWxkIHByb2JhYmx5 IGhhbmRsZSB0aGUgYXJyYXkgY2FzZSBhcyBpbgotICAgICAvLyBlLmcuIEJpdENhc3RJbnN0KCks IGJ1dCB3ZSBkb24ndCBjdXJyZW50bHkgbmVlZCB0aGF0IGZ1bmN0aW9uYWxpdHkKLS0gICAgbGx2 bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6WkV4dEluc3QodmFsdWUsIHR5cGUsIG5h bWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OlpF eHRJbnN0KAotKyAgICAgICAgdmFsdWUsIHR5cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8g bGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX3pleHQiIDogbmFtZSwgYmJsb2NrKTsK LSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVybiBpbnN0OwotIH0KLUBAIC0xOTEz LDE0ICsxOTAxLDE1IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjphcHBseVZh cnlpbmdHRVAobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGxsdm06OlZhCi0gICAgICAgICBzY2FsZSA9 IFNtZWFyVW5pZm9ybShzY2FsZSk7Ci0gICAgICAgICBBc3NlcnQoaW5kZXggIT0gTlVMTCk7Ci0g ICAgICAgICAvLyBvZmZzZXQgPSBpbmRleCAqIHNjYWxlCi0tICAgICAgICBvZmZzZXQgPSBCaW5h cnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCBzY2FsZSwgaW5kZXgsIExMVk1HZXRO YW1lKCJtdWwiLCBzY2FsZSwgaW5kZXgpKTsKLSsgICAgICAgIG9mZnNldCA9IEJpbmFyeU9wZXJh dG9yKGxsdm06Okluc3RydWN0aW9uOjpNdWwsIHNjYWxlLCBpbmRleCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgobGx2bTo6VHdpbmUoIm11bF8iKSArIHNjYWxlLT5nZXROYW1l KCkpICsgIl8iKSArIGluZGV4LT5nZXROYW1lKCkpOwotICAgICB9Ci0gCi0gICAgIC8vIEZvciA2 NC1iaXQgdGFyZ2V0cywgaWYgd2UndmUgYmVlbiBkb2luZyBvdXIgb2Zmc2V0IGNhbGN1bGF0aW9u cyBpbgotICAgICAvLyAzMiBiaXRzLCB3ZSBzdGlsbCBoYXZlIHRvIGNvbnZlcnQgdG8gYSA2NC1i aXQgdmFsdWUgYmVmb3JlIHdlCi0gICAgIC8vIGFjdHVhbGx5IGFkZCB0aGUgb2Zmc2V0IHRvIHRo ZSBwb2ludGVyLgotICAgICBpZiAoZy0+dGFyZ2V0LT5pczMyQml0KCkgPT0gZmFsc2UgJiYgZy0+ b3B0LmZvcmNlMzJCaXRBZGRyZXNzaW5nID09IHRydWUpCi0tICAgICAgICBvZmZzZXQgPSBTRXh0 SW5zdChvZmZzZXQsIExMVk1UeXBlczo6SW50NjRWZWN0b3JUeXBlLCBMTFZNR2V0TmFtZShvZmZz ZXQsICJfdG9fNjQiKSk7Ci0rICAgICAgICBvZmZzZXQgPSBTRXh0SW5zdChvZmZzZXQsIExMVk1U eXBlczo6SW50NjRWZWN0b3JUeXBlLCBsbHZtOjpUd2luZShvZmZzZXQtPmdldE5hbWUoKSkgKyAi X3RvXzY0Iik7Ci0gCi0gICAgIC8vIFNtZWFyIG91dCB0aGUgcG9pbnRlciB0byBiZSB2YXJ5aW5n OyBlaXRoZXIgdGhlIGJhc2UgcG9pbnRlciBvciB0aGUKLSAgICAgLy8gaW5kZXggbXVzdCBiZSB2 YXJ5aW5nIGZvciB0aGlzIG1ldGhvZCB0byBiZSBjYWxsZWQuCi1AQCAtMTkyOSw3ICsxOTE4LDcg QEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OmFwcGx5VmFyeWluZ0dFUChsbHZt OjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6VmEKLSAgICAgbGx2bTo6VmFsdWUgKnZhcnlpbmdQdHIg PSBiYXNlSXNVbmlmb3JtID8gU21lYXJVbmlmb3JtKGJhc2VQdHIpIDogYmFzZVB0cjsKLSAKLSAg ICAgLy8gbmV3UHRyID0gcHRyICsgb2Zmc2V0Ci0tICAgIHJldHVybiBCaW5hcnlPcGVyYXRvcihs bHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2YXJ5aW5nUHRyLCBvZmZzZXQsIExMVk1HZXROYW1lKGJh c2VQdHIsICJfb2Zmc2V0IikpOwotKyAgICByZXR1cm4gQmluYXJ5T3BlcmF0b3IobGx2bTo6SW5z dHJ1Y3Rpb246OkFkZCwgdmFyeWluZ1B0ciwgb2Zmc2V0LCBsbHZtOjpUd2luZShiYXNlUHRyLT5n ZXROYW1lKCkpICsgIl9vZmZzZXQiKTsKLSB9Ci0gCi0gdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0 OjpNYXRjaEludGVnZXJUeXBlcyhsbHZtOjpWYWx1ZSAqKnYwLCBsbHZtOjpWYWx1ZSAqKnYxKSB7 Ci1AQCAtMjAwNiwxMyArMTk5NSwxMyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4 dDo6TWFrZVNsaWNlUG9pbnRlcihsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZQotICAgICBs bHZtOjpTdHJ1Y3RUeXBlICpzdCA9IGxsdm06OlN0cnVjdFR5cGU6OmdldCgqZy0+Y3R4LCBlbHRU eXBlcyk7Ci0gCi0gICAgIGxsdm06OlZhbHVlICpyZXQgPSBsbHZtOjpVbmRlZlZhbHVlOjpnZXQo c3QpOwotLSAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgcHRyLCAwLCBMTFZNR2V0TmFtZShyZXQs ICJfc2xpY2VfcHRyIikpOwotLSAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgb2Zmc2V0LCAxLCBM TFZNR2V0TmFtZShyZXQsICJfc2xpY2Vfb2Zmc2V0IikpOwotKyAgICByZXQgPSBJbnNlcnRJbnN0 KHJldCwgcHRyLCAwLCBsbHZtOjpUd2luZShyZXQtPmdldE5hbWUoKSkgKyAiX3NsaWNlX3B0ciIp OwotKyAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgb2Zmc2V0LCAxLCBsbHZtOjpUd2luZShyZXQt PmdldE5hbWUoKSkgKyAiX3NsaWNlX29mZnNldCIpOwotICAgICByZXR1cm4gcmV0OwotIH0KLSAK LSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0RWxlbWVudFB0ckluc3QobGx2 bTo6VmFsdWUgKmJhc2VQdHIsIGxsdm06OlZhbHVlICppbmRleCwgY29uc3QgVHlwZSAqcHRyUmVm VHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAo YmFzZVB0ciA9PSBOVUxMIHx8IGluZGV4ID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhj dXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBA IC0yMDY1LDggKzIwNTQsOCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0 RWxlbWVudFB0ckluc3QobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGxsdm06OgotICAgICAgICAgLy8g dW5pZm9ybSwgc28ganVzdCBlbWl0IHRoZSByZWd1bGFyIExMVk0gR0VQIGluc3RydWN0aW9uCi0g ICAgICAgICBsbHZtOjpWYWx1ZSAqaW5kWzFdID0ge2luZGV4fTsKLSAgICAgICAgIGxsdm06OkFy cmF5UmVmPGxsdm06OlZhbHVlICo+IGFycmF5UmVmKCZpbmRbMF0sICZpbmRbMV0pOwotLSAgICAg ICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPQotLSAgICAgICAgICAgIGxsdm06OkdldEVsZW1l bnRQdHJJbnN0OjpDcmVhdGUoUFRZUEUoYmFzZVB0ciksIGJhc2VQdHIsIGFycmF5UmVmLCBuYW1l ID8gbmFtZSA6ICJnZXAiLCBiYmxvY2spOwotKyAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmlu c3QgPSBsbHZtOjpHZXRFbGVtZW50UHRySW5zdDo6Q3JlYXRlKFBUWVBFKGJhc2VQdHIpLCBiYXNl UHRyLCBhcnJheVJlZiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICJnZXAi IDogbmFtZSwgYmJsb2NrKTsKLSAgICAgICAgIEFkZERlYnVnUG9zKGluc3QpOwotICAgICAgICAg cmV0dXJuIGluc3Q7Ci0gICAgIH0gZWxzZQotQEAgLTIwNzQsNyArMjA2Myw3IEBAIGxsdm06OlZh bHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAq YmFzZVB0ciwgbGx2bTo6Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0 OjpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6VmFsdWUgKmlu ZGV4MCwgbGx2bTo6VmFsdWUgKmluZGV4MSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHlwZSAqcHRyUmVmVHlwZSwgY29uc3QgY2hh ciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBUeXBlICpwdHJSZWZUeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkg ewotICAgICBpZiAoYmFzZVB0ciA9PSBOVUxMIHx8IGluZGV4MCA9PSBOVUxMIHx8IGluZGV4MSA9 PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+ IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMjExNCw4ICsyMTAzLDggQEAgbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEVsZW1lbnRQdHJJbnN0KGxsdm06OlZhbHVl ICpiYXNlUHRyLCBsbHZtOjoKLSAgICAgICAgIC8vIHVuaWZvcm0sIHNvIGp1c3QgZW1pdCB0aGUg cmVndWxhciBMTFZNIEdFUCBpbnN0cnVjdGlvbgotICAgICAgICAgbGx2bTo6VmFsdWUgKmluZGlj ZXNbMl0gPSB7aW5kZXgwLCBpbmRleDF9OwotICAgICAgICAgbGx2bTo6QXJyYXlSZWY8bGx2bTo6 VmFsdWUgKj4gYXJyYXlSZWYoJmluZGljZXNbMF0sICZpbmRpY2VzWzJdKTsKLS0gICAgICAgIGxs dm06Okluc3RydWN0aW9uICppbnN0ID0KLS0gICAgICAgICAgICBsbHZtOjpHZXRFbGVtZW50UHRy SW5zdDo6Q3JlYXRlKFBUWVBFKGJhc2VQdHIpLCBiYXNlUHRyLCBhcnJheVJlZiwgbmFtZSA/IG5h bWUgOiAiZ2VwIiwgYmJsb2NrKTsKLSsgICAgICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0g bGx2bTo6R2V0RWxlbWVudFB0ckluc3Q6OkNyZWF0ZShQVFlQRShiYXNlUHRyKSwgYmFzZVB0ciwg YXJyYXlSZWYsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAiZ2VwIiA6IG5h bWUsIGJibG9jayk7Ci0gICAgICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgICAgIHJldHVy biBpbnN0OwotICAgICB9IGVsc2UgewotQEAgLTIxMzgsNyArMjEyNyw3IEBAIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFz ZVB0ciwgbGx2bTo6Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpB ZGRFbGVtZW50T2Zmc2V0KGxsdm06OlZhbHVlICpmdWxsQmFzZVB0ciwgaW50IGVsZW1lbnROdW0s IGNvbnN0IFR5cGUgKnB0clJlZlR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgUG9pbnRlclR5cGUg KipyZXN1bHRQdHJUeXBlKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsIGNvbnN0IFBvaW50ZXJUeXBl ICoqcmVzdWx0UHRyVHlwZSkgewotICAgICBpZiAocmVzdWx0UHRyVHlwZSAhPSBOVUxMKQotICAg ICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIHB0clJlZlR5cGUgIT0gTlVMTCk7Ci0gCi1AQCAt MjE5NSw4ICsyMTg0LDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFkZEVs ZW1lbnRPZmZzZXQobGx2bTo6VmFsdWUgKmZ1bGxCYXNlUHRyLCBpbnQKLSAgICAgICAgIC8vIElm IHRoZSBwb2ludGVyIGlzIHVuaWZvcm0sIHdlIGNhbiB1c2UgdGhlIHJlZ3VsYXIgTExWTSBHRVAu Ci0gICAgICAgICBsbHZtOjpWYWx1ZSAqb2Zmc2V0c1syXSA9IHtMTFZNSW50MzIoMCksIExMVk1J bnQzMihlbGVtZW50TnVtKX07Ci0gICAgICAgICBsbHZtOjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAq PiBhcnJheVJlZigmb2Zmc2V0c1swXSwgJm9mZnNldHNbMl0pOwotLSAgICAgICAgcmVzdWx0UHRy ID0KLS0gICAgICAgICAgICBsbHZtOjpHZXRFbGVtZW50UHRySW5zdDo6Q3JlYXRlKFBUWVBFKGJh c2VQdHIpLCBiYXNlUHRyLCBhcnJheVJlZiwgbmFtZSA/IG5hbWUgOiAic3RydWN0X29mZnNldCIs IGJibG9jayk7Ci0rICAgICAgICByZXN1bHRQdHIgPSBsbHZtOjpHZXRFbGVtZW50UHRySW5zdDo6 Q3JlYXRlKFBUWVBFKGJhc2VQdHIpLCBiYXNlUHRyLCBhcnJheVJlZiwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVt cHR5KCkgPyAic3RydWN0X29mZnNldCIgOiBuYW1lLCBiYmxvY2spOwotICAgICB9IGVsc2Ugewot ICAgICAgICAgLy8gT3RoZXJ3aXNlIGRvIHRoZSBtYXRoIHRvIGZpbmQgdGhlIG9mZnNldCBhbmQg YWRkIGl0IHRvIHRoZSBnaXZlbgotICAgICAgICAgLy8gdmFyeWluZyBwb2ludGVycwotQEAgLTIy MzcsNyArMjIyNiw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBZGRFbGVt ZW50T2Zmc2V0KGxsdm06OlZhbHVlICpmdWxsQmFzZVB0ciwgaW50Ci0gICAgICAgICByZXR1cm4g cmVzdWx0UHRyOwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U3dp dGNoQm9vbFNpemUobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0b1R5cGUsIGNvbnN0 IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U3dpdGNo Qm9vbFNpemUobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0b1R5cGUsIGNvbnN0IGxs dm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICgodmFsdWUgPT0gTlVMTCkgfHwgKHRvVHlwZSA9 PSBOVUxMKSkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQg PiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotQEAgLTIyNDgsMjAgKzIyMzcsMTggQEAgbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlN3aXRjaEJvb2xTaXplKGxsdm06OlZhbHVl ICp2YWx1ZSwgbGx2bTo6VHlwZQotICAgICBsbHZtOjpWYWx1ZSAqbmV3Qm9vbCA9IHZhbHVlOwot ICAgICBpZiAoZy0+dGFyZ2V0LT5nZXREYXRhTGF5b3V0KCktPmdldFR5cGVTaXplSW5CaXRzKGZy b21UeXBlKSA+Ci0gICAgICAgICBnLT50YXJnZXQtPmdldERhdGFMYXlvdXQoKS0+Z2V0VHlwZVNp emVJbkJpdHModG9UeXBlKSkgewotLSAgICAgICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAg ICAgICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfc3dpdGNoQm9vbCIpOwotLSAgICAgICAg bmV3Qm9vbCA9IFRydW5jSW5zdCh2YWx1ZSwgdG9UeXBlLCBuYW1lKTsKLSsgICAgICAgIG5ld0Jv b2wgPQotKyAgICAgICAgICAgIFRydW5jSW5zdCh2YWx1ZSwgdG9UeXBlLCBuYW1lLmlzVHJpdmlh bGx5RW1wdHkoKSA/IChsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfc3dpdGNoQm9v bCIpIDogbmFtZSk7Ci0gICAgIH0gZWxzZSBpZiAoZy0+dGFyZ2V0LT5nZXREYXRhTGF5b3V0KCkt PmdldFR5cGVTaXplSW5CaXRzKGZyb21UeXBlKSA8Ci0gICAgICAgICAgICAgICAgZy0+dGFyZ2V0 LT5nZXREYXRhTGF5b3V0KCktPmdldFR5cGVTaXplSW5CaXRzKHRvVHlwZSkpIHsKLS0gICAgICAg IGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHZhbHVl LCAiX3N3aXRjaEJvb2wiKTsKLS0gICAgICAgIG5ld0Jvb2wgPSBTRXh0SW5zdCh2YWx1ZSwgdG9U eXBlLCBuYW1lKTsKLSsgICAgICAgIG5ld0Jvb2wgPQotKyAgICAgICAgICAgIFNFeHRJbnN0KHZh bHVlLCB0b1R5cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHZhbHVl LT5nZXROYW1lKCkpICsgIl9zd2l0Y2hCb29sIikgOiBuYW1lKTsKLSAgICAgfQotIAotICAgICBy ZXR1cm4gbmV3Qm9vbDsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFR5cGUgKnR5cGUsIGNvbnN0IGNoYXIg Km5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2 bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUp IHsKLSAgICAgaWYgKHB0ciA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBv cywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMjI3MCwx MyArMjI1NywxMyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TG9hZEluc3Qo bGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqdHlwZSwgYwotICAgICBsbHZtOjpQb2ludGVy VHlwZSAqcHQgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpQb2ludGVyVHlwZT4ocHRyLT5nZXRUeXBl KCkpOwotICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgcHQgIT0gTlVMTCk7Ci0gCi0tICAgIGlm IChuYW1lID09IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUocHRyLCAiX2xvYWQi KTsKLS0KLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLS0gICAgbGx2 bTo6TG9hZEluc3QgKmluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3QocHQtPmdldFBvaW50ZXJFbGVt ZW50VHlwZSgpLCBwdHIsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06OkxvYWRJbnN0ICppbnN0 ID0KLSsgICAgICAgIG5ldyBsbHZtOjpMb2FkSW5zdChwdC0+Z2V0UG9pbnRlckVsZW1lbnRUeXBl KCksIHB0ciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1w dHkoKSA/IChsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkgKyAiX2xvYWQiKSA6IG5hbWUsIGJi bG9jayk7Ci0gI2Vsc2UKLS0gICAgbGx2bTo6TG9hZEluc3QgKmluc3QgPSBuZXcgbGx2bTo6TG9h ZEluc3QocHRyLCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpMb2FkSW5zdCAqaW5zdCA9Ci0r ICAgICAgICBuZXcgbGx2bTo6TG9hZEluc3QocHRyLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ IChsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkgKyAiX2xvYWQiKSA6IG5hbWUsIGJibG9jayk7 Ci0gI2VuZGlmCi0gCi0gICAgIGlmIChnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5ICYmIGxsdm06 OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHB0LT5nZXRFbGVtZW50VHlwZSgpKSkgewotQEAg LTIzMDcsOCArMjI5NCw4IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2Fk SW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBUeXBlICp0eXBlLCBjCi0gc3RhdGljIGxsdm06 OlZhbHVlICpsRmluYWxTbGljZU9mZnNldChGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgsIGxsdm06 OlZhbHVlICpwdHIsIGNvbnN0IFBvaW50ZXJUeXBlICoqcHRyVHlwZSkgewotICAgICBBc3NlcnQo Q2FzdFR5cGU8UG9pbnRlclR5cGU+KCpwdHJUeXBlKSAhPSBOVUxMKTsKLSAKLS0gICAgbGx2bTo6 VmFsdWUgKnNsaWNlUHRyID0gY3R4LT5FeHRyYWN0SW5zdChwdHIsIDAsIExMVk1HZXROYW1lKHB0 ciwgIl9wdHIiKSk7Ci0tICAgIGxsdm06OlZhbHVlICpzbGljZU9mZnNldCA9IGN0eC0+RXh0cmFj dEluc3QocHRyLCAxLCBMTFZNR2V0TmFtZShwdHIsICJfb2Zmc2V0IikpOwotKyAgICBsbHZtOjpW YWx1ZSAqc2xpY2VQdHIgPSBjdHgtPkV4dHJhY3RJbnN0KHB0ciwgMCwgbGx2bTo6VHdpbmUocHRy LT5nZXROYW1lKCkpICsgIl9wdHIiKTsKLSsgICAgbGx2bTo6VmFsdWUgKnNsaWNlT2Zmc2V0ID0g Y3R4LT5FeHRyYWN0SW5zdChwdHIsIDEsIGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJf b2Zmc2V0Iik7Ci0gCi0gICAgIC8vIHNsaWNlUHRyIHNob3VsZCBiZSBhIHBvaW50ZXIgdG8gYW4g c29hLXdpZHRoIHdpZGUgYXJyYXkgb2YgdGhlCi0gICAgIC8vIGZpbmFsIGF0b21pYy9lbnVtL3Bv aW50ZXIgdHlwZQotQEAgLTIzMjcsMTQgKzIzMTQsMTQgQEAgc3RhdGljIGxsdm06OlZhbHVlICps RmluYWxTbGljZU9mZnNldChGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgsIGxsdm06OlZhbHVlICpw dHIKLSAgICAgICAgIHNsaWNlUHRyID0gY3R4LT5CaXRDYXN0SW5zdChzbGljZVB0ciwgKCpwdHJU eXBlKS0+TExWTVR5cGUoZy0+Y3R4KSk7Ci0gCi0gICAgIC8vIEFuZCBmaW5hbGx5IGluZGV4IGJh c2VkIG9uIHRoZSBzbGljZSBvZmZzZXQKLS0gICAgcmV0dXJuIGN0eC0+R2V0RWxlbWVudFB0cklu c3Qoc2xpY2VQdHIsIHNsaWNlT2Zmc2V0LCAqcHRyVHlwZSwgTExWTUdldE5hbWUoc2xpY2VQdHIs ICJfZmluYWxfZ2VwIikpOwotKyAgICByZXR1cm4gY3R4LT5HZXRFbGVtZW50UHRySW5zdChzbGlj ZVB0ciwgc2xpY2VPZmZzZXQsICpwdHJUeXBlLCBsbHZtOjpUd2luZShzbGljZVB0ci0+Z2V0TmFt ZSgpKSArICJfZmluYWxfZ2VwIik7Ci0gfQotIAotIC8qKiBVdGlsaXR5IHJvdXRpbmUgdGhhdCBs b2FkcyBmcm9tIGEgdW5pZm9ybSBwb2ludGVyIHRvIHNvYTw+IGRhdGEsCi0gICAgIHJldHVybmlu ZyBhIHJlZ3VsYXIgdW5pZm9ybSAobm9uLVNPQSByZXN1bHQpLgotICAqLwotIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0Ojpsb2FkVW5pZm9ybUZyb21TT0EobGx2bTo6VmFsdWUgKnB0 ciwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IFBvaW50ZXJUeXBlICpwdHJUeXBlLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgY29uc3QgVHlwZSAqdW5p ZlR5cGUgPSBwdHJUeXBlLT5HZXRCYXNlVHlwZSgpLT5HZXRBc1VuaWZvcm1UeXBlKCk7Ci0gCi0g ICAgIGNvbnN0IENvbGxlY3Rpb25UeXBlICpjdCA9IENhc3RUeXBlPENvbGxlY3Rpb25UeXBlPihw dHJUeXBlLT5HZXRCYXNlVHlwZSgpKTsKLUBAIC0yMzYzLDcgKzIzNTAsNyBAQCBsbHZtOjpWYWx1 ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6bG9hZFVuaWZvcm1Gcm9tU09BKGxsdm06OlZhbHVlICpw dHIsIGxsdm06OlZhbAotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6 TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IFR5cGUg KnB0clJlZlR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgb25lX2VsZW0pIHsKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsIGJvb2wgb25l X2VsZW0pIHsKLSAgICAgaWYgKHB0ciA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3Vy cmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAt MjM3MSw5ICsyMzU4LDYgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkxvYWRJ bnN0KGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlZhbHVlICptYXNrLAotIAotICAgICBBc3NlcnRQ b3MoY3VycmVudFBvcywgcHRyUmVmVHlwZSAhPSBOVUxMICYmIG1hc2sgIT0gTlVMTCk7Ci0gCi0t ICAgIGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUocHRyLCAi X2xvYWQiKTsKLS0KLSAgICAgY29uc3QgUG9pbnRlclR5cGUgKnB0clR5cGU7Ci0gICAgIGNvbnN0 IFR5cGUgKmVsVHlwZTsKLSAgICAgaWYgKENhc3RUeXBlPFJlZmVyZW5jZVR5cGU+KHB0clJlZlR5 cGUpICE9IE5VTEwpIHsKLUBAIC0yMzkzLDcgKzIzNzcsOCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1h c2ssCi0gCi0gICAgIGlmIChwdHJUeXBlLT5Jc1VuaWZvcm1UeXBlKCkpIHsKLSAgICAgICAgIGlm IChwdHJUeXBlLT5Jc1NsaWNlKCkpIHsKLS0gICAgICAgICAgICByZXR1cm4gbG9hZFVuaWZvcm1G cm9tU09BKHB0ciwgbWFzaywgcHRyVHlwZSwgbmFtZSk7Ci0rICAgICAgICAgICAgcmV0dXJuIGxv YWRVbmlmb3JtRnJvbVNPQShwdHIsIG1hc2ssIHB0clR5cGUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2lu ZShwdHItPmdldE5hbWUoKSkgKyAiX2xvYWQiKSA6IG5hbWUpOwotICAgICAgICAgfSBlbHNlIHsK LSAgICAgICAgICAgICAvLyBGSVhNRTogc2FtZSBpc3N1ZSBhcyBhYm92ZSBsb2FkIGluc3QgcmVn YXJkaW5nIGFsaWdubWVudC4uLgotICAgICAgICAgICAgIC8vCi1AQCAtMjQwNSwxMSArMjM5MCwx NSBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFs dWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssCi0gICAgICAgICAgICAgY29uc3QgQXRvbWljVHlw ZSAqYXRvbWljVHlwZSA9IENhc3RUeXBlPEF0b21pY1R5cGU+KHB0clR5cGUtPkdldEJhc2VUeXBl KCkpOwotIAotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BDX0xMVk1fMTBfMAotLSAgICAg ICAgICAgIGxsdm06OkxvYWRJbnN0ICppbnN0ID0gbmV3IGxsdm06OkxvYWRJbnN0KHB0ciwgbmFt ZSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBiYmxvY2spOwotKyAgICAgICAgICAgIGxsdm06 OkxvYWRJbnN0ICppbnN0ID0KLSsgICAgICAgICAgICAgICAgbmV3IGxsdm06OkxvYWRJbnN0KHB0 ciwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAobGx2bTo6VHdpbmUocHRyLT5nZXROYW1lKCkp ICsgIl9sb2FkIikgOiBuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBiYmxvY2spOwotICNlbHNlIC8vIExMVk0gMTEuMCsK LSAgICAgICAgICAgICBsbHZtOjpQb2ludGVyVHlwZSAqcHRyX3R5cGUgPSBsbHZtOjpkeW5fY2Fz dDxsbHZtOjpQb2ludGVyVHlwZT4ocHRyLT5nZXRUeXBlKCkpOwotICAgICAgICAgICAgIGxsdm06 OkxvYWRJbnN0ICppbnN0ID0KLS0gICAgICAgICAgICAgICAgbmV3IGxsdm06OkxvYWRJbnN0KHB0 cl90eXBlLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgcHRyLCBuYW1lLCBmYWxzZSAvKiBub3Qg dm9sYXRpbGUgKi8sIGJibG9jayk7Ci0rICAgICAgICAgICAgICAgIG5ldyBsbHZtOjpMb2FkSW5z dChwdHJfdHlwZS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIHB0ciwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3 aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbG9hZCIpIDogbmFtZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgYmJsb2NrKTsKLSAj ZW5kaWYKLSAKLSAgICAgICAgICAgICBpZiAoYXRvbWljVHlwZSAhPSBOVUxMICYmIGF0b21pY1R5 cGUtPklzVmFyeWluZ1R5cGUoKSkgewotQEAgLTI0MzMsNyArMjQyMiw4IEBAIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpW YWx1ZSAqbWFzaywKLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBzaG91 bGQgaGF2ZSBhIHZhcnlpbmcgcHRyIGFuZCBpdCdzIHRpbWUgZm9yIGEKLSAgICAgICAgIC8vIGdh dGhlci4KLS0gICAgICAgIGxsdm06OlZhbHVlICpnYXRoZXJfcmVzdWx0ID0gZ2F0aGVyKHB0ciwg cHRyVHlwZSwgR2V0RnVsbE1hc2soKSwgbmFtZSk7Ci0rICAgICAgICBsbHZtOjpWYWx1ZSAqZ2F0 aGVyX3Jlc3VsdCA9IGdhdGhlcihwdHIsIHB0clR5cGUsIEdldEZ1bGxNYXNrKCksCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1w dHkoKSA/IChsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkgKyAiX2xvYWQiKSA6IG5hbWUpOwot ICAgICAgICAgaWYgKCFvbmVfZWxlbSkKLSAgICAgICAgICAgICByZXR1cm4gZ2F0aGVyX3Jlc3Vs dDsKLSAKLUBAIC0yNDUzLDE5ICsyNDQzLDE5IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRD b250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywKLSAg ICAgICAgIC8vIFdlIGNhbiBhY3R1YWxseSBjYWxsIGVpdGhlciBvbmUsIHNpbmNlIGJvdGggYXJl IGkzMnMgYXMgZmFyIGFzCi0gICAgICAgICAvLyBMTFZNJ3MgdHlwZSBzeXN0ZW0gaXMgY29uY2Vy bmVkLi4uCi0gICAgICAgICBsbHZtOjpGdW5jdGlvbiAqZm1tID0gbW1bMF0tPmZ1bmN0aW9uOwot LSAgICAgICAgbGx2bTo6VmFsdWUgKmludF9tYXNrID0gQ2FsbEluc3QoZm1tLCBOVUxMLCBtYXNr LCBMTFZNR2V0TmFtZShtYXNrLCAiX21vdm1zayIpKTsKLSsgICAgICAgIGxsdm06OlZhbHVlICpp bnRfbWFzayA9IENhbGxJbnN0KGZtbSwgTlVMTCwgbWFzaywgbGx2bTo6VHdpbmUobWFzay0+Z2V0 TmFtZSgpKSArICJfbW92bXNrIik7Ci0gICAgICAgICBzdGQ6OnZlY3RvcjxTeW1ib2wgKj4gbHo7 Ci0gICAgICAgICBtLT5zeW1ib2xUYWJsZS0+TG9va3VwRnVuY3Rpb24oIl9fY291bnRfdHJhaWxp bmdfemVyb3NfaTY0IiwgJmx6KTsKLSAgICAgICAgIGxsdm06OkZ1bmN0aW9uICpmbHogPSBselsw XS0+ZnVuY3Rpb247Ci0tICAgICAgICBsbHZtOjpWYWx1ZSAqZWxlbV9pZHggPSBDYWxsSW5zdChm bHosIE5VTEwsIGludF9tYXNrLCBMTFZNR2V0TmFtZShtYXNrLCAiX2NseiIpKTsKLS0gICAgICAg IGxsdm06OlZhbHVlICplbGVtID0gbGx2bTo6RXh0cmFjdEVsZW1lbnRJbnN0OjpDcmVhdGUoZ2F0 aGVyX3Jlc3VsdCwgZWxlbV9pZHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1HZXROYW1lKGdhdGhlcl9yZXN1bHQsICJf dW1hc2tlZF9lbGVtIiksIGJibG9jayk7Ci0rICAgICAgICBsbHZtOjpWYWx1ZSAqZWxlbV9pZHgg PSBDYWxsSW5zdChmbHosIE5VTEwsIGludF9tYXNrLCBsbHZtOjpUd2luZShtYXNrLT5nZXROYW1l KCkpICsgIl9jbHoiKTsKLSsgICAgICAgIGxsdm06OlZhbHVlICplbGVtID0gbGx2bTo6RXh0cmFj dEVsZW1lbnRJbnN0OjpDcmVhdGUoCi0rICAgICAgICAgICAgZ2F0aGVyX3Jlc3VsdCwgZWxlbV9p ZHgsIGxsdm06OlR3aW5lKGdhdGhlcl9yZXN1bHQtPmdldE5hbWUoKSkgKyAiX3VtYXNrZWRfZWxl bSIsIGJibG9jayk7Ci0gICAgICAgICByZXR1cm4gZWxlbTsKLSAgICAgfQotIH0KLSAKLSBsbHZt OjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Z2F0aGVyKGxsdm06OlZhbHVlICpwdHIsIGNv bnN0IFBvaW50ZXJUeXBlICpwdHJUeXBlLCBsbHZtOjpWYWx1ZSAqbWFzaywKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpIHsKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZu YW1lKSB7Ci0gICAgIC8vIFdlIHNob3VsZCBoYXZlIGEgdmFyeWluZyBwb2ludGVyIGlmIHdlIGdl dCBoZXJlLi4uCi0gICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBwdHJUeXBlLT5Jc1ZhcnlpbmdU eXBlKCkpOwotIAotQEAgLTI2MDIsNyArMjU5Miw4IEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4 dDo6YWRkR1NNZXRhZGF0YShsbHZtOjpWYWx1ZSAqdiwgU291cmNlUG9zIHBvcykgewotICAgICBp bnN0LT5zZXRNZXRhZGF0YSgibGFzdF9jb2x1bW4iLCBtZCk7Ci0gfQotIAotLWxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBbGxvY2FJbnN0KGxsdm06OlR5cGUgKmxsdm1UeXBlLCBj b25zdCBjaGFyICpuYW1lLCBpbnQgYWxpZ24sIGJvb2wgYXRFbnRyeUJsb2NrKSB7Ci0rbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbG9jYUluc3QobGx2bTo6VHlwZSAqbGx2bVR5 cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lLCBpbnQgYWxpZ24sCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhdEVudHJ5QmxvY2spIHsKLSAgICAg aWYgKGxsdm1UeXBlID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBt LT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0yNjE1LDEyICsy NjA2LDEyIEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBbGxvY2FJbnN0KGxs dm06OlR5cGUgKmxsdm1UeXBlLCBjb25zdCBjaGFyICpuCi0gICAgICAgICBsbHZtOjpJbnN0cnVj dGlvbiAqcmV0SW5zdCA9IGFsbG9jYUJsb2NrLT5nZXRUZXJtaW5hdG9yKCk7Ci0gICAgICAgICBB c3NlcnRQb3MoY3VycmVudFBvcywgcmV0SW5zdCk7Ci0gICAgICAgICB1bnNpZ25lZCBBUyA9IGxs dm1GdW5jdGlvbi0+Z2V0UGFyZW50KCktPmdldERhdGFMYXlvdXQoKS5nZXRBbGxvY2FBZGRyU3Bh Y2UoKTsKLS0gICAgICAgIGluc3QgPSBuZXcgbGx2bTo6QWxsb2NhSW5zdChsbHZtVHlwZSwgQVMs IG5hbWUgPyBuYW1lIDogIiIsIHJldEluc3QpOwotKyAgICAgICAgaW5zdCA9IG5ldyBsbHZtOjpB bGxvY2FJbnN0KGxsdm1UeXBlLCBBUywgbmFtZSwgcmV0SW5zdCk7Ci0gICAgIH0gZWxzZSB7Ci0g ICAgICAgICAvLyBVbmxlc3MgdGhlIGNhbGxlciBvdmVycm9kZSB0aGUgZGVmYXVsdCBhbmQgd2Fu dHMgaXQgaW4gdGhlCi0gICAgICAgICAvLyBjdXJyZW50IGJhc2ljIGJsb2NrCi0gICAgICAgICB1 bnNpZ25lZCBBUyA9IGxsdm1GdW5jdGlvbi0+Z2V0UGFyZW50KCktPmdldERhdGFMYXlvdXQoKS5n ZXRBbGxvY2FBZGRyU3BhY2UoKTsKLS0gICAgICAgIGluc3QgPSBuZXcgbGx2bTo6QWxsb2NhSW5z dChsbHZtVHlwZSwgQVMsIG5hbWUgPyBuYW1lIDogIiIsIGJibG9jayk7Ci0rICAgICAgICBpbnN0 ID0gbmV3IGxsdm06OkFsbG9jYUluc3QobGx2bVR5cGUsIEFTLCBuYW1lLCBiYmxvY2spOwotICAg ICB9Ci0gCi0gICAgIC8vIElmIG5vIGFsaWdubWVudCB3YXMgc3BlY2lmaWVkIGJ1dCB3ZSBoYXZl IGFuIGFycmF5IG9mIGEgdW5pZm9ybQotQEAgLTI2MzksNyArMjYzMCw4IEBAIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBbGxvY2FJbnN0KGxsdm06OlR5cGUgKmxsdm1UeXBlLCBj b25zdCBjaGFyICpuCi0gICAgIHJldHVybiBpbnN0OwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVu Y3Rpb25FbWl0Q29udGV4dDo6QWxsb2NhSW5zdChjb25zdCBUeXBlICpwdHJUeXBlLCBjb25zdCBj aGFyICpuYW1lLCBpbnQgYWxpZ24sIGJvb2wgYXRFbnRyeUJsb2NrKSB7Ci0rbGx2bTo6VmFsdWUg KkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbG9jYUluc3QoY29uc3QgVHlwZSAqcHRyVHlwZSwgY29u c3QgbGx2bTo6VHdpbmUgJm5hbWUsIGludCBhbGlnbiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBib29sIGF0RW50cnlCbG9jaykgewotICAgICBpZiAocHRy VHlwZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JD b3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMzA3NSw2NiArMzA2Nyw1OSBA QCBsbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QnJhbmNoSW5zdChsbHZt OjpCYXNpY0Jsb2NrICp0cnVlQmxvY2ssCi0gICAgIHJldHVybiBiOwotIH0KLSAKLS1sbHZtOjpW YWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6RXh0cmFjdEluc3QobGx2bTo6VmFsdWUgKnYsIGlu dCBlbHQsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29u dGV4dDo6RXh0cmFjdEluc3QobGx2bTo6VmFsdWUgKnYsIGludCBlbHQsIGNvbnN0IGxsdm06OlR3 aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhj dXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSAg ICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKSB7Ci0tICAgICAgICBjaGFyIGJ1ZlszMl07 Ci0tICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiX2V4dHJhY3RfJWQiLCBlbHQp OwotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHYsIGJ1Zik7Ci0tICAgIH0KLSAgICAgbGx2 bTo6SW5zdHJ1Y3Rpb24gKmVpID0gTlVMTDsKLSAgICAgaWYgKGxsdm06OmlzYTxsbHZtOjpWZWN0 b3JUeXBlPih2LT5nZXRUeXBlKCkpKQotLSAgICAgICAgZWkgPSBsbHZtOjpFeHRyYWN0RWxlbWVu dEluc3Q6OkNyZWF0ZSh2LCBMTFZNSW50MzIoZWx0KSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgICAg IGVpID0gbGx2bTo6RXh0cmFjdEVsZW1lbnRJbnN0OjpDcmVhdGUoCi0rICAgICAgICAgICAgdiwg TExWTUludDMyKGVsdCksCi0rICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAo KGxsdm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAiX2V4dHJhY3RfIikgKyBsbHZtOjpUd2luZShl bHQpKSA6IG5hbWUsIGJibG9jayk7Ci0gICAgIGVsc2UKLS0gICAgICAgIGVpID0gbGx2bTo6RXh0 cmFjdFZhbHVlSW5zdDo6Q3JlYXRlKHYsIGVsdCwgbmFtZSwgYmJsb2NrKTsKLSsgICAgICAgIGVp ID0gbGx2bTo6RXh0cmFjdFZhbHVlSW5zdDo6Q3JlYXRlKAotKyAgICAgICAgICAgIHYsIGVsdCwg bmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAoKGxsdm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAi X2V4dHJhY3RfIikgKyBsbHZtOjpUd2luZShlbHQpKSA6IG5hbWUsCi0rICAgICAgICAgICAgYmJs b2NrKTsKLSAgICAgQWRkRGVidWdQb3MoZWkpOwotICAgICByZXR1cm4gZWk7Ci0gfQotIAotLWxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpJbnNlcnRJbnN0KGxsdm06OlZhbHVlICp2 LCBsbHZtOjpWYWx1ZSAqZWx0VmFsLCBpbnQgZWx0LCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Okluc2VydEluc3QobGx2bTo6VmFsdWUgKnYs IGxsdm06OlZhbHVlICplbHRWYWwsIGludCBlbHQsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7 Ci0gICAgIGlmICh2ID09IE5VTEwgfHwgZWx0VmFsID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2Vy dFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVM TDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKSB7Ci0tICAgICAgICBjaGFyIGJ1 ZlszMl07Ci0tICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiX2luc2VydF8lZCIs IGVsdCk7Ci0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodiwgYnVmKTsKLS0gICAgfQotLQot ICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaWkgPSBOVUxMOwotICAgICBpZiAobGx2bTo6aXNhPGxs dm06OlZlY3RvclR5cGU+KHYtPmdldFR5cGUoKSkpCi0tICAgICAgICBpaSA9IGxsdm06Okluc2Vy dEVsZW1lbnRJbnN0OjpDcmVhdGUodiwgZWx0VmFsLCBMTFZNSW50MzIoZWx0KSwgbmFtZSwgYmJs b2NrKTsKLSsgICAgICAgIGlpID0gbGx2bTo6SW5zZXJ0RWxlbWVudEluc3Q6OkNyZWF0ZSgKLSsg ICAgICAgICAgICB2LCBlbHRWYWwsIExMVk1JbnQzMihlbHQpLAotKyAgICAgICAgICAgIG5hbWUu aXNUcml2aWFsbHlFbXB0eSgpID8gKChsbHZtOjpUd2luZSh2LT5nZXROYW1lKCkpICsgIl9pbnNl cnRfIikgKyBsbHZtOjpUd2luZShlbHQpKSA6IG5hbWUsIGJibG9jayk7Ci0gICAgIGVsc2UKLS0g ICAgICAgIGlpID0gbGx2bTo6SW5zZXJ0VmFsdWVJbnN0OjpDcmVhdGUodiwgZWx0VmFsLCBlbHQs IG5hbWUsIGJibG9jayk7Ci0rICAgICAgICBpaSA9IGxsdm06Okluc2VydFZhbHVlSW5zdDo6Q3Jl YXRlKAotKyAgICAgICAgICAgIHYsIGVsdFZhbCwgZWx0LAotKyAgICAgICAgICAgIG5hbWUuaXNU cml2aWFsbHlFbXB0eSgpID8gKChsbHZtOjpUd2luZSh2LT5nZXROYW1lKCkpICsgIl9pbnNlcnRf IikgKyBsbHZtOjpUd2luZShlbHQpKSA6IG5hbWUsIGJibG9jayk7Ci0gICAgIEFkZERlYnVnUG9z KGlpKTsKLSAgICAgcmV0dXJuIGlpOwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6U2h1ZmZsZUluc3QobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAqdjIsIGxs dm06OlZhbHVlICptYXNrLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6OlNodWZmbGVJbnN0KGxsdm06OlZhbHVlICp2MSwgbGx2bTo6VmFsdWUg KnYyLCBsbHZtOjpWYWx1ZSAqbWFzaywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHYxID09 IE5VTEwgfHwgdjIgPT0gTlVMTCB8fCBtYXNrID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBv cyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsK LSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKSB7Ci0tICAgICAgICBjaGFyIGJ1Zlsz Ml07Ci0tICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiX3NodWZmbGUiKTsKLS0g ICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2MSwgYnVmKTsKLS0gICAgfQotLQotLSAgICBsbHZt OjpJbnN0cnVjdGlvbiAqaWkgPSBuZXcgbGx2bTo6U2h1ZmZsZVZlY3Rvckluc3QodjEsIHYyLCBt YXNrLCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaWkgPSBuZXcgbGx2 bTo6U2h1ZmZsZVZlY3Rvckluc3QoCi0rICAgICAgICB2MSwgdjIsIG1hc2ssIG5hbWUuaXNUcml2 aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHYxLT5nZXROYW1lKCkpICsgIl9zaHVmZmxlIikg OiBuYW1lLCBiYmxvY2spOwotIAotICAgICBBZGREZWJ1Z1BvcyhpaSk7Ci0gICAgIHJldHVybiBp aTsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkJyb2FkY2FzdFZh bHVlKGxsdm06OlZhbHVlICp2LCBsbHZtOjpUeXBlICp2ZWNUeXBlLCBjb25zdCBjaGFyICpuYW1l KSB7Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkJyb2FkY2FzdFZhbHVlKGxs dm06OlZhbHVlICp2LCBsbHZtOjpUeXBlICp2ZWNUeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFt ZSkgewotICAgICBpZiAodiA9PSBOVUxMIHx8IHZlY1R5cGUgPT0gTlVMTCkgewotICAgICAgICAg QXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVy biBOVUxMOwotQEAgLTMxNDgsMTIgKzMxMzMsNiBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6QnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlYwot ICAgICBBc3NlcnQodHkgJiYgdHktPmdldFZlY3RvckVsZW1lbnRUeXBlKCkgPT0gdi0+Z2V0VHlw ZSgpKTsKLSAjZW5kaWYKLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkgewotLSAgICAgICAgY2hh ciBidWZbMzJdOwotLSAgICAgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIl9icm9hZGNh c3QiKTsKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2LCBidWYpOwotLSAgICB9Ci0tCi0g ICAgIC8vIEdlbmVyYXRlIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2U6Ci0gICAgIC8vICAgJW5hbWVf aW5pdC5pID0gaW5zZXJ0ZWxlbWVudCA8NCB4IGkzMj4gdW5kZWYsIGkzMiAldmFsLCBpMzIgMAot ICAgICAvLyAgICVuYW1lLmkgPSBzaHVmZmxldmVjdG9yIDw0IHggaTMyPiAlbmFtZV9pbml0Lmks IDw0IHggaTMyPiB1bmRlZiwKLUBAIC0zMTYzLDcgKzMxNDIsNyBAQCBsbHZtOjpWYWx1ZSAqRnVu Y3Rpb25FbWl0Q29udGV4dDo6QnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5 cGUgKnZlYwotICAgICBsbHZtOjpWYWx1ZSAqdW5kZWYyID0gbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0 KHZlY1R5cGUpOwotIAotICAgICAvLyBJbnNlcnRFbGVtZW50Ci0tICAgIGxsdm06OlR3aW5lIHR3 ID0gbGx2bTo6VHdpbmUobmFtZSkgKyBsbHZtOjpUd2luZSgiX2luaXQiKTsKLSsgICAgbGx2bTo6 VHdpbmUgdHcgPSBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2luZSh2LT5nZXRO YW1lKCkpICsgIl9icm9hZGNhc3QiKSA6IG5hbWUgKyBsbHZtOjpUd2luZSgiX2luaXQiKTsKLSAg ICAgbGx2bTo6VmFsdWUgKmluc2VydCA9IEluc2VydEluc3QodW5kZWYxLCB2LCAwLCB0dy5zdHIo KS5jX3N0cigpKTsKLSAKLSAgICAgLy8gU2h1ZmZsZVZlY3RvcgotQEAgLTMxNzksMjggKzMxNTgs MjcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkJyb2FkY2FzdFZhbHVlKGxs dm06OlZhbHVlICp2LCBsbHZtOjpUeXBlICp2ZWMKLSAgICAgICAgIGxsdm06OkNvbnN0YW50VmVj dG9yOjpnZXRTcGxhdChsbHZtOjpFbGVtZW50Q291bnQ6OmdldChzdGF0aWNfY2FzdDx1bnNpZ25l ZCBpbnQ+KHR5LT5nZXROdW1FbGVtZW50cygpKSwgZmFsc2UpLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUobGx2bTo6 VHlwZTo6Z2V0SW50MzJUeSgqZy0+Y3R4KSkpOwotICNlbmRpZgotLSAgICBsbHZtOjpWYWx1ZSAq cmV0ID0gU2h1ZmZsZUluc3QoaW5zZXJ0LCB1bmRlZjIsIHplcm9WZWMsIG5hbWUpOwotKyAgICBs bHZtOjpWYWx1ZSAqcmV0ID0gU2h1ZmZsZUluc3QoaW5zZXJ0LCB1bmRlZjIsIHplcm9WZWMsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1wdHko KSA/IChsbHZtOjpUd2luZSh2LT5nZXROYW1lKCkpICsgIl9icm9hZGNhc3QiKSA6IG5hbWUpOwot IAotICAgICByZXR1cm4gcmV0OwotIH0KLSAKLS1sbHZtOjpQSElOb2RlICpGdW5jdGlvbkVtaXRD b250ZXh0OjpQaGlOb2RlKGxsdm06OlR5cGUgKnR5cGUsIGludCBjb3VudCwgY29uc3QgY2hhciAq bmFtZSkgewotLSAgICBsbHZtOjpQSElOb2RlICpwbiA9IGxsdm06OlBISU5vZGU6OkNyZWF0ZSh0 eXBlLCBjb3VudCwgbmFtZSA/IG5hbWUgOiAicGhpIiwgYmJsb2NrKTsKLStsbHZtOjpQSElOb2Rl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpQaGlOb2RlKGxsdm06OlR5cGUgKnR5cGUsIGludCBjb3Vu dCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSsgICAgbGx2bTo6UEhJTm9kZSAqcG4gPSBs bHZtOjpQSElOb2RlOjpDcmVhdGUodHlwZSwgY291bnQsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgp ID8gInBoaSIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1Bvcyhwbik7Ci0gICAgIHJl dHVybiBwbjsKLSB9Ci0gCi0gbGx2bTo6SW5zdHJ1Y3Rpb24gKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OlNlbGVjdEluc3QobGx2bTo6VmFsdWUgKnRlc3QsIGxsdm06OlZhbHVlICp2YWwwLCBsbHZtOjpW YWx1ZSAqdmFsMSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAg aWYgKHRlc3QgPT0gTlVMTCB8fCB2YWwwID09IE5VTEwgfHwgdmFsMSA9PSBOVUxMKSB7Ci0gICAg ICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAg cmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAg IG5hbWUgPSBMTFZNR2V0TmFtZSh0ZXN0LCAiX3NlbGVjdCIpOwotLQotLSAgICBsbHZtOjpJbnN0 cnVjdGlvbiAqaW5zdCA9IGxsdm06OlNlbGVjdEluc3Q6OkNyZWF0ZSh0ZXN0LCB2YWwwLCB2YWwx LCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IGxsdm06OlNl bGVjdEluc3Q6OkNyZWF0ZSgKLSsgICAgICAgIHRlc3QsIHZhbDAsIHZhbDEsIG5hbWUuaXNUcml2 aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHRlc3QtPmdldE5hbWUoKSkgKyAiX3NlbGVjdCIp IDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVybiBp bnN0OwotIH0KLUBAIC0zMjI2LDcgKzMyMDQsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGxDYWxs ZWVBcmdDb3VudChsbHZtOjpWYWx1ZSAqY2FsbGVlLCBjb25zdCBGdW5jdGlvblR5cGUgKmZ1bgot IH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q2FsbEluc3QobGx2bTo6 VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZSAqZnVuY1R5cGUsCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGxsdm06OlZh bHVlICo+ICZhcmdzLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGxsdm06OlZhbHVlICo+ICZh cmdzLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7 Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAg ICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMzI1OCw5ICszMjM2LDkgQEAgbGx2bTo6VmFsdWUgKkZ1 bmN0aW9uRW1pdENvbnRleHQ6OkNhbGxJbnN0KGxsdm06OlZhbHVlICpmdW5jLCBjb25zdCBGdW5j dGlvblR5cGUKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSAgICAg ICAgIGxsdm06OlBvaW50ZXJUeXBlICpmdW5jX3B0cl90eXBlID0gbGx2bTo6ZHluX2Nhc3Q8bGx2 bTo6UG9pbnRlclR5cGU+KGZ1bmMtPmdldFR5cGUoKSk7Ci0gICAgICAgICBsbHZtOjpGdW5jdGlv blR5cGUgKmZ1bmNfdHlwZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OkZ1bmN0aW9uVHlwZT4oZnVu Y19wdHJfdHlwZS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCkpOwotLSAgICAgICAgbGx2bTo6Q2Fs bEluc3QgKmNhbGxpbnN0ID0gbGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShmdW5jX3R5cGUsIGZ1bmMs IGFyZ1ZhbHMsIG5hbWUgPyBuYW1lIDogIiIsIGJibG9jayk7Ci0rICAgICAgICBsbHZtOjpDYWxs SW5zdCAqY2FsbGluc3QgPSBsbHZtOjpDYWxsSW5zdDo6Q3JlYXRlKGZ1bmNfdHlwZSwgZnVuYywg YXJnVmFscywgbmFtZSwgYmJsb2NrKTsKLSAjZWxzZQotLSAgICAgICAgbGx2bTo6Q2FsbEluc3Qg KmNhbGxpbnN0ID0gbGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShmdW5jLCBhcmdWYWxzLCBuYW1lID8g bmFtZSA6ICIiLCBiYmxvY2spOwotKyAgICAgICAgbGx2bTo6Q2FsbEluc3QgKmNhbGxpbnN0ID0g bGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShmdW5jLCBhcmdWYWxzLCBuYW1lLCBiYmxvY2spOwotICNl bmRpZgotIAotICAgICAgICAgLy8gV2UgY291bGQgYmUgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb24g cG9pbnRlciBpbiB3aGljaCBjYXNlIHRoaXMgd2lsbCBub3QgYmUgYSAnbGx2bTo6RnVuY3Rpb24n LgotQEAgLTM0NjQsMTQgKzM0NDIsMTQgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRl eHQ6OkNhbGxJbnN0KGxsdm06OlZhbHVlICpmdW5jLCBjb25zdCBGdW5jdGlvblR5cGUKLSB9Ci0g Ci0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkNhbGxJbnN0KGxsdm06OlZhbHVl ICpmdW5jLCBjb25zdCBGdW5jdGlvblR5cGUgKmZ1bmNUeXBlLCBsbHZtOjpWYWx1ZSAqYXJnLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpu YW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIHN0ZDo6dmVjdG9yPGxsdm06OlZhbHVlICo+IGFy Z3M7Ci0gICAgIGFyZ3MucHVzaF9iYWNrKGFyZyk7Ci0gICAgIHJldHVybiBDYWxsSW5zdChmdW5j LCBmdW5jVHlwZSwgYXJncywgbmFtZSk7Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVt aXRDb250ZXh0OjpDYWxsSW5zdChsbHZtOjpWYWx1ZSAqZnVuYywgY29uc3QgRnVuY3Rpb25UeXBl ICpmdW5jVHlwZSwgbGx2bTo6VmFsdWUgKmFyZzAsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICphcmcxLCBjb25zdCBjaGFyICpuYW1lKSB7 Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVl ICphcmcxLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBzdGQ6OnZlY3RvcjxsbHZt OjpWYWx1ZSAqPiBhcmdzOwotICAgICBhcmdzLnB1c2hfYmFjayhhcmcwKTsKLSAgICAgYXJncy5w dXNoX2JhY2soYXJnMSk7Ci1kaWZmIC0tZ2l0IGEvc3JjL2N0eC5oIGIvc3JjL2N0eC5oCi1pbmRl eCA2ZTVhZDc0YmEuLjQ4YjNiYjgyNiAxMDA2NDQKLS0tLSBhL3NyYy9jdHguaAotKysrIGIvc3Jj L2N0eC5oCi1AQCAtMzAyLDcgKzMwMiw3IEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRleHQgewot ICAgICBsbHZtOjpWYWx1ZSAqR2V0U3RyaW5nUHRyKGNvbnN0IHN0ZDo6c3RyaW5nICZzdHIpOwot IAotICAgICAvKiogQ3JlYXRlIGEgbmV3IGJhc2ljIGJsb2NrIHdpdGggZ2l2ZW4gbmFtZSAqLwot LSAgICBsbHZtOjpCYXNpY0Jsb2NrICpDcmVhdGVCYXNpY0Jsb2NrKGNvbnN0IGNoYXIgKm5hbWUs IGxsdm06OkJhc2ljQmxvY2sgKmluc2VydEFmdGVyID0gTlVMTCk7Ci0rICAgIGxsdm06OkJhc2lj QmxvY2sgKkNyZWF0ZUJhc2ljQmxvY2soY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsIGxsdm06OkJh c2ljQmxvY2sgKmluc2VydEFmdGVyID0gTlVMTCk7Ci0gCi0gICAgIC8qKiBHaXZlbiBhIHZlY3Rv ciB3aXRoIGVsZW1lbnQgdHlwZSBpMSwgcmV0dXJuIGEgdmVjdG9yIG9mIHR5cGUKLSAgICAgICAg IExMVk1UeXBlczo6Qm9vbFZlY3RvclR5cGUuICBUaGlzIG1ldGhvZCBoYW5kbGVzIHRoZSBjb252 ZXJzaW9uIGZvcgotQEAgLTM4MCwzMyArMzgwLDMzIEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRl eHQgewotICAgICAgICAgdGhpcyBhbHNvIGhhbmRsZXMgYXBwbHlpbmcgdGhlIGdpdmVuIG9wZXJh dGlvbiB0byB0aGUgdmVjdG9yCi0gICAgICAgICBlbGVtZW50cy4gKi8KLSAgICAgbGx2bTo6VmFs dWUgKkJpbmFyeU9wZXJhdG9yKGxsdm06Okluc3RydWN0aW9uOjpCaW5hcnlPcHMgaW5zdCwgbGx2 bTo6VmFsdWUgKnYwLCBsbHZtOjpWYWx1ZSAqdjEsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIEVt aXQgdGhlICJub3QiIG9wZXJhdG9yLiAgTGlrZSBCaW5hcnlPcGVyYXRvcigpLCB0aGlzIGFsc28g aGFuZGxlcwotICAgICAgICAgYSBWZWN0b3JUeXBlLWJhc2VkIG9wZXJhbmQuICovCi0tICAgIGxs dm06OlZhbHVlICpOb3RPcGVyYXRvcihsbHZtOjpWYWx1ZSAqdiwgY29uc3QgY2hhciAqbmFtZSA9 IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqTm90T3BlcmF0b3IobGx2bTo6VmFsdWUgKnYsIGNv bnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAvKiogRW1pdCBhIGNvbXBhcmlz b24gaW5zdHJ1Y3Rpb24uICBJZiB0aGUgb3BlcmFuZHMgYXJlIFZlY3RvclR5cGVzLAotICAgICAg ICAgdGhlbiBhIHZhbHVlIGZvciB0aGUgY29ycmVzcG9uZGluZyBib29sZWFuIFZlY3RvclR5cGUg aXMKLSAgICAgICAgIHJldHVybmVkLiAqLwotICAgICBsbHZtOjpWYWx1ZSAqQ21wSW5zdChsbHZt OjpJbnN0cnVjdGlvbjo6T3RoZXJPcHMgaW5zdCwgbGx2bTo6Q21wSW5zdDo6UHJlZGljYXRlIHBy ZWQsIGxsdm06OlZhbHVlICp2MCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFs dWUgKnYxLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgIGxsdm06OlZhbHVlICp2MSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0g ICAgIC8qKiBHaXZlbiBhIHNjYWxhciB2YWx1ZSwgcmV0dXJuIGEgdmVjdG9yIG9mIHRoZSBzYW1l IHR5cGUgKG9yIGFuCi0gICAgICAgICBhcnJheSwgZm9yIHBvaW50ZXIgdHlwZXMpLiAqLwotLSAg ICBsbHZtOjpWYWx1ZSAqU21lYXJVbmlmb3JtKGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgY2hh ciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqU21lYXJVbmlmb3JtKGxsdm06OlZh bHVlICp2YWx1ZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0tICAgIGxsdm06 OlZhbHVlICpCaXRDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUs IGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLS0gICAgbGx2bTo6VmFsdWUgKlB0clRvSW50SW5z dChsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLS0gICAgbGx2 bTo6VmFsdWUgKlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5 cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLS0gICAgbGx2bTo6VmFsdWUgKkludFRvUHRy SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5h bWUgPSBOVUxMKTsKLSsgICAgbGx2bTo6VmFsdWUgKkJpdENhc3RJbnN0KGxsdm06OlZhbHVlICp2 YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0r ICAgIGxsdm06OlZhbHVlICpQdHJUb0ludEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBs bHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSsgICAgbGx2bTo6VmFsdWUgKlB0clRvSW50SW5zdChs bHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZu YW1lID0gIiIpOwotKyAgICBsbHZtOjpWYWx1ZSAqSW50VG9QdHJJbnN0KGxsdm06OlZhbHVlICp2 YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0g Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICpUcnVuY0luc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBs bHZtOjpUeXBlICp0eXBlLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06Oklu c3RydWN0aW9uICpUcnVuY0luc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBl LCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24g KkNhc3RJbnN0KGxsdm06Okluc3RydWN0aW9uOjpDYXN0T3BzIG9wLCBsbHZtOjpWYWx1ZSAqdmFs dWUsIGxsdm06OlR5cGUgKnR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICpGUENhc3RJ bnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFt ZSA9IE5VTEwpOwotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqU0V4dEluc3QobGx2bTo6VmFsdWUg KnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0tICAg IGxsdm06Okluc3RydWN0aW9uICpaRXh0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5 cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotKyAgICBsbHZtOjpJ bnN0cnVjdGlvbiAqRlBDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5 cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotKyAgICBsbHZtOjpJbnN0cnVjdGlv biAqU0V4dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBs bHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKlpFeHRJbnN0 KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUg Jm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBHaXZlbiB0d28gaW50ZWdlci10eXBlZCB2YWx1ZXMg KGJ1dCBwb3NzaWJseSBvbmUgdmVjdG9yIGFuZCB0aGUKLSAgICAgICAgIG90aGVyIG5vdCwgYW5k IG9yIG9mIHBvc3NpYmx5LWRpZmZlcmVudCBiaXQtd2lkdGhzKSwgdXBkYXRlIHRoZWlyCi1AQCAt NDI2LDkgKzQyNiw5IEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRleHQgewotICAgICAgICAgcG9p bnRlcnMuICBUaGUgdW5kZXJseWluZyB0eXBlIG9mIHRoZSBiYXNlIHBvaW50ZXIgbXVzdCBiZSBw cm92aWRlZAotICAgICAgICAgdmlhIHRoZSBwdHJUeXBlIHBhcmFtZXRlciAqLwotICAgICBsbHZt OjpWYWx1ZSAqR2V0RWxlbWVudFB0ckluc3QobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGxsdm06OlZh bHVlICppbmRleCwgY29uc3QgVHlwZSAqcHRyVHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotICAgICBs bHZtOjpWYWx1ZSAqR2V0RWxlbWVudFB0ckluc3QobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGxsdm06 OlZhbHVlICppbmRleDAsIGxsdm06OlZhbHVlICppbmRleDEsIGNvbnN0IFR5cGUgKnB0clR5cGUs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0g TlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpU d2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcg cG9pbnRlciB0aGF0IHJlcHJlc2VudHMgb2Zmc2V0dGluZyB0aGUKLSAgICAgICAgIGdpdmVuIGJh c2UgcG9pbnRlciB0byBwb2ludCBhdCB0aGUgZ2l2ZW4gZWxlbWVudCBudW1iZXIgb2YgdGhlCi1A QCAtNDM2LDI2ICs0MzYsMjYgQEAgY2xhc3MgRnVuY3Rpb25FbWl0Q29udGV4dCB7Ci0gICAgICAg ICBwb2ludGVyIG11c3QgYmUgYSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIHR5cGUuICBUaGUgcHRy VHlwZSBnaXZlcwotICAgICAgICAgdGhlIHR5cGUgb2YgdGhlIHBvaW50ZXIsIHRob3VnaCBpdCBt YXkgYmUgTlVMTCBpZiB0aGUgYmFzZSBwb2ludGVyCi0gICAgICAgICBpcyB1bmlmb3JtLiAqLwot LSAgICBsbHZtOjpWYWx1ZSAqQWRkRWxlbWVudE9mZnNldChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwg aW50IGVsZW1lbnROdW0sIGNvbnN0IFR5cGUgKnB0clR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBO VUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb2ludGVyVHlw ZSAqKnJlc3VsdFB0clR5cGUgPSBOVUxMKTsKLSsgICAgbGx2bTo6VmFsdWUgKkFkZEVsZW1lbnRP ZmZzZXQobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGludCBlbGVtZW50TnVtLCBjb25zdCBUeXBlICpw dHJUeXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpU d2luZSAmbmFtZSA9ICIiLCBjb25zdCBQb2ludGVyVHlwZSAqKnJlc3VsdFB0clR5cGUgPSBOVUxM KTsKLSAKLSAgICAgLyoqIEJvb2wgaXMgc3RvcmVkIGFzIGk4IGFuZCA8V0lEVEggeCBpOD4gYnV0 IHJlcHJlc2VudGVkIGluIElSIGFzIGkxIGFuZAotICAgICAgKiA8V0lEVEggeCBNQVNLPi4gVGhp cyBpcyBhIGhlbHBlciBmdW5jdGlvbiB0byBtYXRjaCBib29sIHNpemUgYXQgc3RvcmFnZQotICAg ICAgKiBpbnRlcmZhY2UuICovCi0tICAgIGxsdm06OlZhbHVlICpTd2l0Y2hCb29sU2l6ZShsbHZt OjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5V TEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqU3dpdGNoQm9vbFNpemUobGx2bTo6VmFsdWUgKnZhbHVl LCBsbHZtOjpUeXBlICp0b1R5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotICAg ICAvKiogTG9hZCBmcm9tIHRoZSBtZW1vcnkgbG9jYXRpb24ocykgZ2l2ZW4gYnkgbHZhbHVlLCB1 c2luZyB0aGUgZ2l2ZW4KLSAgICAgICAgIG1hc2suICBUaGUgbHZhbHVlIG1heSBiZSB2YXJ5aW5n LCBpbiB3aGljaCBjYXNlIHRoaXMgY29ycmVzcG9uZHMgdG8KLSAgICAgICAgIGEgZ2F0aGVyIGZy b20gdGhlIG11bHRpcGxlIG1lbW9yeSBsb2NhdGlvbnMgZ2l2ZW4gYnkgdGhlIGFycmF5IG9mCi0g ICAgICAgICBwb2ludGVyIHZhbHVlcyBnaXZlbiBieSB0aGUgbHZhbHVlLiAgSWYgdGhlIGx2YWx1 ZSBpcyBub3QgdmFyeWluZywKLSAgICAgICAgIHRoZW4gYm90aCB0aGUgbWFzayBwb2ludGVyIGFu ZCB0aGUgdHlwZSBwb2ludGVyIG1heSBiZSBOVUxMLiAqLwotLSAgICBsbHZtOjpWYWx1ZSAqTG9h ZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IFR5cGUgKnB0 clR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMLAotKyAgICBsbHZtOjpWYWx1ZSAqTG9hZElu c3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IFR5cGUgKnB0clR5 cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICBib29sIG9uZV9lbGVtID0gZmFsc2UpOwotIAotICAgICAvKiBMb2FkIGZyb20gbWVtb3J5 IGxvY2F0aW9uKHMpIGdpdmVuLgotICAgICAgKiAndHlwZScgbmVlZHMgdG8gYmUgcHJvdmlkZWQg d2hlbiBzdG9yYWdlIHR5cGUgaXMgZGlmZmVyZW50IGZyb20gSVIgdHlwZS4gRm9yIGV4YW1wbGUs Ci0gICAgICAqICd1bmZvcm0gYm9vbCcgaXMgJ2kxJyBpbiBJUiBidXQgc3RvcmVkIGFzICdpOCcu Ci0gICAgICAqIE90aGVyd2lzZSBsZWF2ZSB0aGlzIGFzIE5VTEwuICovCi0tICAgIGxsdm06OlZh bHVlICpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBUeXBlICp0eXBlID0gTlVMTCwg Y29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqTG9hZEluc3QobGx2 bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqdHlwZSA9IE5VTEwsIGNvbnN0IGxsdm06OlR3aW5l ICZuYW1lID0gIiIpOwotIAotICAgICAvKiogRW1pdHMgYW4gYWxsb2NhIGluc3RydWN0aW9uIHRv IGFsbG9jYXRlIHN0YWNrIHN0b3JhZ2UgZm9yIHRoZSBnaXZlbgotICAgICAgICAgdHlwZS4gIElm IGEgbm9uLXplcm8gYWxpZ25tZW50IGlzIHNwZWNpZmllZCwgdGhlIG9iamVjdCBpcyBhbHNvCi1A QCAtNDYzLDcgKzQ2Myw4IEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRleHQgewotICAgICAgICAg aW5zdHJ1Y3Rpb24gaXMgYWRkZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBmdW5jdGlvbiBpbiB0aGUg ZW50cnkKLSAgICAgICAgIGJhc2ljIGJsb2NrOyBpZiBpdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhl IGN1cnJlbnQgYmFzaWMgYmxvY2ssIHRoZW4KLSAgICAgICAgIHRoZSBhdEVudHJ5QmxvY2sgcGFy YW1ldGVyIHNob3VsZCBiZSBmYWxzZS4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKkFsbG9jYUluc3Qo bGx2bTo6VHlwZSAqbGx2bVR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMLCBpbnQgYWxpZ24g PSAwLCBib29sIGF0RW50cnlCbG9jayA9IHRydWUpOwotKyAgICBsbHZtOjpWYWx1ZSAqQWxsb2Nh SW5zdChsbHZtOjpUeXBlICpsbHZtVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIiwg aW50IGFsaWduID0gMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhdEVudHJ5 QmxvY2sgPSB0cnVlKTsKLSAKLSAgICAgLyoqIEVtaXRzIGFuIGFsbG9jYSBpbnN0cnVjdGlvbiB0 byBhbGxvY2F0ZSBzdGFjayBzdG9yYWdlIGZvciB0aGUgZ2l2ZW4KLSAgICAgICAgIHR5cGUuICBJ ZiBhIG5vbi16ZXJvIGFsaWdubWVudCBpcyBzcGVjaWZpZWQsIHRoZSBvYmplY3QgaXMgYWxzbwot QEAgLTQ3NCw3ICs0NzUsNyBAQCBjbGFzcyBGdW5jdGlvbkVtaXRDb250ZXh0IHsKLSAgICAgICAg IFRoaXMgaW1wbGVtZW50YXRpb24gaXMgcHJlZmVycmVkIHdoZW4gcG9zc2libGUuIEl0IGlzIG5l ZWRlZCB3aGVuCi0gICAgICAgICBzdG9yYWdlIHR5cGUgaXMgZGlmZmVyZW50IGZyb20gSVIgdHlw ZS4gRm9yIGV4YW1wbGUsCi0gICAgICAgICAndW5mb3JtIGJvb2wnIGlzICdpMScgaW4gSVIgYnV0 IHN0b3JlZCBhcyAnaTgnLiAqLwotLSAgICBsbHZtOjpWYWx1ZSAqQWxsb2NhSW5zdChjb25zdCBU eXBlICpwdHJUeXBlLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCwgaW50IGFsaWduID0gMCwgYm9v bCBhdEVudHJ5QmxvY2sgPSB0cnVlKTsKLSsgICAgbGx2bTo6VmFsdWUgKkFsbG9jYUluc3QoY29u c3QgVHlwZSAqcHRyVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIiwgaW50IGFsaWdu ID0gMCwgYm9vbCBhdEVudHJ5QmxvY2sgPSB0cnVlKTsKLSAKLSAgICAgLyoqIFN0YW5kYXJkIHN0 b3JlIGluc3RydWN0aW9uOyBmb3IgdGhpcyB2YXJpYW50LCB0aGUgbHZhbHVlIG11c3QgYmUgYQot ICAgICAgICAgc2luZ2xlIHBvaW50ZXIsIG5vdCBhIHZhcnlpbmcgbHZhbHVlLgotQEAgLTUwMiwz OSArNTAzLDQxIEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRleHQgewotICAgICAvKiogVGhpcyBj b252ZW5pZW5jZSBtZXRob2QgbWFwcyB0byBhbiBsbHZtOjpFeHRyYWN0RWxlbWVudEluc3QgaWYg dGhlCi0gICAgICAgICBnaXZlbiB2YWx1ZSBpcyBhIGxsdm06OlZlY3RvclR5cGUsIGFuZCB0byBh biBsbHZtOjpFeHRyYWN0VmFsdWVJbnN0Ci0gICAgICAgICBvdGhlcndpc2UuICovCi0tICAgIGxs dm06OlZhbHVlICpFeHRyYWN0SW5zdChsbHZtOjpWYWx1ZSAqdiwgaW50IGVsdCwgY29uc3QgY2hh ciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqRXh0cmFjdEluc3QobGx2bTo6VmFs dWUgKnYsIGludCBlbHQsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAv KiogVGhpcyBjb252ZW5pZW5jZSBtZXRob2QgbWFwcyB0byBhbiBsbHZtOjpJbnNlcnRFbGVtZW50 SW5zdCBpZiB0aGUKLSAgICAgICAgIGdpdmVuIHZhbHVlIGlzIGEgbGx2bTo6VmVjdG9yVHlwZSwg YW5kIHRvIGFuIGxsdm06Okluc2VydFZhbHVlSW5zdAotICAgICAgICAgb3RoZXJ3aXNlLiAqLwot LSAgICBsbHZtOjpWYWx1ZSAqSW5zZXJ0SW5zdChsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6VmFsdWUg KmVsdFZhbCwgaW50IGVsdCwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpW YWx1ZSAqSW5zZXJ0SW5zdChsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6VmFsdWUgKmVsdFZhbCwgaW50 IGVsdCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBUaGlzIGNv bnZlbmllbmNlIG1ldGhvZCBtYXBzIHRvIGFuIGxsdm06OlNodWZmbGVWZWN0b3JJbnN0LiAqLwot LSAgICBsbHZtOjpWYWx1ZSAqU2h1ZmZsZUluc3QobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1 ZSAqdjIsIGxsdm06OlZhbHVlICptYXNrLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAg IGxsdm06OlZhbHVlICpTaHVmZmxlSW5zdChsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2 MiwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAot ICAgICAvKiogVGhpcyBjb252ZW5pZW5jZSBtZXRob2QgdG8gZ2VuZXJhdGUgYnJvYWRjYXN0IHBh dHRlcm4uIEl0IHRha2VzIGEgdmFsdWUKLSAgICAgICAgIGFuZCBhIHZlY3RvciB0eXBlLiBUeXBl IG9mIHRoZSB2YWx1ZSBtdXN0IG1hdGNoIGVsZW1lbnQgdHlwZSBvZiB0aGUKLSAgICAgICAgIHZl Y3Rvci4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKkJyb2FkY2FzdFZhbHVlKGxsdm06OlZhbHVlICp2 LCBsbHZtOjpUeXBlICp2ZWNUeXBlLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxs dm06OlZhbHVlICpCcm9hZGNhc3RWYWx1ZShsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6VHlwZSAqdmVj VHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0tICAgIGxsdm06OlBISU5v ZGUgKlBoaU5vZGUobGx2bTo6VHlwZSAqdHlwZSwgaW50IGNvdW50LCBjb25zdCBjaGFyICpuYW1l ID0gTlVMTCk7Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICpTZWxlY3RJbnN0KGxsdm06OlZhbHVl ICp0ZXN0LCBsbHZtOjpWYWx1ZSAqdmFsMCwgbGx2bTo6VmFsdWUgKnZhbDEsIGNvbnN0IGNoYXIg Km5hbWUgPSBOVUxMKTsKLSsgICAgbGx2bTo6UEhJTm9kZSAqUGhpTm9kZShsbHZtOjpUeXBlICp0 eXBlLCBpbnQgY291bnQsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotKyAgICBsbHZt OjpJbnN0cnVjdGlvbiAqU2VsZWN0SW5zdChsbHZtOjpWYWx1ZSAqdGVzdCwgbGx2bTo6VmFsdWUg KnZhbDAsIGxsdm06OlZhbHVlICp2YWwxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIEVtaXRzIElS IHRvIGRvIGEgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuICBJZiB0aGUK LSAgICAgICAgIGZ1bmN0aW9uIHR5cGUgaXMgYSB2YXJ5aW5nIGZ1bmN0aW9uIHBvaW50ZXIgdHlw ZSwgaXRzIGZ1bGwgdHlwZQotICAgICAgICAgbXVzdCBiZSBwcm92aWRlZCBpbiBmdW5jVHlwZS4g IGZ1bmNUeXBlIGNhbiBiZSBOVUxMIGlmIGZ1bmMgaXMgYQotICAgICAgICAgdW5pZm9ybSBmdW5j dGlvbiBwb2ludGVyLiAqLwotICAgICBsbHZtOjpWYWx1ZSAqQ2FsbEluc3QobGx2bTo6VmFsdWUg KmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZSAqZnVuY1R5cGUsIGNvbnN0IHN0ZDo6dmVjdG9yPGxs dm06OlZhbHVlICo+ICZhcmdzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqbmFtZSA9IE5VTEwpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBUaGlzIGlzIGEgY29udmVuaWVuY2UgbWV0 aG9kIHRoYXQgaXNzdWVzIGEgY2FsbCBpbnN0cnVjdGlvbiB0byBhCi0gICAgICAgICBmdW5jdGlv biB0aGF0IHRha2VzIGp1c3QgYSBzaW5nbGUgYXJndW1lbnQuICovCi0tICAgIGxsdm06OlZhbHVl ICpDYWxsSW5zdChsbHZtOjpWYWx1ZSAqZnVuYywgY29uc3QgRnVuY3Rpb25UeXBlICpmdW5jVHlw ZSwgbGx2bTo6VmFsdWUgKmFyZywgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZt OjpWYWx1ZSAqQ2FsbEluc3QobGx2bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZSAq ZnVuY1R5cGUsIGxsdm06OlZhbHVlICphcmcsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIFRoaXMgaXMgYSBjb252 ZW5pZW5jZSBtZXRob2QgdGhhdCBpc3N1ZXMgYSBjYWxsIGluc3RydWN0aW9uIHRvIGEKLSAgICAg ICAgIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50cy4gKi8KLSAgICAgbGx2bTo6VmFs dWUgKkNhbGxJbnN0KGxsdm06OlZhbHVlICpmdW5jLCBjb25zdCBGdW5jdGlvblR5cGUgKmZ1bmNU eXBlLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUgKmFyZzEsCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIExh dW5jaCBhbiBhc3luY2hyb25vdXMgdGFzayB0byBydW4gdGhlIGdpdmVuIGZ1bmN0aW9uLCBwYXNz aW5nIGl0Ci0gICAgICAgICBoZSBnaXZlbiBhcmd1bWVudCB2YWx1ZXMuICovCi1AQCAtNzU2LDkg Kzc1OSwxMCBAQCBjbGFzcyBGdW5jdGlvbkVtaXRDb250ZXh0IHsKLSAgICAgdm9pZCBtYXNrZWRT dG9yZShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFR5cGUgKnB0 clR5cGUsIGxsdm06OlZhbHVlICptYXNrKTsKLSAgICAgdm9pZCBzdG9yZVVuaWZvcm1Ub1NPQShs bHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlZhbHVlICptYXNrLCBj b25zdCBUeXBlICp2YWx1ZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg UG9pbnRlclR5cGUgKnB0clR5cGUpOwotLSAgICBsbHZtOjpWYWx1ZSAqbG9hZFVuaWZvcm1Gcm9t U09BKGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlZhbHVlICptYXNrLCBjb25zdCBQb2ludGVyVHlw ZSAqcHRyVHlwZSwgY29uc3QgY2hhciAqbmFtZSk7Ci0rICAgIGxsdm06OlZhbHVlICpsb2FkVW5p Zm9ybUZyb21TT0EobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IFBv aW50ZXJUeXBlICpwdHJUeXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotLSAgICBsbHZtOjpWYWx1ZSAqZ2F0 aGVyKGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFBvaW50ZXJUeXBlICpwdHJUeXBlLCBsbHZtOjpW YWx1ZSAqbWFzaywgY29uc3QgY2hhciAqbmFtZSk7Ci0rICAgIGxsdm06OlZhbHVlICpnYXRoZXIo bGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgUG9pbnRlclR5cGUgKnB0clR5cGUsIGxsdm06OlZhbHVl ICptYXNrLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgbGx2bTo6VmFs dWUgKmFkZFZhcnlpbmdPZmZzZXRzSWZOZWVkZWQobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlw ZSAqcHRyVHlwZSk7Ci0gfTsKLWRpZmYgLS1naXQgYS9zcmMvZXhwci5jcHAgYi9zcmMvZXhwci5j cHAKLWluZGV4IDgwY2MzMDIwYS4uNmQzOGQxODg5IDEwMDY0NAotLS0tIGEvc3JjL2V4cHIuY3Bw Ci0rKysgYi9zcmMvZXhwci5jcHAKLUBAIC0xMDIxLDExICsxMDIxLDExIEBAIHN0YXRpYyBsbHZt OjpWYWx1ZSAqbEVtaXROZWdhdGUoRXhwciAqYXJnLCBTb3VyY2VQb3MgcG9zLCBGdW5jdGlvbkVt aXRDb250ZXh0ICpjCi0gICAgIGN0eC0+U2V0RGVidWdQb3MocG9zKTsKLSAgICAgaWYgKHR5cGUt PklzRmxvYXRUeXBlKCkpIHsKLSAgICAgICAgIGxsdm06OlZhbHVlICp6ZXJvID0gbGx2bTo6Q29u c3RhbnRGUDo6Z2V0WmVyb1ZhbHVlRm9yTmVnYXRpb24odHlwZS0+TExWTVR5cGUoZy0+Y3R4KSk7 Ci0tICAgICAgICByZXR1cm4gY3R4LT5CaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6 RlN1YiwgemVybywgYXJnVmFsLCBMTFZNR2V0TmFtZShhcmdWYWwsICJfbmVnYXRlIikpOwotKyAg ICAgICAgcmV0dXJuIGN0eC0+QmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkZTdWIs IHplcm8sIGFyZ1ZhbCwgbGx2bTo6VHdpbmUoYXJnVmFsLT5nZXROYW1lKCkpICsgIl9uZWdhdGUi KTsKLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGxsdm06OlZhbHVlICp6ZXJvID0gbExMVk1Db25z dGFudFZhbHVlKHR5cGUsIGctPmN0eCwgMC4pOwotICAgICAgICAgQXNzZXJ0UG9zKHBvcywgdHlw ZS0+SXNJbnRUeXBlKCkpOwotLSAgICAgICAgcmV0dXJuIGN0eC0+QmluYXJ5T3BlcmF0b3IobGx2 bTo6SW5zdHJ1Y3Rpb246OlN1YiwgemVybywgYXJnVmFsLCBMTFZNR2V0TmFtZShhcmdWYWwsICJf bmVnYXRlIikpOwotKyAgICAgICAgcmV0dXJuIGN0eC0+QmluYXJ5T3BlcmF0b3IobGx2bTo6SW5z dHJ1Y3Rpb246OlN1YiwgemVybywgYXJnVmFsLCBsbHZtOjpUd2luZShhcmdWYWwtPmdldE5hbWUo KSkgKyAiX25lZ2F0ZSIpOwotICAgICB9Ci0gfQotIAotQEAgLTEwNDcsMTEgKzEwNDcsMTEgQEAg bGx2bTo6VmFsdWUgKlVuYXJ5RXhwcjo6R2V0VmFsdWUoRnVuY3Rpb25FbWl0Q29udGV4dCAqY3R4 KSBjb25zdCB7Ci0gICAgICAgICByZXR1cm4gbEVtaXROZWdhdGUoZXhwciwgcG9zLCBjdHgpOwot ICAgICBjYXNlIExvZ2ljYWxOb3Q6IHsKLSAgICAgICAgIGxsdm06OlZhbHVlICphcmdWYWwgPSBl eHByLT5HZXRWYWx1ZShjdHgpOwotLSAgICAgICAgcmV0dXJuIGN0eC0+Tm90T3BlcmF0b3IoYXJn VmFsLCBMTFZNR2V0TmFtZShhcmdWYWwsICJfbG9naWNhbG5vdCIpKTsKLSsgICAgICAgIHJldHVy biBjdHgtPk5vdE9wZXJhdG9yKGFyZ1ZhbCwgbGx2bTo6VHdpbmUoYXJnVmFsLT5nZXROYW1lKCkp ICsgIl9sb2dpY2Fsbm90Iik7Ci0gICAgIH0KLSAgICAgY2FzZSBCaXROb3Q6IHsKLSAgICAgICAg IGxsdm06OlZhbHVlICphcmdWYWwgPSBleHByLT5HZXRWYWx1ZShjdHgpOwotLSAgICAgICAgcmV0 dXJuIGN0eC0+Tm90T3BlcmF0b3IoYXJnVmFsLCBMTFZNR2V0TmFtZShhcmdWYWwsICJfYml0bm90 IikpOwotKyAgICAgICAgcmV0dXJuIGN0eC0+Tm90T3BlcmF0b3IoYXJnVmFsLCBsbHZtOjpUd2lu ZShhcmdWYWwtPmdldE5hbWUoKSkgKyAiX2JpdG5vdCIpOwotICAgICB9Ci0gICAgIGRlZmF1bHQ6 Ci0gICAgICAgICBGQVRBTCgibG9naWMgZXJyb3IiKTsKLUBAIC0xNTE4LDcgKzE1MTgsOCBAQCBz dGF0aWMgbGx2bTo6VmFsdWUgKmxFbWl0QmluYXJ5QXJpdGgoQmluYXJ5RXhwcjo6T3Agb3AsIGxs dm06OlZhbHVlICp2YWx1ZTAsIGxsdgotICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAg ICAgfQotIAotLSAgICAgICAgcmV0dXJuIGN0eC0+QmluYXJ5T3BlcmF0b3IoaW5zdCwgdmFsdWUw LCB2YWx1ZTEsIExMVk1HZXROYW1lKG9wTmFtZSwgdmFsdWUwLCB2YWx1ZTEpKTsKLSsgICAgICAg IHJldHVybiBjdHgtPkJpbmFyeU9wZXJhdG9yKGluc3QsIHZhbHVlMCwgdmFsdWUxLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgobGx2bTo6VHdpbmUob3BOYW1lKSArICJf IikgKyB2YWx1ZTAtPmdldE5hbWUoKSkgKyAiXyIpICsgdmFsdWUxLT5nZXROYW1lKCkpOwotICAg ICB9Ci0gfQotIAotQEAgLTE1NjMsNyArMTU2NCw3IEBAIHN0YXRpYyBsbHZtOjpWYWx1ZSAqbEVt aXRCaW5hcnlDbXAoQmluYXJ5RXhwcjo6T3Agb3AsIGxsdm06OlZhbHVlICplMFZhbCwgbGx2bTo6 Ci0gICAgIH0KLSAKLSAgICAgbGx2bTo6VmFsdWUgKmNtcCA9IGN0eC0+Q21wSW5zdChpc0Zsb2F0 T3AgPyBsbHZtOjpJbnN0cnVjdGlvbjo6RkNtcCA6IGxsdm06Okluc3RydWN0aW9uOjpJQ21wLCBw cmVkLCBlMFZhbCwgZTFWYWwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TExWTUdldE5hbWUob3BOYW1lLCBlMFZhbCwgZTFWYWwpKTsKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKChsbHZtOjpUd2luZShvcE5hbWUpICsgIl8iKSArIGUwVmFsLT5n ZXROYW1lKCkpICsgIl8iKSArIGUxVmFsLT5nZXROYW1lKCkpOwotICAgICAvLyBUaGlzIGlzIGEg bGl0dGxlIHVnbHk6IENtcEluc3QgcmV0dXJucyBpMSB2YWx1ZXMsIGJ1dCB3ZSB1c2UgdmVjdG9y cwotICAgICAvLyBvZiBpMzJzIGZvciB2YXJ5aW5nIGJvb2wgdmFsdWVzOyB0eXBlIGNvbnZlcnQg dGhlIHJlc3VsdCBoZXJlIGlmCi0gICAgIC8vIG5lZWRlZC4KLUBAIC00MTc3LDcgKzQxNzgsNyBA QCBzdGF0aWMgbGx2bTo6VmFsdWUgKmxDb252ZXJ0VG9TbGljZVBvaW50ZXIoRnVuY3Rpb25FbWl0 Q29udGV4dCAqY3R4LCBsbHZtOjpWYWx1ZQotICAgICAvLyBvZmZzZXRzCi0gICAgIGxsdm06OlZh bHVlICpyZXN1bHQgPSBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKHNsaWNlU3RydWN0VHlw ZSk7Ci0gICAgIC8vIEFuZCByZXBsYWNlIHRoZSBwb2ludGVyIGluIHRoZSBzdHJ1Y3Qgd2l0aCB0 aGUgZ2l2ZW4gcG9pbnRlcgotLSAgICByZXR1cm4gY3R4LT5JbnNlcnRJbnN0KHJlc3VsdCwgcHRy LCAwLCBMTFZNR2V0TmFtZShwdHIsICJfc2xpY2UiKSk7Ci0rICAgIHJldHVybiBjdHgtPkluc2Vy dEluc3QocmVzdWx0LCBwdHIsIDAsIGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfc2xp Y2UiKTsKLSB9Ci0gCi0gLyoqIElmIHRoZSBnaXZlbiBhcnJheSBpbmRleCBpcyBhIGNvbXBpbGUg dGltZSBjb25zdGFudCwgY2hlY2sgdG8gc2VlIGlmIGl0Ci1AQCAtNDI1OCw4ICs0MjU5LDggQEAg bGx2bTo6VmFsdWUgKkluZGV4RXhwcjo6R2V0TFZhbHVlKEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0 eCkgY29uc3QgewotICAgICAgICAgLy8gQ29udmVydCB0byBhIHNsaWNlIHBvaW50ZXIgaWYgd2Un cmUgaW5kZXhpbmcgaW50byBTT0EgZGF0YQotICAgICAgICAgYmFzZVB0clZhbHVlID0gbENvbnZl cnRQdHJUb1NsaWNlSWZOZWVkZWQoY3R4LCBiYXNlUHRyVmFsdWUsICZiYXNlRXhwclR5cGUpOwot IAotLSAgICAgICAgbGx2bTo6VmFsdWUgKnB0ciA9Ci0tICAgICAgICAgICAgY3R4LT5HZXRFbGVt ZW50UHRySW5zdChiYXNlUHRyVmFsdWUsIGluZGV4VmFsdWUsIGJhc2VFeHByVHlwZSwgTExWTUdl dE5hbWUoYmFzZVB0clZhbHVlLCAiX29mZnNldCIpKTsKLSsgICAgICAgIGxsdm06OlZhbHVlICpw dHIgPSBjdHgtPkdldEVsZW1lbnRQdHJJbnN0KGJhc2VQdHJWYWx1ZSwgaW5kZXhWYWx1ZSwgYmFz ZUV4cHJUeXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGx2bTo6VHdpbmUoYmFzZVB0clZhbHVlLT5nZXROYW1lKCkpICsgIl9vZmZzZXQiKTsK LSAgICAgICAgIHJldHVybiBsQWRkVmFyeWluZ09mZnNldHNJZk5lZWRlZChjdHgsIHB0ciwgR2V0 TFZhbHVlVHlwZSgpKTsKLSAgICAgfQotIAotQEAgLTQyOTAsOCArNDI5MSw4IEBAIGxsdm06OlZh bHVlICpJbmRleEV4cHI6OkdldExWYWx1ZShGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgpIGNvbnN0 IHsKLSAgICAgY3R4LT5TZXREZWJ1Z1Bvcyhwb3MpOwotIAotICAgICAvLyBBbmQgZG8gdGhlIGFj dHVhbCBpbmRleGluZyBjYWxjdWxhdGlvbi4uCi0tICAgIGxsdm06OlZhbHVlICpwdHIgPQotLSAg ICAgICAgY3R4LT5HZXRFbGVtZW50UHRySW5zdChiYXNlUHRyLCBMTFZNSW50MzIoMCksIGluZGV4 VmFsdWUsIGJhc2VQdHJUeXBlLCBMTFZNR2V0TmFtZShiYXNlUHRyLCAiX29mZnNldCIpKTsKLSsg ICAgbGx2bTo6VmFsdWUgKnB0ciA9IGN0eC0+R2V0RWxlbWVudFB0ckluc3QoYmFzZVB0ciwgTExW TUludDMyKDApLCBpbmRleFZhbHVlLCBiYXNlUHRyVHlwZSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHdpbmUoYmFzZVB0ci0+Z2V0TmFtZSgp KSArICJfb2Zmc2V0Iik7Ci0gICAgIHJldHVybiBsQWRkVmFyeWluZ09mZnNldHNJZk5lZWRlZChj dHgsIHB0ciwgR2V0TFZhbHVlVHlwZSgpKTsKLSB9Ci0gCi1AQCAtNDc4OCwxNSArNDc4OSwxNCBA QCBsbHZtOjpWYWx1ZSAqVmVjdG9yTWVtYmVyRXhwcjo6R2V0VmFsdWUoRnVuY3Rpb25FbWl0Q29u dGV4dCAqY3R4KSBjb25zdCB7Ci0gICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlkZW50 aWZpZXIuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICBjaGFyIGlkU3RyWzJdID0ge2lkZW50 aWZpZXJbaV0sICdcMCd9OwotICAgICAgICAgICAgIGxsdm06OlZhbHVlICplbGVtZW50UHRyID0K LS0gICAgICAgICAgICAgICAgY3R4LT5BZGRFbGVtZW50T2Zmc2V0KGJhc2VQdHIsIGluZGljZXNb aV0sIGJhc2VQdHJUeXBlLCBMTFZNR2V0TmFtZShiYXNlUHRyLCBpZFN0cikpOwotKyAgICAgICAg ICAgICAgICBjdHgtPkFkZEVsZW1lbnRPZmZzZXQoYmFzZVB0ciwgaW5kaWNlc1tpXSwgYmFzZVB0 clR5cGUsIGxsdm06OlR3aW5lKGJhc2VQdHItPmdldE5hbWUoKSkgKyBpZFN0cik7Ci0gICAgICAg ICAgICAgbGx2bTo6VmFsdWUgKmVsZW1lbnRWYWx1ZSA9IGN0eC0+TG9hZEluc3QoZWxlbWVudFB0 ciwgZWxlbWVudE1hc2ssIGVsZW1lbnRQdHJUeXBlKTsKLSAKLS0gICAgICAgICAgICBjb25zdCBj aGFyICpyZXN1bHROYW1lID0gTExWTUdldE5hbWUocmVzdWx0UHRyLCBpZFN0cik7Ci0tICAgICAg ICAgICAgbGx2bTo6VmFsdWUgKnB0bXAgPSBjdHgtPkFkZEVsZW1lbnRPZmZzZXQocmVzdWx0UHRy LCBpLCBOVUxMLCByZXN1bHROYW1lKTsKLSsgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqcHRtcCA9 IGN0eC0+QWRkRWxlbWVudE9mZnNldChyZXN1bHRQdHIsIGksIE5VTEwsIGxsdm06OlR3aW5lKHJl c3VsdFB0ci0+Z2V0TmFtZSgpKSArIGlkU3RyKTsKLSAgICAgICAgICAgICBjdHgtPlN0b3JlSW5z dChlbGVtZW50VmFsdWUsIHB0bXAsIGVsZW1lbnRQdHJUeXBlLCBleHByLT5HZXRUeXBlKCktPklz VW5pZm9ybVR5cGUoKSk7Ci0gICAgICAgICB9Ci0gCi0tICAgICAgICByZXR1cm4gY3R4LT5Mb2Fk SW5zdChyZXN1bHRQdHIsIG1lbWJlclR5cGUsIExMVk1HZXROYW1lKGJhc2VQdHIsICJfc3dpenps ZSIpKTsKLSsgICAgICAgIHJldHVybiBjdHgtPkxvYWRJbnN0KHJlc3VsdFB0ciwgbWVtYmVyVHlw ZSwgbGx2bTo6VHdpbmUoYmFzZVB0ci0+Z2V0TmFtZSgpKSArICJfc3dpenpsZSIpOwotICAgICB9 Ci0gfQotIAotQEAgLTQ5MzIsNyArNDkzMiw3IEBAIGxsdm06OlZhbHVlICpNZW1iZXJFeHByOjpH ZXRWYWx1ZShGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgpIGNvbnN0IHsKLSAKLSAgICAgY3R4LT5T ZXREZWJ1Z1Bvcyhwb3MpOwotICAgICBzdGQ6OnN0cmluZyBzdWZmaXggPSBzdGQ6OnN0cmluZygi XyIpICsgaWRlbnRpZmllcjsKLS0gICAgcmV0dXJuIGN0eC0+TG9hZEluc3QobHZhbHVlLCBtYXNr LCBsdmFsdWVUeXBlLCBMTFZNR2V0TmFtZShsdmFsdWUsIHN1ZmZpeC5jX3N0cigpKSk7Ci0rICAg IHJldHVybiBjdHgtPkxvYWRJbnN0KGx2YWx1ZSwgbWFzaywgbHZhbHVlVHlwZSwgbGx2bTo6VHdp bmUobHZhbHVlLT5nZXROYW1lKCkpICsgc3VmZml4KTsKLSB9Ci0gCi0gY29uc3QgVHlwZSAqTWVt YmVyRXhwcjo6R2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIE5VTEw7IH0KLUBAIC02NTAyLDcgKzY1 MDIsNyBAQCBzdGF0aWMgbGx2bTo6VmFsdWUgKmxUeXBlQ29udkF0b21pYyhGdW5jdGlvbkVtaXRD b250ZXh0ICpjdHgsIGxsdm06OlZhbHVlICpleHByVgotICAgICAgICAgICAgICAgICAvLyBkb2Vz IGZvciBldmVyeW9uZSBlbHNlLi4uCi0gICAgICAgICAgICAgICAgIEFzc2VydChjYXN0KTsKLSAg ICAgICAgICAgICAgICAgY2FzdCA9IGN0eC0+U3dpdGNoQm9vbFNpemUoY2FzdCwgTExWTVR5cGVz OjpCb29sVmVjdG9yVHlwZS0+Z2V0RWxlbWVudFR5cGUoKSwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTExWTUdldE5hbWUoY2FzdCwgInRvX2lfYm9vbCIpKTsK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHdpbmUo Y2FzdC0+Z2V0TmFtZSgpKSArICJ0b19pX2Jvb2wiKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAg ICB9IGVsc2UgewotICAgICAgICAgICAgIC8vIGZyb21UeXBlLT5Jc1ZhcnlpbmdUeXBlKCkpCi1A QCAtODI0Niw3ICs4MjQ2LDcgQEAgbGx2bTo6VmFsdWUgKk5ld0V4cHI6OkdldFZhbHVlKEZ1bmN0 aW9uRW1pdENvbnRleHQgKmN0eCkgY29uc3QgewotICAgICAgICAgLy8gcG9pbnRlciBvZiB0aGUg cmV0dXJuIHR5cGUgYW5kIHRvIHJ1biB0aGUgY29kZSBmb3IgaW5pdGlhbGl6ZXJzLAotICAgICAg ICAgLy8gaWYgcHJlc2VudC4KLSAgICAgICAgIGxsdm06OlR5cGUgKnB0clR5cGUgPSByZXRUeXBl LT5MTFZNVHlwZShnLT5jdHgpOwotLSAgICAgICAgcHRyVmFsdWUgPSBjdHgtPkJpdENhc3RJbnN0 KHB0clZhbHVlLCBwdHJUeXBlLCBMTFZNR2V0TmFtZShwdHJWYWx1ZSwgIl9jYXN0X3B0ciIpKTsK LSsgICAgICAgIHB0clZhbHVlID0gY3R4LT5CaXRDYXN0SW5zdChwdHJWYWx1ZSwgcHRyVHlwZSwg bGx2bTo6VHdpbmUocHRyVmFsdWUtPmdldE5hbWUoKSkgKyAiX2Nhc3RfcHRyIik7Ci0gCi0gICAg ICAgICBpZiAoaW5pdEV4cHIgIT0gTlVMTCkKLSAgICAgICAgICAgICBJbml0U3ltYm9sKHB0clZh bHVlLCBhbGxvY1R5cGUsIGluaXRFeHByLCBjdHgsIHBvcyk7Ci1kaWZmIC0tZ2l0IGEvc3JjL2xs dm11dGlsLmNwcCBiL3NyYy9sbHZtdXRpbC5jcHAKLWluZGV4IDk3MDE3NWRiZi4uZDBiZWNiOWY1 IDEwMDY0NAotLS0tIGEvc3JjL2xsdm11dGlsLmNwcAotKysrIGIvc3JjL2xsdm11dGlsLmNwcAot QEAgLTE2MDUsMjMgKzE2MDUsNiBAQCBsbHZtOjpWYWx1ZSAqTExWTVNodWZmbGVWZWN0b3JzKGxs dm06OlZhbHVlICp2MSwgbGx2bTo6VmFsdWUgKnYyLCBpbnQzMl90IHNodWZbXQotICAgICByZXR1 cm4gbmV3IGxsdm06OlNodWZmbGVWZWN0b3JJbnN0KHYxLCB2MiwgdmVjLCAic2h1ZmZsZSIsIGlu c2VydEJlZm9yZSk7Ci0gfQotIAotLWNvbnN0IGNoYXIgKkxMVk1HZXROYW1lKGxsdm06OlZhbHVl ICp2LCBjb25zdCBjaGFyICpzKSB7Ci0tICAgIGlmICh2ID09IE5VTEwpCi0tICAgICAgICByZXR1 cm4gczsKLS0gICAgc3RkOjpzdHJpbmcgcmV0ID0gc3RkOjpzdHJpbmcodi0+Z2V0TmFtZSgpKTsK LS0gICAgcmV0ICs9IHM7Ci0tICAgIHJldHVybiBzdHJkdXAocmV0LmNfc3RyKCkpOwotLX0KLS0K LS1jb25zdCBjaGFyICpMTFZNR2V0TmFtZShjb25zdCBjaGFyICpvcCwgbGx2bTo6VmFsdWUgKnYx LCBsbHZtOjpWYWx1ZSAqdjIpIHsKLS0gICAgc3RkOjpzdHJpbmcgciA9IG9wOwotLSAgICByICs9 ICJfIjsKLS0gICAgciArPSB2MS0+Z2V0TmFtZSgpLnN0cigpOwotLSAgICByICs9ICJfIjsKLS0g ICAgciArPSB2Mi0+Z2V0TmFtZSgpLnN0cigpOwotLSAgICByZXR1cm4gc3RyZHVwKHIuY19zdHIo KSk7Ci0tfQotLQotICNpZmRlZiBJU1BDX0dFTlhfRU5BQkxFRAotIGJvb2wgbElzU1ZNTG9hZChs bHZtOjpJbnN0cnVjdGlvbiAqaW5zdCkgewotICAgICBBc3NlcnQoaW5zdCk7Ci1kaWZmIC0tZ2l0 IGEvc3JjL2xsdm11dGlsLmggYi9zcmMvbGx2bXV0aWwuaAotaW5kZXggNDJjY2U0ZDgzLi4wN2Qw ODliYjQgMTAwNjQ0Ci0tLS0gYS9zcmMvbGx2bXV0aWwuaAotKysrIGIvc3JjL2xsdm11dGlsLmgK LUBAIC0zMjgsMTEgKzMyOCw2IEBAIGV4dGVybiBsbHZtOjpWYWx1ZSAqTExWTUNvbmNhdFZlY3Rv cnMobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAqdjIsIGxsdm06OkluCi0gZXh0ZXJuIGxs dm06OlZhbHVlICpMTFZNU2h1ZmZsZVZlY3RvcnMobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1 ZSAqdjIsIGludDMyX3Qgc2h1ZltdLCBpbnQgc2h1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc2VydEJlZm9yZSk7Ci0g Ci0tLyoqIFV0aWxpdHkgcm91dGluZXMgdG8gY29uY2F0IHN0cmluZ3Mgd2l0aCB0aGUgbmFtZXMg b2YgZXhpc3RpbmcgdmFsdWVzIHRvCi0tICAgIGNyZWF0ZSBtZWFuaW5nZnVsIG5ldyBuYW1lcyBm b3IgaW5zdHJ1Y3Rpb24gdmFsdWVzLgotLSovCi0tZXh0ZXJuIGNvbnN0IGNoYXIgKkxMVk1HZXRO YW1lKGxsdm06OlZhbHVlICp2LCBjb25zdCBjaGFyICopOwotLWV4dGVybiBjb25zdCBjaGFyICpM TFZNR2V0TmFtZShjb25zdCBjaGFyICpvcCwgbGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAq djIpOwotICNpZmRlZiBJU1BDX0dFTlhfRU5BQkxFRAotIGVudW0gQWRkcmVzc1NwYWNlIHsgTG9j YWwsIEdsb2JhbCwgRXh0ZXJuYWwgfTsKLSAKLWRpZmYgLS1naXQgYS9zcmMvb3B0LmNwcCBiL3Ny Yy9vcHQuY3BwCi1pbmRleCA1YjFhYzdiNjMuLjlkNmNhZTA1OCAxMDA2NDQKLS0tLSBhL3NyYy9v cHQuY3BwCi0rKysgYi9zcmMvb3B0LmNwcAotQEAgLTI1Nyw3ICsyNTcsNyBAQCBzdGF0aWMgYm9v bCBsR2V0U291cmNlUG9zRnJvbU1ldGFkYXRhKGNvbnN0IGxsdm06Okluc3RydWN0aW9uICppbnN0 LCBTb3VyY2VQb3MgKgotICAgICByZXR1cm4gdHJ1ZTsKLSB9Ci0gCi0tc3RhdGljIGxsdm06Oklu c3RydWN0aW9uICpsQ2FsbEluc3QobGx2bTo6RnVuY3Rpb24gKmZ1bmMsIGxsdm06OlZhbHVlICph cmcwLCBsbHZtOjpWYWx1ZSAqYXJnMSwgY29uc3QgY2hhciAqbmFtZSwKLStzdGF0aWMgbGx2bTo6 SW5zdHJ1Y3Rpb24gKmxDYWxsSW5zdChsbHZtOjpGdW5jdGlvbiAqZnVuYywgbGx2bTo6VmFsdWUg KmFyZzAsIGxsdm06OlZhbHVlICphcmcxLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zZXJ0 QmVmb3JlID0gTlVMTCkgewotICAgICBsbHZtOjpWYWx1ZSAqYXJnc1syXSA9IHthcmcwLCBhcmcx fTsKLSAgICAgbGx2bTo6QXJyYXlSZWY8bGx2bTo6VmFsdWUgKj4gbmV3QXJnQXJyYXkoJmFyZ3Nb MF0sICZhcmdzWzJdKTsKLUBAIC0yNjUsMjEgKzI2NSwyMiBAQCBzdGF0aWMgbGx2bTo6SW5zdHJ1 Y3Rpb24gKmxDYWxsSW5zdChsbHZtOjpGdW5jdGlvbiAqZnVuYywgbGx2bTo6VmFsdWUgKmFyZzAs IGxsdgotIH0KLSAKLSBzdGF0aWMgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxDYWxsSW5zdChsbHZtOjpG dW5jdGlvbiAqZnVuYywgbGx2bTo6VmFsdWUgKmFyZzAsIGxsdm06OlZhbHVlICphcmcxLCBsbHZt OjpWYWx1ZSAqYXJnMiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpuYW1lLCBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zZXJ0QmVmb3JlID0gTlVMTCkgewot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZu YW1lLCBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zZXJ0QmVmb3JlID0gTlVMTCkgewotICAgICBsbHZt OjpWYWx1ZSAqYXJnc1szXSA9IHthcmcwLCBhcmcxLCBhcmcyfTsKLSAgICAgbGx2bTo6QXJyYXlS ZWY8bGx2bTo6VmFsdWUgKj4gbmV3QXJnQXJyYXkoJmFyZ3NbMF0sICZhcmdzWzNdKTsKLSAgICAg cmV0dXJuIGxsdm06OkNhbGxJbnN0OjpDcmVhdGUoZnVuYywgbmV3QXJnQXJyYXksIG5hbWUsIGlu c2VydEJlZm9yZSk7Ci0gfQotIAotIHN0YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0 KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUgKmFy ZzEsIGxsdm06OlZhbHVlICphcmcyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxsdm06OlZhbHVlICphcmczLCBjb25zdCBjaGFyICpuYW1lLCBsbHZtOjpJbnN0cnVjdGlv biAqaW5zZXJ0QmVmb3JlID0gTlVMTCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxsdm06OlZhbHVlICphcmczLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zZXJ0 QmVmb3JlID0gTlVMTCkgewotICAgICBsbHZtOjpWYWx1ZSAqYXJnc1s0XSA9IHthcmcwLCBhcmcx LCBhcmcyLCBhcmczfTsKLSAgICAgbGx2bTo6QXJyYXlSZWY8bGx2bTo6VmFsdWUgKj4gbmV3QXJn QXJyYXkoJmFyZ3NbMF0sICZhcmdzWzRdKTsKLSAgICAgcmV0dXJuIGxsdm06OkNhbGxJbnN0OjpD cmVhdGUoZnVuYywgbmV3QXJnQXJyYXksIG5hbWUsIGluc2VydEJlZm9yZSk7Ci0gfQotIAotIHN0 YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBs bHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUgKmFyZzEsIGxsdm06OlZhbHVlICphcmcyLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICphcmczLCBs bHZtOjpWYWx1ZSAqYXJnNCwgY29uc3QgY2hhciAqbmFtZSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqYXJnMywgbGx2bTo6VmFsdWUgKmFyZzQsIGNv bnN0IGxsdm06OlR3aW5lICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxsdm06Okluc3RydWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0gICAgIGxsdm06 OlZhbHVlICphcmdzWzVdID0ge2FyZzAsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzR9OwotICAgICBs bHZtOjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBuZXdBcmdBcnJheSgmYXJnc1swXSwgJmFyZ3Nb NV0pOwotQEAgLTI4Nyw3ICsyODgsNyBAQCBzdGF0aWMgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxDYWxs SW5zdChsbHZtOjpGdW5jdGlvbiAqZnVuYywgbGx2bTo6VmFsdWUgKmFyZzAsIGxsdgotIH0KLSAK LSBzdGF0aWMgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxDYWxsSW5zdChsbHZtOjpGdW5jdGlvbiAqZnVu YywgbGx2bTo6VmFsdWUgKmFyZzAsIGxsdm06OlZhbHVlICphcmcxLCBsbHZtOjpWYWx1ZSAqYXJn MiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqYXJn MywgbGx2bTo6VmFsdWUgKmFyZzQsIGxsdm06OlZhbHVlICphcmc1LCBjb25zdCBjaGFyICpuYW1l LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICphcmcz LCBsbHZtOjpWYWx1ZSAqYXJnNCwgbGx2bTo6VmFsdWUgKmFyZzUsIGNvbnN0IGxsdm06OlR3aW5l ICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3Ry dWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0gICAgIGxsdm06OlZhbHVlICphcmdzWzZd ID0ge2FyZzAsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzV9OwotICAgICBsbHZtOjpBcnJh eVJlZjxsbHZtOjpWYWx1ZSAqPiBuZXdBcmdBcnJheSgmYXJnc1swXSwgJmFyZ3NbNl0pOwotQEAg LTk5MSwyMyArOTkyLDI0IEBAIGJvb2wgSW50cmluc2ljc09wdDo6cnVuT25CYXNpY0Jsb2NrKGxs dm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAgICAgICAgICAgICAgIGxsdm06OlR5cGUgKnJldHVy blR5cGUgPSBjYWxsSW5zdC0+Z2V0VHlwZSgpOwotICAgICAgICAgICAgICAgICBBc3NlcnQobGx2 bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHJldHVyblR5cGUpKTsKLSAgICAgICAgICAgICAgICAg Ly8gY2FzdCB0aGUgaTggKiB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZQotLSAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpuYW1lID0gTExWTUdldE5hbWUoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQo MCksICJfY2FzdCIpOwotLSAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqY2FzdFB0ciA9IG5l dyBsbHZtOjpCaXRDYXN0SW5zdChjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2 bTo6UG9pbnRlclR5cGU6OmdldChyZXR1cm5UeXBlLCAwKSwgbmFtZSwgY2FsbEluc3QpOwotKyAg ICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqY2FzdFB0ciA9Ci0rICAgICAgICAgICAgICAgICAg ICBuZXcgbGx2bTo6Qml0Q2FzdEluc3QoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCksIGxsdm06 OlBvaW50ZXJUeXBlOjpnZXQocmV0dXJuVHlwZSwgMCksCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHdpbmUoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQo MCktPmdldE5hbWUoKSkgKyAiX2Nhc3QiLCBjYWxsSW5zdCk7Ci0gICAgICAgICAgICAgICAgIGxD b3B5TWV0YWRhdGEoY2FzdFB0ciwgY2FsbEluc3QpOwotICAgICAgICAgICAgICAgICBpbnQgYWxp Z247Ci0gICAgICAgICAgICAgICAgIGlmIChnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5KQotICAg ICAgICAgICAgICAgICAgICAgYWxpZ24gPSBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdu bWVudCgpOwotICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICBhbGln biA9IGNhbGxJbnN0LT5nZXRDYWxsZWRGdW5jdGlvbigpID09IGF2eE1hc2tlZExvYWQzMiA/IDQg OiA4OwotLSAgICAgICAgICAgICAgICBuYW1lID0gTExWTUdldE5hbWUoY2FsbEluc3QtPmdldEFy Z09wZXJhbmQoMCksICJfbG9hZCIpOwotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xM Vk1fMTBfMAotLSAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbG9hZEluc3QgPSBu ZXcgbGx2bTo6TG9hZEluc3QoY2FzdFB0ciwgbmFtZSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICov LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGx2bTo6TWF5YmVBbGlnbihhbGlnbiksIChsbHZtOjpJbnN0cnVjdGlvbiAq KU5VTEwpOwotKyAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbG9hZEluc3QgPQot KyAgICAgICAgICAgICAgICAgICAgbmV3IGxsdm06OkxvYWRJbnN0KGNhc3RQdHIsIGxsdm06OlR3 aW5lKGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDApLT5nZXROYW1lKCkpICsgIl9sb2FkIiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBub3Qgdm9sYXRp bGUgKi8sIGxsdm06Ok1heWJlQWxpZ24oYWxpZ24pLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxM KTsKLSAjZWxzZQotICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbG9hZEluc3Qg PSBuZXcgbGx2bTo6TG9hZEluc3QoCi0tICAgICAgICAgICAgICAgICAgICBsbHZtOjpkeW5fY2Fz dDxsbHZtOjpQb2ludGVyVHlwZT4oY2FzdFB0ci0+Z2V0VHlwZSgpKS0+Z2V0UG9pbnRlckVsZW1l bnRUeXBlKCksIGNhc3RQdHIsIG5hbWUsCi0tICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBu b3Qgdm9sYXRpbGUgKi8sIGxsdm06Ok1heWJlQWxpZ24oYWxpZ24pLnZhbHVlT3JPbmUoKSwgKGxs dm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpkeW5f Y2FzdDxsbHZtOjpQb2ludGVyVHlwZT4oY2FzdFB0ci0+Z2V0VHlwZSgpKS0+Z2V0UG9pbnRlckVs ZW1lbnRUeXBlKCksIGNhc3RQdHIsCi0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShj YWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKS0+Z2V0TmFtZSgpKSArICJfbG9hZCIsIGZhbHNlIC8q IG5vdCB2b2xhdGlsZSAqLywKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06Ok1heWJlQWxpZ24o YWxpZ24pLnZhbHVlT3JPbmUoKSwgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0gI2VuZGlm Ci0gICAgICAgICAgICAgICAgIGxDb3B5TWV0YWRhdGEobG9hZEluc3QsIGNhbGxJbnN0KTsKLSAg ICAgICAgICAgICAgICAgbGx2bTo6UmVwbGFjZUluc3RXaXRoSW5zdChjYWxsSW5zdCwgbG9hZElu c3QpOwotQEAgLTEwMjgsOSArMTAzMCw5IEBAIGJvb2wgSW50cmluc2ljc09wdDo6cnVuT25CYXNp Y0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAgICAgICAgICAgICAgIC8vIGFsbCBs YW5lcyBzdG9yaW5nLCBzbyByZXBsYWNlIHdpdGggYSByZWd1bGFyIHN0b3JlCi0gICAgICAgICAg ICAgICAgIGxsdm06OlZhbHVlICpydmFsdWUgPSBjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgyKTsK LSAgICAgICAgICAgICAgICAgbGx2bTo6VHlwZSAqc3RvcmVUeXBlID0gcnZhbHVlLT5nZXRUeXBl KCk7Ci0tICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBMTFZNR2V0TmFtZShjYWxs SW5zdC0+Z2V0QXJnT3BlcmFuZCgwKSwgIl9wdHJjYXN0Iik7Ci0tICAgICAgICAgICAgICAgIGxs dm06OlZhbHVlICpjYXN0UHRyID0gbmV3IGxsdm06OkJpdENhc3RJbnN0KGNhbGxJbnN0LT5nZXRB cmdPcGVyYW5kKDApLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KHN0b3JlVHlwZSwgMCks IG5hbWUsIGNhbGxJbnN0KTsKLSsgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmNhc3RQdHIg PQotKyAgICAgICAgICAgICAgICAgICAgbmV3IGxsdm06OkJpdENhc3RJbnN0KGNhbGxJbnN0LT5n ZXRBcmdPcGVyYW5kKDApLCBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KHN0b3JlVHlwZSwgMCksCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHdpbmUoY2Fs bEluc3QtPmdldEFyZ09wZXJhbmQoMCktPmdldE5hbWUoKSkgKyAiX3B0cmNhc3QiLCBjYWxsSW5z dCk7Ci0gICAgICAgICAgICAgICAgIGxDb3B5TWV0YWRhdGEoY2FzdFB0ciwgY2FsbEluc3QpOwot IAotICAgICAgICAgICAgICAgICBpbnQgYWxpZ247Ci1AQCAtMTMzOSw4ICsxMzQxLDggQEAgc3Rh dGljIGxsdm06OlZhbHVlICpsR2V0QmFzZVBvaW50ZXIobGx2bTo6VmFsdWUgKnYsIGxsdm06Oklu c3RydWN0aW9uICppbnNlcnRCZWYKLSAgICAgICAgIGlmICh0ID09IE5VTEwpIHsKLSAgICAgICAg ICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgcmV0dXJu IGxsdm06OkNhc3RJbnN0OjpDcmVhdGUoY2ktPmdldE9wY29kZSgpLCB0LCBjaS0+Z2V0VHlwZSgp LT5nZXRTY2FsYXJUeXBlKCksIExMVk1HZXROYW1lKHQsICJfY2FzdCIpLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAg ICAgcmV0dXJuIGxsdm06OkNhc3RJbnN0OjpDcmVhdGUoY2ktPmdldE9wY29kZSgpLCB0LCBjaS0+ Z2V0VHlwZSgpLT5nZXRTY2FsYXJUeXBlKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGx2bTo6VHdpbmUodC0+Z2V0TmFtZSgpKSArICJfY2FzdCIsIGluc2Vy dEJlZm9yZSk7Ci0gICAgICAgICB9Ci0gICAgIH0KLSAKLUBAIC0xNTgzLDEzICsxNTg1LDEzIEBA IHN0YXRpYyB2b2lkIGxFeHRyYWN0Q29uc3RhbnRPZmZzZXQobGx2bTo6VmFsdWUgKnZlYywgbGx2 bTo6VmFsdWUgKipjb25zdE9mZnNldCwKLSAgICAgICAgIGlmIChjbyA9PSBOVUxMKQotICAgICAg ICAgICAgICpjb25zdE9mZnNldCA9IE5VTEw7Ci0gICAgICAgICBlbHNlCi0tICAgICAgICAgICAg KmNvbnN0T2Zmc2V0ID0KLS0gICAgICAgICAgICAgICAgbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZShj YXN0LT5nZXRPcGNvZGUoKSwgY28sIGNhc3QtPmdldFR5cGUoKSwgTExWTUdldE5hbWUoY28sICJf Y2FzdCIpLCBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAgICpjb25zdE9mZnNldCA9IGxsdm06 OkNhc3RJbnN0OjpDcmVhdGUoY2FzdC0+Z2V0T3Bjb2RlKCksIGNvLCBjYXN0LT5nZXRUeXBlKCks Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZt OjpUd2luZShjby0+Z2V0TmFtZSgpKSArICJfY2FzdCIsIGluc2VydEJlZm9yZSk7Ci0gICAgICAg ICBpZiAodm8gPT0gTlVMTCkKLSAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSBOVUxMOwot ICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9Ci0tICAgICAgICAg ICAgICAgIGxsdm06OkNhc3RJbnN0OjpDcmVhdGUoY2FzdC0+Z2V0T3Bjb2RlKCksIHZvLCBjYXN0 LT5nZXRUeXBlKCksIExMVk1HZXROYW1lKHZvLCAiX2Nhc3QiKSwgaW5zZXJ0QmVmb3JlKTsKLSsg ICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSBsbHZtOjpDYXN0SW5zdDo6Q3JlYXRlKGNhc3Qt PmdldE9wY29kZSgpLCB2bywgY2FzdC0+Z2V0VHlwZSgpLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHdpbmUodm8tPmdldE5hbWUo KSkgKyAiX2Nhc3QiLCBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgcmV0dXJuOwotICAgICB9Ci0g Ci1AQCAtMTYwOCwxNiArMTYxMCwxOCBAQCBzdGF0aWMgdm9pZCBsRXh0cmFjdENvbnN0YW50T2Zm c2V0KGxsdm06OlZhbHVlICp2ZWMsIGxsdm06OlZhbHVlICoqY29uc3RPZmZzZXQsCi0gICAgICAg ICAgICAgZWxzZSBpZiAoYzEgPT0gTlVMTCB8fCBsbHZtOjppc2E8bGx2bTo6Q29uc3RhbnRBZ2dy ZWdhdGVaZXJvPihjMSkpCi0gICAgICAgICAgICAgICAgICpjb25zdE9mZnNldCA9IGMwOwotICAg ICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gbGx2bTo6Qmlu YXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCBjMCwgYzEsIExMVk1H ZXROYW1lKCJhZGQiLCBjMCwgYzEpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAg ICAgICpjb25zdE9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUoCi0rICAgICAg ICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCBjMCwgYzEsICgobGx2bTo6VHdp bmUoImFkZF8iKSArIGMwLT5nZXROYW1lKCkpICsgIl8iKSArIGMxLT5nZXROYW1lKCksCi0rICAg ICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotIAotICAgICAgICAgICAgIGlmICh2MCA9 PSBOVUxMIHx8IGxsdm06OmlzYTxsbHZtOjpDb25zdGFudEFnZ3JlZ2F0ZVplcm8+KHYwKSkKLSAg ICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gdjE7Ci0gICAgICAgICAgICAgZWxzZSBp ZiAodjEgPT0gTlVMTCB8fCBsbHZtOjppc2E8bGx2bTo6Q29uc3RhbnRBZ2dyZWdhdGVaZXJvPih2 MSkpCi0gICAgICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9IHYwOwotICAgICAgICAgICAg IGVsc2UKLS0gICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3Bl cmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2MCwgdjEsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExW TUdldE5hbWUoImFkZCIsIHYwLCB2MSksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAg ICp2YXJpYWJsZU9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUoCi0rICAgICAg ICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2MCwgdjEsICgobGx2bTo6VHdp bmUoImFkZF8iKSArIHYwLT5nZXROYW1lKCkpICsgIl8iKSArIHYxLT5nZXROYW1lKCksCi0rICAg ICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgICAgIHJldHVybjsKLSAg ICAgICAgIH0gZWxzZSBpZiAoYm9wLT5nZXRPcGNvZGUoKSA9PSBsbHZtOjpJbnN0cnVjdGlvbjo6 U2hsKSB7Ci0gICAgICAgICAgICAgbEV4dHJhY3RDb25zdGFudE9mZnNldChvcDAsICZjMCwgJnYw LCBpbnNlcnRCZWZvcmUpOwotQEAgLTE2MzMsMTAgKzE2MzcsMTIgQEAgc3RhdGljIHZvaWQgbEV4 dHJhY3RDb25zdGFudE9mZnNldChsbHZtOjpWYWx1ZSAqdmVjLCBsbHZtOjpWYWx1ZSAqKmNvbnN0 T2Zmc2V0LAotICAgICAgICAgICAgICAgICAqY29uc3RPZmZzZXQgPSB2ZWM7Ci0gICAgICAgICAg ICAgICAgICp2YXJpYWJsZU9mZnNldCA9IE5VTEw7Ci0gICAgICAgICAgICAgfSBlbHNlIHsKLS0g ICAgICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0 ZShsbHZtOjpJbnN0cnVjdGlvbjo6U2hsLCBjMCwgYzEsIExMVk1HZXROYW1lKCJzaGwiLCBjMCwg YzEpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0tICAgICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNl dCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246OlNobCwg djAsIGMxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExMVk1HZXROYW1lKCJzaGwiLCB2MCwgYzEpLCBpbnNlcnRCZWZvcmUp OwotKyAgICAgICAgICAgICAgICAqY29uc3RPZmZzZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6 Q3JlYXRlKAotKyAgICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb246OlNobCwgYzAs IGMxLCAoKGxsdm06OlR3aW5lKCJzaGxfIikgKyBjMC0+Z2V0TmFtZSgpKSArICJfIikgKyBjMS0+ Z2V0TmFtZSgpLAotKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSsgICAgICAg ICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZSgK LSsgICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uOjpTaGwsIHYwLCBjMSwgKChs bHZtOjpUd2luZSgic2hsXyIpICsgdjAtPmdldE5hbWUoKSkgKyAiXyIpICsgYzEtPmdldE5hbWUo KSwKLSsgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICAgICAgfQot ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0gZWxzZSBpZiAoYm9wLT5nZXRPcGNvZGUo KSA9PSBsbHZtOjpJbnN0cnVjdGlvbjo6TXVsKSB7Ci1AQCAtMTY0OCwyNSArMTY1NCwzMCBAQCBz dGF0aWMgdm9pZCBsRXh0cmFjdENvbnN0YW50T2Zmc2V0KGxsdm06OlZhbHVlICp2ZWMsIGxsdm06 OlZhbHVlICoqY29uc3RPZmZzZXQsCi0gICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBmaXJz dCB0ZXJtIGlzIGEgY29uc3RhbnQgYW5kIHRoZSBsYXN0IHRocmVlIGFyZQotICAgICAgICAgICAg IC8vIHZhcmlhYmxlLgotICAgICAgICAgICAgIGlmIChjMCAhPSBOVUxMICYmIGMxICE9IE5VTEwp Ci0tICAgICAgICAgICAgICAgICpjb25zdE9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpD cmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgYzAsIGMxLCBMTFZNR2V0TmFtZSgibXVsIiwg YzAsIGMxKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAgICAgICAqY29uc3RPZmZz ZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKAotKyAgICAgICAgICAgICAgICAgICAg bGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgYzAsIGMxLCAoKGxsdm06OlR3aW5lKCJtdWxfIikgKyBj MC0+Z2V0TmFtZSgpKSArICJfIikgKyBjMS0+Z2V0TmFtZSgpLAotKyAgICAgICAgICAgICAgICAg ICAgaW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICpj b25zdE9mZnNldCA9IE5VTEw7Ci0gCi0gICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnZhID0gTlVM TCwgKnZiID0gTlVMTCwgKnZjID0gTlVMTDsKLSAgICAgICAgICAgICBpZiAodjAgIT0gTlVMTCAm JiBjMSAhPSBOVUxMKQotLSAgICAgICAgICAgICAgICB2YSA9IGxsdm06OkJpbmFyeU9wZXJhdG9y OjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgdjAsIGMxLCBMTFZNR2V0TmFtZSgibXVs IiwgdjAsIGMxKSwKLSsgICAgICAgICAgICAgICAgdmEgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6 Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpNdWwsIHYwLCBjMSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobGx2bTo6VHdpbmUoIm11bF8iKSAr IHYwLT5nZXROYW1lKCkpICsgIl8iKSArIGMxLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotICAgICAg ICAgICAgIGlmIChjMCAhPSBOVUxMICYmIHYxICE9IE5VTEwpCi0tICAgICAgICAgICAgICAgIHZi ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCBj MCwgdjEsIExMVk1HZXROYW1lKCJtdWwiLCBjMCwgdjEpLAotKyAgICAgICAgICAgICAgICB2YiA9 IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgYzAs IHYxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KChsbHZtOjpUd2luZSgibXVsXyIpICsgYzAtPmdldE5hbWUoKSkgKyAiXyIpICsgdjEtPmdldE5h bWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluc2VydEJlZm9yZSk7Ci0gICAgICAgICAgICAgaWYgKHYwICE9IE5VTEwgJiYgdjEgIT0gTlVM TCkKLS0gICAgICAgICAgICAgICAgdmMgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxs dm06Okluc3RydWN0aW9uOjpNdWwsIHYwLCB2MSwgTExWTUdldE5hbWUoIm11bCIsIHYwLCB2MSks Ci0rICAgICAgICAgICAgICAgIHZjID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZt OjpJbnN0cnVjdGlvbjo6TXVsLCB2MCwgdjEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKGxsdm06OlR3aW5lKCJtdWxfIikgKyB2MC0+Z2V0TmFt ZSgpKSArICJfIikgKyB2MS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSAKLSAgICAgICAgICAgICBs bHZtOjpWYWx1ZSAqdmFiID0gTlVMTDsKLSAgICAgICAgICAgICBpZiAodmEgIT0gTlVMTCAmJiB2 YiAhPSBOVUxMKQotLSAgICAgICAgICAgICAgICB2YWIgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6 Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpBZGQsIHZhLCB2YiwgTExWTUdldE5hbWUoImFkZCIs IHZhLCB2YiksCi0rICAgICAgICAgICAgICAgIHZhYiA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpD cmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246OkFkZCwgdmEsIHZiLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobGx2bTo6VHdpbmUoImFkZF8iKSAr IHZhLT5nZXROYW1lKCkpICsgIl8iKSArIHZiLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSAgICAg ICAgICAgICBlbHNlIGlmICh2YSAhPSBOVUxMKQotICAgICAgICAgICAgICAgICB2YWIgPSB2YTsK LUBAIC0xNjc0LDggKzE2ODUsOSBAQCBzdGF0aWMgdm9pZCBsRXh0cmFjdENvbnN0YW50T2Zmc2V0 KGxsdm06OlZhbHVlICp2ZWMsIGxsdm06OlZhbHVlICoqY29uc3RPZmZzZXQsCi0gICAgICAgICAg ICAgICAgIHZhYiA9IHZiOwotIAotICAgICAgICAgICAgIGlmICh2YWIgIT0gTlVMTCAmJiB2YyAh PSBOVUxMKQotLSAgICAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSBsbHZtOjpCaW5hcnlP cGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpBZGQsIHZhYiwgdmMsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TExWTUdldE5hbWUoImFkZCIsIHZhYiwgdmMpLCBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAg ICAgICAqdmFyaWFibGVPZmZzZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKAotKyAg ICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb246OkFkZCwgdmFiLCB2YywgKChsbHZt OjpUd2luZSgiYWRkXyIpICsgdmFiLT5nZXROYW1lKCkpICsgIl8iKSArIHZjLT5nZXROYW1lKCks Ci0rICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgICAgIGVsc2Ug aWYgKHZhYiAhPSBOVUxMKQotICAgICAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSB2YWI7 Ci0gICAgICAgICAgICAgZWxzZQotQEAgLTE5NDMsNyArMTk1NSw3IEBAIHN0YXRpYyBib29sIGxP ZmZzZXRzMzJCaXRTYWZlKGxsdm06OlZhbHVlICoqdmFyaWFibGVPZmZzZXRQdHIsIGxsdm06OlZh bHVlICoqY29uCi0gICAgICAgICAgICAgLy8gYWxsIHplcm9zIChpLmUuIGEgQ29uc3RhbnRBZ2dy ZWdhdGVaZXJvLCBidXQganVzdCBpbiBjYXNlLAotICAgICAgICAgICAgIC8vIGRvIHRoZSBtb3Jl IGdlbmVyYWwgY2hlY2sgd2l0aCBsVmVjdG9ySXMzMkJpdEludHMoKS4KLSAgICAgICAgICAgICB2 YXJpYWJsZU9mZnNldCA9IG5ldyBsbHZtOjpUcnVuY0luc3QodmFyaWFibGVPZmZzZXQsIExMVk1U eXBlczo6SW50MzJWZWN0b3JUeXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMTFZNR2V0TmFtZSh2YXJpYWJsZU9mZnNldCwgIl90cnVuYyIpLCBp bnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsbHZtOjpUd2luZSh2YXJpYWJsZU9mZnNldC0+Z2V0TmFtZSgpKSArICJfdHJ1bmMi LCBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgZWxzZQotICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKLSAgICAgfQotQEAgLTE5NTIsNyArMTk2NCw3IEBAIHN0YXRpYyBib29sIGxPZmZzZXRzMzJC aXRTYWZlKGxsdm06OlZhbHVlICoqdmFyaWFibGVPZmZzZXRQdHIsIGxsdm06OlZhbHVlICoqY29u Ci0gICAgICAgICBpZiAobFZlY3RvcklzMzJCaXRJbnRzKGNvbnN0T2Zmc2V0KSkgewotICAgICAg ICAgICAgIC8vIFRydW5jYXRlIHRoZW0gc28gd2UgaGF2ZSBhIDMyLWJpdCB2ZWN0b3IgdHlwZSBm b3IgdGhlbS4KLSAgICAgICAgICAgICBjb25zdE9mZnNldCA9IG5ldyBsbHZtOjpUcnVuY0luc3Qo Y29uc3RPZmZzZXQsIExMVk1UeXBlczo6SW50MzJWZWN0b3JUeXBlLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNR2V0TmFtZShjb25zdE9mZnNldCwg Il90cnVuYyIpLCBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShjb25zdE9mZnNldC0+Z2V0TmFtZSgpKSArICJf dHJ1bmMiLCBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAv LyBGSVhNRTogb3RoZXJ3aXNlIHdlIGp1c3QgYXNzdW1lIHRoYXQgYWxsIGNvbnN0YW50IG9mZnNl dHMKLSAgICAgICAgICAgICAvLyBjYW4gYWN0dWFsbHkgYWx3YXlzIGZpdCBpbnRvIDMyLWJpdHMu Li4gIChUaGlzIGNvdWxkIGJlCi1AQCAtMTk2Myw3ICsxOTc1LDcgQEAgc3RhdGljIGJvb2wgbE9m ZnNldHMzMkJpdFNhZmUobGx2bTo6VmFsdWUgKip2YXJpYWJsZU9mZnNldFB0ciwgbGx2bTo6VmFs dWUgKipjb24KLSAgICAgICAgICAgICAvLyBsbHZtOjpDb25zdGFudEZvbGRJbnN0cnVjdGlvbigp IGRvZXNuJ3Qgc2VlbSB0byBiZSBkb2luZwotICAgICAgICAgICAgIC8vIGVub3VnaCBmb3IgdXMg aW4gc29tZSBjYXNlcyBpZiB3ZSBjYWxsIGl0IGZyb20gaGVyZS4KLSAgICAgICAgICAgICBjb25z dE9mZnNldCA9IG5ldyBsbHZtOjpUcnVuY0luc3QoY29uc3RPZmZzZXQsIExMVk1UeXBlczo6SW50 MzJWZWN0b3JUeXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMTFZNR2V0TmFtZShjb25zdE9mZnNldCwgIl90cnVuYyIpLCBpbnNlcnRCZWZvcmUpOwot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2lu ZShjb25zdE9mZnNldC0+Z2V0TmFtZSgpKSArICJfdHJ1bmMiLCBpbnNlcnRCZWZvcmUpOwotICAg ICAgICAgfQotICAgICB9Ci0gCi1AQCAtMjAxMiw4ICsyMDI0LDggQEAgc3RhdGljIGJvb2wgbE9m ZnNldHMzMkJpdFNhZmUobGx2bTo6VmFsdWUgKipvZmZzZXRQdHIsIGxsdm06Okluc3RydWN0aW9u ICppbnNlcnQKLSAKLSAgICAgICAgIC8vIEFsdGVybmF0aXZlbHksIG9mZnNldCBjb3VsZCBiZSBh IHNlcXVlbmNlIG9mIGFkZHMgdGVybWluYXRpbmcKLSAgICAgICAgIC8vIGluIHNhZmUgY29uc3Rh bnQgdmVjdG9ycyBvciBhIFNFeHQuCi0tICAgICAgICAqb2Zmc2V0UHRyID0KLS0gICAgICAgICAg ICBuZXcgbGx2bTo6VHJ1bmNJbnN0KG9mZnNldCwgTExWTVR5cGVzOjpJbnQzMlZlY3RvclR5cGUs IExMVk1HZXROYW1lKG9mZnNldCwgIl90cnVuYyIpLCBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAg Km9mZnNldFB0ciA9IG5ldyBsbHZtOjpUcnVuY0luc3Qob2Zmc2V0LCBMTFZNVHlwZXM6OkludDMy VmVjdG9yVHlwZSwgbGx2bTo6VHdpbmUob2Zmc2V0LT5nZXROYW1lKCkpICsgIl90cnVuYyIsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwot ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIH0gZWxzZQotICAgICAgICAgcmV0dXJuIGZhbHNl OwotQEAgLTIyMjksNyArMjI0MSw4IEBAIHN0YXRpYyBib29sIGxHU1RvR1NCYXNlT2Zmc2V0cyhs bHZtOjpDYWxsSW5zdCAqY2FsbEluc3QpIHsKLSAgICAgfQotICAgICAvLyBDYXN0IHRoZSBiYXNl IHBvaW50ZXIgdG8gYSB2b2lkICosIHNpbmNlIHRoYXQncyB3aGF0IHRoZQotICAgICAvLyBfX3Bz ZXVkb18qX2Jhc2Vfb2Zmc2V0c18qIGZ1bmN0aW9ucyB3YW50LgotLSAgICBiYXNlUHRyID0gbmV3 IGxsdm06OkludFRvUHRySW5zdChiYXNlUHRyLCBMTFZNVHlwZXM6OlZvaWRQb2ludGVyVHlwZSwg TExWTUdldE5hbWUoYmFzZVB0ciwgIl8ydm9pZCIpLCBjYWxsSW5zdCk7Ci0rICAgIGJhc2VQdHIg PSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0KGJhc2VQdHIsIExMVk1UeXBlczo6Vm9pZFBvaW50ZXJU eXBlLCBsbHZtOjpUd2luZShiYXNlUHRyLT5nZXROYW1lKCkpICsgIl8ydm9pZCIsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxJbnN0KTsKLSAgICAgbENvcHlNZXRh ZGF0YShiYXNlUHRyLCBjYWxsSW5zdCk7Ci0gICAgIGxsdm06OkZ1bmN0aW9uICpnYXRoZXJTY2F0 dGVyRnVuYyA9IGluZm8tPmJhc2VPZmZzZXRzRnVuYzsKLSAKLUBAIC0yODAzLDcgKzI4MTYsNyBA QCBzdGF0aWMgYm9vbCBsR1NUb0xvYWRTdG9yZShsbHZtOjpDYWxsSW5zdCAqY2FsbEluc3QpIHsK LSAgICAgICAgICAgICAgICAgbENvcHlNZXRhZGF0YShwdHIsIGNhbGxJbnN0KTsKLSAgICAgICAg ICAgICAgICAgRGVidWcocG9zLCAiVHJhbnNmb3JtZWQgZ2F0aGVyIHRvIHVuYWxpZ25lZCB2ZWN0 b3IgbG9hZCEiKTsKLSAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKm5ld0NhbGwg PQotLSAgICAgICAgICAgICAgICAgICAgbENhbGxJbnN0KGdhdGhlckluZm8tPmxvYWRNYXNrZWRG dW5jLCBwdHIsIG1hc2ssIExMVk1HZXROYW1lKHB0ciwgIl9tYXNrZWRfbG9hZCIpKTsKLSsgICAg ICAgICAgICAgICAgICAgIGxDYWxsSW5zdChnYXRoZXJJbmZvLT5sb2FkTWFza2VkRnVuYywgcHRy LCBtYXNrLCBsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkgKyAiX21hc2tlZF9sb2FkIik7Ci0g ICAgICAgICAgICAgICAgIGxDb3B5TWV0YWRhdGEobmV3Q2FsbCwgY2FsbEluc3QpOwotICAgICAg ICAgICAgICAgICBsbHZtOjpSZXBsYWNlSW5zdFdpdGhJbnN0KGNhbGxJbnN0LCBuZXdDYWxsKTsK LSAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMv cGF0Y2hlcy9sbHZtMTItMDA0LnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAw NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E5NGQ4NDQzYTVlLi4wMDAw MDAwMDAwMDAKLS0tIGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gYzAzYTUxNDI0NDQ0NzZhMWNhYTVjMmJh N2ZhMmQ5MmQ3NzkzZDZmMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlZXBhayBS YWplbmRyYWt1bWFyYW4gPGRlZXBhay5yYWplbmRyYWt1bWFyYW5AaW50ZWwuY29tPgotRGF0ZTog TW9uLCAyNSBKYW4gMjAyMSAwOToyMjo0OSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXhpbmcg YnVpbGQgb24gbGx2bSB0cnVuay4KLQotLS0tCi0gc3JjL2N0eC5jcHAgfCA3ICsrKy0tLS0KLSAx IGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0t Z2l0IGEvc3JjL2N0eC5jcHAgYi9zcmMvY3R4LmNwcAotaW5kZXggZGVkNTI0YjcxLi5iNjBlNmZl ODQgMTAwNjQ0Ci0tLS0gYS9zcmMvY3R4LmNwcAotKysrIGIvc3JjL2N0eC5jcHAKLUBAIC0xMDIw LDggKzEwMjAsNyBAQCB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6OkVtaXRDYXNlTGFiZWwoaW50 IHZhbHVlLCBib29sIGNoZWNrTWFzaywgU291cmNlUG9zIHBvcwotICAgICBsbHZtOjpCYXNpY0Js b2NrICpiYkNhc2VJbXBsID0gTlVMTDsKLSAgICAgaWYgKGVtaXRHZW5YSGFyZHdhcmVNYXNrKCkp IHsKLSAgICAgICAgIC8vIENyZWF0ZSBiYXNpYyBibG9jayB3aXRoIGFjdHVhbCBjYXNlIGltcGxl bWVudGF0aW9uCi0tICAgICAgICBsbHZtOjpUd2luZSBiYk5hbWUgPSBsbHZtOjpUd2luZShiYkNh c2UtPmdldE5hbWUoKSkgKyAiX2ltcGwiOwotLSAgICAgICAgYmJDYXNlSW1wbCA9IENyZWF0ZUJh c2ljQmxvY2soYmJOYW1lLCBiYkNhc2UpOwotKyAgICAgICAgYmJDYXNlSW1wbCA9IENyZWF0ZUJh c2ljQmxvY2sobGx2bTo6VHdpbmUoYmJDYXNlLT5nZXROYW1lKCkpICsgIl9pbXBsIiwgYmJDYXNl KTsKLSAgICAgfQotICNlbmRpZgotIAotQEAgLTMxNDIsOCArMzE0MSw4IEBAIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCcm9hZGNhc3RWYWx1ZShsbHZtOjpWYWx1ZSAqdiwgbGx2 bTo6VHlwZSAqdmVjCi0gICAgIGxsdm06OlZhbHVlICp1bmRlZjIgPSBsbHZtOjpVbmRlZlZhbHVl OjpnZXQodmVjVHlwZSk7Ci0gCi0gICAgIC8vIEluc2VydEVsZW1lbnQKLS0gICAgbGx2bTo6VHdp bmUgdHcgPSBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2luZSh2LT5nZXROYW1l KCkpICsgIl9icm9hZGNhc3QiKSA6IG5hbWUgKyBsbHZtOjpUd2luZSgiX2luaXQiKTsKLS0gICAg bGx2bTo6VmFsdWUgKmluc2VydCA9IEluc2VydEluc3QodW5kZWYxLCB2LCAwLCB0dy5zdHIoKS5j X3N0cigpKTsKLSsgICAgbGx2bTo6VmFsdWUgKmluc2VydCA9Ci0rICAgICAgICBJbnNlcnRJbnN0 KHVuZGVmMSwgdiwgMCwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAobGx2bTo6VHdpbmUodi0+ Z2V0TmFtZSgpKSArICJfYnJvYWRjYXN0IikgOiBuYW1lICsgIl9pbml0Iik7Ci0gCi0gICAgIC8v IFNodWZmbGVWZWN0b3IKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMApk aWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNS5wYXRjaCBiL3NyY3Br Z3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGUzZTk2YjAwYWJmYS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRj aGVzL2xsdm0xMi0wMDUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNzIgKzAsMCBAQAotRnJv bSBjMWQwYTUxYmY4NDE2ZDQyMTQ0ZGU5ZTJiZGQ1OTgyNWVhZWZmMWFjIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQotRnJvbTogQXJpbmEgTmVzaGx5YWV2YSA8YXJpbmEubmVzaGx5YWV2YUBpbnRl bC5jb20+Ci1EYXRlOiBGcmksIDggSmFuIDIwMjEgMTQ6MTM6NDkgLTA4MDAKLVN1YmplY3Q6IFtQ QVRDSF0gTExWTSAxMSBzdXBwb3J0IGZvciBnZW4gY29kZQotCi0tLS0KLSBzcmMvY3R4LmNwcCAg ICAgICAgICAgICAgICAgICAgIHwgIDEzICsrLQotIHNyYy9nZW4vR2xvYmFsc0xvY2FsaXphdGlv bi5jcHAgfCAgIDkgKy0KLSBzcmMvb3B0LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgMTQzICsr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMjQgaW5z ZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBi L3NyYy9jdHguY3BwCi1pbmRleCBiNjBlNmZlODQuLjJhNzJlNjgzNyAxMDA2NDQKLS0tLSBhL3Ny Yy9jdHguY3BwCi0rKysgYi9zcmMvY3R4LmNwcAotQEAgLTEsNSArMSw1IEBACi0gLyoKLS0gIENv cHlyaWdodCAoYykgMjAxMC0yMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbgotKyAgQ29weXJpZ2h0IChj KSAyMDEwLTIwMjEsIEludGVsIENvcnBvcmF0aW9uCi0gICBBbGwgcmlnaHRzIHJlc2VydmVkLgot IAotICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg d2l0aCBvciB3aXRob3V0Ci1AQCAtMzY4NSw4ICszNjg1LDE3IEBAIGxsdm06OlZhbHVlICpGdW5j dGlvbkVtaXRDb250ZXh0OjpHZW5YU2ltZENGUHJlZGljYXRlKGxsdm06OlZhbHVlICp2YWx1ZSwg bGx2bTo6Ci0gICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBsbHZtOjppc2E8bGx2bTo6VmVjdG9y VHlwZT4odmFsdWUtPmdldFR5cGUoKSkpOwotICAgICBsbHZtOjpWZWN0b3JUeXBlICp2dCA9IGxs dm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHZhbHVlLT5nZXRUeXBlKCkpOwotICAgICBp ZiAoZGVmYXVsdHMgPT0gTlVMTCkgewotLSAgICAgICAgZGVmYXVsdHMgPSBsbHZtOjpDb25zdGFu dFZlY3Rvcjo6Z2V0U3BsYXQodmFsdWUtPmdldFR5cGUoKS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMo KSwKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgZGVm YXVsdHMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQodnQtPmdldFZlY3Rvck51bUVs ZW1lbnRzKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKHZ0LT5nZXRFbGVtZW50VHlwZSgpKSk7 Ci0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAgIGRl ZmF1bHRzID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KHtzdGF0aWNfY2FzdDx1bnNp Z25lZCBpbnQ+KHZ0LT5nZXROdW1FbGVtZW50cygpKSwgZmFsc2V9LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQ6OmdldE51 bGxWYWx1ZSh2dC0+Z2V0RWxlbWVudFR5cGUoKSkpOwotKyNlbHNlCi0rICAgICAgICBkZWZhdWx0 cyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCgKLSsgICAgICAgICAgICBsbHZtOjpF bGVtZW50Q291bnQ6OmdldChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHZ0LT5nZXROdW1FbGVt ZW50cygpKSwgZmFsc2UpLAotKyAgICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFs dWUodnQtPmdldEVsZW1lbnRUeXBlKCkpKTsKLSsjZW5kaWYKLSAgICAgfQotIAotICAgICBhdXRv IEZuID0gbGx2bTo6R2VuWEludHJpbnNpYzo6Z2V0R2VuWERlY2xhcmF0aW9uKG0tPm1vZHVsZSwg bGx2bTo6R2VuWEludHJpbnNpYzo6Z2VueF9zaW1kY2ZfcHJlZGljYXRlLAotZGlmZiAtLWdpdCBh L3NyYy9nZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAgYi9zcmMvZ2VuL0dsb2JhbHNMb2NhbGl6 YXRpb24uY3BwCi1pbmRleCBhMTc2ZTk0NjIuLjQxZjNiMDBlMiAxMDA2NDQKLS0tLSBhL3NyYy9n ZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAKLSsrKyBiL3NyYy9nZW4vR2xvYmFsc0xvY2FsaXph dGlvbi5jcHAKLUBAIC0xLDUgKzEsNSBAQAotIC8qCi0tICBDb3B5cmlnaHQgKGMpIDIwMTQsIDIw MTYtMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24KLSsgIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNi0y MDIxLCBJbnRlbCBDb3Jwb3JhdGlvbgotICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAKLSAgIFJl ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig d2l0aG91dAotQEAgLTUzLDggKzUzLDEwIEBACi0gI2luY2x1ZGUgPGxsdm0vR2VuWEludHJpbnNp Y3MvR2VuWEludHJPcHRzLmg+Ci0gI2luY2x1ZGUgPGxsdm0vR2VuWEludHJpbnNpY3MvR2VuWElu dHJpbnNpY3MuaD4KLSAjaW5jbHVkZSA8bGx2bS9HZW5YSW50cmluc2ljcy9HZW5YTWV0YWRhdGEu aD4KLS0jaW5jbHVkZSA8bGx2bS9JUi9DRkcuaD4KLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJ U1BDX0xMVk1fMTFfMAotICNpbmNsdWRlIDxsbHZtL0lSL0NhbGxTaXRlLmg+Ci0rI2VuZGlmCi0r I2luY2x1ZGUgPGxsdm0vSVIvQ0ZHLmg+Ci0gI2luY2x1ZGUgPGxsdm0vSVIvRGVidWdJbmZvLmg+ Ci0gI2luY2x1ZGUgPGxsdm0vSVIvRG9taW5hdG9ycy5oPgotICNpbmNsdWRlIDxsbHZtL0lSL0Z1 bmN0aW9uLmg+Ci1AQCAtNDcwLDcgKzQ3Miw4IEBAIHZvaWQgR2xvYmFsc0xvY2FsaXphdGlvbjo6 TG9jYWxpemVHbG9iYWxzKExvY2FsaXphdGlvbkluZm8gJkxJKSB7Ci0gICAgICAgICBJbnN0cnVj dGlvbiAmRmlyc3RJID0gKkZuLT5nZXRFbnRyeUJsb2NrKCkuYmVnaW4oKTsKLSAgICAgICAgIFR5 cGUgKkVsZW1UeSA9IEdWLT5nZXRUeXBlKCktPmdldEVsZW1lbnRUeXBlKCk7Ci0gICAgICAgICBB bGxvY2FJbnN0ICpBbGxvY2EgPSBuZXcgQWxsb2NhSW5zdChFbGVtVHksIDAsIEdWLT5nZXROYW1l KCkgKyAiLmxvY2FsIiwgJkZpcnN0SSk7Ci0tICAgICAgICBBbGxvY2EtPnNldEFsaWdubWVudChs bHZtOjpNYXliZUFsaWduKEdWLT5nZXRBbGlnbm1lbnQoKSkpOwotKyAgICAgICAgQWxsb2NhLT5z ZXRBbGlnbm1lbnQobGx2bTo6TWF5YmVBbGlnbihHVi0+Z2V0QWxpZ25tZW50KCkpLnZhbHVlT3JP bmUoKSk7Ci0rCi0gICAgICAgICBpZiAoIWlzYTxVbmRlZlZhbHVlPihHVi0+Z2V0SW5pdGlhbGl6 ZXIoKSkpCi0gICAgICAgICAgICAgbmV3IFN0b3JlSW5zdChHVi0+Z2V0SW5pdGlhbGl6ZXIoKSwg QWxsb2NhLCAmRmlyc3RJKTsKLSAKLWRpZmYgLS1naXQgYS9zcmMvb3B0LmNwcCBiL3NyYy9vcHQu Y3BwCi1pbmRleCBkNThkNzdmNzMuLjE3ODliODQ3NiAxMDA2NDQKLS0tLSBhL3NyYy9vcHQuY3Bw Ci0rKysgYi9zcmMvb3B0LmNwcAotQEAgLTI4OTksMTUgKzI4OTksMTcgQEAgc3RhdGljIGxsdm06 OkZ1bmN0aW9uICpsR2VuWE1hc2tlZEludDhJbnN0KGxsdm06Okluc3RydWN0aW9uICppbnN0LCBi b29sIGlzU3RvcmUKLSBzdGF0aWMgbGx2bTo6Q2FsbEluc3QgKmxHZW5YU3RvcmVJbnN0KGxsdm06 OlZhbHVlICp2YWwsIGxsdm06OlZhbHVlICpwdHIsIGxsdm06Okluc3RydWN0aW9uICppbnN0KSB7 Ci0gICAgIEFzc2VydChnLT50YXJnZXQtPmlzR2VuWFRhcmdldCgpKTsKLSAgICAgQXNzZXJ0KGxs dm06OmlzYTxsbHZtOjpWZWN0b3JUeXBlPih2YWwtPmdldFR5cGUoKSkpOwotLSAgICBBc3NlcnQo bGx2bTo6aXNQb3dlck9mMl8zMih2YWwtPmdldFR5cGUoKS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMo KSkpOwotLSAgICBBc3NlcnQodmFsLT5nZXRUeXBlKCktPmdldFByaW1pdGl2ZVNpemVJbkJpdHMo KSAvIDggPD0gOCAqIE9XT1JEKTsKLSsKLSsgICAgbGx2bTo6VmVjdG9yVHlwZSAqdmFsVmVjVHlw ZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHZhbC0+Z2V0VHlwZSgpKTsKLSsg ICAgQXNzZXJ0KGxsdm06OmlzUG93ZXJPZjJfMzIodmFsVmVjVHlwZS0+Z2V0TnVtRWxlbWVudHMo KSkpOwotKyAgICBBc3NlcnQodmFsVmVjVHlwZS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpIC8g OCA8PSA4ICogT1dPUkQpOwotIAotICAgICAvLyBUaGUgZGF0YSB3cml0ZSBvZiBzdm0gc3RvcmUg bXVzdCBoYXZlIGEgc2l6ZSB0aGF0IGlzIGEgcG93ZXIgb2YgdHdvIGZyb20gMTYgdG8gMTI4Ci0g ICAgIC8vIGJ5dGVzLiBIb3dldmVyIGZvciBpbnQ4IHR5cGUgYW5kIHNpbWQgd2lkdGggPSA4LCB0 aGUgZGF0YSB3cml0ZSBzaXplIGlzIDguCi0gICAgIC8vIFNvIHdlIHVzZSBtYXNrZWQgc3RvcmUg ZnVuY3Rpb24gaGVyZSBpbnN0ZWFkIG9mIHN2bSBzdG9yZSB3aGljaCBwcm9jZXNzIGludDggdHlw ZQotICAgICAvLyBjb3JyZWN0bHkuCi0tICAgIGlmICh2YWwtPmdldFR5cGUoKS0+Z2V0UHJpbWl0 aXZlU2l6ZUluQml0cygpIC8gOCA8IDE2KSB7Ci0tICAgICAgICBBc3NlcnQodmFsLT5nZXRUeXBl KCktPmdldFNjYWxhclR5cGUoKSA9PSBMTFZNVHlwZXM6OkludDhUeXBlKTsKLSsgICAgaWYgKHZh bFZlY1R5cGUtPmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSAvIDggPCAxNikgewotKyAgICAgICAg QXNzZXJ0KHZhbFZlY1R5cGUtPmdldFNjYWxhclR5cGUoKSA9PSBMTFZNVHlwZXM6OkludDhUeXBl KTsKLSAgICAgICAgIGlmIChsbHZtOjpGdW5jdGlvbiAqbWFza2VkRnVuYyA9IGxHZW5YTWFza2Vk SW50OEluc3QoaW5zdCwgdHJ1ZSkpCi0gICAgICAgICAgICAgcmV0dXJuIGxsdm06OmR5bl9jYXN0 PGxsdm06OkNhbGxJbnN0PihsQ2FsbEluc3QobWFza2VkRnVuYywgcHRyLCB2YWwsIExMVk1NYXNr QWxsT24sICIiKSk7Ci0gICAgICAgICBlbHNlIHsKLUBAIC0yOTIzLDE1ICsyOTI1LDE3IEBAIHN0 YXRpYyBsbHZtOjpDYWxsSW5zdCAqbEdlblhTdG9yZUluc3QobGx2bTo6VmFsdWUgKnZhbCwgbGx2 bTo6VmFsdWUgKnB0ciwgbGx2bTo6Ci0gCi0gc3RhdGljIGxsdm06OkNhbGxJbnN0ICpsR2VuWExv YWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlR5cGUgKnJldFR5cGUsIGxsdm06Okluc3Ry dWN0aW9uICppbnN0KSB7Ci0gICAgIEFzc2VydChsbHZtOjppc2E8bGx2bTo6VmVjdG9yVHlwZT4o cmV0VHlwZSkpOwotLSAgICBBc3NlcnQobGx2bTo6aXNQb3dlck9mMl8zMihyZXRUeXBlLT5nZXRW ZWN0b3JOdW1FbGVtZW50cygpKSk7Ci0tICAgIEFzc2VydChyZXRUeXBlLT5nZXRQcmltaXRpdmVT aXplSW5CaXRzKCkpOwotLSAgICBBc3NlcnQocmV0VHlwZS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0 cygpIC8gOCA8PSA4ICogT1dPUkQpOwotKwotKyAgICBsbHZtOjpWZWN0b3JUeXBlICpyZXRWZWNU eXBlID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocmV0VHlwZSk7Ci0rICAgIEFz c2VydChsbHZtOjppc1Bvd2VyT2YyXzMyKHJldFZlY1R5cGUtPmdldE51bUVsZW1lbnRzKCkpKTsK LSsgICAgQXNzZXJ0KHJldFZlY1R5cGUtPmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSk7Ci0rICAg IEFzc2VydChyZXRWZWNUeXBlLT5nZXRQcmltaXRpdmVTaXplSW5CaXRzKCkgLyA4IDw9IDggKiBP V09SRCk7Ci0gICAgIC8vIFRoZSBkYXRhIHJlYWQgb2Ygc3ZtIGxvYWQgbXVzdCBoYXZlIGEgc2l6 ZSB0aGF0IGlzIGEgcG93ZXIgb2YgdHdvIGZyb20gMTYgdG8gMTI4Ci0gICAgIC8vIGJ5dGVzLiBI b3dldmVyIGZvciBpbnQ4IHR5cGUgYW5kIHNpbWQgd2lkdGggPSA4LCB0aGUgZGF0YSByZWFkIHNp emUgaXMgOC4KLSAgICAgLy8gU28gd2UgdXNlIG1hc2tlZCBsb2FkIGZ1bmN0aW9uIGhlcmUgaW5z dGVhZCBvZiBzdm0gbG9hZCB3aGljaCBwcm9jZXNzIGludDggdHlwZQotICAgICAvLyBjb3JyZWN0 bHkuCi0tICAgIGlmIChyZXRUeXBlLT5nZXRQcmltaXRpdmVTaXplSW5CaXRzKCkgLyA4IDwgMTYp IHsKLS0gICAgICAgIEFzc2VydChyZXRUeXBlLT5nZXRTY2FsYXJUeXBlKCkgPT0gTExWTVR5cGVz OjpJbnQ4VHlwZSk7Ci0rICAgIGlmIChyZXRWZWNUeXBlLT5nZXRQcmltaXRpdmVTaXplSW5CaXRz KCkgLyA4IDwgMTYpIHsKLSsgICAgICAgIEFzc2VydChyZXRWZWNUeXBlLT5nZXRTY2FsYXJUeXBl KCkgPT0gTExWTVR5cGVzOjpJbnQ4VHlwZSk7Ci0gICAgICAgICBpZiAobGx2bTo6RnVuY3Rpb24g Km1hc2tlZEZ1bmMgPSBsR2VuWE1hc2tlZEludDhJbnN0KGluc3QsIGZhbHNlKSkKLSAgICAgICAg ICAgICByZXR1cm4gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Q2FsbEluc3Q+KGxDYWxsSW5zdChtYXNr ZWRGdW5jLCBwdHIsIExMVk1NYXNrQWxsT24sICIiKSk7Ci0gICAgICAgICBlbHNlIHsKLUBAIC01 NjIyLDE1ICs1NjI2LDI0IEBAIHN0YXRpYyBib29sIGxWZWN0b3JpemVHRVBzKGxsdm06OlZhbHVl ICpwdHIsIHN0ZDo6dmVjdG9yPFB0clVzZT4gJnB0clVzZXMsIHN0ZDo6Ci0gICAgICAgICBsbHZt OjpQdHJUb0ludEluc3QgKnB0clRvSW50ID0KLSAgICAgICAgICAgICBuZXcgbGx2bTo6UHRyVG9J bnRJbnN0KHB0ciwgTExWTVR5cGVzOjpJbnQ2NFR5cGUsICJ2ZWN0b3JpemVkX3B0cnRvaW50Iiwg aW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICphZGRyID0gbGx2bTo6 QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZUFkZChwdHJUb0ludCwgb2Zmc2V0LCAidmVjdG9yaXplZF9h ZGRyZXNzIiwgaW5zZXJ0QmVmb3JlKTsKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19M TFZNXzExXzAKLSsgICAgICAgIGxsdm06OlR5cGUgKnJldFR5cGUgPSBsbHZtOjpGaXhlZFZlY3Rv clR5cGU6OmdldChzY2FsYXJfdHlwZSwgcmVxU2l6ZSAvIHRfc2l6ZSk7Ci0rI2Vsc2UKLSAgICAg ICAgIGxsdm06OlR5cGUgKnJldFR5cGUgPSBsbHZtOjpWZWN0b3JUeXBlOjpnZXQoc2NhbGFyX3R5 cGUsIHJlcVNpemUgLyB0X3NpemUpOwotKyNlbmRpZgotICAgICAgICAgbGx2bTo6RnVuY3Rpb24g KmZuID0gbGx2bTo6R2VuWEludHJpbnNpYzo6Z2V0R2VuWERlY2xhcmF0aW9uKAotICAgICAgICAg ICAgIG0tPm1vZHVsZSwgbGx2bTo6R2VuWEludHJpbnNpYzo6Z2VueF9zdm1fYmxvY2tfbGRfdW5h bGlnbmVkLCB7cmV0VHlwZSwgYWRkci0+Z2V0VHlwZSgpfSk7Ci0gICAgICAgICBsbHZtOjpJbnN0 cnVjdGlvbiAqbGQgPSBsbHZtOjpDYWxsSW5zdDo6Q3JlYXRlKGZuLCB7YWRkcn0sICJ2ZWN0b3Jp emVkX2xkIiwgaW5zZXJ0QmVmb3JlKTsKLSAKLSAgICAgICAgIGlmIChsb2FkaW5nUHRyKSB7Ci0g ICAgICAgICAgICAgLy8gQ2FzdCBpbnQgdG8gcHRyIHZpYSBpbnR0b3B0cgotKyNpZiBJU1BDX0xM Vk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgICAgIGxkID0gbmV3IGxsdm06 OkludFRvUHRySW5zdChsZCwgbGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpnZXQob3JpZ2luYWxUeXBl LCByZXFTaXplIC8gdF9zaXplKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgInZlY3Rvcml6ZWRfaW50dG9wdHIiLCBpbnNlcnRCZWZvcmUpOwotKyNlbHNlCi0gICAg ICAgICAgICAgbGQgPSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0KGxkLCBsbHZtOjpWZWN0b3JUeXBl OjpnZXQob3JpZ2luYWxUeXBlLCByZXFTaXplIC8gdF9zaXplKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInZlY3Rvcml6ZWRfaW50dG9wdHIiLCBpbnNlcnRCZWZv cmUpOwotKyNlbmRpZgotICAgICAgICAgfQotIAotICAgICAgICAgLy8gU2NhbGFyIGV4dHJhY3Rz IGZvciBhbGwgbG9hZGVkIGVsZW1lbnRzCi1AQCAtNjE2MCwxOSArNjE3MywzNCBAQCBib29sIFJl cGxhY2VMTFZNSW50cmluc2ljczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJi KSB7Ci0gICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9ICYqSTsKLSAgICAgICAgIGlm IChsbHZtOjpDYWxsSW5zdCAqY2kgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpDYWxsSW5zdD4oaW5z dCkpIHsKLSAgICAgICAgICAgICBsbHZtOjpGdW5jdGlvbiAqZnVuYyA9IGNpLT5nZXRDYWxsZWRG dW5jdGlvbigpOwotLSAgICAgICAgICAgIGlmIChmdW5jICYmIGZ1bmMtPmdldE5hbWUoKSA9PSAi bGx2bS50cmFwIikgewotKyAgICAgICAgICAgIGlmIChmdW5jICYmIGZ1bmMtPmdldE5hbWUoKS5l cXVhbHMoImxsdm0udHJhcCIpKSB7Ci0gICAgICAgICAgICAgICAgIGxsdm06OlR5cGUgKmFyZ1R5 cGVzW10gPSB7TExWTVR5cGVzOjpJbnQxVmVjdG9yVHlwZSwgTExWTVR5cGVzOjpJbnQxNlZlY3Rv clR5cGV9OwotICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdGlvbiBvZiBwYXJhbWV0ZXJzIGZv ciBnZW54X3Jhd19zZW5kX25vcmVzdWx0IGNhbiBiZSBmb3VuZCBpbiB0YXJnZXQtZ2VueC5sbAot ICAgICAgICAgICAgICAgICBhdXRvIEZuID0gK2xsdm06OkdlblhJbnRyaW5zaWM6OmdldEdlblhE ZWNsYXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgIG0tPm1vZHVsZSwgbGx2bTo6R2VuWElu dHJpbnNpYzo6Z2VueF9yYXdfc2VuZF9ub3Jlc3VsdCwgYXJnVHlwZXMpOwotICAgICAgICAgICAg ICAgICBsbHZtOjpTbWFsbFZlY3RvcjxsbHZtOjpWYWx1ZSAqLCA4PiBBcmdzOwotICAgICAgICAg ICAgICAgICBBcmdzLnB1c2hfYmFjayhsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6 SW50MzJUeXBlLCAwKSk7Ci0tICAgICAgICAgICAgICAgIEFyZ3MucHVzaF9iYWNrKGxsdm06OkNv bnN0YW50VmVjdG9yOjpnZXRTcGxhdChnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCks Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsbHZtOjpDb25zdGFudEludDo6Z2V0VHJ1ZSgqZy0+Y3R4KSkpOwotKyAgICAgICAg ICAgICAgICBBcmdzLnB1c2hfYmFjayhsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0r I2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSsgICAgICAgICAgICAgICAg ICAgIGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSwKLSsjZWxpZiBJU1BDX0xMVk1f VkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgICAgICAgICAgICAge3N0YXRpY19j YXN0PHVuc2lnbmVkIGludD4oZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpKSwgZmFs c2V9LAotKyNlbHNlIC8vIExMVk0gMTIuMCsKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06OkVs ZW1lbnRDb3VudDo6Z2V0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZy0+dGFyZ2V0LT5nZXRO YXRpdmVWZWN0b3JXaWR0aCgpKSwgZmFsc2UpLAotKyNlbmRpZgotKyAgICAgICAgICAgICAgICAg ICAgbGx2bTo6Q29uc3RhbnRJbnQ6OmdldFRydWUoKmctPmN0eCkpKTsKLSsKLSAgICAgICAgICAg ICAgICAgQXJncy5wdXNoX2JhY2sobGx2bTo6Q29uc3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6Oklu dDMyVHlwZSwgMzkpKTsKLSAgICAgICAgICAgICAgICAgQXJncy5wdXNoX2JhY2sobGx2bTo6Q29u c3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6OkludDMyVHlwZSwgMzM1NTQ0NDgpKTsKLSAgICAgICAg ICAgICAgICAgbGx2bTo6VmFsdWUgKnplcm9NYXNrID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6Omdl dFNwbGF0KAotLSAgICAgICAgICAgICAgICAgICAgZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JX aWR0aCgpLCBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKGxsdm06OlR5cGU6OmdldEludDE2 VHkoKmctPmN0eCkpKTsKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAot KyAgICAgICAgICAgICAgICAgICAgZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpLAot KyNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rICAgICAgICAgICAg ICAgICAgICB7c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihnLT50YXJnZXQtPmdldE5hdGl2ZVZl Y3RvcldpZHRoKCkpLCBmYWxzZX0sCi0rI2Vsc2UgLy8gTExWTSAxMi4wKwotKyAgICAgICAgICAg ICAgICAgICAgbGx2bTo6RWxlbWVudENvdW50OjpnZXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50 PihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCkpLCBmYWxzZSksCi0rI2VuZGlmCi0r ICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKGxsdm06OlR5 cGU6OmdldEludDE2VHkoKmctPmN0eCkpKTsKLSAgICAgICAgICAgICAgICAgQXJncy5wdXNoX2Jh Y2soemVyb01hc2spOwotIAotICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbmV3 SW5zdCA9IGxsdm06OkNhbGxJbnN0OjpDcmVhdGUoRm4sIEFyZ3MsIGNpLT5nZXROYW1lKCkpOwot QEAgLTYxODEsNyArNjIwOSw3IEBAIGJvb2wgUmVwbGFjZUxMVk1JbnRyaW5zaWNzOjpydW5PbkJh c2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAgICAgICAgICAgICAgICAgIG1v ZGlmaWVkQW55ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzdGFydDsKLSAg ICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZnVuYyAmJiBmdW5jLT5n ZXROYW1lKCkgPT0gImxsdm0uYXNzdW1lIikgewotKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZnVu YyAmJiBmdW5jLT5nZXROYW1lKCkuZXF1YWxzKCJsbHZtLmFzc3VtZSIpKSB7Ci0gICAgICAgICAg ICAgICAgIGNpLT5lcmFzZUZyb21QYXJlbnQoKTsKLSAgICAgICAgICAgICAgICAgbW9kaWZpZWRB bnkgPSB0cnVlOwotICAgICAgICAgICAgICAgICBnb3RvIHJlc3RhcnQ7Ci1AQCAtNjMzNSw3ICs2 MzYzLDcgQEAgYm9vbCBDaGVja1Vuc3VwcG9ydGVkSW5zdHM6OnJ1bk9uQmFzaWNCbG9jayhsbHZt OjpCYXNpY0Jsb2NrICZiYikgewotICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHVuc3VwcG9ydGVkRnVuY3Muc2l6ZSgpOyBpKyspIHsK LSAgICAgICAgICAgICAgICAgc3RkOjpzbWF0Y2ggbWF0Y2g7Ci0tICAgICAgICAgICAgICAgIHN0 ZDo6c3RyaW5nIGZ1bmNOYW1lID0gZnVuYy0+Z2V0TmFtZSgpOwotKyAgICAgICAgICAgICAgICBz dGQ6OnN0cmluZyBmdW5jTmFtZSA9IGZ1bmMtPmdldE5hbWUoKS5zdHIoKTsKLSAgICAgICAgICAg ICAgICAgaWYgKHN0ZDo6cmVnZXhfbWF0Y2goZnVuY05hbWUsIG1hdGNoLCB1bnN1cHBvcnRlZEZ1 bmNzW2ldKSkgewotICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZm91bmQgdW5zdXBwb3J0ZWQg ZnVuY3Rpb24uIEdlbmVyYXRlIGVycm9yIGFuZCBzdG9wIGNvbXBpbGF0aW9uLgotICAgICAgICAg ICAgICAgICAgICAgU291cmNlUG9zIHBvczsKLUBAIC02NDE4LDEyICs2NDQ2LDE0IEBAIGJvb2wg TWFuZ2xlT3BlbkNMQnVpbHRpbnM6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZi YikgewotICAgICAgICAgICAgIGlmIChmdW5jLT5nZXROYW1lKCkuc3RhcnRzd2l0aCgiX19zcGly dl9vY2wiKSkgewotICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBtYW5nbGVkTmFtZTsKLSAg ICAgICAgICAgICAgICAgbGx2bTo6VHlwZSAqcmV0VHlwZSA9IGZ1bmMtPmdldFJldHVyblR5cGUo KTsKLS0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZnVuY05hbWUgPSBmdW5jLT5nZXROYW1l KCk7Ci0rICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGZ1bmNOYW1lID0gZnVuYy0+Z2V0TmFt ZSgpLnN0cigpOwotICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxsbHZtOjpUeXBlICo+IEFy Z1R5OwotICAgICAgICAgICAgICAgICAvLyBzcGlydiBPcGVuQ0wgYnVpbHRpbnMgYXJlIHVzZWQg Zm9yIGRvdWJsZSB0eXBlcyBvbmx5Ci0tICAgICAgICAgICAgICAgIEFzc2VydChyZXRUeXBlLT5p c1ZlY3RvclR5KCkgJiYgcmV0VHlwZS0+Z2V0VmVjdG9yRWxlbWVudFR5cGUoKS0+aXNEb3VibGVU eSgpIHx8Ci0rICAgICAgICAgICAgICAgIEFzc2VydChyZXRUeXBlLT5pc1ZlY3RvclR5KCkgJiYK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JU eXBlPihyZXRUeXBlKS0+Z2V0RWxlbWVudFR5cGUoKS0+aXNEb3VibGVUeSgpIHx8Ci0gICAgICAg ICAgICAgICAgICAgICAgICByZXRUeXBlLT5pc1NpbmdsZVZhbHVlVHlwZSgpICYmIHJldFR5cGUt PmlzRG91YmxlVHkoKSk7Ci0tICAgICAgICAgICAgICAgIGlmIChyZXRUeXBlLT5pc1ZlY3RvclR5 KCkgJiYgcmV0VHlwZS0+Z2V0VmVjdG9yRWxlbWVudFR5cGUoKS0+aXNEb3VibGVUeSgpKSB7Ci0r ICAgICAgICAgICAgICAgIGlmIChyZXRUeXBlLT5pc1ZlY3RvclR5KCkgJiYKLSsgICAgICAgICAg ICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHJldFR5cGUpLT5nZXRF bGVtZW50VHlwZSgpLT5pc0RvdWJsZVR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgIEFyZ1R5 LnB1c2hfYmFjayhMTFZNVHlwZXM6OkRvdWJsZVZlY3RvclR5cGUpOwotICAgICAgICAgICAgICAg ICAgICAgLy8gX0R2V0lEVEggc3VmZml4IGlzIHVzZWQgaW4gdGFyZ2V0IGZpbGUgdG8gZGlmZmVy ZW50aWF0ZSBzY2FsYXIKLSAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB2ZWN0b3IgdmVyc2lv bnMgb2YgaW50cmluc2ljcy4gSGVyZSB3ZSByZW1vdmUgdGhpcwotQEAgLTY1MTEsOCArNjU0MSwx NSBAQCBsbHZtOjpWYWx1ZSAqRml4QWRkcmVzc1NwYWNlOjpjYWxjdWxhdGVHYXRoZXJTY2F0dGVy QWRkcmVzcyhsbHZtOjpWYWx1ZSAqUHRyLCBsbAotIAotICAgICAvLyBDYXN0IG9mZnNldHMgdG8g aW50NjQKLSAgICAgT2Zmc2V0cyA9IG5ldyBsbHZtOjpaRXh0SW5zdCgKLSsjaWYgSVNQQ19MTFZN X1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAgIE9mZnNldHMsCi0rICAgICAgICBs bHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5 cGU+KE9mZnNldHMtPmdldFR5cGUoKSktPmdldE51bUVsZW1lbnRzKCkpLAotKyAgICAgICAgInN2 bV9vZmZzZXRfemV4dCIsIEluc2VydEJlZm9yZSk7Ci0rI2Vsc2UKLSAgICAgICAgIE9mZnNldHMs IGxsdm06OlZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwgT2Zmc2V0cy0+Z2V0 VHlwZSgpLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpKSwKLSAgICAgICAgICJzdm1fb2Zmc2V0X3pl eHQiLCBJbnNlcnRCZWZvcmUpOwotKyNlbmRpZgotIAotICAgICBpZiAoIWxsdm06OmlzYTxsbHZt OjpDb25zdGFudFBvaW50ZXJOdWxsPihQdHIpKSB7Ci0gICAgICAgICAvLyBDYXN0IHB0ciB0byBp bnQ2NAotQEAgLTY1MjAsMTMgKzY1NTcsMzEgQEAgbGx2bTo6VmFsdWUgKkZpeEFkZHJlc3NTcGFj ZTo6Y2FsY3VsYXRlR2F0aGVyU2NhdHRlckFkZHJlc3MobGx2bTo6VmFsdWUgKlB0ciwgbGwKLSAK LSAgICAgICAgIC8vIFZlY3Rvcml6ZSBwdHIKLSAgICAgICAgIGxsdm06OlZhbHVlICp1bmRlZklu c2VydFZhbHVlID0KLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsg ICAgICAgICAgICBsbHZtOjpVbmRlZlZhbHVlOjpnZXQobGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpn ZXQoCi0rICAgICAgICAgICAgICAgIExMVk1UeXBlczo6SW50NjRUeXBlLCBsbHZtOjpkeW5fY2Fz dDxsbHZtOjpWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51bUVsZW1lbnRzKCkpKTsKLSsj ZWxzZQotICAgICAgICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpWZWN0b3JUeXBl OjpnZXQoTExWTVR5cGVzOjpJbnQ2NFR5cGUsIGFkZHJlc3NUeXBlLT5nZXRWZWN0b3JOdW1FbGVt ZW50cygpKSk7Ci0rI2VuZGlmCi0gICAgICAgICBhZGRyZXNzID0gbGx2bTo6SW5zZXJ0RWxlbWVu dEluc3Q6OkNyZWF0ZSh1bmRlZkluc2VydFZhbHVlLCBhZGRyZXNzLCBMTFZNSW50MzIoMCksICJz dm1fcHRyX2llaSIsIEluc2VydEJlZm9yZSk7Ci0gICAgICAgICBsbHZtOjpDb25zdGFudCAqemVy b1ZlYyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCgKLSsjaWYgSVNQQ19MTFZNX1ZF UlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgICAgIGFkZHJlc3NUeXBlLT5nZXRWZWN0 b3JOdW1FbGVtZW50cygpLAotKyNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8x MV8wCi0rICAgICAgICAgICAge2xsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KGFkZHJl c3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2V9LAotKyNlbHNlCi0rICAgICAgICBsbHZt OjpFbGVtZW50Q291bnQ6OmdldCgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxs dm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUtPmdldE51bUVs ZW1lbnRzKCksIGZhbHNlKSwKLSsjZW5kaWYKLSAgICAgICAgICAgICBsbHZtOjpDb25zdGFudDo6 Z2V0TnVsbFZhbHVlKGxsdm06OlR5cGU6OmdldEludDMyVHkoSW5zZXJ0QmVmb3JlLT5nZXRDb250 ZXh0KCkpKSk7Ci0rCi0gICAgICAgICBsbHZtOjpWYWx1ZSAqdW5kZWZTaHVmZmxlVmFsdWUgPQot KyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgICAgIGxs dm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldCgKLSsgICAgICAg ICAgICAgICAgTExWTVR5cGVzOjpJbnQ2NFR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3Rv clR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotKyNlbHNlCi0gICAgICAg ICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OlZlY3RvclR5cGU6OmdldChMTFZNVHlw ZXM6OkludDY0VHlwZSwgYWRkcmVzc1R5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpKTsKLSsj ZW5kaWYKLSAgICAgICAgIGFkZHJlc3MgPSBuZXcgbGx2bTo6U2h1ZmZsZVZlY3Rvckluc3QoYWRk cmVzcywgdW5kZWZTaHVmZmxlVmFsdWUsIHplcm9WZWMsICJzdm1fcHRyX3N2aSIsIEluc2VydEJl Zm9yZSk7Ci0gCi0gICAgICAgICAvLyBDYWxjdWxhdGUgYWRkcmVzcwotQEAgLTY1NTMsOSArNjYw OCwxMiBAQCBsbHZtOjpJbnN0cnVjdGlvbiAqRml4QWRkcmVzc1NwYWNlOjpwcm9jZXNzVmVjdG9y TG9hZChsbHZtOjpMb2FkSW5zdCAqTEkpIHsKLSAgICAgaWYgKHJldFR5cGUtPmdldFNjYWxhclR5 cGUoKS0+aXNQb2ludGVyVHkoKSkgewotICAgICAgICAgaXNQdHJMb2FkID0gdHJ1ZTsKLSAgICAg ICAgIGF1dG8gc2NhbGFyVHlwZSA9IGctPnRhcmdldC0+aXMzMkJpdCgpID8gTExWTVR5cGVzOjpJ bnQzMlR5cGUgOiBMTFZNVHlwZXM6OkludDY0VHlwZTsKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04g Pj0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAgIHJldFR5cGUgPSBsbHZtOjpGaXhlZFZlY3RvclR5 cGU6OmdldChzY2FsYXJUeXBlLCBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihyZXRU eXBlKS0+Z2V0TnVtRWxlbWVudHMoKSk7Ci0rI2Vsc2UKLSAgICAgICAgIHJldFR5cGUgPSBsbHZt OjpWZWN0b3JUeXBlOjpnZXQoc2NhbGFyVHlwZSwgcmV0VHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVu dHMoKSk7Ci0rI2VuZGlmCi0gICAgIH0KLS0KLSAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKnJlcyA9 IGxHZW5YTG9hZEluc3QocHRyLCByZXRUeXBlLCBsbHZtOjpkeW5fY2FzdDxsbHZtOjpJbnN0cnVj dGlvbj4oTEkpKTsKLSAgICAgQXNzZXJ0KHJlcyk7Ci0gCi1AQCAtNjU4MCwxMSArNjYzOCwxNiBA QCBsbHZtOjpJbnN0cnVjdGlvbiAqRml4QWRkcmVzc1NwYWNlOjpwcm9jZXNzU1ZNVmVjdG9yTG9h ZChsbHZtOjpJbnN0cnVjdGlvbiAqQ0kpCi0gICAgIHB0ciA9IG5ldyBsbHZtOjpJbnRUb1B0cklu c3QocHRyLCBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KHJldFR5cGUsIDApLCBDSS0+Z2V0TmFtZSgp ICsgIl9pbnR0b3B0ciIsIENJKTsKLSAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxvYWRJbnN0ID0g TlVMTDsKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLS0gICAgbG9h ZEluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3QobGx2bTo6ZHluX2Nhc3Q8bGx2bTo6UG9pbnRlclR5 cGU+KHB0ci0+Z2V0VHlwZSgpKS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIGxvYWRJbnN0LAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDSS0+Z2V0TmFtZSgpLCAobGx2bTo6 SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSsgICAgbG9hZEluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3Qo bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6UG9pbnRlclR5cGU+KHB0ci0+Z2V0VHlwZSgpKS0+Z2V0UG9p bnRlckVsZW1lbnRUeXBlKCksIHB0ciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQ0ktPmdldE5hbWUoKSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGctPnRhcmdldC0+Z2V0TmF0 aXZlVmVjdG9yQWxpZ25tZW50KCkpLnZhbHVlT3JPbmUoKSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0gI2Vsc2UKLS0gICAg bG9hZEluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3QocHRyLCBDSS0+Z2V0TmFtZSgpLCAobGx2bTo6 SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSsgICAgbG9hZEluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3Qo cHRyLCBDSS0+Z2V0TmFtZSgpLCBmYWxzZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGx2bTo6TWF5YmVBbGlnbihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVu dCgpKS52YWx1ZU9yT25lKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs bHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotICNlbmRpZgotKwotICAgICBBc3NlcnQobG9hZElu c3QpOwotICAgICByZXR1cm4gbG9hZEluc3Q7Ci0gfQotQEAgLTY2MDYsNyArNjY2OSwxMSBAQCBs bHZtOjpJbnN0cnVjdGlvbiAqRml4QWRkcmVzc1NwYWNlOjpwcm9jZXNzVmVjdG9yU3RvcmUobGx2 bTo6U3RvcmVJbnN0ICpTSSkgewotICAgICAvLyBOb3RlOiBpdCBkb2Vzbid0IGxvb2sgbGlrZSBh IG5vcm1hbCBjYXNlIGZvciBHZW5YIHRhcmdldAotICAgICBpZiAodmFsVHlwZS0+Z2V0U2NhbGFy VHlwZSgpLT5pc1BvaW50ZXJUeSgpKSB7Ci0gICAgICAgICBhdXRvIHNjYWxhclR5cGUgPSBnLT50 YXJnZXQtPmlzMzJCaXQoKSA/IExMVk1UeXBlczo6SW50MzJUeXBlIDogTExWTVR5cGVzOjpJbnQ2 NFR5cGU7Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgICAg ICB2YWxUeXBlID0gbGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpnZXQoc2NhbGFyVHlwZSwgbGx2bTo6 ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4odmFsVHlwZSktPmdldE51bUVsZW1lbnRzKCkpOwot KyNlbHNlCi0gICAgICAgICB2YWxUeXBlID0gbGx2bTo6VmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5 cGUsIHZhbFR5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpOwotKyNlbmRpZgotICAgICAgICAg dmFsID0gbmV3IGxsdm06OlB0clRvSW50SW5zdCh2YWwsIHZhbFR5cGUsICJzdm1fc3RfdmFsX3B0 cnRvaW50IiwgU0kpOwotICAgICB9Ci0gCi1AQCAtNjYzMSwxMiArNjY5OCw4IEBAIGxsdm06Oklu c3RydWN0aW9uICpGaXhBZGRyZXNzU3BhY2U6OnByb2Nlc3NTVk1WZWN0b3JTdG9yZShsbHZtOjpJ bnN0cnVjdGlvbiAqQ0kpCi0gICAgIHB0ciA9IG5ldyBsbHZtOjpJbnRUb1B0ckluc3QocHRyLCBs bHZtOjpQb2ludGVyVHlwZTo6Z2V0KHZhbFR5cGUsIDApLCBDSS0+Z2V0TmFtZSgpICsgIl9pbnR0 b3B0ciIsIENJKTsKLSAKLSAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKnN0b3JlSW5zdCA9IE5VTEw7 Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0tICAgIGxvYWRJbnN0 ID0gbmV3IGxsdm06OlN0b3JlSW5zdCh2YWwsIGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJU eXBlPihwdHItPmdldFR5cGUoKSktPmdldFBvaW50ZXJFbGVtZW50VHlwZSgpLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVJbnN0LCBDSS0+Z2V0TmFtZSgpLCAobGx2 bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLS0jZWxzZQotLSAgICBzdG9yZUluc3QgPSBuZXcgbGx2 bTo6U3RvcmVJbnN0KHZhbCwgcHRyLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLS0jZW5k aWYKLSsgICAgc3RvcmVJbnN0ID0gbmV3IGxsdm06OlN0b3JlSW5zdCh2YWwsIHB0ciwgKGxsdm06 Okluc3RydWN0aW9uICopTlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsbHZtOjpNYXliZUFsaWduKGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkp LnZhbHVlT3JPbmUoKSk7Ci0gICAgIEFzc2VydChzdG9yZUluc3QpOwotICAgICByZXR1cm4gc3Rv cmVJbnN0OwotIH0KLUBAIC02NjQ1LDE1ICs2NzA4LDE4IEBAIGxsdm06Okluc3RydWN0aW9uICpG aXhBZGRyZXNzU3BhY2U6OmNyZWF0ZUludDhXclJlZ2lvbihsbHZtOjpWYWx1ZSAqVmFsLCBsbHZt OjpWCi0gICAgIGludCB3aWR0aCA9IGctPnRhcmdldC0+Z2V0VmVjdG9yV2lkdGgoKTsKLSAKLSAg ICAgbGx2bTo6VmFsdWUgKkFyZ3NbOF07Ci0tCi0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElT UENfTExWTV8xMV8wCi0rICAgIEFyZ3NbMF0gPSBsbHZtOjpVbmRlZlZhbHVlOjpnZXQobGx2bTo6 Rml4ZWRWZWN0b3JUeXBlOjpnZXQoTExWTVR5cGVzOjpJbnQ4VHlwZSwgd2lkdGggKiA0KSk7IC8v IG9sZCB2YWx1ZQotKyNlbHNlCi0gICAgIEFyZ3NbMF0gPSBsbHZtOjpVbmRlZlZhbHVlOjpnZXQo bGx2bTo6VmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50OFR5cGUsIHdpZHRoICogNCkpOyAv LyBvbGQgdmFsdWUKLS0gICAgQXJnc1sxXSA9IFZhbDsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVl IHRvIHN0b3JlCi0tICAgIEFyZ3NbMl0gPSBsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBl czo6SW50MzJUeXBlLCAwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2c3RyaWRl Ci0tICAgIEFyZ3NbM10gPSBsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50MzJU eXBlLCB3aWR0aCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWR0aAotLSAgICBBcmdz WzRdID0gbGx2bTo6Q29uc3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6OkludDMyVHlwZSwgNCk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RyaWRlCi0tICAgIEFyZ3NbNV0gPSBsbHZt OjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50MTZUeXBlLCAwKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvLyBvZmZzZXRzCi0tICAgIEFyZ3NbNl0gPSBsbHZtOjpDb25zdGFu dEludDo6Z2V0KExMVk1UeXBlczo6SW50MzJUeXBlLCAwKTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBwYXJlbnQgd2lkdGggKGlnbm9yZWQpCi0tICAgIEFyZ3NbN10gPSBNYXNrOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBtYXNrCi0rI2VuZGlmCi0rICAgIEFyZ3NbMV0gPSBWYWw7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlIHRvIHN0 b3JlCi0rICAgIEFyZ3NbMl0gPSBsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50 MzJUeXBlLCAwKTsgICAgIC8vIHZzdHJpZGUKLSsgICAgQXJnc1szXSA9IGxsdm06OkNvbnN0YW50 SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIHdpZHRoKTsgLy8gd2lkdGgKLSsgICAgQXJn c1s0XSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIDQpOyAg ICAgLy8gc3RyaWRlCi0rICAgIEFyZ3NbNV0gPSBsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1U eXBlczo6SW50MTZUeXBlLCAwKTsgICAgIC8vIG9mZnNldHMKLSsgICAgQXJnc1s2XSA9IGxsdm06 OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIDApOyAgICAgLy8gcGFyZW50 IHdpZHRoIChpZ25vcmVkKQotKyAgICBBcmdzWzddID0gTWFzazsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXNrCi0gCi0gICAgIGxsdm06OlR5cGUg KlR5c1s0XTsKLSAKLUBAIC02NzA4LDcgKzY3NzQsMTIgQEAgbGx2bTo6SW5zdHJ1Y3Rpb24gKkZp eEFkZHJlc3NTcGFjZTo6cHJvY2Vzc0dhdGhlclNjYXR0ZXJQcml2YXRlKGxsdm06OkNhbGxJbnN0 ICoKLSAgICAgICAgIHJldHVybiBOVUxMOwotIAotICAgICBsbHZtOjpWYWx1ZSAqYWRkcmVzcyA9 IGNhbGN1bGF0ZUdhdGhlclNjYXR0ZXJBZGRyZXNzKHB0ciwgb2Zmc2V0cywgQ0kpOwotKyNpZiBJ U1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICBsbHZtOjpUeXBlICppOFZl Y1R5cGUgPSBsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDhUeXBlLCB3 aWR0aCAqIDQpOwotKyNlbHNlCi0gICAgIGxsdm06OlR5cGUgKmk4VmVjVHlwZSA9IGxsdm06OlZl Y3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDhUeXBlLCB3aWR0aCAqIDQpOwotKyNlbmRpZgot KwotICAgICBib29sIGlzSW50OCA9ICh2YWx1ZS0+Z2V0VHlwZSgpLT5nZXRTY2FsYXJUeXBlKCkg PT0gTExWTVR5cGVzOjpJbnQ4VHlwZSk7Ci0gCi0gICAgIEFzc2VydChhZGRyZXNzICYmICJCYWQg Z2F0aGVyL3NjYXR0ZXIgYWRkcmVzcyEiKTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaXNwYy9wYXRj aGVzL2xsdm0xMi0wMDYucGF0Y2ggYi9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA2LnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODI5ZWE0ODM5MWUuLjAwMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA2LnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLUZyb20gYmIzZjQ5M2QxZmJkNDVjNzllMWQ5ZGVlNjdh MDQzMGJhMzEzZWFhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFyaW5hIE5lc2hs eWFldmEgPGFyaW5hLm5lc2hseWFldmFAaW50ZWwuY29tPgotRGF0ZTogVHVlLCAxOSBKYW4gMjAy MSAxMTowNzozMyAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXhlZCBpZmRlZnMgZm9yIExMVk1f MTEKLQotLS0tCi0gc3JjL2N0eC5jcHAgfCAgNiArKystLS0KLSBzcmMvb3B0LmNwcCB8IDE4ICsr KysrKysrKy0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTIg ZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9jdHguY3BwCi1p bmRleCAyYTcyZTY4MzcuLjUyN2EwMmYzMCAxMDA2NDQKLS0tLSBhL3NyYy9jdHguY3BwCi0rKysg Yi9zcmMvY3R4LmNwcAotQEAgLTE2OTEsNyArMTY5MSw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlv bkVtaXRDb250ZXh0OjpTbWVhclVuaWZvcm0obGx2bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBsbHZt OjpUCi0gICAgIGlmIChsbHZtOjpDb25zdGFudCAqY29uc3RfdmFsID0gbGx2bTo6ZHluX2Nhc3Q8 bGx2bTo6Q29uc3RhbnQ+KHZhbHVlKSkgewotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENf TExWTV8xMV8wCi0gICAgICAgICByZXQgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQo Zy0+dGFyZ2V0LT5nZXRWZWN0b3JXaWR0aCgpLCBjb25zdF92YWwpOwotLSNlbGlmIElTUENfTExW TV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJ U1BDX0xMVk1fMTJfMAotICAgICAgICAgcmV0ID0KLSAgICAgICAgICAgICBsbHZtOjpDb25zdGFu dFZlY3Rvcjo6Z2V0U3BsYXQoe3N0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZy0+dGFyZ2V0LT5n ZXRWZWN0b3JXaWR0aCgpKSwgZmFsc2V9LCBjb25zdF92YWwpOwotICNlbHNlIC8vIExMVk0gMTIu MCsKLUBAIC0zMTQ4LDcgKzMxNDgsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4 dDo6QnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlYwotICNpZiBJ U1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgIGxsdm06OkNvbnN0YW50ICp6 ZXJvVmVjID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KAotICAgICAgICAgdmVjVHlw ZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwgbGx2bTo6Q29uc3RhbnQ6OmdldE51bGxWYWx1ZShs bHZtOjpUeXBlOjpnZXRJbnQzMlR5KCpnLT5jdHgpKSk7Ci0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPT0gSVNQQ19MTFZNXzExXzAKLSsjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExW TV8xMl8wCi0gICAgIGxsdm06OkNvbnN0YW50ICp6ZXJvVmVjID0KLSAgICAgICAgIGxsdm06OkNv bnN0YW50VmVjdG9yOjpnZXRTcGxhdCh7c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih0eS0+Z2V0 TnVtRWxlbWVudHMoKSksIGZhbHNlfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKGxsdm06OlR5cGU6OmdldEludDMy VHkoKmctPmN0eCkpKTsKLUBAIC0zNjg4LDcgKzM2ODgsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6R2VuWFNpbWRDRlByZWRpY2F0ZShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxs dm06OgotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgICAgICBk ZWZhdWx0cyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCh2dC0+Z2V0VmVjdG9yTnVt RWxlbWVudHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUodnQtPmdldEVsZW1lbnRUeXBlKCkp KTsKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElT UENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAgICAgICAgIGRlZmF1bHRzID0gbGx2 bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KHtzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHZ0 LT5nZXROdW1FbGVtZW50cygpKSwgZmFsc2V9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQ6OmdldE51bGxWYWx1ZSh2dC0+ Z2V0RWxlbWVudFR5cGUoKSkpOwotICNlbHNlCi1kaWZmIC0tZ2l0IGEvc3JjL29wdC5jcHAgYi9z cmMvb3B0LmNwcAotaW5kZXggMTc4OWI4NDc2Li4zZmYxOTFhMGEgMTAwNjQ0Ci0tLS0gYS9zcmMv b3B0LmNwcAotKysrIGIvc3JjL29wdC5jcHAKLUBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBib29sIElu dHJpbnNpY3NPcHQ6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotICAg ICAgICAgICAgICAgICAgICAgYWxpZ24gPSBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdu bWVudCgpOwotICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICBhbGln biA9IGNhbGxJbnN0LT5nZXRDYWxsZWRGdW5jdGlvbigpID09IGF2eE1hc2tlZExvYWQzMiA/IDQg OiA4OwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTBfMAotKyNpZiBJU1BD X0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgICAgICAgICAgICAgIGxsdm06Oklu c3RydWN0aW9uICpsb2FkSW5zdCA9Ci0gICAgICAgICAgICAgICAgICAgICBuZXcgbGx2bTo6TG9h ZEluc3QoY2FzdFB0ciwgbGx2bTo6VHdpbmUoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCktPmdl dE5hbWUoKSkgKyAiX2xvYWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgbGx2bTo6TWF5YmVBbGlnbihhbGlnbiksIChs bHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotQEAgLTE0NzIsNyArMTQ3Miw3IEBAIHN0YXRpYyBs bHZtOjpWYWx1ZSAqbEdldEJhc2VQdHJBbmRPZmZzZXRzKGxsdm06OlZhbHVlICpwdHJzLCBsbHZt OjpWYWx1ZSAqKm9mZnNlCi0gICAgICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqemVyb01h c2sgPQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgICAgICAg ICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KGN2LT5nZXRUeXBl KCktPmdldFZlY3Rvck51bUVsZW1lbnRzKCksCi0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0g SVNQQ19MTFZNXzExXzAKLSsjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMl8w Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0 KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVj dG9yVHlwZT4oY3YtPmdldFR5cGUoKSktPmdldE51bUVsZW1lbnRzKCksIGZhbHNlfSwKLSAjZWxz ZSAvLyBMTFZNIDEyLjArCi1AQCAtMTQ5NSw3ICsxNDk1LDcgQEAgc3RhdGljIGxsdm06OlZhbHVl ICpsR2V0QmFzZVB0ckFuZE9mZnNldHMobGx2bTo6VmFsdWUgKnB0cnMsIGxsdm06OlZhbHVlICoq b2Zmc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqemVyb01hc2sgPSBs bHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwg SVNQQ19MTFZNXzExXzAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9wX3Zhcl90eXBl LT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLAotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElT UENfTExWTV8xMV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9y VHlwZT4oYm9wX3Zhcl90eXBlKS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2V9LAotICNlbHNlIC8v IExMVk0gMTIuMCsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6RWxlbWVudENv dW50OjpnZXQoCi1AQCAtMjgwMyw3ICsyODAzLDcgQEAgc3RhdGljIGJvb2wgbEdTVG9Mb2FkU3Rv cmUobGx2bTo6Q2FsbEluc3QgKmNhbGxJbnN0KSB7Ci0gICAgICAgICAgICAgbGx2bTo6VmFsdWUg Knplcm9NYXNrID0KLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAg ICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoY2FsbEluc3QtPmdl dFR5cGUoKS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lP TiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZN XzEyXzAKLSAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KAot ICAgICAgICAgICAgICAgICAgICAge2xsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KGNh bGxJbnN0LT5nZXRUeXBlKCkpLT5nZXROdW1FbGVtZW50cygpLCBmYWxzZX0sCi0gCi1AQCAtMzEw MCw3ICszMTAwLDcgQEAgc3RhdGljIGJvb2wgbEltcHJvdmVNYXNrZWRMb2FkKGxsdm06OkNhbGxJ bnN0ICpjYWxsSW5zdCwgbGx2bTo6QmFzaWNCbG9jazo6aXRlcmEKLSAgICAgICAgIHsKLSAgICAg ICAgICAgICBsbHZtOjpUeXBlICpwdHJUeXBlID0gbGx2bTo6UG9pbnRlclR5cGU6OmdldChjYWxs SW5zdC0+Z2V0VHlwZSgpLCAwKTsKLSAgICAgICAgICAgICBwdHIgPSBuZXcgbGx2bTo6Qml0Q2Fz dEluc3QocHRyLCBwdHJUeXBlLCAicHRyX2Nhc3RfZm9yX2xvYWQiLCBjYWxsSW5zdCk7Ci0tI2lm IElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8wCi0rI2lmIElTUENfTExWTV9WRVJT SU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAgICAgICBsb2FkID0gbmV3IGxsdm06OkxvYWRJ bnN0KAotICAgICAgICAgICAgICAgICBwdHIsIGNhbGxJbnN0LT5nZXROYW1lKCksIGZhbHNlIC8q IG5vdCB2b2xhdGlsZSAqLywKLSAgICAgICAgICAgICAgICAgbGx2bTo6TWF5YmVBbGlnbihnLT5v cHQuZm9yY2VBbGlnbmVkTWVtb3J5ID8gZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1l bnQoKSA6IGluZm8tPmFsaWduKQotQEAgLTM0NTksNyArMzQ1OSw3IEBAIGxsdm06OlZhbHVlICps R0VQQW5kTG9hZChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgaW50NjRfdCBvZmZzZXQsIGludCBhbGln biwgbGx2bTo6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlR5cGUgKnR5cGUpIHsK LSAgICAgbGx2bTo6VmFsdWUgKnB0ciA9IGxHRVBJbnN0KGJhc2VQdHIsIExMVk1JbnQ2NChvZmZz ZXQpLCAibmV3X2Jhc2UiLCBpbnNlcnRCZWZvcmUpOwotICAgICBwdHIgPSBuZXcgbGx2bTo6Qml0 Q2FzdEluc3QocHRyLCBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KHR5cGUsIDApLCAicHRyX2Nhc3Qi LCBpbnNlcnRCZWZvcmUpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTBf MAotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgIHJldHVybiBu ZXcgbGx2bTo6TG9hZEluc3QocHRyLCAiZ2F0aGVyX2xvYWQiLCBmYWxzZSAvKiBub3Qgdm9sYXRp bGUgKi8sIGxsdm06Ok1heWJlQWxpZ24oYWxpZ24pLCBpbnNlcnRCZWZvcmUpOwotICNlbHNlIC8v IExMVk0gMTEuMCsKLSAgICAgcmV0dXJuIG5ldyBsbHZtOjpMb2FkSW5zdChsbHZtOjpkeW5fY2Fz dDxsbHZtOjpQb2ludGVyVHlwZT4ocHRyLT5nZXRUeXBlKCkpLT5nZXRQb2ludGVyRWxlbWVudFR5 cGUoKSwgcHRyLAotQEAgLTYxODMsNyArNjE4Myw3IEBAIGJvb2wgUmVwbGFjZUxMVk1JbnRyaW5z aWNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAgICAgICAg ICAgICAgQXJncy5wdXNoX2JhY2sobGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KAotICNp ZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgICAgICAgICAgICAgICAg ICBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCksCi0tI2VsaWYgSVNQQ19MTFZNX1ZF UlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENf TExWTV8xMl8wCi0gICAgICAgICAgICAgICAgICAgICB7c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50 PihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCkpLCBmYWxzZX0sCi0gI2Vsc2UgLy8g TExWTSAxMi4wKwotICAgICAgICAgICAgICAgICAgICAgbGx2bTo6RWxlbWVudENvdW50OjpnZXQo c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRo KCkpLCBmYWxzZSksCi1AQCAtNjE5NSw3ICs2MTk1LDcgQEAgYm9vbCBSZXBsYWNlTExWTUludHJp bnNpY3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotICAgICAgICAg ICAgICAgICBsbHZtOjpWYWx1ZSAqemVyb01hc2sgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0 U3BsYXQoCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAg ICAgICAgICAgICAgIGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSwKLS0jZWxpZiBJ U1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExWTV9WRVJT SU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAgICAgICAgICAgICAgICAgICAgIHtzdGF0aWNfY2FzdDx1 bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZhbHNlfSwK LSAjZWxzZSAvLyBMTFZNIDEyLjArCi0gICAgICAgICAgICAgICAgICAgICBsbHZtOjpFbGVtZW50 Q291bnQ6OmdldChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0aXZl VmVjdG9yV2lkdGgoKSksIGZhbHNlKSwKLUBAIC02NTY3LDcgKzY1NjcsNyBAQCBsbHZtOjpWYWx1 ZSAqRml4QWRkcmVzc1NwYWNlOjpjYWxjdWxhdGVHYXRoZXJTY2F0dGVyQWRkcmVzcyhsbHZtOjpW YWx1ZSAqUHRyLCBsbAotICAgICAgICAgbGx2bTo6Q29uc3RhbnQgKnplcm9WZWMgPSBsbHZtOjpD b25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19M TFZNXzExXzAKLSAgICAgICAgICAgICBhZGRyZXNzVHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMo KSwKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElT UENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAgICAgICAgICAgICB7bGx2bTo6ZHlu X2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUpLT5nZXROdW1FbGVtZW50cygpLCBm YWxzZX0sCi0gI2Vsc2UKLSAgICAgICAgIGxsdm06OkVsZW1lbnRDb3VudDo6Z2V0KApkaWZmIC0t Z2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNy5wYXRjaCBiL3NyY3BrZ3MvaXNw Yy9wYXRjaGVzL2xsdm0xMi0wMDcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDFiOTc1Zjg5NmM3ZS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xs dm0xMi0wMDcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAgKzAsMCBAQAotRnJvbSA2MmY1 YTZjMzdiZjI2ZmMyNWE3Y2Y4MTg2ODA1MmQzNDcyODc0NjEwIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogQXJpbmEgTmVzaGx5YWV2YSA8YXJpbmEubmVzaGx5YWV2YUBpbnRlbC5jb20+ Ci1EYXRlOiBUdWUsIDIzIE1hciAyMDIxIDIzOjA3OjMwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hd IERvIG5vdCBnZW5lcmF0ZSBmdW5jdGlvbiBtYXNrIHdoZW4gaXQgaXMgbm90IHJlcXVpcmVkCi0K LS0tLQotIHNyYy9jdHguY3BwICAgICAgICAgICAgICAgICAgICB8IDM5ICsrKysrKysrKysrKysr LS0tLS0tLQotIHRlc3RzL2xpdC10ZXN0cy9mdWxsX21hc2suaXNwYyB8IDYzICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDkwIGluc2VydGlvbnMo KyksIDEyIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9saXQtdGVzdHMv ZnVsbF9tYXNrLmlzcGMKLQotZGlmZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIvc3JjL2N0eC5jcHAK LWluZGV4IDUyN2EwMmYzMC4uOWU3NzVmYzVjIDEwMDY0NAotLS0tIGEvc3JjL2N0eC5jcHAKLSsr KyBiL3NyYy9jdHguY3BwCi1AQCAtMjMxLDEwICsyMzEsMTggQEAgRnVuY3Rpb25FbWl0Q29udGV4 dDo6RnVuY3Rpb25FbWl0Q29udGV4dChGdW5jdGlvbiAqZnVuYywgU3ltYm9sICpmdW5TeW0sIGxs dm06OkYKLSAgICAgaW50ZXJuYWxNYXNrUG9pbnRlciA9IEFsbG9jYUluc3QoTExWTVR5cGVzOjpN YXNrVHlwZSwgImludGVybmFsX21hc2tfbWVtb3J5Iik7Ci0gICAgIFN0b3JlSW5zdChMTFZNTWFz a0FsbE9uLCBpbnRlcm5hbE1hc2tQb2ludGVyKTsKLSAKLS0gICAgZnVuY3Rpb25NYXNrVmFsdWUg PSBMTFZNTWFza0FsbE9uOwotLQotLSAgICBmdWxsTWFza1BvaW50ZXIgPSBBbGxvY2FJbnN0KExM Vk1UeXBlczo6TWFza1R5cGUsICJmdWxsX21hc2tfbWVtb3J5Iik7Ci0tICAgIFN0b3JlSW5zdChM TFZNTWFza0FsbE9uLCBmdWxsTWFza1BvaW50ZXIpOwotKyAgICAvLyBJZiB0aGUgZnVuY3Rpb24g ZG9lc24ndCBoYXZlIF9fbWFzayBpbiBwYXJhbWV0ZXJzLCB0aGVyZSBpcyBubyBuZWVkIHRvCi0r ICAgIC8vIGhhdmUgZnVuY3Rpb24gbWFzawotKyAgICBpZiAoKGZ1bmMtPkdldFR5cGUoKS0+aXNF eHBvcnRlZCAmJgotKyAgICAgICAgIChsZi0+Z2V0RnVuY3Rpb25UeXBlKCktPmdldE51bVBhcmFt cygpID09IGZ1bmMtPkdldFR5cGUoKS0+R2V0TnVtUGFyYW1ldGVycygpKSkgfHwKLSsgICAgICAg IChmdW5jLT5HZXRUeXBlKCktPmlzVW5tYXNrZWQpIHx8IChmdW5jLT5HZXRUeXBlKCktPmlzVGFz aykpIHsKLSsgICAgICAgIGZ1bmN0aW9uTWFza1ZhbHVlID0gTlVMTDsKLSsgICAgICAgIGZ1bGxN YXNrUG9pbnRlciA9IE5VTEw7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBmdW5jdGlvbk1hc2tW YWx1ZSA9IExMVk1NYXNrQWxsT247Ci0rICAgICAgICBmdWxsTWFza1BvaW50ZXIgPSBBbGxvY2FJ bnN0KExMVk1UeXBlczo6TWFza1R5cGUsICJmdWxsX21hc2tfbWVtb3J5Iik7Ci0rICAgICAgICBT dG9yZUluc3QoTExWTU1hc2tBbGxPbiwgZnVsbE1hc2tQb2ludGVyKTsKLSsgICAgfQotIAotICAg ICBibG9ja0VudHJ5TWFzayA9IE5VTEw7Ci0gICAgIGJyZWFrTGFuZXNQdHIgPSBjb250aW51ZUxh bmVzUHRyID0gTlVMTDsKLUBAIC0zODksMjAgKzM5NywyNiBAQCBsbHZtOjpCYXNpY0Jsb2NrICpG dW5jdGlvbkVtaXRDb250ZXh0OjpHZXRDdXJyZW50QmFzaWNCbG9jaygpIHsgcmV0dXJuIGJibG9j azsgfQotIAotIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6U2V0Q3VycmVudEJhc2ljQmxvY2so bGx2bTo6QmFzaWNCbG9jayAqYmIpIHsgYmJsb2NrID0gYmI7IH0KLSAKLS1sbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0RnVuY3Rpb25NYXNrKCkgeyByZXR1cm4gZnVuY3Rpb25N YXNrVmFsdWU7IH0KLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0RnVuY3Rp b25NYXNrKCkgeyByZXR1cm4gZnVsbE1hc2tQb2ludGVyID8gZnVuY3Rpb25NYXNrVmFsdWUgOiBM TFZNTWFza0FsbE9uOyB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Okdl dEludGVybmFsTWFzaygpIHsgcmV0dXJuIExvYWRJbnN0KGludGVybmFsTWFza1BvaW50ZXIsIE5V TEwsICJsb2FkX21hc2siKTsgfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0 OjpHZXRGdWxsTWFzaygpIHsKLS0gICAgcmV0dXJuIEJpbmFyeU9wZXJhdG9yKGxsdm06Okluc3Ry dWN0aW9uOjpBbmQsIEdldEludGVybmFsTWFzaygpLCBmdW5jdGlvbk1hc2tWYWx1ZSwgImludGVy bmFsX21hc2smZnVuY3Rpb25fbWFzayIpOwotKyAgICByZXR1cm4gZnVsbE1hc2tQb2ludGVyID8g QmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkFuZCwgR2V0SW50ZXJuYWxNYXNrKCks IGZ1bmN0aW9uTWFza1ZhbHVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImludGVybmFsX21hc2smZnVuY3Rpb25fbWFzayIpCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgOiBHZXRJbnRlcm5hbE1hc2soKTsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1 bmN0aW9uRW1pdENvbnRleHQ6OkdldEZ1bGxNYXNrUG9pbnRlcigpIHsgcmV0dXJuIGZ1bGxNYXNr UG9pbnRlcjsgfQotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRGdWxsTWFz a1BvaW50ZXIoKSB7Ci0rICAgIHJldHVybiBmdWxsTWFza1BvaW50ZXIgPyBmdWxsTWFza1BvaW50 ZXIgOiBpbnRlcm5hbE1hc2tQb2ludGVyOwotK30KLSAKLSB2b2lkIEZ1bmN0aW9uRW1pdENvbnRl eHQ6OlNldEZ1bmN0aW9uTWFzayhsbHZtOjpWYWx1ZSAqdmFsdWUpIHsKLS0gICAgZnVuY3Rpb25N YXNrVmFsdWUgPSB2YWx1ZTsKLS0gICAgaWYgKGJibG9jayAhPSBOVUxMKQotLSAgICAgICAgU3Rv cmVJbnN0KEdldEZ1bGxNYXNrKCksIGZ1bGxNYXNrUG9pbnRlcik7Ci0rICAgIGlmIChmdWxsTWFz a1BvaW50ZXIgIT0gTlVMTCkgewotKyAgICAgICAgZnVuY3Rpb25NYXNrVmFsdWUgPSB2YWx1ZTsK LSsgICAgICAgIGlmIChiYmxvY2sgIT0gTlVMTCkKLSsgICAgICAgICAgICBTdG9yZUluc3QoR2V0 RnVsbE1hc2soKSwgZnVsbE1hc2tQb2ludGVyKTsKLSsgICAgfQotIH0KLSAKLSB2b2lkIEZ1bmN0 aW9uRW1pdENvbnRleHQ6OlNldEJsb2NrRW50cnlNYXNrKGxsdm06OlZhbHVlICp2YWx1ZSkgeyBi bG9ja0VudHJ5TWFzayA9IHZhbHVlOyB9Ci1AQCAtNDEwLDcgKzQyNCw4IEBAIHZvaWQgRnVuY3Rp b25FbWl0Q29udGV4dDo6U2V0QmxvY2tFbnRyeU1hc2sobGx2bTo6VmFsdWUgKnZhbHVlKSB7IGJs b2NrRW50cnlNYXNrCi0gdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpTZXRJbnRlcm5hbE1hc2so bGx2bTo6VmFsdWUgKnZhbHVlKSB7Ci0gICAgIFN0b3JlSW5zdCh2YWx1ZSwgaW50ZXJuYWxNYXNr UG9pbnRlcik7Ci0gICAgIC8vIGtsdWRnZSBzbyB0aGF0IF9fbWFzayByZXR1cm5zIHRoZSByaWdo dCB2YWx1ZSBpbiBpc3BjIGNvZGUuCi0tICAgIFN0b3JlSW5zdChHZXRGdWxsTWFzaygpLCBmdWxs TWFza1BvaW50ZXIpOwotKyAgICBpZiAoZnVsbE1hc2tQb2ludGVyKQotKyAgICAgICAgU3RvcmVJ bnN0KEdldEZ1bGxNYXNrKCksIGZ1bGxNYXNrUG9pbnRlcik7Ci0gfQotIAotIHZvaWQgRnVuY3Rp b25FbWl0Q29udGV4dDo6U2V0SW50ZXJuYWxNYXNrQW5kKGxsdm06OlZhbHVlICpvbGRNYXNrLCBs bHZtOjpWYWx1ZSAqdGVzdCkgewotQEAgLTEyNjUsNyArMTI4MCw3IEBAIHZvaWQgRnVuY3Rpb25F bWl0Q29udGV4dDo6Q3VycmVudExhbmVzUmV0dXJuZWQoRXhwciAqZXhwciwgYm9vbCBkb0NvaGVy ZW5jZUNoZWNrCi0gICAgICAgICAvLyBsYW5lcyBoYXZlIHJldHVybmVkCi0gICAgICAgICBpZiAo ZG9Db2hlcmVuY2VDaGVjaykgewotICAgICAgICAgICAgIC8vIGlmIG5ld1JldHVybmVkTGFuZXMg PT0gZnVuY3Rpb25NYXNrVmFsdWUsIGdldCBvdXQgb2YgaGVyZSEKLS0gICAgICAgICAgICBsbHZt OjpWYWx1ZSAqY21wID0gTWFza3NBbGxFcXVhbChmdW5jdGlvbk1hc2tWYWx1ZSwgbmV3UmV0dXJu ZWRMYW5lcyk7Ci0rICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmNtcCA9IE1hc2tzQWxsRXF1YWwo R2V0RnVuY3Rpb25NYXNrKCksIG5ld1JldHVybmVkTGFuZXMpOwotICAgICAgICAgICAgIGxsdm06 OkJhc2ljQmxvY2sgKmJEb1JldHVybiA9IENyZWF0ZUJhc2ljQmxvY2soImRvX3JldHVybiIpOwot ICAgICAgICAgICAgIGxsdm06OkJhc2ljQmxvY2sgKmJOb1JldHVybiA9IENyZWF0ZUJhc2ljQmxv Y2soIm5vX3JldHVybiIpOwotICAgICAgICAgICAgIEJyYW5jaEluc3QoYkRvUmV0dXJuLCBiTm9S ZXR1cm4sIGNtcCk7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvbGl0LXRlc3RzL2Z1bGxfbWFzay5pc3Bj IGIvdGVzdHMvbGl0LXRlc3RzL2Z1bGxfbWFzay5pc3BjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMDAwLi5hYzBiMGJjYTMKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3RzL2xp dC10ZXN0cy9mdWxsX21hc2suaXNwYwotQEAgLTAsMCArMSw2MyBAQAotKy8vIFJVTjogJXtpc3Bj fSAlcyAtRElTUENfRVhQT1JUIC0tZW1pdC1sbHZtLXRleHQgLU8wIC0tbm93cmFwIC1vICV0Lmxs Ci0rLy8gUlVOOiBGaWxlQ2hlY2sgLS1pbnB1dC1maWxlPSV0LmxsIC1jaGVjay1wcmVmaXg9Q0hF Q0tfSVNQQ19FWFBPUlQgJXMKLSsKLSsvLyBSVU46ICV7aXNwY30gJXMgLURJU1BDX1VOTUFTS0VE IC0tZW1pdC1sbHZtLXRleHQgLU8wIC0tbm93cmFwIC1vICV0LmxsCi0rLy8gUlVOOiBGaWxlQ2hl Y2sgLS1pbnB1dC1maWxlPSV0LmxsIC1jaGVjay1wcmVmaXg9Q0hFQ0tfSVNQQ19VTk1BU0tFRCAl cwotKwotKy8vIFJVTjogJXtpc3BjfSAlcyAtRElTUENfTk9RVUFMSUYgLS1lbWl0LWxsdm0tdGV4 dCAtTzAgLS1ub3dyYXAgLW8gJXQubGwKLSsvLyBSVU46IEZpbGVDaGVjayAtLWlucHV0LWZpbGU9 JXQubGwgLWNoZWNrLXByZWZpeD1DSEVDS19JU1BDX05PUVVBTElGICVzCi0rCi0rLy8gUlVOOiAl e2lzcGN9ICVzIC1ESVNQQ19UQVNLIC0tZW1pdC1sbHZtLXRleHQgLU8wIC0tbm93cmFwIC1vICV0 LmxsCi0rLy8gUlVOOiBGaWxlQ2hlY2sgLS1pbnB1dC1maWxlPSV0LmxsIC1jaGVjay1wcmVmaXg9 Q0hFQ0tfSVNQQ19UQVNLICVzCi0rCi0rc3RydWN0IFBhcmFtZXRlcnMgewotKyAgICBmbG9hdCAq dm91dDsKLSsgICAgaW50IHBhcmFtOwotK307Ci0rCi0rI2lmZGVmIElTUENfRVhQT1JUCi0rLy8g Q0hFQ0tfSVNQQ19FWFBPUlQ6IGRlZmluZSB2b2lkIEBzaW1wbGVfZXhwb3J0X19fCi0rLy8gQ0hF Q0tfSVNQQ19FWFBPUlQ6ICVmdWxsX21hc2tfbWVtb3J5ID0gYWxsb2NhCi0rLy8gQ0hFQ0tfSVNQ Q19FWFBPUlQ6IGRlZmluZSB2b2lkIEBzaW1wbGVfZXhwb3J0KAotKy8vIENIRUNLX0lTUENfRVhQ T1JULU5PVDogJWZ1bGxfbWFza19tZW1vcnkgPSBhbGxvY2EKLStleHBvcnQgdm9pZCBzaW1wbGVf ZXhwb3J0KHZvaWQgKnVuaWZvcm0gX3ApIHsKLSsgICAgUGFyYW1ldGVycyAqdW5pZm9ybSBwID0g KFBhcmFtZXRlcnMgKiB1bmlmb3JtKSBfcDsKLSsgICAgaWYgKHByb2dyYW1JbmRleCA+IHAtPnBh cmFtKQotKyAgICAgICAgcC0+dm91dFtwcm9ncmFtSW5kZXhdID0gcHJvZ3JhbUNvdW50ICogcHJv Z3JhbUluZGV4OwotK30KLSsjZW5kaWYKLSsjaWZkZWYgSVNQQ19VTk1BU0tFRAotKy8vIENIRUNL X0lTUENfVU5NQVNLRUQ6IGRlZmluZSB2b2lkIEBzaW1wbGVfdW5tYXNrZWQKLSsvLyBDSEVDS19J U1BDX1VOTUFTS0VELU5PVDogJWZ1bGxfbWFza19tZW1vcnkgPSBhbGxvY2EKLSt1bm1hc2tlZCB2 b2lkIHNpbXBsZV91bm1hc2tlZCh2b2lkICp1bmlmb3JtIF9wKSB7Ci0rICAgIFBhcmFtZXRlcnMg KnVuaWZvcm0gcCA9IChQYXJhbWV0ZXJzICogdW5pZm9ybSkgX3A7Ci0rICAgIGlmIChwcm9ncmFt SW5kZXggPiBwLT5wYXJhbSkKLSsgICAgICAgIHAtPnZvdXRbcHJvZ3JhbUluZGV4XSA9IHByb2dy YW1Db3VudCAqIHByb2dyYW1JbmRleDsKLSt9Ci0rI2VuZGlmCi0rI2lmZGVmIElTUENfTk9RVUFM SUYKLSsvLyBDSEVDS19JU1BDX05PUVVBTElGOiBkZWZpbmUgdm9pZCBAc2ltcGxlCi0rLy8gQ0hF Q0tfSVNQQ19OT1FVQUxJRjogJWZ1bGxfbWFza19tZW1vcnkgPSBhbGxvY2EKLSt2b2lkIHNpbXBs ZSh2b2lkICp1bmlmb3JtIF9wKSB7Ci0rICAgIFBhcmFtZXRlcnMgKnVuaWZvcm0gcCA9IChQYXJh bWV0ZXJzICogdW5pZm9ybSkgX3A7Ci0rICAgIGlmIChwcm9ncmFtSW5kZXggPiBwLT5wYXJhbSkK LSsgICAgICAgIHAtPnZvdXRbcHJvZ3JhbUluZGV4XSA9IHByb2dyYW1Db3VudCAqIHByb2dyYW1J bmRleDsKLSt9Ci0rI2VuZGlmCi0rI2lmZGVmIElTUENfVEFTSwotKwotKy8vIENIRUNLX0lTUENf VEFTSzogZGVmaW5lIHZvaWQgQHNpbXBsZV90YXNrCi0rLy8gQ0hFQ0tfSVNQQ19UQVNLLU5PVDog JWZ1bGxfbWFza19tZW1vcnkgPSBhbGxvY2EKLSsvLyBDSEVDS19JU1BDX1RBU0s6IGRlZmluZSB2 b2lkIEBzaW1wbGVfZW50cnlfcG9pbnRfXwotKy8vIENIRUNLX0lTUENfVEFTSzogJWZ1bGxfbWFz a19tZW1vcnkgPSBhbGxvY2EKLSsvLyBDSEVDS19JU1BDX1RBU0s6IGRlZmluZSB2b2lkIEBzaW1w bGVfZW50cnlfcG9pbnQoCi0rLy8gQ0hFQ0tfSVNQQ19UQVNLLU5PVDogJWZ1bGxfbWFza19tZW1v cnkgPSBhbGxvY2EKLSt0YXNrIHZvaWQgc2ltcGxlX3Rhc2sodm9pZCAqdW5pZm9ybSBfcCkgewot KyAgICBQYXJhbWV0ZXJzICp1bmlmb3JtIHAgPSAoUGFyYW1ldGVycyAqIHVuaWZvcm0pIF9wOwot KyAgICBpZiAocHJvZ3JhbUluZGV4ID4gcC0+cGFyYW0pCi0rICAgICAgICBwLT52b3V0W3Byb2dy YW1JbmRleF0gPSBwcm9ncmFtQ291bnQgKiBwcm9ncmFtSW5kZXg7Ci0rfQotK2V4cG9ydCB2b2lk IHNpbXBsZV9lbnRyeV9wb2ludCh2b2lkICp1bmlmb3JtIHBhcmFtZXRlcnMsIHVuaWZvcm0gaW50 IGRpbTAsIHVuaWZvcm0gaW50IGRpbTEsIHVuaWZvcm0gaW50IGRpbTIpIHsKLSsgICAgbGF1bmNo W2RpbTAsIGRpbTEsIGRpbTJdIHNpbXBsZV90YXNrKHBhcmFtZXRlcnMpOwotK30KLSsjZW5kaWYK LVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3Bh dGNoZXMvbGx2bTEyLTAwOC5wYXRjaCBiL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDgu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NDEzZDhiNzg4Ny4uMDAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDgucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotRnJvbSBhZmFkMTQyMjdkOTIwNGEzYzhhNjI2Y2E2 MDhmNWI0M2MzMjE4ZmU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQXJpbmEgTmVz aGx5YWV2YSA8YXJpbmEubmVzaGx5YWV2YUBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDQgTWF5IDIw MjEgMTE6NDM6NTIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4ZWQgSVNQQyBnZW4gYnVpbGQg Zm9yIExMVk0xMgotCi0tLS0KLSBzcmMvY3R4LmNwcCB8ICA0ICsrKysKLSBzcmMvb3B0LmNwcCB8 IDQzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVz IGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0 IGEvc3JjL2N0eC5jcHAgYi9zcmMvY3R4LmNwcAotaW5kZXggMGM3MDUwNTkxLi5mN2RjMDY5Mzkg MTAwNjQ0Ci0tLS0gYS9zcmMvY3R4LmNwcAotKysrIGIvc3JjL2N0eC5jcHAKLUBAIC0zNzM4LDcg KzM3MzgsMTEgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdlblhTaW1kQ0ZB bnkobGx2bTo6VmFsdWUgKnZhbHVlKSB7Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OkdlblhTaW1kQ0ZQcmVkaWNhdGUobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpWYWx1 ZSAqZGVmYXVsdHMpIHsKLSAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIGxsdm06OmlzYTxsbHZt OjpWZWN0b3JUeXBlPih2YWx1ZS0+Z2V0VHlwZSgpKSk7Ci0rI2lmIElTUENfTExWTV9WRVJTSU9O ID49IElTUENfTExWTV8xMV8wCi0rICAgIGxsdm06OkZpeGVkVmVjdG9yVHlwZSAqdnQgPSBsbHZt OjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KHZhbHVlLT5nZXRUeXBlKCkpOwotKyNl bHNlCi0gICAgIGxsdm06OlZlY3RvclR5cGUgKnZ0ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVj dG9yVHlwZT4odmFsdWUtPmdldFR5cGUoKSk7Ci0rI2VuZGlmCi0gICAgIGlmIChkZWZhdWx0cyA9 PSBOVUxMKSB7Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAg ICAgIGRlZmF1bHRzID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KHZ0LT5nZXRWZWN0 b3JOdW1FbGVtZW50cygpLAotZGlmZiAtLWdpdCBhL3NyYy9vcHQuY3BwIGIvc3JjL29wdC5jcHAK LWluZGV4IGNlYTRhZmEyMy4uNGUzM2Q2YjFhIDEwMDY0NAotLS0tIGEvc3JjL29wdC5jcHAKLSsr KyBiL3NyYy9vcHQuY3BwCi1AQCAtMjkxNiw5ICsyOTE2LDEzIEBAIHN0YXRpYyBsbHZtOjpGdW5j dGlvbiAqbEdlblhNYXNrZWRJbnQ4SW5zdChsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCwgYm9vbCBp c1N0b3JlCi0gCi0gc3RhdGljIGxsdm06OkNhbGxJbnN0ICpsR2VuWFN0b3JlSW5zdChsbHZtOjpW YWx1ZSAqdmFsLCBsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCkgewot ICAgICBBc3NlcnQoZy0+dGFyZ2V0LT5pc0dlblhUYXJnZXQoKSk7Ci0rI2lmIElTUENfTExWTV9W RVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgIEFzc2VydChsbHZtOjppc2E8bGx2bTo6Rml4 ZWRWZWN0b3JUeXBlPih2YWwtPmdldFR5cGUoKSkpOwotKyAgICBsbHZtOjpGaXhlZFZlY3RvclR5 cGUgKnZhbFZlY1R5cGUgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KHZh bC0+Z2V0VHlwZSgpKTsKLSsjZWxzZQotICAgICBBc3NlcnQobGx2bTo6aXNhPGxsdm06OlZlY3Rv clR5cGU+KHZhbC0+Z2V0VHlwZSgpKSk7Ci0tCi0gICAgIGxsdm06OlZlY3RvclR5cGUgKnZhbFZl Y1R5cGUgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPih2YWwtPmdldFR5cGUoKSk7 Ci0rI2VuZGlmCi0gICAgIEFzc2VydChsbHZtOjppc1Bvd2VyT2YyXzMyKHZhbFZlY1R5cGUtPmdl dE51bUVsZW1lbnRzKCkpKTsKLSAgICAgQXNzZXJ0KHZhbFZlY1R5cGUtPmdldFByaW1pdGl2ZVNp emVJbkJpdHMoKSAvIDggPD0gOCAqIE9XT1JEKTsKLSAKLUBAIC0yOTQyLDkgKzI5NDYsMTMgQEAg c3RhdGljIGxsdm06OkNhbGxJbnN0ICpsR2VuWFN0b3JlSW5zdChsbHZtOjpWYWx1ZSAqdmFsLCBs bHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjoKLSB9Ci0gCi0gc3RhdGljIGxsdm06OkNhbGxJbnN0ICps R2VuWExvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlR5cGUgKnJldFR5cGUsIGxsdm06 Okluc3RydWN0aW9uICppbnN0KSB7Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExW TV8xMV8wCi0rICAgIEFzc2VydChsbHZtOjppc2E8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihyZXRU eXBlKSk7Ci0rICAgIGxsdm06OkZpeGVkVmVjdG9yVHlwZSAqcmV0VmVjVHlwZSA9IGxsdm06OmR5 bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4ocmV0VHlwZSk7Ci0rI2Vsc2UKLSAgICAgQXNz ZXJ0KGxsdm06OmlzYTxsbHZtOjpWZWN0b3JUeXBlPihyZXRUeXBlKSk7Ci0tCi0gICAgIGxsdm06 OlZlY3RvclR5cGUgKnJldFZlY1R5cGUgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBl PihyZXRUeXBlKTsKLSsjZW5kaWYKLSAgICAgQXNzZXJ0KGxsdm06OmlzUG93ZXJPZjJfMzIocmV0 VmVjVHlwZS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotICAgICBBc3NlcnQocmV0VmVjVHlwZS0+Z2V0 UHJpbWl0aXZlU2l6ZUluQml0cygpKTsKLSAgICAgQXNzZXJ0KHJldFZlY1R5cGUtPmdldFByaW1p dGl2ZVNpemVJbkJpdHMoKSAvIDggPD0gOCAqIE9XT1JEKTsKLUBAIC01NDg1LDggKzU0OTMsMTMg QEAgc3RhdGljIHZvaWQgbENyZWF0ZUJsb2NrTERVc2UobGx2bTo6SW5zdHJ1Y3Rpb24gKmN1cnJJ bnN0LCBzdGQ6OnZlY3RvcjxsbHZtOjpFeHQKLSAgICAgICAgIH0gZWxzZSBpZiAoYXV0byBnYXRo ZXIgPSBsR2V0UHNldWRvR2F0aGVyKGxsdm06OmR5bl9jYXN0PGxsdm06Okluc3RydWN0aW9uPih1 aS0+Z2V0VXNlcigpKSkpIHsKLSAgICAgICAgICAgICAvLyBDb2xsZWN0IGlkeHMgZnJvbSBnYXRo ZXIgYW5kIGZpeCB1c2VycwotICAgICAgICAgICAgIGxsdm06OlZhbHVlICpyZXMgPSBsbHZtOjpV bmRlZlZhbHVlOjpnZXQoZ2F0aGVyLT5nZXRUeXBlKCkpOwotLSAgICAgICAgICAgIGZvciAodW5z aWduZWQgaSA9IDAsIGVuZCA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHJlcy0+ Z2V0VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMoKTsgaSA8IGVuZDsKLS0gICAgICAgICAgICAgICAg ICsraSkgewotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAg ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGVuZCA9IGxsdm06OmR5bl9jYXN0PGxsdm06OkZp eGVkVmVjdG9yVHlwZT4ocmVzLT5nZXRUeXBlKCkpLT5nZXROdW1FbGVtZW50cygpOyBpIDwgZW5k OwotKyAgICAgICAgICAgICAgICAgKytpKQotKyNlbHNlCi0rICAgICAgICAgICAgZm9yICh1bnNp Z25lZCBpID0gMCwgZW5kID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocmVzLT5n ZXRUeXBlKCkpLT5nZXROdW1FbGVtZW50cygpOyBpIDwgZW5kOyArK2kpCi0rI2VuZGlmCi0rICAg ICAgICAgICAgewotICAgICAgICAgICAgICAgICAvLyBHZXQgZWxlbWVudCB2aWEgSUVJCi0gICAg ICAgICAgICAgICAgIHJlcyA9IGxsdm06Okluc2VydEVsZW1lbnRJbnN0OjpDcmVhdGUocmVzLCBF RUlzW3B0clVzZS5pZHhzW2N1cnJfaWR4KytdXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1U eXBlczo6SW50MzJUeXBlLCBpKSwKLUBAIC01NTIyLDEwICs1NTM1LDExIEBAIHN0YXRpYyBib29s IGxWZWN0b3JpemVHRVBzKGxsdm06OlZhbHVlICpwdHIsIHN0ZDo6dmVjdG9yPFB0clVzZT4gJnB0 clVzZXMsIHN0ZDo6Ci0gCi0gICAgIC8vIEFkanVzdCB2YWx1ZXMgZm9yIHZlY3RvciBsb2FkCi0g I2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0tICAgIGlmIChhdXRvIHZl Y1R5ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPih0eXBlKSkgewotKyAg ICBpZiAoYXV0byB2ZWNUeSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4o dHlwZSkpCi0gI2Vsc2UKLS0gICAgaWYgKGF1dG8gdmVjVHkgPSBsbHZtOjpkeW5fY2FzdDxsbHZt OjpWZWN0b3JUeXBlPih0eXBlKSkgewotKyAgICBpZiAoYXV0byB2ZWNUeSA9IGxsdm06OmR5bl9j YXN0PGxsdm06OlZlY3RvclR5cGU+KHR5cGUpKQotICNlbmRpZgotKyAgICB7Ci0gICAgICAgICAv LyBHZXQgc2luZ2xlIGVsZW1lbnQgc2l6ZQotICAgICAgICAgdF9zaXplIC89IHZlY1R5LT5nZXRO dW1FbGVtZW50cygpOwotICAgICAgICAgLy8gR2V0IHNpbmdsZSBlbGVtZW50IHR5cGUKLUBAIC02 NDc3LDcgKzY0OTEsNyBAQCBsbHZtOjpWYWx1ZSAqRml4QWRkcmVzc1NwYWNlOjpjYWxjdWxhdGVH YXRoZXJTY2F0dGVyQWRkcmVzcyhsbHZtOjpWYWx1ZSAqUHRyLCBsbAotICNpZiBJU1BDX0xMVk1f VkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgT2Zmc2V0cywKLSAgICAgICAgIGxs dm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50NjRUeXBlLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlw ZT4oT2Zmc2V0cy0+Z2V0VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMoKSksCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5 cGU+KE9mZnNldHMtPmdldFR5cGUoKSktPmdldE51bUVsZW1lbnRzKCkpLAotICAgICAgICAgInN2 bV9vZmZzZXRfemV4dCIsIEluc2VydEJlZm9yZSk7Ci0gI2Vsc2UKLSAgICAgICAgIE9mZnNldHMs IGxsdm06OlZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwgT2Zmc2V0cy0+Z2V0 VHlwZSgpLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpKSwKLUBAIC02NDkyLDcgKzY1MDYsNyBAQCBs bHZtOjpWYWx1ZSAqRml4QWRkcmVzc1NwYWNlOjpjYWxjdWxhdGVHYXRoZXJTY2F0dGVyQWRkcmVz cyhsbHZtOjpWYWx1ZSAqUHRyLCBsbAotICAgICAgICAgbGx2bTo6VmFsdWUgKnVuZGVmSW5zZXJ0 VmFsdWUgPQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotICAgICAg ICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldCgK LS0gICAgICAgICAgICAgICAgTExWTVR5cGVzOjpJbnQ2NFR5cGUsIGxsdm06OmR5bl9jYXN0PGxs dm06OlZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotKyAgICAg ICAgICAgICAgICBMTFZNVHlwZXM6OkludDY0VHlwZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4 ZWRWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51bUVsZW1lbnRzKCkpKTsKLSAjZWxzZQot ICAgICAgICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpWZWN0b3JUeXBlOjpnZXQo TExWTVR5cGVzOjpJbnQ2NFR5cGUsIGFkZHJlc3NUeXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygp KSk7Ci0gI2VuZGlmCi1AQCAtNjUwMSwxNyArNjUxNSwxNiBAQCBsbHZtOjpWYWx1ZSAqRml4QWRk cmVzc1NwYWNlOjpjYWxjdWxhdGVHYXRoZXJTY2F0dGVyQWRkcmVzcyhsbHZtOjpWYWx1ZSAqUHRy LCBsbAotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgICAgICAg ICAgYWRkcmVzc1R5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCksCi0gI2VsaWYgSVNQQ19MTFZN X1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAotLSAgICAgICAgICAgIHtsbHZtOjpkeW5fY2FzdDxs bHZtOjpWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51bUVsZW1lbnRzKCksIGZhbHNlfSwK LSsgICAgICAgICAgICB7bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihhZGRy ZXNzVHlwZSktPmdldE51bUVsZW1lbnRzKCksIGZhbHNlfSwKLSAjZWxzZQotLSAgICAgICAgbGx2 bTo6RWxlbWVudENvdW50OjpnZXQoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs bHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KGFkZHJlc3NUeXBlLT5nZXROdW1F bGVtZW50cygpLCBmYWxzZSksCi0rICAgICAgICAgICAgbGx2bTo6RWxlbWVudENvdW50OjpnZXQo bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51 bUVsZW1lbnRzKCksIGZhbHNlKSwKLSAjZW5kaWYKLSAgICAgICAgICAgICBsbHZtOjpDb25zdGFu dDo6Z2V0TnVsbFZhbHVlKGxsdm06OlR5cGU6OmdldEludDMyVHkoSW5zZXJ0QmVmb3JlLT5nZXRD b250ZXh0KCkpKSk7Ci0gCi0gICAgICAgICBsbHZtOjpWYWx1ZSAqdW5kZWZTaHVmZmxlVmFsdWUg PQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgICAg IGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldCgKLS0gICAg ICAgICAgICAgICAgTExWTVR5cGVzOjpJbnQ2NFR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OlZl Y3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotKyAgICAgICAgICAg ICAgICBMTFZNVHlwZXM6OkludDY0VHlwZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0 b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51bUVsZW1lbnRzKCkpKTsKLSAjZWxzZQotICAgICAg ICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpWZWN0b3JUeXBlOjpnZXQoTExWTVR5 cGVzOjpJbnQ2NFR5cGUsIGFkZHJlc3NUeXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpKSk7Ci0g I2VuZGlmCi1AQCAtNjU0Miw3ICs2NTU1LDggQEAgbGx2bTo6SW5zdHJ1Y3Rpb24gKkZpeEFkZHJl c3NTcGFjZTo6cHJvY2Vzc1ZlY3RvckxvYWQobGx2bTo6TG9hZEluc3QgKkxJKSB7Ci0gICAgICAg ICBpc1B0ckxvYWQgPSB0cnVlOwotICAgICAgICAgYXV0byBzY2FsYXJUeXBlID0gZy0+dGFyZ2V0 LT5pczMyQml0KCkgPyBMTFZNVHlwZXM6OkludDMyVHlwZSA6IExMVk1UeXBlczo6SW50NjRUeXBl OwotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotLSAgICAgICAgcmV0 VHlwZSA9IGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIGxsdm06OmR5bl9j YXN0PGxsdm06OlZlY3RvclR5cGU+KHJldFR5cGUpLT5nZXROdW1FbGVtZW50cygpKTsKLSsgICAg ICAgIHJldFR5cGUgPQotKyAgICAgICAgICAgIGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNj YWxhclR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4ocmV0VHlwZSkt PmdldE51bUVsZW1lbnRzKCkpOwotICNlbHNlCi0gICAgICAgICByZXRUeXBlID0gbGx2bTo6VmVj dG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIHJldFR5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkp OwotICNlbmRpZgotQEAgLTY2MDQsNyArNjYxOCw4IEBAIGxsdm06Okluc3RydWN0aW9uICpGaXhB ZGRyZXNzU3BhY2U6OnByb2Nlc3NWZWN0b3JTdG9yZShsbHZtOjpTdG9yZUluc3QgKlNJKSB7Ci0g ICAgIGlmICh2YWxUeXBlLT5nZXRTY2FsYXJUeXBlKCktPmlzUG9pbnRlclR5KCkpIHsKLSAgICAg ICAgIGF1dG8gc2NhbGFyVHlwZSA9IGctPnRhcmdldC0+aXMzMkJpdCgpID8gTExWTVR5cGVzOjpJ bnQzMlR5cGUgOiBMTFZNVHlwZXM6OkludDY0VHlwZTsKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04g Pj0gSVNQQ19MTFZNXzExXzAKLS0gICAgICAgIHZhbFR5cGUgPSBsbHZtOjpGaXhlZFZlY3RvclR5 cGU6OmdldChzY2FsYXJUeXBlLCBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPih2YWxU eXBlKS0+Z2V0TnVtRWxlbWVudHMoKSk7Ci0rICAgICAgICB2YWxUeXBlID0KLSsgICAgICAgICAg ICBsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChzY2FsYXJUeXBlLCBsbHZtOjpkeW5fY2FzdDxs bHZtOjpGaXhlZFZlY3RvclR5cGU+KHZhbFR5cGUpLT5nZXROdW1FbGVtZW50cygpKTsKLSAjZWxz ZQotICAgICAgICAgdmFsVHlwZSA9IGxsdm06OlZlY3RvclR5cGU6OmdldChzY2FsYXJUeXBlLCB2 YWxUeXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpKTsKLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDkucGF0Y2ggYi9zcmNwa2dzL2lzcGMvcGF0Y2hl cy9sbHZtMTItMDA5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2VhNjc4 Mjg1ODIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA5 LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEwOSArMCwwIEBACi1Gcm9tIDk3YjEzYzMyMTMy ZTI3MDRhNWUzZTdiMmVhZTQ5ZDg1NGQwODdlM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBBcmluYSBOZXNobHlhZXZhIDxhcmluYS5uZXNobHlhZXZhQGludGVsLmNvbT4KLURhdGU6 IFR1ZSwgNCBNYXkgMjAyMSAxMTozMTo1NSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBVcGRhdGVk IGJ1aWx0aW5zLWNtKiBmb3Igc3dpdGNoIHRvIExMVk0xMgotCi0tLS0KLSBidWlsdGlucy9idWls dGlucy1jbS0zMi5sbCB8IDIzNCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t Ci0gYnVpbHRpbnMvYnVpbHRpbnMtY20tNjQubGwgfCAyMzIgKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMzMgaW5zZXJ0aW9ucygrKSwgMjMz IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYnVpbHRpbnMvYnVpbHRpbnMtY20tMzIubGwg Yi9idWlsdGlucy9idWlsdGlucy1jbS0zMi5sbAotaW5kZXggMzJkZWJmMzJlLi40ODFiYmRjNDgg MTAwNjQ0Ci0tLS0gYS9idWlsdGlucy9idWlsdGlucy1jbS0zMi5sbAotKysrIGIvYnVpbHRpbnMv YnVpbHRpbnMtY20tMzIubGwKLUBAIC01NTcsNyArNTU3LDcgQEAgJF9aTjEzVmFyeWluZ1dyaXRl cjEyV3JpdGVWZWNFbGVtSVB2RUV2diA9IGNvbWRhdCBhbnkKLSBALnN0ci4xMCA9IHByaXZhdGUg dW5uYW1lZF9hZGRyIGNvbnN0YW50IFs1IHggaThdIGMiJTA4WFwwMCIsIGFsaWduIDEKLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgc2ln bmV4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdmNjKGk4IHNpZ25leHQsIGk4IHNp Z25leHQpICMwIHsKLStkZWZpbmUgaW50ZXJuYWwgc2lnbmV4dCBpOCBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc2RpdmNjKGk4IHNpZ25leHQsIGk4IHNpZ25leHQpICMwIHsKLSAgICUzID0gYWxs b2NhIGk4LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxv Y2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC02MTgsNyArNjE4LDcgQEAgZGVmaW5lIGludGVybmFs IDwxIHggaTg+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTFFRUV1MkNNdmJUX19jUzFf UzFfdTJDTXYKLSBkZWNsYXJlIDwxIHggaTg+IEBsbHZtLmdlbngucmRyZWdpb25pLnYxaTgudjFp OC5pMTYoPDEgeCBpOD4sIGkzMiwgaTMyLCBpMzIsIGkxNiwgaTMyKSAjMgotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfY1NfKDwxIHggaTg+LCA8MSB4IGk4 PikgIzAgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc2RpdnUyQ012YjFfY1NfKDwxIHggaTg+LCA8MSB4IGk4PikgIzAgewotICAgJTMgPSBhbGxv Y2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0g ICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTYzNCw3ICs2MzQsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZi MV9jU18oPDEgeCBpOD4sIDwxCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc2RpdnUyQ012YjJfY1NfKDwyIHggaTg+LCA8MiB4IGk4PikgIzMgewotK2RlZmluZSBpbnRl cm5hbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjJfY1NfKDwy IHggaTg+LCA8MiB4IGk4PikgIzMgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIK LSAgICU0ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MiB4IGk4 PiwgYWxpZ24gMgotQEAgLTY4MCw3ICs2ODAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4g QF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMkVFRXUyQ012YlRfX2NTMV9TMV91MkNNdgot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X2NTXyg8 NCB4IGk4PiwgPDQgeCBpOD4pICM1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X2NTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICM1 IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8NCB4 IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLUBAIC04MTgs NyArODE4LDcgQEAgZGVmaW5lIGludGVybmFsIDwxNiB4IGk4PiBAX1pON2RldGFpbHMxM19faW1w bF9kaXZyZW1JTGkxNkVFRXUyQ012YlRfX2NTMV9TMV91MkMKLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjMyX2NTXyg8MzIgeCBpOD4sIDwzMiB4IGk4 PikgIzExIHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zZGl2dTJDTXZiMzJfY1NfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTEgewotICAgJTMg PSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDMyIHggaTg+LCBh bGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotQEAgLTg2NCw3ICs4 NjQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWk43ZGV0YWlsczEzX19pbXBsX2Rp dnJlbUlMaTMyRUVFdTJDTXZiVF9fY1MxX1MxX3UyQwotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJz OiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBpOCBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbWNjKGk4IHNpZ25leHQsIGk4IHNpZ25leHQpICMwIHsKLStk ZWZpbmUgaW50ZXJuYWwgc2lnbmV4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbWNj KGk4IHNpZ25leHQsIGk4IHNpZ25leHQpICMwIHsKLSAgICUzID0gYWxsb2NhIGk4LCBhbGlnbiAx Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFs aWduIDEKLUBAIC04OTAsNyArODkwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0IGk4IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtY2MoaTggc2lnbmV4dCwgaTggc2lnbmUKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9jU18oPDEgeCBp OD4sIDwxIHggaTg+KSAjMCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9jU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMCB7Ci0g ICAlMyA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgPDEgeCBpOD4s IGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtOTA0LDcgKzkw NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW11MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9jU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMyB7Ci0r ZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiMl9jU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGk4 PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU1ID0gYWxs b2NhIDwyIHggaTg+LCBhbGlnbiAyCi1AQCAtOTE4LDcgKzkxOCw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2NTXyg8MiB4 IGk4PiwgPDIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1k ZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiNF9jU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjNSB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHgg aTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9jU18oPDQgeCBpOD4sIDw0 IHggaTg+KSAjNSB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTQgPSBh bGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0 Ci1AQCAtOTMyLDcgKzkzMiw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2NTXyg8NCB4IGk4PiwgPDQKLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw4IHgg aTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9jU18oPDggeCBpOD4sIDw4 IHggaTg+KSAjNyB7Ci0rZGVmaW5lIGludGVybmFsIDw4IHggaTg+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiOF9jU18oPDggeCBpOD4sIDw4IHggaTg+KSAjNyB7Ci0gICAlMyA9 IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWdu IDgKLSAgICU1ID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci1AQCAtOTQ2LDcgKzk0Niw3IEBA IGRlZmluZSBkc29fbG9jYWwgPDggeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11 MkNNdmI4X2NTXyg8OCB4IGk4PiwgPDgKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjE2X2NTXyg8MTYgeCBpOD4sIDwxNiB4IGk4PikgIzkgewotK2Rl ZmluZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmIxNl9jU18oPDE2IHggaTg+LCA8MTYgeCBpOD4pICM5IHsKLSAgICUzID0gYWxsb2NhIDwxNiB4 IGk4PiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGk4PiwgYWxpZ24gMTYKLSAgICU1 ID0gYWxsb2NhIDwxNiB4IGk4PiwgYWxpZ24gMTYKLUBAIC05NjAsNyArOTYwLDcgQEAgZGVmaW5l IGRzb19sb2NhbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIx Nl9jU18oPDE2IHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zcmVtdTJDTXZiMzJfY1NfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTEgewotK2RlZmluZSBp bnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9j U18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxMSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpOD4s IGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNSA9IGFs bG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtOTc0LDcgKzk3NCw3IEBAIGRlZmluZSBkc29f bG9jYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfY1Nf KDwzMiB4IGk4PiwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQK LS1kZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z ZGl2c3MoaTE2IHNpZ25leHQsIGkxNiBzaWduZXh0KSAjMyB7Ci0rZGVmaW5lIGludGVybmFsIHNp Z25leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2c3MoaTE2IHNpZ25leHQsIGkx NiBzaWduZXh0KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU0ID0gYWxs b2NhIGkxNiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAt MTA1OCw3ICsxMDU4LDcgQEAgZGVmaW5lIGludGVybmFsIDwxIHggaTE2PiBAX1pON2RldGFpbHMx M19faW1wbF9kaXZyZW1JTGkxRUVFdTJDTXZiVF9fc1MxX1MxX3UyQ00KLSBkZWNsYXJlIDwxIHgg aTE2PiBAbGx2bS5nZW54LnJkcmVnaW9uaS52MWkxNi52MWkxNi5pMTYoPDEgeCBpMTY+LCBpMzIs IGkzMiwgaTMyLCBpMTYsIGkzMikgIzIKLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zZGl2dTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMzIHsKLStkZWZpbmUg aW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9z U18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMzIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTE2Piwg YWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9j YSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xMDc0LDcgKzEwNzQsNyBAQCBkZWZpbmUgZHNvX2xv Y2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfc1NfKDwx IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2 dTJDTXZiMl9zU18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICM1IHsKLStkZWZpbmUgaW50ZXJuYWwg PDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMl9zU18oPDIgeCBp MTY+LCA8MiB4IGkxNj4pICM1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAot ICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkx Nj4sIGFsaWduIDQKLUBAIC0xMTQzLDcgKzExNDMsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBp MTY+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTJFRUV1MkNNdmJUX19zUzFfUzFfdTJD TQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiNF9z U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICM3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiNF9zU18oPDQgeCBpMTY+LCA8NCB4 IGkxNj4pICM3IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTQgPSBh bGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWdu IDgKLUBAIC0xMzUwLDcgKzEzNTAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTE2PiBAX1pO N2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxNkVFRXUyQ012YlRfX3NTMV9TMV91MgotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjMyX3NTXyg8MzIg eCBpMTY+LCA8MzIgeCBpMTY+KSAjMTMgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMTY+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfc1NfKDwzMiB4IGkxNj4sIDwzMiB4 IGkxNj4pICMxMyB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTQg PSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGkxNj4s IGFsaWduIDY0Ci1AQCAtMTQxOSw3ICsxNDE5LDcgQEAgZGVmaW5lIGludGVybmFsIDwzMiB4IGkx Nj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMzJFRUV1MkNNdmJUX19zUzFfUzFfdTIK LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIHNpZ25leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtc3MoaTE2IHNp Z25leHQsIGkxNiBzaWduZXh0KSAjMyB7Ci0rZGVmaW5lIGludGVybmFsIHNpZ25leHQgaTE2IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtc3MoaTE2IHNpZ25leHQsIGkxNiBzaWduZXh0KSAj MyB7Ci0gICAlMyA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIGkxNiwgYWxp Z24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMTQ0NSw3ICsxNDQ1 LDcgQEAgZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc3JlbXNzKGkxNiBzaWduZXh0LCBpMTYgc2kKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfc1NfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMyB7 Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjFfc1NfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSA8 MSB4IGkxNj4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAg JTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMTQ1OSw3ICsxNDU5LDcgQEAgZGVm aW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmIxX3NTXyg8MSB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUg bm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc3JlbXUyQ012YjJfc1NfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjNSB7Ci0rZGVmaW5l IGludGVybmFsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJf c1NfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjNSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkxNj4s IGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTUgPSBhbGxv Y2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci1AQCAtMTQ3Myw3ICsxNDczLDcgQEAgZGVmaW5lIGRzb19s b2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX3NTXyg8 MiB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQK LS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjRfc1NfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjNyB7Ci0rZGVmaW5lIGludGVybmFs IDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfc1NfKDw0IHgg aTE2PiwgPDQgeCBpMTY+KSAjNyB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgK LSAgICU0ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDQgeCBp MTY+LCBhbGlnbiA4Ci1AQCAtMTQ4Nyw3ICsxNDg3LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X3NTXyg8NCB4IGkxNj4s IDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIDw4IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012Yjhf c1NfKDw4IHggaTE2PiwgPDggeCBpMTY+KSAjOSB7Ci0rZGVmaW5lIGludGVybmFsIDw4IHggaTE2 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012Yjhfc1NfKDw4IHggaTE2PiwgPDgg eCBpMTY+KSAjOSB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci0gICAlNCA9 IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8OCB4IGkxNj4sIGFs aWduIDE2Ci1AQCAtMTUwMSw3ICsxNTAxLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X3NTXyg8OCB4IGkxNj4sIDwKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDwxNiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9zU18o PDE2IHggaTE2PiwgPDE2IHggaTE2PikgIzExIHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTE2 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X3NTXyg8MTYgeCBpMTY+LCA8 MTYgeCBpMTY+KSAjMTEgewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLSAg ICU0ID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8MTYgeCBp MTY+LCBhbGlnbiAzMgotQEAgLTE1MTUsNyArMTUxNSw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2 IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X3NTXyg8MTYgeCBp MTY+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZi MzJfc1NfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxMyB7Ci0rZGVmaW5lIGludGVybmFsIDwz MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9zU18oPDMyIHgg aTE2PiwgPDMyIHggaTE2PikgIzEzIHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWdu IDY0Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2Eg PDMyIHggaTE2PiwgYWxpZ24gNjQKLUBAIC0xNTI5LDcgKzE1MjksNyBAQCBkZWZpbmUgZHNvX2xv Y2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9zU18o PDMyIHggaTE2PgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2aWkoaTMy LCBpMzIpICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc2RpdmlpKGkzMiwgaTMyKSAjMTQgewotICAgJTMgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0g ICAlNCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxp Z24gNAotQEAgLTE3MzAsNyArMTczMCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9a TjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMUVFRXUyQ012YlRfX2lTMV9TMV91MkNNCi0gZGVj bGFyZSA8MSB4IGkzMj4gQGxsdm0uZ2VueC5yZHJlZ2lvbmkudjFpMzIudjFpMzIuaTE2KDwxIHgg aTMyPiwgaTMyLCBpMzIsIGkzMiwgaTE2LCBpMzIpICMyCi0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfaVNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQg ewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Nk aXZ1MkNNdmIxX2lTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLSAgICUzID0gYWxsb2Nh IDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0g ICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBAIC0xNzQ2LDcgKzE3NDYsNyBAQCBk ZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUy Q012YjFfaVNfKDwxIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zZGl2dTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0rZGVm aW5lIGludGVybmFsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012 YjJfaVNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBp MzI+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU1ID0g YWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotQEAgLTE5MzIsNyArMTkzMiw3IEBAIGRlZmluZSBp bnRlcm5hbCA8MiB4IGkzMj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMkVFRXUyQ012 YlRfX2lTMV9TMV91MkNNCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NkaXZ1MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLStkZWZpbmUgaW50 ZXJuYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiNF9pU18o PDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkzMj4sIGFs aWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9j YSA8NCB4IGkzMj4sIGFsaWduIDE2Ci1AQCAtMjQ5MCw3ICsyNDkwLDcgQEAgZGVmaW5lIGludGVy bmFsIDwxNiB4IGkzMj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMTZFRUV1MkNNdmJU X19pUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQK LS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Nk aXZ1MkNNdmIzMl9pU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLStkZWZpbmUgaW50 ZXJuYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjMyX2lT Xyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTMy PiwgYWxpZ24gMTI4Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU1 ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotQEAgLTI2NzYsNyArMjY3Niw3IEBAIGRl ZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTMy RUVFdTJDTXZiVF9faVMxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5l IG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW1paShpMzIsIGkzMikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtaWkoaTMyLCBpMzIpICMxNCB7Ci0gICAlMyA9IGFsbG9jYSBpMzIs IGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEg eCBpMzI+LCBhbGlnbiA0Ci1AQCAtMjcwMiw3ICsyNzAyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCBp MzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1paShpMzIsIGkzMikgIzE0IHsKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfaVNfKDwxIHgg aTMyPiwgPDEgeCBpMzI+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2lTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikg IzE0IHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2Eg PDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBA IC0yNzE2LDcgKzI3MTYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfaVNfKDwxIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8 MiB4IGkzMj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfaVNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewot ICAgJTMgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkz Mj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotQEAgLTI3MzAs NyArMjczMCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMy PikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtdTJDTXZiNF9pU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0gICAlMyA9 IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkzMj4sIGFs aWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci1AQCAtMjc0NCw3ICsy NzQ0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw4IHggaTMyPiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfaVNfKDw4IHggaTMyPiwgPDggeCBpMzI+KSAj MTcgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW11MkNNdmI4X2lTXyg8OCB4IGkzMj4sIDw4IHggaTMyPikgIzE3IHsKLSAgICUzID0gYWxs b2NhIDw4IHggaTMyPiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDw4IHggaTMyPiwgYWxpZ24g MzIKLSAgICU1ID0gYWxsb2NhIDw4IHggaTMyPiwgYWxpZ24gMzIKLUBAIC0yNzU4LDcgKzI3NTgs NyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c3JlbXUyQ012YjhfaVNfKDw4IHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X2lTXyg8MTYgeCBpMzI+LCA8MTYgeCBpMzI+KSAj MTggewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zcmVtdTJDTXZiMTZfaVNfKDwxNiB4IGkzMj4sIDwxNiB4IGkzMj4pICMxOCB7Ci0gICAlMyA9 IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotICAgJTQgPSBhbGxvY2EgPDE2IHggaTMyPiwg YWxpZ24gNjQKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWduIDY0Ci1AQCAtMjc3Miw3 ICsyNzcyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiMTZfaVNfKDwxNiB4IGkzMj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9pU18oPDMyIHggaTMyPiwgPDMyIHgg aTMyPikgIzE5IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjMyX2lTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewot ICAgJTMgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNCA9IGFsbG9jYSA8MzIg eCBpMzI+LCBhbGlnbiAxMjgKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAot QEAgLTI3ODYsNyArMjc4Niw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDMyIHggaTMyPiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2lTXyg8MzIgeCBpMzI+Ci0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB6ZXJv ZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2aGgoaTggemVyb2V4dCwgaTggemVy b2V4dCkgIzIxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpOCBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdWRpdmhoKGk4IHplcm9leHQsIGk4IHplcm9leHQpICMyMSB7Ci0gICAlMyA9IGFs bG9jYSBpOCwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0gYWxs b2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtMjg0NCw3ICsyODQ0LDcgQEAgZGVmaW5lIGludGVy bmFsIDwxIHggaTg+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxRUVFdTJDTXZiVF9f aFMxX1MxX3UyQ00KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQK LS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2 dTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMjEgewotK2RlZmluZSBpbnRlcm5hbCA8 MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfaFNfKDwxIHggaTg+ LCA8MSB4IGk4PikgIzIxIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAl NCA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFs aWduIDEKLUBAIC0yODYwLDcgKzI4NjAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxCi0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2Nh bCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfaFNfKDwyIHgg aTg+LCA8MiB4IGk4PikgIzIyIHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX2hTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMyMiB7 Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDIgeCBp OD4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi1AQCAtMjkwNiw3 ICsyOTA2LDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWk43ZGV0YWlsczE0X19pbXBs X3VkaXZyZW1JTGkyRUVFdTJDTXZiVF9faFMxX1MxX3UyQ00KLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0IHggaTg+KSAj MTQgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dWRpdnUyQ012YjRfaFNfKDw0IHggaTg+LCA8NCB4IGk4PikgIzE0IHsKLSAgICUzID0gYWxsb2Nh IDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAg JTUgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLUBAIC0zMDQ0LDcgKzMwNDQsNyBAQCBkZWZp bmUgaW50ZXJuYWwgPDE2IHggaTg+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxNkVF RXUyQ012YlRfX2hTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91ZGl2dTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTcgewotK2RlZmlu ZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIz Ml9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxNyB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBp OD4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNSA9 IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtMzA5MCw3ICszMDkwLDcgQEAgZGVmaW5l IGludGVybmFsIDwzMiB4IGk4PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMzJFRUV1 MkNNdmJUX19oUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91 bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHplcm9leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3VyZW1oaChpOCB6ZXJvZXh0LCBpOCB6ZXJvZXh0KSAjMjEgewotK2RlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtaGgoaTggemVyb2V4dCwg aTggemVyb2V4dCkgIzIxIHsKLSAgICUzID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNCA9IGFs bG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC0z MTE2LDcgKzMxMTYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIHplcm9leHQgaTggQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW1oaChpOCB6ZXJvZXh0LCBpOCB6ZXJvZQotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEgeCBp OD4pICMyMSB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91cmVtdTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMjEgewotICAgJTMgPSBh bGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAx Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTMxMzAsNyArMzEzMCw3IEBA IGRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91cmVtdTJDTXZiMl9oU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMjIgewotK2RlZmlu ZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJf aFNfKDwyIHggaTg+LCA8MiB4IGk4PikgIzIyIHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTg+LCBh bGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2Eg PDIgeCBpOD4sIGFsaWduIDIKLUBAIC0zMTQ0LDcgKzMxNDQsNyBAQCBkZWZpbmUgZHNvX2xvY2Fs IDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl9oU18oPDIgeCBp OD4sIDwyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012 YjRfaFNfKDw0IHggaTg+LCA8NCB4IGk4PikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBp OD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2hTXyg8NCB4IGk4PiwgPDQg eCBpOD4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTQgPSBh bGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0 Ci1AQCAtMzE1OCw3ICszMTU4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfaFNfKDw0IHggaTg+LCA8NAotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDgg eCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2hTXyg8OCB4IGk4Piwg PDggeCBpOD4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDw4IHggaTg+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91cmVtdTJDTXZiOF9oU18oPDggeCBpOD4sIDw4IHggaTg+KSAjMTUgewotICAg JTMgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDw4IHggaTg+LCBh bGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotQEAgLTMxNzIsNyArMzE3 Miw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDggeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VyZW11MkNNdmI4X2hTXyg8OCB4IGk4PiwgPDgKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGk4PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2hTXyg8MTYgeCBpOD4sIDwxNiB4IGk4PikgIzE2 IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMTZfaFNfKDwxNiB4IGk4PiwgPDE2IHggaTg+KSAjMTYgewotICAgJTMgPSBhbGxv Y2EgPDE2IHggaTg+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAx NgotICAgJTUgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAxNgotQEAgLTMxODYsNyArMzE4Niw3 IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMTZfaFNfKDwxNiB4IGk4PiwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9p bmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX2hTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzE3IHsK LStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTcgewotICAgJTMgPSBhbGxvY2Eg PDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgot ICAgJTUgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotQEAgLTMyMDAsNyArMzIwMCw3IEBA IGRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHplcm9leHQgaTE2IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91ZGl2dHQoaTE2IHplcm9leHQsIGkxNiB6ZXJvZXh0KSAjMjIgewotK2RlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnR0KGkx NiB6ZXJvZXh0LCBpMTYgemVyb2V4dCkgIzIyIHsKLSAgICUzID0gYWxsb2NhIGkxNiwgYWxpZ24g MgotICAgJTQgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4s IGFsaWduIDIKLUBAIC0zMjc4LDcgKzMyNzgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+ IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxRUVFdTJDTXZiVF9fdFMxX1MxX3UyQwot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV90U18o PDEgeCBpMTY+LCA8MSB4IGkxNj4pICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfdFNfKDwxIHggaTE2PiwgPDEgeCBp MTY+KSAjMjIgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNCA9IGFs bG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24g MgotQEAgLTMyOTQsNyArMzI5NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV90U18oPDEgeCBpMTY+LCA8Ci0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8 MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX3RTXyg8MiB4IGkx Nj4sIDwyIHggaTE2PikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMTY+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl90U18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICMx NCB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwy IHggaTE2PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci1AQCAt MzM2MCw3ICszMzYwLDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHggaTE2PiBAX1pON2RldGFpbHMx NF9faW1wbF91ZGl2cmVtSUxpMkVFRXUyQ012YlRfX3RTMV9TMV91MkMKLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTE2 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfdFNfKDw0IHggaTE2PiwgPDQg eCBpMTY+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VkaXZ1MkNNdmI0X3RTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzE1IHsKLSAg ICUzID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDQgeCBpMTY+ LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLUBAIC0zNTU4LDcg KzM1NTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTE2PiBAX1pON2RldGFpbHMxNF9faW1w bF91ZGl2cmVtSUxpMTZFRUV1MkNNdmJUX190UzFfUzFfdQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTE2PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjMyX3RTXyg8MzIgeCBpMTY+LCA8MzIgeCBp MTY+KSAjMTggewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91ZGl2dTJDTXZiMzJfdFNfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxOCB7Ci0g ICAlMyA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTQgPSBhbGxvY2EgPDMyIHgg aTE2PiwgYWxpZ24gNjQKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci1AQCAt MzYyNCw3ICszNjI0LDcgQEAgZGVmaW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9aTjdkZXRhaWxz MTRfX2ltcGxfdWRpdnJlbUlMaTMyRUVFdTJDTXZiVF9fdFMxX1MxX3UKLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHplcm9leHQg aTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdHQoaTE2IHplcm9leHQsIGkxNiB6ZXJv ZXh0KSAjMjIgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxNiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXR0KGkxNiB6ZXJvZXh0LCBpMTYgemVyb2V4dCkgIzIyIHsKLSAgICUzID0g YWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNSA9 IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0zNjUwLDcgKzM2NTAsNyBAQCBkZWZpbmUg ZHNvX2xvY2FsIHplcm9leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdHQoaTE2 IHplcm9leHQsIGkxNiB6ZQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiMV90U18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMyMiB7Ci0rZGVmaW5lIGlu dGVybmFsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfdFNf KDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMjIgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMTY+LCBh bGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2Nh IDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTM2NjQsNyArMzY2NCw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV90U18oPDEg eCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmIyX3RTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwg PDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl90U18oPDIgeCBp MTY+LCA8MiB4IGkxNj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQK LSAgICU0ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDIgeCBp MTY+LCBhbGlnbiA0Ci1AQCAtMzY3OCw3ICszNjc4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX3RTXyg8MiB4IGkxNj4s IDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRf dFNfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X3RTXyg8NCB4IGkxNj4sIDw0 IHggaTE2PikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTQg PSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkxNj4sIGFs aWduIDgKLUBAIC0zNjkyLDcgKzM2OTIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfdFNfKDw0IHggaTE2PiwgPAotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF90U18oPDgg eCBpMTY+LCA8OCB4IGkxNj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDw4IHggaTE2PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfdFNfKDw4IHggaTE2PiwgPDggeCBpMTY+ KSAjMTYgewotICAgJTMgPSBhbGxvY2EgPDggeCBpMTY+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxv Y2EgPDggeCBpMTY+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDggeCBpMTY+LCBhbGlnbiAx NgotQEAgLTM3MDYsNyArMzcwNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDggeCBpMTY+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF90U18oPDggeCBpMTY+LCA8Ci0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8 MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfdFNfKDwxNiB4 IGkxNj4sIDwxNiB4IGkxNj4pICMxNyB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGkxNj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl90U18oPDE2IHggaTE2PiwgPDE2IHgg aTE2PikgIzE3IHsKLSAgICUzID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi0gICAlNCA9 IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDE2IHggaTE2Piwg YWxpZ24gMzIKLUBAIC0zNzIwLDcgKzM3MjAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl90U18oPDE2IHggaTE2Pgot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX3RT Xyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTggewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBp MTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfdFNfKDwzMiB4IGkxNj4s IDwzMiB4IGkxNj4pICMxOCB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAot ICAgJTQgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU1ID0gYWxsb2NhIDwzMiB4 IGkxNj4sIGFsaWduIDY0Ci1AQCAtMzczNCw3ICszNzM0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8 MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfdFNfKDwzMiB4 IGkxNj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdmpqKGkzMiwgaTMy KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vk aXZqaihpMzIsIGkzMikgIzE0IHsKLSAgICUzID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTQg PSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQK LUBAIC0zODkyLDcgKzM4OTIsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWk43ZGV0 YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxRUVFdTJDTXZiVF9falMxX1MxX3UyQwotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9qU18oPDEgeCBpMzI+ LCA8MSB4IGkzMj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfalNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQg ewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MSB4 IGkzMj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTM5 MDgsNyArMzkwOCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX2pTXyg8MiB4IGkzMj4sIDwyIHgg aTMyPikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91ZGl2dTJDTXZiMl9qU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0gICAl MyA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDwyIHggaTMyPiwg YWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci1AQCAtNDA1NCw3ICs0 MDU0LDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHggaTMyPiBAX1pON2RldGFpbHMxNF9faW1wbF91 ZGl2cmVtSUxpMkVFRXUyQ012YlRfX2pTMV9TMV91MkMKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfalNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAj MTYgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VkaXZ1MkNNdmI0X2pTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLSAgICUzID0gYWxs b2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24g MTYKLSAgICU1ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLUBAIC00NDkyLDcgKzQ0OTIs NyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTMyPiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2 cmVtSUxpMTZFRUV1MkNNdmJUX19qUzFfUzFfdQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjMyX2pTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAj MTkgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91ZGl2dTJDTXZiMzJfalNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9 IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4s IGFsaWduIDEyOAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci1AQCAtNDYz OCw3ICs0NjM4LDcgQEAgZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aTjdkZXRhaWxzMTRf X2ltcGxfdWRpdnJlbUlMaTMyRUVFdTJDTXZiVF9falMxX1MxX3UKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbWpqKGkzMiwgaTMyKSAjMTQgewotK2RlZmluZSBpbnRlcm5h bCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1qaihpMzIsIGkzMikgIzE0IHsKLSAg ICUzID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0g ICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBAIC00NjY0LDcgKzQ2NjQsNyBAQCBk ZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWpqKGkzMiwg aTMyKSAjMTQgewotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFs IDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfalNfKDwxIHgg aTMyPiwgPDEgeCBpMzI+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0 Ci0gICAlNCA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHgg aTMyPiwgYWxpZ24gNAotQEAgLTQ2NzgsNyArNDY3OCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV9qU18oPDEgeCBpMzI+ LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIy X2pTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl9qU18oPDIgeCBpMzI+LCA8 MiB4IGkzMj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0 ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBh bGlnbiA4Ci1AQCAtNDY5Miw3ICs0NjkyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2pTXyg8MiB4IGkzMj4sIDwKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfalNfKDw0 IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2pTXyg8NCB4IGkzMj4sIDw0IHggaTMy PikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU0ID0gYWxs b2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24g MTYKLUBAIC00NzA2LDcgKzQ3MDYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfalNfKDw0IHggaTMyPiwgPAotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF9qU18oPDggeCBp MzI+LCA8OCB4IGkzMj4pICMxNyB7Ci0rZGVmaW5lIGludGVybmFsIDw4IHggaTMyPiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfalNfKDw4IHggaTMyPiwgPDggeCBpMzI+KSAj MTcgewotICAgJTMgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2Eg PDggeCBpMzI+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgot QEAgLTQ3MjAsNyArNDcyMCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDggeCBpMzI+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF9qU18oPDggeCBpMzI+LCA8Ci0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MTYg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfalNfKDwxNiB4IGkz Mj4sIDwxNiB4IGkzMj4pICMxOCB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9qU18oPDE2IHggaTMyPiwgPDE2IHggaTMy PikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWduIDY0Ci0gICAlNCA9IGFs bG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxp Z24gNjQKLUBAIC00NzM0LDcgKzQ3MzQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9qU18oPDE2IHggaTMyPgotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX2pTXyg8 MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfalNfKDwzMiB4IGkzMj4sIDwz MiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAg ICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTUgPSBhbGxvY2EgPDMyIHgg aTMyPiwgYWxpZ24gMTI4Ci1AQCAtNDc0OCw3ICs0NzQ4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8 MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfalNfKDwzMiB4 IGkzMj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIHZvaWQgQF9fZG9fcHJpbnRfY20oaTgqLCBpOCosIGkzMiwgaTY0LCBpMzIq LCBpMzIsIGkzMikgIzIzICFkYmcgITE1IHsKLStkZWZpbmUgaW50ZXJuYWwgdm9pZCBAX19kb19w cmludF9jbShpOCosIGk4KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwgaTMyKSAjMjMgIWRiZyAhMTUg ewotICAgJTggPSBhbGxvY2EgaTgqLCBhbGlnbiA0Ci0gICAlOSA9IGFsbG9jYSBpOCosIGFsaWdu IDQKLSAgICUxMCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLUBAIC00OTg4LDcgKzQ5ODgsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgdm9pZCBAX1pON2RldGFpbHMxNl9jbV9wcmludF9mb3JtYXRJTGkxMjhF RUV2MTVjbV9zdXJmYWNlaW5kZXhqdQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgdm9pZCBAX19kb19wcmludF9seihpMzIsIGk4 KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwgaTMyLCBpMzIsIGkzMikgIzI2ICFkYmcgITExNyB7Ci0r ZGVmaW5lIGludGVybmFsIHZvaWQgQF9fZG9fcHJpbnRfbHooaTMyLCBpOCosIGkzMiwgaTY0LCBp MzIqLCBpMzIsIGkzMiwgaTMyLCBpMzIpICMyNiAhZGJnICExMTcgewotICAgJTEwID0gYWxsb2Nh IGkzMiwgYWxpZ24gNAotICAgJTExID0gYWxsb2NhIGk4KiwgYWxpZ24gNAotICAgJTEyID0gYWxs b2NhIGkzMiwgYWxpZ24gNAotQEAgLTUwNjksNyArNTA2OSw3IEBAIGRlZmluZSBkc29fbG9jYWwg dm9pZCBAX19kb19wcmludF9seihpMzIsIGk4KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwgaTMyLCBp MzIsIGkzCi0gICAlNjcgPSBsb2FkIGk2NCwgaTY0KiAlMTMsIGFsaWduIDgsICFkYmcgITE1OSwg IXRiYWEgITE5Ci0gICAlNjggPSBsb2FkIDw1IHggaTMyPiwgPDUgeCBpMzI+KiAlMjEsIGFsaWdu IDMyLCAhZGJnICExNjAsICF0YmFhICE3Ci0gICBjYWxsIHZvaWQgQF9aTjEzVmFyeWluZ1dyaXRl ckMyRVJqUlBLaml5dTJDTXZiNV9pKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMjMsIGkzMiogZGVy ZWZlcmVuY2VhYmxlKDQpICUxOSwgaTMyKiogZGVyZWZlcmVuY2VhYmxlKDQpICUxNCwgaTMyICU2 NiwgaTY0ICU2NywgPDUgeCBpMzI+ICU2OCksICFkYmcgITE2MQotLSAgJTY5ID0gY2FsbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1Zh cnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNjIsICVjbGFzcy5V bmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMjIsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBi eXZhbCBhbGlnbiAzMiAlMjMpLCAhZGJnICExNjIKLSsgICU2OSA9IGNhbGwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5aW5nV3Jp dGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQgJTYyLCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICUyMiwgJWNsYXNzLlZh cnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlMjMpLCAh ZGJnICExNjIKLSAgIGJyIGxhYmVsICU3MCwgIWRiZyAhMTYzCi0gCi0gOyA8bGFiZWw+OjcwOiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTYwCi1AQCAtNTE4 Nyw3ICs1MTg3LDcgQEAgZGVmaW5lIGludGVybmFsIDw1IHggaTMyPiBAX1oxN2dldF9hdXhpbGlh cnlfc3RydigpICMyOCBjb21kYXQgIWRiZyAhMTc4IHsKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNW YXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFs aWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE5MSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm8xNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcjEzVmFyeWlu Z1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyKSAjMjUgY29tZGF0 ICFkYmcgITE5MSB7Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2Eg JWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAlNiA9IGFsbG9jYSAlY2xhc3MuVmFy eWluZ1dyaXRlciwgYWxpZ24gMzIKLUBAIC01MTk2LDcgKzUxOTYsNyBAQCBkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3Jp dGVyMTNWYXJ5aQotICAgJTggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlNSB0byBp OCosICFkYmcgITE5NgotICAgJTkgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0 byBpOCosICFkYmcgITE5NgotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMy KGk4KiBhbGlnbiAzMiAlOCwgaTgqIGFsaWduIDMyICU5LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRi ZyAhMTk2LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTEwID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlckVFYk5TXzhF bmNvZGluZ0VUXyhpOCBzaWduZXh0ICU3LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxp Z24gMzIgJTUpLCAhZGJnICExOTgKLSsgICUxMCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkxM1VuaWZvcm1Xcml0ZXJFRWJOU184RW5jb2Rp bmdFVF8oaTggc2lnbmV4dCAlNywgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5V bmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNSksICFkYmcgITE5OAotICAgYnIgaTEgJTEwLCBsYWJl bCAlMTYsIGxhYmVsICUxMSwgIWRiZyAhMTk5Ci0gCi0gOyA8bGFiZWw+OjExOiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTMKLUBAIC01MjA0LDcgKzUyMDQs NyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5j b2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5aQotICAgJTEzID0gYml0Y2FzdCAlY2xhc3MuVmFy eWluZ1dyaXRlciogJTYgdG8gaTgqLCAhZGJnICEyMDEKLSAgICUxNCA9IGJpdGNhc3QgJWNsYXNz LlZhcnlpbmdXcml0ZXIqICUyIHRvIGk4KiwgIWRiZyAhMjAxCi0gICBjYWxsIHZvaWQgQGxsdm0u bWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICUxMywgaTgqIGFsaWduIDMyICUxNCwg aTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITIwMSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICUxNSA9 IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VmFyeWluZ0kx M1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCAlMTIsICVjbGFzcy5W YXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNiksICFkYmcgITIwMgotKyAgJTE1ID0gY2Fs bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5aW5nSTEzVmFy eWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICUxMiwgJWNsYXNzLlZhcnlp bmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlNiksICFkYmcg ITIwMgotICAgYnIgbGFiZWwgJTE2LCAhZGJnICExOTkKLSAKLSA7IDxsYWJlbD46MTY6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMTEsICUzCi1AQCAtNTI3 OSw3ICs1Mjc5LDcgQEAgZGVmaW5lIGludGVybmFsIHZvaWQgQF9aTjEzVmFyeWluZ1dyaXRlckMy RVJqUlBLaml5dTJDTXZiNV9pKCVjbGFzcy5WYXJ5aW5nV3JpdGUKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBAX19udW1f Y29yZXMoKSAjMjkgIWRiZyAhMjM2IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfX251bV9jb3Jl cygpICMyOSAhZGJnICEyMzYgewotICAgcmV0IGkzMiAtMSwgIWRiZyAhMjM3Ci0gfQotIAotQEAg LTg4NjAsNyArODg2MCw3IEBAIGRlY2xhcmUgZHNvX2xvY2FsIHZvaWQgQF9aTjdkZXRhaWxzMzdf X2NtX2ludHJpbnNpY19pbXBsX3N2bV9zY2F0dGVyX3dyaXRlSWlMaTFFCi0gZGVjbGFyZSB2b2lk IEBsbHZtLmdlbnguc3ZtLnNjYXR0ZXIudjFpMS52MWk2NC52MWkzMig8MSB4IGkxPiwgaTMyLCA8 MSB4IGk2ND4sIDwxIHggaTMyPikgIzI3Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5s aW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkxM1VuaWZvcm1Xcml0ZXJFRWJOU184 RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWdu IDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NDUgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlckVF Yk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwo JWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NDUgewot ICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhICVjbGFzcy5Vbmlmb3Jt V3JpdGVyLCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRVbmlmb3JtIiwgYWxpZ24gMQotQEAgLTg4NjksNyArODg2OSw3IEBAIGRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEz VW5pZm9ybVdyaXRlCi0gICAlNyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICU0IHRv IGk4KiwgIWRiZyAhMTY0NwotICAgJTggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAl MSB0byBpOCosICFkYmcgITE2NDcKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4 LmkzMihpOCogYWxpZ24gMzIgJTcsIGk4KiBhbGlnbiAzMiAlOCwgaTMyIDY0LCBpMSBmYWxzZSks ICFkYmcgITE2NDcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlOSA9IGNhbGwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlck5TXzE2 RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNs YXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU0LCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICU1KSwgIWRiZyAhMTY0OAotKyAgJTkg PSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kx M1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVRfVDBf KGk4IHNpZ25leHQgJTYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9y bVdyaXRlcikgYWxpZ24gMzIgJTQsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9y bSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEg JTUpLCAhZGJnICExNjQ4Ci0gICByZXQgaTEgJTksICFkYmcgITE2NDkKLSB9Ci0gCi1AQCAtODg3 Nyw3ICs4ODc3LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8y MnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3JpdGUKLSBkZWNsYXJlIHZvaWQgQGxs dm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIG5vY2FwdHVyZSB3cml0ZW9ubHksIGk4KiBub2Nh cHR1cmUgcmVhZG9ubHksIGkzMiwgaTEpICMzMgotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5 c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFZhcnlpbmdJMTNWYXJ5aW5nV3JpdGVyRUVi TlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBh bGlnbiAzMikgIzI1IGNvbWRhdCAhZGJnICExNjUwIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VmFyeWluZ0kxM1ZhcnlpbmdXcml0 ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5 dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMikgIzI1IGNvbWRhdCAhZGJnICExNjUw IHsKLSAgICUzID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSAlY2xhc3MuVmFy eWluZ1dyaXRlciwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIsIGFsaWduIDEKLUBAIC04ODg2LDEyICs4ODg2LDEyIEBAIGRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5 aW5nSTEzVmFyeWluZ1dyaXRlCi0gICAlNyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIq ICU0IHRvIGk4KiwgIWRiZyAhMTY1MgotICAgJTggPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiAlMSB0byBpOCosICFkYmcgITE2NTIKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBp OC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTcsIGk4KiBhbGlnbiAzMiAlOCwgaTMyIDY0LCBpMSBm YWxzZSksICFkYmcgITE2NTIsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlOSA9IGNhbGwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRl ck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAl NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU0LCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICU1KSwgIWRiZyAhMTY1Mwot KyAgJTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNv ZGluZ0kxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5n RVRfVDBfKGk4IHNpZ25leHQgJTYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3Mu VmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTQsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFs aWduIDEgJTUpLCAhZGJnICExNjUzCi0gICByZXQgaTEgJTksICFkYmcgITE2NTQKLSB9Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29k aW5nSTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdF VF9UMF8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUg Y29tZGF0ICFkYmcgITE2NTUgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGlu ZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9y bVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2NTUgewotICAgJTQg PSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhICVjbGFzcy5Vbmlmb3JtV3JpdGVy LCBhbGlnbiAzMgotICAgJTYgPSBhbGxvY2EgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRV bmlmb3JtIiwgYWxpZ24gMQotQEAgLTg5MTQsNyArODkxNCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3Jt V3JpdGVyCi0gICAlMjIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlNSB0byBpOCos ICFkYmcgITE2NTcKLSAgICUyMyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRv IGk4KiwgIWRiZyAhMTY1NwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMy KGk4KiBhbGlnbiAzMiAlMjIsIGk4KiBhbGlnbiAzMiAlMjMsIGkzMiA2NCwgaTEgZmFsc2UpLCAh ZGJnICExNjU3LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTI0ID0gY2FsbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1VuaWZvcm1Xcml0 ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 ICUyMSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU1LCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICU2KSwgIWRiZyAhMTY1 OAotKyAgJTI0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSWIxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyMSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq IGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNSwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRVbmlmb3JtIikgYWxpZ24gMSAlNiksICFkYmcgITE2NTgKLSAgIGJyIGkxICUyNCwgbGFiZWwg JTYwLCBsYWJlbCAlMjUsICFkYmcgITE2NTkKLSAKLSA7IDxsYWJlbD46MjU6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMwotQEAgLTg5MjIsNyArODkyMiw3 IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dp dGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlMjcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiAlNyB0byBpOCosICFkYmcgITE2NjEKLSAgICUyOCA9IGJpdGNhc3QgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY2MQotICAgY2FsbCB2b2lkIEBsbHZt Lm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlMjcsIGk4KiBhbGlnbiAzMiAlMjgs IGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICExNjYxLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTI5 ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFs aWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBh bGlnbiAxICU4KSwgIWRiZyAhMTY2MgotKyAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1VuaWZvcm1Xcml0ZXJOU18x NkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAz MiAlNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlOCksICFkYmcgITE2NjIK LSAgIGJyIGkxICUyOSwgbGFiZWwgJTYwLCBsYWJlbCAlMzAsICFkYmcgITE2NjMKLSAKLSA7IDxs YWJlbD46MzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAl MjUKLUBAIC04OTMwLDcgKzg5MzAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTMy ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTkgdG8gaTgqLCAhZGJnICExNjY1Ci0g ICAlMzMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2 NjUKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIg JTMyLCBpOCogYWxpZ24gMzIgJTMzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY2NSwgIXRi YWEuc3RydWN0ICExOTcKLS0gICUzNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGlu ZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5V bmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSAlMTApLCAhZGJnICExNjY2Ci0rICAlMzQgPSBj YWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJajEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQgJTMxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNz LlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBh bGlnbiAxICUxMCksICFkYmcgITE2NjYKLSAgIGJyIGkxICUzNCwgbGFiZWwgJTYwLCBsYWJlbCAl MzUsICFkYmcgITE2NjcKLSAKLSA7IDxsYWJlbD46MzU6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsgcHJlZHMgPSAlMzAKLUBAIC04OTM4LDcgKzg5MzgsNyBAQCBkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5n STEzVW5pZm9ybVdyaXRlcgotICAgJTM3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciog JTExIHRvIGk4KiwgIWRiZyAhMTY2OQotICAgJTM4ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdy aXRlciogJTEgdG8gaTgqLCAhZGJnICExNjY5Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAw aTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICUzNywgaTgqIGFsaWduIDMyICUzOCwgaTMyIDY0LCBp MSBmYWxzZSksICFkYmcgITE2NjksICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMzkgPSBjYWxsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEz VW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFf KGk4IHNpZ25leHQgJTM2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTEx LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUx MiksICFkYmcgITE2NzAKLSsgICUzOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGlu ZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzYsICVjbGFzcy5V bmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTExLCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICUxMiksICFkYmcgITE2NzAKLSAgIGJy IGkxICUzOSwgbGFiZWwgJTYwLCBsYWJlbCAlNDAsICFkYmcgITE2NzEKLSAKLSA7IDxsYWJlbD46 NDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMzUKLUBA IC04OTQ2LDcgKzg5NDYsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTQyID0gYml0 Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEzIHRvIGk4KiwgIWRiZyAhMTY3MwotICAgJTQz ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjczCi0g ICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICU0Miwg aTgqIGFsaWduIDMyICU0MywgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITE2NzMsICF0YmFhLnN0 cnVjdCAhMTk3Ci0tICAlNDQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5p Zm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTQxLCAlY2xhc3MuVW5pZm9y bVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxNCksICFkYmcgITE2NzQKLSsgICU0NCA9IGNhbGwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4 MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5p Zm9ybVdyaXRlcikgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGln biAxICUxNCksICFkYmcgITE2NzQKLSAgIGJyIGkxICU0NCwgbGFiZWwgJTYwLCBsYWJlbCAlNDUs ICFkYmcgITE2NzUKLSAKLSA7IDxsYWJlbD46NDU6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsgcHJlZHMgPSAlNDAKLUBAIC04OTU0LDcgKzg5NTQsNyBAQCBkZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEz VW5pZm9ybVdyaXRlcgotICAgJTQ3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTE1 IHRvIGk4KiwgIWRiZyAhMTY3NwotICAgJTQ4ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRl ciogJTEgdG8gaTgqLCAhZGJnICExNjc3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgu cDBpOC5pMzIoaTgqIGFsaWduIDMyICU0NywgaTgqIGFsaWduIDMyICU0OCwgaTMyIDY0LCBpMSBm YWxzZSksICFkYmcgITE2NzcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNDkgPSBjYWxsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVW5p Zm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQgJTQ2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTE1LCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxNiks ICFkYmcgITE2NzgKLSsgICU0OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRV bmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTE1LCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICUxNiksICFkYmcgITE2NzgKLSAgIGJyIGkx ICU0OSwgbGFiZWwgJTYwLCBsYWJlbCAlNTAsICFkYmcgITE2NzkKLSAKLSA7IDxsYWJlbD46NTA6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNDUKLUBAIC04 OTYyLDcgKzg5NjIsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTUyID0gYml0Y2Fz dCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTE3IHRvIGk4KiwgIWRiZyAhMTY4MQotICAgJTUzID0g Yml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjgxCi0gICBj YWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICU1MiwgaTgq IGFsaWduIDMyICU1MywgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITE2ODEsICF0YmFhLnN0cnVj dCAhMTk3Ci0tICAlNTQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9y bUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTUxLCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCBhbGlnbiAxICUxOCksICFkYmcgITE2ODIKLSsgICU1NCA9IGNhbGwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNV bmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8o aTggc2lnbmV4dCAlNTEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9y bVdyaXRlcikgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAx ICUxOCksICFkYmcgITE2ODIKLSAgIGJyIGkxICU1NCwgbGFiZWwgJTYwLCBsYWJlbCAlNTUsICFk YmcgITE2ODMKLSAKLSA7IDxsYWJlbD46NTU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsgcHJlZHMgPSAlNTAKLUBAIC04OTcwLDcgKzg5NzAsNyBAQCBkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5p Zm9ybVdyaXRlcgotICAgJTU3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTE5IHRv IGk4KiwgIWRiZyAhMTY4NQotICAgJTU4ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciog JTEgdG8gaTgqLCAhZGJnICExNjg1Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBp OC5pMzIoaTgqIGFsaWduIDMyICU1NywgaTgqIGFsaWduIDMyICU1OCwgaTMyIDY0LCBpMSBmYWxz ZSksICFkYmcgITE2ODUsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNTkgPSBjYWxsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1VuaWZv cm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBz aWduZXh0ICU1NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUxOSwgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSAlMjApLCAh ZGJnICExNjg2Ci0rICAlNTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVu aWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1NiwgJWNsYXNzLlVuaWZv cm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTksICUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTIwKSwgIWRiZyAhMTY4NgotICAgYnIgbGFi ZWwgJTYwLCAhZGJnICExNjgzCi0gCi0gOyA8bGFiZWw+OjYwOiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTU1LCAlNTAsICU0NSwgJTQwLCAlMzUsICUzMCwg JTI1LCAlMwotQEAgLTg5NzksNyArODk3OSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5k Ci0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBi eXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2 YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNjg4IHsKLStkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNV bmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8o aTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3Jp dGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2 YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNv bWRhdCAhZGJnICExNjg4IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFs bG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEg ITE5MwotQEAgLTkwMDUsNyArOTAwNSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1VuaWZvCi0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0t ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZh bCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwg YWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNjk3IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNVbmlm b3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTgg c2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVy KSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwo JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRh dCAhZGJnICExNjk3IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9j YSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5 MwotQEAgLTkwMzEsNyArOTAzMSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1VuaWZvCi0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJajEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBh bGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxp Z24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzA2IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3Jt V3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBh bGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAh ZGJnICExNzA2IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBp OCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5Mwot QEAgLTkwNTcsNyArOTA1Nyw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1VuaWZvCi0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJZjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5j b2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGln biAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24g MSkgIzI1IGNvbWRhdCAhZGJnICExNzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3Jp dGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGln biAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJn ICExNzE1IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwg YWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAg LTkwODMsNyArOTA4Myw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1VuaWZvCi0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJeDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2Rp bmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAz MiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkg IzI1IGNvbWRhdCAhZGJnICExNzI0IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVy TlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAz MiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3Qu UHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEx NzI0IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxp Z24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkx MDksNyArOTEwOSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJeTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1 IGNvbWRhdCAhZGJnICExNzMzIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNf MTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNs YXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzMz IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24g MQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkxMzUs NyArOTEzNSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ ZDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBf VDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNv bWRhdCAhZGJnICExNzQyIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZF bmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzQyIHsK LSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQot ICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkxNjEsNyAr OTE2MSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYx M1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21k YXQgIWRiZyAhMTc1MSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1VuaWZvcm1Xcml0ZXJOU18xNkVu Y29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3NTEgewot ICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0g ICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTk4NCw3ICs5 OTg0LDcgQEAgZGVmaW5lIGludGVybmFsIGkzMiBAX1pON2RldGFpbHMxOF9jbV9wcmludF90eXBl X29jbElQdkVFTlNfMThTSEFERVJfUFJJTlRGX1RZUEUKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dy aXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4 dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIw NTUgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0 c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5T XzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwo JWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIwNTUgewotICAgJTQgPSBhbGxvY2EgaTgsIGFs aWduIDEKLSAgICU1ID0gYWxsb2NhICVjbGFzcy5WYXJ5aW5nV3JpdGVyLCBhbGlnbiAzMgotICAg JTYgPSBhbGxvY2EgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiwgYWxpZ24g MQotQEAgLTEwMDA3LDcgKzEwMDA3LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICUy MiA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICU1IHRvIGk4KiwgIWRiZyAhMjA1Nwot ICAgJTIzID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEy MDU3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMy ICUyMiwgaTgqIGFsaWduIDMyICUyMywgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITIwNTcsICF0 YmFhLnN0cnVjdCAhMTk3Ci0tICAlMjQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rp bmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTIxLCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTUsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTYpLCAhZGJnICEyMDU4Ci0rICAlMjQgPSBj YWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJYjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQgJTIxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNz LlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICU1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBh bGlnbiAxICU2KSwgIWRiZyAhMjA1OAotICAgYnIgaTEgJTI0LCBsYWJlbCAlNjAsIGxhYmVsICUy NSwgIWRiZyAhMjA1OQotIAotIDsgPGxhYmVsPjoyNTogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOyBwcmVkcyA9ICUzCi1AQCAtMTAwMTUsNyArMTAwMTUsNyBAQCBkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5n STEzVmFyeWluZ1dyaXRlcgotICAgJTI3ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciog JTcgdG8gaTgqLCAhZGJnICEyMDYxCi0gICAlMjggPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiAlMSB0byBpOCosICFkYmcgITIwNjEKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBp OC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTI3LCBpOCogYWxpZ24gMzIgJTI4LCBpMzIgNjQsIGkx IGZhbHNlKSwgIWRiZyAhMjA2MSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICUyOSA9IGNhbGwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNW YXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8o aTggc2lnbmV4dCAlMjYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNywg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlOCks ICFkYmcgITIwNjIKLSsgICUyOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRW YXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMjYsICVjbGFzcy5WYXJ5 aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTcsICUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTgpLCAhZGJnICEyMDYyCi0gICBiciBpMSAl MjksIGxhYmVsICU2MCwgbGFiZWwgJTMwLCAhZGJnICEyMDYzCi0gCi0gOyA8bGFiZWw+OjMwOiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTI1Ci1AQCAtMTAw MjMsNyArMTAwMjMsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTMyID0gYml0Y2Fz dCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTkgdG8gaTgqLCAhZGJnICEyMDY1Ci0gICAlMzMgPSBi aXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwNjUKLSAgIGNh bGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTMyLCBpOCog YWxpZ24gMzIgJTMzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA2NSwgIXRiYWEuc3RydWN0 ICExOTcKLS0gICUzNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5n RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiBieXZhbCBhbGlnbiAzMiAlOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5 aW5nIiogYnl2YWwgYWxpZ24gMSAlMTApLCAhZGJnICEyMDY2Ci0rICAlMzQgPSBjYWxsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVmFy eWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQgJTMxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdX cml0ZXIpIGFsaWduIDMyICU5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICUx MCksICFkYmcgITIwNjYKLSAgIGJyIGkxICUzNCwgbGFiZWwgJTYwLCBsYWJlbCAlMzUsICFkYmcg ITIwNjcKLSAKLSA7IDxsYWJlbD46MzU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsgcHJlZHMgPSAlMzAKLUBAIC0xMDAzMSw3ICsxMDAzMSw3IEBAIGRlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5 aW5nV3JpdGVyCi0gICAlMzcgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMTEgdG8g aTgqLCAhZGJnICEyMDY5Ci0gICAlMzggPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAl MSB0byBpOCosICFkYmcgITIwNjkKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4 LmkzMihpOCogYWxpZ24gMzIgJTM3LCBpOCogYWxpZ24gMzIgJTM4LCBpMzIgNjQsIGkxIGZhbHNl KSwgIWRiZyAhMjA2OSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICUzOSA9IGNhbGwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNWYXJ5aW5n V3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCAlMzYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTEsICUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTEyKSwgIWRi ZyAhMjA3MAotKyAgJTM5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIx YXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlp bmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzNiwgJWNsYXNzLlZhcnlpbmdX cml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlMTEsICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTEyKSwgIWRiZyAhMjA3MAotICAgYnIgaTEgJTM5 LCBsYWJlbCAlNjAsIGxhYmVsICU0MCwgIWRiZyAhMjA3MQotIAotIDsgPGxhYmVsPjo0MDogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzNQotQEAgLTEwMDM5 LDcgKzEwMDM5LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICU0MiA9IGJpdGNhc3Qg JWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxMyB0byBpOCosICFkYmcgITIwNzMKLSAgICU0MyA9IGJp dGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA3MwotICAgY2Fs bCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlNDIsIGk4KiBh bGlnbiAzMiAlNDMsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDczLCAhdGJhYS5zdHJ1Y3Qg ITE5NwotLSAgJTQ0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSXgxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdF RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0MSwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsIGFsaWduIDMyICUxMywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5 aW5nIiogYnl2YWwgYWxpZ24gMSAlMTQpLCAhZGJnICEyMDc0Ci0rICAlNDQgPSBjYWxsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVmFy eWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQgJTQxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdX cml0ZXIpIGFsaWduIDMyICUxMywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAl MTQpLCAhZGJnICEyMDc0Ci0gICBiciBpMSAlNDQsIGxhYmVsICU2MCwgbGFiZWwgJTQ1LCAhZGJn ICEyMDc1Ci0gCi0gOyA8bGFiZWw+OjQ1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7IHByZWRzID0gJTQwCi1AQCAtMTAwNDcsNyArMTAwNDcsNyBAQCBkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFy eWluZ1dyaXRlcgotICAgJTQ3ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTE1IHRv IGk4KiwgIWRiZyAhMjA3NwotICAgJTQ4ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciog JTEgdG8gaTgqLCAhZGJnICEyMDc3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBp OC5pMzIoaTgqIGFsaWduIDMyICU0NywgaTgqIGFsaWduIDMyICU0OCwgaTMyIDY0LCBpMSBmYWxz ZSksICFkYmcgITIwNzcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNDkgPSBjYWxsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFyeWlu Z1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNp Z25leHQgJTQ2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTE1LCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxNiksICFk YmcgITIwNzgKLSsgICU0OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5 aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTE1LCAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICUxNiksICFkYmcgITIwNzgKLSAgIGJyIGkxICU0 OSwgbGFiZWwgJTYwLCBsYWJlbCAlNTAsICFkYmcgITIwNzkKLSAKLSA7IDxsYWJlbD46NTA6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNDUKLUBAIC0xMDA1 NSw3ICsxMDA1NSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlNTIgPSBiaXRjYXN0 ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMTcgdG8gaTgqLCAhZGJnICEyMDgxCi0gICAlNTMgPSBi aXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwODEKLSAgIGNh bGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTUyLCBpOCog YWxpZ24gMzIgJTUzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA4MSwgIXRiYWEuc3RydWN0 ICExOTcKLS0gICU1NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5n RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNTEsICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiBieXZhbCBhbGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIqIGJ5dmFsIGFsaWduIDEgJTE4KSwgIWRiZyAhMjA4MgotKyAgJTU0ID0gY2FsbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1Zh cnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhp OCBzaWduZXh0ICU1MSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5n V3JpdGVyKSBhbGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEg JTE4KSwgIWRiZyAhMjA4MgotICAgYnIgaTEgJTU0LCBsYWJlbCAlNjAsIGxhYmVsICU1NSwgIWRi ZyAhMjA4MwotIAotIDsgPGxhYmVsPjo1NTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOyBwcmVkcyA9ICU1MAotQEAgLTEwMDYzLDcgKzEwMDYzLDcgQEAgZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1Zh cnlpbmdXcml0ZXIKLSAgICU1NyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxOSB0 byBpOCosICFkYmcgITIwODUKLSAgICU1OCA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIq ICUxIHRvIGk4KiwgIWRiZyAhMjA4NQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAw aTguaTMyKGk4KiBhbGlnbiAzMiAlNTcsIGk4KiBhbGlnbiAzMiAlNTgsIGkzMiA2NCwgaTEgZmFs c2UpLCAhZGJnICEyMDg1LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTU5ID0gY2FsbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSVB2MTNWYXJ5 aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTgg c2lnbmV4dCAlNTYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTksICUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTIwKSwg IWRiZyAhMjA4NgotKyAgJTU5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDIxYXBwbHlJZlByb3BlckVuY29kaW5nSVB2MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRW YXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNTYsICVjbGFzcy5WYXJ5 aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTE5LCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICUyMCksICFkYmcgITIwODYKLSAgIGJyIGxh YmVsICU2MCwgIWRiZyAhMjA4MwotIAotIDsgPGxhYmVsPjo2MDogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU1NSwgJTUwLCAlNDUsICU0MCwgJTM1LCAlMzAs ICUyNSwgJTMKLUBAIC0xMDA3Miw3ICsxMDA3Miw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVy Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53 aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWlu Z0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVy KiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiog Ynl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMDg4IHsKLStkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0li MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5n V3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiog Ynl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1 IGNvbWRhdCAhZGJnICEyMDg4IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9 IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRi YWEgITE5MwotQEAgLTEwMDk4LDcgKzEwMDk4LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVmFyeWkK LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndp bmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5n RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIq IGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBi eXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIwOTcgewotK2RlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkx M1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdX cml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBi eXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAjMjUg Y29tZGF0ICFkYmcgITIwOTcgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0g YWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJh YSAhMTkzCi1AQCAtMTAxMjQsNyArMTAxMjQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNWYXJ5aQot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2lu ZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdF RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciog Ynl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5 dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEwNiB7Ci0rZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEz VmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFf KGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dy aXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5 dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBj b21kYXQgIWRiZyAhMjEwNiB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBh bGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFh ICExOTMKLUBAIC0xMDE1MCw3ICsxMDE1MCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpCi0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5k Ci0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJZjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBi eXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2 YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTE1IHsKLStkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNW YXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8o aTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3Jp dGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2 YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNv bWRhdCAhZGJnICEyMTE1IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFs bG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEg ITE5MwotQEAgLTEwMTc2LDcgKzEwMTc2LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVmFyeWkKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQK LS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0l4MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5 dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZh bCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMjQgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1Zh cnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhp OCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0 ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZh bCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAjMjUgY29t ZGF0ICFkYmcgITIxMjQgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxs b2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAh MTkzCi1AQCAtMTAyMDIsNyArMTAyMDIsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNWYXJ5aQotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAot LWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSXkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2 YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFs IGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEzMyB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFy eWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRl cikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFs KCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21k YXQgIWRiZyAhMjEzMyB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxv Y2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICEx OTMKLUBAIC0xMDIyOCw3ICsxMDIyOCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1ZhcnlpCi0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0t ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJZDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZh bCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwg YWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTQyIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5 aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTgg c2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVy KSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwo JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRh dCAhZGJnICEyMTQyIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9j YSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5 MwotQEAgLTEwMjU0LDcgKzEwMjU0LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVmFyeWkKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1k ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lQdjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZh bCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwg YWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTUxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVmFy eWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRl cikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFs KCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21k YXQgIWRiZyAhMjE1MSB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxv Y2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICEx OTMKLWRpZmYgLS1naXQgYS9idWlsdGlucy9idWlsdGlucy1jbS02NC5sbCBiL2J1aWx0aW5zL2J1 aWx0aW5zLWNtLTY0LmxsCi1pbmRleCAzOWEyZGQ4YmUuLjM3NWQwMWJlZCAxMDA2NDQKLS0tLSBh L2J1aWx0aW5zL2J1aWx0aW5zLWNtLTY0LmxsCi0rKysgYi9idWlsdGlucy9idWlsdGlucy1jbS02 NC5sbAotQEAgLTU1Nyw3ICs1NTcsNyBAQCAkX1pOMTNWYXJ5aW5nV3JpdGVyMTJXcml0ZVZlY0Vs ZW1JUHZFRXZ2ID0gY29tZGF0IGFueQotIEAuc3RyLjEwID0gcHJpdmF0ZSB1bm5hbWVkX2FkZHIg Y29uc3RhbnQgWzggeCBpOF0gYyIlMDE2bGxYXDAwIiwgYWxpZ24gMQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0IGk4IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2Y2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAg ewotK2RlZmluZSBpbnRlcm5hbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z ZGl2Y2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAgewotICAgJTMgPSBhbGxvY2EgaTgsIGFs aWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4 PiwgYWxpZ24gMQotQEAgLTYxOCw3ICs2MTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4g QF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMUVFRXUyQ012YlRfX2NTMV9TMV91MkNNdgot IGRlY2xhcmUgPDEgeCBpOD4gQGxsdm0uZ2VueC5yZHJlZ2lvbmkudjFpOC52MWk4LmkxNig8MSB4 IGk4PiwgaTMyLCBpMzIsIGkzMiwgaTE2LCBpMzIpICMyCi0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9jU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMCB7Ci0r ZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJD TXZiMV9jU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGk4 PiwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU1ID0gYWxs b2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtNjM0LDcgKzYzNCw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX2NTXyg8MSB4 IGk4PiwgPDEKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1k ZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJD TXZiMl9jU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMyB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHgg aTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMl9jU18oPDIgeCBpOD4sIDwy IHggaTg+KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTQgPSBh bGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAy Ci1AQCAtNjgwLDcgKzY4MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1pON2RldGFp bHMxM19faW1wbF9kaXZyZW1JTGkyRUVFdTJDTXZiVF9fY1MxX1MxX3UyQ012Ci0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4 IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfY1NfKDw0IHggaTg+LCA8 NCB4IGk4PikgIzUgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc2RpdnUyQ012YjRfY1NfKDw0IHggaTg+LCA8NCB4IGk4PikgIzUgewotICAgJTMg PSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDw0IHggaTg+LCBhbGln biA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotQEAgLTgxOCw3ICs4MTgsNyBA QCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTg+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlM aTE2RUVFdTJDTXZiVF9fY1MxX1MxX3UyQwotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfY1NfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTEgewot K2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1 MkNNdmIzMl9jU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxMSB7Ci0gICAlMyA9IGFsbG9jYSA8 MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0g ICAlNSA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtODY0LDcgKzg2NCw3IEBAIGRl ZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMzJF RUV1MkNNdmJUX19jUzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5l IG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtY2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAgewotK2RlZmluZSBpbnRl cm5hbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtY2MoaTggc2lnbmV4 dCwgaTggc2lnbmV4dCkgIzAgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0g YWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAg LTg5MCw3ICs4OTAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQgaTggQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW1jYyhpOCBzaWduZXh0LCBpOCBzaWduZQotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEgeCBp OD4pICMwIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMwIHsKLSAgICUzID0gYWxs b2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQot ICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC05MDQsNyArOTA0LDcgQEAgZGVm aW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012 YjFfY1NfKDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmIyX2NTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMzIHsKLStkZWZpbmUgaW50 ZXJuYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2NTXyg8 MiB4IGk4PiwgPDIgeCBpOD4pICMzIHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAy Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDIgeCBp OD4sIGFsaWduIDIKLUBAIC05MTgsNyArOTE4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfY1NfKDwyIHggaTg+LCA8Mgot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2NTXyg8 NCB4IGk4PiwgPDQgeCBpOD4pICM1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2NTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICM1 IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8NCB4 IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLUBAIC05MzIs NyArOTMyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc3JlbXUyQ012YjRfY1NfKDw0IHggaTg+LCA8NAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDggeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2NTXyg8OCB4IGk4PiwgPDggeCBpOD4pICM3 IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW11MkNNdmI4X2NTXyg8OCB4IGk4PiwgPDggeCBpOD4pICM3IHsKLSAgICUzID0gYWxsb2NhIDw4 IHggaTg+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotICAgJTUg PSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLUBAIC05NDYsNyArOTQ2LDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfY1Nf KDw4IHggaTg+LCA8OAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtdTJDTXZiMTZfY1NfKDwxNiB4IGk4PiwgPDE2IHggaTg+KSAjOSB7Ci0rZGVmaW5lIGludGVy bmFsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X2NTXyg8 MTYgeCBpOD4sIDwxNiB4IGk4PikgIzkgewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGln biAxNgotICAgJTQgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2Eg PDE2IHggaTg+LCBhbGlnbiAxNgotQEAgLTk2MCw3ICs5NjAsNyBAQCBkZWZpbmUgZHNvX2xvY2Fs IDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X2NTXyg8MTYg eCBpOD4sCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmIzMl9jU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxMSB7Ci0rZGVmaW5lIGludGVybmFsIDwz MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2NTXyg8MzIgeCBp OD4sIDwzMiB4IGk4PikgIzExIHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIK LSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwzMiB4 IGk4PiwgYWxpZ24gMzIKLUBAIC05NzQsNyArOTc0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MzIg eCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9jU18oPDMyIHggaTg+ LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZzcyhpMTYg c2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgc2lnbmV4dCBpMTYg QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZzcyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25leHQp ICMzIHsKLSAgICUzID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgaTE2LCBh bGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xMDU4LDcgKzEw NTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWk43ZGV0YWlsczEzX19pbXBsX2Rp dnJlbUlMaTFFRUV1MkNNdmJUX19zUzFfUzFfdTJDTQotIGRlY2xhcmUgPDEgeCBpMTY+IEBsbHZt LmdlbngucmRyZWdpb25pLnYxaTE2LnYxaTE2LmkxNig8MSB4IGkxNj4sIGkzMiwgaTMyLCBpMzIs IGkxNiwgaTMyKSAjMgotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1 MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzMgewotK2RlZmluZSBpbnRlcm5hbCA8 MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX3NTXyg8MSB4IGkx Nj4sIDwxIHggaTE2PikgIzMgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0g ICAlNCA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2 PiwgYWxpZ24gMgotQEAgLTEwNzQsNyArMTA3NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBp MTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8 Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX3NT Xyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX3NTXyg8MiB4IGkxNj4sIDwyIHgg aTE2PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNCA9IGFs bG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24g NAotQEAgLTExNDMsNyArMTE0Myw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aTjdk ZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMkVFRXUyQ012YlRfX3NTMV9TMV91MkNNCi0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8 NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X3NTXyg8NCB4IGkx Nj4sIDw0IHggaTE2PikgIzcgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkxNj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X3NTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzcg ewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4 IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotQEAgLTEz NTAsNyArMTM1MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+IEBfWk43ZGV0YWlsczEz X19pbXBsX2RpdnJlbUlMaTE2RUVFdTJDTXZiVF9fc1MxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfc1NfKDwzMiB4IGkxNj4sIDwz MiB4IGkxNj4pICMxMyB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9zU18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzEz IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8 MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQK LUBAIC0xNDE5LDcgKzE0MTksNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1pON2Rl dGFpbHMxM19faW1wbF9kaXZyZW1JTGkzMkVFRXUyQ012YlRfX3NTMV9TMV91MgotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgc2ln bmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1zcyhpMTYgc2lnbmV4dCwgaTE2 IHNpZ25leHQpICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW1zcyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLSAgICUz ID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAl NSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xNDQ1LDcgKzE0NDUsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIHNpZ25leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtc3Mo aTE2IHNpZ25leHQsIGkxNiBzaQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtdTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMzIHsKLStkZWZpbmUg aW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9z U18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMzIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTE2Piwg YWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9j YSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xNDU5LDcgKzE0NTksNyBAQCBkZWZpbmUgZHNvX2xv Y2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfc1NfKDwx IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVt dTJDTXZiMl9zU18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICM1IHsKLStkZWZpbmUgaW50ZXJuYWwg PDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9zU18oPDIgeCBp MTY+LCA8MiB4IGkxNj4pICM1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAot ICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkx Nj4sIGFsaWduIDQKLUBAIC0xNDczLDcgKzE0NzMsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHgg aTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfc1NfKDwyIHggaTE2Piwg PAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9z U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICM3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9zU18oPDQgeCBpMTY+LCA8NCB4 IGkxNj4pICM3IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTQgPSBh bGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWdu IDgKLUBAIC0xNDg3LDcgKzE0ODcsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfc1NfKDw0IHggaTE2PiwgPAotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9zU18oPDggeCBp MTY+LCA8OCB4IGkxNj4pICM5IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpMTY+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9zU18oPDggeCBpMTY+LCA8OCB4IGkxNj4pICM5 IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw4 IHggaTE2PiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLUBA IC0xNTAxLDcgKzE1MDEsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTE2PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012Yjhfc1NfKDw4IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHgg aTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X3NTXyg8MTYgeCBpMTY+ LCA8MTYgeCBpMTY+KSAjMTEgewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfc1NfKDwxNiB4IGkxNj4sIDwxNiB4IGkxNj4p ICMxMSB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxv Y2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWdu IDMyCi1AQCAtMTUxNSw3ICsxNTE1LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMTY+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfc1NfKDwxNiB4IGkxNj4KLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9zU18oPDMy IHggaTE2PiwgPDMyIHggaTE2PikgIzEzIHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX3NTXyg8MzIgeCBpMTY+LCA8MzIg eCBpMTY+KSAjMTMgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU0 ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMTY+ LCBhbGlnbiA2NAotQEAgLTE1MjksNyArMTUyOSw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDMyIHgg aTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX3NTXyg8MzIgeCBpMTY+ Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZpaShpMzIsIGkzMikgIzE0 IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2aWko aTMyLCBpMzIpICMxNCB7Ci0gICAlMyA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU0ID0gYWxs b2NhIGkzMiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAt MTczMCw3ICsxNzMwLDcgQEAgZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBAX1pON2RldGFpbHMx M19faW1wbF9kaXZyZW1JTGkxRUVFdTJDTXZiVF9faVMxX1MxX3UyQ00KLSBkZWNsYXJlIDwxIHgg aTMyPiBAbGx2bS5nZW54LnJkcmVnaW9uaS52MWkzMi52MWkzMi5pMTYoPDEgeCBpMzI+LCBpMzIs IGkzMiwgaTMyLCBpMTYsIGkzMikgIzIKLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zZGl2dTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0rZGVmaW5l IGludGVybmFsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFf aVNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMzI+ LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU1ID0gYWxs b2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTE3NDYsNyArMTc0Niw3IEBAIGRlZmluZSBkc29f bG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9pU18o PDEgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Nk aXZ1MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLStkZWZpbmUgaW50ZXJu YWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMl9pU18oPDIg eCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWdu IDgKLSAgICU0ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDIg eCBpMzI+LCBhbGlnbiA4Ci1AQCAtMTkzMiw3ICsxOTMyLDcgQEAgZGVmaW5lIGludGVybmFsIDwy IHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkyRUVFdTJDTXZiVF9faVMxX1Mx X3UyQ00KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012 YjRfaVNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4 IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X2lTXyg8NCB4IGkzMj4s IDw0IHggaTMyPikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAg ICU0ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw0IHggaTMy PiwgYWxpZ24gMTYKLUBAIC0yNDkwLDcgKzI0OTAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHgg aTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxNkVFRXUyQ012YlRfX2lTMV9TMV91 MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjMy X2lTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotK2RlZmluZSBpbnRlcm5hbCA8MzIg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfaVNfKDwzMiB4IGkz Mj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAx MjgKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTUgPSBhbGxvY2Eg PDMyIHggaTMyPiwgYWxpZ24gMTI4Ci1AQCAtMjY3Niw3ICsyNjc2LDcgQEAgZGVmaW5lIGludGVy bmFsIDwzMiB4IGkzMj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMzJFRUV1MkNNdmJU X19pUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQK LS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbWlpKGkz MiwgaTMyKSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW1paShpMzIsIGkzMikgIzE0IHsKLSAgICUzID0gYWxsb2NhIGkzMiwgYWxpZ24gNAot ICAgJTQgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFs aWduIDQKLUBAIC0yNzAyLDcgKzI3MDIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbWlpKGkzMiwgaTMyKSAjMTQgewotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4 IGkzMj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjFfaVNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewotICAg JTMgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MSB4IGkzMj4s IGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTI3MTYsNyAr MjcxNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtdTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikg IzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zcmVtdTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0gICAlMyA9IGFs bG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24g OAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci1AQCAtMjczMCw3ICsyNzMwLDcg QEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW11MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9p bmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfaVNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewot K2RlZmluZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11 MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw0 IHggaTMyPiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAg ICU1ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLUBAIC0yNzQ0LDcgKzI3NDQsNyBAQCBk ZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUy Q012YjRfaVNfKDw0IHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiOF9pU18oPDggeCBpMzI+LCA8OCB4IGkzMj4pICMxNyB7Ci0rZGVm aW5lIGludGVybmFsIDw4IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012 YjhfaVNfKDw4IHggaTMyPiwgPDggeCBpMzI+KSAjMTcgewotICAgJTMgPSBhbGxvY2EgPDggeCBp MzI+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgotICAgJTUg PSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgotQEAgLTI3NTgsNyArMjc1OCw3IEBAIGRlZmlu ZSBkc29fbG9jYWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZi OF9pU18oPDggeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtdTJDTXZiMTZfaVNfKDwxNiB4IGkzMj4sIDwxNiB4IGkzMj4pICMxOCB7Ci0rZGVm aW5lIGludGVybmFsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmIxNl9pU18oPDE2IHggaTMyPiwgPDE2IHggaTMyPikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwx NiB4IGkzMj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAot ICAgJTUgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQKLUBAIC0yNzcyLDcgKzI3NzIsNyBA QCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW11MkNNdmIxNl9pU18oPDE2IHggaTMyPgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2lTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkg ewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtdTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9IGFs bG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFs aWduIDEyOAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci1AQCAtMjc4Niw3 ICsyNzg2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHplcm9leHQgaTggQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZoaChpOCB6ZXJvZXh0LCBpOCB6ZXJvZXh0KSAjMjEg ewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 ZGl2aGgoaTggemVyb2V4dCwgaTggemVyb2V4dCkgIzIxIHsKLSAgICUzID0gYWxsb2NhIGk4LCBh bGlnbiAxCi0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBp OD4sIGFsaWduIDEKLUBAIC0yODQ0LDcgKzI4NDQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBp OD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTFFRUV1MkNNdmJUX19oUzFfUzFfdTJD TQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2hT Xyg8MSB4IGk4PiwgPDEgeCBpOD4pICMyMSB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxIHggaTg+ KSAjMjEgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU0ID0gYWxsb2Nh IDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAg LTI4NjAsNyArMjg2MCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEKLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl9oU18oPDIgeCBpOD4sIDwyIHgg aTg+KSAjMjIgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdWRpdnUyQ012YjJfaFNfKDwyIHggaTg+LCA8MiB4IGk4PikgIzIyIHsKLSAgICUzID0g YWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24g MgotICAgJTUgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLUBAIC0yOTA2LDcgKzI5MDYsNyBA QCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlM aTJFRUV1MkNNdmJUX19oUzFfUzFfdTJDTQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VkaXZ1MkNNdmI0X2hTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICMxNCB7Ci0rZGVm aW5lIGludGVybmFsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZi NF9oU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpOD4s IGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9j YSA8NCB4IGk4PiwgYWxpZ24gNAotQEAgLTMwNDQsNyArMzA0NCw3IEBAIGRlZmluZSBpbnRlcm5h bCA8MTYgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTE2RUVFdTJDTXZiVF9f aFMxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1 MkNNdmIzMl9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxNyB7Ci0rZGVmaW5lIGludGVybmFs IDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjMyX2hTXyg8MzIg eCBpOD4sIDwzMiB4IGk4PikgIzE3IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24g MzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwz MiB4IGk4PiwgYWxpZ24gMzIKLUBAIC0zMDkwLDcgKzMwOTAsNyBAQCBkZWZpbmUgaW50ZXJuYWwg PDMyIHggaTg+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkzMkVFRXUyQ012YlRfX2hT MV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRl ZmluZSBkc29fbG9jYWwgemVyb2V4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWho KGk4IHplcm9leHQsIGk4IHplcm9leHQpICMyMSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQg aTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1oaChpOCB6ZXJvZXh0LCBpOCB6ZXJvZXh0 KSAjMjEgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBh bGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTMxMTYsNyArMzEx Niw3IEBAIGRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdXJlbWhoKGk4IHplcm9leHQsIGk4IHplcm9lCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfaFNfKDwxIHggaTg+LCA8MSB4IGk4PikgIzIxIHsK LStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMyMSB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4 IGk4PiwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU1ID0g YWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtMzEzMCw3ICszMTMwLDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfaFNf KDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vy ZW11MkNNdmIyX2hTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMyMiB7Ci0rZGVmaW5lIGludGVybmFs IDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl9oU18oPDIgeCBp OD4sIDwyIHggaTg+KSAjMjIgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAg ICU0ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MiB4IGk4Piwg YWxpZ24gMgotQEAgLTMxNDQsNyArMzE0NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2hTXyg8MiB4IGk4PiwgPDIKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9oU18oPDQg eCBpOD4sIDw0IHggaTg+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGk4PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfaFNfKDw0IHggaTg+LCA8NCB4IGk4PikgIzE0 IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8NCB4 IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLUBAIC0zMTU4 LDcgKzMxNTgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91cmVtdTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0Ci0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGk4PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfaFNfKDw4IHggaTg+LCA8OCB4IGk4Pikg IzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VyZW11MkNNdmI4X2hTXyg8OCB4IGk4PiwgPDggeCBpOD4pICMxNSB7Ci0gICAlMyA9IGFsbG9j YSA8OCB4IGk4PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLSAg ICU1ID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci1AQCAtMzE3Miw3ICszMTcyLDcgQEAgZGVm aW5lIGRzb19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012 YjhfaFNfKDw4IHggaTg+LCA8OAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91cmVtdTJDTXZiMTZfaFNfKDwxNiB4IGk4PiwgPDE2IHggaTg+KSAjMTYgewotK2RlZmlu ZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIx Nl9oU18oPDE2IHggaTg+LCA8MTYgeCBpOD4pICMxNiB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBp OD4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci0gICAlNSA9 IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci1AQCAtMzE4Niw3ICszMTg2LDcgQEAgZGVmaW5l IGRzb19sb2NhbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIx Nl9oU18oPDE2IHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTcgewotK2RlZmluZSBp bnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9o U18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxNyB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpOD4s IGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNSA9IGFs bG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtMzIwMCw3ICszMjAwLDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9o U18oPDMyIHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VkaXZ0dChpMTYgemVyb2V4dCwgaTE2IHplcm9leHQpICMyMiB7Ci0rZGVmaW5lIGludGVybmFs IHplcm9leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dHQoaTE2IHplcm9leHQs IGkxNiB6ZXJvZXh0KSAjMjIgewotICAgJTMgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNCA9 IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgot QEAgLTMyNzgsNyArMzI3OCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aTjdkZXRh aWxzMTRfX2ltcGxfdWRpdnJlbUlMaTFFRUV1MkNNdmJUX190UzFfUzFfdTJDCi0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX3RTXyg8MSB4IGkxNj4s IDwxIHggaTE2PikgIzIyIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV90U18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMyMiB7 Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwxIHgg aTE2PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMzI5 NCw3ICszMjk0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VkaXZ1MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfdFNfKDwyIHggaTE2PiwgPDIgeCBp MTY+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3VkaXZ1MkNNdmIyX3RTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzE0IHsKLSAgICUz ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBh bGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLUBAIC0zMzYwLDcgKzMz NjAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMTY+IEBfWk43ZGV0YWlsczE0X19pbXBsX3Vk aXZyZW1JTGkyRUVFdTJDTXZiVF9fdFMxX1MxX3UyQwotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJz OiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF90U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICMx NSB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dWRpdnUyQ012YjRfdFNfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjMTUgewotICAgJTMgPSBhbGxv Y2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgK LSAgICU1ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotQEAgLTM1NTgsNyArMzU1OCw3IEBA IGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1J TGkxNkVFRXUyQ012YlRfX3RTMV9TMV91Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91ZGl2dTJDTXZiMzJfdFNfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxOCB7 Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vk aXZ1MkNNdmIzMl90U18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzE4IHsKLSAgICUzID0gYWxs b2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGln biA2NAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLUBAIC0zNjI0LDcgKzM2 MjQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1pON2RldGFpbHMxNF9faW1wbF91 ZGl2cmVtSUxpMzJFRUV1MkNNdmJUX190UzFfUzFfdQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJz OiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpMTYgQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW10dChpMTYgemVyb2V4dCwgaTE2IHplcm9leHQpICMyMiB7 Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdHQoaTE2IHplcm9leHQsIGkxNiB6ZXJvZXh0KSAjMjIgewotICAgJTMgPSBhbGxvY2EgaTE2 LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwx IHggaTE2PiwgYWxpZ24gMgotQEAgLTM2NTAsNyArMzY1MCw3IEBAIGRlZmluZSBkc29fbG9jYWwg emVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW10dChpMTYgemVyb2V4dCwg aTE2IHplCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmIxX3RTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzIyIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEg eCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV90U18oPDEgeCBpMTY+ LCA8MSB4IGkxNj4pICMyMiB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAg ICU0ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+ LCBhbGlnbiAyCi1AQCAtMzY2NCw3ICszNjY0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwK LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfdFNf KDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX3RTXyg8MiB4IGkxNj4sIDwyIHgg aTE2PikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTQgPSBh bGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWdu IDQKLUBAIC0zNjc4LDcgKzM2NzgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfdFNfKDwyIHggaTE2PiwgPAotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF90U18oPDQgeCBp MTY+LCA8NCB4IGkxNj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTE2PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfdFNfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAj MTUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8 NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotQEAg LTM2OTIsNyArMzY5Miw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF90U18oPDQgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X3RTXyg8OCB4IGkxNj4sIDw4 IHggaTE2PikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91cmVtdTJDTXZiOF90U18oPDggeCBpMTY+LCA8OCB4IGkxNj4pICMxNiB7Ci0g ICAlMyA9IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8OCB4IGkx Nj4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci1AQCAtMzcw Niw3ICszNzA2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VyZW11MkNNdmI4X3RTXyg8OCB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl90U18oPDE2IHggaTE2PiwgPDE2 IHggaTE2PikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X3RTXyg8MTYgeCBpMTY+LCA8MTYgeCBpMTY+KSAjMTcg ewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwx NiB4IGkxNj4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgot QEAgLTM3MjAsNyArMzcyMCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2IHggaTE2PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X3RTXyg8MTYgeCBpMTY+Ci0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIg eCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfdFNfKDwzMiB4IGkx Nj4sIDwzMiB4IGkxNj4pICMxOCB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl90U18oPDMyIHggaTE2PiwgPDMyIHggaTE2 PikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNCA9IGFs bG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxp Z24gNjQKLUBAIC0zNzM0LDcgKzM3MzQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl90U18oPDMyIHggaTE2PgotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2amooaTMyLCBpMzIpICMxNCB7Ci0r ZGVmaW5lIGludGVybmFsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdmpqKGkzMiwg aTMyKSAjMTQgewotICAgJTMgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSBp MzIsIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTM4OTIs NyArMzg5Miw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9aTjdkZXRhaWxzMTRfX2lt cGxfdWRpdnJlbUlMaTFFRUV1MkNNdmJUX19qUzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwxIHggaTMy PikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91ZGl2dTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0gICAlMyA9 IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxp Z24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtMzkwOCw3ICszOTA4 LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VkaXZ1MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfalNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUg ewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vk aXZ1MkNNdmIyX2pTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLSAgICUzID0gYWxsb2Nh IDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0g ICAlNSA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLUBAIC00MDU0LDcgKzQwNTQsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGky RUVFdTJDTXZiVF9falMxX1MxX3UyQwotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91ZGl2dTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0rZGVm aW5lIGludGVybmFsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012 YjRfalNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotICAgJTMgPSBhbGxvY2EgPDQgeCBp MzI+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTUg PSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotQEAgLTQ0OTIsNyArNDQ5Miw3IEBAIGRlZmlu ZSBpbnRlcm5hbCA8MTYgeCBpMzI+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxNkVF RXUyQ012YlRfX2pTMV9TMV91Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91ZGl2dTJDTXZiMzJfalNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVm aW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNN dmIzMl9qU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLSAgICUzID0gYWxsb2NhIDwz MiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4 Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLUBAIC00NjM4LDcgKzQ2Mzgs NyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2 cmVtSUxpMzJFRUV1MkNNdmJUX19qUzFfUzFfdQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91cmVtamooaTMyLCBpMzIpICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIGkzMiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdXJlbWpqKGkzMiwgaTMyKSAjMTQgewotICAgJTMgPSBhbGxv Y2EgaTMyLCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU1ID0gYWxs b2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTQ2NjQsNyArNDY2NCw3IEBAIGRlZmluZSBkc29f bG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtamooaTMyLCBpMzIpICMxNCB7 Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2pT Xyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8MSB4 IGkzMj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0ID0g YWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGln biA0Ci1AQCAtNDY3OCw3ICs0Njc4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfalNfKDwyIHgg aTMyPiwgPDIgeCBpMzI+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2pTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikg IzE1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2Eg PDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLUBA IC00NjkyLDcgKzQ2OTIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfalNfKDwyIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8 NCB4IGkzMj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfalNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewot ICAgJTMgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDQgeCBp MzI+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotQEAgLTQ3 MDYsNyArNDcwNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91cmVtdTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2pTXyg8OCB4IGkzMj4sIDw4IHgg aTMyPikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91cmVtdTJDTXZiOF9qU18oPDggeCBpMzI+LCA8OCB4IGkzMj4pICMxNyB7Ci0gICAl MyA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8OCB4IGkzMj4s IGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi1AQCAtNDcyMCw3 ICs0NzIwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3VyZW11MkNNdmI4X2pTXyg8OCB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9qU18oPDE2IHggaTMyPiwgPDE2IHgg aTMyPikgIzE4IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8MTYgeCBpMzI+LCA8MTYgeCBpMzI+KSAjMTggewot ICAgJTMgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQKLSAgICU0ID0gYWxsb2NhIDwxNiB4 IGkzMj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotQEAg LTQ3MzQsNyArNDczNCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2IHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8MTYgeCBpMzI+Ci0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfalNfKDwzMiB4IGkzMj4s IDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9qU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikg IzE5IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxv Y2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGln biAxMjgKLUBAIC00NzQ4LDcgKzQ3NDgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9qU18oPDMyIHggaTMyPgotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgdm9pZCBAX19kb19wcmludF9jbShpOCosIGk4KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwgaTMy KSAjMjMgIWRiZyAhMTUgewotK2RlZmluZSBpbnRlcm5hbCB2b2lkIEBfX2RvX3ByaW50X2NtKGk4 KiwgaTgqLCBpMzIsIGk2NCwgaTMyKiwgaTMyLCBpMzIpICMyMyAhZGJnICExNSB7Ci0gICAlOCA9 IGFsbG9jYSBpOCosIGFsaWduIDgKLSAgICU5ID0gYWxsb2NhIGk4KiwgYWxpZ24gOAotICAgJTEw ID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotQEAgLTUwNzAsNyArNTA3MCw3IEBAIGRlZmluZSBkc29f bG9jYWwgdm9pZCBAX19kb19wcmludF9seihpMzIsIGk4KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwg aTMyLCBpMzIsIGkzCi0gICAlNjcgPSBsb2FkIGk2NCwgaTY0KiAlMTMsIGFsaWduIDgsICFkYmcg ITE1OSwgIXRiYWEgITE5Ci0gICAlNjggPSBsb2FkIDw1IHggaTMyPiwgPDUgeCBpMzI+KiAlMjEs IGFsaWduIDMyLCAhZGJnICExNjAsICF0YmFhICE3Ci0gICBjYWxsIHZvaWQgQF9aTjEzVmFyeWlu Z1dyaXRlckMyRVJ5UlBLaml5dTJDTXZiNV9pKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMjMsIGk2 NCogZGVyZWZlcmVuY2VhYmxlKDgpICUxOSwgaTMyKiogZGVyZWZlcmVuY2VhYmxlKDgpICUxNCwg aTMyICU2NiwgaTY0ICU2NywgPDUgeCBpMzI+ICU2OCksICFkYmcgITE2MQotLSAgJTY5ID0gY2Fs bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0 ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNjIsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMjIsICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiBieXZhbCBhbGlnbiAzMiAlMjMpLCAhZGJnICExNjIKLSsgICU2OSA9IGNhbGwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5 aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQgJTYyLCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICUyMiwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAl MjMpLCAhZGJnICExNjIKLSAgIGJyIGxhYmVsICU3MCwgIWRiZyAhMTYzCi0gCi0gOyA8bGFiZWw+ OjcwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTYwCi1A QCAtNTE4OCw3ICs1MTg4LDcgQEAgZGVmaW5lIGludGVybmFsIDw1IHggaTMyPiBAX1oxN2dldF9h dXhpbGlhcnlfc3RydigpICMyOCBjb21kYXQgIWRiZyAhMTc4IHsKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3Jp dGVyMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5 dmFsIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE5MSB7Ci0rZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm8xNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcjEz VmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyKSAjMjUg Y29tZGF0ICFkYmcgITE5MSB7Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBh bGxvY2EgJWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAlNiA9IGFsbG9jYSAlY2xh c3MuVmFyeWluZ1dyaXRlciwgYWxpZ24gMzIKLUBAIC01MTk3LDcgKzUxOTcsNyBAQCBkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlm b3JtV3JpdGVyMTNWYXJ5aQotICAgJTggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAl NSB0byBpOCosICFkYmcgITE5NgotICAgJTkgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVy KiAlMSB0byBpOCosICFkYmcgITE5NgotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAw aTguaTY0KGk4KiBhbGlnbiAzMiAlOCwgaTgqIGFsaWduIDMyICU5LCBpNjQgNjQsIGkxIGZhbHNl KSwgIWRiZyAhMTk2LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTEwID0gY2FsbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlckVF Yk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICU3LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2 YWwgYWxpZ24gMzIgJTUpLCAhZGJnICExOTgKLSsgICUxMCA9IGNhbGwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkxM1VuaWZvcm1Xcml0ZXJFRWJOU184 RW5jb2RpbmdFVF8oaTggc2lnbmV4dCAlNywgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVj bGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNSksICFkYmcgITE5OAotICAgYnIgaTEgJTEw LCBsYWJlbCAlMTYsIGxhYmVsICUxMSwgIWRiZyAhMTk5Ci0gCi0gOyA8bGFiZWw+OjExOiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTMKLUBAIC01MjA1LDcg KzUyMDUsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dp dGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5aQotICAgJTEzID0gYml0Y2FzdCAlY2xh c3MuVmFyeWluZ1dyaXRlciogJTYgdG8gaTgqLCAhZGJnICEyMDEKLSAgICUxNCA9IGJpdGNhc3Qg JWNsYXNzLlZhcnlpbmdXcml0ZXIqICUyIHRvIGk4KiwgIWRiZyAhMjAxCi0gICBjYWxsIHZvaWQg QGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUxMywgaTgqIGFsaWduIDMy ICUxNCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITIwMSwgIXRiYWEuc3RydWN0ICExOTcKLS0g ICUxNSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VmFy eWluZ0kxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCAlMTIsICVj bGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNiksICFkYmcgITIwMgotKyAgJTE1 ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5aW5n STEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICUxMiwgJWNsYXNz LlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlNiks ICFkYmcgITIwMgotICAgYnIgbGFiZWwgJTE2LCAhZGJnICExOTkKLSAKLSA7IDxsYWJlbD46MTY6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMTEsICUzCi1A QCAtNTI4MCw3ICs1MjgwLDcgQEAgZGVmaW5lIGludGVybmFsIHZvaWQgQF9aTjEzVmFyeWluZ1dy aXRlckMyRVJ5UlBLaml5dTJDTXZiNV9pKCVjbGFzcy5WYXJ5aW5nV3JpdGUKLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBA X19udW1fY29yZXMoKSAjMjkgIWRiZyAhMjM2IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfX251 bV9jb3JlcygpICMyOSAhZGJnICEyMzYgewotICAgcmV0IGkzMiAtMSwgIWRiZyAhMjM3Ci0gfQot IAotQEAgLTg4NzAsNyArODg3MCw3IEBAIGRlY2xhcmUgZHNvX2xvY2FsIHZvaWQgQF9aTjdkZXRh aWxzMzdfX2NtX2ludHJpbnNpY19pbXBsX3N2bV9zY2F0dGVyX3dyaXRlSWlMaTFFCi0gZGVjbGFy ZSB2b2lkIEBsbHZtLmdlbnguc3ZtLnNjYXR0ZXIudjFpMS52MWk2NC52MWkzMig8MSB4IGkxPiwg aTMyLCA8MSB4IGk2ND4sIDwxIHggaTMyPikgIzI3Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3 YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkxM1VuaWZvcm1Xcml0ZXJF RWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFs IGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NDUgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdy aXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciog Ynl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2 NDUgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhICVjbGFzcy5V bmlmb3JtV3JpdGVyLCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRVbmlmb3JtIiwgYWxpZ24gMQotQEAgLTg4NzksNyArODg3OSw3IEBAIGRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlm b3JtSTEzVW5pZm9ybVdyaXRlCi0gICAlNyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq ICU0IHRvIGk4KiwgIWRiZyAhMTY0NwotICAgJTggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3Jp dGVyKiAlMSB0byBpOCosICFkYmcgITE2NDcKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBp OC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTcsIGk4KiBhbGlnbiAzMiAlOCwgaTY0IDY0LCBpMSBm YWxzZSksICFkYmcgITE2NDcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlOSA9IGNhbGwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRl ck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAl NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU0LCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICU1KSwgIWRiZyAhMTY0OAot KyAgJTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNv ZGluZ0kxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5n RVRfVDBfKGk4IHNpZ25leHQgJTYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3Mu VW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTQsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFs aWduIDEgJTUpLCAhZGJnICExNjQ4Ci0gICByZXQgaTEgJTksICFkYmcgITE2NDkKLSB9Ci0gCi1A QCAtODg4Nyw3ICs4ODg3LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3JpdGUKLSBkZWNsYXJlIHZv aWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIG5vY2FwdHVyZSB3cml0ZW9ubHksIGk4 KiBub2NhcHR1cmUgcmVhZG9ubHksIGk2NCwgaTEpICMzMgotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFZhcnlpbmdJMTNWYXJ5aW5nV3Jp dGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBi eXZhbCBhbGlnbiAzMikgIzI1IGNvbWRhdCAhZGJnICExNjUwIHsKLStkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VmFyeWluZ0kxM1Zhcnlp bmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMikgIzI1IGNvbWRhdCAhZGJn ICExNjUwIHsKLSAgICUzID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSAlY2xh c3MuVmFyeWluZ1dyaXRlciwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIsIGFsaWduIDEKLUBAIC04ODk2LDEyICs4ODk2LDEyIEBA IGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGlu ZzRWYXJ5aW5nSTEzVmFyeWluZ1dyaXRlCi0gICAlNyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdX cml0ZXIqICU0IHRvIGk4KiwgIWRiZyAhMTY1MgotICAgJTggPSBiaXRjYXN0ICVjbGFzcy5WYXJ5 aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NTIKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1j cHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTcsIGk4KiBhbGlnbiAzMiAlOCwgaTY0IDY0 LCBpMSBmYWxzZSksICFkYmcgITE2NTIsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlOSA9IGNhbGwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWlu Z1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2ln bmV4dCAlNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU0LCAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICU1KSwgIWRiZyAh MTY1MwotKyAgJTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0 Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVu Y29kaW5nRVRfVDBfKGk4IHNpZ25leHQgJTYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCgl Y2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTQsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIpIGFsaWduIDEgJTUpLCAhZGJnICExNjUzCi0gICByZXQgaTEgJTksICFkYmcgITE2NTQKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQK LS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRj aEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5j b2RpbmdFVF9UMF8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWdu IDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAx KSAjMjUgY29tZGF0ICFkYmcgITE2NTUgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyTlNfMTZF bmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2NTUgewot ICAgJTQgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhICVjbGFzcy5Vbmlmb3Jt V3JpdGVyLCBhbGlnbiAzMgotICAgJTYgPSBhbGxvY2EgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRVbmlmb3JtIiwgYWxpZ24gMQotQEAgLTg5MjQsNyArODkyNCw3IEBAIGRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNV bmlmb3JtV3JpdGVyCi0gICAlMjIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlNSB0 byBpOCosICFkYmcgITE2NTcKLSAgICUyMyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq ICUxIHRvIGk4KiwgIWRiZyAhMTY1NwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAw aTguaTY0KGk4KiBhbGlnbiAzMiAlMjIsIGk4KiBhbGlnbiAzMiAlMjMsIGk2NCA2NCwgaTEgZmFs c2UpLCAhZGJnICExNjU3LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTI0ID0gY2FsbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1VuaWZv cm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBz aWduZXh0ICUyMSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU1LCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICU2KSwgIWRi ZyAhMTY1OAotKyAgJTI0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIx YXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZv cm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyMSwgJWNsYXNzLlVuaWZvcm1X cml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNSwgJSJzdHJ1Y3Qu UHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlNiksICFkYmcgITE2NTgKLSAgIGJyIGkxICUyNCwg bGFiZWwgJTYwLCBsYWJlbCAlMjUsICFkYmcgITE2NTkKLSAKLSA7IDxsYWJlbD46MjU6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMwotQEAgLTg5MzIsNyAr ODkzMiw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlMjcgPSBiaXRjYXN0ICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiAlNyB0byBpOCosICFkYmcgITE2NjEKLSAgICUyOCA9IGJpdGNhc3Qg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY2MQotICAgY2FsbCB2b2lk IEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlMjcsIGk4KiBhbGlnbiAz MiAlMjgsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICExNjYxLCAhdGJhYS5zdHJ1Y3QgITE5Nwot LSAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsIGFsaWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCBhbGlnbiAxICU4KSwgIWRiZyAhMTY2MgotKyAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1VuaWZvcm1Xcml0 ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 ICUyNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBh bGlnbiAzMiAlNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwo JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlOCksICFkYmcg ITE2NjIKLSAgIGJyIGkxICUyOSwgbGFiZWwgJTYwLCBsYWJlbCAlMzAsICFkYmcgITE2NjMKLSAK LSA7IDxsYWJlbD46MzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJl ZHMgPSAlMjUKLUBAIC04OTQwLDcgKzg5NDAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgot ICAgJTMyID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTkgdG8gaTgqLCAhZGJnICEx NjY1Ci0gICAlMzMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFk YmcgITE2NjUKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxp Z24gMzIgJTMyLCBpOCogYWxpZ24gMzIgJTMzLCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY2 NSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICUzNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZF bmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlOSwgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSAlMTApLCAhZGJnICExNjY2Ci0rICAl MzQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJajEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5j b2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTMxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwo JWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU5LCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKSBhbGlnbiAxICUxMCksICFkYmcgITE2NjYKLSAgIGJyIGkxICUzNCwgbGFiZWwgJTYwLCBs YWJlbCAlMzUsICFkYmcgITE2NjcKLSAKLSA7IDxsYWJlbD46MzU6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMzAKLUBAIC04OTQ4LDcgKzg5NDgsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVu Y29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTM3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdy aXRlciogJTExIHRvIGk4KiwgIWRiZyAhMTY2OQotICAgJTM4ID0gYml0Y2FzdCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjY5Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVt Y3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUzNywgaTgqIGFsaWduIDMyICUzOCwgaTY0 IDY0LCBpMSBmYWxzZSksICFkYmcgITE2NjksICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMzkgPSBj YWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJZjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQgJTM2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24g MzIgJTExLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGln biAxICUxMiksICFkYmcgITE2NzAKLSsgICUzOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZF bmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzYsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIg JTExLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICUxMiksICFkYmcgITE2NzAK LSAgIGJyIGkxICUzOSwgbGFiZWwgJTYwLCBsYWJlbCAlNDAsICFkYmcgITE2NzEKLSAKLSA7IDxs YWJlbD46NDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAl MzUKLUBAIC04OTU2LDcgKzg5NTYsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTQy ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEzIHRvIGk4KiwgIWRiZyAhMTY3Mwot ICAgJTQzID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICEx NjczCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMy ICU0MiwgaTgqIGFsaWduIDMyICU0MywgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITE2NzMsICF0 YmFhLnN0cnVjdCAhMTk3Ci0tICAlNDQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rp bmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTQxLCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxNCksICFkYmcgITE2NzQKLSsgICU0NCA9 IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGlu Z0VUMF9UMV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xh c3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KSBhbGlnbiAxICUxNCksICFkYmcgITE2NzQKLSAgIGJyIGkxICU0NCwgbGFiZWwgJTYwLCBsYWJl bCAlNDUsICFkYmcgITE2NzUKLSAKLSA7IDxsYWJlbD46NDU6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNDAKLUBAIC04OTY0LDcgKzg5NjQsNyBAQCBkZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29k aW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTQ3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRl ciogJTE1IHRvIGk4KiwgIWRiZyAhMTY3NwotICAgJTQ4ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9y bVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjc3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5 LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU0NywgaTgqIGFsaWduIDMyICU0OCwgaTY0IDY0 LCBpMSBmYWxzZSksICFkYmcgITE2NzcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNDkgPSBjYWxs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ eTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBf VDFfKGk4IHNpZ25leHQgJTQ2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIg JTE1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAx ICUxNiksICFkYmcgITE2NzgKLSsgICU0OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNv ZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTE1 LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICUxNiksICFkYmcgITE2NzgKLSAg IGJyIGkxICU0OSwgbGFiZWwgJTYwLCBsYWJlbCAlNTAsICFkYmcgITE2NzkKLSAKLSA7IDxsYWJl bD46NTA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNDUK LUBAIC04OTcyLDcgKzg5NzIsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTUyID0g Yml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTE3IHRvIGk4KiwgIWRiZyAhMTY4MQotICAg JTUzID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjgx Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU1 MiwgaTgqIGFsaWduIDMyICU1MywgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITE2ODEsICF0YmFh LnN0cnVjdCAhMTk3Ci0tICAlNTQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0 VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTUxLCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxOCksICFkYmcgITE2ODIKLSsgICU1NCA9IGNh bGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCAlNTEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3Mu VW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBh bGlnbiAxICUxOCksICFkYmcgITE2ODIKLSAgIGJyIGkxICU1NCwgbGFiZWwgJTYwLCBsYWJlbCAl NTUsICFkYmcgITE2ODMKLSAKLSA7IDxsYWJlbD46NTU6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTAKLUBAIC04OTgwLDcgKzg5ODAsNyBAQCBkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5n STEzVW5pZm9ybVdyaXRlcgotICAgJTU3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciog JTE5IHRvIGk4KiwgIWRiZyAhMTY4NQotICAgJTU4ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdy aXRlciogJTEgdG8gaTgqLCAhZGJnICExNjg1Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAw aTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU1NywgaTgqIGFsaWduIDMyICU1OCwgaTY0IDY0LCBp MSBmYWxzZSksICFkYmcgITE2ODUsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNTkgPSBjYWxsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYx M1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0ICU1NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUx OSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSAl MjApLCAhZGJnICExNjg2Ci0rICAlNTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29k aW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1NiwgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTks ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTIwKSwgIWRiZyAhMTY4NgotICAg YnIgbGFiZWwgJTYwLCAhZGJnICExNjgzCi0gCi0gOyA8bGFiZWw+OjYwOiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTU1LCAlNTAsICU0NSwgJTQwLCAlMzUs ICUzMCwgJTI1LCAlMwotQEAgLTg5ODksNyArODk4OSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3Jp dGVyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5v dW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5p Zm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3Jp dGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3Jt IiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNjg4IHsKLStkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0liMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlm b3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3Jt IiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkg IzI1IGNvbWRhdCAhZGJnICExNjg4IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAl NSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwg IXRiYWEgITE5MwotQEAgLTkwMTUsNyArOTAxNSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1VuaWZv Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53 aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9y bUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVy KiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiog Ynl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNjk3IHsKLStkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lp MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3Jt V3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiog Ynl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1 IGNvbWRhdCAhZGJnICExNjk3IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9 IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRi YWEgITE5MwotQEAgLTkwNDEsNyArOTA0MSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1VuaWZvCi0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5k Ci0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJajEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBi eXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2 YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzA2IHsKLStkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNV bmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8o aTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3Jp dGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2 YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNv bWRhdCAhZGJnICExNzA2IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFs bG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEg ITE5MwotQEAgLTkwNjcsNyArOTA2Nyw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1VuaWZvCi0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0t ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJZjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZh bCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwg YWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlm b3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTgg c2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVy KSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwo JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRh dCAhZGJnICExNzE1IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9j YSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5 MwotQEAgLTkwOTMsNyArOTA5Myw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1VuaWZvCi0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJeDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBh bGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxp Z24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzI0IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3Jt V3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBh bGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAh ZGJnICExNzI0IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBp OCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5Mwot QEAgLTkxMTksNyArOTExOSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1VuaWZvCi0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJeTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5j b2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGln biAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24g MSkgIzI1IGNvbWRhdCAhZGJnICExNzMzIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3Jp dGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGln biAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJn ICExNzMzIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwg YWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAg LTkxNDUsNyArOTE0NSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1VuaWZvCi0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJZDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2Rp bmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAz MiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkg IzI1IGNvbWRhdCAhZGJnICExNzQyIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVy TlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAz MiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3Qu UHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEx NzQyIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxp Z24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkx NzEsNyArOTE3MSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJUHYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEpICMy NSBjb21kYXQgIWRiZyAhMTc1MSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1VuaWZvcm1Xcml0ZXJO U18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAl Y2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMy LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3 NTEgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGln biAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAw MTMsNyArMTAwMTMsNyBAQCBkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWk43ZGV0YWlsczE4X2NtX3By aW50X3R5cGVfb2NsSVB2RUVOU18xOFNIQURFUl9QUklOVEZfVFlQRQotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNW YXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhp OCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQg IWRiZyAhMjA2MSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlp bmdFRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVy KiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA2MSB7Ci0gICAlNCA9IGFsbG9j YSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgJWNsYXNzLlZhcnlpbmdXcml0ZXIsIGFsaWdu IDMyCi0gICAlNiA9IGFsbG9jYSAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci LCBhbGlnbiAxCi1AQCAtMTAwMzYsNyArMTAwMzYsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRl cgotICAgJTIyID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTUgdG8gaTgqLCAhZGJn ICEyMDYzCi0gICAlMjMgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCos ICFkYmcgITIwNjMKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCog YWxpZ24gMzIgJTIyLCBpOCogYWxpZ24gMzIgJTIzLCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAh MjA2MywgIXRiYWEuc3RydWN0ICExOTcKLS0gICUyNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNf MTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMjEs ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNSwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlNiksICFkYmcgITIwNjQKLSsg ICUyNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMjEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZh bCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTUsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIpIGFsaWduIDEgJTYpLCAhZGJnICEyMDY0Ci0gICBiciBpMSAlMjQsIGxhYmVsICU2MCwg bGFiZWwgJTI1LCAhZGJnICEyMDY1Ci0gCi0gOyA8bGFiZWw+OjI1OiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTMKLUBAIC0xMDA0NCw3ICsxMDA0NCw3IEBA IGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNo RW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlMjcgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiAlNyB0byBpOCosICFkYmcgITIwNjcKLSAgICUyOCA9IGJpdGNhc3QgJWNsYXNzLlZh cnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA2NwotICAgY2FsbCB2b2lkIEBsbHZtLm1l bWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlMjcsIGk4KiBhbGlnbiAzMiAlMjgsIGk2 NCA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDY3LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTI5ID0g Y2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWdu IDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGln biAxICU4KSwgIWRiZyAhMjA2OAotKyAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVu Y29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAl NywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3Qu UHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlOCksICFkYmcgITIwNjgKLSAg IGJyIGkxICUyOSwgbGFiZWwgJTYwLCBsYWJlbCAlMzAsICFkYmcgITIwNjkKLSAKLSA7IDxsYWJl bD46MzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMjUK LUBAIC0xMDA1Miw3ICsxMDA1Miw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlMzIg PSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlOSB0byBpOCosICFkYmcgITIwNzEKLSAg ICUzMyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA3 MQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAl MzIsIGk4KiBhbGlnbiAzMiAlMzMsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDcxLCAhdGJh YS5zdHJ1Y3QgITE5NwotLSAgJTM0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5n NFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzMSwgJWNsYXNzLlZh cnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxMCksICFkYmcgITIwNzIKLSsgICUzNCA9IGNh bGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3Mu VmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTksICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFs aWduIDEgJTEwKSwgIWRiZyAhMjA3MgotICAgYnIgaTEgJTM0LCBsYWJlbCAlNjAsIGxhYmVsICUz NSwgIWRiZyAhMjA3MwotIAotIDsgPGxhYmVsPjozNTogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOyBwcmVkcyA9ICUzMAotQEAgLTEwMDYwLDcgKzEwMDYwLDcgQEAgZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGlu Z0kxM1ZhcnlpbmdXcml0ZXIKLSAgICUzNyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIq ICUxMSB0byBpOCosICFkYmcgITIwNzUKLSAgICUzOCA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdX cml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA3NQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5w MGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlMzcsIGk4KiBhbGlnbiAzMiAlMzgsIGk2NCA2NCwg aTEgZmFsc2UpLCAhZGJnICEyMDc1LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM5ID0gY2FsbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYx M1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0ICUzNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUx MSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAl MTIpLCAhZGJnICEyMDc2Ci0rICAlMzkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rp bmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTM2LCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICUxMSwg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlMTIpLCAhZGJnICEyMDc2Ci0gICBi ciBpMSAlMzksIGxhYmVsICU2MCwgbGFiZWwgJTQwLCAhZGJnICEyMDc3Ci0gCi0gOyA8bGFiZWw+ OjQwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTM1Ci1A QCAtMTAwNjgsNyArMTAwNjgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTQyID0g Yml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEzIHRvIGk4KiwgIWRiZyAhMjA3OQotICAg JTQzID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDc5 Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU0 MiwgaTgqIGFsaWduIDMyICU0MywgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITIwNzksICF0YmFh LnN0cnVjdCAhMTk3Ci0tICAlNDQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0 VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTQxLCAlY2xhc3MuVmFy eWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxNCksICFkYmcgITIwODAKLSsgICU0NCA9IGNh bGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0l4MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3Mu VmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBh bGlnbiAxICUxNCksICFkYmcgITIwODAKLSAgIGJyIGkxICU0NCwgbGFiZWwgJTYwLCBsYWJlbCAl NDUsICFkYmcgITIwODEKLSAKLSA7IDxsYWJlbD46NDU6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsgcHJlZHMgPSAlNDAKLUBAIC0xMDA3Niw3ICsxMDA3Niw3IEBAIGRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2Rp bmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlNDcgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVy KiAlMTUgdG8gaTgqLCAhZGJnICEyMDgzCi0gICAlNDggPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwODMKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHku cDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTQ3LCBpOCogYWxpZ24gMzIgJTQ4LCBpNjQgNjQs IGkxIGZhbHNlKSwgIWRiZyAhMjA4MywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0OSA9IGNhbGwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5 MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCAlNDYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAl MTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEg JTE2KSwgIWRiZyAhMjA4NAotKyAgJTQ5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29k aW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0NiwgJWNsYXNz LlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlMTUs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTE2KSwgIWRiZyAhMjA4NAotICAg YnIgaTEgJTQ5LCBsYWJlbCAlNjAsIGxhYmVsICU1MCwgIWRiZyAhMjA4NQotIAotIDsgPGxhYmVs Pjo1MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0NQot QEAgLTEwMDg0LDcgKzEwMDg0LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICU1MiA9 IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxNyB0byBpOCosICFkYmcgITIwODcKLSAg ICU1MyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA4 NwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAl NTIsIGk4KiBhbGlnbiAzMiAlNTMsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDg3LCAhdGJh YS5zdHJ1Y3QgITE5NwotLSAgJTU0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5n NFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1MSwgJWNsYXNzLlZh cnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUxNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlMTgpLCAhZGJnICEyMDg4Ci0rICAlNTQgPSBj YWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJZDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQgJTUxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNz LlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICUxNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikg YWxpZ24gMSAlMTgpLCAhZGJnICEyMDg4Ci0gICBiciBpMSAlNTQsIGxhYmVsICU2MCwgbGFiZWwg JTU1LCAhZGJnICEyMDg5Ci0gCi0gOyA8bGFiZWw+OjU1OiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7IHByZWRzID0gJTUwCi1AQCAtMTAwOTIsNyArMTAwOTIsNyBAQCBkZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29k aW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTU3ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRl ciogJTE5IHRvIGk4KiwgIWRiZyAhMjA5MQotICAgJTU4ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDkxCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5 LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU1NywgaTgqIGFsaWduIDMyICU1OCwgaTY0IDY0 LCBpMSBmYWxzZSksICFkYmcgITIwOTEsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNTkgPSBjYWxs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ UHYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQw X1QxXyhpOCBzaWduZXh0ICU1NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMy ICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24g MSAlMjApLCAhZGJnICEyMDkyCi0rICAlNTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJOU18xNkVu Y29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1NiwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAl MTksICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTIwKSwgIWRiZyAhMjA5Mgot ICAgYnIgbGFiZWwgJTYwLCAhZGJnICEyMDg5Ci0gCi0gOyA8bGFiZWw+OjYwOiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTU1LCAlNTAsICU0NSwgJTQwLCAl MzUsICUzMCwgJTI1LCAlMwotQEAgLTEwMTAxLDcgKzEwMTAxLDcgQEAgZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1Zhcnlp bmdXcml0ZXIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhp bnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGlu ZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlp bmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIwOTQgewotK2RlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWIxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNz LlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGln biAxKSAjMjUgY29tZGF0ICFkYmcgITIwOTQgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEK LSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGln biAxLCAhdGJhYSAhMTkzCi1AQCAtMTAxMjcsNyArMTAxMjcsNyBAQCBkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0li MTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGlu dCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5n NFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEwMyB7Ci0rZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJaTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2Rp bmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3Mu VmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWdu IDEpICMyNSBjb21kYXQgIWRiZyAhMjEwMyB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQot ICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWdu IDEsICF0YmFhICExOTMKLUBAIC0xMDE1Myw3ICsxMDE1Myw3IEBAIGRlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkx M1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50 IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0 VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5 aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTEyIHsKLStkZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGlu Z0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5W YXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5 aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24g MSkgIzI1IGNvbWRhdCAhZGJnICEyMTEyIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0g ICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24g MSwgIXRiYWEgITE5MwotQEAgLTEwMTc5LDcgKzEwMTc5LDcgQEAgZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEz VmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQg bm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRW YXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdX cml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlp bmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMjEgewotK2RlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZh cnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlp bmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAx KSAjMjUgY29tZGF0ICFkYmcgITIxMjEgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAg ICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAx LCAhdGJhYSAhMTkzCi1AQCAtMTAyMDUsNyArMTAyMDUsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNW YXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBu b3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZh cnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dy aXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEzMCB7Ci0rZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJeDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFy eWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEp ICMyNSBjb21kYXQgIWRiZyAhMjEzMCB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAg JTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEs ICF0YmFhICExOTMKLUBAIC0xMDIzMSw3ICsxMDIzMSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1Zh cnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5v dW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFy eWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTM5IHsKLStkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0l5MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5 aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkg IzI1IGNvbWRhdCAhZGJnICEyMTM5IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAl NSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwg IXRiYWEgITE5MwotQEAgLTEwMjU3LDcgKzEwMjU3LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFy eWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91 bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5 aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxNDggewotK2RlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SWQxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQw X1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlp bmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAj MjUgY29tZGF0ICFkYmcgITIxNDggewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1 ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAh dGJhYSAhMTkzCi1AQCAtMTAyODMsNyArMTAyODMsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5 aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vu d2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIx YXBwbHlJZlByb3BlckVuY29kaW5nSVB2MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5 aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxNTcgewotK2RlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SVB2MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5 aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkg IzI1IGNvbWRhdCAhZGJnICEyMTU3IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAl NSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwg IXRiYWEgITE5MwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3RlbXBsYXRlIGIvc3JjcGtncy9p c3BjL3RlbXBsYXRlCmluZGV4IDljM2FjYjQyYTljZi4uZjUwMmVhYjg3ZWE2IDEwMDY0NAotLS0g YS9zcmNwa2dzL2lzcGMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9pc3BjL3RlbXBsYXRlCkBAIC0x LDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpc3BjJwogcGtnbmFtZT1pc3BjCi12 ZXJzaW9uPTEuMTUuMAordmVyc2lvbj0xLjE3LjAKIHJldmlzaW9uPTIKIGFyY2hzPSJ4ODZfNjQq IgogYnVpbGRfc3R5bGU9Y21ha2UKLWNvbmZpZ3VyZV9hcmdzPSItRElTUENfTk9fRFVNUFM9T04g LURBUk1fRU5BQkxFRD1PRkYiCitjb25maWd1cmVfYXJncz0iLURJU1BDX05PX0RVTVBTPU9OIC1E QVJNX0VOQUJMRUQ9T0ZGIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIgogaG9zdG1ha2VkZXBl bmRzPSJjbGFuZyBjbGFuZy10b29scy1leHRyYSBweXRob24zIG00IGJpc29uIGZsZXggbGx2bSIK IG1ha2VkZXBlbmRzPSJuY3Vyc2VzLWRldmVsIG5jdXJzZXMtbGlidGluZm8tZGV2ZWwgemxpYi1k ZXZlbCIKIHNob3J0X2Rlc2M9IkNvbXBpbGVyIGZvciBoaWdoLXBlcmZvcm1hbmNlIFNJTUQgcHJv Z3JhbW1pbmcgb24gdGhlIENQVSIKQEAgLTEyLDcgKzEyLDcgQEAgbWFpbnRhaW5lcj0iQW5kcmVh IEJyYW5jYWxlb25pIDxhYmNAcG9tcGVsLm1lPiIKIGxpY2Vuc2U9IkJTRC0zLUNsYXVzZSIKIGhv bWVwYWdlPSJodHRwczovL2lzcGMuZ2l0aHViLmlvIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1 Yi5jb20vaXNwYy9pc3BjL2FyY2hpdmUvdiR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09MjY1 OGZmMDBkYzA0NWFjOWZjZWZiZjZiZDI2ZGZmYWY3MjNiMDU5YTk0MmEyN2RmOTFiYmI2MWJjNTAz YTI4NQorY2hlY2tzdW09MzdmYjEwNTVkNmM2YjIzMmUxMTJkOGQ1MDE0NWQ3MjY4MjRlZDRkOGRh OTNhNzM5NjMxNWRjZWJhNmM3NmU2Mgogbm9jcm9zcz15ZXMKIG5vcGllPXllcwogCgpGcm9tIGI4 NTllN2ViYjAzYjM5ZTIzOGFlNTJmODEwMzIyNDFlNmZjZDM5YzEgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVlaXJhPz0gPGFjZXJxdWVp cmEwMjFAZ21haWwuY29tPgpEYXRlOiBNb24sIDI4IEZlYiAyMDIyIDIxOjQ3OjI0ICswMDAwClN1 YmplY3Q6IFtQQVRDSCAxOC8yMF0gemlnOiB1cGRhdGUgdG8gMC45LjEuCgotLS0KIC4uLi8wMDAx LXN0ZC5idWlsZC1maXgtaGFuZGxpbmctb2YtRGNwdS5wYXRjaCB8IDQ4IC0tLS0tLS0tLS0tLS0t LS0tLS0KIHNyY3BrZ3MvemlnL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2 ICstLQogMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQog ZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvemlnL3BhdGNoZXMvMDAwMS1zdGQuYnVpbGQtZml4 LWhhbmRsaW5nLW9mLURjcHUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ppZy9wYXRjaGVz LzAwMDEtc3RkLmJ1aWxkLWZpeC1oYW5kbGluZy1vZi1EY3B1LnBhdGNoIGIvc3JjcGtncy96aWcv cGF0Y2hlcy8wMDAxLXN0ZC5idWlsZC1maXgtaGFuZGxpbmctb2YtRGNwdS5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEwMWYyNDQ1OWJiLi4wMDAwMDAwMDAwMDAKLS0tIGEv c3JjcGtncy96aWcvcGF0Y2hlcy8wMDAxLXN0ZC5idWlsZC1maXgtaGFuZGxpbmctb2YtRGNwdS5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gMWU4Y2RhY2U3YWQzMjRh NDIyMjhhZWI1Y2Q2ZWI4ZGQxNTQyOTQxMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206 IElzYWFjIEZyZXVuZCA8aWZyZXVuZEBpZnJldW5kLnh5ej4KLURhdGU6IFR1ZSwgMjEgU2VwIDIw MjEgMjE6MDY6MTAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gc3RkLmJ1aWxkOiBmaXggaGFuZGxp bmcgb2YgLURjcHUKLQotQ3VycmVudGx5IC1EY3B1IGlzIGNvbXBsZXRlbHkgaWdub3JlZCBpZiAt RHRhcmdldCBpc24ndCBwYXNzZWQgYXMgd2VsbC4KLUZ1cnRoZXIsIC1EY3B1PWJhc2VsaW5lIGlz IGlnbm9yZWQgZXZlbiBpZiAtRHRhcmdldD1uYXRpdmUgaXMgcGFzc2VkLgotCi1UaGlzIHBhdGNo IGZpeGVzIHRoZXNlIDIgaXNzdWVzLCBhbHdheXMgcmVzcGVjdGluZyB0aGUgLURjcHUgb3B0aW9u IGlmCi1wcmVzZW50LgotLS0tCi0gbGliL3N0ZC9idWlsZC56aWcgfCAxMyArKysrKysrLS0tLS0t Ci0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlm ZiAtLWdpdCBhL2xpYi9zdGQvYnVpbGQuemlnIGIvbGliL3N0ZC9idWlsZC56aWcKLWluZGV4IDli N2ViYjFmNC4uZTM5ODUyOWY5IDEwMDY0NAotLS0tIGEvbGliL3N0ZC9idWlsZC56aWcKLSsrKyBi L2xpYi9zdGQvYnVpbGQuemlnCi1AQCAtNjg1LDcgKzY4NSwxMSBAQCBwdWIgY29uc3QgQnVpbGRl ciA9IHN0cnVjdCB7Ci0gICAgICAgICApOwotICAgICAgICAgY29uc3QgbWNwdSA9IHNlbGYub3B0 aW9uKFtdY29uc3QgdTgsICJjcHUiLCAiVGFyZ2V0IENQVSIpOwotIAotLSAgICAgICAgY29uc3Qg dHJpcGxlID0gbWF5YmVfdHJpcGxlIG9yZWxzZSByZXR1cm4gYXJncy5kZWZhdWx0X3RhcmdldDsK LSsgICAgICAgIGlmIChtYXliZV90cmlwbGUgPT0gbnVsbCBhbmQgbWNwdSA9PSBudWxsKSB7Ci0r ICAgICAgICAgICAgcmV0dXJuIGFyZ3MuZGVmYXVsdF90YXJnZXQ7Ci0rICAgICAgICB9Ci0rCi0r ICAgICAgICBjb25zdCB0cmlwbGUgPSBtYXliZV90cmlwbGUgb3JlbHNlICJuYXRpdmUiOwotIAot ICAgICAgICAgdmFyIGRpYWdzOiBDcm9zc1RhcmdldC5QYXJzZU9wdGlvbnMuRGlhZ25vc3RpY3Mg PSAue307Ci0gICAgICAgICBjb25zdCBzZWxlY3RlZF90YXJnZXQgPSBDcm9zc1RhcmdldC5wYXJz ZSguewotQEAgLTI0NTEsMTEgKzI0NTUsOCBAQCBwdWIgY29uc3QgTGliRXhlT2JqU3RlcCA9IHN0 cnVjdCB7Ci0gCi0gICAgICAgICAgICAgaWYgKHBvcHVsYXRlZF9jcHVfZmVhdHVyZXMuZXFsKGNy b3NzLmNwdS5mZWF0dXJlcykpIHsKLSAgICAgICAgICAgICAgICAgLy8gVGhlIENQVSBuYW1lIGFs b25lIGlzIHN1ZmZpY2llbnQuCi0tICAgICAgICAgICAgICAgIC8vIElmIGl0IGlzIHRoZSBiYXNl bGluZSBDUFUsIG5vIGNvbW1hbmQgbGluZSBhcmdzIGFyZSByZXF1aXJlZC4KLS0gICAgICAgICAg ICAgICAgaWYgKGNyb3NzLmNwdS5tb2RlbCAhPSBzdGQuVGFyZ2V0LkNwdS5iYXNlbGluZShjcm9z cy5jcHUuYXJjaCkubW9kZWwpIHsKLS0gICAgICAgICAgICAgICAgICAgIHRyeSB6aWdfYXJncy5h cHBlbmQoIi1tY3B1Iik7Ci0tICAgICAgICAgICAgICAgICAgICB0cnkgemlnX2FyZ3MuYXBwZW5k KGNyb3NzLmNwdS5tb2RlbC5uYW1lKTsKLS0gICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAg ICAgICB0cnkgemlnX2FyZ3MuYXBwZW5kKCItbWNwdSIpOwotKyAgICAgICAgICAgICAgICB0cnkg emlnX2FyZ3MuYXBwZW5kKGNyb3NzLmNwdS5tb2RlbC5uYW1lKTsKLSAgICAgICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgICAgICB2YXIgbWNwdV9idWZmZXIgPSBzdGQuQXJyYXlMaXN0KHU4 KS5pbml0KGJ1aWxkZXIuYWxsb2NhdG9yKTsKLSAKLS0tIAotMi4zMy4xCi0KZGlmZiAtLWdpdCBh L3NyY3BrZ3MvemlnL3RlbXBsYXRlIGIvc3JjcGtncy96aWcvdGVtcGxhdGUKaW5kZXggNzI4YzVh NjRlOWRmLi4xMjdiYmUxYWNhZGYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvemlnL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvemlnL3RlbXBsYXRlCkBAIC0xLDE3ICsxLDE3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICd6aWcnCiBwa2duYW1lPXppZwotdmVyc2lvbj0wLjguMQordmVyc2lvbj0wLjkuMQog cmV2aXNpb249MgogYXJjaHM9Ing4Nl82NCogYWFyY2g2NCoiCiBidWlsZF9zdHlsZT1jbWFrZQog bWFrZV9jbWQ9bWFrZQotbWFrZWRlcGVuZHM9ImNsYW5nIGxsdm0xMiBsbGQtZGV2ZWwiCittYWtl ZGVwZW5kcz0iY2xhbmcgbGx2bTEzIGxsZC1kZXZlbCIKIHNob3J0X2Rlc2M9IlByb2dyYW1taW5n IGxhbmd1YWdlIGRlc2lnbmVkIGZvciByb2J1c3RuZXNzLCBvcHRpbWFsaXR5LCBhbmQgY2xhcml0 eSIKIG1haW50YWluZXI9IklzYWFjIEZyZXVuZCA8bWFpbEBpc2FhY2ZyZXVuZC5jb20+IgogbGlj ZW5zZT0iTUlUIgogaG9tZXBhZ2U9Imh0dHBzOi8vemlnbGFuZy5vcmciCiBkaXN0ZmlsZXM9Imh0 dHBzOi8vemlnbGFuZy5vcmcvZG93bmxvYWQvJHt2ZXJzaW9ufS96aWctJHt2ZXJzaW9ufS50YXIu eHoiCi1jaGVja3N1bT04YzQyOGUxNGEwYTg5Y2I3YTE1YTY3Njg0MjRhMzc0NDIyOTI4NThjZGI2 OTVlMmViNTAzZmEzYzdiZjQ3ZjFhCitjaGVja3N1bT0zOGNmNGU4NDQ4MWY1ZmFjYzc2NmJhNzI3 ODNlNzQ2MmUwOGQ2ZDI5YTVkNDdlM2I3NWM4ZWUzMTQyNDg1MjEwCiBub3BpZT15ZXMKIG5vY3Jv c3M9eWVzCiAKCkZyb20gYWMwODcwODNjNDkzNjM3ZTg3MTdmYzU5MTg4ZjdkZjdjYjQzMTRkYSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBDZXJx dWVpcmE/PSA8YWNlcnF1ZWlyYTAyMUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjggRmViIDIwMjIg MjE6NTI6MDcgKzAwMDAKU3ViamVjdDogW1BBVENIIDE5LzIwXSBiZWlnbmV0OiByZW1vdmUgcGFj a2FnZQoKLS0tCiBzcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9jbF91aW50LnBhdGNoICAgICAgICAg fCAgMjIgLQogLi4uNDE5YTAwMDhlMzhlZjJkOWQyNTVkOWU5Yzc0ZTlmYmEwODRiLnBhdGNoIHwg MTM0IC0tLQogc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTA2LnBhdGNoICAgICAgICAgIHwg IDMzIC0KIHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOC5wYXRjaCAgICAgICAgICB8ICA1 NiAtLQogc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTA5LnBhdGNoICAgICAgICAgIHwgMTEx IC0tLQogc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTEwLnBhdGNoICAgICAgICAgIHwgMzQ3 IC0tLS0tLS0KIHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMS5wYXRjaCAgICAgICAgICB8 IDkzNyAtLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMi5w YXRjaCAgICAgICAgICB8IDExNSAtLS0KIHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL211c2wucGF0 Y2ggICAgICAgICAgICB8ICAxMSAtCiBzcmNwa2dzL2JlaWduZXQvdGVtcGxhdGUgICAgICAgICAg ICAgICAgICAgICAgfCAgMjIgLQogc3JjcGtncy9iZWlnbmV0L3VwZGF0ZSAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxIC0KIHNyY3BrZ3MvcmVtb3ZlZC1wYWNrYWdlcy90ZW1wbGF0ZSAgICAg ICAgICAgICB8ICAgMSArCiAxMiBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMTc4OSBk ZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9j bF91aW50LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMv ZTFiMjQxOWEwMDA4ZTM4ZWYyZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wNi5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOC5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOS5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMC5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMS5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMi5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL211c2wucGF0Y2gKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvdGVtcGxhdGUKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2JlaWduZXQvdXBkYXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMv Y2xfdWludC5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2NsX3VpbnQucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2YmEwMGYwNGU5NS4uMDAwMDAwMDAwMDAwCi0t LSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2NsX3VpbnQucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwyMiArMCwwIEBACi0tLS0gYS9zcmMvY2xfYXBpX2tlcm5lbC5jCTIwMTctMDktMjIgMTA6 MDU6MjIuMDAwMDAwMDAwICswMjAwCi0rKysgYi9zcmMvY2xfYXBpX2tlcm5lbC5jCTIwMjAtMDMt MjQgMTg6Mjc6NDAuMTg2NDg1ODg3ICswMTAwCi1AQCAtMTUxLDcgKzE1MSw3IEBACi0gICAgICAg ICBmaXhlZF9sb2NhbF9zelswXSA9IDE2OwotICAgICAgICAgZml4ZWRfbG9jYWxfc3pbMV0gPSAx OwotICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICB1aW50IGosIG1heERpbVNpemUgPSA2NCAvKiBm cm9tIDY0PyAqLywgbWF4R3JvdXBTaXplID0gMjU2OyAvL01BWF9XT1JLX0dST1VQX1NJWkUgbWF5 IHRvbyBsYXJnZQotKyAgICAgICAgY2xfdWludCBqLCBtYXhEaW1TaXplID0gNjQgLyogZnJvbSA2 ND8gKi8sIG1heEdyb3VwU2l6ZSA9IDI1NjsgLy9NQVhfV09SS19HUk9VUF9TSVpFIG1heSB0b28g bGFyZ2UKLSAgICAgICAgIHNpemVfdCByZWFsR3JvdXBTaXplID0gMTsKLSAgICAgICAgIGZvciAo aSA9IDA7IGkgPCB3b3JrX2RpbTsgaSsrKSB7Ci0gICAgICAgICAgIGZvciAoaiA9IG1heERpbVNp emU7IGogPiAxOyBqLS0pIHsKLS0tLSBhL3NyYy9jbF9lbnF1ZXVlLmMJMjAxNy0wOS0yMiAxMDow NToyMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL3NyYy9jbF9lbnF1ZXVlLmMJMjAyMC0wMy0yNCAx ODozMDoxMi4wMzE0Nzk4MzMgKzAxMDAKLUBAIC00OTQsNyArNDk0LDcgQEAKLSBjbF9pbnQgY2xf ZW5xdWV1ZV9zdm1fZnJlZShlbnF1ZXVlX2RhdGEgKmRhdGEsIGNsX2ludCBzdGF0dXMpIHsKLSAg IGludCBpOwotICAgdm9pZCAqKnBvaW50ZXJzID0gZGF0YS0+cG9pbnRlcnM7Ci0tICB1aW50IG51 bV9zdm1fcHRycyA9IGRhdGEtPnNpemU7Ci0rICBjbF91aW50IG51bV9zdm1fcHRycyA9IGRhdGEt PnNpemU7Ci0gICBjbF9pbnQgZXJyID0gQ0xfU1VDQ0VTUzsKLSAKLSAgIGlmIChzdGF0dXMgIT0g Q0xfQ09NUExFVEUpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9lMWIyNDE5 YTAwMDhlMzhlZjJkOWQyNTVkOWU5Yzc0ZTlmYmEwODRiLnBhdGNoIGIvc3JjcGtncy9iZWlnbmV0 L3BhdGNoZXMvZTFiMjQxOWEwMDA4ZTM4ZWYyZDlkMjU1ZDllOWM3NGU5ZmJhMDg0Yi5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRlOWU2ZTJmMDkzLi4wMDAwMDAwMDAwMDAK LS0tIGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvZTFiMjQxOWEwMDA4ZTM4ZWYyZDlkMjU1ZDll OWM3NGU5ZmJhMDg0Yi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi1Gcm9t IGUxYjI0MTlhMDAwOGUzOGVmMmQ5ZDI1NWQ5ZTljNzRlOWZiYTA4NGIgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiAiUmViZWNjYSBOLiBQYWxtZXIiIDxyZWJlY2NhX3BhbG1lckB6b2hv LmNvbT4KLURhdGU6IFNhdCwgMjEgSnVsIDIwMTggMjA6MDU6NTQgKzAxMDAKLVN1YmplY3Q6IEFk ZCBwcmVsaW1pbmFyeSBMTFZNIDcgc3VwcG9ydAotCi1UaGlzIGlzIHByZWxpbWluYXJ5IGJlY2F1 c2UgTExWTSA3IGhhcyBub3QgYmVlbiByZWxlYXNlZCB5ZXQ6Ci1pdCB3YXMgdGVzdGVkIHdpdGgg dGhlIHNuYXBzaG90IGZyb20gRGViaWFuIGV4cGVyaW1lbnRhbCAoc3ZuMzM2ODk0KS4KLQotMS5D aGFuZ2UgbGlua2luZyBvcmRlciwgYXMgY2xhbmdDb2RlR2VuIG5vdyBsaW5rcyB0byBjbGFuZ0Zy b250ZW5kCi0yLlBhc3MgcmVmZXJlbmNlcyBub3QgcG9pbnRlcnMgdG8gV3JpdGVCaXRjb2RlVG9G aWxlIGFuZCBDbG9uZU1vZHVsZQotMy5BZGQgdGhlIGhlYWRlcnMgdGhhdCBMb29wU2ltcGxpZnlJ RCwgTENTU0FJRCBhbmQKLXNvbWUgY3JlYXRlKlBhc3MgaGF2ZSBtb3ZlZCB0bwotNC5EZWZpbmUg b3VyIERFQlVHIHdoZXRoZXIgb3Igbm90IHdlIGp1c3QgdW5kZWZpbmVkIExMVk0ncwotKHRoZWly cyBpcyBub3cgTExWTV9ERUJVRywgYnV0IHdlIG5ldmVyIGFjdHVhbGx5IHVzZSBpdCkKLQotU2ln bmVkLW9mZi1ieTogUmViZWNjYSBOLiBQYWxtZXIgPHJlYmVjY2FfcGFsbWVyQHpvaG8uY29tPgot UmV2aWV3ZWQtYnk6IFlhbmcgUm9uZyA8cm9uZy5yLnlhbmdAaW50ZWwuY29tPgotLS0tCi0gQ01h a2UvRmluZExMVk0uY21ha2UgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBiYWNrZW5kL3Ny Yy9iYWNrZW5kL2dlbl9wcm9ncmFtLmNwcCAgICAgIHwgOCArKysrKysrKwotIGJhY2tlbmQvc3Jj L2JhY2tlbmQvcHJvZ3JhbS5jcHAgICAgICAgICAgfCA0ICsrKysKLSBiYWNrZW5kL3NyYy9sbHZt L0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwIHwgMiArLQotIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9i aXRjb2RlX2xpbmsuY3BwICAgfCA0ICsrKysKLSBiYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVk ZXMuaHBwICAgICAgIHwgNCArKysrCi0gNiBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ01ha2UvRmluZExMVk0uY21ha2UgYi9D TWFrZS9GaW5kTExWTS5jbWFrZQotaW5kZXggNTQ1N2YyNC4uZjg4MjU4OSAxMDA2NDQKLS0tLSBh L0NNYWtlL0ZpbmRMTFZNLmNtYWtlCi0rKysgYi9DTWFrZS9GaW5kTExWTS5jbWFrZQotQEAgLTEx MywxMCArMTEzLDEwIEBAIG1hY3JvKGFkZF9vbmVfbGliIG5hbWUpCi0gZW5kbWFjcm8oKQotIAot ICNBc3N1bWUgY2xhbmcgbGliIHBhdGggc2FtZSBhcyBsbHZtIGxpYiBwYXRoCi0rYWRkX29uZV9s aWIoImNsYW5nQ29kZUdlbiIpCi0gYWRkX29uZV9saWIoImNsYW5nRnJvbnRlbmQiKQotIGFkZF9v bmVfbGliKCJjbGFuZ1NlcmlhbGl6YXRpb24iKQotIGFkZF9vbmVfbGliKCJjbGFuZ0RyaXZlciIp Ci0tYWRkX29uZV9saWIoImNsYW5nQ29kZUdlbiIpCi0gYWRkX29uZV9saWIoImNsYW5nU2VtYSIp Ci0gYWRkX29uZV9saWIoImNsYW5nU3RhdGljQW5hbHl6ZXJGcm9udGVuZCIpCi0gYWRkX29uZV9s aWIoImNsYW5nU3RhdGljQW5hbHl6ZXJDaGVja2VycyIpCi1kaWZmIC0tZ2l0IGEvYmFja2VuZC9z cmMvYmFja2VuZC9nZW5fcHJvZ3JhbS5jcHAgYi9iYWNrZW5kL3NyYy9iYWNrZW5kL2dlbl9wcm9n cmFtLmNwcAotaW5kZXggMjc0Yzk5Yy4uNDE1OTIzNCAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3Jj L2JhY2tlbmQvZ2VuX3Byb2dyYW0uY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9iYWNrZW5kL2dlbl9w cm9ncmFtLmNwcAotQEAgLTQ1NCw3ICs0NTQsMTEgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gI2lmZGVm IEdCRV9DT01QSUxFUl9BVkFJTEFCTEUKLSAgICAgICBzdGQ6OnN0cmluZyBzdHI7Ci0gICAgICAg bGx2bTo6cmF3X3N0cmluZ19vc3RyZWFtIE9TKHN0cik7Ci0rI2lmIExMVk1fVkVSU0lPTl9NQUpP UiA+PSA3Ci0rICAgICAgbGx2bTo6V3JpdGVCaXRjb2RlVG9GaWxlKCooKGxsdm06Ok1vZHVsZSop cHJvZy0+bW9kdWxlKSwgT1MpOwotKyNlbHNlCi0gICAgICAgbGx2bTo6V3JpdGVCaXRjb2RlVG9G aWxlKChsbHZtOjpNb2R1bGUqKXByb2ctPm1vZHVsZSwgT1MpOwotKyNlbmRpZgotICAgICAgIHN0 ZDo6c3RyaW5nJiBiaW5fc3RyID0gT1Muc3RyKCk7Ci0gICAgICAgaW50IGxsc3ogPSBiaW5fc3Ry LnNpemUoKTsKLSAgICAgICAqYmluYXJ5ID0gKGNoYXIgKiltYWxsb2Moc2l6ZW9mKGNoYXIpICog KGxsc3orMSkgKTsKLUBAIC01NDUsNyArNTQ5LDExIEBAIG5hbWVzcGFjZSBnYmUgewotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtb2RSZWYpOwotICAgICAgICAgc3JjID0g bGx2bTo6dW53cmFwKG1vZFJlZik7Ci0gICAgICAgfQotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1Ig Pj0gNwotKyAgICAgIGxsdm06Ok1vZHVsZSogY2xvbmUgPSBsbHZtOjpDbG9uZU1vZHVsZSgqc3Jj KS5yZWxlYXNlKCk7Ci0rI2Vsc2UKLSAgICAgICBsbHZtOjpNb2R1bGUqIGNsb25lID0gbGx2bTo6 Q2xvbmVNb2R1bGUoc3JjKS5yZWxlYXNlKCk7Ci0rI2VuZGlmCi0gICAgICAgaWYgKExMVk1MaW5r TW9kdWxlczIod3JhcChkc3QpLCB3cmFwKGNsb25lKSkpIHsKLSAjZWxpZiBMTFZNX1ZFUlNJT05f TUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzNwotICAgICAgIGlmIChMTFZNTGlu a01vZHVsZXMod3JhcChkc3QpLCB3cmFwKHNyYyksIExMVk1MaW5rZXJQcmVzZXJ2ZVNvdXJjZV9S ZW1vdmVkLCAmZXJyTXNnKSkgewotZGlmZiAtLWdpdCBhL2JhY2tlbmQvc3JjL2JhY2tlbmQvcHJv Z3JhbS5jcHAgYi9iYWNrZW5kL3NyYy9iYWNrZW5kL3Byb2dyYW0uY3BwCi1pbmRleCBjMzdjNTk1 Li5iMzZmN2I0IDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvYmFja2VuZC9wcm9ncmFtLmNwcAot KysrIGIvYmFja2VuZC9zcmMvYmFja2VuZC9wcm9ncmFtLmNwcAotQEAgLTc5NCw3ICs3OTQsMTEg QEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAgICAgbGx2bTo6cmF3X2ZkX29zdHJlYW0gb3N0cmVhbSAo ZHVtcFNQSVJCaW5hcnlOYW1lLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZXJyLCBsbHZtOjpzeXM6OmZzOjpGX05vbmUpOwotICAgICAgIGlmICghZXJyKQot KyNpZiBMTFZNX1ZFUlNJT05fTUFKT1I8NwotICAgICAgICAgbGx2bTo6V3JpdGVCaXRjb2RlVG9G aWxlKCpvdXRfbW9kdWxlLCBvc3RyZWFtKTsKLSsjZWxzZQotKyAgICAgICAgbGx2bTo6V3JpdGVC aXRjb2RlVG9GaWxlKCoqb3V0X21vZHVsZSwgb3N0cmVhbSk7Ci0rI2VuZGlmCi0gICAgIH0KLSAj ZW5kaWYKLSAgICAgcmV0dXJuIHRydWU7Ci1kaWZmIC0tZ2l0IGEvYmFja2VuZC9zcmMvbGx2bS9F eHBhbmRMYXJnZUludGVnZXJzLmNwcCBiL2JhY2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJbnRl Z2Vycy5jcHAKLWluZGV4IDg1MTVkYzEuLjRhZWM0NGUgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3Ny Yy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL0V4 cGFuZExhcmdlSW50ZWdlcnMuY3BwCi1AQCAtOTksOCArOTksOCBAQCB1c2luZyBuYW1lc3BhY2Ug bGx2bTsKLSAKLSAjaWZkZWYgREVCVUcKLSAgICN1bmRlZiBERUJVRwotLSAgI2RlZmluZSBERUJV RyguLi4pCi0gI2VuZGlmCi0rI2RlZmluZSBERUJVRyguLi4pCi0gLy8gQnJlYWsgaW5zdHJ1Y3Rp b25zIHVwIGludG8gbm8gbGFyZ2VyIHRoYW4gNjQtYml0IGNodW5rcy4KLSBzdGF0aWMgY29uc3Qg dW5zaWduZWQga0NodW5rQml0cyA9IDY0OwotIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrQ2h1bmtC eXRlcyA9IGtDaHVua0JpdHMgLyBDSEFSX0JJVDsKLWRpZmYgLS1naXQgYS9iYWNrZW5kL3NyYy9s bHZtL2xsdm1fYml0Y29kZV9saW5rLmNwcCBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRjb2Rl X2xpbmsuY3BwCi1pbmRleCBlZjU2ZTRjLi40YzNlMjBlIDEwMDY0NAotLS0tIGEvYmFja2VuZC9z cmMvbGx2bS9sbHZtX2JpdGNvZGVfbGluay5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2 bV9iaXRjb2RlX2xpbmsuY3BwCi1AQCAtMzQwLDcgKzM0MCwxMSBAQCBuYW1lc3BhY2UgZ2JlCi0g ICAgIC8qIFdlIHVzZSBiZWlnbmV0J3MgYml0Y29kZSBhcyBkc3QgYmVjYXVzZSBpdCB3aWxsIGhh dmUgYSBsb3Qgb2YKLSAgICAgICAgbGF6eSBmdW5jdGlvbnMgd2hpY2ggd2lsbCBub3QgYmUgbG9h ZGVkLiAqLwotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5P UiA+PSAzOQotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPj0gNwotKyAgICBsbHZtOjpNb2R1bGUg KiBsaW5rZWRfbW9kdWxlID0gbGx2bTo6Q2xvbmVNb2R1bGUoKihsbHZtOjpNb2R1bGUqKW1vZCku cmVsZWFzZSgpOwotKyNlbHNlCi0gICAgIGxsdm06Ok1vZHVsZSAqIGxpbmtlZF9tb2R1bGUgPSBs bHZtOjpDbG9uZU1vZHVsZSgobGx2bTo6TW9kdWxlKiltb2QpLnJlbGVhc2UoKTsKLSsjZW5kaWYK LSAgICAgaWYoTExWTUxpbmtNb2R1bGVzMih3cmFwKGNsb25lZExpYiksIHdyYXAobGlua2VkX21v ZHVsZSkpKSB7Ci0gI2Vsc2UKLSAgICAgY2hhciogZXJyb3JNc2c7Ci1kaWZmIC0tZ2l0IGEvYmFj a2VuZC9zcmMvbGx2bS9sbHZtX2luY2x1ZGVzLmhwcCBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9p bmNsdWRlcy5ocHAKLWluZGV4IDE4NDU1M2EuLmZmY2NmMDIgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5k L3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1f aW5jbHVkZXMuaHBwCi1AQCAtODksNiArODksMTAgQEAKLSAjaW5jbHVkZSAibGx2bS9Db2RlR2Vu L0ludHJpbnNpY0xvd2VyaW5nLmgiCi0gCi0gI2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9TY2Fs YXIuaCIKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SID49IDcKLSsjaW5jbHVkZSAibGx2bS9UcmFu c2Zvcm1zL1V0aWxzLmgiCi0rI2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9JbnN0Q29tYmluZS9J bnN0Q29tYmluZS5oIgotKyNlbmRpZgotICNpbmNsdWRlICJsbHZtL01DL01DQXNtSW5mby5oIgot ICNpbmNsdWRlICJsbHZtL01DL01DQ29udGV4dC5oIgotICNpbmNsdWRlICJsbHZtL01DL01DSW5z dHJJbmZvLmgiCi0tLSAKLWNnaXQgdjEuMQotCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQv cGF0Y2hlcy9sbHZtMDYucGF0Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDYucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzODllNjZjODJkZi4uMDAwMDAwMDAw MDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wNi5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDMzICswLDAgQEAKLVNvdXJjZTogQXJjaCBMaW51eAotVXBzdHJlYW06IHVua25v d24KLVJlYXNvbjogZml4ZXMgbGx2bTYgY29tcGlsYXRpb24KLQotLS0tIGEvYmFja2VuZC9zcmMv bGx2bS9sbHZtX3RvX2dlbi5jcHAJMjAxNy0xMC0yNCAwOTowNDo0OC4wMDAwMDAwMDAgKzAzMDAK LSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV90b19nZW4uY3BwCTIwMTgtMDMtMTYgMTY6MDg6 NTQuNjY5OTYzODI0ICswMjAwCi1AQCAtMzIyLDcgKzMyMiwxMSBAQCBuYW1lc3BhY2UgZ2JlCi0g ICAgIERhdGFMYXlvdXQgREwoJm1vZCk7Ci0gICAgIAotICAgICBnYmVEaWFnbm9zdGljQ29udGV4 dCBkYzsKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SID49IDYKLSsgICAgbW9kLmdldENvbnRleHQo KS5zZXREaWFnbm9zdGljSGFuZGxlckNhbGxCYWNrKCZnYmVEaWFnbm9zdGljSGFuZGxlciwmZGMp OwotKyNlbHNlCi0gICAgIG1vZC5nZXRDb250ZXh0KCkuc2V0RGlhZ25vc3RpY0hhbmRsZXIoJmdi ZURpYWdub3N0aWNIYW5kbGVyLCZkYyk7Ci0rI2VuZGlmCi0gCi0gI2lmIExMVk1fVkVSU0lPTl9N QUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDM3Ci0gICAgIG1vZC5zZXREYXRhTGF5 b3V0KERMKTsKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV91bnJvbGwuY3BwCTIwMTctMTAt MjQgMDk6MDQ6NDguMDAwMDAwMDAwICswMzAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1f dW5yb2xsLmNwcAkyMDE4LTAzLTE2IDE2OjA5OjQ3LjczNjQwMzU1NyArMDIwMAotQEAgLTIwNSw3 ICsyMDUsOSBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAgICAgICAgaWYgKHBhcmVudFRyaXBDb3Vu dCAhPSAwICYmIGN1cnJUcmlwQ291bnQgKiBwYXJlbnRUcmlwQ291bnQgPiAzMikgewotICAgICAg ICAgICAgIC8vRG9uJ3QgY2hhbmdlIHRoZSB1bnJvbGxJRCBpZiBkb2Vzbid0IGZvcmNlIHVucm9s bC4KLSAgICAgICAgICAgICAvL3NldFVucm9sbElEKHBhcmVudEwsIGZhbHNlKTsKLS0jaWYgTExW TV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzgKLSsjaWYgTExW TV9WRVJTSU9OX01BSk9SID49IDYKLSsgICAgICAgICAgICBsb29wSW5mby5lcmFzZShwYXJlbnRM KTsKLSsjZWxpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+ PSAzOAotICAgICAgICAgICAgIGxvb3BJbmZvLm1hcmtBc1JlbW92ZWQocGFyZW50TCk7Ci0gI2Vs c2UKLSAgICAgICAgICAgICBMUE0uZGVsZXRlTG9vcEZyb21RdWV1ZShwYXJlbnRMKTsKLU9ubHkg aW4gQmVpZ25ldC0xLjMuMi1Tb3VyY2U6IGJ1aWxkCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmVp Z25ldC9wYXRjaGVzL2xsdm0wOC5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0w OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBjNWU3YTdjNGY3Li4wMDAw MDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTA4LnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSA3NWMxNTI1OTlhN2MxNzM5ZTZkYWRjZGI5 YjM3N2FjZjdlNDRkOWNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIEJlaWNo IDxqYmVpY2hARnJlZUJTRC5vcmc+Ci1EYXRlOiBXZWQsIDMwIEphbiAyMDE5IDEyOjQyOjM0ICsw MDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxhbmcvYmVpZ25ldDogdW5icmVhayB3aXRoIGxsdm04MAot Ci1SZWdyZXNzZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2NvbW1p dC83MjFkOTU3MTNhOWUKLQotdW5hYmxlIHRvIGxvYWQgL3Vzci9sb2NhbC9saWIvYmVpZ25ldC8v bGliZ2JlaW50ZXJwLnNvIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGRyaXZlciwgcGxlYXNlIGNoZWNr IQotbGQtZWxmLnNvLjE6IC91c3IvbG9jYWwvbGliL2JlaWduZXQvL2xpYmdiZWludGVycC5zbzog VW5kZWZpbmVkIHN5bWJvbCAiX1pONGxsdm0yNERpc2FibGVBQklCcmVha2luZ0NoZWNrc0UiCi0K LVJlZ3Jlc3NlZCBieSBodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZtLXByb2plY3QvY29tbWl0 LzRhMmQ1OGUxNmFjYwotCi1iYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuY3BwOjMw NzY6NTogZXJyb3I6Ci0gICAgICB1bmtub3duIHR5cGUgbmFtZSAnVGVybWluYXRvckluc3QnCi0g ICAgVGVybWluYXRvckluc3QgKnRlcm0gPSBiYi0+Z2V0VGVybWluYXRvcigpOwotICAgIF4KLWJh Y2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHA6MzA4Mzo1OiBlcnJvcjoKLSAgICAg IHVua25vd24gdHlwZSBuYW1lICdUZXJtaW5hdG9ySW5zdCcKLSAgICBUZXJtaW5hdG9ySW5zdCAq dGVybSA9IGJiLT5nZXRUZXJtaW5hdG9yKCk7Ci0gICAgXgotCi0tLS0gYS9iYWNrZW5kL3NyYy9D TWFrZUxpc3RzLnR4dAkyMDE3LTA5LTIyIDA4OjA1OjIyIFVUQwotKysrIGIvYmFja2VuZC9zcmMv Q01ha2VMaXN0cy50eHQKLUBAIC0xNjgsNiArMTY4LDcgQEAgYWRkX2RlcGVuZGVuY2llcyhnYmUg YmVpZ25ldF9iaXRjb2RlKQotIGVuZGlmIChOT1QgKFVTRV9TVEFOREFMT05FX0dCRV9DT01QSUxF UiBTVFJFUVVBTCAidHJ1ZSIpKQotIAotIGFkZF9saWJyYXJ5KGdiZWludGVycCBTSEFSRUQgZ2Jl X2Jpbl9pbnRlcnByZXRlci5jcHApCi0rdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGdiZWludGVycCAk e0xMVk1fTU9EVUxFX0xJQlN9KQotIAotIGlmIChMTFZNX1ZFUlNJT05fTk9ET1QgVkVSU0lPTl9F UVVBTCAzNCkKLSAgIGZpbmRfbGlicmFyeShURVJNSU5GTyBOQU1FUyB0aW5mbyBuY3Vyc2VzKQot LS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAkyMDE3LTEwLTI0IDA2 OjA0OjQ4IFVUQwotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAot QEAgLTMwNzMsMTQgKzMwNzMsMjIgQEAgbmFtZXNwYWNlIGdiZQotIAotIAotICAgc3RhdGljIHVu c2lnbmVkIGdldENoaWxkTm8oQmFzaWNCbG9jayAqYmIpIHsKLSsjaWYgTExWTV9WRVJTSU9OX01B Sk9SIDwgOAotICAgICBUZXJtaW5hdG9ySW5zdCAqdGVybSA9IGJiLT5nZXRUZXJtaW5hdG9yKCk7 Ci0rI2Vsc2UKLSsgICAgSW5zdHJ1Y3Rpb24gKnRlcm0gPSBiYi0+Z2V0VGVybWluYXRvcigpOwot KyNlbmRpZgotICAgICByZXR1cm4gdGVybS0+Z2V0TnVtU3VjY2Vzc29ycygpOwotICAgfQotIAot ICAgLy8gcmV0dXJuIE5VTEwgaWYgaW5kZXggb3V0LXJhbmdlIG9mIGNoaWxkcmVuIG51bWJlcgot ICAgc3RhdGljIEJhc2ljQmxvY2sgKmdldENoaWxkUG9zc2libGUoQmFzaWNCbG9jayAqYmIsIHVu c2lnbmVkIGluZGV4KSB7Ci0gCi0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA8IDgKLSAgICAgVGVy bWluYXRvckluc3QgKnRlcm0gPSBiYi0+Z2V0VGVybWluYXRvcigpOwotKyNlbHNlCi0rICAgIElu c3RydWN0aW9uICp0ZXJtID0gYmItPmdldFRlcm1pbmF0b3IoKTsKLSsjZW5kaWYKLSAgICAgdW5z aWduZWQgY2hpbGRObyA9IHRlcm0tPmdldE51bVN1Y2Nlc3NvcnMoKTsKLSAgICAgQmFzaWNCbG9j ayAqY2hpbGQgPSBOVUxMOwotICAgICBpZihpbmRleCA8IGNoaWxkTm8pIHsKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOS5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25ldC9w YXRjaGVzL2xsdm0wOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNhZWNl YWJiNmRkLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTA5 LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLVNvdXJjZTogRnJlZUJTRCAr IHE2NgotCi1Nb3N0bHkgRnJlZUJTRCBvdGhlciB0aGFuIEZpbmRMTFZNLmNtYWtlIGNoYW5nZXMu Ci1MaW5raW5nIGFnYWluc3QgY2xhbmctY3BwIGRvZXMgbm90IHdvcmsgZm9yIHVzLgotCi0tLS0g YS9DTWFrZS9GaW5kTExWTS5jbWFrZQotKysrIGIvQ01ha2UvRmluZExMVk0uY21ha2UKLUBAIC0x NDAsNiArMTQwLDcgQEAgYWRkX29uZV9saWIoImNsYW5nU3RhdGljQW5hbHl6ZXJDb3JlIikKLSBh ZGRfb25lX2xpYigiY2xhbmdBbmFseXNpcyIpCi0gYWRkX29uZV9saWIoImNsYW5nRWRpdCIpCi0g YWRkX29uZV9saWIoImNsYW5nQVNUIikKLSthZGRfb25lX2xpYigiY2xhbmdBU1RNYXRjaGVycyIp Ci0gYWRkX29uZV9saWIoImNsYW5nUGFyc2UiKQotIGFkZF9vbmVfbGliKCJjbGFuZ1NlbWEiKQot IGFkZF9vbmVfbGliKCJjbGFuZ0xleCIpCi0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW50 cmluc2ljX2xvd2VyaW5nLmNwcAkyMDE3LTEwLTI0IDA2OjA0OjQ4IFVUQwotKysrIGIvYmFja2Vu ZC9zcmMvbGx2bS9sbHZtX2ludHJpbnNpY19sb3dlcmluZy5jcHAKLUBAIC03Nyw3ICs3NywxMSBA QCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAgICAgIHN0ZDo6dmVjdG9yPFR5cGUgKj4gUGFyYW1UeXM7 Ci0gICAgICAgICBmb3IgKFZhbHVlKiogSSA9IEFyZ0JlZ2luOyBJICE9IEFyZ0VuZDsgKytJKQot ICAgICAgICAgICBQYXJhbVR5cy5wdXNoX2JhY2soKCpJKS0+Z2V0VHlwZSgpKTsKLSsjaWYgTExW TV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gOTAKLSsgICAgICAg IEZ1bmN0aW9uQ2FsbGVlIEZDYWNoZSA9IE0tPmdldE9ySW5zZXJ0RnVuY3Rpb24oTmV3Rm4sCi0r I2Vsc2UKLSAgICAgICAgIENvbnN0YW50KiBGQ2FjaGUgPSBNLT5nZXRPckluc2VydEZ1bmN0aW9u KE5ld0ZuLAotKyNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBGdW5jdGlvblR5cGU6OmdldChSZXRUeSwgUGFyYW1UeXMsIGZhbHNlKSk7Ci0gCi0gICAgICAg ICBJUkJ1aWxkZXI8PiBCdWlsZGVyKENJLT5nZXRQYXJlbnQoKSwgQmFzaWNCbG9jazo6aXRlcmF0 b3IoQ0kpKTsKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zYW1wbGVyX2ZpeC5jcHAJMjAx Ny0xMC0yNCAwNjowNDo0OCBVVEMKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zYW1wbGVy X2ZpeC5jcHAKLUBAIC04Miw3ICs4MiwxMSBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAjaWYgTExWTV9W RVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gNDAKLSAgICAgICAgICAg TW9kdWxlICpNID0gSS0+Z2V0UGFyZW50KCktPmdldFBhcmVudCgpLT5nZXRQYXJlbnQoKTsKLSAj aWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gNTAKLSsj aWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gOTAKLSsg ICAgICAgICAgRnVuY3Rpb25DYWxsZWUgc2FtcGxlckN2dCA9IE0tPmdldE9ySW5zZXJ0RnVuY3Rp b24oIl9fZ2VuX29jbF9zYW1wbGVyX3RvX2ludCIsIGkzMlR5LCBJLT5nZXRPcGVyYW5kKDApLT5n ZXRUeXBlKCkpOwotKyNlbHNlCi0gICAgICAgICAgIFZhbHVlKiBzYW1wbGVyQ3Z0ID0gTS0+Z2V0 T3JJbnNlcnRGdW5jdGlvbigiX19nZW5fb2NsX3NhbXBsZXJfdG9faW50IiwgaTMyVHksIEktPmdl dE9wZXJhbmQoMCktPmdldFR5cGUoKSk7Ci0rI2VuZGlmCi0gI2Vsc2UKLSAgICAgICAgICAgVmFs dWUqIHNhbXBsZXJDdnQgPSBNLT5nZXRPckluc2VydEZ1bmN0aW9uKCJfX2dlbl9vY2xfc2FtcGxl cl90b19pbnQiLCBpMzJUeSwgSS0+Z2V0T3BlcmFuZCgwKS0+Z2V0VHlwZSgpLCBudWxscHRyKTsK LSAjZW5kaWYKLUBAIC0xMjQsNyArMTI4LDExIEBAIG5hbWVzcGFjZSBnYmUgewotICNpZiBMTFZN X1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA0MAotICAgICAgICAg ICBNb2R1bGUgKk0gPSBJLT5nZXRQYXJlbnQoKS0+Z2V0UGFyZW50KCktPmdldFBhcmVudCgpOwot ICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA1MAot KyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA5MAot KyAgICAgICAgICBGdW5jdGlvbkNhbGxlZSBzYW1wbGVyQ3Z0ID0gTS0+Z2V0T3JJbnNlcnRGdW5j dGlvbigiX19nZW5fb2NsX3NhbXBsZXJfdG9faW50IiwgaTMyVHksIEktPmdldE9wZXJhbmQoMCkt PmdldFR5cGUoKSk7Ci0rI2Vsc2UKLSAgICAgICAgICAgVmFsdWUqIHNhbXBsZXJDdnQgPSBNLT5n ZXRPckluc2VydEZ1bmN0aW9uKCJfX2dlbl9vY2xfc2FtcGxlcl90b19pbnQiLCBpMzJUeSwgSS0+ Z2V0T3BlcmFuZCgwKS0+Z2V0VHlwZSgpKTsKLSsjZW5kaWYKLSAjZWxzZQotICAgICAgICAgICBW YWx1ZSogc2FtcGxlckN2dCA9IE0tPmdldE9ySW5zZXJ0RnVuY3Rpb24oIl9fZ2VuX29jbF9zYW1w bGVyX3RvX2ludCIsIGkzMlR5LCBJLT5nZXRPcGVyYW5kKDApLT5nZXRUeXBlKCksIG51bGxwdHIp OwotICNlbmRpZgotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Byb2ZpbGluZy5jcHAJMjAx Ny0xMC0yNCAwNjowNDo0OCBVVEMKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcm9maWxp bmcuY3BwCi1AQCAtMTYzLDEwICsxNjMsMTggQEAgbmFtZXNwYWNlIGdiZQotICAgICAgIC8vIF9f Z2VuX29jbF9zdG9yZV90aW1lc3RhbXAoaW50IG50aCwgaW50IHR5cGUpOwotICAgICAgIFZhbHVl ICpBcmdzWzJdID0ge0NvbnN0YW50SW50OjpnZXQoaW50VHksIHBvaW50TnVtKyspLCBDb25zdGFu dEludDo6Z2V0KGludFR5LCBwcm9maWxpbmdUeXBlKX07Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpP UiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDUwCi0rI2lmIExMVk1fVkVSU0lPTl9NQUpP UiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDkwCi0rICAgICAgYnVpbGRlci0+Q3JlYXRl Q2FsbChtb2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24oCi0rI2Vsc2UKLSAgICAgICBidWlsZGVy LT5DcmVhdGVDYWxsKGNhc3Q8bGx2bTo6RnVuY3Rpb24+KG1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5j dGlvbigKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICJfX2dlbl9vY2xfY2FsY190aW1lc3RhbXAi LCBUeXBlOjpnZXRWb2lkVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpLAotICAgICAgICAgICAgICAg SW50ZWdlclR5cGU6OmdldEludDMyVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpLAotKyNpZiBMTFZN X1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA5MAotKyAgICAgICAg ICAgICAgSW50ZWdlclR5cGU6OmdldEludDMyVHkobW9kdWxlLT5nZXRDb250ZXh0KCkpKSwKLSsj ZWxzZQotICAgICAgICAgICAgICAgSW50ZWdlclR5cGU6OmdldEludDMyVHkobW9kdWxlLT5nZXRD b250ZXh0KCkpKSksCi0rI2VuZGlmCi0gICAgICAgICAgICAgICBBcnJheVJlZjxWYWx1ZSo+KEFy Z3MpKTsKLSAjZWxzZQotICAgICAgIGJ1aWxkZXItPkNyZWF0ZUNhbGwoY2FzdDxsbHZtOjpGdW5j dGlvbj4obW9kdWxlLT5nZXRPckluc2VydEZ1bmN0aW9uKAotQEAgLTE4NSwxMCArMTkzLDE4IEBA IG5hbWVzcGFjZSBnYmUKLSAgICAgVmFsdWUgKkFyZ3MyWzJdID0ge3Byb2ZpbGluZ0J1ZiwgQ29u c3RhbnRJbnQ6OmdldChpbnRUeSwgcHJvZmlsaW5nVHlwZSl9OwotIAotICNpZiBMTFZNX1ZFUlNJ T05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA1MAotKyNpZiBMTFZNX1ZFUlNJ T05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA5MAotKyAgICBidWlsZGVyLT5D cmVhdGVDYWxsKG1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLSsjZWxzZQotICAgICBidWls ZGVyLT5DcmVhdGVDYWxsKGNhc3Q8bGx2bTo6RnVuY3Rpb24+KG1vZHVsZS0+Z2V0T3JJbnNlcnRG dW5jdGlvbigKLSsjZW5kaWYKLSAgICAgICAgICAgICAiX19nZW5fb2NsX3N0b3JlX3Byb2ZpbGlu ZyIsIFR5cGU6OmdldFZvaWRUeShtb2R1bGUtPmdldENvbnRleHQoKSksCi0gICAgICAgICAgICAg cHRyVHksCi0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9S ID49IDkwCi0rICAgICAgICAgICAgSW50ZWdlclR5cGU6OmdldEludDMyVHkobW9kdWxlLT5nZXRD b250ZXh0KCkpKSwKLSsjZWxzZQotICAgICAgICAgICAgIEludGVnZXJUeXBlOjpnZXRJbnQzMlR5 KG1vZHVsZS0+Z2V0Q29udGV4dCgpKSkpLAotKyNlbmRpZgotICAgICAgICAgICAgIEFycmF5UmVm PFZhbHVlKj4oQXJnczIpKTsKLSAjZWxzZQotICAgICBidWlsZGVyLT5DcmVhdGVDYWxsKGNhc3Q8 bGx2bTo6RnVuY3Rpb24+KG1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLS0tLSBhL2JhY2tl bmQvc3JjL2xsdm0vbGx2bV9kZXZpY2VfZW5xdWV1ZS5jcHAJMjAxNy0xMC0yNCAwNjowNDo0OCBV VEMKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9kZXZpY2VfZW5xdWV1ZS5jcHAKLUBAIC0z OTgsOCArMzk4LDEzIEBAIG5hbWVzcGFjZSBnYmUgewotICAgICAgICAgICAgICAgc3RkOjp2ZWN0 b3I8VHlwZSAqPiBQYXJhbVR5czsKLSAgICAgICAgICAgICAgIGZvciAoVmFsdWUqKiBpdGVyID0g YXJncy5iZWdpbigpOyBpdGVyICE9IGFyZ3MuZW5kKCk7ICsraXRlcikKLSAgICAgICAgICAgICAg ICAgUGFyYW1UeXMucHVzaF9iYWNrKCgqaXRlciktPmdldFR5cGUoKSk7Ci0rI2lmIExMVk1fVkVS U0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDkwCi0rICAgICAgICAgICAg ICBDYWxsSW5zdCogbmV3Q0kgPSBidWlsZGVyLkNyZWF0ZUNhbGwobW9kLT5nZXRPckluc2VydEZ1 bmN0aW9uKAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2dlbl9lbnF1ZXVlX2tl cm5lbF9zbG0iLCBGdW5jdGlvblR5cGU6OmdldChpbnRUeSwgUGFyYW1UeXMsIGZhbHNlKSksIGFy Z3MpOwotKyNlbHNlCi0gICAgICAgICAgICAgICBDYWxsSW5zdCogbmV3Q0kgPSBidWlsZGVyLkNy ZWF0ZUNhbGwoY2FzdDxsbHZtOjpGdW5jdGlvbj4obW9kLT5nZXRPckluc2VydEZ1bmN0aW9uKAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2dlbl9lbnF1ZXVlX2tlcm5lbF9zbG0i LCBGdW5jdGlvblR5cGU6OmdldChpbnRUeSwgUGFyYW1UeXMsIGZhbHNlKSkpLCBhcmdzKTsKLSsj ZW5kaWYKLSAgICAgICAgICAgICAgIENJLT5yZXBsYWNlQWxsVXNlc1dpdGgobmV3Q0kpOwotICAg ICAgICAgICAgICAgZGVhZEluc25TZXQuaW5zZXJ0KENJKTsKLSAgICAgICAgICAgICB9CmRpZmYg LS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTAucGF0Y2ggYi9zcmNwa2dzL2Jl aWduZXQvcGF0Y2hlcy9sbHZtMTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDhhYWZlNDhhMjQwZC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVz L2xsdm0xMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0NyArMCwwIEBACi1kaWZmIC0tZ2l0 IENNYWtlL0ZpbmRMTFZNLmNtYWtlIENNYWtlL0ZpbmRMTFZNLmNtYWtlCi1pbmRleCAwYTU5ZTQ3 Li42ZTkwOTIzIDEwMDY0NAotLS0tIGEvQ01ha2UvRmluZExMVk0uY21ha2UKLSsrKyBiL0NNYWtl L0ZpbmRMTFZNLmNtYWtlCi1AQCAtMTA0LDI4ICsxMDQsMTYgQEAgc3RyaW5nKFJFR0VYIFJFUExB Q0UgIiAqXG4iICIiIExMVk1fU1lTVEVNX0xJQlMgJHtMTFZNX1NZU1RFTV9MSUJTX09SSUd9KQot IGVuZGlmIChMTFZNX1NZU1RFTV9MSUJTX09SSUcpCi0gZW5kaWYgKExMVk1fVkVSU0lPTl9OT0RP VCBWRVJTSU9OX0dSRUFURVIgMzQpCi0gCi0rI3NvbWV0aGluZyBoYXJtbGVzcyBiZWNhdXNlIHdo aXRlc3BhY2UgYXQgc3RhcnQgaXMgYW4gZXJyb3IKLStzZXQoQ0xBTkdfTElCUkFSSUVTICItbGRs IikKLSBtYWNybyhhZGRfb25lX2xpYiBuYW1lKQotICAgRklORF9MSUJSQVJZKENMQU5HX0xJQgot ICAgICBOQU1FUyAke25hbWV9Ci0gICAgIFBBVEhTICR7TExWTV9MSUJSQVJZX0RJUn0gTk9fREVG QVVMVF9QQVRIKQotLSAgc2V0KENMQU5HX0xJQlJBUklFUyAke0NMQU5HX0xJQlJBUklFU30gJHtD TEFOR19MSUJ9KQotKyAgc2V0KENMQU5HX0xJQlJBUklFUyAiJHtDTEFOR19MSUJSQVJJRVN9ICR7 Q0xBTkdfTElCfSIpCi0rICBtZXNzYWdlKFNUQVRVUyAiY2xhbmdsaWJzIG5hbWUgJHtuYW1lfSB0 aGlzICR7Q0xBTkdfTElCfSBhbGwgJHtDTEFOR19MSUJSQVJJRVN9ICIpCi0gCXVuc2V0KENMQU5H X0xJQiBDQUNIRSkKLSBlbmRtYWNybygpCi0gCi0gI0Fzc3VtZSBjbGFuZyBsaWIgcGF0aCBzYW1l IGFzIGxsdm0gbGliIHBhdGgKLS1hZGRfb25lX2xpYigiY2xhbmdDb2RlR2VuIikKLS1hZGRfb25l X2xpYigiY2xhbmdGcm9udGVuZCIpCi0tYWRkX29uZV9saWIoImNsYW5nU2VyaWFsaXphdGlvbiIp Ci0tYWRkX29uZV9saWIoImNsYW5nRHJpdmVyIikKLS1hZGRfb25lX2xpYigiY2xhbmdTZW1hIikK LS1hZGRfb25lX2xpYigiY2xhbmdTdGF0aWNBbmFseXplckZyb250ZW5kIikKLS1hZGRfb25lX2xp YigiY2xhbmdTdGF0aWNBbmFseXplckNoZWNrZXJzIikKLS1hZGRfb25lX2xpYigiY2xhbmdTdGF0 aWNBbmFseXplckNvcmUiKQotLWFkZF9vbmVfbGliKCJjbGFuZ0FuYWx5c2lzIikKLS1hZGRfb25l X2xpYigiY2xhbmdFZGl0IikKLS1hZGRfb25lX2xpYigiY2xhbmdBU1QiKQotLWFkZF9vbmVfbGli KCJjbGFuZ0FTVE1hdGNoZXJzIikKLS1hZGRfb25lX2xpYigiY2xhbmdQYXJzZSIpCi0tYWRkX29u ZV9saWIoImNsYW5nU2VtYSIpCi0tYWRkX29uZV9saWIoImNsYW5nTGV4IikKLS1hZGRfb25lX2xp YigiY2xhbmdCYXNpYyIpCi0rYWRkX29uZV9saWIoImNsYW5nLWNwcCIpCi1kaWZmIC0tZ2l0IENN YWtlTGlzdHMudHh0IENNYWtlTGlzdHMudHh0Ci1pbmRleCBjMTFhY2JiLi4wOGY0MjdkIDEwMDY0 NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtNzksNyAr NzksNyBAQCBlbHNlaWYgKENPTVBJTEVSIFNUUkVRVUFMICJDTEFORyIpCi0gZWxzZWlmIChDT01Q SUxFUiBTVFJFUVVBTCAiSUNDIikKLSAgIHNldCAoQ01BS0VfQ19DWFhfRkxBR1MgIiR7Q01BS0Vf Q19DWFhfRkxBR1N9ICAtd2QyOTI4IC1XYWxsIC1mUElDIC1mc3RyaWN0LWFsaWFzaW5nIC1mcC1t b2RlbCBmYXN0IC1tc3NlNC4xIC1XbCwtRSIpCi0gZW5kaWYgKCkKLS1zZXQgKENNQUtFX0NYWF9G TEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9IC1zdGQ9YysrMHgg LVduby1pbnZhbGlkLW9mZnNldG9mIikKLStzZXQgKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9D WFhfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9IC1Xbm8taW52YWxpZC1vZmZzZXRvZiIpCi0g c2V0IChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9ICR7Q01BS0VfQ19DWFhfRkxBR1N9 IikKLSBzZXQgKENNQUtFX0NYWF9GTEFHU19ERUJVRyAgICAgICAgICAiLU8wIC1nIC1ER0JFX0RF QlVHPTEiKQotIHNldCAoQ01BS0VfQ1hYX0ZMQUdTX1JFTFdJVEhERUJJTkZPICItTzIgLWcgLURH QkVfREVCVUc9MSIpCi1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAg YmFja2VuZC9zcmMvYmFja2VuZC9wcm9ncmFtLmNwcAotaW5kZXggYjM2ZjdiNC4uZTY2NjAzMSAx MDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAKLSsrKyBiL2JhY2tl bmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAKLUBAIC02OTQsOSArNjk0LDkgQEAgbmFtZXNwYWNl IGdiZSB7Ci0gI2VuZGlmCi0gICAgICAgICAgICAgICAgICk7Ci0gCi0rICAgIGxsdm06OmNsOjpS ZXNldEFsbE9wdGlvbk9jY3VycmVuY2VzKCk7Ci0gICAgIGNsYW5nOjpDb21waWxlckludm9jYXRp b246OkNyZWF0ZUZyb21BcmdzKCpDSSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmFyZ3NbMF0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZhcmdzWzBdICsgYXJncy5zaXplKCksCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYW5nOjpBcnJheVJlZjxjb25zdCBjaGFy Kj4oYXJncyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IERpYWdzKTsKLSAgICAgLy8gQ3JlYXRlIHRoZSBjb21waWxlciBpbnN0YW5jZQotICAgICBjbGFu Zzo6Q29tcGlsZXJJbnN0YW5jZSBDbGFuZzsKLUBAIC0xMjQyLDggKzEyNDIsNyBAQCBFWFRFTkRf UVVPVEU6Ci0gICAgICAgLy8gQ3JlYXRlIHRoZSBjb21waWxlciBpbnZvY2F0aW9uCi0gICAgICAg c3RkOjp1bmlxdWVfcHRyPGNsYW5nOjpDb21waWxlckludm9jYXRpb24+IENJKG5ldyBjbGFuZzo6 Q29tcGlsZXJJbnZvY2F0aW9uKTsKLSAgICAgICByZXR1cm4gY2xhbmc6OkNvbXBpbGVySW52b2Nh dGlvbjo6Q3JlYXRlRnJvbUFyZ3MoKkNJLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJnc1swXSwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ3NbMF0gKyBhcmdzLnNpemUo KSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2xhbmc6OkFycmF5UmVmPGNvbnN0IGNoYXIqPihhcmdzKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlhZ3MpOwotICAgICB9Ci0g I2VuZGlmCi1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAg YmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAotaW5kZXggYzZmYzMwZC4uODI0 NDFkOCAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAK LSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLUBAIC01NzUsMTAg KzU3NSwxMiBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgICAgICBoYXNfZXJyb3JzKGZhbHNlKSwKLSAg ICAgICAgIGxlZ2FjeU1vZGUodHJ1ZSkKLSAgICAgewotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1Ig PCAxMAotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+ PSAzNwotICAgICAgIGluaXRpYWxpemVMb29wSW5mb1dyYXBwZXJQYXNzUGFzcygqUGFzc1JlZ2lz dHJ5OjpnZXRQYXNzUmVnaXN0cnkoKSk7Ci0gI2Vsc2UKLSAgICAgICBpbml0aWFsaXplTG9vcElu Zm9QYXNzKCpQYXNzUmVnaXN0cnk6OmdldFBhc3NSZWdpc3RyeSgpKTsKLSsjZW5kaWYKLSAjZW5k aWYKLSAgICAgICBwYXNzID0gUEFTU19FTUlUX1JFR0lTVEVSUzsKLSAgICAgfQotZGlmZiAtLWdp dCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuaHBwIGJhY2tlbmQvc3JjL2xsdm0v bGx2bV9nZW5fYmFja2VuZC5ocHAKLWluZGV4IGI0NzE1YjEuLjhlNzRmN2EgMTAwNjQ0Ci0tLS0g YS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuaHBwCi0rKysgYi9iYWNrZW5kL3Ny Yy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuaHBwCi1AQCAtMTMwLDEwICsxMzAsMTAgQEAgbmFtZXNw YWNlIGdiZQotICAgbGx2bTo6RnVuY3Rpb25QYXNzICpjcmVhdGVHZW5QYXNzKGlyOjpVbml0ICZ1 bml0KTsKLSAKLSAgIC8qISBSZW1vdmUgdGhlIEdFUCBpbnN0cnVjdGlvbnMgKi8KLS0gIGxsdm06 OkJhc2ljQmxvY2tQYXNzICpjcmVhdGVSZW1vdmVHRVBQYXNzKGNvbnN0IGlyOjpVbml0ICZ1bml0 KTsKLSsgIGxsdm06OkZ1bmN0aW9uUGFzcyAqY3JlYXRlUmVtb3ZlR0VQUGFzcyhjb25zdCBpcjo6 VW5pdCAmdW5pdCk7Ci0gCi0gICAvKiEgTWVyZ2UgbG9hZC9zdG9yZSBpZiBwb3NzaWJsZSAqLwot LSAgbGx2bTo6QmFzaWNCbG9ja1Bhc3MgKmNyZWF0ZUxvYWRTdG9yZU9wdGltaXphdGlvblBhc3Mo KTsKLSsgIGxsdm06OkZ1bmN0aW9uUGFzcyAqY3JlYXRlTG9hZFN0b3JlT3B0aW1pemF0aW9uUGFz cygpOwotIAotICAgLyohIFNjYWxhcml6ZSBhbGwgdmVjdG9yIG9wIGluc3RydWN0aW9ucyAqLwot ICAgbGx2bTo6RnVuY3Rpb25QYXNzKiBjcmVhdGVTY2FsYXJpemVQYXNzKCk7Ci1AQCAtMTQxLDcg KzE0MSw3IEBAIG5hbWVzcGFjZSBnYmUKLSAgIGxsdm06Ok1vZHVsZVBhc3MqIGNyZWF0ZUJhcnJp ZXJOb2R1cFBhc3MoYm9vbCk7Ci0gCi0gICAvKiEgQ29udmVydCB0aGUgSW50cmluc2ljIGNhbGwg dG8gZ2VuIGZ1bmN0aW9uICovCi0tICBsbHZtOjpCYXNpY0Jsb2NrUGFzcyAqY3JlYXRlSW50cmlu c2ljTG93ZXJpbmdQYXNzKCk7Ci0rICBsbHZtOjpGdW5jdGlvblBhc3MgKmNyZWF0ZUludHJpbnNp Y0xvd2VyaW5nUGFzcygpOwotIAotICAgLyohIFBhc3NlciB0aGUgcHJpbnRmIGZ1bmN0aW9uIGNh bGwuICovCi0gICBsbHZtOjpGdW5jdGlvblBhc3MqIGNyZWF0ZVByaW50ZlBhcnNlclBhc3MoaXI6 OlVuaXQgJnVuaXQpOwotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1faW50cmluc2lj X2xvd2VyaW5nLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1faW50cmluc2ljX2xvd2VyaW5nLmNw cAotaW5kZXggOTRmMGNlNi4uYjU1MzllOSAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0v bGx2bV9pbnRyaW5zaWNfbG93ZXJpbmcuY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1f aW50cmluc2ljX2xvd2VyaW5nLmNwcAotQEAgLTI5LDEyICsyOSwxMiBAQAotIHVzaW5nIG5hbWVz cGFjZSBsbHZtOwotIAotIG5hbWVzcGFjZSBnYmUgewotLSAgICBjbGFzcyBJbnN0cmluc2ljTG93 ZXJpbmcgOiBwdWJsaWMgQmFzaWNCbG9ja1Bhc3MKLSsgICAgY2xhc3MgSW5zdHJpbnNpY0xvd2Vy aW5nIDogcHVibGljIEZ1bmN0aW9uUGFzcwotICAgICB7Ci0gICAgIHB1YmxpYzoKLSAgICAgICBz dGF0aWMgY2hhciBJRDsKLSAgICAgICBJbnN0cmluc2ljTG93ZXJpbmcoKSA6Ci0tICAgICAgICBC YXNpY0Jsb2NrUGFzcyhJRCkge30KLSsgICAgICAgIEZ1bmN0aW9uUGFzcyhJRCkge30KLSAKLSAg ICAgICB2b2lkIGdldEFuYWx5c2lzVXNhZ2UoQW5hbHlzaXNVc2FnZSAmQVUpIGNvbnN0IHsKLSAK LUBAIC05Myw5ICs5Myw5IEBAIG5hbWVzcGFjZSBnYmUgewotICAgICAgICAgQ0ktPmVyYXNlRnJv bVBhcmVudCgpOwotICAgICAgICAgcmV0dXJuIE5ld0NJOwotICAgICAgIH0KLS0gICAgICB2aXJ0 dWFsIGJvb2wgcnVuT25CYXNpY0Jsb2NrKEJhc2ljQmxvY2sgJkJCKQotKyAgICAgIHZpcnR1YWwg Ym9vbCBydW5PbkZ1bmN0aW9uKEZ1bmN0aW9uICZGKQotICAgICAgIHsKLS0gICAgICAgIGJvb2wg Y2hhbmdlZEJsb2NrID0gZmFsc2U7Ci0rICAgICAgICBmb3IgKEJhc2ljQmxvY2sgJkJCIDogRikg ewotICAgICAgICAgTW9kdWxlICpNID0gQkIuZ2V0UGFyZW50KCktPmdldFBhcmVudCgpOwotIAot ICAgICAgICAgRGF0YUxheW91dCBURChNKTsKLUBAIC0xNTksMTMgKzE1OSwxNCBAQCBuYW1lc3Bh Y2UgZ2JlIHsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIH0KLSAgICAgICAgIH0KLS0gICAg ICAgIHJldHVybiBjaGFuZ2VkQmxvY2s7Ci0rICAgICAgICB9Ci0rICAgICAgICByZXR1cm4gdHJ1 ZTsKLSAgICAgICB9Ci0gICAgIH07Ci0gCi0gICAgIGNoYXIgSW5zdHJpbnNpY0xvd2VyaW5nOjpJ RCA9IDA7Ci0gCi0tICAgIEJhc2ljQmxvY2tQYXNzICpjcmVhdGVJbnRyaW5zaWNMb3dlcmluZ1Bh c3MoKSB7Ci0rICAgIEZ1bmN0aW9uUGFzcyAqY3JlYXRlSW50cmluc2ljTG93ZXJpbmdQYXNzKCkg ewotICAgICAgIHJldHVybiBuZXcgSW5zdHJpbnNpY0xvd2VyaW5nKCk7Ci0gICAgIH0KLSB9IC8v IGVuZCBuYW1lc3BhY2UKLWRpZmYgLS1naXQgYmFja2VuZC9zcmMvbGx2bS9sbHZtX2xvYWRzdG9y ZV9vcHRpbWl6YXRpb24uY3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1p emF0aW9uLmNwcAotaW5kZXggNWFhMzhiZS4uZTMxNDMwMiAxMDA2NDQKLS0tLSBhL2JhY2tlbmQv c3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAotKysrIGIvYmFja2VuZC9z cmMvbGx2bS9sbHZtX2xvYWRzdG9yZV9vcHRpbWl6YXRpb24uY3BwCi1AQCAtMjYsMTMgKzI2LDEz IEBACi0gCi0gdXNpbmcgbmFtZXNwYWNlIGxsdm07Ci0gbmFtZXNwYWNlIGdiZSB7Ci0tICBjbGFz cyBHZW5Mb2FkU3RvcmVPcHRpbWl6YXRpb24gOiBwdWJsaWMgQmFzaWNCbG9ja1Bhc3MgewotKyAg Y2xhc3MgR2VuTG9hZFN0b3JlT3B0aW1pemF0aW9uIDogcHVibGljIEZ1bmN0aW9uUGFzcyB7Ci0g Ci0gICBwdWJsaWM6Ci0gICAgIHN0YXRpYyBjaGFyIElEOwotICAgICBTY2FsYXJFdm9sdXRpb24g KlNFOwotICAgICBjb25zdCBEYXRhTGF5b3V0ICpURDsKLS0gICAgR2VuTG9hZFN0b3JlT3B0aW1p emF0aW9uKCkgOiBCYXNpY0Jsb2NrUGFzcyhJRCkge30KLSsgICAgR2VuTG9hZFN0b3JlT3B0aW1p emF0aW9uKCkgOiBGdW5jdGlvblBhc3MoSUQpIHt9Ci0gCi0gICAgIHZvaWQgZ2V0QW5hbHlzaXNV c2FnZShBbmFseXNpc1VzYWdlICZBVSkgY29uc3QgewotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1Ig KiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzOAotQEAgLTQ1LDcgKzQ1LDkgQEAgbmFtZXNw YWNlIGdiZSB7Ci0gICAgICAgQVUuc2V0UHJlc2VydmVzQ0ZHKCk7Ci0gICAgIH0KLSAKLS0gICAg dmlydHVhbCBib29sIHJ1bk9uQmFzaWNCbG9jayhCYXNpY0Jsb2NrICZCQikgewotKyAgICB2aXJ0 dWFsIGJvb2wgcnVuT25GdW5jdGlvbihGdW5jdGlvbiAmRikgewotKyAgICAgICAgYm9vbCBjaGFu Z2VkQW55QmxvY2sgPSBmYWxzZTsKLSsgICAgICAgIGZvciAoQmFzaWNCbG9jayAmQkIgOiBGKSB7 Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDM4 Ci0gICAgICAgU0UgPSAmZ2V0QW5hbHlzaXM8U2NhbGFyRXZvbHV0aW9uV3JhcHBlclBhc3M+KCku Z2V0U0UoKTsKLSAjZWxzZQotQEAgLTU5LDcgKzYxLDkgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAg ICAgI2Vsc2UKLSAgICAgICAgIFREID0gZ2V0QW5hbHlzaXNJZkF2YWlsYWJsZTxEYXRhTGF5b3V0 PigpOwotICAgICAgICNlbmRpZgotLSAgICAgIHJldHVybiBvcHRpbWl6ZUxvYWRTdG9yZShCQik7 Ci0rICAgICAgICAgICBjaGFuZ2VkQW55QmxvY2sgPSBvcHRpbWl6ZUxvYWRTdG9yZShCQikgfCBj aGFuZ2VkQW55QmxvY2s7Ci0rICAgICAgICB9Ci0rICAgICAgICByZXR1cm4gY2hhbmdlZEFueUJs b2NrOwotICAgICB9Ci0gICAgIFR5cGUgICAgKmdldFZhbHVlVHlwZShWYWx1ZSAqaW5zbik7Ci0g ICAgIFZhbHVlICAgKmdldFBvaW50ZXJPcGVyYW5kKFZhbHVlICpJKTsKLUBAIC0xNDgsNyArMTUy LDcgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAgICAgdmFsdWVzLnB1c2hfYmFjayhtZXJnZWRbaV0p OwotICAgICB9Ci0gICAgIExvYWRJbnN0ICpsZCA9IGNhc3Q8TG9hZEluc3Q+KG1lcmdlZFswXSk7 Ci0tICAgIHVuc2lnbmVkIGFsaWduID0gbGQtPmdldEFsaWdubWVudCgpOwotKyAgICBNYXliZUFs aWduIGFsaWduID0gbGQtPmdldEFsaWduKCk7Ci0gICAgIHVuc2lnbmVkIGFkZHJTcGFjZSA9IGxk LT5nZXRQb2ludGVyQWRkcmVzc1NwYWNlKCk7Ci0gICAgIC8vIGluc2VydCBiZWZvcmUgZmlyc3Qg bG9hZAotICAgICBCdWlsZGVyLlNldEluc2VydFBvaW50KGxkKTsKLUBAIC0yMzEsNyArMjM1LDcg QEAgbmFtZXNwYWNlIGdiZSB7Ci0gCi0gICAgIHVuc2lnbmVkIGFkZHJTcGFjZSA9IHN0LT5nZXRQ b2ludGVyQWRkcmVzc1NwYWNlKCk7Ci0gCi0tICAgIHVuc2lnbmVkIGFsaWduID0gc3QtPmdldEFs aWdubWVudCgpOwotKyAgICBNYXliZUFsaWduIGFsaWduID0gc3QtPmdldEFsaWduKCk7Ci0gICAg IC8vIGluc2VydCBiZWZvcmUgdGhlIGxhc3Qgc3RvcmUKLSAgICAgQnVpbGRlci5TZXRJbnNlcnRQ b2ludChtZXJnZWRbc2l6ZS0xXSk7Ci0gCi1AQCAtMzI1LDcgKzMyOSw3IEBAIG5hbWVzcGFjZSBn YmUgewotICAgICByZXR1cm4gY2hhbmdlZDsKLSAgIH0KLSAKLS0gIEJhc2ljQmxvY2tQYXNzICpj cmVhdGVMb2FkU3RvcmVPcHRpbWl6YXRpb25QYXNzKCkgewotKyAgRnVuY3Rpb25QYXNzICpjcmVh dGVMb2FkU3RvcmVPcHRpbWl6YXRpb25QYXNzKCkgewotICAgICByZXR1cm4gbmV3IEdlbkxvYWRT dG9yZU9wdGltaXphdGlvbigpOwotICAgfQotIH07Ci1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xs dm0vbGx2bV9wYXNzZXMuY3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMuY3BwCi1pbmRl eCAxMDc1MmEzLi5iOGYyMjgyIDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Bh c3Nlcy5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMuY3BwCi1AQCAtMzcs NyArMzcsNyBAQAotICNpbmNsdWRlICJzeXMvbWFwLmhwcCIKLSAKLSB1c2luZyBuYW1lc3BhY2Ug bGx2bTsKLS0KLSt0ZW1wbGF0ZSBjbGFzcyBjZmc6OlVwZGF0ZTxCYXNpY0Jsb2NrICo+OwotIG5h bWVzcGFjZSBnYmUKLSB7Ci0gICBib29sIGlzS2VybmVsRnVuY3Rpb24oY29uc3QgbGx2bTo6RnVu Y3Rpb24gJkYpIHsKLUBAIC0yMTksMTMgKzIxOSwxMyBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIHJl dHVybiBvZmZzZXQ7Ci0gICB9Ci0gCi0tICBjbGFzcyBHZW5SZW1vdmVHRVBQYXNzcyA6IHB1Ymxp YyBCYXNpY0Jsb2NrUGFzcwotKyAgY2xhc3MgR2VuUmVtb3ZlR0VQUGFzc3MgOiBwdWJsaWMgRnVu Y3Rpb25QYXNzCi0gICB7Ci0gCi0gICAgcHVibGljOgotICAgICBzdGF0aWMgY2hhciBJRDsKLSAg ICAgR2VuUmVtb3ZlR0VQUGFzc3MoY29uc3QgaXI6OlVuaXQgJnVuaXQpIDoKLS0gICAgICBCYXNp Y0Jsb2NrUGFzcyhJRCksCi0rICAgICAgRnVuY3Rpb25QYXNzKElEKSwKLSAgICAgICB1bml0KHVu aXQpIHt9Ci0gICAgIGNvbnN0IGlyOjpVbml0ICZ1bml0OwotICAgICB2b2lkIGdldEFuYWx5c2lz VXNhZ2UoQW5hbHlzaXNVc2FnZSAmQVUpIGNvbnN0IHsKLUBAIC0yNDIsMTYgKzI0MiwxOCBAQCBu YW1lc3BhY2UgZ2JlCi0gCi0gICAgIGJvb2wgc2ltcGxpZnlHRVBJbnN0cnVjdGlvbnMoR2V0RWxl bWVudFB0ckluc3QqIEdFUEluc3QpOwotIAotLSAgICB2aXJ0dWFsIGJvb2wgcnVuT25CYXNpY0Js b2NrKEJhc2ljQmxvY2sgJkJCKQotKyAgICB2aXJ0dWFsIGJvb2wgcnVuT25GdW5jdGlvbihGdW5j dGlvbiAmRikKLSAgICAgewotLSAgICAgIGJvb2wgY2hhbmdlZEJsb2NrID0gZmFsc2U7Ci0rICAg ICAgYm9vbCBjaGFuZ2VkQW55QmxvY2sgPSBmYWxzZTsKLSsgICAgICAgIGZvciAoQmFzaWNCbG9j ayAmQkIgOiBGKSB7Ci0gICAgICAgaXBsaXN0PEluc3RydWN0aW9uPjo6aXRlcmF0b3IgSSA9IEJC LmdldEluc3RMaXN0KCkuYmVnaW4oKTsKLSAgICAgICBmb3IgKGF1dG8gbmV4dEkgPSBJLCBFID0g LS1CQi5nZXRJbnN0TGlzdCgpLmVuZCgpOyBJICE9IEU7IEkgPSBuZXh0SSkgewotICAgICAgICAg aXBsaXN0PEluc3RydWN0aW9uPjo6aXRlcmF0b3IgSSA9IG5leHRJKys7Ci0gICAgICAgICBpZihH ZXRFbGVtZW50UHRySW5zdCogZ2VwID0gZHluX2Nhc3Q8R2V0RWxlbWVudFB0ckluc3Q+KCYqSSkp Ci0tICAgICAgICAgIGNoYW5nZWRCbG9jayA9IChzaW1wbGlmeUdFUEluc3RydWN0aW9ucyhnZXAp IHx8IGNoYW5nZWRCbG9jayk7Ci0rICAgICAgICAgIGNoYW5nZWRBbnlCbG9jayA9IChzaW1wbGlm eUdFUEluc3RydWN0aW9ucyhnZXApIHwgY2hhbmdlZEFueUJsb2NrKTsKLSAgICAgICB9Ci0tICAg ICAgcmV0dXJuIGNoYW5nZWRCbG9jazsKLSsgICAgICAgIH0KLSsgICAgICByZXR1cm4gY2hhbmdl ZEFueUJsb2NrOwotICAgICB9Ci0gICB9OwotIAotQEAgLTM2Nyw3ICszNjksNyBAQCBuYW1lc3Bh Y2UgZ2JlCi0gICAgIHJldHVybiB0cnVlOwotICAgfQotIAotLSAgQmFzaWNCbG9ja1Bhc3MgKmNy ZWF0ZVJlbW92ZUdFUFBhc3MoY29uc3QgaXI6OlVuaXQgJnVuaXQpIHsKLSsgIEZ1bmN0aW9uUGFz cyAqY3JlYXRlUmVtb3ZlR0VQUGFzcyhjb25zdCBpcjo6VW5pdCAmdW5pdCkgewotICAgICByZXR1 cm4gbmV3IEdlblJlbW92ZUdFUFBhc3NzKHVuaXQpOwotICAgfQotIH0gLyogbmFtZXNwYWNlIGdi ZSAqLwotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwIGJh Y2tlbmQvc3JjL2xsdm0vbGx2bV9zYW1wbGVyX2ZpeC5jcHAKLWluZGV4IDJhMDk3YzguLjg2M2Jl NmQgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCi0r KysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCi1AQCAtMzMsMTAgKzMz LDEyIEBAIG5hbWVzcGFjZSBnYmUgewotICAgY2xhc3MgU2FtcGxlckZpeCA6IHB1YmxpYyBGdW5j dGlvblBhc3MgewotICAgcHVibGljOgotICAgICBTYW1wbGVyRml4KCkgOiBGdW5jdGlvblBhc3Mo SUQpIHsKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMTAKLSAjaWYgTExWTV9WRVJTSU9OX01B Sk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzUKLSAgICAgICBpbml0aWFsaXplRG9t aW5hdG9yVHJlZVdyYXBwZXJQYXNzUGFzcygqUGFzc1JlZ2lzdHJ5OjpnZXRQYXNzUmVnaXN0cnko KSk7Ci0gI2Vsc2UKLSAgICAgICBpbml0aWFsaXplRG9taW5hdG9yVHJlZVBhc3MoKlBhc3NSZWdp c3RyeTo6Z2V0UGFzc1JlZ2lzdHJ5KCkpOwotKyNlbmRpZgotICNlbmRpZgotICAgICB9Ci0gCi1k aWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9zY2FsYXJpemUuY3BwIGJhY2tlbmQvc3Jj L2xsdm0vbGx2bV9zY2FsYXJpemUuY3BwCi1pbmRleCBlOWEyYTY2Li5lOWQyZWU0IDEwMDY0NAot LS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3NjYWxhcml6ZS5jcHAKLSsrKyBiL2JhY2tlbmQv c3JjL2xsdm0vbGx2bV9zY2FsYXJpemUuY3BwCi1AQCAtOTYsMTAgKzk2LDEyIEBAIG5hbWVzcGFj ZSBnYmUgewotIAotICAgICBTY2FsYXJpemUoKSA6IEZ1bmN0aW9uUGFzcyhJRCkKLSAgICAgewot KyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPCAxMAotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAx MCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzNQotICAgICAgIGluaXRpYWxpemVEb21pbmF0b3JU cmVlV3JhcHBlclBhc3NQYXNzKCpQYXNzUmVnaXN0cnk6OmdldFBhc3NSZWdpc3RyeSgpKTsKLSAj ZWxzZQotICAgICAgIGluaXRpYWxpemVEb21pbmF0b3JUcmVlUGFzcygqUGFzc1JlZ2lzdHJ5Ojpn ZXRQYXNzUmVnaXN0cnkoKSk7Ci0rI2VuZGlmCi0gI2VuZGlmCi0gICAgIH0KLSAKLWRpZmYgLS1n aXQgdXRlc3RzL0NNYWtlTGlzdHMudHh0IHV0ZXN0cy9DTWFrZUxpc3RzLnR4dAotaW5kZXggMzAw ZDg3YS4uNjQxNzljNyAxMDA2NDQKLS0tLSBhL3V0ZXN0cy9DTWFrZUxpc3RzLnR4dAotKysrIGIv dXRlc3RzL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjYsOCArMjYsOCBAQCBpZiAoTk9UIE5PVF9CVUlM RF9TVEFORF9BTE9ORV9VVEVTVCkKLSAgICMgVGhyZWFkcwotICAgRmluZF9QYWNrYWdlKFRocmVh ZHMpCi0gCi0tICBzZXQgKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7Q01B S0VfQ19DWFhfRkxBR1N9IC1zdGQ9YysrMHggLVduby1pbnZhbGlkLW9mZnNldG9mIikKLS0gIHNl dCAoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAke0NNQUtFX0NfQ1hYX0ZMQUdTfSIp Ci0rICBzZXQgKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9ICR7Q01BS0VfQ19D WFhfRkxBR1N9IC1Xbm8taW52YWxpZC1vZmZzZXRvZiAtZmZsb2F0LXN0b3JlIC1mbm8tc3RyaWN0 LWFsaWFzaW5nIikKLSsgIHNldCAoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAke0NN QUtFX0NfQ1hYX0ZMQUdTfSAtZmZsb2F0LXN0b3JlIC1mbm8tc3RyaWN0LWFsaWFzaW5nIikgI2Nv bXBpbGVyX3tkZWdyZWVzLHJhZGlhbnMsZnVuY3Rpb25fYXJndW1lbnQyfSB1c2UgZXF1YWxpdHkg Y29tcGFyaXNvbiBvZiBmbG9hdHMsIGNvbXBpbGVyX2xvbmdfYml0Y2FzdCB1c2VzIGFsaWFzaW5n Ci0gICBzZXQgKENNQUtFX0NYWF9GTEFHU19ERUJVRyAgICAgICAgICAiLU8wIC1nIC1ER0JFX0RF QlVHPTEiKQotICAgc2V0IChDTUFLRV9DWFhfRkxBR1NfUkVMV0lUSERFQklORk8gIi1PMiAtZyAt REdCRV9ERUJVRz0xIikKLSAgIHNldCAoQ01BS0VfQ1hYX0ZMQUdTX01JTlNJWkVSRUwgICAgICIt T3MgLUROREVCVUcgLURHQkVfREVCVUc9MCIpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQv cGF0Y2hlcy9sbHZtMTEucGF0Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTEucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjM2E0Mjc4OTQzYy4uMDAwMDAwMDAw MDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMS5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDkzNyArMCwwIEBACi1Tb3VyY2U6IFNuZWt0cm9uCi0KLVRoZXJlIHdlcmUgYSBm ZXcgY2hhbmdlcyByZXF1aXJlZCBmb3IgTExWTSAxMToKLSogbGx2bTo6U3RyaW5nUmVmIHJlcXVp cmVzIC5zdHIoKSwgaW1wbGljaXQgY29udmVyc2lvbiB3YXMgcmVtb3ZlZAotKiBsbHZtOjpDYWxs U2l0ZSB3YXMgcmVtb3ZlZCwgYnV0IHRoZSByZXF1aXJlZCBtZXRob2RzIGFyZSBhdmFpbGFibGUg b24gbGx2bTo6Q2FsbEluc3QKLSogVmVjdG9yVHlJRCB3YXMgc3BsaXQgaW50byBGaXhlZFZlY3Rv clR5SUQgYW5kIFNjYWxhYmxlVmVjdG9yVHlJRCwgRml4ZWRWZWN0b3JUeUlEIHdhcyB1c2VkCi0q IENhbGxJbnN0OjpnZXRDYWxsZWRWYWx1ZSgpIHdhcyByZW5hbWVkIHRvIENhbGxJbnN0OjpnZXRD YWxsZWRPcGVyYW5kKCkKLSogSW1wbGljaXQgY29udmVyc2lvbiBmcm9tIE1heWJlQWxpZ24gdG8g QWxpZ24gd2FzIHJlbW92ZWQsIHNvIE1heWJlQWxpZ246OnZhbHVlT3JPbmUgd2FzIHVzZWQgaW5z dGVhZC4KLQotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9TdHJpcEF0dHJpYnV0ZXMuY3BwCTIwMjAt MTEtMDkgMTY6NDg6MjAuODIzODY2MTEyICswMTAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL1N0 cmlwQXR0cmlidXRlcy5jcHAJMjAyMC0xMS0wOSAxOTowNDoxOS42NDE4OTcxNDEgKzAxMDAKLUBA IC0xMDcsOSArMTA3LDggQEAKLSAgICAgICAgQkIgIT0gRTsgKytCQikgewotICAgICBmb3IgKEJh c2ljQmxvY2s6Oml0ZXJhdG9yIEluc3QgPSBCQi0+YmVnaW4oKSwgRSA9IEJCLT5lbmQoKTsKLSAg ICAgICAgICBJbnN0ICE9IEU7ICsrSW5zdCkgewotLSAgICAgIENhbGxTaXRlIENhbGwoJipJbnN0 KTsKLS0gICAgICBpZiAoQ2FsbCkKLS0gICAgICAgIENhbGwuc2V0Q2FsbGluZ0NvbnYoQ2FsbGlu Z0NvbnY6OkMpOwotKyAgICAgIGlmIChDYWxsSW5zdCogY2FsbEluc3QgPSBkeW5fY2FzdDxDYWxs SW5zdD4oJipJbnN0KSkKLSsgICAgICAgIGNhbGxJbnN0LT5zZXRDYWxsaW5nQ29udihDYWxsaW5n Q29udjo6Qyk7Ci0gICAgIH0KLSAgIH0KLQotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2Jp dGNvZGVfbGluay5jcHAJMjAyMC0xMS0wOSAxNjo0ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsrKyBi L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRjb2RlX2xpbmsuY3BwCTIwMjAtMTEtMDkgMTc6MDQ6 MDkuNjMzNzUzNDI4ICswMTAwCi1AQCAtOTgsNyArOTgsNyBAQAotICAgICAgICAgaWYgKGNhbGxG dW5jICYmIGNhbGxGdW5jLT5nZXRJbnRyaW5zaWNJRCgpICE9IDApCi0gICAgICAgICAgIGNvbnRp bnVlOwotCi0tICAgICAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBjYWxsLT5nZXRDYWxsZWRWYWx1 ZSgpLT5zdHJpcFBvaW50ZXJDYXN0cygpLT5nZXROYW1lKCk7Ci0rICAgICAgICBzdGQ6OnN0cmlu ZyBmbk5hbWUgPSBjYWxsLT5nZXRDYWxsZWRPcGVyYW5kKCktPnN0cmlwUG9pbnRlckNhc3RzKCkt PmdldE5hbWUoKS5zdHIoKTsKLQotICAgICAgICAgaWYgKCFNRlMuaW5zZXJ0KGZuTmFtZSkuc2Vj b25kKSB7Ci0gICAgICAgICAgIGNvbnRpbnVlOwotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZt X2RldmljZV9lbnF1ZXVlLmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAot KysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2RldmljZV9lbnF1ZXVlLmNwcAkyMDIwLTExLTA5 IDE5OjAxOjQ5LjIwMTkxNTAwOCArMDEwMAotQEAgLTQ1LDcgKzQ1LDcgQEAKLSAgICAgICByZXR1 cm4gTlVMTDsKLQotICAgICAvKiBUaGlzIGlzIGEgZmFrZSwgdG8gY2hlY2sgdGhlIGZ1bmN0aW9u IGJpdGNhc3QgaXMgZm9yIGJsb2NrIG9yIG5vdCAqLwotLSAgICBzdGQ6OnN0cmluZyBmbk5hbWUg PSBGbi0+Z2V0TmFtZSgpOwotKyAgICBzdGQ6OnN0cmluZyBmbk5hbWUgPSBGbi0+Z2V0TmFtZSgp LnN0cigpOwotICAgICBpZihmbk5hbWUuZmluZCgiX2ludm9rZSIpID09IHN0ZDo6c3RyaW5nOjpu cG9zKQotICAgICAgIHJldHVybiBOVUxMOwotCi1AQCAtMTE5LDE4ICsxMTksMTggQEAKLSAgICAg ICBQYXJhbVR5cy5wdXNoX2JhY2sodHkpOwotICAgICB9Ci0gICAgIEZ1bmN0aW9uVHlwZSogTmV3 RlQgPSBGdW5jdGlvblR5cGU6OmdldChGbi0+Z2V0UmV0dXJuVHlwZSgpLCBQYXJhbVR5cywgZmFs c2UpOwotLSAgICBGdW5jdGlvbiogTmV3Rm4gPSBGdW5jdGlvbjo6Q3JlYXRlKE5ld0ZULCBGdW5j dGlvbjo6RXh0ZXJuYWxMaW5rYWdlLCBGbi0+Z2V0TmFtZSgpKTsKLSsgICAgRnVuY3Rpb24qIE5l d0ZuID0gRnVuY3Rpb246OkNyZWF0ZShOZXdGVCwgRnVuY3Rpb246OkV4dGVybmFsTGlua2FnZSwg Rm4tPmdldE5hbWUoKS5zdHIoKSk7Ci0gICAgIFNtYWxsVmVjdG9yPFJldHVybkluc3QqLCA4PiBS ZXR1cm5zOwotCi0gICAgIEZ1bmN0aW9uOjphcmdfaXRlcmF0b3IgTmV3Rm5BcmdJdCA9IE5ld0Zu LT5hcmdfYmVnaW4oKTsKLSAgICAgZm9yIChGdW5jdGlvbjo6YXJnX2l0ZXJhdG9yIEkgPSBGbi0+ YXJnX2JlZ2luKCksIEUgPSBGbi0+YXJnX2VuZCgpOyBJICE9IEU7ICsrSSkgewotLSAgICAgIHN0 ZDo6c3RyaW5nIEFyZ05hbWUgPSBJLT5nZXROYW1lKCk7Ci0rICAgICAgc3RkOjpzdHJpbmcgQXJn TmFtZSA9IEktPmdldE5hbWUoKS5zdHIoKTsKLSAgICAgICBOZXdGbkFyZ0l0LT5zZXROYW1lKEFy Z05hbWUpOwotICAgICAgIFZNYXBbJipJXSA9ICYoKk5ld0ZuQXJnSXQrKyk7Ci0gICAgIH0KLSAg ICAgQ2xvbmVGdW5jdGlvbkludG8oTmV3Rm4sIEZuLCBWTWFwLCAvKk1vZHVsZUxldmVsQ2hhbmdl cz0qL3RydWUsIFJldHVybnMpOwotCi0tICAgIEZuLT5zZXROYW1lKCJfX2QiICsgRm4tPmdldE5h bWUoKSk7Ci0rICAgIEZuLT5zZXROYW1lKCJfX2QiICsgRm4tPmdldE5hbWUoKS5zdHIoKSk7Ci0g ICAgIG1vZC0+Z2V0RnVuY3Rpb25MaXN0KCkucHVzaF9iYWNrKE5ld0ZuKTsKLSAgICAgLy9tb2Qt PmdldE9ySW5zZXJ0RnVuY3Rpb24oTmV3Rm4tPmdldE5hbWUoKSwgTmV3Rm4tPmdldEZ1bmN0aW9u VHlwZSgpLAotICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBOZXdGbi0+Z2V0QXR0cmli dXRlcygpKTsKLUBAIC0xNDcsNyArMTQ3LDcgQEAKLSAgICAgICBhcmdUeXBlTmFtZXMucHVzaF9i YWNrKGxsdm06Ok1EU3RyaW5nOjpnZXQoQ29udGV4dCwgImNoYXIqIikpOwotICAgICAgIGFyZ0Jh c2VUeXBlTmFtZXMucHVzaF9iYWNrKGxsdm06Ok1EU3RyaW5nOjpnZXQoQ29udGV4dCwgImNoYXIq IikpOwotICAgICAgIGFyZ1R5cGVRdWFscy5wdXNoX2JhY2sobGx2bTo6TURTdHJpbmc6OmdldChD b250ZXh0LCAiIikpOwotLSAgICAgIGFyZ05hbWVzLnB1c2hfYmFjayhsbHZtOjpNRFN0cmluZzo6 Z2V0KENvbnRleHQsIEktPmdldE5hbWUoKSkpOwotKyAgICAgIGFyZ05hbWVzLnB1c2hfYmFjayhs bHZtOjpNRFN0cmluZzo6Z2V0KENvbnRleHQsIEktPmdldE5hbWUoKS5zdHIoKSkpOwotICAgICB9 Ci0KLSAgICAgLy9JZiBydW4gdG8gaGVyZSwgbGx2bSB2ZXJzaW9uIGFsd2F5cyA+IDMuOSwgYWRk IHRoZSB2ZXJzaW9uIGNoZWNrIGp1c3QgZm9yIGJ1aWxkLgotQEAgLTE5OCw3ICsxOTgsNyBAQAot ICAgICAgICAgICAgKiBpbnZva2UgcG9pbnRlciB0byBzdG9yZSB0aGUgaW5kZXggaW4gdGhlIHVu aXQncyBibG9jayBmdW5jdGlvbnMgaW5kZXguKi8KLSAgICAgICAgICAgRnVuY3Rpb24gKkZuID0g ZHluX2Nhc3Q8RnVuY3Rpb24+KGJ0LT5nZXRPcGVyYW5kKDApKTsKLQotLSAgICAgICAgICBzdGQ6 OnN0cmluZyBmbk5hbWUgPSBGbi0+Z2V0TmFtZSgpOwotKyAgICAgICAgICBzdGQ6OnN0cmluZyBm bk5hbWUgPSBGbi0+Z2V0TmFtZSgpLnN0cigpOwotICAgICAgICAgICBpbnQgaW5kZXggPSAtMTsK LSAgICAgICAgICAgZm9yKHNpemVfdCBpPTA7IGk8dW5pdC5ibG9ja0Z1bmNzLnNpemUoKTsgaSsr KSB7Ci0gICAgICAgICAgICAgaWYodW5pdC5ibG9ja0Z1bmNzW2ldID09IGZuTmFtZSkgewotQEAg LTI0MSw3ICsyNDEsNyBAQAotICAgICAgICAgICAgIC8vdW5uYW1lZCBjYWxsIGZ1bmN0aW9uLCBw YXJzZSB0aGUgdXNlIHRvIGZpbmQgdGhlIGRlZmluZSBvZiBjYWxsZWQgZnVuY3Rpb24KLSAgICAg ICAgICAgICBTbWFsbFZlY3RvcjxWYWx1ZSosIDE2PiBhcmdzKENJLT5vcF9iZWdpbigpLCBDSS0+ b3BfZW5kKCktMSk7Ci0KLS0gICAgICAgICAgICBWYWx1ZSAqdiA9IENJLT5nZXRDYWxsZWRWYWx1 ZSgpOwotKyAgICAgICAgICAgIFZhbHVlICp2ID0gQ0ktPmdldENhbGxlZE9wZXJhbmQoKTsKLSAg ICAgICAgICAgICBCaXRDYXN0SW5zdCogYnQgPSBkeW5fY2FzdDxCaXRDYXN0SW5zdD4odik7Ci0g ICAgICAgICAgICAgaWYoYnQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgIGNvbnRpbnVlOwotQEAg LTMxNiw3ICszMTYsNyBAQAotICAgICAgICAgICAgICAgICAgIENvbnN0YW50RXhwciAqZXhwciA9 IGR5bl9jYXN0PENvbnN0YW50RXhwcj4oYy0+Z2V0T3BlcmFuZCgzKSk7Ci0gICAgICAgICAgICAg ICAgICAgQml0Q2FzdEluc3QgKmJ0ID0gZHluX2Nhc3Q8Qml0Q2FzdEluc3Q+KGV4cHItPmdldEFz SW5zdHJ1Y3Rpb24oKSk7Ci0gICAgICAgICAgICAgICAgICAgRnVuY3Rpb24qIGYgPSBkeW5fY2Fz dDxGdW5jdGlvbj4oYnQtPmdldE9wZXJhbmQoMCkpOwotLSAgICAgICAgICAgICAgICAgIGJsb2Nr c1t2XSA9IGYtPmdldE5hbWUoKTsKLSsgICAgICAgICAgICAgICAgICBibG9ja3Nbdl0gPSBmLT5n ZXROYW1lKCkuc3RyKCk7Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIH0KLQot QEAgLTMzMiw3ICszMzIsNyBAQAotICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgIC8v aGFuZGxlIGVucXVldWVfa2VybmVsIGZ1bmN0aW9uIGNhbGwKLSAgICAgICAgICAgICBGdW5jdGlv biAqZm4gPSBDSS0+Z2V0Q2FsbGVkRnVuY3Rpb24oKTsKLS0gICAgICAgICAgICBpZiAoZm4tPmdl dE5hbWUoKS5maW5kKCJlbnF1ZXVlX2tlcm5lbCIpID09IHN0ZDo6c3RyaW5nOjpucG9zKQotKyAg ICAgICAgICAgIGlmIChmbi0+Z2V0TmFtZSgpLnN0cigpLmZpbmQoImVucXVldWVfa2VybmVsIikg PT0gc3RkOjpzdHJpbmc6Om5wb3MpCi0gICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg ICAgICAgIC8vYmxvY2sgcGFyYW1ldGVyJ3MgaW5kZXgsIDMgb3IgNgotQEAgLTM2MSw3ICszNjEs NyBAQAotICAgICAgICAgICAgICAgICAgIENvbnN0YW50RXhwciAqZXhwciA9IGR5bl9jYXN0PENv bnN0YW50RXhwcj4oYy0+Z2V0T3BlcmFuZCgzKSk7Ci0gICAgICAgICAgICAgICAgICAgQml0Q2Fz dEluc3QgKmJ0ID0gZHluX2Nhc3Q8Qml0Q2FzdEluc3Q+KGV4cHItPmdldEFzSW5zdHJ1Y3Rpb24o KSk7Ci0gICAgICAgICAgICAgICAgICAgRnVuY3Rpb24qIGYgPSBkeW5fY2FzdDxGdW5jdGlvbj4o YnQtPmdldE9wZXJhbmQoMCkpOwotLSAgICAgICAgICAgICAgICAgIGJsb2Nrc1t2XSA9IGYtPmdl dE5hbWUoKTsKLSsgICAgICAgICAgICAgICAgICBibG9ja3Nbdl0gPSBmLT5nZXROYW1lKCkuc3Ry KCk7Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICB9 IGVsc2UgaWYoaXNhPEFsbG9jYUluc3Q+KGJsb2NrKSkgewotLS0tIGEvYmFja2VuZC9zcmMvbGx2 bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEw MAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmNwcAkyMDIwLTExLTA5 IDE4OjMzOjUwLjkxOTExNDMyNyArMDEwMAotQEAgLTM3Niw3ICszNzYsNyBAQAotICAgICAgICAg ICBHQkVfQVNTRVJUKGluZGV4ID09IDApOwotICAgICAgICAgICByZXR1cm4gdGhpcy0+X25ld1Nj YWxhcih2YWx1ZSwga2V5LCB0eXBlLCBpbmRleCwgdW5pZm9ybSk7Ci0gICAgICAgICAgIGJyZWFr OwotLSAgICAgICAgY2FzZSBUeXBlOjpWZWN0b3JUeUlEOgotKyAgICAgICAgY2FzZSBUeXBlOjpG aXhlZFZlY3RvclR5SUQ6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIGF1dG8gdmVjdG9yVHlwZSA9 IGNhc3Q8VmVjdG9yVHlwZT4odHlwZSk7Ci0gICAgICAgICAgIGF1dG8gZWxlbWVudFR5cGUgPSB2 ZWN0b3JUeXBlLT5nZXRFbGVtZW50VHlwZSgpOwotQEAgLTc0MywyMCArNzQzLDIwIEBACi0gI3Vu ZGVmIERFQ0xfVklTSVRfRk4KLQotICAgICAvLyBFbWl0IHJvdW5kaW5nIGluc3RydWN0aW9ucyBm cm9tIGdlbiBuYXRpdmUgZnVuY3Rpb24KLS0gICAgdm9pZCBlbWl0Um91bmRpbmdDYWxsSW5zdChD YWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6T3Bjb2RlIG9wY29kZSk7Ci0rICAgIHZvaWQg ZW1pdFJvdW5kaW5nQ2FsbEluc3QoQ2FsbEluc3QgJkksIGlyOjpPcGNvZGUgb3Bjb2RlKTsKLSAg ICAgLy8gRW1pdCB1bmFyeSBpbnN0cnVjdGlvbnMgZnJvbSBnZW4gbmF0aXZlIGZ1bmN0aW9uCi0t ICAgIHZvaWQgZW1pdFVuYXJ5Q2FsbEluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgaXI6 Ok9wY29kZSBvcGNvZGUsIGlyOjpUeXBlID0gaXI6OlRZUEVfRkxPQVQpOwotKyAgICB2b2lkIGVt aXRVbmFyeUNhbGxJbnN0KENhbGxJbnN0ICZJLCBpcjo6T3Bjb2RlIG9wY29kZSwgaXI6OlR5cGUg PSBpcjo6VFlQRV9GTE9BVCk7Ci0gICAgIC8vIEVtaXQgdW5hcnkgaW5zdHJ1Y3Rpb25zIGZyb20g Z2VuIG5hdGl2ZSBmdW5jdGlvbgotLSAgICB2b2lkIGVtaXRBdG9taWNJbnN0KENhbGxJbnN0ICZJ LCBDYWxsU2l0ZSAmQ1MsIGlyOjpBdG9taWNPcHMgb3Bjb2RlKTsKLSsgICAgdm9pZCBlbWl0QXRv bWljSW5zdChDYWxsSW5zdCAmSSwgaXI6OkF0b21pY09wcyBvcGNvZGUpOwotICAgICAvLyBFbWl0 IHdvcmtncm91cCBpbnN0cnVjdGlvbnMKLS0gICAgdm9pZCBlbWl0V29ya0dyb3VwSW5zdChDYWxs SW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6V29ya0dyb3VwT3BzIG9wY29kZSk7Ci0rICAgIHZv aWQgZW1pdFdvcmtHcm91cEluc3QoQ2FsbEluc3QgJkksIGlyOjpXb3JrR3JvdXBPcHMgb3Bjb2Rl KTsKLSAgICAgLy8gRW1pdCBzdWJncm91cCBpbnN0cnVjdGlvbnMKLS0gICAgdm9pZCBlbWl0U3Vi R3JvdXBJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGlyOjpXb3JrR3JvdXBPcHMgb3Bj b2RlKTsKLSsgICAgdm9pZCBlbWl0U3ViR3JvdXBJbnN0KENhbGxJbnN0ICZJLCBpcjo6V29ya0dy b3VwT3BzIG9wY29kZSk7Ci0gICAgIC8vIEVtaXQgc3ViZ3JvdXAgaW5zdHJ1Y3Rpb25zCi0tICAg IHZvaWQgZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNT LCBib29sIGlzV3JpdGUsIHVpbnQ4X3QgdmVjX3NpemUsIGlyOjpUeXBlID0gaXI6OlRZUEVfVTMy KTsKLS0gICAgdm9pZCBlbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoQ2FsbEluc3QgJkksIENh bGxTaXRlICZDUywgYm9vbCBpc1dyaXRlLCB1aW50OF90IHZlY19zaXplLCBpcjo6VHlwZSA9IGly OjpUWVBFX1UzMik7Ci0rICAgIHZvaWQgZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChDYWxsSW5z dCAmSSwgYm9vbCBpc1dyaXRlLCB1aW50OF90IHZlY19zaXplLCBpcjo6VHlwZSA9IGlyOjpUWVBF X1UzMik7Ci0rICAgIHZvaWQgZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KENhbGxJbnN0ICZJ LCBib29sIGlzV3JpdGUsIHVpbnQ4X3QgdmVjX3NpemUsIGlyOjpUeXBlID0gaXI6OlRZUEVfVTMy KTsKLQotLSAgICB1aW50OF90IGFwcGVuZFNhbXBsZXIoQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBB SSk7Ci0rICAgIHVpbnQ4X3QgYXBwZW5kU2FtcGxlcihVc2VyOjpvcF9pdGVyYXRvciBBSSk7Ci0g ICAgIHVpbnQ4X3QgZ2V0SW1hZ2VJRChDYWxsSW5zdCAmSSk7Ci0KLSAgICAgLy8gVGhlc2UgaW5z dHJ1Y3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGF0IGFsbAotQEAgLTEzMjAsMTMgKzEzMjAsMTMg QEAKLSAjZW5kaWYKLQotICAgICAgIGlmKHR5cGVOYW1lTm9kZSkgewotLSAgICAgICAgbGx2bUlu Zm8udHlwZU5hbWU9IChjYXN0PE1EU3RyaW5nPih0eXBlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJ RCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgICBsbHZtSW5mby50eXBlTmFtZT0gKGNhc3Q8TURT dHJpbmc+KHR5cGVOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIo KTsKLSAgICAgICB9Ci0gICAgICAgaWYodHlwZUJhc2VOYW1lTm9kZSkgewotLSAgICAgICAgbGx2 bUluZm8udHlwZUJhc2VOYW1lPSAoY2FzdDxNRFN0cmluZz4odHlwZUJhc2VOYW1lTm9kZS0+Z2V0 T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKTsKLSsgICAgICAgIGxsdm1JbmZvLnR5cGVCYXNl TmFtZT0gKGNhc3Q8TURTdHJpbmc+KHR5cGVCYXNlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkp KS0+Z2V0U3RyaW5nKCkuc3RyKCk7Ci0gICAgICAgfQotLSAgICAgIGxsdm1JbmZvLnR5cGVOYW1l PSAoY2FzdDxNRFN0cmluZz4odHlwZU5hbWVOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0 cmluZygpOwotLSAgICAgIGxsdm1JbmZvLnR5cGVRdWFsID0gKGNhc3Q8TURTdHJpbmc+KHR5cGVR dWFsTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKTsKLSsgICAgICBsbHZtSW5m by50eXBlTmFtZT0gKGNhc3Q8TURTdHJpbmc+KHR5cGVOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElE KSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSsgICAgICBsbHZtSW5mby50eXBlUXVhbCA9IChjYXN0 PE1EU3RyaW5nPih0eXBlUXVhbE5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCku c3RyKCk7Ci0gICAgICAgYm9vbCBpc0ltYWdlID0gbGx2bUluZm8uaXNJbWFnZVR5cGUoKTsKLSAg ICAgICBib29sIGlzUGlwZSA9IGxsdm1JbmZvLmlzUGlwZVR5cGUoKTsKLSAgICAgICBpZiAoSS0+ Z2V0VHlwZSgpLT5pc1BvaW50ZXJUeSgpIHx8IGlzSW1hZ2UgfHwgaXNQaXBlKSB7Ci1AQCAtMTUz MSw3ICsxNTMxLDcgQEAKLSAgICAgICAgICAgICBFbHRUeSA9IGdldEVsdFR5cGUoRWx0VHksIFR5 cGVJbmRleCk7Ci0gICAgICAgICB9Ci0KLS0gICAgICAgIGlyOjpDb25zdGFudCBjYyA9IHVuaXQu Z2V0Q29uc3RhbnRTZXQoKS5nZXRDb25zdGFudChwb2ludGVyLT5nZXROYW1lKCkpOwotKyAgICAg ICAgaXI6OkNvbnN0YW50IGNjID0gdW5pdC5nZXRDb25zdGFudFNldCgpLmdldENvbnN0YW50KHBv aW50ZXItPmdldE5hbWUoKS5zdHIoKSk7Ci0gICAgICAgICB1bnNpZ25lZCBpbnQgZGVmT2Zmc2V0 ID0gY2MuZ2V0T2Zmc2V0KCk7Ci0gICAgICAgICByZWxvY3MucHVzaF9iYWNrKGlyOjpSZWxvY0Vu dHJ5KG9mZnNldCwgZGVmT2Zmc2V0ICsgY29uc3RhbnRPZmZzZXQpKTsKLQotQEAgLTE1NDYsNyAr MTU0Niw3IEBACi0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gICAgIGlmIChpc2E8R2xvYmFsVmFy aWFibGU+KGMpKSB7Ci0tICAgICAgaXI6OkNvbnN0YW50IGNjID0gdW5pdC5nZXRDb25zdGFudFNl dCgpLmdldENvbnN0YW50KGMtPmdldE5hbWUoKSk7Ci0rICAgICAgaXI6OkNvbnN0YW50IGNjID0g dW5pdC5nZXRDb25zdGFudFNldCgpLmdldENvbnN0YW50KGMtPmdldE5hbWUoKS5zdHIoKSk7Ci0g ICAgICAgdW5zaWduZWQgaW50IGRlZk9mZnNldCA9IGNjLmdldE9mZnNldCgpOwotCi0gICAgICAg cmVsb2NzLnB1c2hfYmFjayhpcjo6UmVsb2NFbnRyeShvZmZzZXQsIGRlZk9mZnNldCkpOwotQEAg LTE2MDksNyArMTYwOSw3IEBACi0gICAgICAgICAgIH0KLSAgICAgICAgICAgYnJlYWs7Ci0gICAg ICAgICB9Ci0tICAgICAgY2FzZSBUeXBlOjpUeXBlSUQ6OlZlY3RvclR5SUQ6Ci0rICAgICAgY2Fz ZSBUeXBlOjpUeXBlSUQ6OkZpeGVkVmVjdG9yVHlJRDoKLSAgICAgICAgIHsKLSAgICAgICAgICAg Y29uc3QgQ29uc3RhbnREYXRhU2VxdWVudGlhbCAqY2RzID0gZHluX2Nhc3Q8Q29uc3RhbnREYXRh U2VxdWVudGlhbD4oYyk7Ci0gICAgICAgICAgIGNvbnN0IFZlY3RvclR5cGUgKnZlY1R5ID0gY2Fz dDxWZWN0b3JUeXBlPih0eXBlKTsKLUBAIC0xOTM2LDcgKzE5MzYsNyBAQAotICAgICAgIGNhc2Ug VHlwZTo6UG9pbnRlclR5SUQ6Ci0gICAgICAgICByZWdUcmFuc2xhdG9yLm5ld1NjYWxhcih2YWx1 ZSwga2V5LCAwLCB1bmlmb3JtKTsKLSAgICAgICAgIGJyZWFrOwotLSAgICAgIGNhc2UgVHlwZTo6 VmVjdG9yVHlJRDoKLSsgICAgICBjYXNlIFR5cGU6OkZpeGVkVmVjdG9yVHlJRDoKLSAgICAgICB7 Ci0gICAgICAgICBhdXRvIHZlY3RvclR5cGUgPSBjYXN0PFZlY3RvclR5cGU+KHR5cGUpOwotICAg ICAgICAgY29uc3QgdWludDMyX3QgZWxlbU51bSA9IHZlY3RvclR5cGUtPmdldE51bUVsZW1lbnRz KCk7Ci1AQCAtMjM5NSw3ICsyMzk1LDcgQEAKLSAjZW5kaWYKLSAgICAgICAgIH0KLSAgICAgICAg IGlmKHR5cGVOYW1lTm9kZSkgewotLSAgICAgICAgICBsbHZtSW5mby50eXBlTmFtZSA9IChjYXN0 PE1EU3RyaW5nPih0eXBlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7 Ci0rICAgICAgICAgIGxsdm1JbmZvLnR5cGVOYW1lID0gKGNhc3Q8TURTdHJpbmc+KHR5cGVOYW1l Tm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAgICAg Ly9MTFZNIDMuOSBpbWFnZSdzIHR5cGUgbmFtZSBpbmNsdWRlIGFjY2VzcyBxdWFsLCBkb24ndCBt YXRjaCBPcGVuQ0wgc3BlYywgZXJhc2UgdGhlbS4KLSAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3Rk OjpzdHJpbmc+IGZpbHRlcnMgPSB7Il9fcmVhZF9vbmx5ICIsICJfX3dyaXRlX29ubHkgIn07Ci0g ICAgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBmaWx0ZXJzLnNpemUoKTsgaSsrKSB7 Ci1AQCAtMjQwNiwxNiArMjQwNiwxNiBAQAotICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAg ICAgICBpZih0eXBlQmFzZU5hbWVOb2RlKXsKLS0gICAgICAgICAgbGx2bUluZm8udHlwZUJhc2VO YW1lID0gKGNhc3Q8TURTdHJpbmc+KHR5cGVCYXNlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkp KS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgICAgIGxsdm1JbmZvLnR5cGVCYXNlTmFtZSA9IChjYXN0 PE1EU3RyaW5nPih0eXBlQmFzZU5hbWVOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0cmlu ZygpLnN0cigpOwotICAgICAgICAgfQotICAgICAgICAgaWYoYWNjZXNzUXVhbE5vZGUpIHsKLS0g ICAgICAgICAgbGx2bUluZm8uYWNjZXNzUXVhbCA9IChjYXN0PE1EU3RyaW5nPihhY2Nlc3NRdWFs Tm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKTsKLSsgICAgICAgICAgbGx2bUlu Zm8uYWNjZXNzUXVhbCA9IChjYXN0PE1EU3RyaW5nPihhY2Nlc3NRdWFsTm9kZS0+Z2V0T3BlcmFu ZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKHR5 cGVRdWFsTm9kZSkgewotLSAgICAgICAgICBsbHZtSW5mby50eXBlUXVhbCA9IChjYXN0PE1EU3Ry aW5nPih0eXBlUXVhbE5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAg ICAgICAgIGxsdm1JbmZvLnR5cGVRdWFsID0gKGNhc3Q8TURTdHJpbmc+KHR5cGVRdWFsTm9kZS0+ Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAgIH0KLSAgICAg ICAgIGlmKGFyZ05hbWVOb2RlKXsKLS0gICAgICAgICAgbGx2bUluZm8uYXJnTmFtZSA9IChjYXN0 PE1EU3RyaW5nPihhcmdOYW1lTm9kZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKTsK LSsgICAgICAgICAgbGx2bUluZm8uYXJnTmFtZSA9IChjYXN0PE1EU3RyaW5nPihhcmdOYW1lTm9k ZS0+Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAgIH0KLQot ICAgICAgICAgLy8gZnVuY3Rpb24gYXJndW1lbnRzIGFyZSB1bmlmb3JtIHZhbHVlcy4KLUBAIC0z MDEwLDcgKzMwMTAsNyBAQAotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgdGhpcy0+bmV3 UmVnaXN0ZXIoY29uc3RfY2FzdDxHbG9iYWxWYXJpYWJsZSo+KCZ2KSk7Ci0gICAgICAgICAgIGly OjpSZWdpc3RlciByZWcgPSByZWdUcmFuc2xhdG9yLmdldFNjYWxhcihjb25zdF9jYXN0PEdsb2Jh bFZhcmlhYmxlKj4oJnYpLCAwKTsKLS0gICAgICAgICAgaXI6OkNvbnN0YW50ICZjb24gPSB1bml0 LmdldENvbnN0YW50U2V0KCkuZ2V0Q29uc3RhbnQodi5nZXROYW1lKCkpOwotKyAgICAgICAgICBp cjo6Q29uc3RhbnQgJmNvbiA9IHVuaXQuZ2V0Q29uc3RhbnRTZXQoKS5nZXRDb25zdGFudCh2Lmdl dE5hbWUoKS5zdHIoKSk7Ci0gICAgICAgICAgIGlmICghbGVnYWN5TW9kZSkgewotICAgICAgICAg ICAgIGlyOjpSZWdpc3RlciByZWdsb2FkID0gY3R4LnJlZyhnZXRGYW1pbHkoZ2V0VHlwZShjdHgs IHYuZ2V0VHlwZSgpKSkpOwotICAgICAgICAgICAgIGN0eC5MT0FESShnZXRUeXBlKGN0eCwgdi5n ZXRUeXBlKCkpLCByZWdsb2FkLCBjdHgubmV3SW50ZWdlckltbWVkaWF0ZShjb24uZ2V0T2Zmc2V0 KCksIGdldFR5cGUoY3R4LCB2LmdldFR5cGUoKSkpKTsKLUBAIC0zMjEyLDcgKzMyMTIsNyBAQAot ICAgICAgICAgR0JFX0FTU0VSVE0oZmFsc2UsICJVbnN1cHBvcnRlZCBjYWxsaW5nIGNvbnZlbnRp b24iKTsKLSAgICAgfQotCi0tICAgIGN0eC5zdGFydEZ1bmN0aW9uKEYuZ2V0TmFtZSgpKTsKLSsg ICAgY3R4LnN0YXJ0RnVuY3Rpb24oRi5nZXROYW1lKCkuc3RyKCkpOwotCi0gICAgIGlyOjpGdW5j dGlvbiAmZm4gPSBjdHguZ2V0RnVuY3Rpb24oKTsKLSAgICAgdGhpcy0+cmVnVHJhbnNsYXRvci5j bGVhcigpOwotQEAgLTM4MTAsOSArMzgxMCw5IEBACi0KLSAgIHZvaWQgR2VuV3JpdGVyOjpyZWdB bGxvY2F0ZUNhbGxJbnN0KENhbGxJbnN0ICZJKSB7Ci0gICAgIFZhbHVlICpkc3QgPSAmSTsKLS0g ICAgVmFsdWUgKkNhbGxlZSA9IEkuZ2V0Q2FsbGVkVmFsdWUoKTsKLSsgICAgVmFsdWUgKkNhbGxl ZSA9IEkuZ2V0Q2FsbGVkT3BlcmFuZCgpOwotICAgICBHQkVfQVNTRVJUKGN0eC5nZXRGdW5jdGlv bigpLmdldFByb2ZpbGUoKSA9PSBpcjo6UFJPRklMRV9PQ0wpOwotLSAgICBHQkVfQVNTRVJUKGlz YTxJbmxpbmVBc20+KEkuZ2V0Q2FsbGVkVmFsdWUoKSkgPT0gZmFsc2UpOwotKyAgICBHQkVfQVNT RVJUKGlzYTxJbmxpbmVBc20+KEkuZ2V0Q2FsbGVkT3BlcmFuZCgpKSA9PSBmYWxzZSk7Ci0gICAg IGlmKEkuZ2V0TnVtQXJnT3BlcmFuZHMoKSkgR0JFX0FTU0VSVChJLmhhc1N0cnVjdFJldEF0dHIo KSA9PSBmYWxzZSk7Ci0KLSAgICAgLy8gV2Ugb25seSBzdXBwb3J0IGEgc21hbGwgbnVtYmVyIG9m IGludHJpbnNpY3MgcmlnaHQgbm93Ci1AQCAtMzg3MCw3ICszODcwLDcgQEAKLSAgICAgICB9Ci0g ICAgIH0KLSAgICAgLy8gR2V0IHRoZSBuYW1lIG9mIHRoZSBjYWxsZWQgZnVuY3Rpb24gYW5kIGhh bmRsZSBpdAotLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPnN0cmlwUG9p bnRlckNhc3RzKCktPmdldE5hbWUoKTsKLSsgICAgY29uc3Qgc3RkOjpzdHJpbmcgZm5OYW1lID0g Q2FsbGVlLT5zdHJpcFBvaW50ZXJDYXN0cygpLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAgIGF1dG8g Z2VuSW50cmluc2ljSUQgPSBpbnRyaW5zaWNNYXAuZmluZChmbk5hbWUpOwotICAgICBzd2l0Y2gg KGdlbkludHJpbnNpY0lEKSB7Ci0gICAgICAgY2FzZSBHRU5fT0NMX0dFVF9HUk9VUF9JRDA6Ci1A QCAtNDE2Niw3ICs0MTY2LDcgQEAKLSAgICAgfTsKLSAgIH0KLQotLSAgdm9pZCBHZW5Xcml0ZXI6 OmVtaXRSb3VuZGluZ0NhbGxJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGlyOjpPcGNv ZGUgb3Bjb2RlKSB7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdFJvdW5kaW5nQ2FsbEluc3QoQ2Fs bEluc3QgJkksIGlyOjpPcGNvZGUgb3Bjb2RlKSB7Ci0gICAgIGlmIChJLmdldFR5cGUoKS0+aXNI YWxmVHkoKSkgewotICAgICAgIGNvbnN0IGlyOjpSZWdpc3RlciBzcmMgPSB0aGlzLT5nZXRSZWdp c3RlcihJLmdldE9wZXJhbmQoMCkpOwotICAgICAgIGNvbnN0IGlyOjpSZWdpc3RlciBzcmNGbG9h dCA9IGN0eC5yZWcoaXI6OkZBTUlMWV9EV09SRCk7Ci1AQCAtNDE3NywxNCArNDE3NywxNCBAQAot ICAgICAgIGN0eC5GMzJUTzE2KGlyOjpUWVBFX1UxNiwgaXI6OlRZUEVfRkxPQVQsIGRzdCwgZHN0 RmxvYXQpOwotICAgICB9IGVsc2UgewotICAgICAgIEdCRV9BU1NFUlQoSS5nZXRUeXBlKCktPmlz RmxvYXRUeSgpKTsKLS0gICAgICB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENTLG9wY29kZSk7 Ci0rICAgICAgdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxvcGNvZGUpOwotICAgICB9Ci0gICB9 Ci0KLS0gIHZvaWQgR2VuV3JpdGVyOjplbWl0VW5hcnlDYWxsSW5zdChDYWxsSW5zdCAmSSwgQ2Fs bFNpdGUgJkNTLCBpcjo6T3Bjb2RlIG9wY29kZSwgaXI6OlR5cGUgdHlwZSkgewotLSAgICBDYWxs U2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0rICB2b2lkIEdlbldyaXRl cjo6ZW1pdFVuYXJ5Q2FsbEluc3QoQ2FsbEluc3QgJkksIGlyOjpPcGNvZGUgb3Bjb2RlLCBpcjo6 VHlwZSB0eXBlKSB7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsK LSAjaWYgR0JFX0RFQlVHCi0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdf ZW5kKCk7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFFID0gSS5hcmdfZW5kKCk7Ci0gI2VuZGlm IC8qIEdCRV9ERUJVRyAqLwotICAgICBHQkVfQVNTRVJUKEFJICE9IEFFKTsKLSAgICAgY29uc3Qg aXI6OlJlZ2lzdGVyIHNyYyA9IHRoaXMtPmdldFJlZ2lzdGVyKCpBSSk7Ci1AQCAtNDI5Myw5ICs0 MjkzLDkgQEAKLSAgICAgdGhpcy0+ZW1pdEF0b21pY0luc3RIZWxwZXIob3Bjb2RlLCB0eXBlLCBk c3QsIGxsdm1QdHIsIHBheWxvYWRUdXBsZSk7Ci0gICB9Ci0KLS0gIHZvaWQgR2VuV3JpdGVyOjpl bWl0QXRvbWljSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6QXRvbWljT3BzIG9w Y29kZSkgewotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7 Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0rICB2b2lk IEdlbldyaXRlcjo6ZW1pdEF0b21pY0luc3QoQ2FsbEluc3QgJkksIGlyOjpBdG9taWNPcHMgb3Bj b2RlKSB7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSsgICAg VXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAgICAgR0JFX0FTU0VSVChBSSAh PSBBRSk7Ci0gICAgIFZhbHVlICpsbHZtUHRyID0gKkFJOwotICAgICBpcjo6QWRkcmVzc1NwYWNl IGFkZHJTcGFjZSA9IGFkZHJlc3NTcGFjZUxMVk1Ub0dlbihsbHZtUHRyLT5nZXRUeXBlKCktPmdl dFBvaW50ZXJBZGRyZXNzU3BhY2UoKSk7Ci1AQCAtNDM0OCw3ICs0MzQ4LDcgQEAKLSAgICAgfQot ICAgfQotCi0tICB2b2lkIEdlbldyaXRlcjo6ZW1pdFdvcmtHcm91cEluc3QoQ2FsbEluc3QgJkks IENhbGxTaXRlICZDUywgaXI6OldvcmtHcm91cE9wcyBvcGNvZGUpIHsKLSsgIHZvaWQgR2VuV3Jp dGVyOjplbWl0V29ya0dyb3VwSW5zdChDYWxsSW5zdCAmSSwgaXI6OldvcmtHcm91cE9wcyBvcGNv ZGUpIHsKLSAgICAgaXI6OkZ1bmN0aW9uICZmID0gY3R4LmdldEZ1bmN0aW9uKCk7Ci0KLSAgICAg aWYgKGYuZ2V0d2dCcm9hZGNhc3RTTE0oKSA8IDAgJiYgb3Bjb2RlID09IGlyOjpXT1JLR1JPVVBf T1BfQlJPQURDQVNUKSB7Ci1AQCAtNDM3OCw4ICs0Mzc4LDggQEAKLSAgICAgICBHQkVfQVNTRVJU KGYuZ2V0dGlkTWFwU0xNKCkgPj0gMCk7Ci0gICAgIH0KLQotLSAgICBDYWxsU2l0ZTo6YXJnX2l0 ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3Ig QUUgPSBDUy5hcmdfZW5kKCk7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVn aW4oKTsKLSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAgICAgR0JF X0FTU0VSVChBSSAhPSBBRSk7Ci0KLSAgICAgaWYgKG9wY29kZSA9PSBpcjo6V09SS0dST1VQX09Q X0FMTCB8fCBvcGNvZGUgPT0gaXI6OldPUktHUk9VUF9PUF9BTlkpIHsKLUBAIC00MzkxLDE0ICs0 MzkxLDE0IEBACi0gICAgICAgY29uc3QgaXI6OlR1cGxlIHNyY1R1cGxlID0gY3R4LmFycmF5VHVw bGUoJnNyY1swXSwgMyk7Ci0gICAgICAgY3R4LldPUktHUk9VUChvcGNvZGUsICh1aW50MzJfdClm LmdldHRpZE1hcFNMTSgpLCBnZXRSZWdpc3RlcigmSSksIHNyY1R1cGxlLCAzLCBpcjo6VFlQRV9T MzIpOwotICAgICB9IGVsc2UgaWYgKG9wY29kZSA9PSBpcjo6V09SS0dST1VQX09QX0JST0FEQ0FT VCkgewotLSAgICAgIGludCBhcmdOdW0gPSBDUy5hcmdfc2l6ZSgpOwotKyAgICAgIGludCBhcmdO dW0gPSBJLmFyZ19zaXplKCk7Ci0gICAgICAgc3RkOjp2ZWN0b3I8aXI6OlJlZ2lzdGVyPiBzcmMo YXJnTnVtKTsKLSAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ051bTsgaSsrKSB7Ci0gICAg ICAgICBzcmNbaV0gPSB0aGlzLT5nZXRSZWdpc3RlcigqKEFJKyspKTsKLSAgICAgICB9Ci0gICAg ICAgY29uc3QgaXI6OlR1cGxlIHNyY1R1cGxlID0gY3R4LmFycmF5VHVwbGUoJnNyY1swXSwgYXJn TnVtKTsKLSAgICAgICBjdHguV09SS0dST1VQKGlyOjpXT1JLR1JPVVBfT1BfQlJPQURDQVNULCAo dWludDMyX3QpZi5nZXR3Z0Jyb2FkY2FzdFNMTSgpLCBnZXRSZWdpc3RlcigmSSksIHNyY1R1cGxl LCBhcmdOdW0sCi0tICAgICAgICAgIGdldFR5cGUoY3R4LCAoKkNTLmFyZ19iZWdpbigpKS0+Z2V0 VHlwZSgpKSk7Ci0rICAgICAgICAgIGdldFR5cGUoY3R4LCAoKkkuYXJnX2JlZ2luKCkpLT5nZXRU eXBlKCkpKTsKLSAgICAgfSBlbHNlIHsKLSAgICAgICBDb25zdGFudEludCAqc2lnbiA9IGR5bl9j YXN0PENvbnN0YW50SW50PihBSSk7Ci0gICAgICAgR0JFX0FTU0VSVChzaWduKTsKLUBAIC00NDIz LDkgKzQ0MjMsOSBAQAotICAgICBHQkVfQVNTRVJUKEFJID09IEFFKTsKLSAgIH0KLQotLSAgdm9p ZCBHZW5Xcml0ZXI6OmVtaXRTdWJHcm91cEluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywg aXI6OldvcmtHcm91cE9wcyBvcGNvZGUpIHsKLS0gICAgQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBB SSA9IENTLmFyZ19iZWdpbigpOwotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1Mu YXJnX2VuZCgpOwotKyAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRTdWJHcm91cEluc3QoQ2FsbEluc3Qg JkksIGlyOjpXb3JrR3JvdXBPcHMgb3Bjb2RlKSB7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJ ID0gSS5hcmdfYmVnaW4oKTsKLSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQo KTsKLSAgICAgR0JFX0FTU0VSVChBSSAhPSBBRSk7Ci0KLSAgICAgaWYgKG9wY29kZSA9PSBpcjo6 V09SS0dST1VQX09QX0FMTCB8fCBvcGNvZGUgPT0gaXI6OldPUktHUk9VUF9PUF9BTlkpIHsKLUBA IC00NDM1LDcgKzQ0MzUsNyBAQAotICAgICAgIGNvbnN0IGlyOjpUdXBsZSBzcmNUdXBsZSA9IGN0 eC5hcnJheVR1cGxlKCZzcmNbMF0sIDEpOwotICAgICAgIGN0eC5TVUJHUk9VUChvcGNvZGUsIGdl dFJlZ2lzdGVyKCZJKSwgc3JjVHVwbGUsIDEsIGlyOjpUWVBFX1MzMik7Ci0gICAgIH0gZWxzZSBp ZiAob3Bjb2RlID09IGlyOjpXT1JLR1JPVVBfT1BfQlJPQURDQVNUKSB7Ci0tICAgICAgaW50IGFy Z051bSA9IENTLmFyZ19zaXplKCk7Ci0rICAgICAgaW50IGFyZ051bSA9IEkuYXJnX3NpemUoKTsK LSAgICAgICBHQkVfQVNTRVJUKGFyZ051bSA9PSAyKTsKLSAgICAgICBzdGQ6OnZlY3Rvcjxpcjo6 UmVnaXN0ZXI+IHNyYyhhcmdOdW0pOwotICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJnTnVt OyBpKyspIHsKLUBAIC00NDQzLDcgKzQ0NDMsNyBAQAotICAgICAgIH0KLSAgICAgICBjb25zdCBp cjo6VHVwbGUgc3JjVHVwbGUgPSBjdHguYXJyYXlUdXBsZSgmc3JjWzBdLCBhcmdOdW0pOwotICAg ICAgIGN0eC5TVUJHUk9VUChpcjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCwgZ2V0UmVnaXN0ZXIo JkkpLCBzcmNUdXBsZSwgYXJnTnVtLAotLSAgICAgICAgICBnZXRUeXBlKGN0eCwgKCpDUy5hcmdf YmVnaW4oKSktPmdldFR5cGUoKSkpOwotKyAgICAgICAgICBnZXRUeXBlKGN0eCwgKCpJLmFyZ19i ZWdpbigpKS0+Z2V0VHlwZSgpKSk7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgQ29uc3RhbnRJbnQg KnNpZ24gPSBkeW5fY2FzdDxDb25zdGFudEludD4oQUkpOwotICAgICAgIEdCRV9BU1NFUlQoc2ln bik7Ci1AQCAtNDQ2Niw5ICs0NDY2LDkgQEAKLSAgICAgR0JFX0FTU0VSVChBSSA9PSBBRSk7Ci0g ICB9Ci0KLS0gIHZvaWQgR2VuV3JpdGVyOjplbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KENhbGxJ bnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGJvb2wgaXNXcml0ZSwgdWludDhfdCB2ZWNfc2l6ZSwgaXI6 OlR5cGUgdHlwZSkgewotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2Jl Z2luKCk7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0r ICB2b2lkIEdlbldyaXRlcjo6ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChDYWxsSW5zdCAmSSwg Ym9vbCBpc1dyaXRlLCB1aW50OF90IHZlY19zaXplLCBpcjo6VHlwZSB0eXBlKSB7Ci0rICAgIFVz ZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSsgICAgVXNlcjo6b3BfaXRlcmF0 b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAgICAgR0JFX0FTU0VSVChBSSAhPSBBRSk7Ci0KLSAgICAg VmFsdWUgKmxsdm1QdHIgPSAqKEFJKyspOwotQEAgLTQ1MjIsOSArNDUyMiw5IEBACi0gICAgIEdC RV9BU1NFUlQoQUkgPT0gQUUpOwotICAgfQotCi0tICB2b2lkIEdlbldyaXRlcjo6ZW1pdEJsb2Nr UmVhZFdyaXRlSW1hZ2VJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGJvb2wgaXNXcml0 ZSwgdWludDhfdCB2ZWNfc2l6ZSwgaXI6OlR5cGUgdHlwZSkgewotLSAgICBDYWxsU2l0ZTo6YXJn X2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0 b3IgQUUgPSBDUy5hcmdfZW5kKCk7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdEJsb2NrUmVhZFdy aXRlSW1hZ2VJbnN0KENhbGxJbnN0ICZJLCBib29sIGlzV3JpdGUsIHVpbnQ4X3QgdmVjX3NpemUs IGlyOjpUeXBlIHR5cGUpIHsKLSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUkgPSBJLmFyZ19iZWdp bigpOwotKyAgICBVc2VyOjpvcF9pdGVyYXRvciBBRSA9IEkuYXJnX2VuZCgpOwotICAgICBHQkVf QVNTRVJUKEFJICE9IEFFKTsKLQotICAgICBjb25zdCB1aW50OF90IGltYWdlSUQgPSBnZXRJbWFn ZUlEKEkpOwotQEAgLTQ1NTcsNyArNDU1Nyw3IEBACi0KLSAgIC8qIGFwcGVuZCBhIG5ldyBzYW1w bGVyLiBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSBhbnkgcmVmZXJlbmNlIHRvCi0gICAgKiBhIHNh bXBsZXJfdCB2YWx1ZS4gKi8KLS0gIHVpbnQ4X3QgR2VuV3JpdGVyOjphcHBlbmRTYW1wbGVyKENh bGxTaXRlOjphcmdfaXRlcmF0b3IgQUkpIHsKLSsgIHVpbnQ4X3QgR2VuV3JpdGVyOjphcHBlbmRT YW1wbGVyKFVzZXI6Om9wX2l0ZXJhdG9yIEFJKSB7Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAq IDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDQwCi0gICAgIENhbGxJbnN0ICpUQyA9IGR5bl9j YXN0PENhbGxJbnN0PigqQUkpOwotICAgICBDb25zdGFudCAqQ1BWID0gVEMgPyBkeW5fY2FzdDxD b25zdGFudD4oVEMtPmdldE9wZXJhbmQoMCkpIDogTlVMTDsKLUBAIC00NTk1LDEwICs0NTk1LDkg QEAKLSAgICAgICAgIGNvbnN0IGlyOjpGdW5jdGlvbiAmZm4gPSBjdHguZ2V0RnVuY3Rpb24oKTsK LQotICAgICAgICAgLy8gR2V0IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMKLS0gICAgICAgIENhbGxT aXRlIENTKCZJKTsKLS0gICAgICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUkgPSBDUy5hcmdf YmVnaW4oKTsKLSsgICAgICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsK LSAjaWYgR0JFX0RFQlVHCi0tICAgICAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1Mu YXJnX2VuZCgpOwotKyAgICAgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsK LSAjZW5kaWYgLyogR0JFX0RFQlVHICovCi0gICAgICAgICBzd2l0Y2ggKEYtPmdldEludHJpbnNp Y0lEKCkpIHsKLSAgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OnN0YWNrc2F2ZToKLUBAIC00NzY0 LDE3ICs0NzYzLDE3IEBACi0gICAgICAgICAgICAgY3R4Lk1BRChzcmNUeXBlLCBkc3QsIHNyYzAs IHNyYzEsIHNyYzIpOwotICAgICAgICAgICB9Ci0gICAgICAgICAgIGJyZWFrOwotLSAgICAgICAg ICBjYXNlIEludHJpbnNpYzo6c3FydDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6 T1BfU1FSKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpjZWlsOiB0aGlzLT5l bWl0Um91bmRpbmdDYWxsSW5zdChJLENTLGlyOjpPUF9STkRVKTsgYnJlYWs7Ci0tICAgICAgICAg IGNhc2UgSW50cmluc2ljOjp0cnVuYzogdGhpcy0+ZW1pdFJvdW5kaW5nQ2FsbEluc3QoSSxDUyxp cjo6T1BfUk5EWik7IGJyZWFrOwotLSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6cmludDogdGhp cy0+ZW1pdFJvdW5kaW5nQ2FsbEluc3QoSSxDUyxpcjo6T1BfUk5ERSk7IGJyZWFrOwotLSAgICAg ICAgICBjYXNlIEludHJpbnNpYzo6Zmxvb3I6IHRoaXMtPmVtaXRSb3VuZGluZ0NhbGxJbnN0KEks Q1MsaXI6Ok9QX1JOREQpOyBicmVhazsKLS0gICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OnNpbjog dGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfU0lOKTsgYnJlYWs7Ci0tICAgICAg ICAgIGNhc2UgSW50cmluc2ljOjpjb3M6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6 Ok9QX0NPUyk7IGJyZWFrOwotLSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6bG9nMjogdGhpcy0+ ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfTE9HKTsgYnJlYWs7Ci0tICAgICAgICAgIGNh c2UgSW50cmluc2ljOjpleHAyOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENTLGlyOjpPUF9F WFApOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OnNxcnQ6IHRoaXMtPmVtaXRV bmFyeUNhbGxJbnN0KEksaXI6Ok9QX1NRUik7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEludHJp bnNpYzo6Y2VpbDogdGhpcy0+ZW1pdFJvdW5kaW5nQ2FsbEluc3QoSSxpcjo6T1BfUk5EVSk7IGJy ZWFrOwotKyAgICAgICAgICBjYXNlIEludHJpbnNpYzo6dHJ1bmM6IHRoaXMtPmVtaXRSb3VuZGlu Z0NhbGxJbnN0KEksaXI6Ok9QX1JORFopOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5z aWM6OnJpbnQ6IHRoaXMtPmVtaXRSb3VuZGluZ0NhbGxJbnN0KEksaXI6Ok9QX1JOREUpOyBicmVh azsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OmZsb29yOiB0aGlzLT5lbWl0Um91bmRpbmdD YWxsSW5zdChJLGlyOjpPUF9STkREKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgSW50cmluc2lj OjpzaW46IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX1NJTik7IGJyZWFrOwotKyAg ICAgICAgICBjYXNlIEludHJpbnNpYzo6Y29zOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLGly OjpPUF9DT1MpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OmxvZzI6IHRoaXMt PmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX0xPRyk7IGJyZWFrOwotKyAgICAgICAgICBjYXNl IEludHJpbnNpYzo6ZXhwMjogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxpcjo6T1BfRVhQKTsg YnJlYWs7Ci0gICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpic3dhcDoKLS0gICAgICAgICAgICB0 aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENTLGlyOjpPUF9CU1dBUCwgZ2V0VW5zaWduZWRUeXBl KGN0eCwgSS5nZXRUeXBlKCkpKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFVuYXJ5 Q2FsbEluc3QoSSxpcjo6T1BfQlNXQVAsIGdldFVuc2lnbmVkVHlwZShjdHgsIEkuZ2V0VHlwZSgp KSk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEludHJpbnNpYzo6cG93OgotICAgICAgICAgICB7 Ci0gICAgICAgICAgICAgY29uc3QgaXI6OlJlZ2lzdGVyIHNyYzAgPSB0aGlzLT5nZXRSZWdpc3Rl cigqQUkpOyArK0FJOwotQEAgLTQ3OTQsMjEgKzQ3OTMsMjAgQEAKLSAgICAgICAgIH0KLSAgICAg ICB9IGVsc2UgewotICAgICAgICAgLy8gR2V0IHRoZSBuYW1lIG9mIHRoZSBjYWxsZWQgZnVuY3Rp b24gYW5kIGhhbmRsZSBpdAotLSAgICAgICAgVmFsdWUgKkNhbGxlZSA9IEkuZ2V0Q2FsbGVkVmFs dWUoKTsKLS0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZuTmFtZSA9IENhbGxlZS0+c3RyaXBQ b2ludGVyQ2FzdHMoKS0+Z2V0TmFtZSgpOwotKyAgICAgICAgVmFsdWUgKkNhbGxlZSA9IEkuZ2V0 Q2FsbGVkT3BlcmFuZCgpOwotKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZm5OYW1lID0gQ2Fs bGVlLT5zdHJpcFBvaW50ZXJDYXN0cygpLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAgICAgICBhdXRv IGdlbkludHJpbnNpY0lEID0gaW50cmluc2ljTWFwLmZpbmQoZm5OYW1lKTsKLQotICAgICAgICAg Ly8gR2V0IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMKLS0gICAgICAgIENhbGxTaXRlIENTKCZJKTsK LS0gICAgICAgIENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUkgPSBDUy5hcmdfYmVnaW4oKTsKLSsg ICAgICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSAjaWYgR0JFX0RF QlVHCi0tICAgICAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwot KyAgICAgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUgPSBJLmFyZ19lbmQoKTsKLSAjZW5kaWYgLyog R0JFX0RFQlVHICovCi0KLSAgICAgICAgIHN3aXRjaCAoZ2VuSW50cmluc2ljSUQpIHsKLS0gICAg ICAgICAgY2FzZSBHRU5fT0NMX0ZCSDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6 T1BfRkJILCBpcjo6VFlQRV9VMzIpOyBicmVhazsKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0ZC TDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfRkJMLCBpcjo6VFlQRV9VMzIp OyBicmVhazsKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0NCSVQ6IHRoaXMtPmVtaXRVbmFyeUNh bGxJbnN0KEksQ1MsaXI6Ok9QX0NCSVQsIGdldFVuc2lnbmVkVHlwZShjdHgsICgqQUkpLT5nZXRU eXBlKCkpKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9GQkg6IHRoaXMtPmVtaXRV bmFyeUNhbGxJbnN0KEksaXI6Ok9QX0ZCSCwgaXI6OlRZUEVfVTMyKTsgYnJlYWs7Ci0rICAgICAg ICAgIGNhc2UgR0VOX09DTF9GQkw6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX0ZC TCwgaXI6OlRZUEVfVTMyKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9DQklUOiB0 aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLGlyOjpPUF9DQklULCBnZXRVbnNpZ25lZFR5cGUoY3R4 LCAoKkFJKS0+Z2V0VHlwZSgpKSk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfQUJT OgotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgY29uc3QgaXI6OlJlZ2lzdGVyIHNyYyA9IHRo aXMtPmdldFJlZ2lzdGVyKCpBSSk7Ci1AQCAtNDkxNSw4ICs0OTEzLDggQEAKLSAgICAgICAgICAg ICBjdHguUkVHSU9OKGRzdCwgc3JjLCB4LmdldEludGVnZXJWYWx1ZSgpKTsKLSAgICAgICAgICAg ICBicmVhazsKLSAgICAgICAgICAgfQotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xfUlNROiB0aGlz LT5lbWl0VW5hcnlDYWxsSW5zdChJLENTLGlyOjpPUF9SU1EpOyBicmVhazsKLS0gICAgICAgICAg Y2FzZSBHRU5fT0NMX1JDUDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfUkNQ KTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9SU1E6IHRoaXMtPmVtaXRVbmFyeUNh bGxJbnN0KEksaXI6Ok9QX1JTUSk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfUkNQ OiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLGlyOjpPUF9SQ1ApOyBicmVhazsKLSAgICAgICAg ICAgY2FzZSBHRU5fT0NMX0ZPUkNFX1NJTUQ4OiBjdHguc2V0U2ltZFdpZHRoKDgpOyBicmVhazsK LSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0ZPUkNFX1NJTUQxNjogY3R4LnNldFNpbWRXaWR0aCgx Nik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfTEJBUlJJRVI6IGN0eC5TWU5DKGly OjpzeW5jTG9jYWxCYXJyaWVyKTsgYnJlYWs7Ci1AQCAtNDk0NywzMSArNDk0NSwzMSBAQAotICAg ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICB9Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9B VE9NSUNfQUREMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19BREQxOiB0aGlzLT5l bWl0QXRvbWljSW5zdChJLENTLGlyOjpBVE9NSUNfT1BfQUREKTsgYnJlYWs7Ci0rICAgICAgICAg IGNhc2UgR0VOX09DTF9BVE9NSUNfQUREMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRP TUlDX09QX0FERCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1NVQjA6 Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfU1VCMTogdGhpcy0+ZW1pdEF0b21pY0lu c3QoSSxDUyxpcjo6QVRPTUlDX09QX1NVQik7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9P Q0xfQVRPTUlDX1NVQjE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9TVUIp OyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19BTkQwOgotLSAgICAgICAg ICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0FORDE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6 OkFUT01JQ19PUF9BTkQpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19B TkQxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLGlyOjpBVE9NSUNfT1BfQU5EKTsgYnJlYWs7Ci0g ICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfT1IwOgotLSAgICAgICAgICBjYXNlIEdFTl9P Q0xfQVRPTUlDX09SMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX09S KTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfT1IxOiB0aGlzLT5lbWl0 QXRvbWljSW5zdChJLGlyOjpBVE9NSUNfT1BfT1IpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBH RU5fT0NMX0FUT01JQ19YT1IwOgotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1hPUjE6 IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9YT1IpOyBicmVhazsKLSsg ICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19YT1IxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJ LGlyOjpBVE9NSUNfT1BfWE9SKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9N SUNfWENIRzA6Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfWENIRzE6IHRoaXMtPmVt aXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9YQ0hHKTsgYnJlYWs7Ci0rICAgICAgICAg IGNhc2UgR0VOX09DTF9BVE9NSUNfWENIRzE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFU T01JQ19PUF9YQ0hHKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfSU5D MDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTkMxOiB0aGlzLT5lbWl0QXRvbWlj SW5zdChJLENTLGlyOjpBVE9NSUNfT1BfSU5DKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VO X09DTF9BVE9NSUNfSU5DMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0lO Qyk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0RFQzA6Ci0tICAgICAg ICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfREVDMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxp cjo6QVRPTUlDX09QX0RFQyk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlD X0RFQzE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9ERUMpOyBicmVhazsK LSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUlOMDoKLS0gICAgICAgICAgY2FzZSBH RU5fT0NMX0FUT01JQ19VTUlOMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlD X09QX1VNSU4pOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUlOMTog dGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX1VNSU4pOyBicmVhazsKLSAgICAg ICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUFYMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NM X0FUT01JQ19VTUFYMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX1VN QVgpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19VTUFYMTogdGhpcy0+ ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX1VNQVgpOyBicmVhazsKLSAgICAgICAgICAg Y2FzZSBHRU5fT0NMX0FUT01JQ19JTUlOMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01J Q19JTUlOMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX0lNSU4pOyBi cmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUlOMTogdGhpcy0+ZW1pdEF0 b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0lNSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBH RU5fT0NMX0FUT01JQ19JTUFYMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUFY MTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX0lNQVgpOyBicmVhazsK LSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19JTUFYMTogdGhpcy0+ZW1pdEF0b21pY0lu c3QoSSxpcjo6QVRPTUlDX09QX0lNQVgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NM X0FUT01JQ19DTVBYQ0hHMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19DTVBYQ0hH MTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX0NNUFhDSEcpOyBicmVh azsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19DTVBYQ0hHMTogdGhpcy0+ZW1pdEF0 b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX0NNUFhDSEcpOyBicmVhazsKLSAgICAgICAgICAgY2Fz ZSBHRU5fT0NMX0dFVF9JTUFHRV9XSURUSDoKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0dFVF9J TUFHRV9IRUlHSFQ6Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9HRVRfSU1BR0VfREVQVEg6Ci1A QCAtNTQyOSw0OCArNTQyNyw0OCBAQAotICAgICAgICAgICAgIGN0eC5XQUlUKCk7Ci0gICAgICAg ICAgICAgYnJlYWs7Ci0gICAgICAgICAgIH0KLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktf R1JPVVBfQUxMOiB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9P UF9BTEwpOyBicmVhazsKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfQU5ZOiB0 aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9BTlkpOyBicmVh azsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfQUxMOiB0aGlzLT5lbWl0V29y a0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0FMTCk7IGJyZWFrOwotKyAgICAgICAgICBj YXNlIEdFTl9PQ0xfV09SS19HUk9VUF9BTlk6IHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGly OjpXT1JLR1JPVVBfT1BfQU5ZKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9XT1JL X0dST1VQX0JST0FEQ0FTVDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJ LCBDUywgaXI6OldPUktHUk9VUF9PUF9CUk9BRENBU1QpOyBicmVhazsKLSsgICAgICAgICAgICB0 aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCk7IGJy ZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9SRURVQ0VfQUREOgotLSAg ICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09Q X1JFRFVDRV9BREQpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5z dChJLCBpcjo6V09SS0dST1VQX09QX1JFRFVDRV9BREQpOyBicmVhazsKLSAgICAgICAgICAgY2Fz ZSBHRU5fT0NMX1dPUktfR1JPVVBfUkVEVUNFX01BWDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0 V29ya0dyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfTUFYKTsgYnJlYWs7 Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9P UF9SRURVQ0VfTUFYKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9XT1JLX0dST1VQ X1JFRFVDRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1Ms IGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01JTik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMt PmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01JTik7IGJyZWFr OwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9BREQ6 Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JP VVBfT1BfRVhDTFVTSVZFX0FERCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3Jr R3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX0FERCk7IGJyZWFrOwotICAg ICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9NQVg6Ci0tICAg ICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1Bf RVhDTFVTSVZFX01BWCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJ bnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX01BWCk7IGJyZWFrOwotICAgICAgICAg ICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9NSU46Ci0tICAgICAgICAg ICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVT SVZFX01JTik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEks IGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVTSVZFX01JTik7IGJyZWFrOwotICAgICAgICAgICBjYXNl IEdFTl9PQ0xfV09SS19HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9BREQ6Ci0tICAgICAgICAgICAgdGhp cy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX0FE RCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpX T1JLR1JPVVBfT1BfSU5DTFVTSVZFX0FERCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9P Q0xfV09SS19HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9NQVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1p dFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01BWCk7IGJy ZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JP VVBfT1BfSU5DTFVTSVZFX01BWCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfV09S S19HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtH cm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01JTik7IGJyZWFrOwot KyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1Bf SU5DTFVTSVZFX01JTik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQ X0JST0FEQ0FTVDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0U3ViR3JvdXBJbnN0KEksIENTLCBp cjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVt aXRTdWJHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9CUk9BRENBU1QpOyBicmVhazsKLSAg ICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9SRURVQ0VfQUREOgotLSAgICAgICAgICAg IHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX0FE RCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgaXI6OldP UktHUk9VUF9PUF9SRURVQ0VfQUREKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9T VUJfR1JPVVBfUkVEVUNFX01BWDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0U3ViR3JvdXBJbnN0 KEksIENTLCBpcjo6V09SS0dST1VQX09QX1JFRFVDRV9NQVgpOyBicmVhazsKLSsgICAgICAgICAg ICB0aGlzLT5lbWl0U3ViR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01BWCk7 IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX1JFRFVDRV9NSU46Ci0t ICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9P UF9SRURVQ0VfTUlOKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5z dChJLCBpcjo6V09SS0dST1VQX09QX1JFRFVDRV9NSU4pOyBicmVhazsKLSAgICAgICAgICAgY2Fz ZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9BREQ6Ci0tICAgICAgICAgICAgdGhp cy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9FWENMVVNJVkVfQURE KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09S S0dST1VQX09QX0VYQ0xVU0lWRV9BREQpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NM X1NVQl9HUk9VUF9TQ0FOX0VYQ0xVU0lWRV9NQVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1 Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9FWENMVVNJVkVfTUFYKTsgYnJlYWs7 Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09Q X0VYQ0xVU0lWRV9NQVgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9V UF9TQ0FOX0VYQ0xVU0lWRV9NSU46Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5z dChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9FWENMVVNJVkVfTUlOKTsgYnJlYWs7Ci0rICAgICAg ICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lW RV9NSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0lO Q0xVU0lWRV9BREQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywg aXI6OldPUktHUk9VUF9PUF9JTkNMVVNJVkVfQUREKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhp cy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0lOQ0xVU0lWRV9BREQpOyBi cmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9N QVg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktH Uk9VUF9PUF9JTkNMVVNJVkVfTUFYKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1 Ykdyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0lOQ0xVU0lWRV9NQVgpOyBicmVhazsKLSAg ICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9TQ0FOX0lOQ0xVU0lWRV9NSU46Ci0tICAg ICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9J TkNMVVNJVkVfTUlOKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5z dChJLCBpcjo6V09SS0dST1VQX09QX0lOQ0xVU0lWRV9NSU4pOyBicmVhazsKLSAgICAgICAgICAg Y2FzZSBHRU5fT0NMX0xSUDoKLSAgICAgICAgICAgewotICAgICAgICAgICAgIGNvbnN0IGlyOjpS ZWdpc3RlciBkc3QgID0gdGhpcy0+Z2V0UmVnaXN0ZXIoJkkpOwotQEAgLTU0ODQsNjkgKzU0ODIs NjkgQEAKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgfQotICAgICAgICAgICBjYXNl IEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVUlfTUVNOgotLSAgICAgICAgICAgIHRoaXMt PmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIGZhbHNlLCAxKTsgYnJlYWs7Ci0rICAg ICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBmYWxzZSwgMSk7IGJy ZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVUlfTUVN MjoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCBm YWxzZSwgMik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1l bUluc3QoSSwgZmFsc2UsIDIpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9H Uk9VUF9CTE9DS19SRUFEX1VJX01FTTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVh ZFdyaXRlTWVtSW5zdChJLCBDUywgZmFsc2UsIDQpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlz LT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIGZhbHNlLCA0KTsgYnJlYWs7Ci0gICAgICAg ICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VSV9NRU04OgotLSAgICAgICAg ICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIGZhbHNlLCA4KTsgYnJl YWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBmYWxz ZSwgOCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dS SVRFX1VJX01FTToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0 KEksIENTLCB0cnVlLCAxKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVh ZFdyaXRlTWVtSW5zdChJLCB0cnVlLCAxKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09D TF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlfTUVNMjoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0 QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCAyKTsgYnJlYWs7Ci0rICAgICAgICAg ICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0cnVlLCAyKTsgYnJlYWs7Ci0g ICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlfTUVNNDoKLS0g ICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCA0 KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJ LCB0cnVlLCA0KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxP Q0tfV1JJVEVfVUlfTUVNODoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVN ZW1JbnN0KEksIENTLCB0cnVlLCA4KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJs b2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0cnVlLCA4KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2Ug R0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VSV9JTUFHRToKLS0gICAgICAgICAgICB0aGlz LT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIGZhbHNlLCAxKTsgYnJlYWs7Ci0r ICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIGZhbHNlLCAx KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9V SV9JTUFHRTI6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0 KEksIENTLCBmYWxzZSwgMik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1Jl YWRXcml0ZUltYWdlSW5zdChJLCBmYWxzZSwgMik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdF Tl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVUlfSU1BR0U0OgotLSAgICAgICAgICAgIHRoaXMt PmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgZmFsc2UsIDQpOyBicmVhazsKLSsg ICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgZmFsc2UsIDQp OyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VJ X0lNQUdFODoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3Qo SSwgQ1MsIGZhbHNlLCA4KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVh ZFdyaXRlSW1hZ2VJbnN0KEksIGZhbHNlLCA4KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VO X09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlfSU1BR0U6Ci0tICAgICAgICAgICAgdGhpcy0+ ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCB0cnVlLCAxKTsgYnJlYWs7Ci0rICAg ICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDEpOyBi cmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VSV9J TUFHRTI6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEks IENTLCB0cnVlLCAyKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdy aXRlSW1hZ2VJbnN0KEksIHRydWUsIDIpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NM X1NVQl9HUk9VUF9CTE9DS19XUklURV9VSV9JTUFHRTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1p dEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCB0cnVlLCA0KTsgYnJlYWs7Ci0rICAgICAg ICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDQpOyBicmVh azsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VSV9JTUFH RTg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENT LCB0cnVlLCA4KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRl SW1hZ2VJbnN0KEksIHRydWUsIDgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NV Ql9HUk9VUF9CTE9DS19SRUFEX1VTX01FTToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tS ZWFkV3JpdGVNZW1JbnN0KEksIENTLCBmYWxzZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0r ICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBmYWxzZSwgMSwg aXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBf QkxPQ0tfUkVBRF9VU19NRU0yOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0 ZU1lbUluc3QoSSwgQ1MsIGZhbHNlLCAyLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAg ICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIGZhbHNlLCAyLCBpcjo6VFlQ RV9VMTYpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19S RUFEX1VTX01FTTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5z dChJLCBDUywgZmFsc2UsIDQsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRo aXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgZmFsc2UsIDQsIGlyOjpUWVBFX1UxNik7 IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVVNf TUVNODoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENT LCBmYWxzZSwgOCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1p dEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBmYWxzZSwgOCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7 Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVVNfTUVNOgot LSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIHRydWUs IDEsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1Jl YWRXcml0ZU1lbUluc3QoSSwgdHJ1ZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAg ICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVVNfTUVNMjoKLS0gICAgICAg ICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCAyLCBpcjo6 VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVN ZW1JbnN0KEksIHRydWUsIDIsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNl IEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VTX01FTTQ6Ci0tICAgICAgICAgICAgdGhp cy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgdHJ1ZSwgNCwgaXI6OlRZUEVfVTE2 KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJ LCB0cnVlLCA0LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NM X1NVQl9HUk9VUF9CTE9DS19XUklURV9VU19NRU04OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRC bG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIHRydWUsIDgsIGlyOjpUWVBFX1UxNik7IGJyZWFr OwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgdHJ1ZSwg OCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JP VVBfQkxPQ0tfUkVBRF9VU19JTUFHRToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFk V3JpdGVJbWFnZUluc3QoSSwgQ1MsIGZhbHNlLCAxLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsg ICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgZmFsc2UsIDEs IGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQ X0JMT0NLX1JFQURfVVNfSU1BR0UyOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRX cml0ZUltYWdlSW5zdChJLCBDUywgZmFsc2UsIDIsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAg ICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBmYWxzZSwgMiwg aXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBf QkxPQ0tfUkVBRF9VU19JTUFHRTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdy aXRlSW1hZ2VJbnN0KEksIENTLCBmYWxzZSwgNCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAg ICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIGZhbHNlLCA0LCBp cjo6VFlQRV9VMTYpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9C TE9DS19SRUFEX1VTX0lNQUdFODoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3Jp dGVJbWFnZUluc3QoSSwgQ1MsIGZhbHNlLCA4LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAg ICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgZmFsc2UsIDgsIGly OjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JM T0NLX1dSSVRFX1VTX0lNQUdFOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0 ZUltYWdlSW5zdChJLCBDUywgdHJ1ZSwgMSwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAg ICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDEsIGlyOjpU WVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NL X1dSSVRFX1VTX0lNQUdFMjoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJ bWFnZUluc3QoSSwgQ1MsIHRydWUsIDIsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAg ICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCB0cnVlLCAyLCBpcjo6VFlQ RV9VMTYpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19X UklURV9VU19JTUFHRTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1h Z2VJbnN0KEksIENTLCB0cnVlLCA0LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAg ICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgdHJ1ZSwgNCwgaXI6OlRZUEVf VTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJ VEVfVVNfSU1BR0U4OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdl SW5zdChJLCBDUywgdHJ1ZSwgOCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAg dGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIHRydWUsIDgsIGlyOjpUWVBFX1Ux Nik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfR0VUX1BJUEU6Ci0gICAgICAgICAg IGNhc2UgR0VOX09DTF9NQUtFX1JJRDoKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX0dFVF9SSUQ6 Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwCTIwMjAtMTEtMDkgMTY6 NDg6MjAuODIzODY2MTEyICswMTAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVk ZXMuaHBwCTIwMjAtMTEtMDkgMTk6MDA6MDkuOTU1OTI2Nzk1ICswMTAwCi1AQCAtMTAzLDcgKzEw Myw2IEBACi0KLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlO T1IgPj0gMzUKLSAjaW5jbHVkZSAibGx2bS9JUi9NYW5nbGVyLmgiCi0tI2luY2x1ZGUgImxsdm0v SVIvQ2FsbFNpdGUuaCIKLSAjaW5jbHVkZSAibGx2bS9JUi9DRkcuaCIKLSAjaW5jbHVkZSAibGx2 bS9JUi9JbnN0VmlzaXRvci5oIgotICNpbmNsdWRlICJsbHZtL0lSL0lSUHJpbnRpbmdQYXNzZXMu aCIKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNw cAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMv bGx2bS9sbHZtX2xvYWRzdG9yZV9vcHRpbWl6YXRpb24uY3BwCTIwMjAtMTEtMDkgMTk6MTA6Mzcu MTQxODUyMzA4ICswMTAwCi1AQCAtMTYwLDcgKzE2MCw3IEBACi0gICAgIFZhbHVlICp2ZWNQdHIg PSBCdWlsZGVyLkNyZWF0ZUJpdENhc3QobGQtPmdldFBvaW50ZXJPcGVyYW5kKCksCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50ZXJUeXBlOjpnZXQodmVjVHks IGFkZHJTcGFjZSkpOwotICAgICBMb2FkSW5zdCAqdmVjVmFsdWUgPSBCdWlsZGVyLkNyZWF0ZUxv YWQodmVjUHRyKTsKLS0gICAgdmVjVmFsdWUtPnNldEFsaWdubWVudChhbGlnbik7Ci0rICAgIHZl Y1ZhbHVlLT5zZXRBbGlnbm1lbnQoYWxpZ24udmFsdWVPck9uZSgpKTsKLQotICAgICBmb3IgKHVu c2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgVmFsdWUgKlMgPSBCdWlsZGVy LkNyZWF0ZUV4dHJhY3RFbGVtZW50KHZlY1ZhbHVlLCBCdWlsZGVyLmdldEludDMyKGkpKTsKLUBA IC0yNTEsNyArMjUxLDcgQEAKLSAgICAgICByZXR1cm47Ci0gICAgIFZhbHVlICpuZXdQdHIgPSBC dWlsZGVyLkNyZWF0ZUJpdENhc3Qoc3RQb2ludGVyLCBQb2ludGVyVHlwZTo6Z2V0KHZlY1R5LCBh ZGRyU3BhY2UpKTsKLSAgICAgU3RvcmVJbnN0ICpuZXdTVCA9IEJ1aWxkZXIuQ3JlYXRlU3RvcmUo cGFyZW50LCBuZXdQdHIpOwotLSAgICBuZXdTVC0+c2V0QWxpZ25tZW50KGFsaWduKTsKLSsgICAg bmV3U1QtPnNldEFsaWdubWVudChhbGlnbi52YWx1ZU9yT25lKCkpOwotICAgfQotCi0gICAvLyBG aW5kIHRoZSBzYWZlIGl0ZXJhdG9yIHdlIGNhbiBwb2ludCB0by4gSWYgcmVvcmRlciBoYXBwZW5z LCB3ZSBuZWVkIHRvCi0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fcGFzc2VzLmNwcAkyMDIw LTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9s bHZtX3Bhc3Nlcy5jcHAJMjAyMC0xMS0wOSAxODo0ODo1NS45OTcwMDY4MzcgKzAxMDAKLUBAIC05 NSw3ICs5NSw3IEBACi0gICB7Ci0gICAgIHN3aXRjaCAoVHktPmdldFR5cGVJRCgpKSB7Ci0gICAg ICAgY2FzZSBUeXBlOjpWb2lkVHlJRDogTk9UX1NVUFBPUlRFRDsKLS0gICAgICBjYXNlIFR5cGU6 OlZlY3RvclR5SUQ6Ci0rICAgICAgY2FzZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6Ci0gICAgICAg ewotICAgICAgICAgY29uc3QgVmVjdG9yVHlwZSogVmVjVHkgPSBjYXN0PFZlY3RvclR5cGU+KFR5 KTsKLSAgICAgICAgIHVpbnQzMl90IGVsZW1OdW0gPSBWZWNUeS0+Z2V0TnVtRWxlbWVudHMoKTsK LUBAIC0xMzgsNyArMTM4LDcgQEAKLSAgICAgICBjYXNlIFR5cGU6OkhhbGZUeUlEOiAgICByZXR1 cm4gMTY7Ci0gICAgICAgY2FzZSBUeXBlOjpGbG9hdFR5SUQ6ICAgcmV0dXJuIDMyOwotICAgICAg IGNhc2UgVHlwZTo6RG91YmxlVHlJRDogIHJldHVybiA2NDsKLS0gICAgICBjYXNlIFR5cGU6OlZl Y3RvclR5SUQ6Ci0rICAgICAgY2FzZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6Ci0gICAgICAgewot ICAgICAgICAgY29uc3QgVmVjdG9yVHlwZSogVmVjVHkgPSBjYXN0PFZlY3RvclR5cGU+KFR5KTsK LSAgICAgICAgIHVpbnQzMl90IG51bUVsZW0gPSBWZWNUeS0+Z2V0TnVtRWxlbWVudHMoKTsKLUBA IC0xODQsMTAgKzE4NCwxMiBAQAotICAgICBUeXBlICplbGVtZW50VHlwZSA9IE5VTEw7Ci0gICAg IGlmIChQb2ludGVyVHlwZSogcHRyVHlwZSA9IGR5bl9jYXN0PFBvaW50ZXJUeXBlPihlbHRUeSkp Ci0gICAgICAgZWxlbWVudFR5cGUgPSBwdHJUeXBlLT5nZXRFbGVtZW50VHlwZSgpOwotLSAgICBl bHNlIGlmKFNlcXVlbnRpYWxUeXBlICogc2VxVHlwZSA9IGR5bl9jYXN0PFNlcXVlbnRpYWxUeXBl PihlbHRUeSkpCi0tICAgICAgZWxlbWVudFR5cGUgPSBzZXFUeXBlLT5nZXRFbGVtZW50VHlwZSgp OwotLSAgICBlbHNlIGlmKENvbXBvc2l0ZVR5cGUgKiBjb21wVHk9IGR5bl9jYXN0PENvbXBvc2l0 ZVR5cGU+KGVsdFR5KSkKLS0gICAgICBlbGVtZW50VHlwZSA9IGNvbXBUeS0+Z2V0VHlwZUF0SW5k ZXgoaW5kZXgpOwotKyAgICBlbHNlIGlmIChBcnJheVR5cGUgKiBhcnJUeXBlID0gZHluX2Nhc3Q8 QXJyYXlUeXBlPihlbHRUeSkpCi0rICAgICAgZWxlbWVudFR5cGUgPSBhcnJUeXBlLT5nZXRFbGVt ZW50VHlwZSgpOwotKyAgICBlbHNlIGlmKFZlY3RvclR5cGUgKiB2ZWNUeXBlID0gZHluX2Nhc3Q8 VmVjdG9yVHlwZT4oZWx0VHkpKQotKyAgICAgIGVsZW1lbnRUeXBlID0gdmVjVHlwZS0+Z2V0RWxl bWVudFR5cGUoKTsKLSsgICAgZWxzZSBpZihTdHJ1Y3RUeXBlICogc3RydWN0VHlwZSA9IGR5bl9j YXN0PFN0cnVjdFR5cGU+KGVsdFR5KSkKLSsgICAgICBlbGVtZW50VHlwZSA9IHN0cnVjdFR5cGUt PmdldFR5cGVBdEluZGV4KGluZGV4KTsKLSAgICAgR0JFX0FTU0VSVChlbGVtZW50VHlwZSk7Ci0g ICAgIHJldHVybiBlbGVtZW50VHlwZTsKLSAgIH0KLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2 bV9wcmludGZfcGFyc2VyLmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAot KysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3ByaW50Zl9wYXJzZXIuY3BwCTIwMjAtMTEtMDkg MTg6NTc6NTIuNjE4OTQzMTA1ICswMTAwCi1AQCAtMzIzLDggKzMyMyw3IEBACi0KLSAgIGJvb2wg UHJpbnRmUGFyc2VyOjpwYXJzZU9uZVByaW50Zkluc3RydWN0aW9uKENhbGxJbnN0ICogY2FsbCkK LSAgIHsKLS0gICAgQ2FsbFNpdGUgQ1MoY2FsbCk7Ci0tICAgIENhbGxTaXRlOjphcmdfaXRlcmF0 b3IgQ0lfRk1UID0gQ1MuYXJnX2JlZ2luKCk7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIENJX0ZN VCA9IGNhbGwtPmFyZ19iZWdpbigpOwotICAgICBpbnQgcGFyYW1fbnVtID0gMDsKLQotICAgICBs bHZtOjpDb25zdGFudCogYXJnMCA9IGR5bl9jYXN0PGxsdm06OkNvbnN0YW50RXhwcj4oKkNJX0ZN VCk7Ci1AQCAtMzQxLDcgKzM0MCw3IEBACi0gICAgICAgcmV0dXJuIGZhbHNlOwotICAgICB9Ci0K LS0gICAgc3RkOjpzdHJpbmcgZm10ID0gZm10X2FyZy0+Z2V0QXNDU3RyaW5nKCk7Ci0rICAgIHN0 ZDo6c3RyaW5nIGZtdCA9IGZtdF9hcmctPmdldEFzQ1N0cmluZygpLnN0cigpOwotICAgICBpZiAo Zm10LnNpemUoKSA9PSAwKQotICAgICAgIHJldHVybiBmYWxzZTsKLQotQEAgLTQzNyw4ICs0MzYs OCBAQAotICAgICAgICAgaWYgKCBjYWxsRnVuYy0+Z2V0SW50cmluc2ljSUQoKSAhPSAwKQotICAg ICAgICAgICBjb250aW51ZTsKLQotLSAgICAgICAgVmFsdWUgKkNhbGxlZSA9IGNhbGwtPmdldENh bGxlZFZhbHVlKCk7Ci0tICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUt PmdldE5hbWUoKTsKLSsgICAgICAgIFZhbHVlICpDYWxsZWUgPSBjYWxsLT5nZXRDYWxsZWRPcGVy YW5kKCk7Ci0rICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5h bWUoKS5zdHIoKTsKLQotICAgICAgICAgaWYgKGZuTmFtZSAhPSAiX19nZW5fb2NsX3ByaW50Zl9z dHViIiAmJiBmbk5hbWUgIT0gIl9fZ2VuX29jbF9wdXRzX3N0dWIiKQotICAgICAgICAgICBjb250 aW51ZTsKLUBAIC01ODIsNyArNTgxLDcgQEAKLSAgICAgICAgICAgICBpZiAoIWZtdF9hcmcgfHwg IWZtdF9hcmctPmlzQ1N0cmluZygpKSB7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g ICAgICAgICAgICAgfQotLSAgICAgICAgICAgIHNsb3Quc3RhdGUuc3RyID0gZm10X2FyZy0+Z2V0 QXNDU3RyaW5nKCk7Ci0rICAgICAgICAgICAgc2xvdC5zdGF0ZS5zdHIgPSBmbXRfYXJnLT5nZXRB c0NTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg fQotICAgICAgICAgICBjYXNlIFBSSU5URl9DT05WRVJTSU9OX1A6IHsKLUBAIC01OTUsMTAgKzU5 NCwxMCBAQAotCi0gICAgICAgICBicmVhazsKLQotLSAgICAgIGNhc2UgVHlwZTo6VmVjdG9yVHlJ RDogewotLSAgICAgICAgVHlwZSogdmVjdF90eXBlID0gYXJnLT5nZXRUeXBlKCk7Ci0tICAgICAg ICBUeXBlKiBlbHRfdHlwZSA9IHZlY3RfdHlwZS0+Z2V0VmVjdG9yRWxlbWVudFR5cGUoKTsKLS0g ICAgICAgIGludCB2ZWNfbnVtID0gdmVjdF90eXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpOwot KyAgICAgIGNhc2UgVHlwZTo6Rml4ZWRWZWN0b3JUeUlEOiB7Ci0rICAgICAgICBWZWN0b3JUeXBl KiB2ZWN0X3R5cGUgPSBkeW5fY2FzdDxWZWN0b3JUeXBlPihhcmctPmdldFR5cGUoKSk7Ci0rICAg ICAgICBUeXBlKiBlbHRfdHlwZSA9IHZlY3RfdHlwZS0+Z2V0RWxlbWVudFR5cGUoKTsKLSsgICAg ICAgIGludCB2ZWNfbnVtID0gdmVjdF90eXBlLT5nZXROdW1FbGVtZW50cygpOwotICAgICAgICAg Ym9vbCBzaWduID0gZmFsc2U7Ci0KLSAgICAgICAgIGlmICh2ZWNfbnVtICE9IHNsb3Quc3RhdGUu dmVjdG9yX24pIHsKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcm9maWxpbmcuY3BwCTIw MjAtMTEtMDkgMTY6NDg6MjAuODIzODY2MTEyICswMTAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZt L2xsdm1fcHJvZmlsaW5nLmNwcAkyMDIwLTExLTA5IDE4OjU5OjUwLjEyMDkyOTE1MCArMDEwMAot QEAgLTM1LDcgKzM1LDYgQEAKLSAjaW5jbHVkZSAibGx2bS9JUi9JUkJ1aWxkZXIuaCIKLQotICNp ZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzNQotLSNp bmNsdWRlICJsbHZtL0lSL0NhbGxTaXRlLmgiCi0gI2luY2x1ZGUgImxsdm0vSVIvQ0ZHLmgiCi0g I2Vsc2UKLSAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L0NhbGxTaXRlLmgiCi0tLS0gYS9iYWNrZW5k L3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCTIwMjAtMTEtMDkgMTY6NDg6MjAuODIzODY2 MTEyICswMTAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCTIw MjAtMTEtMDkgMTc6MDE6MDkuNDA3Nzc0ODMyICswMTAwCi1AQCAtNDUsOCArNDUsOCBAQAotICAg ICBib29sIHZpc2l0Q2FsbEluc3QoQ2FsbEluc3QgKkkpIHsKLSAgICAgICBpZighSSkKLSAgICAg ICAgIHJldHVybiBmYWxzZTsKLS0gICAgICBWYWx1ZSAqQ2FsbGVlID0gSS0+Z2V0Q2FsbGVkVmFs dWUoKTsKLS0gICAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUo KTsKLSsgICAgICBWYWx1ZSAqQ2FsbGVlID0gSS0+Z2V0Q2FsbGVkT3BlcmFuZCgpOwotKyAgICAg IGNvbnN0IHN0ZDo6c3RyaW5nIGZuTmFtZSA9IENhbGxlZS0+Z2V0TmFtZSgpLnN0cigpOwotICAg ICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgIFR5cGUgKmJvb2xUeSA9IEludGVnZXJU eXBlOjpnZXQoSS0+Z2V0Q29udGV4dCgpLCAxKTsKLSAgICAgICBUeXBlICppMzJUeSA9IEludGVn ZXJUeXBlOjpnZXQoSS0+Z2V0Q29udGV4dCgpLCAzMik7Ci1AQCAtNTksNyArNTksNyBAQAotICAg ICAgICAgVmFsdWUgKm5lZWRGaXhWYWw7Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsg TExWTV9WRVJTSU9OX01JTk9SID49IDQwCi0gICAgICAgICBDYWxsSW5zdCAqaW5pdCA9IGR5bl9j YXN0PENhbGxJbnN0PihJLT5nZXRPcGVyYW5kKDApKTsKLS0gICAgICAgIGlmIChpbml0ICYmIGlu aXQtPmdldENhbGxlZFZhbHVlKCktPmdldE5hbWUoKS5jb21wYXJlKCJfX3RyYW5zbGF0ZV9zYW1w bGVyX2luaXRpYWxpemVyIikpCi0rICAgICAgICBpZiAoaW5pdCAmJiBpbml0LT5nZXRDYWxsZWRP cGVyYW5kKCktPmdldE5hbWUoKS5jb21wYXJlKCJfX3RyYW5zbGF0ZV9zYW1wbGVyX2luaXRpYWxp emVyIikpCi0gICAgICAgICB7Ci0gICAgICAgICAgIGNvbnN0IENvbnN0YW50SW50ICpjaSA9IGR5 bl9jYXN0PENvbnN0YW50SW50Pihpbml0LT5nZXRPcGVyYW5kKDApKTsKLSAgICAgICAgICAgdWlu dDMyX3Qgc2FtcGxlckludCA9IGNpLT5nZXRaRXh0VmFsdWUoKTsKLUBAIC0xMTMsNyArMTEzLDcg QEAKLSAgICAgICAgIFZhbHVlICpuZWVkRml4VmFsOwotICAjaWYgTExWTV9WRVJTSU9OX01BSk9S ICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gNDAKLSAgICAgICAgIENhbGxJbnN0ICppbml0 ID0gZHluX2Nhc3Q8Q2FsbEluc3Q+KEktPmdldE9wZXJhbmQoMCkpOwotLSAgICAgICAgaWYgKGlu aXQgJiYgaW5pdC0+Z2V0Q2FsbGVkVmFsdWUoKS0+Z2V0TmFtZSgpLmNvbXBhcmUoIl9fdHJhbnNs YXRlX3NhbXBsZXJfaW5pdGlhbGl6ZXIiKSkKLSsgICAgICAgIGlmIChpbml0ICYmIGluaXQtPmdl dENhbGxlZE9wZXJhbmQoKS0+Z2V0TmFtZSgpLmNvbXBhcmUoIl9fdHJhbnNsYXRlX3NhbXBsZXJf aW5pdGlhbGl6ZXIiKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgY29uc3QgQ29uc3RhbnRJbnQg KmNpID0gZHluX2Nhc3Q8Q29uc3RhbnRJbnQ+KGluaXQtPmdldE9wZXJhbmQoMCkpOwotICAgICAg ICAgICB1aW50MzJfdCBzYW1wbGVySW50ID0gY2ktPmdldFpFeHRWYWx1ZSgpOwotLS0tIGEvYmFj a2VuZC9zcmMvbGx2bS9sbHZtX3NjYWxhcml6ZS5jcHAJMjAyMC0xMS0wOSAxNjo0ODoyMC44MjM4 NjYxMTIgKzAxMDAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zY2FsYXJpemUuY3BwCTIw MjAtMTEtMDkgMTg6NTE6MTYuODg4OTkwMTA0ICswMTAwCi1AQCAtMTc4LDcgKzE3OCw3IEBACi0g ICAgICAgaWYoIXR5cGUpCi0gICAgICAgICByZXR1cm4gdHlwZTsKLSAgICAgICBzd2l0Y2godHlw ZS0+Z2V0VHlwZUlEKCkpIHsKLS0gICAgICBjYXNlIFR5cGU6OlZlY3RvclR5SUQ6Ci0rICAgICAg Y2FzZSBUeXBlOjpGaXhlZFZlY3RvclR5SUQ6Ci0gICAgICAgY2FzZSBUeXBlOjpBcnJheVR5SUQ6 Ci0gICAgICAgICByZXR1cm4gR2V0QmFzaWNUeXBlKHR5cGUtPmdldENvbnRhaW5lZFR5cGUoMCkp OwotICAgICAgIGRlZmF1bHQ6Ci1AQCAtMTg4LDcgKzE4OCw3IEBACi0gICAgIH0KLQotICAgICBp bnQgR2V0Q29tcG9uZW50Q291bnQoY29uc3QgVHlwZSogdHlwZSkgIHsKLS0gICAgICBpZiAodHlw ZSAmJiB0eXBlLT5nZXRUeXBlSUQoKSA9PSBUeXBlOjpWZWN0b3JUeUlEKQotKyAgICAgIGlmICh0 eXBlICYmIHR5cGUtPmdldFR5cGVJRCgpID09IFR5cGU6OkZpeGVkVmVjdG9yVHlJRCkKLSAgICAg ICAgIHJldHVybiBsbHZtOjpkeW5fY2FzdDxWZWN0b3JUeXBlPih0eXBlKS0+Z2V0TnVtRWxlbWVu dHMoKTsKLSAgICAgICBlbHNlCi0gICAgICAgICByZXR1cm4gMTsKLUBAIC02NTIsMTMgKzY1Miwx MiBAQAotICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICB9IGVsc2UgewotLSAg ICAgICAgVmFsdWUgKkNhbGxlZSA9IGNhbGwtPmdldENhbGxlZFZhbHVlKCk7Ci0tICAgICAgICBj b25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKTsKLSsgICAgICAgIFZh bHVlICpDYWxsZWUgPSBjYWxsLT5nZXRDYWxsZWRPcGVyYW5kKCk7Ci0rICAgICAgICBjb25zdCBz dGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxsZWUtPmdldE5hbWUoKS5zdHIoKTsKLSAgICAgICAgIGF1 dG8gZ2VuSW50cmluc2ljSUQgPSBpbnRyaW5zaWNNYXAuZmluZChmbk5hbWUpOwotCi0gICAgICAg ICAvLyBHZXQgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cwotLSAgICAgICAgQ2FsbFNpdGUgQ1MoY2Fs bCk7Ci0tICAgICAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIENJID0gQ1MuYXJnX2JlZ2luKCkg KyAxOwotKyAgICAgICAgVXNlcjo6b3BfaXRlcmF0b3IgQ0kgPSBjYWxsLT5hcmdfYmVnaW4oKSAr IDE7Ci0KLSAgICAgICAgIHN3aXRjaCAoZ2VuSW50cmluc2ljSUQpIHsKLSAgICAgICAgICAgY2Fz ZSBHRU5fT0NMX05PVF9GT1VORDoKLUBAIC03MjksNyArNzI4LDcgQEAKLSAgICAgICAgICAgICBl eHRyYWN0RnJvbVZlY3RvcihjYWxsKTsKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg Y2FzZSBHRU5fT0NMX1BSSU5URjoKLS0gICAgICAgICAgICBmb3IgKDsgQ0kgIT0gQ1MuYXJnX2Vu ZCgpOyArK0NJKQotKyAgICAgICAgICAgIGZvciAoOyBDSSAhPSBjYWxsLT5hcmdfZW5kKCk7ICsr Q0kpCi0gICAgICAgICAgICAgICBpZiAoKCpDSSktPmdldFR5cGUoKS0+aXNWZWN0b3JUeSgpKQot ICAgICAgICAgICAgICAgICAqQ0kgPSBJbnNlcnRUb1ZlY3RvcihjYWxsLCAqQ0kpOwotICAgICAg ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTEy LnBhdGNoIGIvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTEyLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA2ZjhhYjAwNWMxNDguLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNw a2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUg KzAsMCBAQAotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMu Y3BwIGJhY2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJbnRlZ2Vycy5jcHAKLWluZGV4IDg1MTVk YzEzLi4yNzA4MDM4MCAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJ bnRlZ2Vycy5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJbnRlZ2Vycy5j cHAKLUBAIC0zMjgsNyArMzI4LDcgQEAgc3RhdGljIFZhbHVlICpidWlsZFZlY3Rvck9yU2NhbGFy KENvbnZlcnNpb25TdGF0ZSAmU3RhdGUsIElSQnVpbGRlcjw+ICZJUkIsIFNtYWwKLSAgICAgLy8g c3BsaXRlZCwgdGhhdCdzIHdoeSB0aGVzZSB0ZW1wb3JhcnkgdmFsdWVzIHNob3VsZCBiZSBlcmFz ZWQuCi0gICAgIGJvb2wgS2VlcEluc2VydCA9IGlzTGVnYWxCaXRTaXplKEVsZW1UeS0+Z2V0UHJp bWl0aXZlU2l6ZUluQml0cygpICogRWxlbU5vKTsKLSAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg aSA8IEVsZW1ObzsgKytpKSB7Ci0tICAgICAgVmFsdWUgKnRtcCA9IHZlYyA/IHZlYyA6IFVuZGVm VmFsdWU6OmdldChWZWN0b3JUeXBlOjpnZXQoRWxlbVR5LCBFbGVtTm8pKTsKLSsgICAgICBWYWx1 ZSAqdG1wID0gdmVjID8gdmVjIDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChFbGVt VHksIEVsZW1ObywgZmFsc2UpKTsKLSAgICAgICBWYWx1ZSAqaWR4ID0gQ29uc3RhbnRJbnQ6Omdl dChJbnRUeSwgaSk7Ci0gICAgICAgdmVjID0gSVJCLkNyZWF0ZUluc2VydEVsZW1lbnQodG1wLCBF bGVtZW50c1tpXSwgaWR4KTsKLSAgICAgICBpZiAoIUtlZXBJbnNlcnQgJiYgIWlzYTxDb25zdGFu dD4odmVjKSkgewotQEAgLTM3Myw3ICszNzMsNyBAQCBzdGF0aWMgdm9pZCB1bmlmeUVsZW1lbnRU eXBlKElSQnVpbGRlcjw+ICZJUkIsIFNtYWxsVmVjdG9yPFZhbHVlICosIDE2PiAmU3JjLCBTbQot ICAgICAgIGFzc2VydCgoU2l6ZSAlIE1pbldpZHRoKSA9PSAwKTsKLSAKLSAgICAgICBpZiAoU2l6 ZSA+IE1pbldpZHRoKSB7Ci0tICAgICAgICBWZWN0b3JUeXBlICpWZWNUeSA9IFZlY3RvclR5cGU6 OmdldChFbGVtVHksIFNpemUvTWluV2lkdGgpOwotKyAgICAgICAgVmVjdG9yVHlwZSAqVmVjVHkg PSBWZWN0b3JUeXBlOjpnZXQoRWxlbVR5LCBTaXplL01pbldpZHRoLCBmYWxzZSk7Ci0gICAgICAg ICBWYWx1ZSAqQ2FzdGVkID0gSVJCLkNyZWF0ZUJpdENhc3QoU3JjW2ldLCBWZWNUeSk7Ci0gICAg ICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgU2l6ZS9NaW5XaWR0aDsgaisrKQotICAgICAg ICAgICBEc3QucHVzaF9iYWNrKElSQi5DcmVhdGVFeHRyYWN0RWxlbWVudChDYXN0ZWQsIENvbnN0 YW50SW50OjpnZXQoSW50VHksIGopKSk7Ci1AQCAtNDYyLDcgKzQ2Miw3IEBAIHN0YXRpYyB2b2lk IGNvbnZlcnRJbnN0cnVjdGlvbihJbnN0cnVjdGlvbiAqSW5zdCwgQ29udmVyc2lvblN0YXRlICZT dGF0ZSwKLSAgICAgICB1bnNpZ25lZCBFbGVtTm8gPSBVbmlmaWVkLnNpemUoKTsKLSAgICAgICBU eXBlICpFbGVtVHkgPSBVbmlmaWVkWzBdLT5nZXRUeXBlKCk7Ci0gICAgICAgZm9yICh1bnNpZ25l ZCBpID0gMDsgaSA8IEVsZW1ObzsgKytpKSB7Ci0tICAgICAgICBWYWx1ZSAqdG1wID0gdmVjID8g dmVjIDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChFbGVtVHksIEVsZW1ObykpOwot KyAgICAgICAgVmFsdWUgKnRtcCA9IHZlYyA/IHZlYyA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JU eXBlOjpnZXQoRWxlbVR5LCBFbGVtTm8sIGZhbHNlKSk7Ci0gICAgICAgICBWYWx1ZSAqaWR4ID0g Q29uc3RhbnRJbnQ6OmdldChJbnRUeSwgaSk7Ci0gICAgICAgICB2ZWMgPSBJUkIuQ3JlYXRlSW5z ZXJ0RWxlbWVudCh0bXAsIFVuaWZpZWRbaV0sIGlkeCk7Ci0gICAgICAgfQotZGlmZiAtLWdpdCBi YWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuY3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2 bV9nZW5fYmFja2VuZC5jcHAKLWluZGV4IGM5M2Q4OWNjLi42NGQ1YjBlNSAxMDA2NDQKLS0tLSBh L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLSsrKyBiL2JhY2tlbmQvc3Jj L2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLUBAIC0zMDQsNyArMzA0LDcgQEAgbmFtZXNwYWNl IGdiZQotICAgICAgIFRZUEVTSVpFVkVDKGxvbmcsOCkKLSAgICAgICBUWVBFU0laRVZFQyh1bnNp Z25lZCBsb25nLDgpCi0gICAgICAgZWxzZXsKLS0gICAgICAgIFN0cnVjdFR5cGUgKlN0clR5ID0g TS0+Z2V0VHlwZUJ5TmFtZSgic3RydWN0LiIrbmFtZSk7Ci0rICAgICAgICBTdHJ1Y3RUeXBlICpT dHJUeSA9IFN0cnVjdFR5cGU6OmdldFR5cGVCeU5hbWUoTS0+Z2V0Q29udGV4dCgpLCAic3RydWN0 LiIrbmFtZSk7Ci0gICAgICAgICBpZihTdHJUeSkKLSAgICAgICAgICAgcmV0dXJuIGdldFR5cGVC eXRlU2l6ZSh1bml0LFN0clR5KTsKLSAgICAgICB9Ci1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xs dm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1f bG9hZHN0b3JlX29wdGltaXphdGlvbi5jcHAKLWluZGV4IDVhYTM4YmVmLi42YjVjMWJhZCAxMDA2 NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNw cAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2xvYWRzdG9yZV9vcHRpbWl6YXRpb24uY3Bw Ci1AQCAtMTUyLDcgKzE1Miw3IEBAIG5hbWVzcGFjZSBnYmUgewotICAgICB1bnNpZ25lZCBhZGRy U3BhY2UgPSBsZC0+Z2V0UG9pbnRlckFkZHJlc3NTcGFjZSgpOwotICAgICAvLyBpbnNlcnQgYmVm b3JlIGZpcnN0IGxvYWQKLSAgICAgQnVpbGRlci5TZXRJbnNlcnRQb2ludChsZCk7Ci0tICAgIFZl Y3RvclR5cGUgKnZlY1R5ID0gVmVjdG9yVHlwZTo6Z2V0KGxkLT5nZXRUeXBlKCksIHNpemUpOwot KyAgICBWZWN0b3JUeXBlICp2ZWNUeSA9IFZlY3RvclR5cGU6OmdldChsZC0+Z2V0VHlwZSgpLCBz aXplLCBmYWxzZSk7Ci0gICAgIFZhbHVlICp2ZWNQdHIgPSBCdWlsZGVyLkNyZWF0ZUJpdENhc3Qo bGQtPmdldFBvaW50ZXJPcGVyYW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFBvaW50ZXJUeXBlOjpnZXQodmVjVHksIGFkZHJTcGFjZSkpOwotICAgICBMb2Fk SW5zdCAqdmVjVmFsdWUgPSBCdWlsZGVyLkNyZWF0ZUxvYWQodmVjUHRyKTsKLUBAIC0yMzYsNyAr MjM2LDcgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAgIEJ1aWxkZXIuU2V0SW5zZXJ0UG9pbnQobWVy Z2VkW3NpemUtMV0pOwotIAotICAgICBUeXBlICpkYXRhVHkgPSBzdC0+Z2V0VmFsdWVPcGVyYW5k KCktPmdldFR5cGUoKTsKLS0gICAgVmVjdG9yVHlwZSAqdmVjVHkgPSBWZWN0b3JUeXBlOjpnZXQo ZGF0YVR5LCBzaXplKTsKLSsgICAgVmVjdG9yVHlwZSAqdmVjVHkgPSBWZWN0b3JUeXBlOjpnZXQo ZGF0YVR5LCBzaXplLCBmYWxzZSk7Ci0gICAgIFZhbHVlICogcGFyZW50ID0gVW5kZWZWYWx1ZTo6 Z2V0KHZlY1R5KTsKLSAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0g ICAgICAgcGFyZW50ID0gQnVpbGRlci5DcmVhdGVJbnNlcnRFbGVtZW50KHBhcmVudCwgdmFsdWVz W2ldLCBDb25zdGFudEludDo6Z2V0KEludGVnZXJUeXBlOjpnZXQoc3QtPmdldENvbnRleHQoKSwg MzIpLCBpKSk7Ci1kaWZmIC0tZ2l0IGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcmludGZfcGFyc2Vy LmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fcHJpbnRmX3BhcnNlci5jcHAKLWluZGV4IDZiYjdj NTJhLi5hZjQ1OWNkMiAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcmludGZf cGFyc2VyLmNwcAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3ByaW50Zl9wYXJzZXIuY3Bw Ci1AQCAtNjMwLDcgKzYzMCw3IEBAIGVycm9yOgotICAgICAgICAgICAgIGlmIChlbHRfdHlwZSAh PSBlbHRfZHN0X3R5cGUpIHsKLSAgICAgICAgICAgICAgIFZhbHVlICpJSSA9IE5VTEw7Ci0gICAg ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZlY19udW07IGkrKykgewotLSAgICAgICAg ICAgICAgICBWYWx1ZSAqdmVjID0gSUkgPyBJSSA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JUeXBl OjpnZXQoZWx0X2RzdF90eXBlLCB2ZWNfbnVtKSk7Ci0rICAgICAgICAgICAgICAgIFZhbHVlICp2 ZWMgPSBJSSA/IElJIDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6OmdldChlbHRfZHN0X3R5 cGUsIHZlY19udW0sIGZhbHNlKSk7Ci0gICAgICAgICAgICAgICAgIFZhbHVlICpjdiA9IENvbnN0 YW50SW50OjpnZXQoVHlwZTo6Z2V0SW50MzJUeShlbHRfdHlwZS0+Z2V0Q29udGV4dCgpKSwgaSk7 Ci0gICAgICAgICAgICAgICAgIFZhbHVlICpvcmcgPSBidWlsZGVyLT5DcmVhdGVFeHRyYWN0RWxl bWVudChhcmcsIGN2KTsKLSAgICAgICAgICAgICAgICAgVmFsdWUgKmN2dCA9IGJ1aWxkZXItPkNy ZWF0ZUludENhc3Qob3JnLCBlbHRfZHN0X3R5cGUsIHNpZ24pOwotQEAgLTY1OCw3ICs2NTgsNyBA QCBlcnJvcjoKLSAgICAgICAgICAgICBpZiAoZWx0X3R5cGUtPmdldFR5cGVJRCgpICE9IFR5cGU6 OkZsb2F0VHlJRCkgewotICAgICAgICAgICAgICAgVmFsdWUgKklJID0gTlVMTDsKLSAgICAgICAg ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmVjX251bTsgaSsrKSB7Ci0tICAgICAgICAgICAg ICAgIFZhbHVlICp2ZWMgPSBJSSA/IElJIDogVW5kZWZWYWx1ZTo6Z2V0KFZlY3RvclR5cGU6Omdl dChUeXBlOjpnZXRGbG9hdFR5KGVsdF90eXBlLT5nZXRDb250ZXh0KCkpLCB2ZWNfbnVtKSk7Ci0r ICAgICAgICAgICAgICAgIFZhbHVlICp2ZWMgPSBJSSA/IElJIDogVW5kZWZWYWx1ZTo6Z2V0KFZl Y3RvclR5cGU6OmdldChUeXBlOjpnZXRGbG9hdFR5KGVsdF90eXBlLT5nZXRDb250ZXh0KCkpLCB2 ZWNfbnVtLCBmYWxzZSkpOwotICAgICAgICAgICAgICAgICBWYWx1ZSAqY3YgPSBDb25zdGFudElu dDo6Z2V0KFR5cGU6OmdldEludDMyVHkoZWx0X3R5cGUtPmdldENvbnRleHQoKSksIGkpOwotICAg ICAgICAgICAgICAgICBWYWx1ZSAqb3JnID0gYnVpbGRlci0+Q3JlYXRlRXh0cmFjdEVsZW1lbnQo YXJnLCBjdik7Ci0gICAgICAgICAgICAgICAgIFZhbHVlKiBjdnQgID0gYnVpbGRlci0+Q3JlYXRl RlBDYXN0KG9yZywgVHlwZTo6Z2V0RmxvYXRUeShtb2R1bGUtPmdldENvbnRleHQoKSkpOwotZGlm ZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fdG9fZ2VuLmNwcCBiYWNrZW5kL3NyYy9sbHZt L2xsdm1fdG9fZ2VuLmNwcAotaW5kZXggN2Y3ZGVmZmUuLjllOGNjYzY3IDEwMDY0NAotLS0tIGEv YmFja2VuZC9zcmMvbGx2bS9sbHZtX3RvX2dlbi5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0v bGx2bV90b19nZW4uY3BwCi1AQCAtMzU4LDcgKzM1OCw3IEBAIG5hbWVzcGFjZSBnYmUKLSAgICAg cGFzc2VzLmFkZChjcmVhdGVTY2FsYXJSZXBsQWdncmVnYXRlc1Bhc3MoNjQsIHRydWUsIC0xLCAt MSwgNjQpKTsKLSAjZW5kaWYKLSAgICAgcGFzc2VzLmFkZChjcmVhdGVMb2FkU3RvcmVPcHRpbWl6 YXRpb25QYXNzKCkpOwotLSAgICBwYXNzZXMuYWRkKGNyZWF0ZUNvbnN0YW50UHJvcGFnYXRpb25Q YXNzKCkpOwotKyAgICAvL3Bhc3Nlcy5hZGQoY3JlYXRlQ29uc3RhbnRQcm9wYWdhdGlvblBhc3Mo KSk7Ci0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlUHJvbW90ZU1lbW9yeVRvUmVnaXN0ZXJQYXNzKCkp OwotICAgICBpZihvcHRMZXZlbCA+IDApCi0gICAgICAgcGFzc2VzLmFkZChjcmVhdGVHVk5QYXNz KCkpOyAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHJlZHVuZGFuY2llcwotQEAgLTM2NywxMSAr MzY3LDExIEBAIG5hbWVzcGFjZSBnYmUKLSAgICAgcGFzc2VzLmFkZChjcmVhdGVTY2FsYXJpemVQ YXNzKCkpOyAgICAgICAgICAgICAvLyBFeHBhbmQgYWxsIHZlY3RvciBvcHMKLSAgICAgcGFzc2Vz LmFkZChjcmVhdGVFeHBhbmRMYXJnZUludGVnZXJzUGFzcygpKTsgICAvLyBsZWdhbGl6ZSBsYXJn ZSBpbnRlZ2VyIG9wZXJhdGlvbgotICAgICBwYXNzZXMuYWRkKGNyZWF0ZUluc3RydWN0aW9uQ29t YmluaW5nUGFzcygpKTsgIC8vIGxlZ2FsaXplIHdpbGwgZ2VuZXJhdGUgc29tZSBzaWxseSBpbnN0 cnVjdGlvbnMKLS0gICAgcGFzc2VzLmFkZChjcmVhdGVDb25zdGFudFByb3BhZ2F0aW9uUGFzcygp KTsgICAvLyBwcm9wYWdhdGUgY29uc3RhbnQgYWZ0ZXIgc2NhbGFyaXplL2xlZ2FsaXplCi0rICAg IC8vcGFzc2VzLmFkZChjcmVhdGVDb25zdGFudFByb3BhZ2F0aW9uUGFzcygpKTsgICAvLyBwcm9w YWdhdGUgY29uc3RhbnQgYWZ0ZXIgc2NhbGFyaXplL2xlZ2FsaXplCi0gICAgIHBhc3Nlcy5hZGQo Y3JlYXRlRXhwYW5kQ29uc3RhbnRFeHByUGFzcygpKTsgICAgLy8gY29uc3RhbnQgcHJvcCBtYXkg Z2VuZXJhdGUgQ29uc3RhbnRFeHByCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlUHJvbW90ZUludGVn ZXJzUGFzcygpKTsgICAgICAgLy8gYWxpZ24gaW50ZWdlciBzaXplIHRvIHBvd2VyIG9mIHR3bwot ICAgICBwYXNzZXMuYWRkKGNyZWF0ZVJlbW92ZUdFUFBhc3ModW5pdCkpOyAgICAgICAgIC8vIENv bnN0YW50IHByb3AgbWF5IGdlbmVyYXRlIGdlcAotLSAgICBwYXNzZXMuYWRkKGNyZWF0ZURlYWRJ bnN0RWxpbWluYXRpb25QYXNzKCkpOyAgIC8vIFJlbW92ZSBzaW1wbGlmaWVkIGluc3RydWN0aW9u cwotKyAgICAvL3Bhc3Nlcy5hZGQoY3JlYXRlRGVhZEluc3RFbGltaW5hdGlvblBhc3MoKSk7ICAg Ly8gUmVtb3ZlIHNpbXBsaWZpZWQgaW5zdHJ1Y3Rpb25zCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRl Q0ZHU2ltcGxpZmljYXRpb25QYXNzKCkpOyAgICAgLy8gTWVyZ2UgJiByZW1vdmUgQkJzCi0gICAg IHBhc3Nlcy5hZGQoY3JlYXRlTG93ZXJTd2l0Y2hQYXNzKCkpOyAgICAgICAgICAgLy8gc2ltcGxp ZnkgY2ZnIHdpbGwgZ2VuZXJhdGUgc3dpdGNoLWNhc2UgaW5zdHJ1Y3Rpb24KLSAgICAgaWYgKHBy b2ZpbGluZykgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbXVzbC5wYXRj aCBiL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL211c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGNlZmFmYmI2NTU4OC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVp Z25ldC9wYXRjaGVzL211c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0t LS0gYS9iYWNrZW5kL3NyYy9iYWNrZW5kL2dlbi9nZW5fbWVzYV9kaXNhc20uYwotKysrIGIvYmFj a2VuZC9zcmMvYmFja2VuZC9nZW4vZ2VuX21lc2FfZGlzYXNtLmMKLUBAIC0xMTM3LDcgKzExMzcs NyBAQCBzdGF0aWMgdWludDMyX3QgX19jb252X2hhbGZfdG9fZmxvYXQodWludDE2X3QgaCkKLSAg ICAgICAvLyBBZGp1c3QgbWFudGlzc2Egc28gaXQncyBub3JtYWxpemVkIChhbmQga2VlcAotICAg ICAgIC8vIHRyYWNrIG9mIGV4cG9uZW50IGFkanVzdG1lbnQpCi0gICAgICAgaW50IGUgPSAtMTsK LS0gICAgICB1aW50IG0gPSBpLm1hbnRpc3NhOwotKyAgICAgIHVuc2lnbmVkIGludCBtID0gaS5t YW50aXNzYTsKLSAgICAgICBkbyB7Ci0gICAgICAgICBlKys7Ci0gICAgICAgICBtIDw8PSAxOwpk aWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3RlbXBsYXRlIGIvc3JjcGtncy9iZWlnbmV0L3Rl bXBsYXRlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2U2YmJiN2FlMjQuLjAwMDAw MDAwMDAwMAotLS0gYS9zcmNwa2dzL2JlaWduZXQvdGVtcGxhdGUKKysrIC9kZXYvbnVsbApAQCAt MSwyMiArMCwwIEBACi0jIFRlbXBsYXRlIGZpbGUgZm9yICdiZWlnbmV0JwotcGtnbmFtZT1iZWln bmV0Ci12ZXJzaW9uPTEuMy4yCi1yZXZpc2lvbj0xMAotYXJjaHM9Imk2ODYqIHg4Nl82NCoiCi13 cmtzcmM9IkJlaWduZXQtJHt2ZXJzaW9ufS1Tb3VyY2UiCi1idWlsZF9zdHlsZT1jbWFrZQotaG9z dG1ha2VkZXBlbmRzPSJjbGFuZyBsbHZtIHBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iTWVzYUxp Yi1kZXZlbCBsaWJlZGl0LWRldmVsIGxpYmZmaS1kZXZlbCBvY2wtaWNkLWRldmVsIHpsaWItZGV2 ZWwKLSBsaWJYZml4ZXMtZGV2ZWwiCi1kZXBlbmRzPSJvY2wtaWNkIgotc2hvcnRfZGVzYz0iQmVp Z25ldCBHUEdQVSBTeXN0ZW0gZm9yIEludGVsIEdQVXMiCi1tYWludGFpbmVyPSJPcnBoYW5lZCA8 b3JwaGFuQHZvaWRsaW51eC5vcmc+IgotbGljZW5zZT0iTEdQTC0yLjEtb3ItbGF0ZXIiCi1ob21l cGFnZT0iaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9CZWlnbmV0LyIK LWRpc3RmaWxlcz0iaHR0cHM6Ly8wMS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy8ke3BrZ25hbWV9 LSR7dmVyc2lvbn0tc291cmNlLnRhci5neiIKLWNoZWNrc3VtPWM1NTVlZGJhMTQ5ZGUyMzI0Mzk2 NWE3MDNmMzlmNzlmYTA2ZjE1YmNmZjVhMzc2MmI1NTQ0YjA5MjUwMTBiNDMKLQotcG9zdF9pbnN0 YWxsKCkgewotCSMgcmVtb3ZlIENMIGhlYWRlcnMsIHdlIGRvIHVzZSBvcGVuY2wtaGVhZGVycyBp bnN0ZWFkLgotCXJtIC1yICR7REVTVERJUn0vdXNyL2luY2x1ZGUKLX0KZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvYmVpZ25ldC91cGRhdGUgYi9zcmNwa2dzL2JlaWduZXQvdXBkYXRlCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBjYTQxZTBhZmU2MGMuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNw a2dzL2JlaWduZXQvdXBkYXRlCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotc2l0ZT0iaHR0 cHM6Ly8wMS5vcmcvYmVpZ25ldC9kb3dubG9hZHMiCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JlbW92 ZWQtcGFja2FnZXMvdGVtcGxhdGUgYi9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUK aW5kZXggZTBkNDBlZGU2YjU4Li42ZWRjOGUwMDY0ZDQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmVt b3ZlZC1wYWNrYWdlcy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVt cGxhdGUKQEAgLTIyLDYgKzIyLDcgQEAgcmVwbGFjZXM9IgogIGF0b208PTEuNDQuMF8xCiAgYXZv Z2Fkcm8tZGV2ZWw8PTEuMi4wXzgKICBhdm9nYWRybzw9MS4yLjBfOAorIGJlaWduZXQ8PTEuMy4y CiAgYm9ra2VuPD0xLjhfMwogIGJvbWk8PTAuOS4xMV8xNwogIGJ1cnAtY2xpZW50PD0xLjQuNDBf MTMKCkZyb20gNmI1ZGVlMjdjYTViYzE2MTc4Y2RmZjU4MTUwNzdlYWVjYzkxMGYzYSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBDZXJxdWVpcmE/ PSA8YWNlcnF1ZWlyYTAyMUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjggRmViIDIwMjIgMjI6MDA6 NTQgKzAwMDAKU3ViamVjdDogW1BBVENIIDIwLzIwXSBsbHZtMTM6IHVwZGF0ZSB0byAxMy4wLjEu CgotLS0KIHNyY3BrZ3MvbGx2bTEzL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2 bTEzL3RlbXBsYXRlIGIvc3JjcGtncy9sbHZtMTMvdGVtcGxhdGUKaW5kZXggYmZjOTEwNTZkMjc3 Li43Y2I0MjlhZGVhM2MgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGx2bTEzL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvbGx2bTEzL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnbGx2bTEzJwogcGtnbmFtZT1sbHZtMTMKLXZlcnNpb249MTMuMC4wCit2ZXJzaW9uPTEz LjAuMQogcmV2aXNpb249Mgogd3Jrc3JjPSJsbHZtLXByb2plY3QtJHt2ZXJzaW9ufS5zcmMiCiBi dWlsZF93cmtzcmM9bGx2bQpAQCAtMzUsNyArMzUsNyBAQCBtYWludGFpbmVyPSJxNjYgPGRhbmll bEBvY3RhZm9yZ2Uub3JnPiIKIGxpY2Vuc2U9IkFwYWNoZS0yLjAiCiBob21lcGFnZT0iaHR0cHM6 Ly93d3cubGx2bS5vcmciCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0t cHJvamVjdC9yZWxlYXNlcy9kb3dubG9hZC9sbHZtb3JnLSR7dmVyc2lvbn0vbGx2bS1wcm9qZWN0 LSR7dmVyc2lvbn0uc3JjLnRhci54eiIKLWNoZWNrc3VtPTYwNzVhZDMwZjFhYzBlMTVmMDdjMWJm MDYyYzFlMTI2OGMyNDFkNjc0ZjExYmQzMmNkZjBlMDQwYzcxZjJiZjMKK2NoZWNrc3VtPTMyNjMz NWE4MzBmMmUzMmQwNmQwYTM2MzkzYjU0NTVkMTdkYzczZTBiZDEyMTEwNjUyMjdlZTAxNGY5MmNi ZjgKIGxpYjMyZGlzYWJsZWQ9eWVzCiBweXRob25fdmVyc2lvbj0zCiAK --===============7598559121448605782==--