From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1I9POC-00053e-Md for qemu-devel@nongnu.org; Fri, 13 Jul 2007 13:57:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1I9POB-00052v-3T for qemu-devel@nongnu.org; Fri, 13 Jul 2007 13:57:12 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1I9POA-00052q-T3 for qemu-devel@nongnu.org; Fri, 13 Jul 2007 13:57:10 -0400 Received: from grayson.netsweng.com ([207.235.77.11]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1I9PO9-0005kL-Pk for qemu-devel@nongnu.org; Fri, 13 Jul 2007 13:57:10 -0400 Received: from amavis by grayson.netsweng.com with scanned-ok (Exim 3.36 #1 (Debian)) id 1I9PNo-0003Ws-00 for ; Fri, 13 Jul 2007 13:56:48 -0400 Received: from grayson.netsweng.com ([127.0.0.1]) by localhost (grayson.netsweng.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id P3qlS9GPkMDl for ; Fri, 13 Jul 2007 13:56:32 -0400 (EDT) Received: from h231.94.213.151.ip.alltel.net ([151.213.94.231] helo=trantor.stuart.netsweng.com) by grayson.netsweng.com with esmtp (Exim 3.36 #1 (Debian)) id 1I9PNL-0003WO-00 for ; Fri, 13 Jul 2007 13:56:19 -0400 Date: Fri, 13 Jul 2007 13:55:52 -0400 (EDT) From: Stuart Anderson Subject: Re: [Qemu-devel] [PATCH] linux-user EFAULT implementation In-Reply-To: Message-ID: References: <4692A55D.5050102@bellard.org> <200707101338.44885.paul@codesourcery.com> <4693EFDC.3080604@bellard.org> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463811327-1960088428-1184349348=:32663" Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---1463811327-1960088428-1184349348=:32663 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed On Tue, 10 Jul 2007, Stuart Anderson wrote: > OK, I'll continue in this direction, after taking a fresh look at what I > did yesterday. Attached is a snapshot of the work after a couple more evenings on it. I'm still doing a lot of testing, and I haven't finished converting everything, but there should be enough in this patch to be able to tell if this is heading in a good direction or not. There are even a couple of systems calls actually yield better test suite results as a result of the additional scrutiny of this process. Further comments would be appreciated. Stuart Stuart R. Anderson anderson@netsweng.com Network & Software Engineering http://www.netsweng.com/ 1024D/37A79149: 0791 D3B8 9A4C 2CDC A31F BD03 0A62 E534 37A7 9149 ---1463811327-1960088428-1184349348=:32663 Content-Type: TEXT/x-diff; charset=US-ASCII; name=06_efault.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: EFAULT patch Content-Disposition: attachment; filename=06_efault.patch SW5kZXg6IHFlbXUvZXhlYy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot LS0gcWVtdS5vcmlnL2V4ZWMuYwkyMDA3LTA3LTEzIDA3OjEwOjU4LjAwMDAw MDAwMCAtMDQwMA0KKysrIHFlbXUvZXhlYy5jCTIwMDctMDctMTMgMDc6MTE6 MTIuMDAwMDAwMDAwIC0wNDAwDQpAQCAtMTg2Miw2ICsxODYyLDI5IEBADQog ICAgIHNwaW5fdW5sb2NrKCZ0Yl9sb2NrKTsNCiB9DQogDQoraW50IHBhZ2Vf Y2hlY2tfcmFuZ2UodGFyZ2V0X3Vsb25nIHN0YXJ0LCB0YXJnZXRfdWxvbmcg bGVuLCBpbnQgZmxhZ3MpDQorew0KKyAgICBQYWdlRGVzYyAqcDsNCisgICAg dGFyZ2V0X3Vsb25nIGVuZDsNCisgICAgdGFyZ2V0X3Vsb25nIGFkZHI7DQor DQorICAgIGVuZCA9IFRBUkdFVF9QQUdFX0FMSUdOKHN0YXJ0K2xlbik7IC8q IG11c3QgZG8gYmVmb3JlIHdlIGxvb3NlIGJpdHMgaW4gdGhlIG5leHQgc3Rl cCAqLw0KKyAgICBzdGFydCA9IHN0YXJ0ICYgVEFSR0VUX1BBR0VfTUFTSzsN CisNCisgICAgaWYoIGVuZCA8IHN0YXJ0ICkgcmV0dXJuIC0xOyAgLyogd2Un dmUgd3JhcHBlZCBhcm91bmQgKi8NCisgICAgZm9yKGFkZHIgPSBzdGFydDsg YWRkciA8IGVuZDsgYWRkciArPSBUQVJHRVRfUEFHRV9TSVpFKSB7DQorICAg ICAgICBwID0gcGFnZV9maW5kKGFkZHIgPj4gVEFSR0VUX1BBR0VfQklUUyk7 DQorCWlmKCAhcCApIHJldHVybiAtMTsNCisJaWYoICEocC0+ZmxhZ3MgJiBQ QUdFX1ZBTElEKSApIHJldHVybiAtMTsNCisNCisgICAgICAgIGlmICghKHAt PmZsYWdzICYgUEFHRV9SRUFEKSAmJg0KKyAgICAgICAgICAgIChmbGFncyAm IFBBR0VfUkVBRCkgKSByZXR1cm4gLTE7DQorICAgICAgICBpZiAoIShwLT5m bGFncyAmIFBBR0VfV1JJVEUpICYmDQorICAgICAgICAgICAgKGZsYWdzICYg UEFHRV9XUklURSkgKSByZXR1cm4gLTE7DQorICAgIH0NCisgICAgcmV0dXJu IDA7DQorfQ0KKw0KIC8qIGNhbGxlZCBmcm9tIHNpZ25hbCBoYW5kbGVyOiBp bnZhbGlkYXRlIHRoZSBjb2RlIGFuZCB1bnByb3RlY3QgdGhlDQogICAgcGFn ZS4gUmV0dXJuIFRSVUUgaWYgdGhlIGZhdWx0IHdhcyBzdWNjZXNmdWxseSBo YW5kbGVkLiAqLw0KIGludCBwYWdlX3VucHJvdGVjdCh0YXJnZXRfdWxvbmcg YWRkcmVzcywgdW5zaWduZWQgbG9uZyBwYywgdm9pZCAqcHVjKQ0KSW5kZXg6 IHFlbXUvY3B1LWFsbC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g cWVtdS5vcmlnL2NwdS1hbGwuaAkyMDA3LTA3LTEzIDA3OjEwOjU4LjAwMDAw MDAwMCAtMDQwMA0KKysrIHFlbXUvY3B1LWFsbC5oCTIwMDctMDctMTMgMDc6 MTE6MTIuMDAwMDAwMDAwIC0wNDAwDQpAQCAtNjkxLDYgKzY5MSw3IEBADQog aW50IHBhZ2VfZ2V0X2ZsYWdzKHRhcmdldF91bG9uZyBhZGRyZXNzKTsNCiB2 b2lkIHBhZ2Vfc2V0X2ZsYWdzKHRhcmdldF91bG9uZyBzdGFydCwgdGFyZ2V0 X3Vsb25nIGVuZCwgaW50IGZsYWdzKTsNCiB2b2lkIHBhZ2VfdW5wcm90ZWN0 X3JhbmdlKHRhcmdldF91bG9uZyBkYXRhLCB0YXJnZXRfdWxvbmcgZGF0YV9z aXplKTsNCitpbnQgcGFnZV9jaGVja19yYW5nZSh0YXJnZXRfdWxvbmcgc3Rh cnQsIHRhcmdldF91bG9uZyBsZW4sIGludCBmbGFncyk7DQogDQogQ1BVU3Rh dGUgKmNwdV9jb3B5KENQVVN0YXRlICplbnYpOw0KIA0KSW5kZXg6IHFlbXUv bGludXgtdXNlci9zeXNjYWxsLmMNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Ci0tLSBxZW11Lm9yaWcvbGludXgtdXNlci9zeXNjYWxsLmMJMjAwNy0wNy0x MyAwNzoxMDo1OC4wMDAwMDAwMDAgLTA0MDANCisrKyBxZW11L2xpbnV4LXVz ZXIvc3lzY2FsbC5jCTIwMDctMDctMTMgMDc6MTI6NTYuMDAwMDAwMDAwIC0w NDAwDQpAQCAtNDA0LDEyICs0MDQsMTAgQEANCiAjZW5kaWYNCiB9DQogDQot c3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3J1c2FnZSh0YXJn ZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQorc3RhdGljIGlubGluZSBsb25nIGNv cHlfdG9fdXNlcl9ydXNhZ2Uoc3RydWN0IHRhcmdldF9ydXNhZ2UgKnRhcmdl dF9ydXNhZ2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgcnVzYWdlICpydXNhZ2UpDQogew0KLSAg ICBzdHJ1Y3QgdGFyZ2V0X3J1c2FnZSAqdGFyZ2V0X3J1c2FnZTsNCi0NCi0g ICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfcnVzYWdlLCB0YXJnZXRfYWRk ciwgMCk7DQorICAgIGlmKCBjb3B5X3RvX3VzZXIodGFyZ2V0X3J1c2FnZSxy dXNhZ2Usc2l6ZW9mKCp0YXJnZXRfcnVzYWdlKSkgKSByZXR1cm4gLTE7DQog ICAgIHRhcmdldF9ydXNhZ2UtPnJ1X3V0aW1lLnR2X3NlYyA9IHRzd2FwbChy dXNhZ2UtPnJ1X3V0aW1lLnR2X3NlYyk7DQogICAgIHRhcmdldF9ydXNhZ2Ut PnJ1X3V0aW1lLnR2X3VzZWMgPSB0c3dhcGwocnVzYWdlLT5ydV91dGltZS50 dl91c2VjKTsNCiAgICAgdGFyZ2V0X3J1c2FnZS0+cnVfc3RpbWUudHZfc2Vj ID0gdHN3YXBsKHJ1c2FnZS0+cnVfc3RpbWUudHZfc2VjKTsNCkBAIC00Mjgs MjkgKzQyNiwyOCBAQA0KICAgICB0YXJnZXRfcnVzYWdlLT5ydV9uc2lnbmFs cyA9IHRzd2FwbChydXNhZ2UtPnJ1X25zaWduYWxzKTsNCiAgICAgdGFyZ2V0 X3J1c2FnZS0+cnVfbnZjc3cgPSB0c3dhcGwocnVzYWdlLT5ydV9udmNzdyk7 DQogICAgIHRhcmdldF9ydXNhZ2UtPnJ1X25pdmNzdyA9IHRzd2FwbChydXNh Z2UtPnJ1X25pdmNzdyk7DQotICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJn ZXRfcnVzYWdlLCB0YXJnZXRfYWRkciwgMSk7DQorDQorICAgIHJldHVybiAw Ow0KIH0NCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3RvX2hvc3Rf dGltZXZhbChzdHJ1Y3QgdGltZXZhbCAqdHYsDQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdl dF9hZGRyKQ0KK3N0YXRpYyBpbmxpbmUgbG9uZyBjb3B5X2Zyb21fdXNlcl90 aW1ldmFsKHN0cnVjdCB0aW1ldmFsICp0diwNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3RpbWV2 YWwgKnRhcmdldF90dikNCiB7DQotICAgIHN0cnVjdCB0YXJnZXRfdGltZXZh bCAqdGFyZ2V0X3R2Ow0KLQ0KLSAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdl dF90diwgdGFyZ2V0X2FkZHIsIDEpOw0KKyAgICBpZiggY29weV9mcm9tX3Vz ZXIodHYsdGFyZ2V0X3R2LHNpemVvZigqdGFyZ2V0X3R2KSkgKSByZXR1cm4g LTE7DQogICAgIHR2LT50dl9zZWMgPSB0c3dhcGwodGFyZ2V0X3R2LT50dl9z ZWMpOw0KICAgICB0di0+dHZfdXNlYyA9IHRzd2FwbCh0YXJnZXRfdHYtPnR2 X3VzZWMpOw0KLSAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3R2LCB0 YXJnZXRfYWRkciwgMCk7DQorDQorICAgIHJldHVybiAwOw0KIH0NCiANCi1z dGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRfdGltZXZhbCh0YXJn ZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQorc3RhdGljIGlubGluZSBsb25nIGNv cHlfdG9fdXNlcl90aW1ldmFsKHN0cnVjdCB0YXJnZXRfdGltZXZhbCAqdGFy Z2V0X3R2LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCB0aW1ldmFsICp0dikNCiB7DQotICAgIHN0 cnVjdCB0YXJnZXRfdGltZXZhbCAqdGFyZ2V0X3R2Ow0KLQ0KLSAgICBsb2Nr X3VzZXJfc3RydWN0KHRhcmdldF90diwgdGFyZ2V0X2FkZHIsIDApOw0KKyAg ICBpZiggY29weV90b191c2VyKHRhcmdldF90dix0dixzaXplb2YoKnRhcmdl dF90dikpICkgcmV0dXJuIC0xOw0KICAgICB0YXJnZXRfdHYtPnR2X3NlYyA9 IHRzd2FwbCh0di0+dHZfc2VjKTsNCiAgICAgdGFyZ2V0X3R2LT50dl91c2Vj ID0gdHN3YXBsKHR2LT50dl91c2VjKTsNCi0gICAgdW5sb2NrX3VzZXJfc3Ry dWN0KHRhcmdldF90diwgdGFyZ2V0X2FkZHIsIDEpOw0KKw0KKyAgICByZXR1 cm4gMDsNCiB9DQogDQogDQpAQCAtNDY2LDIxICs0NjMsMjEgQEANCiAgICAg aW50IG9rOw0KIA0KICAgICBpZiAocmZkX3ApIHsNCi0gICAgICAgIHRhcmdl dF9yZmRzID0gbG9ja191c2VyKHJmZF9wLCBzaXplb2YodGFyZ2V0X2xvbmcp ICogbiwgMSk7DQorCWlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgm dGFyZ2V0X3JmZHMscmZkX3Asc2l6ZW9mKHRhcmdldF9sb25nKSpuLDEsUEFH RV9SRUFEKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgcmZkc19wdHIg PSB0YXJnZXRfdG9faG9zdF9mZHMoJnJmZHMsIHRhcmdldF9yZmRzLCBuKTsN CiAgICAgfSBlbHNlIHsNCiAgICAgICAgIHRhcmdldF9yZmRzID0gTlVMTDsN CiAgICAgICAgIHJmZHNfcHRyID0gTlVMTDsNCiAgICAgfQ0KICAgICBpZiAo d2ZkX3ApIHsNCi0gICAgICAgIHRhcmdldF93ZmRzID0gbG9ja191c2VyKHdm ZF9wLCBzaXplb2YodGFyZ2V0X2xvbmcpICogbiwgMSk7DQorCWlmKCBsb2Nr X2FuZF9jaGVja191c2VyX3N0cnVjdCgmdGFyZ2V0X3dmZHMsd2ZkX3Asc2l6 ZW9mKHRhcmdldF9sb25nKSpuLDEsUEFHRV9SRUFEKSApIHJldHVybiAtRUZB VUxUOw0KICAgICAgICAgd2Zkc19wdHIgPSB0YXJnZXRfdG9faG9zdF9mZHMo JndmZHMsIHRhcmdldF93ZmRzLCBuKTsNCiAgICAgfSBlbHNlIHsNCiAgICAg ICAgIHRhcmdldF93ZmRzID0gTlVMTDsNCiAgICAgICAgIHdmZHNfcHRyID0g TlVMTDsNCiAgICAgfQ0KICAgICBpZiAoZWZkX3ApIHsNCi0gICAgICAgIHRh cmdldF9lZmRzID0gbG9ja191c2VyKGVmZF9wLCBzaXplb2YodGFyZ2V0X2xv bmcpICogbiwgMSk7DQorCWlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0cnVj dCgmdGFyZ2V0X2VmZHMsZWZkX3Asc2l6ZW9mKHRhcmdldF9sb25nKSpuLDEs UEFHRV9SRUFEKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgZWZkc19w dHIgPSB0YXJnZXRfdG9faG9zdF9mZHMoJmVmZHMsIHRhcmdldF9lZmRzLCBu KTsNCiAgICAgfSBlbHNlIHsNCiAgICAgICAgIHRhcmdldF9lZmRzID0gTlVM TDsNCkBAIC00ODgsNyArNDg1LDcgQEANCiAgICAgfQ0KICAgICAgICAgICAg IA0KICAgICBpZiAodGFyZ2V0X3R2KSB7DQotICAgICAgICB0YXJnZXRfdG9f aG9zdF90aW1ldmFsKCZ0diwgdGFyZ2V0X3R2KTsNCisgICAgICAgIGlmKCBj b3B5X2Zyb21fdXNlcl90aW1ldmFsKCZ0diwgdGFyZ2V0X3R2KSApIHJldHVy biAtRUZBVUxUOw0KICAgICAgICAgdHZfcHRyID0gJnR2Ow0KICAgICB9IGVs c2Ugew0KICAgICAgICAgdHZfcHRyID0gTlVMTDsNCkBAIC01MDIsNyArNDk5 LDcgQEANCiAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X2Zkcyh0YXJnZXRfZWZk cywgZWZkc19wdHIsIG4pOw0KIA0KICAgICAgICAgaWYgKHRhcmdldF90dikg ew0KLSAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3RpbWV2YWwodGFyZ2V0 X3R2LCAmdHYpOw0KKyAgICAgICAgICAgIGlmKCBjb3B5X3RvX3VzZXJfdGlt ZXZhbCh0YXJnZXRfdHYsICZ0dikgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAg ICAgIH0NCiAgICAgfQ0KICAgICBpZiAodGFyZ2V0X3JmZHMpDQpAQCAtNTE1 LDI4ICs1MTIsMjQgQEANCiAgICAgcmV0dXJuIHJldDsNCiB9DQogDQotc3Rh dGljIGlubGluZSB2b2lkIHRhcmdldF90b19ob3N0X3NvY2thZGRyKHN0cnVj dCBzb2NrYWRkciAqYWRkciwNCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0K K3N0YXRpYyBpbmxpbmUgbG9uZyBjb3B5X2Zyb21fdXNlcl9zb2NrYWRkcihz dHJ1Y3Qgc29ja2FkZHIgKmFkZHIsDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0YXJnZXRfc29ja2FkZHIg KnRhcmdldF9zYWRkciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc29ja2xlbl90IGxlbikNCiB7DQotICAgIHN0cnVj dCB0YXJnZXRfc29ja2FkZHIgKnRhcmdldF9zYWRkcjsNCi0NCi0gICAgdGFy Z2V0X3NhZGRyID0gbG9ja191c2VyKHRhcmdldF9hZGRyLCBsZW4sIDEpOw0K LSAgICBtZW1jcHkoYWRkciwgdGFyZ2V0X3NhZGRyLCBsZW4pOw0KKyAgICBp ZiggY29weV9mcm9tX3VzZXIoYWRkcix0YXJnZXRfc2FkZHIsbGVuKSkgcmV0 dXJuIC0xOw0KICAgICBhZGRyLT5zYV9mYW1pbHkgPSB0c3dhcDE2KHRhcmdl dF9zYWRkci0+c2FfZmFtaWx5KTsNCi0gICAgdW5sb2NrX3VzZXIodGFyZ2V0 X3NhZGRyLCB0YXJnZXRfYWRkciwgMCk7DQorDQorICAgIHJldHVybiAwOw0K IH0NCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90b190YXJnZXRfc29j a2FkZHIodGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0KK3N0YXRpYyBpbmxp bmUgbG9uZyBjb3B5X3RvX3VzZXJfc29ja2FkZHIoc3RydWN0IHRhcmdldF9z b2NrYWRkciAqdGFyZ2V0X3NhZGRyLA0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIs DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNvY2tsZW5fdCBsZW4pDQogew0KLSAgICBzdHJ1Y3QgdGFyZ2V0X3NvY2th ZGRyICp0YXJnZXRfc2FkZHI7DQotDQotICAgIHRhcmdldF9zYWRkciA9IGxv Y2tfdXNlcih0YXJnZXRfYWRkciwgbGVuLCAwKTsNCi0gICAgbWVtY3B5KHRh cmdldF9zYWRkciwgYWRkciwgbGVuKTsNCisgICAgaWYoIGNvcHlfdG9fdXNl cih0YXJnZXRfc2FkZHIsYWRkcixsZW4pICkgcmV0dXJuIC0xOw0KICAgICB0 YXJnZXRfc2FkZHItPnNhX2ZhbWlseSA9IHRzd2FwMTYoYWRkci0+c2FfZmFt aWx5KTsNCi0gICAgdW5sb2NrX3VzZXIodGFyZ2V0X3NhZGRyLCB0YXJnZXRf YWRkciwgbGVuKTsNCisNCisgICAgcmV0dXJuIDA7DQogfQ0KIA0KIC8qID8/ PyBTaG91bGQgdGhpcyBhbHNvIHN3YXAgbXNnaC0+bmFtZT8gICovDQpAQCAt NjI4LDcgKzYyMSw3IEBADQogICAgIG1zZ2gtPm1zZ19jb250cm9sbGVuID0g dHN3YXBsKHNwYWNlKTsNCiB9DQogDQotc3RhdGljIGxvbmcgZG9fc2V0c29j a29wdChpbnQgc29ja2ZkLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCANCitz dGF0aWMgbG9uZyBkb19zZXRzb2Nrb3B0KGludCBzb2NrZmQsIGludCBsZXZl bCwgaW50IG9wdG5hbWUsDQogICAgICAgICAgICAgICAgICAgICAgICAgICB0 YXJnZXRfdWxvbmcgb3B0dmFsLCBzb2NrbGVuX3Qgb3B0bGVuKQ0KIHsNCiAg ICAgaW50IHZhbCwgcmV0Ow0KQEAgLTYzOSw2ICs2MzIsOCBAQA0KICAgICAg ICAgaWYgKG9wdGxlbiA8IHNpemVvZih1aW50MzJfdCkpDQogICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7DQogICAgICAgICANCisJaWYoICFhY2Nlc3Nf b2soVkVSSUZZX1JFQUQsIG9wdHZhbCwgb3B0bGVuKSApDQorICAgICAgICAg ICAgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICB2YWwgPSB0Z2V0MzIob3B0 dmFsKTsNCiAgICAgICAgIHJldCA9IGdldF9lcnJubyhzZXRzb2Nrb3B0KHNv Y2tmZCwgbGV2ZWwsIG9wdG5hbWUsICZ2YWwsIHNpemVvZih2YWwpKSk7DQog ICAgICAgICBicmVhazsNCkBAIC02NjAsNiArNjU1LDggQEANCiAgICAgICAg IGNhc2UgSVBfTVVMVElDQVNUX1RUTDoNCiAgICAgICAgIGNhc2UgSVBfTVVM VElDQVNUX0xPT1A6DQogICAgICAgICAgICAgdmFsID0gMDsNCisJICAgIGlm KCAhYWNjZXNzX29rKFZFUklGWV9SRUFELCBvcHR2YWwsIG9wdGxlbikgKQ0K KyAgICAgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgICAg ICBpZiAob3B0bGVuID49IHNpemVvZih1aW50MzJfdCkpIHsNCiAgICAgICAg ICAgICAgICAgdmFsID0gdGdldDMyKG9wdHZhbCk7DQogICAgICAgICAgICAg fSBlbHNlIGlmIChvcHRsZW4gPj0gMSkgew0KQEAgLTY2OCw3ICs2NjUsNyBA QA0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzZXRzb2Nrb3B0KHNv Y2tmZCwgbGV2ZWwsIG9wdG5hbWUsICZ2YWwsIHNpemVvZih2YWwpKSk7DQog ICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICBkZWZhdWx0Og0KLSAgICAg ICAgICAgIGdvdG8gdW5pbXBsZW1lbnRlZDsNCisJICAgZ290byB1bmltcGxl bWVudGVkOw0KICAgICAgICAgfQ0KICAgICAgICAgYnJlYWs7DQogICAgIGNh c2UgVEFSR0VUX1NPTF9TT0NLRVQ6DQpAQCAtNzMyLDI0ICs3MjksMjYgQEAN CiAJCWJyZWFrOw0KICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgZGVm YXVsdDoNCi0gICAgICAgICAgICBnb3RvIHVuaW1wbGVtZW50ZWQ7DQorCSAg IGdvdG8gdW5pbXBsZW1lbnRlZDsNCiAgICAgICAgIH0NCiAJaWYgKG9wdGxl biA8IHNpemVvZih1aW50MzJfdCkpDQotCXJldHVybiAtRUlOVkFMOw0KKwkg ICAgcmV0dXJuIC1FSU5WQUw7DQorCWlmKCAhYWNjZXNzX29rKFZFUklGWV9S RUFELCBvcHR2YWwsIG9wdGxlbikgKQ0KKyAgICAgICAgICAgIHJldHVybiAt RUZBVUxUOw0KIA0KIAl2YWwgPSB0Z2V0MzIob3B0dmFsKTsNCiAJcmV0ID0g Z2V0X2Vycm5vKHNldHNvY2tvcHQoc29ja2ZkLCBTT0xfU09DS0VULCBvcHRu YW1lLCAmdmFsLCBzaXplb2YodmFsKSkpOw0KICAgICAgICAgYnJlYWs7DQog ICAgIGRlZmF1bHQ6DQogICAgIHVuaW1wbGVtZW50ZWQ6DQotICAgICAgICBn ZW11X2xvZygiVW5zdXBwb3J0ZWQgc2V0c29ja29wdCBsZXZlbD0lZCBvcHRu YW1lPSVkIFxuIiwgbGV2ZWwsIG9wdG5hbWUpOw0KLSAgICAgICAgcmV0ID0g LUVOT1NZUzsNCisgICAgICAgIGdlbXVfbG9nKCJVbnN1cHBvcnRlZCBzZXRz b2Nrb3B0IGxldmVsPSVkIG9wdG5hbWU9JWRcbiIsIGxldmVsLCBvcHRuYW1l KTsNCisgICAgICAgIHJldCA9IC1FTk9QUk9UT09QVDsNCiAgICAgfQ0KICAg ICByZXR1cm4gcmV0Ow0KIH0NCiANCi1zdGF0aWMgbG9uZyBkb19nZXRzb2Nr b3B0KGludCBzb2NrZmQsIGludCBsZXZlbCwgaW50IG9wdG5hbWUsIA0KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIG9wdHZhbCwg dGFyZ2V0X3Vsb25nIG9wdGxlbikNCitzdGF0aWMgbG9uZyBkb19nZXRzb2Nr b3B0KGludCBzb2NrZmQsIGludCBsZXZlbCwgaW50IG9wdG5hbWUsDQorICAg ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgb3B0dmFsLCBz b2NrbGVuX3QgKm9wdGxlbikNCiB7DQogICAgIGludCBsZW4sIGx2LCB2YWws IHJldDsNCiANCkBAIC03NzEsNyArNzcwLDEwIEBADQogICAgIGNhc2UgU09M X1RDUDoNCiAgICAgICAgIC8qIFRDUCBvcHRpb25zIGFsbCB0YWtlIGFuICdp bnQnIHZhbHVlLiAgKi8NCiAgICAgaW50X2Nhc2U6DQotICAgICAgICBsZW4g PSB0Z2V0MzIob3B0bGVuKTsNCisJaWYoIGdldF91c2VyKGxlbixvcHRsZW4p ICkNCisgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsNCisJaWYoICFhY2Nl c3Nfb2soVkVSSUZZX1dSSVRFLCBvcHR2YWwsbGVuKSApDQorICAgICAgICAg ICAgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICBpZiAobGVuIDwgMCkNCiAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCiAgICAgICAgIGx2ID0gc2l6 ZW9mKGludCk7DQpAQCAtODA0LDcgKzgwNiwxMCBAQA0KICNlbmRpZg0KICAg ICAgICAgY2FzZSBJUF9NVUxUSUNBU1RfVFRMOg0KICAgICAgICAgY2FzZSBJ UF9NVUxUSUNBU1RfTE9PUDoNCi0gICAgICAgICAgICBsZW4gPSB0Z2V0MzIo b3B0bGVuKTsNCisJICAgIGlmKCBnZXRfdXNlcihsZW4sb3B0bGVuKSApDQor ICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KKwlpZiggIWFjY2Vz c19vayhWRVJJRllfV1JJVEUsIG9wdHZhbCxsZW4pICkNCisgICAgICAgICAg ICByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgICAgICBpZiAobGVuIDwgMCkN CiAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQogICAgICAgICAg ICAgbHYgPSBzaXplb2YoaW50KTsNCkBAIC04MjMsMTQgKzgyOCwxNSBAQA0K ICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICBicmVhazsNCiAgICAgICAg IGRlZmF1bHQ6DQotICAgICAgICAgICAgZ290byB1bmltcGxlbWVudGVkOw0K KyAgICAgICAgICAgIHJldCA9IC1FTk9QUk9UT09QVDsNCisgICAgICAgICAg ICBicmVhazsNCiAgICAgICAgIH0NCiAgICAgICAgIGJyZWFrOw0KICAgICBk ZWZhdWx0Og0KICAgICB1bmltcGxlbWVudGVkOg0KICAgICAgICAgZ2VtdV9s b2coImdldHNvY2tvcHQgbGV2ZWw9JWQgb3B0bmFtZT0lZCBub3QgeWV0IHN1 cHBvcnRlZFxuIiwNCiAgICAgICAgICAgICAgICAgIGxldmVsLCBvcHRuYW1l KTsNCi0gICAgICAgIHJldCA9IC1FTk9TWVM7DQorICAgICAgICByZXQgPSAt RU9QTk9UU1VQUDsNCiAgICAgICAgIGJyZWFrOw0KICAgICB9DQogICAgIHJl dHVybiByZXQ7DQpAQCAtODk5LDcgKzkwNSw3IEBADQogew0KICAgICB2b2lk ICphZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0KICAgICANCi0gICAgdGFyZ2V0 X3RvX2hvc3Rfc29ja2FkZHIoYWRkciwgdGFyZ2V0X2FkZHIsIGFkZHJsZW4p Ow0KKyAgICBpZiggY29weV9mcm9tX3VzZXJfc29ja2FkZHIoYWRkciwgdGFy Z2V0X2FkZHIsIGFkZHJsZW4pICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgIHJl dHVybiBnZXRfZXJybm8oYmluZChzb2NrZmQsIGFkZHIsIGFkZHJsZW4pKTsN CiB9DQogDQpAQCAtOTA4LDcgKzkxNCw3IEBADQogew0KICAgICB2b2lkICph ZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0KICAgICANCi0gICAgdGFyZ2V0X3Rv X2hvc3Rfc29ja2FkZHIoYWRkciwgdGFyZ2V0X2FkZHIsIGFkZHJsZW4pOw0K KyAgICBpZiggY29weV9mcm9tX3VzZXJfc29ja2FkZHIoYWRkciwgdGFyZ2V0 X2FkZHIsIGFkZHJsZW4pICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgIHJldHVy biBnZXRfZXJybm8oY29ubmVjdChzb2NrZmQsIGFkZHIsIGFkZHJsZW4pKTsN CiB9DQogDQpAQCAtOTIyLDEyICs5MjgsMjUgQEANCiAgICAgc3RydWN0IGlv dmVjICp2ZWM7DQogICAgIHRhcmdldF91bG9uZyB0YXJnZXRfdmVjOw0KIA0K LSAgICBsb2NrX3VzZXJfc3RydWN0KG1zZ3AsIHRhcmdldF9tc2csIDEpOw0K KyAgICBpZiggc2VuZCApIHsNCisgICAgICAgaWYoIGxvY2tfYW5kX2NoZWNr X3VzZXJfc3RydWN0KCZtc2dwLHRhcmdldF9tc2csc2l6ZW9mKCptc2dwKSwx LA0KKwkJUEFHRV9SRUFEKSAgKSByZXR1cm4gLUVGQVVMVDsNCisgICAgfSBl bHNlIHsNCisgICAgICAgaWYoIGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0 KCZtc2dwLHRhcmdldF9tc2csc2l6ZW9mKCptc2dwKSwxLA0KKwkJUEFHRV9X UklURSkgKSByZXR1cm4gLUVGQVVMVDsNCisgICAgfQ0KICAgICBpZiAobXNn cC0+bXNnX25hbWUpIHsNCiAgICAgICAgIG1zZy5tc2dfbmFtZWxlbiA9IHRz d2FwMzIobXNncC0+bXNnX25hbWVsZW4pOw0KICAgICAgICAgbXNnLm1zZ19u YW1lID0gYWxsb2NhKG1zZy5tc2dfbmFtZWxlbik7DQotICAgICAgICB0YXJn ZXRfdG9faG9zdF9zb2NrYWRkcihtc2cubXNnX25hbWUsIHRzd2FwbChtc2dw LT5tc2dfbmFtZSksDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtc2cubXNnX25hbWVsZW4pOw0KKyAgICAgICAgaWYoIHNlbmQgKSB7DQor ICAgICAgICAgIGlmKCBjb3B5X2Zyb21fdXNlcl9zb2NrYWRkcihtc2cubXNn X25hbWUsIHRzd2FwbChtc2dwLT5tc2dfbmFtZSksDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtc2cubXNnX25hbWVsZW4pICkgcmV0dXJu IC1FRkFVTFQ7DQorICAgICAgICB9IGVsc2Ugew0KKwkgIC8qIEZJWE1FDQor ICAgICAgICAgIGlmKCAocmV0PWNvcHlfZnJvbV91c2VyX3NvY2thZGRyKG1z Zy5tc2dfbmFtZSwgdHN3YXBsKG1zZ3AtPm1zZ19uYW1lKSwNCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1zZy5tc2dfbmFtZWxlbixQQUdF X1dSSVRFKSkgIT0gMCApIHJldHVybiByZXQ7DQorCQkJCSovDQorCX0NCiAg ICAgfSBlbHNlIHsNCiAgICAgICAgIG1zZy5tc2dfbmFtZSA9IE5VTEw7DQog ICAgICAgICBtc2cubXNnX25hbWVsZW4gPSAwOw0KQEAgLTk1Niw0NiArOTc1 LDU1IEBADQogfQ0KIA0KIHN0YXRpYyBsb25nIGRvX2FjY2VwdChpbnQgZmQs IHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCi0gICAgICAgICAgICAgICAg ICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRybGVuKQ0KKyAgICAgICAg ICAgICAgICAgICAgICBzb2NrbGVuX3QgKnRhcmdldF9hZGRybGVuKQ0KIHsN Ci0gICAgc29ja2xlbl90IGFkZHJsZW4gPSB0Z2V0MzIodGFyZ2V0X2FkZHJs ZW4pOw0KLSAgICB2b2lkICphZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0KKyAg ICBzb2NrbGVuX3QgYWRkcmxlbjsNCisgICAgdm9pZCAqYWRkcjsNCiAgICAg bG9uZyByZXQ7DQogDQorICAgIGlmKCBnZXRfdXNlcihhZGRybGVuLHRhcmdl dF9hZGRybGVuKSApIHJldHVybiAtRUlOVkFMOw0KKyAgICBhZGRyID0gYWxs b2NhKGFkZHJsZW4pOw0KKw0KICAgICByZXQgPSBnZXRfZXJybm8oYWNjZXB0 KGZkLCBhZGRyLCAmYWRkcmxlbikpOw0KICAgICBpZiAoIWlzX2Vycm9yKHJl dCkpIHsNCi0gICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NvY2thZGRyKHRhcmdl dF9hZGRyLCBhZGRyLCBhZGRybGVuKTsNCisgICAgICAgIGlmKCBjb3B5X3Rv X3VzZXJfc29ja2FkZHIodGFyZ2V0X2FkZHIsIGFkZHIsIGFkZHJsZW4pICkg cmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICB0cHV0MzIodGFyZ2V0X2FkZHJs ZW4sIGFkZHJsZW4pOw0KICAgICB9DQogICAgIHJldHVybiByZXQ7DQogfQ0K IA0KIHN0YXRpYyBsb25nIGRvX2dldHBlZXJuYW1lKGludCBmZCwgdGFyZ2V0 X3Vsb25nIHRhcmdldF9hZGRyLA0KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkcmxlbikNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgKnRhcmdldF9hZGRybGVuKQ0K IHsNCi0gICAgc29ja2xlbl90IGFkZHJsZW4gPSB0Z2V0MzIodGFyZ2V0X2Fk ZHJsZW4pOw0KLSAgICB2b2lkICphZGRyID0gYWxsb2NhKGFkZHJsZW4pOw0K KyAgICBzb2NrbGVuX3QgYWRkcmxlbjsNCisgICAgdm9pZCAqYWRkcjsNCiAg ICAgbG9uZyByZXQ7DQogDQorICAgIGlmKCBnZXRfdXNlcihhZGRybGVuLHRh cmdldF9hZGRybGVuKSApIHJldHVybiAtRUZBVUxUOw0KKyAgICBhZGRyID0g YWxsb2NhKGFkZHJsZW4pOw0KKw0KICAgICByZXQgPSBnZXRfZXJybm8oZ2V0 cGVlcm5hbWUoZmQsIGFkZHIsICZhZGRybGVuKSk7DQogICAgIGlmICghaXNf ZXJyb3IocmV0KSkgew0KLSAgICAgICAgaG9zdF90b190YXJnZXRfc29ja2Fk ZHIodGFyZ2V0X2FkZHIsIGFkZHIsIGFkZHJsZW4pOw0KLSAgICAgICAgdHB1 dDMyKHRhcmdldF9hZGRybGVuLCBhZGRybGVuKTsNCisgICAgICAgIGlmKCBj b3B5X3RvX3VzZXJfc29ja2FkZHIodGFyZ2V0X2FkZHIsIGFkZHIsIGFkZHJs ZW4pICkgcmV0dXJuIC1FRkFVTFQ7DQorICAgICAgICB0cHV0MzIodGFyZ2V0 X2FkZHJsZW4sYWRkcmxlbik7DQogICAgIH0NCiAgICAgcmV0dXJuIHJldDsN CiB9DQogDQogc3RhdGljIGxvbmcgZG9fZ2V0c29ja25hbWUoaW50IGZkLCB0 YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRybGVuKQ0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCAqdGFyZ2V0X2FkZHJs ZW4pDQogew0KLSAgICBzb2NrbGVuX3QgYWRkcmxlbiA9IHRnZXQzMih0YXJn ZXRfYWRkcmxlbik7DQotICAgIHZvaWQgKmFkZHIgPSBhbGxvY2EoYWRkcmxl bik7DQorICAgIHNvY2tsZW5fdCBhZGRybGVuOw0KKyAgICB2b2lkICphZGRy Ow0KICAgICBsb25nIHJldDsNCiANCisgICAgaWYoIGdldF91c2VyKGFkZHJs ZW4sdGFyZ2V0X2FkZHJsZW4pICkgcmV0dXJuIC1FRkFVTFQ7DQorICAgIGFk ZHIgPSBhbGxvY2EoYWRkcmxlbik7DQorDQogICAgIHJldCA9IGdldF9lcnJu byhnZXRzb2NrbmFtZShmZCwgYWRkciwgJmFkZHJsZW4pKTsNCiAgICAgaWYg KCFpc19lcnJvcihyZXQpKSB7DQotICAgICAgICBob3N0X3RvX3RhcmdldF9z b2NrYWRkcih0YXJnZXRfYWRkciwgYWRkciwgYWRkcmxlbik7DQotICAgICAg ICB0cHV0MzIodGFyZ2V0X2FkZHJsZW4sIGFkZHJsZW4pOw0KKyAgICAgICAg aWYoIGNvcHlfdG9fdXNlcl9zb2NrYWRkcih0YXJnZXRfYWRkciwgYWRkciwg YWRkcmxlbikgKSByZXR1cm4gLUVGQVVMVDsNCisgICAgICAgIHRwdXQzMih0 YXJnZXRfYWRkcmxlbixhZGRybGVuKTsNCiAgICAgfQ0KICAgICByZXR1cm4g cmV0Ow0KIH0NCkBAIC0xMDA2LDYgKzEwMzQsOCBAQA0KICAgICBpbnQgdGFi WzJdOw0KICAgICBsb25nIHJldDsNCiANCisgICAgaWYoICFhY2Nlc3Nfb2so VkVSSUZZX1dSSVRFLHRhcmdldF90YWIsMipzaXplb2YoaW50KSkgKQ0KKwly ZXR1cm4gLUVGQVVMVDsNCiAgICAgcmV0ID0gZ2V0X2Vycm5vKHNvY2tldHBh aXIoZG9tYWluLCB0eXBlLCBwcm90b2NvbCwgdGFiKSk7DQogICAgIGlmICgh aXNfZXJyb3IocmV0KSkgew0KICAgICAgICAgdHB1dDMyKHRhcmdldF90YWIs IHRhYlswXSk7DQpAQCAtMTAxOCwxOCArMTA0OCwxNyBAQA0KICAgICAgICAg ICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsIHNvY2ts ZW5fdCBhZGRybGVuKQ0KIHsNCiAgICAgdm9pZCAqYWRkcjsNCi0gICAgdm9p ZCAqaG9zdF9tc2c7DQorICAgIHZvaWQgKmhvc3RfbXNnID0gYWxsb2NhKGxl bik7DQogICAgIGxvbmcgcmV0Ow0KIA0KLSAgICBob3N0X21zZyA9IGxvY2tf dXNlcihtc2csIGxlbiwgMSk7DQorICAgIGlmIChjb3B5X2Zyb21fdXNlciho b3N0X21zZyxtc2csbGVuKSApIHJldHVybiAtRUZBVUxUOw0KICAgICBpZiAo dGFyZ2V0X2FkZHIpIHsNCiAgICAgICAgIGFkZHIgPSBhbGxvY2EoYWRkcmxl bik7DQotICAgICAgICB0YXJnZXRfdG9faG9zdF9zb2NrYWRkcihhZGRyLCB0 YXJnZXRfYWRkciwgYWRkcmxlbik7DQorICAgICAgICBpZiAoY29weV9mcm9t X3VzZXJfc29ja2FkZHIoYWRkciwgdGFyZ2V0X2FkZHIsIGFkZHJsZW4pICkg cmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICByZXQgPSBnZXRfZXJybm8oc2Vu ZHRvKGZkLCBob3N0X21zZywgbGVuLCBmbGFncywgYWRkciwgYWRkcmxlbikp Ow0KICAgICB9IGVsc2Ugew0KICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKHNl bmQoZmQsIGhvc3RfbXNnLCBsZW4sIGZsYWdzKSk7DQogICAgIH0NCi0gICAg dW5sb2NrX3VzZXIoaG9zdF9tc2csIG1zZywgMCk7DQogICAgIHJldHVybiBy ZXQ7DQogfQ0KIA0KQEAgLTEwMzgsMTAgKzEwNjcsOSBAQA0KIHsNCiAgICAg c29ja2xlbl90IGFkZHJsZW47DQogICAgIHZvaWQgKmFkZHI7DQotICAgIHZv aWQgKmhvc3RfbXNnOw0KKyAgICB2b2lkICpob3N0X21zZyA9IGFsbG9jYShs ZW4pOw0KICAgICBsb25nIHJldDsNCiANCi0gICAgaG9zdF9tc2cgPSBsb2Nr X3VzZXIobXNnLCBsZW4sIDApOw0KICAgICBpZiAodGFyZ2V0X2FkZHIpIHsN CiAgICAgICAgIGFkZHJsZW4gPSB0Z2V0MzIodGFyZ2V0X2FkZHJsZW4pOw0K ICAgICAgICAgYWRkciA9IGFsbG9jYShhZGRybGVuKTsNCkBAIC0xMDUyLDEy ICsxMDgwLDEwIEBADQogICAgIH0NCiAgICAgaWYgKCFpc19lcnJvcihyZXQp KSB7DQogICAgICAgICBpZiAodGFyZ2V0X2FkZHIpIHsNCi0gICAgICAgICAg ICBob3N0X3RvX3RhcmdldF9zb2NrYWRkcih0YXJnZXRfYWRkciwgYWRkciwg YWRkcmxlbik7DQorICAgICAgICAgICAgaWYgKGNvcHlfdG9fdXNlcl9zb2Nr YWRkcih0YXJnZXRfYWRkciwgYWRkciwgYWRkcmxlbikgKSByZXR1cm4gLUVG QVVMVDsNCiAgICAgICAgICAgICB0cHV0MzIodGFyZ2V0X2FkZHJsZW4sIGFk ZHJsZW4pOw0KICAgICAgICAgfQ0KLSAgICAgICAgdW5sb2NrX3VzZXIoaG9z dF9tc2csIG1zZywgbGVuKTsNCi0gICAgfSBlbHNlIHsNCi0gICAgICAgIHVu bG9ja191c2VyKGhvc3RfbXNnLCBtc2csIDApOw0KKyAgICAgICAgaWYoIGNv cHlfdG9fdXNlcihtc2csIGhvc3RfbXNnLCBsZW4pICkgcmV0dXJuIC1FRkFV TFQ7DQogICAgIH0NCiAgICAgcmV0dXJuIHJldDsNCiB9DQpAQCAtMTIxOSw3 ICsxMjQ1LDcgQEANCiAgICAgICAgIGJyZWFrOw0KICAgICBkZWZhdWx0Og0K ICAgICAgICAgZ2VtdV9sb2coIlVuc3VwcG9ydGVkIHNvY2tldGNhbGw6ICVk XG4iLCBudW0pOw0KLSAgICAgICAgcmV0ID0gLUVOT1NZUzsNCisgICAgICAg IHJldCA9IC1FSU5WQUw7DQogICAgICAgICBicmVhazsNCiAgICAgfQ0KICAg ICByZXR1cm4gcmV0Ow0KQEAgLTEyNTksNjQgKzEyODUsNDQgQEANCiAgIHRh cmdldF91bG9uZyBfX3VudXNlZDQ7DQogfTsNCiANCi1zdGF0aWMgaW5saW5l IHZvaWQgdGFyZ2V0X3RvX2hvc3RfaXBjX3Blcm0oc3RydWN0IGlwY19wZXJt ICpob3N0X2lwLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIpDQorc3RhdGlj IGlubGluZSB2b2lkIGNvcHlfZnJvbV91c2VyX2lwY19wZXJtKHN0cnVjdCBp cGNfcGVybSAqaG9zdF9pcCwNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHRhcmdldF9pcGNfcGVybSAqdGFy Z2V0X2lwKQ0KIHsNCi0gICAgc3RydWN0IHRhcmdldF9pcGNfcGVybSAqdGFy Z2V0X2lwOw0KLSAgICBzdHJ1Y3QgdGFyZ2V0X3NlbWlkX2RzICp0YXJnZXRf c2Q7DQotDQotICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3NkLCB0YXJn ZXRfYWRkciwgMSk7DQotICAgIHRhcmdldF9pcD0mKHRhcmdldF9zZC0+c2Vt X3Blcm0pOw0KICAgICBob3N0X2lwLT5fX2tleSA9IHRzd2FwbCh0YXJnZXRf aXAtPl9fa2V5KTsNCiAgICAgaG9zdF9pcC0+dWlkID0gdHN3YXBsKHRhcmdl dF9pcC0+dWlkKTsNCiAgICAgaG9zdF9pcC0+Z2lkID0gdHN3YXBsKHRhcmdl dF9pcC0+Z2lkKTsNCiAgICAgaG9zdF9pcC0+Y3VpZCA9IHRzd2FwbCh0YXJn ZXRfaXAtPmN1aWQpOw0KICAgICBob3N0X2lwLT5jZ2lkID0gdHN3YXBsKHRh cmdldF9pcC0+Y2dpZCk7DQogICAgIGhvc3RfaXAtPm1vZGUgPSB0c3dhcGwo dGFyZ2V0X2lwLT5tb2RlKTsNCi0gICAgdW5sb2NrX3VzZXJfc3RydWN0KHRh cmdldF9zZCwgdGFyZ2V0X2FkZHIsIDApOw0KIH0NCiANCi1zdGF0aWMgaW5s aW5lIHZvaWQgaG9zdF90b190YXJnZXRfaXBjX3Blcm0odGFyZ2V0X3Vsb25n IHRhcmdldF9hZGRyLA0KK3N0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X3RvX3Vz ZXJfaXBjX3Blcm0oc3RydWN0IHRhcmdldF9pcGNfcGVybSAqdGFyZ2V0X2lw LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgaXBjX3Blcm0gKmhvc3RfaXApDQogew0KLSAgICBzdHJ1Y3Qg dGFyZ2V0X2lwY19wZXJtICp0YXJnZXRfaXA7DQotICAgIHN0cnVjdCB0YXJn ZXRfc2VtaWRfZHMgKnRhcmdldF9zZDsNCi0NCi0gICAgbG9ja191c2VyX3N0 cnVjdCh0YXJnZXRfc2QsIHRhcmdldF9hZGRyLCAwKTsNCi0gICAgdGFyZ2V0 X2lwID0gJih0YXJnZXRfc2QtPnNlbV9wZXJtKTsNCiAgICAgdGFyZ2V0X2lw LT5fX2tleSA9IHRzd2FwbChob3N0X2lwLT5fX2tleSk7DQogICAgIHRhcmdl dF9pcC0+dWlkID0gdHN3YXBsKGhvc3RfaXAtPnVpZCk7DQogICAgIHRhcmdl dF9pcC0+Z2lkID0gdHN3YXBsKGhvc3RfaXAtPmdpZCk7DQogICAgIHRhcmdl dF9pcC0+Y3VpZCA9IHRzd2FwbChob3N0X2lwLT5jdWlkKTsNCiAgICAgdGFy Z2V0X2lwLT5jZ2lkID0gdHN3YXBsKGhvc3RfaXAtPmNnaWQpOw0KICAgICB0 YXJnZXRfaXAtPm1vZGUgPSB0c3dhcGwoaG9zdF9pcC0+bW9kZSk7DQotICAg IHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc2QsIHRhcmdldF9hZGRyLCAx KTsNCiB9DQogDQotc3RhdGljIGlubGluZSB2b2lkIHRhcmdldF90b19ob3N0 X3NlbWlkX2RzKHN0cnVjdCBzZW1pZF9kcyAqaG9zdF9zZCwNCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxv bmcgdGFyZ2V0X2FkZHIpDQorc3RhdGljIGlubGluZSB2b2lkIGNvcHlfZnJv bV91c2VyX3NlbWlkX2RzKHN0cnVjdCBzZW1pZF9kcyAqaG9zdF9zZCwNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgdGFyZ2V0X3NlbWlkX2RzICp0YXJnZXRfc2QpDQogew0KLSAgICBzdHJ1 Y3QgdGFyZ2V0X3NlbWlkX2RzICp0YXJnZXRfc2Q7DQotDQotICAgIGxvY2tf dXNlcl9zdHJ1Y3QodGFyZ2V0X3NkLCB0YXJnZXRfYWRkciwgMSk7DQotICAg IHRhcmdldF90b19ob3N0X2lwY19wZXJtKCYoaG9zdF9zZC0+c2VtX3Blcm0p LHRhcmdldF9hZGRyKTsNCisgICAgY29weV9mcm9tX3VzZXJfaXBjX3Blcm0o Jihob3N0X3NkLT5zZW1fcGVybSksJih0YXJnZXRfc2QtPnNlbV9wZXJtKSk7 DQogICAgIGhvc3Rfc2QtPnNlbV9uc2VtcyA9IHRzd2FwbCh0YXJnZXRfc2Qt PnNlbV9uc2Vtcyk7DQogICAgIGhvc3Rfc2QtPnNlbV9vdGltZSA9IHRzd2Fw bCh0YXJnZXRfc2QtPnNlbV9vdGltZSk7DQogICAgIGhvc3Rfc2QtPnNlbV9j dGltZSA9IHRzd2FwbCh0YXJnZXRfc2QtPnNlbV9jdGltZSk7DQotICAgIHVu bG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc2QsIHRhcmdldF9hZGRyLCAwKTsN CiB9DQogDQotc3RhdGljIGlubGluZSB2b2lkIGhvc3RfdG9fdGFyZ2V0X3Nl bWlkX2RzKHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCitzdGF0aWMgaW5s aW5lIHZvaWQgY29weV90b191c2VyX3NlbWlkX2RzKHN0cnVjdCB0YXJnZXRf c2VtaWRfZHMgKnRhcmdldF9zZCwNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWlkX2RzICpob3N0X3Nk KQ0KIHsNCi0gICAgc3RydWN0IHRhcmdldF9zZW1pZF9kcyAqdGFyZ2V0X3Nk Ow0KLQ0KLSAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zZCwgdGFyZ2V0 X2FkZHIsIDApOw0KLSAgICBob3N0X3RvX3RhcmdldF9pcGNfcGVybSh0YXJn ZXRfYWRkciwmKGhvc3Rfc2QtPnNlbV9wZXJtKSk7DQorICAgIGNvcHlfdG9f dXNlcl9pcGNfcGVybSgmKHRhcmdldF9zZC0+c2VtX3Blcm0pLCYoaG9zdF9z ZC0+c2VtX3Blcm0pKTsNCiAgICAgdGFyZ2V0X3NkLT5zZW1fbnNlbXMgPSB0 c3dhcGwoaG9zdF9zZC0+c2VtX25zZW1zKTsNCiAgICAgdGFyZ2V0X3NkLT5z ZW1fb3RpbWUgPSB0c3dhcGwoaG9zdF9zZC0+c2VtX290aW1lKTsNCiAgICAg dGFyZ2V0X3NkLT5zZW1fY3RpbWUgPSB0c3dhcGwoaG9zdF9zZC0+c2VtX2N0 aW1lKTsNCi0gICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zZCwgdGFy Z2V0X2FkZHIsIDEpOw0KIH0NCiANCiB1bmlvbiBzZW11biB7DQpAQCAtMTMy OCwxMDkgKzEzMzQsMTIyIEBADQogdW5pb24gdGFyZ2V0X3NlbXVuIHsNCiAJ aW50IHZhbDsNCiAJdGFyZ2V0X2xvbmcgYnVmOw0KLQl1bnNpZ25lZCBzaG9y dCBpbnQgKmFycmF5Ow0KKwl0YXJnZXRfbG9uZyBhcnJheTsNCiB9Ow0KIA0K LXN0YXRpYyBpbmxpbmUgdm9pZCB0YXJnZXRfdG9faG9zdF9zZW11bih1bnNp Z25lZCBsb25nIGNtZCwNCisvKiBzdGF0aWMgaW5saW5lKi8gbG9uZyBjb3B5 X2Zyb21fdXNlcl9zZW11bih1bnNpZ25lZCBsb25nIGNtZCwNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb24gc2VtdW4g Kmhvc3Rfc3UsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF91bG9uZyB0YXJnZXRfYWRkciwNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb24gdGFyZ2V0X3Nl bXVuICp0YXJnZXRfc3UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBzZW1pZF9kcyAqZHMpDQogew0KLSAgICB1 bmlvbiB0YXJnZXRfc2VtdW4gKnRhcmdldF9zdTsNCi0NCiAgICAgc3dpdGNo KCBjbWQgKSB7DQogCWNhc2UgSVBDX1NUQVQ6DQogCWNhc2UgSVBDX1NFVDoN Ci0gICAgICAgICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N1LCB0YXJn ZXRfYWRkciwgMSk7DQotCSAgIHRhcmdldF90b19ob3N0X3NlbWlkX2RzKGRz LHRhcmdldF9zdS0+YnVmKTsNCisJICAgaWYoIGNvcHlfZnJvbV91c2VyKGRz LHRhcmdldF9zdS0+YnVmLHNpemVvZihzdHJ1Y3Qgc2VtaWRfZHMpKSApIHJl dHVybiAtMTsNCisJICAgY29weV9mcm9tX3VzZXJfc2VtaWRfZHMoZHMsdGFy Z2V0X3N1LT5idWYpOw0KIAkgICBob3N0X3N1LT5idWYgPSBkczsNCi0gICAg ICAgICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc3UsIHRhcmdldF9h ZGRyLCAwKTsNCiAJICAgYnJlYWs7DQogCWNhc2UgR0VUVkFMOg0KIAljYXNl IFNFVFZBTDoNCi0gICAgICAgICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0 X3N1LCB0YXJnZXRfYWRkciwgMSk7DQotCSAgIGhvc3Rfc3UtPnZhbCA9IHRz d2FwbCh0YXJnZXRfc3UtPnZhbCk7DQotICAgICAgICAgICB1bmxvY2tfdXNl cl9zdHJ1Y3QodGFyZ2V0X3N1LCB0YXJnZXRfYWRkciwgMCk7DQorCSAgIGlm IChnZXRfdXNlcihob3N0X3N1LT52YWwsJih0YXJnZXRfc3UtPnZhbCkpKSBy ZXR1cm4gLTE7DQogCSAgIGJyZWFrOw0KIAljYXNlIEdFVEFMTDoNCisJICAg aG9zdF9zdS0+YXJyYXk9KHVuc2lnbmVkIHNob3J0ICopZHM7DQorCSAgIGJy ZWFrOw0KIAljYXNlIFNFVEFMTDoNCi0gICAgICAgICAgIGxvY2tfdXNlcl9z dHJ1Y3QodGFyZ2V0X3N1LCB0YXJnZXRfYWRkciwgMSk7DQorCSAgIGhvc3Rf c3UtPmFycmF5PSh1bnNpZ25lZCBzaG9ydCAqKWRzOw0KKwkgICBpZiAoY29w eV9mcm9tX3VzZXIoaG9zdF9zdS0+YXJyYXksdGFyZ2V0X3N1LT5hcnJheSxz aXplb2YodW5zaWduZWQgc2hvcnQpKSkgcmV0dXJuIC0xOw0KKy8qDQorCSAg IGlmIChnZXRfdXNlcihob3N0X3N1LT5hcnJheVswXSx0YXJnZXRfc3UtPmFy cmF5KSkgcmV0dXJuIC0xOw0KKwkgICBpZiAobG9ja19hbmRfY2hlY2tfdXNl cl9zdHJ1Y3QoJnRhcmdldF9zdSwsc2l6ZW9mKCp0YXJnZXRfc3UpLDEscGdf YWNjZXNzKSApIHJldHVybiAtMTsNCiAJICAgKmhvc3Rfc3UtPmFycmF5ID0g dHN3YXAxNigqdGFyZ2V0X3N1LT5hcnJheSk7DQogICAgICAgICAgICB1bmxv Y2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N1LCB0YXJnZXRfYWRkciwgMCk7DQor Ki8NCiAJICAgYnJlYWs7DQogCWRlZmF1bHQ6DQogICAgICAgICAgICBnZW11 X2xvZygic2VtdW4gb3BlcmF0aW9uIG5vdCBmdWxseSBzdXBwb3J0ZWQ6ICVk XG4iLCAoaW50KWNtZCk7DQogICAgIH0NCisNCisgICAgcmV0dXJuIDA7DQog fQ0KIA0KLXN0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF9zZW11 bih1bnNpZ25lZCBsb25nIGNtZCwNCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0K Ky8qIHN0YXRpYyBpbmxpbmUgKi8gbG9uZyBjb3B5X3RvX3VzZXJfc2VtdW4o dW5zaWduZWQgbG9uZyBjbWQsDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuaW9uIHRhcmdldF9zZW11biAqdGFyZ2V0X3N1 LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bmlvbiBzZW11biAqaG9zdF9zdSwNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHNlbWlkX2RzICpkcykNCiB7DQot ICAgIHVuaW9uIHRhcmdldF9zZW11biAqdGFyZ2V0X3N1Ow0KLQ0KICAgICBz d2l0Y2goIGNtZCApIHsNCiAJY2FzZSBJUENfU1RBVDoNCiAJY2FzZSBJUENf U0VUOg0KLSAgICAgICAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc3Us IHRhcmdldF9hZGRyLCAwKTsNCi0JICAgaG9zdF90b190YXJnZXRfc2VtaWRf ZHModGFyZ2V0X3N1LT5idWYsZHMpOw0KLSAgICAgICAgICAgdW5sb2NrX3Vz ZXJfc3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2FkZHIsIDEpOw0KKwkgICBp ZiggY29weV90b191c2VyKHRhcmdldF9zdS0+YnVmLGRzLHNpemVvZihzdHJ1 Y3Qgc2VtaWRfZHMpKSApIHJldHVybiAtMTsNCisJICAgY29weV90b191c2Vy X3NlbWlkX2RzKHRhcmdldF9zdS0+YnVmLGRzKTsNCiAJICAgYnJlYWs7DQog CWNhc2UgR0VUVkFMOg0KIAljYXNlIFNFVFZBTDoNCi0gICAgICAgICAgIGxv Y2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N1LCB0YXJnZXRfYWRkciwgMCk7DQot CSAgIHRhcmdldF9zdS0+dmFsID0gdHN3YXBsKGhvc3Rfc3UtPnZhbCk7DQot ICAgICAgICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N1LCB0YXJn ZXRfYWRkciwgMSk7DQorCSAgIGlmIChwdXRfdXNlcihob3N0X3N1LT52YWws Jih0YXJnZXRfc3UtPnZhbCkpKSByZXR1cm4gLTE7DQogCSAgIGJyZWFrOw0K IAljYXNlIEdFVEFMTDoNCisJICAgaWYoIGNvcHlfdG9fdXNlcih0YXJnZXRf c3UtPmFycmF5LGhvc3Rfc3UtPmFycmF5LHNpemVvZih1bnNpZ25lZCBzaG9y dCkpICkgcmV0dXJuIC0xOw0KKy8qDQorCSAgIGlmIChwdXRfdXNlcih0YXJn ZXRfc3UtPmFycmF5WzBdLGhvc3Rfc3UtPmFycmF5KSkgcmV0dXJuIC0xOw0K KwkgICAqdGFyZ2V0X3N1LT5hcnJheSA9IHRzd2FwMTYoKmhvc3Rfc3UtPmFy cmF5KTsNCisqLw0KKwkgICBicmVhazsNCiAJY2FzZSBTRVRBTEw6DQotICAg ICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdSwgdGFyZ2V0X2Fk ZHIsIDApOw0KKy8qDQorCSAgIGlmIChwdXRfdXNlcigqaG9zdF9zdS0+YXJy YXksdGFyZ2V0X3N1LT5hcnJheSkpIHJldHVybiAtMTsNCisJICAgaWYgKGxv Y2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZ0YXJnZXRfc3UsdGFyZ2V0X2Fk ZHIsc2l6ZW9mKCp0YXJnZXRfc3UpLDAscGdfYWNjZXNzKSApIHJldHVybiAt MTsNCiAJICAgKnRhcmdldF9zdS0+YXJyYXkgPSB0c3dhcDE2KCpob3N0X3N1 LT5hcnJheSk7DQogICAgICAgICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFy Z2V0X3N1LCB0YXJnZXRfYWRkciwgMSk7DQorKi8NCiAJICAgYnJlYWs7DQog ICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgZ2VtdV9sb2coInNlbXVu IG9wZXJhdGlvbiBub3QgZnVsbHkgc3VwcG9ydGVkOiAlZFxuIiwgKGludClj bWQpOw0KICAgICB9DQorDQorICAgIHJldHVybiAwOw0KIH0NCiANCi1zdGF0 aWMgaW5saW5lIGxvbmcgZG9fc2VtY3RsKGxvbmcgZmlyc3QsIGxvbmcgc2Vj b25kLCBsb25nIHRoaXJkLCBsb25nIHB0cikNCisvKiBzdGF0aWMgaW5saW5l ICovIGxvbmcgZG9fc2VtY3RsKGxvbmcgZmlyc3QsIGxvbmcgc2Vjb25kLCBs b25nIHRoaXJkLCBsb25nIHB0cikNCiB7DQogICAgIHVuaW9uIHNlbXVuIGFy ZzsNCiAgICAgc3RydWN0IHNlbWlkX2RzIGRzYXJnOw0KICAgICBpbnQgY21k ID0gdGhpcmQmMHhmZjsNCiAgICAgbG9uZyByZXQgPSAwOw0KIA0KKyAgICBp ZiggY29weV9mcm9tX3VzZXIoJmFyZyxwdHIsc2l6ZW9mKHVuaW9uIHNlbXVu KSkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgc3dpdGNoKCBjbWQgKSB7DQog CWNhc2UgR0VUVkFMOg0KLSAgICAgICAgICAgIHRhcmdldF90b19ob3N0X3Nl bXVuKGNtZCwmYXJnLHB0ciwmZHNhcmcpOw0KKyAgICAgICAgICAgIGlmKCBj b3B5X2Zyb21fdXNlcl9zZW11bihjbWQsJmFyZyxwdHIsJmRzYXJnKSApIHJl dHVybiAtRUZBVUxUOw0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhz ZW1jdGwoZmlyc3QsIHNlY29uZCwgY21kLCBhcmcpKTsNCi0gICAgICAgICAg ICBob3N0X3RvX3RhcmdldF9zZW11bihjbWQscHRyLCZhcmcsJmRzYXJnKTsN CisgICAgICAgICAgICBpZiggY29weV90b191c2VyX3NlbXVuKGNtZCxwdHIs JmFyZywmZHNhcmcpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAg YnJlYWs7DQogCWNhc2UgU0VUVkFMOg0KLSAgICAgICAgICAgIHRhcmdldF90 b19ob3N0X3NlbXVuKGNtZCwmYXJnLHB0ciwmZHNhcmcpOw0KKyAgICAgICAg ICAgIGlmKCBjb3B5X2Zyb21fdXNlcl9zZW11bihjbWQsJmFyZyxwdHIsJmRz YXJnKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgICAgIHJldCA9IGdl dF9lcnJubyhzZW1jdGwoZmlyc3QsIHNlY29uZCwgY21kLCBhcmcpKTsNCi0g ICAgICAgICAgICBob3N0X3RvX3RhcmdldF9zZW11bihjbWQscHRyLCZhcmcs JmRzYXJnKTsNCisgICAgICAgICAgICBpZiggY29weV90b191c2VyX3NlbXVu KGNtZCxwdHIsJmFyZywmZHNhcmcpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAg ICAgICAgICAgYnJlYWs7DQogCWNhc2UgR0VUQUxMOg0KLSAgICAgICAgICAg IHRhcmdldF90b19ob3N0X3NlbXVuKGNtZCwmYXJnLHB0ciwmZHNhcmcpOw0K KyAgICAgICAgICAgIGlmKCBjb3B5X2Zyb21fdXNlcl9zZW11bihjbWQsJmFy ZyxwdHIsJmRzYXJnKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgICAg IHJldCA9IGdldF9lcnJubyhzZW1jdGwoZmlyc3QsIHNlY29uZCwgY21kLCBh cmcpKTsNCi0gICAgICAgICAgICBob3N0X3RvX3RhcmdldF9zZW11bihjbWQs cHRyLCZhcmcsJmRzYXJnKTsNCisgICAgCSAgICBpZiAoIWlzX2Vycm9yKHJl dCkpIHsNCisgICAgICAgICAgICAgICAgaWYoIGNvcHlfdG9fdXNlcl9zZW11 bihjbWQscHRyLCZhcmcsJmRzYXJnKSApIHJldHVybiAtRUZBVUxUOw0KKwkg ICAgfQ0KICAgICAgICAgICAgIGJyZWFrOw0KIAljYXNlIFNFVEFMTDoNCi0g ICAgICAgICAgICB0YXJnZXRfdG9faG9zdF9zZW11bihjbWQsJmFyZyxwdHIs JmRzYXJnKTsNCisgICAgICAgICAgICBpZiggY29weV9mcm9tX3VzZXJfc2Vt dW4oY21kLCZhcmcscHRyLCZkc2FyZykgKSByZXR1cm4gLUVGQVVMVDsNCiAg ICAgICAgICAgICByZXQgPSBnZXRfZXJybm8oc2VtY3RsKGZpcnN0LCBzZWNv bmQsIGNtZCwgYXJnKSk7DQotICAgICAgICAgICAgaG9zdF90b190YXJnZXRf c2VtdW4oY21kLHB0ciwmYXJnLCZkc2FyZyk7DQorICAgICAgICAgICAgaWYo IGNvcHlfdG9fdXNlcl9zZW11bihjbWQscHRyLCZhcmcsJmRzYXJnKSApIHJl dHVybiAtRUZBVUxUOw0KICAgICAgICAgICAgIGJyZWFrOw0KIAljYXNlIElQ Q19TVEFUOg0KLSAgICAgICAgICAgIHRhcmdldF90b19ob3N0X3NlbXVuKGNt ZCwmYXJnLHB0ciwmZHNhcmcpOw0KKyAgICAgICAgICAgIGlmKCBjb3B5X2Zy b21fdXNlcl9zZW11bihjbWQsJmFyZyxwdHIsJmRzYXJnKSApIHJldHVybiAt RUZBVUxUOw0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzZW1jdGwo Zmlyc3QsIHNlY29uZCwgY21kLCBhcmcpKTsNCi0gICAgICAgICAgICBob3N0 X3RvX3RhcmdldF9zZW11bihjbWQscHRyLCZhcmcsJmRzYXJnKTsNCisgICAg ICAgICAgICBpZiggY29weV90b191c2VyX3NlbXVuKGNtZCxwdHIsJmFyZywm ZHNhcmcpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgYnJlYWs7 DQogCWNhc2UgSVBDX1NFVDoNCi0gICAgICAgICAgICB0YXJnZXRfdG9faG9z dF9zZW11bihjbWQsJmFyZyxwdHIsJmRzYXJnKTsNCisgICAgICAgICAgICBp ZiggY29weV9mcm9tX3VzZXJfc2VtdW4oY21kLCZhcmcscHRyLCZkc2FyZykg KSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgICAgICByZXQgPSBnZXRfZXJy bm8oc2VtY3RsKGZpcnN0LCBzZWNvbmQsIGNtZCwgYXJnKSk7DQotICAgICAg ICAgICAgaG9zdF90b190YXJnZXRfc2VtdW4oY21kLHB0ciwmYXJnLCZkc2Fy Zyk7DQorICAgICAgICAgICAgaWYoIGNvcHlfdG9fdXNlcl9zZW11bihjbWQs cHRyLCZhcmcsJmRzYXJnKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAg ICAgIGJyZWFrOw0KICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgIHJldCA9 IGdldF9lcnJubyhzZW1jdGwoZmlyc3QsIHNlY29uZCwgY21kLCBhcmcpKTsN CkBAIC0xNDU3LDEzICsxNDc2LDEwIEBADQogICB0YXJnZXRfdWxvbmcgX191 bnVzZWQ1Ow0KIH07DQogDQotc3RhdGljIGlubGluZSB2b2lkIHRhcmdldF90 b19ob3N0X21zcWlkX2RzKHN0cnVjdCBtc3FpZF9kcyAqaG9zdF9tZCwNCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn ZXRfdWxvbmcgdGFyZ2V0X2FkZHIpDQorc3RhdGljIGlubGluZSBsb25nIGNv cHlfZnJvbV91c2VyX21zcWlkX2RzKHN0cnVjdCBtc3FpZF9kcyAqaG9zdF9t ZCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgdGFyZ2V0X21zcWlkX2RzICp0YXJnZXRfbWQpDQogew0KLSAg ICBzdHJ1Y3QgdGFyZ2V0X21zcWlkX2RzICp0YXJnZXRfbWQ7DQotDQotICAg IGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X21kLCB0YXJnZXRfYWRkciwgMSk7 DQotICAgIHRhcmdldF90b19ob3N0X2lwY19wZXJtKCYoaG9zdF9tZC0+bXNn X3Blcm0pLHRhcmdldF9hZGRyKTsNCisgICAgY29weV9mcm9tX3VzZXJfaXBj X3Blcm0oJihob3N0X21kLT5tc2dfcGVybSksJih0YXJnZXRfbWQtPm1zZ19w ZXJtKSk7DQogICAgIGhvc3RfbWQtPm1zZ19zdGltZSA9IHRzd2FwbCh0YXJn ZXRfbWQtPm1zZ19zdGltZSk7DQogICAgIGhvc3RfbWQtPm1zZ19ydGltZSA9 IHRzd2FwbCh0YXJnZXRfbWQtPm1zZ19ydGltZSk7DQogICAgIGhvc3RfbWQt Pm1zZ19jdGltZSA9IHRzd2FwbCh0YXJnZXRfbWQtPm1zZ19jdGltZSk7DQpA QCAtMTQ3MiwxNiArMTQ4OCwxNCBAQA0KICAgICBob3N0X21kLT5tc2dfcWJ5 dGVzID0gdHN3YXBsKHRhcmdldF9tZC0+bXNnX3FieXRlcyk7DQogICAgIGhv c3RfbWQtPm1zZ19sc3BpZCA9IHRzd2FwbCh0YXJnZXRfbWQtPm1zZ19sc3Bp ZCk7DQogICAgIGhvc3RfbWQtPm1zZ19scnBpZCA9IHRzd2FwbCh0YXJnZXRf bWQtPm1zZ19scnBpZCk7DQotICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJn ZXRfbWQsIHRhcmdldF9hZGRyLCAwKTsNCisNCisgICAgcmV0dXJuIDA7DQog fQ0KIA0KLXN0YXRpYyBpbmxpbmUgdm9pZCBob3N0X3RvX3RhcmdldF9tc3Fp ZF9kcyh0YXJnZXRfdWxvbmcgdGFyZ2V0X2FkZHIsDQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtc3FpZF9k cyAqaG9zdF9tZCkNCitzdGF0aWMgaW5saW5lIGxvbmcgY29weV90b191c2Vy bXNxaWRfZHMoc3RydWN0IHRhcmdldF9tc3FpZF9kcyAqdGFyZ2V0X21kLA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBtc3FpZF9kcyAqaG9zdF9tZCkNCiB7DQotICAgIHN0cnVjdCB0YXJn ZXRfbXNxaWRfZHMgKnRhcmdldF9tZDsNCi0NCi0gICAgbG9ja191c2VyX3N0 cnVjdCh0YXJnZXRfbWQsIHRhcmdldF9hZGRyLCAwKTsNCi0gICAgaG9zdF90 b190YXJnZXRfaXBjX3Blcm0odGFyZ2V0X2FkZHIsJihob3N0X21kLT5tc2df cGVybSkpOw0KKyAgICBjb3B5X3RvX3VzZXJfaXBjX3Blcm0oJih0YXJnZXRf bWQtPm1zZ19wZXJtKSwmKGhvc3RfbWQtPm1zZ19wZXJtKSk7DQogICAgIHRh cmdldF9tZC0+bXNnX3N0aW1lID0gdHN3YXBsKGhvc3RfbWQtPm1zZ19zdGlt ZSk7DQogICAgIHRhcmdldF9tZC0+bXNnX3J0aW1lID0gdHN3YXBsKGhvc3Rf bWQtPm1zZ19ydGltZSk7DQogICAgIHRhcmdldF9tZC0+bXNnX2N0aW1lID0g dHN3YXBsKGhvc3RfbWQtPm1zZ19jdGltZSk7DQpAQCAtMTQ5MCw3ICsxNTA0 LDggQEANCiAgICAgdGFyZ2V0X21kLT5tc2dfcWJ5dGVzID0gdHN3YXBsKGhv c3RfbWQtPm1zZ19xYnl0ZXMpOw0KICAgICB0YXJnZXRfbWQtPm1zZ19sc3Bp ZCA9IHRzd2FwbChob3N0X21kLT5tc2dfbHNwaWQpOw0KICAgICB0YXJnZXRf bWQtPm1zZ19scnBpZCA9IHRzd2FwbChob3N0X21kLT5tc2dfbHJwaWQpOw0K LSAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X21kLCB0YXJnZXRfYWRk ciwgMSk7DQorDQorICAgIHJldHVybiAwOw0KIH0NCiANCiBzdGF0aWMgaW5s aW5lIGxvbmcgZG9fbXNnY3RsKGxvbmcgZmlyc3QsIGxvbmcgc2Vjb25kLCBs b25nIHB0cikNCkBAIC0xNTAwLDEwICsxNTE1LDE3IEBADQogICAgIGxvbmcg cmV0ID0gMDsNCiAgICAgc3dpdGNoKCBjbWQgKSB7DQogICAgIGNhc2UgSVBD X1NUQVQ6DQorCWlmKCBjb3B5X2Zyb21fdXNlcigmZHNhcmcscHRyLHNpemVv ZihzdHJ1Y3QgbXNxaWRfZHMpKSApIHJldHVybiAtRUZBVUxUOw0KKyAgICAg ICAgY29weV9mcm9tX3VzZXJfbXNxaWRfZHMoJmRzYXJnLHB0cik7DQorICAg ICAgICByZXQgPSBnZXRfZXJybm8obXNnY3RsKGZpcnN0LCBjbWQsICZkc2Fy ZykpOw0KKyAgICAgICAgaWYoIGNvcHlfdG9fdXNlcm1zcWlkX2RzKHB0ciwm ZHNhcmcpICkgcmV0dXJuIC1FRkFVTFQ7DQorCWJyZWFrOw0KICAgICBjYXNl IElQQ19TRVQ6DQotICAgICAgICB0YXJnZXRfdG9faG9zdF9tc3FpZF9kcygm ZHNhcmcscHRyKTsNCisJaWYoIGNvcHlfZnJvbV91c2VyKCZkc2FyZyxwdHIs c2l6ZW9mKHN0cnVjdCBtc3FpZF9kcykpICkgcmV0dXJuIC1FRkFVTFQ7DQor ICAgICAgICBjb3B5X2Zyb21fdXNlcl9tc3FpZF9kcygmZHNhcmcscHRyKTsN CiAgICAgICAgIHJldCA9IGdldF9lcnJubyhtc2djdGwoZmlyc3QsIGNtZCwg JmRzYXJnKSk7DQotICAgICAgICBob3N0X3RvX3RhcmdldF9tc3FpZF9kcyhw dHIsJmRzYXJnKTsNCisgICAgICAgIGlmKCBjb3B5X3RvX3VzZXJtc3FpZF9k cyhwdHIsJmRzYXJnKSApIHJldHVybiAtRUZBVUxUOw0KKwlicmVhazsNCiAg ICAgZGVmYXVsdDoNCiAgICAgICAgIHJldCA9IGdldF9lcnJubyhtc2djdGwo Zmlyc3QsIGNtZCwgJmRzYXJnKSk7DQogICAgIH0NCkBAIC0xNTE1LDE5ICsx NTM3LDIwIEBADQogCWNoYXIJbXRleHRbMV07DQogfTsNCiANCi1zdGF0aWMg aW5saW5lIGxvbmcgZG9fbXNnc25kKGxvbmcgbXNxaWQsIGxvbmcgbXNncCwg bG9uZyBtc2dzeiwgbG9uZyBtc2dmbGcpDQorLyogc3RhdGljIGlubGluZSAq LyBsb25nIGRvX21zZ3NuZChsb25nIG1zcWlkLCBsb25nIG1zZ3AsIGxvbmcg bXNnc3osIGxvbmcgbXNnZmxnKQ0KIHsNCi0gICAgc3RydWN0IHRhcmdldF9t c2didWYgKnRhcmdldF9tYjsNCi0gICAgc3RydWN0IG1zZ2J1ZiAqaG9zdF9t YjsNCisgICAgc3RydWN0IHRhcmdldF9tc2didWYgKnRhcmdldF9tYiA9IChz dHJ1Y3QgbXNnYnVmICopbXNncDsNCisgICAgc3RydWN0IG1zZ2J1ZiAqaG9z dF9tYiA9IGFsbG9jYShzaXplb2YobG9uZykrbXNnc3opOw0KICAgICBsb25n IHJldCA9IDA7DQogDQotICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X21i LG1zZ3AsMCk7DQorICAgIGlmKCBjb3B5X2Zyb21fdXNlcihob3N0X21iLHRh cmdldF9tYixzaXplb2YobG9uZykrbXNnc3opICkgcmV0dXJuIC1FRkFVTFQ7 DQorLyoNCiAgICAgaG9zdF9tYiA9IG1hbGxvYyhtc2dzeitzaXplb2YobG9u ZykpOw0KLSAgICBob3N0X21iLT5tdHlwZSA9IHRzd2FwbCh0YXJnZXRfbWIt Pm10eXBlKTsNCiAgICAgbWVtY3B5KGhvc3RfbWItPm10ZXh0LHRhcmdldF9t Yi0+bXRleHQsbXNnc3opOw0KLSAgICByZXQgPSBnZXRfZXJybm8obXNnc25k KG1zcWlkLCBob3N0X21iLCBtc2dzeiwgbXNnZmxnKSk7DQogICAgIGZyZWUo aG9zdF9tYik7DQotICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRfbWIs IG1zZ3AsIDApOw0KKyovDQorICAgIGhvc3RfbWItPm10eXBlID0gdHN3YXBs KHRhcmdldF9tYi0+bXR5cGUpOw0KKyAgICByZXQgPSBnZXRfZXJybm8obXNn c25kKG1zcWlkLCBob3N0X21iLCBtc2dzeiwgbXNnZmxnKSk7DQogDQogICAg IHJldHVybiByZXQ7DQogfQ0KQEAgLTE1MzgsNyArMTU2MSw3IEBADQogICAg IHN0cnVjdCBtc2didWYgKmhvc3RfbWI7DQogICAgIGxvbmcgcmV0ID0gMDsN CiANCi0gICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfbWIsIG1zZ3AsIDAp Ow0KKyAgICBpZiggbG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdl dF9tYixtc2dwLHNpemVvZihsb25nKSttc2dzeiwwLFBBR0VfV1JJVEUpICkg cmV0dXJuIC1FRkFVTFQ7DQogICAgIGhvc3RfbWIgPSBtYWxsb2MobXNnc3or c2l6ZW9mKGxvbmcpKTsNCiAgICAgcmV0ID0gZ2V0X2Vycm5vKG1zZ3Jjdiht c3FpZCwgaG9zdF9tYiwgbXNnc3osIDEsIG1zZ2ZsZykpOw0KICAgICBpZiAo cmV0ID4gMCkNCkBAIC0yMDE4LDYgKzIwNDEsNyBAQA0KIHN0YXRpYyBpbnQg d3JpdGVfbGR0KENQVVg4NlN0YXRlICplbnYsIA0KICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF91bG9uZyBwdHIsIHVuc2lnbmVkIGxvbmcgYnl0ZWNv dW50LCBpbnQgb2xkbW9kZSkNCiB7DQorICAgIGxvbmcgcmV0ID0gMDsNCiAg ICAgc3RydWN0IHRhcmdldF9tb2RpZnlfbGR0X2xkdF9zIGxkdF9pbmZvOw0K ICAgICBzdHJ1Y3QgdGFyZ2V0X21vZGlmeV9sZHRfbGR0X3MgKnRhcmdldF9s ZHRfaW5mbzsNCiAgICAgaW50IHNlZ18zMmJpdCwgY29udGVudHMsIHJlYWRf ZXhlY19vbmx5LCBsaW1pdF9pbl9wYWdlczsNCkBAIC0yMDI2LDcgKzIwNTAs NyBAQA0KIA0KICAgICBpZiAoYnl0ZWNvdW50ICE9IHNpemVvZihsZHRfaW5m bykpDQogICAgICAgICByZXR1cm4gLUVJTlZBTDsNCi0gICAgbG9ja191c2Vy X3N0cnVjdCh0YXJnZXRfbGR0X2luZm8sIHB0ciwgMSk7DQorICAgIGlmKCBs b2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmdGFyZ2V0X2xkdF9pbmZvLHB0 cixzaXplb2Yoc3RydWN0IHRhcmdldF9tb2RpZnlfbGR0X2xkdF9zKSwxLFBB R0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgbGR0X2luZm8uZW50 cnlfbnVtYmVyID0gdHN3YXAzMih0YXJnZXRfbGR0X2luZm8tPmVudHJ5X251 bWJlcik7DQogICAgIGxkdF9pbmZvLmJhc2VfYWRkciA9IHRzd2FwbCh0YXJn ZXRfbGR0X2luZm8tPmJhc2VfYWRkcik7DQogICAgIGxkdF9pbmZvLmxpbWl0 ID0gdHN3YXAzMih0YXJnZXRfbGR0X2luZm8tPmxpbWl0KTsNCkBAIC0yMjI1 LDcgKzIyNDksNyBAQA0KIA0KICAgICBzd2l0Y2goY21kKSB7DQogICAgIGNh c2UgVEFSR0VUX0ZfR0VUTEs6DQotICAgICAgICBsb2NrX3VzZXJfc3RydWN0 KHRhcmdldF9mbCwgYXJnLCAxKTsNCisJaWYoIGxvY2tfYW5kX2NoZWNrX3Vz ZXJfc3RydWN0KCZ0YXJnZXRfZmwsYXJnLHNpemVvZihzdHJ1Y3QgdGFyZ2V0 X2Zsb2NrKSwxLFBBR0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAg ICAgIGZsLmxfdHlwZSA9IHRzd2FwMTYodGFyZ2V0X2ZsLT5sX3R5cGUpOw0K ICAgICAgICAgZmwubF93aGVuY2UgPSB0c3dhcDE2KHRhcmdldF9mbC0+bF93 aGVuY2UpOw0KICAgICAgICAgZmwubF9zdGFydCA9IHRzd2FwbCh0YXJnZXRf ZmwtPmxfc3RhcnQpOw0KQEAgLTIyMzQsNiArMjI1OCw3IEBADQogICAgICAg ICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X2ZsLCBhcmcsIDApOw0KICAg ICAgICAgcmV0ID0gZmNudGwoZmQsIGNtZCwgJmZsKTsNCiAgICAgICAgIGlm IChyZXQgPT0gMCkgew0KKwkgICAgaWYoIGxvY2tfYW5kX2NoZWNrX3VzZXJf c3RydWN0KCZ0YXJnZXRfZmwsYXJnLHNpemVvZihzdHJ1Y3QgdGFyZ2V0X2Zs b2NrKSwwLFBBR0VfV1JJVEUpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAg ICAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfZmwsIGFyZywgMCk7DQog ICAgICAgICAgICAgdGFyZ2V0X2ZsLT5sX3R5cGUgPSB0c3dhcDE2KGZsLmxf dHlwZSk7DQogICAgICAgICAgICAgdGFyZ2V0X2ZsLT5sX3doZW5jZSA9IHRz d2FwMTYoZmwubF93aGVuY2UpOw0KQEAgLTIyNDYsNyArMjI3MSw3IEBADQog ICAgICAgICANCiAgICAgY2FzZSBUQVJHRVRfRl9TRVRMSzoNCiAgICAgY2Fz ZSBUQVJHRVRfRl9TRVRMS1c6DQotICAgICAgICBsb2NrX3VzZXJfc3RydWN0 KHRhcmdldF9mbCwgYXJnLCAxKTsNCisJaWYoIGxvY2tfYW5kX2NoZWNrX3Vz ZXJfc3RydWN0KCZ0YXJnZXRfZmwsYXJnLHNpemVvZihzdHJ1Y3QgdGFyZ2V0 X2Zsb2NrKSwxLFBBR0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAg ICAgIGZsLmxfdHlwZSA9IHRzd2FwMTYodGFyZ2V0X2ZsLT5sX3R5cGUpOw0K ICAgICAgICAgZmwubF93aGVuY2UgPSB0c3dhcDE2KHRhcmdldF9mbC0+bF93 aGVuY2UpOw0KICAgICAgICAgZmwubF9zdGFydCA9IHRzd2FwbCh0YXJnZXRf ZmwtPmxfc3RhcnQpOw0KQEAgLTIyNTcsNyArMjI4Miw3IEBADQogICAgICAg ICBicmVhazsNCiAgICAgICAgIA0KICAgICBjYXNlIFRBUkdFVF9GX0dFVExL NjQ6DQotICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdldF9mbDY0LCBh cmcsIDEpOw0KKwlpZiggbG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRh cmdldF9mbDY0LGFyZyxzaXplb2Yoc3RydWN0IHRhcmdldF9mbG9jazY0KSwx LFBBR0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgIGZsNjQu bF90eXBlID0gdHN3YXAxNih0YXJnZXRfZmw2NC0+bF90eXBlKSA+PiAxOw0K ICAgICAgICAgZmw2NC5sX3doZW5jZSA9IHRzd2FwMTYodGFyZ2V0X2ZsNjQt Pmxfd2hlbmNlKTsNCiAgICAgICAgIGZsNjQubF9zdGFydCA9IHRzd2FwbCh0 YXJnZXRfZmw2NC0+bF9zdGFydCk7DQpAQCAtMjI2Niw3ICsyMjkxLDcgQEAN CiAgICAgICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJnZXRfZmw2NCwgYXJn LCAwKTsNCiAgICAgICAgIHJldCA9IGZjbnRsKGZkLCBjbWQgPj4gMSwgJmZs NjQpOw0KICAgICAgICAgaWYgKHJldCA9PSAwKSB7DQotICAgICAgICAgICAg bG9ja191c2VyX3N0cnVjdCh0YXJnZXRfZmw2NCwgYXJnLCAwKTsNCisJICAg IGlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmdGFyZ2V0X2ZsNjQs YXJnLHNpemVvZihzdHJ1Y3QgdGFyZ2V0X2Zsb2NrNjQpLDAsUEFHRV9XUklU RSkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgICAgICB0YXJnZXRfZmw2 NC0+bF90eXBlID0gdHN3YXAxNihmbDY0LmxfdHlwZSkgPj4gMTsNCiAgICAg ICAgICAgICB0YXJnZXRfZmw2NC0+bF93aGVuY2UgPSB0c3dhcDE2KGZsNjQu bF93aGVuY2UpOw0KICAgICAgICAgICAgIHRhcmdldF9mbDY0LT5sX3N0YXJ0 ID0gdHN3YXBsKGZsNjQubF9zdGFydCk7DQpAQCAtMjI3Nyw3ICsyMzAyLDcg QEANCiAJCWJyZWFrOw0KICAgICBjYXNlIFRBUkdFVF9GX1NFVExLNjQ6DQog ICAgIGNhc2UgVEFSR0VUX0ZfU0VUTEtXNjQ6DQotICAgICAgICBsb2NrX3Vz ZXJfc3RydWN0KHRhcmdldF9mbDY0LCBhcmcsIDEpOw0KKwlpZiggbG9ja19h bmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF9mbDY0LGFyZyxzaXplb2Yo c3RydWN0IHRhcmdldF9mbG9jazY0KSwxLFBBR0VfUkVBRCkgKSByZXR1cm4g LUVGQVVMVDsNCiAgICAgICAgIGZsNjQubF90eXBlID0gdHN3YXAxNih0YXJn ZXRfZmw2NC0+bF90eXBlKSA+PiAxOw0KICAgICAgICAgZmw2NC5sX3doZW5j ZSA9IHRzd2FwMTYodGFyZ2V0X2ZsNjQtPmxfd2hlbmNlKTsNCiAgICAgICAg IGZsNjQubF9zdGFydCA9IHRzd2FwbCh0YXJnZXRfZmw2NC0+bF9zdGFydCk7 DQpAQCAtMjQxOSwzMiArMjQ0NCwzMCBAQA0KIH0NCiAjZW5kaWYNCiANCi1z dGF0aWMgaW5saW5lIHZvaWQgdGFyZ2V0X3RvX2hvc3RfdGltZXNwZWMoc3Ry dWN0IHRpbWVzcGVjICpob3N0X3RzLA0KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdWxvbmcgdGFyZ2V0X2Fk ZHIpDQorc3RhdGljIGlubGluZSBsb25nIGNvcHlfZnJvbV91c2VyX3RpbWVz cGVjKHN0cnVjdCB0aW1lc3BlYyAqaG9zdF90cywNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRhcmdldF90 aW1lc3BlYyAqdGFyZ2V0X3RzKQ0KIHsNCi0gICAgc3RydWN0IHRhcmdldF90 aW1lc3BlYyAqdGFyZ2V0X3RzOw0KLQ0KLSAgICBsb2NrX3VzZXJfc3RydWN0 KHRhcmdldF90cywgdGFyZ2V0X2FkZHIsIDEpOw0KKyAgICBpZiggY29weV9m cm9tX3VzZXIoaG9zdF90cyx0YXJnZXRfdHMsc2l6ZW9mKCp0YXJnZXRfdHMp KSApIHJldHVybiAtMTsNCiAgICAgaG9zdF90cy0+dHZfc2VjID0gdHN3YXBs KHRhcmdldF90cy0+dHZfc2VjKTsNCiAgICAgaG9zdF90cy0+dHZfbnNlYyA9 IHRzd2FwbCh0YXJnZXRfdHMtPnR2X25zZWMpOw0KLSAgICB1bmxvY2tfdXNl cl9zdHJ1Y3QodGFyZ2V0X3RzLCB0YXJnZXRfYWRkciwgMCk7DQorDQorICAg IHJldHVybiAwOw0KIH0NCiANCi1zdGF0aWMgaW5saW5lIHZvaWQgaG9zdF90 b190YXJnZXRfdGltZXNwZWModGFyZ2V0X3Vsb25nIHRhcmdldF9hZGRyLA0K K3N0YXRpYyBpbmxpbmUgbG9uZyBjb3B5X3RvX3VzZXJfdGltZXNwZWMoc3Ry dWN0IHRhcmdldF90aW1lc3BlYyAqdGFyZ2V0X3RzLA0KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNw ZWMgKmhvc3RfdHMpDQogew0KLSAgICBzdHJ1Y3QgdGFyZ2V0X3RpbWVzcGVj ICp0YXJnZXRfdHM7DQotDQotICAgIGxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0 X3RzLCB0YXJnZXRfYWRkciwgMCk7DQorICAgIGlmKCBjb3B5X3RvX3VzZXIo dGFyZ2V0X3RzLCBob3N0X3RzLCBzaXplb2YoKnRhcmdldF90cykpICkgcmV0 dXJuIC0xOw0KICAgICB0YXJnZXRfdHMtPnR2X3NlYyA9IHRzd2FwbChob3N0 X3RzLT50dl9zZWMpOw0KICAgICB0YXJnZXRfdHMtPnR2X25zZWMgPSB0c3dh cGwoaG9zdF90cy0+dHZfbnNlYyk7DQotICAgIHVubG9ja191c2VyX3N0cnVj dCh0YXJnZXRfdHMsIHRhcmdldF9hZGRyLCAxKTsNCisNCisgICAgcmV0dXJu IDA7DQogfQ0KIA0KIGxvbmcgZG9fc3lzY2FsbCh2b2lkICpjcHVfZW52LCBp bnQgbnVtLCBsb25nIGFyZzEsIGxvbmcgYXJnMiwgbG9uZyBhcmczLCANCiAg ICAgICAgICAgICAgICAgbG9uZyBhcmc0LCBsb25nIGFyZzUsIGxvbmcgYXJn NikNCiB7DQotICAgIGxvbmcgcmV0Ow0KKyAgICBsb25nIHJldCA9IDA7DQog ICAgIHN0cnVjdCBzdGF0IHN0Ow0KICAgICBzdHJ1Y3Qgc3RhdGZzIHN0ZnM7 DQogICAgIHZvaWQgKnA7DQpAQCAtMjY3MSw3ICsyNjk0LDcgQEANCiAgICAg ICAgICAgICBzdHJ1Y3QgdXRpbWJ1ZiB0YnVmLCAqaG9zdF90YnVmOw0KICAg ICAgICAgICAgIHN0cnVjdCB0YXJnZXRfdXRpbWJ1ZiAqdGFyZ2V0X3RidWY7 DQogICAgICAgICAgICAgaWYgKGFyZzIpIHsNCi0gICAgICAgICAgICAgICAg bG9ja191c2VyX3N0cnVjdCh0YXJnZXRfdGJ1ZiwgYXJnMiwgMSk7DQorCQlp ZiggbG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnRhcmdldF90YnVmLGFy ZzIsc2l6ZW9mKHN0cnVjdCB0YXJnZXRfdXRpbWJ1ZiksMSxQQUdFX1JFQUQp ICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgICAgIHRidWYuYWN0 aW1lID0gdHN3YXBsKHRhcmdldF90YnVmLT5hY3RpbWUpOw0KICAgICAgICAg ICAgICAgICB0YnVmLm1vZHRpbWUgPSB0c3dhcGwodGFyZ2V0X3RidWYtPm1v ZHRpbWUpOw0KICAgICAgICAgICAgICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3Qo dGFyZ2V0X3RidWYsIGFyZzIsIDApOw0KQEAgLTI2ODksOSArMjcxMiwxMSBA QA0KICAgICAgICAgew0KICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICp0 dnAsIHR2WzJdOw0KICAgICAgICAgICAgIGlmIChhcmcyKSB7DQotICAgICAg ICAgICAgICAgIHRhcmdldF90b19ob3N0X3RpbWV2YWwoJnR2WzBdLCBhcmcy KTsNCi0gICAgICAgICAgICAgICAgdGFyZ2V0X3RvX2hvc3RfdGltZXZhbCgm dHZbMV0sDQotICAgICAgICAgICAgICAgICAgICBhcmcyICsgc2l6ZW9mIChz dHJ1Y3QgdGFyZ2V0X3RpbWV2YWwpKTsNCisgICAgICAgICAgICAgICAgaWYo IGNvcHlfZnJvbV91c2VyX3RpbWV2YWwoJnR2WzBdLCBhcmcyKSApDQorCQkJ cmV0dXJuIC1FRkFVTFQ7DQorICAgICAgICAgICAgICAgIGlmKCBjb3B5X2Zy b21fdXNlcl90aW1ldmFsKCZ0dlsxXSwNCisJCSAgICBhcmcyICsgc2l6ZW9m IChzdHJ1Y3QgdGFyZ2V0X3RpbWV2YWwpKSApDQorCQkJcmV0dXJuIC1FRkFV TFQ7DQogICAgICAgICAgICAgICAgIHR2cCA9IHR2Ow0KICAgICAgICAgICAg IH0gZWxzZSB7DQogICAgICAgICAgICAgICAgIHR2cCA9IE5VTEw7DQpAQCAt Mjg2MCw3ICsyODg1LDcgQEANCiAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0 X29sZF9zaWdhY3Rpb24gKm9sZF9hY3Q7DQogICAgICAgICAgICAgc3RydWN0 IHRhcmdldF9zaWdhY3Rpb24gYWN0LCBvYWN0LCAqcGFjdDsNCiAgICAgICAg ICAgICBpZiAoYXJnMikgew0KLSAgICAgICAgICAgICAgICBsb2NrX3VzZXJf c3RydWN0KG9sZF9hY3QsIGFyZzIsIDEpOw0KKwkJaWYoIGxvY2tfYW5kX2No ZWNrX3VzZXJfc3RydWN0KCZvbGRfYWN0LGFyZzIsc2l6ZW9mKCpvbGRfYWN0 KSwxLFBBR0VfUkVBRCkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgICAg ICAgICAgYWN0Ll9zYV9oYW5kbGVyID0gb2xkX2FjdC0+X3NhX2hhbmRsZXI7 DQogICAgICAgICAgICAgICAgIHRhcmdldF9zaWdpbml0c2V0KCZhY3Quc2Ff bWFzaywgb2xkX2FjdC0+c2FfbWFzayk7DQogICAgICAgICAgICAgICAgIGFj dC5zYV9mbGFncyA9IG9sZF9hY3QtPnNhX2ZsYWdzOw0KQEAgLTI4NzIsNyAr Mjg5Nyw3IEBADQogICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIHJldCA9 IGdldF9lcnJubyhkb19zaWdhY3Rpb24oYXJnMSwgcGFjdCwgJm9hY3QpKTsN CiAgICAgICAgICAgICBpZiAoIWlzX2Vycm9yKHJldCkgJiYgYXJnMykgew0K LSAgICAgICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KG9sZF9hY3QsIGFy ZzMsIDApOw0KKwkJaWYoIGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZv bGRfYWN0LGFyZzMsc2l6ZW9mKCpvbGRfYWN0KSwwLFBBR0VfV1JJVEUpICkg cmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgICAgIG9sZF9hY3QtPl9z YV9oYW5kbGVyID0gb2FjdC5fc2FfaGFuZGxlcjsNCiAgICAgICAgICAgICAg ICAgb2xkX2FjdC0+c2FfbWFzayA9IG9hY3Quc2FfbWFzay5zaWdbMF07DQog ICAgICAgICAgICAgICAgIG9sZF9hY3QtPnNhX2ZsYWdzID0gb2FjdC5zYV9m bGFnczsNCkBAIC0yODgzLDcgKzI5MDgsNyBAQA0KIAkgICAgc3RydWN0IHRh cmdldF9zaWdhY3Rpb24gYWN0LCBvYWN0LCAqcGFjdCwgKm9sZF9hY3Q7DQog DQogCSAgICBpZiAoYXJnMikgew0KLQkJbG9ja191c2VyX3N0cnVjdChvbGRf YWN0LCBhcmcyLCAxKTsNCisJCWlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0 cnVjdCgmb2xkX2FjdCxhcmcyLHNpemVvZigqb2xkX2FjdCksMSxQQUdFX1JF QUQpICkgcmV0dXJuIC1FRkFVTFQ7DQogCQlhY3QuX3NhX2hhbmRsZXIgPSBv bGRfYWN0LT5fc2FfaGFuZGxlcjsNCiAJCXRhcmdldF9zaWdpbml0c2V0KCZh Y3Quc2FfbWFzaywgb2xkX2FjdC0+c2FfbWFzay5zaWdbMF0pOw0KIAkJYWN0 LnNhX2ZsYWdzID0gb2xkX2FjdC0+c2FfZmxhZ3M7DQpAQCAtMjg5Niw3ICsy OTIxLDcgQEANCiAJICAgIHJldCA9IGdldF9lcnJubyhkb19zaWdhY3Rpb24o YXJnMSwgcGFjdCwgJm9hY3QpKTsNCiANCiAJICAgIGlmICghaXNfZXJyb3Io cmV0KSAmJiBhcmczKSB7DQotCQlsb2NrX3VzZXJfc3RydWN0KG9sZF9hY3Qs IGFyZzMsIDApOw0KKwkJaWYoIGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0 KCZvbGRfYWN0LGFyZzMsc2l6ZW9mKCpvbGRfYWN0KSwwLFBBR0VfV1JJVEUp ICkgcmV0dXJuIC1FRkFVTFQ7DQogCQlvbGRfYWN0LT5fc2FfaGFuZGxlciA9 IG9hY3QuX3NhX2hhbmRsZXI7DQogCQlvbGRfYWN0LT5zYV9mbGFncyA9IG9h Y3Quc2FfZmxhZ3M7DQogCQlvbGRfYWN0LT5zYV9tYXNrLnNpZ1swXSA9IG9h Y3Quc2FfbWFzay5zaWdbMF07DQpAQCAtMjkxNCwxMiArMjkzOSwxNCBAQA0K ICAgICAgICAgICAgIHN0cnVjdCB0YXJnZXRfc2lnYWN0aW9uICphY3Q7DQog ICAgICAgICAgICAgc3RydWN0IHRhcmdldF9zaWdhY3Rpb24gKm9hY3Q7DQog DQotICAgICAgICAgICAgaWYgKGFyZzIpDQotICAgICAgICAgICAgICAgIGxv Y2tfdXNlcl9zdHJ1Y3QoYWN0LCBhcmcyLCAxKTsNCisgICAgICAgICAgICBp ZiAoYXJnMikgew0KKwkJaWYoIGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0 KCZhY3QsYXJnMixzaXplb2YoKmFjdCksMSxQQUdFX1JFQUQpICkgcmV0dXJu IC1FRkFVTFQ7DQorICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICBl bHNlDQogICAgICAgICAgICAgICAgIGFjdCA9IE5VTEw7DQotICAgICAgICAg ICAgaWYgKGFyZzMpDQotICAgICAgICAgICAgICAgIGxvY2tfdXNlcl9zdHJ1 Y3Qob2FjdCwgYXJnMywgMCk7DQorICAgICAgICAgICAgaWYgKGFyZzMpIHsN CisJCWlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgmb2FjdCxhcmcy LHNpemVvZigqb2FjdCksMCxQQUdFX1dSSVRFKSApIHJldHVybiAtRUZBVUxU Ow0KKyAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgZWxzZQ0KICAg ICAgICAgICAgICAgICBvYWN0ID0gTlVMTDsNCiAgICAgICAgICAgICByZXQg PSBnZXRfZXJybm8oZG9fc2lnYWN0aW9uKGFyZzEsIGFjdCwgb2FjdCkpOw0K QEAgLTMwNDYsNyArMzA3Myw3IEBADQogICAgICAgICAgICAgc2lnc2V0X3Qg c2V0Ow0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzaWdwZW5kaW5n KCZzZXQpKTsNCiAgICAgICAgICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsN Ci0gICAgICAgICAgICAgICAgcCA9IGxvY2tfdXNlcihhcmcxLCBzaXplb2Yo dGFyZ2V0X3NpZ3NldF90KSwgMCk7DQorCQlpZiggbG9ja19hbmRfY2hlY2tf dXNlcl9zdHJ1Y3QoJnAsYXJnMSxzaXplb2YodGFyZ2V0X3NpZ3NldF90KSww LFBBR0VfV1JJVEUpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAg ICAgIGhvc3RfdG9fdGFyZ2V0X3NpZ3NldChwLCAmc2V0KTsNCiAgICAgICAg ICAgICAgICAgdW5sb2NrX3VzZXIocCwgYXJnMSwgc2l6ZW9mKHRhcmdldF9z aWdzZXRfdCkpOw0KICAgICAgICAgICAgIH0NCkBAIC0zMDU2LDcgKzMwODMs NyBAQA0KICAgICBjYXNlIFRBUkdFVF9OUl9zaWdzdXNwZW5kOg0KICAgICAg ICAgew0KICAgICAgICAgICAgIHNpZ3NldF90IHNldDsNCi0gICAgICAgICAg ICBwID0gbG9ja191c2VyKGFyZzEsIHNpemVvZih0YXJnZXRfc2lnc2V0X3Qp LCAxKTsNCisJICAgIGlmKCBsb2NrX2FuZF9jaGVja191c2VyX3N0cnVjdCgm cCxhcmcxLHNpemVvZih0YXJnZXRfc2lnc2V0X3QpLDEsUEFHRV9SRUFEKSAp IHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgICAgIHRhcmdldF90b19ob3N0 X29sZF9zaWdzZXQoJnNldCwgcCk7DQogICAgICAgICAgICAgdW5sb2NrX3Vz ZXIocCwgYXJnMSwgMCk7DQogICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5v KHNpZ3N1c3BlbmQoJnNldCkpOw0KQEAgLTMwNjYsNyArMzA5Myw3IEBADQog ICAgIGNhc2UgVEFSR0VUX05SX3J0X3NpZ3N1c3BlbmQ6DQogICAgICAgICB7 DQogICAgICAgICAgICAgc2lnc2V0X3Qgc2V0Ow0KLSAgICAgICAgICAgIHAg PSBsb2NrX3VzZXIoYXJnMSwgc2l6ZW9mKHRhcmdldF9zaWdzZXRfdCksIDEp Ow0KKwkgICAgaWYoIGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZwLGFy ZzEsc2l6ZW9mKHRhcmdldF9zaWdzZXRfdCksMSxQQUdFX1JFQUQpICkgcmV0 dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgdGFyZ2V0X3RvX2hvc3Rfc2ln c2V0KCZzZXQsIHApOw0KICAgICAgICAgICAgIHVubG9ja191c2VyKHAsIGFy ZzEsIDApOw0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzaWdzdXNw ZW5kKCZzZXQpKTsNCkBAIC0zMDc4LDE4ICszMTA1LDE4IEBADQogICAgICAg ICAgICAgc3RydWN0IHRpbWVzcGVjIHV0cywgKnB1dHM7DQogICAgICAgICAg ICAgc2lnaW5mb190IHVpbmZvOw0KICAgICAgICAgICAgIA0KLSAgICAgICAg ICAgIHAgPSBsb2NrX3VzZXIoYXJnMSwgc2l6ZW9mKHRhcmdldF9zaWdzZXRf dCksIDEpOw0KKwkgICAgaWYoIGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0 KCZwLGFyZzEsc2l6ZW9mKHRhcmdldF9zaWdzZXRfdCksMSxQQUdFX1JFQUQp ICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgdGFyZ2V0X3RvX2hv c3Rfc2lnc2V0KCZzZXQsIHApOw0KICAgICAgICAgICAgIHVubG9ja191c2Vy KHAsIGFyZzEsIDApOw0KICAgICAgICAgICAgIGlmIChhcmczKSB7DQogICAg ICAgICAgICAgICAgIHB1dHMgPSAmdXRzOw0KLSAgICAgICAgICAgICAgICB0 YXJnZXRfdG9faG9zdF90aW1lc3BlYyhwdXRzLCBhcmczKTsNCisgICAgICAg ICAgICAgICAgaWYoIGNvcHlfZnJvbV91c2VyX3RpbWVzcGVjKHB1dHMsIGFy ZzMpICkgcmV0dXJuIC1FRkFVTFQ7DQogICAgICAgICAgICAgfSBlbHNlIHsN CiAgICAgICAgICAgICAgICAgcHV0cyA9IE5VTEw7DQogICAgICAgICAgICAg fQ0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzaWd0aW1lZHdhaXQo JnNldCwgJnVpbmZvLCBwdXRzKSk7DQogICAgICAgICAgICAgaWYgKCFpc19l cnJvcihyZXQpICYmIGFyZzIpIHsNCi0gICAgICAgICAgICAgICAgcCA9IGxv Y2tfdXNlcihhcmcyLCBzaXplb2YodGFyZ2V0X3NpZ3NldF90KSwgMCk7DQor CQlpZiggbG9ja19hbmRfY2hlY2tfdXNlcl9zdHJ1Y3QoJnAsYXJnMixzaXpl b2YodGFyZ2V0X3NpZ3NldF90KSwwLFBBR0VfV1JJVEUpICkgcmV0dXJuIC1F RkFVTFQ7DQogICAgICAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3NpZ2lu Zm8ocCwgJnVpbmZvKTsNCiAgICAgICAgICAgICAgICAgdW5sb2NrX3VzZXIo cCwgYXJnMiwgc2l6ZW9mKHRhcmdldF9zaWdzZXRfdCkpOw0KICAgICAgICAg ICAgIH0NCkBAIC0zMDk4LDcgKzMxMjUsNyBAQA0KICAgICBjYXNlIFRBUkdF VF9OUl9ydF9zaWdxdWV1ZWluZm86DQogICAgICAgICB7DQogICAgICAgICAg ICAgc2lnaW5mb190IHVpbmZvOw0KLSAgICAgICAgICAgIHAgPSBsb2NrX3Vz ZXIoYXJnMywgc2l6ZW9mKHRhcmdldF9zaWdzZXRfdCksIDEpOw0KKwkgICAg aWYoIGxvY2tfYW5kX2NoZWNrX3VzZXJfc3RydWN0KCZwLGFyZzMsc2l6ZW9m KHRhcmdldF9zaWdzZXRfdCksMSxQQUdFX1JFQUQpICkgcmV0dXJuIC1FRkFV TFQ7DQogICAgICAgICAgICAgdGFyZ2V0X3RvX2hvc3Rfc2lnaW5mbygmdWlu Zm8sIHApOw0KICAgICAgICAgICAgIHVubG9ja191c2VyKHAsIGFyZzEsIDAp Ow0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzeXNfcnRfc2lncXVl dWVpbmZvKGFyZzEsIGFyZzIsICZ1aW5mbykpOw0KQEAgLTMxNTMsNyArMzE4 MCw3IEBADQogICAgICAgICAgICAgc3RydWN0IHJ1c2FnZSBydXNhZ2U7DQog ICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKGdldHJ1c2FnZShhcmcxLCAm cnVzYWdlKSk7DQogICAgICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7 DQotICAgICAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3J1c2FnZShhcmcy LCAmcnVzYWdlKTsNCisgICAgICAgICAgICAgICAgaWYoIGNvcHlfdG9fdXNl cl9ydXNhZ2UoYXJnMiwgJnJ1c2FnZSkgKSByZXR1cm4gLUVGQVVMVDsNCiAg ICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICBicmVhazsNCkBA IC0zMTYyLDE0ICszMTg5LDE0IEBADQogICAgICAgICAgICAgc3RydWN0IHRp bWV2YWwgdHY7DQogICAgICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKGdldHRp bWVvZmRheSgmdHYsIE5VTEwpKTsNCiAgICAgICAgICAgICBpZiAoIWlzX2Vy cm9yKHJldCkpIHsNCi0gICAgICAgICAgICAgICAgaG9zdF90b190YXJnZXRf dGltZXZhbChhcmcxLCAmdHYpOw0KKyAgICAgICAgICAgICAgICBpZiggY29w eV90b191c2VyX3RpbWV2YWwoYXJnMSwgJnR2KSApIHJldHVybiAtRUZBVUxU Ow0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgIGJyZWFr Ow0KICAgICBjYXNlIFRBUkdFVF9OUl9zZXR0aW1lb2ZkYXk6DQogICAgICAg ICB7DQogICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgdHY7DQotICAgICAg ICAgICAgdGFyZ2V0X3RvX2hvc3RfdGltZXZhbCgmdHYsIGFyZzEpOw0KKyAg ICAgICAgICAgIGlmKCBjb3B5X2Zyb21fdXNlcl90aW1ldmFsKCZ0diwgYXJn MSkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgICAgICByZXQgPSBnZXRf ZXJybm8oc2V0dGltZW9mZGF5KCZ0diwgTlVMTCkpOw0KICAgICAgICAgfQ0K ICAgICAgICAgYnJlYWs7DQpAQCAtMzMzNSwyMCArMzM2MiwxOSBAQA0KICAg ICAgICAgdW5sb2NrX3VzZXIocCwgYXJnMSwgMCk7DQogICAgIGNvbnZlcnRf c3RhdGZzOg0KICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7DQotICAg ICAgICAgICAgc3RydWN0IHRhcmdldF9zdGF0ZnMgKnRhcmdldF9zdGZzOw0K KyAgICAgICAgICAgIHN0cnVjdCB0YXJnZXRfc3RhdGZzICp0YXJnZXRfc3Rm cyA9IChzdHJ1Y3QgdGFyZ2V0X3N0YXRmcyAqKWFyZzI7DQogICAgICAgICAg ICAgDQotICAgICAgICAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRfc3Rm cywgYXJnMiwgMCk7DQotICAgICAgICAgICAgLyogPz8/IHB1dF91c2VyIGlz IHByb2JhYmx5IHdyb25nLiAgKi8NCi0gICAgICAgICAgICBwdXRfdXNlcihz dGZzLmZfdHlwZSwgJnRhcmdldF9zdGZzLT5mX3R5cGUpOw0KLSAgICAgICAg ICAgIHB1dF91c2VyKHN0ZnMuZl9ic2l6ZSwgJnRhcmdldF9zdGZzLT5mX2Jz aXplKTsNCi0gICAgICAgICAgICBwdXRfdXNlcihzdGZzLmZfYmxvY2tzLCAm dGFyZ2V0X3N0ZnMtPmZfYmxvY2tzKTsNCi0gICAgICAgICAgICBwdXRfdXNl cihzdGZzLmZfYmZyZWUsICZ0YXJnZXRfc3Rmcy0+Zl9iZnJlZSk7DQotICAg ICAgICAgICAgcHV0X3VzZXIoc3Rmcy5mX2JhdmFpbCwgJnRhcmdldF9zdGZz LT5mX2JhdmFpbCk7DQotICAgICAgICAgICAgcHV0X3VzZXIoc3Rmcy5mX2Zp bGVzLCAmdGFyZ2V0X3N0ZnMtPmZfZmlsZXMpOw0KLSAgICAgICAgICAgIHB1 dF91c2VyKHN0ZnMuZl9mZnJlZSwgJnRhcmdldF9zdGZzLT5mX2ZmcmVlKTsN Ci0gICAgICAgICAgICBwdXRfdXNlcihzdGZzLmZfZnNpZC5fX3ZhbFswXSwg JnRhcmdldF9zdGZzLT5mX2ZzaWQpOw0KLSAgICAgICAgICAgIHB1dF91c2Vy KHN0ZnMuZl9uYW1lbGVuLCAmdGFyZ2V0X3N0ZnMtPmZfbmFtZWxlbik7DQot ICAgICAgICAgICAgdW5sb2NrX3VzZXJfc3RydWN0KHRhcmdldF9zdGZzLCBh cmcyLCAxKTsNCisJICAgIGlmKCAhYWNjZXNzX29rKFZFUklGWV9XUklURSx0 YXJnZXRfc3RmcyxzaXplb2Yoc3RydWN0IHRhcmdldF9zdGF0ZnMpKSApIHJl dHVybiAtRUZBVUxUOw0KKyAgICAgICAgICAgIC8qIHVzZSBfX3B1dF91c2Vy IHNpbmNlIHdlIGp1c3QgdmFsaWRhdGVkIHRoZSBlbnRpcmUgYnVmZmZlci4g ICovDQorICAgICAgICAgICAgX19wdXRfdXNlcihzdGZzLmZfdHlwZSwgJnRh cmdldF9zdGZzLT5mX3R5cGUpOw0KKyAgICAgICAgICAgIF9fcHV0X3VzZXIo c3Rmcy5mX2JzaXplLCAmdGFyZ2V0X3N0ZnMtPmZfYnNpemUpOw0KKyAgICAg ICAgICAgIF9fcHV0X3VzZXIoc3Rmcy5mX2Jsb2NrcywgJnRhcmdldF9zdGZz LT5mX2Jsb2Nrcyk7DQorICAgICAgICAgICAgX19wdXRfdXNlcihzdGZzLmZf YmZyZWUsICZ0YXJnZXRfc3Rmcy0+Zl9iZnJlZSk7DQorICAgICAgICAgICAg X19wdXRfdXNlcihzdGZzLmZfYmF2YWlsLCAmdGFyZ2V0X3N0ZnMtPmZfYmF2 YWlsKTsNCisgICAgICAgICAgICBfX3B1dF91c2VyKHN0ZnMuZl9maWxlcywg JnRhcmdldF9zdGZzLT5mX2ZpbGVzKTsNCisgICAgICAgICAgICBfX3B1dF91 c2VyKHN0ZnMuZl9mZnJlZSwgJnRhcmdldF9zdGZzLT5mX2ZmcmVlKTsNCisg ICAgICAgICAgICBfX3B1dF91c2VyKHN0ZnMuZl9mc2lkLl9fdmFsWzBdLCAm dGFyZ2V0X3N0ZnMtPmZfZnNpZCk7DQorICAgICAgICAgICAgX19wdXRfdXNl cihzdGZzLmZfbmFtZWxlbiwgJnRhcmdldF9zdGZzLT5mX25hbWVsZW4pOw0K ICAgICAgICAgfQ0KICAgICAgICAgYnJlYWs7DQogICAgIGNhc2UgVEFSR0VU X05SX2ZzdGF0ZnM6DQpAQCAtMzM2MSwyMCArMzM4NywxOSBAQA0KICAgICAg ICAgdW5sb2NrX3VzZXIocCwgYXJnMSwgMCk7DQogICAgIGNvbnZlcnRfc3Rh dGZzNjQ6DQogICAgICAgICBpZiAoIWlzX2Vycm9yKHJldCkpIHsNCi0gICAg ICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3N0YXRmczY0ICp0YXJnZXRfc3RmczsN CisgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0X3N0YXRmczY0ICp0YXJnZXRf c3RmcyA9IChzdHJ1Y3QgdGFyZ2V0X3N0YXRmczY0ICopYXJnMzsNCiAgICAg ICAgICAgICANCi0gICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0KHRhcmdl dF9zdGZzLCBhcmczLCAwKTsNCi0gICAgICAgICAgICAvKiA/Pz8gcHV0X3Vz ZXIgaXMgcHJvYmFibHkgd3JvbmcuICAqLw0KLSAgICAgICAgICAgIHB1dF91 c2VyKHN0ZnMuZl90eXBlLCAmdGFyZ2V0X3N0ZnMtPmZfdHlwZSk7DQotICAg ICAgICAgICAgcHV0X3VzZXIoc3Rmcy5mX2JzaXplLCAmdGFyZ2V0X3N0ZnMt PmZfYnNpemUpOw0KLSAgICAgICAgICAgIHB1dF91c2VyKHN0ZnMuZl9ibG9j a3MsICZ0YXJnZXRfc3Rmcy0+Zl9ibG9ja3MpOw0KLSAgICAgICAgICAgIHB1 dF91c2VyKHN0ZnMuZl9iZnJlZSwgJnRhcmdldF9zdGZzLT5mX2JmcmVlKTsN Ci0gICAgICAgICAgICBwdXRfdXNlcihzdGZzLmZfYmF2YWlsLCAmdGFyZ2V0 X3N0ZnMtPmZfYmF2YWlsKTsNCi0gICAgICAgICAgICBwdXRfdXNlcihzdGZz LmZfZmlsZXMsICZ0YXJnZXRfc3Rmcy0+Zl9maWxlcyk7DQotICAgICAgICAg ICAgcHV0X3VzZXIoc3Rmcy5mX2ZmcmVlLCAmdGFyZ2V0X3N0ZnMtPmZfZmZy ZWUpOw0KLSAgICAgICAgICAgIHB1dF91c2VyKHN0ZnMuZl9mc2lkLl9fdmFs WzBdLCAmdGFyZ2V0X3N0ZnMtPmZfZnNpZCk7DQotICAgICAgICAgICAgcHV0 X3VzZXIoc3Rmcy5mX25hbWVsZW4sICZ0YXJnZXRfc3Rmcy0+Zl9uYW1lbGVu KTsNCi0gICAgICAgICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N0 ZnMsIGFyZzMsIDApOw0KKwkgICAgaWYoICFhY2Nlc3Nfb2soVkVSSUZZX1dS SVRFLHRhcmdldF9zdGZzLHNpemVvZihzdHJ1Y3QgdGFyZ2V0X3N0YXRmczY0 KSkgKSByZXR1cm4gLUVGQVVMVDsNCisgICAgICAgICAgICAvKiB1c2UgX19w dXRfdXNlciBzaW5jZSB3ZSBqdXN0IHZhbGlkYXRlZCB0aGUgZW50aXJlIGJ1 ZmZmZXIuICAqLw0KKyAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Rmcy5mX3R5 cGUsICZ0YXJnZXRfc3Rmcy0+Zl90eXBlKTsNCisgICAgICAgICAgICBfX3B1 dF91c2VyKHN0ZnMuZl9ic2l6ZSwgJnRhcmdldF9zdGZzLT5mX2JzaXplKTsN CisgICAgICAgICAgICBfX3B1dF91c2VyKHN0ZnMuZl9ibG9ja3MsICZ0YXJn ZXRfc3Rmcy0+Zl9ibG9ja3MpOw0KKyAgICAgICAgICAgIF9fcHV0X3VzZXIo c3Rmcy5mX2JmcmVlLCAmdGFyZ2V0X3N0ZnMtPmZfYmZyZWUpOw0KKyAgICAg ICAgICAgIF9fcHV0X3VzZXIoc3Rmcy5mX2JhdmFpbCwgJnRhcmdldF9zdGZz LT5mX2JhdmFpbCk7DQorICAgICAgICAgICAgX19wdXRfdXNlcihzdGZzLmZf ZmlsZXMsICZ0YXJnZXRfc3Rmcy0+Zl9maWxlcyk7DQorICAgICAgICAgICAg X19wdXRfdXNlcihzdGZzLmZfZmZyZWUsICZ0YXJnZXRfc3Rmcy0+Zl9mZnJl ZSk7DQorICAgICAgICAgICAgX19wdXRfdXNlcihzdGZzLmZfZnNpZC5fX3Zh bFswXSwgJnRhcmdldF9zdGZzLT5mX2ZzaWQpOw0KKyAgICAgICAgICAgIF9f cHV0X3VzZXIoc3Rmcy5mX25hbWVsZW4sICZ0YXJnZXRfc3Rmcy0+Zl9uYW1l bGVuKTsNCiAgICAgICAgIH0NCiAgICAgICAgIGJyZWFrOw0KICAgICBjYXNl IFRBUkdFVF9OUl9mc3RhdGZzNjQ6DQpAQCAtMzQ4OCwxOSArMzUxMywyMCBA QA0KIA0KICAgICAgICAgICAgIGlmIChhcmcyKSB7DQogICAgICAgICAgICAg ICAgIHB2YWx1ZSA9ICZ2YWx1ZTsNCi0gICAgICAgICAgICAgICAgdGFyZ2V0 X3RvX2hvc3RfdGltZXZhbCgmcHZhbHVlLT5pdF9pbnRlcnZhbCwgDQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMik7DQot ICAgICAgICAgICAgICAgIHRhcmdldF90b19ob3N0X3RpbWV2YWwoJnB2YWx1 ZS0+aXRfdmFsdWUsIA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFyZzIgKyBzaXplb2Yoc3RydWN0IHRhcmdldF90aW1ldmFs KSk7DQorICAgICAgICAgICAgICAgIGlmKCBjb3B5X2Zyb21fdXNlcl90aW1l dmFsKCZwdmFsdWUtPml0X2ludGVydmFsLCBhcmcyKSApDQorCQkJcmV0dXJu IC1FRkFVTFQ7DQorICAgICAgICAgICAgICAgIGlmKCBjb3B5X2Zyb21fdXNl cl90aW1ldmFsKCZwdmFsdWUtPml0X3ZhbHVlLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzIgKyBzaXplb2Yoc3RydWN0 IHRhcmdldF90aW1ldmFsKSkgKQ0KKwkJCXJldHVybiAtRUZBVUxUOw0KICAg ICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgIHB2YWx1ZSA9 IE5VTEw7DQogICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIHJldCA9IGdl dF9lcnJubyhzZXRpdGltZXIoYXJnMSwgcHZhbHVlLCAmb3ZhbHVlKSk7DQog ICAgICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpICYmIGFyZzMpIHsNCi0g ICAgICAgICAgICAgICAgaG9zdF90b190YXJnZXRfdGltZXZhbChhcmczLA0K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdmFs dWUuaXRfaW50ZXJ2YWwpOw0KLSAgICAgICAgICAgICAgICBob3N0X3RvX3Rh cmdldF90aW1ldmFsKGFyZzMgKyBzaXplb2Yoc3RydWN0IHRhcmdldF90aW1l dmFsKSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmb3ZhbHVlLml0X3ZhbHVlKTsNCisgICAgICAgICAgICAgICAgaWYoIGNv cHlfdG9fdXNlcl90aW1ldmFsKGFyZzMsDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJm92YWx1ZS5pdF9pbnRlcnZhbCkgKSBy ZXR1cm4gLUVGQVVMVDsNCisgICAgICAgICAgICAgICAgaWYoIGNvcHlfdG9f dXNlcl90aW1ldmFsKGFyZzMgKyBzaXplb2Yoc3RydWN0IHRhcmdldF90aW1l dmFsKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmb3ZhbHVlLml0X3ZhbHVlKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAg ICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgIGJyZWFrOw0KQEAgLTM1 MTAsMTAgKzM1MzYsMTAgQEANCiAgICAgICAgICAgICANCiAgICAgICAgICAg ICByZXQgPSBnZXRfZXJybm8oZ2V0aXRpbWVyKGFyZzEsICZ2YWx1ZSkpOw0K ICAgICAgICAgICAgIGlmICghaXNfZXJyb3IocmV0KSAmJiBhcmcyKSB7DQot ICAgICAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0X3RpbWV2YWwoYXJnMiwN Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFs dWUuaXRfaW50ZXJ2YWwpOw0KLSAgICAgICAgICAgICAgICBob3N0X3RvX3Rh cmdldF90aW1ldmFsKGFyZzIgKyBzaXplb2Yoc3RydWN0IHRhcmdldF90aW1l dmFsKSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmdmFsdWUuaXRfdmFsdWUpOw0KKyAgICAgICAgICAgICAgICBpZiggY29w eV90b191c2VyX3RpbWV2YWwoYXJnMiwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmdmFsdWUuaXRfaW50ZXJ2YWwpICkgcmV0 dXJuIC1FRkFVTFQ7DQorICAgICAgICAgICAgICAgIGlmKCBjb3B5X3RvX3Vz ZXJfdGltZXZhbChhcmcyICsgc2l6ZW9mKHN0cnVjdCB0YXJnZXRfdGltZXZh bCksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JnZhbHVlLml0X3ZhbHVlKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAg ICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgIGJyZWFrOw0KQEAgLTM1MzQs NyArMzU2MCw3IEBADQogICAgICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQp KSB7DQogICAgICAgICAgICAgICAgIHN0cnVjdCB0YXJnZXRfc3RhdCAqdGFy Z2V0X3N0Ow0KIA0KLSAgICAgICAgICAgICAgICBsb2NrX3VzZXJfc3RydWN0 KHRhcmdldF9zdCwgYXJnMiwgMCk7DQorCQlpZiggbG9ja19hbmRfY2hlY2tf dXNlcl9zdHJ1Y3QoJnRhcmdldF9zdCxhcmcyLHNpemVvZigqdGFyZ2V0X3N0 KSw5LFBBR0VfV1JJVEUpICkgcmV0dXJuIC1FRkFVTFQ7DQogI2lmIGRlZmlu ZWQoVEFSR0VUX01JUFMpDQogICAgICAgICAgICAgICAgIHRhcmdldF9zdC0+ c3RfZGV2ID0gdHN3YXAzMihzdC5zdF9kZXYpOw0KICNlbHNlDQpAQCAtMzYw Myw3ICszNjI5LDggQEANCiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1c19w dHIpDQogICAgICAgICAgICAgICAgICAgICB0cHV0bChzdGF0dXNfcHRyLCBz dGF0dXMpOw0KICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0X3J1c2FnZSkg ew0KLSAgICAgICAgICAgICAgICAgICAgaG9zdF90b190YXJnZXRfcnVzYWdl KHRhcmdldF9ydXNhZ2UsICZydXNhZ2UpOw0KKyAgICAgICAgICAgICAgICAg ICAgaWYoICFjb3B5X3RvX3VzZXJfcnVzYWdlKHRhcmdldF9ydXNhZ2UsICZy dXNhZ2UpICkNCisJCQlyZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCkBAIC0zOTY1LDE3 ICszOTkyLDE3IEBADQogICAgICAgICAgICAgc3RydWN0IHRpbWVzcGVjIHRz Ow0KICAgICAgICAgICAgIHJldCA9IGdldF9lcnJubyhzY2hlZF9ycl9nZXRf aW50ZXJ2YWwoYXJnMSwgJnRzKSk7DQogICAgICAgICAgICAgaWYgKCFpc19l cnJvcihyZXQpKSB7DQotICAgICAgICAgICAgICAgIGhvc3RfdG9fdGFyZ2V0 X3RpbWVzcGVjKGFyZzIsICZ0cyk7DQorICAgICAgICAgICAgICAgIGlmKCBj b3B5X3RvX3VzZXJfdGltZXNwZWMoYXJnMiwgJnRzKSApIHJldHVybiAtRUZB VUxUOw0KICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgIGJy ZWFrOw0KICAgICBjYXNlIFRBUkdFVF9OUl9uYW5vc2xlZXA6DQogICAgICAg ICB7DQogICAgICAgICAgICAgc3RydWN0IHRpbWVzcGVjIHJlcSwgcmVtOw0K LSAgICAgICAgICAgIHRhcmdldF90b19ob3N0X3RpbWVzcGVjKCZyZXEsIGFy ZzEpOw0KKyAgICAgICAgICAgIGlmKCBjb3B5X2Zyb21fdXNlcl90aW1lc3Bl YygmcmVxLCBhcmcxKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgICAg IHJldCA9IGdldF9lcnJubyhuYW5vc2xlZXAoJnJlcSwgJnJlbSkpOw0KICAg ICAgICAgICAgIGlmIChpc19lcnJvcihyZXQpICYmIGFyZzIpIHsNCi0gICAg ICAgICAgICAgICAgaG9zdF90b190YXJnZXRfdGltZXNwZWMoYXJnMiwgJnJl bSk7DQorICAgICAgICAgICAgICAgIGlmKCBjb3B5X3RvX3VzZXJfdGltZXNw ZWMoYXJnMiwgJnJlbSkgKSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgICAg ICB9DQogICAgICAgICB9DQogICAgICAgICBicmVhazsNCkBAIC00MDcyLDYg KzQwOTksNyBAQA0KICNpZmRlZiBUQVJHRVRfTlJfc3RhdDY0DQogICAgIGNh c2UgVEFSR0VUX05SX3N0YXQ2NDoNCiAgICAgICAgIHAgPSBsb2NrX3VzZXJf c3RyaW5nKGFyZzEpOw0KKyAgICAgICAgaWYoIHJldD1wYWdlX2NoZWNrX3Jh bmdlKHAsMSxQQUdFX1JFQUQpICkgcmV0dXJuIHJldDsNCiAgICAgICAgIHJl dCA9IGdldF9lcnJubyhzdGF0KHBhdGgocCksICZzdCkpOw0KICAgICAgICAg dW5sb2NrX3VzZXIocCwgYXJnMSwgMCk7DQogICAgICAgICBnb3RvIGRvX3N0 YXQ2NDsNCkBAIC00MDc5LDYgKzQxMDcsNyBAQA0KICNpZmRlZiBUQVJHRVRf TlJfbHN0YXQ2NA0KICAgICBjYXNlIFRBUkdFVF9OUl9sc3RhdDY0Og0KICAg ICAgICAgcCA9IGxvY2tfdXNlcl9zdHJpbmcoYXJnMSk7DQorICAgICAgICBp ZiggcmV0PXBhZ2VfY2hlY2tfcmFuZ2UocCwxLFBBR0VfUkVBRCkgKSByZXR1 cm4gcmV0Ow0KICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKGxzdGF0KHBhdGgo cCksICZzdCkpOw0KICAgICAgICAgdW5sb2NrX3VzZXIocCwgYXJnMSwgMCk7 DQogICAgICAgICBnb3RvIGRvX3N0YXQ2NDsNCkBAIC00MDkxLDUzICs0MTIw LDUxIEBADQogICAgICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7DQog I2lmZGVmIFRBUkdFVF9BUk0NCiAgICAgICAgICAgICAgICAgaWYgKCgoQ1BV QVJNU3RhdGUgKiljcHVfZW52KS0+ZWFiaSkgew0KLSAgICAgICAgICAgICAg ICAgICAgc3RydWN0IHRhcmdldF9lYWJpX3N0YXQ2NCAqdGFyZ2V0X3N0Ow0K LSAgICAgICAgICAgICAgICAgICAgbG9ja191c2VyX3N0cnVjdCh0YXJnZXRf c3QsIGFyZzIsIDEpOw0KKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRh cmdldF9lYWJpX3N0YXQ2NCAqdGFyZ2V0X3N0ID0gKHN0cnVjdCB0YXJnZXRf ZWFiaV9zdGF0NjQgKilhcmcyOw0KKwkJICAgIGlmKCAhYWNjZXNzX29rKFZF UklGWV9XUklURSx0YXJnZXRfc3Qsc2l6ZW9mKHN0cnVjdCB0YXJnZXRfZWFi aV9zdGF0NjQpKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAgICAgICAg ICAgICAgbWVtc2V0KHRhcmdldF9zdCwgMCwgc2l6ZW9mKHN0cnVjdCB0YXJn ZXRfZWFiaV9zdGF0NjQpKTsNCi0gICAgICAgICAgICAgICAgICAgIC8qIHB1 dF91c2VyIGlzIHByb2JhYmx5IHdyb25nLiAgKi8NCi0gICAgICAgICAgICAg ICAgICAgIHB1dF91c2VyKHN0LnN0X2RldiwgJnRhcmdldF9zdC0+c3RfZGV2 KTsNCi0gICAgICAgICAgICAgICAgICAgIHB1dF91c2VyKHN0LnN0X2lubywg JnRhcmdldF9zdC0+c3RfaW5vKTsNCisgICAgICAgICAgICAgICAgICAgIC8q IHVzZSBfX3B1dF91c2VyKCkgc2luY2Ugd2UganVzdCBjaGVja2VkIHRoYXQg dGhlIGJ1ZmZlciBpcyB2YWxpZCAgKi8NCisgICAgICAgICAgICAgICAgICAg IF9fcHV0X3VzZXIoc3Quc3RfZGV2LCAmdGFyZ2V0X3N0LT5zdF9kZXYpOw0K KyAgICAgICAgICAgICAgICAgICAgX19wdXRfdXNlcihzdC5zdF9pbm8sICZ0 YXJnZXRfc3QtPnN0X2lubyk7DQogI2lmZGVmIFRBUkdFVF9TVEFUNjRfSEFT X0JST0tFTl9TVF9JTk8NCi0gICAgICAgICAgICAgICAgICAgIHB1dF91c2Vy KHN0LnN0X2lubywgJnRhcmdldF9zdC0+X19zdF9pbm8pOw0KKyAgICAgICAg ICAgICAgICAgICAgX19wdXRfdXNlcihzdC5zdF9pbm8sICZ0YXJnZXRfc3Qt Pl9fc3RfaW5vKTsNCiAjZW5kaWYNCi0gICAgICAgICAgICAgICAgICAgIHB1 dF91c2VyKHN0LnN0X21vZGUsICZ0YXJnZXRfc3QtPnN0X21vZGUpOw0KLSAg ICAgICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3RfbmxpbmssICZ0YXJn ZXRfc3QtPnN0X25saW5rKTsNCi0gICAgICAgICAgICAgICAgICAgIHB1dF91 c2VyKHN0LnN0X3VpZCwgJnRhcmdldF9zdC0+c3RfdWlkKTsNCi0gICAgICAg ICAgICAgICAgICAgIHB1dF91c2VyKHN0LnN0X2dpZCwgJnRhcmdldF9zdC0+ c3RfZ2lkKTsNCi0gICAgICAgICAgICAgICAgICAgIHB1dF91c2VyKHN0LnN0 X3JkZXYsICZ0YXJnZXRfc3QtPnN0X3JkZXYpOw0KKyAgICAgICAgICAgICAg ICAgICAgX19wdXRfdXNlcihzdC5zdF9tb2RlLCAmdGFyZ2V0X3N0LT5zdF9t b2RlKTsNCisgICAgICAgICAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Quc3Rf bmxpbmssICZ0YXJnZXRfc3QtPnN0X25saW5rKTsNCisgICAgICAgICAgICAg ICAgICAgIF9fcHV0X3VzZXIoc3Quc3RfdWlkLCAmdGFyZ2V0X3N0LT5zdF91 aWQpOw0KKyAgICAgICAgICAgICAgICAgICAgX19wdXRfdXNlcihzdC5zdF9n aWQsICZ0YXJnZXRfc3QtPnN0X2dpZCk7DQorICAgICAgICAgICAgICAgICAg ICBfX3B1dF91c2VyKHN0LnN0X3JkZXYsICZ0YXJnZXRfc3QtPnN0X3JkZXYp Ow0KICAgICAgICAgICAgICAgICAgICAgLyogWFhYOiBiZXR0ZXIgdXNlIG9m IGtlcm5lbCBzdHJ1Y3QgKi8NCi0gICAgICAgICAgICAgICAgICAgIHB1dF91 c2VyKHN0LnN0X3NpemUsICZ0YXJnZXRfc3QtPnN0X3NpemUpOw0KLSAgICAg ICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3RfYmxrc2l6ZSwgJnRhcmdl dF9zdC0+c3RfYmxrc2l6ZSk7DQotICAgICAgICAgICAgICAgICAgICBwdXRf dXNlcihzdC5zdF9ibG9ja3MsICZ0YXJnZXRfc3QtPnN0X2Jsb2Nrcyk7DQot ICAgICAgICAgICAgICAgICAgICBwdXRfdXNlcihzdC5zdF9hdGltZSwgJnRh cmdldF9zdC0+dGFyZ2V0X3N0X2F0aW1lKTsNCi0gICAgICAgICAgICAgICAg ICAgIHB1dF91c2VyKHN0LnN0X210aW1lLCAmdGFyZ2V0X3N0LT50YXJnZXRf c3RfbXRpbWUpOw0KLSAgICAgICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Qu c3RfY3RpbWUsICZ0YXJnZXRfc3QtPnRhcmdldF9zdF9jdGltZSk7DQotICAg ICAgICAgICAgICAgICAgICB1bmxvY2tfdXNlcl9zdHJ1Y3QodGFyZ2V0X3N0 LCBhcmcyLCAwKTsNCisgICAgICAgICAgICAgICAgICAgIF9fcHV0X3VzZXIo c3Quc3Rfc2l6ZSwgJnRhcmdldF9zdC0+c3Rfc2l6ZSk7DQorICAgICAgICAg ICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X2Jsa3NpemUsICZ0YXJnZXRf c3QtPnN0X2Jsa3NpemUpOw0KKyAgICAgICAgICAgICAgICAgICAgX19wdXRf dXNlcihzdC5zdF9ibG9ja3MsICZ0YXJnZXRfc3QtPnN0X2Jsb2Nrcyk7DQor ICAgICAgICAgICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X2F0aW1lLCAm dGFyZ2V0X3N0LT50YXJnZXRfc3RfYXRpbWUpOw0KKyAgICAgICAgICAgICAg ICAgICAgX19wdXRfdXNlcihzdC5zdF9tdGltZSwgJnRhcmdldF9zdC0+dGFy Z2V0X3N0X210aW1lKTsNCisgICAgICAgICAgICAgICAgICAgIF9fcHV0X3Vz ZXIoc3Quc3RfY3RpbWUsICZ0YXJnZXRfc3QtPnRhcmdldF9zdF9jdGltZSk7 DQogICAgICAgICAgICAgICAgIH0gZWxzZQ0KICNlbmRpZg0KICAgICAgICAg ICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGFyZ2V0 X3N0YXQ2NCAqdGFyZ2V0X3N0Ow0KLSAgICAgICAgICAgICAgICAgICAgbG9j a191c2VyX3N0cnVjdCh0YXJnZXRfc3QsIGFyZzIsIDEpOw0KKyAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHRhcmdldF9zdGF0NjQgKnRhcmdldF9zdCA9 IChzdHJ1Y3QgdGFyZ2V0X3N0YXQ2NCAqKWFyZzI7DQorCQkgICAgaWYoICFh Y2Nlc3Nfb2soVkVSSUZZX1dSSVRFLHRhcmdldF9zdCxzaXplb2Yoc3RydWN0 IHRhcmdldF9zdGF0NjQpKSApIHJldHVybiAtRUZBVUxUOw0KICAgICAgICAg ICAgICAgICAgICAgbWVtc2V0KHRhcmdldF9zdCwgMCwgc2l6ZW9mKHN0cnVj dCB0YXJnZXRfc3RhdDY0KSk7DQotICAgICAgICAgICAgICAgICAgICAvKiA/ Pz8gcHV0X3VzZXIgaXMgcHJvYmFibHkgd3JvbmcuICAqLw0KLSAgICAgICAg ICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3RfZGV2LCAmdGFyZ2V0X3N0LT5z dF9kZXYpOw0KLSAgICAgICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3Rf aW5vLCAmdGFyZ2V0X3N0LT5zdF9pbm8pOw0KKyAgICAgICAgICAgICAgICAg ICAgLyogdXNlIF9fcHV0X3VzZXIoKSBzaW5jZSB3ZSBqdXN0IGNoZWNrZWQg dGhhdCB0aGUgYnVmZmVyIGlzIHZhbGlkICAqLw0KKyAgICAgICAgICAgICAg ICAgICAgX19wdXRfdXNlcihzdC5zdF9kZXYsICZ0YXJnZXRfc3QtPnN0X2Rl dik7DQorICAgICAgICAgICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X2lu bywgJnRhcmdldF9zdC0+c3RfaW5vKTsNCiAjaWZkZWYgVEFSR0VUX1NUQVQ2 NF9IQVNfQlJPS0VOX1NUX0lOTw0KLSAgICAgICAgICAgICAgICAgICAgcHV0 X3VzZXIoc3Quc3RfaW5vLCAmdGFyZ2V0X3N0LT5fX3N0X2lubyk7DQorICAg ICAgICAgICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X2lubywgJnRhcmdl dF9zdC0+X19zdF9pbm8pOw0KICNlbmRpZg0KLSAgICAgICAgICAgICAgICAg ICAgcHV0X3VzZXIoc3Quc3RfbW9kZSwgJnRhcmdldF9zdC0+c3RfbW9kZSk7 DQotICAgICAgICAgICAgICAgICAgICBwdXRfdXNlcihzdC5zdF9ubGluaywg JnRhcmdldF9zdC0+c3RfbmxpbmspOw0KLSAgICAgICAgICAgICAgICAgICAg cHV0X3VzZXIoc3Quc3RfdWlkLCAmdGFyZ2V0X3N0LT5zdF91aWQpOw0KLSAg ICAgICAgICAgICAgICAgICAgcHV0X3VzZXIoc3Quc3RfZ2lkLCAmdGFyZ2V0 X3N0LT5zdF9naWQpOw0KLSAgICAgICAgICAgICAgICAgICAgcHV0X3VzZXIo c3Quc3RfcmRldiwgJnRhcmdldF9zdC0+c3RfcmRldik7DQorICAgICAgICAg ICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X21vZGUsICZ0YXJnZXRfc3Qt PnN0X21vZGUpOw0KKyAgICAgICAgICAgICAgICAgICAgX19wdXRfdXNlcihz dC5zdF9ubGluaywgJnRhcmdldF9zdC0+c3RfbmxpbmspOw0KKyAgICAgICAg ICAgICAgICAgICAgX19wdXRfdXNlcihzdC5zdF91aWQsICZ0YXJnZXRfc3Qt PnN0X3VpZCk7DQorICAgICAgICAgICAgICAgICAgICBfX3B1dF91c2VyKHN0 LnN0X2dpZCwgJnRhcmdldF9zdC0+c3RfZ2lkKTsNCisgICAgICAgICAgICAg ICAgICAgIF9fcHV0X3VzZXIoc3Quc3RfcmRldiwgJnRhcmdldF9zdC0+c3Rf cmRldik7DQogICAgICAgICAgICAgICAgICAgICAvKiBYWFg6IGJldHRlciB1 c2Ugb2Yga2VybmVsIHN0cnVjdCAqLw0KLSAgICAgICAgICAgICAgICAgICAg cHV0X3VzZXIoc3Quc3Rfc2l6ZSwgJnRhcmdldF9zdC0+c3Rfc2l6ZSk7DQot ICAgICAgICAgICAgICAgICAgICBwdXRfdXNlcihzdC5zdF9ibGtzaXplLCAm dGFyZ2V0X3N0LT5zdF9ibGtzaXplKTsNCi0gICAgICAgICAgICAgICAgICAg IHB1dF91c2VyKHN0LnN0X2Jsb2NrcywgJnRhcmdldF9zdC0+c3RfYmxvY2tz KTsNCi0gICAgICAgICAgICAgICAgICAgIHB1dF91c2VyKHN0LnN0X2F0aW1l LCAmdGFyZ2V0X3N0LT50YXJnZXRfc3RfYXRpbWUpOw0KLSAgICAgICAgICAg ICAgICAgICAgcHV0X3VzZXIoc3Quc3RfbXRpbWUsICZ0YXJnZXRfc3QtPnRh cmdldF9zdF9tdGltZSk7DQotICAgICAgICAgICAgICAgICAgICBwdXRfdXNl cihzdC5zdF9jdGltZSwgJnRhcmdldF9zdC0+dGFyZ2V0X3N0X2N0aW1lKTsN Ci0gICAgICAgICAgICAgICAgICAgIHVubG9ja191c2VyX3N0cnVjdCh0YXJn ZXRfc3QsIGFyZzIsIDApOw0KKyAgICAgICAgICAgICAgICAgICAgX19wdXRf dXNlcihzdC5zdF9zaXplLCAmdGFyZ2V0X3N0LT5zdF9zaXplKTsNCisgICAg ICAgICAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Quc3RfYmxrc2l6ZSwgJnRh cmdldF9zdC0+c3RfYmxrc2l6ZSk7DQorICAgICAgICAgICAgICAgICAgICBf X3B1dF91c2VyKHN0LnN0X2Jsb2NrcywgJnRhcmdldF9zdC0+c3RfYmxvY2tz KTsNCisgICAgICAgICAgICAgICAgICAgIF9fcHV0X3VzZXIoc3Quc3RfYXRp bWUsICZ0YXJnZXRfc3QtPnRhcmdldF9zdF9hdGltZSk7DQorICAgICAgICAg ICAgICAgICAgICBfX3B1dF91c2VyKHN0LnN0X210aW1lLCAmdGFyZ2V0X3N0 LT50YXJnZXRfc3RfbXRpbWUpOw0KKyAgICAgICAgICAgICAgICAgICAgX19w dXRfdXNlcihzdC5zdF9jdGltZSwgJnRhcmdldF9zdC0+dGFyZ2V0X3N0X2N0 aW1lKTsNCiAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCiAg ICAgICAgIH0NCkBAIC00NTgzLDcgKzQ2MTAsNyBAQA0KICAgICAgICAgc3Ry dWN0IHRpbWVzcGVjIHRzOw0KICAgICAgICAgcmV0ID0gZ2V0X2Vycm5vKGNs b2NrX2dldHRpbWUoYXJnMSwgJnRzKSk7DQogICAgICAgICBpZiAoIWlzX2Vy cm9yKHJldCkpIHsNCi0gICAgICAgICAgICBob3N0X3RvX3RhcmdldF90aW1l c3BlYyhhcmcyLCAmdHMpOw0KKyAgICAgICAgICAgIGlmKCBjb3B5X3RvX3Vz ZXJfdGltZXNwZWMoYXJnMiwgJnRzKSkgcmV0dXJuIC1FRkFVTFQ7DQogICAg ICAgICB9DQogICAgICAgICBicmVhazsNCiAgICAgfQ0KQEAgLTQ1OTQsNyAr NDYyMSw3IEBADQogICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7DQogICAg ICAgICByZXQgPSBnZXRfZXJybm8oY2xvY2tfZ2V0cmVzKGFyZzEsICZ0cykp Ow0KICAgICAgICAgaWYgKCFpc19lcnJvcihyZXQpKSB7DQotICAgICAgICAg ICAgaG9zdF90b190YXJnZXRfdGltZXNwZWMoYXJnMiwgJnRzKTsNCisgICAg ICAgICAgICBpZiggY29weV90b191c2VyX3RpbWVzcGVjKGFyZzIsICZ0cykg KSByZXR1cm4gLUVGQVVMVDsNCiAgICAgICAgIH0NCiAgICAgICAgIGJyZWFr Ow0KICAgICB9DQpJbmRleDogcWVtdS9saW51eC11c2VyL3FlbXUuaA0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KLS0tIHFlbXUub3JpZy9saW51eC11c2Vy L3FlbXUuaAkyMDA3LTA3LTEzIDA3OjEwOjU4LjAwMDAwMDAwMCAtMDQwMA0K KysrIHFlbXUvbGludXgtdXNlci9xZW11LmgJMjAwNy0wNy0xMyAwNzoxMTox Mi4wMDAwMDAwMDAgLTA0MDANCkBAIC0xNzEsNyArMTcxLDggQEANCiAjZGVm aW5lIFZFUklGWV9SRUFEIDANCiAjZGVmaW5lIFZFUklGWV9XUklURSAxDQog DQotI2RlZmluZSBhY2Nlc3Nfb2sodHlwZSxhZGRyLHNpemUpICgxKQ0KKyNk ZWZpbmUgYWNjZXNzX29rKHR5cGUsYWRkcixzaXplKSBcDQorICAgIChwYWdl X2NoZWNrX3JhbmdlKCh0YXJnZXRfdWxvbmcpYWRkcixzaXplLCh0eXBlPT1W RVJJRllfUkVBRCk/UEFHRV9SRUFEOlBBR0VfV1JJVEUpPT0wKQ0KIA0KIC8q IE5PVEUgZ2V0X3VzZXIgYW5kIHB1dF91c2VyIHVzZSBob3N0IGFkZHJlc3Nl cy4gICovDQogI2RlZmluZSBfX3B1dF91c2VyKHgscHRyKVwNCkBAIC0yMzgs NiArMjM5LDI2IEBADQogICAgIF9fcmV0O1wNCiB9KQ0KIA0KKyNkZWZpbmUg Y29weV9mcm9tX3VzZXIoaHB0ciwgZ3B0ciwgbGVuKSBcDQorKHsgXA0KKyAg ICBpbnQgcmV0PTA7XA0KKyAgICBpZiggYWNjZXNzX29rKFZFUklGWV9SRUFE LCBncHRyLCAobGVuKSApIClcDQorICAgICAgICBtZW1jcHkoaHB0cixncHRy LChsZW4pKTsgXA0KKyAgICBlbHNlIFwNCisgICAgICAgIHJldD0xO1wNCisg ICAgcmV0OyBcDQorfSkNCisNCisjZGVmaW5lIGNvcHlfdG9fdXNlcihncHRy LCBocHRyLCBsZW4pIFwNCisoeyBcDQorICAgIGludCByZXQ9MDtcDQorICAg IGlmKCBhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLCBncHRyLCAobGVuKSkgKVwN CisgICAgICAgIG1lbWNweShncHRyLGhwdHIsKGxlbikpOyBcDQorICAgIGVs c2UgXA0KKyAgICAgICAgcmV0PTE7XA0KKyAgICByZXQ7IFwNCit9KQ0KKw0K IC8qIEZ1bmN0aW9ucyBmb3IgYWNjZXNzaW5nIGd1ZXN0IG1lbW9yeS4gIFRo ZSB0Z2V0IGFuZCB0cHV0IGZ1bmN0aW9ucw0KICAgIHJlYWQvd3JpdGUgc2lu Z2xlIHZhbHVlcywgYnl0ZXN3YXBwaW5nIGFzIG5lY2Nlc3NhcnkuICBUaGUg bG9ja191c2VyDQogICAgZ2V0cyBhIHBvaW50ZXIgdG8gYSBjb250aWd1b3Vz IGFyZWEgb2YgZ3Vlc3QgbWVtb3J5LCBidXQgZG9lcyBub3QgcGVyZm9ybQ0K QEAgLTI5NSw2ICszMTYsMTYgQEANCiAjZGVmaW5lIHVubG9ja191c2VyX3N0 cnVjdChob3N0X3B0ciwgZ3Vlc3RfYWRkciwgY29weSkgXA0KICAgICB1bmxv Y2tfdXNlcihob3N0X3B0ciwgZ3Vlc3RfYWRkciwgKGNvcHkpID8gc2l6ZW9m KCpob3N0X3B0cikgOiAwKQ0KIA0KKy8qIFRoaXMgaXMgYmVpbmcgcGhhc2Vk IG90IGluIGZhdm9yIG9mIHRoZSBjb3B5KnVzZXIoKSBpbnRlcmZhY2VzICov DQorc3RhdGljIGlubGluZSBsb25nIGxvY2tfYW5kX2NoZWNrX3VzZXJfc3Ry dWN0KHZvaWQgKmhvc3RfYWRkciwgdGFyZ2V0X3Vsb25nIGd1ZXN0X2FkZHIs IGxvbmcgbGVuLCBpbnQgY29weSwgaW50IHBnX2FjY2VzcykNCit7DQorICAg IGxvbmcgKmhhZGRyLCByZXQgPSAwOw0KKyAgICBoYWRkciA9IChsb25nICop aG9zdF9hZGRyOw0KKyAgICBpZiggKHJldD1wYWdlX2NoZWNrX3JhbmdlKGd1 ZXN0X2FkZHIsbGVuLHBnX2FjY2VzcykpICE9IDAgKSByZXR1cm4gcmV0Ow0K KyAgICAqaGFkZHIgPSAobG9uZylsb2NrX3VzZXIoZ3Vlc3RfYWRkciwgbGVu LCBjb3B5KTsNCisgICAgcmV0dXJuIDA7DQorfQ0KKw0KICNkZWZpbmUgdGdl dDgoYWRkcikgbGR1YihhZGRyKQ0KICNkZWZpbmUgdHB1dDgoYWRkciwgdmFs KSBzdGIoYWRkciwgdmFsKQ0KICNkZWZpbmUgdGdldDE2KGFkZHIpIGxkdXco YWRkcikNCg== ---1463811327-1960088428-1184349348=:32663--