From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 25475 invoked from network); 12 Feb 2023 15:56:11 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 12 Feb 2023 15:56:11 -0000 Content-Type: multipart/mixed; boundary="===============1162889998119107180==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_=5BREDO=5D_New_package=3A_qt6-webengine-6=2E4=2E2=2E?= To: ml@inbox.vuxu.org From: sgn Reply-to: ml@inbox.vuxu.org Message-ID: Date: Sun, 12 Feb 2023 16:56:10 +0100 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============1162889998119107180== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IHNnbiBhZ2FpbnN0IG1hc3RlciBvbiB0aGUg dm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vc2duL3ZvaWQtcGFj a2FnZXMgcXQ2LXdlYmVuZ2luZQpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBh Y2thZ2VzL3B1bGwvNDIyMjQKCltSRURPXSBOZXcgcGFja2FnZTogcXQ2LXdlYmVuZ2luZS02LjQu Mi4KPCEtLSBVbmNvbW1lbnQgcmVsZXZhbnQgc2VjdGlvbnMgYW5kIGRlbGV0ZSBvcHRpb25zIHdo aWNoIGFyZSBub3QgYXBwbGljYWJsZSAtLT4NCg0KIyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQot IEkgdGVzdGVkIHRoZSBjaGFuZ2VzIGluIHRoaXMgUFI6ICoqYnJpZWZseSoqDQoNCjwhLS0NCiMj IyMgTmV3IHBhY2thZ2UNCi0gVGhpcyBuZXcgcGFja2FnZSBjb25mb3JtcyB0byB0aGUgW3BhY2th Z2UgcmVxdWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2th Z2VzL2Jsb2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZCNwYWNrYWdlLXJlcXVpcmVtZW50cyk6ICoq WUVTKip8KipOTyoqDQotLT4NCg0KPCEtLSBOb3RlOiBJZiB0aGUgYnVpbGQgaXMgbGlrZWx5IHRv IHRha2UgbW9yZSB0aGFuIDIgaG91cnMsIHBsZWFzZSBhZGQgY2kgc2tpcCB0YWcgYXMgZGVzY3Jp YmVkIGluDQpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Jsb2Iv bWFzdGVyL0NPTlRSSUJVVElORy5tZCNjb250aW51b3VzLWludGVncmF0aW9uDQphbmQgdGVzdCBh dCBsZWFzdCBvbmUgbmF0aXZlIGJ1aWxkIGFuZCwgaWYgc3VwcG9ydGVkLCBhdCBsZWFzdCBvbmUg Y3Jvc3MgYnVpbGQuDQpJZ25vcmUgdGhpcyBzZWN0aW9uIGlmIHRoaXMgUFIgaXMgbm90IHNraXBw aW5nIENJLg0KLS0+DQoNCiMjIyMgTG9jYWwgYnVpbGQgdGVzdGluZw0KLSBJIGJ1aWx0IHRoaXMg UFIgbG9jYWxseSBmb3IgbXkgbmF0aXZlIGFyY2hpdGVjdHVyZToNCiAgICAtIFt4XSBgeDg2XzY0 YA0KICAgIC0gW3hdIGB4ODZfNjQtbXVzbGANCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkgZm9y IHRoZXNlIGFyY2hpdGVjdHVyZXMgKGlmIHN1cHBvcnRlZC4gbWFyayBjcm9zc2J1aWxkcyk6DQog ICAgLSBbIF0gYWFyY2g2NA0KICAgIC0gWyBdIGFhcmNoNjQtbXVzbA0KICAgIC0gWyBdIGk2ODYN CiAgICAtIFsgXSBhcm12Ny1tdXNsDQogICAgLSBbIF0gYXJtdjcNCg0KDQoKCkEgcGF0Y2ggZmls ZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80 MjIyNC5wYXRjaCBpcyBhdHRhY2hlZA== --===============1162889998119107180== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-qt6-webengine-42224.patch" RnJvbSAyMzJlZWIwOGJkZGFmM2NhYzIzODVmOGU1NDI2YjZhNmVmY2MyMTkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/PUM0PTkwbz1DMz1BMG49MjBUcj1FMT1CQT1B N249MjBDPUMzPUI0bmc9MjBEYW5oPz0KIDxjb25nZGFuaHF4QGdtYWlsLmNvbT4KRGF0ZTogTW9u LCA4IEF1ZyAyMDIyIDE3OjEzOjExICswNzAwClN1YmplY3Q6IFtQQVRDSF0gTmV3IHBhY2thZ2U6 IHF0Ni13ZWJlbmdpbmUtNi4zLjEuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDcgKwogc3JjcGtncy9xdDYtd2ViZW5naW5lLWRldmVsICAg ICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUtZXhhbXBsZXMg ICAgICAgICAgICAgICAgfCAgICAxICsKIC4uLi9wYXRjaGVzLzAwMDEtTm9uZS1uby1kZWJ1Zy5w YXRjaCAgICAgICAgICB8ICAgMTEgKwogLi4uL3BhdGNoZXMvMDAwMy1jcm9zcy1oYWNrLnBhdGNo ICAgICAgICAgICAgIHwgICAxMCArCiAuLi4vMDAwNC1wcGMtZGlzYWJsZS1qeGwtZGVjb2Rlci5w YXRjaCAgICAgICAgfCAgIDEzICsKIC4uLi9wYXRjaGVzLzAwNTAtbm8tZ2xpYmMtY21ha2UtY2hl Y2sucGF0Y2ggICB8ICAgMTQgKwogLi4uLzAxMDAtY2hyb21pdW0tcmV2ZXJ0LTlkMDgwYzAucGF0 Y2ggICAgICAgIHwgIDE1NCArCiAuLi5vbWl1bS0xMDItZmVuY2VkX2ZyYW1lX3V0aWxzLWluY2x1 ZGUucGF0Y2ggfCAgIDIwICsKIC4uLjEwMi1jaHJvbWl1bS0xMDItcmVnZXhfcGF0dGVybi1hcnJh eS5wYXRjaCB8ICAgMTQgKwogLi4uMDEwMy1jaHJvbWl1bS1pNjg2LXZhYXBpLWZwZXJtaXNzaXZl LnBhdGNoIHwgICAyMyArCiAuLi4vMDEwNC1jaHJvbWl1bS1saWJ4bWwtdW5idW5kbGUucGF0Y2gg ICAgICAgfCAgIDEwICsKIC4uLi1jaHJvbWl1bS1yZXZlcnQtZHJvcC1vZi1zeXN0ZW0tamF2YS5w YXRjaCB8ICAgMTUgKwogLi4uL3BhdGNoZXMvMDEwNi1jaHJvbWl1bS1zeXN0ZW0tbm9kZWpzLnBh dGNoIHwgICAyOSArCiAuLi4vcGF0Y2hlcy8wMTA3LWNocm9taXVtLWNyb3NzLWJ1aWxkLnBhdGNo ICAgfCAgIDY1ICsKIC4uLi8wMTA4LWNocm9taXVtLWN1cnNlZF5Vc2NvcGVkX2ZpbGUucGF0Y2gg ICB8ICAgMTggKwogLi4uY2hyb21pdW0tYWFyY2g2NC1tdXNsLW1lbW9yeS10YWdnaW5nLnBhdGNo IHwgICAyOSArCiAuLi5maXgtbWlzc2luZy1URU1QX0ZBSUxVUkVfUkVUUlktbWFjcm8ucGF0Y2gg fCAgIDIxICsKIC4uLi9wYXRjaGVzLzAxMTEtY2hyb21pdW0tY3N0ZGludC5wYXRjaCAgICAgICB8 ICAgMTAgKwogLi4uL3BhdGNoZXMvMDExMi1jaHJvbWl1bS11bmlzdGQuaCAgICAgICAgICAgIHwg ICAxMCArCiAuLi4vMDExMy1jaHJvbWl1bS1wdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaCAgICAgfCAg IDE2ICsKIC4uLi9wYXRjaGVzLzAxMTQtZG8tbm90LW5hcnJvdy1pbnQucGF0Y2ggICAgICB8ICAg NTMgKwogLi4uNS1jaHJvbWl1bS1uby1jYW5vbmljYWxpemUtZmlsZS1uYW1lLnBhdGNoIHwgICAx MiArCiAuLi4vMDExNi1jaHJvbWl1bS1tdXNsLWdldC10aHJlYWQtbmFtZS5wYXRjaCAgfCAgIDIy ICsKIC4uLi9wYXRjaGVzLzAxMTctY2hyb21pdW0tbXVzbC1yZXNvbHZlci5wYXRjaCB8ICAgNjQg KwogLi4uLzAxMTktY2hyb21pdW0tbXVzbC1zdGFjay11dGlscy5wYXRjaCAgICAgIHwgICAyMCAr CiAuLi4vcGF0Y2hlcy8wMTIwLWNocm9taXVtLWxpYmMtbWFsbG9jLnBhdGNoICAgfCAgIDM0ICsK IC4uLi9wYXRjaGVzLzAxMjEtY2hyb21pdW0tbXVzbC1zdGF0LnBhdGNoICAgICB8ICAgMTIgKwog Li4uL3BhdGNoZXMvMDEyMi1jaHJvbWl1bS1jb25kaXRpb25fdmFyLnBhdGNoIHwgICAyMiArCiAu Li4vMDEyMy1jaHJvbWl1bS1tdXNsLW5vLWV4ZWNpbmZvLnBhdGNoICAgICAgfCAgIDc1ICsKIC4u Li8wMTIzLWNocm9taXVtLW11c2wtbm8tZ2V0Y29udGV4dC5wYXRjaCAgICB8ICAgMjcgKwogLi4u L3BhdGNoZXMvMDEyNC1jaHJvbWl1bS1lbmFibGUtaTY4Ni5wYXRjaCAgIHwgICAxNyArCiAuLi4v MDEyNS1jaHJvbWl1bS1yZW1vdmUtc3RyaXBfYmluYXJ5LnBhdGNoICAgfCAgIDMyICsKIC4uLi9w YXRjaGVzLzAxMjYtY2hyb21pdW0tbm8tY2RlZnMucGF0Y2ggICAgICB8ICAgMzkgKwogLi4uLzAx MjgtY2hyb21pdW0tc2FuZGJveC1tZW1iYXJyaWVyLnBhdGNoICAgIHwgICAxMCArCiAuLi4vMDEy OS1jaHJvbWl1bS1zYW5kYm94LXNoZWRfZ2V0cGFyYW0ucGF0Y2ggfCAgIDIwICsKIC4uLnVuZGxl LWZmbXBlZy1hdl9zdHJlYW1fZ2V0X2ZpcnN0X2R0cy5wYXRjaCB8ICAgMTAgKwogLi4uMS1jaHJv bWl1bS11bmJ1bmRsZWQtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIHwgICAxMyArCiAuLi4vcGF0Y2hl cy8wMTUyLWNocm9taXVtLXdlYnJ0Yy1zaXplX3QucGF0Y2ggfCAgIDEwICsKIC4uLi9wYXRjaGVz LzAxNTMtY2hyb21pdW0td2VicnRjLXNpemVfdC5wYXRjaCB8ICAgMTYgKwogLi4uL3BhdGNoZXMv MDE1NC1jaHJvbWl1bS11aXRfdC5wYXRjaCAgICAgICAgIHwgICAxMSArCiAuLi4vcGF0Y2hlcy8w MjAwLWNocm9taXVtLXNuZGlvLnBhdGNoICAgICAgICAgfCAgODQ5ICsrKysKIC4uLi9wYXRjaGVz LzAzMDAtY2hyb21pdW0tbXVzbC1oYWNrcy5wYXRjaCAgICB8ICAgNTIgKwogLi4uL3BhdGNoZXMv MDMwMS1jaHJvbWl1bS1tdXNsLXNhbmRib3gucGF0Y2ggIHwgICA4NiArCiAuLi4vcGF0Y2hlcy8w MzAyLWNocm9taXVtLW5vLW1hbGxpbmZvLnBhdGNoICAgfCAgIDY3ICsKIC4uLi9wYXRjaGVzLzA3 MDAtYXJtdjdsLW5lb24ucGF0Y2ggICAgICAgICAgICB8ICAgMTAgKwogLi4uLWNocm9taXVtLW11 c2wtY3Jvc3Mtbm8tYXNtX3B0cmFjZV9oLnBhdGNoIHwgICAzMCArCiAuLi4vMDc1MS1jaHJvbWl1 bS1tdXNsLWFybS11c2VyX3ZmcC5wYXRjaCAgICAgfCAgIDIwICsKIC4uLi8wNzUyLWNocm9taXVt LW11c2wtYXJtLWVsZl9hdXh2X3QucGF0Y2ggICB8ICAgMTggKwogLi4uL3BhdGNoZXMvMDkwMC1j cm9zcy1idWlsZC1leGFtcGxlcy5wYXRjaCAgIHwgICAxNiArCiAuLi4vcGF0Y2hlcy94eHgtcHBj NjRsZS00ay1wYWdlcy5wYXRjaCAgICAgICAgfCAgIDUwICsKIC4uLi9wYXRjaGVzL3h4eC1wcGM2 NGxlLWxpYnZweC5wYXRjaCAgICAgICAgICB8ICAgNjUgKwogLi4uL3h4eC1wcGM2NGxlLXNhbmRi b3gtbGludXgtc3RhdC5wYXRjaCAgICAgIHwgICAzMSArCiAuLi4vcGF0Y2hlcy94eHgtcHBjNjRs ZS1zdXBwb3J0LnBhdGNoICAgICAgICAgfCAzNDkyICsrKysrKysrKysrKysrKysrCiAuLi4vcGF0 Y2hlcy94eHgtcHBjNjRsZS1zd2lmdHNoYWRlci5wYXRjaCAgICAgfCAgIDE4ICsKIHNyY3BrZ3Mv cXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZSAgICAgICAgICAgICAgICB8ICAxODAgKwogc3JjcGtncy9x dDYtd2ViZW5naW5lL3VwZGF0ZSAgICAgICAgICAgICAgICAgIHwgICAgMSArCiA1NyBmaWxlcyBj aGFuZ2VkLCA1OTk1IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL3F0 Ni13ZWJlbmdpbmUtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL3F0Ni13ZWJlbmdp bmUtZXhhbXBsZXMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0 Y2hlcy8wMDAxLU5vbmUtbm8tZGVidWcucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMDAzLWNyb3NzLWhhY2sucGF0Y2gKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA0LXBwYy1kaXNhYmxlLWp4 bC1kZWNvZGVyLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDYtd2ViZW5naW5l L3BhdGNoZXMvMDA1MC1uby1nbGliYy1jbWFrZS1jaGVjay5wYXRjaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMDAtY2hyb21pdW0tcmV2ZXJ0LTlk MDgwYzAucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0 Y2hlcy8wMTAxLWNocm9taXVtLTEwMi1mZW5jZWRfZnJhbWVfdXRpbHMtaW5jbHVkZS5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMDItY2hy b21pdW0tMTAyLXJlZ2V4X3BhdHRlcm4tYXJyYXkucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTAzLWNocm9taXVtLWk2ODYtdmFhcGktZnBl cm1pc3NpdmUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUv cGF0Y2hlcy8wMTA0LWNocm9taXVtLWxpYnhtbC11bmJ1bmRsZS5wYXRjaAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMDUtY2hyb21pdW0tcmV2ZXJ0 LWRyb3Atb2Ytc3lzdGVtLWphdmEucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0 Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTA2LWNocm9taXVtLXN5c3RlbS1ub2RlanMucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTA3LWNocm9t aXVtLWNyb3NzLWJ1aWxkLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDYtd2Vi ZW5naW5lL3BhdGNoZXMvMDEwOC1jaHJvbWl1bS1jdXJzZWReVXNjb3BlZF9maWxlLnBhdGNoCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDEwOS1jaHJv bWl1bS1hYXJjaDY0LW11c2wtbWVtb3J5LXRhZ2dpbmcucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTEwLWNocm9taXVtLWZpeC1taXNzaW5n LVRFTVBfRkFJTFVSRV9SRVRSWS1tYWNyby5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMTEtY2hyb21pdW0tY3N0ZGludC5wYXRjaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMTItY2hyb21p dW0tdW5pc3RkLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0 Y2hlcy8wMTEzLWNocm9taXVtLXB0aHJlYWQtc3RhY2tzaXplLnBhdGNoCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDExNC1kby1ub3QtbmFycm93LWlu dC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVz LzAxMTUtY2hyb21pdW0tbm8tY2Fub25pY2FsaXplLWZpbGUtbmFtZS5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMTYtY2hyb21pdW0tbXVz bC1nZXQtdGhyZWFkLW5hbWUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13 ZWJlbmdpbmUvcGF0Y2hlcy8wMTE3LWNocm9taXVtLW11c2wtcmVzb2x2ZXIucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTE5LWNocm9taXVt LW11c2wtc3RhY2stdXRpbHMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13 ZWJlbmdpbmUvcGF0Y2hlcy8wMTIwLWNocm9taXVtLWxpYmMtbWFsbG9jLnBhdGNoCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDEyMS1jaHJvbWl1bS1t dXNsLXN0YXQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUv cGF0Y2hlcy8wMTIyLWNocm9taXVtLWNvbmRpdGlvbl92YXIucGF0Y2gKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTIzLWNocm9taXVtLW11c2wtbm8t ZXhlY2luZm8ucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUv cGF0Y2hlcy8wMTIzLWNocm9taXVtLW11c2wtbm8tZ2V0Y29udGV4dC5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMjQtY2hyb21pdW0tZW5h YmxlLWk2ODYucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUv cGF0Y2hlcy8wMTI1LWNocm9taXVtLXJlbW92ZS1zdHJpcF9iaW5hcnkucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTI2LWNocm9taXVtLW5v LWNkZWZzLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDYtd2ViZW5naW5lL3Bh dGNoZXMvMDEyOC1jaHJvbWl1bS1zYW5kYm94LW1lbWJhcnJpZXIucGF0Y2gKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTI5LWNocm9taXVtLXNhbmRi b3gtc2hlZF9nZXRwYXJhbS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ2LXdl YmVuZ2luZS9wYXRjaGVzLzAxNTAtY2hyb21pdW0tdW5idW5kbGUtZmZtcGVnLWF2X3N0cmVhbV9n ZXRfZmlyc3RfZHRzLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDYtd2ViZW5n aW5lL3BhdGNoZXMvMDE1MS1jaHJvbWl1bS11bmJ1bmRsZWQtY3Jvc3MtdG9vbGNoYWluLnBhdGNo CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDE1Mi1j aHJvbWl1bS13ZWJydGMtc2l6ZV90LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9x dDYtd2ViZW5naW5lL3BhdGNoZXMvMDE1My1jaHJvbWl1bS13ZWJydGMtc2l6ZV90LnBhdGNoCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDE1NC1jaHJv bWl1bS11aXRfdC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ2LXdlYmVuZ2lu ZS9wYXRjaGVzLzAyMDAtY2hyb21pdW0tc25kaW8ucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMzAwLWNocm9taXVtLW11c2wtaGFja3MucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMzAx LWNocm9taXVtLW11c2wtc2FuZGJveC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv cXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAzMDItY2hyb21pdW0tbm8tbWFsbGluZm8ucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wNzAwLWFybXY3 bC1uZW9uLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDYtd2ViZW5naW5lL3Bh dGNoZXMvMDc1MC1jaHJvbWl1bS1tdXNsLWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzA3NTEtY2hyb21p dW0tbXVzbC1hcm0tdXNlcl92ZnAucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0 Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wNzUyLWNocm9taXVtLW11c2wtYXJtLWVsZl9hdXh2X3QucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wOTAw LWNyb3NzLWJ1aWxkLWV4YW1wbGVzLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9x dDYtd2ViZW5naW5lL3BhdGNoZXMveHh4LXBwYzY0bGUtNGstcGFnZXMucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy94eHgtcHBjNjRsZS1saWJ2 cHgucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hl cy94eHgtcHBjNjRsZS1zYW5kYm94LWxpbnV4LXN0YXQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy94eHgtcHBjNjRsZS1zdXBwb3J0LnBhdGNo CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMveHh4LXBw YzY0bGUtc3dpZnRzaGFkZXIucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13 ZWJlbmdpbmUvdGVtcGxhdGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0Ni13ZWJlbmdp bmUvdXBkYXRlCgpkaWZmIC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1vbi9zaGxpYnMKaW5k ZXggZTAxY2E0MTUxNWJkLi42NjQ4ZjJjMzViYWEgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9zaGxpYnMK KysrIGIvY29tbW9uL3NobGlicwpAQCAtMjA5NCw2ICsyMDk0LDEzIEBAIGxpYlF0NlBvc2l0aW9u aW5nLnNvLjYgcXQ2LWxvY2F0aW9uLTYuMi4wYWxwaGFfMQogbGliUXQ2TXVsdGltZWRpYVdpZGdl dHMuc28uNiBxdDYtbXVsdGltZWRpYS02LjMuMV8xCiBsaWJRdDZNdWx0aW1lZGlhUXVpY2suc28u NiBxdDYtbXVsdGltZWRpYS02LjMuMV8xCiBsaWJRdDZNdWx0aW1lZGlhLnNvLjYgcXQ2LW11bHRp bWVkaWEtNi4zLjFfMQorbGliUXQ2V2ViRW5naW5lUXVpY2suc28uNiBxdDYtd2ViZW5naW5lLTYu My4xXzEKK2xpYlF0NlBkZldpZGdldHMuc28uNiBxdDYtd2ViZW5naW5lLTYuMy4xXzEKK2xpYlF0 NlBkZlF1aWNrLnNvLjYgcXQ2LXdlYmVuZ2luZS02LjMuMV8xCitsaWJRdDZXZWJFbmdpbmVDb3Jl LnNvLjYgcXQ2LXdlYmVuZ2luZS02LjMuMV8xCitsaWJRdDZQZGYuc28uNiBxdDYtd2ViZW5naW5l LTYuMy4xXzEKK2xpYlF0NldlYkVuZ2luZVF1aWNrRGVsZWdhdGVzUW1sLnNvLjYgcXQ2LXdlYmVu Z2luZS02LjMuMV8xCitsaWJRdDZXZWJFbmdpbmVXaWRnZXRzLnNvLjYgcXQ2LXdlYmVuZ2luZS02 LjMuMV8xCiBsaWJucHRoLnNvLjAgbnB0aC0xLjFfMQogbGlibnB1cG5wLnNvLjkgbGlibnB1cG5w LTUuMC4wXzEKIGxpYmdsZncuc28uMyBnbGZ3LTMuMC40XzEKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cXQ2LXdlYmVuZ2luZS1kZXZlbCBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS1kZXZlbApuZXcgZmls ZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAuLjhlNGQxYjk5YzU4NwotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS1kZXZlbApAQCAtMCwwICsxIEBACitxdDYt d2ViZW5naW5lClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9xdDYtd2ViZW5naW5lLWV4YW1wbGVzIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lLWV4YW1wbGVz Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMC4uOGU0ZDFiOTljNTg3Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lLWV4YW1wbGVzCkBAIC0wLDAg KzEgQEAKK3F0Ni13ZWJlbmdpbmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMDAxLU5vbmUtbm8tZGVidWcucGF0 Y2ggYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMDAxLU5vbmUtbm8tZGVidWcucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iMjIxZmRjZDM5MmYK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMDAxLU5v bmUtbm8tZGVidWcucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0tIHF0Ni13ZWJlbmdpbmUtNi40 LjIub3JpZy9jbWFrZS9GdW5jdGlvbnMuY21ha2UKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL2Nt YWtlL0Z1bmN0aW9ucy5jbWFrZQorQEAgLTgyMCw2ICs4MjAsOCBAQCBtYWNybyhhcHBlbmRfYnVp bGRfdHlwZV9zZXR1cCkKKyAgICAgICAgIGVuZGlmKCkKKyAgICAgZWxzZWlmKCR7Y29uZmlnfSBT VFJFUVVBTCAiTWluU2l6ZVJlbCIpCisgICAgICAgICBsaXN0KEFQUEVORCBnbkFyZ0FyZyBpc19k ZWJ1Zz1mYWxzZSBzeW1ib2xfbGV2ZWw9MCBvcHRpbWl6ZV9mb3Jfc2l6ZT10cnVlKQorKyAgICBl bHNlaWYoJHtjb25maWd9IFNUUkVRVUFMICJOb25lIikKKysgICAgICAgIGxpc3QoQVBQRU5EIGdu QXJnQXJnIGlzX2RlYnVnPWZhbHNlIHN5bWJvbF9sZXZlbD0wKQorICAgICBlbmRpZigpCisgICAg IGlmKEZFQVRVUkVfZGV2ZWxvcGVyX2J1aWxkIE9SICgke2NvbmZpZ30gU1RSRVFVQUwgIkRlYnVn IikgT1IgUVRfRkVBVFVSRV93ZWJlbmdpbmVfc2FuaXRpemVyKQorICAgICAgICAgbGlzdChBUFBF TkQgZ25BcmdBcmcKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAw MDMtY3Jvc3MtaGFjay5wYXRjaCBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDMt Y3Jvc3MtaGFjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LmEzZjBhNTc5MTQwNgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9w YXRjaGVzLzAwMDMtY3Jvc3MtaGFjay5wYXRjaApAQCAtMCwwICsxLDEwIEBACistLS0gcXQ2LXdl YmVuZ2luZS02LjQuMi5vcmlnL3NyYy9jb3JlL2FwaS9DTWFrZUxpc3RzLnR4dAorKysrIHF0Ni13 ZWJlbmdpbmUtNi40LjIvc3JjL2NvcmUvYXBpL0NNYWtlTGlzdHMudHh0CitAQCAtNTEsNiArNTEs NyBAQCBxdF9pbnRlcm5hbF9hZGRfbW9kdWxlKFdlYkVuZ2luZUNvcmUKKyAgICAgICAgIFF0OjpH dWkKKyAgICAgICAgIFF0OjpOZXR3b3JrCisgICAgICAgICBRdDo6UXVpY2sKKysgICAgICAgIFgx MQorICkKKyAKKyBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoV2ViRW5naW5lQ29yZSBQUk9QRVJUSUVT IFFUV0VCRU5HSU5FUFJPQ0VTU19OQU1FICR7cXRXZWJFbmdpbmVQcm9jZXNzTmFtZX0pCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA0LXBwYy1kaXNhYmxlLWp4 bC1kZWNvZGVyLnBhdGNoIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDAwNC1wcGMt ZGlzYWJsZS1qeGwtZGVjb2Rlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjk3OWNiOWEwNTE5YwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdl YmVuZ2luZS9wYXRjaGVzLzAwMDQtcHBjLWRpc2FibGUtanhsLWRlY29kZXIucGF0Y2gKQEAgLTAs MCArMSwxMyBAQAorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvY29yZS9DTWFrZUxp c3RzLnR4dAorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjL2NvcmUvQ01ha2VMaXN0cy50eHQK K0BAIC00MzUsNiArNDM1LDEwIEBAIGZvcmVhY2goYXJjaCAke2FyY2hzfSkKKyAgICAgICAgICAg ICAgICAgQ09ORElUSU9OIFFUX0ZFQVRVUkVfd2ViZW5naW5lX296b25lX3gxMSBBTkQgUVRfRkVB VFVSRV93ZWJlbmdpbmVfd2VicnRjCisgICAgICAgICAgICAgKQorIAorKyAgICAgICAgICAgIGlm IChjcHUgU1RSRVFVQUwgInBwYzY0IikKKysgICAgICAgICAgICAgICAgbGlzdChBUFBFTkQgZ25B cmdBcmcgZW5hYmxlX2p4bF9kZWNvZGVyPWZhbHNlKQorKyAgICAgICAgICAgIGVuZGlmKCkKKysK KyAgICAgICAgICAgICBpZihRVF9GRUFUVVJFX3dlYmVuZ2luZV9rZXJiZXJvcykKKyAgICAgICAg ICAgICAgICAgbGlzdChBUFBFTkQgZ25BcmdBcmcKKyAgICAgICAgICAgICAgICAgICAgICBleHRl cm5hbF9nc3NhcGlfaW5jbHVkZV9kaXI9IiR7R1NTQVBJX0lOQ0xVREVfRElSU30vZ3NzYXBpIgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDA1MC1uby1nbGliYy1j bWFrZS1jaGVjay5wYXRjaCBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAwNTAtbm8t Z2xpYmMtY21ha2UtY2hlY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5kOTExNmRjNTg1N2UKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0Ni13ZWJl bmdpbmUvcGF0Y2hlcy8wMDUwLW5vLWdsaWJjLWNtYWtlLWNoZWNrLnBhdGNoCkBAIC0wLDAgKzEs MTQgQEAKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvY29uZmlndXJlLmNtYWtlCisrKysg cXQ2LXdlYmVuZ2luZS02LjQuMi9jb25maWd1cmUuY21ha2UKK0BAIC00OTksMTEgKzQ5OSw2IEBA IGFkZF9jaGVja19mb3Jfc3VwcG9ydCgKKyApCisgYWRkX2NoZWNrX2Zvcl9zdXBwb3J0KAorICAg IE1PRFVMRVMgUXRXZWJFbmdpbmUgUXRQZGYKKy0gICBDT05ESVRJT04gTk9UIExJTlVYIE9SIFRF U1RfZ2xpYmMKKy0gICBNRVNTQUdFICJBIHN1aXRhYmxlIHZlcnNpb24gPj0gMi4xNyBvZiBnbGli YyBpcyByZXF1aXJlZC4iCistKQorLWFkZF9jaGVja19mb3Jfc3VwcG9ydCgKKy0gICBNT0RVTEVT IFF0V2ViRW5naW5lIFF0UGRmCisgICAgQ09ORElUSU9OIE5PVCBMSU5VWCBPUiBURVNUX2tocgor ICAgIE1FU1NBR0UgIkJ1aWxkIHJlcXVpcmVzIEtocm9ub3MgZGV2ZWxvcG1lbnQgaGVhZGVycyBm b3IgYnVpbGQgLSBzZWUgbWVzYS9saWJlZ2wxLW1lc2EtZGV2IgorICkKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMDAtY2hyb21pdW0tcmV2ZXJ0LTlkMDgwYzAu cGF0Y2ggYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTAwLWNocm9taXVtLXJldmVy dC05ZDA4MGMwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u YWRjYTM2NGE0MDYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3Bh dGNoZXMvMDEwMC1jaHJvbWl1bS1yZXZlcnQtOWQwODBjMC5wYXRjaApAQCAtMCwwICsxLDE1NCBA QAorUmV2ZXJ0IDlkMDgwYzA5MzRiODQ4ZWU0YTA1MDEzYzc4NjQxZTYxMmZjYzFlMDMKKworLS0t IHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvY29u ZmlnL3Nhbml0aXplcnMvQlVJTEQuZ24KKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9idWlsZC9jb25maWcvc2FuaXRpemVycy9CVUlMRC5nbgorQEAgLTI3MSwx MSArMjcxLDExIEBAIGNvbmZpZygiYXNhbl9mbGFncyIpIHsKKyAgIGlmIChpc19hc2FuKSB7Cisg ICAgIGNmbGFncyArPSBbICItZnNhbml0aXplPWFkZHJlc3MiIF0KKyAgICAgaWYgKGlzX3dpbikg eworLSAgICAgIGlmICghZGVmaW5lZChhc2FuX3dpbl9ibG9ja2xpc3RfcGF0aCkpIHsKKy0gICAg ICAgIGFzYW5fd2luX2Jsb2NrbGlzdF9wYXRoID0KKysgICAgICBpZiAoIWRlZmluZWQoYXNhbl93 aW5fYmxhY2tsaXN0X3BhdGgpKSB7CisrICAgICAgICBhc2FuX3dpbl9ibGFja2xpc3RfcGF0aCA9 CisgICAgICAgICAgICAgcmViYXNlX3BhdGgoIi8vdG9vbHMvbWVtb3J5L2FzYW4vYmxvY2tsaXN0 X3dpbi50eHQiLCByb290X2J1aWxkX2RpcikKKyAgICAgICB9CistICAgICAgY2ZsYWdzICs9IFsg Ii1mc2FuaXRpemUtaWdub3JlbGlzdD0kYXNhbl93aW5fYmxvY2tsaXN0X3BhdGgiIF0KKysgICAg ICBjZmxhZ3MgKz0gWyAiLWZzYW5pdGl6ZS1ibGFja2xpc3Q9JGFzYW5fd2luX2JsYWNrbGlzdF9w YXRoIiBdCisgICAgIH0KKyAgIH0KKyB9CitAQCAtMzA1LDEzICszMDUsMTMgQEAgY29uZmlnKCJs aW5rX3NoYXJlZF9saWJyYXJ5IikgeworIGNvbmZpZygiY2ZpX2ZsYWdzIikgeworICAgY2ZsYWdz ID0gW10KKyAgIGlmIChpc19jZmkgJiYgY3VycmVudF90b29sY2hhaW4gPT0gZGVmYXVsdF90b29s Y2hhaW4pIHsKKy0gICAgaWYgKCFkZWZpbmVkKGNmaV9pZ25vcmVsaXN0X3BhdGgpKSB7CistICAg ICAgY2ZpX2lnbm9yZWxpc3RfcGF0aCA9CisrICAgIGlmICghZGVmaW5lZChjZmlfYmxhY2tsaXN0 X3BhdGgpKSB7CisrICAgICAgY2ZpX2JsYWNrbGlzdF9wYXRoID0KKyAgICAgICAgICAgcmViYXNl X3BhdGgoIi8vdG9vbHMvY2ZpL2lnbm9yZXMudHh0Iiwgcm9vdF9idWlsZF9kaXIpCisgICAgIH0K KyAgICAgY2ZsYWdzICs9IFsKKyAgICAgICAiLWZzYW5pdGl6ZT1jZmktdmNhbGwiLAorLSAgICAg ICItZnNhbml0aXplLWlnbm9yZWxpc3Q9JGNmaV9pZ25vcmVsaXN0X3BhdGgiLAorKyAgICAgICIt ZnNhbml0aXplLWJsYWNrbGlzdD0kY2ZpX2JsYWNrbGlzdF9wYXRoIiwKKyAgICAgXQorIAorICAg ICBpZiAodXNlX2NmaV9jYXN0KSB7CitAQCAtNDA4LDE0ICs0MDgsMTQgQEAgY29uZmlnKCJtc2Fu X2ZsYWdzIikgeworICAgaWYgKGlzX21zYW4pIHsKKyAgICAgYXNzZXJ0KGlzX2xpbnV4IHx8IGlz X2Nocm9tZW9zLAorICAgICAgICAgICAgIm1zYW4gb25seSBzdXBwb3J0ZWQgb24gbGludXggeDg2 XzY0L0Nocm9tZU9TIikKKy0gICAgaWYgKCFkZWZpbmVkKG1zYW5faWdub3JlbGlzdF9wYXRoKSkg eworLSAgICAgIG1zYW5faWdub3JlbGlzdF9wYXRoID0KKy0gICAgICAgICAgcmViYXNlX3BhdGgo Ii8vdG9vbHMvbXNhbi9pZ25vcmVsaXN0LnR4dCIsIHJvb3RfYnVpbGRfZGlyKQorKyAgICBpZiAo IWRlZmluZWQobXNhbl9ibGFja2xpc3RfcGF0aCkpIHsKKysgICAgICBtc2FuX2JsYWNrbGlzdF9w YXRoID0KKysgICAgICAgICAgcmViYXNlX3BhdGgoIi8vdG9vbHMvbXNhbi9ibGFja2xpc3QudHh0 Iiwgcm9vdF9idWlsZF9kaXIpCisgICAgIH0KKyAgICAgY2ZsYWdzID0gWworICAgICAgICItZnNh bml0aXplPW1lbW9yeSIsCisgICAgICAgIi1mc2FuaXRpemUtbWVtb3J5LXRyYWNrLW9yaWdpbnM9 JG1zYW5fdHJhY2tfb3JpZ2lucyIsCistICAgICAgIi1mc2FuaXRpemUtaWdub3JlbGlzdD0kbXNh bl9pZ25vcmVsaXN0X3BhdGgiLAorKyAgICAgICItZnNhbml0aXplLWJsYWNrbGlzdD0kbXNhbl9i bGFja2xpc3RfcGF0aCIsCisgICAgIF0KKyAgIH0KKyB9CitAQCAtNDIzLDEzICs0MjMsMTMgQEAg Y29uZmlnKCJtc2FuX2ZsYWdzIikgeworIGNvbmZpZygidHNhbl9mbGFncyIpIHsKKyAgIGlmIChp c190c2FuKSB7CisgICAgIGFzc2VydChpc19saW51eCB8fCBpc19jaHJvbWVvcywgInRzYW4gb25s eSBzdXBwb3J0ZWQgb24gbGludXggeDg2XzY0IikKKy0gICAgaWYgKCFkZWZpbmVkKHRzYW5faWdu b3JlbGlzdF9wYXRoKSkgeworLSAgICAgIHRzYW5faWdub3JlbGlzdF9wYXRoID0KKysgICAgaWYg KCFkZWZpbmVkKHRzYW5fYmxhY2tsaXN0X3BhdGgpKSB7CisrICAgICAgdHNhbl9ibGFja2xpc3Rf cGF0aCA9CisgICAgICAgICAgIHJlYmFzZV9wYXRoKCIvL3Rvb2xzL21lbW9yeS90c2FuX3YyL2ln bm9yZXMudHh0Iiwgcm9vdF9idWlsZF9kaXIpCisgICAgIH0KKyAgICAgY2ZsYWdzID0gWworICAg ICAgICItZnNhbml0aXplPXRocmVhZCIsCistICAgICAgIi1mc2FuaXRpemUtaWdub3JlbGlzdD0k dHNhbl9pZ25vcmVsaXN0X3BhdGgiLAorKyAgICAgICItZnNhbml0aXplLWJsYWNrbGlzdD0kdHNh bl9ibGFja2xpc3RfcGF0aCIsCisgICAgIF0KKyAgIH0KKyB9CitAQCAtNDM3LDggKzQzNyw4IEBA IGNvbmZpZygidHNhbl9mbGFncyIpIHsKKyBjb25maWcoInVic2FuX2ZsYWdzIikgeworICAgY2Zs YWdzID0gW10KKyAgIGlmIChpc191YnNhbikgeworLSAgICBpZiAoIWRlZmluZWQodWJzYW5faWdu b3JlbGlzdF9wYXRoKSkgeworLSAgICAgIHVic2FuX2lnbm9yZWxpc3RfcGF0aCA9CisrICAgIGlm ICghZGVmaW5lZCh1YnNhbl9ibGFja2xpc3RfcGF0aCkpIHsKKysgICAgICB1YnNhbl9ibGFja2xp c3RfcGF0aCA9CisgICAgICAgICAgIHJlYmFzZV9wYXRoKCIvL3Rvb2xzL3Vic2FuL2lnbm9yZWxp c3QudHh0Iiwgcm9vdF9idWlsZF9kaXIpCisgICAgIH0KKyAgICAgY2ZsYWdzICs9IFsKK0BAIC00 NTUsNyArNDU1LDcgQEAgY29uZmlnKCJ1YnNhbl9mbGFncyIpIHsKKyAgICAgICAiLWZzYW5pdGl6 ZT1zaWduZWQtaW50ZWdlci1vdmVyZmxvdyIsCisgICAgICAgIi1mc2FuaXRpemU9dW5yZWFjaGFi bGUiLAorICAgICAgICItZnNhbml0aXplPXZsYS1ib3VuZCIsCistICAgICAgIi1mc2FuaXRpemUt aWdub3JlbGlzdD0kdWJzYW5faWdub3JlbGlzdF9wYXRoIiwKKysgICAgICAiLWZzYW5pdGl6ZS1i bGFja2xpc3Q9JHVic2FuX2JsYWNrbGlzdF9wYXRoIiwKKyAgICAgXQorICAgICBpZiAoIWlzX2Ns YW5nKSB7CisgICAgICAgIyBUaGVzZSBleHBvc2VzIHRvbyBtdWNoIGlsbGVnYWwgQysrMTQgY29k ZSB0byBjb21waWxlIG9uIGFueXRoaW5nIHN0cmljdGVyIHRoYW4gY2xhbmc6CitAQCAtNDk2LDgg KzQ5Niw4IEBAIGNvbmZpZygidWJzYW5fbm9fcmVjb3ZlciIpIHsKKyAKKyBjb25maWcoInVic2Fu X3NlY3VyaXR5X2ZsYWdzIikgeworICAgaWYgKGlzX3Vic2FuX3NlY3VyaXR5KSB7CistICAgIGlm ICghZGVmaW5lZCh1YnNhbl9zZWN1cml0eV9pZ25vcmVsaXN0X3BhdGgpKSB7CistICAgICAgdWJz YW5fc2VjdXJpdHlfaWdub3JlbGlzdF9wYXRoID0KKysgICAgaWYgKCFkZWZpbmVkKHVic2FuX3Nl Y3VyaXR5X2JsYWNrbGlzdF9wYXRoKSkgeworKyAgICAgIHVic2FuX3NlY3VyaXR5X2JsYWNrbGlz dF9wYXRoID0KKyAgICAgICAgICAgcmViYXNlX3BhdGgoIi8vdG9vbHMvdWJzYW4vc2VjdXJpdHlf aWdub3JlbGlzdC50eHQiLCByb290X2J1aWxkX2RpcikKKyAgICAgfQorICAgICBjZmxhZ3MgPSBb CitAQCAtNTA1LDcgKzUwNSw3IEBAIGNvbmZpZygidWJzYW5fc2VjdXJpdHlfZmxhZ3MiKSB7Cisg ICAgICAgIi1mc2FuaXRpemU9c2hpZnQiLAorICAgICAgICItZnNhbml0aXplPXNpZ25lZC1pbnRl Z2VyLW92ZXJmbG93IiwKKyAgICAgICAiLWZzYW5pdGl6ZT12bGEtYm91bmQiLAorLSAgICAgICIt ZnNhbml0aXplLWlnbm9yZWxpc3Q9JHVic2FuX3NlY3VyaXR5X2lnbm9yZWxpc3RfcGF0aCIsCisr ICAgICAgIi1mc2FuaXRpemUtYmxhY2tsaXN0PSR1YnNhbl9zZWN1cml0eV9ibGFja2xpc3RfcGF0 aCIsCisgICAgIF0KKyAgIH0KKyB9CitAQCAtNTE4LDEzICs1MTgsMTMgQEAgY29uZmlnKCJ1YnNh bl9udWxsX2ZsYWdzIikgeworIAorIGNvbmZpZygidWJzYW5fdnB0cl9mbGFncyIpIHsKKyAgIGlm IChpc191YnNhbl92cHRyKSB7CistICAgIGlmICghZGVmaW5lZCh1YnNhbl92cHRyX2lnbm9yZWxp c3RfcGF0aCkpIHsKKy0gICAgICB1YnNhbl92cHRyX2lnbm9yZWxpc3RfcGF0aCA9CisrICAgIGlm ICghZGVmaW5lZCh1YnNhbl92cHRyX2JsYWNrbGlzdF9wYXRoKSkgeworKyAgICAgIHVic2FuX3Zw dHJfYmxhY2tsaXN0X3BhdGggPQorICAgICAgICAgICByZWJhc2VfcGF0aCgiLy90b29scy91YnNh bi92cHRyX2lnbm9yZWxpc3QudHh0Iiwgcm9vdF9idWlsZF9kaXIpCisgICAgIH0KKyAgICAgY2Zs YWdzID0gWworICAgICAgICItZnNhbml0aXplPXZwdHIiLAorLSAgICAgICItZnNhbml0aXplLWln bm9yZWxpc3Q9JHVic2FuX3ZwdHJfaWdub3JlbGlzdF9wYXRoIiwKKysgICAgICAiLWZzYW5pdGl6 ZS1ibGFja2xpc3Q9JHVic2FuX3ZwdHJfYmxhY2tsaXN0X3BhdGgiLAorICAgICBdCisgICAgIGlm ICghaXNfY2xhbmcpIHsKKyAgICAgICAjIENsYW5nIHNwZWNpZmljIGZsYWc6CistLS0gcXQ2LXdl YmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZF9vdmVycmlkZXMv YnVpbGQuZ25pCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0v YnVpbGRfb3ZlcnJpZGVzL2J1aWxkLmduaQorQEAgLTQzLDE1ICs0MywxNSBAQCBkZWNsYXJlX2Fy Z3MoKSB7CisgIyBBbGxvd3MgZGlmZmVyZW50IHByb2plY3RzIHRvIHNwZWNpZnkgdGhlaXIgb3du IHN1cHByZXNzaW9uL2lnbm9yZSBsaXN0cyBmb3IKKyAjIHNhbml0aXplciB0b29scy4KKyAjIGFz YW5fc3VwcHJlc3Npb25zX2ZpbGUgPSAicGF0aC90by9hc2FuX3N1cHByZXNzaW9ucy5jYyIKKy0j IGFzYW5fd2luX2lnbm9yZWxpc3RfcGF0aCA9ICJwYXRoL3RvL2FzYW4vYmxvY2tsaXN0X3dpbi50 eHQiCisrIyBhc2FuX3dpbl9ibGFja2xpc3RfcGF0aCA9ICJwYXRoL3RvL2FzYW4vYmxvY2tsaXN0 X3dpbi50eHQiCisgIyBsc2FuX3N1cHByZXNzaW9uc19maWxlID0gInBhdGgvdG8vbHNhbl9zdXBw cmVzc2lvbnMuY2MiCisgIyB0c2FuX3N1cHByZXNzaW9uc19maWxlID0gInBhdGgvdG8vdHNhbl9z dXBwcmVzc2lvbnMuY2MiCistIyB0c2FuX2lnbm9yZWxpc3RfcGF0aCA9ICJwYXRoL3RvL3RzYW4v aWdub3Jlcy50eHQiCistIyBtc2FuX2lnbm9yZWxpc3RfcGF0aCA9ICJwYXRoL3RvL21zYW4vaWdu b3JlbGlzdC50eHQiCistIyB1YnNhbl9pZ25vcmVsaXN0X3BhdGggPSAicGF0aC90by91YnNhbi9p Z25vcmVsaXN0LnR4dCIKKy0jIHVic2FuX3ZwdHJfaWdub3JlbGlzdF9wYXRoID0gInBhdGgvdG8v dWJzYW4vdnB0cl9pZ25vcmVsaXN0LnR4dCIKKy0jIHVic2FuX3NlY3VyaXR5X2lnbm9yZWxpc3Rf cGF0aCA9ICJwYXRoL3RvL3Vic2FuL3NlY3VyaXR5X2lnbm9yZWxpc3QudHh0IgorLSMgY2ZpX2ln bm9yZWxpc3RfcGF0aCA9ICJwYXRoL3RvL2NmaS9pZ25vcmVzLnR4dCIKKysjIHRzYW5fYmxhY2ts aXN0X3BhdGggPSAicGF0aC90by90c2FuL2lnbm9yZXMudHh0IgorKyMgbXNhbl9ibGFja2xpc3Rf cGF0aCA9ICJwYXRoL3RvL21zYW4vYmxhY2tsaXN0LnR4dCIKKysjIHVic2FuX2JsYWNrbGlzdF9w YXRoID0gInBhdGgvdG8vdWJzYW4vYmxhY2tsaXN0LnR4dCIKKysjIHVic2FuX3ZwdHJfYmxhY2ts aXN0X3BhdGggPSAicGF0aC90by91YnNhbi92cHRyX2JsYWNrbGlzdC50eHQiCisrIyB1YnNhbl9z ZWN1cml0eV9ibGFja2xpc3RfcGF0aCA9ICJwYXRoL3RvL3Vic2FuL3NlY3VyaXR5X2JsYWNrbGlz dC50eHQiCisrIyBjZmlfYmxhY2tsaXN0X3BhdGggPSAicGF0aC90by9jZmkvaWdub3Jlcy50eHQi CisgCisgaWYgKGhvc3Rfb3MgPT0gIm1hYyIgfHwgaXNfYXBwbGUpIHsKKyAgICMgTmVlZGVkIGZv ciBpc19hcHBsZSB3aGVuIHRhcmdldGluZyBtYWNPUyBvciBpT1MsIGluZGVwZW5kZW50IG9mIGhv c3QuCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTAxLWNocm9t aXVtLTEwMi1mZW5jZWRfZnJhbWVfdXRpbHMtaW5jbHVkZS5wYXRjaCBiL3NyY3BrZ3MvcXQ2LXdl YmVuZ2luZS9wYXRjaGVzLzAxMDEtY2hyb21pdW0tMTAyLWZlbmNlZF9mcmFtZV91dGlscy1pbmNs dWRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjQxYzc5 ODQ4NDBkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMv MDEwMS1jaHJvbWl1bS0xMDItZmVuY2VkX2ZyYW1lX3V0aWxzLWluY2x1ZGUucGF0Y2gKQEAgLTAs MCArMSwyMCBAQAorRnJvbSA3YzEzNWEyOTExODRiNTlhNTk2NDNlZDZhOGM0MGI0NDA1YWMwMTc1 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU3RlcGhhbiBIYXJ0bWFubiA8c3RoYTA5 QGdvb2dsZW1haWwuY29tPgorRGF0ZTogV2VkLCAyNyBBcHIgMjAyMiAxNjowMTowMSArMDAwMAor U3ViamVjdDogW1BBVENIXSBJV1lVOiBhZGQgY3N0cmluZyBmb3Igc3RkOjpzdHJsZW4gaW4gZmVu Y2VkX2ZyYW1lX3V0aWxzCisKKy0tLQorIHRoaXJkX3BhcnR5L2JsaW5rL2NvbW1vbi9mZW5jZWRf ZnJhbWUvZmVuY2VkX2ZyYW1lX3V0aWxzLmNjIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGlu c2VydGlvbnMoKykKKworLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvY29tbW9uL2ZlbmNlZF9mcmFtZS9mZW5jZWRfZnJh bWVfdXRpbHMuY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9ibGluay9jb21tb24vZmVuY2VkX2ZyYW1lL2ZlbmNlZF9mcmFtZV91dGls cy5jYworQEAgLTYsNiArNiw4IEBACisgCisgI2luY2x1ZGUgPGNzdHJpbmc+CisgCisrI2luY2x1 ZGUgPGNzdHJpbmc+CisrCisgI2luY2x1ZGUgImJhc2UvZ3VpZC5oIgorICNpbmNsdWRlICJiYXNl L3N0cmluZ3Mvc3RyaW5nX3V0aWwuaCIKKyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVu Z2luZS9wYXRjaGVzLzAxMDItY2hyb21pdW0tMTAyLXJlZ2V4X3BhdHRlcm4tYXJyYXkucGF0Y2gg Yi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTAyLWNocm9taXVtLTEwMi1yZWdleF9w YXR0ZXJuLWFycmF5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uNDIwZWY5NDFhMzg2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDYtd2ViZW5naW5l L3BhdGNoZXMvMDEwMi1jaHJvbWl1bS0xMDItcmVnZXhfcGF0dGVybi1hcnJheS5wYXRjaApAQCAt MCwwICsxLDE0IEBACistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9CVUlMRC5nbgorKysrIHF0 Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvYXV0b2Zp bGwvY29yZS9icm93c2VyL0JVSUxELmduCitAQCAtMzQsNiArMzQsMTEgQEAgYWN0aW9uKCJyZWdl eF9wYXR0ZXJuc19pbmxfaCIpIHsKKyB9CisgCisganVtYm9fc3RhdGljX2xpYnJhcnkoImJyb3dz ZXIiKSB7CisrICBpZiAoaXNfY2xhbmcpIHsKKysgICAgY2ZsYWdzID0gWworKyAgICAgICItZmJy YWNrZXQtZGVwdGg9MTAwMCIsCisrICAgIF0KKysgIH0KKyAgIHNvdXJjZXMgPSBbCisgICAgICJh ZGRyZXNzX25vcm1hbGl6YXRpb25fbWFuYWdlci5jYyIsCisgICAgICJhZGRyZXNzX25vcm1hbGl6 YXRpb25fbWFuYWdlci5oIiwKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRj aGVzLzAxMDMtY2hyb21pdW0taTY4Ni12YWFwaS1mcGVybWlzc2l2ZS5wYXRjaCBiL3NyY3BrZ3Mv cXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMDMtY2hyb21pdW0taTY4Ni12YWFwaS1mcGVybWlzc2l2 ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcwOGQ1Njdh MDRkYwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAx MDMtY2hyb21pdW0taTY4Ni12YWFwaS1mcGVybWlzc2l2ZS5wYXRjaApAQCAtMCwwICsxLDIzIEBA CistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRp YS9ncHUvdmFhcGkvQlVJTEQuZ24KKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9tZWRpYS9ncHUvdmFhcGkvQlVJTEQuZ24KK0BAIC0xNCw2ICsxNCwxMiBAQCBp bXBvcnQoIi8vdWkvZ2wvZmVhdHVyZXMuZ25pIikKKyBhc3NlcnQoaXNfbGludXggfHwgaXNfY2hy b21lb3MpCisgYXNzZXJ0KHVzZV92YWFwaSkKKyAKKytjb25maWcoInZhYXBpX3Blcm1pc3NpdmUi KSB7CisrICBpZiAodGFyZ2V0X2NwdSA9PSAieDg2IikgeworKyAgICBjZmxhZ3MgPSBbICItZnBl cm1pc3NpdmUiIF0KKysgIH0KKyt9CisrCisgZ2VuZXJhdGVfc3R1YnMoImxpYnZhX3N0dWJzIikg eworICAgZXh0cmFfaGVhZGVyID0gInZhX3N0dWJfaGVhZGVyLmZyYWdtZW50IgorICAgc2lncyA9 IFsgInZhLnNpZ3MiIF0KK0BAIC04OSw2ICs5NSw3IEBAIHNvdXJjZV9zZXQoInZhYXBpIikgewor ICAgY29uZmlncyArPSBbCisgICAgICIvL2J1aWxkL2NvbmZpZy9saW51eC9saWJ2YSIsCisgICAg ICIvL3RoaXJkX3BhcnR5L2xpYnZweDpsaWJ2cHhfY29uZmlnIiwKKysgICAgIjp2YWFwaV9wZXJt aXNzaXZlIiwKKyAgIF0KKyAKKyAgIGRlcHMgPSBbCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13 ZWJlbmdpbmUvcGF0Y2hlcy8wMTA0LWNocm9taXVtLWxpYnhtbC11bmJ1bmRsZS5wYXRjaCBiL3Ny Y3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMDQtY2hyb21pdW0tbGlieG1sLXVuYnVuZGxl LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmFjYTQ4NGFi YzRhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDEw NC1jaHJvbWl1bS1saWJ4bWwtdW5idW5kbGUucGF0Y2gKQEAgLTAsMCArMSwxMCBAQAorLS0tIHF0 Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvbGludXgv dW5idW5kbGUvbGlieG1sLmduCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkv Y2hyb21pdW0vYnVpbGQvbGludXgvdW5idW5kbGUvbGlieG1sLmduCitAQCAtMTksNiArMTksNyBA QCBzdGF0aWNfbGlicmFyeSgibGlieG1sX3V0aWxzIikgeworICAgICAiOnhtbF9yZWFkZXIiLAor ICAgICAiOnhtbF93cml0ZXIiLAorICAgICAiLy9iYXNlL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKKysg ICAgIi8vc2VydmljZXMvZGF0YV9kZWNvZGVyOmxpYiIsCisgICAgICIvL3NlcnZpY2VzL2RhdGFf ZGVjb2Rlcjp4bWxfcGFyc2VyX2Z1enplcl9kZXBzIiwKKyAgIF0KKyAgIHNvdXJjZXMgPSBbCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTA1LWNocm9taXVtLXJl dmVydC1kcm9wLW9mLXN5c3RlbS1qYXZhLnBhdGNoIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3Bh dGNoZXMvMDEwNS1jaHJvbWl1bS1yZXZlcnQtZHJvcC1vZi1zeXN0ZW0tamF2YS5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ2YWJmN2FkY2FiYwotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMDUtY2hyb21pdW0t cmV2ZXJ0LWRyb3Atb2Ytc3lzdGVtLWphdmEucGF0Y2gKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB3 YXMgZHJvcHBlZCBmb3Igc29tZSByZWFzb24gaW4gNjk1MWMzN2NlY2QwNTk3OWIyMzJhMzllNWMx MGU2MzQ2YTBmNzRlZgorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvY2xvc3VyZV9jb21waWxlci9jb21waWxlci5weQorKysrIHF0 Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Nsb3N1 cmVfY29tcGlsZXIvY29tcGlsZXIucHkKK0BAIC0xMyw4ICsxMyw5IEBAIGltcG9ydCBzdWJwcm9j ZXNzCisgCisgCisgX0NVUlJFTlRfRElSID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShf X2ZpbGVfXykpCistX0pBVkFfUEFUSCA9IG9zLnBhdGguam9pbihfQ1VSUkVOVF9ESVIsICIuLiIs ICJqZGsiLCAiY3VycmVudCIsICJiaW4iLCAiamF2YSIpCistYXNzZXJ0IG9zLnBhdGguaXNmaWxl KF9KQVZBX1BBVEgpLCAiamF2YSBvbmx5IGFsbG93ZWQgaW4gYW5kcm9pZCBidWlsZHMiCisrX0pB VkFfQklOID0gImphdmEiCisrX0pES19QQVRIID0gb3MucGF0aC5qb2luKF9DVVJSRU5UX0RJUiwg Ii4uIiwgImpkayIsICJjdXJyZW50IiwgImJpbiIsICJqYXZhIikKKytfSkFWQV9QQVRIID0gX0pE S19QQVRIIGlmIG9zLnBhdGguaXNmaWxlKF9KREtfUEFUSCkgZWxzZSBfSkFWQV9CSU4KKyAKKyBj bGFzcyBDb21waWxlcihvYmplY3QpOgorICAgIiIiUnVucyB0aGUgQ2xvc3VyZSBjb21waWxlciBv biBnaXZlbiBzb3VyY2UgZmlsZXMgdG8gdHlwZWNoZWNrIHRoZW0KZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMDYtY2hyb21pdW0tc3lzdGVtLW5vZGVqcy5wYXRj aCBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMDYtY2hyb21pdW0tc3lzdGVtLW5v ZGVqcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE2NDhm NzY0ZWExOQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVz LzAxMDYtY2hyb21pdW0tc3lzdGVtLW5vZGVqcy5wYXRjaApAQCAtMCwwICsxLDI5IEBACistLS0g cXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9ub2RlL25vZGUucHkKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ub2RlL25vZGUucHkKK0BAIC0xOCwyNSArMTgsNyBAQCBkZWYgd2hp Y2goY21kKToKKyAgICAgcmV0dXJuIE5vbmUKKyAKKyBkZWYgR2V0QmluYXJ5UGF0aCgpOgorLSAg aWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CistICAgIG5vZGVqcyA9IHdoaWNoKCdub2RlLmV4 ZScpCistICAgIGlmIG5vZGVqczoKKy0gICAgICByZXR1cm4gbm9kZWpzCistICBlbHNlOgorLSAg ICBub2RlanMgPSB3aGljaCgnbm9kZWpzJykKKy0gICAgaWYgbm9kZWpzOgorLSAgICAgIHJldHVy biBub2RlanMKKy0gICAgbm9kZWpzID0gd2hpY2goJ25vZGUnKQorLSAgICBpZiBub2RlanM6Cist ICAgICAgcmV0dXJuIG5vZGVqcworLQorLSAgZGFyd2luX25hbWUgPSAoJ25vZGUtZGFyd2luLWFy bTY0JyBpZiBwbGF0Zm9ybS5tYWNoaW5lKCkgPT0gJ2FybTY0JyBlbHNlCistICAgICAgICAgICAg ICAgICAnbm9kZS1kYXJ3aW4teDY0JykKKy0gIHJldHVybiBvc19wYXRoLmpvaW4ob3NfcGF0aC5k aXJuYW1lKF9fZmlsZV9fKSwgKnsKKy0gICAgJ0Rhcndpbic6ICgnbWFjJywgZGFyd2luX25hbWUs ICdiaW4nLCAnbm9kZScpLAorLSAgICAnTGludXgnOiAoJ2xpbnV4JywgJ25vZGUtbGludXgteDY0 JywgJ2JpbicsICdub2RlJyksCistICAgICdXaW5kb3dzJzogKCd3aW4nLCAnbm9kZS5leGUnKSwK Ky0gIH1bcGxhdGZvcm0uc3lzdGVtKCldKQorKyAgcmV0dXJuICIvdXNyL2Jpbi9ub2RlIgorIAor IAorIGRlZiBSdW5Ob2RlKGNtZF9wYXJ0cywgc3Rkb3V0PU5vbmUpOgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDEwNy1jaHJvbWl1bS1jcm9zcy1idWlsZC5wYXRj aCBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMDctY2hyb21pdW0tY3Jvc3MtYnVp bGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NDk1NGRm YmIxZTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8w MTA3LWNocm9taXVtLWNyb3NzLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKKy0tLSBxdDYt d2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL2NvbmZpZy9j b21waWxlci9CVUlMRC5nbgorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2No cm9taXVtL2J1aWxkL2NvbmZpZy9jb21waWxlci9CVUlMRC5nbgorQEAgLTU4LDYgKzU4LDEwIEBA IGlmICghaXNfY2xhbmcpIHsKKyB9CisgCisgZGVjbGFyZV9hcmdzKCkgeworKyAgaXNfbXVzbCA9 IGZhbHNlCisrfQorKworK2RlY2xhcmVfYXJncygpIHsKKyAgICMgTm9ybWFsbHksIEFuZHJvaWQg YnVpbGRzIGFyZSBsaWdodGx5IG9wdGltaXplZCwgZXZlbiBmb3IgZGVidWcgYnVpbGRzLCB0bwor ICAgIyBrZWVwIGJpbmFyeSBzaXplIGRvd24uIFNldHRpbmcgdGhpcyBmbGFnIHRvIHRydWUgZGlz YWJsZXMgc3VjaCBvcHRpbWl6YXRpb24KKyAgIGFuZHJvaWRfZnVsbF9kZWJ1ZyA9IGZhbHNlCitA QCAtOTcwLDggKzk3NCwxMyBAQCBjb25maWcoImNvbXBpbGVyX2NwdV9hYmkiKSB7CisgICAgICAg fQorICAgICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm02NCIpIHsKKyAgICAgICBpZiAo aXNfY2xhbmcgJiYgIWlzX2FuZHJvaWQgJiYgIWlzX25hY2wgJiYgIWlzX2Z1Y2hzaWEpIHsKKy0g ICAgICAgIGNmbGFncyArPSBbICItLXRhcmdldD1hYXJjaDY0LWxpbnV4LWdudSIgXQorLSAgICAg ICAgbGRmbGFncyArPSBbICItLXRhcmdldD1hYXJjaDY0LWxpbnV4LWdudSIgXQorKyAgICAgICAg aWYgKGlzX211c2wpIHsKKysgICAgICAgICAgY2ZsYWdzICs9IFsgIi0tdGFyZ2V0PWFhcmNoNjQt bGludXgtbXVzbCIgXQorKyAgICAgICAgICBsZGZsYWdzICs9IFsgIi0tdGFyZ2V0PWFhcmNoNjQt bGludXgtbXVzbCIgXQorKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgY2ZsYWdzICs9IFsg Ii0tdGFyZ2V0PWFhcmNoNjQtbGludXgtZ251IiBdCisrICAgICAgICAgIGxkZmxhZ3MgKz0gWyAi LS10YXJnZXQ9YWFyY2g2NC1saW51eC1nbnUiIF0KKysgICAgICAgIH0KKyAgICAgICB9CisgICAg ICAgaWYgKGlzX2FuZHJvaWQpIHsKKyAgICAgICAgICMgT3V0bGluZSBhdG9taWNzIGNyYXNoIG9u IEV4eW5vcyA5ODEwLiBodHRwOi8vY3JidWcuY29tLzEyNzI3OTUKKy0tLSBxdDYtd2ViZW5naW5l LTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL3Rvb2xjaGFpbi9saW51eC91 bmJ1bmRsZS9CVUlMRC5nbgorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2No cm9taXVtL2J1aWxkL3Rvb2xjaGFpbi9saW51eC91bmJ1bmRsZS9CVUlMRC5nbgorQEAgLTM5LDMg KzM5LDIyIEBAIGdjY190b29sY2hhaW4oImhvc3QiKSB7CisgICAgIGN1cnJlbnRfb3MgPSBjdXJy ZW50X29zCisgICB9CisgfQorKworK2djY190b29sY2hhaW4oInY4X3NuYXBzaG90X2Nyb3NzIikg eworKyAgY2MgPSBnZXRlbnYoIkJVSUxEX0NDIikKKysgIGN4eCA9IGdldGVudigiQlVJTERfQ1hY IikKKysgIGFyID0gZ2V0ZW52KCJCVUlMRF9BUiIpCisrICBubSA9IGdldGVudigiQlVJTERfTk0i KQorKyAgbGQgPSBjeHgKKysKKysgIGV4dHJhX2NmbGFncyA9IGdldGVudigiQlVJTERfQ0ZMQUdT IikKKysgIGV4dHJhX2NwcGZsYWdzID0gZ2V0ZW52KCJCVUlMRF9DUFBGTEFHUyIpCisrICBleHRy YV9jeHhmbGFncyA9IGdldGVudigiQlVJTERfQ1hYRkxBR1MiKQorKyAgZXh0cmFfbGRmbGFncyA9 IGdldGVudigiQlVJTERfTERGTEFHUyIpCisrCisrICB0b29sY2hhaW5fYXJncyA9IHsKKysgICAg Y3VycmVudF9jcHUgPSBob3N0X2NwdQorKyAgICBjdXJyZW50X29zID0gaG9zdF9vcworKyAgICB2 OF9jdXJyZW50X2NwdSA9IHRhcmdldF9jcHUKKysgIH0KKyt9CistLS0gcXQ2LXdlYmVuZ2luZS02 LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC9jb25maWcvbGludXgvcGtnX2Nv bmZpZy5nbmkKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9i dWlsZC9jb25maWcvbGludXgvcGtnX2NvbmZpZy5nbmkKK0BAIC05Miw3ICs5Miw3IEBAIHRlbXBs YXRlKCJwa2dfY29uZmlnIikgeworICAgYXNzZXJ0KGRlZmluZWQoaW52b2tlci5wYWNrYWdlcyks CisgICAgICAgICAgIlZhcmlhYmxlIHxwYWNrYWdlc3wgbXVzdCBiZSBkZWZpbmVkIHRvIGJlIGEg bGlzdCBpbiBwa2dfY29uZmlnLiIpCisgICBjb25maWcodGFyZ2V0X25hbWUpIHsKKy0gICAgaWYg KGhvc3RfdG9vbGNoYWluID09IGN1cnJlbnRfdG9vbGNoYWluKSB7CisrICAgIGlmIChjdXJyZW50 X2NwdSAhPSB0YXJnZXRfY3B1KSB7CisgICAgICAgYXJncyA9IGNvbW1vbl9wa2dfY29uZmlnX2Fy Z3MgKyBob3N0X3BrZ19jb25maWdfYXJncyArIGludm9rZXIucGFja2FnZXMKKyAgICAgfSBlbHNl IHsKKyAgICAgICBhcmdzID0gY29tbW9uX3BrZ19jb25maWdfYXJncyArIHBrZ19jb25maWdfYXJn cyArIGludm9rZXIucGFja2FnZXMKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9w YXRjaGVzLzAxMDgtY2hyb21pdW0tY3Vyc2VkXlVzY29wZWRfZmlsZS5wYXRjaCBiL3NyY3BrZ3Mv cXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMDgtY2hyb21pdW0tY3Vyc2VkXlVzY29wZWRfZmlsZS5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmRkMzFkYTk3OTBh ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMDgt Y2hyb21pdW0tY3Vyc2VkXlVzY29wZWRfZmlsZS5wYXRjaApAQCAtMCwwICsxLDE4IEBACistLS0g cXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2ZpbGVz L3Njb3BlZF9maWxlX2xpbnV4LmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFy dHkvY2hyb21pdW0vYmFzZS9maWxlcy9zY29wZWRfZmlsZV9saW51eC5jYworQEAgLTc3LDE1ICs3 NywzIEBAIGJvb2wgSXNGRE93bmVkKGludCBmZCkgeworIH0KKyAKKyB9ICAvLyBuYW1lc3BhY2Ug YmFzZQorLQorLWV4dGVybiAiQyIgeworLQorLWludCBfX2Nsb3NlKGludCk7CistCistX19hdHRy aWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpLCBub2lubGluZSkpIGludCBjbG9zZShpbnQg ZmQpIHsKKy0gIGlmIChiYXNlOjpJc0ZET3duZWQoZmQpICYmIGdfaXNfb3duZXJzaGlwX2VuZm9y Y2VkKQorLSAgICBDcmFzaE9uRmRPd25lcnNoaXBWaW9sYXRpb24oKTsKKy0gIHJldHVybiBfX2Ns b3NlKGZkKTsKKy19CistCistfSAgLy8gZXh0ZXJuICJDIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9x dDYtd2ViZW5naW5lL3BhdGNoZXMvMDEwOS1jaHJvbWl1bS1hYXJjaDY0LW11c2wtbWVtb3J5LXRh Z2dpbmcucGF0Y2ggYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTA5LWNocm9taXVt LWFhcmNoNjQtbXVzbC1tZW1vcnktdGFnZ2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjBmZjJhMmE1MWFhYQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMDktY2hyb21pdW0tYWFyY2g2NC1tdXNsLW1lbW9y eS10YWdnaW5nLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4y Lm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxv Y2F0b3IvdGFnZ2luZy5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2No cm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvdGFnZ2luZy5jYworQEAg LTI4LDEzICsyOCwyNSBAQAorICNlbmRpZgorICNlbmRpZgorIAorLSNpZm5kZWYgSEFTX1BSX01U RV9NQUNST1MKKysjaWZuZGVmIFBSX01URV9UQ0ZfU0hJRlQKKyAjZGVmaW5lIFBSX01URV9UQ0Zf U0hJRlQgMQorKyNlbmRpZgorKyNpZm5kZWYgUFJfTVRFX1RDRl9OT05FCisgI2RlZmluZSBQUl9N VEVfVENGX05PTkUgKDBVTCA8PCBQUl9NVEVfVENGX1NISUZUKQorKyNlbmRpZgorKyNpZm5kZWYg UFJfTVRFX1RDRl9TWU5DCisgI2RlZmluZSBQUl9NVEVfVENGX1NZTkMgKDFVTCA8PCBQUl9NVEVf VENGX1NISUZUKQorKyNlbmRpZgorKyNpZm5kZWYgUFJfTVRFX1RDRl9BU1lOQworICNkZWZpbmUg UFJfTVRFX1RDRl9BU1lOQyAoMlVMIDw8IFBSX01URV9UQ0ZfU0hJRlQpCisrI2VuZGlmCisrI2lm bmRlZiBQUl9NVEVfVENGX01BU0sKKyAjZGVmaW5lIFBSX01URV9UQ0ZfTUFTSyAoM1VMIDw8IFBS X01URV9UQ0ZfU0hJRlQpCisrI2VuZGlmCisrI2lmbmRlZiBQUl9NVEVfVEFHX1NISUZUCisgI2Rl ZmluZSBQUl9NVEVfVEFHX1NISUZUIDMKKysjZW5kaWYKKysjaWZuZGVmIFBSX01URV9UQUdfTUFT SworICNkZWZpbmUgUFJfTVRFX1RBR19NQVNLICgweGZmZmZVTCA8PCBQUl9NVEVfVEFHX1NISUZU KQorICNlbmRpZgorICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3Bh dGNoZXMvMDExMC1jaHJvbWl1bS1maXgtbWlzc2luZy1URU1QX0ZBSUxVUkVfUkVUUlktbWFjcm8u cGF0Y2ggYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTEwLWNocm9taXVtLWZpeC1t aXNzaW5nLVRFTVBfRkFJTFVSRV9SRVRSWS1tYWNyby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjU1NThjNTRjZjgwMgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMTAtY2hyb21pdW0tZml4LW1pc3NpbmctVEVN UF9GQUlMVVJFX1JFVFJZLW1hY3JvLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK1RoaXMgbWFjcm8g aXMgZGVmaW5lZCBpbiBnbGliYywgYnV0IG5vdCBtdXNsLgorCistLS0gcXQ2LXdlYmVuZ2luZS02 LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N1aWQvcHJvY2Vz c191dGlsLmgKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9z YW5kYm94L2xpbnV4L3N1aWQvcHJvY2Vzc191dGlsLmgKK0BAIC0xMiw2ICsxMiwxNiBAQAorICNp bmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCisrLy8gU29tZSBh ZGRpdGlvbmFsIGZ1bmN0aW9ucworKyNpZiAhZGVmaW5lZChURU1QX0ZBSUxVUkVfUkVUUlkpCisr IyBkZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZKGV4cHJlc3Npb24pIFwKKysJKF9fZXh0ZW5zaW9u X18JCQlcCisrCSAoeyBsb25nIGludCBfX3Jlc3VsdDsJCVwKKysJICBkbyBfX3Jlc3VsdCA9IChs b25nIGludCkgKGV4cHJlc3Npb24pOyBcCisrCSAgd2hpbGUgKF9fcmVzdWx0ID09IC0xTCAmJiBl cnJubyA9PSBFSU5UUik7IFwKKysJICBfX3Jlc3VsdDsgfSkpCisrI2VuZGlmCisrCisgLy8gVGhp cyBhZGp1c3RzIC9wcm9jL3Byb2Nlc3Mvb29tX3Njb3JlX2FkaiBzbyB0aGUgTGludXggT09NIGtp bGxlcgorIC8vIHdpbGwgcHJlZmVyIGNlcnRhaW4gcHJvY2VzcyB0eXBlcyBvdmVyIG90aGVycy4g VGhlIHJhbmdlIGZvciB0aGUKKyAvLyBhZGp1c3RtZW50IGlzIFstMTAwMCwgMTAwMF0sIHdpdGgg WzAsIDEwMDBdIGJlaW5nIHVzZXIgYWNjZXNzaWJsZS4KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2 LXdlYmVuZ2luZS9wYXRjaGVzLzAxMTEtY2hyb21pdW0tY3N0ZGludC5wYXRjaCBiL3NyY3BrZ3Mv cXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMTEtY2hyb21pdW0tY3N0ZGludC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY1Nzg3NjIxYjU3OQotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMTEtY2hyb21pdW0tY3N0 ZGludC5wYXRjaApAQCAtMCwwICsxLDEwIEBACistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmln L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvdGhpcmRfcGFydHkvcXVpY2hlL3NyYy9xdWljaGUv aHR0cDIvYWRhcHRlci93aW5kb3dfbWFuYWdlci5oCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9z cmMvM3JkcGFydHkvY2hyb21pdW0vbmV0L3RoaXJkX3BhcnR5L3F1aWNoZS9zcmMvcXVpY2hlL2h0 dHAyL2FkYXB0ZXIvd2luZG93X21hbmFnZXIuaAorQEAgLTMsNiArMyw3IEBACisgCisgI2luY2x1 ZGUgPHN0ZGRlZi5oPgorIAorKyNpbmNsdWRlIDxjc3RkaW50PgorICNpbmNsdWRlIDxmdW5jdGlv bmFsPgorIAorICNpbmNsdWRlICJxdWljaGUvY29tbW9uL3BsYXRmb3JtL2FwaS9xdWljaGVfZXhw b3J0LmgiCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTEyLWNo cm9taXVtLXVuaXN0ZC5oIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDExMi1jaHJv bWl1bS11bmlzdGQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJi MjQyYTgwOGFjZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRj aGVzLzAxMTItY2hyb21pdW0tdW5pc3RkLmgKQEAgLTAsMCArMSwxMCBAQAorLS0tIGEvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VydmljZXMvY3JlZGVudGlhbHMuaAorKysr IGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VydmljZXMvY3JlZGVudGlh bHMuaAorQEAgLTEzLDYgKzEzLDcgQEAKKyAKKyAjaW5jbHVkZSA8c3RyaW5nPgorICNpbmNsdWRl IDx2ZWN0b3I+CisrI2luY2x1ZGUgPHVuaXN0ZC5oPgorIAorICNpbmNsdWRlICJzYW5kYm94L2xp bnV4L3N5c3RlbV9oZWFkZXJzL2NhcGFiaWxpdHkuaCIKKyAjaW5jbHVkZSAic2FuZGJveC9zYW5k Ym94X2V4cG9ydC5oIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMv MDExMy1jaHJvbWl1bS1wdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaCBiL3NyY3BrZ3MvcXQ2LXdlYmVu Z2luZS9wYXRjaGVzLzAxMTMtY2hyb21pdW0tcHRocmVhZC1zdGFja3NpemUucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zODRmZDBhZjE4NmQKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTEzLWNocm9taXVtLXB0 aHJlYWQtc3RhY2tzaXplLnBhdGNoCkBAIC0wLDAgKzEsMTYgQEAKKy0tLSBxdDYtd2ViZW5naW5l LTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvdGhyZWFkaW5nL3BsYXRmb3Jt X3RocmVhZF9saW51eC5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2No cm9taXVtL2Jhc2UvdGhyZWFkaW5nL3BsYXRmb3JtX3RocmVhZF9saW51eC5jYworQEAgLTQzNyw4 ICs0MzcsMTMgQEAgdm9pZCBUZXJtaW5hdGVPblRocmVhZCgpIHt9CisgCisgc2l6ZV90IEdldERl ZmF1bHRUaHJlYWRTdGFja1NpemUoY29uc3QgcHRocmVhZF9hdHRyX3QmIGF0dHJpYnV0ZXMpIHsK KyAjaWYgIWRlZmluZWQoVEhSRUFEX1NBTklUSVpFUikKKysjaWYgZGVmaW5lZChfX0dMSUJDX18p CisgICByZXR1cm4gMDsKKyAjZWxzZQorKyAgLy8gbXVzbCBsaWJjcyBkZWZhdWx0IGlzIHRvbyBz bWFsbCwgdXNlIDhtYiBsaWtlIGdsaWJjCisrICByZXR1cm4gKDEgPDwgMjMpOworKyNlbmRpZgor KyNlbHNlCisgICAvLyBUaHJlYWRTYW5pdGl6ZXIgYmxvYXRzIHRoZSBzdGFjayBoZWF2aWx5LiBF dmlkZW5jZSBoYXMgYmVlbiB0aGF0IHRoZQorICAgLy8gZGVmYXVsdCBzdGFjayBzaXplIGlzbid0 IGVub3VnaCBmb3Igc29tZSBicm93c2VyIHRlc3RzLgorICAgcmV0dXJuIDIgKiAoMSA8PCAyMyk7 ICAvLyAyIHRpbWVzIDgxOTJLICh0aGUgZGVmYXVsdCBzdGFjayBzaXplIG9uIExpbnV4KS4KZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMTQtZG8tbm90LW5hcnJv dy1pbnQucGF0Y2ggYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTE0LWRvLW5vdC1u YXJyb3ctaW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u MmNkNmEwNzM4MmFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3Bh dGNoZXMvMDExNC1kby1ub3QtbmFycm93LWludC5wYXRjaApAQCAtMCwwICsxLDUzIEBACistLS0g cXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2ZpbGVz L2ZpbGVfdXRpbF9saW51eC5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL2Jhc2UvZmlsZXMvZmlsZV91dGlsX2xpbnV4LmNjCitAQCAtMjMsMTQgKzIzLDE0 IEBAIGJvb2wgR2V0RmlsZVN5c3RlbVR5cGUoY29uc3QgRmlsZVBhdGgmIHAKKyAKKyAgIC8vIE5v dCBhbGwgcG9zc2libGUgfHN0YXRmc19idWYuZl90eXBlfCB2YWx1ZXMgYXJlIGluIGxpbnV4L21h Z2ljLmguCisgICAvLyBNaXNzaW5nIHZhbHVlcyBhcmUgY29waWVkIGZyb20gdGhlIHN0YXRmcyBt YW4gcGFnZS4KKy0gIHN3aXRjaCAoc3RhdGZzX2J1Zi5mX3R5cGUpIHsKKysgIHN3aXRjaCAoc3Rh dGljX2Nhc3Q8dWludG1heF90PihzdGF0ZnNfYnVmLmZfdHlwZSkpIHsKKyAgICAgY2FzZSAwOgor ICAgICAgICp0eXBlID0gRklMRV9TWVNURU1fMDsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSBF WFQyX1NVUEVSX01BR0lDOiAgLy8gQWxzbyBleHQzIGFuZCBleHQ0CisgICAgIGNhc2UgTVNET1Nf U1VQRVJfTUFHSUM6CisgICAgIGNhc2UgUkVJU0VSRlNfU1VQRVJfTUFHSUM6CistICAgIGNhc2Ug c3RhdGljX2Nhc3Q8aW50PihCVFJGU19TVVBFUl9NQUdJQyk6CisrICAgIGNhc2UgQlRSRlNfU1VQ RVJfTUFHSUM6CisgICAgIGNhc2UgMHg1MzQ2NTQ0RTogIC8vIE5URlMKKyAgICAgY2FzZSAweDU4 NDY1MzQyOiAgLy8gWEZTCisgICAgIGNhc2UgMHgzMTUzNDY0QTogIC8vIEpGUworQEAgLTQwLDE0 ICs0MCwxNCBAQCBib29sIEdldEZpbGVTeXN0ZW1UeXBlKGNvbnN0IEZpbGVQYXRoJiBwCisgICAg ICAgKnR5cGUgPSBGSUxFX1NZU1RFTV9ORlM7CisgICAgICAgYnJlYWs7CisgICAgIGNhc2UgU01C X1NVUEVSX01BR0lDOgorLSAgICBjYXNlIHN0YXRpY19jYXN0PGludD4oMHhGRjUzNEQ0Mik6ICAv LyBDSUZTCisrICAgIGNhc2UgMHhGRjUzNEQ0MjogIC8vIENJRlMKKyAgICAgICAqdHlwZSA9IEZJ TEVfU1lTVEVNX1NNQjsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSBDT0RBX1NVUEVSX01BR0lD OgorICAgICAgICp0eXBlID0gRklMRV9TWVNURU1fQ09EQTsKKyAgICAgICBicmVhazsKKy0gICAg Y2FzZSBzdGF0aWNfY2FzdDxpbnQ+KEhVR0VUTEJGU19NQUdJQyk6CistICAgIGNhc2Ugc3RhdGlj X2Nhc3Q8aW50PihSQU1GU19NQUdJQyk6CisrICAgIGNhc2UgSFVHRVRMQkZTX01BR0lDOgorKyAg ICBjYXNlIFJBTUZTX01BR0lDOgorICAgICBjYXNlIFRNUEZTX01BR0lDOgorICAgICAgICp0eXBl ID0gRklMRV9TWVNURU1fTUVNT1JZOworICAgICAgIGJyZWFrOworLS0tIHF0Ni13ZWJlbmdpbmUt Ni40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9zeXN0ZW0vc3lzX2luZm9fcG9z aXguY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNl L3N5c3RlbS9zeXNfaW5mb19wb3NpeC5jYworQEAgLTEwMCwxMCArMTAwLDEwIEBAIGJvb2wgSXNT dGF0c1plcm9JZlVubGltaXRlZChjb25zdCBiYXNlOjoKKyAgIGlmIChIQU5ETEVfRUlOVFIoc3Rh dGZzKHBhdGgudmFsdWUoKS5jX3N0cigpLCAmc3RhdHMpKSAhPSAwKQorICAgICByZXR1cm4gZmFs c2U7CisgCistICBzd2l0Y2ggKHN0YXRzLmZfdHlwZSkgeworKyAgc3dpdGNoIChzdGF0aWNfY2Fz dDx1aW50bWF4X3Q+KHN0YXRzLmZfdHlwZSkpIHsKKyAgICAgY2FzZSBUTVBGU19NQUdJQzoKKy0g ICAgY2FzZSBzdGF0aWNfY2FzdDxpbnQ+KEhVR0VUTEJGU19NQUdJQyk6CistICAgIGNhc2Ugc3Rh dGljX2Nhc3Q8aW50PihSQU1GU19NQUdJQyk6CisrICAgIGNhc2UgSFVHRVRMQkZTX01BR0lDOgor KyAgICBjYXNlIFJBTUZTX01BR0lDOgorICAgICAgIHJldHVybiB0cnVlOworICAgfQorICAgcmV0 dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDEx NS1jaHJvbWl1bS1uby1jYW5vbmljYWxpemUtZmlsZS1uYW1lLnBhdGNoIGIvc3JjcGtncy9xdDYt d2ViZW5naW5lL3BhdGNoZXMvMDExNS1jaHJvbWl1bS1uby1jYW5vbmljYWxpemUtZmlsZS1uYW1l LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTU2Nzg0YjAx M2RlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDEx NS1jaHJvbWl1bS1uby1jYW5vbmljYWxpemUtZmlsZS1uYW1lLnBhdGNoCkBAIC0wLDAgKzEsMTIg QEAKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L25hc20vY29uZmlnL2NvbmZpZy1saW51eC5oCisrKysgcXQ2LXdlYmVuZ2luZS02 LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbmFzbS9jb25maWcvY29uZmln LWxpbnV4LmgKK0BAIC0xMzksNyArMTM5LDkgQEAKKyAjZGVmaW5lIEhBVkVfQUNDRVNTIDEKKyAK KyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNhbm9uaWNhbGl6ZV9maWxlX25hbWUn IGZ1bmN0aW9uLiAqLworKyNpZmRlZiBfX0dMSUJDX18KKyAjZGVmaW5lIEhBVkVfQ0FOT05JQ0FM SVpFX0ZJTEVfTkFNRSAxCisrI2VuZGlmCisgCisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg dGhlIGBjcHVfdG9fbGUxNicgaW50cmluc2ljIGZ1bmN0aW9uLiAqLworIC8qICN1bmRlZiBIQVZF X0NQVV9UT19MRTE2ICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hl cy8wMTE2LWNocm9taXVtLW11c2wtZ2V0LXRocmVhZC1uYW1lLnBhdGNoIGIvc3JjcGtncy9xdDYt d2ViZW5naW5lL3BhdGNoZXMvMDExNi1jaHJvbWl1bS1tdXNsLWdldC10aHJlYWQtbmFtZS5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ0ODUzODVjYmI2Mgot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMTYtY2hy b21pdW0tbXVzbC1nZXQtdGhyZWFkLW5hbWUucGF0Y2gKQEAgLTAsMCArMSwyMiBAQAorLS0tIHF0 Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv cGVyZmV0dG8vaW5jbHVkZS9wZXJmZXR0by9leHQvYmFzZS90aHJlYWRfdXRpbHMuaAorKysrIHF0 Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BlcmZl dHRvL2luY2x1ZGUvcGVyZmV0dG8vZXh0L2Jhc2UvdGhyZWFkX3V0aWxzLmgKK0BAIC0zMCw3ICsz MCw4IEBACisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAjZW5kaWYKKyAKKy0jaWYgUEVSRkVUVE9f QlVJTERGTEFHKFBFUkZFVFRPX09TX0FORFJPSUQpCisrI2lmIFBFUkZFVFRPX0JVSUxERkxBRyhQ RVJGRVRUT19PU19BTkRST0lEKSB8fCBcCisrICAgIChQRVJGRVRUT19CVUlMREZMQUcoUEVSRkVU VE9fT1NfTElOVVgpICYmICFkZWZpbmVkKF9fR0xJQkNfXykpCisgI2luY2x1ZGUgPHN5cy9wcmN0 bC5oPgorICNlbmRpZgorIAorQEAgLTU4LDcgKzU5LDggQEAgaW5saW5lIGJvb2wgTWF5YmVTZXRU aHJlYWROYW1lKGNvbnN0IHN0ZAorIAorIGlubGluZSBib29sIEdldFRocmVhZE5hbWUoc3RkOjpz dHJpbmcmIG91dF9yZXN1bHQpIHsKKyAgIGNoYXIgYnVmWzE2XSA9IHt9OworLSNpZiBQRVJGRVRU T19CVUlMREZMQUcoUEVSRkVUVE9fT1NfQU5EUk9JRCkKKysjaWYgUEVSRkVUVE9fQlVJTERGTEFH KFBFUkZFVFRPX09TX0FORFJPSUQpIHx8IFwKKysgICAgKFBFUkZFVFRPX0JVSUxERkxBRyhQRVJG RVRUT19PU19MSU5VWCkgJiYgIWRlZmluZWQoX19HTElCQ19fKSkKKyAgIGlmIChwcmN0bChQUl9H RVRfTkFNRSwgYnVmKSAhPSAwKQorICAgICByZXR1cm4gZmFsc2U7CisgI2Vsc2UKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMTctY2hyb21pdW0tbXVzbC1yZXNv bHZlci5wYXRjaCBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMTctY2hyb21pdW0t bXVzbC1yZXNvbHZlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjE3NjUyNGFkYzA4MwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2lu ZS9wYXRjaGVzLzAxMTctY2hyb21pdW0tbXVzbC1yZXNvbHZlci5wYXRjaApAQCAtMCwwICsxLDY0 IEBACistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9u ZXQvZG5zL3B1YmxpYy9zY29wZWRfcmVzX3N0YXRlLmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQu Mi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbmV0L2Rucy9wdWJsaWMvc2NvcGVkX3Jlc19zdGF0ZS5j YworQEAgLTEzLDcgKzEzLDcgQEAKKyBuYW1lc3BhY2UgbmV0IHsKKyAKKyBTY29wZWRSZXNTdGF0 ZTo6U2NvcGVkUmVzU3RhdGUoKSB7CistI2lmIEJVSUxERkxBRyhJU19PUEVOQlNEKSB8fCBCVUlM REZMQUcoSVNfRlVDSFNJQSkKKysjaWYgQlVJTERGTEFHKElTX09QRU5CU0QpIHx8IEJVSUxERkxB RyhJU19GVUNIU0lBKSB8fCAoQlVJTERGTEFHKElTX0xJTlVYKSAmJiAhZGVmaW5lZChfX0dMSUJD X18pKQorICAgLy8gTm90ZTogcmVzX25pbml0IGluIGdsaWJjIGFsd2F5cyByZXR1cm5zIDAgYW5k IHNldHMgUkVTX0lOSVQuCisgICAvLyByZXNfaW5pdCBiZWhhdmVzIHRoZSBzYW1lIHdheS4KKyAg IG1lbXNldCgmX3JlcywgMCwgc2l6ZW9mKF9yZXMpKTsKK0BAIC0yNSw3ICsyNSw3IEBAIFNjb3Bl ZFJlc1N0YXRlOjpTY29wZWRSZXNTdGF0ZSgpIHsKKyB9CisgCisgU2NvcGVkUmVzU3RhdGU6On5T Y29wZWRSZXNTdGF0ZSgpIHsKKy0jaWYgIUJVSUxERkxBRyhJU19PUEVOQlNEKSAmJiAhQlVJTERG TEFHKElTX0ZVQ0hTSUEpCisrI2lmICFCVUlMREZMQUcoSVNfT1BFTkJTRCkgJiYgIUJVSUxERkxB RyhJU19GVUNIU0lBKSAmJiAhKEJVSUxERkxBRyhJU19MSU5VWCkgJiYgIWRlZmluZWQoX19HTElC Q19fKSkKKyAKKyAgIC8vIFByZWZlciByZXNfbmRlc3Ryb3kgd2hlcmUgYXZhaWxhYmxlLgorICNp ZiBCVUlMREZMQUcoSVNfQVBQTEUpIHx8IEJVSUxERkxBRyhJU19GUkVFQlNEKQorQEAgLTM0LDcg KzM0LDcgQEAgU2NvcGVkUmVzU3RhdGU6On5TY29wZWRSZXNTdGF0ZSgpIHsKKyAgIHJlc19uY2xv c2UoJnJlc18pOworICNlbmRpZiAgLy8gQlVJTERGTEFHKElTX0FQUExFKSB8fCBCVUlMREZMQUco SVNfRlJFRUJTRCkKKyAKKy0jZW5kaWYgIC8vICFCVUlMREZMQUcoSVNfT1BFTkJTRCkgJiYgIUJV SUxERkxBRyhJU19GVUNIU0lBKQorKyNlbmRpZiAgLy8gIUJVSUxERkxBRyhJU19PUEVOQlNEKSAm JiAhQlVJTERGTEFHKElTX0ZVQ0hTSUEpICYmICEoQlVJTERGTEFHKElTX0xJTlVYKSAmJiAhZGVm aW5lZChfX0dMSUJDX18pKQorIH0KKyAKKyBib29sIFNjb3BlZFJlc1N0YXRlOjpJc1ZhbGlkKCkg Y29uc3QgeworLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21p dW0vbmV0L2Rucy9ob3N0X3Jlc29sdmVyX21hbmFnZXIuY2MKKysrKyBxdDYtd2ViZW5naW5lLTYu NC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfbWFuYWdlci5j YworQEAgLTMxNTgsNyArMzE1OCw3IEBAIEhvc3RSZXNvbHZlck1hbmFnZXI6Okhvc3RSZXNvbHZl ck1hbmFnZXIKKyAgIGlmIChzeXN0ZW1fZG5zX2NvbmZpZ19ub3RpZmllcl8pCisgICAgIHN5c3Rl bV9kbnNfY29uZmlnX25vdGlmaWVyXy0+QWRkT2JzZXJ2ZXIodGhpcyk7CisgI2lmIEJVSUxERkxB RyhJU19QT1NJWCkgJiYgIUJVSUxERkxBRyhJU19BUFBMRSkgJiYgIUJVSUxERkxBRyhJU19PUEVO QlNEKSAmJiBcCistICAgICFCVUlMREZMQUcoSVNfQU5EUk9JRCkKKysgICAgIUJVSUxERkxBRyhJ U19BTkRST0lEKSAmJiAhKEJVSUxERkxBRyhJU19MSU5VWCkgJiYgIWRlZmluZWQoX19HTElCQ19f KSkKKyAgIEVuc3VyZURuc1JlbG9hZGVySW5pdCgpOworICNlbmRpZgorIAorLS0tIHF0Ni13ZWJl bmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbmV0L2Rucy9kbnNfcmVsb2Fk ZXIuY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQv ZG5zL2Ruc19yZWxvYWRlci5jYworQEAgLTcsNyArNyw4IEBACisgI2luY2x1ZGUgImJ1aWxkL2J1 aWxkX2NvbmZpZy5oIgorIAorICNpZiBCVUlMREZMQUcoSVNfUE9TSVgpICYmICFCVUlMREZMQUco SVNfQVBQTEUpICYmICFCVUlMREZMQUcoSVNfT1BFTkJTRCkgJiYgXAorLSAgICAhQlVJTERGTEFH KElTX0FORFJPSUQpICYmICFCVUlMREZMQUcoSVNfRlVDSFNJQSkKKysgICAgIUJVSUxERkxBRyhJ U19BTkRST0lEKSAmJiAhQlVJTERGTEFHKElTX0ZVQ0hTSUEpICYmIFwKKysgICAgIShCVUlMREZM QUcoSVNfTElOVVgpICYmICFkZWZpbmVkKF9fR0xJQkNfXykpCisgCisgI2luY2x1ZGUgPHJlc29s di5oPgorIAorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21p dW0vbmV0L2Rucy9ob3N0X3Jlc29sdmVyX3Byb2MuY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4y L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfcHJvYy5jYworQEAg LTE5Miw3ICsxOTIsOCBAQCBpbnQgU3lzdGVtSG9zdFJlc29sdmVyQ2FsbChjb25zdCBzdGQ6OnN0 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6 QmxvY2tpbmdUeXBlOjpXSUxMX0JMT0NLKTsKKyAKKyAjaWYgQlVJTERGTEFHKElTX1BPU0lYKSAm JiBcCistICAgICEoQlVJTERGTEFHKElTX0FQUExFKSB8fCBCVUlMREZMQUcoSVNfT1BFTkJTRCkg fHwgQlVJTERGTEFHKElTX0FORFJPSUQpKQorKyAgICAhKEJVSUxERkxBRyhJU19BUFBMRSkgfHwg QlVJTERGTEFHKElTX09QRU5CU0QpIHx8IEJVSUxERkxBRyhJU19BTkRST0lEKSB8fCBcCisrICAg IChCVUlMREZMQUcoSVNfTElOVVgpICYmICFkZWZpbmVkKF9fR0xJQkNfXykpKQorICAgRG5zUmVs b2FkZXJNYXliZVJlbG9hZCgpOworICNlbmRpZgorICAgYXV0byBbYWksIGVyciwgb3NfZXJyb3Jd ID0gQWRkcmVzc0luZm86OkdldChob3N0LCBoaW50cywgbnVsbHB0ciwgbmV0d29yayk7CmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTE5LWNocm9taXVtLW11c2wt c3RhY2stdXRpbHMucGF0Y2ggYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTE5LWNo cm9taXVtLW11c2wtc3RhY2stdXRpbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi41NDhhMWRlYzc2YjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0 Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTE5LWNocm9taXVtLW11c2wtc3RhY2stdXRpbHMucGF0Y2gK QEAgLTAsMCArMSwyMCBAQAorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL3N0YWNr X3V0aWwuY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvc3RhY2tfdXRpbC5jYworQEAg LTI5LDcgKzI5LDcgQEAgc2l6ZV90IEdldFVuZGVyZXN0aW1hdGVkU3RhY2tTaXplKCkgeworIC8v IEZJWE1FOiBPbiBNYWMgT1NYIGFuZCBMaW51eCwgdGhpcyBtZXRob2QgY2Fubm90IGVzdGltYXRl IHN0YWNrIHNpemUKKyAvLyBjb3JyZWN0bHkgZm9yIHRoZSBtYWluIHRocmVhZC4KKyAKKy0jZWxp ZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwgQlVJTERGTEFHKElTX0FORFJPSUQpIHx8IEJVSUxERkxB RyhJU19GUkVFQlNEKSB8fCBcCisrI2VsaWYgQlVJTERGTEFHKElTX0xJTlVYKSB8fCBCVUlMREZM QUcoSVNfQU5EUk9JRCkgfHwgQlVJTERGTEFHKElTX0ZSRUVCU0QpIHx8IFwKKyAgICAgQlVJTERG TEFHKElTX0ZVQ0hTSUEpCisgICAvLyBwdGhyZWFkX2dldGF0dHJfbnAoKSBjYW4gZmFpbCBpZiB0 aGUgdGhyZWFkIGlzIG5vdCBpbnZva2VkIGJ5CisgICAvLyBwdGhyZWFkX2NyZWF0ZSgpIChlLmcu LCB0aGUgbWFpbiB0aHJlYWQgb2YgYmxpbmtfdW5pdHRlc3RzKS4KK0BAIC05Nyw3ICs5Nyw3IEBA IHNpemVfdCBHZXRVbmRlcmVzdGltYXRlZFN0YWNrU2l6ZSgpIHsKKyB9CisgCisgdm9pZCogR2V0 U3RhY2tTdGFydCgpIHsKKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IEJVSUxERkxBRyhJU19B TkRST0lEKSB8fCBCVUlMREZMQUcoSVNfRlJFRUJTRCkgfHwgXAorKyNpZiBCVUlMREZMQUcoSVNf TElOVVgpIHx8IEJVSUxERkxBRyhJU19BTkRST0lEKSB8fCBCVUlMREZMQUcoSVNfRlJFRUJTRCkg fHwgXAorICAgICBCVUlMREZMQUcoSVNfRlVDSFNJQSkKKyAgIHB0aHJlYWRfYXR0cl90IGF0dHI7 CisgICBpbnQgZXJyb3I7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hl cy8wMTIwLWNocm9taXVtLWxpYmMtbWFsbG9jLnBhdGNoIGIvc3JjcGtncy9xdDYtd2ViZW5naW5l L3BhdGNoZXMvMDEyMC1jaHJvbWl1bS1saWJjLW1hbGxvYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZhMzI4MzA3NjBjZAotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMjAtY2hyb21pdW0tbGliYy1tYWxsb2Mu cGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMv M3JkcGFydHkvY2hyb21pdW0vYmFzZS9wcm9jZXNzL21lbW9yeV9saW51eC5jYworKysrIHF0Ni13 ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvcHJvY2Vzcy9tZW1vcnlf bGludXguY2MKK0BAIC0xOCw2ICsxOCwxMyBAQAorICNpbmNsdWRlICJiYXNlL3RocmVhZGluZy90 aHJlYWRfcmVzdHJpY3Rpb25zLmgiCisgI2luY2x1ZGUgImJ1aWxkL2J1aWxkX2NvbmZpZy5oIgor IAorKyNpZiBkZWZpbmVkKExJQkNfR0xJQkMpCisrZXh0ZXJuICJDIiB7CisrZXh0ZXJuIHZvaWQg Kl9fbGliY19tYWxsb2Moc2l6ZV90IHNpemUpOworK2V4dGVybiB2b2lkICpfX2xpYmNfZnJlZSh2 b2lkICpwdHIpOworK30KKysjZW5kaWYKKysKKyBuYW1lc3BhY2UgYmFzZSB7CisgCisgbmFtZXNw YWNlIHsKK0BAIC0xMTIsNyArMTE5LDcgQEAgYm9vbCBVbmNoZWNrZWRNYWxsb2Moc2l6ZV90IHNp emUsIHZvaWQqKgorICAgICBkZWZpbmVkKFRPT0xLSVRfUVQpIHx8ICFkZWZpbmVkKExJQkNfR0xJ QkMpCisgICAqcmVzdWx0ID0gbWFsbG9jKHNpemUpOworICNlbGlmIGRlZmluZWQoTElCQ19HTElC QykKKy0gICpyZXN1bHQgPSBfX2xpYmNfbWFsbG9jKHNpemUpOworKyAgKnJlc3VsdCA9IDo6X19s aWJjX21hbGxvYyhzaXplKTsKKyAjZW5kaWYKKyAgIHJldHVybiAqcmVzdWx0ICE9IG51bGxwdHI7 CisgfQorQEAgLTEyMyw3ICsxMzAsNyBAQCB2b2lkIFVuY2hlY2tlZEZyZWUodm9pZCogcHRyKSB7 CisgI2VsaWYgZGVmaW5lZChNRU1PUllfVE9PTF9SRVBMQUNFU19BTExPQ0FUT1IpIHx8ICFkZWZp bmVkKExJQkNfR0xJQkMpIHx8IGRlZmluZWQoVE9PTEtJVF9RVCkKKyAgIGZyZWUocHRyKTsKKyAj ZWxpZiBkZWZpbmVkKExJQkNfR0xJQkMpCistICBfX2xpYmNfZnJlZShwdHIpOworKyAgOjpfX2xp YmNfZnJlZShwdHIpOworICNlbmRpZgorIH0KKyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdl YmVuZ2luZS9wYXRjaGVzLzAxMjEtY2hyb21pdW0tbXVzbC1zdGF0LnBhdGNoIGIvc3JjcGtncy9x dDYtd2ViZW5naW5lL3BhdGNoZXMvMDEyMS1jaHJvbWl1bS1tdXNsLXN0YXQucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YzhjNGI4NjNiNjQKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTIxLWNocm9taXVtLW11 c2wtc3RhdC5wYXRjaApAQCAtMCwwICsxLDEyIEBACistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5v cmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2ZpbGVzL2ZpbGUuaAorKysrIHF0Ni13ZWJl bmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvZmlsZXMvZmlsZS5oCitAQCAt MTksNyArMTksOCBAQAorICNpbmNsdWRlICJidWlsZC9idWlsZF9jb25maWcuaCIKKyAKKyAjaWYg QlVJTERGTEFHKElTX0JTRCkgfHwgQlVJTERGTEFHKElTX0FQUExFKSB8fCBCVUlMREZMQUcoSVNf TkFDTCkgfHwgXAorLSAgICBCVUlMREZMQUcoSVNfRlVDSFNJQSkgfHwgKEJVSUxERkxBRyhJU19B TkRST0lEKSAmJiBfX0FORFJPSURfQVBJX18gPCAyMSkKKysgICAgQlVJTERGTEFHKElTX0ZVQ0hT SUEpIHx8IChCVUlMREZMQUcoSVNfQU5EUk9JRCkgJiYgX19BTkRST0lEX0FQSV9fIDwgMjEpIHx8 IFwKKysgICAgKEJVSUxERkxBRyhJU19MSU5VWCkgJiYgIWRlZmluZWQoX19HTElCQ19fKSkKKyBz dHJ1Y3Qgc3RhdDsKKyBuYW1lc3BhY2UgYmFzZSB7CisgdHlwZWRlZiBzdHJ1Y3Qgc3RhdCBzdGF0 X3dyYXBwZXJfdDsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAx MjItY2hyb21pdW0tY29uZGl0aW9uX3Zhci5wYXRjaCBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9w YXRjaGVzLzAxMjItY2hyb21pdW0tY29uZGl0aW9uX3Zhci5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZjNDEzMTJlNTE2YgotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMjItY2hyb21pdW0tY29uZGl0aW9uX3Zh ci5wYXRjaApAQCAtMCwwICsxLDIyIEBACitVc2UgbW9ub3RvbmljIGNsb2NrIGZvciBwdGhyZWFk X2NvbmRfdGltZWR3YWl0IHdpdGggbXVzbCB0b28uCisKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4y Lm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9iYXNlL3BsYXRmb3JtL2NvbmRpdGlv bi12YXJpYWJsZS5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3Y4L3NyYy9iYXNlL3BsYXRmb3JtL2NvbmRpdGlvbi12YXJpYWJsZS5jYworQEAgLTIwLDcg KzIwLDcgQEAgbmFtZXNwYWNlIGJhc2UgeworIAorIENvbmRpdGlvblZhcmlhYmxlOjpDb25kaXRp b25WYXJpYWJsZSgpIHsKKyAjaWYgKFY4X09TX0ZSRUVCU0QgfHwgVjhfT1NfTkVUQlNEIHx8IFY4 X09TX09QRU5CU0QgfHwgXAorLSAgICAgKFY4X09TX0xJTlVYICYmIFY4X0xJQkNfR0xJQkMpKQor KyAgICAgVjhfT1NfTElOVVgpCisgICAvLyBPbiBGcmVlL05ldC9PcGVuQlNEIGFuZCBMaW51eCB3 aXRoIGdsaWJjIHdlIGNhbiBjaGFuZ2UgdGhlIHRpbWUKKyAgIC8vIHNvdXJjZSBmb3IgcHRocmVh ZF9jb25kX3RpbWVkd2FpdCgpIHRvIHVzZSB0aGUgbW9ub3RvbmljIGNsb2NrLgorICAgcHRocmVh ZF9jb25kYXR0cl90IGF0dHI7CitAQCAtOTYsNyArOTYsNyBAQCBib29sIENvbmRpdGlvblZhcmlh YmxlOjpXYWl0Rm9yKE11dGV4KiBtCisgICAgICAgJm5hdGl2ZV9oYW5kbGVfLCAmbXV0ZXgtPm5h dGl2ZV9oYW5kbGUoKSwgJnRzKTsKKyAjZWxzZQorICNpZiAoVjhfT1NfRlJFRUJTRCB8fCBWOF9P U19ORVRCU0QgfHwgVjhfT1NfT1BFTkJTRCB8fCBcCistICAgICAoVjhfT1NfTElOVVggJiYgVjhf TElCQ19HTElCQykpCisrICAgICBWOF9PU19MSU5VWCkKKyAgIC8vIE9uIEZyZWUvTmV0L09wZW5C U0QgYW5kIExpbnV4IHdpdGggZ2xpYmMgd2UgY2FuIGNoYW5nZSB0aGUgdGltZQorICAgLy8gc291 cmNlIGZvciBwdGhyZWFkX2NvbmRfdGltZWR3YWl0KCkgdG8gdXNlIHRoZSBtb25vdG9uaWMgY2xv Y2suCisgICByZXN1bHQgPSBjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnRzKTsKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMjMtY2hyb21pdW0tbXVz bC1uby1leGVjaW5mby5wYXRjaCBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMjMt Y2hyb21pdW0tbXVzbC1uby1leGVjaW5mby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjI1ZmFlN2JkZTExMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mv cXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMjMtY2hyb21pdW0tbXVzbC1uby1leGVjaW5mby5wYXRj aApAQCAtMCwwICsxLDc1IEBACistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9iYXNlL2RlYnVnL3N0YWNrX3RyYWNlX3Bvc2l4LmNjCisrKysgcXQ2LXdl YmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9kZWJ1Zy9zdGFja190cmFj ZV9wb3NpeC5jYworQEAgLTMwLDcgKzMwLDcgQEAKKyAjaWYgIWRlZmluZWQoVVNFX1NZTUJPTEla RSkKKyAjaW5jbHVkZSA8Y3h4YWJpLmg+CisgI2VuZGlmCistI2lmICFkZWZpbmVkKF9fVUNMSUJD X18pICYmICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5l ZChfQUlYKQorICNpbmNsdWRlIDxleGVjaW5mby5oPgorICNlbmRpZgorIAorQEAgLTk3LDcgKzk3 LDcgQEAgdm9pZCBEZW1hbmdsZVN5bWJvbHMoc3RkOjpzdHJpbmcqIHRleHQpCisgICAvLyBOb3Rl OiBjb2RlIGluIHRoaXMgZnVuY3Rpb24gaXMgTk9UIGFzeW5jLXNpZ25hbCBzYWZlIChzdGQ6OnN0 cmluZyB1c2VzCisgICAvLyBtYWxsb2MgaW50ZXJuYWxseSkuCisgCistI2lmICFkZWZpbmVkKF9f VUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAh ZGVmaW5lZChfQUlYKQorICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBzZWFyY2hfZnJvbSA9IDA7 CisgICB3aGlsZSAoc2VhcmNoX2Zyb20gPCB0ZXh0LT5zaXplKCkpIHsKKyAgICAgLy8gTG9vayBm b3IgdGhlIHN0YXJ0IG9mIGEgbWFuZ2xlZCBzeW1ib2wsIGZyb20gc2VhcmNoX2Zyb20uCitAQCAt MTQ0LDcgKzE0NCw3IEBAIGNsYXNzIEJhY2t0cmFjZU91dHB1dEhhbmRsZXIgeworICAgdmlydHVh bCB+QmFja3RyYWNlT3V0cHV0SGFuZGxlcigpID0gZGVmYXVsdDsKKyB9OworIAorLSNpZiAhZGVm aW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNf XykgJiYgIWRlZmluZWQoX0FJWCkKKyB2b2lkIE91dHB1dFBvaW50ZXIodm9pZCogcG9pbnRlciwg QmFja3RyYWNlT3V0cHV0SGFuZGxlciogaGFuZGxlcikgeworICAgLy8gVGhpcyBzaG91bGQgYmUg bW9yZSB0aGFuIGVub3VnaCB0byBzdG9yZSBhIDY0LWJpdCBudW1iZXIgaW4gaGV4OgorICAgLy8g MTYgaGV4IGRpZ2l0cyArIDEgZm9yIG51bGwtdGVybWluYXRvci4KK0BAIC04NjgsNyArODY4LDcg QEAgc2l6ZV90IENvbGxlY3RTdGFja1RyYWNlKHZvaWQqKiB0cmFjZSwgcworICAgLy8gSWYgd2Ug ZG8gbm90IGhhdmUgdW53aW5kIHRhYmxlcywgdGhlbiB0cnkgdHJhY2luZyB1c2luZyBmcmFtZSBw b2ludGVycy4KKyAgIHJldHVybiBiYXNlOjpkZWJ1Zzo6VHJhY2VTdGFja0ZyYW1lUG9pbnRlcnMo Y29uc3RfY2FzdDxjb25zdCB2b2lkKio+KHRyYWNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIDApOworLSNlbGlmICFkZWZpbmVkKF9fVUNM SUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFk ZWZpbmVkKF9BSVgpCisgICAvLyBUaG91Z2ggdGhlIGJhY2t0cmFjZSBBUEkgbWFuIHBhZ2UgZG9l cyBub3QgbGlzdCBhbnkgcG9zc2libGUgbmVnYXRpdmUKKyAgIC8vIHJldHVybiB2YWx1ZXMsIHdl IHRha2Ugbm8gY2hhbmNlLgorICAgcmV0dXJuIGJhc2U6OnNhdHVyYXRlZF9jYXN0PHNpemVfdD4o YmFja3RyYWNlKHRyYWNlLCBjb3VudCkpOworQEAgLTg4MSwxMyArODgxLDEzIEBAIHZvaWQgU3Rh Y2tUcmFjZTo6UHJpbnRXaXRoUHJlZml4KGNvbnN0IGMKKyAvLyBOT1RFOiBUaGlzIGNvZGUgTVVT VCBiZSBhc3luYy1zaWduYWwgc2FmZSAoaXQncyB1c2VkIGJ5IGluLXByb2Nlc3MKKyAvLyBzdGFj ayBkdW1waW5nIHNpZ25hbCBoYW5kbGVyKS4gTk8gbWFsbG9jIG9yIHN0ZGlvIGlzIGFsbG93ZWQg aGVyZS4KKyAKKy0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKysj aWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisgICBQcmludEJhY2t0cmFj ZU91dHB1dEhhbmRsZXIgaGFuZGxlcjsKKyAgIFByb2Nlc3NCYWNrdHJhY2UodHJhY2VfLCBjb3Vu dF8sIHByZWZpeF9zdHJpbmcsICZoYW5kbGVyKTsKKyAjZW5kaWYKKyB9CisgCistI2lmICFkZWZp bmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmluZWQoX19HTElCQ19f KSAmJiAhZGVmaW5lZChfQUlYKQorIHZvaWQgU3RhY2tUcmFjZTo6T3V0cHV0VG9TdHJlYW1XaXRo UHJlZml4KHN0ZDo6b3N0cmVhbSogb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciogcHJlZml4X3N0cmluZykgY29uc3QgeworICAgU3RyZWFt QmFja3RyYWNlT3V0cHV0SGFuZGxlciBoYW5kbGVyKG9zKTsKKy0tLSBxdDYtd2ViZW5naW5lLTYu NC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9jb2RlZ2VuL2V4dGVybmFsLXJl ZmVyZW5jZS10YWJsZS5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2No cm9taXVtL3Y4L3NyYy9jb2RlZ2VuL2V4dGVybmFsLXJlZmVyZW5jZS10YWJsZS5jYworQEAgLTEy LDcgKzEyLDkgQEAKKyAKKyAjaWYgZGVmaW5lZChERUJVRykgJiYgZGVmaW5lZChWOF9PU19MSU5V WCkgJiYgIWRlZmluZWQoVjhfT1NfQU5EUk9JRCkKKyAjZGVmaW5lIFNZTUJPTElaRV9GVU5DVElP TgorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjaW5jbHVkZSA8ZXhlY2luZm8uaD4KKysjZW5k aWYKKyAKKyAjaW5jbHVkZSA8dmVjdG9yPgorIAorQEAgLTEwMyw3ICsxMDUsNyBAQCB2b2lkIEV4 dGVybmFsUmVmZXJlbmNlVGFibGU6OkluaXQoSXNvbGF0CisgfQorIAorIGNvbnN0IGNoYXIqIEV4 dGVybmFsUmVmZXJlbmNlVGFibGU6OlJlc29sdmVTeW1ib2wodm9pZCogYWRkcmVzcykgeworLSNp ZmRlZiBTWU1CT0xJWkVfRlVOQ1RJT04KKysjaWYgZGVmaW5lZChTWU1CT0xJWkVfRlVOQ1RJT04p ICYmIGRlZmluZWQoX19HTElCQ19fKQorICAgY2hhcioqIG5hbWVzID0gYmFja3RyYWNlX3N5bWJv bHMoJmFkZHJlc3MsIDEpOworICAgY29uc3QgY2hhciogbmFtZSA9IG5hbWVzWzBdOworICAgLy8g VGhlIGFycmF5IG9mIG5hbWVzIGlzIG1hbGxvYydlZC4gSG93ZXZlciwgZWFjaCBuYW1lIHN0cmlu ZyBpcyBzdGF0aWMKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAx MjMtY2hyb21pdW0tbXVzbC1uby1nZXRjb250ZXh0LnBhdGNoIGIvc3JjcGtncy9xdDYtd2ViZW5n aW5lL3BhdGNoZXMvMDEyMy1jaHJvbWl1bS1tdXNsLW5vLWdldGNvbnRleHQucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NjUyMmVlMGEwNjYKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTIzLWNocm9taXVtLW11 c2wtbm8tZ2V0Y29udGV4dC5wYXRjaApAQCAtMCwwICsxLDI3IEBACistLS0gcXQ2LXdlYmVuZ2lu ZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKKysr KyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRs ZXIuY2MKK0BAIC00OTAsNyArNDkwLDkgQEAgYm9vbCBFeGNlcHRpb25IYW5kbGVyOjpTaW11bGF0 ZVNpZ25hbERlbAorICAgc2lnaW5mby5zaV9jb2RlID0gU0lfVVNFUjsKKyAgIHNpZ2luZm8uc2lf cGlkID0gZ2V0cGlkKCk7CisgICB1Y29udGV4dF90IGNvbnRleHQ7CisrI2lmIGRlZmluZWQoX19H TElCQ19fKQorICAgZ2V0Y29udGV4dCgmY29udGV4dCk7CisrI2VuZGlmCisgICByZXR1cm4gSGFu ZGxlU2lnbmFsKHNpZywgJnNpZ2luZm8sICZjb250ZXh0KTsKKyB9CisgCitAQCAtNjc1LDkgKzY3 NywxNCBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OldyaXRlTWluaWR1bXAoKSB7CisgICBzeXNf cHJjdGwoUFJfU0VUX0RVTVBBQkxFLCAxLCAwLCAwLCAwKTsKKyAKKyAgIENyYXNoQ29udGV4dCBj b250ZXh0OworKworKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIGludCBnZXRjb250ZXh0X3Jl c3VsdCA9IGdldGNvbnRleHQoJmNvbnRleHQuY29udGV4dCk7CisgICBpZiAoZ2V0Y29udGV4dF9y ZXN1bHQpCisgICAgIHJldHVybiBmYWxzZTsKKysjZWxzZQorKyAgcmV0dXJuIGZhbHNlOworKyNl bmRpZgorIAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgLy8gSW4gQ1BVRmlsbEZyb21VQ29u dGV4dCBpbiBtaW5pZHVtcHdyaXRlci5jYyB0aGUgc3RhY2sgcG9pbnRlciBpcyByZXRyaWV2ZWQK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMjQtY2hyb21pdW0t ZW5hYmxlLWk2ODYucGF0Y2ggYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTI0LWNo cm9taXVtLWVuYWJsZS1pNjg2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMTFkOGRlN2MyM2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDYtd2Vi ZW5naW5lL3BhdGNoZXMvMDEyNC1jaHJvbWl1bS1lbmFibGUtaTY4Ni5wYXRjaApAQCAtMCwwICsx LDE3IEBACistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9CVUlMRC5nbgorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVt L0JVSUxELmduCitAQCAtMTUzNywxNCArMTUzNyw2IEBAIGlmICghaXNfaW9zICYmICF1c2VfcXQp IHsKKyAgIH0KKyB9CisgCistIyBUT0RPKGNhc3Nldyk6IEFkZCBtb3JlIE9TJ3MgdGhhdCBkb24n dCBzdXBwb3J0IHg4Ni4KKy1pc192YWxpZF94ODZfdGFyZ2V0ID0KKy0gICAgdGFyZ2V0X29zICE9 ICJpb3MiICYmIHRhcmdldF9vcyAhPSAibWFjIiAmJgorLSAgICAodGFyZ2V0X29zICE9ICJsaW51 eCIgfHwgdXNlX2xpYmZ1enplciB8fCAhYnVpbGRfd2l0aF9jaHJvbWl1bSkKKy1hc3NlcnQoCist ICAgIGlzX3ZhbGlkX3g4Nl90YXJnZXQgfHwgdGFyZ2V0X2NwdSAhPSAieDg2IiwKKy0gICAgIid0 YXJnZXRfY3B1PXg4NicgaXMgbm90IHN1cHBvcnRlZCBmb3IgJ3RhcmdldF9vcz0kdGFyZ2V0X29z Jy4gQ29uc2lkZXIgb21pdHRpbmcgJ3RhcmdldF9jcHUnIChkZWZhdWx0KSBvciB1c2luZyAndGFy Z2V0X2NwdT14NjQnIGluc3RlYWQuIikKKy0KKyBncm91cCgiY2hyb21pdW1fYnVpbGRlcl9wZXJm IikgeworICAgdGVzdG9ubHkgPSB0cnVlCisgCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJl bmdpbmUvcGF0Y2hlcy8wMTI1LWNocm9taXVtLXJlbW92ZS1zdHJpcF9iaW5hcnkucGF0Y2ggYi9z cmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTI1LWNocm9taXVtLXJlbW92ZS1zdHJpcF9i aW5hcnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xMTVl NDQ5MmEyYmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hl cy8wMTI1LWNocm9taXVtLXJlbW92ZS1zdHJpcF9iaW5hcnkucGF0Y2gKQEAgLTAsMCArMSwzMiBA QAorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vY2hy b21lL3Rlc3QvY2hyb21lZHJpdmVyL0JVSUxELmduCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9z cmMvM3JkcGFydHkvY2hyb21pdW0vY2hyb21lL3Rlc3QvY2hyb21lZHJpdmVyL0JVSUxELmduCitA QCAtMzM1LDExICszMzUsNyBAQCBzb3VyY2Vfc2V0KCJsaWIiKSB7CisgICB9CisgfQorIAorLWlm IChpc19saW51eCkgeworLSAgY2hyb21lZHJpdmVyX291dHB1dCA9ICJjaHJvbWVkcml2ZXIudW5z dHJpcHBlZCIKKy19IGVsc2UgeworLSAgY2hyb21lZHJpdmVyX291dHB1dCA9ICJjaHJvbWVkcml2 ZXIiCistfQorK2Nocm9tZWRyaXZlcl9vdXRwdXQgPSAiY2hyb21lZHJpdmVyIgorIAorIGV4ZWN1 dGFibGUoIiRjaHJvbWVkcml2ZXJfb3V0cHV0IikgeworICAgdGVzdG9ubHkgPSB0cnVlCitAQCAt MzYxLDE2ICszNTcsNiBAQCBleGVjdXRhYmxlKCIkY2hyb21lZHJpdmVyX291dHB1dCIpIHsKKyAg IH0KKyB9CisgCistaWYgKGlzX2xpbnV4KSB7CistICBzdHJpcF9iaW5hcnkoImNocm9tZWRyaXZl ciIpIHsKKy0gICAgdGVzdG9ubHkgPSB0cnVlCistICAgIGJpbmFyeV9pbnB1dCA9ICIkcm9vdF9v dXRfZGlyLyRjaHJvbWVkcml2ZXJfb3V0cHV0IgorLSAgICBzeW1ib2xfb3V0cHV0ID0gIiRyb290 X291dF9kaXIvY2hyb21lZHJpdmVyLmRlYnVnIgorLSAgICBzdHJpcHBlZF9iaW5hcnlfb3V0cHV0 ID0gIiRyb290X291dF9kaXIvY2hyb21lZHJpdmVyIgorLSAgICBkZXBzID0gWyAiOiRjaHJvbWVk cml2ZXJfb3V0cHV0IiBdCistICB9CistfQorLQorIHB5dGhvbl9saWJyYXJ5KCJjaHJvbWVkcml2 ZXJfcHlfdGVzdHMiKSB7CisgICB0ZXN0b25seSA9IHRydWUKKyAgIGRlcHMgPSBbCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTI2LWNocm9taXVtLW5vLWNkZWZz LnBhdGNoIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDEyNi1jaHJvbWl1bS1uby1j ZGVmcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjkwZmFh M2Q2NjRkMAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVz LzAxMjYtY2hyb21pdW0tbm8tY2RlZnMucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorLS0tIHF0Ni13 ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvY29tcGF0L2xpbnV4L3N5cy9wdHJhY2UuaAorKysrIHF0Ni13ZWJlbmdp bmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL2NvbXBhdC9saW51eC9zeXMvcHRyYWNlLmgKK0BAIC0xNyw4ICsxNyw2IEBACisgCisgI2lu Y2x1ZGVfbmV4dCA8c3lzL3B0cmFjZS5oPgorIAorLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KKy0K KyAvLyBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMjQz MworICNpZiAhZGVmaW5lZChQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBKSAmJiAhZGVmaW5lZChQVF9H RVRfVEhSRUFEX0FSRUEpICYmIFwKKyAgICAgZGVmaW5lZChfX0dMSUJDX18pCistLS0gcXQ2LXdl YmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9saWJz eW5jL3NyYy9pbmNsdWRlL3N5bmMvc3luYy5oCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbGlic3luYy9zcmMvaW5jbHVkZS9zeW5jL3N5 bmMuaAorQEAgLTE5LDEyICsxOSwxMyBAQAorICNpZm5kZWYgX19TWVNfQ09SRV9TWU5DX0gKKyAj ZGVmaW5lIF9fU1lTX0NPUkVfU1lOQ19ICisgCistI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorICNp bmNsdWRlIDxzdGRpbnQuaD4KKyAKKyAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyAKKy1fX0JF R0lOX0RFQ0xTCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrZXh0ZXJuICJDIiB7CisrI2VuZGlmCisg Cisgc3RydWN0IHN5bmNfbGVnYWN5X21lcmdlX2RhdGEgeworICBpbnQzMl90IGZkMjsKK0BAIC0x NTgsNiArMTU5LDggQEAgc3RydWN0IHN5bmNfcHRfaW5mbyAqc3luY19wdF9pbmZvKHN0cnVjdAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3luY19wdF9pbmZvICpp dHIpOworIHZvaWQgc3luY19mZW5jZV9pbmZvX2ZyZWUoc3RydWN0IHN5bmNfZmVuY2VfaW5mb19k YXRhICppbmZvKTsKKyAKKy1fX0VORF9ERUNMUworKyNpZmRlZiBfX2NwbHVzcGx1cworK30KKysj ZW5kaWYKKyAKKyAjZW5kaWYgLyogX19TWVNfQ09SRV9TWU5DX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMjgtY2hyb21pdW0tc2FuZGJveC1tZW1iYXJy aWVyLnBhdGNoIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDEyOC1jaHJvbWl1bS1z YW5kYm94LW1lbWJhcnJpZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi4yZTE0OTJjM2Y2MjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0Ni13ZWJl bmdpbmUvcGF0Y2hlcy8wMTI4LWNocm9taXVtLXNhbmRib3gtbWVtYmFycmllci5wYXRjaApAQCAt MCwwICsxLDEwIEBACistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNj CisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9s aW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYworQEAgLTQxOCw2ICs0MTgs NyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRQcm9jZXNzU3RhcnRPCisgICBzd2l0Y2gg KHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9leGl0OgorICAgICBjYXNlIF9fTlJfZXhpdF9ncm91 cDoKKysgICAgY2FzZSBfX05SX21lbWJhcnJpZXI6CisgICAgIGNhc2UgX19OUl93YWl0NDoKKyAg ICAgY2FzZSBfX05SX3dhaXRpZDoKKyAjaWYgZGVmaW5lZChfX2kzODZfXykKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxMjktY2hyb21pdW0tc2FuZGJveC1zaGVk X2dldHBhcmFtLnBhdGNoIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDEyOS1jaHJv bWl1bS1zYW5kYm94LXNoZWRfZ2V0cGFyYW0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi44MGQ5MWM3N2U4YmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTI5LWNocm9taXVtLXNhbmRib3gtc2hlZF9nZXRwYXJh bS5wYXRjaApAQCAtMCwwICsxLDIwIEBACitBbGxvdyBTWVNfc2NoZWRfZ2V0cGFyYW0gYW5kIFNZ U19zY2hlZF9nZXRzY2hlZHVsZXIKK211c2wgdXNlcyB0aGVtIGZvciBwdGhyZWFkX2dldHNjaGVk cGFyYW0oKQorCitzb3VyY2U6IGh0dHBzOi8vZ2l0LmFscGluZWxpbnV4Lm9yZy9hcG9ydHMvY29t bWl0L2NvbW11bml0eS9jaHJvbWl1bT9pZD01NGFmOWY4YWMyNGY1MmQzODJjNTc1OGUyNDQ1YmYw MjA2ZWZmNDBlCisKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2No cm9taXVtL3NhbmRib3gvcG9saWN5L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MK KysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L3Bv bGljeS9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjCitAQCAtOTcsMTAgKzk3LDEw IEBAIFJlc3VsdEV4cHIgUmVuZGVyZXJQcm9jZXNzUG9saWN5OjpFdmFsdWEKKyAgICAgY2FzZSBf X05SX3N5c2luZm86CisgICAgIGNhc2UgX19OUl90aW1lczoKKyAgICAgY2FzZSBfX05SX3VuYW1l OgorLSAgICAgIHJldHVybiBBbGxvdygpOworLSAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0YWZmaW5p dHk6CisgICAgIGNhc2UgX19OUl9zY2hlZF9nZXRwYXJhbToKKyAgICAgY2FzZSBfX05SX3NjaGVk X2dldHNjaGVkdWxlcjoKKysgICAgICByZXR1cm4gQWxsb3coKTsKKysgICAgY2FzZSBfX05SX3Nj aGVkX2dldGFmZmluaXR5OgorICAgICBjYXNlIF9fTlJfc2NoZWRfc2V0c2NoZWR1bGVyOgorICAg ICAgIHJldHVybiBSZXN0cmljdFNjaGVkVGFyZ2V0KEdldFBvbGljeVBpZCgpLCBzeXNubyk7Cisg ICAgIGNhc2UgX19OUl9wcmxpbWl0NjQ6CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdp bmUvcGF0Y2hlcy8wMTUwLWNocm9taXVtLXVuYnVuZGxlLWZmbXBlZy1hdl9zdHJlYW1fZ2V0X2Zp cnN0X2R0cy5wYXRjaCBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxNTAtY2hyb21p dW0tdW5idW5kbGUtZmZtcGVnLWF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTdmNjA0OGZiYzFjCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDE1MC1jaHJvbWl1bS11bmJ1 bmRsZS1mZm1wZWctYXZfc3RyZWFtX2dldF9maXJzdF9kdHMucGF0Y2gKQEAgLTAsMCArMSwxMCBA QAorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVp bGQvbGludXgvdW5idW5kbGUvZmZtcGVnLmduCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMv M3JkcGFydHkvY2hyb21pdW0vYnVpbGQvbGludXgvdW5idW5kbGUvZmZtcGVnLmduCitAQCAtMTIs NiArMTIsNyBAQCBwa2dfY29uZmlnKCJzeXN0ZW1fZmZtcGVnIikgeworICAgICAibGliYXZmb3Jt YXQiLAorICAgICAibGliYXZ1dGlsIiwKKyAgIF0KKysgIGRlZmluZXMgPSBbICJhdl9zdHJlYW1f Z2V0X2ZpcnN0X2R0cyhzdHJlYW0pPXN0cmVhbS0+Zmlyc3RfZHRzIiBdCisgfQorIAorIGJ1aWxk ZmxhZ19oZWFkZXIoImZmbXBlZ19mZWF0dXJlcyIpIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2 LXdlYmVuZ2luZS9wYXRjaGVzLzAxNTEtY2hyb21pdW0tdW5idW5kbGVkLWNyb3NzLXRvb2xjaGFp bi5wYXRjaCBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxNTEtY2hyb21pdW0tdW5i dW5kbGVkLWNyb3NzLXRvb2xjaGFpbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjc0NmQyZGZiOWE3ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2 LXdlYmVuZ2luZS9wYXRjaGVzLzAxNTEtY2hyb21pdW0tdW5idW5kbGVkLWNyb3NzLXRvb2xjaGFp bi5wYXRjaApAQCAtMCwwICsxLDEzIEBACistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC90b29sY2hhaW4vbGludXgvdW5idW5kbGUvQlVJTEQu Z24KKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC90 b29sY2hhaW4vbGludXgvdW5idW5kbGUvQlVJTEQuZ24KK0BAIC0zNSw4ICszNSw4IEBAIGdjY190 b29sY2hhaW4oImhvc3QiKSB7CisgICBleHRyYV9sZGZsYWdzID0gZ2V0ZW52KCJCVUlMRF9MREZM QUdTIikKKyAKKyAgIHRvb2xjaGFpbl9hcmdzID0geworLSAgICBjdXJyZW50X2NwdSA9IGN1cnJl bnRfY3B1CistICAgIGN1cnJlbnRfb3MgPSBjdXJyZW50X29zCisrICAgIGN1cnJlbnRfY3B1ID0g aG9zdF9jcHUKKysgICAgY3VycmVudF9vcyA9IGhvc3Rfb3MKKyAgIH0KKyB9CisgCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTUyLWNocm9taXVtLXdlYnJ0Yy1z aXplX3QucGF0Y2ggYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTUyLWNocm9taXVt LXdlYnJ0Yy1zaXplX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi44ZjYwMjA0ZmY1ODQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0Ni13ZWJlbmdp bmUvcGF0Y2hlcy8wMTUyLWNocm9taXVtLXdlYnJ0Yy1zaXplX3QucGF0Y2gKQEAgLTAsMCArMSwx MCBAQAorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9hZWMzL2Nsb2NrZHJp ZnRfZGV0ZWN0b3IuaAorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jbG9j a2RyaWZ0X2RldGVjdG9yLmgKK0BAIC0xNCw2ICsxNCw3IEBACisgI2luY2x1ZGUgPHN0ZGRlZi5o PgorIAorICNpbmNsdWRlIDxhcnJheT4KKysjaW5jbHVkZSA8Y3N0ZGRlZj4KKyAKKyBuYW1lc3Bh Y2Ugd2VicnRjIHsKKyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVz LzAxNTMtY2hyb21pdW0td2VicnRjLXNpemVfdC5wYXRjaCBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2lu ZS9wYXRjaGVzLzAxNTMtY2hyb21pdW0td2VicnRjLXNpemVfdC5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNiNWI3YTNkNTNiOQotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAxNTMtY2hyb21pdW0td2VicnRjLXNp emVfdC5wYXRjaApAQCAtMCwwICsxLDE2IEBACistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmln L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9hbmdsZS9pbmNsdWRlL3BsYXRmb3Jt L1BsYXRmb3JtTWV0aG9kcy5oCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYW5nbGUvaW5jbHVkZS9wbGF0Zm9ybS9QbGF0Zm9ybU1ldGhv ZHMuaAorQEAgLTIyMiwxMSArMjIyLDExIEBAIGlubGluZSB2b2lkIERlZmF1bHRIaXN0b2dyYW1C b29sZWFuKFBsYXQKKyB1c2luZyBQcm9ncmFtS2V5VHlwZSAgID0gc3RkOjphcnJheTx1aW50OF90 LCAyMD47CisgdXNpbmcgQ2FjaGVQcm9ncmFtRnVuYyA9IHZvaWQgKCopKFBsYXRmb3JtTWV0aG9k cyAqcGxhdGZvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBy b2dyYW1LZXlUeXBlICZrZXksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp emVfdCBwcm9ncmFtU2l6ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk OjpzaXplX3QgcHJvZ3JhbVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHVpbnQ4X3QgKnByb2dyYW1CeXRlcyk7CisgaW5saW5lIHZvaWQgRGVmYXVsdENhY2hl UHJvZ3JhbShQbGF0Zm9ybU1ldGhvZHMgKnBsYXRmb3JtLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgUHJvZ3JhbUtleVR5cGUgJmtleSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVfdCBwcm9ncmFtU2l6ZSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IHByb2dyYW1TaXplLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcHJvZ3JhbUJ5dGVzKQorIHt9CisgCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMTU0LWNocm9taXVtLXVpdF90 LnBhdGNoIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDE1NC1jaHJvbWl1bS11aXRf dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQxM2EzMWZl ZTQwMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAx NTQtY2hyb21pdW0tdWl0X3QucGF0Y2gKQEAgLTAsMCArMSwxMSBAQAorLS0tIHF0Ni13ZWJlbmdp bmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZXJ2aWNl cy9jcmVkZW50aWFscy5oCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hy b21pdW0vc2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5oCitAQCAtMTQsNiArMTQs OCBAQAorICNpbmNsdWRlIDxzdHJpbmc+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAKKysjaW5jbHVk ZSA8c3lzL3R5cGVzLmg+CisrCisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRl cnMvY2FwYWJpbGl0eS5oIgorICNpbmNsdWRlICJzYW5kYm94L3NhbmRib3hfZXhwb3J0LmgiCisg CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wMjAwLWNocm9taXVt LXNuZGlvLnBhdGNoIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDIwMC1jaHJvbWl1 bS1zbmRpby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ3 NjliNTMxNDk3YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRj aGVzLzAyMDAtY2hyb21pdW0tc25kaW8ucGF0Y2gKQEAgLTAsMCArMSw4NDkgQEAKKy0tLSBxdDYt d2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL0JVSUxELmdu CisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvQlVJ TEQuZ24KK0BAIC03OCw2ICs3OCw5IEBAIGNvbmZpZygibWVkaWFfY29uZmlnIikgeworICAgICAg IGRlZmluZXMgKz0gWyAiRExPUEVOX1BVTFNFQVVESU8iIF0KKyAgICAgfQorICAgfQorKyAgaWYg KHVzZV9zbmRpbykgeworKyAgICBkZWZpbmVzICs9IFsgIlVTRV9TTkRJTyIgXQorKyAgfQorICAg aWYgKHVzZV9jcmFzKSB7CisgICAgIGRlZmluZXMgKz0gWyAiVVNFX0NSQVMiIF0KKyAgIH0KKy0t LSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2F1 ZGlvL0JVSUxELmduCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21p dW0vbWVkaWEvYXVkaW8vQlVJTEQuZ24KK0BAIC0yNDUsNiArMjQ1LDE3IEBAIHNvdXJjZV9zZXQo ImF1ZGlvIikgeworICAgICBzb3VyY2VzICs9IFsgImxpbnV4L2F1ZGlvX21hbmFnZXJfbGludXgu Y2MiIF0KKyAgIH0KKyAKKysgIGlmICh1c2Vfc25kaW8pIHsKKysgICAgbGlicyArPSBbICJzbmRp byIgXQorKyAgICBzb3VyY2VzICs9IFsKKysgICAgICAic25kaW8vYXVkaW9fbWFuYWdlcl9zbmRp by5jYyIsCisrICAgICAgInNuZGlvL3NuZGlvX2lucHV0LmNjIiwKKysgICAgICAic25kaW8vc25k aW9faW5wdXQuaCIsCisrICAgICAgInNuZGlvL3NuZGlvX291dHB1dC5jYyIsCisrICAgICAgInNu ZGlvL3NuZGlvX291dHB1dC5oIgorKyAgICBdCisrICB9CisrCisgICBpZiAodXNlX2Fsc2EpIHsK KyAgICAgbGlicyArPSBbICJhc291bmQiIF0KKyAgICAgc291cmNlcyArPSBbCistLS0gcXQ2LXdl YmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9hdWRpby9saW51 eC9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3Jk cGFydHkvY2hyb21pdW0vbWVkaWEvYXVkaW8vbGludXgvYXVkaW9fbWFuYWdlcl9saW51eC5jYwor QEAgLTI1LDYgKzI1LDExIEBACisgI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3B1bHNlL2F1ZGlvX21h bmFnZXJfcHVsc2UuaCIKKyAjaW5jbHVkZSAibWVkaWEvYXVkaW8vcHVsc2UvcHVsc2VfdXRpbC5o IgorICNlbmRpZgorKyNpZiBkZWZpbmVkKFVTRV9TTkRJTykKKysjaW5jbHVkZSAibWVkaWEvYXVk aW8vc25kaW8vYXVkaW9fbWFuYWdlcl9zbmRpby5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9z bmRpby9zbmRpb19pbnB1dC5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9zbmRpb19v dXRwdXQuaCIKKysjZW5kaWYKKyAKKyBuYW1lc3BhY2UgbWVkaWEgeworIAorLS0tIC9kZXYvbnVs bAorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2F1 ZGlvL3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uY2MKK0BAIC0wLDAgKzEsMTQ4IEBACisrLy8g Q29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLgorKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0 eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKysvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor KworKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmgiCisr CisrI2luY2x1ZGUgImJhc2UvbWV0cmljcy9oaXN0b2dyYW1fbWFjcm9zLmgiCisrI2luY2x1ZGUg ImJhc2UvbWVtb3J5L3B0cl91dGlsLmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX2Rl dmljZV9kZXNjcmlwdGlvbi5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9hdWRpb19vdXRwdXRf ZGlzcGF0Y2hlci5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9zbmRpb19pbnB1dC5o IgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9zbmRpb19vdXRwdXQuaCIKKysjaW5jbHVk ZSAibWVkaWEvYmFzZS9saW1pdHMuaCIKKysjaW5jbHVkZSAibWVkaWEvYmFzZS9tZWRpYV9zd2l0 Y2hlcy5oIgorKworK25hbWVzcGFjZSBtZWRpYSB7CisrCisrCisrLy8gTWF4aW11bSBudW1iZXIg b2Ygb3V0cHV0IHN0cmVhbXMgdGhhdCBjYW4gYmUgb3BlbiBzaW11bHRhbmVvdXNseS4KKytzdGF0 aWMgY29uc3QgaW50IGtNYXhPdXRwdXRTdHJlYW1zID0gNDsKKysKKysvLyBEZWZhdWx0IHNhbXBs ZSByYXRlIGZvciBpbnB1dCBhbmQgb3V0cHV0IHN0cmVhbXMuCisrc3RhdGljIGNvbnN0IGludCBr RGVmYXVsdFNhbXBsZVJhdGUgPSA0ODAwMDsKKysKKyt2b2lkIEFkZERlZmF1bHREZXZpY2UoQXVk aW9EZXZpY2VOYW1lcyogZGV2aWNlX25hbWVzKSB7CisrICBEQ0hFQ0soZGV2aWNlX25hbWVzLT5l bXB0eSgpKTsKKysgIGRldmljZV9uYW1lcy0+cHVzaF9mcm9udChBdWRpb0RldmljZU5hbWU6OkNy ZWF0ZURlZmF1bHQoKSk7CisrfQorKworK2Jvb2wgQXVkaW9NYW5hZ2VyU25kaW86Okhhc0F1ZGlv T3V0cHV0RGV2aWNlcygpIHsKKysgIHJldHVybiB0cnVlOworK30KKysKKytib29sIEF1ZGlvTWFu YWdlclNuZGlvOjpIYXNBdWRpb0lucHV0RGV2aWNlcygpIHsKKysgIHJldHVybiB0cnVlOworK30K KysKKyt2b2lkIEF1ZGlvTWFuYWdlclNuZGlvOjpHZXRBdWRpb0lucHV0RGV2aWNlTmFtZXMoCisr ICAgIEF1ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykgeworKyAgRENIRUNLKGRldmljZV9u YW1lcy0+ZW1wdHkoKSk7CisrICBBZGREZWZhdWx0RGV2aWNlKGRldmljZV9uYW1lcyk7CisrfQor KworK3ZvaWQgQXVkaW9NYW5hZ2VyU25kaW86OkdldEF1ZGlvT3V0cHV0RGV2aWNlTmFtZXMoCisr ICAgIEF1ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykgeworKyAgQWRkRGVmYXVsdERldmlj ZShkZXZpY2VfbmFtZXMpOworK30KKysKKytjb25zdCBjaGFyKiBBdWRpb01hbmFnZXJTbmRpbzo6 R2V0TmFtZSgpIHsKKysgIHJldHVybiAiU05ESU8iOworK30KKysKKytBdWRpb1BhcmFtZXRlcnMg QXVkaW9NYW5hZ2VyU25kaW86OkdldElucHV0U3RyZWFtUGFyYW1ldGVycygKKysgICAgY29uc3Qg c3RkOjpzdHJpbmcmIGRldmljZV9pZCkgeworKyAgc3RhdGljIGNvbnN0IGludCBrRGVmYXVsdElu cHV0QnVmZmVyU2l6ZSA9IDEwMjQ7CisrCisrICBpbnQgdXNlcl9idWZmZXJfc2l6ZSA9IEdldFVz ZXJCdWZmZXJTaXplKCk7CisrICBpbnQgYnVmZmVyX3NpemUgPSB1c2VyX2J1ZmZlcl9zaXplID8K KysgICAgICB1c2VyX2J1ZmZlcl9zaXplIDoga0RlZmF1bHRJbnB1dEJ1ZmZlclNpemU7CisrCisr ICByZXR1cm4gQXVkaW9QYXJhbWV0ZXJzKAorKyAgICAgIEF1ZGlvUGFyYW1ldGVyczo6QVVESU9f UENNX0xPV19MQVRFTkNZLCBDSEFOTkVMX0xBWU9VVF9TVEVSRU8sCisrICAgICAga0RlZmF1bHRT YW1wbGVSYXRlLCBidWZmZXJfc2l6ZSk7CisrfQorKworK0F1ZGlvTWFuYWdlclNuZGlvOjpBdWRp b01hbmFnZXJTbmRpbyhzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9UaHJlYWQ+IGF1ZGlvX3RocmVhZCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvTG9nRmFjdG9y eSogYXVkaW9fbG9nX2ZhY3RvcnkpCisrICAgIDogQXVkaW9NYW5hZ2VyQmFzZShzdGQ6Om1vdmUo YXVkaW9fdGhyZWFkKSwKKysgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2xvZ19mYWN0b3J5 KSB7CisrICBETE9HKFdBUk5JTkcpIDw8ICJBdWRpb01hbmFnZXJTbmRpbyI7CisrICBTZXRNYXhP dXRwdXRTdHJlYW1zQWxsb3dlZChrTWF4T3V0cHV0U3RyZWFtcyk7CisrfQorKworK0F1ZGlvTWFu YWdlclNuZGlvOjp+QXVkaW9NYW5hZ2VyU25kaW8oKSB7CisrICBTaHV0ZG93bigpOworK30KKysK KytBdWRpb091dHB1dFN0cmVhbSogQXVkaW9NYW5hZ2VyU25kaW86Ok1ha2VMaW5lYXJPdXRwdXRT dHJlYW0oCisrICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorKyAgICBjb25zdCBM b2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSB7CisrICBEQ0hFQ0tfRVEoQXVkaW9QYXJhbWV0ZXJz OjpBVURJT19QQ01fTElORUFSLCBwYXJhbXMuZm9ybWF0KCkpOworKyAgcmV0dXJuIE1ha2VPdXRw dXRTdHJlYW0ocGFyYW1zKTsKKyt9CisrCisrQXVkaW9PdXRwdXRTdHJlYW0qIEF1ZGlvTWFuYWdl clNuZGlvOjpNYWtlTG93TGF0ZW5jeU91dHB1dFN0cmVhbSgKKysgICAgY29uc3QgQXVkaW9QYXJh bWV0ZXJzJiBwYXJhbXMsCisrICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCisrICAg IGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIHsKKysgIERMT0dfSUYoRVJST1IsICFk ZXZpY2VfaWQuZW1wdHkoKSkgPDwgIk5vdCBpbXBsZW1lbnRlZCEiOworKyAgRENIRUNLX0VRKEF1 ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZLCBwYXJhbXMuZm9ybWF0KCkpOwor KyAgcmV0dXJuIE1ha2VPdXRwdXRTdHJlYW0ocGFyYW1zKTsKKyt9CisrCisrQXVkaW9JbnB1dFN0 cmVhbSogQXVkaW9NYW5hZ2VyU25kaW86Ok1ha2VMaW5lYXJJbnB1dFN0cmVhbSgKKysgICAgY29u c3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisrICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZp Y2VfaWQsCisrICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIHsKKysgIERDSEVD S19FUShBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MSU5FQVIsIHBhcmFtcy5mb3JtYXQoKSk7 CisrICByZXR1cm4gTWFrZUlucHV0U3RyZWFtKHBhcmFtcyk7CisrfQorKworK0F1ZGlvSW5wdXRT dHJlYW0qIEF1ZGlvTWFuYWdlclNuZGlvOjpNYWtlTG93TGF0ZW5jeUlucHV0U3RyZWFtKAorKyAg ICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKysgICAgY29uc3Qgc3RkOjpzdHJpbmcm IGRldmljZV9pZCwKKysgICAgY29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgeworKyAg RENIRUNLX0VRKEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZLCBwYXJhbXMu Zm9ybWF0KCkpOworKyAgcmV0dXJuIE1ha2VJbnB1dFN0cmVhbShwYXJhbXMpOworK30KKysKKytB dWRpb1BhcmFtZXRlcnMgQXVkaW9NYW5hZ2VyU25kaW86OkdldFByZWZlcnJlZE91dHB1dFN0cmVh bVBhcmFtZXRlcnMoCisrICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZGV2aWNlX2lkLAor KyAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIGlucHV0X3BhcmFtcykgeworKyAgLy8gVE9ETyh0 b21taSk6IFN1cHBvcnQgfG91dHB1dF9kZXZpY2VfaWR8LgorKyAgRExPR19JRihFUlJPUiwgIW91 dHB1dF9kZXZpY2VfaWQuZW1wdHkoKSkgPDwgIk5vdCBpbXBsZW1lbnRlZCEiOworKyAgc3RhdGlj IGNvbnN0IGludCBrRGVmYXVsdE91dHB1dEJ1ZmZlclNpemUgPSAyMDQ4OworKworKyAgQ2hhbm5l bExheW91dCBjaGFubmVsX2xheW91dCA9IENIQU5ORUxfTEFZT1VUX1NURVJFTzsKKysgIGludCBz YW1wbGVfcmF0ZSA9IGtEZWZhdWx0U2FtcGxlUmF0ZTsKKysgIGludCBidWZmZXJfc2l6ZSA9IGtE ZWZhdWx0T3V0cHV0QnVmZmVyU2l6ZTsKKysgIGlmIChpbnB1dF9wYXJhbXMuSXNWYWxpZCgpKSB7 CisrICAgIHNhbXBsZV9yYXRlID0gaW5wdXRfcGFyYW1zLnNhbXBsZV9yYXRlKCk7CisrICAgIGNo YW5uZWxfbGF5b3V0ID0gaW5wdXRfcGFyYW1zLmNoYW5uZWxfbGF5b3V0KCk7CisrICAgIGJ1ZmZl cl9zaXplID0gc3RkOjptaW4oYnVmZmVyX3NpemUsIGlucHV0X3BhcmFtcy5mcmFtZXNfcGVyX2J1 ZmZlcigpKTsKKysgIH0KKysKKysgIGludCB1c2VyX2J1ZmZlcl9zaXplID0gR2V0VXNlckJ1ZmZl clNpemUoKTsKKysgIGlmICh1c2VyX2J1ZmZlcl9zaXplKQorKyAgICBidWZmZXJfc2l6ZSA9IHVz ZXJfYnVmZmVyX3NpemU7CisrCisrICByZXR1cm4gQXVkaW9QYXJhbWV0ZXJzKAorKyAgICAgIEF1 ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZLCBjaGFubmVsX2xheW91dCwKKysg ICAgICBzYW1wbGVfcmF0ZSwgYnVmZmVyX3NpemUpOworK30KKysKKytBdWRpb0lucHV0U3RyZWFt KiBBdWRpb01hbmFnZXJTbmRpbzo6TWFrZUlucHV0U3RyZWFtKAorKyAgICBjb25zdCBBdWRpb1Bh cmFtZXRlcnMmIHBhcmFtcykgeworKyAgRExPRyhXQVJOSU5HKSA8PCAiTWFrZUlucHV0U3RyZWFt IjsKKysgIHJldHVybiBuZXcgU25kaW9BdWRpb0lucHV0U3RyZWFtKHRoaXMsCisrICAgICAgICAg ICAgIEF1ZGlvRGV2aWNlRGVzY3JpcHRpb246OmtEZWZhdWx0RGV2aWNlSWQsIHBhcmFtcyk7Cisr fQorKworK0F1ZGlvT3V0cHV0U3RyZWFtKiBBdWRpb01hbmFnZXJTbmRpbzo6TWFrZU91dHB1dFN0 cmVhbSgKKysgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMpIHsKKysgIERMT0coV0FS TklORykgPDwgIk1ha2VPdXRwdXRTdHJlYW0iOworKyAgcmV0dXJuIG5ldyBTbmRpb0F1ZGlvT3V0 cHV0U3RyZWFtKHBhcmFtcywgdGhpcyk7CisrfQorKworK30gIC8vIG5hbWVzcGFjZSBtZWRpYQor LS0tIC9kZXYvbnVsbAorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL21lZGlhL2F1ZGlvL3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uaAorQEAgLTAsMCArMSw2 NSBAQAorKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJp Z2h0cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VO U0UgZmlsZS4KKysKKysjaWZuZGVmIE1FRElBX0FVRElPX1NORElPX0FVRElPX01BTkFHRVJfU05E SU9fSF8KKysjZGVmaW5lIE1FRElBX0FVRElPX1NORElPX0FVRElPX01BTkFHRVJfU05ESU9fSF8K KysKKysjaW5jbHVkZSA8c2V0PgorKworKyNpbmNsdWRlICJiYXNlL2NvbXBpbGVyX3NwZWNpZmlj LmgiCisrI2luY2x1ZGUgImJhc2UvbWFjcm9zLmgiCisrI2luY2x1ZGUgImJhc2UvbWVtb3J5L3Jl Zl9jb3VudGVkLmgiCisrI2luY2x1ZGUgImJhc2UvdGhyZWFkaW5nL3RocmVhZC5oIgorKyNpbmNs dWRlICJtZWRpYS9hdWRpby9hdWRpb19tYW5hZ2VyX2Jhc2UuaCIKKysKKytuYW1lc3BhY2UgbWVk aWEgeworKworK2NsYXNzIE1FRElBX0VYUE9SVCBBdWRpb01hbmFnZXJTbmRpbyA6IHB1YmxpYyBB dWRpb01hbmFnZXJCYXNlIHsKKysgcHVibGljOgorKyAgQXVkaW9NYW5hZ2VyU25kaW8oc3RkOjp1 bmlxdWVfcHRyPEF1ZGlvVGhyZWFkPiBhdWRpb190aHJlYWQsCisrICAgICAgICAgICAgICAgICAg IEF1ZGlvTG9nRmFjdG9yeSogYXVkaW9fbG9nX2ZhY3RvcnkpOworKyAgfkF1ZGlvTWFuYWdlclNu ZGlvKCkgb3ZlcnJpZGU7CisrCisrICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBBdWRpb01hbmFnZXIu CisrICBib29sIEhhc0F1ZGlvT3V0cHV0RGV2aWNlcygpIG92ZXJyaWRlOworKyAgYm9vbCBIYXNB dWRpb0lucHV0RGV2aWNlcygpIG92ZXJyaWRlOworKyAgdm9pZCBHZXRBdWRpb0lucHV0RGV2aWNl TmFtZXMoQXVkaW9EZXZpY2VOYW1lcyogZGV2aWNlX25hbWVzKSBvdmVycmlkZTsKKysgIHZvaWQg R2V0QXVkaW9PdXRwdXREZXZpY2VOYW1lcyhBdWRpb0RldmljZU5hbWVzKiBkZXZpY2VfbmFtZXMp IG92ZXJyaWRlOworKyAgQXVkaW9QYXJhbWV0ZXJzIEdldElucHV0U3RyZWFtUGFyYW1ldGVycygK KysgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkKSBvdmVycmlkZTsKKysgIGNvbnN0 IGNoYXIqIEdldE5hbWUoKSBvdmVycmlkZTsKKysKKysgIC8vIEltcGxlbWVudGF0aW9uIG9mIEF1 ZGlvTWFuYWdlckJhc2UuCisrICBBdWRpb091dHB1dFN0cmVhbSogTWFrZUxpbmVhck91dHB1dFN0 cmVhbSgKKysgICAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKysgICAgICBjb25z dCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSBvdmVycmlkZTsKKysgIEF1ZGlvT3V0cHV0U3Ry ZWFtKiBNYWtlTG93TGF0ZW5jeU91dHB1dFN0cmVhbSgKKysgICAgICBjb25zdCBBdWRpb1BhcmFt ZXRlcnMmIHBhcmFtcywKKysgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkLAorKyAg ICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIG92ZXJyaWRlOworKyAgQXVkaW9J bnB1dFN0cmVhbSogTWFrZUxpbmVhcklucHV0U3RyZWFtKAorKyAgICAgIGNvbnN0IEF1ZGlvUGFy YW1ldGVycyYgcGFyYW1zLAorKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCisr ICAgICAgY29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgb3ZlcnJpZGU7CisrICBBdWRp b0lucHV0U3RyZWFtKiBNYWtlTG93TGF0ZW5jeUlucHV0U3RyZWFtKAorKyAgICAgIGNvbnN0IEF1 ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2Vf aWQsCisrICAgICAgY29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgb3ZlcnJpZGU7Cisr CisrIHByb3RlY3RlZDoKKysgIEF1ZGlvUGFyYW1ldGVycyBHZXRQcmVmZXJyZWRPdXRwdXRTdHJl YW1QYXJhbWV0ZXJzKAorKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZGV2aWNlX2lk LAorKyAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgaW5wdXRfcGFyYW1zKSBvdmVycmlkZTsK KysKKysgcHJpdmF0ZToKKysgIC8vIENhbGxlZCBieSBNYWtlTGluZWFyT3V0cHV0U3RyZWFtIGFu ZCBNYWtlTG93TGF0ZW5jeU91dHB1dFN0cmVhbS4KKysgIEF1ZGlvT3V0cHV0U3RyZWFtKiBNYWtl T3V0cHV0U3RyZWFtKGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKTsKKysgIEF1ZGlvSW5w dXRTdHJlYW0qIE1ha2VJbnB1dFN0cmVhbShjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcyk7 CisrCisrICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oQXVkaW9NYW5hZ2VyU25kaW8pOworK307 CisrCisrfSAgLy8gbmFtZXNwYWNlIG1lZGlhCisrCisrI2VuZGlmICAvLyBNRURJQV9BVURJT19T TkRJT19BVURJT19NQU5BR0VSX1NORElPX0hfCistLS0gL2Rldi9udWxsCisrKysgcXQ2LXdlYmVu Z2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvYXVkaW8vc25kaW8vc25kaW9f aW5wdXQuY2MKK0BAIC0wLDAgKzEsMjAwIEBACisrLy8gQ29weXJpZ2h0IDIwMTMgVGhlIENocm9t aXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrLy8gVXNlIG9mIHRoaXMgc291cmNl IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorKy8v IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisrCisrI2luY2x1ZGUgImJhc2UvYmluZC5oIgor KyNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKKysjaW5jbHVkZSAiYmFzZS9tYWNyb3MuaCIKKysj aW5jbHVkZSAibWVkaWEvYmFzZS9hdWRpb190aW1lc3RhbXBfaGVscGVyLmgiCisrI2luY2x1ZGUg Im1lZGlhL2F1ZGlvL3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uaCIKKysjaW5jbHVkZSAibWVk aWEvYXVkaW8vYXVkaW9fbWFuYWdlci5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9z bmRpb19pbnB1dC5oIgorKworK25hbWVzcGFjZSBtZWRpYSB7CisrCisrc3RhdGljIGNvbnN0IFNh bXBsZUZvcm1hdCBrU2FtcGxlRm9ybWF0ID0ga1NhbXBsZUZvcm1hdFMxNjsKKysKKyt2b2lkIFNu ZGlvQXVkaW9JbnB1dFN0cmVhbTo6T25Nb3ZlQ2FsbGJhY2sodm9pZCAqYXJnLCBpbnQgZGVsdGEp CisreworKyAgU25kaW9BdWRpb0lucHV0U3RyZWFtKiBzZWxmID0gc3RhdGljX2Nhc3Q8U25kaW9B dWRpb0lucHV0U3RyZWFtKj4oYXJnKTsKKysKKysgIHNlbGYtPmh3X2RlbGF5ICs9IGRlbHRhOwor K30KKysKKyt2b2lkICpTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlRocmVhZEVudHJ5KHZvaWQgKmFy ZykgeworKyAgU25kaW9BdWRpb0lucHV0U3RyZWFtKiBzZWxmID0gc3RhdGljX2Nhc3Q8U25kaW9B dWRpb0lucHV0U3RyZWFtKj4oYXJnKTsKKysKKysgIHNlbGYtPlRocmVhZExvb3AoKTsKKysgIHJl dHVybiBOVUxMOworK30KKysKKytTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlNuZGlvQXVkaW9JbnB1 dFN0cmVhbShBdWRpb01hbmFnZXJCYXNlKiBtYW5hZ2VyLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfbmFtZSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRp b1BhcmFtZXRlcnMmIHBhcmFtcykKKysgICAgOiBtYW5hZ2VyKG1hbmFnZXIpLAorKyAgICAgIHBh cmFtcyhwYXJhbXMpLAorKyAgICAgIGF1ZGlvX2J1cyhBdWRpb0J1czo6Q3JlYXRlKHBhcmFtcykp LAorKyAgICAgIHN0YXRlKGtDbG9zZWQpIHsKKyt9CisrCisrU25kaW9BdWRpb0lucHV0U3RyZWFt Ojp+U25kaW9BdWRpb0lucHV0U3RyZWFtKCkgeworKyAgaWYgKHN0YXRlICE9IGtDbG9zZWQpCisr ICAgIENsb3NlKCk7CisrfQorKworK2Jvb2wgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpPcGVuKCkg eworKyAgc3RydWN0IHNpb19wYXIgcGFyOworKyAgaW50IHNpZzsKKysKKysgIGlmIChzdGF0ZSAh PSBrQ2xvc2VkKQorKyAgICByZXR1cm4gZmFsc2U7CisrCisrICBpZiAocGFyYW1zLmZvcm1hdCgp ICE9IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xJTkVBUiAmJgorKyAgICAgIHBhcmFtcy5m b3JtYXQoKSAhPSBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSkgeworKyAg ICBMT0coV0FSTklORykgPDwgIlVuc3VwcG9ydGVkIGF1ZGlvIGZvcm1hdC4iOworKyAgICByZXR1 cm4gZmFsc2U7CisrICB9CisrCisrICBzaW9faW5pdHBhcigmcGFyKTsKKysgIHBhci5yYXRlID0g cGFyYW1zLnNhbXBsZV9yYXRlKCk7CisrICBwYXIucmNoYW4gPSBwYXJhbXMuY2hhbm5lbHMoKTsK KysgIHBhci5iaXRzID0gU2FtcGxlRm9ybWF0VG9CaXRzUGVyQ2hhbm5lbChrU2FtcGxlRm9ybWF0 KTsKKysgIHBhci5icHMgPSBwYXIuYml0cyAvIDg7CisrICBwYXIuc2lnID0gc2lnID0gcGFyLmJp dHMgIT0gOCA/IDEgOiAwOworKyAgcGFyLmxlID0gU0lPX0xFX05BVElWRTsKKysgIHBhci5hcHBi dWZzeiA9IHBhcmFtcy5mcmFtZXNfcGVyX2J1ZmZlcigpOworKworKyAgaGRsID0gc2lvX29wZW4o U0lPX0RFVkFOWSwgU0lPX1JFQywgMCk7CisrCisrICBpZiAoaGRsID09IE5VTEwpIHsKKysgICAg TE9HKEVSUk9SKSA8PCAiQ291bGRuJ3Qgb3BlbiBhdWRpbyBkZXZpY2UuIjsKKysgICAgcmV0dXJu IGZhbHNlOworKyAgfQorKworKyAgaWYgKCFzaW9fc2V0cGFyKGhkbCwgJnBhcikgfHwgIXNpb19n ZXRwYXIoaGRsLCAmcGFyKSkgeworKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4ndCBzZXQgYXVk aW8gcGFyYW1ldGVycy4iOworKyAgICBnb3RvIGJhZF9jbG9zZTsKKysgIH0KKysKKysgIGlmIChw YXIucmF0ZSAgIT0gKHVuc2lnbmVkIGludClwYXJhbXMuc2FtcGxlX3JhdGUoKSB8fAorKyAgICAg IHBhci5yY2hhbiAhPSAodW5zaWduZWQgaW50KXBhcmFtcy5jaGFubmVscygpIHx8CisrICAgICAg cGFyLmJpdHMgICE9ICh1bnNpZ25lZCBpbnQpU2FtcGxlRm9ybWF0VG9CaXRzUGVyQ2hhbm5lbChr U2FtcGxlRm9ybWF0KSB8fAorKyAgICAgIHBhci5zaWcgICAhPSAodW5zaWduZWQgaW50KXNpZyB8 fAorKyAgICAgIChwYXIuYnBzID4gMSAmJiBwYXIubGUgIT0gU0lPX0xFX05BVElWRSkgfHwKKysg ICAgICAocGFyLmJpdHMgIT0gcGFyLmJwcyAqIDgpKSB7CisrICAgIExPRyhFUlJPUikgPDwgIlVu c3VwcG9ydGVkIGF1ZGlvIHBhcmFtZXRlcnMuIjsKKysgICAgZ290byBiYWRfY2xvc2U7CisrICB9 CisrICBzdGF0ZSA9IGtTdG9wcGVkOworKyAgYnVmZmVyID0gbmV3IGNoYXJbYXVkaW9fYnVzLT5m cmFtZXMoKSAqIHBhcmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpXTsKKysgIHNp b19vbm1vdmUoaGRsLCAmT25Nb3ZlQ2FsbGJhY2ssIHRoaXMpOworKyAgcmV0dXJuIHRydWU7Cisr YmFkX2Nsb3NlOgorKyAgc2lvX2Nsb3NlKGhkbCk7CisrICByZXR1cm4gZmFsc2U7CisrfQorKwor K3ZvaWQgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpTdGFydChBdWRpb0lucHV0Q2FsbGJhY2sqIGNi KSB7CisrCisrICBTdGFydEFnYygpOworKworKyAgc3RhdGUgPSBrUnVubmluZzsKKysgIGh3X2Rl bGF5ID0gMDsKKysgIGNhbGxiYWNrID0gY2I7CisrICBzaW9fc3RhcnQoaGRsKTsKKysgIGlmIChw dGhyZWFkX2NyZWF0ZSgmdGhyZWFkLCBOVUxMLCAmVGhyZWFkRW50cnksIHRoaXMpICE9IDApIHsK KysgICAgTE9HKEVSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSByZWFsLXRpbWUgdGhyZWFkIGZv ciByZWNvcmRpbmcuIjsKKysgICAgc2lvX3N0b3AoaGRsKTsKKysgICAgc3RhdGUgPSBrU3RvcHBl ZDsKKysgIH0KKyt9CisrCisrdm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlN0b3AoKSB7Cisr CisrICBpZiAoc3RhdGUgPT0ga1N0b3BwZWQpCisrICAgIHJldHVybjsKKysKKysgIHN0YXRlID0g a1N0b3BXYWl0OworKyAgcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7CisrICBzaW9fc3RvcCho ZGwpOworKyAgc3RhdGUgPSBrU3RvcHBlZDsKKysKKysgIFN0b3BBZ2MoKTsKKyt9CisrCisrdm9p ZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OkNsb3NlKCkgeworKworKyAgaWYgKHN0YXRlID09IGtD bG9zZWQpCisrICAgIHJldHVybjsKKysKKysgIGlmIChzdGF0ZSA9PSBrUnVubmluZykKKysgICAg U3RvcCgpOworKworKyAgc3RhdGUgPSBrQ2xvc2VkOworKyAgZGVsZXRlIFtdIGJ1ZmZlcjsKKysg IHNpb19jbG9zZShoZGwpOworKworKyAgbWFuYWdlci0+UmVsZWFzZUlucHV0U3RyZWFtKHRoaXMp OworK30KKysKKytkb3VibGUgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpHZXRNYXhWb2x1bWUoKSB7 CisrICAvLyBOb3Qgc3VwcG9ydGVkCisrICByZXR1cm4gMC4wOworK30KKysKKyt2b2lkIFNuZGlv QXVkaW9JbnB1dFN0cmVhbTo6U2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUpIHsKKysgIC8vIE5vdCBz dXBwb3J0ZWQuIERvIG5vdGhpbmcuCisrfQorKworK2RvdWJsZSBTbmRpb0F1ZGlvSW5wdXRTdHJl YW06OkdldFZvbHVtZSgpIHsKKysgIC8vIE5vdCBzdXBwb3J0ZWQuCisrICByZXR1cm4gMC4wOwor K30KKysKKytib29sIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6SXNNdXRlZCgpIHsKKysgIC8vIE5v dCBzdXBwb3J0ZWQuCisrICByZXR1cm4gZmFsc2U7CisrfQorKworK3ZvaWQgU25kaW9BdWRpb0lu cHV0U3RyZWFtOjpTZXRPdXRwdXREZXZpY2VGb3JBZWMoCisrICAgIGNvbnN0IHN0ZDo6c3RyaW5n JiBvdXRwdXRfZGV2aWNlX2lkKSB7CisrICAvLyBOb3Qgc3VwcG9ydGVkLgorK30KKysKKyt2b2lk IFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6VGhyZWFkTG9vcCh2b2lkKSB7CisrICBzaXplX3QgdG9k bywgbjsKKysgIGNoYXIgKmRhdGE7CisrICB1bnNpZ25lZCBpbnQgbmZyYW1lczsKKysgIGRvdWJs ZSBub3JtYWxpemVkX3ZvbHVtZSA9IDAuMDsKKysKKysgIG5mcmFtZXMgPSBhdWRpb19idXMtPmZy YW1lcygpOworKworKyAgd2hpbGUgKHN0YXRlID09IGtSdW5uaW5nICYmICFzaW9fZW9mKGhkbCkp IHsKKysKKysgICAgR2V0QWdjVm9sdW1lKCZub3JtYWxpemVkX3ZvbHVtZSk7CisrCisrICAgIC8v IHJlYWQgb25lIGJsb2NrCisrICAgIHRvZG8gPSBuZnJhbWVzICogcGFyYW1zLkdldEJ5dGVzUGVy RnJhbWUoa1NhbXBsZUZvcm1hdCk7CisrICAgIGRhdGEgPSBidWZmZXI7CisrICAgIHdoaWxlICh0 b2RvID4gMCkgeworKyAgICAgIG4gPSBzaW9fcmVhZChoZGwsIGRhdGEsIHRvZG8pOworKyAgICAg IGlmIChuID09IDApCisrICAgICAgICByZXR1cm47CS8vIHVucmVjb3ZlcmFibGUgSS9PIGVycm9y CisrICAgICAgdG9kbyAtPSBuOworKyAgICAgIGRhdGEgKz0gbjsKKysgICAgfQorKyAgICBod19k ZWxheSAtPSBuZnJhbWVzOworKworKyAgICAvLyBjb252ZXJ0IGZyYW1lcyBjb3VudCB0byBUaW1l RGVsdGEKKysgICAgY29uc3QgYmFzZTo6VGltZURlbHRhIGRlbGF5ID0gQXVkaW9UaW1lc3RhbXBI ZWxwZXI6OkZyYW1lc1RvVGltZShod19kZWxheSwKKysgICAgICBwYXJhbXMuc2FtcGxlX3JhdGUo KSk7CisrCisrICAgIC8vIHB1c2ggaW50byBidXMKKysgICAgYXVkaW9fYnVzLT5Gcm9tSW50ZXJs ZWF2ZWQ8U2lnbmVkSW50MTZTYW1wbGVUeXBlVHJhaXRzPihyZWludGVycHJldF9jYXN0PGludDE2 X3QqPihidWZmZXIpLCBuZnJhbWVzKTsKKysKKysgICAgLy8gaW52b2tlIGNhbGxiYWNrCisrICAg IGNhbGxiYWNrLT5PbkRhdGEoYXVkaW9fYnVzLmdldCgpLCBiYXNlOjpUaW1lVGlja3M6Ok5vdygp IC0gZGVsYXksIDEuKTsKKysgIH0KKyt9CisrCisrfSAgLy8gbmFtZXNwYWNlIG1lZGlhCistLS0g L2Rldi9udWxsCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0v bWVkaWEvYXVkaW8vc25kaW8vc25kaW9faW5wdXQuaAorQEAgLTAsMCArMSw5MSBAQAorKy8vIENv cHlyaWdodCAyMDEzIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp Y2Vuc2UgdGhhdCBjYW4gYmUKKysvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorKworKyNp Zm5kZWYgTUVESUFfQVVESU9fU05ESU9fU05ESU9fSU5QVVRfSF8KKysjZGVmaW5lIE1FRElBX0FV RElPX1NORElPX1NORElPX0lOUFVUX0hfCisrCisrI2luY2x1ZGUgPHN0ZGludC5oPgorKyNpbmNs dWRlIDxzdHJpbmc+CisrI2luY2x1ZGUgPHNuZGlvLmg+CisrCisrI2luY2x1ZGUgImJhc2UvY29t cGlsZXJfc3BlY2lmaWMuaCIKKysjaW5jbHVkZSAiYmFzZS9tYWNyb3MuaCIKKysjaW5jbHVkZSAi YmFzZS9tZW1vcnkvd2Vha19wdHIuaCIKKysjaW5jbHVkZSAiYmFzZS90aW1lL3RpbWUuaCIKKysj aW5jbHVkZSAibWVkaWEvYXVkaW8vYWdjX2F1ZGlvX3N0cmVhbS5oIgorKyNpbmNsdWRlICJtZWRp YS9hdWRpby9hdWRpb19pby5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9hdWRpb19kZXZpY2Vf ZGVzY3JpcHRpb24uaCIKKysjaW5jbHVkZSAibWVkaWEvYmFzZS9hdWRpb19wYXJhbWV0ZXJzLmgi CisrCisrbmFtZXNwYWNlIG1lZGlhIHsKKysKKytjbGFzcyBBdWRpb01hbmFnZXJCYXNlOworKwor Ky8vIEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvT3V0cHV0U3RyZWFtIHVzaW5nIHNuZGlvKDcpCisr Y2xhc3MgU25kaW9BdWRpb0lucHV0U3RyZWFtIDogcHVibGljIEFnY0F1ZGlvU3RyZWFtPEF1ZGlv SW5wdXRTdHJlYW0+IHsKKysgcHVibGljOgorKyAgLy8gUGFzcyB0aGlzIHRvIHRoZSBjb25zdHJ1 Y3RvciBpZiB5b3Ugd2FudCB0byBhdHRlbXB0IGF1dG8tc2VsZWN0aW9uCisrICAvLyBvZiB0aGUg YXVkaW8gcmVjb3JkaW5nIGRldmljZS4KKysgIHN0YXRpYyBjb25zdCBjaGFyIGtBdXRvU2VsZWN0 RGV2aWNlW107CisrCisrICAvLyBDcmVhdGUgYSBQQ00gT3V0cHV0IHN0cmVhbSBmb3IgdGhlIFNO RElPIGRldmljZSBpZGVudGlmaWVkIGJ5CisrICAvLyB8ZGV2aWNlX25hbWV8LiBJZiB1bnN1cmUg b2Ygd2hhdCB0byB1c2UgZm9yIHxkZXZpY2VfbmFtZXwsIHVzZQorKyAgLy8gfGtBdXRvU2VsZWN0 RGV2aWNlfC4KKysgIFNuZGlvQXVkaW9JbnB1dFN0cmVhbShBdWRpb01hbmFnZXJCYXNlKiBhdWRp b19tYW5hZ2VyLAorKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZp Y2VfbmFtZSwKKysgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBh cmFtcyk7CisrCisrICB+U25kaW9BdWRpb0lucHV0U3RyZWFtKCkgb3ZlcnJpZGU7CisrCisrICAv LyBJbXBsZW1lbnRhdGlvbiBvZiBBdWRpb0lucHV0U3RyZWFtLgorKyAgYm9vbCBPcGVuKCkgb3Zl cnJpZGU7CisrICB2b2lkIFN0YXJ0KEF1ZGlvSW5wdXRDYWxsYmFjayogY2FsbGJhY2spIG92ZXJy aWRlOworKyAgdm9pZCBTdG9wKCkgb3ZlcnJpZGU7CisrICB2b2lkIENsb3NlKCkgb3ZlcnJpZGU7 CisrICBkb3VibGUgR2V0TWF4Vm9sdW1lKCkgb3ZlcnJpZGU7CisrICB2b2lkIFNldFZvbHVtZShk b3VibGUgdm9sdW1lKSBvdmVycmlkZTsKKysgIGRvdWJsZSBHZXRWb2x1bWUoKSBvdmVycmlkZTsK KysgIGJvb2wgSXNNdXRlZCgpIG92ZXJyaWRlOworKyAgdm9pZCBTZXRPdXRwdXREZXZpY2VGb3JB ZWMoY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9kZXZpY2VfaWQpIG92ZXJyaWRlOworKworKyBw cml2YXRlOgorKworKyAgZW51bSBTdHJlYW1TdGF0ZSB7CisrICAgIGtDbG9zZWQsICAgICAgICAg ICAgLy8gTm90IG9wZW5lZCB5ZXQKKysgICAga1N0b3BwZWQsICAgICAgICAgICAvLyBEZXZpY2Ug b3BlbmVkLCBidXQgbm90IHN0YXJ0ZWQgeWV0CisrICAgIGtSdW5uaW5nLCAgICAgICAgICAgLy8g U3RhcnRlZCwgZGV2aWNlIHBsYXlpbmcKKysgICAga1N0b3BXYWl0ICAgICAgICAgICAvLyBTdG9w cGluZywgd2FpdGluZyBmb3IgdGhlIHJlYWwtdGltZSB0aHJlYWQgdG8gZXhpdAorKyAgfTsKKysK KysgIC8vIEMtc3R5bGUgY2FsbC1iYWNrcworKyAgc3RhdGljIHZvaWQgT25Nb3ZlQ2FsbGJhY2so dm9pZCAqYXJnLCBpbnQgZGVsdGEpOworKyAgc3RhdGljIHZvaWQqIFRocmVhZEVudHJ5KHZvaWQg KmFyZyk7CisrCisrICAvLyBDb250aW51b3VzbHkgbW92ZXMgZGF0YSBmcm9tIHRoZSBkZXZpY2Ug dG8gdGhlIGNvbnN1bWVyCisrICB2b2lkIFRocmVhZExvb3AoKTsKKysgIC8vIE91ciBjcmVhdG9y LCB0aGUgYXVkaW8gbWFuYWdlciBuZWVkcyB0byBiZSBub3RpZmllZCB3aGVuIHdlIGNsb3NlLgor KyAgQXVkaW9NYW5hZ2VyQmFzZSogbWFuYWdlcjsKKysgIC8vIFBhcmFtZXRlcnMgb2YgdGhlIHNv dXJjZQorKyAgQXVkaW9QYXJhbWV0ZXJzIHBhcmFtczsKKysgIC8vIFdlIHN0b3JlIGRhdGEgaGVy ZSBmb3IgY29uc3VtZXIKKysgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0J1cz4gYXVkaW9fYnVzOwor KyAgLy8gQ2FsbC1iYWNrIHRoYXQgY29uc3VtZXMgcmVjb3JkZWQgZGF0YQorKyAgQXVkaW9JbnB1 dENhbGxiYWNrKiBjYWxsYmFjazsgIC8vIFZhbGlkIGR1cmluZyBhIHJlY29yZGluZyBzZXNzaW9u LgorKyAgLy8gSGFuZGxlIG9mIHRoZSBhdWRpbyBkZXZpY2UKKysgIHN0cnVjdCBzaW9faGRsKiBo ZGw7CisrICAvLyBDdXJyZW50IHN0YXRlIG9mIHRoZSBzdHJlYW0KKysgIGVudW0gU3RyZWFtU3Rh dGUgc3RhdGU7CisrICAvLyBIaWdoIHByaW9yaXR5IHRocmVhZCBydW5uaW5nIFRocmVhZExvb3Ao KQorKyAgcHRocmVhZF90IHRocmVhZDsKKysgIC8vIE51bWJlciBvZiBmcmFtZXMgYnVmZmVyZWQg aW4gdGhlIGhhcmR3YXJlCisrICBpbnQgaHdfZGVsYXk7CisrICAvLyBUZW1wb3JhcnkgYnVmZmVy IHdoZXJlIGRhdGEgaXMgc3RvcmVkIHNuZGlvLWNvbXBhdGlibGUgZm9ybWF0CisrICBjaGFyKiBi dWZmZXI7CisrCisrICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oU25kaW9BdWRpb0lucHV0U3Ry ZWFtKTsKKyt9OworKworK30gIC8vIG5hbWVzcGFjZSBtZWRpYQorKworKyNlbmRpZiAgLy8gTUVE SUFfQVVESU9fU05ESU9fU05ESU9fSU5QVVRfSF8KKy0tLSAvZGV2L251bGwKKysrKyBxdDYtd2Vi ZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9hdWRpby9zbmRpby9zbmRp b19vdXRwdXQuY2MKK0BAIC0wLDAgKzEsMTgzIEBACisrLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRo ZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKy8vIFVzZSBvZiB0aGlz IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g YmUKKysvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorKworKyNpbmNsdWRlICJiYXNlL2xv Z2dpbmcuaCIKKysjaW5jbHVkZSAiYmFzZS90aW1lL3RpbWUuaCIKKysjaW5jbHVkZSAiYmFzZS90 aW1lL2RlZmF1bHRfdGlja19jbG9jay5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9hdWRpb19t YW5hZ2VyX2Jhc2UuaCIKKysjaW5jbHVkZSAibWVkaWEvYmFzZS9hdWRpb190aW1lc3RhbXBfaGVs cGVyLmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX291dHB1dC5oIgorKwor K25hbWVzcGFjZSBtZWRpYSB7CisrCisrc3RhdGljIGNvbnN0IFNhbXBsZUZvcm1hdCBrU2FtcGxl Rm9ybWF0ID0ga1NhbXBsZUZvcm1hdFMxNjsKKysKKyt2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJl YW06Ok9uTW92ZUNhbGxiYWNrKHZvaWQgKmFyZywgaW50IGRlbHRhKSB7CisrICBTbmRpb0F1ZGlv T3V0cHV0U3RyZWFtKiBzZWxmID0gc3RhdGljX2Nhc3Q8U25kaW9BdWRpb091dHB1dFN0cmVhbSo+ KGFyZyk7CisrCisrICBzZWxmLT5od19kZWxheSAtPSBkZWx0YTsKKyt9CisrCisrdm9pZCBTbmRp b0F1ZGlvT3V0cHV0U3RyZWFtOjpPblZvbENhbGxiYWNrKHZvaWQgKmFyZywgdW5zaWduZWQgaW50 IHZvbCkgeworKyAgU25kaW9BdWRpb091dHB1dFN0cmVhbSogc2VsZiA9IHN0YXRpY19jYXN0PFNu ZGlvQXVkaW9PdXRwdXRTdHJlYW0qPihhcmcpOworKworKyAgc2VsZi0+dm9sID0gdm9sOworK30K KysKKyt2b2lkICpTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpUaHJlYWRFbnRyeSh2b2lkICphcmcp IHsKKysgIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0qIHNlbGYgPSBzdGF0aWNfY2FzdDxTbmRpb0F1 ZGlvT3V0cHV0U3RyZWFtKj4oYXJnKTsKKysKKysgIHNlbGYtPlRocmVhZExvb3AoKTsKKysgIHJl dHVybiBOVUxMOworK30KKysKKytTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpTbmRpb0F1ZGlvT3V0 cHV0U3RyZWFtKGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2VyQmFzZSogbWFuYWdl cikKKysgICAgOiBtYW5hZ2VyKG1hbmFnZXIpLAorKyAgICAgIHBhcmFtcyhwYXJhbXMpLAorKyAg ICAgIGF1ZGlvX2J1cyhBdWRpb0J1czo6Q3JlYXRlKHBhcmFtcykpLAorKyAgICAgIHN0YXRlKGtD bG9zZWQpLAorKyAgICAgIG11dGV4KFBUSFJFQURfTVVURVhfSU5JVElBTElaRVIpIHsKKyt9Cisr CisrU25kaW9BdWRpb091dHB1dFN0cmVhbTo6flNuZGlvQXVkaW9PdXRwdXRTdHJlYW0oKSB7Cisr ICBpZiAoc3RhdGUgIT0ga0Nsb3NlZCkKKysgICAgQ2xvc2UoKTsKKyt9CisrCisrYm9vbCBTbmRp b0F1ZGlvT3V0cHV0U3RyZWFtOjpPcGVuKCkgeworKyAgc3RydWN0IHNpb19wYXIgcGFyOworKyAg aW50IHNpZzsKKysKKysgIGlmIChwYXJhbXMuZm9ybWF0KCkgIT0gQXVkaW9QYXJhbWV0ZXJzOjpB VURJT19QQ01fTElORUFSICYmCisrICAgICAgcGFyYW1zLmZvcm1hdCgpICE9IEF1ZGlvUGFyYW1l dGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZKSB7CisrICAgIExPRyhXQVJOSU5HKSA8PCAiVW5z dXBwb3J0ZWQgYXVkaW8gZm9ybWF0LiI7CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0KKysgIHNp b19pbml0cGFyKCZwYXIpOworKyAgcGFyLnJhdGUgPSBwYXJhbXMuc2FtcGxlX3JhdGUoKTsKKysg IHBhci5wY2hhbiA9IHBhcmFtcy5jaGFubmVscygpOworKyAgcGFyLmJpdHMgPSBTYW1wbGVGb3Jt YXRUb0JpdHNQZXJDaGFubmVsKGtTYW1wbGVGb3JtYXQpOworKyAgcGFyLmJwcyA9IHBhci5iaXRz IC8gODsKKysgIHBhci5zaWcgPSBzaWcgPSBwYXIuYml0cyAhPSA4ID8gMSA6IDA7CisrICBwYXIu bGUgPSBTSU9fTEVfTkFUSVZFOworKyAgcGFyLmFwcGJ1ZnN6ID0gcGFyYW1zLmZyYW1lc19wZXJf YnVmZmVyKCk7CisrCisrICBoZGwgPSBzaW9fb3BlbihTSU9fREVWQU5ZLCBTSU9fUExBWSwgMCk7 CisrICBpZiAoaGRsID09IE5VTEwpIHsKKysgICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3Qgb3Bl biBhdWRpbyBkZXZpY2UuIjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKyAgaWYgKCFzaW9f c2V0cGFyKGhkbCwgJnBhcikgfHwgIXNpb19nZXRwYXIoaGRsLCAmcGFyKSkgeworKyAgICBMT0co RVJST1IpIDw8ICJDb3VsZG4ndCBzZXQgYXVkaW8gcGFyYW1ldGVycy4iOworKyAgICBnb3RvIGJh ZF9jbG9zZTsKKysgIH0KKysgIGlmIChwYXIucmF0ZSAgIT0gKHVuc2lnbmVkIGludClwYXJhbXMu c2FtcGxlX3JhdGUoKSB8fAorKyAgICAgIHBhci5wY2hhbiAhPSAodW5zaWduZWQgaW50KXBhcmFt cy5jaGFubmVscygpIHx8CisrICAgICAgcGFyLmJpdHMgICE9ICh1bnNpZ25lZCBpbnQpU2FtcGxl Rm9ybWF0VG9CaXRzUGVyQ2hhbm5lbChrU2FtcGxlRm9ybWF0KSB8fAorKyAgICAgIHBhci5zaWcg ICAhPSAodW5zaWduZWQgaW50KXNpZyB8fAorKyAgICAgIChwYXIuYnBzID4gMSAmJiBwYXIubGUg IT0gU0lPX0xFX05BVElWRSkgfHwKKysgICAgICAocGFyLmJpdHMgIT0gcGFyLmJwcyAqIDgpKSB7 CisrICAgIExPRyhFUlJPUikgPDwgIlVuc3VwcG9ydGVkIGF1ZGlvIHBhcmFtZXRlcnMuIjsKKysg ICAgZ290byBiYWRfY2xvc2U7CisrICB9CisrICBzdGF0ZSA9IGtTdG9wcGVkOworKyAgdm9scGVu ZGluZyA9IDA7CisrICB2b2wgPSAwOworKyAgYnVmZmVyID0gbmV3IGNoYXJbYXVkaW9fYnVzLT5m cmFtZXMoKSAqIHBhcmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpXTsKKysgIHNp b19vbm1vdmUoaGRsLCAmT25Nb3ZlQ2FsbGJhY2ssIHRoaXMpOworKyAgc2lvX29udm9sKGhkbCwg Jk9uVm9sQ2FsbGJhY2ssIHRoaXMpOworKyAgcmV0dXJuIHRydWU7CisrIGJhZF9jbG9zZToKKysg IHNpb19jbG9zZShoZGwpOworKyAgcmV0dXJuIGZhbHNlOworK30KKysKKyt2b2lkIFNuZGlvQXVk aW9PdXRwdXRTdHJlYW06OkNsb3NlKCkgeworKyAgaWYgKHN0YXRlID09IGtDbG9zZWQpCisrICAg IHJldHVybjsKKysgIGlmIChzdGF0ZSA9PSBrUnVubmluZykKKysgICAgU3RvcCgpOworKyAgc3Rh dGUgPSBrQ2xvc2VkOworKyAgZGVsZXRlIFtdIGJ1ZmZlcjsKKysgIHNpb19jbG9zZShoZGwpOwor KyAgbWFuYWdlci0+UmVsZWFzZU91dHB1dFN0cmVhbSh0aGlzKTsgIC8vIENhbGxzIHRoZSBkZXN0 cnVjdG9yCisrfQorKworK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6U3RhcnQoQXVkaW9T b3VyY2VDYWxsYmFjayogY2FsbGJhY2spIHsKKysgIHN0YXRlID0ga1J1bm5pbmc7CisrICBod19k ZWxheSA9IDA7CisrICBzb3VyY2UgPSBjYWxsYmFjazsKKysgIHNpb19zdGFydChoZGwpOworKyAg aWYgKHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWQsIE5VTEwsICZUaHJlYWRFbnRyeSwgdGhpcykgIT0g MCkgeworKyAgICBMT0coRVJST1IpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIHJlYWwtdGltZSB0aHJl YWQuIjsKKysgICAgc2lvX3N0b3AoaGRsKTsKKysgICAgc3RhdGUgPSBrU3RvcHBlZDsKKysgIH0K Kyt9CisrCisrdm9pZCBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpTdG9wKCkgeworKyAgaWYgKHN0 YXRlID09IGtTdG9wcGVkKQorKyAgICByZXR1cm47CisrICBzdGF0ZSA9IGtTdG9wV2FpdDsKKysg IHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpOworKyAgc2lvX3N0b3AoaGRsKTsKKysgIHN0YXRl ID0ga1N0b3BwZWQ7CisrfQorKworK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6U2V0Vm9s dW1lKGRvdWJsZSB2KSB7CisrICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4KTsKKysgIHZvbCA9 IHYgKiBTSU9fTUFYVk9MOworKyAgdm9scGVuZGluZyA9IDE7CisrICBwdGhyZWFkX211dGV4X3Vu bG9jaygmbXV0ZXgpOworK30KKysKKyt2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OkdldFZv bHVtZShkb3VibGUqIHYpIHsKKysgIHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgpOworKyAgKnYg PSB2b2wgKiAoMS4gLyBTSU9fTUFYVk9MKTsKKysgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRl eCk7CisrfQorKworKy8vIFRoaXMgc3RyZWFtIGlzIGFsd2F5cyB1c2VkIHdpdGggc3ViIHNlY29u ZCBidWZmZXIgc2l6ZXMsIHdoZXJlIGl0J3MKKysvLyBzdWZmaWNpZW50IHRvIHNpbXBseSBhbHdh eXMgZmx1c2ggdXBvbiBTdGFydCgpLgorK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6Rmx1 c2goKSB7fQorKworK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6VGhyZWFkTG9vcCh2b2lk KSB7CisrICBpbnQgYXZhaWwsIGNvdW50LCByZXN1bHQ7CisrCisrICB3aGlsZSAoc3RhdGUgPT0g a1J1bm5pbmcpIHsKKysgICAgLy8gVXBkYXRlIHZvbHVtZSBpZiBuZWVkZWQKKysgICAgcHRocmVh ZF9tdXRleF9sb2NrKCZtdXRleCk7CisrICAgIGlmICh2b2xwZW5kaW5nKSB7CisrICAgICAgdm9s cGVuZGluZyA9IDA7CisrICAgICAgc2lvX3NldHZvbChoZGwsIHZvbCk7CisrICAgIH0KKysgICAg cHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKKysKKysgICAgLy8gR2V0IGRhdGEgdG8gcGxh eQorKyAgICBjb25zdCBiYXNlOjpUaW1lRGVsdGEgZGVsYXkgPSBBdWRpb1RpbWVzdGFtcEhlbHBl cjo6RnJhbWVzVG9UaW1lKGh3X2RlbGF5LAorKwlwYXJhbXMuc2FtcGxlX3JhdGUoKSk7CisrICAg IGNvdW50ID0gc291cmNlLT5Pbk1vcmVEYXRhKGRlbGF5LCBiYXNlOjpUaW1lVGlja3M6Ok5vdygp LCAwLCBhdWRpb19idXMuZ2V0KCkpOworKyAgICBhdWRpb19idXMtPlRvSW50ZXJsZWF2ZWQ8U2ln bmVkSW50MTZTYW1wbGVUeXBlVHJhaXRzPihjb3VudCwgcmVpbnRlcnByZXRfY2FzdDxpbnQxNl90 Kj4oYnVmZmVyKSk7CisrICAgIGlmIChjb3VudCA9PSAwKSB7CisrICAgICAgLy8gV2UgaGF2ZSB0 byBzdWJtaXQgc29tZXRoaW5nIHRvIHRoZSBkZXZpY2UKKysgICAgICBjb3VudCA9IGF1ZGlvX2J1 cy0+ZnJhbWVzKCk7CisrICAgICAgbWVtc2V0KGJ1ZmZlciwgMCwgY291bnQgKiBwYXJhbXMuR2V0 Qnl0ZXNQZXJGcmFtZShrU2FtcGxlRm9ybWF0KSk7CisrICAgICAgTE9HKFdBUk5JTkcpIDw8ICJO byBkYXRhIHRvIHBsYXksIHJ1bm5pbmcgZW1wdHkgY3ljbGUuIjsKKysgICAgfQorKworKyAgICAv LyBTdWJtaXQgZGF0YSB0byB0aGUgZGV2aWNlCisrICAgIGF2YWlsID0gY291bnQgKiBwYXJhbXMu R2V0Qnl0ZXNQZXJGcmFtZShrU2FtcGxlRm9ybWF0KTsKKysgICAgcmVzdWx0ID0gc2lvX3dyaXRl KGhkbCwgYnVmZmVyLCBhdmFpbCk7CisrICAgIGlmIChyZXN1bHQgPT0gMCkgeworKyAgICAgIExP RyhXQVJOSU5HKSA8PCAiQXVkaW8gZGV2aWNlIGRpc2Nvbm5lY3RlZC4iOworKyAgICAgIGJyZWFr OworKyAgICB9CisrCisrICAgIC8vIFVwZGF0ZSBoYXJkd2FyZSBwb2ludGVyCisrICAgIGh3X2Rl bGF5ICs9IGNvdW50OworKyAgfQorK30KKysKKyt9ICAvLyBuYW1lc3BhY2UgbWVkaWEKKy0tLSAv ZGV2L251bGwKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9t ZWRpYS9hdWRpby9zbmRpby9zbmRpb19vdXRwdXQuaAorQEAgLTAsMCArMSw4NiBAQAorKy8vIENv cHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysK KysjaWZuZGVmIE1FRElBX0FVRElPX1NORElPX1NORElPX09VVFBVVF9IXworKyNkZWZpbmUgTUVE SUFfQVVESU9fU05ESU9fU05ESU9fT1VUUFVUX0hfCisrCisrI2luY2x1ZGUgPHB0aHJlYWQuaD4K KysjaW5jbHVkZSA8c25kaW8uaD4KKysKKysjaW5jbHVkZSAiYmFzZS90aW1lL3RpY2tfY2xvY2su aCIKKysjaW5jbHVkZSAiYmFzZS90aW1lL3RpbWUuaCIKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8v YXVkaW9faW8uaCIKKysKKytuYW1lc3BhY2UgbWVkaWEgeworKworK2NsYXNzIEF1ZGlvTWFuYWdl ckJhc2U7CisrCisrLy8gSW1wbGVtZW50YXRpb24gb2YgQXVkaW9PdXRwdXRTdHJlYW0gdXNpbmcg c25kaW8oNykKKytjbGFzcyBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtIDogcHVibGljIEF1ZGlvT3V0 cHV0U3RyZWFtIHsKKysgcHVibGljOgorKyAgLy8gVGhlIG1hbmFnZXIgaXMgY3JlYXRpbmcgdGhp cyBvYmplY3QKKysgIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0oY29uc3QgQXVkaW9QYXJhbWV0ZXJz JiBwYXJhbXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlckJhc2UqIG1h bmFnZXIpOworKyAgdmlydHVhbCB+U25kaW9BdWRpb091dHB1dFN0cmVhbSgpOworKworKyAgLy8g SW1wbGVtZW50YXRpb24gb2YgQXVkaW9PdXRwdXRTdHJlYW0uCisrICBib29sIE9wZW4oKSBvdmVy cmlkZTsKKysgIHZvaWQgQ2xvc2UoKSBvdmVycmlkZTsKKysgIHZvaWQgU3RhcnQoQXVkaW9Tb3Vy Y2VDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlOworKyAgdm9pZCBTdG9wKCkgb3ZlcnJpZGU7 CisrICB2b2lkIFNldFZvbHVtZShkb3VibGUgdm9sdW1lKSBvdmVycmlkZTsKKysgIHZvaWQgR2V0 Vm9sdW1lKGRvdWJsZSogdm9sdW1lKSBvdmVycmlkZTsKKysgIHZvaWQgRmx1c2goKSBvdmVycmlk ZTsKKysKKysgIGZyaWVuZCB2b2lkIHNuZGlvX29ubW92ZSh2b2lkICphcmcsIGludCBkZWx0YSk7 CisrICBmcmllbmQgdm9pZCBzbmRpb19vbnZvbCh2b2lkICphcmcsIHVuc2lnbmVkIGludCB2b2wp OworKyAgZnJpZW5kIHZvaWQgKnNuZGlvX3RocmVhZHN0YXJ0KHZvaWQgKmFyZyk7CisrCisrIHBy aXZhdGU6CisrICBlbnVtIFN0cmVhbVN0YXRlIHsKKysgICAga0Nsb3NlZCwgICAgICAgICAgICAv LyBOb3Qgb3BlbmVkIHlldAorKyAgICBrU3RvcHBlZCwgICAgICAgICAgIC8vIERldmljZSBvcGVu ZWQsIGJ1dCBub3Qgc3RhcnRlZCB5ZXQKKysgICAga1J1bm5pbmcsICAgICAgICAgICAvLyBTdGFy dGVkLCBkZXZpY2UgcGxheWluZworKyAgICBrU3RvcFdhaXQgICAgICAgICAgIC8vIFN0b3BwaW5n LCB3YWl0aW5nIGZvciB0aGUgcmVhbC10aW1lIHRocmVhZCB0byBleGl0CisrICB9OworKworKyAg Ly8gQy1zdHlsZSBjYWxsLWJhY2tzCisrICBzdGF0aWMgdm9pZCBPbk1vdmVDYWxsYmFjayh2b2lk ICphcmcsIGludCBkZWx0YSk7CisrICBzdGF0aWMgdm9pZCBPblZvbENhbGxiYWNrKHZvaWQgKmFy ZywgdW5zaWduZWQgaW50IHZvbCk7CisrICBzdGF0aWMgdm9pZCogVGhyZWFkRW50cnkodm9pZCAq YXJnKTsKKysKKysgIC8vIENvbnRpbnVvdXNseSBtb3ZlcyBkYXRhIGZyb20gdGhlIHByb2R1Y2Vy IHRvIHRoZSBkZXZpY2UKKysgIHZvaWQgVGhyZWFkTG9vcCh2b2lkKTsKKysKKysgIC8vIE91ciBj cmVhdG9yLCB0aGUgYXVkaW8gbWFuYWdlciBuZWVkcyB0byBiZSBub3RpZmllZCB3aGVuIHdlIGNs b3NlLgorKyAgQXVkaW9NYW5hZ2VyQmFzZSogbWFuYWdlcjsKKysgIC8vIFBhcmFtZXRlcnMgb2Yg dGhlIHNvdXJjZQorKyAgQXVkaW9QYXJhbWV0ZXJzIHBhcmFtczsKKysgIC8vIFNvdXJjZSBzdG9y ZXMgZGF0YSBoZXJlCisrICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdXM+IGF1ZGlvX2J1czsKKysg IC8vIENhbGwtYmFjayB0aGF0IHByb2R1Y2VzIGRhdGEgdG8gcGxheQorKyAgQXVkaW9Tb3VyY2VD YWxsYmFjayogc291cmNlOworKyAgLy8gSGFuZGxlIG9mIHRoZSBhdWRpbyBkZXZpY2UKKysgIHN0 cnVjdCBzaW9faGRsKiBoZGw7CisrICAvLyBDdXJyZW50IHN0YXRlIG9mIHRoZSBzdHJlYW0KKysg IGVudW0gU3RyZWFtU3RhdGUgc3RhdGU7CisrICAvLyBIaWdoIHByaW9yaXR5IHRocmVhZCBydW5u aW5nIFRocmVhZExvb3AoKQorKyAgcHRocmVhZF90IHRocmVhZDsKKysgIC8vIFByb3RlY3RzIHZv bCwgdm9scGVuZGluZyBhbmQgaHdfZGVsYXkKKysgIHB0aHJlYWRfbXV0ZXhfdCBtdXRleDsKKysg IC8vIEN1cnJlbnQgdm9sdW1lIGluIHRoZSAwLi5TSU9fTUFYVk9MIHJhbmdlCisrICBpbnQgdm9s OworKyAgLy8gU2V0IHRvIDEgaWYgdm9sdW1lcyBtdXN0IGJlIHJlZnJlc2hlZCBpbiB0aGUgcmVh bHRpbWUgdGhyZWFkCisrICBpbnQgdm9scGVuZGluZzsKKysgIC8vIE51bWJlciBvZiBmcmFtZXMg YnVmZmVyZWQgaW4gdGhlIGhhcmR3YXJlCisrICBpbnQgaHdfZGVsYXk7CisrICAvLyBUZW1wb3Jh cnkgYnVmZmVyIHdoZXJlIGRhdGEgaXMgc3RvcmVkIHNuZGlvLWNvbXBhdGlibGUgZm9ybWF0Cisr ICBjaGFyKiBidWZmZXI7CisrCisrICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oU25kaW9BdWRp b091dHB1dFN0cmVhbSk7CisrfTsKKysKKyt9ICAvLyBuYW1lc3BhY2UgbWVkaWEKKysKKysjZW5k aWYgIC8vIE1FRElBX0FVRElPX1NORElPX1NORElPX09VVFBVVF9IXworLS0tIHF0Ni13ZWJlbmdp bmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvbWVkaWFfb3B0aW9ucy5n bmkKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9t ZWRpYV9vcHRpb25zLmduaQorQEAgLTEzMyw2ICsxMzMsOSBAQCBkZWNsYXJlX2FyZ3MoKSB7Cisg ICAjIEVuYWJsZXMgcnVudGltZSBzZWxlY3Rpb24gb2YgQUxTQSBsaWJyYXJ5IGZvciBhdWRpby4K KyAgIHVzZV9hbHNhID0gZmFsc2UKKyAKKysgICMgRW5hYmxlIHJ1bnRpbWUgc2VsZWN0aW9uIG9m IHNuZGlvKDcpCisrICB1c2Vfc25kaW8gPSBmYWxzZQorKworICAgIyBBbHNhIHNob3VsZCBiZSB1 c2VkIG9uIG5vbi1BbmRyb2lkLCBub24tTWFjIFBPU0lYIHN5c3RlbXMuCisgICAjIEFsc2Egc2hv dWxkIGJlIHVzZWQgb24gZGVza3RvcCBDaHJvbWVjYXN0IGFuZCBhdWRpby1vbmx5IENocm9tZWNh c3QgYnVpbGRzLgorICAgaWYgKGlzX3Bvc2l4ICYmICFpc19hbmRyb2lkICYmICFpc19tYWMgJiYK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAzMDAtY2hyb21pdW0t bXVzbC1oYWNrcy5wYXRjaCBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAzMDAtY2hy b21pdW0tbXVzbC1oYWNrcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjUyNWFlYjhhNjNkMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVu Z2luZS9wYXRjaGVzLzAzMDAtY2hyb21pdW0tbXVzbC1oYWNrcy5wYXRjaApAQCAtMCwwICsxLDUy IEBACistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9i YXNlL2RlYnVnL3N0YWNrX3RyYWNlLmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3Jk cGFydHkvY2hyb21pdW0vYmFzZS9kZWJ1Zy9zdGFja190cmFjZS5jYworQEAgLTIzNCw3ICsyMzQs NyBAQCBib29sIFN0YWNrVHJhY2U6OldpbGxTeW1ib2xpemVUb1N0cmVhbUZvCisgICAvLyBTeW1i b2xzIGFyZSBub3QgZXhwZWN0ZWQgdG8gYmUgcmVsaWFibGUgd2hlbiBnbiBhcmdzIHNwZWNpZmll cworICAgLy8gc3ltYm9sX2xldmVsPTAuCisgICByZXR1cm4gZmFsc2U7CistI2VsaWYgZGVmaW5l ZChfX1VDTElCQ19fKSB8fCBkZWZpbmVkKF9BSVgpCisrI2VsaWYgZGVmaW5lZChfX0dMSUJDX18p IHx8IGRlZmluZWQoX0FJWCkKKyAgIC8vIFN0YWNrVHJhY2U6Ok91dHB1dFRvU3RyZWFtKCkgaXMg bm90IGltcGxlbWVudGVkIHVuZGVyIHVjbGliYywgbm9yIEFJWC4KKyAgIC8vIFNlZSBodHRwczov L2NyYnVnLmNvbS83MDY3MjgKKyAgIHJldHVybiBmYWxzZTsKK0BAIC0yNzMsNyArMjczLDkgQEAg dm9pZCBTdGFja1RyYWNlOjpQcmludCgpIGNvbnN0IHsKKyB9CisgCisgdm9pZCBTdGFja1RyYWNl OjpPdXRwdXRUb1N0cmVhbShzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7CisrI2lmIGRlZmluZWQo X19HTElCQ19fKQorICAgT3V0cHV0VG9TdHJlYW1XaXRoUHJlZml4KG9zLCBudWxscHRyKTsKKysj ZW5kaWYKKyB9CisgCisgc3RkOjpzdHJpbmcgU3RhY2tUcmFjZTo6VG9TdHJpbmcoKSBjb25zdCB7 CitAQCAtMjgxLDE0ICsyODMsMTQgQEAgc3RkOjpzdHJpbmcgU3RhY2tUcmFjZTo6VG9TdHJpbmco KSBjb25zdAorIH0KKyBzdGQ6OnN0cmluZyBTdGFja1RyYWNlOjpUb1N0cmluZ1dpdGhQcmVmaXgo Y29uc3QgY2hhciogcHJlZml4X3N0cmluZykgY29uc3QgeworICAgc3RkOjpzdHJpbmdzdHJlYW0g c3RyZWFtOworLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNp ZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyAgIE91dHB1dFRvU3RyZWFt V2l0aFByZWZpeCgmc3RyZWFtLCBwcmVmaXhfc3RyaW5nKTsKKyAjZW5kaWYKKyAgIHJldHVybiBz dHJlYW0uc3RyKCk7CisgfQorIAorIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJl YW0mIG9zLCBjb25zdCBTdGFja1RyYWNlJiBzKSB7CistI2lmICFkZWZpbmVkKF9fVUNMSUJDX18p ICYmICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChf QUlYKQorICAgcy5PdXRwdXRUb1N0cmVhbSgmb3MpOworICNlbHNlCisgICBvcyA8PCAiU3RhY2tU cmFjZTo6T3V0cHV0VG9TdHJlYW0gbm90IGltcGxlbWVudGVkLiI7CistLS0gcXQ2LXdlYmVuZ2lu ZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvc29ja2V0L3VkcF9zb2NrZXRf cG9zaXguY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9u ZXQvc29ja2V0L3VkcF9zb2NrZXRfcG9zaXguY2MKK0BAIC0xMTU3LDcgKzExNTcsMTEgQEAgU2Vu ZFJlc3VsdCBVRFBTb2NrZXRQb3NpeFNlbmRlcjo6SW50ZXJuYQorICAgICBtc2dfaW92LT5wdXNo X2JhY2soe2NvbnN0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5sZW5ndGgo KX0pOworICAgbXNndmVjLT5yZXNlcnZlKGJ1ZmZlcnMuc2l6ZSgpKTsKKyAgIGZvciAoc2l6ZV90 IGogPSAwOyBqIDwgYnVmZmVycy5zaXplKCk7IGorKykKKysjaWZkZWYgX19HTElCQ19fCisgICAg IG1zZ3ZlYy0+cHVzaF9iYWNrKHt7bnVsbHB0ciwgMCwgJm1zZ19pb3Zbal0sIDEsIG51bGxwdHIs IDAsIDB9LCAwfSk7CisrI2Vsc2UKKysgICAgbXNndmVjLT5wdXNoX2JhY2soe3tudWxscHRyLCAw LCAmbXNnX2lvdltqXSwgMSwgMCwgMCwgMH0sIDB9KTsKKysjZW5kaWYKKyAgIGludCByZXN1bHQg PSBIQU5ETEVfRUlOVFIoU2VuZG1tc2coZmQsICZtc2d2ZWNbMF0sIGJ1ZmZlcnMuc2l6ZSgpLCAw KSk7CisgICBTZW5kUmVzdWx0IHNlbmRfcmVzdWx0KDAsIDAsIHN0ZDo6bW92ZShidWZmZXJzKSk7 CisgICBpZiAocmVzdWx0IDwgMCkgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYtd2ViZW5naW5l L3BhdGNoZXMvMDMwMS1jaHJvbWl1bS1tdXNsLXNhbmRib3gucGF0Y2ggYi9zcmNwa2dzL3F0Ni13 ZWJlbmdpbmUvcGF0Y2hlcy8wMzAxLWNocm9taXVtLW11c2wtc2FuZGJveC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRhZmJlYzViOThlZgotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAzMDEtY2hyb21pdW0tbXVz bC1zYW5kYm94LnBhdGNoCkBAIC0wLDAgKzEsODYgQEAKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4y Lm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVs cGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCisrKysgcXQ2LXdlYmVuZ2lu ZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1o ZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MKK0BAIC0xMzQsNiArMTM0 LDcgQEAgbmFtZXNwYWNlIHNhbmRib3ggeworIFJlc3VsdEV4cHIgUmVzdHJpY3RDbG9uZVRvVGhy ZWFkc0FuZEVQRVJNRm9yaygpIHsKKyAgIGNvbnN0IEFyZzx1bnNpZ25lZCBsb25nPiBmbGFncygw KTsKKyAKKysjaWZkZWYgX19HTElCQ19fCisgICAvLyBUT0RPKG1kZW1wc2t5KTogRXh0ZW5kIERT TCB0byBzdXBwb3J0IChmbGFncyAmIH5tYXNrMSkgPT0gbWFzazIuCisgICBjb25zdCB1aW50NjRf dCBrQW5kcm9pZENsb25lTWFzayA9IENMT05FX1ZNIHwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxFUyB8 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT05FX1NJR0hBTkQgfCBD TE9ORV9USFJFQUQgfAorQEAgLTE2MCw2ICsxNjEsMTYgQEAgUmVzdWx0RXhwciBSZXN0cmljdENs b25lVG9UaHJlYWRzQW5kRVBFUgorICAgcmV0dXJuIElmKElzQW5kcm9pZCgpID8gYW5kcm9pZF90 ZXN0IDogZ2xpYmNfdGVzdCwgQWxsb3coKSkKKyAgICAgICAuRWxzZUlmKGlzX2Zvcmtfb3JfY2xv bmVfdmZvcmssIEVycm9yKEVQRVJNKSkKKyAgICAgICAuRWxzZShDcmFzaFNJR1NZU0Nsb25lKCkp OworKyNlbHNlCisrICBjb25zdCBpbnQgcmVxdWlyZWQgPSBDTE9ORV9WTSB8IENMT05FX0ZTIHwg Q0xPTkVfRklMRVMgfCBDTE9ORV9TSUdIQU5EIHwKKysgICAgICAgICAgICAgICAgICAgICAgIENM T05FX1RIUkVBRCB8IENMT05FX1NZU1ZTRU07CisrICBjb25zdCBpbnQgc2FmZSA9IENMT05FX1NF VFRMUyB8IENMT05FX1BBUkVOVF9TRVRUSUQgfCBDTE9ORV9DSElMRF9DTEVBUlRJRCB8CisrICAg ICAgICAgICAgICAgICAgIENMT05FX0RFVEFDSEVEOworKyAgY29uc3QgQm9vbEV4cHIgdGhyZWFk X2Nsb25lX29rID0gKGZsYWdzJn5zYWZlKT09cmVxdWlyZWQ7CisrICByZXR1cm4gSWYodGhyZWFk X2Nsb25lX29rLCBBbGxvdygpKQorKyAgICAgIC5FbHNlSWYoKGZsYWdzICYgKENMT05FX1ZNIHwg Q0xPTkVfVEhSRUFEKSkgPT0gMCwgRXJyb3IoRVBFUk0pKQorKyAgICAgIC5FbHNlKENyYXNoU0lH U1lTQ2xvbmUoKSk7CisrI2VuZGlmCisgfQorIAorICNpZm5kZWYgUFJfUEFDX1JFU0VUX0tFWVMK Ky0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MKKysrKyBxdDYtd2Vi ZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAt YnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCitAQCAtNDI0LDYgKzQyNCw5IEBAIGJvb2wgU3lz Y2FsbFNldHM6OklzQWxsb3dlZFByb2Nlc3NTdGFydE8KKyAjaWYgZGVmaW5lZChfX2kzODZfXykK KyAgICAgY2FzZSBfX05SX3dhaXRwaWQ6CisgI2VuZGlmCisrI2lmICFkZWZpbmVkKF9fR0xJQkNf XykKKysgICAgY2FzZSBfX05SX3NldF90aWRfYWRkcmVzczoKKysjZW5kaWYKKyAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgY2FzZSBfX05SX2Nsb25lOiAgLy8gU2hvdWxkIGJlIHBhcmFtZXRlci1y ZXN0cmljdGVkLgorICAgICBjYXNlIF9fTlJfc2V0bnM6ICAvLyBQcml2aWxlZ2VkLgorQEAgLTQz Niw3ICs0MzksOSBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRQcm9jZXNzU3RhcnRPCisg I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X21pcHNfXykKKyAgICAgY2FzZSBfX05SX3NldF90aHJlYWRfYXJlYToKKyAjZW5kaWYKKysjaWYg ZGVmaW5lZChfX0dMSUJDX18pCisgICAgIGNhc2UgX19OUl9zZXRfdGlkX2FkZHJlc3M6CisrI2Vu ZGlmCisgICAgIGNhc2UgX19OUl91bnNoYXJlOgorICNpZiAhZGVmaW5lZChfX21pcHNfXykgJiYg IWRlZmluZWQoX19hYXJjaDY0X18pCisgICAgIGNhc2UgX19OUl92Zm9yazoKK0BAIC01NTAsNiAr NTU1LDkgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkQWRkcmVzc1NwYWNlQQorICAgICBj YXNlIF9fTlJfbWxvY2s6CisgICAgIGNhc2UgX19OUl9tdW5sb2NrOgorICAgICBjYXNlIF9fTlJf bXVubWFwOgorKyNpZm5kZWYgX19HTElCQ19fCisrICAgIGNhc2UgX19OUl9tcmVtYXA6CisrI2Vu ZGlmCisgICAgICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2UgX19OUl9tYWR2aXNlOgorICAgICBj YXNlIF9fTlJfbWluY29yZToKK0BAIC01NjcsNyArNTc1LDkgQEAgYm9vbCBTeXNjYWxsU2V0czo6 SXNBbGxvd2VkQWRkcmVzc1NwYWNlQQorICAgICBjYXNlIF9fTlJfbW9kaWZ5X2xkdDoKKyAjZW5k aWYKKyAgICAgY2FzZSBfX05SX21wcm90ZWN0OgorKyNpZmRlZiBfX0dMSUJDX18KKyAgICAgY2Fz ZSBfX05SX21yZW1hcDoKKysjZW5kaWYKKyAgICAgY2FzZSBfX05SX21zeW5jOgorICAgICBjYXNl IF9fTlJfbXVubG9ja2FsbDoKKyAgICAgY2FzZSBfX05SX3JlYWRhaGVhZDoKKy0tLSBxdDYtd2Vi ZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvcG9saWN5L2xp bnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4y L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L3BvbGljeS9saW51eC9icGZfcmVuZGVyZXJf cG9saWN5X2xpbnV4LmNjCitAQCAtOTksOSArOTksMTQgQEAgUmVzdWx0RXhwciBSZW5kZXJlclBy b2Nlc3NQb2xpY3k6OkV2YWx1YQorICAgICBjYXNlIF9fTlJfdW5hbWU6CisgICAgIGNhc2UgX19O Ul9zY2hlZF9nZXRwYXJhbToKKyAgICAgY2FzZSBfX05SX3NjaGVkX2dldHNjaGVkdWxlcjoKKysj aWZuZGVmIF9fR0xJQkNfXworKyAgICBjYXNlIF9fTlJfc2NoZWRfc2V0c2NoZWR1bGVyOgorKyNl bmRpZgorICAgICAgIHJldHVybiBBbGxvdygpOworICAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0YWZm aW5pdHk6CisrI2lmZGVmIF9fR0xJQkNfXworICAgICBjYXNlIF9fTlJfc2NoZWRfc2V0c2NoZWR1 bGVyOgorKyNlbmRpZgorICAgICAgIHJldHVybiBSZXN0cmljdFNjaGVkVGFyZ2V0KEdldFBvbGlj eVBpZCgpLCBzeXNubyk7CisgICAgIGNhc2UgX19OUl9wcmxpbWl0NjQ6CisgICAgICAgLy8gU2Vl IGNyYnVnLmNvbS82NjI0NTAgYW5kIHNldHJsaW1pdCBjb21tZW50IGFib3ZlLgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDMwMi1jaHJvbWl1bS1uby1tYWxsaW5m by5wYXRjaCBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzAzMDItY2hyb21pdW0tbm8t bWFsbGluZm8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41 MTk5MzBlN2JlZjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0 Y2hlcy8wMzAyLWNocm9taXVtLW5vLW1hbGxpbmZvLnBhdGNoCkBAIC0wLDAgKzEsNjcgQEAKKy0t LSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvcHJv Y2Vzcy9wcm9jZXNzX21ldHJpY3NfcG9zaXguY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3Byb2Nlc3MvcHJvY2Vzc19tZXRyaWNzX3Bvc2l4LmNj CitAQCAtMTA1LDcgKzEwNSw4IEBAIHZvaWQgSW5jcmVhc2VGZExpbWl0VG8odW5zaWduZWQgaW50 IG1heF8KKyAKKyAjZW5kaWYgIC8vICFCVUlMREZMQUcoSVNfRlVDSFNJQSkKKyAKKy0jaWYgQlVJ TERGTEFHKElTX0xJTlVYKSB8fCBCVUlMREZMQUcoSVNfQ0hST01FT1MpIHx8IEJVSUxERkxBRyhJ U19BTkRST0lEKQorKyNpZiAoQlVJTERGTEFHKElTX0xJTlVYKSAmJiBkZWZpbmVkKF9fR0xJQkNf XykpIHx8IFwKKysJQlVJTERGTEFHKElTX0NIUk9NRU9TKSB8fCBCVUlMREZMQUcoSVNfQU5EUk9J RCkKKyBuYW1lc3BhY2UgeworIAorIHNpemVfdCBHZXRNYWxsb2NVc2FnZU1hbGxpbmZvKCkgewor QEAgLTEyMywxNyArMTI0LDE4IEBAIHNpemVfdCBHZXRNYWxsb2NVc2FnZU1hbGxpbmZvKCkgewor IH0KKyAKKyB9ICAvLyBuYW1lc3BhY2UKKy0jZW5kaWYgIC8vIEJVSUxERkxBRyhJU19MSU5VWCkg fHwgQlVJTERGTEFHKElTX0NIUk9NRU9TKSB8fAorLSAgICAgICAgLy8gQlVJTERGTEFHKElTX0FO RFJPSUQpCisrI2VuZGlmICAvLyAoQlVJTERGTEFHKElTX0xJTlVYKSAmJiBkZWZpbmVkKF9fR0xJ QkNfXykgfHwKKysJLy8gQlVJTERGTEFHKElTX0NIUk9NRU9TKSB8fCBCVUlMREZMQUcoSVNfQU5E Uk9JRCkKKyAKKyBzaXplX3QgUHJvY2Vzc01ldHJpY3M6OkdldE1hbGxvY1VzYWdlKCkgeworICNp ZiBCVUlMREZMQUcoSVNfQVBQTEUpCisgICBtYWxsb2Nfc3RhdGlzdGljc190IHN0YXRzID0gezB9 OworICAgbWFsbG9jX3pvbmVfc3RhdGlzdGljcyhudWxscHRyLCAmc3RhdHMpOworICAgcmV0dXJu IHN0YXRzLnNpemVfaW5fdXNlOworLSNlbGlmIEJVSUxERkxBRyhJU19MSU5VWCkgfHwgQlVJTERG TEFHKElTX0NIUk9NRU9TKSB8fCBCVUlMREZMQUcoSVNfQU5EUk9JRCkKKysjZWxpZiAoQlVJTERG TEFHKElTX0xJTlVYKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykpIHx8IFwKKysJQlVJTERGTEFHKElT X0NIUk9NRU9TKSB8fCBCVUlMREZMQUcoSVNfQU5EUk9JRCkKKyAgIHJldHVybiBHZXRNYWxsb2NV c2FnZU1hbGxpbmZvKCk7CistI2VsaWYgQlVJTERGTEFHKElTX0ZVQ0hTSUEpCisrI2VsaWYgQlVJ TERGTEFHKElTX0ZVQ0hTSUEpIHx8IChCVUlMREZMQUcoSVNfTElOVVgpICYmICFkZWZpbmVkKF9f R0xJQkNfXykpCisgICAvLyBUT0RPKGZ1Y2hzaWEpOiBOb3QgY3VycmVudGx5IGV4cG9zZWQuIGh0 dHBzOi8vY3JidWcuY29tLzczNTA4Ny4KKyAgIHJldHVybiAwOworICNlbmRpZgorLS0tIHF0Ni13 ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS90cmFjZV9ldmVu dC9tYWxsb2NfZHVtcF9wcm92aWRlci5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL2Jhc2UvdHJhY2VfZXZlbnQvbWFsbG9jX2R1bXBfcHJvdmlkZXIuY2MK K0BAIC0xNzQsNyArMTc0LDggQEAgdm9pZCBSZXBvcnRBcHBsZUFsbG9jU3RhdHMoc2l6ZV90KiB0 b3RhbAorIAorICNpZiAoQlVJTERGTEFHKFVTRV9QQVJUSVRJT05fQUxMT0NfQVNfTUFMTE9DKSAm JiBCVUlMREZMQUcoSVNfQU5EUk9JRCkpIHx8IFwKKyAgICAgKCFCVUlMREZMQUcoVVNFX1BBUlRJ VElPTl9BTExPQ19BU19NQUxMT0MpICYmICFCVUlMREZMQUcoSVNfV0lOKSAmJiAgICBcCistICAg ICAhQlVJTERGTEFHKElTX0FQUExFKSAmJiAhQlVJTERGTEFHKElTX1dJTikgJiYgIUJVSUxERkxB RyhJU19GVUNIU0lBKSkKKysgICAgICFCVUlMREZMQUcoSVNfQVBQTEUpICYmICFCVUlMREZMQUco SVNfV0lOKSAmJiAhQlVJTERGTEFHKElTX0ZVQ0hTSUEpICYmIFwKKysgICAgICEoQlVJTERGTEFH KElTX0xJTlVYKSAmJiAhZGVmaW5lZChfX0dMSUJDX18pKSkKKyB2b2lkIFJlcG9ydE1hbGxpbmZv U3RhdHMoUHJvY2Vzc01lbW9yeUR1bXAqIHBtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZV90KiB0b3RhbF92aXJ0dWFsX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNp emVfdCogcmVzaWRlbnRfc2l6ZSwKK0BAIC0zMzksNyArMzQwLDcgQEAgYm9vbCBNYWxsb2NEdW1w UHJvdmlkZXI6Ok9uTWVtb3J5RHVtcChjbworICAgICAgICAgICAgICAgICAgICAgICZhbGxvY2F0 ZWRfb2JqZWN0c19jb3VudCk7CisgI2VsaWYgQlVJTERGTEFHKElTX0ZVQ0hTSUEpCisgLy8gVE9E TyhmdWNoc2lhKTogUG9ydCwgc2VlIGh0dHBzOi8vY3JidWcuY29tLzcwNjU5Mi4KKy0jZWxzZQor KyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQorICAgUmVwb3J0TWFsbGluZm9TdGF0cygvKnBtZD0q L251bGxwdHIsICZ0b3RhbF92aXJ0dWFsX3NpemUsICZyZXNpZGVudF9zaXplLAorICAgICAgICAg ICAgICAgICAgICAgICAmYWxsb2NhdGVkX29iamVjdHNfc2l6ZSwgJmFsbG9jYXRlZF9vYmplY3Rz X2NvdW50KTsKKyAjZW5kaWYKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3RmbGl0ZS9zcmMvdGVuc29yZmxvdy9saXRlL3Byb2Zp bGluZy9tZW1vcnlfaW5mby5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L3RmbGl0ZS9zcmMvdGVuc29yZmxvdy9saXRlL3Byb2ZpbGlu Zy9tZW1vcnlfaW5mby5jYworQEAgLTM1LDcgKzM1LDcgQEAgYm9vbCBNZW1vcnlVc2FnZTo6SXNT dXBwb3J0ZWQoKSB7CisgCisgTWVtb3J5VXNhZ2UgR2V0TWVtb3J5VXNhZ2UoKSB7CisgICBNZW1v cnlVc2FnZSByZXN1bHQ7CistI2lmZGVmIF9fbGludXhfXworKyNpZiBkZWZpbmVkKF9fbGludXhf XykgJiYgZGVmaW5lZChfX0dMSUJDX18pCisgICBydXNhZ2UgcmVzOworICAgaWYgKGdldHJ1c2Fn ZShSVVNBR0VfU0VMRiwgJnJlcykgPT0gMCkgeworICAgICByZXN1bHQubWF4X3Jzc19rYiA9IHJl cy5ydV9tYXhyc3M7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8w NzAwLWFybXY3bC1uZW9uLnBhdGNoIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDcw MC1hcm12N2wtbmVvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjVjYTE5NTNkMmNiMwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2lu ZS9wYXRjaGVzLzA3MDAtYXJtdjdsLW5lb24ucGF0Y2gKQEAgLTAsMCArMSwxMCBAQAorLS0tIHF0 Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2tpYS9CVUlMRC5n bgorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NraWEvQlVJ TEQuZ24KK0BAIC03ODYsNyArNzg2LDYgQEAgc2tpYV9zb3VyY2Vfc2V0KCJza2lhX29wdHMiKSB7 CisgICAgICAgICAjIFJvb3QgYnVpbGQgY29uZmlnIHNldHMgLW1mcHU9JGFybV9mcHUsIHdoaWNo IHdlIGV4cGVjdCB0byBiZSBuZW9uCisgICAgICAgICAjIHdoZW4gcnVubmluZyB0aGlzLgorICAg ICAgICAgaWYgKCFhcm1fdXNlX25lb24pIHsKKy0gICAgICAgICAgY29uZmlncyAtPSBbICIvL2J1 aWxkL2NvbmZpZy9jb21waWxlcjpjb21waWxlcl9hcm1fZnB1IiBdCisgICAgICAgICAgIGNmbGFn cyArPSBbICItbWZwdT1uZW9uIiBdCisgICAgICAgICB9CisgICAgICAgfQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDc1MC1jaHJvbWl1bS1tdXNsLWNyb3NzLW5v LWFzbV9wdHJhY2VfaC5wYXRjaCBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzA3NTAt Y2hyb21pdW0tbXVzbC1jcm9zcy1uby1hc21fcHRyYWNlX2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jYTdiMDE1MDk2MmMKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8wNzUwLWNocm9taXVtLW11c2wtY3Jvc3Mt bm8tYXNtX3B0cmFjZV9oLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKKy0tLSBxdDYtd2ViZW5naW5l LTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1w ZXIuY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9saW51eF9wdHJhY2VfZHVtcGVyLmNjCitAQCAtMzgsNyArMzgsMTIgQEAKKyAKKyAjaW5jbHVk ZSAiY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmgiCisg CisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisrI2Vs c2UKKysvKiBGb3IgYXJtKi1tdXNsIHRoaXMgZGVmaW5pdGlvbiBpcyBtaXNzaW5nICovCisrI2Rl ZmluZSBBUk1fc3AgdXJlZ3NbMTNdCisrI2VuZGlmCisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNp bmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorLS0tIHF0Ni13ZWJlbmdpbmUt Ni40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIu Y2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9s aW51eF9jb3JlX2R1bXBlci5jYworQEAgLTMyLDcgKzMyLDEyIEBACisgCisgI2luY2x1ZGUgImNs aWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuaCIKKyAKKysjaWYg ZGVmaW5lZChfX0dMSUJDX18pCisgI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysjZWxzZQorKy8q IEZvciBhcm0qLW11c2wgdGhpcyBkZWZpbml0aW9uIGlzIG1pc3NpbmcgKi8KKysjZGVmaW5lIEFS TV9zcCB1cmVnc1sxM10KKysjZW5kaWYKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUg PGVsZi5oPgorICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYtd2Vi ZW5naW5lL3BhdGNoZXMvMDc1MS1jaHJvbWl1bS1tdXNsLWFybS11c2VyX3ZmcC5wYXRjaCBiL3Ny Y3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzA3NTEtY2hyb21pdW0tbXVzbC1hcm0tdXNlcl92 ZnAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kN2MxODAz NmQ1MDMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy8w NzUxLWNocm9taXVtLW11c2wtYXJtLXVzZXJfdmZwLnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKKy0t LSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvdGhyZWFkX2luZm8uaAorKysrIHF0Ni13 ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3V0aWwvbGludXgvdGhyZWFkX2luZm8uaAorQEAgLTE3LDYgKzE3LDE3IEBACisg CisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzeXMvdXNlci5oPgorKyNpZiAhZGVm aW5lZChfX0dMSUJDX18pCisrc3RydWN0IHVzZXJfdmZwIHsKKysJdW5zaWduZWQgbG9uZyBsb25n IGZwcmVnc1szMl07CisrCXVuc2lnbmVkIGxvbmcgZnBzY3I7CisrfTsKKytzdHJ1Y3QgdXNlcl92 ZnBfZXhjIHsKKysJdW5zaWduZWQgbG9uZyBmcGV4YzsKKysJdW5zaWduZWQgbG9uZyBmcGluc3Q7 CisrCXVuc2lnbmVkIGxvbmcgZnBpbnN0MjsKKyt9OworKyNlbmRpZiAvKiAhZGVmaW5lZChfX0dM SUJDX18pICovCisgCisgI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorIApkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDc1Mi1jaHJvbWl1bS1tdXNsLWFybS1lbGZfYXV4 dl90LnBhdGNoIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDc1Mi1jaHJvbWl1bS1t dXNsLWFybS1lbGZfYXV4dl90LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uNTJmNWY0N2JlODMxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDYtd2Vi ZW5naW5lL3BhdGNoZXMvMDc1Mi1jaHJvbWl1bS1tdXNsLWFybS1lbGZfYXV4dl90LnBhdGNoCkBA IC0wLDAgKzEsMTggQEAKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3Y4L3NyYy9iYXNlL2NwdS5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9iYXNlL2NwdS5jYworQEAgLTE2NSw2ICsxNjUsMTUg QEAgc3RhdGljIFY4X0lOTElORSB2b2lkIF9fY3B1aWQoaW50IGNwdV9pbgorIAorICNpZiBWOF9I T1NUX0FSQ0hfQVJNIHx8IFY4X0hPU1RfQVJDSF9BUk02NAorIAorKyNpZm5kZWYgX19HTElCQ19f CisrI2luY2x1ZGUgPGVsZi5oPgorKyNpZmRlZiBfX0xQNjRfXworK3R5cGVkZWYgRWxmNjRfYXV4 dl90IGVsZl9hdXh2X3Q7CisrI2Vsc2UKKyt0eXBlZGVmIEVsZjMyX2F1eHZfdCBlbGZfYXV4dl90 OworKyNlbmRpZgorKyNlbmRpZgorKworIHN0YXRpYyB1aW50MzJfdCBSZWFkRUxGSFdDYXBzKCkg eworICAgdWludDMyX3QgcmVzdWx0ID0gMDsKKyAjaWYgVjhfR0xJQkNfUFJFUkVRKDIsIDE2KQpk aWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMvMDkwMC1jcm9zcy1idWls ZC1leGFtcGxlcy5wYXRjaCBiL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzLzA5MDAtY3Jv c3MtYnVpbGQtZXhhbXBsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi45YTZhY2M2YWY2ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0Ni13ZWJl bmdpbmUvcGF0Y2hlcy8wOTAwLWNyb3NzLWJ1aWxkLWV4YW1wbGVzLnBhdGNoCkBAIC0wLDAgKzEs MTYgQEAKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvZXhhbXBsZXMvQ01ha2VMaXN0cy50 eHQKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL2V4YW1wbGVzL0NNYWtlTGlzdHMudHh0CitAQCAt MSw3ICsxLDYgQEAKKyBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMy4xNikKKyAKKyBx dF9leGFtcGxlc19idWlsZF9iZWdpbihFWFRFUk5BTF9CVUlMRCkKKy1pZihOT1QgQ01BS0VfQ1JP U1NDT01QSUxJTkcpICNRVEJVRy04NjUzMworICAgICBpZihUQVJHRVQgUXQ6OldlYkVuZ2luZUNv cmUpCisgICAgICAgICBhZGRfc3ViZGlyZWN0b3J5KHdlYmVuZ2luZXF1aWNrKQorICAgICBlbmRp ZigpCitAQCAtMTQsNSArMTMsNCBAQCBpZihOT1QgQ01BS0VfQ1JPU1NDT01QSUxJTkcpICNRVEJV Ry04NjUzCisgICAgIGlmKFRBUkdFVCBRdDo6UGRmV2lkZ2V0cykKKyAgICAgICAgIGFkZF9zdWJk aXJlY3RvcnkocGRmd2lkZ2V0cykKKyAgICAgZW5kaWYoKQorLWVuZGlmKCkKKyBxdF9leGFtcGxl c19idWlsZF9lbmQoKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMv eHh4LXBwYzY0bGUtNGstcGFnZXMucGF0Y2ggYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hl cy94eHgtcHBjNjRsZS00ay1wYWdlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjRjMjAxNTM3ODJlNwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2 LXdlYmVuZ2luZS9wYXRjaGVzL3h4eC1wcGM2NGxlLTRrLXBhZ2VzLnBhdGNoCkBAIC0wLDAgKzEs NTAgQEAKK2NvbW1pdCA0NTgwOWY4NWJjMzUyNGY4NjdlNmU5NTRmNDQ0ZmRkZDIzMzMyNDVhCitB dXRob3I6IHE2NiA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNyAxODox ODo1MiAyMDIyICswMTAwCisKKyAgICBzd2l0Y2ggcHBjNjQgdG8gNGsgcGFnZXMKKyAgICAKKyAg ICBzaW5jZSB0aGUgcGFydGl0aW9uIGFsbG9jYXRvciBhcHBlYXJzIHRvIGhhdGUgbGFyZ2VyIGNv bnN0YW50cworICAgIGFuZCBhdCB0aGlzIHBvaW50IGVycm9ycyBhdCBjb21waWxlIHRpbWUgYW5k IGkgYW0gbm90IHdpbGxpbmcKKyAgICB0byB3YWRlIHRocm91Z2ggdGhpcyBwaWxlIG9mIGN1cnNl IGFuZCB3ZSB1c2UgNGsga2VybmVscyBhbnl3YXksCisgICAgYXNzdW1lIDRLIHBhZ2VzIGZvciBw cGM2NAorCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhZ2VfYWxsb2NhdG9yX2NvbnN0 YW50cy5oCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFz ZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYWdlX2FsbG9jYXRvcl9jb25zdGFudHMu aAorQEAgLTY5LDcgKzY5LDcgQEAgUGFnZUFsbG9jYXRpb25HcmFudWxhcml0eSgpOworIAorIFBB R0VfQUxMT0NBVE9SX0NPTlNUQU5UU19ERUNMQVJFX0NPTlNURVhQUiBBTFdBWVNfSU5MSU5FIHNp emVfdAorIFBhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlTaGlmdCgpIHsKKy0jaWYgQlVJTERGTEFH KElTX1dJTikgfHwgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKKysjaWYgQlVJTERGTEFHKElTX1dJ TikKKyAgIC8vIE1vZGVybiBwcGM2NCBzeXN0ZW1zIHN1cHBvcnQgNGtCIChzaGlmdCA9IDEyKSBh bmQgNjRrQiAoc2hpZnQgPSAxNikgcGFnZQorICAgLy8gc2l6ZXMuICBTaW5jZSA2NGtCIGlzIHRo ZSBkZSBmYWN0byBzdGFuZGFyZCBvbiB0aGUgcGxhdGZvcm0gYW5kIGJpbmFyaWVzCisgICAvLyBj b21waWxlZCBmb3IgNjRrQiBhcmUgbGlrZWx5IHRvIHdvcmsgb24gNGtCIHN5c3RlbXMsIDY0a0Ig aXMgYSBnb29kIGNob2ljZQorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFy dHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYXJ0aXRpb25f YWxsb2NfY29uc3RhbnRzLmgKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxv Y19jb25zdGFudHMuaAorQEAgLTc0LDExICs3NCw2IEBAIFBBR0VfQUxMT0NBVE9SX0NPTlNUQU5U U19ERUNMQVJFX0NPTlNURVgKKyBQYXJ0aXRpb25QYWdlU2hpZnQoKSB7CisgICByZXR1cm4gMTY7 ICAvLyA2NCBLaUIKKyB9CistI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKKy1QQUdFX0FM TE9DQVRPUl9DT05TVEFOVFNfREVDTEFSRV9DT05TVEVYUFIgQUxXQVlTX0lOTElORSBzaXplX3QK Ky1QYXJ0aXRpb25QYWdlU2hpZnQoKSB7CistICByZXR1cm4gMTg7ICAvLyAyNTYgS2lCCistfQor ICNlbGlmIChCVUlMREZMQUcoSVNfQVBQTEUpICYmIGRlZmluZWQoQVJDSF9DUFVfNjRfQklUUykp IHx8IFwKKyAgICAgKEJVSUxERkxBRyhJU19MSU5VWCkgJiYgZGVmaW5lZChBUkNIX0NQVV9BUk02 NCkpCisgUEFHRV9BTExPQ0FUT1JfQ09OU1RBTlRTX0RFQ0xBUkVfQ09OU1RFWFBSIEFMV0FZU19J TkxJTkUgc2l6ZV90CistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxv Y19mb3J3YXJkLmgKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY19mb3J3 YXJkLmgKK0BAIC0yOCw3ICsyOCwxMCBAQCBuYW1lc3BhY2UgaW50ZXJuYWwgeworIC8vCisgLy8g X19TVERDUFBfREVGQVVMVF9ORVdfQUxJR05NRU5UX18gaXMgQysrMTcuIEFzIHN1Y2gsIGl0IGlz IG5vdCBkZWZpbmVkIG9uIGFsbAorIC8vIHBsYXRmb3JtcywgYXMgQ2hyb21lJ3MgcmVxdWlyZW1l bnQgaXMgQysrMTQgYXMgb2YgMjAyMC4KKy0jaWYgZGVmaW5lZChfX1NURENQUF9ERUZBVUxUX05F V19BTElHTk1FTlRfXykKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKy8qIHdlIHdhbnQg dGhpcyB0byBiZSAxNiBoZXJlIGFsd2F5cyAqLworK2NvbnN0ZXhwciBzaXplX3Qga0FsaWdubWVu dCA9IDE2OworKyNlbGlmIGRlZmluZWQoX19TVERDUFBfREVGQVVMVF9ORVdfQUxJR05NRU5UX18p CisgY29uc3RleHByIHNpemVfdCBrQWxpZ25tZW50ID0KKyAgICAgc3RkOjptYXgoYWxpZ25vZiht YXhfYWxpZ25fdCksCisgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4oX19TVERDUFBf REVGQVVMVF9ORVdfQUxJR05NRU5UX18pKTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVu Z2luZS9wYXRjaGVzL3h4eC1wcGM2NGxlLWxpYnZweC5wYXRjaCBiL3NyY3BrZ3MvcXQ2LXdlYmVu Z2luZS9wYXRjaGVzL3h4eC1wcGM2NGxlLWxpYnZweC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjU1MjUwYTRjODgxMQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzL3h4eC1wcGM2NGxlLWxpYnZweC5wYXRjaApAQCAt MCwwICsxLDY1IEBACitVc2VzIGdlbmVyaWMgdGFyZ2V0IGZvciBub3cuIFRvIHVzZSBwcGM2NGxl LCBjaGFuZ2UgLS10YXJnZXQgdG8gcHBjNjRsZS1nbnUKK2FuZCBhZGQgLS1lbmFibGUtdnN4LCBh bmQgY2hhbmdlIGdlbmVyaWMgdG8gcHBjIGZvciB0aGUgcnRjZCBoZWFkZXIuCisKK0Zyb20gMThl NmM1YzU1Y2ZhZTBjZmI0NThkODIxMGQ3YmM3MDkzNjBhMGU5MCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKK0Zyb206IHE2NiA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+CitEYXRlOiBXZWQsIDkgU2Vw IDIwMjAgMTk6MDg6MjUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZW5hYmxlIGdlbmVyYXRpb24g b2YgcHBjNjQgbGlidnB4IGJpdHMKKwordGhpcyBkb2Vzbid0IHVwZGF0ZSB0aGUgZ25pIGZpbGUs IHRoYXQncyBkb25lIGZyb20KK3RoZSB0ZW1wbGF0ZSBieSBydW5uaW5nIHRoZSBhcHByb3ByaWF0 ZSBzY3JpcHRzCistLS0KKyB0aGlyZF9wYXJ0eS9saWJ2cHgvQlVJTEQuZ24gICAgICAgIHwgNCAr KysrCisgdGhpcmRfcGFydHkvbGlidnB4L2dlbmVyYXRlX2duaS5zaCB8IDkgKysrKysrKysrCisg MiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCisKKy0tLSBxdDYtd2ViZW5naW5lLTYu NC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xpYnZweC9CVUlMRC5n bgorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2xpYnZweC9CVUlMRC5nbgorQEAgLTQwNSw2ICs0MDUsOCBAQCBzdGF0aWNfbGlicmFyeSgi YnVuZGxlZF9saWJ2cHgiKSB7CisgICAgICAgc291cmNlcyA9IGxpYnZweF9zcmNzX2FybTY0Cisg ICAgICAgcHVibGljX2RlcHMgPSBbICI6bGlidnB4X2FybTY0X2hlYWRlcnMiIF0KKyAgICAgfQor KyAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7CisrICAgIHNvdXJjZXMgPSBs aWJ2cHhfc3Jjc19wcGM2NAorICAgfQorIAorICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZp Zy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmln L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9saWJ2cHgvZ2VuZXJhdGVfZ25pLnNo CisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvbGlidnB4L2dlbmVyYXRlX2duaS5zaAorQEAgLTM3NCw2ICszNzQsNyBAQCBnZW5fY29uZmln X2ZpbGVzIGxpbnV4L2FybS1uZW9uLWhpZ2hiZCAiCisgZ2VuX2NvbmZpZ19maWxlcyBsaW51eC9h cm02NC1oaWdoYmQgIi0tdGFyZ2V0PWFybXY4LWxpbnV4LWdjYyAke2FsbF9wbGF0Zm9ybXN9ICR7 SElHSEJEfSIKKyBnZW5fY29uZmlnX2ZpbGVzIGxpbnV4L21pcHNlbCAiLS10YXJnZXQ9bWlwczMy LWxpbnV4LWdjYyAke2FsbF9wbGF0Zm9ybXN9IgorIGdlbl9jb25maWdfZmlsZXMgbGludXgvbWlw czY0ZWwgIi0tdGFyZ2V0PW1pcHM2NC1saW51eC1nY2MgJHthbGxfcGxhdGZvcm1zfSIKKytnZW5f Y29uZmlnX2ZpbGVzIGxpbnV4L3BwYzY0ICItLXRhcmdldD1nZW5lcmljLWdudSAkSElHSEJEICR7 YWxsX3BsYXRmb3Jtc30iCisgZ2VuX2NvbmZpZ19maWxlcyBsaW51eC9nZW5lcmljICItLXRhcmdl dD1nZW5lcmljLWdudSAkSElHSEJEICR7YWxsX3BsYXRmb3Jtc30iCisgZ2VuX2NvbmZpZ19maWxl cyB3aW4vYXJtNjQgIi0tdGFyZ2V0PWFybTY0LXdpbjY0LXZzMTUgJHthbGxfcGxhdGZvcm1zfSAk e0hJR0hCRH0iCisgZ2VuX2NvbmZpZ19maWxlcyB3aW4vaWEzMiAiLS10YXJnZXQ9eDg2LXdpbjMy LXZzMTQgJHthbGxfcGxhdGZvcm1zfSAke3g4Nl9wbGF0Zm9ybXN9IgorQEAgLTM5OSw2ICs0MDAs NyBAQCBsaW50X2NvbmZpZyBsaW51eC9hcm0tbmVvbi1oaWdoYmQKKyBsaW50X2NvbmZpZyBsaW51 eC9hcm02NC1oaWdoYmQKKyBsaW50X2NvbmZpZyBsaW51eC9taXBzZWwKKyBsaW50X2NvbmZpZyBs aW51eC9taXBzNjRlbAorK2xpbnRfY29uZmlnIGxpbnV4L3BwYzY0CisgbGludF9jb25maWcgbGlu dXgvZ2VuZXJpYworIGxpbnRfY29uZmlnIHdpbi9hcm02NAorIGxpbnRfY29uZmlnIHdpbi9pYTMy CitAQCAtNDI4LDYgKzQzMCw3IEBAIGdlbl9ydGNkX2hlYWRlciBsaW51eC9hcm0tbmVvbi1oaWdo YmQgYXIKKyBnZW5fcnRjZF9oZWFkZXIgbGludXgvYXJtNjQtaGlnaGJkIGFybXY4CisgZ2VuX3J0 Y2RfaGVhZGVyIGxpbnV4L21pcHNlbCBtaXBzZWwKKyBnZW5fcnRjZF9oZWFkZXIgbGludXgvbWlw czY0ZWwgbWlwczY0ZWwKKytnZW5fcnRjZF9oZWFkZXIgbGludXgvcHBjNjQgZ2VuZXJpYworIGdl bl9ydGNkX2hlYWRlciBsaW51eC9nZW5lcmljIGdlbmVyaWMKKyBnZW5fcnRjZF9oZWFkZXIgd2lu L2FybTY0IGFybXY4CisgZ2VuX3J0Y2RfaGVhZGVyIHdpbi9pYTMyIHg4NiAiJHtyZXF1aXJlX3Nz ZTJ9IgorQEAgLTUxMyw2ICs1MTYsMTIgQEAgaWYgWyAteiAkT05MWV9DT05GSUdTIF07IHRoZW4K KyAKKyAgIGVjaG8gIk1JUFM2NCBzb3VyY2UgbGlzdCBpcyBpZGVudGljYWwgdG8gTUlQUyBzb3Vy Y2UgbGlzdC4gTm8gbmVlZCB0byBnZW5lcmF0ZSBpdC4iCisgCisrICBlY2hvICJHZW5lcmF0ZSBw cGM2NCBzb3VyY2UgbGlzdC4iCisrICBjb25maWc9JChwcmludF9jb25maWdfYmFzaWMgbGludXgv cHBjNjQpCisrICBtYWtlX2NsZWFuCisrICBtYWtlIGxpYnZweF9zcmNzLnR4dCB0YXJnZXQ9bGli cyAkY29uZmlnID4gL2Rldi9udWxsCisrICBjb252ZXJ0X3NyY3NfdG9fcHJvamVjdF9maWxlcyBs aWJ2cHhfc3Jjcy50eHQgbGlidnB4X3NyY3NfcHBjNjQKKysKKyAgIGVjaG8gIkdlbmVyYXRlIE5h Q2wgc291cmNlIGxpc3QuIgorICAgY29uZmlnPSQocHJpbnRfY29uZmlnX2Jhc2ljIG5hY2wpCisg ICBtYWtlX2NsZWFuCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy94 eHgtcHBjNjRsZS1zYW5kYm94LWxpbnV4LXN0YXQucGF0Y2ggYi9zcmNwa2dzL3F0Ni13ZWJlbmdp bmUvcGF0Y2hlcy94eHgtcHBjNjRsZS1zYW5kYm94LWxpbnV4LXN0YXQucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZDAxZDMyYTMzOTMKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy94eHgtcHBjNjRsZS1zYW5kYm94 LWxpbnV4LXN0YXQucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorLS0tIHF0Ni13ZWJlbmdpbmUtNi40 LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVy cy9saW51eF9zdGF0LmgKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N0YXQuaAorQEAgLTE3Myw2 ICsxNzMsMjggQEAgc3RydWN0IGtlcm5lbF9zdGF0IHsKKyAgIHVuc2lnbmVkIGludCBfX3VudXNl ZDQ7CisgICB1bnNpZ25lZCBpbnQgX191bnVzZWQ1OworIH07CisrI2VsaWYgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQorK3N0cnVjdCBrZXJuZWxfc3RhdCB7CisrICB1bnNpZ25lZCBsb25nCXN0X2Rl djsKKysgIHVuc2lnbmVkIGxvbmcJc3RfaW5vOworKyAgdW5zaWduZWQgbG9uZwlzdF9ubGluazsK KysgIHVuc2lnbmVkIGludAlzdF9tb2RlOworKyAgdW5zaWduZWQgaW50CXN0X3VpZDsKKysgIHVu c2lnbmVkIGludAlzdF9naWQ7CisrICB1bnNpZ25lZCBsb25nCXN0X3JkZXY7CisrICBsb25nCQlz dF9zaXplOworKyAgdW5zaWduZWQgbG9uZwlzdF9ibGtzaXplOworKyAgdW5zaWduZWQgbG9uZwlz dF9ibG9ja3M7CisrICB1bnNpZ25lZCBsb25nCXN0X2F0aW1lXzsKKysgIHVuc2lnbmVkIGxvbmcJ c3RfYXRpbWVfbnNlY187CisrICB1bnNpZ25lZCBsb25nCXN0X210aW1lXzsKKysgIHVuc2lnbmVk IGxvbmcJc3RfbXRpbWVfbnNlY187CisrICB1bnNpZ25lZCBsb25nCXN0X2N0aW1lXzsKKysgIHVu c2lnbmVkIGxvbmcJc3RfY3RpbWVfbnNlY187CisrICB1bnNpZ25lZCBsb25nCV9fdW51c2VkNDsK KysgIHVuc2lnbmVkIGxvbmcJX191bnVzZWQ1OworKyAgdW5zaWduZWQgbG9uZwlfX3VudXNlZDY7 CisrfTsKKyAjZW5kaWYKKyAKKyAjaWYgIWRlZmluZWQoQVRfRU1QVFlfUEFUSCkKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzL3h4eC1wcGM2NGxlLXN1cHBvcnQucGF0 Y2ggYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvcGF0Y2hlcy94eHgtcHBjNjRsZS1zdXBwb3J0LnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzIwMGM1ZjQ1YTQz Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNoZXMveHh4LXBw YzY0bGUtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDM0OTIgQEAKK2NvbW1pdCAyYzAxM2EzMTdi MTExNGVmNjdjZGJiYzMwODI0YjI4OTA3YjllYTk0CitBdXRob3I6IERhbmllbCBLb2xlc2EgPGRh bmllbEBvY3RhZm9yZ2Uub3JnPgorRGF0ZTogICBXZWQgTWFyIDMgMTk6MDg6MjkgMjAyMSArMDEw MAorCisgICAgcHBjNjRsZSBzdXBwb3J0CisKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcv c3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL2Rvd25sb2FkX25hY2xfdG9vbGNoYWlucy5weQor KysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL2Rvd25s b2FkX25hY2xfdG9vbGNoYWlucy5weQorQEAgLTEzLDYgKzEzLDEwIEBAIGltcG9ydCBzeXMKKyAK KyAKKyBkZWYgTWFpbihhcmdzKToKKysgICMgSWYgYGRpc2FibGVfbmFjbD0xYCBpcyBpbiBHWVBf REVGSU5FUywgZXhpdAorKyAgaWYgJ2Rpc2FibGVfbmFjbD0xJyBpbiBvcy5lbnZpcm9uLmdldCgn R1lQX0RFRklORVMnLCAnJyk6CisrICAgIHJldHVybiAwCisrCisgICBzY3JpcHRfZGlyID0gb3Mu cGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCisgICBzcmNfZGlyID0gb3Mu cGF0aC5kaXJuYW1lKHNjcmlwdF9kaXIpCisgICBuYWNsX2RpciA9IG9zLnBhdGguam9pbihzcmNf ZGlyLCAnbmF0aXZlX2NsaWVudCcpCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9jaHJvbWUvaW5zdGFsbGVyL2xpbnV4L0JVSUxELmduCisrKysgcXQ2 LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vY2hyb21lL2luc3RhbGxlci9s aW51eC9CVUlMRC5nbgorQEAgLTk3LDggKzk3LDYgQEAgcGFja2FnaW5nX2ZpbGVzID0gcGFja2Fn aW5nX2ZpbGVzX2JpbmFyaQorICAgICAgICAgICAgICAgICAgICAgIiRyb290X291dF9kaXIveGRn LW1pbWUiLAorICAgICAgICAgICAgICAgICAgICAgIiRyb290X291dF9kaXIveGRnLXNldHRpbmdz IiwKKyAgICAgICAgICAgICAgICAgICAgICIkcm9vdF9vdXRfZGlyL2xvY2FsZXMvZW4tVVMucGFr IiwKKy0gICAgICAgICAgICAgICAgICAgICIkcm9vdF9vdXRfZGlyL01FSVByZWxvYWQvbWFuaWZl c3QuanNvbiIsCistICAgICAgICAgICAgICAgICAgICAiJHJvb3Rfb3V0X2Rpci9NRUlQcmVsb2Fk L3ByZWxvYWRlZF9kYXRhLnBiIiwKKyAgICAgICAgICAgICAgICAgICBdCisgCisgYWN0aW9uX2Zv cmVhY2goImNhbGN1bGF0ZV9kZWJfZGVwZW5kZW5jaWVzIikgeworQEAgLTM3Nyw3ICszNzUsNiBA QCBncm91cCgiaW5zdGFsbGVyX2RlcHMiKSB7CisgICAgICIvL2Nocm9tZSIsCisgICAgICIvL2No cm9tZTpwYWNrZWRfcmVzb3VyY2VzIiwKKyAgICAgIi8vY2hyb21lL2Jyb3dzZXIvZW50ZXJwcmlz ZS9jb25uZWN0b3JzL2RldmljZV90cnVzdC9rZXlfbWFuYWdlbWVudC9pbnN0YWxsZXIvbWFuYWdl bWVudF9zZXJ2aWNlOmNocm9tZV9tYW5hZ2VtZW50X3NlcnZpY2UiLAorLSAgICAiLy9jaHJvbWUv YnJvd3Nlci9yZXNvdXJjZXMvbWVkaWEvbWVpX3ByZWxvYWQ6Y29tcG9uZW50IiwKKyAgICAgIi8v Y29tcG9uZW50cy9jcmFzaC9jb3JlL2FwcDpjaHJvbWVfY3Jhc2hwYWRfaGFuZGxlciIsCisgICAg ICIvL3NhbmRib3gvbGludXg6Y2hyb21lX3NhbmRib3giLAorICAgXQorLS0tIHF0Ni13ZWJlbmdp bmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9mZWF0dXJlcy5nbmkK KysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2Zl YXR1cmVzLmduaQorQEAgLTksNyArOSw4IEBACisgdXNlX3NlY2NvbXBfYnBmID0gKGlzX2xpbnV4 IHx8IGlzX2Nocm9tZW9zIHx8IGlzX2FuZHJvaWQpICYmCisgICAgICAgICAgICAgICAgICAgKGN1 cnJlbnRfY3B1ID09ICJ4ODYiIHx8IGN1cnJlbnRfY3B1ID09ICJ4NjQiIHx8CisgICAgICAgICAg ICAgICAgICAgIGN1cnJlbnRfY3B1ID09ICJhcm0iIHx8IGN1cnJlbnRfY3B1ID09ICJhcm02NCIg fHwKKy0gICAgICAgICAgICAgICAgICAgY3VycmVudF9jcHUgPT0gIm1pcHNlbCIgfHwgY3VycmVu dF9jcHUgPT0gIm1pcHM2NGVsIikKKysgICAgICAgICAgICAgICAgICAgY3VycmVudF9jcHUgPT0g Im1pcHNlbCIgfHwgY3VycmVudF9jcHUgPT0gIm1pcHM2NGVsIiB8fAorKyAgICAgICAgICAgICAg ICAgICBjdXJyZW50X2NwdSA9PSAicHBjNjQiKQorIAorICMgU1NCRCAoU3BlY3VsYXRpdmUgU3Rv cmUgQnlwYXNzIERpc2FibGUpIGlzIGEgbWl0aWdhdGlvbiBvZiBTcGVjdHJlIFZhcmlhbnQgNC4K KyAjIEFzIFNwZWN0cmUgVmFyaWFudCA0IGNhbiBiZSBtaXRpZ2F0ZWQgYnkgc2l0ZSBpc29sYXRp b24sIG9wdC1vdXQgU1NCRCBvbiBzaXRlCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L0JVSUxELmduCisrKysgcXQ2LXdlYmVu Z2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9CVUlMRC5nbgor QEAgLTM3Myw2ICszNzMsOCBAQCBjb21wb25lbnQoInNhbmRib3hfc2VydmljZXMiKSB7CisgCisg c291cmNlX3NldCgic2FuZGJveF9zZXJ2aWNlc19oZWFkZXJzIikgeworICAgc291cmNlcyA9IFsK KysgICAgInN5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3N5c2NhbGxzLmgiLAorKyAgICAic3lz dGVtX2hlYWRlcnMvcHBjNjRfbGludXhfdWNvbnRleHQuaCIsCisgICAgICJzeXN0ZW1faGVhZGVy cy9hcm02NF9saW51eF9zeXNjYWxscy5oIiwKKyAgICAgInN5c3RlbV9oZWFkZXJzL2FybV9saW51 eF9zeXNjYWxscy5oIiwKKyAgICAgInN5c3RlbV9oZWFkZXJzL2FybV9saW51eF91Y29udGV4dC5o IiwKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Nh bmRib3gvbGludXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jhbmdlcy5oCisrKysgcXQ2LXdlYmVu Z2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL2xp bnV4X3N5c2NhbGxfcmFuZ2VzLmgKK0BAIC01Niw2ICs1NiwxMyBAQAorICNkZWZpbmUgTUFYX1BV QkxJQ19TWVNDQUxMIF9fTlJfc3lzY2FsbHMKKyAjZGVmaW5lIE1BWF9TWVNDQUxMIE1BWF9QVUJM SUNfU1lTQ0FMTAorIAorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysKKysjaW5jbHVk ZSA8YXNtLWdlbmVyaWMvdW5pc3RkLmg+CisrI2RlZmluZSBNSU5fU1lTQ0FMTCAwdQorKyNkZWZp bmUgTUFYX1BVQkxJQ19TWVNDQUxMIF9fTlJfc3lzY2FsbHMKKysjZGVmaW5lIE1BWF9TWVNDQUxM IE1BWF9QVUJMSUNfU1lTQ0FMTAorKworICNlbHNlCisgI2Vycm9yICJVbnN1cHBvcnRlZCBhcmNo aXRlY3R1cmUiCisgI2VuZGlmCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAorKysr IHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgv YnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCitAQCAtMTQsNiArMTQsOSBAQAorICNpZiBkZWZpbmVk KF9fbWlwc19fKQorIC8vIHN5cy91c2VyLmggaW4gZWdsaWJjIG1pc3NlcyBzaXplX3QgZGVmaW5p dGlvbgorICNpbmNsdWRlIDxzdGRkZWYuaD4KKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisrLy8gTWFudWFsbHkgZGVmaW5lIGdyZWdfdCBvbiBwcGM2NAorK3R5cGVkZWYgdW5zaWduZWQg bG9uZyBsb25nIGdyZWdfdDsKKyAjZW5kaWYKKyAjZW5kaWYKKyAKK0BAIC0zNDMsNiArMzQ2LDUx IEBAIHN0cnVjdCByZWdzX3N0cnVjdCB7CisgI2RlZmluZSBTRUNDT01QX1BUX1BBUk00KF9yZWdz KSAoX3JlZ3MpLnJlZ3NbM10KKyAjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTUoX3JlZ3MpIChfcmVn cykucmVnc1s0XQorICNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNihfcmVncykgKF9yZWdzKS5yZWdz WzVdCisrCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyNpbmNsdWRlIDxhc20vcHRy YWNlLmg+CisrCisrdHlwZWRlZiBzdHJ1Y3QgcHRfcmVncyByZWdzX3N0cnVjdDsKKysKKysjaWZk ZWYgQVJDSF9DUFVfTElUVExFX0VORElBTgorKyNkZWZpbmUgU0VDQ09NUF9BUkNIIEFVRElUX0FS Q0hfUFBDNjRMRQorKyNlbHNlCisrI2RlZmluZSBTRUNDT01QX0FSQ0ggQVVESVRfQVJDSF9QUEM2 NAorKyNlbmRpZgorKworKyNkZWZpbmUgU0VDQ09NUF9SRUcoX2N0eCwgX3JlZykgKChfY3R4KS0+ dWNfbWNvbnRleHQucmVncy0+Z3ByW19yZWddKQorKworKyNkZWZpbmUgU0VDQ09NUF9SRVNVTFQo X2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMykKKysjZGVmaW5lIFNFQ0NPTVBfU1lTQ0FMTChfY3R4 KSBTRUNDT01QX1JFRyhfY3R4LCAwKQorKyNkZWZpbmUgU0VDQ09NUF9JUChfY3R4KSAoX2N0eCkt PnVjX21jb250ZXh0LnJlZ3MtPm5pcAorKyNkZWZpbmUgU0VDQ09NUF9QQVJNMShfY3R4KSBTRUND T01QX1JFRyhfY3R4LCAzKQorKyNkZWZpbmUgU0VDQ09NUF9QQVJNMihfY3R4KSBTRUNDT01QX1JF RyhfY3R4LCA0KQorKyNkZWZpbmUgU0VDQ09NUF9QQVJNMyhfY3R4KSBTRUNDT01QX1JFRyhfY3R4 LCA1KQorKyNkZWZpbmUgU0VDQ09NUF9QQVJNNChfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA2KQor KyNkZWZpbmUgU0VDQ09NUF9QQVJNNShfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA3KQorKyNkZWZp bmUgU0VDQ09NUF9QQVJNNihfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA4KQorKworKyNkZWZpbmUg U0VDQ09NUF9OUl9JRFggKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgbnIpKQor KyNkZWZpbmUgU0VDQ09NUF9BUkNIX0lEWCAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9k YXRhLCBhcmNoKSkKKysjZGVmaW5lIFNFQ0NPTVBfSVBfTVNCX0lEWCBcCisrICAob2Zmc2V0b2Yo c3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBpbnN0cnVjdGlvbl9wb2ludGVyKSArIDQpCisrI2Rl ZmluZSBTRUNDT01QX0lQX0xTQl9JRFggXAorKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2Nv bXBfZGF0YSwgaW5zdHJ1Y3Rpb25fcG9pbnRlcikgKyAwKQorKyNkZWZpbmUgU0VDQ09NUF9BUkdf TVNCX0lEWChucikgXAorKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJn cykgKyA4ICogKG5yKSArIDQpCisrI2RlZmluZSBTRUNDT01QX0FSR19MU0JfSURYKG5yKSBcCisr ICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBhcmdzKSArIDggKiAobnIpICsg MCkKKysKKysjZGVmaW5lIFNFQ0NPTVBfUFRfUkVTVUxUKF9yZWdzKSAoX3JlZ3MpLmdwclszXQor KyNkZWZpbmUgU0VDQ09NUF9QVF9TWVNDQUxMKF9yZWdzKSAoX3JlZ3MpLmdwclswXQorKyNkZWZp bmUgU0VDQ09NUF9QVF9JUChfcmVncykgKF9yZWdzKS5uaXAKKysjZGVmaW5lIFNFQ0NPTVBfUFRf UEFSTTEoX3JlZ3MpIChfcmVncykuZ3ByWzNdCisrI2RlZmluZSBTRUNDT01QX1BUX1BBUk0yKF9y ZWdzKSAoX3JlZ3MpLmdwcls0XQorKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNMyhfcmVncykgKF9y ZWdzKS5ncHJbNV0KKysjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTQoX3JlZ3MpIChfcmVncykuZ3By WzZdCisrI2RlZmluZSBTRUNDT01QX1BUX1BBUk01KF9yZWdzKSAoX3JlZ3MpLmdwcls3XQorKyNk ZWZpbmUgU0VDQ09NUF9QVF9QQVJNNihfcmVncykgKF9yZWdzKS5ncHJbOF0KKysKKyAjZWxzZQor ICNlcnJvciBVbnN1cHBvcnRlZCB0YXJnZXQgcGxhdGZvcm0KKyAKKy0tLSBxdDYtd2ViZW5naW5l LTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1i cGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFz ZWxpbmVfcG9saWN5LmNjCitAQCAtOTEsNyArOTEsOCBAQCBib29sIElzQmFzZWxpbmVQb2xpY3lX YXRjaGVkKGludCBzeXNubykKKyAgICAgICAgICBTeXNjYWxsU2V0czo6SXNQcmN0bChzeXNubykg fHwKKyAgICAgICAgICBTeXNjYWxsU2V0czo6SXNQcm9jZXNzR3JvdXBPclNlc3Npb24oc3lzbm8p IHx8CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVf TUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBc CisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgICAgICBTeXNjYWxsU2V0czo6SXNT b2NrZXRDYWxsKHN5c25vKSB8fAorICNlbmRpZgorICNpZiBkZWZpbmVkKF9fYXJtX18pCitAQCAt MjUzLDcgKzI1NCw3IEBAIFJlc3VsdEV4cHIgRXZhbHVhdGVTeXNjYWxsSW1wbChpbnQgZnNfZGUK KyAgIH0KKyAKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8 fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAg IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgIGlmIChz eXNubyA9PSBfX05SX21tYXApCisgICAgIHJldHVybiBSZXN0cmljdE1tYXBGbGFncygpOworICNl bmRpZgorQEAgLTI3NCw3ICsyNzUsNyBAQCBSZXN1bHRFeHByIEV2YWx1YXRlU3lzY2FsbEltcGwo aW50IGZzX2RlCisgICAgIHJldHVybiBSZXN0cmljdFByY3RsKCk7CisgCisgI2lmIGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBc CistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8 IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgIGlmIChzeXNubyA9PSBfX05SX3NvY2tldHBhaXIp IHsKKyAgICAgLy8gT25seSBhbGxvdyBBRl9VTklYLCBQRl9VTklYLiBDcmFzaCBpZiBhbnl0aGlu ZyBlbHNlIGlzIHNlZW4uCisgICAgIHN0YXRpY19hc3NlcnQoQUZfVU5JWCA9PSBQRl9VTklYLAor QEAgLTMzOCw3ICszMzksOCBAQCBSZXN1bHRFeHByIEV2YWx1YXRlU3lzY2FsbEltcGwoaW50IGZz X2RlCisgICB9CisgCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAg IChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJ VFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgIGlmIChTeXNjYWxsU2V0 czo6SXNTb2NrZXRDYWxsKHN5c25vKSkKKyAgICAgcmV0dXJuIFJlc3RyaWN0U29ja2V0Y2FsbENv bW1hbmQoKTsKKyAjZW5kaWYKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9w b2xpY3lfdW5pdHRlc3QuY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5 X3VuaXR0ZXN0LmNjCitAQCAtMzIwLDcgKzMyMCw3IEBAIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9f TlJfc3lzaW5mbykKKyBURVNUX0JBU0VMSU5FX1NJR1NZUyhfX05SX3N5c2xvZykKKyBURVNUX0JB U0VMSU5FX1NJR1NZUyhfX05SX3RpbWVyX2NyZWF0ZSkKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJj aDY0X18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQorIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfaW5vdGlmeV9pbml0KQorIFRFU1RfQkFT RUxJTkVfU0lHU1lTKF9fTlJfdnNlcnZlcikKKyAjZW5kaWYKKy0tLSBxdDYtd2ViZW5naW5lLTYu NC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYt aGVscGVycy9zaWdzeXNfaGFuZGxlcnMuY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc2lnc3lz X2hhbmRsZXJzLmNjCitAQCAtMzU3LDcgKzM1NywxNiBAQCBpbnRwdHJfdCBTSUdTWVNGc3RhdGF0 SGFuZGxlcihjb25zdCBzdHJ1CisgICBpZiAoYXJncy5uciA9PSBfX05SX2ZzdGF0YXRfZGVmYXVs dCkgeworICAgICBpZiAoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGFyZ3MuYXJnc1sx XSkgPT0gJ1wwJyAmJgorICAgICAgICAgYXJncy5hcmdzWzNdID09IHN0YXRpY19jYXN0PHVpbnQ2 NF90PihBVF9FTVBUWV9QQVRIKSkgeworLSAgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfZnN0YXRf ZGVmYXVsdCwgc3RhdGljX2Nhc3Q8aW50PihhcmdzLmFyZ3NbMF0pLAorKyAgICAgICAgICBpbnQg ZmQgPSBzdGF0aWNfY2FzdDxpbnQ+KGFyZ3MuYXJnc1swXSk7CisrI2lmIGRlZmluZWQoX19wb3dl cnBjNjRfXykKKysgICAgICAvLyBPbiBwcGM2NCtnbGliYywgc29tZSBzeXNjYWxscyBzZWVtIHRv IGFjY2lkZW50YWxseSBuZWdhdGUgdGhlIGZpcnN0CisrICAgICAgLy8gcGFyYW1ldGVyIHdoaWNo IGNhdXNlcyBjaGVja3MgYWdhaW5zdCBpdCB0byBmYWlsLiBGb3Igbm93LCBtYW51YWxseQorKyAg ICAgIC8vIG5lZ2F0ZSB0aGVtIGJhY2suCisrICAgICAgLy8gVE9ETzogSW52ZXN0aWdhdGUgdGhl IHJvb3QgY2F1c2UgYW5kIGZpeCBpbiBnbGliYworKyAgICAgIGlmIChmZCA8IDApCisrICAgICAg ICBmZCA9IC1mZDsKKysjZW5kaWYKKysgICAgICByZXR1cm4gc3lzY2FsbChfX05SX2ZzdGF0X2Rl ZmF1bHQsIGZkLAorICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8ZGVmYXVs dF9zdGF0X3N0cnVjdCo+KGFyZ3MuYXJnc1syXSkpOworICAgICB9CisgICAgIHJldHVybiAtcmVp bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oZnNfZGVuaWVkX2Vycm5vKTsKKy0tLSBxdDYtd2ViZW5n aW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29t cC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCisrKysgcXQ2 LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNj b21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MKK0BAIC0z Nyw3ICszNyw4IEBACisgCisgI2lmIChCVUlMREZMQUcoSVNfTElOVVgpIHx8IEJVSUxERkxBRyhJ U19DSFJPTUVPU19MQUNST1MpKSAmJiBcCisgICAgICFkZWZpbmVkKF9fYXJtX18pICYmICFkZWZp bmVkKF9fYWFyY2g2NF9fKSAmJiAgICAgICAgICAgICBcCistICAgICFkZWZpbmVkKFBUUkFDRV9H RVRfVEhSRUFEX0FSRUEpCisrICAgICFkZWZpbmVkKFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEpICYm ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisg Ly8gQWxzbyBpbmNsdWRlIGFzbS9wdHJhY2UtYWJpLmggc2luY2UgcHRyYWNlLmggaW4gb2xkZXIg bGliYyAoZm9yIGluc3RhbmNlCisgLy8gdGhlIG9uZSBpbiBVYnVudHUgMTYuMDQgTFRTKSBpcyBt aXNzaW5nIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEuCisgLy8gYXNtL3B0cmFjZS1hYmkuaCBkb2Vz bid0IGV4aXN0IG9uIGFybTMyIGFuZCBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBIGlzbid0CitAQCAt NDUsNiArNDYsMTEgQEAKKyAjaW5jbHVkZSA8YXNtL3B0cmFjZS1hYmkuaD4KKyAjZW5kaWYKKyAK KysvLyBPbiBQUEM2NCwgVENHRVRTIGlzIGRlZmluZWQgaW4gdGVybXMgb2Ygc3RydWN0IHRlcm1p b3MsIHNvIHdlIG11c3QgaW5jbHVkZSB0ZXJtaW9zLmgKKysjaWZkZWYgX19wb3dlcnBjNjRfXwor KyNpbmNsdWRlIDx0ZXJtaW9zLmg+CisrI2VuZGlmCisrCisgI2lmIEJVSUxERkxBRyhJU19BTkRS T0lEKQorIAorICNpZiAhZGVmaW5lZChGX0RVUEZEX0NMT0VYRUMpCitAQCAtMTAyLDYgKzEwOCwx NCBAQCBpbmxpbmUgYm9vbCBJc0FyY2hpdGVjdHVyZU1pcHMoKSB7CisgI2VuZGlmCisgfQorIAor K2lubGluZSBib29sIElzQXJjaGl0ZWN0dXJlUFBDNjQoKSB7CisrI2lmIGRlZmluZWQoX19wb3dl cnBjNjRfXykKKysgIHJldHVybiB0cnVlOworKyNlbHNlCisrICByZXR1cm4gZmFsc2U7CisrI2Vu ZGlmCisrfQorKworIC8vIFVidW50dSdzIHZlcnNpb24gb2YgZ2xpYmMgaGFzIGEgcmFjZSBjb25k aXRpb24gaW4gc2VtX3Bvc3QgdGhhdCBjYW4gY2F1c2UKKyAvLyBpdCB0byBjYWxsIGZ1dGV4KDIp IHdpdGggYm9ndXMgb3AgYXJndW1lbnRzLiBUbyB3b3JrYXJvdW5kIHRoaXMsIHdlIG5lZWQKKyAv LyB0byBhbGxvdyB0aG9zZSBmdXRleCgyKSBjYWxscyB0byBmYWlsIHdpdGggRUlOVkFMLCBpbnN0 ZWFkIG9mIGNyYXNoaW5nIHRoZQorQEAgLTI2Niw2ICsyODAsOCBAQCBSZXN1bHRFeHByIFJlc3Ry aWN0RmNudGxDb21tYW5kcygpIHsKKyAgIHVpbnQ2NF90IGtPTGFyZ2VGaWxlRmxhZyA9IE9fTEFS R0VGSUxFOworICAgaWYgKElzQXJjaGl0ZWN0dXJlWDg2XzY0KCkgfHwgSXNBcmNoaXRlY3R1cmVJ Mzg2KCkgfHwgSXNBcmNoaXRlY3R1cmVNaXBzKCkpCisgICAgIGtPTGFyZ2VGaWxlRmxhZyA9IDAx MDAwMDA7CisrICBlbHNlIGlmIChJc0FyY2hpdGVjdHVyZVBQQzY0KCkpCisrICAgIGtPTGFyZ2VG aWxlRmxhZyA9IDAyMDAwMDA7CisgCisgICBjb25zdCBBcmc8aW50PiBjbWQoMSk7CisgICBjb25z dCBBcmc8bG9uZz4gbG9uZ19hcmcoMik7CitAQCAtMjg5LDcgKzMwNSwxNiBAQCBSZXN1bHRFeHBy IFJlc3RyaWN0RmNudGxDb21tYW5kcygpIHsKKyAgICAgICAgICAgICAgIEZfU0VUTEtXLAorICAg ICAgICAgICAgICAgRl9HRVRMSywKKyAgICAgICAgICAgICAgIEZfRFVQRkQsCistICAgICAgICAg ICAgICBGX0RVUEZEX0NMT0VYRUMpLAorKyAgICAgICAgICAgICAgRl9EVVBGRF9DTE9FWEVDCisr I2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysvLyBPbiBQUEM2NCwgRl9TRVRMSywgRl9HRVRM SywgRl9TRVRMS1cgYXJlIGRlZmluZWQgYXMgdGhlIDY0LWJpdCB2YXJpYW50cworKy8vIGJ1dCBn bGliYyB3aWxsIHNvbWV0aW1lcyBzdGlsbCB1c2UgdGhlIDMyLWJpdCB2ZXJzaW9ucy4gQWxsb3cg Ym90aC4KKysgICAgICAgICAgICAgICwKKysgICAgICAgICAgICAgIDUsIC8qIEZfR0VUTEsgKDMy KSAqLworKyAgICAgICAgICAgICAgNiwgLyogRl9TRVRMSyAoMzIpICovCisrICAgICAgICAgICAg ICA3ICAvKiBGX1NFVExLVyAoMzIpICovCisrI2VuZGlmCisrCSAgICAgKSwKKyAgICAgICAgICAg ICAgQWxsb3coKSkKKyAgICAgICAuQ2FzZShGX1NFVEZMLAorICAgICAgICAgICAgIElmKChsb25n X2FyZyAmIH5rQWxsb3dlZE1hc2spID09IDAsIEFsbG93KCkpLkVsc2UoQ3Jhc2hTSUdTWVMoKSkp CitAQCAtMjk5LDcgKzMyNCw3IEBAIFJlc3VsdEV4cHIgUmVzdHJpY3RGY250bENvbW1hbmRzKCkg eworICAgLy8gY2xhbmctZm9ybWF0IG9uCisgfQorIAorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8 fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9f bWlwc19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgUmVzdWx0RXhwciBSZXN0cmljdFNv Y2tldGNhbGxDb21tYW5kKCkgeworICAgLy8gVW5mb3J0dW5hdGVseSwgd2UgYXJlIHVuYWJsZSB0 byByZXN0cmljdCB0aGUgZmlyc3QgcGFyYW1ldGVyIHRvCisgICAvLyBzb2NrZXRwYWlyKDIpLiBX aGlsc3QgaW5pdGlhbGx5IHNvdW5kaW5nIGJhZCwgaXQncyBub3Rld29ydGh5IHRoYXQgdmVyeQor QEAgLTQ1NCw3ICs0NzksNyBAQCBSZXN1bHRFeHByIFJlc3RyaWN0UHRyYWNlKCkgeworICNlbmRp ZgorICAgcmV0dXJuIFN3aXRjaChyZXF1ZXN0KQorICAgICAgIC5DQVNFUygoCistI2lmICFkZWZp bmVkKF9fYWFyY2g2NF9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmluZWQo X19wb3dlcnBjNjRfXykKKyAgICAgICAgICAgICAgICAgIFBUUkFDRV9HRVRSRUdTLCBQVFJBQ0Vf R0VURlBSRUdTLAorICNpZiBkZWZpbmVkKFRSQUNFX0dFVF9USFJFQURfQVJFQSkKKyAgICAgICAg ICAgICAgICAgIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEsCistLS0gcXQ2LXdlYmVuZ2luZS02LjQu Mi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhl bHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5oCisrKysgcXQ2LXdlYmVuZ2lu ZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1o ZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuaAorQEAgLTUyLDcgKzUyLDcg QEAgU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0RXhwciBSZXN0cgorIC8vIE9fTk9OQkxP Q0sgfCBPX1NZTkMgfCBPX0xBUkdFRklMRSB8IE9fQ0xPRVhFQyB8IE9fTk9BVElNRS4KKyBTQU5E Qk9YX0VYUE9SVCBicGZfZHNsOjpSZXN1bHRFeHByIFJlc3RyaWN0RmNudGxDb21tYW5kcygpOwor IAorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCisgLy8gUmVzdHJpY3Qgc29ja2V0Y2FsbCgyKSB0byBvbmx5IGFsbG93IHNvY2tldHBhaXIo MiksIHNlbmQoMiksIHJlY3YoMiksCisgLy8gc2VuZHRvKDIpLCByZWN2ZnJvbSgyKSwgc2h1dGRv d24oMiksIHNlbmRtc2coMikgYW5kIHJlY3Ztc2coMikuCisgU0FOREJPWF9FWFBPUlQgYnBmX2Rz bDo6UmVzdWx0RXhwciBSZXN0cmljdFNvY2tldGNhbGxDb21tYW5kKCk7CistLS0gcXQ2LXdlYmVu Z2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2Nv bXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9z cmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5 c2NhbGxfc2V0cy5jYworQEAgLTI5LDcgKzI5LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxv d2VkR2V0dGltZShpbnQgcworICAgc3dpdGNoIChzeXNubykgeworICAgICBjYXNlIF9fTlJfZ2V0 dGltZW9mZGF5OgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18p IHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJD SF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBk ZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKyAgICAgY2FzZSBfX05SX3RpbWU6CisgI2VuZGlmCisgICAgICAgcmV0dXJuIHRydWU7CitA QCAtNTIsMTIgKzUzLDE0IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdldHRpbWUoaW50 IHMKKyAgICAgY2FzZSBfX05SX2Nsb2NrX25hbm9zbGVlcF90aW1lNjQ6ICAvLyBQYXJhbWV0ZXJz IGZpbHRlcmVkIGJ5IFJlc3RyaWN0Q2xvY2tJRCgpLgorICNlbmRpZgorICNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9mdGltZTogIC8vIE9ic29sZXRlLgorICNlbmRpZgor ICAgICBjYXNlIF9fTlJfc2V0dGltZW9mZGF5OiAgLy8gUHJpdmlsZWdlZC4KKyAjaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYg ZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfc3RpbWU6CisgI2VuZGlmCisgICAgIGRlZmF1 bHQ6CitAQCAtMTM2LDcgKzEzOSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmlsZVN5c3RlbShp bnQgc3lzbm8KKyAgICAgY2FzZSBfX05SX2ZhY2Nlc3NhdDI6CisgICAgIGNhc2UgX19OUl9mY2ht b2RhdDoKKyAgICAgY2FzZSBfX05SX2ZjaG93bmF0OiAgLy8gU2hvdWxkIGJlIGNhbGxlZCBjaG93 bmF0ID8KKy0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQor KyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX25ld2ZzdGF0YXQ6ICAvLyBmc3RhdGF0 KCkuIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgorICNlbGlmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX19hcm1fXykgfHwgXAorICAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKK0BAIC0xNTUsNyArMTU4LDcgQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubworICAgICBjYXNlIF9fTlJfbWVt ZmRfY3JlYXRlOgorICAgICBjYXNlIF9fTlJfbWtkaXJhdDoKKyAgICAgY2FzZSBfX05SX21rbm9k YXQ6CistI2lmIGRlZmluZWQoX19pMzg2X18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX29sZGxzdGF0OgorICAgICBjYXNl IF9fTlJfb2xkc3RhdDoKKyAjZW5kaWYKK0BAIC0xNjksNyArMTcyLDggQEAgYm9vbCBTeXNjYWxs U2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubworICNlbmRpZgorICAgICBjYXNlIF9fTlJfc3Rh dGZzOiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCisgI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfc3RhdGZzNjQ6CisgI2VuZGlm CisgICAgIGNhc2UgX19OUl9zdGF0eDogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgorQEAg LTE4MCw3ICsxODQsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZpbGVTeXN0ZW0oaW50IHN5c25v CisgICAgIGNhc2UgX19OUl90cnVuY2F0ZTY0OgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfdW5s aW5rYXQ6CistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwg ZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBj NjRfXykKKyAgICAgY2FzZSBfX05SX3V0aW1lOgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfdXRp bWVuc2F0OiAgLy8gTmV3LgorQEAgLTIwNSw3ICsyMTAsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJ c0FsbG93ZWRGaWxlU3lzdGVtQWNjCisgI2VuZGlmCisgICAgICAgcmV0dXJuIHRydWU7CisgLy8g VE9ETyhqbG4pOiB0aGVzZSBzaG91bGQgYmUgZGVuaWVkIGdyYWNlZnVsbHkgYXMgd2VsbCAobW92 ZWQgYmVsb3cpLgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18p IHx8IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9mYWR2aXNlNjQ6ICAvLyBFUEVSTSBub3QgYSB2YWxp ZCBlcnJuby4KKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2kzODZfXykKK0BAIC0yMTgsMTEgKzIy NCwxMiBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRGaWxlU3lzdGVtQWNjCisgICAgIGNh c2UgX19OUl9mbG9jazogICAgICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KKyAgICAgY2Fz ZSBfX05SX2ZzdGF0ZnM6ICAgIC8vIEdpdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdob2xlIGZp bGVzeXN0ZW0uCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwg XAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQ VV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmlu ZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor ICAgICBjYXNlIF9fTlJfZnN0YXRmczY0OgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfZnN5bmM6 ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KKy0jaWYgZGVmaW5lZChfX2kzODZfXykKKysj aWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNl IF9fTlJfb2xkZnN0YXQ6CisgI2VuZGlmCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorQEAgLTIzMCw2ICsyMzcs OCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRGaWxlU3lzdGVtQWNjCisgICAgIGNhc2Ug X19OUl9zeW5jX2ZpbGVfcmFuZ2U6ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KKyAjZWxp ZiBkZWZpbmVkKF9fYXJtX18pCisgICAgIGNhc2UgX19OUl9hcm1fc3luY19maWxlX3JhbmdlOiAg Ly8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorKyAgICBjYXNlIF9fTlJfc3luY19maWxlX3JhbmdlMjogLy8gRVBFUk0gbm90IGEgdmFsaWQg ZXJybm8uCisgI2VuZGlmCisgICAgIGRlZmF1bHQ6CisgICAgICAgcmV0dXJuIGZhbHNlOworQEAg LTI1MCw3ICsyNTksOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0RlbmllZEZpbGVTeXN0ZW1BY2Nl CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9nZXRkZW50czY0OiAgLy8gRVBFUk0gbm90IGEgdmFs aWQgZXJybm8uCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMp KSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3JlYWRk aXI6CisgI2VuZGlmCisgICAgICAgcmV0dXJuIHRydWU7CitAQCAtMjkxLDcgKzMwMSw3IEBAIGJv b2wgU3lzY2FsbFNldHM6OklzR2V0U2ltcGxlSWQoaW50IHN5c24KKyBib29sIFN5c2NhbGxTZXRz OjpJc1Byb2Nlc3NQcml2aWxlZ2VDaGFuZ2UoaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25v KSB7CisgICAgIGNhc2UgX19OUl9jYXBzZXQ6CistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX194ODZfNjRfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9pb3Blcm06 ICAvLyBJbnRlbCBwcml2aWxlZ2UuCisgICAgIGNhc2UgX19OUl9pb3BsOiAgICAvLyBJbnRlbCBw cml2aWxlZ2UuCisgI2VuZGlmCitAQCAtMzQ3LDggKzM1NywxMSBAQCBib29sIFN5c2NhbGxTZXRz OjpJc0FsbG93ZWRTaWduYWxIYW5kbGluCisgICAgIC8vIG92ZXJmbG93LgorICAgICBjYXNlIF9f TlJfc2lnYWx0c3RhY2s6CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1f XykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYm IGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQorKyNpZm5kZWYgX19wb3dlcnBjNjRfXworICAgICBjYXNlIF9fTlJfcnRfc2lndGltZWR3 YWl0X3RpbWU2NDoKKysjZW5kaWYKKyAgICAgY2FzZSBfX05SX3NpZ2FjdGlvbjoKKyAgICAgY2Fz ZSBfX05SX3NpZ3Byb2NtYXNrOgorICAgICBjYXNlIF9fTlJfc2lncmV0dXJuOgorQEAgLTM2Myw3 ICszNzYsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRTaWduYWxIYW5kbGluCisgI2Vu ZGlmCisgICAgIGNhc2UgX19OUl9zaWduYWxmZDQ6CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVf TUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfc2lncGVuZGluZzoKKyAgICAgY2Fz ZSBfX05SX3NpZ3N1c3BlbmQ6CisgI2VuZGlmCitAQCAtMzg3LDcgKzQwMSw3IEBAIGJvb2wgU3lz Y2FsbFNldHM6OklzQWxsb3dlZE9wZXJhdGlvbk9uRmQKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05S X2R1cDM6CisgI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBk ZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRl ZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBf X05SX3NodXRkb3duOgorICNlbmRpZgorICAgICAgIHJldHVybiB0cnVlOworQEAgLTQyMSw3ICs0 MzUsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRQcm9jZXNzU3RhcnRPCisgICAgIGNh c2UgX19OUl9tZW1iYXJyaWVyOgorICAgICBjYXNlIF9fTlJfd2FpdDQ6CisgICAgIGNhc2UgX19O Ul93YWl0aWQ6CistI2lmIGRlZmluZWQoX19pMzg2X18pCisrI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3dhaXRwaWQ6CisgI2Vu ZGlmCisgI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKK0BAIC00NDMsNyArNDU3LDcgQEAgYm9vbCBT eXNjYWxsU2V0czo6SXNBbGxvd2VkUHJvY2Vzc1N0YXJ0TworICAgICBjYXNlIF9fTlJfc2V0X3Rp ZF9hZGRyZXNzOgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfdW5zaGFyZToKKy0jaWYgIWRlZmlu ZWQoX19taXBzX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyNpZiAhZGVmaW5lZChfX21p cHNfXykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykK KyAgICAgY2FzZSBfX05SX3Zmb3JrOgorICNlbmRpZgorICAgICBkZWZhdWx0OgorQEAgLTQ5Niw3 ICs1MTAsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRHZXRPck1vZGlmeVNvCisgICAg ICAgcmV0dXJuIHRydWU7CisgICAgIGRlZmF1bHQ6CisgI2lmIGRlZmluZWQoX194ODZfNjRfXykg fHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmlu ZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3NvY2tldHBhaXI6ICAvLyBXZSB3aWxsIHdhbnQg dG8gaW5zcGVjdCBpdHMgYXJndW1lbnQuCisgI2VuZGlmCisgICAgICAgcmV0dXJuIGZhbHNlOwor QEAgLTUwNiw3ICs1MjAsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRHZXRPck1vZGlm eVNvCisgYm9vbCBTeXNjYWxsU2V0czo6SXNEZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lz bm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8pIHsKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBk ZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChf X2FhcmNoNjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorICAgICBjYXNlIF9fTlJfYWNjZXB0OgorICAgICBjYXNlIF9fTlJfYWNjZXB0NDoK KyAgICAgY2FzZSBfX05SX2JpbmQ6CitAQCAtNTIxLDcgKzUzNSw4IEBAIGJvb2wgU3lzY2FsbFNl dHM6OklzRGVuaWVkR2V0T3JNb2RpZnlTb2MKKyB9CisgCisgI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJD SF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBk ZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKyAvLyBCaWcgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsIGZvciBzb2NrZXRzLgorIGJvb2wg U3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChpbnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8p IHsKK0BAIC01MzUsNyArNTUwLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNTb2NrZXRDYWxsKGlu dCBzeXNubworIH0KKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZp bmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX194ODZfNjRf XykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisrICAgIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKKyBib29sIFN5c2NhbGxTZXRzOjpJc05ldHdvcmtTb2NrZXRJ bmZvcm1hdGlvbihpbnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8pIHsKKyAgICAgY2FzZSBf X05SX2dldHBlZXJuYW1lOgorQEAgLTU2Myw3ICs1NzksNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJ c0FsbG93ZWRBZGRyZXNzU3BhY2VBCisgICAgIGNhc2UgX19OUl9taW5jb3JlOgorICAgICBjYXNl IF9fTlJfbWxvY2thbGw6CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZf NjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9f KQorKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisg ICAgIGNhc2UgX19OUl9tbWFwOgorICNlbmRpZgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9fYXJtX18pIHx8IFwKK0BAIC01OTUsNyArNjExLDggQEAgYm9vbCBTeXNjYWxsU2V0 czo6SXNBbGxvd2VkR2VuZXJhbElvKGludAorICAgc3dpdGNoIChzeXNubykgeworICAgICBjYXNl IF9fTlJfbHNlZWs6CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykg fHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRl ZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorICAgICBjYXNlIF9fTlJfX2xsc2VlazoKKyAjZW5kaWYKKyAjaWYgIWRlZmluZWQoX19hYXJj aDY0X18pCitAQCAtNjE1LDI2ICs2MzIsMjggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2Vk R2VuZXJhbElvKGludAorICAgICBjYXNlIF9fTlJfcmVhZHY6CisgICAgIGNhc2UgX19OUl9wcmVh ZDY0OgorICNpZiBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVf TUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBc CisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3JlY3Y6CisgI2Vu ZGlmCisgI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZp bmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmlu ZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05S X3JlY3Zmcm9tOiAgLy8gQ291bGQgc3BlY2lmeSBzb3VyY2UuCisgICAgIGNhc2UgX19OUl9yZWN2 bXNnOiAgIC8vIENvdWxkIHNwZWNpZnkgc291cmNlLgorICNlbmRpZgorLSNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNl IF9fTlJfc2VsZWN0OgorICNlbmRpZgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorICAgICBjYXNlIF9fTlJfX25ld3NlbGVjdDoKKyAjZW5kaWYKKyAjaWYgZGVmaW5l ZChfX2FybV9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBk ZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9zZW5kOgorICNlbmRpZgorICNpZiBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwg XAorLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8 fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9zZW5kbXNnOiAgLy8gQ291 bGQgc3BlY2lmeSBkZXN0aW5hdGlvbi4KKyAgICAgY2FzZSBfX05SX3NlbmR0bzogICAvLyBDb3Vs ZCBzcGVjaWZ5IGRlc3RpbmF0aW9uLgorICNlbmRpZgorQEAgLTY5MCw3ICs3MDksOCBAQCBib29s IFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRCYXNpY1NjaGVkdWxlCisgICAgICAgcmV0dXJuIHRydWU7 CisgICAgIGNhc2UgX19OUl9nZXRwcmlvcml0eToKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX2FybV9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9uaWNlOgorICNlbmRpZgorICAgICBj YXNlIF9fTlJfc2V0cHJpb3JpdHk6CitAQCAtNzAyLDcgKzcyMiw4IEBAIGJvb2wgU3lzY2FsbFNl dHM6OklzQWxsb3dlZEJhc2ljU2NoZWR1bGUKKyBib29sIFN5c2NhbGxTZXRzOjpJc0FkbWluT3Bl cmF0aW9uKGludCBzeXNubykgeworICAgc3dpdGNoIChzeXNubykgeworICNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVf TUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBc CisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2JkZmx1c2g6Cisg I2VuZGlmCisgICAgIGNhc2UgX19OUl9rZXhlY19sb2FkOgorQEAgLTcxOCw3ICs3MzksOCBAQCBi b29sIFN5c2NhbGxTZXRzOjpJc0FkbWluT3BlcmF0aW9uKGludCBzCisgCisgYm9vbCBTeXNjYWxs U2V0czo6SXNLZXJuZWxNb2R1bGUoaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7Cist I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8 fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAg ICAgY2FzZSBfX05SX2NyZWF0ZV9tb2R1bGU6CisgICAgIGNhc2UgX19OUl9nZXRfa2VybmVsX3N5 bXM6ICAvLyBTaG91bGQgRU5PU1lTLgorICAgICBjYXNlIF9fTlJfcXVlcnlfbW9kdWxlOgorQEAg LTc1MSw3ICs3NzMsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZzQ29udHJvbChpbnQgc3lzbm8p CisgICAgIGNhc2UgX19OUl9zd2Fwb2ZmOgorICAgICBjYXNlIF9fTlJfc3dhcG9uOgorICNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl91bW91bnQ6CisgI2VuZGlmCisgICAg IGNhc2UgX19OUl91bW91bnQyOgorQEAgLTc2Nyw3ICs3OTAsNyBAQCBib29sIFN5c2NhbGxTZXRz OjpJc051bWEoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9nZXRjcHU6CisgICAgIGNhc2Ug X19OUl9tYmluZDoKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisr ICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAg Y2FzZSBfX05SX21pZ3JhdGVfcGFnZXM6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9tb3ZlX3Bh Z2VzOgorQEAgLTgwMiwxNCArODI1LDE1IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzR2xvYmFsUHJv Y2Vzc0Vudmlyb24KKyAgIHN3aXRjaCAoc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX2FjY3Q6ICAv LyBQcml2aWxlZ2VkLgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykK KysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAg ICBjYXNlIF9fTlJfZ2V0cmxpbWl0OgorICNlbmRpZgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8 fCBkZWZpbmVkKF9fYXJtX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19h cm1fXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfdWdldHJsaW1p dDoKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAg KGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklU UykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfdWxp bWl0OgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfZ2V0cnVzYWdlOgorQEAgLTg0Myw3ICs4Njcs NyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0dsb2JhbFN5c3RlbVN0YXR1cyhpCisgI2VuZGlmCisg ICAgIGNhc2UgX19OUl9zeXNpbmZvOgorICAgICBjYXNlIF9fTlJfdW5hbWU6CistI2lmIGRlZmlu ZWQoX19pMzg2X18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19wb3dlcnBj NjRfXykKKyAgICAgY2FzZSBfX05SX29sZHVuYW1lOgorICAgICBjYXNlIF9fTlJfb2xkb2xkdW5h bWU6CisgI2VuZGlmCitAQCAtOTI1LDggKzk0OSwxNiBAQCBib29sIFN5c2NhbGxTZXRzOjpJc1N5 c3RlbVZTZW1hcGhvcmVzKGluCisgfQorICNlbmRpZgorIAorKy8qIHNoaXR0eSBoYWNrIGFyb3Vu ZCBWb2lkJ3MgNC4xOSBrZXJuZWwgaGVhZGVycyBtaXNzaW5nIHRob3NlIG51bWJlcnMgKi8KKysj aWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiAhZGVmaW5lZChfX05SX3NobWdldCkKKysjZGVm aW5lIF9fTlJfc2htZ2V0IDM5NQorKyNkZWZpbmUgX19OUl9zaG1jdGwgMzk2CisrI2RlZmluZSBf X05SX3NobWF0IDM5NworKyNkZWZpbmUgX19OUl9zaG1kdCAzOTgKKysjZW5kaWYKKysKKyAjaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJt X18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVm aW5lZChfX3Bvd2VycGM2NF9fKSB8fCBcCisgICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFN SUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzY0X0JJVFMpKQorIC8vIFRoZXNlIGdpdmUgYSBsb3Qg b2YgYW1iaWVudCBhdXRob3JpdHkgYW5kIGJ5cGFzcyB0aGUgc2V0dWlkIHNhbmRib3guCisgYm9v bCBTeXNjYWxsU2V0czo6SXNTeXN0ZW1WU2hhcmVkTWVtb3J5KGludCBzeXNubykgeworQEAgLTk1 OCw3ICs5OTAsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc1N5c3RlbVZNZXNzYWdlUXVldWUoCisg I2VuZGlmCisgCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMp KSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAvLyBCaWcgc3lzdGVtIFYgbXVs dGlwbGV4aW5nIHN5c3RlbSBjYWxsLgorIGJvb2wgU3lzY2FsbFNldHM6OklzU3lzdGVtVklwYyhp bnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8pIHsKK0BAIC05NzgsNyArMTAxMSw4IEBAIGJv b2wgU3lzY2FsbFNldHM6OklzQW55U3lzdGVtVihpbnQgc3lzbm8KKyAgIHJldHVybiBJc1N5c3Rl bVZNZXNzYWdlUXVldWUoc3lzbm8pIHx8IElzU3lzdGVtVlNlbWFwaG9yZXMoc3lzbm8pIHx8Cisg ICAgICAgICAgSXNTeXN0ZW1WU2hhcmVkTWVtb3J5KHN5c25vKTsKKyAjZWxpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICByZXR1cm4gSXNTeXN0ZW1WSXBjKHN5c25vKTsKKyAjZW5kaWYKKyB9CitA QCAtMTAzNSw3ICsxMDY5LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGYU5vdGlmeShpbnQgc3lz bm8pCisgYm9vbCBTeXNjYWxsU2V0czo6SXNUaW1lcihpbnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAo c3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX2dldGl0aW1lcjoKKy0jaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18p IHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfYWxhcm06 CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9zZXRpdGltZXI6CitAQCAtMTExNywxOCArMTE1Miwy MiBAQCBib29sIFN5c2NhbGxTZXRzOjpJc01pc2MoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19O Ul9zeW5jZnM6CisgICAgIGNhc2UgX19OUl92aGFuZ3VwOgorIC8vIFRoZSBzeXN0ZW0gY2FsbHMg YmVsb3cgYXJlIG5vdCBpbXBsZW1lbnRlZC4KKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKysg ICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfYWZzX3N5c2NhbGw6Cisg I2VuZGlmCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8 fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2JyZWFrOgor ICNlbmRpZgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8 IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194 ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCisgICAgIGNhc2UgX19OUl9nZXRwbXNnOgorICNlbmRpZgorICNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9ndHR5OgorICAgICBjYXNlIF9fTlJfaWRsZToKKyAg ICAgY2FzZSBfX05SX2xvY2s6CitAQCAtMTEzNiwyMCArMTE3NSwyMiBAQCBib29sIFN5c2NhbGxT ZXRzOjpJc01pc2MoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9wcm9mOgorICAgICBjYXNl IF9fTlJfcHJvZmlsOgorICNlbmRpZgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorKyAgICBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9wdXRwbXNnOgorICNlbmRpZgor ICNpZiBkZWZpbmVkKF9feDg2XzY0X18pCisgICAgIGNhc2UgX19OUl9zZWN1cml0eToKKyAjZW5k aWYKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwK KysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfc3R0eToKKyAjZW5k aWYKKy0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKQorKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8 IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3R1eGNhbGw6CisgI2VuZGlm CistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykg JiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3ZzZXJ2ZXI6CisgI2Vu ZGlmCisgICAgICAgcmV0dXJuIHRydWU7CistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lz Y2FsbF9zZXRzLmgKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmgKK0BAIC00 NiwxMyArNDYsMTQgQEAgY2xhc3MgU0FOREJPWF9FWFBPUlQgU3lzY2FsbFNldHMgeworICAgc3Rh dGljIGJvb2wgSXNEZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pOworIAorICNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCisgICAvLyBCaWcgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsIGZv ciBzb2NrZXRzLgorICAgc3RhdGljIGJvb2wgSXNTb2NrZXRDYWxsKGludCBzeXNubyk7CisgI2Vu ZGlmCisgCisgI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBk ZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRl ZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgIHN0YXRpYyBi b29sIElzTmV0d29ya1NvY2tldEluZm9ybWF0aW9uKGludCBzeXNubyk7CisgI2VuZGlmCisgCitA QCAtODMsNyArODQsNyBAQCBjbGFzcyBTQU5EQk9YX0VYUE9SVCBTeXNjYWxsU2V0cyB7CisgICBz dGF0aWMgYm9vbCBJc1N5c3RlbVZTZW1hcGhvcmVzKGludCBzeXNubyk7CisgI2VuZGlmCisgI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2Fy bV9fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRl ZmluZWQoX19wb3dlcnBjNjRfXykgfHwgXAorICAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV82NF9CSVRTKSkKKyAgIC8vIFRoZXNlIGdpdmUgYSBs b3Qgb2YgYW1iaWVudCBhdXRob3JpdHkgYW5kIGJ5cGFzcyB0aGUgc2V0dWlkIHNhbmRib3guCisg ICBzdGF0aWMgYm9vbCBJc1N5c3RlbVZTaGFyZWRNZW1vcnkoaW50IHN5c25vKTsKK0BAIC05NSw3 ICs5Niw4IEBAIGNsYXNzIFNBTkRCT1hfRVhQT1JUIFN5c2NhbGxTZXRzIHsKKyAjZW5kaWYKKyAK KyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysg ICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgLy8gQmlnIHN5c3RlbSBWIG11bHRpcGxleGlu ZyBzeXN0ZW0gY2FsbC4KKyAgIHN0YXRpYyBib29sIElzU3lzdGVtVklwYyhpbnQgc3lzbm8pOwor ICNlbmRpZgorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21p dW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi9zeXNjYWxsLmNjCisrKysgcXQ2LXdlYmVuZ2lu ZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi9z eXNjYWxsLmNjCitAQCAtMTgsNyArMTgsNyBAQCBuYW1lc3BhY2Ugc2FuZGJveCB7CisgbmFtZXNw YWNlIHsKKyAKKyAjaWYgZGVmaW5lZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFS Q0hfQ1BVX0FSTV9GQU1JTFkpIHx8IFwKKy0gICAgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkKKysgICAgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgfHwgZGVmaW5lZCAoQVJDSF9D UFVfUFBDNjRfRkFNSUxZKQorIC8vIE51bWJlciB0aGF0J3Mgbm90IGN1cnJlbnRseSB1c2VkIGJ5 IGFueSBMaW51eCBrZXJuZWwgQUJJcy4KKyBjb25zdCBpbnQga0ludmFsaWRTeXNjYWxsTnVtYmVy ID0gMHgzNTFkMzsKKyAjZWxzZQorQEAgLTMwOCwxMCArMzA4LDU0IEBAIGFzbSgvLyBXZSBuZWVk IHRvIGJlIGFibGUgdG8gdGVsbCB0aGUga2UKKyAgICAgIjI6cmV0XG4iCisgICAgICIuY2ZpX2Vu ZHByb2NcbiIKKyAgICAgIi5zaXplIFN5c2NhbGxBc20sIC4tU3lzY2FsbEFzbVxuIgorKyNlbGlm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAgIi50ZXh0XG4iCisrICAgICIuYWxpZ24gNFxu IgorKyAgICAiLnR5cGUgU3lzY2FsbEFzbSBAZnVuY3Rpb25cbiIKKysgICAgIlN5c2NhbGxBc206 XG4iCisrICAgICIuY2ZpX3N0YXJ0cHJvY1xuIgorKworKyAgICAvLyBDaGVjayBpZiByMyBpcyBu ZWdhdGl2ZQorKyAgICAiY21wZGkgMywgMFxuIgorKyAgICAiYmd0IDJmXG4iCisrCisrICAgIC8v IExvYWQgYWRkcmVzcyBvZiAzZiBpbnRvIHIzIGFuZCByZXR1cm4KKysgICAgIm1mbHIgMTBcbiIK KysgICAgImJsIDFmXG4iCisrICAgICIxOiBtZmxyIDNcbiIKKysgICAgIm10bHIgMTBcbiIKKysg ICAgImFkZGkgMywgMywgNCoxM1xuIgorKyAgICAiYmxyXG4iCisrCisrICAgIC8vIExvYWQgYXJn dW1lbnRzIGZyb20gYXJyYXkgaW50byByMy04CisrICAgIC8vIHNhdmUgcGFyYW0gMyBpbiByMTAK KysgICAgIjI6XG4iCisrICAgICJtciAwLCAzXG4iCisrICAgICJsZCAzLCAwKDQpXG4iCisrICAg ICJsZCA1LCAxNig0KVxuIgorKyAgICAibGQgNiwgMjQoNClcbiIKKysgICAgImxkIDcsIDMyKDQp XG4iCisrICAgICJsZCA4LCA0MCg0KVxuIgorKyAgICAibGQgNCwgOCg0KVxuIgorKyAgICAibGkg OSwgMFxuIgorKworKyAgICAvLyBFbnRlciBrZXJuZWwKKysgICAgInNjXG4iCisrCisrICAgIC8v IE1hZ2ljIHJldHVybiBhZGRyZXNzCisrICAgICIzOlxuIgorKyAgICAvLyBMaWtlIE1JUFMsIHBw YzY0IHJldHVybiB2YWx1ZXMgYXJlIGFsd2F5cyBwb3NpdGl2ZS4KKysgICAgLy8gQ2hlY2sgZm9y IGVycm9yIGluIGNyMC5TTyBhbmQgbmVnYXRlIHVwb24gZXJyb3IKKysgICAgImJjIDQsIDMsIDRm XG4iCisrICAgICJuZWcgMywgM1xuIgorKyAgICAiNDogYmxyXG4iCisrCisrICAgICIuY2ZpX2Vu ZHByb2NcbiIKKysgICAgIi5zaXplIFN5c2NhbGxBc20sIC4tU3lzY2FsbEFzbVxuIgorICNlbmRp ZgorICAgICApOyAgLy8gYXNtCisgCistI2lmIGRlZmluZWQoX194ODZfNjRfXykKKysjaWYgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgZXh0ZXJuICJDIiB7 CisgaW50cHRyX3QgU3lzY2FsbEFzbShpbnRwdHJfdCBuciwgY29uc3QgaW50cHRyX3QgYXJnc1s2 XSk7CisgfQorQEAgLTQyNSw2ICs0NjksOCBAQCBpbnRwdHJfdCBTeXNjYWxsOjpDYWxsKGludCBu ciwKKyAgICAgcmV0ID0gaW5vdXQ7CisgICB9CisgCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQorKyAgaW50cHRyX3QgcmV0ID0gU3lzY2FsbEFzbShuciwgYXJncyk7CisgI2Vsc2UKKyAj ZXJyb3IgIlVuaW1wbGVtZW50ZWQgYXJjaGl0ZWN0dXJlIgorICNlbmRpZgorQEAgLTQ0MSw4ICs0 ODcsMTggQEAgdm9pZCBTeXNjYWxsOjpQdXRWYWx1ZUluVWNvbnRleHQoaW50cHRyXworICAgICAv LyBuZWVkcyB0byBiZSBjaGFuZ2VkIGJhY2suCisgICAgIHJldF92YWwgPSAtcmV0X3ZhbDsKKyAg ICAgU0VDQ09NUF9QQVJNNChjdHgpID0gMTsKKy0gIH0gZWxzZQorKyAgfSBlbHNlIHsKKyAgICAg U0VDQ09NUF9QQVJNNChjdHgpID0gMDsKKysgIH0KKysjZW5kaWYKKysjaWYgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQorKyAgLy8gU2FtZSBhcyBNSVBTLCBuZWVkIHRvIGludmVydCByZXQgYW5kIHNl dCBlcnJvciByZWdpc3RlciAoY3IwLlNPKQorKyAgaWYgKHJldF92YWwgPD0gLTEgJiYgcmV0X3Zh bCA+PSAtNDA5NSkgeworKyAgICByZXRfdmFsID0gLXJldF92YWw7CisrICAgIGN0eC0+dWNfbWNv bnRleHQucmVncy0+Y2NyIHw9ICgxIDw8IDI4KTsKKysgIH0gZWxzZSB7CisrICAgIGN0eC0+dWNf bWNvbnRleHQucmVncy0+Y2NyICY9IH4oMSA8PCAyOCk7CisrICB9CisgI2VuZGlmCisgICBTRUND T01QX1JFU1VMVChjdHgpID0gc3RhdGljX2Nhc3Q8Z3JlZ190PihyZXRfdmFsKTsKKyB9CistLS0g cXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xp bnV4L3NlY2NvbXAtYnBmL3RyYXAuY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3RyYXAuY2MKK0BAIC0yMzMs NiArMjMzLDIwIEBAIHZvaWQgVHJhcDo6U2lnU3lzKGludCBuciwgTGludXhTaWdJbmZvKgorICAg ICAgIFNldElzSW5TaWdIYW5kbGVyKCk7CisgICAgIH0KKyAKKysjaWYgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorKyAgICAvLyBPbiBwcGM2NCtnbGliYywgc29tZSBzeXNjYWxscyBzZWVtIHRvIGFj Y2lkZW50YWxseSBuZWdhdGUgdGhlIGZpcnN0CisrICAgIC8vIHBhcmFtZXRlciB3aGljaCBjYXVz ZXMgY2hlY2tzIGFnYWluc3QgaXQgdG8gZmFpbC4gRm9yIG5vdywgbWFudWFsbHkKKysgICAgLy8g bmVnYXRlIHRoZW0gYmFjay4KKysgICAgLy8gVE9ETyhzaGF3bkBhbmFzdGFzLmlvKTogaW52ZXN0 aWdhdGUgdGhpcyBpc3N1ZSBmdXJ0aGVyCisrICAgIGF1dG8gbnIgPSBTRUNDT01QX1NZU0NBTEwo Y3R4KTsKKysgICAgaWYgKG5yID09IF9fTlJfb3BlbmF0IHx8IG5yID09IF9fTlJfbWtkaXJhdCB8 fCBuciA9PSBfX05SX2ZhY2Nlc3NhdCB8fCBuciA9PSBfX05SX3JlYWRsaW5rYXQgfHwKKysgICAg ICAgIG5yID09IF9fTlJfcmVuYW1lYXQgfHwgbnIgPT0gX19OUl9yZW5hbWVhdDIgfHwgbnIgPT0g X19OUl9uZXdmc3RhdGF0IHx8IG5yID09IF9fTlJfdW5saW5rYXQpIHsKKysgICAgICAgIGlmIChz dGF0aWNfY2FzdDxpbnQ+KFNFQ0NPTVBfUEFSTTEoY3R4KSkgPiAwKSB7CisrICAgICAgICAgICAg U0VDQ09NUF9QQVJNMShjdHgpID0gLVNFQ0NPTVBfUEFSTTEoY3R4KTsKKysgICAgICAgIH0KKysg ICAgfQorKyNlbmRpZgorKworICAgICAvLyBDb3B5IHRoZSBzZWNjb21wLXNwZWNpZmljIGRhdGEg aW50byBhIGFyY2hfc2VjY29tcF9kYXRhIHN0cnVjdHVyZS4gVGhpcworICAgICAvLyBpcyB3aGF0 IHdlIGFyZSBzaG93aW5nIHRvIFRyYXBGbmMgY2FsbGJhY2tzIHRoYXQgdGhlIHN5c3RlbSBjYWxs CisgICAgIC8vIGV2YWx1YXRvciByZWdpc3RlcmVkIHdpdGggdGhlIHNhbmRib3guCistLS0gcXQ2 LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4 L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3Jk cGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5jYworQEAg LTgwLDcgKzgwLDcgQEAgYm9vbCBDaHJvb3RUb1NhZmVFbXB0eURpcigpIHsKKyAgIHBpZF90IHBp ZCA9IC0xOworICAgYWxpZ25hcygxNikgY2hhciBzdGFja19idWZbUFRIUkVBRF9TVEFDS19NSU5d OworICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVf QVJNX0ZBTUlMWSkgfHwgXAorLSAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorKyAg ICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0 X0ZBTUlMWSkKKyAgIC8vIFRoZSBzdGFjayBncm93cyBkb3dud2FyZC4KKyAgIHZvaWQqIHN0YWNr ID0gc3RhY2tfYnVmICsgc2l6ZW9mKHN0YWNrX2J1Zik7CisgI2Vsc2UKK0BAIC04OSw3ICs4OSw5 IEBAIGJvb2wgQ2hyb290VG9TYWZlRW1wdHlEaXIoKSB7CisgCisgICBpbnQgY2xvbmVfZmxhZ3Mg PSBDTE9ORV9GUyB8IExJTlVYX1NJR0NITEQ7CisgICB2b2lkKiB0bHMgPSBudWxscHRyOworLSNp ZiAoZGVmaW5lZChBUkNIX0NQVV9YODZfNjQpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNX0ZBTUlM WSkpICYmIFwKKysvLyBSQUpBIHRoaXMgbWlnaHQgYmUgaXQuLi4KKysjaWYgKGRlZmluZWQoQVJD SF9DUFVfWDg2XzY0KSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX0FSTV9GQU1JTFkpIHx8IFwKKysgICAg ZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpKSAmJiBcCisgICAgICFkZWZpbmVkKE1FTU9S WV9TQU5JVElaRVIpCisgICAvLyBVc2UgQ0xPTkVfVk0gfCBDTE9ORV9WRk9SSyBhcyBhbiBvcHRp bWl6YXRpb24gdG8gYXZvaWQgY29weWluZyBwYWdlIHRhYmxlcy4KKyAgIC8vIFNpbmNlIGNsb25l IHdyaXRlcyB0byB0aGUgbmV3IGNoaWxkJ3MgVExTIGJlZm9yZSByZXR1cm5pbmcsIHdlIG11c3Qg c2V0IGEKK0BAIC05Nyw2ICs5OSwxMSBAQCBib29sIENocm9vdFRvU2FmZUVtcHR5RGlyKCkgewor ICAgLy8gZ2xpYmMgcGVyZm9ybXMgc3lzY2FsbHMgYnkgY2FsbGluZyBhIGZ1bmN0aW9uIHBvaW50 ZXIgaW4gVExTLCBzbyB3ZSBkbyBub3QKKyAgIC8vIGF0dGVtcHQgdGhpcyBvcHRpbWl6YXRpb24u CisgICAvLyBUT0RPKGNyYnVnLmNvbS8xMjQ3NDU4KSBCcm9rZW4gaW4gTVNhbiBidWlsZHMgYWZ0 ZXIgTExWTSBmMWJiMzBhNDk1NmYuCisrICAvLworKyAgLy8gTk9URTogV2l0aG91dCBDTE9ORV9W TSwgZm9udGNvbmZpZyB3aWxsIGF0dGVtcHQgdG8gcmVsb2FkIGNvbmZpZ3VyYXRpb24KKysgIC8v IGluIGV2ZXJ5IHRocmVhZC4gIFNpbmNlIHRoZSByZW5kZXJlZCB0aHJlYWRzIGFyZSBzYW5kYm94 ZWQgd2l0aG91dAorKyAgLy8gZmlsZXN5c3RlbSBhY2Nlc3MgKGUuZy4gdG8gL2V0Yy9mb250cy9m b250cy5jb25mKSB0aGlzIHdpbGwgY2F1c2UgZm9udAorKyAgLy8gY29uZmlndXJhaXRvbiBsb2Fk aW5nIGZhaWx1cmVzIGFuZCBubyBmb250cyB3aWxsIGJlIGRpc3BsYXllZCEKKyAgIGNsb25lX2Zs YWdzIHw9IENMT05FX1ZNIHwgQ0xPTkVfVkZPUksgfCBDTE9ORV9TRVRUTFM7CisgCisgICAvLyBQ VEhSRUFEX1NUQUNLX01JTiBjYW4gYmUgZHluYW1pYyBpbiBnbGliYzIuMzQrLCBzbyBpdCBpcyBu b3QgcG9zc2libGUgdG8KKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VydmljZXMvc3lzY2FsbF93cmFwcGVycy5jYworKysr IHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgv c2VydmljZXMvc3lzY2FsbF93cmFwcGVycy5jYworQEAgLTYxLDcgKzYxLDcgQEAgbG9uZyBzeXNf Y2xvbmUodW5zaWduZWQgbG9uZyBmbGFncywKKyAjaWYgZGVmaW5lZChBUkNIX0NQVV9YODZfNjQp CisgICByZXR1cm4gc3lzY2FsbChfX05SX2Nsb25lLCBmbGFncywgY2hpbGRfc3RhY2ssIHB0aWQs IGN0aWQsIHRscyk7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9YODYpIHx8IGRlZmluZWQoQVJD SF9DUFVfQVJNX0ZBTUlMWSkgfHwgXAorLSAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KQorKyAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0X0ZBTUlMWSkKKyAgIC8vIENPTkZJR19DTE9ORV9CQUNLV0FSRFMgZGVmaW5lZC4KKyAg IHJldHVybiBzeXNjYWxsKF9fTlJfY2xvbmUsIGZsYWdzLCBjaGlsZF9zdGFjaywgcHRpZCwgdGxz LCBjdGlkKTsKKyAjZW5kaWYKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzY2FsbF9icm9rZXIvYnJva2VyX3Byb2Nlc3Mu Y2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94 L2xpbnV4L3N5c2NhbGxfYnJva2VyL2Jyb2tlcl9wcm9jZXNzLmNjCitAQCAtMTY0LDcgKzE2NCw3 IEBAIGJvb2wgQnJva2VyUHJvY2Vzczo6SXNTeXNjYWxsQnJva2VyYWJsZSgKKyAjaWYgZGVmaW5l ZChfX05SX2ZzdGF0YXQ2NCkKKyAgICAgY2FzZSBfX05SX2ZzdGF0YXQ2NDoKKyAjZW5kaWYKKy0j aWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyNpZiBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dl cnBjNjRfXykKKyAgICAgY2FzZSBfX05SX25ld2ZzdGF0YXQ6CisgI2VuZGlmCisgICAgICAgcmV0 dXJuICFmYXN0X2NoZWNrIHx8IHBvbGljeV8tPmFsbG93ZWRfY29tbWFuZF9zZXQudGVzdChDT01N QU5EX1NUQVQpOworLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hy b21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zZWNjb21wLmgKKysrKyBx dDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5 c3RlbV9oZWFkZXJzL2xpbnV4X3NlY2NvbXAuaAorQEAgLTM4LDYgKzM4LDkgQEAKKyAjaWZuZGVm IEVNX0FBUkNINjQKKyAjZGVmaW5lIEVNX0FBUkNINjQgMTgzCisgI2VuZGlmCisrI2lmbmRlZiBF TV9QUEM2NAorKyNkZWZpbmUgRU1fUFBDNjQgMjEKKysjZW5kaWYKKyAKKyAjaWZuZGVmIF9fQVVE SVRfQVJDSF82NEJJVAorICNkZWZpbmUgX19BVURJVF9BUkNIXzY0QklUIDB4ODAwMDAwMDAKK0BA IC03MCw2ICs3MywxMiBAQAorICNpZm5kZWYgQVVESVRfQVJDSF9BQVJDSDY0CisgI2RlZmluZSBB VURJVF9BUkNIX0FBUkNINjQgKEVNX0FBUkNINjQgfCBfX0FVRElUX0FSQ0hfNjRCSVQgfCBfX0FV RElUX0FSQ0hfTEUpCisgI2VuZGlmCisrI2lmbmRlZiBBVURJVF9BUkNIX1BQQzY0CisrI2RlZmlu ZSBBVURJVF9BUkNIX1BQQzY0IChFTV9QUEM2NCB8IF9fQVVESVRfQVJDSF82NEJJVCkKKysjZW5k aWYKKysjaWZuZGVmIEFVRElUX0FSQ0hfUFBDNjRMRQorKyNkZWZpbmUgQVVESVRfQVJDSF9QUEM2 NExFIChFTV9QUEM2NCB8IF9fQVVESVRfQVJDSF82NEJJVCB8IF9fQVVESVRfQVJDSF9MRSkKKysj ZW5kaWYKKyAKKyAvLyBGb3IgcHJjdGwuaAorICNpZm5kZWYgUFJfU0VUX1NFQ0NPTVAKKy0tLSBx dDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGlu dXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2lnbmFsLmgKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4y L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4 X3NpZ25hbC5oCitAQCAtMTMsNyArMTMsNyBAQAorIC8vIChub3QgdW5kZWZpbmVkLCBidXQgZGVm aW5lZCBkaWZmZXJlbnQgdmFsdWVzIGFuZCBpbiBkaWZmZXJlbnQgbWVtb3J5CisgLy8gbGF5b3V0 cykuIFNvLCBmaWxsIHRoZSBnYXAgaGVyZS4KKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAgZGVmaW5lZChf X2FhcmNoNjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorIAorICNkZWZpbmUgTElOVVhfU0lHSFVQIDEKKyAjZGVmaW5lIExJTlVYX1NJR0lO VCAyCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9z YW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgKKysrKyBxdDYtd2Vi ZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9o ZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgKK0BAIC0zNSw1ICszNSw5IEBACisgI2luY2x1ZGUgInNh bmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvYXJtNjRfbGludXhfc3lzY2FsbHMuaCIKKyAjZW5k aWYKKyAKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyNpbmNsdWRlICJzYW5kYm94L2xp bnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3N5c2NhbGxzLmgiCisrI2VuZGlmCisrCisg I2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX0xJTlVYX1NZU0NBTExTX0hf CisgCistLS0gL2Rldi9udWxsCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF9zeXNjYWxs cy5oCitAQCAtMCwwICsxLDEyIEBACisrLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1 dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorKy8vIGZvdW5k IGluIHRoZSBMSUNFTlNFIGZpbGUuCisrCisrI2lmbmRlZiBTQU5EQk9YX0xJTlVYX1NZU1RFTV9I RUFERVJTX1BQQzY0X0xJTlVYX1NZU0NBTExTX0hfCisrI2RlZmluZSBTQU5EQk9YX0xJTlVYX1NZ U1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1NZU0NBTExTX0hfCisrCisrI2luY2x1ZGUgPGFzbS91 bmlzdGQuaD4KKysKKysvL1RPRE86IGlzIGl0IG5lY2Vzc2FyeSB0byByZWRlZmluZSBzeXNjYWxs IG51bWJlcnMgZm9yIFBQQzY0PworKworKyNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1f SEVBREVSU19QUEM2NF9MSU5VWF9TWVNDQUxMU19IXworLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIu b3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9wb2xpY3kvbGludXgvYnBmX3V0aWxp dHlfcG9saWN5X2xpbnV4LmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2FuZGJveC9wb2xpY3kvbGludXgvYnBmX3V0aWxpdHlfcG9saWN5X2xpbnV4LmNj CitAQCAtMzgsNyArMzgsNyBAQCBSZXN1bHRFeHByIFV0aWxpdHlQcm9jZXNzUG9saWN5OjpFdmFs dWF0CisgICAgIGNhc2UgX19OUl9mZGF0YXN5bmM6CisgICAgIGNhc2UgX19OUl9mc3luYzoKKyAj aWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f bWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19h YXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2dldHJs aW1pdDoKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9f KQorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2Fu ZGJveC9wb2xpY3kvbGludXgvYnBmX3JlbmRlcmVyX3BvbGljeV9saW51eC5jYworKysrIHF0Ni13 ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvcG9saWN5L2xpbnV4 L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MKK0BAIC0xNSw2ICsxNSwxMSBAQAorICNpbmNs dWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgiCisgI2lu Y2x1ZGUgInNhbmRib3gvcG9saWN5L2xpbnV4L3NhbmRib3hfbGludXguaCIKKyAKKysvLyBPbiBQ UEM2NCwgVENHRVRTIGlzIGRlZmluZWQgaW4gdGVybXMgb2Ygc3RydWN0IHRlcm1pb3MsIHNvIHdl IG11c3QgaW5jbHVkZSB0ZXJtaW9zLmgKKysjaWZkZWYgX19wb3dlcnBjNjRfXworKyNpbmNsdWRl IDx0ZXJtaW9zLmg+CisrI2VuZGlmCisrCisgLy8gVE9ETyh2aWduYXR0aSk6IHJlcGxhY2UgdGhl IGxvY2FsIGRlZmluaXRpb25zIGJlbG93IHdpdGggI2luY2x1ZGUKKyAvLyA8bGludXgvZG1hLWJ1 Zi5oPiBvbmNlIGtlcm5lbCB2ZXJzaW9uIDQuNiBiZWNvbWVzIHdpZGVseSB1c2VkLgorICNpbmNs dWRlIDxsaW51eC90eXBlcy5oPgorQEAgLTcyLDcgKzc3LDcgQEAgUmVzdWx0RXhwciBSZW5kZXJl clByb2Nlc3NQb2xpY3k6OkV2YWx1YQorICAgICBjYXNlIF9fTlJfZnRydW5jYXRlNjQ6CisgI2Vu ZGlmCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVm aW5lZChfX21pcHNfXykgfHwgXAorLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyAgICBkZWZp bmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19O Ul9nZXRybGltaXQ6CisgICAgIGNhc2UgX19OUl9zZXRybGltaXQ6CisgLy8gV2UgYWxsb3cgc2V0 cmxpbWl0IHRvIGR5bmFtaWNhbGx5IGFkanVzdCB0aGUgYWRkcmVzcyBzcGFjZSBsaW1pdCBhcwor LS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYW5nbGUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuaAorKysrIHF0Ni13 ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2FuZ2xlL3Ny Yy9jb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmgKK0BAIC05Myw3ICs5MywxNiBAQCBjbGFz cyBUSW5mb1NpbmtCYXNlCisgICAgICAgICAgICAgc3RyZWFtLnByZWNpc2lvbig4KTsKKyAgICAg ICAgICAgICBzdHJlYW0gPDwgZjsKKyAgICAgICAgIH0KKy0gICAgICAgIHNpbmsuYXBwZW5kKHN0 cmVhbS5zdHIoKSk7CisrCisrICAgICAgICAvLyBIYWNrIHRvIHdvcmsgYXJvdW5kIGEgYnVnIHdo ZXJlIG5lZ2F0aXZlIGZsb2F0aW5nIHBvaW50IHZhbHVlcworKyAgICAgICAgLy8gYXJlIHJlbmRl cmVkIGxpa2UgJy4wLjUnIGluc3RlYWQgb2YgJy0wLjUnCisrICAgICAgICBzdGQ6OnN0cmluZyBy ZXMoc3RyZWFtLnN0cigpKTsKKysKKysgICAgICAgIGlmIChzaWduYml0KGYpKSB7IC8vIHRlc3Qg aWYgZiBpcyBuZWdhdGl2ZQorKyAgICAgICAgICAgIHJlc1swXSA9ICctJzsKKysgICAgICAgIH0K KysKKysgICAgICAgIHNpbmsuYXBwZW5kKHJlcyk7CisgICAgICAgICByZXR1cm4gKnRoaXM7Cisg ICAgIH0KKyAgICAgLy8gV3JpdGUgYm9vbGVhbiB2YWx1ZXMgYXMgdGhlaXIgbmFtZXMgaW5zdGVh ZCBvZiBpbnRlZ3JhbCB2YWx1ZS4KKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9Db25zdGFudHMu aAorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9Db25zdGFudHMuaAorQEAgLTksNiArOSw3IEBACisgI2lm bmRlZiBMSUJBTkdMRV9DT05TVEFOVFNfSF8KKyAjZGVmaW5lIExJQkFOR0xFX0NPTlNUQU5UU19I XworIAorKyNpbmNsdWRlIDxjc3RkZGVmPgorICNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIK KyAKKyAjaW5jbHVkZSA8c3RkaW50Lmg+CistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvQlVJTEQuZ24KKysrKyBx dDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jp bmdzc2wvQlVJTEQuZ24KK0BAIC0xMDEsNiArMTAxLDEzIEBAIGlmIChpc193aW4gJiYgIWlzX21z YW4gJiYgY3VycmVudF9jcHUgIT0KKyAgICAgICB9IGVsc2UgeworICAgICAgICAgcHVibGljX2Nv bmZpZ3MgPSBbICI6bm9fYXNtX2NvbmZpZyIgXQorICAgICAgIH0KKysgICAgfSBlbHNlIGlmIChj dXJyZW50X2NwdSA9PSAicHBjNjQiKSB7CisrICAgICAgaWYgKGlzX2xpbnV4KSB7CisrICAgICAg ICAjIFRPRE86IHBwYzY0IChiZSkgY2hlY2sKKysgICAgICAgIHNvdXJjZXMgKz0gY3J5cHRvX3Nv dXJjZXNfbGludXhfcHBjNjRsZQorKyAgICAgIH0gZWxzZSB7CisrICAgICAgICBwdWJsaWNfY29u ZmlncyA9IFsgIjpub19hc21fY29uZmlnIiBdCisrICAgICAgfQorICAgICB9IGVsc2UgeworICAg ICAgIHB1YmxpY19jb25maWdzID0gWyAiOm5vX2FzbV9jb25maWciIF0KKyAgICAgfQorLS0tIHF0 Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YnJlYWtwYWQvQlVJTEQuZ24KKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9CVUlMRC5nbgorQEAgLTYyMyw3ICs2MjMsNiBA QCBpZiAoaXNfbGludXggfHwgaXNfY2hyb21lb3MgfHwgaXNfYW5kcm9pCisgICAgICAgImJyZWFr cGFkL3NyYy9jbGllbnQvbWluaWR1bXBfZmlsZV93cml0ZXIuaCIsCisgICAgICAgImJyZWFrcGFk L3NyYy9jb21tb24vY29udmVydF9VVEYuY2MiLAorICAgICAgICJicmVha3BhZC9zcmMvY29tbW9u L2NvbnZlcnRfVVRGLmgiLAorLSAgICAgICJicmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L2JyZWFr cGFkX2dldGNvbnRleHQuUyIsCisgICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxm X2NvcmVfZHVtcC5jYyIsCisgICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2Nv cmVfZHVtcC5oIiwKKyAgICAgICAiYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9lbGZ1dGlscy5j YyIsCitAQCAtNjYzLDYgKzY2MiwxNCBAQCBpZiAoaXNfbGludXggfHwgaXNfY2hyb21lb3MgfHwg aXNfYW5kcm9pCisgCisgICAgIGxpYnMgPSBbICJkbCIgXQorIAorKyAgICBpZiAoY3VycmVudF9j cHUgPT0gInBwYzY0IikgeworKyAgICAgICAgZGVmaW5lcyA9IFsgIkhBVkVfR0VUQ09OVEVYVCIg XQorKyAgICB9IGVsc2UgeworKyAgICAgICAgc291cmNlcyArPSBbCisrICAgICAgICAgICAgImJy ZWFrcGFkL3NyYy9jb21tb24vbGludXgvYnJlYWtwYWRfZ2V0Y29udGV4dC5TIgorKyAgICAgICAg XQorKyAgICB9CisrCisgICAgIGluY2x1ZGVfZGlycyA9IFsKKyAgICAgICAiLiIsCisgICAgICAg ImJyZWFrcGFkL3NyYyIsCitAQCAtNzEyLDcgKzcxOSw2IEBAIGlmIChpc19saW51eCB8fCBpc19j aHJvbWVvcyB8fCBpc19hbmRyb2kKKyAgICAgICAiYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9t aW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjIiwKKyAgICAgICAiYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyX3Vu aXR0ZXN0X3V0aWxzLmNjIiwKKyAgICAgICAiYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5p ZHVtcF93cml0ZXIvcHJvY19jcHVpbmZvX3JlYWRlcl91bml0dGVzdC5jYyIsCistICAgICAgImJy ZWFrcGFkL3NyYy9jb21tb24vbGludXgvYnJlYWtwYWRfZ2V0Y29udGV4dF91bml0dGVzdC5jYyIs CisgICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcF91bml0dGVz dC5jYyIsCisgICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZmlsZV9pZF91bml0dGVz dC5jYyIsCisgICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbGludXhfbGliY19zdXBw b3J0X3VuaXR0ZXN0LmNjIiwKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvZHVtcF93cml0ZXJfY29tbW9uL3Jhd19jb250ZXh0X2NwdS5oCisrKysgcXQ2LXdlYmVuZ2lu ZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vcmF3X2NvbnRleHRfY3B1LmgK K0BAIC00NCw2ICs0NCw4IEBAIHR5cGVkZWYgTURSYXdDb250ZXh0QVJNIFJhd0NvbnRleHRDUFU7 CisgdHlwZWRlZiBNRFJhd0NvbnRleHRBUk02NF9PbGQgUmF3Q29udGV4dENQVTsKKyAjZWxpZiBk ZWZpbmVkKF9fbWlwc19fKQorIHR5cGVkZWYgTURSYXdDb250ZXh0TUlQUyBSYXdDb250ZXh0Q1BV OworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyt0eXBlZGVmIE1EUmF3Q29udGV4dFBQ QzY0IFJhd0NvbnRleHRDUFU7CisgI2Vsc2UKKyAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJl ZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKKyAjZW5kaWYKKy0tLSBxdDYtd2ViZW5n aW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZv LmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21t b24vdGhyZWFkX2luZm8uY2MKK0BAIC0yNzAsNyArMjcwLDQyIEBAIHZvaWQgVGhyZWFkSW5mbzo6 RmlsbENQVUNvbnRleHQoUmF3Q29udGUKKyAgIG91dC0+ZmxvYXRfc2F2ZS5maXIgPSBtY29udGV4 dC5mcGNfZWlyOworICNlbmRpZgorIH0KKy0jZW5kaWYgIC8vIF9fbWlwc19fCisrCisrI2VsaWYg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKworK3VpbnRwdHJfdCBUaHJlYWRJbmZvOjpHZXRJbnN0 cnVjdGlvblBvaW50ZXIoKSBjb25zdCB7CisrICAgIHJldHVybiBtY29udGV4dC5ncF9yZWdzW1BU X05JUF07CisrfQorKworK3ZvaWQgVGhyZWFkSW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4 dENQVSogb3V0KSBjb25zdCB7CisrICAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRf UFBDNjRfRlVMTDsKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9DT05URVhUX1BQQzY0X0dQ Ul9DT1VOVDsgaSsrKQorKyAgICAgICAgb3V0LT5ncHJbaV0gPSBtY29udGV4dC5ncF9yZWdzW2ld OworKworKyAgICBvdXQtPmxyID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9MTktdOworKyAgICBvdXQt PnNycjAgPSBtY29udGV4dC5ncF9yZWdzW1BUX05JUF07CisrICAgIG91dC0+c3JyMSA9IG1jb250 ZXh0LmdwX3JlZ3NbUFRfTVNSXTsKKysgICAgb3V0LT5jciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRf Q0NSXTsKKysgICAgb3V0LT54ZXIgPSBtY29udGV4dC5ncF9yZWdzW1BUX1hFUl07CisrICAgIG91 dC0+Y3RyID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9DVFJdOworKworKyAgICBmb3IgKGludCBpID0g MDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBDX0ZQUl9DT1VOVDsgaSsrKQorKyAgICAgICAg b3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9IG1jb250ZXh0LmZwX3JlZ3NbaV07CisrCisrICAg IG91dC0+ZmxvYXRfc2F2ZS5mcHNjciA9IG1jb250ZXh0LmZwX3JlZ3NbTkZQUkVHLTFdOworKwor KyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsg aSsrKQorKyAgICAgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldID0gXAorKyAgICAgICAg ICAgIHsoKCh1aW50NjRfdCl2cmVncy52cnJlZ3NbaV1bMF0pIDw8IDMyKQorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgfCB2cmVncy52cnJlZ3NbaV1bMV0sCisrICAgICAgICAgICAgKCgodWlu dDY0X3QpdnJlZ3MudnJyZWdzW2ldWzJdKSA8PCAzMikKKysgICAgICAgICAgICAgICAgICAgICAg ICAgfCB2cmVncy52cnJlZ3NbaV1bM119OworKworKyAgICBvdXQtPnZyc2F2ZSA9IHZyZWdzLnZy c2F2ZTsKKysgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IgPSB7MCwgdnJlZ3MudnNjci52 c2NyX3dvcmR9OworKyAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJ2YWxpZCA9IDB4RkZGRkZG RkY7CisrfQorKyNlbmRpZiAgLy8gX19wb3dlcnBjNjRfXworIAorIHZvaWQgVGhyZWFkSW5mbzo6 R2V0R2VuZXJhbFB1cnBvc2VSZWdpc3RlcnModm9pZCoqIGdwX3JlZ3MsIHNpemVfdCogc2l6ZSkg eworICAgYXNzZXJ0KGdwX3JlZ3MgfHwgc2l6ZSk7CitAQCAtMjc5LDYgKzMxNCwxMSBAQCB2b2lk IFRocmVhZEluZm86OkdldEdlbmVyYWxQdXJwb3NlUmVnaXN0CisgICAgICpncF9yZWdzID0gbWNv bnRleHQuZ3JlZ3M7CisgICBpZiAoc2l6ZSkKKyAgICAgKnNpemUgPSBzaXplb2YobWNvbnRleHQu Z3JlZ3MpOworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIGlmIChncF9yZWdzKQor KyAgICAqZ3BfcmVncyA9IG1jb250ZXh0LmdwX3JlZ3M7CisrICBpZiAoc2l6ZSkKKysgICAgKnNp emUgPSBzaXplb2YobWNvbnRleHQuZ3BfcmVncyk7CisgI2Vsc2UKKyAgIGlmIChncF9yZWdzKQor ICAgICAqZ3BfcmVncyA9ICZyZWdzOworQEAgLTI5NCw2ICszMzQsMTEgQEAgdm9pZCBUaHJlYWRJ bmZvOjpHZXRGbG9hdGluZ1BvaW50UmVnaXN0ZQorICAgICAqZnBfcmVncyA9ICZtY29udGV4dC5m cHJlZ3M7CisgICBpZiAoc2l6ZSkKKyAgICAgKnNpemUgPSBzaXplb2YobWNvbnRleHQuZnByZWdz KTsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBpZiAoZnBfcmVncykKKysgICAg KmZwX3JlZ3MgPSAmbWNvbnRleHQuZnBfcmVnczsKKysgIGlmIChzaXplKQorKyAgICAqc2l6ZSA9 IHNpemVvZihtY29udGV4dC5mcF9yZWdzKTsKKyAjZWxzZQorICAgaWYgKGZwX3JlZ3MpCisgICAg ICpmcF9yZWdzID0gJmZwcmVnczsKK0BAIC0zMDIsNCArMzQ3LDEzIEBAIHZvaWQgVGhyZWFkSW5m bzo6R2V0RmxvYXRpbmdQb2ludFJlZ2lzdGUKKyAjZW5kaWYKKyB9CisgCisrI2lmIGRlZmluZWQo X19wb3dlcnBjNjRfXykKKyt2b2lkIFRocmVhZEluZm86OkdldFZlY3RvclJlZ2lzdGVycyh2b2lk Kiogdl9yZWdzLCBzaXplX3QqIHNpemUpIHsKKysgICAgaWYgKHZfcmVncykKKysgICAgICAgICp2 X3JlZ3MgPSAmdnJlZ3M7CisrICAgIGlmIChzaXplKQorKyAgICAgICAgKnNpemUgPSBzaXplb2Yo dnJlZ3MpOworK30KKysjZW5kaWYKKysKKyB9ICAvLyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFk CistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2Nv bW1vbi90aHJlYWRfaW5mby5oCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9k dW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uaAorQEAgLTY4LDYgKzY4LDEwIEBAIHN0cnVj dCBUaHJlYWRJbmZvIHsKKyAgIC8vIFVzZSB0aGUgc3RydWN0dXJlcyBkZWZpbmVkIGluIDxzeXMv dXNlci5oPgorICAgc3RydWN0IHVzZXJfcmVnc19zdHJ1Y3QgcmVnczsKKyAgIHN0cnVjdCB1c2Vy X2Zwc2ltZF9zdHJ1Y3QgZnByZWdzOworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysg IC8vIFVzZSB0aGUgc3RydWN0dXJlcyBkZWZpbmVkIGluIDxzeXMvdWNvbnRleHQuaD4uCisrICBt Y29udGV4dF90IG1jb250ZXh0OworKyAgdnJyZWdzZXRfdCB2cmVnczsKKyAjZWxpZiBkZWZpbmVk KF9fbWlwc19fKQorICAgLy8gVXNlIHRoZSBzdHJ1Y3R1cmUgZGVmaW5lZCBpbiA8c3lzL3Vjb250 ZXh0Lmg+LgorICAgbWNvbnRleHRfdCBtY29udGV4dDsKK0BAIC04NCw2ICs4OCwxMSBAQCBzdHJ1 Y3QgVGhyZWFkSW5mbyB7CisgCisgICAvLyBSZXR1cm5zIHRoZSBwb2ludGVyIGFuZCBzaXplIG9m IGZsb2F0IHBvaW50IHJlZ2lzdGVyIGFyZWEuCisgICB2b2lkIEdldEZsb2F0aW5nUG9pbnRSZWdp c3RlcnModm9pZCoqIGZwX3JlZ3MsIHNpemVfdCogc2l6ZSk7CisrCisrI2lmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKKysgIC8vIFJldHVybnMgdGhlIHBvaW50ZXIgYW5kIHNpemUgb2YgdGhlIHZl Y3RvciByZWdpc3RlciBhcmVhLiAoUFBDNjQgb25seSkKKysgIHZvaWQgR2V0VmVjdG9yUmVnaXN0 ZXJzKHZvaWQqKiB2X3JlZ3MsIHNpemVfdCogc2l6ZSk7CisrI2VuZGlmCisgfTsKKyAKKyB9ICAv LyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmln L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKKysrKyBx dDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4 dF9yZWFkZXIuY2MKK0BAIC0yNTQsNiArMjU0LDQ4IEBAIHZvaWQgVUNvbnRleHRSZWFkZXI6OkZp bGxDUFVDb250ZXh0KFJhd0MKKyAgIG91dC0+ZmxvYXRfc2F2ZS5maXIgPSB1Yy0+dWNfbWNvbnRl eHQuZnBjX2VpcjsgIC8vIFVudXNlZC4KKyAjZW5kaWYKKyB9CisrCisrI2VsaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorKworK3VpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2lu dGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7CisrICAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQu Z3BfcmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF07CisrfQorKworK3VpbnRwdHJfdCBVQ29u dGV4dFJlYWRlcjo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7 CisrICAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOworK30KKysKKyt2 b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQsIGNv bnN0IHVjb250ZXh0X3QqIHVjLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHZycmVnc2V0X3QqIHZyZWdzKSB7CisrICAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1E X0NPTlRFWFRfUFBDNjRfRlVMTDsKKysKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9DT05U RVhUX1BQQzY0X0dQUl9DT1VOVDsgaSsrKQorKyAgICAgICAgb3V0LT5ncHJbaV0gPSB1Yy0+dWNf bWNvbnRleHQuZ3BfcmVnc1tpXTsKKysKKysgICAgb3V0LT5sciA9IHVjLT51Y19tY29udGV4dC5n cF9yZWdzW1BUX0xOS107CisrICAgIG91dC0+c3JyMCA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdz W1BUX05JUF07CisrICAgIG91dC0+c3JyMSA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX01T Ul07CisrICAgIG91dC0+Y3IgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9DQ1JdOworKyAg ICBvdXQtPnhlciA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX1hFUl07CisrICAgIG91dC0+ Y3RyID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKKysKKysgICAgZm9yIChpbnQg aSA9IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykKKysgICAg ICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSB1Yy0+dWNfbWNvbnRleHQuZnBfcmVnc1tp XTsKKysKKysgICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gdWMtPnVjX21jb250ZXh0LmZwX3Jl Z3NbTkZQUkVHLTFdOworKworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX1ZFQ1RPUlNBVkVB UkVBX1BQQ19WUl9DT1VOVDsgaSsrKQorKyAgICAgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3Zy W2ldID0KKysgICAgICAgICAgICB7KCgodWludDY0X3QpdnJlZ3MtPnZycmVnc1tpXVswXSkgPDwg MzIpCisrICAgICAgICAgICAgICAgICAgICAgICAgIHwgdnJlZ3MtPnZycmVnc1tpXVsxXSwKKysg ICAgICAgICAgICAgKCgodWludDY0X3QpdnJlZ3MtPnZycmVnc1tpXVsyXSkgPDwgMzIpCisrICAg ICAgICAgICAgICAgICAgICAgICAgIHwgdnJlZ3MtPnZycmVnc1tpXVszXX07CisrCisrICAgIG91 dC0+dnJzYXZlID0gdnJlZ3MtPnZyc2F2ZTsKKysgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3Zz Y3IgPSB7MCwgdnJlZ3MtPnZzY3IudnNjcl93b3JkfTsKKysgICAgb3V0LT52ZWN0b3Jfc2F2ZS5z YXZlX3ZydmFsaWQgPSAweEZGRkZGRkZGOworK30KKysKKyAjZW5kaWYKKyAKKyB9ICAvLyBuYW1l c3BhY2UgZ29vZ2xlX2JyZWFrcGFkCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaAorKysrIHF0Ni13ZWJl bmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRl ci5oCitAQCAtNTUsNiArNTUsOSBAQCBzdHJ1Y3QgVUNvbnRleHRSZWFkZXIgeworICNlbGlmIGRl ZmluZWQoX19hYXJjaDY0X18pCisgICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250 ZXh0Q1BVKiBvdXQsIGNvbnN0IHVjb250ZXh0X3QqIHVjLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IGZwc2ltZF9jb250ZXh0KiBmcHJlZ3MpOworKyNlbGlmIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKKysgIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0Nv bnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCB2cnJlZ3NldF90KiB2cmVncyk7CisgI2Vsc2UKKyAgIHN0YXRpYyB2 b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCwgY29uc3QgdWNvbnRleHRfdCog dWMpOworICNlbmRpZgorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9o YW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCitAQCAtNDYxLDkgKzQ2MSwxNiBA QCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OkhhbmRsZVNpZ25hbChpbnQKKyAgICAgbWVtY3B5KCZn X2NyYXNoX2NvbnRleHRfLmZsb2F0X3N0YXRlLCBmcF9wdHIsCisgICAgICAgICAgICBzaXplb2Yo Z19jcmFzaF9jb250ZXh0Xy5mbG9hdF9zdGF0ZSkpOworICAgfQorKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKKysgIC8vIE9uIFBQQzY0LCB3ZSBtdXN0IGNvcHkgVlIgc3RhdGUKKysgIHVj b250ZXh0X3QqIHVjX3B0ciA9ICh1Y29udGV4dF90Kil1YzsKKysgIGlmICh1Y19wdHItPnVjX21j b250ZXh0LnZfcmVncykgeworKyAgICBtZW1jcHkoJmdfY3Jhc2hfY29udGV4dF8udmVjdG9yX3N0 YXRlLCB1Y19wdHItPnVjX21jb250ZXh0LnZfcmVncywKKysgICAgICAgICAgIHNpemVvZihnX2Ny YXNoX2NvbnRleHRfLnZlY3Rvcl9zdGF0ZSkpOworKyAgfQorICNlbGlmICFkZWZpbmVkKF9fQVJN X0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICAvLyBGUCBzdGF0ZSBpcyBub3QgcGFy dCBvZiB1c2VyIEFCSSBvbiBBUk0gTGludXguCistICAvLyBJbiBjYXNlIG9mIE1JUFMgTGludXgg RlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKKysgIC8vIEluIGNhc2Ugb2Yg TUlQUywgTGludXggRlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKKyAgIC8v IGFuZCAnZmxvYXRfc3RhdGUnIGlzIG5vdCBhIG1lbWJlciBvZiBDcmFzaENvbnRleHQuCisgICB1 Y29udGV4dF90KiB1Y19wdHIgPSAodWNvbnRleHRfdCopdWM7CisgICBpZiAodWNfcHRyLT51Y19t Y29udGV4dC5mcHJlZ3MpIHsKK0BAIC03MDgsMTEgKzcxNSwxOSBAQCBib29sIEV4Y2VwdGlvbkhh bmRsZXI6OldyaXRlTWluaWR1bXAoKSB7CisgICB9CisgI2VuZGlmCisgCistI2lmICFkZWZpbmVk KF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fbWlw c19fKQorKyNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9f KSAmJiAhZGVmaW5lZChfX21pcHNfXykgXAorKyAgICAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorICAgLy8gRlBVIHN0YXRlIGlzIG5vdCBwYXJ0IG9mIEFSTSBFQUJJIHVjb250ZXh0X3QuCisg ICBtZW1jcHkoJmNvbnRleHQuZmxvYXRfc3RhdGUsIGNvbnRleHQuY29udGV4dC51Y19tY29udGV4 dC5mcHJlZ3MsCisgICAgICAgICAgc2l6ZW9mKGNvbnRleHQuZmxvYXRfc3RhdGUpKTsKKyAjZW5k aWYKKysKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgLy8gVmVjdG9yIHJlZ2lzdGVy cyBtdXN0IGJlIGNvcGllZCBvbiBQUEM2NAorKyAgbWVtY3B5KCZjb250ZXh0LnZlY3Rvcl9zdGF0 ZSwgY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LnZfcmVncywKKysgICAgICAgICBzaXplb2Yo Y29udGV4dC52ZWN0b3Jfc3RhdGUpKTsKKysjZW5kaWYKKysKKyAgIGNvbnRleHQudGlkID0gc3lz X2dldHRpZCgpOworIAorICAgLy8gQWRkIGFuIGV4Y2VwdGlvbiBzdHJlYW0gdG8gdGhlIG1pbmlk dW1wIGZvciBiZXR0ZXIgcmVwb3J0aW5nLgorQEAgLTczMyw2ICs3NDgsOSBAQCBib29sIEV4Y2Vw dGlvbkhhbmRsZXI6OldyaXRlTWluaWR1bXAoKSB7CisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykK KyAgIGNvbnRleHQuc2lnaW5mby5zaV9hZGRyID0KKyAgICAgICByZWludGVycHJldF9jYXN0PHZv aWQqPihjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQucGMpOworKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKKysgIGNvbnRleHQuc2lnaW5mby5zaV9hZGRyID0KKysgICAgICByZWludGVy cHJldF9jYXN0PHZvaWQqPihjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9O SVBdKTsKKyAjZWxzZQorICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8g eW91ciBwbGF0Zm9ybSB5ZXQuIgorICNlbmRpZgorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3Jp Zy9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmgKKysrKyBxdDYtd2ViZW5n aW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuaAorQEAgLTE5 Miw3ICsxOTIsMTEgQEAgY2xhc3MgRXhjZXB0aW9uSGFuZGxlciB7CisgICAgIHNpZ2luZm9fdCBz aWdpbmZvOworICAgICBwaWRfdCB0aWQ7ICAvLyB0aGUgY3Jhc2hpbmcgdGhyZWFkLgorICAgICB1 Y29udGV4dF90IGNvbnRleHQ7CistI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmlu ZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAgLy8gUFBDNjQn cyBGUCBzdGF0ZSBpcyBhIHBhcnQgb2YgdWNvbnRleHRfdCBsaWtlIE1JUFMgYnV0IHRoZSB2ZWN0 b3IKKysgICAgLy8gc3RhdGUgaXMgbm90LCBzbyBhIHN0cnVjdCBpcyBuZWVkZWQuCisrICAgIHZz dGF0ZV90IHZlY3Rvcl9zdGF0ZTsKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFk ZWZpbmVkKF9fbWlwc19fKQorICAgICAvLyAjaWZkZWYgdGhpcyBvdXQgYmVjYXVzZSBGUCBzdGF0 ZSBpcyBub3QgcGFydCBvZiB1c2VyIEFCSSBmb3IgTGludXggQVJNLgorICAgICAvLyBJbiBjYXNl IG9mIE1JUFMgTGludXggRlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3Qgc28K KyAgICAgLy8gJ2Zsb2F0X3N0YXRlJyBpcyBub3QgcmVxdWlyZWQuCistLS0gcXQ2LXdlYmVuZ2lu ZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXJfdW5pdHRl c3QuY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0 aW9uX2hhbmRsZXJfdW5pdHRlc3QuY2MKK0BAIC0zMDcsNyArMzA3LDcgQEAgVEVTVChFeGNlcHRp b25IYW5kbGVyVGVzdCwgUGFyYWxsZWxDaGlsZAorICAgfQorIAorICAgLy8gV2FpdCBhIHdoaWxl IHVudGlsIHRoZSBjaGlsZCBzaG91bGQgaGF2ZSBjcmFzaGVkLgorLSAgdXNsZWVwKDEwMDAwMDAp OworKyAgdXNsZWVwKDIwMDAwMDApOworICAgLy8gS2lsbCB0aGUgY2hpbGQgaWYgaXQgaXMgc3Rp bGwgcnVubmluZy4KKyAgIGtpbGwoY2hpbGQsIFNJR0tJTEwpOworIAorQEAgLTU1OSw2ICs1NTks OCBAQCBjb25zdCB1bnNpZ25lZCBjaGFyIGtJbGxlZ2FsSW5zdHJ1Y3Rpb25bCisgI2lmIGRlZmlu ZWQoX19taXBzX18pCisgICAvLyBtZmMyIHplcm8sSW1wbCAtIHVzdWFsbHkgaWxsZWdhbCBpbiB1 c2Vyc3BhY2UuCisgICAweDQ4LCAweDAwLCAweDAwLCAweDQ4CisrI2VsaWYgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQorKyAgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSAvLyBDcmFzaGVzIG9uIGEgdGVz dGVkIFBPV0VSOSBjcHUKKyAjZWxzZQorICAgLy8gVGhpcyBjcmFzaGVzIHdpdGggU0lHSUxMIG9u IHg4Ni94ODYtNjQvYXJtLgorICAgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZgorQEAgLTc1NCwxMCAr NzU2LDEwIEBAIFRFU1QoRXhjZXB0aW9uSGFuZGxlclRlc3QsIEluc3RydWN0aW9uUG8KKyAKKyAg IC8vIFRoZXNlIGFyZSBkZWZpbmVkIGhlcmUgc28gdGhlIHBhcmVudCBjYW4gdXNlIHRoZW0gdG8g Y2hlY2sgdGhlCisgICAvLyBkYXRhIGZyb20gdGhlIG1pbmlkdW1wIGFmdGVyd2FyZHMuCistICAv LyBVc2UgNGsgaGVyZSBiZWNhdXNlIHRoZSBPUyB3aWxsIGhhbmQgb3V0IGEgc2luZ2xlIHBhZ2Ug ZXZlbgorKyAgLy8gVXNlIHRoZSBwYWdlIHNpemUgaGVyZSBiZWNhdXNlIHRoZSBPUyB3aWxsIGhh bmQgb3V0IGEgc2luZ2xlIHBhZ2UgZXZlbgorICAgLy8gaWYgYSBzbWFsbGVyIHNpemUgaXMgcmVx dWVzdGVkLCBhbmQgdGhpcyB0ZXN0IHdhbnRzIHRvCisgICAvLyB0ZXN0IHRoZSB1cHBlciBib3Vu ZCBvZiB0aGUgbWVtb3J5IHJhbmdlLgorLSAgY29uc3QgdWludDMyX3Qga01lbW9yeVNpemUgPSA0 MDk2OyAgLy8gYnl0ZXMKKysgIGNvbnN0IHVpbnQzMl90IGtNZW1vcnlTaXplID0gZ2V0cGFnZXNp emUoKTsgIC8vIGJ5dGVzCisgICBjb25zdCBpbnQga09mZnNldCA9IGtNZW1vcnlTaXplIC0gc2l6 ZW9mKGtJbGxlZ2FsSW5zdHJ1Y3Rpb24pOworIAorICAgY29uc3QgcGlkX3QgY2hpbGQgPSBmb3Jr KCk7CistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93 cml0ZXIvbWljcm9kdW1wX3dyaXRlci5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyLmNjCitAQCAtMTM4LDcgKzEz OCw5IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRlciB7CisgICAgICAgICAgICAgICAgICAgY29uc3Qg TWljcm9kdW1wRXh0cmFJbmZvJiBtaWNyb2R1bXBfZXh0cmFfaW5mbywKKyAgICAgICAgICAgICAg ICAgICBMaW51eER1bXBlciogZHVtcGVyKQorICAgICAgIDogdWNvbnRleHRfKGNvbnRleHQgPyAm Y29udGV4dC0+Y29udGV4dCA6IE5VTEwpLAorLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYm ICFkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAgICAg ICB2ZWN0b3Jfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4dC0+dmVjdG9yX3N0YXRlIDogTlVMTCks CisrI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKyAg ICAgICAgIGZsb2F0X3N0YXRlXyhjb250ZXh0ID8gJmNvbnRleHQtPmZsb2F0X3N0YXRlIDogTlVM TCksCisgI2VuZGlmCisgICAgICAgICBkdW1wZXJfKGR1bXBlciksCitAQCAtMzM3LDYgKzMzOSw4 IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRlciB7CisgIyBlbHNlCisgIyAgZXJyb3IgIlRoaXMgbWlw cyBBQkkgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgKG4zMikiCisgI2VuZGlmCisrI2VsaWYg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICBjb25zdCBjaGFyIGtBcmNoW10gPSAicHBjNjQi OworICNlbHNlCisgI2Vycm9yICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3Vy IHBsYXRmb3JtIHlldCIKKyAjZW5kaWYKK0BAIC00MDksNyArNDEzLDkgQEAgY2xhc3MgTWljcm9k dW1wV3JpdGVyIHsKKyAgIHZvaWQgRHVtcENQVVN0YXRlKCkgeworICAgICBSYXdDb250ZXh0Q1BV IGNwdTsKKyAgICAgbXlfbWVtc2V0KCZjcHUsIDAsIHNpemVvZihSYXdDb250ZXh0Q1BVKSk7Cist I2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisrI2lmIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0 KCZjcHUsIHVjb250ZXh0XywgdmVjdG9yX3N0YXRlXyk7CisrI2VsaWYgIWRlZmluZWQoX19BUk1f RUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKyAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxD UFVDb250ZXh0KCZjcHUsIHVjb250ZXh0XywgZmxvYXRfc3RhdGVfKTsKKyAjZWxzZQorICAgICBV Q29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoJmNwdSwgdWNvbnRleHRfKTsKK0BAIC02MDUs NyArNjExLDkgQEAgY2xhc3MgTWljcm9kdW1wV3JpdGVyIHsKKyAgIHZvaWQqIEFsbG9jKHVuc2ln bmVkIGJ5dGVzKSB7IHJldHVybiBkdW1wZXJfLT5hbGxvY2F0b3IoKS0+QWxsb2MoYnl0ZXMpOyB9 CisgCisgICBjb25zdCB1Y29udGV4dF90KiBjb25zdCB1Y29udGV4dF87CistI2lmICFkZWZpbmVk KF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19wb3dl cnBjNjRfXykKKysgIGNvbnN0IGdvb2dsZV9icmVha3BhZDo6dnN0YXRlX3QqIGNvbnN0IHZlY3Rv cl9zdGF0ZV87CisrI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21p cHNfXykKKyAgIGNvbnN0IGdvb2dsZV9icmVha3BhZDo6ZnBzdGF0ZV90KiBjb25zdCBmbG9hdF9z dGF0ZV87CisgI2VuZGlmCisgICBMaW51eER1bXBlciogZHVtcGVyXzsKKy0tLSBxdDYtd2ViZW5n aW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3Jp dGVyX3VuaXR0ZXN0LmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taWNy b2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKK0BAIC0yNzksMTAgKzI3 OSwxOSBAQCBURVNUKE1pY3JvZHVtcFdyaXRlclRlc3QsIEJhc2ljV2l0aE1hcHBpCisgICBDcmFz aEFuZEdldE1pY3JvZHVtcChtYXBwaW5ncywgTWljcm9kdW1wRXh0cmFJbmZvKCksICZidWYpOwor ICAgQVNTRVJUX1RSVUUoQ29udGFpbnNNaWNyb2R1bXAoYnVmKSk7CisgCisrICBpbnQgcGFnZV9z aXplID0gZ2V0cGFnZXNpemUoKTsKKyAjaWZkZWYgX19MUDY0X18KKy0gIEFTU0VSVF9ORShzdGQ6 OnN0cmluZzo6bnBvcywKKy0gICAgICAgICAgICBidWYuZmluZCgiTSAwMDAwMDAwMDAwMDAxMDAw IDAwMDAwMDAwMDAwMDAwMkEgMDAwMDAwMDAwMDAwMTAwMCAiCistICAgICAgICAgICAgICAgICAg ICAgIjMzMjIxMTAwNTU0NDc3NjY4ODk5QUFCQkNDRERFRUZGMCBsaWJmb28uc28iKSk7CisrICAv LyBUaGlzIHRlc3QgaXMgb25seSBhdmFpbGFibGUgZm9yIHRoZSBmb2xsb3dpbmcgcGFnZSBzaXpl cworKyAgQVNTRVJUX1RSVUUoKHBhZ2Vfc2l6ZSA9PSA0MDk2KSB8fCAocGFnZV9zaXplID09IDY1 NTM2KSk7CisrICBpZiAocGFnZV9zaXplID09IDQwOTYpIHsKKysgICAgQVNTRVJUX05FKHN0ZDo6 c3RyaW5nOjpucG9zLAorKyAgICAgICAgICAgICAgYnVmLmZpbmQoIk0gMDAwMDAwMDAwMDAwMTAw MCAwMDAwMDAwMDAwMDAwMDJBIDAwMDAwMDAwMDAwMDEwMDAgIgorKyAgICAgICAgICAgICAgICAg ICAgICAgIjMzMjIxMTAwNTU0NDc3NjY4ODk5QUFCQkNDRERFRUZGMCBsaWJmb28uc28iKSk7Cisr ICB9IGVsc2UgeworKyAgICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCisrICAgICAgICAg ICAgICBidWYuZmluZCgiTSAwMDAwMDAwMDAwMDEwMDAwIDAwMDAwMDAwMDAwMDAwMkEgMDAwMDAw MDAwMDAxMDAwMCAiCisrICAgICAgICAgICAgICAgICAgICAgICAiMzMyMjExMDA1NTQ0Nzc2Njg4 OTlBQUJCQ0NEREVFRkYwIGxpYmZvby5zbyIpKTsKKysgIH0KKyAjZWxzZQorICAgQVNTRVJUX05F KHN0ZDo6c3RyaW5nOjpucG9zLAorICAgICAgICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAxMDAwIDAw MDAwMDJBIDAwMDAxMDAwICIKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCisrKysgcXQ2LXdlYmVuZ2lu ZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MK K0BAIC0xMTcsNiArMTE3LDkgQEAgYm9vbCBMaW51eENvcmVEdW1wZXI6OkdldFRocmVhZEluZm9C eUluZAorICNlbGlmIGRlZmluZWQoX19taXBzX18pCisgICBzdGFja19wb2ludGVyID0KKyAgICAg ICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbmZvLT5tY29udGV4dC5ncmVnc1tNRF9DT05U RVhUX01JUFNfUkVHX1NQXSk7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgc3Rh Y2tfcG9pbnRlciA9CisrICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5mby0+bWNv bnRleHQuZ3BfcmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF0pOworICNlbHNlCisgI2Vycm9y ICJUaGlzIGNvZGUgaGFzbid0IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKKyAj ZW5kaWYKK0BAIC0yMTIsNyArMjE1LDEwIEBAIGJvb2wgTGludXhDb3JlRHVtcGVyOjpFbnVtZXJh dGVUaHJlYWRzKCkKKyAgICAgICAgIG1lbXNldCgmaW5mbywgMCwgc2l6ZW9mKFRocmVhZEluZm8p KTsKKyAgICAgICAgIGluZm8udGdpZCA9IHN0YXR1cy0+cHJfcGdycDsKKyAgICAgICAgIGluZm8u cHBpZCA9IHN0YXR1cy0+cHJfcHBpZDsKKy0jaWYgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzMTsgaSsr KQorKyAgICAgICAgICAgIGluZm8ubWNvbnRleHQuZ3BfcmVnc1tpXSA9IHN0YXR1cy0+cHJfcmVn W2ldOworKyNlbGlmIGRlZmluZWQoX19taXBzX18pCisgI2lmIGRlZmluZWQoX19BTkRST0lEX18p CisgICAgICAgICBmb3IgKGludCBpID0gRUZfUjA7IGkgPD0gRUZfUjMxOyBpKyspCisgICAgICAg ICAgIGluZm8ubWNvbnRleHQuZ3JlZ3NbaSAtIEVGX1IwXSA9IHN0YXR1cy0+cHJfcmVnW2ldOwor LS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIv bGludXhfZHVtcGVyLmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5p ZHVtcF93cml0ZXIvbGludXhfZHVtcGVyLmNjCitAQCAtNzY3LDcgKzc2Nyw5IEBAIGJvb2wgTGlu dXhEdW1wZXI6OkdldFN0YWNrSW5mbyhjb25zdCB2b2kKKyAgICAgICByZWludGVycHJldF9jYXN0 PHVpbnQ4X3QqPihpbnRfc3RhY2tfcG9pbnRlciAmIH4ocGFnZV9zaXplIC0gMSkpOworIAorICAg Ly8gVGhlIG51bWJlciBvZiBieXRlcyBvZiBzdGFjayB3aGljaCB3ZSB0cnkgdG8gY2FwdHVyZS4K Ky0gIHN0YXRpYyBjb25zdCBwdHJkaWZmX3Qga1N0YWNrVG9DYXB0dXJlID0gMzIgKiAxMDI0Owor KyAgLy8gVGhpcyBub3cgZGVwZW5kcyBvbiBwYWdlX3NpemUgdG8gYXZvaWQgbWlzc2luZyBkYXRh CisrICAvLyBvbiBzeXN0ZW1zIHdpdGggbGFyZ2VyIHBhZ2Ugc2l6ZXMuCisrICBzdGF0aWMgY29u c3QgcHRyZGlmZl90IGtTdGFja1RvQ2FwdHVyZSA9IDggKiBwYWdlX3NpemU7CisgCisgICBjb25z dCBNYXBwaW5nSW5mbyogbWFwcGluZyA9IEZpbmRNYXBwaW5nKHN0YWNrX3BvaW50ZXIpOworICAg aWYgKCFtYXBwaW5nKQorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9t aW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyLmgKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuaAorQEAgLTYzLDcgKzYzLDgg QEAgbmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZCB7CisgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBf TUlQU19TSU0gPT0gX0FCSU8zMikKKyB0eXBlZGVmIEVsZjMyX2F1eHZfdCBlbGZfYXV4X2VudHJ5 OworICNlbGlmIGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwK Ky0gICAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gIT0gX0FCSU8zMikKKysgICAg IChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gIT0gX0FCSU8zMikgfHwgXAorKyAgICAg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIHR5cGVkZWYgRWxmNjRfYXV4dl90IGVsZl9hdXhfZW50 cnk7CisgI2VuZGlmCisgCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4 L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXJfdW5pdHRlc3RfaGVscGVyLmNjCisrKysgcXQ2 LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVy X3VuaXR0ZXN0X2hlbHBlci5jYworQEAgLTUxLDYgKzUxLDggQEAKKyAjZGVmaW5lIFRJRF9QVFJf UkVHSVNURVIgInJjeCIKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorICNkZWZpbmUgVElEX1BU Ul9SRUdJU1RFUiAiJDEiCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyNkZWZpbmUg VElEX1BUUl9SRUdJU1RFUiAicjgiCisgI2Vsc2UKKyAjZXJyb3IgVGhpcyB0ZXN0IGhhcyBub3Qg YmVlbiBwb3J0ZWQgdG8gdGhpcyBwbGF0Zm9ybS4KKyAjZW5kaWYKKy0tLSBxdDYtd2ViZW5naW5l LTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1w ZXIuY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9saW51eF9wdHJhY2VfZHVtcGVyLmNjCitAQCAtMTU0LDE5ICsxNTQsMjcgQEAgYm9vbCBMaW51 eFB0cmFjZUR1bXBlcjo6Q29weUZyb21Qcm9jZXNzKAorICAgcmV0dXJuIHRydWU7CisgfQorIAor LWJvb2wgTGludXhQdHJhY2VEdW1wZXI6OlJlYWRSZWdpc3RlclNldChUaHJlYWRJbmZvKiBpbmZv LCBwaWRfdCB0aWQpCisteworK2Jvb2wgTGludXhQdHJhY2VEdW1wZXI6OlJlYWRSZWdpc3RlclNl dChUaHJlYWRJbmZvKiBpbmZvLCBwaWRfdCB0aWQpIHsKKyAjaWZkZWYgUFRSQUNFX0dFVFJFR1NF VAorICAgc3RydWN0IGlvdmVjIGlvOworICAgaW5mby0+R2V0R2VuZXJhbFB1cnBvc2VSZWdpc3Rl cnMoJmlvLmlvdl9iYXNlLCAmaW8uaW92X2xlbik7CistICBpZiAoc3lzX3B0cmFjZShQVFJBQ0Vf R0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9QUlNUQVRVUywgKHZvaWQqKSZpbykgPT0gLTEpIHsK KysgIGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAodm9pZCopTlRfUFJTVEFUVVMs ICh2b2lkKikmaW8pID09IC0xKSB7CisgICAgIHJldHVybiBmYWxzZTsKKyAgIH0KKyAKKyAgIGlu Zm8tPkdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnMoJmlvLmlvdl9iYXNlLCAmaW8uaW92X2xlbik7 CistICBpZiAoc3lzX3B0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9GUFJF R1NFVCwgKHZvaWQqKSZpbykgPT0gLTEpIHsKKysgIGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NF VCwgdGlkLCAodm9pZCopTlRfRlBSRUdTRVQsICh2b2lkKikmaW8pID09IC0xKSB7CisgICAgIHJl dHVybiBmYWxzZTsKKyAgIH0KKysKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgLy8g R3JhYiB0aGUgdmVjdG9yIHJlZ2lzdGVycyBvbiBQUEM2NCB0b28KKysgIGluZm8tPkdldFZlY3Rv clJlZ2lzdGVycygmaW8uaW92X2Jhc2UsICZpby5pb3ZfbGVuKTsKKysgIGlmIChwdHJhY2UoUFRS QUNFX0dFVFJFR1NFVCwgdGlkLCAodm9pZCopTlRfUFBDX1ZNWCwgKHZvaWQqKSZpbykgPT0gLTEp IHsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKyNlbmRpZiAvLyBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCisrCisgICByZXR1cm4gdHJ1ZTsKKyAjZWxzZQorICAgcmV0dXJuIGZhbHNlOworQEAg LTMwMyw2ICszMTEsOSBAQCBib29sIExpbnV4UHRyYWNlRHVtcGVyOjpHZXRUaHJlYWRJbmZvQnlJ CisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAgIHN0YWNrX3BvaW50ZXIgPQorICAgICAgIHJl aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluZm8tPm1jb250ZXh0LmdyZWdzW01EX0NPTlRFWFRf TUlQU19SRUdfU1BdKTsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBzdGFja19w b2ludGVyID0KKysgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbmZvLT5tY29udGV4 dC5ncF9yZWdzW01EX0NPTlRFWFRfUFBDNjRfUkVHX1NQXSk7CisgI2Vsc2UKKyAjZXJyb3IgIlRo aXMgY29kZSBoYXNuJ3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQuIgorICNlbmRp ZgorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0 ZXIvbGludXhfcHRyYWNlX2R1bXBlcl91bml0dGVzdC5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40 LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXJfdW5pdHRl c3QuY2MKK0BAIC00NjQsNiArNDY0LDkgQEAgVEVTVChMaW51eFB0cmFjZUR1bXBlclRlc3QsIFZl cmlmeVN0YWNrUgorICNlbGlmIGRlZmluZWQoX19taXBzX18pCisgICAgIHBpZF90KiBwcm9jZXNz X3RpZF9sb2NhdGlvbiA9CisgICAgICAgICByZWludGVycHJldF9jYXN0PHBpZF90Kj4ob25lX3Ro cmVhZC5tY29udGV4dC5ncmVnc1sxXSk7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor KyAgICBwaWRfdCogcHJvY2Vzc190aWRfbG9jYXRpb24gPQorKyAgICAgICAgcmVpbnRlcnByZXRf Y2FzdDxwaWRfdCo+KG9uZV90aHJlYWQubWNvbnRleHQuZ3BfcmVnc1s4XSk7CisgI2Vsc2UKKyAj ZXJyb3IgVGhpcyB0ZXN0IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gdGhpcyBwbGF0Zm9ybS4KKyAj ZW5kaWYKK0BAIC01NjEsNiArNTY0LDggQEAgVEVTVF9GKExpbnV4UHRyYWNlRHVtcGVyVGVzdCwg U2FuaXRpemVTdAorICAgdWludHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLnJlZ3MucmN4 OworICNlbGlmIGRlZmluZWQoX19taXBzX18pCisgICB1aW50cHRyX3QgaGVhcF9hZGRyID0gdGhy ZWFkX2luZm8ubWNvbnRleHQuZ3JlZ3NbMV07CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorKyAgdWludHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLm1jb250ZXh0LmdwX3JlZ3Nb OF07CisgI2Vsc2UKKyAjZXJyb3IgVGhpcyB0ZXN0IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gdGhp cyBwbGF0Zm9ybS4KKyAjZW5kaWYKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5jYworKysrIHF0Ni13ZWJlbmdp bmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5jYwor QEAgLTEzNiw3ICsxMzYsOSBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7CisgICAgICAgOiBmZF8o bWluaWR1bXBfZmQpLAorICAgICAgICAgcGF0aF8obWluaWR1bXBfcGF0aCksCisgICAgICAgICB1 Y29udGV4dF8oY29udGV4dCA/ICZjb250ZXh0LT5jb250ZXh0IDogTlVMTCksCistI2lmICFkZWZp bmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKKysgICAgICAgIHZlY3Rvcl9zdGF0ZV8oY29udGV4dCA/ICZjb250ZXh0LT52 ZWN0b3Jfc3RhdGUgOiBOVUxMKSwKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFk ZWZpbmVkKF9fbWlwc19fKQorICAgICAgICAgZmxvYXRfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4 dC0+ZmxvYXRfc3RhdGUgOiBOVUxMKSwKKyAjZW5kaWYKKyAgICAgICAgIGR1bXBlcl8oZHVtcGVy KSwKK0BAIC00NjgsNyArNDcwLDkgQEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgeworICAgICAgICAg aWYgKCFjcHUuQWxsb2NhdGUoKSkKKyAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg bXlfbWVtc2V0KGNwdS5nZXQoKSwgMCwgc2l6ZW9mKFJhd0NvbnRleHRDUFUpKTsKKy0jaWYgIWRl ZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorKyAgICAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNw dS5nZXQoKSwgdWNvbnRleHRfLCB2ZWN0b3Jfc3RhdGVfKTsKKysjZWxpZiAhZGVmaW5lZChfX0FS TV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorICAgICAgICAgVUNvbnRleHRSZWFkZXI6 OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQoKSwgdWNvbnRleHRfLCBmbG9hdF9zdGF0ZV8pOworICNl bHNlCisgICAgICAgICBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoY3B1LmdldCgpLCB1 Y29udGV4dF8pOworQEAgLTg5Nyw3ICs5MDEsNyBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7Cisg ICAgIGRpcmVudC0+bG9jYXRpb24ucnZhID0gMDsKKyAgIH0KKyAKKy0jaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBz X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgIGJvb2wgV3JpdGVDUFVJbmZvcm1hdGlv bihNRFJhd1N5c3RlbUluZm8qIHN5c19pbmZvKSB7CisgICAgIGNoYXIgdmVuZG9yX2lkW3NpemVv ZihzeXNfaW5mby0+Y3B1Lng4Nl9jcHVfaW5mby52ZW5kb3JfaWQpICsgMV0gPSB7MH07CisgICAg IHN0YXRpYyBjb25zdCBjaGFyIHZlbmRvcl9pZF9uYW1lW10gPSAidmVuZG9yX2lkIjsKK0BAIC05 MTcsNyArOTIxLDkgQEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgeworIAorICAgICAvLyBwcm9jZXNz b3JfYXJjaGl0ZWN0dXJlIHNob3VsZCBhbHdheXMgYmUgc2V0LCBkbyB0aGlzIGZpcnN0CisgICAg IHN5c19pbmZvLT5wcm9jZXNzb3JfYXJjaGl0ZWN0dXJlID0KKy0jaWYgZGVmaW5lZChfX21pcHNf XykKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICAgICAgTURfQ1BVX0FSQ0hJVEVD VFVSRV9QUEM2NDsKKysjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorICMgaWYgX01JUFNfU0lNID09 IF9BQklPMzIKKyAgICAgICAgIE1EX0NQVV9BUkNISVRFQ1RVUkVfTUlQUzsKKyAjIGVsaWYgX01J UFNfU0lNID09IF9BQkk2NAorQEAgLTEzMzMsNyArMTMzOSw5IEBAIGNsYXNzIE1pbmlkdW1wV3Jp dGVyIHsKKyAgIGNvbnN0IGNoYXIqIHBhdGhfOyAgLy8gUGF0aCB0byB0aGUgZmlsZSB3aGVyZSB0 aGUgbWluaWR1bSBzaG91bGQgYmUgd3JpdHRlbi4KKyAKKyAgIGNvbnN0IHVjb250ZXh0X3QqIGNv bnN0IHVjb250ZXh0XzsgIC8vIGFsc28gZnJvbSB0aGUgc2lnbmFsIGhhbmRsZXIKKy0jaWYgIWRl ZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorKyAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjp2c3RhdGVfdCogY29uc3Qg dmVjdG9yX3N0YXRlXzsKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVk KF9fbWlwc19fKQorICAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjpmcHN0YXRlX3QqIGNvbnN0IGZs b2F0X3N0YXRlXzsgIC8vIGRpdHRvCisgI2VuZGlmCisgICBMaW51eER1bXBlciogZHVtcGVyXzsK Ky0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVy L21pbmlkdW1wX3dyaXRlci5oCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9t aW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgKK0BAIC00OCw2ICs0OCw4IEBAIGNsYXNz IEV4Y2VwdGlvbkhhbmRsZXI7CisgCisgI2lmIGRlZmluZWQoX19hYXJjaDY0X18pCisgdHlwZWRl ZiBzdHJ1Y3QgZnBzaW1kX2NvbnRleHQgZnBzdGF0ZV90OworKyNlbGlmIGRlZmluZWQoX19wb3dl cnBjNjRfXykKKyt0eXBlZGVmIHZycmVnc2V0X3QgdnN0YXRlX3Q7CisgI2VsaWYgIWRlZmluZWQo X19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKyB0eXBlZGVmIHN0ZDo6cmVtb3Zl X3BvaW50ZXI8ZnByZWdzZXRfdD46OnR5cGUgZnBzdGF0ZV90OworICNlbmRpZgorLS0tIHF0Ni13 ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBf d3JpdGVyX3VuaXR0ZXN0LmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9t aW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjCitAQCAtNzE3LDYgKzcx Nyw5IEBAIFRFU1QoTWluaWR1bXBXcml0ZXJUZXN0LCBJbnZhbGlkU3RhY2tQb2kKKyAjZWxpZiBk ZWZpbmVkKF9fbWlwc19fKQorICAgY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LmdyZWdzW01E X0NPTlRFWFRfTUlQU19SRUdfU1BdID0KKyAgICAgICBpbnZhbGlkX3N0YWNrX3BvaW50ZXI7Cisr I2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgY29udGV4dC5jb250ZXh0LnVjX21jb250 ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9SRUdfU1BdID0KKysgICAgICBpbnZhbGlkX3N0 YWNrX3BvaW50ZXI7CisgI2Vsc2UKKyAjIGVycm9yICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBv cnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCisgI2VuZGlmCistLS0gcXQ2LXdlYmVuZ2luZS02 LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY29tbW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZS5jYworKysrIHF0Ni13ZWJl bmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlLmNjCitAQCAtNjUsOCAr NjUsNyBAQCBib29sIE1lbW9yeU1hcHBlZEZpbGU6Ok1hcChjb25zdCBjaGFyKiBwCisgICB9Cisg CisgI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXAor LSAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX0FCSTY0KQorLQorKyAgIChk ZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX0FCSTY0KSB8fCBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICBzdHJ1Y3Qga2VybmVsX3N0YXQgc3Q7CisgICBpZiAoc3lzX2ZzdGF0KGZk LCAmc3QpID09IC0xIHx8IHN0LnN0X3NpemUgPCAwKSB7CisgI2Vsc2UKKy0tLSBxdDYtd2ViZW5n aW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlX3VuaXR0ZXN0LmNj CisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVkX2ZpbGVf dW5pdHRlc3QuY2MKK0BAIC0xNzYsOSArMTc2LDEwIEBAIFRFU1RfRihNZW1vcnlNYXBwZWRGaWxl VGVzdCwgUmVtYXBBZnRlck0KKyBURVNUX0YoTWVtb3J5TWFwcGVkRmlsZVRlc3QsIE1hcFdpdGhP ZmZzZXQpIHsKKyAgIC8vIFB1dCBtb3JlIGRhdGEgaW4gdGhlIHRlc3QgZmlsZSB0aGlzIHRpbWUu IE9mZnNldHMgY2FuIG9ubHkgYmUKKyAgIC8vIGRvbmUgb24gcGFnZSBib3VuZGFyaWVzLCBzbyB3 ZSBuZWVkIGEgdHdvIHBhZ2UgZmlsZSB0byB0ZXN0IHRoaXMuCistICBjb25zdCBpbnQgcGFnZV9z aXplID0gNDA5NjsKKy0gIGNoYXIgZGF0YTFbMiAqIHBhZ2Vfc2l6ZV07CistICBzaXplX3QgZGF0 YTFfc2l6ZSA9IHNpemVvZihkYXRhMSk7CisrICBjb25zdCBpbnQgcGFnZV9zaXplID0gZ2V0cGFn ZXNpemUoKTsKKysgIGNoYXIgKmRhdGExID0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1hbGxvYygyICog cGFnZV9zaXplKSk7CisrICBFWFBFQ1RfVFJVRShkYXRhMSAhPSBOVUxMKTsKKysgIHNpemVfdCBk YXRhMV9zaXplID0gKDIgKiBwYWdlX3NpemUpOworICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBk YXRhMV9zaXplOyArK2kpIHsKKyAgICAgZGF0YTFbaV0gPSBpICYgMHg3ZjsKKyAgIH0KKy0tLSBx dDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbWVtb3J5X2FsbG9jYXRvcl91bml0dGVzdC5j YworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbWVtb3J5X2FsbG9jYXRvcl91bml0dGVz dC5jYworQEAgLTU3LDggKzU3LDkgQEAgVEVTVChQYWdlQWxsb2NhdG9yVGVzdCwgTGFyZ2VPYmpl Y3QpIHsKKyAKKyAgIEVYUEVDVF9FUSgwVSwgYWxsb2NhdG9yLnBhZ2VzX2FsbG9jYXRlZCgpKTsK KyAgIHVpbnQ4X3QqIHAgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihhbGxvY2F0b3IuQWxs b2MoMTAwMDApKTsKKysgIHVpbnQ2NF90IGV4cGVjdGVkX3BhZ2VzID0gMSArICgoMTAwMDAgLSAx KSAvIGdldHBhZ2VzaXplKCkpOworICAgQVNTRVJUX0ZBTFNFKHAgPT0gTlVMTCk7CistICBFWFBF Q1RfRVEoM1UsIGFsbG9jYXRvci5wYWdlc19hbGxvY2F0ZWQoKSk7CisrICBFWFBFQ1RfRVEoZXhw ZWN0ZWRfcGFnZXMsIGFsbG9jYXRvci5wYWdlc19hbGxvY2F0ZWQoKSk7CisgICBmb3IgKHVuc2ln bmVkIGkgPSAxOyBpIDwgMTA7ICsraSkgeworICAgICB1aW50OF90KiBwID0gcmVpbnRlcnByZXRf Y2FzdDx1aW50OF90Kj4oYWxsb2NhdG9yLkFsbG9jKGkpKTsKKyAgICAgQVNTRVJUX0ZBTFNFKHAg PT0gTlVMTCk7CistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvcHJvY2Vzc29yL2V4cGxvaXRh YmlsaXR5X2xpbnV4LmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0 YWJpbGl0eV9saW51eC5jYworQEAgLTIwMiwxMiArMjAyLDE0IEBAIGJvb2wgRXhwbG9pdGFiaWxp dHlMaW51eDo6RW5kZWRPbklsbGVnYWwKKyAgIC8vIENoZWNrIGFyY2hpdGVjdHVyZSBhbmQgc2V0 IGFyY2hpdGVjdHVyZSB2YXJpYWJsZSB0byBjb3JyZXNwb25kaW5nIGZsYWcKKyAgIC8vIGluIG9i amR1bXAuCisgICBzd2l0Y2ggKGNvbnRleHQtPkdldENvbnRleHRDUFUoKSkgeworKyNpZiBkZWZp bmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkKKyAgICAgY2FzZSBNRF9DT05URVhUX1g4 NjoKKyAgICAgICBhcmNoaXRlY3R1cmUgPSAiaTM4NiI7CisgICAgICAgYnJlYWs7CisgICAgIGNh c2UgTURfQ09OVEVYVF9BTUQ2NDoKKyAgICAgICBhcmNoaXRlY3R1cmUgPSAiaTM4Njp4ODYtNjQi OworICAgICAgIGJyZWFrOworKyNlbmRpZgorICAgICBkZWZhdWx0OgorICAgICAgIC8vIFVuc3Vw cG9ydGVkIGFyY2hpdGVjdHVyZS4gTm90ZSB0aGF0IEFSTSBhcmNoaXRlY3R1cmVzIGFyZSBub3QK KyAgICAgICAvLyBzdXBwb3J0ZWQgYmVjYXVzZSBvYmpkdW1wIGRvZXMgbm90IHN1cHBvcnQgQVJN LgorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV91 bml0dGVzdC5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxp dHlfdW5pdHRlc3QuY2MKK0BAIC0xMDQsNiArMTA0LDggQEAgRXhwbG9pdGFiaWxpdHlGb3IoY29u c3Qgc3RyaW5nJiBmaWxlbmFtZQorIH0KKyAKKyBURVNUKEV4cGxvaXRhYmlsaXR5VGVzdCwgVGVz dFdpbmRvd3NFbmdpbmUpIHsKKysvLyBUaGUgZm9sbG93aW5nIHRlc3RzIGFyZSBvbmx5IGV4ZWN1 dGFibGUgb24gYW4geDg2LWNsYXNzIGxpbnV4IG1hY2hpbmUuCisrI2lmICFkZWZpbmVkKF9XSU4z MikgJiYgKGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkKKyAgIEFTU0VSVF9F UShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCisgICAgICAgICAgICAgRXhw bG9pdGFiaWxpdHlGb3IoImFzY2lpX3JlYWRfYXYuZG1wIikpOworICAgQVNTRVJUX0VRKGdvb2ds ZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKK0BAIC0xMzYsOSArMTM4LDEyIEBAIFRF U1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0V2luZG93c0VuZ2kKKyAgICAgICAgICAgICBFeHBs b2l0YWJpbGl0eUZvcigicmVhZF9hdl9jbG9iYmVyX3dyaXRlLmRtcCIpKTsKKyAgIEFTU0VSVF9F UShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0xPVywKKyAgICAgICAgICAgICBFeHBs b2l0YWJpbGl0eUZvcigicmVhZF9hdl9jb25kaXRpb25hbC5kbXAiKSk7CisrI2VuZGlmCisgfQor IAorIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0TGludXhFbmdpbmUpIHsKKysvLyBUaGUg Zm9sbG93aW5nIHRlc3RzIGFyZSBvbmx5IGV4ZWN1dGFibGUgb24gYW4geDg2LWNsYXNzIGxpbnV4 IG1hY2hpbmUuCisrI2lmIGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KQorICAg QVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSU5URVJFU1RJTkcsCisg ICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X251bGxfcmVhZF9hdi5kbXAiKSk7 CisgICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9ISUdILAorQEAg LTE3MSw3ICsxNzYsOCBAQCBURVNUKEV4cGxvaXRhYmlsaXR5VGVzdCwgVGVzdExpbnV4RW5naW5l CisgICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X2V4ZWN1dGFibGVfaGVhcC5k bXAiKSk7CisgICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9ISUdI LAorICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF9qbXBfdG9fbW9kdWxlX25v dF9leGVfcmVnaW9uLmRtcCIpKTsKKy0jaWZuZGVmIF9XSU4zMgorKyNlbmRpZgorKyNpZiAhZGVm aW5lZChfV0lOMzIpICYmIChkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkpCisg ICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9ISUdILAorICAgICAg ICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF93cml0ZV90b19ub253cml0YWJsZV9tb2R1 bGUuZG1wIikpOworICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlf SElHSCwKK0BAIC0xODIsMTAgKzE4OCwxMCBAQCBURVNUKEV4cGxvaXRhYmlsaXR5VGVzdCwgVGVz dExpbnV4RW5naW5lCisgICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X3dyaXRl X3RvX291dHNpZGVfbW9kdWxlX3ZpYV9tYXRoLmRtcCIpKTsKKyAgIEFTU0VSVF9FUShnb29nbGVf YnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0lOVEVSRVNUSU5HLAorICAgICAgICAgICAgIEV4cGxv aXRhYmlsaXR5Rm9yKCJsaW51eF93cml0ZV90b191bmRlcl80ay5kbXAiKSk7CistI2VuZGlmICAv LyBfV0lOMzIKKysjZW5kaWYgIC8vICFkZWZpbmVkKF9XSU4zMikgJiYgKCFkZWZpbmVkKF9faTM4 NikgJiYgIWRlZmluZWQoX194ODZfNjQpKQorIH0KKyAKKy0jaWZuZGVmIF9XSU4zMgorKyNpZiAh ZGVmaW5lZChfV0lOMzIpICYmIChkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkp CisgVEVTVChFeHBsb2l0YWJpbGl0eUxpbnV4VXRpbHNUZXN0LCBEaXNhc3NlbWJsZUJ5dGVzVGVz dCkgeworICAgQVNTRVJUX0ZBTFNFKEV4cGxvaXRhYmlsaXR5TGludXhUZXN0OjpEaXNhc3NlbWJs ZUJ5dGVzKCIiLCBOVUxMLCA1LCBOVUxMKSk7CisgICB1aW50OF90IGJ5dGVzWzZdID0gezB4Yzcs IDB4MCwgMHg1LCAweDAsIDB4MCwgMHgwfTsKK0BAIC0zMDEsNiArMzA3LDcgQEAgVEVTVChFeHBs b2l0YWJpbGl0eUxpbnV4VXRpbHNUZXN0LCBDYWxjdQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlX2FkZHJl c3MpKTsKKyB9CistI2VuZGlmICAvLyBfV0lOMzIKKysjZW5kaWYgIC8vICFkZWZpbmVkKF9XSU4z MikgJiYgKGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkKKysKKyAKKyB9ICAv LyBuYW1lc3BhY2UKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy90b29scy9saW51eC9tZDJj b3JlL21pbmlkdW1wLTItY29yZS5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy90b29scy9saW51 eC9tZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYworQEAgLTc3LDYgKzc3LDggQEAKKyAgICNkZWZp bmUgRUxGX0FSQ0ggIEVNX01JUFMKKyAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorICAgI2Rl ZmluZSBFTEZfQVJDSCAgRU1fQUFSQ0g2NAorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK KysgICNkZWZpbmUgRUxGX0FSQ0ggIEVNX1BQQzY0CisgI2VuZGlmCisgCisgI2lmIGRlZmluZWQo X19hcm1fXykKK0BAIC04Nyw2ICs4OSw4IEBAIHR5cGVkZWYgdXNlcl9yZWdzIHVzZXJfcmVnc19z dHJ1Y3Q7CisgI2VsaWYgZGVmaW5lZCAoX19taXBzX18pCisgLy8gVGhpcyBmaWxlLWxvY2FsIHR5 cGVkZWYgc2ltcGxpZmllcyB0aGUgc291cmNlIGNvZGUuCisgdHlwZWRlZiBncmVnc2V0X3QgdXNl cl9yZWdzX3N0cnVjdDsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrdHlwZWRlZiBz dHJ1Y3QgcHRfcmVncyB1c2VyX3JlZ3Nfc3RydWN0OworICNlbmRpZgorIAorIHVzaW5nIGdvb2ds ZV9icmVha3BhZDo6TURUeXBlSGVscGVyOworQEAgLTMyMCw2ICszMjQsOSBAQCBzdHJ1Y3QgQ3Jh c2hlZFByb2Nlc3MgeworICNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorICAgICB1c2VyX2Zwc2lt ZF9zdHJ1Y3QgZnByZWdzOworICNlbmRpZgorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisr ICAgIG1jb250ZXh0X3QgbWNvbnRleHQ7CisrI2VuZGlmCisgICAgIHVpbnRwdHJfdCBzdGFja19h ZGRyOworICAgICBjb25zdCB1aW50OF90KiBzdGFjazsKKyAgICAgc2l6ZV90IHN0YWNrX2xlbmd0 aDsKK0BAIC01MzMsNiArNTQwLDM4IEBAIFBhcnNlVGhyZWFkUmVnaXN0ZXJzKENyYXNoZWRQcm9j ZXNzOjpUaHIKKyAgIHRocmVhZC0+bWNvbnRleHQuZnBjX2VpciA9IHJhd3JlZ3MtPmZsb2F0X3Nh dmUuZmlyOworICNlbmRpZgorIH0KKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrc3Rh dGljIHZvaWQKKytQYXJzZVRocmVhZFJlZ2lzdGVycyhDcmFzaGVkUHJvY2Vzczo6VGhyZWFkKiB0 aHJlYWQsCisrICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWluaWR1bXBNZW1vcnlSYW5nZSYg cmFuZ2UpIHsKKysgIGNvbnN0IE1EUmF3Q29udGV4dFBQQzY0KiByYXdyZWdzID0gcmFuZ2UuR2V0 RGF0YTxNRFJhd0NvbnRleHRQUEM2ND4oMCk7CisrCisrICBmb3IgKGludCBpID0gMDsgaSA8IE1E X0NPTlRFWFRfUFBDNjRfR1BSX0NPVU5UOyBpKyspCisrICAgIHRocmVhZC0+bWNvbnRleHQuZ3Bf cmVnc1tpXSA9IHJhd3JlZ3MtPmdwcltpXTsKKysKKysgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVn c1tQVF9MTktdID0gcmF3cmVncy0+bHI7CisrICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRf TklQXSA9IHJhd3JlZ3MtPnNycjA7CisrICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfTVNS XSA9IHJhd3JlZ3MtPnNycjE7CisrICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfQ0NSXSA9 IHJhd3JlZ3MtPmNyOworKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX1hFUl0gPSByYXdy ZWdzLT54ZXI7CisrICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXSA9IHJhd3JlZ3Mt PmN0cjsKKysgIHRocmVhZC0+bWNvbnRleHQudl9yZWdzLT52cnNhdmUgPSByYXdyZWdzLT52cnNh dmU7CisrCisrICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBDX0ZQ Ul9DT1VOVDsgaSsrKQorKyAgICAgIHRocmVhZC0+bWNvbnRleHQuZnBfcmVnc1tpXSA9IHJhd3Jl Z3MtPmZsb2F0X3NhdmUuZnByZWdzW2ldOworKworKyAgdGhyZWFkLT5tY29udGV4dC5mcF9yZWdz W05GUFJFRy0xXSA9IHJhd3JlZ3MtPmZsb2F0X3NhdmUuZnBzY3I7CisrCisrICBmb3IgKGludCBp ID0gMDsgaSA8IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKSB7CisrICAgICAg dGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZycmVnc1tpXVswXSA9IHJhd3JlZ3MtPnZlY3Rvcl9z YXZlLnNhdmVfdnJbaV0uaGlnaCA+PiAzMjsKKysgICAgICB0aHJlYWQtPm1jb250ZXh0LnZfcmVn cy0+dnJyZWdzW2ldWzFdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXS5oaWdoOwor KyAgICAgIHRocmVhZC0+bWNvbnRleHQudl9yZWdzLT52cnJlZ3NbaV1bMl0gPSByYXdyZWdzLT52 ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldLmxvdyA+PiAzMjsKKysgICAgICB0aHJlYWQtPm1jb250ZXh0 LnZfcmVncy0+dnJyZWdzW2ldWzNdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXS5s b3c7CisrICB9CisrCisrICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnNjci52c2NyX3dvcmQg PSByYXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IubG93ICYgMHhGRkZGRkZGRjsKKyt9Cisr CisgI2Vsc2UKKyAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIg cGxhdGZvcm0geWV0IgorICNlbmRpZgorQEAgLTYyMiw2ICs2NjEsMTIgQEAgUGFyc2VTeXN0ZW1J bmZvKGNvbnN0IE9wdGlvbnMmIG9wdGlvbnMsCisgIyBlbHNlCisgIyAgZXJyb3IgIlRoaXMgbWlw cyBBQkkgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgKG4zMikiCisgIyBlbmRpZgorKyNlbGlm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIGlmIChzeXNpbmZvLT5wcm9jZXNzb3JfYXJjaGl0 ZWN0dXJlICE9IE1EX0NQVV9BUkNISVRFQ1RVUkVfUFBDNjQpIHsKKysgICAgZnByaW50ZihzdGRl cnIsCisrICAgICAgICAgICAgIlRoaXMgdmVyc2lvbiBvZiBtaW5pZHVtcC0yLWNvcmUgb25seSBz dXBwb3J0cyBQUEM2NC5cbiIpOworKyAgICBleGl0KDEpOworKyAgfQorICNlbHNlCisgI2Vycm9y ICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldCIKKyAj ZW5kaWYKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL0NPTlRSSUJVVE9SUworKysrIHF0Ni13ZWJl bmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL0NPTlRSSUJVVE9SUworQEAgLTEzLDMgKzEzLDQgQEAgTWFyayBNZW50b3ZhaSA8bWFy a0BjaHJvbWl1bS5vcmc+CisgUm9iZXJ0IFNlc2VrIDxyc2VzZWtAY2hyb21pdW0ub3JnPgorIFNj b3R0IEdyYWhhbSA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CisgSm9zaHVhIFBlcmF6YSA8anBlcmF6 YUBjaHJvbWl1bS5vcmc+CisrU2hhd24gQW5hc3Rhc2lvIDxzaGF3bkBhbmFzdGFzLmlvPgorLS0t IHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvY29tcGF0L2xpbnV4L3N5cy91c2VyLmgKKysrKyBxdDYtd2Vi ZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9jb21wYXQvbGludXgvc3lzL3VzZXIuaAorQEAgLTE1LDYgKzE1LDcgQEAKKyAjaWZu ZGVmIENSQVNIUEFEX0NPTVBBVF9MSU5VWF9TWVNfVVNFUl9IXworICNkZWZpbmUgQ1JBU0hQQURf Q09NUEFUX0xJTlVYX1NZU19VU0VSX0hfCisgCisrI2luY2x1ZGUgPGNzdGRkZWY+CisgI2luY2x1 ZGVfbmV4dCA8c3lzL3VzZXIuaD4KKyAKKyAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKy0tLSBxdDYt d2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHQuaAorKysrIHF0Ni13ZWJl bmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHQuaAorQEAgLTU5Miw2ICs1OTIsNzAgQEAg c3RydWN0IE1pbmlkdW1wQ29udGV4dE1JUFM2NCB7CisgICB1aW50NjRfdCBmaXI7CisgfTsKKyAK KysvLyEgXGJyaWVmIHBwYzY0LXNwZWNpZmljIGZsYWdzIGZvciBNaW5pZHVtcFBQQzY0Ojpjb250 ZXh0X2ZsYWdzCisrLy8hIEJhc2VkIG9uIG1pbmlkdW1wX2NwdV9wcGM2NC5oIGZyb20gYnJlYWtw YWQKKytlbnVtIE1pbmlkdW1wQ29udGV4dFBQQzY0RmxhZ3MgOiB1aW50MzJfdCB7CisrICAvLyEg XGJyaWVmIElkZW50aWZpZXMgdGhlIGNvbnRleHQgYXMgUFBDNjQuCisrICBrTWluaWR1bXBDb250 ZXh0UFBDNjQgPSAweDAxMDAwMDAwLAorKworKyAgLy8hIFxicmllZiBJbmRpY2F0ZXMgdGhlIHZh bGlkaXR5IG9mIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMuCisrICAvLyEKKysgIC8vISBSZWdp c3RlcnMgYHIwYC1gcjMxYCwgYG5pcGAsIGBtc3JgLCBgbHJgLCBldGMuIGFyZSB2YWxpZC4KKysg IGtNaW5pZHVtcENvbnRleHRQUEM2NEJhc2UgPSBrTWluaWR1bXBDb250ZXh0UFBDNjQgfCAweDAw MDAwMDAxLAorKworKyAgLy8hIFxicmllZiBJbmRpY2F0ZXMgdGhlIHZhbGlkaXR5IG9mIGZsb2F0 aW5nIHBvaW50IHJlZ2lzdGVycy4KKysgIC8vIQorKyAgLy8hIFJlZ2lzdGVycyBgZnAwYC1gZnAz MWAsIGBmcHNjcmAgYXJlIHZhbGlkLgorKyAga01pbmlkdW1wQ29udGV4dFBQQzY0RmxvYXRpbmcg PSBrTWluaWR1bXBDb250ZXh0UFBDNjQgfCAweDAwMDAwMDA4LAorKworKyAgLy8hIFxicmllZiBJ bmRpY2F0ZXMgdGhlIHZhbGlkaXR5IG9mIEFsdGl2ZWMvVk1YIHJlZ2lzdGVycy4KKysgIC8vIQor KyAgLy8hIFJlZ2lzdGVycyBgdjBgLWB2MzFgLCBgdnNjcmAsIGB2cnNhdmVgLgorKyAga01pbmlk dW1wQ29udGV4dFBQQzY0VmVjdG9yID0ga01pbmlkdW1wQ29udGV4dFBQQzY0IHwgMHgwMDAwMDAy MCwKKysKKysgIC8vISBcYnJpZWYgSW5kaWNhdGVzIHRoZSB2YWxpZGl0eSBvZiBhbGwgcmVnaXN0 ZXJzCisrICBrTWluaWR1bXBDb250ZXh0UFBDNjRBbGwgPSBrTWluaWR1bXBDb250ZXh0UFBDNjRC YXNlICAgICB8CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrTWluaWR1bXBDb250ZXh0 UFBDNjRGbG9hdGluZyB8CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrTWluaWR1bXBD b250ZXh0UFBDNjRWZWN0b3IKKyt9OworKworKy8vISBcYnJpZWYgQSBQUEM2NCBDUFUgY29udGV4 dCBjYXJyaWVkIGluIGEgbWluaWR1bXAgZmlsZS4KKysvLyEgQmFzZWQgb24gbWluaWR1bXBfY3B1 X3BwYzY0LmggZnJvbSBicmVha3BhZC4KKytzdHJ1Y3QgTWluaWR1bXBDb250ZXh0UFBDNjQgewor KyAgdWludDY0X3QgY29udGV4dF9mbGFnczsKKysKKysgIC8vISBcYnJpZWYgR2VuZXJhbCBwdXJw b3NlIHJlZ2lzdGVycy4KKysgIHVpbnQ2NF90IG5pcDsKKysgIHVpbnQ2NF90IG1zcjsKKysgIHVp bnQ2NF90IHJlZ3NbMzJdOworKyAgdWludDY0X3QgY2NyOworKyAgdWludDY0X3QgeGVyOworKyAg dWludDY0X3QgbG5rOworKyAgdWludDY0X3QgY3RyOworKworKyAgLy8hIFxicmllZiBGbG9hdGlu ZyBwb2ludCByZWdpc3RlcnMuCisrICBkb3VibGUgZnByZWdzWzMyXTsKKysKKysgIC8vISBcYnJp ZWYgRlBVIHN0YXR1cyByZWdpc3Rlci4KKysgIGRvdWJsZSBmcHNjcjsKKysKKysgIC8vISBcYnJp ZWYgQWx0aXZlYy9WTVggdmVjdG9yIHJlZ2lzdGVycy4KKysgIHN0cnVjdCB7CisrICAgICAgLy8h IFxicmllZiBWZWN0b3IgcmVnaXN0ZXJzIGFyZSAxMjhiaXRzLgorKyAgICAgIHVpbnQxMjhfc3Ry dWN0IHNhdmVfdnJbMzJdOworKyAgICAgIHVpbnQxMjhfc3RydWN0IHNhdmVfdnNjcjsKKysKKysg ICAgICAvLyEgXGJyaWVmIFBhZGRpbmcgaW5jbHVkZWQgZm9yIGJyZWFrcGFkIGNvbXBhdGliaWx0 aXkuCisrICAgICAgdWludDMyX3Qgc2F2ZV9wYWQ1WzRdOworKworKyAgICAgIC8vISBcYnJpZWYg VlJTQVZFIHJlZ2lzdGVyLgorKyAgICAgIHVpbnQzMl90IHNhdmVfdnJzYXZlOworKworKyAgICAg IC8vISBcYnJpZWYgUGFkZGluZyBpbmNsdWRlZCBmb3IgYnJlYWtwYWQgY29tcGF0aWJpbHRpeS4K KysgICAgICB1aW50MzJfdCBzYXZlX3BhZDZbN107CisrICB9IHZyZWdzOworK307CisrCisgfSAg Ly8gbmFtZXNwYWNlIGNyYXNocGFkCisgCisgI2VuZGlmICAvLyBDUkFTSFBBRF9NSU5JRFVNUF9N SU5JRFVNUF9DT05URVhUX0hfCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5p ZHVtcF9jb250ZXh0X3dyaXRlci5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlk dW1wX2NvbnRleHRfd3JpdGVyLmNjCitAQCAtMTAyLDYgKzEwMiwxMyBAQCBNaW5pZHVtcENvbnRl eHRXcml0ZXI6OkNyZWF0ZUZyb21TbmFwc2hvCisgICAgICAgYnJlYWs7CisgICAgIH0KKyAKKysg ICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ6IHsKKysgICAgICBjb250ZXh0ID0gc3RkOjpt YWtlX3VuaXF1ZTxNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcj4oKTsKKysgICAgICByZWludGVy cHJldF9jYXN0PE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyKj4oY29udGV4dC5nZXQoKSkKKysg ICAgICAgICAgLT5Jbml0YWxpemVGcm9tU25hcHNob3QoY29udGV4dF9zbmFwc2hvdC0+cHBjNjQp OworKyAgICAgIGJyZWFrOworKyAgICB9CisrCisgICAgIGRlZmF1bHQ6IHsKKyAgICAgICBMT0co RVJST1IpIDw8ICJ1bmtub3duIGNvbnRleHQgYXJjaGl0ZWN0dXJlICIKKyAgICAgICAgICAgICAg ICAgIDw8IGNvbnRleHRfc25hcHNob3QtPmFyY2hpdGVjdHVyZTsKK0BAIC00NTMsNSArNDYwLDQ4 IEBAIHNpemVfdCBNaW5pZHVtcENvbnRleHRNSVBTNjRXcml0ZXI6OkNvbnQKKyAgIERDSEVDS19H RShzdGF0ZSgpLCBrU3RhdGVGcm96ZW4pOworICAgcmV0dXJuIHNpemVvZihjb250ZXh0Xyk7Cisg fQorKworK01pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjpNaW5pZHVtcENvbnRleHRQUEM2NFdy aXRlcigpCisrICA6IE1pbmlkdW1wQ29udGV4dFdyaXRlcigpLCBjb250ZXh0XygpIHsKKysgICAg Y29udGV4dF8uY29udGV4dF9mbGFncyA9IGtNaW5pZHVtcENvbnRleHRQUEM2NDsKKyt9CisrCisr TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXI6On5NaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcigp ID0gZGVmYXVsdDsKKysKKyt2b2lkIE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjpJbml0YWxp emVGcm9tU25hcHNob3QoCisrICAgIGNvbnN0IENQVUNvbnRleHRQUEM2NCogY29udGV4dF9zbmFw c2hvdCkgeworKyAgRENIRUNLX0VRKHN0YXRlKCksIGtTdGF0ZU11dGFibGUpOworKyAgRENIRUNL X0VRKGNvbnRleHRfLmNvbnRleHRfZmxhZ3MsIGtNaW5pZHVtcENvbnRleHRQUEM2NCk7CisrCisr ICBjb250ZXh0Xy5jb250ZXh0X2ZsYWdzID0ga01pbmlkdW1wQ29udGV4dFBQQzY0QWxsOworKwor KyAgbWVtY3B5KGNvbnRleHRfLnJlZ3MsIGNvbnRleHRfc25hcHNob3QtPnJlZ3MsIHNpemVvZihj b250ZXh0Xy5yZWdzKSk7CisrICBjb250ZXh0Xy5uaXAgPSBjb250ZXh0X3NuYXBzaG90LT5uaXA7 CisrICBjb250ZXh0Xy5tc3IgPSBjb250ZXh0X3NuYXBzaG90LT5tc3I7CisrICBjb250ZXh0Xy5j Y3IgPSBjb250ZXh0X3NuYXBzaG90LT5jY3I7CisrICBjb250ZXh0Xy54ZXIgPSBjb250ZXh0X3Nu YXBzaG90LT54ZXI7CisrICBjb250ZXh0Xy5sbmsgPSBjb250ZXh0X3NuYXBzaG90LT5sbms7Cisr ICBjb250ZXh0Xy5jdHIgPSBjb250ZXh0X3NuYXBzaG90LT5jdHI7CisrCisrICBtZW1jcHkoY29u dGV4dF8uZnByZWdzLCBjb250ZXh0X3NuYXBzaG90LT5mcHJlZ3MsIHNpemVvZihjb250ZXh0Xy5m cHJlZ3MpKTsKKysgIGNvbnRleHRfLmZwc2NyID0gY29udGV4dF9zbmFwc2hvdC0+ZnBzY3I7Cisr CisrICBtZW1jcHkoY29udGV4dF8udnJlZ3Muc2F2ZV92ciwgY29udGV4dF9zbmFwc2hvdC0+dnJl Z3Muc2F2ZV92ciwKKysgICAgICAgICBzaXplb2YoY29udGV4dF8udnJlZ3Muc2F2ZV92cikpOwor KyAgbWVtY3B5KCZjb250ZXh0Xy52cmVncy5zYXZlX3ZzY3IsICZjb250ZXh0X3NuYXBzaG90LT52 cmVncy5zYXZlX3ZzY3IsCisrICAgICAgICAgc2l6ZW9mKGNvbnRleHRfLnZyZWdzLnNhdmVfdnNj cikpOworKyAgY29udGV4dF8udnJlZ3Muc2F2ZV92cnNhdmUgPSBjb250ZXh0X3NuYXBzaG90LT52 cmVncy5zYXZlX3Zyc2F2ZTsKKyt9CisrCisrYm9vbCBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRl cjo6V3JpdGVPYmplY3QoCisrICAgIEZpbGVXcml0ZXJJbnRlcmZhY2UqIGZpbGVfd3JpdGVyKSB7 CisrICBEQ0hFQ0tfRVEoc3RhdGUoKSwga1N0YXRlV3JpdGFibGUpOworKyAgcmV0dXJuIGZpbGVf d3JpdGVyLT5Xcml0ZSgmY29udGV4dF8sIHNpemVvZihjb250ZXh0XykpOworK30KKysKKytzaXpl X3QgTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXI6OkNvbnRleHRTaXplKCkgY29uc3QgeworKyAg RENIRUNLX0dFKHN0YXRlKCksIGtTdGF0ZUZyb3plbik7CisrICByZXR1cm4gc2l6ZW9mKGNvbnRl eHRfKTsKKyt9CisgCisgfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCistLS0gcXQ2LXdlYmVuZ2lu ZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlci5oCisrKysgcXQ2LXdlYmVu Z2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuaAorQEAgLTMzMCw2ICszMzAs NDMgQEAgY2xhc3MgTWluaWR1bXBDb250ZXh0TUlQUzY0V3JpdGVyIGZpbmFsCisgICBNaW5pZHVt cENvbnRleHRNSVBTNjQgY29udGV4dF87CisgfTsKKyAKKytjbGFzcyBNaW5pZHVtcENvbnRleHRQ UEM2NFdyaXRlciBmaW5hbCA6IHB1YmxpYyBNaW5pZHVtcENvbnRleHRXcml0ZXIgeworKyBwdWJs aWM6CisrICBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcigpOworKyAgfk1pbmlkdW1wQ29udGV4 dFBQQzY0V3JpdGVyKCkgb3ZlcnJpZGU7CisrCisrICAvLyEgXGJyaWVmIEluaXRhbGl6ZXMgdGhl IE1pbmlkdW1wQ29udGV4dFBQQzY0IGJhc2VkIG9uIFxhIGNvbnRleHRfc25hcHNob3QuCisrICAv LyEKKysgIC8vISBccGFyYW1baW5dIGNvbnRleHRfc25hcHNob3QgVGhlIGNvbnRleHQgc25hcHNo b3QgdG8gdXNlIGFzIHNvdXJjZSBkYXRhLgorKyAgLy8hCisrICAvLyEgXG5vdGUgVmFsaWQgaW4g I2tTdGF0ZU11dGFibGUuIE5vIG11dGF0aW9uIG9mIGNvbnRleHQoKSBtYXkgYmUgZG9uZSBiZWZv cmUKKysgIC8vISAgICAgY2FsbGluZyB0aGlzIG1ldGhvZCwgYW5kIGl0IGlzIG5vdCBub3JtYWxs eSBuZWNlc3NhcnkgdG8gYWx0ZXIKKysgIC8vISAgICAgY29udGV4dCgpIGFmdGVyIGNhbGxpbmcg dGhpcyBtZXRob2QuCisrICB2b2lkIEluaXRhbGl6ZUZyb21TbmFwc2hvdChjb25zdCBDUFVDb250 ZXh0UFBDNjQqIGNvbnRleHRfc25hcHNob3QpOworKworKyAgLy8hIFxicmllZiBSZXR1cm5zIGEg cG9pbnRlciB0byB0aGUgY29udGV4dCBzdHJ1Y3R1cmUgdGhhdCB0aGlzIG9iamVjdCB3aWxsCisr ICAvLyEgICAgIHdyaXRlLgorKyAgLy8hCisrICAvLyEgXGF0dGVudGlvbiBUaGlzIHJldHVybnMg YSBub24tYGNvbnN0YCBwb2ludGVyIHRvIHRoaXMgb2JqZWN04oCZcyBwcml2YXRlCisrICAvLyEg ICAgIGRhdGEgc28gdGhhdCBhIGNhbGxlciBjYW4gcG9wdWxhdGUgdGhlIGNvbnRleHQgc3RydWN0 dXJlIGRpcmVjdGx5LgorKyAgLy8hICAgICBUaGlzIGlzIGRvbmUgYmVjYXVzZSBwcm92aWRpbmcg c2V0dGVyIGludGVyZmFjZXMgdG8gZWFjaCBmaWVsZCBpbiB0aGUKKysgIC8vISAgICAgY29udGV4 dCBzdHJ1Y3R1cmUgd291bGQgYmUgdW53aWVsZHkgYW5kIGN1bWJlcnNvbWUuIENhcmUgbXVzdCBi ZSB0YWtlbgorKyAgLy8hICAgICB0byBwb3B1bGF0ZSB0aGUgY29udGV4dCBzdHJ1Y3R1cmUgY29y cmVjdGx5LiBUaGUgY29udGV4dCBzdHJ1Y3R1cmUKKysgIC8vISAgICAgbXVzdCBvbmx5IGJlIG1v ZGlmaWVkIHdoaWxlIHRoaXMgb2JqZWN0IGlzIGluIHRoZSAja1N0YXRlTXV0YWJsZQorKyAgLy8h ICAgICBzdGF0ZS4KKysgIE1pbmlkdW1wQ29udGV4dFBQQzY0KiBjb250ZXh0KCkgeyByZXR1cm4g JmNvbnRleHRfOyB9CisrCisrIHByb3RlY3RlZDoKKysgIC8vIE1pbmlkdW1wV3JpdGFibGU6Cisr ICBib29sIFdyaXRlT2JqZWN0KEZpbGVXcml0ZXJJbnRlcmZhY2UqIGZpbGVfd3JpdGVyKSBvdmVy cmlkZTsKKysKKysgIC8vIE1pbmlkdW1wQ29udGV4dFdyaXRlcjoKKysgIHNpemVfdCBDb250ZXh0 U2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworKworKyBwcml2YXRlOgorKyAgTWluaWR1bXBDb250ZXh0 UFBDNjQgY29udGV4dF87CisrfTsKKysKKyB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKKyAKKyAj ZW5kaWYgIC8vIENSQVNIUEFEX01JTklEVU1QX01JTklEVU1QX0NPTlRFWFRfV1JJVEVSX0hfCist LS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlcl90 ZXN0LmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0 ZXJfdGVzdC5jYworQEAgLTIxMyw2ICsyMTMsMjEgQEAgVEVTVChNaW5pZHVtcENvbnRleHRXcml0 ZXIsIE1JUFM2NF9Gcm9tUworICAgICAgIGNvbnRleHQsIEV4cGVjdE1pbmlkdW1wQ29udGV4dE1J UFM2NCwga1NlZWQpOworIH0KKyAKKytURVNUKE1pbmlkdW1wQ29udGV4dFdyaXRlciwgUFBDNjRf WmVyb3MpIHsKKysgIEVtcHR5Q29udGV4dFRlc3Q8TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIs IE1pbmlkdW1wQ29udGV4dFBQQzY0PigKKysgICAgRXhwZWN0TWluaWR1bXBDb250ZXh0UFBDNjQp OworK30KKysKKytURVNUKE1pbmlkdW1wQ29udGV4dFdyaXRlciwgUFBDNjRfRnJvbVNuYXBzaG90 KSB7CisrICBjb25zdGV4cHIgdWludDMyX3Qga1NlZWQgPSA2NDsKKysgIENQVUNvbnRleHRQUEM2 NCBjb250ZXh0X3BwYzY0OworKyAgQ1BVQ29udGV4dCBjb250ZXh0OworKyAgY29udGV4dC5wcGM2 NCA9ICZjb250ZXh0X3BwYzY0OworKyAgSW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NCgmY29udGV4 dCwga1NlZWQpOworKyAgRnJvbVNuYXBzaG90VGVzdDxNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRl ciwgTWluaWR1bXBDb250ZXh0UFBDNjQ+KAorKyAgICAgIGNvbnRleHQsIEV4cGVjdE1pbmlkdW1w Q29udGV4dFBQQzY0LCBrU2VlZCk7CisrfQorKworIH0gIC8vIG5hbWVzcGFjZQorIH0gIC8vIG5h bWVzcGFjZSB0ZXN0CisgfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCistLS0gcXQ2LXdlYmVuZ2lu ZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9taXNjX2luZm9fd3JpdGVyLmNjCisrKysgcXQ2LXdl YmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfbWlzY19pbmZvX3dyaXRlci5jYworQEAgLTEzNSw2 ICsxMzUsOCBAQCBzdGQ6OnN0cmluZyBNaW5pZHVtcE1pc2NJbmZvRGVidWdCdWlsZFN0CisgICBz dGF0aWMgY29uc3RleHByIGNoYXIga0NQVVtdID0gIm1pcHMiOworICNlbGlmIGRlZmluZWQoQVJD SF9DUFVfTUlQUzY0RUwpCisgICBzdGF0aWMgY29uc3RleHByIGNoYXIga0NQVVtdID0gIm1pcHM2 NCI7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKKysgIHN0YXRpYyBjb25zdGV4cHIg Y2hhciBrQ1BVW10gPSAicHBjNjQiOworICNlbHNlCisgI2Vycm9yIGRlZmluZSBrQ1BVIGZvciB0 aGlzIENQVQorICNlbmRpZgorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY2FwdHVy ZV9tZW1vcnkuY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jYXB0dXJlX21lbW9yeS5j YworQEAgLTExMiw2ICsxMTIsMTEgQEAgdm9pZCBDYXB0dXJlTWVtb3J5OjpQb2ludGVkVG9CeUNv bnRleHQoYworICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGQ6OnNpemUoY29udGV4dC5taXBz ZWwtPnJlZ3MpOyArK2kpIHsKKyAgICAgTWF5YmVDYXB0dXJlTWVtb3J5QXJvdW5kKGRlbGVnYXRl LCBjb250ZXh0Lm1pcHNlbC0+cmVnc1tpXSk7CisgICB9CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQ VV9QUEM2NF9GQU1JTFkpCisrICBNYXliZUNhcHR1cmVNZW1vcnlBcm91bmQoZGVsZWdhdGUsIGNv bnRleHQucHBjNjQtPm5pcCk7CisrICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ZDo6c2l6ZShj b250ZXh0LnBwYzY0LT5yZWdzKTsgKytpKSB7CisrICAgIE1heWJlQ2FwdHVyZU1lbW9yeUFyb3Vu ZChkZWxlZ2F0ZSwgY29udGV4dC5wcGM2NC0+cmVnc1tpXSk7CisrICB9CisgI2Vsc2UKKyAjZXJy b3IgUG9ydC4KKyAjZW5kaWYKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9h cmNoaXRlY3R1cmUuaAorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9hcmNoaXRlY3R1 cmUuaAorQEAgLTQzLDcgKzQzLDEwIEBAIGVudW0gQ1BVQXJjaGl0ZWN0dXJlIHsKKyAgIGtDUFVB cmNoaXRlY3R1cmVNSVBTRUwsCisgCisgICAvLyEgXGJyaWVmIDY0LWJpdCBNSVBTRUwuCistICBr Q1BVQXJjaGl0ZWN0dXJlTUlQUzY0RUwKKysgIGtDUFVBcmNoaXRlY3R1cmVNSVBTNjRFTCwKKysK KysgIC8vISBcYnJpZWYgNjQtYml0IFBQQzY0LgorKyAga0NQVUFyY2hpdGVjdHVyZVBQQzY0Cisg fTsKKyAKKyB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4y Lm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3NuYXBzaG90L2NwdV9jb250ZXh0LmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1 X2NvbnRleHQuY2MKK0BAIC0xNzAsNiArMTcwLDggQEAgdWludDY0X3QgQ1BVQ29udGV4dDo6SW5z dHJ1Y3Rpb25Qb2ludGVyKAorICAgICAgIHJldHVybiBhcm0tPnBjOworICAgICBjYXNlIGtDUFVB cmNoaXRlY3R1cmVBUk02NDoKKyAgICAgICByZXR1cm4gYXJtNjQtPnBjOworKyAgICBjYXNlIGtD UFVBcmNoaXRlY3R1cmVQUEM2NDoKKysgICAgICByZXR1cm4gcHBjNjQtPm5pcDsKKyAgICAgZGVm YXVsdDoKKyAgICAgICBOT1RSRUFDSEVEKCk7CisgICAgICAgcmV0dXJuIH4wdWxsOworQEAgLTE4 Niw2ICsxODgsOCBAQCB1aW50NjRfdCBDUFVDb250ZXh0OjpTdGFja1BvaW50ZXIoKSBjb25zCisg ICAgICAgcmV0dXJuIGFybS0+c3A7CisgICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZUFSTTY0Ogor ICAgICAgIHJldHVybiBhcm02NC0+c3A7CisrICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVBQQzY0 OgorKyAgICAgIHJldHVybiBwcGM2NC0+cmVnc1sxXTsKKyAgICAgZGVmYXVsdDoKKyAgICAgICBO T1RSRUFDSEVEKCk7CisgICAgICAgcmV0dXJuIH4wdWxsOworQEAgLTE5Nyw2ICsyMDEsNyBAQCBi b29sIENQVUNvbnRleHQ6OklzNjRCaXQoKSBjb25zdCB7CisgICAgIGNhc2Uga0NQVUFyY2hpdGVj dHVyZVg4Nl82NDoKKyAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlQVJNNjQ6CisgICAgIGNhc2Ug a0NQVUFyY2hpdGVjdHVyZU1JUFM2NEVMOgorKyAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVQUEM2 NDoKKyAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlWDg2Ogor ICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVBUk06CistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5v cmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9z bmFwc2hvdC9jcHVfY29udGV4dC5oCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2Nv bnRleHQuaAorQEAgLTM1Miw2ICszNTIsMjQgQEAgc3RydWN0IENQVUNvbnRleHRNSVBTNjQgewor ICAgdWludDY0X3QgZmlyOworIH07CisgCisrLy8hIFxicmllZiBBIGNvbnRleHQgc3RydWN0dXJl IGNhcnJ5aW5nIFBQQzY0IENQVSBzdGF0ZS4KKytzdHJ1Y3QgQ1BVQ29udGV4dFBQQzY0IHsKKysg IHVpbnQ2NF90IG5pcDsKKysgIHVpbnQ2NF90IG1zcjsKKysgIHVpbnQ2NF90IHJlZ3NbMzJdOwor KyAgdWludDY0X3QgY2NyOworKyAgdWludDY0X3QgeGVyOworKyAgdWludDY0X3QgbG5rOworKyAg dWludDY0X3QgY3RyOworKyAgZG91YmxlIGZwcmVnc1szMl07CisrICBkb3VibGUgZnBzY3I7Cisr ICBzdHJ1Y3QgeworKyAgICB1aW50MTI4X3N0cnVjdCBzYXZlX3ZyWzMyXTsKKysgICAgdWludDEy OF9zdHJ1Y3Qgc2F2ZV92c2NyOworKyAgICB1aW50MzJfdCBzYXZlX3Zyc2F2ZTsKKysgIH0gdnJl Z3M7CisrfTsKKysKKyAvLyEgXGJyaWVmIEEgY29udGV4dCBzdHJ1Y3R1cmUgY2FwYWJsZSBvZiBj YXJyeWluZyB0aGUgY29udGV4dCBvZiBhbnkgc3VwcG9ydGVkCisgLy8hICAgICBDUFUgYXJjaGl0 ZWN0dXJlLgorIHN0cnVjdCBDUFVDb250ZXh0IHsKK0BAIC0zODIsNiArNDAwLDcgQEAgc3RydWN0 IENQVUNvbnRleHQgeworICAgICBDUFVDb250ZXh0QVJNNjQqIGFybTY0OworICAgICBDUFVDb250 ZXh0TUlQUyogbWlwc2VsOworICAgICBDUFVDb250ZXh0TUlQUzY0KiBtaXBzNjQ7CisrICAgIENQ VUNvbnRleHRQUEM2NCogcHBjNjQ7CisgICB9OworIH07CisgCistLS0gcXQ2LXdlYmVuZ2luZS02 LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFz aHBhZC9zbmFwc2hvdC9saW51eC9jcHVfY29udGV4dF9saW51eC5oCisrKysgcXQ2LXdlYmVuZ2lu ZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvc25hcHNob3QvbGludXgvY3B1X2NvbnRleHRfbGludXguaAorQEAgLTE1LDYgKzE1LDcgQEAK KyAjaWZuZGVmIENSQVNIUEFEX1NOQVBTSE9UX0xJTlVYX0NQVV9DT05URVhUX0xJTlVYX0hfCisg I2RlZmluZSBDUkFTSFBBRF9TTkFQU0hPVF9MSU5VWF9DUFVfQ09OVEVYVF9MSU5VWF9IXworIAor KyNpbmNsdWRlIDxjc3RyaW5nPgorICNpbmNsdWRlICJidWlsZC9idWlsZF9jb25maWcuaCIKKyAj aW5jbHVkZSAic25hcHNob3QvY3B1X2NvbnRleHQuaCIKKyAjaW5jbHVkZSAic25hcHNob3QvbGlu dXgvc2lnbmFsX2NvbnRleHQuaCIKK0BAIC0xNzQsNiArMTc1LDc4IEBAIHZvaWQgSW5pdGlhbGl6 ZUNQVUNvbnRleHRNSVBTKAorIAorICNlbmRpZiAgLy8gQVJDSF9DUFVfTUlQU19GQU1JTFkgfHwg RE9YWUdFTgorIAorKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkgfHwgRE9YWUdF TgorKworKy8vISBcYnJpZWYgSW5pdGFsaXplcyBhIENQVUNvbnRleHRQUEM2NCBzdHJ1Y3R1cmUg ZnJvbSBuYXRpdmUgY29udGV4dAorKy8vISAgICAgc3RydWN0dXJlcyBvbiBMaW51eC4KKysvLyEK KysvLyEgXHBhcmFtW2luXSB0aHJlYWRfY29udGV4dCBUaGUgbmF0aXZlIHRocmVhZCBjb250ZXh0 LgorKy8vISBccGFyYW1baW5dIGZsb2F0X2NvbnRleHQgVGhlIG5hdGl2ZSBmbG9hdCBjb250ZXh0 LgorKy8vISBccGFyYW1baW5dIHZlY3Rvcl9jb250ZXh0IFRoZSBuYXRpdmUgdmVjdG9yIGNvbnRl eHQuCisrLy8hIFxwYXJhbVtvdXRdIGNvbnRleHQgVGhlIENQVUNvbnRleHRQUEM2NCBzdHJ1Y3R1 cmUgdG8gaW5pdGFsaXplLgorK3RlbXBsYXRlIDx0eXBlbmFtZSBUcmFpdHM+Cisrdm9pZCBJbml0 aWFsaXplQ1BVQ29udGV4dFBQQzY0KAorKyAgICBjb25zdCBUaHJlYWRDb250ZXh0Ojp0NjRfdCYg dGhyZWFkX2NvbnRleHQsCisrICAgIGNvbnN0IEZsb2F0Q29udGV4dDo6ZjY0X3QmIGZsb2F0X2Nv bnRleHQsCisrICAgIGNvbnN0IFZlY3RvckNvbnRleHQ6OnY2NF90JiB2ZWN0b3JfY29udGV4dCwK KysgICAgdHlwZW5hbWUgVHJhaXRzOjpDUFVDb250ZXh0KiBjb250ZXh0KSB7CisrCisrICBtZW1j cHkoY29udGV4dC0+cmVncywgdGhyZWFkX2NvbnRleHQuZ3ByLCBzaXplb2YoY29udGV4dC0+cmVn cykpOworKyAgY29udGV4dC0+bmlwID0gdGhyZWFkX2NvbnRleHQubmlwOworKyAgY29udGV4dC0+ bXNyID0gdGhyZWFkX2NvbnRleHQubXNyOworKyAgY29udGV4dC0+Y2NyID0gdGhyZWFkX2NvbnRl eHQuY2NyOworKyAgY29udGV4dC0+eGVyID0gdGhyZWFkX2NvbnRleHQueGVyOworKyAgY29udGV4 dC0+bG5rID0gdGhyZWFkX2NvbnRleHQubG5rOworKyAgY29udGV4dC0+Y3RyID0gdGhyZWFkX2Nv bnRleHQuY3RyOworKworKyAgbWVtY3B5KGNvbnRleHQtPmZwcmVncywgZmxvYXRfY29udGV4dC5m cHJlZ3MsIHNpemVvZihjb250ZXh0LT5mcHJlZ3MpKTsKKysgIGNvbnRleHQtPmZwc2NyID0gZmxv YXRfY29udGV4dC5mcHNjcjsKKysKKysgIGZvciAodWludDhfdCBpID0gMDsgaSA8IDMyOyBpKysp IHsKKysgICAgY29udGV4dC0+dnJlZ3Muc2F2ZV92cltpXSA9IHsKKysgICAgICAoKCh1aW50NjRf dCl2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMF0pIDw8IDMyKSB8CisrICAgICAgICB2ZWN0b3Jf Y29udGV4dC52cnJlZ3NbaV1bMV0sCisrICAgICAgKCgodWludDY0X3QpdmVjdG9yX2NvbnRleHQu dnJyZWdzW2ldWzJdKSA8PCAzMikgfAorKyAgICAgICAgdmVjdG9yX2NvbnRleHQudnJyZWdzW2ld WzNdCisrICAgIH07CisrICB9CisrICBjb250ZXh0LT52cmVncy5zYXZlX3Zyc2F2ZSA9IHZlY3Rv cl9jb250ZXh0LnZyc2F2ZTsKKysgIGNvbnRleHQtPnZyZWdzLnNhdmVfdnNjciA9IHswLCAodWlu dDY0X3QpdmVjdG9yX2NvbnRleHQudnNjci52c2NyX3dvcmR9OworK30KKysKKyt0ZW1wbGF0ZSA8 dHlwZW5hbWUgVHJhaXRzPgorK3ZvaWQgSW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NCgKKysgICAg Y29uc3QgU2lnbmFsVGhyZWFkQ29udGV4dDY0ICZ0aHJlYWRfY29udGV4dCwKKysgICAgY29uc3Qg U2lnbmFsRmxvYXRDb250ZXh0NjQgJmZsb2F0X2NvbnRleHQsCisrICAgIGNvbnN0IFNpZ25hbFZl Y3RvckNvbnRleHQ2NCAmdmVjdG9yX2NvbnRleHQsCisrICAgIHR5cGVuYW1lIFRyYWl0czo6Q1BV Q29udGV4dCogY29udGV4dCkgeworKworKyAgbWVtY3B5KGNvbnRleHQtPnJlZ3MsIHRocmVhZF9j b250ZXh0LnJlZ3MsIHNpemVvZihjb250ZXh0LT5yZWdzKSk7CisrICBjb250ZXh0LT5uaXAgPSB0 aHJlYWRfY29udGV4dC5uaXA7CisrICBjb250ZXh0LT5tc3IgPSB0aHJlYWRfY29udGV4dC5tc3I7 CisrICBjb250ZXh0LT5jY3IgPSB0aHJlYWRfY29udGV4dC5jY3I7CisrICBjb250ZXh0LT54ZXIg PSB0aHJlYWRfY29udGV4dC54ZXI7CisrICBjb250ZXh0LT5sbmsgPSB0aHJlYWRfY29udGV4dC5s bms7CisrICBjb250ZXh0LT5jdHIgPSB0aHJlYWRfY29udGV4dC5jdHI7CisrCisrICBtZW1jcHko Y29udGV4dC0+ZnByZWdzLCBmbG9hdF9jb250ZXh0LnJlZ3MsIHNpemVvZihjb250ZXh0LT5mcHJl Z3MpKTsKKysgIGNvbnRleHQtPmZwc2NyID0gZmxvYXRfY29udGV4dC5mcHNjcjsKKysKKysgIGZv ciAodWludDhfdCBpID0gMDsgaSA8IDMyOyBpKyspIHsKKysgICAgY29udGV4dC0+dnJlZ3Muc2F2 ZV92cltpXSA9IHsKKysgICAgICAoKCh1aW50NjRfdCl2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1b MF0pIDw8IDMyKSB8CisrICAgICAgICB2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMV0sCisrICAg ICAgKCgodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzJdKSA8PCAzMikgfAorKyAg ICAgICAgdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzNdCisrICAgIH07CisrICB9CisrICBjb250 ZXh0LT52cmVncy5zYXZlX3Zyc2F2ZSA9IHZlY3Rvcl9jb250ZXh0LnZyc2F2ZTsKKysgIGNvbnRl eHQtPnZyZWdzLnNhdmVfdnNjciA9IHswLCAodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnNjci52 c2NyX3dvcmR9OworK30KKysKKysKKysjZW5kaWYKKysKKyB9ICAvLyBuYW1lc3BhY2UgaW50ZXJu YWwKKyB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKKyAKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4y Lm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3NuYXBzaG90L2xpbnV4L2RlYnVnX3JlbmRlenZvdXNfdGVzdC5jYworKysrIHF0Ni13ZWJlbmdp bmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L2RlYnVnX3JlbmRlenZvdXNfdGVzdC5jYworQEAgLTE5NSw2ICsx OTUsOCBAQCB2b2lkIFRlc3RBZ2FpbnN0VGFyZ2V0KFB0cmFjZUNvbm5lY3Rpb24qCisgICAgICAg ICAgICAgICBkZXZpY2UgPT0gMCAmJiBpbm9kZSA9PSAwICYmIG1hcHBpbmdfbmFtZSA9PSAiW3Zk c29dIjsKKyAjaWYgZGVmaW5lZChBUkNIX0NQVV9YODYpCisgICAgICAgICAgIHN0YXRpYyBjb25z dGV4cHIgY2hhciBrUHJlZml4W10gPSAibGludXgtZ2F0ZS5zby4iOworKyNlbGlmIGRlZmluZWQo QVJDSF9DUFVfUFBDNjQpCisrICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrUHJlZml4 W10gPSAibGludXgtdmRzbzY0LnNvLiI7CisgI2Vsc2UKKyAgICAgICAgICAgc3RhdGljIGNvbnN0 ZXhwciBjaGFyIGtQcmVmaXhbXSA9ICJsaW51eC12ZHNvLnNvLiI7CisgI2VuZGlmCistLS0gcXQ2 LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXgu Y2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3Rf bGludXguY2MKK0BAIC0zMjUsNiArMzI1LDY5IEBAIGJvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51 eDo6UmVhZENvbnRleHQKKyAgICAgICByZWFkZXIsIGNvbnRleHRfYWRkcmVzcywgY29udGV4dF8u bWlwczY0KTsKKyB9CisgCisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisr CisrdGVtcGxhdGUgPHR5cGVuYW1lIFRyYWl0cz4KKytzdGF0aWMgYm9vbCBSZWFkQ29udGV4dChQ cm9jZXNzUmVhZGVyTGludXgqIHJlYWRlciwKKysgICAgICAgICAgICAgICAgICAgICAgICBMaW51 eFZNQWRkcmVzcyBjb250ZXh0X2FkZHJlc3MsCisrICAgICAgICAgICAgICAgICAgICAgICAgdHlw ZW5hbWUgVHJhaXRzOjpDUFVDb250ZXh0KiBkZXN0X2NvbnRleHQpIHsKKysgIGNvbnN0IFByb2Nl c3NNZW1vcnkqIG1lbW9yeSA9IHJlYWRlci0+TWVtb3J5KCk7CisrCisrICBMaW51eFZNQWRkcmVz cyBncF9yZWdzX2FkZHJlc3MgPSBjb250ZXh0X2FkZHJlc3MgKworKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoVUNvbnRleHQsIG1jb250ZXh0KSArCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZih0eXBlbmFtZSBUcmFpdHM6Ok1D b250ZXh0LCBncF9yZWdzKTsKKysKKysgIHR5cGVuYW1lIFRyYWl0czo6U2lnbmFsVGhyZWFkQ29u dGV4dCB0aHJlYWRfY29udGV4dDsKKysgIGlmICghbWVtb3J5LT5SZWFkKGdwX3JlZ3NfYWRkcmVz cywgc2l6ZW9mKHRocmVhZF9jb250ZXh0KSwgJnRocmVhZF9jb250ZXh0KSkgeworKyAgICBMT0co RVJST1IpIDw8ICJDb3VsZG4ndCByZWFkIGdwX3JlZ3MhIjsKKysgICAgcmV0dXJuIGZhbHNlOwor KyAgfQorKworKyAgTGludXhWTUFkZHJlc3MgZnBfcmVnc19hZGRyZXNzID0gY29udGV4dF9hZGRy ZXNzICsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKFVDb250 ZXh0LCBtY29udGV4dCkgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zm c2V0b2YodHlwZW5hbWUgVHJhaXRzOjpNQ29udGV4dCwgZnBfcmVncyk7CisrCisrICB0eXBlbmFt ZSBUcmFpdHM6OlNpZ25hbEZsb2F0Q29udGV4dCBmcF9jb250ZXh0OworKyAgaWYgKCFtZW1vcnkt PlJlYWQoZnBfcmVnc19hZGRyZXNzLCBzaXplb2YoZnBfY29udGV4dCksICZmcF9jb250ZXh0KSkg eworKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4ndCByZWFkIGZwX3JlZ3MhIjsKKysgICAgcmV0 dXJuIGZhbHNlOworKyAgfQorKworKyAgTGludXhWTUFkZHJlc3Mgdl9yZWdzX3B0cl9hZGRyZXNz ID0gY29udGV4dF9hZGRyZXNzICsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b2Zmc2V0b2YoVUNvbnRleHQsIG1jb250ZXh0KSArCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9mZnNldG9mKHR5cGVuYW1lIFRyYWl0czo6TUNvbnRleHQsIHZteF9yZXNlcnZl KSArIDg7CisrCisrICB0eXBlbmFtZSBUcmFpdHM6OlNpZ25hbFZlY3RvckNvbnRleHQgdl9jb250 ZXh0OworKyAgaWYgKCFtZW1vcnktPlJlYWQodl9yZWdzX3B0cl9hZGRyZXNzLCBzaXplb2Yodl9j b250ZXh0KSwgJnZfY29udGV4dCkpIHsKKysgICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3QgcmVh ZCB2X3JlZ3MhIjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKworKyAgSW5pdGlhbGl6ZUNQ VUNvbnRleHRQUEM2NDxDb250ZXh0VHJhaXRzNjQ+KHRocmVhZF9jb250ZXh0LCBmcF9jb250ZXh0 LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2X2NvbnRleHQsIGRlc3RfY29udGV4dCk7 CisrCisrICByZXR1cm4gdHJ1ZTsKKyt9CisrCisrdGVtcGxhdGU8PgorK2Jvb2wgRXhjZXB0aW9u U25hcHNob3RMaW51eDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czY0PigKKysgICAgUHJvY2Vz c1JlYWRlckxpbnV4KiByZWFkZXIsCisrICAgIExpbnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVz cykgeworKyAgY29udGV4dF8uYXJjaGl0ZWN0dXJlID0ga0NQVUFyY2hpdGVjdHVyZVBQQzY0Owor KyAgY29udGV4dF8ucHBjNjQgPSAmY29udGV4dF91bmlvbl8ucHBjNjQ7CisrCisrICByZXR1cm4g aW50ZXJuYWw6OlJlYWRDb250ZXh0PENvbnRleHRUcmFpdHM2ND4oCisrICAgICAgcmVhZGVyLCBj b250ZXh0X2FkZHJlc3MsIGNvbnRleHRfLnBwYzY0KTsKKyt9CisrCisrdGVtcGxhdGU8PgorK2Jv b2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czMyPigK KysgICAgUHJvY2Vzc1JlYWRlckxpbnV4KiByZWFkZXIsCisrICAgIExpbnV4Vk1BZGRyZXNzIGNv bnRleHRfYWRkcmVzcykgeworKyAgLy8gUFBDNjQgaXMgNjQtYml0CisrICByZXR1cm4gZmFsc2U7 CisrfQorKworICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQorIAorIGJvb2wgRXhjZXB0 aW9uU25hcHNob3RMaW51eDo6SW5pdGlhbGl6ZSgKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9y aWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3Nu YXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eC5oCisrKysgcXQ2LXdlYmVuZ2lu ZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4LmgKK0BAIC04OSw2ICs4 OSw4IEBAIGNsYXNzIEV4Y2VwdGlvblNuYXBzaG90TGludXggZmluYWwgOiBwdWIKKyAjZWxpZiBk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorICAgICBDUFVDb250ZXh0TUlQUyBtaXBzZWw7 CisgICAgIENQVUNvbnRleHRNSVBTNjQgbWlwczY0OworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVf UFBDNjRfRkFNSUxZKQorKyAgICBDUFVDb250ZXh0UFBDNjQgcHBjNjQ7CisgI2VuZGlmCisgICB9 IGNvbnRleHRfdW5pb25fOworICAgQ1BVQ29udGV4dCBjb250ZXh0XzsKKy0tLSBxdDYtd2ViZW5n aW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eF90ZXN0LmNj CisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xp bnV4X3Rlc3QuY2MKK0BAIC0yOTYsNyArMjk2LDI4IEBAIHZvaWQgRXhwZWN0Q29udGV4dChjb25z dCBDUFVDb250ZXh0JiBhY3QKKyAgICAgICAgICAgICAwKTsKKyAjdW5kZWYgQ1BVX0FSQ0hfTkFN RQorIH0KKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKyt1c2luZyBOYXRp dmVDUFVDb250ZXh0ID0gdWNvbnRleHRfdDsKKyAKKyt2b2lkIEluaXRpYWxpemVDb250ZXh0KE5h dGl2ZUNQVUNvbnRleHQqIGNvbnRleHQpIHsKKysgIGZvciAoc2l6ZV90IHJlZyA9IDA7IHJlZyA8 IDMyOyArK3JlZykgeworKyAgICBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW3JlZ10gPSBy ZWc7CisrICB9CisrCisrICBtZW1zZXQoJmNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3MsIDQ0 LAorKyAgICAgIHNpemVvZihjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzKSk7CisrfQorKwor K3ZvaWQgRXhwZWN0Q29udGV4dChjb25zdCBDUFVDb250ZXh0JiBhY3R1YWwsIGNvbnN0IE5hdGl2 ZUNQVUNvbnRleHQmIGV4cGVjdGVkKSB7CisrICBFWFBFQ1RfRVEoYWN0dWFsLmFyY2hpdGVjdHVy ZSwga0NQVUFyY2hpdGVjdHVyZVBQQzY0KTsKKysKKysgIGZvciAoc2l6ZV90IHJlZyA9IDA7IHJl ZyA8IDMyOyArK3JlZykgeworKyAgICBFWFBFQ1RfRVEoYWN0dWFsLnBwYzY0LT5yZWdzW3JlZ10s IGV4cGVjdGVkLnVjX21jb250ZXh0LmdwX3JlZ3NbcmVnXSk7CisrICB9CisrCisrICBFWFBFQ1Rf RVEobWVtY21wKGFjdHVhbC5wcGM2NC0+ZnByZWdzLCBleHBlY3RlZC51Y19tY29udGV4dC5mcF9y ZWdzLAorKyAgICAgICAgICAgIHNpemVvZihhY3R1YWwucHBjNjQtPmZwcmVncykpLCAwKTsKKyt9 CisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4y Lm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3NuYXBzaG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4LmNjCisrKysgcXQ2LXdlYmVuZ2lu ZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvc25hcHNob3QvbGludXgvcHJvY2Vzc19yZWFkZXJfbGludXguY2MKK0BAIC0xMDgsNiArMTA4 LDggQEAgdm9pZCBQcm9jZXNzUmVhZGVyTGludXg6OlRocmVhZDo6SW5pdGlhbAorICNlbGlmIGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisgICBzdGFja19wb2ludGVyID0gcmVhZGVyLT5J czY0Qml0KCkgPyB0aHJlYWRfaW5mby50aHJlYWRfY29udGV4dC50NjQucmVnc1syOV0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRocmVhZF9pbmZvLnRocmVhZF9jb250 ZXh0LnQzMi5yZWdzWzI5XTsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkK KysgIHN0YWNrX3BvaW50ZXIgPSB0aHJlYWRfaW5mby50aHJlYWRfY29udGV4dC50NjQuZ3ByWzFd OworICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmCistLS0gcXQ2LXdlYmVuZ2luZS02LjQu Mi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9zbmFwc2hvdC9saW51eC9zaWduYWxfY29udGV4dC5oCisrKysgcXQ2LXdlYmVuZ2luZS02LjQu Mi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25h cHNob3QvbGludXgvc2lnbmFsX2NvbnRleHQuaAorQEAgLTQyMiw2ICs0MjIsODkgQEAgc3RhdGlj X2Fzc2VydChvZmZzZXRvZihVQ29udGV4dDxDb250ZXh0VAorICAgICAgICAgICAgICAgImNvbnRl eHQgb2Zmc2V0IG1pc21hdGNoIik7CisgI2VuZGlmCisgCisrI2VsaWYgZGVmaW5lZChBUkNIX0NQ VV9QUEM2NF9GQU1JTFkpCisrCisrc3RydWN0IFNpZ25hbFRocmVhZENvbnRleHQ2NCB7CisrICB1 aW50NjRfdCByZWdzWzMyXTsKKysgIHVpbnQ2NF90IG5pcDsKKysgIHVpbnQ2NF90IG1zcjsKKysg IHVpbnQ2NF90IG9yaWdfcjM7CisrICB1aW50NjRfdCBjdHI7CisrICB1aW50NjRfdCBsbms7Cisr ICB1aW50NjRfdCB4ZXI7CisrICB1aW50NjRfdCBjY3I7CisrICB1aW50NjRfdCBzb2Z0ZTsKKysg IHVpbnQ2NF90IHRyYXA7CisrICB1aW50NjRfdCBkYXI7CisrICB1aW50NjRfdCBkc2lzcjsKKysg IHVpbnQ2NF90IHJlc3VsdDsKKysgIHVpbnQ2NF90IGRzY3I7CisrICB1aW50NjRfdCBmcHIwWzNd OworK307CisrCisrc3RydWN0IFNpZ25hbEZsb2F0Q29udGV4dDY0IHsKKysgIGRvdWJsZSByZWdz WzMyXTsKKysgIGRvdWJsZSBmcHNjcjsKKyt9OworKworK3N0cnVjdCBTaWduYWxWZWN0b3JDb250 ZXh0NjQgeworKyAgaW50MzJfdCB2cnJlZ3NbMzJdWzRdOworKyAgc3RydWN0IHsKKysgICAgaW50 MzJfdCBfX3BhZFszXTsKKysgICAgaW50MzJfdCB2c2NyX3dvcmQ7CisrICB9IHZzY3I7CisrICBp bnQzMl90IHZyc2F2ZTsKKysgIGludDMyX3QgX19wYWRbM107CisrfSBfX2F0dHJpYnV0ZV9fKChf X2FsaWduZWRfXygxNikpKTsKKysKKysKKysjcHJhZ21hIHBhY2socG9wKQorK3N0cnVjdCBNQ29u dGV4dDY0IHsKKysgIHVpbnQ2NF90IHJlc2VydmVkWzRdOworKyAgaW50MzJfdCBzaWduYWw7Cisr ICBpbnQzMl90IF9fcGFkMDsKKysgIHVpbnQ2NF90IGhhbmRsZXI7CisrICB1aW50NjRfdCBvbGRt YXNrOworKyAgdWludDY0X3QgcHRfcmVnc19wdHI7CisrICBTaWduYWxUaHJlYWRDb250ZXh0NjQg Z3BfcmVnczsKKysgIFNpZ25hbEZsb2F0Q29udGV4dDY0ICBmcF9yZWdzOworKyAgU2lnbmFsVmVj dG9yQ29udGV4dDY0ICp2X3JlZ3M7CisrICBpbnQ2NF90IHZteF9yZXNlcnZlWzY5XTsKKyt9Owor KworK3N0cnVjdCBDb250ZXh0VHJhaXRzNjQgOiBwdWJsaWMgVHJhaXRzNjQgeworKyAgdXNpbmcg TUNvbnRleHQgPSBNQ29udGV4dDY0OworKyAgdXNpbmcgU2lnbmFsVGhyZWFkQ29udGV4dCA9IFNp Z25hbFRocmVhZENvbnRleHQ2NDsKKysgIHVzaW5nIFNpZ25hbEZsb2F0Q29udGV4dCA9IFNpZ25h bEZsb2F0Q29udGV4dDY0OworKyAgdXNpbmcgU2lnbmFsVmVjdG9yQ29udGV4dCA9IFNpZ25hbFZl Y3RvckNvbnRleHQ2NDsKKysgIHVzaW5nIENQVUNvbnRleHQgPSBDUFVDb250ZXh0UFBDNjQ7Cisr fTsKKysKKytzdHJ1Y3QgQ29udGV4dFRyYWl0czMyIDogcHVibGljIFRyYWl0czMyIHt9OworKwor K3N0cnVjdCBVQ29udGV4dCB7CisrICB1aW50NjRfdCBmbGFnczsKKysgIHVpbnQ2NF90IGxpbms7 CisrICBTaWduYWxTdGFjazxDb250ZXh0VHJhaXRzNjQ+IHN0YWNrOworKyAgU2lnc2V0PENvbnRl eHRUcmFpdHM2ND4gc2lnbWFzazsKKysgIE1Db250ZXh0NjQgbWNvbnRleHQ7CisrfTsKKysjcHJh Z21hIHBhY2socHVzaCwgMSkKKysKKytzdGF0aWNfYXNzZXJ0KHNpemVvZihVQ29udGV4dCkgPT0g c2l6ZW9mKHVjb250ZXh0X3QpLAorKyAgICAgICAgICAgICAgInVjb250ZXh0X3Qgc2l6ZSBtaXNt YXRjaCIpOworK3N0YXRpY19hc3NlcnQoc2l6ZW9mKE1Db250ZXh0NjQpID09IHNpemVvZihtY29u dGV4dF90KSwKKysgICAgICAgICAgICAgICJtY29udGV4dF90IHNpemUgbWlzbWF0Y2giKTsKKytz dGF0aWNfYXNzZXJ0KHNpemVvZihTaWduYWxUaHJlYWRDb250ZXh0NjQpID09IHNpemVvZihncmVn c2V0X3QpLAorKyAgICAgICAgICAgICAgImdyZWdzZXRfdCBzaXplIG1pc21hdGNoIik7Cisrc3Rh dGljX2Fzc2VydChzaXplb2YoU2lnbmFsRmxvYXRDb250ZXh0NjQpID09IHNpemVvZihmcHJlZ3Nl dF90KSwKKysgICAgICAgICAgICAgICJmcHJlZ3NldF90IHNpemUgbWlzbWF0Y2giKTsKKytzdGF0 aWNfYXNzZXJ0KHNpemVvZihTaWduYWxWZWN0b3JDb250ZXh0NjQpID09IHNpemVvZih2cnJlZ3Nl dF90KSwKKysgICAgICAgICAgICAgICJ2cnJlZ3NldF90IHNpemUgbWlzbWF0Y2giKTsKKytzdGF0 aWNfYXNzZXJ0KG9mZnNldG9mKFVDb250ZXh0LCBtY29udGV4dCkgPT0KKysgICAgICAgICAgICAg IG9mZnNldG9mKHVjb250ZXh0X3QsIHVjX21jb250ZXh0KSwgIm1jb250ZXh0IG9mZnNldCBtaXNt YXRjaCIpOworK3N0YXRpY19hc3NlcnQob2Zmc2V0b2YoTUNvbnRleHQ2NCwgZ3BfcmVncykgPT0K KysgICAgICAgICAgICAgIG9mZnNldG9mKG1jb250ZXh0X3QsIGdwX3JlZ3MpLCAiZ3BfcmVncyBv ZmZzZXQgbWlzbWF0Y2giKTsKKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJD SF9DUFVfWDg2X0ZBTUlMWQorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgv c3lzdGVtX3NuYXBzaG90X2xpbnV4LmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGlu dXgvc3lzdGVtX3NuYXBzaG90X2xpbnV4LmNjCitAQCAtMjA1LDYgKzIwNSw4IEBAIENQVUFyY2hp dGVjdHVyZSBTeXN0ZW1TbmFwc2hvdExpbnV4OjpHZXQKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKQorICAgcmV0dXJuIHByb2Nlc3NfcmVhZGVyXy0+SXM2NEJpdCgpID8ga0NQ VUFyY2hpdGVjdHVyZU1JUFM2NEVMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOiBrQ1BVQXJjaGl0ZWN0dXJlTUlQU0VMOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBD NjRfRkFNSUxZKQorKyAgcmV0dXJuIGtDUFVBcmNoaXRlY3R1cmVQUEM2NDsKKyAjZWxzZQorICNl cnJvciBwb3J0IHRvIHlvdXIgYXJjaGl0ZWN0dXJlCisgI2VuZGlmCitAQCAtMjIwLDYgKzIyMiw5 IEBAIHVpbnQzMl90IFN5c3RlbVNuYXBzaG90TGludXg6OkNQVVJldmlzaW8KKyAjZWxpZiBkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorICAgLy8gTm90IGltcGxlbWVudGFibGUgb24gTUlQ UworICAgcmV0dXJuIDA7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisr ICAvLyBOb3QgeWV0IGltcGxlbWVudGVkIG9uIFBQQzY0CisrICByZXR1cm4gMDsKKyAjZWxzZQor ICNlcnJvciBwb3J0IHRvIHlvdXIgYXJjaGl0ZWN0dXJlCisgI2VuZGlmCitAQCAtMjQwLDYgKzI0 NSw5IEBAIHN0ZDo6c3RyaW5nIFN5c3RlbVNuYXBzaG90TGludXg6OkNQVVZlbmQKKyAjZWxpZiBk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorICAgLy8gTm90IGltcGxlbWVudGFibGUgb24g TUlQUworICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9Q UEM2NF9GQU1JTFkpCisrICAvLyBOb3QgeWV0IGltcGxlbWVudGVkIG9uIFBQQzY0CisrICByZXR1 cm4gc3RkOjpzdHJpbmcoKTsKKyAjZWxzZQorICNlcnJvciBwb3J0IHRvIHlvdXIgYXJjaGl0ZWN0 dXJlCisgI2VuZGlmCitAQCAtMzczLDYgKzM4MSw5IEBAIGJvb2wgU3lzdGVtU25hcHNob3RMaW51 eDo6TlhFbmFibGVkKCkgY28KKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQor ICAgLy8gTm90IGltcGxlbWVudGFibGUgb24gTUlQUworICAgcmV0dXJuIGZhbHNlOworKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgLy8gTm90IHlldCBpbXBsZW1lbnRl ZCBvbiBQUEM2NAorKyAgcmV0dXJuIGZhbHNlOworICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2Vu ZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmln L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9saW51eC90ZXN0X21vZHVsZXMuY2MKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9s aW51eC90ZXN0X21vZHVsZXMuY2MKK0BAIC0xMTAsNiArMTEwLDggQEAgYm9vbCBXcml0ZVRlc3RN b2R1bGUoY29uc3QgYmFzZTo6RmlsZVBhdAorICAgbW9kdWxlLmVoZHIuZV9tYWNoaW5lID0gRU1f QUFSQ0g2NDsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNFTCkgfHwgZGVmaW5lZChBUkNI X0NQVV9NSVBTNjRFTCkKKyAgIG1vZHVsZS5laGRyLmVfbWFjaGluZSA9IEVNX01JUFM7CisrI2Vs aWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKKysgIG1vZHVsZS5laGRyLmVfbWFjaGluZSA9IEVN X1BQQzY0OworICNlbmRpZgorIAorICAgbW9kdWxlLmVoZHIuZV92ZXJzaW9uID0gRVZfQ1VSUkVO VDsKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9zbmFwc2hv dF9saW51eC5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9zbmFw c2hvdF9saW51eC5jYworQEAgLTE4OSw2ICsxODksMTQgQEAgYm9vbCBUaHJlYWRTbmFwc2hvdExp bnV4OjpJbml0aWFsaXplKAorICAgICAgICAgdGhyZWFkLnRocmVhZF9pbmZvLmZsb2F0X2NvbnRl eHQuZjMyLAorICAgICAgICAgY29udGV4dF8ubWlwc2VsKTsKKyAgIH0KKysjZWxpZiBkZWZpbmVk KEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIGNvbnRleHRfLmFyY2hpdGVjdHVyZSA9IGtDUFVB cmNoaXRlY3R1cmVQUEM2NDsKKysgIGNvbnRleHRfLnBwYzY0ID0gJmNvbnRleHRfdW5pb25fLnBw YzY0OworKyAgSW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NDxDb250ZXh0VHJhaXRzNjQ+KAorKyAg ICAgIHRocmVhZC50aHJlYWRfaW5mby50aHJlYWRfY29udGV4dC50NjQsCisrICAgICAgdGhyZWFk LnRocmVhZF9pbmZvLmZsb2F0X2NvbnRleHQuZjY0LAorKyAgICAgIHRocmVhZC50aHJlYWRfaW5m by52ZWN0b3JfY29udGV4dC52NjQsCisrICAgICAgY29udGV4dF8ucHBjNjQpOworICNlbHNlCisg I2Vycm9yIFBvcnQuCisgI2VuZGlmCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9s aW51eC90aHJlYWRfc25hcHNob3RfbGludXguaAorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90 L2xpbnV4L3RocmVhZF9zbmFwc2hvdF9saW51eC5oCitAQCAtNzMsNiArNzMsOCBAQCBjbGFzcyBU aHJlYWRTbmFwc2hvdExpbnV4IGZpbmFsIDogcHVibGljCisgI2VsaWYgZGVmaW5lZChBUkNIX0NQ VV9NSVBTX0ZBTUlMWSkKKyAgICAgQ1BVQ29udGV4dE1JUFMgbWlwc2VsOworICAgICBDUFVDb250 ZXh0TUlQUzY0IG1pcHM2NDsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkK KysgICAgQ1BVQ29udGV4dFBQQzY0IHBwYzY0OworICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2Vu ZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmln L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGls L25ldC9odHRwX3RyYW5zcG9ydF9saWJjdXJsLmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9u ZXQvaHR0cF90cmFuc3BvcnRfbGliY3VybC5jYworQEAgLTIzNyw2ICsyMzcsMTIgQEAgc3RkOjpz dHJpbmcgVXNlckFnZW50KCkgeworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfQklHX0VORElBTikK KyAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGFyY2hbXSA9ICJhYXJjaDY0X2JlIjsKKyAjZW5k aWYKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrI2lmIGRlZmluZWQoQVJDSF9DUFVf TElUVExFX0VORElBTikKKysgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGFyY2hbXSA9ICJwcGM2 NGxlIjsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX0JJR19FTkRJQU4pCisrICAgIHN0YXRpYyBj b25zdGV4cHIgY2hhciBhcmNoW10gPSAicHBjNjQiOworKyNlbmRpZgorICNlbHNlCisgI2Vycm9y IFBvcnQKKyAjZW5kaWYKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvYXV4aWxp YXJ5X3ZlY3Rvci5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvYXV4aWxpYXJ5X3Zl Y3Rvci5jYworQEAgLTU2LDYgKzU2LDExIEBAIGJvb2wgQXV4aWxpYXJ5VmVjdG9yOjpSZWFkKFB0 cmFjZUNvbm5lY3QKKyAgICAgaWYgKHR5cGUgPT0gQVRfSUdOT1JFKSB7CisgICAgICAgY29udGlu dWU7CisgICAgIH0KKysjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAgIGlm ICh0eXBlID09IEFUX0lHTk9SRVBQQykgeworKyAgICAgIGNvbnRpbnVlOworKyAgICB9CisrI2Vu ZGlmCisgICAgIGlmICghTWFwSW5zZXJ0T3JSZXBsYWNlKCZ2YWx1ZXNfLCB0eXBlLCB2YWx1ZSwg bnVsbHB0cikpIHsKKyAgICAgICBMT0coRVJST1IpIDw8ICJkdXBsaWNhdGUgYXV4diBlbnRyeSI7 CisgICAgICAgcmV0dXJuIGZhbHNlOworLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51 eC9wdHJhY2VyLmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VyLmNjCitA QCAtMzk4LDYgKzM5OCw2NCBAQCBib29sIEdldFRocmVhZEFyZWE2NChwaWRfdCB0aWQsCisgICBy ZXR1cm4gdHJ1ZTsKKyB9CisgCisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkp CisrLy8gUFBDNjQgaGFzIGhhZCBIQVZFX0FSQ0hfVFJBQ0VIT09LIHNldCBzaW5jZSAyLjYuMjcg KGV2ZW4gYmVmb3JlIHg4NiBoYWQgaXQpLgorKy8vIFRoYXQgbWVhbnMgd2UgY2FuIHNpbXBseSB1 c2UgUFRSQUNFX0dFVFJFR0VTRVQuCisrCisrdGVtcGxhdGUgPHR5cGVuYW1lIERlc3RpbmF0aW9u PgorK2Jvb2wgR2V0UmVnaXN0ZXJTZXQocGlkX3QgdGlkLCBpbnQgc2V0LCBEZXN0aW5hdGlvbiog ZGVzdCwgYm9vbCBjYW5fbG9nKSB7CisrICBpb3ZlYyBpb3Y7CisrICBpb3YuaW92X2Jhc2UgPSBy ZWludGVycHJldF9jYXN0PHZvaWQqPihkZXN0KTsKKysgIGlvdi5pb3ZfbGVuID0gc2l6ZW9mKCpk ZXN0KTsKKysgIGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCByZWludGVycHJldF9j YXN0PHZvaWQqPihzZXQpLCAmaW92KSAhPSAwKSB7CisrICAgIFBMT0dfSUYoRVJST1IsIGNhbl9s b2cpIDw8ICJwdHJhY2UiOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrICBpZiAoaW92Lmlv dl9sZW4gIT0gc2l6ZW9mKCpkZXN0KSkgeworKyAgICBMT0dfSUYoRVJST1IsIGNhbl9sb2cpIDw8 ICJVbmV4cGVjdGVkIHJlZ2lzdGVycyBzaXplIjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQor KyAgcmV0dXJuIHRydWU7CisrfQorKworK2Jvb2wgR2V0VmVjdG9yUmVnaXN0ZXJzNjQocGlkX3Qg dGlkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yQ29udGV4dCogY29udGV4dCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xvZykgeworKyAgcmV0dXJuIEdl dFJlZ2lzdGVyU2V0KHRpZCwgTlRfUFBDX1ZNWCwgJmNvbnRleHQtPnY2NCwgY2FuX2xvZyk7Cisr fQorKworK2Jvb2wgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczY0KHBpZF90IHRpZCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdENvbnRleHQqIGNvbnRleHQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7CisrICByZXR1cm4g R2V0UmVnaXN0ZXJTZXQodGlkLCBOVF9QUkZQUkVHLCAmY29udGV4dC0+ZjY0LCBjYW5fbG9nKTsK Kyt9CisrCisrYm9vbCBHZXRUaHJlYWRBcmVhNjQocGlkX3QgdGlkLAorKyAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IFRocmVhZENvbnRleHQmIGNvbnRleHQsCisrICAgICAgICAgICAgICAgICAg ICAgTGludXhWTUFkZHJlc3MqIGFkZHJlc3MsCisrICAgICAgICAgICAgICAgICAgICAgYm9vbCBj YW5fbG9nKSB7CisrICAvLyBQUEM2NCBkb2Vzbid0IGhhdmUgUFRSQUNFX0dFVF9USFJFQURfQVJF QSBzaW5jZSB0aGUgdGhyZWFkIHBvaW50ZXIKKysgIC8vIGlzIHN0b3JlZCBpbiBHUFIgMTMuCisr ICBUaHJlYWRDb250ZXh0Ojp0NjRfdCB0YzsKKysgIGlmICghR2V0UmVnaXN0ZXJTZXQodGlkLCBO VF9QUlNUQVRVUywgJnRjLCBjYW5fbG9nKSkgeworKyAgICBMT0dfSUYoRVJST1IsIGNhbl9sb2cp IDw8ICJVbmFibGUgdG8gZ2V0IHRocmVhZCBwb2ludGVyISI7CisrICAgIHJldHVybiBmYWxzZTsK KysgIH0KKysKKysgICphZGRyZXNzID0gdGMuZ3ByWzEzXTsKKysKKysgIHJldHVybiB0cnVlOwor K30KKysKKysvLyBTdHVicyBmb3IgMzItYml0IGZ1bmN0aW9ucyBub3QgYXBwbGljYWJsZSBvbiBQ UEM2NAorK2Jvb2wgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczMyKHBpZF90IHRpZCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdENvbnRleHQqIGNvbnRleHQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7IHJldHVybiBmYWxz ZTsgfQorK2Jvb2wgR2V0VGhyZWFkQXJlYTMyKHBpZF90IHRpZCwKKysgICAgICAgICAgICAgICAg ICAgICBjb25zdCBUaHJlYWRDb250ZXh0ICZjb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAg IExpbnV4Vk1BZGRyZXNzICphZGRyZXNzLAorKyAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2Fu X2xvZykgeyByZXR1cm4gZmFsc2U7IH0KKysKKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRp ZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQorQEAgLTQ5NCw2ICs1NTIsOSBAQCBib29sIFB0cmFj ZXI6OkdldFRocmVhZEluZm8ocGlkX3QgdGlkLCBUCisgICBpZiAoaXNfNjRfYml0XykgeworICAg ICByZXR1cm4gR2V0R2VuZXJhbFB1cnBvc2VSZWdpc3RlcnM2NCh0aWQsICZpbmZvLT50aHJlYWRf Y29udGV4dCwgY2FuX2xvZ18pICYmCisgICAgICAgICAgICBHZXRGbG9hdGluZ1BvaW50UmVnaXN0 ZXJzNjQodGlkLCAmaW5mby0+ZmxvYXRfY29udGV4dCwgY2FuX2xvZ18pICYmCisrI2lmIGRlZmlu ZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICAgICAgICAgR2V0VmVjdG9yUmVnaXN0ZXJz NjQodGlkLCAmaW5mby0+dmVjdG9yX2NvbnRleHQsIGNhbl9sb2dfKSAmJgorKyNlbmRpZgorICAg ICAgICAgICAgR2V0VGhyZWFkQXJlYTY0KHRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbmZvLT50aHJlYWRfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5m by0+dGhyZWFkX3NwZWNpZmljX2RhdGFfYWRkcmVzcywKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4y Lm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3V0aWwvbGludXgvdGhyZWFkX2luZm8uaAorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgv dGhyZWFkX2luZm8uaAorQEAgLTM5LDYgKzM5LDEwIEBAIHN0cnVjdCB1c2VyX3ZmcF9leGMgewor ICNpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPgorICNlbmRpZgorIAorKyNpZiBkZWZpbmVk KEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysjaW5jbHVkZSA8c3lzL3Vjb250ZXh0Lmg+CisrI2Vu ZGlmCisrCisgbmFtZXNwYWNlIGNyYXNocGFkIHsKKyAKKyAvLyEgXGJyaWVmIFRoZSBzZXQgb2Yg Z2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycyBmb3IgYW4gYXJjaGl0ZWN0dXJlIGZhbWlseS4KK0BA IC05MCw2ICs5NCw4IEBAIHVuaW9uIFRocmVhZENvbnRleHQgeworICAgICB1aW50MzJfdCBjcDBf c3RhdHVzOworICAgICB1aW50MzJfdCBjcDBfY2F1c2U7CisgICAgIHVpbnQzMl90IHBhZGRpbmcx XzsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgICAgLy8gUFBDNjQg aXMgNjQtYml0CisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4 Nl9GQU1JTFkKK0BAIC0xNDMsNiArMTQ5LDIxIEBAIHVuaW9uIFRocmVhZENvbnRleHQgeworICAg ICB1aW50NjRfdCBjcDBfYmFkdmFkZHI7CisgICAgIHVpbnQ2NF90IGNwMF9zdGF0dXM7CisgICAg IHVpbnQ2NF90IGNwMF9jYXVzZTsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlM WSkKKysgICAgLy8gUmVmbGVjdHMgc3RydWN0IHB0X3JlZ3MgaW4gYXNtL3B0cmFjZS5oLgorKyAg ICB1aW50NjRfdCBncHJbMzJdOworKyAgICB1aW50NjRfdCBuaXA7CisrICAgIHVpbnQ2NF90IG1z cjsKKysgICAgdWludDY0X3Qgb3JpZ19ncHIzOworKyAgICB1aW50NjRfdCBjdHI7CisrICAgIHVp bnQ2NF90IGxuazsKKysgICAgdWludDY0X3QgeGVyOworKyAgICB1aW50NjRfdCBjY3I7CisrICAg IHVpbnQ2NF90IHNvZnRlOworKyAgICB1aW50NjRfdCB0cmFwOworKyAgICB1aW50NjRfdCBkYXI7 CisrICAgIHVpbnQ2NF90IGRzaXNyOworKyAgICB1aW50NjRfdCByZXN1bHQ7CisgI2Vsc2UKKyAj ZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKK0BAIC0xNTQsNiAr MTc1LDggQEAgdW5pb24gVGhyZWFkQ29udGV4dCB7CisgICB1c2luZyBOYXRpdmVUaHJlYWRDb250 ZXh0ID0gdXNlcl9yZWdzOworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisg Ly8gTm8gYXBwcm9wcmlhdGUgTmF0aXZlVGhyZWFkc0NvbnRleHQgdHlwZSBhdmFpbGFibGUgZm9y IE1JUFMKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIHVzaW5nIE5h dGl2ZVRocmVhZENvbnRleHQgPSBzdHJ1Y3QgcHRfcmVnczsKKyAjZWxzZQorICNlcnJvciBQb3J0 LgorICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWSB8fCBBUkNIX0NQVV9BUk02NAorQEAg LTIyOSw2ICsyNTIsOSBAQCB1bmlvbiBGbG9hdENvbnRleHQgeworICAgICB9IGZwcmVnc1szMl07 CisgICAgIHVpbnQzMl90IGZwY3NyOworICAgICB1aW50MzJfdCBmcHVfaWQ7CisrI2VsaWYgZGVm aW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAgIC8vIENyYXNocGFkJ3MgUFBDIHN1cHBv cnQgaXMgNjQtYml0IG9ubHksIHNvIHRoaXMKKysgICAgLy8gMzJiaXQtb25seSBzdHJ1Y3QgaXMg ZGVjbGFyZWQgYXMgZW1wdHkuCisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8vIEFS Q0hfQ1BVX1g4Nl9GQU1JTFkKK0BAIC0yNjMsNiArMjg5LDEwIEBAIHVuaW9uIEZsb2F0Q29udGV4 dCB7CisgICAgIGRvdWJsZSBmcHJlZ3NbMzJdOworICAgICB1aW50MzJfdCBmcGNzcjsKKyAgICAg dWludDMyX3QgZnB1X2lkOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQor KyAgICAvLyBSZWZsZWN0cyBmcHJlZ3NldF90IGluIHN5cy91Y29udGV4dC5oCisrICAgIGRvdWJs ZSBmcHJlZ3NbMzJdOworKyAgICBkb3VibGUgZnBzY3I7CisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4K KyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKK0BAIC0yOTIsNiArMzIyLDggQEAgdW5p b24gRmxvYXRDb250ZXh0IHsKKyAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGY2NCkgPT0gc2l6ZW9m KHVzZXJfZnBzaW1kX3N0cnVjdCksICJTaXplIG1pc21hdGNoIik7CisgI2VsaWYgZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAvLyBObyBhcHByb3ByaWF0ZSBmbG9hdGluZyBwb2ludCBj b250ZXh0IG5hdGl2ZSB0eXBlIGZvciBhdmFpbGFibGUgTUlQUy4KKysjZWxpZiBkZWZpbmVkKEFS Q0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGY2NCkgPT0gc2l6 ZW9mKGZwcmVnc2V0X3QpLCAiU2l6ZSBtaXNtYXRjaCIpOworICNlbHNlCisgI2Vycm9yIFBvcnQu CisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODYKK0BAIC0yOTksNiArMzMxLDI2IEBAIHVuaW9uIEZs b2F0Q29udGV4dCB7Cisgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3N0YW5kYXJkX2xheW91dDxGbG9h dENvbnRleHQ+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICJOb3Qgc3RhbmRhcmQgbGF5b3V0Iik7 CisgCisrLy8hIFxicmllZiBUaGUgdmVjdG9yIHJlZ2lzdGVycyB1c2VkIGZvciBhbiBhcmNoaXRl Y3R1cmUgZmFtaWx5CisrdW5pb24gVmVjdG9yQ29udGV4dCB7CisrICBzdHJ1Y3QgdjMyX3Qge30g djMyOworKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIF9fYXR0cmlidXRl X18oKF9fYWxpZ25lZF9fKDE2KSkpIC8vIFZlY3RvciBjb250ZXh0IG11c3QgYmUgZG91Ymxld29y ZCBhbGlnbmVkLgorKyNlbmRpZgorKyAgc3RydWN0IHY2NF90IHsKKysjaWYgZGVmaW5lZChBUkNI X0NQVV9QUEM2NF9GQU1JTFkpCisrICAgIC8vIFJlZmxlY3RzIHZycmVnc2V0X3QgaW4gc3lzL3Vj b250ZXh0LmgKKysgICAgdWludDMyX3QgdnJyZWdzWzMyXVs0XTsKKysgICAgc3RydWN0IHsKKysg ICAgICB1aW50MzJfdCBfX3BhZFszXTsKKysgICAgICB1aW50MzJfdCB2c2NyX3dvcmQ7CisrICAg IH0gdnNjcjsKKysgICAgdWludDMyX3QgdnJzYXZlOworKyAgICB1aW50MzJfdCBfX3BhZFszXTsK KysjZW5kaWYKKysgIH0gdjY0OworK307CisrCisgLy8hIFxicmllZiBBIGNvbGxlY3Rpb24gb2Yg YHB0cmFjZWAtYWJsZSBpbmZvcm1hdGlvbiBhYm91dCBhIHRocmVhZC4KKyBzdHJ1Y3QgVGhyZWFk SW5mbyB7CisgICBUaHJlYWRJbmZvKCk7CitAQCAtMzEwLDYgKzM2Miw5IEBAIHN0cnVjdCBUaHJl YWRJbmZvIHsKKyAgIC8vISBcYnJpZWYgVGhlIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyBmb3Ig dGhlIHRocmVhZC4KKyAgIEZsb2F0Q29udGV4dCBmbG9hdF9jb250ZXh0OworIAorKyAgLy8hIFxi cmllZiAoT3B0aW9uYWwpIFRoZSB2ZWN0b3IgcmVnaXN0ZXJzIHVzZWQgZm9yIHRoZSB0aHJlYWQu CisrICBWZWN0b3JDb250ZXh0IHZlY3Rvcl9jb250ZXh0OworKworICAgLy8hIFxicmllZiBUaGUg dGhyZWFkLWxvY2FsIHN0b3JhZ2UgYWRkcmVzcyBmb3IgdGhlIHRocmVhZC4KKyAgIExpbnV4Vk1B ZGRyZXNzIHRocmVhZF9zcGVjaWZpY19kYXRhX2FkZHJlc3M7CisgfTsKKy0tLSBxdDYtd2ViZW5n aW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHQuaAorKysrIHF0Ni13ZWJlbmdpbmUt Ni40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHQuaAorQEAgLTY5LDYgKzY5LDcgQEAgdXNpbmcgTmF0 aXZlQ1BVQ29udGV4dCA9IHVjb250ZXh0X3Q7CisgLy8hICAgICBtYWNPUy9MaW51eC9GdWNoc2lh IHwgeDg2XzY0ICAgICAgIHwgYCUlcmRpYAorIC8vISAgICAgTGludXggICAgICAgICAgICAgICB8 IEFSTS9BUk02NCAgICB8IGByMGAvYHgwYAorIC8vISAgICAgTGludXggICAgICAgICAgICAgICB8 IE1JUFMvTUlQUzY0ICB8IGAkYTBgCisrLy8hICAgICBMaW51eCAgICAgICAgICAgICAgIHwgUFBD NjQgICAgICAgIHwgYHIzYAorIC8vIQorIC8vISAgICAgQWRkaXRpb25hbGx5LCB0aGUgdmFsdWUg YExSYCBvbiBBUk0vQVJNNjQgd2lsbCBiZSB0aGUgcmV0dXJuIGFkZHJlc3Mgb2YKKyAvLyEgICAg IHRoaXMgZnVuY3Rpb24uCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVy ZV9jb250ZXh0X2xpbnV4LlMKKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9j b250ZXh0X2xpbnV4LlMKK0BAIC0zNCw3ICszNCw3IEBACisgICAuYmFsaWduIDQsIDB4MAorICAg LnR5cGUgQ0FQVFVSRUNPTlRFWFRfU1lNQk9MLCAlZnVuY3Rpb24KKyAgIC50eXBlIENBUFRVUkVD T05URVhUX1NZTUJPTDIsICVmdW5jdGlvbgorLSNlbGlmIGRlZmluZWQoX19taXBzX18pCisrI2Vs aWYgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgLmJhbGln biA0LCAweDAKKyAjZW5kaWYKKyAKK0BAIC00MjcsNCArNDI3LDIxNCBAQCBDQVBUVVJFQ09OVEVY VF9TWU1CT0wyOgorICAganIgJHJhCisgCisgICAuc2V0IGF0CisrI2VsaWYgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQorKyAgLy8gU3RvcmUgcjAtcjMxCisrICBzdGQgMCwgMHhlOCgzKSAgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMF0KKysgIHN0ZCAxLCAweGYwKDMpICAgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxXQorKyAgc3RkIDIsIDB4ZjgoMykgICAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzJdCisrICAvLyBub3RlIHRoYXQgcjMncyBvcmlnaW5h bCB2YWx1ZSB3YXMgbG9zdAorKyAgc3RkIDMsIDB4MTAwKDMpICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5ncF9yZWdzWzNdCisrICBzdGQgNCwgMHgxMDgoMykgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LmdwX3JlZ3NbNF0KKysgIHN0ZCA1LCAweDExMCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1s1XQorKyAgc3RkIDYsIDB4MTE4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5ncF9yZWdzWzZdCisrICBzdGQgNywgMHgxMjAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LmdwX3JlZ3NbN10KKysgIHN0ZCA4LCAweDEyOCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu Z3BfcmVnc1s4XQorKyAgc3RkIDksIDB4MTMwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5n cF9yZWdzWzldCisrICBzdGQgMTAsIDB4MTM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMTBdCisrICBzdGQgMTEsIDB4MTQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMTFdCisrICBzdGQgMTIsIDB4MTQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMTJdCisrICBzdGQgMTMsIDB4MTUwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMTNdCisrICBzdGQgMTQsIDB4MTU4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMTRdCisrICBzdGQgMTUsIDB4MTYwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMTVdCisrICBzdGQgMTYsIDB4MTY4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMTZdCisrICBzdGQgMTcsIDB4MTcwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMTddCisrICBzdGQgMTgsIDB4MTc4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMThdCisrICBzdGQgMTksIDB4MTgwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMTldCisrICBzdGQgMjAsIDB4MTg4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMjBdCisrICBzdGQgMjEsIDB4MTkwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMjFdCisrICBzdGQgMjIsIDB4MTk4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMjJdCisrICBzdGQgMjMsIDB4MWEwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMjNdCisrICBzdGQgMjQsIDB4MWE4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMjRdCisrICBzdGQgMjUsIDB4MWIwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMjVdCisrICBzdGQgMjYsIDB4MWI4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMjZdCisrICBzdGQgMjcsIDB4MWMwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMjddCisrICBzdGQgMjgsIDB4MWM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMjhdCisrICBzdGQgMjksIDB4MWQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMjldCisrICBzdGQgMzAsIDB4MWQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMzBdCisrICBzdGQgMzEsIDB4MWUwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbMzFdCisrCisrICAvLyBGb3IgTklQLCB3ZSBjYW4gdXNlIHRoZSB2YWx1ZSBpbiB0aGUg bGluayByZWdpc3RlcgorKyAgbWZsciAwCisrICBzdGQgMCwgMHgxZTgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdCisrCisrICAvLyBDVFIKKysgIG1mY3RyIDAKKysg IHN0ZCAwLCAweDIwMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NUUl0K KysKKysgIC8vIEZvciBMTkssIHdlJ2xsIHVzZSB0aGUgY2FsbGVyJ3MgTFIgc2F2ZSBhcmVhICgy IHN0YWNrIGZyYW1lcyB1cCkuCisrICAvLyByNCBjYW4gYmUgdXNlZCBhcyBhIHNjcmF0Y2ggcmVn aXN0ZXIgc2luY2UgaXQgaGFzIGFscmVhZHkgYmVlbiBzYXZlZC4KKysgIGxkIDQsIDAoMSkKKysg IGxkIDQsIDE2KDQpCisrICBzdGQgNCwgMHgyMDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu Z3BfcmVnc1tQVF9MTktdCisrCisrICAvLyBYRVIKKysgIG1meGVyIDAKKysgIHN0ZCAwLCAweDIx MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX1hFUl0KKysKKysgIC8vIEND UgorKyAgbWZjciAwCisrICBzdGQgMCwgMHgyMTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu Z3BfcmVnc1tQVF9DQ1JdCisrCisrICAvLyBNU1IsIG9yaWdfcjMsIE1RLCBUUkFQLCBEQVIsIERT SVNSLCBSRVNVTFQsIERTQ1IsCisrICAvLyBub3QgdXNlZCBvciBub3QgcmVsZXZhbnQsICB6ZXJv IHRoZW0gb3V0LgorKyAgbGkgNCwgMAorKyAgc3RkIDQsIDB4MWYwKDMpIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmdwX3JlZ3NbUFRfTVNSXQorKyAgc3RkIDQsIDB4MWY4KDMpIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfT1JJR19SM10KKysgIHN0ZCA0LCAweDIyMCgzKSAvLyBj b250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX01RXQorKyAgc3RkIDQsIDB4MjI4KDMpIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfVFJBUF0KKysgIHN0ZCA0LCAweDIzMCgz KSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0RBUl0KKysgIHN0ZCA0LCAweDIz OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0RTSVNSXQorKyAgc3RkIDQs IDB4MjQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfUkVTVUxUXQorKyAg c3RkIDQsIDB4MjQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfRFNDUl0K KysKKysgIC8vIFVwZGF0ZSBjb250ZXh0LT51Y19tY29udGV4dC5yZWdzIHRvIHBvaW50IHRvIGdw X3JlZ3MKKysgIGFkZGkgMCwgMywgMHhlOAorKyAgc3RkIDAsIDB4ZTAoMykKKysKKysgIC8vIFNh dmUgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIDAtMzEKKysgIHN0ZmQgMCwgMHgyNjgoMykgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMF0KKysgIHN0ZmQgMSwgMHgyNzAoMykgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMV0KKysgIHN0ZmQgMiwgMHgyNzgoMykgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMl0KKysgIHN0ZmQgMywgMHgyODAoMykgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbM10KKysgIHN0ZmQgNCwgMHgyODgoMykgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbNF0KKysgIHN0ZmQgNSwgMHgyOTAoMykgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbNV0KKysgIHN0ZmQgNiwgMHgyOTgoMykgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbNl0KKysgIHN0ZmQgNywgMHgyYTAoMykgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbN10KKysgIHN0ZmQgOCwgMHgyYTgoMykgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbOF0KKysgIHN0ZmQgOSwgMHgyYjAoMykgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbOV0KKysgIHN0ZmQgMTAsIDB4MmI4KDMpIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTBdCisrICBzdGZkIDExLCAweDJjMCgzKSAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzExXQorKyAgc3RmZCAxMiwgMHgyYzgoMykg Ly8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxMl0KKysgIHN0ZmQgMTMsIDB4MmQwKDMp IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTNdCisrICBzdGZkIDE0LCAweDJkOCgz KSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE0XQorKyAgc3RmZCAxNSwgMHgyZTAo MykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxNV0KKysgIHN0ZmQgMTYsIDB4MmU4 KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTZdCisrICBzdGZkIDE3LCAweDJm MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE3XQorKyAgc3RmZCAxOCwgMHgy ZjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxOF0KKysgIHN0ZmQgMTksIDB4 MzAwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTldCisrICBzdGZkIDIwLCAw eDMwOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzIwXQorKyAgc3RmZCAyMSwg MHgzMTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syMV0KKysgIHN0ZmQgMjIs IDB4MzE4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjJdCisrICBzdGZkIDIz LCAweDMyMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzIzXQorKyAgc3RmZCAy NCwgMHgzMjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syNF0KKysgIHN0ZmQg MjUsIDB4MzMwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjVdCisrICBzdGZk IDI2LCAweDMzOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI2XQorKyAgc3Rm ZCAyNywgMHgzNDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syN10KKysgIHN0 ZmQgMjgsIDB4MzQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjhdCisrICBz dGZkIDI5LCAweDM1MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI5XQorKyAg c3RmZCAzMCwgMHgzNTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1szMF0KKysg IHN0ZmQgMzEsIDB4MzYwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMzFdCisr CisrICAvLyBGUFNDUgorKyAgbWZmcyAwCisrICBzdGZkIDAsIDB4MzY4KDMpIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LmZwX3JlZ3NbMzJdCisrCisrICAvLyBTYXZlIFZNWCBWZWN0b3IgcmVnaXN0 ZXJzCisrICAvLyBVcGRhdGUgcjQgdG8gY29udGFpbiB0aGUgYmFzZSBhZGRyZXNzIG9mIHZteF9y ZXNlcnZlCisrICBhZGRpIDQsIDMsIDB4Mzc4CisrICAvLyBFbnN1cmUgdGhhdCBpdCBpcyBxdWFk d29yZCBhbGlnbmVkCisrICBhbmRpLiA1LCA0LCAweEYKKysgIGJlcSAxZiAvLyBObyBhbGlnbm1l bnQgaXMgbmVjZXNzYXJ5CisrICAvLyBBZGRyZXNzIGlzIGRvdWJsZXdvcmQgYWxpZ25lZCBhbmQg bm90IHF1YWR3b3JkIGFsaWduZWQsIGFkZCA4CisrICBhZGRpIDQsIDQsIDgKKysKKysxOgorKyAg Ly8gU3RvcmUgVk1YIHJlZ2lzdGVycyAwLTMxCisrICAvLyByNCB3aWxsIGNvbnRhaW4gdGhlIGJh c2UgYWRkcmVzcworKyAgLy8gcjUgd2lsbCBjb250YWluIHRoZSBpbmRleAorKyAgbGkgNSwgMAor KyAgc3R2eCAwLCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFs aWduKSArIDBdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDEsIDQsIDUgICAvLyBjb250ZXh0 LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMV0KKysgIGFkZGkgNSwgNSwgMTYK KysgIHN0dnggMiwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhh bGlnbikgKyAyXQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAzLCA0LCA1ICAgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDNdCisrICBhZGRpIDUsIDUsIDE2 CisrICBzdHZ4IDQsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVso YWxpZ24pICsgNF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggNSwgNCwgNSAgIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA1XQorKyAgYWRkaSA1LCA1LCAx NgorKyAgc3R2eCA2LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVb KGFsaWduKSArIDZdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDcsIDQsIDUgICAvLyBjb250 ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgN10KKysgIGFkZGkgNSwgNSwg MTYKKysgIHN0dnggOCwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZl WyhhbGlnbikgKyA4XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCA5LCA0LCA1ICAgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDldCisrICBhZGRpIDUsIDUs IDE2CisrICBzdHZ4IDEwLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2 ZVsoYWxpZ24pICsgMTBdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDExLCA0LCA1ICAvLyBj b250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTFdCisrICBhZGRpIDUs IDUsIDE2CisrICBzdHZ4IDEyLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVz ZXJ2ZVsoYWxpZ24pICsgMTJdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDEzLCA0LCA1ICAv LyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTNdCisrICBhZGRp IDUsIDUsIDE2CisrICBzdHZ4IDE0LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhf cmVzZXJ2ZVsoYWxpZ24pICsgMTRdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDE1LCA0LCA1 ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTVdCisrICBh ZGRpIDUsIDUsIDE2CisrICBzdHZ4IDE2LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52 bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTZdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDE3LCA0 LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTddCisr ICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDE4LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMThdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDE5 LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMTld CisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDIwLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjBdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4 IDIxLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsg MjFdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDIyLCA0LCA1ICAvLyBjb250ZXh0LT51Y19t Y29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjJdCisrICBhZGRpIDUsIDUsIDE2CisrICBz dHZ4IDIzLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24p ICsgMjNdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDI0LCA0LCA1ICAvLyBjb250ZXh0LT51 Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjRdCisrICBhZGRpIDUsIDUsIDE2Cisr ICBzdHZ4IDI1LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxp Z24pICsgMjVdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDI2LCA0LCA1ICAvLyBjb250ZXh0 LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjZdCisrICBhZGRpIDUsIDUsIDE2 CisrICBzdHZ4IDI3LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVso YWxpZ24pICsgMjddCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDI4LCA0LCA1ICAvLyBjb250 ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMjhdCisrICBhZGRpIDUsIDUs IDE2CisrICBzdHZ4IDI5LCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2 ZVsoYWxpZ24pICsgMjldCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDMwLCA0LCA1ICAvLyBj b250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMzBdCisrICBhZGRpIDUs IDUsIDE2CisrICBzdHZ4IDMxLCA0LCA1ICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVz ZXJ2ZVsoYWxpZ24pICsgMzFdCisrICBhZGRpIDUsIDUsIDE2CisrCisrICAvLyBWU0NSCisrICBt ZnZzY3IgMAorKyAgc3R2eCAwLCA0LCA1CisrICBhZGRpIDUsIDUsIDE2CisrCisrICAvLyBWUlNB VkUKKysgIG1mdnJzYXZlIDAKKysgIHN0d3ggMCwgNCwgNQorKworKyAgLy8gVXBkYXRlIGNvbnRl eHQtPnVjX21jb250ZXh0LnZfcmVncyB0byBwb2ludCB0byB2bXhfcmVzZXJ2ZSArIGFsaWdubWVu dC4KKysgIHN0ZCA0LCAweDM3MCgzKQorKworKyAgLy8gWmVybyBvdXQgYWxsIHVudXNlZCBmaWVs ZHMKKysgIGxpIDQsIDAKKysgIHN0ZCA0LCAweGM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LnNpZ25hbAorKyAgc3RkIDQsIDB4ZDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuaGFuZGxl cgorKyAgc3RkIDQsIDB4ZDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQub2xkbWFzaworKwor KyAgYmxyCisgI2VuZGlmICAvLyBfX2kzODZfXworLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3Jp Zy9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRp bC9taXNjL2NhcHR1cmVfY29udGV4dF90ZXN0LmNjCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9t aXNjL2NhcHR1cmVfY29udGV4dF90ZXN0LmNjCitAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFRlc3RD YXB0dXJlQ29udGV4dCgpIHsKKyAgIHVpbnRwdHJfdCBwYyA9IFByb2dyYW1Db3VudGVyRnJvbUNv bnRleHQoY29udGV4dF8xKTsKKyAKKyAjaWYgIWRlZmluZWQoQUREUkVTU19TQU5JVElaRVIpICYm ICFkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBcCistICAgICFkZWZpbmVkKE1FTU9S WV9TQU5JVElaRVIpCisrICAgICFkZWZpbmVkKE1FTU9SWV9TQU5JVElaRVIpICYmICFkZWZpbmVk KEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKyAgIC8vIFNhbml0aXplcnMgY2FuIGNhdXNlIGVub3Vn aCBjb2RlIGJsb2F0IHRoYXQgdGhlIOKAnG5lYXJieeKAnSBjaGVjayB3b3VsZAorICAgLy8gbGlr ZWx5IGZhaWwuCisgICBjb25zdCB1aW50cHRyX3Qga1JlZmVyZW5jZVBDID0KKy0tLSBxdDYtd2Vi ZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdF91dGlsX2xpbnV4LmNj CisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF90ZXN0X3V0aWxf bGludXguY2MKK0BAIC0zNSw2ICszNSw4IEBAIHZvaWQgU2FuaXR5Q2hlY2tDb250ZXh0KGNvbnN0 IE5hdGl2ZUNQVUMKKyAgIEVYUEVDVF9FUShjb250ZXh0LnVjX21jb250ZXh0LnJlZ3NbMF0sIEZy b21Qb2ludGVyQ2FzdDx1aW50cHRyX3Q+KCZjb250ZXh0KSk7CisgI2VsaWYgZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkKKyAgIEVYUEVDVF9FUShjb250ZXh0LnVjX21jb250ZXh0LmdyZWdz WzRdLCBGcm9tUG9pbnRlckNhc3Q8dWludHB0cl90PigmY29udGV4dCkpOworKyNlbGlmIGRlZmlu ZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgRVhQRUNUX0VRKGNvbnRleHQudWNfbWNvbnRl eHQuZ3BfcmVnc1szXSwgRnJvbVBvaW50ZXJDYXN0PHVpbnRwdHJfdD4oJmNvbnRleHQpKTsKKyAj ZW5kaWYKKyB9CisgCitAQCAtNDksNiArNTEsOCBAQCB1aW50cHRyX3QgUHJvZ3JhbUNvdW50ZXJG cm9tQ29udGV4dChjb25zCisgICByZXR1cm4gY29udGV4dC51Y19tY29udGV4dC5wYzsKKyAjZWxp ZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorICAgcmV0dXJuIGNvbnRleHQudWNfbWNv bnRleHQucGM7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICByZXR1 cm4gY29udGV4dC51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF07CisgI2VuZGlmCisgfQorIAor QEAgLTYzLDYgKzY3LDggQEAgdWludHB0cl90IFN0YWNrUG9pbnRlckZyb21Db250ZXh0KGNvbnN0 CisgICByZXR1cm4gY29udGV4dC51Y19tY29udGV4dC5zcDsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKQorICAgcmV0dXJuIGNvbnRleHQudWNfbWNvbnRleHQuZ3JlZ3NbMjld OworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgcmV0dXJuIGNvbnRl eHQudWNfbWNvbnRleHQuZ3BfcmVnc1sxXTsKKyAjZW5kaWYKKyB9CisgCistLS0gcXQ2LXdlYmVu Z2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9kYXYxZC9C VUlMRC5nbgorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2RhdjFkL0JVSUxELmduCitAQCAtMjAwLDYgKzIwMCw4IEBAIHN0YXRpY19saWJy YXJ5KCJkYXYxZF84Yml0IikgeworICAgICBzb3VyY2VzICs9IGFybV90ZW1wbGF0ZV9zb3VyY2Vz CisgICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm02NCIpIHsKKyAgICAgc291cmNlcyAr PSBhcm1fdGVtcGxhdGVfc291cmNlcworKyAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBj NjQiKSB7CisrICAgIHNvdXJjZXMgKz0gcHBjNjRfdGVtcGxhdGVfc291cmNlcworICAgfQorIAor ICAgY2ZsYWdzID0gZGF2MWRfY29wdHMKK0BAIC0yMzAsNiArMjMyLDggQEAgc3RhdGljX2xpYnJh cnkoImRhdjFkXzEwYml0IikgeworICAgICBzb3VyY2VzICs9IGFybV90ZW1wbGF0ZV9zb3VyY2Vz CisgICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm02NCIpIHsKKyAgICAgc291cmNlcyAr PSBhcm1fdGVtcGxhdGVfc291cmNlcworKyAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBj NjQiKSB7CisrICAgIHNvdXJjZXMgKz0gcHBjNjRfdGVtcGxhdGVfc291cmNlcworICAgfQorIAor ICAgY2ZsYWdzID0gZGF2MWRfY29wdHMKK0BAIC0yODksNiArMjkzLDIxIEBAIGlmIChjdXJyZW50 X2NwdSA9PSAieDg2IiB8fCBjdXJyZW50X2NwdQorICAgICB9CisgCisgICAgIGNmbGFncyA9IGRh djFkX2NvcHRzCisrICB9CisrfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7Cisr ICBzdGF0aWNfbGlicmFyeSgiZGF2MWRfcHBjIikgeworKyAgICBzb3VyY2VzID0gWworKyAgICAg ICJsaWJkYXYxZC9zcmMvcHBjL2NwdS5jIiwKKysgICAgICAibGliZGF2MWQvc3JjL3BwYy9jcHUu aCIsCisrICAgIF0KKysKKysgICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxl cjpjaHJvbWl1bV9jb2RlIiBdCisrICAgIGNvbmZpZ3MgKz0gWworKyAgICAgICIvL2J1aWxkL2Nv bmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKysgICAgICAiOmRhdjFkX2NvbmZpZyIs CisrICAgIF0KKysKKysgICAgY2ZsYWdzID0gZGF2MWRfY29wdHMKKyAKKyAgICAgZGVwcyA9IFsg IjpkYXYxZF9oZWFkZXJzIiBdCisgICAgIGFsbG93X2NpcmN1bGFyX2luY2x1ZGVzX2Zyb20gPSBb ICI6ZGF2MWRfaGVhZGVycyIgXQorQEAgLTMyMSw1ICszNDAsNyBAQCBzdGF0aWNfbGlicmFyeSgi ZGF2MWQiKSB7CisgICAgIH0KKyAgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gImFybSIgfHwg Y3VycmVudF9jcHUgPT0gImFybTY0IikgeworICAgICBkZXBzICs9IFsgIjpkYXYxZF9hcm0iIF0K KysgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0IikgeworKyAgICBkZXBzICs9IFsg IjpkYXYxZF9wcGMiIF0KKyAgIH0KKyB9CistLS0gL2Rldi9udWxsCisrKysgcXQ2LXdlYmVuZ2lu ZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvZGF2MWQvY29uZmlnL2xp bnV4L3BwYzY0L2NvbmZpZy5oCitAQCAtMCwwICsxLDM5IEBACisrLyoKKysgKiBBdXRvZ2VuZXJh dGVkIGJ5IHRoZSBNZXNvbiBidWlsZCBzeXN0ZW0uCisrICogRG8gbm90IGVkaXQsIHlvdXIgY2hh bmdlcyB3aWxsIGJlIGxvc3QuCisrICovCisrCisrI3ByYWdtYSBvbmNlCisrCisrI2RlZmluZSBB UkNIX0FBUkNINjQgMAorKworKyNkZWZpbmUgQVJDSF9BUk0gMAorKworKyNkZWZpbmUgQVJDSF9Q UEM2NExFIDEKKysKKysjZGVmaW5lIEFSQ0hfWDg2IDAKKysKKysjZGVmaW5lIEFSQ0hfWDg2XzMy IDAKKysKKysjZGVmaW5lIEFSQ0hfWDg2XzY0IDAKKysKKysjZGVmaW5lIENPTkZJR18xNkJQQyAx CisrCisrI2RlZmluZSBDT05GSUdfOEJQQyAxCisrCisrLy8gI2RlZmluZSBDT05GSUdfTE9HIDEg LS0gTG9nZ2luZyBpcyBjb250cm9sbGVkIGJ5IENocm9taXVtCisrCisrI2RlZmluZSBFTkRJQU5O RVNTX0JJRyAwCisrCisrI2RlZmluZSBIQVZFX0FTTSAxCisrCisrI2RlZmluZSBIQVZFX0NMT0NL X0dFVFRJTUUgMQorKworKyNkZWZpbmUgSEFWRV9ETFNZTSAxCisrCisrI2RlZmluZSBIQVZFX0dF VEFVWFZBTCAxCisrCisrI2RlZmluZSBIQVZFX1BPU0lYX01FTUFMSUdOIDEKKysKKysjZGVmaW5l IEhBVkVfVU5JU1REX0ggMQorKworLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvZGF2MWQvZGF2MWRfZ2VuZXJhdGVkLmduaQorKysr IHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Rh djFkL2RhdjFkX2dlbmVyYXRlZC5nbmkKK0BAIC0xMDksNiArMTA5LDExIEBAIGFybV90ZW1wbGF0 ZV9zb3VyY2VzID0gWworICAgImxpYmRhdjFkL3NyYy9hcm0vbWNfaW5pdF90bXBsLmMiLAorIF0K KyAKKytwcGM2NF90ZW1wbGF0ZV9zb3VyY2VzID0gWworKyAgImxpYmRhdjFkL3NyYy9wcGMvY2Rl Zl9pbml0X3RtcGwuYyIsCisrICAibGliZGF2MWQvc3JjL3BwYy9sb29wcmVzdG9yYXRpb25faW5p dF90bXBsLmMiLAorK10KKysKKyB0ZW1wbGF0ZV9zb3VyY2VzID0gWworICAgImxpYmRhdjFkL3Ny Yy9jZGVmX2FwcGx5X3RtcGwuYyIsCisgICAibGliZGF2MWQvc3JjL2NkZWZfdG1wbC5jIiwKKy0t LSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2RhdjFkL2dlbmVyYXRlX3NvdXJjZS5weQorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2RhdjFkL2dlbmVyYXRlX3NvdXJjZS5weQor QEAgLTYxLDYgKzYxLDggQEAgZGVmIF9Xcml0ZUduKGZkKToKKyAgICAgICAgIF9HbG9iKCJsaWJk YXYxZC9zcmMvYXJtLzY0LypfdG1wbC5TIikgKyBbImxpYmRhdjFkL3NyYy9hcm0vNjQvdXRpbC5T Il0pCisgICAgIF9Xcml0ZUFycmF5KGZkLCAiYXJtX3RlbXBsYXRlX3NvdXJjZXMiLCBfR2xvYigi bGliZGF2MWQvc3JjL2FybS8qX3RtcGwuYyIpKQorIAorKyAgICBfV3JpdGVBcnJheShmZCwgInBw YzY0X3RlbXBsYXRlX3NvdXJjZXMiLCBfR2xvYigibGliZGF2MWQvc3JjL3BwYy8qX3RtcGwuYyIp KQorKworICAgICB0ZW1wbGF0ZV9zb3VyY2VzID0gX0dsb2IoImxpYmRhdjFkL3NyYy8qX3RtcGwu YyIpCisgICAgIF9Xcml0ZUFycmF5KGZkLCAidGVtcGxhdGVfc291cmNlcyIsIHRlbXBsYXRlX3Nv dXJjZXMpCisgCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9kYXYxZC9saWJkYXYxZC9zcmMvcHBjL2RhdjFkX3R5cGVzLmgKKysr KyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9k YXYxZC9saWJkYXYxZC9zcmMvcHBjL2RhdjFkX3R5cGVzLmgKK0BAIC01MSw0ICs1MSwxOSBAQAor ICNkZWZpbmUgdTE2bF90b19pMzIodikgKChpMzJ4NCkgdmVjX21lcmdlbCgodTE2eDgpIHYsIHZl Y19zcGxhdF91MTYoMCkpKQorICNkZWZpbmUgaTE2bF90b19pMzIodikgKChpMzJ4NCkgdmVjX3Vu cGFja2woKGkxNng4KXYpKQorIAorKyNpZiBkZWZpbmVkKF9fY2xhbmdfXykKKysjdW5kZWYgdmVj X3NwbGF0cworKyNkZWZpbmUgdmVjX3NwbGF0cyhOKSAgICAgICAgICAgICAgICAgICAgIFwKKysg ICAgX0dlbmVyaWMoKE4pLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICB1bnNp Z25lZCBjaGFyOiAgICAgICgodTh4MTYpKE4pKSwgXAorKyAgICAgICAgc2lnbmVkIGNoYXI6ICAg ICAgICAoKGk4eDE2KShOKSksIFwKKysgICAgICAgIHVuc2lnbmVkIHNob3J0OiAgICAgKCh1MTZ4 OCkoTikpLCBcCisrICAgICAgICBzaWduZWQgc2hvcnQ6ICAgICAgICgoaTE2eDgpKE4pKSwgXAor KyAgICAgICAgdW5zaWduZWQgaW50OiAgICAgICAoKHUzMng0KShOKSksIFwKKysgICAgICAgIHNp Z25lZCBpbnQ6ICAgICAgICAgKChpMzJ4NCkoTikpLCBcCisrICAgICAgICB1bnNpZ25lZCBsb25n IGxvbmc6ICgodTY0eDIpKE4pKSwgXAorKyAgICAgICAgc2lnbmVkIGxvbmcgbG9uZzogICAoKGk2 NHgyKShOKSkgIFwKKysgICAgKQorKyNlbmRpZgorKworICNlbmRpZiAvKiBEQVYxRF9TUkNfUFBD X1RZUEVTX0ggKi8KKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2VpZ2VuMy9CVUlMRC5nbgorKysrIHF0Ni13ZWJlbmdpbmUtNi40 LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2VpZ2VuMy9CVUlMRC5nbgorQEAg LTIzLDQgKzIzLDggQEAgY29uZmlnKCJlaWdlbl9pbmNsdWRlcyIpIHsKKyAgICAgIyBmb3IgdGhp cyBjb21wb25lbnQgb24gV2luZG93cyBvbiBBcm0gZHVlIHRvIGNvbXBpbGF0aW9uIGVycm9ycy4K KyAgICAgZGVmaW5lcyArPSBbICJFSUdFTl9ET05UX1ZFQ1RPUklaRSIgXQorICAgfQorKworKyAg aWYgKHRhcmdldF9jcHUgPT0gInBwYzY0IikgeworKyAgICBkZWZpbmVzICs9IFsgIkVJR0VOX0RP TlRfVkVDVE9SSVpFIiBdCisrICB9CisgfQorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbGliYW9tL0JVSUxELmduCisrKysgcXQ2 LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbGliYW9t L0JVSUxELmduCitAQCAtMzYsNiArMzYsOCBAQCBpZiAoY3VycmVudF9jcHUgPT0gIng4NiIpIHsK KyAgIH0gZWxzZSB7CisgICAgIGNwdV9hcmNoX2Z1bGwgPSAiYXJtIgorICAgfQorK30gZWxzZSBp ZiAoY3VycmVudF9jcHUgPT0gInBwYzY0IikgeworKyAgY3B1X2FyY2hfZnVsbCA9ICJnZW5lcmlj IgorIH0gZWxzZSB7CisgICBjcHVfYXJjaF9mdWxsID0gY3VycmVudF9jcHUKKyB9CistLS0gcXQ2 LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9s aWJnYXYxL29wdGlvbnMuZ25pCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvbGliZ2F2MS9vcHRpb25zLmduaQorQEAgLTEyLDUgKzEyLDUg QEAgZGVjbGFyZV9hcmdzKCkgeworICAgICAgIGlzX2Nocm9tZW9zX2FzaCAmJiAodGFyZ2V0X2Nw dSA9PSAiYXJtIiB8fCB0YXJnZXRfY3B1ID09ICJhcm02NCIpCisgICB1c2VfbGliZ2F2MV9wYXJz ZXIgPQorICAgICAgIChpc19jaHJvbWVvcyB8fCBpc19saW51eCB8fCBpc193aW4pICYmCistICAg ICAgKHRhcmdldF9jcHUgPT0gIng4NiIgfHwgdGFyZ2V0X2NwdSA9PSAieDY0IiB8fCB0YXJnZXRf Y3B1ID09ICJhcm02NCIpCisrICAgICAgKHRhcmdldF9jcHUgPT0gIng4NiIgfHwgdGFyZ2V0X2Nw dSA9PSAieDY0IiB8fCB0YXJnZXRfY3B1ID09ICJhcm02NCIgfHwgdGFyZ2V0X2NwdSA9PSAicHBj NjQiKQorIH0KKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAorKysrIHF0Ni13ZWJl bmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xzcy9saW51eF9z eXNjYWxsX3N1cHBvcnQuaAorQEAgLTQyNTAsNyArNDI1MCw3IEBAIHN0cnVjdCBrZXJuZWxfc3Rh dGZzIHsKKyAgICAgICBMU1NfUkVHKDIsIGJ1Zik7CisgICAgICAgTFNTX0JPRFkodm9pZCosIG1t YXAyLCAiMCIoX19yMikpOworICAgICB9CistI2Vsc2UKKysjZWxpZiAhZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKSAvKiBwcGM2NCBkb2Vzbid0IGhhdmUgbW1hcDIgKi8KKyAgICAgI2RlZmluZSBfX05S X19tbWFwMiBfX05SX21tYXAyCisgICAgIExTU19JTkxJTkUgX3N5c2NhbGw2KHZvaWQqLCBfbW1h cDIsICAgICAgICAgICAgdm9pZCosIHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf dCwgICAgICAgICAgICAgICAgICAgbCwgaW50LCAgICAgICAgICAgICAgIHAsCitAQCAtNDM2MSw3 ICs0MzYxLDcgQEAgc3RydWN0IGtlcm5lbF9zdGF0ZnMgeworICAgI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgICBkZWZpbmVkKF9fQVJNX0FSQ0hfM19fKSB8fCBkZWZpbmVkKF9fQVJNX0VBQklf XykgfHwgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAoZGVmaW5lZChfX21pcHNfXykgJiYg X01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkkzMikgfHwgICAgICAgICAgICAgICAgICAgXAorLSAg ICAgIGRlZmluZWQoX19QUENfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKysgICAgIChkZWZpbmVkKF9fUFBDX18pICYmICFkZWZpbmVk KF9fcG93ZXJwYzY0X18pKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAgKGRlZmluZWQoX19zMzkwX18pICYmICFkZWZpbmVkKF9f czM5MHhfXykpCisgICAgIC8qIE9uIHRoZXNlIGFyY2hpdGVjdHVyZXMsIGltcGxlbWVudCBtbWFw KCkgd2l0aCBtbWFwMigpLiAqLworICAgICBMU1NfSU5MSU5FIHZvaWQqIExTU19OQU1FKG1tYXAp KHZvaWQgKnMsIHNpemVfdCBsLCBpbnQgcCwgaW50IGYsIGludCBkLAorLS0tIHF0Ni13ZWJlbmdp bmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3Ro aXJkX3BhcnR5L2xpYnBuZzE2L3BuZ3ByaXYuaAorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9wYXJ0eS9saWJwbmcx Ni9wbmdwcml2LmgKK0BAIC0xOTYsMTEgKzE5Niw3IEBACisgI2VuZGlmCisgCisgI2lmbmRlZiBQ TkdfUE9XRVJQQ19WU1hfT1BUCistIyAgaWYgZGVmaW5lZChfX1BQQzY0X18pICYmIGRlZmluZWQo X19BTFRJVkVDX18pICYmIGRlZmluZWQoX19WU1hfXykKKy0jICAgICBkZWZpbmUgUE5HX1BPV0VS UENfVlNYX09QVCAyCistIyAgZWxzZQorLSMgICAgIGRlZmluZSBQTkdfUE9XRVJQQ19WU1hfT1BU IDAKKy0jICBlbmRpZgorKyMgIGRlZmluZSBQTkdfUE9XRVJQQ19WU1hfT1BUIDAKKyAjZW5kaWYK KyAKKyAjaWZuZGVmIFBOR19JTlRFTF9TU0VfT1BUCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5v cmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZmZmdC9zcmMvcGZmZnQuYwor KysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L3BmZmZ0L3NyYy9wZmZmdC5jCitAQCAtMTAwLDYgKzEwMCw3IEBACisgICAgQWx0aXZlYyBzdXBw b3J0IG1hY3JvcyAKKyAqLworICNpZiAhZGVmaW5lZChQRkZGVF9TSU1EX0RJU0FCTEUpICYmIChk ZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSkKKysjaW5jbHVkZSA8YWx0aXZl Yy5oPgorIHR5cGVkZWYgdmVjdG9yIGZsb2F0IHY0c2Y7CisgIyAgZGVmaW5lIFNJTURfU1ogNAor ICMgIGRlZmluZSBWWkVSTygpICgodmVjdG9yIGZsb2F0KSB2ZWNfc3BsYXRfdTgoMCkpCistLS0g cXQ2LXdlYmVuZ2luZS02LjQuMi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9za2lhL3NyYy9za3NsL1NrU0xTdHJpbmcuY3BwCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvc2tzbC9Ta1NMU3RyaW5n LmNwcAorQEAgLTM3LDcgKzM3LDEyIEBAIHN0ZDo6c3RyaW5nIHNrc3RkOjp0b19zdHJpbmcoZG91 YmxlIHZhbHUKKyAgICAgaWYgKG5lZWRzRG90WmVybykgeworICAgICAgICAgYnVmZmVyIDw8ICIu MCI7CisgICAgIH0KKy0gICAgcmV0dXJuIGJ1ZmZlci5zdHIoKTsKKysKKysgICAgc3RkOjpzdHJp bmcgcmV0KGJ1ZmZlci5zdHIoKSk7CisrICAgIGlmIChzdGQ6OnNpZ25iaXQodmFsdWUpICYmIHJl dFswXSA9PSAnLicpIHsKKysgICAgICAgIHJldFswXSA9ICctJzsKKysgICAgfQorKyAgICByZXR1 cm4gcmV0OworIH0KKyAKKyBib29sIFNrU0w6OnN0b2Qoc3RkOjpzdHJpbmdfdmlldyBzLCBTS1NM X0ZMT0FUKiB2YWx1ZSkgeworLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9hbWFsZ2FtYXRpb24vc3FsaXRlMy5j CisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvc3FsaXRlL3NyYy9hbWFsZ2FtYXRpb24vc3FsaXRlMy5jCitAQCAtMTQzMzksNyArMTQzMzks OCBAQCB0eXBlZGVmIElOVDE2X1RZUEUgTG9nRXN0OworICMgaWYgZGVmaW5lZChpMzg2KSAgICAg IHx8IGRlZmluZWQoX19pMzg2X18pICAgICAgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCAgICBcCisg ICAgICBkZWZpbmVkKF9feDg2XzY0KSAgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSAgICB8fCBkZWZp bmVkKF9NX1g2NCkgIHx8ICAgIFwKKyAgICAgIGRlZmluZWQoX01fQU1ENjQpICB8fCBkZWZpbmVk KF9NX0FSTSkgICAgICAgIHx8IGRlZmluZWQoX194ODYpICAgfHwgICAgXAorLSAgICAgZGVmaW5l ZChfX0FSTUVMX18pIHx8IGRlZmluZWQoX19BQVJDSDY0RUxfXykgfHwgZGVmaW5lZChfTV9BUk02 NCkKKysgICAgIGRlZmluZWQoX19BUk1FTF9fKSB8fCBkZWZpbmVkKF9fQUFSQ0g2NEVMX18pIHx8 IGRlZmluZWQoX01fQVJNNjQpIHx8ICAgXAorKyAgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAm JiAoX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18pCisgIyAgIGRlZmlu ZSBTUUxJVEVfQllURU9SREVSICAgIDEyMzQKKyAjIGVsaWYgZGVmaW5lZChzcGFyYykgICAgIHx8 IGRlZmluZWQoX19wcGNfXykgfHwgXAorICAgICAgICBkZWZpbmVkKF9fQVJNRUJfXykgfHwgZGVm aW5lZChfX0FBUkNINjRFQl9fKQorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9hbWFsZ2FtYXRpb25fZGV2L3Nx bGl0ZTMuYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L3NxbGl0ZS9zcmMvYW1hbGdhbWF0aW9uX2Rldi9zcWxpdGUzLmMKK0BAIC0xNDM1 Miw3ICsxNDM1Miw4IEBAIHR5cGVkZWYgSU5UMTZfVFlQRSBMb2dFc3Q7CisgIyBpZiBkZWZpbmVk KGkzODYpICAgICAgfHwgZGVmaW5lZChfX2kzODZfXykgICAgICB8fCBkZWZpbmVkKF9NX0lYODYp IHx8ICAgIFwKKyAgICAgIGRlZmluZWQoX194ODZfNjQpICB8fCBkZWZpbmVkKF9feDg2XzY0X18p ICAgIHx8IGRlZmluZWQoX01fWDY0KSAgfHwgICAgXAorICAgICAgZGVmaW5lZChfTV9BTUQ2NCkg IHx8IGRlZmluZWQoX01fQVJNKSAgICAgICAgfHwgZGVmaW5lZChfX3g4NikgICB8fCAgICBcCist ICAgICBkZWZpbmVkKF9fQVJNRUxfXykgfHwgZGVmaW5lZChfX0FBUkNINjRFTF9fKSB8fCBkZWZp bmVkKF9NX0FSTTY0KQorKyAgICAgZGVmaW5lZChfX0FSTUVMX18pIHx8IGRlZmluZWQoX19BQVJD SDY0RUxfXykgfHwgZGVmaW5lZChfTV9BUk02NCkgfHwgICBcCisrICAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pICYmIChfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXykK KyAjICAgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgMTIzNAorICMgZWxpZiBkZWZpbmVkKHNw YXJjKSAgICAgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBcCisgICAgICAgIGRlZmluZWQoX19BUk1F Ql9fKSB8fCBkZWZpbmVkKF9fQUFSQ0g2NEVCX18pCistLS0gcXQ2LXdlYmVuZ2luZS02LjQuMi5v cmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL2V4dC9ydHJl ZS9ydHJlZS5jCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvc3FsaXRlL3NyYy9leHQvcnRyZWUvcnRyZWUuYworQEAgLTQ3NCw3ICs0NzQs NyBAQCBzdHJ1Y3QgUnRyZWVNYXRjaEFyZyB7CisgI2lmIGRlZmluZWQoaTM4NikgICAgIHx8IGRl ZmluZWQoX19pMzg2X18pICAgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCAgICBcCisgICAgIGRlZmlu ZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQpICB8 fCAgICBcCisgICAgIGRlZmluZWQoX01fQU1ENjQpIHx8IGRlZmluZWQoX01fQVJNKSAgICAgfHwg ZGVmaW5lZChfX3g4NikgICB8fCAgICBcCistICAgIGRlZmluZWQoX19hcm1fXykKKysgICAgZGVm aW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmIChfX0JZVEVfT1JERVJf XyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXykKKyAjIGRlZmluZSBTUUxJVEVfQllURU9SREVS ICAgIDEyMzQKKyAjZWxpZiBkZWZpbmVkKHNwYXJjKSAgICB8fCBkZWZpbmVkKF9fcHBjX18pCisg IyBkZWZpbmUgU1FMSVRFX0JZVEVPUkRFUiAgICA0MzIxCistLS0gcXQ2LXdlYmVuZ2luZS02LjQu Mi5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL3NyYy9z cWxpdGVJbnQuaAorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvc3JjL3NxbGl0ZUludC5oCitAQCAtOTA0LDcgKzkwNCw4 IEBAIHR5cGVkZWYgSU5UMTZfVFlQRSBMb2dFc3Q7CisgIyBpZiBkZWZpbmVkKGkzODYpICAgICAg fHwgZGVmaW5lZChfX2kzODZfXykgICAgICB8fCBkZWZpbmVkKF9NX0lYODYpIHx8ICAgIFwKKyAg ICAgIGRlZmluZWQoX194ODZfNjQpICB8fCBkZWZpbmVkKF9feDg2XzY0X18pICAgIHx8IGRlZmlu ZWQoX01fWDY0KSAgfHwgICAgXAorICAgICAgZGVmaW5lZChfTV9BTUQ2NCkgIHx8IGRlZmluZWQo X01fQVJNKSAgICAgICAgfHwgZGVmaW5lZChfX3g4NikgICB8fCAgICBcCistICAgICBkZWZpbmVk KF9fQVJNRUxfXykgfHwgZGVmaW5lZChfX0FBUkNINjRFTF9fKSB8fCBkZWZpbmVkKF9NX0FSTTY0 KQorKyAgICAgZGVmaW5lZChfX0FSTUVMX18pIHx8IGRlZmluZWQoX19BQVJDSDY0RUxfXykgfHwg ZGVmaW5lZChfTV9BUk02NCkgfHwgXAorKyAgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiAo X19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18pCisgIyAgIGRlZmluZSBT UUxJVEVfQllURU9SREVSICAgIDEyMzQKKyAjIGVsaWYgZGVmaW5lZChzcGFyYykgICAgIHx8IGRl ZmluZWQoX19wcGNfXykgfHwgXAorICAgICAgICBkZWZpbmVkKF9fQVJNRUJfXykgfHwgZGVmaW5l ZChfX0FBUkNINjRFQl9fKQorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rp ZmZlcl9ibG9jay5jYworKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kaWZmZXJfYmxv Y2suY2MKK0BAIC0zMCwxMSArMzAsNyBAQCBib29sIFZlY3RvckRpZmZlcmVuY2UoY29uc3QgdWlu dDhfdCogaW1hCisgICBzdGF0aWMgYm9vbCAoKmRpZmZfcHJvYykoY29uc3QgdWludDhfdCosIGNv bnN0IHVpbnQ4X3QqKSA9IG51bGxwdHI7CisgCisgICBpZiAoIWRpZmZfcHJvYykgeworLSNpZiBk ZWZpbmVkKFdFQlJUQ19BUkNIX0FSTV9GQU1JTFkpIHx8IGRlZmluZWQoV0VCUlRDX0FSQ0hfTUlQ U19GQU1JTFkpCistICAgIC8vIEZvciBBUk0gYW5kIE1JUFMgcHJvY2Vzc29ycywgYWx3YXlzIHVz ZSBDIHZlcnNpb24uCistICAgIC8vIFRPRE8oaGNsYW0pOiBJbXBsZW1lbnQgYSBORU9OIHZlcnNp b24uCistICAgIGRpZmZfcHJvYyA9ICZWZWN0b3JEaWZmZXJlbmNlX0M7CistI2Vsc2UKKysjaWYg ZGVmaW5lZChXRUJSVENfQVJDSF9YODZfRkFNSUxZKQorICAgICBib29sIGhhdmVfc3NlMiA9IEdl dENQVUluZm8oa1NTRTIpICE9IDA7CisgICAgIC8vIEZvciB4ODYgcHJvY2Vzc29ycywgY2hlY2sg aWYgU1NFMiBpcyBzdXBwb3J0ZWQuCisgICAgIGlmIChoYXZlX3NzZTIgJiYga0Jsb2NrU2l6ZSA9 PSAzMikgeworQEAgLTQ0LDYgKzQwLDEwIEBAIGJvb2wgVmVjdG9yRGlmZmVyZW5jZShjb25zdCB1 aW50OF90KiBpbWEKKyAgICAgfSBlbHNlIHsKKyAgICAgICBkaWZmX3Byb2MgPSAmVmVjdG9yRGlm ZmVyZW5jZV9DOworICAgICB9CisrI2Vsc2UKKysgICAgLy8gRm9yIG90aGVyIHByb2Nlc3NvcnMs IGFsd2F5cyB1c2UgQyB2ZXJzaW9uLgorKyAgICAvLyBUT0RPKGhjbGFtKTogSW1wbGVtZW50IGEg TkVPTiB2ZXJzaW9uLgorKyAgICBkaWZmX3Byb2MgPSAmVmVjdG9yRGlmZmVyZW5jZV9DOworICNl bmRpZgorICAgfQorIAorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9hcmNoLmgKKysrKyBx dDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJy dGMvcnRjX2Jhc2Uvc3lzdGVtL2FyY2guaAorQEAgLTc5LDYgKzc5LDE4IEBACisgI2VsaWYgZGVm aW5lZChfX0VNU0NSSVBURU5fXykKKyAjZGVmaW5lIFdFQlJUQ19BUkNIXzMyX0JJVFMKKyAjZGVm aW5lIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KKysjZWxpZiBkZWZpbmVkKF9fUFBDX18pCisr I2RlZmluZSBXRUJSVENfQVJDSF9QUENfRkFNSUxZCisrI2lmIF9fQllURV9PUkRFUl9fID09IF9f T1JERVJfTElUVExFX0VORElBTl9fCisrI2RlZmluZSBXRUJSVENfQVJDSF9MSVRUTEVfRU5ESUFO CisrI2Vsc2UKKysjZGVmaW5lIFdFQlJUQ19BUkNIX0JJR19FTkRJQU4KKysjZW5kaWYKKysjaWYg ZGVmaW5lZChfX0xQNjRfXykKKysjZGVmaW5lIFdFQlJUQ19BUkNIXzY0X0JJVFMKKysjZWxzZQor KyNkZWZpbmUgV0VCUlRDX0FSQ0hfMzJfQklUUworKyNlbmRpZgorICNlbHNlCisgI2Vycm9yIFBs ZWFzZSBhZGQgc3VwcG9ydCBmb3IgeW91ciBhcmNoaXRlY3R1cmUgaW4gcnRjX2Jhc2Uvc3lzdGVt L2FyY2guaAorICNlbmRpZgorLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdjgvQlVJTEQuZ24KKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS92OC9CVUlMRC5nbgorQEAgLTExNTgsNiArMTE1OCwxMiBAQCBjb25maWco InRvb2xjaGFpbiIpIHsKKyAgICAgfQorICAgICBpZiAoaG9zdF9ieXRlb3JkZXIgPT0gImxpdHRs ZSIpIHsKKyAgICAgICBkZWZpbmVzICs9IFsgIlY4X1RBUkdFVF9BUkNIX1BQQ19MRSIgXQorKyAg ICAgIGNmbGFncyArPSBbCisrICAgICAgICAjIEVuYWJsZSB1c2FnZSBvZiBBbHRpVmVjLCBWU1gs IGFuZCBvdGhlciBQT1dFUjggYW5kIGhpZ2hlciBmZWF0dXJlcworKyAgICAgICAgIi1tY3B1PXBv d2VyOCIsCisrICAgICAgICAiLW1hbHRpdmVjIiwKKysgICAgICAgICItbXZzeCIsCisrICAgICAg XQorICAgICB9IGVsc2UgaWYgKGhvc3RfYnl0ZW9yZGVyID09ICJiaWciKSB7CisgICAgICAgZGVm aW5lcyArPSBbICJWOF9UQVJHRVRfQVJDSF9QUENfQkUiIF0KKyAgICAgICBpZiAoY3VycmVudF9v cyA9PSAiYWl4IikgeworLS0tIHF0Ni13ZWJlbmdpbmUtNi40LjIub3JpZy9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdWkvZ2wvZmVhdHVyZXMuZ25pCisrKysgcXQ2LXdlYmVuZ2luZS02LjQuMi9zcmMv M3JkcGFydHkvY2hyb21pdW0vdWkvZ2wvZmVhdHVyZXMuZ25pCitAQCAtMzEsNSArMzEsNiBAQCBk ZWNsYXJlX2FyZ3MoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgKGlzX21hYyAmJiB1c2Vf ZWdsKSB8fCBpc19jaHJvbWVvc19hc2ggfHwgaXNfZnVjaHNpYSkgJiYKKyAgICAgICAgICAgICAg ICAgICAgICAgICh0YXJnZXRfY3B1ID09ICJ4ODYiIHx8IHRhcmdldF9jcHUgPT0gIng2NCIgfHwK KyAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfY3B1ID09ICJhcm0iIHx8IHRhcmdldF9j cHUgPT0gImFybTY0IiB8fAorLSAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9jcHUgPT0g Im1pcHNlbCIgfHwgdGFyZ2V0X2NwdSA9PSAibWlwczY0ZWwiKQorKyAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF9jcHUgPT0gIm1pcHNlbCIgfHwgdGFyZ2V0X2NwdSA9PSAibWlwczY0ZWwi IHx8CisrICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2NwdSA9PSAicHBjNjQiKQorIH0K Ky0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3Rl c3QvQlVJTEQuZ24KKysrKyBxdDYtd2ViZW5naW5lLTYuNC4yL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS92OC90ZXN0L0JVSUxELmduCitAQCAtNDIsNyArNDIsNyBAQCBncm91cCgiZ25fYWxsIikgewor ICAgICAgICJiZW5jaG1hcmtzL2NwcDpnbl9hbGwiLAorICAgICAgICJjY3Rlc3Q6Y2N0ZXN0IiwK KyAgICAgICAiY2N0ZXN0OmdlbmVyYXRlLWJ5dGVjb2RlLWV4cGVjdGF0aW9ucyIsCistICAgICAg InVuaXR0ZXN0czp1bml0dGVzdHMiLAorKyAgICAgICMidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCisg ICAgIF0KKyAgIH0KKyB9CitAQCAtODQsNyArODQsNyBAQCBncm91cCgidjhfYm90X2RlZmF1bHQi KSB7CisgICAgICJtZXNzYWdlOnY4X21lc3NhZ2UiLAorICAgICAibWpzdW5pdDp2OF9tanN1bml0 IiwKKyAgICAgIm1rZ3Jva2R1bXA6bWtncm9rZHVtcCIsCistICAgICJ1bml0dGVzdHM6dW5pdHRl c3RzIiwKKysgICAgIyJ1bml0dGVzdHM6dW5pdHRlc3RzIiwKKyAgICAgIndlYmtpdDp2OF93ZWJr aXQiLAorICAgXQorIAorQEAgLTEwOSw3ICsxMDksNyBAQCBncm91cCgidjhfZGVmYXVsdCIpIHsK KyAgICAgIm1lc3NhZ2U6djhfbWVzc2FnZSIsCisgICAgICJtanN1bml0OnY4X21qc3VuaXQiLAor ICAgICAibWtncm9rZHVtcDpta2dyb2tkdW1wIiwKKy0gICAgInVuaXR0ZXN0czp1bml0dGVzdHMi LAorKyAgICAjInVuaXR0ZXN0czp1bml0dGVzdHMiLAorICAgXQorIAorICAgaWYgKHY4X2VuYWJs ZV93ZWJhc3NlbWJseSkgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3BhdGNo ZXMveHh4LXBwYzY0bGUtc3dpZnRzaGFkZXIucGF0Y2ggYi9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUv cGF0Y2hlcy94eHgtcHBjNjRsZS1zd2lmdHNoYWRlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLmI4Y2RjNWYwYWNmMAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvcXQ2LXdlYmVuZ2luZS9wYXRjaGVzL3h4eC1wcGM2NGxlLXN3aWZ0c2hhZGVyLnBhdGNo CkBAIC0wLDAgKzEsMTggQEAKKy0tLSBxdDYtd2ViZW5naW5lLTYuNC4yLm9yaWcvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3N3aWZ0c2hhZGVyL3RoaXJkX3BhcnR5L2xsdm0tMTAu MC9CVUlMRC5nbgorKysrIHF0Ni13ZWJlbmdpbmUtNi40LjIvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L3N3aWZ0c2hhZGVyL3RoaXJkX3BhcnR5L2xsdm0tMTAuMC9CVUlMRC5nbgor QEAgLTU4Myw2ICs1ODMsNyBAQCBzd2lmdHNoYWRlcl9sbHZtX3NvdXJjZV9zZXQoInN3aWZ0c2hh ZGVyCisgICAgICJsbHZtL2xpYi9NQy9NQ0FzbUluZm9DT0ZGLmNwcCIsCisgICAgICJsbHZtL2xp Yi9NQy9NQ0FzbUluZm9EYXJ3aW4uY3BwIiwKKyAgICAgImxsdm0vbGliL01DL01DQXNtSW5mb0VM Ri5jcHAiLAorKyAgICAibGx2bS9saWIvTUMvTUNBc21JbmZvWENPRkYuY3BwIiwKKyAgICAgImxs dm0vbGliL01DL01DQXNtTWFjcm8uY3BwIiwKKyAgICAgImxsdm0vbGliL01DL01DQXNtU3RyZWFt ZXIuY3BwIiwKKyAgICAgImxsdm0vbGliL01DL01DQXNzZW1ibGVyLmNwcCIsCitAQCAtNjM4LDYg KzYzOSw3IEBAIHN3aWZ0c2hhZGVyX2xsdm1fc291cmNlX3NldCgic3dpZnRzaGFkZXIKKyAgICAg Imxsdm0vbGliL01DL01DV2luQ09GRlN0cmVhbWVyLmNwcCIsCisgICAgICJsbHZtL2xpYi9NQy9N Q1dpbkVILmNwcCIsCisgICAgICJsbHZtL2xpYi9NQy9NQ1hDT0ZGU3RyZWFtZXIuY3BwIiwKKysg ICAgImxsdm0vbGliL01DL01DWENPRkZPYmplY3RUYXJnZXRXcml0ZXIuY3BwIiwKKyAgICAgImxs dm0vbGliL01DL01hY2hPYmplY3RXcml0ZXIuY3BwIiwKKyAgICAgImxsdm0vbGliL01DL1N0cmlu Z1RhYmxlQnVpbGRlci5jcHAiLAorICAgICAibGx2bS9saWIvTUMvU3VidGFyZ2V0RmVhdHVyZS5j cHAiLApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlIGIvc3JjcGtn cy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMjA3YTczZDEwMzJmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDYtd2Vi ZW5naW5lL3RlbXBsYXRlCkBAIC0wLDAgKzEsMTgwIEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdx dDYtd2ViZW5naW5lJworcGtnbmFtZT1xdDYtd2ViZW5naW5lCit2ZXJzaW9uPTYuNC4yCityZXZp c2lvbj0xCit3cmtzcmM9InF0d2ViZW5naW5lLWV2ZXJ5d2hlcmUtc3JjLSR7dmVyc2lvbn0iCiti dWlsZF9zdHlsZT1jbWFrZQorY29uZmlndXJlX2FyZ3M9IgorIC1EUVRfRkVBVFVSRV93ZWJlbmdp bmVfc3lzdGVtX2ZmbXBlZz1PTgorIC1EUVRfRkVBVFVSRV93ZWJlbmdpbmVfc3lzdGVtX2xpYmV2 ZW50PU9OCisgLURRVF9GRUFUVVJFX3dlYmVuZ2luZV9zeXN0ZW1fZ249T04KKyAtRFFUX0ZFQVRV UkVfd2ViZW5naW5lX3N5c3RlbV9pY3U9T04KKyAtRFFUX0ZFQVRVUkVfd2ViZW5naW5lX3dlYnJ0 Y19waXBld2lyZT1PTgorIC1ETmluamFfRVhFQ1VUQUJMRT0kWEJQU19XUkFQUEVSRElSL25pbmph CisgLURRVF9CVUlMRF9FWEFNUExFUz1PTgorIC1EUEtHX0NPTkZJR19IT1NUX0VYRUNVVEFCTEU9 JHtQS0dfQ09ORklHX0ZPUl9CVUlMRH0iCitob3N0bWFrZWRlcGVuZHM9InF0Ni1iYXNlLWRldmVs IHBlcmwgcGtnLWNvbmZpZyBub2RlanMgcHl0aG9uMy1odG1sNWxpYgorIHF0Ni1kZWNsYXJhdGl2 ZS1kZXZlbCBwcm90b2J1ZiBncGVyZiBmbGV4IG5zcy1kZXZlbCBsaWJ3ZWJwLWRldmVsCisgaWN1 LWRldmVsIGxpYmV2ZW50LWRldmVsIgorbWFrZWRlcGVuZHM9InF0Ni1iYXNlLWRldmVsIHF0Ni1k ZWNsYXJhdGl2ZS1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCisgcXQ2LXRvb2xzLWRldmVsIHF0Ni13 ZWJzb2NrZXRzLWRldmVsIGxpYmZsYWMtZGV2ZWwgcXQ2LXN2Zy1kZXZlbAorIGFsc2EtbGliLWRl dmVsIGxpYnZweC1kZXZlbCBwY2l1dGlscy1kZXZlbCBvcHVzLWRldmVsIGxpYnhzbHQtZGV2ZWwK KyBsaWJ4bWwyLWRldmVsIGZyZWV0eXBlLWRldmVsIGxjbXMyLWRldmVsIGxpYndlYnAtZGV2ZWwg aWN1LWRldmVsCisgcmUyLWRldmVsIHpsaWItZGV2ZWwgbGlicG5nLWRldmVsIG1pbml6aXAtZGV2 ZWwgaGFyZmJ1enotZGV2ZWwKKyBuc3MtZGV2ZWwgbGliWGN1cnNvci1kZXZlbCBsaWJYY29tcG9z aXRlLWRldmVsIGxpYlhTY3JuU2F2ZXItZGV2ZWwKKyBwcm90b2J1Zi1kZXZlbCBmZm1wZWctZGV2 ZWwgc25hcHB5LWRldmVsIGxpYmV2ZW50LWRldmVsIHBpcGV3aXJlLWRldmVsCisgbGlieGtiZmls ZS1kZXZlbCBxdDYtbG9jYXRpb24tZGV2ZWwgcXQ2LXdlYmNoYW5uZWwtZGV2ZWwgbGlieHNobWZl bmNlLWRldmVsIgorIyBOb3Qgd29ya2luZyBwcm9wZXJseSB3aXRoIEhUVFBTIHdpdGhvdXQgdGhv c2UgcGFja2FnZXMKKyMgTm90IHN0cmljdCBkZXBlbmRlbmNpZXMsIHRob3VnaAorZGVwZW5kcz0i cXQ2LXBsdWdpbi10bHMtb3BlbnNzbCBxdDYtcGx1Z2luLXRscy1xY2VydG9ubHkiCitzaG9ydF9k ZXNjPSJDcm9zcy1wbGF0Zm9ybSBhcHBsaWNhdGlvbiBhbmQgVUkgZnJhbWV3b3JrIC0gV2ViZW5n aW5lIgorbWFpbnRhaW5lcj0iSm9obiA8bWVAam9obm55bmF0b3IuZGV2PiIKK2xpY2Vuc2U9IkdQ TC0zLjAtb25seSwgR1BMLTIuMC1vbmx5LCBMR1BMLTMuMC1vbmx5IEJTRC0zLUNsYXVzZSIKK2hv bWVwYWdlPSJodHRwczovL3d3dy5xdC5pbyIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9kb3dubG9hZC5x dC5pby9vZmZpY2lhbF9yZWxlYXNlcy9xdC8ke3ZlcnNpb24lLip9LyR7dmVyc2lvbn0vc3VibW9k dWxlcy9xdHdlYmVuZ2luZS1ldmVyeXdoZXJlLXNyYy0ke3ZlcnNpb259LnRhci54eiIKK2NoZWNr c3VtPWZmYTk0NTUxOGQxY2M4ZDllZTczNTIzZThkOWMyMDkwODQ0ZjVhMmQ5YzdlYWMwNWM0YWQw Nzk0NzJhMTE5YzkKKworaWYgWyAteiAiJENST1NTX0JVSUxEIiBdO3RoZW4KKwljb25maWd1cmVf YXJncys9IiAtRFFUX0JVSUxEX1RPT0xTX1dIRU5fQ1JPU1NDT01QSUxJTkc9VFJVRSIKKwljb25m aWd1cmVfYXJncys9IiAtRENNQUtFX1RPT0xDSEFJTl9GSUxFPS91c3IvbGliL2NtYWtlL1F0Ni9x dC50b29sY2hhaW4uY21ha2UiCitmaQorCitpZiBbICIkWEJQU19MSUJDIiA9ICJtdXNsIiBdOyB0 aGVuCisJaG9zdG1ha2VkZXBlbmRzKz0iIG11c2wtbGVnYWN5LWNvbXBhdCIKK2ZpCisKK2lmIFsg IiRYQlBTX1RBUkdFVF9MSUJDIiA9ICJtdXNsIiBdOyB0aGVuCisJbWFrZWRlcGVuZHMrPSIgbXVz bC1sZWdhY3ktY29tcGF0IgorZmkKKworaWYgWyAhICIkWEJQU19XT1JEU0laRSIgPSAiJFhCUFNf VEFSR0VUX1dPUkRTSVpFIiBdOyB0aGVuCisJYnJva2VuPSJ3ZWJlbmdpbmUgY2FuIGJlIGJ1aWx0 IG9ubHkgaWYgd29yZCBzaXplIG1hdGNoZXMiCitmaQorCitpZiBbICIkWEJQU19XT1JEU0laRSIg PSAzMiBdOyB0aGVuCisJQ0ZMQUdTPS1nMQorCUNYWEZMQUdTPS1nMQorCUxERkxBR1M9Ii1XbCwt LW5vLWtlZXAtbWVtb3J5IgorZmkKKworaWYgWyAiJFhCUFNfVEFSR0VUX0VORElBTiIgIT0gImxl IiBdOyB0aGVuCisJYnJva2VuPSJ3ZWJlbmdpbmUgb25seSBzdXBwb3J0cyBsaXR0bGUgZW5kaWFu IgorZmkKKworI2J1aWxkX29wdGlvbnM9ImV4YW1wbGVzIgorI2J1aWxkX29wdGlvbnNfZGVmYXVs dD0iZXhhbXBsZXMiCisjZGVzY19vcHRpb25fZXhhbXBsZXM9IkJ1aWxkIGV4YW1wbGVzIgorCitz dWJwYWNrYWdlcz0icXQ2LXdlYmVuZ2luZS1kZXZlbCIKKworI2lmIFsgIiRidWlsZF9vcHRpb25f ZXhhbXBsZXMiIF07IHRoZW4KKwlzdWJwYWNrYWdlcys9IiBxdDYtd2ViZW5naW5lLWV4YW1wbGVz IgorI2ZpCisKK19ib290c3RyYXBfZ24oKSB7CisJIyBCb290c3RyYXAgZ24gKGdlbmVyYXRlIG5p bmphKQorCWVjaG8gIkJvb3RzdHJhcHBpbmcgJ2duJyIKKwljZCAke3dya3NyY30vc3JjLzNyZHBh cnR5L2duCisJQ0ZMQUdTPSIkQ0ZMQUdTX2hvc3QiIENYWEZMQUdTPSIkQ1hYRkxBR1NfaG9zdCIg TERGTEFHUz0iJExERkxBR1NfaG9zdCIgXAorCVBLR0NPTkZJRz0vdXNyL2Jpbi9wa2djb25maWcg UEtHX0NPTkZJR19QQVRIPSIvdXNyL2xpYi9wa2djb25maWc6L3Vzci9zaGFyZS9wa2djb25maWci IFwKKwkJcHl0aG9uMyBidWlsZC9nZW4ucHkgLS1uby1sYXN0LWNvbW1pdC1wb3NpdGlvbiAtLW91 dC1wYXRoIFwKKwkJCSR7d3Jrc3JjfS9zcmMvM3JkcGFydHkvZ24vb3V0L1JlbGVhc2UgLS1jYyAi JHtDQ19ob3N0Oi0kQ0N9IiBcCisJCQktLWN4eCAiJHtDWFhfaG9zdDotJENYWH0iIC0tbGQgIiR7 Q1hYX2hvc3Q6LSRDWFh9IiAtLWFyICIke0FSX2hvc3Q6LSRBUn0iIFwKKwkJCS0tcXQtdmVyc2lv biAiJHt2ZXJzaW9ufS5xdHdlYmVuZ2luZS5xdC5pbyIKKwluaW5qYSAtQyBvdXQvUmVsZWFzZSBn bgorCWNkICR7d3Jrc3JjfQorfQorCitfdW5idW5kbGVfbGlicygpIHsKKwljZCAke3dya3NyY30v c3JjLzNyZHBhcnR5L2Nocm9taXVtCisJZWNobyBEcm9wcGluZyBidW5kbGVkIGxpYnMgZnJvbSBj aHJvbWl1bQorCSMgVXNlIHN5c3RlbS1wcm92aWRlZCBsaWJyYXJpZXMuCisJIyBUT0RPOiB1c2Vf c3lzdGVtX2h1bnNwZWxsICh1cHN0cmVhbSBjaGFuZ2VzIG5lZWRlZCkuCisJIyBUT0RPOiB1c2Vf c3lzdGVtX2xpYnNydHAuCisJIyBUT0RPOiB1c2Vfc3lzdGVtX2xpYnVzYiAoaHR0cDovL2NyYnVn LmNvbS8yNjYxNDkpLgorCSMgVE9ETzogdXNlX3N5c3RlbV9zc2wgKGh0dHA6Ly9jcmJ1Zy5jb20v NTgwODcpLgorCSMgVE9ETzogdXNlX3N5c3RlbV9zcWxpdGUgKGh0dHA6Ly9jcmJ1Zy5jb20vMjIy MDgpLgorCSMgVE9ETzogdXNlX3N5c3RlbV9pY3UgKHNlZ2ZhdWx0cykKKwkjIHVzZV9zeXN0ZW1f cHJvdG9idWYKKwkjIHVzZV9zeXN0ZW1fdjg9MQorCSMgdXNlX3N5c3RlbV96bGliPTEKKwkjIGJ6 aXAyIGpzb25jcHAgbWluaXppcCB4ZGdfdXRpbHMgc3BlZXgKKwlzeXN0ZW09IgorCQlmZm1wZWcK KwkJZmxhYworCQlmb250Y29uZmlnCisJCWZyZWV0eXBlCisJCWhhcmZidXp6LW5nCisJCWljdQor CQlsaWJkcm0KKwkJbGliZXZlbnQKKwkJbGlianBlZworCQlsaWJwbmcKKwkJbGlid2VicAorCQls aWJ4bWwKKwkJbGlieHNsdAorCQlvcHVzCisJCXJlMgorCQlzbmFwcHkKKwkiCisJYnVpbGQvbGlu dXgvdW5idW5kbGUvcmVwbGFjZV9nbl9maWxlcy5weSAtLXN5c3RlbS1saWJyYXJpZXMgJHtzeXN0 ZW19Cit9CisKKyMgUHJvdmlkZSBhIHdyYXBwZXIgdG8gcnVuIC4veGJwcy1zcmMgLWogMSBidWls ZCBsYXRlcgorX3dyYXBfbmluamEoKSB7CisJY2F0IDw8LSdfRU9GJyA+IiRYQlBTX1dSQVBQRVJE SVIiL25pbmphCisJIyEvYmluL3NoCisKKwlleGVjIC91c3IvYmluL25pbmphICROSU5KQUZMQUdT ICIkQCIKKwlfRU9GCisJY2htb2QgK3ggIiRYQlBTX1dSQVBQRVJESVIiL25pbmphCit9CisKK3By ZV9jb25maWd1cmUoKSB7CisJX2Jvb3RzdHJhcF9nbgorCSMgX3VuYnVuZGxlX2xpYnMKKwlfd3Jh cF9uaW5qYQorCWV4cG9ydCBQQVRIPSIkUEFUSDoke3dya3NyY30vc3JjLzNyZHBhcnR5L2duL291 dC9SZWxlYXNlIgorfQorCitwcmVfYnVpbGQoKSB7CisJZXhwb3J0IFBBVEg9IiRQQVRIOiR7d3Jr c3JjfS9zcmMvM3JkcGFydHkvZ24vb3V0L1JlbGVhc2UiCisJZXhwb3J0IE5JTkpBRkxBR1M9IiRt YWtlam9icyIKKworfQorCitwcmVfaW5zdGFsbCgpIHsKKwlleHBvcnQgUEFUSD0iJFBBVEg6JHt3 cmtzcmN9L3NyYy8zcmRwYXJ0eS9nbi9vdXQvUmVsZWFzZSIKK30KKworcG9zdF9pbnN0YWxsKCkg eworCWxvY2FsIF9maWxlCisJZmluZCAiJHtERVNURElSfSIvdXNyL2xpYi9xdDYvZXhhbXBsZXMg XAorCQktcGF0aCAnKi9saWIvcXQ2LyoqL2xpYi9xdDYvKicgLXR5cGUgZiB8CisJd2hpbGUgcmVh ZCBfZmlsZTsgZG8KKwkJbXYgIiRfZmlsZSIgIiR7X2ZpbGUlL2xpYi9xdDYvKn0iCisJZG9uZQor fQorCitxdDYtd2ViZW5naW5lLWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iJHtzb3VyY2Vw a2d9Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259IHF0Ni13ZWJjaGFubmVsLWRldmVsPj0ke3ZlcnNp b259XzEKKwkgcXQ2LWRlY2xhcmF0aXZlLWRldmVsPj0ke3ZlcnNpb259XzEgcXQ2LWxvY2F0aW9u LWRldmVsPj0ke3ZlcnNpb259XzEiCisJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVz IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZQorCQl2bW92ZSB1c3IvbGli L2NtYWtlCisJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJCXZtb3ZlIHVzci9saWIvcXQ2L21r c3BlY3MKKwkJdm1vdmUgInVzci9saWIvKi5zbyIKKwkJdm1vdmUgInVzci9saWIvKi5wcmwiCisJ CXZtb3ZlIHVzci9zaGFyZS9xdDYvbW9kdWxlcworCX0KK30KKworcXQ2LXdlYmVuZ2luZS1leGFt cGxlc19wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBzYW1wbGUgYnJvd3NlcnMiCisJZGVw ZW5kcz0icXQ2LXN2ZyIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2xpYi9xdDYvZXhh bXBsZXMKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdXBkYXRlIGIv c3JjcGtncy9xdDYtd2ViZW5naW5lL3VwZGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjg0NDU1MjQ2NTIyMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ2 LXdlYmVuZ2luZS91cGRhdGUKQEAgLTAsMCArMSBAQAorcGtnbmFtZT0iJHtwa2duYW1lLzYtL30t ZXZlcnl3aGVyZS1zcmMiCg== --===============1162889998119107180==--