From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from inbox.vuxu.org (localhost [IPv6:::1]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 890f1e75 for ; Sat, 6 Jul 2019 20:01:49 +0000 (UTC) Content-Type: multipart/mixed; boundary="===============8259228764785562854==" MIME-Version: 1.0 Subject: Re: [PR PATCH] [Updated] [WIP] qt5: update to 5.13.0 To: ml@inbox.vuxu.org From: voidlinux-github@inbox.vuxu.org Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Sat, 06 Jul 2019 22:01:49 +0200 Message-ID: <20190706200149.cnr6ls9A-0XRV-9MnIZ3VZmACYd7Ffj-1-xF1nyCn1Y@z> GitHub notification mails are now in MIME to allow UTF8. --===============8259228764785562854== MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgSm9obm55bmF0b3IgYWdhaW5zdCBt YXN0ZXIgb24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29t L0pvaG5ueW5hdG9yL3ZvaWQtcGFja2FnZXMgcXQ1LjEzCmh0dHBzOi8vZ2l0aHViLmNvbS92b2lk LWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8xMTg5MQoKW1dJUF0gcXQ1OiB1cGRhdGUgdG8gNS4x My4wClRlc3QgcmVwbyB1cCBvbiBodHRwczovL3ZvaWQuam9obm55bmF0b3IuZGV2L3F0NS4xMy8N Cg0KUXQ1LXdlYmVuZ2luZSBub3cgYWx3YXlzIHJlcXVpcmVzIGEgMzJiaXQgaG9zdCBjb21waWxl ciB3aGVuIGNyb3NzIGNvbXBpbGluZyB0byBhIDMyYml0IGNyb3NzIGFyY2ggKGUuZy4geDg2XzY0 IC0+IGFybSopLCBzbyB3ZSBoYXZlIHRvIGRpc2FibGUgaXQgZm9yIG5vdyBvbiBhbGwgMzJiaXQg YXJtKiBhcmNoaXRlY3R1cmVzLg0KDQoNClN0YXR1czogcXQ1LXdlYmVuZ2luZSBpcyBzdGlsbCBi cm9rZW4gb24gbXVzbA0KDQpTaG91bGQgcmVzb2x2ZSAjMTI1NTANCgoKQSBwYXRjaCBmaWxlIGZy b20gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzExODkx LnBhdGNoIGlzIGF0dGFjaGVk --===============8259228764785562854== Content-Type: application/text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-qt5.13-11891.patch" RnJvbSA5ZDgyOTg0ODE4YWFmZTM1MDM4NTNhMWVmMmEyYTBkZjBjNmViODk1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBUaHUsIDIz IE1heSAyMDE5IDA4OjQ5OjQwICswMjAwClN1YmplY3Q6IFtQQVRDSCAwMS8xN10gcXQ1OiB1cGRh dGUgdG8gNS4xMy4wCgpxdDU6IHVwZGF0ZSBwcGM2NChsZSkgc3VwcG9ydCArIGFkZCBiaWcgZW5k aWFuCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgMyArCiBzcmNwa2dzL3txdDUtY2FudmFzM2QgPT4gcXQ1LWxvdHRpZX0gICAgICAgICAgfCAg ICAwCiBzcmNwa2dzL3F0NS1sb3R0aWUtZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgfCAgICAx ICsKIC4uLi8wMDkwLWhhcmQtZGlzYWJsZS1xbWxjaGFjaGVnZW4ucGF0Y2ggICAgICB8ICAgMTAg Kwogc3JjcGtncy9xdDUvZmlsZXMvYXNzaXN0YW50LnBybyAgICAgICAgICAgICAgIHwgICAgMiAt CiBzcmNwa2dzL3F0NS9maWxlcy9scmVsZWFzZS5wcm8gICAgICAgICAgICAgICAgfCAgIDEwICst CiBzcmNwa2dzL3F0NS9maWxlcy9sdXBkYXRlLnBybyAgICAgICAgICAgICAgICAgfCAgICA4ICst CiBzcmNwa2dzL3F0NS9maWxlcy9tb2MvbW9jLnBybyAgICAgICAgICAgICAgICAgfCAgICA4IC0K IC4uLi9xdDUvZmlsZXMvcWRidXNjcHAyeG1sL3FkYnVzY3BwMnhtbC5wcm8gICB8ICAgIDggLQog c3JjcGtncy9xdDUvZmlsZXMvcWxhbHIvcWxhbHIucHJvICAgICAgICAgICAgIHwgICAyMyAtCiBz cmNwa2dzL3F0NS9maWxlcy9xbWxpbXBvcnRzY2FubmVyLnBybyAgICAgICAgfCAgICAyICstCiBz cmNwa2dzL3F0NS9maWxlcy9xbWxsaW50LnBybyAgICAgICAgICAgICAgICAgfCAgICA0ICstCiBz cmNwa2dzL3F0NS9maWxlcy9xbWxtaW4ucHJvICAgICAgICAgICAgICAgICAgfCAgICAyICstCiBz cmNwa2dzL3F0NS9maWxlcy9xdHRvb2xzX3NyYy5wcm8gICAgICAgICAgICAgfCAgICAxIC0KIHNy Y3BrZ3MvcXQ1L2ZpbGVzL3JjYy5wcm8gICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogc3Jj cGtncy9xdDUvZmlsZXMvcmNjL3JjYy5wcm8gICAgICAgICAgICAgICAgIHwgICAgNiAtCiBzcmNw a2dzL3F0NS9maWxlcy91aWMucHJvICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNyY3Br Z3MvcXQ1L2ZpbGVzL3VpYy91aWMucHJvICAgICAgICAgICAgICAgICB8ICAgMTEgLQogLi4udC1i ZXR3ZWVuLW11c2wtbGliYy1kaXJlbnQuaC1hbmQtbHNzLnBhdGNoIHwgICAzNSAtCiAuLi4vcGF0 Y2hlcy8wMDA0LW11c2wtZGlzcGF0Y2gtdG8tbXVzbC5wYXRjaCAgfCAgIDI2ICstCiAuLi4taXMt YS1ub25wb3J0YWJsZS1hbGlhcy1mb3Itc2lnbmFsLmgucGF0Y2ggfCAgIDgxIC0KIC4uLi9xdDUv cGF0Y2hlcy8wMDA4LW11c2wtbm8tbWFsbGluZm8ucGF0Y2ggICB8ICAgMTEgLQogc3JjcGtncy9x dDUvcGF0Y2hlcy8wMDEzLW11c2wtc2VyaWFsaW8ucGF0Y2ggIHwgICAxMiAtCiAuLi4vcXQ1L3Bh dGNoZXMvMDAxNy1tdXNsLXN0YWNrc3RhcnQucGF0Y2ggICAgfCAgICA0ICstCiAuLi4vcXQ1L3Bh dGNoZXMvMDAyMS1jaHJvbWl1bS1tb2pvLWdjYzgucGF0Y2ggfCAgIDE4IC0KIC4uLi9xdDUvcGF0 Y2hlcy8wMDIyLWxpYnJlc3NsLWNvbXBhdC5wYXRjaCAgICB8ICAgMjcgKy0KIC4uLi9xdDUvcGF0 Y2hlcy8wMDIzLWVuYWJsZV90b29scy1jcm9zcy5wYXRjaCB8ICAgMzUgKy0KIHNyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDAyNy1za2lhX2NwdS1iZS5wYXRjaCAgICB8ICAgMTIgLQogc3JjcGtncy9xdDUv cGF0Y2hlcy8wMDI4LXdlYnJ0Yy1iZS5wYXRjaCAgICAgIHwgICAxMiAtCiBzcmNwa2dzL3F0NS9w YXRjaGVzLzAwMjktbXVzbC1saWJldmVudC5wYXRjaCAgfCAgMTIxIC0KIC4uLl9yZW1vdmVfb3Vy X3VzZV9vZl9zeXNjYWxsX2Zvci1zdGF0eC5wYXRjaCB8ICAxMTkgLQogc3JjcGtncy9xdDUvcGF0 Y2hlcy8wMDM0LWdjYy04LjMtYnVpbGQucGF0Y2ggIHwgIDIzNiAtCiBzcmNwa2dzL3F0NS9wYXRj aGVzLzAwMzUtZ2NjLTkuMS1idWlsZC5wYXRjaCAgfCAgIDM1IC0KIHNyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDA0MC15YXNtLW5scy5wYXRjaCAgICAgICB8ICAgMTMgKwogc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDQxLWxpYnJlc3NsLnBhdGNoICAgICAgIHwgICAxMSArCiAuLi4vMDA0Mi1hcm0tdm9pZC1p cy1ub3QtYW5kcm9pZC5wYXRjaCAgICAgICAgfCAgIDIxICsKIC4uLmlvLnBhdGNoID0+IDAwNDMt bGlicmVzc2wtY29uc3QtYmlvLnBhdGNofSB8ICAgIDggKy0KIC4uLmluZm8ucGF0Y2ggPT4gMDA0 NC1xdC1tdXNsLWV4ZWNpbmZvLnBhdGNofSB8ICAgODUgKy0KIC4uLi8wMDQ1LXF0LW11c2wtdGhy ZWFkLXN0YWNrc2l6ZS5wYXRjaCAgICAgICB8ICAgMjYgKwogLi4uL3F0NS9wYXRjaGVzLzAwNDYt c2FuZGJveC1tZW1iYXJyaWVyLnBhdGNoIHwgICA2MCArCiAuLi4vcXQ1L3BhdGNoZXMvMDA0Ny1n bi1jcm9zcy1zeXNyb290LnBhdGNoICAgfCAgIDI0ICsKIC4uLi9xdDUvcGF0Y2hlcy8wMDg5LXdl YmVuZ2luZS1wcGM2NC5wYXRjaCAgICB8ICAgMjAgKwogLi4uL3F0NS9wYXRjaGVzLzAwOTAtY2hy b21pdW0tcHBjNjRsZS5wYXRjaCAgIHwgNDI2NyArKysrKysrKysrKysrKysrKwogLi4uL3BhdGNo ZXMvMDA5MS1jaHJvbWl1bS1wcGM2NC1tdXNsLnBhdGNoICAgIHwgIDE0MSArCiAuLi4vcXQ1L3Bh dGNoZXMvMDA5Mi1jaHJvbWl1bS1wcGM2NC1iZS5wYXRjaCAgfCAyOTcwICsrKysrKysrKysrKwog Li4uL3F0NS9wYXRjaGVzLzAwOTMtY2hyb21pdW0tdjgtZWxmdjIucGF0Y2ggIHwgICA0MyArCiAu Li4vMDA5NC1iaWctZW5kaWFuLXNraWEtcG9ydGFibGUucGF0Y2ggICAgICAgfCAgIDE3ICsKIC4u Li9wYXRjaGVzL3F0d2ViZW5naW5lLWNocm9taXVtLXBwYzY0LnBhdGNoICB8IDIxMTIgLS0tLS0t LS0KIC4uLi9wYXRjaGVzL3F0d2ViZW5naW5lLWVuYWJsZS1wcGM2NC5wYXRjaCAgICB8ICAgNDEg LQogc3JjcGtncy9xdDUvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEzOSAr LQogNTAgZmlsZXMgY2hhbmdlZCwgNzgwNyBpbnNlcnRpb25zKCspLCAzMDc3IGRlbGV0aW9ucygt KQogcmVuYW1lIHNyY3BrZ3Mve3F0NS1jYW52YXMzZCA9PiBxdDUtbG90dGllfSAoMTAwJSkKIGNy ZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL3F0NS1sb3R0aWUtZGV2ZWwKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL3F0NS9maWxlcy8wMDkwLWhhcmQtZGlzYWJsZS1xbWxjaGFjaGVnZW4ucGF0 Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9maWxlcy9tb2MvbW9jLnBybwogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L2ZpbGVzL3FkYnVzY3BwMnhtbC9xZGJ1c2NwcDJ4 bWwucHJvCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvZmlsZXMvcWxhbHIvcWxhbHIu cHJvCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvZmlsZXMvcmNjL3JjYy5wcm8KIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9maWxlcy91aWMvdWljLnBybwogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwMS1GaXgtY29uZmxpY3QtYmV0d2Vlbi1t dXNsLWxpYmMtZGlyZW50LmgtYW5kLWxzcy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvcXQ1L3BhdGNoZXMvMDAwNi1zeXMtc2lnbmFsLmgtaXMtYS1ub25wb3J0YWJsZS1hbGlhcy1m b3Itc2lnbmFsLmgucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVz LzAwMTMtbXVzbC1zZXJpYWxpby5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDAyMS1jaHJvbWl1bS1tb2pvLWdjYzgucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjctc2tpYV9jcHUtYmUucGF0Y2gKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjgtd2VicnRjLWJlLnBhdGNoCiBkZWxldGUg bW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI5LW11c2wtbGliZXZlbnQucGF0Y2gK IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMzMtcmV2ZXJ0X3JlbW92 ZV9vdXJfdXNlX29mX3N5c2NhbGxfZm9yLXN0YXR4LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDM0LWdjYy04LjMtYnVpbGQucGF0Y2gKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMzUtZ2NjLTkuMS1idWlsZC5wYXRjaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0MC15YXNtLW5scy5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0MS1saWJyZXNzbC5wYXRj aAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Mi1hcm0tdm9pZC1p cy1ub3QtYW5kcm9pZC5wYXRjaAogcmVuYW1lIHNyY3BrZ3MvcXQ1L3BhdGNoZXMve2xpYnJlc3Ns LWNvbnN0LWJpby5wYXRjaCA9PiAwMDQzLWxpYnJlc3NsLWNvbnN0LWJpby5wYXRjaH0gKDg0JSkK IHJlbmFtZSBzcmNwa2dzL3F0NS9wYXRjaGVzL3swMDA1LW11c2wtbm8tZXhlY2luZm8ucGF0Y2gg PT4gMDA0NC1xdC1tdXNsLWV4ZWNpbmZvLnBhdGNofSAoNTYlKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0NS1xdC1tdXNsLXRocmVhZC1zdGFja3NpemUucGF0Y2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDYtc2FuZGJveC1tZW1i YXJyaWVyLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ3 LWduLWNyb3NzLXN5c3Jvb3QucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9w YXRjaGVzLzAwODktd2ViZW5naW5lLXBwYzY0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDkwLWNocm9taXVtLXBwYzY0bGUucGF0Y2gKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTEtY2hyb21pdW0tcHBjNjQtbXVzbC5wYXRj aAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5Mi1jaHJvbWl1bS1w cGM2NC1iZS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5 My1jaHJvbWl1bS12OC1lbGZ2Mi5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDA5NC1iaWctZW5kaWFuLXNraWEtcG9ydGFibGUucGF0Y2gKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzL3F0d2ViZW5naW5lLWNocm9taXVtLXBwYzY0LnBh dGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy9xdHdlYmVuZ2luZS1l bmFibGUtcHBjNjQucGF0Y2gKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9uL3No bGlicwppbmRleCA1YjFkOWJmNWE3My4uZTU3ZTM5NzE0ZGQgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9z aGxpYnMKKysrIGIvY29tbW9uL3NobGlicwpAQCAtMTg1MCwxMCArMTg1MCwxMyBAQCBsaWJRdDVR dWljay5zby41IHF0NS1kZWNsYXJhdGl2ZS01LjYuMF8xCiBsaWJRdDVRdWlja1Rlc3Quc28uNSBx dDUtZGVjbGFyYXRpdmUtNS42LjBfMQogbGliUXQ1UXVpY2tXaWRnZXRzLnNvLjUgcXQ1LWRlY2xh cmF0aXZlLTUuNi4wXzEKIGxpYlF0NVF1aWNrUGFydGljbGVzLnNvLjUgcXQ1LWRlY2xhcmF0aXZl LTUuNi4wXzEKK2xpYlF0NVF1aWNrU2hhcGVzLnNvLjUgcXQ1LWRlY2xhcmF0aXZlLTUuMTIuMV8x CiBsaWJRdDVRdWlja0NvbnRyb2xzMi5zby41IHF0NS1xdWlja2NvbnRyb2xzMi01LjcuMV8xCiBs aWJRdDVRdWlja1RlbXBsYXRlczIuc28uNSBxdDUtcXVpY2tjb250cm9sczItNS43LjFfMQogbGli UXQ1UG9zaXRpb25pbmcuc28uNSBxdDUtbG9jYXRpb24tNS42LjBfMQogbGliUXQ1TG9jYXRpb24u c28uNSBxdDUtbG9jYXRpb24tNS42LjBfMQorbGliUXQ1UG9zaXRpb25pbmdRdWljay5zby41IHF0 NS1sb2NhdGlvbi01LjEyLjFfMQorbGliUXQ1VmlydHVhbEtleWJvYXJkLnNvLjUgcXQ1LXZpcnR1 YWxrZXlib2FyZC01LjEyLjFfMQogbGliUXQ1TXVsdGltZWRpYS5zby41IHF0NS1tdWx0aW1lZGlh LTUuNi4wXzEKIGxpYlF0NU11bHRpbWVkaWFHc3RUb29scy5zby41IHF0NS1tdWx0aW1lZGlhLTUu MTAuMV8xCiBsaWJRdDVNdWx0aW1lZGlhUXVpY2suc28uNSBxdDUtbXVsdGltZWRpYS01LjEwLjFf MQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtY2FudmFzM2QgYi9zcmNwa2dzL3F0NS1sb3R0aWUK c2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyY3BrZ3MvcXQ1LWNhbnZhczNkCnJl bmFtZSB0byBzcmNwa2dzL3F0NS1sb3R0aWUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LWxvdHRp ZS1kZXZlbCBiL3NyY3BrZ3MvcXQ1LWxvdHRpZS1kZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMApp bmRleCAwMDAwMDAwMDAwMC4uNzU3OTNlYjY2NjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L3F0NS1sb3R0aWUtZGV2ZWwKQEAgLTAsMCArMSBAQAorcXQ1ClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvZmlsZXMvMDA5MC1oYXJkLWRpc2FibGUt cW1sY2hhY2hlZ2VuLnBhdGNoIGIvc3JjcGtncy9xdDUvZmlsZXMvMDA5MC1oYXJkLWRpc2FibGUt cW1sY2hhY2hlZ2VuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li41ZWNkZmIzMGY1YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzLzAwOTAt aGFyZC1kaXNhYmxlLXFtbGNoYWNoZWdlbi5wYXRjaApAQCAtMCwwICsxLDEwIEBACistLS0gcXRk ZWNsYXJhdGl2ZS90b29scy90b29scy5wcm8JMjAxOS0wNC0wOSAwMTowMTowNy4wMDAwMDAwMDAg KzAyMDAKKysrKyAtCTIwMTktMDQtMjEgMDA6MjQ6MTYuMTkyOTY2MzQ1ICswMjAwCitAQCAtNyw3 ICs3LDYgQEAKKyAgICAgICAgIHFtbG1pbiBcCisgICAgICAgICBxbWxpbXBvcnRzY2FubmVyCisg CistICAgIHF0Q29uZmlnKGNvbW1hbmRsaW5lcGFyc2VyKTpxdENvbmZpZyh4bWxzdHJlYW13cml0 ZXIpOiBTVUJESVJTICs9IHFtbGNhY2hlZ2VuCisgfQorIAorIHF0Q29uZmlnKHRocmVhZCk6IWFu ZHJvaWR8YW5kcm9pZF9hcHA6IXdhc20gewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvZmlsZXMv YXNzaXN0YW50LnBybyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL2Fzc2lzdGFudC5wcm8KaW5kZXggM2Uz Mjc3NmE4MjcuLjUxMDBmNjExMDVlIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS9maWxlcy9hc3Np c3RhbnQucHJvCisrKyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL2Fzc2lzdGFudC5wcm8KQEAgLTUsOSAr NSw3IEBAIFNVQkRJUlMgKz0gXAogICAgICAgICAgICBhc3Npc3RhbnQgXAogICAgICAgICAgICBx aGVscGdlbmVyYXRvciBcCiAgICAgICAgICAgIHFjb2xsZWN0aW9uZ2VuZXJhdG9yIFwKLSAgICAg ICAgICAgcWhlbHBjb252ZXJ0ZXIKIAogYXNzaXN0YW50LmRlcGVuZHMgPSBoZWxwCi1xaGVscGdl bmVyYXRvci5kZXBlbmRzID0gaGVscAogcWNvbGxlY3Rpb25nZW5lcmF0b3IuZGVwZW5kcyA9IGhl bHAKIHFoZWxwY29udmVydGVyLmRlcGVuZHMgPSBoZWxwCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0 NS9maWxlcy9scmVsZWFzZS5wcm8gYi9zcmNwa2dzL3F0NS9maWxlcy9scmVsZWFzZS5wcm8KaW5k ZXggNGRiZDRjZTUzMjcuLmJhYjZiMjkyOGU0IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS9maWxl cy9scmVsZWFzZS5wcm8KKysrIGIvc3JjcGtncy9xdDUvZmlsZXMvbHJlbGVhc2UucHJvCkBAIC0x LDEwICsxLDE2IEBACiBRVCA9IGNvcmUgcW1sIG5ldHdvcmsgY29yZS1wcml2YXRlCiBERUZJTkVT ICs9IFFUX05PX0NBU1RfRlJPTV9BU0NJSSBRVF9OT19DQVNUX1RPX0FTQ0lJCiAKLVNPVVJDRVMg Kz0gbWFpbi5jcHAKK0hFQURFUlMgKz0gXAorICAgIC4uL3NoYXJlZC9wcm9qZWN0ZGVzY3JpcHRp b25yZWFkZXIuaCBcCisgICAgLi4vc2hhcmVkL3J1bnF0dG9vbC5oCisKK1NPVVJDRVMgKz0gXAor ICAgIC4uL3NoYXJlZC9wcm9qZWN0ZGVzY3JpcHRpb25yZWFkZXIuY3BwIFwKKyAgICAuLi9zaGFy ZWQvcnVucXR0b29sLmNwcCBcCisgICAgbWFpbi5jcHAKIAogaW5jbHVkZSguLi9zaGFyZWQvZm9y bWF0cy5wcmkpCi1pbmNsdWRlKC4uL3NoYXJlZC9wcm9wYXJzZXIucHJpKQogCiBxbWFrZS5uYW1l ID0gUU1BS0UKIHFtYWtlLnZhbHVlID0gJCRzaGVsbF9wYXRoKCQkUU1BS0VfUU1BS0UpCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0NS9maWxlcy9sdXBkYXRlLnBybyBiL3NyY3BrZ3MvcXQ1L2ZpbGVz L2x1cGRhdGUucHJvCmluZGV4IGM4NjdhY2U5MDk5Li5iZjY4NzExM2M4NiAxMDA2NDQKLS0tIGEv c3JjcGtncy9xdDUvZmlsZXMvbHVwZGF0ZS5wcm8KKysrIGIvc3JjcGtncy9xdDUvZmlsZXMvbHVw ZGF0ZS5wcm8KQEAgLTMsMTMgKzMsMTQgQEAgUVQgPSBjb3JlIHFtbCBuZXR3b3JrIGNvcmUtcHJp dmF0ZSBxbWxkZXZ0b29scy1wcml2YXRlCiBERUZJTkVTICs9IFFUX05PX0NBU1RfVE9fQVNDSUkg UVRfTk9fQ0FTVF9GUk9NX0FTQ0lJCiAKIGluY2x1ZGUoLi4vc2hhcmVkL2Zvcm1hdHMucHJpKQot aW5jbHVkZSguLi9zaGFyZWQvcHJvcGFyc2VyLnByaSkKIAotREVGSU5FUyArPSBQUk9FVkFMVUFU T1JfREVCVUcKIAogU09VUkNFUyArPSBcCiAgICAgbWFpbi5jcHAgXAogICAgIG1lcmdlLmNwcCBc CisgICAgLi4vc2hhcmVkL3Byb2plY3RkZXNjcmlwdGlvbnJlYWRlci5jcHAgXAorICAgIC4uL3No YXJlZC9ydW5xdHRvb2wuY3BwIFwKKyAgICAuLi9zaGFyZWQvcXJjcmVhZGVyLmNwcCBcCiAgICAg Li4vc2hhcmVkL3NpbXRleHRoLmNwcCBcCiAgICAgXAogICAgIGNwcC5jcHAgXApAQCAtMjAsNiAr MjEsOSBAQCBTT1VSQ0VTICs9IHFkZWNsYXJhdGl2ZS5jcHAKIAogSEVBREVSUyArPSBcCiAgICAg bHVwZGF0ZS5oIFwKKyAgICAuLi9zaGFyZWQvcHJvamVjdGRlc2NyaXB0aW9ucmVhZGVyLmggXAor ICAgIC4uL3NoYXJlZC9xcmNyZWFkZXIuaCBcCisgICAgLi4vc2hhcmVkL3J1bnF0dG9vbC5oIFwK ICAgICAuLi9zaGFyZWQvc2ltdGV4dGguaAogCiBtaW5ndyB7CmRpZmYgLS1naXQgYS9zcmNwa2dz L3F0NS9maWxlcy9tb2MvbW9jLnBybyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL21vYy9tb2MucHJvCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDQyNWNmYjQ2Mi4uMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9xdDUvZmlsZXMvbW9jL21vYy5wcm8KKysrIC9kZXYvbnVsbApAQCAtMSw4ICsw LDAgQEAKLVFUICs9IGNvcmUtcHJpdmF0ZQotREVGSU5FUyArPSBRVF9NT0MKLQotaW5jbHVkZSht b2MucHJpKQotSEVBREVSUyArPSBxZGF0ZXRpbWVfcC5oCi1TT1VSQ0VTICs9IG1haW4uY3BwCi0K LWxvYWQocXRfdG9vbCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FkYnVzY3BwMnht bC9xZGJ1c2NwcDJ4bWwucHJvIGIvc3JjcGtncy9xdDUvZmlsZXMvcWRidXNjcHAyeG1sL3FkYnVz Y3BwMnhtbC5wcm8KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjYTZkMzZiY2I4Li4w MDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9maWxlcy9xZGJ1c2NwcDJ4bWwvcWRidXNjcHAy eG1sLnBybworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotUVQgPSBjb3JlLXByaXZhdGUg ZGJ1cy1wcml2YXRlCi1RTUFLRV9DWFhGTEFHUyArPSAkJFFUX0hPU1RfQ0ZMQUdTX0RCVVMKLQot aW5jbHVkZSguLi9tb2MvbW9jLnByaSkKLQotU09VUkNFUyArPSBxZGJ1c2NwcDJ4bWwuY3BwCi0K LWxvYWQocXRfdG9vbCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FsYWxyL3FsYWxy LnBybyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FsYWxyL3FsYWxyLnBybwpkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggM2Q3NzY3MjdmZWYuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1 L2ZpbGVzL3FsYWxyL3FsYWxyLnBybworKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNP VVJDRVMgKz0gXAotICAgIGNvbXByZXNzLmNwcCBcCi0gICAgY3BwZ2VuZXJhdG9yLmNwcCBcCi0g ICAgZG90Z3JhcGguY3BwIFwKLSAgICBsYWxyLmNwcCBcCi0gICAgbWFpbi5jcHAgXAotICAgIHBh cnNldGFibGUuY3BwIFwKLSAgICByZWNvZ25pemVyLmNwcCBcCi0gICAgZ3JhbW1hci5jcHAKLQot SEVBREVSUyArPSBcCi0gICAgY29tcHJlc3MuaCBcCi0gICAgY3BwZ2VuZXJhdG9yLmggXAotICAg IGRvdGdyYXBoLmggXAotICAgIGxhbHIuaCBcCi0gICAgcGFyc2V0YWJsZS5oIFwKLSAgICByZWNv Z25pemVyLmggXAotICAgIGdyYW1tYXJfcC5oCi0KLU9USEVSX0ZJTEVTICs9IFwKLSAgICBsYWxy LmcKLQotbG9hZChxdF90b29sKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvZmlsZXMvcW1saW1w b3J0c2Nhbm5lci5wcm8gYi9zcmNwa2dzL3F0NS9maWxlcy9xbWxpbXBvcnRzY2FubmVyLnBybwpp bmRleCBmOTIyMzRhZDQ0Mi4uNTdjMjI4Yjg1NDAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L2Zp bGVzL3FtbGltcG9ydHNjYW5uZXIucHJvCisrKyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGltcG9y dHNjYW5uZXIucHJvCkBAIC0xLDcgKzEsNyBAQAogUVQgPSBjb3JlIHFtbCBuZXR3b3JrIHFtbGRl dnRvb2xzLXByaXZhdGUKIERFRklORVMgKz0gUVRfTk9fQ0FTVF9UT19BU0NJSSBRVF9OT19DQVNU X0ZST01fQVNDSUkKIAotU09VUkNFUyArPSBtYWluLmNwcCAuLi8uLi9zcmMvcW1sL3BhcnNlci9x cW1sanNncmFtbWFyLmNwcAorU09VUkNFUyArPSBtYWluLmNwcCAuLi8uLi9zcmMvcW1sL3FxbWxq c2dyYW1tYXIuY3BwCiAKIFFNQUtFX1RBUkdFVF9ERVNDUklQVElPTiA9IFFNTCBJbXBvcnQgU2Nh bm5lcgogCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9maWxlcy9xbWxsaW50LnBybyBiL3NyY3Br Z3MvcXQ1L2ZpbGVzL3FtbGxpbnQucHJvCmluZGV4IDAzMmQwMmNmMzNiLi40MDlhMzc4YmZjYiAx MDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvZmlsZXMvcW1sbGludC5wcm8KKysrIGIvc3JjcGtncy9x dDUvZmlsZXMvcW1sbGludC5wcm8KQEAgLTEsNiArMSw2IEBACi1RVCA9IGNvcmUgcW1sIG5ldHdv cmsgcW1sZGV2dG9vbHMtcHJpdmF0ZQorUVQgPSBjb3JlIHFtbCBxbWxkZXZ0b29scy1wcml2YXRl CiAKLVNPVVJDRVMgKz0gbWFpbi5jcHAgLi4vLi4vc3JjL3FtbC9wYXJzZXIvcXFtbGpzZ3JhbW1h ci5jcHAKK1NPVVJDRVMgKz0gbWFpbi5jcHAgLi4vLi4vc3JjL3FtbC9xcW1sanNncmFtbWFyLmNw cAogCiBRTUFLRV9UQVJHRVRfREVTQ1JJUFRJT04gPSBRTUwgU3ludGF4IFZlcmlmaWVyCiAKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FtbG1pbi5wcm8gYi9zcmNwa2dzL3F0NS9maWxl cy9xbWxtaW4ucHJvCmluZGV4IDU4Zjc1Yzc2ZTAxLi5mMDk2YjQxNGJmNCAxMDA2NDQKLS0tIGEv c3JjcGtncy9xdDUvZmlsZXMvcW1sbWluLnBybworKysgYi9zcmNwa2dzL3F0NS9maWxlcy9xbWxt aW4ucHJvCkBAIC0xLDUgKzEsNSBAQAogUVQgICAgICAgPSBjb3JlIHFtbCBuZXR3b3JrIHFtbGRl dnRvb2xzLXByaXZhdGUKLVNPVVJDRVMgKz0gbWFpbi5jcHAgLi4vLi4vc3JjL3FtbC9wYXJzZXIv cXFtbGpzZ3JhbW1hci5jcHAKK1NPVVJDRVMgKz0gbWFpbi5jcHAgLi4vLi4vc3JjL3FtbC9xcW1s anNncmFtbWFyLmNwcAogCiBRTUFLRV9UQVJHRVRfREVTQ1JJUFRJT04gPSBRTUwvSlMgTWluaWZp ZXIKIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvZmlsZXMvcXR0b29sc19zcmMucHJvIGIvc3Jj cGtncy9xdDUvZmlsZXMvcXR0b29sc19zcmMucHJvCmluZGV4IDdiMzlmOTI5ZTc3Li5jNzM0NDQw NGMwNSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvZmlsZXMvcXR0b29sc19zcmMucHJvCisrKyBi L3NyY3BrZ3MvcXQ1L2ZpbGVzL3F0dG9vbHNfc3JjLnBybwpAQCAtNSw3ICs1LDYgQEAgU1VCRElS UyA9IGFzc2lzdGFudCBcCiAJZGVzaWduZXIgXAogCWxpbmd1aXN0IFwKIAlxZGJ1cyBcCi0JcWRv YyBcCiAJcXRhdHRyaWJ1dGlvbnNzY2FubmVyCiAKIGxpbmd1aXN0LmRlcGVuZHMgPSBkZXNpZ25l cgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvZmlsZXMvcmNjLnBybyBiL3NyY3BrZ3MvcXQ1L2Zp bGVzL3JjYy5wcm8KaW5kZXggODA0NmI3MmI0OGQuLjMyOTY5Nzk3NjliIDEwMDY0NAotLS0gYS9z cmNwa2dzL3F0NS9maWxlcy9yY2MucHJvCisrKyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3JjYy5wcm8K QEAgLTYsMyArNiw1IEBAIFNPVVJDRVMgKz0gbWFpbi5jcHAKIAogUU1BS0VfVEFSR0VUX0RFU0NS SVBUSU9OID0gIlF0IFJlc291cmNlIENvbXBpbGVyIgogbG9hZChxdF90b29sKQorCitERUZJTkVT ICs9IFFUX0ZFQVRVUkVfenN0ZD0tMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvZmlsZXMvcmNj L3JjYy5wcm8gYi9zcmNwa2dzL3F0NS9maWxlcy9yY2MvcmNjLnBybwpkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggNTgxY2Q0NTY0ZjYuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1 L2ZpbGVzL3JjYy9yY2MucHJvCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1ERUZJTkVT ICs9IFFUX1JDQwotCi1pbmNsdWRlKHJjYy5wcmkpCi1TT1VSQ0VTICs9IG1haW4uY3BwCi0KLWxv YWQocXRfdG9vbCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3VpYy5wcm8gYi9zcmNw a2dzL3F0NS9maWxlcy91aWMucHJvCmluZGV4IDMwZjk4NjQ0ZWI3Li43NGQ3ZGJkODc4ZiAxMDA2 NDQKLS0tIGEvc3JjcGtncy9xdDUvZmlsZXMvdWljLnBybworKysgYi9zcmNwa2dzL3F0NS9maWxl cy91aWMucHJvCkBAIC0yLDYgKzIsNyBAQCBRVCA9IGNvcmUgcW1sIGNvcmUtcHJpdmF0ZSBxbWxk ZXZ0b29scy1wcml2YXRlCiBERUZJTkVTICs9IFFUX1VJQyBRVF9OT19DQVNUX0ZST01fQVNDSUkg UVRfTk9fRk9SRUFDSAogCiBpbmNsdWRlKHVpYy5wcmkpCitpbmNsdWRlKHNoYXJlZC9zaGFyZWQu cHJpKQogaW5jbHVkZShjcHAvY3BwLnByaSkKIAogSEVBREVSUyArPSB1aWMuaApkaWZmIC0tZ2l0 IGEvc3JjcGtncy9xdDUvZmlsZXMvdWljL3VpYy5wcm8gYi9zcmNwa2dzL3F0NS9maWxlcy91aWMv dWljLnBybwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc4YjEyMzc1OWYuLjAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3VpYy91aWMucHJvCisrKyAvZGV2L251bGwK QEAgLTEsMTEgKzAsMCBAQAotREVGSU5FUyArPSBRVF9VSUMKLQotaW5jbHVkZSh1aWMucHJpKQot aW5jbHVkZShjcHAvY3BwLnByaSkKLQotSEVBREVSUyArPSB1aWMuaAotCi1TT1VSQ0VTICs9IG1h aW4uY3BwIFwKLSAgICAgICAgICAgdWljLmNwcAotCi1sb2FkKHF0X3Rvb2wpCmRpZmYgLS1naXQg YS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDEtRml4LWNvbmZsaWN0LWJldHdlZW4tbXVzbC1saWJj LWRpcmVudC5oLWFuZC1sc3MucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDEtRml4LWNv bmZsaWN0LWJldHdlZW4tbXVzbC1saWJjLWRpcmVudC5oLWFuZC1sc3MucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMjNhMjJmNDUwLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNw a2dzL3F0NS9wYXRjaGVzLzAwMDEtRml4LWNvbmZsaWN0LWJldHdlZW4tbXVzbC1saWJjLWRpcmVu dC5oLWFuZC1sc3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDFh YzI4MmFkM2E4NTkwNzdjYmZmOGJmNDc3M2RiOWJiNWI2YTViYmQgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiBGZWxpeCBKYW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgotRGF0ZTog U3VuLCAxIEZlYiAyMDE1IDEzOjQxOjA4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS82XSBGaXgg Y29uZmxpY3QgYmV0d2VlbiBtdXNsIGxpYmMgPGRpcmVudC5oPiBhbmQgbHNzCi0KLUluY2x1ZGUg PGRpcmVudC5oPiBsYXRlIHRvIGF2b2lkIHRoZSBtYWNybyBnZXRkZW50czY0IGluIG11c2wKLWxp YmMncyA8ZGlyZW50Lmg+IHRvIGNvbmZsaWN0IHdpdGggbGludXhfc3ljYWxsX3N1cHBvcnQuaC4K LS0tLQotIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2NyYXNoX2dlbmVyYXRpb24vY3Jhc2hfZ2Vu ZXJhdGlvbl9zZXJ2ZXIuY2MgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jbGllbnQvbGludXgvY3Jhc2hf Z2VuZXJhdGlvbi9jcmFzaF9nZW5lcmF0aW9uX3NlcnZlci5jYyBiL3NyYy9jbGllbnQvbGludXgv Y3Jhc2hfZ2VuZXJhdGlvbi9jcmFzaF9nZW5lcmF0aW9uX3NlcnZlci5jYwotaW5kZXggODYwZThi Yy4uZjBhYTgwMSAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9jcmFzaF9nZW5l cmF0aW9uL2NyYXNoX2dlbmVyYXRpb25fc2VydmVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvY3Jhc2hfZ2VuZXJhdGlvbi9jcmFzaF9nZW5lcmF0aW9uX3NlcnZlci5jYwotQEAgLTI4 LDcgKzI4LDYgQEAKLSAvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotIAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLS0j aW5jbHVkZSA8ZGlyZW50Lmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGxpbWl0 cy5oPgotICNpbmNsdWRlIDxwb2xsLmg+Ci1AQCAtNDksNiArNDgsOCBAQAotICNpbmNsdWRlICJj b21tb24vbGludXgvZ3VpZF9jcmVhdG9yLmgiCi0gI2luY2x1ZGUgImNvbW1vbi9saW51eC9zYWZl X3JlYWRsaW5rLmgiCi0gCi0rI2luY2x1ZGUgPGRpcmVudC5oPgotKwotIHN0YXRpYyBjb25zdCBj aGFyIGtDb21tYW5kUXVpdCA9ICd4JzsKLSAKLSBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkIHsK LS0tIAotMi4wLjUKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA0LW11c2wt ZGlzcGF0Y2gtdG8tbXVzbC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwNC1tdXNsLWRp c3BhdGNoLXRvLW11c2wucGF0Y2gKaW5kZXggODZlMDlkNWNmZDMuLmRlMzJhM2RhYjk1IDEwMDY0 NAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDQtbXVzbC1kaXNwYXRjaC10by1tdXNsLnBh dGNoCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwNC1tdXNsLWRpc3BhdGNoLXRvLW11c2wu cGF0Y2gKQEAgLTEsNSArMSw1IEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL2Jhc2UvYWxsb2NhdG9yL2FsbG9jYXRvcl9zaGltX2RlZmF1bHRfZGlzcGF0Y2hfdG9fZ2xp YmMuY2MJMjAxNy0wOS0xOSAxODoxNToxNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvYWxsb2NhdG9yX3NoaW1fZGVm YXVsdF9kaXNwYXRjaF90b19nbGliYy5jYwkyMDE3LTEwLTA5IDE5OjM1OjExLjc2MjM4NDgwOSAr MDIwMAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRv ci9hbGxvY2F0b3Jfc2hpbV9kZWZhdWx0X2Rpc3BhdGNoX3RvX2dsaWJjLmNjCistLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL2FsbG9jYXRvcl9zaGlt X2RlZmF1bHRfZGlzcGF0Y2hfdG9fZ2xpYmMuY2MKIEBAIC02LDYgKzYsNyBAQAogIAogICNpbmNs dWRlIDxtYWxsb2MuaD4KQEAgLTgsOCArOCw4IEBACiAgLy8gVGhpcyB0cmFuc2xhdGlvbiB1bml0 IGRlZmluZXMgYSBkZWZhdWx0IGRpc3BhdGNoIGZvciB0aGUgYWxsb2NhdG9yIHNoaW0gd2hpY2gK ICAvLyByb3V0ZXMgYWxsb2NhdGlvbnMgdG8gbGliYyBmdW5jdGlvbnMuCiAgLy8gVGhlIGNvZGUg aGVyZSBpcyBzdHJvbmdseSBpbnNwaXJlZCBmcm9tIHRjbWFsbG9jJ3MgbGliY19vdmVycmlkZV9n bGliYy5oLgotQEAgLTU5LDMgKzYwLDk4IEBACi0gICAgICZHbGliY0dldFNpemVFc3RpbWF0ZSwg LyogZ2V0X3NpemVfZXN0aW1hdGVfZnVuY3Rpb24gKi8KK0BAIC03MywzICs3NCw5MiBAQCBjb25z dCBBbGxvY2F0b3JEaXNwYXRjaCBBbGxvY2F0b3JEaXNwYXRjaDo6ZGVmYXVsdF9kaXNwYXRjaCA9 IHsKKyAgICAgbnVsbHB0ciwgICAgICAgICAgICAgICAvKiBmcmVlX2RlZmluaXRlX3NpemVfZnVu Y3Rpb24gKi8KICAgICAgbnVsbHB0ciwgICAgICAgICAgICAgICAvKiBuZXh0ICovCiAgfTsKICsK QEAgLTM3LDE4ICszNywxMiBAQAogKy8vIHJlc29sdmUgdGhlIHN5bWJvbHMgaW4gbGliYy5zbwog K3ZvaWQgbXVzbF9saWJjX21lbW9yeV9pbml0KHZvaWQpCiArewotKyAgdm9pZCogbGliYyA9IGRs b3BlbigibGliYyIsIFJUTERfTEFaWSk7Ci0rICBpZiAoIWxpYmMpCi0rICAgIGxpYmMgPSBkbG9w ZW4oImxpYmMuc28iLCBSVExEX0xBWlkpOwotKyAgaWYgKCFsaWJjKQotKyAgICBsaWJjID0gZGxv cGVuKCJsaWJjLnNvLjYiLCBSVExEX0xBWlkpOwotKyAgbGliY19tYWxsb2MgPSAodF9saWJjX21h bGxvYykgZGxzeW0obGliYywgIm1hbGxvYyIpOwotKyAgbGliY19jYWxsb2MgPSAodF9saWJjX2Nh bGxvYykgZGxzeW0obGliYywgImNhbGxvYyIpOwotKyAgbGliY19yZWFsbG9jID0gKHRfbGliY19y ZWFsbG9jKSBkbHN5bShsaWJjLCAicmVhbGxvYyIpOwotKyAgbGliY19tZW1hbGlnbiA9ICh0X2xp YmNfbWVtYWxpZ24pIGRsc3ltKGxpYmMsICJtZW1hbGlnbiIpOwotKyAgbGliY19mcmVlID0gKHRf bGliY19mcmVlKSBkbHN5bShsaWJjLCAiZnJlZSIpOwotKyAgbGliY19tYWxsb2NfdXNhYmxlX3Np emUgPSAodF9saWJjX21hbGxvY191c2FibGVfc2l6ZSkgZGxzeW0obGliYywgIm1hbGxvY191c2Fi bGVfc2l6ZSIpOwotKyAgZGxjbG9zZShsaWJjKTsKKysgIGxpYmNfbWFsbG9jID0gKHRfbGliY19t YWxsb2MpIGRsc3ltKFJUTERfTkVYVCwgIm1hbGxvYyIpOworKyAgbGliY19jYWxsb2MgPSAodF9s aWJjX2NhbGxvYykgZGxzeW0oUlRMRF9ORVhULCAiY2FsbG9jIik7CisrICBsaWJjX3JlYWxsb2Mg PSAodF9saWJjX3JlYWxsb2MpIGRsc3ltKFJUTERfTkVYVCwgInJlYWxsb2MiKTsKKysgIGxpYmNf bWVtYWxpZ24gPSAodF9saWJjX21lbWFsaWduKSBkbHN5bShSVExEX05FWFQsICJtZW1hbGlnbiIp OworKyAgbGliY19mcmVlID0gKHRfbGliY19mcmVlKSBkbHN5bShSVExEX05FWFQsICJmcmVlIik7 CisrICBsaWJjX21hbGxvY191c2FibGVfc2l6ZSA9ICh0X2xpYmNfbWFsbG9jX3VzYWJsZV9zaXpl KSBkbHN5bShSVExEX05FWFQsICJtYWxsb2NfdXNhYmxlX3NpemUiKTsKICt9CiArfSAgLy8gZXh0 ZXJuICJDIgogKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA2LXN5cy1zaWdu YWwuaC1pcy1hLW5vbnBvcnRhYmxlLWFsaWFzLWZvci1zaWduYWwuaC5wYXRjaCBiL3NyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDAwNi1zeXMtc2lnbmFsLmgtaXMtYS1ub25wb3J0YWJsZS1hbGlhcy1mb3It c2lnbmFsLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0OTFkNjQ0MGUx Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDYtc3lzLXNpZ25hbC5o LWlzLWEtbm9ucG9ydGFibGUtYWxpYXMtZm9yLXNpZ25hbC5oLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsODEgKzAsMCBAQAotRnJvbSA3ZTBhMmE3MmQxNmMxMTY5OTU1ODA1NGMwMWEyMDgyNTE3 ZjdkYWMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4 LmphbmRhQHBvc3Rlby5kZT4KLURhdGU6IFN1biwgMSBGZWIgMjAxNSAxNDo0MDo0MSArMDEwMAot U3ViamVjdDogW1BBVENIIDYvNl0gPHN5cy9zaWduYWwuaD4gaXMgYSBub25wb3J0YWJsZSBhbGlh cyBmb3IgPHNpZ25hbC5oPgotCi0tLS0KLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVy L2V4Y2VwdGlvbl9oYW5kbGVyLmNjIHwgIDIgKy0KLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9hbmRyb2lk L2luY2x1ZGUvc3lzL3NpZ25hbC5oICAgICAgIHwgMzUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCi0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jb21tb24vY29tbW9uLmd5cCAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAxIC0KLSAzIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzNyBkZWxldGlvbnMo LSkKLSBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2NvbW1vbi9hbmRyb2lkL2luY2x1ZGUvc3lzL3Np Z25hbC5oCi0KLWRpZmYgLS1naXQgYS9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9u X2hhbmRsZXIuY2MgYi9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIu Y2MKLWluZGV4IDNlMmQxOTYuLmNjM2IxZDMgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKLUBAIC03OCw3ICs3OCw3IEBACi0g I2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotLSNpbmNsdWRl IDxzeXMvc2lnbmFsLmg+Ci0rI2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRlIDxzeXMvdWNv bnRleHQuaD4KLSAjaW5jbHVkZSA8c3lzL3VzZXIuaD4KLSAjaW5jbHVkZSA8dWNvbnRleHQuaD4K LWRpZmYgLS1naXQgYS9zcmMvY29tbW9uL2FuZHJvaWQvaW5jbHVkZS9zeXMvc2lnbmFsLmggYi9z cmMvY29tbW9uL2FuZHJvaWQvaW5jbHVkZS9zeXMvc2lnbmFsLmgKLWRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMjBjODFlOS4uMDAwMDAwMAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2Fu ZHJvaWQvaW5jbHVkZS9zeXMvc2lnbmFsLmgKLSsrKyAvZGV2L251bGwKLUBAIC0xLDM1ICswLDAg QEAKLS0vLyBDb3B5cmlnaHQgKGMpIDIwMTIsIEdvb2dsZSBJbmMuCi0tLy8gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KLS0vLwotLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS0vLyBtZXQ6 Ci0tLy8KLS0vLyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLS8vIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS0vLyAgICAgKiBSZWRpc3RyaWJ1dGlv bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0tLy8gY29weXJpZ2h0 IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh aW1lcgotLS8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv dmlkZWQgd2l0aCB0aGUKLS0vLyBkaXN0cmlidXRpb24uCi0tLy8gICAgICogTmVpdGhlciB0aGUg bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotLS8vIGNvbnRyaWJ1dG9y cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t Ci0tLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz c2lvbi4KLS0vLwotLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLS0vLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLS8vIExJTUlURUQgVE8s IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP UgotLS8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT SEFMTCBUSEUgQ09QWVJJR0hUCi0tLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0tLy8gU1BFQ0lBTCwgRVhFTVBM QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotLS8vIExJ TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP U1MgT0YgVVNFLAotLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLS8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLS0vLyAoSU5DTFVE SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI RSBVU0UKLS0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLQotLSNpZm5kZWYgR09PR0xFX0JSRUFLUEFEX0NPTU1P Tl9BTkRST0lEX0lOQ0xVREVfU1lTX1NJR05BTF9ICi0tI2RlZmluZSBHT09HTEVfQlJFQUtQQURf Q09NTU9OX0FORFJPSURfSU5DTFVERV9TWVNfU0lHTkFMX0gKLS0KLS0jaW5jbHVkZSA8c2lnbmFs Lmg+Ci0tCi0tI2VuZGlmICAvLyBHT09HTEVfQlJFQUtQQURfQ09NTU9OX0FORFJPSURfSU5DTFVE RV9TWVNfU0lHTkFMX0gKLWRpZmYgLS1naXQgYS9zcmMvY29tbW9uL2NvbW1vbi5neXAgYi9zcmMv Y29tbW9uL2NvbW1vbi5neXAKLWluZGV4IGM0OWZmODUuLjFhNmIxYWUgMTAwNjQ0Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jb21tb24vY29tbW9uLmd5cAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2NvbW1vbi5n eXAKLUBAIC00Nyw3ICs0Nyw2IEBACi0gICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL2xpbmsuaCcs Ci0gICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL3NnaWRlZnMuaCcsCi0gICAgICAgICAnYW5kcm9p ZC9pbmNsdWRlL3N5cy9wcm9jZnMuaCcsCi0tICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL3N5cy9z aWduYWwuaCcsCi0gICAgICAgICAnYW5kcm9pZC9pbmNsdWRlL3N5cy91c2VyLmgnLAotICAgICAg ICAgJ2FuZHJvaWQvaW5jbHVkZS91Y29udGV4dC5oJywKLSAgICAgICAgICdhbmRyb2lkL3Rlc3Rp bmcvaW5jbHVkZS93Y2hhci5oJywKLS0tIAotMi4wLjUKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9x dDUvcGF0Y2hlcy8wMDA4LW11c2wtbm8tbWFsbGluZm8ucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRj aGVzLzAwMDgtbXVzbC1uby1tYWxsaW5mby5wYXRjaAppbmRleCA2N2NlMmNiM2Y3OS4uN2IzMDcx NzEzNmEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwOC1tdXNsLW5vLW1hbGxp bmZvLnBhdGNoCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwOC1tdXNsLW5vLW1hbGxpbmZv LnBhdGNoCkBAIC0yOSwxNCArMjksMyBAQAogICAgc3RydWN0IG1hbGxpbmZvIG1pbmZvID0gbWFs bGluZm8oKTsKICAjaWYgZGVmaW5lZChVU0VfVENNQUxMT0MpCiAgICByZXR1cm4gbWluZm8udW9y ZGJsa3M7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbnRlbnQvY2hp bGQvY29udGVudF9jaGlsZF9oZWxwZXJzLmNjCTIwMTctMTEtMjggMTQ6MDY6NTMuMDAwMDAwMDAw ICswMTAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbnRlbnQvY2hp bGQvY29udGVudF9jaGlsZF9oZWxwZXJzLmNjCTIwMTgtMDEtMjggMDY6MjM6MTQuODkxMjM4NTA3 ICswMTAwCi1AQCAtMjUsNyArMjUsNyBAQAotIC8vIHRob3VnaCwgdGhpcyBwcm92aWRlcyBvbmx5 IGEgcGFydGlhbCBhbmQgbWlzbGVhZGluZyB2YWx1ZS4KLSAvLyBVbmZvcnR1bmF0ZWx5IHNvbWUg dGVsZW1ldHJ5IGJlbmNobWFyayByZWx5IG9uIGl0IGFuZCB0aGVzZSBuZWVkIHRvCi0gLy8gYmUg cmVmYWN0b3JlZCBiZWZvcmUgZ2V0dGluZyByaWQgb2YgdGhpcy4gU2VlIGNyYnVnLmNvbS81ODEz NjUgLgotLSNpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpCi0rI2lm IGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpCi0gc2l6ZV90IEdldE1l bW9yeVVzYWdlS0IoKSB7Ci0gICBzdHJ1Y3QgbWFsbGluZm8gbWluZm8gPSBtYWxsaW5mbygpOwot ICAgdWludDY0X3QgbWVtX3VzYWdlID0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMv MDAxMy1tdXNsLXNlcmlhbGlvLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDEzLW11c2wt c2VyaWFsaW8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmMGUwZmE3Njhm Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTMtbXVzbC1zZXJpYWxp by5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vZGV2aWNlL3NlcmlhbC9zZXJpYWxfaW9faGFuZGxlcl9wb3Np eC5jYwkyMDE3LTAxLTAzIDEwOjI4OjUzLjAwMDAwMDAwMCArMDEwMAotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9kZXZpY2Uvc2VyaWFsL3NlcmlhbF9pb19oYW5kbGVyX3Bv c2l4LmNjCTIwMTctMDItMjMgMjE6MjA6NDIuNjUwNjY5NTYzICswMTAwCi1AQCAtMTIsNiArMTIs OSBAQAotIAotICNpZiBkZWZpbmVkKE9TX0xJTlVYKQotICNpbmNsdWRlIDxsaW51eC9zZXJpYWwu aD4KLSsjaWYgIWRlZmluZWQoX19HTElCQ19fKQotKyNpbmNsdWRlIDxhc20tZ2VuZXJpYy9pb2N0 bHMuaD4KLSsjZW5kaWYKLSAKLSAvLyBUaGUgZGVmaW5pdGlvbiBvZiBzdHJ1Y3QgdGVybWlvczIg aXMgY29waWVkIGZyb20gYXNtLWdlbmVyaWMvdGVybWJpdHMuaAotIC8vIGJlY2F1c2UgaW5jbHVk aW5nIHRoYXQgaGVhZGVyIGRpcmVjdGx5IGNvbmZsaWN0cyB3aXRoIHRlcm1pb3MuaC4KZGlmZiAt LWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxNy1tdXNsLXN0YWNrc3RhcnQucGF0Y2ggYi9z cmNwa2dzL3F0NS9wYXRjaGVzLzAwMTctbXVzbC1zdGFja3N0YXJ0LnBhdGNoCmluZGV4IGQ4ZGQx YWE5MGY2Li41NzEzNmJjMmJjZCAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDE3 LW11c2wtc3RhY2tzdGFydC5wYXRjaAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTctbXVz bC1zdGFja3N0YXJ0LnBhdGNoCkBAIC0xLDUgKzEsNSBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL3BsYXRmb3JtL3d0Zi9T dGFja1V0aWwuY3BwCTIwMTgtMDEtMjcgMjM6MDg6NDMuNTg2NDc1MzQ5ICswMTAwCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2Uv cGxhdGZvcm0vd3RmL1N0YWNrVXRpbC5jcHAJMjAxOC0wMS0yNyAyMzoxODoyMi4yNzQ1MDUyMDMg KzAxMDAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL3N0YWNrX3V0aWwuY2MJMjAxOC0wMS0yNyAyMzow ODo0My41ODY0NzUzNDkgKzAxMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL3N0YWNrX3V0aWwuY2MJ MjAxOC0wMS0yNyAyMzoxODoyMi4yNzQ1MDUyMDMgKzAxMDAKIEBAIC0yOCw3ICsyOCw3IEBACiAg Ly8gRklYTUU6IE9uIE1hYyBPU1ggYW5kIExpbnV4LCB0aGlzIG1ldGhvZCBjYW5ub3QgZXN0aW1h dGUgc3RhY2sgc2l6ZQogIC8vIGNvcnJlY3RseSBmb3IgdGhlIG1haW4gdGhyZWFkLgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDIxLWNocm9taXVtLW1vam8tZ2NjOC5wYXRjaCBi L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyMS1jaHJvbWl1bS1tb2pvLWdjYzgucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNGYzYTk3OWIyLi4wMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL3F0NS9wYXRjaGVzLzAwMjEtY2hyb21pdW0tbW9qby1nY2M4LnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMTggKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9tb2pvL3B1YmxpYy9jL3N5c3RlbS9tYWNyb3MuaAkyMDE4LTA1LTE1IDE0OjU4OjQ2LjQ0 ODkxMjYzNCAtMDQwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tb2pv L3B1YmxpYy9jL3N5c3RlbS9tYWNyb3MuaAkyMDE4LTA1LTE1IDE0OjU4OjUyLjA0MTc4NDYxMyAt MDQwMAotQEAgLTE4LDcgKzE4LDEzIEBACi0gI2VuZGlmCi0gCi0gLy8gTGlrZSB0aGUgQysrMTEg fGFsaWdub2Z8IG9wZXJhdG9yLgotLSNpZiBfX2NwbHVzcGx1cyA+PSAyMDExMDNMCi0rI2lmIGRl ZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID49IDgKLSsvLyBHQ0MgOCBoYXMgY2hhbmdlZCB0 aGUgYWxpZ25vZiBvcGVyYXRvciB0byByZXR1cm4gdGhlIG1pbmltYWwgYWxpZ25tZW50Ci0rLy8g cmVxdWlyZWQgYnkgdGhlIHRhcmdldCBBQkksIGluc3RlYWQgb2YgdGhlIHByZWZlcnJlZCBhbGln bm1lbnQuCi0rLy8gVGhpcyBtZWFucyB0aGF0IG9uIDMyLWJpdCB4ODYsIGl0IHdpbGwgcmV0dXJu IDQgaW5zdGVhZCBvZiA4LgotKy8vIFVzZSBfX2FsaWdub2ZfXyBpbnN0ZWFkIHRvIGF2b2lkIHRo aXMuCi0rI2RlZmluZSBNT0pPX0FMSUdOT0YodHlwZSkgX19hbGlnbm9mX18odHlwZSkKLSsjZWxp ZiBfX2NwbHVzcGx1cyA+PSAyMDExMDNMCi0gI2RlZmluZSBNT0pPX0FMSUdOT0YodHlwZSkgYWxp Z25vZih0eXBlKQotICNlbGlmIGRlZmluZWQoX19HTlVDX18pCi0gI2RlZmluZSBNT0pPX0FMSUdO T0YodHlwZSkgX19hbGlnbm9mX18odHlwZSkKLWdlbmVyYXRlZCBieSBjZ2l0IHYxLjEgYXQgMjAx OC0wNS0yOCAxNzozODo0MSArMDAwMApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8w MDIyLWxpYnJlc3NsLWNvbXBhdC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyMi1saWJy ZXNzbC1jb21wYXQucGF0Y2gKaW5kZXggMjc3Y2M2MDg1OGYuLjRlNWY2OTdkNzJjIDEwMDY0NAot LS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjItbGlicmVzc2wtY29tcGF0LnBhdGNoCisrKyBi L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyMi1saWJyZXNzbC1jb21wYXQucGF0Y2gKQEAgLTEsMTUg KzEsMyBAQAotLS0tIHF0YmFzZS9jb25maWcudGVzdHMvdW5peC9vcGVuc3NsMTEvb3BlbnNzbC5j cHAJMjAxNy0xMS0wNSAxNjowNzo0MC45NjMzODUwNzAgLTA1MDAKLSsrKyBxdGJhc2UvY29uZmln LnRlc3RzL3VuaXgvb3BlbnNzbDExL29wZW5zc2wuY3BwCTIwMTctMTEtMDUgMTY6MDc6NTEuNzU1 MjU1NTQ1IC0wNTAwCi1AQCAtMzksNyArMzksNyBAQAotIAotICNpbmNsdWRlIDxvcGVuc3NsL29w ZW5zc2x2Lmg+Ci0gCi0tI2lmICFkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIpIHx8IE9Q RU5TU0xfVkVSU0lPTl9OVU1CRVItMCA8IDB4MTAxMDAwMDBMCi0rI2lmICFkZWZpbmVkKE9QRU5T U0xfVkVSU0lPTl9OVU1CRVIpIHx8IE9QRU5TU0xfVkVSU0lPTl9OVU1CRVItMCA8IDB4MTAxMDAw MDBMIHx8IGRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpCi0gIyAgZXJyb3IgIk9wZW5T U0wgPj0gMS4xIGlzIHJlcXVpcmVkIgotICNlbmRpZgotIAotCiBkaWZmIC0tZ2l0IGEvc3JjL25l dHdvcmsvc3NsL3Fzc2xjb250ZXh0X29wZW5zc2wuY3BwIGIvc3JjL25ldHdvcmsvc3NsL3Fzc2xj b250ZXh0X29wZW5zc2wuY3BwCiBpbmRleCA0MWI3NTkzNjRiLi4xN2NlNWI0YjMwIDEwMDY0NAog LS0tIHF0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAKQEAgLTMx LDEwICsxOSwxMCBAQCBpbmRleCA4MmZmNWU5ZTNhLi43N2U1ZDAzYjdkIDEwMDY0NAogQEAgLTQw Miw3ICs0MDIsNyBAQCBERUZJTkVGVU5DMihpbnQsIFNTTF9DVFhfdXNlX1ByaXZhdGVLZXksIFNT TF9DVFggKmEsIGEsIEVWUF9QS0VZICpiLCBiLCByZXR1cm4gLQogIERFRklORUZVTkMyKGludCwg U1NMX0NUWF91c2VfUlNBUHJpdmF0ZUtleSwgU1NMX0NUWCAqYSwgYSwgUlNBICpiLCBiLCByZXR1 cm4gLTEsIHJldHVybikKICBERUZJTkVGVU5DMyhpbnQsIFNTTF9DVFhfdXNlX1ByaXZhdGVLZXlf ZmlsZSwgU1NMX0NUWCAqYSwgYSwgY29uc3QgY2hhciAqYiwgYiwgaW50IGMsIGMsIHJldHVybiAt MSwgcmV0dXJuKQotIERFRklORUZVTkMoWDUwOV9TVE9SRSAqLCBTU0xfQ1RYX2dldF9jZXJ0X3N0 b3JlLCBjb25zdCBTU0xfQ1RYICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMo WDUwOV9TVE9SRSAqLCBTU0xfQ1RYX2dldF9jZXJ0X3N0b3JlLCBjb25zdCBTU0xfQ1RYICphLCBh LCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQogLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49 IDB4MTAwMDIwMDBMCiArI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMjAwMEwg JiYgIWRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpCi0gREVGSU5FRlVOQyhTU0xfQ09O Rl9DVFggKiwgU1NMX0NPTkZfQ1RYX25ldywgRFVNTVlBUkcsIERVTU1ZQVJHLCByZXR1cm4gMCwg cmV0dXJuKTsKKyBERUZJTkVGVU5DKFNTTF9DT05GX0NUWCAqLCBTU0xfQ09ORl9DVFhfbmV3LCBE VU1NWUFSRywgRFVNTVlBUkcsIHJldHVybiBudWxscHRyLCByZXR1cm4pOwogIERFRklORUZVTkMo dm9pZCwgU1NMX0NPTkZfQ1RYX2ZyZWUsIFNTTF9DT05GX0NUWCAqYSwgYSwgcmV0dXJuICxyZXR1 cm4pOwogIERFRklORUZVTkMyKHZvaWQsIFNTTF9DT05GX0NUWF9zZXRfc3NsX2N0eCwgU1NMX0NP TkZfQ1RYICphLCBhLCBTU0xfQ1RYICpiLCBiLCByZXR1cm4sIHJldHVybik7CiBkaWZmIC0tZ2l0 IGEvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaCBiL3NyYy9u ZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9sc19wLmgKQEAgLTUwLDMgKzM4LDE0 IEBAIGluZGV4IDRmYjhmMjZjZjYuLjNhN2RlOTMxMTMgMTAwNjQ0CiAgU1NMX0NPTkZfQ1RYICpx X1NTTF9DT05GX0NUWF9uZXcoKTsKICB2b2lkIHFfU1NMX0NPTkZfQ1RYX2ZyZWUoU1NMX0NPTkZf Q1RYICphKTsKICB2b2lkIHFfU1NMX0NPTkZfQ1RYX3NldF9zc2xfY3R4KFNTTF9DT05GX0NUWCAq YSwgU1NMX0NUWCAqYik7CistLS0gcXRiYXNlL3NyYy9uZXR3b3JrL2NvbmZpZ3VyZS5qc29uCTIw MTktMDEtMjggMTg6MTE6NTIuMDAwMDAwMDAwICswMTAwCisrKysgLQkyMDE5LTAzLTExIDAwOjMx OjQyLjg4MzI2NDI0NiArMDEwMAorQEAgLTE2NSw3ICsxNjUsNyBAQAorICAgICAgICAgICAgICJ0 ZXN0IjogeworICAgICAgICAgICAgICAgICAiaW5jbHVkZSI6ICJvcGVuc3NsL29wZW5zc2x2Lmgi LAorICAgICAgICAgICAgICAgICAidGFpbCI6IFsKKy0gICAgICAgICAgICAgICAgICAgICIjaWYg IWRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX05VTUJFUikgfHwgT1BFTlNTTF9WRVJTSU9OX05VTUJF Ui0wIDwgMHgxMDEwMDAwMEwiLAorKyAgICAgICAgICAgICAgICAgICAgIiNpZiAhZGVmaW5lZChP UEVOU1NMX1ZFUlNJT05fTlVNQkVSKSB8fCBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSLTAgPCAweDEw MTAwMDAwTCB8fCBkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKSIsCisgICAgICAgICAg ICAgICAgICAgICAiIyAgZXJyb3IgT3BlblNTTCA+PSAxLjEgaXMgcmVxdWlyZWQiLAorICAgICAg ICAgICAgICAgICAgICAgIiNlbmRpZiIKKyAgICAgICAgICAgICAgICAgXQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDIzLWVuYWJsZV90b29scy1jcm9zcy5wYXRjaCBiL3NyY3Br Z3MvcXQ1L3BhdGNoZXMvMDAyMy1lbmFibGVfdG9vbHMtY3Jvc3MucGF0Y2gKaW5kZXggODEwOTJj NzdiNDEuLjllYWM0ZTcwZWZhIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjMt ZW5hYmxlX3Rvb2xzLWNyb3NzLnBhdGNoCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyMy1l bmFibGVfdG9vbHMtY3Jvc3MucGF0Y2gKQEAgLTEsMjggKzEsMzcgQEAKIC0tLSBxdHRvb2xzL3Ny Yy9zcmMucHJvCTIwMTgtMDYtMDkgMTM6MTA6MzguMDAwMDAwMDAwICswMjAwCiArKysgcXR0b29s cy9zcmMvc3JjLnBybwkyMDE4LTA4LTE5IDA5OjM0OjI5LjgwMzY3MDIwNSArMDIwMAotQEAgLTEs MTYgKzEsMTAgQEAKK0BAIC0xLDIwICsxLDE0IEBACiAgVEVNUExBVEUgPSBzdWJkaXJzCiAgCiAt cXRIYXZlTW9kdWxlKHdpZGdldHMpIHsKIC0gICAgbm8tcG5nIHsKIC0gICAgICAgIG1lc3NhZ2Uo IlNvbWUgZ3JhcGhpY3MtcmVsYXRlZCB0b29scyBhcmUgdW5hdmFpbGFibGUgd2l0aG91dCBQTkcg c3VwcG9ydCIpCiAtICAgIH0gZWxzZSB7Ci0tICAgICAgICBTVUJESVJTID0gYXNzaXN0YW50IFwK LS0gICAgICAgICAgICAgICAgICBwaXhlbHRvb2wgXAotLSAgICAgICAgICAgICAgICAgIGRlc2ln bmVyCi0rU1VCRElSUyA9IGFzc2lzdGFudCBcCi0rCXBpeGVsdG9vbCBcCi0rCWRlc2lnbmVyCi0g Ci0tICAgICAgICBsaW5ndWlzdC5kZXBlbmRzID0gZGVzaWduZXIKKy0gICAgICAgIFFUX0ZPUl9D T05GSUcgKz0gd2lkZ2V0cworLSAgICAgICAgcXRDb25maWcocHVzaGJ1dHRvbik6cXRDb25maWco dG9vbGJ1dHRvbikgeworLSAgICAgICAgICAgIFNVQkRJUlMgPSBhc3Npc3RhbnQgXAorLSAgICAg ICAgICAgICAgICAgICAgICBkZXNpZ25lciBcCistICAgICAgICAgICAgICAgICAgICAgIHBpeGVs dG9vbAorLQorLSAgICAgICAgICAgIGxpbmd1aXN0LmRlcGVuZHMgPSBkZXNpZ25lcgorLSAgICAg ICAgfQorLSAgICAgICAgcXRIYXZlTW9kdWxlKHF1aWNrKTpxdENvbmZpZyh0aHJlYWQpOnF0Q29u ZmlnKHRvb2xidXR0b24pOiBTVUJESVJTICs9IGRpc3RhbmNlZmllbGRnZW5lcmF0b3IKIC0gICAg fQogLX0KKytRVF9GT1JfQ09ORklHICs9IHdpZGdldHMKKysKKytTVUJESVJTID0gYXNzaXN0YW50 IFwKKysgICAgICAgICAgZGVzaWduZXIgXAorKyAgICAgICAgICBwaXhlbHRvb2wKKysKICtsaW5n dWlzdC5kZXBlbmRzID0gZGVzaWduZXIKKysKKytTVUJESVJTICs9IGRpc3RhbmNlZmllbGRnZW5l cmF0b3IKICAKICBTVUJESVJTICs9IGxpbmd1aXN0IFwKICAgICAgcXRhdHRyaWJ1dGlvbnNzY2Fu bmVyCi1AQCAtMzEsMTEgKzI1LDExIEBACi0gICAgIFNVQkRJUlMgKz0gYW5kcm9pZGRlcGxveXF0 CitAQCAtMzEsMTEgKzI1LDExIEBAIG1hY29zIHsKKyAgICAgU1VCRElSUyArPSBtYWNkZXBsb3lx dAogIH0KICAKIC1xdEhhdmVNb2R1bGUoZGJ1cyk6IFNVQkRJUlMgKz0gcWRidXMKQEAgLTMwLDgg KzM5LDggQEAKICAKICB3aW4zMnx3aW5ydDpTVUJESVJTICs9IHdpbmRlcGxveXF0CiAgd2lucnQ6 U1VCRElSUyArPSB3aW5ydHJ1bm5lcgotLXF0SGF2ZU1vZHVsZShndWkpOiFhbmRyb2lkOiF1aWtp dDohcW54OiF3aW5ydDogU1VCRElSUyArPSBxdGRpYWcKKy1xdEhhdmVNb2R1bGUoZ3VpKTohd2Fz bTohYW5kcm9pZDohdWlraXQ6IXFueDohd2lucnQ6IFNVQkRJUlMgKz0gcXRkaWFnCiArU1VCRElS UyArPSBxdGRpYWcKICAKICBxdE5vbWFrZVRvb2xzKCBcCi0gICAgIHBpeGVsdG9vbCBcCisgICAg IGRpc3RhbmNlZmllbGRnZW5lcmF0b3IgXApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDI3LXNraWFfY3B1LWJlLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI3LXNraWFf Y3B1LWJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzUyZjE5MGEzYi4u MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI3LXNraWFfY3B1LWJlLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvZ3B1L0dyVHlwZXMuaC5v cmlnCTIwMTgtMDktMTEgMTQ6Mzc6NTYuODMyODIyMDU1ICswMjAwCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9ncHUvR3JUeXBl cy5oCTIwMTgtMDktMTEgMTQ6Mzg6MTEuNDY0ODIxMTgzICswMjAwCi1AQCAtMzQ4LDkgKzM0OCw2 IEBACi0gc3RhdGljIGNvbnN0IGludCBrR3JQaXhlbENvbmZpZ0NudCA9IGtMYXN0X0dyUGl4ZWxD b25maWcgKyAxOwotIAotIC8vIEFsaWFzZXMgZm9yIHBpeGVsIGNvbmZpZ3MgdGhhdCBtYXRjaCBz a2lhJ3MgYnl0ZSBvcmRlci4KLS0jaWZuZGVmIFNLX0NQVV9MRU5ESUFOCi0tICAgICNlcnJvciAi U2tpYSBncHUgY3VycmVudGx5IGFzc3VtZXMgbGl0dGxlIGVuZGlhbiIKLS0jZW5kaWYKLSAjaWYg U0tfUE1DT0xPUl9CWVRFX09SREVSKEIsRyxSLEEpCi0gICAgIHN0YXRpYyBjb25zdCBHclBpeGVs Q29uZmlnIGtTa2lhODg4OF9HclBpeGVsQ29uZmlnID0ga0JHUkFfODg4OF9HclBpeGVsQ29uZmln OwotICNlbGlmIFNLX1BNQ09MT1JfQllURV9PUkRFUihSLEcsQixBKQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDI4LXdlYnJ0Yy1iZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDAyOC13ZWJydGMtYmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3 MWM2NWM5MjZiLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjgtd2Vi cnRjLWJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvdHlwZWRlZnMuaAky MDE4LTA2LTE1IDA5OjQ3OjIwLjAwMDAwMDAwMCArMDIwMAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvdHlwZWRlZnMuaAkyMDE4LTA5LTE0 IDE3OjUwOjQ1LjE5ODE1Mzk0MiArMDIwMAotQEAgLTQ3LDYgKzQ3LDkgQEAKLSAjZWxpZiBkZWZp bmVkKF9fcG5hY2xfXykKLSAjZGVmaW5lIFdFQlJUQ19BUkNIXzMyX0JJVFMKLSAjZGVmaW5lIFdF QlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KLSsjZWxpZiBkZWZpbmVkKF9fTUlQU0VCX18pCi0rI2Rl ZmluZSBXRUJSVENfQVJDSF9NSVBTX0ZBTUlMWQotKyNkZWZpbmUgV0VCUlRDX0FSQ0hfQklHX0VO RElBTgotICNlbHNlCi0gI2Vycm9yIFBsZWFzZSBhZGQgc3VwcG9ydCBmb3IgeW91ciBhcmNoaXRl Y3R1cmUgaW4gdHlwZWRlZnMuaAotICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0 Y2hlcy8wMDI5LW11c2wtbGliZXZlbnQucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjkt bXVzbC1saWJldmVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIyNjVi NjM5OTQuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyOS1tdXNsLWxp YmV2ZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9tZXNzYWdlX2xvb3AvbWVzc2FnZV9wdW1w X2xpYmV2ZW50LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uv bWVzc2FnZV9sb29wL21lc3NhZ2VfcHVtcF9saWJldmVudC5jYwotQEAgLTE0LDcgKzE0LDcgQEAK LSAjaW5jbHVkZSAiYmFzZS9maWxlcy9maWxlX3V0aWwuaCIKLSAjaW5jbHVkZSAiYmFzZS9sb2dn aW5nLmgiCi0gI2luY2x1ZGUgImJhc2UvcG9zaXgvZWludHJfd3JhcHBlci5oIgotLSNpbmNsdWRl ICJiYXNlL3RoaXJkX3BhcnR5L2xpYmV2ZW50L2V2ZW50LmgiCi0rI2luY2x1ZGUgImV2ZW50Lmgi Ci0gI2luY2x1ZGUgImJhc2UvdGltZS90aW1lLmgiCi0gI2luY2x1ZGUgImJhc2UvdHJhY2VfZXZl bnQvdHJhY2VfZXZlbnQuaCIKLSAjaW5jbHVkZSAiYnVpbGQvYnVpbGRfY29uZmlnLmgiCi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Rvb2xzL2duL2Jvb3RzdHJhcC9ib290 c3RyYXAucHkJMjAxOC0xMC0xOCAwMToyMDoxOS4yMjQxNjk3ODYgKzAyMDAKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdG9vbHMvZ24vYm9vdHN0cmFwL2Jvb3RzdHJhcC5w eQkyMDE4LTEwLTE4IDAxOjI2OjExLjI3MzE0ODgwMiArMDIwMAotQEAgLTMyLDYgKzMyLDcgQEAK LSAKLSBpc193aW4gPSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykKLSBpc19saW51eCA9 IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpCi0raXNfZ251X2xpbnV4ID0gaXNfbGlu dXggYW5kIHBsYXRmb3JtLmxpYmNfdmVyKClbMF0uc3RhcnRzd2l0aCgnZ2xpYmMnKQotIGlzX21h YyA9IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdkYXJ3aW4nKQotIGlzX2FpeCA9IHN5cy5wbGF0 Zm9ybS5zdGFydHN3aXRoKCdhaXgnKQotIGlzX3Bvc2l4ID0gaXNfbGludXggb3IgaXNfbWFjIG9y IGlzX2FpeAotQEAgLTE5Myw3ICsxOTMsNyBAQAotICAgICAgIHsnRU5BQkxFX01VVEVYX1BSSU9S SVRZX0lOSEVSSVRBTkNFJzogJ2ZhbHNlJ30pCi0gCi0gICB3cml0ZV9idWlsZGZsYWdfaGVhZGVy X21hbnVhbGx5KHJvb3RfZ2VuX2RpciwgJ2Jhc2UvYWxsb2NhdG9yL2ZlYXR1cmVzLmgnLAotLSAg ICAgIHsnVVNFX0FMTE9DQVRPUl9TSElNJzogJ3RydWUnIGlmIGlzX2xpbnV4IGVsc2UgJ2ZhbHNl J30pCi0rICAgICAgeydVU0VfQUxMT0NBVE9SX1NISU0nOiAndHJ1ZScgaWYgaXNfZ251X2xpbnV4 IGVsc2UgJ2ZhbHNlJ30pCi0gCi0gICB3cml0ZV9idWlsZGZsYWdfaGVhZGVyX21hbnVhbGx5KHJv b3RfZ2VuX2RpciwgJ2Jhc2UvZGVidWcvZGVidWdnaW5nX2ZsYWdzLmgnLAotICAgICAgIHsKLUBA IC00NTMsOCArNDUzLDYgQEAKLSAgICAgICAnYmFzZS90aGlyZF9wYXJ0eS9zdXBlcmZhc3RoYXNo L3N1cGVyZmFzdGhhc2guYycsCi0gICBdKQotICAgc3RhdGljX2xpYnJhcmllc1snYmFzZSddWydz b3VyY2VzJ10uZXh0ZW5kKFsKLS0gICAgICAnYmFzZS9hbGxvY2F0b3IvYWxsb2NhdG9yX2NoZWNr LmNjJywKLS0gICAgICAnYmFzZS9hbGxvY2F0b3IvYWxsb2NhdG9yX2V4dGVuc2lvbi5jYycsCi0g ICAgICAgJ2Jhc2UvYXRfZXhpdC5jYycsCi0gICAgICAgJ2Jhc2UvYmFzZV9wYXRocy5jYycsCi0g ICAgICAgJ2Jhc2UvYmFzZV9zd2l0Y2hlcy5jYycsCi1AQCAtNjI1LDYgKzYyMywxMSBAQAotICAg ICAgICdiYXNlL3ZhbHVlcy5jYycsCi0gICAgICAgJ2Jhc2UvdmxvZy5jYycsCi0gICBdKQotKyAg aWYgaXNfZ251X2xpbnV4OgotKyAgICBzdGF0aWNfbGlicmFyaWVzWydiYXNlJ11bJ3NvdXJjZXMn XS5leHRlbmQoWwotKyAgICAgICAgJ2Jhc2UvYWxsb2NhdG9yL2FsbG9jYXRvcl9jaGVjay5jYycs Ci0rICAgICAgICAnYmFzZS9hbGxvY2F0b3IvYWxsb2NhdG9yX2V4dGVuc2lvbi5jYycsCi0rICAg IF0pCi0gCi0gICBpZiBpc19wb3NpeDoKLSAgICAgc3RhdGljX2xpYnJhcmllc1snYmFzZSddWydz b3VyY2VzJ10uZXh0ZW5kKFsKLUBAIC02NjMsMjkgKzY2NiwzMSBAQAotICAgICAgICAgICAgICdi YXNlL3RpbWUvdGltZV9leHBsb2RlZF9wb3NpeC5jYycsCi0gICAgICAgICBdKQotIAotLSAgICBz dGF0aWNfbGlicmFyaWVzWydsaWJldmVudCddID0gewotLSAgICAgICAgJ3NvdXJjZXMnOiBbCi0t ICAgICAgICAgICAgJ2Jhc2UvdGhpcmRfcGFydHkvbGliZXZlbnQvYnVmZmVyLmMnLAotLSAgICAg ICAgICAgICdiYXNlL3RoaXJkX3BhcnR5L2xpYmV2ZW50L2V2YnVmZmVyLmMnLAotLSAgICAgICAg ICAgICdiYXNlL3RoaXJkX3BhcnR5L2xpYmV2ZW50L2V2ZG5zLmMnLAotLSAgICAgICAgICAgICdi YXNlL3RoaXJkX3BhcnR5L2xpYmV2ZW50L2V2ZW50LmMnLAotLSAgICAgICAgICAgICdiYXNlL3Ro aXJkX3BhcnR5L2xpYmV2ZW50L2V2ZW50X3RhZ2dpbmcuYycsCi0tICAgICAgICAgICAgJ2Jhc2Uv dGhpcmRfcGFydHkvbGliZXZlbnQvZXZycGMuYycsCi0tICAgICAgICAgICAgJ2Jhc2UvdGhpcmRf cGFydHkvbGliZXZlbnQvZXZ1dGlsLmMnLAotLSAgICAgICAgICAgICdiYXNlL3RoaXJkX3BhcnR5 L2xpYmV2ZW50L2h0dHAuYycsCi0tICAgICAgICAgICAgJ2Jhc2UvdGhpcmRfcGFydHkvbGliZXZl bnQvbG9nLmMnLAotLSAgICAgICAgICAgICdiYXNlL3RoaXJkX3BhcnR5L2xpYmV2ZW50L3BvbGwu YycsCi0tICAgICAgICAgICAgJ2Jhc2UvdGhpcmRfcGFydHkvbGliZXZlbnQvc2VsZWN0LmMnLAot LSAgICAgICAgICAgICdiYXNlL3RoaXJkX3BhcnR5L2xpYmV2ZW50L3NpZ25hbC5jJywKLS0gICAg ICAgICAgICAnYmFzZS90aGlyZF9wYXJ0eS9saWJldmVudC9zdHJsY3B5LmMnLAotLSAgICAgICAg XSwKLS0gICAgICAgICd0b29sJzogJ2NjJywKLS0gICAgICAgICdpbmNsdWRlX2RpcnMnOiBbXSwK LS0gICAgICAgICdjZmxhZ3MnOiBjZmxhZ3MgKyBbJy1ESEFWRV9DT05GSUdfSCddLAotLSAgICB9 Ci0rICAgIGlmIGlzX2dudV9saW51eDoKLSsgICAgICBzdGF0aWNfbGlicmFyaWVzWydsaWJldmVu dCddID0gewotKyAgICAgICAgICAnc291cmNlcyc6IFsKLSsgICAgICAgICAgICAgICdiYXNlL3Ro aXJkX3BhcnR5L2xpYmV2ZW50L2J1ZmZlci5jJywKLSsgICAgICAgICAgICAgICdiYXNlL3RoaXJk X3BhcnR5L2xpYmV2ZW50L2V2YnVmZmVyLmMnLAotKyAgICAgICAgICAgICAgJ2Jhc2UvdGhpcmRf cGFydHkvbGliZXZlbnQvZXZkbnMuYycsCi0rICAgICAgICAgICAgICAnYmFzZS90aGlyZF9wYXJ0 eS9saWJldmVudC9ldmVudC5jJywKLSsgICAgICAgICAgICAgICdiYXNlL3RoaXJkX3BhcnR5L2xp YmV2ZW50L2V2ZW50X3RhZ2dpbmcuYycsCi0rICAgICAgICAgICAgICAnYmFzZS90aGlyZF9wYXJ0 eS9saWJldmVudC9ldnJwYy5jJywKLSsgICAgICAgICAgICAgICdiYXNlL3RoaXJkX3BhcnR5L2xp YmV2ZW50L2V2dXRpbC5jJywKLSsgICAgICAgICAgICAgICdiYXNlL3RoaXJkX3BhcnR5L2xpYmV2 ZW50L2h0dHAuYycsCi0rICAgICAgICAgICAgICAnYmFzZS90aGlyZF9wYXJ0eS9saWJldmVudC9s b2cuYycsCi0rICAgICAgICAgICAgICAnYmFzZS90aGlyZF9wYXJ0eS9saWJldmVudC9wb2xsLmMn LAotKyAgICAgICAgICAgICAgJ2Jhc2UvdGhpcmRfcGFydHkvbGliZXZlbnQvc2VsZWN0LmMnLAot KyAgICAgICAgICAgICAgJ2Jhc2UvdGhpcmRfcGFydHkvbGliZXZlbnQvc2lnbmFsLmMnLAotKyAg ICAgICAgICAgICAgJ2Jhc2UvdGhpcmRfcGFydHkvbGliZXZlbnQvc3RybGNweS5jJywKLSsgICAg ICAgICAgXSwKLSsgICAgICAgICAgJ3Rvb2wnOiAnY2MnLAotKyAgICAgICAgICAnaW5jbHVkZV9k aXJzJzogW10sCi0rICAgICAgICAgICdjZmxhZ3MnOiBjZmxhZ3MgKyBbJy1ESEFWRV9DT05GSUdf SCddLAotKyAgICAgIH0KLSAKLSAgIGlmIGlzX2xpbnV4IG9yIGlzX2FpeDoKLSAgICAgbGRmbGFn cy5leHRlbmQoWyctcHRocmVhZCddKQotKyAgICBsZGZsYWdzLmV4dGVuZChbJy1sZXZlbnQnXSkK LSAKLSAgICAgc3RhdGljX2xpYnJhcmllc1sneGRnX3VzZXJfZGlycyddID0gewotICAgICAgICAg J3NvdXJjZXMnOiBbCi1AQCAtNzA5LDcgKzcxNCw3IEBACi0gICAgICAgICAnYmFzZS9zeXNfaW5m b19saW51eC5jYycsCi0gICAgICAgICAnYmFzZS90aHJlYWRpbmcvcGxhdGZvcm1fdGhyZWFkX2xp bnV4LmNjJywKLSAgICAgXSkKLS0gICAgaWYgaXNfbGludXg6Ci0rICAgIGlmIGlzX2dudV9saW51 eDoKLSAgICAgICBzdGF0aWNfbGlicmFyaWVzWydiYXNlJ11bJ3NvdXJjZXMnXS5leHRlbmQoWwot ICAgICAgICAgJ2Jhc2UvYWxsb2NhdG9yL2FsbG9jYXRvcl9zaGltLmNjJywKLSAgICAgICAgICdi YXNlL2FsbG9jYXRvci9hbGxvY2F0b3Jfc2hpbV9kZWZhdWx0X2Rpc3BhdGNoX3RvX2dsaWJjLmNj JywKLUBAIC03MjEsNyArNzI2LDcgQEAKLSAgICAgICBzdGF0aWNfbGlicmFyaWVzWydsaWJldmVu dCddWydzb3VyY2VzJ10uZXh0ZW5kKFsKLSAgICAgICAgICAnYmFzZS90aGlyZF9wYXJ0eS9saWJl dmVudC9lcG9sbC5jJywKLSAgICAgICBdKQotLSAgICBlbHNlOgotKyAgICBpZiBpc19haXg6Ci0g ICAgICAgbGlicy5leHRlbmQoWyctbHJ0J10pCi0gICAgICAgc3RhdGljX2xpYnJhcmllc1snYmFz ZSddWydzb3VyY2VzJ10uZXh0ZW5kKFsKLSAgICAgICAgICAgJ2Jhc2UvcHJvY2Vzcy9pbnRlcm5h bF9haXguY2MnCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMzMtcmV2ZXJ0X3Jl bW92ZV9vdXJfdXNlX29mX3N5c2NhbGxfZm9yLXN0YXR4LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0 Y2hlcy8wMDMzLXJldmVydF9yZW1vdmVfb3VyX3VzZV9vZl9zeXNjYWxsX2Zvci1zdGF0eC5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU3NzlhMDljZDAuLjAwMDAwMDAwMDAw Ci0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAzMy1yZXZlcnRfcmVtb3ZlX291cl91c2Vfb2Zf c3lzY2FsbF9mb3Itc3RhdHgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAot RGVzY3JpcHRpb246IHJldmVydCB1cHN0cmVhbSBjb21taXQgdGhhdCByZW1vdmVzIHVzZSBvZiBz eXNjYWxsKCkgYW5kIHN0YXR4KDIpCi0gVGhlIGNvbW1pdCBodHRwczovL2NvZGUucXQuaW8vY2dp dC9xdC9xdGJhc2UuZ2l0L2NvbW1pdC8/aWQ9Yjc4ODdmOWI0ZmFhZDIyMgotIHJlbW92ZXMgdGhl IHVzZSBvZiB0aGUgYWJvdmUgbWVudGlvbmVkIHN5c2NhbGxzLiBUaGlzIG1ha2VzIFF0IG5vdCBh YmxlCi0gdG8gcnVuIG9uIGN1cnJlbnQgc3RhYmxlIHNlcnZlcnMgdW5kZXIgYSB0ZXN0aW5nL3Vu c3RhYmxlIFZNLgotIC4KLSBUaGlzIHBhdGNoIHNob3VsZCBiZSByZW1vdmVkIGluIHRlc3Rpbmcv dW5zdGFibGUgYWZ0ZXIgQnVzdGVyIGdldHMgcmVsZWFzZWQuCi1BdXRob3I6IExpc2FuZHJvIERh bWnDoW4gTmljYW5vciBQw6lyZXogTWV5ZXIgPGxpc2FuZHJvQGRlYmlhbi5vcmc+Ci1Gb3J3YXJk ZWQ6IG5vdC1uZWVkZWQKLQotLS0tCi0gc3JjL2NvcmVsaWIvZ2xvYmFsL21pbmltdW0tbGludXhf cC5oICAgICAgfCAgICA3IC0tLS0KLSBzcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2luZV91 bml4LmNwcCB8ICAgNDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCi0gMiBmaWxlcyBj aGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi0tLS0gcXRiYXNlL3Ny Yy9jb3JlbGliL2dsb2JhbC9taW5pbXVtLWxpbnV4X3AuaAotKysrIHF0YmFzZS9zcmMvY29yZWxp Yi9nbG9iYWwvbWluaW11bS1saW51eF9wLmgKLUBAIC03NSwxNCArNzUsOSBAQCBRVF9CRUdJTl9O QU1FU1BBQ0UKLSAgKiAtIGFjY2VwdDQgICAgICAgICAgICAgICAgICAgIDIuNi4yOAotICAqIC0g cmVuYW1lYXQyICAgICAgICAgICAgICAgICAgMy4xNiAgICAgICAgICAgICAgICAgICAgUVRfQ09O RklHKHJlbmFtZWF0MikKLSAgKiAtIGdldHJhbmRvbSAgICAgICAgICAgICAgICAgIDMuMTcgICAg ICAgICAgICAgICAgICAgIFFUX0NPTkZJRyhnZXRlbnRyb3B5KQotLSAqIC0gc3RhdHggICAgICAg ICAgICAgICAgICAgICAgNC4xMSAgICAgICAgICAgICAgICAgICAgUVRfQ09ORklHKHN0YXR4KQot ICAqLwotIAotLSNpZiBRVF9DT05GSUcoc3RhdHgpCi0tIyAgZGVmaW5lIE1JTkxJTlVYX01BSk9S ICAgICAgICA0Ci0tIyAgZGVmaW5lIE1JTkxJTlVYX01JTk9SICAgICAgICAxMQotLSMgIGRlZmlu ZSBNSU5MSU5VWF9QQVRDSCAgICAgICAgMAotLSNlbGlmIFFUX0NPTkZJRyhnZXRlbnRyb3B5KQot KyNpZiBRVF9DT05GSUcoZ2V0ZW50cm9weSkKLSAjICBkZWZpbmUgTUlOTElOVVhfTUFKT1IgICAg ICAgIDMKLSAjICBkZWZpbmUgTUlOTElOVVhfTUlOT1IgICAgICAgIDE3Ci0gIyAgZGVmaW5lIE1J TkxJTlVYX1BBVENIICAgICAgICAwCi0tLS0gcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lz dGVtZW5naW5lX3VuaXguY3BwCi0rKysgcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVt ZW5naW5lX3VuaXguY3BwCi1AQCAtMSw2ICsxLDYgQEAKLSAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgot ICoqCi0tKiogQ29weXJpZ2h0IChDKSAyMDE4IEludGVsIENvcnBvcmF0aW9uLgotKyoqIENvcHly aWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbi4KLSAqKiBDb3B5cmlnaHQgKEMpIDIwMTYg VGhlIFF0IENvbXBhbnkgTHRkLgotICoqIENvcHlyaWdodCAoQykgMjAxMyBTYW11ZWwgR2Fpc3Qg PHNhbXVlbC5nYWlzdEBlZGVsdGVjaC5jaD4KLSAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5p by9saWNlbnNpbmcvCi1AQCAtODgsNiArODgsNyBAQCBleHRlcm4gIkMiIE5TU3RyaW5nICpOU1Rl bXBvcmFyeURpcmVjdG9yCi0gCi0gI2lmIGRlZmluZWQoUV9PU19MSU5VWCkKLSAjICBpbmNsdWRl IDxzeXMvaW9jdGwuaD4KLSsjICBpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgotICMgIGluY2x1ZGUg PHN5cy9zZW5kZmlsZS5oPgotICMgIGluY2x1ZGUgPGxpbnV4L2ZzLmg+Ci0gCi1AQCAtOTUsNiAr OTYsMjggQEAgZXh0ZXJuICJDIiBOU1N0cmluZyAqTlNUZW1wb3JhcnlEaXJlY3RvcgotICNpZm5k ZWYgRklDTE9ORQotICMgIGRlZmluZSBGSUNMT05FICAgICAgIF9JT1coMHg5NCwgOSwgaW50KQot ICNlbmRpZgotKwotKyMgIGlmIGRlZmluZWQoUV9PU19BTkRST0lEKQotKy8vIHJlbmFtZWF0Migp IGFuZCBzdGF0eCgpIGFyZSBkaXNhYmxlZCBvbiBBbmRyb2lkIGJlY2F1c2UgcXVpdGUgYSBmZXcg c3lzdGVtcwotKy8vIGNvbWUgd2l0aCBzYW5kYm94ZXMgdGhhdCBraWxsIGFwcGxpY2F0aW9ucyB0 aGF0IG1ha2Ugc3lzdGVtIGNhbGxzIG91dHNpZGUgYQotKy8vIHdoaXRlbGlzdCBhbmQgc2V2ZXJh bCBBbmRyb2lkIHZlbmRvcnMgY2FuJ3QgYmUgYm90aGVyZWQgdG8gdXBkYXRlIHRoZSBsaXN0Lgot KyMgICAgdW5kZWYgU1lTX3JlbmFtZWF0MgotKyMgICAgdW5kZWYgU1lTX3N0YXR4Ci0rIyAgICB1 bmRlZiBTVEFUWF9CQVNJQ19TVEFUUwotKyMgIGVsc2UKLSsjICAgIGlmICFRVF9DT05GSUcocmVu YW1lYXQyKSAmJiBkZWZpbmVkKFNZU19yZW5hbWVhdDIpCi0rc3RhdGljIGludCByZW5hbWVhdDIo aW50IG9sZGZkLCBjb25zdCBjaGFyICpvbGRwYXRoLCBpbnQgbmV3ZmQsIGNvbnN0IGNoYXIgKm5l d3BhdGgsIHVuc2lnbmVkIGZsYWdzKQotK3sgcmV0dXJuIHN5c2NhbGwoU1lTX3JlbmFtZWF0Miwg b2xkZmQsIG9sZHBhdGgsIG5ld2ZkLCBuZXdwYXRoLCBmbGFncyk7IH0KLSsjICAgIGVuZGlmCi0r Ci0rIyAgICBpZiAhUVRfQ09ORklHKHN0YXR4KSAmJiBkZWZpbmVkKFNZU19zdGF0eCkKLSsjICAg ICAgaW5jbHVkZSA8bGludXgvc3RhdC5oPgotK3N0YXRpYyBpbnQgc3RhdHgoaW50IGRpcmZkLCBj b25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWcsIHVuc2lnbmVkIG1hc2ssIHN0cnVjdCBzdGF0 eCAqc3RhdHhidWYpCi0reyByZXR1cm4gc3lzY2FsbChTWVNfc3RhdHgsIGRpcmZkLCBwYXRobmFt ZSwgZmxhZywgbWFzaywgc3RhdHhidWYpOyB9Ci0rIyAgICBlbGlmICFRVF9DT05GSUcoc3RhdHgp ICYmICFkZWZpbmVkKFNZU19zdGF0eCkKLSsjICAgICAgdW5kZWYgU1RBVFhfQkFTSUNfU1RBVFMK LSsjICAgIGVuZGlmCi0rIyAgZW5kaWYgLy8gIVFfT1NfQU5EUk9JRAotICNlbmRpZgotIAotICNp ZiBkZWZpbmVkKFFfT1NfQU5EUk9JRCkKLUBAIC0zMTUsOCArMzM4LDIyIEBAIG10aW1lKGNvbnN0 IFQgJnN0YXRCdWZmZXIsIGludCkKLSAjaWZkZWYgU1RBVFhfQkFTSUNfU1RBVFMKLSBzdGF0aWMg aW50IHF0X3JlYWxfc3RhdHgoaW50IGZkLCBjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWdz LCBzdHJ1Y3Qgc3RhdHggKnN0YXR4QnVmZmVyKQotIHsKLSsjaWZkZWYgUV9BVE9NSUNfSU5UOF9J U19TVVBQT1JURUQKLSsgICAgc3RhdGljIFFCYXNpY0F0b21pY0ludGVnZXI8cWludDg+IHN0YXR4 VGVzdGVkICA9IFFfQkFTSUNfQVRPTUlDX0lOSVRJQUxJWkVSKDApOwotKyNlbHNlCi0rICAgIHN0 YXRpYyBRQmFzaWNBdG9taWNJbnQgc3RhdHhUZXN0ZWQgPSBRX0JBU0lDX0FUT01JQ19JTklUSUFM SVpFUigwKTsKLSsjZW5kaWYKLSsKLSsgICAgaWYgKHN0YXR4VGVzdGVkLmxvYWQoKSA9PSAtMSkK LSsgICAgICAgIHJldHVybiAtRU5PU1lTOwotKwotICAgICB1bnNpZ25lZCBtYXNrID0gU1RBVFhf QkFTSUNfU1RBVFMgfCBTVEFUWF9CVElNRTsKLSAgICAgaW50IHJldCA9IHN0YXR4KGZkLCBwYXRo bmFtZSwgZmxhZ3MsIG1hc2ssIHN0YXR4QnVmZmVyKTsKLSsgICAgaWYgKHJldCA9PSAtMSAmJiBl cnJubyA9PSBFTk9TWVMpIHsKLSsgICAgICAgIHN0YXR4VGVzdGVkLnN0b3JlKC0xKTsKLSsgICAg ICAgIHJldHVybiAtRU5PU1lTOwotKyAgICB9Ci0rICAgIHN0YXR4VGVzdGVkLnN0b3JlKDEpOwot ICAgICByZXR1cm4gcmV0ID09IC0xID8gLWVycm5vIDogMDsKLSB9Ci0gCi1AQCAtMTI1MiwxMiAr MTI4OSwxNCBAQCBib29sIFFGaWxlU3lzdGVtRW5naW5lOjpyZW5hbWVGaWxlKGNvbnN0Ci0gICAg IGlmIChRX1VOTElLRUxZKHNyY1BhdGguaXNFbXB0eSgpIHx8IHRndFBhdGguaXNFbXB0eSgpKSkK LSAgICAgICAgIHJldHVybiBlbXB0eUZpbGVFbnRyeVdhcm5pbmcoKSwgZmFsc2U7Ci0gCi0tI2lm IGRlZmluZWQoUkVOQU1FX05PUkVQTEFDRSkgJiYgUVRfQ09ORklHKHJlbmFtZWF0MikKLSsjaWYg ZGVmaW5lZChSRU5BTUVfTk9SRVBMQUNFKSAmJiAoUVRfQ09ORklHKHJlbmFtZWF0MikgfHwgZGVm aW5lZChTWVNfcmVuYW1lYXQyKSkKLSAgICAgaWYgKHJlbmFtZWF0MihBVF9GRENXRCwgc3JjUGF0 aCwgQVRfRkRDV0QsIHRndFBhdGgsIFJFTkFNRV9OT1JFUExBQ0UpID09IDApCi0gICAgICAgICBy ZXR1cm4gdHJ1ZTsKLSAKLSsgICAgLy8gSWYgd2UncmUgdXNpbmcgc3lzY2FsbCgpLCBjaGVjayBm b3IgRU5PU1lTOwotKyAgICAvLyBpZiByZW5hbWVhdDIgY2FtZSBmcm9tIGxpYmMsIHdlIGRvbid0 IGFjY2VwdCBFTk9TWVMuCi0gICAgIC8vIFdlIGNhbiBhbHNvIGdldCBFSU5WQUwgZm9yIHNvbWUg bm9uLWxvY2FsIGZpbGVzeXN0ZW1zLgotLSAgICBpZiAoZXJybm8gIT0gRUlOVkFMKSB7Ci0rICAg IGlmICgoUVRfQ09ORklHKHJlbmFtZWF0MikgfHwgZXJybm8gIT0gRU5PU1lTKSAmJiBlcnJubyAh PSBFSU5WQUwpIHsKLSAgICAgICAgIGVycm9yID0gUVN5c3RlbUVycm9yKGVycm5vLCBRU3lzdGVt RXJyb3I6OlN0YW5kYXJkTGlicmFyeUVycm9yKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg ICAgfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDM0LWdjYy04LjMtYnVpbGQu cGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMzQtZ2NjLTguMy1idWlsZC5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjliNDVjMzEzOTYuLjAwMDAwMDAwMDAwCi0tLSBh L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAzNC1nY2MtOC4zLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMjM2ICswLDAgQEAKLUZyb20gOTdlYzFkMTg4MmE4M2MyM2M5MWYwZjdkYWVhNDhl MDU4NThkOGMzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRoaWFnbyBNYWNpZWly YSA8dGhpYWdvLm1hY2llaXJhQGludGVsLmNvbT4KLURhdGU6IE1vbiwgMjggSmFuIDIwMTkgMTQ6 MzM6MTIgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggR0NDIDguMwotCi1R dWFsaWZpZXJzIGluIHRoZSBhc20gc3RhdGVtZW50IGFyZSBub3QgYWxsb3dlZCBpbiB0aGUgZ2xv YmFsIHNjb3BlLiBJCi10aG91Z2h0IHRoZXkgd2VyZSBuZWNlc3NhcnkgZm9yIExUTywgYnV0IEkg dGhlIGNvbW1pdCB0byB0aGlzIGZpbGUgdGhhdAotYWRkZWQgdGhlbSBwcmVkYXRlcyBteSB3b3Jr IG9uIHNldHRpbmcgdXAgTFRPIGZvciBHQ0MuCi0KLUNoYW5nZS1JZDogSWQ5ODE0MGUxYzJmMDQy NmNhYmJlZmZmZDE1N2UyM2U1ZWNlNjdhNDkKLVJldmlld2VkLWJ5OiBBbGxhbiBTYW5kZmVsZCBK ZW5zZW4gPGFsbGFuLmplbnNlbkBxdC5pbz4KLS0tLQotIC4uLi9KYXZhU2NyaXB0Q29yZS9qaXQv SklUU3R1YnMuY3BwICAgICAgICAgICB8IDQ4ICsrKysrKysrKy0tLS0tLS0tLS0KLSAxIGZpbGUg Y2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQg YS9zcmMvM3JkcGFydHkvamF2YXNjcmlwdGNvcmUvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz LmNwcCBiL3NyYy8zcmRwYXJ0eS9qYXZhc2NyaXB0Y29yZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU U3R1YnMuY3BwCi1pbmRleCAxYWJkZjhiLi45ZjYwNzYxIDEwMDY0NAotLS0tIHF0c2NyaXB0L3Ny Yy8zcmRwYXJ0eS9qYXZhc2NyaXB0Y29yZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3Bw Ci0rKysgcXRzY3JpcHQvc3JjLzNyZHBhcnR5L2phdmFzY3JpcHRjb3JlL0phdmFTY3JpcHRDb3Jl L2ppdC9KSVRTdHVicy5jcHAKLUBAIC0xMTYsNyArMTE2LDcgQEAgQ09NUElMRV9BU1NFUlQob2Zm c2V0b2Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIHNhdmVkRUJYKSA9PSAweDNjLCBKSVRTdGFja0Zy YW1lX3MKLSBDT01QSUxFX0FTU0VSVChvZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2Fs bEZyYW1lKSA9PSAweDU4LCBKSVRTdGFja0ZyYW1lX2NhbGxGcmFtZV9vZmZzZXRfbWF0Y2hlc19j dGlUcmFtcG9saW5lKTsKLSBDT01QSUxFX0FTU0VSVChvZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tG cmFtZSwgY29kZSkgPT0gMHg1MCwgSklUU3RhY2tGcmFtZV9jb2RlX29mZnNldF9tYXRjaGVzX2N0 aVRyYW1wb2xpbmUpOwotIAotLWFzbSB2b2xhdGlsZSAoCi0rYXNtICgKLSAiLnRleHRcbiIKLSAi Lmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5lKSAiXG4iCi0gSElERV9TWU1CT0wo Y3RpVHJhbXBvbGluZSkgIlxuIgotQEAgLTEzOCw3ICsxMzgsNyBAQCBTWU1CT0xfU1RSSU5HKGN0 aVRyYW1wb2xpbmUpICI6IiAiXG4iCi0gICAgICJyZXQiICJcbiIKLSApOwotIAotLWFzbSB2b2xh dGlsZSAoCi0rYXNtICgKLSAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBv bGluZSkgIlxuIgotIEhJREVfU1lNQk9MKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiXG4iCi0gU1lN Qk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIjoiICJcbiIKLUBAIC0xNTQsNyArMTU0 LDcgQEAgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIjoiICJcbiIKLSAgICAg InJldCIgIlxuIgotICk7Ci0gICAgIAotLWFzbSB2b2xhdGlsZSAoCi0rYXNtICgKLSAiLmdsb2Js ICIgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCi0gSElERV9TWU1CT0wo Y3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgotIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENh dWdodCkgIjoiICJcbiIKLUBAIC0xNzksNyArMTc5LDcgQEAgQ09NUElMRV9BU1NFUlQob2Zmc2V0 b2Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIHNhdmVkUkJYKSA9PSAweDQ4LCBKSVRTdGFja0ZyYW1l X3MKLSBDT01QSUxFX0FTU0VSVChvZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY2FsbEZy YW1lKSA9PSAweDkwLCBKSVRTdGFja0ZyYW1lX2NhbGxGcmFtZV9vZmZzZXRfbWF0Y2hlc19jdGlU cmFtcG9saW5lKTsKLSBDT01QSUxFX0FTU0VSVChvZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tGcmFt ZSwgY29kZSkgPT0gMHg4MCwgSklUU3RhY2tGcmFtZV9jb2RlX29mZnNldF9tYXRjaGVzX2N0aVRy YW1wb2xpbmUpOwotIAotLWFzbSB2b2xhdGlsZSAoCi0rYXNtICgKLSAiLmdsb2JsICIgU1lNQk9M X1NUUklORyhjdGlUcmFtcG9saW5lKSAiXG4iCi0gSElERV9TWU1CT0woY3RpVHJhbXBvbGluZSkg IlxuIgotIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZSkgIjoiICJcbiIKLUBAIC0yMDYsNyAr MjA2LDcgQEAgU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5lKSAiOiIgIlxuIgotICAgICAicmV0 IiAiXG4iCi0gKTsKLSAKLS1hc20gdm9sYXRpbGUgKAotK2FzbSAoCi0gIi5nbG9ibCAiIFNZTUJP TF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICJcbiIKLSBISURFX1NZTUJPTChjdGlWTVRo cm93VHJhbXBvbGluZSkgIlxuIgotIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUp ICI6IiAiXG4iCi1AQCAtMjIyLDcgKzIyMiw3IEBAIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1Ry YW1wb2xpbmUpICI6IiAiXG4iCi0gICAgICJyZXQiICJcbiIKLSApOwotIAotLWFzbSB2b2xhdGls ZSAoCi0rYXNtICgKLSAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0 KSAiXG4iCi0gSElERV9TWU1CT0woY3RpT3BUaHJvd05vdENhdWdodCkgIlxuIgotIFNZTUJPTF9T VFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICJcbiIKLUBAIC0yNDIsNyArMjQyLDcgQEAg U1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiOiIgIlxuIgotICNlcnJvciAiSklU X1NUVUJfQVJHVU1FTlRfVkFfTElTVCBub3Qgc3VwcG9ydGVkIG9uIEFSTXY3LiIKLSAjZW5kaWYK LSAKLS1hc20gdm9sYXRpbGUgKAotK2FzbSAoCi0gIi50ZXh0IiAiXG4iCi0gIi5hbGlnbiAyIiAi XG4iCi0gIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZSkgIlxuIgotQEAgLTI2 OSw3ICsyNjksNyBAQCBTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmUpICI6IiAiXG4iCi0gICAg ICJieCBsciIgIlxuIgotICk7Ci0gCi0tYXNtIHZvbGF0aWxlICgKLSthc20gKAotICIudGV4dCIg IlxuIgotICIuYWxpZ24gMiIgIlxuIgotICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVZNVGhy b3dUcmFtcG9saW5lKSAiXG4iCi1AQCAtMjg3LDcgKzI4Nyw3IEBAIFNZTUJPTF9TVFJJTkcoY3Rp Vk1UaHJvd1RyYW1wb2xpbmUpICI6IiAiXG4iCi0gICAgICJieCBsciIgIlxuIgotICk7Ci0gCi0t YXNtIHZvbGF0aWxlICgKLSthc20gKAotICIudGV4dCIgIlxuIgotICIuYWxpZ24gMiIgIlxuIgot ICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKLUBAIC0z MDUsNyArMzA1LDcgQEAgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiOiIgIlxu IgotIAotICNlbGlmIENPTVBJTEVSKEdDQykgJiYgQ1BVKEFSTV9UUkFESVRJT05BTCkKLSAKLS1h c20gdm9sYXRpbGUgKAotK2FzbSAoCi0gIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBv bGluZSkgIlxuIgotIEhJREVfU1lNQk9MKGN0aVRyYW1wb2xpbmUpICJcbiIKLSBTWU1CT0xfU1RS SU5HKGN0aVRyYW1wb2xpbmUpICI6IiAiXG4iCi1AQCAtMzIzLDcgKzMyMyw3IEBAIFNZTUJPTF9T VFJJTkcoY3RpVHJhbXBvbGluZSkgIjoiICJcbiIKLSAgICAgIm1vdiBwYywgbHIiICJcbiIKLSAp OwotIAotLWFzbSB2b2xhdGlsZSAoCi0rYXNtICgKLSAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhj dGlWTVRocm93VHJhbXBvbGluZSkgIlxuIgotIEhJREVfU1lNQk9MKGN0aVZNVGhyb3dUcmFtcG9s aW5lKSAiXG4iCi0gU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIjoiICJcbiIK LUBAIC00MTgsNyArNDE4LDcgQEAgQ09NUElMRV9BU1NFUlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0 YWNrRnJhbWUsIGNhbGxGcmFtZSkgPT0gMHgzOCwgSklUU3RhY2tGcmFtZV8KLSBDT01QSUxFX0FT U0VSVChvZmZzZXRvZihzdHJ1Y3QgSklUU3RhY2tGcmFtZSwgY29kZSkgPT0gMHgzMCwgSklUU3Rh Y2tGcmFtZV9jb2RlX29mZnNldF9tYXRjaGVzX2N0aVRyYW1wb2xpbmUpOwotIENPTVBJTEVfQVNT RVJUKG9mZnNldG9mKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBzYXZlZEVCWCkgPT0gMHgxYywgSklU U3RhY2tGcmFtZV9zdHViX2FyZ3VtZW50X3NwYWNlX21hdGNoZXNfY3RpVHJhbXBvbGluZSk7Ci0g Ci0tYXNtIHZvbGF0aWxlICgKLSthc20gKAotICIudGV4dFxuIgotICIuZ2xvYmwgIiBTWU1CT0xf U1RSSU5HKGN0aVRyYW1wb2xpbmUpICJcbiIKLSBISURFX1NZTUJPTChjdGlUcmFtcG9saW5lKSAi XG4iCi1AQCAtNDQwLDcgKzQ0MCw3IEBAIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZSkgIjoi ICJcbiIKLSAgICAgInJldCIgIlxuIgotICk7Ci0gCi0tYXNtIHZvbGF0aWxlICgKLSthc20gKAot ICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiXG4iCi0gSElE RV9TWU1CT0woY3RpVk1UaHJvd1RyYW1wb2xpbmUpICJcbiIKLSBTWU1CT0xfU1RSSU5HKGN0aVZN VGhyb3dUcmFtcG9saW5lKSAiOiIgIlxuIgotQEAgLTQ1Niw3ICs0NTYsNyBAQCBTWU1CT0xfU1RS SU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiOiIgIlxuIgotICAgICAicmV0IiAiXG4iCi0gKTsK LSAgICAgCi0tYXNtIHZvbGF0aWxlICgKLSthc20gKAotICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5H KGN0aU9wVGhyb3dOb3RDYXVnaHQpICJcbiIKLSBISURFX1NZTUJPTChjdGlPcFRocm93Tm90Q2F1 Z2h0KSAiXG4iCi0gU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiOiIgIlxuIgot QEAgLTQ4MCw3ICs0ODAsNyBAQCBDT01QSUxFX0FTU0VSVChvZmZzZXRvZihzdHJ1Y3QgSklUU3Rh Y2tGcmFtZSwgY2FsbEZyYW1lKSA9PSAweDU4LCBKSVRTdGFja0ZyYW1lXwotIENPTVBJTEVfQVNT RVJUKG9mZnNldG9mKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCBjb2RlKSA9PSAweDQ4LCBKSVRTdGFj a0ZyYW1lX2NvZGVfb2Zmc2V0X21hdGNoZXNfY3RpVHJhbXBvbGluZSk7Ci0gQ09NUElMRV9BU1NF UlQob2Zmc2V0b2Yoc3RydWN0IEpJVFN0YWNrRnJhbWUsIHNhdmVkUkJYKSA9PSAweDc4LCBKSVRT dGFja0ZyYW1lX3N0dWJfYXJndW1lbnRfc3BhY2VfbWF0Y2hlc19jdGlUcmFtcG9saW5lKTsKLSAK LS1hc20gdm9sYXRpbGUgKAotK2FzbSAoCi0gIi50ZXh0XG4iCi0gIi5nbG9ibCAiIFNZTUJPTF9T VFJJTkcoY3RpVHJhbXBvbGluZSkgIlxuIgotIEhJREVfU1lNQk9MKGN0aVRyYW1wb2xpbmUpICJc biIKLUBAIC01MTUsNyArNTE1LDcgQEAgU1lNQk9MX1NUUklORyhjdGlUcmFtcG9saW5lKSAiOiIg IlxuIgotICAgICAicmV0IiAiXG4iCi0gKTsKLSAKLS1hc20gdm9sYXRpbGUgKAotK2FzbSAoCi0g Ii5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICJcbiIKLSBISURF X1NZTUJPTChjdGlWTVRocm93VHJhbXBvbGluZSkgIlxuIgotIFNZTUJPTF9TVFJJTkcoY3RpVk1U aHJvd1RyYW1wb2xpbmUpICI6IiAiXG4iCi1AQCAtNTMxLDcgKzUzMSw3IEBAIFNZTUJPTF9TVFJJ TkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICI6IiAiXG4iCi0gICAgICJyZXQiICJcbiIKLSApOwot IAotLWFzbSB2b2xhdGlsZSAoCi0rYXNtICgKLSAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlP cFRocm93Tm90Q2F1Z2h0KSAiXG4iCi0gSElERV9TWU1CT0woY3RpT3BUaHJvd05vdENhdWdodCkg IlxuIgotIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICJcbiIKLUBAIC01 NTEsNyArNTUxLDcgQEAgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90Q2F1Z2h0KSAiOiIgIlxu IgotICNlcnJvciAiSklUX1NUVUJfQVJHVU1FTlRfVkFfTElTVCBub3Qgc3VwcG9ydGVkIG9uIEFS TXY3LiIKLSAjZW5kaWYKLSAKLS1hc20gdm9sYXRpbGUgKAotK2FzbSAoCi0gIi50ZXh0IiAiXG4i Ci0gIi5hbGlnbiAyIiAiXG4iCi0gIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGlu ZSkgIlxuIgotQEAgLTU3OCw3ICs1NzgsNyBAQCBTWU1CT0xfU1RSSU5HKGN0aVRyYW1wb2xpbmUp ICI6IiAiXG4iCi0gICAgICJieCBsciIgIlxuIgotICk7Ci0gCi0tYXNtIHZvbGF0aWxlICgKLSth c20gKAotICIudGV4dCIgIlxuIgotICIuYWxpZ24gMiIgIlxuIgotICIuZ2xvYmwgIiBTWU1CT0xf U1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiXG4iCi1AQCAtNTk2LDcgKzU5Niw3IEBAIFNZ TUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmUpICI6IiAiXG4iCi0gICAgICJieCBsciIg IlxuIgotICk7Ci0gCi0tYXNtIHZvbGF0aWxlICgKLSthc20gKAotICIudGV4dCIgIlxuIgotICIu YWxpZ24gMiIgIlxuIgotICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVn aHQpICJcbiIKLUBAIC02MTQsNyArNjE0LDcgQEAgU1lNQk9MX1NUUklORyhjdGlPcFRocm93Tm90 Q2F1Z2h0KSAiOiIgIlxuIgotIAotICNlbGlmIENPTVBJTEVSKEdDQykgJiYgQ1BVKEFSTV9UUkFE SVRJT05BTCkKLSAKLS1hc20gdm9sYXRpbGUgKAotK2FzbSAoCi0gIi50ZXh0XG4iCi0gIi5nbG9i bCAiIFNZTUJPTF9TVFJJTkcoY3RpVHJhbXBvbGluZSkgIlxuIgotIEhJREVfU1lNQk9MKGN0aVRy YW1wb2xpbmUpICJcbiIKLUBAIC02MzIsNyArNjMyLDcgQEAgU1lNQk9MX1NUUklORyhjdGlUcmFt cG9saW5lKSAiOiIgIlxuIgotICAgICAibW92IHBjLCBsciIgIlxuIgotICk7Ci0gCi0tYXNtIHZv bGF0aWxlICgKLSthc20gKAotICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFt cG9saW5lKSAiXG4iCi0gSElERV9TWU1CT0woY3RpVk1UaHJvd1RyYW1wb2xpbmUpICJcbiIKLSBT WU1CT0xfU1RSSU5HKGN0aVZNVGhyb3dUcmFtcG9saW5lKSAiOiIgIlxuIgotQEAgLTEwMjQsNyAr MTAyNCw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgdm9pZCB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv cihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNHbG9iYWxECi0gICAgIGV4dGVybiAiQyIgeyBcCi0g ICAgICAgICBydHlwZSBKSVRTdHViVGh1bmtlZF8jI29wKFNUVUJfQVJHU19ERUNMQVJBVElPTik7 IFwKLSAgICAgfTsgXAotLSAgICBhc20gdm9sYXRpbGUgKCBcCi0rICAgIGFzbSAoIFwKLSAgICAg ICAgICIudGV4dCIgIlxuIiBcCi0gICAgICAgICAiLmFsaWduIDIiICJcbiIgXAotICAgICAgICAg Ii5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpXyMjb3ApICJcbiIgXAotQEAgLTEwNTMsNyArMTA1 Myw3IEBAIENPTVBJTEVfQVNTRVJUKG9mZnNldG9mKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCB0aHVu a1JldHVybkFkZHJlc3MpID09IFRIVU5LX1JFVFVSCi0gICAgIGV4dGVybiAiQyIgeyBcCi0gICAg ICAgICBydHlwZSBKSVRTdHViVGh1bmtlZF8jI29wKFNUVUJfQVJHU19ERUNMQVJBVElPTik7IFwK LSAgICAgfTsgXAotLSAgICBhc20gdm9sYXRpbGUgKCBcCi0rICAgIGFzbSAoIFwKLSAgICAgICAg ICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGN0aV8jI29wKSAiXG4iIFwKLSAgICAgICAgIEhJREVf U1lNQk9MKGN0aV8jI29wKSAiXG4iICAgICAgICAgICAgIFwKLSAgICAgICAgIFNZTUJPTF9TVFJJ TkcoY3RpXyMjb3ApICI6IiAiXG4iIFwKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDM1LWdjYy05LjEtYnVpbGQucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMzUtZ2Nj LTkuMS1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRkYTNkNGM3 MDguLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAzNS1nY2MtOS4xLWJ1 aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSAwZDg5ZGVhZDQz OTYxMjY2MDZmYjc5NTRjMGJiMGEyNzM0ZDIzNDdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot RnJvbTogQWxsYW4gU2FuZGZlbGQgSmVuc2VuIDxhbGxhbi5qZW5zZW5AcXQuaW8+Ci1EYXRlOiBU dWUsIDEzIE5vdiAyMDE4IDE2OjAwOjIzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBjb21w aWxlIGlzc3VlIHdpdGggZ2NjIDkKLQotSXQgYXBwZWFycyBtZXNzZW5uZV90d2lzdGVycyBpbiB0 aGUgbGF0ZXN0IGxpYnN0ZGMrKyBoYXMgb25lIG1vcmUKLXJlcXVpcmVtZW50IGJlZm9yZSBpdCBp cyB3aWxsaW5nIHRvIGNvbnN0cnVjdCB3aXRoIG91cgotU3lzdGVtR2VuZXJhdG9yIHN0cnVjdCBh cyBhbiBzc2VxIHByb3ZpZGVyLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNoYW5n ZS1JZDogSWYzODE1MWQxZmE2ZjQwYTgwMjc0YWNjMjZkOWVkNmI0YWM2MDQ5ZmUKLVJldmlld2Vk LWJ5OiBHaXVzZXBwZSBEJ0FuZ2VsbyA8Z2l1c2VwcGUuZGFuZ2Vsb0BrZGFiLmNvbT4KLVJldmll d2VkLWJ5OiBUaGlhZ28gTWFjaWVpcmEgPHRoaWFnby5tYWNpZWlyYUBpbnRlbC5jb20+Ci0tLS0K LQotIHF0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAgfCAxICsKLSAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3NyYy9jb3JlbGliL2dsb2Jh bC9xcmFuZG9tLmNwcCBiL3NyYy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcAotaW5kZXggZWJm OTg2NGIxNS4uNTc3NzM2YTg2NyAxMDA2NDQKLS0tLSBxdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFs L3FyYW5kb20uY3BwCi0rKysgcXRiYXNlL3NyYy9jb3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcAot QEAgLTIxOCw2ICsyMTgsNyBAQCBzdHJ1Y3QgUVJhbmRvbUdlbmVyYXRvcjo6U3lzdGVtR2VuZXJh dG9yCi0gI2VuZGlmIC8vIFFfT1NfV0lOUlQKLSAKLSAgICAgc3RhdGljIFN5c3RlbUdlbmVyYXRv ciAmc2VsZigpOwotKyAgICB0eXBlZGVmIHF1aW50MzIgcmVzdWx0X3R5cGU7Ci0gICAgIHZvaWQg Z2VuZXJhdGUocXVpbnQzMiAqYmVnaW4sIHF1aW50MzIgKmVuZCkgUV9ERUNMX05PRVhDRVBUX0VY UFIoRmlsbEJ1ZmZlck5vZXhjZXB0KTsKLSAKLSAgICAgLy8gRm9yIHN0ZDo6bWVyc2VubmVfdHdp c3Rlcl9lbmdpbmUgaW1wbGVtZW50YXRpb25zIHRoYXQgdXNlIHNvbWV0aGluZwotLS0gCi0yLjIw LjEKLQotCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDAteWFzbS1ubHMucGF0 Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDAteWFzbS1ubHMucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjIyYWMwNDIwNzY0Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQwLXlhc20tbmxzLnBhdGNoCkBAIC0wLDAgKzEsMTMg QEAKK2RpZmYgLS1naXQgc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3lhc20vc291 cmNlL2NvbmZpZy9saW51eC9jb25maWcuaCBzcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkveWFzbS9zb3VyY2UvY29uZmlnL2xpbnV4L2NvbmZpZy5oCitpbmRleCA5ZTM2NTM5Li5mNTg4 MDgzIDEwMDY0NAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vdGhpcmRf cGFydHkveWFzbS9zb3VyY2UvY29uZmlnL2xpbnV4L2NvbmZpZy5oCistLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtLy90aGlyZF9wYXJ0eS95YXNtL3NvdXJjZS9jb25maWcvbGlu dXgvY29uZmlnLmgKK0BAIC01LDcgKzUsNyBAQAorICNkZWZpbmUgQ1BQX1BST0cgImdjYyAtRSIK KyAKKyAvKiAqLworLSNkZWZpbmUgRU5BQkxFX05MUyAxCisrLyogI3VuZGVmIEVOQUJMRV9OTFMg MSAqLworIAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYWJvcnQnIGZ1bmN0aW9u LiAqLworICNkZWZpbmUgSEFWRV9BQk9SVCAxCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRj aGVzLzAwNDEtbGlicmVzc2wucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDEtbGlicmVz c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI4OWZkZGQw MWFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQxLWxpYnJlc3Ns LnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSBxdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xz b2NrZXRfb3BlbnNzbC5jcHAJMjAxOS0wNi0xMyAwNjoxODoxOC4wMDAwMDAwMDAgKzAyMDAKKysr KyAtCTIwMTktMDYtMTcgMTQ6NTk6MjIuNTAxNDYwODgyICswMjAwCitAQCAtNjA0LDcgKzYwNCw3 IEBACisgICAgICAgICAgICAgcV9TU0xfc2V0X3Bza19zZXJ2ZXJfY2FsbGJhY2soc3NsLCAmcV9z c2xfcHNrX3NlcnZlcl9jYWxsYmFjayk7CisgICAgIH0KKyAjZW5kaWYKKy0jaWYgT1BFTlNTTF9W RVJTSU9OX05VTUJFUiA+PSAweDEwMTAxMDA2TAorKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVS ID49IDB4MTAxMDEwMDZMICYmICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKQorICAg ICAvLyBTZXQgdGhlIGNsaWVudCBjYWxsYmFjayBmb3IgVExTdjEuMyBQU0sKKyAgICAgaWYgKG1v ZGUgPT0gUVNzbFNvY2tldDo6U3NsQ2xpZW50TW9kZQorICAgICAgICAgJiYgUVNzbFNvY2tldDo6 c3NsTGlicmFyeUJ1aWxkVmVyc2lvbk51bWJlcigpID49IDB4MTAxMDEwMDZMKSB7CmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDItYXJtLXZvaWQtaXMtbm90LWFuZHJvaWQucGF0 Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDItYXJtLXZvaWQtaXMtbm90LWFuZHJvaWQucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIxMzI5MGQzY2NkCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQyLWFybS12b2lkLWlzLW5v dC1hbmRyb2lkLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vL3RoaXJkX3BhcnR5L29wZW5tYXhfZGwvZGwvQlVJTEQuZ24JMjAxOS0w NC0wOSAwOTozMToxNi4wMDAwMDAwMDAgKzAyMDAKKysrKyAtCTIwMTktMDUtMDYgMjM6MDg6MDku NTM3MzQ2NTQ2ICswMjAwCitAQCAtMjA2LDE4ICsyMDYsNiBAQAorICAgICAgICJzcC9zcmMvYXJt L2FybXY3L29teFNQX0ZGVEZ3ZF9SVG9DQ1NfRjMyX1Nmc19zLlMiLAorICAgICAgICJzcC9zcmMv YXJtL2FybXY3L29teFNQX0ZGVEludl9DQ1NUb1JfRjMyX1Nmc19zLlMiLAorICAgICBdCistICAg IGlmIChhcm1fb3B0aW9uYWxseV91c2VfbmVvbikgeworLSAgICAgICMgUnVuLXRpbWUgTkVPTiBk ZXRlY3Rpb24uCistICAgICAgZGVwcyA9IFsKKy0gICAgICAgICIvL3RoaXJkX3BhcnR5L2FuZHJv aWRfdG9vbHM6Y3B1X2ZlYXR1cmVzIiwKKy0gICAgICBdCistCistICAgICAgIyBUbyBnZXQgdGhl IF9fYW5kcm9pZF9sb2dfcHJpbnQgcm91dGluZQorLSAgICAgIGxpYnMgPSBbICJsb2ciIF0KKy0K Ky0gICAgICAjIERldGVjdGlvbiByb3V0aW5lCistICAgICAgc291cmNlcyArPSBbICJzcC9zcmMv YXJtL2RldGVjdC5jIiBdCistICAgIH0KKyAgIH0KKyAKKyAgICMgTkVPTiBpbXBsZW1lbnRhdGlv biBvZiBGRlQuIFRoaXMgbGlicmFyeSBpcyBOT1QKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3Bh dGNoZXMvbGlicmVzc2wtY29uc3QtYmlvLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQz LWxpYnJlc3NsLWNvbnN0LWJpby5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDg0JQpyZW5hbWUgZnJv bSBzcmNwa2dzL3F0NS9wYXRjaGVzL2xpYnJlc3NsLWNvbnN0LWJpby5wYXRjaApyZW5hbWUgdG8g c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQzLWxpYnJlc3NsLWNvbnN0LWJpby5wYXRjaAppbmRleCBm MzQ5Mzg2MmNkNC4uZDNhMWZlOTZjNTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMv bGlicmVzc2wtY29uc3QtYmlvLnBhdGNoCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0My1s aWJyZXNzbC1jb25zdC1iaW8ucGF0Y2gKQEAgLTQsMTAgKzQsMTAgQEAKICAjZW5kaWYKICBERUZJ TkVGVU5DMihCSU8gKiwgQklPX25ld19maWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgZmlsZW5h bWUsIGNvbnN0IGNoYXIgKm1vZGUsIG1vZGUsIHJldHVybiAwLCByZXR1cm4pCiAgREVGSU5FRlVO Qyh2b2lkLCBFUlJfY2xlYXJfZXJyb3IsIERVTU1ZQVJHLCBEVU1NWUFSRywgcmV0dXJuLCBEVU1N WUFSRykKLS1ERUZJTkVGVU5DKEJJTyAqLCBCSU9fbmV3LCBCSU9fTUVUSE9EICphLCBhLCByZXR1 cm4gMCwgcmV0dXJuKQotLURFRklORUZVTkMoQklPX01FVEhPRCAqLCBCSU9fc19tZW0sIHZvaWQs IERVTU1ZQVJHLCByZXR1cm4gMCwgcmV0dXJuKQotK0RFRklORUZVTkMoQklPICosIEJJT19uZXcs IGNvbnN0IEJJT19NRVRIT0QgKmEsIGEsIHJldHVybiAwLCByZXR1cm4pCi0rREVGSU5FRlVOQyhj b25zdCBCSU9fTUVUSE9EICosIEJJT19zX21lbSwgdm9pZCwgRFVNTVlBUkcsIHJldHVybiAwLCBy ZXR1cm4pCistREVGSU5FRlVOQyhCSU8gKiwgQklPX25ldywgQklPX01FVEhPRCAqYSwgYSwgcmV0 dXJuIG51bGxwdHIsIHJldHVybikKKy1ERUZJTkVGVU5DKEJJT19NRVRIT0QgKiwgQklPX3NfbWVt LCB2b2lkLCBEVU1NWUFSRywgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKytERUZJTkVGVU5DKEJJ TyAqLCBCSU9fbmV3LCBjb25zdCBCSU9fTUVUSE9EICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0 dXJuKQorK0RFRklORUZVTkMoY29uc3QgQklPX01FVEhPRCAqLCBCSU9fc19tZW0sIHZvaWQsIERV TU1ZQVJHLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQogIERFRklORUZVTkMoaW50LCBDUllQVE9f bnVtX2xvY2tzLCBEVU1NWUFSRywgRFVNTVlBUkcsIHJldHVybiAwLCByZXR1cm4pCiAgREVGSU5F RlVOQyh2b2lkLCBDUllQVE9fc2V0X2xvY2tpbmdfY2FsbGJhY2ssIHZvaWQgKCphKShpbnQsIGlu dCwgY29uc3QgY2hhciAqLCBpbnQpLCBhLCByZXR1cm4sIERVTU1ZQVJHKQogIERFRklORUZVTkMo dm9pZCwgQ1JZUFRPX3NldF9pZF9jYWxsYmFjaywgdW5zaWduZWQgbG9uZyAoKmEpKCksIGEsIHJl dHVybiwgRFVNTVlBUkcpCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDUtbXVz bC1uby1leGVjaW5mby5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0NC1xdC1tdXNsLWV4 ZWNpbmZvLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggNTYlCnJlbmFtZSBmcm9tIHNyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDAwNS1tdXNsLW5vLWV4ZWNpbmZvLnBhdGNoCnJlbmFtZSB0byBzcmNwa2dzL3F0 NS9wYXRjaGVzLzAwNDQtcXQtbXVzbC1leGVjaW5mby5wYXRjaAppbmRleCA2MTUxNzdiYTE2ZS4u OThmM2EzODc0NWEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwNS1tdXNsLW5v LWV4ZWNpbmZvLnBhdGNoCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0NC1xdC1tdXNsLWV4 ZWNpbmZvLnBhdGNoCkBAIC0xLDYgKzEsNiBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9iYXNlL2RlYnVnL3N0YWNrX3RyYWNlX3Bvc2l4LmNjCTIwMTctMTEtMjggMTQ6 MDY6NTMuMDAwMDAwMDAwICswMTAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL2Jhc2UvZGVidWcvc3RhY2tfdHJhY2VfcG9zaXguY2MJMjAxOC0wMS0yNyAyMTo1MDowNC42 OTMyMzE5MDUgKzAxMDAKLUBAIC0yNiw3ICsyNiw3IEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtLy9iYXNlL2RlYnVnL3N0YWNrX3RyYWNlX3Bvc2l4LmNjLm9yaWcJMjAx OS0wNC0wOSAwOTozMToxNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vL2Jhc2UvZGVidWcvc3RhY2tfdHJhY2VfcG9zaXguY2MJMjAxOS0wNS0w NiAyMzoxNjoxMy4yNDU1MDI0NjcgKzAyMDAKK0BAIC0yNyw3ICsyNyw3IEBACiAgI2lmICFkZWZp bmVkKFVTRV9TWU1CT0xJWkUpCiAgI2luY2x1ZGUgPGN4eGFiaS5oPgogICNlbmRpZgpAQCAtOSw3 ICs5LDcgQEAKICAjaW5jbHVkZSA8ZXhlY2luZm8uaD4KICAjZW5kaWYKICAKLUBAIC04Miw3ICs4 Miw3IEBACitAQCAtODYsNyArODYsNyBAQAogICAgLy8gTm90ZTogY29kZSBpbiB0aGlzIGZ1bmN0 aW9uIGlzIE5PVCBhc3luYy1zaWduYWwgc2FmZSAoc3RkOjpzdHJpbmcgdXNlcwogICAgLy8gbWFs bG9jIGludGVybmFsbHkpLgogIApAQCAtMTgsNyArMTgsNyBAQAogICAgc3RkOjpzdHJpbmc6OnNp emVfdHlwZSBzZWFyY2hfZnJvbSA9IDA7CiAgICB3aGlsZSAoc2VhcmNoX2Zyb20gPCB0ZXh0LT5z aXplKCkpIHsKICAgICAgLy8gTG9vayBmb3IgdGhlIHN0YXJ0IG9mIGEgbWFuZ2xlZCBzeW1ib2ws IGZyb20gc2VhcmNoX2Zyb20uCi1AQCAtMTE3LDcgKzExNyw3IEBACitAQCAtMTIxLDcgKzEyMSw3 IEBACiAgICAgICAgc2VhcmNoX2Zyb20gPSBtYW5nbGVkX3N0YXJ0ICsgMjsKICAgICAgfQogICAg fQpAQCAtMjcsOCArMjcsOCBAQAogIH0KICAjZW5kaWYgIC8vICFkZWZpbmVkKFVTRV9TWU1CT0xJ WkUpCiAgCi1AQCAtMTI5LDcgKzEyOSw3IEBACi0gICB2aXJ0dWFsIH5CYWNrdHJhY2VPdXRwdXRI YW5kbGVyKCkge30KK0BAIC0xMzMsNyArMTMzLDcgQEAKKyAgIHZpcnR1YWwgfkJhY2t0cmFjZU91 dHB1dEhhbmRsZXIoKSA9IGRlZmF1bHQ7CiAgfTsKICAKIC0jaWYgIWRlZmluZWQoX19VQ0xJQkNf XykgJiYgIWRlZmluZWQoX0FJWCkKQEAgLTM2LDcgKzM2LDcgQEAKICB2b2lkIE91dHB1dFBvaW50 ZXIodm9pZCogcG9pbnRlciwgQmFja3RyYWNlT3V0cHV0SGFuZGxlciogaGFuZGxlcikgewogICAg Ly8gVGhpcyBzaG91bGQgYmUgbW9yZSB0aGFuIGVub3VnaCB0byBzdG9yZSBhIDY0LWJpdCBudW1i ZXIgaW4gaGV4OgogICAgLy8gMTYgaGV4IGRpZ2l0cyArIDEgZm9yIG51bGwtdGVybWluYXRvci4K LUBAIC0yMDYsNyArMjA2LDcgQEAKK0BAIC0yMTYsNyArMjE2LDcgQEAKICAgIH0KICAjZW5kaWYg IC8vIGRlZmluZWQoVVNFX1NZTUJPTElaRSkKICB9CkBAIC00NSw0NCArNDUsNDQgQEAKICAKICB2 b2lkIFByaW50VG9TdGRlcnIoY29uc3QgY2hhciogb3V0cHV0KSB7CiAgICAvLyBOT1RFOiBUaGlz IGNvZGUgTVVTVCBiZSBhc3luYy1zaWduYWwgc2FmZSAoaXQncyB1c2VkIGJ5IGluLXByb2Nlc3MK LUBAIC03NDksNyArNzQ5LDcgQEAKLSAvLyBOT1RFOiBUaGlzIGNvZGUgTVVTVCBiZSBhc3luYy1z aWduYWwgc2FmZSAoaXQncyB1c2VkIGJ5IGluLXByb2Nlc3MKLSAvLyBzdGFjayBkdW1waW5nIHNp Z25hbCBoYW5kbGVyKS4gTk8gbWFsbG9jIG9yIHN0ZGlvIGlzIGFsbG93ZWQgaGVyZS4KK0BAIC04 MTIsNyArODEyLDcgQEAKKyAgIC8vIE5PVEU6IFRoaXMgY29kZSBNVVNUIGJlIGFzeW5jLXNpZ25h bCBzYWZlIChpdCdzIHVzZWQgYnkgaW4tcHJvY2VzcworICAgLy8gc3RhY2sgZHVtcGluZyBzaWdu YWwgaGFuZGxlcikuIE5PIG1hbGxvYyBvciBzdGRpbyBpcyBhbGxvd2VkIGhlcmUuCiAgCiAtI2lm ICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCiArI2lmIGRlZmluZWQoX19H TElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotICAgY291bnQgPSBzdGQ6Om1pbihhcnJheXNpemUo dHJhY2VfKSwgY291bnQpOwotIAogICAgLy8gVGhvdWdoIHRoZSBiYWNrdHJhY2UgQVBJIG1hbiBw YWdlIGRvZXMgbm90IGxpc3QgYW55IHBvc3NpYmxlIG5lZ2F0aXZlCi1AQCAtNzY0LDEzICs3NjQs MTMgQEAKLSAgIC8vIE5PVEU6IFRoaXMgY29kZSBNVVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZlIChp dCdzIHVzZWQgYnkgaW4tcHJvY2VzcwotICAgLy8gc3RhY2sgZHVtcGluZyBzaWduYWwgaGFuZGxl cikuIE5PIG1hbGxvYyBvciBzdGRpbyBpcyBhbGxvd2VkIGhlcmUuCisgICAvLyByZXR1cm4gdmFs dWVzLCB3ZSB0YWtlIG5vIGNoYW5jZS4KKyAgIHJldHVybiBiYXNlOjpzYXR1cmF0ZWRfY2FzdDxz aXplX3Q+KGJhY2t0cmFjZSh0cmFjZSwgY291bnQpKTsKK0BAIC04MjUsMTMgKzgyNSwxMyBAQAor IC8vIE5PVEU6IFRoaXMgY29kZSBNVVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZlIChpdCdzIHVzZWQg YnkgaW4tcHJvY2VzcworIC8vIHN0YWNrIGR1bXBpbmcgc2lnbmFsIGhhbmRsZXIpLiBOTyBtYWxs b2Mgb3Igc3RkaW8gaXMgYWxsb3dlZCBoZXJlLgogIAogLSNpZiAhZGVmaW5lZChfX1VDTElCQ19f KSAmJiAhZGVmaW5lZChfQUlYKQogKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQo X0FJWCkKICAgIFByaW50QmFja3RyYWNlT3V0cHV0SGFuZGxlciBoYW5kbGVyOwotICAgUHJvY2Vz c0JhY2t0cmFjZSh0cmFjZV8sIGNvdW50XywgJmhhbmRsZXIpOworICAgUHJvY2Vzc0JhY2t0cmFj ZSh0cmFjZV8sIGNvdW50XywgcHJlZml4X3N0cmluZywgJmhhbmRsZXIpOwogICNlbmRpZgogIH0K ICAKIC0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKICsjaWYgZGVm aW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0gdm9pZCBTdGFja1RyYWNlOjpPdXRw dXRUb1N0cmVhbShzdGQ6Om9zdHJlYW0qIG9zKSBjb25zdCB7Cisgdm9pZCBTdGFja1RyYWNlOjpP dXRwdXRUb1N0cmVhbVdpdGhQcmVmaXgoc3RkOjpvc3RyZWFtKiBvcywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBwcmVmaXhfc3RyaW5nKSBj b25zdCB7CiAgICBTdHJlYW1CYWNrdHJhY2VPdXRwdXRIYW5kbGVyIGhhbmRsZXIob3MpOwotICAg UHJvY2Vzc0JhY2t0cmFjZSh0cmFjZV8sIGNvdW50XywgJmhhbmRsZXIpOwotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2RlYnVnL3N0YWNrX3RyYWNlLmNjCTIwMTct MTEtMjggMTQ6MDY6NTMuMDAwMDAwMDAwICswMTAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL2Jhc2UvZGVidWcvc3RhY2tfdHJhY2UuY2MJMjAxOC0wMS0yNyAyMjozMTow OC4yOTYzNTkwMDAgKzAxMDAKLUBAIC0yMTQsNyArMjE0LDcgQEAKLSAKLSBzdGQ6OnN0cmluZyBT dGFja1RyYWNlOjpUb1N0cmluZygpIGNvbnN0IHsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vYmFzZS9kZWJ1Zy9zdGFja190cmFjZS5jYwkyMDE5LTA0LTA5IDA5OjMxOjE2 LjAwMDAwMDAwMCArMDIwMAorKysrIC0JMjAxOS0wNS0wNiAyMzoxODoxNC45MjM1NjY5OTIgKzAy MDAKK0BAIC0yMzMsNyArMjMzLDcgQEAKKyB9Cisgc3RkOjpzdHJpbmcgU3RhY2tUcmFjZTo6VG9T dHJpbmdXaXRoUHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeF9zdHJpbmcpIGNvbnN0IHsKICAgIHN0 ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKIC0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRl ZmluZWQoX0FJWCkKICsjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0g ICBPdXRwdXRUb1N0cmVhbSgmc3RyZWFtKTsKKyAgIE91dHB1dFRvU3RyZWFtV2l0aFByZWZpeCgm c3RyZWFtLCBwcmVmaXhfc3RyaW5nKTsKICAjZW5kaWYKICAgIHJldHVybiBzdHJlYW0uc3RyKCk7 Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvbG9nZ2luZy5jYwky MDE3LTExLTI4IDE0OjA2OjUzLjAwMDAwMDAwMCArMDEwMAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2xvZ2dpbmcuY2MJMjAxOC0wMS0yNyAyMjo0NjozNC45NzA0 MDY4MDcgKzAxMDAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL2Jhc2Uv bG9nZ2luZy5jYwkyMDE3LTExLTI4IDE0OjA2OjUzLjAwMDAwMDAwMCArMDEwMAorLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vYmFzZS9sb2dnaW5nLmNjCTIwMTgtMDEtMjcg MjI6NDY6MzQuOTcwNDA2ODA3ICswMTAwCiBAQCAtNTQ2LDcgKzU0Niw3IEBACiAgCiAgTG9nTWVz c2FnZTo6fkxvZ01lc3NhZ2UoKSB7CkBAIC05MiwzMyArOTIsMTYgQEAKICAgICAgIWRlZmluZWQo T1NfQUlYKQogICAgaWYgKHNldmVyaXR5XyA9PSBMT0dfRkFUQUwgJiYgIWJhc2U6OmRlYnVnOjpC ZWluZ0RlYnVnZ2VkKCkpIHsKICAgICAgLy8gSW5jbHVkZSBhIHN0YWNrIHRyYWNlIG9uIGEgZmF0 YWwsIHVubGVzcyBhIGRlYnVnZ2VyIGlzIGF0dGFjaGVkLgotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL3BsYXRmb3JtL3d0Zi9B c3NlcnRpb25zLmNwcAkyMDE3LTExLTI4IDE0OjA2OjUzLjAwMDAwMDAwMCArMDEwMAotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNl L3BsYXRmb3JtL3d0Zi9Bc3NlcnRpb25zLmNwcAkyMDE4LTAxLTI5IDIwOjIzOjI2LjQ5ODE4NTYy MyArMDEwMAotQEAgLTU5LDcgKzU5LDYgQEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2Fzc2VydGlv bnMuY2MJMjAxOS0wNC0wOSAwOTozMToxNi4wMDAwMDAwMDAgKzAyMDAKKysrKyAtCTIwMTktMDUt MDYgMjM6MTI6MDcuMDQwOTc3MjU4ICswMjAwCitAQCAtNTEsOCArNTEsMTAgQEAKICAjaWYgZGVm aW5lZChPU19NQUNPU1gpIHx8IChkZWZpbmVkKE9TX0xJTlVYKSAmJiAhZGVmaW5lZChfX1VDTElC Q19fKSkKICAjaW5jbHVkZSA8Y3h4YWJpLmg+CiAgI2luY2x1ZGUgPGRsZmNuLmg+Ci0tI2luY2x1 ZGUgPGV4ZWNpbmZvLmg+CisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICNpbmNsdWRlIDxleGVj aW5mby5oPgogICNlbmRpZgorKyNlbmRpZgogIAogICNpZiBkZWZpbmVkKE9TX0FORFJPSUQpCi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9y dGNfYmFzZS9jaGVja3MuY2MJMjAxNy0xMS0yOCAxNDowNjo1My4wMDAwMDAwMDAgKzAxMDAKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3J0 Y19iYXNlL2NoZWNrcy5jYwkyMDE4LTAxLTI5IDIwOjMyOjQxLjA3MDE2MzUxMSArMDEwMAotQEAg LTE2LDcgKzE2LDcgQEAKLSAjaW5jbHVkZSA8Y3N0ZGlvPgotICNpbmNsdWRlIDxjc3RkbGliPgot IAotLSNpZiBkZWZpbmVkKF9fR0xJQkNYWF9fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKQotKyNp ZiBkZWZpbmVkKF9fR0xJQkNYWF9fKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKLSAjaW5jbHVkZSA8 Y3h4YWJpLmg+Ci0gI2luY2x1ZGUgPGV4ZWNpbmZvLmg+Ci0gI2VuZGlmCi1AQCAtNjAsNyArNjAs NyBAQAotIC8vIHRvIGdldCB1c2FibGUgc3ltYm9scyBvbiBMaW51eC4gVGhpcyBpcyBjb3BpZWQg ZnJvbSBWOC4gQ2hyb21pdW0gaGFzIGEgbW9yZQotIC8vIGFkdmFuY2VkIHN0YWNlIHRyYWNlIHN5 c3RlbTsgYWxzbyBtb3JlIGRpZmZpY3VsdCB0byBjb3B5LgotIHZvaWQgRHVtcEJhY2t0cmFjZSgp IHsKLS0jaWYgZGVmaW5lZChfX0dMSUJDWFhfXykgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykKLSsj aWYgZGVmaW5lZChfX0dMSUJDWFhfXykgJiYgZGVmaW5lZChfX0dMSUJDX18pCi0gICB2b2lkKiB0 cmFjZVsxMDBdOwotICAgaW50IHNpemUgPSBiYWNrdHJhY2UodHJhY2UsIHNpemVvZih0cmFjZSkg LyBzaXplb2YoKnRyYWNlKSk7Ci0gICBjaGFyKiogc3ltYm9scyA9IGJhY2t0cmFjZV9zeW1ib2xz KHRyYWNlLCBzaXplKTsKKyAjaW5jbHVkZSA8YW5kcm9pZC9sb2cuaD4KZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvMDA0NS1xdC1tdXNsLXRocmVhZC1zdGFja3NpemUucGF0Y2ggYi9z cmNwa2dzL3F0NS9wYXRjaGVzLzAwNDUtcXQtbXVzbC10aHJlYWQtc3RhY2tzaXplLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40OTY3NTNiZWYzMAotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0NS1xdC1tdXNsLXRocmVhZC1zdGFj a3NpemUucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorZGlmZiAtLWdpdCBhL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9wcGFwaS91dGlsaXR5L3RocmVhZGluZy9zaW1wbGVfdGhyZWFkLmNjIGIvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3BwYXBpL3V0aWxpdHkvdGhyZWFkaW5nL3NpbXBsZV90aHJlYWQuY2MK K2luZGV4IDAyYmY0OWIuLjA1ZWUxODIgMTAwNjQ0CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3BwYXBpL3V0aWxpdHkvdGhyZWFkaW5nL3NpbXBsZV90aHJlYWQuY2MKKysr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vcHBhcGkvdXRpbGl0eS90aHJlYWRp bmcvc2ltcGxlX3RocmVhZC5jYworQEAgLTEzLDcgKzEzLDcgQEAgbmFtZXNwYWNlIHBwIHsKKyBu YW1lc3BhY2UgeworIAorIC8vIFVzZSAyTUIgZGVmYXVsdCBzdGFjayBzaXplIGZvciBOYXRpdmUg Q2xpZW50LCBvdGhlcndpc2UgdXNlIHN5c3RlbSBkZWZhdWx0LgorLSNpZiBkZWZpbmVkKF9fbmF0 aXZlX2NsaWVudF9fKQorKyNpZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKSB8fCAhZGVmaW5l ZChfX0dMSUJDX18pCisgY29uc3Qgc2l6ZV90IGtEZWZhdWx0U3RhY2tTaXplID0gMiAqIDEwMjQg KiAxMDI0OworICNlbHNlCisgY29uc3Qgc2l6ZV90IGtEZWZhdWx0U3RhY2tTaXplID0gMDsKK2Rp ZmYgLS1naXQgYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL2Jhc2UvcGxhdGZvcm0vcGxh dGZvcm0tcG9zaXguY2MgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL2Jhc2UvcGxhdGZv cm0vcGxhdGZvcm0tcG9zaXguY2MKK2luZGV4IGNmN2YzZWMuLmUwNmE1Y2UgMTAwNjQ0CistLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9iYXNlL3BsYXRmb3JtL3Bs YXRmb3JtLXBvc2l4LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4 L3NyYy9iYXNlL3BsYXRmb3JtL3BsYXRmb3JtLXBvc2l4LmNjCitAQCAtNzYxLDcgKzc2MSw3IEBA IHZvaWQgVGhyZWFkOjpTdGFydCgpIHsKKyAjaWYgVjhfT1NfTUFDT1NYCisgICAgIC8vIERlZmF1 bHQgb24gTWFjIE9TIFggaXMgNTEya0IgLS0gYnVtcCB1cCB0byAxTUIKKyAgICAgc3RhY2tfc2l6 ZSA9IDEgKiAxMDI0ICogMTAyNDsKKy0jZWxpZiBWOF9PU19BSVgKKysjZWxpZiBWOF9PU19BSVgg fHwgIWRlZmluZWQoX19HTElCQ19fKQorICAgICAvLyBEZWZhdWx0IG9uIEFJWCBpcyA5NmtCIC0t IGJ1bXAgdXAgdG8gMk1CCisgICAgIHN0YWNrX3NpemUgPSAyICogMTAyNCAqIDEwMjQ7CisgI2Vu ZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDYtc2FuZGJveC1tZW1iYXJy aWVyLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ2LXNhbmRib3gtbWVtYmFycmllci5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjczOTcxZjI0MzIK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDYtc2FuZGJveC1tZW1i YXJyaWVyLnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvYXJtNjRfbGludXhfc3lz Y2FsbHMuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9s aW51eC9zeXN0ZW1faGVhZGVycy9hcm02NF9saW51eF9zeXNjYWxscy5oCitAQCAtMTA2Myw0ICsx MDYzLDggQEAKKyAjZGVmaW5lIF9fTlJfbWVtZmRfY3JlYXRlIDI3OQorICNlbmRpZgorIAorKyNp ZiAhZGVmaW5lZChfX05SX21lbWJhcnJpZXIpCisrI2RlZmluZSBfX05SX21lbWJhcnJpZXIgMjgz CisrI2VuZGlmCisrCisgI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX0FS TTY0X0xJTlVYX1NZU0NBTExTX0hfCisKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvYXJtX2xpbnV4X3N5c2NhbGxzLmgK KysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lz dGVtX2hlYWRlcnMvYXJtX2xpbnV4X3N5c2NhbGxzLmgKK0BAIC0xMzg1LDYgKzEzODUsMTAgQEAK KyAjZGVmaW5lIF9fTlJfbWVtZmRfY3JlYXRlIChfX05SX1NZU0NBTExfQkFTRSszODUpCisgI2Vu ZGlmCisgCisrI2lmICFkZWZpbmVkKF9fTlJfbWVtYmFycmllcikKKysjZGVmaW5lIF9fTlJfbWVt YmFycmllciAoX19OUl9TWVNDQUxMX0JBU0UrMzg5KQorKyNlbmRpZgorKworIC8vIEFSTSBwcml2 YXRlIHN5c2NhbGxzLgorICNpZiAhZGVmaW5lZChfX0FSTV9OUl9CQVNFKQorICNkZWZpbmUgX19B Uk1fTlJfQkFTRSAoX19OUl9TWVNDQUxMX0JBU0UgKyAweEYwMDAwKQorCistLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3g4 Nl8zMl9saW51eF9zeXNjYWxscy5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3g4Nl8zMl9saW51eF9zeXNjYWxscy5o CitAQCAtMTQyMiw1ICsxNDIyLDkgQEAKKyAjZGVmaW5lIF9fTlJfbWVtZmRfY3JlYXRlIDM1Ngor ICNlbmRpZgorIAorKyNpZiAhZGVmaW5lZChfX05SX21lbWJhcnJpZXIpCisrI2RlZmluZSBfX05S X21lbWJhcnJpZXIgMzc1CisrI2VuZGlmCisrCisgI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZ U1RFTV9IRUFERVJTX1g4Nl8zMl9MSU5VWF9TWVNDQUxMU19IXworIAorLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94ODZf NjRfbGludXhfc3lzY2FsbHMuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94ODZfNjRfbGludXhfc3lzY2FsbHMuaAor QEAgLTEyOTAsNSArMTI5MCw5IEBACisgI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAzMTkKKyAj ZW5kaWYKKyAKKysjaWYgIWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQorKyNkZWZpbmUgX19OUl9t ZW1iYXJyaWVyIDMyNAorKyNlbmRpZgorKworICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNU RU1fSEVBREVSU19YODZfNjRfTElOVVhfU1lTQ0FMTFNfSF8KKyAKKy0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9z eXNjYWxsX3NldHMuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3Nh bmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MKK0BAIC0zNzAs NiArMzcwLDcgQEAKKyAgIHN3aXRjaCAoc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX2V4aXQ6Cisg ICAgIGNhc2UgX19OUl9leGl0X2dyb3VwOgorKyAgICBjYXNlIF9fTlJfbWVtYmFycmllcjoKKyAg ICAgY2FzZSBfX05SX3dhaXQ0OgorICAgICBjYXNlIF9fTlJfd2FpdGlkOgorICNpZiBkZWZpbmVk KF9faTM4Nl9fKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ3LWduLWNyb3Nz LXN5c3Jvb3QucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDctZ24tY3Jvc3Mtc3lzcm9v dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWU2Njg5YTQx ODMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDctZ24tY3Jvc3Mt c3lzcm9vdC5wYXRjaApAQCAtMCwwICsxLDI0IEBACitUaGVyZSBpcyBubyByZWFzb24gdG8gcnVu IHRoaXMgc2NyaXB0IGFuZCBydW5uaW5nIGl0IGZhaWxzIG9uIGFyY2hpdGVjdHVyZXMKK2Nocm9t aXVtIGRvZXMgbm90IG9mZmljaWFsbHkgc3VwcG9ydCAoc3VjaCBhcyBwcGM2NCkuCisKKy0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvY29uZmlnL3Bvc2l4L0JVSUxE LmduCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL2NvbmZpZy9w b3NpeC9CVUlMRC5nbgorQEAgLTEwMiwxMiArMTAyLDEyIEBAIGNvbmZpZygicnVudGltZV9saWJy YXJ5IikgeworICAgICAgICMgd2hlbiB0dXJuaW5nIHRoZSBzeXNyb290IG9uIG9yIG9mZi4gKGRl ZmluZXMgYXJlIHBhc3NlZCB2aWEgdGhlIGNvbW1hbmQKKyAgICAgICAjIGxpbmUsIGFuZCBidWls ZCBzeXN0ZW0gcmVidWlsZHMgdGhpbmdzIHdoZW4gdGhlaXIgY29tbWFuZGxpbmUKKyAgICAgICAj IGNoYW5nZXMpLiBOb3RoaW5nIHNob3VsZCBldmVyIHJlYWQgdGhpcyBkZWZpbmUuCistICAgICAg c3lzcm9vdF9oYXNoID0KKy0gICAgICAgICAgZXhlY19zY3JpcHQoIi8vYnVpbGQvbGludXgvc3lz cm9vdF9zY3JpcHRzL2luc3RhbGwtc3lzcm9vdC5weSIsCistICAgICAgICAgICAgICAgICAgICAg IFsgIi0tcHJpbnQtaGFzaD0kY3VycmVudF9jcHUiIF0sCistICAgICAgICAgICAgICAgICAgICAg ICJ0cmltIHN0cmluZyIsCistICAgICAgICAgICAgICAgICAgICAgIFsgIi8vYnVpbGQvbGludXgv c3lzcm9vdF9zY3JpcHRzL3N5c3Jvb3RzLmpzb24iIF0pCistICAgICAgZGVmaW5lcyArPSBbICJD Ul9TWVNST09UX0hBU0g9JHN5c3Jvb3RfaGFzaCIgXQorKyAgICAgICNzeXNyb290X2hhc2ggPQor KyAgICAgICMgICAgZXhlY19zY3JpcHQoIi8vYnVpbGQvbGludXgvc3lzcm9vdF9zY3JpcHRzL2lu c3RhbGwtc3lzcm9vdC5weSIsCisrICAgICAgIyAgICAgICAgICAgICAgICBbICItLXByaW50LWhh c2g9JGN1cnJlbnRfY3B1IiBdLAorKyAgICAgICMgICAgICAgICAgICAgICAgInRyaW0gc3RyaW5n IiwKKysgICAgICAjICAgICAgICAgICAgICAgIFsgIi8vYnVpbGQvbGludXgvc3lzcm9vdF9zY3Jp cHRzL3N5c3Jvb3RzLmpzb24iIF0pCisrICAgICAgI2RlZmluZXMgKz0gWyAiQ1JfU1lTUk9PVF9I QVNIPSRzeXNyb290X2hhc2giIF0KKyAgICAgfQorICAgICBhc21mbGFncyArPSBzeXNyb290X2Zs YWdzCisgCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwODktd2ViZW5naW5lLXBw YzY0LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDg5LXdlYmVuZ2luZS1wcGM2NC5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDAyZDdlMmQ2MjIKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwODktd2ViZW5naW5lLXBwYzY0 LnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKKy0tLSBxdHdlYmVuZ2luZS9ta3NwZWNzL2ZlYXR1cmVz L2Z1bmN0aW9ucy5wcmYKKysrKyBxdHdlYmVuZ2luZS9ta3NwZWNzL2ZlYXR1cmVzL2Z1bmN0aW9u cy5wcmYKK0BAIC05NSw2ICs5NSw3IEBACisgICAgIGNvbnRhaW5zKHF0QXJjaCwgImFybTY0Iik6 IHJldHVybihhcm02NCkKKyAgICAgY29udGFpbnMocXRBcmNoLCAibWlwcyIpOiByZXR1cm4obWlw c2VsKQorICAgICBjb250YWlucyhxdEFyY2gsICJtaXBzNjQiKTogcmV0dXJuKG1pcHM2NGVsKQor KyAgICBjb250YWlucyhxdEFyY2gsICJwb3dlcjY0Iik6IHJldHVybihwcGM2NCkKKyAgICAgcmV0 dXJuKHVua25vd24pCisgfQorIAorLS0tIHF0d2ViZW5naW5lL21rc3BlY3MvZmVhdHVyZXMvcGxh dGZvcm0ucHJmCisrKysgcXR3ZWJlbmdpbmUvbWtzcGVjcy9mZWF0dXJlcy9wbGF0Zm9ybS5wcmYK K0BAIC04Miw2ICs4Miw3IEBACisgICAgIGNvbnRhaW5zKFFUX0FSQ0gsICJhcm0iKXxjb250YWlu cyhRVF9BUkNILCAiYXJtNjQiKTogcmV0dXJuKHRydWUpCisgICAgIGNvbnRhaW5zKFFUX0FSQ0gs ICJtaXBzIik6IHJldHVybih0cnVlKQorICMgICAgIGNvbnRhaW5zKFFUX0FSQ0gsICJtaXBzNjQi KTogcmV0dXJuKHRydWUpCisrICAgIGNvbnRhaW5zKFFUX0FSQ0gsICJwb3dlcjY0Iik6IHJldHVy bih0cnVlKQorIAorICAgICBza2lwQnVpbGQoIlF0V2ViRW5naW5lIGNhbiBvbmx5IGJlIGJ1aWx0 IGZvciB4ODYsIHg4Ni02NCwgQVJNLCBBYXJjaDY0LCBhbmQgTUlQU2VsIGFyY2hpdGVjdHVyZXMu IikKKyAgICAgcmV0dXJuKGZhbHNlKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8w MDkwLWNocm9taXVtLXBwYzY0bGUucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTAtY2hy b21pdW0tcHBjNjRsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uMDRkOGQzZWZhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAw OTAtY2hyb21pdW0tcHBjNjRsZS5wYXRjaApAQCAtMCwwICsxLDQyNjcgQEAKK1RoaXMgaXMgYSBi YXNlIHBhdGNoIHRoYXQgYWRkcyBzdXBwb3J0IGZvciBwcGM2NGxlIGdsaWJjLiBCaWcgZW5kaWFu IGFuZCBtdXNsCitzdXBwb3J0IGlzIGFkZGVkIGluIGV4dHJhIHBhdGNoZXMgYWZ0ZXJ3YXJkcy4K KworUGluZyBxNjYgaWYgeW91J3JlIHVwZGF0aW5nIHF0NSBhbmQgdGhlIHBhdGNoIGRvZXMgbm90 IGFwcGx5IGFueW1vcmUuCisKK1NvdXJjZTogaHR0cHM6Ly93aWtpLnJhcHRvcmNzLmNvbS93L2lu ZGV4LnBocD90aXRsZT1Qb3J0aW5nL0Nocm9taXVtCitVcHN0cmVhbTogQ3VycmVudGx5IGJlaW5n IHN1Ym1pdHRlZAorCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2Uv YWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFnZV9hbGxvY2F0b3JfY29uc3RhbnRzLmgK KysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvcGFy dGl0aW9uX2FsbG9jYXRvci9wYWdlX2FsbG9jYXRvcl9jb25zdGFudHMuaAorQEAgLTEwLDcgKzEw LDcgQEAKKyAjaW5jbHVkZSAiYnVpbGQvYnVpbGRfY29uZmlnLmgiCisgCisgbmFtZXNwYWNlIGJh c2UgeworLSNpZiBkZWZpbmVkKE9TX1dJTikKKysjaWYgZGVmaW5lZChPU19XSU4pIHx8IGRlZmlu ZWQoQVJDSF9DUFVfUFBDNjQpCisgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1BhZ2VBbGxvY2F0 aW9uR3JhbnVsYXJpdHlTaGlmdCA9IDE2OyAgLy8gNjRLQgorICNlbGlmIGRlZmluZWQoX01JUFNf QVJDSF9MT09OR1NPTikKKyBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrUGFnZUFsbG9jYXRpb25H cmFudWxhcml0eVNoaWZ0ID0gMTQ7ICAvLyAxNktCCitAQCAtMjYsNiArMjYsMTAgQEAgc3RhdGlj IGNvbnN0ZXhwciBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlCYXNlTWFzayA9Cisg CisgI2lmIGRlZmluZWQoX01JUFNfQVJDSF9MT09OR1NPTikKKyBzdGF0aWMgY29uc3RleHByIHNp emVfdCBrU3lzdGVtUGFnZVNpemUgPSAxNjM4NDsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQ QzY0KQorKy8vIFRPRE86IG1vZGVybiBwcGM2NCBjYW4gZG8gNGsgYW5kIDY0ayBwYWdlIHNpemVz CisrLy8gZm9yIG5vdywgNjRrIGlzIGFzc3VtZWQKKytzdGF0aWMgY29uc3RleHByIHNpemVfdCBr U3lzdGVtUGFnZVNpemUgPSA2NTUzNjsKKyAjZWxzZQorIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90 IGtTeXN0ZW1QYWdlU2l6ZSA9IDQwOTY7CisgI2VuZGlmCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0 aW9uX2FsbG9jX2NvbnN0YW50cy5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jX2Nv bnN0YW50cy5oCitAQCAtMzUsNiArMzUsOCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCdWNrZXRT aGlmdCA9IChrQWxsb2NhdGlvbkdyYW51bGFyaXR5ID09IDgpID8gMyA6IDI7CisgCisgI2lmIGRl ZmluZWQoX01JUFNfQVJDSF9MT09OR1NPTikKKyBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYXJ0aXRp b25QYWdlU2hpZnQgPSAxNjsgIC8vIDY0IEtpQgorKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBD NjQpCisrc3RhdGljIGNvbnN0IHNpemVfdCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0gMTg7ICAvLyAy NTYgS2lCCisgI2Vsc2UKKyBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQg PSAxNDsgIC8vIDE2IEtpQgorICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9idWlsZC9kb3dubG9hZF9uYWNsX3Rvb2xjaGFpbnMucHkKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvZG93bmxvYWRfbmFjbF90b29sY2hhaW5zLnB5 CitAQCAtMTEsNiArMTEsMTAgQEAgaW1wb3J0IHN5cworIAorIAorIGRlZiBNYWluKGFyZ3MpOgor KyAgIyBJZiBgZGlzYWJsZV9uYWNsPTFgIGlzIGluIEdZUF9ERUZJTkVTLCBleGl0CisrICBpZiAn ZGlzYWJsZV9uYWNsPTEnIGluIG9zLmVudmlyb24uZ2V0KCdHWVBfREVGSU5FUycsICcnKToKKysg ICAgcmV0dXJuIDAKKysKKyAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5h YnNwYXRoKF9fZmlsZV9fKSkKKyAgIHNyY19kaXIgPSBvcy5wYXRoLmRpcm5hbWUoc2NyaXB0X2Rp cikKKyAgIG5hY2xfZGlyID0gb3MucGF0aC5qb2luKHNyY19kaXIsICduYXRpdmVfY2xpZW50JykK Ky0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvdG9vbGNoYWluL2xp bnV4L0JVSUxELmduCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxk L3Rvb2xjaGFpbi9saW51eC9CVUlMRC5nbgorQEAgLTUsNiArNSwxNCBAQAorIGltcG9ydCgiLy9i dWlsZC9jb25maWcvc3lzcm9vdC5nbmkiKQorIGltcG9ydCgiLy9idWlsZC90b29sY2hhaW4vZ2Nj X3Rvb2xjaGFpbi5nbmkiKQorIAorK2NsYW5nX3Rvb2xjaGFpbigiY2xhbmdfcHBjNjQiKSB7Cisr ICBlbmFibGVfbGlua2VyX21hcCA9IHRydWUKKysgIHRvb2xjaGFpbl9hcmdzID0geworKyAgICBj dXJyZW50X2NwdSA9ICJwcGM2NCIKKysgICAgY3VycmVudF9vcyA9ICJsaW51eCIKKysgIH0KKyt9 CisrCisgY2xhbmdfdG9vbGNoYWluKCJjbGFuZ19hcm0iKSB7CisgICB0b29scHJlZml4ID0gImFy bS1saW51eC1nbnVlYWJpaGYtIgorICAgdG9vbGNoYWluX2FyZ3MgPSB7CistLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvdXBkYXRlX2NsaWVudC91cGRhdGVf cXVlcnlfcGFyYW1zLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Nv bXBvbmVudHMvdXBkYXRlX2NsaWVudC91cGRhdGVfcXVlcnlfcGFyYW1zLmNjCitAQCAtNTUsNiAr NTUsOCBAQCBjb25zdCBjaGFyIGtBcmNoW10gPQorICAgICAibWlwczY0ZWwiOworICNlbGlmIGRl ZmluZWQoX19taXBzX18pCisgICAgICJtaXBzZWwiOworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBj NjRfXykKKysgICAgInBwYzY0IjsKKyAjZWxzZQorICNlcnJvciAidW5rbm93biBhcmNoIgorICNl bmRpZgorQEAgLTEyNyw2ICsxMjksOCBAQCBjb25zdCBjaGFyKiBVcGRhdGVRdWVyeVBhcmFtczo6 R2V0TmFjbEFyY2goKSB7CisgICByZXR1cm4gIm1pcHMzMiI7CisgI2VsaWYgZGVmaW5lZChBUkNI X0NQVV9NSVBTNjRFTCkKKyAgIHJldHVybiAibWlwczY0IjsKKysjZWxpZiBkZWZpbmVkKEFSQ0hf Q1BVX1BQQzY0KQorKyAgcmV0dXJuICJwcGM2NCI7CisgI2Vsc2UKKyAvLyBOT1RFOiB3aGVuIGFk ZGluZyBuZXcgdmFsdWVzIGhlcmUsIHBsZWFzZSByZW1lbWJlciB0byB1cGRhdGUgdGhlCisgLy8g Y29tbWVudCBpbiB0aGUgLmggZmlsZSBhYm91dCBwb3NzaWJsZSByZXR1cm4gdmFsdWVzIGZyb20g dGhpcyBmdW5jdGlvbi4KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29t cG9uZW50cy91cGRhdGVfY2xpZW50L3VwZGF0ZV9xdWVyeV9wYXJhbXMuaAorKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3VwZGF0ZV9jbGllbnQvdXBkYXRl X3F1ZXJ5X3BhcmFtcy5oCitAQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBVcGRhdGVRdWVyeVBhcmFt cyB7CisgICAvLyBSZXR1cm5zIHRoZSB2YWx1ZSB3ZSB1c2UgZm9yIHRoZSAibmFjbF9hcmNoIiBw YXJhbWV0ZXIuIE5vdGUgdGhhdCB0aGlzIG1heQorICAgLy8gYmUgZGlmZmVyZW50IGZyb20gdGhl ICJhcmNoIiBwYXJhbWV0ZXIgYWJvdmUgKGUuZy4gb25lIG1heSBiZSAzMi1iaXQgYW5kCisgICAv LyB0aGUgb3RoZXIgNjQtYml0KS4gUG9zc2libGUgcmV0dXJuIHZhbHVlcyBpbmNsdWRlOiAieDg2 LTMyIiwgIng4Ni02NCIsCistICAvLyAiYXJtIiwgYW5kICJtaXBzMzIiLgorKyAgLy8gImFybSIs ICJtaXBzMzIiLCBhbmQgInBwYzY0Ii4KKyAgIHN0YXRpYyBjb25zdCBjaGFyKiBHZXROYWNsQXJj aCgpOworIAorICAgLy8gUmV0dXJucyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIENocm9tZS9DaHJv bWl1bS4KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9mZWF0 dXJlcy5nbmkKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9m ZWF0dXJlcy5nbmkKK0BAIC0xMiw2ICsxMiw2IEBAIHVzZV9zZWNjb21wX2JwZiA9CisgICAgIChp c19saW51eCB8fCBpc19hbmRyb2lkKSAmJgorICAgICAoY3VycmVudF9jcHUgPT0gIng4NiIgfHwg Y3VycmVudF9jcHUgPT0gIng2NCIgfHwgY3VycmVudF9jcHUgPT0gImFybSIgfHwKKyAgICAgIGN1 cnJlbnRfY3B1ID09ICJhcm02NCIgfHwgY3VycmVudF9jcHUgPT0gIm1pcHNlbCIgfHwKKy0gICAg IGN1cnJlbnRfY3B1ID09ICJtaXBzNjRlbCIpCisrICAgICBjdXJyZW50X2NwdSA9PSAibWlwczY0 ZWwiIHx8IGN1cnJlbnRfY3B1ID09ICJwcGM2NCIpCisgCisgdXNlX3NlY2NvbXBfYnBmID0gdXNl X3NlY2NvbXBfYnBmIHx8IGlzX25hY2xfbm9uc2ZpCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvQlVJTEQuZ24KKysrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9CVUlMRC5nbgorQEAgLTQxNiw2ICs0MTYs OCBAQCBjb21wb25lbnQoInNhbmRib3hfc2VydmljZXMiKSB7CisgCisgc291cmNlX3NldCgic2Fu ZGJveF9zZXJ2aWNlc19oZWFkZXJzIikgeworICAgc291cmNlcyA9IFsKKysgICAgInN5c3RlbV9o ZWFkZXJzL3BwYzY0X2xpbnV4X3N5c2NhbGxzLmgiLAorKyAgICAic3lzdGVtX2hlYWRlcnMvcHBj NjRfbGludXhfdWNvbnRleHQuaCIsCisgICAgICJzeXN0ZW1faGVhZGVycy9hcm02NF9saW51eF9z eXNjYWxscy5oIiwKKyAgICAgInN5c3RlbV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5oIiwK KyAgICAgInN5c3RlbV9oZWFkZXJzL2FybV9saW51eF91Y29udGV4dC5oIiwKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL2xpbnV4X3N5 c2NhbGxfcmFuZ2VzLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2Fu ZGJveC9saW51eC9icGZfZHNsL2xpbnV4X3N5c2NhbGxfcmFuZ2VzLmgKK0BAIC01NSw2ICs1NSwx MyBAQAorICNkZWZpbmUgTUFYX1BVQkxJQ19TWVNDQUxMIDI3OXUKKyAjZGVmaW5lIE1BWF9TWVND QUxMIE1BWF9QVUJMSUNfU1lTQ0FMTAorIAorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK KysKKysjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgorKyNkZWZpbmUgTUlOX1NZU0NBTEwgMHUKKysj ZGVmaW5lIE1BWF9QVUJMSUNfU1lTQ0FMTCAzODZ1CisrI2RlZmluZSBNQVhfU1lTQ0FMTCBNQVhf UFVCTElDX1NZU0NBTEwKKysKKyAjZWxzZQorICNlcnJvciAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0 dXJlIgorICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5k Ym94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAorKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAor QEAgLTE2LDYgKzE2LDkgQEAKKyAjaWYgZGVmaW5lZChfX21pcHNfXykKKyAvLyBzeXMvdXNlci5o IGluIGVnbGliYyBtaXNzZXMgc2l6ZV90IGRlZmluaXRpb24KKyAjaW5jbHVkZSA8c3RkZGVmLmg+ CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKy8vIE1hbnVhbGx5IGRlZmluZSBncmVn X3Qgb24gcHBjNjQKKyt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBncmVnX3Q7CisgI2VuZGlm CisgI2VuZGlmCisgCitAQCAtMzQ2LDYgKzM0OSw1MSBAQCBzdHJ1Y3QgcmVnc19zdHJ1Y3Qgewor ICNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNChfcmVncykgKF9yZWdzKS5yZWdzWzNdCisgI2RlZmlu ZSBTRUNDT01QX1BUX1BBUk01KF9yZWdzKSAoX3JlZ3MpLnJlZ3NbNF0KKyAjZGVmaW5lIFNFQ0NP TVBfUFRfUEFSTTYoX3JlZ3MpIChfcmVncykucmVnc1s1XQorKworKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKKysjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorKworK3R5cGVkZWYgc3RydWN0 IHB0X3JlZ3MgcmVnc19zdHJ1Y3Q7CisrCisrI2lmZGVmIEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4K KysjZGVmaW5lIFNFQ0NPTVBfQVJDSCBBVURJVF9BUkNIX1BQQzY0TEUKKysjZWxzZQorKyNkZWZp bmUgU0VDQ09NUF9BUkNIIEFVRElUX0FSQ0hfUFBDNjQKKysjZW5kaWYKKysKKysjZGVmaW5lIFNF Q0NPTVBfUkVHKF9jdHgsIF9yZWcpICgoX2N0eCktPnVjX21jb250ZXh0LnJlZ3MtPmdwcltfcmVn XSkKKysKKysjZGVmaW5lIFNFQ0NPTVBfUkVTVUxUKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMp CisrI2RlZmluZSBTRUNDT01QX1NZU0NBTEwoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMCkKKysj ZGVmaW5lIFNFQ0NPTVBfSVAoX2N0eCkgKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5uaXAKKysj ZGVmaW5lIFNFQ0NPTVBfUEFSTTEoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMykKKysjZGVmaW5l IFNFQ0NPTVBfUEFSTTIoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNCkKKysjZGVmaW5lIFNFQ0NP TVBfUEFSTTMoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNSkKKysjZGVmaW5lIFNFQ0NPTVBfUEFS TTQoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNikKKysjZGVmaW5lIFNFQ0NPTVBfUEFSTTUoX2N0 eCkgU0VDQ09NUF9SRUcoX2N0eCwgNykKKysjZGVmaW5lIFNFQ0NPTVBfUEFSTTYoX2N0eCkgU0VD Q09NUF9SRUcoX2N0eCwgOCkKKysKKysjZGVmaW5lIFNFQ0NPTVBfTlJfSURYIChvZmZzZXRvZihz dHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIG5yKSkKKysjZGVmaW5lIFNFQ0NPTVBfQVJDSF9JRFgg KG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJjaCkpCisrI2RlZmluZSBTRUND T01QX0lQX01TQl9JRFggXAorKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwg aW5zdHJ1Y3Rpb25fcG9pbnRlcikgKyA0KQorKyNkZWZpbmUgU0VDQ09NUF9JUF9MU0JfSURYIFwK KysgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50 ZXIpICsgMCkKKysjZGVmaW5lIFNFQ0NPTVBfQVJHX01TQl9JRFgobnIpIFwKKysgIChvZmZzZXRv ZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyZ3MpICsgOCAqIChucikgKyA0KQorKyNkZWZp bmUgU0VDQ09NUF9BUkdfTFNCX0lEWChucikgXAorKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3Nl Y2NvbXBfZGF0YSwgYXJncykgKyA4ICogKG5yKSArIDApCisrCisrI2RlZmluZSBTRUNDT01QX1BU X1JFU1VMVChfcmVncykgKF9yZWdzKS5ncHJbM10KKysjZGVmaW5lIFNFQ0NPTVBfUFRfU1lTQ0FM TChfcmVncykgKF9yZWdzKS5ncHJbMF0KKysjZGVmaW5lIFNFQ0NPTVBfUFRfSVAoX3JlZ3MpIChf cmVncykubmlwCisrI2RlZmluZSBTRUNDT01QX1BUX1BBUk0xKF9yZWdzKSAoX3JlZ3MpLmdwclsz XQorKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNMihfcmVncykgKF9yZWdzKS5ncHJbNF0KKysjZGVm aW5lIFNFQ0NPTVBfUFRfUEFSTTMoX3JlZ3MpIChfcmVncykuZ3ByWzVdCisrI2RlZmluZSBTRUND T01QX1BUX1BBUk00KF9yZWdzKSAoX3JlZ3MpLmdwcls2XQorKyNkZWZpbmUgU0VDQ09NUF9QVF9Q QVJNNShfcmVncykgKF9yZWdzKS5ncHJbN10KKysjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTYoX3Jl Z3MpIChfcmVncykuZ3ByWzhdCisrCisgI2Vsc2UKKyAjZXJyb3IgVW5zdXBwb3J0ZWQgdGFyZ2V0 IHBsYXRmb3JtCisgCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MKKysrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1o ZWxwZXJzL2Jhc2VsaW5lX3BvbGljeS5jYworQEAgLTg3LDcgKzg3LDggQEAgYm9vbCBJc0Jhc2Vs aW5lUG9saWN5V2F0Y2hlZChpbnQgc3lzbm8pIHsKKyAgICAgICAgICBTeXNjYWxsU2V0czo6SXNQ cmN0bChzeXNubykgfHwKKyAgICAgICAgICBTeXNjYWxsU2V0czo6SXNQcm9jZXNzR3JvdXBPclNl c3Npb24oc3lzbm8pIHx8CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisr ICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMy X0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgICAgICBTeXNj YWxsU2V0czo6SXNTb2NrZXRDYWxsKHN5c25vKSB8fAorICNlbmRpZgorICNpZiBkZWZpbmVkKF9f YXJtX18pCitAQCAtMTkwLDcgKzE5MSw3IEBAIFJlc3VsdEV4cHIgRXZhbHVhdGVTeXNjYWxsSW1w bChpbnQgZnNfZGVuaWVkX2Vycm5vLAorICAgfQorIAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8 fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVm aW5lZChfX2FhcmNoNjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorICAgaWYgKHN5c25vID09IF9fTlJfbW1hcCkKKyAgICAgcmV0dXJuIFJl c3RyaWN0TW1hcEZsYWdzKCk7CisgI2VuZGlmCitAQCAtMjA4LDcgKzIwOSw3IEBAIFJlc3VsdEV4 cHIgRXZhbHVhdGVTeXNjYWxsSW1wbChpbnQgZnNfZGVuaWVkX2Vycm5vLAorICAgICByZXR1cm4g UmVzdHJpY3RQcmN0bCgpOworIAorICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQo X19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorLSAgICBkZWZpbmVkKF9fYWFyY2g2 NF9fKQorKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisgICBpZiAoc3lzbm8gPT0gX19OUl9zb2NrZXRwYWlyKSB7CisgICAgIC8vIE9ubHkgYWxsb3cg QUZfVU5JWCwgUEZfVU5JWC4gQ3Jhc2ggaWYgYW55dGhpbmcgZWxzZSBpcyBzZWVuLgorICAgICBz dGF0aWNfYXNzZXJ0KEFGX1VOSVggPT0gUEZfVU5JWCwKK0BAIC0yNDgsNyArMjQ5LDggQEAgUmVz dWx0RXhwciBFdmFsdWF0ZVN5c2NhbGxJbXBsKGludCBmc19kZW5pZWRfZXJybm8sCisgICB9Cisg CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQ U19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFS Q0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisr ICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgIGlmIChTeXNjYWxsU2V0czo6SXNTb2NrZXRD YWxsKHN5c25vKSkKKyAgICAgcmV0dXJuIFJlc3RyaWN0U29ja2V0Y2FsbENvbW1hbmQoKTsKKyAj ZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51 eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeV91bml0dGVzdC5jYworKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBm LWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5X3VuaXR0ZXN0LmNjCitAQCAtMjU3LDcgKzI1Nyw3IEBA IFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfc3lzaW5mbyk7CisgVEVTVF9CQVNFTElORV9TSUdT WVMoX19OUl9zeXNsb2cpOworIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfdGltZXJfY3JlYXRl KTsKKyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2 NF9fKSAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9f TlJfZXZlbnRmZCk7CisgVEVTVF9CQVNFTElORV9TSUdTWVMoX19OUl9pbm90aWZ5X2luaXQpOwor IFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfdnNlcnZlcik7CistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNj YWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3Bh cmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCitAQCAtMzUsNyArMzUsOCBAQAorICNpbmNsdWRlIDxz eXMvaW9jdGwuaD4KKyAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgorICNpZiBkZWZpbmVkKE9TX0xJ TlVYKSAmJiAhZGVmaW5lZChPU19DSFJPTUVPUykgJiYgIWRlZmluZWQoX19hcm1fXykgJiYgXAor LSAgICAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmluZWQoUFRSQUNFX0dFVF9USFJFQURf QVJFQSkKKysgICAgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0 X18pICYmIFwKKysgICAgIWRlZmluZWQoUFRSQUNFX0dFVF9USFJFQURfQVJFQSkKKyAvLyBBbHNv IGluY2x1ZGUgYXNtL3B0cmFjZS1hYmkuaCBzaW5jZSBwdHJhY2UuaCBpbiBvbGRlciBsaWJjIChm b3IgaW5zdGFuY2UKKyAvLyB0aGUgb25lIGluIFVidW50dSAxNi4wNCBMVFMpIGlzIG1pc3Npbmcg UFRSQUNFX0dFVF9USFJFQURfQVJFQS4KKyAvLyBhc20vcHRyYWNlLWFiaS5oIGRvZXNuJ3QgZXhp c3Qgb24gYXJtMzIgYW5kIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEgaXNuJ3QKK0BAIC00NCw2ICs0 NCwxMSBAQAorICNlbmRpZgorICNlbmRpZiAgLy8gIU9TX05BQ0xfTk9OU0ZJCisgCisrLy8gT24g UFBDNjQsIFRDR0VUUyBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIHN0cnVjdCB0ZXJtaW9zLCBzbyB3 ZSBtdXN0IGluY2x1ZGUgdGVybWlvcy5oCisrI2lmZGVmIF9fcG93ZXJwYzY0X18KKysjaW5jbHVk ZSA8dGVybWlvcy5oPgorKyNlbmRpZgorKworICNpZiBkZWZpbmVkKE9TX0FORFJPSUQpCisgCisg I2lmICFkZWZpbmVkKEZfRFVQRkRfQ0xPRVhFQykKK0BAIC0xMDYsNiArMTExLDE1IEBAIGlubGlu ZSBib29sIElzQXJjaGl0ZWN0dXJlTWlwcygpIHsKKyAjZW5kaWYKKyB9CisgCisraW5saW5lIGJv b2wgSXNBcmNoaXRlY3R1cmVQUEM2NCgpIHsKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor KyAgcmV0dXJuIHRydWU7CisrI2Vsc2UKKysgIHJldHVybiBmYWxzZTsKKysjZW5kaWYKKyt9Cisr CisrCisgLy8gVWJ1bnR1J3MgdmVyc2lvbiBvZiBnbGliYyBoYXMgYSByYWNlIGNvbmRpdGlvbiBp biBzZW1fcG9zdCB0aGF0IGNhbiBjYXVzZQorIC8vIGl0IHRvIGNhbGwgZnV0ZXgoMikgd2l0aCBi b2d1cyBvcCBhcmd1bWVudHMuIFRvIHdvcmthcm91bmQgdGhpcywgd2UgbmVlZAorIC8vIHRvIGFs bG93IHRob3NlIGZ1dGV4KDIpIGNhbGxzIHRvIGZhaWwgd2l0aCBFSU5WQUwsIGluc3RlYWQgb2Yg Y3Jhc2hpbmcgdGhlCitAQCAtMjQ3LDcgKzI2MSw4IEBAIFJlc3VsdEV4cHIgUmVzdHJpY3RGY250 bENvbW1hbmRzKCkgeworICAgLy8gb3BlcmF0b3IuCisgICAvLyBHbGliYyBvdmVycmlkZXMgdGhl IGtlcm5lbCdzIE9fTEFSR0VGSUxFIHZhbHVlLiBBY2NvdW50IGZvciB0aGlzLgorICAgdWludDY0 X3Qga09MYXJnZUZpbGVGbGFnID0gT19MQVJHRUZJTEU7CistICBpZiAoSXNBcmNoaXRlY3R1cmVY ODZfNjQoKSB8fCBJc0FyY2hpdGVjdHVyZUkzODYoKSB8fCBJc0FyY2hpdGVjdHVyZU1pcHMoKSkK KysgIGlmIChJc0FyY2hpdGVjdHVyZVg4Nl82NCgpIHx8IElzQXJjaGl0ZWN0dXJlSTM4NigpIHx8 IElzQXJjaGl0ZWN0dXJlTWlwcygpIFwKKysgICAgICB8fCBJc0FyY2hpdGVjdHVyZVBQQzY0KCkp CisgICAgIGtPTGFyZ2VGaWxlRmxhZyA9IDAxMDAwMDA7CisgCisgICBjb25zdCBBcmc8aW50PiBj bWQoMSk7CitAQCAtMjcwLDcgKzI4NSw3IEBAIFJlc3VsdEV4cHIgUmVzdHJpY3RGY250bENvbW1h bmRzKCkgeworICAgICAgIC5EZWZhdWx0KENyYXNoU0lHU1lTKCkpOworIH0KKyAKKy0jaWYgZGVm aW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIFJlc3Vs dEV4cHIgUmVzdHJpY3RTb2NrZXRjYWxsQ29tbWFuZCgpIHsKKyAgIC8vIFVuZm9ydHVuYXRlbHks IHdlIGFyZSB1bmFibGUgdG8gcmVzdHJpY3QgdGhlIGZpcnN0IHBhcmFtZXRlciB0bworICAgLy8g c29ja2V0cGFpcigyKS4gV2hpbHN0IGluaXRpYWxseSBzb3VuZGluZyBiYWQsIGl0J3Mgbm90ZXdv cnRoeSB0aGF0IHZlcnkKK0BAIC00MjEsNyArNDIyLDcgQEAgUmVzdWx0RXhwciBSZXN0cmljdFBy bGltaXQocGlkX3QgdGFyZ2V0X3BpZCkgeworIFJlc3VsdEV4cHIgUmVzdHJpY3RQdHJhY2UoKSB7 CisgICBjb25zdCBBcmc8aW50PiByZXF1ZXN0KDApOworICAgcmV0dXJuIFN3aXRjaChyZXF1ZXN0 KS5DQVNFUygoCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyNpZiAhZGVmaW5lZChfX2Fh cmNoNjRfXykgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgICAgIFBUUkFDRV9HRVRS RUdTLAorICAgICAgICAgUFRSQUNFX0dFVEZQUkVHUywKKyAgICAgICAgIFBUUkFDRV9HRVRfVEhS RUFEX0FSRUEsCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gv bGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25z LmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9z ZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuaAorQEAg LTQ4LDcgKzQ4LDcgQEAgU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0RXhwciBSZXN0cmlj dE1wcm90ZWN0RmxhZ3MoKTsKKyAvLyBPX05PTkJMT0NLIHwgT19TWU5DIHwgT19MQVJHRUZJTEUg fCBPX0NMT0VYRUMgfCBPX05PQVRJTUUuCisgU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0 RXhwciBSZXN0cmljdEZjbnRsQ29tbWFuZHMoKTsKKyAKKy0jaWYgZGVmaW5lZChfX2kzODZfXykg fHwgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIC8vIFJlc3RyaWN0IHNvY2tldGNh bGwoMikgdG8gb25seSBhbGxvdyBzb2NrZXRwYWlyKDIpLCBzZW5kKDIpLCByZWN2KDIpLAorIC8v IHNlbmR0bygyKSwgcmVjdmZyb20oMiksIHNodXRkb3duKDIpLCBzZW5kbXNnKDIpIGFuZCByZWN2 bXNnKDIpLgorIFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4cHIgUmVzdHJpY3RTb2Nr ZXRjYWxsQ29tbWFuZCgpOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9z YW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCisrKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYt aGVscGVycy9zeXNjYWxsX3NldHMuY2MKK0BAIC0yOSw3ICsyOSw4IEBAIGJvb2wgU3lzY2FsbFNl dHM6OklzQWxsb3dlZEdldHRpbWUoaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7Cisg ICAgIGNhc2UgX19OUl9nZXR0aW1lb2ZkYXk6CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX194ODZfNjRfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVf TUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfdGltZToKKyAjZW5kaWYKKyAgICAg ICByZXR1cm4gdHJ1ZTsKK0BAIC00NSw3ICs0Niw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxs b3dlZEdldHRpbWUoaW50IHN5c25vKSB7CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9zZXR0aW1l b2ZkYXk6ICAvLyBQcml2aWxlZ2VkLgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAg IChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJ VFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNh c2UgX19OUl9zdGltZToKKyAjZW5kaWYKKyAgICAgZGVmYXVsdDoKK0BAIC0xMTEsNyArMTEzLDcg QEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgeworICAgICBjYXNl IF9fTlJfZmFjY2Vzc2F0OiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCisgICAgIGNhc2Ug X19OUl9mY2htb2RhdDoKKyAgICAgY2FzZSBfX05SX2ZjaG93bmF0OiAgLy8gU2hvdWxkIGJlIGNh bGxlZCBjaG93bmF0ID8KKy0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFy Y2g2NF9fKQorKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX25ld2ZzdGF0YXQ6ICAv LyBmc3RhdGF0KCkuIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgorICNlbGlmIGRlZmluZWQoX19p Mzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorICAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKK0BAIC0xMzAsNyArMTMy LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgeworICAgICBj YXNlIF9fTlJfbWVtZmRfY3JlYXRlOgorICAgICBjYXNlIF9fTlJfbWtkaXJhdDoKKyAgICAgY2Fz ZSBfX05SX21rbm9kYXQ6CistI2lmIGRlZmluZWQoX19pMzg2X18pCisrI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX29sZGxzdGF0 OgorICAgICBjYXNlIF9fTlJfb2xkc3RhdDoKKyAjZW5kaWYKK0BAIC0xNTQsNyArMTU2LDggQEAg Ym9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgeworICAgICBjYXNlIF9f TlJfdHJ1bmNhdGU2NDoKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX3VubGlua2F0OgorLSNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBz X18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVm aW5lZChfX21pcHNfXykgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNh c2UgX19OUl91dGltZToKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX3V0aW1lbnNhdDogIC8vIE5l dy4KK0BAIC0xNzMsNyArMTc2LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkRmlsZVN5 c3RlbUFjY2Vzc1ZpYUZkKGludCBzeXNubykgeworICNlbmRpZgorICAgICAgIHJldHVybiB0cnVl OworIC8vIFRPRE8oamxuKTogdGhlc2Ugc2hvdWxkIGJlIGRlbmllZCBncmFjZWZ1bGx5IGFzIHdl bGwgKG1vdmVkIGJlbG93KS4KKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKysgICAgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfZmFkdmlzZTY0OiAgLy8gRVBFUk0gbm90 IGEgdmFsaWQgZXJybm8uCisgI2VuZGlmCisgI2lmIGRlZmluZWQoX19pMzg2X18pCitAQCAtMTg2 LDcgKzE5MCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEZpbGVTeXN0ZW1BY2Nlc3NW aWFGZChpbnQgc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX2Zsb2NrOiAgICAgIC8vIEVQRVJNIG5v dCBhIHZhbGlkIGVycm5vLgorICAgICBjYXNlIF9fTlJfZnN0YXRmczogICAgLy8gR2l2ZSBpbmZv cm1hdGlvbiBhYm91dCB0aGUgd2hvbGUgZmlsZXN5c3RlbS4KKyAjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAg ICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9mc3RhdGZzNjQ6CisgI2Vu ZGlmCisgICAgIGNhc2UgX19OUl9mc3luYzogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgor QEAgLTE5OCw2ICsyMDMsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRGaWxlU3lzdGVt QWNjZXNzVmlhRmQoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9zeW5jX2ZpbGVfcmFuZ2U6 ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KKyAjZWxpZiBkZWZpbmVkKF9fYXJtX18pCisg ICAgIGNhc2UgX19OUl9hcm1fc3luY19maWxlX3JhbmdlOiAgLy8gRVBFUk0gbm90IGEgdmFsaWQg ZXJybm8uCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICBjYXNlIF9fTlJfc3lu Y19maWxlX3JhbmdlMjogLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCisgI2VuZGlmCisgICAg IGRlZmF1bHQ6CisgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTIyMyw3ICsyMzAsOCBAQCBib29s IFN5c2NhbGxTZXRzOjpJc0RlbmllZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChpbnQgc3lzbm8pIHsK KyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX2dldGRlbnRzNjQ6ICAvLyBFUEVSTSBub3QgYSB2YWxp ZCBlcnJuby4KKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykp IHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfcmVhZGRp cjoKKyAjZW5kaWYKKyAgICAgICByZXR1cm4gdHJ1ZTsKK0BAIC0yNjQsNyArMjcyLDcgQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNHZXRTaW1wbGVJZChpbnQgc3lzbm8pIHsKKyBib29sIFN5c2NhbGxT ZXRzOjpJc1Byb2Nlc3NQcml2aWxlZ2VDaGFuZ2UoaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5 c25vKSB7CisgICAgIGNhc2UgX19OUl9jYXBzZXQ6CistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX194ODZfNjRfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9pb3Bl cm06ICAvLyBJbnRlbCBwcml2aWxlZ2UuCisgICAgIGNhc2UgX19OUl9pb3BsOiAgICAvLyBJbnRl bCBwcml2aWxlZ2UuCisgI2VuZGlmCitAQCAtMzE0LDcgKzMyMiw4IEBAIGJvb2wgU3lzY2FsbFNl dHM6OklzQWxsb3dlZFNpZ25hbEhhbmRsaW5nKGludCBzeXNubykgeworICAgICBjYXNlIF9fTlJf cnRfc2lncHJvY21hc2s6CisgICAgIGNhc2UgX19OUl9ydF9zaWdyZXR1cm46CisgI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykp IHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfc2lnYWN0 aW9uOgorICAgICBjYXNlIF9fTlJfc2lncHJvY21hc2s6CisgICAgIGNhc2UgX19OUl9zaWdyZXR1 cm46CitAQCAtMzMxLDcgKzM0MCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFNpZ25h bEhhbmRsaW5nKGludCBzeXNubykgeworICNlbmRpZgorICAgICBjYXNlIF9fTlJfc2lnbmFsZmQ0 OgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAg KGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklU UykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hf Q1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2Fz ZSBfX05SX3NpZ3BlbmRpbmc6CisgICAgIGNhc2UgX19OUl9zaWdzdXNwZW5kOgorICNlbmRpZgor QEAgLTM1NSw3ICszNjUsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRPcGVyYXRpb25P bkZkKGludCBzeXNubykgeworICNlbmRpZgorICAgICBjYXNlIF9fTlJfZHVwMzoKKyAjaWYgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18p IHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRf XykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfc2h1dGRvd246Cisg I2VuZGlmCisgICAgICAgcmV0dXJuIHRydWU7CitAQCAtMzg5LDcgKzM5OSw3IEBAIGJvb2wgU3lz Y2FsbFNldHM6OklzQWxsb3dlZFByb2Nlc3NTdGFydE9yRGVhdGgoaW50IHN5c25vKSB7CisgICAg IGNhc2UgX19OUl9tZW1iYXJyaWVyOgorICAgICBjYXNlIF9fTlJfd2FpdDQ6CisgICAgIGNhc2Ug X19OUl93YWl0aWQ6CistI2lmIGRlZmluZWQoX19pMzg2X18pCisrI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3dhaXRwaWQ6Cisg I2VuZGlmCisgI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKK0BAIC00MTEsNyArNDIxLDcgQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkUHJvY2Vzc1N0YXJ0T3JEZWF0aChpbnQgc3lzbm8pIHsK KyAgICAgY2FzZSBfX05SX3NldF90aWRfYWRkcmVzczoKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05S X3Vuc2hhcmU6CistI2lmICFkZWZpbmVkKF9fbWlwc19fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRf XykKKysjaWYgIWRlZmluZWQoX19taXBzX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl92Zm9yazoKKyAjZW5kaWYKKyAg ICAgZGVmYXVsdDoKK0BAIC00NjAsNyArNDcwLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxv d2VkR2V0T3JNb2RpZnlTb2NrZXQoaW50IHN5c25vKSB7CisgICAgICAgcmV0dXJuIHRydWU7Cisg ICAgIGRlZmF1bHQ6CisgI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9f KSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisr ICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAg Y2FzZSBfX05SX3NvY2tldHBhaXI6ICAvLyBXZSB3aWxsIHdhbnQgdG8gaW5zcGVjdCBpdHMgYXJn dW1lbnQuCisgI2VuZGlmCisgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTQ3MCw3ICs0ODAsNyBA QCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8p IHsKKyBib29sIFN5c2NhbGxTZXRzOjpJc0RlbmllZEdldE9yTW9kaWZ5U29ja2V0KGludCBzeXNu bykgeworICAgc3dpdGNoIChzeXNubykgeworICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRl ZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorLSAgICBkZWZpbmVkKF9f YWFyY2g2NF9fKQorKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCisgICAgIGNhc2UgX19OUl9hY2NlcHQ6CisgICAgIGNhc2UgX19OUl9hY2NlcHQ0Ogor ICAgICBjYXNlIF9fTlJfYmluZDoKK0BAIC00ODUsNyArNDk1LDggQEAgYm9vbCBTeXNjYWxsU2V0 czo6SXNEZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pIHsKKyB9CisgCisgI2lmIGRl ZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkp ICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01J UFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKKyAvLyBCaWcgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsIGZvciBz b2NrZXRzLgorIGJvb2wgU3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChpbnQgc3lzbm8pIHsKKyAg IHN3aXRjaCAoc3lzbm8pIHsKK0BAIC00OTksNyArNTEwLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6 SXNTb2NrZXRDYWxsKGludCBzeXNubykgeworIH0KKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChf X3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2lm IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlw c19fKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyBib29sIFN5c2NhbGxTZXRz OjpJc05ldHdvcmtTb2NrZXRJbmZvcm1hdGlvbihpbnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAoc3lz bm8pIHsKKyAgICAgY2FzZSBfX05SX2dldHBlZXJuYW1lOgorQEAgLTUyNyw3ICs1MzksNyBAQCBi b29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRBZGRyZXNzU3BhY2VBY2Nlc3MoaW50IHN5c25vKSB7 CisgICAgIGNhc2UgX19OUl9taW5jb3JlOgorICAgICBjYXNlIF9fTlJfbWxvY2thbGw6CisgI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21p cHNfXykgfHwgXAorLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyAgICBkZWZpbmVkKF9fYWFy Y2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9tbWFwOgor ICNlbmRpZgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwK K0BAIC01NTksNyArNTcxLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2VuZXJhbElv KGludCBzeXNubykgeworICAgc3dpdGNoIChzeXNubykgeworICAgICBjYXNlIF9fTlJfbHNlZWs6 CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICAo ZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRT KSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9D UFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNl IF9fTlJfX2xsc2VlazoKKyAjZW5kaWYKKyAjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pCitAQCAt NTcxLDI2ICs1ODQsMjggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2VuZXJhbElvKGlu dCBzeXNubykgeworICAgICBjYXNlIF9fTlJfcmVhZHY6CisgICAgIGNhc2UgX19OUl9wcmVhZDY0 OgorICNpZiBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQ U19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFS Q0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisr ICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3JlY3Y6CisgI2VuZGlm CisgI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVk KF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQo X19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3Jl Y3Zmcm9tOiAgLy8gQ291bGQgc3BlY2lmeSBzb3VyY2UuCisgICAgIGNhc2UgX19OUl9yZWN2bXNn OiAgIC8vIENvdWxkIHNwZWNpZnkgc291cmNlLgorICNlbmRpZgorLSNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9f TlJfc2VsZWN0OgorICNlbmRpZgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9f YXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQorICAgICBjYXNlIF9fTlJfX25ld3NlbGVjdDoKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChf X2FybV9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9zZW5kOgorICNlbmRpZgorICNpZiBkZWZpbmVkKF9f eDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAor LSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9zZW5kbXNnOiAgLy8gQ291bGQg c3BlY2lmeSBkZXN0aW5hdGlvbi4KKyAgICAgY2FzZSBfX05SX3NlbmR0bzogICAvLyBDb3VsZCBz cGVjaWZ5IGRlc3RpbmF0aW9uLgorICNlbmRpZgorQEAgLTY0Nyw3ICs2NjIsOCBAQCBib29sIFN5 c2NhbGxTZXRzOjpJc0FsbG93ZWRCYXNpY1NjaGVkdWxlcihpbnQgc3lzbm8pIHsKKyAgICAgICBy ZXR1cm4gdHJ1ZTsKKyAgICAgY2FzZSBfX05SX2dldHByaW9yaXR5OgorICNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVf TUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBc CisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX25pY2U6CisgI2Vu ZGlmCisgICAgIGNhc2UgX19OUl9zZXRwcmlvcml0eToKK0BAIC02NTksNyArNjc1LDggQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkQmFzaWNTY2hlZHVsZXIoaW50IHN5c25vKSB7CisgYm9v bCBTeXNjYWxsU2V0czo6SXNBZG1pbk9wZXJhdGlvbihpbnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAo c3lzbm8pIHsKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBc CistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BV XzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5l ZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisg ICAgIGNhc2UgX19OUl9iZGZsdXNoOgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfa2V4ZWNfbG9h ZDoKK0BAIC02NzUsNyArNjkyLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBZG1pbk9wZXJhdGlv bihpbnQgc3lzbm8pIHsKKyAKKyBib29sIFN5c2NhbGxTZXRzOjpJc0tlcm5lbE1vZHVsZShpbnQg c3lzbm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8pIHsKKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwK KysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfY3JlYXRlX21vZHVs ZToKKyAgICAgY2FzZSBfX05SX2dldF9rZXJuZWxfc3ltczogIC8vIFNob3VsZCBFTk9TWVMuCisg ICAgIGNhc2UgX19OUl9xdWVyeV9tb2R1bGU6CitAQCAtNzA4LDcgKzcyNiw4IEBAIGJvb2wgU3lz Y2FsbFNldHM6OklzRnNDb250cm9sKGludCBzeXNubykgeworICAgICBjYXNlIF9fTlJfc3dhcG9m ZjoKKyAgICAgY2FzZSBfX05SX3N3YXBvbjoKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAor LSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8z Ml9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQo QVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAg ICBjYXNlIF9fTlJfdW1vdW50OgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfdW1vdW50MjoKK0BA IC03MjQsNyArNzQzLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNOdW1hKGludCBzeXNubykgewor ICAgICBjYXNlIF9fTlJfZ2V0Y3B1OgorICAgICBjYXNlIF9fTlJfbWJpbmQ6CisgI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykg fHwgXAorLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9f KSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9taWdyYXRlX3BhZ2Vz OgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfbW92ZV9wYWdlczoKK0BAIC03NTMsMTQgKzc3Miwx NSBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0dsb2JhbFByb2Nlc3NFbnZpcm9ubWVudChpbnQgc3lz bm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX2FjY3Q6ICAvLyBQcml2 aWxlZ2VkLgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8 IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKKysgICAg ZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNl IF9fTlJfZ2V0cmxpbWl0OgorICNlbmRpZgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9fYXJtX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykg fHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfdWdldHJsaW1pdDoKKyAj ZW5kaWYKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQ VV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8 IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfdWxpbWl0Ogor ICNlbmRpZgorICAgICBjYXNlIF9fTlJfZ2V0cnVzYWdlOgorQEAgLTc5NCw3ICs4MTQsNyBAQCBi b29sIFN5c2NhbGxTZXRzOjpJc0dsb2JhbFN5c3RlbVN0YXR1cyhpbnQgc3lzbm8pIHsKKyAjZW5k aWYKKyAgICAgY2FzZSBfX05SX3N5c2luZm86CisgICAgIGNhc2UgX19OUl91bmFtZToKKy0jaWYg ZGVmaW5lZChfX2kzODZfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfb2xkdW5hbWU6CisgICAgIGNhc2UgX19OUl9vbGRv bGR1bmFtZToKKyAjZW5kaWYKK0BAIC04ODgsNyArOTA4LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6 SXNTeXN0ZW1WTWVzc2FnZVF1ZXVlKGludCBzeXNubykgeworICNlbmRpZgorIAorICNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAm JiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgLy8gQmlnIHN5c3RlbSBWIG11bHRpcGxleGluZyBzeXN0ZW0gY2Fs bC4KKyBib29sIFN5c2NhbGxTZXRzOjpJc1N5c3RlbVZJcGMoaW50IHN5c25vKSB7CisgICBzd2l0 Y2ggKHN5c25vKSB7CitAQCAtOTA4LDcgKzkyOSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQW55 U3lzdGVtVihpbnQgc3lzbm8pIHsKKyAgIHJldHVybiBJc1N5c3RlbVZNZXNzYWdlUXVldWUoc3lz bm8pIHx8IElzU3lzdGVtVlNlbWFwaG9yZXMoc3lzbm8pIHx8CisgICAgICAgICAgSXNTeXN0ZW1W U2hhcmVkTWVtb3J5KHN5c25vKTsKKyAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAg IChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJ VFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICByZXR1 cm4gSXNTeXN0ZW1WSXBjKHN5c25vKTsKKyAjZW5kaWYKKyB9CitAQCAtOTYxLDcgKzk4Myw4IEBA IGJvb2wgU3lzY2FsbFNldHM6OklzRmFOb3RpZnkoaW50IHN5c25vKSB7CisgYm9vbCBTeXNjYWxs U2V0czo6SXNUaW1lcihpbnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8pIHsKKyAgICAgY2Fz ZSBfX05SX2dldGl0aW1lcjoKKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKysgICAgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfYWxhcm06CisgI2VuZGlmCisgICAgIGNh c2UgX19OUl9zZXRpdGltZXI6CitAQCAtMTAyMCwxOCArMTA0MywyMiBAQCBib29sIFN5c2NhbGxT ZXRzOjpJc01pc2MoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9zeW5jZnM6CisgICAgIGNh c2UgX19OUl92aGFuZ3VwOgorIC8vIFRoZSBzeXN0ZW0gY2FsbHMgYmVsb3cgYXJlIG5vdCBpbXBs ZW1lbnRlZC4KKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8 fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9f eDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorICAgICBjYXNlIF9fTlJfYWZzX3N5c2NhbGw6CisgI2VuZGlmCisgI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYm IGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQo X19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2JyZWFrOgorICNlbmRpZgorLSNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18p CisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5l ZChfX21pcHNfXykgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2Ug X19OUl9nZXRwbXNnOgorICNlbmRpZgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAg IChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJ VFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNh c2UgX19OUl9ndHR5OgorICAgICBjYXNlIF9fTlJfaWRsZToKKyAgICAgY2FzZSBfX05SX2xvY2s6 CitAQCAtMTAzOSwyMCArMTA2NiwyMiBAQCBib29sIFN5c2NhbGxTZXRzOjpJc01pc2MoaW50IHN5 c25vKSB7CisgICAgIGNhc2UgX19OUl9wcm9mOgorICAgICBjYXNlIF9fTlJfcHJvZmlsOgorICNl bmRpZgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRl ZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZf NjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCisgICAgIGNhc2UgX19OUl9wdXRwbXNnOgorICNlbmRpZgorICNpZiBkZWZpbmVkKF9feDg2 XzY0X18pCisgICAgIGNhc2UgX19OUl9zZWN1cml0eToKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChf X2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVm aW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfc3R0eToKKyAjZW5kaWYKKy0jaWYgZGVmaW5lZChf X3g4Nl82NF9fKQorKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBj NjRfXykKKyAgICAgY2FzZSBfX05SX3R1eGNhbGw6CisgI2VuZGlmCistI2lmICFkZWZpbmVkKF9f YWFyY2g2NF9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmluZWQoX19wb3dl cnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3ZzZXJ2ZXI6CisgI2VuZGlmCisgICAgICAgcmV0dXJu IHRydWU7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGlu dXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuaAorKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lz Y2FsbF9zZXRzLmgKK0BAIC00MywxMyArNDMsMTQgQEAgY2xhc3MgU0FOREJPWF9FWFBPUlQgU3lz Y2FsbFNldHMgeworICAgc3RhdGljIGJvb2wgSXNEZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQg c3lzbm8pOworIAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFS Q0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAo ZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRT KSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAvLyBCaWcgbXVsdGlwbGV4 aW5nIHN5c3RlbSBjYWxsIGZvciBzb2NrZXRzLgorICAgc3RhdGljIGJvb2wgSXNTb2NrZXRDYWxs KGludCBzeXNubyk7CisgI2VuZGlmCisgCisgI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVm aW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19h YXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBj NjRfXykKKyAgIHN0YXRpYyBib29sIElzTmV0d29ya1NvY2tldEluZm9ybWF0aW9uKGludCBzeXNu byk7CisgI2VuZGlmCisgCitAQCAtODcsNyArODgsOCBAQCBjbGFzcyBTQU5EQk9YX0VYUE9SVCBT eXNjYWxsU2V0cyB7CisgI2VuZGlmCisgCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0g ICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJf QklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFS Q0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgIC8v IEJpZyBzeXN0ZW0gViBtdWx0aXBsZXhpbmcgc3lzdGVtIGNhbGwuCisgICBzdGF0aWMgYm9vbCBJ c1N5c3RlbVZJcGMoaW50IHN5c25vKTsKKyAjZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi9zeXNjYWxsLmNjCisrKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1i cGYvc3lzY2FsbC5jYworQEAgLTE2LDcgKzE2LDcgQEAgbmFtZXNwYWNlIHNhbmRib3ggeworIG5h bWVzcGFjZSB7CisgCisgI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVmaW5l ZChBUkNIX0NQVV9BUk1fRkFNSUxZKSB8fCBcCistICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpCisrICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpIHx8IGRlZmluZWQgKEFS Q0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKyAvLyBOdW1iZXIgdGhhdCdzIG5vdCBjdXJyZW50bHkgdXNl ZCBieSBhbnkgTGludXgga2VybmVsIEFCSXMuCisgY29uc3QgaW50IGtJbnZhbGlkU3lzY2FsbE51 bWJlciA9IDB4MzUxZDM7CisgI2Vsc2UKK0BAIC0zMDgsMTIgKzMwOCw1NiBAQCBhc20oLy8gV2Ug bmVlZCB0byBiZSBhYmxlIHRvIHRlbGwgdGhlIGtlcm5lbCBleGFjdGx5IHdoZXJlIHdlIG1hZGUg YQorICAgICAvLyBFbnRlciB0aGUga2VybmVsCisgICAgICJzdmMgMFxuIgorICAgICAiMjpyZXRc biIKKysgICAgIi5jZmlfZW5kcHJvY1xuIgorKyAgICAiLnNpemUgU3lzY2FsbEFzbSwgLi1TeXNj YWxsQXNtXG4iCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICAiLnRleHRcbiIK KysgICAgIi5hbGlnbiA0XG4iCisrICAgICIudHlwZSBTeXNjYWxsQXNtIEBmdW5jdGlvblxuIgor KyAgICAiU3lzY2FsbEFzbTpcbiIKKysgICAgIi5jZmlfc3RhcnRwcm9jXG4iCisrCisrICAgIC8v IENoZWNrIGlmIHIzIGlzIG5lZ2F0aXZlCisrICAgICJjbXBkaSAzLCAwXG4iCisrICAgICJiZ3Qg MmZcbiIKKysKKysgICAgLy8gTG9hZCBhZGRyZXNzIG9mIDNmIGludG8gcjMgYW5kIHJldHVybgor KyAgICAibWZsciAxMFxuIgorKyAgICAiYmwgMWZcbiIKKysgICAgIjE6IG1mbHIgM1xuIgorKyAg ICAibXRsciAxMFxuIgorKyAgICAiYWRkaSAzLCAzLCA0KjEzXG4iCisrICAgICJibHJcbiIKKysK KysgICAgLy8gTG9hZCBhcmd1bWVudHMgZnJvbSBhcnJheSBpbnRvIHIzLTgKKysgICAgLy8gc2F2 ZSBwYXJhbSAzIGluIHIxMAorKyAgICAiMjpcbiIKKysgICAgIm1yIDAsIDNcbiIKKysgICAgImxk IDMsIDAoNClcbiIKKysgICAgImxkIDUsIDE2KDQpXG4iCisrICAgICJsZCA2LCAyNCg0KVxuIgor KyAgICAibGQgNywgMzIoNClcbiIKKysgICAgImxkIDgsIDQwKDQpXG4iCisrICAgICJsZCA0LCA4 KDQpXG4iCisrICAgICJsaSA5LCAwXG4iCisrCisrICAgIC8vIEVudGVyIGtlcm5lbAorKyAgICAi c2NcbiIKKysKKysgICAgLy8gTWFnaWMgcmV0dXJuIGFkZHJlc3MKKysgICAgIjM6XG4iCisrICAg IC8vIExpa2UgTUlQUywgcHBjNjQgcmV0dXJuIHZhbHVlcyBhcmUgYWx3YXlzIHBvc2l0aXZlLgor KyAgICAvLyBDaGVjayBmb3IgZXJyb3IgaW4gY3IwLlNPIGFuZCBuZWdhdGUgdXBvbiBlcnJvcgor KyAgICAiYmMgNCwgMywgNGZcbiIKKysgICAgIm5lZyAzLCAzXG4iCisrICAgICI0OiBibHJcbiIK KysKKyAgICAgIi5jZmlfZW5kcHJvY1xuIgorICAgICAiLnNpemUgU3lzY2FsbEFzbSwgLi1TeXNj YWxsQXNtXG4iCisgI2VuZGlmCisgICAgICk7ICAvLyBhc20KKyAKKy0jaWYgZGVmaW5lZChfX3g4 Nl82NF9fKQorKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRf XykKKyBleHRlcm4gIkMiIHsKKyBpbnRwdHJfdCBTeXNjYWxsQXNtKGludHB0cl90IG5yLCBjb25z dCBpbnRwdHJfdCBhcmdzWzZdKTsKKyB9CitAQCAtNDI3LDYgKzQ3MSw4IEBAIGludHB0cl90IFN5 c2NhbGw6OkNhbGwoaW50IG5yLAorICAgICByZXQgPSBpbm91dDsKKyAgIH0KKyAKKysjZWxpZiBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBpbnRwdHJfdCByZXQgPSBTeXNjYWxsQXNtKG5yLCBh cmdzKTsKKyAjZWxzZQorICNlcnJvciAiVW5pbXBsZW1lbnRlZCBhcmNoaXRlY3R1cmUiCisgI2Vu ZGlmCitAQCAtNDQzLDggKzQ4OSwxOCBAQCB2b2lkIFN5c2NhbGw6OlB1dFZhbHVlSW5VY29udGV4 dChpbnRwdHJfdCByZXRfdmFsLCB1Y29udGV4dF90KiBjdHgpIHsKKyAgICAgLy8gbmVlZHMgdG8g YmUgY2hhbmdlZCBiYWNrLgorICAgICByZXRfdmFsID0gLXJldF92YWw7CisgICAgIFNFQ0NPTVBf UEFSTTQoY3R4KSA9IDE7CistICB9IGVsc2UKKysgIH0gZWxzZSB7CisgICAgIFNFQ0NPTVBfUEFS TTQoY3R4KSA9IDA7CisrICB9CisrI2VuZGlmCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK KysgIC8vIFNhbWUgYXMgTUlQUywgbmVlZCB0byBpbnZlcnQgcmV0IGFuZCBzZXQgZXJyb3IgcmVn aXN0ZXIgKGNyMC5TTykKKysgIGlmIChyZXRfdmFsIDw9IC0xICYmIHJldF92YWwgPj0gLTQwOTUp IHsKKysgICAgcmV0X3ZhbCA9IC1yZXRfdmFsOworKyAgICBjdHgtPnVjX21jb250ZXh0LnJlZ3Mt PmNjciB8PSAoMSA8PCAyOCk7CisrICB9IGVsc2UgeworKyAgICBjdHgtPnVjX21jb250ZXh0LnJl Z3MtPmNjciAmPSB+KDEgPDwgMjgpOworKyAgfQorICNlbmRpZgorICAgU0VDQ09NUF9SRVNVTFQo Y3R4KSA9IHN0YXRpY19jYXN0PGdyZWdfdD4ocmV0X3ZhbCk7CisgfQorLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3RyYXAuY2MK KysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNj b21wLWJwZi90cmFwLmNjCitAQCAtMjMwLDYgKzIzMCwyMCBAQCB2b2lkIFRyYXA6OlNpZ1N5cyhp bnQgbnIsIExpbnV4U2lnSW5mbyogaW5mbywgdWNvbnRleHRfdCogY3R4KSB7CisgICAgICAgU2V0 SXNJblNpZ0hhbmRsZXIoKTsKKyAgICAgfQorIAorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisrICAgIC8vIE9uIHBwYzY0K2dsaWJjLCBzb21lIHN5c2NhbGxzIHNlZW0gdG8gYWNjaWRlbnRh bGx5IG5lZ2F0ZSB0aGUgZmlyc3QKKysgICAgLy8gcGFyYW1ldGVyIHdoaWNoIGNhdXNlcyBjaGVj a3MgYWdhaW5zdCBpdCB0byBmYWlsLiBGb3Igbm93LCBtYW51YWxseQorKyAgICAvLyBuZWdhdGUg dGhlbSBiYWNrLgorKyAgICAvLyBUT0RPKHNoYXduQGFuYXN0YXMuaW8pOiBpbnZlc3RpZ2F0ZSB0 aGlzIGlzc3VlIGZ1cnRoZXIKKysgICAgYXV0byBuciA9IFNFQ0NPTVBfU1lTQ0FMTChjdHgpOwor KyAgICBpZiAobnIgPT0gX19OUl9vcGVuYXQgfHwgbnIgPT0gX19OUl9ta2RpcmF0IHx8IG5yID09 IF9fTlJfZmFjY2Vzc2F0IHx8IG5yID09IF9fTlJfcmVhZGxpbmthdCB8fAorKyAgICAgICAgbnIg PT0gX19OUl9yZW5hbWVhdCB8fCBuciA9PSBfX05SX3JlbmFtZWF0MiB8fCBuciA9PSBfX05SX25l d2ZzdGF0YXQgfHwgbnIgPT0gX19OUl91bmxpbmthdCkgeworKyAgICAgICAgaWYgKHN0YXRpY19j YXN0PGludD4oU0VDQ09NUF9QQVJNMShjdHgpKSA+IDApIHsKKysgICAgICAgICAgICBTRUNDT01Q X1BBUk0xKGN0eCkgPSAtU0VDQ09NUF9QQVJNMShjdHgpOworKyAgICAgICAgfQorKyAgICB9Cisr I2VuZGlmCisrCisgICAgIC8vIENvcHkgdGhlIHNlY2NvbXAtc3BlY2lmaWMgZGF0YSBpbnRvIGEg YXJjaF9zZWNjb21wX2RhdGEgc3RydWN0dXJlLiBUaGlzCisgICAgIC8vIGlzIHdoYXQgd2UgYXJl IHNob3dpbmcgdG8gVHJhcEZuYyBjYWxsYmFja3MgdGhhdCB0aGUgc3lzdGVtIGNhbGwKKyAgICAg Ly8gZXZhbHVhdG9yIHJlZ2lzdGVyZWQgd2l0aCB0aGUgc2FuZGJveC4KKy0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFs cy5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4 L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmNjCitAQCAtNzksNyArNzksNyBAQCBib29sIENocm9vdFRv U2FmZUVtcHR5RGlyKCkgeworICAgcGlkX3QgcGlkID0gLTE7CisgICBhbGlnbmFzKDE2KSBjaGFy IHN0YWNrX2J1ZltQVEhSRUFEX1NUQUNLX01JTl07CisgI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2 X0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1fRkFNSUxZKSB8fCBcCistICAgIGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisrICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorICAgLy8gVGhlIHN0YWNrIGdy b3dzIGRvd253YXJkLgorICAgdm9pZCogc3RhY2sgPSBzdGFja19idWYgKyBzaXplb2Yoc3RhY2tf YnVmKTsKKyAjZWxzZQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5k Ym94L2xpbnV4L3N5c2NhbGxfYnJva2VyL2Jyb2tlcl9wcm9jZXNzLmNjCisrKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzY2FsbF9icm9rZXIvYnJv a2VyX3Byb2Nlc3MuY2MKK0BAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBCcm9rZXJQcm9jZXNzOjpJ c1N5c2NhbGxBbGxvd2VkKGludCBzeXNubykgY29uc3QgeworICNpZiBkZWZpbmVkKF9fTlJfZnN0 YXRhdCkKKyAgICAgY2FzZSBfX05SX2ZzdGF0YXQ6CisgI2VuZGlmCistI2lmIGRlZmluZWQoX194 ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKKysjaWYgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAg IGNhc2UgX19OUl9uZXdmc3RhdGF0OgorICNlbmRpZgorICAgICAgIHJldHVybiAhZmFzdF9jaGVj a19pbl9jbGllbnRfIHx8IGFsbG93ZWRfY29tbWFuZF9zZXRfLnRlc3QoQ09NTUFORF9TVEFUKTsK Ky0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0 ZW1faGVhZGVycy9saW51eF9zZWNjb21wLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zZWNjb21wLmgKK0BA IC0yOSw2ICsyOSw5IEBACisgI2lmbmRlZiBFTV9BQVJDSDY0CisgI2RlZmluZSBFTV9BQVJDSDY0 IDE4MworICNlbmRpZgorKyNpZm5kZWYgRU1fUFBDNjQKKysjZGVmaW5lIEVNX1BQQzY0IDIxCisr I2VuZGlmCisgCisgI2lmbmRlZiBfX0FVRElUX0FSQ0hfNjRCSVQKKyAjZGVmaW5lIF9fQVVESVRf QVJDSF82NEJJVCAweDgwMDAwMDAwCitAQCAtNTQsNiArNTcsMTIgQEAKKyAjaWZuZGVmIEFVRElU X0FSQ0hfQUFSQ0g2NAorICNkZWZpbmUgQVVESVRfQVJDSF9BQVJDSDY0IChFTV9BQVJDSDY0IHwg X19BVURJVF9BUkNIXzY0QklUIHwgX19BVURJVF9BUkNIX0xFKQorICNlbmRpZgorKyNpZm5kZWYg QVVESVRfQVJDSF9QUEM2NAorKyNkZWZpbmUgQVVESVRfQVJDSF9QUEM2NCAoRU1fUFBDNjQgfCBf X0FVRElUX0FSQ0hfNjRCSVQpCisrI2VuZGlmCisrI2lmbmRlZiBBVURJVF9BUkNIX1BQQzY0TEUK KysjZGVmaW5lIEFVRElUX0FSQ0hfUFBDNjRMRSAoRU1fUFBDNjQgfCBfX0FVRElUX0FSQ0hfNjRC SVQgfCBfX0FVRElUX0FSQ0hfTEUpCisrI2VuZGlmCisgCisgLy8gRm9yIHByY3RsLmgKKyAjaWZu ZGVmIFBSX1NFVF9TRUNDT01QCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2lnbmFsLmgKKysrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9s aW51eF9zaWduYWwuaAorQEAgLTEzLDcgKzEzLDcgQEAKKyAvLyAobm90IHVuZGVmaW5lZCwgYnV0 IGRlZmluZWQgZGlmZmVyZW50IHZhbHVlcyBhbmQgaW4gZGlmZmVyZW50IG1lbW9yeQorIC8vIGxh eW91dHMpLiBTbywgZmlsbCB0aGUgZ2FwIGhlcmUuCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCistICAgIGRlZmlu ZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykKKyAKKyAjZGVmaW5lIExJTlVYX1NJR0hVUCAxCisgI2RlZmluZSBMSU5VWF9T SUdJTlQgMgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xp bnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zeXNj YWxscy5oCitAQCAtMzUsNSArMzUsOSBAQAorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3Rl bV9oZWFkZXJzL2FybTY0X2xpbnV4X3N5c2NhbGxzLmgiCisgI2VuZGlmCisgCisrI2lmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKKysjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVy cy9wcGM2NF9saW51eF9zeXNjYWxscy5oIgorKyNlbmRpZgorKworICNlbmRpZiAgLy8gU0FOREJP WF9MSU5VWF9TWVNURU1fSEVBREVSU19MSU5VWF9TWVNDQUxMU19IXworIAorLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xp bnV4X3Vjb250ZXh0LmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2Fu ZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF91Y29udGV4dC5oCitAQCAtMTEsNiArMTEs OCBAQAorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybV9saW51eF91 Y29udGV4dC5oIgorICNlbGlmIGRlZmluZWQoX19pMzg2X18pCisgI2luY2x1ZGUgInNhbmRib3gv bGludXgvc3lzdGVtX2hlYWRlcnMvaTM4Nl9saW51eF91Y29udGV4dC5oIgorKyNlbGlmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKKysjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVy cy9wcGM2NF9saW51eF91Y29udGV4dC5oIgorICNlbHNlCisgI2Vycm9yICJObyBzdXBwb3J0IGZv ciB5b3VyIGFyY2hpdGVjdHVyZSBpbiBQTmFDbCBoZWFkZXIiCisgI2VuZGlmCituZXcgZmlsZSBt b2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3N5c2NhbGxz LmgKK0BAIC0wLDAgKzEsMTIgQEAKKysvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0 aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91bmQg aW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysjaWZuZGVmIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hF QURFUlNfUFBDNjRfTElOVVhfU1lTQ0FMTFNfSF8KKysjZGVmaW5lIFNBTkRCT1hfTElOVVhfU1lT VEVNX0hFQURFUlNfUFBDNjRfTElOVVhfU1lTQ0FMTFNfSF8KKysKKysjaW5jbHVkZSA8YXNtL3Vu aXN0ZC5oPgorKworKy8vVE9ETzogaXMgaXQgbmVjZXNzYXJ5IHRvIHJlZGVmaW5lIHN5c2NhbGwg bnVtYmVycyBmb3IgUFBDNjQ/CisrCisrI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9I RUFERVJTX1BQQzY0X0xJTlVYX1NZU0NBTExTX0hfCituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0t IC9kZXYvbnVsbAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94 L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3Vjb250ZXh0LmgKK0BAIC0wLDAgKzEs MTIgQEAKKysvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug ZmlsZS4KKysKKysjaWZuZGVmIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRfTElO VVhfVUNPTlRFWFRfSF8KKysjZGVmaW5lIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBD NjRfTElOVVhfVUNPTlRFWFRfSF8KKysKKysjaW5jbHVkZSA8c3lzL3Vjb250ZXh0Lmg+CisrCisr Ly9UT0RPOiBpcyBpdCBuZWNlc3NhcnkgdG8gcmVkZWZpbmUgdWNvbnRleHQgb24gUFBDNjQ/Cisr CisrI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1VD T05URVhUX0hfCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NlcnZpY2Vz L3NlcnZpY2VfbWFuYWdlci9zYW5kYm94L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXgu Y2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2VydmljZXMvc2Vydmlj ZV9tYW5hZ2VyL3NhbmRib3gvbGludXgvYnBmX3JlbmRlcmVyX3BvbGljeV9saW51eC5jYworQEAg LTE1LDYgKzE1LDExIEBACisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMv bGludXhfc3lzY2FsbHMuaCIKKyAjaW5jbHVkZSAic2VydmljZXMvc2VydmljZV9tYW5hZ2VyL3Nh bmRib3gvbGludXgvc2FuZGJveF9saW51eC5oIgorIAorKy8vIE9uIFBQQzY0LCBUQ0dFVFMgaXMg ZGVmaW5lZCBpbiB0ZXJtcyBvZiBzdHJ1Y3QgdGVybWlvcywgc28gd2UgbXVzdCBpbmNsdWRlIHRl cm1pb3MuaAorKyNpZmRlZiBfX3Bvd2VycGM2NF9fCisrI2luY2x1ZGUgPHRlcm1pb3MuaD4KKysj ZW5kaWYKKysKKyAvLyBUT0RPKHZpZ25hdHRpKTogcmVwbGFjZSB0aGUgbG9jYWwgZGVmaW5pdGlv bnMgYmVsb3cgd2l0aCAjaW5jbHVkZQorIC8vIDxsaW51eC9kbWEtYnVmLmg+IG9uY2Uga2VybmVs IHZlcnNpb24gNC42IGJlY29tZXMgd2lkZWx5IHVzZWQuCisgI2luY2x1ZGUgPGxpbnV4L3R5cGVz Lmg+CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Fu Z2xlL3NyYy9saWJBTkdMRS9Db25zdGFudHMuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvQ29uc3RhbnRzLmgKK0BA IC05LDYgKzksNyBAQAorICNpZm5kZWYgTElCQU5HTEVfQ09OU1RBTlRTX0hfCisgI2RlZmluZSBM SUJBTkdMRV9DT05TVEFOVFNfSF8KKyAKKysjaW5jbHVkZSA8Y3N0ZGRlZj4KKyAjaW5jbHVkZSAi Y29tbW9uL3BsYXRmb3JtLmgiCisgCisgbmFtZXNwYWNlIGdsCistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2hl YXAvYXNtL0JVSUxELmduCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2hlYXAvYXNtL0JVSUxELmduCitAQCAt NDYsNiArNDYsMTAgQEAgaWYgKGN1cnJlbnRfY3B1ID09ICJ4ODYiIHx8IGN1cnJlbnRfY3B1ID09 ICJ4NjQiKSB7CisgICAgICAgc291cmNlcyA9IFsKKyAgICAgICAgICJTYXZlUmVnaXN0ZXJzX21p cHM2NC5TIiwKKyAgICAgICBdCisrICAgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0 IikgeworKyAgICAgIHNvdXJjZXMgPSBbCisrICAgICAgICAiU2F2ZVJlZ2lzdGVyc19wcGM2NC5T IiwKKysgICAgICBdCisgICAgIH0KKyAKKyAgICAgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm0iKSB7 CituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9o ZWFwL2FzbS9TYXZlUmVnaXN0ZXJzX3BwYzY0LlMKK0BAIC0wLDAgKzEsNjAgQEAKKysvKgorKyAq IHR5cGVkZWYgdm9pZCAoKlB1c2hBbGxSZWdpc3RlcnNDYWxsYmFjaykoU2FmZVBvaW50QmFycmll ciosIFRocmVhZFN0YXRlKiwgaW50cHRyX3QqKTsKKysgKiBleHRlcm4gIkMiIHZvaWQgUHVzaEFs bFJlZ2lzdGVycyhTYWZlUG9pbnRCYXJyaWVyKiwgVGhyZWFkU3RhdGUqLCBQdXNoQWxsUmVnaXN0 ZXJzQ2FsbGJhY2spCisrICovCisrCisrLnR5cGUgUHVzaEFsbFJlZ2lzdGVycywgJWZ1bmN0aW9u CisrLmdsb2JhbCBQdXNoQWxsUmVnaXN0ZXJzCisrLmhpZGRlbiBQdXNoQWxsUmVnaXN0ZXJzCisr UHVzaEFsbFJlZ2lzdGVyczoKKysgICAgICAgIC8vIFB1c2ggYWxsIGNhbGxlZS1zYXZlcyByZWdp c3RlcnMgdG8gZ2V0IHRoZW0KKysgICAgICAgIC8vIG9uIHRoZSBzdGFjayBmb3IgY29uc2VydmF0 aXZlIHN0YWNrIHNjYW5uaW5nLgorKyAgICAgICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3IgY2FsbGVl LXNhdmVkIHJlZ2lzdGVycyBhbmQgbWluaW1hbCBzdGFjayBmcmFtZS4KKysgICAgICAgIG1mbHIg MCAgICAgICAgICMgcjAgPSBMUgorKyAgICAgICAgc3RkIDAsMTYoMSkgICAgIyBzdG9yZSBMUiBh dCBhZGRyIHNwKzE2CisrICAgICAgICBzdGR1IDEsLTE3NigxKSAjIGdyb3cgc3RhY2sgYnkgMTc2 IGJ5dGVzIGFuZCBzdG9yZSBuZXcgc3RhY2sgdG9wIHB0ciB0byByMQorKyAgICAgICAgICAgICMg MzIxOCo4ID0gbWluIHN0YWNrICBub24tdm9sYXRpbGUgcmVnaXN0ZXJzCisrCisrICAgICAgICAv LyBTYXZlIHRoZSBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXJzCisrICAgICAgICBzdGQgMzEsMTY4KDEp ICAjIHN0b3JlIHIzMSB0byBhZGRyIHNwKzE2OCAKKysgICAgICAgIHN0ZCAzMCwxNjAoMSkgICMg ZXRjLi4uCisrICAgICAgICBzdGQgMjksMTUyKDEpCisrICAgICAgICBzdGQgMjgsMTQ0KDEpCisr ICAgICAgICBzdGQgMjcsMTM2KDEpCisrICAgICAgICBzdGQgMjYsMTI4KDEpCisrICAgICAgICBz dGQgMjUsMTIwKDEpCisrICAgICAgICBzdGQgMjQsMTEyKDEpCisrICAgICAgICBzdGQgMjMsMTA0 KDEpCisrICAgICAgICBzdGQgMjIsOTYoMSkKKysgICAgICAgIHN0ZCAyMSw4OCgxKQorKyAgICAg ICAgc3RkIDIwLDgwKDEpCisrICAgICAgICBzdGQgMTksNzIoMSkKKysgICAgICAgIHN0ZCAxOCw2 NCgxKQorKyAgICAgICAgc3RkIDE3LDU2KDEpCisrICAgICAgICBzdGQgMTYsNDgoMSkKKysgICAg ICAgIHN0ZCAxNSw0MCgxKQorKyAgICAgICAgc3RkIDE0LDMyKDEpCisrICAgICAgICAKKysgICAg ICAgIC8vIE5vdGU6IHRoZSBjYWxsZWUtc2F2ZWQgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIGRv IG5vdCBuZWVkIHRvIGJlCisrICAgICAgICAvLyBjb3BpZWQgdG8gdGhlIHN0YWNrLCBiZWNhdXNl IGZwIHJlZ2lzdGVycyBuZXZlciBob2xkIGhlYXAgcG9pbnRlcnMKKysgICAgICAgIC8vIGFuZCBz byBkbyBub3QgbmVlZCB0byBiZSBrZXB0IHZpc2libGUgdG8gdGhlIGdhcmJhZ2UgY29sbGVjdG9y LgorKyAgICAgICAgCisrICAgICAgICAvLyBQYXNzIHRoZSB0d28gZmlyc3QgYXJndW1lbnRzIHVu dG91Y2hlZCBpbiByMyBhbmQgcjQgYW5kIHRoZQorKyAgICAgICAgLy8gc3RhY2sgcG9pbnRlciB0 byB0aGUgY2FsbGJhY2suCisrCisrICAgICAgICBzdGQgMiwgMjQoMSkgICAjIHNhdmUgcjIgdG8g c3ArMjQgYWRkcgorKyAgICAgICAgbXRjdHIgNSAgICAgICAgIyBjb3B5IDNyZCBmdW5jdGlvbiBh cmcgKGNhbGxiYWNrIGZuIHBvaW50ZXIpIHRvIENUUgorKyAgICAgICAgbXIgMTIsIDUgICAgICAg IyByMTIgbXVzdCBob2xkIGFkZHJlc3Mgb2YgY2FsbGJhY2sgd2UgYXJlIGdvaW5nIHRvIGNhbGwg CisrICAgICAgICAgICAgICAgICAgICAgICAjICBmb3IgcG9zaXRpb24taWRlcGVuZGVudCBmdW5j dGlvbnMgaW5zaWRlIHRoZSBjYWxsYmFjayB0byB3b3JrCisrICAgICAgICBtciA1LCAxICAgICAg ICAjIHNldCBjdXJyZW50IHNwIChzdGFjayB0b3ApIGFzIDNyZCBhcmd1bWVudCBmb3IgdGhlIGNh bGxiYWNrCisrICAgICAgICBiY3RybCAgICAgICAgICAjIHNldCBMUiB0byBQQys0IGFuZCBjYWxs IHRoZSBjYWxsYmFjaworKyAgICAgICAgbGQgMiwgMjQoMSkgICAgIyByZXN0b3JlIHIyIGZyb20g c3ArMjQgYWRkcgorKworKyAgICAgICAgLy8gQWRqdXN0IHN0YWNrLCByZXN0b3JlIHJldHVybiBh ZGRyZXNzIGFuZCByZXR1cm4uCisrICAgICAgICAvLyBOb3RlOiB0aGUgY29waWVkIHJlZ2lzdGVy cyBkbyBub3QgbmVlZCB0byBiZSByZWxvYWRlZCBoZXJlLAorKyAgICAgICAgLy8gYmVjYXVzZSB0 aGV5IHdlcmUgcHJlc2VydmVkIGJ5IHRoZSBjYWxsZWQgcm91dGluZS4KKysgICAgICAgIGFkZGkg MSwxLDE3NiAgICMgcmVzdG9yZSBvcmlnaW5hbCBTUCBieSBkb2luZyBzcCArPSAxNzYKKysgICAg ICAgIGxkIDAsMTYoMSkgICAgICMgcmVzdG9yZSBvcmlnaW5hbCBMUiBmcm9tIGFkZHIgc3ArMTYK KysgICAgICAgIG10bHIgMCAgICAgICAgICMgLi4uIGNvcHkgaXQgdG8gdGhlIGFjdHVhbCBMUgor KyAgICAgICAgYmxyICAgICAgICAgICAgIyByZXR1cm4gdG8gTFIgYWRkcgorKworLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9w bGF0Zm9ybS9oZWFwL2hlYXBfcGFnZS5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2hlYXAvaGVhcF9wYWdl LmgKK0BAIC02NywxMSArNjcsMTIgQEAgY29uc3RleHByIHNpemVfdCBrQmxpbmtQYWdlQmFzZU1h c2sgPSB+a0JsaW5rUGFnZU9mZnNldE1hc2s7CisgY29uc3RleHByIHNpemVfdCBrQmxpbmtQYWdl c1BlclJlZ2lvbiA9IDEwOworIAorIC8vIFRPRE8obnlhKTogUmVwbGFjZSB0aGlzIHdpdGggc29t ZXRoaW5nIGxpa2UgI2lmIEVOQUJMRV9OQUNMLgorLSNpZiAwCisrI2lmIGRlZmluZWQoQVJDSF9D UFVfUFBDNjQpCisgLy8gTmFDbCdzIHN5c3RlbSBwYWdlIHNpemUgaXMgNjQgS2lCLiBUaGlzIGNh dXNlcyBhIHByb2JsZW0gaW4gT2lscGFuJ3MgaGVhcAorIC8vIGxheW91dCBiZWNhdXNlIE9pbHBh biBhbGxvY2F0ZXMgdHdvIGd1YXJkIHBhZ2VzIGZvciBlYWNoIEJsaW5rIHBhZ2UgKHdob3NlCisg Ly8gc2l6ZSBpcyBrQmxpbmtQYWdlU2l6ZSA9IDJeMTcgPSAxMjggS2lCKS4gU28gd2UgZG9uJ3Qg dXNlIGd1YXJkIHBhZ2VzIGluCisgLy8gTmFDbC4KKysvLyBUaGUgc2FtZSBpc3N1ZSBob2xkcyBm b3IgcHBjNjQgc3lzdGVtcywgd2hpY2ggdXNlIGEgNjRrIHBhZ2Ugc2l6ZS4KKyBjb25zdGV4cHIg c2l6ZV90IGtCbGlua0d1YXJkUGFnZVNpemUgPSAwOworICNlbHNlCisgY29uc3RleHByIHNpemVf dCBrQmxpbmtHdWFyZFBhZ2VTaXplID0gYmFzZTo6a1N5c3RlbVBhZ2VTaXplOworLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9w bGF0Zm9ybS93dGYvZHRvYS91dGlscy5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9kdG9hL3V0aWxz LmgKK0BAIC00NSw3ICs0NSw3IEBACisgLy8gZGlzYWJsZWQuKQorIC8vIE9uIExpbnV4LHg4NiA4 OTI1NWUtMjIgIT0gRGl2X2RvdWJsZSg4OTI1NS4wLzFlMjIpCisgI2lmIGRlZmluZWQoX01fWDY0 KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19BUk1FTF9fKSB8fCBcCistICAg IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19NSVBTRUxfXykKKysgICAgZGVmaW5l ZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCisgI2RlZmluZSBET1VCTEVfQ09OVkVSU0lPTl9DT1JSRUNUX0RPVUJMRV9PUEVSQVRJ T05TIDEKKyAjZWxpZiBkZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQoX19pMzg2X18pCisgI2lm IGRlZmluZWQoX1dJTjMyKQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvQlVJTEQuZ24KKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL0JVSUxELmduCitAQCAtMTAwLDYgKzEw MCwxMyBAQCBpZiAoaXNfd2luICYmICFpc19tc2FuICYmIGN1cnJlbnRfY3B1ICE9ICJhcm02NCIp IHsKKyAgICAgICB9IGVsc2UgeworICAgICAgICAgcHVibGljX2NvbmZpZ3MgPSBbICI6bm9fYXNt X2NvbmZpZyIgXQorICAgICAgIH0KKysgICAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBj NjQiKSB7CisrICAgICAgaWYgKGlzX2xpbnV4KSB7CisrICAgICAgICAjIFRPRE86IHBwYzY0IChi ZSkgY2hlY2sKKysgICAgICAgIHNvdXJjZXMgKz0gY3J5cHRvX3NvdXJjZXNfbGludXhfcHBjNjRs ZQorKyAgICAgIH0gZWxzZSB7CisrICAgICAgICBwdWJsaWNfY29uZmlncyA9IFsgIjpub19hc21f Y29uZmlnIiBdCisrICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgIHB1YmxpY19jb25maWdz ID0gWyAiOm5vX2FzbV9jb25maWciIF0KKyAgICAgfQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L2R1bXBfd3JpdGVyX2NvbW1vbi9yYXdfY29udGV4dF9jcHUuaAorKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi9yYXdfY29udGV4dF9jcHUuaAorQEAgLTQ0 LDYgKzQ0LDggQEAgdHlwZWRlZiBNRFJhd0NvbnRleHRBUk0gUmF3Q29udGV4dENQVTsKKyB0eXBl ZGVmIE1EUmF3Q29udGV4dEFSTTY0X09sZCBSYXdDb250ZXh0Q1BVOworICNlbGlmIGRlZmluZWQo X19taXBzX18pCisgdHlwZWRlZiBNRFJhd0NvbnRleHRNSVBTIFJhd0NvbnRleHRDUFU7CisrI2Vs aWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorK3R5cGVkZWYgTURSYXdDb250ZXh0UFBDNjQgUmF3 Q29udGV4dENQVTsKKyAjZWxzZQorICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0 ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQuIgorICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYworKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYworQEAgLTI3MCw3 ICsyNzAsNDIgQEAgdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BV KiBvdXQpIGNvbnN0IHsKKyAgIG91dC0+ZmxvYXRfc2F2ZS5maXIgPSBtY29udGV4dC5mcGNfZWly OworICNlbmRpZgorIH0KKy0jZW5kaWYgIC8vIF9fbWlwc19fCisrCisrI2VsaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorKworK3VpbnRwdHJfdCBUaHJlYWRJbmZvOjpHZXRJbnN0cnVjdGlvblBv aW50ZXIoKSBjb25zdCB7CisrICAgIHJldHVybiBtY29udGV4dC5ncF9yZWdzW1BUX05JUF07Cisr fQorKworK3ZvaWQgVGhyZWFkSW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSogb3V0 KSBjb25zdCB7CisrICAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfUFBDNjRfRlVM TDsKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9DT05URVhUX1BQQzY0X0dQUl9DT1VOVDsg aSsrKQorKyAgICAgICAgb3V0LT5ncHJbaV0gPSBtY29udGV4dC5ncF9yZWdzW2ldOworKworKyAg ICBvdXQtPmxyID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9MTktdOworKyAgICBvdXQtPnNycjAgPSBt Y29udGV4dC5ncF9yZWdzW1BUX05JUF07CisrICAgIG91dC0+c3JyMSA9IG1jb250ZXh0LmdwX3Jl Z3NbUFRfTVNSXTsKKysgICAgb3V0LT5jciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ0NSXTsKKysg ICAgb3V0LT54ZXIgPSBtY29udGV4dC5ncF9yZWdzW1BUX1hFUl07CisrICAgIG91dC0+Y3RyID0g bWNvbnRleHQuZ3BfcmVnc1tQVF9DVFJdOworKyAgICAKKysgICAgZm9yIChpbnQgaSA9IDA7IGkg PCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykKKysgICAgICAgIG91dC0+ ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSBtY29udGV4dC5mcF9yZWdzW2ldOworKworKyAgICBvdXQt PmZsb2F0X3NhdmUuZnBzY3IgPSBtY29udGV4dC5mcF9yZWdzW05GUFJFRy0xXTsKKysKKysgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09VTlQ7IGkrKykK KysgICAgICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9IFwKKysgICAgICAgICAgICB7 KCgodWludDY0X3QpdnJlZ3MudnJyZWdzW2ldWzBdKSA8PCAzMikgCisrICAgICAgICAgICAgICAg ICAgICAgICAgICB8IHZyZWdzLnZycmVnc1tpXVsxXSwgCisrICAgICAgICAgICAgKCgodWludDY0 X3QpdnJlZ3MudnJyZWdzW2ldWzJdKSA8PCAzMikKKysgICAgICAgICAgICAgICAgICAgICAgICAg fCB2cmVncy52cnJlZ3NbaV1bM119OworKworKyAgICBvdXQtPnZyc2F2ZSA9IHZyZWdzLnZyc2F2 ZTsKKysgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IgPSB7MCwgdnJlZ3MudnNjci52c2Ny X3dvcmR9OworKyAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJ2YWxpZCA9IDB4RkZGRkZGRkY7 IAorK30KKysjZW5kaWYgIC8vIF9fcG93ZXJwYzY0X18KKyAKKyB2b2lkIFRocmVhZEluZm86Okdl dEdlbmVyYWxQdXJwb3NlUmVnaXN0ZXJzKHZvaWQqKiBncF9yZWdzLCBzaXplX3QqIHNpemUpIHsK KyAgIGFzc2VydChncF9yZWdzIHx8IHNpemUpOworQEAgLTI3OSw2ICszMTQsMTEgQEAgdm9pZCBU aHJlYWRJbmZvOjpHZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVycyh2b2lkKiogZ3BfcmVncywgc2l6 ZV90KiBzaXplKSB7CisgICAgICpncF9yZWdzID0gbWNvbnRleHQuZ3JlZ3M7CisgICBpZiAoc2l6 ZSkKKyAgICAgKnNpemUgPSBzaXplb2YobWNvbnRleHQuZ3JlZ3MpOworKyNlbGlmIGRlZmluZWQo X19wb3dlcnBjNjRfXykKKysgIGlmIChncF9yZWdzKQorKyAgICAqZ3BfcmVncyA9IG1jb250ZXh0 LmdwX3JlZ3M7CisrICBpZiAoc2l6ZSkKKysgICAgKnNpemUgPSBzaXplb2YobWNvbnRleHQuZ3Bf cmVncyk7CisgI2Vsc2UKKyAgIGlmIChncF9yZWdzKQorICAgICAqZ3BfcmVncyA9ICZyZWdzOwor QEAgLTI5NCw2ICszMzQsMTEgQEAgdm9pZCBUaHJlYWRJbmZvOjpHZXRGbG9hdGluZ1BvaW50UmVn aXN0ZXJzKHZvaWQqKiBmcF9yZWdzLCBzaXplX3QqIHNpemUpIHsKKyAgICAgKmZwX3JlZ3MgPSAm bWNvbnRleHQuZnByZWdzOworICAgaWYgKHNpemUpCisgICAgICpzaXplID0gc2l6ZW9mKG1jb250 ZXh0LmZwcmVncyk7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgaWYgKGZwX3Jl Z3MpCisrICAgICpmcF9yZWdzID0gJm1jb250ZXh0LmZwX3JlZ3M7CisrICBpZiAoc2l6ZSkKKysg ICAgKnNpemUgPSBzaXplb2YobWNvbnRleHQuZnBfcmVncyk7CisgI2Vsc2UKKyAgIGlmIChmcF9y ZWdzKQorICAgICAqZnBfcmVncyA9ICZmcHJlZ3M7CitAQCAtMzAyLDQgKzM0NywxMyBAQCB2b2lk IFRocmVhZEluZm86OkdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnModm9pZCoqIGZwX3JlZ3MsIHNp emVfdCogc2l6ZSkgeworICNlbmRpZgorIH0KKyAKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorK3ZvaWQgVGhyZWFkSW5mbzo6R2V0VmVjdG9yUmVnaXN0ZXJzKHZvaWQqKiB2X3JlZ3MsIHNp emVfdCogc2l6ZSkgeworKyAgICBpZiAodl9yZWdzKQorKyAgICAgICAgKnZfcmVncyA9ICZ2cmVn czsKKysgICAgaWYgKHNpemUpCisrICAgICAgICAqc2l6ZSA9IHNpemVvZih2cmVncyk7CisrfQor KyNlbmRpZgorKworIH0gIC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uaAorKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5oCitA QCAtNjgsNiArNjgsMTAgQEAgc3RydWN0IFRocmVhZEluZm8geworICAgLy8gVXNlIHRoZSBzdHJ1 Y3R1cmVzIGRlZmluZWQgaW4gPHN5cy91c2VyLmg+CisgICBzdHJ1Y3QgdXNlcl9yZWdzX3N0cnVj dCByZWdzOworICAgc3RydWN0IHVzZXJfZnBzaW1kX3N0cnVjdCBmcHJlZ3M7CisrI2VsaWYgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQorKyAgLy8gVXNlIHRoZSBzdHJ1Y3R1cmVzIGRlZmluZWQgaW4g PHN5cy91Y29udGV4dC5oPi4KKysgIG1jb250ZXh0X3QgbWNvbnRleHQ7CisrICB2cnJlZ3NldF90 IHZyZWdzOworICNlbGlmIGRlZmluZWQoX19taXBzX18pCisgICAvLyBVc2UgdGhlIHN0cnVjdHVy ZSBkZWZpbmVkIGluIDxzeXMvdWNvbnRleHQuaD4uCisgICBtY29udGV4dF90IG1jb250ZXh0Owor QEAgLTg0LDYgKzg4LDExIEBAIHN0cnVjdCBUaHJlYWRJbmZvIHsKKyAKKyAgIC8vIFJldHVybnMg dGhlIHBvaW50ZXIgYW5kIHNpemUgb2YgZmxvYXQgcG9pbnQgcmVnaXN0ZXIgYXJlYS4KKyAgIHZv aWQgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVycyh2b2lkKiogZnBfcmVncywgc2l6ZV90KiBzaXpl KTsKKysKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgLy8gUmV0dXJucyB0aGUgcG9p bnRlciBhbmQgc2l6ZSBvZiB0aGUgdmVjdG9yIHJlZ2lzdGVyIGFyZWEuIChQUEM2NCBvbmx5KQor KyAgdm9pZCBHZXRWZWN0b3JSZWdpc3RlcnModm9pZCoqIHZfcmVncywgc2l6ZV90KiBzaXplKTsK KysjZW5kaWYKKyB9OworIAorIH0gIC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQKKy0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVy LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250 ZXh0X3JlYWRlci5jYworQEAgLTI1NCw2ICsyNTQsNDggQEAgdm9pZCBVQ29udGV4dFJlYWRlcjo6 RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1Yykg eworICAgb3V0LT5mbG9hdF9zYXZlLmZpciA9IHVjLT51Y19tY29udGV4dC5mcGNfZWlyOyAgLy8g VW51c2VkLgorICNlbmRpZgorIH0KKysKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisr CisrdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRTdGFja1BvaW50ZXIoY29uc3QgdWNvbnRl eHRfdCogdWMpIHsKKysgICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5ncF9yZWdzW01EX0NPTlRF WFRfUFBDNjRfUkVHX1NQXTsKKyt9CisrCisrdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRJ bnN0cnVjdGlvblBvaW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKKysgICAgcmV0dXJuIHVj LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF07CisrfQorKworK3ZvaWQgVUNvbnRleHRSZWFk ZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCwgY29uc3QgdWNvbnRleHRfdCog dWMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdnJyZWdzZXRf dCogdnJlZ3MpIHsKKysgICAgb3V0LT5jb250ZXh0X2ZsYWdzID0gTURfQ09OVEVYVF9QUEM2NF9G VUxMOworKworKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0NPTlRFWFRfUFBDNjRfR1BSX0NP VU5UOyBpKyspCisrICAgICAgICBvdXQtPmdwcltpXSA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdz W2ldOworKworKyAgICBvdXQtPmxyID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXTsg ICAgCisrICAgIG91dC0+c3JyMCA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF07Cisr ICAgIG91dC0+c3JyMSA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX01TUl07CisrICAgIG91 dC0+Y3IgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9DQ1JdOworKyAgICBvdXQtPnhlciA9 IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX1hFUl07CisrICAgIG91dC0+Y3RyID0gdWMtPnVj X21jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKKysgICAgCisrICAgIGZvciAoaW50IGkgPSAwOyBp IDwgTURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCisrICAgICAgICBvdXQt PmZsb2F0X3NhdmUuZnByZWdzW2ldID0gdWMtPnVjX21jb250ZXh0LmZwX3JlZ3NbaV07CisrCisr ICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHNjciA9IHVjLT51Y19tY29udGV4dC5mcF9yZWdzW05GUFJF Ry0xXTsKKysKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENf VlJfQ09VTlQ7IGkrKykKKysgICAgICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9Cisr ICAgICAgICAgICAgeygoKHVpbnQ2NF90KXZyZWdzLT52cnJlZ3NbaV1bMF0pIDw8IDMyKSAKKysg ICAgICAgICAgICAgICAgICAgICAgICAgfCB2cmVncy0+dnJyZWdzW2ldWzFdLCAKKysgICAgICAg ICAgICAgKCgodWludDY0X3QpdnJlZ3MtPnZycmVnc1tpXVsyXSkgPDwgMzIpCisrICAgICAgICAg ICAgICAgICAgICAgICAgIHwgdnJlZ3MtPnZycmVnc1tpXVszXX07CisrCisrICAgIG91dC0+dnJz YXZlID0gdnJlZ3MtPnZyc2F2ZTsKKysgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IgPSB7 MCwgdnJlZ3MtPnZzY3IudnNjcl93b3JkfTsKKysgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3Zy dmFsaWQgPSAweEZGRkZGRkZGOyAKKyt9CisrCisgI2VuZGlmCisgCisgfSAgLy8gbmFtZXNwYWNl IGdvb2dsZV9icmVha3BhZAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVy X2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1 bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaAorQEAgLTU0LDYgKzU0LDkgQEAgc3Ry dWN0IFVDb250ZXh0UmVhZGVyIHsKKyAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorICAgc3Rh dGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4 dF90ICp1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmcHNp bWRfY29udGV4dCogZnByZWdzKTsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBz dGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250 ZXh0X3QgKnVjLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdnJyZWdzZXRf dCogdnJlZ3MpOworICNlbHNlCisgICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250 ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjKTsKKyAjZW5kaWYKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCisrKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYworQEAgLTQ2Nyw5 ICs0NjcsMTYgQEAgYm9vbCBFeGNlcHRpb25IYW5kbGVyOjpIYW5kbGVTaWduYWwoaW50IC8qc2ln Ki8sIHNpZ2luZm9fdCogaW5mbywgdm9pZCogdWMpIHsKKyAgICAgbWVtY3B5KCZnX2NyYXNoX2Nv bnRleHRfLmZsb2F0X3N0YXRlLCBmcF9wdHIsCisgICAgICAgICAgICBzaXplb2YoZ19jcmFzaF9j b250ZXh0Xy5mbG9hdF9zdGF0ZSkpOworICAgfQorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKysgIC8vIE9uIFBQQzY0LCB3ZSBtdXN0IGNvcHkgVlIgc3RhdGUKKysgIHVjb250ZXh0X3Qq IHVjX3B0ciA9ICh1Y29udGV4dF90Kil1YzsKKysgIGlmICh1Y19wdHItPnVjX21jb250ZXh0LnZf cmVncykgeworKyAgICBtZW1jcHkoJmdfY3Jhc2hfY29udGV4dF8udmVjdG9yX3N0YXRlLCB1Y19w dHItPnVjX21jb250ZXh0LnZfcmVncywKKysgICAgICAgICAgIHNpemVvZihnX2NyYXNoX2NvbnRl eHRfLnZlY3Rvcl9zdGF0ZSkpOworKyAgfQorICNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykg JiYgIWRlZmluZWQoX19taXBzX18pCisgICAvLyBGUCBzdGF0ZSBpcyBub3QgcGFydCBvZiB1c2Vy IEFCSSBvbiBBUk0gTGludXguCistICAvLyBJbiBjYXNlIG9mIE1JUFMgTGludXggRlAgc3RhdGUg aXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKKysgIC8vIEluIGNhc2Ugb2YgTUlQUywgTGlu dXggRlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKKyAgIC8vIGFuZCAnZmxv YXRfc3RhdGUnIGlzIG5vdCBhIG1lbWJlciBvZiBDcmFzaENvbnRleHQuCisgICB1Y29udGV4dF90 KiB1Y19wdHIgPSAodWNvbnRleHRfdCopdWM7CisgICBpZiAodWNfcHRyLT51Y19tY29udGV4dC5m cHJlZ3MpIHsKK0BAIC03MDcsMTEgKzcxNCwxOSBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6Oldy aXRlTWluaWR1bXAoKSB7CisgICB9CisgI2VuZGlmCisgCistI2lmICFkZWZpbmVkKF9fQVJNX0VB QklfXykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorKyNp ZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVm aW5lZChfX21pcHNfXykgXAorKyAgICAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgLy8g RlBVIHN0YXRlIGlzIG5vdCBwYXJ0IG9mIEFSTSBFQUJJIHVjb250ZXh0X3QuCisgICBtZW1jcHko JmNvbnRleHQuZmxvYXRfc3RhdGUsIGNvbnRleHQuY29udGV4dC51Y19tY29udGV4dC5mcHJlZ3Ms CisgICAgICAgICAgc2l6ZW9mKGNvbnRleHQuZmxvYXRfc3RhdGUpKTsKKyAjZW5kaWYKKysKKysj aWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgLy8gVmVjdG9yIHJlZ2lzdGVycyBtdXN0IGJl IGNvcGllZCBvbiBQUEM2NAorKyAgbWVtY3B5KCZjb250ZXh0LnZlY3Rvcl9zdGF0ZSwgY29udGV4 dC5jb250ZXh0LnVjX21jb250ZXh0LnZfcmVncywKKysgICAgICAgICBzaXplb2YoY29udGV4dC52 ZWN0b3Jfc3RhdGUpKTsKKysjZW5kaWYKKysKKyAgIGNvbnRleHQudGlkID0gc3lzX2dldHRpZCgp OworIAorICAgLy8gQWRkIGFuIGV4Y2VwdGlvbiBzdHJlYW0gdG8gdGhlIG1pbmlkdW1wIGZvciBi ZXR0ZXIgcmVwb3J0aW5nLgorQEAgLTczMiw2ICs3NDcsOSBAQCBib29sIEV4Y2VwdGlvbkhhbmRs ZXI6OldyaXRlTWluaWR1bXAoKSB7CisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAgIGNvbnRl eHQuc2lnaW5mby5zaV9hZGRyID0KKyAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihjb250 ZXh0LmNvbnRleHQudWNfbWNvbnRleHQucGMpOworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKysgIGNvbnRleHQuc2lnaW5mby5zaV9hZGRyID0KKysgICAgICByZWludGVycHJldF9jYXN0 PHZvaWQqPihjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdKTsKKyAj ZWxzZQorICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0 Zm9ybSB5ZXQuIgorICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIv ZXhjZXB0aW9uX2hhbmRsZXIuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIv ZXhjZXB0aW9uX2hhbmRsZXIuaAorQEAgLTE5Miw3ICsxOTIsMTEgQEAgY2xhc3MgRXhjZXB0aW9u SGFuZGxlciB7CisgICAgIHNpZ2luZm9fdCBzaWdpbmZvOworICAgICBwaWRfdCB0aWQ7ICAvLyB0 aGUgY3Jhc2hpbmcgdGhyZWFkLgorICAgICB1Y29udGV4dF90IGNvbnRleHQ7CistI2lmICFkZWZp bmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKKysgICAgLy8gUFBDNjQncyBGUCBzdGF0ZSBpcyBhIHBhcnQgb2YgdWNvbnRl eHRfdCBsaWtlIE1JUFMgYnV0IHRoZSB2ZWN0b3IKKysgICAgLy8gc3RhdGUgaXMgbm90LCBzbyBh IHN0cnVjdCBpcyBuZWVkZWQuCisrICAgIHZzdGF0ZV90IHZlY3Rvcl9zdGF0ZTsKKysjZWxpZiAh ZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorICAgICAvLyAjaWZk ZWYgdGhpcyBvdXQgYmVjYXVzZSBGUCBzdGF0ZSBpcyBub3QgcGFydCBvZiB1c2VyIEFCSSBmb3Ig TGludXggQVJNLgorICAgICAvLyBJbiBjYXNlIG9mIE1JUFMgTGludXggRlAgc3RhdGUgaXMgYWxy ZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3Qgc28KKyAgICAgLy8gJ2Zsb2F0X3N0YXRlJyBpcyBub3Qg cmVxdWlyZWQuCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25f aGFuZGxlcl91bml0dGVzdC5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIv ZXhjZXB0aW9uX2hhbmRsZXJfdW5pdHRlc3QuY2MKK0BAIC0zMDcsNyArMzA3LDcgQEAgVEVTVChF eGNlcHRpb25IYW5kbGVyVGVzdCwgUGFyYWxsZWxDaGlsZENyYXNoZXNEb250SGFuZykgeworICAg fQorIAorICAgLy8gV2FpdCBhIHdoaWxlIHVudGlsIHRoZSBjaGlsZCBzaG91bGQgaGF2ZSBjcmFz aGVkLgorLSAgdXNsZWVwKDEwMDAwMDApOworKyAgdXNsZWVwKDIwMDAwMDApOworICAgLy8gS2ls bCB0aGUgY2hpbGQgaWYgaXQgaXMgc3RpbGwgcnVubmluZy4KKyAgIGtpbGwoY2hpbGQsIFNJR0tJ TEwpOworIAorQEAgLTU3Niw2ICs1NzYsOCBAQCBjb25zdCB1bnNpZ25lZCBjaGFyIGtJbGxlZ2Fs SW5zdHJ1Y3Rpb25bXSA9IHsKKyAjaWYgZGVmaW5lZChfX21pcHNfXykKKyAgIC8vIG1mYzIgemVy byxJbXBsIC0gdXN1YWxseSBpbGxlZ2FsIGluIHVzZXJzcGFjZS4KKyAgIDB4NDgsIDB4MDAsIDB4 MDAsIDB4NDgKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAweDAxLCAweDAxLCAw eDAxLCAweDAxIC8vIENyYXNoZXMgb24gYSB0ZXN0ZWQgUE9XRVI5IGNwdQorICNlbHNlCisgICAv LyBUaGlzIGNyYXNoZXMgd2l0aCBTSUdJTEwgb24geDg2L3g4Ni02NC9hcm0uCisgICAweGZmLCAw eGZmLCAweGZmLCAweGZmCitAQCAtNzcxLDEwICs3NzMsMTAgQEAgVEVTVChFeGNlcHRpb25IYW5k bGVyVGVzdCwgSW5zdHJ1Y3Rpb25Qb2ludGVyTWVtb3J5TWF4Qm91bmQpIHsKKyAKKyAgIC8vIFRo ZXNlIGFyZSBkZWZpbmVkIGhlcmUgc28gdGhlIHBhcmVudCBjYW4gdXNlIHRoZW0gdG8gY2hlY2sg dGhlCisgICAvLyBkYXRhIGZyb20gdGhlIG1pbmlkdW1wIGFmdGVyd2FyZHMuCistICAvLyBVc2Ug NGsgaGVyZSBiZWNhdXNlIHRoZSBPUyB3aWxsIGhhbmQgb3V0IGEgc2luZ2xlIHBhZ2UgZXZlbgor KyAgLy8gVXNlIHRoZSBwYWdlIHNpemUgaGVyZSBiZWNhdXNlIHRoZSBPUyB3aWxsIGhhbmQgb3V0 IGEgc2luZ2xlIHBhZ2UgZXZlbgorICAgLy8gaWYgYSBzbWFsbGVyIHNpemUgaXMgcmVxdWVzdGVk LCBhbmQgdGhpcyB0ZXN0IHdhbnRzIHRvCisgICAvLyB0ZXN0IHRoZSB1cHBlciBib3VuZCBvZiB0 aGUgbWVtb3J5IHJhbmdlLgorLSAgY29uc3QgdWludDMyX3Qga01lbW9yeVNpemUgPSA0MDk2OyAg Ly8gYnl0ZXMKKysgIGNvbnN0IHVpbnQzMl90IGtNZW1vcnlTaXplID0gZ2V0cGFnZXNpemUoKTsg IC8vIGJ5dGVzCisgICBjb25zdCBpbnQga09mZnNldCA9IGtNZW1vcnlTaXplIC0gc2l6ZW9mKGtJ bGxlZ2FsSW5zdHJ1Y3Rpb24pOworIAorICAgY29uc3QgcGlkX3QgY2hpbGQgPSBmb3JrKCk7Cist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3Jp dGVyLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNy b2R1bXBfd3JpdGVyLmNjCitAQCAtMTM4LDcgKzEzOCw5IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRl ciB7CisgICAgICAgICAgICAgICAgICAgY29uc3QgTWljcm9kdW1wRXh0cmFJbmZvJiBtaWNyb2R1 bXBfZXh0cmFfaW5mbywKKyAgICAgICAgICAgICAgICAgICBMaW51eER1bXBlciogZHVtcGVyKQor ICAgICAgIDogdWNvbnRleHRfKGNvbnRleHQgPyAmY29udGV4dC0+Y29udGV4dCA6IE5VTEwpLAor LSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAgICAgICB2ZWN0b3Jfc3RhdGVfKGNvbnRleHQgPyAm Y29udGV4dC0+dmVjdG9yX3N0YXRlIDogTlVMTCksCisrI2VsaWYgIWRlZmluZWQoX19BUk1fRUFC SV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKyAgICAgICAgIGZsb2F0X3N0YXRlXyhjb250ZXh0 ID8gJmNvbnRleHQtPmZsb2F0X3N0YXRlIDogTlVMTCksCisgI2VuZGlmCisgICAgICAgICBkdW1w ZXJfKGR1bXBlciksCitAQCAtMzM3LDYgKzMzOSw4IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRlciB7 CisgIyBlbHNlCisgIyAgZXJyb3IgIlRoaXMgbWlwcyBBQkkgaXMgY3VycmVudGx5IG5vdCBzdXBw b3J0ZWQgKG4zMikiCisgI2VuZGlmCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAg ICBjb25zdCBjaGFyIGtBcmNoW10gPSAicHBjNjQiOworICNlbHNlCisgI2Vycm9yICJUaGlzIGNv ZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldCIKKyAjZW5kaWYKK0BA IC00MDksNyArNDEzLDkgQEAgY2xhc3MgTWljcm9kdW1wV3JpdGVyIHsKKyAgIHZvaWQgRHVtcENQ VVN0YXRlKCkgeworICAgICBSYXdDb250ZXh0Q1BVIGNwdTsKKyAgICAgbXlfbWVtc2V0KCZjcHUs IDAsIHNpemVvZihSYXdDb250ZXh0Q1BVKSk7CistI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykg JiYgIWRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAg VUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KCZjcHUsIHVjb250ZXh0XywgdmVjdG9yX3N0 YXRlXyk7CisrI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNf XykKKyAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KCZjcHUsIHVjb250ZXh0Xywg ZmxvYXRfc3RhdGVfKTsKKyAjZWxzZQorICAgICBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRl eHQoJmNwdSwgdWNvbnRleHRfKTsKK0BAIC02MDUsNyArNjExLDkgQEAgY2xhc3MgTWljcm9kdW1w V3JpdGVyIHsKKyAgIHZvaWQqIEFsbG9jKHVuc2lnbmVkIGJ5dGVzKSB7IHJldHVybiBkdW1wZXJf LT5hbGxvY2F0b3IoKS0+QWxsb2MoYnl0ZXMpOyB9CisgCisgICBjb25zdCB1Y29udGV4dF90KiBj b25zdCB1Y29udGV4dF87CistI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQo X19taXBzX18pCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIGNvbnN0IGdvb2dsZV9i cmVha3BhZDo6dnN0YXRlX3QqIGNvbnN0IHZlY3Rvcl9zdGF0ZV87CisrI2VsaWYgIWRlZmluZWQo X19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKyAgIGNvbnN0IGdvb2dsZV9icmVh a3BhZDo6ZnBzdGF0ZV90KiBjb25zdCBmbG9hdF9zdGF0ZV87CisgI2VuZGlmCisgICBMaW51eER1 bXBlciogZHVtcGVyXzsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBfd3Jp dGVyL21pY3JvZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKK0BAIC0y NzgsMTAgKzI3OCwxOSBAQCBURVNUKE1pY3JvZHVtcFdyaXRlclRlc3QsIEJhc2ljV2l0aE1hcHBp bmdzKSB7CisgICBDcmFzaEFuZEdldE1pY3JvZHVtcChtYXBwaW5ncywgTWljcm9kdW1wRXh0cmFJ bmZvKCksICZidWYpOworICAgQVNTRVJUX1RSVUUoQ29udGFpbnNNaWNyb2R1bXAoYnVmKSk7Cisg CisrICBpbnQgcGFnZV9zaXplID0gZ2V0cGFnZXNpemUoKTsKKyAjaWZkZWYgX19MUDY0X18KKy0g IEFTU0VSVF9ORShzdGQ6OnN0cmluZzo6bnBvcywKKy0gICAgICAgICAgICBidWYuZmluZCgiTSAw MDAwMDAwMDAwMDAxMDAwIDAwMDAwMDAwMDAwMDAwMkEgMDAwMDAwMDAwMDAwMTAwMCAiCistICAg ICAgICAgICAgICAgICAgICAgIjMzMjIxMTAwNTU0NDc3NjY4ODk5QUFCQkNDRERFRUZGMCBsaWJm b28uc28iKSk7CisrICAvLyBUaGlzIHRlc3QgaXMgb25seSBhdmFpbGFibGUgZm9yIHRoZSBmb2xs b3dpbmcgcGFnZSBzaXplcworKyAgQVNTRVJUX1RSVUUoKHBhZ2Vfc2l6ZSA9PSA0MDk2KSB8fCAo cGFnZV9zaXplID09IDY1NTM2KSk7CisrICBpZiAocGFnZV9zaXplID09IDQwOTYpIHsgCisrICAg IEFTU0VSVF9ORShzdGQ6OnN0cmluZzo6bnBvcywKKysgICAgICAgICAgICAgIGJ1Zi5maW5kKCJN IDAwMDAwMDAwMDAwMDEwMDAgMDAwMDAwMDAwMDAwMDAyQSAwMDAwMDAwMDAwMDAxMDAwICIKKysg ICAgICAgICAgICAgICAgICAgICAgICIzMzIyMTEwMDU1NDQ3NzY2ODg5OUFBQkJDQ0RERUVGRjAg bGliZm9vLnNvIikpOworKyAgfSBlbHNlIHsKKysgICAgQVNTRVJUX05FKHN0ZDo6c3RyaW5nOjpu cG9zLAorKyAgICAgICAgICAgICAgYnVmLmZpbmQoIk0gMDAwMDAwMDAwMDAxMDAwMCAwMDAwMDAw MDAwMDAwMDJBIDAwMDAwMDAwMDAwMTAwMDAgIgorKyAgICAgICAgICAgICAgICAgICAgICAgIjMz MjIxMTAwNTU0NDc3NjY4ODk5QUFCQkNDRERFRUZGMCBsaWJmb28uc28iKSk7CisrICB9CisgI2Vs c2UKKyAgIEFTU0VSVF9ORShzdGQ6OnN0cmluZzo6bnBvcywKKyAgICAgICAgICAgICBidWYuZmlu ZCgiTSAwMDAwMTAwMCAwMDAwMDAyQSAwMDAwMTAwMCAiCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCisrKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCitAQCAt MTE2LDYgKzExNiw5IEBAIGJvb2wgTGludXhDb3JlRHVtcGVyOjpHZXRUaHJlYWRJbmZvQnlJbmRl eChzaXplX3QgaW5kZXgsIFRocmVhZEluZm8qIGluZm8pIHsKKyAjZWxpZiBkZWZpbmVkKF9fbWlw c19fKQorICAgc3RhY2tfcG9pbnRlciA9CisgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90 Kj4oaW5mby0+bWNvbnRleHQuZ3JlZ3NbTURfQ09OVEVYVF9NSVBTX1JFR19TUF0pOworKyNlbGlm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIHN0YWNrX3BvaW50ZXIgPQorKyAgICAgIHJlaW50 ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluZm8tPm1jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9Q UEM2NF9SRUdfU1BdKTsKKyAjZWxzZQorICNlcnJvciAiVGhpcyBjb2RlIGhhc24ndCBiZWVuIHBv cnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCisgI2VuZGlmCitAQCAtMjAwLDcgKzIwMywxMCBA QCBib29sIExpbnV4Q29yZUR1bXBlcjo6RW51bWVyYXRlVGhyZWFkcygpIHsKKyAgICAgICAgIG1l bXNldCgmaW5mbywgMCwgc2l6ZW9mKFRocmVhZEluZm8pKTsKKyAgICAgICAgIGluZm8udGdpZCA9 IHN0YXR1cy0+cHJfcGdycDsKKyAgICAgICAgIGluZm8ucHBpZCA9IHN0YXR1cy0+cHJfcHBpZDsK Ky0jaWYgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAg ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzMTsgaSsrKQorKyAgICAgICAgICAgIGluZm8ubWNv bnRleHQuZ3BfcmVnc1tpXSA9IHN0YXR1cy0+cHJfcmVnW2ldOworKyNlbGlmIGRlZmluZWQoX19t aXBzX18pCisgI2lmIGRlZmluZWQoX19BTkRST0lEX18pCisgICAgICAgICBmb3IgKGludCBpID0g RUZfUjA7IGkgPD0gRUZfUjMxOyBpKyspCisgICAgICAgICAgIGluZm8ubWNvbnRleHQuZ3JlZ3Nb aSAtIEVGX1IwXSA9IHN0YXR1cy0+cHJfcmVnW2ldOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyLmNjCitAQCAtNzk4LDcgKzc5OCw5 IEBAIGJvb2wgTGludXhEdW1wZXI6OkdldFN0YWNrSW5mbyhjb25zdCB2b2lkKiogc3RhY2ssIHNp emVfdCogc3RhY2tfbGVuLAorICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGludF9z dGFja19wb2ludGVyICYgfihwYWdlX3NpemUgLSAxKSk7CisgCisgICAvLyBUaGUgbnVtYmVyIG9m IGJ5dGVzIG9mIHN0YWNrIHdoaWNoIHdlIHRyeSB0byBjYXB0dXJlLgorLSAgc3RhdGljIGNvbnN0 IHB0cmRpZmZfdCBrU3RhY2tUb0NhcHR1cmUgPSAzMiAqIDEwMjQ7CisrICAvLyBUaGlzIG5vdyBk ZXBlbmRzIG9uIHBhZ2Vfc2l6ZSB0byBhdm9pZCBtaXNzaW5nIGRhdGEKKysgIC8vIG9uIHN5c3Rl bXMgd2l0aCBsYXJnZXIgcGFnZSBzaXplcy4KKysgIHN0YXRpYyBjb25zdCBwdHJkaWZmX3Qga1N0 YWNrVG9DYXB0dXJlID0gOCAqIHBhZ2Vfc2l6ZTsKKyAKKyAgIGNvbnN0IE1hcHBpbmdJbmZvKiBt YXBwaW5nID0gRmluZE1hcHBpbmcoc3RhY2tfcG9pbnRlcik7CisgICBpZiAoIW1hcHBpbmcpCist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5o CisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBl ci5oCitAQCAtNjAsNyArNjAsOCBAQCBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkIHsKKyAgKGRl ZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSA9PSBfQUJJTzMyKQorIHR5cGVkZWYgRWxmMzJf YXV4dl90IGVsZl9hdXhfZW50cnk7CisgI2VsaWYgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5l ZChfX2FhcmNoNjRfXykgfHwgXAorLSAgICAgKGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJ TSAhPSBfQUJJTzMyKQorKyAgICAgKGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSAhPSBf QUJJTzMyKSB8fCBcCisrICAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgdHlwZWRlZiBFbGY2 NF9hdXh2X3QgZWxmX2F1eF9lbnRyeTsKKyAjZW5kaWYKKyAKKy0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyX3VuaXR0ZXN0X2hlbHBlci5jYwor KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXJf dW5pdHRlc3RfaGVscGVyLmNjCitAQCAtNTEsNiArNTEsOCBAQAorICNkZWZpbmUgVElEX1BUUl9S RUdJU1RFUiAicmN4IgorICNlbGlmIGRlZmluZWQoX19taXBzX18pCisgI2RlZmluZSBUSURfUFRS X1JFR0lTVEVSICIkMSIKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrI2RlZmluZSBU SURfUFRSX1JFR0lTVEVSICJyOCIKKyAjZWxzZQorICNlcnJvciBUaGlzIHRlc3QgaGFzIG5vdCBi ZWVuIHBvcnRlZCB0byB0aGlzIHBsYXRmb3JtLgorICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmNjCisrKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXIu Y2MKK0BAIC0xNTQsMTkgKzE1NCwyNyBAQCBib29sIExpbnV4UHRyYWNlRHVtcGVyOjpDb3B5RnJv bVByb2Nlc3Modm9pZCogZGVzdCwgcGlkX3QgY2hpbGQsCisgICByZXR1cm4gdHJ1ZTsKKyB9Cisg CistYm9vbCBMaW51eFB0cmFjZUR1bXBlcjo6UmVhZFJlZ2lzdGVyU2V0KFRocmVhZEluZm8qIGlu Zm8sIHBpZF90IHRpZCkKKy17CisrYm9vbCBMaW51eFB0cmFjZUR1bXBlcjo6UmVhZFJlZ2lzdGVy U2V0KFRocmVhZEluZm8qIGluZm8sIHBpZF90IHRpZCkgeworICNpZmRlZiBQVFJBQ0VfR0VUUkVH U0VUCisgICBzdHJ1Y3QgaW92ZWMgaW87CisgICBpbmZvLT5HZXRHZW5lcmFsUHVycG9zZVJlZ2lz dGVycygmaW8uaW92X2Jhc2UsICZpby5pb3ZfbGVuKTsKKy0gIGlmIChzeXNfcHRyYWNlKFBUUkFD RV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX1BSU1RBVFVTLCAodm9pZCopJmlvKSA9PSAtMSkg eworKyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9QUlNUQVRV UywgKHZvaWQqKSZpbykgPT0gLTEpIHsKKyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorIAorICAg aW5mby0+R2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVycygmaW8uaW92X2Jhc2UsICZpby5pb3ZfbGVu KTsKKy0gIGlmIChzeXNfcHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX0ZQ UkVHU0VULCAodm9pZCopJmlvKSA9PSAtMSkgeworKyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVH U0VULCB0aWQsICh2b2lkKilOVF9GUFJFR1NFVCwgKHZvaWQqKSZpbykgPT0gLTEpIHsKKyAgICAg cmV0dXJuIGZhbHNlOworICAgfQorKworKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAv LyBHcmFiIHRoZSB2ZWN0b3IgcmVnaXN0ZXJzIG9uIFBQQzY0IHRvbworKyAgaW5mby0+R2V0VmVj dG9yUmVnaXN0ZXJzKCZpby5pb3ZfYmFzZSwgJmlvLmlvdl9sZW4pOworKyAgaWYgKHB0cmFjZShQ VFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9QUENfVk1YLCAodm9pZCopJmlvKSA9PSAt MSkgeworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrI2VuZGlmIC8vIGRlZmluZWQoX19wb3dl cnBjNjRfXykKKysKKyAgIHJldHVybiB0cnVlOworICNlbHNlCisgICByZXR1cm4gZmFsc2U7CitA QCAtMzAzLDYgKzMxMSw5IEBAIGJvb2wgTGludXhQdHJhY2VEdW1wZXI6OkdldFRocmVhZEluZm9C eUluZGV4KHNpemVfdCBpbmRleCwgVGhyZWFkSW5mbyogaW5mbykgeworICNlbGlmIGRlZmluZWQo X19taXBzX18pCisgICBzdGFja19wb2ludGVyID0KKyAgICAgICByZWludGVycHJldF9jYXN0PHVp bnQ4X3QqPihpbmZvLT5tY29udGV4dC5ncmVnc1tNRF9DT05URVhUX01JUFNfUkVHX1NQXSk7Cisr I2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgc3RhY2tfcG9pbnRlciA9CisrICAgICAg cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5mby0+bWNvbnRleHQuZ3BfcmVnc1tNRF9DT05U RVhUX1BQQzY0X1JFR19TUF0pOworICNlbHNlCisgI2Vycm9yICJUaGlzIGNvZGUgaGFzbid0IGJl ZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKKyAjZW5kaWYKKy0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlcl91bml0dGVz dC5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9w dHJhY2VfZHVtcGVyX3VuaXR0ZXN0LmNjCitAQCAtNDU3LDYgKzQ1Nyw5IEBAIFRFU1QoTGludXhQ dHJhY2VEdW1wZXJUZXN0LCBWZXJpZnlTdGFja1JlYWRXaXRoTXVsdGlwbGVUaHJlYWRzKSB7Cisg I2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAgICAgcGlkX3QqIHByb2Nlc3NfdGlkX2xvY2F0aW9u ID0KKyAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8cGlkX3QqPihvbmVfdGhyZWFkLm1jb250ZXh0 LmdyZWdzWzFdKTsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAgIHBpZF90KiBw cm9jZXNzX3RpZF9sb2NhdGlvbiA9CisrICAgICAgICByZWludGVycHJldF9jYXN0PHBpZF90Kj4o b25lX3RocmVhZC5tY29udGV4dC5ncF9yZWdzWzhdKTsKKyAjZWxzZQorICNlcnJvciBUaGlzIHRl c3QgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB0aGlzIHBsYXRmb3JtLgorICNlbmRpZgorQEAgLTU1 Myw2ICs1NTYsOCBAQCBURVNUX0YoTGludXhQdHJhY2VEdW1wZXJUZXN0LCBTYW5pdGl6ZVN0YWNr Q29weSkgeworICAgdWludHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLnJlZ3MucmN4Owor ICNlbGlmIGRlZmluZWQoX19taXBzX18pCisgICB1aW50cHRyX3QgaGVhcF9hZGRyID0gdGhyZWFk X2luZm8ubWNvbnRleHQuZ3JlZ3NbMV07CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor KyAgdWludHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLm1jb250ZXh0LmdwX3JlZ3NbOF07 CisgI2Vsc2UKKyAjZXJyb3IgVGhpcyB0ZXN0IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gdGhpcyBw bGF0Zm9ybS4KKyAjZW5kaWYKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93 cml0ZXIvbWluaWR1bXBfd3JpdGVyLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWlu aWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5jYworQEAgLTEzNiw3ICsxMzYsOSBAQCBjbGFz cyBNaW5pZHVtcFdyaXRlciB7CisgICAgICAgOiBmZF8obWluaWR1bXBfZmQpLAorICAgICAgICAg cGF0aF8obWluaWR1bXBfcGF0aCksCisgICAgICAgICB1Y29udGV4dF8oY29udGV4dCA/ICZjb250 ZXh0LT5jb250ZXh0IDogTlVMTCksCistI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRl ZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAgICAgIHZl Y3Rvcl9zdGF0ZV8oY29udGV4dCA/ICZjb250ZXh0LT52ZWN0b3Jfc3RhdGUgOiBOVUxMKSwKKysj ZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorICAgICAg ICAgZmxvYXRfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4dC0+ZmxvYXRfc3RhdGUgOiBOVUxMKSwK KyAjZW5kaWYKKyAgICAgICAgIGR1bXBlcl8oZHVtcGVyKSwKK0BAIC00NjgsNyArNDcwLDkgQEAg Y2xhc3MgTWluaWR1bXBXcml0ZXIgeworICAgICAgICAgaWYgKCFjcHUuQWxsb2NhdGUoKSkKKyAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgbXlfbWVtc2V0KGNwdS5nZXQoKSwgMCwg c2l6ZW9mKFJhd0NvbnRleHRDUFUpKTsKKy0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAh ZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICAgICAg VUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQoKSwgdWNvbnRleHRfLCB2ZWN0 b3Jfc3RhdGVfKTsKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9f bWlwc19fKQorICAgICAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQo KSwgdWNvbnRleHRfLCBmbG9hdF9zdGF0ZV8pOworICNlbHNlCisgICAgICAgICBVQ29udGV4dFJl YWRlcjo6RmlsbENQVUNvbnRleHQoY3B1LmdldCgpLCB1Y29udGV4dF8pOworQEAgLTg5MSw3ICs4 OTUsNyBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7CisgICAgIGRpcmVudC0+bG9jYXRpb24ucnZh ID0gMDsKKyAgIH0KKyAKKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBj NjRfXykKKyAgIGJvb2wgV3JpdGVDUFVJbmZvcm1hdGlvbihNRFJhd1N5c3RlbUluZm8qIHN5c19p bmZvKSB7CisgICAgIGNoYXIgdmVuZG9yX2lkW3NpemVvZihzeXNfaW5mby0+Y3B1Lng4Nl9jcHVf aW5mby52ZW5kb3JfaWQpICsgMV0gPSB7MH07CisgICAgIHN0YXRpYyBjb25zdCBjaGFyIHZlbmRv cl9pZF9uYW1lW10gPSAidmVuZG9yX2lkIjsKK0BAIC05MTEsNyArOTE1LDkgQEAgY2xhc3MgTWlu aWR1bXBXcml0ZXIgeworIAorICAgICAvLyBwcm9jZXNzb3JfYXJjaGl0ZWN0dXJlIHNob3VsZCBh bHdheXMgYmUgc2V0LCBkbyB0aGlzIGZpcnN0CisgICAgIHN5c19pbmZvLT5wcm9jZXNzb3JfYXJj aGl0ZWN0dXJlID0KKy0jaWYgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorKyAgICAgICAgTURfQ1BVX0FSQ0hJVEVDVFVSRV9QUEM2NDsKKysjZWxpZiBkZWZp bmVkKF9fbWlwc19fKQorICMgaWYgX01JUFNfU0lNID09IF9BQklPMzIKKyAgICAgICAgIE1EX0NQ VV9BUkNISVRFQ1RVUkVfTUlQUzsKKyAjIGVsaWYgX01JUFNfU0lNID09IF9BQkk2NAorQEAgLTEz MjcsNyArMTMzMyw5IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKKyAgIGNvbnN0IGNoYXIqIHBh dGhfOyAgLy8gUGF0aCB0byB0aGUgZmlsZSB3aGVyZSB0aGUgbWluaWR1bSBzaG91bGQgYmUgd3Jp dHRlbi4KKyAKKyAgIGNvbnN0IHVjb250ZXh0X3QqIGNvbnN0IHVjb250ZXh0XzsgIC8vIGFsc28g ZnJvbSB0aGUgc2lnbmFsIGhhbmRsZXIKKy0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAh ZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgY29uc3Qg Z29vZ2xlX2JyZWFrcGFkOjp2c3RhdGVfdCogY29uc3QgdmVjdG9yX3N0YXRlXzsKKysjZWxpZiAh ZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorICAgY29uc3QgZ29v Z2xlX2JyZWFrcGFkOjpmcHN0YXRlX3QqIGNvbnN0IGZsb2F0X3N0YXRlXzsgIC8vIGRpdHRvCisg I2VuZGlmCisgICBMaW51eER1bXBlciogZHVtcGVyXzsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgKKysrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgKK0BAIC00Nyw2ICs0 Nyw4IEBAIGNsYXNzIEV4Y2VwdGlvbkhhbmRsZXI7CisgCisgI2lmIGRlZmluZWQoX19hYXJjaDY0 X18pCisgdHlwZWRlZiBzdHJ1Y3QgZnBzaW1kX2NvbnRleHQgZnBzdGF0ZV90OworKyNlbGlmIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKKyt0eXBlZGVmIHZycmVnc2V0X3QgdnN0YXRlX3Q7CisgI2Vs aWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKyB0eXBlZGVm IHN0cnVjdCBfZnBzdGF0ZSBmcHN0YXRlX3Q7CisgI2VuZGlmCistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlcl91bml0dGVzdC5jYworKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXJf dW5pdHRlc3QuY2MKK0BAIC03MTAsNiArNzEwLDkgQEAgVEVTVChNaW5pZHVtcFdyaXRlclRlc3Qs IEludmFsaWRTdGFja1BvaW50ZXIpIHsKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorICAgY29u dGV4dC5jb250ZXh0LnVjX21jb250ZXh0LmdyZWdzW01EX0NPTlRFWFRfTUlQU19SRUdfU1BdID0K KyAgICAgICBpbnZhbGlkX3N0YWNrX3BvaW50ZXI7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQorKyAgY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9Q UEM2NF9SRUdfU1BdID0KKysgICAgICBpbnZhbGlkX3N0YWNrX3BvaW50ZXI7CisgI2Vsc2UKKyAj IGVycm9yICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHll dC4iCisgI2VuZGlmCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9m aWxlLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlLmNj CitAQCAtNjUsOCArNjUsNyBAQCBib29sIE1lbW9yeU1hcHBlZEZpbGU6Ok1hcChjb25zdCBjaGFy KiBwYXRoLCBzaXplX3Qgb2Zmc2V0KSB7CisgICB9CisgCisgI2lmIGRlZmluZWQoX194ODZfNjRf XykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXAorLSAgIChkZWZpbmVkKF9fbWlwc19fKSAm JiBfTUlQU19TSU0gPT0gX0FCSTY0KQorLQorKyAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQ U19TSU0gPT0gX0FCSTY0KSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICBzdHJ1Y3Qga2Vy bmVsX3N0YXQgc3Q7CisgICBpZiAoc3lzX2ZzdGF0KGZkLCAmc3QpID09IC0xIHx8IHN0LnN0X3Np emUgPCAwKSB7CisgI2Vsc2UKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFw cGVkX2ZpbGVfdW5pdHRlc3QuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlf bWFwcGVkX2ZpbGVfdW5pdHRlc3QuY2MKK0BAIC0xNzYsOSArMTc2LDEwIEBAIFRFU1RfRihNZW1v cnlNYXBwZWRGaWxlVGVzdCwgUmVtYXBBZnRlck1hcCkgeworIFRFU1RfRihNZW1vcnlNYXBwZWRG aWxlVGVzdCwgTWFwV2l0aE9mZnNldCkgeworICAgLy8gUHV0IG1vcmUgZGF0YSBpbiB0aGUgdGVz dCBmaWxlIHRoaXMgdGltZS4gT2Zmc2V0cyBjYW4gb25seSBiZQorICAgLy8gZG9uZSBvbiBwYWdl IGJvdW5kYXJpZXMsIHNvIHdlIG5lZWQgYSB0d28gcGFnZSBmaWxlIHRvIHRlc3QgdGhpcy4KKy0g IGNvbnN0IGludCBwYWdlX3NpemUgPSA0MDk2OworLSAgY2hhciBkYXRhMVsyICogcGFnZV9zaXpl XTsKKy0gIHNpemVfdCBkYXRhMV9zaXplID0gc2l6ZW9mKGRhdGExKTsKKysgIGNvbnN0IGludCBw YWdlX3NpemUgPSBnZXRwYWdlc2l6ZSgpOworKyAgY2hhciAqZGF0YTEgPSBzdGF0aWNfY2FzdDxj aGFyKj4obWFsbG9jKDIgKiBwYWdlX3NpemUpKTsKKysgIEVYUEVDVF9UUlVFKGRhdGExICE9IE5V TEwpOworKyAgc2l6ZV90IGRhdGExX3NpemUgPSAoMiAqIHBhZ2Vfc2l6ZSk7CisgICBmb3IgKHNp emVfdCBpID0gMDsgaSA8IGRhdGExX3NpemU7ICsraSkgeworICAgICBkYXRhMVtpXSA9IGkgJiAw eDdmOworICAgfQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL21lbW9yeV9hbGxvY2F0b3JfdW5pdHRl c3QuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9tZW1vcnlfYWxsb2NhdG9yX3VuaXR0ZXN0LmNj CitAQCAtNTcsOCArNTcsOSBAQCBURVNUKFBhZ2VBbGxvY2F0b3JUZXN0LCBMYXJnZU9iamVjdCkg eworIAorICAgRVhQRUNUX0VRKDBVLCBhbGxvY2F0b3IucGFnZXNfYWxsb2NhdGVkKCkpOworICAg dWludDhfdCAqcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGFsbG9jYXRvci5BbGxvYygx MDAwMCkpOworKyAgdWludDY0X3QgZXhwZWN0ZWRfcGFnZXMgPSAxICsgKCgxMDAwMCAtIDEpIC8g Z2V0cGFnZXNpemUoKSk7CisgICBBU1NFUlRfRkFMU0UocCA9PSBOVUxMKTsKKy0gIEVYUEVDVF9F USgzVSwgYWxsb2NhdG9yLnBhZ2VzX2FsbG9jYXRlZCgpKTsKKysgIEVYUEVDVF9FUShleHBlY3Rl ZF9wYWdlcywgYWxsb2NhdG9yLnBhZ2VzX2FsbG9jYXRlZCgpKTsKKyAgIGZvciAodW5zaWduZWQg aSA9IDE7IGkgPCAxMDsgKytpKSB7CisgICAgIHVpbnQ4X3QgKnAgPSByZWludGVycHJldF9jYXN0 PHVpbnQ4X3QqPihhbGxvY2F0b3IuQWxsb2MoaSkpOworICAgICBBU1NFUlRfRkFMU0UocCA9PSBO VUxMKTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV9saW51eC5jYwor KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvcHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X2xpbnV4LmNjCitAQCAtMjAy LDEyICsyMDIsMTQgQEAgYm9vbCBFeHBsb2l0YWJpbGl0eUxpbnV4OjpFbmRlZE9uSWxsZWdhbFdy aXRlKHVpbnQ2NF90IGluc3RydWN0aW9uX3B0cikgeworICAgLy8gQ2hlY2sgYXJjaGl0ZWN0dXJl IGFuZCBzZXQgYXJjaGl0ZWN0dXJlIHZhcmlhYmxlIHRvIGNvcnJlc3BvbmRpbmcgZmxhZworICAg Ly8gaW4gb2JqZHVtcC4KKyAgIHN3aXRjaCAoY29udGV4dC0+R2V0Q29udGV4dENQVSgpKSB7Cisr I2lmIGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KQorICAgICBjYXNlIE1EX0NP TlRFWFRfWDg2OgorICAgICAgIGFyY2hpdGVjdHVyZSA9ICJpMzg2IjsKKyAgICAgICBicmVhazsK KyAgICAgY2FzZSBNRF9DT05URVhUX0FNRDY0OgorICAgICAgIGFyY2hpdGVjdHVyZSA9ICJpMzg2 Ong4Ni02NCI7CisgICAgICAgYnJlYWs7CisrI2VuZGlmCisgICAgIGRlZmF1bHQ6CisgICAgICAg Ly8gVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLiBOb3RlIHRoYXQgQVJNIGFyY2hpdGVjdHVyZXMg YXJlIG5vdAorICAgICAgIC8vIHN1cHBvcnRlZCBiZWNhdXNlIG9iamR1bXAgZG9lcyBub3Qgc3Vw cG9ydCBBUk0uCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfdW5pdHRl c3QuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV91bml0dGVzdC5j YworQEAgLTEwNCw2ICsxMDQsOCBAQCBFeHBsb2l0YWJpbGl0eUZvcihjb25zdCBzdHJpbmcmIGZp bGVuYW1lKSB7CisgfQorIAorIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0V2luZG93c0Vu Z2luZSkgeworKy8vIFRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIG9ubHkgZXhlY3V0YWJsZSBvbiBh biB4ODYtY2xhc3MgbGludXggbWFjaGluZS4KKysjaWYgIWRlZmluZWQoX1dJTjMyKSAmJiAoZGVm aW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQorICAgQVNTRVJUX0VRKGdvb2dsZV9i cmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKKyAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0 eUZvcigiYXNjaWlfcmVhZF9hdi5kbXAiKSk7CisgICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFk OjpFWFBMT0lUQUJJTElUWV9ISUdILAorQEAgLTEzNiw5ICsxMzgsMTIgQEAgVEVTVChFeHBsb2l0 YWJpbGl0eVRlc3QsIFRlc3RXaW5kb3dzRW5naW5lKSB7CisgICAgICAgICAgICAgRXhwbG9pdGFi aWxpdHlGb3IoInJlYWRfYXZfY2xvYmJlcl93cml0ZS5kbXAiKSk7CisgICBBU1NFUlRfRVEoZ29v Z2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9MT1csCisgICAgICAgICAgICAgRXhwbG9pdGFi aWxpdHlGb3IoInJlYWRfYXZfY29uZGl0aW9uYWwuZG1wIikpOworKyNlbmRpZgorIH0KKyAKKyBU RVNUKEV4cGxvaXRhYmlsaXR5VGVzdCwgVGVzdExpbnV4RW5naW5lKSB7CisrLy8gVGhlIGZvbGxv d2luZyB0ZXN0cyBhcmUgb25seSBleGVjdXRhYmxlIG9uIGFuIHg4Ni1jbGFzcyBsaW51eCBtYWNo aW5lLgorKyNpZiBkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkKKyAgIEFTU0VS VF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0lOVEVSRVNUSU5HLAorICAgICAg ICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF9udWxsX3JlYWRfYXYuZG1wIikpOworICAg QVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKK0BAIC0xNzEs NyArMTc2LDggQEAgVEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RMaW51eEVuZ2luZSkgewor ICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF9leGVjdXRhYmxlX2hlYXAuZG1w IikpOworICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwK KyAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfam1wX3RvX21vZHVsZV9ub3Rf ZXhlX3JlZ2lvbi5kbXAiKSk7CistI2lmbmRlZiBfV0lOMzIKKysjZW5kaWYKKysjaWYgIWRlZmlu ZWQoX1dJTjMyKSAmJiAoZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQorICAg QVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKKyAgICAgICAg ICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfd3JpdGVfdG9fbm9ud3JpdGFibGVfbW9kdWxl LmRtcCIpKTsKKyAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJ R0gsCitAQCAtMTgyLDEwICsxODgsMTAgQEAgVEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RM aW51eEVuZ2luZSkgeworICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF93cml0 ZV90b19vdXRzaWRlX21vZHVsZV92aWFfbWF0aC5kbXAiKSk7CisgICBBU1NFUlRfRVEoZ29vZ2xl X2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9JTlRFUkVTVElORywKKyAgICAgICAgICAgICBFeHBs b2l0YWJpbGl0eUZvcigibGludXhfd3JpdGVfdG9fdW5kZXJfNGsuZG1wIikpOworLSNlbmRpZiAg Ly8gX1dJTjMyCisrI2VuZGlmICAvLyAhZGVmaW5lZChfV0lOMzIpICYmICghZGVmaW5lZChfX2kz ODYpICYmICFkZWZpbmVkKF9feDg2XzY0KSkKKyB9CisgCistI2lmbmRlZiBfV0lOMzIKKysjaWYg IWRlZmluZWQoX1dJTjMyKSAmJiAoZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQp KQorIFRFU1QoRXhwbG9pdGFiaWxpdHlMaW51eFV0aWxzVGVzdCwgRGlzYXNzZW1ibGVCeXRlc1Rl c3QpIHsKKyAgIEFTU0VSVF9GQUxTRShFeHBsb2l0YWJpbGl0eUxpbnV4VGVzdDo6RGlzYXNzZW1i bGVCeXRlcygiIiwgTlVMTCwgNSwgTlVMTCkpOworICAgdWludDhfdCBieXRlc1s2XSA9IHsweGM3 LCAweDAsIDB4NSwgMHgwLCAweDAsIDB4MH07CitAQCAtMzAxLDYgKzMwNyw3IEBAIFRFU1QoRXhw bG9pdGFiaWxpdHlMaW51eFV0aWxzVGVzdCwgQ2FsY3VsYXRlQWRkcmVzc1Rlc3QpIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250 ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZ3cml0ZV9hZGRyZXNzKSk7CisgfQorLSNlbmRpZiAgLy8gX1dJTjMyCisrI2VuZGlm ICAvLyAhZGVmaW5lZChfV0lOMzIpICYmIChkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4 Nl82NCkpCisrCisgCisgfSAgLy8gbmFtZXNwYWNlCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy90b29scy9saW51 eC9tZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvdG9vbHMvbGludXgv bWQyY29yZS9taW5pZHVtcC0yLWNvcmUuY2MKK0BAIC03Niw2ICs3Niw4IEBACisgICAjZGVmaW5l IEVMRl9BUkNIICBFTV9NSVBTCisgI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKKyAgICNkZWZp bmUgRUxGX0FSQ0ggIEVNX0FBUkNINjQKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisr ICAjZGVmaW5lIEVMRl9BUkNIICBFTV9QUEM2NAorICNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9f YXJtX18pCitAQCAtODYsNiArODgsOCBAQCB0eXBlZGVmIHVzZXJfcmVncyB1c2VyX3JlZ3Nfc3Ry dWN0OworICNlbGlmIGRlZmluZWQgKF9fbWlwc19fKQorIC8vIFRoaXMgZmlsZS1sb2NhbCB0eXBl ZGVmIHNpbXBsaWZpZXMgdGhlIHNvdXJjZSBjb2RlLgorIHR5cGVkZWYgZ3JlZ3NldF90IHVzZXJf cmVnc19zdHJ1Y3Q7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorK3R5cGVkZWYgc3Ry dWN0IHB0X3JlZ3MgdXNlcl9yZWdzX3N0cnVjdDsKKyAjZW5kaWYKKyAKKyB1c2luZyBnb29nbGVf YnJlYWtwYWQ6Ok1EVHlwZUhlbHBlcjsKK0BAIC0zMjAsNiArMzI0LDkgQEAgc3RydWN0IENyYXNo ZWRQcm9jZXNzIHsKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKKyAgICAgdXNl cl9mcHNpbWRfc3RydWN0IGZwcmVnczsKKysjZW5kaWYKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQorKyAgICBtY29udGV4dF90IG1jb250ZXh0OworICNlbmRpZgorICAgICB1aW50cHRyX3Qg c3RhY2tfYWRkcjsKKyAgICAgY29uc3QgdWludDhfdCogc3RhY2s7CitAQCAtNTM0LDYgKzU0MSwz OCBAQCBQYXJzZVRocmVhZFJlZ2lzdGVycyhDcmFzaGVkUHJvY2Vzczo6VGhyZWFkKiB0aHJlYWQs CisgICB0aHJlYWQtPm1jb250ZXh0LmZwY19laXIgPSByYXdyZWdzLT5mbG9hdF9zYXZlLmZpcjsK KyAjZW5kaWYKKyB9CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorK3N0YXRpYyB2b2lk CisrUGFyc2VUaHJlYWRSZWdpc3RlcnMoQ3Jhc2hlZFByb2Nlc3M6OlRocmVhZCogdGhyZWFkLAor KyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1pbmlkdW1wTWVtb3J5UmFuZ2UmIHJhbmdlKSB7 CisrICBjb25zdCBNRFJhd0NvbnRleHRQUEM2NCogcmF3cmVncyA9IHJhbmdlLkdldERhdGE8TURS YXdDb250ZXh0UFBDNjQ+KDApOworKworKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9DT05URVhU X1BQQzY0X0dQUl9DT1VOVDsgaSsrKQorKyAgICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbaV0g PSByYXdyZWdzLT5ncHJbaV07CisrCisrICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfTE5L XSA9IHJhd3JlZ3MtPmxyOworKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX05JUF0gPSBy YXdyZWdzLT5zcnIwOworKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX01TUl0gPSByYXdy ZWdzLT5zcnIxOworKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX0NDUl0gPSByYXdyZWdz LT5jcjsKKysgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9YRVJdID0gcmF3cmVncy0+eGVy OworKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX0NUUl0gPSByYXdyZWdzLT5jdHI7Cisr ICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnJzYXZlID0gcmF3cmVncy0+dnJzYXZlOworKwor KyAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7 IGkrKykKKysgICAgICB0aHJlYWQtPm1jb250ZXh0LmZwX3JlZ3NbaV0gPSByYXdyZWdzLT5mbG9h dF9zYXZlLmZwcmVnc1tpXTsKKysKKysgIHRocmVhZC0+bWNvbnRleHQuZnBfcmVnc1tORlBSRUct MV0gPSByYXdyZWdzLT5mbG9hdF9zYXZlLmZwc2NyOworKworKyAgZm9yIChpbnQgaSA9IDA7IGkg PCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09VTlQ7IGkrKykgeworKyAgICAgIHRocmVhZC0+ bWNvbnRleHQudl9yZWdzLT52cnJlZ3NbaV1bMF0gPSByYXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZl X3ZyW2ldLmhpZ2ggPj4gMzI7CisrICAgICAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZycmVn c1tpXVsxXSA9IHJhd3JlZ3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0uaGlnaDsKKysgICAgICB0 aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnJyZWdzW2ldWzJdID0gcmF3cmVncy0+dmVjdG9yX3Nh dmUuc2F2ZV92cltpXS5sb3cgPj4gMzI7CisrICAgICAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3Mt PnZycmVnc1tpXVszXSA9IHJhd3JlZ3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0ubG93OworKyAg fQorKworKyAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZzY3IudnNjcl93b3JkID0gcmF3cmVn cy0+dmVjdG9yX3NhdmUuc2F2ZV92c2NyLmxvdyAmIDB4RkZGRkZGRkY7CisrfQorKworICNlbHNl CisgI2Vycm9yICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3Jt IHlldCIKKyAjZW5kaWYKK0BAIC02MjIsNiArNjYxLDEyIEBAIFBhcnNlU3lzdGVtSW5mbyhjb25z dCBPcHRpb25zJiBvcHRpb25zLCBDcmFzaGVkUHJvY2VzcyogY3Jhc2hpbmZvLAorICMgZWxzZQor ICMgIGVycm9yICJUaGlzIG1pcHMgQUJJIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIChuMzIp IgorICMgZW5kaWYKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBpZiAoc3lzaW5m by0+cHJvY2Vzc29yX2FyY2hpdGVjdHVyZSAhPSBNRF9DUFVfQVJDSElURUNUVVJFX1BQQzY0KSB7 CisrICAgIGZwcmludGYoc3RkZXJyLAorKyAgICAgICAgICAgICJUaGlzIHZlcnNpb24gb2YgbWlu aWR1bXAtMi1jb3JlIG9ubHkgc3VwcG9ydHMgUFBDNjQuXG4iKTsKKysgICAgZXhpdCgxKTsKKysg IH0KKyAjZWxzZQorICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91 ciBwbGF0Zm9ybSB5ZXQiCisgI2VuZGlmCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL0NPTlRSSUJVVE9SUworKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFz aHBhZC9DT05UUklCVVRPUlMKK0BAIC0xMywzICsxMyw0IEBAIE1hcmsgTWVudG92YWkgPG1hcmtA Y2hyb21pdW0ub3JnPgorIFJvYmVydCBTZXNlayA8cnNlc2VrQGNocm9taXVtLm9yZz4KKyBTY290 dCBHcmFoYW0gPHNjb3R0bWdAY2hyb21pdW0ub3JnPgorIEpvc2h1YSBQZXJhemEgPGpwZXJhemFA Y2hyb21pdW0ub3JnPgorK1NoYXduIEFuYXN0YXNpbyA8c2hhd25AYW5hc3Rhcy5pbz4KKy0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvY29tcGF0L2xpbnV4L3N5cy91c2VyLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvY29tcGF0L2xpbnV4L3N5 cy91c2VyLmgKK0BAIC0xNSw2ICsxNSw3IEBACisgI2lmbmRlZiBDUkFTSFBBRF9DT01QQVRfTElO VVhfU1lTX1VTRVJfSF8KKyAjZGVmaW5lIENSQVNIUEFEX0NPTVBBVF9MSU5VWF9TWVNfVVNFUl9I XworIAorKyNpbmNsdWRlIDxjc3RkZGVmPgorICNpbmNsdWRlX25leHQgPHN5cy91c2VyLmg+Cisg CisgI2luY2x1ZGUgPGZlYXR1cmVzLmg+CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2Nv bnRleHQuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0LmgKK0BAIC01OTIs NiArNTkyLDcwIEBAIHN0cnVjdCBNaW5pZHVtcENvbnRleHRNSVBTNjQgeworICAgdWludDY0X3Qg ZmlyOworIH07CisgCisrLy8hIFxicmllZiBwcGM2NC1zcGVjaWZpYyBmbGFncyBmb3IgTWluaWR1 bXBQUEM2NDo6Y29udGV4dF9mbGFncworKy8vISBCYXNlZCBvbiBtaW5pZHVtcF9jcHVfcHBjNjQu aCBmcm9tIGJyZWFrcGFkCisrZW51bSBNaW5pZHVtcENvbnRleHRQUEM2NEZsYWdzIDogdWludDMy X3QgeworKyAgLy8hIFxicmllZiBJZGVudGlmaWVzIHRoZSBjb250ZXh0IGFzIFBQQzY0LgorKyAg a01pbmlkdW1wQ29udGV4dFBQQzY0ID0gMHgwMTAwMDAwMCwKKysKKysgIC8vISBcYnJpZWYgSW5k aWNhdGVzIHRoZSB2YWxpZGl0eSBvZiBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzLgorKyAgLy8h CisrICAvLyEgUmVnaXN0ZXJzIGByMGAtYHIzMWAsIGBuaXBgLCBgbXNyYCwgYGxyYCwgZXRjLiBh cmUgdmFsaWQuCisrICBrTWluaWR1bXBDb250ZXh0UFBDNjRCYXNlID0ga01pbmlkdW1wQ29udGV4 dFBQQzY0IHwgMHgwMDAwMDAwMSwKKysKKysgIC8vISBcYnJpZWYgSW5kaWNhdGVzIHRoZSB2YWxp ZGl0eSBvZiBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMuCisrICAvLyEKKysgIC8vISBSZWdpc3Rl cnMgYGZwMGAtYGZwMzFgLCBgZnBzY3JgIGFyZSB2YWxpZC4KKysgIGtNaW5pZHVtcENvbnRleHRQ UEM2NEZsb2F0aW5nID0ga01pbmlkdW1wQ29udGV4dFBQQzY0IHwgMHgwMDAwMDAwOCwKKysKKysg IC8vISBcYnJpZWYgSW5kaWNhdGVzIHRoZSB2YWxpZGl0eSBvZiBBbHRpdmVjL1ZNWCByZWdpc3Rl cnMuCisrICAvLyEKKysgIC8vISBSZWdpc3RlcnMgYHYwYC1gdjMxYCwgYHZzY3JgLCBgdnJzYXZl YC4KKysgIGtNaW5pZHVtcENvbnRleHRQUEM2NFZlY3RvciA9IGtNaW5pZHVtcENvbnRleHRQUEM2 NCB8IDB4MDAwMDAwMjAsCisrCisrICAvLyEgXGJyaWVmIEluZGljYXRlcyB0aGUgdmFsaWRpdHkg b2YgYWxsIHJlZ2lzdGVycworKyAga01pbmlkdW1wQ29udGV4dFBQQzY0QWxsID0ga01pbmlkdW1w Q29udGV4dFBQQzY0QmFzZSAgICAgfAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01p bmlkdW1wQ29udGV4dFBQQzY0RmxvYXRpbmcgfAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAga01pbmlkdW1wQ29udGV4dFBQQzY0VmVjdG9yCisrfTsKKysKKysvLyEgXGJyaWVmIEEgUFBD NjQgQ1BVIGNvbnRleHQgY2FycmllZCBpbiBhIG1pbmlkdW1wIGZpbGUuCisrLy8hIEJhc2VkIG9u IG1pbmlkdW1wX2NwdV9wcGM2NC5oIGZyb20gYnJlYWtwYWQuCisrc3RydWN0IE1pbmlkdW1wQ29u dGV4dFBQQzY0IHsKKysgIHVpbnQ2NF90IGNvbnRleHRfZmxhZ3M7CisrCisrICAvLyEgXGJyaWVm IEdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMuCisrICB1aW50NjRfdCBuaXA7CisrICB1aW50NjRf dCBtc3I7CisrICB1aW50NjRfdCByZWdzWzMyXTsKKysgIHVpbnQ2NF90IGNjcjsKKysgIHVpbnQ2 NF90IHhlcjsKKysgIHVpbnQ2NF90IGxuazsKKysgIHVpbnQ2NF90IGN0cjsKKysKKysgIC8vISBc YnJpZWYgRmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzLgorKyAgZG91YmxlIGZwcmVnc1szMl07Cisr CisrICAvLyEgXGJyaWVmIEZQVSBzdGF0dXMgcmVnaXN0ZXIuCisrICBkb3VibGUgZnBzY3I7Cisr CisrICAvLyEgXGJyaWVmIEFsdGl2ZWMvVk1YIHZlY3RvciByZWdpc3RlcnMuCisrICBzdHJ1Y3Qg eworKyAgICAgIC8vISBcYnJpZWYgVmVjdG9yIHJlZ2lzdGVycyBhcmUgMTI4Yml0cy4KKysgICAg ICB1aW50MTI4X3N0cnVjdCBzYXZlX3ZyWzMyXTsKKysgICAgICB1aW50MTI4X3N0cnVjdCBzYXZl X3ZzY3I7CisrCisrICAgICAgLy8hIFxicmllZiBQYWRkaW5nIGluY2x1ZGVkIGZvciBicmVha3Bh ZCBjb21wYXRpYmlsdGl5LgorKyAgICAgIHVpbnQzMl90IHNhdmVfcGFkNVs0XTsKKysKKysgICAg ICAvLyEgXGJyaWVmIFZSU0FWRSByZWdpc3Rlci4KKysgICAgICB1aW50MzJfdCBzYXZlX3Zyc2F2 ZTsKKysKKysgICAgICAvLyEgXGJyaWVmIFBhZGRpbmcgaW5jbHVkZWQgZm9yIGJyZWFrcGFkIGNv bXBhdGliaWx0aXkuCisrICAgICAgdWludDMyX3Qgc2F2ZV9wYWQ2WzddOworKyAgfSB2cmVnczsK Kyt9OworKworIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAorIAorICNlbmRpZiAgLy8gQ1JBU0hQ QURfTUlOSURVTVBfTUlOSURVTVBfQ09OVEVYVF9IXworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5p ZHVtcF9jb250ZXh0X3dyaXRlci5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250 ZXh0X3dyaXRlci5jYworQEAgLTEwMSw2ICsxMDEsMTMgQEAgTWluaWR1bXBDb250ZXh0V3JpdGVy OjpDcmVhdGVGcm9tU25hcHNob3QoY29uc3QgQ1BVQ29udGV4dCogY29udGV4dF9zbmFwc2hvdCkg eworICAgICAgIGJyZWFrOworICAgICB9CisgCisrICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVBQ QzY0OiB7CisrICAgICAgY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TWluaWR1bXBDb250ZXh0 UFBDNjRXcml0ZXI+KCk7CisrICAgICAgcmVpbnRlcnByZXRfY2FzdDxNaW5pZHVtcENvbnRleHRQ UEM2NFdyaXRlcio+KGNvbnRleHQuZ2V0KCkpCisrICAgICAgICAgIC0+SW5pdGFsaXplRnJvbVNu YXBzaG90KGNvbnRleHRfc25hcHNob3QtPnBwYzY0KTsKKysgICAgICBicmVhazsKKysgICAgfQor KworICAgICBkZWZhdWx0OiB7CisgICAgICAgTE9HKEVSUk9SKSA8PCAidW5rbm93biBjb250ZXh0 IGFyY2hpdGVjdHVyZSAiCisgICAgICAgICAgICAgICAgICA8PCBjb250ZXh0X3NuYXBzaG90LT5h cmNoaXRlY3R1cmU7CitAQCAtNDUzLDQgKzQ2MCw0NyBAQCBzaXplX3QgTWluaWR1bXBDb250ZXh0 TUlQUzY0V3JpdGVyOjpDb250ZXh0U2l6ZSgpIGNvbnN0IHsKKyAgIHJldHVybiBzaXplb2YoY29u dGV4dF8pOworIH0KKyAKKytNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6TWluaWR1bXBDb250 ZXh0UFBDNjRXcml0ZXIoKQorKyAgOiBNaW5pZHVtcENvbnRleHRXcml0ZXIoKSwgY29udGV4dF8o KSB7CisrICAgIGNvbnRleHRfLmNvbnRleHRfZmxhZ3MgPSBrTWluaWR1bXBDb250ZXh0UFBDNjQ7 CisrfQorKworK01pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjp+TWluaWR1bXBDb250ZXh0UFBD NjRXcml0ZXIoKSA9IGRlZmF1bHQ7CisrCisrdm9pZCBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRl cjo6SW5pdGFsaXplRnJvbVNuYXBzaG90KAorKyAgICBjb25zdCBDUFVDb250ZXh0UFBDNjQqIGNv bnRleHRfc25hcHNob3QpIHsKKysgIERDSEVDS19FUShzdGF0ZSgpLCBrU3RhdGVNdXRhYmxlKTsK KysgIERDSEVDS19FUShjb250ZXh0Xy5jb250ZXh0X2ZsYWdzLCBrTWluaWR1bXBDb250ZXh0UFBD NjQpOworKworKyAgY29udGV4dF8uY29udGV4dF9mbGFncyA9IGtNaW5pZHVtcENvbnRleHRQUEM2 NEFsbDsKKysKKysgIG1lbWNweShjb250ZXh0Xy5yZWdzLCBjb250ZXh0X3NuYXBzaG90LT5yZWdz LCBzaXplb2YoY29udGV4dF8ucmVncykpOworKyAgY29udGV4dF8ubmlwID0gY29udGV4dF9zbmFw c2hvdC0+bmlwOworKyAgY29udGV4dF8ubXNyID0gY29udGV4dF9zbmFwc2hvdC0+bXNyOworKyAg Y29udGV4dF8uY2NyID0gY29udGV4dF9zbmFwc2hvdC0+Y2NyOworKyAgY29udGV4dF8ueGVyID0g Y29udGV4dF9zbmFwc2hvdC0+eGVyOworKyAgY29udGV4dF8ubG5rID0gY29udGV4dF9zbmFwc2hv dC0+bG5rOworKyAgY29udGV4dF8uY3RyID0gY29udGV4dF9zbmFwc2hvdC0+Y3RyOworKworKyAg bWVtY3B5KGNvbnRleHRfLmZwcmVncywgY29udGV4dF9zbmFwc2hvdC0+ZnByZWdzLCBzaXplb2Yo Y29udGV4dF8uZnByZWdzKSk7CisrICBjb250ZXh0Xy5mcHNjciA9IGNvbnRleHRfc25hcHNob3Qt PmZwc2NyOworKworKyAgbWVtY3B5KGNvbnRleHRfLnZyZWdzLnNhdmVfdnIsIGNvbnRleHRfc25h cHNob3QtPnZyZWdzLnNhdmVfdnIsCisrICAgICAgICAgc2l6ZW9mKGNvbnRleHRfLnZyZWdzLnNh dmVfdnIpKTsKKysgIG1lbWNweSgmY29udGV4dF8udnJlZ3Muc2F2ZV92c2NyLCAmY29udGV4dF9z bmFwc2hvdC0+dnJlZ3Muc2F2ZV92c2NyLAorKyAgICAgICAgIHNpemVvZihjb250ZXh0Xy52cmVn cy5zYXZlX3ZzY3IpKTsKKysgIGNvbnRleHRfLnZyZWdzLnNhdmVfdnJzYXZlID0gY29udGV4dF9z bmFwc2hvdC0+dnJlZ3Muc2F2ZV92cnNhdmU7CisrfQorKworK2Jvb2wgTWluaWR1bXBDb250ZXh0 UFBDNjRXcml0ZXI6OldyaXRlT2JqZWN0KAorKyAgICBGaWxlV3JpdGVySW50ZXJmYWNlKiBmaWxl X3dyaXRlcikgeworKyAgRENIRUNLX0VRKHN0YXRlKCksIGtTdGF0ZVdyaXRhYmxlKTsKKysgIHJl dHVybiBmaWxlX3dyaXRlci0+V3JpdGUoJmNvbnRleHRfLCBzaXplb2YoY29udGV4dF8pKTsKKyt9 CisrCisrc2l6ZV90IE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjpDb250ZXh0U2l6ZSgpIGNv bnN0IHsKKysgIERDSEVDS19HRShzdGF0ZSgpLCBrU3RhdGVGcm96ZW4pOworKyAgcmV0dXJuIHNp emVvZihjb250ZXh0Xyk7CisrfQorKworIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAorLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFz aHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlci5oCisrKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlk dW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVyLmgKK0BAIC0zMTUsNiArMzE1LDQ1IEBAIGNsYXNz IE1pbmlkdW1wQ29udGV4dE1JUFM2NFdyaXRlciBmaW5hbCA6IHB1YmxpYyBNaW5pZHVtcENvbnRl eHRXcml0ZXIgeworICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKE1pbmlkdW1wQ29udGV4dE1J UFM2NFdyaXRlcik7CisgfTsKKyAKKytjbGFzcyBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlciBm aW5hbCA6IHB1YmxpYyBNaW5pZHVtcENvbnRleHRXcml0ZXIgeworKyBwdWJsaWM6CisrICBNaW5p ZHVtcENvbnRleHRQUEM2NFdyaXRlcigpOworKyAgfk1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVy KCkgb3ZlcnJpZGU7CisrCisrICAvLyEgXGJyaWVmIEluaXRhbGl6ZXMgdGhlIE1pbmlkdW1wQ29u dGV4dFBQQzY0IGJhc2VkIG9uIFxhIGNvbnRleHRfc25hcHNob3QuCisrICAvLyEKKysgIC8vISBc cGFyYW1baW5dIGNvbnRleHRfc25hcHNob3QgVGhlIGNvbnRleHQgc25hcHNob3QgdG8gdXNlIGFz IHNvdXJjZSBkYXRhLgorKyAgLy8hCisrICAvLyEgXG5vdGUgVmFsaWQgaW4gI2tTdGF0ZU11dGFi bGUuIE5vIG11dGF0aW9uIG9mIGNvbnRleHQoKSBtYXkgYmUgZG9uZSBiZWZvcmUKKysgIC8vISAg ICAgY2FsbGluZyB0aGlzIG1ldGhvZCwgYW5kIGl0IGlzIG5vdCBub3JtYWxseSBuZWNlc3Nhcnkg dG8gYWx0ZXIKKysgIC8vISAgICAgY29udGV4dCgpIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2Qu CisrICB2b2lkIEluaXRhbGl6ZUZyb21TbmFwc2hvdChjb25zdCBDUFVDb250ZXh0UFBDNjQqIGNv bnRleHRfc25hcHNob3QpOworKworKyAgLy8hIFxicmllZiBSZXR1cm5zIGEgcG9pbnRlciB0byB0 aGUgY29udGV4dCBzdHJ1Y3R1cmUgdGhhdCB0aGlzIG9iamVjdCB3aWxsCisrICAvLyEgICAgIHdy aXRlLgorKyAgLy8hCisrICAvLyEgXGF0dGVudGlvbiBUaGlzIHJldHVybnMgYSBub24tYGNvbnN0 YCBwb2ludGVyIHRvIHRoaXMgb2JqZWN04oCZcyBwcml2YXRlCisrICAvLyEgICAgIGRhdGEgc28g dGhhdCBhIGNhbGxlciBjYW4gcG9wdWxhdGUgdGhlIGNvbnRleHQgc3RydWN0dXJlIGRpcmVjdGx5 LgorKyAgLy8hICAgICBUaGlzIGlzIGRvbmUgYmVjYXVzZSBwcm92aWRpbmcgc2V0dGVyIGludGVy ZmFjZXMgdG8gZWFjaCBmaWVsZCBpbiB0aGUKKysgIC8vISAgICAgY29udGV4dCBzdHJ1Y3R1cmUg d291bGQgYmUgdW53aWVsZHkgYW5kIGN1bWJlcnNvbWUuIENhcmUgbXVzdCBiZSB0YWtlbgorKyAg Ly8hICAgICB0byBwb3B1bGF0ZSB0aGUgY29udGV4dCBzdHJ1Y3R1cmUgY29ycmVjdGx5LiBUaGUg Y29udGV4dCBzdHJ1Y3R1cmUKKysgIC8vISAgICAgbXVzdCBvbmx5IGJlIG1vZGlmaWVkIHdoaWxl IHRoaXMgb2JqZWN0IGlzIGluIHRoZSAja1N0YXRlTXV0YWJsZQorKyAgLy8hICAgICBzdGF0ZS4K KysgIE1pbmlkdW1wQ29udGV4dFBQQzY0KiBjb250ZXh0KCkgeyByZXR1cm4gJmNvbnRleHRfOyB9 CisrCisrIHByb3RlY3RlZDoKKysgIC8vIE1pbmlkdW1wV3JpdGFibGU6CisrICBib29sIFdyaXRl T2JqZWN0KEZpbGVXcml0ZXJJbnRlcmZhY2UqIGZpbGVfd3JpdGVyKSBvdmVycmlkZTsKKysKKysg IC8vIE1pbmlkdW1wQ29udGV4dFdyaXRlcjoKKysgIHNpemVfdCBDb250ZXh0U2l6ZSgpIGNvbnN0 IG92ZXJyaWRlOworKworKyBwcml2YXRlOgorKyAgTWluaWR1bXBDb250ZXh0UFBDNjQgY29udGV4 dF87CisrCisrICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oTWluaWR1bXBDb250ZXh0UFBDNjRX cml0ZXIpOworK307CisrCisgfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCisgCisgI2VuZGlmICAv LyBDUkFTSFBBRF9NSU5JRFVNUF9NSU5JRFVNUF9DT05URVhUX1dSSVRFUl9IXworLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlcl90ZXN0LmNjCisrKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21p bmlkdW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVyX3Rlc3QuY2MKK0BAIC0yMTMsNiArMjEzLDIx IEBAIFRFU1QoTWluaWR1bXBDb250ZXh0V3JpdGVyLCBNSVBTNjRfRnJvbVNuYXBzaG90KSB7Cisg ICAgICAgY29udGV4dCwgRXhwZWN0TWluaWR1bXBDb250ZXh0TUlQUzY0LCBrU2VlZCk7CisgfQor IAorK1RFU1QoTWluaWR1bXBDb250ZXh0V3JpdGVyLCBQUEM2NF9aZXJvcykgeworKyAgRW1wdHlD b250ZXh0VGVzdDxNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlciwgTWluaWR1bXBDb250ZXh0UFBD NjQ+KAorKyAgICBFeHBlY3RNaW5pZHVtcENvbnRleHRQUEM2NCk7CisrfQorKworK1RFU1QoTWlu aWR1bXBDb250ZXh0V3JpdGVyLCBQUEM2NF9Gcm9tU25hcHNob3QpIHsKKysgIGNvbnN0ZXhwciB1 aW50MzJfdCBrU2VlZCA9IDY0OworKyAgQ1BVQ29udGV4dFBQQzY0IGNvbnRleHRfcHBjNjQ7Cisr ICBDUFVDb250ZXh0IGNvbnRleHQ7CisrICBjb250ZXh0LnBwYzY0ID0gJmNvbnRleHRfcHBjNjQ7 CisrICBJbml0aWFsaXplQ1BVQ29udGV4dFBQQzY0KCZjb250ZXh0LCBrU2VlZCk7CisrICBGcm9t U25hcHNob3RUZXN0PE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyLCBNaW5pZHVtcENvbnRleHRQ UEM2ND4oCisrICAgICAgY29udGV4dCwgRXhwZWN0TWluaWR1bXBDb250ZXh0UFBDNjQsIGtTZWVk KTsKKyt9CisrCisgfSAgLy8gbmFtZXNwYWNlCisgfSAgLy8gbmFtZXNwYWNlIHRlc3QKKyB9ICAv LyBuYW1lc3BhY2UgY3Jhc2hwYWQKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfbWlzY19p bmZvX3dyaXRlci5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9taXNjX2luZm9fd3Jp dGVyLmNjCitAQCAtMTI2LDYgKzEyNiw4IEBAIHN0ZDo6c3RyaW5nIE1pbmlkdW1wTWlzY0luZm9E ZWJ1Z0J1aWxkU3RyaW5nKCkgeworICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtDUFVbXSA9ICJt aXBzIjsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFM2NEVMKQorICAgc3RhdGljIGNvbnN0 ZXhwciBjaGFyIGtDUFVbXSA9ICJtaXBzNjQiOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBD NjQpCisrICBzdGF0aWMgY29uc3RleHByIGNoYXIga0NQVVtdID0gInBwYzY0IjsKKyAjZWxzZQor ICNlcnJvciBkZWZpbmUga0NQVSBmb3IgdGhpcyBDUFUKKyAjZW5kaWYKKy0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25h cHNob3QvY2FwdHVyZV9tZW1vcnkuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY2FwdHVyZV9tZW1v cnkuY2MKK0BAIC0xMTEsNiArMTExLDExIEBAIHZvaWQgQ2FwdHVyZU1lbW9yeTo6UG9pbnRlZFRv QnlDb250ZXh0KGNvbnN0IENQVUNvbnRleHQmIGNvbnRleHQsCisgICBmb3IgKHNpemVfdCBpID0g MDsgaSA8IGJhc2U6OnNpemUoY29udGV4dC5taXBzZWwtPnJlZ3MpOyArK2kpIHsKKyAgICAgTWF5 YmVDYXB0dXJlTWVtb3J5QXJvdW5kKGRlbGVnYXRlLCBjb250ZXh0Lm1pcHNlbC0+cmVnc1tpXSk7 CisgICB9CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICBNYXliZUNh cHR1cmVNZW1vcnlBcm91bmQoZGVsZWdhdGUsIGNvbnRleHQucHBjNjQtPm5pcCk7CisrICBmb3Ig KHNpemVfdCBpID0gMDsgaSA8IGJhc2U6OnNpemUoY29udGV4dC5wcGM2NC0+cmVncyk7ICsraSkg eworKyAgICBNYXliZUNhcHR1cmVNZW1vcnlBcm91bmQoZGVsZWdhdGUsIGNvbnRleHQucHBjNjQt PnJlZ3NbaV0pOworKyAgfQorICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmCistLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2NwdV9hcmNoaXRlY3R1cmUuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVf YXJjaGl0ZWN0dXJlLmgKK0BAIC00Myw3ICs0MywxMCBAQCBlbnVtIENQVUFyY2hpdGVjdHVyZSB7 CisgICBrQ1BVQXJjaGl0ZWN0dXJlTUlQU0VMLAorIAorICAgLy8hIFxicmllZiA2NC1iaXQgTUlQ U0VMLgorLSAga0NQVUFyY2hpdGVjdHVyZU1JUFM2NEVMCisrICBrQ1BVQXJjaGl0ZWN0dXJlTUlQ UzY0RUwsCisrCisrICAvLyEgXGJyaWVmIDY0LWJpdCBQUEM2NC4KKysgIGtDUFVBcmNoaXRlY3R1 cmVQUEM2NAorIH07CisgCisgfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCistLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3Nu YXBzaG90L2NwdV9jb250ZXh0LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmNj CitAQCAtMTY5LDYgKzE2OSw4IEBAIHVpbnQ2NF90IENQVUNvbnRleHQ6Okluc3RydWN0aW9uUG9p bnRlcigpIGNvbnN0IHsKKyAgICAgICByZXR1cm4gYXJtLT5wYzsKKyAgICAgY2FzZSBrQ1BVQXJj aGl0ZWN0dXJlQVJNNjQ6CisgICAgICAgcmV0dXJuIGFybTY0LT5wYzsKKysgICAgY2FzZSBrQ1BV QXJjaGl0ZWN0dXJlUFBDNjQ6CisrICAgICAgcmV0dXJuIHBwYzY0LT5uaXA7CisgICAgIGRlZmF1 bHQ6CisgICAgICAgTk9UUkVBQ0hFRCgpOworICAgICAgIHJldHVybiB+MHVsbDsKK0BAIC0xODUs NiArMTg3LDggQEAgdWludDY0X3QgQ1BVQ29udGV4dDo6U3RhY2tQb2ludGVyKCkgY29uc3Qgewor ICAgICAgIHJldHVybiBhcm0tPnNwOworICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVBUk02NDoK KyAgICAgICByZXR1cm4gYXJtNjQtPnNwOworKyAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVQUEM2 NDoKKysgICAgICByZXR1cm4gcHBjNjQtPnJlZ3NbMV07CisgICAgIGRlZmF1bHQ6CisgICAgICAg Tk9UUkVBQ0hFRCgpOworICAgICAgIHJldHVybiB+MHVsbDsKK0BAIC0xOTYsNiArMjAwLDcgQEAg Ym9vbCBDUFVDb250ZXh0OjpJczY0Qml0KCkgY29uc3QgeworICAgICBjYXNlIGtDUFVBcmNoaXRl Y3R1cmVYODZfNjQ6CisgICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZUFSTTY0OgorICAgICBjYXNl IGtDUFVBcmNoaXRlY3R1cmVNSVBTNjRFTDoKKysgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlUFBD NjQ6CisgICAgICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVg4NjoK KyAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlQVJNOgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVf Y29udGV4dC5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmgKK0BAIC0zNTIsNiAr MzUyLDI0IEBAIHN0cnVjdCBDUFVDb250ZXh0TUlQUzY0IHsKKyAgIHVpbnQ2NF90IGZpcjsKKyB9 OworIAorKy8vISBcYnJpZWYgQSBjb250ZXh0IHN0cnVjdHVyZSBjYXJyeWluZyBQUEM2NCBDUFUg c3RhdGUuCisrc3RydWN0IENQVUNvbnRleHRQUEM2NCB7CisrICB1aW50NjRfdCBuaXA7CisrICB1 aW50NjRfdCBtc3I7CisrICB1aW50NjRfdCByZWdzWzMyXTsKKysgIHVpbnQ2NF90IGNjcjsKKysg IHVpbnQ2NF90IHhlcjsKKysgIHVpbnQ2NF90IGxuazsKKysgIHVpbnQ2NF90IGN0cjsKKysgIGRv dWJsZSBmcHJlZ3NbMzJdOworKyAgZG91YmxlIGZwc2NyOworKyAgc3RydWN0IHsKKysgICAgdWlu dDEyOF9zdHJ1Y3Qgc2F2ZV92clszMl07CisrICAgIHVpbnQxMjhfc3RydWN0IHNhdmVfdnNjcjsK KysgICAgdWludDMyX3Qgc2F2ZV92cnNhdmU7CisrICB9IHZyZWdzOworK307CisrCisgLy8hIFxi cmllZiBBIGNvbnRleHQgc3RydWN0dXJlIGNhcGFibGUgb2YgY2FycnlpbmcgdGhlIGNvbnRleHQg b2YgYW55IHN1cHBvcnRlZAorIC8vISAgICAgQ1BVIGFyY2hpdGVjdHVyZS4KKyBzdHJ1Y3QgQ1BV Q29udGV4dCB7CitAQCAtMzgyLDYgKzQwMCw3IEBAIHN0cnVjdCBDUFVDb250ZXh0IHsKKyAgICAg Q1BVQ29udGV4dEFSTTY0KiBhcm02NDsKKyAgICAgQ1BVQ29udGV4dE1JUFMqIG1pcHNlbDsKKyAg ICAgQ1BVQ29udGV4dE1JUFM2NCogbWlwczY0OworKyAgICBDUFVDb250ZXh0UFBDNjQqIHBwYzY0 OworICAgfTsKKyB9OworIAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9jcHVfY29udGV4dF9s aW51eC5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2NwdV9jb250ZXh0X2xpbnV4LmgKK0BA IC0xNSw2ICsxNSw3IEBACisgI2lmbmRlZiBDUkFTSFBBRF9TTkFQU0hPVF9MSU5VWF9DUFVfQ09O VEVYVF9MSU5VWF9IXworICNkZWZpbmUgQ1JBU0hQQURfU05BUFNIT1RfTElOVVhfQ1BVX0NPTlRF WFRfTElOVVhfSF8KKyAKKysjaW5jbHVkZSA8Y3N0cmluZz4KKyAjaW5jbHVkZSAiYnVpbGQvYnVp bGRfY29uZmlnLmgiCisgI2luY2x1ZGUgInNuYXBzaG90L2NwdV9jb250ZXh0LmgiCisgI2luY2x1 ZGUgInNuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgiCitAQCAtMTc0LDYgKzE3NSw3OCBA QCB2b2lkIEluaXRpYWxpemVDUFVDb250ZXh0TUlQUygKKyAKKyAjZW5kaWYgIC8vIEFSQ0hfQ1BV X01JUFNfRkFNSUxZIHx8IERPWFlHRU4KKyAKKysjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9G QU1JTFkpIHx8IERPWFlHRU4KKysKKysvLyEgXGJyaWVmIEluaXRhbGl6ZXMgYSBDUFVDb250ZXh0 UFBDNjQgc3RydWN0dXJlIGZyb20gbmF0aXZlIGNvbnRleHQKKysvLyEgICAgIHN0cnVjdHVyZXMg b24gTGludXguCisrLy8hCisrLy8hIFxwYXJhbVtpbl0gdGhyZWFkX2NvbnRleHQgVGhlIG5hdGl2 ZSB0aHJlYWQgY29udGV4dC4KKysvLyEgXHBhcmFtW2luXSBmbG9hdF9jb250ZXh0IFRoZSBuYXRp dmUgZmxvYXQgY29udGV4dC4KKysvLyEgXHBhcmFtW2luXSB2ZWN0b3JfY29udGV4dCBUaGUgbmF0 aXZlIHZlY3RvciBjb250ZXh0LgorKy8vISBccGFyYW1bb3V0XSBjb250ZXh0IFRoZSBDUFVDb250 ZXh0UFBDNjQgc3RydWN0dXJlIHRvIGluaXRhbGl6ZS4KKyt0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJh aXRzPgorK3ZvaWQgSW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NCgKKysgICAgY29uc3QgVGhyZWFk Q29udGV4dDo6dDY0X3QmIHRocmVhZF9jb250ZXh0LAorKyAgICBjb25zdCBGbG9hdENvbnRleHQ6 OmY2NF90JiBmbG9hdF9jb250ZXh0LAorKyAgICBjb25zdCBWZWN0b3JDb250ZXh0Ojp2NjRfdCYg dmVjdG9yX2NvbnRleHQsCisrICAgIHR5cGVuYW1lIFRyYWl0czo6Q1BVQ29udGV4dCogY29udGV4 dCkgeworKworKyAgbWVtY3B5KGNvbnRleHQtPnJlZ3MsIHRocmVhZF9jb250ZXh0Lmdwciwgc2l6 ZW9mKGNvbnRleHQtPnJlZ3MpKTsKKysgIGNvbnRleHQtPm5pcCA9IHRocmVhZF9jb250ZXh0Lm5p cDsKKysgIGNvbnRleHQtPm1zciA9IHRocmVhZF9jb250ZXh0Lm1zcjsKKysgIGNvbnRleHQtPmNj ciA9IHRocmVhZF9jb250ZXh0LmNjcjsKKysgIGNvbnRleHQtPnhlciA9IHRocmVhZF9jb250ZXh0 LnhlcjsKKysgIGNvbnRleHQtPmxuayA9IHRocmVhZF9jb250ZXh0LmxuazsKKysgIGNvbnRleHQt PmN0ciA9IHRocmVhZF9jb250ZXh0LmN0cjsKKysKKysgIG1lbWNweShjb250ZXh0LT5mcHJlZ3Ms IGZsb2F0X2NvbnRleHQuZnByZWdzLCBzaXplb2YoY29udGV4dC0+ZnByZWdzKSk7CisrICBjb250 ZXh0LT5mcHNjciA9IGZsb2F0X2NvbnRleHQuZnBzY3I7CisrCisrICBmb3IgKHVpbnQ4X3QgaSA9 IDA7IGkgPCAzMjsgaSsrKSB7CisrICAgIGNvbnRleHQtPnZyZWdzLnNhdmVfdnJbaV0gPSB7Cisr ICAgICAgKCgodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzBdKSA8PCAzMikgfAor KyAgICAgICAgdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzFdLAorKyAgICAgICgoKHVpbnQ2NF90 KXZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVsyXSkgPDwgMzIpIHwKKysgICAgICAgIHZlY3Rvcl9j b250ZXh0LnZycmVnc1tpXVszXQorKyAgICB9OworKyAgfQorKyAgY29udGV4dC0+dnJlZ3Muc2F2 ZV92cnNhdmUgPSB2ZWN0b3JfY29udGV4dC52cnNhdmU7CisrICBjb250ZXh0LT52cmVncy5zYXZl X3ZzY3IgPSB7MCwgKHVpbnQ2NF90KXZlY3Rvcl9jb250ZXh0LnZzY3IudnNjcl93b3JkfTsKKyt9 CisrCisrdGVtcGxhdGUgPHR5cGVuYW1lIFRyYWl0cz4KKyt2b2lkIEluaXRpYWxpemVDUFVDb250 ZXh0UFBDNjQoCisrICAgIGNvbnN0IFNpZ25hbFRocmVhZENvbnRleHQ2NCAmdGhyZWFkX2NvbnRl eHQsCisrICAgIGNvbnN0IFNpZ25hbEZsb2F0Q29udGV4dDY0ICZmbG9hdF9jb250ZXh0LAorKyAg ICBjb25zdCBTaWduYWxWZWN0b3JDb250ZXh0NjQgJnZlY3Rvcl9jb250ZXh0LAorKyAgICB0eXBl bmFtZSBUcmFpdHM6OkNQVUNvbnRleHQqIGNvbnRleHQpIHsKKysKKysgIG1lbWNweShjb250ZXh0 LT5yZWdzLCB0aHJlYWRfY29udGV4dC5yZWdzLCBzaXplb2YoY29udGV4dC0+cmVncykpOworKyAg Y29udGV4dC0+bmlwID0gdGhyZWFkX2NvbnRleHQubmlwOworKyAgY29udGV4dC0+bXNyID0gdGhy ZWFkX2NvbnRleHQubXNyOworKyAgY29udGV4dC0+Y2NyID0gdGhyZWFkX2NvbnRleHQuY2NyOwor KyAgY29udGV4dC0+eGVyID0gdGhyZWFkX2NvbnRleHQueGVyOworKyAgY29udGV4dC0+bG5rID0g dGhyZWFkX2NvbnRleHQubG5rOworKyAgY29udGV4dC0+Y3RyID0gdGhyZWFkX2NvbnRleHQuY3Ry OworKworKyAgbWVtY3B5KGNvbnRleHQtPmZwcmVncywgZmxvYXRfY29udGV4dC5yZWdzLCBzaXpl b2YoY29udGV4dC0+ZnByZWdzKSk7CisrICBjb250ZXh0LT5mcHNjciA9IGZsb2F0X2NvbnRleHQu ZnBzY3I7CisrCisrICBmb3IgKHVpbnQ4X3QgaSA9IDA7IGkgPCAzMjsgaSsrKSB7CisrICAgIGNv bnRleHQtPnZyZWdzLnNhdmVfdnJbaV0gPSB7CisrICAgICAgKCgodWludDY0X3QpdmVjdG9yX2Nv bnRleHQudnJyZWdzW2ldWzBdKSA8PCAzMikgfAorKyAgICAgICAgdmVjdG9yX2NvbnRleHQudnJy ZWdzW2ldWzFdLAorKyAgICAgICgoKHVpbnQ2NF90KXZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVsy XSkgPDwgMzIpIHwKKysgICAgICAgIHZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVszXQorKyAgICB9 OworKyAgfQorKyAgY29udGV4dC0+dnJlZ3Muc2F2ZV92cnNhdmUgPSB2ZWN0b3JfY29udGV4dC52 cnNhdmU7CisrICBjb250ZXh0LT52cmVncy5zYXZlX3ZzY3IgPSB7MCwgKHVpbnQ2NF90KXZlY3Rv cl9jb250ZXh0LnZzY3IudnNjcl93b3JkfTsKKyt9CisrCisrCisrI2VuZGlmCisrCisgfSAgLy8g bmFtZXNwYWNlIGludGVybmFsCisgfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCisgCistLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L2RlYnVnX3JlbmRlenZvdXNfdGVzdC5jYworKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9z bmFwc2hvdC9saW51eC9kZWJ1Z19yZW5kZXp2b3VzX3Rlc3QuY2MKK0BAIC0xNTksOSArMTU5LDEx IEBAIHZvaWQgVGVzdEFnYWluc3RUYXJnZXQoUHRyYWNlQ29ubmVjdGlvbiogY29ubmVjdGlvbikg eworICAgICAgICAgICBjb25zdCBib29sIGlzX3Zkc29fbWFwcGluZyA9CisgICAgICAgICAgICAg ICBkZXZpY2UgPT0gMCAmJiBpbm9kZSA9PSAwICYmIG1hcHBpbmdfbmFtZSA9PSAiW3Zkc29dIjsK KyAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtQcmVmaXhbXSA9ICJsaW51eC12ZHNv LnNvLiI7CisrICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrUHJlZml4NjRbXSA9ICJs aW51eC12ZHNvNjQuc28uIjsKKyAgICAgICAgICAgcmV0dXJuIGlzX3Zkc29fbWFwcGluZyA9PQor ICAgICAgICAgICAgICAgICAgKG1vZHVsZV9uYW1lLmVtcHR5KCkgfHwKKy0gICAgICAgICAgICAg ICAgICBtb2R1bGVfbmFtZS5jb21wYXJlKDAsIHN0cmxlbihrUHJlZml4KSwga1ByZWZpeCkgPT0g MCk7CisrICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUuY29tcGFyZSgwLCBzdHJsZW4oa1By ZWZpeCksIGtQcmVmaXgpID09IDAgfHwKKysgICAgICAgICAgICAgICAgICBtb2R1bGVfbmFtZS5j b21wYXJlKDAsIHN0cmxlbihrUHJlZml4NjQpLCBrUHJlZml4NjQpID09IDApOworICAgICAgICAg fSwKKyAgICAgICAgIG1vZHVsZV9tYXBwaW5nLT5uYW1lLAorICAgICAgICAgbW9kdWxlX21hcHBp bmctPmRldmljZSwKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90 X2xpbnV4LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9s aW51eC5jYworQEAgLTMyMyw2ICszMjMsNjkgQEAgYm9vbCBFeGNlcHRpb25TbmFwc2hvdExpbnV4 OjpSZWFkQ29udGV4dDxDb250ZXh0VHJhaXRzNjQ+KAorICAgICAgIHJlYWRlciwgY29udGV4dF9h ZGRyZXNzLCBjb250ZXh0Xy5taXBzNjQpOworIH0KKyAKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0X0ZBTUlMWSkKKysKKyt0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJhaXRzPgorK3N0YXRpYyBi b29sIFJlYWRDb250ZXh0KFByb2Nlc3NSZWFkZXJMaW51eCogcmVhZGVyLAorKyAgICAgICAgICAg ICAgICAgICAgICAgIExpbnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVzcywKKysgICAgICAgICAg ICAgICAgICAgICAgICB0eXBlbmFtZSBUcmFpdHM6OkNQVUNvbnRleHQqIGRlc3RfY29udGV4dCkg eworKyAgY29uc3QgUHJvY2Vzc01lbW9yeSogbWVtb3J5ID0gcmVhZGVyLT5NZW1vcnkoKTsKKysK KysgIExpbnV4Vk1BZGRyZXNzIGdwX3JlZ3NfYWRkcmVzcyA9IGNvbnRleHRfYWRkcmVzcyArCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZihVQ29udGV4dCwgbWNv bnRleHQpICsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKHR5 cGVuYW1lIFRyYWl0czo6TUNvbnRleHQsIGdwX3JlZ3MpOworKworKyAgdHlwZW5hbWUgVHJhaXRz OjpTaWduYWxUaHJlYWRDb250ZXh0IHRocmVhZF9jb250ZXh0OworKyAgaWYgKCFtZW1vcnktPlJl YWQoZ3BfcmVnc19hZGRyZXNzLCBzaXplb2YodGhyZWFkX2NvbnRleHQpLCAmdGhyZWFkX2NvbnRl eHQpKSB7CisrICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHJlYWQgZ3BfcmVncyEiOworKyAg ICByZXR1cm4gZmFsc2U7CisrICB9CisrCisrICBMaW51eFZNQWRkcmVzcyBmcF9yZWdzX2FkZHJl c3MgPSBjb250ZXh0X2FkZHJlc3MgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb2Zmc2V0b2YoVUNvbnRleHQsIG1jb250ZXh0KSArCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvZmZzZXRvZih0eXBlbmFtZSBUcmFpdHM6Ok1Db250ZXh0LCBmcF9yZWdz KTsKKysKKysgIHR5cGVuYW1lIFRyYWl0czo6U2lnbmFsRmxvYXRDb250ZXh0IGZwX2NvbnRleHQ7 CisrICBpZiAoIW1lbW9yeS0+UmVhZChmcF9yZWdzX2FkZHJlc3MsIHNpemVvZihmcF9jb250ZXh0 KSwgJmZwX2NvbnRleHQpKSB7CisrICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHJlYWQgZnBf cmVncyEiOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrCisrICBMaW51eFZNQWRkcmVzcyB2 X3JlZ3NfcHRyX2FkZHJlc3MgPSBjb250ZXh0X2FkZHJlc3MgKworKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvZmZzZXRvZihVQ29udGV4dCwgbWNvbnRleHQpICsKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YodHlwZW5hbWUgVHJhaXRzOjpNQ29u dGV4dCwgdm14X3Jlc2VydmUpICsgODsKKysKKysgIHR5cGVuYW1lIFRyYWl0czo6U2lnbmFsVmVj dG9yQ29udGV4dCB2X2NvbnRleHQ7CisrICBpZiAoIW1lbW9yeS0+UmVhZCh2X3JlZ3NfcHRyX2Fk ZHJlc3MsIHNpemVvZih2X2NvbnRleHQpLCAmdl9jb250ZXh0KSkgeworKyAgICBMT0coRVJST1Ip IDw8ICJDb3VsZG4ndCByZWFkIHZfcmVncyEiOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9Cisr CisrICBJbml0aWFsaXplQ1BVQ29udGV4dFBQQzY0PENvbnRleHRUcmFpdHM2ND4odGhyZWFkX2Nv bnRleHQsIGZwX2NvbnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZfY29udGV4 dCwgZGVzdF9jb250ZXh0KTsKKysKKysgIHJldHVybiB0cnVlOworK30KKysKKyt0ZW1wbGF0ZTw+ CisrYm9vbCBFeGNlcHRpb25TbmFwc2hvdExpbnV4OjpSZWFkQ29udGV4dDxDb250ZXh0VHJhaXRz NjQ+KAorKyAgICBQcm9jZXNzUmVhZGVyTGludXgqIHJlYWRlciwKKysgICAgTGludXhWTUFkZHJl c3MgY29udGV4dF9hZGRyZXNzKSB7CisrICBjb250ZXh0Xy5hcmNoaXRlY3R1cmUgPSBrQ1BVQXJj aGl0ZWN0dXJlUFBDNjQ7CisrICBjb250ZXh0Xy5wcGM2NCA9ICZjb250ZXh0X3VuaW9uXy5wcGM2 NDsKKysKKysgIHJldHVybiBpbnRlcm5hbDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czY0PigK KysgICAgICByZWFkZXIsIGNvbnRleHRfYWRkcmVzcywgY29udGV4dF8ucHBjNjQpOworK30KKysK Kyt0ZW1wbGF0ZTw+CisrYm9vbCBFeGNlcHRpb25TbmFwc2hvdExpbnV4OjpSZWFkQ29udGV4dDxD b250ZXh0VHJhaXRzMzI+KAorKyAgICBQcm9jZXNzUmVhZGVyTGludXgqIHJlYWRlciwKKysgICAg TGludXhWTUFkZHJlc3MgY29udGV4dF9hZGRyZXNzKSB7CisrICAvLyBQUEM2NCBpcyA2NC1iaXQK KysgIHJldHVybiBmYWxzZTsKKyt9CisrCisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZ CisgCisgYm9vbCBFeGNlcHRpb25TbmFwc2hvdExpbnV4OjpJbml0aWFsaXplKFByb2Nlc3NSZWFk ZXJMaW51eCogcHJvY2Vzc19yZWFkZXIsCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2Vw dGlvbl9zbmFwc2hvdF9saW51eC5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlv bl9zbmFwc2hvdF9saW51eC5oCitAQCAtODQsNiArODQsOCBAQCBjbGFzcyBFeGNlcHRpb25TbmFw c2hvdExpbnV4IGZpbmFsIDogcHVibGljIEV4Y2VwdGlvblNuYXBzaG90IHsKKyAjZWxpZiBkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorICAgICBDUFVDb250ZXh0TUlQUyBtaXBzZWw7Cisg ICAgIENQVUNvbnRleHRNSVBTNjQgbWlwczY0OworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBD NjRfRkFNSUxZKQorKyAgICBDUFVDb250ZXh0UFBDNjQgcHBjNjQ7CisgI2VuZGlmCisgICB9IGNv bnRleHRfdW5pb25fOworICAgQ1BVQ29udGV4dCBjb250ZXh0XzsKKy0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNo b3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4X3Rlc3QuY2MKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25h cHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4X3Rlc3QuY2MKK0BAIC0yOTYsNyAr Mjk2LDI4IEBAIHZvaWQgRXhwZWN0Q29udGV4dChjb25zdCBDUFVDb250ZXh0JiBhY3R1YWwsIGNv bnN0IE5hdGl2ZUNQVUNvbnRleHQmIGV4cGVjdGVkKSB7CisgICAgICAgICAgICAgMCk7CisgI3Vu ZGVmIENQVV9BUkNIX05BTUUKKyB9CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1J TFkpCisrdXNpbmcgTmF0aXZlQ1BVQ29udGV4dCA9IHVjb250ZXh0X3Q7CisrCisrdm9pZCBJbml0 aWFsaXplQ29udGV4dChOYXRpdmVDUFVDb250ZXh0KiBjb250ZXh0KSB7CisrICBmb3IgKHNpemVf dCByZWcgPSAwOyByZWcgPCAzMjsgKytyZWcpIHsKKysgICAgY29udGV4dC0+dWNfbWNvbnRleHQu Z3BfcmVnc1tyZWddID0gcmVnOworKyAgfQorKworKyAgbWVtc2V0KCZjb250ZXh0LT51Y19tY29u dGV4dC5mcF9yZWdzLCA0NCwKKysgICAgICBzaXplb2YoY29udGV4dC0+dWNfbWNvbnRleHQuZnBf cmVncykpOworK30KKyAKKyt2b2lkIEV4cGVjdENvbnRleHQoY29uc3QgQ1BVQ29udGV4dCYgYWN0 dWFsLCBjb25zdCBOYXRpdmVDUFVDb250ZXh0JiBleHBlY3RlZCkgeworKyAgRVhQRUNUX0VRKGFj dHVhbC5hcmNoaXRlY3R1cmUsIGtDUFVBcmNoaXRlY3R1cmVQUEM2NCk7CisrCisrICBmb3IgKHNp emVfdCByZWcgPSAwOyByZWcgPCAzMjsgKytyZWcpIHsKKysgICAgRVhQRUNUX0VRKGFjdHVhbC5w cGM2NC0+cmVnc1tyZWddLCBleHBlY3RlZC51Y19tY29udGV4dC5ncF9yZWdzW3JlZ10pOworKyAg fQorKworKyAgRVhQRUNUX0VRKG1lbWNtcChhY3R1YWwucHBjNjQtPmZwcmVncywgZXhwZWN0ZWQu dWNfbWNvbnRleHQuZnBfcmVncywKKysgICAgICAgICAgICBzaXplb2YoYWN0dWFsLnBwYzY0LT5m cHJlZ3MpKSwgMCk7CisrfQorICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmCistLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4LmNjCisrKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3Nu YXBzaG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4LmNjCitAQCAtMTA4LDYgKzEwOCw4IEBA IHZvaWQgUHJvY2Vzc1JlYWRlckxpbnV4OjpUaHJlYWQ6OkluaXRpYWxpemVTdGFjayhQcm9jZXNz UmVhZGVyTGludXgqIHJlYWRlcikgeworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpCisgICBzdGFja19wb2ludGVyID0gcmVhZGVyLT5JczY0Qml0KCkgPyB0aHJlYWRfaW5mby50 aHJlYWRfY29udGV4dC50NjQucmVnc1syOV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA6IHRocmVhZF9pbmZvLnRocmVhZF9jb250ZXh0LnQzMi5yZWdzWzI5XTsKKysjZWxp ZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIHN0YWNrX3BvaW50ZXIgPSB0aHJl YWRfaW5mby50aHJlYWRfY29udGV4dC50NjQuZ3ByWzFdOworICNlbHNlCisgI2Vycm9yIFBvcnQu CisgI2VuZGlmCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4 X3Rlc3QuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvcHJvY2Vzc19yZWFkZXJfbGludXhf dGVzdC5jYworQEAgLTU5MSw2ICs1OTEsOCBAQCBib29sIFdyaXRlVGVzdE1vZHVsZShjb25zdCBi YXNlOjpGaWxlUGF0aCYgbW9kdWxlX3BhdGgpIHsKKyAgIG1vZHVsZS5laGRyLmVfbWFjaGluZSA9 IEVNX0FBUkNINjQ7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTRUwpIHx8IGRlZmluZWQo QVJDSF9DUFVfTUlQUzY0RUwpCisgICBtb2R1bGUuZWhkci5lX21hY2hpbmUgPSBFTV9NSVBTOwor KyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCisrICBtb2R1bGUuZWhkci5lX21hY2hpbmUg PSBFTV9QUEM2NDsKKyAjZW5kaWYKKyAKKyAgIG1vZHVsZS5laGRyLmVfdmVyc2lvbiA9IEVWX0NV UlJFTlQ7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgKKysrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvc25hcHNob3QvbGludXgvc2lnbmFsX2NvbnRleHQuaAorQEAgLTQyMiw2ICs0MjIsODkg QEAgc3RhdGljX2Fzc2VydChvZmZzZXRvZihVQ29udGV4dDxDb250ZXh0VHJhaXRzNjQ+LCBtY29u dGV4dC5mcHJlZ3MpID09CisgICAgICAgICAgICAgICAiY29udGV4dCBvZmZzZXQgbWlzbWF0Y2gi KTsKKyAjZW5kaWYKKyAKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysK KytzdHJ1Y3QgU2lnbmFsVGhyZWFkQ29udGV4dDY0IHsKKysgIHVpbnQ2NF90IHJlZ3NbMzJdOwor KyAgdWludDY0X3QgbmlwOworKyAgdWludDY0X3QgbXNyOworKyAgdWludDY0X3Qgb3JpZ19yMzsK KysgIHVpbnQ2NF90IGN0cjsKKysgIHVpbnQ2NF90IGxuazsKKysgIHVpbnQ2NF90IHhlcjsKKysg IHVpbnQ2NF90IGNjcjsKKysgIHVpbnQ2NF90IHNvZnRlOworKyAgdWludDY0X3QgdHJhcDsKKysg IHVpbnQ2NF90IGRhcjsKKysgIHVpbnQ2NF90IGRzaXNyOworKyAgdWludDY0X3QgcmVzdWx0Owor KyAgdWludDY0X3QgZHNjcjsKKysgIHVpbnQ2NF90IGZwcjBbM107CisrfTsKKysKKytzdHJ1Y3Qg U2lnbmFsRmxvYXRDb250ZXh0NjQgeworKyAgZG91YmxlIHJlZ3NbMzJdOworKyAgZG91YmxlIGZw c2NyOworK307CisrCisrc3RydWN0IFNpZ25hbFZlY3RvckNvbnRleHQ2NCB7CisrICBpbnQzMl90 IHZycmVnc1szMl1bNF07CisrICBzdHJ1Y3QgeworKyAgICBpbnQzMl90IF9fcGFkWzNdOworKyAg ICBpbnQzMl90IHZzY3Jfd29yZDsKKysgIH0gdnNjcjsKKysgIGludDMyX3QgdnJzYXZlOworKyAg aW50MzJfdCBfX3BhZFszXTsKKyt9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDE2KSkpOwor KworKworKyNwcmFnbWEgcGFjayhwb3ApCisrc3RydWN0IE1Db250ZXh0NjQgeworKyAgdWludDY0 X3QgcmVzZXJ2ZWRbNF07CisrICBpbnQzMl90IHNpZ25hbDsKKysgIGludDMyX3QgX19wYWQwOwor KyAgdWludDY0X3QgaGFuZGxlcjsKKysgIHVpbnQ2NF90IG9sZG1hc2s7CisrICB1aW50NjRfdCBw dF9yZWdzX3B0cjsKKysgIFNpZ25hbFRocmVhZENvbnRleHQ2NCBncF9yZWdzOworKyAgU2lnbmFs RmxvYXRDb250ZXh0NjQgIGZwX3JlZ3M7CisrICBTaWduYWxWZWN0b3JDb250ZXh0NjQgKnZfcmVn czsKKysgIGludDY0X3Qgdm14X3Jlc2VydmVbNjldOworK307CisrCisrc3RydWN0IENvbnRleHRU cmFpdHM2NCA6IHB1YmxpYyBUcmFpdHM2NCB7CisrICB1c2luZyBNQ29udGV4dCA9IE1Db250ZXh0 NjQ7CisrICB1c2luZyBTaWduYWxUaHJlYWRDb250ZXh0ID0gU2lnbmFsVGhyZWFkQ29udGV4dDY0 OworKyAgdXNpbmcgU2lnbmFsRmxvYXRDb250ZXh0ID0gU2lnbmFsRmxvYXRDb250ZXh0NjQ7Cisr ICB1c2luZyBTaWduYWxWZWN0b3JDb250ZXh0ID0gU2lnbmFsVmVjdG9yQ29udGV4dDY0OworKyAg dXNpbmcgQ1BVQ29udGV4dCA9IENQVUNvbnRleHRQUEM2NDsKKyt9OworKworK3N0cnVjdCBDb250 ZXh0VHJhaXRzMzIgOiBwdWJsaWMgVHJhaXRzMzIge307CisrCisrc3RydWN0IFVDb250ZXh0IHsK KysgIHVpbnQ2NF90IGZsYWdzOworKyAgdWludDY0X3QgbGluazsKKysgIFNpZ25hbFN0YWNrPENv bnRleHRUcmFpdHM2ND4gc3RhY2s7CisrICBTaWdzZXQ8Q29udGV4dFRyYWl0czY0PiBzaWdtYXNr OworKyAgTUNvbnRleHQ2NCBtY29udGV4dDsKKyt9OworKyNwcmFnbWEgcGFjayhwdXNoLCAxKQor KworK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFVDb250ZXh0KSA9PSBzaXplb2YodWNvbnRleHRfdCks CisrICAgICAgICAgICAgICAidWNvbnRleHRfdCBzaXplIG1pc21hdGNoIik7Cisrc3RhdGljX2Fz c2VydChzaXplb2YoTUNvbnRleHQ2NCkgPT0gc2l6ZW9mKG1jb250ZXh0X3QpLAorKyAgICAgICAg ICAgICAgIm1jb250ZXh0X3Qgc2l6ZSBtaXNtYXRjaCIpOworK3N0YXRpY19hc3NlcnQoc2l6ZW9m KFNpZ25hbFRocmVhZENvbnRleHQ2NCkgPT0gc2l6ZW9mKGdyZWdzZXRfdCksCisrICAgICAgICAg ICAgICAiZ3JlZ3NldF90IHNpemUgbWlzbWF0Y2giKTsKKytzdGF0aWNfYXNzZXJ0KHNpemVvZihT aWduYWxGbG9hdENvbnRleHQ2NCkgPT0gc2l6ZW9mKGZwcmVnc2V0X3QpLAorKyAgICAgICAgICAg ICAgImZwcmVnc2V0X3Qgc2l6ZSBtaXNtYXRjaCIpOworK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFNp Z25hbFZlY3RvckNvbnRleHQ2NCkgPT0gc2l6ZW9mKF9saWJjX3Zyc3RhdGUpLAorKyAgICAgICAg ICAgICAgInZyc3RhdGUgc2l6ZSBtaXNtYXRjaCIpOworK3N0YXRpY19hc3NlcnQob2Zmc2V0b2Yo VUNvbnRleHQsIG1jb250ZXh0KSA9PQorKyAgICAgICAgICAgICAgb2Zmc2V0b2YodWNvbnRleHRf dCwgdWNfbWNvbnRleHQpLCAibWNvbnRleHQgb2Zmc2V0IG1pc21hdGNoIik7Cisrc3RhdGljX2Fz c2VydChvZmZzZXRvZihNQ29udGV4dDY0LCBncF9yZWdzKSA9PQorKyAgICAgICAgICAgICAgb2Zm c2V0b2YobWNvbnRleHRfdCwgZ3BfcmVncyksICJncF9yZWdzIG9mZnNldCBtaXNtYXRjaCIpOwor ICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3N5c3RlbV9zbmFwc2hvdF9saW51eC5jYworKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFz aHBhZC9zbmFwc2hvdC9saW51eC9zeXN0ZW1fc25hcHNob3RfbGludXguY2MKK0BAIC0yMDMsNiAr MjAzLDggQEAgQ1BVQXJjaGl0ZWN0dXJlIFN5c3RlbVNuYXBzaG90TGludXg6OkdldENQVUFyY2hp dGVjdHVyZSgpIGNvbnN0IHsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQor ICAgcmV0dXJuIHByb2Nlc3NfcmVhZGVyXy0+SXM2NEJpdCgpID8ga0NQVUFyY2hpdGVjdHVyZU1J UFM2NEVMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBrQ1BVQXJjaGl0 ZWN0dXJlTUlQU0VMOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAg cmV0dXJuIGtDUFVBcmNoaXRlY3R1cmVQUEM2NDsKKyAjZWxzZQorICNlcnJvciBwb3J0IHRvIHlv dXIgYXJjaGl0ZWN0dXJlCisgI2VuZGlmCitAQCAtMjE4LDYgKzIyMCw5IEBAIHVpbnQzMl90IFN5 c3RlbVNuYXBzaG90TGludXg6OkNQVVJldmlzaW9uKCkgY29uc3QgeworICNlbGlmIGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpCisgICAvLyBOb3QgaW1wbGVtZW50YWJsZSBvbiBNSVBTCisg ICByZXR1cm4gMDsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIC8v IE5vdCB5ZXQgaW1wbGVtZW50ZWQgb24gUFBDNjQKKysgIHJldHVybiAwOworICNlbHNlCisgI2Vy cm9yIHBvcnQgdG8geW91ciBhcmNoaXRlY3R1cmUKKyAjZW5kaWYKK0BAIC0yMzgsNiArMjQzLDkg QEAgc3RkOjpzdHJpbmcgU3lzdGVtU25hcHNob3RMaW51eDo6Q1BVVmVuZG9yKCkgY29uc3Qgewor ICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisgICAvLyBOb3QgaW1wbGVtZW50 YWJsZSBvbiBNSVBTCisgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKKysjZWxpZiBkZWZpbmVkKEFS Q0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgb24gUFBDNjQK KysgIHJldHVybiBzdGQ6OnN0cmluZygpOworICNlbHNlCisgI2Vycm9yIHBvcnQgdG8geW91ciBh cmNoaXRlY3R1cmUKKyAjZW5kaWYKK0BAIC0zNzEsNiArMzc5LDkgQEAgYm9vbCBTeXN0ZW1TbmFw c2hvdExpbnV4OjpOWEVuYWJsZWQoKSBjb25zdCB7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkKKyAgIC8vIE5vdCBpbXBsZW1lbnRhYmxlIG9uIE1JUFMKKyAgIHJldHVybiBm YWxzZTsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIC8vIE5vdCB5 ZXQgaW1wbGVtZW50ZWQgb24gUFBDNjQKKysgIHJldHVybiBmYWxzZTsKKyAjZWxzZQorICNlcnJv ciBQb3J0LgorICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQorLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9saW51eC90aHJlYWRfc25hcHNob3RfbGludXguY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3Qv bGludXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmNjCitAQCAtMTg2LDYgKzE4NiwxNCBAQCBib29s IFRocmVhZFNuYXBzaG90TGludXg6OkluaXRpYWxpemUoUHJvY2Vzc1JlYWRlckxpbnV4KiBwcm9j ZXNzX3JlYWRlciwKKyAgICAgICAgIHRocmVhZC50aHJlYWRfaW5mby5mbG9hdF9jb250ZXh0LmYz MiwKKyAgICAgICAgIGNvbnRleHRfLm1pcHNlbCk7CisgICB9CisrI2VsaWYgZGVmaW5lZChBUkNI X0NQVV9QUEM2NF9GQU1JTFkpCisrICBjb250ZXh0Xy5hcmNoaXRlY3R1cmUgPSBrQ1BVQXJjaGl0 ZWN0dXJlUFBDNjQ7CisrICBjb250ZXh0Xy5wcGM2NCA9ICZjb250ZXh0X3VuaW9uXy5wcGM2NDsK KysgIEluaXRpYWxpemVDUFVDb250ZXh0UFBDNjQ8Q29udGV4dFRyYWl0czY0PigKKysgICAgICB0 aHJlYWQudGhyZWFkX2luZm8udGhyZWFkX2NvbnRleHQudDY0LAorKyAgICAgIHRocmVhZC50aHJl YWRfaW5mby5mbG9hdF9jb250ZXh0LmY2NCwKKysgICAgICB0aHJlYWQudGhyZWFkX2luZm8udmVj dG9yX2NvbnRleHQudjY0LAorKyAgICAgIGNvbnRleHRfLnBwYzY0KTsKKyAjZWxzZQorICNlcnJv ciBQb3J0LgorICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90aHJlYWRfc25hcHNo b3RfbGludXguaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90aHJlYWRfc25hcHNob3RfbGlu dXguaAorQEAgLTY4LDYgKzY4LDggQEAgY2xhc3MgVGhyZWFkU25hcHNob3RMaW51eCBmaW5hbCA6 IHB1YmxpYyBUaHJlYWRTbmFwc2hvdCB7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkKKyAgICAgQ1BVQ29udGV4dE1JUFMgbWlwc2VsOworICAgICBDUFVDb250ZXh0TUlQUzY0 IG1pcHM2NDsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgICAgQ1BV Q29udGV4dFBQQzY0IHBwYzY0OworICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBB UkNIX0NQVV9YODZfRkFNSUxZCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvYXV4aWxpYXJ5X3ZlY3Rv ci5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L2F1eGlsaWFyeV92ZWN0b3IuY2MKK0BAIC01Niw2 ICs1NiwxMSBAQCBib29sIEF1eGlsaWFyeVZlY3Rvcjo6UmVhZChQdHJhY2VDb25uZWN0aW9uKiBj b25uZWN0aW9uKSB7CisgICAgIGlmICh0eXBlID09IEFUX0lHTk9SRSkgeworICAgICAgIGNvbnRp bnVlOworICAgICB9CisrI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICBp ZiAodHlwZSA9PSBBVF9JR05PUkVQUEMpIHsKKysgICAgICBjb250aW51ZTsKKysgICAgfQorKyNl bmRpZgorICAgICBpZiAoIU1hcEluc2VydE9yUmVwbGFjZSgmdmFsdWVzXywgdHlwZSwgdmFsdWUs IG51bGxwdHIpKSB7CisgICAgICAgTE9HKEVSUk9SKSA8PCAiZHVwbGljYXRlIGF1eHYgZW50cnki OworICAgICAgIHJldHVybiBmYWxzZTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VfYnJv a2VyLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvcHRyYWNlX2Jyb2tlci5jYworQEAgLTkzLDgg KzkzLDggQEAgaW50IFB0cmFjZUJyb2tlcjo6UnVuKCkgeworIH0KKyAKKyBib29sIFB0cmFjZUJy b2tlcjo6QWxsb2NhdGVBdHRhY2htZW50cygpIHsKKy0gIGNvbnN0ZXhwciBzaXplX3QgcGFnZV9z aXplID0gNDA5NjsKKy0gIGNvbnN0ZXhwciBzaXplX3QgYWxsb2Nfc2l6ZSA9CisrICBzdGF0aWMg c2l6ZV90IHBhZ2Vfc2l6ZSA9IGdldHBhZ2VzaXplKCk7CisrICBzaXplX3QgYWxsb2Nfc2l6ZSA9 CisgICAgICAgKHNpemVvZihTY29wZWRQdHJhY2VBdHRhY2gpICsgcGFnZV9zaXplIC0gMSkgJiB+ KHBhZ2Vfc2l6ZSAtIDEpOworICAgdm9pZCogYWxsb2MgPSBzYnJrKGFsbG9jX3NpemUpOworICAg aWYgKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFsbG9jKSA9PSAtMSkgeworLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC91dGlsL2xpbnV4L3B0cmFjZXIuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VyLmNj CitAQCAtMzk0LDYgKzM5NCw2NCBAQCBib29sIEdldFRocmVhZEFyZWE2NChwaWRfdCB0aWQsCisg ICByZXR1cm4gdHJ1ZTsKKyB9CisgCisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1J TFkpCisrLy8gUFBDNjQgaGFzIGhhZCBIQVZFX0FSQ0hfVFJBQ0VIT09LIHNldCBzaW5jZSAyLjYu MjcgKGV2ZW4gYmVmb3JlIHg4NiBoYWQgaXQpLgorKy8vIFRoYXQgbWVhbnMgd2UgY2FuIHNpbXBs eSB1c2UgUFRSQUNFX0dFVFJFR0VTRVQuCisrCisrdGVtcGxhdGUgPHR5cGVuYW1lIERlc3RpbmF0 aW9uPgorK2Jvb2wgR2V0UmVnaXN0ZXJTZXQocGlkX3QgdGlkLCBpbnQgc2V0LCBEZXN0aW5hdGlv biogZGVzdCwgYm9vbCBjYW5fbG9nKSB7CisrICBpb3ZlYyBpb3Y7CisrICBpb3YuaW92X2Jhc2Ug PSByZWludGVycHJldF9jYXN0PHZvaWQqPihkZXN0KTsKKysgIGlvdi5pb3ZfbGVuID0gc2l6ZW9m KCpkZXN0KTsKKysgIGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCByZWludGVycHJl dF9jYXN0PHZvaWQqPihzZXQpLCAmaW92KSAhPSAwKSB7CisrICAgIFBMT0dfSUYoRVJST1IsIGNh bl9sb2cpIDw8ICJwdHJhY2UiOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrICBpZiAoaW92 Lmlvdl9sZW4gIT0gc2l6ZW9mKCpkZXN0KSkgeworKyAgICBMT0dfSUYoRVJST1IsIGNhbl9sb2cp IDw8ICJVbmV4cGVjdGVkIHJlZ2lzdGVycyBzaXplIjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAg fQorKyAgcmV0dXJuIHRydWU7CisrfQorKworK2Jvb2wgR2V0VmVjdG9yUmVnaXN0ZXJzNjQocGlk X3QgdGlkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yQ29udGV4dCogY29udGV4 dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xvZykgeworKyAgcmV0dXJu IEdldFJlZ2lzdGVyU2V0KHRpZCwgTlRfUFBDX1ZNWCwgJmNvbnRleHQtPnY2NCwgY2FuX2xvZyk7 CisrfQorKworK2Jvb2wgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczY0KHBpZF90IHRpZCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdENvbnRleHQqIGNvbnRleHQsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7CisrICByZXR1 cm4gR2V0UmVnaXN0ZXJTZXQodGlkLCBOVF9QUkZQUkVHLCAmY29udGV4dC0+ZjY0LCBjYW5fbG9n KTsKKyt9CisrCisrYm9vbCBHZXRUaHJlYWRBcmVhNjQocGlkX3QgdGlkLAorKyAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IFRocmVhZENvbnRleHQmIGNvbnRleHQsCisrICAgICAgICAgICAgICAg ICAgICAgTGludXhWTUFkZHJlc3MqIGFkZHJlc3MsCisrICAgICAgICAgICAgICAgICAgICAgYm9v bCBjYW5fbG9nKSB7CisrICAvLyBQUEM2NCBkb2Vzbid0IGhhdmUgUFRSQUNFX0dFVF9USFJFQURf QVJFQSBzaW5jZSB0aGUgdGhyZWFkIHBvaW50ZXIKKysgIC8vIGlzIHN0b3JlZCBpbiBHUFIgMTMu CisrICBUaHJlYWRDb250ZXh0Ojp0NjRfdCB0YzsKKysgIGlmICghR2V0UmVnaXN0ZXJTZXQodGlk LCBOVF9QUlNUQVRVUywgJnRjLCBjYW5fbG9nKSkgeworKyAgICBMT0dfSUYoRVJST1IsIGNhbl9s b2cpIDw8ICJVbmFibGUgdG8gZ2V0IHRocmVhZCBwb2ludGVyISI7CisrICAgIHJldHVybiBmYWxz ZTsKKysgIH0KKysKKysgICphZGRyZXNzID0gdGMuZ3ByWzEzXTsKKysKKysgIHJldHVybiB0cnVl OworK30KKysKKysvLyBTdHVicyBmb3IgMzItYml0IGZ1bmN0aW9ucyBub3QgYXBwbGljYWJsZSBv biBQUEM2NAorK2Jvb2wgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczMyKHBpZF90IHRpZCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdENvbnRleHQqIGNvbnRleHQsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7IHJldHVybiBm YWxzZTsgfQorK2Jvb2wgR2V0VGhyZWFkQXJlYTMyKHBpZF90IHRpZCwKKysgICAgICAgICAgICAg ICAgICAgICBjb25zdCBUaHJlYWRDb250ZXh0ICZjb250ZXh0LAorKyAgICAgICAgICAgICAgICAg ICAgIExpbnV4Vk1BZGRyZXNzICphZGRyZXNzLAorKyAgICAgICAgICAgICAgICAgICAgIGJvb2wg Y2FuX2xvZykgeyByZXR1cm4gZmFsc2U7IH0KKysKKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNl bmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQorQEAgLTQ4Niw2ICs1NDQsOSBAQCBib29sIFB0 cmFjZXI6OkdldFRocmVhZEluZm8ocGlkX3QgdGlkLCBUaHJlYWRJbmZvKiBpbmZvKSB7CisgICBp ZiAoaXNfNjRfYml0XykgeworICAgICByZXR1cm4gR2V0R2VuZXJhbFB1cnBvc2VSZWdpc3RlcnM2 NCh0aWQsICZpbmZvLT50aHJlYWRfY29udGV4dCwgY2FuX2xvZ18pICYmCisgICAgICAgICAgICBH ZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJzNjQodGlkLCAmaW5mby0+ZmxvYXRfY29udGV4dCwgY2Fu X2xvZ18pICYmCisrI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICAgICAg ICAgR2V0VmVjdG9yUmVnaXN0ZXJzNjQodGlkLCAmaW5mby0+dmVjdG9yX2NvbnRleHQsIGNhbl9s b2dfKSAmJgorKyNlbmRpZgorICAgICAgICAgICAgR2V0VGhyZWFkQXJlYTY0KHRpZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbmZvLT50aHJlYWRfY29udGV4dCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmaW5mby0+dGhyZWFkX3NwZWNpZmljX2RhdGFfYWRkcmVzcywKKy0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvdXRpbC9saW51eC90aHJlYWRfaW5mby5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgv dGhyZWFkX2luZm8uaAorQEAgLTI4LDYgKzI4LDEwIEBACisgI2luY2x1ZGUgPGFuZHJvaWQvYXBp LWxldmVsLmg+CisgI2VuZGlmCisgCisrI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZ KQorKyNpbmNsdWRlIDxzeXMvdWNvbnRleHQuaD4KKysjZW5kaWYKKysKKyBuYW1lc3BhY2UgY3Jh c2hwYWQgeworIAorIC8vISBcYnJpZWYgVGhlIHNldCBvZiBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0 ZXJzIGZvciBhbiBhcmNoaXRlY3R1cmUgZmFtaWx5LgorQEAgLTc5LDYgKzgzLDggQEAgdW5pb24g VGhyZWFkQ29udGV4dCB7CisgICAgIHVpbnQzMl90IGNwMF9zdGF0dXM7CisgICAgIHVpbnQzMl90 IGNwMF9jYXVzZTsKKyAgICAgdWludDMyX3QgcGFkZGluZzFfOworKyNlbGlmIGRlZmluZWQoQVJD SF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICAvLyBQUEM2NCBpcyA2NC1iaXQKKyAjZWxzZQorICNl cnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQorQEAgLTEzMiw2ICsx MzgsMjEgQEAgdW5pb24gVGhyZWFkQ29udGV4dCB7CisgICAgIHVpbnQ2NF90IGNwMF9iYWR2YWRk cjsKKyAgICAgdWludDY0X3QgY3AwX3N0YXR1czsKKyAgICAgdWludDY0X3QgY3AwX2NhdXNlOwor KyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICAvLyBSZWZsZWN0cyBz dHJ1Y3QgcHRfcmVncyBpbiBhc20vcHRyYWNlLmguCisrICAgIHVpbnQ2NF90IGdwclszMl07Cisr ICAgIHVpbnQ2NF90IG5pcDsKKysgICAgdWludDY0X3QgbXNyOworKyAgICB1aW50NjRfdCBvcmln X2dwcjM7CisrICAgIHVpbnQ2NF90IGN0cjsKKysgICAgdWludDY0X3QgbG5rOworKyAgICB1aW50 NjRfdCB4ZXI7CisrICAgIHVpbnQ2NF90IGNjcjsKKysgICAgdWludDY0X3Qgc29mdGU7CisrICAg IHVpbnQ2NF90IHRyYXA7CisrICAgIHVpbnQ2NF90IGRhcjsKKysgICAgdWludDY0X3QgZHNpc3I7 CisrICAgIHVpbnQ2NF90IHJlc3VsdDsKKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAg Ly8gQVJDSF9DUFVfWDg2X0ZBTUlMWQorQEAgLTE0Myw2ICsxNjQsOCBAQCB1bmlvbiBUaHJlYWRD b250ZXh0IHsKKyAgIHVzaW5nIE5hdGl2ZVRocmVhZENvbnRleHQgPSB1c2VyX3JlZ3M7CisgI2Vs aWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAvLyBObyBhcHByb3ByaWF0ZSBOYXRp dmVUaHJlYWRzQ29udGV4dCB0eXBlIGF2YWlsYWJsZSBmb3IgTUlQUworKyNlbGlmIGRlZmluZWQo QVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgdXNpbmcgTmF0aXZlVGhyZWFkQ29udGV4dCA9IHN0 cnVjdCBwdF9yZWdzOworICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQ VV9YODZfRkFNSUxZIHx8IEFSQ0hfQ1BVX0FSTTY0CitAQCAtMjE4LDYgKzI0MSw5IEBAIHVuaW9u IEZsb2F0Q29udGV4dCB7CisgICAgIH0gZnByZWdzWzMyXTsKKyAgICAgdWludDMyX3QgZnBjc3I7 CisgICAgIHVpbnQzMl90IGZwdV9pZDsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZB TUlMWSkKKysgICAgLy8gQ3Jhc2hwYWQncyBQUEMgc3VwcG9ydCBpcyA2NC1iaXQgb25seSwgc28g dGhpcworKyAgICAvLyAzMmJpdC1vbmx5IHN0cnVjdCBpcyBkZWNsYXJlZCBhcyBlbXB0eS4KKyAj ZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQorQEAg LTI1Miw2ICsyNzgsMTAgQEAgdW5pb24gRmxvYXRDb250ZXh0IHsKKyAgICAgZG91YmxlIGZwcmVn c1szMl07CisgICAgIHVpbnQzMl90IGZwY3NyOworICAgICB1aW50MzJfdCBmcHVfaWQ7CisrI2Vs aWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAgIC8vIFJlZmxlY3RzIGZwcmVn c2V0X3QgaW4gc3lzL3Vjb250ZXh0LmgKKysgICAgZG91YmxlIGZwcmVnc1szMl07CisrICAgIGRv dWJsZSBmcHNjcjsKKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJDSF9DUFVf WDg2X0ZBTUlMWQorQEAgLTI4MCw2ICszMTAsOCBAQCB1bmlvbiBGbG9hdENvbnRleHQgeworICAg c3RhdGljX2Fzc2VydChzaXplb2YoZjY0KSA9PSBzaXplb2YodXNlcl9mcHNpbWRfc3RydWN0KSwg IlNpemUgbWlzbWF0Y2giKTsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQor IC8vIE5vIGFwcHJvcHJpYXRlIGZsb2F0aW5nIHBvaW50IGNvbnRleHQgbmF0aXZlIHR5cGUgZm9y IGF2YWlsYWJsZSBNSVBTLgorKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQor KyAgc3RhdGljX2Fzc2VydChzaXplb2YoZjY0KSA9PSBzaXplb2YoZnByZWdzZXRfdCksICJTaXpl IG1pc21hdGNoIik7CisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BV X1g4NgorQEAgLTI4Nyw2ICszMTksMjYgQEAgdW5pb24gRmxvYXRDb250ZXh0IHsKKyBzdGF0aWNf YXNzZXJ0KHN0ZDo6aXNfc3RhbmRhcmRfbGF5b3V0PEZsb2F0Q29udGV4dD46OnZhbHVlLAorICAg ICAgICAgICAgICAgIk5vdCBzdGFuZGFyZCBsYXlvdXQiKTsKKyAKKysvLyEgXGJyaWVmIFRoZSB2 ZWN0b3IgcmVnaXN0ZXJzIHVzZWQgZm9yIGFuIGFyY2hpdGVjdHVyZSBmYW1pbHkKKyt1bmlvbiBW ZWN0b3JDb250ZXh0IHsKKysgIHN0cnVjdCB2MzJfdCB7fSB2MzI7CisrI2lmIGRlZmluZWQoQVJD SF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMTYpKSkg Ly8gVmVjdG9yIGNvbnRleHQgbXVzdCBiZSBkb3VibGV3b3JkIGFsaWduZWQuCisrI2VuZGlmCisr ICBzdHJ1Y3QgdjY0X3QgeworKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysg ICAgLy8gUmVmbGVjdHMgdnJyZWdzZXRfdCBpbiBzeXMvdWNvbnRleHQuaAorKyAgICB1aW50MzJf dCB2cnJlZ3NbMzJdWzRdOworKyAgICBzdHJ1Y3QgeworKyAgICAgIHVpbnQzMl90IF9fcGFkWzNd OworKyAgICAgIHVpbnQzMl90IHZzY3Jfd29yZDsKKysgICAgfSB2c2NyOworKyAgICB1aW50MzJf dCB2cnNhdmU7CisrICAgIHVpbnQzMl90IF9fcGFkWzNdOworKyNlbmRpZgorKyAgfSB2NjQ7Cisr fTsKKysKKyAvLyEgXGJyaWVmIEEgY29sbGVjdGlvbiBvZiBgcHRyYWNlYC1hYmxlIGluZm9ybWF0 aW9uIGFib3V0IGEgdGhyZWFkLgorIHN0cnVjdCBUaHJlYWRJbmZvIHsKKyAgIFRocmVhZEluZm8o KTsKK0BAIC0yOTgsNiArMzUwLDkgQEAgc3RydWN0IFRocmVhZEluZm8geworICAgLy8hIFxicmll ZiBUaGUgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIGZvciB0aGUgdGhyZWFkLgorICAgRmxvYXRD b250ZXh0IGZsb2F0X2NvbnRleHQ7CisgCisrICAvLyEgXGJyaWVmIChPcHRpb25hbCkgVGhlIHZl Y3RvciByZWdpc3RlcnMgdXNlZCBmb3IgdGhlIHRocmVhZC4KKysgIFZlY3RvckNvbnRleHQgdmVj dG9yX2NvbnRleHQ7CisrCisgICAvLyEgXGJyaWVmIFRoZSB0aHJlYWQtbG9jYWwgc3RvcmFnZSBh ZGRyZXNzIGZvciB0aGUgdGhyZWFkLgorICAgTGludXhWTUFkZHJlc3MgdGhyZWFkX3NwZWNpZmlj X2RhdGFfYWRkcmVzczsKKyB9OworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0 LmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dC5oCitAQCAtNjYsNiArNjYs NyBAQCB1c2luZyBOYXRpdmVDUFVDb250ZXh0ID0gdWNvbnRleHRfdDsKKyAvLyEgICAgIG1hY09T L0xpbnV4L0Z1Y2hzaWEgfCB4ODZfNjQgICAgICAgfCBgJSVyZGlgCisgLy8hICAgICBMaW51eCAg ICAgICAgICAgICAgIHwgQVJNL0FSTTY0ICAgIHwgYHIwYC9geDBgCisgLy8hICAgICBMaW51eCAg ICAgICAgICAgICAgIHwgTUlQUy9NSVBTNjQgIHwgYCRhMGAKKysvLyEgICAgIExpbnV4ICAgICAg ICAgICAgICAgfCBQUEM2NCAgICAgICAgfCBgcjNgCisgLy8hCisgLy8hICAgICBBZGRpdGlvbmFs bHksIHRoZSB2YWx1ZSBgTFJgIG9uIEFSTS9BUk02NCB3aWxsIGJlIHRoZSByZXR1cm4gYWRkcmVz cyBvZgorIC8vISAgICAgdGhpcyBmdW5jdGlvbi4KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1 cmVfY29udGV4dF9saW51eC5TCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRf bGludXguUworQEAgLTI4LDcgKzI4LDcgQEAKKyAgIC5nbG9ibCBDQVBUVVJFQ09OVEVYVF9TWU1C T0wyCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKKyAgIC5i YWxpZ24gMTYsIDB4OTAKKy0jZWxpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJj aDY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2VsaWYgZGVmaW5lZChfX2FybV9fKSB8fCBk ZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICAuYmFsaWduIDQsIDB4MAorICNlbmRpZgorIAorQEAgLTQxOSw0ICs0MTks MjE0IEBAIENBUFRVUkVDT05URVhUX1NZTUJPTDI6CisgICBqciAkcmEKKyAKKyAgIC5zZXQgYXQK KysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAvLyBTdG9yZSByMC1yMzEKKysgIHN0 ZCAwLCAweGU4KDMpICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1swXQorKyAgc3Rk IDEsIDB4ZjAoMykgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzFdCisrICBzdGQg MiwgMHhmOCgzKSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMl0KKysgIC8vIG5v dGUgdGhhdCByMydzIG9yaWdpbmFsIHZhbHVlIHdhcyBsb3N0CisrICBzdGQgMywgMHgxMDAoMykg IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbM10KKysgIHN0ZCA0LCAweDEwOCgzKSAg Ly8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s0XQorKyAgc3RkIDUsIDB4MTEwKDMpICAv LyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzVdCisrICBzdGQgNiwgMHgxMTgoMykgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbNl0KKysgIHN0ZCA3LCAweDEyMCgzKSAgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s3XQorKyAgc3RkIDgsIDB4MTI4KDMpICAvLyBj b250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzhdCisrICBzdGQgOSwgMHgxMzAoMykgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbOV0KKysgIHN0ZCAxMCwgMHgxMzgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxMF0KKysgIHN0ZCAxMSwgMHgxNDAoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxMV0KKysgIHN0ZCAxMiwgMHgxNDgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxMl0KKysgIHN0ZCAxMywgMHgxNTAoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxM10KKysgIHN0ZCAxNCwgMHgxNTgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxNF0KKysgIHN0ZCAxNSwgMHgxNjAoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxNV0KKysgIHN0ZCAxNiwgMHgxNjgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxNl0KKysgIHN0ZCAxNywgMHgxNzAoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxN10KKysgIHN0ZCAxOCwgMHgxNzgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxOF0KKysgIHN0ZCAxOSwgMHgxODAoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxOV0KKysgIHN0ZCAyMCwgMHgxODgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syMF0KKysgIHN0ZCAyMSwgMHgxOTAoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syMV0KKysgIHN0ZCAyMiwgMHgxOTgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syMl0KKysgIHN0ZCAyMywgMHgxYTAoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syM10KKysgIHN0ZCAyNCwgMHgxYTgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syNF0KKysgIHN0ZCAyNSwgMHgxYjAoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syNV0KKysgIHN0ZCAyNiwgMHgxYjgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syNl0KKysgIHN0ZCAyNywgMHgxYzAoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syN10KKysgIHN0ZCAyOCwgMHgxYzgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syOF0KKysgIHN0ZCAyOSwgMHgxZDAoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syOV0KKysgIHN0ZCAzMCwgMHgxZDgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1szMF0KKysgIHN0ZCAzMSwgMHgxZTAoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1szMV0KKysKKysgIC8vIEZvciBOSVAsIHdlIGNhbiB1 c2UgdGhlIHZhbHVlIGluIHRoZSBsaW5rIHJlZ2lzdGVyCisrICBtZmxyIDAKKysgIHN0ZCAwLCAw eDFlOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF0KKysKKysgIC8v IENUUgorKyAgbWZjdHIgMAorKyAgc3RkIDAsIDB4MjAwKDMpIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LmdwX3JlZ3NbUFRfQ1RSXQorKworKyAgLy8gRm9yIExOSywgd2UnbGwgdXNlIHRoZSBjYWxs ZXIncyBMUiBzYXZlIGFyZWEgKDIgc3RhY2sgZnJhbWVzIHVwKS4KKysgIC8vIHI0IGNhbiBiZSB1 c2VkIGFzIGEgc2NyYXRjaCByZWdpc3RlciBzaW5jZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHNhdmVk LgorKyAgbGQgNCwgMCgxKQorKyAgbGQgNCwgMTYoNCkKKysgIHN0ZCA0LCAweDIwOCgzKSAvLyBj b250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0xOS10KKysKKysgIC8vIFhFUgorKyAgbWZ4 ZXIgMAorKyAgc3RkIDAsIDB4MjEwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3Nb UFRfWEVSXQorKworKyAgLy8gQ0NSCisrICBtZmNyIDAKKysgIHN0ZCAwLCAweDIxOCgzKSAvLyBj b250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NDUl0KKysKKysgIC8vIE1TUiwgb3JpZ19y MywgTVEsIFRSQVAsIERBUiwgRFNJU1IsIFJFU1VMVCwgRFNDUiwKKysgIC8vIG5vdCB1c2VkIG9y IG5vdCByZWxldmFudCwgIHplcm8gdGhlbSBvdXQuCisrICBsaSA0LCAwCisrICBzdGQgNCwgMHgx ZjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9NU1JdCisrICBzdGQgNCwg MHgxZjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9PUklHX1IzXQorKyAg c3RkIDQsIDB4MjIwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTVFdCisr ICBzdGQgNCwgMHgyMjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9UUkFQ XQorKyAgc3RkIDQsIDB4MjMwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRf REFSXQorKyAgc3RkIDQsIDB4MjM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3Nb UFRfRFNJU1JdCisrICBzdGQgNCwgMHgyNDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3Bf cmVnc1tQVF9SRVNVTFRdCisrICBzdGQgNCwgMHgyNDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1tQVF9EU0NSXQorKworKyAgLy8gVXBkYXRlIGNvbnRleHQtPnVjX21jb250ZXh0 LnJlZ3MgdG8gcG9pbnQgdG8gZ3BfcmVncworKyAgYWRkaSAwLCAzLCAweGU4CisrICBzdGQgMCwg MHhlMCgzKQorKworKyAgLy8gU2F2ZSBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgMC0zMQorKyAg c3RmZCAwLCAweDI2OCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1swXQorKyAg c3RmZCAxLCAweDI3MCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxXQorKyAg c3RmZCAyLCAweDI3OCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syXQorKyAg c3RmZCAzLCAweDI4MCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1szXQorKyAg c3RmZCA0LCAweDI4OCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s0XQorKyAg c3RmZCA1LCAweDI5MCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s1XQorKyAg c3RmZCA2LCAweDI5OCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s2XQorKyAg c3RmZCA3LCAweDJhMCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s3XQorKyAg c3RmZCA4LCAweDJhOCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s4XQorKyAg c3RmZCA5LCAweDJiMCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s5XQorKyAg c3RmZCAxMCwgMHgyYjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxMF0KKysg IHN0ZmQgMTEsIDB4MmMwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTFdCisr ICBzdGZkIDEyLCAweDJjOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzEyXQor KyAgc3RmZCAxMywgMHgyZDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxM10K KysgIHN0ZmQgMTQsIDB4MmQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTRd CisrICBzdGZkIDE1LCAweDJlMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE1 XQorKyAgc3RmZCAxNiwgMHgyZTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sx Nl0KKysgIHN0ZmQgMTcsIDB4MmYwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3Nb MTddCisrICBzdGZkIDE4LCAweDJmOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdz WzE4XQorKyAgc3RmZCAxOSwgMHgzMDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVn c1sxOV0KKysgIHN0ZmQgMjAsIDB4MzA4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3Jl Z3NbMjBdCisrICBzdGZkIDIxLCAweDMxMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9y ZWdzWzIxXQorKyAgc3RmZCAyMiwgMHgzMTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBf cmVnc1syMl0KKysgIHN0ZmQgMjMsIDB4MzIwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbMjNdCisrICBzdGZkIDI0LCAweDMyOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5m cF9yZWdzWzI0XQorKyAgc3RmZCAyNSwgMHgzMzAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu ZnBfcmVnc1syNV0KKysgIHN0ZmQgMjYsIDB4MzM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LmZwX3JlZ3NbMjZdCisrICBzdGZkIDI3LCAweDM0MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzI3XQorKyAgc3RmZCAyOCwgMHgzNDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZnBfcmVnc1syOF0KKysgIHN0ZmQgMjksIDB4MzUwKDMpIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LmZwX3JlZ3NbMjldCisrICBzdGZkIDMwLCAweDM1OCgzKSAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5mcF9yZWdzWzMwXQorKyAgc3RmZCAzMSwgMHgzNjAoMykgLy8gY29udGV4dC0+dWNfbWNv bnRleHQuZnBfcmVnc1szMV0KKysKKysgIC8vIEZQU0NSCisrICBtZmZzIDAKKysgIHN0ZmQgMCwg MHgzNjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1szMl0KKysKKysgIC8vIFNh dmUgVk1YIFZlY3RvciByZWdpc3RlcnMKKysgIC8vIFVwZGF0ZSByNCB0byBjb250YWluIHRoZSBi YXNlIGFkZHJlc3Mgb2Ygdm14X3Jlc2VydmUKKysgIGFkZGkgNCwgMywgMHgzNzgKKysgIC8vIEVu c3VyZSB0aGF0IGl0IGlzIHF1YWR3b3JkIGFsaWduZWQKKysgIGFuZGkuIDUsIDQsIDB4RgorKyAg YmVxIDFmIC8vIE5vIGFsaWdubWVudCBpcyBuZWNlc3NhcnkKKysgIC8vIEFkZHJlc3MgaXMgZG91 Ymxld29yZCBhbGlnbmVkIGFuZCBub3QgcXVhZHdvcmQgYWxpZ25lZCwgYWRkIDgKKysgIGFkZGkg NCwgNCwgOAorKworKzE6CisrICAvLyBTdG9yZSBWTVggcmVnaXN0ZXJzIDAtMzEKKysgIC8vIHI0 IHdpbGwgY29udGFpbiB0aGUgYmFzZSBhZGRyZXNzCisrICAvLyByNSB3aWxsIGNvbnRhaW4gdGhl IGluZGV4CisrICBsaSA1LCAwCisrICBzdHZ4IDAsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dngg MSwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAx XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAyLCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNv bnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDJdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4 IDMsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsg M10KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggNCwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA0XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2 eCA1LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSAr IDVdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDYsIDQsIDUgICAvLyBjb250ZXh0LT51Y19t Y29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgNl0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0 dnggNywgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikg KyA3XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCA4LCA0LCA1ICAgLy8gY29udGV4dC0+dWNf bWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDhdCisrICBhZGRpIDUsIDUsIDE2CisrICBz dHZ4IDksIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24p ICsgOV0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTAsIDQsIDUgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxMF0KKysgIGFkZGkgNSwgNSwgMTYKKysg IHN0dnggMTEsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGln bikgKyAxMV0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTIsIDQsIDUgIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxMl0KKysgIGFkZGkgNSwgNSwgMTYK KysgIHN0dnggMTMsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhh bGlnbikgKyAxM10KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTQsIDQsIDUgIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxNF0KKysgIGFkZGkgNSwgNSwg MTYKKysgIHN0dnggMTUsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZl WyhhbGlnbikgKyAxNV0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTYsIDQsIDUgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxNl0KKysgIGFkZGkgNSwg NSwgMTYKKysgIHN0dnggMTcsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNl cnZlWyhhbGlnbikgKyAxN10KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTgsIDQsIDUgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxOF0KKysgIGFkZGkg NSwgNSwgMTYKKysgIHN0dnggMTksIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9y ZXNlcnZlWyhhbGlnbikgKyAxOV0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjAsIDQsIDUg IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyMF0KKysgIGFk ZGkgNSwgNSwgMTYKKysgIHN0dnggMjEsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZt eF9yZXNlcnZlWyhhbGlnbikgKyAyMV0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjIsIDQs IDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyMl0KKysg IGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjMsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyM10KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjQs IDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyNF0K KysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjUsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyNV0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dngg MjYsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAy Nl0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjcsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyN10KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0 dnggMjgsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikg KyAyOF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjksIDQsIDUgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyOV0KKysgIGFkZGkgNSwgNSwgMTYKKysg IHN0dnggMzAsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGln bikgKyAzMF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMzEsIDQsIDUgIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAzMV0KKysgIGFkZGkgNSwgNSwgMTYK KysKKysgIC8vIFZTQ1IKKysgIG1mdnNjciAwCisrICBzdHZ4IDAsIDQsIDUKKysgIGFkZGkgNSwg NSwgMTYKKysKKysgIC8vIFZSU0FWRQorKyAgbWZ2cnNhdmUgMAorKyAgc3R3eCAwLCA0LCA1Cisr CisrICAvLyBVcGRhdGUgY29udGV4dC0+dWNfbWNvbnRleHQudl9yZWdzIHRvIHBvaW50IHRvIHZt eF9yZXNlcnZlICsgYWxpZ25tZW50LgorKyAgc3RkIDQsIDB4MzcwKDMpCisrCisrICAvLyBaZXJv IG91dCBhbGwgdW51c2VkIGZpZWxkcworKyAgbGkgNCwgMAorKyAgc3RkIDQsIDB4YzgoMykgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQuc2lnbmFsCisrICBzdGQgNCwgMHhkMCgzKSAvLyBjb250ZXh0 LT51Y19tY29udGV4dC5oYW5kbGVyCisrICBzdGQgNCwgMHhkOCgzKSAvLyBjb250ZXh0LT51Y19t Y29udGV4dC5vbGRtYXNrCisrCisrICBibHIKKyAjZW5kaWYgIC8vIF9faTM4Nl9fCistLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdC5jYworKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21p c2MvY2FwdHVyZV9jb250ZXh0X3Rlc3QuY2MKK0BAIC00OSw3ICs0OSw4IEBAIHZvaWQgVGVzdENh cHR1cmVDb250ZXh0KCkgeworICAgLy8gcmVmZXJlbmNlIHByb2dyYW0gY291bnRlci4KKyAgIHVp bnRwdHJfdCBwYyA9IFByb2dyYW1Db3VudGVyRnJvbUNvbnRleHQoY29udGV4dF8xKTsKKyAKKy0j aWYgIWRlZmluZWQoQUREUkVTU19TQU5JVElaRVIpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKQorKyNpZiAhZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikgJiYgIWRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpICYmIFwKKysgICAgIWRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFN SUxZKQorICAgLy8gQWRkcmVzc1Nhbml0aXplciBjYW4gY2F1c2UgZW5vdWdoIGNvZGUgYmxvYXQg dGhhdCB0aGUg4oCcbmVhcmJ54oCdIGNoZWNrIHdvdWxkCisgICAvLyBsaWtlbHkgZmFpbC4KKyAg IGNvbnN0IHVpbnRwdHJfdCBrUmVmZXJlbmNlUEMgPQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2Fw dHVyZV9jb250ZXh0X3Rlc3RfdXRpbF9saW51eC5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2Fw dHVyZV9jb250ZXh0X3Rlc3RfdXRpbF9saW51eC5jYworQEAgLTM2LDYgKzM2LDggQEAgdm9pZCBT YW5pdHlDaGVja0NvbnRleHQoY29uc3QgTmF0aXZlQ1BVQ29udGV4dCYgY29udGV4dCkgeworICAg RVhQRUNUX0VRKGNvbnRleHQudWNfbWNvbnRleHQucmVnc1swXSwgRnJvbVBvaW50ZXJDYXN0PHVp bnRwdHJfdD4oJmNvbnRleHQpKTsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KQorICAgRVhQRUNUX0VRKGNvbnRleHQudWNfbWNvbnRleHQuZ3JlZ3NbNF0sIEZyb21Qb2ludGVy Q2FzdDx1aW50cHRyX3Q+KCZjb250ZXh0KSk7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2 NF9GQU1JTFkpCisrICBFWFBFQ1RfRVEoY29udGV4dC51Y19tY29udGV4dC5ncF9yZWdzWzNdLCBG cm9tUG9pbnRlckNhc3Q8dWludHB0cl90PigmY29udGV4dCkpOworICNlbmRpZgorIH0KKyAKK0BA IC01MCw2ICs1Miw4IEBAIHVpbnRwdHJfdCBQcm9ncmFtQ291bnRlckZyb21Db250ZXh0KGNvbnN0 IE5hdGl2ZUNQVUNvbnRleHQmIGNvbnRleHQpIHsKKyAgIHJldHVybiBjb250ZXh0LnVjX21jb250 ZXh0LnBjOworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisgICByZXR1cm4g Y29udGV4dC51Y19tY29udGV4dC5wYzsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZB TUlMWSkKKysgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTklQXTsKKyAj ZW5kaWYKKyB9CisgCitAQCAtNjQsNiArNjgsOCBAQCB1aW50cHRyX3QgU3RhY2tQb2ludGVyRnJv bUNvbnRleHQoY29uc3QgTmF0aXZlQ1BVQ29udGV4dCYgY29udGV4dCkgeworICAgcmV0dXJuIGNv bnRleHQudWNfbWNvbnRleHQuc3A7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkKKyAgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0LmdyZWdzWzI5XTsKKysjZWxpZiBkZWZp bmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0 LmdwX3JlZ3NbMV07CisgI2VuZGlmCisgfQorIAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL3Bvc2l4L3NpZ25h bHNfdGVzdC5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL3Bvc2l4L3NpZ25hbHNfdGVzdC5jYworQEAgLTQ2 LDEyICs0NiwxMiBAQCBib29sIENhbkNhdXNlU2lnbmFsKGludCBzaWcpIHsKKyAgIHJldHVybiBz aWcgPT0gU0lHQUJSVCB8fAorICAgICAgICAgIHNpZyA9PSBTSUdBTFJNIHx8CisgICAgICAgICAg c2lnID09IFNJR0JVUyB8fAorLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkKKysjaWYgIWRl ZmluZWQoQVJDSF9DUFVfQVJNNjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQorICAgICAg ICAgIHNpZyA9PSBTSUdGUEUgfHwKKy0jZW5kaWYgIC8vICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0 KQorKyNlbmRpZiAgLy8gIWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpICYmICFkZWZpbmVkKEFSQ0hf Q1BVX1BQQzY0KQorICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQo QVJDSF9DUFVfQVJNRUwpCisgICAgICAgICAgc2lnID09IFNJR0lMTCB8fAorLSNlbmRpZiAgLy8g ZGVmaW5lZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX0FSTUVMCisr I2VuZGlmICAvLyBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9D UFVfQVJNRUwpCisgICAgICAgICAgc2lnID09IFNJR1BJUEUgfHwKKyAgICAgICAgICBzaWcgPT0g U0lHU0VHViB8fAorICNpZiBkZWZpbmVkKE9TX01BQ09TWCkKK0BAIC0xMTcsOSArMTE3LDExIEBA IHZvaWQgQ2F1c2VTaWduYWwoaW50IHNpZykgeworICAgICAgIGJyZWFrOworICAgICB9CisgCist I2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KQorKyNpZiAhZGVmaW5lZChBUkNIX0NQVV9BUk02 NCkgJiYgIWRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCisgICAgIC8vIEFSTTY0IGhhcyBoYXJkd2Fy ZSBpbnRlZ2VyIGRpdmlzaW9uIGluc3RydWN0aW9ucyB0aGF0IGRvbuKAmXQgZ2VuZXJhdGUgYQor ICAgICAvLyB0cmFwIGZvciBkaXZpZGUtYnktemVybywgc28gdGhpcyBkb2VzbuKAmXQgcHJvZHVj ZSBTSUdGUEUuCisrICAgIC8vCisrICAgIC8vIFBQQzY0IGZpeGVkLXBvaW50IGRpdmlzaW9uIGJ5 IHplcm8gYWxzbyBkb2Vzbid0IHByb2R1Y2UgYSBTSUdGUEUuCisgICAgIGNhc2UgU0lHRlBFOiB7 CisgICAgICAgLy8gT3B0aW1pemF0aW9uIG1ha2VzIHRoaXMgdHJpY2t5LCBzbyBnZXQgemVybyBm cm9tIGEgc3lzdGVtIGNhbGwgbGlrZWx5CisgICAgICAgLy8gdG8gc3VjY2VlZCwgYW5kIHRyeSB0 byBkbyBzb21ldGhpbmcgd2l0aCB0aGUgcmVzdWx0LgorQEAgLTEzNyw3ICsxMzksNyBAQCB2b2lk IENhdXNlU2lnbmFsKGludCBzaWcpIHsKKyAgICAgICBmc3RhdChxdW90aWVudCwgJnN0YXRfYnVm KTsKKyAgICAgICBicmVhazsKKyAgICAgfQorLSNlbmRpZiAgLy8gQVJDSF9DUFVfQVJNNjQKKysj ZW5kaWYgIC8vICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KSAmJiAhZGVmaW5lZChBUkNIX0NQVV9Q UEM2NCkKKyAKKyAjaWYgZGVmaW5lZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFS Q0hfQ1BVX0FSTUVMKQorICAgICBjYXNlIFNJR0lMTDogeworLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9saWJwbmcvQlVJTEQuZ24KKysrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbGlicG5nL0JVSUxELmduCitA QCAtOTMsNiArOTMsMTEgQEAgc291cmNlX3NldCgibGlicG5nX3NvdXJjZXMiKSB7CisgICAgICAg Im1pcHMvZmlsdGVyX21zYV9pbnRyaW5zaWNzLmMiLAorICAgICAgICJtaXBzL21pcHNfaW5pdC5j IiwKKyAgICAgXQorKyAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7CisrICAg IHNvdXJjZXMgKz0gWworKyAgICAgICJwb3dlcnBjL2ZpbHRlcl92c3hfaW50cmluc2ljcy5jIiwK KysgICAgICAicG93ZXJwYy9wb3dlcnBjX2luaXQuYyIsCisrICAgIF0KKyAgIH0KKyAKKyAgIGNv bmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorbmV3 IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbGlicG5nL3Bvd2VycGMvZmlsdGVyX3ZzeF9pbnRy aW5zaWNzLmMKK0BAIC0wLDAgKzEsNzY3IEBACisrLyogZmlsdGVyX3ZzeF9pbnRyaW5zaWNzLmMg LSBQb3dlclBDIG9wdGltaXNlZCBmaWx0ZXIgZnVuY3Rpb25zCisrICoKKysgKiBDb3B5cmlnaHQg KGMpIDIwMTcgR2xlbm4gUmFuZGVycy1QZWhyc29uCisrICogV3JpdHRlbiBieSBWYWRpbSBCYXJr b3YsIDIwMTcuCisrICogTGFzdCBjaGFuZ2VkIGluIGxpYnBuZyAxLjYuMjkgW01hcmNoIDE2LCAy MDE3XQorKyAqCisrICogVGhpcyBjb2RlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBsaWJwbmcgbGlj ZW5zZS4KKysgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRo ZSBkaXNjbGFpbWVyCisrICogYW5kIGxpY2Vuc2UgaW4gcG5nLmgKKysgKi8KKysjaW5jbHVkZSA8 c3RkaW8uaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrI2luY2x1ZGUgIi4uL3BuZ3ByaXYuaCIK KysKKysjaWZkZWYgUE5HX1JFQURfU1VQUE9SVEVECisrCisrLyogVGhpcyBjb2RlIHJlcXVpcmVz IC1tYWx0aXZlYyBhbmQgLW12c3ggb24gdGhlIGNvbW1hbmQgbGluZTogKi8KKysjaWYgUE5HX1BP V0VSUENfVlNYX0lNUExFTUVOVEFUSU9OID09IDEgLyogaW50cmluc2ljcyBjb2RlIGZyb20gcG5n cHJpdi5oICovCisrCisrI2luY2x1ZGUgPGFsdGl2ZWMuaD4KKysKKysjaWYgUE5HX1BPV0VSUENf VlNYX09QVCA+IDAKKysKKysjaWZuZGVmIF9fVlNYX18KKysjICBlcnJvciAiVGhpcyBjb2RlIHJl cXVpcmVzIFZTWCBzdXBwb3J0IChQT1dFUjcgYW5kIGxhdGVyKS4gUGxlYXNlIHByb3ZpZGUgLW12 c3ggY29tcGlsZXIgZmxhZy4iCisrI2VuZGlmCisrCisrI2RlZmluZSB2ZWNfbGRfdW5hbGlnbmVk KHZlYyxkYXRhKSB2ZWMgPSB2ZWNfdnN4X2xkKDAsZGF0YSkKKysjZGVmaW5lIHZlY19zdF91bmFs aWduZWQodmVjLGRhdGEpIHZlY192c3hfc3QodmVjLDAsZGF0YSkKKysKKysKKysvKiBGdW5jdGlv bnMgaW4gdGhpcyBmaWxlIGxvb2sgYXQgbW9zdCAzIHBpeGVscyAoYSxiLGMpIHRvIHByZWRpY3Qg dGhlIDR0aCAoZCkuCisrICogVGhleSdyZSBwb3NpdGlvbmVkIGxpa2UgdGhpczoKKysgKiAgICBw cmV2OiAgYyBiCisrICogICAgcm93OiAgIGEgZAorKyAqIFRoZSBTdWIgZmlsdGVyIHByZWRpY3Rz IGQ9YSwgQXZnIGQ9KGErYikvMiwgYW5kIFBhZXRoIHByZWRpY3RzIGQgdG8gYmUKKysgKiB3aGlj aGV2ZXIgb2YgYSwgYiwgb3IgYyBpcyBjbG9zZXN0IHRvIHA9YStiLWMuCisrICogKCB0aGlzIGlz IHRha2VuIGZyb20gLi4vaW50ZWwvZmlsdGVyX3NzZTJfaW50cmluc2ljcy5jICkKKysgKi8KKysK KysjZGVmaW5lIHZzeF9kZWNsYXJlX2NvbW1vbl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3Jvdyxv ZmZzZXQpIFwKKysgICBwbmdfYnl0ZSBpO1wKKysgICBwbmdfYnl0ZXAgcnAgPSByb3cgKyBvZmZz ZXQ7XAorKyAgIHBuZ19jb25zdF9ieXRlcCBwcCA9IHByZXZfcm93O1wKKysgICBwbmdfc2l6ZV90 IHVuYWxpZ25lZF90b3AgPSAxNiAtICgoKHBuZ19zaXplX3QpcnAgJSAxNikpO1wKKysgICBwbmdf c2l6ZV90IGlzdG9wO1wKKysgICBpZih1bmFsaWduZWRfdG9wID09IDE2KVwKKysgICAgICB1bmFs aWduZWRfdG9wID0gMDtcCisrICAgaXN0b3AgPSByb3dfaW5mby0+cm93Ynl0ZXM7XAorKyAgIGlm KCh1bmFsaWduZWRfdG9wIDwgaXN0b3ApKVwKKysgICAgICBpc3RvcCAtPSB1bmFsaWduZWRfdG9w O1wKKysgICBlbHNle1wKKysgICAgICB1bmFsaWduZWRfdG9wID0gaXN0b3A7XAorKyAgICAgIGlz dG9wID0gMDtcCisrICAgfQorKworK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd191cF92c3gocG5n X3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBuZ19jb25zdF9ieXRlcCBwcmV2X3JvdykKKyt7CisrICAgdmVjdG9yIHVu c2lnbmVkIGNoYXIgcnBfdmVjOworKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBwX3ZlYzsKKysg ICB2c3hfZGVjbGFyZV9jb21tb25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csMCkKKysKKysg ICAvKiBBbHRpdmVjIG9wZXJhdGlvbnMgcmVxdWlyZSAxNi1ieXRlIGFsaWduZWQgZGF0YQorKyAg ICAqIGJ1dCBpbnB1dCBjYW4gYmUgdW5hbGlnbmVkLiBTbyB3ZSBjYWxjdWxhdGUKKysgICAgKiB1 bmFsaWduZWQgcGFydCBhcyB1c3VhbC4KKysgICAgKi8KKysgICBmb3IgKGkgPSAwOyBpIDwgdW5h bGlnbmVkX3RvcDsgaSsrKQorKyAgIHsKKysgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgq cnApICsgKGludCkoKnBwKyspKSAmIDB4ZmYpOworKyAgICAgIHJwKys7CisrICAgfQorKworKyAg IC8qIFVzaW5nIFNJTUQgd2hpbGUgd2UgY2FuICovCisrICAgd2hpbGUoIGlzdG9wID49IDE2ICkK KysgICB7CisrICAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOworKyAgICAgIHZlY19sZF91bmFs aWduZWQocHBfdmVjLHBwKTsKKysKKysgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwcF92 ZWMpOworKworKyAgICAgIHZlY19zdChycF92ZWMsMCxycCk7CisrCisrICAgICAgcHAgKz0gMTY7 CisrICAgICAgcnAgKz0gMTY7CisrICAgICAgaXN0b3AgLT0gMTY7CisrICAgfQorKworKyAgIGlm KGlzdG9wID4gMCkKKysgICB7CisrICAgICAgLyogSWYgYnl0ZSBjb3VudCBvZiByb3cgaXMgbm90 IGRpdmlzaWJsZSBieSAxNgorKyAgICAgICAqIHdlIHdpbGwgcHJvY2VzcyByZW1haW5pbmcgcGFy dCBhcyB1c3VhbAorKyAgICAgICAqLworKyAgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcDsgaSsr KQorKyAgICAgIHsKKysgICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGlu dCkoKnBwKyspKSAmIDB4ZmYpOworKyAgICAgICAgIHJwKys7CisrICAgICAgfQorK30KKysKKyt9 CisrCisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDFf NCA9IHsxNiwxNiwxNiwxNiwgMCwgMSwgMiwgMywxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Cisr c3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDJfNCA9IHsx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgNCwgNSwgNiwgNywxNiwxNiwxNiwxNn07Cisrc3RhdGlj IGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDNfNCA9IHsxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgOCwgOSwxMCwxMX07CisrCisrc3RhdGljIGNv bnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDFfMyA9IHsxNiwxNiwxNiwg MCwgMSwgMiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZl Y3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDJfMyA9IHsxNiwxNiwxNiwxNiwxNiwx NiwgMywgNCwgNSwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1 bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDNfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwgNiwgNywgOCwxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25l ZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDRfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwgOSwxMCwxMSwxNn07CisrCisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBj aGFyIFZTWF9OT1RfU0hJRlRFRDFfNCA9IHsxNiwxNiwxNiwxNiwgNCwgNSwgNiwgNywxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZT WF9OT1RfU0hJRlRFRDJfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgOCwgOSwxMCwxMSwx NiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1Rf U0hJRlRFRDNfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxMiwxMywx NCwxNX07CisrCisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJ RlRFRDFfMyA9IHsxNiwxNiwxNiwgMywgNCwgNSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx Nn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDJf MyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwgNiwgNywgOCwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Cisr c3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDNfMyA9IHsx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgOSwxMCwxMSwxNiwxNiwxNiwxNn07Cisrc3RhdGlj IGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDRfMyA9IHsxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxMiwxMywxNCwxNn07CisrCisrc3RhdGljIGNv bnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1pFUk8gPSB7MCwwLDAsMCwwLDAsMCww LDAsMCwwLDAsMCwwLDAsMH07CisrI2lmZGVmIF9fTElUVExFX0VORElBTl9fCisrCisrc3RhdGlj IGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMV80ID0geyA0LDE2 LCA1LDE2LCA2LDE2LCA3LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29u c3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQyXzQgPSB7IDgsMTYsIDks MTYsMTAsMTYsMTEsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2 ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDNfNCA9IHsxMiwxNiwxMywxNiwx NCwxNiwxNSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07CisrCisrc3RhdGljIGNvbnN0IHZl Y3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSMV80ID0gezE2LDE2LDE2LDE2LCAw LCAyLCA0LCA2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9y IHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIyXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYs MTYsMTYsIDAsIDIsIDQsIDYsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5z aWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjNfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNiwgMCwgMiwgNCwgNn07CisrCisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNp Z25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMV8zID0geyAzLDE2LCA0LDE2LCA1LDE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVk IGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQyXzMgPSB7IDYsMTYsIDcsMTYsIDgsMTYsMTYsMTYsMTYs MTYsMTYsMTYsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hh ciBWU1hfQ0hBUl9UT19TSE9SVDNfMyA9IHsgOSwxNiwxMCwxNiwxMSwxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZT WF9DSEFSX1RPX1NIT1JUNF8zID0gezEyLDE2LDEzLDE2LDE0LDE2LDE2LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2fTsKKysKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNY X1NIT1JUX1RPX0NIQVIxXzMgPSB7MTYsMTYsMTYsIDAsIDIsIDQsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hP UlRfVE9fQ0hBUjJfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwgMCwgMiwgNCwxNiwxNiwxNiwxNiwx NiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9U T19DSEFSM18zID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAwLCAyLCA0LDE2LDE2LDE2 LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NI QVI0XzMgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDAsIDIsIDQsMTZ9 OworKworKyNlbGlmIGRlZmluZWQoX19CSUdfRU5ESUFOX18pCisrCisrc3RhdGljIGNvbnN0IHZl Y3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMV80ID0gezE2LCA0LDE2LCA1LDE2 LCA2LDE2LCA3LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9y IHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQyXzQgPSB7MTYsIDgsMTYsIDksMTYsMTAs MTYsMTEsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5z aWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDNfNCA9IHsxNiwxMiwxNiwxMywxNiwxNCwxNiwx NSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07CisrCisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNp Z25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSMV80ID0gezE2LDE2LDE2LDE2LCAxLCAzLCA1LCA3 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVk IGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIyXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDEs IDMsIDUsIDcsMTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hh ciBWU1hfU0hPUlRfVE9fQ0hBUjNfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwgMSwgMywgNSwgN307CisrCisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFy IFZTWF9DSEFSX1RPX1NIT1JUMV8zID0gezE2LCAzLDE2LCA0LDE2LCA1LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2fTsKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNY X0NIQVJfVE9fU0hPUlQyXzMgPSB7MTYsIDYsMTYsIDcsMTYsIDgsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTYsMTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hB Ul9UT19TSE9SVDNfMyA9IHsxNiwgOSwxNiwxMCwxNiwxMSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNn07Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RP X1NIT1JUNF8zID0gezE2LDEyLDE2LDEzLDE2LDE0LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2 LDE2fTsKKysKKytzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RP X0NIQVIxXzMgPSB7MTYsMTYsMTYsIDEsIDMsIDUsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTZ9OworK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hB UjJfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwgMSwgMywgNSwxNiwxNiwxNiwxNiwxNiwxNiwxNn07 Cisrc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSM18z ID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAxLCAzLCA1LDE2LDE2LDE2LDE2fTsKKytz dGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVI0XzMgPSB7 MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDEsIDMsIDUsMTZ9OworKworKyNl bmRpZgorKworKyNkZWZpbmUgdnN4X2NoYXJfdG9fc2hvcnQodmVjLG9mZnNldCxicHApICh2ZWN0 b3IgdW5zaWduZWQgc2hvcnQpdmVjX3Blcm0oKHZlYyksVlNYX0NIQVJfWkVSTyxWU1hfQ0hBUl9U T19TSE9SVCMjb2Zmc2V0IyNfIyNicHApCisrI2RlZmluZSB2c3hfc2hvcnRfdG9fY2hhcih2ZWMs b2Zmc2V0LGJwcCkgdmVjX3Blcm0oKCh2ZWN0b3IgdW5zaWduZWQgY2hhcikodmVjKSksVlNYX0NI QVJfWkVSTyxWU1hfU0hPUlRfVE9fQ0hBUiMjb2Zmc2V0IyNfIyNicHApCisrCisrI2lmZGVmIFBO R19VU0VfQUJTCisrIyAgZGVmaW5lIHZzeF9hYnMobnVtYmVyKSBhYnMobnVtYmVyKQorKyNlbHNl CisrIyAgZGVmaW5lIHZzeF9hYnMobnVtYmVyKSAobnVtYmVyID4gMCkgPyAobnVtYmVyKSA6IC0o bnVtYmVyKQorKyNlbmRpZgorKworK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19zdWI0X3ZzeChw bmdfcm93X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwbmdfY29uc3RfYnl0ZXAgcHJldl9yb3cpCisreworKyAgIGNvbnN0 IHBuZ19ieXRlIGJwcCA9IDQ7CisrCisrICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfdmVjOwor KyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBhcnRfdmVjOworKworKyAgIHZzeF9kZWNsYXJlX2Nv bW1vbl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdyxicHApCisrCisrICAgUE5HX1VOVVNFRChw cCkKKysKKysgICAvKiBBbHRpdmVjIG9wZXJhdGlvbnMgcmVxdWlyZSAxNi1ieXRlIGFsaWduZWQg ZGF0YQorKyAgICAqIGJ1dCBpbnB1dCBjYW4gYmUgdW5hbGlnbmVkLiBTbyB3ZSBjYWxjdWxhdGUK KysgICAgKiB1bmFsaWduZWQgcGFydCBhcyB1c3VhbC4KKysgICAgKi8KKysgICBmb3IgKGkgPSAw OyBpIDwgdW5hbGlnbmVkX3RvcDsgaSsrKQorKyAgIHsKKysgICAgICAqcnAgPSAocG5nX2J5dGUp KCgoaW50KSgqcnApICsgKGludCkoKihycC1icHApKSkgJiAweGZmKTsKKysgICAgICBycCsrOwor KyAgIH0KKysKKysgICAvKiBVc2luZyBTSU1EIHdoaWxlIHdlIGNhbiAqLworKyAgIHdoaWxlKCBp c3RvcCA+PSAxNiApCisrICAgeworKyAgICAgIGZvcihpPTA7aSA8IGJwcCA7IGkrKykKKysgICAg ICB7CisrICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCoocnAt YnBwKSkpICYgMHhmZik7CisrICAgICAgICAgcnArKzsKKysgICAgICB9CisrICAgICAgcnAgLT0g YnBwOworKworKyAgICAgIHJwX3ZlYyA9IHZlY19sZCgwLHJwKTsKKysgICAgICBwYXJ0X3ZlYyA9 IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDFfNCk7CisrICAg ICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMpOworKworKyAgICAgIHBhcnRfdmVj ID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEMl80KTsKKysg ICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7CisrCisrICAgICAgcGFydF92 ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQzXzQpOwor KyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsKKysKKysgICAgICB2ZWNf c3QocnBfdmVjLDAscnApOworKworKyAgICAgIHJwICs9IDE2OworKyAgICAgIGlzdG9wIC09IDE2 OworKyAgIH0KKysKKysgICBpZihpc3RvcCA+IDApCisrICAgICAgZm9yIChpID0gMDsgaSA8IGlz dG9wICUgMTY7IGkrKykKKysgICAgICB7CisrICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGlu dCkoKnJwKSArIChpbnQpKCoocnAgLSBicHApKSkgJiAweGZmKTsKKysgICAgICAgICBycCsrOwor KyAgICAgIH0KKysKKyt9CisrCisrdm9pZCBwbmdfcmVhZF9maWx0ZXJfcm93X3N1YjNfdnN4KHBu Z19yb3dfaW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3csCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBuZ19jb25zdF9ieXRlcCBwcmV2X3JvdykKKyt7CisrICAgY29uc3Qg cG5nX2J5dGUgYnBwID0gMzsKKysKKysgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBycF92ZWM7Cisr ICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcGFydF92ZWM7CisrCisrICAgdnN4X2RlY2xhcmVfY29t bW9uX3ZhcnMocm93X2luZm8scm93LHByZXZfcm93LGJwcCkKKysKKysgICBQTkdfVU5VU0VEKHBw KQorKworKyAgIC8qIEFsdGl2ZWMgb3BlcmF0aW9ucyByZXF1aXJlIDE2LWJ5dGUgYWxpZ25lZCBk YXRhCisrICAgICogYnV0IGlucHV0IGNhbiBiZSB1bmFsaWduZWQuIFNvIHdlIGNhbGN1bGF0ZQor KyAgICAqIHVuYWxpZ25lZCBwYXJ0IGFzIHVzdWFsLgorKyAgICAqLworKyAgIGZvciAoaSA9IDA7 IGkgPCB1bmFsaWduZWRfdG9wOyBpKyspCisrICAgeworKyAgICAgICpycCA9IChwbmdfYnl0ZSko KChpbnQpKCpycCkgKyAoaW50KSgqKHJwLWJwcCkpKSAmIDB4ZmYpOworKyAgICAgIHJwKys7Cisr ICAgfQorKworKyAgIC8qIFVzaW5nIFNJTUQgd2hpbGUgd2UgY2FuICovCisrICAgd2hpbGUoIGlz dG9wID49IDE2ICkKKysgICB7CisrICAgICAgZm9yKGk9MDtpIDwgYnBwIDsgaSsrKQorKyAgICAg IHsKKysgICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKihycC1i cHApKSkgJiAweGZmKTsKKysgICAgICAgICBycCsrOworKyAgICAgIH0KKysgICAgICBycCAtPSBi cHA7CisrCisrICAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOworKyAgICAgIHBhcnRfdmVjID0g dmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEMV8zKTsKKysgICAg ICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7CisrCisrICAgICAgcGFydF92ZWMg PSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQyXzMpOworKyAg ICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsKKysKKysgICAgICBwYXJ0X3Zl YyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDNfMyk7Cisr ICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMpOworKworKyAgICAgIHBhcnRf dmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVENF8zKTsK KysgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7CisrCisrICAgICAgdmVj X3N0KHJwX3ZlYywwLHJwKTsKKysgICAgICBycCArPSAxNTsKKysgICAgICBpc3RvcCAtPSAxNjsK KysKKysgICAgICAvKiBTaW5jZSAxNiAlIGJwcCA9IDE2ICUgMyA9IDEsIGxhc3QgZWxlbWVudCBv ZiBhcnJheSBtdXN0CisrICAgICAgICogYmUgcHJvY2VlZGVkIG1hbnVhbGx5CisrICAgICAgICov CisrICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCoocnAtYnBwKSkp ICYgMHhmZik7CisrICAgICAgcnArKzsKKysgICB9CisrCisrICAgaWYoaXN0b3AgPiAwKQorKyAg ICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCisrICAgICAgeworKyAgICAgICAg ICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqKHJwLWJwcCkpKSAmIDB4ZmYp OworKyAgICAgICAgIHJwKys7CisrICAgICAgfQorK30KKysKKyt2b2lkIHBuZ19yZWFkX2ZpbHRl cl9yb3dfYXZnNF92c3gocG5nX3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93 KQorK3sKKysgICBjb25zdCBwbmdfYnl0ZSBicHAgPSA0OworKworKyAgIHZlY3RvciB1bnNpZ25l ZCBjaGFyIHJwX3ZlYzsKKysgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwcF92ZWM7CisrICAgdmVj dG9yIHVuc2lnbmVkIGNoYXIgcHBfcGFydF92ZWM7CisrICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIg cnBfcGFydF92ZWM7CisrICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgYXZnX3ZlYzsKKysKKysgICB2 c3hfZGVjbGFyZV9jb21tb25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csYnBwKQorKyAgIHJw IC09IGJwcDsKKysgICBpZihpc3RvcCA+PSBicHApCisrICAgICAgaXN0b3AgLT0gYnBwOworKwor KyAgIGZvciAoaSA9IDA7IGkgPCBicHA7IGkrKykKKysgICB7CisrICAgICAgKnJwID0gKHBuZ19i eXRlKSgoKGludCkoKnJwKSArCisrICAgICAgICAgKChpbnQpKCpwcCsrKSAvIDIgKSkgJiAweGZm KTsKKysKKysgICAgICBycCsrOworKyAgIH0KKysKKysgICAvKiBBbHRpdmVjIG9wZXJhdGlvbnMg cmVxdWlyZSAxNi1ieXRlIGFsaWduZWQgZGF0YQorKyAgICAqIGJ1dCBpbnB1dCBjYW4gYmUgdW5h bGlnbmVkLiBTbyB3ZSBjYWxjdWxhdGUKKysgICAgKiB1bmFsaWduZWQgcGFydCBhcyB1c3VhbC4K KysgICAgKi8KKysgICBmb3IgKGkgPSAwOyBpIDwgdW5hbGlnbmVkX3RvcDsgaSsrKQorKyAgIHsK KysgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKKysgICAgICAgICAoaW50KSgq cHArKyArICoocnAtYnBwKSkgLyAyICkgJiAweGZmKTsKKysKKysgICAgICBycCsrOworKyAgIH0K KysKKysgICAvKiBVc2luZyBTSU1EIHdoaWxlIHdlIGNhbiAqLworKyAgIHdoaWxlKCBpc3RvcCA+ PSAxNiApCisrICAgeworKyAgICAgIGZvcihpPTA7aSA8IGJwcCA7IGkrKykKKysgICAgICB7Cisr ICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCisrICAgICAgICAgICAgKGlu dCkoKnBwKysgKyAqKHJwLWJwcCkpIC8gMiApICYgMHhmZik7CisrCisrICAgICAgICAgcnArKzsK KysgICAgICB9CisrICAgICAgcnAgLT0gYnBwOworKyAgICAgIHBwIC09IGJwcDsKKysKKysgICAg ICB2ZWNfbGRfdW5hbGlnbmVkKHBwX3ZlYyxwcCk7CisrICAgICAgcnBfdmVjID0gdmVjX2xkKDAs cnApOworKworKyAgICAgIHJwX3BhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pF Uk8sVlNYX0xFRlRTSElGVEVEMV80KTsKKysgICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBw X3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9OT1RfU0hJRlRFRDFfNCk7CisrICAgICAgYXZnX3ZlYyA9 IHZlY19hdmcocnBfcGFydF92ZWMscHBfcGFydF92ZWMpOworKyAgICAgIGF2Z192ZWMgPSB2ZWNf c3ViKGF2Z192ZWMsIHZlY19hbmQodmVjX3hvcihycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyksdmVj X3NwbGF0X3U4KDEpKSk7CisrICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7 CisrCisrICAgICAgcnBfcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxW U1hfTEVGVFNISUZURUQyXzQpOworKyAgICAgIHBwX3BhcnRfdmVjID0gdmVjX3Blcm0ocHBfdmVj LFZTWF9DSEFSX1pFUk8sVlNYX05PVF9TSElGVEVEMl80KTsKKysgICAgICBhdmdfdmVjID0gdmVj X2F2ZyhycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyk7CisrICAgICAgYXZnX3ZlYyA9IHZlY19zdWIo YXZnX3ZlYywgdmVjX2FuZCh2ZWNfeG9yKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKSx2ZWNfc3Bs YXRfdTgoMSkpKTsKKysgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxhdmdfdmVjKTsKKysK KysgICAgICBycF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9M RUZUU0hJRlRFRDNfNCk7CisrICAgICAgcHBfcGFydF92ZWMgPSB2ZWNfcGVybShwcF92ZWMsVlNY X0NIQVJfWkVSTyxWU1hfTk9UX1NISUZURUQzXzQpOworKyAgICAgIGF2Z192ZWMgPSB2ZWNfYXZn KHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKTsKKysgICAgICBhdmdfdmVjID0gdmVjX3N1Yihhdmdf dmVjLCB2ZWNfYW5kKHZlY194b3IocnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91 OCgxKSkpOworKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLGF2Z192ZWMpOworKworKyAg ICAgIHZlY19zdChycF92ZWMsMCxycCk7CisrCisrICAgICAgcnAgKz0gMTY7CisrICAgICAgcHAg Kz0gMTY7CisrICAgICAgaXN0b3AgLT0gMTY7CisrICAgfQorKworKyAgIGlmKGlzdG9wICA+IDAp CisrICAgICAgZm9yIChpID0gMDsgaSA8IGlzdG9wICUgMTY7IGkrKykKKysgICAgICB7CisrICAg ICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCisrICAgICAgICAgICAgKGludCko KnBwKysgKyAqKHJwLWJwcCkpIC8gMiApICYgMHhmZik7CisrCisrICAgICAgICAgcnArKzsKKysg ICAgICB9CisrfQorKworK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19hdmczX3ZzeChwbmdfcm93 X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwbmdfY29uc3RfYnl0ZXAgcHJldl9yb3cpCisreworKyAgY29uc3QgcG5nX2J5 dGUgYnBwID0gMzsKKysKKysgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsKKysgIHZlY3Rv ciB1bnNpZ25lZCBjaGFyIHBwX3ZlYzsKKysgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBwX3BhcnRf dmVjOworKyAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfcGFydF92ZWM7CisrICB2ZWN0b3IgdW5z aWduZWQgY2hhciBhdmdfdmVjOworKworKyAgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93X2lu Zm8scm93LHByZXZfcm93LGJwcCkKKysgIHJwIC09IGJwcDsKKysgIGlmKGlzdG9wID49IGJwcCkK KysgICAgIGlzdG9wIC09IGJwcDsKKysKKysgIGZvciAoaSA9IDA7IGkgPCBicHA7IGkrKykKKysg IHsKKysgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKworKyAgICAgICAgKChpbnQp KCpwcCsrKSAvIDIgKSkgJiAweGZmKTsKKysKKysgICAgIHJwKys7CisrICB9CisrCisrICAvKiBB bHRpdmVjIG9wZXJhdGlvbnMgcmVxdWlyZSAxNi1ieXRlIGFsaWduZWQgZGF0YQorKyAgICogYnV0 IGlucHV0IGNhbiBiZSB1bmFsaWduZWQuIFNvIHdlIGNhbGN1bGF0ZQorKyAgICogdW5hbGlnbmVk IHBhcnQgYXMgdXN1YWwuCisrICAgKi8KKysgIGZvciAoaSA9IDA7IGkgPCB1bmFsaWduZWRfdG9w OyBpKyspCisrICB7CisrICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKKysgICAg ICAgIChpbnQpKCpwcCsrICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYpOworKworKyAgICAgcnAr KzsKKysgIH0KKysKKysgIC8qIFVzaW5nIFNJTUQgd2hpbGUgd2UgY2FuICovCisrICB3aGlsZSgg aXN0b3AgPj0gMTYgKQorKyAgeworKyAgICAgZm9yKGk9MDtpIDwgYnBwIDsgaSsrKQorKyAgICAg eworKyAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCisrICAgICAgICAgICAo aW50KSgqcHArKyArICoocnAtYnBwKSkgLyAyICkgJiAweGZmKTsKKysKKysgICAgICAgIHJwKys7 CisrICAgICB9CisrICAgICBycCAtPSBicHA7CisrICAgICBwcCAtPSBicHA7CisrCisrICAgICB2 ZWNfbGRfdW5hbGlnbmVkKHBwX3ZlYyxwcCk7CisrICAgICBycF92ZWMgPSB2ZWNfbGQoMCxycCk7 CisrCisrICAgICBycF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZT WF9MRUZUU0hJRlRFRDFfMyk7CisrICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxW U1hfQ0hBUl9aRVJPLFZTWF9OT1RfU0hJRlRFRDFfMyk7CisrICAgICBhdmdfdmVjID0gdmVjX2F2 ZyhycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyk7CisrICAgICBhdmdfdmVjID0gdmVjX3N1Yihhdmdf dmVjLCB2ZWNfYW5kKHZlY194b3IocnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91 OCgxKSkpOworKyAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7CisrCisrICAg ICBycF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJ RlRFRDJfMyk7CisrICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9a RVJPLFZTWF9OT1RfU0hJRlRFRDJfMyk7CisrICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0 X3ZlYyxwcF9wYXJ0X3ZlYyk7CisrICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNf YW5kKHZlY194b3IocnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOwor KyAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7CisrCisrICAgICBycF9wYXJ0 X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDNfMyk7 CisrICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9O T1RfU0hJRlRFRDNfMyk7CisrICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0X3ZlYyxwcF9w YXJ0X3ZlYyk7CisrICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5kKHZlY194 b3IocnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOworKyAgICAgcnBf dmVjID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7CisrCisrICAgICBycF9wYXJ0X3ZlYyA9IHZl Y19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDRfMyk7CisrICAgICBw cF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9OT1RfU0hJRlRF RDRfMyk7CisrICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyk7 CisrICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5kKHZlY194b3IocnBfcGFy dF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOworKyAgICAgcnBfdmVjID0gdmVj X2FkZChycF92ZWMsYXZnX3ZlYyk7CisrCisrICAgICB2ZWNfc3QocnBfdmVjLDAscnApOworKwor KyAgICAgcnAgKz0gMTU7CisrICAgICBwcCArPSAxNTsKKysgICAgIGlzdG9wIC09IDE2OworKwor KyAgICAgLyogU2luY2UgMTYgJSBicHAgPSAxNiAlIDMgPSAxLCBsYXN0IGVsZW1lbnQgb2YgYXJy YXkgbXVzdAorKyAgICAgICogYmUgcHJvY2VlZGVkIG1hbnVhbGx5CisrICAgICAgKi8KKysgICAg ICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKworKyAgICAgICAgKGludCkoKnBwKysgKyAq KHJwLWJwcCkpIC8gMiApICYgMHhmZik7CisrICAgICBycCsrOworKyAgfQorKworKyAgaWYoaXN0 b3AgID4gMCkKKysgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCisrICAgICB7 CisrICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKKysgICAgICAgICAgIChp bnQpKCpwcCsrICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYpOworKworKyAgICAgICAgcnArKzsK KysgICAgIH0KKyt9CisrCisrLyogQnl0ZXdpc2UgYyA/IHQgOiBlLiAqLworKyNkZWZpbmUgaWZf dGhlbl9lbHNlKGMsdCxlKSB2ZWNfc2VsKGUsdCxjKQorKworKyNkZWZpbmUgdnN4X3BhZXRoX3By b2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKSB7XAorKyAgICAgIGMgPSAqKHBwIC0gYnBw KTtcCisrICAgICAgYSA9ICoocnAgLSBicHApO1wKKysgICAgICBiID0gKnBwKys7XAorKyAgICAg IHAgPSBiIC0gYztcCisrICAgICAgcGMgPSBhIC0gYztcCisrICAgICAgcGEgPSB2c3hfYWJzKHAp O1wKKysgICAgICBwYiA9IHZzeF9hYnMocGMpO1wKKysgICAgICBwYyA9IHZzeF9hYnMocCArIHBj KTtcCisrICAgICAgaWYgKHBiIDwgcGEpIHBhID0gcGIsIGEgPSBiO1wKKysgICAgICBpZiAocGMg PCBwYSkgYSA9IGM7XAorKyAgICAgIGEgKz0gKnJwO1wKKysgICAgICAqcnArKyA9IChwbmdfYnl0 ZSlhO1wKKysgICAgICB9CisrCisrdm9pZCBwbmdfcmVhZF9maWx0ZXJfcm93X3BhZXRoNF92c3go cG5nX3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKKysgICBwbmdfY29uc3RfYnl0 ZXAgcHJldl9yb3cpCisreworKyAgIGNvbnN0IHBuZ19ieXRlIGJwcCA9IDQ7CisrCisrICAgaW50 IGEsIGIsIGMsIHBhLCBwYiwgcGMsIHA7CisrICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfdmVj OworKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBwX3ZlYzsKKysgICB2ZWN0b3IgdW5zaWduZWQg c2hvcnQgYV92ZWMsYl92ZWMsY192ZWMsbmVhcmVzdF92ZWM7CisrICAgdmVjdG9yIHNpZ25lZCBz aG9ydCBwYV92ZWMscGJfdmVjLHBjX3ZlYyxzbWFsbGVzdF92ZWM7CisrCisrICAgdnN4X2RlY2xh cmVfY29tbW9uX3ZhcnMocm93X2luZm8scm93LHByZXZfcm93LGJwcCkKKysgICBycCAtPSBicHA7 CisrICAgaWYoaXN0b3AgPj0gYnBwKQorKyAgICAgIGlzdG9wIC09IGJwcDsKKysKKysgICAvKiBQ cm9jZXNzIHRoZSBmaXJzdCBwaXhlbCBpbiB0aGUgcm93IGNvbXBsZXRlbHkgKHRoaXMgaXMgdGhl IHNhbWUgYXMgJ3VwJworKyAgICAqIGJlY2F1c2UgdGhlcmUgaXMgb25seSBvbmUgY2FuZGlkYXRl IHByZWRpY3RvciBmb3IgdGhlIGZpcnN0IHJvdykuCisrICAgICovCisrICAgZm9yKGkgPSAwOyBp IDwgYnBwIDsgaSsrKQorKyAgIHsKKysgICAgICAqcnAgPSAocG5nX2J5dGUpKCAqcnAgKyAqcHAp OworKyAgICAgIHJwKys7CisrICAgICAgcHArKzsKKysgICB9CisrCisrICAgZm9yKGkgPSAwOyBp IDwgdW5hbGlnbmVkX3RvcCA7IGkrKykKKysgICB7CisrICAgICAgdnN4X3BhZXRoX3Byb2Nlc3Mo cnAscHAsYSxiLGMscGEscGIscGMsYnBwKQorKyAgIH0KKysKKysgICB3aGlsZSggaXN0b3AgPj0g MTYpCisrICAgeworKyAgICAgIGZvcihpID0gMDsgaSA8IGJwcCA7IGkrKykKKysgICAgICB7Cisr ICAgICAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQorKyAg ICAgIH0KKysKKysgICAgICBycCAtPSBicHA7CisrICAgICAgcHAgLT0gYnBwOworKyAgICAgIHJw X3ZlYyA9IHZlY19sZCgwLHJwKTsKKysgICAgICB2ZWNfbGRfdW5hbGlnbmVkKHBwX3ZlYyxwcCk7 CisrCisrICAgICAgYV92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBW U1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEMV80KSwxLDQpOworKyAgICAgIGJfdmVjID0g dnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9O T1RfU0hJRlRFRDFfNCksMSw0KTsKKysgICAgICBjX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZl Y19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQxXzQpLDEsNCk7 CisrICAgICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMsY192 ZWMpOworKyAgICAgIHBiX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGFfdmVj ICwgY192ZWMpOworKyAgICAgIHBjX3ZlYyA9IHZlY19hZGQocGFfdmVjLHBiX3ZlYyk7CisrICAg ICAgcGFfdmVjID0gdmVjX2FicyhwYV92ZWMpOworKyAgICAgIHBiX3ZlYyA9IHZlY19hYnMocGJf dmVjKTsKKysgICAgICBwY192ZWMgPSB2ZWNfYWJzKHBjX3ZlYyk7CisrICAgICAgc21hbGxlc3Rf dmVjID0gdmVjX21pbihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykpOworKyAgICAgIG5l YXJlc3RfdmVjID0gIGlmX3RoZW5fZWxzZSgKKysgICAgICAgICAgICB2ZWNfY21wZXEocGFfdmVj LHNtYWxsZXN0X3ZlYyksCisrICAgICAgICAgICAgYV92ZWMsCisrICAgICAgICAgICAgaWZfdGhl bl9lbHNlKAorKyAgICAgICAgICAgICAgdmVjX2NtcGVxKHBiX3ZlYyxzbWFsbGVzdF92ZWMpLAor KyAgICAgICAgICAgICAgYl92ZWMsCisrICAgICAgICAgICAgICBjX3ZlYworKyAgICAgICAgICAg ICAgKQorKyAgICAgICAgICAgICk7CisrICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsKHZz eF9zaG9ydF90b19jaGFyKG5lYXJlc3RfdmVjLDEsNCkpKTsKKysKKysgICAgICBhX3ZlYyA9IHZz eF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHJwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVG VFNISUZURUQyXzQpLDIsNCk7CisrICAgICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNf cGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElGVEVEMl80KSwyLDQpOwor KyAgICAgIGNfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NI QVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDJfNCksMiw0KTsKKysgICAgICBwYV92ZWMgPSAodmVj dG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1YihiX3ZlYyxjX3ZlYyk7CisrICAgICAgcGJfdmVjID0g KHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7CisrICAgICAgcGNf dmVjID0gdmVjX2FkZChwYV92ZWMscGJfdmVjKTsKKysgICAgICBwYV92ZWMgPSB2ZWNfYWJzKHBh X3ZlYyk7CisrICAgICAgcGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOworKyAgICAgIHBjX3ZlYyA9 IHZlY19hYnMocGNfdmVjKTsKKysgICAgICBzbWFsbGVzdF92ZWMgPSB2ZWNfbWluKHBjX3ZlYywg dmVjX21pbihwYV92ZWMscGJfdmVjKSk7CisrICAgICAgbmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9l bHNlKAorKyAgICAgICAgICAgIHZlY19jbXBlcShwYV92ZWMsc21hbGxlc3RfdmVjKSwKKysgICAg ICAgICAgICBhX3ZlYywKKysgICAgICAgICAgICBpZl90aGVuX2Vsc2UoCisrICAgICAgICAgICAg ICB2ZWNfY21wZXEocGJfdmVjLHNtYWxsZXN0X3ZlYyksCisrICAgICAgICAgICAgICBiX3ZlYywK KysgICAgICAgICAgICAgIGNfdmVjCisrICAgICAgICAgICAgICApCisrICAgICAgICAgICAgKTsK KysgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVz dF92ZWMsMiw0KSkpOworKworKyAgICAgIGFfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Bl cm0ocnBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDNfNCksMyw0KTsKKysg ICAgICBiX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFS X1pFUk8gLCBWU1hfTk9UX1NISUZURUQzXzQpLDMsNCk7CisrICAgICAgY192ZWMgPSB2c3hfY2hh cl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElG VEVEM180KSwzLDQpOworKyAgICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNf c3ViKGJfdmVjLGNfdmVjKTsKKysgICAgICBwYl92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkg dmVjX3N1YihhX3ZlYyAsIGNfdmVjKTsKKysgICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxw Yl92ZWMpOworKyAgICAgIHBhX3ZlYyA9IHZlY19hYnMocGFfdmVjKTsKKysgICAgICBwYl92ZWMg PSB2ZWNfYWJzKHBiX3ZlYyk7CisrICAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOworKyAg ICAgIHNtYWxsZXN0X3ZlYyA9IHZlY19taW4ocGNfdmVjLCB2ZWNfbWluKHBhX3ZlYyxwYl92ZWMp KTsKKysgICAgICBuZWFyZXN0X3ZlYyA9ICBpZl90aGVuX2Vsc2UoCisrICAgICAgICAgICAgdmVj X2NtcGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMpLAorKyAgICAgICAgICAgIGFfdmVjLAorKyAgICAg ICAgICAgIGlmX3RoZW5fZWxzZSgKKysgICAgICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21h bGxlc3RfdmVjKSwKKysgICAgICAgICAgICAgIGJfdmVjLAorKyAgICAgICAgICAgICAgY192ZWMK KysgICAgICAgICAgICAgICkKKysgICAgICAgICAgICApOworKyAgICAgIHJwX3ZlYyA9IHZlY19h ZGQocnBfdmVjLCh2c3hfc2hvcnRfdG9fY2hhcihuZWFyZXN0X3ZlYywzLDQpKSk7CisrCisrICAg ICAgdmVjX3N0KHJwX3ZlYywwLHJwKTsKKysKKysgICAgICBycCArPSAxNjsKKysgICAgICBwcCAr PSAxNjsKKysgICAgICBpc3RvcCAtPSAxNjsKKysgICB9CisrCisrICAgaWYoaXN0b3AgPiAwKQor KyAgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCisrICAgICAgeworKyAgICAg ICAgIHZzeF9wYWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkKKysgICAgICB9 CisrfQorKworK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19wYWV0aDNfdnN4KHBuZ19yb3dfaW5m b3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3csCisrICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93 KQorK3sKKysgIGNvbnN0IHBuZ19ieXRlIGJwcCA9IDM7CisrCisrICBpbnQgYSwgYiwgYywgcGEs IHBiLCBwYywgcDsKKysgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsKKysgIHZlY3RvciB1 bnNpZ25lZCBjaGFyIHBwX3ZlYzsKKysgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBhX3ZlYyxiX3Zl YyxjX3ZlYyxuZWFyZXN0X3ZlYzsKKysgIHZlY3RvciBzaWduZWQgc2hvcnQgcGFfdmVjLHBiX3Zl YyxwY192ZWMsc21hbGxlc3RfdmVjOworKworKyAgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93 X2luZm8scm93LHByZXZfcm93LGJwcCkKKysgIHJwIC09IGJwcDsKKysgIGlmKGlzdG9wID49IGJw cCkKKysgICAgIGlzdG9wIC09IGJwcDsKKysKKysgIC8qIFByb2Nlc3MgdGhlIGZpcnN0IHBpeGVs IGluIHRoZSByb3cgY29tcGxldGVseSAodGhpcyBpcyB0aGUgc2FtZSBhcyAndXAnCisrICAgKiBi ZWNhdXNlIHRoZXJlIGlzIG9ubHkgb25lIGNhbmRpZGF0ZSBwcmVkaWN0b3IgZm9yIHRoZSBmaXJz dCByb3cpLgorKyAgICovCisrICBmb3IoaSA9IDA7IGkgPCBicHAgOyBpKyspCisrICB7CisrICAg ICAqcnAgPSAocG5nX2J5dGUpKCAqcnAgKyAqcHApOworKyAgICAgcnArKzsKKysgICAgIHBwKys7 CisrICB9CisrCisrICBmb3IoaSA9IDA7IGkgPCB1bmFsaWduZWRfdG9wIDsgaSsrKQorKyAgewor KyAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQorKyAgfQor KworKyAgd2hpbGUoIGlzdG9wID49IDE2KQorKyAgeworKyAgICAgZm9yKGkgPSAwOyBpIDwgYnBw IDsgaSsrKQorKyAgICAgeworKyAgICAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMs cGEscGIscGMsYnBwKQorKyAgICAgfQorKworKyAgICAgcnAgLT0gYnBwOworKyAgICAgcHAgLT0g YnBwOworKyAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOworKyAgICAgdmVjX2xkX3VuYWxpZ25l ZChwcF92ZWMscHApOworKworKyAgICAgYV92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVy bShycF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEMV8zKSwxLDMpOworKyAg ICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9a RVJPICwgVlNYX05PVF9TSElGVEVEMV8zKSwxLDMpOworKyAgICAgY192ZWMgPSB2c3hfY2hhcl90 b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVE MV8zKSwxLDMpOworKyAgICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIo Yl92ZWMsY192ZWMpOworKyAgICAgcGJfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19z dWIoYV92ZWMgLCBjX3ZlYyk7CisrICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMp OworKyAgICAgcGFfdmVjID0gdmVjX2FicyhwYV92ZWMpOworKyAgICAgcGJfdmVjID0gdmVjX2Fi cyhwYl92ZWMpOworKyAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOworKyAgICAgc21hbGxl c3RfdmVjID0gdmVjX21pbihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykpOworKyAgICAg bmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNlKAorKyAgICAgICAgICAgdmVjX2NtcGVxKHBhX3Zl YyxzbWFsbGVzdF92ZWMpLAorKyAgICAgICAgICAgYV92ZWMsCisrICAgICAgICAgICBpZl90aGVu X2Vsc2UoCisrICAgICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21hbGxlc3RfdmVjKSwKKysg ICAgICAgICAgICAgYl92ZWMsCisrICAgICAgICAgICAgIGNfdmVjCisrICAgICAgICAgICAgICkK KysgICAgICAgICAgICk7CisrICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0 X3RvX2NoYXIobmVhcmVzdF92ZWMsMSwzKSkpOworKworKyAgICAgYV92ZWMgPSB2c3hfY2hhcl90 b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVE Ml8zKSwyLDMpOworKyAgICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92 ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElGVEVEMl8zKSwyLDMpOworKyAgICAgY192 ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwg VlNYX0xFRlRTSElGVEVEMl8zKSwyLDMpOworKyAgICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQg c2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMpOworKyAgICAgcGJfdmVjID0gKHZlY3RvciBzaWdu ZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7CisrICAgICBwY192ZWMgPSB2ZWNfYWRk KHBhX3ZlYyxwYl92ZWMpOworKyAgICAgcGFfdmVjID0gdmVjX2FicyhwYV92ZWMpOworKyAgICAg cGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOworKyAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMp OworKyAgICAgc21hbGxlc3RfdmVjID0gdmVjX21pbihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBi X3ZlYykpOworKyAgICAgbmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNlKAorKyAgICAgICAgICAg dmVjX2NtcGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMpLAorKyAgICAgICAgICAgYV92ZWMsCisrICAg ICAgICAgICBpZl90aGVuX2Vsc2UoCisrICAgICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21h bGxlc3RfdmVjKSwKKysgICAgICAgICAgICAgYl92ZWMsCisrICAgICAgICAgICAgIGNfdmVjCisr ICAgICAgICAgICAgICkKKysgICAgICAgICAgICk7CisrICAgICBycF92ZWMgPSB2ZWNfYWRkKHJw X3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVzdF92ZWMsMiwzKSkpOworKworKyAgICAgYV92 ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwg VlNYX0xFRlRTSElGVEVEM18zKSwzLDMpOworKyAgICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9y dCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElGVEVEM18zKSwz LDMpOworKyAgICAgY192ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBW U1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEM18zKSwzLDMpOworKyAgICAgcGFfdmVjID0g KHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMpOworKyAgICAgcGJfdmVj ID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7CisrICAgICBw Y192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMpOworKyAgICAgcGFfdmVjID0gdmVjX2Ficyhw YV92ZWMpOworKyAgICAgcGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOworKyAgICAgcGNfdmVjID0g dmVjX2FicyhwY192ZWMpOworKyAgICAgc21hbGxlc3RfdmVjID0gdmVjX21pbihwY192ZWMsIHZl Y19taW4ocGFfdmVjLHBiX3ZlYykpOworKyAgICAgbmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNl KAorKyAgICAgICAgICAgdmVjX2NtcGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMpLAorKyAgICAgICAg ICAgYV92ZWMsCisrICAgICAgICAgICBpZl90aGVuX2Vsc2UoCisrICAgICAgICAgICAgIHZlY19j bXBlcShwYl92ZWMsc21hbGxlc3RfdmVjKSwKKysgICAgICAgICAgICAgYl92ZWMsCisrICAgICAg ICAgICAgIGNfdmVjCisrICAgICAgICAgICAgICkKKysgICAgICAgICAgICk7CisrICAgICBycF92 ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVzdF92ZWMsMywzKSkp OworKworKyAgICAgYV92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBW U1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVENF8zKSw0LDMpOworKyAgICAgYl92ZWMgPSB2 c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05P VF9TSElGVEVENF8zKSw0LDMpOworKyAgICAgY192ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNf cGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVENF8zKSw0LDMpOwor KyAgICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMp OworKyAgICAgcGJfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBj X3ZlYyk7CisrICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMpOworKyAgICAgcGFf dmVjID0gdmVjX2FicyhwYV92ZWMpOworKyAgICAgcGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOwor KyAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOworKyAgICAgc21hbGxlc3RfdmVjID0gdmVj X21pbihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykpOworKyAgICAgbmVhcmVzdF92ZWMg PSAgaWZfdGhlbl9lbHNlKAorKyAgICAgICAgICAgdmVjX2NtcGVxKHBhX3ZlYyxzbWFsbGVzdF92 ZWMpLAorKyAgICAgICAgICAgYV92ZWMsCisrICAgICAgICAgICBpZl90aGVuX2Vsc2UoCisrICAg ICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21hbGxlc3RfdmVjKSwKKysgICAgICAgICAgICAg Yl92ZWMsCisrICAgICAgICAgICAgIGNfdmVjCisrICAgICAgICAgICAgICkKKysgICAgICAgICAg ICk7CisrICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVh cmVzdF92ZWMsNCwzKSkpOworKworKyAgICAgdmVjX3N0KHJwX3ZlYywwLHJwKTsKKysKKysgICAg IHJwICs9IDE1OworKyAgICAgcHAgKz0gMTU7CisrICAgICBpc3RvcCAtPSAxNjsKKysKKysgICAg IC8qIFNpbmNlIDE2ICUgYnBwID0gMTYgJSAzID0gMSwgbGFzdCBlbGVtZW50IG9mIGFycmF5IG11 c3QKKysgICAgICAqIGJlIHByb2NlZWRlZCBtYW51YWxseQorKyAgICAgICovCisrICAgICB2c3hf cGFldGhfcHJvY2VzcyhycCxwcCxhLGIsYyxwYSxwYixwYyxicHApCisrICB9CisrCisrICBpZihp c3RvcCA+IDApCisrICAgICBmb3IgKGkgPSAwOyBpIDwgaXN0b3AgJSAxNjsgaSsrKQorKyAgICAg eworKyAgICAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQor KyAgICAgfQorK30KKysKKysjZW5kaWYgLyogUE5HX1BPV0VSUENfVlNYX09QVCA+IDAgKi8KKysj ZW5kaWYgLyogUE5HX1BPV0VSUENfVlNYX0lNUExFTUVOVEFUSU9OID09IDEgKGludHJpbnNpY3Mp ICovCisrI2VuZGlmIC8qIFJFQUQgKi8KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9u dWxsCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xp YnBuZy9wb3dlcnBjL3Bvd2VycGNfaW5pdC5jCitAQCAtMCwwICsxLDEyNSBAQAorKworKy8qIHBv d2VycGNfaW5pdC5jIC0gUE9XRVJQQyBvcHRpbWlzZWQgZmlsdGVyIGZ1bmN0aW9ucworKyAqCisr ICogQ29weXJpZ2h0IChjKSAyMDE3IEdsZW5uIFJhbmRlcnMtUGVocnNvbgorKyAqIFdyaXR0ZW4g YnkgVmFkaW0gQmFya292LCAyMDE3LgorKyAqIExhc3QgY2hhbmdlZCBpbiBsaWJwbmcgMS42LjI5 IFtNYXJjaCAxNiwgMjAxN10KKysgKgorKyAqIFRoaXMgY29kZSBpcyByZWxlYXNlZCB1bmRlciB0 aGUgbGlicG5nIGxpY2Vuc2UuCisrICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFu ZCB1c2UsIHNlZSB0aGUgZGlzY2xhaW1lcgorKyAqIGFuZCBsaWNlbnNlIGluIHBuZy5oCisrICov CisrLyogQmVsb3csIGFmdGVyIGNoZWNraW5nIF9fbGludXhfXywgdmFyaW91cyBub24tQzkwIFBP U0lYIDEwMDMuMSBmdW5jdGlvbnMgYXJlCisrICogY2FsbGVkLgorKyAqLworKyNkZWZpbmUgX1BP U0lYX1NPVVJDRSAxCisrCisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgIi4uL3BuZ3By aXYuaCIKKysKKysjaWZkZWYgUE5HX1JFQURfU1VQUE9SVEVECisrCisrI2lmIFBOR19QT1dFUlBD X1ZTWF9PUFQgPiAwCisrI2lmZGVmIFBOR19QT1dFUlBDX1ZTWF9DSEVDS19TVVBQT1JURUQgLyog RG8gcnVuLXRpbWUgY2hlY2tzICovCisrLyogV0FSTklORzogaXQgaXMgc3Ryb25nbHkgcmVjb21t ZW5kZWQgdGhhdCB5b3UgZG8gbm90IGJ1aWxkIGxpYnBuZyB3aXRoCisrICogcnVuLXRpbWUgY2hl Y2tzIGZvciBDUFUgZmVhdHVyZXMgaWYgYXQgYWxsIHBvc3NpYmxlLiAgSW4gdGhlIGNhc2Ugb2Yg dGhlIFBvd2VyUEMKKysgKiBWU1ggaW5zdHJ1Y3Rpb25zIHRoZXJlIGlzIG5vIHByb2Nlc3Nvci1z cGVjaWZpYyB3YXkgb2YgZGV0ZWN0aW5nIHRoZQorKyAqIHByZXNlbmNlIG9mIHRoZSByZXF1aXJl ZCBzdXBwb3J0LCB0aGVyZWZvcmUgcnVuLXRpbWUgZGV0ZWN0aW9uIGlzIGV4dHJlbWVseQorKyAq IE9TIHNwZWNpZmljLgorKyAqCisrICogWW91IG1heSBzZXQgdGhlIG1hY3JvIFBOR19QT1dFUlBD X1ZTWF9GSUxFIHRvIHRoZSBmaWxlIG5hbWUgb2YgZmlsZSBjb250YWluaW5nCisrICogYSBmcmFn bWVudCBvZiBDIHNvdXJjZSBjb2RlIHdoaWNoIGRlZmluZXMgdGhlIHBuZ19oYXZlX3ZzeCBmdW5j dGlvbi4gIFRoZXJlCisrICogYXJlIGEgbnVtYmVyIG9mIGltcGxlbWVudGF0aW9ucyBpbiBjb250 cmliL3Bvd2VycGMtdnN4LCBidXQgdGhlIG9ubHkgb25lIHRoYXQKKysgKiBoYXMgcGFydGlhbCBz dXBwb3J0IGlzIGNvbnRyaWIvcG93ZXJwYy12c3gvbGludXguYyAtIGEgZ2VuZXJpYyBMaW51eAor KyAqIGltcGxlbWVudGF0aW9uIHdoaWNoIHJlYWRzIC9wcm9jL2NwdWZpbm8uCisrICovCisrI2lm bmRlZiBQTkdfUE9XRVJQQ19WU1hfRklMRQorKyMgIGlmZGVmIF9fbGludXhfXworKyMgICAgIGRl ZmluZSAgUE5HX1BPV0VSUENfVlNYX0ZJTEUgImNvbnRyaWIvcG93ZXJwYy12c3gvbGludXhfYXV4 LmMiCisrIyAgZW5kaWYKKysjZW5kaWYKKysKKysjaWZkZWYgUE5HX1BPV0VSUENfVlNYX0ZJTEUK KysKKysjaW5jbHVkZSA8c2lnbmFsLmg+IC8qIGZvciBzaWdfYXRvbWljX3QgKi8KKytzdGF0aWMg aW50IHBuZ19oYXZlX3ZzeChwbmdfc3RydWN0cCBwbmdfcHRyKTsKKysjaW5jbHVkZSBQTkdfUE9X RVJQQ19WU1hfRklMRQorKworKyNlbHNlICAvKiBQTkdfUE9XRVJQQ19WU1hfRklMRSAqLworKyMg IGVycm9yICJQTkdfUE9XRVJQQ19WU1hfRklMRSB1bmRlZmluZWQ6IG5vIHN1cHBvcnQgZm9yIHJ1 bi10aW1lIFBPV0VSUEMgVlNYIGNoZWNrcyIKKysjZW5kaWYgLyogUE5HX1BPV0VSUENfVlNYX0ZJ TEUgKi8KKysjZW5kaWYgLyogUE5HX1BPV0VSUENfVlNYX0NIRUNLX1NVUFBPUlRFRCAqLworKwor K3ZvaWQKKytwbmdfaW5pdF9maWx0ZXJfZnVuY3Rpb25zX3ZzeChwbmdfc3RydWN0cCBwcCwgdW5z aWduZWQgaW50IGJwcCkKKyt7CisrICAgLyogVGhlIHN3aXRjaCBzdGF0ZW1lbnQgaXMgY29tcGls ZWQgaW4gZm9yIFBPV0VSUENfVlNYX0FQSSwgdGhlIGNhbGwgdG8KKysgICAgKiBwbmdfaGF2ZV92 c3ggaXMgY29tcGlsZWQgaW4gZm9yIFBPV0VSUENfVlNYX0NIRUNLLiBJZiBib3RoIGFyZSBkZWZp bmVkCisrICAgICogdGhlIGNoZWNrIGlzIG9ubHkgcGVyZm9ybWVkIGlmIHRoZSBBUEkgaGFzIG5v dCBzZXQgdGhlIFBvd2VyUEMgb3B0aW9uIG9uCisrICAgICogb3Igb2ZmIGV4cGxpY2l0bHkuIElu IHRoaXMgY2FzZSB0aGUgY2hlY2sgY29udHJvbHMgd2hhdCBoYXBwZW5zLgorKyAgICAqLworKwor KyNpZmRlZiBQTkdfUE9XRVJQQ19WU1hfQVBJX1NVUFBPUlRFRAorKyAgIHN3aXRjaCAoKHBwLT5v cHRpb25zID4+IFBOR19QT1dFUlBDX1ZTWCkgJiAzKQorKyAgIHsKKysgICAgICBjYXNlIFBOR19P UFRJT05fVU5TRVQ6CisrICAgICAgICAgLyogQWxsb3cgdGhlIHJ1bi10aW1lIGNoZWNrIHRvIGV4 ZWN1dGUgaWYgaXQgaGFzIGJlZW4gZW5hYmxlZCAtCisrICAgICAgICAgICogdGh1cyBib3RoIEFQ SSBhbmQgQ0hFQ0sgY2FuIGJlIHR1cm5lZCBvbi4gIElmIGl0IGlzbid0IHN1cHBvcnRlZAorKyAg ICAgICAgICAqIHRoaXMgY2FzZSB3aWxsIGZhbGwgdGhyb3VnaCB0byB0aGUgJ2RlZmF1bHQnIGJl bG93LCB3aGljaCBqdXN0CisrICAgICAgICAgICogcmV0dXJucy4KKysgICAgICAgICAgKi8KKysj ZW5kaWYgLyogUE5HX1BPV0VSUENfVlNYX0FQSV9TVVBQT1JURUQgKi8KKysjaWZkZWYgUE5HX1BP V0VSUENfVlNYX0NIRUNLX1NVUFBPUlRFRAorKyAgICAgICAgIHsKKysgICAgICAgICAgICBzdGF0 aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IG5vX3ZzeCA9IC0xOyAvKiBub3QgY2hlY2tlZCAqLwor KworKyAgICAgICAgICAgIGlmIChub192c3ggPCAwKQorKyAgICAgICAgICAgICAgIG5vX3ZzeCA9 ICFwbmdfaGF2ZV92c3gocHApOworKworKyAgICAgICAgICAgIGlmIChub192c3gpCisrICAgICAg ICAgICAgICAgcmV0dXJuOworKyAgICAgICAgIH0KKysjaWZkZWYgUE5HX1BPV0VSUENfVlNYX0FQ SV9TVVBQT1JURUQKKysgICAgICAgICBicmVhazsKKysjZW5kaWYKKysjZW5kaWYgLyogUE5HX1BP V0VSUENfVlNYX0NIRUNLX1NVUFBPUlRFRCAqLworKworKyNpZmRlZiBQTkdfUE9XRVJQQ19WU1hf QVBJX1NVUFBPUlRFRAorKyAgICAgIGRlZmF1bHQ6IC8qIE9GRiBvciBJTlZBTElEICovCisrICAg ICAgICAgcmV0dXJuOworKworKyAgICAgIGNhc2UgUE5HX09QVElPTl9PTjoKKysgICAgICAgICAv KiBPcHRpb24gdHVybmVkIG9uICovCisrICAgICAgICAgYnJlYWs7CisrICAgfQorKyNlbmRpZgor KworKyAgIC8qIElNUE9SVEFOVDogYW55IG5ldyBpbnRlcm5hbCBmdW5jdGlvbnMgdXNlZCBoZXJl IG11c3QgYmUgZGVjbGFyZWQgdXNpbmcKKysgICAgKiBQTkdfSU5URVJOQUxfRlVOQ1RJT04gaW4g Li4vcG5ncHJpdi5oLiAgVGhpcyBpcyByZXF1aXJlZCBzbyB0aGF0IHRoZQorKyAgICAqICdwcmVm aXgnIG9wdGlvbiB0byBjb25maWd1cmUgd29ya3M6CisrICAgICoKKysgICAgKiAgICAuL2NvbmZp Z3VyZSAtLXdpdGgtbGlicG5nLXByZWZpeD1mb29iYXJfCisrICAgICoKKysgICAgKiBWZXJpZnkg eW91IGhhdmUgZ290IHRoaXMgcmlnaHQgYnkgcnVubmluZyB0aGUgYWJvdmUgY29tbWFuZCwgZG9p bmcgYSBidWlsZAorKyAgICAqIGFuZCBleGFtaW5pbmcgcG5ncHJlZml4Lmg7IGl0IG11c3QgY29u dGFpbiBhICNkZWZpbmUgZm9yIGV2ZXJ5IGV4dGVybmFsCisrICAgICogZnVuY3Rpb24geW91IGFk ZC4gIChOb3RpY2UgdGhhdCB0aGlzIGhhcHBlbnMgYXV0b21hdGljYWxseSBmb3IgdGhlCisrICAg ICogaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uKQorKyAgICAqLworKyAgIHBwLT5yZWFkX2ZpbHRl cltQTkdfRklMVEVSX1ZBTFVFX1VQLTFdID0gcG5nX3JlYWRfZmlsdGVyX3Jvd191cF92c3g7Cisr CisrICAgaWYgKGJwcCA9PSAzKQorKyAgIHsKKysgICAgICBwcC0+cmVhZF9maWx0ZXJbUE5HX0ZJ TFRFUl9WQUxVRV9TVUItMV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X3N1YjNfdnN4OworKyAgICAg IHBwLT5yZWFkX2ZpbHRlcltQTkdfRklMVEVSX1ZBTFVFX0FWRy0xXSA9IHBuZ19yZWFkX2ZpbHRl cl9yb3dfYXZnM192c3g7CisrICAgICAgcHAtPnJlYWRfZmlsdGVyW1BOR19GSUxURVJfVkFMVUVf UEFFVEgtMV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X3BhZXRoM192c3g7CisrICAgfQorKworKyAg IGVsc2UgaWYgKGJwcCA9PSA0KQorKyAgIHsKKysgICAgICBwcC0+cmVhZF9maWx0ZXJbUE5HX0ZJ TFRFUl9WQUxVRV9TVUItMV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X3N1YjRfdnN4OworKyAgICAg IHBwLT5yZWFkX2ZpbHRlcltQTkdfRklMVEVSX1ZBTFVFX0FWRy0xXSA9IHBuZ19yZWFkX2ZpbHRl cl9yb3dfYXZnNF92c3g7CisrICAgICAgcHAtPnJlYWRfZmlsdGVyW1BOR19GSUxURVJfVkFMVUVf UEFFVEgtMV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X3BhZXRoNF92c3g7CisrICAgfQorK30KKysj ZW5kaWYgLyogUE5HX1BPV0VSUENfVlNYX09QVCA+IDAgKi8KKysjZW5kaWYgLyogUkVBRCAqLwor LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9sc3MvbGlu dXhfc3lzY2FsbF9zdXBwb3J0LmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCitAQCAtMzkxNCw3ICsz OTE0LDcgQEAgc3RydWN0IGtlcm5lbF9zdGF0ZnMgeworICAgICAgIExTU19SRUcoMiwgYnVmKTsK KyAgICAgICBMU1NfQk9EWSh2b2lkKiwgbW1hcDIsICIwIihfX3IyKSk7CisgICAgIH0KKy0jZWxz ZQorKyNlbGlmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pIC8qIHBwYzY0IGRvZXNuJ3QgaGF2ZSBt bWFwMiAqLworICAgICAjZGVmaW5lIF9fTlJfX21tYXAyIF9fTlJfbW1hcDIKKyAgICAgTFNTX0lO TElORSBfc3lzY2FsbDYodm9pZCosIF9tbWFwMiwgICAgICAgICAgICB2b2lkKiwgcywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90LCAgICAgICAgICAgICAgICAgICBsLCBpbnQsICAg ICAgICAgICAgICAgcCwKK0BAIC00MDQ1LDcgKzQwNDUsNyBAQCBzdHJ1Y3Qga2VybmVsX3N0YXRm cyB7CisgICAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgIGRlZmluZWQoX19BUk1fQVJDSF8z X18pIHx8IGRlZmluZWQoX19BUk1fRUFCSV9fKSB8fCAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX01JUFNfU0lNX0FCSTMyKSB8 fCAgICAgICAgICAgICAgICAgICBcCistICAgICAgZGVmaW5lZChfX1BQQ19fKSB8fCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgKGRl ZmluZWQoX19QUENfXykgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykpIHx8ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAoZGVmaW5l ZChfX3MzOTBfXykgJiYgIWRlZmluZWQoX19zMzkweF9fKSkKKyAgICAgLyogT24gdGhlc2UgYXJj aGl0ZWN0dXJlcywgaW1wbGVtZW50IG1tYXAoKSB3aXRoIG1tYXAyKCkuICovCisgICAgIExTU19J TkxJTkUgdm9pZCogTFNTX05BTUUobW1hcCkodm9pZCAqcywgc2l6ZV90IGwsIGludCBwLCBpbnQg ZiwgaW50IGQsCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L25vZGUvbm9kZS5weQorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9ub2RlL25vZGUucHkKK0BAIC0xMCwxMSArMTAsMTIgQEAgaW1wb3J0IHN5cwor IAorIAorIGRlZiBHZXRCaW5hcnlQYXRoKCk6CistICByZXR1cm4gb3NfcGF0aC5qb2luKG9zX3Bh dGguZGlybmFtZShfX2ZpbGVfXyksICp7CistICAgICdEYXJ3aW4nOiAoJ21hYycsICdub2RlLWRh cndpbi14NjQnLCAnYmluJywgJ25vZGUnKSwKKy0gICAgJ0xpbnV4JzogKCdsaW51eCcsICdub2Rl LWxpbnV4LXg2NCcsICdiaW4nLCAnbm9kZScpLAorLSAgICAnV2luZG93cyc6ICgnd2luJywgJ25v ZGUuZXhlJyksCistICB9W3BsYXRmb3JtLnN5c3RlbSgpXSkKKysgIHJldHVybiAiL3Vzci9iaW4v bm9kZSIKKysgICNyZXR1cm4gb3NfcGF0aC5qb2luKG9zX3BhdGguZGlybmFtZShfX2ZpbGVfXyks ICp7CisrICAjICAnRGFyd2luJzogKCdtYWMnLCAnbm9kZS1kYXJ3aW4teDY0JywgJ2JpbicsICdu b2RlJyksCisrICAjICAnTGludXgnOiAoJ2xpbnV4JywgJ25vZGUtbGludXgteDY0JywgJ2Jpbics ICdub2RlJyksCisrICAjICAnV2luZG93cyc6ICgnd2luJywgJ25vZGUuZXhlJyksCisrICAjfVtw bGF0Zm9ybS5zeXN0ZW0oKV0pCisgCisgCisgZGVmIFJ1bk5vZGUoY21kX3BhcnRzLCBzdGRvdXQ9 Tm9uZSk6CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L3BkZml1bS90aGlyZF9wYXJ0eS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3Bh Z2VfYWxsb2NhdG9yX2NvbnN0YW50cy5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9wYXJ0eS9iYXNlL2FsbG9jYXRvci9wYXJ0 aXRpb25fYWxsb2NhdG9yL3BhZ2VfYWxsb2NhdG9yX2NvbnN0YW50cy5oCitAQCAtMTEsNyArMTEs NyBAQAorIAorIG5hbWVzcGFjZSBwZGZpdW0geworIG5hbWVzcGFjZSBiYXNlIHsKKy0jaWYgZGVm aW5lZChPU19XSU4pCisrI2lmIGRlZmluZWQoT1NfV0lOKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX1BQ QzY0KQorIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtQYWdlQWxsb2NhdGlvbkdyYW51bGFyaXR5 U2hpZnQgPSAxNjsgIC8vIDY0S0IKKyAjZWxpZiBkZWZpbmVkKF9NSVBTX0FSQ0hfTE9PTkdTT04p Cisgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlTaGlm dCA9IDE0OyAgLy8gMTZLQgorQEAgLTI3LDYgKzI3LDEwIEBAIHN0YXRpYyBjb25zdGV4cHIgc2l6 ZV90IGtQYWdlQWxsb2NhdGlvbkdyYW51bGFyaXR5QmFzZU1hc2sgPQorIAorICNpZiBkZWZpbmVk KF9NSVBTX0FSQ0hfTE9PTkdTT04pCisgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N5c3RlbVBh Z2VTaXplID0gMTYzODQ7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKKysvLyBUT0RP OiBtb2Rlcm4gcHBjNjQgY2FuIGRvIDRrIGFuZCA2NGsgcGFnZSBzaXplcworKy8vIGZvciBub3cs IDY0ayBpcyBhc3N1bWVkCisrc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N5c3RlbVBhZ2VTaXpl ID0gNjU1MzY7CisgI2Vsc2UKKyBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3lzdGVtUGFnZVNp emUgPSA0MDk2OworICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9wZGZpdW0vdGhpcmRfcGFydHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9u X2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NfY29uc3RhbnRzLmgKKysrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5L2Jhc2Uv YWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jX2NvbnN0YW50cy5o CitAQCAtMzMsNiArMzMsOCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCdWNrZXRTaGlmdCA9IChr QWxsb2NhdGlvbkdyYW51bGFyaXR5ID09IDgpID8gMyA6IDI7CisgLy8gdXAgYWdhaW5zdCB0aGUg ZW5kIG9mIGEgc3lzdGVtIHBhZ2UuCisgI2lmIGRlZmluZWQoX01JUFNfQVJDSF9MT09OR1NPTikK KyBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAxNjsgIC8vIDY0S0IK KysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQorK3N0YXRpYyBjb25zdCBzaXplX3Qga1Bh cnRpdGlvblBhZ2VTaGlmdCA9IDE4OyAgLy8gMjU2S0IKKyAjZWxzZQorIHN0YXRpYyBjb25zdCBz aXplX3Qga1BhcnRpdGlvblBhZ2VTaGlmdCA9IDE0OyAgLy8gMTZLQgorICNlbmRpZgorLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9zcWxpdGUvYW1hbGdh bWF0aW9uL3NxbGl0ZTMuYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9zcWxpdGUvYW1hbGdhbWF0aW9uL3NxbGl0ZTMuYworQEAgLTEzOTM3LDcgKzEz OTM3LDggQEAgdHlwZWRlZiBJTlQxNl9UWVBFIExvZ0VzdDsKKyAjIGlmIGRlZmluZWQoaTM4Nikg ICAgIHx8IGRlZmluZWQoX19pMzg2X18pICAgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCAgICBcCisg ICAgICBkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQo X01fWDY0KSAgfHwgICAgXAorICAgICAgZGVmaW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfTV9B Uk0pICAgICB8fCBkZWZpbmVkKF9feDg2KSAgIHx8ICAgIFwKKy0gICAgIGRlZmluZWQoX19hcm1f XykgIHx8IGRlZmluZWQoX01fQVJNNjQpCisrICAgICBkZWZpbmVkKF9fYXJtX18pICB8fCBkZWZp bmVkKF9NX0FSTTY0KSAgIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgXAorKyAgICAgKF9f QllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fKQorICMgICBkZWZpbmUgU1FM SVRFX0JZVEVPUkRFUiAgICAxMjM0CisgIyBlbGlmIGRlZmluZWQoc3BhcmMpICAgIHx8IGRlZmlu ZWQoX19wcGNfXykKKyAjICAgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgNDMyMQorLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL3Ny Yy9zcWxpdGVJbnQuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9zcWxpdGUvc3JjL3NyYy9zcWxpdGVJbnQuaAorQEAgLTgzMyw3ICs4MzMsOCBAQCB0 eXBlZGVmIElOVDE2X1RZUEUgTG9nRXN0OworICMgaWYgZGVmaW5lZChpMzg2KSAgICAgfHwgZGVm aW5lZChfX2kzODZfXykgICB8fCBkZWZpbmVkKF9NX0lYODYpIHx8ICAgIFwKKyAgICAgIGRlZmlu ZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQpICB8 fCAgICBcCisgICAgICBkZWZpbmVkKF9NX0FNRDY0KSB8fCBkZWZpbmVkKF9NX0FSTSkgICAgIHx8 IGRlZmluZWQoX194ODYpICAgfHwgICAgXAorLSAgICAgZGVmaW5lZChfX2FybV9fKSAgfHwgZGVm aW5lZChfTV9BUk02NCkKKysgICAgIGRlZmluZWQoX19hcm1fXykgIHx8IGRlZmluZWQoX01fQVJN NjQpICAgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiBcCisrICAgICAoX19CWVRFX09SREVS X18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18pCisgIyAgIGRlZmluZSBTUUxJVEVfQllURU9S REVSICAgIDEyMzQKKyAjIGVsaWYgZGVmaW5lZChzcGFyYykgICAgfHwgZGVmaW5lZChfX3BwY19f KQorICMgICBkZWZpbmUgU1FMSVRFX0JZVEVPUkRFUiAgICA0MzIxCistLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf Y2FwdHVyZS9kaWZmZXJfYmxvY2suY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2RpZmZlcl9i bG9jay5jYworQEAgLTMwLDExICszMCw3IEBAIGJvb2wgVmVjdG9yRGlmZmVyZW5jZShjb25zdCB1 aW50OF90KiBpbWFnZTEsIGNvbnN0IHVpbnQ4X3QqIGltYWdlMikgeworICAgc3RhdGljIGJvb2wg KCpkaWZmX3Byb2MpKGNvbnN0IHVpbnQ4X3QqLCBjb25zdCB1aW50OF90KikgPSBudWxscHRyOwor IAorICAgaWYgKCFkaWZmX3Byb2MpIHsKKy0jaWYgZGVmaW5lZChXRUJSVENfQVJDSF9BUk1fRkFN SUxZKSB8fCBkZWZpbmVkKFdFQlJUQ19BUkNIX01JUFNfRkFNSUxZKQorLSAgICAvLyBGb3IgQVJN IGFuZCBNSVBTIHByb2Nlc3NvcnMsIGFsd2F5cyB1c2UgQyB2ZXJzaW9uLgorLSAgICAvLyBUT0RP KGhjbGFtKTogSW1wbGVtZW50IGEgTkVPTiB2ZXJzaW9uLgorLSAgICBkaWZmX3Byb2MgPSAmVmVj dG9yRGlmZmVyZW5jZV9DOworLSNlbHNlCisrI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfWDg2X0ZB TUlMWSkKKyAgICAgYm9vbCBoYXZlX3NzZTIgPSBXZWJSdGNfR2V0Q1BVSW5mbyhrU1NFMikgIT0g MDsKKyAgICAgLy8gRm9yIHg4NiBwcm9jZXNzb3JzLCBjaGVjayBpZiBTU0UyIGlzIHN1cHBvcnRl ZC4KKyAgICAgaWYgKGhhdmVfc3NlMiAmJiBrQmxvY2tTaXplID09IDMyKSB7CitAQCAtNDQsNiAr NDAsMTAgQEAgYm9vbCBWZWN0b3JEaWZmZXJlbmNlKGNvbnN0IHVpbnQ4X3QqIGltYWdlMSwgY29u c3QgdWludDhfdCogaW1hZ2UyKSB7CisgICAgIH0gZWxzZSB7CisgICAgICAgZGlmZl9wcm9jID0g JlZlY3RvckRpZmZlcmVuY2VfQzsKKyAgICAgfQorKyNlbHNlCisrICAgIC8vIEZvciBvdGhlciBw cm9jZXNzb3JzLCBhbHdheXMgdXNlIEMgdmVyc2lvbi4KKysgICAgLy8gVE9ETyhoY2xhbSk6IElt cGxlbWVudCBhIE5FT04gdmVyc2lvbi4KKysgICAgZGlmZl9wcm9jID0gJlZlY3RvckRpZmZlcmVu Y2VfQzsKKyAjZW5kaWYKKyAgIH0KKyAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9hcmNoLmgKKysrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNl L3N5c3RlbS9hcmNoLmgKK0BAIC00Nyw2ICs0NywxOCBAQAorICNlbGlmIGRlZmluZWQoX19wbmFj bF9fKQorICNkZWZpbmUgV0VCUlRDX0FSQ0hfMzJfQklUUworICNkZWZpbmUgV0VCUlRDX0FSQ0hf TElUVExFX0VORElBTgorKyNlbGlmIGRlZmluZWQoX19QUENfXykKKysjZGVmaW5lIFdFQlJUQ19B UkNIX1BQQ19GQU1JTFkKKysjaWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5E SUFOX18KKysjZGVmaW5lIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KKysjZWxzZQorKyNkZWZp bmUgV0VCUlRDX0FSQ0hfQklHX0VORElBTgorKyNlbmRpZgorKyNpZiBkZWZpbmVkKF9fTFA2NF9f KQorKyNkZWZpbmUgV0VCUlRDX0FSQ0hfNjRfQklUUworKyNlbHNlCisrI2RlZmluZSBXRUJSVENf QVJDSF8zMl9CSVRTCisrI2VuZGlmCisgI2Vsc2UKKyAjZXJyb3IgUGxlYXNlIGFkZCBzdXBwb3J0 IGZvciB5b3VyIGFyY2hpdGVjdHVyZSBpbiB0eXBlZGVmcy5oCisgI2VuZGlmCistLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L0JVSUxELmduCisrKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L0JVSUxELmduCitAQCAtNTQ0LDYgKzU0NCwxMiBAQCBj b25maWcoInRvb2xjaGFpbiIpIHsKKyAgICAgfQorICAgICBpZiAoaG9zdF9ieXRlb3JkZXIgPT0g ImxpdHRsZSIpIHsKKyAgICAgICBkZWZpbmVzICs9IFsgIlY4X1RBUkdFVF9BUkNIX1BQQ19MRSIg XQorKyAgICAgICAgY2ZsYWdzICs9IFsKKysgICAgICAgICMgRW5hYmxlIHVzYWdlIG9mIEFsdGlW ZWMsIFZTWCwgYW5kIG90aGVyIFBPV0VSOCBhbmQgaGlnaGVyIGZlYXR1cmVzCisrICAgICAgICAi LW1jcHU9cG93ZXI4IiwKKysgICAgICAgICItbWFsdGl2ZWMiLAorKyAgICAgICAgIi1tdnN4IiwK KysgICAgICBdCisgICAgIH0gZWxzZSBpZiAoaG9zdF9ieXRlb3JkZXIgPT0gImJpZyIpIHsKKyAg ICAgICBkZWZpbmVzICs9IFsgIlY4X1RBUkdFVF9BUkNIX1BQQ19CRSIgXQorICAgICAgIGlmIChj dXJyZW50X29zID09ICJhaXgiKSB7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3Y4L3Rlc3QvQlVJTEQuZ24KKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdjgvdGVzdC9CVUlMRC5nbgorQEAgLTMxLDcgKzMxLDcgQEAgZ3JvdXAoImduX2FsbCIpIHsK KyAgICAgZGVwcyArPSBbCisgICAgICAgImNjdGVzdDpjY3Rlc3QiLAorICAgICAgICJjY3Rlc3Q6 Z2VuZXJhdGUtYnl0ZWNvZGUtZXhwZWN0YXRpb25zIiwKKy0gICAgICAidW5pdHRlc3RzOnVuaXR0 ZXN0cyIsCisrICAgICAgIyJ1bml0dGVzdHM6dW5pdHRlc3RzIiwKKyAgICAgXQorICAgfQorIH0K K0BAIC04MCw5ICs4MCw5IEBAIGdyb3VwKCJ2OF9ib3RfZGVmYXVsdCIpIHsKKyAgICAgIm1qc3Vu aXQ6djhfbWpzdW5pdCIsCisgICAgICJta2dyb2tkdW1wOm1rZ3Jva2R1bXAiLAorICAgICAicHJl cGFyc2VyOnY4X3ByZXBhcnNlciIsCistICAgICJ1bml0dGVzdHM6dW5pdHRlc3RzIiwKKysgICAg IyJ1bml0dGVzdHM6dW5pdHRlc3RzIiwKKyAgICAgIndhc20tanM6djhfd2FzbV9qcyIsCistICAg ICJ3YXNtLXNwZWMtdGVzdHM6djhfd2FzbV9zcGVjX3Rlc3RzIiwKKysgICAgIyJ3YXNtLXNwZWMt dGVzdHM6djhfd2FzbV9zcGVjX3Rlc3RzIiwKKyAgICAgIndlYmtpdDp2OF93ZWJraXQiLAorICAg XQorIH0KK0BAIC0xMDAsOSArMTAwLDkgQEAgZ3JvdXAoInY4X2RlZmF1bHQiKSB7CisgICAgICJt anN1bml0OnY4X21qc3VuaXQiLAorICAgICAibWtncm9rZHVtcDpta2dyb2tkdW1wIiwKKyAgICAg InByZXBhcnNlcjp2OF9wcmVwYXJzZXIiLAorLSAgICAidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCist ICAgICJ3YXNtLWpzOnY4X3dhc21fanMiLAorLSAgICAid2FzbS1zcGVjLXRlc3RzOnY4X3dhc21f c3BlY190ZXN0cyIsCisrICAgICMidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCisrICAgICMid2FzbS1q czp2OF93YXNtX2pzIiwKKysgICAgIyJ3YXNtLXNwZWMtdGVzdHM6djhfd2FzbV9zcGVjX3Rlc3Rz IiwKKyAgIF0KKyB9CisgCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTEtY2hy b21pdW0tcHBjNjQtbXVzbC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5MS1jaHJvbWl1 bS1wcGM2NC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5kZjAxNGQ4YjU5OAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5 MS1jaHJvbWl1bS1wcGM2NC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMTQxIEBACitUaGlzIGluY2x1 ZGVzIGFkZGl0aW9uYWwgYnVpbGQgZml4ZXMgZm9yIHRoZSBtdXNsIGxpYmMuCisKKy0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL3NlY2Nv bXBfbWFjcm9zLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJv eC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKK0BAIC0xMSwxMiArMTEsMTQgQEAKKyAv LyBBbGwgeDg2XzY0IGJ1aWxkcyB1c2UgYSBuZXcgZW5vdWdoIGJpb25pYyB0byBoYXZlIHN5cy91 c2VyLmguCisgI2lmICFkZWZpbmVkKF9fQklPTklDX18pIHx8IGRlZmluZWQoX194ODZfNjRfXykK KyAjaWYgIWRlZmluZWQoX19uYXRpdmVfY2xpZW50X25vbnNmaV9fKQorKyNpZiAhZGVmaW5lZChf X3Bvd2VycGM2NF9fKSB8fCBkZWZpbmVkKF9fR0xJQkNfXykKKyAjaW5jbHVkZSA8c3lzL3VzZXIu aD4KKyAjZW5kaWYKKysjZW5kaWYKKyAjaWYgZGVmaW5lZChfX21pcHNfXykKKyAvLyBzeXMvdXNl ci5oIGluIGVnbGliYyBtaXNzZXMgc2l6ZV90IGRlZmluaXRpb24KKyAjaW5jbHVkZSA8c3RkZGVm Lmg+CistI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyNlbGlmIGRlZmluZWQoX19wb3dl cnBjNjRfXykgJiYgZGVmaW5lZChfX0dMSUJDX18pCisgLy8gTWFudWFsbHkgZGVmaW5lIGdyZWdf dCBvbiBwcGM2NAorIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGdyZWdfdDsKKyAjZW5kaWYK K0BAIC0zNjEsMTEgKzM2MywxMSBAQCB0eXBlZGVmIHN0cnVjdCBwdF9yZWdzIHJlZ3Nfc3RydWN0 OworICNkZWZpbmUgU0VDQ09NUF9BUkNIIEFVRElUX0FSQ0hfUFBDNjQKKyAjZW5kaWYKKyAKKy0j ZGVmaW5lIFNFQ0NPTVBfUkVHKF9jdHgsIF9yZWcpICgoX2N0eCktPnVjX21jb250ZXh0LnJlZ3Mt PmdwcltfcmVnXSkKKysjZGVmaW5lIFNFQ0NPTVBfUkVHKF9jdHgsIF9yZWcpICgoKHN0cnVjdCBw dF9yZWdzICopKF9jdHgpLT51Y19tY29udGV4dC5yZWdzKS0+Z3ByW19yZWddKQorIAorICNkZWZp bmUgU0VDQ09NUF9SRVNVTFQoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMykKKyAjZGVmaW5lIFNF Q0NPTVBfU1lTQ0FMTChfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCAwKQorLSNkZWZpbmUgU0VDQ09N UF9JUChfY3R4KSAoX2N0eCktPnVjX21jb250ZXh0LnJlZ3MtPm5pcAorKyNkZWZpbmUgU0VDQ09N UF9JUChfY3R4KSAoKHN0cnVjdCBwdF9yZWdzICopKF9jdHgpLT51Y19tY29udGV4dC5yZWdzKS0+ bmlwCisgI2RlZmluZSBTRUNDT01QX1BBUk0xKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMpCisg I2RlZmluZSBTRUNDT01QX1BBUk0yKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDQpCisgI2RlZmlu ZSBTRUNDT01QX1BBUk0zKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDUpCistLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lzY2Fs bC5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4 L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2MKK0BAIC00OTcsOSArNDk3LDkgQEAgdm9pZCBTeXNjYWxs OjpQdXRWYWx1ZUluVWNvbnRleHQoaW50cHRyX3QgcmV0X3ZhbCwgdWNvbnRleHRfdCogY3R4KSB7 CisgICAvLyBTYW1lIGFzIE1JUFMsIG5lZWQgdG8gaW52ZXJ0IHJldCBhbmQgc2V0IGVycm9yIHJl Z2lzdGVyIChjcjAuU08pCisgICBpZiAocmV0X3ZhbCA8PSAtMSAmJiByZXRfdmFsID49IC00MDk1 KSB7CisgICAgIHJldF92YWwgPSAtcmV0X3ZhbDsKKy0gICAgY3R4LT51Y19tY29udGV4dC5yZWdz LT5jY3IgfD0gKDEgPDwgMjgpOworKyAgICAoKHN0cnVjdCBwdF9yZWdzICopY3R4LT51Y19tY29u dGV4dC5yZWdzKS0+Y2NyIHw9ICgxIDw8IDI4KTsKKyAgIH0gZWxzZSB7CistICAgIGN0eC0+dWNf bWNvbnRleHQucmVncy0+Y2NyICY9IH4oMSA8PCAyOCk7CisrICAgICgoc3RydWN0IHB0X3JlZ3Mg KiljdHgtPnVjX21jb250ZXh0LnJlZ3MpLT5jY3IgJj0gfigxIDw8IDI4KTsKKyAgIH0KKyAjZW5k aWYKKyAgIFNFQ0NPTVBfUkVTVUxUKGN0eCkgPSBzdGF0aWNfY2FzdDxncmVnX3Q+KHJldF92YWwp OworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9hYnNl aWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suY2MKKysrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs L2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmNjCitAQCAtMjAsNyArMjAsNyBAQAor ICNpbmNsdWRlIDxpbnRyaW4uaD4KKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5lZChfX3Bvd2VycGNf XykgfHwgZGVmaW5lZChfX3BwY19fKQorKyNpZiAoZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVm aW5lZChfX3BwY19fKSkgJiYgZGVmaW5lZChfX0dMSUJDX18pCisgI2luY2x1ZGUgPHN5cy9wbGF0 Zm9ybS9wcGMuaD4KKyAjZW5kaWYKKyAKK0BAIC01Myw3ICs1Myw3IEBAIGRvdWJsZSBVbnNjYWxl ZEN5Y2xlQ2xvY2s6OkZyZXF1ZW5jeSgpIHsKKyAgIHJldHVybiBiYXNlX2ludGVybmFsOjpOb21p bmFsQ1BVRnJlcXVlbmN5KCk7CisgfQorIAorLSNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pIHx8 IGRlZmluZWQoX19wcGNfXykKKysjZWxpZiAoZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5l ZChfX3BwY19fKSkgJiYgZGVmaW5lZChfX0dMSUJDX18pCisgCisgaW50NjRfdCBVbnNjYWxlZEN5 Y2xlQ2xvY2s6Ok5vdygpIHsKKyAgIHJldHVybiBfX3BwY19nZXRfdGltZWJhc2UoKTsKKy0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9h YnNsL2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmgKKysrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50 ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmgKK0BAIC00Niw3ICs0Niw3IEBACisgCisgLy8gVGhl IGZvbGxvd2luZyBwbGF0Zm9ybXMgaGF2ZSBhbiBpbXBsZW1lbnRhdGlvbiBvZiBhIGhhcmR3YXJl IGNvdW50ZXIuCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykg fHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXAorLSAgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwg ZGVmaW5lZChfX3BwY19fKSB8fCBcCisrICAoKGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmlu ZWQoX19wcGNfXykpICYmIGRlZmluZWQoX19HTElCQ19fKSkgfHwgXAorICAgZGVmaW5lZChfTV9J WDg2KSB8fCBkZWZpbmVkKF9NX1g2NCkKKyAjZGVmaW5lIEFCU0xfSEFWRV9VTlNDQUxFRF9DWUNM RUNMT0NLX0lNUExFTUVOVEFUSU9OIDEKKyAjZWxzZQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYworKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYworQEAgLTI3Myw2ICsy NzMsOSBAQCB2b2lkIFRocmVhZEluZm86OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91 dCkgY29uc3QgeworIAorICNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAKKysjaW5jbHVk ZSA8YXNtL2VsZi5oPgorKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisrCisgdWludHB0cl90IFRo cmVhZEluZm86OkdldEluc3RydWN0aW9uUG9pbnRlcigpIGNvbnN0IHsKKyAgICAgcmV0dXJuIG1j b250ZXh0LmdwX3JlZ3NbUFRfTklQXTsKKyB9CitAQCAtMjkwLDkgKzI5Myw5IEBAIHZvaWQgVGhy ZWFkSW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSogb3V0KSBjb25zdCB7CisgICAg IG91dC0+Y3RyID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9DVFJdOworICAgICAKKyAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykKKy0g ICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSBtY29udGV4dC5mcF9yZWdzW2ldOwor KyAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9ICgodWludDY0X3QgKikmbWNvbnRl eHQuZnBfcmVncylbaV07CisgCistICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHNjciA9IG1jb250ZXh0 LmZwX3JlZ3NbTkZQUkVHLTFdOworKyAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSAoKHVpbnQ2 NF90ICopJm1jb250ZXh0LmZwX3JlZ3MpW0VMRl9ORlBSRUctMV07CisgCisgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgTURfVkVDVE9SU0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspCisgICAgICAg ICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0gPSBcCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYworKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKK0BA IC0yNTcsNiArMjU3LDkgQEAgdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3 Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YykgeworIAorICNlbGlmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKKyAKKysjaW5jbHVkZSA8YXNtL2VsZi5oPgorKyNpbmNsdWRlIDxh c20vcHRyYWNlLmg+CisrCisgdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRTdGFja1BvaW50 ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKKyAgICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5n cF9yZWdzW01EX0NPTlRFWFRfUFBDNjRfUkVHX1NQXTsKKyB9CitAQCAtMjgwLDkgKzI4Myw5IEBA IHZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCwg Y29uc3QgdWNvbnRleHRfdCogdWMsCisgICAgIG91dC0+Y3RyID0gdWMtPnVjX21jb250ZXh0Lmdw X3JlZ3NbUFRfQ1RSXTsKKyAgICAgCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfRkxPQVRJ TkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCistICAgICAgICBvdXQtPmZsb2F0X3NhdmUu ZnByZWdzW2ldID0gdWMtPnVjX21jb250ZXh0LmZwX3JlZ3NbaV07CisrICAgICAgICBvdXQtPmZs b2F0X3NhdmUuZnByZWdzW2ldID0gKCh1aW50NjRfdCAqKSZ1Yy0+dWNfbWNvbnRleHQuZnBfcmVn cylbaV07CisgCistICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHNjciA9IHVjLT51Y19tY29udGV4dC5m cF9yZWdzW05GUFJFRy0xXTsKKysgICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gKCh1aW50NjRf dCAqKSZ1Yy0+dWNfbWNvbnRleHQuZnBfcmVncylbRUxGX05GUFJFRy0xXTsKKyAKKyAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09VTlQ7IGkrKykKKyAg ICAgICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9CistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYworKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKK0BAIC0xMDUsNiArMTA1LDEx IEBACisgI2RlZmluZSBQUl9TRVRfUFRSQUNFUiAweDU5NjE2ZDYxCisgI2VuZGlmCisgCisrLyog bXVzbCBoYWNrLCBjYW4ndCBpbmNsdWRlIGFzbS9wdHJhY2UuaCBhcyB0aGF0IGNhdXNlcyBjb25m bGljdHMgKi8KKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiAhZGVmaW5lZChQVF9OSVAp CisrI2RlZmluZSBQVF9OSVAgMzIKKysjZW5kaWYKKysKKyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFr cGFkIHsKKyAKKyBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8w MDkyLWNocm9taXVtLXBwYzY0LWJlLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkyLWNo cm9taXVtLXBwYzY0LWJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi5jZTgzMTFjOWJhMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMv MDA5Mi1jaHJvbWl1bS1wcGM2NC1iZS5wYXRjaApAQCAtMCwwICsxLDI5NzAgQEAKK1RoaXMgYWRk cyBiaWcgZW5kaWFuIHN1cHBvcnQvZml4ZXMgaW4gYWRkaXRpb24gdG8gdGhlIGJhc2UgcHBjNjRs ZSBwYXRjaC4KKworUGluZyBxNjYgaWYgeW91J3JlIHVwZGF0aW5nIHF0NSBhbmQgdGhlIHBhdGNo IGRvZXMgbm90IGFwcGx5IGFueW1vcmUuCisKK1NvdXJjZTogaHR0cHM6Ly93aWtpLnJhcHRvcmNz LmNvbS93L2luZGV4LnBocD90aXRsZT1Qb3J0aW5nL0Nocm9taXVtL0JFCisKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9j YXRvci9wYXJ0aXRpb25fYWxsb2MuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2Mu Y2MKK0BAIC00NDAsNyArNDQwLDcgQEAgc3RhdGljIHNpemVfdCBQYXJ0aXRpb25QdXJnZVBhZ2Uo aW50ZXJuYWw6OlBhcnRpdGlvblBhZ2UqIHBhZ2UsIGJvb2wgZGlzY2FyZCkgeworICNlbmRpZgor ICAgICAgIH0KKyAgICAgICAvLyBUZXJtaW5hdGUgdGhlIGZyZWVsaXN0IGNoYWluLgorLSAgICAg ICplbnRyeV9wdHIgPSBudWxscHRyOworKyAgICAgICplbnRyeV9wdHIgPSBpbnRlcm5hbDo6UGFy dGl0aW9uRnJlZWxpc3RFbnRyeTo6VHJhbnNmb3JtKG51bGxwdHIpOworICAgICAgIC8vIFRoZSBm cmVlbGlzdCBoZWFkIGlzIHN0b3JlZCB1bm1hc2tlZC4KKyAgICAgICBwYWdlLT5mcmVlbGlzdF9o ZWFkID0KKyAgICAgICAgICAgaW50ZXJuYWw6OlBhcnRpdGlvbkZyZWVsaXN0RW50cnk6OlRyYW5z Zm9ybShwYWdlLT5mcmVlbGlzdF9oZWFkKTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vYmFzZS9pMThuL2ljdV91dGlsLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL2Jhc2UvaTE4bi9pY3VfdXRpbC5jYworQEAgLTc1LDcgKzc1LDExIEBAIHdj aGFyX3QgZ19kZWJ1Z19pY3VfcGZfZmlsZW5hbWVbX01BWF9QQVRIXTsKKyAvLyBObyBuZWVkIHRv IGNoYW5nZSB0aGUgZmlsZW5hbWUgaW4gbXVsdGlwbGUgcGxhY2VzIChneXAgZmlsZXMsIHdpbmRv d3MKKyAvLyBidWlsZCBwa2cgY29uZmlndXJhdGlvbnMsIGV0YykuICdsJyBzdGFuZHMgZm9yIExp dHRsZSBFbmRpYW4uCisgLy8gVGhpcyB2YXJpYWJsZSBpcyBleHBvcnRlZCB0aHJvdWdoIHRoZSBo ZWFkZXIgZmlsZS4KKysjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQorIGNvbnN0 IGNoYXIga0ljdURhdGFGaWxlTmFtZVtdID0gImljdWR0bC5kYXQiOworKyNlbHNlCisrY29uc3Qg Y2hhciBrSWN1RGF0YUZpbGVOYW1lW10gPSAiaWN1ZHRiLmRhdCI7CisrI2VuZGlmCisgI2lmIGRl ZmluZWQoT1NfQU5EUk9JRCkKKyBjb25zdCBjaGFyIGtBbmRyb2lkQXNzZXRzSWN1RGF0YUZpbGVO YW1lW10gPSAiYXNzZXRzL2ljdWR0bC5kYXQiOworICNlbmRpZgorLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL21lbW9yeS9zaGFyZWRfbWVtb3J5X21hcHBpbmdfdW5p dHRlc3QuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9tZW1v cnkvc2hhcmVkX21lbW9yeV9tYXBwaW5nX3VuaXR0ZXN0LmNjCitAQCAtMTIsNiArMTIsNyBAQAor ICNpbmNsdWRlICJiYXNlL2NvbnRhaW5lcnMvc3Bhbi5oIgorICNpbmNsdWRlICJiYXNlL21lbW9y eS9yZWFkX29ubHlfc2hhcmVkX21lbW9yeV9yZWdpb24uaCIKKyAjaW5jbHVkZSAidGVzdGluZy9n dGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgiCisrI2luY2x1ZGUgImJhc2Uvc3lzX2J5dGVvcmRl ci5oIgorIAorIG5hbWVzcGFjZSBiYXNlIHsKKyAKK0BAIC02OSw4ICs3MCw4IEBAIFRFU1RfRihT aGFyZWRNZW1vcnlNYXBwaW5nVGVzdCwgU3BhbldpdGhBdXRvRGVkdWNlZEVsZW1lbnRDb3VudCkg eworIAorICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3cml0ZV9zcGFuLnNpemUoKTsgKytpKQor ICAgICB3cml0ZV9zcGFuW2ldID0gaSArIDE7CistICBFWFBFQ1RfRVEoMHgwNDAzMDIwMXUsIHJl YWRfc3BhblswXSk7CistICBFWFBFQ1RfRVEoMHgwODA3MDYwNXUsIHJlYWRfc3BhblsxXSk7Cisr ICBFWFBFQ1RfRVEoSG9zdFRvTmV0MzIoMHgwMTAyMDMwNHUpLCByZWFkX3NwYW5bMF0pOworKyAg RVhQRUNUX0VRKEhvc3RUb05ldDMyKDB4MDUwNjA3MDh1KSwgcmVhZF9zcGFuWzFdKTsKKyB9Cisg CisgVEVTVF9GKFNoYXJlZE1lbW9yeU1hcHBpbmdUZXN0LCBTcGFuV2l0aEV4cGxpY2l0RWxlbWVu dENvdW50KSB7CitAQCAtOTUsMTMgKzk2LDEzIEBAIFRFU1RfRihTaGFyZWRNZW1vcnlNYXBwaW5n VGVzdCwgU3BhbldpdGhFeHBsaWNpdEVsZW1lbnRDb3VudCkgeworIAorICAgZm9yIChzaXplX3Qg aSA9IDA7IGkgPCB3cml0ZV9zcGFuLnNpemUoKTsgKytpKQorICAgICB3cml0ZV9zcGFuW2ldID0g aSArIDE7CistICBFWFBFQ1RfRVEoMHgwNDAzMDIwMXUsIHJlYWRfc3BhblswXSk7CistICBFWFBF Q1RfRVEoMHgwODA3MDYwNXUsIHJlYWRfc3BhblsxXSk7CistICBFWFBFQ1RfRVEoMHgwNDAzMDIw MXUsIHJlYWRfc3Bhbl8yWzBdKTsKKysgIEVYUEVDVF9FUShIb3N0VG9OZXQzMigweDAxMDIwMzA0 dSksIHJlYWRfc3BhblswXSk7CisrICBFWFBFQ1RfRVEoSG9zdFRvTmV0MzIoMHgwNTA2MDcwOHUp LCByZWFkX3NwYW5bMV0pOworKyAgRVhQRUNUX0VRKEhvc3RUb05ldDMyKDB4MDEwMjAzMDR1KSwg cmVhZF9zcGFuXzJbMF0pOworIAorICAgc3RkOjpmaWxsKHdyaXRlX3NwYW5fMi5iZWdpbigpLCB3 cml0ZV9zcGFuXzIuZW5kKCksIDApOworICAgRVhQRUNUX0VRKDB1LCByZWFkX3NwYW5bMF0pOwor LSAgRVhQRUNUX0VRKDB4MDgwNzA2MDV1LCByZWFkX3NwYW5bMV0pOworKyAgRVhQRUNUX0VRKEhv c3RUb05ldDMyKDB4MDUwNjA3MDh1KSwgcmVhZF9zcGFuWzFdKTsKKyAgIEVYUEVDVF9FUSgwdSwg cmVhZF9zcGFuXzJbMF0pOworIH0KKyAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vYmFzZS9tZXRyaWNzL2J1Y2tldF9yYW5nZXNfdW5pdHRlc3QuY2MKKysrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9tZXRyaWNzL2J1Y2tldF9yYW5nZXNfdW5p dHRlc3QuY2MKK0BAIC03LDYgKzcsNyBAQAorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAKKyAjaW5j bHVkZSAidGVzdGluZy9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgiCisrI2luY2x1ZGUgImJh c2Uvc3lzX2J5dGVvcmRlci5oIgorIAorIG5hbWVzcGFjZSBiYXNlIHsKKyBuYW1lc3BhY2Ugewor QEAgLTY0LDEzICs2NSwyMSBAQCBURVNUKEJ1Y2tldFJhbmdlc1Rlc3QsIENoZWNrc3VtKSB7Cisg ICByYW5nZXMuc2V0X3JhbmdlKDIsIDIpOworIAorICAgcmFuZ2VzLlJlc2V0Q2hlY2tzdW0oKTsK KysjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQorICAgRVhQRUNUX0VRKDI4OTIx NzI1M3UsIHJhbmdlcy5jaGVja3N1bSgpKTsKKysjZWxzZQorKyAgRVhQRUNUX0VRKDI3NjcyMzE1 OTZ1LCByYW5nZXMuY2hlY2tzdW0oKSk7CisrI2VuZGlmCisgCisgICByYW5nZXMuc2V0X3Jhbmdl KDIsIDMpOworICAgRVhQRUNUX0ZBTFNFKHJhbmdlcy5IYXNWYWxpZENoZWNrc3VtKCkpOworIAor ICAgcmFuZ2VzLlJlc2V0Q2hlY2tzdW0oKTsKKysjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVf RU5ESUFOKQorICAgRVhQRUNUX0VRKDI4NDM4MzU3NzZ1LCByYW5nZXMuY2hlY2tzdW0oKSk7Cisr I2Vsc2UKKysgIEVYUEVDVF9FUSgzNTU2MjIzNzM4dSwgcmFuZ2VzLmNoZWNrc3VtKCkpOworKyNl bmRpZgorICAgRVhQRUNUX1RSVUUocmFuZ2VzLkhhc1ZhbGlkQ2hlY2tzdW0oKSk7CisgfQorIAor LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3BpY2tsZS5jYworKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3BpY2tsZS5jYworQEAgLTgy LDcgKzgyLDEyIEBAIGlubGluZSBjb25zdCBjaGFyKiBQaWNrbGVJdGVyYXRvcjo6R2V0UmVhZFBv aW50ZXJBbmRBZHZhbmNlKAorIH0KKyAKKyBib29sIFBpY2tsZUl0ZXJhdG9yOjpSZWFkQm9vbChi b29sKiByZXN1bHQpIHsKKy0gIHJldHVybiBSZWFkQnVpbHRpblR5cGUocmVzdWx0KTsKKysgIGlu dCBpbnRfcmVzdWx0OworKyAgaWYgKFJlYWRCdWlsdGluVHlwZSgmaW50X3Jlc3VsdCkpIHsKKysg ICAgKnJlc3VsdCA9IHN0YXRpY19jYXN0PGJvb2w+KGludF9yZXN1bHQpOworKyAgICByZXR1cm4g dHJ1ZTsKKysgIH0gZWxzZQorKyAgICByZXR1cm4gZmFsc2U7CisgfQorIAorIGJvb2wgUGlja2xl SXRlcmF0b3I6OlJlYWRJbnQoaW50KiByZXN1bHQpIHsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vYmFzZS9zaGExLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL2Jhc2Uvc2hhMS5jYworQEAgLTExMCw4ICsxMTAsMTAgQEAgdm9pZCBTZWN1cmVI YXNoQWxnb3JpdGhtOjpGaW5hbCgpIHsKKyAgIFBhZCgpOworICAgUHJvY2VzcygpOworIAorKyNp ZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCisgICBmb3IgKGF1dG8mIHQgOiBIKQor ICAgICB0ID0gQnl0ZVN3YXAodCk7CisrI2VuZGlmCisgfQorIAorIHZvaWQgU2VjdXJlSGFzaEFs Z29yaXRobTo6VXBkYXRlKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBuYnl0ZXMpIHsKK0BAIC0x NTcsOCArMTU5LDEwIEBAIHZvaWQgU2VjdXJlSGFzaEFsZ29yaXRobTo6UHJvY2VzcygpIHsKKyAg IC8vCisgICAvLyBXIGFuZCBNIGFyZSBpbiBhIHVuaW9uLCBzbyBubyBuZWVkIHRvIG1lbWNweS4K KyAgIC8vIG1lbWNweShXLCBNLCBzaXplb2YoTSkpOworKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJ VFRMRV9FTkRJQU4pCisgICBmb3IgKHQgPSAwOyB0IDwgMTY7ICsrdCkKKyAgICAgV1t0XSA9IEJ5 dGVTd2FwKFdbdF0pOworKyNlbmRpZgorIAorICAgLy8gYi4KKyAgIGZvciAodCA9IDE2OyB0IDwg ODA7ICsrdCkKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9zdHJp bmdzL3N0cmluZ19udW1iZXJfY29udmVyc2lvbnNfdW5pdHRlc3QuY2MKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9zdHJpbmdzL3N0cmluZ19udW1iZXJfY29udmVy c2lvbnNfdW5pdHRlc3QuY2MKK0BAIC04MjksMTIgKzgyOSwyMSBAQCBURVNUKFN0cmluZ051bWJl ckNvbnZlcnNpb25zVGVzdCwgRG91YmxlVG9TdHJpbmcpIHsKKyAgIH0KKyAKKyAgIC8vIFRoZSBm b2xsb3dpbmcgdHdvIHZhbHVlcyB3ZXJlIHNlZW4gaW4gY3Jhc2hlcyBpbiB0aGUgd2lsZC4KKysj aWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQorICAgY29uc3QgY2hhciBpbnB1dF9i eXRlc1s4XSA9IHswLCAwLCAwLCAwLCAnXHhlZScsICdceDZkJywgJ1x4NzMnLCAnXHg0Mid9Owor KyNlbHNlCisrICBjb25zdCBjaGFyIGlucHV0X2J5dGVzWzhdID0geydceDQyJywgJ1x4NzMnLCAn XHg2ZCcsICdceGVlJywgMCwgMCwgMCwgMH07CisrI2VuZGlmCisgICBkb3VibGUgaW5wdXQgPSAw OworICAgbWVtY3B5KCZpbnB1dCwgaW5wdXRfYnl0ZXMsIGJhc2U6OnNpemUoaW5wdXRfYnl0ZXMp KTsKKyAgIEVYUEVDVF9FUSgiMTMzNTE3OTA4Mzc3NiIsIE51bWJlclRvU3RyaW5nKGlucHV0KSk7 CisrI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKKyAgIGNvbnN0IGNoYXIgaW5w dXRfYnl0ZXMyWzhdID0KKyAgICAgICB7MCwgMCwgMCwgJ1x4YTAnLCAnXHhkYScsICdceDZjJywg J1x4NzMnLCAnXHg0Mid9OworKyNlbHNlCisrICBjb25zdCBjaGFyIGlucHV0X2J5dGVzMls4XSA9 CisrICAgICAgeydceDQyJywgJ1x4NzMnLCAnXHg2YycsICdceGRhJywgJ1x4YTAnLCAwLCAwLCAw fTsKKysjZW5kaWYKKyAgIGlucHV0ID0gMDsKKyAgIG1lbWNweSgmaW5wdXQsIGlucHV0X2J5dGVz MiwgYmFzZTo6c2l6ZShpbnB1dF9ieXRlczIpKTsKKyAgIEVYUEVDVF9FUSgiMTMzNDg5MDMzMjE2 MCIsIE51bWJlclRvU3RyaW5nKGlucHV0KSk7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL2Jhc2UvdGhpcmRfcGFydHkvZG1nX2ZwL2R0b2EuY2MKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS90aGlyZF9wYXJ0eS9kbWdfZnAvZHRvYS5jYwor QEAgLTE4Niw3ICsxODYsMTEgQEAKKyAgKgl1c2VkIGZvciBpbnB1dCBtb3JlIHRoYW4gU1RSVE9E X0RJR0xJTSBkaWdpdHMgbG9uZyAoZGVmYXVsdCA0MCkuCisgICovCisgCisrI2lmZGVmIF9fQklH X0VORElBTl9fCisrI2RlZmluZSBJRUVFX01DNjhrCisrI2Vsc2UKKyAjZGVmaW5lIElFRUVfODA4 NworKyNlbmRpZgorICNkZWZpbmUgTk9fSEVYX0ZQCisgCisgI2lmbmRlZiBMb25nCistLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvc2FmZV9icm93c2luZy9k Yi91dGlsX3VuaXR0ZXN0LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L2NvbXBvbmVudHMvc2FmZV9icm93c2luZy9kYi91dGlsX3VuaXR0ZXN0LmNjCitAQCAtMTIsNiAr MTIsMTIgQEAKKyAjaW5jbHVkZSAidGVzdGluZy9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0Lmgi CisgI2luY2x1ZGUgInVybC9ndXJsLmgiCisgCisrI2lmIGRlZmluZWQoT1NfV0lOKQorKyNpbmNs dWRlIDx3aW5zb2NrMi5oPgorKyNlbGlmIGRlZmluZWQoT1NfUE9TSVgpCisrI2luY2x1ZGUgPGFy cGEvaW5ldC5oPgorKyNlbmRpZgorKworIG5hbWVzcGFjZSBzYWZlX2Jyb3dzaW5nIHsKKyAKKyBU RVNUKFNhZmVCcm93c2luZ0RiVXRpbFRlc3QsIFVybFRvRnVsbEhhc2hlcykgeworQEAgLTgzLDcg Kzg5LDcgQEAgVEVTVChTYWZlQnJvd3NpbmdEYlV0aWxUZXN0LCBTdHJpbmdUb1NCRnVsbEhhc2hB bmRTQkZ1bGxIYXNoVG9TdHJpbmcpIHsKKyAgIC8vIDMxIGNoYXJzIHBsdXMgdGhlIGxhc3QgXDAg YXMgZnVsbF9oYXNoLgorICAgY29uc3Qgc3RkOjpzdHJpbmcgaGFzaF9pbiA9ICIxMjM0NTY3ODkw MjIzNDU2Nzg5MDMyMzQ1Njc4OTAxMiI7CisgICBTQkZ1bGxIYXNoIGhhc2hfb3V0ID0gU3RyaW5n VG9TQkZ1bGxIYXNoKGhhc2hfaW4pOworLSAgRVhQRUNUX0VRKDB4MzQzMzMyMzFVLCBoYXNoX291 dC5wcmVmaXgpOworKyAgRVhQRUNUX0VRKGh0b25sKDB4MzEzMjMzMzRVKSwgaGFzaF9vdXQucHJl Zml4KTsKKyAgIEVYUEVDVF9FUSgwLCBtZW1jbXAoaGFzaF9pbi5kYXRhKCksIGhhc2hfb3V0LmZ1 bGxfaGFzaCwgc2l6ZW9mKFNCRnVsbEhhc2gpKSk7CisgCisgICBzdGQ6OnN0cmluZyBoYXNoX2Zp bmFsID0gU0JGdWxsSGFzaFRvU3RyaW5nKGhhc2hfb3V0KTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50cy9zYWZlX2Jyb3dzaW5nL2RiL3Y0X3JpY2UuY2MK KysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50cy9zYWZlX2Jy b3dzaW5nL2RiL3Y0X3JpY2UuY2MKK0BAIC04LDYgKzgsNyBAQAorICNpbmNsdWRlICJiYXNlL2xv Z2dpbmcuaCIKKyAjaW5jbHVkZSAiYmFzZS9udW1lcmljcy9zYWZlX21hdGguaCIKKyAjaW5jbHVk ZSAiYmFzZS9zdHJpbmdzL3N0cmluZ3ByaW50Zi5oIgorKyNpbmNsdWRlICJiYXNlL3N5c19ieXRl b3JkZXIuaCIKKyAjaW5jbHVkZSAiYnVpbGQvYnVpbGRfY29uZmlnLmgiCisgI2luY2x1ZGUgImNv bXBvbmVudHMvc2FmZV9icm93c2luZy9kYi92NF9yaWNlLmgiCisgCitAQCAtMjEsMTAgKzIyLDYg QEAgdXNpbmcgOjpnb29nbGU6OnByb3RvYnVmOjpSZXBlYXRlZEZpZWxkOworIHVzaW5nIDo6Z29v Z2xlOjpwcm90b2J1Zjo6aW50MzI7CisgdXNpbmcgOjpnb29nbGU6OnByb3RvYnVmOjppbnQ2NDsK KyAKKy0jaWYgIWRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikgfHwgKEFSQ0hfQ1BVX0xJ VFRMRV9FTkRJQU4gIT0gMSkKKy0jZXJyb3IgVGhlIGNvZGUgYmVsb3cgYXNzdW1lcyBsaXR0bGUt ZW5kaWFubmVzcy4KKy0jZW5kaWYKKy0KKyBuYW1lc3BhY2Ugc2FmZV9icm93c2luZyB7CisgCisg bmFtZXNwYWNlIHsKK0BAIC0xMTcsNyArMTE0LDcgQEAgVjREZWNvZGVSZXN1bHQgVjRSaWNlRGVj b2Rlcjo6RGVjb2RlUHJlZml4ZXMoY29uc3QgaW50NjQgZmlyc3RfdmFsdWUsCisgICBvdXQtPnJl c2VydmUoKG51bV9lbnRyaWVzICsgMSkpOworIAorICAgYmFzZTo6Q2hlY2tlZE51bWVyaWM8dWlu dDMyX3Q+IGxhc3RfdmFsdWUoZmlyc3RfdmFsdWUpOworLSAgb3V0LT5wdXNoX2JhY2soaHRvbmwo bGFzdF92YWx1ZS5WYWx1ZU9yRGllKCkpKTsKKysgIG91dC0+cHVzaF9iYWNrKGJhc2U6OkJ5dGVT d2FwKHN0YXRpY19jYXN0PHVpbnQzMl90PihsYXN0X3ZhbHVlLlZhbHVlT3JEaWUoKSkpKTsKKyAK KyAgIGlmIChudW1fZW50cmllcyA+IDApIHsKKyAgICAgVjRSaWNlRGVjb2RlciBkZWNvZGVyKHJp Y2VfcGFyYW1ldGVyLCBudW1fZW50cmllcywgZW5jb2RlZF9kYXRhKTsKK0BAIC0xMzYsNyArMTMz LDcgQEAgVjREZWNvZGVSZXN1bHQgVjRSaWNlRGVjb2Rlcjo6RGVjb2RlUHJlZml4ZXMoY29uc3Qg aW50NjQgZmlyc3RfdmFsdWUsCisgCisgICAgICAgLy8gVGhpcyBmbGlwcGluZyBpcyBkb25lIHNv IHRoYXQgdGhlIGRlY29kZWQgdWludDMyIGlzIGludGVycHJldGVkCisgICAgICAgLy8gY29ycmVj bHkgYXMgYSBzdHJpbmcgb2YgNCBieXRlcy4KKy0gICAgICBvdXQtPnB1c2hfYmFjayhodG9ubChs YXN0X3ZhbHVlLlZhbHVlT3JEaWUoKSkpOworKyAgICAgIG91dC0+cHVzaF9iYWNrKGJhc2U6OkJ5 dGVTd2FwKHN0YXRpY19jYXN0PHVpbnQzMl90PihsYXN0X3ZhbHVlLlZhbHVlT3JEaWUoKSkpKTsK KyAgICAgfQorICAgfQorIAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9j b21wb25lbnRzL3NhZmVfYnJvd3NpbmcvZGIvdjRfcmljZV91bml0dGVzdC5jYworKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3NhZmVfYnJvd3NpbmcvZGIv djRfcmljZV91bml0dGVzdC5jYworQEAgLTYsNiArNiwxMiBAQAorICNpbmNsdWRlICJiYXNlL2xv Z2dpbmcuaCIKKyAjaW5jbHVkZSAidGVzdGluZy9wbGF0Zm9ybV90ZXN0LmgiCisgCisrI2lmIGRl ZmluZWQoT1NfV0lOKQorKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgorKyNlbGlmIGRlZmluZWQoT1Nf UE9TSVgpCisrI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorKyNlbmRpZgorKworIHVzaW5nIDo6Z29v Z2xlOjpwcm90b2J1Zjo6UmVwZWF0ZWRGaWVsZDsKKyB1c2luZyA6Omdvb2dsZTo6cHJvdG9idWY6 OmludDMyOworIAorQEAgLTI0Nyw3ICsyNTMsNyBAQCBURVNUX0YoVjRSaWNlVGVzdCwgVGVzdERl Y29kZXJQcmVmaXhlc1dpdGhPbmVWYWx1ZSkgeworICAgRVhQRUNUX0VRKERFQ09ERV9TVUNDRVNT LAorICAgICAgICAgICAgIFY0UmljZURlY29kZXI6OkRlY29kZVByZWZpeGVzKDB4NjlGNjdGNTF1 LCAyLCAwLCAiIiwgJm91dCkpOworICAgRVhQRUNUX0VRKDF1LCBvdXQuc2l6ZSgpKTsKKy0gIEVY UEVDVF9FUSgweDY5RjY3RjUxdSwgb3V0WzBdKTsKKysgIEVYUEVDVF9FUShodG9ubCgweDUxN0ZG NjY5dSksIG91dFswXSk7CisgfQorIAorIFRFU1RfRihWNFJpY2VUZXN0LCBUZXN0RGVjb2RlclBy ZWZpeGVzV2l0aE11bHRpcGxlVmFsdWVzKSB7CitAQCAtMjU2LDcgKzI2Miw3IEBAIFRFU1RfRihW NFJpY2VUZXN0LCBUZXN0RGVjb2RlclByZWZpeGVzV2l0aE11bHRpcGxlVmFsdWVzKSB7CisgICAg ICAgICAgICAgVjRSaWNlRGVjb2Rlcjo6RGVjb2RlUHJlZml4ZXMoCisgICAgICAgICAgICAgICAg IDUsIDI4LCAzLCAiXHhiZlx4YThceDNmXHhmYlx4Zlx4Zlx4NWVceDI3XHhlNlx4YzNceDFkXHhj Nlx4MzgiLAorICAgICAgICAgICAgICAgICAmb3V0KSk7CistICBzdGQ6OnZlY3Rvcjx1aW50MzJf dD4gZXhwZWN0ZWQgPSB7NSwgMHhhZDkzNGMwY3UsIDB4NmZmNjdmNTZ1LCAweDgxMzE2ZmNldX07 CisrICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gZXhwZWN0ZWQgPSB7aHRvbmwoMHgwNTAwMDAwMCks IGh0b25sKDB4MGM0YzkzYWR1KSwgaHRvbmwoMHg1NjdmZjY2ZnUpLCBodG9ubCgweGNlNmYzMTgx dSl9OworICAgRVhQRUNUX0VRKGV4cGVjdGVkLnNpemUoKSwgb3V0LnNpemUoKSk7CisgICBmb3Ig KHVuc2lnbmVkIGkgPSAwOyBpIDwgZXhwZWN0ZWQuc2l6ZSgpOyBpKyspIHsKKyAgICAgRVhQRUNU X0VRKGV4cGVjdGVkW2ldLCBvdXRbaV0pOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5jYworKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5jYworQEAgLTY4 NiwxMCArNjg2LDYgQEAgQ2hhbm5lbExheW91dCBDaGFubmVsTGF5b3V0VG9DaHJvbWVDaGFubmVs TGF5b3V0KGludDY0X3QgbGF5b3V0LCBpbnQgY2hhbm5lbHMpIHsKKyAgIH0KKyB9CisgCistI2lm ICFkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCistI2Vycm9yIFRoZSBjb2RlIGJlbG93 IGFzc3VtZXMgbGl0dGxlLWVuZGlhbm5lc3MuCistI2VuZGlmCistCisgVmlkZW9QaXhlbEZvcm1h dCBBVlBpeGVsRm9ybWF0VG9WaWRlb1BpeGVsRm9ybWF0KEFWUGl4ZWxGb3JtYXQgcGl4ZWxfZm9y bWF0KSB7CisgICAvLyBUaGUgWVVWSiBhbHRlcm5hdGl2ZXMgYXJlIEZGbXBlZydzIChkZXByZWNh dGVkLCBidXQgc3RpbGwgaW4gdXNlKSB3YXkgdG8KKyAgIC8vIHNwZWNpZnkgYSBwaXhlbCBmb3Jt YXQgYW5kIGZ1bGwgcmFuZ2UgY29sb3IgY29tYmluYXRpb24uCistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2Zvcm1hdHMvbXA0L2JveF9kZWZpbml0aW9ucy5jYwor KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mb3JtYXRzL21wNC9i b3hfZGVmaW5pdGlvbnMuY2MKK0BAIC0xMTA3LDE1ICsxMTA3LDE0IEBAIGJvb2wgT3B1c1NwZWNp ZmljQm94OjpQYXJzZShCb3hSZWFkZXIqIHJlYWRlcikgeworICAgUkNIRUNLKHJlYWRlci0+UmVh ZDQoJnNhbXBsZV9yYXRlKSk7CisgICBSQ0hFQ0socmVhZGVyLT5SZWFkMnMoJmdhaW5fZGIpKTsK KyAKKy0jaWYgIWRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKKy0jZXJyb3IgVGhlIGNv ZGUgYmVsb3cgYXNzdW1lcyBsaXR0bGUtZW5kaWFubmVzcy4KKy0jZW5kaWYKKy0KKy0gIG1lbWNw eSgmZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX1NLSVBfU0FNUExFU19PRkZTRVRdLCAmY29kZWNf ZGVsYXlfaW5fZnJhbWVzLAorLSAgICAgICAgIHNpemVvZihjb2RlY19kZWxheV9pbl9mcmFtZXMp KTsKKy0gIG1lbWNweSgmZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX1NBTVBMRV9SQVRFX09GRlNF VF0sICZzYW1wbGVfcmF0ZSwKKy0gICAgICAgICBzaXplb2Yoc2FtcGxlX3JhdGUpKTsKKy0gIG1l bWNweSgmZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX0dBSU5fT0ZGU0VUXSwgJmdhaW5fZGIsIHNp emVvZihnYWluX2RiKSk7CisrICBleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfU0tJUF9TQU1QTEVT X09GRlNFVF0gPSAoY29kZWNfZGVsYXlfaW5fZnJhbWVzID4+IDApICYgMHhmZjsKKysgIGV4dHJh ZGF0YVtPUFVTX0VYVFJBREFUQV9TS0lQX1NBTVBMRVNfT0ZGU0VUKzFdID0gKGNvZGVjX2RlbGF5 X2luX2ZyYW1lcyA+PiA4KSAmIDB4ZmY7CisrICBleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfU0FN UExFX1JBVEVfT0ZGU0VUXSA9IChzYW1wbGVfcmF0ZSA+PiAwKSAmIDB4ZmY7CisrICBleHRyYWRh dGFbT1BVU19FWFRSQURBVEFfU0FNUExFX1JBVEVfT0ZGU0VUKzFdID0gKHNhbXBsZV9yYXRlID4+ IDgpICYgMHhmZjsKKysgIGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9TQU1QTEVfUkFURV9PRkZT RVQrMl0gPSAoc2FtcGxlX3JhdGUgPj4gMTYpICYgMHhmZjsKKysgIGV4dHJhZGF0YVtPUFVTX0VY VFJBREFUQV9TQU1QTEVfUkFURV9PRkZTRVQrM10gPSAoc2FtcGxlX3JhdGUgPj4gMjQpICYgMHhm ZjsKKysgIGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9HQUlOX09GRlNFVF0gPSAoZ2Fpbl9kYiA+ PiAwKSAmIDB4ZmY7CisrICBleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfR0FJTl9PRkZTRVQrMV0g PSAoZ2Fpbl9kYiA+PiA4KSAmIDB4ZmY7CisgCisgICBjaGFubmVsX2NvdW50ID0gZXh0cmFkYXRh W09QVVNfRVhUUkFEQVRBX0NIQU5ORUxTX09GRlNFVF07CisgCistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL3JlbmRlcmVycy9wYWludF9jYW52YXNfdmlkZW9fcmVu ZGVyZXIuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvcmVu ZGVyZXJzL3BhaW50X2NhbnZhc192aWRlb19yZW5kZXJlci5jYworQEAgLTMxLDggKzMxLDcgQEAK KyAKKyAvLyBTa2lhIGludGVybmFsIGZvcm1hdCBkZXBlbmRzIG9uIGEgcGxhdGZvcm0uIE9uIEFu ZHJvaWQgaXQgaXMgQUJHUiwgb24gb3RoZXJzCisgLy8gaXQgaXMgQVJHQi4KKy0jaWYgU0tfQjMy X1NISUZUID09IDAgJiYgU0tfRzMyX1NISUZUID09IDggJiYgU0tfUjMyX1NISUZUID09IDE2ICYm IFwKKy0gICAgU0tfQTMyX1NISUZUID09IDI0CisrI2lmIFNLX1BNQ09MT1JfQllURV9PUkRFUihC LEcsUixBKQorICNkZWZpbmUgTElCWVVWX0k0MjBfVE9fQVJHQiBsaWJ5dXY6Okk0MjBUb0FSR0IK KyAjZGVmaW5lIExJQllVVl9JNDIyX1RPX0FSR0IgbGlieXV2OjpJNDIyVG9BUkdCCisgI2RlZmlu ZSBMSUJZVVZfSTQ0NF9UT19BUkdCIGxpYnl1djo6STQ0NFRvQVJHQgorQEAgLTQyLDggKzQxLDcg QEAKKyAjZGVmaW5lIExJQllVVl9JMDEwX1RPX0FSR0IgbGlieXV2OjpJMDEwVG9BUkdCCisgI2Rl ZmluZSBMSUJZVVZfSDAxMF9UT19BUkdCIGxpYnl1djo6SDAxMFRvQVJHQgorICNkZWZpbmUgTElC WVVWX05WMTJfVE9fQVJHQiBsaWJ5dXY6Ok5WMTJUb0FSR0IKKy0jZWxpZiBTS19SMzJfU0hJRlQg PT0gMCAmJiBTS19HMzJfU0hJRlQgPT0gOCAmJiBTS19CMzJfU0hJRlQgPT0gMTYgJiYgXAorLSAg ICBTS19BMzJfU0hJRlQgPT0gMjQKKysjZWxpZiBTS19QTUNPTE9SX0JZVEVfT1JERVIoUixHLEIs QSkKKyAjZGVmaW5lIExJQllVVl9JNDIwX1RPX0FSR0IgbGlieXV2OjpJNDIwVG9BQkdSCisgI2Rl ZmluZSBMSUJZVVZfSTQyMl9UT19BUkdCIGxpYnl1djo6STQyMlRvQUJHUgorICNkZWZpbmUgTElC WVVWX0k0NDRfVE9fQVJHQiBsaWJ5dXY6Okk0NDRUb0FCR1IKKy0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vbmV0L2NlcnQvY3JsX3NldC5jYworKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvY2VydC9jcmxfc2V0LmNjCitAQCAtNiw2ICs2LDcgQEAK KyAKKyAjaW5jbHVkZSAiYmFzZS9iYXNlNjQuaCIKKyAjaW5jbHVkZSAiYmFzZS9qc29uL2pzb25f cmVhZGVyLmgiCisrI2luY2x1ZGUgImJhc2Uvc3lzX2J5dGVvcmRlci5oIgorICNpbmNsdWRlICJi YXNlL3RpbWUvdGltZS5oIgorICNpbmNsdWRlICJiYXNlL3RyYWNlX2V2ZW50L3RyYWNlX2V2ZW50 LmgiCisgI2luY2x1ZGUgImJhc2UvdmFsdWVzLmgiCitAQCAtNDQsOSArNDUsOSBAQCBiYXNlOjpE aWN0aW9uYXJ5VmFsdWUqIFJlYWRIZWFkZXIoYmFzZTo6U3RyaW5nUGllY2UqIGRhdGEpIHsKKyAg IHVpbnQxNl90IGhlYWRlcl9sZW47CisgICBpZiAoZGF0YS0+c2l6ZSgpIDwgc2l6ZW9mKGhlYWRl cl9sZW4pKQorICAgICByZXR1cm4gbnVsbHB0cjsKKy0gIC8vIEFzc3VtZXMgbGl0dGxlLWVuZGlh bi4KKyAgIG1lbWNweSgmaGVhZGVyX2xlbiwgZGF0YS0+ZGF0YSgpLCBzaXplb2YoaGVhZGVyX2xl bikpOworICAgZGF0YS0+cmVtb3ZlX3ByZWZpeChzaXplb2YoaGVhZGVyX2xlbikpOworKyAgaGVh ZGVyX2xlbiA9IGJhc2U6OkJ5dGVTd2FwVG9MRTE2KGhlYWRlcl9sZW4pOworIAorICAgaWYgKGRh dGEtPnNpemUoKSA8IGhlYWRlcl9sZW4pCisgICAgIHJldHVybiBudWxscHRyOworQEAgLTc5LDkg KzgwLDkgQEAgYm9vbCBSZWFkQ1JMKGJhc2U6OlN0cmluZ1BpZWNlKiBkYXRhLAorICAgdWludDMy X3QgbnVtX3NlcmlhbHM7CisgICBpZiAoZGF0YS0+c2l6ZSgpIDwgc2l6ZW9mKG51bV9zZXJpYWxz KSkKKyAgICAgcmV0dXJuIGZhbHNlOworLSAgLy8gQXNzdW1lcyBsaXR0bGUgZW5kaWFuLgorICAg bWVtY3B5KCZudW1fc2VyaWFscywgZGF0YS0+ZGF0YSgpLCBzaXplb2YobnVtX3NlcmlhbHMpKTsK KyAgIGRhdGEtPnJlbW92ZV9wcmVmaXgoc2l6ZW9mKG51bV9zZXJpYWxzKSk7CisrICBudW1fc2Vy aWFscyA9IGJhc2U6OkJ5dGVTd2FwVG9MRTMyKG51bV9zZXJpYWxzKTsKKyAKKyAgIGlmIChudW1f c2VyaWFscyA+IDMyICogMTAyNCAqIDEwMjQpICAvLyBTYW5pdHkgY2hlY2suCisgICAgIHJldHVy biBmYWxzZTsKK0BAIC0xOTIsMTUgKzE5Myw2IEBAIENSTFNldDo6fkNSTFNldCgpID0gZGVmYXVs dDsKKyAvLyBzdGF0aWMKKyBib29sIENSTFNldDo6UGFyc2UoYmFzZTo6U3RyaW5nUGllY2UgZGF0 YSwgc2NvcGVkX3JlZnB0cjxDUkxTZXQ+KiBvdXRfY3JsX3NldCkgeworICAgVFJBQ0VfRVZFTlQw KE5ldFRyYWNpbmdDYXRlZ29yeSgpLCAiQ1JMU2V0OjpQYXJzZSIpOworLS8vIE90aGVyIHBhcnRz IG9mIENocm9tZSBhc3N1bWUgdGhhdCB3ZSdyZSBsaXR0bGUgZW5kaWFuLCBzbyB3ZSBkb24ndCBs b3NlCistLy8gYW55dGhpbmcgYnkgZG9pbmcgdGhpcy4KKy0jaWYgZGVmaW5lZChfX0JZVEVfT1JE RVIpCistICAvLyBMaW51eCBjaGVjaworLSAgc3RhdGljX2Fzc2VydChfX0JZVEVfT1JERVIgPT0g X19MSVRUTEVfRU5ESUFOLCAiYXNzdW1lcyBsaXR0bGUgZW5kaWFuIik7CistI2VsaWYgZGVmaW5l ZChfX0JJR19FTkRJQU5fXykKKy0vLyBNYWMgY2hlY2sKKy0jZXJyb3IgYXNzdW1lcyBsaXR0bGUg ZW5kaWFuCistI2VuZGlmCisgCisgICBzdGQ6OnVuaXF1ZV9wdHI8YmFzZTo6RGljdGlvbmFyeVZh bHVlPiBoZWFkZXJfZGljdChSZWFkSGVhZGVyKCZkYXRhKSk7CisgICBpZiAoIWhlYWRlcl9kaWN0 LmdldCgpKQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xp bnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAorQEAgLTM3 Nyw2ICszNzcsNyBAQCB0eXBlZGVmIHN0cnVjdCBwdF9yZWdzIHJlZ3Nfc3RydWN0OworIAorICNk ZWZpbmUgU0VDQ09NUF9OUl9JRFggKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwg bnIpKQorICNkZWZpbmUgU0VDQ09NUF9BUkNIX0lEWCAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2Vj Y29tcF9kYXRhLCBhcmNoKSkKKysjaWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVf RU5ESUFOX18KKyAjZGVmaW5lIFNFQ0NPTVBfSVBfTVNCX0lEWCBcCisgICAob2Zmc2V0b2Yoc3Ry dWN0IGFyY2hfc2VjY29tcF9kYXRhLCBpbnN0cnVjdGlvbl9wb2ludGVyKSArIDQpCisgI2RlZmlu ZSBTRUNDT01QX0lQX0xTQl9JRFggXAorQEAgLTM4NSw2ICszODYsMTYgQEAgdHlwZWRlZiBzdHJ1 Y3QgcHRfcmVncyByZWdzX3N0cnVjdDsKKyAgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21w X2RhdGEsIGFyZ3MpICsgOCAqIChucikgKyA0KQorICNkZWZpbmUgU0VDQ09NUF9BUkdfTFNCX0lE WChucikgXAorICAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJncykgKyA4 ICogKG5yKSArIDApCisrI2Vsc2UKKysjZGVmaW5lIFNFQ0NPTVBfSVBfTVNCX0lEWCBcCisrICAo b2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBpbnN0cnVjdGlvbl9wb2ludGVyKSAr IDApCisrI2RlZmluZSBTRUNDT01QX0lQX0xTQl9JRFggXAorKyAgKG9mZnNldG9mKHN0cnVjdCBh cmNoX3NlY2NvbXBfZGF0YSwgaW5zdHJ1Y3Rpb25fcG9pbnRlcikgKyA0KQorKyNkZWZpbmUgU0VD Q09NUF9BUkdfTVNCX0lEWChucikgXAorKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBf ZGF0YSwgYXJncykgKyA4ICogKG5yKSArIDApCisrI2RlZmluZSBTRUNDT01QX0FSR19MU0JfSURY KG5yKSBcCisrICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBhcmdzKSArIDgg KiAobnIpICsgNCkKKysjZW5kaWYKKyAKKyAjZGVmaW5lIFNFQ0NPTVBfUFRfUkVTVUxUKF9yZWdz KSAoX3JlZ3MpLmdwclszXQorICNkZWZpbmUgU0VDQ09NUF9QVF9TWVNDQUxMKF9yZWdzKSAoX3Jl Z3MpLmdwclswXQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9za2lhL2Nv bmZpZy9Ta1VzZXJDb25maWcuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9za2lhL2NvbmZpZy9Ta1VzZXJDb25maWcuaAorQEAgLTkwLDExICs5MCwxOCBAQCBTS19BUEkg dm9pZCBTa0RlYnVnZl9GaWxlTGluZShjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgYm9vbCBm YXRhbCwKKyAgICAgX19GSUxFX18sIF9fTElORV9fLCAjY29uZCk7IH0gfSB3aGlsZSAoZmFsc2Up CisgCisgI2lmICFkZWZpbmVkKEFORFJPSUQpICAgLy8gT24gQW5kcm9pZCwgd2UgdXNlIHRoZSBz a2lhIGRlZmF1bHQgc2V0dGluZ3MuCisrI2lmIGRlZmluZWQoU0tfQ1BVX0JFTkRJQU4pCisrI2Rl ZmluZSBTS19BMzJfU0hJRlQgICAgMAorKyNkZWZpbmUgU0tfUjMyX1NISUZUICAgIDgKKysjZGVm aW5lIFNLX0czMl9TSElGVCAgICAxNgorKyNkZWZpbmUgU0tfQjMyX1NISUZUICAgIDI0CisrI2Vs c2UKKyAjZGVmaW5lIFNLX0EzMl9TSElGVCAgICAyNAorICNkZWZpbmUgU0tfUjMyX1NISUZUICAg IDE2CisgI2RlZmluZSBTS19HMzJfU0hJRlQgICAgOAorICNkZWZpbmUgU0tfQjMyX1NISUZUICAg IDAKKyAjZW5kaWYKKysjZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChTS19CVUlMRF9GT1JfTUFDKQor IAorQEAgLTEwOCwxNyArMTE1LDYgQEAgU0tfQVBJIHZvaWQgU2tEZWJ1Z2ZfRmlsZUxpbmUoY29u c3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGJvb2wgZmF0YWwsCisgLy8gd2Ugc2hvdWxkIHJldmlz aXQgdGhpcyBjaG9pY2UuLi4KKyAjZGVmaW5lIFNLX1VTRV9GUkVFVFlQRV9FTUJPTERFTgorIAor LSNpZiBkZWZpbmVkKFNLX0JVSUxEX0ZPUl9VTklYKSAmJiBkZWZpbmVkKFNLX0NQVV9CRU5ESUFO KQorLS8vIEFib3ZlIHdlIHNldCB0aGUgb3JkZXIgZm9yIEFSR0IgY2hhbm5lbHMgaW4gcmVnaXN0 ZXJzLiBJIHN1c3BlY3QgdGhhdCwgb24KKy0vLyBiaWcgZW5kaWFuIG1hY2hpbmVzLCB5b3UgY2Fu IGtlZXAgdGhpcyB0aGUgc2FtZSBhbmQgZXZlcnl0aGluZyB3aWxsIHdvcmsuCistLy8gVGhlIGlu LW1lbW9yeSBvcmRlciB3aWxsIGJlIGRpZmZlcmVudCwgb2YgY291cnNlLCBidXQgYXMgbG9uZyBh cyBldmVyeXRoaW5nCistLy8gaXMgcmVhZGluZyBtZW1vcnkgYXMgd29yZHMgcmF0aGVyIHRoYW4g Ynl0ZXMsIGl0IHdpbGwgYWxsIHdvcmsuIEhvd2V2ZXIsIGlmCistLy8geW91IGZpbmQgdGhhdCBj b2xvdXJzIGFyZSBtZXNzZWQgdXAgSSB0aG91Z2h0IHRoYXQgSSB3b3VsZCBsZWF2ZSBhIGhlbHBm dWwKKy0vLyBsb2NhdG9yIGZvciB5b3UuIEFsc28gc2VlIHRoZSBjb21tZW50cyBpbgorLS8vIGJh c2UvZ2Z4L2JpdG1hcF9wbGF0Zm9ybV9kZXZpY2VfbGludXguaAorLSNlcnJvciBSZWFkIHRoZSBj b21tZW50IGF0IHRoaXMgbG9jYXRpb24KKy0jZW5kaWYKKy0KKyAjZW5kaWYKKyAKKyAvLyBUaGUg ZGVmYXVsdCBjcmFzaCBtYWNybyB3cml0ZXMgdG8gYmFkYmVlZiB3aGljaCBjYW4gY2F1c2Ugc29t ZSBzdHJhbmdlCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NraWEvZXh0 L2ltYWdlX29wZXJhdGlvbnNfdW5pdHRlc3QuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vc2tpYS9leHQvaW1hZ2Vfb3BlcmF0aW9uc191bml0dGVzdC5jYworQEAgLTE4 LDkgKzE4LDExIEBACisgI2luY2x1ZGUgInNraWEvZXh0L2ltYWdlX29wZXJhdGlvbnMuaCIKKyAj aW5jbHVkZSAidGVzdGluZy9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgiCisgI2luY2x1ZGUg InRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrQml0bWFwLmgiCisrI2luY2x1ZGUgInRo aXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrQ29sb3JQcml2LmgiCisgI2luY2x1ZGUgInRo aXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrQ29sb3JTcGFjZS5oIgorICNpbmNsdWRlICJ0 aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta0ltYWdlSW5mby5oIgorICNpbmNsdWRlICJ0 aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1JlY3QuaCIKKysjaW5jbHVkZSAidGhpcmRf cGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tVblByZU11bHRpcGx5LmgiCisgI2luY2x1ZGUgInVp L2dmeC9jb2RlYy9wbmdfY29kZWMuaCIKKyAjaW5jbHVkZSAidWkvZ2Z4L2dlb21ldHJ5L3NpemUu aCIKKyAKK0BAIC0xNTEsNyArMTUzLDcgQEAgdm9pZCBEcmF3Q2hlY2tlclRvQml0bWFwKGludCB3 LCBpbnQgaCwKKyAKKyAgICAgICBib29sIHVzZV9jb2xvcjIgPSAoeF9iaXQgIT0geV9iaXQpOyAg Ly8geG9yCisgCistICAgICAgKmJtcC0+Z2V0QWRkcjMyKHgsIHkpID0gKHVzZV9jb2xvcjIgPyBj b2xvcjIgOiBjb2xvcjEpOworKyAgICAgICpibXAtPmdldEFkZHIzMih4LCB5KSA9IFNrUHJlTXVs dGlwbHlDb2xvcih1c2VfY29sb3IyID8gY29sb3IyIDogY29sb3IxKTsKKyAgICAgfQorICAgfQor IH0KK0BAIC0yNzMsNyArMjc1LDcgQEAgdm9pZCBDaGVja1Jlc2l6ZU1ldGhvZFNob3VsZEF2ZXJh Z2VHcmlkKAorICAgICAgICAgc3RkOjptYXgodGVzdGVkX3BpeGVsLm1heF9jb2xvcl9kaXN0YW5j ZSwKKyAgICAgICAgICAgICAgICAgIHRlc3RlZF9tZXRob2QubWF4X2NvbG9yX2Rpc3RhbmNlX292 ZXJyaWRlKTsKKyAKKy0gICAgY29uc3QgU2tDb2xvciBhY3R1YWxfY29sb3IgPSAqZGVzdC5nZXRB ZGRyMzIoeCwgeSk7CisrICAgIGNvbnN0IFNrQ29sb3IgYWN0dWFsX2NvbG9yID0gU2tVblByZU11 bHRpcGx5OjpQTUNvbG9yVG9Db2xvcigqZGVzdC5nZXRBZGRyMzIoeCwgeSkpOworIAorICAgICAv LyBDaGVjayB0aGF0IHRoZSBwaXhlbHMgYXdheSBmcm9tIHRoZSBib3JkZXIgcmVnaW9uIGFyZSB2 ZXJ5IGNsb3NlCisgICAgIC8vIHRvIHRoZSBleHBlY3RlZCBhdmVyYWdlIGNvbG9yCitAQCAtNTI4 LDcgKzUzMCw3IEBAIFRFU1QoSW1hZ2VPcGVyYXRpb25zLCBTY2FsZVVwKSB7CisgICBmb3IgKGlu dCBzcmNfeSA9IDA7IHNyY195IDwgc3JjX2g7ICsrc3JjX3kpIHsKKyAgICAgZm9yIChpbnQgc3Jj X3ggPSAwOyBzcmNfeCA8IHNyY193OyArK3NyY194KSB7CisgICAgICAgKnNyYy5nZXRBZGRyMzIo c3JjX3gsIHNyY195KSA9CistICAgICAgICAgIFNrQ29sb3JTZXRBUkdCKDI1NSwgMTAgKyBzcmNf eCAqIDEwMCwgMTAgKyBzcmNfeSAqIDEwMCwgMCk7CisrICAgICAgICAgIFNrUGFja0FSR0IzMigy NTUsIDEwICsgc3JjX3ggKiAxMDAsIDEwICsgc3JjX3kgKiAxMDAsIDApOworICAgICB9CisgICB9 CisgCitAQCAtNTUyLDcgKzU1NCw3IEBAIFRFU1QoSW1hZ2VPcGVyYXRpb25zLCBTY2FsZVVwKSB7 CisgICAgICAgICAgICAgICBsYW5jem9zMyhzcmNfeCArIDAuNSAtIGRzdF94X2luX3NyYykgKgor ICAgICAgICAgICAgICAgbGFuY3pvczMoc3JjX3kgKyAwLjUgLSBkc3RfeV9pbl9zcmMpOworICAg ICAgICAgICBzdW0gKz0gY29lZmY7CistICAgICAgICAgIFNrQ29sb3IgdG1wID0gKnNyYy5nZXRB ZGRyMzIoc3JjX3gsIHNyY195KTsKKysgICAgICAgICAgU2tDb2xvciB0bXAgPSBTa1VuUHJlTXVs dGlwbHk6OlBNQ29sb3JUb0NvbG9yKCpzcmMuZ2V0QWRkcjMyKHNyY194LCBzcmNfeSkpOworICAg ICAgICAgICBhICs9IGNvZWZmICogU2tDb2xvckdldEEodG1wKTsKKyAgICAgICAgICAgciArPSBj b2VmZiAqIFNrQ29sb3JHZXRSKHRtcCk7CisgICAgICAgICAgIGcgKz0gY29lZmYgKiBTa0NvbG9y R2V0Ryh0bXApOworQEAgLTU3MSw3ICs1NzMsNyBAQCBURVNUKEltYWdlT3BlcmF0aW9ucywgU2Nh bGVVcCkgeworICAgICAgIGlmIChyID4gMjU1LjBmKSByID0gMjU1LjBmOworICAgICAgIGlmIChn ID4gMjU1LjBmKSBnID0gMjU1LjBmOworICAgICAgIGlmIChiID4gMjU1LjBmKSBiID0gMjU1LjBm OworLSAgICAgIFNrQ29sb3IgZHN0X2NvbG9yID0gKmRzdC5nZXRBZGRyMzIoZHN0X3gsIGRzdF95 KTsKKysgICAgICBTa0NvbG9yIGRzdF9jb2xvciA9IFNrVW5QcmVNdWx0aXBseTo6UE1Db2xvclRv Q29sb3IoKmRzdC5nZXRBZGRyMzIoZHN0X3gsIGRzdF95KSk7CisgICAgICAgRVhQRUNUX0xFKGZh YnMoU2tDb2xvckdldEEoZHN0X2NvbG9yKSAtIGEpLCAxLjVmKTsKKyAgICAgICBFWFBFQ1RfTEUo ZmFicyhTa0NvbG9yR2V0Uihkc3RfY29sb3IpIC0gciksIDEuNWYpOworICAgICAgIEVYUEVDVF9M RShmYWJzKFNrQ29sb3JHZXRHKGRzdF9jb2xvcikgLSBnKSwgMS41Zik7CistLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRm b3JtL2dyYXBoaWNzL2dwdS93ZWJnbF9pbWFnZV9jb252ZXJzaW9uLmNjCisrKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRm b3JtL2dyYXBoaWNzL2dwdS93ZWJnbF9pbWFnZV9jb252ZXJzaW9uLmNjCitAQCAtNDU2LDggKzQ1 Niw4IEBAIHZvaWQgVW5wYWNrPFdlYkdMSW1hZ2VDb252ZXJzaW9uOjprRGF0YUZvcm1hdEJHUkE4 LCB1aW50OF90LCB1aW50OF90PigKKyAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwaXhlbHNf cGVyX3JvdzsgKytpKSB7CisgICAgIHVpbnQzMl90IGJncmEgPSBzb3VyY2UzMltpXTsKKyAjaWYg ZGVmaW5lZChBUkNIX0NQVV9CSUdfRU5ESUFOKQorLSAgICB1aW50MzJfdCBick1hc2sgPSAweGZm MDBmZjAwOworLSAgICB1aW50MzJfdCBnYU1hc2sgPSAweDAwZmYwMGZmOworKyAgICB1aW50MzJf dCBicl9tYXNrID0gMHhmZjAwZmYwMDsKKysgICAgdWludDMyX3QgZ2FfbWFzayA9IDB4MDBmZjAw ZmY7CisgI2Vsc2UKKyAgICAgdWludDMyX3QgYnJfbWFzayA9IDB4MDBmZjAwZmY7CisgICAgIHVp bnQzMl90IGdhX21hc2sgPSAweGZmMDBmZjAwOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9ncmFwaGljcy9n cHUvd2ViZ2xfaW1hZ2VfY29udmVyc2lvbl90ZXN0LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBo aWNzL2dwdS93ZWJnbF9pbWFnZV9jb252ZXJzaW9uX3Rlc3QuY2MKK0BAIC03Niw5ICs3Niw5IEBA IFRFU1RfRihXZWJHTEltYWdlQ29udmVyc2lvblRlc3QsIGNvbnZlcnRCR1JBOHRvUkdCQTgpIHsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzQ1Njc4ODgsIDB4MTIzNDU2NzgsIDB4 MzQ1Njc4ODgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEyMzQ1Njc4LCAweDM0 NTY3ODg4LCAweDEyMzQ1Njc4fTsKKyAjaWYgZGVmaW5lZChBUkNIX0NQVV9CSUdfRU5ESUFOKQor LSAgdWludDMyX3QgZXhwZWN0ZWREYXRhWzldID0gezB4NTYzNDEyNzgsIDB4Nzg1NjM0ODgsIDB4 NTYzNDEyNzgsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ODU2MzQ4OCwgMHg1 NjM0MTI3OCwgMHg3ODU2MzQ4OCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU2 MzQxMjc4LCAweDc4NTYzNDg4LCAweDU2MzQxMjc4fTsKKysgIHVpbnQzMl90IGV4cGVjdGVkX2Rh dGFbOV0gPSB7MHg1NjM0MTI3OCwgMHg3ODU2MzQ4OCwgMHg1NjM0MTI3OCwKKysJCQkgICAgICAg MHg3ODU2MzQ4OCwgMHg1NjM0MTI3OCwgMHg3ODU2MzQ4OCwKKysJCQkgICAgICAgMHg1NjM0MTI3 OCwgMHg3ODU2MzQ4OCwgMHg1NjM0MTI3OH07CisgI2Vsc2UKKyAgIHVpbnQzMl90IGV4cGVjdGVk X2RhdGFbOV0gPSB7MHgxMjc4NTYzNCwgMHgzNDg4Nzg1NiwgMHgxMjc4NTYzNCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgzNDg4Nzg1NiwgMHgxMjc4NTYzNCwgMHgzNDg4Nzg1 NiwKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxp bmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3JhcGhpY3MvZ3JhcGhpY3NfY29udGV4dF90ZXN0LmNjCisr KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2dyYXBoaWNzX2NvbnRleHRfdGVzdC5jYworQEAgLTUy LDcgKzUyLDcgQEAgbmFtZXNwYWNlIGJsaW5rIHsKKyAgIHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgZm9yIChpbnQg eSA9IG9wYXF1ZVJlY3QuWSgpOyB5IDwgb3BhcXVlUmVjdC5NYXhZKCk7ICsreSkgICAgIFwKKyAg ICAgICBmb3IgKGludCB4ID0gb3BhcXVlUmVjdC5YKCk7IHggPCBvcGFxdWVSZWN0Lk1heFgoKTsg Kyt4KSB7IFwKKy0gICAgICAgIGludCBhbHBoYSA9ICpiaXRtYXAuZ2V0QWRkcjMyKHgsIHkpID4+ IDI0OyAgICAgICAgICAgICAgIFwKKysgICAgICAgIGludCBhbHBoYSA9IFNrR2V0UGFja2VkQTMy KCpiaXRtYXAuZ2V0QWRkcjMyKHgsIHkpKTsJIFwKKyAgICAgICAgIEVYUEVDVF9FUSgyNTUsIGFs cGhhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICB9ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg IH0KK0BAIC02MSwxMiArNjEsMTYgQEAgbmFtZXNwYWNlIGJsaW5rIHsKKyAgIHsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg Zm9yIChpbnQgeSA9IDA7IHkgPCBiaXRtYXAuaGVpZ2h0KCk7ICsreSkgICAgICAgICAgICAgICAg IFwKKyAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGJpdG1hcC53aWR0aCgpOyArK3gpIHsgICAg ICAgICAgICAgIFwKKy0gICAgICAgIGludCBhbHBoYSA9ICpiaXRtYXAuZ2V0QWRkcjMyKHgsIHkp ID4+IDI0OyAgICAgICAgICAgIFwKKysgICAgICAgIGludCBhbHBoYSA9IFNrR2V0UGFja2VkQTMy KCpiaXRtYXAuZ2V0QWRkcjMyKHgsIHkpKTsgIFwKKyAgICAgICAgIGJvb2wgb3BhcXVlID0gb3Bh cXVlUmVjdC5Db250YWlucyh4LCB5KTsgICAgICAgICAgICAgIFwKKyAgICAgICAgIEVYUEVDVF9F UShvcGFxdWUsIGFscGhhID09IDI1NSk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICB9 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgIH0KKyAKKytzdGF0aWMgaW5saW5lIHVpbnQzMl90IFBhY2tBUkdCMzIodWludDMyX3QgYXJn YikgeworKyAgcmV0dXJuIFNrUGFja0FSR0IzMk5vQ2hlY2soYXJnYj4+MjQsIChhcmdiPDw4KT4+ MjQsIChhcmdiPDwxNik+PjI0LCAoYXJnYjw8MjQpPj4yNCk7CisrfQorKworIFRFU1QoR3JhcGhp Y3NDb250ZXh0VGVzdCwgUmVjb3JkaW5nKSB7CisgICBTa0JpdG1hcCBiaXRtYXA7CisgICBiaXRt YXAuYWxsb2NOMzJQaXhlbHMoMTAwLCAxMDApOworQEAgLTE4NCwxMCArMTg4LDEwIEBAIGNsYXNz IEdyYXBoaWNzQ29udGV4dEhpZ2hDb25zdHJhc3RUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg eworIFRFU1RfRihHcmFwaGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVzdCwgTUFZQkVfTm9IaWdo Q29udHJhc3QpIHsKKyAgIERyYXdDb2xvcnNUb0NvbnRleHQoKTsKKyAKKy0gIEVYUEVDVF9FUSgw eGZmMDAwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOworLSAgRVhQRUNUX0VRKDB4ZmZm ZmZmZmYsICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7CistICBFWFBFQ1RfRVEoMHhmZmZmMDAw MCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKKy0gIEVYUEVDVF9FUSgweGZmODA4MDgwLCAq Yml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOworKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjAw MDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7CisrICBFWFBFQ1RfRVEoUGFja0FSR0Iz MigweGZmZmZmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKKysgIEVYUEVDVF9FUShQ YWNrQVJHQjMyKDB4ZmZmZjAwMDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOworKyAgRVhQ RUNUX0VRKFBhY2tBUkdCMzIoMHhmZjgwODA4MCksICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7 CisgfQorIAorIC8vIFRPRE8oY3JidWcuY29tLzg1MDc4Mik6IFJlZW5hYmxlIHRoaXMuCitAQCAt MjA1LDEwICsyMDksMTAgQEAgVEVTVF9GKEdyYXBoaWNzQ29udGV4dEhpZ2hDb25zdHJhc3RUZXN0 LCBNQVlCRV9IaWdoQ29udHJhc3RPZmYpIHsKKyAKKyAgIERyYXdDb2xvcnNUb0NvbnRleHQoKTsK KyAKKy0gIEVYUEVDVF9FUSgweGZmMDAwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwor LSAgRVhQRUNUX0VRKDB4ZmZmZmZmZmYsICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7CistICBF WFBFQ1RfRVEoMHhmZmZmMDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKKy0gIEVYUEVD VF9FUSgweGZmODA4MDgwLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOworKyAgRVhQRUNUX0VR KFBhY2tBUkdCMzIoMHhmZjAwMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7CisrICBF WFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmZmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDAp KTsKKysgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZjAwMDApLCAqYml0bWFwXy5nZXRBZGRy MzIoMiwgMCkpOworKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjgwODA4MCksICpiaXRtYXBf LmdldEFkZHIzMigzLCAwKSk7CisgfQorIAorIC8vIFNpbXBsZSBpbnZlcnQgZm9yIHRlc3Rpbmcu IEVhY2ggY29sb3IgY29tcG9uZW50IHxjfAorQEAgLTIyOCwxMCArMjMyLDEwIEBAIFRFU1RfRihH cmFwaGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVzdCwgTUFZQkVfU2ltcGxlSW52ZXJ0Rm9yVGVz dGluZykgeworIAorICAgRHJhd0NvbG9yc1RvQ29udGV4dCgpOworIAorLSAgRVhQRUNUX0VRKDB4 ZmZmZmZmZmYsICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7CistICBFWFBFQ1RfRVEoMHhmZjAw MDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKKy0gIEVYUEVDVF9FUSgweGZmMDBmZmZm LCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOworLSAgRVhQRUNUX0VRKDB4ZmY3ZjdmN2YsICpi aXRtYXBfLmdldEFkZHIzMigzLCAwKSk7CisrICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmZm ZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKKysgIEVYUEVDVF9FUShQYWNrQVJHQjMy KDB4ZmYwMDAwMDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOworKyAgRVhQRUNUX0VRKFBh Y2tBUkdCMzIoMHhmZjAwZmZmZiksICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7CisrICBFWFBF Q1RfRVEoUGFja0FSR0IzMigweGZmN2Y3ZjdmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsK KyB9CisgCisgLy8gSW52ZXJ0IGJyaWdodG5lc3MgKHdpdGggZ2FtbWEgY29ycmVjdGlvbikuCitA QCAtMjUwLDEwICsyNTQsMTAgQEAgVEVTVF9GKEdyYXBoaWNzQ29udGV4dEhpZ2hDb25zdHJhc3RU ZXN0LCBNQVlCRV9JbnZlcnRCcmlnaHRuZXNzKSB7CisgCisgICBEcmF3Q29sb3JzVG9Db250ZXh0 KCk7CisgCistICBFWFBFQ1RfRVEoMHhmZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDAp KTsKKy0gIEVYUEVDVF9FUSgweGZmMDAwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwor LSAgRVhQRUNUX0VRKDB4ZmYwMGZmZmYsICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7CistICBF WFBFQ1RfRVEoMHhmZmRkZGRkZCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKKysgIEVYUEVD VF9FUShQYWNrQVJHQjMyKDB4ZmZmZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwor KyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjAwMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigx LCAwKSk7CisrICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmMDBmZmZmKSwgKmJpdG1hcF8uZ2V0 QWRkcjMyKDIsIDApKTsKKysgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZkZGRkZGQpLCAqYml0 bWFwXy5nZXRBZGRyMzIoMywgMCkpOworIH0KKyAKKyAvLyBJbnZlcnQgbGlnaHRuZXNzIChpbiBI U0wgc3BhY2UpLgorQEAgLTI3MiwxMCArMjc2LDEwIEBAIFRFU1RfRihHcmFwaGljc0NvbnRleHRI aWdoQ29uc3RyYXN0VGVzdCwgTUFZQkVfSW52ZXJ0TGlnaHRuZXNzKSB7CisgCisgICBEcmF3Q29s b3JzVG9Db250ZXh0KCk7CisgCistICBFWFBFQ1RfRVEoMHhmZmZmZmZmZiwgKmJpdG1hcF8uZ2V0 QWRkcjMyKDAsIDApKTsKKy0gIEVYUEVDVF9FUSgweGZmMDAwMDAwLCAqYml0bWFwXy5nZXRBZGRy MzIoMSwgMCkpOworLSAgRVhQRUNUX0VRKDB4ZmZmZjAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigy LCAwKSk7CistICBFWFBFQ1RfRVEoMHhmZmRkZGRkZCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDAp KTsKKysgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRy MzIoMCwgMCkpOworKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjAwMDAwMCksICpiaXRtYXBf LmdldEFkZHIzMigxLCAwKSk7CisrICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmYwMDAwKSwg KmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKKysgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZk ZGRkZGQpLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOworIH0KKyAKKyAvLyBJbnZlcnQgbGln aHRuZXNzIHBsdXMgZ3JheXNjYWxlLgorQEAgLTI4OCwxMCArMjkyLDEwIEBAIFRFU1RfRihHcmFw aGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVzdCwgSW52ZXJ0TGlnaHRuZXNzUGx1c0dyYXlzY2Fs ZSkgeworIAorICAgRHJhd0NvbG9yc1RvQ29udGV4dCgpOworIAorLSAgRVhQRUNUX0VRKDB4ZmZm ZmZmZmYsICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7CistICBFWFBFQ1RfRVEoMHhmZjAwMDAw MCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKKy0gIEVYUEVDVF9FUSgweGZmZTJlMmUyLCAq Yml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOworLSAgRVhQRUNUX0VRKDB4ZmZkZGRkZGQsICpiaXRt YXBfLmdldEFkZHIzMigzLCAwKSk7CisrICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmZmZmZm KSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKKysgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4 ZmYwMDAwMDApLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOworKyAgRVhQRUNUX0VRKFBhY2tB UkdCMzIoMHhmZmUyZTJlMiksICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7CisrICBFWFBFQ1Rf RVEoUGFja0FSR0IzMigweGZmZGRkZGRkKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKKyB9 CisgCisgLy8gVE9ETyhjcmJ1Zy5jb20vODUwNzgyKTogUmVlbmFibGUgdGhpcy4KK0BAIC0zMDks MTAgKzMxMywxMCBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0SGlnaENvbnN0cmFzdFRlc3QsIE1B WUJFX0ludmVydExpZ2h0bmVzc1BsdXNDb250cmFzdCkgeworIAorICAgRHJhd0NvbG9yc1RvQ29u dGV4dCgpOworIAorLSAgRVhQRUNUX0VRKDB4ZmZmZmZmZmYsICpiaXRtYXBfLmdldEFkZHIzMigw LCAwKSk7CistICBFWFBFQ1RfRVEoMHhmZjAwMDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDAp KTsKKy0gIEVYUEVDVF9FUSgweGZmZmYwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwor LSAgRVhQRUNUX0VRKDB4ZmZlZWVlZWUsICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7CisrICBF WFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmZmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDAp KTsKKysgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMDAwMDApLCAqYml0bWFwXy5nZXRBZGRy MzIoMSwgMCkpOworKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmMDAwMCksICpiaXRtYXBf LmdldEFkZHIzMigyLCAwKSk7CisrICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZWVlZWVlKSwg KmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKKyB9CisgCisgfSAgLy8gbmFtZXNwYWNlIGJsaW5r CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5r L3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2hpZ2hjb250cmFzdC9oaWdoY29udHJhc3RfY2xh c3NpZmllci5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9ncmFwaGljcy9oaWdoY29udHJhc3QvaGlnaGNv bnRyYXN0X2NsYXNzaWZpZXIuY2MKK0BAIC0xMDYwLDU1ICsxMDYwLDQ3IEBAIHZvaWQgRGVxdWFu dGl6ZU1pbkZpcnN0KGNvbnN0IGludDMyX3QgcmFuaywKKyAKKyAvLyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIC8vIENPTlNUQU5UUworLS8vIE5vdGUgdGhhdCBmb3Igbm93LCBlbmRpYW5uZXNzIG9m IHRoZSB0YXJnZXQgbWFjaGluZSBuZWVkcyB0byBtYXRjaCB0aGF0IG9mCistLy8gdGhlIG9uZSB0 cmFpbmluZyB3YXMgcGVyZm9ybWVkIG9uLgorIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgY29u c3QgaW50MzJfdCBkbm5faGlkZGVubGF5ZXJfMF93ZWlnaHRzX3BhcnRfMF9zaGFwZVsyXSA9IHs0 LCAxMH07CisgY29uc3QgdW5pb24geworLSAgdWludDhfdCBieXRlc1sxNjBdOworICAgZmxvYXQg dmFsdWVzWzQwXTsKKyB9IGRubl9oaWRkZW5sYXllcl8wX3dlaWdodHNfcGFydF8wID0ge3sKKy0g ICAgMHhiYywgMHgyMiwgMHgwYSwgMHhiZiwgMHhiNCwgMHg0NiwgMHg4YywgMHgzZiwgMHhiYSwg MHgzMSwgMHgzNCwgMHhiZSwKKy0gICAgMHg0YywgMHg2NSwgMHhkYiwgMHhiZSwgMHhmMCwgMHg1 NCwgMHg1ZSwgMHhiZSwgMHhjMSwgMHg1ZCwgMHhiMywgMHgzZiwKKy0gICAgMHhmNCwgMHhlNiwg MHgxNSwgMHhiZiwgMHgwNSwgMHhjNiwgMHgzNCwgMHhiZiwgMHhjMCwgMHgzNywgMHg3ZSwgMHhi ZCwKKy0gICAgMHg2YywgMHgzNSwgMHgwYiwgMHhiZiwgMHhjYSwgMHg1MywgMHgyNiwgMHhiZiwg MHg1OCwgMHhiNCwgMHg4NywgMHgzZiwKKy0gICAgMHgzNywgMHhlZSwgMHgzOSwgMHhiZiwgMHhk YSwgMHhmYSwgMHhmOSwgMHhiZSwgMHg5NywgMHhjMSwgMHgwNiwgMHhiZiwKKy0gICAgMHhmOSwg MHg0ZSwgMHg4MSwgMHgzZiwgMHhiMiwgMHg0NCwgMHg4NSwgMHhiZiwgMHg3ZiwgMHg5OCwgMHg3 YywgMHgzZCwKKy0gICAgMHgxNSwgMHgyNiwgMHhiYywgMHhiZSwgMHg1YywgMHg0OCwgMHgwNSwg MHgzZiwgMHhjOCwgMHhhYSwgMHhhMSwgMHhiZCwKKy0gICAgMHgzNSwgMHhiMywgMHg0MywgMHhi ZSwgMHhlYiwgMHg0NiwgMHg5MSwgMHgzZiwgMHg4MCwgMHg3MSwgMHhlMywgMHgzYywKKy0gICAg MHhkMSwgMHg5OCwgMHg3OSwgMHgzZiwgMHgzYywgMHhkMCwgMHgwZCwgMHhiZiwgMHgxZSwgMHgw MiwgMHhkMywgMHgzZSwKKy0gICAgMHg1ZCwgMHg0YiwgMHhhMiwgMHhiZiwgMHg2OCwgMHhhYywg MHhhYSwgMHhiZCwgMHhmOCwgMHhlMSwgMHg3NSwgMHgzZSwKKy0gICAgMHg0YSwgMHg5YywgMHgy NywgMHhiZSwgMHhmOCwgMHhhZSwgMHhiMiwgMHhiZSwgMHg3ZiwgMHg5ZCwgMHg5MSwgMHgzZiwK Ky0gICAgMHgxZSwgMHg4YiwgMHhhOCwgMHhiZSwgMHgzNSwgMHg3ZSwgMHhiMiwgMHgzZiwgMHhi ZSwgMHg4YywgMHhkMywgMHhiZSwKKy0gICAgMHhmOSwgMHhjZCwgMHhiNSwgMHgzZiwgMHhhMSwg MHg1MCwgMHhhYSwgMHgzZiwgMHhlNCwgMHg2ZCwgMHhkZCwgMHhiZSwKKy0gICAgMHgwZCwgMHhj ZSwgMHhkMywgMHhiZSwKKysgICAgIC0wLjUzOTU5MjUwNDUwMTM0MywgICAxLjA5NTkwNzY4ODE0 MDg3LCAtMC4xNzU5NzA5NDE3ODE5OTgsIC0wLjQyODUwNzIwODgyNDE1OCwKKysgICAgIC0wLjIx NzEyMDg4NTg0ODk5OSwgICAxLjQwMTI5ODY0MjE1ODUxLCAgIC0wLjU4NTU1NTMxNTAxNzcsIC0w LjcwNjE0NjUzODI1NzU5OSwKKysgICAgLTAuMDYyMDY0ODg2MDkzMTM5NiwgLTAuNTQzNzgzOTAz MTIxOTQ4LCAtMC42NDk3MTYwMTk2MzA0MzIsICAgMS4wNjAxOTExNTQ0Nzk5OCwKKysgICAgIC0w LjcyNjI5MTEyMDA1MjMzOCwgLTAuNDg4MjQxOTcwNTM5MDkzLCAtMC41MjYzOTE0NDY1OTA0MjQs ICAgMS4wMTAyMjI1NTQyMDY4NSwKKysgICAgICAtMS4wNDExNTg5MTQ1NjYwNCwgMC4wNjE2Njg4 NjkxMDc5NjE3LCAtMC4zNjc0NzgwNDI4NDA5NTgsICAwLjUyMDYzNTM2NjQzOTgxOSwKKysgICAg LTAuMDc4OTM5MDIwNjMzNjk3NSwgIC0wLjE5MTExMzMwODA3MjA5LCAgIDEuMTM0OTc2NzQ0NjUx NzksIDAuMDI3NzY0MDgxOTU0OTU2MSwKKysgICAgICAwLjk3NDk4ODA0MzMwODI1OCwgLTAuNTUz OTU4NjU0NDAzNjg3LCAgMC40MTIxMjU1Mjc4NTg3MzQsICAgLTEuMjY3OTI0OTA0ODIzMywKKysg ICAgLTAuMDgzMzM2NjUxMzI1MjI1OCwgIDAuMjQwMTE5ODE0ODcyNzQyLCAtMC4xNjM2ODIxMzI5 NTkzNjYsICAtMC4zNDg5OTExNTU2MjQzOSwKKysgICAgICAgIDEuMTM3NjE4ODk5MzQ1NCwgLTAu MzI5MTg2Mzc5OTA5NTE1LCAgICAxLjM5NDQ3NjUzMjkzNjEsIC0wLjQxMzE4MzE1MjY3NTYyOSwK KysgICAgICAgMS40MjAzNDgyODY2Mjg3MiwgICAxLjMzMDU4NTU5ODk0NTYyLCAtMC40MzI0Nzkw MjM5MzM0MTEsIC0wLjQxMzY4MTQxNzcwMzYyOQorIH19OworIGNvbnN0IGludDMyX3QgZG5uX2hp ZGRlbmxheWVyXzBfYmlhc2VzX3BhcnRfMF9zaGFwZVsxXSA9IHsxMH07CisgY29uc3QgdW5pb24g eworLSAgdWludDhfdCBieXRlc1s0MF07CisgICBmbG9hdCB2YWx1ZXNbMTBdOworIH0gZG5uX2hp ZGRlbmxheWVyXzBfYmlhc2VzX3BhcnRfMCA9IHt7CistICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4YmYsIDB4NmEsIDB4NTMsIDB4M2UsIDB4ZDMsIDB4YzEsCistICAgIDB4ZDAsIDB4M2Us IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjYsIDB4ZDgsIDB4YzAsIDB4M2UsCistICAgIDB4 Y2EsIDB4ZTcsIDB4MzUsIDB4M2UsIDB4MjMsIDB4YTUsIDB4NDQsIDB4M2YsIDB4NjEsIDB4ZmQs CistICAgIDB4ZDIsIDB4M2UsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjYsIDB4ZTAsIDB4 NDMsIDB4M2MsCisrICAgICAgICAgICAgICAgICAgICAwLjAsICAwLjIwNjQ2MTg5MTUzMTk0NCwK KysgICAgICAwLjQwNzcyODc2MTQzNDU1NSwgICAgICAgICAgICAgICAgMC4wLAorKyAgICAgIDAu Mzc2NjUzMzczMjQxNDI1LCAgMC4xNzc2NDIwMTc2MDI5MjEsCisrICAgICAgIDAuNzY4MTQ0Nzg2 MzU3ODgsICAwLjQxMjA4OTM3NzY0MTY3OCwKKysgICAgICAgICAgICAgICAgICAgIDAuMCwgMC4w MTE5NTU0MzA3MzExNzczCisgfX07CisgY29uc3QgaW50MzJfdCBkbm5fbG9naXRzX2JpYXNlc19w YXJ0XzBfc2hhcGVbMV0gPSB7MX07CisgY29uc3QgdW5pb24geworLSAgdWludDhfdCBieXRlc1s0 XTsKKyAgIGZsb2F0IHZhbHVlc1sxXTsKKyB9IGRubl9sb2dpdHNfYmlhc2VzX3BhcnRfMCA9IHt7 CistICAgIDB4NzUsIDB4Y2EsIDB4ZDcsIDB4YmUsCisrICAgIC0wLjQyMTQ2NjQ5OTU2NzAzMgor IH19OworIGNvbnN0IGludDMyX3QgZG5uX2xvZ2l0c193ZWlnaHRzX3BhcnRfMF9zaGFwZVsyXSA9 IHsxMCwgMX07CisgY29uc3QgdW5pb24geworLSAgdWludDhfdCBieXRlc1s0MF07CisgICBmbG9h dCB2YWx1ZXNbMTBdOworIH0gZG5uX2xvZ2l0c193ZWlnaHRzX3BhcnRfMCA9IHt7CistICAgIDB4 MTMsIDB4MTIsIDB4MzksIDB4M2YsIDB4ZjMsIDB4YTUsIDB4YzIsIDB4YmYsIDB4ODEsIDB4N2Ys CistICAgIDB4YmUsIDB4M2YsIDB4ZjgsIDB4MTcsIDB4MjYsIDB4M2UsIDB4YTQsIDB4MTksIDB4 YTYsIDB4M2YsCistICAgIDB4ZjAsIDB4YzksIDB4YjcsIDB4YmYsIDB4NmEsIDB4OTksIDB4ZDIs IDB4M2YsIDB4OGEsIDB4N2QsCistICAgIDB4ZTksIDB4M2YsIDB4ODMsIDB4OWEsIDB4M2EsIDB4 YmYsIDB4ZjEsIDB4NmMsIDB4MDgsIDB4M2UsCisrICAgICAgMC43MjI5MzIwNDA2OTEzNzYsICAt MS41MjA2ODkzNjgyNDc5OSwKKysgICAgICAgMS40ODgyNjYxMTA0MjAyMywgIDAuMTYyMjAwODA4 NTI1MDg1LAorKyAgICAgICAxLjI5NzY1NzQ4OTc3NjYxLCAgLTEuNDM1ODUwMTQzNDMyNjIsCisr ICAgICAgIDEuNjQ1MzA2ODI1NjM3ODIsICAgMS44MjQxNDM2NDgxNDc1OCwKKysgICAgIC0wLjcy ODkyMDE2MTcyNDA5MSwgIDAuMTMzMjI4MDc4NDg0NTM1CisgfX07CisgCisgfSAgLy8gYW5vbnlt b3VzIG5hbWVzcGFjZQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvYm1wX2lt YWdlX3JlYWRlci5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9ibXBfaW1h Z2VfcmVhZGVyLmgKK0BAIC0zNyw2ICszNyw3IEBACisgI2luY2x1ZGUgInRoaXJkX3BhcnR5L2Js aW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9hbGxvY2F0b3IuaCIKKyAjaW5jbHVkZSAidGhpcmRf cGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2NwdS5oIgorICNpbmNsdWRlICJ0aGly ZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvbm9uY29weWFibGUuaCIKKysjaW5j bHVkZSAiYmFzZS9zeXNfYnl0ZW9yZGVyLmgiCisgCisgbmFtZXNwYWNlIGJsaW5rIHsKKyAKK0BA IC01MCwxMSArNTEsMTEgQEAgY2xhc3MgUExBVEZPUk1fRVhQT1JUIEJNUEltYWdlUmVhZGVyIGZp bmFsIHsKKyAgIC8vIFJlYWQgYSB2YWx1ZSBmcm9tIHxidWZmZXJ8LCBjb252ZXJ0aW5nIHRvIGFu IGludCBhc3N1bWluZyBsaXR0bGUKKyAgIC8vIGVuZGlhbm5lc3MKKyAgIHN0YXRpYyBpbmxpbmUg dWludDE2X3QgUmVhZFVpbnQxNihjb25zdCBjaGFyKiBidWZmZXIpIHsKKy0gICAgcmV0dXJuICpy ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oYnVmZmVyKTsKKysgICAgcmV0dXJuIGJh c2U6OkJ5dGVTd2FwVG9MRTE2KCpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oYnVm ZmVyKSk7CisgICB9CisgCisgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IFJlYWRVaW50MzIoY29u c3QgY2hhciogYnVmZmVyKSB7CistICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1 aW50MzJfdCo+KGJ1ZmZlcik7CisrICAgIHJldHVybiBiYXNlOjpCeXRlU3dhcFRvTEUzMigqcmVp bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGJ1ZmZlcikpOworICAgfQorIAorICAgLy8g fHBhcmVudHwgaXMgdGhlIGRlY29kZXIgdGhhdCBvd25zIHVzLgorLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9p bWFnZS1kZWNvZGVycy9qcGVnL2pwZWdfaW1hZ2VfZGVjb2Rlci5jYworKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9y bS9pbWFnZS1kZWNvZGVycy9qcGVnL2pwZWdfaW1hZ2VfZGVjb2Rlci5jYworQEAgLTQ5LDIzICs0 OSwzMCBAQCBleHRlcm4gIkMiIHsKKyAjaW5jbHVkZSA8c2V0am1wLmg+CisgfQorIAorLSNpZiBk ZWZpbmVkKEFSQ0hfQ1BVX0JJR19FTkRJQU4pCistI2Vycm9yIEJsaW5rIGFzc3VtZXMgYSBsaXR0 bGUtZW5kaWFuIHRhcmdldC4KKy0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZChKQ1NfQUxQSEFfRVhU RU5TSU9OUykKKyAjZGVmaW5lIFRVUkJPX0pQRUdfUkdCX1NXSVpaTEUKKy0jaWYgU0tfQjMyX1NI SUZUICAvLyBPdXRwdXQgbGl0dGxlLWVuZGlhbiBSR0JBIHBpeGVscyAoQW5kcm9pZCkuCisrI2lm IFNLX1BNQ09MT1JfQllURV9PUkRFUihSLCBHLCBCLCBBKQorIGlubGluZSBKX0NPTE9SX1NQQUNF IHJnYk91dHB1dENvbG9yU3BhY2UoKSB7CisgICByZXR1cm4gSkNTX0VYVF9SR0JBOworIH0KKy0j ZWxzZSAgLy8gT3V0cHV0IGxpdHRsZS1lbmRpYW4gQkdSQSBwaXhlbHMuCisrI2VsaWYgU0tfUE1D T0xPUl9CWVRFX09SREVSKEIsIEcsIFIsIEEpCisgaW5saW5lIEpfQ09MT1JfU1BBQ0UgcmdiT3V0 cHV0Q29sb3JTcGFjZSgpIHsKKyAgIHJldHVybiBKQ1NfRVhUX0JHUkE7CisgfQorKyNlbGlmIFNL X1BNQ09MT1JfQllURV9PUkRFUihBLCBSLCBHLCBCKQorK2lubGluZSBKX0NPTE9SX1NQQUNFIHJn Yk91dHB1dENvbG9yU3BhY2UoKSB7CisrICByZXR1cm4gSkNTX0VYVF9BUkdCOworK30KKysjZWxp ZiBTS19QTUNPTE9SX0JZVEVfT1JERVIoQSwgQiwgRywgUikKKytpbmxpbmUgSl9DT0xPUl9TUEFD RSByZ2JPdXRwdXRDb2xvclNwYWNlKCkgeworKyAgcmV0dXJuIEpDU19FWFRfQUJHUjsKKyt9Cisr I2Vsc2UKKysjZXJyb3IgQ29tcG9uZW50IG9yZGVyIG5vdCBzdXBwb3J0ZWQgYnkgbGlianBlZ190 dXJibworICNlbmRpZgorIGlubGluZSBib29sIHR1cmJvU3dpenpsZWQoSl9DT0xPUl9TUEFDRSBj b2xvclNwYWNlKSB7CistICByZXR1cm4gY29sb3JTcGFjZSA9PSBKQ1NfRVhUX1JHQkEgfHwgY29s b3JTcGFjZSA9PSBKQ1NfRVhUX0JHUkE7CisrICByZXR1cm4gY29sb3JTcGFjZSA9PSBKQ1NfRVhU X1JHQkEgfHwgY29sb3JTcGFjZSA9PSBKQ1NfRVhUX0JHUkEgfHwKKysgICAgY29sb3JTcGFjZSA9 PSBKQ1NfRVhUX0FCR1IgfHwgY29sb3JTcGFjZSA9PSBKQ1NfRVhUX0FSR0I7CisgfQorICNlbHNl CisgaW5saW5lIEpfQ09MT1JfU1BBQ0UgcmdiT3V0cHV0Q29sb3JTcGFjZSgpIHsKKy0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC93ZWJwX2ltYWdlX2RlY29kZXIuY2MKKysrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVy ZXIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC93ZWJwX2ltYWdlX2RlY29kZXIuY2MKK0BA IC0zMiwxOCArMzIsMjAgQEAKKyAjaW5jbHVkZSAidGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv cGxhdGZvcm0vaGlzdG9ncmFtLmgiCisgI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5jbHVk ZS9jb3JlL1NrRGF0YS5oIgorIAorLSNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0JJR19FTkRJQU4pCist I2Vycm9yIEJsaW5rIGFzc3VtZXMgYSBsaXR0bGUtZW5kaWFuIHRhcmdldC4KKy0jZW5kaWYKKy0K Ky0jaWYgU0tfQjMyX1NISUZUICAvLyBPdXRwdXQgbGl0dGxlLWVuZGlhbiBSR0JBIHBpeGVscyAo QW5kcm9pZCkuCisrI2lmIFNLX1BNQ09MT1JfQllURV9PUkRFUihSLCBHLCBCLCBBKQorIGlubGlu ZSBXRUJQX0NTUF9NT0RFIG91dHB1dE1vZGUoYm9vbCBoYXNBbHBoYSkgeworICAgcmV0dXJuIGhh c0FscGhhID8gTU9ERV9yZ2JBIDogTU9ERV9SR0JBOworIH0KKy0jZWxzZSAgLy8gT3V0cHV0IGxp dHRsZS1lbmRpYW4gQkdSQSBwaXhlbHMuCisrI2VsaWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKEIs IEcsIFIsIEEpCisgaW5saW5lIFdFQlBfQ1NQX01PREUgb3V0cHV0TW9kZShib29sIGhhc0FscGhh KSB7CisgICByZXR1cm4gaGFzQWxwaGEgPyBNT0RFX2JnckEgOiBNT0RFX0JHUkE7CisgfQorKyNl bGlmIFNLX1BNQ09MT1JfQllURV9PUkRFUihBLCBSLCBHLCBCKQorK2lubGluZSBXRUJQX0NTUF9N T0RFIG91dHB1dE1vZGUoYm9vbCBoYXNBbHBoYSkgeworKyAgcmV0dXJuIGhhc0FscGhhID8gTU9E RV9BcmdiIDogTU9ERV9BUkdCOworK30KKysjZWxzZQorKyNlcnJvciBDb21wb25lbnQgb3JkZXIg bm90IHN1cHBvcnRlZCBieSBsaWJ3ZWJwCisgI2VuZGlmCisgCisgbmFtZXNwYWNlIHsKKy0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3Ny Yy9jcnlwdG8vYXNuMS9hX2ludC5jCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2FzbjEvYV9pbnQuYworQEAgLTM2 OSw3ICszNjksOSBAQCBpbnQgQVNOMV9JTlRFR0VSX3NldF91aW50NjQoQVNOMV9JTlRFR0VSICpv dXQsIHVpbnQ2NF90IHYpCisgCisgICAgIE9QRU5TU0xfZnJlZShvdXQtPmRhdGEpOworICAgICBv dXQtPmRhdGEgPSBuZXdkYXRhOworKyNpZm5kZWYgT1BFTlNTTF9CSUdFTkRJQU4KKyAgICAgdiA9 IENSWVBUT19ic3dhcDgodik7CisrI2VuZGlmCisgICAgIG1lbWNweShvdXQtPmRhdGEsICZ2LCBz aXplb2YodikpOworIAorICAgICBvdXQtPnR5cGUgPSBWX0FTTjFfSU5URUdFUjsKKy0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9j cnlwdG8vY2hhY2hhL2NoYWNoYS5jCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2NoYWNoYS9jaGFjaGEuYworQEAg LTI5LDYgKzI5LDE0IEBACisgICAoKCh1aW50MzJfdCkoKHApWzBdKSkgfCAoKHVpbnQzMl90KSgo cClbMV0pIDw8IDgpIHwgXAorICAgICgodWludDMyX3QpKChwKVsyXSkgPDwgMTYpIHwgKCh1aW50 MzJfdCkoKHApWzNdKSA8PCAyNCkpCisgCisrI2RlZmluZSBVMzJUTzhfTElUVExFKHAsIHYpICAg IFwKKysgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAocClbMF0gPSAodiA+ PiAwKSAmIDB4ZmY7ICBcCisrICAgIChwKVsxXSA9ICh2ID4+IDgpICYgMHhmZjsgIFwKKysgICAg KHApWzJdID0gKHYgPj4gMTYpICYgMHhmZjsgXAorKyAgICAocClbM10gPSAodiA+PiAyNCkgJiAw eGZmOyBcCisrICB9CisrCisgLy8gc2lnbWEgY29udGFpbnMgdGhlIENoYUNoYSBjb25zdGFudHMs IHdoaWNoIGhhcHBlbiB0byBiZSBhbiBBU0NJSSBzdHJpbmcuCisgc3RhdGljIGNvbnN0IHVpbnQ4 X3Qgc2lnbWFbMTZdID0geyAnZScsICd4JywgJ3AnLCAnYScsICduJywgJ2QnLCAnICcsICczJywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyJywgJy0nLCAnYicsICd5Jywg J3QnLCAnZScsICcgJywgJ2snIH07CitAQCAtNDUsOSArNTMsMjcgQEAgc3RhdGljIGNvbnN0IHVp bnQ4X3Qgc2lnbWFbMTZdID0geyAnZScsICd4JywgJ3AnLCAnYScsICduJywgJ2QnLCAnICcsICcz JywKKyB2b2lkIENSWVBUT19oY2hhY2hhMjAodWludDhfdCBvdXRbMzJdLCBjb25zdCB1aW50OF90 IGtleVszMl0sCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qgbm9uY2VbMTZd KSB7CisgICB1aW50MzJfdCB4WzE2XTsKKy0gIE9QRU5TU0xfbWVtY3B5KHgsIHNpZ21hLCBzaXpl b2Yoc2lnbWEpKTsKKy0gIE9QRU5TU0xfbWVtY3B5KCZ4WzRdLCBrZXksIDMyKTsKKy0gIE9QRU5T U0xfbWVtY3B5KCZ4WzEyXSwgbm9uY2UsIDE2KTsKKysgIGludCBpOworKworKyAgeFswXSA9IFU4 VE8zMl9MSVRUTEUoc2lnbWEgKyAwKTsKKysgIHhbMV0gPSBVOFRPMzJfTElUVExFKHNpZ21hICsg NCk7CisrICB4WzJdID0gVThUTzMyX0xJVFRMRShzaWdtYSArIDgpOworKyAgeFszXSA9IFU4VE8z Ml9MSVRUTEUoc2lnbWEgKyAxMik7CisrCisrICB4WzRdID0gVThUTzMyX0xJVFRMRShrZXkgKyAw KTsKKysgIHhbNV0gPSBVOFRPMzJfTElUVExFKGtleSArIDQpOworKyAgeFs2XSA9IFU4VE8zMl9M SVRUTEUoa2V5ICsgOCk7CisrICB4WzddID0gVThUTzMyX0xJVFRMRShrZXkgKyAxMik7CisrCisr ICB4WzhdID0gVThUTzMyX0xJVFRMRShrZXkgKyAxNik7CisrICB4WzldID0gVThUTzMyX0xJVFRM RShrZXkgKyAyMCk7CisrICB4WzEwXSA9IFU4VE8zMl9MSVRUTEUoa2V5ICsgMjQpOworKyAgeFsx MV0gPSBVOFRPMzJfTElUVExFKGtleSArIDI4KTsKKysKKysgIHhbMTJdID0gVThUTzMyX0xJVFRM RShub25jZSArIDApOworKyAgeFsxM10gPSBVOFRPMzJfTElUVExFKG5vbmNlICsgNCk7CisrICB4 WzE0XSA9IFU4VE8zMl9MSVRUTEUobm9uY2UgKyA4KTsKKysgIHhbMTVdID0gVThUTzMyX0xJVFRM RShub25jZSArIDEyKTsKKyAKKyAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjA7IGkgKz0gMikg eworICAgICBRVUFSVEVSUk9VTkQoMCwgNCwgOCwgMTIpCitAQCAtNjAsOCArODYsMTAgQEAgdm9p ZCBDUllQVE9faGNoYWNoYTIwKHVpbnQ4X3Qgb3V0WzMyXSwgY29uc3QgdWludDhfdCBrZXlbMzJd LAorICAgICBRVUFSVEVSUk9VTkQoMywgNCwgOSwgMTQpCisgICB9CisgCistICBPUEVOU1NMX21l bWNweShvdXQsICZ4WzBdLCBzaXplb2YodWludDMyX3QpICogNCk7CistICBPUEVOU1NMX21lbWNw eSgmb3V0WzE2XSwgJnhbMTJdLCBzaXplb2YodWludDMyX3QpICogNCk7CisrICBmb3IgKGkgPSAw OyBpIDwgNDsgKytpKSB7CisrICAgIFUzMlRPOF9MSVRUTEUob3V0ICsgNCAqIGksIHhbaV0pOwor KyAgICBVMzJUTzhfTElUVExFKCZvdXRbMTZdICsgNCAqIGksIHhbMTIraV0pOworKyAgfQorIH0K KyAKKyAjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19BU00pICYmICAgICAgICAgICAgICAgICAgICAg ICAgIFwKK0BAIC0xMDUsMTQgKzEzMyw2IEBAIHZvaWQgQ1JZUFRPX2NoYWNoYV8yMCh1aW50OF90 ICpvdXQsIGNvbnN0IHVpbnQ4X3QgKmluLCBzaXplX3QgaW5fbGVuLAorIAorICNlbHNlCisgCist I2RlZmluZSBVMzJUTzhfTElUVExFKHAsIHYpICAgIFwKKy0gIHsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorLSAgICAocClbMF0gPSAodiA+PiAwKSAmIDB4ZmY7ICBcCistICAgIChwKVsx XSA9ICh2ID4+IDgpICYgMHhmZjsgIFwKKy0gICAgKHApWzJdID0gKHYgPj4gMTYpICYgMHhmZjsg XAorLSAgICAocClbM10gPSAodiA+PiAyNCkgJiAweGZmOyBcCistICB9CistCisgLy8gY2hhY2hh X2NvcmUgcGVyZm9ybXMgMjAgcm91bmRzIG9mIENoYUNoYSBvbiB0aGUgaW5wdXQgd29yZHMgaW4K KyAvLyB8aW5wdXR8IGFuZCB3cml0ZXMgdGhlIDY0IG91dHB1dCBieXRlcyB0byB8b3V0cHV0fC4K KyBzdGF0aWMgdm9pZCBjaGFjaGFfY29yZSh1aW50OF90IG91dHB1dFs2NF0sIGNvbnN0IHVpbnQz Ml90IGlucHV0WzE2XSkgeworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9jaXBoZXJfZXh0cmEvZV9hZXNnY21zaXYu YworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jp bmdzc2wvc3JjL2NyeXB0by9jaXBoZXJfZXh0cmEvZV9hZXNnY21zaXYuYworQEAgLTYyNSw3ICs2 MjUsMTEgQEAgc3RhdGljIHZvaWQgZ2NtX3Npdl9jcnlwdCh1aW50OF90ICpvdXQsIGNvbnN0IHVp bnQ4X3QgKmluLCBzaXplX3QgaW5fbGVuLAorICAgZm9yIChzaXplX3QgZG9uZSA9IDA7IGRvbmUg PCBpbl9sZW47KSB7CisgICAgIHVpbnQ4X3Qga2V5c3RyZWFtW0FFU19CTE9DS19TSVpFXTsKKyAg ICAgZW5jX2Jsb2NrKGNvdW50ZXIuYywga2V5c3RyZWFtLCBrZXkpOworKyNpZmRlZiBPUEVOU1NM X0JJR0VORElBTgorKyAgICBjb3VudGVyLndbMF0gPSBDUllQVE9fYnN3YXA0KENSWVBUT19ic3dh cDQoY291bnRlci53WzBdKSArIDEpOworKyNlbHNlCisgICAgIGNvdW50ZXIud1swXSsrOworKyNl bmRpZgorIAorICAgICBzaXplX3QgdG9kbyA9IEFFU19CTE9DS19TSVpFOworICAgICBpZiAoaW5f bGVuIC0gZG9uZSA8IHRvZG8pIHsKK0BAIC02NzMsOCArNjc3LDEzIEBAIHN0YXRpYyB2b2lkIGdj bV9zaXZfcG9seXZhbCgKKyAgICAgfSBiaXRsZW5zOworICAgfSBsZW5ndGhfYmxvY2s7CisgCisr I2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCisrICBsZW5ndGhfYmxvY2suYml0bGVucy5hZCA9IENS WVBUT19ic3dhcDgoYWRfbGVuICogOCk7CisrICBsZW5ndGhfYmxvY2suYml0bGVucy5pbiA9IENS WVBUT19ic3dhcDgoaW5fbGVuICogOCk7CisrI2Vsc2UKKyAgIGxlbmd0aF9ibG9jay5iaXRsZW5z LmFkID0gYWRfbGVuICogODsKKyAgIGxlbmd0aF9ibG9jay5iaXRsZW5zLmluID0gaW5fbGVuICog ODsKKysjZW5kaWYKKyAgIENSWVBUT19QT0xZVkFMX3VwZGF0ZV9ibG9ja3MoJnBvbHl2YWxfY3R4 LCBsZW5ndGhfYmxvY2suYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m KGxlbmd0aF9ibG9jaykpOworIAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9jb21waWxlcl90ZXN0LmNjCisrKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9z cmMvY3J5cHRvL2NvbXBpbGVyX3Rlc3QuY2MKK0BAIC00MCw5ICs0MCwxMyBAQCBzdGF0aWMgdm9p ZCBDaGVja1JlcHJlc2VudGF0aW9uKFQgdmFsdWUpIHsKKyAgIFVuc2lnbmVkVCB2YWx1ZV91ID0g c3RhdGljX2Nhc3Q8VW5zaWduZWRUPih2YWx1ZSk7CisgICBFWFBFQ1RfRVEoc2l6ZW9mKFVuc2ln bmVkVCksIHNpemVvZihUKSk7CisgCistICAvLyBJbnRlZ2VycyBtdXN0IGJlIGxpdHRsZS1lbmRp YW4uCisrICAvLyBJbnRlZ2VycyBtdXN0IGJlIGVpdGhlciBiaWctZW5kaWFuIG9yIGxpdHRsZS1l bmRpYW4uCisgICB1aW50OF90IGV4cGVjdGVkW3NpemVvZihVbnNpZ25lZFQpXTsKKysjaWZkZWYg T1BFTlNTTF9CSUdFTkRJQU4KKysgIGZvciAoc2l6ZV90IGkgPSBzaXplb2YoVW5zaWduZWRUKTsg aS0tID4gMDsgKSB7CisrI2Vsc2UKKyAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKFVu c2lnbmVkVCk7IGkrKykgeworKyNlbmRpZgorICAgICBleHBlY3RlZFtpXSA9IHN0YXRpY19jYXN0 PHVpbnQ4X3Q+KHZhbHVlX3UpOworICAgICAvLyBEaXZpZGUgaW5zdGVhZCBvZiByaWdodC1zaGlm dCB0byBhcHBlYXNlIGNvbXBpbGVycyB0aGF0IHdhcm4gaWYgfFR8IGlzIGEKKyAgICAgLy8gY2hh ci4gVGhlIGV4cGxpY2l0IGNhc3QgaXMgYWxzbyBuZWVkZWQgdG8gYXBwZWFzZSBNU1ZDIGlmIGlu dGVnZXIKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv Ym9yaW5nc3NsL3NyYy9jcnlwdG8vY3VydmUyNTUxOS9zcGFrZTI1NTE5LmMKKysrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlw dG8vY3VydmUyNTUxOS9zcGFrZTI1NTE5LmMKK0BAIC0zMzksOCArMzM5LDE3IEBAIHN0YXRpYyB2 b2lkIHNjYWxhcl9kb3VibGUoc2NhbGFyICpzKSB7CisgICB1aW50MzJfdCBjYXJyeSA9IDA7Cisg CisgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDg7IGkrKykgeworLSAgICBjb25zdCB1aW50MzJf dCBjYXJyeV9vdXQgPSBzLT53b3Jkc1tpXSA+PiAzMTsKKy0gICAgcy0+d29yZHNbaV0gPSAocy0+ d29yZHNbaV0gPDwgMSkgfCBjYXJyeTsKKysjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KKysgICAg Y29uc3QgdWludDMyX3Qgc2kgPSBDUllQVE9fYnN3YXA0KHMtPndvcmRzW2ldKTsKKysjZWxzZQor KyAgICBjb25zdCB1aW50MzJfdCBzaSA9IHMtPndvcmRzW2ldOworKyNlbmRpZgorKyAgICBjb25z dCB1aW50MzJfdCBjYXJyeV9vdXQgPSBzaSA+PiAzMTsKKysjaWZkZWYgT1BFTlNTTF9CSUdFTkRJ QU4KKysgICAgcy0+d29yZHNbaV0gPSBDUllQVE9fYnN3YXA0KChzaSA8PCAxKSB8IGNhcnJ5KTsK KysjZWxzZQorKyAgICBzLT53b3Jkc1tpXSA9IChzaSA8PCAxKSB8IGNhcnJ5OworKyNlbmRpZgor ICAgICBjYXJyeSA9IGNhcnJ5X291dDsKKyAgIH0KKyB9CitAQCAtMzUwLDggKzM1OSwxMyBAQCBz dGF0aWMgdm9pZCBzY2FsYXJfYWRkKHNjYWxhciAqZGVzdCwgY29uc3Qgc2NhbGFyICpzcmMpIHsK KyAgIHVpbnQzMl90IGNhcnJ5ID0gMDsKKyAKKyAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgODsg aSsrKSB7CisrI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCisrICAgIHVpbnQ2NF90IHRtcCA9ICgo dWludDY0X3QpQ1JZUFRPX2Jzd2FwNChkZXN0LT53b3Jkc1tpXSkgKyBDUllQVE9fYnN3YXA0KHNy Yy0+d29yZHNbaV0pKSArIGNhcnJ5OworKyAgICBkZXN0LT53b3Jkc1tpXSA9IENSWVBUT19ic3dh cDQoKHVpbnQzMl90KXRtcCk7CisrI2Vsc2UKKyAgICAgdWludDY0X3QgdG1wID0gKCh1aW50NjRf dClkZXN0LT53b3Jkc1tpXSArIHNyYy0+d29yZHNbaV0pICsgY2Fycnk7CisgICAgIGRlc3QtPndv cmRzW2ldID0gKHVpbnQzMl90KXRtcDsKKysjZW5kaWYKKyAgICAgY2FycnkgPSAodWludDMyX3Qp KHRtcCA+PiAzMik7CisgICB9CisgfQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9ldnAvc2NyeXB0LmMKKysrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3Ny Yy9jcnlwdG8vZXZwL3NjcnlwdC5jCitAQCAtMTk2LDEwICsxOTYsMjggQEAgaW50IEVWUF9QQkVf c2NyeXB0KGNvbnN0IGNoYXIgKnBhc3N3b3JkLCBzaXplX3QgcGFzc3dvcmRfbGVuLAorICAgICBn b3RvIGVycjsKKyAgIH0KKyAKKysjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KKysgIHVpbnQzMl90 ICpCMzIgPSBCLT53b3JkczsKKysgIHNpemVfdCBCX3dvcmRzID0gQl9ieXRlcyA+PiAyOworKyAg ZG8geworKyAgICAqQjMyID0gQ1JZUFRPX2Jzd2FwNCgqQjMyKTsKKysgICAgQjMyKys7CisrICB9 IHdoaWxlKC0tQl93b3Jkcyk7CisrI2VuZGlmCisrCisgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBp IDwgcDsgaSsrKSB7CisgICAgIHNjcnlwdFJPTWl4KEIgKyAyICogciAqIGksIHIsIE4sIFQsIFYp OworICAgfQorIAorKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgorKyAgQjMyID0gQi0+d29yZHM7 CisrICBCX3dvcmRzID0gQl9ieXRlcyA+PiAyOworKyAgZG8geworKyAgICAqQjMyID0gQ1JZUFRP X2Jzd2FwNCgqQjMyKTsKKysgICAgQjMyKys7CisrICB9IHdoaWxlKC0tQl93b3Jkcyk7CisrI2Vu ZGlmCisrCisgICBpZiAoIVBLQ1M1X1BCS0RGMl9ITUFDKHBhc3N3b3JkLCBwYXNzd29yZF9sZW4s IChjb25zdCB1aW50OF90ICopQiwgQl9ieXRlcywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgRVZQX3NoYTI1NigpLCBrZXlfbGVuLCBvdXRfa2V5KSkgeworICAgICBnb3RvIGVycjsKKy0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3Ns L3NyYy9jcnlwdG8vZmlwc21vZHVsZS9ibi9ieXRlcy5jCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1 bGUvYm4vYnl0ZXMuYworQEAgLTEzNiw5ICsxMzYsMTMgQEAgQklHTlVNICpCTl9sZTJibihjb25z dCB1aW50OF90ICppbiwgc2l6ZV90IGxlbiwgQklHTlVNICpyZXQpIHsKKyAgIC8vIE1ha2Ugc3Vy ZSB0aGUgdG9wIGJ5dGVzIHdpbGwgYmUgemVyb2VkLgorICAgcmV0LT5kW251bV93b3JkcyAtIDFd ID0gMDsKKyAKKy0gIC8vIFdlIG9ubHkgc3VwcG9ydCBsaXR0bGUtZW5kaWFuIHBsYXRmb3Jtcywg c28gd2UgY2FuIHNpbXBseSBtZW1jcHkgdGhlCistICAvLyBpbnRlcm5hbCByZXByZXNlbnRhdGlv bi4KKysjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KKysgIHVpbnQ4X3QgKm91dCA9ICh1aW50OF90 ICopcmV0LT5kOworKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW47IGkrKykKKysgICAgb3V0 W2kgXiAoQk5fQllURVMtMSldID0gaW5baV07CisrI2Vsc2UKKyAgIE9QRU5TU0xfbWVtY3B5KHJl dC0+ZCwgaW4sIGxlbik7CisrI2VuZGlmCisgICByZXR1cm4gcmV0OworIH0KKyAKK0BAIC0xNTcs NyArMTYxLDExIEBAIHNpemVfdCBCTl9ibjJiaW4oY29uc3QgQklHTlVNICppbiwgdWludDhfdCAq b3V0KSB7Cisgc3RhdGljIGludCBmaXRzX2luX2J5dGVzKGNvbnN0IHVpbnQ4X3QgKmJ5dGVzLCBz aXplX3QgbnVtX2J5dGVzLCBzaXplX3QgbGVuKSB7CisgICB1aW50OF90IG1hc2sgPSAwOworICAg Zm9yIChzaXplX3QgaSA9IGxlbjsgaSA8IG51bV9ieXRlczsgaSsrKSB7CisrI2lmZGVmIE9QRU5T U0xfQklHRU5ESUFOCisrICAgIG1hc2sgfD0gYnl0ZXNbaSBeIChCTl9CWVRFUy0xKV07CisrI2Vs c2UKKyAgICAgbWFzayB8PSBieXRlc1tpXTsKKysjZW5kaWYKKyAgIH0KKyAgIHJldHVybiBtYXNr ID09IDA7CisgfQorQEAgLTE3Miw5ICsxODAsMTMgQEAgaW50IEJOX2JuMmxlX3BhZGRlZCh1aW50 OF90ICpvdXQsIHNpemVfdCBsZW4sIGNvbnN0IEJJR05VTSAqaW4pIHsKKyAgICAgbnVtX2J5dGVz ID0gbGVuOworICAgfQorIAorLSAgLy8gV2Ugb25seSBzdXBwb3J0IGxpdHRsZS1lbmRpYW4gcGxh dGZvcm1zLCBzbyB3ZSBjYW4gc2ltcGx5IG1lbWNweSBpbnRvIHRoZQorLSAgLy8gaW50ZXJuYWwg cmVwcmVzZW50YXRpb24uCisrI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCisrICBmb3IgKHNpemVf dCBpID0gMDsgaSA8IG51bV9ieXRlczsgaSsrKSB7CisrICAgIG91dFtpXSA9IGJ5dGVzW2kgXiAo Qk5fQllURVMtMSldOworKyAgfQorKyNlbHNlCisgICBPUEVOU1NMX21lbWNweShvdXQsIGJ5dGVz LCBudW1fYnl0ZXMpOworKyNlbmRpZgorICAgLy8gUGFkIG91dCB0aGUgcmVzdCBvZiB0aGUgYnVm ZmVyIHdpdGggemVyb2VzLgorICAgT1BFTlNTTF9tZW1zZXQob3V0ICsgbnVtX2J5dGVzLCAwLCBs ZW4gLSBudW1fYnl0ZXMpOworICAgcmV0dXJuIDE7CitAQCAtMTkwLDExICsyMDIsMTUgQEAgaW50 IEJOX2JuMmJpbl9wYWRkZWQodWludDhfdCAqb3V0LCBzaXplX3QgbGVuLCBjb25zdCBCSUdOVU0g KmluKSB7CisgICAgIG51bV9ieXRlcyA9IGxlbjsKKyAgIH0KKyAKKy0gIC8vIFdlIG9ubHkgc3Vw cG9ydCBsaXR0bGUtZW5kaWFuIHBsYXRmb3Jtcywgc28gd2UgY2FuIHNpbXBseSB3cml0ZSB0aGUg YnVmZmVyCistICAvLyBpbiByZXZlcnNlLgorKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgorKyAg Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fYnl0ZXM7IGkrKykgeworKyAgICBvdXRbbGVuIC0g aSAtIDFdID0gYnl0ZXNbaSBeIChCTl9CWVRFUy0xKV07CisrICB9CisrI2Vsc2UKKyAgIGZvciAo c2l6ZV90IGkgPSAwOyBpIDwgbnVtX2J5dGVzOyBpKyspIHsKKyAgICAgb3V0W2xlbiAtIGkgLSAx XSA9IGJ5dGVzW2ldOworICAgfQorKyNlbmRpZgorICAgLy8gUGFkIG91dCB0aGUgcmVzdCBvZiB0 aGUgYnVmZmVyIHdpdGggemVyb2VzLgorICAgT1BFTlNTTF9tZW1zZXQob3V0LCAwLCBsZW4gLSBu dW1fYnl0ZXMpOworICAgcmV0dXJuIDE7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvZWNkc2Ev ZWNkc2EuYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL2VjZHNhL2VjZHNhLmMKK0BAIC04MCw3 ICs4MCwxMSBAQCBzdGF0aWMgdm9pZCBkaWdlc3RfdG9fc2NhbGFyKGNvbnN0IEVDX0dST1VQICpn cm91cCwgRUNfU0NBTEFSICpvdXQsCisgICB9CisgICBPUEVOU1NMX21lbXNldChvdXQsIDAsIHNp emVvZihFQ19TQ0FMQVIpKTsKKyAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGlnZXN0X2xlbjsg aSsrKSB7CisrI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCisrICAgIG91dC0+Ynl0ZXNbaSBeIChC Tl9CWVRFUy0xKV0gPSBkaWdlc3RbZGlnZXN0X2xlbiAtIDEgLSBpXTsKKysjZWxzZQorICAgICBv dXQtPmJ5dGVzW2ldID0gZGlnZXN0W2RpZ2VzdF9sZW4gLSAxIC0gaV07CisrI2VuZGlmCisgICB9 CisgCisgICAvLyBJZiBpdCBpcyBzdGlsbCB0b28gbG9uZywgdHJ1bmNhdGUgcmVtYWluaW5nIGJp dHMgd2l0aCBhIHNoaWZ0LgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL21vZGVzL2djbS5jCisr KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3Nz bC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvbW9kZXMvZ2NtLmMKK0BAIC03OCw2ICs3OCwxNCBAQAor ICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisgICB9IHdoaWxlICgwKQorIAorKyNpZmRlZiBPUEVOU1NMX0JJR0VO RElBTgorKyNkZWZpbmUgR0NNX2Jzd2FwNCh4KSAoeCkKKysjZGVmaW5lIEdDTV9ic3dhcDgoeCkg KHgpCisrI2Vsc2UKKysjZGVmaW5lIEdDTV9ic3dhcDQgQ1JZUFRPX2Jzd2FwNAorKyNkZWZpbmUg R0NNX2Jzd2FwOCBDUllQVE9fYnN3YXA4CisrI2VuZGlmCisrCisgLy8ga1NpemVUV2l0aG91dExv d2VyNEJpdHMgaXMgYSBtYXNrIHRoYXQgY2FuIGJlIHVzZWQgdG8gemVybyB0aGUgbG93ZXIgZm91 cgorIC8vIGJpdHMgb2YgYSB8c2l6ZV90fC4KKyBzdGF0aWMgY29uc3Qgc2l6ZV90IGtTaXplVFdp dGhvdXRMb3dlcjRCaXRzID0gKHNpemVfdCkgLTE2OworQEAgLTE3Myw4ICsxODEsOCBAQCBzdGF0 aWMgdm9pZCBnY21fZ211bHRfNGJpdCh1aW50NjRfdCBYaVsyXSwgY29uc3QgdTEyOCBIdGFibGVb MTZdKSB7CisgICAgIFoubG8gXj0gSHRhYmxlW25sb10ubG87CisgICB9CisgCistICBYaVswXSA9 IENSWVBUT19ic3dhcDgoWi5oaSk7CistICBYaVsxXSA9IENSWVBUT19ic3dhcDgoWi5sbyk7Cisr ICBYaVswXSA9IEdDTV9ic3dhcDgoWi5oaSk7CisrICBYaVsxXSA9IEdDTV9ic3dhcDgoWi5sbyk7 CisgfQorIAorIC8vIFN0cmVhbWVkIGdjbV9tdWx0XzRiaXQsIHNlZSBDUllQVE9fZ2NtMTI4X1tl bnxkZV1jcnlwdCBmb3IKK0BAIC0yMzMsOCArMjQxLDggQEAgc3RhdGljIHZvaWQgZ2NtX2doYXNo XzRiaXQodWludDY0X3QgWGlbMl0sIGNvbnN0IHUxMjggSHRhYmxlWzE2XSwKKyAgICAgICBaLmxv IF49IEh0YWJsZVtubG9dLmxvOworICAgICB9CisgCistICAgIFhpWzBdID0gQ1JZUFRPX2Jzd2Fw OChaLmhpKTsKKy0gICAgWGlbMV0gPSBDUllQVE9fYnN3YXA4KFoubG8pOworKyAgICBYaVswXSA9 IEdDTV9ic3dhcDgoWi5oaSk7CisrICAgIFhpWzFdID0gR0NNX2Jzd2FwOChaLmxvKTsKKyAgIH0g d2hpbGUgKGlucCArPSAxNiwgbGVuIC09IDE2KTsKKyB9CisgI2Vsc2UgIC8vIEdIQVNIX0FTTQor QEAgLTM2MCw4ICszNjgsOCBAQCB2b2lkIENSWVBUT19naGFzaF9pbml0KGdtdWx0X2Z1bmMgKm91 dF9tdWx0LCBnaGFzaF9mdW5jICpvdXRfaGFzaCwKKyAgIE9QRU5TU0xfbWVtY3B5KEguYywgZ2Nt X2tleSwgMTYpOworIAorICAgLy8gSCBpcyBzdG9yZWQgaW4gaG9zdCBieXRlIG9yZGVyCistICBI LnVbMF0gPSBDUllQVE9fYnN3YXA4KEgudVswXSk7CistICBILnVbMV0gPSBDUllQVE9fYnN3YXA4 KEgudVsxXSk7CisrICBILnVbMF0gPSBHQ01fYnN3YXA4KEgudVswXSk7CisrICBILnVbMV0gPSBH Q01fYnN3YXA4KEgudVsxXSk7CisgCisgICBPUEVOU1NMX21lbWNweShvdXRfa2V5LCBILmMsIDE2 KTsKKyAKK0BAIC00NzQsMTUgKzQ4MiwxNSBAQCB2b2lkIENSWVBUT19nY20xMjhfc2V0aXYoR0NN MTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAorICAgICAgIEdDTV9NVUwoY3R4 LCBZaSk7CisgICAgIH0KKyAgICAgbGVuMCA8PD0gMzsKKy0gICAgY3R4LT5ZaS51WzFdIF49IENS WVBUT19ic3dhcDgobGVuMCk7CisrICAgIGN0eC0+WWkudVsxXSBePSBHQ01fYnN3YXA4KGxlbjAp OworIAorICAgICBHQ01fTVVMKGN0eCwgWWkpOworLSAgICBjdHIgPSBDUllQVE9fYnN3YXA0KGN0 eC0+WWkuZFszXSk7CisrICAgIGN0ciA9IEdDTV9ic3dhcDQoY3R4LT5ZaS5kWzNdKTsKKyAgIH0K KyAKKyAgICgqY3R4LT5nY21fa2V5LmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUswLmMsIGtleSk7 CisgICArK2N0cjsKKy0gIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKKysgIGN0 eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKKyB9CisgCisgaW50IENSWVBUT19nY20xMjhf YWFkKEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IHVpbnQ4X3QgKmFhZCwgc2l6ZV90IGxlbikg eworQEAgLTU4MCw3ICs1ODgsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNyeXB0KEdDTTEyOF9D T05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKKyAgICAgY3R4LT5hcmVzID0gMDsKKyAg IH0KKyAKKy0gIGN0ciA9IENSWVBUT19ic3dhcDQoY3R4LT5ZaS5kWzNdKTsKKysgIGN0ciA9IEdD TV9ic3dhcDQoY3R4LT5ZaS5kWzNdKTsKKyAKKyAgIG4gPSBjdHgtPm1yZXM7CisgICBpZiAobikg eworQEAgLTYwMiw3ICs2MTAsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNyeXB0KEdDTTEyOF9D T05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKKyAgICAgICBpZiAobiA9PSAwKSB7Cisg ICAgICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7CisgICAgICAgICAr K2N0cjsKKy0gICAgICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKKysgICAg ICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKKyAgICAgICB9CisgICAgICAgY3R4 LT5YaS5jW25dIF49IG91dFtpXSA9IGluW2ldIF4gY3R4LT5FS2kuY1tuXTsKKyAgICAgICBuID0g KG4gKyAxKSAlIDE2OworQEAgLTYyMSw3ICs2MjksNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNy eXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKKyAgICAgd2hpbGUg KGopIHsKKyAgICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7CisgICAg ICAgKytjdHI7CistICAgICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOworKyAg ICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKKyAgICAgICBmb3IgKHNpemVfdCBp ID0gMDsgaSA8IDE2OyBpICs9IHNpemVvZihzaXplX3QpKSB7CisgICAgICAgICBzdG9yZV93b3Jk X2xlKG91dCArIGksCisgICAgICAgICAgICAgICAgICAgICAgIGxvYWRfd29yZF9sZShpbiArIGkp IF4gY3R4LT5FS2kudFtpIC8gc2l6ZW9mKHNpemVfdCldKTsKK0BAIC02MzgsNyArNjQ2LDcgQEAg aW50IENSWVBUT19nY20xMjhfZW5jcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNf S0VZICprZXksCisgICAgIHdoaWxlIChsZW4gPj0gMTYpIHsKKyAgICAgICAoKmJsb2NrKShjdHgt PllpLmMsIGN0eC0+RUtpLmMsIGtleSk7CisgICAgICAgKytjdHI7CistICAgICAgY3R4LT5ZaS5k WzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOworKyAgICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dh cDQoY3RyKTsKKyAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyBpICs9IHNpemVvZihz aXplX3QpKSB7CisgICAgICAgICBzdG9yZV93b3JkX2xlKG91dCArIGksCisgICAgICAgICAgICAg ICAgICAgICAgIGxvYWRfd29yZF9sZShpbiArIGkpIF4gY3R4LT5FS2kudFtpIC8gc2l6ZW9mKHNp emVfdCldKTsKK0BAIC02NTMsNyArNjYxLDcgQEAgaW50IENSWVBUT19nY20xMjhfZW5jcnlwdChH Q00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCisgICB3aGlsZSAobGVuID49 IDE2KSB7CisgICAgICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKKyAgICAg KytjdHI7CistICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKKysgICAgY3R4 LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOworICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8 IDE2OyBpICs9IHNpemVvZihzaXplX3QpKSB7CisgICAgICAgc2l6ZV90IHRtcCA9IGxvYWRfd29y ZF9sZShpbiArIGkpIF4gY3R4LT5FS2kudFtpIC8gc2l6ZW9mKHNpemVfdCldOworICAgICAgIHN0 b3JlX3dvcmRfbGUob3V0ICsgaSwgdG1wKTsKK0BAIC02NjgsNyArNjc2LDcgQEAgaW50IENSWVBU T19nY20xMjhfZW5jcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXks CisgICBpZiAobGVuKSB7CisgICAgICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5 KTsKKyAgICAgKytjdHI7CistICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsK KysgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOworICAgICB3aGlsZSAobGVuLS0p IHsKKyAgICAgICBjdHgtPlhpLmNbbl0gXj0gb3V0W25dID0gaW5bbl0gXiBjdHgtPkVLaS5jW25d OworICAgICAgICsrbjsKK0BAIC03MDcsNyArNzE1LDcgQEAgaW50IENSWVBUT19nY20xMjhfZGVj cnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCisgICAgIGN0eC0+ YXJlcyA9IDA7CisgICB9CisgCistICBjdHIgPSBDUllQVE9fYnN3YXA0KGN0eC0+WWkuZFszXSk7 CisrICBjdHIgPSBHQ01fYnN3YXA0KGN0eC0+WWkuZFszXSk7CisgCisgICBuID0gY3R4LT5tcmVz OworICAgaWYgKG4pIHsKK0BAIC03MzIsNyArNzQwLDcgQEAgaW50IENSWVBUT19nY20xMjhfZGVj cnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCisgICAgICAgaWYg KG4gPT0gMCkgeworICAgICAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkp OworICAgICAgICAgKytjdHI7CistICAgICAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0 KGN0cik7CisrICAgICAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7CisgICAgICAg fQorICAgICAgIGMgPSBpbltpXTsKKyAgICAgICBvdXRbaV0gPSBjIF4gY3R4LT5FS2kuY1tuXTsK K0BAIC03NTQsNyArNzYyLDcgQEAgaW50IENSWVBUT19nY20xMjhfZGVjcnlwdChHQ00xMjhfQ09O VEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCisgICAgIHdoaWxlIChqKSB7CisgICAgICAg KCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOworICAgICAgICsrY3RyOworLSAg ICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKKysgICAgICBjdHgtPllpLmRb M10gPSBHQ01fYnN3YXA0KGN0cik7CisgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsg aSArPSBzaXplb2Yoc2l6ZV90KSkgeworICAgICAgICAgc3RvcmVfd29yZF9sZShvdXQgKyBpLAor ICAgICAgICAgICAgICAgICAgICAgICBsb2FkX3dvcmRfbGUoaW4gKyBpKSBeIGN0eC0+RUtpLnRb aSAvIHNpemVvZihzaXplX3QpXSk7CitAQCAtNzcxLDcgKzc3OSw3IEBAIGludCBDUllQVE9fZ2Nt MTI4X2RlY3J5cHQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAorICAg ICB3aGlsZSAobGVuID49IDE2KSB7CisgICAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVL aS5jLCBrZXkpOworICAgICAgICsrY3RyOworLSAgICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19i c3dhcDQoY3RyKTsKKysgICAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7CisgICAg ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsgaSArPSBzaXplb2Yoc2l6ZV90KSkgeworICAg ICAgICAgc3RvcmVfd29yZF9sZShvdXQgKyBpLAorICAgICAgICAgICAgICAgICAgICAgICBsb2Fk X3dvcmRfbGUoaW4gKyBpKSBeIGN0eC0+RUtpLnRbaSAvIHNpemVvZihzaXplX3QpXSk7CitAQCAt Nzg1LDcgKzc5Myw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2RlY3J5cHQoR0NNMTI4X0NPTlRFWFQg KmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAorICAgd2hpbGUgKGxlbiA+PSAxNikgeworICAgICAo KmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7CisgICAgICsrY3RyOworLSAgICBj dHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7CisrICAgIGN0eC0+WWkuZFszXSA9IEdD TV9ic3dhcDQoY3RyKTsKKyAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsgaSArPSBzaXpl b2Yoc2l6ZV90KSkgeworICAgICAgIHNpemVfdCBjID0gbG9hZF93b3JkX2xlKGluICsgaSk7Cisg ICAgICAgc3RvcmVfd29yZF9sZShvdXQgKyBpLCBjIF4gY3R4LT5FS2kudFtpIC8gc2l6ZW9mKHNp emVfdCldKTsKK0BAIC04MDAsNyArODA4LDcgQEAgaW50IENSWVBUT19nY20xMjhfZGVjcnlwdChH Q00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCisgICBpZiAobGVuKSB7Cisg ICAgICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKKyAgICAgKytjdHI7Cist ICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKKysgICAgY3R4LT5ZaS5kWzNd ID0gR0NNX2Jzd2FwNChjdHIpOworICAgICB3aGlsZSAobGVuLS0pIHsKKyAgICAgICB1aW50OF90 IGMgPSBpbltuXTsKKyAgICAgICBjdHgtPlhpLmNbbl0gXj0gYzsKK0BAIC04NjYsMTMgKzg3NCwx MyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNyeXB0X2N0cjMyKEdDTTEyOF9DT05URVhUICpjdHgs IGNvbnN0IEFFU19LRVkgKmtleSwKKyAgIH0KKyAjZW5kaWYKKyAKKy0gIGN0ciA9IENSWVBUT19i c3dhcDQoY3R4LT5ZaS5kWzNdKTsKKysgIGN0ciA9IEdDTV9ic3dhcDQoY3R4LT5ZaS5kWzNdKTsK KyAKKyAjaWYgZGVmaW5lZChHSEFTSCkKKyAgIHdoaWxlIChsZW4gPj0gR0hBU0hfQ0hVTkspIHsK KyAgICAgKCpzdHJlYW0pKGluLCBvdXQsIEdIQVNIX0NIVU5LIC8gMTYsIGtleSwgY3R4LT5ZaS5j KTsKKyAgICAgY3RyICs9IEdIQVNIX0NIVU5LIC8gMTY7CistICAgIGN0eC0+WWkuZFszXSA9IENS WVBUT19ic3dhcDQoY3RyKTsKKysgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwor ICAgICBHSEFTSChjdHgsIG91dCwgR0hBU0hfQ0hVTkspOworICAgICBvdXQgKz0gR0hBU0hfQ0hV Tks7CisgICAgIGluICs9IEdIQVNIX0NIVU5LOworQEAgLTg4NSw3ICs4OTMsNyBAQCBpbnQgQ1JZ UFRPX2djbTEyOF9lbmNyeXB0X2N0cjMyKEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19L RVkgKmtleSwKKyAKKyAgICAgKCpzdHJlYW0pKGluLCBvdXQsIGosIGtleSwgY3R4LT5ZaS5jKTsK KyAgICAgY3RyICs9ICh1bnNpZ25lZCBpbnQpajsKKy0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRP X2Jzd2FwNChjdHIpOworKyAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7CisgICAg IGluICs9IGk7CisgICAgIGxlbiAtPSBpOworICNpZiBkZWZpbmVkKEdIQVNIKQorQEAgLTkwNCw3 ICs5MTIsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNyeXB0X2N0cjMyKEdDTTEyOF9DT05URVhU ICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKKyAgIGlmIChsZW4pIHsKKyAgICAgKCpjdHgtPmdj bV9rZXkuYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKKyAgICAgKytjdHI7Cist ICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKKysgICAgY3R4LT5ZaS5kWzNd ID0gR0NNX2Jzd2FwNChjdHIpOworICAgICB3aGlsZSAobGVuLS0pIHsKKyAgICAgICBjdHgtPlhp LmNbbl0gXj0gb3V0W25dID0gaW5bbl0gXiBjdHgtPkVLaS5jW25dOworICAgICAgICsrbjsKK0BA IC05NzAsMTQgKzk3OCwxNCBAQCBpbnQgQ1JZUFRPX2djbTEyOF9kZWNyeXB0X2N0cjMyKEdDTTEy OF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKKyAgIH0KKyAjZW5kaWYKKyAKKy0g IGN0ciA9IENSWVBUT19ic3dhcDQoY3R4LT5ZaS5kWzNdKTsKKysgIGN0ciA9IEdDTV9ic3dhcDQo Y3R4LT5ZaS5kWzNdKTsKKyAKKyAjaWYgZGVmaW5lZChHSEFTSCkKKyAgIHdoaWxlIChsZW4gPj0g R0hBU0hfQ0hVTkspIHsKKyAgICAgR0hBU0goY3R4LCBpbiwgR0hBU0hfQ0hVTkspOworICAgICAo KnN0cmVhbSkoaW4sIG91dCwgR0hBU0hfQ0hVTksgLyAxNiwga2V5LCBjdHgtPllpLmMpOworICAg ICBjdHIgKz0gR0hBU0hfQ0hVTksgLyAxNjsKKy0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jz d2FwNChjdHIpOworKyAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7CisgICAgIG91 dCArPSBHSEFTSF9DSFVOSzsKKyAgICAgaW4gKz0gR0hBU0hfQ0hVTks7CisgICAgIGxlbiAtPSBH SEFTSF9DSFVOSzsKK0BAIC0xMDAzLDcgKzEwMTEsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9kZWNy eXB0X2N0cjMyKEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKKyAjZW5k aWYKKyAgICAgKCpzdHJlYW0pKGluLCBvdXQsIGosIGtleSwgY3R4LT5ZaS5jKTsKKyAgICAgY3Ry ICs9ICh1bnNpZ25lZCBpbnQpajsKKy0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChj dHIpOworKyAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7CisgICAgIG91dCArPSBp OworICAgICBpbiArPSBpOworICAgICBsZW4gLT0gaTsKK0BAIC0xMDExLDcgKzEwMTksNyBAQCBp bnQgQ1JZUFRPX2djbTEyOF9kZWNyeXB0X2N0cjMyKEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0 IEFFU19LRVkgKmtleSwKKyAgIGlmIChsZW4pIHsKKyAgICAgKCpjdHgtPmdjbV9rZXkuYmxvY2sp KGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKKyAgICAgKytjdHI7CistICAgIGN0eC0+WWku ZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKKysgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2Fw NChjdHIpOworICAgICB3aGlsZSAobGVuLS0pIHsKKyAgICAgICB1aW50OF90IGMgPSBpbltuXTsK KyAgICAgICBjdHgtPlhpLmNbbl0gXj0gYzsKK0BAIC0xMDM2LDggKzEwNDQsOCBAQCBpbnQgQ1JZ UFRPX2djbTEyOF9maW5pc2goR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgdWludDhfdCAqdGFn LCBzaXplX3QgbGVuKSB7CisgICAgIEdDTV9NVUwoY3R4LCBYaSk7CisgICB9CisgCistICBhbGVu ID0gQ1JZUFRPX2Jzd2FwOChhbGVuKTsKKy0gIGNsZW4gPSBDUllQVE9fYnN3YXA4KGNsZW4pOwor KyAgYWxlbiA9IEdDTV9ic3dhcDgoYWxlbik7CisrICBjbGVuID0gR0NNX2Jzd2FwOChjbGVuKTsK KyAKKyAgIGN0eC0+WGkudVswXSBePSBhbGVuOworICAgY3R4LT5YaS51WzFdIF49IGNsZW47Cist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3Nz bC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvbW9kZXMvaW50ZXJuYWwuaAorKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9m aXBzbW9kdWxlL21vZGVzL2ludGVybmFsLmgKK0BAIC03MCwxMSArNzAsMTcgQEAgZXh0ZXJuICJD IiB7Cisgc3RhdGljIGlubGluZSB1aW50MzJfdCBHRVRVMzIoY29uc3Qgdm9pZCAqaW4pIHsKKyAg IHVpbnQzMl90IHY7CisgICBPUEVOU1NMX21lbWNweSgmdiwgaW4sIHNpemVvZih2KSk7CisrI2lm ZGVmIE9QRU5TU0xfQklHRU5ESUFOCisrICByZXR1cm4gdjsKKysjZWxzZQorICAgcmV0dXJuIENS WVBUT19ic3dhcDQodik7CisrI2VuZGlmCisgfQorIAorIHN0YXRpYyBpbmxpbmUgdm9pZCBQVVRV MzIodm9pZCAqb3V0LCB1aW50MzJfdCB2KSB7CisrI2lmbmRlZiBPUEVOU1NMX0JJR0VORElBTgor ICAgdiA9IENSWVBUT19ic3dhcDQodik7CisrI2VuZGlmCisgICBPUEVOU1NMX21lbWNweShvdXQs ICZ2LCBzaXplb2YodikpOworIH0KKyAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9tb2Rlcy9w b2x5dmFsLmMKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9tb2Rlcy9wb2x5dmFsLmMKK0BAIC0z MiwxNiArMzIsMjYgQEAgc3RhdGljIHZvaWQgYnl0ZV9yZXZlcnNlKHBvbHl2YWxfYmxvY2sgKmIp IHsKKyAvLyB0aGUgR0hBU0ggZmllbGQsIG11bHRpcGxpZXMgdGhhdCBieSAneCcgYW5kIHNlcmlh bGlzZXMgdGhlIHJlc3VsdCBiYWNrIGludG8KKyAvLyB8YnwsIGJ1dCB3aXRoIEdIQVNIJ3MgYmFj a3dhcmRzIGJpdCBvcmRlcmluZy4KKyBzdGF0aWMgdm9pZCByZXZlcnNlX2FuZF9tdWxYX2doYXNo KHBvbHl2YWxfYmxvY2sgKmIpIHsKKysjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KKysgIHVpbnQ2 NF90IGhpID0gQ1JZUFRPX2Jzd2FwOChiLT51WzBdKTsKKysgIHVpbnQ2NF90IGxvID0gQ1JZUFRP X2Jzd2FwOChiLT51WzFdKTsKKysjZWxzZQorICAgdWludDY0X3QgaGkgPSBiLT51WzBdOworICAg dWludDY0X3QgbG8gPSBiLT51WzFdOworKyNlbmRpZgorICAgY29uc3QgY3J5cHRvX3dvcmRfdCBj YXJyeSA9IGNvbnN0YW50X3RpbWVfZXFfdyhoaSAmIDEsIDEpOworICAgaGkgPj49IDE7CisgICBo aSB8PSBsbyA8PCA2MzsKKyAgIGxvID4+PSAxOworICAgbG8gXj0gKCh1aW50NjRfdCkgY29uc3Rh bnRfdGltZV9zZWxlY3RfdyhjYXJyeSwgMHhlMSwgMCkpIDw8IDU2OworIAorKyNpZmRlZiBPUEVO U1NMX0JJR0VORElBTgorKyAgYi0+dVswXSA9IGxvOworKyAgYi0+dVsxXSA9IGhpOworKyNlbHNl CisgICBiLT51WzBdID0gQ1JZUFRPX2Jzd2FwOChsbyk7CisgICBiLT51WzFdID0gQ1JZUFRPX2Jz d2FwOChoaSk7CisrI2VuZGlmCisgfQorIAorIC8vIFBPTFlWQUwoSCwgWF8xLCAuLi4sIFhfbikg PQorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jp bmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL3JhbmQvY3RyZHJiZy5jCisrKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRv L2ZpcHNtb2R1bGUvcmFuZC9jdHJkcmJnLmMKK0BAIC03MCw4ICs3MCwxMiBAQCBPUEVOU1NMX1NU QVRJQ19BU1NFUlQoQ1RSX0RSQkdfRU5UUk9QWV9MRU4gJSBBRVNfQkxPQ0tfU0laRSA9PSAwLAor IC8vIGN0cl9pbmMgYWRkcyB8bnwgdG8gdGhlIGxhc3QgZm91ciBieXRlcyBvZiB8ZHJiZy0+Y291 bnRlcnwsIHRyZWF0ZWQgYXMgYQorIC8vIGJpZy1lbmRpYW4gbnVtYmVyLgorIHN0YXRpYyB2b2lk IGN0cjMyX2FkZChDVFJfRFJCR19TVEFURSAqZHJiZywgdWludDMyX3QgbikgeworKyNpZmRlZiBP UEVOU1NMX0JJR0VORElBTgorKyAgZHJiZy0+Y291bnRlci53b3Jkc1szXSArPSBuOworKyNlbHNl CisgICBkcmJnLT5jb3VudGVyLndvcmRzWzNdID0KKyAgICAgICBDUllQVE9fYnN3YXA0KENSWVBU T19ic3dhcDQoZHJiZy0+Y291bnRlci53b3Jkc1szXSkgKyBuKTsKKysjZW5kaWYKKyB9CisgCisg c3RhdGljIGludCBjdHJfZHJiZ191cGRhdGUoQ1RSX0RSQkdfU1RBVEUgKmRyYmcsIGNvbnN0IHVp bnQ4X3QgKmRhdGEsCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL3BvbHkxMzA1L3BvbHkxMzA1LmMKKysrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9j cnlwdG8vcG9seTEzMDUvcG9seTEzMDUuYworQEAgLTMyLDEwICszMiwxNiBAQAorIHN0YXRpYyB1 aW50MzJfdCBVOFRPMzJfTEUoY29uc3QgdWludDhfdCAqbSkgeworICAgdWludDMyX3QgcjsKKyAg IE9QRU5TU0xfbWVtY3B5KCZyLCBtLCBzaXplb2YocikpOworKyNpZmRlZiBPUEVOU1NMX0JJR0VO RElBTgorKyAgciA9IENSWVBUT19ic3dhcDQocik7CisrI2VuZGlmCisgICByZXR1cm4gcjsKKyB9 CisgCisgc3RhdGljIHZvaWQgVTMyVE84X0xFKHVpbnQ4X3QgKm0sIHVpbnQzMl90IHYpIHsKKysj aWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KKysgIHYgPSBDUllQVE9fYnN3YXA0KHYpOworKyNlbmRp ZgorICAgT1BFTlNTTF9tZW1jcHkobSwgJnYsIHNpemVvZih2KSk7CisgfQorIAorLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2lu Y2x1ZGUvb3BlbnNzbC9iYXNlLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9pbmNsdWRlL29wZW5zc2wvYmFzZS5oCitAQCAt OTksNiArOTksMTAgQEAgZXh0ZXJuICJDIiB7CisgI2VsaWYgKGRlZmluZWQoX19QUEM2NF9fKSB8 fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pKSAmJiBkZWZpbmVkKF9MSVRUTEVfRU5ESUFOKQorICNk ZWZpbmUgT1BFTlNTTF82NF9CSVQKKyAjZGVmaW5lIE9QRU5TU0xfUFBDNjRMRQorKyNlbGlmIChk ZWZpbmVkKF9fUFBDNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSkKKysjZGVmaW5lIE9Q RU5TU0xfNjRfQklUCisrI2RlZmluZSBPUEVOU1NMX1BQQzY0CisrI2RlZmluZSBPUEVOU1NMX0JJ R0VORElBTgorICNlbGlmIGRlZmluZWQoX19taXBzX18pICYmICFkZWZpbmVkKF9fTFA2NF9fKQor ICNkZWZpbmUgT1BFTlNTTF8zMl9CSVQKKyAjZGVmaW5lIE9QRU5TU0xfTUlQUworLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL3Ro aXJkX3BhcnR5L2ZpYXQvY3VydmUyNTUxOS5jCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvdGhpcmRfcGFydHkvZmlhdC9jdXJ2 ZTI1NTE5LmMKK0BAIC0zMDMyLDkgKzMwMzIsMTQgQEAgaW50IEVEMjU1MTlfdmVyaWZ5KGNvbnN0 IHVpbnQ4X3QgKm1lc3NhZ2UsIHNpemVfdCBtZXNzYWdlX2xlbiwKKyAgICAgVUlOVDY0X0MoMHgx MDAwMDAwMDAwMDAwMDAwKSwKKyAgIH07CisgICBmb3IgKHNpemVfdCBpID0gMzs7IGktLSkgewor LSAgICBpZiAoc2NvcHkudTY0W2ldID4ga09yZGVyW2ldKSB7CisrI2lmZGVmIE9QRU5TU0xfQklH RU5ESUFOCisrICAgIGNvbnN0IHVpbnQ2NF90IG4gPSBDUllQVE9fYnN3YXA4KHNjb3B5LnU2NFtp XSk7CisrI2Vsc2UKKysgICAgY29uc3QgdWludDY0X3QgbiA9IHNjb3B5LnU2NFtpXTsKKysjZW5k aWYKKysgICAgaWYgKG4gPiBrT3JkZXJbaV0pIHsKKyAgICAgICByZXR1cm4gMDsKKy0gICAgfSBl bHNlIGlmIChzY29weS51NjRbaV0gPCBrT3JkZXJbaV0pIHsKKysgICAgfSBlbHNlIGlmIChuIDwg a09yZGVyW2ldKSB7CisgICAgICAgYnJlYWs7CisgICAgIH0gZWxzZSBpZiAoaSA9PSAwKSB7Cisg ICAgICAgcmV0dXJuIDA7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvdGhpcmRfcGFydHkvZmlhdC9wMjU2LmMKKysrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy90 aGlyZF9wYXJ0eS9maWF0L3AyNTYuYworQEAgLTg4MiwxMiArODgyLDI0IEBAIHN0YXRpYyB2b2lk IGZlX3RvYnl0ZXModWludDhfdCBvdXRbTkJZVEVTXSwgY29uc3QgZmUgaW4pIHsKKyAgIH0KKyB9 CisgCisrI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCisrc3RhdGljIHZvaWQgZmVfdG9ieXRlc19i ZSh1aW50OF90IG91dFtOQllURVNdLCBjb25zdCBmZSBpbikgeworKyAgZm9yIChpbnQgaSA9IDA7 IGk8TkJZVEVTOyBpKyspIHsKKysgICAgb3V0W2kgXiAoQk5fQllURVMtMSldID0gKHVpbnQ4X3Qp KGluW2kvc2l6ZW9mKGluWzBdKV0gPj4gKDgqKGklc2l6ZW9mKGluWzBdKSkpKTsKKysgIH0KKyt9 CisrI2VuZGlmCisrCisgc3RhdGljIHZvaWQgZmVfZnJvbWJ5dGVzKGZlIG91dCwgY29uc3QgdWlu dDhfdCBpbltOQllURVNdKSB7CisgICBmb3IgKGludCBpID0gMDsgaTxOTElNQlM7IGkrKykgewor ICAgICBvdXRbaV0gPSAwOworICAgfQorICAgZm9yIChpbnQgaSA9IDA7IGk8TkJZVEVTOyBpKysp IHsKKysjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KKysgICAgb3V0W2kvc2l6ZW9mKG91dFswXSld IHw9ICgobGltYl90KWluW2kgXiAoQk5fQllURVMtMSldKSA8PCAoOCooaSVzaXplb2Yob3V0WzBd KSkpOworKyNlbHNlCisgICAgIG91dFtpL3NpemVvZihvdXRbMF0pXSB8PSAoKGxpbWJfdClpbltp XSkgPDwgKDgqKGklc2l6ZW9mKG91dFswXSkpKTsKKysjZW5kaWYKKyAgIH0KKyB9CisgCitAQCAt OTA2LDcgKzkxOCwxMSBAQCBzdGF0aWMgdm9pZCBmZV90b19nZW5lcmljKEVDX0ZFTEVNICpvdXQs IGNvbnN0IGZlIGluKSB7CisgICBPUEVOU1NMX1NUQVRJQ19BU1NFUlQoCisgICAgICAgMjU2IC8g OCA9PSBzaXplb2YoQk5fVUxPTkcpICogKCgyNTYgKyBCTl9CSVRTMiAtIDEpIC8gQk5fQklUUzIp LAorICAgICAgICJmZV90b2J5dGVzIGxlYXZlcyBieXRlcyB1bmluaXRpYWxpemVkIik7CisrI2lm ZGVmIE9QRU5TU0xfQklHRU5ESUFOCisrICBmZV90b2J5dGVzX2JlKG91dC0+Ynl0ZXMsIGluKTsK KysjZWxzZQorICAgZmVfdG9ieXRlcyhvdXQtPmJ5dGVzLCBpbik7CisrI2VuZGlmCisgfQorIAor IC8vIGZlX2ludiBjYWxjdWxhdGVzIHxvdXR8ID0gfGlufF57LTF9CitAQCAtMTUyNCw3ICsxNTQw LDExIEBAIHN0YXRpYyBjaGFyIGdldF9iaXQoY29uc3QgdWludDhfdCAqaW4sIGludCBpKSB7Cisg ICBpZiAoaSA8IDAgfHwgaSA+PSAyNTYpIHsKKyAgICAgcmV0dXJuIDA7CisgICB9CisrI2lmZGVm IE9QRU5TU0xfQklHRU5ESUFOCisrICByZXR1cm4gKGluWyhpID4+IDMpIF4gKHNpemVvZihCTl9V TE9ORyktMSldID4+IChpICYgNykpICYgMTsKKysjZWxzZQorICAgcmV0dXJuIChpbltpID4+IDNd ID4+IChpICYgNykpICYgMTsKKysjZW5kaWYKKyB9CisgCisgLy8gSW50ZXJsZWF2ZWQgcG9pbnQg bXVsdGlwbGljYXRpb24gdXNpbmcgcHJlY29tcHV0ZWQgcG9pbnQgbXVsdGlwbGVzOiBUaGUKKy0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3JjMzJjL0JV SUxELmduCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2NyYzMyYy9CVUlMRC5nbgorQEAgLTE1LDEzICsxNSwxMCBAQCBjb25maWcoImNyYzMyY19jb25m aWciKSB7CisgICBdCisgCisgICBkZWZpbmVzID0gWworLSAgICAiQllURV9PUkRFUl9CSUdfRU5E SUFOPTAiLAorKyAgICAiQllURV9PUkRFUl9CSUdfRU5ESUFOPV9fQllURV9PUkRFUl9fPT1fX09S REVSX0JJR19FTkRJQU5fXyIsCisgICAgICJDUkMzMkNfVEVTVFNfQlVJTFRfV0lUSF9HTE9HPTAi LAorICAgXQorIAorLSAgIyBJZiB3ZSBldmVyIHN1cHBvcnQgYmlnLWVuZGlhbiBidWlsZHMsIGFk ZCBsb2dpYyB0byBjb25kaXRpb25hbGx5IGVuYWJsZQorLSAgIyBCWVRFX09SREVSX0JJR19FTkRJ QU4uCistCisgICBpZiAodGFyZ2V0X2NwdSA9PSAieDg2IiB8fCB0YXJnZXRfY3B1ID09ICJ4NjQi KSB7CisgICAgIGRlZmluZXMgKz0gWworICAgICAgICJIQVZFX01NX1BSRUZFVENIPTEiLAorLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9mbGF0YnVmZmVy cy9zcmMvaW5jbHVkZS9mbGF0YnVmZmVycy9iYXNlLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvZmxhdGJ1ZmZlcnMvc3JjL2luY2x1ZGUvZmxhdGJ1 ZmZlcnMvYmFzZS5oCitAQCAtMjIwLDE4ICsyMjAsMTUgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g VCBFbmRpYW5Td2FwKFQgdCkgeworICAgaWYgKHNpemVvZihUKSA9PSAxKSB7ICAgLy8gQ29tcGls ZS10aW1lIGlmLXRoZW4ncy4KKyAgICAgcmV0dXJuIHQ7CisgICB9IGVsc2UgaWYgKHNpemVvZihU KSA9PSAyKSB7CistICAgIHVuaW9uIHsgVCB0OyB1aW50MTZfdCBpOyB9IHU7CistICAgIHUudCA9 IHQ7CisrICAgIHVuaW9uIFUgeyBUIHQ7IHVpbnQxNl90IGk7IFUoY29uc3QgVCYgdF8pIDogdCh0 Xykge319IHUodCk7CisgICAgIHUuaSA9IEZMQVRCVUZGRVJTX0JZVEVTV0FQMTYodS5pKTsKKyAg ICAgcmV0dXJuIHUudDsKKyAgIH0gZWxzZSBpZiAoc2l6ZW9mKFQpID09IDQpIHsKKy0gICAgdW5p b24geyBUIHQ7IHVpbnQzMl90IGk7IH0gdTsKKy0gICAgdS50ID0gdDsKKysgICAgdW5pb24gVSB7 IFQgdDsgdWludDMyX3QgaTsgVShjb25zdCBUJiB0XykgOiB0KHRfKSB7fX0gdSh0KTsKKyAgICAg dS5pID0gRkxBVEJVRkZFUlNfQllURVNXQVAzMih1LmkpOworICAgICByZXR1cm4gdS50OworICAg fSBlbHNlIGlmIChzaXplb2YoVCkgPT0gOCkgeworLSAgICB1bmlvbiB7IFQgdDsgdWludDY0X3Qg aTsgfSB1OworLSAgICB1LnQgPSB0OworKyAgICB1bmlvbiBVIHsgVCB0OyB1aW50NjRfdCBpOyBV KGNvbnN0IFQmIHRfKSA6IHQodF8pIHt9fSB1KHQpOworICAgICB1LmkgPSBGTEFUQlVGRkVSU19C WVRFU1dBUDY0KHUuaSk7CisgICAgIHJldHVybiB1LnQ7CisgICB9IGVsc2UgeworLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9mbGF0YnVmZmVycy9zcmMv aW5jbHVkZS9mbGF0YnVmZmVycy9taW5pcmVmbGVjdC5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2ZsYXRidWZmZXJzL3NyYy9pbmNsdWRlL2ZsYXRi dWZmZXJzL21pbmlyZWZsZWN0LmgKK0BAIC0xMjIsNTggKzEyMiw1OCBAQCBpbmxpbmUgdm9pZCBJ dGVyYXRlVmFsdWUoRWxlbWVudGFyeVR5cGUgdHlwZSwgY29uc3QgdWludDhfdCAqdmFsLAorICAg ICAgICAgICAgICAgICAgICAgICAgICBzb2Zmc2V0X3QgdmVjdG9yX2luZGV4LCBJdGVyYXRpb25W aXNpdG9yICp2aXNpdG9yKSB7CisgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgY2FzZSBFVF9VVFlQ RTogeworLSAgICAgIGF1dG8gdHZhbCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qg Kj4odmFsKTsKKysgICAgICBhdXRvIHR2YWwgPSBSZWFkU2NhbGFyPHVpbnQ4X3Q+KHZhbCk7Cisg ICAgICAgdmlzaXRvci0+VVR5cGUodHZhbCwgRW51bU5hbWUodHZhbCwgdHlwZV90YWJsZSkpOwor ICAgICAgIGJyZWFrOworICAgICB9CisgICAgIGNhc2UgRVRfQk9PTDogeworLSAgICAgIHZpc2l0 b3ItPkJvb2woKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPih2YWwpICE9IDApOwor KyAgICAgIHZpc2l0b3ItPkJvb2woUmVhZFNjYWxhcjx1aW50OF90Pih2YWwpICE9IDApOworICAg ICAgIGJyZWFrOworICAgICB9CisgICAgIGNhc2UgRVRfQ0hBUjogeworLSAgICAgIGF1dG8gdHZh bCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IGludDhfdCAqPih2YWwpOworKyAgICAgIGF1dG8g dHZhbCA9IFJlYWRTY2FsYXI8aW50OF90Pih2YWwpOworICAgICAgIHZpc2l0b3ItPkNoYXIodHZh bCwgRW51bU5hbWUodHZhbCwgdHlwZV90YWJsZSkpOworICAgICAgIGJyZWFrOworICAgICB9Cisg ICAgIGNhc2UgRVRfVUNIQVI6IHsKKy0gICAgICBhdXRvIHR2YWwgPSAqcmVpbnRlcnByZXRfY2Fz dDxjb25zdCB1aW50OF90ICo+KHZhbCk7CisrICAgICAgYXV0byB0dmFsID0gUmVhZFNjYWxhcjx1 aW50OF90Pih2YWwpOworICAgICAgIHZpc2l0b3ItPlVDaGFyKHR2YWwsIEVudW1OYW1lKHR2YWws IHR5cGVfdGFibGUpKTsKKyAgICAgICBicmVhazsKKyAgICAgfQorICAgICBjYXNlIEVUX1NIT1JU OiB7CistICAgICAgYXV0byB0dmFsID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MTZfdCAq Pih2YWwpOworKyAgICAgIGF1dG8gdHZhbCA9IFJlYWRTY2FsYXI8aW50MTZfdD4odmFsKTsKKyAg ICAgICB2aXNpdG9yLT5TaG9ydCh0dmFsLCBFbnVtTmFtZSh0dmFsLCB0eXBlX3RhYmxlKSk7Cisg ICAgICAgYnJlYWs7CisgICAgIH0KKyAgICAgY2FzZSBFVF9VU0hPUlQ6IHsKKy0gICAgICBhdXRv IHR2YWwgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCAqPih2YWwpOworKyAgICAg IGF1dG8gdHZhbCA9IFJlYWRTY2FsYXI8dWludDE2X3Q+KHZhbCk7CisgICAgICAgdmlzaXRvci0+ VVNob3J0KHR2YWwsIEVudW1OYW1lKHR2YWwsIHR5cGVfdGFibGUpKTsKKyAgICAgICBicmVhazsK KyAgICAgfQorICAgICBjYXNlIEVUX0lOVDogeworLSAgICAgIGF1dG8gdHZhbCA9ICpyZWludGVy cHJldF9jYXN0PGNvbnN0IGludDMyX3QgKj4odmFsKTsKKysgICAgICBhdXRvIHR2YWwgPSBSZWFk U2NhbGFyPGludDMyX3Q+KHZhbCk7CisgICAgICAgdmlzaXRvci0+SW50KHR2YWwsIEVudW1OYW1l KHR2YWwsIHR5cGVfdGFibGUpKTsKKyAgICAgICBicmVhazsKKyAgICAgfQorICAgICBjYXNlIEVU X1VJTlQ6IHsKKy0gICAgICBhdXRvIHR2YWwgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50 MzJfdCAqPih2YWwpOworKyAgICAgIGF1dG8gdHZhbCA9IFJlYWRTY2FsYXI8dWludDMyX3Q+KHZh bCk7CisgICAgICAgdmlzaXRvci0+VUludCh0dmFsLCBFbnVtTmFtZSh0dmFsLCB0eXBlX3RhYmxl KSk7CisgICAgICAgYnJlYWs7CisgICAgIH0KKyAgICAgY2FzZSBFVF9MT05HOiB7CistICAgICAg dmlzaXRvci0+TG9uZygqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQ2NF90ICo+KHZhbCkpOwor KyAgICAgIHZpc2l0b3ItPkxvbmcoUmVhZFNjYWxhcjxpbnQ2NF90Pih2YWwpKTsKKyAgICAgICBi cmVhazsKKyAgICAgfQorICAgICBjYXNlIEVUX1VMT05HOiB7CistICAgICAgdmlzaXRvci0+VUxv bmcoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDY0X3QgKj4odmFsKSk7CisrICAgICAgdmlz aXRvci0+VUxvbmcoUmVhZFNjYWxhcjx1aW50NjRfdD4odmFsKSk7CisgICAgICAgYnJlYWs7Cisg ICAgIH0KKyAgICAgY2FzZSBFVF9GTE9BVDogeworLSAgICAgIHZpc2l0b3ItPkZsb2F0KCpyZWlu dGVycHJldF9jYXN0PGNvbnN0IGZsb2F0ICo+KHZhbCkpOworKyAgICAgIHZpc2l0b3ItPkZsb2F0 KFJlYWRTY2FsYXI8ZmxvYXQ+KHZhbCkpOworICAgICAgIGJyZWFrOworICAgICB9CisgICAgIGNh c2UgRVRfRE9VQkxFOiB7CistICAgICAgdmlzaXRvci0+RG91YmxlKCpyZWludGVycHJldF9jYXN0 PGNvbnN0IGRvdWJsZSAqPih2YWwpKTsKKysgICAgICB2aXNpdG9yLT5Eb3VibGUoUmVhZFNjYWxh cjxkb3VibGU+KHZhbCkpOworICAgICAgIGJyZWFrOworICAgICB9CisgICAgIGNhc2UgRVRfU1RS SU5HOiB7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2xldmVsZGF0YWJhc2UvcG9ydC9wb3J0X2Nocm9taXVtLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbGV2ZWxkYXRhYmFzZS9wb3J0L3BvcnRfY2hy b21pdW0uaAorQEAgLTIzLDggKzIzLDExIEBACisgbmFtZXNwYWNlIGxldmVsZGIgeworIG5hbWVz cGFjZSBwb3J0IHsKKyAKKy0vLyBDaHJvbWl1bSBvbmx5IHN1cHBvcnRzIGxpdHRsZSBlbmRpYW4u CisrI2lmIEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4KKyBzdGF0aWMgY29uc3QgYm9vbCBrTGl0dGxl RW5kaWFuID0gdHJ1ZTsKKysjZWxzZQorK3N0YXRpYyBjb25zdCBib29sIGtMaXR0bGVFbmRpYW4g PSBmYWxzZTsKKysjZW5kaWYKKyAKKyBjbGFzcyBMT0NLQUJMRSBNdXRleCB7CisgIHB1YmxpYzoK Ky0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbW9kcF9i NjQvQlVJTEQuZ24KKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvbW9kcF9iNjQvQlVJTEQuZ24KK0BAIC0yLDEwICsyLDE2IEBACisgIyBVc2Ugb2YgdGhp cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu IGJlCisgIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIAorK2ltcG9ydCgiLy9idWlsZC9j b25maWcvaG9zdF9ieXRlb3JkZXIuZ25pIikKKysKKyBzdGF0aWNfbGlicmFyeSgibW9kcF9iNjQi KSB7CisgICBzb3VyY2VzID0gWworICAgICAibW9kcF9iNjQuY2MiLAorICAgICAibW9kcF9iNjQu aCIsCisgICAgICJtb2RwX2I2NF9kYXRhLmgiLAorICAgXQorKworKyAgaWYgKGhvc3RfYnl0ZW9y ZGVyID09ICJiaWciKSB7CisrICAgIGRlZmluZXMgPSBbICJXT1JEU19CSUdFTkRJQU49MSIgXQor KyAgfQorIH0KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvbW9kcF9iNjQvbW9kcF9iNjQuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvbW9kcF9iNjQvbW9kcF9iNjQuY2MKK0BAIC0xMTgsNyArMTE4LDcg QEAgc2l6ZV90IG1vZHBfYjY0X2VuY29kZShjaGFyKiBkZXN0LCBjb25zdCBjaGFyKiBzdHIsIHNp emVfdCBsZW4pCisgfQorIAorICNpZmRlZiBXT1JEU19CSUdFTkRJQU4gICAvKiBCSUcgRU5ESUFO IC0tIFNVTiAvIElCTSAvIE1PVE9ST0xBICovCistaW50IG1vZHBfYjY0X2RlY29kZShjaGFyKiBk ZXN0LCBjb25zdCBjaGFyKiBzcmMsIGludCBsZW4pCisrc2l6ZV90IG1vZHBfYjY0X2RlY29kZShj aGFyKiBkZXN0LCBjb25zdCBjaGFyKiBzcmMsIHNpemVfdCBsZW4pCisgeworICAgICBpZiAobGVu ID09IDApIHJldHVybiAwOworIAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9pbmNsdWRlL3BlcmZldHRvL2Jhc2UvdXRpbHMuaAorKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9p bmNsdWRlL3BlcmZldHRvL2Jhc2UvdXRpbHMuaAorQEAgLTIyLDYgKzIyLDcgQEAKKyAjaW5jbHVk ZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgor KyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyAjaWYgIVBFUkZFVFRPX0JVSUxERkxBRyhQRVJGRVRU T19PU19XSU4pCisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNlbmRpZgorQEAgLTkxLDcgKzky LDcgQEAgc3RydWN0IEZyZWVEZWxldGVyIHsKKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyBj b25zdGV4cHIgVCBBc3N1bWVMaXR0bGVFbmRpYW4oVCB2YWx1ZSkgeworLSAgc3RhdGljX2Fzc2Vy dChfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXywKKysgIHN0YXRpY19h c3NlcnQoc3RkOjppc19zYW1lPFQsVD46OnZhbHVlICYmIF9fQllURV9PUkRFUl9fID09IF9fT1JE RVJfTElUVExFX0VORElBTl9fLAorICAgICAgICAgICAgICAgICAiVW5pbXBsZW1lbnRlZCBvbiBi aWctZW5kaWFuIGFyY2hzIik7CisgICByZXR1cm4gdmFsdWU7CisgfQorLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9pbmNsdWRlL3BlcmZl dHRvL3Byb3RvemVyby9tZXNzYWdlLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvcGVyZmV0dG8vaW5jbHVkZS9wZXJmZXR0by9wcm90b3plcm8vbWVz c2FnZS5oCitAQCAtMTM4LDYgKzEzOCwxMyBAQCBjbGFzcyBQRVJGRVRUT19FWFBPUlQgTWVzc2Fn ZSB7CisgCisgICAgIHBvcyA9IHByb3RvX3V0aWxzOjpXcml0ZVZhckludChwcm90b191dGlsczo6 TWFrZVRhZ0ZpeGVkPFQ+KGZpZWxkX2lkKSwgcG9zKTsKKyAgICAgbWVtY3B5KHBvcywgJnZhbHVl LCBzaXplb2YoVCkpOworKyNpZiBfX0JZVEVfT1JERVJfXyAhPSBfX09SREVSX0xJVFRMRV9FTkRJ QU5fXworKyAgICBmb3IgKHNpemVfdCBpID0gc2l6ZW9mKFQpLzI7IGktLTsgKSB7CisrICAgICAg dWludDhfdCB0bXAgPSBwb3NbaV07CisrICAgICAgcG9zW2ldID0gcG9zW3NpemVvZihUKS0xLWld OworKyAgICAgIHBvc1tzaXplb2YoVCktMS1pXSA9IHRtcDsKKysgICAgfQorKyNlbmRpZgorICAg ICBwb3MgKz0gc2l6ZW9mKFQpOworICAgICAvLyBUT0RPOiBPcHRpbWl6ZSBtZW1jcHkgcGVyZm9y bWFuY2UsIHNlZSBodHRwOi8vY3JidWcuY29tLzYyNDMxMSAuCisgICAgIFdyaXRlVG9TdHJlYW0o YnVmZmVyLCBwb3MpOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9wZXJmZXR0by9zcmMvcHJvdG96ZXJvL21lc3NhZ2UuY2MKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGVyZmV0dG8vc3JjL3Byb3RvemVy by9tZXNzYWdlLmNjCitAQCAtMjEsMTIgKzIxLDYgQEAKKyAjaW5jbHVkZSAicGVyZmV0dG8vYmFz ZS9sb2dnaW5nLmgiCisgI2luY2x1ZGUgInBlcmZldHRvL3Byb3RvemVyby9tZXNzYWdlX2hhbmRs ZS5oIgorIAorLSNpZiBfX0JZVEVfT1JERVJfXyAhPSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXwor LS8vIFRoZSBtZW1jcHkoKSBmb3IgZmxvYXQgYW5kIGRvdWJsZSBiZWxvdyBuZWVkcyB0byBiZSBh ZGp1c3RlZCBpZiB3ZSB3YW50IHRvCistLy8gc3VwcG9ydCBiaWcgZW5kaWFuIENQVXMuIFRoZXJl IGRvZXNuJ3Qgc2VlbSB0byBiZSBhIGNvbXBlbGxpbmcgbmVlZCB0b2RheS4KKy0jZXJyb3IgVW5p bXBsZW1lbnRlZCBmb3IgYmlnIGVuZGlhbiBhcmNocy4KKy0jZW5kaWYKKy0KKyBuYW1lc3BhY2Ug cHJvdG96ZXJvIHsKKyAKKyAvLyBzdGF0aWMKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvcGVyZmV0dG8vc3JjL3Byb3RvemVyby9wcm90b19kZWNvZGVy LmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3Bl cmZldHRvL3NyYy9wcm90b3plcm8vcHJvdG9fZGVjb2Rlci5jYworQEAgLTI5LDcgKzI5LDggQEAg dXNpbmcgbmFtZXNwYWNlIHByb3RvX3V0aWxzOworICNkZWZpbmUgQllURV9TV0FQX1RPX0xFMzIo eCkgKHgpCisgI2RlZmluZSBCWVRFX1NXQVBfVE9fTEU2NCh4KSAoeCkKKyAjZWxzZQorLSNlcnJv ciBVbmltcGxlbWVudGVkIGZvciBiaWcgZW5kaWFuIGFyY2hzLgorKyNkZWZpbmUgQllURV9TV0FQ X1RPX0xFMzIoeCkgX19idWlsdGluX2Jzd2FwMzIoeCkKKysjZGVmaW5lIEJZVEVfU1dBUF9UT19M RTY0KHgpIF9fYnVpbHRpbl9ic3dhcDY0KHgpCisgI2VuZGlmCisgCisgUHJvdG9EZWNvZGVyOjpG aWVsZCBQcm90b0RlY29kZXI6OlJlYWRGaWVsZCgpIHsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tQb3N0Q29uZmln LmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tp YS9pbmNsdWRlL2NvcmUvU2tQb3N0Q29uZmlnLmgKK0BAIC00MCwxMiArNDAsNiBAQAorICMgIGVy cm9yICJtdXN0IGRlZmluZSBlaXRoZXIgU0tfQ1BVX0xFTkRJQU4gb3IgU0tfQ1BVX0JFTkRJQU4i CisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoU0tfQ1BVX0JFTkRJQU4pICYmICFkZWZpbmVkKElf QUNLTk9XTEVER0VfU0tJQV9ET0VTX05PVF9TVVBQT1JUX0JJR19FTkRJQU4pCistICAgICNlcnJv ciAiVGhlIFNraWEgdGVhbSBpcyBub3QgZW5kaWFuLXNhdnZ5IGVub3VnaCB0byBzdXBwb3J0IGJp Zy1lbmRpYW4gQ1BVcy4iCistICAgICNlcnJvciAiSWYgeW91IHN0aWxsIHdhbnQgdG8gdXNlIFNr aWEsIgorLSAgICAjZXJyb3IgInBsZWFzZSBkZWZpbmUgSV9BQ0tOT1dMRURHRV9TS0lBX0RPRVNf Tk9UX1NVUFBPUlRfQklHX0VORElBTi4iCistI2VuZGlmCistCisgLyoqCisgICogRW5zdXJlIHRo ZSBwb3J0IGhhcyBkZWZpbmVkIGFsbCBvZiBTS19YMzJfU0hJRlQsIG9yIG5vbmUgb2YgdGhlbS4K KyAgKi8KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv c2tpYS9pbmNsdWRlL3ByaXZhdGUvR3JUeXBlc1ByaXYuaAorKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvcHJpdmF0ZS9HclR5cGVz UHJpdi5oCitAQCAtNjUsOSArNjUsNiBAQCBlbnVtIEdyUGl4ZWxDb25maWcgeworIHN0YXRpYyBj b25zdCBpbnQga0dyUGl4ZWxDb25maWdDbnQgPSBrTGFzdF9HclBpeGVsQ29uZmlnICsgMTsKKyAK KyAvLyBBbGlhc2VzIGZvciBwaXhlbCBjb25maWdzIHRoYXQgbWF0Y2ggc2tpYSdzIGJ5dGUgb3Jk ZXIuCistI2lmbmRlZiBTS19DUFVfTEVORElBTgorLSNlcnJvciAiU2tpYSBncHUgY3VycmVudGx5 IGFzc3VtZXMgbGl0dGxlIGVuZGlhbiIKKy0jZW5kaWYKKyAjaWYgU0tfUE1DT0xPUl9CWVRFX09S REVSKEIsRyxSLEEpCisgc3RhdGljIGNvbnN0IEdyUGl4ZWxDb25maWcga1NraWE4ODg4X0dyUGl4 ZWxDb25maWcgPSBrQkdSQV84ODg4X0dyUGl4ZWxDb25maWc7CisgI2VsaWYgU0tfUE1DT0xPUl9C WVRFX09SREVSKFIsRyxCLEEpCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L3NraWEvc3JjL2NvZGVjL1NrQ29kZWNQcml2LmgKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvY29kZWMvU2tDb2Rl Y1ByaXYuaAorQEAgLTE0LDYgKzE0LDcgQEAKKyAjaW5jbHVkZSAiU2tFbmNvZGVkT3JpZ2luLmgi CisgI2luY2x1ZGUgIlNrSW1hZ2VJbmZvLmgiCisgI2luY2x1ZGUgIlNrVHlwZXMuaCIKKysjaW5j bHVkZSAiU2tFbmRpYW4uaCIKKyAKKyAjaWZkZWYgU0tfUFJJTlRfQ09ERUNfTUVTU0FHRVMKKyAg ICAgI2RlZmluZSBTa0NvZGVjUHJpbnRmIFNrRGVidWdmCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL2NvcmUvU2tDb2xvci5jcHAKKysr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMv Y29yZS9Ta0NvbG9yLmNwcAorQEAgLTEwOCwxMyArMTA4LDI5IEBAIFNrQ29sb3IgU2tIU1ZUb0Nv bG9yKFU4Q1BVIGEsIGNvbnN0IFNrU2NhbGFyIGhzdlszXSkgeworIHRlbXBsYXRlIDw+CisgU2tD b2xvcjRmIFNrQ29sb3I0Zjo6RnJvbUNvbG9yKFNrQ29sb3IgYmdyYSkgeworICAgICBTa0NvbG9y NGYgcmdiYTsKKy0gICAgc3dpenpsZV9yYihTazRmX2Zyb21MMzIoYmdyYSkpLnN0b3JlKHJnYmEu dmVjKCkpOworKyAgICBTazRmIGM0ZiA9IFNrNGZfZnJvbUwzMihiZ3JhKTsKKysjaWZkZWYgU0tf Q1BVX0JFTkRJQU4KKysgICAgLy8gQVJHQiAtPiBSR0JBCisrICAgIGM0ZiA9IFNrTnhfc2h1ZmZs ZTwxLCAyLCAzLCAwPihjNGYpOworKyNlbHNlCisrICAgIC8vIEJHUkEgLT4gUkdCQQorKyAgICBj NGYgPSBzd2l6emxlX3JiKGM0Zik7CisrI2VuZGlmCisrICAgIGM0Zi5zdG9yZShyZ2JhLnZlYygp KTsKKyAgICAgcmV0dXJuIHJnYmE7CisgfQorIAorIHRlbXBsYXRlIDw+CisgU2tDb2xvciBTa0Nv bG9yNGY6OnRvU2tDb2xvcigpIGNvbnN0IHsKKy0gICAgcmV0dXJuIFNrNGZfdG9MMzIoc3dpenps ZV9yYihTazRmOjpMb2FkKHRoaXMtPnZlYygpKSkpOworKyAgICBTazRmIGM0ZiA9IFNrNGY6Okxv YWQodGhpcy0+dmVjKCkpOworKyNpZmRlZiBTS19DUFVfQkVORElBTgorKyAgICAvLyBSR0JBIC0+ IEFSR0IKKysgICAgYzRmID0gU2tOeF9zaHVmZmxlPDMsIDAsIDEsIDI+KGM0Zik7CisrI2Vsc2UK KysgICAgLy8gUkdCQSAtPiBCR1JBCisrICAgIGM0ZiA9IHN3aXp6bGVfcmIoYzRmKTsKKysjZW5k aWYKKysgICAgcmV0dXJuIFNrNGZfdG9MMzIoYzRmKTsKKyB9CisgCisgdGVtcGxhdGUgPD4KKy0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMv Y29yZS9Ta1BpeG1hcC5jcHAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta1BpeG1hcC5jcHAKK0BAIC0yNDYsNyArMjQ2LDgg QEAgU2tDb2xvciBTa1BpeG1hcDo6Z2V0Q29sb3IoaW50IHgsIGludCB5KSBjb25zdCB7CisgICAg IGNvbnN0IGJvb2wgbmVlZHNVbnByZW11bCA9IChrUHJlbXVsX1NrQWxwaGFUeXBlID09IGZJbmZv LmFscGhhVHlwZSgpKTsKKyAgICAgYXV0byB0b0NvbG9yID0gW25lZWRzVW5wcmVtdWxdKHVpbnQz Ml90IG1heWJlUHJlbXVsQ29sb3IpIHsKKyAgICAgICAgIHJldHVybiBuZWVkc1VucHJlbXVsID8g U2tVblByZU11bHRpcGx5OjpQTUNvbG9yVG9Db2xvcihtYXliZVByZW11bENvbG9yKQorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOiBTa1N3aXp6bGVfQkdSQV90b19QTUNvbG9yKG1heWJl UHJlbXVsQ29sb3IpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTa0NvbG9yU2V0 QVJHQihTa0dldFBhY2tlZEEzMihtYXliZVByZW11bENvbG9yKSwgU2tHZXRQYWNrZWRSMzIobWF5 YmVQcmVtdWxDb2xvciksCisrCQkJCQkgICAgICBTa0dldFBhY2tlZEczMihtYXliZVByZW11bENv bG9yKSwgU2tHZXRQYWNrZWRCMzIobWF5YmVQcmVtdWxDb2xvcikpOworICAgICB9OworIAorICAg ICBzd2l0Y2ggKHRoaXMtPmNvbG9yVHlwZSgpKSB7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL29wdHMvU2s0cHhfbm9uZS5oCisrKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL29w dHMvU2s0cHhfbm9uZS5oCitAQCAtMzUsNyArMzUsNiBAQCBpbmxpbmUgU2s0cHggU2s0cHg6Oldp ZGU6OmRpdjI1NSgpIGNvbnN0IHsKKyB9CisgCisgaW5saW5lIFNrNHB4IFNrNHB4OjphbHBoYXMo KSBjb25zdCB7CistICAgIHN0YXRpY19hc3NlcnQoU0tfQTMyX1NISUZUID09IDI0LCAiVGhpcyBt ZXRob2QgYXNzdW1lcyBsaXR0bGUtZW5kaWFuLiIpOworICAgICByZXR1cm4gU2sxNmIoKCp0aGlz KVsgM10sICgqdGhpcylbIDNdLCAoKnRoaXMpWyAzXSwgKCp0aGlzKVsgM10sCisgICAgICAgICAg ICAgICAgICAoKnRoaXMpWyA3XSwgKCp0aGlzKVsgN10sICgqdGhpcylbIDddLCAoKnRoaXMpWyA3 XSwKKyAgICAgICAgICAgICAgICAgICgqdGhpcylbMTFdLCAoKnRoaXMpWzExXSwgKCp0aGlzKVsx MV0sICgqdGhpcylbMTFdLAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrQmxpdFJvd19vcHRzLmgKKysrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvb3B0cy9Ta0JsaXRS b3dfb3B0cy5oCitAQCAtMjM3LDggKzIzNyw4IEBAIHZvaWQgYmxpdF9yb3dfczMyYV9vcGFxdWUo U2tQTUNvbG9yKiBkc3QsIGNvbnN0IFNrUE1Db2xvciogc3JjLCBpbnQgbGVuLCBVOENQVSBhCisg ICAgICAgICAvLyB3aXRoIGNocm9taXVtOjYxMTAwMiB3ZSBuZWVkIHRvIGtlZXAgaXQgdW50aWwg d2UgZmlndXJlIG91dCB3aGVyZQorICAgICAgICAgLy8gdGhlIG5vbi1wcmVtdWx0aXBsaWVkIHNy YyB2YWx1ZXMgKGxpa2UgMHgwMEZGRkZGRikgYXJlIGNvbWluZyBmcm9tLgorICAgICAgICAgLy8g VE9ETyhtdGtsZWluKTogc29ydCB0aGlzIG91dCBhbmQgYXNzZXJ0ICpzcmMgaXMgcHJlbXVsIGhl cmUuCistICAgICAgICBpZiAoKnNyYyAmIDB4RkYwMDAwMDApIHsKKy0gICAgICAgICAgICAqZHN0 ID0gKCpzcmMgPj0gMHhGRjAwMDAwMCkgPyAqc3JjIDogU2tQTVNyY092ZXIoKnNyYywgKmRzdCk7 CisrICAgICAgICBpZiAoKnNyYyAmICgweEZGIDw8IFNLX0EzMl9TSElGVCkpIHsKKysgICAgICAg ICAgICAqZHN0ID0gKCgqc3JjIDw8ICgyNCAtIFNLX0EzMl9TSElGVCkpID49IDB4RkYwMDAwMDAp ID8gKnNyYyA6IFNrUE1TcmNPdmVyKCpzcmMsICpkc3QpOworICAgICAgICAgfQorICAgICAgICAg c3JjKys7CisgICAgICAgICBkc3QrKzsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvb3B0cy9Ta1Jhc3RlclBpcGVsaW5lX29wdHMuaAor KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3Ny Yy9vcHRzL1NrUmFzdGVyUGlwZWxpbmVfb3B0cy5oCitAQCAtOTQ4LDEwICs5NDgsMTcgQEAgU0kg dm9pZCBmcm9tXzQ0NDQoVTE2IF80NDQ0LCBGKiByLCBGKiBnLCBGKiBiLCBGKiBhKSB7CisgICAg ICphID0gY2FzdCh3aWRlICYgKDE1PDwgMCkpICogKDEuMGYgLyAoMTU8PCAwKSk7CisgfQorIFNJ IHZvaWQgZnJvbV84ODg4KFUzMiBfODg4OCwgRiogciwgRiogZywgRiogYiwgRiogYSkgeworKyNp ZmRlZiBTS19DUFVfQkVORElBTgorKyAgICAqciA9IGNhc3QoKF84ODg4ID4+IDI0KSAgICAgICAp ICogKDEvMjU1LjBmKTsKKysgICAgKmcgPSBjYXN0KChfODg4OCA+PiAxNikgJiAweGZmKSAqICgx LzI1NS4wZik7CisrICAgICpiID0gY2FzdCgoXzg4ODggPj4gIDgpICYgMHhmZikgKiAoMS8yNTUu MGYpOworKyAgICAqYSA9IGNhc3QoKF84ODg4ICAgICAgKSAmIDB4ZmYpICogKDEvMjU1LjBmKTsK KysjZWxzZQorICAgICAqciA9IGNhc3QoKF84ODg4ICAgICAgKSAmIDB4ZmYpICogKDEvMjU1LjBm KTsKKyAgICAgKmcgPSBjYXN0KChfODg4OCA+PiAgOCkgJiAweGZmKSAqICgxLzI1NS4wZik7Cisg ICAgICpiID0gY2FzdCgoXzg4ODggPj4gMTYpICYgMHhmZikgKiAoMS8yNTUuMGYpOworICAgICAq YSA9IGNhc3QoKF84ODg4ID4+IDI0KSAgICAgICApICogKDEvMjU1LjBmKTsKKysjZW5kaWYKKyB9 CisgU0kgdm9pZCBmcm9tXzEwMTAxMDIoVTMyIHJnYmEsIEYqIHIsIEYqIGcsIEYqIGIsIEYqIGEp IHsKKyAgICAgKnIgPSBjYXN0KChyZ2JhICAgICAgKSAmIDB4M2ZmKSAqICgxLzEwMjMuMGYpOwor QEAgLTEyNzgsMTAgKzEyODUsMTcgQEAgU1RBR0Uoc3Jjb3Zlcl9yZ2JhXzg4ODgsIGNvbnN0IFNr UmFzdGVyUGlwZWxpbmVfTWVtb3J5Q3R4KiBjdHgpIHsKKyAgICAgYXV0byBwdHIgPSBwdHJfYXRf eHk8dWludDMyX3Q+KGN0eCwgZHgsZHkpOworIAorICAgICBVMzIgZHN0ID0gbG9hZDxVMzI+KHB0 ciwgdGFpbCk7CisrI2lmZGVmIFNLX0NQVV9CRU5ESUFOCisrICAgIGRyID0gY2FzdCgoZHN0ID4+ IDI0KSAgICAgICApOworKyAgICBkZyA9IGNhc3QoKGRzdCA+PiAxNikgJiAweGZmKTsKKysgICAg ZGIgPSBjYXN0KChkc3QgPj4gIDgpICYgMHhmZik7CisrICAgIGRhID0gY2FzdCgoZHN0ICAgICAg KSAmIDB4ZmYpOworKyNlbHNlCisgICAgIGRyID0gY2FzdCgoZHN0ICAgICAgKSAmIDB4ZmYpOwor ICAgICBkZyA9IGNhc3QoKGRzdCA+PiAgOCkgJiAweGZmKTsKKyAgICAgZGIgPSBjYXN0KChkc3Qg Pj4gMTYpICYgMHhmZik7CisgICAgIGRhID0gY2FzdCgoZHN0ID4+IDI0KSAgICAgICApOworKyNl bmRpZgorICAgICAvLyB7ZHIsZGcsZGIsZGF9IGFyZSBpbiBbMCwyNTVdCisgICAgIC8vIHsgciwg ZywgYiwgYX0gYXJlIGluIFswLCAgMV0gKGJ1dCBtYXkgYmUgb3V0IG9mIGdhbXV0KQorIAorQEAg LTEyOTIsMTAgKzEzMDYsMTcgQEAgU1RBR0Uoc3Jjb3Zlcl9yZ2JhXzg4ODgsIGNvbnN0IFNrUmFz dGVyUGlwZWxpbmVfTWVtb3J5Q3R4KiBjdHgpIHsKKyAgICAgLy8geyByLCBnLCBiLCBhfSBhcmUg bm93IGluIFswLDI1NV0gIChidXQgbWF5IGJlIG91dCBvZiBnYW11dCkKKyAKKyAgICAgLy8gdG9f dW5vcm0oKSBjbGFtcHMgYmFjayB0byBnYW11dC4gIFNjYWxpbmcgYnkgMSBzaW5jZSB3ZSdyZSBh bHJlYWR5IDI1NS1iaWFzZWQuCisrI2lmZGVmIFNLX0NQVV9CRU5ESUFOCisrICAgIGRzdCA9IHRv X3Vub3JtKHIsIDEsIDI1NSkgPDwgMjQKKysgICAgICAgIHwgdG9fdW5vcm0oZywgMSwgMjU1KSA8 PCAxNgorKyAgICAgICAgfCB0b191bm9ybShiLCAxLCAyNTUpIDw8ICA4CisrICAgICAgICB8IHRv X3Vub3JtKGEsIDEsIDI1NSk7CisrI2Vsc2UKKyAgICAgZHN0ID0gdG9fdW5vcm0ociwgMSwgMjU1 KQorICAgICAgICAgfCB0b191bm9ybShnLCAxLCAyNTUpIDw8ICA4CisgICAgICAgICB8IHRvX3Vu b3JtKGIsIDEsIDI1NSkgPDwgMTYKKyAgICAgICAgIHwgdG9fdW5vcm0oYSwgMSwgMjU1KSA8PCAy NDsKKysjZW5kaWYKKyAgICAgc3RvcmUocHRyLCBkc3QsIHRhaWwpOworIH0KKyAKK0BAIC0xNjk0 LDEwICsxNzE1LDE3IEBAIFNUQUdFKGdhdGhlcl84ODg4LCBjb25zdCBTa1Jhc3RlclBpcGVsaW5l X0dhdGhlckN0eCogY3R4KSB7CisgU1RBR0Uoc3RvcmVfODg4OCwgY29uc3QgU2tSYXN0ZXJQaXBl bGluZV9NZW1vcnlDdHgqIGN0eCkgeworICAgICBhdXRvIHB0ciA9IHB0cl9hdF94eTx1aW50MzJf dD4oY3R4LCBkeCxkeSk7CisgCisrI2lmZGVmIFNLX0NQVV9CRU5ESUFOCisrICAgIFUzMiBweCA9 IHRvX3Vub3JtKHIsIDI1NSkgPDwgMjQKKysgICAgICAgICAgIHwgdG9fdW5vcm0oZywgMjU1KSA8 PCAxNgorKyAgICAgICAgICAgfCB0b191bm9ybShiLCAyNTUpIDw8ICA4CisrICAgICAgICAgICB8 IHRvX3Vub3JtKGEsIDI1NSk7CisrI2Vsc2UKKyAgICAgVTMyIHB4ID0gdG9fdW5vcm0ociwgMjU1 KQorICAgICAgICAgICAgfCB0b191bm9ybShnLCAyNTUpIDw8ICA4CisgICAgICAgICAgICB8IHRv X3Vub3JtKGIsIDI1NSkgPDwgMTYKKyAgICAgICAgICAgIHwgdG9fdW5vcm0oYSwgMjU1KSA8PCAy NDsKKysjZW5kaWYKKyAgICAgc3RvcmUocHRyLCBweCwgdGFpbCk7CisgfQorIAorQEAgLTI4NTIs MTAgKzI4ODAsMTcgQEAgU0kgdm9pZCBmcm9tXzg4ODgoVTMyIHJnYmEsIFUxNiogciwgVTE2KiBn LCBVMTYqIGIsIFUxNiogYSkgeworICAgICAgICAgcmV0dXJuIGNhc3Q8VTE2Pih2KTsKKyAgICAg fTsKKyAjZW5kaWYKKysjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KKysgICAgKnIgPSBjYXN0X1UxNihy Z2JhID4+ICAgMTYpID4+ICA4OworKyAgICAqZyA9IGNhc3RfVTE2KHJnYmEgPj4gICAxNikgJiAy NTU7CisrICAgICpiID0gY2FzdF9VMTYocmdiYSAmIDY1NTM1KSA+PiAgODsKKysgICAgKmEgPSBj YXN0X1UxNihyZ2JhICYgNjU1MzUpICYgMjU1OworKyNlbHNlCisgICAgICpyID0gY2FzdF9VMTYo cmdiYSAmIDY1NTM1KSAmIDI1NTsKKyAgICAgKmcgPSBjYXN0X1UxNihyZ2JhICYgNjU1MzUpID4+ ICA4OworICAgICAqYiA9IGNhc3RfVTE2KHJnYmEgPj4gICAxNikgJiAyNTU7CisgICAgICphID0g Y2FzdF9VMTYocmdiYSA+PiAgIDE2KSA+PiAgODsKKysjZW5kaWYKKyB9CisgCisgU0kgdm9pZCBs b2FkXzg4ODhfKGNvbnN0IHVpbnQzMl90KiBwdHIsIHNpemVfdCB0YWlsLCBVMTYqIHIsIFUxNiog ZywgVTE2KiBiLCBVMTYqIGEpIHsKK0BAIC0yODk3LDEwICsyOTMyLDE1IEBAIFNJIHZvaWQgc3Rv cmVfODg4OF8odWludDMyX3QqIHB0ciwgc2l6ZV90IHRhaWwsIFUxNiByLCBVMTYgZywgVTE2IGIs IFUxNiBhKSB7CisgICAgICAgICBjYXNlIDI6IHZzdDRfbGFuZV91OCgodWludDhfdCopKHB0cisx KSwgcmdiYSwgMSk7CisgICAgICAgICBjYXNlIDE6IHZzdDRfbGFuZV91OCgodWludDhfdCopKHB0 ciswKSwgcmdiYSwgMCk7CisgICAgIH0KKysjZWxzZQorKyNpZmRlZiBTS19DUFVfQkVORElBTgor KyAgICBzdG9yZShwdHIsIHRhaWwsIGNhc3Q8VTMyPigocjw8OCkgfCBnKSA8PCAxNgorKyAgICAg ICAgICAgICAgICAgICB8IGNhc3Q8VTMyPigoYjw8OCkgfCBhKSA8PCAwKTsKKyAjZWxzZQorICAg ICBzdG9yZShwdHIsIHRhaWwsIGNhc3Q8VTMyPihyIHwgKGc8PDgpKSA8PCAgMAorICAgICAgICAg ICAgICAgICAgICB8IGNhc3Q8VTMyPihiIHwgKGE8PDgpKSA8PCAxNik7CisgI2VuZGlmCisrI2Vu ZGlmCisgfQorIAorIFNUQUdFX1BQKGxvYWRfODg4OCwgY29uc3QgU2tSYXN0ZXJQaXBlbGluZV9N ZW1vcnlDdHgqIGN0eCkgeworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9za2lhL3NyYy91dGlscy9Ta0pTT04uY3BwCisrKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL3V0aWxzL1NrSlNPTi5jcHAK K0BAIC0zNCw2ICszNCwxMCBAQCB2b2lkIFZhbHVlOjppbml0X3RhZ2dlZChUYWcgdCkgeworIAor IC8vIFBvaW50ZXIgdmFsdWVzIHN0b3JlIGEgdHlwZSAoaW4gdGhlIHVwcGVyIGtUYWdCaXRzIGJp dHMpIGFuZCBhIHBvaW50ZXIuCisgdm9pZCBWYWx1ZTo6aW5pdF90YWdnZWRfcG9pbnRlcihUYWcg dCwgdm9pZCogcCkgeworKyNpZiAhZGVmaW5lZChTS19DUFVfTEVORElBTikKKysgICAgLy8gQ2hl Y2sgdGhhdCBrUmVjQWxpZ24gaXMgbGFyZ2UgZW5vdWdoIHRvIGxlYXZlIHJvb20gZm9yIHRoZSB0 YWcKKysgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVmFsdWUpID4gc2l6ZW9mKHVpbnRwdHJfdCkg fHwgIShrUmVjQWxpZ24gJiBWYWx1ZTo6a1RhZ01hc2spLCAia1JlY0FsaWduIGlzIG5vdCBhIG11 bHRpcGxlIG9mIGtUYWdNYXNrKzEiKTsKKysjZW5kaWYKKyAgICAgKnRoaXMtPmNhc3Q8dWludHB0 cl90PigpID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHApOworIAorICAgICBpZiAoc2l6 ZW9mKFZhbHVlKSA9PSBzaXplb2YodWludHB0cl90KSkgeworQEAgLTE2OSw3ICsxNzMsNyBAQCBw cml2YXRlOgorICNpZiBkZWZpbmVkKFNLX0NQVV9MRU5ESUFOKQorICAgICAgICAgKnM2NCAmPSAw eDAwZmZmZmZmZmZmZmZmZmZVTEwgPj4gKChrTWF4SW5saW5lU3RyaW5nU2l6ZSAtIHNpemUpICog OCk7CisgI2Vsc2UKKy0gICAgICAgIHN0YXRpY19hc3NlcnQoZmFsc2UsICJCaWctZW5kaWFuIGJ1 aWxkcyBhcmUgbm90IHN1cHBvcnRlZCBhdCB0aGlzIHRpbWUuIik7CisrICAgICAgICAqczY0ICY9 IDB4ZmZmZmZmZmZmZmZmZmYwMFVMTCA8PCAoKGtNYXhJbmxpbmVTdHJpbmdTaXplIC0gc2l6ZSkg KiA4KTsKKyAjZW5kaWYKKyAgICAgfQorIH07CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL3V0aWxzL1NrSlNPTi5oCisrKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvc3JjL3V0aWxzL1Nr SlNPTi5oCitAQCAtMTIwLDYgKzEyMCw3IEBAIHByb3RlY3RlZDoKKyAgICAgICAgICAtLSBoaWdo ZXN0IDMgYml0cyByZXNlcnZlZCBmb3IgdHlwZSBzdG9yYWdlCisgCisgICAgICAqLworKyNpZiBk ZWZpbmVkKFNLX0NQVV9MRU5ESUFOKQorICAgICBlbnVtIGNsYXNzIFRhZyA6IHVpbnQ4X3Qgewor ICAgICAgICAgLy8gV2UgcGlja2VkIGtTaG9ydFN0cmluZyA9PSAwIHNvIHRoYXQgdGFnIDB4MDAg YW5kIHN0b3JlZCBtYXhfc2l6ZS1zaXplICg3LTc9MCkKKyAgICAgICAgIC8vIGNvbnZlbmllbnRs eSBvdmVybGFwIHRoZSAnXDAnIHRlcm1pbmF0b3IsIGFsbG93aW5nIHVzIHRvIHN0b3JlIGEgNyBj aGFyYWN0ZXIKK0BAIC0xMzQsNiArMTM1LDIyIEBAIHByb3RlY3RlZDoKKyAgICAgICAgIGtPYmpl Y3QgICAgICAgICAgICAgICAgICAgICAgID0gMGIxMTEwMDAwMCwgIC8vIHB0ciB0byBleHRlcm5h bCBzdG9yYWdlCisgICAgIH07CisgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBrVGFnTWFz ayA9IDBiMTExMDAwMDA7CisrI2Vsc2UKKysgICAgZW51bSBjbGFzcyBUYWcgOiB1aW50OF90IHsK KysgICAgICAgIC8vIFdlIHBpY2tlZCBrU2hvcnRTdHJpbmcgPT0gMCBzbyB0aGF0IHRhZyAweDAw IGFuZCBzdG9yZWQgbWF4X3NpemUtc2l6ZSAoNy03PTApCisrICAgICAgICAvLyBjb252ZW5pZW50 bHkgb3ZlcmxhcCB0aGUgJ1wwJyB0ZXJtaW5hdG9yLCBhbGxvd2luZyB1cyB0byBzdG9yZSBhIDcg Y2hhcmFjdGVyCisrICAgICAgICAvLyBDIHN0cmluZyBpbmxpbmUuCisrICAgICAgICBrU2hvcnRT dHJpbmcgICAgICAgICAgICAgICAgICA9IDBiMDAwMDAwMDAsICAvLyBpbmxpbmUgcGF5bG9hZAor KyAgICAgICAga051bGwgICAgICAgICAgICAgICAgICAgICAgICAgPSAwYjAwMDAwMDAxLCAgLy8g bm8gcGF5bG9hZAorKyAgICAgICAga0Jvb2wgICAgICAgICAgICAgICAgICAgICAgICAgPSAwYjAw MDAwMDEwLCAgLy8gaW5saW5lIHBheWxvYWQKKysgICAgICAgIGtJbnQgICAgICAgICAgICAgICAg ICAgICAgICAgID0gMGIwMDAwMDAxMSwgIC8vIGlubGluZSBwYXlsb2FkCisrICAgICAgICBrRmxv YXQgICAgICAgICAgICAgICAgICAgICAgICA9IDBiMDAwMDAxMDAsICAvLyBpbmxpbmUgcGF5bG9h ZAorKyAgICAgICAga1N0cmluZyAgICAgICAgICAgICAgICAgICAgICAgPSAwYjAwMDAwMTAxLCAg Ly8gcHRyIHRvIGV4dGVybmFsIHN0b3JhZ2UKKysgICAgICAgIGtBcnJheSAgICAgICAgICAgICAg ICAgICAgICAgID0gMGIwMDAwMDExMCwgIC8vIHB0ciB0byBleHRlcm5hbCBzdG9yYWdlCisrICAg ICAgICBrT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICA9IDBiMDAwMDAxMTEsICAvLyBwdHIg dG8gZXh0ZXJuYWwgc3RvcmFnZQorKyAgICB9OworKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4 X3Qga1RhZ01hc2sgPSAwYjAwMDAwMTExOworKyNlbmRpZgorIAorICAgICB2b2lkIGluaXRfdGFn Z2VkKFRhZyk7CisgICAgIHZvaWQgaW5pdF90YWdnZWRfcG9pbnRlcihUYWcsIHZvaWQqKTsKK0BA IC0xOTIsMTQgKzIwOSwxNCBAQCBwcml2YXRlOgorIAorICAgICB1aW50OF90IGZEYXRhOFtrVmFs dWVTaXplXTsKKyAKKy0jaWYgZGVmaW5lZChTS19DUFVfTEVORElBTikKKyAgICAgc3RhdGljIGNv bnN0ZXhwciBzaXplX3Qga1RhZ09mZnNldCA9IGtWYWx1ZVNpemUgLSAxOworIAorKyNpZiBkZWZp bmVkKFNLX0NQVV9MRU5ESUFOKQorICAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCBrVGFn UG9pbnRlck1hc2sgPQorICAgICAgICAgICAgIH4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihrVGFn TWFzaykgPDwgKChzaXplb2YodWludHB0cl90KSAtIDEpICogOCkpOworICNlbHNlCistICAgIC8v IFRoZSBjdXJyZW50IHZhbHVlIGxheW91dCBhc3N1bWVzIExFIGFuZCB3aWxsIHRha2Ugc29tZSB0 d2Vha2luZyBmb3IgQkUuCistICAgIHN0YXRpY19hc3NlcnQoZmFsc2UsICJCaWctZW5kaWFuIGJ1 aWxkcyBhcmUgbm90IHN1cHBvcnRlZCBhdCB0aGlzIHRpbWUuIik7CisrICAgIHN0YXRpYyBjb25z dGV4cHIgdWludHB0cl90IGtUYWdQb2ludGVyTWFzayA9CisrICAgICAgICAgICAgfnN0YXRpY19j YXN0PHVpbnRwdHJfdD4oa1RhZ01hc2spOworICNlbmRpZgorIH07CisgCistLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvdGhpcmRfcGFydHkvc2tj bXMvc2tjbXMuY2MKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvc2tpYS90aGlyZF9wYXJ0eS9za2Ntcy9za2Ntcy5jYworQEAgLTY2LDEwICs2NiwxNSBA QCBzdGF0aWMgZmxvYXQgZXZhbF9jdXJ2ZShjb25zdCBza2Ntc19DdXJ2ZSogY3VydmUsIGZsb2F0 IHgpIHsKKyAgICAgICAgIHVpbnQxNl90IGJlX2wsIGJlX2g7CisgICAgICAgICBtZW1jcHkoJmJl X2wsIGN1cnZlLT50YWJsZV8xNiArIDIqbG8sIDIpOworICAgICAgICAgbWVtY3B5KCZiZV9oLCBj dXJ2ZS0+dGFibGVfMTYgKyAyKmhpLCAyKTsKKysjaWYgX19CSUdfRU5ESUFOX18KKysgICAgICAg IGwgPSBiZV9sICogKDEvNjU1MzUuMGYpOworKyAgICAgICAgaCA9IGJlX2ggKiAoMS82NTUzNS4w Zik7CisrI2Vsc2UKKyAgICAgICAgIHVpbnQxNl90IGxlX2wgPSAoKGJlX2wgPDwgOCkgfCAoYmVf bCA+PiA4KSkgJiAweGZmZmY7CisgICAgICAgICB1aW50MTZfdCBsZV9oID0gKChiZV9oIDw8IDgp IHwgKGJlX2ggPj4gOCkpICYgMHhmZmZmOworICAgICAgICAgbCA9IGxlX2wgKiAoMS82NTUzNS4w Zik7CisgICAgICAgICBoID0gbGVfaCAqICgxLzY1NTM1LjBmKTsKKysjZW5kaWYKKyAgICAgfQor ICAgICByZXR1cm4gbCArIChoLWwpKnQ7CisgfQorQEAgLTEyNCwyMSArMTI5LDI5IEBAIGVudW0g eworIHN0YXRpYyB1aW50MTZfdCByZWFkX2JpZ191MTYoY29uc3QgdWludDhfdCogcHRyKSB7Cisg ICAgIHVpbnQxNl90IGJlOworICAgICBtZW1jcHkoJmJlLCBwdHIsIHNpemVvZihiZSkpOworKyNp ZiBfX0JJR19FTkRJQU5fXworKyAgICByZXR1cm4gYmU7CisrI2Vsc2UKKyAjaWYgZGVmaW5lZChf TVNDX1ZFUikKKyAgICAgcmV0dXJuIF9ieXRlc3dhcF91c2hvcnQoYmUpOworICNlbHNlCisgICAg IHJldHVybiBfX2J1aWx0aW5fYnN3YXAxNihiZSk7CisgI2VuZGlmCisrI2VuZGlmCisgfQorIAor IHN0YXRpYyB1aW50MzJfdCByZWFkX2JpZ191MzIoY29uc3QgdWludDhfdCogcHRyKSB7CisgICAg IHVpbnQzMl90IGJlOworICAgICBtZW1jcHkoJmJlLCBwdHIsIHNpemVvZihiZSkpOworKyNpZiBf X0JJR19FTkRJQU5fXworKyAgICByZXR1cm4gYmU7CisrI2Vsc2UKKyAjaWYgZGVmaW5lZChfTVND X1ZFUikKKyAgICAgcmV0dXJuIF9ieXRlc3dhcF91bG9uZyhiZSk7CisgI2Vsc2UKKyAgICAgcmV0 dXJuIF9fYnVpbHRpbl9ic3dhcDMyKGJlKTsKKyAjZW5kaWYKKysjZW5kaWYKKyB9CisgCisgc3Rh dGljIGludDMyX3QgcmVhZF9iaWdfaTMyKGNvbnN0IHVpbnQ4X3QqIHB0cikgeworLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5 L3NrY21zL3NyYy9UcmFuc2Zvcm1faW5sLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS90aGlyZF9wYXJ0eS9za2Ntcy9zcmMvVHJhbnNmb3Jt X2lubC5oCitAQCAtMzkyLDkgKzM5MiwxMSBAQCBTSSBVMzIgZ2F0aGVyXzMyKGNvbnN0IHVpbnQ4 X3QqIHAsIEkzMiBpeCkgeworIH0KKyAKKyBTSSBVMzIgZ2F0aGVyXzI0KGNvbnN0IHVpbnQ4X3Qq IHAsIEkzMiBpeCkgeworKyNpZiAhX19CSUdfRU5ESUFOX18KKyAgICAgLy8gRmlyc3QsIGJhY2sg dXAgYSBieXRlLiAgQW55IHBsYWNlIHdlJ3JlIGdhdGhlcmluZyBmcm9tIGhhcyBhIHNhZmUganVu ayBieXRlIHRvIHJlYWQKKyAgICAgLy8gaW4gZnJvbnQgb2YgaXQsIGVpdGhlciBhIHByZXZpb3Vz IHRhYmxlIHZhbHVlLCBvciBzb21lIHRhZyBtZXRhZGF0YS4KKyAgICAgcCAtPSAxOworKyNlbmRp ZgorIAorICAgICAvLyBMb2FkIHRoZSBpJ3RoIDI0LWJpdCB2YWx1ZSBmcm9tIHAsIGFuZCAxIGV4 dHJhIGJ5dGUuCisgICAgIGF1dG8gbG9hZF8yNF8zMiA9IFtwXShpbnQgaSkgeworQEAgLTQzNSw4 ICs0MzcsMTAgQEAgU0kgVTMyIGdhdGhlcl8yNChjb25zdCB1aW50OF90KiBwLCBJMzIgaXgpIHsK KyAKKyAjaWYgIWRlZmluZWQoX19hcm1fXykKKyAgICAgU0kgdm9pZCBnYXRoZXJfNDgoY29uc3Qg dWludDhfdCogcCwgSTMyIGl4LCBVNjQqIHYpIHsKKysjaWYgIV9fQklHX0VORElBTl9fCisgICAg ICAgICAvLyBBcyBpbiBnYXRoZXJfMjQoKSwgd2l0aCBldmVyeXRoaW5nIGRvdWJsZWQuCisgICAg ICAgICBwIC09IDI7CisrI2VuZGlmCisgCisgICAgICAgICAvLyBMb2FkIHRoZSBpJ3RoIDQ4LWJp dCB2YWx1ZSBmcm9tIHAsIGFuZCAyIGV4dHJhIGJ5dGVzLgorICAgICAgICAgYXV0byBsb2FkXzQ4 XzY0ID0gW3BdKGludCBpKSB7CitAQCAtNDk5LDcgKzUwMyw5IEBAIFNJIEYgRl9mcm9tX1U4KFU4 IHYpIHsKKyBTSSBGIEZfZnJvbV9VMTZfQkUoVTE2IHYpIHsKKyAgICAgLy8gQWxsIDE2LWJpdCBJ Q0MgdmFsdWVzIGFyZSBiaWctZW5kaWFuLCBzbyB3ZSBieXRlIHN3YXAgYmVmb3JlIGNvbnZlcnRp bmcgdG8gZmxvYXQuCisgICAgIC8vIE1TVkMgY2F0Y2hlcyB0aGUgImxvc3MiIG9mIGRhdGEgaGVy ZSBpbiB0aGUgcG9ydGFibGUgcGF0aCwgc28gd2UgYWxzbyBtYWtlIHN1cmUgdG8gbWFzay4KKysj aWYgIV9fQklHX0VORElBTl9fCisgICAgIHYgPSBVMTYoIDAgfCAoKHYgJiAweDAwZmYpIDw8IDgp IHwgKCh2ICYgMHhmZjAwKSA+PiA4KSApOworKyNlbmRpZgorICAgICByZXR1cm4gY2FzdDxGPih2 KSAqICgxLzY1NTM1LjBmKTsKKyB9CisgCitAQCAtNTM0LDkgKzU0MCwxNSBAQCBTSSBGIHRhYmxl KGNvbnN0IHNrY21zX0N1cnZlKiBjdXJ2ZSwgRiB2KSB7CisgU0kgdm9pZCBzYW1wbGVfY2x1dF84 KGNvbnN0IHNrY21zX0EyQiogYTJiLCBJMzIgaXgsIEYqIHIsIEYqIGcsIEYqIGIpIHsKKyAgICAg VTMyIHJnYiA9IGdhdGhlcl8yNChhMmItPmdyaWRfOCwgaXgpOworIAorKyNpZiBfX0JJR19FTkRJ QU5fXworKyAgICAqciA9IGNhc3Q8Rj4oKHJnYiA+PiAxNikgJiAweGZmKSAqICgxLzI1NS4wZik7 CisrICAgICpnID0gY2FzdDxGPigocmdiID4+ICA4KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKKysg ICAgKmIgPSBjYXN0PEY+KChyZ2IgPj4gIDApICYgMHhmZikgKiAoMS8yNTUuMGYpOworKyNlbHNl CisgICAgICpyID0gY2FzdDxGPigocmdiID4+ICAwKSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKKyAg ICAgKmcgPSBjYXN0PEY+KChyZ2IgPj4gIDgpICYgMHhmZikgKiAoMS8yNTUuMGYpOworICAgICAq YiA9IGNhc3Q8Rj4oKHJnYiA+PiAxNikgJiAweGZmKSAqICgxLzI1NS4wZik7CisrI2VuZGlmCisg fQorIAorIFNJIHZvaWQgc2FtcGxlX2NsdXRfMTYoY29uc3Qgc2tjbXNfQTJCKiBhMmIsIEkzMiBp eCwgRiogciwgRiogZywgRiogYikgeworQEAgLTU0OSwxMiArNTYxLDE4IEBAIFNJIHZvaWQgc2Ft cGxlX2NsdXRfMTYoY29uc3Qgc2tjbXNfQTJCKiBhMmIsIEkzMiBpeCwgRiogciwgRiogZywgRiog YikgeworICAgICAvLyBUaGlzIHN0cmF0ZWd5IGlzIG11Y2ggZmFzdGVyIGZvciA2NC1iaXQgYnVp bGRzLCBhbmQgZmluZSBmb3IgMzItYml0IHg4NiB0b28uCisgICAgIFU2NCByZ2I7CisgICAgIGdh dGhlcl80OChhMmItPmdyaWRfMTYsIGl4LCAmcmdiKTsKKysjaWYgX19CSUdfRU5ESUFOX18KKysg ICAgKnIgPSBjYXN0PEY+KChyZ2IgPj4gMzIpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKKysg ICAgKmcgPSBjYXN0PEY+KChyZ2IgPj4gMTYpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKKysg ICAgKmIgPSBjYXN0PEY+KChyZ2IgPj4gIDApICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKKysj ZWxzZQorICAgICByZ2IgPSBzd2FwX2VuZGlhbl8xNng0KHJnYik7CisgCisgICAgICpyID0gY2Fz dDxGPigocmdiID4+ICAwKSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7CisgICAgICpnID0gY2Fz dDxGPigocmdiID4+IDE2KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7CisgICAgICpiID0gY2Fz dDxGPigocmdiID4+IDMyKSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7CisgI2VuZGlmCisrI2Vu ZGlmCisgfQorIAorIC8vIEdDQyA3LjIuMCBoaXRzIGFuIGludGVybmFsIGNvbXBpbGVyIGVycm9y IHdpdGggLWZpbmxpbmUtZnVuY3Rpb25zIChvciAtTzMpCitAQCAtNjk1LDEwICs3MTMsMTcgQEAg c3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCisg ICAgICAgICAgICAgY2FzZSBPcF9sb2FkXzg4ODg6eworICAgICAgICAgICAgICAgICBVMzIgcmdi YSA9IGxvYWQ8VTMyPihzcmMgKyA0KmkpOworIAorKyNpZiBfX0JJR19FTkRJQU5fXworKyAgICAg ICAgICAgICAgICByID0gY2FzdDxGPigocmdiYSA+PiAyNCkgJiAweGZmKSAqICgxLzI1NS4wZik7 CisrICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChyZ2JhID4+IDE2KSAmIDB4ZmYpICogKDEv MjU1LjBmKTsKKysgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKHJnYmEgPj4gIDgpICYgMHhm ZikgKiAoMS8yNTUuMGYpOworKyAgICAgICAgICAgICAgICBhID0gY2FzdDxGPigocmdiYSA+PiAg MCkgJiAweGZmKSAqICgxLzI1NS4wZik7CisrI2Vsc2UKKyAgICAgICAgICAgICAgICAgciA9IGNh c3Q8Rj4oKHJnYmEgPj4gIDApICYgMHhmZikgKiAoMS8yNTUuMGYpOworICAgICAgICAgICAgICAg ICBnID0gY2FzdDxGPigocmdiYSA+PiAgOCkgJiAweGZmKSAqICgxLzI1NS4wZik7CisgICAgICAg ICAgICAgICAgIGIgPSBjYXN0PEY+KChyZ2JhID4+IDE2KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsK KyAgICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oKHJnYmEgPj4gMjQpICYgMHhmZikgKiAoMS8y NTUuMGYpOworKyNlbmRpZgorICAgICAgICAgICAgIH0gYnJlYWs7CisgCisgICAgICAgICAgICAg Y2FzZSBPcF9sb2FkXzg4ODhfcGFsZXR0ZTg6eworQEAgLTcyNywxMyArNzUyLDI5IEBAIHN0YXRp YyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAorICAgICAg ICAgICAgICAgICBjb25zdCB1aW50MTZfdCogcmdiID0gKGNvbnN0IHVpbnQxNl90KilwdHI7IC8v IGNhc3QgdG8gY29uc3QgdWludDE2X3QqIHRvIGJlIHNhZmUuCisgICAgICAgICAgICAgI2lmIGRl ZmluZWQoVVNJTkdfTkVPTikKKyAgICAgICAgICAgICAgICAgdWludDE2eDR4M190IHYgPSB2bGQz X3UxNihyZ2IpOworKyNpZiBfX0JJR19FTkRJQU5fXworKyAgICAgICAgICAgICAgICByID0gY2Fz dDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzBdKSkgKiAoMS82NTUzNS4wZik7CisrICAg ICAgICAgICAgICAgIGcgPSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbMV0pKSAq ICgxLzY1NTM1LjBmKTsKKysgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5f MTYoKFUxNil2LnZhbFsyXSkpICogKDEvNjU1MzUuMGYpOworKyNlbHNlCisgICAgICAgICAgICAg ICAgIHIgPSBjYXN0PEY+KChVMTYpdi52YWxbMF0pICogKDEvNjU1MzUuMGYpOworICAgICAgICAg ICAgICAgICBnID0gY2FzdDxGPigoVTE2KXYudmFsWzFdKSAqICgxLzY1NTM1LjBmKTsKKyAgICAg ICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKFUxNil2LnZhbFsyXSkgKiAoMS82NTUzNS4wZik7Cisr I2VuZGlmCisgICAgICAgICAgICAgI2Vsc2UKKysjaWYgX19CSUdfRU5ESUFOX18KKysgICAgICAg ICAgICAgICAgVTMyIFIgPSBsb2FkXzM8VTMyPihyZ2IrMCksCisrICAgICAgICAgICAgICAgICAg ICBHID0gbG9hZF8zPFUzMj4ocmdiKzEpLAorKyAgICAgICAgICAgICAgICAgICAgQiA9IGxvYWRf MzxVMzI+KHJnYisyKTsKKysgICAgICAgICAgICAgICAgLy8gUixHLEIgYXJlIGxpdHRsZS1lbmRp YW4gMTYtYml0LCBzbyBieXRlIHN3YXAgdGhlbSBiZWZvcmUgY29udmVydGluZyB0byBmbG9hdC4K KysgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKFIgJiAweDAwZmYpPDw4IHwgKFIgJiAweGZm MDApPj44KSAqICgxLzY1NTM1LjBmKTsKKysgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKEcg JiAweDAwZmYpPDw4IHwgKEcgJiAweGZmMDApPj44KSAqICgxLzY1NTM1LjBmKTsKKysgICAgICAg ICAgICAgICAgYiA9IGNhc3Q8Rj4oKEIgJiAweDAwZmYpPDw4IHwgKEIgJiAweGZmMDApPj44KSAq ICgxLzY1NTM1LjBmKTsKKysjZWxzZQorICAgICAgICAgICAgICAgICByID0gY2FzdDxGPihsb2Fk XzM8VTMyPihyZ2IrMCkpICogKDEvNjU1MzUuMGYpOworICAgICAgICAgICAgICAgICBnID0gY2Fz dDxGPihsb2FkXzM8VTMyPihyZ2IrMSkpICogKDEvNjU1MzUuMGYpOworICAgICAgICAgICAgICAg ICBiID0gY2FzdDxGPihsb2FkXzM8VTMyPihyZ2IrMikpICogKDEvNjU1MzUuMGYpOworKyNlbmRp ZgorICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgIH0gYnJlYWs7CisgCitAQCAtNzQz LDE3ICs3ODQsMzMgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qg dm9pZCoqIGFyZ3MsCisgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90KiByZ2JhID0gKGNv bnN0IHVpbnQxNl90KilwdHI7IC8vIGNhc3QgdG8gY29uc3QgdWludDE2X3QqIHRvIGJlIHNhZmUu CisgICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJTkdfTkVPTikKKyAgICAgICAgICAgICAgICAg dWludDE2eDR4NF90IHYgPSB2bGQ0X3UxNihyZ2JhKTsKKysjaWYgX19CSUdfRU5ESUFOX18KKysg ICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFswXSkp ICogKDEvNjU1MzUuMGYpOworKyAgICAgICAgICAgICAgICBnID0gY2FzdDxGPihzd2FwX2VuZGlh bl8xNigoVTE2KXYudmFsWzFdKSkgKiAoMS82NTUzNS4wZik7CisrICAgICAgICAgICAgICAgIGIg PSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbMl0pKSAqICgxLzY1NTM1LjBmKTsK KysgICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsz XSkpICogKDEvNjU1MzUuMGYpOworKyNlbHNlCisgICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+ KChVMTYpdi52YWxbMF0pICogKDEvNjU1MzUuMGYpOworICAgICAgICAgICAgICAgICBnID0gY2Fz dDxGPigoVTE2KXYudmFsWzFdKSAqICgxLzY1NTM1LjBmKTsKKyAgICAgICAgICAgICAgICAgYiA9 IGNhc3Q8Rj4oKFUxNil2LnZhbFsyXSkgKiAoMS82NTUzNS4wZik7CisgICAgICAgICAgICAgICAg IGEgPSBjYXN0PEY+KChVMTYpdi52YWxbM10pICogKDEvNjU1MzUuMGYpOworKyNlbmRpZgorICAg ICAgICAgICAgICNlbHNlCisrI2lmIF9fQklHX0VORElBTl9fCisrICAgICAgICAgICAgICAgIFU2 NCBweCA9IHN3YXBfZW5kaWFuXzE2eDQobG9hZDxVNjQ+KHJnYmEpKTsKKysKKysgICAgICAgICAg ICAgICAgciA9IGNhc3Q8Rj4oKHB4ID4+IDQ4KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Cisr ICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChweCA+PiAzMikgJiAweGZmZmYpICogKDEvNjU1 MzUuMGYpOworKyAgICAgICAgICAgICAgICBiID0gY2FzdDxGPigocHggPj4gMTYpICYgMHhmZmZm KSAqICgxLzY1NTM1LjBmKTsKKysgICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oKHB4ID4+ICAw KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7CisrI2Vsc2UKKyAgICAgICAgICAgICAgICAgVTY0 IHB4ID0gbG9hZDxVNjQ+KHJnYmEpOworIAorICAgICAgICAgICAgICAgICByID0gY2FzdDxGPigo cHggPj4gIDApICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKKyAgICAgICAgICAgICAgICAgZyA9 IGNhc3Q8Rj4oKHB4ID4+IDE2KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7CisgICAgICAgICAg ICAgICAgIGIgPSBjYXN0PEY+KChweCA+PiAzMikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwor ICAgICAgICAgICAgICAgICBhID0gY2FzdDxGPigocHggPj4gNDgpICYgMHhmZmZmKSAqICgxLzY1 NTM1LjBmKTsKKysjZW5kaWYKKyAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICB9IGJy ZWFrOworIAorQEAgLTc2MywxMCArODIwLDIxIEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0 IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAorICAgICAgICAgICAgICAgICBjb25zdCB1aW50 MTZfdCogcmdiID0gKGNvbnN0IHVpbnQxNl90KilwdHI7IC8vIGNhc3QgdG8gY29uc3QgdWludDE2 X3QqIHRvIGJlIHNhZmUuCisgICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJTkdfTkVPTikKKyAg ICAgICAgICAgICAgICAgdWludDE2eDR4M190IHYgPSB2bGQzX3UxNihyZ2IpOworKyNpZiBfX0JJ R19FTkRJQU5fXworKyAgICAgICAgICAgICAgICByID0gY2FzdDxGPigoVTE2KXYudmFsWzBdKSAq ICgxLzY1NTM1LjBmKTsKKysgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKFUxNil2LnZhbFsx XSkgKiAoMS82NTUzNS4wZik7CisrICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChVMTYpdi52 YWxbMl0pICogKDEvNjU1MzUuMGYpOworKyNlbHNlCisgICAgICAgICAgICAgICAgIHIgPSBjYXN0 PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbMF0pKSAqICgxLzY1NTM1LjBmKTsKKyAgICAg ICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsxXSkpICog KDEvNjU1MzUuMGYpOworICAgICAgICAgICAgICAgICBiID0gY2FzdDxGPihzd2FwX2VuZGlhbl8x NigoVTE2KXYudmFsWzJdKSkgKiAoMS82NTUzNS4wZik7CisrI2VuZGlmCisgICAgICAgICAgICAg I2Vsc2UKKysjaWYgX19CSUdfRU5ESUFOX18KKysgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4o bG9hZF8zPFUzMj4ocmdiKzApKSAqICgxLzY1NTM1LjBmKTsKKysgICAgICAgICAgICAgICAgZyA9 IGNhc3Q8Rj4obG9hZF8zPFUzMj4ocmdiKzEpKSAqICgxLzY1NTM1LjBmKTsKKysgICAgICAgICAg ICAgICAgYiA9IGNhc3Q8Rj4obG9hZF8zPFUzMj4ocmdiKzIpKSAqICgxLzY1NTM1LjBmKTsKKysj ZWxzZQorICAgICAgICAgICAgICAgICBVMzIgUiA9IGxvYWRfMzxVMzI+KHJnYiswKSwKKyAgICAg ICAgICAgICAgICAgICAgIEcgPSBsb2FkXzM8VTMyPihyZ2IrMSksCisgICAgICAgICAgICAgICAg ICAgICBCID0gbG9hZF8zPFUzMj4ocmdiKzIpOworQEAgLTc3NCw2ICs4NDIsNyBAQCBzdGF0aWMg dm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKKyAgICAgICAg ICAgICAgICAgciA9IGNhc3Q8Rj4oKFIgJiAweDAwZmYpPDw4IHwgKFIgJiAweGZmMDApPj44KSAq ICgxLzY1NTM1LjBmKTsKKyAgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKEcgJiAweDAwZmYp PDw4IHwgKEcgJiAweGZmMDApPj44KSAqICgxLzY1NTM1LjBmKTsKKyAgICAgICAgICAgICAgICAg YiA9IGNhc3Q8Rj4oKEIgJiAweDAwZmYpPDw4IHwgKEIgJiAweGZmMDApPj44KSAqICgxLzY1NTM1 LjBmKTsKKysjZW5kaWYKKyAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICB9IGJyZWFr OworIAorQEAgLTc4MywxNyArODUyLDMzIEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9w KiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAorICAgICAgICAgICAgICAgICBjb25zdCB1aW50MTZf dCogcmdiYSA9IChjb25zdCB1aW50MTZfdCopcHRyOyAvLyBjYXN0IHRvIGNvbnN0IHVpbnQxNl90 KiB0byBiZSBzYWZlLgorICAgICAgICAgICAgICNpZiBkZWZpbmVkKFVTSU5HX05FT04pCisgICAg ICAgICAgICAgICAgIHVpbnQxNng0eDRfdCB2ID0gdmxkNF91MTYocmdiYSk7CisrI2lmIF9fQklH X0VORElBTl9fCisrICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChVMTYpdi52YWxbMF0pICog KDEvNjU1MzUuMGYpOworKyAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigoVTE2KXYudmFsWzFd KSAqICgxLzY1NTM1LjBmKTsKKysgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKFUxNil2LnZh bFsyXSkgKiAoMS82NTUzNS4wZik7CisrICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KChVMTYp di52YWxbM10pICogKDEvNjU1MzUuMGYpOworKyNlbHNlCisgICAgICAgICAgICAgICAgIHIgPSBj YXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbMF0pKSAqICgxLzY1NTM1LjBmKTsKKyAg ICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsxXSkp ICogKDEvNjU1MzUuMGYpOworICAgICAgICAgICAgICAgICBiID0gY2FzdDxGPihzd2FwX2VuZGlh bl8xNigoVTE2KXYudmFsWzJdKSkgKiAoMS82NTUzNS4wZik7CisgICAgICAgICAgICAgICAgIGEg PSBjYXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbM10pKSAqICgxLzY1NTM1LjBmKTsK KysjZW5kaWYKKyAgICAgICAgICAgICAjZWxzZQorKyNpZiBfX0JJR19FTkRJQU5fXworKyAgICAg ICAgICAgICAgICBVNjQgcHggPSBsb2FkPFU2ND4ocmdiYSk7CisrCisrICAgICAgICAgICAgICAg IHIgPSBjYXN0PEY+KChweCA+PiA0OCkgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOworKyAgICAg ICAgICAgICAgICBnID0gY2FzdDxGPigocHggPj4gMzIpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBm KTsKKysgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKHB4ID4+IDE2KSAmIDB4ZmZmZikgKiAo MS82NTUzNS4wZik7CisrICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KChweCA+PiAgMCkgJiAw eGZmZmYpICogKDEvNjU1MzUuMGYpOworKyNlbHNlCisgICAgICAgICAgICAgICAgIFU2NCBweCA9 IHN3YXBfZW5kaWFuXzE2eDQobG9hZDxVNjQ+KHJnYmEpKTsKKyAKKyAgICAgICAgICAgICAgICAg ciA9IGNhc3Q8Rj4oKHB4ID4+ICAwKSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7CisgICAgICAg ICAgICAgICAgIGcgPSBjYXN0PEY+KChweCA+PiAxNikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYp OworICAgICAgICAgICAgICAgICBiID0gY2FzdDxGPigocHggPj4gMzIpICYgMHhmZmZmKSAqICgx LzY1NTM1LjBmKTsKKyAgICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oKHB4ID4+IDQ4KSAmIDB4 ZmZmZikgKiAoMS82NTUzNS4wZik7CisrI2VuZGlmCisgICAgICAgICAgICAgI2VuZGlmCisgICAg ICAgICAgICAgfSBicmVhazsKKyAKK0BAIC04MjgsMTAgKzkxMywxNyBAQCBzdGF0aWMgdm9pZCBl eGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKKyAgICAgICAgICAgICAg ICAgICAgIEEgPSAoVTE2KXYudmFsWzNdOworICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAg ICAgICAgIFU2NCBweCA9IGxvYWQ8VTY0PihyZ2JhKTsKKysjaWYgX19CSUdfRU5ESUFOX18KKysg ICAgICAgICAgICAgICAgVTE2IFIgPSBjYXN0PFUxNj4oKHB4ID4+IDQ4KSAmIDB4ZmZmZiksCisr ICAgICAgICAgICAgICAgICAgICBHID0gY2FzdDxVMTY+KChweCA+PiAzMikgJiAweGZmZmYpLAor KyAgICAgICAgICAgICAgICAgICAgQiA9IGNhc3Q8VTE2PigocHggPj4gMTYpICYgMHhmZmZmKSwK KysgICAgICAgICAgICAgICAgICAgIEEgPSBjYXN0PFUxNj4oKHB4ID4+ICAwKSAmIDB4ZmZmZik7 CisrI2Vsc2UKKyAgICAgICAgICAgICAgICAgVTE2IFIgPSBjYXN0PFUxNj4oKHB4ID4+ICAwKSAm IDB4ZmZmZiksCisgICAgICAgICAgICAgICAgICAgICBHID0gY2FzdDxVMTY+KChweCA+PiAxNikg JiAweGZmZmYpLAorICAgICAgICAgICAgICAgICAgICAgQiA9IGNhc3Q8VTE2PigocHggPj4gMzIp ICYgMHhmZmZmKSwKKyAgICAgICAgICAgICAgICAgICAgIEEgPSBjYXN0PFUxNj4oKHB4ID4+IDQ4 KSAmIDB4ZmZmZik7CisrI2VuZGlmCisgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAg ICAgIHIgPSBGX2Zyb21fSGFsZihSKTsKKyAgICAgICAgICAgICAgICAgZyA9IEZfZnJvbV9IYWxm KEcpOworQEAgLTEwMjQsMTAgKzExMTYsMTcgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3Qg T3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCisgICAgICAgICAgICAgfSByZXR1cm47CisgCisg ICAgICAgICAgICAgY2FzZSBPcF9zdG9yZV84ODg4OiB7CisrI2lmIF9fQklHX0VORElBTl9fCisr ICAgICAgICAgICAgICAgIHN0b3JlKGRzdCArIDQqaSwgY2FzdDxVMzI+KHRvX2ZpeGVkKHIgKiAy NTUpIDw8IDI0KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTMyPih0 b19maXhlZChnICogMjU1KSA8PCAxNikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBjYXN0PFUzMj4odG9fZml4ZWQoYiAqIDI1NSkgPDwgIDgpCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgY2FzdDxVMzI+KHRvX2ZpeGVkKGEgKiAyNTUpIDw8ICAwKSk7CisrI2Vs c2UKKyAgICAgICAgICAgICAgICAgc3RvcmUoZHN0ICsgNCppLCBjYXN0PFUzMj4odG9fZml4ZWQo ciAqIDI1NSkgPDwgIDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxV MzI+KHRvX2ZpeGVkKGcgKiAyNTUpIDw8ICA4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IGNhc3Q8VTMyPih0b19maXhlZChiICogMjU1KSA8PCAxNikKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBjYXN0PFUzMj4odG9fZml4ZWQoYSAqIDI1NSkgPDwgMjQpKTsK KysjZW5kaWYKKyAgICAgICAgICAgICB9IHJldHVybjsKKyAKKyAgICAgICAgICAgICBjYXNlIE9w X3N0b3JlXzEwMTAxMDI6IHsKK0BAIC0xMDQzLDE1ICsxMTQyLDMwIEBAIHN0YXRpYyB2b2lkIGV4 ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAorICAgICAgICAgICAgICAg ICB1aW50MTZfdCogcmdiID0gKHVpbnQxNl90KilwdHI7ICAgICAgICAgIC8vIGZvciB0aGlzIGNh c3QgdG8gdWludDE2X3QqIHRvIGJlIHNhZmUuCisgICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJ TkdfTkVPTikKKyAgICAgICAgICAgICAgICAgdWludDE2eDR4M190IHYgPSB7eworKyNpZiBfX0JJ R19FTkRJQU5fXworKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5f MTYoY2FzdDxVMTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpKSwKKysgICAgICAgICAgICAgICAgICAg ICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUp KSksCisrICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0 PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSkpLAorKyNlbHNlCisgICAgICAgICAgICAgICAgICAg ICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSksCisgICAgICAgICAg ICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSksCisg ICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1 NTM1KSksCisrI2VuZGlmCisgICAgICAgICAgICAgICAgIH19OworICAgICAgICAgICAgICAgICB2 c3QzX3UxNihyZ2IsIHYpOworICAgICAgICAgICAgICNlbHNlCisrI2lmIF9fQklHX0VORElBTl9f CisrICAgICAgICAgICAgICAgIEkzMiBSID0gdG9fZml4ZWQociAqIDY1NTM1KSwKKysgICAgICAg ICAgICAgICAgICAgIEcgPSB0b19maXhlZChnICogNjU1MzUpLAorKyAgICAgICAgICAgICAgICAg ICAgQiA9IHRvX2ZpeGVkKGIgKiA2NTUzNSk7CisrICAgICAgICAgICAgICAgIHN0b3JlXzMocmdi KzAsIGNhc3Q8VTE2PigoUiAmIDB4MDBmZikgPDwgOCB8IChSICYgMHhmZjAwKSA+PiA4KSApOwor KyAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYisxLCBjYXN0PFUxNj4oKEcgJiAweDAwZmYpIDw8 IDggfCAoRyAmIDB4ZmYwMCkgPj4gOCkgKTsKKysgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2Ir MiwgY2FzdDxVMTY+KChCICYgMHgwMGZmKSA8PCA4IHwgKEIgJiAweGZmMDApID4+IDgpICk7Cisr I2Vsc2UKKyAgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMCwgY2FzdDxVMTY+KHRvX2ZpeGVk KHIgKiA2NTUzNSkpKTsKKyAgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMSwgY2FzdDxVMTY+ KHRvX2ZpeGVkKGcgKiA2NTUzNSkpKTsKKyAgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMiwg Y2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpKTsKKysjZW5kaWYKKyAgICAgICAgICAgICAj ZW5kaWYKKyAKKyAgICAgICAgICAgICB9IHJldHVybjsKK0BAIC0xMDYyLDE4ICsxMTc2LDMzIEBA IHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAor ICAgICAgICAgICAgICAgICB1aW50MTZfdCogcmdiYSA9ICh1aW50MTZfdCopcHRyOyAgICAgICAg Ly8gZm9yIHRoaXMgY2FzdCB0byB1aW50MTZfdCogdG8gYmUgc2FmZS4KKyAgICAgICAgICAgICAj aWYgZGVmaW5lZChVU0lOR19ORU9OKQorICAgICAgICAgICAgICAgICB1aW50MTZ4NHg0X3QgdiA9 IHt7CisrI2lmIF9fQklHX0VORElBTl9fCisrICAgICAgICAgICAgICAgICAgICAodWludDE2eDRf dClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSkpLAorKyAgICAg ICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2Zp eGVkKGcgKiA2NTUzNSkpKSwKKysgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBf ZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChiICogNjU1MzUpKSksCisrICAgICAgICAgICAg ICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoYSAq IDY1NTM1KSkpLAorKyNlbHNlCisgICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0 PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSksCisgICAgICAgICAgICAgICAgICAgICAodWludDE2 eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSksCisgICAgICAgICAgICAgICAgICAg ICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSksCisgICAgICAgICAg ICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoYSAqIDY1NTM1KSksCisr I2VuZGlmCisgICAgICAgICAgICAgICAgIH19OworICAgICAgICAgICAgICAgICB2c3Q0X3UxNihy Z2JhLCB2KTsKKyAgICAgICAgICAgICAjZWxzZQorKyNpZiBfX0JJR19FTkRJQU5fXworKyAgICAg ICAgICAgICAgICBVNjQgcHggPSBjYXN0PFU2ND4odG9fZml4ZWQociAqIDY1NTM1KSkgPDwgNDgK KysgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGcgKiA2NTUzNSkp IDw8IDMyCisrICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChiICog NjU1MzUpKSA8PCAxNgorKyAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4 ZWQoYSAqIDY1NTM1KSkgPDwgIDA7CisrICAgICAgICAgICAgICAgIHN0b3JlKHJnYmEsIHN3YXBf ZW5kaWFuXzE2eDQocHgpKTsKKysjZWxzZQorICAgICAgICAgICAgICAgICBVNjQgcHggPSBjYXN0 PFU2ND4odG9fZml4ZWQociAqIDY1NTM1KSkgPDwgIDAKKyAgICAgICAgICAgICAgICAgICAgICAg IHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpIDw8IDE2CisgICAgICAgICAgICAgICAg ICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChiICogNjU1MzUpKSA8PCAzMgorICAgICAgICAg ICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoYSAqIDY1NTM1KSkgPDwgNDg7Cisg ICAgICAgICAgICAgICAgIHN0b3JlKHJnYmEsIHB4KTsKKysjZW5kaWYKKyAgICAgICAgICAgICAj ZW5kaWYKKyAgICAgICAgICAgICB9IHJldHVybjsKKyAKK0BAIC0xMDgzLDE4ICsxMjEyLDMwIEBA IHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAor ICAgICAgICAgICAgICAgICB1aW50MTZfdCogcmdiID0gKHVpbnQxNl90KilwdHI7ICAgICAgICAg IC8vIGZvciB0aGlzIGNhc3QgdG8gdWludDE2X3QqIHRvIGJlIHNhZmUuCisgICAgICAgICAgICAg I2lmIGRlZmluZWQoVVNJTkdfTkVPTikKKyAgICAgICAgICAgICAgICAgdWludDE2eDR4M190IHYg PSB7eworKyNpZiBfX0JJR19FTkRJQU5fXworKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0 X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpLAorKyAgICAgICAgICAgICAgICAgICAg KHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpLAorKyAgICAgICAgICAg ICAgICAgICAgKHVpbnQxNng0X3QpY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpLAorKyNl bHNlCisgICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0 PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSkpLAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQx Nng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpKSwKKyAg ICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0 b19maXhlZChiICogNjU1MzUpKSksCisrI2VuZGlmCisgICAgICAgICAgICAgICAgIH19OworICAg ICAgICAgICAgICAgICB2c3QzX3UxNihyZ2IsIHYpOworICAgICAgICAgICAgICNlbHNlCisrI2lm IF9fQklHX0VORElBTl9fCisrICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzAsIGNhc3Q8VTE2 Pih0b19maXhlZChyICogNjU1MzUpKSk7CisrICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzEs IGNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUpKSk7CisrICAgICAgICAgICAgICAgIHN0b3Jl XzMocmdiKzIsIGNhc3Q8VTE2Pih0b19maXhlZChiICogNjU1MzUpKSk7CisrI2Vsc2UKKyAgICAg ICAgICAgICAgICAgSTMyIFIgPSB0b19maXhlZChyICogNjU1MzUpLAorICAgICAgICAgICAgICAg ICAgICAgRyA9IHRvX2ZpeGVkKGcgKiA2NTUzNSksCisgICAgICAgICAgICAgICAgICAgICBCID0g dG9fZml4ZWQoYiAqIDY1NTM1KTsKKyAgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMCwgY2Fz dDxVMTY+KChSICYgMHgwMGZmKSA8PCA4IHwgKFIgJiAweGZmMDApID4+IDgpICk7CisgICAgICAg ICAgICAgICAgIHN0b3JlXzMocmdiKzEsIGNhc3Q8VTE2PigoRyAmIDB4MDBmZikgPDwgOCB8IChH ICYgMHhmZjAwKSA+PiA4KSApOworICAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYisyLCBjYXN0 PFUxNj4oKEIgJiAweDAwZmYpIDw8IDggfCAoQiAmIDB4ZmYwMCkgPj4gOCkgKTsKKysjZW5kaWYK KyAgICAgICAgICAgICAjZW5kaWYKKyAKKyAgICAgICAgICAgICB9IHJldHVybjsKK0BAIC0xMTA1 LDE4ICsxMjQ2LDMzIEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0 IHZvaWQqKiBhcmdzLAorICAgICAgICAgICAgICAgICB1aW50MTZfdCogcmdiYSA9ICh1aW50MTZf dCopcHRyOyAgICAgICAgLy8gZm9yIHRoaXMgY2FzdCB0byB1aW50MTZfdCogdG8gYmUgc2FmZS4K KyAgICAgICAgICAgICAjaWYgZGVmaW5lZChVU0lOR19ORU9OKQorICAgICAgICAgICAgICAgICB1 aW50MTZ4NHg0X3QgdiA9IHt7CisrI2lmIF9fQklHX0VORElBTl9fCisrICAgICAgICAgICAgICAg ICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSksCisrICAgICAg ICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSks CisrICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoYiAq IDY1NTM1KSksCisrICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9f Zml4ZWQoYSAqIDY1NTM1KSksCisrI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4 NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSksCisgICAg ICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9f Zml4ZWQoZyAqIDY1NTM1KSkpLAorICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dh cF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpKSwKKyAgICAgICAgICAg ICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChh ICogNjU1MzUpKSksCisrI2VuZGlmCisgICAgICAgICAgICAgICAgIH19OworICAgICAgICAgICAg ICAgICB2c3Q0X3UxNihyZ2JhLCB2KTsKKyAgICAgICAgICAgICAjZWxzZQorKyNpZiBfX0JJR19F TkRJQU5fXworKyAgICAgICAgICAgICAgICBVNjQgcHggPSBjYXN0PFU2ND4odG9fZml4ZWQociAq IDY1NTM1KSkgPDwgNDgKKysgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2Zp eGVkKGcgKiA2NTUzNSkpIDw8IDMyCisrICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0 Pih0b19maXhlZChiICogNjU1MzUpKSA8PCAxNgorKyAgICAgICAgICAgICAgICAgICAgICAgfCBj YXN0PFU2ND4odG9fZml4ZWQoYSAqIDY1NTM1KSkgPDwgIDA7CisrICAgICAgICAgICAgICAgIHN0 b3JlKHJnYmEsIHB4KTsKKysjZWxzZQorICAgICAgICAgICAgICAgICBVNjQgcHggPSBjYXN0PFU2 ND4odG9fZml4ZWQociAqIDY1NTM1KSkgPDwgIDAKKyAgICAgICAgICAgICAgICAgICAgICAgIHwg Y2FzdDxVNjQ+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpIDw8IDE2CisgICAgICAgICAgICAgICAgICAg ICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChiICogNjU1MzUpKSA8PCAzMgorICAgICAgICAgICAg ICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoYSAqIDY1NTM1KSkgPDwgNDg7CisgICAg ICAgICAgICAgICAgIHN0b3JlKHJnYmEsIHN3YXBfZW5kaWFuXzE2eDQocHgpKTsKKysjZW5kaWYK KyAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICB9IHJldHVybjsKKyAKK0BAIC0xMTYw LDEwICsxMzE2LDE3IEBAIHN0YXRpYyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0 IHZvaWQqKiBhcmdzLAorICAgICAgICAgICAgICAgICB9fTsKKyAgICAgICAgICAgICAgICAgdnN0 NF91MTYocmdiYSwgdik7CisgICAgICAgICAgICAgI2Vsc2UKKysjaWYgX19CSUdfRU5ESUFOX18K KysgICAgICAgICAgICAgICAgc3RvcmUocmdiYSwgY2FzdDxVNjQ+KFIpIDw8IDQ4CisrICAgICAg ICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0PihHKSA8PCAzMgorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgfCBjYXN0PFU2ND4oQikgPDwgMTYKKysgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgY2FzdDxVNjQ+KEEpIDw8ICAwKTsKKysjZWxzZQorICAgICAgICAgICAgICAgICBzdG9y ZShyZ2JhLCBjYXN0PFU2ND4oUikgPDwgIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg Y2FzdDxVNjQ+KEcpIDw8IDE2CisgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0 PihCKSA8PCAzMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4oQSkgPDwg NDgpOworKyNlbmRpZgorICAgICAgICAgICAgICNlbmRpZgorIAorICAgICAgICAgICAgIH0gcmV0 dXJuOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93 ZWJydGMvY29tbW9uX2F1ZGlvL3dhdl9maWxlLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MK K0BAIC05MywxMyArOTMsMTUgQEAgc2l6ZV90IFdhdlJlYWRlcjo6bnVtX3NhbXBsZXMoKSBjb25z dCB7CisgfQorIAorIHNpemVfdCBXYXZSZWFkZXI6OlJlYWRTYW1wbGVzKHNpemVfdCBudW1fc2Ft cGxlcywgaW50MTZfdCogc2FtcGxlcykgeworLSNpZm5kZWYgV0VCUlRDX0FSQ0hfTElUVExFX0VO RElBTgorLSNlcnJvciAiTmVlZCB0byBjb252ZXJ0IHNhbXBsZXMgdG8gYmlnLWVuZGlhbiB3aGVu IHJlYWRpbmcgZnJvbSBXQVYgZmlsZSIKKy0jZW5kaWYKKyAgIC8vIFRoZXJlIGNvdWxkIGJlIG1l dGFkYXRhIGFmdGVyIHRoZSBhdWRpbzsgZW5zdXJlIHdlIGRvbid0IHJlYWQgaXQuCisgICBudW1f c2FtcGxlcyA9IHN0ZDo6bWluKG51bV9zYW1wbGVzLCBudW1fc2FtcGxlc19yZW1haW5pbmdfKTsK KyAgIGNvbnN0IHNpemVfdCByZWFkID0KKyAgICAgICBmcmVhZChzYW1wbGVzLCBzaXplb2YoKnNh bXBsZXMpLCBudW1fc2FtcGxlcywgZmlsZV9oYW5kbGVfKTsKKysjaWZuZGVmIFdFQlJUQ19BUkNI X0xJVFRMRV9FTkRJQU4KKysgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVhZDsgaSsrKSB7Cisr ICAgICAgc2FtcGxlc1tpXSA9IF9fYnVpbHRpbl9ic3dhcDE2KHNhbXBsZXNbaV0pOworKyAgfQor KyNlbmRpZgorICAgLy8gSWYgd2UgZGlkbid0IHJlYWQgd2hhdCB3YXMgcmVxdWVzdGVkLCBlbnN1 cmUgd2UndmUgcmVhY2hlZCB0aGUgRU9GLgorICAgUlRDX0NIRUNLKHJlYWQgPT0gbnVtX3NhbXBs ZXMgfHwgZmVvZihmaWxlX2hhbmRsZV8pKTsKKyAgIFJUQ19DSEVDS19MRShyZWFkLCBudW1fc2Ft cGxlc19yZW1haW5pbmdfKTsKK0BAIC0xNzgsMTMgKzE4MCwyNiBAQCBzaXplX3QgV2F2V3JpdGVy OjpudW1fc2FtcGxlcygpIGNvbnN0IHsKKyAKKyB2b2lkIFdhdldyaXRlcjo6V3JpdGVTYW1wbGVz KGNvbnN0IGludDE2X3QqIHNhbXBsZXMsIHNpemVfdCBudW1fc2FtcGxlcykgeworICNpZm5kZWYg V0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgorLSNlcnJvciAiTmVlZCB0byBjb252ZXJ0IHNhbXBs ZXMgdG8gbGl0dGxlLWVuZGlhbiB3aGVuIHdyaXRpbmcgdG8gV0FWIGZpbGUiCistI2VuZGlmCisr ICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtDaHVua3NpemUgPSA0MDk2IC8gc2l6ZW9mKHVpbnQxNl90 KTsKKysgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtX3NhbXBsZXM7IGkgKz0ga0NodW5rc2l6 ZSkgeworKyAgICBpbnQxNl90IGlzYW1wbGVzW2tDaHVua3NpemVdOworKyAgICBjb25zdCBzaXpl X3QgY2h1bmsgPSBzdGQ6Om1pbihrQ2h1bmtzaXplLCBudW1fc2FtcGxlcyAtIGkpOworKyAgICBm b3IgKHNpemVfdCBqID0gMDsgaiA8IGNodW5rOyBqKyspIHsKKysgICAgICBpc2FtcGxlc1tqXSA9 IF9fYnVpbHRpbl9ic3dhcDE2KHNhbXBsZXNbaSArIGpdKTsKKysgICAgfQorKyAgICBjb25zdCBz aXplX3Qgd3JpdHRlbiA9CisrICAgICAgICBmd3JpdGUoaXNhbXBsZXMsIHNpemVvZigqaXNhbXBs ZXMpLCBjaHVuaywgZmlsZV9oYW5kbGVfKTsKKysgICAgUlRDX0NIRUNLX0VRKGNodW5rLCB3cml0 dGVuKTsKKysgICAgbnVtX3NhbXBsZXNfICs9IHdyaXR0ZW47CisrICAgIFJUQ19DSEVDSyhudW1f c2FtcGxlc18gPj0gd3JpdHRlbik7ICAvLyBkZXRlY3Qgc2l6ZV90IG92ZXJmbG93CisrICB9Cisr I2Vsc2UKKyAgIGNvbnN0IHNpemVfdCB3cml0dGVuID0KKyAgICAgICBmd3JpdGUoc2FtcGxlcywg c2l6ZW9mKCpzYW1wbGVzKSwgbnVtX3NhbXBsZXMsIGZpbGVfaGFuZGxlXyk7CisgICBSVENfQ0hF Q0tfRVEobnVtX3NhbXBsZXMsIHdyaXR0ZW4pOworICAgbnVtX3NhbXBsZXNfICs9IHdyaXR0ZW47 CisgICBSVENfQ0hFQ0sobnVtX3NhbXBsZXNfID49IHdyaXR0ZW4pOyAgLy8gZGV0ZWN0IHNpemVf dCBvdmVyZmxvdworKyNlbmRpZgorIH0KKyAKKyB2b2lkIFdhdldyaXRlcjo6V3JpdGVTYW1wbGVz KGNvbnN0IGZsb2F0KiBzYW1wbGVzLCBzaXplX3QgbnVtX3NhbXBsZXMpIHsKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL2NvbW1vbl9hdWRp by93YXZfaGVhZGVyLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2hlYWRlci5jYworQEAgLTg2LDcgKzg2 LDI2IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpzdHJpbmcgUmVhZEZvdXJDQyh1aW50MzJfdCB4KSB7 CisgICByZXR1cm4gc3RkOjpzdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJngpLCA0KTsK KyB9CisgI2Vsc2UKKy0jZXJyb3IgIldyaXRlIGJlLXRvLWxlIGNvbnZlcnNpb24gZnVuY3Rpb25z IgorK3N0YXRpYyBpbmxpbmUgdm9pZCBXcml0ZUxFMTYodWludDE2X3QqIGYsIHVpbnQxNl90IHgp IHsKKysgICpmID0gX19idWlsdGluX2Jzd2FwMTYoeCk7CisrfQorK3N0YXRpYyBpbmxpbmUgdm9p ZCBXcml0ZUxFMzIodWludDMyX3QqIGYsIHVpbnQzMl90IHgpIHsKKysgICpmID0gX19idWlsdGlu X2Jzd2FwMzIoeCk7CisrfQorK3N0YXRpYyBpbmxpbmUgdm9pZCBXcml0ZUZvdXJDQyh1aW50MzJf dCogZiwgY2hhciBhLCBjaGFyIGIsIGNoYXIgYywgY2hhciBkKSB7CisrICAqZiA9IHN0YXRpY19j YXN0PHVpbnQzMl90PihkKSB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihjKSA8PCA4IHwKKysgICAg ICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGIpIDw8IDE2IHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+ KGEpIDw8IDI0OworK30KKysKKytzdGF0aWMgaW5saW5lIHVpbnQxNl90IFJlYWRMRTE2KHVpbnQx Nl90IHgpIHsKKysgIHJldHVybiBfX2J1aWx0aW5fYnN3YXAxNih4KTsKKyt9Cisrc3RhdGljIGlu bGluZSB1aW50MzJfdCBSZWFkTEUzMih1aW50MzJfdCB4KSB7CisrICByZXR1cm4gX19idWlsdGlu X2Jzd2FwMzIoeCk7CisrfQorK3N0YXRpYyBpbmxpbmUgc3RkOjpzdHJpbmcgUmVhZEZvdXJDQyh1 aW50MzJfdCB4KSB7CisrICByZXR1cm4gc3RkOjpzdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjaGFy Kj4oJngpLCA0KTsKKyt9CisgI2VuZGlmCisgCisgc3RhdGljIGlubGluZSB1aW50MzJfdCBSaWZm Q2h1bmtTaXplKHNpemVfdCBieXRlc19pbl9wYXlsb2FkKSB7CistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3VpL2F1cmEvbXVzL29zX2V4Y2hhbmdlX2RhdGFfcHJvdmlkZXJf bXVzLmNjCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2F1cmEvbXVz L29zX2V4Y2hhbmdlX2RhdGFfcHJvdmlkZXJfbXVzLmNjCitAQCAtMTQsNiArMTQsNyBAQAorICNp bmNsdWRlICJiYXNlL3N0cmluZ3Mvc3RyaW5nX3NwbGl0LmgiCisgI2luY2x1ZGUgImJhc2Uvc3Ry aW5ncy9zdHJpbmdfdXRpbC5oIgorICNpbmNsdWRlICJiYXNlL3N0cmluZ3MvdXRmX3N0cmluZ19j b252ZXJzaW9ucy5oIgorKyNpbmNsdWRlICJiYXNlL3N5c19ieXRlb3JkZXIuaCIKKyAjaW5jbHVk ZSAibmV0L2Jhc2UvZmlsZW5hbWVfdXRpbC5oIgorICNpbmNsdWRlICJ1aS9iYXNlL2NsaXBib2Fy ZC9jbGlwYm9hcmRfY29uc3RhbnRzLmgiCisgI2luY2x1ZGUgInVpL2Jhc2UvY2xpcGJvYXJkL2Ns aXBib2FyZF9mb3JtYXRfdHlwZS5oIgorQEAgLTI3OSw4ICsyODAsMTMgQEAgdm9pZCBPU0V4Y2hh bmdlRGF0YVByb3ZpZGVyTXVzOjpTZXRIdG1sKGNvbnN0IGJhc2U6OnN0cmluZzE2JiBodG1sLAor ICAgc3RkOjp2ZWN0b3I8dW5zaWduZWQgY2hhcj4gYnl0ZXM7CisgICAvLyBNYW51YWxseSBqYW0g YSBVVEYxNiBCT00gaW50byBieXRlcyBiZWNhdXNlIG90aGVyd2lzZSwgb3RoZXIgcHJvZ3JhbXMg d2lsbAorICAgLy8gYXNzdW1lIFVURi04LgorKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9F TkRJQU4pCisgICBieXRlcy5wdXNoX2JhY2soMHhGRik7CisgICBieXRlcy5wdXNoX2JhY2soMHhG RSk7CisrI2Vsc2UKKysgIGJ5dGVzLnB1c2hfYmFjaygweEZFKTsKKysgIGJ5dGVzLnB1c2hfYmFj aygweEZGKTsKKysjZW5kaWYKKyAgIEFkZFN0cmluZzE2VG9WZWN0b3IoaHRtbCwgJmJ5dGVzKTsK KyAgIG1pbWVfZGF0YV9bdWk6OmtNaW1lVHlwZUhUTUxdID0gYnl0ZXM7CisgfQorLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9iYXNlL3Jlc291cmNlL2RhdGFfcGFjay5j YworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9iYXNlL3Jlc291cmNl L2RhdGFfcGFjay5jYworQEAgLTE1NCwxNiArMTU0LDQyIEBAIGNsYXNzIFNjb3BlZEZpbGVXcml0 ZXIgeworICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNjb3BlZEZpbGVXcml0ZXIpOworIH07 CisgCisrc3RhdGljIGlubGluZSB1aW50MTZfdCBieXRlc3dhcCh1aW50MTZfdCB2KSB7IHJldHVy biBfX2J1aWx0aW5fYnN3YXAxNih2KTsgfQorK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgYnl0ZXN3 YXAodWludDMyX3QgdikgeyByZXR1cm4gX19idWlsdGluX2Jzd2FwMzIodik7IH0KKysKKyt0ZW1w bGF0ZTxjbGFzcyBUPiBjbGFzcyBieXRlc3dhcHBlZF90IHsKKytwcml2YXRlOgorKyAgVCB2YWx1 ZTsKKytwdWJsaWM6CisrICBpbmxpbmUgYnl0ZXN3YXBwZWRfdChUIHYpIDogdmFsdWUoYnl0ZXN3 YXAodikpIHsgfQorKyAgaW5saW5lIFQgb3BlcmF0b3I9KFQgdikgeyB2YWx1ZSA9IGJ5dGVzd2Fw KHYpOyByZXR1cm4gdjsgfQorKyAgaW5saW5lIFQgb3BlcmF0b3IrPShUIHYpIHsgdiArPSBieXRl c3dhcCh2YWx1ZSk7IHZhbHVlID0gYnl0ZXN3YXAodik7IHJldHVybiB2OyB9CisrICBpbmxpbmUg b3BlcmF0b3IgVCgpIGNvbnN0IHsgcmV0dXJuIGJ5dGVzd2FwKHZhbHVlKTsgfQorK307CisrCisr I2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCisrCisrdHlwZWRlZiBieXRlc3dh cHBlZF90PHVpbnQxNl90PiB1aW50MTZsZV90OworK3R5cGVkZWYgYnl0ZXN3YXBwZWRfdDx1aW50 MzJfdD4gdWludDMybGVfdDsKKysKKysjZWxzZQorKworK3R5cGVkZWYgdWludDE2X3QgdWludDE2 bGVfdDsKKyt0eXBlZGVmIHVpbnQzMl90IHVpbnQzMmxlX3Q7CisrCisrI2VuZGlmCisrCisgfSAg Ly8gbmFtZXNwYWNlCisgCisgbmFtZXNwYWNlIHVpIHsKKyAKKyAjcHJhZ21hIHBhY2socHVzaCwg MikKKyBzdHJ1Y3QgRGF0YVBhY2s6OkVudHJ5IHsKKy0gIHVpbnQxNl90IHJlc291cmNlX2lkOwor LSAgdWludDMyX3QgZmlsZV9vZmZzZXQ7CisrICB1aW50MTZsZV90IHJlc291cmNlX2lkOworKyAg dWludDMybGVfdCBmaWxlX29mZnNldDsKKyAKKyAgIHN0YXRpYyBpbnQgQ29tcGFyZUJ5SWQoY29u c3Qgdm9pZCogdm9pZF9rZXksIGNvbnN0IHZvaWQqIHZvaWRfZW50cnkpIHsKKysgICAgLy8gS2V5 IGlzIGhvc3QgZW5kaWFuCisgICAgIHVpbnQxNl90IGtleSA9ICpyZWludGVycHJldF9jYXN0PGNv bnN0IHVpbnQxNl90Kj4odm9pZF9rZXkpOworICAgICBjb25zdCBFbnRyeSogZW50cnkgPSByZWlu dGVycHJldF9jYXN0PGNvbnN0IEVudHJ5Kj4odm9pZF9lbnRyeSk7CisgICAgIHJldHVybiBrZXkg LSBlbnRyeS0+cmVzb3VyY2VfaWQ7CitAQCAtMTcxLDEwICsxOTcsMTEgQEAgc3RydWN0IERhdGFQ YWNrOjpFbnRyeSB7CisgfTsKKyAKKyBzdHJ1Y3QgRGF0YVBhY2s6OkFsaWFzIHsKKy0gIHVpbnQx Nl90IHJlc291cmNlX2lkOworLSAgdWludDE2X3QgZW50cnlfaW5kZXg7CisrICB1aW50MTZsZV90 IHJlc291cmNlX2lkOworKyAgdWludDE2bGVfdCBlbnRyeV9pbmRleDsKKyAKKyAgIHN0YXRpYyBp bnQgQ29tcGFyZUJ5SWQoY29uc3Qgdm9pZCogdm9pZF9rZXksIGNvbnN0IHZvaWQqIHZvaWRfZW50 cnkpIHsKKysgICAgLy8gS2V5IGlzIGhvc3QgZW5kaWFuCisgICAgIHVpbnQxNl90IGtleSA9ICpy ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4odm9pZF9rZXkpOworICAgICBjb25zdCBB bGlhcyogZW50cnkgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEFsaWFzKj4odm9pZF9lbnRyeSk7 CisgICAgIHJldHVybiBrZXkgLSBlbnRyeS0+cmVzb3VyY2VfaWQ7CitAQCAtMjg0LDcgKzMxMSw3 IEBAIGJvb2wgRGF0YVBhY2s6OkxvYWRJbXBsKHN0ZDo6dW5pcXVlX3B0cjxEYXRhUGFjazo6RGF0 YVNvdXJjZT4gZGF0YV9zb3VyY2UpIHsKKyAgIC8vIFBhcnNlIHRoZSB2ZXJzaW9uIGFuZCBjaGVj ayBmb3IgdHJ1bmNhdGVkIGhlYWRlci4KKyAgIHVpbnQzMl90IHZlcnNpb24gPSAwOworICAgaWYg KGRhdGFfbGVuZ3RoID4gc2l6ZW9mKHZlcnNpb24pKQorLSAgICB2ZXJzaW9uID0gcmVpbnRlcnBy ZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGRhdGEpWzBdOworKyAgICB2ZXJzaW9uID0gcmVpbnRl cnByZXRfY2FzdDxjb25zdCB1aW50MzJsZV90Kj4oZGF0YSlbMF07CisgICBzaXplX3QgaGVhZGVy X2xlbmd0aCA9CisgICAgICAgdmVyc2lvbiA9PSBrRmlsZUZvcm1hdFY0ID8ga0hlYWRlckxlbmd0 aFY0IDoga0hlYWRlckxlbmd0aFY1OworICAgaWYgKHZlcnNpb24gPT0gMCB8fCBkYXRhX2xlbmd0 aCA8IGhlYWRlcl9sZW5ndGgpIHsKK0BAIC0yOTUsMTQgKzMyMiwxNCBAQCBib29sIERhdGFQYWNr OjpMb2FkSW1wbChzdGQ6OnVuaXF1ZV9wdHI8RGF0YVBhY2s6OkRhdGFTb3VyY2U+IGRhdGFfc291 cmNlKSB7CisgCisgICAvLyBQYXJzZSB0aGUgaGVhZGVyIG9mIHRoZSBmaWxlLgorICAgaWYgKHZl cnNpb24gPT0ga0ZpbGVGb3JtYXRWNCkgeworLSAgICByZXNvdXJjZV9jb3VudF8gPSByZWludGVy cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YSlbMV07CisrICAgIHJlc291cmNlX2NvdW50 XyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMybGVfdCo+KGRhdGEpWzFdOworICAgICBh bGlhc19jb3VudF8gPSAwOworICAgICB0ZXh0X2VuY29kaW5nX3R5cGVfID0gc3RhdGljX2Nhc3Q8 VGV4dEVuY29kaW5nVHlwZT4oZGF0YVs4XSk7CisgICB9IGVsc2UgaWYgKHZlcnNpb24gPT0ga0Zp bGVGb3JtYXRWNSkgeworICAgICAvLyBWZXJzaW9uIDUgYWRkZWQgdGhlIGFsaWFzIHRhYmxlIGFu ZCBjaGFuZ2VkIHRoZSBoZWFkZXIgZm9ybWF0LgorICAgICB0ZXh0X2VuY29kaW5nX3R5cGVfID0g c3RhdGljX2Nhc3Q8VGV4dEVuY29kaW5nVHlwZT4oZGF0YVs0XSk7CistICAgIHJlc291cmNlX2Nv dW50XyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihkYXRhKVs0XTsKKy0gICAg YWxpYXNfY291bnRfID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGRhdGEpWzVd OworKyAgICByZXNvdXJjZV9jb3VudF8gPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNmxl X3QqPihkYXRhKVs0XTsKKysgICAgYWxpYXNfY291bnRfID0gcmVpbnRlcnByZXRfY2FzdDxjb25z dCB1aW50MTZsZV90Kj4oZGF0YSlbNV07CisgICB9IGVsc2UgeworICAgICBMT0coRVJST1IpIDw8 ICJCYWQgZGF0YSBwYWNrIHZlcnNpb246IGdvdCAiIDw8IHZlcnNpb24gPDwgIiwgZXhwZWN0ZWQg IgorICAgICAgICAgICAgICAgIDw8IGtGaWxlRm9ybWF0VjQgPDwgIiBvciAiIDw8IGtGaWxlRm9y bWF0VjU7CitAQCAtNDQ3LDkgKzQ3NCw2IEBAIHZvaWQgRGF0YVBhY2s6OkNoZWNrRm9yRHVwbGlj YXRlUmVzb3VyY2VzKAorIGJvb2wgRGF0YVBhY2s6OldyaXRlUGFjayhjb25zdCBiYXNlOjpGaWxl UGF0aCYgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjptYXA8dWlu dDE2X3QsIGJhc2U6OlN0cmluZ1BpZWNlPiYgcmVzb3VyY2VzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICBUZXh0RW5jb2RpbmdUeXBlIHRleHRfZW5jb2RpbmdfdHlwZSkgeworLSNpZiAhZGVm aW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQorLSNlcnJvciAiZGF0YXBhY2sgYXNzdW1lcyBs aXR0bGUgZW5kaWFuIgorLSNlbmRpZgorICAgaWYgKHRleHRfZW5jb2RpbmdfdHlwZSAhPSBVVEY4 ICYmIHRleHRfZW5jb2RpbmdfdHlwZSAhPSBVVEYxNiAmJgorICAgICAgIHRleHRfZW5jb2Rpbmdf dHlwZSAhPSBCSU5BUlkpIHsKKyAgICAgTE9HKEVSUk9SKSA8PCAiSW52YWxpZCB0ZXh0IGVuY29k aW5nIHR5cGUsIGdvdCAiIDw8IHRleHRfZW5jb2RpbmdfdHlwZQorQEAgLTQ2Nyw3ICs0OTEsNyBA QCBib29sIERhdGFQYWNrOjpXcml0ZVBhY2soY29uc3QgYmFzZTo6RmlsZVBhdGgmIHBhdGgsCisg ICBpZiAoIWZpbGUudmFsaWQoKSkKKyAgICAgcmV0dXJuIGZhbHNlOworIAorLSAgdWludDMyX3Qg ZW5jb2RpbmcgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGV4dF9lbmNvZGluZ190eXBlKTsKKysg IHVpbnQzMmxlX3QgZW5jb2RpbmcgPSBzdGF0aWNfY2FzdDx1aW50MzJsZV90Pih0ZXh0X2VuY29k aW5nX3R5cGUpOworIAorICAgLy8gQnVpbGQgYSBsaXN0IG9mIGZpbmFsIHJlc291cmNlIGFsaWFz ZXMsIGFuZCBhbiBhbGlhcyBtYXAgYXQgdGhlIHNhbWUgdGltZS4KKyAgIHN0ZDo6dmVjdG9yPHVp bnQxNl90PiByZXNvdXJjZV9pZHM7CitAQCAtNDk0LDEzICs1MTgsMTQgQEAgYm9vbCBEYXRhUGFj azo6V3JpdGVQYWNrKGNvbnN0IGJhc2U6OkZpbGVQYXRoJiBwYXRoLAorIAorICAgLy8gVGhlc2Ug dmFsdWVzIGFyZSBndWFyYW50ZWVkIHRvIGZpdCBpbiBhIHVpbnQxNl90IGR1ZSB0byB0aGUgZWFy bGllcgorICAgLy8gY2hlY2sgb2YgfHJlc291cmNlc19jb3VudHwuCistICBjb25zdCB1aW50MTZf dCBhbGlhc19jb3VudCA9IHN0YXRpY19jYXN0PHVpbnQxNl90PihhbGlhc2VzLnNpemUoKSk7Cist ICBjb25zdCB1aW50MTZfdCBlbnRyeV9jb3VudCA9IHN0YXRpY19jYXN0PHVpbnQxNl90PihyZXNv dXJjZV9pZHMuc2l6ZSgpKTsKKysgIGNvbnN0IHVpbnQxNmxlX3QgYWxpYXNfY291bnQgPSBzdGF0 aWNfY2FzdDx1aW50MTZsZV90PihhbGlhc2VzLnNpemUoKSk7CisrICBjb25zdCB1aW50MTZsZV90 IGVudHJ5X2NvdW50ID0gc3RhdGljX2Nhc3Q8dWludDE2bGVfdD4ocmVzb3VyY2VfaWRzLnNpemUo KSk7CisgICBEQ0hFQ0tfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihlbnRyeV9jb3VudCkgKyBzdGF0 aWNfY2FzdDxzaXplX3Q+KGFsaWFzX2NvdW50KSwKKyAgICAgICAgICAgICByZXNvdXJjZXNfY291 bnQpOworIAorLSAgZmlsZS5Xcml0ZSgma0ZpbGVGb3JtYXRWNSwgc2l6ZW9mKGtGaWxlRm9ybWF0 VjUpKTsKKy0gIGZpbGUuV3JpdGUoJmVuY29kaW5nLCBzaXplb2YodWludDMyX3QpKTsKKysgIHVp bnQzMmxlX3QgdmVyc2lvbiA9IGtGaWxlRm9ybWF0VjU7CisrICBmaWxlLldyaXRlKCZ2ZXJzaW9u LCBzaXplb2YodmVyc2lvbikpOworKyAgZmlsZS5Xcml0ZSgmZW5jb2RpbmcsIHNpemVvZih1aW50 MzJsZV90KSk7CisgICBmaWxlLldyaXRlKCZlbnRyeV9jb3VudCwgc2l6ZW9mKGVudHJ5X2NvdW50 KSk7CisgICBmaWxlLldyaXRlKCZhbGlhc19jb3VudCwgc2l6ZW9mKGFsaWFzX2NvdW50KSk7Cisg CitAQCAtNTA4LDggKzUzMyw4IEBAIGJvb2wgRGF0YVBhY2s6OldyaXRlUGFjayhjb25zdCBiYXNl OjpGaWxlUGF0aCYgcGF0aCwKKyAgIC8vIGxhc3QgaXRlbSBzbyB3ZSBjYW4gY29tcHV0ZSB0aGUg c2l6ZSBvZiB0aGUgbGlzdCBpdGVtLgorICAgY29uc3QgdWludDMyX3QgaW5kZXhfbGVuZ3RoID0g KGVudHJ5X2NvdW50ICsgMSkgKiBzaXplb2YoRW50cnkpOworICAgY29uc3QgdWludDMyX3QgYWxp YXNfdGFibGVfbGVuZ3RoID0gYWxpYXNfY291bnQgKiBzaXplb2YoQWxpYXMpOworLSAgdWludDMy X3QgZGF0YV9vZmZzZXQgPSBrSGVhZGVyTGVuZ3RoVjUgKyBpbmRleF9sZW5ndGggKyBhbGlhc190 YWJsZV9sZW5ndGg7CistICBmb3IgKGNvbnN0IHVpbnQxNl90IHJlc291cmNlX2lkIDogcmVzb3Vy Y2VfaWRzKSB7CisrICB1aW50MzJsZV90IGRhdGFfb2Zmc2V0ID0ga0hlYWRlckxlbmd0aFY1ICsg aW5kZXhfbGVuZ3RoICsgYWxpYXNfdGFibGVfbGVuZ3RoOworKyAgZm9yIChjb25zdCB1aW50MTZs ZV90IHJlc291cmNlX2lkIDogcmVzb3VyY2VfaWRzKSB7CisgICAgIGZpbGUuV3JpdGUoJnJlc291 cmNlX2lkLCBzaXplb2YocmVzb3VyY2VfaWQpKTsKKyAgICAgZmlsZS5Xcml0ZSgmZGF0YV9vZmZz ZXQsIHNpemVvZihkYXRhX29mZnNldCkpOworICAgICBkYXRhX29mZnNldCArPSByZXNvdXJjZXMu ZmluZChyZXNvdXJjZV9pZCktPnNlY29uZC5sZW5ndGgoKTsKK0BAIC01MTcsMTMgKzU0MiwxMyBA QCBib29sIERhdGFQYWNrOjpXcml0ZVBhY2soY29uc3QgYmFzZTo6RmlsZVBhdGgmIHBhdGgsCisg CisgICAvLyBXZSBwbGFjZSBhbiBleHRyYSBlbnRyeSBhZnRlciB0aGUgbGFzdCBpdGVtIHRoYXQg YWxsb3dzIHVzIHRvIHJlYWQgdGhlCisgICAvLyBzaXplIG9mIHRoZSBsYXN0IGl0ZW0uCistICBj b25zdCB1aW50MTZfdCByZXNvdXJjZV9pZCA9IDA7CisrICBjb25zdCB1aW50MTZsZV90IHJlc291 cmNlX2lkID0gMDsKKyAgIGZpbGUuV3JpdGUoJnJlc291cmNlX2lkLCBzaXplb2YocmVzb3VyY2Vf aWQpKTsKKyAgIGZpbGUuV3JpdGUoJmRhdGFfb2Zmc2V0LCBzaXplb2YoZGF0YV9vZmZzZXQpKTsK KyAKKyAgIC8vIFdyaXRlIHRoZSBhbGlhc2VzIHRhYmxlLCBpZiBhbnkuIE5vdGU6IHxhbGlhc2Vz fCBpcyBhbiBzdGQ6Om1hcCwKKyAgIC8vIGVuc3VyaW5nIHZhbHVlcyBhcmUgd3JpdHRlbiBpbiBp bmNyZWFzaW5nIG9yZGVyLgorLSAgZm9yIChjb25zdCBzdGQ6OnBhaXI8dWludDE2X3QsIHVpbnQx Nl90PiYgYWxpYXMgOiBhbGlhc2VzKSB7CisrICBmb3IgKGNvbnN0IHN0ZDo6cGFpcjx1aW50MTZs ZV90LCB1aW50MTZsZV90PiBhbGlhcyA6IGFsaWFzZXMpIHsKKyAgICAgZmlsZS5Xcml0ZSgmYWxp YXMsIHNpemVvZihhbGlhcykpOworICAgfQorIAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS91aS9iYXNlL3Jlc291cmNlL2RhdGFfcGFjay5jYy5vcmlnCisrKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2Jhc2UvcmVzb3VyY2UvZGF0YV9wYWNrLmNj Lm9yaWcKK0BAIC0zODIsMTIgKzM4Miw2IEBAIGJvb2wgRGF0YVBhY2s6Okhhc1Jlc291cmNlKHVp bnQxNl90IHJlc291cmNlX2lkKSBjb25zdCB7CisgCisgYm9vbCBEYXRhUGFjazo6R2V0U3RyaW5n UGllY2UodWludDE2X3QgcmVzb3VyY2VfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYmFzZTo6U3RyaW5nUGllY2UqIGRhdGEpIGNvbnN0IHsKKy0gIC8vIEl0IHdvbid0IGJlIGhh cmQgdG8gbWFrZSB0aGlzIGVuZGlhbi1hZ25vc3RpYywgYnV0IGl0J3Mgbm90IHdvcnRoCistICAv LyBib3RoZXJpbmcgdG8gZG8gcmlnaHQgbm93LgorLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9MSVRU TEVfRU5ESUFOKQorLSNlcnJvciAiZGF0YXBhY2sgYXNzdW1lcyBsaXR0bGUgZW5kaWFuIgorLSNl bmRpZgorLQorICAgY29uc3QgRW50cnkqIHRhcmdldCA9IExvb2t1cEVudHJ5QnlJZChyZXNvdXJj ZV9pZCk7CisgICBpZiAoIXRhcmdldCkKKyAgICAgcmV0dXJuIGZhbHNlOworLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29kZWMvanBlZ19jb2RlYy5jYworKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29kZWMvanBlZ19jb2Rl Yy5jYworQEAgLTIxMiwxMSArMjEyLDExIEBAIGJvb2wgSlBFR0NvZGVjOjpEZWNvZGUoY29uc3Qg dW5zaWduZWQgY2hhciogaW5wdXQsIHNpemVfdCBpbnB1dF9zaXplLAorICAgICAgIC8vIHVzZWQg YnkgQ2hyb21pdW0gKGkuZS4gUkdCQSBhbmQgQkdSQSkgYW5kIHdlIGp1c3QgbWFwIHRoZSBpbnB1 dAorICAgICAgIC8vIHBhcmFtZXRlcnMgdG8gYSBjb2xvcnNwYWNlLgorICAgICAgIGlmIChmb3Jt YXQgPT0gRk9STUFUX1JHQkEgfHwKKy0gICAgICAgICAgKGZvcm1hdCA9PSBGT1JNQVRfU2tCaXRt YXAgJiYgU0tfUjMyX1NISUZUID09IDApKSB7CisrICAgICAgICAgIChmb3JtYXQgPT0gRk9STUFU X1NrQml0bWFwICYmIFNLX1BNQ09MT1JfQllURV9PUkRFUihSLCBHLCBCLCBBKSkpIHsKKyAgICAg ICAgIGNpbmZvLT5vdXRfY29sb3Jfc3BhY2UgPSBKQ1NfRVhUX1JHQlg7CisgICAgICAgICBjaW5m by0+b3V0cHV0X2NvbXBvbmVudHMgPSA0OworICAgICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09IEZP Uk1BVF9CR1JBIHx8CistICAgICAgICAgICAgICAgICAoZm9ybWF0ID09IEZPUk1BVF9Ta0JpdG1h cCAmJiBTS19CMzJfU0hJRlQgPT0gMCkpIHsKKysgICAgICAgICAgICAgICAgIChmb3JtYXQgPT0g Rk9STUFUX1NrQml0bWFwICYmIFNLX1BNQ09MT1JfQllURV9PUkRFUihCLCBHLCBSLCBBKSkpIHsK KyAgICAgICAgIGNpbmZvLT5vdXRfY29sb3Jfc3BhY2UgPSBKQ1NfRVhUX0JHUlg7CisgICAgICAg ICBjaW5mby0+b3V0cHV0X2NvbXBvbmVudHMgPSA0OworICAgICAgIH0gZWxzZSB7CistLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9wbmdfY29kZWMuY2MK KysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvZGVjL3BuZ19j b2RlYy5jYworQEAgLTE2OSw2ICsxNjksMTAgQEAgdm9pZCBEZWNvZGVJbmZvQ2FsbGJhY2socG5n X3N0cnVjdCogcG5nX3B0ciwgcG5nX2luZm8qIGluZm9fcHRyKSB7CisgICAgICAgICBwbmdfc2V0 X2JncihwbmdfcHRyKTsKKyAgICAgICAgIHBuZ19zZXRfYWRkX2FscGhhKHBuZ19wdHIsIDB4RkYs IFBOR19GSUxMRVJfQUZURVIpOworICAgICAgICAgYnJlYWs7CisrICAgICAgY2FzZSBQTkdDb2Rl Yzo6Rk9STUFUX0FSR0I6CisrICAgICAgICBzdGF0ZS0+b3V0cHV0X2NoYW5uZWxzID0gNDsKKysg ICAgICAgIHBuZ19zZXRfYWRkX2FscGhhKHBuZ19wdHIsIDB4RkYsIFBOR19GSUxMRVJfQkVGT1JF KTsKKysgICAgICAgIGJyZWFrOworICAgICAgIGNhc2UgUE5HQ29kZWM6OkZPUk1BVF9Ta0JpdG1h cDoKKyAgICAgICAgIHN0YXRlLT5vdXRwdXRfY2hhbm5lbHMgPSA0OworICAgICAgICAgcG5nX3Nl dF9hZGRfYWxwaGEocG5nX3B0ciwgMHhGRiwgUE5HX0ZJTExFUl9BRlRFUik7CitAQCAtMTgzLDYg KzE4NywxMCBAQCB2b2lkIERlY29kZUluZm9DYWxsYmFjayhwbmdfc3RydWN0KiBwbmdfcHRyLCBw bmdfaW5mbyogaW5mb19wdHIpIHsKKyAgICAgICAgIHN0YXRlLT5vdXRwdXRfY2hhbm5lbHMgPSA0 OworICAgICAgICAgcG5nX3NldF9iZ3IocG5nX3B0cik7CisgICAgICAgICBicmVhazsKKysgICAg ICBjYXNlIFBOR0NvZGVjOjpGT1JNQVRfQVJHQjoKKysgICAgICAgIHN0YXRlLT5vdXRwdXRfY2hh bm5lbHMgPSA0OworKwlwbmdfc2V0X3N3YXBfYWxwaGEocG5nX3B0cik7CisrICAgICAgICBicmVh azsKKyAgICAgICBjYXNlIFBOR0NvZGVjOjpGT1JNQVRfU2tCaXRtYXA6CisgICAgICAgICBzdGF0 ZS0+b3V0cHV0X2NoYW5uZWxzID0gNDsKKyAgICAgICAgIGJyZWFrOworQEAgLTQ3NSw2ICs0ODMs OCBAQCBib29sIFBOR0NvZGVjOjpFbmNvZGUoY29uc3QgdW5zaWduZWQgY2hhciogaW5wdXQsCisg ICAgIGNhc2UgRk9STUFUX0JHUkE6CisgICAgICAgY29sb3JUeXBlID0ga0JHUkFfODg4OF9Ta0Nv bG9yVHlwZTsKKyAgICAgICBicmVhazsKKysgICAgY2FzZSBGT1JNQVRfQVJHQjoKKysgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgIGNhc2UgRk9STUFUX1NrQml0bWFwOgorICAgICAgIGNvbG9yVHlw ZSA9IGtOMzJfU2tDb2xvclR5cGU7CisgICAgICAgYnJlYWs7CistLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9wbmdfY29kZWMuaAorKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29kZWMvcG5nX2NvZGVjLmgKK0BAIC0z Nyw2ICszNywxMCBAQCBjbGFzcyBDT0RFQ19FWFBPUlQgUE5HQ29kZWMgeworICAgICAvLyBUaGlz IGlzIHRoZSBkZWZhdWx0IFdpbmRvd3MgRElCIG9yZGVyLgorICAgICBGT1JNQVRfQkdSQSwKKyAK KysgICAgLy8gNCBieXRlcyBwZXIgcGl4ZWwsIGluIEFSR0Igb3JkZXIgaW4gbWVtb3J5IHJlZ2Fy ZGxlc3Mgb2YgZW5kaWFubmVzcy4KKysgICAgLy8gT25seSBzdXBwb3J0ZWQgZm9yIGRlY29kaW5n CisrICAgIEZPUk1BVF9BUkdCLAorKworICAgICAvLyBTa0JpdG1hcCBmb3JtYXQuIEZvciBFbmNv ZGUoKSBrTjMyX1NrQ29sb3JUeXBlICg0IGJ5dGVzIHBlciBwaXhlbCkgYW5kCisgICAgIC8vIGtB bHBoYV84X1NrQ29sb3JUeXBlICgxIGJ5dGUgcGVyIHBpeGVsKSBmb3JtYXRzIGFyZSBzdXBwb3J0 ZWQuCisgICAgIC8vIGtBbHBoYV84X1NrQ29sb3JUeXBlIGdldHMgZW5jb2RlZCBpbnRvIGEgZ3Jh eXNjYWxlIFBORyB0cmVhdGluZyBhbHBoYSBhcworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS91aS9nZngvY29kZWMvcG5nX2NvZGVjX3VuaXR0ZXN0LmNjCisrKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9wbmdfY29kZWNfdW5pdHRl c3QuY2MKK0BAIC04NTMsNyArODUzLDcgQEAgVEVTVChQTkdDb2RlYywgRW5jb2RlQThTa0JpdG1h cCkgeworICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGg7IHkrKykgeworICAgICAgIHVpbnQ4X3Qg b3JpZ2luYWxfcGl4ZWwgPSAqb3JpZ2luYWxfYml0bWFwLmdldEFkZHI4KHgsIHkpOworICAgICAg IHVpbnQzMl90IGRlY29kZWRfcGl4ZWwgPSAqZGVjb2RlZF9iaXRtYXAuZ2V0QWRkcjMyKHgsIHkp OworLSAgICAgIEVYUEVDVF9UUlVFKEJHUkFHcmF5RXF1YWxzQThHcmF5KGRlY29kZWRfcGl4ZWws IG9yaWdpbmFsX3BpeGVsKSk7CisrICAgICAgRVhQRUNUX1RSVUUoQkdSQUdyYXlFcXVhbHNBOEdy YXkoU2tVblByZU11bHRpcGx5OjpQTUNvbG9yVG9Db2xvcihkZWNvZGVkX3BpeGVsKSwgb3JpZ2lu YWxfcGl4ZWwpKTsKKyAgICAgfQorICAgfQorIH0KKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdWkvZ2Z4L2NvbG9yX2FuYWx5c2lzLmNjCisrKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2xvcl9hbmFseXNpcy5jYworQEAgLTE2LDYgKzE2 LDcgQEAKKyAjaW5jbHVkZSA8dmVjdG9yPgorIAorICNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIK KysjaW5jbHVkZSAiYmFzZS9zeXNfYnl0ZW9yZGVyLmgiCisgI2luY2x1ZGUgInRoaXJkX3BhcnR5 L3NraWEvaW5jbHVkZS9jb3JlL1NrQml0bWFwLmgiCisgI2luY2x1ZGUgInRoaXJkX3BhcnR5L3Nr aWEvaW5jbHVkZS9jb3JlL1NrVW5QcmVNdWx0aXBseS5oIgorICNpbmNsdWRlICJ1aS9nZngvY29k ZWMvcG5nX2NvZGVjLmgiCitAQCAtNTA2LDEwICs1MDcsMTcgQEAgU2tDb2xvciBGaW5kQ2xvc2Vz dENvbG9yKGNvbnN0IHVpbnQ4X3QqIGltYWdlLAorICAgU2tDb2xvciBiZXN0X2NvbG9yID0gY29s b3I7CisgICBjb25zdCB1aW50OF90KiBieXRlID0gaW1hZ2U7CisgICBmb3IgKGludCBpID0gMDsg aSA8IHdpZHRoICogaGVpZ2h0OyArK2kpIHsKKysjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVf RU5ESUFOKQorICAgICB1aW50OF90IGIgPSAqKGJ5dGUrKyk7CisgICAgIHVpbnQ4X3QgZyA9ICoo Ynl0ZSsrKTsKKyAgICAgdWludDhfdCByID0gKihieXRlKyspOworICAgICB1aW50OF90IGEgPSAq KGJ5dGUrKyk7CisrI2Vsc2UKKysgICAgdWludDhfdCBhID0gKihieXRlKyspOworKyAgICB1aW50 OF90IHIgPSAqKGJ5dGUrKyk7CisrICAgIHVpbnQ4X3QgZyA9ICooYnl0ZSsrKTsKKysgICAgdWlu dDhfdCBiID0gKihieXRlKyspOworKyNlbmRpZgorICAgICAvLyBJZ25vcmUgZnVsbHkgdHJhbnNw YXJlbnQgcGl4ZWxzLgorICAgICBpZiAoYSA9PSAwKQorICAgICAgIGNvbnRpbnVlOworQEAgLTUy Nyw3ICs1MzUsNiBAQCBTa0NvbG9yIEZpbmRDbG9zZXN0Q29sb3IoY29uc3QgdWludDhfdCogaW1h Z2UsCisgCisgLy8gRm9yIGEgMTZ4MTYgaWNvbiBvbiBhbiBJbnRlbCBDb3JlIGk1IHRoaXMgZnVu Y3Rpb24gdGFrZXMgYXBwcm94aW1hdGVseQorIC8vIDAuNSBtcyB0byBydW4uCistLy8gVE9ETyhw b3J0KTogVGhpcyBjb2RlIGFzc3VtZXMgdGhlIENQVSBhcmNoaXRlY3R1cmUgaXMgbGl0dGxlLWVu ZGlhbi4KKyBTa0NvbG9yIENhbGN1bGF0ZUtNZWFuQ29sb3JPZkJ1ZmZlcih1aW50OF90KiBkZWNv ZGVkX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGltZ193 aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW1nX2hlaWdo dCwKK0BAIC01NTAsMTAgKzU1NywxNyBAQCBTa0NvbG9yIENhbGN1bGF0ZUtNZWFuQ29sb3JPZkJ1 ZmZlcih1aW50OF90KiBkZWNvZGVkX2RhdGEsCisgICAgICAgICBpbnQgcGl4ZWxfcG9zID0gc2Ft cGxlci0+R2V0U2FtcGxlKGltZ193aWR0aCwgaW1nX2hlaWdodCkgJQorICAgICAgICAgICAgIChp bWdfd2lkdGggKiBpbWdfaGVpZ2h0KTsKKyAKKysjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVf RU5ESUFOKQorICAgICAgICAgdWludDhfdCBiID0gZGVjb2RlZF9kYXRhW3BpeGVsX3BvcyAqIDRd OworICAgICAgICAgdWludDhfdCBnID0gZGVjb2RlZF9kYXRhW3BpeGVsX3BvcyAqIDQgKyAxXTsK KyAgICAgICAgIHVpbnQ4X3QgciA9IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0ICsgMl07Cisg ICAgICAgICB1aW50OF90IGEgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICogNCArIDNdOworKyNl bHNlCisrICAgICAgICB1aW50OF90IGEgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICogNF07Cisr ICAgICAgICB1aW50OF90IHIgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICogNCArIDFdOworKyAg ICAgICAgdWludDhfdCBnID0gZGVjb2RlZF9kYXRhW3BpeGVsX3BvcyAqIDQgKyAyXTsKKysgICAg ICAgIHVpbnQ4X3QgYiA9IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0ICsgM107CisrI2VuZGlm CisgICAgICAgICAvLyBTa2lwIGZ1bGx5IHRyYW5zcGFyZW50IHBpeGVscyBhcyB0aGV5IHVzdWFs bHkgY29udGFpbiBibGFjayBpbiB0aGVpcgorICAgICAgICAgLy8gUkdCIGNoYW5uZWxzIGJ1dCBk byBub3QgY29udHJpYnV0ZSB0byB0aGUgdmlzdWFsIGltYWdlLgorICAgICAgICAgaWYgKGEgPT0g MCkKK0BAIC02MDIsMTAgKzYxNiwxNyBAQCBTa0NvbG9yIENhbGN1bGF0ZUtNZWFuQ29sb3JPZkJ1 ZmZlcih1aW50OF90KiBkZWNvZGVkX2RhdGEsCisgICAgICAgdWludDhfdCogcGl4ZWwgPSBkZWNv ZGVkX2RhdGE7CisgICAgICAgdWludDhfdCogZGVjb2RlZF9kYXRhX2VuZCA9IGRlY29kZWRfZGF0 YSArIChpbWdfd2lkdGggKiBpbWdfaGVpZ2h0ICogNCk7CisgICAgICAgd2hpbGUgKHBpeGVsIDwg ZGVjb2RlZF9kYXRhX2VuZCkgeworKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4p CisgICAgICAgICB1aW50OF90IGIgPSAqKHBpeGVsKyspOworICAgICAgICAgdWludDhfdCBnID0g KihwaXhlbCsrKTsKKyAgICAgICAgIHVpbnQ4X3QgciA9ICoocGl4ZWwrKyk7CisgICAgICAgICB1 aW50OF90IGEgPSAqKHBpeGVsKyspOworKyNlbHNlCisrICAgICAgICB1aW50OF90IGEgPSAqKHBp eGVsKyspOworKyAgICAgICAgdWludDhfdCByID0gKihwaXhlbCsrKTsKKysgICAgICAgIHVpbnQ4 X3QgZyA9ICoocGl4ZWwrKyk7CisrICAgICAgICB1aW50OF90IGIgPSAqKHBpeGVsKyspOworKyNl bmRpZgorICAgICAgICAgLy8gU2tpcCB0cmFuc3BhcmVudCBwaXhlbHMsIHNlZSBhYm92ZS4KKyAg ICAgICAgIGlmIChhID09IDApCisgICAgICAgICAgIGNvbnRpbnVlOworQEAgLTY4Myw4ICs3MDQs MTIgQEAgU2tDb2xvciBDYWxjdWxhdGVLTWVhbkNvbG9yT2ZQTkcoc2NvcGVkX3JlZnB0cjxiYXNl OjpSZWZDb3VudGVkTWVtb3J5PiBwbmcsCisgCisgICBpZiAocG5nLmdldCgpICYmIHBuZy0+c2l6 ZSgpICYmCisgICAgICAgZ2Z4OjpQTkdDb2RlYzo6RGVjb2RlKHBuZy0+ZnJvbnQoKSwgcG5nLT5z aXplKCksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmeDo6UE5HQ29kZWM6OkZPUk1B VF9CR1JBLCAmZGVjb2RlZF9kYXRhLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW1n X3dpZHRoLCAmaW1nX2hlaWdodCkpIHsKKysjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5E SUFOKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZng6OlBOR0NvZGVjOjpGT1JNQVRf QkdSQSwKKysjZWxzZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZng6OlBOR0NvZGVj OjpGT1JNQVRfQVJHQiwKKysjZW5kaWYKKysJCQkgICAgJmRlY29kZWRfZGF0YSwgJmltZ193aWR0 aCwgJmltZ19oZWlnaHQpKSB7CisgICAgIHJldHVybiBDYWxjdWxhdGVLTWVhbkNvbG9yT2ZCdWZm ZXIoJmRlY29kZWRfZGF0YVswXSwgaW1nX3dpZHRoLCBpbWdfaGVpZ2h0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCwgc2Ft cGxlciwgdHJ1ZSk7CisgICB9CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3VpL2dmeC9za2JpdG1hcF9vcGVyYXRpb25zX3VuaXR0ZXN0LmNjCisrKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9za2JpdG1hcF9vcGVyYXRpb25zX3VuaXR0ZXN0 LmNjCitAQCAtMjM4LDcgKzIzOCw3IEBAIFRFU1QoU2tCaXRtYXBPcGVyYXRpb25zVGVzdCwgQ3Jl YXRlSFNMU2hpZnRlZEJpdG1hcEh1ZU9ubHkpIHsKKyAKKyAgIGZvciAoaW50IHkgPSAwLCBpID0g MDsgeSA8IHNyY19oOyB5KyspIHsKKyAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBzcmNfdzsgeCsr KSB7CistICAgICAgKnNyYy5nZXRBZGRyMzIoeCwgeSkgPSBTa0NvbG9yU2V0QVJHQigyNTUsIDAs IDAsIGkgJSAyNTUpOworKyAgICAgICpzcmMuZ2V0QWRkcjMyKHgsIHkpID0gU2tQYWNrQVJHQjMy KDI1NSwgMCwgMCwgaSAlIDI1NSk7CisgICAgICAgaSsrOworICAgICB9CisgICB9CistLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VybC91cmxfY2Fub25faG9zdC5jYworKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91cmwvdXJsX2Nhbm9uX2hvc3QuY2MK K0BAIC0xMzUsOCArMTM1LDcgQEAgYm9vbCBEb1NpbXBsZUhvc3QoY29uc3QgSU5DSEFSKiBob3N0 LAorICAgICBpZiAoc291cmNlID09ICclJykgeworICAgICAgIC8vIFVuZXNjYXBlIGZpcnN0LCBp ZiBwb3NzaWJsZS4KKyAgICAgICAvLyBTb3VyY2Ugd2lsbCBiZSB1c2VkIG9ubHkgaWYgZGVjb2Rl IG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bC4KKy0gICAgICBpZiAoIURlY29kZUVzY2FwZWQoaG9z dCwgJmksIGhvc3RfbGVuLAorLSAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9j YXN0PHVuc2lnbmVkIGNoYXIqPigmc291cmNlKSkpIHsKKysgICAgICBpZiAoIURlY29kZUVzY2Fw ZWQoaG9zdCwgJmksIGhvc3RfbGVuLCAmc291cmNlKSkgeworICAgICAgICAgLy8gSW52YWxpZCBl c2NhcGVkIGNoYXJhY3Rlci4gVGhlcmUgaXMgbm90aGluZyB0aGF0IGNhbiBtYWtlIHRoaXMKKyAg ICAgICAgIC8vIGhvc3QgdmFsaWQuIFdlIGFwcGVuZCBhbiBlc2NhcGVkIHBlcmNlbnQgc28gdGhl IFVSTCBsb29rcyByZWFzb25hYmxlCisgICAgICAgICAvLyBhbmQgbWFyayBhcyBmYWlsZWQuCist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VybC91cmxfY2Fub25faW50ZXJu YWwuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91cmwvdXJsX2Nhbm9u X2ludGVybmFsLmgKK0BAIC0zMDUsOSArMzA1LDkgQEAgaW5saW5lIGJvb2wgSXM4Qml0Q2hhcihi YXNlOjpjaGFyMTYgYykgeworICAgcmV0dXJuIGMgPD0gMjU1OworIH0KKyAKKy10ZW1wbGF0ZTx0 eXBlbmFtZSBDSEFSPgorK3RlbXBsYXRlPHR5cGVuYW1lIENIQVIsIHR5cGVuYW1lIERTVD4KKyBp bmxpbmUgYm9vbCBEZWNvZGVFc2NhcGVkKGNvbnN0IENIQVIqIHNwZWMsIGludCogYmVnaW4sIGlu dCBlbmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiB1bmVzY2Fw ZWRfdmFsdWUpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgIERTVCogdW5lc2NhcGVkX3Zh bHVlKSB7CisgICBpZiAoKmJlZ2luICsgMyA+IGVuZCB8fAorICAgICAgICFJczhCaXRDaGFyKHNw ZWNbKmJlZ2luICsgMV0pIHx8ICFJczhCaXRDaGFyKHNwZWNbKmJlZ2luICsgMl0pKSB7CisgICAg IC8vIEludmFsaWQgZXNjYXBlIHNlcXVlbmNlIGJlY2F1c2UgdGhlcmUncyBub3QgZW5vdWdoIHJv b20sIG9yIHRoZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkzLWNocm9taXVt LXY4LWVsZnYyLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkzLWNocm9taXVtLXY4LWVs ZnYyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mNTgwYzgx NDY5NwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5My1jaHJvbWl1 bS12OC1lbGZ2Mi5wYXRjaApAQCAtMCwwICsxLDQzIEBACitUaGlzIGZpeGVzIHY4IG9uIGJpZyBl bmRpYW4gcHBjNjQgRUxGdjIuCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3Y4L3NyYy9wcGMvY29uc3RhbnRzLXBwYy5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3Y4L3NyYy9wcGMvY29uc3RhbnRzLXBwYy5oCitAQCAtMjEsNyArMjEsOCBAQAor ICNlbmRpZgorIAorICNpZiBWOF9IT1NUX0FSQ0hfUFBDICYmIFwKKy0gICAgKFY4X09TX0FJWCB8 fCAoVjhfVEFSR0VUX0FSQ0hfUFBDNjQgJiYgVjhfVEFSR0VUX0JJR19FTkRJQU4pKQorKyAgICAo VjhfT1NfQUlYIHx8IChWOF9UQVJHRVRfQVJDSF9QUEM2NCAmJiBcCisrICAgICAgKFY4X1RBUkdF VF9CSUdfRU5ESUFOICYmICghZGVmaW5lZChfQ0FMTF9FTEYpIHx8IF9DQUxMX0VMRiA9PSAxKSkp KQorICNkZWZpbmUgQUJJX1VTRVNfRlVOQ1RJT05fREVTQ1JJUFRPUlMgMQorICNlbHNlCisgI2Rl ZmluZSBBQklfVVNFU19GVU5DVElPTl9ERVNDUklQVE9SUyAwCitAQCAtMzMsMTMgKzM0LDE1IEBA CisgI2RlZmluZSBBQklfUEFTU0VTX0hBTkRMRVNfSU5fUkVHUyAwCisgI2VuZGlmCisgCistI2lm ICFWOF9IT1NUX0FSQ0hfUFBDIHx8ICFWOF9UQVJHRVRfQVJDSF9QUEM2NCB8fCBWOF9UQVJHRVRf TElUVExFX0VORElBTgorKyNpZiAhVjhfSE9TVF9BUkNIX1BQQyB8fCAhVjhfVEFSR0VUX0FSQ0hf UFBDNjQgfHwgXAorKyAgICAoVjhfVEFSR0VUX0xJVFRMRV9FTkRJQU4gfHwgKGRlZmluZWQoX0NB TExfRUxGKSAmJiBfQ0FMTF9FTEYgPT0gMikpCisgI2RlZmluZSBBQklfUkVUVVJOU19PQkpFQ1Rf UEFJUlNfSU5fUkVHUyAxCisgI2Vsc2UKKyAjZGVmaW5lIEFCSV9SRVRVUk5TX09CSkVDVF9QQUlS U19JTl9SRUdTIDAKKyAjZW5kaWYKKyAKKy0jaWYgIVY4X0hPU1RfQVJDSF9QUEMgfHwgKFY4X1RB UkdFVF9BUkNIX1BQQzY0ICYmIFY4X1RBUkdFVF9MSVRUTEVfRU5ESUFOKQorKyNpZiAhVjhfSE9T VF9BUkNIX1BQQyB8fCAoVjhfVEFSR0VUX0FSQ0hfUFBDNjQgJiYgXAorKyAgICAoVjhfVEFSR0VU X0xJVFRMRV9FTkRJQU4gfHwgKGRlZmluZWQoX0NBTExfRUxGKSAmJiBfQ0FMTF9FTEYgPT0gMikp KQorICNkZWZpbmUgQUJJX0NBTExfVklBX0lQIDEKKyAjZWxzZQorICNkZWZpbmUgQUJJX0NBTExf VklBX0lQIDAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL3Bw Yy9yZWdpc3Rlci1wcGMuaAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92 OC9zcmMvcHBjL3JlZ2lzdGVyLXBwYy5oCitAQCAtMTQ1LDcgKzE0NSw4IEBAIGNvbnN0IGludCBr TnVtU2FmZXBvaW50UmVnaXN0ZXJzID0gMzI7CisgLy8gVGhlIGZvbGxvd2luZyBjb25zdGFudHMg ZGVzY3JpYmUgdGhlIHN0YWNrIGZyYW1lIGxpbmthZ2UgYXJlYSBhcworIC8vIGRlZmluZWQgYnkg dGhlIEFCSS4gIE5vdGUgdGhhdCBrTnVtUmVxdWlyZWRTdGFja0ZyYW1lU2xvdHMgbXVzdAorIC8v IHNhdGlzZnkgYWxpZ25tZW50IHJlcXVpcmVtZW50cyAocm91bmRpbmcgdXAgaWYgcmVxdWlyZWQp LgorLSNpZiBWOF9UQVJHRVRfQVJDSF9QUEM2NCAmJiBWOF9UQVJHRVRfTElUVExFX0VORElBTiAg Ly8gcHBjNjRsZSBsaW51eAorKyNpZiBWOF9UQVJHRVRfQVJDSF9QUEM2NCAmJiAoVjhfVEFSR0VU X0xJVFRMRV9FTkRJQU4gfHwgXAorKyAgICBkZWZpbmVkKF9DQUxMX0VMRikgJiYgX0NBTExfRUxG ID09IDIpCisgLy8gWzBdIGJhY2sgY2hhaW4KKyAvLyBbMV0gY29uZGl0aW9uIHJlZ2lzdGVyIHNh dmUgYXJlYQorIC8vIFsyXSBsaW5rIHJlZ2lzdGVyIHNhdmUgYXJlYQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDk0LWJpZy1lbmRpYW4tc2tpYS1wb3J0YWJsZS5wYXRjaCBiL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvMDA5NC1iaWctZW5kaWFuLXNraWEtcG9ydGFibGUucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVhMjY5ZDM4M2QxCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDk0LWJpZy1lbmRpYW4tc2tpYS1wb3J0 YWJsZS5wYXRjaApAQCAtMCwwICsxLDE3IEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvdGhpcmRfcGFydHkvc2tjbXMvc2tjbXMuY2MKKysr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS90aGly ZF9wYXJ0eS9za2Ntcy9za2Ntcy5jYworQEAgLTE4MjgsNiArMTgyOCwxNCBAQCB0eXBlZGVmIGVu dW0geworICAgICAjZW5kaWYKKyAjZW5kaWYKKyAKKysvLyB3aXRoIGN1cnJlbnQgZ2NjIDguMy4w IHdlIGdldCBhbiBpbnRlcm5hbCBjb21waWxlciBlcnJvciB3aGVuIGNvbXBpbGluZworKy8vIGZv ciBwcGM2NCBiaWcgZW5kaWFuIC0gc28gc3dpdGNoIHRvIHBvcnRhYmxlIHVudGlsIHRoaXMgaXMg cmVzb2x2ZWQKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyMgIGlmIGRlZmluZWQoX19C SUdfRU5ESUFOX18pICYmICFkZWZpbmVkKFNLQ01TX1BPUlRBQkxFKQorKyMgICAgZGVmaW5lIFNL Q01TX1BPUlRBQkxFCisrIyAgZW5kaWYKKysjZW5kaWYKKysKKyAjaWYgZGVmaW5lZChfX2NsYW5n X18pCisgICAgIHRlbXBsYXRlIDxpbnQgTiwgdHlwZW5hbWUgVD4gdXNpbmcgVmVjID0gVCBfX2F0 dHJpYnV0ZV9fKChleHRfdmVjdG9yX3R5cGUoTikpKTsKKyAjZWxpZiBkZWZpbmVkKF9fR05VQ19f KQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy9xdHdlYmVuZ2luZS1jaHJvbWl1bS1w cGM2NC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvcXR3ZWJlbmdpbmUtY2hyb21pdW0tcHBj NjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyNjZiYjhlYmIxLi4wMDAw MDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0d2ViZW5naW5lLWNocm9taXVtLXBw YzY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjExMiArMCwwIEBACi1UaGlzIHBhdGNoZXMg dGhlIGJ1bmRsZWQgQ2hyb21pdW0gZW5vdWdoIHRvIGFsbG93IGl0IHRvIGJ1aWxkIGFuZCB3b3Jr IG9uCi1saXR0bGUgZW5kaWFuIHBwYzY0LiBUaGUgcGF0Y2hzZXQgaXMgcmViYXNlZCByZWd1bGFy bHkgb24gdG9wIG9mIGxhdGVzdAotQ2hyb21pdW0gY29kZWJhc2UsIHNvIHRoZXJlIHNob3VsZCBi ZSBubyBwcm9ibGVtIGtlZXBpbmcgaXQgdXAgdG8gZGF0ZS4KLQotUGluZyBxNjYgaWYgeW91J3Jl IHVwZGF0aW5nIHF0NSBhbmQgdGhlIHBhdGNoIGRvZXMgbm90IGFwcGx5IGFueW1vcmUuCi0KLVNv dXJjZTogaHR0cHM6Ly93aWtpLnJhcHRvcmNzLmNvbS93L2luZGV4LnBocD90aXRsZT1Qb3J0aW5n L0Nocm9taXVtCi1VcHN0cmVhbTogQ2hyb21pdW0gZG9lcyBub3QgYWNjZXB0IGFkZGl0aW9uYWwg cGxhdGZvcm0gc3VwcG9ydCwgZG93bnN0cmVhbQotICAgICAgICAgIHBhdGNoaW5nIG5lY2Vzc2Fy eQotCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2Fs bG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhZ2VfYWxsb2NhdG9yLmggcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Iv cGFnZV9hbGxvY2F0b3IuaAotaW5kZXggYTM5YjRlMzAxLi41ZTYyZTdhMjMgMTAwNjQ0Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlv bl9hbGxvY2F0b3IvcGFnZV9hbGxvY2F0b3IuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhZ2VfYWxsb2Nh dG9yLmgKLUBAIC0xNSw3ICsxNSw3IEBACi0gCi0gbmFtZXNwYWNlIGJhc2UgewotIAotLSNpZiBk ZWZpbmVkKE9TX1dJTikKLSsjaWYgZGVmaW5lZChPU19XSU4pIHx8IGRlZmluZWQoQVJDSF9DUFVf UFBDNjQpCi0gc3RhdGljIGNvbnN0IHNpemVfdCBrUGFnZUFsbG9jYXRpb25HcmFudWxhcml0eVNo aWZ0ID0gMTY7ICAvLyA2NEtCCi0gI2VsaWYgZGVmaW5lZChfTUlQU19BUkNIX0xPT05HU09OKQot IHN0YXRpYyBjb25zdCBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlTaGlmdCA9IDE0 OyAgLy8gMTZLQgotQEAgLTMxLDYgKzMxLDEwIEBAIHN0YXRpYyBjb25zdCBzaXplX3Qga1BhZ2VB bGxvY2F0aW9uR3JhbnVsYXJpdHlCYXNlTWFzayA9Ci0gCi0gI2lmIGRlZmluZWQoX01JUFNfQVJD SF9MT09OR1NPTikKLSBzdGF0aWMgY29uc3Qgc2l6ZV90IGtTeXN0ZW1QYWdlU2l6ZSA9IDE2Mzg0 OwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0rLy8gVE9ETzogbW9kZXJuIHBwYzY0 IGNhbiBkbyA0ayBhbmQgNjRrIHBhZ2Ugc2l6ZXMKLSsvLyBmb3Igbm93LCA2NGsgaXMgYXNzdW1l ZAotK3N0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTeXN0ZW1QYWdlU2l6ZSA9IDY1NTM2OwotICNl bHNlCi0gc3RhdGljIGNvbnN0IHNpemVfdCBrU3lzdGVtUGFnZVNpemUgPSA0MDk2OwotICNlbmRp ZgotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxv Y2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2MuaCBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9w YXJ0aXRpb25fYWxsb2MuaAotaW5kZXggNmU1MTQzYjA5Li43NGM3Y2Y4OGYgMTAwNjQ0Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlv bl9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYXJ0aXRpb25f YWxsb2MuaAotQEAgLTk5LDYgKzk5LDggQEAgc3RhdGljIGNvbnN0IHNpemVfdCBrQnVja2V0U2hp ZnQgPSAoa0FsbG9jYXRpb25HcmFudWxhcml0eSA9PSA4KSA/IDMgOiAyOwotIC8vIHVwIGFnYWlu c3QgdGhlIGVuZCBvZiBhIHN5c3RlbSBwYWdlLgotICNpZiBkZWZpbmVkKF9NSVBTX0FSQ0hfTE9P TkdTT04pCi0gc3RhdGljIGNvbnN0IHNpemVfdCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0gMTY7ICAv LyA2NEtCCi0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLStzdGF0aWMgY29uc3Qgc2l6 ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAxODsgIC8vIDI1NiBLaUIKLSAjZWxzZQotIHN0YXRp YyBjb25zdCBzaXplX3Qga1BhcnRpdGlvblBhZ2VTaGlmdCA9IDE0OyAgLy8gMTZLQgotICNlbmRp ZgotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50 cy91cGRhdGVfY2xpZW50L3VwZGF0ZV9xdWVyeV9wYXJhbXMuY2MgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvdXBkYXRlX2NsaWVudC91cGRhdGVfcXVlcnlfcGFy YW1zLmNjCi1pbmRleCAyNzIwMTZjNzYuLjRiMDJkM2NlNSAxMDA2NDQKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50cy91cGRhdGVfY2xpZW50L3VwZGF0ZV9x dWVyeV9wYXJhbXMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29t cG9uZW50cy91cGRhdGVfY2xpZW50L3VwZGF0ZV9xdWVyeV9wYXJhbXMuY2MKLUBAIC01NSw2ICs1 NSw4IEBAIGNvbnN0IGNoYXIga0FyY2hbXSA9Ci0gICAgICJtaXBzNjRlbCI7Ci0gI2VsaWYgZGVm aW5lZChfX21pcHNfXykKLSAgICAgIm1pcHNlbCI7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotKyAgICAicHBjNjQiOwotICNlbHNlCi0gI2Vycm9yICJ1bmtub3duIGFyY2giCi0gI2Vu ZGlmCi1AQCAtMTI3LDYgKzEyOSw4IEBAIGNvbnN0IGNoYXIqIFVwZGF0ZVF1ZXJ5UGFyYW1zOjpH ZXROYWNsQXJjaCgpIHsKLSAgIHJldHVybiAibWlwczMyIjsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hf Q1BVX01JUFM2NEVMKQotICAgcmV0dXJuICJtaXBzNjQiOwotKyNlbGlmIGRlZmluZWQoQVJDSF9D UFVfUFBDNjQpCi0rICByZXR1cm4gInBwYzY0IjsKLSAjZWxzZQotIC8vIE5PVEU6IHdoZW4gYWRk aW5nIG5ldyB2YWx1ZXMgaGVyZSwgcGxlYXNlIHJlbWVtYmVyIHRvIHVwZGF0ZSB0aGUKLSAvLyBj b21tZW50IGluIHRoZSAuaCBmaWxlIGFib3V0IHBvc3NpYmxlIHJldHVybiB2YWx1ZXMgZnJvbSB0 aGlzIGZ1bmN0aW9uLgotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vY29tcG9uZW50cy91cGRhdGVfY2xpZW50L3VwZGF0ZV9xdWVyeV9wYXJhbXMuaCBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50cy91cGRhdGVfY2xpZW50L3VwZGF0 ZV9xdWVyeV9wYXJhbXMuaAotaW5kZXggYTM1ZTRjMzc3Li5lMzE1ZTE0NGMgMTAwNjQ0Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvdXBkYXRlX2NsaWVu dC91cGRhdGVfcXVlcnlfcGFyYW1zLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vY29tcG9uZW50cy91cGRhdGVfY2xpZW50L3VwZGF0ZV9xdWVyeV9wYXJhbXMuaAotQEAg LTQ1LDcgKzQ1LDcgQEAgY2xhc3MgVXBkYXRlUXVlcnlQYXJhbXMgewotICAgLy8gUmV0dXJucyB0 aGUgdmFsdWUgd2UgdXNlIGZvciB0aGUgIm5hY2xfYXJjaCIgcGFyYW1ldGVyLiBOb3RlIHRoYXQg dGhpcyBtYXkKLSAgIC8vIGJlIGRpZmZlcmVudCBmcm9tIHRoZSAiYXJjaCIgcGFyYW1ldGVyIGFi b3ZlIChlLmcuIG9uZSBtYXkgYmUgMzItYml0IGFuZAotICAgLy8gdGhlIG90aGVyIDY0LWJpdCku IFBvc3NpYmxlIHJldHVybiB2YWx1ZXMgaW5jbHVkZTogIng4Ni0zMiIsICJ4ODYtNjQiLAotLSAg Ly8gImFybSIsIGFuZCAibWlwczMyIi4KLSsgIC8vICJhcm0iLCAibWlwczMyIiwgYW5kICJwcGM2 NCIuCi0gICBzdGF0aWMgY29uc3QgY2hhciogR2V0TmFjbEFyY2goKTsKLSAKLSAgIC8vIFJldHVy bnMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBDaHJvbWUvQ2hyb21pdW0uCi1kaWZmIC0tZ2l0IHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2ZlYXR1cmVzLmduaSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9mZWF0dXJlcy5nbmkKLWluZGV4 IDg5NjkzYzU0Yy4uNjAxN2M3ZWVhIDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9zYW5kYm94L2ZlYXR1cmVzLmduaQotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zYW5kYm94L2ZlYXR1cmVzLmduaQotQEAgLTEyLDYgKzEyLDYgQEAgdXNl X3NlY2NvbXBfYnBmID0KLSAgICAgKGlzX2xpbnV4IHx8IGlzX2FuZHJvaWQpICYmCi0gICAgIChj dXJyZW50X2NwdSA9PSAieDg2IiB8fCBjdXJyZW50X2NwdSA9PSAieDY0IiB8fCBjdXJyZW50X2Nw dSA9PSAiYXJtIiB8fAotICAgICAgY3VycmVudF9jcHUgPT0gImFybTY0IiB8fCBjdXJyZW50X2Nw dSA9PSAibWlwc2VsIiB8fAotLSAgICAgY3VycmVudF9jcHUgPT0gIm1pcHM2NGVsIikKLSsgICAg IGN1cnJlbnRfY3B1ID09ICJtaXBzNjRlbCIgfHwgY3VycmVudF9jcHUgPT0gInBwYzY0IikKLSAK LSB1c2Vfc2VjY29tcF9icGYgPSB1c2Vfc2VjY29tcF9icGYgfHwgaXNfbmFjbF9ub25zZmkKLWRp ZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgv QlVJTEQuZ24gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgv QlVJTEQuZ24KLWluZGV4IDlkNDcyNmY4OS4uOTM0OGY2NDYxIDEwMDY0NAotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L0JVSUxELmduCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvQlVJTEQuZ24KLUBA IC00MjMsNiArNDIzLDggQEAgY29tcG9uZW50KCJzYW5kYm94X3NlcnZpY2VzIikgewotIAotIHNv dXJjZV9zZXQoInNhbmRib3hfc2VydmljZXNfaGVhZGVycyIpIHsKLSAgIHNvdXJjZXMgPSBbCi0r ICAgICJzeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF9zeXNjYWxscy5oIiwKLSsgICAgInN5c3Rl bV9oZWFkZXJzL3BwYzY0X2xpbnV4X3Vjb250ZXh0LmgiLAotICAgICAic3lzdGVtX2hlYWRlcnMv YXJtNjRfbGludXhfc3lzY2FsbHMuaCIsCi0gICAgICJzeXN0ZW1faGVhZGVycy9hcm02NF9saW51 eF91Y29udGV4dC5oIiwKLSAgICAgInN5c3RlbV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5o IiwKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gv bGludXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jhbmdlcy5oIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvbGludXhfc3lzY2FsbF9yYW5nZXMu aAotaW5kZXggMzM0YTAwYmI5Li4yNzJkNjViMmEgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jh bmdlcy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGlu dXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jhbmdlcy5oCi1AQCAtNTMsNiArNTMsMTMgQEAKLSAj ZGVmaW5lIE1BWF9QVUJMSUNfU1lTQ0FMTCAyNzl1Ci0gI2RlZmluZSBNQVhfU1lTQ0FMTCBNQVhf UFVCTElDX1NZU0NBTEwKLSAKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rCi0rI2lu Y2x1ZGUgPGFzbS91bmlzdGQuaD4KLSsjZGVmaW5lIE1JTl9TWVNDQUxMIDB1Ci0rI2RlZmluZSBN QVhfUFVCTElDX1NZU0NBTEwgMzg2dQotKyNkZWZpbmUgTUFYX1NZU0NBTEwgTUFYX1BVQkxJQ19T WVNDQUxMCi0rCi0gI2Vsc2UKLSAjZXJyb3IgIlVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSIKLSAj ZW5kaWYKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAotaW5kZXgg ZTRlODE0MmM0Li42YTkyNmY5MDQgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9zZWNj b21wX21hY3Jvcy5oCi1AQCAtMTYsNiArMTYsOSBAQAotICNpZiBkZWZpbmVkKF9fbWlwc19fKQot IC8vIHN5cy91c2VyLmggaW4gZWdsaWJjIG1pc3NlcyBzaXplX3QgZGVmaW5pdGlvbgotICNpbmNs dWRlIDxzdGRkZWYuaD4KLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rLy8gTWFudWFs bHkgZGVmaW5lIGdyZWdfdCBvbiBwcGM2NAotK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGdy ZWdfdDsKLSAjZW5kaWYKLSAjZW5kaWYKLSAKLUBAIC0zNDUsNiArMzQ4LDUxIEBAIHN0cnVjdCBy ZWdzX3N0cnVjdCB7Ci0gI2RlZmluZSBTRUNDT01QX1BUX1BBUk00KF9yZWdzKSAoX3JlZ3MpLnJl Z3NbM10KLSAjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTUoX3JlZ3MpIChfcmVncykucmVnc1s0XQot ICNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNihfcmVncykgKF9yZWdzKS5yZWdzWzVdCi0rCi0rI2Vs aWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0rCi0r dHlwZWRlZiBzdHJ1Y3QgcHRfcmVncyByZWdzX3N0cnVjdDsKLSsKLSsjaWZkZWYgQVJDSF9DUFVf TElUVExFX0VORElBTgotKyNkZWZpbmUgU0VDQ09NUF9BUkNIIEFVRElUX0FSQ0hfUFBDNjRMRQot KyNlbHNlCi0rI2RlZmluZSBTRUNDT01QX0FSQ0ggQVVESVRfQVJDSF9QUEM2NAotKyNlbmRpZgot KwotKyNkZWZpbmUgU0VDQ09NUF9SRUcoX2N0eCwgX3JlZykgKChfY3R4KS0+dWNfbWNvbnRleHQu cmVncy0+Z3ByW19yZWddKQotKwotKyNkZWZpbmUgU0VDQ09NUF9SRVNVTFQoX2N0eCkgU0VDQ09N UF9SRUcoX2N0eCwgMykKLSsjZGVmaW5lIFNFQ0NPTVBfU1lTQ0FMTChfY3R4KSBTRUNDT01QX1JF RyhfY3R4LCAwKQotKyNkZWZpbmUgU0VDQ09NUF9JUChfY3R4KSAoX2N0eCktPnVjX21jb250ZXh0 LnJlZ3MtPm5pcAotKyNkZWZpbmUgU0VDQ09NUF9QQVJNMShfY3R4KSBTRUNDT01QX1JFRyhfY3R4 LCAzKQotKyNkZWZpbmUgU0VDQ09NUF9QQVJNMihfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA0KQot KyNkZWZpbmUgU0VDQ09NUF9QQVJNMyhfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA1KQotKyNkZWZp bmUgU0VDQ09NUF9QQVJNNChfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA2KQotKyNkZWZpbmUgU0VD Q09NUF9QQVJNNShfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA3KQotKyNkZWZpbmUgU0VDQ09NUF9Q QVJNNihfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA4KQotKwotKyNkZWZpbmUgU0VDQ09NUF9OUl9J RFggKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgbnIpKQotKyNkZWZpbmUgU0VD Q09NUF9BUkNIX0lEWCAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBhcmNoKSkK LSsjZGVmaW5lIFNFQ0NPTVBfSVBfTVNCX0lEWCBcCi0rICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hf c2VjY29tcF9kYXRhLCBpbnN0cnVjdGlvbl9wb2ludGVyKSArIDQpCi0rI2RlZmluZSBTRUNDT01Q X0lQX0xTQl9JRFggXAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgaW5z dHJ1Y3Rpb25fcG9pbnRlcikgKyAwKQotKyNkZWZpbmUgU0VDQ09NUF9BUkdfTVNCX0lEWChucikg XAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJncykgKyA4ICogKG5y KSArIDQpCi0rI2RlZmluZSBTRUNDT01QX0FSR19MU0JfSURYKG5yKSBcCi0rICAob2Zmc2V0b2Yo c3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBhcmdzKSArIDggKiAobnIpICsgMCkKLSsKLSsjZGVm aW5lIFNFQ0NPTVBfUFRfUkVTVUxUKF9yZWdzKSAoX3JlZ3MpLmdwclszXQotKyNkZWZpbmUgU0VD Q09NUF9QVF9TWVNDQUxMKF9yZWdzKSAoX3JlZ3MpLmdwclswXQotKyNkZWZpbmUgU0VDQ09NUF9Q VF9JUChfcmVncykgKF9yZWdzKS5uaXAKLSsjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTEoX3JlZ3Mp IChfcmVncykuZ3ByWzNdCi0rI2RlZmluZSBTRUNDT01QX1BUX1BBUk0yKF9yZWdzKSAoX3JlZ3Mp Lmdwcls0XQotKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNMyhfcmVncykgKF9yZWdzKS5ncHJbNV0K LSsjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTQoX3JlZ3MpIChfcmVncykuZ3ByWzZdCi0rI2RlZmlu ZSBTRUNDT01QX1BUX1BBUk01KF9yZWdzKSAoX3JlZ3MpLmdwcls3XQotKyNkZWZpbmUgU0VDQ09N UF9QVF9QQVJNNihfcmVncykgKF9yZWdzKS5ncHJbOF0KLSsKLSAjZWxzZQotICNlcnJvciBVbnN1 cHBvcnRlZCB0YXJnZXQgcGxhdGZvcm0KLSAKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGlu ZV9wb2xpY3kuY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGlu dXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MKLWluZGV4IDZhYWIzN2E4 OC4uMGE0ZDQ5NzI5IDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5LmNjCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29t cC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MKLUBAIC04Niw3ICs4Niw3IEBAIGJvb2wg SXNCYXNlbGluZVBvbGljeVdhdGNoZWQoaW50IHN5c25vKSB7Ci0gICAgICAgICAgU3lzY2FsbFNl dHM6OklzTnVtYShzeXNubykgfHwKLSAgICAgICAgICBTeXNjYWxsU2V0czo6SXNQcmN0bChzeXNu bykgfHwKLSAgICAgICAgICBTeXNjYWxsU2V0czo6SXNQcm9jZXNzR3JvdXBPclNlc3Npb24oc3lz bm8pIHx8Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzMzJfXykKLSsj aWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKSB8fCBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCi0gICAgICAgICAgU3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChzeXNubykg fHwKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2FybV9fKQotQEAgLTE4Niw3ICsxODYsNyBAQCBS ZXN1bHRFeHByIEV2YWx1YXRlU3lzY2FsbEltcGwoaW50IGZzX2RlbmllZF9lcnJubywKLSAgIH0K LSAKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZp bmVkKF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmlu ZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIGlmIChzeXNubyA9 PSBfX05SX21tYXApCi0gICAgIHJldHVybiBSZXN0cmljdE1tYXBGbGFncygpOwotICNlbmRpZgot QEAgLTIwMyw3ICsyMDMsNyBAQCBSZXN1bHRFeHByIEV2YWx1YXRlU3lzY2FsbEltcGwoaW50IGZz X2RlbmllZF9lcnJubywKLSAgICAgcmV0dXJuIFJlc3RyaWN0UHJjdGwoKTsKLSAKLSAjaWYgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18p IHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRf XykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgaWYgKHN5c25vID09IF9fTlJfc29ja2V0 cGFpcikgewotICAgICAvLyBPbmx5IGFsbG93IEFGX1VOSVgsIFBGX1VOSVguIENyYXNoIGlmIGFu eXRoaW5nIGVsc2UgaXMgc2Vlbi4KLSAgICAgc3RhdGljX2Fzc2VydChBRl9VTklYID09IFBGX1VO SVgsCi1AQCAtMjQxLDcgKzI0MSw3IEBAIFJlc3VsdEV4cHIgRXZhbHVhdGVTeXNjYWxsSW1wbChp bnQgZnNfZGVuaWVkX2Vycm5vLAotICAgICByZXR1cm4gRXJyb3IoRVBFUk0pOwotICAgfQotIAot LSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pCi0rI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzMzJfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotICAgaWYgKFN5c2NhbGxTZXRzOjpJc1NvY2tldENhbGwoc3lzbm8pKQotICAgICByZXR1 cm4gUmVzdHJpY3RTb2NrZXRjYWxsQ29tbWFuZCgpOwotICNlbmRpZgotZGlmZiAtLWdpdCBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1o ZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNj YWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCi1pbmRleCAxNTVlNTJlOWIuLjU5NWMyNzM3 NyAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9s aW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMu Y2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9z ZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MKLUBA IC0zNiw2ICszNiwxMSBAQAotICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSAjZW5kaWYKLSAKLSsv LyBPbiBQUEM2NCwgVENHRVRTIGlzIGRlZmluZWQgaW4gdGVybXMgb2Ygc3RydWN0IHRlcm1pb3Ms IHNvIHdlIG11c3QgaW5jbHVkZSB0ZXJtaW9zLmgKLSsjaWZkZWYgX19wb3dlcnBjNjRfXwotKyNp bmNsdWRlIDx0ZXJtaW9zLmg+Ci0rI2VuZGlmCi0rCi0gI2lmIGRlZmluZWQoT1NfQU5EUk9JRCkK LSAKLSAjaWYgIWRlZmluZWQoRl9EVVBGRF9DTE9FWEVDKQotQEAgLTk4LDYgKzEwMywxNSBAQCBp bmxpbmUgYm9vbCBJc0FyY2hpdGVjdHVyZU1pcHMoKSB7Ci0gI2VuZGlmCi0gfQotIAotK2lubGlu ZSBib29sIElzQXJjaGl0ZWN0dXJlUFBDNjQoKSB7Ci0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSsgIHJldHVybiB0cnVlOwotKyNlbHNlCi0rICByZXR1cm4gZmFsc2U7Ci0rI2VuZGlmCi0r fQotKwotKwotIC8vIFVidW50dSdzIHZlcnNpb24gb2YgZ2xpYmMgaGFzIGEgcmFjZSBjb25kaXRp b24gaW4gc2VtX3Bvc3QgdGhhdCBjYW4gY2F1c2UKLSAvLyBpdCB0byBjYWxsIGZ1dGV4KDIpIHdp dGggYm9ndXMgb3AgYXJndW1lbnRzLiBUbyB3b3JrYXJvdW5kIHRoaXMsIHdlIG5lZWQKLSAvLyB0 byBhbGxvdyB0aG9zZSBmdXRleCgyKSBjYWxscyB0byBmYWlsIHdpdGggRUlOVkFMLCBpbnN0ZWFk IG9mIGNyYXNoaW5nIHRoZQotQEAgLTIzOSw3ICsyNTMsOCBAQCBSZXN1bHRFeHByIFJlc3RyaWN0 RmNudGxDb21tYW5kcygpIHsKLSAgIC8vIG9wZXJhdG9yLgotICAgLy8gR2xpYmMgb3ZlcnJpZGVz IHRoZSBrZXJuZWwncyBPX0xBUkdFRklMRSB2YWx1ZS4gQWNjb3VudCBmb3IgdGhpcy4KLSAgIHVp bnQ2NF90IGtPTGFyZ2VGaWxlRmxhZyA9IE9fTEFSR0VGSUxFOwotLSAgaWYgKElzQXJjaGl0ZWN0 dXJlWDg2XzY0KCkgfHwgSXNBcmNoaXRlY3R1cmVJMzg2KCkgfHwgSXNBcmNoaXRlY3R1cmVNaXBz KCkpCi0rICBpZiAoSXNBcmNoaXRlY3R1cmVYODZfNjQoKSB8fCBJc0FyY2hpdGVjdHVyZUkzODYo KSB8fCBJc0FyY2hpdGVjdHVyZU1pcHMoKSBcCi0rICAgICAgfHwgSXNBcmNoaXRlY3R1cmVQUEM2 NCgpKQotICAgICBrT0xhcmdlRmlsZUZsYWcgPSAwMTAwMDAwOwotIAotICAgY29uc3QgQXJnPGlu dD4gY21kKDEpOwotQEAgLTI2Miw3ICsyNzcsNyBAQCBSZXN1bHRFeHByIFJlc3RyaWN0RmNudGxD b21tYW5kcygpIHsKLSAgICAgICAuRGVmYXVsdChDcmFzaFNJR1NZUygpKTsKLSB9Ci0gCi0tI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSBS ZXN1bHRFeHByIFJlc3RyaWN0U29ja2V0Y2FsbENvbW1hbmQoKSB7Ci0gICAvLyBVbmZvcnR1bmF0 ZWx5LCB3ZSBhcmUgdW5hYmxlIHRvIHJlc3RyaWN0IHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8KLSAg IC8vIHNvY2tldHBhaXIoMikuIFdoaWxzdCBpbml0aWFsbHkgc291bmRpbmcgYmFkLCBpdCdzIG5v dGV3b3J0aHkgdGhhdCB2ZXJ5Ci1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0 ZXJzX3Jlc3RyaWN0aW9ucy5oIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0 aW9ucy5oCi1pbmRleCA3MWM1NjA5M2QuLmY4YjljMGM2YiAxMDA2NDQKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJz L3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2Fs bF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5oCi1AQCAtNDgsNyArNDgsNyBAQCBTQU5EQk9YX0VY UE9SVCBicGZfZHNsOjpSZXN1bHRFeHByIFJlc3RyaWN0TXByb3RlY3RGbGFncygpOwotIC8vIE9f Tk9OQkxPQ0sgfCBPX1NZTkMgfCBPX0xBUkdFRklMRSB8IE9fQ0xPRVhFQyB8IE9fTk9BVElNRS4K LSBTQU5EQk9YX0VYUE9SVCBicGZfZHNsOjpSZXN1bHRFeHByIFJlc3RyaWN0RmNudGxDb21tYW5k cygpOwotIAotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCi0gLy8gUmVzdHJpY3Qgc29ja2V0Y2FsbCgyKSB0byBvbmx5IGFsbG93IHNvY2tl dHBhaXIoMiksIHNlbmQoMiksIHJlY3YoMiksCi0gLy8gc2VuZHRvKDIpLCByZWN2ZnJvbSgyKSwg c2h1dGRvd24oMiksIHNlbmRtc2coMikgYW5kIHJlY3Ztc2coMikuCi0gU0FOREJPWF9FWFBPUlQg YnBmX2RzbDo6UmVzdWx0RXhwciBSZXN0cmljdFNvY2tldGNhbGxDb21tYW5kKCk7Ci1kaWZmIC0t Z2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2Nv bXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNj Ci1pbmRleCA2MjU5NjM5YzkuLmYyZjUxMWQ3MCAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2Nh bGxfc2V0cy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94 L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCi1AQCAtMjgsNyArMjgs OCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0tpbGwoaW50IHN5c25vKSB7Ci0gYm9vbCBTeXNjYWxs U2V0czo6SXNBbGxvd2VkR2V0dGltZShpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsK LSAgICAgY2FzZSBfX05SX2dldHRpbWVvZmRheToKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pCi0rI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKSB8 fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3RpbWU6Ci0g I2VuZGlmCi0gICAgICAgcmV0dXJuIHRydWU7Ci1AQCAtNDIsNyArNDMsNyBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc0FsbG93ZWRHZXR0aW1lKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfZnRp bWU6ICAvLyBPYnNvbGV0ZS4KLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3NldHRpbWVvZmRheTog IC8vIFByaXZpbGVnZWQuCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBz MzJfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKSB8fCBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9zdGltZToKLSAjZW5kaWYKLSAg ICAgZGVmYXVsdDoKLUBAIC0xMDgsNyArMTA5LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxl U3lzdGVtKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfZmFjY2Vzc2F0OiAgLy8gRVBFUk0g bm90IGEgdmFsaWQgZXJybm8uCi0gICAgIGNhc2UgX19OUl9mY2htb2RhdDoKLSAgICAgY2FzZSBf X05SX2ZjaG93bmF0OiAgLy8gU2hvdWxkIGJlIGNhbGxlZCBjaG93bmF0ID8KLS0jaWYgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyNpZiBkZWZpbmVkKF9feDg2 XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSAgICAgY2FzZSBfX05SX25ld2ZzdGF0YXQ6ICAvLyBmc3RhdGF0KCkuIEVQRVJNIG5vdCBhIHZh bGlkIGVycm5vLgotICNlbGlmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykg fHwgZGVmaW5lZChfX21pcHMzMl9fKQotICAgICBjYXNlIF9fTlJfZnN0YXRhdDY0OgotQEAgLTEy NSw3ICsxMjYsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZpbGVTeXN0ZW0oaW50IHN5c25vKSB7 Ci0gICAgIGNhc2UgX19OUl9tZW1mZF9jcmVhdGU6Ci0gICAgIGNhc2UgX19OUl9ta2RpcmF0Ogot ICAgICBjYXNlIF9fTlJfbWtub2RhdDoKLS0jaWYgZGVmaW5lZChfX2kzODZfXykKLSsjaWYgZGVm aW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJf b2xkbHN0YXQ6Ci0gICAgIGNhc2UgX19OUl9vbGRzdGF0OgotICNlbmRpZgotQEAgLTE0Niw3ICsx NDcsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZpbGVTeXN0ZW0oaW50IHN5c25vKSB7Ci0gICAg IGNhc2UgX19OUl90cnVuY2F0ZTY0OgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfdW5saW5rYXQ6 Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5l ZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSAgICAgY2FzZSBfX05SX3V0aW1lOgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfdXRpbWVuc2F0 OiAgLy8gTmV3LgotQEAgLTE2NCw3ICsxNjYsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93 ZWRGaWxlU3lzdGVtQWNjZXNzVmlhRmQoaW50IHN5c25vKSB7Ci0gI2VuZGlmCi0gICAgICAgcmV0 dXJuIHRydWU7Ci0gLy8gVE9ETyhqbG4pOiB0aGVzZSBzaG91bGQgYmUgZGVuaWVkIGdyYWNlZnVs bHkgYXMgd2VsbCAobW92ZWQgYmVsb3cpLgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotKyAg ICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9mYWR2aXNlNjQ6ICAvLyBF UEVSTSBub3QgYSB2YWxpZCBlcnJuby4KLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2kzODZfXykK LUBAIC0xNzYsNyArMTc5LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkRmlsZVN5c3Rl bUFjY2Vzc1ZpYUZkKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfZmRhdGFzeW5jOiAgLy8g RVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCi0gICAgIGNhc2UgX19OUl9mbG9jazogICAgICAvLyBF UEVSTSBub3QgYSB2YWxpZCBlcnJuby4KLSAgICAgY2FzZSBfX05SX2ZzdGF0ZnM6ICAgIC8vIEdp dmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdob2xlIGZpbGVzeXN0ZW0uCi0tI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKQotKyNp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBz MzJfXykgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9m c3RhdGZzNjQ6Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9mc3luYzogIC8vIEVQRVJNIG5vdCBh IHZhbGlkIGVycm5vLgotQEAgLTE4OCw2ICsxOTIsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0Fs bG93ZWRGaWxlU3lzdGVtQWNjZXNzVmlhRmQoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9z eW5jX2ZpbGVfcmFuZ2U6ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KLSAjZWxpZiBkZWZp bmVkKF9fYXJtX18pCi0gICAgIGNhc2UgX19OUl9hcm1fc3luY19maWxlX3JhbmdlOiAgLy8gRVBF Uk0gbm90IGEgdmFsaWQgZXJybm8uCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAg ICBjYXNlIF9fTlJfc3luY19maWxlX3JhbmdlMjogLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8u Ci0gI2VuZGlmCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgcmV0dXJuIGZhbHNlOwotQEAgLTIxMSw3 ICsyMTcsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0RlbmllZEZpbGVTeXN0ZW1BY2Nlc3NWaWFG ZChpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2dldGRlbnRzOiAgICAvLyBFUEVSTSBub3Qg YSB2YWxpZCBlcnJuby4KLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX2dldGRlbnRzNjQ6ICAvLyBF UEVSTSBub3QgYSB2YWxpZCBlcnJuby4KLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX21pcHMzMl9fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMy X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3JlYWRkaXI6Ci0g I2VuZGlmCi0gICAgICAgcmV0dXJuIHRydWU7Ci1AQCAtMjUyLDcgKzI1OCw3IEBAIGJvb2wgU3lz Y2FsbFNldHM6OklzR2V0U2ltcGxlSWQoaW50IHN5c25vKSB7Ci0gYm9vbCBTeXNjYWxsU2V0czo6 SXNQcm9jZXNzUHJpdmlsZWdlQ2hhbmdlKGludCBzeXNubykgewotICAgc3dpdGNoIChzeXNubykg ewotICAgICBjYXNlIF9fTlJfY2Fwc2V0OgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZf NjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfaW9wZXJtOiAg Ly8gSW50ZWwgcHJpdmlsZWdlLgotICAgICBjYXNlIF9fTlJfaW9wbDogICAgLy8gSW50ZWwgcHJp dmlsZWdlLgotICNlbmRpZgotQEAgLTMwMSw3ICszMDcsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJ c0FsbG93ZWRTaWduYWxIYW5kbGluZyhpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX3J0X3Np Z2FjdGlvbjoKLSAgICAgY2FzZSBfX05SX3J0X3NpZ3Byb2NtYXNrOgotICAgICBjYXNlIF9fTlJf cnRfc2lncmV0dXJuOgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18p IHx8IGRlZmluZWQoX19taXBzMzJfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc2lnYWN0aW9uOgotICAgICBjYXNlIF9fTlJfc2ln cHJvY21hc2s6Ci0gICAgIGNhc2UgX19OUl9zaWdyZXR1cm46Ci1AQCAtMzE3LDcgKzMyNCw4IEBA IGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFNpZ25hbEhhbmRsaW5nKGludCBzeXNubykgewot ICAgICBjYXNlIF9fTlJfc2lnbmFsZmQ6Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9zaWduYWxm ZDQ6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5l ZChfX21pcHMzMl9fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18p IHx8IGRlZmluZWQoX19taXBzMzJfXykgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18p Ci0gICAgIGNhc2UgX19OUl9zaWdwZW5kaW5nOgotICAgICBjYXNlIF9fTlJfc2lnc3VzcGVuZDoK LSAjZW5kaWYKLUBAIC0zNDAsNyArMzQ4LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2Vk T3BlcmF0aW9uT25GZChpbnQgc3lzbm8pIHsKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX2R1cDM6 Ci0gI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVk KF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQo X19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3No dXRkb3duOgotICNlbmRpZgotICAgICAgIHJldHVybiB0cnVlOwotQEAgLTM3Miw3ICszODAsNyBA QCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRQcm9jZXNzU3RhcnRPckRlYXRoKGludCBzeXNu bykgewotICAgICBjYXNlIF9fTlJfZXhpdF9ncm91cDoKLSAgICAgY2FzZSBfX05SX3dhaXQ0Ogot ICAgICBjYXNlIF9fTlJfd2FpdGlkOgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQotKyNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl93 YWl0cGlkOgotICNlbmRpZgotICNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi1AQCAtNDQzLDcgKzQ1 MSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdldE9yTW9kaWZ5U29ja2V0KGludCBz eXNubykgewotICAgICAgIHJldHVybiB0cnVlOwotICAgICBkZWZhdWx0OgotICNpZiBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwg XAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8 fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9zb2NrZXRwYWlyOiAgLy8g V2Ugd2lsbCB3YW50IHRvIGluc3BlY3QgaXRzIGFyZ3VtZW50LgotICNlbmRpZgotICAgICAgIHJl dHVybiBmYWxzZTsKLUBAIC00NTMsNyArNDYxLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxv d2VkR2V0T3JNb2RpZnlTb2NrZXQoaW50IHN5c25vKSB7Ci0gYm9vbCBTeXNjYWxsU2V0czo6SXNE ZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsK LSAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQo X19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChf X2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfYWNj ZXB0OgotICAgICBjYXNlIF9fTlJfYWNjZXB0NDoKLSAgICAgY2FzZSBfX05SX2JpbmQ6Ci1AQCAt NDY3LDcgKzQ3NSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRGVuaWVkR2V0T3JNb2RpZnlTb2Nr ZXQoaW50IHN5c25vKSB7Ci0gICB9Ci0gfQotIAotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9fbWlwczMyX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19t aXBzMzJfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIC8vIEJpZyBtdWx0aXBsZXhpbmcg c3lzdGVtIGNhbGwgZm9yIHNvY2tldHMuCi0gYm9vbCBTeXNjYWxsU2V0czo6SXNTb2NrZXRDYWxs KGludCBzeXNubykgewotICAgc3dpdGNoIChzeXNubykgewotQEAgLTQ4MSw3ICs0ODksOCBAQCBi b29sIFN5c2NhbGxTZXRzOjpJc1NvY2tldENhbGwoaW50IHN5c25vKSB7Ci0gfQotICNlbmRpZgot IAotLSNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5l ZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18p IHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot IGJvb2wgU3lzY2FsbFNldHM6OklzTmV0d29ya1NvY2tldEluZm9ybWF0aW9uKGludCBzeXNubykg ewotICAgc3dpdGNoIChzeXNubykgewotICAgICBjYXNlIF9fTlJfZ2V0cGVlcm5hbWU6Ci1AQCAt NTA5LDcgKzUxOCw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEFkZHJlc3NTcGFjZUFj Y2VzcyhpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX21pbmNvcmU6Ci0gICAgIGNhc2UgX19O Ul9tbG9ja2FsbDoKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0r ICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAg Y2FzZSBfX05SX21tYXA6Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKQotQEAgLTUzOCw3ICs1NDcsOCBAQCBi b29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRBZGRyZXNzU3BhY2VBY2Nlc3MoaW50IHN5c25vKSB7 Ci0gYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2VuZXJhbElvKGludCBzeXNubykgewotICAg c3dpdGNoIChzeXNubykgewotICAgICBjYXNlIF9fTlJfbHNlZWs6Ci0tI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKQotKyNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzMzJf XykgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9fbGxz ZWVrOgotICNlbmRpZgotICNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykKLUBAIC01NDgsMjUgKzU1 OCwyNiBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRHZW5lcmFsSW8oaW50IHN5c25vKSB7 Ci0gICAgIGNhc2UgX19OUl9wc2VsZWN0NjoKLSAgICAgY2FzZSBfX05SX3JlYWQ6Ci0gICAgIGNh c2UgX19OUl9yZWFkdjoKLS0jaWYgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwczMy X18pCi0rI2lmIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKSB8fCBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9yZWN2OgotICNlbmRpZgotICNpZiBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNf XykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2 NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9yZWN2ZnJvbTog IC8vIENvdWxkIHNwZWNpZnkgc291cmNlLgotICAgICBjYXNlIF9fTlJfcmVjdm1zZzogICAvLyBD b3VsZCBzcGVjaWZ5IHNvdXJjZS4KLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX3g4Nl82NF9fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9f eDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3NlbGVj dDoKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8 fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9f YXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotICAgICBjYXNlIF9fTlJfX25ld3NlbGVjdDoKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChf X2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pCi0rI2lmIGRlZmluZWQoX19hcm1fXykgfHwg ZGVmaW5lZChfX21pcHMzMl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2Ug X19OUl9zZW5kOgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQo X19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2 NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18p Ci0gICAgIGNhc2UgX19OUl9zZW5kbXNnOiAgLy8gQ291bGQgc3BlY2lmeSBkZXN0aW5hdGlvbi4K LSAgICAgY2FzZSBfX05SX3NlbmR0bzogICAvLyBDb3VsZCBzcGVjaWZ5IGRlc3RpbmF0aW9uLgot ICNlbmRpZgotQEAgLTYyMiw3ICs2MzMsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRC YXNpY1NjaGVkdWxlcihpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX25hbm9zbGVlcDoKLSAg ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgY2FzZSBfX05SX2dldHByaW9yaXR5OgotLSNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzMzJfXykK LSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9f bWlwczMyX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9f TlJfbmljZToKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3NldHByaW9yaXR5OgotQEAgLTYzMyw3 ICs2NDUsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRCYXNpY1NjaGVkdWxlcihpbnQg c3lzbm8pIHsKLSAKLSBib29sIFN5c2NhbGxTZXRzOjpJc0FkbWluT3BlcmF0aW9uKGludCBzeXNu bykgewotICAgc3dpdGNoIChzeXNubykgewotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzMzJfXykKLSsjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pIHx8IFwKLSsgICAg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfYmRmbHVzaDoKLSAjZW5kaWYK LSAgICAgY2FzZSBfX05SX2tleGVjX2xvYWQ6Ci1AQCAtNjQ5LDcgKzY2Miw4IEBAIGJvb2wgU3lz Y2FsbFNldHM6OklzQWRtaW5PcGVyYXRpb24oaW50IHN5c25vKSB7Ci0gCi0gYm9vbCBTeXNjYWxs U2V0czo6SXNLZXJuZWxNb2R1bGUoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0t I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8 fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAg ICAgY2FzZSBfX05SX2NyZWF0ZV9tb2R1bGU6Ci0gICAgIGNhc2UgX19OUl9nZXRfa2VybmVsX3N5 bXM6ICAvLyBTaG91bGQgRU5PU1lTLgotICAgICBjYXNlIF9fTlJfcXVlcnlfbW9kdWxlOgotQEAg LTY4MSw3ICs2OTUsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZzQ29udHJvbChpbnQgc3lzbm8p IHsKLSAgICAgY2FzZSBfX05SX3F1b3RhY3RsOgotICAgICBjYXNlIF9fTlJfc3dhcG9mZjoKLSAg ICAgY2FzZSBfX05SX3N3YXBvbjoKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X21pcHMzMl9fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3Vtb3VudDoKLSAjZW5k aWYKLSAgICAgY2FzZSBfX05SX3Vtb3VudDI6Ci1AQCAtNjk3LDcgKzcxMSw3IEBAIGJvb2wgU3lz Y2FsbFNldHM6OklzTnVtYShpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2dldGNwdToKLSAg ICAgY2FzZSBfX05SX21iaW5kOgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9f eDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNo NjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotICAgICBjYXNlIF9fTlJfbWlncmF0ZV9wYWdlczoKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05S X21vdmVfcGFnZXM6Ci1AQCAtNzI2LDEzICs3NDAsMTMgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNH bG9iYWxQcm9jZXNzRW52aXJvbm1lbnQoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7 Ci0gICAgIGNhc2UgX19OUl9hY2N0OiAgLy8gUHJpdmlsZWdlZC4KLSAjaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0t ICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2dldHJsaW1pdDoKLSAjZW5kaWYK LS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKQotKyNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSAgICAgY2FzZSBfX05SX3VnZXRybGltaXQ6Ci0gI2VuZGlmCi0tI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8IGRlZmluZWQoX19taXBzMzJfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX21pcHMzMl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19O Ul91bGltaXQ6Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9nZXRydXNhZ2U6Ci1AQCAtNzY2LDcg Kzc4MCw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzR2xvYmFsU3lzdGVtU3RhdHVzKGludCBzeXNu bykgewotICNlbmRpZgotICAgICBjYXNlIF9fTlJfc3lzaW5mbzoKLSAgICAgY2FzZSBfX05SX3Vu YW1lOgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9vbGR1bmFtZToKLSAgICAgY2Fz ZSBfX05SX29sZG9sZHVuYW1lOgotICNlbmRpZgotQEAgLTg1Nyw3ICs4NzEsNyBAQCBib29sIFN5 c2NhbGxTZXRzOjpJc1N5c3RlbVZNZXNzYWdlUXVldWUoaW50IHN5c25vKSB7Ci0gfQotICNlbmRp ZgotIAotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pCi0rI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzMzJfXykgfHwgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotIC8vIEJpZyBzeXN0ZW0gViBtdWx0aXBsZXhpbmcgc3lzdGVtIGNhbGwuCi0g Ym9vbCBTeXNjYWxsU2V0czo6SXNTeXN0ZW1WSXBjKGludCBzeXNubykgewotICAgc3dpdGNoIChz eXNubykgewotQEAgLTg3Niw3ICs4OTAsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FueVN5c3Rl bVYoaW50IHN5c25vKSB7Ci0gICAgIHx8IGRlZmluZWQoX19taXBzNjRfXykKLSAgIHJldHVybiBJ c1N5c3RlbVZNZXNzYWdlUXVldWUoc3lzbm8pIHx8IElzU3lzdGVtVlNlbWFwaG9yZXMoc3lzbm8p IHx8Ci0gICAgICAgICAgSXNTeXN0ZW1WU2hhcmVkTWVtb3J5KHN5c25vKTsKLS0jZWxpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pCi0rI2VsaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0g ICByZXR1cm4gSXNTeXN0ZW1WSXBjKHN5c25vKTsKLSAjZW5kaWYKLSB9Ci1AQCAtOTI5LDcgKzk0 Myw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmFOb3RpZnkoaW50IHN5c25vKSB7Ci0gYm9vbCBT eXNjYWxsU2V0czo6SXNUaW1lcihpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAg ICAgY2FzZSBfX05SX2dldGl0aW1lcjoKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfYWxhcm06Ci0gI2VuZGlmCi0g ICAgIGNhc2UgX19OUl9zZXRpdGltZXI6Ci1AQCAtOTg4LDE2ICsxMDAzLDE4IEBAIGJvb2wgU3lz Y2FsbFNldHM6OklzTWlzYyhpbnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX3N5bmNmczoKLSAg ICAgY2FzZSBfX05SX3ZoYW5ndXA6Ci0gLy8gVGhlIHN5c3RlbSBjYWxscyBiZWxvdyBhcmUgbm90 IGltcGxlbWVudGVkLgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotKyAgICBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9hZnNfc3lzY2FsbDoKLSAjZW5kaWYKLS0jaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKQotKyNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSAgICAgY2FzZSBfX05SX2JyZWFrOgotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8 fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwg XAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9nZXRwbXNnOgot ICNlbmRpZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pCi0r I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzMzJfXykgfHwgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfZ3R0eToKLSAgICAgY2FzZSBfX05SX2lkbGU6 Ci0gICAgIGNhc2UgX19OUl9sb2NrOgotQEAgLTEwMDUsMTkgKzEwMjIsMjAgQEAgYm9vbCBTeXNj YWxsU2V0czo6SXNNaXNjKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfcHJvZjoKLSAgICAg Y2FzZSBfX05SX3Byb2ZpbDoKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsg ICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfcHV0cG1zZzoKLSAjZW5k aWYKLSAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKQotICAgICBjYXNlIF9fTlJfc2VjdXJpdHk6Ci0g I2VuZGlmCi0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzMzJfXykKLSsj aWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHMzMl9fKSB8fCBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9zdHR5OgotICNlbmRpZgotLSNpZiBkZWZpbmVk KF9feDg2XzY0X18pCi0rI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQotICAgICBjYXNlIF9fTlJfdHV4Y2FsbDoKLSAjZW5kaWYKLS0jaWYgIWRlZmluZWQo X19hYXJjaDY0X18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfdnNlcnZlcjoKLSAjZW5kaWYKLSAgICAgICByZXR1 cm4gdHJ1ZTsKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Nh bmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuaCBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJz L3N5c2NhbGxfc2V0cy5oCi1pbmRleCBjMzFkNWU5YzEuLjc4OThiZTllMSAxMDA2NDQKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJw Zi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuaAot QEAgLTQyLDEzICs0MiwxMyBAQCBjbGFzcyBTQU5EQk9YX0VYUE9SVCBTeXNjYWxsU2V0cyB7Ci0g ICBzdGF0aWMgYm9vbCBJc0FsbG93ZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pOwotICAg c3RhdGljIGJvb2wgSXNEZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pOwotIAotLSNp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwczMyX18pCi0rI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzMzJfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotICAgLy8gQmlnIG11bHRpcGxleGluZyBzeXN0ZW0gY2FsbCBmb3Igc29ja2V0cy4KLSAgIHN0 YXRpYyBib29sIElzU29ja2V0Q2FsbChpbnQgc3lzbm8pOwotICNlbmRpZgotIAotICNpZiBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykg fHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9f KSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICBzdGF0aWMgYm9vbCBJc05ldHdvcmtTb2Nr ZXRJbmZvcm1hdGlvbihpbnQgc3lzbm8pOwotICNlbmRpZgotIAotQEAgLTg1LDcgKzg1LDcgQEAg Y2xhc3MgU0FOREJPWF9FWFBPUlQgU3lzY2FsbFNldHMgewotICAgc3RhdGljIGJvb2wgSXNTeXN0 ZW1WTWVzc2FnZVF1ZXVlKGludCBzeXNubyk7Ci0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IGRlZmluZWQoX19taXBzMzJfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX21pcHMzMl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAvLyBCaWcg c3lzdGVtIFYgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsLgotICAgc3RhdGljIGJvb2wgSXNTeXN0 ZW1WSXBjKGludCBzeXNubyk7Ci0gI2VuZGlmCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2MgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYv c3lzY2FsbC5jYwotaW5kZXggZDZkYjcwZjBkLi40OTM3YjI1YTQgMTAwNjQ0Ci0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lz Y2FsbC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xp bnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2MKLUBAIC0xNSw3ICsxNSw3IEBAIG5hbWVzcGFjZSBz YW5kYm94IHsKLSBuYW1lc3BhY2UgewotIAotICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1J TFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNX0ZBTUlMWSkgfHwgXAotLSAgICBkZWZpbmVkKEFS Q0hfQ1BVX01JUFNfRkFNSUxZKQotKyAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSB8 fCBkZWZpbmVkIChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0gLy8gTnVtYmVyIHRoYXQncyBub3Qg Y3VycmVudGx5IHVzZWQgYnkgYW55IExpbnV4IGtlcm5lbCBBQklzLgotIGNvbnN0IGludCBrSW52 YWxpZFN5c2NhbGxOdW1iZXIgPSAweDM1MWQzOwotICNlbHNlCi1AQCAtMzA3LDEyICszMDcsNTYg QEAgYXNtKC8vIFdlIG5lZWQgdG8gYmUgYWJsZSB0byB0ZWxsIHRoZSBrZXJuZWwgZXhhY3RseSB3 aGVyZSB3ZSBtYWRlIGEKLSAgICAgLy8gRW50ZXIgdGhlIGtlcm5lbAotICAgICAic3ZjIDBcbiIK LSAgICAgIjI6cmV0XG4iCi0rICAgICIuY2ZpX2VuZHByb2NcbiIKLSsgICAgIi5zaXplIFN5c2Nh bGxBc20sIC4tU3lzY2FsbEFzbVxuIgotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsg ICAgIi50ZXh0XG4iCi0rICAgICIuYWxpZ24gNFxuIgotKyAgICAiLnR5cGUgU3lzY2FsbEFzbSBA ZnVuY3Rpb25cbiIKLSsgICAgIlN5c2NhbGxBc206XG4iCi0rICAgICIuY2ZpX3N0YXJ0cHJvY1xu IgotKwotKyAgICAvLyBDaGVjayBpZiByMyBpcyBuZWdhdGl2ZQotKyAgICAiY21wZGkgMywgMFxu IgotKyAgICAiYmd0IDJmXG4iCi0rCi0rICAgIC8vIExvYWQgYWRkcmVzcyBvZiAzZiBpbnRvIHIz IGFuZCByZXR1cm4KLSsgICAgIm1mbHIgMTBcbiIKLSsgICAgImJsIDFmXG4iCi0rICAgICIxOiBt ZmxyIDNcbiIKLSsgICAgIm10bHIgMTBcbiIKLSsgICAgImFkZGkgMywgMywgNCoxM1xuIgotKyAg ICAiYmxyXG4iCi0rCi0rICAgIC8vIExvYWQgYXJndW1lbnRzIGZyb20gYXJyYXkgaW50byByMy04 Ci0rICAgIC8vIHNhdmUgcGFyYW0gMyBpbiByMTAKLSsgICAgIjI6XG4iCi0rICAgICJtciAwLCAz XG4iCi0rICAgICJsZCAzLCAwKDQpXG4iCi0rICAgICJsZCA1LCAxNig0KVxuIgotKyAgICAibGQg NiwgMjQoNClcbiIKLSsgICAgImxkIDcsIDMyKDQpXG4iCi0rICAgICJsZCA4LCA0MCg0KVxuIgot KyAgICAibGQgNCwgOCg0KVxuIgotKyAgICAibGkgOSwgMFxuIgotKwotKyAgICAvLyBFbnRlciBr ZXJuZWwKLSsgICAgInNjXG4iCi0rCi0rICAgIC8vIE1hZ2ljIHJldHVybiBhZGRyZXNzCi0rICAg ICIzOlxuIgotKyAgICAvLyBMaWtlIE1JUFMsIHBwYzY0IHJldHVybiB2YWx1ZXMgYXJlIGFsd2F5 cyBwb3NpdGl2ZS4KLSsgICAgLy8gQ2hlY2sgZm9yIGVycm9yIGluIGNyMC5TTyBhbmQgbmVnYXRl IHVwb24gZXJyb3IKLSsgICAgImJjIDQsIDMsIDRmXG4iCi0rICAgICJuZWcgMywgM1xuIgotKyAg ICAiNDogYmxyXG4iCi0rCi0gICAgICIuY2ZpX2VuZHByb2NcbiIKLSAgICAgIi5zaXplIFN5c2Nh bGxBc20sIC4tU3lzY2FsbEFzbVxuIgotICNlbmRpZgotICAgICApOyAgLy8gYXNtCi0gCi0tI2lm IGRlZmluZWQoX194ODZfNjRfXykKLSsjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0gZXh0ZXJuICJDIiB7Ci0gaW50cHRyX3QgU3lzY2FsbEFzbShpbnRw dHJfdCBuciwgY29uc3QgaW50cHRyX3QgYXJnc1s2XSk7Ci0gfQotQEAgLTQyNiw2ICs0NzAsOCBA QCBpbnRwdHJfdCBTeXNjYWxsOjpDYWxsKGludCBuciwKLSAgICAgcmV0ID0gaW5vdXQ7Ci0gICB9 Ci0gCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgaW50cHRyX3QgcmV0ID0gU3lz Y2FsbEFzbShuciwgYXJncyk7Ci0gI2Vsc2UKLSAjZXJyb3IgIlVuaW1wbGVtZW50ZWQgYXJjaGl0 ZWN0dXJlIgotICNlbmRpZgotQEAgLTQ0Miw4ICs0ODgsMTggQEAgdm9pZCBTeXNjYWxsOjpQdXRW YWx1ZUluVWNvbnRleHQoaW50cHRyX3QgcmV0X3ZhbCwgdWNvbnRleHRfdCogY3R4KSB7Ci0gICAg IC8vIG5lZWRzIHRvIGJlIGNoYW5nZWQgYmFjay4KLSAgICAgcmV0X3ZhbCA9IC1yZXRfdmFsOwot ICAgICBTRUNDT01QX1BBUk00KGN0eCkgPSAxOwotLSAgfSBlbHNlCi0rICB9IGVsc2UgewotICAg ICBTRUNDT01QX1BBUk00KGN0eCkgPSAwOwotKyAgfQotKyNlbmRpZgotKyNpZiBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCi0rICAvLyBTYW1lIGFzIE1JUFMsIG5lZWQgdG8gaW52ZXJ0IHJldCBhbmQg c2V0IGVycm9yIHJlZ2lzdGVyIChjcjAuU08pCi0rICBpZiAocmV0X3ZhbCA8PSAtMSAmJiByZXRf dmFsID49IC00MDk1KSB7Ci0rICAgIHJldF92YWwgPSAtcmV0X3ZhbDsKLSsgICAgY3R4LT51Y19t Y29udGV4dC5yZWdzLT5jY3IgfD0gKDEgPDwgMjgpOwotKyAgfSBlbHNlIHsKLSsgICAgY3R4LT51 Y19tY29udGV4dC5yZWdzLT5jY3IgJj0gfigxIDw8IDI4KTsKLSsgIH0KLSAjZW5kaWYKLSAgIFNF Q0NPTVBfUkVTVUxUKGN0eCkgPSBzdGF0aWNfY2FzdDxncmVnX3Q+KHJldF92YWwpOwotIH0KLWRp ZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgv c2VjY29tcC1icGYvdHJhcC5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2Fu ZGJveC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNjCi1pbmRleCBlOWM1MTk0MGMuLjM1YThmMGQ2 NyAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9s aW51eC9zZWNjb21wLWJwZi90cmFwLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYvdHJhcC5jYwotQEAgLTIzMCw2ICsyMzAs MjAgQEAgdm9pZCBUcmFwOjpTaWdTeXMoaW50IG5yLCBMaW51eFNpZ0luZm8qIGluZm8sIHVjb250 ZXh0X3QqIGN0eCkgewotICAgICAgIFNldElzSW5TaWdIYW5kbGVyKCk7Ci0gICAgIH0KLSAKLSsj aWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAvLyBPbiBwcGM2NCtnbGliYywgc29tZSBz eXNjYWxscyBzZWVtIHRvIGFjY2lkZW50YWxseSBuZWdhdGUgdGhlIGZpcnN0Ci0rICAgIC8vIHBh cmFtZXRlciB3aGljaCBjYXVzZXMgY2hlY2tzIGFnYWluc3QgaXQgdG8gZmFpbC4gRm9yIG5vdywg bWFudWFsbHkKLSsgICAgLy8gbmVnYXRlIHRoZW0gYmFjay4KLSsgICAgLy8gVE9ETyhzaGF3bkBh bmFzdGFzLmlvKTogaW52ZXN0aWdhdGUgdGhpcyBpc3N1ZSBmdXJ0aGVyCi0rICAgIGF1dG8gbnIg PSBTRUNDT01QX1NZU0NBTEwoY3R4KTsKLSsgICAgaWYgKG5yID09IF9fTlJfb3BlbmF0IHx8IG5y ID09IF9fTlJfbWtkaXJhdCB8fCBuciA9PSBfX05SX2ZhY2Nlc3NhdCB8fCBuciA9PSBfX05SX3Jl YWRsaW5rYXQgfHwKLSsgICAgICAgIG5yID09IF9fTlJfcmVuYW1lYXQgfHwgbnIgPT0gX19OUl9y ZW5hbWVhdDIgfHwgbnIgPT0gX19OUl9uZXdmc3RhdGF0IHx8IG5yID09IF9fTlJfdW5saW5rYXQp IHsKLSsgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KFNFQ0NPTVBfUEFSTTEoY3R4KSkgPiAw KSB7Ci0rICAgICAgICAgICAgU0VDQ09NUF9QQVJNMShjdHgpID0gLVNFQ0NPTVBfUEFSTTEoY3R4 KTsKLSsgICAgICAgIH0KLSsgICAgfQotKyNlbmRpZgotKwotICAgICAvLyBDb3B5IHRoZSBzZWNj b21wLXNwZWNpZmljIGRhdGEgaW50byBhIGFyY2hfc2VjY29tcF9kYXRhIHN0cnVjdHVyZS4gVGhp cwotICAgICAvLyBpcyB3aGF0IHdlIGFyZSBzaG93aW5nIHRvIFRyYXBGbmMgY2FsbGJhY2tzIHRo YXQgdGhlIHN5c3RlbSBjYWxsCi0gICAgIC8vIGV2YWx1YXRvciByZWdpc3RlcmVkIHdpdGggdGhl IHNhbmRib3guCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9z YW5kYm94L2xpbnV4L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmNjIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmNjCi1pbmRl eCA2NWI2M2FkZmUuLjFiNGU2MmU0NiAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5jYwotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL2Ny ZWRlbnRpYWxzLmNjCi1AQCAtNzcsNyArNzcsNyBAQCBib29sIENocm9vdFRvU2FmZUVtcHR5RGly KCkgewotICAgcGlkX3QgcGlkID0gLTE7Ci0gICBhbGlnbmFzKDE2KSBjaGFyIHN0YWNrX2J1ZltQ VEhSRUFEX1NUQUNLX01JTl07Ci0gI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwg ZGVmaW5lZChBUkNIX0NQVV9BUk1fRkFNSUxZKSB8fCBcCi0tICAgIGRlZmluZWQoQVJDSF9DUFVf TUlQU19GQU1JTFkpCi0rICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpIHx8IGRlZmlu ZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotICAgLy8gVGhlIHN0YWNrIGdyb3dzIGRvd253YXJk LgotICAgdm9pZCogc3RhY2sgPSBzdGFja19idWYgKyBzaXplb2Yoc3RhY2tfYnVmKTsKLSAjZWxz ZQotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9s aW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zZWNjb21wLmggcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2VjY29tcC5o Ci1pbmRleCBhNjBmZTJhZDMuLjlkY2NkYjUxZCAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zZWNj b21wLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51 eC9zeXN0ZW1faGVhZGVycy9saW51eF9zZWNjb21wLmgKLUBAIC0yOSw2ICsyOSw5IEBACi0gI2lm bmRlZiBFTV9BQVJDSDY0Ci0gI2RlZmluZSBFTV9BQVJDSDY0IDE4MwotICNlbmRpZgotKyNpZm5k ZWYgRU1fUFBDNjQKLSsjZGVmaW5lIEVNX1BQQzY0IDIxCi0rI2VuZGlmCi0gCi0gI2lmbmRlZiBf X0FVRElUX0FSQ0hfNjRCSVQKLSAjZGVmaW5lIF9fQVVESVRfQVJDSF82NEJJVCAweDgwMDAwMDAw Ci1AQCAtNTQsNiArNTcsMTIgQEAKLSAjaWZuZGVmIEFVRElUX0FSQ0hfQUFSQ0g2NAotICNkZWZp bmUgQVVESVRfQVJDSF9BQVJDSDY0IChFTV9BQVJDSDY0IHwgX19BVURJVF9BUkNIXzY0QklUIHwg X19BVURJVF9BUkNIX0xFKQotICNlbmRpZgotKyNpZm5kZWYgQVVESVRfQVJDSF9QUEM2NAotKyNk ZWZpbmUgQVVESVRfQVJDSF9QUEM2NCAoRU1fUFBDNjQgfCBfX0FVRElUX0FSQ0hfNjRCSVQpCi0r I2VuZGlmCi0rI2lmbmRlZiBBVURJVF9BUkNIX1BQQzY0TEUKLSsjZGVmaW5lIEFVRElUX0FSQ0hf UFBDNjRMRSAoRU1fUFBDNjQgfCBfX0FVRElUX0FSQ0hfNjRCSVQgfCBfX0FVRElUX0FSQ0hfTEUp Ci0rI2VuZGlmCi0gCi0gLy8gRm9yIHByY3RsLmgKLSAjaWZuZGVmIFBSX1NFVF9TRUNDT01QCi1k aWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4 L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3NpZ25hbC5oIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3NpZ25hbC5oCi1pbmRl eCA1YWM0ZmRiNDIuLmIyN2I0ZWE1ZiAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zaWduYWwuaAot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3Rl bV9oZWFkZXJzL2xpbnV4X3NpZ25hbC5oCi1AQCAtMTEsNyArMTEsNyBAQAotIC8vIChub3QgdW5k ZWZpbmVkLCBidXQgZGVmaW5lZCBkaWZmZXJlbnQgdmFsdWVzIGFuZCBpbiBkaWZmZXJlbnQgbWVt b3J5Ci0gLy8gbGF5b3V0cykuIFNvLCBmaWxsIHRoZSBnYXAgaGVyZS4KLSAjaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwK LS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIAotICNkZWZpbmUgTElOVVhfU0lHSFVQIDEKLSAjZGVm aW5lIExJTlVYX1NJR0lOVCAyCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmggcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRl cnMvbGludXhfc3lzY2FsbHMuaAotaW5kZXggNzYxYzA4YWJlLi4yOGViZjJmNGUgMTAwNjQ0Ci0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVt X2hlYWRlcnMvbGludXhfc3lzY2FsbHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgKLUBA IC0zMyw1ICszMyw5IEBACi0gI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMv YXJtNjRfbGludXhfc3lzY2FsbHMuaCIKLSAjZW5kaWYKLSAKLSsjaWYgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQotKyNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xp bnV4X3N5c2NhbGxzLmgiCi0rI2VuZGlmCi0rCi0gI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZ U1RFTV9IRUFERVJTX0xJTlVYX1NZU0NBTExTX0hfCi0gCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4 X3Vjb250ZXh0LmggcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGlu dXgvc3lzdGVtX2hlYWRlcnMvbGludXhfdWNvbnRleHQuaAotaW5kZXggZTk3ZDcyNzdkLi5mM2Yw NTg0OWEgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfdWNvbnRleHQuaAotKysrIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4 X3Vjb250ZXh0LmgKLUBAIC0xOSw2ICsxOSw4IEBACi0gI2luY2x1ZGUgInNhbmRib3gvbGludXgv c3lzdGVtX2hlYWRlcnMvbWlwczY0X2xpbnV4X3Vjb250ZXh0LmgiCi0gI2VsaWYgZGVmaW5lZChf X2FhcmNoNjRfXykKLSAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9hcm02 NF9saW51eF91Y29udGV4dC5oIgotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsjaW5j bHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF91Y29udGV4dC5o IgotICNlbHNlCi0gI2Vycm9yICJObyBzdXBwb3J0IGZvciB5b3VyIGFyY2hpdGVjdHVyZSBpbiBB bmRyb2lkIG9yIFBOYUNsIGhlYWRlciIKLSAjZW5kaWYKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvcHBjNjRf bGludXhfc3lzY2FsbHMuaCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJv eC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF9zeXNjYWxscy5oCi1uZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi5jY2FjZmZlMjIKLS0tLSAvZGV2L251bGwKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1f aGVhZGVycy9wcGM2NF9saW51eF9zeXNjYWxscy5oCi1AQCAtMCwwICsxLDEyIEBACi0rLy8gQ29w eXJpZ2h0IDIwMTQgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0r Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj ZW5zZSB0aGF0IGNhbiBiZQotKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0rCi0rI2lm bmRlZiBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1NZU0NBTExTX0hf Ci0rI2RlZmluZSBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1NZU0NB TExTX0hfCi0rCi0rI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4KLSsKLSsvL1RPRE86IGlzIGl0IG5l Y2Vzc2FyeSB0byByZWRlZmluZSBzeXNjYWxsIG51bWJlcnMgZm9yIFBQQzY0PwotKwotKyNlbmRp ZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19QUEM2NF9MSU5VWF9TWVNDQUxMU19I XwotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9s aW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF91Y29udGV4dC5oIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xp bnV4X3Vjb250ZXh0LmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLjA3 NzI4ZTA4NwotLS0tIC9kZXYvbnVsbAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3Vjb250ZXh0LmgK LUBAIC0wLDAgKzEsMTIgQEAKLSsvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9y cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0rLy8gZm91bmQgaW4g dGhlIExJQ0VOU0UgZmlsZS4KLSsKLSsjaWZuZGVmIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURF UlNfUFBDNjRfTElOVVhfVUNPTlRFWFRfSF8KLSsjZGVmaW5lIFNBTkRCT1hfTElOVVhfU1lTVEVN X0hFQURFUlNfUFBDNjRfTElOVVhfVUNPTlRFWFRfSF8KLSsKLSsjaW5jbHVkZSA8c3lzL3Vjb250 ZXh0Lmg+Ci0rCi0rLy9UT0RPOiBpcyBpdCBuZWNlc3NhcnkgdG8gcmVkZWZpbmUgdWNvbnRleHQg b24gUFBDNjQ/Ci0rCi0rI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQ QzY0X0xJTlVYX1VDT05URVhUX0hfCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9zZXJ2aWNlcy9zZXJ2aWNlX21hbmFnZXIvc2FuZGJveC9saW51eC9icGZfcmVu ZGVyZXJfcG9saWN5X2xpbnV4LmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9z ZXJ2aWNlcy9zZXJ2aWNlX21hbmFnZXIvc2FuZGJveC9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5 X2xpbnV4LmNjCi1pbmRleCBiYmViMzE1MmQuLjE1NmNkMGQyNCAxMDA2NDQKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2VydmljZXMvc2VydmljZV9tYW5hZ2VyL3NhbmRi b3gvbGludXgvYnBmX3JlbmRlcmVyX3BvbGljeV9saW51eC5jYwotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9zZXJ2aWNlcy9zZXJ2aWNlX21hbmFnZXIvc2FuZGJveC9saW51 eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjCi1AQCAtMTUsNiArMTUsMTEgQEAKLSAjaW5j bHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zeXNjYWxscy5oIgotICNp bmNsdWRlICJzZXJ2aWNlcy9zZXJ2aWNlX21hbmFnZXIvc2FuZGJveC9saW51eC9zYW5kYm94X2xp bnV4LmgiCi0gCi0rLy8gT24gUFBDNjQsIFRDR0VUUyBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIHN0 cnVjdCB0ZXJtaW9zLCBzbyB3ZSBtdXN0IGluY2x1ZGUgdGVybWlvcy5oCi0rI2lmZGVmIF9fcG93 ZXJwYzY0X18KLSsjaW5jbHVkZSA8dGVybWlvcy5oPgotKyNlbmRpZgotKwotICNpZiBkZWZpbmVk KE9TX0NIUk9NRU9TKQotIC8vIFRPRE8odmlnbmF0dGkpOiByZXBsYWNlIHRoZSBsb2NhbCBkZWZp bml0aW9ucyBiZWxvdyB3aXRoICNpbmNsdWRlCi0gLy8gPGxpbnV4L2RtYS1idWYuaD4gb25jZSBr ZXJuZWwgdmVyc2lvbiA0LjYgYmVjb21lcyB3aWRlbHkgdXNlZC4KLWRpZmYgLS1naXQgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvcGxh dGZvcm0vaGVhcC9IZWFwUGFnZS5oIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL3BsYXRmb3JtL2hlYXAvSGVhcFBhZ2UuaAotaW5kZXgg MjA2NzQ1NjNlLi40OWY0NWZlZGUgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvcGxhdGZvcm0vaGVhcC9IZWFwUGFn ZS5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L1dl YktpdC9Tb3VyY2UvcGxhdGZvcm0vaGVhcC9IZWFwUGFnZS5oCi1AQCAtNjIsMTEgKzYyLDEyIEBA IGNvbnN0ZXhwciBzaXplX3Qga0JsaW5rUGFnZUJhc2VNYXNrID0gfmtCbGlua1BhZ2VPZmZzZXRN YXNrOwotIGNvbnN0ZXhwciBzaXplX3Qga0JsaW5rUGFnZXNQZXJSZWdpb24gPSAxMDsKLSAKLSAv LyBUT0RPKG55YSk6IFJlcGxhY2UgdGhpcyB3aXRoIHNvbWV0aGluZyBsaWtlICNpZiBFTkFCTEVf TkFDTC4KLS0jaWYgMAotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotIC8vIE5hQ2wncyBz eXN0ZW0gcGFnZSBzaXplIGlzIDY0IEtpQi4gVGhpcyBjYXVzZXMgYSBwcm9ibGVtIGluIE9pbHBh bidzIGhlYXAKLSAvLyBsYXlvdXQgYmVjYXVzZSBPaWxwYW4gYWxsb2NhdGVzIHR3byBndWFyZCBw YWdlcyBmb3IgZWFjaCBCbGluayBwYWdlICh3aG9zZQotIC8vIHNpemUgaXMga0JsaW5rUGFnZVNp emUgPSAyXjE3ID0gMTI4IEtpQikuIFNvIHdlIGRvbid0IHVzZSBndWFyZCBwYWdlcyBpbgotIC8v IE5hQ2wuCi0rLy8gVGhlIHNhbWUgaXNzdWUgaG9sZHMgZm9yIHBwYzY0IHN5c3RlbXMsIHdoaWNo IHVzZSBhIDY0ayBwYWdlIHNpemUuCi0gY29uc3RleHByIHNpemVfdCBrQmxpbmtHdWFyZFBhZ2VT aXplID0gMDsKLSAjZWxzZQotIGNvbnN0ZXhwciBzaXplX3Qga0JsaW5rR3VhcmRQYWdlU2l6ZSA9 IGJhc2U6OmtTeXN0ZW1QYWdlU2l6ZTsKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvcGxhdGZvcm0vaGVhcC9hc20v QlVJTEQuZ24gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L1dl YktpdC9Tb3VyY2UvcGxhdGZvcm0vaGVhcC9hc20vQlVJTEQuZ24KLWluZGV4IDZjODc5NTBmNC4u YTJmYWIzMmIzIDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL3BsYXRmb3JtL2hlYXAvYXNtL0JVSUxELmduCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L1dlYktpdC9Tb3Vy Y2UvcGxhdGZvcm0vaGVhcC9hc20vQlVJTEQuZ24KLUBAIC00Niw2ICs0NiwxMCBAQCBpZiAoY3Vy cmVudF9jcHUgPT0gIng4NiIgfHwgY3VycmVudF9jcHUgPT0gIng2NCIpIHsKLSAgICAgICBzb3Vy Y2VzID0gWwotICAgICAgICAgIlNhdmVSZWdpc3RlcnNfbWlwczY0LlMiLAotICAgICAgIF0KLSsg ICAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7Ci0rICAgICAgc291cmNlcyA9 IFsKLSsgICAgICAgICJTYXZlUmVnaXN0ZXJzX3BwYzY0LlMiLAotKyAgICAgIF0KLSAgICAgfQot IAotICAgICBpZiAoY3VycmVudF9jcHUgPT0gImFybSIpIHsKLWRpZmYgLS1naXQgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvcGxhdGZv cm0vaGVhcC9hc20vU2F2ZVJlZ2lzdGVyc19wcGM2NC5TIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9XZWJLaXQvU291cmNlL3BsYXRmb3JtL2hlYXAvYXNtL1Nh dmVSZWdpc3RlcnNfcHBjNjQuUwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAw MC4uZWNkMTM5YWUxCi0tLS0gL2Rldi9udWxsCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvcGxhdGZvcm0vaGVhcC9hc20vU2F2 ZVJlZ2lzdGVyc19wcGM2NC5TCi1AQCAtMCwwICsxLDU5IEBACi0rLyoKLSsgKiB0eXBlZGVmIHZv aWQgKCpQdXNoQWxsUmVnaXN0ZXJzQ2FsbGJhY2spKFNhZmVQb2ludEJhcnJpZXIqLCBUaHJlYWRT dGF0ZSosIGludHB0cl90Kik7Ci0rICogZXh0ZXJuICJDIiB2b2lkIFB1c2hBbGxSZWdpc3RlcnMo U2FmZVBvaW50QmFycmllciosIFRocmVhZFN0YXRlKiwgUHVzaEFsbFJlZ2lzdGVyc0NhbGxiYWNr KQotKyAqLwotKwotKy50eXBlIFB1c2hBbGxSZWdpc3RlcnMsICVmdW5jdGlvbgotKy5nbG9iYWwg UHVzaEFsbFJlZ2lzdGVycwotKy5oaWRkZW4gUHVzaEFsbFJlZ2lzdGVycwotK1B1c2hBbGxSZWdp c3RlcnM6Ci0rICAgICAgICAvLyBQdXNoIGFsbCBjYWxsZWUtc2F2ZXMgcmVnaXN0ZXJzIHRvIGdl dCB0aGVtCi0rICAgICAgICAvLyBvbiB0aGUgc3RhY2sgZm9yIGNvbnNlcnZhdGl2ZSBzdGFjayBz Y2FubmluZy4KLSsgICAgICAgIC8vIFJlc2VydmUgc3BhY2UgZm9yIGNhbGxlZS1zYXZlZCByZWdp c3RlcnMgYW5kIG1pbmltYWwgc3RhY2sgZnJhbWUuCi0rICAgICAgICBtZmxyIDAgICAgICAgICAj IHIwID0gTFIKLSsgICAgICAgIHN0ZCAwLDE2KDEpICAgICMgc3RvcmUgTFIgYXQgYWRkciBzcCsx NgotKyAgICAgICAgc3RkdSAxLC0xNzYoMSkgIyBncm93IHN0YWNrIGJ5IDE3NiBieXRlcyBhbmQg c3RvcmUgbmV3IHN0YWNrIHRvcCBwdHIgdG8gcjEKLSsgICAgICAgICAgICAjIDMyMTgqOCA9IG1p biBzdGFjayAgbm9uLXZvbGF0aWxlIHJlZ2lzdGVycwotKwotKyAgICAgICAgLy8gU2F2ZSB0aGUg Y2FsbGVlLXNhdmVkIHJlZ2lzdGVycwotKyAgICAgICAgc3RkIDMxLDE2OCgxKSAgIyBzdG9yZSBy MzEgdG8gYWRkciBzcCsxNjggCi0rICAgICAgICBzdGQgMzAsMTYwKDEpICAjIGV0Yy4uLgotKyAg ICAgICAgc3RkIDI5LDE1MigxKQotKyAgICAgICAgc3RkIDI4LDE0NCgxKQotKyAgICAgICAgc3Rk IDI3LDEzNigxKQotKyAgICAgICAgc3RkIDI2LDEyOCgxKQotKyAgICAgICAgc3RkIDI1LDEyMCgx KQotKyAgICAgICAgc3RkIDI0LDExMigxKQotKyAgICAgICAgc3RkIDIzLDEwNCgxKQotKyAgICAg ICAgc3RkIDIyLDk2KDEpCi0rICAgICAgICBzdGQgMjEsODgoMSkKLSsgICAgICAgIHN0ZCAyMCw4 MCgxKQotKyAgICAgICAgc3RkIDE5LDcyKDEpCi0rICAgICAgICBzdGQgMTgsNjQoMSkKLSsgICAg ICAgIHN0ZCAxNyw1NigxKQotKyAgICAgICAgc3RkIDE2LDQ4KDEpCi0rICAgICAgICBzdGQgMTUs NDAoMSkKLSsgICAgICAgIHN0ZCAxNCwzMigxKQotKyAgICAgICAgCi0rICAgICAgICAvLyBOb3Rl OiB0aGUgY2FsbGVlLXNhdmVkIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyBkbyBub3QgbmVlZCB0 byBiZQotKyAgICAgICAgLy8gY29waWVkIHRvIHRoZSBzdGFjaywgYmVjYXVzZSBmcCByZWdpc3Rl cnMgbmV2ZXIgaG9sZCBoZWFwIHBvaW50ZXJzCi0rICAgICAgICAvLyBhbmQgc28gZG8gbm90IG5l ZWQgdG8gYmUga2VwdCB2aXNpYmxlIHRvIHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4KLSsgICAgICAg IAotKyAgICAgICAgLy8gUGFzcyB0aGUgdHdvIGZpcnN0IGFyZ3VtZW50cyB1bnRvdWNoZWQgaW4g cjMgYW5kIHI0IGFuZCB0aGUKLSsgICAgICAgIC8vIHN0YWNrIHBvaW50ZXIgdG8gdGhlIGNhbGxi YWNrLgotKwotKyAgICAgICAgc3RkIDIsIDI0KDEpICAgIyBzYXZlIHIyIHRvIHNwKzI0IGFkZHIK LSsgICAgICAgIG10Y3RyIDUgICAgICAgICMgY29weSAzcmQgZnVuY3Rpb24gYXJnIChjYWxsYmFj ayBmbiBwb2ludGVyKSB0byBDVFIKLSsgICAgICAgIG1yIDEyLCA1ICAgICAgICMgcjEyIG11c3Qg aG9sZCBhZGRyZXNzIG9mIGNhbGxiYWNrIHdlIGFyZSBnb2luZyB0byBjYWxsIAotKyAgICAgICAg ICAgICAgICAgICAgICAgIyAgZm9yIHBvc2l0aW9uLWlkZXBlbmRlbnQgZnVuY3Rpb25zIGluc2lk ZSB0aGUgY2FsbGJhY2sgdG8gd29yawotKyAgICAgICAgbXIgNSwgMSAgICAgICAgIyBzZXQgY3Vy cmVudCBzcCAoc3RhY2sgdG9wKSBhcyAzcmQgYXJndW1lbnQgZm9yIHRoZSBjYWxsYmFjawotKyAg ICAgICAgYmN0cmwgICAgICAgICAgIyBzZXQgTFIgdG8gUEMrNCBhbmQgY2FsbCB0aGUgY2FsbGJh Y2sKLSsgICAgICAgIGxkIDIsIDI0KDEpICAgICMgcmVzdG9yZSByMiBmcm9tIHNwKzI0IGFkZHIK LSsKLSsgICAgICAgIC8vIEFkanVzdCBzdGFjaywgcmVzdG9yZSByZXR1cm4gYWRkcmVzcyBhbmQg cmV0dXJuLgotKyAgICAgICAgLy8gTm90ZTogdGhlIGNvcGllZCByZWdpc3RlcnMgZG8gbm90IG5l ZWQgdG8gYmUgcmVsb2FkZWQgaGVyZSwKLSsgICAgICAgIC8vIGJlY2F1c2UgdGhleSB3ZXJlIHBy ZXNlcnZlZCBieSB0aGUgY2FsbGVkIHJvdXRpbmUuCi0rICAgICAgICBhZGRpIDEsMSwxNzYgICAj IHJlc3RvcmUgb3JpZ2luYWwgU1AgYnkgZG9pbmcgc3AgKz0gMTc2Ci0rICAgICAgICBsZCAwLDE2 KDEpICAgICAjIHJlc3RvcmUgb3JpZ2luYWwgTFIgZnJvbSBhZGRyIHNwKzE2Ci0rICAgICAgICBt dGxyIDAgICAgICAgICAjIC4uLiBjb3B5IGl0IHRvIHRoZSBhY3R1YWwgTFIKLSsgICAgICAgIGJs ciAgICAgICAgICAgICMgcmV0dXJuIHRvIExSIGFkZHIKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L1dlYktpdC9Tb3VyY2UvcGxhdGZvcm0v d3RmL2R0b2EvdXRpbHMuaCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvV2ViS2l0L1NvdXJjZS9wbGF0Zm9ybS93dGYvZHRvYS91dGlscy5oCi1pbmRleCA3ZjFi MWM2Y2EuLjY1YWRjMGU2ZCAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvV2ViS2l0L1NvdXJjZS9wbGF0Zm9ybS93dGYvZHRvYS91dGlscy5o Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L1dlYktp dC9Tb3VyY2UvcGxhdGZvcm0vd3RmL2R0b2EvdXRpbHMuaAotQEAgLTQ1LDcgKzQ1LDcgQEAKLSAv LyBkaXNhYmxlZC4pCi0gLy8gT24gTGludXgseDg2IDg5MjU1ZS0yMiAhPSBEaXZfZG91YmxlKDg5 MjU1LjAvMWUyMikKLSAjaWYgZGVmaW5lZChfTV9YNjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykg fHwgZGVmaW5lZChfX0FSTUVMX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwg ZGVmaW5lZChfX01JUFNFTF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVk KF9fTUlQU0VMX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAjZGVmaW5lIERPVUJMRV9D T05WRVJTSU9OX0NPUlJFQ1RfRE9VQkxFX09QRVJBVElPTlMgMQotICNlbGlmIGRlZmluZWQoX01f SVg4NikgfHwgZGVmaW5lZChfX2kzODZfXykKLSAjaWYgZGVmaW5lZChfV0lOMzIpCi1kaWZmIC0t Z2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9hbmdsZS9z cmMvbGliQU5HTEUvQ29uc3RhbnRzLmggcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9Db25zdGFudHMuaAotaW5kZXggMmZlOTIx YWYzLi4wYTBiZmU0NDIgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9Db25zdGFudHMuaAotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9hbmdsZS9zcmMvbGliQU5H TEUvQ29uc3RhbnRzLmgKLUBAIC05LDYgKzksNyBAQAotICNpZm5kZWYgTElCQU5HTEVfQ09OU1RB TlRTX0hfCi0gI2RlZmluZSBMSUJBTkdMRV9DT05TVEFOVFNfSF8KLSAKLSsjaW5jbHVkZSA8Y3N0 ZGRlZj4KLSAjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCi0gCi0gbmFtZXNwYWNlIGdsCi1k aWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi9yYXdf Y29udGV4dF9jcHUuaCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24v cmF3X2NvbnRleHRfY3B1LmgKLWluZGV4IGUyZWY0NWRmNS4uZTI5NWJkNzZiIDEwMDY0NAotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi9yYXdfY29udGV4dF9j cHUuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi9yYXdf Y29udGV4dF9jcHUuaAotQEAgLTQ0LDYgKzQ0LDggQEAgdHlwZWRlZiBNRFJhd0NvbnRleHRBUk0g UmF3Q29udGV4dENQVTsKLSB0eXBlZGVmIE1EUmF3Q29udGV4dEFSTTY0IFJhd0NvbnRleHRDUFU7 Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSB0eXBlZGVmIE1EUmF3Q29udGV4dE1JUFMgUmF3 Q29udGV4dENQVTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rdHlwZWRlZiBNRFJh d0NvbnRleHRQUEM2NCBSYXdDb250ZXh0Q1BVOwotICNlbHNlCi0gI2Vycm9yICJUaGlzIGNvZGUg aGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCi0gI2VuZGlmCi1kaWZm IC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRf aW5mby5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFk X2luZm8uY2MKLWluZGV4IDBhMTA0MWQ2Mi4uZDJhN2IzMzk0IDEwMDY0NAotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYwotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYwot QEAgLTI3MCw3ICsyNzAsNDIgQEAgdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdD b250ZXh0Q1BVKiBvdXQpIGNvbnN0IHsKLSAgIG91dC0+ZmxvYXRfc2F2ZS5maXIgPSBtY29udGV4 dC5mcGNfZWlyOwotICNlbmRpZgotIH0KLS0jZW5kaWYgIC8vIF9fbWlwc19fCi0rCi0rI2VsaWYg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKwotK3VpbnRwdHJfdCBUaHJlYWRJbmZvOjpHZXRJbnN0 cnVjdGlvblBvaW50ZXIoKSBjb25zdCB7Ci0rICAgIHJldHVybiBtY29udGV4dC5ncF9yZWdzW1BU X05JUF07Ci0rfQotKwotK3ZvaWQgVGhyZWFkSW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4 dENQVSogb3V0KSBjb25zdCB7Ci0rICAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRf UFBDNjRfRlVMTDsKLSsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9DT05URVhUX1BQQzY0X0dQ Ul9DT1VOVDsgaSsrKQotKyAgICAgICAgb3V0LT5ncHJbaV0gPSBtY29udGV4dC5ncF9yZWdzW2ld OwotKwotKyAgICBvdXQtPmxyID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9MTktdOwotKyAgICBvdXQt PnNycjAgPSBtY29udGV4dC5ncF9yZWdzW1BUX05JUF07Ci0rICAgIG91dC0+c3JyMSA9IG1jb250 ZXh0LmdwX3JlZ3NbUFRfTVNSXTsKLSsgICAgb3V0LT5jciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRf Q0NSXTsKLSsgICAgb3V0LT54ZXIgPSBtY29udGV4dC5ncF9yZWdzW1BUX1hFUl07Ci0rICAgIG91 dC0+Y3RyID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9DVFJdOwotKyAgICAKLSsgICAgZm9yIChpbnQg aSA9IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykKLSsgICAg ICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSBtY29udGV4dC5mcF9yZWdzW2ldOwotKwot KyAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSBtY29udGV4dC5mcF9yZWdzW05GUFJFRy0xXTsK LSsKLSsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09V TlQ7IGkrKykKLSsgICAgICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9IFwKLSsgICAg ICAgICAgICB7KCgodWludDY0X3QpdnJlZ3MudnJyZWdzW2ldWzBdKSA8PCAzMikgCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICB8IHZyZWdzLnZycmVnc1tpXVsxXSwgCi0rICAgICAgICAgICAg KCgodWludDY0X3QpdnJlZ3MudnJyZWdzW2ldWzJdKSA8PCAzMikKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgfCB2cmVncy52cnJlZ3NbaV1bM119OwotKwotKyAgICBvdXQtPnZyc2F2ZSA9IHZy ZWdzLnZyc2F2ZTsKLSsgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IgPSB7MCwgdnJlZ3Mu dnNjci52c2NyX3dvcmR9OwotKyAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJ2YWxpZCA9IDB4 RkZGRkZGRkY7IAotK30KLSsjZW5kaWYgIC8vIF9fcG93ZXJwYzY0X18KLSAKLSB2b2lkIFRocmVh ZEluZm86OkdldEdlbmVyYWxQdXJwb3NlUmVnaXN0ZXJzKHZvaWQqKiBncF9yZWdzLCBzaXplX3Qq IHNpemUpIHsKLSAgIGFzc2VydChncF9yZWdzIHx8IHNpemUpOwotQEAgLTI3OSw2ICszMTQsMTEg QEAgdm9pZCBUaHJlYWRJbmZvOjpHZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVycyh2b2lkKiogZ3Bf cmVncywgc2l6ZV90KiBzaXplKSB7Ci0gICAgICpncF9yZWdzID0gbWNvbnRleHQuZ3JlZ3M7Ci0g ICBpZiAoc2l6ZSkKLSAgICAgKnNpemUgPSBzaXplb2YobWNvbnRleHQuZ3JlZ3MpOwotKyNlbGlm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGlmIChncF9yZWdzKQotKyAgICAqZ3BfcmVncyA9 IG1jb250ZXh0LmdwX3JlZ3M7Ci0rICBpZiAoc2l6ZSkKLSsgICAgKnNpemUgPSBzaXplb2YobWNv bnRleHQuZ3BfcmVncyk7Ci0gI2Vsc2UKLSAgIGlmIChncF9yZWdzKQotICAgICAqZ3BfcmVncyA9 ICZyZWdzOwotQEAgLTI5NCw2ICszMzQsMTEgQEAgdm9pZCBUaHJlYWRJbmZvOjpHZXRGbG9hdGlu Z1BvaW50UmVnaXN0ZXJzKHZvaWQqKiBmcF9yZWdzLCBzaXplX3QqIHNpemUpIHsKLSAgICAgKmZw X3JlZ3MgPSAmbWNvbnRleHQuZnByZWdzOwotICAgaWYgKHNpemUpCi0gICAgICpzaXplID0gc2l6 ZW9mKG1jb250ZXh0LmZwcmVncyk7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAg aWYgKGZwX3JlZ3MpCi0rICAgICpmcF9yZWdzID0gJm1jb250ZXh0LmZwX3JlZ3M7Ci0rICBpZiAo c2l6ZSkKLSsgICAgKnNpemUgPSBzaXplb2YobWNvbnRleHQuZnBfcmVncyk7Ci0gI2Vsc2UKLSAg IGlmIChmcF9yZWdzKQotICAgICAqZnBfcmVncyA9ICZmcHJlZ3M7Ci1AQCAtMzAyLDQgKzM0Nywx MyBAQCB2b2lkIFRocmVhZEluZm86OkdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnModm9pZCoqIGZw X3JlZ3MsIHNpemVfdCogc2l6ZSkgewotICNlbmRpZgotIH0KLSAKLSsjaWYgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotK3ZvaWQgVGhyZWFkSW5mbzo6R2V0VmVjdG9yUmVnaXN0ZXJzKHZvaWQqKiB2 X3JlZ3MsIHNpemVfdCogc2l6ZSkgewotKyAgICBpZiAodl9yZWdzKQotKyAgICAgICAgKnZfcmVn cyA9ICZ2cmVnczsKLSsgICAgaWYgKHNpemUpCi0rICAgICAgICAqc2l6ZSA9IHNpemVvZih2cmVn cyk7Ci0rfQotKyNlbmRpZgotKwotIH0gIC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQKLWRp ZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVh ZF9pbmZvLmggcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVh ZF9pbmZvLmgKLWluZGV4IGZiMjE2ZmE2ZC4uZmI2NjkxMjZmIDEwMDY0NAotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5oCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmgKLUBA IC02OCw2ICs2OCwxMCBAQCBzdHJ1Y3QgVGhyZWFkSW5mbyB7Ci0gICAvLyBVc2UgdGhlIHN0cnVj dHVyZXMgZGVmaW5lZCBpbiA8c3lzL3VzZXIuaD4KLSAgIHN0cnVjdCB1c2VyX3JlZ3Nfc3RydWN0 IHJlZ3M7Ci0gICBzdHJ1Y3QgdXNlcl9mcHNpbWRfc3RydWN0IGZwcmVnczsKLSsjZWxpZiBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0rICAvLyBVc2UgdGhlIHN0cnVjdHVyZXMgZGVmaW5lZCBpbiA8 c3lzL3Vjb250ZXh0Lmg+LgotKyAgbWNvbnRleHRfdCBtY29udGV4dDsKLSsgIHN0cnVjdCBfbGli Y192cnN0YXRlIHZyZWdzOwotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gICAvLyBVc2UgdGhl IHN0cnVjdHVyZSBkZWZpbmVkIGluIDxzeXMvdWNvbnRleHQuaD4uCi0gICBtY29udGV4dF90IG1j b250ZXh0OwotQEAgLTg0LDYgKzg4LDExIEBAIHN0cnVjdCBUaHJlYWRJbmZvIHsKLSAKLSAgIC8v IFJldHVybnMgdGhlIHBvaW50ZXIgYW5kIHNpemUgb2YgZmxvYXQgcG9pbnQgcmVnaXN0ZXIgYXJl YS4KLSAgIHZvaWQgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVycyh2b2lkKiogZnBfcmVncywgc2l6 ZV90KiBzaXplKTsKLSsKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgLy8gUmV0dXJu cyB0aGUgcG9pbnRlciBhbmQgc2l6ZSBvZiB0aGUgdmVjdG9yIHJlZ2lzdGVyIGFyZWEuIChQUEM2 NCBvbmx5KQotKyAgdm9pZCBHZXRWZWN0b3JSZWdpc3RlcnModm9pZCoqIHZfcmVncywgc2l6ZV90 KiBzaXplKTsKLSsjZW5kaWYKLSB9OwotIAotIH0gIC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtw YWQKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9u L3Vjb250ZXh0X3JlYWRlci5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9j b21tb24vdWNvbnRleHRfcmVhZGVyLmNjCi1pbmRleCA5NWIwZmI0NGUuLjgyYjQyOGZhOSAxMDA2 NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRl eHRfcmVhZGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29t bW9uL3Vjb250ZXh0X3JlYWRlci5jYwotQEAgLTI1NCw2ICsyNTQsNDggQEAgdm9pZCBVQ29udGV4 dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4 dF90ICp1YykgewotICAgb3V0LT5mbG9hdF9zYXZlLmZpciA9IHVjLT51Y19tY29udGV4dC5mcGNf ZWlyOyAgLy8gVW51c2VkLgotICNlbmRpZgotIH0KLSsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCi0rCi0rdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRTdGFja1BvaW50ZXIoY29u c3QgdWNvbnRleHRfdCogdWMpIHsKLSsgICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5ncF9yZWdz W01EX0NPTlRFWFRfUFBDNjRfUkVHX1NQXTsKLSt9Ci0rCi0rdWludHB0cl90IFVDb250ZXh0UmVh ZGVyOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKLSsgICAg cmV0dXJuIHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF07Ci0rfQotKwotK3ZvaWQgVUNv bnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCwgY29uc3QgdWNv bnRleHRfdCogdWMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IF9saWJjX3Zyc3RhdGUqIHZyZWdzKSB7Ci0rICAgIG91dC0+Y29udGV4dF9mbGFncyA9 IE1EX0NPTlRFWFRfUFBDNjRfRlVMTDsKLSsKLSsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9D T05URVhUX1BQQzY0X0dQUl9DT1VOVDsgaSsrKQotKyAgICAgICAgb3V0LT5ncHJbaV0gPSB1Yy0+ dWNfbWNvbnRleHQuZ3BfcmVnc1tpXTsKLSsKLSsgICAgb3V0LT5sciA9IHVjLT51Y19tY29udGV4 dC5ncF9yZWdzW1BUX0xOS107ICAgIAotKyAgICBvdXQtPnNycjAgPSB1Yy0+dWNfbWNvbnRleHQu Z3BfcmVnc1tQVF9OSVBdOwotKyAgICBvdXQtPnNycjEgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVn c1tQVF9NU1JdOwotKyAgICBvdXQtPmNyID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfQ0NS XTsKLSsgICAgb3V0LT54ZXIgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9YRVJdOwotKyAg ICBvdXQtPmN0ciA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NUUl07Ci0rICAgIAotKyAg ICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBDX0ZQUl9DT1VOVDsg aSsrKQotKyAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9IHVjLT51Y19tY29udGV4 dC5mcF9yZWdzW2ldOwotKwotKyAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSB1Yy0+dWNfbWNv bnRleHQuZnBfcmVnc1tORlBSRUctMV07Ci0rCi0rICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURf VkVDVE9SU0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspCi0rICAgICAgICBvdXQtPnZlY3Rvcl9z YXZlLnNhdmVfdnJbaV0gPQotKyAgICAgICAgICAgIHsoKCh1aW50NjRfdCl2cmVncy0+dnJyZWdz W2ldWzBdKSA8PCAzMikgCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHwgdnJlZ3MtPnZycmVn c1tpXVsxXSwgCi0rICAgICAgICAgICAgICgoKHVpbnQ2NF90KXZyZWdzLT52cnJlZ3NbaV1bMl0p IDw8IDMyKQotKyAgICAgICAgICAgICAgICAgICAgICAgICB8IHZyZWdzLT52cnJlZ3NbaV1bM119 OwotKwotKyAgICBvdXQtPnZyc2F2ZSA9IHZyZWdzLT52cnNhdmU7Ci0rICAgIG91dC0+dmVjdG9y X3NhdmUuc2F2ZV92c2NyID0gezAsIHZyZWdzLT52c2NyLnZzY3Jfd29yZH07Ci0rICAgIG91dC0+ dmVjdG9yX3NhdmUuc2F2ZV92cnZhbGlkID0gMHhGRkZGRkZGRjsgCi0rfQotKwotICNlbmRpZgot IAotIH0gIC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQKLWRpZmYgLS1naXQgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaAot aW5kZXggZjNkZGUxZjRkLi41YzFmMTZlNTYgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oCi1AQCAt NTQsNiArNTQsOSBAQCBzdHJ1Y3QgVUNvbnRleHRSZWFkZXIgewotICNlbGlmIGRlZmluZWQoX19h YXJjaDY0X18pCi0gICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpv dXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IGZwc2ltZF9jb250ZXh0KiBmcHJlZ3MpOwotKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSsgIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUg Km91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgX2xpYmNfdnJzdGF0ZSogdnJlZ3MpOwotICNlbHNlCi0gICBzdGF0aWMg dm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3Qg KnVjKTsKLSAjZW5kaWYKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxl ci9leGNlcHRpb25faGFuZGxlci5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4 Y2VwdGlvbl9oYW5kbGVyLmNjCi1pbmRleCAzMDNlOGVkYjkuLjg4NzRiMzg4YSAxMDA2NDQKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYwot QEAgLTQ2MCw5ICs0NjAsMTYgQEAgYm9vbCBFeGNlcHRpb25IYW5kbGVyOjpIYW5kbGVTaWduYWwo aW50IC8qc2lnKi8sIHNpZ2luZm9fdCogaW5mbywgdm9pZCogdWMpIHsKLSAgICAgbWVtY3B5KCZn X2NyYXNoX2NvbnRleHRfLmZsb2F0X3N0YXRlLCBmcF9wdHIsCi0gICAgICAgICAgICBzaXplb2Yo Z19jcmFzaF9jb250ZXh0Xy5mbG9hdF9zdGF0ZSkpOwotICAgfQotKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSsgIC8vIE9uIFBQQzY0LCB3ZSBtdXN0IGNvcHkgVlIgc3RhdGUKLSsgIHVj b250ZXh0X3QqIHVjX3B0ciA9ICh1Y29udGV4dF90Kil1YzsKLSsgIGlmICh1Y19wdHItPnVjX21j b250ZXh0LnZfcmVncykgewotKyAgICBtZW1jcHkoJmdfY3Jhc2hfY29udGV4dF8udmVjdG9yX3N0 YXRlLCB1Y19wdHItPnVjX21jb250ZXh0LnZfcmVncywKLSsgICAgICAgICAgIHNpemVvZihnX2Ny YXNoX2NvbnRleHRfLnZlY3Rvcl9zdGF0ZSkpOwotKyAgfQotICNlbGlmICFkZWZpbmVkKF9fQVJN X0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0gICAvLyBGUCBzdGF0ZSBpcyBub3QgcGFy dCBvZiB1c2VyIEFCSSBvbiBBUk0gTGludXguCi0tICAvLyBJbiBjYXNlIG9mIE1JUFMgTGludXgg RlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKLSsgIC8vIEluIGNhc2Ugb2Yg TUlQUywgTGludXggRlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKLSAgIC8v IGFuZCAnZmxvYXRfc3RhdGUnIGlzIG5vdCBhIG1lbWJlciBvZiBDcmFzaENvbnRleHQuCi0gICB1 Y29udGV4dF90KiB1Y19wdHIgPSAodWNvbnRleHRfdCopdWM7Ci0gICBpZiAodWNfcHRyLT51Y19t Y29udGV4dC5mcHJlZ3MpIHsKLUBAIC03MDAsMTEgKzcwNywxOSBAQCBib29sIEV4Y2VwdGlvbkhh bmRsZXI6OldyaXRlTWluaWR1bXAoKSB7Ci0gICB9Ci0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVk KF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fbWlw c19fKQotKyNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9f KSAmJiAhZGVmaW5lZChfX21pcHNfXykgXAotKyAgICAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotICAgLy8gRlBVIHN0YXRlIGlzIG5vdCBwYXJ0IG9mIEFSTSBFQUJJIHVjb250ZXh0X3QuCi0g ICBtZW1jcHkoJmNvbnRleHQuZmxvYXRfc3RhdGUsIGNvbnRleHQuY29udGV4dC51Y19tY29udGV4 dC5mcHJlZ3MsCi0gICAgICAgICAgc2l6ZW9mKGNvbnRleHQuZmxvYXRfc3RhdGUpKTsKLSAjZW5k aWYKLSsKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgLy8gVmVjdG9yIHJlZ2lzdGVy cyBtdXN0IGJlIGNvcGllZCBvbiBQUEM2NAotKyAgbWVtY3B5KCZjb250ZXh0LnZlY3Rvcl9zdGF0 ZSwgY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LnZfcmVncywKLSsgICAgICAgICBzaXplb2Yo Y29udGV4dC52ZWN0b3Jfc3RhdGUpKTsKLSsjZW5kaWYKLSsKLSAgIGNvbnRleHQudGlkID0gc3lz X2dldHRpZCgpOwotIAotICAgLy8gQWRkIGFuIGV4Y2VwdGlvbiBzdHJlYW0gdG8gdGhlIG1pbmlk dW1wIGZvciBiZXR0ZXIgcmVwb3J0aW5nLgotQEAgLTcyNSw2ICs3NDAsOSBAQCBib29sIEV4Y2Vw dGlvbkhhbmRsZXI6OldyaXRlTWluaWR1bXAoKSB7Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykK LSAgIGNvbnRleHQuc2lnaW5mby5zaV9hZGRyID0KLSAgICAgICByZWludGVycHJldF9jYXN0PHZv aWQqPihjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQucGMpOwotKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSsgIGNvbnRleHQuc2lnaW5mby5zaV9hZGRyID0KLSsgICAgICByZWludGVy cHJldF9jYXN0PHZvaWQqPihjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9O SVBdKTsKLSAjZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8g eW91ciBwbGF0Zm9ybSB5ZXQuIgotICNlbmRpZgotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmggcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5oCi1pbmRleCBkMjQ2ZjYwMTkuLjBhZjg5Mzg3 OCAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9o YW5kbGVyLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9o YW5kbGVyLmgKLUBAIC0xOTIsNyArMTkyLDExIEBAIGNsYXNzIEV4Y2VwdGlvbkhhbmRsZXIgewot ICAgICBzaWdpbmZvX3Qgc2lnaW5mbzsKLSAgICAgcGlkX3QgdGlkOyAgLy8gdGhlIGNyYXNoaW5n IHRocmVhZC4KLSAgICAgdWNvbnRleHRfdCBjb250ZXh0OwotLSNpZiAhZGVmaW5lZChfX0FSTV9F QUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p Ci0rICAgIC8vIFBQQzY0J3MgRlAgc3RhdGUgaXMgYSBwYXJ0IG9mIHVjb250ZXh0X3QgbGlrZSBN SVBTIGJ1dCB0aGUgdmVjdG9yCi0rICAgIC8vIHN0YXRlIGlzIG5vdCwgc28gYSBzdHJ1Y3QgaXMg bmVlZGVkLgotKyAgICB2c3RhdGVfdCB2ZWN0b3Jfc3RhdGU7Ci0rI2VsaWYgIWRlZmluZWQoX19B Uk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSAgICAgLy8gI2lmZGVmIHRoaXMgb3V0 IGJlY2F1c2UgRlAgc3RhdGUgaXMgbm90IHBhcnQgb2YgdXNlciBBQkkgZm9yIExpbnV4IEFSTS4K LSAgICAgLy8gSW4gY2FzZSBvZiBNSVBTIExpbnV4IEZQIHN0YXRlIGlzIGFscmVhZHkgcGFydCBv ZiB1Y29udGV4dF90IHNvCi0gICAgIC8vICdmbG9hdF9zdGF0ZScgaXMgbm90IHJlcXVpcmVkLgot ZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5k bGVyX3VuaXR0ZXN0LmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9u X2hhbmRsZXJfdW5pdHRlc3QuY2MKLWluZGV4IDE5M2E3NmU3Yi4uMTY1ZmZmNmZhIDEwMDY0NAot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXJfdW5p dHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9o YW5kbGVyX3VuaXR0ZXN0LmNjCi1AQCAtNDk0LDYgKzQ5NCw4IEBAIGNvbnN0IHVuc2lnbmVkIGNo YXIga0lsbGVnYWxJbnN0cnVjdGlvbltdID0gewotICNpZiBkZWZpbmVkKF9fbWlwc19fKQotICAg Ly8gbWZjMiB6ZXJvLEltcGwgLSB1c3VhbGx5IGlsbGVnYWwgaW4gdXNlcnNwYWNlLgotICAgMHg0 OCwgMHgwMCwgMHgwMCwgMHg0OAotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIDB4 MDEsIDB4MDEsIDB4MDEsIDB4MDEgLy8gQ3Jhc2hlcyBvbiBhIHRlc3RlZCBQT1dFUjkgY3B1Ci0g I2Vsc2UKLSAgIC8vIFRoaXMgY3Jhc2hlcyB3aXRoIFNJR0lMTCBvbiB4ODYveDg2LTY0L2FybS4K LSAgIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYKLUBAIC02ODksMTAgKzY5MSwxMCBAQCBURVNUKEV4 Y2VwdGlvbkhhbmRsZXJUZXN0LCBJbnN0cnVjdGlvblBvaW50ZXJNZW1vcnlNYXhCb3VuZCkgewot IAotICAgLy8gVGhlc2UgYXJlIGRlZmluZWQgaGVyZSBzbyB0aGUgcGFyZW50IGNhbiB1c2UgdGhl bSB0byBjaGVjayB0aGUKLSAgIC8vIGRhdGEgZnJvbSB0aGUgbWluaWR1bXAgYWZ0ZXJ3YXJkcy4K LS0gIC8vIFVzZSA0ayBoZXJlIGJlY2F1c2UgdGhlIE9TIHdpbGwgaGFuZCBvdXQgYSBzaW5nbGUg cGFnZSBldmVuCi0rICAvLyBVc2UgdGhlIHBhZ2Ugc2l6ZSBoZXJlIGJlY2F1c2UgdGhlIE9TIHdp bGwgaGFuZCBvdXQgYSBzaW5nbGUgcGFnZSBldmVuCi0gICAvLyBpZiBhIHNtYWxsZXIgc2l6ZSBp cyByZXF1ZXN0ZWQsIGFuZCB0aGlzIHRlc3Qgd2FudHMgdG8KLSAgIC8vIHRlc3QgdGhlIHVwcGVy IGJvdW5kIG9mIHRoZSBtZW1vcnkgcmFuZ2UuCi0tICBjb25zdCB1aW50MzJfdCBrTWVtb3J5U2l6 ZSA9IDQwOTY7ICAvLyBieXRlcwotKyAgY29uc3QgdWludDMyX3Qga01lbW9yeVNpemUgPSBnZXRw YWdlc2l6ZSgpOyAgLy8gYnl0ZXMKLSAgIGNvbnN0IGludCBrT2Zmc2V0ID0ga01lbW9yeVNpemUg LSBzaXplb2Yoa0lsbGVnYWxJbnN0cnVjdGlvbik7Ci0gCi0gICBjb25zdCBwaWRfdCBjaGlsZCA9 IGZvcmsoKTsKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dy aXRlci9taWNyb2R1bXBfd3JpdGVyLmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVt cF93cml0ZXIvbWljcm9kdW1wX3dyaXRlci5jYwotaW5kZXggMTgwODczZjQwLi4yOTIxZmQzODcg MTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNy b2R1bXBfd3JpdGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dy aXRlci9taWNyb2R1bXBfd3JpdGVyLmNjCi1AQCAtMTM4LDcgKzEzOCw5IEBAIGNsYXNzIE1pY3Jv ZHVtcFdyaXRlciB7Ci0gICAgICAgICAgICAgICAgICAgY29uc3QgTWljcm9kdW1wRXh0cmFJbmZv JiBtaWNyb2R1bXBfZXh0cmFfaW5mbywKLSAgICAgICAgICAgICAgICAgICBMaW51eER1bXBlciog ZHVtcGVyKQotICAgICAgIDogdWNvbnRleHRfKGNvbnRleHQgPyAmY29udGV4dC0+Y29udGV4dCA6 IE5VTEwpLAotLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19f KQotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgICAgICB2ZWN0b3Jfc3RhdGVfKGNv bnRleHQgPyAmY29udGV4dC0+dmVjdG9yX3N0YXRlIDogTlVMTCksCi0rI2VsaWYgIWRlZmluZWQo X19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSAgICAgICAgIGZsb2F0X3N0YXRl Xyhjb250ZXh0ID8gJmNvbnRleHQtPmZsb2F0X3N0YXRlIDogTlVMTCksCi0gI2VuZGlmCi0gICAg ICAgICBkdW1wZXJfKGR1bXBlciksCi1AQCAtMzM3LDYgKzMzOSw4IEBAIGNsYXNzIE1pY3JvZHVt cFdyaXRlciB7Ci0gIyBlbHNlCi0gIyAgZXJyb3IgIlRoaXMgbWlwcyBBQkkgaXMgY3VycmVudGx5 IG5vdCBzdXBwb3J0ZWQgKG4zMikiCi0gI2VuZGlmCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotKyAgICBjb25zdCBjaGFyIGtBcmNoW10gPSAicHBjNjQiOwotICNlbHNlCi0gI2Vycm9y ICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldCIKLSAj ZW5kaWYKLUBAIC00MDksNyArNDEzLDkgQEAgY2xhc3MgTWljcm9kdW1wV3JpdGVyIHsKLSAgIHZv aWQgRHVtcENQVVN0YXRlKCkgewotICAgICBSYXdDb250ZXh0Q1BVIGNwdTsKLSAgICAgbXlfbWVt c2V0KCZjcHUsIDAsIHNpemVvZihSYXdDb250ZXh0Q1BVKSk7Ci0tI2lmICFkZWZpbmVkKF9fQVJN X0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSsgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KCZjcHUsIHVjb250ZXh0Xywg dmVjdG9yX3N0YXRlXyk7Ci0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5l ZChfX21pcHNfXykKLSAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KCZjcHUsIHVj b250ZXh0XywgZmxvYXRfc3RhdGVfKTsKLSAjZWxzZQotICAgICBVQ29udGV4dFJlYWRlcjo6Rmls bENQVUNvbnRleHQoJmNwdSwgdWNvbnRleHRfKTsKLUBAIC02MDUsNyArNjExLDkgQEAgY2xhc3Mg TWljcm9kdW1wV3JpdGVyIHsKLSAgIHZvaWQqIEFsbG9jKHVuc2lnbmVkIGJ5dGVzKSB7IHJldHVy biBkdW1wZXJfLT5hbGxvY2F0b3IoKS0+QWxsb2MoYnl0ZXMpOyB9Ci0gCi0gICBjb25zdCB1Y29u dGV4dF90KiBjb25zdCB1Y29udGV4dF87Ci0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYg IWRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGNvbnN0 IGdvb2dsZV9icmVha3BhZDo6dnN0YXRlX3QqIGNvbnN0IHZlY3Rvcl9zdGF0ZV87Ci0rI2VsaWYg IWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSAgIGNvbnN0IGdv b2dsZV9icmVha3BhZDo6ZnBzdGF0ZV90KiBjb25zdCBmbG9hdF9zdGF0ZV87Ci0gI2VuZGlmCi0g ICBMaW51eER1bXBlciogZHVtcGVyXzsKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRlcl91bml0dGVz dC5jYwotaW5kZXggYzJmZWEwMjI1Li44YzYyYzUyNGEgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j bGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyX3VuaXR0ZXN0LmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBf d3JpdGVyX3VuaXR0ZXN0LmNjCi1AQCAtMjc4LDEwICsyNzgsMTkgQEAgVEVTVChNaWNyb2R1bXBX cml0ZXJUZXN0LCBCYXNpY1dpdGhNYXBwaW5ncykgewotICAgQ3Jhc2hBbmRHZXRNaWNyb2R1bXAo bWFwcGluZ3MsIE1pY3JvZHVtcEV4dHJhSW5mbygpLCAmYnVmKTsKLSAgIEFTU0VSVF9UUlVFKENv bnRhaW5zTWljcm9kdW1wKGJ1ZikpOwotIAotKyAgaW50IHBhZ2Vfc2l6ZSA9IGdldHBhZ2VzaXpl KCk7Ci0gI2lmZGVmIF9fTFA2NF9fCi0tICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCi0t ICAgICAgICAgICAgYnVmLmZpbmQoIk0gMDAwMDAwMDAwMDAwMTAwMCAwMDAwMDAwMDAwMDAwMDJB IDAwMDAwMDAwMDAwMDEwMDAgIgotLSAgICAgICAgICAgICAgICAgICAgICIzMzIyMTEwMDU1NDQ3 NzY2ODg5OUFBQkJDQ0RERUVGRjAgbGliZm9vLnNvIikpOwotKyAgLy8gVGhpcyB0ZXN0IGlzIG9u bHkgYXZhaWxhYmxlIGZvciB0aGUgZm9sbG93aW5nIHBhZ2Ugc2l6ZXMKLSsgIEFTU0VSVF9UUlVF KChwYWdlX3NpemUgPT0gNDA5NikgfHwgKHBhZ2Vfc2l6ZSA9PSA2NTUzNikpOwotKyAgaWYgKHBh Z2Vfc2l6ZSA9PSA0MDk2KSB7IAotKyAgICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCi0r ICAgICAgICAgICAgICBidWYuZmluZCgiTSAwMDAwMDAwMDAwMDAxMDAwIDAwMDAwMDAwMDAwMDAw MkEgMDAwMDAwMDAwMDAwMTAwMCAiCi0rICAgICAgICAgICAgICAgICAgICAgICAiMzMyMjExMDA1 NTQ0Nzc2Njg4OTlBQUJCQ0NEREVFRkYwIGxpYmZvby5zbyIpKTsKLSsgIH0gZWxzZSB7Ci0rICAg IEFTU0VSVF9ORShzdGQ6OnN0cmluZzo6bnBvcywKLSsgICAgICAgICAgICAgIGJ1Zi5maW5kKCJN IDAwMDAwMDAwMDAwMTAwMDAgMDAwMDAwMDAwMDAwMDAyQSAwMDAwMDAwMDAwMDEwMDAwICIKLSsg ICAgICAgICAgICAgICAgICAgICAgICIzMzIyMTEwMDU1NDQ3NzY2ODg5OUFBQkJDQ0RERUVGRjAg bGliZm9vLnNvIikpOwotKyAgfQotICNlbHNlCi0gICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5w b3MsCi0gICAgICAgICAgICAgYnVmLmZpbmQoIk0gMDAwMDEwMDAgMDAwMDAwMkEgMDAwMDEwMDAg IgotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGlu dXhfY29yZV9kdW1wZXIuY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVy L2xpbnV4X2NvcmVfZHVtcGVyLmNjCi1pbmRleCA5YmUzNzUzMzMuLmYyOWFlNWU2MyAxMDA2NDQK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9k dW1wZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGlu dXhfY29yZV9kdW1wZXIuY2MKLUBAIC0xMTYsNiArMTE2LDkgQEAgYm9vbCBMaW51eENvcmVEdW1w ZXI6OkdldFRocmVhZEluZm9CeUluZGV4KHNpemVfdCBpbmRleCwgVGhyZWFkSW5mbyogaW5mbykg ewotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gICBzdGFja19wb2ludGVyID0KLSAgICAgICBy ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbmZvLT5tY29udGV4dC5ncmVnc1tNRF9DT05URVhU X01JUFNfUkVHX1NQXSk7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgc3RhY2tf cG9pbnRlciA9Ci0rICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5mby0+bWNvbnRl eHQuZ3BfcmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF0pOwotICNlbHNlCi0gI2Vycm9yICJU aGlzIGNvZGUgaGFzbid0IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKLSAjZW5k aWYKLUBAIC0yMDAsNyArMjAzLDEwIEBAIGJvb2wgTGludXhDb3JlRHVtcGVyOjpFbnVtZXJhdGVU aHJlYWRzKCkgewotICAgICAgICAgbWVtc2V0KCZpbmZvLCAwLCBzaXplb2YoVGhyZWFkSW5mbykp OwotICAgICAgICAgaW5mby50Z2lkID0gc3RhdHVzLT5wcl9wZ3JwOwotICAgICAgICAgaW5mby5w cGlkID0gc3RhdHVzLT5wcl9wcGlkOwotLSNpZiBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0rICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDMxOyBpKysp Ci0rICAgICAgICAgICAgaW5mby5tY29udGV4dC5ncF9yZWdzW2ldID0gc3RhdHVzLT5wcl9yZWdb aV07Ci0rI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAjaWYgZGVmaW5lZChfX0FORFJPSURfXykK LSAgICAgICAgIGZvciAoaW50IGkgPSBFRl9SMDsgaSA8PSBFRl9SMzE7IGkrKykKLSAgICAgICAg ICAgaW5mby5tY29udGV4dC5ncmVnc1tpIC0gRUZfUjBdID0gc3RhdHVzLT5wcl9yZWdbaV07Ci1k aWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9k dW1wZXIuY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1 bXBlci5jYwotaW5kZXggNTE1YWYzZmY0Li5hMzI5OTUwNzYgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5jYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuY2MKLUBAIC03 OTEsNyArNzkxLDkgQEAgYm9vbCBMaW51eER1bXBlcjo6R2V0U3RhY2tJbmZvKGNvbnN0IHZvaWQq KiBzdGFjaywgc2l6ZV90KiBzdGFja19sZW4sCi0gICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50 OF90Kj4oaW50X3N0YWNrX3BvaW50ZXIgJiB+KHBhZ2Vfc2l6ZSAtIDEpKTsKLSAKLSAgIC8vIFRo ZSBudW1iZXIgb2YgYnl0ZXMgb2Ygc3RhY2sgd2hpY2ggd2UgdHJ5IHRvIGNhcHR1cmUuCi0tICBz dGF0aWMgY29uc3QgcHRyZGlmZl90IGtTdGFja1RvQ2FwdHVyZSA9IDMyICogMTAyNDsKLSsgIC8v IFRoaXMgbm93IGRlcGVuZHMgb24gcGFnZV9zaXplIHRvIGF2b2lkIG1pc3NpbmcgZGF0YQotKyAg Ly8gb24gc3lzdGVtcyB3aXRoIGxhcmdlciBwYWdlIHNpemVzLgotKyAgc3RhdGljIGNvbnN0IHB0 cmRpZmZfdCBrU3RhY2tUb0NhcHR1cmUgPSA4ICogcGFnZV9zaXplOwotIAotICAgY29uc3QgTWFw cGluZ0luZm8qIG1hcHBpbmcgPSBGaW5kTWFwcGluZyhzdGFja19wb2ludGVyKTsKLSAgIGlmICgh bWFwcGluZykKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3Jp dGVyL2xpbnV4X2R1bXBlci5oIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9saW51eF9kdW1wZXIuaAotaW5kZXggNGE0ZTBiMGFmLi5jYWEwZmFiNjMgMTAwNjQ0Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5oCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5o Ci1AQCAtNjAsNyArNjAsOCBAQCBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkIHsKLSAgKGRlZmlu ZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSA9PSBfQUJJTzMyKQotIHR5cGVkZWYgRWxmMzJfYXV4 dl90IGVsZl9hdXhfZW50cnk7Ci0gI2VsaWYgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChf X2FhcmNoNjRfXykgfHwgXAotLSAgICAgKGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSAh PSBfQUJJTzMyKQotKyAgICAgKGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSAhPSBfQUJJ TzMyKSB8fCBcCi0rICAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gdHlwZWRlZiBFbGY2NF9h dXh2X3QgZWxmX2F1eF9lbnRyeTsKLSAjZW5kaWYKLSAKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j bGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlcl91bml0dGVzdF9oZWxwZXIu Y2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlcl91 bml0dGVzdF9oZWxwZXIuY2MKLWluZGV4IDNhZDQ4ZTUwMS4uMTY4OGMzNjVlIDEwMDY0NAotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXJfdW5p dHRlc3RfaGVscGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3Jp dGVyL2xpbnV4X2R1bXBlcl91bml0dGVzdF9oZWxwZXIuY2MKLUBAIC01MSw2ICs1MSw4IEBACi0g I2RlZmluZSBUSURfUFRSX1JFR0lTVEVSICJyY3giCi0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykK LSAjZGVmaW5lIFRJRF9QVFJfUkVHSVNURVIgIiQxIgotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSsjZGVmaW5lIFRJRF9QVFJfUkVHSVNURVIgInI4IgotICNlbHNlCi0gI2Vycm9yIFRo aXMgdGVzdCBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHRoaXMgcGxhdGZvcm0uCi0gI2VuZGlmCi1k aWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9w dHJhY2VfZHVtcGVyLmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9s aW51eF9wdHJhY2VfZHVtcGVyLmNjCi1pbmRleCA4YTNmMDRlMjkuLmU2MDdiMjhkNSAxMDA2NDQK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNl X2R1bXBlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9s aW51eF9wdHJhY2VfZHVtcGVyLmNjCi1AQCAtMTU0LDE5ICsxNTQsMjcgQEAgYm9vbCBMaW51eFB0 cmFjZUR1bXBlcjo6Q29weUZyb21Qcm9jZXNzKHZvaWQqIGRlc3QsIHBpZF90IGNoaWxkLAotICAg cmV0dXJuIHRydWU7Ci0gfQotIAotLWJvb2wgTGludXhQdHJhY2VEdW1wZXI6OlJlYWRSZWdpc3Rl clNldChUaHJlYWRJbmZvKiBpbmZvLCBwaWRfdCB0aWQpCi0tewotK2Jvb2wgTGludXhQdHJhY2VE dW1wZXI6OlJlYWRSZWdpc3RlclNldChUaHJlYWRJbmZvKiBpbmZvLCBwaWRfdCB0aWQpIHsKLSAj aWZkZWYgUFRSQUNFX0dFVFJFR1NFVAotICAgc3RydWN0IGlvdmVjIGlvOwotICAgaW5mby0+R2V0 R2VuZXJhbFB1cnBvc2VSZWdpc3RlcnMoJmlvLmlvdl9iYXNlLCAmaW8uaW92X2xlbik7Ci0tICBp ZiAoc3lzX3B0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9QUlNUQVRVUywg KHZvaWQqKSZpbykgPT0gLTEpIHsKLSsgIGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlk LCAodm9pZCopTlRfUFJTVEFUVVMsICh2b2lkKikmaW8pID09IC0xKSB7Ci0gICAgIHJldHVybiBm YWxzZTsKLSAgIH0KLSAKLSAgIGluZm8tPkdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnMoJmlvLmlv dl9iYXNlLCAmaW8uaW92X2xlbik7Ci0tICBpZiAoc3lzX3B0cmFjZShQVFJBQ0VfR0VUUkVHU0VU LCB0aWQsICh2b2lkKilOVF9GUFJFR1NFVCwgKHZvaWQqKSZpbykgPT0gLTEpIHsKLSsgIGlmIChw dHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAodm9pZCopTlRfRlBSRUdTRVQsICh2b2lkKikm aW8pID09IC0xKSB7Ci0gICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSsKLSsjaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotKyAgLy8gR3JhYiB0aGUgdmVjdG9yIHJlZ2lzdGVycyBvbiBQUEM2NCB0 b28KLSsgIGluZm8tPkdldFZlY3RvclJlZ2lzdGVycygmaW8uaW92X2Jhc2UsICZpby5pb3ZfbGVu KTsKLSsgIGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAodm9pZCopTlRfUFBDX1ZN WCwgKHZvaWQqKSZpbykgPT0gLTEpIHsKLSsgICAgcmV0dXJuIGZhbHNlOwotKyAgfQotKyNlbmRp ZiAvLyBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rCi0gICByZXR1cm4gdHJ1ZTsKLSAjZWxzZQot ICAgcmV0dXJuIGZhbHNlOwotQEAgLTMwMyw2ICszMTEsOSBAQCBib29sIExpbnV4UHRyYWNlRHVt cGVyOjpHZXRUaHJlYWRJbmZvQnlJbmRleChzaXplX3QgaW5kZXgsIFRocmVhZEluZm8qIGluZm8p IHsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgc3RhY2tfcG9pbnRlciA9Ci0gICAgICAg cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5mby0+bWNvbnRleHQuZ3JlZ3NbTURfQ09OVEVY VF9NSVBTX1JFR19TUF0pOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIHN0YWNr X3BvaW50ZXIgPQotKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluZm8tPm1jb250 ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9SRUdfU1BdKTsKLSAjZWxzZQotICNlcnJvciAi VGhpcyBjb2RlIGhhc24ndCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCi0gI2Vu ZGlmCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9s aW51eF9wdHJhY2VfZHVtcGVyX3VuaXR0ZXN0LmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21p bmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyX3VuaXR0ZXN0LmNjCi1pbmRleCBhNGEw ZmQ5YjYuLjUyYzE1MDcwNCAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5p ZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlcl91bml0dGVzdC5jYwotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyX3VuaXR0 ZXN0LmNjCi1AQCAtNDU3LDYgKzQ1Nyw5IEBAIFRFU1QoTGludXhQdHJhY2VEdW1wZXJUZXN0LCBW ZXJpZnlTdGFja1JlYWRXaXRoTXVsdGlwbGVUaHJlYWRzKSB7Ci0gI2VsaWYgZGVmaW5lZChfX21p cHNfXykKLSAgICAgcGlkX3QqIHByb2Nlc3NfdGlkX2xvY2F0aW9uID0KLSAgICAgICAgIHJlaW50 ZXJwcmV0X2Nhc3Q8cGlkX3QqPihvbmVfdGhyZWFkLm1jb250ZXh0LmdyZWdzWzFdKTsKLSsjZWxp ZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgIHBpZF90KiBwcm9jZXNzX3RpZF9sb2NhdGlv biA9Ci0rICAgICAgICByZWludGVycHJldF9jYXN0PHBpZF90Kj4ob25lX3RocmVhZC5tY29udGV4 dC5ncF9yZWdzWzhdKTsKLSAjZWxzZQotICNlcnJvciBUaGlzIHRlc3QgaGFzIG5vdCBiZWVuIHBv cnRlZCB0byB0aGlzIHBsYXRmb3JtLgotICNlbmRpZgotQEAgLTU1Myw2ICs1NTYsOCBAQCBURVNU X0YoTGludXhQdHJhY2VEdW1wZXJUZXN0LCBTYW5pdGl6ZVN0YWNrQ29weSkgewotICAgdWludHB0 cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLnJlZ3MucmN4OwotICNlbGlmIGRlZmluZWQoX19t aXBzX18pCi0gICB1aW50cHRyX3QgaGVhcF9hZGRyID0gdGhyZWFkX2luZm8ubWNvbnRleHQuZ3Jl Z3NbMV07Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgdWludHB0cl90IGhlYXBf YWRkciA9IHRocmVhZF9pbmZvLm1jb250ZXh0LmdwX3JlZ3NbOF07Ci0gI2Vsc2UKLSAjZXJyb3Ig VGhpcyB0ZXN0IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gdGhpcyBwbGF0Zm9ybS4KLSAjZW5kaWYK LWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlk dW1wX3dyaXRlci5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWlu aWR1bXBfd3JpdGVyLmNjCi1pbmRleCBjNzE2MTQzNDUuLmE5OGY5YWZhNSAxMDA2NDQKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dy aXRlci5jYwotQEAgLTEzNiw3ICsxMzYsOSBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7Ci0gICAg ICAgOiBmZF8obWluaWR1bXBfZmQpLAotICAgICAgICAgcGF0aF8obWluaWR1bXBfcGF0aCksCi0g ICAgICAgICB1Y29udGV4dF8oY29udGV4dCA/ICZjb250ZXh0LT5jb250ZXh0IDogTlVMTCksCi0t I2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0rI2lmIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgICAgIHZlY3Rvcl9zdGF0ZV8oY29udGV4dCA/ICZj b250ZXh0LT52ZWN0b3Jfc3RhdGUgOiBOVUxMKSwKLSsjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJ X18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgICAgICAgZmxvYXRfc3RhdGVfKGNvbnRleHQg PyAmY29udGV4dC0+ZmxvYXRfc3RhdGUgOiBOVUxMKSwKLSAjZW5kaWYKLSAgICAgICAgIGR1bXBl cl8oZHVtcGVyKSwKLUBAIC00NjgsNyArNDcwLDkgQEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgewot ICAgICAgICAgaWYgKCFjcHUuQWxsb2NhdGUoKSkKLSAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot ICAgICAgICAgbXlfbWVtc2V0KGNwdS5nZXQoKSwgMCwgc2l6ZW9mKFJhd0NvbnRleHRDUFUpKTsK LS0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSsjaWYg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVD b250ZXh0KGNwdS5nZXQoKSwgdWNvbnRleHRfLCB2ZWN0b3Jfc3RhdGVfKTsKLSsjZWxpZiAhZGVm aW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgICAgICAgVUNvbnRl eHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQoKSwgdWNvbnRleHRfLCBmbG9hdF9zdGF0 ZV8pOwotICNlbHNlCi0gICAgICAgICBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoY3B1 LmdldCgpLCB1Y29udGV4dF8pOwotQEAgLTg4OCw3ICs4OTIsNyBAQCBjbGFzcyBNaW5pZHVtcFdy aXRlciB7Ci0gICAgIGRpcmVudC0+bG9jYXRpb24ucnZhID0gMDsKLSAgIH0KLSAKLS0jaWYgZGVm aW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19f KQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmlu ZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIGJvb2wgV3JpdGVDUFVJ bmZvcm1hdGlvbihNRFJhd1N5c3RlbUluZm8qIHN5c19pbmZvKSB7Ci0gICAgIGNoYXIgdmVuZG9y X2lkW3NpemVvZihzeXNfaW5mby0+Y3B1Lng4Nl9jcHVfaW5mby52ZW5kb3JfaWQpICsgMV0gPSB7 MH07Ci0gICAgIHN0YXRpYyBjb25zdCBjaGFyIHZlbmRvcl9pZF9uYW1lW10gPSAidmVuZG9yX2lk IjsKLUBAIC05MDgsNyArOTEyLDkgQEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgewotIAotICAgICAv LyBwcm9jZXNzb3JfYXJjaGl0ZWN0dXJlIHNob3VsZCBhbHdheXMgYmUgc2V0LCBkbyB0aGlzIGZp cnN0Ci0gICAgIHN5c19pbmZvLT5wcm9jZXNzb3JfYXJjaGl0ZWN0dXJlID0KLS0jaWYgZGVmaW5l ZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAgICAgTURfQ1BV X0FSQ0hJVEVDVFVSRV9QUEM2NDsKLSsjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICMgaWYgX01J UFNfU0lNID09IF9BQklPMzIKLSAgICAgICAgIE1EX0NQVV9BUkNISVRFQ1RVUkVfTUlQUzsKLSAj IGVsaWYgX01JUFNfU0lNID09IF9BQkk2NAotQEAgLTEzMjQsNyArMTMzMCw5IEBAIGNsYXNzIE1p bmlkdW1wV3JpdGVyIHsKLSAgIGNvbnN0IGNoYXIqIHBhdGhfOyAgLy8gUGF0aCB0byB0aGUgZmls ZSB3aGVyZSB0aGUgbWluaWR1bSBzaG91bGQgYmUgd3JpdHRlbi4KLSAKLSAgIGNvbnN0IHVjb250 ZXh0X3QqIGNvbnN0IHVjb250ZXh0XzsgIC8vIGFsc28gZnJvbSB0aGUgc2lnbmFsIGhhbmRsZXIK LS0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSsjaWYg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjp2c3RhdGVf dCogY29uc3QgdmVjdG9yX3N0YXRlXzsKLSsjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYm ICFkZWZpbmVkKF9fbWlwc19fKQotICAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjpmcHN0YXRlX3Qq IGNvbnN0IGZsb2F0X3N0YXRlXzsgIC8vIGRpdHRvCi0gI2VuZGlmCi0gICBMaW51eER1bXBlciog ZHVtcGVyXzsKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3Jp dGVyL21pbmlkdW1wX3dyaXRlci5oIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dy aXRlci9taW5pZHVtcF93cml0ZXIuaAotaW5kZXggZDFjYzU2MjRjLi40MDM0OTUyOTUgMTAwNjQ0 Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dy aXRlci5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlk dW1wX3dyaXRlci5oCi1AQCAtNDcsNiArNDcsOCBAQCBjbGFzcyBFeGNlcHRpb25IYW5kbGVyOwot IAotICNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQotIHR5cGVkZWYgc3RydWN0IGZwc2ltZF9jb250 ZXh0IGZwc3RhdGVfdDsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rdHlwZWRlZiBz dHJ1Y3QgX2xpYmNfdnJzdGF0ZSB2c3RhdGVfdDsKLSAjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJ X18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotIHR5cGVkZWYgc3RydWN0IF9mcHN0YXRlIGZwc3Rh dGVfdDsKLSAjZW5kaWYKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1 bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlcl91bml0dGVzdC5jYyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjCi1pbmRleCA1 ODNkZGRhODYuLjVlM2RlY2NmZCAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9t aW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlcl91bml0dGVzdC5j YwotQEAgLTcxMCw2ICs3MTAsOSBAQCBURVNUKE1pbmlkdW1wV3JpdGVyVGVzdCwgSW52YWxpZFN0 YWNrUG9pbnRlcikgewotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gICBjb250ZXh0LmNvbnRl eHQudWNfbWNvbnRleHQuZ3JlZ3NbTURfQ09OVEVYVF9NSVBTX1JFR19TUF0gPQotICAgICAgIGlu dmFsaWRfc3RhY2tfcG9pbnRlcjsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBj b250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19T UF0gPQotKyAgICAgIGludmFsaWRfc3RhY2tfcG9pbnRlcjsKLSAjZWxzZQotICMgZXJyb3IgIlRo aXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKLSAjZW5k aWYKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxl LmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZS5jYwotaW5kZXgg NGU5MzgyNjlmLi5mMGZmMTVkOTYgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgv bWVtb3J5X21hcHBlZF9maWxlLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5 X21hcHBlZF9maWxlLmNjCi1AQCAtNjUsOCArNjUsNyBAQCBib29sIE1lbW9yeU1hcHBlZEZpbGU6 Ok1hcChjb25zdCBjaGFyKiBwYXRoLCBzaXplX3Qgb2Zmc2V0KSB7Ci0gICB9Ci0gCi0gI2lmIGRl ZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXAotLSAgIChkZWZp bmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX0FCSTY0KQotLQotKyAgIChkZWZpbmVkKF9f bWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX0FCSTY0KSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18p Ci0gICBzdHJ1Y3Qga2VybmVsX3N0YXQgc3Q7Ci0gICBpZiAoc3lzX2ZzdGF0KGZkLCAmc3QpID09 IC0xIHx8IHN0LnN0X3NpemUgPCAwKSB7Ci0gI2Vsc2UKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j b21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlX3VuaXR0ZXN0LmNjIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29t bW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZV91bml0dGVzdC5jYwotaW5kZXggZmFkNTlmNDBj Li42MTY0OTZkNjcgMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21h cHBlZF9maWxlX3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5 X21hcHBlZF9maWxlX3VuaXR0ZXN0LmNjCi1AQCAtMTc2LDkgKzE3NiwxMCBAQCBURVNUX0YoTWVt b3J5TWFwcGVkRmlsZVRlc3QsIFJlbWFwQWZ0ZXJNYXApIHsKLSBURVNUX0YoTWVtb3J5TWFwcGVk RmlsZVRlc3QsIE1hcFdpdGhPZmZzZXQpIHsKLSAgIC8vIFB1dCBtb3JlIGRhdGEgaW4gdGhlIHRl c3QgZmlsZSB0aGlzIHRpbWUuIE9mZnNldHMgY2FuIG9ubHkgYmUKLSAgIC8vIGRvbmUgb24gcGFn ZSBib3VuZGFyaWVzLCBzbyB3ZSBuZWVkIGEgdHdvIHBhZ2UgZmlsZSB0byB0ZXN0IHRoaXMuCi0t ICBjb25zdCBpbnQgcGFnZV9zaXplID0gNDA5NjsKLS0gIGNoYXIgZGF0YTFbMiAqIHBhZ2Vfc2l6 ZV07Ci0tICBzaXplX3QgZGF0YTFfc2l6ZSA9IHNpemVvZihkYXRhMSk7Ci0rICBjb25zdCBpbnQg cGFnZV9zaXplID0gZ2V0cGFnZXNpemUoKTsKLSsgIGNoYXIgKmRhdGExID0gc3RhdGljX2Nhc3Q8 Y2hhcio+KG1hbGxvYygyICogcGFnZV9zaXplKSk7Ci0rICBFWFBFQ1RfVFJVRShkYXRhMSAhPSBO VUxMKTsKLSsgIHNpemVfdCBkYXRhMV9zaXplID0gKDIgKiBwYWdlX3NpemUpOwotICAgZm9yIChz aXplX3QgaSA9IDA7IGkgPCBkYXRhMV9zaXplOyArK2kpIHsKLSAgICAgZGF0YTFbaV0gPSBpICYg MHg3ZjsKLSAgIH0KLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbWVtb3J5X2FsbG9jYXRv cl91bml0dGVzdC5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9tZW1vcnlfYWxsb2NhdG9yX3VuaXR0ZXN0 LmNjCi1pbmRleCA0M2M4NjMxNGMuLjI3MzI1YjgxMyAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Nv bW1vbi9tZW1vcnlfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24v bWVtb3J5X2FsbG9jYXRvcl91bml0dGVzdC5jYwotQEAgLTU3LDggKzU3LDkgQEAgVEVTVChQYWdl QWxsb2NhdG9yVGVzdCwgTGFyZ2VPYmplY3QpIHsKLSAKLSAgIEVYUEVDVF9FUSgwVSwgYWxsb2Nh dG9yLnBhZ2VzX2FsbG9jYXRlZCgpKTsKLSAgIHVpbnQ4X3QgKnAgPSByZWludGVycHJldF9jYXN0 PHVpbnQ4X3QqPihhbGxvY2F0b3IuQWxsb2MoMTAwMDApKTsKLSsgIHVpbnQ2NF90IGV4cGVjdGVk X3BhZ2VzID0gMSArICgoMTAwMDAgLSAxKSAvIGdldHBhZ2VzaXplKCkpOwotICAgQVNTRVJUX0ZB TFNFKHAgPT0gTlVMTCk7Ci0tICBFWFBFQ1RfRVEoM1UsIGFsbG9jYXRvci5wYWdlc19hbGxvY2F0 ZWQoKSk7Ci0rICBFWFBFQ1RfRVEoZXhwZWN0ZWRfcGFnZXMsIGFsbG9jYXRvci5wYWdlc19hbGxv Y2F0ZWQoKSk7Ci0gICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgMTA7ICsraSkgewotICAgICB1 aW50OF90ICpwID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYWxsb2NhdG9yLkFsbG9jKGkp KTsKLSAgICAgQVNTRVJUX0ZBTFNFKHAgPT0gTlVMTCk7Ci1kaWZmIC0tZ2l0IHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv cHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X2xpbnV4LmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvcHJvY2Vzc29yL2V4 cGxvaXRhYmlsaXR5X2xpbnV4LmNjCi1pbmRleCBjY2M5ZjE0NTkuLmRlYmFlZDRkNiAxMDA2NDQK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV9saW51eC5jYwotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvcHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X2xpbnV4LmNjCi1AQCAtMjAyLDEyICsy MDIsMTQgQEAgYm9vbCBFeHBsb2l0YWJpbGl0eUxpbnV4OjpFbmRlZE9uSWxsZWdhbFdyaXRlKHVp bnQ2NF90IGluc3RydWN0aW9uX3B0cikgewotICAgLy8gQ2hlY2sgYXJjaGl0ZWN0dXJlIGFuZCBz ZXQgYXJjaGl0ZWN0dXJlIHZhcmlhYmxlIHRvIGNvcnJlc3BvbmRpbmcgZmxhZwotICAgLy8gaW4g b2JqZHVtcC4KLSAgIHN3aXRjaCAoY29udGV4dC0+R2V0Q29udGV4dENQVSgpKSB7Ci0rI2lmIGRl ZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KQotICAgICBjYXNlIE1EX0NPTlRFWFRf WDg2OgotICAgICAgIGFyY2hpdGVjdHVyZSA9ICJpMzg2IjsKLSAgICAgICBicmVhazsKLSAgICAg Y2FzZSBNRF9DT05URVhUX0FNRDY0OgotICAgICAgIGFyY2hpdGVjdHVyZSA9ICJpMzg2Ong4Ni02 NCI7Ci0gICAgICAgYnJlYWs7Ci0rI2VuZGlmCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgLy8gVW5z dXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLiBOb3RlIHRoYXQgQVJNIGFyY2hpdGVjdHVyZXMgYXJlIG5v dAotICAgICAgIC8vIHN1cHBvcnRlZCBiZWNhdXNlIG9iamR1bXAgZG9lcyBub3Qgc3VwcG9ydCBB Uk0uCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvcHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X3VuaXR0 ZXN0LmNjIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvcHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X3VuaXR0ZXN0LmNjCi1p bmRleCA1MjhlZTVmMjEuLjcyNzY0ZDZjMSAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nv ci9leHBsb2l0YWJpbGl0eV91bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvcHJvY2Vzc29yL2V4 cGxvaXRhYmlsaXR5X3VuaXR0ZXN0LmNjCi1AQCAtMTA0LDYgKzEwNCw4IEBAIEV4cGxvaXRhYmls aXR5Rm9yKGNvbnN0IHN0cmluZyYgZmlsZW5hbWUpIHsKLSB9Ci0gCi0gVEVTVChFeHBsb2l0YWJp bGl0eVRlc3QsIFRlc3RXaW5kb3dzRW5naW5lKSB7Ci0rLy8gVGhlIGZvbGxvd2luZyB0ZXN0cyBh cmUgb25seSBleGVjdXRhYmxlIG9uIGFuIHg4Ni1jbGFzcyBsaW51eCBtYWNoaW5lLgotKyNpZiAh ZGVmaW5lZChfV0lOMzIpICYmIChkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkp Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9ISUdILAotICAg ICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJhc2NpaV9yZWFkX2F2LmRtcCIpKTsKLSAgIEFT U0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCi1AQCAtMTM2LDkg KzEzOCwxMiBAQCBURVNUKEV4cGxvaXRhYmlsaXR5VGVzdCwgVGVzdFdpbmRvd3NFbmdpbmUpIHsK LSAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigicmVhZF9hdl9jbG9iYmVyX3dyaXRlLmRt cCIpKTsKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0xPVywK LSAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigicmVhZF9hdl9jb25kaXRpb25hbC5kbXAi KSk7Ci0rI2VuZGlmCi0gfQotIAotIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0TGludXhF bmdpbmUpIHsKLSsvLyBUaGUgZm9sbG93aW5nIHRlc3RzIGFyZSBvbmx5IGV4ZWN1dGFibGUgb24g YW4geDg2LWNsYXNzIGxpbnV4IG1hY2hpbmUuCi0rI2lmIGRlZmluZWQoX19pMzg2KSB8fCBkZWZp bmVkKF9feDg2XzY0KQotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJ VFlfSU5URVJFU1RJTkcsCi0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X251 bGxfcmVhZF9hdi5kbXAiKSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lU QUJJTElUWV9ISUdILAotQEAgLTE3MSw3ICsxNzYsOCBAQCBURVNUKEV4cGxvaXRhYmlsaXR5VGVz dCwgVGVzdExpbnV4RW5naW5lKSB7Ci0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxp bnV4X2V4ZWN1dGFibGVfaGVhcC5kbXAiKSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFk OjpFWFBMT0lUQUJJTElUWV9ISUdILAotICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJs aW51eF9qbXBfdG9fbW9kdWxlX25vdF9leGVfcmVnaW9uLmRtcCIpKTsKLS0jaWZuZGVmIF9XSU4z MgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmIChkZWZpbmVkKF9faTM4NikgfHwg ZGVmaW5lZChfX3g4Nl82NCkpCi0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lU QUJJTElUWV9ISUdILAotICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF93cml0 ZV90b19ub253cml0YWJsZV9tb2R1bGUuZG1wIikpOwotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVh a3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKLUBAIC0xODIsMTAgKzE4OCwxMCBAQCBURVNUKEV4 cGxvaXRhYmlsaXR5VGVzdCwgVGVzdExpbnV4RW5naW5lKSB7Ci0gICAgICAgICAgICAgRXhwbG9p dGFiaWxpdHlGb3IoImxpbnV4X3dyaXRlX3RvX291dHNpZGVfbW9kdWxlX3ZpYV9tYXRoLmRtcCIp KTsKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0lOVEVSRVNU SU5HLAotICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF93cml0ZV90b191bmRl cl80ay5kbXAiKSk7Ci0tI2VuZGlmICAvLyBfV0lOMzIKLSsjZW5kaWYgIC8vICFkZWZpbmVkKF9X SU4zMikgJiYgKCFkZWZpbmVkKF9faTM4NikgJiYgIWRlZmluZWQoX194ODZfNjQpKQotIH0KLSAK LS0jaWZuZGVmIF9XSU4zMgotKyNpZiAhZGVmaW5lZChfV0lOMzIpICYmIChkZWZpbmVkKF9faTM4 NikgfHwgZGVmaW5lZChfX3g4Nl82NCkpCi0gVEVTVChFeHBsb2l0YWJpbGl0eUxpbnV4VXRpbHNU ZXN0LCBEaXNhc3NlbWJsZUJ5dGVzVGVzdCkgewotICAgQVNTRVJUX0ZBTFNFKEV4cGxvaXRhYmls aXR5TGludXhUZXN0OjpEaXNhc3NlbWJsZUJ5dGVzKCIiLCBOVUxMLCA1LCBOVUxMKSk7Ci0gICB1 aW50OF90IGJ5dGVzWzZdID0gezB4YzcsIDB4MCwgMHg1LCAweDAsIDB4MCwgMHgwfTsKLUBAIC0z MDEsNiArMzA3LDcgQEAgVEVTVChFeHBsb2l0YWJpbGl0eUxpbnV4VXRpbHNUZXN0LCBDYWxjdWxh dGVBZGRyZXNzVGVzdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlX2FkZHJlc3MpKTsKLSB9Ci0tI2Vu ZGlmICAvLyBfV0lOMzIKLSsjZW5kaWYgIC8vICFkZWZpbmVkKF9XSU4zMikgJiYgKGRlZmluZWQo X19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkKLSsKLSAKLSB9ICAvLyBuYW1lc3BhY2UKLWRp ZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy90b29scy9saW51eC9tZDJjb3JlL21pbmlkdW1wLTItY29yZS5j YyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL3Rvb2xzL2xpbnV4L21kMmNvcmUvbWluaWR1bXAtMi1jb3JlLmNjCi1pbmRl eCA4Y2MwN2E2ZWYuLmY2NzU1NjkxNCAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Rvb2xzL2xpbnV4 L21kMmNvcmUvbWluaWR1bXAtMi1jb3JlLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy90b29scy9saW51eC9t ZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYwotQEAgLTc2LDYgKzc2LDggQEAKLSAgICNkZWZpbmUg RUxGX0FSQ0ggIEVNX01JUFMKLSAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQotICAgI2RlZmlu ZSBFTEZfQVJDSCAgRU1fQUFSQ0g2NAotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsg ICNkZWZpbmUgRUxGX0FSQ0ggIEVNX1BQQzY0Ci0gI2VuZGlmCi0gCi0gI2lmIGRlZmluZWQoX19h cm1fXykKLUBAIC04Niw2ICs4OCw4IEBAIHR5cGVkZWYgdXNlcl9yZWdzIHVzZXJfcmVnc19zdHJ1 Y3Q7Ci0gI2VsaWYgZGVmaW5lZCAoX19taXBzX18pCi0gLy8gVGhpcyBmaWxlLWxvY2FsIHR5cGVk ZWYgc2ltcGxpZmllcyB0aGUgc291cmNlIGNvZGUuCi0gdHlwZWRlZiBncmVnc2V0X3QgdXNlcl9y ZWdzX3N0cnVjdDsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rdHlwZWRlZiBzdHJ1 Y3QgcHRfcmVncyB1c2VyX3JlZ3Nfc3RydWN0OwotICNlbmRpZgotIAotIHVzaW5nIGdvb2dsZV9i cmVha3BhZDo6TURUeXBlSGVscGVyOwotQEAgLTMyMCw2ICszMjQsOSBAQCBzdHJ1Y3QgQ3Jhc2hl ZFByb2Nlc3MgewotICNlbmRpZgotICNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQotICAgICB1c2Vy X2Zwc2ltZF9zdHJ1Y3QgZnByZWdzOwotKyNlbmRpZgotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0rICAgIG1jb250ZXh0X3QgbWNvbnRleHQ7Ci0gI2VuZGlmCi0gICAgIHVpbnRwdHJfdCBz dGFja19hZGRyOwotICAgICBjb25zdCB1aW50OF90KiBzdGFjazsKLUBAIC01MjMsNiArNTMwLDM4 IEBAIFBhcnNlVGhyZWFkUmVnaXN0ZXJzKENyYXNoZWRQcm9jZXNzOjpUaHJlYWQqIHRocmVhZCwK LSAgIHRocmVhZC0+bWNvbnRleHQuZnBjX2VpciA9IHJhd3JlZ3MtPmZsb2F0X3NhdmUuZmlyOwot ICNlbmRpZgotIH0KLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rc3RhdGljIHZvaWQK LStQYXJzZVRocmVhZFJlZ2lzdGVycyhDcmFzaGVkUHJvY2Vzczo6VGhyZWFkKiB0aHJlYWQsCi0r ICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWluaWR1bXBNZW1vcnlSYW5nZSYgcmFuZ2UpIHsK LSsgIGNvbnN0IE1EUmF3Q29udGV4dFBQQzY0KiByYXdyZWdzID0gcmFuZ2UuR2V0RGF0YTxNRFJh d0NvbnRleHRQUEM2ND4oMCk7Ci0rCi0rICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0NPTlRFWFRf UFBDNjRfR1BSX0NPVU5UOyBpKyspCi0rICAgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tpXSA9 IHJhd3JlZ3MtPmdwcltpXTsKLSsKLSsgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9MTktd ID0gcmF3cmVncy0+bHI7Ci0rICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfTklQXSA9IHJh d3JlZ3MtPnNycjA7Ci0rICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfTVNSXSA9IHJhd3Jl Z3MtPnNycjE7Ci0rICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfQ0NSXSA9IHJhd3JlZ3Mt PmNyOwotKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX1hFUl0gPSByYXdyZWdzLT54ZXI7 Ci0rICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXSA9IHJhd3JlZ3MtPmN0cjsKLSsg IHRocmVhZC0+bWNvbnRleHQudl9yZWdzLT52cnNhdmUgPSByYXdyZWdzLT52cnNhdmU7Ci0rCi0r ICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBDX0ZQUl9DT1VOVDsg aSsrKQotKyAgICAgIHRocmVhZC0+bWNvbnRleHQuZnBfcmVnc1tpXSA9IHJhd3JlZ3MtPmZsb2F0 X3NhdmUuZnByZWdzW2ldOwotKwotKyAgdGhyZWFkLT5tY29udGV4dC5mcF9yZWdzW05GUFJFRy0x XSA9IHJhd3JlZ3MtPmZsb2F0X3NhdmUuZnBzY3I7Ci0rCi0rICBmb3IgKGludCBpID0gMDsgaSA8 IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKSB7Ci0rICAgICAgdGhyZWFkLT5t Y29udGV4dC52X3JlZ3MtPnZycmVnc1tpXVswXSA9IHJhd3JlZ3MtPnZlY3Rvcl9zYXZlLnNhdmVf dnJbaV0uaGlnaCA+PiAzMjsKLSsgICAgICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnJyZWdz W2ldWzFdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXS5oaWdoOwotKyAgICAgIHRo cmVhZC0+bWNvbnRleHQudl9yZWdzLT52cnJlZ3NbaV1bMl0gPSByYXdyZWdzLT52ZWN0b3Jfc2F2 ZS5zYXZlX3ZyW2ldLmxvdyA+PiAzMjsKLSsgICAgICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+ dnJyZWdzW2ldWzNdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXS5sb3c7Ci0rICB9 Ci0rCi0rICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnNjci52c2NyX3dvcmQgPSByYXdyZWdz LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IubG93ICYgMHhGRkZGRkZGRjsKLSt9Ci0rCi0gI2Vsc2UK LSAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0g eWV0IgotICNlbmRpZgotQEAgLTYxMSw2ICs2NTAsMTIgQEAgUGFyc2VTeXN0ZW1JbmZvKGNvbnN0 IE9wdGlvbnMmIG9wdGlvbnMsIENyYXNoZWRQcm9jZXNzKiBjcmFzaGluZm8sCi0gIyBlbHNlCi0g IyAgZXJyb3IgIlRoaXMgbWlwcyBBQkkgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgKG4zMiki Ci0gIyBlbmRpZgotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGlmIChzeXNpbmZv LT5wcm9jZXNzb3JfYXJjaGl0ZWN0dXJlICE9IE1EX0NQVV9BUkNISVRFQ1RVUkVfUFBDNjQpIHsK LSsgICAgZnByaW50ZihzdGRlcnIsCi0rICAgICAgICAgICAgIlRoaXMgdmVyc2lvbiBvZiBtaW5p ZHVtcC0yLWNvcmUgb25seSBzdXBwb3J0cyBQUEM2NC5cbiIpOwotKyAgICBleGl0KDEpOwotKyAg fQotICNlbHNlCi0gI2Vycm9yICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3Vy IHBsYXRmb3JtIHlldCIKLSAjZW5kaWYKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlk dW1wX21pc2NfaW5mb193cml0ZXIuY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX21pc2NfaW5m b193cml0ZXIuY2MKLWluZGV4IGMxZTI0ODkyZi4uZWUxOGQzMzE1IDEwMDY0NAotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9taW5pZHVtcC9taW5pZHVtcF9taXNjX2luZm9fd3JpdGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlk dW1wL21pbmlkdW1wX21pc2NfaW5mb193cml0ZXIuY2MKLUBAIC0xMjIsNiArMTIyLDggQEAgc3Rk OjpzdHJpbmcgTWluaWR1bXBNaXNjSW5mb0RlYnVnQnVpbGRTdHJpbmcoKSB7Ci0gICBzdGF0aWMg Y29uc3RleHByIGNoYXIga0NQVVtdID0gImFybSI7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9B Uk02NCkKLSAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrQ1BVW10gPSAiYXJtNjQiOwotKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0rICBzdGF0aWMgY29uc3RleHByIGNoYXIga0NQVVtd ID0gInBwYzY0IjsKLSAjZWxzZQotICNlcnJvciBkZWZpbmUga0NQVSBmb3IgdGhpcyBDUFUKLSAj ZW5kaWYKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCi1pbmRl eCBlODFlN2I0MjAuLjUxMWE1NGU0ZSAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xzcy9saW51eF9z eXNjYWxsX3N1cHBvcnQuaAotQEAgLTM5MTQsNyArMzkxNCw3IEBAIHN0cnVjdCBrZXJuZWxfc3Rh dGZzIHsKLSAgICAgICBMU1NfUkVHKDIsIGJ1Zik7Ci0gICAgICAgTFNTX0JPRFkodm9pZCosIG1t YXAyLCAiMCIoX19yMikpOwotICAgICB9Ci0tI2Vsc2UKLSsjZWxpZiAhZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKSAvKiBwcGM2NCBkb2Vzbid0IGhhdmUgbW1hcDIgKi8KLSAgICAgI2RlZmluZSBfX05S X19tbWFwMiBfX05SX21tYXAyCi0gICAgIExTU19JTkxJTkUgX3N5c2NhbGw2KHZvaWQqLCBfbW1h cDIsICAgICAgICAgICAgdm9pZCosIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf dCwgICAgICAgICAgICAgICAgICAgbCwgaW50LCAgICAgICAgICAgICAgIHAsCi1AQCAtNDA0NSw3 ICs0MDQ1LDcgQEAgc3RydWN0IGtlcm5lbF9zdGF0ZnMgewotICAgI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSAgICAgICBkZWZpbmVkKF9fQVJNX0FSQ0hfM19fKSB8fCBkZWZpbmVkKF9fQVJNX0VBQklf XykgfHwgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAoZGVmaW5lZChfX21pcHNfXykgJiYg X01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkkzMikgfHwgICAgICAgICAgICAgICAgICAgXAotLSAg ICAgIGRlZmluZWQoX19QUENfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSsgICAgIChkZWZpbmVkKF9fUFBDX18pICYmICFkZWZpbmVk KF9fcG93ZXJwYzY0X18pKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotICAgICAgKGRlZmluZWQoX19zMzkwX18pICYmICFkZWZpbmVkKF9f czM5MHhfXykpCi0gICAgIC8qIE9uIHRoZXNlIGFyY2hpdGVjdHVyZXMsIGltcGxlbWVudCBtbWFw KCkgd2l0aCBtbWFwMigpLiAqLwotICAgICBMU1NfSU5MSU5FIHZvaWQqIExTU19OQU1FKG1tYXAp KHZvaWQgKnMsIHNpemVfdCBsLCBpbnQgcCwgaW50IGYsIGludCBkLAotZGlmZiAtLWdpdCBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3Bh cnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFnZV9hbGxvY2F0b3IuaCBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJk X3BhcnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFnZV9hbGxvY2F0b3Iu aAotaW5kZXggYWVlMjUzMjQ4Li4yNWVlNDAxZTggMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9wYXJ0eS9iYXNlL2Fs bG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhZ2VfYWxsb2NhdG9yLmgKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5 L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFnZV9hbGxvY2F0b3IuaAotQEAg LTE2LDcgKzE2LDcgQEAKLSBuYW1lc3BhY2UgcGRmaXVtIHsKLSBuYW1lc3BhY2UgYmFzZSB7Ci0g Ci0tI2lmIGRlZmluZWQoT1NfV0lOKQotKyNpZiBkZWZpbmVkKE9TX1dJTikgfHwgZGVmaW5lZChB UkNIX0NQVV9QUEM2NCkKLSBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYWdlQWxsb2NhdGlvbkdyYW51 bGFyaXR5U2hpZnQgPSAxNjsgIC8vIDY0S0IKLSAjZWxpZiBkZWZpbmVkKF9NSVBTX0FSQ0hfTE9P TkdTT04pCi0gc3RhdGljIGNvbnN0IHNpemVfdCBrUGFnZUFsbG9jYXRpb25HcmFudWxhcml0eVNo aWZ0ID0gMTQ7ICAvLyAxNktCCi1AQCAtMzUsNiArMzUsMTAgQEAgc3RhdGljIGNvbnN0IHNpemVf dCBrUGFnZUFsbG9jYXRpb25HcmFudWxhcml0eUJhc2VNYXNrID0KLSAvLyBMb29uZ3NvbiBoYXZl IDE2Mzg0IHNpemVkIHN5c3RlbSBwYWdlcy4KLSAjaWYgZGVmaW5lZChfTUlQU19BUkNIX0xPT05H U09OKQotIHN0YXRpYyBjb25zdCBzaXplX3Qga1N5c3RlbVBhZ2VTaXplID0gMTYzODQ7Ci0rI2Vs aWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSsvLyBUT0RPOiBtb2Rlcm4gcHBjNjQgY2FuIGRv IDRrIGFuZCA2NGsgcGFnZSBzaXplcwotKy8vIGZvciBub3csIDY0ayBpcyBhc3N1bWVkCi0rc3Rh dGljIGNvbnN0ZXhwciBzaXplX3Qga1N5c3RlbVBhZ2VTaXplID0gNjU1MzY7Ci0gI2Vsc2UKLSBz dGF0aWMgY29uc3Qgc2l6ZV90IGtTeXN0ZW1QYWdlU2l6ZSA9IDQwOTY7Ci0gI2VuZGlmCi1kaWZm IC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZGZp dW0vdGhpcmRfcGFydHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYXJ0aXRp b25fYWxsb2MuaCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv cGRmaXVtL3RoaXJkX3BhcnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFy dGl0aW9uX2FsbG9jLmgKLWluZGV4IDdlODQxNWM3Ni4uOTk4ZWI2ZTE0IDEwMDY0NAotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZGZpdW0vdGhpcmRf cGFydHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2Mu aAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZGZp dW0vdGhpcmRfcGFydHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9wYXJ0aXRp b25fYWxsb2MuaAotQEAgLTk3LDYgKzk3LDggQEAgc3RhdGljIGNvbnN0IHNpemVfdCBrQnVja2V0 U2hpZnQgPSAoa0FsbG9jYXRpb25HcmFudWxhcml0eSA9PSA4KSA/IDMgOiAyOwotIC8vIGFnYWlu c3QgdGhlIGVuZCBvZiBhIHN5c3RlbSBwYWdlLgotICNpZiBkZWZpbmVkKF9NSVBTX0FSQ0hfTE9P TkdTT04pCi0gc3RhdGljIGNvbnN0IHNpemVfdCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0gMTY7ICAv LyA2NEtCCi0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLStzdGF0aWMgY29uc3Qgc2l6 ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAxODsgIC8vIDI1NktCCi0gI2Vsc2UKLSBzdGF0aWMg Y29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAxNDsgIC8vIDE2S0IKLSAjZW5kaWYK LWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L3BkZml1bS90aGlyZF9wYXJ0eS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3Nw aW5fbG9jay5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv cGRmaXVtL3RoaXJkX3BhcnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3Bp bl9sb2NrLmNjCi1pbmRleCA4ZDcxNTFhOGIuLjU5NmM1ZTFiOSAxMDA2NDQKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5 L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3Bpbl9sb2NrLmNjCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9w YXJ0eS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NwaW5fbG9jay5jYwotQEAg LTM3LDYgKzM3LDggQEAKLSAvLyBEb24ndCBib3RoZXIgZG9pbmcgdXNpbmcgLndvcmQgaGVyZSBz aW5jZSByMiBpcyB0aGUgbG93ZXN0IHN1cHBvcnRlZCBtaXBzNjQKLSAvLyB0aGF0IENocm9taXVt IHN1cHBvcnRzLgotICNkZWZpbmUgWUlFTERfUFJPQ0VTU09SIF9fYXNtX18gX192b2xhdGlsZV9f KCJwYXVzZSIpCi0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rI2RlZmlu ZSBZSUVMRF9QUk9DRVNTT1IgX19hc21fXyBfX3ZvbGF0aWxlX18oIm9yIDMxLDMxLDMxIikKLSAj ZW5kaWYKLSAjZW5kaWYKLSAKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L3NxbGl0ZS9hbWFsZ2FtYXRpb24vc3FsaXRlMy5jIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9zcWxpdGUvYW1hbGdhbWF0aW9u L3NxbGl0ZTMuYwotaW5kZXggYzUyODNkZDAyLi42NzIwNjg5NzMgMTAwNjQ0Ci0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NxbGl0ZS9hbWFsZ2FtYXRp b24vc3FsaXRlMy5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L3NxbGl0ZS9hbWFsZ2FtYXRpb24vc3FsaXRlMy5jCi1AQCAtMTI5MjAsNyArMTI5MjAs OCBAQCB0eXBlZGVmIElOVDE2X1RZUEUgTG9nRXN0OwotICMgaWYgZGVmaW5lZChpMzg2KSAgICAg fHwgZGVmaW5lZChfX2kzODZfXykgICB8fCBkZWZpbmVkKF9NX0lYODYpIHx8ICAgIFwKLSAgICAg IGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfTV9Y NjQpICB8fCAgICBcCi0gICAgICBkZWZpbmVkKF9NX0FNRDY0KSB8fCBkZWZpbmVkKF9NX0FSTSkg ICAgIHx8IGRlZmluZWQoX194ODYpICAgfHwgICAgXAotLSAgICAgZGVmaW5lZChfX2FybV9fKQot KyAgICAgZGVmaW5lZChfX2FybV9fKSB8fCAoZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiBcCi0r ICAgICAoX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18pKQotICMgICBk ZWZpbmUgU1FMSVRFX0JZVEVPUkRFUiAgICAxMjM0Ci0gIyBlbGlmIGRlZmluZWQoc3BhcmMpICAg IHx8IGRlZmluZWQoX19wcGNfXykKLSAjICAgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgNDMy MQotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvc3FsaXRlL3NyYy9zcmMvc3FsaXRlSW50LmggcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvc3JjL3NxbGl0ZUludC5oCi1pbmRleCBkMTIx NDhkNDIuLjM5ZWZhODBkNCAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9zcmMvc3FsaXRlSW50LmgKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9zcmMvc3Fs aXRlSW50LmgKLUBAIC04MjUsNyArODI1LDggQEAgdHlwZWRlZiBJTlQxNl9UWVBFIExvZ0VzdDsK LSAjIGlmIGRlZmluZWQoaTM4NikgICAgIHx8IGRlZmluZWQoX19pMzg2X18pICAgfHwgZGVmaW5l ZChfTV9JWDg2KSB8fCAgICBcCi0gICAgICBkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9f eDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KSAgfHwgICAgXAotICAgICAgZGVmaW5lZChfTV9B TUQ2NCkgfHwgZGVmaW5lZChfTV9BUk0pICAgICB8fCBkZWZpbmVkKF9feDg2KSAgIHx8ICAgIFwK LS0gICAgIGRlZmluZWQoX19hcm1fXykKLSsgICAgIGRlZmluZWQoX19hcm1fXykgfHwgKGRlZmlu ZWQoX19wb3dlcnBjNjRfXykgJiYgXAotKyAgICAgKF9fQllURV9PUkRFUl9fID09IF9fT1JERVJf TElUVExFX0VORElBTl9fKSkKLSAjICAgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgMTIzNAot ICMgZWxpZiBkZWZpbmVkKHNwYXJjKSAgICB8fCBkZWZpbmVkKF9fcHBjX18pCi0gIyAgIGRlZmlu ZSBTUUxJVEVfQllURU9SREVSICAgIDQzMjEKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy ZS9kaWZmZXJfYmxvY2suY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kaWZmZXJfYmxvY2suY2MKLWlu ZGV4IDMzMTUyNDcyMy4uZjEwMzk0MDQzIDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv ZGlmZmVyX2Jsb2NrLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kaWZmZXJfYmxvY2suY2MK LUBAIC0zMCwxMSArMzAsNyBAQCBib29sIFZlY3RvckRpZmZlcmVuY2UoY29uc3QgdWludDhfdCog aW1hZ2UxLCBjb25zdCB1aW50OF90KiBpbWFnZTIpIHsKLSAgIHN0YXRpYyBib29sICgqZGlmZl9w cm9jKShjb25zdCB1aW50OF90KiwgY29uc3QgdWludDhfdCopID0gbnVsbHB0cjsKLSAKLSAgIGlm ICghZGlmZl9wcm9jKSB7Ci0tI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNX0ZBTUlMWSkgfHwg ZGVmaW5lZChXRUJSVENfQVJDSF9NSVBTX0ZBTUlMWSkKLS0gICAgLy8gRm9yIEFSTSBhbmQgTUlQ UyBwcm9jZXNzb3JzLCBhbHdheXMgdXNlIEMgdmVyc2lvbi4KLS0gICAgLy8gVE9ETyhoY2xhbSk6 IEltcGxlbWVudCBhIE5FT04gdmVyc2lvbi4KLS0gICAgZGlmZl9wcm9jID0gJlZlY3RvckRpZmZl cmVuY2VfQzsKLS0jZWxzZQotKyNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX1g4Nl9GQU1JTFkpCi0g ICAgIGJvb2wgaGF2ZV9zc2UyID0gV2ViUnRjX0dldENQVUluZm8oa1NTRTIpICE9IDA7Ci0gICAg IC8vIEZvciB4ODYgcHJvY2Vzc29ycywgY2hlY2sgaWYgU1NFMiBpcyBzdXBwb3J0ZWQuCi0gICAg IGlmIChoYXZlX3NzZTIgJiYga0Jsb2NrU2l6ZSA9PSAzMikgewotQEAgLTQ0LDYgKzQwLDEwIEBA IGJvb2wgVmVjdG9yRGlmZmVyZW5jZShjb25zdCB1aW50OF90KiBpbWFnZTEsIGNvbnN0IHVpbnQ4 X3QqIGltYWdlMikgewotICAgICB9IGVsc2UgewotICAgICAgIGRpZmZfcHJvYyA9ICZWZWN0b3JE aWZmZXJlbmNlX0M7Ci0gICAgIH0KLSsjZWxzZQotKyAgICAvLyBGb3Igb3RoZXIgcHJvY2Vzc29y cywgYWx3YXlzIHVzZSBDIHZlcnNpb24uCi0rICAgIC8vIFRPRE8oaGNsYW0pOiBJbXBsZW1lbnQg YSBORU9OIHZlcnNpb24uCi0rICAgIGRpZmZfcHJvYyA9ICZWZWN0b3JEaWZmZXJlbmNlX0M7Ci0g I2VuZGlmCi0gICB9Ci0gCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvdHlwZWRlZnMuaCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3R5cGVkZWZzLmgKLWluZGV4IDcyN2JmODNk ZS4uZDNhMmJhNmE0IDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS93ZWJydGMvdHlwZWRlZnMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvdHlwZWRlZnMuaAotQEAgLTUwLDYgKzUw LDE4IEBACi0gI2VsaWYgZGVmaW5lZChfX01JUFNFQl9fKQotICNkZWZpbmUgV0VCUlRDX0FSQ0hf TUlQU19GQU1JTFkKLSAjZGVmaW5lIFdFQlJUQ19BUkNIX0JJR19FTkRJQU4KLSsjZWxpZiBkZWZp bmVkKF9fUFBDX18pCi0rI2RlZmluZSBXRUJSVENfQVJDSF9QUENfRkFNSUxZCi0rI2lmIF9fQllU RV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fCi0rI2RlZmluZSBXRUJSVENfQVJD SF9MSVRUTEVfRU5ESUFOCi0rI2Vsc2UKLSsjZGVmaW5lIFdFQlJUQ19BUkNIX0JJR19FTkRJQU4K LSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfX0xQNjRfXykKLSsjZGVmaW5lIFdFQlJUQ19BUkNIXzY0 X0JJVFMKLSsjZWxzZQotKyNkZWZpbmUgV0VCUlRDX0FSQ0hfMzJfQklUUwotKyNlbmRpZgotICNl bHNlCi0gI2Vycm9yIFBsZWFzZSBhZGQgc3VwcG9ydCBmb3IgeW91ciBhcmNoaXRlY3R1cmUgaW4g dHlwZWRlZnMuaAotICNlbmRpZgotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3dlYnJ0Yy5nbmkgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy93ZWJydGMuZ25pCi1pbmRleCBmYjFk NzdjYWQuLjIyZmM3NjY5NyAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3dlYnJ0Yy5nbmkKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3dlYnJ0Yy5nbmkKLUBAIC0xNzcs NyArMTc3LDcgQEAgZGVjbGFyZV9hcmdzKCkgewotICAgfQotIAotICAgaWYgKCFpc19pb3MgJiYg KGN1cnJlbnRfY3B1ICE9ICJhcm0iIHx8IGFybV92ZXJzaW9uID49IDcpICYmCi0tICAgICAgY3Vy cmVudF9jcHUgIT0gIm1pcHM2NGVsIiAmJiAhYnVpbGRfd2l0aF9tb3ppbGxhKSB7Ci0rICAgICAg Y3VycmVudF9jcHUgIT0gIm1pcHM2NGVsIiAmJiBjdXJyZW50X2NwdSAhPSAicHBjNjQiICYmICFi dWlsZF93aXRoX21vemlsbGEpIHsKLSAgICAgcnRjX3VzZV9vcGVubWF4X2RsID0gdHJ1ZQotICAg fSBlbHNlIHsKLSAgICAgcnRjX3VzZV9vcGVubWF4X2RsID0gZmFsc2UKLWRpZmYgLS1naXQgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L0JVSUxELmduIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9CVUlMRC5nbgotaW5kZXggMmY0MjAyYTFiLi5jY2UzMzli ODggMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L0JVSUxE LmduCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L0JVSUxELmduCi1A QCAtNDUwLDYgKzQ1MCwxMiBAQCBjb25maWcoInRvb2xjaGFpbiIpIHsKLSAgICAgfQotICAgICBp ZiAoaG9zdF9ieXRlb3JkZXIgPT0gImxpdHRsZSIpIHsKLSAgICAgICBkZWZpbmVzICs9IFsgIlY4 X1RBUkdFVF9BUkNIX1BQQ19MRSIgXQotKyAgICAgICAgY2ZsYWdzICs9IFsKLSsgICAgICAgICMg RW5hYmxlIHVzYWdlIG9mIEFsdGlWZWMsIFZTWCwgYW5kIG90aGVyIFBPV0VSOCBhbmQgaGlnaGVy IGZlYXR1cmVzCi0rICAgICAgICAiLW1jcHU9cG93ZXI4IiwKLSsgICAgICAgICItbWFsdGl2ZWMi LAotKyAgICAgICAgIi1tdnN4IiwKLSsgICAgICBdCi0gICAgIH0gZWxzZSBpZiAoaG9zdF9ieXRl b3JkZXIgPT0gImJpZyIpIHsKLSAgICAgICBkZWZpbmVzICs9IFsgIlY4X1RBUkdFVF9BUkNIX1BQ Q19CRSIgXQotICAgICAgIGlmIChjdXJyZW50X29zID09ICJhaXgiKSB7Ci1kaWZmIC0tZ2l0IHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYnVpbHRpbnMvcHBjL2J1aWx0 aW5zLXBwYy5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL2J1aWx0 aW5zL3BwYy9idWlsdGlucy1wcGMuY2MKLWluZGV4IDM0ZGE3MGZmMC4uYTg3YWMxOTZhIDEwMDY0 NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYnVpbHRpbnMv cHBjL2J1aWx0aW5zLXBwYy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS92OC9zcmMvYnVpbHRpbnMvcHBjL2J1aWx0aW5zLXBwYy5jYwotQEAgLTYsNiArNiw3IEBACi0g Ci0gI2luY2x1ZGUgInNyYy9hc3NlbWJsZXItaW5sLmgiCi0gI2luY2x1ZGUgInNyYy9jb2RlLXN0 dWJzLmgiCi0rI2luY2x1ZGUgInNyYy9jb3VudGVycy5oIgotICNpbmNsdWRlICJzcmMvZGVidWcv ZGVidWcuaCIKLSAjaW5jbHVkZSAic3JjL2Rlb3B0aW1pemVyLmgiCi0gI2luY2x1ZGUgInNyYy9m cmFtZS1jb25zdGFudHMuaCIKLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3Y4L3NyYy9idWlsdGlucy9zMzkwL2J1aWx0aW5zLXMzOTAuY2MgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9idWlsdGlucy9zMzkwL2J1aWx0aW5zLXMzOTAu Y2MKLWluZGV4IDAyMGIwNGI5MS4uNWFjN2U1NjU5IDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYnVpbHRpbnMvczM5MC9idWlsdGlucy1zMzkwLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9idWlsdGlucy9z MzkwL2J1aWx0aW5zLXMzOTAuY2MKLUBAIC02LDYgKzYsNyBAQAotIAotICNpbmNsdWRlICJzcmMv YXNzZW1ibGVyLWlubC5oIgotICNpbmNsdWRlICJzcmMvY29kZS1zdHVicy5oIgotKyNpbmNsdWRl ICJzcmMvY291bnRlcnMuaCIKLSAjaW5jbHVkZSAic3JjL2RlYnVnL2RlYnVnLmgiCi0gI2luY2x1 ZGUgInNyYy9kZW9wdGltaXplci5oIgotICNpbmNsdWRlICJzcmMvZnJhbWUtY29uc3RhbnRzLmgi Ci1kaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvcHBj L21hY3JvLWFzc2VtYmxlci1wcGMuY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3Y4L3NyYy9wcGMvbWFjcm8tYXNzZW1ibGVyLXBwYy5jYwotaW5kZXggOGQ3YzNkMDViLi5iZTgz MjI5YTggMTAwNjQ0Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3Ny Yy9wcGMvbWFjcm8tYXNzZW1ibGVyLXBwYy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS92OC9zcmMvcHBjL21hY3JvLWFzc2VtYmxlci1wcGMuY2MKLUBAIC0xMiw2ICsx Miw3IEBACi0gI2luY2x1ZGUgInNyYy9ib290c3RyYXBwZXIuaCIKLSAjaW5jbHVkZSAic3JjL2Nh bGxhYmxlLmgiCi0gI2luY2x1ZGUgInNyYy9jb2RlLXN0dWJzLmgiCi0rI2luY2x1ZGUgInNyYy9j b3VudGVycy5oIgotICNpbmNsdWRlICJzcmMvZGVidWcvZGVidWcuaCIKLSAjaW5jbHVkZSAic3Jj L2V4dGVybmFsLXJlZmVyZW5jZS10YWJsZS5oIgotICNpbmNsdWRlICJzcmMvZnJhbWVzLWlubC5o IgotZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL3Mz OTAvbWFjcm8tYXNzZW1ibGVyLXMzOTAuY2MgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3Y4L3NyYy9zMzkwL21hY3JvLWFzc2VtYmxlci1zMzkwLmNjCi1pbmRleCBmZTI0ODg0Mzcu LmRlY2JiYjQzYSAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v djgvc3JjL3MzOTAvbWFjcm8tYXNzZW1ibGVyLXMzOTAuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL3MzOTAvbWFjcm8tYXNzZW1ibGVyLXMzOTAuY2MKLUBA IC0xMiw2ICsxMiw3IEBACi0gI2luY2x1ZGUgInNyYy9ib290c3RyYXBwZXIuaCIKLSAjaW5jbHVk ZSAic3JjL2NhbGxhYmxlLmgiCi0gI2luY2x1ZGUgInNyYy9jb2RlLXN0dWJzLmgiCi0rI2luY2x1 ZGUgInNyYy9jb3VudGVycy5oIgotICNpbmNsdWRlICJzcmMvZGVidWcvZGVidWcuaCIKLSAjaW5j bHVkZSAic3JjL2V4dGVybmFsLXJlZmVyZW5jZS10YWJsZS5oIgotICNpbmNsdWRlICJzcmMvZnJh bWVzLWlubC5oIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy9xdHdlYmVuZ2luZS1l bmFibGUtcHBjNjQucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzL3F0d2ViZW5naW5lLWVuYWJs ZS1wcGM2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVlNjQ1NjEzOWYu LjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvcXR3ZWJlbmdpbmUtZW5hYmxl LXBwYzY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotVGhpcyBhZGRzIHRo ZSBuZWNlc3NhcnkgYml0cyB0byBtYWtlIHF0IGF0dGVtcHQgYnVpbGRpbmcgd2ViZW5naW5lIG9u IHBwYzY0LgotU2luY2UgdGhlIHBhdGNoIGlzIG9ubHkgc3VmZmljaWVudCBmb3IgcHBjNjRsZSwg a2VlcCBpdCBjb21tZW50ZWQgb3V0IGFuZAotbGV0IHRoZSBwYWNrYWdpbmcgdGVtcGxhdGUgcmVt b3ZlIHRoZSBjb21tZW50IGxhdGVyLCBhcyB0aGVyZSBpcyBubyBnb29kCi13YXkgdG8gY2hlY2sg ZW5kaWFubmVzcyBkaXJlY3RseSBpbiB0aGUgZmlsZS4KLQotV2UgYWxzbyBoYXZlIHRvIGRpc2Fi bGUganVtYm8gYnVpbGQgZm9yIHRoZSB0aW1lIGJlaW5nIGJlY2F1c2UgaXQgcmVzdWx0cwotaW4g YnVpbGQgZmFpbHVyZXMgb3RoZXJ3aXNlLCBtb3N0IGxpa2VseSBiZWNhdXNlIG9mIGNvbXBpbGVy IG1pc2NvbXBpbGluZwotdGhlIGNvZGUuCi0tLS0gcXR3ZWJlbmdpbmUvbWtzcGVjcy9mZWF0dXJl cy9mdW5jdGlvbnMucHJmCi0rKysgcXR3ZWJlbmdpbmUvbWtzcGVjcy9mZWF0dXJlcy9mdW5jdGlv bnMucHJmCi1AQCAtOTUsNiArOTUsNyBAQAotICAgICBjb250YWlucyhxdEFyY2gsICJhcm02NCIp OiByZXR1cm4oYXJtNjQpCi0gICAgIGNvbnRhaW5zKHF0QXJjaCwgIm1pcHMiKTogcmV0dXJuKG1p cHNlbCkKLSAgICAgY29udGFpbnMocXRBcmNoLCAibWlwczY0Iik6IHJldHVybihtaXBzNjRlbCkK LSsgICAgY29udGFpbnMocXRBcmNoLCAicG93ZXI2NCIpOiByZXR1cm4ocHBjNjQpCi0gICAgIHJl dHVybih1bmtub3duKQotIH0KLSAKLS0tLSBxdHdlYmVuZ2luZS9ta3NwZWNzL2ZlYXR1cmVzL3Bs YXRmb3JtLnByZgotKysrIHF0d2ViZW5naW5lL21rc3BlY3MvZmVhdHVyZXMvcGxhdGZvcm0ucHJm Ci1AQCAtODIsNiArODIsNyBAQAotICAgICBjb250YWlucyhRVF9BUkNILCAiYXJtIil8Y29udGFp bnMoUVRfQVJDSCwgImFybTY0Iik6IHJldHVybih0cnVlKQotICAgICBjb250YWlucyhRVF9BUkNI LCAibWlwcyIpOiByZXR1cm4odHJ1ZSkKLSAjICAgICBjb250YWlucyhRVF9BUkNILCAibWlwczY0 Iik6IHJldHVybih0cnVlKQotKyNwcGM2NGxlICAgIGNvbnRhaW5zKFFUX0FSQ0gsICJwb3dlcjY0 Iik6IHJldHVybih0cnVlKQotIAotICAgICBza2lwQnVpbGQoIlF0V2ViRW5naW5lIGNhbiBvbmx5 IGJlIGJ1aWx0IGZvciB4ODYsIHg4Ni02NCwgQVJNLCBBYXJjaDY0LCBhbmQgTUlQU2VsIGFyY2hp dGVjdHVyZXMuIikKLSAgICAgcmV0dXJuKGZhbHNlKQotLS0tIHF0d2ViZW5naW5lL3NyYy9jb3Jl L2NvbmZpZy9saW51eC5wcmkKLSsrKyBxdHdlYmVuZ2luZS9zcmMvY29yZS9jb25maWcvbGludXgu cHJpCi1AQCAtOTAsNiArOTAsMTAgQEAKLSAgICAgZWxzZTogY29udGFpbnMoUU1BS0VfQ0ZMQUdT LCAiLW1kc3AiKTogZ25fYXJncyArPSBtaXBzX2RzcF9yZXY9MQotIH0KLSAKLStjb250YWlucyhR VF9BUkNILCAicG93ZXI2NCIpIHsKLSsgICAgZ25fYXJncyArPSB1c2VfanVtYm9fYnVpbGQ9ZmFs c2UKLSt9Ci0rCi0gaG9zdF9idWlsZCB7Ci0gICAgIGduX2FyZ3MgKz0gY3VzdG9tX3Rvb2xjaGFp bj1cIiQkUVRXRUJFTkdJTkVfT1VUX1JPT1Qvc3JjL3Rvb2xjaGFpbjpob3N0XCIKLSAgICAgR05f SE9TVF9DUFUgPSAkJGduQXJjaCgkJFFUX0FSQ0gpCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS90 ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCmluZGV4IDhkMTcwNTM1ZTg5Li5jODQ4OTgy OTZlYiAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUnCiBwa2du YW1lPXF0NQotdmVyc2lvbj01LjExLjMKLXJldmlzaW9uPTgKK3ZlcnNpb249NS4xMy4wCityZXZp c2lvbj0xCiB3cmtzcmM9InF0LWV2ZXJ5d2hlcmUtc3JjLSR7dmVyc2lvbn0iCiBidWlsZF9zdHls ZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9ImNtYWtlIGNsYW5nIGZsZXggZ2l0IGds aWItZGV2ZWwgZ3BlcmYgbmluamEgcGtnLWNvbmZpZwpAQCAtMTAsMzIgKzEwLDQ2IEBAIG1ha2Vk ZXBlbmRzPSJTREwyLWRldmVsIFZ1bGthbi1IZWFkZXJzIGFsc2EtbGliLWRldmVsIGRvdWJsZS1j b252ZXJzaW9uLWRldmVsCiAgZXVkZXYtbGlidWRldi1kZXZlbCBmZm1wZWctZGV2ZWwgZnJlZXRk cy1kZXZlbCBnbGliLWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsCiAgZ3RrKzMtZGV2ZWwg aWN1LWRldmVsIGpzb25jcHAtZGV2ZWwgbGliWHYtZGV2ZWwgbGliYmx1ZXRvb3RoLWRldmVsIGxp YmNhcC1kZXZlbAogIGxpYmV2ZW50LWRldmVsIGxpYmlucHV0LWRldmVsIGxpYm1uZy1kZXZlbCBs aWJteXNxbGNsaWVudC1kZXZlbCBsaWJwcm94eS1kZXZlbAotIGxpYnZweDUtZGV2ZWwgbGlid2Vi cC1kZXZlbCBsaWJ4c2x0LWRldmVsIG1pbml6aXAtZGV2ZWwgbnNzLWRldmVsCisgbGlidnB4LWRl dmVsIGxpYndlYnAtZGV2ZWwgbGlieHNsdC1kZXZlbCBtaW5pemlwLWRldmVsIG5zcy1kZXZlbCBj dXBzLWRldmVsCiAgb3B1cy1kZXZlbCBwY2l1dGlscy1kZXZlbCBwY3JlMi1kZXZlbCBwb3N0Z3Jl c3FsLWxpYnMtZGV2ZWwKICBwcm90b2J1Zi1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsIHNuYXBweS1k ZXZlbCB0c2xpYi1kZXZlbAogIHVuaXhvZGJjLWRldmVsIHhjYi11dGlsLWltYWdlLWRldmVsIHhj Yi11dGlsLWtleXN5bXMtZGV2ZWwKLSB4Y2ItdXRpbC1yZW5kZXJ1dGlsLWRldmVsIHhjYi11dGls LXdtLWRldmVsIgorIHhjYi11dGlsLXJlbmRlcnV0aWwtZGV2ZWwgeGNiLXV0aWwtd20tZGV2ZWwg bGlienN0ZC1kZXZlbCIKIGRlcGVuZHM9InF0Y2hvb3NlciIKIHNob3J0X2Rlc2M9IkNyb3NzLXBs YXRmb3JtIGFwcGxpY2F0aW9uIGFuZCBVSSBmcmFtZXdvcmsgKFFUNSkiCiBtYWludGFpbmVyPSJK w7xyZ2VuIEJ1Y2htw7xsbGVyIDxwdWxsbW9sbEB0LW9ubGluZS5kZT4iCi1saWNlbnNlPSJHUEwt My4wLW9yLWxhdGVyLCBMR1BMLTIuMS1vci1sYXRlciIKK2xpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0 ZXIsIExHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vcXQuaW8vIgogZGlzdGZp bGVzPSJodHRwOi8vZG93bmxvYWQucXQuaW8vb2ZmaWNpYWxfcmVsZWFzZXMvcXQvJHt2ZXJzaW9u JS4qfS8ke3ZlcnNpb259L3NpbmdsZS9xdC1ldmVyeXdoZXJlLXNyYy0ke3ZlcnNpb259LnRhci54 eiIKLWNoZWNrc3VtPTg1OTQxNzY0MjcxM2NlZTI0OTNlZTM2NDZhN2ZlZTc4MmM5ZjFkYjM5ZTQx ZDdiYjEzMjJiYmEwYzVmMGZmNGQKK2NoZWNrc3VtPTJjYmEzMWU0MTBlMTY5YmQ1Y2RhZTE1OWY4 Mzk2NDBlNjcyNTMyYTQ2ODdlYTBmMjY1ZjY4NjQyMWUwZTg2ZDYKIHJlcGxhY2VzPSJxdDUtZG9j PDUuNi4wIHF0NS1xdWljazE8NS42LjAgcXQ1LXF1aWNrMS1kZXZlbDw1LjYuMCBxdDUtd2Via2l0 PDUuNi4wIHF0NS13ZWJraXQtZGV2ZWw8NS42LjAKLSBxdDUtZW5naW5pbzw1LjcuMSBxdDUtZW5n aW5pby1kZXZlbDw1LjcuMSBxdDUtcGx1Z2luLWd0azw1LjcuMSIKKyBxdDUtZW5naW5pbzw1Ljcu MSBxdDUtZW5naW5pby1kZXZlbDw1LjcuMSBxdDUtcGx1Z2luLWd0azw1LjcuMSBxdDUtY2FudmFz M2Q8NS4xMy4wIgogCiBidWlsZF9vcHRpb25zPSJ3ZWJlbmdpbmUiCiBkZXNjX29wdGlvbl93ZWJl bmdpbmU9IkJ1aWxkIENocm9taXVtLWJhc2VkIFdlYkVuZ2luZSBjb21wb25lbnQiCiAKIGNhc2Ug IiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCXg4Nl82NCp8aTY4Nip8cHBjNjRsZSopIGJ1aWxk X29wdGlvbnNfZGVmYXVsdD0id2ViZW5naW5lIjs7CisJeDg2XzY0KnxpNjg2KnxwcGM2NCopIGJ1 aWxkX29wdGlvbnNfZGVmYXVsdD0id2ViZW5naW5lIjs7CiAJYXJtdjV0ZWwqKSA7OyAjIHF0d2Vi ZW5naW5lIHVzZXMgVlNNIGFzc2VtYmxlciBjb21tYW5kcwotCWFybSp8YWFyY2g2NCopIGJ1aWxk X29wdGlvbnNfZGVmYXVsdD0id2ViZW5naW5lIjs7CisJYWFyY2g2NCopIGJ1aWxkX29wdGlvbnNf ZGVmYXVsdD0id2ViZW5naW5lIjs7CisJYXJtKikgOzsgIyBxdHdlYmVuZ2luZSByZXF1aXJlcyBh IDMyYml0IGhvc3QgdG9vbGNoYWluIGh0dHA6Ly9zcHJ1bmdlLnVzL3JiUnlXUQogCSopIDs7ICMg YXNzdW1lIG5vIHdlYmVuZ2luZQogZXNhYwogCi1zdWJwYWNrYWdlcz0icXQ1LTNkIHF0NS0zZC1k ZXZlbCBxdDUtY2FudmFzM2QgcXQ1LWNoYXJ0cyBxdDUtY2hhcnRzLWRldmVsCitpZiBbICIkYnVp bGRfb3B0aW9uX3dlYmVuZ2luZSIgXTsgdGhlbgorCSMgdjggcmVxdWlyZXMgbGliYXRvbWljIG9u IHBwYyovczM5MHgvbWlwcyoKKwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJbWlw cyp8cHBjKikgbWFrZWRlcGVuZHMrPSIgbGliYXRvbWljLWRldmVsIiA7OworCQkqKSA7OworCWVz YWMKKwkjIGFsc28gbmVlZCBpdCBvbiBob3N0IHdoZW4gaXQncyBvbmUgb2YgdGhvc2UgYXJjaHMK KwljYXNlICIkWEJQU19NQUNISU5FIiBpbgorCQltaXBzKnxwcGMqKSBob3N0bWFrZWRlcGVuZHMr PSIgbGliYXRvbWljLWRldmVsIiA7OworCQkqKSA7OworCWVzYWMKK2ZpCisKK3N1YnBhY2thZ2Vz PSJxdDUtM2QgcXQ1LTNkLWRldmVsIHF0NS1jaGFydHMgcXQ1LWNoYXJ0cy1kZXZlbAogIHF0NS1j b25uZWN0aXZpdHkgcXQ1LWNvbm5lY3Rpdml0eS1kZXZlbCBxdDUtZGF0YXZpczNkIHF0NS1kYXRh dmlzM2QtZGV2ZWwKICBxdDUtZGVjbGFyYXRpdmUgcXQ1LWRlY2xhcmF0aXZlLWRldmVsIHF0NS1k ZXZlbCBxdDUtZXhhbXBsZXMgcXQ1LWdhbWVwYWQKICBxdDUtZ2FtZXBhZC1kZXZlbCBxdDUtZ3Jh cGhpY2FsZWZmZWN0cyBxdDUtaG9zdC10b29scyBxdDUtaW1hZ2Vmb3JtYXRzCkBAIC01MSw3ICs2 NSw4IEBAIHN1YnBhY2thZ2VzPSJxdDUtM2QgcXQ1LTNkLWRldmVsIHF0NS1jYW52YXMzZCBxdDUt Y2hhcnRzIHF0NS1jaGFydHMtZGV2ZWwKICBxdDUtdmlydHVhbGtleWJvYXJkLWRldmVsIHF0NS13 YXlsYW5kIHF0NS13YXlsYW5kLWRldmVsIHF0NS13ZWJjaGFubmVsCiAgcXQ1LXdlYmNoYW5uZWwt ZGV2ZWwgcXQ1LXdlYmdscGx1Z2luIHF0NS13ZWJnbHBsdWdpbi1kZXZlbCBxdDUtd2Vic29ja2V0 cwogIHF0NS13ZWJzb2NrZXRzLWRldmVsIHF0NS13ZWJ2aWV3IHF0NS13ZWJ2aWV3LWRldmVsIHF0 NS14MTFleHRyYXMKLSBxdDUteDExZXh0cmFzLWRldmVsIHF0NS14bWxwYXR0ZXJucyBxdDUteG1s cGF0dGVybnMtZGV2ZWwiCisgcXQ1LXgxMWV4dHJhcy1kZXZlbCBxdDUteG1scGF0dGVybnMgcXQ1 LXhtbHBhdHRlcm5zLWRldmVsCisgcXQ1LWxvdHRpZSBxdDUtbG90dGllLWRldmVsIgogCiBpZiBb ICIkYnVpbGRfb3B0aW9uX3dlYmVuZ2luZSIgXTsgdGhlbgogCXN1YnBhY2thZ2VzKz0iIHF0NS13 ZWJlbmdpbmUgcXQ1LXdlYmVuZ2luZS1kZXZlbCIKQEAgLTYwLDYgKzc1LDcgQEAgZmkKIGlmIFsg IiR7WEJQU19NQUNISU5FJSUtbXVzbH0iID0gaTY4NiBdOyB0aGVuCiAJbm9kZWJ1Zz15ZXMgICMg cHJldmVudCBPT00KIGZpCisKICMgV29yayBhcm91bmQgU1NMdjNfe2NsaWVudCxzZXJ2ZXJ9X21l dGhvZCBtaXNzaW5nIGluIGxpYnJlc3NsLTIuMy4zCiBDRkxBR1M9Ii1ET1BFTlNTTF9OT19QU0sg LURPUEVOU1NMX05PX05FWFRQUk9UT05FRyIKIENYWEZMQUdTPSIke0NGTEFHU30gLVduby1kZXBy ZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLWNsYXNzLW1lbWFjY2VzcyAtV25vLXBhY2tlZC1ub3Qt YWxpZ25lZCIKQEAgLTcwLDYgKzg2LDcgQEAgaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCiAJ IyBOZWVkIHNvbWUgZGV2ZWwgcGFja2FnZXMgaW4gdGhlIGhvc3QgdG8gYnVpbGQgcW1ha2UsIG1v YywgdWljLCByY2MKIAkjIHdheWxhbmQtZGV2ZWwgY29udGFpbnMgL3Vzci9iaW4vd2F5bGFuZC1z Y2FubmVyCiAJaG9zdG1ha2VkZXBlbmRzKz0iIGljdS1kZXZlbCB3YXlsYW5kLWRldmVsIHpsaWIt ZGV2ZWwiCisJaG9zdG1ha2VkZXBlbmRzKz0iIHBvc3RncmVzcWwtbGlicy1kZXZlbCIKIAkjIENy b3NzIGJ1aWxkaW5nIHF0d2ViZW5naW5lIHJlcXVpcmVzIHNvbWUgbW9yZSBob3N0IHBhY2thZ2Vz CiAJaWYgWyAiJGJ1aWxkX29wdGlvbl93ZWJlbmdpbmUiIF07IHRoZW4KIAkJaG9zdG1ha2VkZXBl bmRzKz0iIG5zcy1kZXZlbCBsaWJldmVudC1kZXZlbCIKQEAgLTc4LDQ4ICs5NSwxOCBAQCBmaQog CiBfYm9vdHN0cmFwX2duKCkgewogCSMgQm9vdHN0cmFwIGduIChnZW5lcmF0ZSBuaW5qYSkKLQlf bXNnX2Nyb3NzICJCb290c3RyYXBwaW5nICdnbiciCi0JY2QgJHt3cmtzcmN9L3F0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90b29scy9nbgotCWNvbmY9J2lzX2NsYW5nPWZhbHNlJwot CWNvbmYrPScgdHJlYXRfd2FybmluZ3NfYXNfZXJyb3JzPWZhbHNlJwotCWNvbmYrPScgZW5hYmxl X3JlbW90aW5nPWZhbHNlJwotCWNvbmYrPScgZW5hYmxlX25hY2w9ZmFsc2UnCi0JY29uZis9JyB1 c2VfY3Vwcz1mYWxzZScKLQljb25mKz0nIHVzZV9nY29uZj1mYWxzZScKLQljb25mKz0nIHVzZV9n aW89ZmFsc2UnCi0JY29uZis9JyB1c2VfZ25vbWVfa2V5cmluZz1mYWxzZScKLQljb25mKz0nIHVz ZV9ndGs9ZmFsc2UnCi0JY29uZis9JyB1c2Vfa2VyYmVyb3M9ZmFsc2UnCi0JY29uZis9JyBsaW51 eF91c2VfYnVuZGxlZF9iaW51dGlscz1mYWxzZScKLQljb25mKz0nIGJpbnV0aWxzX3BhdGg9Ii91 c3IvYmluIicKLQljb25mKz0nIHVzZV9nb2xkPWZhbHNlJwotCWNvbmYrPScgdXNlX3N5c3Jvb3Q9 ZmFsc2UnCi0JY29uZis9JyB1c2VfYWxsb2NhdG9yPSJub25lIicKLQljb25mKz0nIGlzX2FuZHJv aWQ9ZmFsc2UnCi0KLQlzZWQgLWkgJHt3cmtzcmN9L3F0d2ViZW5naW5lL3NyYy9jb3JlL2NvbmZp Zy9saW51eC5wcmkgXAotCQktZSAiL2VxdWFscyhNQVJNVi9zO3RydWU7ZmFsc2U7IgotCWNhc2Ug IiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCQlhcm12WzU2XSopIGNvbmYrPScgYXJtX3VzZV9u ZW9uPWZhbHNlIGFybV9vcHRpb25hbGx5X3VzZV9uZW9uPWZhbHNlJzs7Ci0JCWFybXY3KikgICAg Y29uZis9JyBhcm1fdXNlX25lb249dHJ1ZSBhcm1fb3B0aW9uYWxseV91c2VfbmVvbj1mYWxzZSc7 OwotCQlhYXJjaDY0KikgIGNvbmYrPScgYXJtX3VzZV9uZW9uPXRydWUgYXJtX29wdGlvbmFsbHlf dXNlX25lb249ZmFsc2UnOzsKLQllc2FjCi0KLQlBUj0iJEFSX2hvc3QiIENDPSIkQ0NfaG9zdCIg Q1hYPSIkQ1hYX2hvc3QiIExEPSIkQ1hYX2hvc3QiIFwKKwllY2hvICJCb290c3RyYXBwaW5nICdn biciCisJY2QgJHt3cmtzcmN9L3F0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9nbgogCUNGTEFHUz0i JENGTEFHU19ob3N0IiBDWFhGTEFHUz0iJENYWEZMQUdTX2hvc3QiIExERkxBR1M9IiRMREZMQUdT X2hvc3QiIFwKIAlQS0dDT05GSUc9L3Vzci9iaW4vcGtnY29uZmlnIFBLR19DT05GSUdfUEFUSD0i L3Vzci9saWIvcGtnY29uZmlnOi91c3Ivc2hhcmUvcGtnY29uZmlnIiBcCi0JCXB5dGhvbjIgYm9v dHN0cmFwL2Jvb3RzdHJhcC5weSAtbiAtLWduLWdlbi1hcmdzICIke2NvbmZ9IgorCQlweXRob24y IGJ1aWxkL2dlbi5weSAtLW5vLWxhc3QtY29tbWl0LXBvc2l0aW9uIC0tb3V0LXBhdGggXAorCQkJ JHt3cmtzcmN9L3F0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9nbi9vdXQvUmVsZWFzZSAtLWNjICIk Q0NfaG9zdCIgXAorCQkJLS1jeHggIiRDWFhfaG9zdCIgLS1sZCAiJENYWF9ob3N0IiAtLWFyICIk QVJfaG9zdCIKKwluaW5qYSAtQyBvdXQvUmVsZWFzZSBnbgogCWNkICR7d3Jrc3JjfQotCi0JbWtk aXIgLXAgJHt3cmtzcmN9L3F0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90b29scy9n bi9vdXQvUmVsZWFzZQotCWNwIC1wICR7d3Jrc3JjfS9xdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vb3V0L1JlbGVhc2UvZ24gXAotCQkke3dya3NyY30vcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3Rvb2xzL2duL291dC9SZWxlYXNlLwotCi0JIyBSZW1vdmUgZ24gZnJv bSBTVUJESVJTIGZvciBxdHdlYmVuZ2luZS9zcmMvYnVpbGR0b29scwotCXNlZCAtaSAke3dya3Ny Y30vcXR3ZWJlbmdpbmUvc3JjL2J1aWxkdG9vbHMvYnVpbGR0b29scy5wcm8gXAotCQktZSIvZ24u ZmlsZSA9IGduLnByby8sKzNkIgogfQogCisKIF9jbGVhbnVwX3dya3NyY19sZWFrKCkgewogCWlm IFsgLWQgIiR7UEtHREVTVERJUn0vdXNyL2xpYi9jbWFrZSIgXTsgdGhlbgogCQkjIFJlcGxhY2Ug cmVmZXJlbmNlcyB0byAke3dya3NyY30gaW4gY21ha2UgZmlsZXMKQEAgLTI1Myw5ICsyNDAsNiBA QCBkb19jb25maWd1cmUoKSB7CiAJCQlxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9h bGxvY2F0b3Ivc3Bpbl9sb2NrLmNjIFwKIAkJCS1lICdzOyJ5aWVsZCI7Im5vcCI7JwogCQk7Owot CXBwYzY0bGUqKSAjIGVuYWJsZSB3ZWJlbmdpbmUgYnV0IG5vdCBvbiBCRSBwcGM2NCBmb3Igbm93 Ci0JCXNlZCAtaSBxdHdlYmVuZ2luZS9ta3NwZWNzL2ZlYXR1cmVzL3BsYXRmb3JtLnByZiAtZSAn czsjcHBjNjRsZTs7JwotCQk7OwogCWVzYWMKIAogCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5F IiBpbgpAQCAtMjg1LDcgKzI2OSw2IEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkJZm9yIGQgaW4gJChs cyAke3dya3NyY30vcXRiYXNlL2luY2x1ZGUpOyBkbwogCQkJbG4gLXNmdiAke3ZlcnNpb259LyR7 ZH0vcHJpdmF0ZSBxdGJhc2UvaW5jbHVkZS8ke2R9L3ByaXZhdGUKIAkJZG9uZQotCiAJCWlmIFsg IiRidWlsZF9vcHRpb25fd2ViZW5naW5lIiBdOyB0aGVuCiAJCQlfYm9vdHN0cmFwX2duCiAJCWZp CkBAIC0zMDcsNiArMjkwLDcgQEAgZG9fY29uZmlndXJlKCkgewogCQkJCS1lICcvI2Vycm9yIFJl YWQgdGhlIGNvbW1lbnQgYXQgdGhpcyBsb2NhdGlvbi9kJwogCQkJOzsKIAkJZXNhYworCQlwYXRj aCAtTnAwIDwgJHtGSUxFU0RJUn0vMDA5MC1oYXJkLWRpc2FibGUtcW1sY2hhY2hlZ2VuLnBhdGNo CiAJZWxzZQogCQkjIHFtYWtlIHtDWFgsTH1GTEFHUyBwYXRjaGVzCiAJCXNlZCAtaSAtZSAic3xe XChDWFhGTEFHUyA9LipcKXxcMSAke0NYWEZMQUdTfXwiIFwKQEAgLTMzOSw2ICszMjMsMTAgQEAg ZG9fY29uZmlndXJlKCkgewogCW9wdHMrPSIgLWljdSIKIAlvcHRzKz0iIC1vcGVuc3NsLWxpbmtl ZCIKIAlvcHRzKz0iIC1kYnVzLWxpbmtlZCIKKwlvcHRzKz0iIC1zcWwtbXlzcWwiCisJb3B0cys9 IiAtbXlzcWxfY29uZmlnICR7WEJQU19DUk9TU19CQVNFfS91c3IvYmluL215c3FsX2NvbmZpZyIK KwlvcHRzKz0iIC1zcWwtcHNxbCIKKwlvcHRzKz0iIC1wc3FsX2NvbmZpZyAvdXNyL2Jpbi9wZ19j b25maWciCiAJb3B0cys9IiAtbm8tcGNoIgogCW9wdHMrPSIgLW5vLXN0cmlwIgogCW9wdHMrPSIg LW5vbWFrZSBleGFtcGxlcyIKQEAgLTM2OSwxMiArMzU3LDEwIEBAIGRvX2NvbmZpZ3VyZSgpIHsK IAlmaQogCW9wdHMrPSIgLXNpbGVudCIKIAkjIG9wdHMrPSIgLXYiCi0KIAkjIG1ha2Ugc3VyZSB0 byBkaXNhYmxlIHdlYmVuZ2luZSBvbiBwbGF0Zm9ybXMgdGhhdCB3ZSBkb24ndCBidWlsZCBpdCBm b3IKIAlpZiBbIC16ICIkYnVpbGRfb3B0aW9uX3dlYmVuZ2luZSIgXTsgdGhlbgogCQlvcHRzKz0i IC1za2lwIHF0d2ViZW5naW5lIgogCWZpCi0KIAlMREZMQUdTKz0iIC1XbCwtLW5vLWtlZXAtbWVt b3J5IiAgIyBuZWVkcyBtb3JlIHRoYW4gOEdCIFJBTSBlbHNlCiAJaWYgWyAiJENST1NTX0JVSUxE IiBdOyB0aGVuCiAJCXNwZWM9dm9pZC0ke1hCUFNfQ1JPU1NfVFJJUExFVH0tZysrCkBAIC0zOTIs NiArMzc4LDE5IEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkJCWZpCiAJCQk7OwogCQllc2FjCisJCWNh c2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCQlhYXJjaDY0Knxhcm12NyopCisJCQlzZWQg LWkgJHt3cmtzcmN9L3F0d2ViZW5naW5lL3NyYy9jb3JlL2NvbmZpZy9saW51eC5wcmkgXAorCQkJ CS1lICIvYXJtX3VzZV9uZW9uPS9zO2ZhbHNlO3RydWU7IgorCQkJOzsKKwkJYXJtKikKKwkJCXNl ZCAtaSAke3dya3NyY30vcXR3ZWJlbmdpbmUvc3JjL2NvcmUvY29uZmlnL2xpbnV4LnByaSBcCisJ CQkJLWUgIi9hcm1fdXNlX25lb249L3M7dHJ1ZTtmYWxzZTsiCisKKwkJCTs7CisJCWVzYWMKKwkJ c2VkIC1pICR7d3Jrc3JjfS9xdHdlYmVuZ2luZS9zcmMvY29yZS9jb25maWcvbGludXgucHJpIFwK KwkJCS1lICIvZXF1YWxzKE1BUk1WL3M7dHJ1ZTtmYWxzZTsiCiAKIAkJIyBNYWtlIHN1cmUgbGli UXQ1RGVzaWduZXIgaXMgYnVpbHQKIAkJY3AgLXYgJHtGSUxFU0RJUn0vcXR0b29sc19zcmMucHJv IHF0dG9vbHMvc3JjL3NyYy5wcm8KQEAgLTQyNSw3ICs0MjQsNiBAQCBkb19pbnN0YWxsKCkgewog CWNkICR7d3Jrc3JjfS9xdGJhc2UKIAltYWtlIElOU1RBTExfUk9PVD0ke0RFU1RESVJ9IGluc3Rh bGwKIAotCXZsaWNlbnNlICR7d3Jrc3JjfS9MR1BMX0VYQ0VQVElPTi50eHQKIAlfY2xlYW51cF93 cmtzcmNfbGVhawogCiAJIyBTeW1ib2xpYyBsaW5rcyBmb3IgcmVtYWluaW5nIGJpbmFyaWVzCkBA IC00OTgsNyArNDk2LDEwIEBAIGRvX2luc3RhbGwoKSB7CiAJCWRpcnMrPSIgcXR0b29scy9zcmMv cXRhdHRyaWJ1dGlvbnNzY2FubmVyIgogCQlkaXJzKz0iIHF0dG9vbHMvc3JjL2xpbmd1aXN0L2xj b252ZXJ0IgogCQlkaXJzKz0iIHF0dG9vbHMvc3JjL2xpbmd1aXN0L2xyZWxlYXNlIgorCQlkaXJz Kz0iIHF0dG9vbHMvc3JjL2xpbmd1aXN0L2xyZWxlYXNlLXBybyIKKwkJZGlycys9IiBxdHRvb2xz L3NyYy9saW5ndWlzdC9scHJvZHVtcCIKIAkJZGlycys9IiBxdHRvb2xzL3NyYy9saW5ndWlzdC9s dXBkYXRlIgorCQlkaXJzKz0iIHF0dG9vbHMvc3JjL2xpbmd1aXN0L2x1cGRhdGUtcHJvIgogCQkj IENhbm5vdCBiZSBjcm9zcyBjb21waWxlZCAodGFyZ2V0IGNsYW5nIGlzc3VlKQogCQkjIGRpcnMr PSIgcXR0b29scy9zcmMvcWRvYyIKIApAQCAtNTQ3LDYgKzU0OCw3IEBAIGRvX2luc3RhbGwoKSB7 CiAJCQlbIC1mICIke2Jhc2V9LnByby5vcmlnIiBdICYmIG12IC12ICR7YmFzZX0ucHJvey5vcmln LH0KIAkJCVsgLWYgTWFrZWZpbGUub3JpZyBdICYmIG12IC12IE1ha2VmaWxley5vcmlnLH0KIAkJ CSMgQXZvaWQgcmVidWlsZGluZyB0aGUgTWFrZWZpbGUgYnkgY2hhbmdpbmcgdGhlIHJ1bGUKKwkJ CXNlZCAtaSBNYWtlZmlsZSAtZSAnczteYWxsOi4qO2FsbDo7JwogCQkJc2VkIC1pIE1ha2VmaWxl IC1lICJzO15NYWtlZmlsZTo7TWFrZWZpbGUuaG9zdDo7IgogCQkJaWYgWyAteCAiJHt3cmtzcmN9 LyR7ZGlyfS9iaW4vJHtiYXNlfS1ob3N0IiBdOyB0aGVuCiAJCQkJbXYgLXYgJHt3cmtzcmN9LyR7 ZGlyfS9iaW4vJHtiYXNlfXstaG9zdCx9CkBAIC01NzQsMTMgKzU3Niw2IEBAIHF0NS0zZF9wYWNr YWdlKCkgewogCX0KIH0KIAotcXQ1LWNhbnZhczNkX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9 IiAtIENhbnZhcyAzRCBjb21wb25lbnQiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCV9pbnN0YWxsX3N1 YnBrZyBxdGNhbnZhczNkCi0JfQotfQotCiBxdDUtY2hhcnRzLWRldmVsX3BhY2thZ2UoKSB7CiAJ c2hvcnRfZGVzYys9IiAtIENoYXJ0cyBjb21wb25lbnQgKGRldmVsb3BtZW50KSIKIAlkZXBlbmRz PSJxdDUtY2hhcnRzLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0gcXQ1LWRlY2xhcmF0aXZlLWRldmVs LSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCkBAIC02NjIsNiArNjU3LDE4IEBAIHF0NS1leGFtcGxl c19wYWNrYWdlKCkgewogCX0KIH0KIAorcXQ1LWxvdHRpZS1kZXZlbF9wYWNrYWdlKCkgeworCXBr Z19pbnN0YWxsKCkgeworCQlfaW5zdGFsbF9kZXZlbCBxdGxvdHRpZQorCX0KK30KKworcXQ1LWxv dHRpZV9wYWNrYWdlKCkgeworCXBrZ19pbnN0YWxsKCkgeworCQlfaW5zdGFsbF9zdWJwa2cgcXRs b3R0aWUKKwl9Cit9CisKIHF0NS1nYW1lcGFkLWRldmVsX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVz Yys9IiAtIEdhbWVwYWQgY29tcG9uZW50IChkZXZlbG9wbWVudCkiCiAJZGVwZW5kcz0icXQ1LWdh bWVwYWQtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSBxdDUtZGVjbGFyYXRpdmUtZGV2ZWwtJHt2ZXJz aW9ufV8ke3JldmlzaW9ufSIKQEAgLTEwNDUsNyArMTA1Miw3IEBAIHF0NS1ob3N0LXRvb2xzX3Bh Y2thZ2UoKSB7CiAJCXZta2RpciB1c3IvbGliL3F0NS9iaW4KIAkJdm1rZGlyIHVzci9iaW4KIAkJ Zm9yIGYgaW4gbW9jIHJjYyB1aWMgcWxhbHIgcWRidXNjcHAyeG1sIHFkYnVzeG1sMmNwcCBcCi0J CQlsY29udmVydCBsdXBkYXRlIGxyZWxlYXNlOyBkbworCQkJbGNvbnZlcnQgbHVwZGF0ZSBsdXBk YXRlLXBybyBscHJvZHVtcCBscmVsZWFzZSBscmVsZWFzZS1wcm87IGRvCiAJCQlpZiBbIC1yICR7 ZGVzdH0vdXNyL2xpYi9xdDUvYmluLyR7Zn0gXTsgdGhlbgogCQkJCW12IC12ICR7ZGVzdH0vdXNy L2xpYi9xdDUvYmluLyR7Zn0gJHtQS0dERVNURElSfS91c3IvbGliL3F0NS9iaW4vCiAJCQlmaQpA QCAtMTA5OSw3ICsxMTA2LDcgQEAgcXQ1LXRvb2xzX3BhY2thZ2UoKSB7CiAJCWluc3RhbGwgLW02 NDQgJHtGSUxFU0RJUn0vKi5kZXNrdG9wICR7UEtHREVTVERJUn0vdXNyL3NoYXJlL2FwcGxpY2F0 aW9ucwogCQlfbW92ZV90YXJnZXRfYmluYXJpZXMgcXRhdHRyaWJ1dGlvbnNzY2FubmVyIHFkb2MK IAkJIyBNb3ZlIHNvbWUgYmluYXJpZXMgdG8gcXQ1LWhvc3QtdG9vbHMKLQkJZm9yIGYgaW4gbGNv bnZlcnQgbHVwZGF0ZSBscmVsZWFzZTsgZG8KKwkJZm9yIGYgaW4gbGNvbnZlcnQgbHVwZGF0ZSBs dXBkYXRlLXBybyBscHJvZHVtcCBscmVsZWFzZSBscmVsZWFzZS1wcm87IGRvCiAJCQlpZiBbIC1m ICR7UEtHREVTVERJUn0vdXNyL2xpYi9xdDUvYmluLyR7Zn0gXTsgdGhlbgogCQkJCW1rZGlyIC1w ICR7ZGVzdH0vdXNyL2xpYi9xdDUvYmluCiAJCQkJbXYgLXYgJHtQS0dERVNURElSfS91c3IvbGli L3F0NS9iaW4vJHtmfSAke2Rlc3R9L3Vzci9saWIvcXQ1L2Jpbi8KQEAgLTExMTUsNyArMTEyMiw3 IEBAIHF0NS10b29sc19wYWNrYWdlKCkgewogcXQ1LWRldmVsX3BhY2thZ2UoKSB7CiAJZGVwZW5k cz0iemxpYi1kZXZlbCBsaWJyZXNzbC1kZXZlbD49Mi4xLjQgbGliWGV4dC1kZXZlbCBsaWJYcmVu ZGVyLWRldmVsCiAJCWZvbnRjb25maWctZGV2ZWwgbGliZ2xpYi1kZXZlbCBNZXNhTGliLWRldmVs IG10ZGV2LWRldmVsCi0JCWRidXMtZGV2ZWwgaWN1LWRldmVsIHF0NS0ke3ZlcnNpb259XyR7cmV2 aXNpb259CisJCWRidXMtZGV2ZWwgaWN1LWRldmVsIGN1cHMtZGV2ZWwgcXQ1LSR7dmVyc2lvbn1f JHtyZXZpc2lvbn0KIAkJcXQ1LXFtYWtlLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KIAkJcXQ1LWhv c3QtdG9vbHMtJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAlzaG9ydF9kZXNjKz0iIC0gRGV2ZWxv cG1lbnQgZmlsZXMiCkBAIC0xMTc1LDYgKzExODIsOCBAQCBxdDUtcW1ha2VfcGFja2FnZSgpIHsK IAkJIyBDaGFuZ2UgLWlzeXN0ZW0gdG8gLUkgdG8gYXZvaWQgIiNpbmNsdWRlX25leHQgPHN0ZGxp Yi5oPiIgZXJyb3JzCiAJCXNlZCAtaSAke1BLR0RFU1RESVJ9L3Vzci9saWIvcXQ1L21rc3BlY3Mv Y29tbW9uL2djYy1iYXNlLmNvbmYgXAogCQkJLWUgJy9eUU1BS0VfQ0ZMQUdTX0lTWVNURU0vczst aXN5c3RlbTstSTsnCisJCWZpbmQgJHtQS0dERVNURElSfSAtaW5hbWUgIioucHJsIiAtZXhlYyBz ZWQgLWkgInt9IiBcCisJCQktZSAncyUvdXNyL2xpYi9saWJcKFteWzpzcGFjZTpdXSpcKVwuW3Nh XVtvXSolLWxcMSVnJyBcOwogCiAJCSMgVW5kbyBjaGFuZ2VzIHRvIG1rc3BlY3MvY29tbW9uL2dj Yy1iYXNlLmNvbmYgYW5kIGcrKy11bml4LmNvbmYKIAkJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0 aGVuCgpGcm9tIDczODIyODBmYTY4MzYwZjkxMzVhNDIxNjJmNGM0OThmMGJhZTc1MjUgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IE1v biwgMTUgQXByIDIwMTkgMTg6Mjg6MDUgKzAyMDAKU3ViamVjdDogW1BBVENIIDAyLzE3XSBxdDUt d2Via2l0OiByZWJ1aWxkIGFnYWluc3QgcXQ1LTUuMTMuMAoKLS0tCiBzcmNwa2dzL3F0NS13ZWJr aXQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJraXQvdGVtcGxhdGUgYi9zcmNw a2dzL3F0NS13ZWJraXQvdGVtcGxhdGUKaW5kZXggYjJlOTk2ZjMwZDguLjI5MDM5Y2M2MDZkIDEw MDY0NAotLS0gYS9zcmNwa2dzL3F0NS13ZWJraXQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUt d2Via2l0L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1 LXdlYmtpdCcKIHBrZ25hbWU9cXQ1LXdlYmtpdAogdmVyc2lvbj01LjIxMi4wCi1yZXZpc2lvbj0y CityZXZpc2lvbj0zCiBfdj0ke3ZlcnNpb24lLip9CiB3cmtzcmM9InF0d2Via2l0LWV2ZXJ5d2hl cmUtc3JjLSR7X3Z9IgogYnVpbGRfc3R5bGU9Y21ha2UKCkZyb20gNGU1ZDJhNmU4OTVjNTZjMTQ2 ZDM5MDBiOTM5Zjk5ZWJmYTUyN2JlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9o biA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogTW9uLCAxMSBNYXIgMjAxOSAwMToyNToxNCArMDEw MApTdWJqZWN0OiBbUEFUQ0ggMDMvMTddIHRlbGVncmFtLWRlc2t0b3A6IHJlYnVpbGQgZm9yIHF0 NS01LjEzLjAKCi0tLQogc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlIGIvc3JjcGtncy90ZWxlZ3JhbS1k ZXNrdG9wL3RlbXBsYXRlCmluZGV4IDUzZTNlYWI4MzU0Li43ZWZhZDRhNjhjOSAxMDA2NDQKLS0t IGEvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGVsZWdy YW0tZGVza3RvcC90ZW1wbGF0ZQpAQCAtMTksNyArMTksNyBAQCBtYWtlZGVwZW5kcz0iYWxzYS1s aWItZGV2ZWwgZmZtcGVnLWRldmVsIGd0ayszLWRldmVsIGxpYmFwcGluZGljYXRvci1kZXZlbAog IGxpYmRidXNtZW51LWdsaWItZGV2ZWwgbGlib3BlbmFsLWRldmVsIG1pbml6aXAtZGV2ZWwgb3B1 cy1kZXZlbCB4eEhhc2gtZGV2ZWwKICAkKHZvcHRfaWYgcHVsc2VhdWRpbyAncHVsc2VhdWRpby1k ZXZlbCcpIHF0NS1kZXZlbCByYW5nZS12MyBsaWJ2YS1kZXZlbAogIHJhcGlkanNvbiIKLWRlcGVu ZHM9InF0NS1pbWFnZWZvcm1hdHMgcXQ1Pj01LjExLjM8NS4xMS40IgorZGVwZW5kcz0icXQ1LWlt YWdlZm9ybWF0cyBxdDU+PTUuMTMuMDw1LjEzLjEiCiBzaG9ydF9kZXNjPSJUZWxlZ3JhbSBEZXNr dG9wIG1lc3NhZ2luZyBhcHAiCiBtYWludGFpbmVyPSJKb2huIDxqb2huekBwb3N0ZW8ubmV0PiIK IGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIgV0lUSCBPcGVuU1NMIgoKRnJvbSBkZjkyYWVjMmUy Nzg0ZDgyNzllMDZmNDk0OWEzMjM5OTU1NDYyYmFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiBxNjYgPGRhbmllbEBvY3RhZm9yZ2Uub3JnPgpEYXRlOiBGcmksIDE1IE1hciAyMDE5IDE4 OjU3OjE3ICswMTAwClN1YmplY3Q6IFtQQVRDSCAwNC8xN10gcXQ1LXN0eWxlcGx1Z2luczogcmVi dWlsZCBhZ2FpbnN0IHF0NS01LjEzLjAKCltjaSBza2lwXQotLS0KIHNyY3BrZ3MvcXQ1LXN0eWxl cGx1Z2lucy90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMv dGVtcGxhdGUgYi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKaW5kZXggZWMyODZi NGJkZDMuLjc0NWJjYjhmN2E1IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlCkBAIC0xLDEz ICsxLDEzIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUtc3R5bGVwbHVnaW5zJwogcGtnbmFt ZT1xdDUtc3R5bGVwbHVnaW5zCiB2ZXJzaW9uPTUuMC4wCi1yZXZpc2lvbj03CityZXZpc2lvbj04 CiBfZ2l0cmV2PTYwMGMyOTZmNGQ0MjlmZmViODIwM2ZlYjU0ZWZlYWNjMmJiZWEwZjcKIHdya3Ny Yz0icXRzdHlsZXBsdWdpbnMtJHtfZ2l0cmV2fSIKIGJ1aWxkX3N0eWxlPXFtYWtlCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LWRldmVsIgogbWFrZWRlcGVu ZHM9ImxpYnhjYi1kZXZlbCBsaWJ4a2Jjb21tb24tZGV2ZWwgbGliaW5wdXQtZGV2ZWwgdHNsaWIt ZGV2ZWwgZ3RrKy1kZXZlbCBxdDUtZGV2ZWwiCi1kZXBlbmRzPSJxdDU+PTUuMTEuMzw1LjExLjQi CitkZXBlbmRzPSJxdDU+PTUuMTMuMDw1LjEzLjEiCiBzaG9ydF9kZXNjPSJBZGRpdGlvbmFsIHN0 eWxlIHBsdWdpbnMgZm9yIFF0NSIKIG1haW50YWluZXI9IkrDvHJnZW4gQnVjaG3DvGxsZXIgPHB1 bGxtb2xsQHQtb25saW5lLmRlPiIKIGxpY2Vuc2U9IkxHUEwtMi4xLW9ubHksIExHUEwtMy4wLW9u bHkiCgpGcm9tIGU1YzMwNWJkODAxNjIxMjMwMzg4YWE5ZWEyZTY5YWUyYTc4MjEyMmMgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IFRo dSwgMTggQXByIDIwMTkgMjI6NTQ6MjMgKzAyMDAKU3ViamVjdDogW1BBVENIIDA1LzE3XSBxdGNy ZWF0b3I6IHJlbW92ZSBkZXByZWNhdGVkIHF0NS1jYXZuYXMzZCBkZXAKCltjaSBza2lwXQotLS0K IHNyY3BrZ3MvcXRjcmVhdG9yL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXRjcmVh dG9yL3RlbXBsYXRlIGIvc3JjcGtncy9xdGNyZWF0b3IvdGVtcGxhdGUKaW5kZXggM2NmN2Y0NzQy YzAuLmJmNjU3MTY1MWVlIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0Y3JlYXRvci90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL3F0Y3JlYXRvci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ3F0Y3JlYXRvcicKIHBrZ25hbWU9cXRjcmVhdG9yCiB2ZXJzaW9uPTQuOS4y Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiB3cmtzcmM9InF0LWNyZWF0b3Itb3BlbnNvdXJjZS1z cmMtJHt2ZXJzaW9ufSIKIGJ1aWxkX3N0eWxlPXFtYWtlCiBtYWtlX2luc3RhbGxfYXJncz0iSU5T VEFMTF9ST09UPVwke0RFU1RESVJ9L3VzciIKQEAgLTM2LDcgKzM2LDcgQEAgcG9zdF9pbnN0YWxs KCkgewogcXRjcmVhdG9yLWZ1bGxfcGFja2FnZSgpIHsKIAlzaG9ydF9kZXNjKz0iIC0gZnVsbCBR dDUgZGVwZW5kZW5jaWVzIgogCWRlcGVuZHM9IiR7c291cmNlcGtnfT49JHt2ZXJzaW9ufV8ke3Jl dmlzaW9ufQotIHF0NS0zZC1kZXZlbCBxdDUtY2FudmFzM2QgcXQ1LWNoYXJ0cy1kZXZlbCBxdDUt Y29ubmVjdGl2aXR5LWRldmVsIHF0NS1kYXRhdmlzM2QtZGV2ZWwKKyBxdDUtM2QtZGV2ZWwgcXQ1 LWNoYXJ0cy1kZXZlbCBxdDUtY29ubmVjdGl2aXR5LWRldmVsIHF0NS1kYXRhdmlzM2QtZGV2ZWwK ICBxdDUtZGVjbGFyYXRpdmUtZGV2ZWwgcXQ1LWRhdGF2aXMzZC1kZXZlbCBxdDUtZ2FtZXBhZC1k ZXZlbCBxdDUtbG9jYXRpb24tZGV2ZWwKICBxdDUtbXVsdGltZWRpYS1kZXZlbCBxdDUtbmV0d29y a2F1dGgtZGV2ZWwgcXQ1LXB1cmNoYXNpbmctZGV2ZWwgcXQ1LXF1aWNrY29udHJvbHMKICBxdDUt cXVpY2tjb250cm9sczItZGV2ZWwgcXQ1LXJlbW90ZW9iamVjdHMtZGV2ZWwgcXQ1LXNjcmlwdC1k ZXZlbCBxdDUtc2N4bWwtZGV2ZWwKCkZyb20gODY3YjQzYTI3NzM3YjhhNDM2ODk1YThlN2VkNDE1 ZmUyOWY3YWQzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9z dGVvLm5ldD4KRGF0ZTogVHVlLCAyIEp1bCAyMDE5IDAwOjUyOjUzICswMjAwClN1YmplY3Q6IFtQ QVRDSCAwNi8xN10gTmV3IHBhY2thZ2U6IHF0NS1xbWFrZS1hYXJjaDY0LWNvbmZpZy0xCgpbY2kg c2tpcF0KLS0tCiBjb21tb24vZW52aXJvbm1lbnQvYnVpbGQtc3R5bGUvcW1ha2Uuc2ggICB8ICAz ICsrCiBzcmNwa2dzL3F0NS1xbWFrZS1hYXJjaDY0LWNvbmZpZy90ZW1wbGF0ZSB8IDQ0ICsrKysr KysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBjb21tb24vZW52aXJvbm1lbnQvYnVpbGQtc3R5bGUvcW1ha2Uuc2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS1xbWFrZS1hYXJjaDY0LWNvbmZpZy90ZW1w bGF0ZQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9lbnZpcm9ubWVudC9idWlsZC1zdHlsZS9xbWFrZS5z aCBiL2NvbW1vbi9lbnZpcm9ubWVudC9idWlsZC1zdHlsZS9xbWFrZS5zaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjg4NGVkMTNkZWQKLS0tIC9kZXYvbnVsbAorKysg Yi9jb21tb24vZW52aXJvbm1lbnQvYnVpbGQtc3R5bGUvcW1ha2Uuc2gKQEAgLTAsMCArMSwzIEBA CitpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KKwlob3N0bWFrZWRlcGVuZHMrPSIgcXQ1LXFt YWtlLSR7WEJQU19UQVJHRVRfTUFDSElORX0tY29uZmlnIgorZmkKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcXQ1LXFtYWtlLWFhcmNoNjQtY29uZmlnL3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtcW1ha2Ut YWFyY2g2NC1jb25maWcvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmJhMjM1Yzk2MTVmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtcW1ha2Ut YWFyY2g2NC1jb25maWcvdGVtcGxhdGUKQEAgLTAsMCArMSw0NCBAQAorIyBUZW1wbGF0ZSBmaWxl IGZvciAncXQ1LXFtYWtlLWFhcmNoNjQtY29uZmlnJworcGtnbmFtZT1xdDUtcW1ha2UtYWFyY2g2 NC1jb25maWcKK3ZlcnNpb249MQorcmV2aXNpb249MQorb25seV9mb3JfYXJjaHM9Im5vYXJjaCIK K2J1aWxkX3N0eWxlPW1ldGEKK3Nob3J0X2Rlc2M9IlFtYWtlIGNyb3NzIGNvbmZpZyBmaWxlcyIK K21haW50YWluZXI9IkpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+IgorbGljZW5zZT0iR1BMLTMuMC1v ci1sYXRlciIKK2hvbWVwYWdlPSJodHRwczovL3F0LmlvIgorCitfY3JlYXRlX2NvbmZpZygpIHsK Kwlsb2NhbCBfYXJjaD0kMQorCXZta2RpciB1c3IvbGliL3F0NS9iaW4KKwljYXQgPiAiJHtERVNU RElSfS91c3IvbGliL3F0NS9iaW4vcXQuY29uZiIgPDxfRU9GCitbUGF0aHNdCitTeXNyb290PS91 c3IvJF9hcmNoCitQcmVmaXg9L3Vzci8kX2FyY2gvdXNyCitBcmNoRGF0YT0vdXNyLyRfYXJjaC91 c3IvbGliL3F0NQorRGF0YT0vdXNyLyRfYXJjaC91c3Ivc2hhcmUvcXQ1CitEb2N1bWVudGF0aW9u PS91c3IvJF9hcmNoL3Vzci9zaGFyZS9kb2MvcXQ1CitIZWFkZXJzPS91c3IvJF9hcmNoL3Vzci9p bmNsdWRlL3F0NQorTGlicmFyaWVzPS91c3IvJF9hcmNoL3Vzci9saWIKK0xpYnJhcnlFeGVjdXRh Ymxlcz0vdXNyL2xpYi9xdDUvbGliZXhlYworQmluYXJpZXM9L3Vzci9saWIvcXQ1L2JpbgorVGVz dHM9L3Vzci8kX2FyY2gvdXNyL3Rlc3RzCitQbHVnaW5zPS91c3IvbGliL3F0NS9wbHVnaW5zCitJ bXBvcnRzPS91c3IvJF9hcmNoL3Vzci9saWIvcXQ1L2ltcG9ydHMKK1FtbDJJbXBvcnRzPS91c3Iv JF9hcmNoL3Vzci9saWIvcXQ1L3FtbAorVHJhbnNsYXRpb25zPS91c3IvJF9hcmNoL3Vzci9zaGFy ZS9xdDUvdHJhbnNsYXRpb25zCitTZXR0aW5ncz0vdXNyLyRfYXJjaC9ldGMveGRnCitFeGFtcGxl cz0vdXNyLyRfYXJjaC91c3Ivc2hhcmUvcXQ1L2V4YW1wbGVzCitIb3N0UHJlZml4PS91c3IKK0hv c3REYXRhPS91c3IvbGliL3F0NQorSG9zdEJpbmFyaWVzPS91c3IvbGliL3F0NS9iaW4KK0hvc3RM aWJyYXJpZXM9L3Vzci9saWIKK1NwZWM9bGludXgtZysrCitUYXJnZXRTcGVjPWxpbnV4LWcrKwor X0VPRgorfQorCitkb19pbnN0YWxsKCkgeworCV9jcmVhdGVfY29uZmlnIGFhcmNoNjQtbGludXgt Z251Cit9CgpGcm9tIGUzNjQ5Y2Y1ZTlhNWNmYmVkZDk2ZDAzYmFhYmZmMTE2NzM1NGRiMzggTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6 IFR1ZSwgMiBKdWwgMjAxOSAxODoxOToxNyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDcvMTddIG1l cmthYXJ0b3I6IGZpeCBidWlsZCB3aXRoIHF0NS4xMwoKLS0tCiBzcmNwa2dzL21lcmthYXJ0b3Iv cGF0Y2hlcy9xdDUuMTMucGF0Y2ggfCAxMSArKysrKysrKysrKwogc3JjcGtncy9tZXJrYWFydG9y L3RlbXBsYXRlICAgICAgICAgICAgIHwgIDggKystLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTMg aW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L21lcmthYXJ0b3IvcGF0Y2hlcy9xdDUuMTMucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21l cmthYXJ0b3IvcGF0Y2hlcy9xdDUuMTMucGF0Y2ggYi9zcmNwa2dzL21lcmthYXJ0b3IvcGF0Y2hl cy9xdDUuMTMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdm YTRmNGUyN2E5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9tZXJrYWFydG9yL3BhdGNoZXMv cXQ1LjEzLnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSBzcmMvTGF5ZXJzL0xpY2Vuc2VEaXNw bGF5RGlhbG9nLnVpCTIwMTYtMDktMDYgMDA6Mjk6NDUuMDAwMDAwMDAwICswMjAwCisrKysgLQky MDE5LTA3LTA2IDIxOjIwOjA1LjQ3NjAxNzA1NyArMDIwMAorQEAgLTQzLDcgKzQzLDcgQEAKKyAg IDxjdXN0b213aWRnZXQ+CisgICAgPGNsYXNzPlFXZWJWaWV3PC9jbGFzcz4KKyAgICA8ZXh0ZW5k cz5RV2lkZ2V0PC9leHRlbmRzPgorLSAgIDxoZWFkZXI+UXRXZWJLaXQvUVdlYlZpZXc8L2hlYWRl cj4KKysgICA8aGVhZGVyPlFXZWJWaWV3PC9oZWFkZXI+CisgICA8L2N1c3RvbXdpZGdldD4KKyAg PC9jdXN0b213aWRnZXRzPgorICA8cmVzb3VyY2VzLz4KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWVy a2FhcnRvci90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWVya2FhcnRvci90ZW1wbGF0ZQppbmRleCAzZWU0 MDE4NWFiNy4uNWU0NGY1ZjdjYjEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbWVya2FhcnRvci90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL21lcmthYXJ0b3IvdGVtcGxhdGUKQEAgLTQsNyArNCw3IEBAIHZl cnNpb249MC4xOC4zCiByZXZpc2lvbj05CiBidWlsZF9zdHlsZT1xbWFrZQogY29uZmlndXJlX2Fy Z3M9IlNZU1RFTV9RVUFaSVA9MSBTWVNURU1fUVVBWklQX0xERkxBR1M9LWxxdWF6aXA1IgotaG9z dG1ha2VkZXBlbmRzPSJxdDUtcW1ha2UgbGliZ2RhbC10b29scyIKK2hvc3RtYWtlZGVwZW5kcz0i cXQ1LXFtYWtlIGxpYmdkYWwtdG9vbHMgcXQ1LWhvc3QtdG9vbHMiCiBtYWtlZGVwZW5kcz0ibGli Z2RhbC1kZXZlbCBwcm9qLWRldmVsIHF0NS1kZWNsYXJhdGl2ZS1kZXZlbCBxdDUtc3ZnLWRldmVs CiAgcXQ1LXRvb2xzLWRldmVsIHF0NS13ZWJraXQtZGV2ZWwgcXVhemlwLWRldmVsIgogc2hvcnRf ZGVzYz0iT3BlbnN0cmVldG1hcCBtYXAgZWRpdG9yIgpAQCAtMTcsOSArMTcsNSBAQCBjaGVja3N1 bT1kNmIzZTRkOTgyYjJjN2I4MjMzMWJjNWJjOGQ5OTNkNzMzYzQ0MzI1MGYwMjkxOWMzYzRkYmQ2 OTI0ZTZlOTQ3CiBDWFhGTEFHUz0iLURBQ0NFUFRfVVNFX09GX0RFUFJFQ0FURURfUFJPSl9BUElf SCIKIAogaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCi0JaG9zdG1ha2VkZXBlbmRzKz0iIHF0 NS1ob3N0LXRvb2xzIHF0NS1zdmctZGV2ZWwgcXQ1LXdlYmtpdC1kZXZlbCIKLQlDWFhGTEFHUys9 IiAtSSR7WEJQU19DUk9TU19CQVNFfS91c3IvaW5jbHVkZS9xdDUiCi0JZm9yIGkgaW4gJHtYQlBT X0NST1NTX0JBU0V9L3Vzci9pbmNsdWRlL3F0NS8qOyBkbwotCQlDWFhGTEFHUys9IiAtSSRpIgot CWRvbmUKKwlob3N0bWFrZWRlcGVuZHMrPSIgcXQ1LXN2Zy1kZXZlbCBxdDUtd2Via2l0LWRldmVs IgogZmkKCkZyb20gMjg0NGU4MDI4NDBkMjU2ZDcwMjcyMTFkNWFhNmVjMzI4NDZkYTM5MiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTog VHVlLCAyIEp1bCAyMDE5IDE5OjAwOjM4ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwOC8xN10gY3V0 ZW1hcmtlZDogYWRkIHBhdGNoIGZvciBxdDUuMTMKCi0tLQogc3JjcGtncy9jdXRlbWFya2VkL3Bh dGNoZXMvUUFjdGlvbi5wYXRjaCB8IDEwICsrKysrKysrKysKIHNyY3BrZ3MvY3V0ZW1hcmtlZC90 ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgNCArKysrCiAyIGZpbGVzIGNoYW5nZWQsIDE0IGluc2Vy dGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2N1dGVtYXJrZWQvcGF0Y2hlcy9R QWN0aW9uLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jdXRlbWFya2VkL3BhdGNoZXMvUUFj dGlvbi5wYXRjaCBiL3NyY3BrZ3MvY3V0ZW1hcmtlZC9wYXRjaGVzL1FBY3Rpb24ucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFiZWQ1YWQxZDRmCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9jdXRlbWFya2VkL3BhdGNoZXMvUUFjdGlvbi5wYXRjaApAQCAt MCwwICsxLDEwIEBACistLS0gYXBwL29wdGlvbnNkaWFsb2cuY3BwCTIwMTYtMDMtMjggMTM6NDg6 NTAuMDAwMDAwMDAwICswMjAwCisrKysgLQkyMDE5LTA3LTAyIDE4OjU5OjM2LjgzMjM3NDA2NSAr MDIwMAorQEAgLTE3LDYgKzE3LDcgQEAKKyAjaW5jbHVkZSAib3B0aW9uc2RpYWxvZy5oIgorICNp bmNsdWRlICJ1aV9vcHRpb25zZGlhbG9nLmgiCisgCisrI2luY2x1ZGUgPFFBY3Rpb24+CisgI2lu Y2x1ZGUgPFFGb250Q29tYm9Cb3g+CisgI2luY2x1ZGUgPFFJdGVtRWRpdG9yRmFjdG9yeT4KKyAj aW5jbHVkZSA8UUtleVNlcXVlbmNlPgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jdXRlbWFya2VkL3Rl bXBsYXRlIGIvc3JjcGtncy9jdXRlbWFya2VkL3RlbXBsYXRlCmluZGV4IDdkNGNmY2NlMTdhLi41 Mzk5N2FkZDllZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9jdXRlbWFya2VkL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvY3V0ZW1hcmtlZC90ZW1wbGF0ZQpAQCAtMTUsNiArMTUsMTAgQEAgaG9tZXBhZ2U9 Imh0dHA6Ly9jbG9vc2UuZ2l0aHViLmlvL0N1dGVNYXJrRWQvIgogZGlzdGZpbGVzPSJodHRwczov L2dpdGh1Yi5jb20vY2xvb3NlLyR7cGtnbmFtZX0vYXJjaGl2ZS92JHt2ZXJzaW9ufS50YXIuZ3oi CiBjaGVja3N1bT03OGE0MTgwOGMyZjA0NTIzNzU4MTBhYmRmZjc2ZWVhYWVlMDEyZjhkMTM2OGEy Yjg3NzJlYzZiNGQyY2VlZWM4CiAKK3ByZV9idWlsZCgpIHsKKwlscmVsZWFzZSBhcHAvYXBwLnBy bworfQorCiBpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KIAlob3N0bWFrZWRlcGVuZHMrPSIg cXQ1LWRldmVsIHF0NS13ZWJraXQtZGV2ZWwiCiBmaQoKRnJvbSA5MzIyZTY2YTZiYTE0NDI1MjA1 YTg0ZGU2NjYxZDFkODYxNTA3NmQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2hu IDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBUdWUsIDIgSnVsIDIwMTkgMTk6Mjc6MTcgKzAyMDAK U3ViamVjdDogW1BBVENIIDA5LzE3XSBkdGt3aWRnZXQ6IHJlYnVpbGQgYWdhaW5zdCBxdDUuMTMK Ci0tLQogc3JjcGtncy9kdGt3aWRnZXQvcGF0Y2hlcy9xdDUuMTMucGF0Y2ggfCAzOSArKysrKysr KysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9kdGt3aWRnZXQvdGVtcGxhdGUgICAgICAgICAg ICAgfCAgNCArKy0KIDIgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZHRrd2lkZ2V0L3BhdGNoZXMvcXQ1LjEz LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9kdGt3aWRnZXQvcGF0Y2hlcy9xdDUuMTMucGF0 Y2ggYi9zcmNwa2dzL2R0a3dpZGdldC9wYXRjaGVzL3F0NS4xMy5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTc2NjIxYTNmM2EKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL2R0a3dpZGdldC9wYXRjaGVzL3F0NS4xMy5wYXRjaApAQCAtMCwwICsxLDM5IEBA CitkaWZmIC0tZ2l0IGEvc3JjL3dpZGdldHMvZGFib3V0ZGlhbG9nLmNwcCBiL3NyYy93aWRnZXRz L2RhYm91dGRpYWxvZy5jcHAKK2luZGV4IDVjNmJhOTEuLmEzM2ZkOTQgMTAwNjQ0CistLS0gc3Jj L3dpZGdldHMvZGFib3V0ZGlhbG9nLmNwcAorKysrIHNyYy93aWRnZXRzL2RhYm91dGRpYWxvZy5j cHAKK0BAIC01NzUsNiArNTc1LDYgQEAgdm9pZCBEQWJvdXREaWFsb2c6OnNob3dFdmVudChRU2hv d0V2ZW50ICpldmVudCkKKyAgICAgfQorIH0KKyAKKy0jaW5jbHVkZSAibW9jX2RhYm91dGRpYWxv Zy5jcHAiCistCisgRFdJREdFVF9FTkRfTkFNRVNQQUNFCisrCisrI2luY2x1ZGUgIm1vY19kYWJv dXRkaWFsb2cuY3BwIgorZGlmZiAtLWdpdCBhL3NyYy93aWRnZXRzL2RpcHY0bGluZWVkaXQuY3Bw IGIvc3JjL3dpZGdldHMvZGlwdjRsaW5lZWRpdC5jcHAKK2luZGV4IDRlZmU2ZTQuLjFjYzY4YjQg MTAwNjQ0CistLS0gc3JjL3dpZGdldHMvZGlwdjRsaW5lZWRpdC5jcHAKKysrKyBzcmMvd2lkZ2V0 cy9kaXB2NGxpbmVlZGl0LmNwcAorQEAgLTUzMCw2ICs1MzAsNiBAQCBib29sIERJcHY0TGluZUVk aXQ6OmV2ZW50RmlsdGVyKFFPYmplY3QgKm9iaiwgUUV2ZW50ICplKQorICAgICByZXR1cm4gRExp bmVFZGl0OjpldmVudEZpbHRlcihvYmosIGUpOworIH0KKyAKKy0jaW5jbHVkZSAibW9jX2RpcHY0 bGluZWVkaXQuY3BwIgorLQorIERXSURHRVRfRU5EX05BTUVTUEFDRQorKworKyNpbmNsdWRlICJt b2NfZGlwdjRsaW5lZWRpdC5jcHAiCitkaWZmIC0tZ2l0IGEvc3JjL3dpZGdldHMvZGxpc3R2aWV3 LmNwcCBiL3NyYy93aWRnZXRzL2RsaXN0dmlldy5jcHAKK2luZGV4IDBkY2MyNDQuLjUyM2ViZDUg MTAwNjQ0CistLS0gc3JjL3dpZGdldHMvZGxpc3R2aWV3LmNwcAorKysrIHNyYy93aWRnZXRzL2Rs aXN0dmlldy5jcHAKK0BAIC03MDksNiArNzA5LDYgQEAgYm9vbCBETGlzdFZpZXc6OmVkaXQoY29u c3QgUU1vZGVsSW5kZXggJmluZGV4LCBRQWJzdHJhY3RJdGVtVmlldzo6RWRpdFRyaWdnZXIgdHIK KyAgICAgcmV0dXJuIHRtcDsKKyB9CisgCistI2luY2x1ZGUgIm1vY19kbGlzdHZpZXcuY3BwIgor LQorIERXSURHRVRfRU5EX05BTUVTUEFDRQorKworKyNpbmNsdWRlICJtb2NfZGxpc3R2aWV3LmNw cCIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZHRrd2lkZ2V0L3RlbXBsYXRlIGIvc3JjcGtncy9kdGt3 aWRnZXQvdGVtcGxhdGUKaW5kZXggN2RjNjU0N2IyYjcuLjZmYmFjOTE2ZDliIDEwMDY0NAotLS0g YS9zcmNwa2dzL2R0a3dpZGdldC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2R0a3dpZGdldC90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2R0a3dpZGdldCcKIHBr Z25hbWU9ZHRrd2lkZ2V0CiB2ZXJzaW9uPTIuMC4xNAotcmV2aXNpb249MQorcmV2aXNpb249Mgog YnVpbGRfc3R5bGU9cW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSJEQlVTX1ZFUlNJT05fMF80XzI9WUVT IExJQl9JTlNUQUxMX0RJUj0vdXNyL2xpYiBWRVJTSU9OPSR7dmVyc2lvbn0iCiBob3N0bWFrZWRl cGVuZHM9InBrZy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIgpAQCAtMjEsNiArMjEs OCBAQCBpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KIAlxdDUtc3ZnLWRldmVsIGdzZXR0aW5n cy1xdC1kZXZlbCIKIGZpCiAKK25vY3Jvc3M9eWVzCisKIGR0a3dpZGdldC1kZXZlbF9wYWNrYWdl KCkgewogCWRlcGVuZHM9IiR7c291cmNlcGtnfT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSBkdGtj b3JlLWRldmVsIgogCXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVudCBmaWxlcyIKCkZyb20gNWE1 Mzk2NGNiYzJiZmE4OTJhODdkNzFhMmNhY2JiMTk1ZjE3OGViMiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogVHVlLCAyIEp1bCAyMDE5 IDIxOjQzOjE4ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxMC8xN10gZ29sZGVuZGljdDogYWRkIHBh dGNoZXMgZm9yIHF0NS4xMwoKLS0tCiBzcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9RQWN0aW9u LnBhdGNoIHwgMjAgKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvZ29sZGVuZGljdC9wYXRj aGVzL1FJY29uLnBhdGNoICAgfCAxMCArKysrKysrKysrCiBzcmNwa2dzL2dvbGRlbmRpY3QvdGVt cGxhdGUgICAgICAgICAgICAgIHwgIDYgKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDM0IGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9nb2xk ZW5kaWN0L3BhdGNoZXMvUUFjdGlvbi5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv Z29sZGVuZGljdC9wYXRjaGVzL1FJY29uLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nb2xk ZW5kaWN0L3BhdGNoZXMvUUFjdGlvbi5wYXRjaCBiL3NyY3BrZ3MvZ29sZGVuZGljdC9wYXRjaGVz L1FBY3Rpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE0 NmZlMzRlMmZhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMv UUFjdGlvbi5wYXRjaApAQCAtMCwwICsxLDIwIEBACistLS0gZnVsbHRleHRzZWFyY2guaGgJMjAx Ni0wNC0yNiAxODozMjo1MC4wMDAwMDAwMDAgKzAyMDAKKysrKyAtCTIwMTktMDctMDIgMjE6Mjc6 MzcuODgxMDM2MzM5ICswMjAwCitAQCAtMSw2ICsxLDcgQEAKKyAjaWZuZGVmIF9fRlVMTFRFWFRT RUFSQ0hfSEhfSU5DTFVERURfXworICNkZWZpbmUgX19GVUxMVEVYVFNFQVJDSF9ISF9JTkNMVURF RF9fCisgCisrI2luY2x1ZGUgPFFBY3Rpb24+CisgI2luY2x1ZGUgPFFTZW1hcGhvcmU+CisgI2lu Y2x1ZGUgPFFTdHJpbmdMaXN0PgorICNpbmNsdWRlIDxRUmVnRXhwPgorLS0tIGdyb3Vwc193aWRn ZXRzLmhoCTIwMTYtMDQtMjYgMTg6MzI6NTAuMDAwMDAwMDAwICswMjAwCisrKysgLQkyMDE5LTA3 LTAyIDIxOjMxOjUyLjM1MDMwODg2OCArMDIwMAorQEAgLTEwLDYgKzEwLDcgQEAKKyAKKyAjaW5j bHVkZSA8UUxpc3RXaWRnZXQ+CisgI2luY2x1ZGUgPFFTb3J0RmlsdGVyUHJveHlNb2RlbD4KKysj aW5jbHVkZSA8UUFjdGlvbj4KKyAKKyAjaW5jbHVkZSAiY29uZmlnLmhoIgorICNpbmNsdWRlICJk aWN0aW9uYXJ5LmhoIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nb2xkZW5kaWN0L3BhdGNoZXMvUUlj b24ucGF0Y2ggYi9zcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9RSWNvbi5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWEwNjZkMTk0NmYKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2dvbGRlbmRpY3QvcGF0Y2hlcy9RSWNvbi5wYXRjaApAQCAtMCwwICsx LDEwIEBACistLS0gaW5pdGlhbGl6aW5nLmNjCTIwMTYtMDQtMjYgMTg6MzI6NTAuMDAwMDAwMDAw ICswMjAwCisrKysgLQkyMDE5LTA3LTAyIDIxOjI2OjE5LjA4ODMxNzQwMSArMDIwMAorQEAgLTMs NiArMyw3IEBACisgCisgI2luY2x1ZGUgImluaXRpYWxpemluZy5oaCIKKyAjaW5jbHVkZSA8UUNs b3NlRXZlbnQ+CisrI2luY2x1ZGUgPFFJY29uPgorIAorICNpZiAoIFFUX1ZFUlNJT04gPj0gUVRf VkVSU0lPTl9DSEVDSyggNSwgMCwgMCApICkgJiYgZGVmaW5lZCggUV9PU19XSU4zMiApCisgI2lu Y2x1ZGUgPFF0V2lkZ2V0cy9RU3R5bGVGYWN0b3J5PgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nb2xk ZW5kaWN0L3RlbXBsYXRlIGIvc3JjcGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlCmluZGV4IGRlMDkx ODk5M2M2Li4xZDE0YzBiZDVhYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9nb2xkZW5kaWN0L3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZQpAQCAtNCwxOCArNCwyMCBAQCB2 ZXJzaW9uPTEuNS4wUkMyCiByZXZpc2lvbj00CiB3cmtzcmM9IiR7cGtnbmFtZX0tJHt2ZXJzaW9u L1JDLy1SQ30iCiBidWlsZF9zdHlsZT1xbWFrZQotaG9zdG1ha2VkZXBlbmRzPSJxdDUtcW1ha2Ug cGtnLWNvbmZpZyBxdDUtdG9vbHMiCitob3N0bWFrZWRlcGVuZHM9InF0NS1xbWFrZSBwa2ctY29u ZmlnIHF0NS1ob3N0LXRvb2xzIgogbWFrZWRlcGVuZHM9InRpZmYtZGV2ZWwgcXQ1LWRldmVsIGxp YnZvcmJpcy1kZXZlbCB6bGliLWRldmVsCiAgbGliWHRzdC1kZXZlbCBodW5zcGVsbC1kZXZlbCBx dDUtdG9vbHMtZGV2ZWwgcXQ1LWRlY2xhcmF0aXZlLWRldmVsCiAgcXQ1LXdlYmtpdC1kZXZlbCBs em8tZGV2ZWwgYnppcDItZGV2ZWwgbGliYW8tZGV2ZWwgcXQ1LXN2Zy1kZXZlbAogIGxpYmViLWRl dmVsIHF0NS14MTFleHRyYXMtZGV2ZWwgZmZtcGVnLWRldmVsIgogc2hvcnRfZGVzYz0iQSBmZWF0 dXJlLXJpY2ggZGljdGlvbmFyeSBsb29rdXAgcHJvZ3JhbSIKIG1haW50YWluZXI9IkpvaG4gPGpv aG56QHBvc3Rlby5uZXQ+IgotbGljZW5zZT0iR1BMLTMiCitsaWNlbnNlPSJHUEwtMy4wLW9yLWxh dGVyIgogaG9tZXBhZ2U9Imh0dHA6Ly9nb2xkZW5kaWN0Lm9yZy8iCiBkaXN0ZmlsZXM9Imh0dHBz Oi8vZ2l0aHViLmNvbS9nb2xkZW5kaWN0L2dvbGRlbmRpY3QvYXJjaGl2ZS8ke3ZlcnNpb24vUkMv LVJDfS50YXIuZ3oiCiBjaGVja3N1bT1iY2NlZTBhM2QzOTAyZjhmYTMxZTQzOWUyMjBhNDA1MDY1 ZmZmNzc0ZTVmOGM1ODFiZTJiMDc0M2QzZjgzZmRlCiAKK0NYWEZMQUdTPSItV25vLWRlcHJlY2F0 ZWQiCisKIGlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgogCWhvc3RtYWtlZGVwZW5kcys9IiBx dDUtdG9vbHMtZGV2ZWwgcXQ1LXdlYmtpdC1kZXZlbCBxdDUtaG9zdC10b29scyBxdDUtc3ZnLWRl dmVsIHF0NS14MTFleHRyYXMtZGV2ZWwiCiBmaQoKRnJvbSA5MDYwYTE3NzhiNTZlMDFkM2RjMDVm M2IyMjMwMWIzNTExZWJkNDk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxq b2huekBwb3N0ZW8ubmV0PgpEYXRlOiBXZWQsIDMgSnVsIDIwMTkgMDA6MTM6NTEgKzAyMDAKU3Vi amVjdDogW1BBVENIIDExLzE3XSBtcGMtcXQ6IGNoYW5nZSBkaXN0ZmlsZSB0byBzb3VyY2VzLnZv aWRsaW51eC5vcmcKCnRoZSB1cHN0cmVhbSBnaXRodWIgYWNjb3VudCBzZWVtcyB0byBiZSBkZWxl dGVkCi0tLQogc3JjcGtncy9tcGMtcXQvdGVtcGxhdGUgfCA3ICsrKystLS0KIDEgZmlsZSBjaGFu Z2VkLCA0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9tcGMtcXQvdGVtcGxhdGUgYi9zcmNwa2dzL21wYy1xdC90ZW1wbGF0ZQppbmRleCBhZTgwOGM4 OTRlZi4uMTgyMDcyZGYxMTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbXBjLXF0L3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvbXBjLXF0L3RlbXBsYXRlCkBAIC00LDE1ICs0LDE2IEBAIHZlcnNpb249MTgu MDgKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPXFtYWtlCiBjb25maWd1cmVfYXJncz0iTVBDUVRf VkVSU0lPTj0ke3ZlcnNpb259IgotaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoraG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1xbWFrZSIKIG1ha2VkZXBlbmRzPSJxdDUtZGV2ZWwg cXQ1LXgxMWV4dHJhcy1kZXZlbCBtcHYtZGV2ZWwiCiBzaG9ydF9kZXNjPSJDbG9uZSBvZiBNZWRp YSBQbGF5ZXIgQ2xhc3NpYyByZWltcGxlbWVudGVkIGluIFF0IgogbWFpbnRhaW5lcj0iU29saXR1 ZGVTRiA8c29saXR1ZGVzZkBwcm90b25tYWlsLmNvbT4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxh dGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9jbWRya290b3JpL21wYy1xdCIKLWRp c3RmaWxlcz0iJHtob21lcGFnZX0vYXJjaGl2ZS92JHt2ZXJzaW9ufS50YXIuZ3oiCisjZGlzdGZp bGVzPSIke2hvbWVwYWdlfS9hcmNoaXZlL3Yke3ZlcnNpb259LnRhci5neiIKK2Rpc3RmaWxlcz0i aHR0cHM6Ly9zb3VyY2VzLnZvaWRsaW51eC5vcmcvbXBjLXF0LTE4LjA4L3YxOC4wOC50YXIuZ3oi CiBjaGVja3N1bT1jNThmZDkwOTI2NzczYzlkYThiZGZjMWE4ZTRkYmEwYjk1Y2JjNThjZWU2ZGI5 OTgxZThkZTk0ZmQ5NTM0NDA2CiAKIGlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgotCWhvc3Rt YWtlZGVwZW5kcys9IiBxdDUtcW1ha2UgcXQ1LXgxMWV4dHJhcy1kZXZlbCIKKwlob3N0bWFrZWRl cGVuZHMrPSIgcXQ1LXgxMWV4dHJhcy1kZXZlbCIKIGZpCgpGcm9tIDIxNGQzMzIxMTY0ZDZhNjlh OWYwMDU3YmU4MTZiNzg5ZmI2MjYyOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpv aG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IFdlZCwgMyBKdWwgMjAxOSAwNDowMDo0NiArMDIw MApTdWJqZWN0OiBbUEFUQ0ggMTIvMTddIHZva29zY3JlZW46IHRlbXBsYXRlIGZpeHVwIGZvciBx dDUuMTMKCi0tLQogc3JjcGtncy92b2tvc2NyZWVuL3RlbXBsYXRlIHwgOCArKysrKystLQogMSBm aWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL3Zva29zY3JlZW4vdGVtcGxhdGUgYi9zcmNwa2dzL3Zva29zY3JlZW4vdGVtcGxh dGUKaW5kZXggZDIwMWM4MGNkNTcuLjNiYWY3M2YxYzY3IDEwMDY0NAotLS0gYS9zcmNwa2dzL3Zv a29zY3JlZW4vdGVtcGxhdGUKKysrIGIvc3JjcGtncy92b2tvc2NyZWVuL3RlbXBsYXRlCkBAIC0z LDEyICszLDE2IEBAIHBrZ25hbWU9dm9rb3NjcmVlbgogdmVyc2lvbj0yLjUuMAogcmV2aXNpb249 MQogYnVpbGRfc3R5bGU9cW1ha2UKLWhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtdG9v bHMgcXQ1LXFtYWtlIgoraG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHF0NS1ob3N0LXRvb2xz IHF0NS1xbWFrZSIKIG1ha2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBsaWJYMTEtZGV2ZWwgbGli WHJhbmRyLWRldmVsIHF0NS1kZXZlbCBxdDUteDExZXh0cmFzLWRldmVsIHY0bC11dGlscy1kZXZl bCIKIGRlcGVuZHM9ImZmbXBlZyIKIHNob3J0X2Rlc2M9IkVhc3kgdG8gdXNlIHNjcmVlbmNhc3Qg Y3JlYXRvciIKIG1haW50YWluZXI9IkR1bmNhZW4gPGR1bmNhZW5Adm9pZGxpbnV4Lm9yZz4iCi1s aWNlbnNlPSJHUEwtMiIKK2xpY2Vuc2U9IkdQTC0yLjAtb25seSIKIGhvbWVwYWdlPSJodHRwOi8v bGludXhlY2tlLnZvbGtvaC5kZS92b2tvc2NyZWVuL3Zva29zY3JlZW4uaHRtbCIKIGRpc3RmaWxl cz0iaHR0cHM6Ly9naXRodWIuY29tL3Zrb2hhdXB0L3Zva29zY3JlZW4vYXJjaGl2ZS8ke3ZlcnNp b259LnRhci5neiIKIGNoZWNrc3VtPTdmNWQ5YWJmYTNiNGExZjdjZTY1NzgzOGY1MTY5Y2Q4MGE1 OTBiZTQ5MGRhY2QwYWQxNzUxODUzYTM4ZjQyNDUKKworaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0 aGVuCisJaG9zdG1ha2VkZXBlbmRzKz0iIHF0NS14MTFleHRyYXMtZGV2ZWwiCitmaQoKRnJvbSA0 MTg1NzJhYmI1MWM5ZWExZDAyNzI5YTI1MGNlNDc5YjNjMmMxYzM0IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBUaHUsIDQgSnVsIDIw MTkgMjE6MDg6MDcgKzAyMDAKU3ViamVjdDogW1BBVENIIDEzLzE3XSBvY3RveGJwczogZml4ZXMg Zm9yIHF0NS4xMwoKLS0tCiBzcmNwa2dzL29jdG94YnBzL3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9vY3RveGJwcy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb2N0b3hicHMvdGVtcGxhdGUKaW5kZXgg NjFhNGJkNTAwMTMuLmFiYjc4ODY1ZjY5IDEwMDY0NAotLS0gYS9zcmNwa2dzL29jdG94YnBzL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3Mvb2N0b3hicHMvdGVtcGxhdGUKQEAgLTE1LDcgKzE1LDcgQEAg Y2hlY2tzdW09NmY3NjQzYmIwNzk2MGQ4YzhmNjBjZTcwZGM0OTVmODY2YWU2MGE0ZDZkODE2MGE3 ZjEwOGY3OWJmNTNkMmQyMgogCiBkb19jb25maWd1cmUoKSB7CiAJZm9yIF9kaXIgaW4gJHt3cmtz cmN9ICR7d3Jrc3JjfS9ub3RpZmllci9vY3RveGJwcy1ub3RpZmllcjsgZG8KLQkJY2QgJF9kaXIg JiYgcW1ha2UgJHtjb25maWd1cmVfYXJnc30gXAorCQljZCAkX2RpciAmJiBxbWFrZS1xdDUgJHtj b25maWd1cmVfYXJnc30gXAogCQkJUFJFRklYPS91c3IgXAogCQkJTElCPS91c3IvbGliIFwKIAkJ CVFNQUtFX0NGTEFHUz0iJHtDRkxBR1N9IiBcCgpGcm9tIGJkNDk5NWYyMDI4YTYyODE0ZTJkNGM4 N2E1ZDJiZDQ2ZmY3NGJjZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4gPGpv aG56QHBvc3Rlby5uZXQ+CkRhdGU6IFRodSwgNCBKdWwgMjAxOSAyMTo0NTo0NiArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMTQvMTddIHF0cGFzczogc2V0IHRvIGJyb2tlbgoKLS0tCiBzcmNwa2dzL3F0 cGFzcy90ZW1wbGF0ZSB8IDYgKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXRwYXNzL3RlbXBsYXRlIGIv c3JjcGtncy9xdHBhc3MvdGVtcGxhdGUKaW5kZXggMWY1NzgwYmFkZWIuLmMxMmNiYjc0ZGEwIDEw MDY0NAotLS0gYS9zcmNwa2dzL3F0cGFzcy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0cGFzcy90 ZW1wbGF0ZQpAQCAtNCw4ICs0LDggQEAgdmVyc2lvbj0xLjIuMwogcmV2aXNpb249MQogd3Jrc3Jj PSJRdFBhc3MtJHt2ZXJzaW9ufSIKIGJ1aWxkX3N0eWxlPXFtYWtlCi1ob3N0bWFrZWRlcGVuZHM9 InF0NS1kZXZlbCBxdDUtdG9vbHMiCi1tYWtlZGVwZW5kcz0icXQ1LWRldmVsIgoraG9zdG1ha2Vk ZXBlbmRzPSJxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMiCittYWtlZGVwZW5kcz0icXQ1LWRldmVs IHF0NS1zdmctZGV2ZWwiCiBkZXBlbmRzPSJwYXNzIHB3Z2VuIgogc2hvcnRfZGVzYz0iTXVsdGkt cGxhdGZvcm0gR1VJIGZvciBwYXNzIgogbWFpbnRhaW5lcj0iYW5uZWphbiA8YnJvdXdlckBhbm5l amFuLmNvbT4iCkBAIC0xNSw2ICsxNSw4IEBAIGhvbWVwYWdlPSJodHRwczovL3F0cGFzcy5vcmcv IgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vSUpIYWNrLyR7cGtnbmFtZX0vYXJjaGl2 ZS92JHt2ZXJzaW9ufS50YXIuZ3oiCiBjaGVja3N1bT02NThiNjMyYmIwNmU5YWQ2M2Q1MDc2YWFj ZTVmZTBlNTdhMGY3ZjIwZTBhYWZkZmI2NGY4NmEyNWJkYWRiYjA3CiAKK2Jyb2tlbj15ZXMKKwog ZG9faW5zdGFsbCgpIHsKIAl2YmluIG1haW4vcXRwYXNzCiAKCkZyb20gYTI0MGM4NDc1OWFhOTI4 NzIxYTdlZmZhMTFkZjVjYjRmNjMzMTdjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog Sm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogU2F0LCA2IEp1bCAyMDE5IDE2OjU2OjMxICsw MjAwClN1YmplY3Q6IFtQQVRDSCAxNS8xN10gUmV2ZXJ0ICJ4YnBzLXNyYy9jaHJvb3Quc2g6IHNh bml0aXplIFBBVEguIgoKVGhpcyByZXZlcnRzIGNvbW1pdCBlMGU0OGQ2ZjZhM2UzOTc1YmQ4Njdk NWFlOTQ4NWViZmJiNzZhNjg3LgotLS0KIGNvbW1vbi94YnBzLXNyYy9zaHV0aWxzL2Nocm9vdC5z aCB8IDYgKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2NvbW1vbi94YnBzLXNyYy9zaHV0aWxzL2Nocm9vdC5zaCBiL2Nv bW1vbi94YnBzLXNyYy9zaHV0aWxzL2Nocm9vdC5zaAppbmRleCAxN2JhOWRkZTZjYS4uZWE4Zjdi NjI0NjUgMTAwNjQ0Ci0tLSBhL2NvbW1vbi94YnBzLXNyYy9zaHV0aWxzL2Nocm9vdC5zaAorKysg Yi9jb21tb24veGJwcy1zcmMvc2h1dGlscy9jaHJvb3Quc2gKQEAgLTI2LDcgKzI2LDcgQEAgWEJQ U19TUkNfVkVSU0lPTj0iJFhCUFNfU1JDX1ZFUlNJT04iCiAKIC4gL2V0Yy94YnBzL3hicHMtc3Jj LmNvbmYKIAotUEFUSD0vdm9pZC1wYWNrYWdlczovdXNyL2JpbgorUEFUSD0vdm9pZC1wYWNrYWdl czovdXNyL2JpbjovdXNyL3NiaW4KIAogZXhlYyBlbnYgLWkgLS0gU0hFTEw9L2Jpbi9zaCBQQVRI PSJcJFBBVEgiIERJU1RDQ19IT1NUUz0iXCRYQlBTX0RJU1RDQ19IT1NUUyIgRElTVENDX0RJUj0i L2hvc3QvZGlzdGNjIiBcCiAgICAgJHtYQlBTX0FSQ0grWEJQU19BUkNIPSRYQlBTX0FSQ0h9ICR7 WEJQU19DSEVDS19QS0dTK1hCUFNfQ0hFQ0tfUEtHUz0kWEJQU19DSEVDS19QS0dTfSBcCkBAIC0x MjEsNyArMTIxLDcgQEAgY2hyb290X3N5bmNfcmVwb3MoKSB7CiAgICAgICAgICAgICAke1hCUFNf TUFTVEVSRElSfS9ldGMveGJwcy5kLzIyLXJlcG9zaXRvcnktcmVtb3RlLXg4Nl82NC5jb25mCiAg ICAgZmkKIAotICAgICMgaWYgLU4gaXMgc2V0LCBnZXQgcmlkIG9mIHJlbW90ZSByZXBvcyBmcm9t IHg4Nl82NCAoZ2xpYmMpLgorICAgICMgaWYgLU4gaXMgc2V0LCBjb21tZW50IG91dCByZW1vdGUg cmVwb3NpdG9yaWVzIGZyb20geGJwcy5jb25mLgogICAgIGlmIFsgLW4gIiRYQlBTX1NLSVBfUkVN T1RFUkVQT1MiIF07IHRoZW4KICAgICAgICAgcm0gLWYgJHtYQlBTX01BU1RFUkRJUn0vZXRjL3hi cHMuZC8yMC1yZXBvc2l0b3J5LXJlbW90ZS5jb25mCiAgICAgICAgIHJtIC1mICR7WEJQU19NQVNU RVJESVJ9L2V0Yy94YnBzLmQvMjItcmVwb3NpdG9yeS1yZW1vdGUteDg2XzY0LmNvbmYKQEAgLTE5 OCw3ICsxOTgsNyBAQCBjaHJvb3RfaGFuZGxlcigpIHsKICAgICAgICAgWyAtbiAiJFhCUFNfQklO UEtHX0VYSVNUUyIgXSAmJiBhcmc9IiRhcmcgLUUiCiAKICAgICAgICAgYWN0aW9uPSIkYXJnICRh Y3Rpb24iCi0gICAgICAgIGVudiAtaSAtLSBQQVRIPSIvdXNyL2JpbiIgU0hFTEw9L2Jpbi9zaCBc CisgICAgICAgIGVudiAtaSAtLSBQQVRIPSIvdXNyL2JpbjovdXNyL3NiaW46JFBBVEgiIFNIRUxM PS9iaW4vc2ggXAogICAgICAgICAgICAgSE9NRT0vdG1wIElOX0NIUk9PVD0xIExDX0NPTExBVEU9 QyBMQU5HPWVuX1VTLlVURi04IFwKICAgICAgICAgICAgIFNPVVJDRV9EQVRFX0VQT0NIPSIkU09V UkNFX0RBVEVfRVBPQ0giIFwKICAgICAgICAgICAgIFhCUFNfQUxMT1dfQ0hST09UX0JSRUFLT1VU PSIkWEJQU19BTExPV19DSFJPT1RfQlJFQUtPVVQiIFwKCkZyb20gOGI2MWFmMmM3ZWJjYWJlNDE2 MmFiZTQwYWYxMmZhZTVhYmIxYTc1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9o biA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogU2F0LCA2IEp1bCAyMDE5IDIwOjEwOjMyICswMjAw ClN1YmplY3Q6IFtQQVRDSCAxNi8xN10gbGluc3NpZDogZml4IGJ1aWxkIGZvciBxdDUuMTMKCi0t LQogc3JjcGtncy9saW5zc2lkL3BhdGNoZXMvcHJvamVjdC5wYXRjaCAgICAgfCAgMyArLQogc3Jj cGtncy9saW5zc2lkL3BhdGNoZXMvcXd0LWluY2x1ZGUucGF0Y2ggfCA1NiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogc3JjcGtncy9saW5zc2lkL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgfCAg NiArKy0KIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkK IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xpbnNzaWQvcGF0Y2hlcy9xd3QtaW5jbHVkZS5w YXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGluc3NpZC9wYXRjaGVzL3Byb2plY3QucGF0Y2gg Yi9zcmNwa2dzL2xpbnNzaWQvcGF0Y2hlcy9wcm9qZWN0LnBhdGNoCmluZGV4IGEyMjgwMDdiYjIy Li4zNTY0MTlmODYyYiAxMDA2NDQKLS0tIGEvc3JjcGtncy9saW5zc2lkL3BhdGNoZXMvcHJvamVj dC5wYXRjaAorKysgYi9zcmNwa2dzL2xpbnNzaWQvcGF0Y2hlcy9wcm9qZWN0LnBhdGNoCkBAIC0y LDcgKzIsOCBAQAogKysrIGxpbnNzaWQtYXBwL2xpbnNzaWQtYXBwLnBybwogQEAgLTUsNyArNSw3 IEBACiAgQ09ORklHIC09IGRlYnVnX2FuZF9yZWxlYXNlIGFwcF9idW5kbGUgbGliX2J1bmRsZQot IENPTkZJRyArPSByZWxlYXNlIAorLUNPTkZJRyArPSByZWxlYXNlCisrQ09ORklHICs9IHJlbGVh c2UgcXd0CiAgUEtHQ09ORklHICs9CiAtUVQgPSBjb3JlIGd1aSB3aWRnZXRzIHN2ZwogK1FUID0g Y29yZSBndWkgd2lkZ2V0cwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saW5zc2lkL3BhdGNoZXMvcXd0 LWluY2x1ZGUucGF0Y2ggYi9zcmNwa2dzL2xpbnNzaWQvcGF0Y2hlcy9xd3QtaW5jbHVkZS5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRhMjVkNDJiMjEuLjAwMDAwMDAwMDAw Ci0tLSBhL3NyY3BrZ3MvbGluc3NpZC9wYXRjaGVzL3F3dC1pbmNsdWRlLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLS0tIGxpbnNzaWQtYXBwL01haW5Gb3JtLmNwcAotKysr IGxpbnNzaWQtYXBwL01haW5Gb3JtLmNwcAotQEAgLTIzLDE0ICsyMywxNCBAQAotICNpbmNsdWRl IDxRTWFpbldpbmRvdz4KLSAjaW5jbHVkZSA8UU1lc3NhZ2VCb3g+Ci0gI2luY2x1ZGUgPFFGb250 PgotLSNpbmNsdWRlIDxxd3QuaD4KLS0jaW5jbHVkZSA8cXd0X3Bsb3QuaD4KLS0jaW5jbHVkZSA8 cXd0X3Bsb3RfY3VydmUuaD4KLS0jaW5jbHVkZSA8cXd0X3Bsb3RfZ3JpZC5oPgotLSNpbmNsdWRl IDxxd3Rfc3ltYm9sLmg+Ci0tI2luY2x1ZGUgPHF3dF9wbG90X21hcmtlci5oPgotKyNpbmNsdWRl IDxxd3QvcXd0Lmg+Ci0rI2luY2x1ZGUgPHF3dC9xd3RfcGxvdC5oPgotKyNpbmNsdWRlIDxxd3Qv cXd0X3Bsb3RfY3VydmUuaD4KLSsjaW5jbHVkZSA8cXd0L3F3dF9wbG90X2dyaWQuaD4KLSsjaW5j bHVkZSA8cXd0L3F3dF9zeW1ib2wuaD4KLSsjaW5jbHVkZSA8cXd0L3F3dF9wbG90X21hcmtlci5o PgotICNpbmNsdWRlIDxRUG9pbnRGPgotLSNpbmNsdWRlIDxxd3Rfc2NhbGVfZHJhdy5oPgotKyNp bmNsdWRlIDxxd3QvcXd0X3NjYWxlX2RyYXcuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAj aW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotCi0tLS0gbGluc3Np ZC1hcHAvTWFpbkZvcm0uaAotKysrIGxpbnNzaWQtYXBwL01haW5Gb3JtLmgKLUBAIC0xMywxMSAr MTMsMTEgQEAKLSAjaW5jbHVkZSA8UUV2ZW50PgotICNpbmNsdWRlIDxRU3RyaW5nPgotICNpbmNs dWRlIDxRRm9udD4KLS0jaW5jbHVkZSA8cXd0Lmg+Ci0tI2luY2x1ZGUgPHF3dF9wbG90Lmg+Ci0t I2luY2x1ZGUgPHF3dF9wbG90X2N1cnZlLmg+Ci0tI2luY2x1ZGUgPHF3dF9wbG90X2dyaWQuaD4K LS0jaW5jbHVkZSA8cXd0X3NjYWxlX2RyYXcuaD4KLSsjaW5jbHVkZSA8cXd0L3F3dC5oPgotKyNp bmNsdWRlIDxxd3QvcXd0X3Bsb3QuaD4KLSsjaW5jbHVkZSA8cXd0L3F3dF9wbG90X2N1cnZlLmg+ Ci0rI2luY2x1ZGUgPHF3dC9xd3RfcGxvdF9ncmlkLmg+Ci0rI2luY2x1ZGUgPHF3dC9xd3Rfc2Nh bGVfZHJhdy5oPgotICNpbmNsdWRlICJ1aV9NYWluRm9ybS5oIgotICNpbmNsdWRlICJwcmVmc0Rp YWxvZy5oIgotICNpbmNsdWRlICJDdXN0b20uaCIKLQotLS0tIGxpbnNzaWQtYXBwL01haW5Gb3Jt LnVpCi0rKysgbGluc3NpZC1hcHAvTWFpbkZvcm0udWkKLUBAIC03NTcsNyArNzU3LDcgQEAKLSAg IDxjdXN0b213aWRnZXQ+Ci0gICAgPGNsYXNzPlF3dFBsb3Q8L2NsYXNzPgotICAgIDxleHRlbmRz PlFGcmFtZTwvZXh0ZW5kcz4KLS0gICA8aGVhZGVyPnF3dF9wbG90Lmg8L2hlYWRlcj4KLSsgICA8 aGVhZGVyPnF3dC9xd3RfcGxvdC5oPC9oZWFkZXI+Ci0gICAgPGNvbnRhaW5lcj4xPC9jb250YWlu ZXI+Ci0gICA8L2N1c3RvbXdpZGdldD4KLSAgPC9jdXN0b213aWRnZXRzPgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9saW5zc2lkL3RlbXBsYXRlIGIvc3JjcGtncy9saW5zc2lkL3RlbXBsYXRlCmluZGV4 IDgwNTA5ZDcxYmIxLi45NTE1MzJlMWJlOSAxMDA2NDQKLS0tIGEvc3JjcGtncy9saW5zc2lkL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvbGluc3NpZC90ZW1wbGF0ZQpAQCAtMyw3ICszLDcgQEAgcGtn bmFtZT1saW5zc2lkCiB2ZXJzaW9uPTMuNgogcmV2aXNpb249MgogYnVpbGRfc3R5bGU9cW1ha2UK LWhvc3RtYWtlZGVwZW5kcz0icXQ1LWRldmVsIgoraG9zdG1ha2VkZXBlbmRzPSJxdDUtcW1ha2Ug cXQ1LWhvc3QtdG9vbHMiCiBtYWtlZGVwZW5kcz0iYm9vc3QtZGV2ZWwgcXd0LWRldmVsIgogZGVw ZW5kcz0icXQ1LXN2ZyIKIHNob3J0X2Rlc2M9IkdyYXBoaWNhbCB3aXJlbGVzcyBBUCBzY2FubmVy IgpAQCAtMTIsMyArMTIsNyBAQCBsaWNlbnNlPSJHUEwtMy4wLW9ubHkiCiBob21lcGFnZT0iaHR0 cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGluc3NpZC8iCiBkaXN0ZmlsZXM9IiR7U09V UkNFRk9SR0VfU0lURX0vJHtwa2duYW1lfS8ke3BrZ25hbWV9XyR7dmVyc2lvbn0ub3JpZy50YXIu Z3oiCiBjaGVja3N1bT01NzMwMWVlOTNmNzA4ZjI1MTIzMTY2NjhiZjRlNzE4NTAyZjM3ZjIxYTVl OTNiNjhmYzYwNGE5MDMyZTNlNDljCisKK3ByZV9jb25maWd1cmUoKSB7CisJc2VkIC1lICJzJS91 c3IvaW5jbHVkZSUke1hCUFNfQ1JPU1NfQkFTRX0mJWciIC1pIGxpbnNzaWQtYXBwL2xpbnNzaWQt YXBwLnBybworfQoKRnJvbSA0YzNiMGJkOTlhZjI2YTZiYTQ4ZjhjYTMzZTMwMDJhZjAxNDczZGRi IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpE YXRlOiBTYXQsIDYgSnVsIDIwMTkgMjE6NDc6MjEgKzAyMDAKU3ViamVjdDogW1BBVENIIDE3LzE3 XSBkdGtjb3JlOiBzZXQgbm9jcm9zcwoKW2NpIHNraXBdCi0tLQogc3JjcGtncy9kdGtjb3JlL3Rl bXBsYXRlIHwgMjEgKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZHRrY29yZS90 ZW1wbGF0ZSBiL3NyY3BrZ3MvZHRrY29yZS90ZW1wbGF0ZQppbmRleCBjMmViNzMxZDk0OS4uYzEy YjQ5ODk5ODAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZHRrY29yZS90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2R0a2NvcmUvdGVtcGxhdGUKQEAgLTE4LDI2ICsxOCw3IEBAIGlmIFsgIiRDUk9TU19CVUlM RCIgXTt0aGVuCiAJaG9zdG1ha2VkZXBlbmRzKz0iIHF0NS1kZXZlbCBnc2V0dGluZ3MtcXQtZGV2 ZWwiCiBmaQogCi1wcmVfYnVpbGQoKSB7Ci0JIyBUaGlzIGlzIG5lZWRlZCBmb3IgbXVzbCwgZG9l cyBzb21laG93IG5vdCBnZXQgYnVpbGQgdGhlcmUgYXV0b21hdGljYWxseQotCW1ha2Ugc3ViLXRv b2xzLXFtYWtlX2FsbAotCW1ha2UgLUMgdG9vbHMgc3ViLWRlZXBpbi1vcy1yZWxlYXNlLWFsbAot fQotCi1wcmVfaW5zdGFsbCgpIHsKLQkjIFJlcGxhY2UgdGhlIGhvc3QgYXJjaCBiaW5hcnkgd2l0 aCB0YXJnZXQgYXJjaCBvbmUKLQljZCB0b29scy9kZWVwaW4tb3MtcmVsZWFzZQotCXJtICoubwot CXFtYWtlICR7Y29uZmlndXJlX2FyZ3N9IFwKLQkJUFJFRklYPS91c3IgXAotCQlMSUI9L3Vzci9s aWIgXAotCQlRTUFLRV9DQz0kQ0MgUU1BS0VfQ1hYPSRDWFggUU1BS0VfTElOSz0kQ1hYIFFNQUtF X0xJTktfQz0kQ0MgXAotCQlRTUFLRV9DRkxBR1M9IiR7Q0ZMQUdTfSIgXAotCQlRTUFLRV9DWFhG TEFHUz0iJHtDWFhGTEFHU30iIFwKLQkJUU1BS0VfTEZMQUdTPSIke0xERkxBR1N9IgotCW1ha2Ug Q0M9IiRDQyIgQ1hYPSIkQ1hYIiBMSU5LPSIkQ1hYIgotCWNkICR7d3Jrc3JjfQotfQorbm9jcm9z cz0iU29tZSBRTWFrZSBtZXNzIgogCiBkdGtjb3JlLWRldmVsX3BhY2thZ2UoKSB7CiAJc2hvcnRf ZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgo= --===============8259228764785562854==--