From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 745976E22F for ; Tue, 28 Jul 2020 09:36:19 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Tue, 28 Jul 2020 11:35:40 +0200 Message-Id: <20200728093547.23682-11-zbigniew.kempczynski@intel.com> In-Reply-To: <20200728093547.23682-1-zbigniew.kempczynski@intel.com> References: <20200728093547.23682-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v10 10/17] tests/gem|kms: remove libdrm dependency (batch 2) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Chris Wilson List-ID: VXNlIGludGVsX2JiIC8gaW50ZWxfYnVmIHRvIHJlbW92ZSBsaWJkcm0gZGVwZW5kZW5jeS4KClRl c3RzIGNoYW5nZWQ6Ci0gZ2VtX3JlYWRfcmVhZF9zcGVlZAotIGdlbV9yZW5kZXJfY29weQotIGdl bV9yZW5kZXJfY29weV9yZWR1eAotIGdlbV9yZW5kZXJfbGluZWFyX2JsaXRzCi0gZ2VtX3JlbmRl cl90aWxlZF9ibGl0cwotIGdlbV9zdHJlc3MKLSBrbXNfYmlnX2ZiCi0ga21zX2N1cnNvcl9jcmMK ClJlbW92ZSB0cmFuc2l0aW9uYWwgcmVuZGVyY29weV9idWZtZ3IsIHdlIGRvbid0IG5lZWQgaXQg YW55bW9yZS4KClNpZ25lZC1vZmYtYnk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8emJpZ25pZXcu a2VtcGN6eW5za2lAaW50ZWwuY29tPgpDYzogRG9taW5payBHcnplZ29yemVrIDxkb21pbmlrLmdy emVnb3J6ZWtAaW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24u Y28udWs+Ci0tLQogbGliL01ha2VmaWxlLnNvdXJjZXMgICAgICAgICAgICAgICAgIHwgICAyIC0K IGxpYi9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAtCiBsaWIvcmVuZGVy Y29weV9idWZtZ3IuYyAgICAgICAgICAgICAgfCAxNzEgLS0tLS0tLS0tLS0tLS0tCiBsaWIvcmVu ZGVyY29weV9idWZtZ3IuaCAgICAgICAgICAgICAgfCAgMjggLS0tCiB0ZXN0cy9pOTE1L2dlbV9y ZWFkX3JlYWRfc3BlZWQuYyAgICAgfCAxNjAgKysrKysrKy0tLS0tLS0KIHRlc3RzL2k5MTUvZ2Vt X3JlbmRlcl9jb3B5LmMgICAgICAgICB8IDMxMyArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0K IHRlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5X3JlZHV4LmMgICB8ICA2NiArKystLS0KIHRlc3Rz L2k5MTUvZ2VtX3JlbmRlcl9saW5lYXJfYmxpdHMuYyB8ICA5MCArKystLS0tLQogdGVzdHMvaTkx NS9nZW1fcmVuZGVyX3RpbGVkX2JsaXRzLmMgIHwgIDg1ICsrKystLS0tCiB0ZXN0cy9pOTE1L2dl bV9zdHJlc3MuYyAgICAgICAgICAgICAgfCAyNDQgKysrKysrKysrKystLS0tLS0tLS0tCiB0ZXN0 cy9rbXNfYmlnX2ZiLmMgICAgICAgICAgICAgICAgICAgfCAgNTQgKysrLS0KIHRlc3RzL2ttc19j dXJzb3JfY3JjLmMgICAgICAgICAgICAgICB8ICA2MyArKystLS0KIDEyIGZpbGVzIGNoYW5nZWQs IDQ5OCBpbnNlcnRpb25zKCspLCA3NzkgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQg bGliL3JlbmRlcmNvcHlfYnVmbWdyLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBsaWIvcmVuZGVyY29w eV9idWZtZ3IuaAoKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzIGIvbGliL01ha2Vm aWxlLnNvdXJjZXMKaW5kZXggNDY0ZjViZTIuLjY3YjM4NjQ1IDEwMDY0NAotLS0gYS9saWIvTWFr ZWZpbGUuc291cmNlcworKysgYi9saWIvTWFrZWZpbGUuc291cmNlcwpAQCAtMTA3LDggKzEwNyw2 IEBAIGxpYl9zb3VyY2VfbGlzdCA9CSAJXAogCWdlbjdfcmVuZGVyLmgJCVwKIAlnZW44X3JlbmRl ci5oCQlcCiAJZ2VuOV9yZW5kZXIuaAkJXAotCXJlbmRlcmNvcHlfYnVmbWdyLmMJXAotCXJlbmRl cmNvcHlfYnVmbWdyLmgJXAogCXJlbmRlcmNvcHlfZ2VuNC5jCVwKIAlyZW5kZXJjb3B5X2dlbjYu YwlcCiAJcmVuZGVyY29weV9nZW43LmMJXApkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1aWxkIGIv bGliL21lc29uLmJ1aWxkCmluZGV4IDM0MTY5NmU1Li5mMWY1ZjdjYSAxMDA2NDQKLS0tIGEvbGli L21lc29uLmJ1aWxkCisrKyBiL2xpYi9tZXNvbi5idWlsZApAQCAtNDUsNyArNDUsNiBAQCBsaWJf c291cmNlcyA9IFsKIAknZ3B1X2NtZHMuYycsCiAJJ3JlbmRlcmNvcHlfaTkxNS5jJywKIAkncmVu ZGVyY29weV9pODMwLmMnLAotCSdyZW5kZXJjb3B5X2J1Zm1nci5jJywKIAkncmVuZGVyY29weV9n ZW40LmMnLAogCSdyZW5kZXJjb3B5X2dlbjYuYycsCiAJJ3JlbmRlcmNvcHlfZ2VuNy5jJywKZGlm ZiAtLWdpdCBhL2xpYi9yZW5kZXJjb3B5X2J1Zm1nci5jIGIvbGliL3JlbmRlcmNvcHlfYnVmbWdy LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjYjU4OGZhLi4wMDAwMDAwMAotLS0g YS9saWIvcmVuZGVyY29weV9idWZtZ3IuYworKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBA Ci0vKgotICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24KLSAqCi0gKiBQZXJt aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv YnRhaW5pbmcgYQotICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKLSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3 YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KLSAq IHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli dXRlLCBzdWJsaWNlbnNlLAotICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCi0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNo ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChp bmNsdWRpbmcgdGhlIG5leHQKLSAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKLSAqIFNvZnR3YXJlLgotICoK LSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G IEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLSAqIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBT SEFMTAotICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U SEVSIERFQUxJTkdTCi0gKiBJTiBUSEUgU09GVFdBUkUuCi0gKgotICovCi0KLSNpbmNsdWRlIDxz eXMvaW9jdGwuaD4KLSNpbmNsdWRlICJpZ3QuaCIKLSNpbmNsdWRlICJpZ3RfeDg2LmgiCi0jaW5j bHVkZSAicmVuZGVyY29weV9idWZtZ3IuaCIKLQotLyoqCi0gKiBTRUNUSU9OOnJlbmRlcmNvcHlf YnVmbWdyCi0gKiBAc2hvcnRfZGVzY3JpcHRpb246IFJlbmRlciBjb3B5IGJ1ZmZlciBtYW5hZ2Vy Ci0gKiBAdGl0bGU6IFJlbmRlciBjb3B5IGJ1Zm1ncgotICogQGluY2x1ZGU6IGlndC5oCi0gKgot ICogIyBSZW5kZXJjb3B5IGJ1ZmZlciBtYW5hZ2VyCi0gKgotICogUmVuZGVyY29weSBkZXBlbmRz IG9uIGxpYmRybSBhbmQgaWd0X2J1Ziwgc28gc29tZSBtaWRkbGUgbGF5ZXIgdG8gaW50ZWxfYnVm Ci0gKiBhbmQgYnVmX29wcyBpcyByZXF1aXJlZC4KLSAqCi0gKiB8WzwhLS0gbGFuZ3VhZ2U9ImMi IC0tPgotICogc3RydWN0IHJlbmRlcmNvcHlfYnVmbWdyICpibWdyOwotICogLi4uCi0gKiBibWdy ID0gcmVuZGVyY29weV9idWZtZ3JfY3JlYXRlKGZkLCBidWZtZ3IpOwotICogLi4uCi0gKiBpZ3Rf YnVmX2luaXQoYm1nciwgJmJ1ZiwgNTEyLCA1MTIsIDMyLCBJOTE1X1RJTElOR19YLCBmYWxzZSk7 Ci0gKiAuLi4KLSAqIGxpbmVhcl90b19pZ3RfYnVmKGJtZ3IsICZidWYsIGxpbmVhcik7Ci0gKiAu Li4KLSAqIGlndF9idWZfdG9fbGluZWFyKGJtZ3IsICZidWYsIGxpbmVhcik7Ci0gKiAuLi4KLSAq IHJlbmRlcmNvcHlfYnVmbWdyX2Rlc3Ryb3koYm1ncik7Ci0gKiBdfAotICovCi0KLXN0cnVjdCBy ZW5kZXJjb3B5X2J1Zm1nciB7Ci0JaW50IGZkOwotCWRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsK LQlzdHJ1Y3QgYnVmX29wcyAqYm9wczsKLX07Ci0KLXN0YXRpYyB2b2lkIF9faWd0X2J1Zl90b19p bnRlbF9idWYoc3RydWN0IGlndF9idWYgKmJ1Ziwgc3RydWN0IGludGVsX2J1ZiAqaWJ1ZikKLXsK LQlpYnVmLT5oYW5kbGUgPSBidWYtPmJvLT5oYW5kbGU7Ci0JaWJ1Zi0+c3VyZmFjZVswXS5zdHJp ZGUgPSBidWYtPnN1cmZhY2VbMF0uc3RyaWRlOwotCWlidWYtPnRpbGluZyA9IGJ1Zi0+dGlsaW5n OwotCWlidWYtPmJwcCA9IGJ1Zi0+YnBwOwotCWlidWYtPnN1cmZhY2VbMF0uc2l6ZSA9IGJ1Zi0+ c3VyZmFjZVswXS5zaXplOwotCWlidWYtPmNvbXByZXNzaW9uID0gYnVmLT5jb21wcmVzc2lvbjsK LQlpYnVmLT5jY3NbMF0ub2Zmc2V0ID0gYnVmLT5jY3NbMF0ub2Zmc2V0OwotCWlidWYtPmNjc1sw XS5zdHJpZGUgPSBidWYtPmNjc1swXS5zdHJpZGU7Ci19Ci0KLXZvaWQgaWd0X2J1Zl90b19saW5l YXIoc3RydWN0IHJlbmRlcmNvcHlfYnVmbWdyICpibWdyLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAot CQkgICAgICAgdWludDMyX3QgKmxpbmVhcikKLXsKLQlzdHJ1Y3QgaW50ZWxfYnVmIGlidWY7Ci0K LQlfX2lndF9idWZfdG9faW50ZWxfYnVmKGJ1ZiwgJmlidWYpOwotCi0JaW50ZWxfYnVmX3RvX2xp bmVhcihibWdyLT5ib3BzLCAmaWJ1ZiwgbGluZWFyKTsKLX0KLQotdm9pZCBsaW5lYXJfdG9faWd0 X2J1ZihzdHJ1Y3QgcmVuZGVyY29weV9idWZtZ3IgKmJtZ3IsIHN0cnVjdCBpZ3RfYnVmICpidWYs Ci0JCSAgICAgICB1aW50MzJfdCAqbGluZWFyKQotewotCXN0cnVjdCBpbnRlbF9idWYgaWJ1ZjsK LQotCV9faWd0X2J1Zl90b19pbnRlbF9idWYoYnVmLCAmaWJ1Zik7Ci0KLQlsaW5lYXJfdG9faW50 ZWxfYnVmKGJtZ3ItPmJvcHMsICZpYnVmLCBsaW5lYXIpOwotfQotCi1zdHJ1Y3QgcmVuZGVyY29w eV9idWZtZ3IgKgotcmVuZGVyY29weV9idWZtZ3JfY3JlYXRlKGludCBmZCwgZHJtX2ludGVsX2J1 Zm1nciAqYnVmbWdyKQotewotCXN0cnVjdCBidWZfb3BzICpib3BzOwotCXN0cnVjdCByZW5kZXJj b3B5X2J1Zm1nciAqYm1ncjsKLQotCWlndF9hc3NlcnQoYnVmbWdyKTsKLQotCWJvcHMgPSBidWZf b3BzX2NyZWF0ZShmZCk7Ci0JaWd0X2Fzc2VydChib3BzKTsKLQotCWJtZ3IgPSBjYWxsb2MoMSwg c2l6ZW9mKCpibWdyKSk7Ci0JaWd0X2Fzc2VydChibWdyKTsKLQotCWJtZ3ItPmZkID0gZmQ7Ci0J Ym1nci0+YnVmbWdyID0gYnVmbWdyOwotCWJtZ3ItPmJvcHMgPSBib3BzOwotCi0JcmV0dXJuIGJt Z3I7Ci19Ci0KLXZvaWQgcmVuZGVyY29weV9idWZtZ3JfZGVzdHJveShzdHJ1Y3QgcmVuZGVyY29w eV9idWZtZ3IgKmJtZ3IpCi17Ci0JaWd0X2Fzc2VydChibWdyKTsKLQlpZ3RfYXNzZXJ0KGJtZ3It PmJvcHMpOwotCi0JYnVmX29wc19kZXN0cm95KGJtZ3ItPmJvcHMpOwotCWZyZWUoYm1ncik7Ci19 Ci0KLWJvb2wgcmVuZGVyY29weV9idWZtZ3Jfc2V0X3NvZnR3YXJlX3RpbGluZyhzdHJ1Y3QgcmVu ZGVyY29weV9idWZtZ3IgKmJtZ3IsCi0JCQkJCSAgIHVpbnQzMl90IHRpbGluZywKLQkJCQkJICAg Ym9vbCB1c2Vfc29mdHdhcmVfdGlsaW5nKQotewotCXJldHVybiBidWZfb3BzX3NldF9zb2Z0d2Fy ZV90aWxpbmcoYm1nci0+Ym9wcywgdGlsaW5nLAotCQkJCQkgICB1c2Vfc29mdHdhcmVfdGlsaW5n KTsKLX0KLQotdm9pZCBpZ3RfYnVmX2luaXQoc3RydWN0IHJlbmRlcmNvcHlfYnVmbWdyICpibWdy LCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAotCQkgIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJw cCwKLQkJICB1aW50MzJfdCB0aWxpbmcsIHVpbnQzMl90IGNvbXByZXNzaW9uKQotewotCXVpbnQz Ml90IGRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChibWdyLT5mZCk7Ci0JaW50IGdlbmVyYXRp b249IGludGVsX2dlbihkZXZpZCk7Ci0Jc3RydWN0IGludGVsX2J1ZiBpYnVmOwotCWludCBzaXpl OwotCi0JbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpidWYpKTsKLQotCWJ1Zi0+c3VyZmFjZVswXS5z dHJpZGUgPSBBTElHTih3aWR0aCAqIChicHAgLyA4KSwgMTI4KTsKLQlidWYtPnN1cmZhY2VbMF0u c2l6ZSA9IGJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgKiBoZWlnaHQ7Ci0JYnVmLT50aWxpbmcgPSB0 aWxpbmc7Ci0JYnVmLT5icHAgPSBicHA7Ci0JYnVmLT5jb21wcmVzc2lvbiA9IGNvbXByZXNzaW9u OwotCi0Jc2l6ZSA9IGJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgKiBBTElHTihoZWlnaHQsIDMyKTsK LQotCWlmIChjb21wcmVzc2lvbikgewotCQlpbnQgY2NzX3dpZHRoID0gaWd0X2J1Zl9pbnRlbF9j Y3Nfd2lkdGgoZ2VuZXJhdGlvbiwgYnVmKTsKLQkJaW50IGNjc19oZWlnaHQgPSBpZ3RfYnVmX2lu dGVsX2Njc19oZWlnaHQoZ2VuZXJhdGlvbiwgYnVmKTsKLQotCQlidWYtPmNjc1swXS5vZmZzZXQg PSBidWYtPnN1cmZhY2VbMF0uc3RyaWRlICogQUxJR04oaGVpZ2h0LCAzMik7Ci0JCWJ1Zi0+Y2Nz WzBdLnN0cmlkZSA9IGNjc193aWR0aDsKLQotCQlzaXplID0gYnVmLT5jY3NbMF0ub2Zmc2V0ICsg Y2NzX3dpZHRoICogY2NzX2hlaWdodDsKLQl9Ci0KLQlidWYtPmJvID0gZHJtX2ludGVsX2JvX2Fs bG9jKGJtZ3ItPmJ1Zm1nciwgIiIsIHNpemUsIDQwOTYpOwotCi0JaW50ZWxfYnVmX2luaXRfdXNp bmdfaGFuZGxlKGJtZ3ItPmJvcHMsCi0JCQkJICAgIGJ1Zi0+Ym8tPmhhbmRsZSwKLQkJCQkgICAg JmlidWYsCi0JCQkJICAgIHdpZHRoLCBoZWlnaHQsIGJwcCwgMCwKLQkJCQkgICAgdGlsaW5nLCBj b21wcmVzc2lvbik7Ci0KLQlidWYtPmNjc1swXS5vZmZzZXQgPSBpYnVmLmNjc1swXS5vZmZzZXQ7 Ci0JYnVmLT5jY3NbMF0uc3RyaWRlID0gaWJ1Zi5jY3NbMF0uc3RyaWRlOwotfQpkaWZmIC0tZ2l0 IGEvbGliL3JlbmRlcmNvcHlfYnVmbWdyLmggYi9saWIvcmVuZGVyY29weV9idWZtZ3IuaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRlNTExOGMuLjAwMDAwMDAwCi0tLSBhL2xpYi9y ZW5kZXJjb3B5X2J1Zm1nci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotI2lmbmRl ZiBfX1JFTkRFUkNPUFlfQlVGTUdSX0hfXwotI2RlZmluZSBfX1JFTkRFUkNPUFlfQlVGTUdSX0hf XwotCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSAiaW50ZWxfYnVmb3BzLmgiCi0jaW5j bHVkZSAiaW50ZWxfYmF0Y2hidWZmZXIuaCIKLQotc3RydWN0IHJlbmRlcmNvcHlfYnVmbWdyOwot Ci1zdHJ1Y3QgcmVuZGVyY29weV9idWZtZ3IgKnJlbmRlcmNvcHlfYnVmbWdyX2NyZWF0ZShpbnQg ZmQsCi0JCQkJCQkgICBkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IpOwotdm9pZCByZW5kZXJjb3B5 X2J1Zm1ncl9kZXN0cm95KHN0cnVjdCByZW5kZXJjb3B5X2J1Zm1nciAqYm1ncik7Ci0KLWJvb2wg cmVuZGVyY29weV9idWZtZ3Jfc2V0X3NvZnR3YXJlX3RpbGluZyhzdHJ1Y3QgcmVuZGVyY29weV9i dWZtZ3IgKmJtZ3IsCi0JCQkJCSAgIHVpbnQzMl90IHRpbGluZywKLQkJCQkJICAgYm9vbCB1c2Vf c29mdHdhcmVfdGlsaW5nKTsKLQotdm9pZCBpZ3RfYnVmX3RvX2xpbmVhcihzdHJ1Y3QgcmVuZGVy Y29weV9idWZtZ3IgKmJtZ3IsIHN0cnVjdCBpZ3RfYnVmICpidWYsCi0JCSAgICAgICB1aW50MzJf dCAqbGluZWFyKTsKLQotdm9pZCBsaW5lYXJfdG9faWd0X2J1ZihzdHJ1Y3QgcmVuZGVyY29weV9i dWZtZ3IgKmJtZ3IsIHN0cnVjdCBpZ3RfYnVmICpidWYsCi0JCSAgICAgICB1aW50MzJfdCAqbGlu ZWFyKTsKLQotdm9pZCBpZ3RfYnVmX2luaXQoc3RydWN0IHJlbmRlcmNvcHlfYnVmbWdyICpibWdy LCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAotCQkgIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJw cCwKLQkJICB1aW50MzJfdCB0aWxpbmcsIHVpbnQzMl90IGNvbXByZXNzaW9uKTsKLQotI2VuZGlm CmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9yZWFkX3JlYWRfc3BlZWQuYyBiL3Rlc3RzL2k5 MTUvZ2VtX3JlYWRfcmVhZF9zcGVlZC5jCmluZGV4IDA2YjY2OTM1Li4wMjNmOTk5MCAxMDA2NDQK LS0tIGEvdGVzdHMvaTkxNS9nZW1fcmVhZF9yZWFkX3NwZWVkLmMKKysrIGIvdGVzdHMvaTkxNS9n ZW1fcmVhZF9yZWFkX3NwZWVkLmMKQEAgLTQ2LDY2ICs0Niw2MCBAQAogCiBJR1RfVEVTVF9ERVND UklQVElPTigiVGVzdCBzcGVlZCBvZiBjb25jdXJyZW50IHJlYWRzIGJldHdlZW4gZW5naW5lcy4i KTsKIAorI2RlZmluZSBCQlNJWkUgNDA5NgogaWd0X3JlbmRlcl9jb3B5ZnVuY190IHJlbmRlcmNv cHk7Ci1zdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOwogaW50IHdpZHRoLCBoZWlnaHQ7 CiAKLXN0YXRpYyBkcm1faW50ZWxfYm8gKnJjc19jb3B5X2JvKGRybV9pbnRlbF9ibyAqZHN0LCBk cm1faW50ZWxfYm8gKnNyYykKK3N0YXRpYyB2b2lkIHNldF90b19ndHRfZG9tYWluKHN0cnVjdCBp bnRlbF9idWYgKmJ1ZiwgaW50IHdyaXRpbmcpCiB7Ci0Jc3RydWN0IGlndF9idWYgZCA9IHsKLQkJ LmJvID0gZHN0LAotCQkubnVtX3RpbGVzID0gd2lkdGggKiBoZWlnaHQgKiA0LAotCQkuc3VyZmFj ZVswXSA9IHsKLQkJCS5zaXplID0gd2lkdGggKiBoZWlnaHQgKiA0LCAuc3RyaWRlID0gd2lkdGgg KiA0LAotCQl9LAotCQkuYnBwID0gMzIsCi0JfSwgcyA9IHsKLQkJLmJvID0gc3JjLAotCQkubnVt X3RpbGVzID0gd2lkdGggKiBoZWlnaHQgKiA0LAotCQkuc3VyZmFjZVswXSA9IHsKLQkJCS5zaXpl ID0gd2lkdGggKiBoZWlnaHQgKiA0LCAuc3RyaWRlID0gd2lkdGggKiA0LAotCQl9LAotCQkuYnBw ID0gMzIsCi0JfTsKLQl1aW50MzJfdCBzd2l6emxlOwotCWRybV9pbnRlbF9ibyAqYm8gPSBiYXRj aC0+Ym87Ci0JZHJtX2ludGVsX2JvX3JlZmVyZW5jZShibyk7Ci0KLQlkcm1faW50ZWxfYm9fZ2V0 X3RpbGluZyhkc3QsICZkLnRpbGluZywgJnN3aXp6bGUpOwotCWRybV9pbnRlbF9ib19nZXRfdGls aW5nKHNyYywgJnMudGlsaW5nLCAmc3dpenpsZSk7Ci0KLQlyZW5kZXJjb3B5KGJhdGNoLCBOVUxM LAotCQkgICAmcywgMCwgMCwKKwlpbnQgaTkxNSA9IGJ1Zl9vcHNfZ2V0X2ZkKGJ1Zi0+Ym9wcyk7 CisKKwlnZW1fc2V0X2RvbWFpbihpOTE1LCBidWYtPmhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX0dU VCwKKwkJICAgICAgIHdyaXRpbmcgPyBJOTE1X0dFTV9ET01BSU5fR1RUIDogMCk7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgaW50ZWxfYmIgKnJjc19jb3B5X2JvKHN0cnVjdCBpbnRlbF9idWYgKmRzdCwK KwkJCQkgICAgc3RydWN0IGludGVsX2J1ZiAqc3JjKQoreworCWludCBpOTE1ID0gYnVmX29wc19n ZXRfZmQoZHN0LT5ib3BzKTsKKwlzdHJ1Y3QgaW50ZWxfYmIgKmliYiA9IGludGVsX2JiX2NyZWF0 ZShpOTE1LCBCQlNJWkUpOworCisJLyogZW5mb3JjZSBiYXRjaCB3b24ndCBiZSByZWNyZWF0ZWQg YWZ0ZXIgZXhlY3V0aW9uICovCisJaW50ZWxfYmJfcmVmKGliYik7CisKKwlyZW5kZXJjb3B5KGli YiwgMCwKKwkJICAgc3JjLCAwLCAwLAogCQkgICB3aWR0aCwgaGVpZ2h0LAotCQkgICAmZCwgMCwg MCk7CisJCSAgIGRzdCwgMCwgMCk7CiAKLQlyZXR1cm4gYm87CisJcmV0dXJuIGliYjsKIH0KIAot c3RhdGljIGRybV9pbnRlbF9ibyAqYmNzX2NvcHlfYm8oZHJtX2ludGVsX2JvICpkc3QsIGRybV9p bnRlbF9ibyAqc3JjKQorc3RhdGljIHN0cnVjdCBpbnRlbF9iYiAqYmNzX2NvcHlfYm8oc3RydWN0 IGludGVsX2J1ZiAqZHN0LAorCQkJCSAgICBzdHJ1Y3QgaW50ZWxfYnVmICpzcmMpCiB7Ci0JZHJt X2ludGVsX2JvICpibyA9IGJhdGNoLT5ibzsKLQlkcm1faW50ZWxfYm9fcmVmZXJlbmNlKGJvKTsK KwlpbnQgaTkxNSA9IGJ1Zl9vcHNfZ2V0X2ZkKGRzdC0+Ym9wcyk7CisJc3RydWN0IGludGVsX2Ji ICppYmIgPSBpbnRlbF9iYl9jcmVhdGUoaTkxNSwgQkJTSVpFKTsKIAotCWludGVsX2JsdF9jb3B5 KGJhdGNoLAotCQkgICAgICAgc3JjLCAwLCAwLCA0KndpZHRoLAotCQkgICAgICAgZHN0LCAwLCAw LCA0KndpZHRoLAotCQkgICAgICAgd2lkdGgsIGhlaWdodCwgMzIpOworCWludGVsX2JiX3JlZihp YmIpOwogCi0JcmV0dXJuIGJvOworCWludGVsX2JiX2JsdF9jb3B5KGliYiwKKwkJCSAgc3JjLCAw LCAwLCA0KndpZHRoLAorCQkJICBkc3QsIDAsIDAsIDQqd2lkdGgsCisJCQkgIHdpZHRoLCBoZWln aHQsIDMyKTsKKworCXJldHVybiBpYmI7CiB9CiAKLXN0YXRpYyB2b2lkCi1zZXRfYm8oZHJtX2lu dGVsX2JvICpibywgdWludDMyX3QgdmFsKQorc3RhdGljIHZvaWQgc2V0X2JvKHN0cnVjdCBpbnRl bF9idWYgKmJ1ZiwgdWludDMyX3QgdmFsKQogewogCWludCBzaXplID0gd2lkdGggKiBoZWlnaHQ7 CiAJdWludDMyX3QgKnZhZGRyOwogCi0JZG9fb3JfZGllKGRybV9pbnRlbF9ib19tYXAoYm8sIDEp KTsKLQl2YWRkciA9IGJvLT52aXJ0dWFsOworCXZhZGRyID0gaW50ZWxfYnVmX2RldmljZV9tYXAo YnVmLCB0cnVlKTsKIAl3aGlsZSAoc2l6ZS0tKQogCQkqdmFkZHIrKyA9IHZhbDsKLQlkcm1faW50 ZWxfYm9fdW5tYXAoYm8pOworCWludGVsX2J1Zl91bm1hcChidWYpOwogfQogCiBzdGF0aWMgZG91 YmxlIGVsYXBzZWQoY29uc3Qgc3RydWN0IHRpbWVzcGVjICpzdGFydCwKQEAgLTExNSw1NCArMTA5 LDU5IEBAIHN0YXRpYyBkb3VibGUgZWxhcHNlZChjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnN0YXJ0 LAogCXJldHVybiAoMWU2KihlbmQtPnR2X3NlYyAtIHN0YXJ0LT50dl9zZWMpICsgKGVuZC0+dHZf bnNlYyAtIHN0YXJ0LT50dl9uc2VjKS8xMDAwKS9sb29wOwogfQogCi1zdGF0aWMgZHJtX2ludGVs X2JvICpjcmVhdGVfYm8oZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAotCQkJICAgICAgIGNvbnN0 IGNoYXIgKm5hbWUpCitzdGF0aWMgc3RydWN0IGludGVsX2J1ZiAqY3JlYXRlX2JvKHN0cnVjdCBi dWZfb3BzICpib3BzLCBjb25zdCBjaGFyICpuYW1lKQogewogCXVpbnQzMl90IHRpbGluZ19tb2Rl ID0gSTkxNV9USUxJTkdfWDsKLQl1bnNpZ25lZCBsb25nIHBpdGNoOwotCXJldHVybiBkcm1faW50 ZWxfYm9fYWxsb2NfdGlsZWQoYnVmbWdyLCBuYW1lLAotCQkJCQl3aWR0aCwgaGVpZ2h0LCA0LAot CQkJCQkmdGlsaW5nX21vZGUsICZwaXRjaCwgMCk7CisJc3RydWN0IGludGVsX2J1ZiAqYnVmOwor CisJYnVmID0gaW50ZWxfYnVmX2NyZWF0ZShib3BzLCB3aWR0aCwgaGVpZ2h0LCAzMiwgMCwgdGls aW5nX21vZGUsCisJCQkgICAgICAgSTkxNV9DT01QUkVTU0lPTl9OT05FKTsKKwlpbnRlbF9idWZf c2V0X25hbWUoYnVmLCBuYW1lKTsKKworCXJldHVybiBidWY7CiB9CiAKLXN0YXRpYyB2b2lkIHJ1 bihkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsIGludCBfd2lkdGgsIGludCBfaGVpZ2h0LAorc3Rh dGljIHZvaWQgcnVuKHN0cnVjdCBidWZfb3BzICpib3BzLCBpbnQgX3dpZHRoLCBpbnQgX2hlaWdo dCwKIAkJYm9vbCB3cml0ZV9iY3MsIGJvb2wgd3JpdGVfcmNzKQogewotCWRybV9pbnRlbF9ibyAq c3JjID0gTlVMTCwgKmJjcyA9IE5VTEwsICpyY3MgPSBOVUxMOwotCWRybV9pbnRlbF9ibyAqYmNz X2JhdGNoLCAqcmNzX2JhdGNoOworCXN0cnVjdCBpbnRlbF9idWYgKnNyYyA9IE5VTEwsICpiY3Mg PSBOVUxMLCAqcmNzID0gTlVMTDsKKwlzdHJ1Y3QgaW50ZWxfYmIgKmJjc19pYmIgPSBOVUxMLCAq cmNzX2liYiA9IE5VTEw7CiAJc3RydWN0IHRpbWVzcGVjIHN0YXJ0LCBlbmQ7Ci0JaW50IGxvb3Bz ID0gMTAwMDsKKwlpbnQgbG9vcHMgPSAxOwogCiAJd2lkdGggPSBfd2lkdGg7CiAJaGVpZ2h0ID0g X2hlaWdodDsKIAotCXNyYyA9IGNyZWF0ZV9ibyhidWZtZ3IsICJzcmMiKTsKLQliY3MgPSBjcmVh dGVfYm8oYnVmbWdyLCAiYmNzIik7Ci0JcmNzID0gY3JlYXRlX2JvKGJ1Zm1nciwgInJjcyIpOwor CWlndF9pbmZvKCJ3aWR0aDogJWQsIGhlaWdodDogJWRcbiIsIHdpZHRoLCBoZWlnaHQpOworCisJ c3JjID0gY3JlYXRlX2JvKGJvcHMsICJzcmMiKTsKKwliY3MgPSBjcmVhdGVfYm8oYm9wcywgImJj cyIpOworCXJjcyA9IGNyZWF0ZV9ibyhib3BzLCAicmNzIik7CiAKIAlzZXRfYm8oc3JjLCAweGRl YWRiZWVmKTsKIAogCWlmICh3cml0ZV9iY3MpIHsKLQkJYmNzX2JhdGNoID0gYmNzX2NvcHlfYm8o c3JjLCBiY3MpOworCQliY3NfaWJiID0gYmNzX2NvcHlfYm8oc3JjLCBiY3MpOwogCX0gZWxzZSB7 Ci0JCWJjc19iYXRjaCA9IGJjc19jb3B5X2JvKGJjcywgc3JjKTsKKwkJYmNzX2liYiA9IGJjc19j b3B5X2JvKGJjcywgc3JjKTsKIAl9CiAJaWYgKHdyaXRlX3JjcykgewotCQlyY3NfYmF0Y2ggPSBy Y3NfY29weV9ibyhzcmMsIHJjcyk7CisJCXJjc19pYmIgPSByY3NfY29weV9ibyhzcmMsIHJjcyk7 CiAJfSBlbHNlIHsKLQkJcmNzX2JhdGNoID0gcmNzX2NvcHlfYm8ocmNzLCBzcmMpOworCQlyY3Nf aWJiID0gcmNzX2NvcHlfYm8ocmNzLCBzcmMpOwogCX0KIAotCWRybV9pbnRlbF9ib191bnJlZmVy ZW5jZShyY3MpOwotCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShiY3MpOworCXNldF90b19ndHRf ZG9tYWluKHNyYywgdHJ1ZSk7CiAKLQlkcm1faW50ZWxfZ2VtX2JvX3N0YXJ0X2d0dF9hY2Nlc3Mo c3JjLCB0cnVlKTsKIAljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnN0YXJ0KTsKIAlm b3IgKGludCBpID0gMDsgaSA8IGxvb3BzOyBpKyspIHsKLQkJZHJtX2ludGVsX2dlbV9ib19jb250 ZXh0X2V4ZWMocmNzX2JhdGNoLCBOVUxMLCA0MDk2LCBJOTE1X0VYRUNfUkVOREVSKTsKLQkJZHJt X2ludGVsX2dlbV9ib19jb250ZXh0X2V4ZWMoYmNzX2JhdGNoLCBOVUxMLCA0MDk2LCBJOTE1X0VY RUNfQkxUKTsKKwkJaW50ZWxfYmJfZXhlYyhyY3NfaWJiLCBpbnRlbF9iYl9vZmZzZXQocmNzX2li YiksCisJCQkgICAgICBJOTE1X0VYRUNfUkVOREVSLCBmYWxzZSk7CisJCWludGVsX2JiX2V4ZWMo YmNzX2liYiwgaW50ZWxfYmJfb2Zmc2V0KGJjc19pYmIpLAorCQkJICAgICAgSTkxNV9FWEVDX0JM VCwgZmFsc2UpOwogCX0KLQlkcm1faW50ZWxfZ2VtX2JvX3N0YXJ0X2d0dF9hY2Nlc3Moc3JjLCB0 cnVlKTsKKworCXNldF90b19ndHRfZG9tYWluKHNyYywgdHJ1ZSk7CiAJY2xvY2tfZ2V0dGltZShD TE9DS19NT05PVE9OSUMsICZlbmQpOwogCiAJaWd0X2luZm8oIlRpbWUgdG8gJXMtJXMgJWR4JWQg WyVka106CQklNy4zZsK1c1xuIiwKQEAgLTE3MSwxNiArMTcwLDE5IEBAIHN0YXRpYyB2b2lkIHJ1 bihkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsIGludCBfd2lkdGgsIGludCBfaGVpZ2h0LAogCQkg d2lkdGgsIGhlaWdodCwgNCp3aWR0aCpoZWlnaHQvMTAyNCwKIAkJIGVsYXBzZWQoJnN0YXJ0LCAm ZW5kLCBsb29wcykpOwogCi0JZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKHJjc19iYXRjaCk7Ci0J ZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGJjc19iYXRjaCk7Ci0KLQlkcm1faW50ZWxfYm9fdW5y ZWZlcmVuY2Uoc3JjKTsKKwlpbnRlbF9iYl91bnJlZihyY3NfaWJiKTsKKwlpbnRlbF9iYl9kZXN0 cm95KHJjc19pYmIpOworCWludGVsX2JiX3VucmVmKGJjc19pYmIpOworCWludGVsX2JiX2Rlc3Ry b3koYmNzX2liYik7CisJaW50ZWxfYnVmX2Rlc3Ryb3koc3JjKTsKKwlpbnRlbF9idWZfZGVzdHJv eShyY3MpOworCWludGVsX2J1Zl9kZXN0cm95KGJjcyk7CiB9CiAKIGlndF9tYWluCiB7Ci0JY29u c3QgaW50IHNpemVzW10gPSB7MSwgMTI4LCAyNTYsIDUxMiwgMTAyNCwgMjA0OCwgNDA5NiwgODE5 MiwgMH07Ci0JZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyID0gTlVMTDsKKwljb25zdCBpbnQgc2l6 ZXNbXSA9IHsxMjgsIDI1NiwgNTEyLCAxMDI0LCAyMDQ4LCA0MDk2LCA4MTkyLCAwfTsKKwlzdHJ1 Y3QgYnVmX29wcyAqYm9wcyA9IE5VTEw7CiAJaW50IGZkLCBpOwogCiAJaWd0X2ZpeHR1cmUgewpA QCAtMTk1LDIyICsxOTcsMjQgQEAgaWd0X21haW4KIAkJcmVuZGVyY29weSA9IGlndF9nZXRfcmVu ZGVyX2NvcHlmdW5jKGRldmlkKTsKIAkJaWd0X3JlcXVpcmUocmVuZGVyY29weSk7CiAKLQkJYnVm bWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChmZCwgNDA5Nik7Ci0JCWlndF9hc3NlcnQo YnVmbWdyKTsKLQotCQliYXRjaCA9ICBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhidWZtZ3IsIGRl dmlkKTsKKwkJYm9wcyA9IGJ1Zl9vcHNfY3JlYXRlKGZkKTsKIAogCQlnZW1fc3VibWlzc2lvbl9w cmludF9tZXRob2QoZmQpOwogCX0KIAogCWZvciAoaSA9IDA7IHNpemVzW2ldICE9IDA7IGkrKykg ewogCQlpZ3Rfc3VidGVzdF9mKCJyZWFkLXJlYWQtJWR4JWQiLCBzaXplc1tpXSwgc2l6ZXNbaV0p Ci0JCQlydW4oYnVmbWdyLCBzaXplc1tpXSwgc2l6ZXNbaV0sIGZhbHNlLCBmYWxzZSk7CisJCQly dW4oYm9wcywgc2l6ZXNbaV0sIHNpemVzW2ldLCBmYWxzZSwgZmFsc2UpOwogCQlpZ3Rfc3VidGVz dF9mKCJyZWFkLXdyaXRlLSVkeCVkIiwgc2l6ZXNbaV0sIHNpemVzW2ldKQotCQkJcnVuKGJ1Zm1n ciwgc2l6ZXNbaV0sIHNpemVzW2ldLCBmYWxzZSwgdHJ1ZSk7CisJCQlydW4oYm9wcywgc2l6ZXNb aV0sIHNpemVzW2ldLCBmYWxzZSwgdHJ1ZSk7CiAJCWlndF9zdWJ0ZXN0X2YoIndyaXRlLXJlYWQt JWR4JWQiLCBzaXplc1tpXSwgc2l6ZXNbaV0pCi0JCQlydW4oYnVmbWdyLCBzaXplc1tpXSwgc2l6 ZXNbaV0sIHRydWUsIGZhbHNlKTsKKwkJCXJ1bihib3BzLCBzaXplc1tpXSwgc2l6ZXNbaV0sIHRy dWUsIGZhbHNlKTsKIAkJaWd0X3N1YnRlc3RfZigid3JpdGUtd3JpdGUtJWR4JWQiLCBzaXplc1tp XSwgc2l6ZXNbaV0pCi0JCQlydW4oYnVmbWdyLCBzaXplc1tpXSwgc2l6ZXNbaV0sIHRydWUsIHRy dWUpOworCQkJcnVuKGJvcHMsIHNpemVzW2ldLCBzaXplc1tpXSwgdHJ1ZSwgdHJ1ZSk7CisJfQor CisJaWd0X2ZpeHR1cmUgeworCQlidWZfb3BzX2Rlc3Ryb3koYm9wcyk7CisJCWNsb3NlKGZkKTsK IAl9CiB9CmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jIGIvdGVzdHMv aTkxNS9nZW1fcmVuZGVyX2NvcHkuYwppbmRleCAxZTFlNzliOS4uN2Y0MjVkY2QgMTAwNjQ0Ci0t LSBhL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fcmVu ZGVyX2NvcHkuYwpAQCAtNDcsOCArNDcsNyBAQAogI2luY2x1ZGUgImk5MTUvZ2VtLmgiCiAjaW5j bHVkZSAiaWd0LmgiCiAjaW5jbHVkZSAiaWd0X3g4Ni5oIgotI2luY2x1ZGUgImludGVsX2J1Zm1n ci5oIgotI2luY2x1ZGUgInJlbmRlcmNvcHlfYnVmbWdyLmgiCisjaW5jbHVkZSAiaW50ZWxfYnVm b3BzLmgiCiAKIElHVF9URVNUX0RFU0NSSVBUSU9OKCJCYXNpYyB0ZXN0IGZvciB0aGUgcmVuZGVy X2NvcHkoKSBmdW5jdGlvbi4iKTsKIApAQCAtNTgsMTEgKzU3LDEwIEBAIElHVF9URVNUX0RFU0NS SVBUSU9OKCJCYXNpYyB0ZXN0IGZvciB0aGUgcmVuZGVyX2NvcHkoKSBmdW5jdGlvbi4iKTsKIHR5 cGVkZWYgc3RydWN0IHsKIAlpbnQgZHJtX2ZkOwogCXVpbnQzMl90IGRldmlkOwotCWRybV9pbnRl bF9idWZtZ3IgKmJ1Zm1ncjsKLQlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOworCXN0 cnVjdCBidWZfb3BzICpib3BzOworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOwogCWlndF9yZW5kZXJf Y29weWZ1bmNfdCByZW5kZXJfY29weTsKIAlpZ3RfdmVib3hfY29weWZ1bmNfdCB2ZWJveF9jb3B5 OwotCXN0cnVjdCByZW5kZXJjb3B5X2J1Zm1nciAqYm1ncjsKIH0gZGF0YV90Owogc3RhdGljIGlu dCBvcHRfZHVtcF9wbmcgPSBmYWxzZTsKIHN0YXRpYyBpbnQgY2hlY2tfYWxsX3BpeGVscyA9IGZh bHNlOwpAQCAtODcsNTkgKzg1LDMyIEBAIHN0YXRpYyB2b2lkICphbGxvY19hbGlnbmVkKHVpbnQ2 NF90IHNpemUpCiB9CiAKIHN0YXRpYyB2b2lkCi1jb3B5X2Zyb21fbGluZWFyX2J1ZihkYXRhX3Qg KmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpzcmMsIHN0cnVjdCBpZ3RfYnVmICpkc3QpCitjb3B5X2Zy b21fbGluZWFyX2J1ZihkYXRhX3QgKmRhdGEsIHN0cnVjdCBpbnRlbF9idWYgKnNyYywgc3RydWN0 IGludGVsX2J1ZiAqZHN0KQogewotCXZvaWQgKmxpbmVhcjsKLQogCWlndF9hc3NlcnQoc3JjLT50 aWxpbmcgPT0gSTkxNV9USUxJTkdfTk9ORSk7CiAKLQlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1f ZmQsIHNyYy0+Ym8tPmhhbmRsZSwKKwlnZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIHNyYy0+ aGFuZGxlLAogCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0NQVSwgMCk7Ci0JbGluZWFyID0gX19n ZW1fbW1hcF9vZmZzZXRfX2NwdShkYXRhLT5kcm1fZmQsIHNyYy0+Ym8tPmhhbmRsZSwgMCwKLQkJ CQkJc3JjLT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsKLQlpZiAoIWxpbmVhcikKLQkJbGluZWFyID0g Z2VtX21tYXBfX2NwdShkYXRhLT5kcm1fZmQsIHNyYy0+Ym8tPmhhbmRsZSwgMCwKLQkJCQkgICAg ICAgc3JjLT5iby0+c2l6ZSwgUFJPVF9SRUFEKTsKLQotCWxpbmVhcl90b19pZ3RfYnVmKGRhdGEt PmJtZ3IsIGRzdCwgbGluZWFyKTsKLQotCW11bm1hcChsaW5lYXIsIHNyYy0+Ym8tPnNpemUpOwot fQotCi1zdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YV90ICpkYXRhLCBz dHJ1Y3QgaWd0X2J1ZiAqYnVmLAotCQkJCSAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCi17Ci0J Y2Fpcm9fc3VyZmFjZV90ICpzdXJmYWNlOwotCWNhaXJvX3N0YXR1c190IHJldDsKLQl2b2lkICps aW5lYXI7Ci0KLQlsaW5lYXIgPSBhbGxvY19hbGlnbmVkKGJ1Zi0+Ym8tPnNpemUpOwotCWlndF9i dWZfdG9fbGluZWFyKGRhdGEtPmJtZ3IsIGJ1ZiwgbGluZWFyKTsKKwlpbnRlbF9idWZfY3B1X21h cChzcmMsIGZhbHNlKTsKIAotCXN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9m b3JfZGF0YShsaW5lYXIsCi0JCQkJCQkgICAgICBDQUlST19GT1JNQVRfUkdCMjQsCi0JCQkJCQkg ICAgICBpZ3RfYnVmX3dpZHRoKGJ1ZiksCi0JCQkJCQkgICAgICBpZ3RfYnVmX2hlaWdodChidWYp LAotCQkJCQkJICAgICAgYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSk7Ci0JcmV0ID0gY2Fpcm9fc3Vy ZmFjZV93cml0ZV90b19wbmcoc3VyZmFjZSwgbWFrZV9maWxlbmFtZShmaWxlbmFtZSkpOwotCWln dF9hc3NlcnQocmV0ID09IENBSVJPX1NUQVRVU19TVUNDRVNTKTsKLQljYWlyb19zdXJmYWNlX2Rl c3Ryb3koc3VyZmFjZSk7CisJbGluZWFyX3RvX2ludGVsX2J1ZihkYXRhLT5ib3BzLCBkc3QsIHNy Yy0+cHRyKTsKIAotCWZyZWUobGluZWFyKTsKKwlpbnRlbF9idWZfdW5tYXAoc3JjKTsKIH0KIAot c3RhdGljIHZvaWQgKmxpbmVhcl9jb3B5X2NjcyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVm ICpidWYpCitzdGF0aWMgdm9pZCAqbGluZWFyX2NvcHlfY2NzKGRhdGFfdCAqZGF0YSwgc3RydWN0 IGludGVsX2J1ZiAqYnVmKQogewogCXZvaWQgKmNjc19kYXRhLCAqbGluZWFyOwogCWludCBnZW4g PSBpbnRlbF9nZW4oZGF0YS0+ZGV2aWQpOwotCWludCBjY3Nfc2l6ZSA9IGlndF9idWZfaW50ZWxf Y2NzX3dpZHRoKGdlbiwgYnVmKSAqCi0JCWlndF9idWZfaW50ZWxfY2NzX2hlaWdodChnZW4sIGJ1 Zik7CisJaW50IGNjc19zaXplID0gaW50ZWxfYnVmX2Njc193aWR0aChnZW4sIGJ1ZikgKgorCQlp bnRlbF9idWZfY2NzX2hlaWdodChnZW4sIGJ1Zik7CisJaW50IGJvX3NpemUgPSBpbnRlbF9idWZf Ym9fc2l6ZShidWYpOwogCiAJY2NzX2RhdGEgPSBhbGxvY19hbGlnbmVkKGNjc19zaXplKTsKLQls aW5lYXIgPSBhbGxvY19hbGlnbmVkKGJ1Zi0+Ym8tPnNpemUpOwotCW1lbXNldChsaW5lYXIsIDAs IGJ1Zi0+Ym8tPnNpemUpOworCWxpbmVhciA9IGFsbG9jX2FsaWduZWQoYm9fc2l6ZSk7CisJbWVt c2V0KGxpbmVhciwgMCwgYm9fc2l6ZSk7CiAKLQlpZ3RfYnVmX3RvX2xpbmVhcihkYXRhLT5ibWdy LCBidWYsIGxpbmVhcik7CisJaW50ZWxfYnVmX3RvX2xpbmVhcihkYXRhLT5ib3BzLCBidWYsIGxp bmVhcik7CiAJaWd0X21lbWNweV9mcm9tX3djKGNjc19kYXRhLCBsaW5lYXIgKyBidWYtPmNjc1sw XS5vZmZzZXQsIGNjc19zaXplKTsKIAogCWZyZWUobGluZWFyKTsKQEAgLTE0NywzMSArMTE4LDcg QEAgc3RhdGljIHZvaWQgKmxpbmVhcl9jb3B5X2NjcyhkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3Rf YnVmICpidWYpCiAJcmV0dXJuIGNjc19kYXRhOwogfQogCi1zdGF0aWMgdm9pZCBzY3JhdGNoX2J1 Zl9jY3Nfd3JpdGVfdG9fcG5nKGRhdGFfdCAqZGF0YSwKLQkJCQkJIHN0cnVjdCBpZ3RfYnVmICpi dWYsCi0JCQkJCSBjb25zdCBjaGFyICpmaWxlbmFtZSkKLXsKLQljYWlyb19zdXJmYWNlX3QgKnN1 cmZhY2U7Ci0JY2Fpcm9fc3RhdHVzX3QgcmV0OwotCXZvaWQgKmxpbmVhcjsKLQlpbnQgZ2VuID0g aW50ZWxfZ2VuKGRhdGEtPmRldmlkKTsKLQl1bnNpZ25lZCBpbnQgY2NzX3dpZHRoID0gaWd0X2J1 Zl9pbnRlbF9jY3Nfd2lkdGgoZ2VuLCBidWYpOwotCXVuc2lnbmVkIGludCBjY3NfaGVpZ2h0ID0g aWd0X2J1Zl9pbnRlbF9jY3NfaGVpZ2h0KGdlbiwgYnVmKTsKLQotCWxpbmVhciA9IGxpbmVhcl9j b3B5X2NjcyhkYXRhLCBidWYpOwotCi0Jc3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3Jl YXRlX2Zvcl9kYXRhKGxpbmVhciwKLQkJCQkJCSAgICAgIENBSVJPX0ZPUk1BVF9BOCwKLQkJCQkJ CSAgICAgIGNjc193aWR0aCwgY2NzX2hlaWdodCwKLQkJCQkJCSAgICAgIGJ1Zi0+Y2NzWzBdLnN0 cmlkZSk7Ci0JcmV0ID0gY2Fpcm9fc3VyZmFjZV93cml0ZV90b19wbmcoc3VyZmFjZSwgbWFrZV9m aWxlbmFtZShmaWxlbmFtZSkpOwotCWlndF9hc3NlcnQocmV0ID09IENBSVJPX1NUQVRVU19TVUND RVNTKTsKLQljYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7Ci0KLQlmcmVlKGxpbmVhcik7 Ci19Ci0KLXN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2RyYXdfcGF0dGVybihkYXRhX3QgKmRhdGEs IHN0cnVjdCBpZ3RfYnVmICpidWYsCitzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9kcmF3X3BhdHRl cm4oZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCiAJCQkJICAgICBpbnQgeCwg aW50IHksIGludCB3LCBpbnQgaCwKIAkJCQkgICAgIGludCBjeCwgaW50IGN5LCBpbnQgY3csIGlu dCBjaCwKIAkJCQkgICAgIGJvb2wgdXNlX2FsdGVybmF0ZV9jb2xvcnMpCkBAIC0xODEsMTIgKzEy OCwxMiBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9kcmF3X3BhdHRlcm4oZGF0YV90ICpkYXRh LCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAogCWNhaXJvX3QgKmNyOwogCXZvaWQgKmxpbmVhcjsKIAot CWxpbmVhciA9IGFsbG9jX2FsaWduZWQoYnVmLT5iby0+c2l6ZSk7CisJbGluZWFyID0gYWxsb2Nf YWxpZ25lZChidWYtPnN1cmZhY2VbMF0uc2l6ZSk7CiAKIAlzdXJmYWNlID0gY2Fpcm9faW1hZ2Vf c3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEobGluZWFyLAogCQkJCQkJICAgICAgQ0FJUk9fRk9STUFU X1JHQjI0LAotCQkJCQkJICAgICAgaWd0X2J1Zl93aWR0aChidWYpLAotCQkJCQkJICAgICAgaWd0 X2J1Zl9oZWlnaHQoYnVmKSwKKwkJCQkJCSAgICAgIGludGVsX2J1Zl93aWR0aChidWYpLAorCQkJ CQkJICAgICAgaW50ZWxfYnVmX2hlaWdodChidWYpLAogCQkJCQkJICAgICAgYnVmLT5zdXJmYWNl WzBdLnN0cmlkZSk7CiAKIAljciA9IGNhaXJvX2NyZWF0ZShzdXJmYWNlKTsKQEAgLTIyMiwyNCAr MTY5LDI0IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2RyYXdfcGF0dGVybihkYXRhX3QgKmRh dGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsCiAKIAljYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFj ZSk7CiAKLQlsaW5lYXJfdG9faWd0X2J1ZihkYXRhLT5ibWdyLCBidWYsIGxpbmVhcik7CisJbGlu ZWFyX3RvX2ludGVsX2J1ZihkYXRhLT5ib3BzLCBidWYsIGxpbmVhcik7CiAKIAlmcmVlKGxpbmVh cik7CiB9CiAKIHN0YXRpYyB2b2lkCiBzY3JhdGNoX2J1Zl9jb3B5KGRhdGFfdCAqZGF0YSwKLQkJ IHN0cnVjdCBpZ3RfYnVmICpzcmMsIGludCBzeCwgaW50IHN5LCBpbnQgdywgaW50IGgsCi0JCSBz dHJ1Y3QgaWd0X2J1ZiAqZHN0LCBpbnQgZHgsIGludCBkeSkKKwkJIHN0cnVjdCBpbnRlbF9idWYg KnNyYywgaW50IHN4LCBpbnQgc3ksIGludCB3LCBpbnQgaCwKKwkJIHN0cnVjdCBpbnRlbF9idWYg KmRzdCwgaW50IGR4LCBpbnQgZHkpCiB7Ci0JaW50IHdpZHRoID0gaWd0X2J1Zl93aWR0aChkc3Qp OwotCWludCBoZWlnaHQgID0gaWd0X2J1Zl9oZWlnaHQoZHN0KTsKKwlpbnQgd2lkdGggPSBpbnRl bF9idWZfd2lkdGgoZHN0KTsKKwlpbnQgaGVpZ2h0ID0gaW50ZWxfYnVmX2hlaWdodChkc3QpOwog CXVpbnQzMl90ICpsaW5lYXJfZHN0OwogCXVpbnQzMl90ICpsaW5lYXJfc3JjOwogCi0JaWd0X2Fz c2VydF9lcShpZ3RfYnVmX3dpZHRoKGRzdCksIGlndF9idWZfd2lkdGgoc3JjKSk7Ci0JaWd0X2Fz c2VydF9lcShpZ3RfYnVmX2hlaWdodChkc3QpLCBpZ3RfYnVmX2hlaWdodChzcmMpKTsKLQlpZ3Rf YXNzZXJ0X2VxKGRzdC0+Ym8tPnNpemUsIHNyYy0+Ym8tPnNpemUpOworCWlndF9hc3NlcnRfZXEo aW50ZWxfYnVmX3dpZHRoKGRzdCksIGludGVsX2J1Zl93aWR0aChzcmMpKTsKKwlpZ3RfYXNzZXJ0 X2VxKGludGVsX2J1Zl9oZWlnaHQoZHN0KSwgaW50ZWxfYnVmX2hlaWdodChzcmMpKTsKKwlpZ3Rf YXNzZXJ0X2VxKGludGVsX2J1Zl9ib19zaXplKGRzdCksIGludGVsX2J1Zl9ib19zaXplKHNyYykp OwogCWlndF9hc3NlcnRfZXEoZHN0LT5icHAsIHNyYy0+YnBwKTsKIAogCXcgPSBtaW4odywgd2lk dGggLSBzeCk7CkBAIC0yNDgsMTAgKzE5NSwxMCBAQCBzY3JhdGNoX2J1Zl9jb3B5KGRhdGFfdCAq ZGF0YSwKIAloID0gbWluKGgsIGhlaWdodCAtIHN5KTsKIAloID0gbWluKGgsIGhlaWdodCAtIGR5 KTsKIAotCWxpbmVhcl9kc3QgPSBhbGxvY19hbGlnbmVkKGRzdC0+Ym8tPnNpemUpOwotCWxpbmVh cl9zcmMgPSBhbGxvY19hbGlnbmVkKHNyYy0+Ym8tPnNpemUpOwotCWlndF9idWZfdG9fbGluZWFy KGRhdGEtPmJtZ3IsIHNyYywgbGluZWFyX3NyYyk7Ci0JaWd0X2J1Zl90b19saW5lYXIoZGF0YS0+ Ym1nciwgZHN0LCBsaW5lYXJfZHN0KTsKKwlsaW5lYXJfZHN0ID0gYWxsb2NfYWxpZ25lZChpbnRl bF9idWZfYm9fc2l6ZShkc3QpKTsKKwlsaW5lYXJfc3JjID0gYWxsb2NfYWxpZ25lZChpbnRlbF9i dWZfYm9fc2l6ZShzcmMpKTsKKwlpbnRlbF9idWZfdG9fbGluZWFyKGRhdGEtPmJvcHMsIHNyYywg bGluZWFyX3NyYyk7CisJaW50ZWxfYnVmX3RvX2xpbmVhcihkYXRhLT5ib3BzLCBkc3QsIGxpbmVh cl9kc3QpOwogCiAJZm9yIChpbnQgeSA9IDA7IHkgPCBoOyB5KyspIHsKIAkJbWVtY3B5KCZsaW5l YXJfZHN0WyhkeSt5KSAqIHdpZHRoICsgZHhdLApAQCAtMjYwLDUwICsyMDcsNTAgQEAgc2NyYXRj aF9idWZfY29weShkYXRhX3QgKmRhdGEsCiAJfQogCWZyZWUobGluZWFyX3NyYyk7CiAKLQlsaW5l YXJfdG9faWd0X2J1ZihkYXRhLT5ibWdyLCBkc3QsIGxpbmVhcl9kc3QpOworCWxpbmVhcl90b19p bnRlbF9idWYoZGF0YS0+Ym9wcywgZHN0LCBsaW5lYXJfZHN0KTsKIAlmcmVlKGxpbmVhcl9kc3Qp OwogfQogCi1zdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0KGRhdGFfdCAqZGF0YSwgc3RydWN0 IGlndF9idWYgKmJ1ZiwKK3N0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQoZGF0YV90ICpkYXRh LCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCiAJCQkgICAgIGludCB3aWR0aCwgaW50IGhlaWdodCwK IAkJCSAgICAgdWludDMyX3QgcmVxX3RpbGluZywKIAkJCSAgICAgZW51bSBpOTE1X2NvbXByZXNz aW9uIGNvbXByZXNzaW9uKQogewogCWludCBicHAgPSAzMjsKIAotCWlndF9idWZfaW5pdChkYXRh LT5ibWdyLCBidWYsIHdpZHRoLCBoZWlnaHQsIGJwcCwgcmVxX3RpbGluZywKLQkJICAgICBjb21w cmVzc2lvbik7CisJaW50ZWxfYnVmX2luaXQoZGF0YS0+Ym9wcywgYnVmLCB3aWR0aCwgaGVpZ2h0 LCBicHAsIDAsCisJCSAgICAgICByZXFfdGlsaW5nLCBjb21wcmVzc2lvbik7CiAKLQlpZ3RfYXNz ZXJ0KGlndF9idWZfd2lkdGgoYnVmKSA9PSB3aWR0aCk7Ci0JaWd0X2Fzc2VydChpZ3RfYnVmX2hl aWdodChidWYpID09IGhlaWdodCk7CisJaWd0X2Fzc2VydChpbnRlbF9idWZfd2lkdGgoYnVmKSA9 PSB3aWR0aCk7CisJaWd0X2Fzc2VydChpbnRlbF9idWZfaGVpZ2h0KGJ1ZikgPT0gaGVpZ2h0KTsK IH0KIAotc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfZmluaShzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQor c3RhdGljIHZvaWQgc2NyYXRjaF9idWZfZmluaShzdHJ1Y3QgaW50ZWxfYnVmICpidWYpCiB7Ci0J ZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGJ1Zi0+Ym8pOworCWludGVsX2J1Zl9jbG9zZShidWYt PmJvcHMsIGJ1Zik7CiB9CiAKIHN0YXRpYyB2b2lkCiBzY3JhdGNoX2J1Zl9jaGVjayhkYXRhX3Qg KmRhdGEsCi0JCSAgc3RydWN0IGlndF9idWYgKmJ1ZiwKLQkJICBzdHJ1Y3QgaWd0X2J1ZiAqcmVm LAorCQkgIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwKKwkJICBzdHJ1Y3QgaW50ZWxfYnVmICpyZWYs CiAJCSAgaW50IHgsIGludCB5KQogewotCWludCB3aWR0aCA9IGlndF9idWZfd2lkdGgoYnVmKTsK KwlpbnQgd2lkdGggPSBpbnRlbF9idWZfd2lkdGgoYnVmKTsKIAl1aW50MzJfdCBidWZfdmFsLCBy ZWZfdmFsOwogCXVpbnQzMl90ICpsaW5lYXI7CiAKLQlpZ3RfYXNzZXJ0X2VxKGlndF9idWZfd2lk dGgoYnVmKSwgaWd0X2J1Zl93aWR0aChyZWYpKTsKLQlpZ3RfYXNzZXJ0X2VxKGlndF9idWZfaGVp Z2h0KGJ1ZiksIGlndF9idWZfaGVpZ2h0KHJlZikpOwotCWlndF9hc3NlcnRfZXEoYnVmLT5iby0+ c2l6ZSwgcmVmLT5iby0+c2l6ZSk7CisJaWd0X2Fzc2VydF9lcShpbnRlbF9idWZfd2lkdGgoYnVm KSwgaW50ZWxfYnVmX3dpZHRoKHJlZikpOworCWlndF9hc3NlcnRfZXEoaW50ZWxfYnVmX2hlaWdo dChidWYpLCBpbnRlbF9idWZfaGVpZ2h0KHJlZikpOworCWlndF9hc3NlcnRfZXEoYnVmLT5zdXJm YWNlWzBdLnNpemUsIHJlZi0+c3VyZmFjZVswXS5zaXplKTsKIAotCWxpbmVhciA9IGFsbG9jX2Fs aWduZWQoYnVmLT5iby0+c2l6ZSk7Ci0JaWd0X2J1Zl90b19saW5lYXIoZGF0YS0+Ym1nciwgYnVm LCBsaW5lYXIpOworCWxpbmVhciA9IGFsbG9jX2FsaWduZWQoYnVmLT5zdXJmYWNlWzBdLnNpemUp OworCWludGVsX2J1Zl90b19saW5lYXIoZGF0YS0+Ym9wcywgYnVmLCBsaW5lYXIpOwogCWJ1Zl92 YWwgPSBsaW5lYXJbeSAqIHdpZHRoICsgeF07CiAJZnJlZShsaW5lYXIpOwogCi0JbGluZWFyID0g YWxsb2NfYWxpZ25lZChyZWYtPmJvLT5zaXplKTsKLQlpZ3RfYnVmX3RvX2xpbmVhcihkYXRhLT5i bWdyLCBidWYsIGxpbmVhcik7CisJbGluZWFyID0gYWxsb2NfYWxpZ25lZChyZWYtPnN1cmZhY2Vb MF0uc2l6ZSk7CisJaW50ZWxfYnVmX3RvX2xpbmVhcihkYXRhLT5ib3BzLCBidWYsIGxpbmVhcik7 CiAJcmVmX3ZhbCA9IGxpbmVhclt5ICogd2lkdGggKyB4XTsKIAlmcmVlKGxpbmVhcik7CiAKQEAg LTMxNCwyMSArMjYxLDIxIEBAIHNjcmF0Y2hfYnVmX2NoZWNrKGRhdGFfdCAqZGF0YSwKIAogc3Rh dGljIHZvaWQKIHNjcmF0Y2hfYnVmX2NoZWNrX2FsbChkYXRhX3QgKmRhdGEsCi0JCSAgICAgIHN0 cnVjdCBpZ3RfYnVmICpidWYsCi0JCSAgICAgIHN0cnVjdCBpZ3RfYnVmICpyZWYpCisJCSAgICAg IHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwKKwkJICAgICAgc3RydWN0IGludGVsX2J1ZiAqcmVmKQog ewotCWludCB3aWR0aCA9IGlndF9idWZfd2lkdGgoYnVmKTsKLQlpbnQgaGVpZ2h0ICA9IGlndF9i dWZfaGVpZ2h0KGJ1Zik7CisJaW50IHdpZHRoID0gaW50ZWxfYnVmX3dpZHRoKGJ1Zik7CisJaW50 IGhlaWdodCA9IGludGVsX2J1Zl9oZWlnaHQoYnVmKTsKIAl1aW50MzJfdCAqbGluZWFyX2J1Ziwg KmxpbmVhcl9yZWY7CiAKLQlpZ3RfYXNzZXJ0X2VxKGlndF9idWZfd2lkdGgoYnVmKSwgaWd0X2J1 Zl93aWR0aChyZWYpKTsKLQlpZ3RfYXNzZXJ0X2VxKGlndF9idWZfaGVpZ2h0KGJ1ZiksIGlndF9i dWZfaGVpZ2h0KHJlZikpOwotCWlndF9hc3NlcnRfZXEoYnVmLT5iby0+c2l6ZSwgcmVmLT5iby0+ c2l6ZSk7CisJaWd0X2Fzc2VydF9lcShpbnRlbF9idWZfd2lkdGgoYnVmKSwgaW50ZWxfYnVmX3dp ZHRoKHJlZikpOworCWlndF9hc3NlcnRfZXEoaW50ZWxfYnVmX2hlaWdodChidWYpLCBpbnRlbF9i dWZfaGVpZ2h0KHJlZikpOworCWlndF9hc3NlcnRfZXEoYnVmLT5zdXJmYWNlWzBdLnNpemUsIHJl Zi0+c3VyZmFjZVswXS5zaXplKTsKIAotCWxpbmVhcl9idWYgPSBhbGxvY19hbGlnbmVkKGJ1Zi0+ Ym8tPnNpemUpOwotCWxpbmVhcl9yZWYgPSBhbGxvY19hbGlnbmVkKHJlZi0+Ym8tPnNpemUpOwot CWlndF9idWZfdG9fbGluZWFyKGRhdGEtPmJtZ3IsIGJ1ZiwgbGluZWFyX2J1Zik7Ci0JaWd0X2J1 Zl90b19saW5lYXIoZGF0YS0+Ym1nciwgcmVmLCBsaW5lYXJfcmVmKTsKKwlsaW5lYXJfYnVmID0g YWxsb2NfYWxpZ25lZChidWYtPnN1cmZhY2VbMF0uc2l6ZSk7CisJbGluZWFyX3JlZiA9IGFsbG9j X2FsaWduZWQocmVmLT5zdXJmYWNlWzBdLnNpemUpOworCWludGVsX2J1Zl90b19saW5lYXIoZGF0 YS0+Ym9wcywgYnVmLCBsaW5lYXJfYnVmKTsKKwlpbnRlbF9idWZfdG9fbGluZWFyKGRhdGEtPmJv cHMsIHJlZiwgbGluZWFyX3JlZik7CiAKIAlmb3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsr KSB7CiAJCWZvciAoaW50IHggPSAwOyB4IDwgd2lkdGg7IHgrKykgewpAQCAtMzQ2LDExICsyOTMs MTEgQEAgc2NyYXRjaF9idWZfY2hlY2tfYWxsKGRhdGFfdCAqZGF0YSwKIH0KIAogc3RhdGljIHZv aWQgc2NyYXRjaF9idWZfY2NzX2NoZWNrKGRhdGFfdCAqZGF0YSwKLQkJCQkgIHN0cnVjdCBpZ3Rf YnVmICpidWYpCisJCQkJICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYpCiB7CiAJaW50IGdlbiA9IGlu dGVsX2dlbihkYXRhLT5kZXZpZCk7Ci0JaW50IGNjc19zaXplID0gaWd0X2J1Zl9pbnRlbF9jY3Nf d2lkdGgoZ2VuLCBidWYpICoKLQkJaWd0X2J1Zl9pbnRlbF9jY3NfaGVpZ2h0KGdlbiwgYnVmKTsK KwlpbnQgY2NzX3NpemUgPSBpbnRlbF9idWZfY2NzX3dpZHRoKGdlbiwgYnVmKSAqCisJCWludGVs X2J1Zl9jY3NfaGVpZ2h0KGdlbiwgYnVmKTsKIAl1aW50OF90ICpsaW5lYXI7CiAJaW50IGk7CiAK QEAgLTM2OCwyNiArMzE1LDIyIEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2Njc19jaGVjayhk YXRhX3QgKmRhdGEsCiB9CiAKIHN0YXRpYyB2b2lkCi1kdW1wX2lndF9idWZfdG9fZmlsZShkYXRh X3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorZHVt cF9pbnRlbF9idWZfdG9fZmlsZShkYXRhX3QgKmRhdGEsIHN0cnVjdCBpbnRlbF9idWYgKmJ1Ziwg Y29uc3QgY2hhciAqZmlsZW5hbWUpCiB7CiAJRklMRSAqb3V0OwotCXZvaWQgKmxpbmVhcjsKKwl2 b2lkICpwdHI7CisJdWludDMyX3Qgc2l6ZSA9IGludGVsX2J1Zl9ib19zaXplKGJ1Zik7CiAKLQln ZW1fc2V0X2RvbWFpbihkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwKKwlnZW1fc2V0X2Rv bWFpbihkYXRhLT5kcm1fZmQsIGJ1Zi0+aGFuZGxlLAogCQkgICAgICAgSTkxNV9HRU1fRE9NQUlO X0NQVSwgMCk7CisJcHRyID0gZ2VtX21tYXBfX2NwdV9jb2hlcmVudChkYXRhLT5kcm1fZmQsIGJ1 Zi0+aGFuZGxlLCAwLCBzaXplLCBQUk9UX1JFQUQpOwogCi0JbGluZWFyID0gX19nZW1fbW1hcF9v ZmZzZXRfX2NwdShkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwgMCwKLQkJCQkJYnVmLT5i by0+c2l6ZSwgUFJPVF9SRUFEKTsKLQlpZiAoIWxpbmVhcikKLQkJbGluZWFyID0gZ2VtX21tYXBf X2NwdShkYXRhLT5kcm1fZmQsIGJ1Zi0+Ym8tPmhhbmRsZSwgMCwKLQkJCQkgICAgICAgYnVmLT5i by0+c2l6ZSwgUFJPVF9SRUFEKTsKIAlvdXQgPSBmb3BlbihmaWxlbmFtZSwgIndiIik7CiAJaWd0 X2Fzc2VydChvdXQpOwotCWZ3cml0ZShsaW5lYXIsIGJ1Zi0+Ym8tPnNpemUsIDEsIG91dCk7CisJ ZndyaXRlKHB0ciwgc2l6ZSwgMSwgb3V0KTsKIAlmY2xvc2Uob3V0KTsKIAotCW11bm1hcChsaW5l YXIsIGJ1Zi0+Ym8tPnNpemUpOwotCisJbXVubWFwKHB0ciwgc2l6ZSk7CiB9CiAKICNkZWZpbmUg U09VUkNFX01JWEVEX1RJTEVECTEKQEAgLTM5OCw5ICszNDEsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0 KGRhdGFfdCAqZGF0YSwgdWludDMyX3Qgc3JjX3RpbGluZywgdWludDMyX3QgZHN0X3RpbGluZywK IAkJIGVudW0gaTkxNV9jb21wcmVzc2lvbiBkc3RfY29tcHJlc3Npb24sCiAJCSBpbnQgZmxhZ3Mp CiB7Ci0Jc3RydWN0IGlndF9idWYgcmVmLCBzcmNfdGlsZWQsIHNyY19jY3MsIGRzdF9jY3MsIGRz dDsKKwlzdHJ1Y3QgaW50ZWxfYnVmIHJlZiwgc3JjX3RpbGVkLCBzcmNfY2NzLCBkc3RfY2NzLCBk c3Q7CiAJc3RydWN0IHsKLQkJc3RydWN0IGlndF9idWYgYnVmOworCQlzdHJ1Y3QgaW50ZWxfYnVm IGJ1ZjsKIAkJY29uc3QgY2hhciAqZmlsZW5hbWU7CiAJCXVpbnQzMl90IHRpbGluZzsKIAkJaW50 IHgsIHk7CkBAIC00MjYsNyArMzY5LDYgQEAgc3RhdGljIHZvaWQgdGVzdChkYXRhX3QgKmRhdGEs IHVpbnQzMl90IHNyY190aWxpbmcsIHVpbnQzMl90IGRzdF90aWxpbmcsCiAJCQkueCA9IDEsIC55 ID0gMSwKIAkJfSwKIAl9OwotCWludCBvcHRfZHVtcF9hdWIgPSBpZ3RfYXViX2R1bXBfZW5hYmxl ZCgpOwogCWludCBudW1fc3JjID0gQVJSQVlfU0laRShzcmMpOwogCWNvbnN0IGJvb2wgc3JjX21p eGVkX3RpbGVkID0gZmxhZ3MgJiBTT1VSQ0VfTUlYRURfVElMRUQ7CiAJY29uc3QgYm9vbCBzcmNf Y29tcHJlc3NlZCA9IHNyY19jb21wcmVzc2lvbiAhPSBJOTE1X0NPTVBSRVNTSU9OX05PTkU7CkBA IC00OTUsMTggKzQzNywxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0KGRhdGFfdCAqZGF0YSwgdWludDMy X3Qgc3JjX3RpbGluZywgdWludDMyX3QgZHN0X3RpbGluZywKIAogCWlmIChvcHRfZHVtcF9wbmcp IHsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3JjOyBpKyspCi0JCQlzY3JhdGNoX2J1Zl93 cml0ZV90b19wbmcoZGF0YSwgJnNyY1tpXS5idWYsIHNyY1tpXS5maWxlbmFtZSk7CisJCQlpbnRl bF9idWZfd3JpdGVfdG9fcG5nKCZzcmNbaV0uYnVmLAorCQkJCQkgICAgICAgbWFrZV9maWxlbmFt ZShzcmNbaV0uZmlsZW5hbWUpKTsKIAkJaWYgKCFzcmNfbWl4ZWRfdGlsZWQpCi0JCQlzY3JhdGNo X2J1Zl93cml0ZV90b19wbmcoZGF0YSwgJnNyY190aWxlZCwKLQkJCQkJCSAic291cmNlLXRpbGVk LnBuZyIpOwotCQlzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YSwgJmRzdCwgImRlc3RpbmF0 aW9uLnBuZyIpOwotCQlzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YSwgJnJlZiwgInJlZmVy ZW5jZS5wbmciKTsKLQl9Ci0KLQlpZiAob3B0X2R1bXBfYXViKSB7Ci0JCWRybV9pbnRlbF9idWZt Z3JfZ2VtX3NldF9hdWJfZmlsZW5hbWUoZGF0YS0+YnVmbWdyLAotCQkJCQkJICAgICAgInJlbmRl cmNvcHkuYXViIik7Ci0JCWRybV9pbnRlbF9idWZtZ3JfZ2VtX3NldF9hdWJfZHVtcChkYXRhLT5i dWZtZ3IsIHRydWUpOworCQkJaW50ZWxfYnVmX3dyaXRlX3RvX3BuZygmc3JjX3RpbGVkLAorCQkJ CQkgICAgICAgbWFrZV9maWxlbmFtZSgic291cmNlLXRpbGVkLnBuZyIpKTsKKwkJaW50ZWxfYnVm X3dyaXRlX3RvX3BuZygmZHN0LCBtYWtlX2ZpbGVuYW1lKCJkZXN0aW5hdGlvbi5wbmciKSk7CisJ CWludGVsX2J1Zl93cml0ZV90b19wbmcoJnJlZiwgbWFrZV9maWxlbmFtZSgicmVmZXJlbmNlLnBu ZyIpKTsKIAl9CiAKIAkvKiBUaGlzIHdpbGwgY29weSB0aGUgc3JjIHRvIHRoZSBtaWQgcG9pbnQg b2YgdGhlIGRzdCBidWZmZXIuIFByZXN1bWFibHkKQEAgLTUxOSw3NSArNDU2LDc2IEBAIHN0YXRp YyB2b2lkIHRlc3QoZGF0YV90ICpkYXRhLCB1aW50MzJfdCBzcmNfdGlsaW5nLCB1aW50MzJfdCBk c3RfdGlsaW5nLAogCSAqLwogCWlmIChzcmNfbWl4ZWRfdGlsZWQpIHsKIAkJaWYgKGRzdF9jb21w cmVzc2VkKQotCQkJZGF0YS0+cmVuZGVyX2NvcHkoZGF0YS0+YmF0Y2gsIE5VTEwsCisJCQlkYXRh LT5yZW5kZXJfY29weShkYXRhLT5pYmIsIDAsCiAJCQkJCSAgJmRzdCwgMCwgMCwgV0lEVEgsIEhF SUdIVCwKIAkJCQkJICAmZHN0X2NjcywgMCwgMCk7CiAKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBu dW1fc3JjOyBpKyspCi0JCQlkYXRhLT5yZW5kZXJfY29weShkYXRhLT5iYXRjaCwgTlVMTCwKKwkJ Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1fc3JjOyBpKyspIHsKKwkJCWRhdGEtPnJlbmRlcl9jb3B5 KGRhdGEtPmliYiwgMCwKIAkJCQkJICAmc3JjW2ldLmJ1ZiwKIAkJCQkJICBXSURUSC80LCBIRUlH SFQvNCwgV0lEVEgvMi0yLCBIRUlHSFQvMi0yLAogCQkJCQkgIGRzdF9jb21wcmVzc2VkID8gJmRz dF9jY3MgOiAmZHN0LAogCQkJCQkgIHNyY1tpXS54LCBzcmNbaV0ueSk7CisJCX0KIAogCQlpZiAo ZHN0X2NvbXByZXNzZWQpCi0JCQlkYXRhLT5yZW5kZXJfY29weShkYXRhLT5iYXRjaCwgTlVMTCwK KwkJCWRhdGEtPnJlbmRlcl9jb3B5KGRhdGEtPmliYiwgMCwKIAkJCQkJICAmZHN0X2NjcywgMCwg MCwgV0lEVEgsIEhFSUdIVCwKIAkJCQkJICAmZHN0LCAwLCAwKTsKIAogCX0gZWxzZSB7CiAJCWlm IChzcmNfY29tcHJlc3Npb24gPT0gSTkxNV9DT01QUkVTU0lPTl9SRU5ERVIpIHsKLQkJCWRhdGEt PnJlbmRlcl9jb3B5KGRhdGEtPmJhdGNoLCBOVUxMLAorCQkJZGF0YS0+cmVuZGVyX2NvcHkoZGF0 YS0+aWJiLCAwLAogCQkJCQkgICZzcmNfdGlsZWQsIDAsIDAsIFdJRFRILCBIRUlHSFQsCiAJCQkJ CSAgJnNyY19jY3MsCiAJCQkJCSAgMCwgMCk7CiAJCQlpZiAoZHVtcF9jb21wcmVzc2VkX3NyY19i dWYpIHsKLQkJCQlkdW1wX2lndF9idWZfdG9fZmlsZShkYXRhLCAmc3JjX3RpbGVkLAotCQkJCQkJ ICAgICAicmVuZGVyLXNyY190aWxlZC5iaW4iKTsKLQkJCQlkdW1wX2lndF9idWZfdG9fZmlsZShk YXRhLCAmc3JjX2NjcywKLQkJCQkJCSAgICAgInJlbmRlci1zcmNfY2NzLmJpbiIpOworCQkJCWR1 bXBfaW50ZWxfYnVmX3RvX2ZpbGUoZGF0YSwgJnNyY190aWxlZCwKKwkJCQkJCSAgICAgICAicmVu ZGVyLXNyY190aWxlZC5iaW4iKTsKKwkJCQlkdW1wX2ludGVsX2J1Zl90b19maWxlKGRhdGEsICZz cmNfY2NzLAorCQkJCQkJICAgICAgICJyZW5kZXItc3JjX2Njcy5iaW4iKTsKIAkJCX0KIAkJfSBl bHNlIGlmIChzcmNfY29tcHJlc3Npb24gPT0gSTkxNV9DT01QUkVTU0lPTl9NRURJQSkgewotCQkJ ZGF0YS0+dmVib3hfY29weShkYXRhLT5iYXRjaCwKKwkJCWRhdGEtPnZlYm94X2NvcHkoZGF0YS0+ aWJiLAogCQkJCQkgJnNyY190aWxlZCwgV0lEVEgsIEhFSUdIVCwKIAkJCQkJICZzcmNfY2NzKTsK IAkJCWlmIChkdW1wX2NvbXByZXNzZWRfc3JjX2J1ZikgewotCQkJCWR1bXBfaWd0X2J1Zl90b19m aWxlKGRhdGEsICZzcmNfdGlsZWQsCi0JCQkJCQkgICAgICJ2ZWJveC1zcmNfdGlsZWQuYmluIik7 Ci0JCQkJZHVtcF9pZ3RfYnVmX3RvX2ZpbGUoZGF0YSwgJnNyY19jY3MsCi0JCQkJCQkgICAgICJ2 ZWJveC1zcmNfY2NzLmJpbiIpOworCQkJCWR1bXBfaW50ZWxfYnVmX3RvX2ZpbGUoZGF0YSwgJnNy Y190aWxlZCwKKwkJCQkJCSAgICAgICAidmVib3gtc3JjX3RpbGVkLmJpbiIpOworCQkJCWR1bXBf aW50ZWxfYnVmX3RvX2ZpbGUoZGF0YSwgJnNyY19jY3MsCisJCQkJCQkgICAgICAgInZlYm94LXNy Y19jY3MuYmluIik7CiAJCQl9CiAJCX0KIAogCQlpZiAoZHN0X2NvbXByZXNzaW9uID09IEk5MTVf Q09NUFJFU1NJT05fUkVOREVSKSB7Ci0JCQlkYXRhLT5yZW5kZXJfY29weShkYXRhLT5iYXRjaCwg TlVMTCwKKwkJCWRhdGEtPnJlbmRlcl9jb3B5KGRhdGEtPmliYiwgMCwKIAkJCQkJICBzcmNfY29t cHJlc3NlZCA/ICZzcmNfY2NzIDogJnNyY190aWxlZCwKIAkJCQkJICAwLCAwLCBXSURUSCwgSEVJ R0hULAogCQkJCQkgICZkc3RfY2NzLAogCQkJCQkgIDAsIDApOwogCi0JCQlkYXRhLT5yZW5kZXJf Y29weShkYXRhLT5iYXRjaCwgTlVMTCwKKwkJCWRhdGEtPnJlbmRlcl9jb3B5KGRhdGEtPmliYiwg MCwKIAkJCQkJICAmZHN0X2NjcywKIAkJCQkJICAwLCAwLCBXSURUSCwgSEVJR0hULAogCQkJCQkg ICZkc3QsCiAJCQkJCSAgMCwgMCk7CiAJCX0gZWxzZSBpZiAoZHN0X2NvbXByZXNzaW9uID09IEk5 MTVfQ09NUFJFU1NJT05fTUVESUEpIHsKLQkJCWRhdGEtPnZlYm94X2NvcHkoZGF0YS0+YmF0Y2gs CisJCQlkYXRhLT52ZWJveF9jb3B5KGRhdGEtPmliYiwKIAkJCQkJIHNyY19jb21wcmVzc2VkID8g JnNyY19jY3MgOiAmc3JjX3RpbGVkLAogCQkJCQkgV0lEVEgsIEhFSUdIVCwKIAkJCQkJICZkc3Rf Y2NzKTsKIAotCQkJZGF0YS0+dmVib3hfY29weShkYXRhLT5iYXRjaCwKKwkJCWRhdGEtPnZlYm94 X2NvcHkoZGF0YS0+aWJiLAogCQkJCQkgJmRzdF9jY3MsCiAJCQkJCSBXSURUSCwgSEVJR0hULAog CQkJCQkgJmRzdCk7CiAJCX0gZWxzZSBpZiAoZm9yY2VfdmVib3hfZHN0X2NvcHkpIHsKLQkJCWRh dGEtPnZlYm94X2NvcHkoZGF0YS0+YmF0Y2gsCisJCQlkYXRhLT52ZWJveF9jb3B5KGRhdGEtPmli YiwKIAkJCQkJIHNyY19jb21wcmVzc2VkID8gJnNyY19jY3MgOiAmc3JjX3RpbGVkLAogCQkJCQkg V0lEVEgsIEhFSUdIVCwKIAkJCQkJICZkc3QpOwogCQl9IGVsc2UgewotCQkJZGF0YS0+cmVuZGVy X2NvcHkoZGF0YS0+YmF0Y2gsIE5VTEwsCisJCQlkYXRhLT5yZW5kZXJfY29weShkYXRhLT5pYmIs IDAsCiAJCQkJCSAgc3JjX2NvbXByZXNzZWQgPyAmc3JjX2NjcyA6ICZzcmNfdGlsZWQsCiAJCQkJ CSAgMCwgMCwgV0lEVEgsIEhFSUdIVCwKIAkJCQkJICAmZHN0LApAQCAtNTk2LDI5ICs1MzQsMjIg QEAgc3RhdGljIHZvaWQgdGVzdChkYXRhX3QgKmRhdGEsIHVpbnQzMl90IHNyY190aWxpbmcsIHVp bnQzMl90IGRzdF90aWxpbmcsCiAJfQogCiAJaWYgKG9wdF9kdW1wX3BuZyl7Ci0JCXNjcmF0Y2hf YnVmX3dyaXRlX3RvX3BuZyhkYXRhLCAmZHN0LCAicmVzdWx0LnBuZyIpOworCQlpbnRlbF9idWZf d3JpdGVfdG9fcG5nKCZkc3QsIG1ha2VfZmlsZW5hbWUoInJlc3VsdC5wbmciKSk7CiAJCWlmIChz cmNfY29tcHJlc3NlZCkgewotCQkJc2NyYXRjaF9idWZfd3JpdGVfdG9fcG5nKGRhdGEsICZzcmNf Y2NzLAotCQkJCQkJICJjb21wcmVzc2VkLXNyYy5wbmciKTsKLQkJCXNjcmF0Y2hfYnVmX2Njc193 cml0ZV90b19wbmcoZGF0YSwgJnNyY19jY3MsCi0JCQkJCQkgICAgICJjb21wcmVzc2VkLXNyYy1j Y3MucG5nIik7CisJCQlpbnRlbF9idWZfd3JpdGVfdG9fcG5nKCZzcmNfY2NzLAorCQkJCQkgICAg ICAgbWFrZV9maWxlbmFtZSgiY29tcHJlc3NlZC1zcmMucG5nIikpOworCQkJaW50ZWxfYnVmX3dy aXRlX2F1eF90b19wbmcoJnNyY19jY3MsCisJCQkJCQkgICAiY29tcHJlc3NlZC1zcmMtY2NzLnBu ZyIpOwogCQl9CiAJCWlmIChkc3RfY29tcHJlc3NlZCkgewotCQkJc2NyYXRjaF9idWZfd3JpdGVf dG9fcG5nKGRhdGEsICZkc3RfY2NzLAotCQkJCQkJICJjb21wcmVzc2VkLWRzdC5wbmciKTsKLQkJ CXNjcmF0Y2hfYnVmX2Njc193cml0ZV90b19wbmcoZGF0YSwgJmRzdF9jY3MsCi0JCQkJCQkgICAg ICJjb21wcmVzc2VkLWRzdC1jY3MucG5nIik7CisJCQlpbnRlbF9idWZfd3JpdGVfdG9fcG5nKCZk c3RfY2NzLAorCQkJCQkgICAgICAgbWFrZV9maWxlbmFtZSgiY29tcHJlc3NlZC1kc3QucG5nIikp OworCQkJaW50ZWxfYnVmX3dyaXRlX2F1eF90b19wbmcoJmRzdF9jY3MsCisJCQkJCQkgICAiY29t cHJlc3NlZC1kc3QtY2NzLnBuZyIpOwogCQl9CiAJfQogCi0JaWYgKG9wdF9kdW1wX2F1Yikgewot CQlkcm1faW50ZWxfZ2VtX2JvX2F1Yl9kdW1wX2JtcChkc3QuYm8sCi0JCQkJCSAgICAgIDAsIDAs IGlndF9idWZfd2lkdGgoJmRzdCksCi0JCQkJCSAgICAgIGlndF9idWZfaGVpZ2h0KCZkc3QpLAot CQkJCQkgICAgICBBVUJfRFVNUF9CTVBfRk9STUFUX0FSR0JfODg4OCwKLQkJCQkJICAgICAgZHN0 LnN1cmZhY2VbMF0uc3RyaWRlLCAwKTsKLQkJZHJtX2ludGVsX2J1Zm1ncl9nZW1fc2V0X2F1Yl9k dW1wKGRhdGEtPmJ1Zm1nciwgZmFsc2UpOwotCX0gZWxzZSBpZiAoY2hlY2tfYWxsX3BpeGVscykg eworCWlmIChjaGVja19hbGxfcGl4ZWxzKSB7CiAJCXNjcmF0Y2hfYnVmX2NoZWNrX2FsbChkYXRh LCAmZHN0LCAmcmVmKTsKIAl9IGVsc2UgewogCQlzY3JhdGNoX2J1Zl9jaGVjayhkYXRhLCAmZHN0 LCAmcmVmLCAxMCwgMTApOwpAQCAtNjMxLDYgKzU2Miw4IEBAIHN0YXRpYyB2b2lkIHRlc3QoZGF0 YV90ICpkYXRhLCB1aW50MzJfdCBzcmNfdGlsaW5nLCB1aW50MzJfdCBkc3RfdGlsaW5nLAogCQlz Y3JhdGNoX2J1Zl9jY3NfY2hlY2soZGF0YSwgJmRzdF9jY3MpOwogCiAJc2NyYXRjaF9idWZfZmlu aSgmcmVmKTsKKwlpZiAoIXNyY19taXhlZF90aWxlZCkKKwkJc2NyYXRjaF9idWZfZmluaSgmc3Jj X3RpbGVkKTsKIAlpZiAoZHN0X2NvbXByZXNzZWQpCiAJCXNjcmF0Y2hfYnVmX2ZpbmkoJmRzdF9j Y3MpOwogCWlmIChzcmNfY29tcHJlc3NlZCkKQEAgLTYzOCw2ICs1NzEsOSBAQCBzdGF0aWMgdm9p ZCB0ZXN0KGRhdGFfdCAqZGF0YSwgdWludDMyX3Qgc3JjX3RpbGluZywgdWludDMyX3QgZHN0X3Rp bGluZywKIAlzY3JhdGNoX2J1Zl9maW5pKCZkc3QpOwogCWZvciAoaW50IGkgPSAwOyBpIDwgbnVt X3NyYzsgaSsrKQogCQlzY3JhdGNoX2J1Zl9maW5pKCZzcmNbaV0uYnVmKTsKKworCS8qIGhhbmRs ZXMgZ29uZSwgbmVlZCB0byBjbGVhbiB0aGUgb2JqZWN0cyBjYWNoZSB3aXRoaW4gaW50ZWxfYmIg Ki8KKwlpbnRlbF9iYl9yZXNldChkYXRhLT5pYmIsIHRydWUpOwogfQogCiBzdGF0aWMgaW50IG9w dF9oYW5kbGVyKGludCBvcHQsIGludCBvcHRfaW5kZXgsIHZvaWQgKmRhdGEpCkBAIC02NDksNiAr NTg1LDkgQEAgc3RhdGljIGludCBvcHRfaGFuZGxlcihpbnQgb3B0LCBpbnQgb3B0X2luZGV4LCB2 b2lkICpkYXRhKQogCWNhc2UgJ2EnOgogCQljaGVja19hbGxfcGl4ZWxzID0gdHJ1ZTsKIAkJYnJl YWs7CisJY2FzZSAnYyc6CisJCWR1bXBfY29tcHJlc3NlZF9zcmNfYnVmID0gdHJ1ZTsKKwkJYnJl YWs7CiAJZGVmYXVsdDoKIAkJcmV0dXJuIElHVF9PUFRfSEFORExFUl9FUlJPUjsKIAl9CkBAIC02 NTksNiArNTk4LDcgQEAgc3RhdGljIGludCBvcHRfaGFuZGxlcihpbnQgb3B0LCBpbnQgb3B0X2lu ZGV4LCB2b2lkICpkYXRhKQogY29uc3QgY2hhciAqaGVscF9zdHIgPQogCSIgIC1kXHREdW1wIFBO R1xuIgogCSIgIC1hXHRDaGVjayBhbGwgcGl4ZWxzXG4iCisJIiAgLWNcdER1bXAgY29tcHJlc3Nl ZCBzcmMgc3VyZmFjZVxuIgogCTsKIAogc3RhdGljIHZvaWQgYnVmX21vZGVfdG9fc3RyKHVpbnQz Ml90IHRpbGluZywgYm9vbCBtaXhlZF90aWxlZCwKQEAgLTcwNSw3ICs2NDUsNyBAQCBzdGF0aWMg dm9pZCBidWZfbW9kZV90b19zdHIodWludDMyX3QgdGlsaW5nLCBib29sIG1peGVkX3RpbGVkLAog CQkgdGlsaW5nX3N0ciwgY29tcHJlc3Npb25fc3RyWzBdID8gIi0iIDogIiIsIGNvbXByZXNzaW9u X3N0cik7CiB9CiAKLWlndF9tYWluX2FyZ3MoImRhIiwgTlVMTCwgaGVscF9zdHIsIG9wdF9oYW5k bGVyLCBOVUxMKQoraWd0X21haW5fYXJncygiZGFjIiwgTlVMTCwgaGVscF9zdHIsIG9wdF9oYW5k bGVyLCBOVUxMKQogewogCXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGVzdF9kZXNjIHsKIAkJaW50IHNy Y190aWxpbmc7CkBAIC04NDksMjAgKzc4OSwxNCBAQCBpZ3RfbWFpbl9hcmdzKCJkYSIsIE5VTEws IGhlbHBfc3RyLCBvcHRfaGFuZGxlciwgTlVMTCkKIAkJZGF0YS5kZXZpZCA9IGludGVsX2dldF9k cm1fZGV2aWQoZGF0YS5kcm1fZmQpOwogCQlpZ3RfcmVxdWlyZV9nZW0oZGF0YS5kcm1fZmQpOwog Ci0JCWRhdGEuYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChkYXRhLmRybV9mZCwg NDA5Nik7Ci0JCWlndF9hc3NlcnQoZGF0YS5idWZtZ3IpOwotCiAJCWRhdGEucmVuZGVyX2NvcHkg PSBpZ3RfZ2V0X3JlbmRlcl9jb3B5ZnVuYyhkYXRhLmRldmlkKTsKIAkJaWd0X3JlcXVpcmVfZihk YXRhLnJlbmRlcl9jb3B5LAogCQkJICAgICAgIm5vIHJlbmRlci1jb3B5IGZ1bmN0aW9uXG4iKTsK IAogCQlkYXRhLnZlYm94X2NvcHkgPSBpZ3RfZ2V0X3ZlYm94X2NvcHlmdW5jKGRhdGEuZGV2aWQp OwogCi0JCWRhdGEuYmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhkYXRhLmJ1Zm1nciwg ZGF0YS5kZXZpZCk7Ci0JCWlndF9hc3NlcnQoZGF0YS5iYXRjaCk7Ci0KLQkJZGF0YS5ibWdyID0g cmVuZGVyY29weV9idWZtZ3JfY3JlYXRlKGRhdGEuZHJtX2ZkLCBkYXRhLmJ1Zm1ncik7Ci0JCWln dF9hc3NlcnQoZGF0YS5ibWdyKTsKKwkJZGF0YS5ib3BzID0gYnVmX29wc19jcmVhdGUoZGF0YS5k cm1fZmQpOworCQlkYXRhLmliYiA9IGludGVsX2JiX2NyZWF0ZShkYXRhLmRybV9mZCwgNDA5Nik7 CiAKIAkJaWd0X2ZvcmtfaGFuZ19kZXRlY3RvcihkYXRhLmRybV9mZCk7CiAJfQpAQCAtOTE1LDgg Kzg0OSw3IEBAIGlndF9tYWluX2FyZ3MoImRhIiwgTlVMTCwgaGVscF9zdHIsIG9wdF9oYW5kbGVy LCBOVUxMKQogCiAJaWd0X2ZpeHR1cmUgewogCQlpZ3Rfc3RvcF9oYW5nX2RldGVjdG9yKCk7Ci0J CWludGVsX2JhdGNoYnVmZmVyX2ZyZWUoZGF0YS5iYXRjaCk7Ci0JCWRybV9pbnRlbF9idWZtZ3Jf ZGVzdHJveShkYXRhLmJ1Zm1ncik7Ci0JCXJlbmRlcmNvcHlfYnVmbWdyX2Rlc3Ryb3koZGF0YS5i bWdyKTsKKwkJaW50ZWxfYmJfZGVzdHJveShkYXRhLmliYik7CisJCWJ1Zl9vcHNfZGVzdHJveShk YXRhLmJvcHMpOwogCX0KIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5 X3JlZHV4LmMgYi90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weV9yZWR1eC5jCmluZGV4IGEzZjc3 ZTg0Li44NmYyZGJhMiAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHlfcmVk dXguYworKysgYi90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weV9yZWR1eC5jCkBAIC02Myw4ICs2 Myw4IEBAIElHVF9URVNUX0RFU0NSSVBUSU9OKCJBZHZhbmNlZCB0ZXN0IGZvciB0aGUgcmVuZGVy X2NvcHkoKSBmdW5jdGlvbi4iKTsKIHR5cGVkZWYgc3RydWN0IHsKIAlpbnQgZmQ7CiAJdWludDMy X3QgZGV2aWQ7Ci0JZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwotCXN0cnVjdCBpbnRlbF9iYXRj aGJ1ZmZlciAqYmF0Y2g7CisJc3RydWN0IGJ1Zl9vcHMgKmJvcHM7CisJc3RydWN0IGludGVsX2Ji ICppYmI7CiAJaWd0X3JlbmRlcl9jb3B5ZnVuY190IHJlbmRlcl9jb3B5OwogCXVpbnQzMl90IGxp bmVhcltXSURUSCAqIEhFSUdIVF07CiB9IGRhdGFfdDsKQEAgLTc0LDU4ICs3NCw1MCBAQCBzdGF0 aWMgdm9pZCBkYXRhX2luaXQoZGF0YV90ICpkYXRhKQogCWRhdGEtPmZkID0gZHJtX29wZW5fZHJp dmVyKERSSVZFUl9JTlRFTCk7CiAJZGF0YS0+ZGV2aWQgPSBpbnRlbF9nZXRfZHJtX2RldmlkKGRh dGEtPmZkKTsKIAotCWRhdGEtPmJ1Zm1nciA9IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQoZGF0 YS0+ZmQsIDQwOTYpOwotCWlndF9hc3NlcnQoZGF0YS0+YnVmbWdyKTsKLQorCWRhdGEtPmJvcHMg PSBidWZfb3BzX2NyZWF0ZShkYXRhLT5mZCk7CiAJZGF0YS0+cmVuZGVyX2NvcHkgPSBpZ3RfZ2V0 X3JlbmRlcl9jb3B5ZnVuYyhkYXRhLT5kZXZpZCk7CiAJaWd0X3JlcXVpcmVfZihkYXRhLT5yZW5k ZXJfY29weSwKIAkJICAgICAgIm5vIHJlbmRlci1jb3B5IGZ1bmN0aW9uXG4iKTsKIAotCWRhdGEt PmJhdGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2MoZGF0YS0+YnVmbWdyLCBkYXRhLT5kZXZp ZCk7Ci0JaWd0X2Fzc2VydChkYXRhLT5iYXRjaCk7CisJZGF0YS0+aWJiID0gaW50ZWxfYmJfY3Jl YXRlKGRhdGEtPmZkLCA0MDk2KTsKIH0KIAogc3RhdGljIHZvaWQgZGF0YV9maW5pKGRhdGFfdCAq ZGF0YSkKIHsKLQkgaW50ZWxfYmF0Y2hidWZmZXJfZnJlZShkYXRhLT5iYXRjaCk7Ci0JIGRybV9p bnRlbF9idWZtZ3JfZGVzdHJveShkYXRhLT5idWZtZ3IpOwotCSBjbG9zZShkYXRhLT5mZCk7CisJ aW50ZWxfYmJfZGVzdHJveShkYXRhLT5pYmIpOworCWJ1Zl9vcHNfZGVzdHJveShkYXRhLT5ib3Bz KTsKKwljbG9zZShkYXRhLT5mZCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQo ZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAorc3RhdGljIHZvaWQgc2NyYXRjaF9i dWZfaW5pdChkYXRhX3QgKmRhdGEsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwKIAkJCSAgICAgaW50 IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgc3RyaWRlLCB1aW50MzJfdCBjb2xvcikKIHsKLQlkcm1f aW50ZWxfYm8gKmJvOwogCWludCBpOwogCi0JYm8gPSBkcm1faW50ZWxfYm9fYWxsb2MoZGF0YS0+ YnVmbWdyLCAiIiwgU0laRSwgNDA5Nik7CisJaW50ZWxfYnVmX2luaXQoZGF0YS0+Ym9wcywgYnVm LCB3aWR0aCwgaGVpZ2h0LCAzMiwgMCwKKwkJICAgICAgIEk5MTVfVElMSU5HX05PTkUsIEk5MTVf Q09NUFJFU1NJT05fTk9ORSk7CisJaWd0X2Fzc2VydChidWYtPnN1cmZhY2VbMF0uc2l6ZSA9PSBT SVpFKTsKKwlpZ3RfYXNzZXJ0KGJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPT0gc3RyaWRlKTsKKwog CWZvciAoaSA9IDA7IGkgPCB3aWR0aCAqIGhlaWdodDsgaSsrKQogCQlkYXRhLT5saW5lYXJbaV0g PSBjb2xvcjsKLQlnZW1fd3JpdGUoZGF0YS0+ZmQsIGJvLT5oYW5kbGUsIDAsIGRhdGEtPmxpbmVh ciwKKwlnZW1fd3JpdGUoZGF0YS0+ZmQsIGJ1Zi0+aGFuZGxlLCAwLCBkYXRhLT5saW5lYXIsCiAJ CSAgc2l6ZW9mKGRhdGEtPmxpbmVhcikpOwotCi0JbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpidWYp KTsKLQotCWJ1Zi0+Ym8gPSBibzsKLQlidWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gc3RyaWRlOwot CWJ1Zi0+dGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORTsKLQlidWYtPnN1cmZhY2VbMF0uc2l6ZSA9 IFNJWkU7Ci0JYnVmLT5icHAgPSAzMjsKIH0KIAotc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfZmlu aShkYXRhX3QgKmRhdGEsIHN0cnVjdCBpZ3RfYnVmICpidWYpCitzdGF0aWMgdm9pZCBzY3JhdGNo X2J1Zl9maW5pKGRhdGFfdCAqZGF0YSwgc3RydWN0IGludGVsX2J1ZiAqYnVmKQogewotCWRyaV9i b191bnJlZmVyZW5jZShidWYtPmJvKTsKKwlpbnRlbF9idWZfY2xvc2UoZGF0YS0+Ym9wcywgYnVm KTsKIAltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1ZikpOwogfQogCiBzdGF0aWMgdm9pZAotc2Ny YXRjaF9idWZfY2hlY2soZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLCBpbnQgeCwg aW50IHksCitzY3JhdGNoX2J1Zl9jaGVjayhkYXRhX3QgKmRhdGEsIHN0cnVjdCBpbnRlbF9idWYg KmJ1ZiwgaW50IHgsIGludCB5LAogCQkgIHVpbnQzMl90IGNvbG9yKQogewogCXVpbnQzMl90IHZh bDsKIAotCWdlbV9yZWFkKGRhdGEtPmZkLCBidWYtPmJvLT5oYW5kbGUsIDAsCisJZ2VtX3JlYWQo ZGF0YS0+ZmQsIGJ1Zi0+aGFuZGxlLCAwLAogCQkgZGF0YS0+bGluZWFyLCBzaXplb2YoZGF0YS0+ bGluZWFyKSk7CiAJdmFsID0gZGF0YS0+bGluZWFyW3kgKiBXSURUSCArIHhdOwogCWlndF9hc3Nl cnRfZih2YWwgPT0gY29sb3IsCkBAIC0xMzUsNyArMTI3LDcgQEAgc2NyYXRjaF9idWZfY2hlY2so ZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLCBpbnQgeCwgaW50IHksCiAKIHN0YXRp YyB2b2lkIGNvcHkoZGF0YV90ICpkYXRhKQogewotCXN0cnVjdCBpZ3RfYnVmIHNyYywgZHN0Owor CXN0cnVjdCBpbnRlbF9idWYgc3JjLCBkc3Q7CiAKIAlzY3JhdGNoX2J1Zl9pbml0KGRhdGEsICZz cmMsIFdJRFRILCBIRUlHSFQsIFNUUklERSwgU1JDX0NPTE9SKTsKIAlzY3JhdGNoX2J1Zl9pbml0 KGRhdGEsICZkc3QsIFdJRFRILCBIRUlHSFQsIFNUUklERSwgRFNUX0NPTE9SKTsKQEAgLTE0Myw3 ICsxMzUsNyBAQCBzdGF0aWMgdm9pZCBjb3B5KGRhdGFfdCAqZGF0YSkKIAlzY3JhdGNoX2J1Zl9j aGVjayhkYXRhLCAmc3JjLCBXSURUSCAvIDIsIEhFSUdIVCAvIDIsIFNSQ19DT0xPUik7CiAJc2Ny YXRjaF9idWZfY2hlY2soZGF0YSwgJmRzdCwgV0lEVEggLyAyLCBIRUlHSFQgLyAyLCBEU1RfQ09M T1IpOwogCi0JZGF0YS0+cmVuZGVyX2NvcHkoZGF0YS0+YmF0Y2gsIE5VTEwsCisJZGF0YS0+cmVu ZGVyX2NvcHkoZGF0YS0+aWJiLCAwLAogCQkJICAmc3JjLCAwLCAwLCBXSURUSCwgSEVJR0hULAog CQkJICAmZHN0LCBXSURUSCAvIDIsIEhFSUdIVCAvIDIpOwogCkBAIC0xNTcsOSArMTQ5LDkgQEAg c3RhdGljIHZvaWQgY29weShkYXRhX3QgKmRhdGEpCiBzdGF0aWMgdm9pZCBjb3B5X2ZsaW5rKGRh dGFfdCAqZGF0YSkKIHsKIAlkYXRhX3QgbG9jYWw7Ci0Jc3RydWN0IGlndF9idWYgc3JjLCBkc3Q7 Ci0Jc3RydWN0IGlndF9idWYgbG9jYWxfc3JjLCBsb2NhbF9kc3Q7Ci0Jc3RydWN0IGlndF9idWYg Zmxpbms7CisJc3RydWN0IGludGVsX2J1ZiBzcmMsIGRzdDsKKwlzdHJ1Y3QgaW50ZWxfYnVmIGxv Y2FsX3NyYywgbG9jYWxfZHN0OworCXN0cnVjdCBpbnRlbF9idWYgZmxpbms7CiAJdWludDMyX3Qg bmFtZTsKIAogCWRhdGFfaW5pdCgmbG9jYWwpOwpAQCAtMTY3LDIzICsxNTksMjIgQEAgc3RhdGlj IHZvaWQgY29weV9mbGluayhkYXRhX3QgKmRhdGEpCiAJc2NyYXRjaF9idWZfaW5pdChkYXRhLCAm c3JjLCBXSURUSCwgSEVJR0hULCBTVFJJREUsIDApOwogCXNjcmF0Y2hfYnVmX2luaXQoZGF0YSwg JmRzdCwgV0lEVEgsIEhFSUdIVCwgU1RSSURFLCBEU1RfQ09MT1IpOwogCi0JZGF0YS0+cmVuZGVy X2NvcHkoZGF0YS0+YmF0Y2gsIE5VTEwsCisJZGF0YS0+cmVuZGVyX2NvcHkoZGF0YS0+aWJiLCAw LAogCQkJICAmc3JjLCAwLCAwLCBXSURUSCwgSEVJR0hULAogCQkJICAmZHN0LCBXSURUSCwgSEVJ R0hUKTsKIAogCXNjcmF0Y2hfYnVmX2luaXQoJmxvY2FsLCAmbG9jYWxfc3JjLCBXSURUSCwgSEVJ R0hULCBTVFJJREUsIDApOwogCXNjcmF0Y2hfYnVmX2luaXQoJmxvY2FsLCAmbG9jYWxfZHN0LCBX SURUSCwgSEVJR0hULCBTVFJJREUsIFNSQ19DT0xPUik7CiAKLQlsb2NhbC5yZW5kZXJfY29weShs b2NhbC5iYXRjaCwgTlVMTCwKKwlsb2NhbC5yZW5kZXJfY29weShsb2NhbC5pYmIsIDAsCiAJCQkg ICZsb2NhbF9zcmMsIDAsIDAsIFdJRFRILCBIRUlHSFQsCiAJCQkgICZsb2NhbF9kc3QsIFdJRFRI LCBIRUlHSFQpOwogCi0KLQlkcm1faW50ZWxfYm9fZmxpbmsobG9jYWxfZHN0LmJvLCAmbmFtZSk7 CisJbmFtZSA9IGdlbV9mbGluayhsb2NhbC5mZCwgbG9jYWxfZHN0LmhhbmRsZSk7CiAJZmxpbmsg PSBsb2NhbF9kc3Q7Ci0JZmxpbmsuYm8gPSBkcm1faW50ZWxfYm9fZ2VtX2NyZWF0ZV9mcm9tX25h bWUoZGF0YS0+YnVmbWdyLCAiZmxpbmsiLCBuYW1lKTsKKwlmbGluay5oYW5kbGUgPSBnZW1fb3Bl bihkYXRhLT5mZCwgbmFtZSk7CiAKLQlkYXRhLT5yZW5kZXJfY29weShkYXRhLT5iYXRjaCwgTlVM TCwKKwlkYXRhLT5yZW5kZXJfY29weShkYXRhLT5pYmIsIDAsCiAJCQkgICZmbGluaywgMCwgMCwg V0lEVEgsIEhFSUdIVCwKIAkJCSAgJmRzdCwgV0lEVEggLyAyLCBIRUlHSFQgLyAyKTsKIApAQCAt MTkzLDYgKzE4NCw3IEBAIHN0YXRpYyB2b2lkIGNvcHlfZmxpbmsoZGF0YV90ICpkYXRhKQogCXNj cmF0Y2hfYnVmX2NoZWNrKGRhdGEsICZkc3QsIDEwLCAxMCwgRFNUX0NPTE9SKTsKIAlzY3JhdGNo X2J1Zl9jaGVjayhkYXRhLCAmZHN0LCBXSURUSCAtIDEwLCBIRUlHSFQgLSAxMCwgU1JDX0NPTE9S KTsKIAorCWludGVsX2JiX3Jlc2V0KGRhdGEtPmliYiwgdHJ1ZSk7CiAJc2NyYXRjaF9idWZfZmlu aShkYXRhLCAmc3JjKTsKIAlzY3JhdGNoX2J1Zl9maW5pKGRhdGEsICZmbGluayk7CiAJc2NyYXRj aF9idWZfZmluaShkYXRhLCAmZHN0KTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3JlbmRl cl9saW5lYXJfYmxpdHMuYyBiL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9saW5lYXJfYmxpdHMuYwpp bmRleCA1NWE5ZTZiZS4uOGQwNDRlOWUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3JlbmRl cl9saW5lYXJfYmxpdHMuYworKysgYi90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfbGluZWFyX2JsaXRz LmMKQEAgLTQ5LDcgKzQ5LDYgQEAKIAogI2luY2x1ZGUgImk5MTUvZ2VtLmgiCiAjaW5jbHVkZSAi aWd0LmgiCi0jaW5jbHVkZSAiaW50ZWxfYnVmbWdyLmgiCiAKICNkZWZpbmUgV0lEVEggNTEyCiAj ZGVmaW5lIFNUUklERSAoV0lEVEgqNCkKQEAgLTYwLDcgKzU5LDcgQEAgc3RhdGljIHVpbnQzMl90 IGxpbmVhcltXSURUSCpIRUlHSFRdOwogc3RhdGljIGlndF9yZW5kZXJfY29weWZ1bmNfdCByZW5k ZXJfY29weTsKIAogc3RhdGljIHZvaWQKLWNoZWNrX2JvKGludCBmZCwgdWludDMyX3QgaGFuZGxl LCB1aW50MzJfdCB2YWwpCitjaGVja19idWYoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQz Ml90IHZhbCkKIHsKIAlpbnQgaTsKIApAQCAtNzYsMTE0ICs3NSw4OSBAQCBjaGVja19ibyhpbnQg ZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDMyX3QgdmFsKQogCiBzdGF0aWMgdm9pZCBydW5fdGVz dCAoaW50IGZkLCBpbnQgY291bnQpCiB7Ci0JZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwotCXN0 cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7CisJc3RydWN0IGJ1Zl9vcHMgKmJvcHM7CisJ c3RydWN0IGludGVsX2JiICppYmI7CiAJdWludDMyX3QgKnN0YXJ0X3ZhbDsKLQlkcm1faW50ZWxf Ym8gKipibzsKKwlzdHJ1Y3QgaW50ZWxfYnVmICpidWZzOwogCXVpbnQzMl90IHN0YXJ0ID0gMDsK IAlpbnQgaSwgajsKIAogCXJlbmRlcl9jb3B5ID0gaWd0X2dldF9yZW5kZXJfY29weWZ1bmMoaW50 ZWxfZ2V0X2RybV9kZXZpZChmZCkpOwogCWlndF9yZXF1aXJlKHJlbmRlcl9jb3B5KTsKIAotCWJ1 Zm1nciA9IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQoZmQsIDQwOTYpOwotCWJhdGNoID0gaW50 ZWxfYmF0Y2hidWZmZXJfYWxsb2MoYnVmbWdyLCBpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7CisJ Ym9wcyA9IGJ1Zl9vcHNfY3JlYXRlKGZkKTsKKwlpYmIgPSBpbnRlbF9iYl9jcmVhdGUoZmQsIDQw OTYpOwogCi0JYm8gPSBtYWxsb2Moc2l6ZW9mKCpibykqY291bnQpOworCWJ1ZnMgPSBtYWxsb2Mo c2l6ZW9mKCpidWZzKSpjb3VudCk7CiAJc3RhcnRfdmFsID0gbWFsbG9jKHNpemVvZigqc3RhcnRf dmFsKSpjb3VudCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotCQlib1tpXSA9 IGRybV9pbnRlbF9ib19hbGxvYyhidWZtZ3IsICIiLCBTSVpFLCA0MDk2KTsKKwkJaW50ZWxfYnVm X2luaXQoYm9wcywgJmJ1ZnNbaV0sIFdJRFRILCBIRUlHSFQsIDMyLCAwLAorCQkJICAgICAgIEk5 MTVfVElMSU5HX05PTkUsIEk5MTVfQ09NUFJFU1NJT05fTk9ORSk7CiAJCXN0YXJ0X3ZhbFtpXSA9 IHN0YXJ0OwogCQlmb3IgKGogPSAwOyBqIDwgV0lEVEgqSEVJR0hUOyBqKyspCiAJCQlsaW5lYXJb al0gPSBzdGFydCsrOwotCQlnZW1fd3JpdGUoZmQsIGJvW2ldLT5oYW5kbGUsIDAsIGxpbmVhciwg c2l6ZW9mKGxpbmVhcikpOworCQlnZW1fd3JpdGUoZmQsIGJ1ZnNbaV0uaGFuZGxlLCAwLCBsaW5l YXIsIHNpemVvZihsaW5lYXIpKTsKIAl9CiAKIAlpZ3RfaW5mbygiVmVyaWZ5aW5nIGluaXRpYWxp c2F0aW9uIC0gJWQgYnVmZmVycyBvZiAlZCBieXRlc1xuIiwgY291bnQsIFNJWkUpOwogCWZvciAo aSA9IDA7IGkgPCBjb3VudDsgaSsrKQotCQljaGVja19ibyhmZCwgYm9baV0tPmhhbmRsZSwgc3Rh cnRfdmFsW2ldKTsKKwkJY2hlY2tfYnVmKGZkLCBidWZzW2ldLmhhbmRsZSwgc3RhcnRfdmFsW2ld KTsKIAogCWlndF9pbmZvKCJDeWNsaWMgYmxpdHMsIGZvcndhcmQuLi5cbiIpOwogCWZvciAoaSA9 IDA7IGkgPCBjb3VudCAqIDQ7IGkrKykgewotCQlzdHJ1Y3QgaWd0X2J1ZiBzcmMgPSB7fSwgZHN0 ID0ge307CisJCXN0cnVjdCBpbnRlbF9idWYgKnNyYywgKmRzdDsKIAotCQlzcmMuYm8gPSBib1tp ICUgY291bnRdOwotCQlzcmMuc3VyZmFjZVswXS5zdHJpZGUgPSBTVFJJREU7Ci0JCXNyYy50aWxp bmcgPSBJOTE1X1RJTElOR19OT05FOwotCQlzcmMuc3VyZmFjZVswXS5zaXplID0gU0laRTsKLQkJ c3JjLmJwcCA9IDMyOworCQlzcmMgPSAmYnVmc1tpICUgY291bnRdOworCQlkc3QgPSAmYnVmc1so aSArIDEpICUgY291bnRdOwogCi0JCWRzdC5ibyA9IGJvWyhpICsgMSkgJSBjb3VudF07Ci0JCWRz dC5zdXJmYWNlWzBdLnN0cmlkZSA9IFNUUklERTsKLQkJZHN0LnRpbGluZyA9IEk5MTVfVElMSU5H X05PTkU7Ci0JCWRzdC5zdXJmYWNlWzBdLnNpemUgPSBTSVpFOwotCQlkc3QuYnBwID0gMzI7Ci0K LQkJcmVuZGVyX2NvcHkoYmF0Y2gsIE5VTEwsICZzcmMsIDAsIDAsIFdJRFRILCBIRUlHSFQsICZk c3QsIDAsIDApOworCQlyZW5kZXJfY29weShpYmIsIDAsIHNyYywgMCwgMCwgV0lEVEgsIEhFSUdI VCwgZHN0LCAwLCAwKTsKIAkJc3RhcnRfdmFsWyhpICsgMSkgJSBjb3VudF0gPSBzdGFydF92YWxb aSAlIGNvdW50XTsKIAl9CisKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLQkJY2hlY2tf Ym8oZmQsIGJvW2ldLT5oYW5kbGUsIHN0YXJ0X3ZhbFtpXSk7CisJCWNoZWNrX2J1ZihmZCwgYnVm c1tpXS5oYW5kbGUsIHN0YXJ0X3ZhbFtpXSk7CiAKIAlpZiAoaWd0X3J1bl9pbl9zaW11bGF0aW9u KCkpCiAJCXJldHVybjsKIAogCWlndF9pbmZvKCJDeWNsaWMgYmxpdHMsIGJhY2t3YXJkLi4uXG4i KTsKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQgKiA0OyBpKyspIHsKLQkJc3RydWN0IGlndF9idWYg c3JjID0ge30sIGRzdCA9IHt9OworCQlzdHJ1Y3QgaW50ZWxfYnVmICpzcmMsICpkc3Q7CiAKLQkJ c3JjLmJvID0gYm9bKGkgKyAxKSAlIGNvdW50XTsKLQkJc3JjLnN1cmZhY2VbMF0uc3RyaWRlID0g U1RSSURFOwotCQlzcmMudGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORTsKLQkJc3JjLnN1cmZhY2Vb MF0uc2l6ZSA9IFNJWkU7Ci0JCXNyYy5icHAgPSAzMjsKKwkJc3JjID0gJmJ1ZnNbKGkgKyAxKSAl IGNvdW50XTsKKwkJZHN0ID0gJmJ1ZnNbaSAlIGNvdW50XTsKIAotCQlkc3QuYm8gPSBib1tpICUg Y291bnRdOwotCQlkc3Quc3VyZmFjZVswXS5zdHJpZGUgPSBTVFJJREU7Ci0JCWRzdC50aWxpbmcg PSBJOTE1X1RJTElOR19OT05FOwotCQlkc3Quc3VyZmFjZVswXS5zaXplID0gU0laRTsKLQkJZHN0 LmJwcCA9IDMyOwotCi0JCXJlbmRlcl9jb3B5KGJhdGNoLCBOVUxMLCAmc3JjLCAwLCAwLCBXSURU SCwgSEVJR0hULCAmZHN0LCAwLCAwKTsKKwkJcmVuZGVyX2NvcHkoaWJiLCAwLCBzcmMsIDAsIDAs IFdJRFRILCBIRUlHSFQsIGRzdCwgMCwgMCk7CiAJCXN0YXJ0X3ZhbFtpICUgY291bnRdID0gc3Rh cnRfdmFsWyhpICsgMSkgJSBjb3VudF07CiAJfQogCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsr KQotCQljaGVja19ibyhmZCwgYm9baV0tPmhhbmRsZSwgc3RhcnRfdmFsW2ldKTsKKwkJY2hlY2tf YnVmKGZkLCBidWZzW2ldLmhhbmRsZSwgc3RhcnRfdmFsW2ldKTsKIAogCWlndF9pbmZvKCJSYW5k b20gYmxpdHMuLi5cbiIpOwogCWZvciAoaSA9IDA7IGkgPCBjb3VudCAqIDQ7IGkrKykgewotCQlz dHJ1Y3QgaWd0X2J1ZiBzcmMgPSB7fSwgZHN0ID0ge307CisJCXN0cnVjdCBpbnRlbF9idWYgKnNy YywgKmRzdDsKIAkJaW50IHMgPSByYW5kb20oKSAlIGNvdW50OwogCQlpbnQgZCA9IHJhbmRvbSgp ICUgY291bnQ7CiAKIAkJaWYgKHMgPT0gZCkKIAkJCWNvbnRpbnVlOwogCi0JCXNyYy5ibyA9IGJv W3NdOwotCQlzcmMuc3VyZmFjZVswXS5zdHJpZGUgPSBTVFJJREU7Ci0JCXNyYy50aWxpbmcgPSBJ OTE1X1RJTElOR19OT05FOwotCQlzcmMuc3VyZmFjZVswXS5zaXplID0gU0laRTsKLQkJc3JjLmJw cCA9IDMyOwotCi0JCWRzdC5ibyA9IGJvW2RdOwotCQlkc3Quc3VyZmFjZVswXS5zdHJpZGUgPSBT VFJJREU7Ci0JCWRzdC50aWxpbmcgPSBJOTE1X1RJTElOR19OT05FOwotCQlkc3Quc3VyZmFjZVsw XS5zaXplID0gU0laRTsKLQkJZHN0LmJwcCA9IDMyOworCQlzcmMgPSAmYnVmc1tzXTsKKwkJZHN0 ID0gJmJ1ZnNbZF07CiAKLQkJcmVuZGVyX2NvcHkoYmF0Y2gsIE5VTEwsICZzcmMsIDAsIDAsIFdJ RFRILCBIRUlHSFQsICZkc3QsIDAsIDApOworCQlyZW5kZXJfY29weShpYmIsIDAsIHNyYywgMCwg MCwgV0lEVEgsIEhFSUdIVCwgZHN0LCAwLCAwKTsKIAkJc3RhcnRfdmFsW2RdID0gc3RhcnRfdmFs W3NdOwogCX0KIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLQkJY2hlY2tfYm8oZmQsIGJv W2ldLT5oYW5kbGUsIHN0YXJ0X3ZhbFtpXSk7CisJCWNoZWNrX2J1ZihmZCwgYnVmc1tpXS5oYW5k bGUsIHN0YXJ0X3ZhbFtpXSk7CiAKIAkvKiByZWxlYXNlIHJlc291cmNlcyAqLwotCWZvciAoaSA9 IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0JCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShib1tpXSk7 Ci0JfQotCWludGVsX2JhdGNoYnVmZmVyX2ZyZWUoYmF0Y2gpOwotCWRybV9pbnRlbF9idWZtZ3Jf ZGVzdHJveShidWZtZ3IpOworCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorCQlpbnRlbF9i dWZfY2xvc2UoYm9wcywgJmJ1ZnNbaV0pOworCWZyZWUoYnVmcyk7CisJaW50ZWxfYmJfZGVzdHJv eShpYmIpOworCWJ1Zl9vcHNfZGVzdHJveShib3BzKTsKIH0KIAogaWd0X21haW4KZGlmZiAtLWdp dCBhL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl90aWxlZF9ibGl0cy5jIGIvdGVzdHMvaTkxNS9nZW1f cmVuZGVyX3RpbGVkX2JsaXRzLmMKaW5kZXggYmQ3NjA2NmEuLmYzMjFmOTBkIDEwMDY0NAotLS0g YS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfdGlsZWRfYmxpdHMuYworKysgYi90ZXN0cy9pOTE1L2dl bV9yZW5kZXJfdGlsZWRfYmxpdHMuYwpAQCAtNDIsMTIgKzQyLDEyIEBACiAjaW5jbHVkZSA8ZXJy bm8uaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5j bHVkZSA8c3lzL21tYW4uaD4KIAogI2luY2x1ZGUgPGRybS5oPgogCiAjaW5jbHVkZSAiaTkxNS9n ZW0uaCIKICNpbmNsdWRlICJpZ3QuaCIKLSNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIKIAogI2Rl ZmluZSBXSURUSCA1MTIKICNkZWZpbmUgU1RSSURFIChXSURUSCo0KQpAQCAtNTUsMjkgKzU1LDI1 IEBACiAjZGVmaW5lIFNJWkUgKEhFSUdIVCpTVFJJREUpCiAKIHN0YXRpYyBpZ3RfcmVuZGVyX2Nv cHlmdW5jX3QgcmVuZGVyX2NvcHk7Ci1zdGF0aWMgZHJtX2ludGVsX2JvICpsaW5lYXI7CitzdGF0 aWMgc3RydWN0IGludGVsX2J1ZiBsaW5lYXI7CiBzdGF0aWMgdWludDMyX3QgZGF0YVtXSURUSCpI RUlHSFRdOwogc3RhdGljIGludCBzbm9vcDsKIAogc3RhdGljIHZvaWQKLWNoZWNrX2JvKHN0cnVj dCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsIHN0cnVjdCBpZ3RfYnVmICpidWYsIHVpbnQzMl90 IHZhbCkKK2NoZWNrX2J1ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgc3RydWN0IGludGVsX2J1ZiAq YnVmLCB1aW50MzJfdCB2YWwpCiB7Ci0Jc3RydWN0IGlndF9idWYgdG1wID0ge307CisJaW50IGk5 MTUgPSBidWZfb3BzX2dldF9mZChsaW5lYXIuYm9wcyk7CiAJdWludDMyX3QgKnB0cjsKIAlpbnQg aTsKIAotCXRtcC5ibyA9IGxpbmVhcjsKLQl0bXAuc3VyZmFjZVswXS5zdHJpZGUgPSBTVFJJREU7 Ci0JdG1wLnRpbGluZyA9IEk5MTVfVElMSU5HX05PTkU7Ci0JdG1wLnN1cmZhY2VbMF0uc2l6ZSA9 IFNJWkU7Ci0JdG1wLmJwcCA9IDMyOworCXJlbmRlcl9jb3B5KGliYiwgMCwgYnVmLCAwLCAwLCBX SURUSCwgSEVJR0hULCAmbGluZWFyLCAwLCAwKTsKIAotCXJlbmRlcl9jb3B5KGJhdGNoLCBOVUxM LCBidWYsIDAsIDAsIFdJRFRILCBIRUlHSFQsICZ0bXAsIDAsIDApOwogCWlmIChzbm9vcCkgewot CQlkb19vcl9kaWUoZHJtX2ludGVsX2JvX21hcChsaW5lYXIsIDApKTsKLQkJcHRyID0gbGluZWFy LT52aXJ0dWFsOworCQlwdHIgPSBnZW1fbW1hcF9fY3B1X2NvaGVyZW50KGk5MTUsIGxpbmVhci5o YW5kbGUsIDAsCisJCQkJCSAgICAgbGluZWFyLnN1cmZhY2VbMF0uc2l6ZSwgUFJPVF9SRUFEKTsK KwkJZ2VtX3NldF9kb21haW4oaTkxNSwgbGluZWFyLmhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX0NQ VSwgMCk7CiAJfSBlbHNlIHsKLQkJZG9fb3JfZGllKGRybV9pbnRlbF9ib19nZXRfc3ViZGF0YShs aW5lYXIsIDAsIHNpemVvZihkYXRhKSwgZGF0YSkpOworCQlnZW1fcmVhZChpOTE1LCBsaW5lYXIu aGFuZGxlLCAwLCBkYXRhLCBzaXplb2YoZGF0YSkpOwogCQlwdHIgPSBkYXRhOwogCX0KIAlmb3Ig KGkgPSAwOyBpIDwgV0lEVEgqSEVJR0hUOyBpKyspIHsKQEAgLTg4LDE1ICs4NCwxNSBAQCBjaGVj a19ibyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVm LCB1aW50MzJfdCB2YWwpCiAJCXZhbCsrOwogCX0KIAlpZiAocHRyICE9IGRhdGEpCi0JCWRybV9p bnRlbF9ib191bm1hcChsaW5lYXIpOworCQltdW5tYXAocHRyLCBsaW5lYXIuc3VyZmFjZVswXS5z aXplKTsKIH0KIAogc3RhdGljIHZvaWQgcnVuX3Rlc3QgKGludCBmZCwgaW50IGNvdW50KQogewot CWRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsKLQlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJh dGNoOworCXN0cnVjdCBidWZfb3BzICpib3BzOworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOwogCXVp bnQzMl90ICpzdGFydF92YWw7Ci0Jc3RydWN0IGlndF9idWYgKmJ1ZjsKKwlzdHJ1Y3QgaW50ZWxf YnVmICpidWZzOwogCXVpbnQzMl90IHN0YXJ0ID0gMDsKIAlpbnQgaSwgajsKIAl1aW50MzJfdCBk ZXZpZDsKQEAgLTExMiw2NiArMTA4LDYyIEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0IChpbnQgZmQs IGludCBjb3VudCkKIAlpZiAoSVNfQlJPQURXQVRFUihkZXZpZCkgfHwgSVNfQ1JFU1RMSU5FKGRl dmlkKSkgLyogc25hZnUgKi8KIAkJc25vb3AgPSAwOwogCi0JYnVmbWdyID0gZHJtX2ludGVsX2J1 Zm1ncl9nZW1faW5pdChmZCwgNDA5Nik7Ci0JZHJtX2ludGVsX2J1Zm1ncl9nZW1fc2V0X3ZtYV9j YWNoZV9zaXplKGJ1Zm1nciwgMzIpOwotCWJhdGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2Mo YnVmbWdyLCBkZXZpZCk7CisJYm9wcyA9IGJ1Zl9vcHNfY3JlYXRlKGZkKTsKKwlpYmIgPSBpbnRl bF9iYl9jcmVhdGUoZmQsIDQwOTYpOwogCi0JbGluZWFyID0gZHJtX2ludGVsX2JvX2FsbG9jKGJ1 Zm1nciwgImxpbmVhciIsIFdJRFRIKkhFSUdIVCo0LCAwKTsKKwlpbnRlbF9idWZfaW5pdChib3Bz LCAmbGluZWFyLCBXSURUSCwgSEVJR0hULCAzMiwgMCwKKwkJICAgICAgIEk5MTVfVElMSU5HX05P TkUsIEk5MTVfQ09NUFJFU1NJT05fTk9ORSk7CiAJaWYgKHNub29wKSB7Ci0JCWdlbV9zZXRfY2Fj aGluZyhmZCwgbGluZWFyLT5oYW5kbGUsIDEpOworCQlnZW1fc2V0X2NhY2hpbmcoZmQsIGxpbmVh ci5oYW5kbGUsIDEpOwogCQlpZ3RfaW5mbygiVXNpbmcgYSBzbm9vcCBsaW5lYXIgYnVmZmVyIGZv ciBjb21wYXJpc29uc1xuIik7CiAJfQogCi0JYnVmID0gY2FsbG9jKHNpemVvZigqYnVmKSwgY291 bnQpOworCWJ1ZnMgPSBjYWxsb2Moc2l6ZW9mKCpidWZzKSwgY291bnQpOwogCXN0YXJ0X3ZhbCA9 IG1hbGxvYyhzaXplb2YoKnN0YXJ0X3ZhbCkqY291bnQpOwogCiAJZm9yIChpID0gMDsgaSA8IGNv dW50OyBpKyspIHsKIAkJdWludDMyX3QgdGlsaW5nID0gSTkxNV9USUxJTkdfWCArIChyYW5kb20o KSAmIDEpOwotCQl1bnNpZ25lZCBsb25nIHBpdGNoID0gU1RSSURFOwogCQl1aW50MzJfdCAqcHRy OwogCi0JCWJ1ZltpXS5ibyA9IGRybV9pbnRlbF9ib19hbGxvY190aWxlZChidWZtZ3IsICIiLAot CQkJCQkJICAgICBXSURUSCwgSEVJR0hULCA0LAotCQkJCQkJICAgICAmdGlsaW5nLCAmcGl0Y2gs IDApOwotCQlidWZbaV0uc3VyZmFjZVswXS5zdHJpZGUgPSBwaXRjaDsKLQkJYnVmW2ldLnRpbGlu ZyA9IHRpbGluZzsKLQkJYnVmW2ldLnN1cmZhY2VbMF0uc2l6ZSA9IFNJWkU7Ci0JCWJ1ZltpXS5i cHAgPSAzMjsKLQorCQlpbnRlbF9idWZfaW5pdChib3BzLCAmYnVmc1tpXSwgV0lEVEgsIEhFSUdI VCwgMzIsIDAsCisJCQkgICAgICAgdGlsaW5nLCBJOTE1X0NPTVBSRVNTSU9OX05PTkUpOwogCQlz dGFydF92YWxbaV0gPSBzdGFydDsKIAotCQlkb19vcl9kaWUoZHJtX2ludGVsX2dlbV9ib19tYXBf Z3R0KGJ1ZltpXS5ibykpOwotCQlwdHIgPSBidWZbaV0uYm8tPnZpcnR1YWw7CisJCXB0ciA9IGdl bV9tbWFwX19ndHQoZmQsIGJ1ZnNbaV0uaGFuZGxlLAorCQkJCSAgICBidWZzW2ldLnN1cmZhY2Vb MF0uc2l6ZSwgUFJPVF9XUklURSk7CiAJCWZvciAoaiA9IDA7IGogPCBXSURUSCpIRUlHSFQ7IGor KykKIAkJCXB0cltqXSA9IHN0YXJ0Kys7Ci0JCWRybV9pbnRlbF9nZW1fYm9fdW5tYXBfZ3R0KGJ1 ZltpXS5ibyk7CisKKwkJbXVubWFwKHB0ciwgYnVmc1tpXS5zdXJmYWNlWzBdLnNpemUpOwogCX0K IAogCWlndF9pbmZvKCJWZXJpZnlpbmcgaW5pdGlhbGlzYXRpb24uLi5cbiIpOwogCWZvciAoaSA9 IDA7IGkgPCBjb3VudDsgaSsrKQotCQljaGVja19ibyhiYXRjaCwgJmJ1ZltpXSwgc3RhcnRfdmFs W2ldKTsKKwkJY2hlY2tfYnVmKGliYiwgJmJ1ZnNbaV0sIHN0YXJ0X3ZhbFtpXSk7CiAKIAlpZ3Rf aW5mbygiQ3ljbGljIGJsaXRzLCBmb3J3YXJkLi4uXG4iKTsKIAlmb3IgKGkgPSAwOyBpIDwgY291 bnQgKiA0OyBpKyspIHsKIAkJaW50IHNyYyA9IGkgJSBjb3VudDsKIAkJaW50IGRzdCA9IChpICsg MSkgJSBjb3VudDsKIAotCQlyZW5kZXJfY29weShiYXRjaCwgTlVMTCwgYnVmK3NyYywgMCwgMCwg V0lEVEgsIEhFSUdIVCwgYnVmK2RzdCwgMCwgMCk7CisJCXJlbmRlcl9jb3B5KGliYiwgMCwgJmJ1 ZnNbc3JjXSwgMCwgMCwgV0lEVEgsIEhFSUdIVCwKKwkJCSAgICAmYnVmc1tkc3RdLCAwLCAwKTsK IAkJc3RhcnRfdmFsW2RzdF0gPSBzdGFydF92YWxbc3JjXTsKIAl9CiAJZm9yIChpID0gMDsgaSA8 IGNvdW50OyBpKyspCi0JCWNoZWNrX2JvKGJhdGNoLCAmYnVmW2ldLCBzdGFydF92YWxbaV0pOwor CQljaGVja19idWYoaWJiLCAmYnVmc1tpXSwgc3RhcnRfdmFsW2ldKTsKIAogCWlndF9pbmZvKCJD eWNsaWMgYmxpdHMsIGJhY2t3YXJkLi4uXG4iKTsKIAlmb3IgKGkgPSAwOyBpIDwgY291bnQgKiA0 OyBpKyspIHsKIAkJaW50IHNyYyA9IChpICsgMSkgJSBjb3VudDsKIAkJaW50IGRzdCA9IGkgJSBj b3VudDsKIAotCQlyZW5kZXJfY29weShiYXRjaCwgTlVMTCwgYnVmK3NyYywgMCwgMCwgV0lEVEgs IEhFSUdIVCwgYnVmK2RzdCwgMCwgMCk7CisJCXJlbmRlcl9jb3B5KGliYiwgMCwgJmJ1ZnNbc3Jj XSwgMCwgMCwgV0lEVEgsIEhFSUdIVCwKKwkJCSAgICAmYnVmc1tkc3RdLCAwLCAwKTsKIAkJc3Rh cnRfdmFsW2RzdF0gPSBzdGFydF92YWxbc3JjXTsKIAl9CiAJZm9yIChpID0gMDsgaSA8IGNvdW50 OyBpKyspCi0JCWNoZWNrX2JvKGJhdGNoLCAmYnVmW2ldLCBzdGFydF92YWxbaV0pOworCQljaGVj a19idWYoaWJiLCAmYnVmc1tpXSwgc3RhcnRfdmFsW2ldKTsKIAogCWlndF9pbmZvKCJSYW5kb20g YmxpdHMuLi5cbiIpOwogCWZvciAoaSA9IDA7IGkgPCBjb3VudCAqIDQ7IGkrKykgewpAQCAtMTgx LDE5ICsxNzMsMjAgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QgKGludCBmZCwgaW50IGNvdW50KQog CQlpZiAoc3JjID09IGRzdCkKIAkJCWNvbnRpbnVlOwogCi0JCXJlbmRlcl9jb3B5KGJhdGNoLCBO VUxMLCBidWYrc3JjLCAwLCAwLCBXSURUSCwgSEVJR0hULCBidWYrZHN0LCAwLCAwKTsKKwkJcmVu ZGVyX2NvcHkoaWJiLCAwLCAmYnVmc1tzcmNdLCAwLCAwLCBXSURUSCwgSEVJR0hULAorCQkJICAg ICZidWZzW2RzdF0sIDAsIDApOwogCQlzdGFydF92YWxbZHN0XSA9IHN0YXJ0X3ZhbFtzcmNdOwog CX0KIAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLQkJY2hlY2tfYm8oYmF0Y2gsICZidWZb aV0sIHN0YXJ0X3ZhbFtpXSk7CisJCWNoZWNrX2J1ZihpYmIsICZidWZzW2ldLCBzdGFydF92YWxb aV0pOwogCiAJLyogcmVsZWFzZSByZXNvdXJjZXMgKi8KLQlkcm1faW50ZWxfYm9fdW5yZWZlcmVu Y2UobGluZWFyKTsKKwlpbnRlbF9idWZfY2xvc2UoYm9wcywgJmxpbmVhcik7CiAJZm9yIChpID0g MDsgaSA8IGNvdW50OyBpKyspIHsKLQkJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGJ1ZltpXS5i byk7CisJCWludGVsX2J1Zl9jbG9zZShib3BzLCAmYnVmc1tpXSk7CiAJfQotCWludGVsX2JhdGNo YnVmZmVyX2ZyZWUoYmF0Y2gpOwotCWRybV9pbnRlbF9idWZtZ3JfZGVzdHJveShidWZtZ3IpOwor CWludGVsX2JiX2Rlc3Ryb3koaWJiKTsKKwlidWZfb3BzX2Rlc3Ryb3koYm9wcyk7CiB9CiAKIApk aWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fc3RyZXNzLmMgYi90ZXN0cy9pOTE1L2dlbV9zdHJl c3MuYwppbmRleCA1MDI0NWI5My4uMjJkNjQ3NDkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2Vt X3N0cmVzcy5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX3N0cmVzcy5jCkBAIC02Miw4ICs2Miw2IEBA CiAKICNpbmNsdWRlIDxkcm0uaD4KIAotI2luY2x1ZGUgImludGVsX2J1Zm1nci5oIgotCiBJR1Rf VEVTVF9ERVNDUklQVElPTigiR2VuZXJhbCBnZW0gY29oZXJlbmN5IHRlc3QuIik7CiAKICNkZWZp bmUgQ01EX1BPTFlfU1RJUFBMRV9PRkZTRVQgICAgICAgMHg3OTA2CkBAIC04NCwxMyArODIsMTMg QEAgSUdUX1RFU1RfREVTQ1JJUFRJT04oIkdlbmVyYWwgZ2VtIGNvaGVyZW5jeSB0ZXN0LiIpOwog ICogICBmaXJzdCBvbmUgKHRvIGNoZWNrIGNvbnNpc3RlbmN5IG9mIHRoZSBrZXJuZWwgcmVjb3Zl cnkgcGF0aHMpCiAgKi8KIAotZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwotc3RydWN0IGludGVs X2JhdGNoYnVmZmVyICpiYXRjaDsKK3N0cnVjdCBidWZfb3BzICpib3BzOworc3RydWN0IGludGVs X2JiICppYmI7CiBpbnQgZHJtX2ZkOwogaW50IGRldmlkOwogaW50IG51bV9mZW5jZXM7CiAKLWRy bV9pbnRlbF9ibyAqYnVzeV9ibzsKK3N0cnVjdCBpbnRlbF9idWYgYnVzeV9ibzsKIAogc3RydWN0 IG9wdGlvbl9zdHJ1Y3QgewogICAgIHVuc2lnbmVkIHNjcmF0Y2hfYnVmX3NpemU7CkBAIC0xMzYs NyArMTM0LDcgQEAgc3RydWN0IG9wdGlvbl9zdHJ1Y3Qgb3B0aW9ucyA9IHsKIAkuY2hlY2tfcmVu ZGVyX2NweWZuID0gMCwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgaWd0X2J1ZiBidWZmZXJzWzJdW01B WF9CVUZTXTsKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmIGJ1ZmZlcnNbMl1bTUFYX0JVRlNdOwog LyogdGlsZSBpIGlzIGF0IGxvZ2ljYWwgcG9zaXRpb24gdGlsZV9wZXJtdXRhdGlvbltpXSAqLwog c3RhdGljIHVuc2lnbmVkICp0aWxlX3Blcm11dGF0aW9uOwogc3RhdGljIHVuc2lnbmVkIG51bV9i dWZmZXJzID0gMDsKQEAgLTE1MiwxNiArMTUwLDE2IEBAIHN0cnVjdCB7CiAJdW5zaWduZWQgbWF4 X2ZhaWxlZF9yZWFkczsKIH0gc3RhdHM7CiAKLXN0YXRpYyB2b2lkIHRpbGUyeHkoc3RydWN0IGln dF9idWYgKmJ1ZiwgdW5zaWduZWQgdGlsZSwgdW5zaWduZWQgKngsIHVuc2lnbmVkICp5KQorc3Rh dGljIHZvaWQgdGlsZTJ4eShzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIHVuc2lnbmVkIHRpbGUsIHVu c2lnbmVkICp4LCB1bnNpZ25lZCAqeSkKIHsKLQlpZ3RfYXNzZXJ0KHRpbGUgPCBidWYtPm51bV90 aWxlcyk7CisJaWd0X2Fzc2VydCh0aWxlIDwgb3B0aW9ucy50aWxlc19wZXJfYnVmKTsKIAkqeCA9 ICh0aWxlKm9wdGlvbnMudGlsZV9zaXplKSAlIChidWYtPnN1cmZhY2VbMF0uc3RyaWRlL3NpemVv Zih1aW50MzJfdCkpOwogCSp5ID0gKCh0aWxlKm9wdGlvbnMudGlsZV9zaXplKSAvIChidWYtPnN1 cmZhY2VbMF0uc3RyaWRlL3NpemVvZih1aW50MzJfdCkpKSAqIG9wdGlvbnMudGlsZV9zaXplOwog fQogCi1zdGF0aWMgdm9pZCBlbWl0X2JsdChkcm1faW50ZWxfYm8gKnNyY19ibywgdWludDMyX3Qg c3JjX3RpbGluZywgdW5zaWduZWQgc3JjX3BpdGNoLAorc3RhdGljIHZvaWQgZW1pdF9ibHQoc3Ry dWN0IGludGVsX2J1ZiAqc3JjLCB1aW50MzJfdCBzcmNfdGlsaW5nLCB1bnNpZ25lZCBzcmNfcGl0 Y2gsCiAJCSAgICAgdW5zaWduZWQgc3JjX3gsIHVuc2lnbmVkIHNyY195LCB1bnNpZ25lZCB3LCB1 bnNpZ25lZCBoLAotCQkgICAgIGRybV9pbnRlbF9ibyAqZHN0X2JvLCB1aW50MzJfdCBkc3RfdGls aW5nLCB1bnNpZ25lZCBkc3RfcGl0Y2gsCisJCSAgICAgc3RydWN0IGludGVsX2J1ZiAqZHN0LCB1 aW50MzJfdCBkc3RfdGlsaW5nLCB1bnNpZ25lZCBkc3RfcGl0Y2gsCiAJCSAgICAgdW5zaWduZWQg ZHN0X3gsIHVuc2lnbmVkIGRzdF95KQogewogCXVpbnQzMl90IGNtZF9iaXRzID0gMDsKQEAgLTE3 NywyNCArMTc1LDI2IEBAIHN0YXRpYyB2b2lkIGVtaXRfYmx0KGRybV9pbnRlbF9ibyAqc3JjX2Jv LCB1aW50MzJfdCBzcmNfdGlsaW5nLCB1bnNpZ25lZCBzcmNfcGl0CiAJfQogCiAJLyogY29weSBs b3dlciBoYWxmIHRvIHVwcGVyIGhhbGYgKi8KLQlCTElUX0NPUFlfQkFUQ0hfU1RBUlQoY21kX2Jp dHMpOwotCU9VVF9CQVRDSCgoMyA8PCAyNCkgfCAvKiAzMiBiaXRzICovCi0JCSAgKDB4Y2MgPDwg MTYpIHwgLyogY29weSBST1AgKi8KLQkJICBkc3RfcGl0Y2gpOwotCU9VVF9CQVRDSChkc3RfeSA8 PCAxNiB8IGRzdF94KTsKLQlPVVRfQkFUQ0goKGRzdF95K2gpIDw8IDE2IHwgKGRzdF94K3cpKTsK LQlPVVRfUkVMT0NfRkVOQ0VEKGRzdF9ibywgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgSTkxNV9H RU1fRE9NQUlOX1JFTkRFUiwgMCk7Ci0JT1VUX0JBVENIKHNyY195IDw8IDE2IHwgc3JjX3gpOwot CU9VVF9CQVRDSChzcmNfcGl0Y2gpOwotCU9VVF9SRUxPQ19GRU5DRUQoc3JjX2JvLCBJOTE1X0dF TV9ET01BSU5fUkVOREVSLCAwLCAwKTsKLQlBRFZBTkNFX0JBVENIKCk7Ci0KLQlpZiAoYmF0Y2gt PmdlbiA+PSA2KSB7Ci0JCUJFR0lOX0JBVENIKDMsIDApOwotCQlPVVRfQkFUQ0goWFlfU0VUVVBf Q0xJUF9CTFRfQ01EKTsKLQkJT1VUX0JBVENIKDApOwotCQlPVVRfQkFUQ0goMCk7Ci0JCUFEVkFO Q0VfQkFUQ0goKTsKKwlpbnRlbF9iYl9ibGl0X3N0YXJ0KGliYiwgY21kX2JpdHMpOworCWludGVs X2JiX291dChpYmIsICgzIDw8IDI0KSB8IC8qIDMyIGJpdHMgKi8KKwkJICAgICAoMHhjYyA8PCAx NikgfCAvKiBjb3B5IFJPUCAqLworCQkgICAgIGRzdF9waXRjaCk7CisJaW50ZWxfYmJfb3V0KGli YiwgZHN0X3kgPDwgMTYgfCBkc3RfeCk7CisJaW50ZWxfYmJfb3V0KGliYiwgKGRzdF95K2gpIDw8 IDE2IHwgKGRzdF94K3cpKTsKKwlpbnRlbF9iYl9lbWl0X3JlbG9jX2ZlbmNlZChpYmIsIGRzdC0+ aGFuZGxlLAorCQkJCSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsCisJCQkJICAgSTkxNV9HRU1f RE9NQUlOX1JFTkRFUiwKKwkJCQkgICAwLCBkc3QtPmFkZHIub2Zmc2V0KTsKKwlpbnRlbF9iYl9v dXQoaWJiLCBzcmNfeSA8PCAxNiB8IHNyY194KTsKKwlpbnRlbF9iYl9vdXQoaWJiLCBzcmNfcGl0 Y2gpOworCWludGVsX2JiX2VtaXRfcmVsb2NfZmVuY2VkKGliYiwgc3JjLT5oYW5kbGUsCisJCQkJ ICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgMCwKKwkJCQkgICAwLCBzcmMtPmFkZHIub2Zmc2V0 KTsKKworCWlmIChpYmItPmdlbiA+PSA2KSB7CisJCWludGVsX2JiX291dChpYmIsIFhZX1NFVFVQ X0NMSVBfQkxUX0NNRCk7CisJCWludGVsX2JiX291dChpYmIsIDApOworCQlpbnRlbF9iYl9vdXQo aWJiLCAwKTsKIAl9CiB9CiAKQEAgLTIwNywxOSArMjA3LDI1IEBAIHN0YXRpYyB2b2lkIGtlZXBf Z3B1X2J1c3kodm9pZCkKIAl0bXAgPSAxIDw8IGdwdV9idXN5X2xvYWQ7CiAJaWd0X2Fzc2VydF9s dGUodG1wLCAxMDI0KTsKIAotCWVtaXRfYmx0KGJ1c3lfYm8sIDAsIDQwOTYsIDAsIDAsIHRtcCwg MTI4LAotCQkgYnVzeV9ibywgMCwgNDA5NiwgMCwgMTI4KTsKKwllbWl0X2JsdCgmYnVzeV9ibywg MCwgNDA5NiwgMCwgMCwgdG1wLCAxMjgsCisJCSAmYnVzeV9ibywgMCwgNDA5NiwgMCwgMTI4KTsK IH0KIAotc3RhdGljIHZvaWQgc2V0X3RvX2NwdV9kb21haW4oc3RydWN0IGlndF9idWYgKmJ1Ziwg aW50IHdyaXRpbmcpCitzdGF0aWMgdm9pZCBzZXRfdG9fY3B1X2RvbWFpbihzdHJ1Y3QgaW50ZWxf YnVmICpidWYsIGludCB3cml0aW5nKQogewotCWdlbV9zZXRfZG9tYWluKGRybV9mZCwgYnVmLT5i by0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fQ1BVLAorCWdlbV9zZXRfZG9tYWluKGRybV9mZCwg YnVmLT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9DUFUsCiAJCSAgICAgICB3cml0aW5nID8gSTkx NV9HRU1fRE9NQUlOX0NQVSA6IDApOwogfQogCitzdGF0aWMgdm9pZCBzZXRfdG9fZ3R0X2RvbWFp bihzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIGludCB3cml0aW5nKQoreworCWdlbV9zZXRfZG9tYWlu KGRybV9mZCwgYnVmLT5oYW5kbGUsIEk5MTVfR0VNX0RPTUFJTl9HVFQsCisJCSAgICAgICB3cml0 aW5nID8gSTkxNV9HRU1fRE9NQUlOX0dUVCA6IDApOworfQorCiBzdGF0aWMgdW5zaWduZWQgaW50 IGNvcHlmdW5jX3NlcSA9IDA7Ci1zdGF0aWMgdm9pZCAoKmNvcHlmdW5jKShzdHJ1Y3QgaWd0X2J1 ZiAqc3JjLCB1bnNpZ25lZCBzcmNfeCwgdW5zaWduZWQgc3JjX3ksCi0JCQlzdHJ1Y3QgaWd0X2J1 ZiAqZHN0LCB1bnNpZ25lZCBkc3RfeCwgdW5zaWduZWQgZHN0X3ksCitzdGF0aWMgdm9pZCAoKmNv cHlmdW5jKShzdHJ1Y3QgaW50ZWxfYnVmICpzcmMsIHVuc2lnbmVkIHNyY194LCB1bnNpZ25lZCBz cmNfeSwKKwkJCXN0cnVjdCBpbnRlbF9idWYgKmRzdCwgdW5zaWduZWQgZHN0X3gsIHVuc2lnbmVk IGRzdF95LAogCQkJdW5zaWduZWQgbG9naWNhbF90aWxlX25vKTsKIAogLyogc3RyaWRlLCB4LCB5 IGluIHVuaXRzIG9mIHVpbnQzMl90ISAqLwpAQCAtMjU0LDUxICsyNjAsNTMgQEAgc3RhdGljIHZv aWQgY3B1Y3B5MmQodWludDMyX3QgKnNyYywgdW5zaWduZWQgc3JjX3N0cmlkZSwgdW5zaWduZWQg c3JjX3gsIHVuc2lnbmUKIAkJc3RhdHMubnVtX2ZhaWxlZCsrOwogfQogCi1zdGF0aWMgdm9pZCBj cHVfY29weWZ1bmMoc3RydWN0IGlndF9idWYgKnNyYywgdW5zaWduZWQgc3JjX3gsIHVuc2lnbmVk IHNyY195LAotCQkJIHN0cnVjdCBpZ3RfYnVmICpkc3QsIHVuc2lnbmVkIGRzdF94LCB1bnNpZ25l ZCBkc3RfeSwKK3N0YXRpYyB2b2lkIGNwdV9jb3B5ZnVuYyhzdHJ1Y3QgaW50ZWxfYnVmICpzcmMs IHVuc2lnbmVkIHNyY194LCB1bnNpZ25lZCBzcmNfeSwKKwkJCSBzdHJ1Y3QgaW50ZWxfYnVmICpk c3QsIHVuc2lnbmVkIGRzdF94LCB1bnNpZ25lZCBkc3RfeSwKIAkJCSB1bnNpZ25lZCBsb2dpY2Fs X3RpbGVfbm8pCiB7Ci0JaWd0X2Fzc2VydChiYXRjaC0+cHRyID09IGJhdGNoLT5idWZmZXIpOwor CWlndF9hc3NlcnQoc3JjLT5wdHIpOworCWlndF9hc3NlcnQoZHN0LT5wdHIpOwogCiAJaWYgKG9w dGlvbnMuZHVjdHRhcGUpCi0JCWRybV9pbnRlbF9ib193YWl0X3JlbmRlcmluZyhkc3QtPmJvKTsK KwkJc2V0X3RvX2d0dF9kb21haW4oZHN0LCAxKTsKIAogCWlmIChvcHRpb25zLnVzZV9jcHVfbWFw cykgewogCQlzZXRfdG9fY3B1X2RvbWFpbihzcmMsIDApOwogCQlzZXRfdG9fY3B1X2RvbWFpbihk c3QsIDEpOwogCX0KIAotCWNwdWNweTJkKHNyYy0+ZGF0YSwgc3JjLT5zdXJmYWNlWzBdLnN0cmlk ZS9zaXplb2YodWludDMyX3QpLCBzcmNfeCwKLQkJIHNyY195LAotCQkgZHN0LT5kYXRhLCBkc3Qt PnN1cmZhY2VbMF0uc3RyaWRlL3NpemVvZih1aW50MzJfdCksIGRzdF94LAotCQkgZHN0X3ksCisJ Y3B1Y3B5MmQoc3JjLT5wdHIsIHNyYy0+c3VyZmFjZVswXS5zdHJpZGUvc2l6ZW9mKHVpbnQzMl90 KSwgc3JjX3gsIHNyY195LAorCQkgZHN0LT5wdHIsIGRzdC0+c3VyZmFjZVswXS5zdHJpZGUvc2l6 ZW9mKHVpbnQzMl90KSwgZHN0X3gsIGRzdF95LAogCQkgbG9naWNhbF90aWxlX25vKTsKIH0KIAot c3RhdGljIHZvaWQgcHJ3X2NvcHlmdW5jKHN0cnVjdCBpZ3RfYnVmICpzcmMsIHVuc2lnbmVkIHNy Y194LCB1bnNpZ25lZCBzcmNfeSwKLQkJCSBzdHJ1Y3QgaWd0X2J1ZiAqZHN0LCB1bnNpZ25lZCBk c3RfeCwgdW5zaWduZWQgZHN0X3ksCitzdGF0aWMgdm9pZCBwcndfY29weWZ1bmMoc3RydWN0IGlu dGVsX2J1ZiAqc3JjLCB1bnNpZ25lZCBzcmNfeCwgdW5zaWduZWQgc3JjX3ksCisJCQkgc3RydWN0 IGludGVsX2J1ZiAqZHN0LCB1bnNpZ25lZCBkc3RfeCwgdW5zaWduZWQgZHN0X3ksCiAJCQkgdW5z aWduZWQgbG9naWNhbF90aWxlX25vKQogewogCXVpbnQzMl90IHRtcF90aWxlW29wdGlvbnMudGls ZV9zaXplKm9wdGlvbnMudGlsZV9zaXplXTsKIAlpbnQgaTsKIAotCWlndF9hc3NlcnQoYmF0Y2gt PnB0ciA9PSBiYXRjaC0+YnVmZmVyKTsKKwlpZ3RfYXNzZXJ0KHNyYy0+cHRyKTsKKwlpZ3RfYXNz ZXJ0KGRzdC0+cHRyKTsKKworCWlndF9pbmZvKCJwcndcbiIpOwogCiAJaWYgKG9wdGlvbnMuZHVj dHRhcGUpCi0JCWRybV9pbnRlbF9ib193YWl0X3JlbmRlcmluZyhkc3QtPmJvKTsKKwkJc2V0X3Rv X2d0dF9kb21haW4oZHN0LCAxKTsKIAogCWlmIChzcmMtPnRpbGluZyA9PSBJOTE1X1RJTElOR19O T05FKSB7CiAJCWZvciAoaSA9IDA7IGkgPCBvcHRpb25zLnRpbGVfc2l6ZTsgaSsrKSB7CiAJCQl1 bnNpZ25lZCBvZnMgPSBzcmNfeCpzaXplb2YodWludDMyX3QpICsgc3JjLT5zdXJmYWNlWzBdLnN0 cmlkZSooc3JjX3kgKyBpKTsKLQkJCWRybV9pbnRlbF9ib19nZXRfc3ViZGF0YShzcmMtPmJvLCBv ZnMsCi0JCQkJCQkgb3B0aW9ucy50aWxlX3NpemUqc2l6ZW9mKHVpbnQzMl90KSwKLQkJCQkJCSB0 bXBfdGlsZSArIG9wdGlvbnMudGlsZV9zaXplKmkpOworCQkJZ2VtX3JlYWQoZHJtX2ZkLCBzcmMt PmhhbmRsZSwgb2ZzLAorCQkJCSB0bXBfdGlsZSArIG9wdGlvbnMudGlsZV9zaXplKmksCisJCQkJ IG9wdGlvbnMudGlsZV9zaXplKnNpemVvZih1aW50MzJfdCkpOwogCQl9CiAJfSBlbHNlIHsKIAkJ aWYgKG9wdGlvbnMudXNlX2NwdV9tYXBzKQogCQkJc2V0X3RvX2NwdV9kb21haW4oc3JjLCAwKTsK IAotCQljcHVjcHkyZChzcmMtPmRhdGEsIHNyYy0+c3VyZmFjZVswXS5zdHJpZGUvc2l6ZW9mKHVp bnQzMl90KSwKKwkJY3B1Y3B5MmQoc3JjLT5wdHIsIHNyYy0+c3VyZmFjZVswXS5zdHJpZGUvc2l6 ZW9mKHVpbnQzMl90KSwKIAkJCSBzcmNfeCwgc3JjX3ksCiAJCQkgdG1wX3RpbGUsIG9wdGlvbnMu dGlsZV9zaXplLCAwLCAwLCBsb2dpY2FsX3RpbGVfbm8pOwogCX0KQEAgLTMwNiwyMyArMzE0LDIz IEBAIHN0YXRpYyB2b2lkIHByd19jb3B5ZnVuYyhzdHJ1Y3QgaWd0X2J1ZiAqc3JjLCB1bnNpZ25l ZCBzcmNfeCwgdW5zaWduZWQgc3JjX3ksCiAJaWYgKGRzdC0+dGlsaW5nID09IEk5MTVfVElMSU5H X05PTkUpIHsKIAkJZm9yIChpID0gMDsgaSA8IG9wdGlvbnMudGlsZV9zaXplOyBpKyspIHsKIAkJ CXVuc2lnbmVkIG9mcyA9IGRzdF94KnNpemVvZih1aW50MzJfdCkgKyBkc3QtPnN1cmZhY2VbMF0u c3RyaWRlKihkc3RfeSArIGkpOwotCQkJZHJtX2ludGVsX2JvX3N1YmRhdGEoZHN0LT5ibywgb2Zz LAotCQkJCQkgICAgIG9wdGlvbnMudGlsZV9zaXplKnNpemVvZih1aW50MzJfdCksCi0JCQkJCSAg ICAgdG1wX3RpbGUgKyBvcHRpb25zLnRpbGVfc2l6ZSppKTsKKwkJCWdlbV93cml0ZShkcm1fZmQs IGRzdC0+aGFuZGxlLCBvZnMsCisJCQkJICB0bXBfdGlsZSArIG9wdGlvbnMudGlsZV9zaXplKmks CisJCQkJICBvcHRpb25zLnRpbGVfc2l6ZSpzaXplb2YodWludDMyX3QpKTsKIAkJfQogCX0gZWxz ZSB7CiAJCWlmIChvcHRpb25zLnVzZV9jcHVfbWFwcykKIAkJCXNldF90b19jcHVfZG9tYWluKGRz dCwgMSk7CiAKIAkJY3B1Y3B5MmQodG1wX3RpbGUsIG9wdGlvbnMudGlsZV9zaXplLCAwLCAwLAot CQkJIGRzdC0+ZGF0YSwgZHN0LT5zdXJmYWNlWzBdLnN0cmlkZS9zaXplb2YodWludDMyX3QpLAor CQkJIGRzdC0+cHRyLCBkc3QtPnN1cmZhY2VbMF0uc3RyaWRlL3NpemVvZih1aW50MzJfdCksCiAJ CQkgZHN0X3gsIGRzdF95LAogCQkJIGxvZ2ljYWxfdGlsZV9ubyk7CiAJfQogfQogCi1zdGF0aWMg dm9pZCBibGl0dGVyX2NvcHlmdW5jKHN0cnVjdCBpZ3RfYnVmICpzcmMsIHVuc2lnbmVkIHNyY194 LCB1bnNpZ25lZCBzcmNfeSwKLQkJCSAgICAgc3RydWN0IGlndF9idWYgKmRzdCwgdW5zaWduZWQg ZHN0X3gsIHVuc2lnbmVkIGRzdF95LAorc3RhdGljIHZvaWQgYmxpdHRlcl9jb3B5ZnVuYyhzdHJ1 Y3QgaW50ZWxfYnVmICpzcmMsIHVuc2lnbmVkIHNyY194LCB1bnNpZ25lZCBzcmNfeSwKKwkJCSAg ICAgc3RydWN0IGludGVsX2J1ZiAqZHN0LCB1bnNpZ25lZCBkc3RfeCwgdW5zaWduZWQgZHN0X3ks CiAJCQkgICAgIHVuc2lnbmVkIGxvZ2ljYWxfdGlsZV9ubykKIHsKIAlzdGF0aWMgdW5zaWduZWQg a2VlcF9ncHVfYnVzeV9jb3VudGVyID0gMDsKQEAgLTMzMSw5ICszMzksOSBAQCBzdGF0aWMgdm9p ZCBibGl0dGVyX2NvcHlmdW5jKHN0cnVjdCBpZ3RfYnVmICpzcmMsIHVuc2lnbmVkIHNyY194LCB1 bnNpZ25lZCBzcmNfeQogCWlmIChrZWVwX2dwdV9idXN5X2NvdW50ZXIgJiAxICYmICFmZW5jZV9z dG9ybSkKIAkJa2VlcF9ncHVfYnVzeSgpOwogCi0JZW1pdF9ibHQoc3JjLT5ibywgc3JjLT50aWxp bmcsIHNyYy0+c3VyZmFjZVswXS5zdHJpZGUsIHNyY194LCBzcmNfeSwKKwllbWl0X2JsdChzcmMs IHNyYy0+dGlsaW5nLCBzcmMtPnN1cmZhY2VbMF0uc3RyaWRlLCBzcmNfeCwgc3JjX3ksCiAJCSBv cHRpb25zLnRpbGVfc2l6ZSwgb3B0aW9ucy50aWxlX3NpemUsCi0JCSBkc3QtPmJvLCBkc3QtPnRp bGluZywgZHN0LT5zdXJmYWNlWzBdLnN0cmlkZSwgZHN0X3gsIGRzdF95KTsKKwkJIGRzdCwgZHN0 LT50aWxpbmcsIGRzdC0+c3VyZmFjZVswXS5zdHJpZGUsIGRzdF94LCBkc3RfeSk7CiAKIAlpZiAo IShrZWVwX2dwdV9idXN5X2NvdW50ZXIgJiAxKSAmJiAhZmVuY2Vfc3Rvcm0pCiAJCWtlZXBfZ3B1 X2J1c3koKTsKQEAgLTM0NywxMiArMzU1LDEyIEBAIHN0YXRpYyB2b2lkIGJsaXR0ZXJfY29weWZ1 bmMoc3RydWN0IGlndF9idWYgKnNyYywgdW5zaWduZWQgc3JjX3gsIHVuc2lnbmVkIHNyY195CiAK IAlpZiAoZmVuY2Vfc3Rvcm0gPD0gMSkgewogCQlmZW5jZV9zdG9ybSA9IDA7Ci0JCWludGVsX2Jh dGNoYnVmZmVyX2ZsdXNoKGJhdGNoKTsKKwkJaW50ZWxfYmJfZmx1c2hfYmxpdChpYmIpOwogCX0K IH0KIAotc3RhdGljIHZvaWQgcmVuZGVyX2NvcHlmdW5jKHN0cnVjdCBpZ3RfYnVmICpzcmMsIHVu c2lnbmVkIHNyY194LCB1bnNpZ25lZCBzcmNfeSwKLQkJCSAgICBzdHJ1Y3QgaWd0X2J1ZiAqZHN0 LCB1bnNpZ25lZCBkc3RfeCwgdW5zaWduZWQgZHN0X3ksCitzdGF0aWMgdm9pZCByZW5kZXJfY29w eWZ1bmMoc3RydWN0IGludGVsX2J1ZiAqc3JjLCB1bnNpZ25lZCBzcmNfeCwgdW5zaWduZWQgc3Jj X3ksCisJCQkgICAgc3RydWN0IGludGVsX2J1ZiAqZHN0LCB1bnNpZ25lZCBkc3RfeCwgdW5zaWdu ZWQgZHN0X3ksCiAJCQkgICAgdW5zaWduZWQgbG9naWNhbF90aWxlX25vKQogewogCXN0YXRpYyB1 bnNpZ25lZCBrZWVwX2dwdV9idXN5X2NvdW50ZXIgPSAwOwpAQCAtMzY3LDggKzM3NSw5IEBAIHN0 YXRpYyB2b2lkIHJlbmRlcl9jb3B5ZnVuYyhzdHJ1Y3QgaWd0X2J1ZiAqc3JjLCB1bnNpZ25lZCBz cmNfeCwgdW5zaWduZWQgc3JjX3ksCiAJCSAqIEZsdXNoIG91dHN0YW5kaW5nIGJsdHMgc28gdGhh dCB0aGV5IGRvbid0IGVuZCB1cCBvbgogCQkgKiB0aGUgcmVuZGVyIHJpbmcgd2hlbiB0aGF0J3Mg bm90IGFsbG93ZWQgKGdlbjYrKS4KIAkJICovCi0JCWludGVsX2JhdGNoYnVmZmVyX2ZsdXNoKGJh dGNoKTsKLQkJcmVuZGVyY29weShiYXRjaCwgTlVMTCwgc3JjLCBzcmNfeCwgc3JjX3ksCisJCWlu dGVsX2JiX2ZsdXNoX2JsaXQoaWJiKTsKKworCQlyZW5kZXJjb3B5KGliYiwgMCwgc3JjLCBzcmNf eCwgc3JjX3ksCiAJCSAgICAgb3B0aW9ucy50aWxlX3NpemUsIG9wdGlvbnMudGlsZV9zaXplLAog CQkgICAgIGRzdCwgZHN0X3gsIGRzdF95KTsKIAl9IGVsc2UKQEAgLTM3OSw3ICszODgsNyBAQCBz dGF0aWMgdm9pZCByZW5kZXJfY29weWZ1bmMoc3RydWN0IGlndF9idWYgKnNyYywgdW5zaWduZWQg c3JjX3gsIHVuc2lnbmVkIHNyY195LAogCQlrZWVwX2dwdV9idXN5KCk7CiAKIAlrZWVwX2dwdV9i dXN5X2NvdW50ZXIrKzsKLQlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaChiYXRjaCk7CisJaW50ZWxf YmJfZmx1c2hfYmxpdChpYmIpOwogfQogCiBzdGF0aWMgdm9pZCBuZXh0X2NvcHlmdW5jKGludCB0 aWxlKQpAQCAtNDQ0LDcgKzQ1Myw3IEBAIHN0YXRpYyB2b2lkIGZhbl9vdXQodm9pZCkKIAkJCXNl dF90b19jcHVfZG9tYWluKCZidWZmZXJzW2N1cnJlbnRfc2V0XVtidWZfaWR4XSwgMSk7CiAKIAkJ Y3B1Y3B5MmQodG1wX3RpbGUsIG9wdGlvbnMudGlsZV9zaXplLCAwLCAwLAotCQkJIGJ1ZmZlcnNb Y3VycmVudF9zZXRdW2J1Zl9pZHhdLmRhdGEsCisJCQkgYnVmZmVyc1tjdXJyZW50X3NldF1bYnVm X2lkeF0ucHRyLAogCQkJIGJ1ZmZlcnNbY3VycmVudF9zZXRdW2J1Zl9pZHhdLnN1cmZhY2VbMF0u c3RyaWRlIC8gc2l6ZW9mKHVpbnQzMl90KSwKIAkJCSB4LCB5LCBpKTsKIAl9CkBAIC00NjgsNyAr NDc3LDcgQEAgc3RhdGljIHZvaWQgZmFuX2luX2FuZF9jaGVjayh2b2lkKQogCQlpZiAob3B0aW9u cy51c2VfY3B1X21hcHMpCiAJCQlzZXRfdG9fY3B1X2RvbWFpbigmYnVmZmVyc1tjdXJyZW50X3Nl dF1bYnVmX2lkeF0sIDApOwogCi0JCWNwdWNweTJkKGJ1ZmZlcnNbY3VycmVudF9zZXRdW2J1Zl9p ZHhdLmRhdGEsCisJCWNwdWNweTJkKGJ1ZmZlcnNbY3VycmVudF9zZXRdW2J1Zl9pZHhdLnB0ciwK IAkJCSBidWZmZXJzW2N1cnJlbnRfc2V0XVtidWZfaWR4XS5zdXJmYWNlWzBdLnN0cmlkZSAvIHNp emVvZih1aW50MzJfdCksCiAJCQkgeCwgeSwKIAkJCSB0bXBfdGlsZSwgb3B0aW9ucy50aWxlX3Np emUsIDAsIDAsCkBAIC00NzYsNjEgKzQ4NSw1OSBAQCBzdGF0aWMgdm9pZCBmYW5faW5fYW5kX2No ZWNrKHZvaWQpCiAJfQogfQogCi1zdGF0aWMgdm9pZCBzYW5pdGl6ZV9zdHJpZGUoc3RydWN0IGln dF9idWYgKmJ1ZikKK3N0YXRpYyB2b2lkIHNhbml0aXplX3N0cmlkZShzdHJ1Y3QgaW50ZWxfYnVm ICpidWYpCiB7CiAKLQlpZiAoaWd0X2J1Zl9oZWlnaHQoYnVmKSA+IG9wdGlvbnMubWF4X2RpbWVu c2lvbikKKwlpZiAoaW50ZWxfYnVmX2hlaWdodChidWYpID4gb3B0aW9ucy5tYXhfZGltZW5zaW9u KQogCQlidWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gYnVmLT5zdXJmYWNlWzBdLnNpemUgLyBvcHRp b25zLm1heF9kaW1lbnNpb247CiAKLQlpZiAoaWd0X2J1Zl9oZWlnaHQoYnVmKSA8IG9wdGlvbnMu dGlsZV9zaXplKQorCWlmIChpbnRlbF9idWZfaGVpZ2h0KGJ1ZikgPCBvcHRpb25zLnRpbGVfc2l6 ZSkKIAkJYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9IGJ1Zi0+c3VyZmFjZVswXS5zaXplIC8gb3B0 aW9ucy50aWxlX3NpemU7CiAKLQlpZiAoaWd0X2J1Zl93aWR0aChidWYpIDwgb3B0aW9ucy50aWxl X3NpemUpCisJaWYgKGludGVsX2J1Zl93aWR0aChidWYpIDwgb3B0aW9ucy50aWxlX3NpemUpCiAJ CWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSBvcHRpb25zLnRpbGVfc2l6ZSAqIHNpemVvZih1aW50 MzJfdCk7CiAKIAlpZ3RfYXNzZXJ0KGJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPD0gODE5Mik7Ci0J aWd0X2Fzc2VydChpZ3RfYnVmX3dpZHRoKGJ1ZikgPD0gb3B0aW9ucy5tYXhfZGltZW5zaW9uKTsK LQlpZ3RfYXNzZXJ0KGlndF9idWZfaGVpZ2h0KGJ1ZikgPD0gb3B0aW9ucy5tYXhfZGltZW5zaW9u KTsKKwlpZ3RfYXNzZXJ0KGludGVsX2J1Zl93aWR0aChidWYpIDw9IG9wdGlvbnMubWF4X2RpbWVu c2lvbik7CisJaWd0X2Fzc2VydChpbnRlbF9idWZfaGVpZ2h0KGJ1ZikgPD0gb3B0aW9ucy5tYXhf ZGltZW5zaW9uKTsKIAotCWlndF9hc3NlcnQoaWd0X2J1Zl93aWR0aChidWYpID49IG9wdGlvbnMu dGlsZV9zaXplKTsKLQlpZ3RfYXNzZXJ0KGlndF9idWZfaGVpZ2h0KGJ1ZikgPj0gb3B0aW9ucy50 aWxlX3NpemUpOworCWlndF9hc3NlcnQoaW50ZWxfYnVmX3dpZHRoKGJ1ZikgPj0gb3B0aW9ucy50 aWxlX3NpemUpOworCWlndF9hc3NlcnQoaW50ZWxfYnVmX2hlaWdodChidWYpID49IG9wdGlvbnMu dGlsZV9zaXplKTsKIAogfQogCi1zdGF0aWMgdm9pZCBpbml0X2J1ZmZlcihzdHJ1Y3QgaWd0X2J1 ZiAqYnVmLCB1bnNpZ25lZCBzaXplKQorc3RhdGljIHZvaWQgaW5pdF9idWZmZXIoc3RydWN0IGlu dGVsX2J1ZiAqYnVmLCB1bnNpZ25lZCBzaXplKQogewotCW1lbXNldChidWYsIDAsIHNpemVvZigq YnVmKSk7CisJdWludDMyX3Qgc3RyaWRlLCB3aWR0aCwgaGVpZ2h0LCBicHA7CisKKwlzdHJpZGUg PSA0MDk2OworCWJwcCA9IDMyOworCXdpZHRoID0gc3RyaWRlIC8gKGJwcCAvIDgpOworCWhlaWdo dCA9IHNpemUgLyBzdHJpZGU7CiAKLQlidWYtPmJvID0gZHJtX2ludGVsX2JvX2FsbG9jKGJ1Zm1n ciwgInRpbGVkIGJvIiwgc2l6ZSwgNDA5Nik7Ci0JYnVmLT5zdXJmYWNlWzBdLnNpemUgPSBzaXpl OwotCWlndF9hc3NlcnQoYnVmLT5ibyk7Ci0JYnVmLT50aWxpbmcgPSBJOTE1X1RJTElOR19OT05F OwotCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSA0MDk2OwotCWJ1Zi0+YnBwID0gMzI7CisJaW50 ZWxfYnVmX2luaXQoYm9wcywgYnVmLCB3aWR0aCwgaGVpZ2h0LCBicHAsIDAsCisJCSAgICAgICBJ OTE1X1RJTElOR19OT05FLCBJOTE1X0NPTVBSRVNTSU9OX05PTkUpOwogCiAJc2FuaXRpemVfc3Ry aWRlKGJ1Zik7CiAKIAlpZiAob3B0aW9ucy5ub19odykKLQkJYnVmLT5kYXRhID0gbWFsbG9jKHNp emUpOworCQlidWYtPnB0ciA9IG1hbGxvYyhzaXplKTsKIAllbHNlIHsKIAkJaWYgKG9wdGlvbnMu dXNlX2NwdV9tYXBzKQotCQkJZHJtX2ludGVsX2JvX21hcChidWYtPmJvLCAxKTsKKwkJCWludGVs X2J1Zl9jcHVfbWFwKGJ1ZiwgMSk7CiAJCWVsc2UKLQkJCWRybV9pbnRlbF9nZW1fYm9fbWFwX2d0 dChidWYtPmJvKTsKLQkJYnVmLT5kYXRhID0gYnVmLT5iby0+dmlydHVhbDsKKwkJCWludGVsX2J1 Zl9kZXZpY2VfbWFwKGJ1ZiwgMSk7CiAJfQotCi0JYnVmLT5udW1fdGlsZXMgPSBvcHRpb25zLnRp bGVzX3Blcl9idWY7CiB9CiAKIHN0YXRpYyB2b2lkIGV4Y2hhbmdlX2J1Zih2b2lkICphcnJheSwg dW5zaWduZWQgaSwgdW5zaWduZWQgaikKIHsKLQlzdHJ1Y3QgaWd0X2J1ZiAqYnVmX2FyciwgdG1w OworCXN0cnVjdCBpbnRlbF9idWYgKmJ1Zl9hcnIsIHRtcDsKIAlidWZfYXJyID0gYXJyYXk7CiAK LQltZW1jcHkoJnRtcCwgJmJ1Zl9hcnJbaV0sIHNpemVvZihzdHJ1Y3QgaWd0X2J1ZikpOwotCW1l bWNweSgmYnVmX2FycltpXSwgJmJ1Zl9hcnJbal0sIHNpemVvZihzdHJ1Y3QgaWd0X2J1ZikpOwot CW1lbWNweSgmYnVmX2FycltqXSwgJnRtcCwgc2l6ZW9mKHN0cnVjdCBpZ3RfYnVmKSk7CisJbWVt Y3B5KCZ0bXAsICZidWZfYXJyW2ldLCBzaXplb2Yoc3RydWN0IGludGVsX2J1ZikpOworCW1lbWNw eSgmYnVmX2FycltpXSwgJmJ1Zl9hcnJbal0sIHNpemVvZihzdHJ1Y3QgaW50ZWxfYnVmKSk7CisJ bWVtY3B5KCZidWZfYXJyW2pdLCAmdG1wLCBzaXplb2Yoc3RydWN0IGludGVsX2J1ZikpOwogfQog CiAKQEAgLTU3Nyw3ICs1ODQsNyBAQCBzdGF0aWMgdm9pZCBpbml0X3NldCh1bnNpZ25lZCBzZXQp CiAKIAkJc2FuaXRpemVfc3RyaWRlKCZidWZmZXJzW3NldF1baV0pOwogCi0JCWdlbV9zZXRfdGls aW5nKGRybV9mZCwgYnVmZmVyc1tzZXRdW2ldLmJvLT5oYW5kbGUsCisJCWdlbV9zZXRfdGlsaW5n KGRybV9mZCwgYnVmZmVyc1tzZXRdW2ldLmhhbmRsZSwKIAkJCSAgICAgICBidWZmZXJzW3NldF1b aV0udGlsaW5nLAogCQkJICAgICAgIGJ1ZmZlcnNbc2V0XVtpXS5zdXJmYWNlWzBdLnN0cmlkZSk7 CiAKQEAgLTU5OCw4ICs2MDUsOSBAQCBzdGF0aWMgdm9pZCBjb3B5X3RpbGVzKHVuc2lnbmVkICpw ZXJtdXRhdGlvbikKIHsKIAl1bnNpZ25lZCBzcmNfdGlsZSwgc3JjX2J1Zl9pZHgsIHNyY194LCBz cmNfeTsKIAl1bnNpZ25lZCBkc3RfdGlsZSwgZHN0X2J1Zl9pZHgsIGRzdF94LCBkc3RfeTsKLQlz dHJ1Y3QgaWd0X2J1ZiAqc3JjX2J1ZiwgKmRzdF9idWY7CisJc3RydWN0IGludGVsX2J1ZiAqc3Jj X2J1ZiwgKmRzdF9idWY7CiAJaW50IGksIGlkeDsKKwogCWZvciAoaSA9IDA7IGkgPCBudW1fdG90 YWxfdGlsZXM7IGkrKykgewogCQkvKiB0aWxlX3Blcm11dGF0aW9uIGlzIGluZGVwZW5kZW50IG9m IGN1cnJlbnRfcGVybXV0YXRpb24sIHNvCiAJCSAqIGFidXNlIGl0IHRvIHJhbmRvbWl6ZSB0aGUg b3JkZXIgb2YgdGhlIHNyYyBib3MgKi8KQEAgLTYyMCwxMCArNjI4LDEwIEBAIHN0YXRpYyB2b2lk IGNvcHlfdGlsZXModW5zaWduZWQgKnBlcm11dGF0aW9uKQogCQkJaWd0X2luZm8oImNvcHlpbmcg dGlsZSAlaSBmcm9tICVpICglaSwgJWkpIHRvICVpICglaSwgJWkpIiwgaSwgdGlsZV9wZXJtdXRh dGlvbltpXSwgc3JjX2J1Zl9pZHgsIHNyY190aWxlLCBwZXJtdXRhdGlvbltpZHhdLCBkc3RfYnVm X2lkeCwgZHN0X3RpbGUpOwogCiAJCWlmIChvcHRpb25zLm5vX2h3KSB7Ci0JCQljcHVjcHkyZChz cmNfYnVmLT5kYXRhLAorCQkJY3B1Y3B5MmQoc3JjX2J1Zi0+cHRyLAogCQkJCSBzcmNfYnVmLT5z dXJmYWNlWzBdLnN0cmlkZSAvIHNpemVvZih1aW50MzJfdCksCiAJCQkJIHNyY194LCBzcmNfeSwK LQkJCQkgZHN0X2J1Zi0+ZGF0YSwKKwkJCQkgZHN0X2J1Zi0+cHRyLAogCQkJCSBkc3RfYnVmLT5z dXJmYWNlWzBdLnN0cmlkZSAvIHNpemVvZih1aW50MzJfdCksCiAJCQkJIGRzdF94LCBkc3RfeSwK IAkJCQkgaSk7CkBAIC02MzUsNyArNjQzLDcgQEAgc3RhdGljIHZvaWQgY29weV90aWxlcyh1bnNp Z25lZCAqcGVybXV0YXRpb24pCiAJCX0KIAl9CiAKLQlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaChi YXRjaCk7CisJaW50ZWxfYmJfZmx1c2hfYmxpdChpYmIpOwogfQogCiBzdGF0aWMgdm9pZCBzYW5p dGl6ZV90aWxlc19wZXJfYnVmKHZvaWQpCkBAIC03NTcsNiArNzY1LDcgQEAgc3RhdGljIHZvaWQg aW5pdCh2b2lkKQogewogCWludCBpOwogCXVuc2lnbmVkIHRtcDsKKwl1aW50MzJfdCBzdHJpZGUs IHdpZHRoLCBoZWlnaHQsIGJwcDsKIAogCWlmIChvcHRpb25zLm51bV9idWZmZXJzID09IDApIHsK IAkJdG1wID0gZ2VtX2FwZXJ0dXJlX3NpemUoZHJtX2ZkKTsKQEAgLTc2NywyMiArNzc2LDI1IEBA IHN0YXRpYyB2b2lkIGluaXQodm9pZCkKIAl9IGVsc2UKIAkJbnVtX2J1ZmZlcnMgPSBvcHRpb25z Lm51bV9idWZmZXJzOwogCi0JYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChkcm1f ZmQsIDQwOTYpOwotCWRybV9pbnRlbF9idWZtZ3JfZ2VtX2VuYWJsZV9yZXVzZShidWZtZ3IpOwot CWRybV9pbnRlbF9idWZtZ3JfZ2VtX2VuYWJsZV9mZW5jZWRfcmVsb2NzKGJ1Zm1ncik7CiAJbnVt X2ZlbmNlcyA9IGdlbV9hdmFpbGFibGVfZmVuY2VzKGRybV9mZCk7CiAJaWd0X2Fzc2VydF9sdCg0 LCBudW1fZmVuY2VzKTsKLQliYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGJ1Zm1nciwg ZGV2aWQpOwogCi0JYnVzeV9ibyA9IGRybV9pbnRlbF9ib19hbGxvYyhidWZtZ3IsICJ0aWxlZCBi byIsIEJVU1lfQlVGX1NJWkUsIDQwOTYpOwotCWlmIChvcHRpb25zLmZvcmNlZF90aWxpbmcgPj0g MCkKLQkJZ2VtX3NldF90aWxpbmcoZHJtX2ZkLCBidXN5X2JvLT5oYW5kbGUsIG9wdGlvbnMuZm9y Y2VkX3RpbGluZywgNDA5Nik7CisJYm9wcyA9IGJ1Zl9vcHNfY3JlYXRlKGRybV9mZCk7CisJaWJi ID0gaW50ZWxfYmJfY3JlYXRlKGRybV9mZCwgNDA5Nik7CisKKwlzdHJpZGUgPSA0MDk2OworCWJw cCA9IDMyOworCXdpZHRoID0gc3RyaWRlIC8gKGJwcCAvIDgpOworCWhlaWdodCA9IEJVU1lfQlVG X1NJWkUgLyBzdHJpZGU7CisJaW50ZWxfYnVmX2luaXQoYm9wcywgJmJ1c3lfYm8sCisJCSAgICAg ICB3aWR0aCwgaGVpZ2h0LCBicHAsIDAsIG9wdGlvbnMuZm9yY2VkX3RpbGluZywKKwkJICAgICAg IEk5MTVfQ09NUFJFU1NJT05fTk9ORSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2J1ZmZlcnM7 IGkrKykgewogCQlpbml0X2J1ZmZlcigmYnVmZmVyc1swXVtpXSwgb3B0aW9ucy5zY3JhdGNoX2J1 Zl9zaXplKTsKIAkJaW5pdF9idWZmZXIoJmJ1ZmZlcnNbMV1baV0sIG9wdGlvbnMuc2NyYXRjaF9i dWZfc2l6ZSk7CiAKLQkJbnVtX3RvdGFsX3RpbGVzICs9IGJ1ZmZlcnNbMF1baV0ubnVtX3RpbGVz OworCQludW1fdG90YWxfdGlsZXMgKz0gb3B0aW9ucy50aWxlc19wZXJfYnVmOwogCX0KIAljdXJy ZW50X3NldCA9IDA7CiAKQEAgLTc5Miw3ICs4MDQsNyBAQCBzdGF0aWMgdm9pZCBpbml0KHZvaWQp CiAKIHN0YXRpYyB2b2lkIGNoZWNrX3JlbmRlcl9jb3B5ZnVuYyh2b2lkKQogewotCXN0cnVjdCBp Z3RfYnVmIHNyYywgZHN0OworCXN0cnVjdCBpbnRlbF9idWYgc3JjLCBkc3Q7CiAJdWludDMyX3Qg KnB0cjsKIAlpbnQgaSwgaiwgcGFzczsKIApAQCAtODAzLDE3ICs4MTUsMTggQEAgc3RhdGljIHZv aWQgY2hlY2tfcmVuZGVyX2NvcHlmdW5jKHZvaWQpCiAJaW5pdF9idWZmZXIoJmRzdCwgb3B0aW9u cy5zY3JhdGNoX2J1Zl9zaXplKTsKIAogCWZvciAocGFzcyA9IDA7IHBhc3MgPCAxNjsgcGFzcysr KSB7Ci0JCWludCBzeCA9IHJhbmRvbSgpICUgKGlndF9idWZfd2lkdGgoJnNyYyktb3B0aW9ucy50 aWxlX3NpemUpOwotCQlpbnQgc3kgPSByYW5kb20oKSAlIChpZ3RfYnVmX2hlaWdodCgmc3JjKS1v cHRpb25zLnRpbGVfc2l6ZSk7Ci0JCWludCBkeCA9IHJhbmRvbSgpICUgKGlndF9idWZfd2lkdGgo JmRzdCktb3B0aW9ucy50aWxlX3NpemUpOwotCQlpbnQgZHkgPSByYW5kb20oKSAlIChpZ3RfYnVm X2hlaWdodCgmZHN0KS1vcHRpb25zLnRpbGVfc2l6ZSk7CisJCWludCBzeCA9IHJhbmRvbSgpICUg KGludGVsX2J1Zl93aWR0aCgmc3JjKS1vcHRpb25zLnRpbGVfc2l6ZSk7CisJCWludCBzeSA9IHJh bmRvbSgpICUgKGludGVsX2J1Zl9oZWlnaHQoJnNyYyktb3B0aW9ucy50aWxlX3NpemUpOworCQlp bnQgZHggPSByYW5kb20oKSAlIChpbnRlbF9idWZfd2lkdGgoJmRzdCktb3B0aW9ucy50aWxlX3Np emUpOworCQlpbnQgZHkgPSByYW5kb20oKSAlIChpbnRlbF9idWZfaGVpZ2h0KCZkc3QpLW9wdGlv bnMudGlsZV9zaXplKTsKIAogCQlpZiAob3B0aW9ucy51c2VfY3B1X21hcHMpCiAJCQlzZXRfdG9f Y3B1X2RvbWFpbigmc3JjLCAxKTsKIAotCQltZW1zZXQoc3JjLmRhdGEsIDB4ZmYsIG9wdGlvbnMu c2NyYXRjaF9idWZfc2l6ZSk7CisJCW1lbXNldChzcmMucHRyLCAweGZmLCBvcHRpb25zLnNjcmF0 Y2hfYnVmX3NpemUpOwogCQlmb3IgKGogPSAwOyBqIDwgb3B0aW9ucy50aWxlX3NpemU7IGorKykg ewotCQkJcHRyID0gKHVpbnQzMl90KikoKGNoYXIgKilzcmMuZGF0YSArIHN4KjQgKyAoc3kraikg KiBzcmMuc3VyZmFjZVswXS5zdHJpZGUpOworCQkJcHRyID0gKHVpbnQzMl90KikoKGNoYXIgKilz cmMucHRyICsgc3gqNCArCisJCQkJCSAgKHN5K2opICogc3JjLnN1cmZhY2VbMF0uc3RyaWRlKTsK IAkJCWZvciAoaSA9IDA7IGkgPCBvcHRpb25zLnRpbGVfc2l6ZTsgaSsrKQogCQkJCXB0cltpXSA9 IGogKiBvcHRpb25zLnRpbGVfc2l6ZSArIGk7CiAJCX0KQEAgLTgyNCw3ICs4MzcsOCBAQCBzdGF0 aWMgdm9pZCBjaGVja19yZW5kZXJfY29weWZ1bmModm9pZCkKIAkJCXNldF90b19jcHVfZG9tYWlu KCZkc3QsIDApOwogCiAJCWZvciAoaiA9IDA7IGogPCBvcHRpb25zLnRpbGVfc2l6ZTsgaisrKSB7 Ci0JCQlwdHIgPSAodWludDMyX3QqKSgoY2hhciAqKWRzdC5kYXRhICsgZHgqNCArIChkeStqKSAq IGRzdC5zdXJmYWNlWzBdLnN0cmlkZSk7CisJCQlwdHIgPSAodWludDMyX3QqKSgoY2hhciAqKWRz dC5wdHIgKyBkeCo0ICsKKwkJCQkJICAoZHkraikgKiBkc3Quc3VyZmFjZVswXS5zdHJpZGUpOwog CQkJZm9yIChpID0gMDsgaSA8IG9wdGlvbnMudGlsZV9zaXplOyBpKyspCiAJCQkJaWYgKHB0cltp XSAhPSBqICogb3B0aW9ucy50aWxlX3NpemUgKyBpKSB7CiAJCQkJCWlndF9pbmZvKCJyZW5kZXIg Y29weWZ1bmMgbWlzbWF0Y2ggYXQgKCVkLCAlZCk6IGZvdW5kICVkLCBleHBlY3RlZCAlZFxuIiwg aSwgaiwgcHRyW2ldLCBqICogb3B0aW9ucy50aWxlX3NpemUgKyBpKTsKQEAgLTkwOSw4ICs5MjMs OCBAQCBpZ3Rfc2ltcGxlX21haW5fYXJncygiZHM6ZzpjOnQ6cmJ1eG1vOmZwOiIsCiAKIAlpZ3Rf aW5mbygibnVtIGZhaWxlZCB0aWxlcyAldSwgbWF4IGluY29oZXJlbnQgYnl0ZXMgJXpkXG4iLCBz dGF0cy5udW1fZmFpbGVkLCBzdGF0cy5tYXhfZmFpbGVkX3JlYWRzICogc2l6ZW9mKHVpbnQzMl90 KSk7CiAKLQlpbnRlbF9iYXRjaGJ1ZmZlcl9mcmVlKGJhdGNoKTsKLQlkcm1faW50ZWxfYnVmbWdy X2Rlc3Ryb3koYnVmbWdyKTsKKwlpbnRlbF9iYl9kZXN0cm95KGliYik7CisJYnVmX29wc19kZXN0 cm95KGJvcHMpOwogCiAJY2xvc2UoZHJtX2ZkKTsKIApkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2Jp Z19mYi5jIGIvdGVzdHMva21zX2JpZ19mYi5jCmluZGV4IGE3NTRiMjk5Li5hOTkwN2VhMyAxMDA2 NDQKLS0tIGEvdGVzdHMva21zX2JpZ19mYi5jCisrKyBiL3Rlc3RzL2ttc19iaWdfZmIuYwpAQCAt NDYsMjggKzQ2LDM2IEBAIHR5cGVkZWYgc3RydWN0IHsKIAlpbnQgYmlnX2ZiX3dpZHRoLCBiaWdf ZmJfaGVpZ2h0OwogCXVpbnQ2NF90IHJhbV9zaXplLCBhcGVyX3NpemUsIG1hcHBhYmxlX3NpemU7 CiAJaWd0X3JlbmRlcl9jb3B5ZnVuY190IHJlbmRlcl9jb3B5OwotCWRybV9pbnRlbF9idWZtZ3Ig KmJ1Zm1ncjsKLQlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOworCXN0cnVjdCBidWZf b3BzICpib3BzOworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOwogfSBkYXRhX3Q7CiAKIHN0YXRpYyB2 b2lkIGluaXRfYnVmKGRhdGFfdCAqZGF0YSwKLQkJICAgICBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAor CQkgICAgIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwKIAkJICAgICBjb25zdCBzdHJ1Y3QgaWd0X2Zi ICpmYiwKLQkJICAgICBjb25zdCBjaGFyICpuYW1lKQorCQkgICAgIGNvbnN0IGNoYXIgKmJ1Zl9u YW1lKQogeworCXVpbnQzMl90IG5hbWUsIGhhbmRsZSwgdGlsaW5nLCBzdHJpZGUsIHdpZHRoLCBo ZWlnaHQsIGJwcCwgc2l6ZTsKKwogCWlndF9hc3NlcnRfZXEoZmItPm9mZnNldHNbMF0sIDApOwog Ci0JYnVmLT5ibyA9IGdlbV9oYW5kbGVfdG9fbGliZHJtX2JvKGRhdGEtPmJ1Zm1nciwgZGF0YS0+ ZHJtX2ZkLAotCQkJCQkgIG5hbWUsIGZiLT5nZW1faGFuZGxlKTsKLQlidWYtPnRpbGluZyA9IGln dF9mYl9tb2RfdG9fdGlsaW5nKGZiLT5tb2RpZmllcik7Ci0JYnVmLT5zdXJmYWNlWzBdLnN0cmlk ZSA9IGZiLT5zdHJpZGVzWzBdOwotCWJ1Zi0+YnBwID0gZmItPnBsYW5lX2JwcFswXTsKLQlidWYt PnN1cmZhY2VbMF0uc2l6ZSA9IGZiLT5zaXplOworCXRpbGluZyA9IGlndF9mYl9tb2RfdG9fdGls aW5nKGZiLT5tb2RpZmllcik7CisJc3RyaWRlID0gZmItPnN0cmlkZXNbMF07CisJYnBwID0gZmIt PnBsYW5lX2JwcFswXTsKKwlzaXplID0gZmItPnNpemU7CisJd2lkdGggPSBzdHJpZGUgLyAoYnBw IC8gOCk7CisJaGVpZ2h0ID0gc2l6ZSAvIHN0cmlkZTsKKworCW5hbWUgPSBnZW1fZmxpbmsoZGF0 YS0+ZHJtX2ZkLCBmYi0+Z2VtX2hhbmRsZSk7CisJaGFuZGxlID0gZ2VtX29wZW4oZGF0YS0+ZHJt X2ZkLCBuYW1lKTsKKwlpbnRlbF9idWZfaW5pdF91c2luZ19oYW5kbGUoZGF0YS0+Ym9wcywgaGFu ZGxlLCBidWYsIHdpZHRoLCBoZWlnaHQsIGJwcCwKKwkJCQkgICAgMCwgdGlsaW5nLCAwKTsKKwlp bnRlbF9idWZfc2V0X25hbWUoYnVmLCBidWZfbmFtZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGZpbmlf YnVmKHN0cnVjdCBpZ3RfYnVmICpidWYpCitzdGF0aWMgdm9pZCBmaW5pX2J1ZihzdHJ1Y3QgaW50 ZWxfYnVmICpidWYpCiB7Ci0JZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGJ1Zi0+Ym8pOworCWlu dGVsX2J1Zl9jbG9zZShidWYtPmJvcHMsIGJ1Zik7CiB9CiAKIHN0YXRpYyB2b2lkIGNvcHlfcGF0 dGVybihkYXRhX3QgKmRhdGEsCkBAIC03NSw3ICs4Myw3IEBAIHN0YXRpYyB2b2lkIGNvcHlfcGF0 dGVybihkYXRhX3QgKmRhdGEsCiAJCQkgc3RydWN0IGlndF9mYiAqc3JjX2ZiLCBpbnQgc3gsIGlu dCBzeSwKIAkJCSBpbnQgdywgaW50IGgpCiB7Ci0Jc3RydWN0IGlndF9idWYgc3JjID0ge30sIGRz dCA9IHt9OworCXN0cnVjdCBpbnRlbF9idWYgc3JjID0ge30sIGRzdCA9IHt9OwogCiAJaW5pdF9i dWYoZGF0YSwgJnNyYywgc3JjX2ZiLCAiYmlnIGZiIHNyYyIpOwogCWluaXRfYnVmKGRhdGEsICZk c3QsIGRzdF9mYiwgImJpZyBmYiBkc3QiKTsKQEAgLTkxLDcgKzk5LDcgQEAgc3RhdGljIHZvaWQg Y29weV9wYXR0ZXJuKGRhdGFfdCAqZGF0YSwKIAkgKiByZW5kZXJlZCB3aXRoIHRoZSBibGl0dGVy L3JlbmRlciBlbmdpbmUuCiAJICovCiAJaWYgKGRhdGEtPnJlbmRlcl9jb3B5KSB7Ci0JCWRhdGEt PnJlbmRlcl9jb3B5KGRhdGEtPmJhdGNoLCBOVUxMLCAmc3JjLCBzeCwgc3ksIHcsIGgsICZkc3Qs IGR4LCBkeSk7CisJCWRhdGEtPnJlbmRlcl9jb3B5KGRhdGEtPmliYiwgMCwgJnNyYywgc3gsIHN5 LCB3LCBoLCAmZHN0LCBkeCwgZHkpOwogCX0gZWxzZSB7CiAJCXcgPSBtaW4odywgc3JjX2ZiLT53 aWR0aCAtIHN4KTsKIAkJdyA9IG1pbih3LCBkc3RfZmItPndpZHRoIC0gZHgpOwpAQCAtOTksMTQg KzEwNywxNiBAQCBzdGF0aWMgdm9pZCBjb3B5X3BhdHRlcm4oZGF0YV90ICpkYXRhLAogCQloID0g bWluKGgsIHNyY19mYi0+aGVpZ2h0IC0gc3kpOwogCQloID0gbWluKGgsIGRzdF9mYi0+aGVpZ2h0 IC0gZHkpOwogCi0JCWludGVsX2JsdF9jb3B5KGRhdGEtPmJhdGNoLCBzcmMuYm8sIHN4LCBzeSwK LQkJCSAgICAgICBzcmMuc3VyZmFjZVswXS5zdHJpZGUsCi0JCQkgICAgICAgZHN0LmJvLCBkeCwg ZHksIGRzdC5zdXJmYWNlWzBdLnN0cmlkZSwgdywgaCwKLQkJCSAgICAgICBkc3QuYnBwKTsKKwkJ aW50ZWxfYmJfYmx0X2NvcHkoZGF0YS0+aWJiLCAmc3JjLCBzeCwgc3ksIHNyYy5zdXJmYWNlWzBd LnN0cmlkZSwKKwkJCQkgICZkc3QsIGR4LCBkeSwgZHN0LnN1cmZhY2VbMF0uc3RyaWRlLCB3LCBo LCBkc3QuYnBwKTsKIAl9CiAKIAlmaW5pX2J1ZigmZHN0KTsKIAlmaW5pX2J1Zigmc3JjKTsKKwor CS8qIGludGVsX2JiIGNhY2hlIGRvZXNuJ3Qga25vdyB3aGVuIG9iamVjdHMgZGlzc2FwcGVhciwg c28KKwkgKiBsZXQncyBwdXJnZSB0aGUgY2FjaGUgKi8KKwlpbnRlbF9iYl9yZXNldChkYXRhLT5p YmIsIHRydWUpOwogfQogCiBzdGF0aWMgdm9pZCBnZW5lcmF0ZV9wYXR0ZXJuKGRhdGFfdCAqZGF0 YSwKQEAgLTY0OCw4ICs2NTgsOCBAQCBpZ3RfbWFpbgogCQlpZiAoaW50ZWxfZ2VuKGRhdGEuZGV2 aWQpID49IDQpCiAJCQlkYXRhLnJlbmRlcl9jb3B5ID0gaWd0X2dldF9yZW5kZXJfY29weWZ1bmMo ZGF0YS5kZXZpZCk7CiAKLQkJZGF0YS5idWZtZ3IgPSBkcm1faW50ZWxfYnVmbWdyX2dlbV9pbml0 KGRhdGEuZHJtX2ZkLCA0MDk2KTsKLQkJZGF0YS5iYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2Fs bG9jKGRhdGEuYnVmbWdyLCBkYXRhLmRldmlkKTsKKwkJZGF0YS5ib3BzID0gYnVmX29wc19jcmVh dGUoZGF0YS5kcm1fZmQpOworCQlkYXRhLmliYiA9IGludGVsX2JiX2NyZWF0ZShkYXRhLmRybV9m ZCwgNDA5Nik7CiAJfQogCiAJLyoKQEAgLTcwOCw3ICs3MTgsNyBAQCBpZ3RfbWFpbgogCWlndF9m aXh0dXJlIHsKIAkJaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS5kaXNwbGF5KTsKIAotCQlpbnRlbF9i YXRjaGJ1ZmZlcl9mcmVlKGRhdGEuYmF0Y2gpOwotCQlkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3ko ZGF0YS5idWZtZ3IpOworCQlpbnRlbF9iYl9kZXN0cm95KGRhdGEuaWJiKTsKKwkJYnVmX29wc19k ZXN0cm95KGRhdGEuYm9wcyk7CiAJfQogfQpkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2N1cnNvcl9j cmMuYyBiL3Rlc3RzL2ttc19jdXJzb3JfY3JjLmMKaW5kZXggZTk0OTE4NDcuLmJlMzdhNzVkIDEw MDY0NAotLS0gYS90ZXN0cy9rbXNfY3Vyc29yX2NyYy5jCisrKyBiL3Rlc3RzL2ttc19jdXJzb3Jf Y3JjLmMKQEAgLTY0LDExICs2NCwxMSBAQCB0eXBlZGVmIHN0cnVjdCB7CiAJaWd0X3BsYW5lX3Qg KmN1cnNvcjsKIAljYWlyb19zdXJmYWNlX3QgKnN1cmZhY2U7CiAJdWludDMyX3QgZGV2aWQ7Ci0J ZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOworCXN0cnVjdCBidWZfb3BzICpib3BzOwogCWlndF9y ZW5kZXJfY29weWZ1bmNfdCByZW5kZXJjb3B5OwotCWRybV9pbnRlbF9ibyAqIGRybWlib1syXTsK LQlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOwotCXN0cnVjdCBpZ3RfYnVmIGlndGJv WzJdOworCXVpbnQzMl90IGRybV9oYW5kbGVbMl07CisJc3RydWN0IGludGVsX2JiICppYmI7CisJ c3RydWN0IGludGVsX2J1ZiBpZ3Rib1syXTsKIAogfSBkYXRhX3Q7CiAKQEAgLTE1NSw3ICsxNTUs NyBAQCBzdGF0aWMgdm9pZCByZXN0b3JlX2ltYWdlKGRhdGFfdCAqZGF0YSkKIAogCWlmIChkYXRh LT5yZW5kZXJjb3B5ICE9IE5VTEwpIHsKIAkJLyogdXNlIHJlbmRlcmNvcHkgaWYgYXZhaWxhYmxl ICovCi0JCWRhdGEtPnJlbmRlcmNvcHkoZGF0YS0+YmF0Y2gsIE5VTEwsCisJCWRhdGEtPnJlbmRl cmNvcHkoZGF0YS0+aWJiLCAwLAogCQkJCSAmZGF0YS0+aWd0Ym9bUkVTVE9SRUJVRkZFUl0sIDAs IDAsCiAJCQkJIGRhdGEtPnByaW1hcnlfZmJbUkVTVE9SRUJVRkZFUl0ud2lkdGgsCiAJCQkJIGRh dGEtPnByaW1hcnlfZmJbUkVTVE9SRUJVRkZFUl0uaGVpZ2h0LApAQCAtMzgxLDE2ICszODEsMjUg QEAgc3RhdGljIHZvaWQgY2xlYW51cF9jcnRjKGRhdGFfdCAqZGF0YSkKIAlpZ3RfcmVtb3ZlX2Zi KGRhdGEtPmRybV9mZCwgJmRhdGEtPnByaW1hcnlfZmJbRlJPTlRCVUZGRVJdKTsKIAlpZ3RfcmVt b3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPnByaW1hcnlfZmJbUkVTVE9SRUJVRkZFUl0pOwog CisJaW50ZWxfYmJfZGVzdHJveShkYXRhLT5pYmIpOworCiAJaWd0X2Rpc3BsYXlfcmVzZXQoZGlz cGxheSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQoZGF0YV90ICpkYXRhLCBp bnQgYnVmZmVyKQogewotCWRhdGEtPmlndGJvW2J1ZmZlcl0uYm8gPSBkYXRhLT5kcm1pYm9bYnVm ZmVyXTsKLQlkYXRhLT5pZ3Rib1tidWZmZXJdLnN1cmZhY2VbMF0uc3RyaWRlID0gZGF0YS0+cHJp bWFyeV9mYltidWZmZXJdLnN0cmlkZXNbMF07Ci0JZGF0YS0+aWd0Ym9bYnVmZmVyXS50aWxpbmcg PSBkYXRhLT5wcmltYXJ5X2ZiW2J1ZmZlcl0ubW9kaWZpZXI7Ci0JZGF0YS0+aWd0Ym9bYnVmZmVy XS5zdXJmYWNlWzBdLnNpemUgPSBkYXRhLT5wcmltYXJ5X2ZiW2J1ZmZlcl0uc2l6ZTsKLQlkYXRh LT5pZ3Rib1tidWZmZXJdLmJwcCA9IGRhdGEtPnByaW1hcnlfZmJbYnVmZmVyXS5wbGFuZV9icHBb MF07CisJdWludDMyX3QgaGFuZGxlLCB0aWxpbmcsIHN0cmlkZSwgd2lkdGgsIGhlaWdodCwgYnBw LCBzaXplOworCisJaGFuZGxlID0gZGF0YS0+ZHJtX2hhbmRsZVtidWZmZXJdOworCXNpemUgPSBk YXRhLT5wcmltYXJ5X2ZiW2J1ZmZlcl0uc2l6ZTsKKwl0aWxpbmcgPSBkYXRhLT5wcmltYXJ5X2Zi W2J1ZmZlcl0ubW9kaWZpZXI7CisJc3RyaWRlID0gZGF0YS0+cHJpbWFyeV9mYltidWZmZXJdLnN0 cmlkZXNbMF07CisJYnBwID0gZGF0YS0+cHJpbWFyeV9mYltidWZmZXJdLnBsYW5lX2JwcFswXTsK Kwl3aWR0aCA9IHN0cmlkZSAvIChicHAgLyA4KTsKKwloZWlnaHQgPSBzaXplIC8gc3RyaWRlOwor CisJaW50ZWxfYnVmX2luaXRfdXNpbmdfaGFuZGxlKGRhdGEtPmJvcHMsIGhhbmRsZSwgJmRhdGEt PmlndGJvW2J1ZmZlcl0sCisJCQkJICAgIHdpZHRoLCBoZWlnaHQsIGJwcCwgMCwgdGlsaW5nLCAw KTsKIH0KIAogc3RhdGljIHZvaWQgcHJlcGFyZV9jcnRjKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1 dF90ICpvdXRwdXQsCkBAIC00NTAsNiArNDU5LDggQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9jcnRj KGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQsCiAJCWlndF9wYWludF90ZXN0X3Bh dHRlcm4oY3IsIGRhdGEtPnNjcmVlbncsIGRhdGEtPnNjcmVlbmgpOwogCQljYWlyb19kZXN0cm95 KGNyKTsKIAl9IGVsc2UgeworCQl1aW50MzJfdCBuYW1lOworCiAJCS8qIHN0b3JlIHRlc3QgaW1h Z2UgYXMgZmIgaWYgcmVuZGVyY29weSBpcyBhdmFpbGFibGUgKi8KIAkJY3IgPSBpZ3RfZ2V0X2Nh aXJvX2N0eChkYXRhLT5kcm1fZmQsCiAJCSAgICAgICAgICAgICAgICAgICAgICAgJmRhdGEtPnBy aW1hcnlfZmJbUkVTVE9SRUJVRkZFUl0pOwpAQCAtNDU3LDIyICs0NjgsMjAgQEAgc3RhdGljIHZv aWQgcHJlcGFyZV9jcnRjKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQsCiAJCWln dF9wYWludF90ZXN0X3BhdHRlcm4oY3IsIGRhdGEtPnNjcmVlbncsIGRhdGEtPnNjcmVlbmgpOwog CQlpZ3RfcHV0X2NhaXJvX2N0eChjcik7CiAKLQkJZGF0YS0+ZHJtaWJvW0ZST05UQlVGRkVSXSA9 IGdlbV9oYW5kbGVfdG9fbGliZHJtX2JvKGRhdGEtPmJ1Zm1nciwKLQkJCQkJCQkJICAgIGRhdGEt PmRybV9mZCwKLQkJCQkJCQkJICAgICIiLCBkYXRhLT5wcmltYXJ5X2ZiW0ZST05UQlVGRkVSXS5n ZW1faGFuZGxlKTsKLQkJaWd0X2Fzc2VydChkYXRhLT5kcm1pYm9bRlJPTlRCVUZGRVJdKTsKKwkJ bmFtZSA9IGdlbV9mbGluayhkYXRhLT5kcm1fZmQsCisJCQkJIGRhdGEtPnByaW1hcnlfZmJbRlJP TlRCVUZGRVJdLmdlbV9oYW5kbGUpOworCQlkYXRhLT5kcm1faGFuZGxlW0ZST05UQlVGRkVSXSA9 IGdlbV9vcGVuKGRhdGEtPmRybV9mZCwgbmFtZSk7CisJCWlndF9hc3NlcnQoZGF0YS0+ZHJtX2hh bmRsZVtGUk9OVEJVRkZFUl0pOwogCi0JCWRhdGEtPmRybWlib1tSRVNUT1JFQlVGRkVSXSA9IGdl bV9oYW5kbGVfdG9fbGliZHJtX2JvKGRhdGEtPmJ1Zm1nciwKLQkJCQkJCQkJICAgICAgZGF0YS0+ ZHJtX2ZkLAotCQkJCQkJCQkgICAgICAiIiwgZGF0YS0+cHJpbWFyeV9mYltSRVNUT1JFQlVGRkVS XS5nZW1faGFuZGxlKTsKLQkJaWd0X2Fzc2VydChkYXRhLT5kcm1pYm9bUkVTVE9SRUJVRkZFUl0p OworCQluYW1lID0gZ2VtX2ZsaW5rKGRhdGEtPmRybV9mZCwKKwkJCQkgZGF0YS0+cHJpbWFyeV9m YltSRVNUT1JFQlVGRkVSXS5nZW1faGFuZGxlKTsKKwkJZGF0YS0+ZHJtX2hhbmRsZVtSRVNUT1JF QlVGRkVSXSA9IGdlbV9vcGVuKGRhdGEtPmRybV9mZCwgbmFtZSk7CisJCWlndF9hc3NlcnQoZGF0 YS0+ZHJtX2hhbmRsZVtSRVNUT1JFQlVGRkVSXSk7CiAKIAkJc2NyYXRjaF9idWZfaW5pdChkYXRh LCBSRVNUT1JFQlVGRkVSKTsKIAkJc2NyYXRjaF9idWZfaW5pdChkYXRhLCBGUk9OVEJVRkZFUik7 CiAKLQkJZGF0YS0+YmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhkYXRhLT5idWZtZ3Is Ci0JCQkJCQkgICAgICBkYXRhLT5kZXZpZCk7Ci0JCWlndF9hc3NlcnQoZGF0YS0+YmF0Y2gpOwor CQlkYXRhLT5pYmIgPSBpbnRlbF9iYl9jcmVhdGUoZGF0YS0+ZHJtX2ZkLCA0MDk2KTsKIAl9CiAK IAlpZ3RfcGlwZV9jcmNfc3RhcnQoZGF0YS0+cGlwZV9jcmMpOwpAQCAtODMyLDEwICs4NDEsNyBA QCBpZ3RfbWFpbgogCQlpZ3RfZGlzcGxheV9yZXF1aXJlKCZkYXRhLmRpc3BsYXksIGRhdGEuZHJt X2ZkKTsKIAogCQlpZiAoaXNfaTkxNV9kZXZpY2UoZGF0YS5kcm1fZmQpKSB7Ci0JCQlkYXRhLmJ1 Zm1nciA9IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQoZGF0YS5kcm1fZmQsIDQwOTYpOwotCQkJ aWd0X2Fzc2VydChkYXRhLmJ1Zm1ncik7Ci0JCQlkcm1faW50ZWxfYnVmbWdyX2dlbV9lbmFibGVf cmV1c2UoZGF0YS5idWZtZ3IpOwotCisJCQlkYXRhLmJvcHMgPSBidWZfb3BzX2NyZWF0ZShkYXRh LmRybV9mZCk7CiAJCQlkYXRhLmRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChkYXRhLmRybV9m ZCk7CiAJCQlkYXRhLnJlbmRlcmNvcHkgPSBpZ3RfZ2V0X3JlbmRlcl9jb3B5ZnVuYyhkYXRhLmRl dmlkKTsKIAkJfQpAQCAtODU0LDEyICs4NjAsNyBAQCBpZ3RfbWFpbgogCQkJaWd0X3BpcGVfY3Jj X3N0b3AoZGF0YS5waXBlX2NyYyk7CiAJCQlpZ3RfcGlwZV9jcmNfZnJlZShkYXRhLnBpcGVfY3Jj KTsKIAkJfQotCi0JCWlmIChkYXRhLmJ1Zm1nciAhPSBOVUxMKSB7Ci0JCQlpbnRlbF9iYXRjaGJ1 ZmZlcl9mcmVlKGRhdGEuYmF0Y2gpOwotCQkJZHJtX2ludGVsX2J1Zm1ncl9kZXN0cm95KGRhdGEu YnVmbWdyKTsKLQkJfQotCisJCWJ1Zl9vcHNfZGVzdHJveShkYXRhLmJvcHMpOwogCQlpZ3RfZGlz cGxheV9maW5pKCZkYXRhLmRpc3BsYXkpOwogCX0KIH0KLS0gCjIuMjYuMAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QK aWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==