From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sog-mx-3.v43.ch3.sourceforge.com ([172.29.43.193] helo=mx.sourceforge.net) by sfs-ml-1.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1V1Sy4-0006De-1V for ltp-list@lists.sourceforge.net; Tue, 23 Jul 2013 03:08:52 +0000 Received: from mail-pd0-f182.google.com ([209.85.192.182]) by sog-mx-3.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128) (Exim 4.76) id 1V1Sxt-0004l5-4b for ltp-list@lists.sourceforge.net; Tue, 23 Jul 2013 03:08:51 +0000 Received: by mail-pd0-f182.google.com with SMTP id r10so7597722pdi.27 for ; Mon, 22 Jul 2013 20:08:35 -0700 (PDT) From: Hangbin Liu Date: Tue, 23 Jul 2013 11:07:56 +0800 Message-Id: <1374548876-24829-1-git-send-email-liuhangbin@gmail.com> MIME-Version: 1.0 Subject: [LTP] [PATCH] testcases/network/sctp: update sctp test to upstream version 1.0.15 List-Id: Linux Test Project General Discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ltp-list-bounces@lists.sourceforge.net To: LTP List Cc: Daniel Borkmann , Xie Lingyun U0NUUCB0ZXN0IGluIGx0cCBpcyBiYXNlZCBvbiBsa3NjdHAuIEJ1dCB0aGUgbGFzdCBwYXRjaCBm b3Igc2N0cCBpbiBsdHAgaXMKMjAwNi4gSXQgaGFzIGNoYW5nZWQgYSBsb3QgYW5kIGZpeGVkIG1h bnkgYnVncy4gVXBkYXRlIHNjdHAgdGVzdCB0byB1cHN0cmVhbQp2ZXJzaW9uIDEuMC4xNSBub3cu CgpGb3JtYXQgY29kZSB3aXRoCmZvciBmaWxlIGluIGBmaW5kIH4vZ2l0L2x0cC90ZXN0Y2FzZXMv bmV0d29yay9zY3RwIC1uYW1lICouYyAtbyAtbmFtZSAqLmhgOyBkbwoJfi9naXQvbGludXgvc2Ny aXB0cy9jbGVhbmZpbGUgJGZpbGUKCX4vZ2l0L2xpbnV4L3NjcmlwdHMvTGluZGVudCAkZmlsZQoJ cm0gLWYgJHtmaWxlfX4KZG9uZQoKU2lnbmVkLW9mZi1ieTogSGFuZ2JpbiBMaXUgPGxpdWhhbmdi aW5AZ21haWwuY29tPgotLS0KIC4uLi9zY3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfYWNjZXB0 X2Nsb3NlLmMgICAgIHwgIDI2ICstCiAuLi4vbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF8x X3RvXzFfYWRkcnMuYyAgICB8ICA0NCArLQogLi4uL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rl c3RfMV90b18xX2Nvbm5lY3QuYyAgfCAgMjggKy0KIC4uLi9uZXR3b3JrL3NjdHAvZnVuY190ZXN0 cy90ZXN0XzFfdG9fMV9jb25uZWN0eC5jIHwgIDUyICsrLQogLi4uL25ldHdvcmsvc2N0cC9mdW5j X3Rlc3RzL3Rlc3RfMV90b18xX2V2ZW50cy5jICAgfCAgIDggKy0KIC4uLi9zY3RwL2Z1bmNfdGVz dHMvdGVzdF8xX3RvXzFfaW5pdG1zZ19jb25uZWN0LmMgIHwgICA2ICstCiAuLi4vbmV0d29yay9z Y3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfbm9uYmxvY2suYyB8ICAzNCArLQogLi4uL25ldHdv cmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX3JlY3Zmcm9tLmMgfCAgMjYgKy0KIC4uLi9u ZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9yZWN2bXNnLmMgIHwgIDI3ICstCiAu Li4vbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfcnRvaW5mby5jICB8ICAxNiAr LQogLi4uL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX3NlbmQuYyAgICAgfCAg MjMgKy0KIC4uLi9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9zZW5kbXNnLmMg IHwgIDUwICstLQogLi4uL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX3NlbmR0 by5jICAgfCAgMTQgKy0KIC4uLi9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9z aHV0ZG93bi5jIHwgIDMwICstCiAuLi4vZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9zb2NrZXRfYmlu ZF9saXN0ZW4uYyAgICB8ICAzOCArLQogLi4uL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3Rf MV90b18xX3NvY2tvcHQuYyAgfCAgNzIgKy0tCiAuLi4vbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMv dGVzdF8xX3RvXzFfdGhyZWFkcy5jICB8ICA0NiArLQogLi4uL25ldHdvcmsvc2N0cC9mdW5jX3Rl c3RzL3Rlc3RfYXNzb2NfYWJvcnQuYyAgICAgfCAgMTcgKy0KIC4uLi9uZXR3b3JrL3NjdHAvZnVu Y190ZXN0cy90ZXN0X2Fzc29jX3NodXRkb3duLmMgIHwgIDEyICstCiB0ZXN0Y2FzZXMvbmV0d29y ay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF9hdXRvY2xvc2UuYyB8ICAxMyArLQogdGVzdGNhc2VzL25l dHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfYmFzaWMuYyAgICAgfCAgMjIgKy0KIHRlc3RjYXNl cy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0X2Nvbm5lY3QuYyAgIHwgIDMwICstCiB0ZXN0 Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF9jb25uZWN0eC5jICB8ICA0NSArLQog dGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfZnJhZ21lbnRzLmMgfCAgMjYg Ky0KIHRlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0X2dldG5hbWUuYyAgIHwg IDQ0ICstCiAuLi4vbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF9pbmFkZHJfYW55LmMgICAg ICB8ICAxNiArLQogdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfcGVlbG9m Zi5jICAgfCAgMTYgKy0KIHRlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0X3Jl Y3Ztc2cuYyAgIHwgICA4ICstCiAuLi4vc2N0cC9mdW5jX3Rlc3RzL3Rlc3Rfc2N0cF9zZW5kcmVj dm1zZy5jICAgICAgICB8ICA0NSArLQogdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3Rz L3Rlc3Rfc29ja29wdC5jICAgfCAzMTIgKysrKysrKysrKystLQogdGVzdGNhc2VzL25ldHdvcmsv c2N0cC9mdW5jX3Rlc3RzL3Rlc3RfdGNwX3N0eWxlLmMgfCAgNTAgKy0tCiAuLi4vbmV0d29yay9z Y3RwL2Z1bmNfdGVzdHMvdGVzdF90aW1ldG9saXZlLmMgICAgICB8ICAzMiArLQogdGVzdGNhc2Vz L25ldHdvcmsvc2N0cC9pbmNsdWRlL25ldGluZXQvc2N0cC5oICAgICAgfCA0OTEgKysrKysrKysr KysrKystLS0tLS0tCiB0ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2xpYi9hZGRycy5jICAgICAgICAg ICAgICAgICB8ICA5OCArKy0tCiB0ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2xpYi9iaW5keC5jICAg ICAgICAgICAgICAgICB8ICAgNCArLQogdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9saWIvY29ubmVj dHguYyAgICAgICAgICAgICAgfCAxMzYgKysrKystCiB0ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2xp Yi9vcHRfaW5mby5jICAgICAgICAgICAgICB8ICAgNyArLQogdGVzdGNhc2VzL25ldHdvcmsvc2N0 cC9saWIvcGVlbG9mZi5jICAgICAgICAgICAgICAgfCAgIDQgKy0KIHRlc3RjYXNlcy9uZXR3b3Jr L3NjdHAvbGliL3JlY3Ztc2cuYyAgICAgICAgICAgICAgIHwgICA2ICstCiB0ZXN0Y2FzZXMvbmV0 d29yay9zY3RwL2xpYi9zZW5kbXNnLmMgICAgICAgICAgICAgICB8ICAgNiArLQogdGVzdGNhc2Vz L25ldHdvcmsvc2N0cC90ZXN0bGliL3NjdHB1dGlsLmMgICAgICAgICAgfCAgNTMgKy0tCiB0ZXN0 Y2FzZXMvbmV0d29yay9zY3RwL3Rlc3RsaWIvc2N0cHV0aWwuaCAgICAgICAgICB8IDEwNCArKyst LQogNDIgZmlsZXMgY2hhbmdlZCwgMTMzMSBpbnNlcnRpb25zKCspLCA4MDYgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90 b18xX2FjY2VwdF9jbG9zZS5jIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rl c3RfMV90b18xX2FjY2VwdF9jbG9zZS5jCmluZGV4IGU5YTEzZTcuLjhiZmIxYmQgMTAwNjQ0Ci0t LSBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9hY2NlcHRf Y2xvc2UuYworKysgYi90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3Rv XzFfYWNjZXB0X2Nsb3NlLmMKQEAgLTEsNCArMSw0IEBACi0vKiBTQ1RQIGtlcm5lbCByZWZlcmVu Y2UgSW1wbGVtZW50YXRpb24KKy8qIFNDVFAga2VybmVsIEltcGxlbWVudGF0aW9uCiAgKiBDb3B5 cmlnaHQgKGMpIDIwMDMgSGV3bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnksIEwuUAog ICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwNAogICoKQEAgLTIxLDEzICsyMSwxMyBAQAog ICogVEVTVDk6IHZhbGlkIHNvY2tldCBkZXNjcmlwdG9yCiAgKiBURVNUMTA6IENsb3NlZCBzb2Nr ZXQgZGVzY3JpcHRvcgogICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBp cyBmcmVlIHNvZnR3YXJlOworICogVGhlIFNDVFAgaW1wbGVtZW50YXRpb24gaXMgZnJlZSBzb2Z0 d2FyZTsKICAqIHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mCiAgKiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy LCBvciAoYXQgeW91ciBvcHRpb24pCiAgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqCi0gKiBUaGUg U0NUUCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdAorICogVGhlIFNDVFAgaW1wbGVtZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdAogICogd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkCiAgKiAgICAgICAgICAgICAgICAgKioqKioqKioq KioqKioqKioqKioqKioqCiAgKiB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCkBAIC0xMjcsNyArMTI3LDcgQEAgaW50IG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKiBhY2NlcHQoKSBURVNUMTogQmFkIHNvY2tldCBk ZXNjcmlwdG9yIEVCQURGLCBFeHBlY3RlZCBlcnJvciAqLwogCWVycm9yID0gYWNjZXB0KC0xLCAo c3RydWN0IHNvY2thZGRyICopJmFjcHRfYWRkciwgJmxlbik7CiAJaWYgKGVycm9yICE9IC0xIHx8 IGVycm5vICE9IEVCQURGKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImFjY2VwdCB3aXRoIGEg YmFkIHNvY2tldCBkZXNjcmlwdG9yIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJhY2Nl cHQgd2l0aCBhIGJhZCBzb2NrZXQgZGVzY3JpcHRvciIKIAkJCSAiZXJyb3I6JWQsIGVycm5vOiVk IiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAiYWNjZXB0KCkgd2l0aCBhIGJh ZCBzb2NrZXQgZGVzY3JpcHRvciAtIEVCQURGIik7CkBAIC0xMzUsNyArMTM1LDcgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKmFjY2VwdCgpIFRFU1QyOiBJbnZhbGlkIHNv Y2tldCBFTk9UU09DSywgRXhwZWN0ZWQgZXJyb3IgKi8KIAllcnJvciA9IGFjY2VwdCgwLCAoc3Ry dWN0IHNvY2thZGRyICopJmFjcHRfYWRkciwgJmxlbik7CiAJaWYgKGVycm9yICE9IC0xIHx8IGVy cm5vICE9IEVOT1RTT0NLKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImFjY2VwdCB3aXRoIGlu dmFsaWQgc29ja2V0IgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJhY2NlcHQgd2l0aCBp bnZhbGlkIHNvY2tldCIKIAkJCSAiZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsK IAogCXRzdF9yZXNtKFRQQVNTLCAiYWNjZXB0KCkgd2l0aCBpbnZhbGlkIHNvY2tldCAtIEVOT1RT T0NLIik7CkBAIC0xNDMsNyArMTQzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAkvKmFjY2VwdCgpIFRFU1QzOiBJbnZhbGlkIGFkZHJlc3MgRUZBVUxULCBFeHBlY3RlZCBl cnJvciAqLwogCWVycm9yID0gYWNjZXB0KGxzdG5fc2ssIChzdHJ1Y3Qgc29ja2FkZHIgKiktMSwg Jmxlbik7CiAJaWYgKGVycm9yICE9IC0xIHx8IGVycm5vICE9IEVGQVVMVCkKLQkJdHN0X2Jya20o VEJST0ssIE5VTEwsICJhY2NlcHQgd2l0aCBpbnZhbGlkIGFkZHJlc3MiCisJCXRzdF9icmttKFRC Uk9LLCB0c3RfZXhpdCwgImFjY2VwdCB3aXRoIGludmFsaWQgYWRkcmVzcyIKIAkJCSAiZXJyb3I6 JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAiYWNjZXB0 KCkgd2l0aCBpbnZhbGlkIGFkZHJlc3MgLSBFRkFVTFQiKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qYWNjZXB0KCkgVEVTVDQ6IG9uIGEg bm9uLWxpc3RlbmluZyBzb2NrZXQgRUlOVkFMLCBFeHBlY3RlZCBlcnJvciAqLwogCWVycm9yID0g YWNjZXB0KHNrLCAoc3RydWN0IHNvY2thZGRyICopJmFjcHRfYWRkciwgJmxlbik7CiAJaWYgKGVy cm9yICE9IC0xIHx8IGVycm5vICE9IEVJTlZBTCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJh Y2NlcHQgb24gYSBub24tbGlzdGVuaW5nIHNvY2tldCIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9l eGl0LCAiYWNjZXB0IG9uIGEgbm9uLWxpc3RlbmluZyBzb2NrZXQiCiAJCQkgImVycm9yOiVkLCBl cnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgImFjY2VwdCgpIG9u IGEgbm9uLWxpc3RlbmluZyBzb2NrZXQgLSBFSU5WQUwiKTsKQEAgLTE2Niw3ICsxNjYsNyBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qYWNjZXB0KCkgVEVTVDU6IE9uIGEg ZXN0YWJsaXNoZWQgc29ja2V0IEVJTlZBTCwgRXhwZWN0ZWQgZXJyb3IgKi8KIAllcnJvciA9IGFj Y2VwdChhY3B0X3NrLCAoc3RydWN0IHNvY2thZGRyICopJmFjcHRfYWRkciwgJmxlbik7CiAJaWYg KGVycm9yICE9IC0xIHx8IGVycm5vICE9IEVJTlZBTCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEws ICJhY2NlcHQgb24gYW4gZXN0YWJsaXNoZWQgc29ja2V0IgorCQl0c3RfYnJrbShUQlJPSywgdHN0 X2V4aXQsICJhY2NlcHQgb24gYW4gZXN0YWJsaXNoZWQgc29ja2V0IgogCQkJICJlcnJvcjolZCwg ZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJhY2NlcHQoKSBv biBhbiBlc3RhYmxpc2hlZCBzb2NrZXQgLSBFSU5WQUwiKTsKQEAgLTE3OSw3ICsxNzksNyBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qYWNjZXB0KCkgVEVTVDY6IE9uIHRo ZSBDTE9TRUQgYXNzb2NpYXRpb24gc2hvdWxkIHN1Y2NlZWQgKi8KIAlhY3B0X3NrID0gYWNjZXB0 KGxzdG5fc2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWNwdF9hZGRyLCAmbGVuKTsKIAlpZiAoYWNw dF9zayA8IDApCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiYWNjZXB0IGEgY2xvc2VkIGFzc29j aWF0aW9uIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJhY2NlcHQgYSBjbG9zZWQgYXNz b2NpYXRpb24iCiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0 c3RfcmVzbShUUEFTUywgImFjY2VwdCgpIGEgY2xvc2VkIGFzc29jaWF0aW9uIC0gU1VDQ0VTUyIp OwpAQCAtMjAwLDcgKzIwMCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ LypjbG9zZSgpIFRFU1Q4OiBCYWQgc29ja2V0IGRlc2NyaXB0b3IsIEVCQURGIEV4cGVjdGVkIGVy cm9yICovCiAJZXJyb3IgPSBjbG9zZSgtMSk7CiAJaWYgKGVycm9yICE9IC0xIHx8IGVycm5vICE9 IEVCQURGKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImNsb3NlIHdpdGggYSBiYWQgc29ja2V0 IGRlc2NyaXB0b3IgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJjbG9zZSB3aXRoIGEg YmFkIHNvY2tldCBkZXNjcmlwdG9yICIKIAkJCSAiZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3Is IGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAiY2xvc2UoKSB3aXRoIGEgYmFkIHNvY2tldCBk ZXNjcmlwdG9yIC0gRUJBREYiKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCS8qY2xvc2UoKSBURVNUOTogdmFsaWQgc29ja2V0IGRlc2NyaXB0 b3Igc2hvdWxkIHN1Y2NlZWQgKi8KIAllcnJvciA9IGNsb3NlKHNrKTsKIAlpZiAoZXJyb3IgPCAw KQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImNsb3NlIHdpdGggYSB2YWxpZCBzb2NrZXQgZGVz Y3JpcHRvciIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiY2xvc2Ugd2l0aCBhIHZhbGlk IHNvY2tldCBkZXNjcmlwdG9yIgogCQkJICIgZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVy cm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAiY2xvc2UoKSB3aXRoIGEgdmFsaWQgc29ja2V0IGRl c2NyaXB0b3IgLSBTVUNDRVNTIik7CkBAIC0yMTYsNyArMjE2LDcgQEAgaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKmNsb3NlKCkgVEVTVDEwOiBjbG9zZWQgc29ja2V0IGRlc2Ny aXB0b3IsIEVCQURGIEV4cGVjdGVkIGVycm9yICovCiAJZXJyb3IgPSBjbG9zZShzayk7CiAJaWYg KGVycm9yICE9IC0xIHx8IGVycm5vICE9IEVCQURGKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwg ImNsb3NlIHdpdGggYSBjbG9zZWQgc29ja2V0ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0 LCAiY2xvc2Ugd2l0aCBhIGNsb3NlZCBzb2NrZXQgIgogCQkJICJkZXNjcmlwdG9yIGVycm9yOiVk LCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgImNsb3NlKCkg d2l0aCBhIGNsb3NlZCBzb2NrZXQgZGVzY3JpcHRvciAtIEVCQURGIik7CkBAIC0yMjcsNSArMjI3 LDUgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJY2xvc2UoY2xudDJfc2tb aV0pOwogCX0KIAotCXRzdF9leGl0KCk7CisJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS90ZXN0 Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfYWRkcnMuYyBiL3Rlc3Rj YXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9hZGRycy5jCmluZGV4IDdi M2I4NmYuLjJiOTgyOTggMTAwNjQ0Ci0tLSBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190 ZXN0cy90ZXN0XzFfdG9fMV9hZGRycy5jCisrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVu Y190ZXN0cy90ZXN0XzFfdG9fMV9hZGRycy5jCkBAIC0xLDQgKzEsNCBAQAotLyogU0NUUCBrZXJu ZWwgcmVmZXJlbmNlIEltcGxlbWVudGF0aW9uCisvKiBTQ1RQIGtlcm5lbCBJbXBsZW1lbnRhdGlv bgogICogQ29weXJpZ2h0IChjKSAyMDAzIEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21w YW55LCBMLlAKICAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDQKICAqCkBAIC0yNywxMyAr MjcsMTMgQEAKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogVEVTVDEwOiBGcmVlaW5n IHRoZSBwZWVyJ3MgYWRkcmVzcwogICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBsZW1lbnRh dGlvbiBpcyBmcmVlIHNvZnR3YXJlOworICogVGhlIFNDVFAgaW1wbGVtZW50YXRpb24gaXMgZnJl ZSBzb2Z0d2FyZTsKICAqIHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mCiAgKiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCiAgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqCi0g KiBUaGUgU0NUUCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdAorICogVGhlIFNDVFAgaW1wbGVtZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdAogICogd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkCiAgKiAgICAgICAgICAgICAgICAgKioq KioqKioqKioqKioqKioqKioqKioqCiAgKiB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCkBAIC03OCwxOCArNzgsMTYgQEAgaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKIAlpbnQgZXJyb3I7CiAJc29ja2xlbl90 IGxlbjsKLQlpbnQgc2ssIGxzdG5fc2ssIGNsbnRfc2ssIGFjcHRfc2ssIHBmX2NsYXNzLCBzazE7 CisJaW50IGxzdG5fc2ssIGNsbnRfc2ssIGFjcHRfc2ssIHBmX2NsYXNzLCBzazE7CiAJc3RydWN0 IG1zZ2hkciBvdXRtZXNzYWdlOwogCXN0cnVjdCBtc2doZHIgaW5tZXNzYWdlOwogCWNoYXIgKm1l c3NhZ2UgPSAiaGVsbG8sIHdvcmxkIVxuIjsKLQlzdHJ1Y3QgaW92ZWMgaW92OwogCXN0cnVjdCBp b3ZlYyBpb3ZfcmN2OwogCXN0cnVjdCBzY3RwX3NuZHJjdmluZm8gKnNpbmZvOwogCWludCBtc2df Y291bnQ7CiAJY2hhciBvdXRjbXNnW0NNU0dfU1BBQ0Uoc2l6ZW9mKHN0cnVjdCBzY3RwX3NuZHJj dmluZm8pKV07CiAJc3RydWN0IGNtc2doZHIgKmNtc2c7CiAJc3RydWN0IGlvdmVjIG91dF9pb3Y7 Ci0JY2hhciAqYnVmZmVyX3NuZDsKIAljaGFyICpidWZmZXJfcmN2OwogCWNoYXIgaW5jbXNnW0NN U0dfU1BBQ0Uoc2l6ZW9mKHNjdHBfY21zZ19kYXRhX3QpKV07CiAJc3RydWN0IHNvY2thZGRyICps YWRkcnMsICpwYWRkcnM7CkBAIC0xMDUsOCArMTAzLDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAogCXBmX2NsYXNzID0gUEZfSU5FVDsKIAotCXNrID0gdGVzdF9zb2NrZXQo cGZfY2xhc3MsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1NDVFApOwotCiAJLypDcmVhdGluZyBhIHJl Z3VsYXIgc29ja2V0ICovCiAJY2xudF9zayA9IHRlc3Rfc29ja2V0KHBmX2NsYXNzLCBTT0NLX1NU UkVBTSwgSVBQUk9UT19TQ1RQKTsKIApAQCAtMTQ2LDggKzE0Miw2IEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJbXNnX2NvdW50ID0gc3RybGVuKG1lc3NhZ2UpICsgMTsKIAog CW1lbXNldCgmb3V0bWVzc2FnZSwgMCwgc2l6ZW9mKG91dG1lc3NhZ2UpKTsKLQlidWZmZXJfc25k ID0gbWFsbG9jKFJFQUxMWV9CSUcpOwotCiAJb3V0bWVzc2FnZS5tc2dfbmFtZSA9ICZsc3RuX2Fk ZHI7CiAJb3V0bWVzc2FnZS5tc2dfbmFtZWxlbiA9IHNpemVvZihsc3RuX2FkZHIpOwogCW91dG1l c3NhZ2UubXNnX2lvdiA9ICZvdXRfaW92OwpAQCAtMTY0LDExICsxNTgsOSBAQCBpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCXNpbmZvID0gKHN0cnVjdCBzY3RwX3NuZHJjdmluZm8g KilDTVNHX0RBVEEoY21zZyk7CiAJbWVtc2V0KHNpbmZvLCAweDAwLCBzaXplb2Yoc3RydWN0IHNj dHBfc25kcmN2aW5mbykpOwogCi0JaW92Lmlvdl9iYXNlID0gYnVmZmVyX3NuZDsKLQlpb3YuaW92 X2xlbiA9IFJFQUxMWV9CSUc7CiAJb3V0bWVzc2FnZS5tc2dfaW92LT5pb3ZfYmFzZSA9IG1lc3Nh Z2U7Ci0KIAlvdXRtZXNzYWdlLm1zZ19pb3YtPmlvdl9sZW4gPSBtc2dfY291bnQ7CisKIAl0ZXN0 X3NlbmRtc2coY2xudF9zaywgJm91dG1lc3NhZ2UsIE1TR19OT1NJR05BTCwgbXNnX2NvdW50KTsK IAogCXRlc3RfcmVjdm1zZyhhY3B0X3NrLCAmaW5tZXNzYWdlLCBNU0dfTk9TSUdOQUwpOwpAQCAt MTc2LDcgKzE2OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLypzY3Rw X2dldGxhZGRycygpIFRFU1QxOiBCYWQgc29ja2V0IGRlc2NyaXB0b3IsIEVCQURGIEV4cGVjdGVk IGVycm9yICovCiAJZXJyb3IgPSBzY3RwX2dldGxhZGRycygtMSwgMCwgJmxhZGRycyk7CiAJaWYg KGVycm9yICE9IC0xIHx8IGVycm5vICE9IEVCQURGKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwg InNjdHBfZ2V0bGFkZHJzIHdpdGggYSBiYWQgc29ja2V0ICIKKwkJdHN0X2Jya20oVEJST0ssIHRz dF9leGl0LCAic2N0cF9nZXRsYWRkcnMgd2l0aCBhIGJhZCBzb2NrZXQgIgogCQkJICJkZXNjcmlw dG9yIGVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFT UywgInNjdHBfZ2V0bGFkZHJzKCkgd2l0aCBhIGJhZCBzb2NrZXQgZGVzY3JpcHRvciAtICIKQEAg LTE4NSw3ICsxNzcsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qc2N0 cF9nZXRsYWRkcnMoKSBURVNUMjogSW52YWxpZCBzb2NrZXQsIEVOT1RTT0NLIEV4cGVjdGVkIGVy cm9yICovCiAJZXJyb3IgPSBzY3RwX2dldGxhZGRycygwLCAwLCAmbGFkZHJzKTsKIAlpZiAoZXJy b3IgIT0gLTEgfHwgZXJybm8gIT0gRU5PVFNPQ0spCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAi c2N0cF9nZXRsYWRkcnMgd2l0aCBpbnZhbGlkIHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0 c3RfZXhpdCwgInNjdHBfZ2V0bGFkZHJzIHdpdGggaW52YWxpZCBzb2NrZXQgIgogCQkJICJlcnJv cjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJzY3Rw X2dldGxhZGRycygpIHdpdGggaW52YWxpZCBzb2NrZXQgLSBFTk9UU09DSyIpOwpAQCAtMTk1LDcg KzE4Nyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJc2sxID0gc29ja2V0 KHBmX2NsYXNzLCBTT0NLX1NUUkVBTSwgSVBQUk9UT19JUCk7CiAJZXJyb3IgPSBzY3RwX2dldGxh ZGRycyhzazEsIDAsICZsYWRkcnMpOwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFT1BO T1RTVVBQKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNjdHBfZ2V0bGFkZHJzIHdpdGggc29j a2V0IG9mICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2N0cF9nZXRsYWRkcnMgd2l0 aCBzb2NrZXQgb2YgIgogCQkJICJkaWZmZXJlbnQgcHJvdG9jb2wgZXJyb3I6JWQsIGVycm5vOiVk IiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAic2N0cF9nZXRsYWRkcnMoKSB3 aXRoIHNvY2tldCBvZiBkaWZmZXJlbnQgcHJvdG9jb2wgLSAiCkBAIC0yMDQsMjAgKzE5NiwyMCBA QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qc2N0cF9nZXRsYWRkcnMoKSBU RVNUNDogR2V0dGluZyB0aGUgbG9jYWwgYWRkcmVzc2VzICovCiAJZXJyb3IgPSBzY3RwX2dldGxh ZGRycyhsc3RuX3NrLCAwLCAmbGFkZHJzKTsKIAlpZiAoZXJyb3IgPCAwKQotCQl0c3RfYnJrbShU QlJPSywgTlVMTCwgInNjdHBfZ2V0bGFkZHJzIHdpdGggdmFsaWQgc29ja2V0ICIKKwkJdHN0X2Jy a20oVEJST0ssIHRzdF9leGl0LCAic2N0cF9nZXRsYWRkcnMgd2l0aCB2YWxpZCBzb2NrZXQgIgog CQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJYWRkciA9IChzdHJ1 Y3Qgc29ja2FkZHJfaW4gKilsYWRkcnM7CiAJaWYgKGFkZHItPnNpbl9wb3J0ICE9IGxzdG5fYWRk ci5zaW5fcG9ydCB8fAogCSAgICBhZGRyLT5zaW5fZmFtaWx5ICE9IGxzdG5fYWRkci5zaW5fZmFt aWx5IHx8CiAJICAgIGFkZHItPnNpbl9hZGRyLnNfYWRkciAhPSBsc3RuX2FkZHIuc2luX2FkZHIu c19hZGRyKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNjdHBfZ2V0bGFkZHJzIGNvbXBhcmlz aW9uIGZhaWxlZCIpOworCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzY3RwX2dldGxhZGRy cyBjb21wYXJpc2lvbiBmYWlsZWQiKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAic2N0cF9nZXRsYWRk cnMoKSAtIFNVQ0NFU1MiKTsKIAogCS8qc2N0cF9mcmVlYWxkZHJzKCkgVEVTVDU6IGZyZWVpbmcg dGhlIGxvY2FsIGFkZHJlc3MgKi8KIAlpZiAoKHNjdHBfZnJlZWxhZGRycyhsYWRkcnMpKSA8IDAp Ci0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2N0cF9mcmVlbGFkZHJzICIKKwkJdHN0X2Jya20o VEJST0ssIHRzdF9leGl0LCAic2N0cF9mcmVlbGFkZHJzICIKIAkJCSAiZXJyb3I6JWQsIGVycm5v OiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAic2N0cF9mcmVlbGFkZHJz KCkgLSBTVUNDRVNTIik7CkBAIC0yMjUsNyArMjE3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAkvKnNjdHBfZ2V0cGFkZHJzKCkgVEVTVDY6IEJhZCBzb2NrZXQgZGVzY3Jp cHRvciwgRUJBREYgRXhwZWN0ZWQgZXJyb3IgKi8KIAllcnJvciA9IHNjdHBfZ2V0cGFkZHJzKC0x LCAwLCAmcGFkZHJzKTsKIAlpZiAoZXJyb3IgIT0gLTEgfHwgZXJybm8gIT0gRUJBREYpCi0JCXRz dF9icmttKFRCUk9LLCBOVUxMLCAic2N0cF9nZXRwYWRkcnMgd2l0aCBhIGJhZCBzb2NrZXQgIgor CQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzY3RwX2dldHBhZGRycyB3aXRoIGEgYmFkIHNv Y2tldCAiCiAJCQkgImRlc2NyaXB0b3IgZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5v KTsKIAogCXRzdF9yZXNtKFRQQVNTLCAic2N0cF9nZXRwYWRkcnMoKSB3aXRoIGEgYmFkIHNvY2tl dCBkZXNjcmlwdG9yIC0gIgpAQCAtMjM0LDcgKzIyNiw3IEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJLypzY3RwX2dldHBhZGRycygpIFRFU1Q3OiBJbnZhbGlkIHNvY2tldCwg RU5PVFNPQ0sgRXhwZWN0ZWQgZXJyb3IgKi8KIAllcnJvciA9IHNjdHBfZ2V0cGFkZHJzKDAsIDAs ICZwYWRkcnMpOwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFTk9UU09DSykKLQkJdHN0 X2Jya20oVEJST0ssIE5VTEwsICJzY3RwX2dldHBhZGRycyB3aXRoIGludmFsaWQgc29ja2V0ICIK KwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2N0cF9nZXRwYWRkcnMgd2l0aCBpbnZhbGlk IHNvY2tldCAiCiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0 c3RfcmVzbShUUEFTUywgInNjdHBfZ2V0cGFkZHJzKCkgd2l0aCBpbnZhbGlkIHNvY2tldCAtIEVO T1RTT0NLIik7CkBAIC0yNDMsNyArMjM1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKIAkgICBFT1BOT1RTVVBQIEV4cGVjdGVkIGVycm9yICovCiAJZXJyb3IgPSBzY3RwX2dl dHBhZGRycyhzazEsIDAsICZsYWRkcnMpOwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBF T1BOT1RTVVBQKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNjdHBfZ2V0cGFkZHJzIHdpdGgg c29ja2V0IG9mICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2N0cF9nZXRwYWRkcnMg d2l0aCBzb2NrZXQgb2YgIgogCQkJICJkaWZmZXJlbnQgcHJvdG9jb2wgZXJyb3I6JWQsIGVycm5v OiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAic2N0cF9nZXRwYWRkcnMo KSB3aXRoIHNvY2tldCBvZiBkaWZmZXJlbnQgcHJvdG9jb2wgLSAiCkBAIC0yNTIsMjUgKzI0NCwy NSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qc2N0cF9nZXRwYWRkcnMo KSBURVNUOTogR2V0dGluZyB0aGUgcGVlciBhZGRyZXNzZXMgKi8KIAllcnJvciA9IHNjdHBfZ2V0 cGFkZHJzKGFjcHRfc2ssIDAsICZwYWRkcnMpOwogCWlmIChlcnJvciA8IDApCi0JCXRzdF9icmtt KFRCUk9LLCBOVUxMLCAic2N0cF9nZXRwYWRkcnMgd2l0aCB2YWxpZCBzb2NrZXQgIgorCQl0c3Rf YnJrbShUQlJPSywgdHN0X2V4aXQsICJzY3RwX2dldHBhZGRycyB3aXRoIHZhbGlkIHNvY2tldCAi CiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAlhZGRyID0gKHN0 cnVjdCBzb2NrYWRkcl9pbiAqKXBhZGRyczsKIAlpZiAoYWRkci0+c2luX3BvcnQgIT0gYWNwdF9h ZGRyLnNpbl9wb3J0IHx8CiAJICAgIGFkZHItPnNpbl9mYW1pbHkgIT0gYWNwdF9hZGRyLnNpbl9m YW1pbHkgfHwKIAkgICAgYWRkci0+c2luX2FkZHIuc19hZGRyICE9IGFjcHRfYWRkci5zaW5fYWRk ci5zX2FkZHIpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2N0cF9nZXRwYWRkcnMgY29tcGFy aXNpb24gZmFpbGVkIik7CisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNjdHBfZ2V0cGFk ZHJzIGNvbXBhcmlzaW9uIGZhaWxlZCIpOwogCiAJdHN0X3Jlc20oVFBBU1MsICJzY3RwX2dldHBh ZGRycygpIC0gU1VDQ0VTUyIpOwogCiAJLypzY3RwX2ZyZWVhcGRkcnMoKSBURVNUMTA6IGZyZWVp bmcgdGhlIHBlZXIgYWRkcmVzcyAqLwogCWlmICgoc2N0cF9mcmVlcGFkZHJzKHBhZGRycykpIDwg MCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJzY3RwX2ZyZWVwYWRkcnMgIgorCQl0c3RfYnJr bShUQlJPSywgdHN0X2V4aXQsICJzY3RwX2ZyZWVwYWRkcnMgIgogCQkJICJlcnJvcjolZCwgZXJy bm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJzY3RwX2ZyZWVwYWRk cnMoKSAtIFNVQ0NFU1MiKTsKIAogCWNsb3NlKGNsbnRfc2spOwogCi0JdHN0X2V4aXQoKTsKKwly ZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0 cy90ZXN0XzFfdG9fMV9jb25uZWN0LmMgYi90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVz dHMvdGVzdF8xX3RvXzFfY29ubmVjdC5jCmluZGV4IDkzZjJjYWEuLjhlZjE4MWQgMTAwNjQ0Ci0t LSBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9jb25uZWN0 LmMKKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX2Nv bm5lY3QuYwpAQCAtMSw0ICsxLDQgQEAKLS8qIFNDVFAga2VybmVsIHJlZmVyZW5jZSBJbXBsZW1l bnRhdGlvbgorLyogU0NUUCBrZXJuZWwgSW1wbGVtZW50YXRpb24KICAqIENvcHlyaWdodCAoYykg MjAwMyBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QCiAgKiAoQykgQ29w eXJpZ2h0IElCTSBDb3JwLiAyMDA0CiAgKgpAQCAtMTUsMTMgKzE1LDEzIEBACiAgKiBURVNUOTog T24gZXN0YWJsaXNoZWQgc29ja2V0CiAgKiBURVNUMTA6IENvbm5lY3QgdG8gcmUtZXN0YWJsaXNo IGEgY2xvc2VkIGFzc29jaWF0aW9uLgogICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBsZW1l bnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOworICogVGhlIFNDVFAgaW1wbGVtZW50YXRpb24gaXMg ZnJlZSBzb2Z0d2FyZTsKICAqIHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mCiAgKiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCiAgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KICAq Ci0gKiBUaGUgU0NUUCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdAorICogVGhlIFNDVFAgaW1wbGVtZW50YXRpb24gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdAogICogd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkCiAgKiAgICAgICAgICAgICAgICAg KioqKioqKioqKioqKioqKioqKioqKioqCiAgKiB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCkBAIC0xMTIsNyArMTEyLDcgQEAg aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlsZW4gPSBzaXplb2Yoc3RydWN0IHNv Y2thZGRyX2luKTsKIAllcnJvciA9IGNvbm5lY3QoLTEsIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIg KikmY29ubl9hZGRyLCBsZW4pOwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFQkFERikK LQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJjb25uZWN0IHdpdGggYmFkIHNvY2tldCAiCisJCXRz dF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImNvbm5lY3Qgd2l0aCBiYWQgc29ja2V0ICIKIAkJCSAi ZGVzY3JpcHRvciBlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jl c20oVFBBU1MsICJjb25uZWN0KCkgd2l0aCBiYWQgc29ja2V0IGRlc2NyaXB0b3IgLSBFQkFERiIp OwpAQCAtMTIwLDcgKzEyMCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ Lypjb25uZWN0ICgpIFRFU1QyOiBJbnZhbGlkIHNvY2tldCwgRU5PVFNPQ0sgRXhwZWN0ZWQgZXJy b3IgKi8KIAllcnJvciA9IGNvbm5lY3QoMCwgKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqKSZjb25u X2FkZHIsIGxlbik7CiAJaWYgKGVycm9yICE9IC0xIHx8IGVycm5vICE9IEVOT1RTT0NLKQotCQl0 c3RfYnJrbShUQlJPSywgTlVMTCwgImNvbm5lY3Qgd2l0aCBpbnZhbGlkIHNvY2tldCAiCisJCXRz dF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImNvbm5lY3Qgd2l0aCBpbnZhbGlkIHNvY2tldCAiCiAJ CQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFT UywgImNvbm5lY3QoKSB3aXRoIGludmFsaWQgc29ja2V0IC0gRU5PVFNPQ0siKTsKQEAgLTEyOCw3 ICsxMjgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qY29ubmVjdCAo KSBURVNUMzogSW52YWxpZCBhZGRyZXNzLCBFRkFVTFQgRXhwZWN0ZWQgZXJyb3IgKi8KIAllcnJv ciA9IGNvbm5lY3Qoc2ssIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKiktMSwgbGVuKTsKIAlpZiAo ZXJyb3IgIT0gLTEgfHwgZXJybm8gIT0gRUZBVUxUKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwg ImNvbm5lY3Qgd2l0aCBpbnZhbGlkIGFkZHJlc3MgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4 aXQsICJjb25uZWN0IHdpdGggaW52YWxpZCBhZGRyZXNzICIKIAkJCSAiZXJyb3I6JWQsIGVycm5v OiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAiY29ubmVjdCgpIHdpdGgg aW52YWxpZCBhZGRyZXNzIC0gRUZBVUxUIik7CkBAIC0xMzYsNyArMTM2LDcgQEAgaW50IG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKmNvbm5lY3QgKCkgVEVTVDQ6IEludmFsaWQgYWRk cmVzcyBsZW5ndGgsIEVJTlZBTCBFeHBlY3RlZCBlcnJvciAqLwogCWVycm9yID0gY29ubmVjdChz aywgKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqKSZjb25uX2FkZHIsIChsZW4gLSAzKSk7CiAJaWYg KGVycm9yICE9IC0xIHx8IGVycm5vICE9IEVJTlZBTCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEws ICJjb25uZWN0IHdpdGggaW52YWxpZCBhZGRyZXNzIGxlbmd0aCAiCisJCXRzdF9icmttKFRCUk9L LCB0c3RfZXhpdCwgImNvbm5lY3Qgd2l0aCBpbnZhbGlkIGFkZHJlc3MgbGVuZ3RoICIKIAkJCSAi ZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAi Y29ubmVjdCgpIHdpdGggaW52YWxpZCBhZGRyZXNzIGxlbmd0aCAtIEVJTlZBTCIpOwpAQCAtMTQ1 LDcgKzE0NSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJY29ubl9hZGRy LnNpbl9mYW1pbHkgPSA5MDkwOwkvKkFzc2lnbmluZyBpbnZhbGlkIGFkZHJlc3MgZmFtaWx5ICov CiAJZXJyb3IgPSBjb25uZWN0KHNrLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopJmNvbm5fYWRk ciwgbGVuKTsKIAlpZiAoZXJyb3IgIT0gLTEgfHwgZXJybm8gIT0gRUlOVkFMKQotCQl0c3RfYnJr bShUQlJPSywgTlVMTCwgImNvbm5lY3Qgd2l0aCBpbnZhbGlkIGFkZHJlc3MgZmFtaWx5ICIKKwkJ dHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiY29ubmVjdCB3aXRoIGludmFsaWQgYWRkcmVzcyBm YW1pbHkgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0 X3Jlc20oVFBBU1MsICJjb25uZWN0KCkgd2l0aCBpbnZhbGlkIGFkZHJlc3MgZmFtaWx5IC0gRUlO VkFMIik7CkBAIC0xNTksNyArMTU5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAkJZXJyb3IgPSBjb25uZWN0KGNsbnRfc2tbaV0sIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIg KikmY29ubl9hZGRyLAogCQkJCWxlbik7CiAJCWlmIChlcnJvciA8IDApCi0JCQl0c3RfYnJrbShU QlJPSywgTlVMTCwgInZhbGlkIGJsb2NraW5nIGNvbm5lY3QgIgorCQkJdHN0X2Jya20oVEJST0ss IHRzdF9leGl0LCAidmFsaWQgYmxvY2tpbmcgY29ubmVjdCAiCiAJCQkJICJlcnJvcjolZCwgZXJy bm86JWQiLCBlcnJvciwgZXJybm8pOwogCX0KIApAQCAtMTcwLDcgKzE3MCw3IEBAIGludCBtYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLypOb3cgdGhhdCBhY2NlcHQgcXVldWUgaXMgZnVs bCwgdGhlIGJlbG93IGNvbm5lY3Qgc2hvdWxkIGZhaWwgKi8KIAllcnJvciA9IGNvbm5lY3QoY2xu dDJfc2ssIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKikmY29ubl9hZGRyLCBsZW4pOwogCWlmIChl cnJvciAhPSAtMSB8fCBlcnJubyAhPSBFQ09OTlJFRlVTRUQpCi0JCXRzdF9icmttKFRCUk9LLCBO VUxMLCAiY29ubmVjdCB3aGVuIGFjY2VwdCBxdWV1ZSBpcyBmdWxsICIKKwkJdHN0X2Jya20oVEJS T0ssIHRzdF9leGl0LCAiY29ubmVjdCB3aGVuIGFjY2VwdCBxdWV1ZSBpcyBmdWxsICIKIAkJCSAi ZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAi Y29ubmVjdCgpIHdoZW4gYWNjZXB0IHF1ZXVlIGlzIGZ1bGwgLSBFQ09OTlJFRlVTRUQiKTsKQEAg LTE4Myw3ICsxODMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qY29u bmVjdCAoKSBURVNUODogZnJvbSBhIGxpc3RlbmluZyBzb2NrZXQsIEVJU0NPTk4gRXhwZWN0IGVy cm9yICovCiAJZXJyb3IgPSBjb25uZWN0KGxzdG5fc2ssIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIg KikmbHN0bl9hZGRyLCBsZW4pOwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFSVNDT05O KQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImNvbm5lY3Qgb24gYSBsaXN0ZW5pbmcgc29ja2V0 ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiY29ubmVjdCBvbiBhIGxpc3RlbmluZyBz b2NrZXQgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0 X3Jlc20oVFBBU1MsICJjb25uZWN0KCkgb24gYSBsaXN0ZW5pbmcgc29ja2V0IC0gRUlTQ09OTiIp OwpAQCAtMTkyLDcgKzE5Miw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ aSA9IDA7CiAJZXJyb3IgPSBjb25uZWN0KGFjcHRfc2tbaV0sIChjb25zdCBzdHJ1Y3Qgc29ja2Fk ZHIgKikmbHN0bl9hZGRyLCBsZW4pOwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFSVND T05OKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImNvbm5lY3Qgb24gYW4gZXN0YWJsaXNoZWQg c29ja2V0ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiY29ubmVjdCBvbiBhbiBlc3Rh Ymxpc2hlZCBzb2NrZXQgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8p OwogCiAJdHN0X3Jlc20oVFBBU1MsICJjb25uZWN0KCkgb24gYW4gZXN0YWJsaXNoZWQgc29ja2V0 IC0gRUlTQ09OTiIpOwpAQCAtMjA3LDcgKzIwNyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pCiAJICovCiAJZXJyb3IgPSBjb25uZWN0KHNrMSwgKGNvbnN0IHN0cnVjdCBzb2Nr YWRkciAqKSZjb25uX2FkZHIsIGxlbik7CiAJaWYgKGVycm9yIDwgMCkKLQkJdHN0X2Jya20oVEJS T0ssIE5VTEwsICJSZS1lc3RhYmxpc2ggYW4gYXNzb2NpYXRpb24gdGhhdCAiCisJCXRzdF9icmtt KFRCUk9LLCB0c3RfZXhpdCwgIlJlLWVzdGFibGlzaCBhbiBhc3NvY2lhdGlvbiB0aGF0ICIKIAkJ CSAiaXMgY2xvc2VkIGVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3Rf cmVzbShUUEFTUywgImNvbm5lY3QoKSB0byByZS1lc3RhYmxpc2ggYSBjbG9zZWQgYXNzb2NpYXRp b24gLSAiCkBAIC0yMTcsNSArMjE3LDUgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAljbG9zZShzazEpOwogCWNsb3NlKGxzdG5fc2spOwogCi0JdHN0X2V4aXQoKTsKKwlyZXR1 cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90 ZXN0XzFfdG9fMV9jb25uZWN0eC5jIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3Rz L3Rlc3RfMV90b18xX2Nvbm5lY3R4LmMKaW5kZXggNTUxZDQ5Yi4uMGVmNmQzOSAxMDA2NDQKLS0t IGEvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX2Nvbm5lY3R4 LmMKKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX2Nv bm5lY3R4LmMKQEAgLTEsNCArMSw0IEBACi0vKiBTQ1RQIGtlcm5lbCByZWZlcmVuY2UgSW1wbGVt ZW50YXRpb24KKy8qIFNDVFAga2VybmVsIEltcGxlbWVudGF0aW9uCiAgKiBDb3B5cmlnaHQgKGMp IDIwMDMgSGV3bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnksIEwuUAogICogKEMpIENv cHlyaWdodCBJQk0gQ29ycC4gMjAwNAogICoKQEAgLTE1LDEzICsxNSwxMyBAQAogICogVEVTVDk6 IE9uIGVzdGFibGlzaGVkIHNvY2tldAogICogVEVTVDEwOiBDb25uZWN0IHRvIHJlLWVzdGFibGlz aCBhIGNsb3NlZCBhc3NvY2lhdGlvbi4KICAqCi0gKiBUaGUgU0NUUCByZWZlcmVuY2UgaW1wbGVt ZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsKKyAqIFRoZSBTQ1RQIGltcGxlbWVudGF0aW9uIGlz IGZyZWUgc29mdHdhcmU7CiAgKiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZgogICogdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQogICogYW55IGxhdGVyIHZlcnNpb24uCiAg KgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQKKyAqIFRoZSBTQ1RQIGltcGxlbWVudGF0aW9uIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKICAqIHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAogICogICAgICAgICAgICAgICAg ICoqKioqKioqKioqKioqKioqKioqKioqKgogICogd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgpAQCAtMTExLDE3ICsxMTEsMTcg QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCS8qc2N0cF9jb25uZWN0eCAo KSBURVNUMTogQmFkIHNvY2tldCBkZXNjcmlwdG9yLCBFQkFERiBFeHBlY3RlZCBlcnJvciAqLwog CWxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOwotCWVycm9yID0gc2N0cF9jb25uZWN0 eCgtMSwgKHN0cnVjdCBzb2NrYWRkciAqKSZjb25uX2FkZHIsIDEpOworCWVycm9yID0gc2N0cF9j b25uZWN0eCgtMSwgKHN0cnVjdCBzb2NrYWRkciAqKSZjb25uX2FkZHIsIDEsIE5VTEwpOwogCWlm IChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFQkFERikKLQkJdHN0X2Jya20oVEJST0ssIE5VTEws ICJzY3RwX2Nvbm5lY3R4IHdpdGggYmFkIHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3Rf ZXhpdCwgInNjdHBfY29ubmVjdHggd2l0aCBiYWQgc29ja2V0ICIKIAkJCSAiZGVzY3JpcHRvciBl cnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJz Y3RwX2Nvbm5lY3R4KCkgd2l0aCBiYWQgc29ja2V0IGRlc2NyaXB0b3IgLSBFQkFERiIpOwogCiAJ LypzY3RwX2Nvbm5lY3R4ICgpIFRFU1QyOiBJbnZhbGlkIHNvY2tldCwgRU5PVFNPQ0sgRXhwZWN0 ZWQgZXJyb3IgKi8KLQllcnJvciA9IHNjdHBfY29ubmVjdHgoMCwgKHN0cnVjdCBzb2NrYWRkciAq KSZjb25uX2FkZHIsIDEpOworCWVycm9yID0gc2N0cF9jb25uZWN0eCgwLCAoc3RydWN0IHNvY2th ZGRyICopJmNvbm5fYWRkciwgMSwgTlVMTCk7CiAJaWYgKGVycm9yICE9IC0xIHx8IGVycm5vICE9 IEVOT1RTT0NLKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNjdHBfY29ubmVjdHggd2l0aCBp bnZhbGlkIHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNjdHBfY29ubmVj dHggd2l0aCBpbnZhbGlkIHNvY2tldCAiCiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9y LCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNjdHBfY29ubmVjdHgoKSB3aXRoIGludmFs aWQgc29ja2V0IC0gRU5PVFNPQ0siKTsKQEAgLTEyOSwxNyArMTI5LDE3IEBAIGludCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAJLypzY3RwX2Nvbm5lY3R4ICgpIFRFU1QzOiBJbnZhbGlk IGFkZHJlc3MsIEVJTlZBTCBFeHBlY3RlZCBlcnJvciAqLwogCXRtcF9hZGRyID0gKHN0cnVjdCBz b2NrYWRkciAqKW1hbGxvYyhzaXplb2Yoc3RydWN0IHNvY2thZGRyKSAtIDEpOwogCXRtcF9hZGRy LT5zYV9mYW1pbHkgPSBBRl9JTkVUOwotCWVycm9yID0gc2N0cF9jb25uZWN0eChzaywgdG1wX2Fk ZHIsIDEpOworCWVycm9yID0gc2N0cF9jb25uZWN0eChzaywgdG1wX2FkZHIsIDEsIE5VTEwpOwog CWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFSU5WQUwpCi0JCXRzdF9icmttKFRCUk9LLCBO VUxMLCAic2N0cF9jb25uZWN0eCB3aXRoIGludmFsaWQgYWRkcmVzcyAiCisJCXRzdF9icmttKFRC Uk9LLCB0c3RfZXhpdCwgInNjdHBfY29ubmVjdHggd2l0aCBpbnZhbGlkIGFkZHJlc3MgIgogCQkJ ICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1Ms ICJzY3RwX2Nvbm5lY3R4KCkgd2l0aCBpbnZhbGlkIGFkZHJlc3MgLSBFSU5WQUwiKTsKIAogCS8q c2N0cF9jb25uZWN0eCAoKSBURVNUNDogSW52YWxpZCBhZGRyZXNzIGxlbmd0aCwgRUlOVkFMIEV4 cGVjdGVkIGVycm9yICovCi0JZXJyb3IgPSBzY3RwX2Nvbm5lY3R4KHNrLCAoc3RydWN0IHNvY2th ZGRyICopJmNvbm5fYWRkciwgMCk7CisJZXJyb3IgPSBzY3RwX2Nvbm5lY3R4KHNrLCAoc3RydWN0 IHNvY2thZGRyICopJmNvbm5fYWRkciwgMCwgTlVMTCk7CiAJaWYgKGVycm9yICE9IC0xIHx8IGVy cm5vICE9IEVJTlZBTCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsCisJCXRzdF9icmttKFRCUk9L LCB0c3RfZXhpdCwKIAkJCSAic2N0cF9jb25uZWN0eCB3aXRoIGludmFsaWQgYWRkcmVzcyBsZW5n dGggIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCkBAIC0xNDcs OSArMTQ3LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCS8qc2N0cF9j b25uZWN0eCAoKSBURVNUNTogSW52YWxpZCBhZGRyZXNzIGZhbWlseSwgRUlOVkFMIEV4cGVjdCBl cnJvciAqLwogCWNvbm5fYWRkci5zaW5fZmFtaWx5ID0gOTA5MDsJLypBc3NpZ25pbmcgaW52YWxp ZCBhZGRyZXNzIGZhbWlseSAqLwotCWVycm9yID0gc2N0cF9jb25uZWN0eChzaywgKHN0cnVjdCBz b2NrYWRkciAqKSZjb25uX2FkZHIsIDEpOworCWVycm9yID0gc2N0cF9jb25uZWN0eChzaywgKHN0 cnVjdCBzb2NrYWRkciAqKSZjb25uX2FkZHIsIDEsIE5VTEwpOwogCWlmIChlcnJvciAhPSAtMSB8 fCBlcnJubyAhPSBFSU5WQUwpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLAorCQl0c3RfYnJrbShU QlJPSywgdHN0X2V4aXQsCiAJCQkgInNjdHBfY29ubmVjdHggd2l0aCBpbnZhbGlkIGFkZHJlc3Mg ZmFtaWx5ICIKIAkJCSAiZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIApAQCAt MTYyLDkgKzE2MiwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCSAgIGxp c3RlbmluZyBTS19NQVggY2xpZW50cyAqLwogCWZvciAoaSA9IDA7IGkgPCBTS19NQVg7IGkrKykg ewogCQllcnJvciA9IHNjdHBfY29ubmVjdHgoY2xudF9za1tpXSwgKHN0cnVjdCBzb2NrYWRkciAq KSZjb25uX2FkZHIsCi0JCQkJICAgICAgMSk7CisJCQkJICAgICAgMSwgTlVMTCk7CiAJCWlmIChl cnJvciA8IDApCi0JCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInZhbGlkIGJsb2NraW5nIHNjdHBf Y29ubmVjdHggIgorCQkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LAorCQkJCSAidmFsaWQgYmxv Y2tpbmcgc2N0cF9jb25uZWN0eCAiCiAJCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwg ZXJybm8pOwogCX0KIApAQCAtMTczLDkgKzE3NCwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQogCS8qc2N0cF9jb25uZWN0eCAoKSBURVNUNzogc2N0cF9jb25uZWN0eCB3aGVu IGFjY2VwdCBxdWV1ZSBpcyBmdWxsLCBFQ09OTlJFRlVTRUQKIAkgICBFeHBlY3QgZXJyb3IgKi8K IAkvKk5vdyB0aGF0IGFjY2VwdCBxdWV1ZSBpcyBmdWxsLCB0aGUgYmVsb3cgc2N0cF9jb25uZWN0 eCBzaG91bGQgZmFpbCAqLwotCWVycm9yID0gc2N0cF9jb25uZWN0eChjbG50Ml9zaywgKHN0cnVj dCBzb2NrYWRkciAqKSZjb25uX2FkZHIsIDEpOworCWVycm9yID0gc2N0cF9jb25uZWN0eChjbG50 Ml9zaywgKHN0cnVjdCBzb2NrYWRkciAqKSZjb25uX2FkZHIsIDEsIE5VTEwpOwogCWlmIChlcnJv ciAhPSAtMSB8fCBlcnJubyAhPSBFQ09OTlJFRlVTRUQpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxM LCAic2N0cF9jb25uZWN0eCB3aGVuIGFjY2VwdCBxdWV1ZSBpcyBmdWxsICIKKwkJdHN0X2Jya20o VEJST0ssIHRzdF9leGl0LAorCQkJICJzY3RwX2Nvbm5lY3R4IHdoZW4gYWNjZXB0IHF1ZXVlIGlz IGZ1bGwgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0 X3Jlc20oVFBBU1MsCkBAIC0xODcsMTggKzE4OSwyMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQogCQkJCQkgKHN0cnVjdCBzb2NrYWRkciAqKSZhY3B0X2FkZHIsICZsZW4pOwog CiAJLypzY3RwX2Nvbm5lY3R4ICgpIFRFU1Q4OiBmcm9tIGEgbGlzdGVuaW5nIHNvY2tldCwgRUlT Q09OTiBFeHBlY3QgZXJyb3IgKi8KLQllcnJvciA9IHNjdHBfY29ubmVjdHgobHN0bl9zaywgKHN0 cnVjdCBzb2NrYWRkciAqKSZsc3RuX2FkZHIsIDEpOworCWVycm9yID0gc2N0cF9jb25uZWN0eChs c3RuX3NrLCAoc3RydWN0IHNvY2thZGRyICopJmxzdG5fYWRkciwgMSwgTlVMTCk7CiAJaWYgKGVy cm9yICE9IC0xIHx8IGVycm5vICE9IEVJU0NPTk4pCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAi c2N0cF9jb25uZWN0eCBvbiBhIGxpc3RlbmluZyBzb2NrZXQgIgorCQl0c3RfYnJrbShUQlJPSywg dHN0X2V4aXQsICJzY3RwX2Nvbm5lY3R4IG9uIGEgbGlzdGVuaW5nIHNvY2tldCAiCiAJCQkgImVy cm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNj dHBfY29ubmVjdHgoKSBvbiBhIGxpc3RlbmluZyBzb2NrZXQgLSBFSVNDT05OIik7CiAKIAkvKnNj dHBfY29ubmVjdHgoKSBURVNUOTogT24gZXN0YWJsaXNoZWQgc29ja2V0LCBFSVNDT05OIEV4cGVj dCBlcnJvciAqLwogCWkgPSAwOwotCWVycm9yID0gc2N0cF9jb25uZWN0eChhY3B0X3NrW2ldLCAo c3RydWN0IHNvY2thZGRyICopJmxzdG5fYWRkciwgMSk7CisJZXJyb3IgPQorCSAgICBzY3RwX2Nv bm5lY3R4KGFjcHRfc2tbaV0sIChzdHJ1Y3Qgc29ja2FkZHIgKikmbHN0bl9hZGRyLCAxLCBOVUxM KTsKIAlpZiAoZXJyb3IgIT0gLTEgfHwgZXJybm8gIT0gRUlTQ09OTikKLQkJdHN0X2Jya20oVEJS T0ssIE5VTEwsICJzY3RwX2Nvbm5lY3R4IG9uIGFuIGVzdGFibGlzaGVkIHNvY2tldCAiCisJCXRz dF9icmttKFRCUk9LLCB0c3RfZXhpdCwKKwkJCSAic2N0cF9jb25uZWN0eCBvbiBhbiBlc3RhYmxp c2hlZCBzb2NrZXQgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwog CiAJdHN0X3Jlc20oVFBBU1MsICJzY3RwX2Nvbm5lY3R4KCkgb24gYW4gZXN0YWJsaXNoZWQgc29j a2V0IC0gRUlTQ09OTiIpOwpAQCAtMjExLDkgKzIxNSw5IEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJLyogc2N0cF9jb25uZWN0eCgpIFRFU1QxMDogUmUtZXN0YWJsaXNoIGFu IGFzc29jaWF0aW9uIHRoYXQgaXMgY2xvc2VkLgogCSAqIHNob3VsZCBzdWNjZWVkLgogCSAqLwot CWVycm9yID0gc2N0cF9jb25uZWN0eChzazEsIChzdHJ1Y3Qgc29ja2FkZHIgKikmY29ubl9hZGRy LCAxKTsKKwllcnJvciA9IHNjdHBfY29ubmVjdHgoc2sxLCAoc3RydWN0IHNvY2thZGRyICopJmNv bm5fYWRkciwgMSwgTlVMTCk7CiAJaWYgKGVycm9yIDwgMCkKLQkJdHN0X2Jya20oVEJST0ssIE5V TEwsICJSZS1lc3RhYmxpc2ggYW4gYXNzb2NpYXRpb24gdGhhdCAiCisJCXRzdF9icmttKFRCUk9L LCB0c3RfZXhpdCwgIlJlLWVzdGFibGlzaCBhbiBhc3NvY2lhdGlvbiB0aGF0ICIKIAkJCSAiaXMg Y2xvc2VkIGVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShU UEFTUywKQEAgLTIyNCw1ICsyMjgsNSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQogCWNsb3NlKHNrMSk7CiAJY2xvc2UobHN0bl9zayk7CiAKLQl0c3RfZXhpdCgpOworCXJldHVy biAwOwogfQpkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rl c3RfMV90b18xX2V2ZW50cy5jIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rl c3RfMV90b18xX2V2ZW50cy5jCmluZGV4IDUxNGIyNWIuLjI4MDU2ZDcgMTAwNjQ0Ci0tLSBhL3Rl c3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9ldmVudHMuYworKysg Yi90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfZXZlbnRzLmMK QEAgLTEsMTYgKzEsMTYgQEAKLS8qIFNDVFAga2VybmVsIHJlZmVyZW5jZSBJbXBsZW1lbnRhdGlv bgorLyogU0NUUCBrZXJuZWwgSW1wbGVtZW50YXRpb24KICAqIENvcHlyaWdodCAoYykgMjAwMyBI ZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QCiAgKiAoQykgQ29weXJpZ2h0 IElCTSBDb3JwLiAyMDA0CiAgKgogICogVGhpcyB0ZXN0IHRlc3RzIHRoZSBldmVudHMgZm9yIDEt MSBzdHlsZSBzb2NrZXRzLgogICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlv biBpcyBmcmVlIHNvZnR3YXJlOworICogVGhlIFNDVFAgaW1wbGVtZW50YXRpb24gaXMgZnJlZSBz b2Z0d2FyZTsKICAqIHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mCiAgKiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyLCBvciAoYXQgeW91ciBvcHRpb24pCiAgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqCi0gKiBU aGUgU0NUUCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdAorICogVGhlIFNDVFAgaW1wbGVtZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdAogICogd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkCiAgKiAgICAgICAgICAgICAgICAgKioqKioq KioqKioqKioqKioqKioqKioqCiAgKiB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCkBAIC0xODQsNSArMTg0LDUgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAljbG9zZShzdnJfc2spOwogCWNsb3NlKGFjcHRf c2spOwogCi0JdHN0X2V4aXQoKTsKKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RjYXNl cy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9pbml0bXNnX2Nvbm5lY3QuYyBi L3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9pbml0bXNnX2Nv bm5lY3QuYwppbmRleCAxMWI2MjlhLi5iYjYwYWJmIDEwMDY0NAotLS0gYS90ZXN0Y2FzZXMvbmV0 d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfaW5pdG1zZ19jb25uZWN0LmMKKysrIGIv dGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX2luaXRtc2dfY29u bmVjdC5jCkBAIC0xLDE3ICsxLDE3IEBACi0vKiBTQ1RQIGtlcm5lbCByZWZlcmVuY2UgSW1wbGVt ZW50YXRpb24KKy8qIFNDVFAga2VybmVsIEltcGxlbWVudGF0aW9uCiAgKiBDb3B5cmlnaHQgKGMp IDIwMDMgSGV3bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnksIEwuUAogICogKEMpIENv cHlyaWdodCBJQk0gQ29ycC4gMjAwNAogICoKICAqIFdoZW4gaW5pdCB0aW1lb3V0IGlzIHNldCB0 byB6ZXJvLCBhIGNvbm5lY3QgKCkgY3Jhc2hlZCB0aGUgc3lzdGVtLiBUaGlzIGNhc2UKICAqIHRl c3RzIHRoZSBmaXggZm9yIHRoZSBzYW1lLgogICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBs ZW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOworICogVGhlIFNDVFAgaW1wbGVtZW50YXRpb24g aXMgZnJlZSBzb2Z0d2FyZTsKICAqIHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mCiAgKiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCiAgKiBhbnkgbGF0ZXIgdmVyc2lvbi4K ICAqCi0gKiBUaGUgU0NUUCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdAorICogVGhlIFNDVFAgaW1wbGVtZW50YXRpb24gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdAogICogd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkCiAgKiAgICAgICAgICAgICAg ICAgKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCmRpZmYgLS1naXQgYS90ZXN0 Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfbm9uYmxvY2suYyBiL3Rl c3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9ub25ibG9jay5jCmlu ZGV4IDdiNjZiMjAuLjFmMTVkZDEgMTAwNjQ0Ci0tLSBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAv ZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9ub25ibG9jay5jCisrKyBiL3Rlc3RjYXNlcy9uZXR3b3Jr L3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9ub25ibG9jay5jCkBAIC0xLDQgKzEsNCBAQAot LyogU0NUUCBrZXJuZWwgcmVmZXJlbmNlIEltcGxlbWVudGF0aW9uCisvKiBTQ1RQIGtlcm5lbCBJ bXBsZW1lbnRhdGlvbgogICogQ29weXJpZ2h0IChjKSAyMDAzIEhld2xldHQtUGFja2FyZCBEZXZl bG9wbWVudCBDb21wYW55LCBMLlAKICAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDQKICAq CkBAIC0xMiwxMyArMTIsMTMgQEAKICAqIFRFU1Q1OiByZWN2bXNnKCkgc2hvdWxkIHN1Y2NlZWQg aWYgZGF0YSBwcmVzZW50IHRvIHJlY2VpdmUgaW4gbm9uIGJsb2NraW5nCiAgKgkgIG1vZGUKICAq Ci0gKiBUaGUgU0NUUCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsK KyAqIFRoZSBTQ1RQIGltcGxlbWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7CiAgKiB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZgogICog dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICogdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0 aW9uKQogICogYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGlt cGxlbWVudGF0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKKyAqIFRoZSBT Q1RQIGltcGxlbWVudGF0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKICAq IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZAogICogICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKgog ICogd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLgpAQCAtNjgsMTQgKzY4LDExIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCiAJc3RydWN0IG1zZ2hkciBvdXRtZXNzYWdlOwogCXN0cnVjdCBtc2doZHIgaW5tZXNz YWdlOwogCWNoYXIgKm1lc3NhZ2UgPSAiaGVsbG8sIHdvcmxkIVxuIjsKLQlzdHJ1Y3QgaW92ZWMg aW92OwogCXN0cnVjdCBpb3ZlYyBpb3ZfcmN2OwogCXN0cnVjdCBzY3RwX3NuZHJjdmluZm8gKnNp bmZvOwotCWludCBjb3VudDsKIAljaGFyIG91dGNtc2dbQ01TR19TUEFDRShzaXplb2Yoc3RydWN0 IHNjdHBfc25kcmN2aW5mbykpXTsKIAlzdHJ1Y3QgY21zZ2hkciAqY21zZzsKIAlzdHJ1Y3QgaW92 ZWMgb3V0X2lvdjsKLQljaGFyICpidWZmZXJfc25kOwogCWNoYXIgKmJ1ZmZlcl9yY3Y7CiAJY2hh ciBpbmNtc2dbQ01TR19TUEFDRShzaXplb2Yoc2N0cF9jbXNnX2RhdGFfdCkpXTsKIApAQCAtMTEz LDE4ICsxMTAsMTggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKlNldHRp bmcgc2VydmVyIHNvY2tldCBub24tYmxvY2tpbmcgKi8KIAlzZmxhZyA9IGZjbnRsKGxzdG5fc2ss IEZfR0VURkwsIDApOwogCWlmIChzZmxhZyA8IDApCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAi ZmNudCBGX0dFVEZMIGZhaWxlZCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImZjbnQg Rl9HRVRGTCBmYWlsZWQgIgogCQkJICJzZmxhZzolZCwgZXJybm86JWQiLCBzZmxhZywgZXJybm8p OwogCiAJZXJyb3IgPSBmY250bChsc3RuX3NrLCBGX1NFVEZMLCBzZmxhZyB8IE9fTk9OQkxPQ0sp OwogCWlmIChlcnJvciA8IDApCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiZmNudCBGX1NFVEZM IGZhaWxlZCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImZjbnQgRl9TRVRGTCBmYWls ZWQgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJLyogVEVT VDE6IGFjY2VwdCBzaG91bGQgcmV0dXJuIEVBR0FJTiBpbnN0ZWFkIGJsb2NraW5nLiAqLwogCWVy cm9yID0gYWNjZXB0KGxzdG5fc2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmc3ZyX2FkZHIsICZsZW4p OwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFQUdBSU4pCi0JCXRzdF9icmttKFRCUk9L LCBOVUxMLCAibm9uLWJsb2NraW5nIGFjY2VwdCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhp dCwgIm5vbi1ibG9ja2luZyBhY2NlcHQgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJv ciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJub24tYmxvY2tpbmcgYWNjZXB0KCkgLSBF QUdBSU4iKTsKQEAgLTEzMywxNyArMTMwLDE3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCiAJLypTZXQgY2xpZW50IHNvY2tldCBhcyBub24tYmxvY2tpbmcgKi8KIAljZmxhZyA9 IGZjbnRsKHNrLCBGX0dFVEZMLCAwKTsKIAlpZiAoY2ZsYWcgPCAwKQotCQl0c3RfYnJrbShUQlJP SywgTlVMTCwgImZjbnQgRl9HRVRGTCBmYWlsZWQgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4 aXQsICJmY250IEZfR0VURkwgZmFpbGVkICIKIAkJCSAiY2ZsYWc6JWQsIGVycm5vOiVkIiwgY2Zs YWcsIGVycm5vKTsKIAogCWVycm9yID0gZmNudGwoc2ssIEZfU0VURkwsIHNmbGFnIHwgT19OT05C TE9DSyk7CiAJaWYgKGVycm9yIDwgMCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJmY250IEZf U0VURkwgZmFpbGVkICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiZmNudCBGX1NFVEZM IGZhaWxlZCAiCiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAll cnJvciA9IGNvbm5lY3Qoc2ssIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKikmY29ubl9hZGRyLCBs ZW4pOwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFSU5QUk9HUkVTUykKLQkJdHN0X2Jy a20oVEJST0ssIE5VTEwsICJub24tYmxvY2tpbmcgY29ubmVjdCAiCisJCXRzdF9icmttKFRCUk9L LCB0c3RfZXhpdCwgIm5vbi1ibG9ja2luZyBjb25uZWN0ICIKIAkJCSAiZXJyb3I6JWQsIGVycm5v OiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAibm9uLWJsb2NraW5nIGNv bm5lY3QoKSAtIEVJTlBST0dSRVNTIik7CkBAIC0xNTEsMTQgKzE0OCwxMiBAQCBpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qIFRFU1QzOiBOb3cgdGhhdCBjb25uZWN0KCkgY2Fs bGVkLCBhY2NlcHQgd2lsbCBzdWNjZWVkICovCiAJYWNwdF9zayA9IGFjY2VwdChsc3RuX3NrLCAo c3RydWN0IHNvY2thZGRyICopJnN2cl9hZGRyLCAmbGVuKTsKIAlpZiAoYWNwdF9zayA8IDApCi0J CXRzdF9icmttKFRCUk9LLCBOVUxMLCAiYWNjZXB0IGFmdGVyIGEgbm9uLWJsb2NraW5nIGNvbm5l Y3QgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJhY2NlcHQgYWZ0ZXIgYSBub24tYmxv Y2tpbmcgY29ubmVjdCAiCiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7 CiAKIAl0c3RfcmVzbShUUEFTUywgImFjY2VwdCgpIGFmdGVyIGEgbm9uLWJsb2NraW5nIGNvbm5l Y3QgLSBTVUNDRVNTIik7CiAKIAltZW1zZXQoJm91dG1lc3NhZ2UsIDAsIHNpemVvZihvdXRtZXNz YWdlKSk7Ci0JYnVmZmVyX3NuZCA9IG1hbGxvYyhSRUFMTFlfQklHKTsKLQogCW91dG1lc3NhZ2Uu bXNnX25hbWUgPSAmc3ZyX2FkZHI7CiAJb3V0bWVzc2FnZS5tc2dfbmFtZWxlbiA9IHNpemVvZihz dnJfYWRkcik7CiAJb3V0bWVzc2FnZS5tc2dfaW92ID0gJm91dF9pb3Y7CkBAIC0xNzUsMTAgKzE3 MCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJc2luZm8gPSAoc3RydWN0 IHNjdHBfc25kcmN2aW5mbyAqKUNNU0dfREFUQShjbXNnKTsKIAltZW1zZXQoc2luZm8sIDB4MDAs IHNpemVvZihzdHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvKSk7CiAKLQlpb3YuaW92X2Jhc2UgPSBidWZm ZXJfc25kOwotCWlvdi5pb3ZfbGVuID0gUkVBTExZX0JJRzsKIAlvdXRtZXNzYWdlLm1zZ19pb3Yt Pmlvdl9iYXNlID0gbWVzc2FnZTsKLQogCW91dG1lc3NhZ2UubXNnX2lvdi0+aW92X2xlbiA9IHN0 cmxlbihtZXNzYWdlKSArIDE7CiAKIAltZW1zZXQoJmlubWVzc2FnZSwgMCwgc2l6ZW9mKGlubWVz c2FnZSkpOwpAQCAtMTk2LDEyICsxODgsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKIAkvKiBURVNUNDogcmVjdm1zZygpIHNob3VsZCByZXR1cm4gRUFHQUlOIGluc3RlYWQg YmxvY2tpbmcgKi8KIAllcnJvciA9IHJlY3Ztc2coc2ssICZpbm1lc3NhZ2UsIE1TR19XQUlUQUxM KTsKIAlpZiAoZXJyb3IgIT0gLTEgfHwgZXJybm8gIT0gRUFHQUlOKQotCQl0c3RfYnJrbShUQlJP SywgTlVMTCwgIm5vbi1ibG9ja2luZyByZWN2bXNnICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9l eGl0LCAibm9uLWJsb2NraW5nIHJlY3Ztc2cgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBl cnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJub24tYmxvY2tpbmcgcmVjdm1zZygp IC0gRUFHQUlOIik7CiAKLQljb3VudCA9IHRlc3Rfc2VuZG1zZyhhY3B0X3NrLCAmb3V0bWVzc2Fn ZSwgZmxhZywgbXNnX2NvdW50KTsKKwl0ZXN0X3NlbmRtc2coYWNwdF9zaywgJm91dG1lc3NhZ2Us IGZsYWcsIG1zZ19jb3VudCk7CiAKIAkvKiBURVNUNTogcmVjdm1zZygpIHNob3VsZCBzdWNjZWVk IG5vdyBhcyBkYXRhIGlzIGF2YWlsYWJsZS4gKi8KIAllcnJvciA9IHRlc3RfcmVjdm1zZyhzaywg JmlubWVzc2FnZSwgZmxhZyk7CkBAIC0yMTIsNSArMjA0LDUgQEAgaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKIAogCWNsb3NlKGxzdG5fc2spOwogCWNsb3NlKGFjcHRfc2spOwotCXRz dF9leGl0KCk7CisJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9z Y3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfcmVjdmZyb20uYyBiL3Rlc3RjYXNlcy9uZXR3b3Jr L3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9yZWN2ZnJvbS5jCmluZGV4IDY1ODY5MmIuLmI3 NTAxNmQgMTAwNjQ0Ci0tLSBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0 XzFfdG9fMV9yZWN2ZnJvbS5jCisrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0 cy90ZXN0XzFfdG9fMV9yZWN2ZnJvbS5jCkBAIC0xLDQgKzEsNCBAQAotLyogU0NUUCBrZXJuZWwg cmVmZXJlbmNlIEltcGxlbWVudGF0aW9uCisvKiBTQ1RQIGtlcm5lbCBJbXBsZW1lbnRhdGlvbgog ICogQ29weXJpZ2h0IChjKSAyMDAzIEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55 LCBMLlAKICAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDQKICAqCkBAIC0xMiwxMyArMTIs MTMgQEAKICAqIFRFU1Q2OiBSZWFkaW5nIHRoZSBwZW5kaW5nIG1lc3NhZ2Ugb24gc29ja2V0IHRo YXQgcmVjZWl2ZWQgU0hVVERPV04KICAqIFRFU1Q3OiBObyBtb3JlIG1lc3NhZ2UgYW5kIGFzc29j aWF0aW9uIGlzIHNodXRkb3duCiAgKgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0 aW9uIGlzIGZyZWUgc29mdHdhcmU7CisgKiBUaGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBmcmVl IHNvZnR3YXJlOwogICogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YKICAqIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKICAqIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAq IFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0CisgKiBUaGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0CiAgKiB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKICAqICAgICAgICAgICAgICAgICAqKioq KioqKioqKioqKioqKioqKioqKioKICAqIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KQEAgLTYyLDcgKzYyLDcgQEAgaW50IFRT VF9DTlQgPSAwOwogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewotCWludCBy ZXQsIG1zZ19jb3VudDsKKwlpbnQgbXNnX2NvdW50OwogCXNvY2tsZW5fdCBsZW47CiAJaW50IHNr LCBwZl9jbGFzcywgbHN0bl9zaywgYWNwdF9zaywgZmxhZzsKIAljaGFyICptZXNzYWdlID0gImhl bGxvLCB3b3JsZCFcbiI7CkBAIC0xMTUsNyArMTE1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAljb3VudCA9IHJlY3Zmcm9tKC0xLCBtZXNzYWdlX3JjdiwgbXNnX2NvdW50 LCBmbGFnLAogCQkJIChzdHJ1Y3Qgc29ja2FkZHIgKikmc3ZyX2FkZHIsICZsZW4pOwogCWlmIChj b3VudCAhPSAtMSB8fCBlcnJubyAhPSBFQkFERikKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJy ZWN2ZnJvbSB3aXRoIGEgYmFkIHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwg InJlY3Zmcm9tIHdpdGggYSBiYWQgc29ja2V0ICIKIAkJCSAiZGVzY3JpcHRvciBjb3VudDolZCwg ZXJybm86JWQiLCBjb3VudCwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJyZWN2ZnJvbSgp IHdpdGggYSBiYWQgc29ja2V0IGRlc2NyaXB0b3IgLSBFQkFERiIpOwpAQCAtMTI0LDcgKzEyNCw3 IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJY291bnQgPSByZWN2ZnJvbSgw LCBtZXNzYWdlX3JjdiwgbXNnX2NvdW50LCBmbGFnLAogCQkJIChzdHJ1Y3Qgc29ja2FkZHIgKikm c3ZyX2FkZHIsICZsZW4pOwogCWlmIChjb3VudCAhPSAtMSB8fCBlcnJubyAhPSBFTk9UU09DSykK LQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJyZWN2ZnJvbSB3aXRoIGludmFsaWQgc29ja2V0ICIK KwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAicmVjdmZyb20gd2l0aCBpbnZhbGlkIHNvY2tl dCAiCiAJCQkgImNvdW50OiVkLCBlcnJubzolZCIsIGNvdW50LCBlcnJubyk7CiAKIAl0c3RfcmVz bShUUEFTUywgInJlY3Zmcm9tKCkgd2l0aCBpbnZhbGlkIHNvY2tldCAtIEVOT1RTT0NLIik7CkBA IC0xMzMsNyArMTMzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAljb3Vu dCA9IHJlY3Zmcm9tKGFjcHRfc2ssIChjaGFyICopLTEsIG1zZ19jb3VudCwgZmxhZywKIAkJCSAo c3RydWN0IHNvY2thZGRyICopJnN2cl9hZGRyLCAmbGVuKTsKIAlpZiAoY291bnQgIT0gLTEgfHwg ZXJybm8gIT0gRUZBVUxUKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInJlY3Zmcm9tIHdpdGgg aW52YWxpZCBtZXNzYWdlICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAicmVjdmZyb20g d2l0aCBpbnZhbGlkIG1lc3NhZ2UgIgogCQkJICJwb2ludGVyIGNvdW50OiVkLCBlcnJubzolZCIs IGNvdW50LCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgInJlY3Zmcm9tKCkgd2l0aCBpbnZh bGlkIG1lc3NhZ2UgcHRyIC0gRUZBVUxUIik7CkBAIC0xNDIsMjAgKzE0MiwyMCBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWNvdW50ID0gcmVjdmZyb20obHN0bl9zaywgbWVz c2FnZV9yY3YsIG1zZ19jb3VudCwgZmxhZywKIAkJCSAoc3RydWN0IHNvY2thZGRyICopJnN2cl9h ZGRyLCAmbGVuKTsKIAlpZiAoY291bnQgIT0gLTEgfHwgZXJybm8gIT0gRU5PVENPTk4pCi0JCXRz dF9icmttKFRCUk9LLCBOVUxMLCAicmVjdmZyb20gb24gbGlzdGVuaW5nIHNvY2tldCAiCisJCXRz dF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInJlY3Zmcm9tIG9uIGxpc3RlbmluZyBzb2NrZXQgIgog CQkJICJjb3VudDolZCwgZXJybm86JWQiLCBjb3VudCwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBB U1MsICJyZWN2ZnJvbSgpIG9uIGxpc3RlbmluZyBzb2NrZXQgLSBFTk9UQ09OTiIpOwogCiAJY291 bnQgPSB0ZXN0X3NlbmQoYWNwdF9zaywgbWVzc2FnZSwgbXNnX2NvdW50LCBmbGFnKTsKIAotCXJl dCA9IHRlc3Rfc2h1dGRvd24oc2ssIFNIVVRfV1IpOworCXRlc3Rfc2h1dGRvd24oc2ssIFNIVVRf V1IpOwogCiAJLypyZWN2ZnJvbSAoKSBURVNUNTpyZWFkaW5nIG9uIGEgc29ja2V0IHRoYXQgcmVj ZWl2ZWQgU0hVVERPV04gKi8KIAljb3VudCA9IHJlY3Zmcm9tKGFjcHRfc2ssIG1lc3NhZ2VfcmN2 LCBtc2dfY291bnQsIGZsYWcsCiAJCQkgKHN0cnVjdCBzb2NrYWRkciAqKSZzdnJfYWRkciwgJmxl bik7CiAJaWYgKGNvdW50IDwgMCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJyZWN2ZnJvbSBv biBhIHNvY2tldCB0aGF0IGhhcyAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInJlY3Zm cm9tIG9uIGEgc29ja2V0IHRoYXQgaGFzICIKIAkJCSAicmVjZWl2ZWQgc2h1dGRvd24gY291bnQ6 JWQsIGVycm5vOiVkIiwgY291bnQsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAicmVjdmZy b20oKSBvbiBhIHNvY2tldCB0aGF0IGhhcyByZWNlaXZlZCBzaHV0ZG93biAtICIKQEAgLTE2Niw3 ICsxNjYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWNvdW50ID0gcmVj dmZyb20oc2ssIG1lc3NhZ2VfcmN2LCBtc2dfY291bnQsIGZsYWcsCiAJCQkgKHN0cnVjdCBzb2Nr YWRkciAqKSZzdnJfYWRkciwgJmxlbik7CiAJaWYgKGNvdW50IDwgMCkKLQkJdHN0X2Jya20oVEJS T0ssIE5VTEwsICJyZWN2ZnJvbSBvbiBhIHNvY2tldCB3aXRoIHBlbmRpbmcgIgorCQl0c3RfYnJr bShUQlJPSywgdHN0X2V4aXQsICJyZWN2ZnJvbSBvbiBhIHNvY2tldCB3aXRoIHBlbmRpbmcgIgog CQkJICJtZXNzYWdlIHRoYXQgaGFzIHNlbnQgc2h1dGRvd24gY291bnQ6JWQsIGVycm5vOiVkIiwK IAkJCSBjb3VudCwgZXJybm8pOwogCkBAIC0xNzgsNyArMTc4LDcgQEAgaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAljb3VudCA9IHJlY3Zmcm9tKHNrLCBtZXNzYWdlX3JjdiwgbXNn X2NvdW50LCBmbGFnLAogCQkJIChzdHJ1Y3Qgc29ja2FkZHIgKikmc3ZyX2FkZHIsICZsZW4pOwog CWlmIChjb3VudCAhPSAtMSB8fCBlcnJubyAhPSBFTk9UQ09OTikKLQkJdHN0X2Jya20oVEJST0ss IE5VTEwsICJyZWN2ZnJvbSBvbiBhIHNvY2tldCB3aXRoIG5vICIKKwkJdHN0X2Jya20oVEJST0ss IHRzdF9leGl0LCAicmVjdmZyb20gb24gYSBzb2NrZXQgd2l0aCBubyAiCiAJCQkgInBlbmRpbmcg bWVzc2FnZXMgYW5kIGhhcyBzZW50IHNodXRkb3duIGNvdW50OiVkLCAiCiAJCQkgImVycm5vOiVk IiwgY291bnQsIGVycm5vKTsKIApAQCAtMTg4LDYgKzE4OCw2IEBAIGludCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCiAJY2xvc2Uoc2spOwogCWNsb3NlKGxzdG5fc2spOwogCWNsb3NlKGFj cHRfc2spOwotCXRzdF9leGl0KCk7CisJcmV0dXJuIDA7CiAKIH0KZGlmZiAtLWdpdCBhL3Rlc3Rj YXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9yZWN2bXNnLmMgYi90ZXN0 Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfcmVjdm1zZy5jCmluZGV4 IGE0MGIxNmQuLjNlMDI2NzggMTAwNjQ0Ci0tLSBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVu Y190ZXN0cy90ZXN0XzFfdG9fMV9yZWN2bXNnLmMKKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0 cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX3JlY3Ztc2cuYwpAQCAtMSw0ICsxLDQgQEAKLS8qIFND VFAga2VybmVsIHJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvbgorLyogU0NUUCBrZXJuZWwgSW1wbGVt ZW50YXRpb24KICAqIENvcHlyaWdodCAoYykgMjAwMyBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1l bnQgQ29tcGFueSwgTC5QCiAgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDA0CiAgKgpAQCAt MTMsMTMgKzEzLDEzIEBACiAgKiBURVNUNzogUmVhZGluZyB0aGUgcGVuZGluZyBtZXNzYWdlIHNv Y2tldCB0aGF0IHJlY2VpdmVkIFNIVVRET1dOCiAgKiBURVNUODogTm8gbW9yZSBtZXNzYWdlIGFu ZCBhc3NvY2lhdGlvbiBpcyBzaHV0ZG93bgogICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBs ZW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOworICogVGhlIFNDVFAgaW1wbGVtZW50YXRpb24g aXMgZnJlZSBzb2Z0d2FyZTsKICAqIHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mCiAgKiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCiAgKiBhbnkgbGF0ZXIgdmVyc2lvbi4K ICAqCi0gKiBUaGUgU0NUUCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdAorICogVGhlIFNDVFAgaW1wbGVtZW50YXRpb24gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdAogICogd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkCiAgKiAgICAgICAgICAgICAg ICAgKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCkBAIC02NCw3ICs2NCw2IEBA IGludCBUU1RfQ05UID0gMDsKIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiB7CiAJ c29ja2xlbl90IGxlbjsKLQlpbnQgcmV0OwogCWludCBzaywgcGZfY2xhc3MsIGxzdG5fc2ssIGFj cHRfc2s7CiAJaW50IGZsYWcgPSAwOwogCXN0cnVjdCBtc2doZHIgaW5tZXNzYWdlOwpAQCAtMTIy LDcgKzEyMSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLypyZWN2bXNn ICgpIFRFU1QxOiBCYWQgc29ja2V0IGRlc2NyaXB0b3IsIEVCQURGIEV4cGVjdGVkIGVycm9yICov CiAJY291bnQgPSByZWN2bXNnKC0xLCAmaW5tZXNzYWdlLCBmbGFnKTsKIAlpZiAoY291bnQgIT0g LTEgfHwgZXJybm8gIT0gRUJBREYpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAicmVjdm1zZyB3 aXRoIGEgYmFkIHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInJlY3Ztc2cg d2l0aCBhIGJhZCBzb2NrZXQgIgogCQkJICJkZXNjcmlwdG9yIGNvdW50OiVkLCBlcnJubzolZCIs IGNvdW50LCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgInJlY3Ztc2coKSB3aXRoIGEgYmFk IHNvY2tldCBkZXNjcmlwdG9yIC0gRUJBREYiKTsKQEAgLTEzMCw3ICsxMjksNyBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qcmVjdm1zZyAoKSBURVNUMjogSW52YWxpZCBz b2NrZXQgLCBFTk9UU09DSyBFeHBlY3RlZCBlcnJvciAqLwogCWNvdW50ID0gcmVjdm1zZygwLCAm aW5tZXNzYWdlLCBmbGFnKTsKIAlpZiAoY291bnQgIT0gLTEgfHwgZXJybm8gIT0gRU5PVFNPQ0sp Ci0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAicmVjdm1zZyB3aXRoIGludmFsaWQgc29ja2V0ICIK KwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAicmVjdm1zZyB3aXRoIGludmFsaWQgc29ja2V0 ICIKIAkJCSAiY291bnQ6JWQsIGVycm5vOiVkIiwgY291bnQsIGVycm5vKTsKIAogCXRzdF9yZXNt KFRQQVNTLCAicmVjdm1zZygpIHdpdGggaW52YWxpZCBzb2NrZXQgLSBFTk9UU09DSyIpOwpAQCAt MTM5LDcgKzEzOCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJaW5tZXNz YWdlLm1zZ19pb3YgPSAoc3RydWN0IGlvdmVjICopLTE7CiAJY291bnQgPSByZWN2bXNnKGFjcHRf c2ssICZpbm1lc3NhZ2UsIGZsYWcpOwogCWlmIChjb3VudCAhPSAtMSB8fCBlcnJubyAhPSBFRkFV TFQpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAicmVjdm1zZyB3aXRoIGludmFsaWQgaW92ZWMg IgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJyZWN2bXNnIHdpdGggaW52YWxpZCBpb3Zl YyAiCiAJCQkgInBvaW50ZXIgY291bnQ6JWQsIGVycm5vOiVkIiwgY291bnQsIGVycm5vKTsKIAog CXRzdF9yZXNtKFRQQVNTLCAicmVjdm1zZygpIHdpdGggaW52YWxpZCBpb3ZlYyBwdHIgLSBFRkFV TFQiKTsKQEAgLTE0OSw3ICsxNDgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQogCS8qcmVjdm1zZyAoKSBURVNUNDogSW52YWxpZCBtc2doZHIgcG9pbnRlciBFRkFVTFQsIEV4 cGVjdGVkIGVycm9yICovCiAJY291bnQgPSByZWN2bXNnKGFjcHRfc2ssIChzdHJ1Y3QgbXNnaGRy ICopLTEsIGZsYWcpOwogCWlmIChjb3VudCAhPSAtMSB8fCBlcnJubyAhPSBFRkFVTFQpCi0JCXRz dF9icmttKFRCUk9LLCBOVUxMLCAicmVjdm1zZyB3aXRoIGludmFsaWQgbXNnaGRyICIKKwkJdHN0 X2Jya20oVEJST0ssIHRzdF9leGl0LCAicmVjdm1zZyB3aXRoIGludmFsaWQgbXNnaGRyICIKIAkJ CSAicG9pbnRlciBjb3VudDolZCwgZXJybm86JWQiLCBjb3VudCwgZXJybm8pOwogCiAJdHN0X3Jl c20oVFBBU1MsICJyZWN2bXNnKCkgd2l0aCBpbnZhbGlkIG1zZ2hkciBwdHIgLSBFRkFVTFQiKTsK QEAgLTE1NywyMCArMTU2LDIwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ LypyZWN2bXNnICgpIFRFU1Q1OnJlY3Ztc2cgb24gbGlzdGVuaW5nIHNvY2tldCxFTk9UQ09OTiBF eHBlY3RlZCBlcnJvciAqLwogCWNvdW50ID0gcmVjdm1zZyhsc3RuX3NrLCAmaW5tZXNzYWdlLCBm bGFnKTsKIAlpZiAoY291bnQgIT0gLTEgfHwgZXJybm8gIT0gRU5PVENPTk4pCi0JCXRzdF9icmtt KFRCUk9LLCBOVUxMLCAicmVjdm1zZyBvbiBsaXN0ZW5pbmcgc29ja2V0ICIKKwkJdHN0X2Jya20o VEJST0ssIHRzdF9leGl0LCAicmVjdm1zZyBvbiBsaXN0ZW5pbmcgc29ja2V0ICIKIAkJCSAiY291 bnQ6JWQsIGVycm5vOiVkIiwgY291bnQsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAicmVj dm1zZygpIG9uIGxpc3RlbmluZyBzb2NrZXQgLSBFTk9UQ09OTiIpOwogCiAJY291bnQgPSB0ZXN0 X3NlbmQoYWNwdF9zaywgbWVzc2FnZTEsIHN0cmxlbihtZXNzYWdlKSwgMCk7CiAKLQlyZXQgPSB0 ZXN0X3NodXRkb3duKHNrLCBTSFVUX1dSKTsKKwl0ZXN0X3NodXRkb3duKHNrLCBTSFVUX1dSKTsK IAogCWZsYWcgPSBNU0dfTk9TSUdOQUw7CiAJLypyZWN2bXNnICgpIFRFU1Q2OnJlYWRpbmcgb24g YSBzb2NrZXQgdGhhdCByZWNlaXZlZCBTSFVURE9XTiAqLwogCWNvdW50ID0gcmVjdm1zZyhhY3B0 X3NrLCAmaW5tZXNzYWdlLCBmbGFnKTsKIAlpZiAoY291bnQgPCAwKQotCQl0c3RfYnJrbShUQlJP SywgTlVMTCwgInJlY3Ztc2cgb24gYSBzb2NrZXQgdGhhdCBoYXMgIgorCQl0c3RfYnJrbShUQlJP SywgdHN0X2V4aXQsICJyZWN2bXNnIG9uIGEgc29ja2V0IHRoYXQgaGFzICIKIAkJCSAicmVjZWl2 ZWQgc2h1dGRvd24gY291bnQ6JWQsIGVycm5vOiVkIiwgY291bnQsIGVycm5vKTsKIAogCXRzdF9y ZXNtKFRQQVNTLCAicmVjdm1zZygpIG9uIGEgc29ja2V0IHRoYXQgaGFzIHJlY2VpdmVkIHNodXRk b3duIC0gIgpAQCAtMTgwLDcgKzE3OSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJICAgU0hVVERPV04gKi8KIAljb3VudCA9IHJlY3Ztc2coc2ssICZpbm1lc3NhZ2UsIGZs YWcpOwogCWlmIChjb3VudCA8IDApCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAicmVjdm1zZyBv biBhIHNvY2tldCB3aXRoIHBlbmRpbmcgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJy ZWN2bXNnIG9uIGEgc29ja2V0IHdpdGggcGVuZGluZyAiCiAJCQkgIm1lc3NhZ2UgdGhhdCBoYXMg c2VudCBzaHV0ZG93biBjb3VudDolZCwgZXJybm86JWQiLAogCQkJIGNvdW50LCBlcnJubyk7CiAK QEAgLTE5MSw3ICsxOTAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCSAg IEVOT1RDT05OIEV4cGVjdGVkIGVycm9yICovCiAJY291bnQgPSByZWN2bXNnKHNrLCAmaW5tZXNz YWdlLCBmbGFnKTsKIAlpZiAoY291bnQgIT0gLTEgfHwgZXJybm8gIT0gRU5PVENPTk4pCi0JCXRz dF9icmttKFRCUk9LLCBOVUxMLCAicmVjdm1zZyBvbiBhIHNvY2tldCB3aXRoIG5vICIKKwkJdHN0 X2Jya20oVEJST0ssIHRzdF9leGl0LCAicmVjdm1zZyBvbiBhIHNvY2tldCB3aXRoIG5vICIKIAkJ CSAicGVuZGluZyBtZXNzYWdlcyBhbmQgaGFzIHNlbnQgc2h1dGRvd24gY291bnQ6JWQsICIKIAkJ CSAiZXJybm86JWQiLCBjb3VudCwgZXJybm8pOwogCkBAIC0yMDEsNSArMjAwLDUgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAljbG9zZShzayk7CiAJY2xvc2UobHN0bl9zayk7 CiAJY2xvc2UoYWNwdF9zayk7Ci0JdHN0X2V4aXQoKTsKKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdp dCBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9ydG9pbmZv LmMgYi90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfcnRvaW5m by5jCmluZGV4IGMzMWJkZDkuLjg1MjkzZTggMTAwNjQ0Ci0tLSBhL3Rlc3RjYXNlcy9uZXR3b3Jr L3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9ydG9pbmZvLmMKKysrIGIvdGVzdGNhc2VzL25l dHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX3J0b2luZm8uYwpAQCAtMSw0ICsxLDQg QEAKLS8qIFNDVFAga2VybmVsIHJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvbgorLyogU0NUUCBrZXJu ZWwgSW1wbGVtZW50YXRpb24KICAqIENvcHlyaWdodCAoYykgMjAwMyBIZXdsZXR0LVBhY2thcmQg RGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QCiAgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDA0 CiAgKgpAQCAtOSwxMyArOSwxMyBAQAogICogdGhlIHZhbHVlIHVzaW5nIHNldHNvY2tvcHQoKSBh bmQgZ2V0cyB0aGUgc2V0IHZhbHVlIHVzaW5nIGdldHNvY2tvcHQoKS4KICAqIEEgY29tcGFyaXNv biBiZXR3ZWVuIHNldCB2YWx1ZXMgYW5kIGdldCB2YWx1ZXMgYXJlIHBlcmZvcm1lZC4KICAqCi0g KiBUaGUgU0NUUCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsKKyAq IFRoZSBTQ1RQIGltcGxlbWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7CiAgKiB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZgogICogdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICogdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9u KQogICogYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxl bWVudGF0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKKyAqIFRoZSBTQ1RQ IGltcGxlbWVudGF0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKICAqIHdp bGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZAogICogICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKgogICog d2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLgpAQCAtNzIsNyArNzIsNyBAQCBpbnQgbWFpbih2b2lkKQogCS8qVEVTVDEgR2V0dGlu ZyB0aGUgZGVmYXVsdCB2YWx1ZXMgdXNpbmcgZ2V0c29ja29wdCgpICovCiAJcmV0ID0gZ2V0c29j a29wdChzZCwgSVBQUk9UT19TQ1RQLCBTQ1RQX1JUT0lORk8sICZncnRvaW5mbywgJmxlbik7CiAJ aWYgKHJldCA8IDApCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiZ2V0c29ja29wdCBTQ1RQX1JU T0lORk8gIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJnZXRzb2Nrb3B0IFNDVFBfUlRP SU5GTyAiCiAJCQkgInJldDolZCwgZXJybm86JWQiLCByZXQsIGVycm5vKTsKIAogCXRzdF9yZXNt KFRQQVNTLCAiZ2V0c29ja29wdCgpIFNDVFBfUlRPSU5GTyAtIFNVQ0NFU1MiKTsKQEAgLTg2LDcg Kzg2LDcgQEAgaW50IG1haW4odm9pZCkKIAlyZXQgPSBzZXRzb2Nrb3B0KHNkLCBJUFBST1RPX1ND VFAsIFNDVFBfUlRPSU5GTywgJnNydG9pbmZvLAogCQkJIHNpemVvZihzdHJ1Y3Qgc2N0cF9ydG9p bmZvKSk7CiAJaWYgKHJldCA8IDApCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2V0c29ja29w dCBTQ1RQX1JUT0lORk8gIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzZXRzb2Nrb3B0 IFNDVFBfUlRPSU5GTyAiCiAJCQkgInJldDolZCwgZXJybm86JWQiLCByZXQsIGVycm5vKTsKIAog CXRzdF9yZXNtKFRQQVNTLCAic2V0c29ja29wdCgpIFNDVFBfUlRPSU5GTyAtIFNVQ0NFU1MiKTsK QEAgLTk0LDE0ICs5NCwxNCBAQCBpbnQgbWFpbih2b2lkKQogCS8qR2V0dGluZyB0aGUgdmFsdWVz IHdoaWNoIGFyZSBzZXQgdXNpbmcgc2V0c29ja29wdCgpICovCiAJcmV0ID0gZ2V0c29ja29wdChz ZCwgSVBQUk9UT19TQ1RQLCBTQ1RQX1JUT0lORk8sICZncnRvaW5mbywgJmxlbik7CiAJaWYgKHJl dCA8IDApCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiZ2V0c29ja29wdCBTQ1RQX1JUT0lORk8g IgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJnZXRzb2Nrb3B0IFNDVFBfUlRPSU5GTyAi CiAJCQkgInJldDolZCwgZXJybm86JWQiLCByZXQsIGVycm5vKTsKIAogCS8qIFRFU1QzIENvbXBh cmUgdGhlIGdldCB2YWx1ZXMgd2l0aCB0aGUgc2V0IHZhbHVlcy4gKi8KIAlpZiAoc3J0b2luZm8u c3J0b19pbml0aWFsICE9IGdydG9pbmZvLnNydG9faW5pdGlhbCAmJgogCSAgICBzcnRvaW5mby5z cnRvX21heCAhPSBncnRvaW5mby5zcnRvX21heCAmJgogCSAgICBzcnRvaW5mby5zcnRvX21pbiAh PSBncnRvaW5mby5zcnRvX21pbikKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJzZXRzb2Nrb3B0 L2dldHNvY2tvcHQgU0NUUF9SVE9JTkZPICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAi c2V0c29ja29wdC9nZXRzb2Nrb3B0IFNDVFBfUlRPSU5GTyAiCiAJCQkgImNvbXBhcmUgZmFpbGVk Iik7CiAKIAl0c3RfcmVzbShUUEFTUywgInNldHNvY2tvcHQoKS9nZXRzb2Nrb3B0IFNDVFBfUlRP SU5GTyBjb21wYXJlIC0gIgpAQCAtMTA5LDUgKzEwOSw1IEBAIGludCBtYWluKHZvaWQpCiAKIAlj bG9zZShzZCk7CiAKLQl0c3RfZXhpdCgpOworCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvdGVz dGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX3NlbmQuYyBiL3Rlc3Rj YXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9zZW5kLmMKaW5kZXggYThk YzhmNS4uNWI0N2U3NCAxMDA2NDQKLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rl c3RzL3Rlc3RfMV90b18xX3NlbmQuYworKysgYi90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNf dGVzdHMvdGVzdF8xX3RvXzFfc2VuZC5jCkBAIC0xLDQgKzEsNCBAQAotLyogU0NUUCBrZXJuZWwg cmVmZXJlbmNlIEltcGxlbWVudGF0aW9uCisvKiBTQ1RQIGtlcm5lbCBJbXBsZW1lbnRhdGlvbgog ICogQ29weXJpZ2h0IChjKSAyMDAzIEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55 LCBMLlAKICAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDQKICAqCkBAIC0xMywxMyArMTMs MTMgQEAKICAqIFRFU1Q3OiBzZW5kIGZyb20gc2VydmVyIHRvIGNsaWVudAogICogVEVTVDg6IHNl bmRpbmcgcGFydGlhbCBkYXRhIGZyb20gYSBidWZmZXIKICAqCi0gKiBUaGUgU0NUUCByZWZlcmVu Y2UgaW1wbGVtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsKKyAqIFRoZSBTQ1RQIGltcGxlbWVu dGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7CiAgKiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZgogICogdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQogICogYW55IGxhdGVyIHZl cnNpb24uCiAgKgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKKyAqIFRoZSBTQ1RQIGltcGxlbWVudGF0aW9uIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKICAqIHdpbGwgYmUgdXNlZnVsLCBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAogICogICAgICAg ICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKgogICogd2FycmFudHkgb2YgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgpAQCAtMTExLDcg KzExMSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLypzZW5kICgpIFRF U1QxOiBCYWQgc29ja2V0IGRlc2NyaXB0b3IsIEVCQURGIEV4cGVjdGVkIGVycm9yICovCiAJY291 bnQgPSBzZW5kKC0xLCBtZXNzYWdlLCBsZW5fc25kLCBmbGFnKTsKIAlpZiAoY291bnQgIT0gLTEg fHwgZXJybm8gIT0gRUJBREYpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2VuZCB3aXRoIGEg YmFkIHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNlbmQgd2l0aCBhIGJh ZCBzb2NrZXQgIgogCQkJICJkZXNjcmlwdG9yIGNvdW50OiVkLCBlcnJubzolZCIsIGNvdW50LCBl cnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNlbmQoKSB3aXRoIGEgYmFkIHNvY2tldCBkZXNj cmlwdG9yIC0gRUJBREYiKTsKQEAgLTExOSw3ICsxMTksNyBAQCBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCS8qc2VuZCAoKSBURVNUMjogSW52YWxpZCBzb2NrZXQsIEVOT1RTT0NL IEV4cGVjdGVkIGVycm9yICovCiAJY291bnQgPSBzZW5kKDAsIG1lc3NhZ2UsIGxlbl9zbmQsIGZs YWcpOwogCWlmIChjb3VudCAhPSAtMSB8fCBlcnJubyAhPSBFTk9UU09DSykKLQkJdHN0X2Jya20o VEJST0ssIE5VTEwsICJzZW5kIHdpdGggaW52YWxpZCBzb2NrZXQgIgorCQl0c3RfYnJrbShUQlJP SywgdHN0X2V4aXQsICJzZW5kIHdpdGggaW52YWxpZCBzb2NrZXQgIgogCQkJICJjb3VudDolZCwg ZXJybm86JWQiLCBjb3VudCwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJzZW5kKCkgd2l0 aCBpbnZhbGlkIHNvY2tldCAtIEVOT1RTT0NLIik7CkBAIC0xMjcsNyArMTI3LDcgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKnNlbmQgKCkgVEVTVDM6IHNlbmQgb24gbGlz dGVuaW5nIHNvY2tldCwgRVBJUEUgRXhwZWN0ZWQgZXJyb3IgKi8KIAljb3VudCA9IHNlbmQobHN0 bl9zaywgbWVzc2FnZSwgbGVuX3NuZCwgZmxhZyk7CiAJaWYgKGNvdW50ICE9IC0xIHx8IGVycm5v ICE9IEVQSVBFKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNlbmQgb24gYSBsaXN0ZW5pbmcg c29ja2V0ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2VuZCBvbiBhIGxpc3Rlbmlu ZyBzb2NrZXQgIgogCQkJICJjb3VudDolZCwgZXJybm86JWQiLCBjb3VudCwgZXJybm8pOwogCiAJ dHN0X3Jlc20oVFBBU1MsICJzZW5kKCkgb24gYSBsaXN0ZW5pbmcgc29ja2V0IC0gRVBJUEUiKTsK QEAgLTEzNiw3ICsxMzYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8q IEZJWE1FIHRoaXMgdGVzdCBzaG91bGQgcGFzcy4gRG9uJ3QgY2F0Y2ggd2h5Li4uICAqLwogCWNv dW50ID0gc2VuZChzaywgKGNoYXIgKikweDEsIGxlbl9zbmQsIGZsYWcpOwogCWlmIChjb3VudCAh PSAtMSB8fCBlcnJubyAhPSBFRkFVTFQpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2VuZCB3 aXRoIGludmFsaWQgbWVzc2FnZSAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNlbmQg d2l0aCBpbnZhbGlkIG1lc3NhZ2UgIgogCQkJICJwb2ludGVyIGNvdW50OiVkLCBlcnJubzolZCIs IGNvdW50LCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNlbmQoKSB3aXRoIGludmFsaWQg bWVzc2FnZSBwdHIgLSBFRkFVTFQiKTsKQEAgLTE1MywxMSArMTUzLDEyIEBAIGludCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAJLypzZW5kICgpIFRFU1Q1OiBzZW5kIG9uIGNsb3NlZCBh c3NvY2lhdGlvbiwgRVBJUEUgRXhwZWN0ZWQgZXJyb3IgKi8KIAljb3VudCA9IHNlbmQoYWNwdDFf c2ssIG1lc3NhZ2UsIGxlbl9zbmQsIGZsYWcpOwogCWlmIChjb3VudCAhPSAtMSB8fCBlcnJubyAh PSBFUElQRSkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJzZW5kIG9uIGEgY2xvc2VkIGFzc29j aWF0aW9uICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2VuZCBvbiBhIGNsb3NlZCBh c3NvY2lhdGlvbiAiCiAJCQkgImNvdW50OiVkLCBlcnJubzolZCIsIGNvdW50LCBlcnJubyk7CiAK IAl0c3RfcmVzbShUUEFTUywgInNlbmQoKSBvbiBhIGNsb3NlZCBhc3NvY2lhdGlvbiAtIEVQSVBF Iik7CiAKKwljbG9zZShhY3B0MV9zayk7CiAJY2xvc2Uoc2spOwogCWNsb3NlKGxzdG5fc2spOwog CWNsb3NlKGFjcHRfc2spOwpAQCAtMTg5LDcgKzE5MCw3IEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJLypzZW5kKCkgVEVTVDY6IFNlbmRpbmcgZGF0YSBmcm9tIGNsaWVudCBz b2NrZXQgdG8gc2VydmVyIHNvY2tldCAqLwogCWNvdW50ID0gc2VuZChzaywgbWVzc2FnZSwgbXNn X2NvdW50LCBmbGFnKTsKIAlpZiAoY291bnQgIT0gbXNnX2NvdW50KQotCQl0c3RfYnJrbShUQlJP SywgTlVMTCwgInNlbmQgZnJvbSBjbGllbnQgdG8gc2VydmVyICIKKwkJdHN0X2Jya20oVEJST0ss IHRzdF9leGl0LCAic2VuZCBmcm9tIGNsaWVudCB0byBzZXJ2ZXIgIgogCQkJICJjb3VudDolZCwg ZXJybm86JWQiLCBjb3VudCwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJzZW5kKCkgZnJv bSBjbGllbnQgdG8gc2VydmVyIC0gU1VDQ0VTUyIpOwpAQCAtMjAxLDcgKzIwMiw3IEBAIGludCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLypzZW5kKCkgVEVTVDc6IFNlbmRpbmcgZGF0 YSBmcm9tIGFjY2VwdCBzb2NrZXQgdG8gY2xpZW50IHNvY2tldCAqLwogCWNvdW50ID0gc2VuZChh Y3B0X3NrLCBtZXNzYWdlLCBtc2dfY291bnQsIGZsYWcpOwogCWlmIChjb3VudCAhPSBtc2dfY291 bnQpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2VuZCBmcm9tIGFjY2VwdCBzb2NrZXQgdG8g Y2xpZW50ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2VuZCBmcm9tIGFjY2VwdCBz b2NrZXQgdG8gY2xpZW50ICIKIAkJCSAiY291bnQ6JWQsIGVycm5vOiVkIiwgY291bnQsIGVycm5v KTsKIAogCXRzdF9yZXNtKFRQQVNTLCAic2VuZCgpIGZyb20gYWNjZXB0IHNvY2tldCB0byBjbGll bnQgLSBTVUNDRVNTIik7CkBAIC0yMjQsNSArMjI1LDUgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAljbG9zZShsc3RuX3NrKTsKIAljbG9zZShhY3B0X3NrKTsKIAotCXRzdF9l eGl0KCk7CisJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9zY3Rw L2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfc2VuZG1zZy5jIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0 cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX3NlbmRtc2cuYwppbmRleCBkZmZkZGU1Li40MDUzY2Nh IDEwMDY0NAotLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3Rv XzFfc2VuZG1zZy5jCisrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0 XzFfdG9fMV9zZW5kbXNnLmMKQEAgLTEsNCArMSw0IEBACi0vKiBTQ1RQIGtlcm5lbCByZWZlcmVu Y2UgSW1wbGVtZW50YXRpb24KKy8qIFNDVFAga2VybmVsIEltcGxlbWVudGF0aW9uCiAgKiBDb3B5 cmlnaHQgKGMpIDIwMDMgSGV3bGV0dC1QYWNrYXJkIERldmVsb3BtZW50IENvbXBhbnksIEwuUAog ICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwNAogICoKQEAgLTIwLDEzICsyMCwxMyBAQAog ICogVEVTVDEzOiBTZW5kaW5nIGRhdGEgZnJvbSB1bmNvbm5lY3RlZCBjbGllbnQgdG8gc2VydmVy CiAgKiBURVNUMTQ6IFNlbmRpbmcgYSBtZXNzYWdlIG9uIFNIVVRfUkQgc29ja2V0CiAgKgotICog VGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7CisgKiBU aGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOwogICogeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YKICAqIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAqIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikK ICAqIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBsZW1l bnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0CisgKiBUaGUgU0NUUCBp bXBsZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0CiAgKiB3aWxs IGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQKICAqICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioKICAqIHdh cnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4KQEAgLTc1LDE1ICs3NSwxMiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQogCWludCBzaywgc2sxLCBwZl9jbGFzcywgbHN0bl9zaywgYWNwdF9zaywgYWNwdDFfc2ssIGZs YWc7CiAJc3RydWN0IG1zZ2hkciBvdXRtZXNzYWdlOwogCWNoYXIgKm1lc3NhZ2UgPSAiaGVsbG8s IHdvcmxkIVxuIjsKLQlzdHJ1Y3QgaW92ZWMgaW92OwogCXN0cnVjdCBzY3RwX3NuZHJjdmluZm8g KnNpbmZvOwogCWludCBjb3VudDsKIAljaGFyIG91dGNtc2dbQ01TR19TUEFDRShzaXplb2Yoc3Ry dWN0IHNjdHBfc25kcmN2aW5mbykpXTsKIAlzdHJ1Y3QgY21zZ2hkciAqY21zZzsKIAlzdHJ1Y3Qg aW92ZWMgb3V0X2lvdjsKLQljaGFyICpidWZmZXI7CiAJc3RydWN0IG1zZ2hkciBpbm1lc3NhZ2U7 Ci0JY2hhciAqYnVmZmVyX3NuZDsKIAljaGFyICpidWZmZXJfcmN2OwogCXN0cnVjdCBzb2NrYWRk cl9pbiBjb25uX2FkZHIsIGxzdG5fYWRkciwgc3ZyX2FkZHI7CiAJc3RydWN0IGlvdmVjIGlvdl9y Y3Y7CkBAIC0xMjQsOCArMTIxLDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAlhY3B0X3NrID0gdGVzdF9hY2NlcHQobHN0bl9zaywgKHN0cnVjdCBzb2NrYWRkciAqKSZzdnJf YWRkciwgJmxlbik7CiAKIAltZW1zZXQoJm91dG1lc3NhZ2UsIDAsIHNpemVvZihvdXRtZXNzYWdl KSk7Ci0JYnVmZmVyID0gbWFsbG9jKFJFQUxMWV9CSUcpOwotCiAJb3V0bWVzc2FnZS5tc2dfbmFt ZSA9ICZjb25uX2FkZHI7CiAJb3V0bWVzc2FnZS5tc2dfbmFtZWxlbiA9IHNpemVvZihjb25uX2Fk ZHIpOwogCW91dG1lc3NhZ2UubXNnX2lvdiA9ICZvdXRfaW92OwpAQCAtMTQyLDE3ICsxMzcsMTQg QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlzaW5mbyA9IChzdHJ1Y3Qgc2N0 cF9zbmRyY3ZpbmZvICopQ01TR19EQVRBKGNtc2cpOwogCW1lbXNldChzaW5mbywgMHgwMCwgc2l6 ZW9mKHN0cnVjdCBzY3RwX3NuZHJjdmluZm8pKTsKIAotCWlvdi5pb3ZfYmFzZSA9IGJ1ZmZlcjsK LQlpb3YuaW92X2xlbiA9IFJFQUxMWV9CSUc7CiAJb3V0bWVzc2FnZS5tc2dfaW92LT5pb3ZfYmFz ZSA9IG1lc3NhZ2U7Ci0KIAlvdXRtZXNzYWdlLm1zZ19pb3YtPmlvdl9sZW4gPSBzdHJsZW4obWVz c2FnZSkgKyAxOwogCiAJZmxhZyA9IE1TR19OT1NJR05BTDsKIAkvKnNlbmRtc2cgKCkgVEVTVDE6 IEJhZCBzb2NrZXQgZGVzY3JpcHRvciwgRUJBREYgRXhwZWN0ZWQgZXJyb3IgKi8KIAljb3VudCA9 IHNlbmRtc2coLTEsICZvdXRtZXNzYWdlLCBmbGFnKTsKIAlpZiAoY291bnQgIT0gLTEgfHwgZXJy bm8gIT0gRUJBREYpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2VuZG1zZyB3aXRoIGEgYmFk IHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNlbmRtc2cgd2l0aCBhIGJh ZCBzb2NrZXQgIgogCQkJICJkZXNjcmlwdG9yIGNvdW50OiVkLCBlcnJubzolZCIsIGNvdW50LCBl cnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNlbmRtc2coKSB3aXRoIGEgYmFkIHNvY2tldCBk ZXNjcmlwdG9yIC0gRUJBREYiKTsKQEAgLTE2MCw3ICsxNTIsNyBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCS8qc2VuZG1zZyAoKSBURVNUMjogSW52YWxpZCBzb2NrZXQsIEVO T1RTT0NLIEV4cGVjdGVkIGVycm9yICovCiAJY291bnQgPSBzZW5kbXNnKDAsICZvdXRtZXNzYWdl LCBmbGFnKTsKIAlpZiAoY291bnQgIT0gLTEgfHwgZXJybm8gIT0gRU5PVFNPQ0spCi0JCXRzdF9i cmttKFRCUk9LLCBOVUxMLCAic2VuZG1zZyB3aXRoIGludmFsaWQgc29ja2V0ICIKKwkJdHN0X2Jy a20oVEJST0ssIHRzdF9leGl0LCAic2VuZG1zZyB3aXRoIGludmFsaWQgc29ja2V0ICIKIAkJCSAi Y291bnQ6JWQsIGVycm5vOiVkIiwgY291bnQsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAi c2VuZG1zZygpIHdpdGggaW52YWxpZCBzb2NrZXQgLSBFTk9UU09DSyIpOwpAQCAtMTY4LDcgKzE2 MCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLypzZW5kbXNnICgpIFRF U1QzOiBzZW5kbXNnIG9uIGxpc3RlbmluZyBzb2NrZXQsIEVQSVBFIEV4cGVjdGVkIGVycm9yICov CiAJY291bnQgPSBzZW5kbXNnKGxzdG5fc2ssICZvdXRtZXNzYWdlLCBmbGFnKTsKIAlpZiAoY291 bnQgIT0gLTEgfHwgZXJybm8gIT0gRVBJUEUpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2Vu ZG1zZyBvbiBhIGxpc3RlbmluZyBzb2NrZXQgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQs ICJzZW5kbXNnIG9uIGEgbGlzdGVuaW5nIHNvY2tldCAiCiAJCQkgImNvdW50OiVkLCBlcnJubzol ZCIsIGNvdW50LCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNlbmRtc2coKSBvbiBhIGxp c3RlbmluZyBzb2NrZXQgLSBFUElQRSIpOwpAQCAtMTc3LDcgKzE2OSw3IEBAIGludCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAJb3V0bWVzc2FnZS5tc2dfaW92ID0gKHN0cnVjdCBpb3Zl YyAqKS0xOwogCWNvdW50ID0gc2VuZG1zZyhzaywgJm91dG1lc3NhZ2UsIGZsYWcpOwogCWlmIChj b3VudCAhPSAtMSB8fCBlcnJubyAhPSBFRkFVTFQpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAi c2VuZG1zZyB3aXRoIGludmFsaWQgaW92ZWMgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQs ICJzZW5kbXNnIHdpdGggaW52YWxpZCBpb3ZlYyAiCiAJCQkgInBvaW50ZXIgY291bnQ6JWQsIGVy cm5vOiVkIiwgY291bnQsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAic2VuZG1zZygpIHdp dGggaW52YWxpZCBpb3ZlYyBwdHIgLSBFRkFVTFQiKTsKQEAgLTE4OCw3ICsxODAsNyBAQCBpbnQg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCW91dG1lc3NhZ2UubXNnX2lvdmxlbiA9IDA7 CiAJY291bnQgPSBzZW5kbXNnKHNrLCAmb3V0bWVzc2FnZSwgZmxhZyk7CiAJaWYgKGNvdW50ICE9 IC0xIHx8IGVycm5vICE9IEVJTlZBTCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJzZW5kbXNn IHdpdGggaW52YWxpZCBpb3ZlYyAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNlbmRt c2cgd2l0aCBpbnZhbGlkIGlvdmVjICIKIAkJCSAibGVuZ3RoIGNvdW50OiVkLCBlcnJubzolZCIs IGNvdW50LCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNlbmRtc2coKSB3aXRoIGludmFs aWQgaW92ZWMgbGVuZ3RoIC0gRUlOVkFMIik7CkBAIC0xOTgsNyArMTkwLDcgQEAgaW50IG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKnNlbmRtc2cgKCkgVEVTVDY6IEludmFsaWQgbXNn aGRyIHBvaW50ZXIgRUZBVUxULCBFeHBlY3RlZCBlcnJvciAqLwogCWNvdW50ID0gc2VuZG1zZyhz aywgKHN0cnVjdCBtc2doZHIgKiktMSwgZmxhZyk7CiAJaWYgKGNvdW50ICE9IC0xIHx8IGVycm5v ICE9IEVGQVVMVCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJzZW5kbXNnIHdpdGggaW52YWxp ZCBtc2doZHIgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzZW5kbXNnIHdpdGggaW52 YWxpZCBtc2doZHIgIgogCQkJICJwb2ludGVyIGNvdW50OiVkLCBlcnJubzolZCIsIGNvdW50LCBl cnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNlbmRtc2coKSB3aXRoIGludmFsaWQgbXNnaGRy IHB0ciAtIEVGQVVMVCIpOwpAQCAtMjA3LDcgKzE5OSw3IEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJc2luZm8tPnNpbmZvX2ZsYWdzID0gOTk5OwogCWNvdW50ID0gc2VuZG1z ZyhzaywgJm91dG1lc3NhZ2UsIC0xKTsKIAlpZiAoY291bnQgIT0gLTEgfHwgZXJybm8gIT0gRUlO VkFMKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNlbmRtc2cgd2l0aCBpbnZhbGlkIHNpbmZv ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2VuZG1zZyB3aXRoIGludmFsaWQgc2lu Zm8gIgogCQkJICJmbGFncyBjb3VudDolZCwgZXJybm86JWQiLCBjb3VudCwgZXJybm8pOwogCiAJ dHN0X3Jlc20oVFBBU1MsICJzZW5kbXNnKCkgd2l0aCBpbnZhbGlkIHNpbmZvIGZsYWdzIC0gRUlO VkFMIik7CkBAIC0yMTYsNyArMjA4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAlzaW5mby0+c2luZm9fZmxhZ3MgPSBTQ1RQX0VPRjsKIAljb3VudCA9IHNlbmRtc2coc2ss ICZvdXRtZXNzYWdlLCBmbGFnKTsKIAlpZiAoY291bnQgIT0gLTEgfHwgZXJybm8gIT0gRUlOVkFM KQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNlbmRtc2cgd2l0aCBTQ1RQX0VPRiBmbGFnICIK KwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2VuZG1zZyB3aXRoIFNDVFBfRU9GIGZsYWcg IgogCQkJICJjb3VudDolZCwgZXJybm86JWQiLCBjb3VudCwgZXJybm8pOwogCiAJdHN0X3Jlc20o VFBBU1MsICJzZW5kbXNnKCkgd2l0aCBTQ1RQX0VPRiBmbGFnIC0gRUlOVkFMIik7CkBAIC0yMjUs NyArMjE3LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlzaW5mby0+c2lu Zm9fZmxhZ3MgPSBTQ1RQX0FCT1JUOwogCWNvdW50ID0gc2VuZG1zZyhzaywgJm91dG1lc3NhZ2Us IGZsYWcpOwogCWlmIChjb3VudCAhPSAtMSB8fCBlcnJubyAhPSBFSU5WQUwpCi0JCXRzdF9icmtt KFRCUk9LLCBOVUxMLCAic2VuZG1zZyB3aXRoIFNDVFBfQUJPUlQgZmxhZyAiCisJCXRzdF9icmtt KFRCUk9LLCB0c3RfZXhpdCwgInNlbmRtc2cgd2l0aCBTQ1RQX0FCT1JUIGZsYWcgIgogCQkJICJj b3VudDolZCwgZXJybm86JWQiLCBjb3VudCwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJz ZW5kbXNnKCkgd2l0aCBTQ1RQX0FCT1JUIGZsYWcgLSBFSU5WQUwiKTsKQEAgLTI0MiwxMSArMjM0 LDEyIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLypzZW5kbXNnICgpIFRF U1QxMDpzZW5kbXNnIG9uIGNsb3NlZCBhc3NvY2lhdGlvbiwgRVBJUEUgRXhwZWN0ZWQgZXJyb3Ig Ki8KIAljb3VudCA9IHNlbmRtc2coYWNwdDFfc2ssICZvdXRtZXNzYWdlLCBmbGFnKTsKIAlpZiAo Y291bnQgIT0gLTEgfHwgZXJybm8gIT0gRVBJUEUpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAi c2VuZG1zZyBvbiBhIGNsb3NlZCBhc3NvY2lhdGlvbiAiCisJCXRzdF9icmttKFRCUk9LLCB0c3Rf ZXhpdCwgInNlbmRtc2cgb24gYSBjbG9zZWQgYXNzb2NpYXRpb24gIgogCQkJICJjb3VudDolZCwg ZXJybm86JWQiLCBjb3VudCwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJzZW5kbXNnKCkg b24gYSBjbG9zZWQgYXNzb2NpYXRpb24gLSBFUElQRSIpOwogCisJY2xvc2UoYWNwdDFfc2spOwog CWNsb3NlKHNrKTsKIAljbG9zZShsc3RuX3NrKTsKIAljbG9zZShhY3B0X3NrKTsKQEAgLTI3Nyw4 ICsyNzAsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWFjcHRfc2sgPSB0 ZXN0X2FjY2VwdChsc3RuX3NrLCAoc3RydWN0IHNvY2thZGRyICopJnN2cl9hZGRyLCAmbGVuKTsK IAogCW1lbXNldCgmb3V0bWVzc2FnZSwgMCwgc2l6ZW9mKG91dG1lc3NhZ2UpKTsKLQlidWZmZXJf c25kID0gbWFsbG9jKFJFQUxMWV9CSUcpOwotCiAJb3V0bWVzc2FnZS5tc2dfbmFtZSA9ICZzdnJf YWRkcjsKIAlvdXRtZXNzYWdlLm1zZ19uYW1lbGVuID0gc2l6ZW9mKHN2cl9hZGRyKTsKIAlvdXRt ZXNzYWdlLm1zZ19pb3YgPSAmb3V0X2lvdjsKQEAgLTI5NSwxMCArMjg2LDcgQEAgaW50IG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlzaW5mbyA9IChzdHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZv ICopQ01TR19EQVRBKGNtc2cpOwogCW1lbXNldChzaW5mbywgMHgwMCwgc2l6ZW9mKHN0cnVjdCBz Y3RwX3NuZHJjdmluZm8pKTsKIAotCWlvdi5pb3ZfYmFzZSA9IGJ1ZmZlcl9zbmQ7Ci0JaW92Lmlv dl9sZW4gPSBSRUFMTFlfQklHOwogCW91dG1lc3NhZ2UubXNnX2lvdi0+aW92X2Jhc2UgPSBtZXNz YWdlOwotCiAJb3V0bWVzc2FnZS5tc2dfaW92LT5pb3ZfbGVuID0gc3RybGVuKG1lc3NhZ2UpICsg MTsKIAogCW1lbXNldCgmaW5tZXNzYWdlLCAwLCBzaXplb2YoaW5tZXNzYWdlKSk7CkBAIC0zMTYs NyArMzA0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKnNlbmRtc2co KSBURVNUMTE6IFNlbmRpbmcgZGF0YSBmcm9tIHNlcnZlciBzb2NrZXQgdG8gY2xpZW50IHNvY2tl dCAqLwogCWNvdW50ID0gc2VuZG1zZyhhY3B0X3NrLCAmb3V0bWVzc2FnZSwgZmxhZyk7CiAJaWYg KGNvdW50ICE9IG1zZ19jb3VudCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJzZW5kbXNnIGZy b20gYWNjZXB0IHNvY2tldCB0byAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNlbmRt c2cgZnJvbSBhY2NlcHQgc29ja2V0IHRvICIKIAkJCSAiY2xpZW50IGNvdW50OiVkLCBlcnJubzol ZCIsIGNvdW50LCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNlbmRtc2coKSBmcm9tIGFj Y2VwdCBzb2NrZXQgdG8gY2xpZW50IC0gU1VDQ0VTUyIpOwpAQCAtMzI5LDcgKzMxNyw3IEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLypzZW5kbXNnKCkgVEVTVDEyOiBTZW5k aW5nIGRhdGEgZnJvbSBjbGllbnQgc29ja2V0IHRvIHNlcnZlciBzb2NrZXQgKi8KIAljb3VudCA9 IHNlbmRtc2coc2ssICZvdXRtZXNzYWdlLCBmbGFnKTsKIAlpZiAoY291bnQgIT0gbXNnX2NvdW50 KQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNlbmRtc2cgZnJvbSBjbGllbnQgdG8gc2VydmVy ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2VuZG1zZyBmcm9tIGNsaWVudCB0byBz ZXJ2ZXIgIgogCQkJICJjb3VudDolZCwgZXJybm86JWQiLCBjb3VudCwgZXJybm8pOwogCiAJdHN0 X3Jlc20oVFBBU1MsICJzZW5kbXNnKCkgZnJvbSBjbGllbnQgdG8gc2VydmVyIC0gU1VDQ0VTUyIp OwpAQCAtMzQ3LDcgKzMzNSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ ICAgc2VydmVyIHNvY2tldCAqLwogCWNvdW50ID0gc2VuZG1zZyhzazEsICZvdXRtZXNzYWdlLCBm bGFnKTsKIAlpZiAoY291bnQgIT0gbXNnX2NvdW50KQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwg InNlbmRtc2cgZnJvbSB1bmNvbm5lY3RlZCBjbGllbnQgdG8gIgorCQl0c3RfYnJrbShUQlJPSywg dHN0X2V4aXQsICJzZW5kbXNnIGZyb20gdW5jb25uZWN0ZWQgY2xpZW50IHRvICIKIAkJCSAic2Vy dmVyIGNvdW50OiVkLCBlcnJubzolZCIsIGNvdW50LCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFT UywgInNlbmRtc2coKSBmcm9tIHVuY29ubmVjdGVkIGNsdCB0byBzZXJ2ZXIgLSBTVUNDRVNTIik7 CkBAIC0zNjIsNyArMzUwLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkv KnNlbmRtc2coKSBURVNUMTQ6IFNlbmRpbmcgYSBtZXNzYWdlIG9uIFNIVVRfUkQgc29ja2V0ICov CiAJY291bnQgPSBzZW5kbXNnKHNrMSwgJm91dG1lc3NhZ2UsIGZsYWcpOwogCWlmIChjb3VudCAh PSBtc2dfY291bnQpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2VuZG1zZyBvbiBhIFNIVVRf UkQgc29ja2V0ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2VuZG1zZyBvbiBhIFNI VVRfUkQgc29ja2V0ICIKIAkJCSAiY291bnQ6JWQsIGVycm5vOiVkIiwgY291bnQsIGVycm5vKTsK IAogCXRzdF9yZXNtKFRQQVNTLCAic2VuZG1zZygpIG9uIGEgU0hVVF9SRCBzb2NrZXQgLSBTVUND RVNTIik7CkBAIC0zNzMsNSArMzYxLDUgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAljbG9zZShzazEpOwogCWNsb3NlKGxzdG5fc2spOwogCWNsb3NlKGFjcHRfc2spOwotCXRz dF9leGl0KCk7CisJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9z Y3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfc2VuZHRvLmMgYi90ZXN0Y2FzZXMvbmV0d29yay9z Y3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfc2VuZHRvLmMKaW5kZXggZDU3NmQ3Ny4uMWI4OGQ4 OCAxMDA2NDQKLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90 b18xX3NlbmR0by5jCisrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0 XzFfdG9fMV9zZW5kdG8uYwpAQCAtMSw0ICsxLDQgQEAKLS8qIFNDVFAga2VybmVsIHJlZmVyZW5j ZSBJbXBsZW1lbnRhdGlvbgorLyogU0NUUCBrZXJuZWwgSW1wbGVtZW50YXRpb24KICAqIENvcHly aWdodCAoYykgMjAwMyBIZXdsZXR0LVBhY2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QCiAg KiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDA0CiAgKgpAQCAtMTAsMTMgKzEwLDEzIEBACiAg KiBURVNUMzogU2VuZGluZyBkYXRhIGZyb20gdW5jb25uZWN0ZWQgY2xpZW50IHNvY2tldCB0byBz ZXJ2ZXIKICAqIFRFU1Q0OiBzZW5kaW5nIHBhcnRpYWwgZGF0YSBmcm9tIGEgYnVmZmVyCiAgKgot ICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7Cisg KiBUaGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOwogICogeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YKICAqIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAqIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlv bikKICAqIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBs ZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0CisgKiBUaGUgU0NU UCBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0CiAgKiB3 aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQKICAqICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioKICAq IHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4KQEAgLTEwOCw3ICsxMDgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCWNvdW50ID0gc2VuZHRvKHNrLCBtZXNzYWdlLCBtc2dfY291bnQsIGZsYWcsCiAJCSAg ICAgICAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopJmNvbm5fYWRkciwgbGVuKTsKIAlpZiAoY291 bnQgIT0gbXNnX2NvdW50KQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNlbmR0byBmcm9tIGNs aWVudCB0byBzZXJ2ZXIgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzZW5kdG8gZnJv bSBjbGllbnQgdG8gc2VydmVyICIKIAkJCSAiY291bnQ6JWQsIGVycm5vOiVkIiwgY291bnQsIGVy cm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAic2VuZHRvKCkgZnJvbSBjbGllbnQgdG8gc2VydmVy IC0gU1VDQ0VTUyIpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pCiAJY291bnQgPSBzZW5kdG8oYWNwdF9zaywgbWVzc2FnZSwgbXNnX2NvdW50LCBm bGFnLAogCQkgICAgICAgKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqKSZzdnJfYWRkciwgbGVuKTsK IAlpZiAoY291bnQgIT0gbXNnX2NvdW50KQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNlbmR0 byBmcm9tIGFjY2VwdCBzb2NrZXQgdG8gY2xpZW50ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9l eGl0LCAic2VuZHRvIGZyb20gYWNjZXB0IHNvY2tldCB0byBjbGllbnQgIgogCQkJICJjb3VudDol ZCwgZXJybm86JWQiLCBjb3VudCwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJzZW5kdG8o KSBmcm9tIGFjY2VwdCBzb2NrZXQgdG8gY2xpZW50IC0gU1VDQ0VTUyIpOwpAQCAtMTM4LDcgKzEz OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJY291bnQgPSBzZW5kdG8o c2sxLCBtZXNzYWdlLCBtc2dfY291bnQsIGZsYWcsCiAJCSAgICAgICAoY29uc3Qgc3RydWN0IHNv Y2thZGRyICopJmNvbm5fYWRkciwgbGVuKTsKIAlpZiAoY291bnQgIT0gbXNnX2NvdW50KQotCQl0 c3RfYnJrbShUQlJPSywgTlVMTCwgInNlbmR0byBmcm9tIHVuY29ubmVjdGVkIGNsaWVudCB0byAi CisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNlbmR0byBmcm9tIHVuY29ubmVjdGVkIGNs aWVudCB0byAiCiAJCQkgInNlcnZlciBjb3VudDolZCwgZXJybm86JWQiLCBjb3VudCwgZXJybm8p OwogCiAJdHN0X3Jlc20oVFBBU1MsICJzZW5kdG8oKSBmcm9tIHVuY29ubmVjdGVkIGNsaWVudCB0 byBzZXJ2ZXIgLSBTVUNDRVNTIik7CkBAIC0xNTgsNiArMTU4LDYgQEAgaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAljbG9zZShzazEpOwogCWNsb3NlKGxzdG5fc2spOwogCWNsb3Nl KGFjcHRfc2spOwotCXRzdF9leGl0KCk7CisJcmV0dXJuIDA7CiAKIH0KZGlmZiAtLWdpdCBhL3Rl c3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9zaHV0ZG93bi5jIGIv dGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX3NodXRkb3duLmMK aW5kZXggMDJjOGJmOC4uYTlkMWU5YiAxMDA2NDQKLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvc2N0 cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX3NodXRkb3duLmMKKysrIGIvdGVzdGNhc2VzL25ldHdv cmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX3NodXRkb3duLmMKQEAgLTEsNCArMSw0IEBA Ci0vKiBTQ1RQIGtlcm5lbCByZWZlcmVuY2UgSW1wbGVtZW50YXRpb24KKy8qIFNDVFAga2VybmVs IEltcGxlbWVudGF0aW9uCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDMgSGV3bGV0dC1QYWNrYXJkIERl dmVsb3BtZW50IENvbXBhbnksIEwuUAogICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwNAog ICoKQEAgLTExLDEzICsxMSwxMyBAQAogICogVEVTVDU6IHNodXRkb3duIHdpdGggU0hVVF9SRFdS IGZsYWcgdG8gZGlzYWJsZSBuZXcgcmVjZWl2ZS9zZW5kCiAgKiBURVNUNjogVW5jb25uZWN0ZWQg c29ja2V0CiAgKgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGZyZWUg c29mdHdhcmU7CisgKiBUaGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOwog ICogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YKICAqIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK ICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChh dCB5b3VyIG9wdGlvbikKICAqIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqIFRoZSBTQ1RQIHJl ZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 CisgKiBUaGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0CiAgKiB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQKICAqICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioq KioqKioqKioKICAqIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4KQEAgLTEwNSw3ICsxMDUsNyBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCS8qc2h1dGRvd24oKSBURVNUMTogQmFkIHNvY2tldCBkZXNjcmlw dG9yLCBFQkFERiBFeHBlY3RlZCBlcnJvciAqLwogCWVycm9yID0gc2h1dGRvd24oLTEsIFNIVVRf V1IpOwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFQkFERikKLQkJdHN0X2Jya20oVEJS T0ssIE5VTEwsICJzaHV0ZG93biB3aXRoIGEgYmFkIHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9L LCB0c3RfZXhpdCwgInNodXRkb3duIHdpdGggYSBiYWQgc29ja2V0ICIKIAkJCSAiZXJyb3I6JWQs IGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAic2h1dGRvd24o KSB3aXRoIGEgYmFkIHNvY2tldCBkZXNjcmlwdG9yIC0gRUJBREYiKTsKQEAgLTExMyw3ICsxMTMs NyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qc2h1dGRvd24oKSBURVNU MjogSW52YWxpZCBzb2NrZXQsIEVOT1RTT0NLIEV4cGVjdGVkIGVycm9yICovCiAJZXJyb3IgPSBz aHV0ZG93bigwLCBTSFVUX1dSKTsKIAlpZiAoZXJyb3IgIT0gLTEgfHwgZXJybm8gIT0gRU5PVFNP Q0spCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2h1dGRvd24gd2l0aCBhbiBpbnZhbGlkIHNv Y2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNodXRkb3duIHdpdGggYW4gaW52 YWxpZCBzb2NrZXQgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwog CiAJdHN0X3Jlc20oVFBBU1MsICJzaHV0ZG93bigpIHdpdGggYW4gaW52YWxpZCBzb2NrZXQgLSBF Tk9UU09DSyIpOwpAQCAtMTI1LDcgKzEyNSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCiAJLypzaHV0ZG93bigpIFRFU1QzOiBzaHV0ZG93biB3aXRoIFNIVVRfV1IgZmxhZyB0 byBkaXNhYmxlIG5ldyBzZW5kICovCiAJZXJyb3IgPSBzaHV0ZG93bihjbG50X3NrWzBdLCBTSFVU X1dSKTsKIAlpZiAoZXJyb3IgPCAwKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNodXRkb3du IHdpdGggU0hVVF9XUiBmbGFnICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2h1dGRv d24gd2l0aCBTSFVUX1dSIGZsYWcgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwg ZXJybm8pOwogCiAJLyogUmVhZGluZyBvbiBhIHNvY2tldCB0aGF0IGhhcyByZWNlaXZlZCBTSFVU RE9XTiBzaG91bGQgcmV0dXJuIDAKQEAgLTEzMyw3ICsxMzMsNyBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCSAqLwogCWVycm9yID0gcmVjdihhY3B0X3NrWzBdLCBtc2didWYs IDEwMCwgMCk7CiAJaWYgKChlcnJvciAhPSAwKSB8fCAoZXJybm8gIT0gMCkpCi0JCXRzdF9icmtt KFRCUk9LLCBOVUxMLCAicmVjdiBvbiBhIFNIVVRET1dOIHJlY2VpdmVkIHNvY2tldCAiCisJCXRz dF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInJlY3Ygb24gYSBTSFVURE9XTiByZWNlaXZlZCBzb2Nr ZXQgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJLyogUmVh ZCB0aGUgcGVuZGluZyBtZXNzYWdlIG9uIGNsbnRfc2tbMF0gdGhhdCB3YXMgcmVjZWl2ZWQgYmVm b3JlCkBAIC0xNDQsNyArMTQ0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAkvKiBObyBtb3JlIG1lc3NhZ2VzIGFuZCB0aGUgYXNzb2NpYXRpb24gaXMgU0hVVERPV04sIHNo b3VsZCBmYWlsLiAqLwogCWVycm9yID0gcmVjdihjbG50X3NrWzBdLCBtc2didWYsIDEwMCwgMCk7 CiAJaWYgKChlcnJvciAhPSAtMSkgfHwgKGVycm5vICE9IEVOT1RDT05OKSkKLQkJdHN0X2Jya20o VEJST0ssIE5VTEwsICJyZWN2IG9uIGEgU0hVVF9XUiBzb2NrZXQgd2l0aCBubyAiCisJCXRzdF9i cmttKFRCUk9LLCB0c3RfZXhpdCwgInJlY3Ygb24gYSBTSFVUX1dSIHNvY2tldCB3aXRoIG5vICIK IAkJCSAibWVzc2FnZXMgZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRz dF9yZXNtKFRQQVNTLCAic2h1dGRvd24oKSB3aXRoIFNIVVRfV1IgZmxhZyAtIFNVQ0NFU1MiKTsK QEAgLTE1NiwxMyArMTU2LDEzIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAK IAllcnJvciA9IHJlY3YoY2xudF9za1sxXSwgbXNnYnVmLCAxMDAsIDApOwogCWlmICgoZXJyb3Ig IT0gMCkgfHwgKGVycm5vICE9IDApKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInJlY3Ygb24g YSBTSFVUX1JEIHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInJlY3Ygb24g YSBTSFVUX1JEIHNvY2tldCAiCiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJu byk7CiAKIAkvKiBTZW5kaW5nIGEgbWVzc2FnZSBvbiBTSFVUX1JEIHNvY2tldC4gKi8KIAllcnJv ciA9IHRlc3Rfc2VuZChjbG50X3NrWzFdLCBtZXNzYWdlLCBzdHJsZW4obWVzc2FnZSksIDApOwog CWlmIChlcnJvciA8IDApCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2VuZCBvbiBhIFNIVVRf UkQgc29ja2V0ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2VuZCBvbiBhIFNIVVRf UkQgc29ja2V0ICIKIAkJCSAiZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAog CS8qIFJlY2VpdmUgdGhlIG1lc3NhZ2Ugc2VudCBvbiBTSFVUX1JEIHNvY2tldC4gKi8KQEAgLTE3 NCw3ICsxNzQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qIFdlIHNo b3VsZCBub3QgcmVjZWl2ZSB0aGUgbWVzc2FnZSBhcyB0aGUgc29ja2V0IGlzIFNIVVRfUkQgKi8K IAllcnJvciA9IHJlY3YoY2xudF9za1sxXSwgbXNnYnVmLCAxMDAsIDApOwogCWlmICgoZXJyb3Ig IT0gMCkgfHwgKGVycm5vICE9IDApKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInJlY3Ygb24g YSBTSFVUX1JEIHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInJlY3Ygb24g YSBTSFVUX1JEIHNvY2tldCAiCiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJu byk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNodXRkb3duKCkgd2l0aCBTSFVUX1JEIGZsYWcgLSBT VUNDRVNTIik7CkBAIC0xODUsMTIgKzE4NSwxMiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCiAJZXJyb3IgPSByZWN2KGFjcHRfc2tbMl0sIG1zZ2J1ZiwgMTAwLCAwKTsKIAlp ZiAoKGVycm9yICE9IDApIHx8IChlcnJubyAhPSAwKSkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEws ICJyZWN2IG9uIGEgU0hVVERPV04gcmVjZWl2ZWQgc29ja2V0ICIKKwkJdHN0X2Jya20oVEJST0ss IHRzdF9leGl0LCAicmVjdiBvbiBhIFNIVVRET1dOIHJlY2VpdmVkIHNvY2tldCAiCiAJCQkgImVy cm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAllcnJvciA9IHJlY3YoY2xudF9z a1syXSwgbXNnYnVmLCAxMDAsIDApOwogCWlmICgoZXJyb3IgIT0gMCkgfHwgKGVycm5vICE9IDAp KQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInJlY3Ygb24gYSBTSFVUX1JEV1Igc29ja2V0ICIK KwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAicmVjdiBvbiBhIFNIVVRfUkRXUiBzb2NrZXQg IgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20o VFBBU1MsICJzaHV0ZG93bigpIHdpdGggU0hVVF9SRFdSIGZsYWcgLSBTVUNDRVNTIik7CkBAIC0x OTgsNyArMTk4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKnNodXRk b3duKCkgVEVTVDY6IFVuY29ubmVjdGVkIHNvY2tldCwgRU5PVENPTk4gRXhwZWN0ZWQgZXJyb3Ig Ki8KIAllcnJvciA9IHNodXRkb3duKHNrLCBTSFVUX1JEKTsKIAlpZiAoKGVycm9yICE9IC0xKSB8 fCAoZXJybm8gIT0gRU5PVENPTk4pKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNodXRkb3du IG9uIGFuIHVuY29ubmVjdGVkIHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwg InNodXRkb3duIG9uIGFuIHVuY29ubmVjdGVkIHNvY2tldCAiCiAJCQkgImVycm9yOiVkLCBlcnJu bzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNodXRkb3duKCkgb24g YW4gdW5jb25uZWN0ZWQgc29ja2V0IC0gU1VDQ0VTUyIpOwpAQCAtMjExLDUgKzIxMSw1IEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJY2xvc2UobHN0bl9zayk7CiAJY2xvc2Uo c2spOwogCi0JdHN0X2V4aXQoKTsKKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RjYXNl cy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9zb2NrZXRfYmluZF9saXN0ZW4u YyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9zb2NrZXRf YmluZF9saXN0ZW4uYwppbmRleCAwODZjZTBiLi5hMjAxMTE3IDEwMDY0NAotLS0gYS90ZXN0Y2Fz ZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfc29ja2V0X2JpbmRfbGlzdGVu LmMKKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX3Nv Y2tldF9iaW5kX2xpc3Rlbi5jCkBAIC0xLDQgKzEsNCBAQAotLyogU0NUUCBrZXJuZWwgcmVmZXJl bmNlIEltcGxlbWVudGF0aW9uCisvKiBTQ1RQIGtlcm5lbCBJbXBsZW1lbnRhdGlvbgogICogQ29w eXJpZ2h0IChjKSAyMDAzIEhld2xldHQtUGFja2FyZCBEZXZlbG9wbWVudCBDb21wYW55LCBMLlAK ICAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDQKICAqCkBAIC0yOSwxMyArMjksMTMgQEAK ICAqIFRFU1QxNDogSW52YWxpZCBzb2NrZXQKICAqIFRFU1QxNTogTGlzdGVuaW5nIGEgYm91bmQg c29ja2V0CiAgKgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGZyZWUg c29mdHdhcmU7CisgKiBUaGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOwog ICogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YKICAqIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK ICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChh dCB5b3VyIG9wdGlvbikKICAqIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqIFRoZSBTQ1RQIHJl ZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 CisgKiBUaGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0CiAgKiB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQKICAqICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioq KioqKioqKioKICAqIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4KQEAgLTk4LDcgKzk4LDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKIAkvKiBzb2NrZXQoKSBURVNUMTogSW52YWxpZCBkb21haW4sIEVBRk5P U1VQUE9SVCBFeHBlY3RlZCBlcnJvciAqLwogCXNrID0gc29ja2V0KC0xLCBTT0NLX1NUUkVBTSwg SVBQUk9UT19TQ1RQKTsKIAlpZiAoc2sgIT0gLTEgfHwgZXJybm8gIT0gRUFGTk9TVVBQT1JUKQot CQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNvY2tldCgpIHdpdGggaW52YWxpZCBkb21haW4gIgor CQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzb2NrZXQoKSB3aXRoIGludmFsaWQgZG9tYWlu ICIKIAkJCSAiZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNt KFRQQVNTLCAic29ja2V0KCkgd2l0aCBpbnZhbGlkIGRvbWFpbiAtIEVBRk5PU1VQUE9SVCIpOwpA QCAtMTA2LDcgKzEwNiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLypz b2NrZXQoKSBURVNUMiA6IEludmFsaWQgdHlwZSwgRUlOVkFMIEV4cGVjdGVkIGVycm9yICovCiAJ c2sgPSBzb2NrZXQocGZfY2xhc3MsIC0xLCBJUFBST1RPX1NDVFApOwogCWlmIChzayAhPSAtMSB8 fCBlcnJubyAhPSBFSU5WQUwpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic29ja2V0KCkgd2l0 aCBpbnZhbGlkIHR5cGUgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzb2NrZXQoKSB3 aXRoIGludmFsaWQgdHlwZSAiCiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJu byk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNvY2tldCgpIHdpdGggaW52YWxpZCB0eXBlIC0gRUlO VkFMIik7CkBAIC0xMTQsNyArMTE0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAkvKnNvY2tldCgpIFRFU1QzOiBvcGVuaW5nIGEgc29ja2V0ICovCiAJc2sgPSBzb2NrZXQo cGZfY2xhc3MsIFNPQ0tfU1RSRUFNLCBJUFBST1RPX1NDVFApOwogCWlmIChzayA8IDApCi0JCXRz dF9icmttKFRCUk9LLCBOVUxMLCAidmFsaWQgc29ja2V0KCkgY2FsbCAiCisJCXRzdF9icmttKFRC Uk9LLCB0c3RfZXhpdCwgInZhbGlkIHNvY2tldCgpIGNhbGwgIgogCQkJICJlcnJvcjolZCwgZXJy bm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJzb2NrZXQoKSAtIFNV Q0NFU1MiKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCS8qYmluZCgpIFRFU1Q0OiBJbnZhbGlkIHN0cnVjdHVyZSwgRUZBVUxUIEV4cGVjdGVk IGVycm9yICovCiAJZXJyb3IgPSBiaW5kKHNrLCAoc3RydWN0IHNvY2thZGRyICopLTEsIHNpemVv ZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKIAlpZiAoZXJyb3IgIT0gLTEgfHwgZXJybm8gIT0gRUZB VUxUKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImJpbmQoKSB3aXRoIGludmFsaWQgYWRkcmVz cyBwdHIgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJiaW5kKCkgd2l0aCBpbnZhbGlk IGFkZHJlc3MgcHRyICIKIAkJCSAiZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsK IAogCXRzdF9yZXNtKFRQQVNTLCAiYmluZCgpIHdpdGggaW52YWxpZCBhZGRyZXNzIHB0ciAtIEVG QVVMVCIpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAKIAllcnJvciA9IGJpbmQoc2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmYmluZF9hZGRyLCBz aXplb2YoYmluZF9hZGRyKSAtIDIpOwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFSU5W QUwpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiYmluZCgpIHdpdGggaW52YWxpZCBhZGRyZXNz IGxlbmd0aCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImJpbmQoKSB3aXRoIGludmFs aWQgYWRkcmVzcyBsZW5ndGggIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJy bm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJiaW5kKCkgd2l0aCBpbnZhbGlkIGFkZHJlc3MgbGVu Z3RoIC0gRUlOVkFMIik7CkBAIC0xNDIsNyArMTQyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAkvKmJpbmQoKSBURVNUNjogSW52YWxpZCBzb2NrZXQgZGVzY3JpcHRvciwg RU5PVFNPQ0sgRXhwZWN0IEVycm9yICovCiAJZXJyb3IgPSBiaW5kKDAsIChzdHJ1Y3Qgc29ja2Fk ZHIgKikmYmluZF9hZGRyLCBzaXplb2YoYmluZF9hZGRyKSk7CiAJaWYgKGVycm9yICE9IC0xIHx8 IGVycm5vICE9IEVOT1RTT0NLKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImJpbmQoKSB3aXRo IGludmFsaWQgc29ja2V0ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiYmluZCgpIHdp dGggaW52YWxpZCBzb2NrZXQgIgogCQkJICJkZXNjcmlwdG9yIGVycm9yOiVkLCBlcnJubzolZCIs IGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgImJpbmQoKSB3aXRoIGludmFsaWQg c29ja2V0IGRlc2NyaXB0b3IgLSBFTk9UU09DSyIpOwpAQCAtMTUyLDcgKzE1Miw3IEBAIGludCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJYmluZF9hZGRyLnNpbl9hZGRyLnNfYWRkciA9 IGluZXRfYWRkcihTQ1RQX0lOVl9MT09QQkFDSyk7CiAJZXJyb3IgPSBiaW5kKHNrLCAoc3RydWN0 IHNvY2thZGRyICopJmJpbmRfYWRkciwgc2l6ZW9mKGJpbmRfYWRkcikpOwogCWlmIChlcnJvciAh PSAtMSB8fCBlcnJubyAhPSBFQUREUk5PVEFWQUlMKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwg ImJpbmQoKSB3aXRoIGludmFsaWQgbG9jYWwgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQs ICJiaW5kKCkgd2l0aCBpbnZhbGlkIGxvY2FsICIKIAkJCSAiYWRkcmVzcyBlcnJvcjolZCwgZXJy bm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJiaW5kKCkgd2l0aCBp bnZhbGlkIGxvY2FsIGFkZHJlc3MgLSBFQUREUk5PVEFWQUlMIik7CkBAIC0xNjUsNyArMTY1LDcg QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWVycm9yID0gYmluZChzaywg KHN0cnVjdCBzb2NrYWRkciAqKSZiaW5kX2FkZHIsIHNpemVvZihiaW5kX2FkZHIpKTsKIAlpZiAo ZXJyb3IgIT0gLTEgfHwgZXJybm8gIT0gRUlOVkFMKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwg ImJpbmQoKSBvbiBhbiBhbHJlYWR5IGJvdW5kIHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0 c3RfZXhpdCwgImJpbmQoKSBvbiBhbiBhbHJlYWR5IGJvdW5kIHNvY2tldCAiCiAJCQkgImVycm9y OiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgImJpbmQo KSBvbiBhbiBhbHJlYWR5IGJvdW5kIHNvY2tldCAtIEVJTlZBTCIpOwpAQCAtMTg0LDcgKzE4NCw3 IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCWVycm9yID0gYmluZChzaywg KHN0cnVjdCBzb2NrYWRkciAqKSZiaW5kX2FkZHIsCiAJCQkgICAgIHNpemVvZihiaW5kX2FkZHIp KTsKIAkJaWYgKGVycm9yICE9IC0xIHx8IGVycm5vICE9IEVBQ0NFUykKLQkJCXRzdF9icmttKFRC Uk9LLCBOVUxMLCAiYmluZCgpIG9uIHJlc2VydmVyZCBwb3J0ICIKKwkJCXRzdF9icmttKFRCUk9L LCB0c3RfZXhpdCwgImJpbmQoKSBvbiByZXNlcnZlcmQgcG9ydCAiCiAJCQkJICJlcnJvcjolZCwg ZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJCXRzdF9yZXNtKFRQQVNTLCAiYmluZCgpIG9u IHJlc2VydmVkIHBvcnQgLSBFQUNDRVNTIik7CkBAIC0xOTYsNyArMTk2LDcgQEAgaW50IG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAliaW5kX2FkZHIuc2luX3BvcnQgPSBodG9ucyhTQ1RQ X1RFU1RQT1JUXzEpOwogCWVycm9yID0gYmluZChzaywgKHN0cnVjdCBzb2NrYWRkciAqKSZiaW5k X2FkZHIsIHNpemVvZihiaW5kX2FkZHIpKTsKIAlpZiAoZXJyb3IgPCAwKQotCQl0c3RfYnJrbShU QlJPSywgTlVMTCwgImJpbmQoKSB3aXRoIElOQUREUl9BTlkgYWRkcmVzcyBhbmQgIgorCQl0c3Rf YnJrbShUQlJPSywgdHN0X2V4aXQsICJiaW5kKCkgd2l0aCBJTkFERFJfQU5ZIGFkZHJlc3MgYW5k ICIKIAkJCSAibm9uLXplcm8gcG9ydCBlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8p OwogCiAJdHN0X3Jlc20oVFBBU1MsICJiaW5kKCkgd2l0aCBJTkFERFJfQU5ZIGFkZHJlc3MgYW5k IG5vbi16ZXJvIHBvcnQgLSAiCkBAIC0yMTMsNyArMjEzLDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKIAliaW5kX2FkZHIuc2luX3BvcnQgPSAwOwogCWVycm9yID0gYmluZChz aywgKHN0cnVjdCBzb2NrYWRkciAqKSZiaW5kX2FkZHIsIHNpemVvZihiaW5kX2FkZHIpKTsKIAlp ZiAoZXJyb3IgPCAwKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImJpbmQoKSB3aXRoIElOQURE Ul9BTlkgYWRkcmVzcyBhbmQgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJiaW5kKCkg d2l0aCBJTkFERFJfQU5ZIGFkZHJlc3MgYW5kICIKIAkJCSAiemVybyBwb3J0IGVycm9yOiVkLCBl cnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgImJpbmQoKSB3aXRo IElOQUREUl9BTlkgYWRkcmVzcyBhbmQgemVybyBwb3J0IC0gIgpAQCAtMjMxLDcgKzIzMSw3IEBA IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJYmluZF9hZGRyLnNpbl9wb3J0ID0g MDsKIAllcnJvciA9IGJpbmQoc2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmYmluZF9hZGRyLCBzaXpl b2YoYmluZF9hZGRyKSk7CiAJaWYgKGVycm9yIDwgMCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEws ICJiaW5kKCkgd2l0aCBsb2NhbCBhZGRyZXNzIGFuZCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3Rf ZXhpdCwgImJpbmQoKSB3aXRoIGxvY2FsIGFkZHJlc3MgYW5kICIKIAkJCSAiemVybyBwb3J0IGVy cm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgImJp bmQoKSB3aXRoIGxvY2FsIGFkZHJlc3MgYW5kIHplcm8gcG9ydCAtICIgIlNVQ0NFU1MiKTsKQEAg LTIzOSw3ICsyMzksNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qbGlz dGVuKCkgVEVTVDEzOiBCYWQgc29ja2V0IGRlc2NyaXB0b3IgRUJBREYsIEV4cGVjdGVkIGVycm9y ICovCiAJZXJyb3IgPSBsaXN0ZW4oLTEsIDMpOwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAh PSBFQkFERikKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJsaXN0ZW4oKSB3aXRoIGJhZCBzb2Nr ZXQgZGVzY3JpcHRvciAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImxpc3RlbigpIHdp dGggYmFkIHNvY2tldCBkZXNjcmlwdG9yICIKIAkJCSAiZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJy b3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAibGlzdGVuKCkgd2l0aCBiYWQgc29ja2V0 IGRlc2NyaXB0b3IgLSBFQkFERiIpOwpAQCAtMjQ3LDcgKzI0Nyw3IEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJLypsaXN0ZW4oKSBURVNUMTQ6IEludmFsaWQgc29ja2V0IEVO T1RTT0NLLCBFeHBlY3RlZCBlcnJvciAqLwogCWVycm9yID0gbGlzdGVuKDAsIDMpOwogCWlmIChl cnJvciAhPSAtMSB8fCBlcnJubyAhPSBFTk9UU09DSykKLQkJdHN0X2Jya20oVEJST0ssIE5VTEws ICJsaXN0ZW4oKSB3aXRoIGludmFsaWQgc29ja2V0ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9l eGl0LCAibGlzdGVuKCkgd2l0aCBpbnZhbGlkIHNvY2tldCAiCiAJCQkgImVycm9yOiVkLCBlcnJu bzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgImxpc3RlbigpIHdpdGgg aW52YWxpZCBzb2NrZXQgLSBFTk9UU09DSyIpOwpAQCAtMjU1LDEyICsyNTUsMTIgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKmxpc3RlbigpIFRFU1QxNTpsaXN0ZW4gb24g YSBib3VuZCBzb2NrZXQsIHNob3VsZCBzdWNjZWVkICovCiAJZXJyb3IgPSBsaXN0ZW4oc2ssIDMp OwogCWlmIChlcnJvciA8IDApCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAibGlzdGVuKCkgb24g YSBib3VuZCBzb2NrZXQgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJsaXN0ZW4oKSBv biBhIGJvdW5kIHNvY2tldCAiCiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJu byk7CiAKIAl0c3RfcmVzbShUUEFTUywgImxpc3RlbigpIG9uIGEgYm91bmQgc29ja2V0IC0gU1VD Q0VTUyIpOwogCiAJY2xvc2Uoc2spOwogCi0JdHN0X2V4aXQoKTsKKwlyZXR1cm4gMDsKIH0KZGlm ZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9z b2Nrb3B0LmMgYi90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFf c29ja29wdC5jCmluZGV4IGIxMjMxM2IuLjVjN2VjYTkgMTAwNjQ0Ci0tLSBhL3Rlc3RjYXNlcy9u ZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV9zb2Nrb3B0LmMKKysrIGIvdGVzdGNh c2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX3NvY2tvcHQuYwpAQCAtMSw0 ICsxLDQgQEAKLS8qIFNDVFAga2VybmVsIHJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvbgorLyogU0NU UCBrZXJuZWwgSW1wbGVtZW50YXRpb24KICAqIENvcHlyaWdodCAoYykgMjAwMyBIZXdsZXR0LVBh Y2thcmQgRGV2ZWxvcG1lbnQgQ29tcGFueSwgTC5QCiAgKiAoQykgQ29weXJpZ2h0IElCTSBDb3Jw LiAyMDA0CiAgKgpAQCAtMzEsMTMgKzMxLDEzIEBACiAgKiBURVNUMjE6IGdldHNvY2tvcHQ6IFND VFBfQVNTT0NJTkZPCiAgKiBURVNUMjI6IHNldHNvY2tvcHQ6IFNDVFBfQVNTT0NJTkZPCiAgKgot ICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7Cisg KiBUaGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOwogICogeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YKICAqIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAqIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlv bikKICAqIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBs ZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0CisgKiBUaGUgU0NU UCBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0CiAgKiB3 aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQKICAqICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioKICAq IHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4KQEAgLTExMSw3ICsxMTEsNyBAQCBpbnQgbWFpbih2b2lkKQogCS8qc2V0c29ja29w dCgpIFRFU1QxOiBCYWQgc29ja2V0IGRlc2NyaXB0b3IgRUJBREYsIEV4cGVjdGVkIGVycm9yICov CiAJZXJyb3IgPSBzZXRzb2Nrb3B0KC0xLCBJUFBST1RPX1NDVFAsIDAsIDAsIDApOwogCWlmIChl cnJvciAhPSAtMSB8fCBlcnJubyAhPSBFQkFERikKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJz ZXRzb2Nrb3B0IHdpdGggYSBiYWQgc29ja2V0ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0 LCAic2V0c29ja29wdCB3aXRoIGEgYmFkIHNvY2tldCAiCiAJCQkgImRlc2NyaXB0b3IgZXJyb3I6 JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAic2V0c29j a29wdCgpIHdpdGggYSBiYWQgc29ja2V0IGRlc2NyaXB0b3IgLSBFQkFERiIpOwpAQCAtMTE5LDcg KzExOSw3IEBAIGludCBtYWluKHZvaWQpCiAJLypzZXRzb2Nrb3B0KCkgVEVTVDI6IEludmFsaWQg c29ja2V0IEVOT1RTT0NLLCBFeHBlY3RlZCBlcnJvciAqLwogCWVycm9yID0gc2V0c29ja29wdCgw LCBJUFBST1RPX1NDVFAsIDAsIDAsIDApOwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBF Tk9UU09DSykKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJzZXRzb2Nrb3B0IHdpdGggYW4gaW52 YWxpZCBzb2NrZXQgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzZXRzb2Nrb3B0IHdp dGggYW4gaW52YWxpZCBzb2NrZXQgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwg ZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJzZXRzb2Nrb3B0KCkgd2l0aCBhbiBpbnZhbGlk IHNvY2tldCAtIEVOT1RTT0NLIik7CkBAIC0xMjcsNyArMTI3LDcgQEAgaW50IG1haW4odm9pZCkK IAkvKnNldHNvY2tvcHQoKSBURVNUMzogSW52YWxpZCBsZXZlbCBFTk9QUk9UT09QVCwgRXhwZWN0 ZWQgZXJyb3IgKi8KIAllcnJvciA9IHNldHNvY2tvcHQoc2ssIC0xLCBTQ1RQX1JUT0lORk8sIDAs IDApOwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFTk9QUk9UT09QVCkKLQkJdHN0X2Jy a20oVEJST0ssIE5VTEwsICJzZXRzb2Nrb3B0IHdpdGggaW52YWxpZCBsZXZlbCAiCisJCXRzdF9i cmttKFRCUk9LLCB0c3RfZXhpdCwgInNldHNvY2tvcHQgd2l0aCBpbnZhbGlkIGxldmVsICIKIAkJ CSAiZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNT LCAic2V0c29ja29wdCgpIHdpdGggYW4gaW52YWxpZCBsZXZlbCAtIEVOT1BST1RPT1BUIik7CkBA IC0xMzcsNyArMTM3LDcgQEAgaW50IG1haW4odm9pZCkKIAkJCSAgIChjb25zdCBzdHJ1Y3Qgc2N0 cF9ydG9pbmZvICopLTEsCiAJCQkgICBzaXplb2Yoc3RydWN0IHNjdHBfcnRvaW5mbykpOwogCWlm IChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFRkFVTFQpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxM LCAic2V0c29ja29wdCB3aXRoIGludmFsaWQgb3B0aW9uICIKKwkJdHN0X2Jya20oVEJST0ssIHRz dF9leGl0LCAic2V0c29ja29wdCB3aXRoIGludmFsaWQgb3B0aW9uICIKIAkJCSAiYnVmZmVyIGVy cm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNl dHNvY2tvcHQoKSB3aXRoIGludmFsaWQgb3B0aW9uIGJ1ZmZlciAtIEVGQVVMVCIpOwpAQCAtMTQ1 LDcgKzE0NSw3IEBAIGludCBtYWluKHZvaWQpCiAJLypzZXRzb2Nrb3B0KCkgVEVTVDU6IEludmFs aWQgb3B0aW9uIE5hbWUgRU9QTk9UU1VQUCwgRXhwZWN0ZWQgZXJyb3IgKi8KIAllcnJvciA9IHNl dHNvY2tvcHQoc2ssIElQUFJPVE9fU0NUUCwgU0NUUF9BVVRPQ0xPU0UsIDAsIDApOwogCWlmIChl cnJvciAhPSAtMSB8fCBlcnJubyAhPSBFT1BOT1RTVVBQKQotCQl0c3RfYnJrbShUQlJPSywgTlVM TCwgInNldHNvY2tvcHQgd2l0aCBpbnZhbGlkIG9wdGlvbiAiCisJCXRzdF9icmttKFRCUk9LLCB0 c3RfZXhpdCwgInNldHNvY2tvcHQgd2l0aCBpbnZhbGlkIG9wdGlvbiAiCiAJCQkgIm5hbWUgZXJy b3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAic2V0 c29ja29wdCgpIHdpdGggaW52YWxpZCBvcHRpb24gbmFtZSAtIEVPUE5PVFNVUFAiKTsKQEAgLTE1 Myw3ICsxNTMsNyBAQCBpbnQgbWFpbih2b2lkKQogCS8qZ2V0c29ja29wdCgpIFRFU1Q2OiBCYWQg c29ja2V0IGRlc2NyaXB0b3IgRUJBREYsIEV4cGVjdGVkIGVycm9yICovCiAJZXJyb3IgPSBnZXRz b2Nrb3B0KC0xLCBJUFBST1RPX1NDVFAsIDAsIDAsIDApOwogCWlmIChlcnJvciAhPSAtMSB8fCBl cnJubyAhPSBFQkFERikKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJnZXRzb2Nrb3B0IHdpdGgg YSBiYWQgc29ja2V0ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiZ2V0c29ja29wdCB3 aXRoIGEgYmFkIHNvY2tldCAiCiAJCQkgImRlc2NyaXB0b3IgZXJyb3I6JWQsIGVycm5vOiVkIiwg ZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAiZ2V0c29ja29wdCgpIHdpdGggYSBi YWQgc29ja2V0IGRlc2NyaXB0b3IgLSBFQkFERiIpOwpAQCAtMTYxLDcgKzE2MSw3IEBAIGludCBt YWluKHZvaWQpCiAJLypnZXRzb2Nrb3B0KCkgVEVTVDc6IEludmFsaWQgc29ja2V0IEVOT1RTT0NL LCBFeHBlY3RlZCBlcnJvciAqLwogCWVycm9yID0gZ2V0c29ja29wdCgwLCBJUFBST1RPX1NDVFAs IDAsIDAsIDApOwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFTk9UU09DSykKLQkJdHN0 X2Jya20oVEJST0ssIE5VTEwsICJnZXRzb2Nrb3B0IHdpdGggYW4gaW52YWxpZCBzb2NrZXQgIgor CQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJnZXRzb2Nrb3B0IHdpdGggYW4gaW52YWxpZCBz b2NrZXQgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0 X3Jlc20oVFBBU1MsICJnZXRzb2Nrb3B0KCkgd2l0aCBhbiBpbnZhbGlkIHNvY2tldCAtIEVOT1RT T0NLIik7CkBAIC0xNzMsNyArMTczLDcgQEAgaW50IG1haW4odm9pZCkKIAogCWVycm9yID0gZ2V0 c29ja29wdChzaywgLTEsIFNDVFBfUlRPSU5GTywgMCwgMCk7CiAJaWYgKGVycm9yICE9IC0xIHx8 IGVycm5vICE9IEVOT1BST1RPT1BUKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImdldHNvY2tv cHQgd2l0aCBpbnZhbGlkIGxldmVsICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiZ2V0 c29ja29wdCB3aXRoIGludmFsaWQgbGV2ZWwgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBl cnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJnZXRzb2Nrb3B0KCkgd2l0aCBhbiBp bnZhbGlkIGxldmVsIC0gRU5PUFJPVE9PUFQiKTsKQEAgLTE4NCw3ICsxODQsNyBAQCBpbnQgbWFp bih2b2lkKQogCWVycm9yID0gZ2V0c29ja29wdChzaywgSVBQUk9UT19TQ1RQLCBTQ1RQX1JUT0lO Rk8sCiAJCQkgICAoc3RydWN0IHNjdHBfcnRvaW5mbyAqKS0xLCAmbGVuKTsKIAlpZiAoZXJyb3Ig IT0gLTEgfHwgZXJybm8gIT0gRUZBVUxUKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImdldHNv Y2tvcHQgd2l0aCBpbnZhbGlkIG9wdGlvbiAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwg ImdldHNvY2tvcHQgd2l0aCBpbnZhbGlkIG9wdGlvbiAiCiAJCQkgImJ1ZmZlciBlcnJvcjolZCwg ZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJnZXRzb2Nrb3B0 KCkgd2l0aCBpbnZhbGlkIG9wdGlvbiBidWZmZXIgLSBFRkFVTFQiKTsKQEAgLTE5Miw3ICsxOTIs NyBAQCBpbnQgbWFpbih2b2lkKQogCS8qZ2V0c29ja29wdCgpIFRFU1Q5OiBJbnZhbGlkIG9wdGlv biBOYW1lIEVPUE5PVFNVUFAsIEV4cGVjdGVkIGVycm9yICovCiAJZXJyb3IgPSBnZXRzb2Nrb3B0 KHNrLCBJUFBST1RPX1NDVFAsIFNDVFBfQVVUT0NMT1NFLCAmZ3J0aW5mbywgJmxlbik7CiAJaWYg KGVycm9yICE9IC0xIHx8IGVycm5vICE9IEVPUE5PVFNVUFApCi0JCXRzdF9icmttKFRCUk9LLCBO VUxMLCAiZ2V0c29ja29wdCB3aXRoIGludmFsaWQgb3B0aW9uICIKKwkJdHN0X2Jya20oVEJST0ss IHRzdF9leGl0LCAiZ2V0c29ja29wdCB3aXRoIGludmFsaWQgb3B0aW9uICIKIAkJCSAibmFtZSBl cnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJn ZXRzb2Nrb3B0KCkgd2l0aCBpbnZhbGlkIG9wdGlvbiBuYW1lIC0gRU9QTk9UU1VQUCIpOwpAQCAt MjMwLDcgKzIzMCw3IEBAIGludCBtYWluKHZvaWQpCiAJICAgIHNpbm1zZy5zaW5pdF9tYXhfaW5z dHJlYW1zICE9IGdpbm1zZy5zaW5pdF9tYXhfaW5zdHJlYW1zICYmCiAJICAgIHNpbm1zZy5zaW5p dF9tYXhfYXR0ZW1wdHMgIT0gZ2lubXNnLnNpbml0X21heF9hdHRlbXB0cyAmJgogCSAgICBzaW5t c2cuc2luaXRfbWF4X2luaXRfdGltZW8gIT0gZ2lubXNnLnNpbml0X21heF9pbml0X3RpbWVvKQot CQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNldHNvY2tvcHQvZ2V0c29ja29wdCBTQ1RQX0lOSVRN U0cgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzZXRzb2Nrb3B0L2dldHNvY2tvcHQg U0NUUF9JTklUTVNHICIKIAkJCSAiY29tcGFyZSBmYWlsZWQiKTsKIAogCXRzdF9yZXNtKFRQQVNT LCAic2V0c29ja29wdCgpIFNDVFBfSU5JVE1TRyAtIFNVQ0NFU1MiKTsKQEAgLTI0Myw3ICsyNDMs NyBAQCBpbnQgbWFpbih2b2lkKQogCSAgICBzaW5tc2cuc2luaXRfbWF4X2luc3RyZWFtcyA9PSBn aW5tc2cuc2luaXRfbWF4X2luc3RyZWFtcyAmJgogCSAgICBzaW5tc2cuc2luaXRfbWF4X2F0dGVt cHRzID09IGdpbm1zZy5zaW5pdF9tYXhfYXR0ZW1wdHMgJiYKIAkgICAgc2lubXNnLnNpbml0X21h eF9pbml0X3RpbWVvID09IGdpbm1zZy5zaW5pdF9tYXhfaW5pdF90aW1lbykKLQkJdHN0X2Jya20o VEJST0ssIE5VTEwsICJzZXRzb2Nrb3B0L2dldHNvY2tvcHQgU0NUUF9JTklUTVNHICIKKwkJdHN0 X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2V0c29ja29wdC9nZXRzb2Nrb3B0IFNDVFBfSU5JVE1T RyAiCiAJCQkgInVuZXhwZWN0ZWQgY29tcGFyZSBzdWNjZXNzIik7CiAKIAkvKiBTT19MSU5HRVIg VGVzdCB3aXRoIGxfb25mZiA9IDAgYW5kIGxfbGluZ2VyID0gMCAqLwpAQCAtMjYwLDcgKzI2MCw3 IEBAIGludCBtYWluKHZvaWQpCiAJLyogVEVTVDEyOiBUZXN0IGNhc2UgZm9yIHNldHNvY2tvcHQg U09fTElOR0VSICovCiAJZXJyb3IgPSBzZXRzb2Nrb3B0KHNrMiwgU09MX1NPQ0tFVCwgU09fTElO R0VSLCAmc2xpbmdlciwgbGVuKTsKIAlpZiAoZXJyb3IgPCAwKQotCQl0c3RfYnJrbShUQlJPSywg TlVMTCwgInNldHNvY2tvcHQgU09fTElOR0VSICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0 LCAic2V0c29ja29wdCBTT19MSU5HRVIgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJv ciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJzZXRzb2Nrb3B0KCkgU09fTElOR0VSIC0g U1VDQ0VTUyIpOwpAQCAtMjY4LDE0ICsyNjgsMTQgQEAgaW50IG1haW4odm9pZCkKIAkvKiBURVNU MTM6IFRlc3QgY2FzZSBmb3IgZ2V0c29ja29wdCBTT19MSU5HRVIgKi8KIAllcnJvciA9IGdldHNv Y2tvcHQoc2syLCBTT0xfU09DS0VULCBTT19MSU5HRVIsICZnbGluZ2VyLCAmbGVuKTsKIAlpZiAo ZXJyb3IgPCAwKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImdldHNvY2tvcHQgU09fTElOR0VS ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiZ2V0c29ja29wdCBTT19MSU5HRVIgIgog CQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBB U1MsICJnZXRzb2Nrb3B0KCkgU09fTElOR0VSIC0gU1VDQ0VTUyIpOwogCiAJaWYgKHNsaW5nZXIu bF9vbm9mZiAhPSBnbGluZ2VyLmxfb25vZmYgfHwKIAkgICAgc2xpbmdlci5sX2xpbmdlciAhPSBn bGluZ2VyLmxfbGluZ2VyKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNldHNvY2tvcHQvZ2V0 c29ja29wdCBTT19MSU5HRVIgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzZXRzb2Nr b3B0L2dldHNvY2tvcHQgU09fTElOR0VSICIKIAkJCSAiY29tcGFyZSBmYWlsZWQiKTsKIAogCS8q Rmlyc3QgZ2V0cyB0aGUgZGVmYXVsdCBTT19SQ1ZCVUYgdmFsdWUgYW5kIGNvbWFwcmVzIHdpdGgg dGhlCkBAIC0yODQsNyArMjg0LDcgQEAgaW50IG1haW4odm9pZCkKIAkvKiBURVNUMTQ6IFRlc3Qg Y2FzZSBmb3IgZ2V0c29ja29wdCBTT19SQ1ZCVUYgKi8KIAllcnJvciA9IGdldHNvY2tvcHQoc2sy LCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICZyY3ZidWZfdmFsX2dldCwgJmxlbik7CiAJaWYgKGVy cm9yIDwgMCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJnZXRzb2Nrb3B0IFNPX1JDVkJVRiAi CisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImdldHNvY2tvcHQgU09fUkNWQlVGICIKIAkJ CSAiZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNT LCAiZ2V0c29ja29wdCgpIFNPX1JDVkJVRiAtIFNVQ0NFU1MiKTsKQEAgLTI5Myw3ICsyOTMsNyBA QCBpbnQgbWFpbih2b2lkKQogCS8qIFRFU1QxNTogVGVzdCBjYXNlIGZvciBnZXRzb2Nrb3B0IFND VFBfU1RBVFVTICovCiAJZXJyb3IgPSBnZXRzb2Nrb3B0KHNrMiwgSVBQUk9UT19TQ1RQLCBTQ1RQ X1NUQVRVUywgJmdzdGF0dXMsICZsZW4pOwogCWlmIChlcnJvciA8IDApCi0JCXRzdF9icmttKFRC Uk9LLCBOVUxMLCAiZ2V0c29ja29wdCBTQ1RQX1NUQVRVUyAiCisJCXRzdF9icmttKFRCUk9LLCB0 c3RfZXhpdCwgImdldHNvY2tvcHQgU0NUUF9TVEFUVVMgIgogCQkJICJlcnJvcjolZCwgZXJybm86 JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJnZXRzb2Nrb3B0KCkgU0NU UF9TVEFUVVMgLSBTVUNDRVNTIik7CkBAIC0zMDEsMzAgKzMwMSwzMCBAQCBpbnQgbWFpbih2b2lk KQogCS8qIFJlZHVjaW5nIHRoZSBTT19SQ1ZCVUYgdmFsdWUgdXNpbmcgc2V0c29ja29wdCgpICov CiAJLypNaW5pbXVtIHZhbHVlIGlzIDEyOCBhbmQgaGVuY2UgSSBhbSB1c2luZyBpdCAqLwogCWxl biA9IHNpemVvZihpbnQpOwotCXJjdmJ1Zl92YWxfc2V0ID0gMTI4OworCXJjdmJ1Zl92YWxfc2V0 ID0gMjA0ODsKIAkvKiBURVNUMTY6IFRlc3QgY2FzZSBmb3Igc2V0c29ja29wdCBTT19SQ1ZCVUYg Ki8KIAllcnJvciA9IHNldHNvY2tvcHQoc2syLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICZyY3Zi dWZfdmFsX3NldCwgbGVuKTsKIAlpZiAoZXJyb3IgPCAwKQotCQl0c3RfYnJrbShUQlJPSywgTlVM TCwgInNldHNvY2tvcHQgU09fUkNWQlVGICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAi c2V0c29ja29wdCBTT19SQ1ZCVUYgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwg ZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJzZXRzb2Nrb3B0KCkgU09fUkNWQlVGIC0gU1VD Q0VTUyIpOwogCiAJZXJyb3IgPSBnZXRzb2Nrb3B0KHNrMiwgU09MX1NPQ0tFVCwgU09fUkNWQlVG LCAmcmN2YnVmX3ZhbF9nZXQsICZsZW4pOwogCWlmIChlcnJvciA8IDApCi0JCXRzdF9icmttKFRC Uk9LLCBOVUxMLCAiZ2V0c29ja29wdCBTT19SQ1ZCVUYgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0 X2V4aXQsICJnZXRzb2Nrb3B0IFNPX1JDVkJVRiAiCiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIs IGVycm9yLCBlcnJubyk7CiAKIAlpZiAoKDIgKiByY3ZidWZfdmFsX3NldCkgIT0gcmN2YnVmX3Zh bF9nZXQpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiQ29tcGFyaXNvbiBmYWlsZWQ6U2V0IHZh bHVlIGFuZCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgIkNvbXBhcmlzb24gZmFpbGVk OlNldCB2YWx1ZSBhbmQgIgogCQkJICJnb3QgdmFsdWUgZGlmZmVycyBTZXQgVmFsdWU9JWQgR2V0 IFZhbHVlPSVkIiwKIAkJCSAoMiAqIHJjdmJ1Zl92YWxfc2V0KSwgcmN2YnVmX3ZhbF9nZXQpOwog Ci0Jc25kYnVmX3ZhbF9zZXQgPSAxMDI0OworCXNuZGJ1Zl92YWxfc2V0ID0gMjA0ODsKIAkvKiBU RVNUMTc6IFRlc3QgY2FzZSBmb3Igc2V0c29ja29wdCBTT19TTkRCVUYgKi8KIAllcnJvciA9IHNl dHNvY2tvcHQoc2syLCBTT0xfU09DS0VULCBTT19TTkRCVUYsICZzbmRidWZfdmFsX3NldCwgbGVu KTsKIAlpZiAoZXJyb3IgPCAwKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNldHNvY2tvcHQg U09fU05EQlVGICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2V0c29ja29wdCBTT19T TkRCVUYgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0 X3Jlc20oVFBBU1MsICJzZXRzb2Nrb3B0KCkgU09fU05EQlVGIC0gU1VDQ0VTUyIpOwpAQCAtMzMy LDEzICszMzIsMTMgQEAgaW50IG1haW4odm9pZCkKIAkvKiBURVNUMTg6IFRlc3QgY2FzZSBmb3Ig Z2V0c29ja29wdCBTT19TTkRCVUYgKi8KIAllcnJvciA9IGdldHNvY2tvcHQoc2syLCBTT0xfU09D S0VULCBTT19TTkRCVUYsICZzbmRidWZfdmFsX2dldCwgJmxlbik7CiAJaWYgKGVycm9yIDwgMCkK LQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJnZXRzb2Nrb3B0IFNPX1NOREJVRiAiCisJCXRzdF9i cmttKFRCUk9LLCB0c3RfZXhpdCwgImdldHNvY2tvcHQgU09fU05EQlVGICIKIAkJCSAiZXJyb3I6 JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAiZ2V0c29j a29wdCgpIFNPX1NOREJVRiAtIFNVQ0NFU1MiKTsKIAogCWlmICgoMiAqIHNuZGJ1Zl92YWxfc2V0 KSAhPSBzbmRidWZfdmFsX2dldCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJDb21wYXJpc29u IGZhaWxlZDpTZXQgdmFsdWUgYW5kICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiQ29t cGFyaXNvbiBmYWlsZWQ6U2V0IHZhbHVlIGFuZCAiCiAJCQkgImdvdCB2YWx1ZSBkaWZmZXJzIFNl dCBWYWx1ZT0lZCBHZXQgVmFsdWU9JWRcbiIsCiAJCQkgKDIgKiBzbmRidWZfdmFsX3NldCksIHNu ZGJ1Zl92YWxfZ2V0KTsKIApAQCAtMzQ4LDcgKzM0OCw3IEBAIGludCBtYWluKHZvaWQpCiAJZXJy b3IgPSBnZXRzb2Nrb3B0KHNrMiwgSVBQUk9UT19TQ1RQLCBTQ1RQX1BSSU1BUllfQUREUiwgJmdw cmltYWRkciwKIAkJCSAgICZsZW4pOwogCWlmIChlcnJvciA8IDApCi0JCXRzdF9icmttKFRCUk9L LCBOVUxMLCAiZ2V0c29ja29wdCBTQ1RQX1BSSU1BUllfQUREUiAiCisJCXRzdF9icmttKFRCUk9L LCB0c3RfZXhpdCwgImdldHNvY2tvcHQgU0NUUF9QUklNQVJZX0FERFIgIgogCQkJICJlcnJvcjol ZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJnZXRzb2Nr b3B0KCkgU0NUUF9QUklNQVJZX0FERFIgLSBTVUNDRVNTIik7CkBAIC0zNTcsNyArMzU3LDcgQEAg aW50IG1haW4odm9pZCkKIAlpZiAoaHRvbnMoZ2FkZHItPnNpbl9wb3J0KSAhPSBsc3RuX2FkZHIu c2luX3BvcnQgJiYKIAkgICAgZ2FkZHItPnNpbl9mYW1pbHkgIT0gbHN0bl9hZGRyLnNpbl9mYW1p bHkgJiYKIAkgICAgZ2FkZHItPnNpbl9hZGRyLnNfYWRkciAhPSBsc3RuX2FkZHIuc2luX2FkZHIu c19hZGRyKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImdldHNvY2tvcHQgU0NUUF9QUklNQVJZ X0FERFIgdmFsdWUgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJnZXRzb2Nrb3B0IFND VFBfUFJJTUFSWV9BRERSIHZhbHVlICIKIAkJCSAibWlzbWF0Y2giKTsKIAogCW1lbWNweSgmc3By aW1hZGRyLCAmZ3ByaW1hZGRyLCBzaXplb2Yoc3RydWN0IHNjdHBfcHJpbSkpOwpAQCAtMzY2LDcg KzM2Niw3IEBAIGludCBtYWluKHZvaWQpCiAJZXJyb3IgPSBzZXRzb2Nrb3B0KHNrMiwgSVBQUk9U T19TQ1RQLCBTQ1RQX1BSSU1BUllfQUREUiwgJnNwcmltYWRkciwKIAkJCSAgIGxlbik7CiAJaWYg KGVycm9yIDwgMCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJzZXRzb2Nrb3B0IFNDVFBfUFJJ TUFSWV9BRERSICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2V0c29ja29wdCBTQ1RQ X1BSSU1BUllfQUREUiAiCiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7 CiAKIAl0c3RfcmVzbShUUEFTUywgInNldHNvY2tvcHQoKSBTQ1RQX1BSSU1BUllfQUREUiAtIFNV Q0NFU1MiKTsKQEAgLTM3Nyw3ICszNzcsNyBAQCBpbnQgbWFpbih2b2lkKQogCWVycm9yID0gZ2V0 c29ja29wdChzazIsIElQUFJPVE9fU0NUUCwgU0NUUF9BU1NPQ0lORk8sICZnYXNzb2NwYXJhbXMs CiAJCQkgICAmbGVuKTsKIAlpZiAoZXJyb3IgPCAwKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwg ImdldHNvY2tvcHQgU0NUUF9BU1NPQ0lORk8gIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQs ICJnZXRzb2Nrb3B0IFNDVFBfQVNTT0NJTkZPICIKIAkJCSAiZXJyb3I6JWQsIGVycm5vOiVkIiwg ZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAiZ2V0c29ja29wdCgpIFNDVFBfQVNT T0NJTkZPIC0gU1VDQ0VTUyIpOwpAQCAtMzkwLDE4ICszOTAsMTggQEAgaW50IG1haW4odm9pZCkK IAllcnJvciA9IHNldHNvY2tvcHQoc2syLCBJUFBST1RPX1NDVFAsIFNDVFBfQVNTT0NJTkZPLCAm c2Fzc29jcGFyYW1zLAogCQkJICAgbGVuKTsKIAlpZiAoZXJyb3IgPCAwKQotCQl0c3RfYnJrbShU QlJPSywgTlVMTCwgInNldHNvY2tvcHQgU0NUUF9BU1NPQ0lORk8gIgorCQl0c3RfYnJrbShUQlJP SywgdHN0X2V4aXQsICJzZXRzb2Nrb3B0IFNDVFBfQVNTT0NJTkZPICIKIAkJCSAiZXJyb3I6JWQs IGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCWVycm9yID0gZ2V0c29ja29wdChzazIsIElQ UFJPVE9fU0NUUCwgU0NUUF9BU1NPQ0lORk8sICZnYXNzb2NwYXJhbXMsCiAJCQkgICAmbGVuKTsK IAlpZiAoZXJyb3IgPCAwKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImdldHNvY2tvcHQgU0NU UF9BU1NPQ0lORk8gIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJnZXRzb2Nrb3B0IFND VFBfQVNTT0NJTkZPICIKIAkJCSAiZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsK IAogCWlmIChzYXNzb2NwYXJhbXMuc2Fzb2NfYXNvY21heHJ4dCAhPSBnYXNzb2NwYXJhbXMuc2Fz b2NfYXNvY21heHJ4dCB8fAogCSAgICBzYXNzb2NwYXJhbXMuc2Fzb2NfY29va2llX2xpZmUgIT0g Z2Fzc29jcGFyYW1zLnNhc29jX2Nvb2tpZV9saWZlKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwg ImdldHNvY2tvcHQgU0NUUF9BU1NPQ0lORk8gdmFsdWUgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0 X2V4aXQsICJnZXRzb2Nrb3B0IFNDVFBfQVNTT0NJTkZPIHZhbHVlICIKIAkJCSAibWlzbWF0Y2gi KTsKIAl0c3RfcmVzbShUUEFTUywgInNldHNvY2tvcHQoKSBTQ1RQX0FTU09DSU5GTyAtIFNVQ0NF U1MiKTsKIApAQCAtNDA5LDUgKzQwOSw1IEBAIGludCBtYWluKHZvaWQpCiAJY2xvc2Uoc2sxKTsK IAljbG9zZShhY3B0X3NrKTsKIAotCXRzdF9leGl0KCk7CisJcmV0dXJuIDA7CiB9CmRpZmYgLS1n aXQgYS90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfdGhyZWFk cy5jIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfMV90b18xX3RocmVh ZHMuYwppbmRleCBkMDllYzA5Li5hYzJiMWEyIDEwMDY0NAotLS0gYS90ZXN0Y2FzZXMvbmV0d29y ay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF8xX3RvXzFfdGhyZWFkcy5jCisrKyBiL3Rlc3RjYXNlcy9u ZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0XzFfdG9fMV90aHJlYWRzLmMKQEAgLTEsNCArMSw0 IEBACi0vKiBTQ1RQIGtlcm5lbCByZWZlcmVuY2UgSW1wbGVtZW50YXRpb24KKy8qIFNDVFAga2Vy bmVsIEltcGxlbWVudGF0aW9uCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDMgSGV3bGV0dC1QYWNrYXJk IERldmVsb3BtZW50IENvbXBhbnksIEwuUAogICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAw NAogICoKQEAgLTYsMTMgKzYsMTMgQEAKICAqIFRIUkVBRF9TTkRfUkNWX0xPT1BTID0gMTAgbWFu eSB0aW1lcy4gVG8gY2hhbmdlIHRoZSBudW1iZXIgb2YgdGhyZWFkcwogICogY2hhbmdlIHRoZSBU SFJFQURTIHZhbHVlbiBhbmQgbG9vcCBjaGFuZ2UgdGhlIFRIUkVBRF9TTkRfUkNWX0xPT1BTLgog ICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJl OworICogVGhlIFNDVFAgaW1wbGVtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsKICAqIHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mCiAg KiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAgKiB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBv cHRpb24pCiAgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqCi0gKiBUaGUgU0NUUCByZWZlcmVuY2Ug aW1wbGVtZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdAorICogVGhl IFNDVFAgaW1wbGVtZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdAog ICogd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkCiAgKiAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioq CiAgKiB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNs dWRlIDxuZXRpbmV0L3NjdHAuaD4KICNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0jaW5jbHVkZSA8c3Rk aW50Lmg+CiAjaW5jbHVkZSA8bGludXgvc29ja2V0Lmg+CiAjaW5jbHVkZSA8c2N0cHV0aWwuaD4K IApAQCAtNjQsNyArNjMsNyBAQCBpbnQgYWNwdF9zazsKIHN0cnVjdCBzb2NrYWRkcl9pbiBjb25u X2FkZHI7CiBjaGFyICptZXNzYWdlID0gImhlbGxvLCB3b3JsZCFcbiI7CiAKLXZvaWQgdF9yZWN2 KGludCBpZCkKK3ZvaWQgdF9yZWN2KHZvaWQpCiB7CiAJaW50IGNudDsKIAlzdHJ1Y3QgbXNnaGRy IGlubWVzc2FnZTsKQEAgLTg3LDE4ICs4NiwxNSBAQCB2b2lkIHRfcmVjdihpbnQgaWQpCiAJCQkg ICAgMCwgMCk7CiB9CiAKLXZvaWQgdF9zZW5kKGludCBpZCkKK3ZvaWQgdF9zZW5kKHZvaWQpCiB7 CiAJc3RydWN0IG1zZ2hkciBvdXRtZXNzYWdlOwogCXN0cnVjdCBzY3RwX3NuZHJjdmluZm8gKnNp bmZvOwotCWNoYXIgKmJ1ZmZlcl9zbmQ7CiAJc3RydWN0IGNtc2doZHIgKmNtc2c7CiAJc3RydWN0 IGlvdmVjIG91dF9pb3Y7CiAJY2hhciBvdXRjbXNnW0NNU0dfU1BBQ0Uoc2l6ZW9mKHNjdHBfY21z Z19kYXRhX3QpKV07CiAKIAltZW1zZXQoJm91dG1lc3NhZ2UsIDAsIHNpemVvZihvdXRtZXNzYWdl KSk7Ci0JYnVmZmVyX3NuZCA9IG1hbGxvYygxMDApOwotCiAJb3V0bWVzc2FnZS5tc2dfbmFtZSA9 ICZjb25uX2FkZHI7CiAJb3V0bWVzc2FnZS5tc2dfbmFtZWxlbiA9IHNpemVvZihjb25uX2FkZHIp OwogCW91dG1lc3NhZ2UubXNnX2lvdiA9ICZvdXRfaW92OwpAQCAtMTIxLDI1ICsxMTcsMjUgQEAg dm9pZCB0X3NlbmQoaW50IGlkKQogCXRlc3Rfc2VuZG1zZyhjbGllbnRfc2ssICZvdXRtZXNzYWdl LCAwLCBzdHJsZW4obWVzc2FnZSkgKyAxKTsKIH0KIAotdm9pZCAqcmVsYXkodm9pZCAqaWRfKQor dm9pZCAqcmVsYXkodm9pZCAqYXJnKQogewotCWludCBpZCA9ICh1aW50cHRyX3QpIGlkXzsKKwlp bnQgaWQgPSAqKGludCAqKWFyZzsKKwogCWlmIChpZCA9PSAwKSB7Ci0JCXRfc2VuZChpZCk7Ci0J fSBlbHNlIGlmIChpZCA9PSBUSFJFQURTIC0gMSkgewotCQl0X3NlbmQoaWQpOworCQl0X3NlbmQo KTsKIAl9IGVsc2UgewotCQl0X3JlY3YoaWQpOwotCQl0X3NlbmQoaWQpOworCQl0X3JlY3YoKTsK KwkJdF9zZW5kKCk7CiAJfQogCi0JcmV0dXJuIDA7CisJcHRocmVhZF9leGl0KE5VTEwpOwogfQog CiBpbnQgbWFpbih2b2lkKQogewogCiAJaW50IGNudCwgaTsKKwlpbnQgcHRoW1RIUkVBRFNdOwog CXB0aHJlYWRfdCB0aHJlYWRbVEhSRUFEU107CiAJaW50IHN0YXR1czsKIAlpbnQgZXhpdF9zdGF0 dXM7CkBAIC0xNzMsMjAgKzE2OSwyMiBAQCBpbnQgbWFpbih2b2lkKQogCWFjcHRfc2sgPSB0ZXN0 X2FjY2VwdChzZXJ2ZXJfc2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmc3ZyX2FkZHIsICZsZW4pOwog CiAJZm9yIChpID0gMDsgaSA8IFRIUkVBRF9TTkRfUkNWX0xPT1BTOyBpKyspIHsKLQkJZm9yIChj bnQgPSAxOyBjbnQgPCBUSFJFQURTOyBjbnQrKykgewotCQkJc3RhdHVzID0gcHRocmVhZF9jcmVh dGUoJnRocmVhZFtjbnRdLCAmYXR0ciwKLQkJCQkJCXJlbGF5LCAodm9pZCAqKSh1aW50cHRyX3Qp IGNudCk7CisJCWZvciAoY250ID0gMDsgY250IDwgVEhSRUFEUzsgY250KyspIHsKKwkJCXB0aFtj bnRdID0gY250OworCQkJc3RhdHVzID0KKwkJCSAgICBwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkW2Nu dF0sICZhdHRyLCByZWxheSwKKwkJCQkJICAgJnB0aFtjbnRdKTsKIAkJCWlmIChzdGF0dXMpCi0J CQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJwdGhyZWFkX2NyZWF0ZSAiCisJCQkJdHN0X2Jya20o VEJST0ssIHRzdF9leGl0LCAicHRocmVhZF9jcmVhdGUgIgogCQkJCQkgImZhaWxlZCBzdGF0dXM6 JWQsIGVycm5vOiVkIiwgc3RhdHVzLAogCQkJCQkgZXJybm8pOwogCQl9CiAKIAkJcHRocmVhZF9h dHRyX2Rlc3Ryb3koJmF0dHIpOwotCQlmb3IgKGNudCA9IDE7IGNudCA8IFRIUkVBRFM7IGNudCsr KSB7CisJCWZvciAoY250ID0gMDsgY250IDwgVEhSRUFEUzsgY250KyspIHsKIAkJCWV4aXRfc3Rh dHVzID0gcHRocmVhZF9qb2luKHRocmVhZFtjbnRdLCAmcmVzdWx0KTsKIAkJCWlmIChleGl0X3N0 YXR1cyA9PSAtMSkKLQkJCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInB0aHJlYWRfam9pbiAiCisJ CQkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAicHRocmVhZF9qb2luICIKIAkJCQkJICJUaHJl YWQgIyVkIGV4aXRlZCB3aXRoIHN0YXR1czolZCIsCiAJCQkJCSBjbnQsIGV4aXRfc3RhdHVzKTsK IAkJfQpAQCAtMTk1LDUgKzE5Myw1IEBAIGludCBtYWluKHZvaWQpCiAJdHN0X3Jlc20oVFBBU1Ms ICJzZW5kIGFuZCByZWNlaXZlIGRhdGEgYWNyb3NzIG11bHRpcGxlIHRocmVhZHMgLSAiCiAJCSAi U1VDQ0VTUyIpOwogCi0JcHRocmVhZF9leGl0KE5VTEwpOworCXJldHVybiAwOwogfQpkaWZmIC0t Z2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfYXNzb2NfYWJvcnQu YyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0X2Fzc29jX2Fib3J0LmMK aW5kZXggNTJkNWViZC4uOWM2OGI2MSAxMDA2NDQKLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvc2N0 cC9mdW5jX3Rlc3RzL3Rlc3RfYXNzb2NfYWJvcnQuYworKysgYi90ZXN0Y2FzZXMvbmV0d29yay9z Y3RwL2Z1bmNfdGVzdHMvdGVzdF9hc3NvY19hYm9ydC5jCkBAIC0xLDE3ICsxLDE3IEBACi0vKiBT Q1RQIGtlcm5lbCByZWZlcmVuY2UgSW1wbGVtZW50YXRpb24KKy8qIFNDVFAga2VybmVsIEltcGxl bWVudGF0aW9uCiAgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAxLCAyMDAzCiAgKiBDb3B5 cmlnaHQgKGMpIDE5OTktMjAwMCBDaXNjbywgSW5jLgogICogQ29weXJpZ2h0IChjKSAxOTk5LTIw MDEgTW90b3JvbGEsIEluYy4KICAqIENvcHlyaWdodCAoYykgMjAwMSBJbnRlbCBDb3JwLgogICog Q29weXJpZ2h0IChjKSAyMDAxIE5va2lhLCBJbmMuCiAgKgotICogVGhlIFNDVFAgcmVmZXJlbmNl IGltcGxlbWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7CisgKiBUaGUgU0NUUCBpbXBsZW1lbnRh dGlvbiBpcyBmcmVlIHNvZnR3YXJlOwogICogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YKICAqIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKICAqIGFueSBsYXRlciB2ZXJz aW9uLgogICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0CisgKiBUaGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0CiAgKiB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKICAqICAgICAgICAg ICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioKICAqIHdhcnJhbnR5IG9mIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KQEAgLTIwMyw3ICsy MDMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQllcnJvciA9IGdldHNv Y2tvcHQoc3ZyX3NrLCBTT0xfU0NUUCwgU0NUUF9TVEFUVVMsCiAJCQkJICAgJnN0YXR1cywgJnN0 YXR1c19sZW4pOwogCQlpZiAoZXJyb3IpCi0JCQl0c3RfYnJrbShUQlJPSywgTlVMTCwKKwkJCXRz dF9icmttKFRCUk9LLCB0c3RfZXhpdCwKIAkJCQkgImdldHNvY2tvcHQoU0NUUF9TVEFUVVMpOiAl cyIsCiAJCQkJIHN0cmVycm9yKGVycm5vKSk7CiAKQEAgLTIxNyw3ICsyMTcsNyBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQllcnJvciA9IGdldHNvY2tvcHQoc3ZyX3NrLCBT T0xfU0NUUCwgU0NUUF9TVEFUVVMsCiAJCQkJICAgJnN0YXR1cywgJnN0YXR1c19sZW4pOwogCQlp ZiAoKGVycm9yICE9IC0xKSAmJiAoZXJybm8gIT0gRUlOVkFMKSkKLQkJCXRzdF9icmttKFRCUk9L LCBOVUxMLAorCQkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LAogCQkJCSAiZ2V0c29ja29wdChT Q1RQX1NUQVRVUykgIgogCQkJCSAiZXJyb3I6JWQgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwog CX0KQEAgLTIyOSw4ICsyMjksOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog CQlpbm1lc3NhZ2UubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YoaW5jbXNnKTsKIAkJZXJyb3IgPSB0 ZXN0X3JlY3Ztc2coY2x0X3NrW2ldLCAmaW5tZXNzYWdlLCBNU0dfV0FJVEFMTCk7CiAJCXRlc3Rf Y2hlY2tfbXNnX25vdGlmaWNhdGlvbigmaW5tZXNzYWdlLCBlcnJvciwKLQkJCQkJICAgIHNpemVv ZihzdHJ1Y3Qgc2N0cF9hc3NvY19jaGFuZ2UpLAotCQkJCQkgICAgU0NUUF9BU1NPQ19DSEFOR0Us IFNDVFBfQ09NTV9MT1NUKTsKKwkJCQkJICAgIHNpemVvZihzdHJ1Y3Qgc2N0cF9hc3NvY19jaGFu Z2UpICsKKwkJCQkJICAgIDQsIFNDVFBfQVNTT0NfQ0hBTkdFLAorCQkJCQkgICAgU0NUUF9DT01N X0xPU1QpOwogCiAJCWNsb3NlKGNsdF9za1tpXSk7CiAJfQpAQCAtMjM4LDUgKzIzOSw1IEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJdHN0X3Jlc20oVFBBU1MsICJBQk9SVCBh biBhc3NvY2lhdGlvbiB1c2luZyBTQ1RQX0FCT1JUIik7CiAKIAkvKiBJbmRpY2F0ZSBzdWNjZXNz ZnVsIGNvbXBsZXRpb24uICAqLwotCXRzdF9leGl0KCk7CisJcmV0dXJuIDA7CiB9CmRpZmYgLS1n aXQgYS90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF9hc3NvY19zaHV0ZG93 bi5jIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfYXNzb2Nfc2h1dGRv d24uYwppbmRleCBhNzhlOTU1Li5iNWYxNjk2IDEwMDY0NAotLS0gYS90ZXN0Y2FzZXMvbmV0d29y ay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF9hc3NvY19zaHV0ZG93bi5jCisrKyBiL3Rlc3RjYXNlcy9u ZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0X2Fzc29jX3NodXRkb3duLmMKQEAgLTEsMTcgKzEs MTcgQEAKLS8qIFNDVFAga2VybmVsIHJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvbgorLyogU0NUUCBr ZXJuZWwgSW1wbGVtZW50YXRpb24KICAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDEsIDIw MDMKICAqIENvcHlyaWdodCAoYykgMTk5OS0yMDAwIENpc2NvLCBJbmMuCiAgKiBDb3B5cmlnaHQg KGMpIDE5OTktMjAwMSBNb3Rvcm9sYSwgSW5jLgogICogQ29weXJpZ2h0IChjKSAyMDAxIEludGVs IENvcnAuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDEgTm9raWEsIEluYy4KICAqCi0gKiBUaGUgU0NU UCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsKKyAqIFRoZSBTQ1RQ IGltcGxlbWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7CiAgKiB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZgogICogdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICogdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQogICogYW55 IGxhdGVyIHZlcnNpb24uCiAgKgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9u IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKKyAqIFRoZSBTQ1RQIGltcGxlbWVu dGF0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKICAqIHdpbGwgYmUgdXNl ZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAog ICogICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKgogICogd2FycmFudHkg b2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgpA QCAtMjA0LDcgKzIwNCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCWVy cm9yID0gZ2V0c29ja29wdChzdnJfc2ssIFNPTF9TQ1RQLCBTQ1RQX1NUQVRVUywKIAkJCQkgICAm c3RhdHVzLCAmc3RhdHVzX2xlbik7CiAJCWlmIChlcnJvcikKLQkJCXRzdF9icmttKFRCUk9LLCBO VUxMLAorCQkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LAogCQkJCSAiZ2V0c29ja29wdChTQ1RQ X1NUQVRVUyk6ICVzIiwKIAkJCQkgc3RyZXJyb3IoZXJybm8pKTsKIApAQCAtMjE4LDcgKzIxOCw3 IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCWVycm9yID0gZ2V0c29ja29w dChzdnJfc2ssIFNPTF9TQ1RQLCBTQ1RQX1NUQVRVUywKIAkJCQkgICAmc3RhdHVzLCAmc3RhdHVz X2xlbik7CiAJCWlmICgoZXJyb3IgIT0gLTEpICYmIChlcnJubyAhPSBFSU5WQUwpKQotCQkJdHN0 X2Jya20oVEJST0ssIE5VTEwsCisJCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsCiAJCQkJICJn ZXRzb2Nrb3B0KFNDVFBfU1RBVFVTKSAiCiAJCQkJICJlcnJvcjolZCBlcnJubzolZCIsIGVycm9y LCBlcnJubyk7CiAJfQpAQCAtMjQwLDUgKzI0MCw1IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pCiAJdHN0X3Jlc20oVFBBU1MsICJHcmFjZWZ1bCBzaHV0ZG93biBvZiBhc3NvY2lh dGlvbnMgdXNpbmcgU0NUUF9FT0YiKTsKIAogCS8qIEluZGljYXRlIHN1Y2Nlc3NmdWwgY29tcGxl dGlvbi4gICovCi0JdHN0X2V4aXQoKTsKKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3Rlc3Rj YXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0X2F1dG9jbG9zZS5jIGIvdGVzdGNhc2Vz L25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfYXV0b2Nsb3NlLmMKaW5kZXggZWY0MmZkYy4u ZTMyZWZkMSAxMDA2NDQKLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rl c3RfYXV0b2Nsb3NlLmMKKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rl c3RfYXV0b2Nsb3NlLmMKQEAgLTEsMTcgKzEsMTcgQEAKLS8qIFNDVFAga2VybmVsIHJlZmVyZW5j ZSBJbXBsZW1lbnRhdGlvbgorLyogU0NUUCBrZXJuZWwgSW1wbGVtZW50YXRpb24KICAqIChDKSBD b3B5cmlnaHQgSUJNIENvcnAuIDIwMDEsIDIwMDMKICAqIENvcHlyaWdodCAoYykgMTk5OS0yMDAw IENpc2NvLCBJbmMuCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSBNb3Rvcm9sYSwgSW5jLgog ICogQ29weXJpZ2h0IChjKSAyMDAxIEludGVsIENvcnAuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDEg Tm9raWEsIEluYy4KICAqCi0gKiBUaGUgU0NUUCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMg ZnJlZSBzb2Z0d2FyZTsKKyAqIFRoZSBTQ1RQIGltcGxlbWVudGF0aW9uIGlzIGZyZWUgc29mdHdh cmU7CiAgKiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZgogICogdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwg b3IgKGF0IHlvdXIgb3B0aW9uKQogICogYW55IGxhdGVyIHZlcnNpb24uCiAgKgotICogVGhlIFND VFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQKKyAqIFRoZSBTQ1RQIGltcGxlbWVudGF0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQKICAqIHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAogICogICAgICAgICAgICAgICAgICoqKioqKioqKioq KioqKioqKioqKioqKgogICogd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgpAQCAtNjMsNyArNjMsNyBAQCBpbnQgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCXNvY2thZGRyX3N0b3JhZ2VfdCBsb29wMSwgbG9vcDI7CiAJ c3RydWN0IG1zZ2hkciBpbm1lc3NhZ2UsIG91dG1lc3NhZ2U7CiAJc3RydWN0IGlvdmVjIGlvdiwg b3V0X2lvdjsKLQlpbnQgZXJyb3IsIGJ5dGVzX3NlbnQ7CisJaW50IGVycm9yOwogCWNoYXIgKmJp Z19idWZmZXI7CiAJY2hhciAqbWVzc2FnZSA9ICJoZWxsbywgd29ybGQhXG4iOwogCXVpbnQzMl90 IGF1dG9jbG9zZTsKQEAgLTExMSw3ICsxMTEsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCW91dG1lc3NhZ2UubXNnX2lvdmxlbiA9IDE7CiAJb3V0bWVzc2FnZS5tc2dfaW92 LT5pb3ZfYmFzZSA9IG1lc3NhZ2U7CiAJb3V0bWVzc2FnZS5tc2dfaW92LT5pb3ZfbGVuID0gc3Ry bGVuKG1lc3NhZ2UpICsgMTsKLQlieXRlc19zZW50ID0gdGVzdF9zZW5kbXNnKHNrMSwgJm91dG1l c3NhZ2UsIDAsIHN0cmxlbihtZXNzYWdlKSArIDEpOworCisJdGVzdF9zZW5kbXNnKHNrMSwgJm91 dG1lc3NhZ2UsIDAsIHN0cmxlbihtZXNzYWdlKSArIDEpOwogCiAJLyogSW5pdGlhbGl6ZSBpbm1l c3NhZ2UgZm9yIGFsbCByZWNlaXZlcy4gKi8KIAliaWdfYnVmZmVyID0gdGVzdF9tYWxsb2MoUkVB TExZX0JJRyk7CkBAIC0xNjEsNSArMTYyLDUgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKIAljbG9zZShzazIpOwogCiAJLyogSW5kaWNhdGUgc3VjY2Vzc2Z1bCBjb21wbGV0aW9u LiAgKi8KLQl0c3RfZXhpdCgpOworCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvdGVzdGNhc2Vz L25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfYmFzaWMuYyBiL3Rlc3RjYXNlcy9uZXR3b3Jr L3NjdHAvZnVuY190ZXN0cy90ZXN0X2Jhc2ljLmMKaW5kZXggYTVmNjBlMi4uMGMzYzE2YyAxMDA2 NDQKLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfYmFzaWMuYwor KysgYi90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF9iYXNpYy5jCkBAIC0x LDE3ICsxLDE3IEBACi0vKiBTQ1RQIGtlcm5lbCByZWZlcmVuY2UgSW1wbGVtZW50YXRpb24KKy8q IFNDVFAga2VybmVsIEltcGxlbWVudGF0aW9uCiAgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAy MDAxLCAyMDAzCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMCBDaXNjbywgSW5jLgogICogQ29w eXJpZ2h0IChjKSAxOTk5LTIwMDEgTW90b3JvbGEsIEluYy4KICAqIENvcHlyaWdodCAoYykgMjAw MSBJbnRlbCBDb3JwLgogICogQ29weXJpZ2h0IChjKSAyMDAxIE5va2lhLCBJbmMuCiAgKgotICog VGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7CisgKiBU aGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOwogICogeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YKICAqIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAqIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikK ICAqIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBsZW1l bnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0CisgKiBUaGUgU0NUUCBp bXBsZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0CiAgKiB3aWxs IGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQKICAqICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioKICAqIHdh cnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4KQEAgLTQwLDcgKzQwLDcgQEAKICAqICAgIFNyaWRoYXIgU2FtdWRyYWxhIDxzYW11ZHJh bGFAdXMuaWJtLmNvbT4KICAqLwogCi0vKiBUaGlzIGlzIGEgYmFzaWMgZnVuY3Rpb25hbCB0ZXN0 IGZvciB0aGUgU0NUUCBrZXJuZWwgcmVmZXJlbmNlCisvKiBUaGlzIGlzIGEgYmFzaWMgZnVuY3Rp b25hbCB0ZXN0IGZvciB0aGUgU0NUUCBrZXJuZWwKICAqIGltcGxlbWVudGF0aW9uIHN0YXRlIG1h Y2hpbmUuCiAgKi8KIApAQCAtMTUxLDcgKzE1MSw3IEBAIGludCBtYWluKHZvaWQpCiAJaW5tZXNz YWdlLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mKGluY21zZyk7CiAJZXJyb3IgPSByZWN2bXNnKHNr MiwgJmlubWVzc2FnZSwgTVNHX1dBSVRBTEwpOwogCWlmIChlcnJvciA+IDApCi0JCXRzdF9icmtt KFRCUk9LLCBOVUxMLCAicmVjdm1zZyBvbiBhIHNvY2tldCBuZWl0aGVyIgorCQl0c3RfYnJrbShU QlJPSywgdHN0X2V4aXQsICJyZWN2bXNnIG9uIGEgc29ja2V0IG5laXRoZXIiCiAJCQkgImxpc3Rl bmluZyBub3IgZXN0YWJsaXNoZWQgZXJyb3I6ICVkIiwgZXJyb3IpOwogCiAJdHN0X3Jlc20oVFBB U1MsICJyZWN2bXNnIG9uIGEgc29ja2V0IG5laXRoZXIgbGlzdGVuaW5nIG5vciAiCkBAIC0zMDIs NyArMzAyLDcgQEAgaW50IG1haW4odm9pZCkKIAlvdXRtZXNzYWdlLm1zZ19uYW1lbGVuID0gMDsK IAlieXRlc19zZW50ID0gc2VuZG1zZyhzazEsICZvdXRtZXNzYWdlLCBNU0dfTk9TSUdOQUwpOwog CWlmICgoYnl0ZXNfc2VudCA+IDApIHx8IChFUElQRSAhPSBlcnJubykpCi0JCXRzdF9icmttKFRC Uk9LLCBOVUxMLCAic2VuZG1zZyB3aXRoIE5VTEwgYXNzb2NpZCBhbmQgIgorCQl0c3RfYnJrbShU QlJPSywgdHN0X2V4aXQsICJzZW5kbXNnIHdpdGggTlVMTCBhc3NvY2lkIGFuZCAiCiAJCQkgIk5V TEwgbXNnX25hbWUgZXJyb3I6JWQgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jl c20oVFBBU1MsICJzZW5kbXNnIHdpdGggTlVMTCBhc3NvY2lkIGFuZCBOVUxMIG1zZ19uYW1lIik7 CkBAIC0zMTEsNyArMzExLDcgQEAgaW50IG1haW4odm9pZCkKIAlzaW5mby0+c2luZm9fYXNzb2Nf aWQgPSBhc3NvY2lkMjsKIAlieXRlc19zZW50ID0gc2VuZG1zZyhzazEsICZvdXRtZXNzYWdlLCBN U0dfTk9TSUdOQUwpOwogCWlmICgoYnl0ZXNfc2VudCA+IDApIHx8IChFUElQRSAhPSBlcnJubykp Ci0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2VuZG1zZyB3aXRoIGluY29ycmVjdCBhc3NvY2lk ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2VuZG1zZyB3aXRoIGluY29ycmVjdCBh c3NvY2lkICIKIAkJCSAiZXJyb3I6JWQgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0 X3Jlc20oVFBBU1MsICJzZW5kbXNnIHdpdGggaW5jb3JyZWN0IGFzc29jaWQiKTsKQEAgLTM0NCw3 ICszNDQsOCBAQCBpbnQgbWFpbih2b2lkKQogCiAJbl9sYWRkcnMgPSBzY3RwX2dldGxhZGRycyhz azEsIGFzc29jaWQxLCAmbGFkZHJzKTsKIAlpZiAobl9sYWRkcnMgPD0gMCkKLQkJdHN0X2Jya20o VEJST0ssIE5VTEwsICJzY3RwX2dldGxhZGRyczogJXMiLCBzdHJlcnJvcihlcnJubykpOworCQl0 c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzY3RwX2dldGxhZGRyczogJXMiLAorCQkJIHN0cmVy cm9yKGVycm5vKSk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNjdHBfZ2V0bGFkZHJzIik7CiAKQEAg LTM3Myw3ICszNzQsOCBAQCBpbnQgbWFpbih2b2lkKQogCiAJbl9wYWRkcnMgPSBzY3RwX2dldHBh ZGRycyhzazEsIGFzc29jaWQxLCAmcGFkZHJzKTsKIAlpZiAobl9wYWRkcnMgPD0gMCkKLQkJdHN0 X2Jya20oVEJST0ssIE5VTEwsICJzY3RwX2dldHBhZGRyczogJXMiLCBzdHJlcnJvcihlcnJubykp OworCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzY3RwX2dldHBhZGRyczogJXMiLAorCQkJ IHN0cmVycm9yKGVycm5vKSk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNjdHBfZ2V0cGFkZHJzIik7 CiAKQEAgLTQ0OSw1ICs0NTEsNSBAQCBpbnQgbWFpbih2b2lkKQogCWNsb3NlKHNrMik7CiAKIAkv KiBJbmRpY2F0ZSBzdWNjZXNzZnVsIGNvbXBsZXRpb24uICAqLwotCXRzdF9leGl0KCk7CisJcmV0 dXJuIDA7CiB9CmRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMv dGVzdF9jb25uZWN0LmMgYi90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF9j b25uZWN0LmMKaW5kZXggNmZjNzg4YS4uM2NmNWZiOSAxMDA2NDQKLS0tIGEvdGVzdGNhc2VzL25l dHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfY29ubmVjdC5jCisrKyBiL3Rlc3RjYXNlcy9uZXR3 b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0X2Nvbm5lY3QuYwpAQCAtMSwxNCArMSwxNCBAQAotLyog U0NUUCBrZXJuZWwgcmVmZXJlbmNlIEltcGxlbWVudGF0aW9uCisvKiBTQ1RQIGtlcm5lbCBJbXBs ZW1lbnRhdGlvbgogICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMiwgMjAwMwogICogQ29w eXJpZ2h0IChjKSAxOTk5LTIwMDEgTW90b3JvbGEsIEluYy4KICAqCi0gKiBUaGUgU0NUUCByZWZl cmVuY2UgaW1wbGVtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsKKyAqIFRoZSBTQ1RQIGltcGxl bWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7CiAgKiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZgogICogdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQogICogYW55IGxhdGVy IHZlcnNpb24uCiAgKgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKKyAqIFRoZSBTQ1RQIGltcGxlbWVudGF0aW9u IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKICAqIHdpbGwgYmUgdXNlZnVsLCBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAogICogICAg ICAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKgogICogd2FycmFudHkgb2YgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgpAQCAtNTcs MTIgKzU3LDEyIEBAIGludCBUU1RfQ05UID0gMDsKIGludCBtYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCiB7CiAJaW50IHN2cl9zaywgY2x0X3NrMSwgY2x0X3NrMiwgcGVlbG9mZl9zazsKLQlz Y3RwX2Fzc29jX3Qgc3ZyX2Fzc29jaWQxLCBzdnJfYXNzb2NpZDIsIGNsdF9hc3NvY2lkMSwgY2x0 X2Fzc29jaWQyOworCXNjdHBfYXNzb2NfdCBzdnJfYXNzb2NpZDE7CiAJc29ja2FkZHJfc3RvcmFn ZV90IHN2cl9sb29wLCBjbHRfbG9vcDEsIGNsdF9sb29wMiwgY2x0X2xvb3AzOworCXN0cnVjdCBz Y3RwX2Fzc29jX2NoYW5nZSAqc2FjOwogCXN0cnVjdCBpb3ZlYyBpb3Y7CiAJc3RydWN0IG1zZ2hk ciBpbm1lc3NhZ2U7CiAJaW50IGVycm9yOwotCXN0cnVjdCBzY3RwX2Fzc29jX2NoYW5nZSAqc2Fj OwogCWNoYXIgKmJpZ19idWZmZXI7CiAJaW50IGZsYWdzOwogCkBAIC0xMDYsMTUgKzEwNiwxNSBA QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qIFNldCBjbHRfc2sxIGFzIG5v bi1ibG9ja2luZy4gKi8KIAlmbGFncyA9IGZjbnRsKGNsdF9zazEsIEZfR0VURkwsIDApOwogCWlm IChmbGFncyA8IDApCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiZmNudGwgRl9HRVRGTDogJXMi LCBzdHJlcnJvcihlcnJubykpOworCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJmY250bCBG X0dFVEZMOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CiAJaWYgKGZjbnRsKGNsdF9zazEsIEZfU0VU RkwsIGZsYWdzIHwgT19OT05CTE9DSykgPCAwKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImZj bnRsIEZfU0VURkw6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJdHN0X2Jya20oVEJST0ssIHRz dF9leGl0LCAiZmNudGwgRl9TRVRGTDogJXMiLCBzdHJlcnJvcihlcnJubykpOwogCiAJLyogRG8g YSBub24tYmxvY2tpbmcgY29ubmVjdCBmcm9tIGNsdF9zazEgdG8gc3ZyX3NrICovCiAJZXJyb3Ig PSBjb25uZWN0KGNsdF9zazEsICZzdnJfbG9vcC5zYSwgc2l6ZW9mKHN2cl9sb29wKSk7CiAJLyog Tm9uLWJsb2NraW5nIGNvbm5lY3Qgc2hvdWxkIHJldHVybiBpbW1lZGlhdGVseSB3aXRoIEVJTlBS T0dSRVNTLiAqLwogCWlmICgoZXJyb3IgIT0gLTEpIHx8IChFSU5QUk9HUkVTUyAhPSBlcnJubykp Ci0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAibm9uLWJsb2NraW5nIGNvbm5lY3QgZXJyb3I6ICVk IgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJub24tYmxvY2tpbmcgY29ubmVjdCBlcnJv cjogJWQiCiAJCQkgImVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNT LCAibm9uLWJsb2NraW5nIGNvbm5lY3QiKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCSAqLwogCWVycm9yID0gY29ubmVjdChjbHRfc2sxLCAm c3ZyX2xvb3Auc2EsIHNpemVvZihzdnJfbG9vcCkpOwogCWlmICgoZXJyb3IgIT0gLTEpIHx8IChF SVNDT05OICE9IGVycm5vKSkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJjb25uZWN0IG9uIGEg c29ja2V0IHRvIGNyZWF0ZSBhbiAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImNvbm5l Y3Qgb24gYSBzb2NrZXQgdG8gY3JlYXRlIGFuICIKIAkJCSAiYXNzb2MgdGhhdCBpcyBhbHJlYWR5 IGVzdGFibGlzaGVkIGVycm9yOiVkIGVycm5vOiVkIiwKIAkJCSBlcnJvciwgZXJybm8pOwogCkBA IC0xNDUsOCArMTQ1LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJdGVz dF9jaGVja19tc2dfbm90aWZpY2F0aW9uKCZpbm1lc3NhZ2UsIGVycm9yLAogCQkJCSAgICBzaXpl b2Yoc3RydWN0IHNjdHBfYXNzb2NfY2hhbmdlKSwKIAkJCQkgICAgU0NUUF9BU1NPQ19DSEFOR0Us IFNDVFBfQ09NTV9VUCk7CisjaWYgMAogCXNhYyA9IChzdHJ1Y3Qgc2N0cF9hc3NvY19jaGFuZ2Ug Kilpb3YuaW92X2Jhc2U7CiAJY2x0X2Fzc29jaWQxID0gc2FjLT5zYWNfYXNzb2NfaWQ7CisjZW5k aWYKIAogCS8qIEdldCBDT01NX1VQIG9uIHN2cl9zayAqLwogCWVycm9yID0gdGVzdF9yZWN2bXNn KHN2cl9zaywgJmlubWVzc2FnZSwgTVNHX1dBSVRBTEwpOwpAQCAtMTY3LDE2ICsxNjksMjAgQEAg aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl0ZXN0X2NoZWNrX21zZ19ub3RpZmlj YXRpb24oJmlubWVzc2FnZSwgZXJyb3IsCiAJCQkJICAgIHNpemVvZihzdHJ1Y3Qgc2N0cF9hc3Nv Y19jaGFuZ2UpLAogCQkJCSAgICBTQ1RQX0FTU09DX0NIQU5HRSwgU0NUUF9DT01NX1VQKTsKKyNp ZiAwCiAJc2FjID0gKHN0cnVjdCBzY3RwX2Fzc29jX2NoYW5nZSAqKWlvdi5pb3ZfYmFzZTsKIAlj bHRfYXNzb2NpZDIgPSBzYWMtPnNhY19hc3NvY19pZDsKKyNlbmRpZgogCiAJLyogR2V0IENPTU1f VVAgb24gc3ZyX3NrICovCiAJZXJyb3IgPSB0ZXN0X3JlY3Ztc2coc3ZyX3NrLCAmaW5tZXNzYWdl LCBNU0dfV0FJVEFMTCk7CiAJdGVzdF9jaGVja19tc2dfbm90aWZpY2F0aW9uKCZpbm1lc3NhZ2Us IGVycm9yLAogCQkJCSAgICBzaXplb2Yoc3RydWN0IHNjdHBfYXNzb2NfY2hhbmdlKSwKIAkJCQkg ICAgU0NUUF9BU1NPQ19DSEFOR0UsIFNDVFBfQ09NTV9VUCk7CisjaWYgMAogCXNhYyA9IChzdHJ1 Y3Qgc2N0cF9hc3NvY19jaGFuZ2UgKilpb3YuaW92X2Jhc2U7CiAJc3ZyX2Fzc29jaWQyID0gc2Fj LT5zYWNfYXNzb2NfaWQ7CisjZW5kaWYKIAogCXRzdF9yZXNtKFRQQVNTLCAiYmxvY2tpbmcgY29u bmVjdCIpOwogCkBAIC0xODUsNyArMTkxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKIAkvKiBEb2luZyBhIGNvbm5lY3Qgb24gYSBwZWVsZWQgb2ZmIHNvY2tldCBzaG91bGQg ZmFpbC4gKi8KIAllcnJvciA9IGNvbm5lY3QocGVlbG9mZl9zaywgJmNsdF9sb29wMy5zYSwgc2l6 ZW9mKGNsdF9sb29wMykpOwogCWlmICgoZXJyb3IgIT0gLTEpIHx8IChFSVNDT05OICE9IGVycm5v KSkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJjb25uZWN0IG9uIGEgcGVlbGVkIG9mZiBzb2Nr ZXQgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJjb25uZWN0IG9uIGEgcGVlbGVkIG9m ZiBzb2NrZXQgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJ dHN0X3Jlc20oVFBBU1MsICJjb25uZWN0IG9uIGEgcGVlbGVkIG9mZiBzb2NrZXQiKTsKQEAgLTE5 NSw3ICsyMDEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCSAqLwogCWVy cm9yID0gY29ubmVjdChzdnJfc2ssICZjbHRfbG9vcDEuc2EsIHNpemVvZihjbHRfbG9vcDEpKTsK IAlpZiAoKGVycm9yICE9IC0xKSB8fCAoRUFERFJOT1RBVkFJTCAhPSBlcnJubykpCi0JCXRzdF9i cmttKFRCUk9LLCBOVUxMLCAiY29ubmVjdCB0byBjcmVhdGUgYW4gYXNzb2MgdGhhdCAiCisJCXRz dF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImNvbm5lY3QgdG8gY3JlYXRlIGFuIGFzc29jIHRoYXQg IgogCQkJICJtYXRjaGVzIGEgcGVlbGVkIG9mZiBhc3NvYyBlcnJvcjolZCBlcnJubzolZCIsCiAJ CQkgZXJyb3IsIGVycm5vKTsKIApAQCAtMjA4LDUgKzIxNCw1IEBAIGludCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCiAJY2xvc2UocGVlbG9mZl9zayk7CiAKIAkvKiBJbmRpY2F0ZSBzdWNj ZXNzZnVsIGNvbXBsZXRpb24uICAqLwotCXRzdF9leGl0KCk7CisJcmV0dXJuIDA7CiB9CmRpZmYg LS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF9jb25uZWN0eC5j IGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfY29ubmVjdHguYwppbmRl eCA4ZjA4MDI1Li4zNzJmZTdjIDEwMDY0NAotLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1 bmNfdGVzdHMvdGVzdF9jb25uZWN0eC5jCisrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVu Y190ZXN0cy90ZXN0X2Nvbm5lY3R4LmMKQEAgLTEsMTQgKzEsMTQgQEAKLS8qIFNDVFAga2VybmVs IHJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvbgorLyogU0NUUCBrZXJuZWwgSW1wbGVtZW50YXRpb24K ICAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDIsIDIwMDMKICAqIENvcHlyaWdodCAoYykg MTk5OS0yMDAxIE1vdG9yb2xhLCBJbmMuCiAgKgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxl bWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7CisgKiBUaGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBp cyBmcmVlIHNvZnR3YXJlOwogICogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YKICAqIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKICAqIGFueSBsYXRlciB2ZXJzaW9uLgog ICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0CisgKiBUaGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0CiAgKiB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKICAqICAgICAgICAgICAgICAg ICAqKioqKioqKioqKioqKioqKioqKioqKioKICAqIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KQEAgLTY2LDcgKzY2LDggQEAg aW50IFRTVF9DTlQgPSAwOwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKIAlp bnQgc3ZyX3NrLCBjbHRfc2sxLCBjbHRfc2syLCBwZWVsb2ZmX3NrOwotCXNjdHBfYXNzb2NfdCBz dnJfYXNzb2NpZDEsIHN2cl9hc3NvY2lkMiwgY2x0X2Fzc29jaWQxLCBjbHRfYXNzb2NpZDI7CisJ c2N0cF9hc3NvY190IGFzc29jaWQsIHN2cl9hc3NvY2lkMSwgc3ZyX2Fzc29jaWQyLCBjbHRfYXNz b2NpZDEsCisJICAgIGNsdF9hc3NvY2lkMjsKIAlzdHJ1Y3QgaW92ZWMgaW92OwogCXN0cnVjdCBt c2doZHIgaW5tZXNzYWdlOwogCWludCBlcnJvciwgaTsKQEAgLTE0NCwxNSArMTQ1LDE2IEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLyogU2V0IGNsdF9zazEgYXMgbm9uLWJs b2NraW5nLiAqLwogCWZsYWdzID0gZmNudGwoY2x0X3NrMSwgRl9HRVRGTCwgMCk7CiAJaWYgKGZs YWdzIDwgMCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJmY250bCBGX0dFVEZMOiAlcyIsIHN0 cmVycm9yKGVycm5vKSk7CisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImZjbnRsIEZfR0VU Rkw6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAlpZiAoZmNudGwoY2x0X3NrMSwgRl9TRVRGTCwg ZmxhZ3MgfCBPX05PTkJMT0NLKSA8IDApCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiZmNudGwg Rl9TRVRGTDogJXMiLCBzdHJlcnJvcihlcnJubykpOworCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4 aXQsICJmY250bCBGX1NFVEZMOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CiAKIAkvKiBEbyBhIG5v bi1ibG9ja2luZyBjb25uZWN0eCBmcm9tIGNsdF9zazEgdG8gc3ZyX3NrICovCi0JZXJyb3IgPSBz Y3RwX2Nvbm5lY3R4KGNsdF9zazEsIChzdHJ1Y3Qgc29ja2FkZHIgKilzdnJfdHJ5LCBOVU1BRERS KTsKKwllcnJvciA9IHNjdHBfY29ubmVjdHgoY2x0X3NrMSwgKHN0cnVjdCBzb2NrYWRkciAqKXN2 cl90cnksIE5VTUFERFIsCisJCQkgICAgICAmYXNzb2NpZCk7CiAJLyogTm9uLWJsb2NraW5nIGNv bm5lY3R4IHNob3VsZCByZXR1cm4gaW1tZWRpYXRlbHkgd2l0aCBFSU5QUk9HUkVTUy4gKi8KIAlp ZiAoKGVycm9yICE9IC0xKSB8fCAoRUlOUFJPR1JFU1MgIT0gZXJybm8pKQotCQl0c3RfYnJrbShU QlJPSywgTlVMTCwgIm5vbi1ibG9ja2luZyBjb25uZWN0eCBlcnJvcjogJWQiCisJCXRzdF9icmtt KFRCUk9LLCB0c3RfZXhpdCwgIm5vbi1ibG9ja2luZyBjb25uZWN0eCBlcnJvcjogJWQiCiAJCQkg ImVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAibm9uLWJsb2Nr aW5nIGNvbm5lY3R4Iik7CkBAIC0xNjAsOSArMTYyLDEwIEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJLyogRG9pbmcgYSBjb25uZWN0eCBvbiBhIHNvY2tldCB0byBjcmVhdGUg YW4gYXNzb2NpYXRpb24gdGhhdCBpcwogCSAqIGlzIGFscmVhZHkgZXN0YWJsaXNoZWQgc2hvdWxk IHJldHVybiBFSVNDT05OLgogCSAqLwotCWVycm9yID0gc2N0cF9jb25uZWN0eChjbHRfc2sxLCAo c3RydWN0IHNvY2thZGRyICopc3ZyX3RyeSwgTlVNQUREUik7CisJZXJyb3IgPSBzY3RwX2Nvbm5l Y3R4KGNsdF9zazEsIChzdHJ1Y3Qgc29ja2FkZHIgKilzdnJfdHJ5LCBOVU1BRERSLAorCQkJICAg ICAgTlVMTCk7CiAJaWYgKChlcnJvciAhPSAtMSkgfHwgKEVJU0NPTk4gIT0gZXJybm8pKQotCQl0 c3RfYnJrbShUQlJPSywgTlVMTCwgImNvbm5lY3R4IG9uIGEgc29ja2V0IHRvIGNyZWF0ZSBhbiAi CisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImNvbm5lY3R4IG9uIGEgc29ja2V0IHRvIGNy ZWF0ZSBhbiAiCiAJCQkgImFzc29jIHRoYXQgaXMgYWxyZWFkeSBlc3RhYmxpc2hlZCBlcnJvcjol ZCBlcnJubzolZCIsCiAJCQkgZXJyb3IsIGVycm5vKTsKIApAQCAtMTg2LDYgKzE4OSwxNSBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCXNhYyA9IChzdHJ1Y3Qgc2N0cF9hc3Nv Y19jaGFuZ2UgKilpb3YuaW92X2Jhc2U7CiAJY2x0X2Fzc29jaWQxID0gc2FjLT5zYWNfYXNzb2Nf aWQ7CiAKKwlpZiAoYXNzb2NpZCkgeworCQlpZiAoYXNzb2NpZCAhPSBjbHRfYXNzb2NpZDEpCisJ CQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJBc3NvY2lhdGlvbiBpZCBtaXNtYXRjaDogIgor CQkJCSAiY29ubmVjdHggcmV0dXJuZWQgJWQsIG5vdGlmaWNhdGlvbiByZXR1cm5lZDolZCIsCisJ CQkJIGFzc29jaWQsIGNsdF9hc3NvY2lkMSk7CisJCXRzdF9yZXNtKFRQQVNTLCAiQXNzb2NpYXRp b24gaWQgbWF0Y2ggYmV0d2VlbiBzY3RwX2Nvbm5lY3R4KCkiCisJCQkgIiBhbmQgbm90aWZpY2F0 aW9uLiIpOworCX0KKwogCS8qIEdldCBDT01NX1VQIG9uIHN2cl9zayAqLwogCWVycm9yID0gdGVz dF9yZWN2bXNnKHN2cl9zaywgJmlubWVzc2FnZSwgTVNHX1dBSVRBTEwpOwogCXRlc3RfY2hlY2tf bXNnX25vdGlmaWNhdGlvbigmaW5tZXNzYWdlLCBlcnJvciwKQEAgLTIyMSwxMCArMjMzLDEwIEBA IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJcGVlbG9mZl9zayA9IHRlc3Rfc2N0 cF9wZWVsb2ZmKHN2cl9zaywgc3ZyX2Fzc29jaWQxKTsKIAogCS8qIERvaW5nIGEgY29ubmVjdHgg b24gYSBwZWVsZWQgb2ZmIHNvY2tldCBzaG91bGQgZmFpbC4gKi8KLQllcnJvciA9Ci0JICAgIHNj dHBfY29ubmVjdHgocGVlbG9mZl9zaywgKHN0cnVjdCBzb2NrYWRkciAqKWNsdF9sb29wMywgTlVN QUREUik7CisJZXJyb3IgPSBzY3RwX2Nvbm5lY3R4KHBlZWxvZmZfc2ssIChzdHJ1Y3Qgc29ja2Fk ZHIgKiljbHRfbG9vcDMsIE5VTUFERFIsCisJCQkgICAgICBOVUxMKTsKIAlpZiAoKGVycm9yICE9 IC0xKSB8fCAoRUlTQ09OTiAhPSBlcnJubykpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiY29u bmVjdHggb24gYSBwZWVsZWQgb2ZmIHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhp dCwgImNvbm5lY3R4IG9uIGEgcGVlbGVkIG9mZiBzb2NrZXQgIgogCQkJICJlcnJvcjolZCwgZXJy bm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJjb25uZWN0eCBvbiBh IHBlZWxlZCBvZmYgc29ja2V0Iik7CkBAIC0yMzIsOSArMjQ0LDEwIEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJLyogVHJ5aW5nIHRvIGNyZWF0ZSBhbiBhc3NvY2lhdGlvbiBv biBhIHNvY2tldCB0aGF0IG1hdGNoZXMgYW4KIAkgKiBleGlzdGluZyBwZWVsZWQtb2ZmIGFzc29j aWF0aW9uIHNob3VsZCBmYWlsLgogCSAqLwotCWVycm9yID0gc2N0cF9jb25uZWN0eChzdnJfc2ss IChzdHJ1Y3Qgc29ja2FkZHIgKiljbHRfbG9vcDEsIE5VTUFERFIpOworCWVycm9yID0gc2N0cF9j b25uZWN0eChzdnJfc2ssIChzdHJ1Y3Qgc29ja2FkZHIgKiljbHRfbG9vcDEsIE5VTUFERFIsCisJ CQkgICAgICBOVUxMKTsKIAlpZiAoKGVycm9yICE9IC0xKSB8fCAoRUFERFJOT1RBVkFJTCAhPSBl cnJubykpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiY29ubmVjdHggdG8gY3JlYXRlIGFuIGFz c29jIHRoYXQgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJjb25uZWN0eCB0byBjcmVh dGUgYW4gYXNzb2MgdGhhdCAiCiAJCQkgIm1hdGNoZXMgYSBwZWVsZWQgb2ZmIGFzc29jIGVycm9y OiVkIGVycm5vOiVkIiwKIAkJCSBlcnJvciwgZXJybm8pOwogCkBAIC0yNTUsNSArMjY4LDUgQEAg aW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAljbG9zZShwZWVsb2ZmX3NrKTsKIAog CS8qIEluZGljYXRlIHN1Y2Nlc3NmdWwgY29tcGxldGlvbi4gICovCi0JdHN0X2V4aXQoKTsKKwly ZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0 cy90ZXN0X2ZyYWdtZW50cy5jIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rl c3RfZnJhZ21lbnRzLmMKaW5kZXggNGU5MmFjMy4uYmVhOTNjMiAxMDA2NDQKLS0tIGEvdGVzdGNh c2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfZnJhZ21lbnRzLmMKKysrIGIvdGVzdGNh c2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfZnJhZ21lbnRzLmMKQEAgLTEsMTcgKzEs MTcgQEAKLS8qIFNDVFAga2VybmVsIHJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvbgorLyogU0NUUCBr ZXJuZWwgSW1wbGVtZW50YXRpb24KICAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDEsIDIw MDMKICAqIENvcHlyaWdodCAoYykgMTk5OS0yMDAwIENpc2NvLCBJbmMuCiAgKiBDb3B5cmlnaHQg KGMpIDE5OTktMjAwMSBNb3Rvcm9sYSwgSW5jLgogICogQ29weXJpZ2h0IChjKSAyMDAxIEludGVs IENvcnAuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDEgTm9raWEsIEluYy4KICAqCi0gKiBUaGUgU0NU UCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsKKyAqIFRoZSBTQ1RQ IGltcGxlbWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7CiAgKiB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZgogICogdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICogdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQogICogYW55 IGxhdGVyIHZlcnNpb24uCiAgKgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9u IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKKyAqIFRoZSBTQ1RQIGltcGxlbWVu dGF0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKICAqIHdpbGwgYmUgdXNl ZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAog ICogICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKgogICogd2FycmFudHkg b2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgpA QCAtODQsMTEgKzg0LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlzdHJ1 Y3Qgc2N0cF9zbmRyY3ZpbmZvICpzaW5mbzsKIAlzdHJ1Y3QgaW92ZWMgb3V0X2lvdjsKIAlpbnQg ZXJyb3IsIGJ5dGVzX3NlbnQ7Ci0JaW50IHBmX2NsYXNzLCBhZl9mYW1pbHk7CisJaW50IHBmX2Ns YXNzOwogCXVpbnQzMl90IHBwaWQ7CiAJdWludDMyX3Qgc3RyZWFtOwotCXNjdHBfYXNzb2NfdCBh c3NvY2lkMSwgYXNzb2NpZDI7Ci0Jc3RydWN0IHNjdHBfYXNzb2NfY2hhbmdlICpzYWM7CiAJY2hh ciAqYmlnX2J1ZmZlcjsKIAlpbnQgbXNnX2xlbiwgbXNnX2NudCwgaTsKIAl2b2lkICptc2dfYnVm OwpAQCAtMTAzLDcgKzEwMSw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ LyogU2V0IHNvbWUgYmFzaWMgdmFsdWVzIHdoaWNoIGRlcGVuZCBvbiB0aGUgYWRkcmVzcyBmYW1p bHkuICovCiAjaWYgVEVTVF9WNgogCXBmX2NsYXNzID0gUEZfSU5FVDY7Ci0JYWZfZmFtaWx5ID0g QUZfSU5FVDY7CiAKIAlsb29wMS52Ni5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OwogCWxvb3AxLnY2 LnNpbjZfYWRkciA9IGluNmFkZHJfbG9vcGJhY2s7CkBAIC0xMTQsNyArMTExLDYgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlsb29wMi52Ni5zaW42X3BvcnQgPSBodG9ucyhT Q1RQX1RFU1RQT1JUXzIpOwogI2Vsc2UKIAlwZl9jbGFzcyA9IFBGX0lORVQ7Ci0JYWZfZmFtaWx5 ID0gQUZfSU5FVDsKIAogCWxvb3AxLnY0LnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogCWxvb3AxLnY0 LnNpbl9hZGRyLnNfYWRkciA9IFNDVFBfSVBfTE9PUEJBQ0s7CkBAIC0xODAsMTggKzE3NiwyMCBA QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCXRlc3RfY2hlY2tfbXNnX25vdGlm aWNhdGlvbigmaW5tZXNzYWdlLCBlcnJvciwKIAkJCQkgICAgc2l6ZW9mKHN0cnVjdCBzY3RwX2Fz c29jX2NoYW5nZSksCiAJCQkJICAgIFNDVFBfQVNTT0NfQ0hBTkdFLCBTQ1RQX0NPTU1fVVApOwor I2lmIDAKIAlzYWMgPSAoc3RydWN0IHNjdHBfYXNzb2NfY2hhbmdlICopaW92Lmlvdl9iYXNlOwog CWFzc29jaWQyID0gc2FjLT5zYWNfYXNzb2NfaWQ7Ci0KKyNlbmRpZgogCS8qIEdldCB0aGUgY29t bXVuaWNhdGlvbiB1cCBtZXNzYWdlIG9uIHNrMS4gICovCiAJaW5tZXNzYWdlLm1zZ19jb250cm9s bGVuID0gc2l6ZW9mKGluY21zZyk7CiAJZXJyb3IgPSB0ZXN0X3JlY3Ztc2coc2sxLCAmaW5tZXNz YWdlLCBNU0dfV0FJVEFMTCk7CiAJdGVzdF9jaGVja19tc2dfbm90aWZpY2F0aW9uKCZpbm1lc3Nh Z2UsIGVycm9yLAogCQkJCSAgICBzaXplb2Yoc3RydWN0IHNjdHBfYXNzb2NfY2hhbmdlKSwKIAkJ CQkgICAgU0NUUF9BU1NPQ19DSEFOR0UsIFNDVFBfQ09NTV9VUCk7CisjaWYgMAogCXNhYyA9IChz dHJ1Y3Qgc2N0cF9hc3NvY19jaGFuZ2UgKilpb3YuaW92X2Jhc2U7CiAJYXNzb2NpZDEgPSBzYWMt PnNhY19hc3NvY19pZDsKLQorI2VuZGlmCiAJLyogR2V0IHRoZSBmaXJzdCBtZXNzYWdlIHdoaWNo IHdhcyBzZW50LiAgKi8KIAlpbm1lc3NhZ2UubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YoaW5jbXNn KTsKIAllcnJvciA9IHRlc3RfcmVjdm1zZyhzazIsICZpbm1lc3NhZ2UsIE1TR19XQUlUQUxMKTsK QEAgLTIxMiw3ICsyMTAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWVy cm9yID0gdGVzdF9nZXRzb2Nrb3B0KHNrMSwgU0NUUF9ESVNBQkxFX0ZSQUdNRU5UUywgJmRpc2Fi bGVfZnJhZywKIAkJCQkmb3B0bGVuKTsKIAlpZiAoKGVycm9yICE9IDApICYmIChkaXNhYmxlX2Zy YWcgIT0gMSkpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiZ2V0c29ja29wdChTQ1RQX0RJU0FC TEVfRlJBR01FTlRTKSAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImdldHNvY2tvcHQo U0NUUF9ESVNBQkxFX0ZSQUdNRU5UUykgIgogCQkJICJlcnJvcjolZCBlcnJubzolZCBkaXNhYmxl X2ZyYWc6JWQiLAogCQkJIGVycm9yLCBlcnJubywgZGlzYWJsZV9mcmFnKTsKIApAQCAtMjIxLDEz ICsyMTksMTMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKiBUcnkgdG8g c2VuZCBhIG1lc3NzYWdlIHRoYXQgZXhjZWVkcyBhc3NvY2lhdGlvbiBmcmFnbWVudGF0aW9uIHBv aW50CiAJICogYW5kIHZlcmlmeSB0aGF0IGl0IGZhaWxzLgogCSAqLwotCW1zZ19sZW4gPSAzMDAw MDsKKwltc2dfbGVuID0gMTAwMDAwOwogCW1zZ19idWYgPSB0ZXN0X2J1aWxkX21zZyhtc2dfbGVu KTsKIAlvdXRtZXNzYWdlLm1zZ19pb3YtPmlvdl9iYXNlID0gbXNnX2J1ZjsKIAlvdXRtZXNzYWdl Lm1zZ19pb3YtPmlvdl9sZW4gPSBtc2dfbGVuOwogCWVycm9yID0gc2VuZG1zZyhzazEsICZvdXRt ZXNzYWdlLCAwKTsKIAlpZiAoKGVycm9yICE9IC0xKSB8fCAoZXJybm8gIT0gRU1TR1NJWkUpKQot CQl0c3RfYnJrbShUQlJPSywgTlVMTCwgIlNlbmQgYSBtZXNzYWdlIHRoYXQgZXhjZWVkcyAiCisJ CXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgIlNlbmQgYSBtZXNzYWdlIHRoYXQgZXhjZWVkcyAi CiAJCQkgImFzc29jIGZyYWcgcG9pbnQgZXJyb3I6JWQgZXJybm86JWQiLCBlcnJvciwgZXJybm8p OwogCiAJdHN0X3Jlc20oVFBBU1MsICJTZW5kIGEgbWVzc2FnZSB0aGF0IGV4Y2VlZHMgYXNzb2Mg ZnJhZyBwb2ludCIpOwpAQCAtMjkzLDUgKzI5MSw1IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pCiAJY2xvc2Uoc2syKTsKIAogCS8qIEluZGljYXRlIHN1Y2Nlc3NmdWwgY29tcGxl dGlvbi4gICovCi0JdHN0X2V4aXQoKTsKKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3Rlc3Rj YXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0X2dldG5hbWUuYyBiL3Rlc3RjYXNlcy9u ZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0X2dldG5hbWUuYwppbmRleCBmMzAwMzY4Li5iYjQ1 NWUxIDEwMDY0NAotLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF9n ZXRuYW1lLmMKKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfZ2V0 bmFtZS5jCkBAIC0xLDE0ICsxLDE0IEBACi0vKiBTQ1RQIGtlcm5lbCByZWZlcmVuY2UgSW1wbGVt ZW50YXRpb24KKy8qIFNDVFAga2VybmVsIEltcGxlbWVudGF0aW9uCiAgKiAoQykgQ29weXJpZ2h0 IElCTSBDb3JwLiAyMDA0CiAgKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSBNb3Rvcm9sYSwgSW5j LgogICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3 YXJlOworICogVGhlIFNDVFAgaW1wbGVtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsKICAqIHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m CiAgKiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAgKiB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91 ciBvcHRpb24pCiAgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqCi0gKiBUaGUgU0NUUCByZWZlcmVu Y2UgaW1wbGVtZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdAorICog VGhlIFNDVFAgaW1wbGVtZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dAogICogd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkCiAgKiAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKioqKioqKioq KioqCiAgKiB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuCkBAIC05Myw3ICs5Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pCiAJLyogVmVyaWZ5IHRoYXQgZ2V0c29ja25hbWUoKSBvbiBhbiB1bmNvbm5lY3Rl ZCBzb2NrZXQgd29ya3MgZmluZS4gKi8KIAllcnJvciA9IGdldHNvY2tuYW1lKHN2cl9zaywgKHN0 cnVjdCBzb2NrYWRkciAqKSZzdnJfbG9jYWxfYWRkciwgJmxlbik7CiAJaWYgKDAgIT0gZXJyb3Ip Ci0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiZ2V0c29ja25hbWU6ICVzIiwgc3RyZXJyb3IoZXJy bm8pKTsKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiZ2V0c29ja25hbWU6ICVzIiwgc3Ry ZXJyb3IoZXJybm8pKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAiZ2V0c29ja25hbWUgb24gYW4gdW5j b25uZWN0ZWQgc29ja2V0Iik7CiAKQEAgLTEwMiw3ICsxMDIsNyBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCS8qIFZlcmlmeSB0aGF0IGdldHBlZXJuYW1lKCkgb24gYW4gdW5j b25uZWN0ZWQgc29ja2V0IGZhaWxzLiAqLwogCWVycm9yID0gZ2V0cGVlcm5hbWUoc3ZyX3NrLCAo c3RydWN0IHNvY2thZGRyICopJnN2cl9wZWVyX2FkZHIsICZsZW4pOwogCWlmICgoLTEgIT0gZXJy b3IpIHx8IChFTk9UQ09OTiAhPSBlcnJubykpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiZ2V0 cGVlcm5hbWUgb24gYW4gdW5jb25uZWN0ZWQgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQs ICJnZXRwZWVybmFtZSBvbiBhbiB1bmNvbm5lY3RlZCAiCiAJCQkgInNvY2tldCBlcnJvcjolZCwg ZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJnZXRwZWVybmFt ZSBvbiBhbiB1bmNvbm5lY3RlZCBzb2NrZXQiKTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qIEdldCB0aGUgY2xpZW50J3MgbG9jYWwgYWRk cmVzcy4gKi8KIAllcnJvciA9IGdldHNvY2tuYW1lKGNsdF9zaywgKHN0cnVjdCBzb2NrYWRkciAq KSZjbHRfbG9jYWxfYWRkciwgJmxlbik7CiAJaWYgKDAgIT0gZXJyb3IpCi0JCXRzdF9icmttKFRC Uk9LLCBOVUxMLCAiZ2V0c29ja25hbWUgb24gYSBjb25uZWN0ZWQgY2xpZW50ICIKKwkJdHN0X2Jy a20oVEJST0ssIHRzdF9leGl0LCAiZ2V0c29ja25hbWUgb24gYSBjb25uZWN0ZWQgY2xpZW50ICIK IAkJCSAic29ja2V0OiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CiAKIAl0c3RfcmVzbShUUEFTUywg ImdldHNvY2tuYW1lIG9uIGEgY29ubmVjdGVkIGNsaWVudCBzb2NrZXQiKTsKQEAgLTEzNiw3ICsx MzYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qIEdldCB0aGUgY2xp ZW50J3MgcGVlciBhZGRyZXNzLiAqLwogCWVycm9yID0gZ2V0cGVlcm5hbWUoY2x0X3NrLCAoc3Ry dWN0IHNvY2thZGRyICopJmNsdF9wZWVyX2FkZHIsICZsZW4pOwogCWlmICgwICE9IGVycm9yKQot CQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImdldHBlZXJuYW1lIG9uIGEgY29ubmVjdGVkIGNsaWVu dCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImdldHBlZXJuYW1lIG9uIGEgY29ubmVj dGVkIGNsaWVudCAiCiAJCQkgInNvY2tldDogJXMiLCBzdHJlcnJvcihlcnJubykpOwogCiAJdHN0 X3Jlc20oVFBBU1MsICJnZXRwZWVybmFtZSBvbiBhIGNvbm5lY3RlZCBjbGllbnQgc29ja2V0Iik7 CkBAIC0xNTEsNyArMTUxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAll cnJvciA9IGdldHNvY2tuYW1lKGFjY2VwdF9zaywgKHN0cnVjdCBzb2NrYWRkciAqKSZzdnJfbG9j YWxfYWRkciwKIAkJCSAgICAmbGVuKTsKIAlpZiAoMCAhPSBlcnJvcikKLQkJdHN0X2Jya20oVEJS T0ssIE5VTEwsICJnZXRzb2NrbmFtZSBvbiBhIGNvbm5lY3RlZCBzZXJ2ZXIgIgorCQl0c3RfYnJr bShUQlJPSywgdHN0X2V4aXQsICJnZXRzb2NrbmFtZSBvbiBhIGNvbm5lY3RlZCBzZXJ2ZXIgIgog CQkJICJzb2NrZXQ6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAi Z2V0c29ja25hbWUgb24gYSBjb25uZWN0ZWQgc2VydmVyIHNvY2tldCIpOwpAQCAtMTYxLDM2ICsx NjEsMzYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKiBHZXQgdGhlIHNl cnZlcidzIHBlZXIgYWRkcmVzcy4gKi8KIAllcnJvciA9IGdldHBlZXJuYW1lKGFjY2VwdF9zaywg KHN0cnVjdCBzb2NrYWRkciAqKSZzdnJfcGVlcl9hZGRyLCAmbGVuKTsKIAlpZiAoMCAhPSBlcnJv cikKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJnZXRwZWVybmFtZSBvbiBhIGNvbm5lY3RlZCBz ZXJ2ZXIgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJnZXRwZWVybmFtZSBvbiBhIGNv bm5lY3RlZCBzZXJ2ZXIgIgogCQkJICJzb2NrZXQ6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAog CXRzdF9yZXNtKFRQQVNTLCAiZ2V0cGVlcm5hbWUgb24gYSBjb25uZWN0ZWQgc2VydmVyIHNvY2tl dCIpOwogCiAJaWYgKHN2cl9sb2NhbF9hZGRyLnY0LnNpbl9wb3J0ICE9IGNsdF9wZWVyX2FkZHIu djQuc2luX3BvcnQpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiU2VydmVyJ3MgbG9jYWwgcG9y dCglZCkgZG9lc24ndCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgIlNlcnZlcidzIGxv Y2FsIHBvcnQoJWQpIGRvZXNuJ3QgIgogCQkJICJtYXRjaCBDbGllbnQncyBwZWVyIHBvcnQoJWQp XG4iLAogCQkJIHN2cl9sb2NhbF9hZGRyLnY0LnNpbl9wb3J0LCBjbHRfcGVlcl9hZGRyLnY0LnNp bl9wb3J0KTsKIAogCWlmIChzdnJfcGVlcl9hZGRyLnY0LnNpbl9wb3J0ICE9IGNsdF9sb2NhbF9h ZGRyLnY0LnNpbl9wb3J0KQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgIlNlcnZlcidzIHBlZXIg cG9ydCglZCkgZG9lc24ndCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgIlNlcnZlcidz IHBlZXIgcG9ydCglZCkgZG9lc24ndCAiCiAJCQkgIm1hdGNoIENsaWVudCdzIGxvY2FsIHBvcnQo JWQpXG4iLAogCQkJIHN2cl9wZWVyX2FkZHIudjQuc2luX3BvcnQsIGNsdF9sb2NhbF9hZGRyLnY0 LnNpbl9wb3J0KTsKICNpZiBURVNUX1Y2CiAJaWYgKG1lbWNtcCgmc3ZyX2xvY2FsX2FkZHIsICZj bHRfcGVlcl9hZGRyLCBsZW4pICE9IDApCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiU2VydmVy J3MgbG9jYWwgYWRkcmVzcyBhbmQgY2xpZW50J3MgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4 aXQsICJTZXJ2ZXIncyBsb2NhbCBhZGRyZXNzIGFuZCBjbGllbnQncyAiCiAJCQkgInBlZXIgYWRk cmVzc2VzIGRvIG5vdCBtYXRjaFxuIik7CiAKIAlpZiAobWVtY21wKCZzdnJfcGVlcl9hZGRyLCAm Y2x0X2xvY2FsX2FkZHIsIGxlbikgIT0gMCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJTZXJ2 ZXIncyBwZWVyIGFkZHJlc3MgYW5kIGNsaWVudCdzICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9l eGl0LCAiU2VydmVyJ3MgcGVlciBhZGRyZXNzIGFuZCBjbGllbnQncyAiCiAJCQkgImxvY2FsIGFk ZHJlc3NlcyBkbyBub3QgbWF0Y2hcbiIpOwogI2Vsc2UKIAlpZiAoc3ZyX2xvY2FsX2FkZHIudjQu c2luX2FkZHIuc19hZGRyICE9CiAJICAgIGNsdF9wZWVyX2FkZHIudjQuc2luX2FkZHIuc19hZGRy KQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgIlNlcnZlcidzIGxvY2FsIGFkZHJlc3MgYW5kIGNs aWVudCdzICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiU2VydmVyJ3MgbG9jYWwgYWRk cmVzcyBhbmQgY2xpZW50J3MgIgogCQkJICJwZWVyIGFkZHJlc3NlcyBkbyBub3QgbWF0Y2hcbiIp OwogCWlmIChzdnJfcGVlcl9hZGRyLnY0LnNpbl9hZGRyLnNfYWRkciAhPQogCSAgICBjbHRfbG9j YWxfYWRkci52NC5zaW5fYWRkci5zX2FkZHIpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiU2Vy dmVyJ3MgcGVlciBhZGRyZXNzIGFuZCBjbGllbnQncyAiCisJCXRzdF9icmttKFRCUk9LLCB0c3Rf ZXhpdCwgIlNlcnZlcidzIHBlZXIgYWRkcmVzcyBhbmQgY2xpZW50J3MgIgogCQkJICJsb2NhbCBh ZGRyZXNzZXMgZG8gbm90IG1hdGNoXG4iKTsKICNlbmRpZgogCXRzdF9yZXNtKFRQQVNTLCAiZ2V0 c29ja25hbWUvZ2V0cGVlcm5hbWUgc2VydmVyL2NsaWVudCBtYXRjaCIpOwpAQCAtMjAwLDcgKzIw MCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLypnZXRzb2NrbmFtZSgp OiAgQmFkIHNvY2tldCBkZXNjcmlwdG9yLCBFQkFERiBleHBlY3RlZCBlcnJvciAqLwogCWVycm9y ID0gZ2V0c29ja25hbWUoLTEsIChzdHJ1Y3Qgc29ja2FkZHIgKikmY2x0X2xvY2FsX2FkZHIsICZs ZW4pOwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFQkFERikKLQkJdHN0X2Jya20oVEJS T0ssIE5VTEwsICJnZXRzb2NrbmFtZSBvbiBhIGJhZCBzb2NrZXQgIgorCQl0c3RfYnJrbShUQlJP SywgdHN0X2V4aXQsICJnZXRzb2NrbmFtZSBvbiBhIGJhZCBzb2NrZXQgIgogCQkJICJkZXNjcmlw dG9yLiBlcnJvcjolZCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFT UywgImdldHNvY2tuYW1lIG9uIGEgYmFkIHNvY2tldCBkZXNjcmlwdG9yIC0gRUJBREYiKTsKQEAg LTIwOCw3ICsyMDgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qZ2V0 c29ja25hbWUoKTogSW52YWxpZCBzb2NrZXQsIEVOT1RTT0NLIGV4cGVjdGVkIGVycm9yICovCiAJ ZXJyb3IgPSBnZXRzb2NrbmFtZSgwLCAoc3RydWN0IHNvY2thZGRyICopJmNsdF9sb2NhbF9hZGRy LCAmbGVuKTsKIAlpZiAoZXJyb3IgIT0gLTEgfHwgZXJybm8gIT0gRU5PVFNPQ0spCi0JCXRzdF9i cmttKFRCUk9LLCBOVUxMLCAiZ2V0c29ja25hbWUgb24gYW4gaW52YWxpZCBzb2NrZXQgIgorCQl0 c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJnZXRzb2NrbmFtZSBvbiBhbiBpbnZhbGlkIHNvY2tl dCAiCiAJCQkgImVycm9yOiVkIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNt KFRQQVNTLCAiZ2V0c29ja25hbWUgb24gYW4gaW52YWxpZCBzb2NrZXQgLSBFTk9UU09DSyIpOwpA QCAtMjE2LDcgKzIxNiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLypn ZXRzb2NrbmFtZSgpOiBJbnZhbGlkIHN0cnVjdHVyZSwgRUZBVUxUIGV4cGVjdGVkIGVycm9yICov CiAJZXJyb3IgPSBnZXRzb2NrbmFtZShjbHRfc2ssIChzdHJ1Y3Qgc29ja2FkZHIgKiktMSwgJmxl bik7CiAJaWYgKGVycm9yICE9IC0xIHx8IGVycm5vICE9IEVGQVVMVCkKLQkJdHN0X2Jya20oVEJS T0ssIE5VTEwsICJnZXRzb2NrbmFtZSB3aXRoIGludmFsaWQgYnVmZmVyICIKKwkJdHN0X2Jya20o VEJST0ssIHRzdF9leGl0LCAiZ2V0c29ja25hbWUgd2l0aCBpbnZhbGlkIGJ1ZmZlciAiCiAJCQkg ImVycm9yOiVkIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAi Z2V0c29ja25hbWUgd2l0aCBpbnZhbGlkIGJ1ZmZlciAtIEVGQVVMVCIpOwpAQCAtMjI2LDcgKzIy Niw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLypnZXRwZWVybmFtZSgp OiAgQmFkIHNvY2tldCBkZXNjcmlwdG9yLCBFQkFERiBleHBlY3RlZCBlcnJvciAqLwogCWVycm9y ID0gZ2V0cGVlcm5hbWUoLTEsIChzdHJ1Y3Qgc29ja2FkZHIgKikmY2x0X2xvY2FsX2FkZHIsICZs ZW4pOwogCWlmIChlcnJvciAhPSAtMSB8fCBlcnJubyAhPSBFQkFERikKLQkJdHN0X2Jya20oVEJS T0ssIE5VTEwsICJnZXRwZWVybmFtZSBvbiBhIGJhZCBzb2NrZXQgIgorCQl0c3RfYnJrbShUQlJP SywgdHN0X2V4aXQsICJnZXRwZWVybmFtZSBvbiBhIGJhZCBzb2NrZXQgIgogCQkJICJkZXNjcmlw dG9yLiBlcnJvcjolZCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFT UywgImdldHBlZXJuYW1lIG9uIGEgYmFkIHNvY2tldCBkZXNjcmlwdG9yIC0gRUJBREYiKTsKQEAg LTIzNCw3ICsyMzQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qZ2V0 cGVlcm5hbWUoKTogSW52YWxpZCBzb2NrZXQsIEVOT1RTT0NLIGV4cGVjdGVkIGVycm9yICovCiAJ ZXJyb3IgPSBnZXRwZWVybmFtZSgwLCAoc3RydWN0IHNvY2thZGRyICopJmNsdF9sb2NhbF9hZGRy LCAmbGVuKTsKIAlpZiAoZXJyb3IgIT0gLTEgfHwgZXJybm8gIT0gRU5PVFNPQ0spCi0JCXRzdF9i cmttKFRCUk9LLCBOVUxMLCAiZ2V0cGVlcm5hbWUgb24gYW4gaW52YWxpZCBzb2NrZXQgIgorCQl0 c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJnZXRwZWVybmFtZSBvbiBhbiBpbnZhbGlkIHNvY2tl dCAiCiAJCQkgImVycm9yOiVkIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNt KFRQQVNTLCAiZ2V0cGVlcm5hbWUgb24gYW4gaW52YWxpZCBzb2NrZXQgLSBFTk9UU09DSyIpOwpA QCAtMjQyLDcgKzI0Miw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLypn ZXRwZWVybmFtZSgpOiBJbnZhbGlkIHN0cnVjdHVyZSwgRUZBVUxUIGV4cGVjdGVkIGVycm9yICov CiAJZXJyb3IgPSBnZXRwZWVybmFtZShjbHRfc2ssIChzdHJ1Y3Qgc29ja2FkZHIgKiktMSwgJmxl bik7CiAJaWYgKGVycm9yICE9IC0xIHx8IGVycm5vICE9IEVGQVVMVCkKLQkJdHN0X2Jya20oVEJS T0ssIE5VTEwsICJnZXRwZWVybmFtZSB3aXRoIGludmFsaWQgYnVmZmVyICIKKwkJdHN0X2Jya20o VEJST0ssIHRzdF9leGl0LCAiZ2V0cGVlcm5hbWUgd2l0aCBpbnZhbGlkIGJ1ZmZlciAiCiAJCQkg ImVycm9yOiVkIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAi Z2V0cGVlcm5hbWUgd2l0aCBpbnZhbGlkIGJ1ZmZlciAtIEVGQVVMVCIpOwpAQCAtMjUyLDUgKzI1 Miw1IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJY2xvc2UoYWNjZXB0X3Nr KTsKIAogCS8qIEluZGljYXRlIHN1Y2Nlc3NmdWwgY29tcGxldGlvbi4gICovCi0JdHN0X2V4aXQo KTsKKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVu Y190ZXN0cy90ZXN0X2luYWRkcl9hbnkuYyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190 ZXN0cy90ZXN0X2luYWRkcl9hbnkuYwppbmRleCBhYzhhNjM4Li41Y2E0NThiIDEwMDY0NAotLS0g YS90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF9pbmFkZHJfYW55LmMKKysr IGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfaW5hZGRyX2FueS5jCkBA IC0xLDQgKzEsNCBAQAotLyogU0NUUCBrZXJuZWwgcmVmZXJlbmNlIEltcGxlbWVudGF0aW9uCisv KiBTQ1RQIGtlcm5lbCBJbXBsZW1lbnRhdGlvbgogICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4g MjAwMiwgMjAwMwogICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDAgQ2lzY28sIEluYy4KICAqIENv cHlyaWdodCAoYykgMTk5OS0yMDAxIE1vdG9yb2xhLCBJbmMuCkBAIC02LDEzICs2LDEzIEBACiAg KiBDb3B5cmlnaHQgKGMpIDIwMDEgTm9raWEsIEluYy4KICAqIENvcHlyaWdodCAoYykgMjAwMSBM YSBNb250ZSBILlAuIFlhcnJvbGwKICAqCi0gKiBUaGUgU0NUUCByZWZlcmVuY2UgaW1wbGVtZW50 YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsKKyAqIFRoZSBTQ1RQIGltcGxlbWVudGF0aW9uIGlzIGZy ZWUgc29mdHdhcmU7CiAgKiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZgogICogdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQogICogYW55IGxhdGVyIHZlcnNpb24uCiAgKgot ICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQKKyAqIFRoZSBTQ1RQIGltcGxlbWVudGF0aW9uIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQKICAqIHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAogICogICAgICAgICAgICAgICAgICoq KioqKioqKioqKioqKioqKioqKioqKgogICogd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgpAQCAtNzgsNyArNzgsNyBAQCBpbnQg bWFpbih2b2lkKQogCWNoYXIgKnRlbGVwaG9uZSA9ICJXYXRzb24sIGNvbWUgaGVyZSEgIEkgbmVl ZCB5b3UhXG4iOwogCWNoYXIgKnRlbGVwaG9uZV9yZXNwID0gIkkgYWxyZWFkeSBicm91Z2h0IHlv dXIgY29mZmVlLi4uXG4iOwogCWludCBlcnJvcjsKLQlpbnQgcGZfY2xhc3MsIGFmX2ZhbWlseTsK KwlpbnQgcGZfY2xhc3M7CiAJdWludDMyX3QgcHBpZDsKIAl1aW50MzJfdCBzdHJlYW07CiAJc29j a2xlbl90IG5hbWVsZW47CkBAIC05MSw3ICs5MSw2IEBAIGludCBtYWluKHZvaWQpCiAJLyogU2V0 IHNvbWUgYmFzaWMgdmFsdWVzIHdoaWNoIGRlcGVuZCBvbiB0aGUgYWRkcmVzcyBmYW1pbHkuICov CiAjaWYgVEVTVF9WNgogCXBmX2NsYXNzID0gUEZfSU5FVDY7Ci0JYWZfZmFtaWx5ID0gQUZfSU5F VDY7CiAKIAlsb29wLnY2LnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CiAJbG9vcC52Ni5zaW42X2Fk ZHIgPSAoc3RydWN0IGluNl9hZGRyKVNDVFBfSU42QUREUl9MT09QQkFDS19JTklUOwpAQCAtMTAy LDcgKzEwMSw2IEBAIGludCBtYWluKHZvaWQpCiAJYW55YWRkci52Ni5zaW42X3BvcnQgPSAwOwog I2Vsc2UKIAlwZl9jbGFzcyA9IFBGX0lORVQ7Ci0JYWZfZmFtaWx5ID0gQUZfSU5FVDsKIAogCWxv b3AudjQuc2luX2ZhbWlseSA9IEFGX0lORVQ7CiAJbG9vcC52NC5zaW5fYWRkci5zX2FkZHIgPSBT Q1RQX0lQX0xPT1BCQUNLOwpAQCAtMTM0LDEyICsxMzIsMTIgQEAgaW50IG1haW4odm9pZCkKIAlu YW1lbGVuID0gc2l6ZW9mKGxvb3ApOwogCWVycm9yID0gZ2V0c29ja25hbWUoc2sxLCAmbG9vcC5z YSwgJm5hbWVsZW4pOwogCWlmIChlcnJvciAhPSAwKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwg ImdldHNvY2tuYW1lOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisJCXRzdF9icmttKFRCUk9LLCB0 c3RfZXhpdCwgImdldHNvY2tuYW1lOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CiAKIAluYW1lbGVu ID0gc2l6ZW9mKGFueWFkZHIpOwogCWVycm9yID0gZ2V0c29ja25hbWUoc2syLCAmYW55YWRkci5z YSwgJm5hbWVsZW4pOwogCWlmIChlcnJvciAhPSAwKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwg ImdldHNvY2tuYW1lOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisJCXRzdF9icmttKFRCUk9LLCB0 c3RfZXhpdCwgImdldHNvY2tuYW1lOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CiAKICNpZiBURVNU X1Y2CiAJbG9vcC52Ni5zaW42X3BvcnQgPSBhbnlhZGRyLnY2LnNpbjZfcG9ydDsKQEAgLTI0OCw1 ICsyNDYsNSBAQCBpbnQgbWFpbih2b2lkKQogCXRzdF9yZXNtKFRQQVNTLCAic2VuZCBtc2dzIGZy b20gYSBzb2NrZXQgd2l0aCBJTkFERFJfQU5ZIGJpbmQgYWRkcmVzcyIpOwogCiAJLyogSW5kaWNh dGUgc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLiAgKi8KLQl0c3RfZXhpdCgpOworCXJldHVybiAwOwog fQpkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfcGVl bG9mZi5jIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfcGVlbG9mZi5j CmluZGV4IDA4ZGIxMjUuLjhlYjM1MjkgMTAwNjQ0Ci0tLSBhL3Rlc3RjYXNlcy9uZXR3b3JrL3Nj dHAvZnVuY190ZXN0cy90ZXN0X3BlZWxvZmYuYworKysgYi90ZXN0Y2FzZXMvbmV0d29yay9zY3Rw L2Z1bmNfdGVzdHMvdGVzdF9wZWVsb2ZmLmMKQEAgLTEsMTcgKzEsMTcgQEAKLS8qIFNDVFAga2Vy bmVsIHJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvbgorLyogU0NUUCBrZXJuZWwgSW1wbGVtZW50YXRp b24KICAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDEsIDIwMDMKICAqIENvcHlyaWdodCAo YykgMTk5OS0yMDAwIENpc2NvLCBJbmMuCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSBNb3Rv cm9sYSwgSW5jLgogICogQ29weXJpZ2h0IChjKSAyMDAxIEludGVsIENvcnAuCiAgKiBDb3B5cmln aHQgKGMpIDIwMDEgTm9raWEsIEluYy4KICAqCi0gKiBUaGUgU0NUUCByZWZlcmVuY2UgaW1wbGVt ZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsKKyAqIFRoZSBTQ1RQIGltcGxlbWVudGF0aW9uIGlz IGZyZWUgc29mdHdhcmU7CiAgKiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZgogICogdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQogICogYW55IGxhdGVyIHZlcnNpb24uCiAg KgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQKKyAqIFRoZSBTQ1RQIGltcGxlbWVudGF0aW9uIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKICAqIHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAogICogICAgICAgICAgICAgICAg ICoqKioqKioqKioqKioqKioqKioqKioqKgogICogd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgpAQCAtNjEsNyArNjEsNyBAQCBp bnQgVFNUX0NOVCA9IDA7CiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewogCWlu dCBzdnJfc2ssIGNsdF9za1tNQVhfQ0xJRU5UU10sIHBlZWxvZmZfc2tbTUFYX0NMSUVOVFNdOwot CXNjdHBfYXNzb2NfdCBzdnJfYXNzb2NpZFtNQVhfQ0xJRU5UU10sIGNsdF9hc3NvY2lkW01BWF9D TElFTlRTXTsKKwlzY3RwX2Fzc29jX3Qgc3ZyX2Fzc29jaWRbTUFYX0NMSUVOVFNdOwogCXNvY2th ZGRyX3N0b3JhZ2VfdCBzdnJfbG9vcCwgY2x0X2xvb3BbTUFYX0NMSUVOVFNdOwogCXN0cnVjdCBp b3ZlYyBpb3Y7CiAJc3RydWN0IG1zZ2hkciBpbm1lc3NhZ2U7CkBAIC0xNjYsOCArMTY2LDEwIEBA IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCXRlc3RfY2hlY2tfbXNnX25vdGlm aWNhdGlvbigmaW5tZXNzYWdlLCBlcnJvciwKIAkJCQkJICAgIHNpemVvZihzdHJ1Y3Qgc2N0cF9h c3NvY19jaGFuZ2UpLAogCQkJCQkgICAgU0NUUF9BU1NPQ19DSEFOR0UsIFNDVFBfQ09NTV9VUCk7 CisjaWYgMAogCQlzYWMgPSAoc3RydWN0IHNjdHBfYXNzb2NfY2hhbmdlICopaW92Lmlvdl9iYXNl OwogCQljbHRfYXNzb2NpZFtpXSA9IHNhYy0+c2FjX2Fzc29jX2lkOworI2VuZGlmCiAJfQogCiAJ LyogR2V0IHRoZSBjb21tdW5pY2F0aW9uIHVwIG1lc3NhZ2UgYW5kIHRoZSBkYXRhIG1lc3NhZ2Ug b24gdGhlCkBAIC0yMDAsNyArMjAyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAkvKiBWZXJpZnkgdGhhdCBhIHBlZWxlZCBvZmYgc29ja2V0IGlzIG5vdCBhbGxvd2VkIHRv IGRvIGEgbGlzdGVuKCkuICAqLwogCWVycm9yID0gbGlzdGVuKHBlZWxvZmZfc2tbMF0sIDEpOwog CWlmIChlcnJvciAhPSAtMSkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJsaXN0ZW4gb24gYSBw ZWVsZWQgb2ZmIHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImxpc3RlbiBv biBhIHBlZWxlZCBvZmYgc29ja2V0ICIKIAkJCSAiZXJyb3I6ICVkLCBlcnJubzogJWQiLCBlcnJv ciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJsaXN0ZW4gb24gYSBwZWVsZWQgb2ZmIHNv Y2tldCIpOwpAQCAtMjExLDcgKzIxMyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJICovCiAJaWYgKCgtMSAhPSBzY3RwX3BlZWxvZmYocGVlbG9mZl9za1swXSwgc3ZyX2Fz c29jaWRbMF0pKSB8fAogCSAgICAoRUlOVkFMICE9IGVycm5vKSkKLQkJdHN0X2Jya20oVEJST0ss IE5VTEwsICJzY3RwX3BlZWxvZmYgb24gYSBwZWVsZWQgb2ZmICIKKwkJdHN0X2Jya20oVEJST0ss IHRzdF9leGl0LCAic2N0cF9wZWVsb2ZmIG9uIGEgcGVlbGVkIG9mZiAiCiAJCQkgInNvY2tldCBl cnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJz Y3RwX3BlZWxvZmYgb24gYSBwZWVsZWQgb2ZmIHNvY2tldCIpOwpAQCAtMjkxLDUgKzI5Myw1IEBA IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJfQogCiAJLyogSW5kaWNhdGUgc3Vj Y2Vzc2Z1bCBjb21wbGV0aW9uLiAgKi8KLQl0c3RfZXhpdCgpOworCXJldHVybiAwOwogfQpkaWZm IC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfcmVjdm1zZy5j IGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfcmVjdm1zZy5jCmluZGV4 IGI2MzE0ZDguLjljZDAzMGIgMTAwNjQ0Ci0tLSBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVu Y190ZXN0cy90ZXN0X3JlY3Ztc2cuYworKysgYi90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNf dGVzdHMvdGVzdF9yZWN2bXNnLmMKQEAgLTEsMTYgKzEsMTYgQEAKLS8qIFNDVFAga2VybmVsIHJl ZmVyZW5jZSBJbXBsZW1lbnRhdGlvbgorLyogU0NUUCBrZXJuZWwgSW1wbGVtZW50YXRpb24KICAq IChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDIwMDIsIDIwMDMKICAqIENvcHlyaWdodCAoYykgMTk5 OS0yMDAxIE1vdG9yb2xhLCBJbmMuCiAgKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFND VFAga2VybmVsIHJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvbgorICogVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIFNDVFAga2VybmVsIEltcGxlbWVudGF0aW9uCiAgKgotICogVGhlIFNDVFAgcmVmZXJl bmNlIGltcGxlbWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7CisgKiBUaGUgU0NUUCBpbXBsZW1l bnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOwogICogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YKICAqIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKICAqIGFueSBsYXRlciB2 ZXJzaW9uLgogICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0CisgKiBUaGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0CiAgKiB3aWxsIGJlIHVzZWZ1bCwgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKICAqICAgICAg ICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioKICAqIHdhcnJhbnR5IG9mIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KZGlmZiAtLWdp dCBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0X3NjdHBfc2VuZHJlY3Zt c2cuYyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0X3NjdHBfc2VuZHJl Y3Ztc2cuYwppbmRleCBlZDQxODI5Li40NzU0YzNjIDEwMDY0NAotLS0gYS90ZXN0Y2FzZXMvbmV0 d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF9zY3RwX3NlbmRyZWN2bXNnLmMKKysrIGIvdGVzdGNh c2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3Rfc2N0cF9zZW5kcmVjdm1zZy5jCkBAIC0x LDE0ICsxLDE0IEBACi0vKiBTQ1RQIGtlcm5lbCByZWZlcmVuY2UgSW1wbGVtZW50YXRpb24KKy8q IFNDVFAga2VybmVsIEltcGxlbWVudGF0aW9uCiAgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAy MDAzCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDMgSW50ZWwgQ29ycC4KICAqCi0gKiBUaGUgU0NUUCBy ZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsKKyAqIFRoZSBTQ1RQIGlt cGxlbWVudGF0aW9uIGlzIGZyZWUgc29mdHdhcmU7CiAgKiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZgogICogdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICogdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQogICogYW55IGxh dGVyIHZlcnNpb24uCiAgKgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKKyAqIFRoZSBTQ1RQIGltcGxlbWVudGF0 aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKICAqIHdpbGwgYmUgdXNlZnVs LCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAogICog ICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKgogICogd2FycmFudHkgb2Yg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgpAQCAt MzQsNyArMzQsNyBAQAogICoKICAqIFdyaXR0ZW4gb3IgbW9kaWZpZWQgYnk6CiAgKiAgICBBcmRl bGxlIEZhbgkJPGFyZGVsbGUuZmFuQGludGVsLmNvbT4KLSAqICAgIFNyaWRoYXIgU2FtdWRyYWxh CSAJPHNyaUB1cy5pYm0uY29tPgorICogICAgU3JpZGhhciBTYW11ZHJhbGEJCTxzcmlAdXMuaWJt LmNvbT4KICAqLwogCiAvKiBUaGlzIGlzIGEgYmFzaWMgZnVuY3Rpb25hbCB0ZXN0IGZvciB0aGUg U0NUUCBuZXcgbGlicmFyeSBBUElzCkBAIC03NywxOSArNzcsMTkgQEAgaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAlzb2NrYWRkcl9zdG9yYWdlX3QgbG9vcDI7CiAJc29ja2FkZHJf c3RvcmFnZV90IG1zZ25hbWU7CiAJaW50IGVycm9yOwotCWludCBwZl9jbGFzcywgYWZfZmFtaWx5 OworCWludCBwZl9jbGFzczsKIAl1aW50MzJfdCBwcGlkOwogCXVpbnQzMl90IHN0cmVhbTsKIAlz dHJ1Y3Qgc2N0cF9ldmVudF9zdWJzY3JpYmUgc3Vic2NyaWJlOwogCWNoYXIgKmJpZ19idWZmZXI7 CiAJaW50IG9mZnNldCwgbXNnX2ZsYWdzOwotCXNvY2tsZW5fdCBtc2duYW1lX2xlbiwgbGVuOwor CXNvY2tsZW5fdCBtc2duYW1lX2xlbjsKIAlzaXplX3QgYnVmbGVuOwogCXN0cnVjdCBzY3RwX3Nl bmRfZmFpbGVkICpzc2Y7CiAJc3RydWN0IHNjdHBfc25kcmN2aW5mbyBzaW5mbzsKIAlzdHJ1Y3Qg c2N0cF9zbmRyY3ZpbmZvIHNuZF9zaW5mbzsKLQlzY3RwX2Fzc29jX3QgYXNzb2NpZDEsIGFzc29j aWQyOwotCWludCBvbGRsZW47CisJc2N0cF9hc3NvY190IGFzc29jaWQxOworCXNvY2tsZW5fdCBs ZW4sIG9sZGxlbjsKIAlzdHJ1Y3Qgc2N0cF9zdGF0dXMgZ3N0YXR1czsKIAogCS8qIFJhdGhlciB0 aGFuIGZmbHVzaCgpIHRocm91Z2hvdXQgdGhlIGNvZGUsIHNldCBzdGRvdXQgdG8KQEAgLTEwMCw3 ICsxMDAsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qIFNldCBzb21l IGJhc2ljIHZhbHVlcyB3aGljaCBkZXBlbmQgb24gdGhlIGFkZHJlc3MgZmFtaWx5LiAqLwogI2lm IFRFU1RfVjYKIAlwZl9jbGFzcyA9IFBGX0lORVQ2OwotCWFmX2ZhbWlseSA9IEFGX0lORVQ2Owog CiAJbG9vcDEudjYuc2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKIAlsb29wMS52Ni5zaW42X2FkZHIg PSBpbjZhZGRyX2xvb3BiYWNrOwpAQCAtMTExLDcgKzExMCw2IEBAIGludCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCiAJbG9vcDIudjYuc2luNl9wb3J0ID0gaHRvbnMoU0NUUF9URVNUUE9S VF8yKTsKICNlbHNlCiAJcGZfY2xhc3MgPSBQRl9JTkVUOwotCWFmX2ZhbWlseSA9IEFGX0lORVQ7 CiAKIAlsb29wMS52NC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKIAlsb29wMS52NC5zaW5fYWRkci5z X2FkZHIgPSBTQ1RQX0lQX0xPT1BCQUNLOwpAQCAtMTUxLDE0ICsxNDksMTQgQEAgaW50IG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAllcnJvciA9IGdldHNvY2tvcHQoc2syLCBTT0xfU09D S0VULCBTT19SQ1ZCVUYsICZvbGRsZW4sICZsZW4pOwogCiAJaWYgKGVycm9yKQotCQl0c3RfYnJr bShUQlJPSywgTlVMTCwgImNhbid0IGdldCByY3ZidWYgc2l6ZTogJXMiLAorCQl0c3RfYnJrbShU QlJPSywgdHN0X2V4aXQsICJjYW4ndCBnZXQgcmN2YnVmIHNpemU6ICVzIiwKIAkJCSBzdHJlcnJv cihlcnJubykpOwogCiAJbGVuID0gU01BTExfUkNWQlVGOwkvKiBSZWFsbHkgYmVjb21lcyAyeGxl biB3aGVuIHNldC4gKi8KIAogCWVycm9yID0gc2V0c29ja29wdChzazIsIFNPTF9TT0NLRVQsIFNP X1JDVkJVRiwgJmxlbiwgc2l6ZW9mKGxlbikpOwogCWlmIChlcnJvcikKLQkJdHN0X2Jya20oVEJS T0ssIE5VTEwsICJzZXRzb2Nrb3B0KFNPX1JDVkJVRik6ICVzIiwKKwkJdHN0X2Jya20oVEJST0ss IHRzdF9leGl0LCAic2V0c29ja29wdChTT19SQ1ZCVUYpOiAlcyIsCiAJCQkgc3RyZXJyb3IoZXJy bm8pKTsKIAogCS8qIE1hcmsgc2syIGFzIGJlaW5nIGFibGUgdG8gYWNjZXB0IG5ldyBhc3NvY2lh dGlvbnMuICAqLwpAQCAtMTc3LDEwICsxNzUsMTMgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAlidWZsZW4gPSBSRUFMTFlfQklHOwogCWJpZ19idWZmZXIgPSB0ZXN0X21hbGxv YyhidWZsZW4pOwogCW1zZ25hbWVfbGVuID0gc2l6ZW9mKG1zZ25hbWUpOworCW1zZ19mbGFncyA9 IDA7CiAJZXJyb3IgPSB0ZXN0X3NjdHBfcmVjdm1zZyhzazIsIGJpZ19idWZmZXIsIGJ1ZmxlbiwK IAkJCQkgIChzdHJ1Y3Qgc29ja2FkZHIgKikmbXNnbmFtZSwgJm1zZ25hbWVfbGVuLAogCQkJCSAg JnNpbmZvLCAmbXNnX2ZsYWdzKTsKKyNpZiAwCiAJYXNzb2NpZDIgPSAoKHN0cnVjdCBzY3RwX2Fz c29jX2NoYW5nZSAqKWJpZ19idWZmZXIpLT5zYWNfYXNzb2NfaWQ7CisjZW5kaWYKIAl0ZXN0X2No ZWNrX2J1Zl9ub3RpZmljYXRpb24oYmlnX2J1ZmZlciwgZXJyb3IsIG1zZ19mbGFncywKIAkJCQkg ICAgc2l6ZW9mKHN0cnVjdCBzY3RwX2Fzc29jX2NoYW5nZSksCiAJCQkJICAgIFNDVFBfQVNTT0Nf Q0hBTkdFLCBTQ1RQX0NPTU1fVVApOwpAQCAtMTg5LDEyICsxOTAsMTMgQEAgaW50IG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAllcnJvciA9IHNldHNvY2tvcHQoc2syLCBTT0xfU09DS0VU LCBTT19SQ1ZCVUYsICZvbGRsZW4sIHNpemVvZihvbGRsZW4pKTsKIAogCWlmIChlcnJvcikKLQkJ dHN0X2Jya20oVEJST0ssIE5VTEwsICJzZXRzb2Nrb3B0KFNPX1JDVkJVRik6ICVzIiwKKwkJdHN0 X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2V0c29ja29wdChTT19SQ1ZCVUYpOiAlcyIsCiAJCQkg c3RyZXJyb3IoZXJybm8pKTsKIAogCS8qIEdldCB0aGUgY29tbXVuaWNhdGlvbiB1cCBtZXNzYWdl IG9uIHNrMS4gICovCiAJYnVmbGVuID0gUkVBTExZX0JJRzsKIAltc2duYW1lX2xlbiA9IHNpemVv Zihtc2duYW1lKTsKKwltc2dfZmxhZ3MgPSAwOwogCWVycm9yID0gdGVzdF9zY3RwX3JlY3Ztc2co c2sxLCBiaWdfYnVmZmVyLCBidWZsZW4sCiAJCQkJICAoc3RydWN0IHNvY2thZGRyICopJm1zZ25h bWUsICZtc2duYW1lX2xlbiwKIAkJCQkgICZzaW5mbywgJm1zZ19mbGFncyk7CkBAIC0yMDgsNiAr MjEwLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKiBHZXQgdGhlIGZp cnN0IG1lc3NhZ2Ugd2hpY2ggd2FzIHNlbnQuICAqLwogCWJ1ZmxlbiA9IFJFQUxMWV9CSUc7CiAJ bXNnbmFtZV9sZW4gPSBzaXplb2YobXNnbmFtZSk7CisJbXNnX2ZsYWdzID0gMDsKIAllcnJvciA9 IHRlc3Rfc2N0cF9yZWN2bXNnKHNrMiwgYmlnX2J1ZmZlciwgYnVmbGVuLAogCQkJCSAgKHN0cnVj dCBzb2NrYWRkciAqKSZtc2duYW1lLCAmbXNnbmFtZV9sZW4sCiAJCQkJICAmc2luZm8sICZtc2df ZmxhZ3MpOwpAQCAtMjIzLDcgKzIyNiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJZXJyb3IgPSBnZXRzb2Nrb3B0KHNrMSwgSVBQUk9UT19TQ1RQLCBTQ1RQX1NUQVRVUywg JmdzdGF0dXMsICZsZW4pOwogCiAJaWYgKGVycm9yKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwg ImNhbid0IGdldCByd25kIHNpemU6ICVzIiwKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAi Y2FuJ3QgZ2V0IHJ3bmQgc2l6ZTogJXMiLAogCQkJIHN0cmVycm9yKGVycm5vKSk7CiAJdHN0X3Jl c20oVElORk8sICJjcmVhdGluZyBhIGZpbGxtc2cgb2Ygc2l6ZSAlZCIsCiAJCSBnc3RhdHVzLnNz dGF0X3J3bmQgKyBSV05EX1NMT1ApOwpAQCAtMjY5LDYgKzI3Miw3IEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJZG8gewogCQlidWZsZW4gPSBSRUFMTFlfQklHOwogCQltc2du YW1lX2xlbiA9IHNpemVvZihtc2duYW1lKTsKKwkJbXNnX2ZsYWdzID0gMDsKIAkJdGVzdF9zY3Rw X3JlY3Ztc2coc2syLCBiaWdfYnVmZmVyLCBidWZsZW4sCiAJCQkJICAoc3RydWN0IHNvY2thZGRy ICopJm1zZ25hbWUsICZtc2duYW1lX2xlbiwKIAkJCQkgICZzaW5mbywgJm1zZ19mbGFncyk7CkBA IC0yNzcsMTMgKzI4MSwxNCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8q IEdldCB0aGUgbWVzc2FnZSB0aGF0IGRpZCBOT1QgdGltZSBvdXQuICovCiAJYnVmbGVuID0gUkVB TExZX0JJRzsKIAltc2duYW1lX2xlbiA9IHNpemVvZihtc2duYW1lKTsKKwltc2dfZmxhZ3MgPSAw OwogCWVycm9yID0gdGVzdF9zY3RwX3JlY3Ztc2coc2syLCBiaWdfYnVmZmVyLCBidWZsZW4sCiAJ CQkJICAoc3RydWN0IHNvY2thZGRyICopJm1zZ25hbWUsICZtc2duYW1lX2xlbiwKIAkJCQkgICZz aW5mbywgJm1zZ19mbGFncyk7CiAJdGVzdF9jaGVja19idWZfZGF0YShiaWdfYnVmZmVyLCBlcnJv ciwgbXNnX2ZsYWdzLCAmc2luZm8sCiAJCQkgICAgc3RybGVuKG5vdHRsbXNnKSArIDEsIE1TR19F T1IsIHN0cmVhbSwgcHBpZCk7CiAJaWYgKDAgIT0gc3RybmNtcChiaWdfYnVmZmVyLCBub3R0bG1z Zywgc3RybGVuKG5vdHRsbXNnKSkpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2N0cF9yZWN2 bXNnOiBXcm9uZyBNZXNzYWdlICEhISIpOworCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJz Y3RwX3JlY3Ztc2c6IFdyb25nIE1lc3NhZ2UgISEhIik7CiAKIAl0c3RfcmVzbShUUEFTUywgInNj dHBfcmVjdm1zZyBtc2cgd2l0aCB6ZXJvIHR0bCIpOwogCkBAIC0yOTIsNiArMjk3LDcgQEAgaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkgKi8KIAlidWZsZW4gPSBSRUFMTFlfQklH OwogCW1zZ25hbWVfbGVuID0gc2l6ZW9mKG1zZ25hbWUpOworCW1zZ19mbGFncyA9IDA7CiAJZXJy b3IgPSB0ZXN0X3NjdHBfcmVjdm1zZyhzazEsIGJpZ19idWZmZXIsIGJ1ZmxlbiwKIAkJCQkgIChz dHJ1Y3Qgc29ja2FkZHIgKikmbXNnbmFtZSwgJm1zZ25hbWVfbGVuLAogCQkJCSAgJnNpbmZvLCAm bXNnX2ZsYWdzKTsKQEAgLTMwMCw3ICszMDYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCQkJCSAgICBzdHJsZW4odHRsbXNnKSArIDEsIFNDVFBfU0VORF9GQUlMRUQsIDAp OwogCXNzZiA9IChzdHJ1Y3Qgc2N0cF9zZW5kX2ZhaWxlZCAqKWJpZ19idWZmZXI7CiAJaWYgKDAg IT0gc3RybmNtcCh0dGxtc2csIChjaGFyICopc3NmLT5zc2ZfZGF0YSwgc3RybGVuKHR0bG1zZykg KyAxKSkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJTRU5EX0ZBSUxFRCBkYXRhIG1pc21hdGNo Iik7CisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgIlNFTkRfRkFJTEVEIGRhdGEgbWlzbWF0 Y2giKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAic2N0cF9yZWN2bXNnIFNFTkRfRkFJTEVEIGZvciBt ZXNzYWdlIHdpdGggdHRsIik7CiAKQEAgLTMxMiw2ICszMTgsNyBAQCBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCWRvIHsKIAkJYnVmbGVuID0gUkVBTExZX0JJRzsKIAkJbXNnbmFt ZV9sZW4gPSBzaXplb2YobXNnbmFtZSk7CisJCW1zZ19mbGFncyA9IDA7CiAJCWVycm9yID0gdGVz dF9zY3RwX3JlY3Ztc2coc2sxLCBiaWdfYnVmZmVyLCBidWZsZW4sCiAJCQkJCSAgKHN0cnVjdCBz b2NrYWRkciAqKSZtc2duYW1lLAogCQkJCQkgICZtc2duYW1lX2xlbiwgJnNpbmZvLCAmbXNnX2Zs YWdzKTsKQEAgLTMyMSw3ICszMjgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQogCQlzc2YgPSAoc3RydWN0IHNjdHBfc2VuZF9mYWlsZWQgKiliaWdfYnVmZmVyOwogCQlpZiAo MCAhPSBzdHJuY21wKCZ0dGxmcmFnW29mZnNldF0sIChjaGFyICopc3NmLT5zc2ZfZGF0YSwKIAkJ CQkgU01BTExfTUFYU0VHKSkKLQkJCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiU0VORF9GQUlMRUQg ZGF0YSBtaXNtYXRjaCIpOworCQkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiU0VORF9GQUlM RUQgZGF0YSBtaXNtYXRjaCIpOwogCQlvZmZzZXQgKz0gU01BTExfTUFYU0VHOwogCX0gd2hpbGUg KCEoc3NmLT5zc2ZfaW5mby5zaW5mb19mbGFncyAmIDB4MDEpKTsJLyogTEFTVCBGUkFHICovCiAK QEAgLTMzOCw2ICszNDUsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJ YnVmbGVuID0gUkVBTExZX0JJRzsKIAltc2duYW1lX2xlbiA9IHNpemVvZihtc2duYW1lKTsKKwlt c2dfZmxhZ3MgPSAwOwogCWVycm9yID0gdGVzdF9zY3RwX3JlY3Ztc2coc2syLCBiaWdfYnVmZmVy LCBidWZsZW4sCiAJCQkJICAoc3RydWN0IHNvY2thZGRyICopJm1zZ25hbWUsICZtc2duYW1lX2xl biwKIAkJCQkgICZzaW5mbywgJm1zZ19mbGFncyk7CkBAIC0zNTMsNiArMzYxLDcgQEAgaW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKiBHZXQgdGhlIHNodXRkb3duIGNvbXBsZXRl IG5vdGlmaWNhdGlvbi4gKi8KIAlidWZsZW4gPSBSRUFMTFlfQklHOwogCW1zZ25hbWVfbGVuID0g c2l6ZW9mKG1zZ25hbWUpOworCW1zZ19mbGFncyA9IDA7CiAJZXJyb3IgPSB0ZXN0X3NjdHBfcmVj dm1zZyhzazIsIGJpZ19idWZmZXIsIGJ1ZmxlbiwKIAkJCQkgIChzdHJ1Y3Qgc29ja2FkZHIgKikm bXNnbmFtZSwgJm1zZ25hbWVfbGVuLAogCQkJCSAgJnNpbmZvLCAmbXNnX2ZsYWdzKTsKQEAgLTM2 Myw1ICszNzIsNSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWNsb3NlKHNr Mik7CiAKIAkvKiBJbmRpY2F0ZSBzdWNjZXNzZnVsIGNvbXBsZXRpb24uICAqLwotCXRzdF9leGl0 KCk7CisJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1 bmNfdGVzdHMvdGVzdF9zb2Nrb3B0LmMgYi90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVz dHMvdGVzdF9zb2Nrb3B0LmMKaW5kZXggMGRjMzMyNC4uOTZiZWNmMCAxMDA2NDQKLS0tIGEvdGVz dGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3Rfc29ja29wdC5jCisrKyBiL3Rlc3Rj YXNlcy9uZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0X3NvY2tvcHQuYwpAQCAtMSwxNyArMSwx NyBAQAotLyogU0NUUCBrZXJuZWwgcmVmZXJlbmNlIEltcGxlbWVudGF0aW9uCisvKiBTQ1RQIGtl cm5lbCBJbXBsZW1lbnRhdGlvbgogICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMjAwMSwgMjAw NAogICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDAgQ2lzY28sIEluYy4KICAqIENvcHlyaWdodCAo YykgMTk5OS0yMDAxIE1vdG9yb2xhLCBJbmMuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDEgSW50ZWwg Q29ycC4KICAqIENvcHlyaWdodCAoYykgMjAwMSBOb2tpYSwgSW5jLgogICoKLSAqIFRoZSBTQ1RQ IHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOworICogVGhlIFNDVFAg aW1wbGVtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsKICAqIHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mCiAgKiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCiAgKiBhbnkg bGF0ZXIgdmVyc2lvbi4KICAqCi0gKiBUaGUgU0NUUCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdAorICogVGhlIFNDVFAgaW1wbGVtZW50 YXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdAogICogd2lsbCBiZSB1c2Vm dWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkCiAg KiAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiB3YXJyYW50eSBv ZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCkBA IC03Nyw3ICs3Nyw3IEBAIGludCBtYWluKHZvaWQpCiAJc3RydWN0IGlvdmVjIG91dF9pb3Y7CiAJ Y2hhciAqbWVzc2FnZSA9ICJoZWxsbywgd29ybGQhXG4iOwogCWludCBlcnJvcjsKLQlpbnQgcGZf Y2xhc3MsIGFmX2ZhbWlseTsKKwlpbnQgcGZfY2xhc3M7CiAJdWludDMyX3QgcHBpZDsKIAl1aW50 MzJfdCBzdHJlYW07CiAJc2N0cF9hc3NvY190IHVkcF9zdnJfYXNzb2NpZCwgdWRwX2NsdF9hc3Nv Y2lkOwpAQCAtODUsNiArODUsNyBAQCBpbnQgbWFpbih2b2lkKQogCWNoYXIgKmJpZ19idWZmZXI7 CiAJc3RydWN0IHNjdHBfZXZlbnRfc3Vic2NyaWJlIHN1YnNjcmliZTsKIAlzdHJ1Y3Qgc2N0cF9p bml0bXNnIGluaXRtc2c7CisJc3RydWN0IHNjdHBfcGFkZHJwYXJhbXMgcGFkZHJwYXJhbXM7CiAJ c3RydWN0IHNjdHBfc25kcmN2aW5mbyBzZXRfdWRwX3NrX2RmbHRfcGFyYW0sIGdldF91ZHBfc2tf ZGZsdF9wYXJhbTsKIAlzdHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvIHNldF90Y3Bfc2tfZGZsdF9wYXJh bSwgZ2V0X3RjcF9za19kZmx0X3BhcmFtOwogCXN0cnVjdCBzY3RwX3NuZHJjdmluZm8gc2V0X3Vk cF9hc3NvY19kZmx0X3BhcmFtOwpAQCAtOTQsOCArOTUsMTAgQEAgaW50IG1haW4odm9pZCkKIAlz dHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvIGdldF9wZWVsb2ZmX2Fzc29jX2RmbHRfcGFyYW07CiAJc3Ry dWN0IHNjdHBfc25kcmN2aW5mbyBnZXRfYWNjZXB0X2Fzc29jX2RmbHRfcGFyYW07CiAJc3RydWN0 IHNjdHBfcGFkZHJpbmZvIHBpbmZvOworCWludCBkZmx0X3BhdGhtYXhyeHQ7CiAJc29ja2xlbl90 IG9wdGxlbiwgYWRkcmxlbjsKIAlzdHJ1Y3Qgc2N0cF9zdGF0dXMgc3RhdHVzOworCXN0cnVjdCBz Y3RwX2Fzc29jX3ZhbHVlIHZhbHVlOwogCiAJLyogUmF0aGVyIHRoYW4gZmZsdXNoKCkgdGhyb3Vn aG91dCB0aGUgY29kZSwgc2V0IHN0ZG91dCB0bwogCSAqIGJlIHVuYnVmZmVyZWQuCkBAIC0xMDUs NyArMTA4LDYgQEAgaW50IG1haW4odm9pZCkKIAkvKiBTZXQgc29tZSBiYXNpYyB2YWx1ZXMgd2hp Y2ggZGVwZW5kIG9uIHRoZSBhZGRyZXNzIGZhbWlseS4gKi8KICNpZiBURVNUX1Y2CiAJcGZfY2xh c3MgPSBQRl9JTkVUNjsKLQlhZl9mYW1pbHkgPSBBRl9JTkVUNjsKIAogCXVkcF9zdnJfbG9vcC52 Ni5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OwogCXVkcF9zdnJfbG9vcC52Ni5zaW42X2FkZHIgPSBp bjZhZGRyX2xvb3BiYWNrOwpAQCAtMTI0LDcgKzEyNiw2IEBAIGludCBtYWluKHZvaWQpCiAJdGNw X2NsdF9sb29wLnY2LnNpbjZfcG9ydCA9IGh0b25zKFNDVFBfVEVTVFBPUlRfMSArIDMpOwogI2Vs c2UKIAlwZl9jbGFzcyA9IFBGX0lORVQ7Ci0JYWZfZmFtaWx5ID0gQUZfSU5FVDsKIAogCXVkcF9z dnJfbG9vcC52NC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKIAl1ZHBfc3ZyX2xvb3AudjQuc2luX2Fk ZHIuc19hZGRyID0gU0NUUF9JUF9MT09QQkFDSzsKQEAgLTE2Niw3ICsxNjcsNyBAQCBpbnQgbWFp bih2b2lkKQogCW1lbXNldCgmc3RhdHVzLCAwLCBvcHRsZW4pOwogCWVycm9yID0gZ2V0c29ja29w dCh1ZHBfc3ZyX3NrLCBTT0xfU0NUUCwgU0NUUF9TVEFUVVMsICZzdGF0dXMsICZvcHRsZW4pOwog CWlmICgoZXJyb3IgIT0gLTEpICYmIChlcnJubyAhPSBFSU5WQUwpKQotCQl0c3RfYnJrbShUQlJP SywgTlVMTCwgImdldHNvY2tvcHQoU0NUUF9TVEFUVVMpIG9uIGEgIgorCQl0c3RfYnJrbShUQlJP SywgdHN0X2V4aXQsICJnZXRzb2Nrb3B0KFNDVFBfU1RBVFVTKSBvbiBhICIKIAkJCSAic29ja2V0 IHdpdGggbm8gYXNzb2MgZXJyb3I6JWQgZXJybm86JWQiLAogCQkJIGVycm9yLCBlcnJubyk7CiAK QEAgLTI0Miw3ICsyNDMsNyBAQCBpbnQgbWFpbih2b2lkKQogCXN0YXR1cy5zc3RhdF9hc3NvY19p ZCA9IHVkcF9zdnJfYXNzb2NpZDsKIAllcnJvciA9IGdldHNvY2tvcHQodWRwX2NsdF9zaywgU09M X1NDVFAsIFNDVFBfU1RBVFVTLCAmc3RhdHVzLCAmb3B0bGVuKTsKIAlpZiAoKGVycm9yICE9IC0x KSAmJiAoZXJybm8gIT0gRUlOVkFMKSkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJnZXRzb2Nr b3B0KFNDVFBfU1RBVFVTKSB3aXRoICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiZ2V0 c29ja29wdChTQ1RQX1NUQVRVUykgd2l0aCAiCiAJCQkgImFzc29jaWQgZXJyb3I6ICVkIGVycm5v OiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAiZ2V0c29ja29wdChTQ1RQ X1NUQVRVUykgd2l0aCBpbnZhbGlkIGFzc29jaWQiKTsKQEAgLTI1Myw3ICsyNTQsNyBAQCBpbnQg bWFpbih2b2lkKQogCXN0YXR1cy5zc3RhdF9hc3NvY19pZCA9IDA7CiAJZXJyb3IgPSBnZXRzb2Nr b3B0KHVkcF9zdnJfc2ssIFNPTF9TQ1RQLCBTQ1RQX1NUQVRVUywgJnN0YXR1cywgJm9wdGxlbik7 CiAJaWYgKChlcnJvciAhPSAtMSkgJiYgKGVycm5vICE9IEVJTlZBTCkpCi0JCXRzdF9icmttKFRC Uk9LLCBOVUxMLCAiZ2V0c29ja29wdChTQ1RQX1NUQVRVUykgd2l0aCAiCisJCXRzdF9icmttKFRC Uk9LLCB0c3RfZXhpdCwgImdldHNvY2tvcHQoU0NUUF9TVEFUVVMpIHdpdGggIgogCQkJICJOVUxM IGFzc29jaWQgZXJyb3I6ICVkIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNt KFRQQVNTLCAiZ2V0c29ja29wdChTQ1RQX1NUQVRVUykgd2l0aCBOVUxMIGFzc29jaWQiKTsKQEAg LTMyNiw3ICszMjcsOCBAQCBpbnQgbWFpbih2b2lkKQogCQkJICAgIE1TR19FT1IsIDAsIDApOwog CS8qIFZlcmlmeSB0aGF0IHdlIHJlY2VpdmVkIHRoZSBtc2cgd2l0aG91dCBhbnkgYW5jaWxsYXJ5 IGRhdGEuICovCiAJaWYgKGlubWVzc2FnZS5tc2dfY29udHJvbGxlbiAhPSAwKQotCQl0c3RfYnJr bShUQlJPSywgTlVMTCwgIlJlY2VpdmUgdW5leHBlY3RlZCBhbmNpbGxhcnkiICJkYXRhIik7CisJ CXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgIlJlY2VpdmUgdW5leHBlY3RlZCBhbmNpbGxhcnki CisJCQkgImRhdGEiKTsKIAogCS8qIEVuYWJsZSBTQ1RQX1NIVVRET1dOX0VWRU5UcyBvbiB1ZHBf c3ZyX3NrLiAqLwogCW1lbXNldCgmc3Vic2NyaWJlLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfZXZl bnRfc3Vic2NyaWJlKSk7CkBAIC00MTAsNyArNDEyLDcgQEAgaW50IG1haW4odm9pZCkKIAkJZXJy b3IgPSBzY3RwX29wdF9pbmZvKHVkcF9jbHRfc2ssIHVkcF9jbHRfYXNzb2NpZCwgU0NUUF9TVEFU VVMsCiAJCQkJICAgICAgKGNoYXIgKikmc3RhdHVzMSwgJm9wdGxlbik7CiAJCWlmIChlcnJvciAh PSAwKQotCQkJdHN0X2Jya20oVEJST0ssIE5VTEwsCisJCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4 aXQsCiAJCQkJICJzY3RwX29wdF9pbmZvKFNDVFBfU1RBVFVTKTogJXMiLAogCQkJCSBzdHJlcnJv cihlcnJubykpOwogCkBAIC00MTgsMTEgKzQyMCwxMSBAQCBpbnQgbWFpbih2b2lkKQogCQllcnJv ciA9IGdldHNvY2tvcHQodWRwX2NsdF9zaywgSVBQUk9UT19TQ1RQLCBTQ1RQX1NUQVRVUywKIAkJ CQkgICAoY2hhciAqKSZzdGF0dXMyLCAmb3B0bGVuKTsKIAkJaWYgKGVycm9yICE9IDApCi0JCQl0 c3RfYnJrbShUQlJPSywgTlVMTCwKKwkJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwKIAkJCQkg ImdldHNvY2tvcHQoU0NUUF9TVEFUVVMpOiAlcyIsCiAJCQkJIHN0cmVycm9yKGVycm5vKSk7CiAJ CWlmIChzdHJuY21wKChjaGFyICopJnN0YXR1czEsIChjaGFyICopJnN0YXR1czIsIG9wdGxlbikp Ci0JCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNjdHBfb3B0X2luZm8oU0NUUF9TVEFVUykiCisJ CQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzY3RwX29wdF9pbmZvKFNDVFBfU1RBVVMpIgog CQkJCSAiZG9lc24ndCBtYXRjaCBnZXRzb2Nrb3B0KFNDVFBfU1RBVFVTKSIpOwogCiAJCXRzdF9y ZXNtKFRQQVNTLCAic2N0cF9vcHRfaW5mbyhTQ1RQX1NUQVRVUykiKTsKQEAgLTQ2Myw3ICs0NjUs MjUzIEBAIGludCBtYWluKHZvaWQpCiAKIAljbG9zZSh1ZHBfc3ZyX3NrKTsKIAotCS8qIFRFU1Qg IzU6IFNDVFBfREVGQVVMVF9TRU5EX1BBUkFNIHNvY2tldCBvcHRpb24uICovCisJLyogVEVTVCAj NTogU0NUUF9QRUVSX0FERFJfUEFSQU1TIHNvY2tldCBvcHRpb24uICovCisJLyogQ3JlYXRlIGEg c29ja2V0LiAgKi8KKwl1ZHBfc3ZyX3NrID0gdGVzdF9zb2NrZXQocGZfY2xhc3MsIFNPQ0tfU0VR UEFDS0VULCBJUFBST1RPX1NDVFApOworCisJLyogR2V0IHRoZSBkZWZhdWx0IHBhcmFtZXRlcnMg Zm9yIHRoaXMgZW5kcG9pbnQgKi8KKwlvcHRsZW4gPSBzaXplb2YocGFkZHJwYXJhbXMpOworCW1l bXNldCgmcGFkZHJwYXJhbXMsIDAsIHNpemVvZihwYWRkcnBhcmFtcykpOworCXBhZGRycGFyYW1z LnNwcF9hZGRyZXNzLnNzX2ZhbWlseSA9IEFGX0lORVQ7CisJdGVzdF9nZXRzb2Nrb3B0KHVkcF9z dnJfc2ssIFNDVFBfUEVFUl9BRERSX1BBUkFNUywgJnBhZGRycGFyYW1zLAorCQkJJm9wdGxlbik7 CisKKwlkZmx0X3BhdGhtYXhyeHQgPSBwYWRkcnBhcmFtcy5zcHBfcGF0aG1heHJ4dDsKKwl0c3Rf cmVzbShUUEFTUywgImdldHNvY2tvcHQoU0NUUF9QRUVSX0FERFJfUEFSQU1TKSIpOworCisJLyog Q2hhbmdlIHRoZSBkZWZhdWx0IHBhcmFtZXRlcnMgZm9yIHRoaXMgZW5kcG9pbnQgKHNvY2tldCkg Ki8KKwlwYWRkcnBhcmFtcy5zcHBfaGJpbnRlcnZhbCA9IDEwMDA7CisJcGFkZHJwYXJhbXMuc3Bw X3BhdGhtYXhyeHQgPSBkZmx0X3BhdGhtYXhyeHQgKyAxOworCXBhZGRycGFyYW1zLnNwcF9zYWNr ZGVsYXkgPSAxMDA7CisJdGVzdF9zZXRzb2Nrb3B0KHVkcF9zdnJfc2ssIFNDVFBfUEVFUl9BRERS X1BBUkFNUywgJnBhZGRycGFyYW1zLAorCQkJc2l6ZW9mKHBhZGRycGFyYW1zKSk7CisKKwlwYWRk cnBhcmFtcy5zcHBfcGF0aG1heHJ4dCA9IDA7CisKKwkvKiBHZXQgdGhlIHVwZGF0ZWQgZGVmYXVs dCBwYXJhbWV0ZXJzIGZvciB0aGlzIGVuZHBvaW50LiAqLworCW9wdGxlbiA9IHNpemVvZihwYWRk cnBhcmFtcyk7CisJdGVzdF9nZXRzb2Nrb3B0KHVkcF9zdnJfc2ssIFNDVFBfUEVFUl9BRERSX1BB UkFNUywgJnBhZGRycGFyYW1zLAorCQkJJm9wdGxlbik7CisJaWYgKHBhZGRycGFyYW1zLnNwcF9w YXRobWF4cnh0ICE9IGRmbHRfcGF0aG1heHJ4dCArIDEpCisJCXRzdF9icmttKFRCUk9LLCB0c3Rf ZXhpdCwgInNldHNvY2tvcHQoU0NUUF9QRUVSX0FERFJfUEFSQU1TKSAiCisJCQkgIm1pc21hdGNo Iik7CisKKwl2YWx1ZS5hc3NvY19pZCA9IDA7CisJb3B0bGVuID0gc2l6ZW9mKHZhbHVlKTsKKwl0 ZXN0X2dldHNvY2tvcHQodWRwX3N2cl9zaywgU0NUUF9ERUxBWUVEX0FDS19USU1FLCAmdmFsdWUs ICZvcHRsZW4pOworCWlmICh2YWx1ZS5hc3NvY192YWx1ZSAhPSAxMDApCisJCXRzdF9icmttKFRC Uk9LLCB0c3RfZXhpdCwgImdldHNvY2tvcHQoU0NUUF9ERUxBWUVEX0FDS19USU1FKSAiCisJCQkg Im1pc21hdGNoIik7CisKKwl2YWx1ZS5hc3NvY19pZCA9IDA7CisJdmFsdWUuYXNzb2NfdmFsdWUg PSAyNTA7CisJdGVzdF9zZXRzb2Nrb3B0KHVkcF9zdnJfc2ssIFNDVFBfREVMQVlFRF9BQ0tfVElN RSwgJnZhbHVlLAorCQkJc2l6ZW9mKHZhbHVlKSk7CisJb3B0bGVuID0gc2l6ZW9mKHBhZGRycGFy YW1zKTsKKwl0ZXN0X2dldHNvY2tvcHQodWRwX3N2cl9zaywgU0NUUF9QRUVSX0FERFJfUEFSQU1T LCAmcGFkZHJwYXJhbXMsCisJCQkmb3B0bGVuKTsKKwlpZiAocGFkZHJwYXJhbXMuc3BwX3NhY2tk ZWxheSAhPSAyNTApCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNldHNvY2tvcHQoU0NU UF9ERUxBWUVEX0FDS19USU1FKSAiCisJCQkgIm1pc21hdGNoIik7CisKKwl0c3RfcmVzbShUUEFT UywgInNldHNvY2tvcHQoU0NUUF9ERUxBWUVEX0FDS19USU1FKSIpOworCisJLyogRW5zdXJlIHRo YXQgcHJpb3IgZGVmYXVsdHMgYXJlIHByZXNlcnZlZCBmb3IgYSBuZXcgZW5kcG9pbnQgKi8KKwl1 ZHBfY2x0X3NrID0gdGVzdF9zb2NrZXQocGZfY2xhc3MsIFNPQ0tfU0VRUEFDS0VULCBJUFBST1RP X1NDVFApOworCW9wdGxlbiA9IHNpemVvZihwYWRkcnBhcmFtcyk7CisJbWVtc2V0KCZwYWRkcnBh cmFtcywgMCwgc2l6ZW9mKHBhZGRycGFyYW1zKSk7CisJcGFkZHJwYXJhbXMuc3BwX2FkZHJlc3Mu c3NfZmFtaWx5ID0gQUZfSU5FVDsKKwl0ZXN0X2dldHNvY2tvcHQodWRwX2NsdF9zaywgU0NUUF9Q RUVSX0FERFJfUEFSQU1TLCAmcGFkZHJwYXJhbXMsCisJCQkmb3B0bGVuKTsKKwlpZiAocGFkZHJw YXJhbXMuc3BwX3BhdGhtYXhyeHQgIT0gZGZsdF9wYXRobWF4cnh0KQorCQl0c3RfYnJrbShUQlJP SywgdHN0X2V4aXQsICJnZXRzb2Nrb3B0KFNDVFBfUEVFUl9BRERSX1BBUkFNUykgIgorCQkJICJt aXNtYXRjaCIpOworCisJdHN0X3Jlc20oVFBBU1MsICJzZXRzb2Nrb3B0KFNDVFBfUEVFUl9BRERS X1BBUkFNUykiKTsKKworCS8qIEludmFsaWQgYXNzb2MgaWQgKi8KKwlwYWRkcnBhcmFtcy5zcHBf YXNzb2NfaWQgPSAxMjM0OworCWVycm9yID0gc2V0c29ja29wdCh1ZHBfY2x0X3NrLCBTT0xfU0NU UCwgU0NUUF9QRUVSX0FERFJfUEFSQU1TLAorCQkJICAgJnBhZGRycGFyYW1zLCBzaXplb2YocGFk ZHJwYXJhbXMpKTsKKwlpZiAoKC0xICE9IGVycm9yKSB8fCAoRUlOVkFMICE9IGVycm5vKSkKKwkJ dHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2V0c29ja29wdChTQ1RQX1BFRVJfQUREUl9QQVJB TVMpICIKKwkJCSAiaW52YWxpZCBhc3NvY2lkIGVycm9yOiVkLCBlcnJubzolZFxuIiwgZXJyb3Is IGVycm5vKTsKKworCXRzdF9yZXNtKFRQQVNTLCAic2V0c29ja29wdChTQ1RQX1BFRVJfQUREUl9Q QVJBTVMpICIKKwkJICItIG9uZS10by1tYW55IHN0eWxlIGludmFsaWQgYXNzb2NpZCIpOworCisJ dGVzdF9iaW5kKHVkcF9zdnJfc2ssICZ1ZHBfc3ZyX2xvb3Auc2EsIHNpemVvZih1ZHBfc3ZyX2xv b3ApKTsKKwl0ZXN0X2JpbmQodWRwX2NsdF9zaywgJnVkcF9jbHRfbG9vcC5zYSwgc2l6ZW9mKHVk cF9jbHRfbG9vcCkpOworCisJdGVzdF9saXN0ZW4odWRwX3N2cl9zaywgNSk7CisKKwl0ZXN0X2Vu YWJsZV9hc3NvY19jaGFuZ2UodWRwX3N2cl9zayk7CisJdGVzdF9lbmFibGVfYXNzb2NfY2hhbmdl KHVkcF9jbHRfc2spOworCisJLyogRG8gYSBjb25uZWN0IG9uIGEgVURQLXN0eWxlIHNvY2tldCBh bmQgZXN0YWJsaXNoIGFuIGFzc29jaWF0aW9uLiAqLworCXRlc3RfY29ubmVjdCh1ZHBfY2x0X3Nr LCAmdWRwX3N2cl9sb29wLnNhLCBzaXplb2YodWRwX3N2cl9sb29wKSk7CisKKwkvKiBSZWNlaXZl IHRoZSBDT01NX1VQIG5vdGlmaWNhdGlvbnMgYW5kIGdldCB0aGUgYXNzb2NpZCdzICovCisJaW5t ZXNzYWdlLm1zZ19jb250cm9sbGVuID0gc2l6ZW9mKGluY21zZyk7CisJZXJyb3IgPSB0ZXN0X3Jl Y3Ztc2codWRwX3N2cl9zaywgJmlubWVzc2FnZSwgTVNHX1dBSVRBTEwpOworCXRlc3RfY2hlY2tf bXNnX25vdGlmaWNhdGlvbigmaW5tZXNzYWdlLCBlcnJvciwKKwkJCQkgICAgc2l6ZW9mKHN0cnVj dCBzY3RwX2Fzc29jX2NoYW5nZSksCisJCQkJICAgIFNDVFBfQVNTT0NfQ0hBTkdFLCBTQ1RQX0NP TU1fVVApOworCXNhYyA9IChzdHJ1Y3Qgc2N0cF9hc3NvY19jaGFuZ2UgKilpb3YuaW92X2Jhc2U7 CisKKwlwYWRkcnBhcmFtcy5zcHBfYXNzb2NfaWQgPSBzYWMtPnNhY19hc3NvY19pZDsKKwltZW1j cHkoJnBhZGRycGFyYW1zLnNwcF9hZGRyZXNzLCAmdWRwX2NsdF9sb29wLCBzaXplb2YodWRwX2Ns dF9sb29wKSk7CisJcGFkZHJwYXJhbXMuc3BwX2hiaW50ZXJ2YWwgPSAxMDAwOworCXBhZGRycGFy YW1zLnNwcF9wYXRobWF4cnh0ID0gZGZsdF9wYXRobWF4cnh0ICsgMTsKKwl0ZXN0X3NldHNvY2tv cHQodWRwX3N2cl9zaywgU0NUUF9QRUVSX0FERFJfUEFSQU1TLCAmcGFkZHJwYXJhbXMsCisJCQlz aXplb2YocGFkZHJwYXJhbXMpKTsKKwl0c3RfcmVzbShUUEFTUywgInNldHNvY2tvcHQoU0NUUF9Q RUVSX0FERFJfUEFSQU1TKSAtICIKKwkJICJvbmUtdG8tbWFueSBzdHlsZSB2YWxpZCBhc3NvY2lk IHZhbGlkIGFkZHJlc3MiKTsKKworCXBhZGRycGFyYW1zLnNwcF9hc3NvY19pZCA9IHNhYy0+c2Fj X2Fzc29jX2lkOworCW1lbWNweSgmcGFkZHJwYXJhbXMuc3BwX2FkZHJlc3MsICZ1ZHBfc3ZyX2xv b3AsIHNpemVvZih1ZHBfc3ZyX2xvb3ApKTsKKwlwYWRkcnBhcmFtcy5zcHBfaGJpbnRlcnZhbCA9 IDEwMDA7CisJcGFkZHJwYXJhbXMuc3BwX3BhdGhtYXhyeHQgPSBkZmx0X3BhdGhtYXhyeHQgKyAx OworCisJZXJyb3IgPSBzZXRzb2Nrb3B0KHVkcF9jbHRfc2ssIFNPTF9TQ1RQLCBTQ1RQX1BFRVJf QUREUl9QQVJBTVMsCisJCQkgICAmcGFkZHJwYXJhbXMsIHNpemVvZihwYWRkcnBhcmFtcykpOwor CWlmICgoLTEgIT0gZXJyb3IpIHx8IChFSU5WQUwgIT0gZXJybm8pKQorCQl0c3RfYnJrbShUQlJP SywgdHN0X2V4aXQsICJzZXRzb2Nrb3B0KFNDVFBfUEVFUl9BRERSX1BBUkFNUykgIgorCQkJICJp bnZhbGlkIHRyYW5zcG9ydCBlcnJvcjolZCwgZXJybm86JWRcbiIsCisJCQkgZXJyb3IsIGVycm5v KTsKKworCXRzdF9yZXNtKFRQQVNTLCAic2V0c29ja29wdChTQ1RQX1BFRVJfQUREUl9QQVJBTVMp ICIKKwkJICItIG9uZS10by1tYW55IHN0eWxlIGludmFsaWQgdHJhbnNwb3J0Iik7CisKKwlwYWRk cnBhcmFtcy5zcHBfYXNzb2NfaWQgPSBzYWMtPnNhY19hc3NvY19pZDsKKwltZW1jcHkoJnBhZGRy cGFyYW1zLnNwcF9hZGRyZXNzLCAmdWRwX2NsdF9sb29wLCBzaXplb2YodWRwX2NsdF9sb29wKSk7 CisJcGFkZHJwYXJhbXMuc3BwX2hiaW50ZXJ2YWwgPSAxMDAwOworCXBhZGRycGFyYW1zLnNwcF9w YXRobWF4cnh0ID0gZGZsdF9wYXRobWF4cnh0ICsgMTsKKworCWVycm9yID0gc2V0c29ja29wdCh1 ZHBfY2x0X3NrLCBTT0xfU0NUUCwgU0NUUF9QRUVSX0FERFJfUEFSQU1TLAorCQkJICAgJnBhZGRy cGFyYW1zLCBzaXplb2YocGFkZHJwYXJhbXMpIC0gMSk7CisJaWYgKCgtMSAhPSBlcnJvcikgfHwg KEVJTlZBTCAhPSBlcnJubykpCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNldHNvY2tv cHQoU0NUUF9QRUVSX0FERFJfUEFSQU1TKSAiCisJCQkgImludmFsaWQgcGFyYW1ldGVyIGxlbmd0 aCBlcnJvcjolZCwgZXJybm86JWRcbiIsCisJCQkgZXJyb3IsIGVycm5vKTsKKworCXRzdF9yZXNt KFRQQVNTLCAic2V0c29ja29wdChTQ1RQX1BFRVJfQUREUl9QQVJBTVMpICIKKwkJICItIG9uZS10 by1tYW55IHN0eWxlIGludmFsaWQgcGFyYW1ldGVyIGxlbmd0aCIpOworCisJZXJyb3IgPSBzZXRz b2Nrb3B0KHVkcF9jbHRfc2ssIFNPTF9TQ1RQLCBTQ1RQX0RFTEFZRURfQUNLX1RJTUUsCisJCQkg ICAmdmFsdWUsIHNpemVvZih2YWx1ZSkgLSAxKTsKKwlpZiAoKC0xICE9IGVycm9yKSB8fCAoRUlO VkFMICE9IGVycm5vKSkKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2V0c29ja29wdChT Q1RQX0RFTEFZRURfQUNLX1RJTUUpICIKKwkJCSAiaW52YWxpZCBwYXJhbWV0ZXIgbGVuZ3RoIGVy cm9yOiVkLCBlcnJubzolZFxuIiwKKwkJCSBlcnJvciwgZXJybm8pOworCisJdHN0X3Jlc20oVFBB U1MsICJzZXRzb2Nrb3B0KFNDVFBfREVMQVlFRF9BQ0tfVElNRSkgIgorCQkgIi0gb25lLXRvLW1h bnkgc3R5bGUgaW52YWxpZCBwYXJhbWV0ZXIgbGVuZ3RoIik7CisKKwltZW1zZXQoJnBhZGRycGFy YW1zLCAwLCBzaXplb2YocGFkZHJwYXJhbXMpKTsKKwlwYWRkcnBhcmFtcy5zcHBfYXNzb2NfaWQg PSBzYWMtPnNhY19hc3NvY19pZDsKKwltZW1jcHkoJnBhZGRycGFyYW1zLnNwcF9hZGRyZXNzLCAm dWRwX2NsdF9sb29wLCBzaXplb2YodWRwX2NsdF9sb29wKSk7CisJcGFkZHJwYXJhbXMuc3BwX3Nh Y2tkZWxheSA9IDUwMTsKKworCWVycm9yID0gc2V0c29ja29wdCh1ZHBfY2x0X3NrLCBTT0xfU0NU UCwgU0NUUF9QRUVSX0FERFJfUEFSQU1TLAorCQkJICAgJnBhZGRycGFyYW1zLCBzaXplb2YocGFk ZHJwYXJhbXMpKTsKKwlpZiAoKC0xICE9IGVycm9yKSB8fCAoRUlOVkFMICE9IGVycm5vKSkKKwkJ dHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2V0c29ja29wdChTQ1RQX1BFRVJfQUREUl9QQVJB TVMpICIKKwkJCSAiaW52YWxpZCBzYWNrIGRlbGF5IGVycm9yOiVkLCBlcnJubzolZFxuIiwKKwkJ CSBlcnJvciwgZXJybm8pOworCisJdHN0X3Jlc20oVFBBU1MsICJzZXRzb2Nrb3B0KFNDVFBfUEVF Ul9BRERSX1BBUkFNUykgIgorCQkgIi0gb25lLXRvLW1hbnkgc3R5bGUgaW52YWxpZCBzYWNrIGRl bGF5Iik7CisKKwl2YWx1ZS5hc3NvY19pZCA9IHNhYy0+c2FjX2Fzc29jX2lkOworCXZhbHVlLmFz c29jX3ZhbHVlID0gNTAxOworCisJZXJyb3IgPSBzZXRzb2Nrb3B0KHVkcF9jbHRfc2ssIFNPTF9T Q1RQLCBTQ1RQX0RFTEFZRURfQUNLX1RJTUUsCisJCQkgICAmdmFsdWUsIHNpemVvZih2YWx1ZSkp OworCWlmICgoLTEgIT0gZXJyb3IpIHx8IChFSU5WQUwgIT0gZXJybm8pKQorCQl0c3RfYnJrbShU QlJPSywgdHN0X2V4aXQsICJzZXRzb2Nrb3B0KFNDVFBfREVMQVlFRF9BQ0tfVElNRSkgIgorCQkJ ICJpbnZhbGlkIHNhY2sgZGVsYXkgZXJyb3I6JWQsIGVycm5vOiVkXG4iLAorCQkJIGVycm9yLCBl cnJubyk7CisKKwl0c3RfcmVzbShUUEFTUywgInNldHNvY2tvcHQoU0NUUF9ERUxBWUVEX0FDS19U SU1FKSAiCisJCSAiLSBvbmUtdG8tbWFueSBzdHlsZSBpbnZhbGlkIHNhY2sgZGVsYXkiKTsKKwor CW1lbXNldCgmcGFkZHJwYXJhbXMsIDAsIHNpemVvZihwYWRkcnBhcmFtcykpOworCXBhZGRycGFy YW1zLnNwcF9hc3NvY19pZCA9IHNhYy0+c2FjX2Fzc29jX2lkOworCW1lbWNweSgmcGFkZHJwYXJh bXMuc3BwX2FkZHJlc3MsICZ1ZHBfY2x0X2xvb3AsIHNpemVvZih1ZHBfY2x0X2xvb3ApKTsKKwlw YWRkcnBhcmFtcy5zcHBfcGF0aG10dSA9IDUxMTsKKworCWVycm9yID0gc2V0c29ja29wdCh1ZHBf Y2x0X3NrLCBTT0xfU0NUUCwgU0NUUF9QRUVSX0FERFJfUEFSQU1TLAorCQkJICAgJnBhZGRycGFy YW1zLCBzaXplb2YocGFkZHJwYXJhbXMpKTsKKwlpZiAoKC0xICE9IGVycm9yKSB8fCAoRUlOVkFM ICE9IGVycm5vKSkKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2V0c29ja29wdChTQ1RQ X1BFRVJfQUREUl9QQVJBTVMpICIKKwkJCSAiaW52YWxpZCBwYXRoIE1UVSBlcnJvcjolZCwgZXJy bm86JWRcbiIsIGVycm9yLCBlcnJubyk7CisKKwl0c3RfcmVzbShUUEFTUywgInNldHNvY2tvcHQo U0NUUF9QRUVSX0FERFJfUEFSQU1TKSAiCisJCSAiLSBvbmUtdG8tbWFueSBzdHlsZSBpbnZhbGlk IHBhdGggTVRVIik7CisKKwltZW1zZXQoJnBhZGRycGFyYW1zLCAwLCBzaXplb2YocGFkZHJwYXJh bXMpKTsKKwlwYWRkcnBhcmFtcy5zcHBfYXNzb2NfaWQgPSBzYWMtPnNhY19hc3NvY19pZDsKKwlt ZW1jcHkoJnBhZGRycGFyYW1zLnNwcF9hZGRyZXNzLCAmdWRwX2NsdF9sb29wLCBzaXplb2YodWRw X2NsdF9sb29wKSk7CisJcGFkZHJwYXJhbXMuc3BwX2ZsYWdzID0gU1BQX0hCX0VOQUJMRSB8IFNQ UF9IQl9ESVNBQkxFOworCisJZXJyb3IgPSBzZXRzb2Nrb3B0KHVkcF9jbHRfc2ssIFNPTF9TQ1RQ LCBTQ1RQX1BFRVJfQUREUl9QQVJBTVMsCisJCQkgICAmcGFkZHJwYXJhbXMsIHNpemVvZihwYWRk cnBhcmFtcykpOworCWlmICgoLTEgIT0gZXJyb3IpIHx8IChFSU5WQUwgIT0gZXJybm8pKQorCQl0 c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzZXRzb2Nrb3B0KFNDVFBfUEVFUl9BRERSX1BBUkFN UykgIgorCQkJICJpbnZhbGlkIGhiIGVuYWJsZSBmbGFncyBlcnJvcjolZCwgZXJybm86JWRcbiIs CisJCQkgZXJyb3IsIGVycm5vKTsKKworCXRzdF9yZXNtKFRQQVNTLCAic2V0c29ja29wdChTQ1RQ X1BFRVJfQUREUl9QQVJBTVMpICIKKwkJICItIG9uZS10by1tYW55IHN0eWxlIGludmFsaWQgaGIg ZW5hYmxlIGZsYWdzIik7CisKKwltZW1zZXQoJnBhZGRycGFyYW1zLCAwLCBzaXplb2YocGFkZHJw YXJhbXMpKTsKKwlwYWRkcnBhcmFtcy5zcHBfYXNzb2NfaWQgPSBzYWMtPnNhY19hc3NvY19pZDsK KwltZW1jcHkoJnBhZGRycGFyYW1zLnNwcF9hZGRyZXNzLCAmdWRwX2NsdF9sb29wLCBzaXplb2Yo dWRwX2NsdF9sb29wKSk7CisJcGFkZHJwYXJhbXMuc3BwX2ZsYWdzID0gU1BQX1BNVFVEX0VOQUJM RSB8IFNQUF9QTVRVRF9ESVNBQkxFOworCisJZXJyb3IgPSBzZXRzb2Nrb3B0KHVkcF9jbHRfc2ss IFNPTF9TQ1RQLCBTQ1RQX1BFRVJfQUREUl9QQVJBTVMsCisJCQkgICAmcGFkZHJwYXJhbXMsIHNp emVvZihwYWRkcnBhcmFtcykpOworCWlmICgoLTEgIT0gZXJyb3IpIHx8IChFSU5WQUwgIT0gZXJy bm8pKQorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzZXRzb2Nrb3B0KFNDVFBfUEVFUl9B RERSX1BBUkFNUykgIgorCQkJICJpbnZhbGlkIFBNVFUgZGlzY292ZXJ5IGVuYWJsZSBmbGFncyBl cnJvcjolZCwgZXJybm86JWRcbiIsCisJCQkgZXJyb3IsIGVycm5vKTsKKworCXRzdF9yZXNtKFRQ QVNTLCAic2V0c29ja29wdChTQ1RQX1BFRVJfQUREUl9QQVJBTVMpICIKKwkJICItIG9uZS10by1t YW55IHN0eWxlIGludmFsaWQgUE1UVSBkaXNjb3ZlcnkgZW5hYmxlIGZsYWdzIik7CisKKwltZW1z ZXQoJnBhZGRycGFyYW1zLCAwLCBzaXplb2YocGFkZHJwYXJhbXMpKTsKKwlwYWRkcnBhcmFtcy5z cHBfYXNzb2NfaWQgPSBzYWMtPnNhY19hc3NvY19pZDsKKwltZW1jcHkoJnBhZGRycGFyYW1zLnNw cF9hZGRyZXNzLCAmdWRwX2NsdF9sb29wLCBzaXplb2YodWRwX2NsdF9sb29wKSk7CisJcGFkZHJw YXJhbXMuc3BwX2ZsYWdzID0gU1BQX1NBQ0tERUxBWV9FTkFCTEUgfCBTUFBfU0FDS0RFTEFZX0RJ U0FCTEU7CisKKwllcnJvciA9IHNldHNvY2tvcHQodWRwX2NsdF9zaywgU09MX1NDVFAsIFNDVFBf UEVFUl9BRERSX1BBUkFNUywKKwkJCSAgICZwYWRkcnBhcmFtcywgc2l6ZW9mKHBhZGRycGFyYW1z KSk7CisJaWYgKCgtMSAhPSBlcnJvcikgfHwgKEVJTlZBTCAhPSBlcnJubykpCisJCXRzdF9icmtt KFRCUk9LLCB0c3RfZXhpdCwgInNldHNvY2tvcHQoU0NUUF9QRUVSX0FERFJfUEFSQU1TKSAiCisJ CQkgImludmFsaWQgc2FjayBkZWxheSBlbmFibGUgZmxhZ3MgZXJyb3I6JWQsIGVycm5vOiVkXG4i LAorCQkJIGVycm9yLCBlcnJubyk7CisKKwl0c3RfcmVzbShUUEFTUywgInNldHNvY2tvcHQoU0NU UF9QRUVSX0FERFJfUEFSQU1TKSAiCisJCSAiLSBvbmUtdG8tbWFueSBzdHlsZSBpbnZhbGlkIHNh Y2sgZGVsYXkgZW5hYmxlIGZsYWdzIik7CisKKwltZW1zZXQoJnBhZGRycGFyYW1zLCAwLCBzaXpl b2YocGFkZHJwYXJhbXMpKTsKKwlwYWRkcnBhcmFtcy5zcHBfZmxhZ3MgPSBTUFBfSEJfREVNQU5E OworCisJZXJyb3IgPSBzZXRzb2Nrb3B0KHVkcF9jbHRfc2ssIFNPTF9TQ1RQLCBTQ1RQX1BFRVJf QUREUl9QQVJBTVMsCisJCQkgICAmcGFkZHJwYXJhbXMsIHNpemVvZihwYWRkcnBhcmFtcykpOwor CWlmICgoLTEgIT0gZXJyb3IpIHx8IChFSU5WQUwgIT0gZXJybm8pKQorCQl0c3RfYnJrbShUQlJP SywgdHN0X2V4aXQsICJzZXRzb2Nrb3B0KFNDVFBfUEVFUl9BRERSX1BBUkFNUykgIgorCQkJICJp bnZhbGlkIGhiIGRlbWFuZCBlcnJvcjolZCwgZXJybm86JWRcbiIsCisJCQkgZXJyb3IsIGVycm5v KTsKKworCXRzdF9yZXNtKFRQQVNTLCAic2V0c29ja29wdChTQ1RQX1BFRVJfQUREUl9QQVJBTVMp ICIKKwkJICItIG9uZS10by1tYW55IHN0eWxlIGludmFsaWQgaGIgZGVtYW5kIik7CisKKwljbG9z ZSh1ZHBfc3ZyX3NrKTsKKwljbG9zZSh1ZHBfY2x0X3NrKTsKKworCS8qIFRFU1QgIzY6IFNDVFBf REVGQVVMVF9TRU5EX1BBUkFNIHNvY2tldCBvcHRpb24uICovCiAJLyogQ3JlYXRlIGFuZCBiaW5k IDIgVURQLXN0eWxlIHNvY2tldHModWRwX3N2cl9zaywgdWRwX2NsdF9zaykgYW5kCiAJICogMiBU Q1Atc3R5bGUgc29ja2V0cy4gKHRjcF9zdnJfc2ssIHRjcF9jbHRfc2spCiAJICovCkBAIC01MTEs NyArNzU5LDcgQEAgaW50IG1haW4odm9pZCkKIAkvKiBWZXJpZnkgdGhhdCB0aGUgZ2V0IHBhcmFt IG1hdGNoZXMgc2V0IHBhcmFtLiAqLwogCWlmIChzZXRfdWRwX3NrX2RmbHRfcGFyYW0uc2luZm9f cHBpZCAhPQogCSAgICBnZXRfdWRwX3NrX2RmbHRfcGFyYW0uc2luZm9fcHBpZCkKLQkJdHN0X2Jy a20oVEJST0ssIE5VTEwsICJnZXRzb2Nrb3B0KFNDVFBfREVGQVVMVF9TRU5EX1BBUkFNKSAiCisJ CXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImdldHNvY2tvcHQoU0NUUF9ERUZBVUxUX1NFTkRf UEFSQU0pICIKIAkJCSAibWlzbWF0Y2guIik7CiAKIAkvKiBHZXQgZGVmYXVsdCBzZW5kIHBhcmFt ZXRlcnMgb24gdGhlIHVuY29ubmVjdGVkIFVEUC1zdHlsZSBzb2NrZXQuICovCkBAIC01MjMsNyAr NzcxLDcgQEAgaW50IG1haW4odm9pZCkKIAkvKiBWZXJpZnkgdGhhdCB0aGUgZ2V0IHBhcmFtIG1h dGNoZXMgc2V0IHBhcmFtLiAqLwogCWlmIChzZXRfdWRwX3NrX2RmbHRfcGFyYW0uc2luZm9fcHBp ZCAhPQogCSAgICBnZXRfdWRwX3NrX2RmbHRfcGFyYW0uc2luZm9fcHBpZCkKLQkJdHN0X2Jya20o VEJST0ssIE5VTEwsICJnZXRzb2Nrb3B0KFNDVFBfREVGQVVMVF9TRU5EX1BBUkFNKSAiCisJCXRz dF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImdldHNvY2tvcHQoU0NUUF9ERUZBVUxUX1NFTkRfUEFS QU0pICIKIAkJCSAibWlzbWF0Y2guIik7CiAKIAl0c3RfcmVzbShUUEFTUywgImdldHNvY2tvcHQo U0NUUF9ERUZBVUxUX1NFTkRfUEFSQU0pIC0gIgpAQCAtNTQwLDcgKzc4OCw3IEBAIGludCBtYWlu KHZvaWQpCiAJCQkgICAmc2V0X3VkcF9za19kZmx0X3BhcmFtLAogCQkJICAgc2l6ZW9mKHNldF91 ZHBfc2tfZGZsdF9wYXJhbSkpOwogCWlmICgoLTEgIT0gZXJyb3IpIHx8IChFSU5WQUwgIT0gZXJy bm8pKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNldHNvY2tvcHQoU0NUUF9ERUZBVUxUX1NF TkRfUEFSQU0pICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2V0c29ja29wdChTQ1RQ X0RFRkFVTFRfU0VORF9QQVJBTSkgIgogCQkJICJpbnZhbGlkIGFzc29jaWQgZXJyb3I6JWQsIGVy cm5vOiVkXG4iLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJzZXRzb2Nrb3B0 KFNDVFBfREVGQVVMVF9TRU5EX1BBUkFNKSAiCkBAIC01NzYsNyArODI0LDcgQEAgaW50IG1haW4o dm9pZCkKIAkJCSAgICZzZXRfdWRwX2Fzc29jX2RmbHRfcGFyYW0sCiAJCQkgICBzaXplb2Yoc2V0 X3VkcF9hc3NvY19kZmx0X3BhcmFtKSk7CiAJaWYgKCgtMSAhPSBlcnJvcikgfHwgKEVJTlZBTCAh PSBlcnJubykpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2V0c29ja29wdChTQ1RQX0RFRkFV TFRfU0VORF9QQVJBTSkgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzZXRzb2Nrb3B0 KFNDVFBfREVGQVVMVF9TRU5EX1BBUkFNKSAiCiAJCQkgImFzc29jaWQgYmVsb25naW5nIHRvIGFu b3RoZXIgc29ja2V0ICIKIAkJCSAiZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsK IApAQCAtNjA4LDcgKzg1Niw3IEBAIGludCBtYWluKHZvaWQpCiAJLyogVmVyaWZ5IHRoYXQgdGhl IGdldCBwYXJhbSBtYXRjaGVzIHRoZSBzZXQgcGFyYW0uICovCiAJaWYgKGdldF91ZHBfYXNzb2Nf ZGZsdF9wYXJhbS5zaW5mb19wcGlkICE9CiAJICAgIHNldF91ZHBfYXNzb2NfZGZsdF9wYXJhbS5z aW5mb19wcGlkKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgImdldHNvY2tvcHQoU0NUUF9ERUZB VUxUX1NFTkRfUEFSQU0pICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiZ2V0c29ja29w dChTQ1RQX0RFRkFVTFRfU0VORF9QQVJBTSkgIgogCQkJICJtaXNtYXRjaC4iKTsKIAogCXRzdF9y ZXNtKFRQQVNTLCAiZ2V0c29ja29wdChTQ1RQX0RFRkFVTFRfU0VORF9QQVJBTSkgLSAiCkBAIC02 MjcsNyArODc1LDcgQEAgaW50IG1haW4odm9pZCkKIAkvKiBWZXJpZnkgdGhhdCB0aGUgZ2V0IHBh cmFtIG1hdGNoZXMgdGhlIHNvY2tldC13aWRlIHNldCBwYXJhbS4gKi8KIAlpZiAoZ2V0X3VkcF9z a19kZmx0X3BhcmFtLnNpbmZvX3BwaWQgIT0KIAkgICAgc2V0X3VkcF9za19kZmx0X3BhcmFtLnNp bmZvX3BwaWQpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiZ2V0c29ja29wdChTQ1RQX0RFRkFV TFRfU0VORF9QQVJBTSkgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJnZXRzb2Nrb3B0 KFNDVFBfREVGQVVMVF9TRU5EX1BBUkFNKSAiCiAJCQkgIm1pc21hdGNoLiIpOwogCiAJdHN0X3Jl c20oVFBBU1MsICJnZXRzb2Nrb3B0KFNDVFBfREVGQVVMVF9TRU5EX1BBUkFNKSAtICIKQEAgLTY0 OSw3ICs4OTcsNyBAQCBpbnQgbWFpbih2b2lkKQogCS8qIFZlcmlmeSB0aGF0IHRoZSBnZXQgcGFy YW0gbWF0Y2hlcyB0aGUgYXNzb2NpYXRpb24ncyBzZXQgcGFyYW0uICovCiAJaWYgKGdldF9wZWVs b2ZmX2Fzc29jX2RmbHRfcGFyYW0uc2luZm9fcHBpZCAhPQogCSAgICBzZXRfdWRwX2Fzc29jX2Rm bHRfcGFyYW0uc2luZm9fcHBpZCkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJnZXRzb2Nrb3B0 KFNDVFBfREVGQVVMVF9TRU5EX1BBUkFNKSAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwg ImdldHNvY2tvcHQoU0NUUF9ERUZBVUxUX1NFTkRfUEFSQU0pICIKIAkJCSAibWlzbWF0Y2guIik7 CiAKIAl0c3RfcmVzbShUUEFTUywgImdldHNvY2tvcHQoU0NUUF9ERUZBVUxUX1NFTkRfUEFSQU0p IC0gIgpAQCAtNjgzLDcgKzkzMSw3IEBAIGludCBtYWluKHZvaWQpCiAJLyogVmVyaWZ5IHRoYXQg dGhlIGdldCBwYXJhbSBtYXRjaGVzIHNldCBwYXJhbS4gKi8KIAlpZiAoc2V0X3RjcF9za19kZmx0 X3BhcmFtLnNpbmZvX3BwaWQgIT0KIAkgICAgZ2V0X3RjcF9za19kZmx0X3BhcmFtLnNpbmZvX3Bw aWQpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiZ2V0c29ja29wdChTQ1RQX0RFRkFVTFRfU0VO RF9QQVJBTSkgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJnZXRzb2Nrb3B0KFNDVFBf REVGQVVMVF9TRU5EX1BBUkFNKSAiCiAJCQkgIm1pc21hdGNoLiIpOwogCiAJLyogR2V0IGRlZmF1 bHQgc2VuZCBwYXJhbWV0ZXJzIG9uIHRoZSB1bmNvbm5lY3RlZCBUQ1Atc3R5bGUgc29ja2V0LiAq LwpAQCAtNjk1LDcgKzk0Myw3IEBAIGludCBtYWluKHZvaWQpCiAJLyogVmVyaWZ5IHRoYXQgdGhl IGdldCBwYXJhbSBtYXRjaGVzIHNldCBwYXJhbS4gKi8KIAlpZiAoc2V0X3RjcF9za19kZmx0X3Bh cmFtLnNpbmZvX3BwaWQgIT0KIAkgICAgZ2V0X3RjcF9za19kZmx0X3BhcmFtLnNpbmZvX3BwaWQp Ci0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiZ2V0c29ja29wdChTQ1RQX0RFRkFVTFRfU0VORF9Q QVJBTSkgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJnZXRzb2Nrb3B0KFNDVFBfREVG QVVMVF9TRU5EX1BBUkFNKSAiCiAJCQkgIm1pc21hdGNoLiIpOwogCiAJdHN0X3Jlc20oVFBBU1Ms ICJnZXRzb2Nrb3B0KFNDVFBfREVGQVVMVF9TRU5EX1BBUkFNKSAtICIKQEAgLTcyNyw3ICs5NzUs NyBAQCBpbnQgbWFpbih2b2lkKQogCiAJaWYgKHNldF90Y3BfYXNzb2NfZGZsdF9wYXJhbS5zaW5m b19wcGlkICE9CiAJICAgIGdldF90Y3BfYXNzb2NfZGZsdF9wYXJhbS5zaW5mb19wcGlkKQotCQl0 c3RfYnJrbShUQlJPSywgTlVMTCwgImdldHNvY2tvcHQoU0NUUF9ERUZBVUxUX1NFTkRfUEFSQU0p ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiZ2V0c29ja29wdChTQ1RQX0RFRkFVTFRf U0VORF9QQVJBTSkgIgogCQkJICJtaXNtYXRjaC4iKTsKIAogCS8qIEdldCBkZWZhdWx0IHNlbmQg cGFyYW1ldGVycyBvbiB0aGUgY29ubmVjdGVkIFRDUC1zdHlsZSBzb2NrZXQuICAqLwpAQCAtNzQz LDcgKzk5MSw3IEBAIGludCBtYWluKHZvaWQpCiAJICAgICBzZXRfdGNwX3NrX2RmbHRfcGFyYW0u c2luZm9fcHBpZCkgfHwKIAkgICAgKGdldF90Y3Bfc2tfZGZsdF9wYXJhbS5zaW5mb19wcGlkICE9 CiAJICAgICBzZXRfdGNwX2Fzc29jX2RmbHRfcGFyYW0uc2luZm9fcHBpZCkpCi0JCXRzdF9icmtt KFRCUk9LLCBOVUxMLCAiZ2V0c29ja29wdChTQ1RQX0RFRkFVTFRfU0VORF9QQVJBTSkgIgorCQl0 c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJnZXRzb2Nrb3B0KFNDVFBfREVGQVVMVF9TRU5EX1BB UkFNKSAiCiAJCQkgIm1pc21hdGNoLiIpOwogCiAJLyogR2V0IGRlZmF1bHQgc2VuZCBwYXJhbWV0 ZXJzIG9uIHRoZSBsaXN0ZW5pbmcgVENQLXN0eWxlIHNvY2tldC4gICovCkBAIC03NTcsNyArMTAw NSw3IEBAIGludCBtYWluKHZvaWQpCiAJICovCiAJaWYgKGdldF90Y3Bfc2tfZGZsdF9wYXJhbS5z aW5mb19wcGlkICE9CiAJICAgIHNldF90Y3Bfc2tfZGZsdF9wYXJhbS5zaW5mb19wcGlkKQotCQl0 c3RfYnJrbShUQlJPSywgTlVMTCwgImdldHNvY2tvcHQoU0NUUF9ERUZBVUxUX1NFTkRfUEFSQU0p ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiZ2V0c29ja29wdChTQ1RQX0RFRkFVTFRf U0VORF9QQVJBTSkgIgogCQkJICJtaXNtYXRjaC4iKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAiZ2V0 c29ja29wdChTQ1RQX0RFRkFVTFRfU0VORF9QQVJBTSkgLSAiCkBAIC03ODAsMjAgKzEwMjgsMjAg QEAgaW50IG1haW4odm9pZCkKIAkgKi8KIAlpZiAoZ2V0X3RjcF9za19kZmx0X3BhcmFtLnNpbmZv X3BwaWQgIT0KIAkgICAgc2V0X3RjcF9za19kZmx0X3BhcmFtLnNpbmZvX3BwaWQpCi0JCXRzdF9i cmttKFRCUk9LLCBOVUxMLCAiZ2V0c29ja29wdChTQ1RQX0RFRkFVTFRfU0VORF9QQVJBTSkgIgor CQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJnZXRzb2Nrb3B0KFNDVFBfREVGQVVMVF9TRU5E X1BBUkFNKSAiCiAJCQkgIm1pc21hdGNoLiIpOwogCiAJdHN0X3Jlc20oVFBBU1MsICJnZXRzb2Nr b3B0KFNDVFBfREVGQVVMVF9TRU5EX1BBUkFNKSAtICIKIAkJICJvbmUtdG8tb25lIHN0eWxlIGFj Y2VwdGVkIHNvY2tldCIpOwogCi0JLyogVEVTVCAjNjogU0NUUF9HRVRfUEVFUl9BRERSX0lORk8g c29ja2V0IG9wdGlvbi4gKi8KKwkvKiBURVNUICM3OiBTQ1RQX0dFVF9QRUVSX0FERFJfSU5GTyBz b2NrZXQgb3B0aW9uLiAqLwogCS8qIFRyeSAwIGFzc29jaWQgYW5kIDAgYWRkciAqLwogCW1lbXNl dCgmcGluZm8sIDAsIHNpemVvZihwaW5mbykpOwogCW9wdGxlbiA9IHNpemVvZihwaW5mbyk7CiAJ ZXJyb3IgPSBnZXRzb2Nrb3B0KHVkcF9jbHRfc2ssIFNPTF9TQ1RQLCBTQ1RQX0dFVF9QRUVSX0FE RFJfSU5GTywKIAkJCSAgICZwaW5mbywgJm9wdGxlbik7CiAJaWYgKCgtMSAhPSBlcnJvcikgfHwg KEVJTlZBTCAhPSBlcnJubykpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiZ2V0c29ja29wdChT Q1RQX0dFVF9QRUVSX0FERFJfSU5GTykgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJn ZXRzb2Nrb3B0KFNDVFBfR0VUX1BFRVJfQUREUl9JTkZPKSAiCiAJCQkgIm51bGwgYXNzb2NpZCwg bnVsbCBhZGRyIGVycm9yOiVkLCBlcnJubzolZFxuIiwKIAkJCSBlcnJvciwgZXJybm8pOwogCkBA IC04MDcsNyArMTA1NSw3IEBAIGludCBtYWluKHZvaWQpCiAJZXJyb3IgPSBnZXRzb2Nrb3B0KHVk cF9jbHRfc2ssIFNPTF9TQ1RQLCBTQ1RQX0dFVF9QRUVSX0FERFJfSU5GTywKIAkJCSAgICZwaW5m bywgJm9wdGxlbik7CiAJaWYgKCgtMSAhPSBlcnJvcikgfHwgKEVJTlZBTCAhPSBlcnJubykpCi0J CXRzdF9icmttKFRCUk9LLCBOVUxMLCAiZ2V0c29ja29wdChTQ1RQX0dFVF9QRUVSX0FERFJfSU5G TykgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJnZXRzb2Nrb3B0KFNDVFBfR0VUX1BF RVJfQUREUl9JTkZPKSAiCiAJCQkgInZhbGlkIGFzc29jaWQsIG51bGwgYWRkciBlcnJvcjolZCwg ZXJybm86JWRcbiIsCiAJCQkgZXJyb3IsIGVycm5vKTsKIApAQCAtODIyLDcgKzEwNzAsNyBAQCBp bnQgbWFpbih2b2lkKQogCWVycm9yID0gZ2V0c29ja29wdCh1ZHBfY2x0X3NrLCBTT0xfU0NUUCwg U0NUUF9HRVRfUEVFUl9BRERSX0lORk8sCiAJCQkgICAmcGluZm8sICZvcHRsZW4pOwogCWlmICgo LTEgIT0gZXJyb3IpIHx8IChFSU5WQUwgIT0gZXJybm8pKQotCQl0c3RfYnJrbShUQlJPSywgTlVM TCwgImdldHNvY2tvcHQoU0NUUF9HRVRfUEVFUl9BRERSX0lORk8pICIKKwkJdHN0X2Jya20oVEJS T0ssIHRzdF9leGl0LCAiZ2V0c29ja29wdChTQ1RQX0dFVF9QRUVSX0FERFJfSU5GTykgIgogCQkJ ICJ2YWxpZCBhc3NvY2lkLCBpbnZhbGlkIGFkZHIgZXJyb3I6JWQsIGVycm5vOiVkXG4iLAogCQkJ IGVycm9yLCBlcnJubyk7CiAKQEAgLTg2OCw1ICsxMTE2LDUgQEAgaW50IG1haW4odm9pZCkKIAlj bG9zZShwZWVsb2ZmX3NrKTsKIAogCS8qIEluZGljYXRlIHN1Y2Nlc3NmdWwgY29tcGxldGlvbi4g ICovCi0JdHN0X2V4aXQoKTsKKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9u ZXR3b3JrL3NjdHAvZnVuY190ZXN0cy90ZXN0X3RjcF9zdHlsZS5jIGIvdGVzdGNhc2VzL25ldHdv cmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfdGNwX3N0eWxlLmMKaW5kZXggZGEwYTVjNi4uNjBkZThk MyAxMDA2NDQKLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfdGNw X3N0eWxlLmMKKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfdGNw X3N0eWxlLmMKQEAgLTEsMTYgKzEsMTYgQEAKLS8qIFNDVFAga2VybmVsIHJlZmVyZW5jZSBJbXBs ZW1lbnRhdGlvbgorLyogU0NUUCBrZXJuZWwgSW1wbGVtZW50YXRpb24KICAqIChDKSBDb3B5cmln aHQgSUJNIENvcnAuIDIwMDMKICAqIENvcHlyaWdodCAoYykgMTk5OS0yMDAxIE1vdG9yb2xhLCBJ bmMuCiAgKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFNDVFAga2VybmVsIHJlZmVyZW5j ZSBJbXBsZW1lbnRhdGlvbgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFNDVFAga2VybmVs IEltcGxlbWVudGF0aW9uCiAgKgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9u IGlzIGZyZWUgc29mdHdhcmU7CisgKiBUaGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBmcmVlIHNv ZnR3YXJlOwogICogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YKICAqIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIsIG9yIChhdCB5b3VyIG9wdGlvbikKICAqIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqIFRo ZSBTQ1RQIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0CisgKiBUaGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0CiAgKiB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQKICAqICAgICAgICAgICAgICAgICAqKioqKioq KioqKioqKioqKioqKioqKioKICAqIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KQEAgLTEzMyw3ICsxMzMsNyBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qIFRyeSB0byBkbyBhY2NlcHQgb24gYSBub24t bGlzdGVuaW5nIHNvY2tldC4gSXQgc2hvdWxkIGZhaWwuICovCiAJZXJyb3IgPSBhY2NlcHQoY2x0 X3NrWzBdLCAmYWNjZXB0X2xvb3Auc2EsICZhZGRybGVuKTsKIAlpZiAoKC0xICE9IGVycm9yKSAm JiAoRUlOVkFMICE9IGVycm5vKSkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJhY2NlcHQgb24g bm9uLWxpc3RlbmluZyBzb2NrZXQgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJhY2Nl cHQgb24gbm9uLWxpc3RlbmluZyBzb2NrZXQgIgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBl cnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJhY2NlcHQgb24gbm9uLWxpc3Rlbmlu ZyBzb2NrZXQiKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAq YXJndltdKQogCWVycm9yID0gY29ubmVjdChsaXN0ZW5fc2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikm Y2x0X2xvb3BbMF0sCiAJCQlzaXplb2YoY2x0X2xvb3BbMF0pKTsKIAlpZiAoKC0xICE9IGVycm9y KSAmJiAoRUlTQ09OTiAhPSBlcnJubykpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiY29ubmVj dCB0byBub24tbGlzdGVuaW5nIHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwg ImNvbm5lY3QgdG8gbm9uLWxpc3RlbmluZyBzb2NrZXQgIgogCQkJICJlcnJvcjolZCwgZXJybm86 JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJjb25uZWN0IHRvIG5vbi1s aXN0ZW5pbmcgc29ja2V0Iik7CkBAIC0xNTgsNyArMTU4LDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKIAkgKi8KIAllcnJvciA9IGNvbm5lY3QoY2x0Ml9zaywgJnN2cl9sb29w LnNhLCBzaXplb2Yoc3ZyX2xvb3ApKTsKIAlpZiAoKC0xICE9IGVycm9yKSAmJiAoRUNPTk5SRUZV U0VEICE9IGVycm5vKSkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJjb25uZWN0IGFmdGVyIG1h eCBiYWNrbG9nICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiY29ubmVjdCBhZnRlciBt YXggYmFja2xvZyAiCiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAK IAl0c3RfcmVzbShUUEFTUywgImNvbm5lY3QgYWZ0ZXIgbWF4IGJhY2tsb2ciKTsKQEAgLTE3MCw3 ICsxNzAsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlwb2xsX2ZkLnJl dmVudHMgPSAwOwogCQllcnJvciA9IHBvbGwoJnBvbGxfZmQsIDEsIC0xKTsKIAkJaWYgKCgxICE9 IGVycm9yKSAmJiAoMSAhPSBwb2xsX2ZkLnJldmVudHMpKQotCQkJdHN0X2Jya20oVEJST0ssIE5V TEwsICJVbmV4cGVjdGVkIHJldHVybiB2YWx1ZSAiCisJCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4 aXQsICJVbmV4cGVjdGVkIHJldHVybiB2YWx1ZSAiCiAJCQkJICJ3aXRoIHBvbGwsIGVycm9yOiVk IGVycm5vOiVkLCByZXZlbnRzOiVkIiwKIAkJCQkgZXJyb3IsIGVycm5vLCBwb2xsX2ZkLnJldmVu dHMpOwogCkBAIC0xODQsNyArMTg0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAkvKiBUcnkgdG8gZG8gYSBjb25uZWN0IG9uIGFuIGVzdGFibGlzaGVkIHNvY2tldC4gSXQg c2hvdWxkIGZhaWwuICovCiAJZXJyb3IgPSBjb25uZWN0KGFjY2VwdF9za1swXSwgJmNsdF9sb29w WzBdLnNhLCBzaXplb2YoY2x0X2xvb3BbMF0pKTsKIAlpZiAoKC0xICE9IGVycm9yKSB8fCAoRUlT Q09OTiAhPSBlcnJubykpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiY29ubmVjdCBvbiBhbiBl c3RhYmxpc2hlZCBzb2NrZXQgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJjb25uZWN0 IG9uIGFuIGVzdGFibGlzaGVkIHNvY2tldCAiCiAJCQkgImVycm9yOiVkIGVycm5vOiVkIiwgZXJy b3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAiY29ubmVjdCBvbiBhbiBlc3RhYmxpc2hl ZCBzb2NrZXQiKTsKQEAgLTE5MiwxMiArMTkyLDEyIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pCiAJLyogVHJ5IHRvIGRvIGFjY2VwdCBvbiBhbiBlc3RhYmxpc2hlZCBzb2NrZXQu IEl0IHNob3VsZCBmYWlsLiAqLwogCWVycm9yID0gYWNjZXB0KGFjY2VwdF9za1swXSwgJmFjY2Vw dF9sb29wLnNhLCAmYWRkcmxlbik7CiAJaWYgKCgtMSAhPSBlcnJvcikgJiYgKEVJTlZBTCAhPSBl cnJubykpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiYWNjZXB0IG9uIGFuIGVzdGFibGlzaGVk IHNvY2tldCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImFjY2VwdCBvbiBhbiBlc3Rh Ymxpc2hlZCBzb2NrZXQgIgogCQkJICJlcnJvcjolZCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7 CiAKIAllcnJvciA9IGFjY2VwdChjbHRfc2tbMF0sICZhY2NlcHRfbG9vcC5zYSwgJmFkZHJsZW4p OwogCWlmICgoLTEgIT0gZXJyb3IpICYmIChFSU5WQUwgIT0gZXJybm8pKQotCQl0c3RfYnJrbShU QlJPSywgTlVMTCwgImFjY2VwdCBvbiBhbiBlc3RhYmxpc2hlZCBzb2NrZXQgIgorCQl0c3RfYnJr bShUQlJPSywgdHN0X2V4aXQsICJhY2NlcHQgb24gYW4gZXN0YWJsaXNoZWQgc29ja2V0ICIKIAkJ CSAiZmFpbHVyZTogZXJyb3I6JWQgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jl c20oVFBBU1MsICJhY2NlcHQgb24gYW4gZXN0YWJsaXNoZWQgc29ja2V0Iik7CkBAIC0yMjUsNyAr MjI1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKiBTZW5kaW5nIGEg bWVzc2FnZSBvbiBhIGxpc3RlbmluZyBzb2NrZXQgc2hvdWxkIGZhaWwuICovCiAJZXJyb3IgPSBz ZW5kKGxpc3Rlbl9zaywgbWVzc2FnZSwgc3RybGVuKG1lc3NhZ2UpLCBNU0dfTk9TSUdOQUwpOwog CWlmICgoLTEgIT0gZXJyb3IpIHx8IChFUElQRSAhPSBlcnJubykpCi0JCXRzdF9icmttKFRCUk9L LCBOVUxMLCAic2VuZCBvbiBhIGxpc3RlbmluZyBzb2NrZXQgIgorCQl0c3RfYnJrbShUQlJPSywg dHN0X2V4aXQsICJzZW5kIG9uIGEgbGlzdGVuaW5nIHNvY2tldCAiCiAJCQkgImVycm9yOiVkLCBl cnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNlbmQgb24gYSBs aXN0ZW5pbmcgc29ja2V0Iik7CkBAIC0yMzMsNyArMjMzLDcgQEAgaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKIAkvKiBUcnlpbmcgdG8gcmVjZWl2ZSBhIG1lc3NhZ2Ugb24gYSBsaXN0 ZW5pbmcgc29ja2V0IHNob3VsZCBmYWlsLiAqLwogCWVycm9yID0gcmVjdihsaXN0ZW5fc2ssIG1z Z2J1ZiwgMTAwLCAwKTsKIAlpZiAoKC0xICE9IGVycm9yKSB8fCAoRU5PVENPTk4gIT0gZXJybm8p KQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInJlY3Ygb24gYSBsaXN0ZW5pbmcgc29ja2V0ICIK KwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAicmVjdiBvbiBhIGxpc3RlbmluZyBzb2NrZXQg IgogCQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20o VFBBU1MsICJyZWN2IG9uIGEgbGlzdGVuaW5nIHNvY2tldCIpOwpAQCAtMjUzLDcgKzI1Myw3IEBA IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICovCiAJZXJyb3IgPSByZWN2KGFj Y2VwdF9za1swXSwgbXNnYnVmLCAxMDAsIDApOwogCWlmICgoMCAhPSBlcnJvcikgfHwgKDAgIT0g ZXJybm8pKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInJlY3Ygb24gYSBTSFVURE9XTiByZWNl aXZlZCBzb2NrZXQgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJyZWN2IG9uIGEgU0hV VERPV04gcmVjZWl2ZWQgc29ja2V0ICIKIAkJCSAiZXJyb3I6JWQgZXJybm86JWQiLCBlcnJvciwg ZXJybm8pOwogCiAJdHN0X3Jlc20oVFBBU1MsICJyZWN2IG9uIGEgU0hVVERPV04gcmVjZWl2ZWQg c29ja2V0Iik7CkBAIC0yODQsNyArMjg0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKIAkvKiBObyBtb3JlIG1lc3NhZ2VzIGFuZCB0aGUgYXNzb2NpYXRpb24gaXMgU0hVVERP V04sIHNob3VsZCBmYWlsLiAqLwogCWVycm9yID0gcmVjdihjbHRfc2tbMF0sIG1zZ2J1ZiwgMTAw LCAwKTsKIAlpZiAoKC0xICE9IGVycm9yKSB8fCAoRU5PVENPTk4gIT0gZXJybm8pKQotCQl0c3Rf YnJrbShUQlJPSywgTlVMTCwgInJlY3Ygb24gYSBTSFVURE9XTiBzZW50IHNvY2tldCAiCisJCXRz dF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInJlY3Ygb24gYSBTSFVURE9XTiBzZW50IHNvY2tldCAi CiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShU UEFTUywgInJlY3Ygb24gYSBTSFVURE9XTiBzZW50IHNvY2tldCIpOwpAQCAtMjk2LDcgKzI5Niw3 IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAllcnJvciA9IHJlY3YoY2x0 X3NrWzFdLCBtc2didWYsIDEwMCwgMCk7CiAJaWYgKCgwICE9IGVycm9yKSB8fCAoMCAhPSBlcnJu bykpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAicmVjdiBvbiBhIFNIVVRfUkQgc29ja2V0ICIK KwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAicmVjdiBvbiBhIFNIVVRfUkQgc29ja2V0ICIK IAkJCSAiZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCS8qIFNlbmRpbmcg YSBtZXNzYWdlIG9uIFNIVVRfUkQgc29ja2V0LiAqLwpAQCAtMzExLDcgKzMxMSw3IEBAIGludCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLyogV2Ugc2hvdWxkIG5vdCByZWNlaXZlIHRo ZSBtZXNzYWdlIGFzIHRoZSBzb2NrZXQgaXMgU0hVVF9SRCAqLwogCWVycm9yID0gcmVjdihjbHRf c2tbMV0sIG1zZ2J1ZiwgMTAwLCAwKTsKIAlpZiAoKDAgIT0gZXJyb3IpIHx8ICgwICE9IGVycm5v KSkKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJyZWN2IG9uIGEgU0hVVF9SRCBzb2NrZXQgIgor CQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJyZWN2IG9uIGEgU0hVVF9SRCBzb2NrZXQgIgog CQkJICJlcnJvcjolZCwgZXJybm86JWQiLCBlcnJvciwgZXJybm8pOwogCiAJdHN0X3Jlc20oVFBB U1MsICJyZWN2IG9uIGEgU0hVVF9SRCBzb2NrZXQiKTsKQEAgLTMyMSwxMiArMzIxLDEyIEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAllcnJvciA9IHJlY3YoYWNjZXB0X3Nr WzJdLCBtc2didWYsIDEwMCwgMCk7CiAJaWYgKCgwICE9IGVycm9yKSB8fCAoMCAhPSBlcnJubykp Ci0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAicmVjdiBvbiBhIFNIVVRfUkRXUiBzb2NrZXQgIgor CQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJyZWN2IG9uIGEgU0hVVF9SRFdSIHNvY2tldCAi CiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAllcnJvciA9IHJl Y3YoY2x0X3NrWzJdLCBtc2didWYsIDEwMCwgMCk7CiAJaWYgKCgwICE9IGVycm9yKSB8fCAoMCAh PSBlcnJubykpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAicmVjdiBvbiBhIFNIVVRfUkRXUiBz b2NrZXQgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJyZWN2IG9uIGEgU0hVVF9SRFdS IHNvY2tldCAiCiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9yLCBlcnJubyk7CiAKIAl0 c3RfcmVzbShUUEFTUywgInJlY3Ygb24gYSBTSFVUX1JEV1Igc29ja2V0Iik7CkBAIC0zNTMsNyAr MzUzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWVycm9yID0gc2Vs ZWN0KGxpc3Rlbl9zayArIDEsICZzZXQsIE5VTEwsIE5VTEwsIE5VTEwpOwogCWlmICgxICE9IGVy cm9yKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNlbGVjdCBlcnJvcjolZCwgIgorCQl0c3Rf YnJrbShUQlJPSywgdHN0X2V4aXQsICJzZWxlY3QgZXJyb3I6JWQsICIKIAkJCSAiZXJybm86ICVk IiwgZXJyb3IsIGVycm5vKTsKIAogCS8qIE5vdyBhY2NlcHQgdGhlIENMT1NFRCBhc3NvY2lhdGlv biB3YWl0aW5nIG9uIHRoZSBsaXN0ZW5pbmcKQEAgLTM2OSw3ICszNjksNyBAQCBpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCSAqLwogCWVycm9yID0gcmVjdihhY2NlcHQyX3NrLCBt c2didWYsIDEwMCwgMCk7CiAJaWYgKCgwICE9IGVycm9yKSB8fCAoMCAhPSBlcnJubykpCi0JCXRz dF9icmttKFRCUk9LLCBOVUxMLCAiVW5leHBlY3RlZCBlcnJvciByZXR1cm4gb24gIgorCQl0c3Rf YnJrbShUQlJPSywgdHN0X2V4aXQsICJVbmV4cGVjdGVkIGVycm9yIHJldHVybiBvbiAiCiAJCQkg InJlY3YoZXJyb3I6JWQsIGVycm5vOiVkKSIsIGVycm9yLCBlcnJubyk7CiAKIAl0c3RfcmVzbShU UEFTUywgImFjY2VwdCBvZiBhIENMT1NFRCBhc3NvY2lhdGlvbiIpOwpAQCAtMzc5LDcgKzM3OSw3 IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICovCiAJZXJyb3IgPSBzZW5k KGFjY2VwdDJfc2ssIG1lc3NhZ2UsIHN0cmxlbihtZXNzYWdlKSwgTVNHX05PU0lHTkFMKTsKIAlp ZiAoKC0xICE9IGVycm9yKSB8fCAoRVBJUEUgIT0gZXJybm8pKQotCQl0c3RfYnJrbShUQlJPSywg TlVMTCwgInNlbmQgdG8gYSBDTE9TRUQgYXNzb2NpYXRpb24gIgorCQl0c3RfYnJrbShUQlJPSywg dHN0X2V4aXQsICJzZW5kIHRvIGEgQ0xPU0VEIGFzc29jaWF0aW9uICIKIAkJCSAiZXJyb3I6JWQs IGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAogCXRzdF9yZXNtKFRQQVNTLCAic2VuZCB0byBh IENMT1NFRCBhc3NvY2lhdGlvbiIpOwpAQCAtNDI1LDcgKzQyNSw3IEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJc2luZm8tPnNpbmZvX2ZsYWdzIHw9IFNDVFBfRU9GOwogCWVy cm9yID0gc2VuZG1zZyhjbHQyX3NrLCAmb3V0bWVzc2FnZSwgMCk7CiAJaWYgKCgtMSAhPSBlcnJv cikgfHwgKEVJTlZBTCAhPSBlcnJubykpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2VuZG1z ZyB3aXRoIFNDVFBfRU9GIGZsYWcgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzZW5k bXNnIHdpdGggU0NUUF9FT0YgZmxhZyAiCiAJCQkgImVycm9yOiVkLCBlcnJubzolZCIsIGVycm9y LCBlcnJubyk7CiAKIAl0c3RfcmVzbShUUEFTUywgInNlbmRtc2cgd2l0aCBTQ1RQX0VPRiBmbGFn Iik7CkBAIC00MzYsNyArNDM2LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAlzaW5mby0+c2luZm9fZmxhZ3MgfD0gU0NUUF9BQk9SVDsKIAllcnJvciA9IHNlbmRtc2coY2x0 Ml9zaywgJm91dG1lc3NhZ2UsIDApOwogCWlmICgoLTEgIT0gZXJyb3IpIHx8IChFSU5WQUwgIT0g ZXJybm8pKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNlbmRtc2cgd2l0aCBTQ1RQX0FCT1JU IGZsYWcgIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzZW5kbXNnIHdpdGggU0NUUF9B Qk9SVCBmbGFnICIKIAkJCSAiZXJyb3I6JWQsIGVycm5vOiVkIiwgZXJyb3IsIGVycm5vKTsKIAog CXRzdF9yZXNtKFRQQVNTLCAic2VuZG1zZyB3aXRoIFNDVFBfQUJPUlQgZmxhZyIpOwpAQCAtNDU4 LDUgKzQ1OCw1IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJY2xvc2UobGlz dGVuX3NrKTsKIAogCS8qIEluZGljYXRlIHN1Y2Nlc3NmdWwgY29tcGxldGlvbi4gICovCi0JdHN0 X2V4aXQoKTsKKwlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL3Nj dHAvZnVuY190ZXN0cy90ZXN0X3RpbWV0b2xpdmUuYyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAv ZnVuY190ZXN0cy90ZXN0X3RpbWV0b2xpdmUuYwppbmRleCAwNWY1YmI2Li5lMGM2OGZiIDEwMDY0 NAotLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2Z1bmNfdGVzdHMvdGVzdF90aW1ldG9saXZl LmMKKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9mdW5jX3Rlc3RzL3Rlc3RfdGltZXRvbGl2 ZS5jCkBAIC0xLDE3ICsxLDE3IEBACi0vKiBTQ1RQIGtlcm5lbCByZWZlcmVuY2UgSW1wbGVtZW50 YXRpb24KKy8qIFNDVFAga2VybmVsIEltcGxlbWVudGF0aW9uCiAgKiAoQykgQ29weXJpZ2h0IElC TSBDb3JwLiAyMDAxLCAyMDAzCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMCBDaXNjbywgSW5j LgogICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEgTW90b3JvbGEsIEluYy4KICAqIENvcHlyaWdo dCAoYykgMjAwMSBJbnRlbCBDb3JwLgogICogQ29weXJpZ2h0IChjKSAyMDAxIE5va2lhLCBJbmMu CiAgKgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGZyZWUgc29mdHdh cmU7CisgKiBUaGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOwogICogeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YK ICAqIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAqIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3Vy IG9wdGlvbikKICAqIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqIFRoZSBTQ1RQIHJlZmVyZW5j ZSBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0CisgKiBU aGUgU0NUUCBpbXBsZW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 CiAgKiB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQKICAqICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioq KioKICAqIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4KQEAgLTM4LDcgKzM4LDcgQEAKICAqLwogCiAvKgotICogVGhpcyBpcyBh IGJhc2ljIGZ1bmN0aW9uYWwgdGVzdCBmb3IgdGhlIFNDVFAga2VybmVsIHJlZmVyZW5jZQorICog VGhpcyBpcyBhIGJhc2ljIGZ1bmN0aW9uYWwgdGVzdCBmb3IgdGhlIFNDVFAga2VybmVsCiAgKiBp bXBsZW1lbnRhdGlvbiBvZiBzbmRyY3ZpbmZvLnNpbmZvX3RpbWV0b2xpdmUuCiAgKgogICogMSkg Q3JlYXRlIHR3byBzb2NrZXRzLCB0aGUgbGlzdGVuaW5nIHNvY2tldCBzZXRzIGl0cyBSRUNWQlVG IHNtYWxsCkBAIC0xMDEsMTAgKzEwMSwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCXN0cnVjdCBzY3RwX3NuZHJjdmluZm8gKnNpbmZvOwogCXN0cnVjdCBpb3ZlYyBvdXRf aW92OwogCWludCBlcnJvcjsKLQlpbnQgcGZfY2xhc3MsIGFmX2ZhbWlseTsKKwlpbnQgcGZfY2xh c3M7CiAJdWludDMyX3QgcHBpZDsKIAl1aW50MzJfdCBzdHJlYW07Ci0Jc2N0cF9hc3NvY190IGFz c29jaWQxLCBhc3NvY2lkMjsKKwlzY3RwX2Fzc29jX3QgYXNzb2NpZDE7CiAJc3RydWN0IHNjdHBf YXNzb2NfY2hhbmdlICpzYWM7CiAJc3RydWN0IHNjdHBfZXZlbnRfc3Vic2NyaWJlIHN1YnNjcmli ZTsKIAljaGFyICpiaWdfYnVmZmVyOwpAQCAtMTIyLDcgKzEyMiw2IEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJLyogU2V0IHNvbWUgYmFzaWMgdmFsdWVzIHdoaWNoIGRlcGVu ZCBvbiB0aGUgYWRkcmVzcyBmYW1pbHkuICovCiAjaWYgVEVTVF9WNgogCXBmX2NsYXNzID0gUEZf SU5FVDY7Ci0JYWZfZmFtaWx5ID0gQUZfSU5FVDY7CiAKIAlsb29wMS52Ni5zaW42X2ZhbWlseSA9 IEFGX0lORVQ2OwogCWxvb3AxLnY2LnNpbjZfYWRkciA9IGluNmFkZHJfbG9vcGJhY2s7CkBAIC0x MzMsNyArMTMyLDYgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlsb29wMi52 Ni5zaW42X3BvcnQgPSBodG9ucyhTQ1RQX1RFU1RQT1JUXzIpOwogI2Vsc2UKIAlwZl9jbGFzcyA9 IFBGX0lORVQ7Ci0JYWZfZmFtaWx5ID0gQUZfSU5FVDsKIAogCWxvb3AxLnY0LnNpbl9mYW1pbHkg PSBBRl9JTkVUOwogCWxvb3AxLnY0LnNpbl9hZGRyLnNfYWRkciA9IFNDVFBfSVBfTE9PUEJBQ0s7 CkBAIC0xNTEsNyArMTQ5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAls ZW4gPSBzaXplb2YoaW50KTsKIAllcnJvciA9IGdldHNvY2tvcHQoc2syLCBTT0xfU09DS0VULCBT T19SQ1ZCVUYsICZvcmlnX2xlbiwgJmxlbik7CiAJaWYgKGVycm9yKQotCQl0c3RfYnJrbShUQlJP SywgTlVMTCwgImNhbid0IGdldCByY3ZidWYgc2l6ZTogJXMiLAorCQl0c3RfYnJrbShUQlJPSywg dHN0X2V4aXQsICJjYW4ndCBnZXQgcmN2YnVmIHNpemU6ICVzIiwKIAkJCSBzdHJlcnJvcihlcnJu bykpOwogCS8qIFNldCB0aGUgTUFYU0VHIHRvIHNvbWV0aGluZyBzbWFsbGlzaC4gKi8KIAl7CkBA IC0xODIsNyArMTgwLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlsZW4g PSBTTUFMTF9SQ1ZCVUY7CiAJZXJyb3IgPSBzZXRzb2Nrb3B0KHNrMiwgU09MX1NPQ0tFVCwgU09f UkNWQlVGLCAmbGVuLCBzaXplb2YobGVuKSk7CiAJaWYgKGVycm9yKQotCQl0c3RfYnJrbShUQlJP SywgTlVMTCwgInNldHNvY2tvcHQoU09fUkNWQlVGKTogJXMiLAorCQl0c3RfYnJrbShUQlJPSywg dHN0X2V4aXQsICJzZXRzb2Nrb3B0KFNPX1JDVkJVRik6ICVzIiwKIAkJCSBzdHJlcnJvcihlcnJu bykpOwogCiAJLyogTWFyayBzazIgYXMgYmVpbmcgYWJsZSB0byBhY2NlcHQgbmV3IGFzc29jaWF0 aW9ucy4gICovCkBAIC0yMjYsOCArMjI0LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCiAJdGVzdF9jaGVja19tc2dfbm90aWZpY2F0aW9uKCZpbm1lc3NhZ2UsIGVycm9yLAog CQkJCSAgICBzaXplb2Yoc3RydWN0IHNjdHBfYXNzb2NfY2hhbmdlKSwKIAkJCQkgICAgU0NUUF9B U1NPQ19DSEFOR0UsIFNDVFBfQ09NTV9VUCk7CisjaWYgMAogCXNhYyA9IChzdHJ1Y3Qgc2N0cF9h c3NvY19jaGFuZ2UgKilpb3YuaW92X2Jhc2U7CiAJYXNzb2NpZDIgPSBzYWMtPnNhY19hc3NvY19p ZDsKKyNlbmRpZgogCiAJLyogR2V0IHRoZSBjb21tdW5pY2F0aW9uIHVwIG1lc3NhZ2Ugb24gc2sx LiAgKi8KIAlpbm1lc3NhZ2UubXNnX2NvbnRyb2xsZW4gPSBzaXplb2YoaW5jbXNnKTsKQEAgLTI0 Myw3ICsyNDMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJICAgc2l6 ZW9mKG9yaWdfbGVuKSk7CiAKIAlpZiAoZXJyb3IpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAi c2V0c29ja29wdChTT19SQ1ZCVUYpOiAlcyIsCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwg InNldHNvY2tvcHQoU09fUkNWQlVGKTogJXMiLAogCQkJIHN0cmVycm9yKGVycm5vKSk7CiAKIAkv KiBHZXQgdGhlIGZpcnN0IGRhdGEgbWVzc2FnZSB3aGljaCB3YXMgc2VudC4gICovCkBAIC0yNTks NyArMjU5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAllcnJvciA9IGdl dHNvY2tvcHQoc2sxLCBJUFBST1RPX1NDVFAsIFNDVFBfU1RBVFVTLCAmZ3N0YXR1cywgJmxlbik7 CiAKIAlpZiAoZXJyb3IpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiY2FuJ3QgZ2V0IHJ3bmQg c2l6ZTogJXMiLAorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJjYW4ndCBnZXQgcnduZCBz aXplOiAlcyIsCiAJCQkgc3RyZXJyb3IoZXJybm8pKTsKIAl0c3RfcmVzbShUSU5GTywgIkNyZWF0 aW5nIGZpbGxtc2cgb2Ygc2l6ZSAlZCIsCiAJCSBnc3RhdHVzLnNzdGF0X3J3bmQgKyBSV05EX1NM T1ApOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p CiAJdGVzdF9jaGVja19tc2dfZGF0YSgmaW5tZXNzYWdlLCBlcnJvciwgc3RybGVuKG5vdHRsbXNn KSArIDEsCiAJCQkgICAgTVNHX0VPUiwgc3RyZWFtLCBwcGlkKTsKIAlpZiAoMCAhPSBzdHJuY21w KGlvdi5pb3ZfYmFzZSwgbm90dGxtc2csIHN0cmxlbihub3R0bG1zZykgKyAxKSkKLQkJdHN0X2Jy a20oVEJST0ssIE5VTEwsICJSZWNlaXZlZCBXcm9uZyBNZXNzYWdlICEhISIpOworCQl0c3RfYnJr bShUQlJPSywgdHN0X2V4aXQsICJSZWNlaXZlZCBXcm9uZyBNZXNzYWdlICEhISIpOwogCiAJdHN0 X3Jlc20oVFBBU1MsICJSZWNlaXZlIG1lc3NhZ2Ugd2l0aCBubyB0aW1lb3V0Iik7CiAKQEAgLTM2 MSw3ICszNjEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCSAgICBz dHJsZW4odHRsbXNnKSArIDEsIFNDVFBfU0VORF9GQUlMRUQsIDApOwogCXNzZiA9IChzdHJ1Y3Qg c2N0cF9zZW5kX2ZhaWxlZCAqKWlvdi5pb3ZfYmFzZTsKIAlpZiAoMCAhPSBzdHJuY21wKHR0bG1z ZywgKGNoYXIgKilzc2YtPnNzZl9kYXRhLCBzdHJsZW4odHRsbXNnKSArIDEpKQotCQl0c3RfYnJr bShUQlJPSywgTlVMTCwgIlNFTkRfRkFJTEVEIGRhdGEgbWlzbWF0Y2giKTsKKwkJdHN0X2Jya20o VEJST0ssIHRzdF9leGl0LCAiU0VORF9GQUlMRUQgZGF0YSBtaXNtYXRjaCIpOwogCiAJdHN0X3Jl c20oVFBBU1MsICJSZWNlaXZlIFNFTkRfRkFJTEVEIGZvciBtZXNzYWdlIHdpdGggdGltZW91dCIp OwogCkBAIC0zNzgsNyArMzc4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAkJc3NmID0gKHN0cnVjdCBzY3RwX3NlbmRfZmFpbGVkICopaW92Lmlvdl9iYXNlOwogCQlpZiAo MCAhPSBzdHJuY21wKCZ0dGxmcmFnW29mZnNldF0sIChjaGFyICopc3NmLT5zc2ZfZGF0YSwKIAkJ CQkgU01BTExfTUFYU0VHKSkKLQkJCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiU0VORF9GQUlMRUQg ZGF0YSBtaXNtYXRjaCIpOworCQkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiU0VORF9GQUlM RUQgZGF0YSBtaXNtYXRjaCIpOwogCQlvZmZzZXQgKz0gU01BTExfTUFYU0VHOwogCX0gd2hpbGUg KCEoc3NmLT5zc2ZfaW5mby5zaW5mb19mbGFncyAmIDB4MDEpKTsJLyogTEFTVF9GUkFHICovCiAK QEAgLTM5OCw1ICszOTgsNSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWNs b3NlKHNrMik7CiAKIAkvKiBJbmRpY2F0ZSBzdWNjZXNzZnVsIGNvbXBsZXRpb24uICAqLwotCXRz dF9leGl0KCk7CisJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9z Y3RwL2luY2x1ZGUvbmV0aW5ldC9zY3RwLmggYi90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2luY2x1 ZGUvbmV0aW5ldC9zY3RwLmgKaW5kZXggZTMwYmZkZi4uOTc1NjI0NyAxMDA2NDQKLS0tIGEvdGVz dGNhc2VzL25ldHdvcmsvc2N0cC9pbmNsdWRlL25ldGluZXQvc2N0cC5oCisrKyBiL3Rlc3RjYXNl cy9uZXR3b3JrL3NjdHAvaW5jbHVkZS9uZXRpbmV0L3NjdHAuaApAQCAtMSw0ICsxLDQgQEAKLS8q IFNDVFAga2VybmVsIHJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvbjogVXNlciBBUEkgZXh0ZW5zaW9u cy4KKy8qIFNDVFAga2VybmVsIEltcGxlbWVudGF0aW9uOiBVc2VyIEFQSSBleHRlbnNpb25zLgog ICoKICAqIHNjdHAuaAogICoKQEAgLTYsNyArNiw3IEBACiAgKiAgICBodHRwOi8vd3d3LmdudS5v cmcvY29weWxlZnQvbGVzc2VyLnR4dAogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1 c2VyIGxpYnJhcnkgdGhhdCBvZmZlcnMgc3VwcG9ydCBmb3IgdGhlCi0gKiBTQ1RQIGtlcm5lbCBy ZWZlcmVuY2UgSW1wbGVtZW50YXRpb24uIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcworICogTGlu dXggS2VybmVsIFNDVFAgSW1wbGVtZW50YXRpb24uIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcwog ICogY29kZSBpcyB0byBwcm92aWRlIHRoZSBTQ1RQIFNvY2tldCBBUEkgbWFwcGluZ3MgZm9yIHVz ZXIKICAqIGFwcGxpY2F0aW9uIHRvIGludGVyZmFjZSB3aXRoIFNDVFAgaW4ga2VybmVsLgogICoK QEAgLTI3LDYgKzI3LDcgQEAKICAqICAgIERhaXN5IENoYW5nICAgICAgICAgICAgICA8ZGFpc3lj QHVzLmlibS5jb20+CiAgKiAgICBJbmFreSBQZXJlei1Hb256YWxleiAgICAgPGluYWt5Lmdvbnph bGV6QGludGVsLmNvbT4KICAqICAgIFNyaWRoYXIgU2FtdWRyYWxhICAgICAgICA8c3JpQHVzLmli bS5jb20+CisgKiAgICBWbGFkIFlhc2V2aWNoCQk8dmxhZGlzbGF2Lnlhc2V2aWNoQGhwLmNvbT4K ICAqLwogCiAjaWZuZGVmIF9fbGludXhfc2N0cF9oX18KQEAgLTM2LDkgKzM3LDcgQEAKICNpbmNs dWRlIDxsaW51eC90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KIAotX19CRUdJTl9E RUNMUwotCi10eXBlZGVmIF9fczMyIHNjdHBfYXNzb2NfdDsKK19fQkVHSU5fREVDTFMgdHlwZWRl ZiBfX3MzMiBzY3RwX2Fzc29jX3Q7CiAKIC8qIFNvY2tldCBvcHRpb24gbGF5ZXIgZm9yIFNDVFAg Ki8KICNpZm5kZWYgU09MX1NDVFAKQEAgLTYxLDY0ICs2MCw1MyBAQCB0eXBlZGVmIF9fczMyIHNj dHBfYXNzb2NfdDsKIC8qIFRoZSBmb2xsb3dpbmcgc3ltYm9scyBjb21lIGZyb20gdGhlIFNvY2tl dHMgQVBJIEV4dGVuc2lvbnMgZm9yCiAgKiBTQ1RQIDxkcmFmdC1pZXRmLXRzdndnLXNjdHBzb2Nr ZXQtMDcudHh0Pi4KICAqLwotZW51bSBzY3RwX29wdG5hbWUgewotCVNDVFBfUlRPSU5GTywKLSNk ZWZpbmUgU0NUUF9SVE9JTkZPIFNDVFBfUlRPSU5GTwotCVNDVFBfQVNTT0NJTkZPLAotI2RlZmlu ZSBTQ1RQX0FTU09DSU5GTyBTQ1RQX0FTU09DSU5GTwotCVNDVFBfSU5JVE1TRywKLSNkZWZpbmUg U0NUUF9JTklUTVNHIFNDVFBfSU5JVE1TRwotCVNDVFBfTk9ERUxBWSwgCS8qIEdldC9zZXQgbm9k ZWxheSBvcHRpb24uICovCi0jZGVmaW5lIFNDVFBfTk9ERUxBWQlTQ1RQX05PREVMQVkKLQlTQ1RQ X0FVVE9DTE9TRSwKLSNkZWZpbmUgU0NUUF9BVVRPQ0xPU0UgU0NUUF9BVVRPQ0xPU0UKLQlTQ1RQ X1NFVF9QRUVSX1BSSU1BUllfQUREUiwKLSNkZWZpbmUgU0NUUF9TRVRfUEVFUl9QUklNQVJZX0FE RFIgU0NUUF9TRVRfUEVFUl9QUklNQVJZX0FERFIKLQlTQ1RQX1BSSU1BUllfQUREUiwKLSNkZWZp bmUgU0NUUF9QUklNQVJZX0FERFIgU0NUUF9QUklNQVJZX0FERFIKLQlTQ1RQX0FEQVBUSU9OX0xB WUVSLAotI2RlZmluZSBTQ1RQX0FEQVBUSU9OX0xBWUVSIFNDVFBfQURBUFRJT05fTEFZRVIKLQlT Q1RQX0RJU0FCTEVfRlJBR01FTlRTLAotI2RlZmluZSBTQ1RQX0RJU0FCTEVfRlJBR01FTlRTIFND VFBfRElTQUJMRV9GUkFHTUVOVFMKLQlTQ1RQX1BFRVJfQUREUl9QQVJBTVMsCi0jZGVmaW5lIFND VFBfUEVFUl9BRERSX1BBUkFNUyBTQ1RQX1BFRVJfQUREUl9QQVJBTVMKLQlTQ1RQX0RFRkFVTFRf U0VORF9QQVJBTSwKLSNkZWZpbmUgU0NUUF9ERUZBVUxUX1NFTkRfUEFSQU0gU0NUUF9ERUZBVUxU X1NFTkRfUEFSQU0KLQlTQ1RQX0VWRU5UUywKLSNkZWZpbmUgU0NUUF9FVkVOVFMgU0NUUF9FVkVO VFMKLQlTQ1RQX0lfV0FOVF9NQVBQRURfVjRfQUREUiwgIC8qIFR1cm4gb24vb2ZmIG1hcHBlZCB2 NCBhZGRyZXNzZXMgICovCi0jZGVmaW5lIFNDVFBfSV9XQU5UX01BUFBFRF9WNF9BRERSIFNDVFBf SV9XQU5UX01BUFBFRF9WNF9BRERSCi0JU0NUUF9NQVhTRUcsIAkvKiBHZXQvc2V0IG1heGltdW0g ZnJhZ21lbnQuICovCi0jZGVmaW5lIFNDVFBfTUFYU0VHIAlTQ1RQX01BWFNFRwotCVNDVFBfU1RB VFVTLAotI2RlZmluZSBTQ1RQX1NUQVRVUyBTQ1RQX1NUQVRVUwotCVNDVFBfR0VUX1BFRVJfQURE Ul9JTkZPLAotI2RlZmluZSBTQ1RQX0dFVF9QRUVSX0FERFJfSU5GTyBTQ1RQX0dFVF9QRUVSX0FE RFJfSU5GTwotCi0JLyogSW50ZXJuYWwgU29ja2V0IE9wdGlvbnMuIFNvbWUgb2YgdGhlIHNjdHAg bGlicmFyeSBmdW5jdGlvbnMgYXJlCi0JICogaW1wbGVtZW50ZWQgdXNpbmcgdGhlc2Ugc29ja2V0 IG9wdGlvbnMuCi0JICovCi0JU0NUUF9TT0NLT1BUX0JJTkRYX0FERCA9IDEwMCwvKiBCSU5EWCBy ZXF1ZXN0cyBmb3IgYWRkaW5nIGFkZHJlc3Nlcy4gKi8KLSNkZWZpbmUgU0NUUF9TT0NLT1BUX0JJ TkRYX0FERAlTQ1RQX1NPQ0tPUFRfQklORFhfQURECi0JU0NUUF9TT0NLT1BUX0JJTkRYX1JFTSwg LyogQklORFggcmVxdWVzdHMgZm9yIHJlbW92aW5nIGFkZHJlc3Nlcy4gKi8KLSNkZWZpbmUgU0NU UF9TT0NLT1BUX0JJTkRYX1JFTQlTQ1RQX1NPQ0tPUFRfQklORFhfUkVNCi0JU0NUUF9TT0NLT1BU X1BFRUxPRkYsIAkvKiBwZWVsIG9mZiBhc3NvY2lhdGlvbi4gKi8KLSNkZWZpbmUgU0NUUF9TT0NL T1BUX1BFRUxPRkYJU0NUUF9TT0NLT1BUX1BFRUxPRkYKLQlTQ1RQX0dFVF9QRUVSX0FERFJTX05V TV9PTEQsIAkvKiBHZXQgbnVtYmVyIG9mIHBlZXIgYWRkcmVzc3MuICovCi0jZGVmaW5lIFNDVFBf R0VUX1BFRVJfQUREUlNfTlVNX09MRAlTQ1RQX0dFVF9QRUVSX0FERFJTX05VTV9PTEQKLQlTQ1RQ X0dFVF9QRUVSX0FERFJTX09MRCwgCS8qIEdldCBhbGwgcGVlciBhZGRyZXNzcy4gKi8KLSNkZWZp bmUgU0NUUF9HRVRfUEVFUl9BRERSU19PTEQJU0NUUF9HRVRfUEVFUl9BRERSU19PTEQKLQlTQ1RQ X0dFVF9MT0NBTF9BRERSU19OVU1fT0xELCAJLyogR2V0IG51bWJlciBvZiBsb2NhbCBhZGRyZXNz cy4gKi8KLSNkZWZpbmUgU0NUUF9HRVRfTE9DQUxfQUREUlNfTlVNX09MRAlTQ1RQX0dFVF9MT0NB TF9BRERSU19OVU1fT0xECi0JU0NUUF9HRVRfTE9DQUxfQUREUlNfT0xELCAJLyogR2V0IGFsbCBs b2NhbCBhZGRyZXNzcy4gKi8KLSNkZWZpbmUgU0NUUF9HRVRfTE9DQUxfQUREUlNfT0xECVNDVFBf R0VUX0xPQ0FMX0FERFJTX09MRAotCVNDVFBfU09DS09QVF9DT05ORUNUWCwgLyogQ09OTkVDVFgg cmVxdWVzdHMuICovCi0jZGVmaW5lIFNDVFBfU09DS09QVF9DT05ORUNUWAlTQ1RQX1NPQ0tPUFRf Q09OTkVDVFgKLQlTQ1RQX0dFVF9QRUVSX0FERFJTLCAgICAvKiBHZXQgYWxsIHBlZXIgYWRkcmVz c3MuICovCi0jZGVmaW5lIFNDVFBfR0VUX1BFRVJfQUREUlMgICAgIFNDVFBfR0VUX1BFRVJfQURE UlMKLQlTQ1RQX0dFVF9MT0NBTF9BRERSUywgICAvKiBHZXQgYWxsIGxvY2FsIGFkZHJlc3NzLiAq LwotI2RlZmluZSBTQ1RQX0dFVF9MT0NBTF9BRERSUyAgICBTQ1RQX0dFVF9MT0NBTF9BRERSUwot fTsKKyNkZWZpbmUgU0NUUF9SVE9JTkZPCTAKKyNkZWZpbmUgU0NUUF9BU1NPQ0lORk8gIDEKKyNk ZWZpbmUgU0NUUF9JTklUTVNHCTIKKyNkZWZpbmUgU0NUUF9OT0RFTEFZCTMJLyogR2V0L3NldCBu b2RlbGF5IG9wdGlvbi4gKi8KKyNkZWZpbmUgU0NUUF9BVVRPQ0xPU0UJNAorI2RlZmluZSBTQ1RQ X1NFVF9QRUVSX1BSSU1BUllfQUREUiA1CisjZGVmaW5lIFNDVFBfUFJJTUFSWV9BRERSCTYKKyNk ZWZpbmUgU0NUUF9BREFQVEFUSU9OX0xBWUVSCTcKKyNkZWZpbmUgU0NUUF9ESVNBQkxFX0ZSQUdN RU5UUwk4CisjZGVmaW5lIFNDVFBfUEVFUl9BRERSX1BBUkFNUwk5CisjZGVmaW5lIFNDVFBfREVG QVVMVF9TRU5EX1BBUkFNCTEwCisjZGVmaW5lIFNDVFBfRVZFTlRTCTExCisjZGVmaW5lIFNDVFBf SV9XQU5UX01BUFBFRF9WNF9BRERSIDEyCS8qIFR1cm4gb24vb2ZmIG1hcHBlZCB2NCBhZGRyZXNz ZXMgICovCisjZGVmaW5lIFNDVFBfTUFYU0VHCTEzCS8qIEdldC9zZXQgbWF4aW11bSBmcmFnbWVu dC4gKi8KKyNkZWZpbmUgU0NUUF9TVEFUVVMJMTQKKyNkZWZpbmUgU0NUUF9HRVRfUEVFUl9BRERS X0lORk8JMTUKKyNkZWZpbmUgU0NUUF9ERUxBWUVEX0FDS19USU1FCTE2CisjZGVmaW5lIFNDVFBf REVMQVlFRF9BQ0sgU0NUUF9ERUxBWUVEX0FDS19USU1FCisjZGVmaW5lIFNDVFBfREVMQVlFRF9T QUNLIFNDVFBfREVMQVlFRF9BQ0tfVElNRQorI2RlZmluZSBTQ1RQX0NPTlRFWFQJMTcKKyNkZWZp bmUgU0NUUF9GUkFHTUVOVF9JTlRFUkxFQVZFCTE4CisjZGVmaW5lIFNDVFBfUEFSVElBTF9ERUxJ VkVSWV9QT0lOVAkxOQkvKiBTZXQvR2V0IHBhcnRpYWwgZGVsaXZlcnkgcG9pbnQgKi8KKyNkZWZp bmUgU0NUUF9NQVhfQlVSU1QJMjAJLyogU2V0L0dldCBtYXggYnVyc3QgKi8KKyNkZWZpbmUgU0NU UF9BVVRIX0NIVU5LCTIxCS8qIFNldCBvbmx5OiBhZGQgYSBjaHVuayB0eXBlIHRvIGF1dGhlbnRp Y2F0ZSAqLworI2RlZmluZSBTQ1RQX0hNQUNfSURFTlQJMjIKKyNkZWZpbmUgU0NUUF9BVVRIX0tF WQkyMworI2RlZmluZSBTQ1RQX0FVVEhfQUNUSVZFX0tFWQkyNAorI2RlZmluZSBTQ1RQX0FVVEhf REVMRVRFX0tFWQkyNQorI2RlZmluZSBTQ1RQX1BFRVJfQVVUSF9DSFVOS1MJMjYJLyogUmVhZCBv bmx5ICovCisjZGVmaW5lIFNDVFBfTE9DQUxfQVVUSF9DSFVOS1MJMjcJLyogUmVhZCBvbmx5ICov CisjZGVmaW5lIFNDVFBfR0VUX0FTU09DX05VTUJFUgkyOAkvKiBSZWFkIG9ubHkgKi8KKworLyog SW50ZXJuYWwgU29ja2V0IE9wdGlvbnMuIFNvbWUgb2YgdGhlIHNjdHAgbGlicmFyeSBmdW5jdGlv bnMgYXJlCisgKiBpbXBsZW1lbnRlZCB1c2luZyB0aGVzZSBzb2NrZXQgb3B0aW9ucy4KKyAqLwor I2RlZmluZSBTQ1RQX1NPQ0tPUFRfQklORFhfQURECTEwMAkvKiBCSU5EWCByZXF1ZXN0cyBmb3Ig YWRkaW5nIGFkZHJzICovCisjZGVmaW5lIFNDVFBfU09DS09QVF9CSU5EWF9SRU0JMTAxCS8qIEJJ TkRYIHJlcXVlc3RzIGZvciByZW1vdmluZyBhZGRycy4gKi8KKyNkZWZpbmUgU0NUUF9TT0NLT1BU X1BFRUxPRkYJMTAyCS8qIHBlZWwgb2ZmIGFzc29jaWF0aW9uLiAqLworLyogT3B0aW9ucyAxMDQt MTA2IGFyZSBkZXByZWNhdGVkIGFuZCByZW1vdmVkLiBEbyBub3QgdXNlIHRoaXMgc3BhY2UgKi8K KyNkZWZpbmUgU0NUUF9TT0NLT1BUX0NPTk5FQ1RYX09MRAkxMDcJLyogQ09OTkVDVFggb2xkIHJl cXVlc3RzLiAqLworI2RlZmluZSBTQ1RQX0dFVF9QRUVSX0FERFJTCTEwOAkvKiBHZXQgYWxsIHBl ZXIgYWRkcmVzc3MuICovCisjZGVmaW5lIFNDVFBfR0VUX0xPQ0FMX0FERFJTCTEwOQkvKiBHZXQg YWxsIGxvY2FsIGFkZHJlc3NzLiAqLworI2RlZmluZSBTQ1RQX1NPQ0tPUFRfQ09OTkVDVFgJMTEw CS8qIENPTk5FQ1RYIHJlcXVlc3RzLiAqLworI2RlZmluZSBTQ1RQX1NPQ0tPUFRfQ09OTkVDVFgz CTExMQkvKiBDT05ORUNUWCByZXF1ZXN0cyAodXBkYXRlZCkgKi8KKworLyogU0NUUCBzb2NrZXQg b3B0aW9uIHVzZWQgdG8gcmVhZCBwZXIgZW5kcG9pbnQgYXNzb2NpYXRpb24gc3RhdGlzdGljcy4g Ki8KKyNkZWZpbmUgU0NUUF9HRVRfQVNTT0NfU1RBVFMgICAgMTEyCS8qIFJlYWQgb25seSAqLwog CiAvKgogICogNS4yLjEgU0NUUCBJbml0aWF0aW9uIFN0cnVjdHVyZSAoU0NUUF9JTklUKQpAQCAt MTcyLDI2ICsxNjAsMjcgQEAgc3RydWN0IHNjdHBfc25kcmN2aW5mbyB7CiAgKi8KIAogZW51bSBz Y3RwX3NpbmZvX2ZsYWdzIHsKLQlTQ1RQX1VOT1JERVJFRCA9IDEsICAvKiBTZW5kL3JlY2VpdmUg bWVzc2FnZSB1bm9yZGVyZWQuICovCi0JU0NUUF9BRERSX09WRVIgPSAyLCAgLyogT3ZlcnJpZGUg dGhlIHByaW1hcnkgZGVzdGluYXRpb24uICovCi0JU0NUUF9BQk9SVD00LCAgICAgICAgLyogU2Vu ZCBhbiBBQk9SVCBtZXNzYWdlIHRvIHRoZSBwZWVyLiAqLwotCVNDVFBfRU9GPU1TR19GSU4sICAg IC8qIEluaXRpYXRlIGdyYWNlZnVsIHNodXRkb3duIHByb2Nlc3MuICovCisJU0NUUF9VTk9SREVS RUQgPSAxLAkvKiBTZW5kL3JlY2VpdmUgbWVzc2FnZSB1bm9yZGVyZWQuICovCisJU0NUUF9BRERS X09WRVIgPSAyLAkvKiBPdmVycmlkZSB0aGUgcHJpbWFyeSBkZXN0aW5hdGlvbi4gKi8KKwlTQ1RQ X0FCT1JUID0gNCwJCS8qIFNlbmQgYW4gQUJPUlQgbWVzc2FnZSB0byB0aGUgcGVlci4gKi8KKwlT Q1RQX1NBQ0tfSU1NRURJQVRFTFkgPSA4LAkvKiBTQUNLIHNob3VsZCBiZSBzZW50IHdpdGhvdXQg ZGVsYXkgKi8KKwlTQ1RQX0VPRiA9IE1TR19GSU4sCS8qIEluaXRpYXRlIGdyYWNlZnVsIHNodXRk b3duIHByb2Nlc3MuICovCiB9OwogCi0KIHR5cGVkZWYgdW5pb24gewotCV9fdTggICAJCQlyYXc7 Ci0Jc3RydWN0IHNjdHBfaW5pdG1zZwlpbml0OwotCXN0cnVjdCBzY3RwX3NuZHJjdmluZm8Jc25k cmN2OworCV9fdTggcmF3OworCXN0cnVjdCBzY3RwX2luaXRtc2cgaW5pdDsKKwlzdHJ1Y3Qgc2N0 cF9zbmRyY3ZpbmZvIHNuZHJjdjsKIH0gc2N0cF9jbXNnX2RhdGFfdDsKIAogLyogVGhlc2UgYXJl IGNtc2dfdHlwZXMuICAqLwogdHlwZWRlZiBlbnVtIHNjdHBfY21zZ190eXBlIHsKLQlTQ1RQX0lO SVQsICAgICAgICAgICAgICAvKiA1LjIuMSBTQ1RQIEluaXRpYXRpb24gU3RydWN0dXJlICovCi0J U0NUUF9TTkRSQ1YsICAgICAgICAgICAgLyogNS4yLjIgU0NUUCBIZWFkZXIgSW5mb3JtYXRpb24g U3RydWN0dXJlICovCisJU0NUUF9JTklULAkJLyogNS4yLjEgU0NUUCBJbml0aWF0aW9uIFN0cnVj dHVyZSAqLworI2RlZmluZSBTQ1RQX0lOSVQgU0NUUF9JTklUCisJU0NUUF9TTkRSQ1YsCQkvKiA1 LjIuMiBTQ1RQIEhlYWRlciBJbmZvcm1hdGlvbiBTdHJ1Y3R1cmUgKi8KKyNkZWZpbmUgU0NUUF9T TkRSQ1YgU0NUUF9TTkRSQ1YKIH0gc2N0cF9jbXNnX3Q7CiAKLQogLyoKICAqIDUuMy4xLjEgU0NU UF9BU1NPQ19DSEFOR0UKICAqCkBAIC0yMTAsNiArMTk5LDcgQEAgc3RydWN0IHNjdHBfYXNzb2Nf Y2hhbmdlIHsKIAlfX3UxNiBzYWNfb3V0Ym91bmRfc3RyZWFtczsKIAlfX3UxNiBzYWNfaW5ib3Vu ZF9zdHJlYW1zOwogCXNjdHBfYXNzb2NfdCBzYWNfYXNzb2NfaWQ7CisJX191OCBzYWNfaW5mb1sw XTsKIH07CiAKIC8qCkBAIC0yNDQsNyArMjM0LDcgQEAgc3RydWN0IHNjdHBfcGFkZHJfY2hhbmdl IHsKIAlpbnQgc3BjX3N0YXRlOwogCWludCBzcGNfZXJyb3I7CiAJc2N0cF9hc3NvY190IHNwY19h c3NvY19pZDsKLX0gX19hdHRyaWJ1dGVfXygocGFja2VkLCBhbGlnbmVkKDQpKSk7Cit9IF9fYXR0 cmlidXRlX18gKChwYWNrZWQsIGFsaWduZWQoNCkpKTsKIAogLyoKICAqICAgIHNwY19zdGF0ZTog IDMyIGJpdHMgKHNpZ25lZCBpbnRlZ2VyKQpAQCAtMjU4LDkgKzI0OCw5IEBAIGVudW0gc2N0cF9z cGNfc3RhdGUgewogCVNDVFBfQUREUl9SRU1PVkVELAogCVNDVFBfQUREUl9BRERFRCwKIAlTQ1RQ X0FERFJfTUFERV9QUklNLAorCVNDVFBfQUREUl9DT05GSVJNRUQsCiB9OwogCi0KIC8qCiAgKiA1 LjMuMS4zIFNDVFBfUkVNT1RFX0VSUk9SCiAgKgpAQCAtMjgwLDcgKzI3MCw2IEBAIHN0cnVjdCBz Y3RwX3JlbW90ZV9lcnJvciB7CiAJX191OCBzcmVfZGF0YVswXTsKIH07CiAKLQogLyoKICAqIDUu My4xLjQgU0NUUF9TRU5EX0ZBSUxFRAogICoKQEAgLTMyOCwyNSArMzE3LDI1IEBAIHN0cnVjdCBz Y3RwX3NodXRkb3duX2V2ZW50IHsKIH07CiAKIC8qCi0gKiA1LjMuMS42IFNDVFBfQURBUFRJT05f SU5ESUNBVElPTgorICogNS4zLjEuNiBTQ1RQX0FEQVBUQVRJT05fSU5ESUNBVElPTgogICoKLSAq ICAgV2hlbiBhIHBlZXIgc2VuZHMgYSBBZGFwdGlvbiBMYXllciBJbmRpY2F0aW9uIHBhcmFtZXRl ciAsIFNDVFAKKyAqICAgV2hlbiBhIHBlZXIgc2VuZHMgYSBBZGFwdGF0aW9uIExheWVyIEluZGlj YXRpb24gcGFyYW1ldGVyICwgU0NUUAogICogICBkZWxpdmVycyB0aGlzIG5vdGlmaWNhdGlvbiB0 byBpbmZvcm0gdGhlIGFwcGxpY2F0aW9uCi0gKiAgIHRoYXQgb2YgdGhlIHBlZXJzIHJlcXVlc3Rl ZCBhZGFwdGlvbiBsYXllci4KKyAqICAgdGhhdCBvZiB0aGUgcGVlcnMgcmVxdWVzdGVkIGFkYXB0 YXRpb24gbGF5ZXIuCiAgKi8KLXN0cnVjdCBzY3RwX2FkYXB0aW9uX2V2ZW50IHsKK3N0cnVjdCBz Y3RwX2FkYXB0YXRpb25fZXZlbnQgewogCV9fdTE2IHNhaV90eXBlOwogCV9fdTE2IHNhaV9mbGFn czsKIAlfX3UzMiBzYWlfbGVuZ3RoOwotCV9fdTMyIHNhaV9hZGFwdGlvbl9pbmQ7CisJX191MzIg c2FpX2FkYXB0YXRpb25faW5kOwogCXNjdHBfYXNzb2NfdCBzYWlfYXNzb2NfaWQ7CiB9OwogCiAv KgogICogNS4zLjEuNyBTQ1RQX1BBUlRJQUxfREVMSVZFUllfRVZFTlQKICAqCi0gKiAgIFdoZW4g YSByZWNpZXZlciBpcyBlbmdhZ2VkIGluIGEgcGFydGlhbCBkZWxpdmVyeSBvZiBhCi0gKiAgIG1l c3NhZ2UgdGhpcyBub3RpZmljYXRpb24gd2lsbCBiZSB1c2VkIHRvIGluaWRpY2F0ZQorICogICBX aGVuIGEgcmVjZWl2ZXIgaXMgZW5nYWdlZCBpbiBhIHBhcnRpYWwgZGVsaXZlcnkgb2YgYQorICog ICBtZXNzYWdlIHRoaXMgbm90aWZpY2F0aW9uIHdpbGwgYmUgdXNlZCB0byBpbmRpY2F0ZQogICog ICB2YXJpb3VzIGV2ZW50cy4KICAqLwogc3RydWN0IHNjdHBfcGRhcGlfZXZlbnQgewpAQCAtMzU3 LDcgKzM0NiwzMyBAQCBzdHJ1Y3Qgc2N0cF9wZGFwaV9ldmVudCB7CiAJc2N0cF9hc3NvY190IHBk YXBpX2Fzc29jX2lkOwogfTsKIAotZW51bSB7IFNDVFBfUEFSVElBTF9ERUxJVkVSWV9BQk9SVEVE PTAsIH07CitlbnVtIHsgU0NUUF9QQVJUSUFMX0RFTElWRVJZX0FCT1JURUQgPSAwLCB9OworCisv KgorKiA1LjMuMS44LiAgU0NUUF9BVVRIRU5USUNBVElPTl9FVkVOVAorKgorKiAgV2hlbiBhIHJl Y2VpdmVyIGlzIHVzaW5nIGF1dGhlbnRpY2F0aW9uIHRoaXMgbWVzc2FnZSB3aWxsIHByb3ZpZGUK KyogIG5vdGlmaWNhdGlvbnMgcmVnYXJkaW5nIG5ldyBrZXlzIGJlaW5nIG1hZGUgYWN0aXZlIGFz IHdlbGwgYXMgZXJyb3JzLgorKi8KKworc3RydWN0IHNjdHBfYXV0aGtleV9ldmVudCB7CisJX191 MTYgYXV0aF90eXBlOworCV9fdTE2IGF1dGhfZmxhZ3M7CisJX191MzIgYXV0aF9sZW5ndGg7CisJ X191MTYgYXV0aF9rZXludW1iZXI7CisJX191MTYgYXV0aF9hbHRrZXludW1iZXI7CisJX191MzIg YXV0aF9pbmRpY2F0aW9uOworCXNjdHBfYXNzb2NfdCBhdXRoX2Fzc29jX2lkOworfTsKKworZW51 bSB7IFNDVFBfQVVUSF9ORVdLRVkgPSAwLCB9OworCitzdHJ1Y3Qgc2N0cF9zZW5kZXJfZHJ5X2V2 ZW50IHsKKwlfX3UxNiBzZW5kZXJfZHJ5X3R5cGU7CisJX191MTYgc2VuZGVyX2RyeV9mbGFnczsK KwlfX3UzMiBzZW5kZXJfZHJ5X2xlbmd0aDsKKwlzY3RwX2Fzc29jX3Qgc2VuZGVyX2RyeV9hc3Nv Y19pZDsKK307CiAKIC8qCiAgKiBEZXNjcmliZWQgaW4gU2VjdGlvbiA3LjMKQEAgLTM3MSw3ICsz ODYsOSBAQCBzdHJ1Y3Qgc2N0cF9ldmVudF9zdWJzY3JpYmUgewogCV9fdTggc2N0cF9wZWVyX2Vy cm9yX2V2ZW50OwogCV9fdTggc2N0cF9zaHV0ZG93bl9ldmVudDsKIAlfX3U4IHNjdHBfcGFydGlh bF9kZWxpdmVyeV9ldmVudDsKLQlfX3U4IHNjdHBfYWRhcHRpb25fbGF5ZXJfZXZlbnQ7CisJX191 OCBzY3RwX2FkYXB0YXRpb25fbGF5ZXJfZXZlbnQ7CisJX191OCBzY3RwX2F1dGhlbnRpY2F0aW9u X2V2ZW50OworCV9fdTggc2N0cF9zZW5kZXJfZHJ5X2V2ZW50OwogfTsKIAogLyoKQEAgLTM4Myw3 ICs0MDAsNyBAQCBzdHJ1Y3Qgc2N0cF9ldmVudF9zdWJzY3JpYmUgewogICovCiB1bmlvbiBzY3Rw X25vdGlmaWNhdGlvbiB7CiAJc3RydWN0IHsKLQkJX191MTYgc25fdHlwZTsgICAgICAgICAgICAg LyogTm90aWZpY2F0aW9uIHR5cGUuICovCisJCV9fdTE2IHNuX3R5cGU7CS8qIE5vdGlmaWNhdGlv biB0eXBlLiAqLwogCQlfX3UxNiBzbl9mbGFnczsKIAkJX191MzIgc25fbGVuZ3RoOwogCX0gc25f aGVhZGVyOwpAQCAtMzkyLDggKzQwOSwxMCBAQCB1bmlvbiBzY3RwX25vdGlmaWNhdGlvbiB7CiAJ c3RydWN0IHNjdHBfcmVtb3RlX2Vycm9yIHNuX3JlbW90ZV9lcnJvcjsKIAlzdHJ1Y3Qgc2N0cF9z ZW5kX2ZhaWxlZCBzbl9zZW5kX2ZhaWxlZDsKIAlzdHJ1Y3Qgc2N0cF9zaHV0ZG93bl9ldmVudCBz bl9zaHV0ZG93bl9ldmVudDsKLQlzdHJ1Y3Qgc2N0cF9hZGFwdGlvbl9ldmVudCBzbl9hZGFwdGlv bl9ldmVudDsKKwlzdHJ1Y3Qgc2N0cF9hZGFwdGF0aW9uX2V2ZW50IHNuX2FkYXB0YXRpb25fZXZl bnQ7CiAJc3RydWN0IHNjdHBfcGRhcGlfZXZlbnQgc25fcGRhcGlfZXZlbnQ7CisJc3RydWN0IHNj dHBfYXV0aGtleV9ldmVudCBzbl9hdXRoa2V5X2V2ZW50OworCXN0cnVjdCBzY3RwX3NlbmRlcl9k cnlfZXZlbnQgc25fc2VuZGVyX2RyeV9ldmVudDsKIH07CiAKIC8qIFNlY3Rpb24gNS4zLjEKQEAg LTQwMiwxOSArNDIxLDMwIEBAIHVuaW9uIHNjdHBfbm90aWZpY2F0aW9uIHsKICAqLwogCiBlbnVt IHNjdHBfc25fdHlwZSB7Ci0JU0NUUF9TTl9UWVBFX0JBU0UgICAgID0gKDE8PDE1KSwKKwlTQ1RQ X1NOX1RZUEVfQkFTRSA9ICgxIDw8IDE1KSwKIAlTQ1RQX0FTU09DX0NIQU5HRSwKKyNkZWZpbmUg U0NUUF9BU1NPQ19DSEFOR0UgU0NUUF9BU1NPQ19DSEFOR0UKIAlTQ1RQX1BFRVJfQUREUl9DSEFO R0UsCisjZGVmaW5lIFNDVFBfUEVFUl9BRERSX0NIQU5HRSBTQ1RQX1BFRVJfQUREUl9DSEFOR0UK IAlTQ1RQX1NFTkRfRkFJTEVELAorI2RlZmluZSBTQ1RQX1NFTkRfRkFJTEVEIFNDVFBfU0VORF9G QUlMRUQKIAlTQ1RQX1JFTU9URV9FUlJPUiwKKyNkZWZpbmUgU0NUUF9SRU1PVEVfRVJST1IgU0NU UF9SRU1PVEVfRVJST1IKIAlTQ1RQX1NIVVRET1dOX0VWRU5ULAorI2RlZmluZSBTQ1RQX1NIVVRE T1dOX0VWRU5UIFNDVFBfU0hVVERPV05fRVZFTlQKIAlTQ1RQX1BBUlRJQUxfREVMSVZFUllfRVZF TlQsCi0JU0NUUF9BREFQVElPTl9JTkRJQ0FUSU9OLAorI2RlZmluZSBTQ1RQX1BBUlRJQUxfREVM SVZFUllfRVZFTlQgU0NUUF9QQVJUSUFMX0RFTElWRVJZX0VWRU5UCisJU0NUUF9BREFQVEFUSU9O X0lORElDQVRJT04sCisjZGVmaW5lIFNDVFBfQURBUFRBVElPTl9JTkRJQ0FUSU9OIFNDVFBfQURB UFRBVElPTl9JTkRJQ0FUSU9OCisJU0NUUF9BVVRIRU5USUNBVElPTl9JTkRJQ0FUSU9OLAorI2Rl ZmluZSBTQ1RQX0FVVEhFTlRJQ0FUSU9OX0lORElDQVRJT04gU0NUUF9BVVRIRU5USUNBVElPTl9J TkRJQ0FUSU9OCisJU0NUUF9TRU5ERVJfRFJZX0VWRU5ULAorI2RlZmluZSBTQ1RQX1NFTkRFUl9E UllfRVZFTlQgU0NUUF9TRU5ERVJfRFJZX0VWRU5UCiB9OwogCiAvKiBOb3RpZmljYXRpb24gZXJy b3IgY29kZXMgdXNlZCB0byBmaWxsIHVwIHRoZSBlcnJvciBmaWVsZHMgaW4gc29tZQogICogbm90 aWZpY2F0aW9ucy4KLSAqIFNDVFBfUEVFUl9BRERSRVNTX0NIQUdFIAk6IHNwY19lcnJvcgorICog U0NUUF9QRUVSX0FERFJFU1NfQ0hBR0UJOiBzcGNfZXJyb3IKICAqIFNDVFBfQVNTT0NfQ0hBTkdF CQk6IHNhY19lcnJvcgogICogVGhlc2UgbmFtZXMgc2hvdWxkIGJlIHBvdGVudGlhbGx5IGluY2x1 ZGVkIGluIHRoZSBkcmFmdCAwNCBvZiB0aGUgU0NUUAogICogc29ja2V0cyBBUEkgc3BlY2lmaWNh dGlvbi4KQEAgLTQzNywxMCArNDY3LDEwIEBAIHR5cGVkZWYgZW51bSBzY3RwX3NuX2Vycm9yIHsK ICAqICAgdGhlc2UgcGFyYW1ldGVycyBhcmUgdXNlZCBpbiBSVE8gY2FsY3VsYXRpb24uCiAgKi8K IHN0cnVjdCBzY3RwX3J0b2luZm8gewotCXNjdHBfYXNzb2NfdAlzcnRvX2Fzc29jX2lkOwotCV9f dTMyCQlzcnRvX2luaXRpYWw7Ci0JX191MzIJCXNydG9fbWF4OwotCV9fdTMyCQlzcnRvX21pbjsK KwlzY3RwX2Fzc29jX3Qgc3J0b19hc3NvY19pZDsKKwlfX3UzMiBzcnRvX2luaXRpYWw7CisJX191 MzIgc3J0b19tYXg7CisJX191MzIgc3J0b19taW47CiB9OwogCiAvKgpAQCAtNDUwLDEyICs0ODAs MTIgQEAgc3RydWN0IHNjdHBfcnRvaW5mbyB7CiAgKiAgIGVuZHBvaW50IHBhcmFtZXRlcnMuCiAg Ki8KIHN0cnVjdCBzY3RwX2Fzc29jcGFyYW1zIHsKLQlzY3RwX2Fzc29jX3QJc2Fzb2NfYXNzb2Nf aWQ7Ci0JX191MTYJCXNhc29jX2Fzb2NtYXhyeHQ7Ci0JX191MTYJCXNhc29jX251bWJlcl9wZWVy X2Rlc3RpbmF0aW9uczsKLQlfX3UzMgkJc2Fzb2NfcGVlcl9yd25kOwotCV9fdTMyCQlzYXNvY19s b2NhbF9yd25kOwotCV9fdTMyCQlzYXNvY19jb29raWVfbGlmZTsKKwlzY3RwX2Fzc29jX3Qgc2Fz b2NfYXNzb2NfaWQ7CisJX191MTYgc2Fzb2NfYXNvY21heHJ4dDsKKwlfX3UxNiBzYXNvY19udW1i ZXJfcGVlcl9kZXN0aW5hdGlvbnM7CisJX191MzIgc2Fzb2NfcGVlcl9yd25kOworCV9fdTMyIHNh c29jX2xvY2FsX3J3bmQ7CisJX191MzIgc2Fzb2NfY29va2llX2xpZmU7CiB9OwogCiAvKgpAQCAt NDY3LDkgKzQ5Nyw5IEBAIHN0cnVjdCBzY3RwX2Fzc29jcGFyYW1zIHsKICAqICAgc2V0IHByaW1h cnkgcmVxdWVzdDoKICAqLwogc3RydWN0IHNjdHBfc2V0cGVlcnByaW0gewotCXNjdHBfYXNzb2Nf dCAgICAgICAgICAgIHNzcHBfYXNzb2NfaWQ7CisJc2N0cF9hc3NvY190IHNzcHBfYXNzb2NfaWQ7 CiAJc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc3NwcF9hZGRyOwotfSBfX2F0dHJpYnV0ZV9fKChw YWNrZWQsIGFsaWduZWQoNCkpKTsKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCwgYWxpZ25lZCg0 KSkpOwogCiAvKgogICogNy4xLjEwIFNldCBQcmltYXJ5IEFkZHJlc3MgKFNDVFBfUFJJTUFSWV9B RERSKQpAQCAtNDc5LDE5ICs1MDksMjIgQEAgc3RydWN0IHNjdHBfc2V0cGVlcnByaW0gewogICog IGFzc29jaWF0aW9uIHBlZXIncyBhZGRyZXNzZXMuIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIGlz IHVzZWQgdG8KICAqICBtYWtlIGEgc2V0IHBlZXIgcHJpbWFyeSByZXF1ZXN0OgogICovCi1zdHJ1 Y3Qgc2N0cF9wcmltIHsKLQlzY3RwX2Fzc29jX3QgICAgICAgICAgICBzc3BfYXNzb2NfaWQ7Citz dHJ1Y3Qgc2N0cF9zZXRwcmltIHsKKwlzY3RwX2Fzc29jX3Qgc3NwX2Fzc29jX2lkOwogCXN0cnVj dCBzb2NrYWRkcl9zdG9yYWdlIHNzcF9hZGRyOwotfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQsIGFs aWduZWQoNCkpKTsKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCwgYWxpZ25lZCg0KSkpOworCisv KiBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB1c2UsIGRlZmluZSB0aGUgb2xkIG5hbWUgdG9v ICovCisjZGVmaW5lIHNjdHBfcHJpbSBzY3RwX3NldHByaW0KIAogLyoKLSAqIDcuMS4xMSBTZXQg QWRhcHRpb24gTGF5ZXIgSW5kaWNhdG9yIChTQ1RQX0FEQVBUSU9OX0xBWUVSKQorICogNy4xLjEx IFNldCBBZGFwdGF0aW9uIExheWVyIEluZGljYXRvciAoU0NUUF9BREFQVEFUSU9OX0xBWUVSKQog ICoKLSAqIFJlcXVlc3RzIHRoYXQgdGhlIGxvY2FsIGVuZHBvaW50IHNldCB0aGUgc3BlY2lmaWVk IEFkYXB0aW9uIExheWVyCisgKiBSZXF1ZXN0cyB0aGF0IHRoZSBsb2NhbCBlbmRwb2ludCBzZXQg dGhlIHNwZWNpZmllZCBBZGFwdGF0aW9uIExheWVyCiAgKiBJbmRpY2F0aW9uIHBhcmFtZXRlciBm b3IgYWxsIGZ1dHVyZSBJTklUIGFuZCBJTklULUFDSyBleGNoYW5nZXMuCiAgKi8KLXN0cnVjdCBz Y3RwX3NldGFkYXB0aW9uIHsKLQlfX3UzMglzc2JfYWRhcHRpb25faW5kOworc3RydWN0IHNjdHBf c2V0YWRhcHRhdGlvbiB7CisJX191MzIgc3NiX2FkYXB0YXRpb25faW5kOwogfTsKIAogLyoKQEAg LTUwNCwxMiArNTM3LDEwNyBAQCBzdHJ1Y3Qgc2N0cF9zZXRhZGFwdGlvbiB7CiAgKiAgIHVucmVh Y2hhYmxlLiBUaGUgZm9sbG93aW5nIHN0cnVjdHVyZSBpcyB1c2VkIHRvIGFjY2VzcyBhbmQgbW9k aWZ5IGFuCiAgKiAgIGFkZHJlc3MncyBwYXJhbWV0ZXJzOgogICovCitlbnVtIHNjdHBfc3BwX2Zs YWdzIHsKKwlTUFBfSEJfRU5BQkxFID0gMSA8PCAwLAkvKkVuYWJsZSBoZWFydGJlYXRzICovCisJ U1BQX0hCX0RJU0FCTEUgPSAxIDw8IDEsCS8qRGlzYWJsZSBoZWFydGJlYXRzICovCisJU1BQX0hC ID0gU1BQX0hCX0VOQUJMRSB8IFNQUF9IQl9ESVNBQkxFLAorCVNQUF9IQl9ERU1BTkQgPSAxIDw8 IDIsCS8qU2VuZCBoZWFydGJlYXQgaW1tZWRpYXRlbHkgKi8KKwlTUFBfUE1UVURfRU5BQkxFID0g MSA8PCAzLAkvKkVuYWJsZSBQTVRVIGRpc2NvdmVyeSAqLworCVNQUF9QTVRVRF9ESVNBQkxFID0g MSA8PCA0LAkvKkRpc2FibGUgUE1UVSBkaXNjb3ZlcnkgKi8KKwlTUFBfUE1UVUQgPSBTUFBfUE1U VURfRU5BQkxFIHwgU1BQX1BNVFVEX0RJU0FCTEUsCisJU1BQX1NBQ0tERUxBWV9FTkFCTEUgPSAx IDw8IDUsCS8qRW5hYmxlIFNBQ0sgKi8KKwlTUFBfU0FDS0RFTEFZX0RJU0FCTEUgPSAxIDw8IDYs CS8qRGlzYWJsZSBTQUNLICovCisJU1BQX1NBQ0tERUxBWSA9IFNQUF9TQUNLREVMQVlfRU5BQkxF IHwgU1BQX1NBQ0tERUxBWV9ESVNBQkxFLAorCVNQUF9IQl9USU1FX0lTX1pFUk8gPSAxIDw8IDcs CS8qIFNldCBIQiBkZWxheSB0byAwICovCit9OworCiBzdHJ1Y3Qgc2N0cF9wYWRkcnBhcmFtcyB7 Ci0Jc2N0cF9hc3NvY190CQlzcHBfYXNzb2NfaWQ7Ci0Jc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UJ c3BwX2FkZHJlc3M7Ci0JX191MzIJCQlzcHBfaGJpbnRlcnZhbDsKLQlfX3UxNgkJCXNwcF9wYXRo bWF4cnh0OwotfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQsIGFsaWduZWQoNCkpKTsKKwlzY3RwX2Fz c29jX3Qgc3BwX2Fzc29jX2lkOworCXN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIHNwcF9hZGRyZXNz OworCV9fdTMyIHNwcF9oYmludGVydmFsOworCV9fdTE2IHNwcF9wYXRobWF4cnh0OworCV9fdTMy IHNwcF9wYXRobXR1OworCV9fdTMyIHNwcF9zYWNrZGVsYXk7CisJX191MzIgc3BwX2ZsYWdzOwor fSBfX2F0dHJpYnV0ZV9fICgocGFja2VkLCBhbGlnbmVkKDQpKSk7CisKKy8qCisgKiA3LjEuMTgu ICBBZGQgYSBjaHVuayB0aGF0IG11c3QgYmUgYXV0aGVudGljYXRlZCAoU0NUUF9BVVRIX0NIVU5L KQorICoKKyAqIFRoaXMgc2V0IG9wdGlvbiBhZGRzIGEgY2h1bmsgdHlwZSB0aGF0IHRoZSB1c2Vy IGlzIHJlcXVlc3RpbmcgdG8gYmUKKyAqIHJlY2VpdmVkIG9ubHkgaW4gYW4gYXV0aGVudGljYXRl ZCB3YXkuICBDaGFuZ2VzIHRvIHRoZSBsaXN0IG9mIGNodW5rcworICogd2lsbCBvbmx5IGVmZmVj dCBmdXR1cmUgYXNzb2NpYXRpb25zIG9uIHRoZSBzb2NrZXQuCisgKi8KK3N0cnVjdCBzY3RwX2F1 dGhjaHVuayB7CisJX191OCBzYXV0aF9jaHVuazsKK307CisKKy8qCisgKiA3LjEuMTkuICBHZXQg b3Igc2V0IHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBITUFDIElkZW50aWZpZXJzIChTQ1RQX0hNQUNf SURFTlQpCisgKgorICogVGhpcyBvcHRpb24gZ2V0cyBvciBzZXRzIHRoZSBsaXN0IG9mIEhNQUMg YWxnb3JpdGhtcyB0aGF0IHRoZSBsb2NhbAorICogZW5kcG9pbnQgcmVxdWlyZXMgdGhlIHBlZXIg dG8gdXNlLgorKi8KKworZW51bSB7CisJU0NUUF9BVVRIX0hNQUNfSURfU0hBMSA9IDEsCisJU0NU UF9BVVRIX0hNQUNfSURfU0hBMjU2ID0gMywKK307CisKK3N0cnVjdCBzY3RwX2htYWNhbGdvIHsK KwlfX3UzMiBzaG1hY19udW1iZXJfb2ZfaWRlbnRzOworCV9fdTE2IHNobWFjX2lkZW50c1tdOwor fTsKKworLyoKKyAqIDcuMS4yMC4gIFNldCBhIHNoYXJlZCBrZXkgKFNDVFBfQVVUSF9LRVkpCisg KgorICogVGhpcyBvcHRpb24gd2lsbCBzZXQgYSBzaGFyZWQgc2VjcmV0IGtleSB3aGljaCBpcyB1 c2VkIHRvIGJ1aWxkIGFuCisgKiBhc3NvY2lhdGlvbiBzaGFyZWQga2V5LgorICovCitzdHJ1Y3Qg c2N0cF9hdXRoa2V5IHsKKwlzY3RwX2Fzc29jX3Qgc2NhX2Fzc29jX2lkOworCV9fdTE2IHNjYV9r ZXludW1iZXI7CisJX191MTYgc2NhX2tleWxlbmd0aDsKKwlfX3U4IHNjYV9rZXlbXTsKK307CisK Ky8qCisgKiA3LjEuMjEuICBHZXQgb3Igc2V0IHRoZSBhY3RpdmUgc2hhcmVkIGtleSAoU0NUUF9B VVRIX0FDVElWRV9LRVkpCisgKgorICogVGhpcyBvcHRpb24gd2lsbCBnZXQgb3Igc2V0IHRoZSBh Y3RpdmUgc2hhcmVkIGtleSB0byBiZSB1c2VkIHRvIGJ1aWxkCisgKiB0aGUgYXNzb2NpYXRpb24g c2hhcmVkIGtleS4KKyAqLworCitzdHJ1Y3Qgc2N0cF9hdXRoa2V5aWQgeworCXNjdHBfYXNzb2Nf dCBzY2FjdF9hc3NvY19pZDsKKwlfX3UxNiBzY2FjdF9rZXludW1iZXI7Cit9OworCisvKgorICog Ny4xLjIzLiAgR2V0IG9yIHNldCBkZWxheWVkIGFjayB0aW1lciAoU0NUUF9ERUxBWUVEX1NBQ0sp CisgKgorICogVGhpcyBvcHRpb24gd2lsbCBlZmZlY3QgdGhlIHdheSBkZWxheWVkIGFja3MgYXJl IHBlcmZvcm1lZC4gIFRoaXMKKyAqIG9wdGlvbiBhbGxvd3MgeW91IHRvIGdldCBvciBzZXQgdGhl IGRlbGF5ZWQgYWNrIHRpbWUsIGluCisgKiBtaWxsaXNlY29uZHMuICBJdCBhbHNvIGFsbG93cyBj aGFuZ2luZyB0aGUgZGVsYXllZCBhY2sgZnJlcXVlbmN5LgorICogQ2hhbmdpbmcgdGhlIGZyZXF1 ZW5jeSB0byAxIGRpc2FibGVzIHRoZSBkZWxheWVkIHNhY2sgYWxnb3JpdGhtLiAgSWYKKyAqIHRo ZSBhc3NvY19pZCBpcyAwLCB0aGVuIHRoaXMgc2V0cyBvciBnZXRzIHRoZSBlbmRwb2ludHMgZGVm YXVsdAorICogdmFsdWVzLiAgSWYgdGhlIGFzc29jX2lkIGZpZWxkIGlzIG5vbi16ZXJvLCB0aGVu IHRoZSBzZXQgb3IgZ2V0CisgKiBlZmZlY3RzIHRoZSBzcGVjaWZpZWQgYXNzb2NpYXRpb24gZm9y IHRoZSBvbmUgdG8gbWFueSBtb2RlbCAodGhlCisgKiBhc3NvY19pZCBmaWVsZCBpcyBpZ25vcmVk IGJ5IHRoZSBvbmUgdG8gb25lIG1vZGVsKS4gIE5vdGUgdGhhdCBpZgorICogc2Fja19kZWxheSBv ciBzYWNrX2ZyZXEgYXJlIDAgd2hlbiBzZXR0aW5nIHRoaXMgb3B0aW9uLCB0aGVuIHRoZQorICog Y3VycmVudCB2YWx1ZXMgd2lsbCByZW1haW4gdW5jaGFuZ2VkLgorICovCitzdHJ1Y3Qgc2N0cF9z YWNrX2luZm8geworCXNjdHBfYXNzb2NfdCBzYWNrX2Fzc29jX2lkOworCXVpbnQzMl90IHNhY2tf ZGVsYXk7CisJdWludDMyX3Qgc2Fja19mcmVxOworfTsKKworc3RydWN0IHNjdHBfYXNzb2NfdmFs dWUgeworCXNjdHBfYXNzb2NfdCBhc3NvY19pZDsKKwl1aW50MzJfdCBhc3NvY192YWx1ZTsKK307 CiAKIC8qCiAgKiA3LjIuMiBQZWVyIEFkZHJlc3MgSW5mb3JtYXRpb24KQEAgLTUyMSwxOSArNjQ5 LDMwIEBAIHN0cnVjdCBzY3RwX3BhZGRycGFyYW1zIHsKICAqICAgaW5mb3JtYXRpb246CiAgKi8K IHN0cnVjdCBzY3RwX3BhZGRyaW5mbyB7Ci0Jc2N0cF9hc3NvY190CQlzcGluZm9fYXNzb2NfaWQ7 Ci0Jc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UJc3BpbmZvX2FkZHJlc3M7Ci0JX19zMzIJCQlzcGlu Zm9fc3RhdGU7Ci0JX191MzIJCQlzcGluZm9fY3duZDsKLQlfX3UzMgkJCXNwaW5mb19zcnR0Owot CV9fdTMyCQkJc3BpbmZvX3J0bzsKLQlfX3UzMgkJCXNwaW5mb19tdHU7Ci19IF9fYXR0cmlidXRl X18oKHBhY2tlZCwgYWxpZ25lZCg0KSkpOworCXNjdHBfYXNzb2NfdCBzcGluZm9fYXNzb2NfaWQ7 CisJc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Ugc3BpbmZvX2FkZHJlc3M7CisJX19zMzIgc3BpbmZv X3N0YXRlOworCV9fdTMyIHNwaW5mb19jd25kOworCV9fdTMyIHNwaW5mb19zcnR0OworCV9fdTMy IHNwaW5mb19ydG87CisJX191MzIgc3BpbmZvX210dTsKK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tl ZCwgYWxpZ25lZCg0KSkpOwogCiAvKiBQZWVyIGFkZHJlc3NlcydzIHN0YXRlLiAqLworLyogVU5L Tk9XTjogUGVlciBhZGRyZXNzIHBhc3NlZCBieSB0aGUgdXBwZXIgbGF5ZXIgaW4gc2VuZG1zZyBv ciBjb25uZWN0W3hdCisgKiBjYWxscy4KKyAqIFVOQ09ORklSTUVEOiBQZWVyIGFkZHJlc3MgcmVj ZWl2ZWQgaW4gSU5JVC9JTklULUFDSyBhZGRyZXNzIHBhcmFtZXRlcnMuCisgKiAgICAgICAgICAg ICAgTm90IHlldCBjb25maXJtZWQgYnkgYSBoZWFydGJlYXQgYW5kIG5vdCBhdmFpbGFibGUgZm9y IGRhdGEKKyAqCQl0cmFuc2ZlcnMuCisgKiBBQ1RJVkUgOiBQZWVyIGFkZHJlc3MgY29uZmlybWVk LCBhY3RpdmUgYW5kIGF2YWlsYWJsZSBmb3IgZGF0YSB0cmFuc2ZlcnMuCisgKiBJTkFDVElWRTog UGVlciBhZGRyZXNzIGluYWN0aXZlIGFuZCBub3QgYXZhaWxhYmxlIGZvciBkYXRhIHRyYW5zZmVy cy4KKyAqLwogZW51bSBzY3RwX3NwaW5mb19zdGF0ZSB7CiAJU0NUUF9JTkFDVElWRSwKKwlTQ1RQ X1BGLAogCVNDVFBfQUNUSVZFLAorCVNDVFBfVU5DT05GSVJNRUQsCisJU0NUUF9VTktOT1dOID0g MHhmZmZmCiB9OwogCiAvKgpAQCAtNTQ2LDI4ICs2ODUsNDUgQEAgZW51bSBzY3RwX3NwaW5mb19z dGF0ZSB7CiAgKiAgIHVzZWQgdG8gYWNjZXNzIHRoaXMgaW5mb3JtYXRpb246CiAgKi8KIHN0cnVj dCBzY3RwX3N0YXR1cyB7Ci0Jc2N0cF9hc3NvY190CQlzc3RhdF9hc3NvY19pZDsKLQlfX3MzMgkJ CXNzdGF0X3N0YXRlOwotCV9fdTMyCQkJc3N0YXRfcnduZDsKLQlfX3UxNgkJCXNzdGF0X3VuYWNr ZGF0YTsKLQlfX3UxNgkJCXNzdGF0X3BlbmRkYXRhOwotCV9fdTE2CQkJc3N0YXRfaW5zdHJtczsK LQlfX3UxNgkJCXNzdGF0X291dHN0cm1zOwotCV9fdTMyCQkJc3N0YXRfZnJhZ21lbnRhdGlvbl9w b2ludDsKLQlzdHJ1Y3Qgc2N0cF9wYWRkcmluZm8Jc3N0YXRfcHJpbWFyeTsKKwlzY3RwX2Fzc29j X3Qgc3N0YXRfYXNzb2NfaWQ7CisJX19zMzIgc3N0YXRfc3RhdGU7CisJX191MzIgc3N0YXRfcndu ZDsKKwlfX3UxNiBzc3RhdF91bmFja2RhdGE7CisJX191MTYgc3N0YXRfcGVuZGRhdGE7CisJX191 MTYgc3N0YXRfaW5zdHJtczsKKwlfX3UxNiBzc3RhdF9vdXRzdHJtczsKKwlfX3UzMiBzc3RhdF9m cmFnbWVudGF0aW9uX3BvaW50OworCXN0cnVjdCBzY3RwX3BhZGRyaW5mbyBzc3RhdF9wcmltYXJ5 OwogfTsKIAorLyoKKyAqIDcuMi4zLiAgR2V0IHRoZSBsaXN0IG9mIGNodW5rcyB0aGUgcGVlciBy ZXF1aXJlcyB0byBiZSBhdXRoZW50aWNhdGVkCisgKiAgICAgICAgIChTQ1RQX1BFRVJfQVVUSF9D SFVOS1MpCisgKgorICogVGhpcyBvcHRpb24gZ2V0cyBhIGxpc3Qgb2YgY2h1bmtzIGZvciBhIHNw ZWNpZmllZCBhc3NvY2lhdGlvbiB0aGF0CisgKiB0aGUgcGVlciByZXF1aXJlcyB0byBiZSByZWNl aXZlZCBhdXRoZW50aWNhdGVkIG9ubHkuCisgKi8KK3N0cnVjdCBzY3RwX2F1dGhjaHVua3Mgewor CXNjdHBfYXNzb2NfdCBnYXV0aF9hc3NvY19pZDsKKwlfX3UzMiBnYXV0aF9udW1iZXJfb2ZfY2h1 bmtzOworCXVpbnQ4X3QgZ2F1dGhfY2h1bmtzW107Cit9OworLyogVGhlIGJyb2tlbiBzcGVsbGlu ZyBoYXMgYmVlbiByZWxlYXNlZCBhbHJlYWR5LAorICogc28gZG9uJ3QgYnJlYWsgYW55b25lLCBu b3cgdGhhdCBpdCdzIGZpeGVkLgorICovCisjZGVmaW5lIGd1dGhfbnVtYmVyX29mX2NodW5rcyBn YXV0aF9udW1iZXJfb2ZfY2h1bmtzCisKIC8qIEFzc29jaWF0aW9uIHN0YXRlcy4gICovCiBlbnVt IHNjdHBfc3N0YXRfc3RhdGUgewotCVNDVFBfRU1QVFkgICAgICAgICAgICAgICAgPSAwLAotCVND VFBfQ0xPU0VEICAgICAgICAgICAgICAgPSAxLAotCVNDVFBfQ09PS0lFX1dBSVQgICAgICAgICAg PSAyLAotCVNDVFBfQ09PS0lFX0VDSE9FRCAgICAgICAgPSAzLAotCVNDVFBfRVNUQUJMSVNIRUQg ICAgICAgICAgPSA0LAotCVNDVFBfU0hVVERPV05fUEVORElORyAgICAgPSA1LAotCVNDVFBfU0hV VERPV05fU0VOVCAgICAgICAgPSA2LAotCVNDVFBfU0hVVERPV05fUkVDRUlWRUQgICAgPSA3LAot CVNDVFBfU0hVVERPV05fQUNLX1NFTlQgICAgPSA4LAorCVNDVFBfRU1QVFkgPSAwLAorCVNDVFBf Q0xPU0VEID0gMSwKKwlTQ1RQX0NPT0tJRV9XQUlUID0gMiwKKwlTQ1RQX0NPT0tJRV9FQ0hPRUQg PSAzLAorCVNDVFBfRVNUQUJMSVNIRUQgPSA0LAorCVNDVFBfU0hVVERPV05fUEVORElORyA9IDUs CisJU0NUUF9TSFVURE9XTl9TRU5UID0gNiwKKwlTQ1RQX1NIVVRET1dOX1JFQ0VJVkVEID0gNywK KwlTQ1RQX1NIVVRET1dOX0FDS19TRU5UID0gOCwKIH07CiAKIC8qCkBAIC01NzcsMTQgKzczMyw0 MCBAQCBlbnVtIHNjdHBfc3N0YXRfc3RhdGUgewogICogc2N0cF9nZXRwYWRkcnMoKSBhbmQgc2N0 cF9nZXRsYWRkcnMoKSBBUEkuCiAgKi8KIHN0cnVjdCBzY3RwX2dldGFkZHJzX29sZCB7Ci0Jc2N0 cF9hc3NvY190ICAgICAgICAgICAgYXNzb2NfaWQ7Ci0JaW50CQkJYWRkcl9udW07Ci0Jc3RydWN0 IHNvY2thZGRyCQkqYWRkcnM7CisJc2N0cF9hc3NvY190IGFzc29jX2lkOworCWludCBhZGRyX251 bTsKKwlzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJzOwogfTsKIHN0cnVjdCBzY3RwX2dldGFkZHJzIHsK LQlzY3RwX2Fzc29jX3QgICAgICAgICAgICBhc3NvY19pZDsgLyppbnB1dCovCi0JX191MzIgICAg ICAgICAgICAgICAgICAgYWRkcl9udW07IC8qb3V0cHV0Ki8KLQlfX3U4ICAgICAgICAgICAgICAg ICAgICBhZGRyc1swXTsgLypvdXRwdXQsIHZhcmlhYmxlIHNpemUqLworCXNjdHBfYXNzb2NfdCBh c3NvY19pZDsJLyppbnB1dCAqLworCV9fdTMyIGFkZHJfbnVtOwkJLypvdXRwdXQgKi8KKwlfX3U4 IGFkZHJzWzBdOwkJLypvdXRwdXQsIHZhcmlhYmxlIHNpemUgKi8KK307CisKKy8qIEEgc29ja2V0 IHVzZXIgcmVxdWVzdCBvYnRhaW5lZCB2aWEgU0NUUF9HRVRfQVNTT0NfU1RBVFMgdGhhdCByZXRy aWV2ZXMKKyAqIGFzc29jaWF0aW9uIHN0YXRzLiBBbGwgc3RhdHMgYXJlIGNvdW50cyBleGNlcHQg c2FzX21heHJ0byBhbmQKKyAqIHNhc19vYnNfcnRvX2lwYWRkci4gbWF4cnRvIGlzIHRoZSBtYXgg b2JzZXJ2ZWQgcnRvICsgdHJhbnNwb3J0IHNpbmNlCisgKiB0aGUgbGFzdCBjYWxsLiBXaWxsIHJl dHVybiAwIHdoZW4gZGlkIG5vdCBjaGFuZ2Ugc2luY2UgbGFzdCBjYWxsCisgKi8KK3N0cnVjdCBz Y3RwX2Fzc29jX3N0YXRzIHsKKwlzY3RwX2Fzc29jX3Qgc2FzX2Fzc29jX2lkOwkvKiBJbnB1dCAq LworCS8qIFRyYW5zcG9ydCBvZiB0aGUgb2JzZXJ2ZWQgbWF4IFJUTyBzcGlrZSAqLworCXN0cnVj dCBzb2NrYWRkcl9zdG9yYWdlIHNhc19vYnNfcnRvX2lwYWRkcjsKKwlfX3U2NCBzYXNfbWF4cnRv OwkvKiBNYXhpbXVtIE9ic2VydmVkIFJUTyBmb3IgcGVyaW9kICovCisJX191NjQgc2FzX2lzYWNr czsJLyogU0FDS3MgcmVjZWl2ZWQgKi8KKwlfX3U2NCBzYXNfb3NhY2tzOwkvKiBTQUNLcyBzZW50 ICovCisJX191NjQgc2FzX29wYWNrZXRzOwkvKiBQYWNrZXRzIHNlbnQgKi8KKwlfX3U2NCBzYXNf aXBhY2tldHM7CS8qIFBhY2tldHMgcmVjZWl2ZWQgKi8KKwlfX3U2NCBzYXNfcnR4Y2h1bmtzOwkv KiBSZXRyYW5zbWl0dGVkIENodW5rcyAqLworCV9fdTY0IHNhc19vdXRvZnNlcXRzbnM7CS8qIFRT TiByZWNlaXZlZCA+IG5leHQgZXhwZWN0ZWQgKi8KKwlfX3U2NCBzYXNfaWR1cGNodW5rczsJLyog RHVwcyByZWNlaXZlZCAob3JkZXJlZCt1bm9yZGVyZWQpICovCisJX191NjQgc2FzX2dhcGNudDsJ LyogR2FwIEFja25vd2xlZGdlbWVudHMgUmVjZWl2ZWQgKi8KKwlfX3U2NCBzYXNfb3VvZGNodW5r czsJLyogVW5vcmRlcmVkIGRhdGEgY2h1bmtzIHNlbnQgKi8KKwlfX3U2NCBzYXNfaXVvZGNodW5r czsJLyogVW5vcmRlcmVkIGRhdGEgY2h1bmtzIHJlY2VpdmVkICovCisJX191NjQgc2FzX29vZGNo dW5rczsJLyogT3JkZXJlZCBkYXRhIGNodW5rcyBzZW50ICovCisJX191NjQgc2FzX2lvZGNodW5r czsJLyogT3JkZXJlZCBkYXRhIGNodW5rcyByZWNlaXZlZCAqLworCV9fdTY0IHNhc19vY3RybGNo dW5rczsJLyogQ29udHJvbCBjaHVua3Mgc2VudCAqLworCV9fdTY0IHNhc19pY3RybGNodW5rczsJ LyogQ29udHJvbCBjaHVua3MgcmVjZWl2ZWQgKi8KIH07CiAKIC8qIFRoZXNlIGFyZSBiaXQgZmll bGRzIGZvciBtc2doZHItPm1zZ19mbGFncy4gIFNlZSBzZWN0aW9uIDUuMS4gICovCkBAIC02MTEs MTcgKzc5MywxOCBAQCB0eXBlZGVmIHN0cnVjdCB7CiAJaW50IHNkOwogfSBzY3RwX3BlZWxvZmZf YXJnX3Q7CiAKLQogaW50IHNjdHBfYmluZHgoaW50IHNkLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJz LCBpbnQgYWRkcmNudCwgaW50IGZsYWdzKTsKIAotaW50IHNjdHBfY29ubmVjdHgoaW50IHNkLCBz dHJ1Y3Qgc29ja2FkZHIgKmFkZHJzLCBpbnQgYWRkcmNudCk7CitpbnQgc2N0cF9jb25uZWN0eChp bnQgc2QsIHN0cnVjdCBzb2NrYWRkciAqYWRkcnMsIGludCBhZGRyY250LAorCQkgIHNjdHBfYXNz b2NfdCAqIGlkKTsKIAogaW50IHNjdHBfcGVlbG9mZihpbnQgc2QsIHNjdHBfYXNzb2NfdCBhc3Nv Y19pZCk7CiAKIC8qIFByb3RvdHlwZSBmb3IgdGhlIGxpYnJhcnkgZnVuY3Rpb24gc2N0cF9vcHRf aW5mbyBkZWZpbmVkIGluCiAgKiBBUEkgNy4gU29ja2V0IE9wdGlvbnMuCiAgKi8KLWludCBzY3Rw X29wdF9pbmZvKGludCBzZCwgc2N0cF9hc3NvY190IGlkLCBpbnQgb3B0LCB2b2lkICphcmcsIHNv Y2tsZW5fdCAqc2l6ZSk7CitpbnQgc2N0cF9vcHRfaW5mbyhpbnQgc2QsIHNjdHBfYXNzb2NfdCBp ZCwgaW50IG9wdCwgdm9pZCAqYXJnLAorCQkgIHNvY2tsZW5fdCAqIHNpemUpOwogCiAvKiBHZXQg YWxsIHBlZXIgYWRkcmVzcyBvbiBhIHNvY2tldC4gIFRoaXMgaXMgYSBuZXcgU0NUUCBBUEkKICAq IGRlc2NyaWJlZCBpbiB0aGUgc2VjdGlvbiA4LjMgb2YgdGhlIFNvY2tldHMgQVBJIEV4dGVuc2lv bnMgZm9yIFNDVFAuCkBAIC02NTgsNyArODQxLDcgQEAgaW50IHNjdHBfc2VuZG1zZyhpbnQgcywg Y29uc3Qgdm9pZCAqbXNnLCBzaXplX3QgbGVuLCBzdHJ1Y3Qgc29ja2FkZHIgKnRvLAogICogZGVh bGluZyBkaXJlY3RseSB3aXRoIHRoZSBDTVNHIGhlYWRlci4KICAqLwogaW50IHNjdHBfc2VuZChp bnQgcywgY29uc3Qgdm9pZCAqbXNnLCBzaXplX3QgbGVuLAotICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvICpzaW5mbywgaW50IGZsYWdzKTsKKwkgICAgICBjb25zdCBz dHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvICpzaW5mbywgaW50IGZsYWdzKTsKIAogLyogVGhpcyBsaWJy YXJ5IGZ1bmN0aW9uIGFzc2lzdHMgdGhlIHVzZXIgd2l0aCB0aGUgYWR2YW5jZWQgZmVhdHVyZXMK ICAqIG9mIFNDVFAuICBUaGlzIGlzIGEgbmV3IFNDVFAgQVBJIGRlc2NyaWJlZCBpbiB0aGUgc2Vj dGlvbiA4Ljggb2YgdGhlCkBAIC02NjYsOSArODQ5LDExIEBAIGludCBzY3RwX3NlbmQoaW50IHMs IGNvbnN0IHZvaWQgKm1zZywgc2l6ZV90IGxlbiwKICAqIHJlY3Ztc2coKSBpbnRlcmZhY2UuCiAg Ki8KIGludCBzY3RwX3JlY3Ztc2coaW50IHMsIHZvaWQgKm1zZywgc2l6ZV90IGxlbiwgc3RydWN0 IHNvY2thZGRyICpmcm9tLAotCQkgc29ja2xlbl90ICpmcm9tbGVuLCBzdHJ1Y3Qgc2N0cF9zbmRy Y3ZpbmZvICpzaW5mbywKKwkJIHNvY2tsZW5fdCAqIGZyb21sZW4sIHN0cnVjdCBzY3RwX3NuZHJj dmluZm8gKnNpbmZvLAogCQkgaW50ICptc2dfZmxhZ3MpOwogCi1fX0VORF9ERUNMUworLyogUmV0 dXJuIHRoZSBhZGRyZXNzIGxlbmd0aCBmb3IgYW4gYWRkcmVzcyBmYW1pbHkuICovCitpbnQgc2N0 cF9nZXRhZGRybGVuKHNhX2ZhbWlseV90IGZhbWlseSk7CiAKK19fRU5EX0RFQ0xTCiAjZW5kaWYg LyogX19saW51eF9zY3RwX2hfXyAqLwpkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvc2N0 cC9saWIvYWRkcnMuYyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvbGliL2FkZHJzLmMKaW5kZXgg MTg0MzM1Yy4uMmNlMzY3NyAxMDA2NDQKLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9saWIv YWRkcnMuYworKysgYi90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2xpYi9hZGRycy5jCkBAIC0xLDQg KzEsNCBAQAotLyogU0NUUCBrZXJuZWwgcmVmZXJlbmNlIEltcGxlbWVudGF0aW9uOiBVc2VyIEFQ SSBleHRlbnNpb25zLgorLyogU0NUUCBrZXJuZWwgSW1wbGVtZW50YXRpb246IFVzZXIgQVBJIGV4 dGVuc2lvbnMuCiAgKgogICogYWRkcnMuYwogICoKQEAgLTYsNyArNiw3IEBACiAgKiAgICBodHRw Oi8vd3d3LmdudS5vcmcvY29weWxlZnQvbGVzc2VyLnR4dAogICoKICAqIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSB1c2VyIGxpYnJhcnkgdGhhdCBvZmZlcnMgc3VwcG9ydCBmb3IgdGhlCi0gKiBT Q1RQIGtlcm5lbCByZWZlcmVuY2UgSW1wbGVtZW50YXRpb24uIFRoZSBtYWluIHB1cnBvc2Ugb2Yg dGhpcworICogU0NUUCBrZXJuZWwgSW1wbGVtZW50YXRpb24uIFRoZSBtYWluIHB1cnBvc2Ugb2Yg dGhpcwogICogY29kZSBpcyB0byBwcm92aWRlIHRoZSBTQ1RQIFNvY2tldCBBUEkgbWFwcGluZ3Mg Zm9yIHVzZXIKICAqIGFwcGxpY2F0aW9uIHRvIGludGVyZmFjZSB3aXRoIHRoZSBTQ1RQIGluIGtl cm5lbC4KICAqCkBAIC0xOSw2NiArMTksMjIgQEAKICAqIFdyaXR0ZW4gb3IgbW9kaWZpZWQgYnk6 CiAgKiAgQXJkZWxsZSBGYW4gICAgIDxhcmRlbGxlLmZhbkBpbnRlbC5jb20+CiAgKiAgU3JpZGhh ciBTYW11ZHJhbGEgPHNyaUB1cy5pYm0uY29tPgorICogIEl2YW4gU2t5dHRlIErDuHJnZW5zZW4g PGlzai1zY3RwQGkxLmRrPgogICovCiAKLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxz dGRsaWIuaD4KKyNpbmNsdWRlIDxtYWxsb2MuaD4KICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAj aW5jbHVkZSA8bmV0aW5ldC9zY3RwLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8 ZXJybm8uaD4KIAogLyoKLSAqIEdldCBsb2NhbC9wZWVyIGFkZHJlc3NlcyB1c2luZyB0aGUgb2xk IEFQSQotICogT2xkIGtlcm5lbHMgKDIuNi4xMyBhbmQgZWFybGllcikgb25seSBzdXBwb3J0IHRo aXMgQVBJIGJ1dCBpdCBicmVha3MgMzItYml0Ci0gKiBwcm9ncmFtcyBvbiA2NC1iaXQga2VybmVs cy4KLSAqLwotc3RhdGljIGludAotc2N0cF9nZXRhZGRyc19vbGQoaW50IHNkLCBzY3RwX2Fzc29j X3QgaWQsIGludCBvcHRuYW1lX251bSwgaW50IG9wdG5hbWVfb2xkLAotCQkgIHN0cnVjdCBzb2Nr YWRkciAqKmFkZHJzKQotewotCXNvY2tsZW5fdCBsZW4gPSBzaXplb2Yoc2N0cF9hc3NvY190KTsK LQlpbnQgY250LCBlcnI7Ci0Jc3RydWN0IHNjdHBfZ2V0YWRkcnNfb2xkIGdldGFkZHJzOwotCi0J Y250ID0gZ2V0c29ja29wdChzZCwgU09MX1NDVFAsIG9wdG5hbWVfbnVtLCAmaWQsICZsZW4pOwot CWlmIChjbnQgPCAwKQotCQlyZXR1cm4gLTE7Ci0KLQlpZiAoMCA9PSBjbnQpIHsKLQkJKmFkZHJz ID0gTlVMTDsKLQkJcmV0dXJuIDA7Ci0JfQotCi0JbGVuID0gY250ICogc2l6ZW9mKHN0cnVjdCBz b2NrYWRkcl9pbjYpOwotCi0JZ2V0YWRkcnMuYXNzb2NfaWQgPSBpZDsKLQlnZXRhZGRycy5hZGRy X251bSA9IGNudDsKLQlnZXRhZGRycy5hZGRycyA9IChzdHJ1Y3Qgc29ja2FkZHIgKiltYWxsb2Mo bGVuKTsKLQlpZiAoTlVMTCA9PSBnZXRhZGRycy5hZGRycykKLQkJcmV0dXJuIC0xOwotCi0JbGVu ID0gc2l6ZW9mKGdldGFkZHJzKTsKLQllcnIgPSBnZXRzb2Nrb3B0KHNkLCBTT0xfU0NUUCwgb3B0 bmFtZV9vbGQsICZnZXRhZGRycywgJmxlbik7Ci0JaWYgKGVyciA8IDApIHsKLQkJZnJlZShnZXRh ZGRycy5hZGRycyk7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQkqYWRkcnMgPSBnZXRhZGRycy5hZGRy czsKLQotCXJldHVybiBnZXRhZGRycy5hZGRyX251bTsKLQotfQkJCQkvKiBzY3RwX2dldGFkZHJz X29sZCgpICovCi0KLS8qCiAgKiBDb21tb24gZ2V0c29ja29wdCgpIGxheWVyCiAgKiBJZiB0aGUg TkVXIGdldHNvY2tvcHQoKSBBUEkgZmFpbHMgdGhpcyBmdW5jdGlvbiB3aWxsIGZhbGwgYmFjayB0 byB1c2luZwogICogdGhlIG9sZCBBUEkKICAqLwogc3RhdGljIGludAotc2N0cF9nZXRhZGRycyhp bnQgc2QsIHNjdHBfYXNzb2NfdCBpZCwKLQkgICAgICBpbnQgb3B0bmFtZV9uZXcsIGludCBvcHRu YW1lX251bV9vbGQsIGludCBvcHRuYW1lX29sZCwKLQkgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKiph ZGRycykKK3NjdHBfZ2V0YWRkcnMoaW50IHNkLCBzY3RwX2Fzc29jX3QgaWQsIGludCBvcHRuYW1l X25ldywgc3RydWN0IHNvY2thZGRyICoqYWRkcnMpCiB7CiAJaW50IGNudCwgZXJyOwogCXNvY2ts ZW5fdCBsZW47CkBAIC05OSwxNSArNTUsOSBAQCBzY3RwX2dldGFkZHJzKGludCBzZCwgc2N0cF9h c3NvY190IGlkLAogCQkJLypnb3QgaXQgKi8KIAkJCWJyZWFrOwogCQl9Ci0JCWlmIChlcnJubyA9 PSBFTk9QUk9UT09QVCkgewotCQkJLypLZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBuZXcgQVBJICov Ci0JCQlmcmVlKGdldGFkZHJzKTsKLQkJCXJldHVybiBzY3RwX2dldGFkZHJzX29sZChzZCwgaWQs Ci0JCQkJCQkgb3B0bmFtZV9udW1fb2xkLCBvcHRuYW1lX29sZCwKLQkJCQkJCSBhZGRycyk7Ci0J CX0KIAkJaWYgKGVycm5vICE9IEVOT01FTSkgewogCQkJLyp1bmtub3duIGVycm9yICovCisJCQlm cmVlKGdldGFkZHJzKTsKIAkJCXJldHVybiAtMTsKIAkJfQogCQkvKmV4cGFuZCBidWZmZXIgKi8K QEAgLTEyOSw3ICs3OSw3IEBAIHNjdHBfZ2V0YWRkcnMoaW50IHNkLCBzY3RwX2Fzc29jX3QgaWQs CiAJLyogd2Ugc2tpcCB0cmF2ZXJzaW5nIHRoZSBsaXN0LCBhbGxvY2F0aW5nIGEgbmV3IGJ1ZmZl ciBldGMuIGFuZCBlbmpveQogCSAqIGEgc2ltcGxlIGhhY2sqLwogCWNudCA9IGdldGFkZHJzLT5h ZGRyX251bTsKLQltZW1tb3ZlKGdldGFkZHJzLCBnZXRhZGRycyArIDEsIGxlbiAtIHNpemVvZihz dHJ1Y3Qgc2N0cF9nZXRhZGRycykpOworCW1lbW1vdmUoZ2V0YWRkcnMsIGdldGFkZHJzICsgMSwg bGVuKTsKIAkqYWRkcnMgPSAoc3RydWN0IHNvY2thZGRyICopZ2V0YWRkcnM7CiAKIAlyZXR1cm4g Y250OwpAQCAtMTQxLDEwICs5MSw3IEBAIHNjdHBfZ2V0YWRkcnMoaW50IHNkLCBzY3RwX2Fzc29j X3QgaWQsCiAgKi8KIGludCBzY3RwX2dldHBhZGRycyhpbnQgc2QsIHNjdHBfYXNzb2NfdCBpZCwg c3RydWN0IHNvY2thZGRyICoqYWRkcnMpCiB7Ci0JcmV0dXJuIHNjdHBfZ2V0YWRkcnMoc2QsIGlk LAotCQkJICAgICBTQ1RQX0dFVF9QRUVSX0FERFJTLAotCQkJICAgICBTQ1RQX0dFVF9QRUVSX0FE RFJTX05VTV9PTEQsCi0JCQkgICAgIFNDVFBfR0VUX1BFRVJfQUREUlNfT0xELCBhZGRycyk7CisJ cmV0dXJuIHNjdHBfZ2V0YWRkcnMoc2QsIGlkLCBTQ1RQX0dFVF9QRUVSX0FERFJTLCBhZGRycyk7 CiB9CQkJCS8qIHNjdHBfZ2V0cGFkZHJzKCkgKi8KIAogLyogRnJlZXMgYWxsIHJlc291cmNlcyBh bGxvY2F0ZWQgYnkgc2N0cF9nZXRwYWRkcnMoKS4gIFRoaXMgaXMgYSBuZXcgU0NUUCBBUEkKQEAg LTE2MywxMCArMTEwLDcgQEAgaW50IHNjdHBfZnJlZXBhZGRycyhzdHJ1Y3Qgc29ja2FkZHIgKmFk ZHJzKQogICovCiBpbnQgc2N0cF9nZXRsYWRkcnMoaW50IHNkLCBzY3RwX2Fzc29jX3QgaWQsIHN0 cnVjdCBzb2NrYWRkciAqKmFkZHJzKQogewotCXJldHVybiBzY3RwX2dldGFkZHJzKHNkLCBpZCwK LQkJCSAgICAgU0NUUF9HRVRfTE9DQUxfQUREUlMsCi0JCQkgICAgIFNDVFBfR0VUX0xPQ0FMX0FE RFJTX05VTV9PTEQsCi0JCQkgICAgIFNDVFBfR0VUX0xPQ0FMX0FERFJTX09MRCwgYWRkcnMpOwor CXJldHVybiBzY3RwX2dldGFkZHJzKHNkLCBpZCwgU0NUUF9HRVRfTE9DQUxfQUREUlMsIGFkZHJz KTsKIH0JCQkJLyogc2N0cF9nZXRsYWRkcnMoKSAqLwogCiAvKiBGcmVlcyBhbGwgcmVzb3VyY2Vz IGFsbG9jYXRlZCBieSBzY3RwX2dldGxhZGRycygpLiAgVGhpcyBpcyBhIG5ldyBTQ1RQIEFQSQpA QCAtMTc4LDMgKzEyMiwyNSBAQCBpbnQgc2N0cF9mcmVlbGFkZHJzKHN0cnVjdCBzb2NrYWRkciAq YWRkcnMpCiAJcmV0dXJuIDA7CiAKIH0JCQkJLyogc2N0cF9mcmVlbGFkZHJzKCkgKi8KKworaW50 IHNjdHBfZ2V0YWRkcmxlbihzYV9mYW1pbHlfdCBmYW1pbHkpCit7CisJLyogV2UgY291bGQgY2Fs bCBpbnRvIHRoZSBrZXJuZWwgdG8gc2VlIHdoYXQgaXQgdGhpbmtzIHRoZSBzaXplIHNob3VsZAor CSAqIGJlLCBidXQgaGFyZGNvZGluZyB0aGUgYWRkcmVzcyBmYW1pbGllcyBoZXJlIGlzOiAoYSkg ZmFzdGVyLAorCSAqIChiKSBlYXNpZXIsIGFuZCAoYykgcHJvYmFibHkgZ29vZCBlbm91Z2ggZm9y IGZvcnNlZWFibGUgZnV0dXJlLgorCSAqLworCXN3aXRjaCAoZmFtaWx5KSB7CisJY2FzZSBBRl9J TkVUOgorCQlyZXR1cm4gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CisJY2FzZSBBRl9JTkVU NjoKKwkJcmV0dXJuIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKwlkZWZhdWx0OgorCQkv KiBDdXJyZW50bHkgdGhlcmUgaXMgbm8gZGVmaW5lZCBlcnJvciBoYW5kbGluZyBpbgorCQkgKiBk cmFmdC1pZXRmLXRzdndnLXNjdHBzb2NrZXQtMTMudHh0LgorCQkgKiAtMSBtaWdodCBjYXVzZSB0 aGUgYXBwbGljYXRpb24gdG8gb3ZlcndyaXRlIGJ1ZmZlcgorCQkgKiBvciBtaXNpbnRlcnByZXQg ZGF0YS4gMCBpcyBtb3JlIGxpa2VseSB0byBjYXVzZQorCQkgKiBhbiBlbmRsZXNzIGxvb3AuCisJ CSAqLworCQlyZXR1cm4gMDsKKwl9Cit9CmRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9z Y3RwL2xpYi9iaW5keC5jIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9saWIvYmluZHguYwppbmRl eCBiODliMzFlLi5hZjNhNjhjIDEwMDY0NAotLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2xp Yi9iaW5keC5jCisrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvbGliL2JpbmR4LmMKQEAgLTEs NCArMSw0IEBACi0vKiBTQ1RQIGtlcm5lbCByZWZlcmVuY2UgSW1wbGVtZW50YXRpb246IFVzZXIg QVBJIGV4dGVuc2lvbnMuCisvKiBTQ1RQIGtlcm5lbCBJbXBsZW1lbnRhdGlvbjogVXNlciBBUEkg ZXh0ZW5zaW9ucy4KICAqCiAgKiBiaW5keC5jCiAgKgpAQCAtNiw3ICs2LDcgQEAKICAqICAgIGh0 dHA6Ly93d3cuZ251Lm9yZy9jb3B5bGVmdC9sZXNzZXIudHh0CiAgKgogICogVGhpcyBmaWxlIGlz IHBhcnQgb2YgdGhlIHVzZXIgbGlicmFyeSB0aGF0IG9mZmVycyBzdXBwb3J0IGZvciB0aGUKLSAq IFNDVFAga2VybmVsIHJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvbi4gVGhlIG1haW4gcHVycG9zZSBv ZiB0aGlzCisgKiBTQ1RQIGtlcm5lbCBJbXBsZW1lbnRhdGlvbi4gVGhlIG1haW4gcHVycG9zZSBv ZiB0aGlzCiAgKiBjb2RlIGlzIHRvIHByb3ZpZGUgdGhlIFNDVFAgU29ja2V0IEFQSSBtYXBwaW5n cyBmb3IgdXNlcgogICogYXBwbGljYXRpb24gdG8gaW50ZXJmYWNlIHdpdGggdGhlIFNDVFAgaW4g a2VybmVsLgogICoKZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvbGliL2Nvbm5l Y3R4LmMgYi90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2xpYi9jb25uZWN0eC5jCmluZGV4IDVhNTY2 MjMuLjdmNzlmMGEgMTAwNjQ0Ci0tLSBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvbGliL2Nvbm5l Y3R4LmMKKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC9saWIvY29ubmVjdHguYwpAQCAtMSw0 ICsxLDQgQEAKLS8qIFNDVFAga2VybmVsIHJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvbjogVXNlciBB UEkgZXh0ZW5zaW9ucy4KKy8qIFNDVFAga2VybmVsIEltcGxlbWVudGF0aW9uOiBVc2VyIEFQSSBl eHRlbnNpb25zLgogICoKICAqIGNvbm5lY3R4LmMKICAqCkBAIC02LDcgKzYsNyBAQAogICogaHR0 cDovL3d3dy5nbnUub3JnL2NvcHlsZWZ0L2xlc3Nlci50eHQuCiAgKgogICogVGhpcyBmaWxlIGlz IHBhcnQgb2YgdGhlIHVzZXIgbGlicmFyeSB0aGF0IG9mZmVycyBzdXBwb3J0IGZvciB0aGUKLSAq IFNDVFAga2VybmVsIHJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvbi4gVGhlIG1haW4gcHVycG9zZSBv ZiB0aGlzCisgKiBTQ1RQIGtlcm5lbCBJbXBsZW1lbnRhdGlvbi4gVGhlIG1haW4gcHVycG9zZSBv ZiB0aGlzCiAgKiBjb2RlIGlzIHRvIHByb3ZpZGUgdGhlIFNDVFAgU29ja2V0IEFQSSBtYXBwaW5n cyBmb3IgdXNlcgogICogYXBwbGljYXRpb24gdG8gaW50ZXJmYWNlIHdpdGggdGhlIFNDVFAgaW4g a2VybmVsLgogICoKQEAgLTIzLDYgKzIzLDkgQEAKICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAj aW5jbHVkZSA8bmV0aW5ldC9zY3RwLmg+CS8qIFNDVFBfU09DS09QVF9DT05ORUNUWF8qICovCiAj aW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcu aD4KKyNpbmNsdWRlIDxmY250bC5oPgogCiAvKiBTdXBwb3J0IHRoZSBzY3RwX2Nvbm5lY3R4KCkg aW50ZXJmYWNlLgogICoKQEAgLTMxLDE2ICszNCwxNiBAQAogICogSW5zdGVhZCBvZiBpbXBsZW1l bnRpbmcgdGhyb3VnaCBhIHNvY2tldCBjYWxsIGluIHN5c19zb2NrZXRjYWxsKCksCiAgKiB0dW5u ZWwgdGhlIHJlcXVlc3QgdGhyb3VnaCBzZXRzb2Nrb3B0KCkuCiAgKi8KLWludCBzY3RwX2Nvbm5l Y3R4KGludCBmZCwgc3RydWN0IHNvY2thZGRyICphZGRycywgaW50IGFkZHJjbnQpCitzdGF0aWMg aW50IF9fY29ubmVjdHhfYWRkcnNpemUoY29uc3Qgc3RydWN0IHNvY2thZGRyICphZGRycywgY29u c3QgaW50IGFkZHJjbnQpCiB7Ci0Jdm9pZCAqYWRkcmJ1ZjsKLQlzdHJ1Y3Qgc29ja2FkZHIgKnNh X2FkZHI7Ci0Jc29ja2xlbl90IGFkZHJzX3NpemUgPSAwOworCWNvbnN0IHZvaWQgKmFkZHJidWY7 CisJY29uc3Qgc3RydWN0IHNvY2thZGRyICpzYV9hZGRyOworCWludCBhZGRyc19zaXplID0gMDsK IAlpbnQgaTsKIAogCWFkZHJidWYgPSBhZGRyczsKIAlmb3IgKGkgPSAwOyBpIDwgYWRkcmNudDsg aSsrKSB7Ci0JCXNhX2FkZHIgPSAoc3RydWN0IHNvY2thZGRyICopYWRkcmJ1ZjsKKwkJc2FfYWRk ciA9IChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyYnVmOwogCQlzd2l0Y2ggKHNhX2FkZHIt PnNhX2ZhbWlseSkgewogCQljYXNlIEFGX0lORVQ6CiAJCQlhZGRyc19zaXplICs9IHNpemVvZihz dHJ1Y3Qgc29ja2FkZHJfaW4pOwpAQCAtNTYsNiArNTksMTIzIEBAIGludCBzY3RwX2Nvbm5lY3R4 KGludCBmZCwgc3RydWN0IHNvY2thZGRyICphZGRycywgaW50IGFkZHJjbnQpCiAJCX0KIAl9CiAK LQlyZXR1cm4gc2V0c29ja29wdChmZCwgU09MX1NDVFAsIFNDVFBfU09DS09QVF9DT05ORUNUWCwg YWRkcnMsCisJcmV0dXJuIGFkZHJzX3NpemU7Cit9CisKK2ludCBfX3NjdHBfY29ubmVjdHgoaW50 IGZkLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJzLCBpbnQgYWRkcmNudCkKK3sKKwlzb2NrbGVuX3Qg YWRkcnNfc2l6ZSA9IF9fY29ubmVjdHhfYWRkcnNpemUoYWRkcnMsIGFkZHJjbnQpOworCisJaWYg KGFkZHJzX3NpemUgPCAwKQorCQlyZXR1cm4gYWRkcnNfc2l6ZTsKKworCXJldHVybiBzZXRzb2Nr b3B0KGZkLCBTT0xfU0NUUCwgU0NUUF9TT0NLT1BUX0NPTk5FQ1RYX09MRCwgYWRkcnMsCiAJCQkg IGFkZHJzX3NpemUpOwogfQorCitleHRlcm4gaW50IHNjdHBfY29ubmVjdHhfb3JpZyhpbnQpIF9f YXR0cmlidXRlKChhbGlhcygiX19zY3RwX2Nvbm5lY3R4IikpKTsKKworc3RhdGljIGludCBfX2Nv bm5lY3R4KGludCBmZCwgc3RydWN0IHNvY2thZGRyICphZGRycywgc29ja2xlbl90IGFkZHJzX3Np emUsCisJCSAgICAgIHNjdHBfYXNzb2NfdCAqIGlkKQoreworCWludCBzdGF0dXM7CisKKwlpZiAo aWQpCisJCSppZCA9IDA7CisKKwlzdGF0dXMgPSBzZXRzb2Nrb3B0KGZkLCBTT0xfU0NUUCwgU0NU UF9TT0NLT1BUX0NPTk5FQ1RYLCBhZGRycywKKwkJCSAgICBhZGRyc19zaXplKTsKKworCS8qIE5v cm1hbGl6ZSBzdGF0dXMgYW5kIHNldCBhc3NvY2lhdGlvbiBpZCAqLworCWlmIChzdGF0dXMgPiAw KSB7CisJCWlmIChpZCkKKwkJCSppZCA9IHN0YXR1czsKKwkJcmV0dXJuIDA7CisJfQorCisJLyog VGhlIGVycm9yIGlzIHNvbWV0aGluZyBvdGhlciB0aGVuICJPcHRpb24gbm90IHN1cHBvcnRlZCIg Ki8KKwlpZiAoc3RhdHVzIDwgMCAmJiBlcnJubyAhPSBFTk9QUk9UT09QVCkKKwkJcmV0dXJuIHN0 YXR1czsKKworCS8qIEF0IHRoaXMgcG9pbnQsIGlmIHRoZSBhcHBsaWNhdGlvbiB3YW50ZWQgdGhl IGlkLCB3ZSBjYW4ndAorCSAqIHJlYWxseSBwcm92aWRlIGl0LCBzbyB3ZSBjYW4gcmV0dXJuIEVO T1BST1RPT1BULgorCSAqLworCWlmIChpZCkgeworCQllcnJubyA9IEVOT1BST1RPT1BUOworCQly ZXR1cm4gLTE7CisJfQorCisJLyogRmluYWxseSwgdHJ5IHRoZSBvbGQgQVBJICovCisJcmV0dXJu IHNldHNvY2tvcHQoZmQsIFNPTF9TQ1RQLCBTQ1RQX1NPQ0tPUFRfQ09OTkVDVFhfT0xELAorCQkJ ICBhZGRycywgYWRkcnNfc2l6ZSk7Cit9CisKK2ludCBzY3RwX2Nvbm5lY3R4MihpbnQgZmQsIHN0 cnVjdCBzb2NrYWRkciAqYWRkcnMsIGludCBhZGRyY250LAorCQkgICBzY3RwX2Fzc29jX3QgKiBp ZCkKK3sKKwlzb2NrbGVuX3QgYWRkcnNfc2l6ZSA9IF9fY29ubmVjdHhfYWRkcnNpemUoYWRkcnMs IGFkZHJjbnQpOworCisJaWYgKGFkZHJzX3NpemUgPCAwKQorCQlyZXR1cm4gYWRkcnNfc2l6ZTsK KworCXJldHVybiBfX2Nvbm5lY3R4KGZkLCBhZGRycywgYWRkcnNfc2l6ZSwgaWQpOworfQorCitp bnQgc2N0cF9jb25uZWN0eDMoaW50IGZkLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJzLCBpbnQgYWRk cmNudCwKKwkJICAgc2N0cF9hc3NvY190ICogaWQpCit7CisJc29ja2xlbl90IGFkZHJzX3NpemUg PSBfX2Nvbm5lY3R4X2FkZHJzaXplKGFkZHJzLCBhZGRyY250KTsKKwlpbnQgc3RhdHVzOworCXN0 cnVjdCBzY3RwX2dldGFkZHJzX29sZCBwYXJhbTsKKwlzb2NrbGVuX3Qgb3B0X2xlbiA9IHNpemVv ZihwYXJhbSk7CisKKwlpZiAoYWRkcnNfc2l6ZSA8IDApCisJCXJldHVybiBhZGRyc19zaXplOwor CisJLyogRmlyc3QgdHJ5IHRoZSBuZXcgc29ja2V0IGFwaQorCSAqIEJlY2F1c2UgdGhlIGlkIGlz IHJldHVybmVkIGluIHRoZSBvcHRpb24gYnVmZmVyIHdlIGhhdmUgcHJlcGVuZAorCSAqIDMyYml0 IHRvIGl0IGZvciB0aGUgcmV0dXJuZWQgYXNzb2NpYXRpb24gaWQKKwkgKi8KKwlwYXJhbS5hc3Nv Y19pZCA9IDA7CisJcGFyYW0uYWRkcl9udW0gPSBhZGRyc19zaXplOworCXBhcmFtLmFkZHJzID0g YWRkcnM7CisJc3RhdHVzID0gZ2V0c29ja29wdChmZCwgU09MX1NDVFAsIFNDVFBfU09DS09QVF9D T05ORUNUWDMsCisJCQkgICAgJnBhcmFtLCAmb3B0X2xlbik7CisJaWYgKHN0YXR1cyA9PSAwIHx8 IGVycm5vID09IEVJTlBST0dSRVNTKSB7CisJCS8qIFN1Y2NlZWRlZCBpbW1lZGlhdGVseSwgb3Ig aW5pdGlhdGVkIG9uIG5vbi1ibG9ja2luZworCQkgKiBzb2NrZXQuCisJCSAqLworCQlpZiAoaWQp CisJCQkqaWQgPSBwYXJhbS5hc3NvY19pZDsKKwl9CisKKwlpZiAoZXJybm8gIT0gRU5PUFJPVE9P UFQpIHsKKwkJLyogTm8gcG9pbnQgaW4gdHJ5aW5nIHRoZSBmYWxsYmFja3MgKi8KKwkJcmV0dXJu IHN0YXR1czsKKwl9CisKKwkvKiBUaGUgZmlyc3QgaW5jYXJuYXRpb24gb2YgdXBkYXRlZCBjb25u ZWN0eCBhcGkgZGlkbid0IHdvcmsgZm9yCisJICogbm9uLWJsb2NraW5nIHNvY2tldHMuICBTbyBp ZiB0aGUgYXBwbGljYXRpb24gd2FudHMgdGhlIGFzc29jaWF0aW9uCisJICogaWQgYW5kIHRoZSBz b2NrZXQgaXMgbm9uLWJsb2NraW5nLCB3ZSBjYW4ndCByZWFsbHkgZG8gYW55dGhpbmcuCisJICov CisJaWYgKGlkKSB7CisJCS8qIFByb2dyYW0gd2FudHMgdGhlIGFzc29jaWF0aW9uLWlkIHJldHVy bmVkLiBXZSBjYW4gb25seSBkbworCQkgKiB0aGF0IGlmIHRoZSBzb2NrZXQgaXMgYmxvY2tpbmcg Ki8KKwkJc3RhdHVzID0gZmNudGwoZmQsIEZfR0VURkwpOworCQlpZiAoc3RhdHVzIDwgMCkKKwkJ CXJldHVybiBzdGF0dXM7CisKKwkJaWYgKHN0YXR1cyAmIE9fTk9OQkxPQ0spIHsKKwkJCS8qIFNv Y2tldCBpcyBub24tYmxvY2tpbmcuIEZhaWwgKi8KKwkJCWVycm5vID0gRU5PUFJPVE9PUFQ7CisJ CQlyZXR1cm4gLTE7CisJCX0KKwl9CisKKwlyZXR1cm4gX19jb25uZWN0eChmZCwgYWRkcnMsIGFk ZHJzX3NpemUsIGlkKTsKK30KKworX19hc21fXygiLnN5bXZlciBfX3NjdHBfY29ubmVjdHgsIHNj dHBfY29ubmVjdHhAIik7CitfX2FzbV9fKCIuc3ltdmVyIHNjdHBfY29ubmVjdHhfb3JpZywgc2N0 cF9jb25uZWN0eEBWRVJTXzEiKTsKK19fYXNtX18oIi5zeW12ZXIgc2N0cF9jb25uZWN0eDIsIHNj dHBfY29ubmVjdHhAVkVSU18yIik7CitfX2FzbV9fKCIuc3ltdmVyIHNjdHBfY29ubmVjdHgzLCBz Y3RwX2Nvbm5lY3R4QEBWRVJTXzMiKTsKZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL3Nj dHAvbGliL29wdF9pbmZvLmMgYi90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2xpYi9vcHRfaW5mby5j CmluZGV4IGJhNzY1Y2UuLmMwNDhhYjBmIDEwMDY0NAotLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9z Y3RwL2xpYi9vcHRfaW5mby5jCisrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvbGliL29wdF9p bmZvLmMKQEAgLTEsNCArMSw0IEBACi0vKiBTQ1RQIGtlcm5lbCByZWZlcmVuY2UgSW1wbGVtZW50 YXRpb246IFVzZXIgQVBJIGV4dGVuc2lvbnMuCisvKiBTQ1RQIGtlcm5lbCBJbXBsZW1lbnRhdGlv bjogVXNlciBBUEkgZXh0ZW5zaW9ucy4KICAqCiAgKiBvcHRfaW5mby5jCiAgKgpAQCAtNiw3ICs2 LDcgQEAKICAqICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9jb3B5bGVmdC9sZXNzZXIudHh0CiAgKgog ICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzZXIgbGlicmFyeSB0aGF0IG9mZmVycyBzdXBw b3J0IGZvciB0aGUKLSAqIFNDVFAga2VybmVsIHJlZmVyZW5jZSBJbXBsZW1lbnRhdGlvbi4gVGhl IG1haW4gcHVycG9zZSBvZiB0aGlzCisgKiBTQ1RQIGtlcm5lbCBJbXBsZW1lbnRhdGlvbi4gVGhl IG1haW4gcHVycG9zZSBvZiB0aGlzCiAgKiBjb2RlIGlmIHRvIHByb3ZpZGUgdGhlIFNDVFAgU29j a2V0IEFQSSBtYXBwaW5ncyBmb3IgdXNlcgogICogYXBwbGljYXRpb24gdG8gaW50ZXJmYWNlIHdp dGggdGhlIFNDVFAgaW4ga2VybmVsLgogICoKQEAgLTQ5LDYgKzQ5LDkgQEAgaW50IHNjdHBfb3B0 X2luZm8oaW50IHNkLCBzY3RwX2Fzc29jX3QgaWQsIGludCBvcHQsIHZvaWQgKmFyZywgc29ja2xl bl90ICogc2l6ZSkKIAljYXNlIFNDVFBfTUFYU0VHOgogCWNhc2UgU0NUUF9TVEFUVVM6CiAJY2Fz ZSBTQ1RQX0dFVF9QRUVSX0FERFJfSU5GTzoKKwljYXNlIFNDVFBfQVVUSF9BQ1RJVkVfS0VZOgor CWNhc2UgU0NUUF9QRUVSX0FVVEhfQ0hVTktTOgorCWNhc2UgU0NUUF9MT0NBTF9BVVRIX0NIVU5L UzoKIAkJKihzY3RwX2Fzc29jX3QgKikgYXJnID0gaWQ7CiAJCXJldHVybiBnZXRzb2Nrb3B0KHNk LCBJUFBST1RPX1NDVFAsIG9wdCwgYXJnLCBzaXplKTsKIAlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEv dGVzdGNhc2VzL25ldHdvcmsvc2N0cC9saWIvcGVlbG9mZi5jIGIvdGVzdGNhc2VzL25ldHdvcmsv c2N0cC9saWIvcGVlbG9mZi5jCmluZGV4IDA0ZmU5YmMuLjUyZmY1MzQgMTAwNjQ0Ci0tLSBhL3Rl c3RjYXNlcy9uZXR3b3JrL3NjdHAvbGliL3BlZWxvZmYuYworKysgYi90ZXN0Y2FzZXMvbmV0d29y ay9zY3RwL2xpYi9wZWVsb2ZmLmMKQEAgLTEsNCArMSw0IEBACi0vKiBTQ1RQIGtlcm5lbCByZWZl cmVuY2UgSW1wbGVtZW50YXRpb246IFVzZXIgQVBJIGV4dGVuc2lvbnMuCisvKiBTQ1RQIGtlcm5l bCBJbXBsZW1lbnRhdGlvbjogVXNlciBBUEkgZXh0ZW5zaW9ucy4KICAqCiAgKiBwZWVsb2ZmLmMK ICAqCkBAIC02LDcgKzYsNyBAQAogICogICAgaHR0cDovL3d3dy5nbnUub3JnL2NvcHlsZWZ0L2xl c3Nlci50eHQKICAqCiAgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXNlciBsaWJyYXJ5IHRo YXQgb2ZmZXJzIHN1cHBvcnQgZm9yIHRoZQotICogU0NUUCBrZXJuZWwgcmVmZXJlbmNlIEltcGxl bWVudGF0aW9uLiBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMKKyAqIFNDVFAga2VybmVsIEltcGxl bWVudGF0aW9uLiBUaGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMKICAqIGNvZGUgaXMgdG8gcHJvdmlk ZSB0aGUgU0NUUCBTb2NrZXQgQVBJIG1hcHBpbmdzIGZvciB1c2VyCiAgKiBhcHBsaWNhdGlvbiB0 byBpbnRlcmZhY2Ugd2l0aCB0aGUgU0NUUCBpbiBrZXJuZWwuCiAgKgpkaWZmIC0tZ2l0IGEvdGVz dGNhc2VzL25ldHdvcmsvc2N0cC9saWIvcmVjdm1zZy5jIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0 cC9saWIvcmVjdm1zZy5jCmluZGV4IDRlZmZmYWUuLmM1N2RlNzcgMTAwNjQ0Ci0tLSBhL3Rlc3Rj YXNlcy9uZXR3b3JrL3NjdHAvbGliL3JlY3Ztc2cuYworKysgYi90ZXN0Y2FzZXMvbmV0d29yay9z Y3RwL2xpYi9yZWN2bXNnLmMKQEAgLTEsNCArMSw0IEBACi0vKiBTQ1RQIGtlcm5lbCByZWZlcmVu Y2UgSW1wbGVtZW50YXRpb246IFVzZXIgQVBJIGV4dGVuc2lvbnMuCisvKiBTQ1RQIGtlcm5lbCBJ bXBsZW1lbnRhdGlvbjogVXNlciBBUEkgZXh0ZW5zaW9ucy4KICAqCiAgKiBzY3RwX3JlY3Ztc2cu YwogICoKQEAgLTYsNyArNiw3IEBACiAgKiAgICBodHRwOi8vd3d3LmdudS5vcmcvY29weWxlZnQv bGVzc2VyLnR4dAogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c2VyIGxpYnJhcnkg dGhhdCBvZmZlcnMgc3VwcG9ydCBmb3IgdGhlCi0gKiBTQ1RQIGtlcm5lbCByZWZlcmVuY2UgSW1w bGVtZW50YXRpb24uIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcworICogU0NUUCBrZXJuZWwgSW1w bGVtZW50YXRpb24uIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcwogICogY29kZSBpcyB0byBwcm92 aWRlIHRoZSBTQ1RQIFNvY2tldCBBUEkgbWFwcGluZ3MgZm9yIHVzZXIKICAqIGFwcGxpY2F0aW9u IHRvIGludGVyZmFjZSB3aXRoIHRoZSBTQ1RQIGluIGtlcm5lbC4KICAqCkBAIC03NCw3ICs3NCw3 IEBAIGludCBzY3RwX3JlY3Ztc2coaW50IHMsIHZvaWQgKm1zZywgc2l6ZV90IGxlbiwgc3RydWN0 IHNvY2thZGRyICpmcm9tLAogCWlubXNnLm1zZ19jb250cm9sID0gaW5jbXNnOwogCWlubXNnLm1z Z19jb250cm9sbGVuID0gc2l6ZW9mKGluY21zZyk7CiAKLQllcnJvciA9IHJlY3Ztc2cocywgJmlu bXNnLCAwKTsKKwllcnJvciA9IHJlY3Ztc2cocywgJmlubXNnLCBtc2dfZmxhZ3MgPyAqbXNnX2Zs YWdzIDogMCk7CiAJaWYgKGVycm9yIDwgMCkKIAkJcmV0dXJuIGVycm9yOwogCmRpZmYgLS1naXQg YS90ZXN0Y2FzZXMvbmV0d29yay9zY3RwL2xpYi9zZW5kbXNnLmMgYi90ZXN0Y2FzZXMvbmV0d29y ay9zY3RwL2xpYi9zZW5kbXNnLmMKaW5kZXggODJkOThmNS4uYmVmMjQyMCAxMDA2NDQKLS0tIGEv dGVzdGNhc2VzL25ldHdvcmsvc2N0cC9saWIvc2VuZG1zZy5jCisrKyBiL3Rlc3RjYXNlcy9uZXR3 b3JrL3NjdHAvbGliL3NlbmRtc2cuYwpAQCAtMSw0ICsxLDQgQEAKLS8qIFNDVFAga2VybmVsIHJl ZmVyZW5jZSBJbXBsZW1lbnRhdGlvbjogVXNlciBBUEkgZXh0ZW5zaW9ucy4KKy8qIFNDVFAga2Vy bmVsIEltcGxlbWVudGF0aW9uOiBVc2VyIEFQSSBleHRlbnNpb25zLgogICoKICAqIHNlbmRtc2cu YwogICoKQEAgLTYsNyArNiw3IEBACiAgKiAgICBodHRwOi8vd3d3LmdudS5vcmcvY29weWxlZnQv bGVzc2VyLnR4dAogICoKICAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c2VyIGxpYnJhcnkg dGhhdCBvZmZlcnMgc3VwcG9ydCBmb3IgdGhlCi0gKiBTQ1RQIGtlcm5lbCByZWZlcmVuY2UgSW1w bGVtZW50YXRpb24uIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcworICogU0NUUCBrZXJuZWwgSW1w bGVtZW50YXRpb24uIFRoZSBtYWluIHB1cnBvc2Ugb2YgdGhpcwogICogY29kZSBpcyB0byBwcm92 aWRlIHRoZSBTQ1RQIFNvY2tldCBBUEkgbWFwcGluZ3MgZm9yIHVzZXIKICAqIGFwcGxpY2F0aW9u IHRvIGludGVyZmFjZSB3aXRoIHRoZSBTQ1RQIGluIGtlcm5lbC4KICAqCkBAIC03Niw2ICs3Niw3 IEBAIHNjdHBfc2VuZChpbnQgcywgY29uc3Qgdm9pZCAqbXNnLCBzaXplX3QgbGVuLAogewogCXN0 cnVjdCBtc2doZHIgb3V0bXNnOwogCXN0cnVjdCBpb3ZlYyBpb3Y7CisJY2hhciBvdXRjbXNnW0NN U0dfU1BBQ0Uoc2l6ZW9mKHN0cnVjdCBzY3RwX3NuZHJjdmluZm8pKV07CiAKIAlvdXRtc2cubXNn X25hbWUgPSBOVUxMOwogCW91dG1zZy5tc2dfbmFtZWxlbiA9IDA7CkBAIC04Niw3ICs4Nyw2IEBA IHNjdHBfc2VuZChpbnQgcywgY29uc3Qgdm9pZCAqbXNnLCBzaXplX3QgbGVuLAogCW91dG1zZy5t c2dfY29udHJvbGxlbiA9IDA7CiAKIAlpZiAoc2luZm8pIHsKLQkJY2hhciBvdXRjbXNnW0NNU0df U1BBQ0Uoc2l6ZW9mKHN0cnVjdCBzY3RwX3NuZHJjdmluZm8pKV07CiAJCXN0cnVjdCBjbXNnaGRy ICpjbXNnOwogCiAJCW91dG1zZy5tc2dfY29udHJvbCA9IG91dGNtc2c7CmRpZmYgLS1naXQgYS90 ZXN0Y2FzZXMvbmV0d29yay9zY3RwL3Rlc3RsaWIvc2N0cHV0aWwuYyBiL3Rlc3RjYXNlcy9uZXR3 b3JrL3NjdHAvdGVzdGxpYi9zY3RwdXRpbC5jCmluZGV4IDI2YzkyMDMuLjEzYjU5NzQgMTAwNjQ0 Ci0tLSBhL3Rlc3RjYXNlcy9uZXR3b3JrL3NjdHAvdGVzdGxpYi9zY3RwdXRpbC5jCisrKyBiL3Rl c3RjYXNlcy9uZXR3b3JrL3NjdHAvdGVzdGxpYi9zY3RwdXRpbC5jCkBAIC0xLDE3ICsxLDE3IEBA Ci0vKiBTQ1RQIGtlcm5lbCByZWZlcmVuY2UgSW1wbGVtZW50YXRpb24KKy8qIFNDVFAga2VybmVs IEltcGxlbWVudGF0aW9uCiAgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAxLCAyMDAzCiAg KiBDb3B5cmlnaHQgKEMpIDE5OTkgQ2lzY28KICAqIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIE1v dG9yb2xhCiAgIyBDb3B5cmlnaHQgKEMpIDIwMDEgTm9raWEKICAqIENvcHlyaWdodCAoQykgMjAw MSBMYSBNb250ZSBILlAuIFlhcnJvbGwKICAqCi0gKiBUaGUgU0NUUCByZWZlcmVuY2UgaW1wbGVt ZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsKKyAqIFRoZSBTQ1RQIGltcGxlbWVudGF0aW9uIGlz IGZyZWUgc29mdHdhcmU7CiAgKiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZgogICogdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQogICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQogICogYW55IGxhdGVyIHZlcnNpb24uCiAg KgotICogVGhlIFNDVFAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQKKyAqIFRoZSBTQ1RQIGltcGxlbWVudGF0aW9uIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQKICAqIHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZAogICogICAgICAgICAgICAgICAg ICoqKioqKioqKioqKioqKioqKioqKioqKgogICogd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgpAQCAtNDIsMTUgKzQyLDE1IEBA CiAgKi8KIAogI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRl IDxjdHlwZS5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgog I2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KICNpbmNsdWRlIDxzeXMvdWlvLmg+CiAjaW5jbHVkZSA8 bmV0aW5ldC9pbi5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgIm5ldGluZXQvc2N0 cC5oIgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8bWFsbG9jLmg+CisjaW5jbHVkZSA8 bmV0aW5ldC9zY3RwLmg+CiAjaW5jbHVkZSAic2N0cHV0aWwuaCIKIAogLyogVGhpcyBmdW5jdGlv biBwcmludHMgdGhlIGNtc2cgZGF0YS4gKi8KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIHRlc3Rf cHJpbnRfbWVzc2FnZShpbnQgc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IG1zZ19sZW4p CiAJCS8qIE1ha2Ugc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgcHJpbnRhYmxlIGFuZCB0aGF0IHdl CiAJCSAqIGFyZSBOVUwgdGVybWluYXRlZC4uLgogCQkgKi8KLQkJcHJpbnRmKCJEQVRBKCV6aSk6 ICAiLCBtc2dfbGVuKTsKKwkJcHJpbnRmKCJEQVRBKCVkKTogICIsIG1zZ19sZW4pOwogCQl3aGls ZSAobXNnX2xlbiA+IDApIHsKIAkJCWNoYXIgKnRleHQ7CiAJCQlpbnQgbGVuOwpAQCAtMTg1LDI2 ICsxODUsMjcgQEAgdGVzdF9jaGVja19idWZfbm90aWZpY2F0aW9uKHZvaWQgKmJ1ZiwgaW50IGRh dGFsZW4sIGludCBtc2dfZmxhZ3MsCiAJdW5pb24gc2N0cF9ub3RpZmljYXRpb24gKnNuOwogCiAJ aWYgKCEobXNnX2ZsYWdzICYgTVNHX05PVElGSUNBVElPTikpCi0JCXRzdF9icmttKFRCUk9LLCBO VUxMLCAiR290IGEgZGF0YW1zZywgZXhwZWN0aW5nIG5vdGlmaWNhdGlvbiIpOworCQl0c3RfYnJr bShUQlJPSywgdHN0X2V4aXQsICJHb3QgYSBkYXRhbXNnLCBleHBlY3RpbmcgIgorCQkJICJub3Rp ZmljYXRpb24iKTsKIAogCWlmIChleHBlY3RlZF9kYXRhbGVuIDw9IDApCiAJCXJldHVybjsKIAog CWlmIChkYXRhbGVuICE9IGV4cGVjdGVkX2RhdGFsZW4pCi0JCXRzdF9icmttKFRCUk9LLCBOVUxM LCAiR290IGEgbm90aWZpY2F0aW9uIG9mIHVuZXhwZWN0ZWQgIgotCQkJICJsZW5ndGggKCVkKTsg ZXhwZWN0ZWQgbGVuZ3RoIHdhcyAlZCIsIGRhdGFsZW4sCisJCXRzdF9icmttKFRCUk9LLCB0c3Rf ZXhpdCwgIkdvdCBhIG5vdGlmaWNhdGlvbiBvZiB1bmV4cGVjdGVkICIKKwkJCSAibGVuZ3RoOiVk LCBleHBlY3RlZCBsZW5ndGg6JWQiLCBkYXRhbGVuLAogCQkJIGV4cGVjdGVkX2RhdGFsZW4pOwog CiAJc24gPSAodW5pb24gc2N0cF9ub3RpZmljYXRpb24gKilidWY7CiAJaWYgKHNuLT5zbl9oZWFk ZXIuc25fdHlwZSAhPSBleHBlY3RlZF9zbl90eXBlKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwg IlVuZXhwZWN0ZWQgbm90aWZpY2F0aW9uOiVkICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0 LCAiVW5leHBlY3RlZCBub3RpZmljYXRpb246JWQiCiAJCQkgImV4cGVjdGVkOiVkIiwgc24tPnNu X2hlYWRlci5zbl90eXBlLAogCQkJIGV4cGVjdGVkX3NuX3R5cGUpOwogCiAJc3dpdGNoIChzbi0+ c25faGVhZGVyLnNuX3R5cGUpIHsKIAljYXNlIFNDVFBfQVNTT0NfQ0hBTkdFOgogCQlpZiAoc24t PnNuX2Fzc29jX2NoYW5nZS5zYWNfc3RhdGUgIT0gZXhwZWN0ZWRfYWRkaXRpb25hbCkKLQkJCXRz dF9icmttKFRCUk9LLCBOVUxMLCAiVW5leHBlY3RlZCBzYWNfc3RhdGU6JWQgIgorCQkJdHN0X2Jy a20oVEJST0ssIHRzdF9leGl0LCAiVW5leHBlY3RlZCBzYWNfc3RhdGU6JWQgIgogCQkJCSAiZXhw ZWN0ZWQ6JWQiLCBzbi0+c25fYXNzb2NfY2hhbmdlLnNhY19zdGF0ZSwKIAkJCQkgZXhwZWN0ZWRf YWRkaXRpb25hbCk7CiAJCWJyZWFrOwpAQCAtMjM2LDM0ICsyMzcsMzQgQEAgdGVzdF9jaGVja19i dWZfZGF0YSh2b2lkICpidWYsIGludCBkYXRhbGVuLCBpbnQgbXNnX2ZsYWdzLAogCQkgICAgdWlu dDMyX3QgZXhwZWN0ZWRfcHBpZCkKIHsKIAlpZiAobXNnX2ZsYWdzICYgTVNHX05PVElGSUNBVElP TikKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJHb3QgYSBub3RpZmljYXRpb24sIGV4cGVjdGlu ZyBhIgorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJHb3QgYSBub3RpZmljYXRpb24sIGV4 cGVjdGluZyBhIgogCQkJICJkYXRhbXNnIik7CiAKIAlpZiAoZXhwZWN0ZWRfZGF0YWxlbiA8PSAw KQogCQlyZXR1cm47CiAKIAlpZiAoZGF0YWxlbiAhPSBleHBlY3RlZF9kYXRhbGVuKQotCQl0c3Rf YnJrbShUQlJPSywgTlVMTCwgIkdvdCBhIGRhdGFtc2cgb2YgdW5leHBlY3RlZCAiCisJCXRzdF9i cmttKFRCUk9LLCB0c3RfZXhpdCwgIkdvdCBhIGRhdGFtc2cgb2YgdW5leHBlY3RlZCAiCiAJCQkg Imxlbmd0aDolZCwgZXhwZWN0ZWQgbGVuZ3RoOiVkIiwgZGF0YWxlbiwKIAkJCSBleHBlY3RlZF9k YXRhbGVuKTsKIAogCWlmICgobXNnX2ZsYWdzICYgfjB4ODAwMDAwMDApICE9IGV4cGVjdGVkX21z Z19mbGFncykKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJVbmV4cGVjdGVkIG1zZ19mbGFnczow eCV4ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiVW5leHBlY3RlZCBtc2dfZmxhZ3M6 MHgleCAiCiAJCQkgImV4cGVjdGluZzoweCV4IiwgbXNnX2ZsYWdzLCBleHBlY3RlZF9tc2dfZmxh Z3MpOwogCiAJaWYgKCgwID09IGV4cGVjdGVkX3N0cmVhbSkgJiYgKDAgPT0gZXhwZWN0ZWRfcHBp ZCkpCiAJCXJldHVybjsKIAogCWlmICghc2luZm8pCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAi TnVsbCBzaW5mbywgYnV0IGV4cGVjdGVkICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAi TnVsbCBzaW5mbywgYnV0IGV4cGVjdGVkICIKIAkJCSAic3RyZWFtOiVkIGV4cGVjdGVkIHBwaWQ6 JWQiLCBleHBlY3RlZF9zdHJlYW0sCiAJCQkgZXhwZWN0ZWRfcHBpZCk7CiAKIAlpZiAoc2luZm8t PnNpbmZvX3N0cmVhbSAhPSBleHBlY3RlZF9zdHJlYW0pCi0JCXRzdF9icmttKFRCUk9LLCBOVUxM LCAic3RyZWFtIG1pc21hdGNoOiBleHBlY3RlZDoleCAiCisJCXRzdF9icmttKFRCUk9LLCB0c3Rf ZXhpdCwgInN0cmVhbSBtaXNtYXRjaDogZXhwZWN0ZWQ6JXggIgogCQkJICJnb3Q6JXgiLCBleHBl Y3RlZF9zdHJlYW0sIHNpbmZvLT5zaW5mb19zdHJlYW0pOwogCWlmIChzaW5mby0+c2luZm9fcHBp ZCAhPSBleHBlY3RlZF9wcGlkKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInBwaWQgbWlzbWF0 Y2g6IGV4cGVjdGVkOiV4ICIKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAicHBpZCBtaXNt YXRjaDogZXhwZWN0ZWQ6JXggIgogCQkJICJnb3Q6JXhcbiIsIGV4cGVjdGVkX3BwaWQsIHNpbmZv LT5zaW5mb19wcGlkKTsKIH0KIApAQCAtMjg0LDcgKzI4NSw3IEBAIHRlc3RfY2hlY2tfbXNnX2Rh dGEoc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgZGF0YWxlbiwgaW50IGV4cGVjdGVkX2RhdGFsZW4s CiAJCWlmIChJUFBST1RPX1NDVFAgPT0gY21zZy0+Y21zZ19sZXZlbCAmJgogCQkgICAgU0NUUF9T TkRSQ1YgPT0gY21zZy0+Y21zZ190eXBlKQogCQkJYnJlYWs7Ci0JfQkJCS8qIGZvciAoYWxsIGNt c2dzKSAqLworCX0JCQkvKiBmb3IoIGFsbCBjbXNncykgKi8KIAogCWlmICgoIWNtc2cpIHx8CiAJ ICAgIChjbXNnLT5jbXNnX2xlbiA8IENNU0dfTEVOKHNpemVvZihzdHJ1Y3Qgc2N0cF9zbmRyY3Zp bmZvKSkpKQpAQCAtMzA5LDcgKzMxMCw3IEBAIHZvaWQgKnRlc3RfYnVpbGRfbXNnKGludCBsZW4p CiAKIAltc2dfYnVmID0gKGNoYXIgKiltYWxsb2MobGVuKTsKIAlpZiAoIW1zZ19idWYpCi0JCXRz dF9icmttKFRCUk9LLCBOVUxMLCAibWFsbG9jIGZhaWxlZCIpOworCQl0c3RfYnJrbShUQlJPSywg dHN0X2V4aXQsICJtYWxsb2MgZmFpbGVkIik7CiAKIAlwID0gbXNnX2J1ZjsKIApAQCAtMzUyLDcg KzM1Myw3IEBAIHN0YXRpYyBpbnQgY21wX2FkZHIoc29ja2FkZHJfc3RvcmFnZV90ICogYWRkcjEs IHNvY2thZGRyX3N0b3JhZ2VfdCAqIGFkZHIyKQogCQlyZXR1cm4gbWVtY21wKCZhZGRyMS0+djQu c2luX2FkZHIsICZhZGRyMi0+djQuc2luX2FkZHIsCiAJCQkgICAgICBzaXplb2YoYWRkcjEtPnY0 LnNpbl9hZGRyKSk7CiAJZGVmYXVsdDoKLQkJdHN0X2Jya20oVEJST0ssIE5VTEwsICJpbnZhbGlk IGFkZHJlc3MgdHlwZSAlZCIsCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImludmFsaWQg YWRkcmVzcyB0eXBlICVkIiwKIAkJCSBhZGRyMS0+c2Euc2FfZmFtaWx5KTsKIAkJcmV0dXJuIC0x OwogCX0KQEAgLTM3MiwxMiArMzczLDEzIEBAIGludCB0ZXN0X3BlZXJfYWRkcihpbnQgc2ssIHNj dHBfYXNzb2NfdCBhc29jLCBzb2NrYWRkcl9zdG9yYWdlX3QgKiBwZWVycywKIAogCWVycm9yID0g c2N0cF9nZXRwYWRkcnMoc2ssIGFzb2MsICZhZGRycyk7CiAJaWYgKC0xID09IGVycm9yKSB7Ci0J CXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2N0cF9nZXRwYWRkcnM6ICVzIiwgc3RyZXJyb3IoZXJy bm8pKTsKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2N0cF9nZXRwYWRkcnM6ICVzIiwK KwkJCSBzdHJlcnJvcihlcnJubykpOwogCQlyZXR1cm4gZXJyb3I7CiAJfQogCWlmIChlcnJvciAh PSBjb3VudCkgewogCQlzY3RwX2ZyZWVwYWRkcnMoYWRkcnMpOwotCQl0c3RfYnJrbShUQlJPSywg TlVMTCwgInBlZXIgY291bnQgJWQgbWlzbWF0Y2gsIGV4cGVjdGVkICVkIiwKKwkJdHN0X2Jya20o VEJST0ssIHRzdF9leGl0LCAicGVlciBjb3VudCAlZCBtaXNtYXRjaCwgZXhwZWN0ZWQgJWQiLAog CQkJIGVycm9yLCBjb3VudCk7CiAJfQogCWFkZHJidWYgPSBhZGRyczsKQEAgLTM5NSw3ICszOTcs NyBAQCBpbnQgdGVzdF9wZWVyX2FkZHIoaW50IHNrLCBzY3RwX2Fzc29jX3QgYXNvYywgc29ja2Fk ZHJfc3RvcmFnZV90ICogcGVlcnMsCiAJCWRlZmF1bHQ6CiAJCQllcnJubyA9IEVJTlZBTDsKIAkJ CXNjdHBfZnJlZXBhZGRycyhhZGRycyk7Ci0JCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNjdHBf Z2V0cGFkZHJzOiAlcyIsCisJCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzY3RwX2dldHBh ZGRyczogJXMiLAogCQkJCSBzdHJlcnJvcihlcnJubykpOwogCQkJcmV0dXJuIC0xOwogCQl9CkBA IC00MDgsNyArNDEwLDggQEAgaW50IHRlc3RfcGVlcl9hZGRyKGludCBzaywgc2N0cF9hc3NvY190 IGFzb2MsIHNvY2thZGRyX3N0b3JhZ2VfdCAqIHBlZXJzLAogCX0KIAlmb3IgKGogPSAwOyBqIDwg Y291bnQ7IGorKykgewogCQlpZiAoZm91bmRbal0gPT0gMCkgewotCQkJdHN0X2Jya20oVEJST0ss IE5VTEwsICJwZWVyIGFkZHJlc3MgJWQgbm90IGZvdW5kIiwgaik7CisJCQl0c3RfYnJrbShUQlJP SywgdHN0X2V4aXQsICJwZWVyIGFkZHJlc3MgJWQgbm90IGZvdW5kIiwKKwkJCQkgaik7CiAJCX0K IAl9CiAJc2N0cF9mcmVlcGFkZHJzKGFkZHJzKTsKZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3 b3JrL3NjdHAvdGVzdGxpYi9zY3RwdXRpbC5oIGIvdGVzdGNhc2VzL25ldHdvcmsvc2N0cC90ZXN0 bGliL3NjdHB1dGlsLmgKaW5kZXggNDE3ODU1Mi4uMGVmODY5MyAxMDA2NDQKLS0tIGEvdGVzdGNh c2VzL25ldHdvcmsvc2N0cC90ZXN0bGliL3NjdHB1dGlsLmgKKysrIGIvdGVzdGNhc2VzL25ldHdv cmsvc2N0cC90ZXN0bGliL3NjdHB1dGlsLmgKQEAgLTEsNCArMSw0IEBACi0vKiBTQ1RQIGtlcm5l bCByZWZlcmVuY2UgSW1wbGVtZW50YXRpb24KKy8qIFNDVFAga2VybmVsIEltcGxlbWVudGF0aW9u CiAgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAyMDAxLCAyMDAzCiAgKiBDb3B5cmlnaHQgKGMp IDE5OTktMjAwMCBDaXNjbywgSW5jLgogICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEgTW90b3Jv bGEsIEluYy4KQEAgLTYsMTMgKzYsMTMgQEAKICAqIENvcHlyaWdodCAoYykgMjAwMSBOb2tpYSwg SW5jLgogICogQ29weXJpZ2h0IChjKSAyMDAxIExhIE1vbnRlIEguUC4gWWFycm9sbAogICoKLSAq IFRoZSBTQ1RQIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOworICog VGhlIFNDVFAgaW1wbGVtZW50YXRpb24gaXMgZnJlZSBzb2Z0d2FyZTsKICAqIHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mCiAgKiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAgKiB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24p CiAgKiBhbnkgbGF0ZXIgdmVyc2lvbi4KICAqCi0gKiBUaGUgU0NUUCByZWZlcmVuY2UgaW1wbGVt ZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdAorICogVGhlIFNDVFAg aW1wbGVtZW50YXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdAogICogd2ls bCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkCiAgKiAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiB3 YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuCkBAIC02MSw3ICs2MSw2IEBAIHR5cGVkZWYgdW5pb24gewogCXN0cnVjdCBzb2NrYWRk ciBzYTsKIH0gc29ja2FkZHJfc3RvcmFnZV90OwogCi0KICNkZWZpbmUgUkVBTExZX0JJRyA2NTUz NgogCiAvKiBMaXRlcmFsIGRlZmluZXMuICAqLwpAQCAtNzIsNyArNzEsNyBAQCB0eXBlZGVmIHVu aW9uIHsKICNlbmRpZgogI2RlZmluZSBTQ1RQX1RFU1RQT1JUXzIgKFNDVFBfVEVTVFBPUlRfMSsx KQogCi0jZGVmaW5lIFNDVFBfSVBfQkNBU1QgIAlodG9ubCgweGZmZmZmZmZmKQorI2RlZmluZSBT Q1RQX0lQX0JDQVNUCWh0b25sKDB4ZmZmZmZmZmYpCiAjZGVmaW5lIFNDVFBfSVBfTE9PUEJBQ0sg IGh0b25sKDB4N2YwMDAwMDEpCiAKIC8qIFRoZXNlIGFyZSBzdG9sZW4gZnJvbSA8bmV0aW5ldC9p bi5oPi4gICovCkBAIC05Nyw3ICs5Niw3IEBAIHR5cGVkZWYgdW5pb24gewogICAgICAgICBudG9o cygoYWRkcikuczZfYWRkcjE2WzZdKSwgXAogICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2 WzddKQogCi0jZGVmaW5lIERVTVBfQ09SRSB7IAkJCQkJIFwKKyNkZWZpbmUgRFVNUF9DT1JFIHsJ CQkJCSBcCiAJY2hhciAqZGllZGllZGllID0gMDsJCQkJIFwKIAlwcmludGYoIkRVTVBfQ09SRSAl czogJWRcbiIsIF9fRklMRV9fLCBfX0xJTkVfXyk7XAogCSpkaWVkaWVkaWUgPSAwOwkJCQkJIFwK QEAgLTEzMyw2OCArMTMyLDY1IEBAIGV4dGVybiBpbnQgVFNUX0NOVDsKIHN0YXRpYyBpbmxpbmUg aW50IHRlc3Rfc29ja2V0KGludCBkb21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wpCiB7CiAJ aW50IHNrID0gc29ja2V0KGRvbWFpbiwgdHlwZSwgcHJvdG9jb2wpOwotICAgICAgICBpZiAoLTEg PT0gc2spCi0gICAgICAgICAgICAgICAgdHN0X2Jya20oVEJST0ssIE5VTEwsICJzb2NrZXQ6ICVz Iiwgc3RyZXJyb3IoZXJybm8pKTsKKwlpZiAoLTEgPT0gc2spCisJCXRzdF9icmttKFRCUk9LLCB0 c3RfZXhpdCwgInNvY2tldDogJXMiLCBzdHJlcnJvcihlcnJubykpOwogCXJldHVybiBzazsKIH0K IAogc3RhdGljIGlubGluZSBpbnQgdGVzdF9iaW5kKGludCBzaywgc3RydWN0IHNvY2thZGRyICph ZGRyLCBzb2NrbGVuX3QgYWRkcmxlbikKIHsKLQlpbnQgZXJyb3I7Ci0JaW50IHRydWVfY29uc3Q9 MTsKLQotCXNldHNvY2tvcHQoc2ssIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgJnRydWVfY29u c3QsIHNpemVvZihpbnQpKTsKLQllcnJvciA9IGJpbmQoc2ssIGFkZHIsIGFkZHJsZW4pOwotICAg ICAgICBpZiAoLTEgPT0gZXJyb3IpCi0gICAgICAgICAgICAgICAgdHN0X2Jya20oVEJST0ssIE5V TEwsICJiaW5kOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisJaW50IGVycm9yID0gYmluZChzaywg YWRkciwgYWRkcmxlbik7CisJaWYgKC0xID09IGVycm9yKQorCQl0c3RfYnJrbShUQlJPSywgdHN0 X2V4aXQsICJiaW5kOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CiAJcmV0dXJuIGVycm9yOwogfQog CiBzdGF0aWMgaW5saW5lIGludCB0ZXN0X2JpbmR4X2FkZChpbnQgc2ssIHN0cnVjdCBzb2NrYWRk ciAqYWRkciwgaW50IGNvdW50KQogewogCWludCBlcnJvciA9IHNjdHBfYmluZHgoc2ssIGFkZHIs IGNvdW50LCBTQ1RQX0JJTkRYX0FERF9BRERSKTsKLSAgICAgICAgaWYgKC0xID09IGVycm9yKQot ICAgICAgICAgICAgICAgIHRzdF9icmttKFRCUk9LLCBOVUxMLCAiYmluZHggKGFkZCk6ICVzIiwg c3RyZXJyb3IoZXJybm8pKTsKKwlpZiAoLTEgPT0gZXJyb3IpCisJCXRzdF9icmttKFRCUk9LLCB0 c3RfZXhpdCwgImJpbmR4IChhZGQpOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CiAJcmV0dXJuIGVy cm9yOwogfQogCiBzdGF0aWMgaW5saW5lIGludCB0ZXN0X2xpc3RlbihpbnQgc2ssIGludCBiYWNr bG9nKQogewogCWludCBlcnJvciA9IGxpc3RlbihzaywgYmFja2xvZyk7Ci0gICAgICAgIGlmICgt MSA9PSBlcnJvcikKLSAgICAgICAgICAgICAgICB0c3RfYnJrbShUQlJPSywgTlVMTCwgImxpc3Rl bjogJXMiLCBzdHJlcnJvcihlcnJubykpOworCWlmICgtMSA9PSBlcnJvcikKKwkJdHN0X2Jya20o VEJST0ssIHRzdF9leGl0LCAibGlzdGVuOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CiAJcmV0dXJu IGVycm9yOwogfQogCiBzdGF0aWMgaW5saW5lIGludCB0ZXN0X2Nvbm5lY3QoaW50IHNrLCBzdHJ1 Y3Qgc29ja2FkZHIgKmFkZHIsIHNvY2tsZW5fdCBhZGRybGVuKQogewogCWludCBlcnJvciA9IGNv bm5lY3Qoc2ssIGFkZHIsIGFkZHJsZW4pOwotICAgICAgICBpZiAoLTEgPT0gZXJyb3IpCi0gICAg ICAgICAgICAgICAgdHN0X2Jya20oVEJST0ssIE5VTEwsICJjb25uZWN0OiAlcyIsIHN0cmVycm9y KGVycm5vKSk7CisJaWYgKC0xID09IGVycm9yKQorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQs ICJjb25uZWN0OiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CiAJcmV0dXJuIGVycm9yOwogfQogCiBz dGF0aWMgaW5saW5lIGludCB0ZXN0X2Nvbm5lY3R4KGludCBzaywgc3RydWN0IHNvY2thZGRyICph ZGRyLCBpbnQgY291bnQpCiB7Ci0JaW50IGVycm9yID0gc2N0cF9jb25uZWN0eChzaywgYWRkciwg Y291bnQpOwotICAgICAgICBpZiAoLTEgPT0gZXJyb3IpCi0gICAgICAgICAgICAgICAgdHN0X2Jy a20oVEJST0ssIE5VTEwsICJjb25uZWN0eDogJXMiLCBzdHJlcnJvcihlcnJubykpOworCWludCBl cnJvciA9IHNjdHBfY29ubmVjdHgoc2ssIGFkZHIsIGNvdW50LCBOVUxMKTsKKwlpZiAoLTEgPT0g ZXJyb3IpCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgImNvbm5lY3R4OiAlcyIsIHN0cmVy cm9yKGVycm5vKSk7CiAJcmV0dXJuIGVycm9yOwogfQogCi1zdGF0aWMgaW5saW5lIGludCB0ZXN0 X2FjY2VwdChpbnQgc2ssIHN0cnVjdCBzb2NrYWRkciAqYWRkciwgc29ja2xlbl90ICphZGRybGVu KQorc3RhdGljIGlubGluZSBpbnQgdGVzdF9hY2NlcHQoaW50IHNrLCBzdHJ1Y3Qgc29ja2FkZHIg KmFkZHIsCisJCQkgICAgICBzb2NrbGVuX3QgKiBhZGRybGVuKQogewogCWludCBlcnJvciA9IGFj Y2VwdChzaywgYWRkciwgYWRkcmxlbik7Ci0gICAgICAgIGlmICgtMSA9PSBlcnJvcikKLSAgICAg ICAgICAgICAgICB0c3RfYnJrbShUQlJPSywgTlVMTCwgImFjY2VwdDogJXMiLCBzdHJlcnJvcihl cnJubykpOworCWlmICgtMSA9PSBlcnJvcikKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAi YWNjZXB0OiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CiAJcmV0dXJuIGVycm9yOwogfQogCiBzdGF0 aWMgaW5saW5lIGludCB0ZXN0X3NlbmQoaW50IHNrLCBjb25zdCB2b2lkICptc2csIHNpemVfdCBs ZW4sIGludCBmbGFncykKIHsKIAlpbnQgZXJyb3IgPSBzZW5kKHNrLCBtc2csIGxlbiwgZmxhZ3Mp OwotICAgICAgICBpZiAobGVuICE9IGVycm9yKQotICAgICAgICAgICAgICAgIHRzdF9icmttKFRC Uk9LLCBOVUxMLCAic2VuZDogZXJyb3I6JWQgZXJybm86JWQiLAorCWlmIChsZW4gIT0gZXJyb3Ip CisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNlbmQ6IGVycm9yOiVkIGVycm5vOiVkIiwK IAkJCSBlcnJvciwgZXJybm8pOwogCXJldHVybiBlcnJvcjsKIH0KQEAgLTIwMyw4ICsxOTksOCBA QCBzdGF0aWMgaW5saW5lIGludCB0ZXN0X3NlbmR0byhpbnQgc2ssIGNvbnN0IHZvaWQgKm1zZywg c2l6ZV90IGxlbiwgaW50IGZsYWdzLAogCQkJICAgICAgY29uc3Qgc3RydWN0IHNvY2thZGRyICp0 bywgc29ja2xlbl90IHRvbGVuKQogewogCWludCBlcnJvciA9IHNlbmR0byhzaywgbXNnLCBsZW4s IGZsYWdzLCB0bywgdG9sZW4pOwotICAgICAgICBpZiAobGVuICE9IGVycm9yKQotICAgICAgICAg ICAgICAgIHRzdF9icmttKFRCUk9LLCBOVUxMLCAic2VuZHRvOiBlcnJvcjolZCBlcnJubzolZCIs CisJaWYgKGxlbiAhPSBlcnJvcikKKwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAic2VuZHRv OiBlcnJvcjolZCBlcnJubzolZCIsCiAJCQkgZXJyb3IsIGVycm5vKTsKIAlyZXR1cm4gZXJyb3I7 CiB9CkBAIC0yMTMsOCArMjA5LDggQEAgc3RhdGljIGlubGluZSBpbnQgdGVzdF9zZW5kbXNnKGlu dCBzaywgY29uc3Qgc3RydWN0IG1zZ2hkciAqbXNnLCBpbnQgZmxhZ3MsCiAJCQkgICAgICAgaW50 IG1zZ2xlbikKIHsKIAlpbnQgZXJyb3IgPSBzZW5kbXNnKHNrLCBtc2csIGZsYWdzKTsKLSAgICAg ICAgaWYgKG1zZ2xlbiAhPSBlcnJvcikKLSAgICAgICAgICAgICAgICB0c3RfYnJrbShUQlJPSywg TlVMTCwgInNlbmRtc2c6IGVycm9yOiVkIGVycm5vOiVkIiwKKwlpZiAobXNnbGVuICE9IGVycm9y KQorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzZW5kbXNnOiBlcnJvcjolZCBlcnJubzol ZCIsCiAJCQkgZXJyb3IsIGVycm5vKTsKIAlyZXR1cm4gZXJyb3I7CiB9CkBAIC0yMjIsMzMgKzIx OCwzMyBAQCBzdGF0aWMgaW5saW5lIGludCB0ZXN0X3NlbmRtc2coaW50IHNrLCBjb25zdCBzdHJ1 Y3QgbXNnaGRyICptc2csIGludCBmbGFncywKIHN0YXRpYyBpbmxpbmUgaW50IHRlc3RfcmVjdihp bnQgc2ssIHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKQogewogCWludCBlcnJvciA9 IHJlY3Yoc2ssIGJ1ZiwgbGVuLCBmbGFncyk7Ci0gICAgICAgIGlmICgtMSA9PSBlcnJvcikKLSAg ICAgICAgICAgICAgICB0c3RfYnJrbShUQlJPSywgTlVMTCwgInJlY3Y6ICVzIiwgc3RyZXJyb3Io ZXJybm8pKTsKKwlpZiAoLTEgPT0gZXJyb3IpCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwg InJlY3Y6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAlyZXR1cm4gZXJyb3I7CiB9CiAKIHN0YXRp YyBpbmxpbmUgaW50IHRlc3RfcmVjdm1zZyhpbnQgc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgaW50 IGZsYWdzKQogewogCWludCBlcnJvciA9IHJlY3Ztc2coc2ssIG1zZywgZmxhZ3MpOwotICAgICAg ICBpZiAoLTEgPT0gZXJyb3IpCi0gICAgICAgICAgICAgICAgdHN0X2Jya20oVEJST0ssIE5VTEws ICJyZWN2bXNnOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisJaWYgKC0xID09IGVycm9yKQorCQl0 c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJyZWN2bXNnOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7 CiAJcmV0dXJuIGVycm9yOwogfQogCiBzdGF0aWMgaW5saW5lIGludCB0ZXN0X3NodXRkb3duKGlu dCBzaywgaW50IGhvdykKIHsKIAlpbnQgZXJyb3IgPSBzaHV0ZG93bihzaywgaG93KTsKLSAgICAg ICAgaWYgKC0xID09IGVycm9yKQotICAgICAgICAgICAgICAgIHRzdF9icmttKFRCUk9LLCBOVUxM LCAic2h1dGRvd246ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKwlpZiAoLTEgPT0gZXJyb3IpCisJ CXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNodXRkb3duOiAlcyIsIHN0cmVycm9yKGVycm5v KSk7CiAJcmV0dXJuIGVycm9yOwogfQogCiBzdGF0aWMgaW5saW5lIGludCB0ZXN0X2dldHNvY2tv cHQoaW50IHNrLCBpbnQgb3B0bmFtZSwgdm9pZCAqb3B0dmFsLAotCQkJCSAgc29ja2xlbl90ICpv cHRsZW4pCisJCQkJICBzb2NrbGVuX3QgKiBvcHRsZW4pCiB7CiAJaW50IGVycm9yID0gZ2V0c29j a29wdChzaywgU09MX1NDVFAsIG9wdG5hbWUsIG9wdHZhbCwgb3B0bGVuKTsKIAlpZiAoZXJyb3Ip Ci0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAiZ2V0c29ja29wdCglZCk6ICVzIiwgb3B0bmFtZSwK KwkJdHN0X2Jya20oVEJST0ssIHRzdF9leGl0LCAiZ2V0c29ja29wdCglZCk6ICVzIiwgb3B0bmFt ZSwKIAkJCSBzdHJlcnJvcihlcnJubykpOwogCXJldHVybiBlcnJvcjsKIH0KQEAgLTI1OCw3ICsy NTQsNyBAQCBzdGF0aWMgaW5saW5lIGludCB0ZXN0X3NldHNvY2tvcHQoaW50IHNrLCBpbnQgb3B0 bmFtZSwgY29uc3Qgdm9pZCAqb3B0dmFsLAogewogCWludCBlcnJvciA9IHNldHNvY2tvcHQoc2ss IFNPTF9TQ1RQLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7CiAJaWYgKGVycm9yKQotCQl0c3Rf YnJrbShUQlJPSywgTlVMTCwgInNldHNvY2tvcHQoJWQpOiAlcyIsIG9wdG5hbWUsCisJCXRzdF9i cmttKFRCUk9LLCB0c3RfZXhpdCwgInNldHNvY2tvcHQoJWQpOiAlcyIsIG9wdG5hbWUsCiAJCQkg c3RyZXJyb3IoZXJybm8pKTsKIAlyZXR1cm4gZXJyb3I7CiB9CkBAIC0yNjYsOCArMjYyLDggQEAg c3RhdGljIGlubGluZSBpbnQgdGVzdF9zZXRzb2Nrb3B0KGludCBzaywgaW50IG9wdG5hbWUsIGNv bnN0IHZvaWQgKm9wdHZhbCwKIHN0YXRpYyBpbmxpbmUgaW50IHRlc3Rfc2N0cF9wZWVsb2ZmKGlu dCBzaywgc2N0cF9hc3NvY190IGFzc29jX2lkKQogewogCWludCBlcnJvciA9IHNjdHBfcGVlbG9m ZihzaywgYXNzb2NfaWQpOwotICAgICAgICBpZiAoLTEgPT0gZXJyb3IpCi0gICAgICAgICAgICAg ICAgdHN0X2Jya20oVEJST0ssIE5VTEwsICJzY3RwX3BlZWxvZmY6ICVzIiwgc3RyZXJyb3IoZXJy bm8pKTsKKwlpZiAoLTEgPT0gZXJyb3IpCisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNj dHBfcGVlbG9mZjogJXMiLCBzdHJlcnJvcihlcnJubykpOwogCXJldHVybiBlcnJvcjsKIH0KIApA QCAtMjc4LDQwICsyNzQsMzkgQEAgc3RhdGljIGlubGluZSBpbnQgdGVzdF9zY3RwX3NlbmRtc2co aW50IHMsIGNvbnN0IHZvaWQgKm1zZywgc2l6ZV90IGxlbiwKIAkJCQkgICAgdWludDMyX3QgY29u dGV4dCkKIHsKIAlpbnQgZXJyb3IgPSBzY3RwX3NlbmRtc2cocywgbXNnLCBsZW4sIHRvLCB0b2xl biwgcHBpZCwgZmxhZ3MsIHN0cmVhbV9ubywKLQkgIAkJICAgICAgICAgdGltZXRvbGl2ZSwgY29u dGV4dCk7CisJCQkJIHRpbWV0b2xpdmUsIGNvbnRleHQpOwogCWlmIChsZW4gIT0gZXJyb3IpCi0J CXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2N0cF9zZW5kbXNnOiBlcnJvcjolZCBlcnJubzolZCIs CisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNjdHBfc2VuZG1zZzogZXJyb3I6JWQgZXJy bm86JWQiLAogCQkJIGVycm9yLCBlcnJubyk7CiAJcmV0dXJuIGVycm9yOwogfQogCiBzdGF0aWMg aW5saW5lIGludCB0ZXN0X3NjdHBfc2VuZChpbnQgcywgY29uc3Qgdm9pZCAqbXNnLCBzaXplX3Qg bGVuLAotCQkJCSBjb25zdCBzdHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvICpzaW5mbywKLQkJCQkgaW50 IGZsYWdzKQorCQkJCSBjb25zdCBzdHJ1Y3Qgc2N0cF9zbmRyY3ZpbmZvICpzaW5mbywgaW50IGZs YWdzKQogewogCWludCBlcnJvciA9IHNjdHBfc2VuZChzLCBtc2csIGxlbiwgc2luZm8sIGZsYWdz KTsKIAlpZiAobGVuICE9IGVycm9yKQotCQl0c3RfYnJrbShUQlJPSywgTlVMTCwgInNjdHBfc2Vu ZDogZXJyb3I6JWQgZXJybm86JWQiLAorCQl0c3RfYnJrbShUQlJPSywgdHN0X2V4aXQsICJzY3Rw X3NlbmQ6IGVycm9yOiVkIGVycm5vOiVkIiwKIAkJCSBlcnJvciwgZXJybm8pOwogCXJldHVybiBl cnJvcjsKIH0KIAogc3RhdGljIGlubGluZSBpbnQgdGVzdF9zY3RwX3JlY3Ztc2coaW50IHNrLCB2 b2lkICptc2csIHNpemVfdCBsZW4sCi0JCQkJICAgIHN0cnVjdCBzb2NrYWRkciAqZnJvbSwgc29j a2xlbl90ICpmcm9tbGVuLAorCQkJCSAgICBzdHJ1Y3Qgc29ja2FkZHIgKmZyb20sIHNvY2tsZW5f dCAqIGZyb21sZW4sCiAJCQkJICAgIHN0cnVjdCBzY3RwX3NuZHJjdmluZm8gKnNpbmZvLAogCQkJ CSAgICBpbnQgKm1zZ19mbGFncykKIHsKIAlpbnQgZXJyb3IgPSBzY3RwX3JlY3Ztc2coc2ssIG1z ZywgbGVuLCBmcm9tLCBmcm9tbGVuLCBzaW5mbywgbXNnX2ZsYWdzKTsKIAlpZiAoLTEgPT0gZXJy b3IpCi0JCXRzdF9icmttKFRCUk9LLCBOVUxMLCAic2N0cF9yZWN2bXNnOiAlcyIsIHN0cmVycm9y KGVycm5vKSk7CisJCXRzdF9icmttKFRCUk9LLCB0c3RfZXhpdCwgInNjdHBfcmVjdm1zZzogJXMi LCBzdHJlcnJvcihlcnJubykpOwogCXJldHVybiBlcnJvcjsKIH0KIAogc3RhdGljIGlubGluZSB2 b2lkICp0ZXN0X21hbGxvYyhzaXplX3Qgc2l6ZSkKIHsKIAl2b2lkICpidWYgPSBtYWxsb2Moc2l6 ZSk7Ci0gICAgICAgIGlmIChOVUxMID09IGJ1ZikKLSAgICAgICAgICAgICAgICB0c3RfYnJrbShU QlJPSywgTlVMTCwgIm1hbGxvYyBmYWlsZWQiKTsKKwlpZiAoTlVMTCA9PSBidWYpCisJCXRzdF9i cmttKFRCUk9LLCB0c3RfZXhpdCwgIm1hbGxvYyBmYWlsZWQiKTsKIAlyZXR1cm4gYnVmOwogfQog CkBAIC0zMjMsNiArMzE4LDcgQEAgdm9pZCB0ZXN0X2NoZWNrX2J1Zl9kYXRhKHZvaWQgKiwgaW50 LCBpbnQsIHN0cnVjdCBzY3RwX3NuZHJjdmluZm8gKiwgaW50LCBpbnQsCiB2b2lkICp0ZXN0X2J1 aWxkX21zZyhpbnQpOwogdm9pZCB0ZXN0X2VuYWJsZV9hc3NvY19jaGFuZ2UoaW50KTsKIHZvaWQg dGVzdF9wcmludF9tZXNzYWdlKGludCBzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbXNn X2xlbik7Ci1pbnQgdGVzdF9wZWVyX2FkZHIoaW50IHNrLCBzY3RwX2Fzc29jX3QgYXNvYywgc29j a2FkZHJfc3RvcmFnZV90ICpwZWVycywgaW50IGNvdW50KTsKK2ludCB0ZXN0X3BlZXJfYWRkcihp bnQgc2ssIHNjdHBfYXNzb2NfdCBhc29jLCBzb2NrYWRkcl9zdG9yYWdlX3QgKiBwZWVycywKKwkJ ICAgaW50IGNvdW50KTsKIAogI2VuZGlmIC8qIF9fc2N0cHV0aWxfaF9fICovCi0tIAoxLjguMS40 CgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClNlZSBldmVyeXRoaW5nIGZyb20gdGhlIGJyb3dzZXIg dG8gdGhlIGRhdGFiYXNlIHdpdGggQXBwRHluYW1pY3MKR2V0IGVuZC10by1lbmQgdmlzaWJpbGl0 eSB3aXRoIGFwcGxpY2F0aW9uIG1vbml0b3JpbmcgZnJvbSBBcHBEeW5hbWljcwpJc29sYXRlIGJv dHRsZW5lY2tzIGFuZCBkaWFnbm9zZSByb290IGNhdXNlIGluIHNlY29uZHMuClN0YXJ0IHlvdXIg ZnJlZSB0cmlhbCBvZiBBcHBEeW5hbWljcyBQcm8gdG9kYXkhCmh0dHA6Ly9wdWJhZHMuZy5kb3Vi bGVjbGljay5uZXQvZ2FtcGFkL2Nsaz9pZD00ODgwODgzMSZpdT0vNDE0MC9vc3RnLmNsa3Ryawpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMdHAtbGlzdCBt YWlsaW5nIGxpc3QKTHRwLWxpc3RAbGlzdHMuc291cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMu c291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL2x0cC1saXN0Cg==