From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v7 1/6] iommu: introduce the concept of DFN... Date: Wed, 12 Sep 2018 12:30:23 +0100 Message-ID: <20180912113028.19610-2-paul.durrant@citrix.com> References: <20180912113028.19610-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1g03Lw-0005kR-CE for xen-devel@lists.xenproject.org; Wed, 12 Sep 2018 11:30:36 +0000 In-Reply-To: <20180912113028.19610-1-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Kevin Tian , Stefano Stabellini , Wei Liu , Suravee Suthikulpanit , Julien Grall , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org Li4ubWVhbmluZyAnZGV2aWNlIERNQSBmcmFtZSBudW1iZXInIGkuZS4gYSBmcmFtZSBudW1iZXIg bWFwcGVkIGluIHRoZSBJT01NVQoocmF0aGVyIHRoYW4gdGhlIE1NVSkgYW5kIGhlbmNlIHVzZWQg Zm9yIERNQSBhZGRyZXNzIHRyYW5zbGF0aW9uLgoKVGhpcyBwYXRjaCBpcyBhIGxhcmdlbHkgY29z bWV0aWMgY2hhbmdlIHRoYXQgc3Vic3RpdHV0ZXMgdGhlIHRlcm1zICdnZm4nCmFuZCAnZ2FkZHIn IGZvciAnZGZuJyBhbmQgJ2RhZGRyJyBpbiBhbGwgdGhlIHBsYWNlcyB3aGVyZSB0aGUgZnJhbWUg bnVtYmVyCm9yIGFkZHJlc3MgcmVsYXRlIHRvIGEgZGV2aWNlIHJhdGhlciB0aGFuIHRoZSBDUFUu CgpUaGUgcGFydHMgdGhhdCBhcmUgbm90IHB1cmVseSBjb3NtZXRpYyBhcmU6CgogLSB0aGUgaW50 cm9kdWN0aW9uIG9mIGEgdHlwZS1zYWZlIGRlY2xhcmF0aW9uIG9mIGRmbl90IGFuZCBkZWZpbml0 aW9uIG9mCiAgIElOVkFMSURfREZOIHRvIG1ha2UgdGhlIHN1YnN0aXR1dGlvbiBvZiBnZm5feChJ TlZBTElEX0dGTikgbWVjaGFuaWNhbC4KIC0gdGhlIGludHJvZHVjdGlvbiBvZiBfX2Rmbl90b19k YWRkciBhbmQgX19kYWRkcl90b19kZm4gKGFuZCB0eXBlLXNhZmUKICAgdmFyaWFudHMgd2l0aG91 dCB0aGUgbGVhZGluZyBfXykgd2l0aCBzb21lIHVzZSBvZiB0aGUgZm9ybWVyLgoKU3Vic2VxdWVu dCBwYXRjaGVzIHdpbGwgY29udmVydCBjb2RlIHRvIG1ha2UgdXNlIG9mIHR5cGUtc2FmZSBERk5z LgoKU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4K LS0tCkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpDYzogU3VyYXZlZSBTdXRoaWt1 bHBhbml0IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVs bGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdy YWxsQGFybS5jb20+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBLZXZp biBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KCnY3OgogLSBSZS1uYW1lIEJGTiAtPiBERk4g YXMgcmVxdWVzdGVkIGJ5IEphbi4KIC0gRHJvcHBlZCBXZWkncyBSLWIgYmVjYXVzZSBvZiBuYW1l IGNoYW5nZS4KCnY2OgogLSBEcm9wcGVkIGNoYW5nZXMgdG8gJ21mbicgc2VjdGlvbiBpbiB4ZW4v bW0uaCBhcyBzdWdnZXN0ZWQgYnkgS2V2aW4uCgp2MzoKIC0gR2V0IHJpZCBvZiBpbnRlcm1lZGlh dGUgJ2ZyYW1lJyB2YXJpYWJsZXMgYWdhaW4uCgp2MjoKIC0gQWRkcmVzc2VkIGNvbW1lbnRzIGZy b20gSmFuLgotLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9jbWQuYyAgICAg fCAxOCArKystLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMgICAg IHwgNzggKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL2FtZC9wY2lfYW1kX2lvbW11LmMgfCAgMiArLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv YXJtL3NtbXUuYyAgICAgICAgICB8IDE2ICsrKy0tLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gv aW9tbXUuYyAgICAgICAgICAgICB8IDI4ICsrKysrLS0tLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC92dGQvaW9tbXUuYyAgICAgICAgIHwgMzAgKysrKystLS0tLS0KIHhlbi9pbmNsdWRlL3hl bi9pb21tdS5oICAgICAgICAgICAgICAgICAgICAgfCAzOCArKysrKysrKysrKy0tLQogeGVuL2lu Y2x1ZGUveGVuL21tLmggICAgICAgICAgICAgICAgICAgICAgICB8ICA1ICsrCiA4IGZpbGVzIGNo YW5nZWQsIDEyMyBpbnNlcnRpb25zKCspLCA5MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfY21kLmMgYi94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC9hbWQvaW9tbXVfY21kLmMKaW5kZXggMDgyNDdmYTM1NC4uZDRkMDcxZTUzZSAxMDA2 NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2NtZC5jCisrKyBiL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9jbWQuYwpAQCAtMjg0LDcgKzI4NCw3IEBA IHZvaWQgaW52YWxpZGF0ZV9pb21tdV9hbGwoc3RydWN0IGFtZF9pb21tdSAqaW9tbXUpCiB9CiAK IHZvaWQgYW1kX2lvbW11X2ZsdXNoX2lvdGxiKHU4IGRldmZuLCBjb25zdCBzdHJ1Y3QgcGNpX2Rl diAqcGRldiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGdhZGRyLCB1bnNp Z25lZCBpbnQgb3JkZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkYWRkcl90IGRhZGRy LCB1bnNpZ25lZCBpbnQgb3JkZXIpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKICAgICBz dHJ1Y3QgYW1kX2lvbW11ICppb21tdTsKQEAgLTMxNSwxMiArMzE1LDEyIEBAIHZvaWQgYW1kX2lv bW11X2ZsdXNoX2lvdGxiKHU4IGRldmZuLCBjb25zdCBzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAog ICAgIC8qIHNlbmQgSU5WQUxJREFURV9JT1RMQl9QQUdFUyBjb21tYW5kICovCiAgICAgc3Bpbl9s b2NrX2lycXNhdmUoJmlvbW11LT5sb2NrLCBmbGFncyk7Ci0gICAgaW52YWxpZGF0ZV9pb3RsYl9w YWdlcyhpb21tdSwgbWF4cGVuZCwgMCwgcXVldWVpZCwgZ2FkZHIsIHJlcV9pZCwgb3JkZXIpOwor ICAgIGludmFsaWRhdGVfaW90bGJfcGFnZXMoaW9tbXUsIG1heHBlbmQsIDAsIHF1ZXVlaWQsIGRh ZGRyLCByZXFfaWQsIG9yZGVyKTsKICAgICBmbHVzaF9jb21tYW5kX2J1ZmZlcihpb21tdSk7CiAg ICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9tbXUtPmxvY2ssIGZsYWdzKTsKIH0KIAotc3Rh dGljIHZvaWQgYW1kX2lvbW11X2ZsdXNoX2FsbF9pb3RsYnMoc3RydWN0IGRvbWFpbiAqZCwgdWlu dDY0X3QgZ2FkZHIsCitzdGF0aWMgdm9pZCBhbWRfaW9tbXVfZmx1c2hfYWxsX2lvdGxicyhzdHJ1 Y3QgZG9tYWluICpkLCBkYWRkcl90IGRhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IG9yZGVyKQogewogICAgIHN0cnVjdCBwY2lfZGV2ICpw ZGV2OwpAQCAtMzMzLDcgKzMzMyw3IEBAIHN0YXRpYyB2b2lkIGFtZF9pb21tdV9mbHVzaF9hbGxf aW90bGJzKHN0cnVjdCBkb21haW4gKmQsIHVpbnQ2NF90IGdhZGRyLAogICAgICAgICB1OCBkZXZm biA9IHBkZXYtPmRldmZuOwogCiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIGFtZF9pb21tdV9m bHVzaF9pb3RsYihkZXZmbiwgcGRldiwgZ2FkZHIsIG9yZGVyKTsKKyAgICAgICAgICAgIGFtZF9p b21tdV9mbHVzaF9pb3RsYihkZXZmbiwgcGRldiwgZGFkZHIsIG9yZGVyKTsKICAgICAgICAgICAg IGRldmZuICs9IHBkZXYtPnBoYW50b21fc3RyaWRlOwogICAgICAgICB9IHdoaWxlICggZGV2Zm4g IT0gcGRldi0+ZGV2Zm4gJiYKICAgICAgICAgICAgICAgICAgIFBDSV9TTE9UKGRldmZuKSA9PSBQ Q0lfU0xPVChwZGV2LT5kZXZmbikgKTsKQEAgLTM0Miw3ICszNDIsNyBAQCBzdGF0aWMgdm9pZCBh bWRfaW9tbXVfZmx1c2hfYWxsX2lvdGxicyhzdHJ1Y3QgZG9tYWluICpkLCB1aW50NjRfdCBnYWRk ciwKIAogLyogRmx1c2ggaW9tbXUgY2FjaGUgYWZ0ZXIgcDJtIGNoYW5nZXMuICovCiBzdGF0aWMg dm9pZCBfYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGdhZGRyLCB1bnNpZ25lZCBpbnQgb3Jk ZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhZGRyX3QgZGFkZHIsIHVu c2lnbmVkIGludCBvcmRlcikKIHsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgIHN0cnVj dCBhbWRfaW9tbXUgKmlvbW11OwpAQCAtMzUyLDEzICszNTIsMTMgQEAgc3RhdGljIHZvaWQgX2Ft ZF9pb21tdV9mbHVzaF9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLAogICAgIGZvcl9lYWNoX2FtZF9p b21tdSAoIGlvbW11ICkKICAgICB7CiAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZpb21tdS0+ bG9jaywgZmxhZ3MpOwotICAgICAgICBpbnZhbGlkYXRlX2lvbW11X3BhZ2VzKGlvbW11LCBnYWRk ciwgZG9tX2lkLCBvcmRlcik7CisgICAgICAgIGludmFsaWRhdGVfaW9tbXVfcGFnZXMoaW9tbXUs IGRhZGRyLCBkb21faWQsIG9yZGVyKTsKICAgICAgICAgZmx1c2hfY29tbWFuZF9idWZmZXIoaW9t bXUpOwogICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpb21tdS0+bG9jaywgZmxhZ3Mp OwogICAgIH0KIAogICAgIGlmICggYXRzX2VuYWJsZWQgKQotICAgICAgICBhbWRfaW9tbXVfZmx1 c2hfYWxsX2lvdGxicyhkLCBnYWRkciwgb3JkZXIpOworICAgICAgICBhbWRfaW9tbXVfZmx1c2hf YWxsX2lvdGxicyhkLCBkYWRkciwgb3JkZXIpOwogfQogCiB2b2lkIGFtZF9pb21tdV9mbHVzaF9h bGxfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCkKQEAgLTM2Nyw5ICszNjcsOSBAQCB2b2lkIGFtZF9p b21tdV9mbHVzaF9hbGxfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCkKIH0KIAogdm9pZCBhbWRfaW9t bXVfZmx1c2hfcGFnZXMoc3RydWN0IGRvbWFpbiAqZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBpbnQgb3JkZXIpCisgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGRmbiwgdW5zaWduZWQgaW50IG9yZGVyKQogewot ICAgIF9hbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgKHVpbnQ2NF90KSBnZm4gPDwgUEFHRV9TSElG VCwgb3JkZXIpOworICAgIF9hbWRfaW9tbXVfZmx1c2hfcGFnZXMoZCwgX19kZm5fdG9fZGFkZHIo ZGZuKSwgb3JkZXIpOwogfQogCiB2b2lkIGFtZF9pb21tdV9mbHVzaF9kZXZpY2Uoc3RydWN0IGFt ZF9pb21tdSAqaW9tbXUsIHVpbnQxNl90IGJkZikKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9p b21tdV9tYXAuYwppbmRleCA3MGI0MzQ1YjM3Li42MWFkZTcxODUwIDEwMDY0NAotLS0gYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMKKysrIGIveGVuL2RyaXZlcnMvcGFz c3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCkBAIC0zNSwxMiArMzUsMTIgQEAgc3RhdGljIHVuc2ln bmVkIGludCBwZm5fdG9fcGRlX2lkeCh1bnNpZ25lZCBsb25nIHBmbiwgdW5zaWduZWQgaW50IGxl dmVsKQogICAgIHJldHVybiBpZHg7CiB9CiAKLXZvaWQgY2xlYXJfaW9tbXVfcHRlX3ByZXNlbnQo dW5zaWduZWQgbG9uZyBsMV9tZm4sIHVuc2lnbmVkIGxvbmcgZ2ZuKQordm9pZCBjbGVhcl9pb21t dV9wdGVfcHJlc2VudCh1bnNpZ25lZCBsb25nIGwxX21mbiwgdW5zaWduZWQgbG9uZyBkZm4pCiB7 CiAgICAgdTY0ICp0YWJsZSwgKnB0ZTsKIAogICAgIHRhYmxlID0gbWFwX2RvbWFpbl9wYWdlKF9t Zm4obDFfbWZuKSk7Ci0gICAgcHRlID0gdGFibGUgKyBwZm5fdG9fcGRlX2lkeChnZm4sIElPTU1V X1BBR0lOR19NT0RFX0xFVkVMXzEpOworICAgIHB0ZSA9IHRhYmxlICsgcGZuX3RvX3BkZV9pZHgo ZGZuLCBJT01NVV9QQUdJTkdfTU9ERV9MRVZFTF8xKTsKICAgICAqcHRlID0gMDsKICAgICB1bm1h cF9kb21haW5fcGFnZSh0YWJsZSk7CiB9CkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIGJvb2xf dCBzZXRfaW9tbXVfcGRlX3ByZXNlbnQodTMyICpwZGUsIHVuc2lnbmVkIGxvbmcgbmV4dF9tZm4s CiAgICAgcmV0dXJuIG5lZWRfZmx1c2g7CiB9CiAKLXN0YXRpYyBib29sX3Qgc2V0X2lvbW11X3B0 ZV9wcmVzZW50KHVuc2lnbmVkIGxvbmcgcHRfbWZuLCB1bnNpZ25lZCBsb25nIGdmbiwgCitzdGF0 aWMgYm9vbF90IHNldF9pb21tdV9wdGVfcHJlc2VudCh1bnNpZ25lZCBsb25nIHB0X21mbiwgdW5z aWduZWQgbG9uZyBkZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIG5leHRfbWZuLCBpbnQgcGRlX2xldmVsLCAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJvb2xfdCBpdywgYm9vbF90IGlyKQogewpAQCAtMTE0LDcgKzExNCw3 IEBAIHN0YXRpYyBib29sX3Qgc2V0X2lvbW11X3B0ZV9wcmVzZW50KHVuc2lnbmVkIGxvbmcgcHRf bWZuLCB1bnNpZ25lZCBsb25nIGdmbiwKIAogICAgIHRhYmxlID0gbWFwX2RvbWFpbl9wYWdlKF9t Zm4ocHRfbWZuKSk7CiAKLSAgICBwZGUgPSAodTMyKikodGFibGUgKyBwZm5fdG9fcGRlX2lkeChn Zm4sIHBkZV9sZXZlbCkpOworICAgIHBkZSA9ICh1MzIqKSh0YWJsZSArIHBmbl90b19wZGVfaWR4 KGRmbiwgcGRlX2xldmVsKSk7CiAKICAgICBuZWVkX2ZsdXNoID0gc2V0X2lvbW11X3BkZV9wcmVz ZW50KHBkZSwgbmV4dF9tZm4sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSU9NTVVfUEFHSU5HX01PREVfTEVWRUxfMCwgaXcsIGlyKTsKQEAgLTMzMSw3ICszMzEsNyBA QCBzdGF0aWMgdm9pZCBzZXRfcGRlX2NvdW50KHU2NCAqcGRlLCB1bnNpZ25lZCBpbnQgY291bnQp CiAgKiBvdGhlcndpc2UgaW5jcmVhc2UgcGRlIGNvdW50IGlmIG1mbiBpcyBjb250aWdvdXMgd2l0 aCBtZm4gLSAxCiAgKi8KIHN0YXRpYyBpbnQgaW9tbXVfdXBkYXRlX3BkZV9jb3VudChzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHB0X21mbiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyBtZm4sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkZm4sIHVuc2lnbmVkIGxv bmcgbWZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBt ZXJnZV9sZXZlbCkKIHsKICAgICB1bnNpZ25lZCBpbnQgcGRlX2NvdW50LCBuZXh0X2xldmVsOwpA QCAtMzQ3LDcgKzM0Nyw3IEBAIHN0YXRpYyBpbnQgaW9tbXVfdXBkYXRlX3BkZV9jb3VudChzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIHB0X21mbiwKIAogICAgIC8qIGdldCBwZGUgYXQg bWVyZ2UgbGV2ZWwgKi8KICAgICB0YWJsZSA9IG1hcF9kb21haW5fcGFnZShfbWZuKHB0X21mbikp OwotICAgIHBkZSA9IHRhYmxlICsgcGZuX3RvX3BkZV9pZHgoZ2ZuLCBtZXJnZV9sZXZlbCk7Cisg ICAgcGRlID0gdGFibGUgKyBwZm5fdG9fcGRlX2lkeChkZm4sIG1lcmdlX2xldmVsKTsKIAogICAg IC8qIGdldCBwYWdlIHRhYmxlIG9mIG5leHQgbGV2ZWwgKi8KICAgICBudGFibGVfbWFkZHIgPSBh bWRfaW9tbXVfZ2V0X25leHRfdGFibGVfZnJvbV9wdGUoKHUzMiopcGRlKTsKQEAgLTM2Miw3ICsz NjIsNyBAQCBzdGF0aWMgaW50IGlvbW11X3VwZGF0ZV9wZGVfY291bnQoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgbG9uZyBwdF9tZm4sCiAgICAgbWFzayA9ICgxVUxMPDwgKFBURV9QRVJfVEFC TEVfU0hJRlQgKiBuZXh0X2xldmVsKSkgLSAxOwogCiAgICAgaWYgKCAoKGZpcnN0X21mbiAmIG1h c2spID09IDApICYmCi0gICAgICAgICAoKChnZm4gJiBtYXNrKSB8IGZpcnN0X21mbikgPT0gbWZu KSApCisgICAgICAgICAoKChkZm4gJiBtYXNrKSB8IGZpcnN0X21mbikgPT0gbWZuKSApCiAgICAg ewogICAgICAgICBwZGVfY291bnQgPSBnZXRfcGRlX2NvdW50KCpwZGUpOwogCkBAIC0zODcsNyAr Mzg3LDcgQEAgb3V0OgogfQogCiBzdGF0aWMgaW50IGlvbW11X21lcmdlX3BhZ2VzKHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGxvbmcgcHRfbWZuLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgaW50IGZsYWdzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGRmbiwgdW5zaWduZWQgaW50IGZsYWdzLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWVyZ2VfbGV2ZWwpCiB7 CiAgICAgdTY0ICp0YWJsZSwgKnBkZSwgKm50YWJsZTsKQEAgLTM5OCw3ICszOTgsNyBAQCBzdGF0 aWMgaW50IGlvbW11X21lcmdlX3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg cHRfbWZuLAogICAgIEFTU0VSVCggc3Bpbl9pc19sb2NrZWQoJmhkLT5hcmNoLm1hcHBpbmdfbG9j aykgJiYgcHRfbWZuICk7CiAKICAgICB0YWJsZSA9IG1hcF9kb21haW5fcGFnZShfbWZuKHB0X21m bikpOwotICAgIHBkZSA9IHRhYmxlICsgcGZuX3RvX3BkZV9pZHgoZ2ZuLCBtZXJnZV9sZXZlbCk7 CisgICAgcGRlID0gdGFibGUgKyBwZm5fdG9fcGRlX2lkeChkZm4sIG1lcmdlX2xldmVsKTsKIAog ICAgIC8qIGdldCBmaXJzdCBtZm4gKi8KICAgICBudGFibGVfbWZuID0gYW1kX2lvbW11X2dldF9u ZXh0X3RhYmxlX2Zyb21fcHRlKCh1MzIqKXBkZSkgPj4gUEFHRV9TSElGVDsKQEAgLTQzNiw3ICs0 MzYsNyBAQCBzdGF0aWMgaW50IGlvbW11X21lcmdlX3BhZ2VzKHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGxvbmcgcHRfbWZuLAogICoge1JlLCB1bn1tYXBwaW5nIHN1cGVyIHBhZ2UgZnJhbWVz IGNhdXNlcyByZS1hbGxvY2F0aW9uIG9mIGlvCiAgKiBwYWdlIHRhYmxlcy4KICAqLwotc3RhdGlj IGludCBpb21tdV9wZGVfZnJvbV9nZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBw Zm4sIAorc3RhdGljIGludCBpb21tdV9wZGVfZnJvbV9kZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgbG9uZyBkZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs b25nIHB0X21mbltdKQogewogICAgIHU2NCAqcGRlLCAqbmV4dF90YWJsZV92YWRkcjsKQEAgLTQ2 NSw3ICs0NjUsNyBAQCBzdGF0aWMgaW50IGlvbW11X3BkZV9mcm9tX2dmbihzdHJ1Y3QgZG9tYWlu ICpkLCB1bnNpZ25lZCBsb25nIHBmbiwKICAgICAgICAgcHRfbWZuW2xldmVsXSA9IG5leHRfdGFi bGVfbWZuOwogCiAgICAgICAgIG5leHRfdGFibGVfdmFkZHIgPSBtYXBfZG9tYWluX3BhZ2UoX21m bihuZXh0X3RhYmxlX21mbikpOwotICAgICAgICBwZGUgPSBuZXh0X3RhYmxlX3ZhZGRyICsgcGZu X3RvX3BkZV9pZHgocGZuLCBsZXZlbCk7CisgICAgICAgIHBkZSA9IG5leHRfdGFibGVfdmFkZHIg KyBwZm5fdG9fcGRlX2lkeChkZm4sIGxldmVsKTsKIAogICAgICAgICAvKiBIZXJlIG1pZ2h0IGJl IGEgc3VwZXIgcGFnZSBmcmFtZSAqLwogICAgICAgICBuZXh0X3RhYmxlX21mbiA9IGFtZF9pb21t dV9nZXRfbmV4dF90YWJsZV9mcm9tX3B0ZSgodWludDMyX3QqKXBkZSkgCkBAIC00NzcsMTEgKzQ3 NywxMSBAQCBzdGF0aWMgaW50IGlvbW11X3BkZV9mcm9tX2dmbihzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBsb25nIHBmbiwKICAgICAgICAgICAgICBuZXh0X3RhYmxlX21mbiAhPSAwICkKICAg ICAgICAgewogICAgICAgICAgICAgaW50IGk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1m biwgZ2ZuOworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sIHBmbjsKICAgICAgICAgICAg IHVuc2lnbmVkIGludCBwYWdlX3N6OwogCiAgICAgICAgICAgICBwYWdlX3N6ID0gMSA8PCAoUFRF X1BFUl9UQUJMRV9TSElGVCAqIChuZXh0X2xldmVsIC0gMSkpOwotICAgICAgICAgICAgZ2ZuID0g IHBmbiAmIH4oKDEgPDwgKFBURV9QRVJfVEFCTEVfU0hJRlQgKiBuZXh0X2xldmVsKSkgLSAxKTsK KyAgICAgICAgICAgIHBmbiA9ICBkZm4gJiB+KCgxIDw8IChQVEVfUEVSX1RBQkxFX1NISUZUICog bmV4dF9sZXZlbCkpIC0gMSk7CiAgICAgICAgICAgICBtZm4gPSBuZXh0X3RhYmxlX21mbjsKIAog ICAgICAgICAgICAgLyogYWxsb2NhdGUgbG93ZXIgbGV2ZWwgcGFnZSB0YWJsZSAqLwpAQCAtNDk5 LDEwICs0OTksMTAgQEAgc3RhdGljIGludCBpb21tdV9wZGVfZnJvbV9nZm4oc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZyBwZm4sCiAKICAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwg UFRFX1BFUl9UQUJMRV9TSVpFOyBpKysgKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg IHNldF9pb21tdV9wdGVfcHJlc2VudChuZXh0X3RhYmxlX21mbiwgZ2ZuLCBtZm4sIG5leHRfbGV2 ZWwsCisgICAgICAgICAgICAgICAgc2V0X2lvbW11X3B0ZV9wcmVzZW50KG5leHRfdGFibGVfbWZu LCBwZm4sIG1mbiwgbmV4dF9sZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgISFJT01NVUZfd3JpdGFibGUsICEhSU9NTVVGX3JlYWRhYmxlKTsKICAgICAgICAgICAg ICAgICBtZm4gKz0gcGFnZV9zejsKLSAgICAgICAgICAgICAgICBnZm4gKz0gcGFnZV9zejsKKyAg ICAgICAgICAgICAgICBwZm4gKz0gcGFnZV9zejsKICAgICAgICAgICAgICB9CiAKICAgICAgICAg ICAgIGFtZF9pb21tdV9mbHVzaF9hbGxfcGFnZXMoZCk7CkBAIC01NDAsNyArNTQwLDcgQEAgc3Rh dGljIGludCBpb21tdV9wZGVfZnJvbV9nZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9u ZyBwZm4sCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgdXBkYXRlX3BhZ2luZ19tb2Rl KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQorc3RhdGljIGludCB1cGRhdGVf cGFnaW5nX21vZGUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4pCiB7CiAgICAg dTE2IGJkZjsKICAgICB2b2lkICpkZXZpY2VfZW50cnk7CkBAIC01NTQsMTMgKzU1NCwxMyBAQCBz dGF0aWMgaW50IHVwZGF0ZV9wYWdpbmdfbW9kZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBs b25nIGdmbikKICAgICB1bnNpZ25lZCBsb25nIG9sZF9yb290X21mbjsKICAgICBzdHJ1Y3QgZG9t YWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKIAotICAgIGlmICggZ2ZuID09IGdmbl94KElO VkFMSURfR0ZOKSApCisgICAgaWYgKCBkZm4gPT0gZGZuX3goSU5WQUxJRF9ERk4pICkKICAgICAg ICAgcmV0dXJuIC1FQUREUk5PVEFWQUlMOwotICAgIEFTU0VSVCghKGdmbiA+PiBERUZBVUxUX0RP TUFJTl9BRERSRVNTX1dJRFRIKSk7CisgICAgQVNTRVJUKCEoZGZuID4+IERFRkFVTFRfRE9NQUlO X0FERFJFU1NfV0lEVEgpKTsKIAogICAgIGxldmVsID0gaGQtPmFyY2gucGFnaW5nX21vZGU7CiAg ICAgb2xkX3Jvb3QgPSBoZC0+YXJjaC5yb290X3RhYmxlOwotICAgIG9mZnNldCA9IGdmbiA+PiAo UFRFX1BFUl9UQUJMRV9TSElGVCAqIChsZXZlbCAtIDEpKTsKKyAgICBvZmZzZXQgPSBkZm4gPj4g KFBURV9QRVJfVEFCTEVfU0hJRlQgKiAobGV2ZWwgLSAxKSk7CiAKICAgICBBU1NFUlQoc3Bpbl9p c19sb2NrZWQoJmhkLT5hcmNoLm1hcHBpbmdfbG9jaykgJiYgaXNfaHZtX2RvbWFpbihkKSk7CiAK QEAgLTYzMSw3ICs2MzEsNyBAQCBzdGF0aWMgaW50IHVwZGF0ZV9wYWdpbmdfbW9kZShzdHJ1Y3Qg ZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKICAgICByZXR1cm4gMDsKIH0KIAotaW50IGFt ZF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5z aWduZWQgbG9uZyBtZm4sCitpbnQgYW1kX2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkIGxvbmcgZGZuLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IGZsYWdzKQogewogICAgIGJvb2xfdCBuZWVkX2ZsdXNoID0gMDsK QEAgLTY1MSwzNCArNjUxLDM0IEBAIGludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgIGlmICggcmMg KQogICAgIHsKICAgICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0g ICAgICAgIEFNRF9JT01NVV9ERUJVRygiUm9vdCB0YWJsZSBhbGxvYyBmYWlsZWQsIGdmbiA9ICVs eFxuIiwgZ2ZuKTsKKyAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJSb290IHRhYmxlIGFsbG9jIGZh aWxlZCwgZGZuID0gJWx4XG4iLCBkZm4pOwogICAgICAgICBkb21haW5fY3Jhc2goZCk7CiAgICAg ICAgIHJldHVybiByYzsKICAgICB9CiAKICAgICAvKiBTaW5jZSBIVk0gZG9tYWluIGlzIGluaXRp YWxpemVkIHdpdGggMiBsZXZlbCBJTyBwYWdlIHRhYmxlLAotICAgICAqIHdlIG1pZ2h0IG5lZWQg YSBkZWVwZXIgcGFnZSB0YWJsZSBmb3IgbGFnZXIgZ2ZuIG5vdyAqLworICAgICAqIHdlIG1pZ2h0 IG5lZWQgYSBkZWVwZXIgcGFnZSB0YWJsZSBmb3Igd2lkZXIgZGZuIG5vdyAqLwogICAgIGlmICgg aXNfaHZtX2RvbWFpbihkKSApCiAgICAgewotICAgICAgICBpZiAoIHVwZGF0ZV9wYWdpbmdfbW9k ZShkLCBnZm4pICkKKyAgICAgICAgaWYgKCB1cGRhdGVfcGFnaW5nX21vZGUoZCwgZGZuKSApCiAg ICAgICAgIHsKICAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2sp OwotICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJVcGRhdGUgcGFnZSBtb2RlIGZhaWxlZCBn Zm4gPSAlbHhcbiIsIGdmbik7CisgICAgICAgICAgICBBTURfSU9NTVVfREVCVUcoIlVwZGF0ZSBw YWdlIG1vZGUgZmFpbGVkIGRmbiA9ICVseFxuIiwgZGZuKTsKICAgICAgICAgICAgIGRvbWFpbl9j cmFzaChkKTsKICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwogICAgICAgICB9CiAgICAgfQog Ci0gICAgaWYgKCBpb21tdV9wZGVfZnJvbV9nZm4oZCwgZ2ZuLCBwdF9tZm4pIHx8IChwdF9tZm5b MV0gPT0gMCkgKQorICAgIGlmICggaW9tbXVfcGRlX2Zyb21fZGZuKGQsIGRmbiwgcHRfbWZuKSB8 fCAocHRfbWZuWzFdID09IDApICkKICAgICB7CiAgICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJj aC5tYXBwaW5nX2xvY2spOwotICAgICAgICBBTURfSU9NTVVfREVCVUcoIkludmFsaWQgSU8gcGFn ZXRhYmxlIGVudHJ5IGdmbiA9ICVseFxuIiwgZ2ZuKTsKKyAgICAgICAgQU1EX0lPTU1VX0RFQlVH KCJJbnZhbGlkIElPIHBhZ2V0YWJsZSBlbnRyeSBkZm4gPSAlbHhcbiIsIGRmbik7CiAgICAgICAg IGRvbWFpbl9jcmFzaChkKTsKICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CiAgICAgfQogCiAgICAg LyogSW5zdGFsbCA0ayBtYXBwaW5nIGZpcnN0ICovCi0gICAgbmVlZF9mbHVzaCA9IHNldF9pb21t dV9wdGVfcHJlc2VudChwdF9tZm5bMV0sIGdmbiwgbWZuLCAKKyAgICBuZWVkX2ZsdXNoID0gc2V0 X2lvbW11X3B0ZV9wcmVzZW50KHB0X21mblsxXSwgZGZuLCBtZm4sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJT01NVV9QQUdJTkdfTU9ERV9MRVZFTF8xLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISEoZmxhZ3MgJiBJT01NVUZfd3JpdGFi bGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISEoZmxhZ3MgJiBJ T01NVUZfcmVhZGFibGUpKTsKQEAgLTY5MCw3ICs2OTAsNyBAQCBpbnQgYW1kX2lvbW11X21hcF9w YWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBsb25nIG1m biwKICAgICAvKiA0SyBtYXBwaW5nIGZvciBQViBndWVzdHMgbmV2ZXIgY2hhbmdlcywgCiAgICAg ICogbm8gbmVlZCB0byBmbHVzaCBpZiB3ZSB0cnVzdCBub24tcHJlc2VudCBiaXRzICovCiAgICAg aWYgKCBpc19odm1fZG9tYWluKGQpICkKLSAgICAgICAgYW1kX2lvbW11X2ZsdXNoX3BhZ2VzKGQs IGdmbiwgMCk7CisgICAgICAgIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhkLCBkZm4sIDApOwogCiAg ICAgZm9yICggbWVyZ2VfbGV2ZWwgPSBJT01NVV9QQUdJTkdfTU9ERV9MRVZFTF8yOwogICAgICAg ICAgIG1lcmdlX2xldmVsIDw9IGhkLT5hcmNoLnBhZ2luZ19tb2RlOyBtZXJnZV9sZXZlbCsrICkK QEAgLTY5OCwxNSArNjk4LDE1IEBAIGludCBhbWRfaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgICAgICBpZiAo IHB0X21mblttZXJnZV9sZXZlbF0gPT0gMCApCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg aWYgKCAhaW9tbXVfdXBkYXRlX3BkZV9jb3VudChkLCBwdF9tZm5bbWVyZ2VfbGV2ZWxdLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmbiwgbWZuLCBtZXJnZV9sZXZlbCkg KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRmbiwgbWZuLCBtZXJnZV9s ZXZlbCkgKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgaWYgKCBpb21tdV9tZXJnZV9w YWdlcyhkLCBwdF9tZm5bbWVyZ2VfbGV2ZWxdLCBnZm4sIAorICAgICAgICBpZiAoIGlvbW11X21l cmdlX3BhZ2VzKGQsIHB0X21mblttZXJnZV9sZXZlbF0sIGRmbiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmbGFncywgbWVyZ2VfbGV2ZWwpICkKICAgICAgICAgewogICAgICAgICAg ICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7CiAgICAgICAgICAgICBBTURf SU9NTVVfREVCVUcoIk1lcmdlIGlvbW11IHBhZ2UgZmFpbGVkIGF0IGxldmVsICVkLCAiCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgImdmbiA9ICVseCBtZm4gPSAlbHhcbiIsIG1lcmdlX2xl dmVsLCBnZm4sIG1mbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRmbiA9ICVseCBt Zm4gPSAlbHhcbiIsIG1lcmdlX2xldmVsLCBkZm4sIG1mbik7CiAgICAgICAgICAgICBkb21haW5f Y3Jhc2goZCk7CiAgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsKICAgICAgICAgfQpAQCAtNzIw LDcgKzcyMCw3IEBAIG91dDoKICAgICByZXR1cm4gMDsKIH0KIAotaW50IGFtZF9pb21tdV91bm1h cF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQoraW50IGFtZF9pb21t dV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuKQogewogICAg IHVuc2lnbmVkIGxvbmcgcHRfbWZuWzddOwogICAgIHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0g ZG9tX2lvbW11KGQpOwpAQCAtNzM5LDM0ICs3MzksMzQgQEAgaW50IGFtZF9pb21tdV91bm1hcF9w YWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQogICAgIH0KIAogICAgIC8q IFNpbmNlIEhWTSBkb21haW4gaXMgaW5pdGlhbGl6ZWQgd2l0aCAyIGxldmVsIElPIHBhZ2UgdGFi bGUsCi0gICAgICogd2UgbWlnaHQgbmVlZCBhIGRlZXBlciBwYWdlIHRhYmxlIGZvciBsYWdlciBn Zm4gbm93ICovCisgICAgICogd2UgbWlnaHQgbmVlZCBhIGRlZXBlciBwYWdlIHRhYmxlIGZvciBs YWdlciBkZm4gbm93ICovCiAgICAgaWYgKCBpc19odm1fZG9tYWluKGQpICkKICAgICB7Ci0gICAg ICAgIGludCByYyA9IHVwZGF0ZV9wYWdpbmdfbW9kZShkLCBnZm4pOworICAgICAgICBpbnQgcmMg PSB1cGRhdGVfcGFnaW5nX21vZGUoZCwgZGZuKTsKIAogICAgICAgICBpZiAoIHJjICkKICAgICAg ICAgewogICAgICAgICAgICAgc3Bpbl91bmxvY2soJmhkLT5hcmNoLm1hcHBpbmdfbG9jayk7Ci0g ICAgICAgICAgICBBTURfSU9NTVVfREVCVUcoIlVwZGF0ZSBwYWdlIG1vZGUgZmFpbGVkIGdmbiA9 ICVseFxuIiwgZ2ZuKTsKKyAgICAgICAgICAgIEFNRF9JT01NVV9ERUJVRygiVXBkYXRlIHBhZ2Ug bW9kZSBmYWlsZWQgZGZuID0gJWx4XG4iLCBkZm4pOwogICAgICAgICAgICAgaWYgKCByYyAhPSAt RUFERFJOT1RBVkFJTCApCiAgICAgICAgICAgICAgICAgZG9tYWluX2NyYXNoKGQpOwogICAgICAg ICAgICAgcmV0dXJuIHJjOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCBpb21tdV9wZGVf ZnJvbV9nZm4oZCwgZ2ZuLCBwdF9tZm4pIHx8IChwdF9tZm5bMV0gPT0gMCkgKQorICAgIGlmICgg aW9tbXVfcGRlX2Zyb21fZGZuKGQsIGRmbiwgcHRfbWZuKSB8fCAocHRfbWZuWzFdID09IDApICkK ICAgICB7CiAgICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJjaC5tYXBwaW5nX2xvY2spOwotICAg ICAgICBBTURfSU9NTVVfREVCVUcoIkludmFsaWQgSU8gcGFnZXRhYmxlIGVudHJ5IGdmbiA9ICVs eFxuIiwgZ2ZuKTsKKyAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJJbnZhbGlkIElPIHBhZ2V0YWJs ZSBlbnRyeSBkZm4gPSAlbHhcbiIsIGRmbik7CiAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKICAg ICAgICAgcmV0dXJuIC1FRkFVTFQ7CiAgICAgfQogCiAgICAgLyogbWFyayBQVEUgYXMgJ3BhZ2Ug bm90IHByZXNlbnQnICovCi0gICAgY2xlYXJfaW9tbXVfcHRlX3ByZXNlbnQocHRfbWZuWzFdLCBn Zm4pOworICAgIGNsZWFyX2lvbW11X3B0ZV9wcmVzZW50KHB0X21mblsxXSwgZGZuKTsKICAgICBz cGluX3VubG9jaygmaGQtPmFyY2gubWFwcGluZ19sb2NrKTsKIAotICAgIGFtZF9pb21tdV9mbHVz aF9wYWdlcyhkLCBnZm4sIDApOworICAgIGFtZF9pb21tdV9mbHVzaF9wYWdlcyhkLCBkZm4sIDAp OwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9hbWQvcGNpX2FtZF9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL3BjaV9h bWRfaW9tbXUuYwppbmRleCAxMmQyNjk1Yjg5Li41Njk5YWRjMGY2IDEwMDY0NAotLS0gYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvcGNpX2FtZF9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL2FtZC9wY2lfYW1kX2lvbW11LmMKQEAgLTU3OCw3ICs1NzgsNyBAQCBzdGF0 aWMgdm9pZCBhbWRfZHVtcF9wMm1fdGFibGVfbGV2ZWwoc3RydWN0IHBhZ2VfaW5mbyogcGcsIGlu dCBsZXZlbCwKICAgICAgICAgICAgICAgICBtYWRkcl90b19wYWdlKG5leHRfdGFibGVfbWFkZHIp LCBuZXh0X2xldmVsLAogICAgICAgICAgICAgICAgIGFkZHJlc3MsIGluZGVudCArIDEpOwogICAg ICAgICBlbHNlCi0gICAgICAgICAgICBwcmludGsoIiUqc2dmbjogJTA4bHggIG1mbjogJTA4bHhc biIsCisgICAgICAgICAgICBwcmludGsoIiUqc2RmbjogJTA4bHggIG1mbjogJTA4bHhcbiIsCiAg ICAgICAgICAgICAgICAgICAgaW5kZW50LCAiIiwKICAgICAgICAgICAgICAgICAgICAodW5zaWdu ZWQgbG9uZylQRk5fRE9XTihhZGRyZXNzKSwKICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQg bG9uZylQRk5fRE9XTihuZXh0X3RhYmxlX21hZGRyKSk7CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3Nt bXUuYwppbmRleCA3NGMwOWIwOTkxLi4wNjYyMzk4Y2NjIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2Fy bS9zbW11LmMKQEAgLTI1NTEsNyArMjU1MSw3IEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGFy bV9zbW11X2lvdGxiX2ZsdXNoX2FsbChzdHJ1Y3QgZG9tYWluICpkKQogfQogCiBzdGF0aWMgaW50 IF9fbXVzdF9jaGVjayBhcm1fc21tdV9pb3RsYl9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBn Zm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nIGRmbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQogewogCS8qIEFSTSBTTU1VIHYxIGRvZXNuJ3QgaGF2 ZSBmbHVzaCBieSBWTUEgYW5kIFZNSUQgKi8KQEAgLTI3MzcsNyArMjczNyw3IEBAIHN0YXRpYyB2 b2lkIGFybV9zbW11X2lvbW11X2RvbWFpbl90ZWFyZG93bihzdHJ1Y3QgZG9tYWluICpkKQogCXhm cmVlKHhlbl9kb21haW4pOwogfQogCi1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV9t YXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKK3N0YXRpYyBpbnQg X19tdXN0X2NoZWNrIGFybV9zbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVk IGxvbmcgZGZuLAogCQkJdW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGludCBmbGFncykKIHsK IAlwMm1fdHlwZV90IHQ7CkBAIC0yNzQ4LDEwICsyNzQ4LDEwIEBAIHN0YXRpYyBpbnQgX19tdXN0 X2NoZWNrIGFybV9zbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg Z2ZuLAogCSAqIHByb3RlY3RlZCBieSBhbiBJT01NVSwgWGVuIG5lZWRzIHRvIGFkZCBhIDE6MSBt YXBwaW5nIGluIHRoZSBkb21haW4KIAkgKiBwMm0gdG8gYWxsb3cgRE1BIHJlcXVlc3QgdG8gd29y ay4KIAkgKiBUaGlzIGlzIG9ubHkgdmFsaWQgd2hlbiB0aGUgZG9tYWluIGlzIGRpcmVjdGVkIG1h cHBlZC4gSGVuY2UgdGhpcwotCSAqIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgZ250 dGFiIGNvZGUgd2l0aCBnZm4gPT0gbWZuLgorCSAqIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIHVz ZWQgYnkgZ250dGFiIGNvZGUgd2l0aCBnZm4gPT0gbWZuID09IGRmbi4KIAkgKi8KIAlCVUdfT04o IWlzX2RvbWFpbl9kaXJlY3RfbWFwcGVkKGQpKTsKLQlCVUdfT04obWZuICE9IGdmbik7CisJQlVH X09OKG1mbiAhPSBkZm4pOwogCiAJLyogV2Ugb25seSBzdXBwb3J0IHJlYWRhYmxlIGFuZCB3cml0 YWJsZSBmbGFncyAqLwogCWlmICghKGZsYWdzICYgKElPTU1VRl9yZWFkYWJsZSB8IElPTU1VRl93 cml0YWJsZSkpKQpAQCAtMjc2MywxOSArMjc2MywxOSBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVj ayBhcm1fc21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwK IAkgKiBUaGUgZnVuY3Rpb24gZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkgcmVwbGFjZXMgdGhlIGN1 cnJlbnQgbWFwcGluZwogCSAqIGlmIHRoZXJlIGlzIGFscmVhZHkgb25lLi4uCiAJICovCi0JcmV0 dXJuIGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KGQsIF9nZm4oZ2ZuKSwgX21mbihtZm4pLCAwLCB0 KTsKKwlyZXR1cm4gZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkoZCwgX2dmbihkZm4pLCBfbWZuKGRm biksIDAsIHQpOwogfQogCi1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayBhcm1fc21tdV91bm1hcF9w YWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQorc3RhdGljIGludCBfX211 c3RfY2hlY2sgYXJtX3NtbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBs b25nIGRmbikKIHsKIAkvKgogCSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgdXNlZCBi eSBnbnR0YWIgY29kZSB3aGVuIHRoZSBkb21haW4KLQkgKiBpcyBkaXJlY3QgbWFwcGVkCisJICog aXMgZGlyZWN0IG1hcHBlZCAoaS5lLiBnZm4gPT0gbWZuID09IGRmbikuCiAJICovCiAJaWYgKCAh aXNfZG9tYWluX2RpcmVjdF9tYXBwZWQoZCkgKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXJldHVy biBndWVzdF9waHlzbWFwX3JlbW92ZV9wYWdlKGQsIF9nZm4oZ2ZuKSwgX21mbihnZm4pLCAwKTsK KwlyZXR1cm4gZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShkLCBfZ2ZuKGRmbiksIF9tZm4oZGZu KSwgMCk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW9tbXVfb3BzIGFybV9zbW11X2lvbW11 X29wcyA9IHsKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgYi94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jCmluZGV4IGU5MTc5MDE5NzYuLjEwZDEyNTI1 NTQgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKKysrIGIveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgX19o d2RvbV9pbml0IGlvbW11X2h3ZG9tX2luaXQoc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgcGFn ZV9saXN0X2Zvcl9lYWNoICggcGFnZSwgJmQtPnBhZ2VfbGlzdCApCiAgICAgICAgIHsKICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuID0gbWZuX3gocGFnZV90b19tZm4ocGFnZSkpOwotICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4gPSBtZm5fdG9fZ21mbihkLCBtZm4pOworICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBkZm4gPSBtZm5fdG9fZ21mbihkLCBtZm4pOwogICAgICAgICAg ICAgdW5zaWduZWQgaW50IG1hcHBpbmcgPSBJT01NVUZfcmVhZGFibGU7CiAgICAgICAgICAgICBp bnQgcmV0OwogCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBfX2h3ZG9tX2luaXQgaW9tbXVfaHdk b21faW5pdChzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICAgICAgICAgICAgPT0gUEdUX3dyaXRh YmxlX3BhZ2UpICkKICAgICAgICAgICAgICAgICBtYXBwaW5nIHw9IElPTU1VRl93cml0YWJsZTsK IAotICAgICAgICAgICAgcmV0ID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgZ2ZuLCBt Zm4sIG1hcHBpbmcpOworICAgICAgICAgICAgcmV0ID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3Bh Z2UoZCwgZGZuLCBtZm4sIG1hcHBpbmcpOwogICAgICAgICAgICAgaWYgKCAhcmMgKQogICAgICAg ICAgICAgICAgIHJjID0gcmV0OwogCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBpb21tdV9kb21h aW5fZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKQogICAgIGFyY2hfaW9tbXVfZG9tYWluX2Rlc3Ry b3koZCk7CiB9CiAKLWludCBpb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25l ZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyBtZm4sCitpbnQgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFncykKIHsKICAgICBjb25zdCBzdHJ1Y3QgZG9t YWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKQEAgLTI2MywxMyArMjYzLDEzIEBAIGludCBp b21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWdu ZWQgbG9uZyBtZm4sCiAgICAgaWYgKCAhaW9tbXVfZW5hYmxlZCB8fCAhaGQtPnBsYXRmb3JtX29w cyApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT5tYXBf cGFnZShkLCBnZm4sIG1mbiwgZmxhZ3MpOworICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+bWFw X3BhZ2UoZCwgZGZuLCBtZm4sIGZsYWdzKTsKICAgICBpZiAoIHVubGlrZWx5KHJjKSApCiAgICAg ewogICAgICAgICBpZiAoICFkLT5pc19zaHV0dGluZ19kb3duICYmIHByaW50a19yYXRlbGltaXQo KSApCiAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUgotICAgICAgICAgICAgICAgICAgICJk JWQ6IElPTU1VIG1hcHBpbmcgZ2ZuICUjbHggdG8gbWZuICUjbHggZmFpbGVkOiAlZFxuIiwKLSAg ICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIGdmbiwgbWZuLCByYyk7CisgICAgICAgICAg ICAgICAgICAgImQlZDogSU9NTVUgbWFwcGluZyBkZm4gJSNseCB0byBtZm4gJSNseCBmYWlsZWQ6 ICVkXG4iLAorICAgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgZGZuLCBtZm4sIHJjKTsK IAogICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4oZCkgKQogICAgICAgICAgICAgZG9t YWluX2NyYXNoKGQpOwpAQCAtMjc4LDcgKzI3OCw3IEBAIGludCBpb21tdV9tYXBfcGFnZShzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAg cmV0dXJuIHJjOwogfQogCi1pbnQgaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1 bnNpZ25lZCBsb25nIGdmbikKK2ludCBpb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkIGxvbmcgZGZuKQogewogICAgIGNvbnN0IHN0cnVjdCBkb21haW5faW9tbXUgKmhk ID0gZG9tX2lvbW11KGQpOwogICAgIGludCByYzsKQEAgLTI4NiwxMyArMjg2LDEzIEBAIGludCBp b21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQogICAg IGlmICggIWlvbW11X2VuYWJsZWQgfHwgIWhkLT5wbGF0Zm9ybV9vcHMgKQogICAgICAgICByZXR1 cm4gMDsKIAotICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+dW5tYXBfcGFnZShkLCBnZm4pOwor ICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+dW5tYXBfcGFnZShkLCBkZm4pOwogICAgIGlmICgg dW5saWtlbHkocmMpICkKICAgICB7CiAgICAgICAgIGlmICggIWQtPmlzX3NodXR0aW5nX2Rvd24g JiYgcHJpbnRrX3JhdGVsaW1pdCgpICkKICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSCi0g ICAgICAgICAgICAgICAgICAgImQlZDogSU9NTVUgdW5tYXBwaW5nIGdmbiAlI2x4IGZhaWxlZDog JWRcbiIsCi0gICAgICAgICAgICAgICAgICAgZC0+ZG9tYWluX2lkLCBnZm4sIHJjKTsKKyAgICAg ICAgICAgICAgICAgICAiZCVkOiBJT01NVSB1bm1hcHBpbmcgZGZuICUjbHggZmFpbGVkOiAlZFxu IiwKKyAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIGRmbiwgcmMpOwogCiAgICAgICAg IGlmICggIWlzX2hhcmR3YXJlX2RvbWFpbihkKSApCiAgICAgICAgICAgICBkb21haW5fY3Jhc2go ZCk7CkBAIC0zMTgsNyArMzE4LDcgQEAgc3RhdGljIHZvaWQgaW9tbXVfZnJlZV9wYWdldGFibGVz KHVuc2lnbmVkIGxvbmcgdW51c2VkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdW1h c2tfY3ljbGUoc21wX3Byb2Nlc3Nvcl9pZCgpLCAmY3B1X29ubGluZV9tYXApKTsKIH0KIAotaW50 IGlvbW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAor aW50IGlvbW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZu LAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX2NvdW50KQogewogICAg IGNvbnN0IHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11KGQpOwpAQCAtMzI3LDEz ICszMjcsMTMgQEAgaW50IGlvbW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGxvbmcgZ2ZuLAogICAgIGlmICggIWlvbW11X2VuYWJsZWQgfHwgIWhkLT5wbGF0Zm9ybV9v cHMgfHwgIWhkLT5wbGF0Zm9ybV9vcHMtPmlvdGxiX2ZsdXNoICkKICAgICAgICAgcmV0dXJuIDA7 CiAKLSAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPmlvdGxiX2ZsdXNoKGQsIGdmbiwgcGFnZV9j b3VudCk7CisgICAgcmMgPSBoZC0+cGxhdGZvcm1fb3BzLT5pb3RsYl9mbHVzaChkLCBkZm4sIHBh Z2VfY291bnQpOwogICAgIGlmICggdW5saWtlbHkocmMpICkKICAgICB7CiAgICAgICAgIGlmICgg IWQtPmlzX3NodXR0aW5nX2Rvd24gJiYgcHJpbnRrX3JhdGVsaW1pdCgpICkKICAgICAgICAgICAg IHByaW50ayhYRU5MT0dfRVJSCi0gICAgICAgICAgICAgICAgICAgImQlZDogSU9NTVUgSU9UTEIg Zmx1c2ggZmFpbGVkOiAlZCwgZ2ZuICUjbHgsIHBhZ2UgY291bnQgJXVcbiIsCi0gICAgICAgICAg ICAgICAgICAgZC0+ZG9tYWluX2lkLCByYywgZ2ZuLCBwYWdlX2NvdW50KTsKKyAgICAgICAgICAg ICAgICAgICAiZCVkOiBJT01NVSBJT1RMQiBmbHVzaCBmYWlsZWQ6ICVkLCBkZm4gJSNseCwgcGFn ZSBjb3VudCAldVxuIiwKKyAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIHJjLCBkZm4s IHBhZ2VfY291bnQpOwogCiAgICAgICAgIGlmICggIWlzX2hhcmR3YXJlX2RvbWFpbihkKSApCiAg ICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC92dGQvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5j CmluZGV4IDhkNzY4YTQ2OTMuLmFjMGE3OGQ5MTcgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL3Z0ZC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9p b21tdS5jCkBAIC01ODUsNyArNTg1LDcgQEAgc3RhdGljIGludCBfX211c3RfY2hlY2sgaW9tbXVf Zmx1c2hfYWxsKHZvaWQpCiB9CiAKIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNo X2lvdGxiKHN0cnVjdCBkb21haW4gKmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGZuLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYm9vbF90IGRtYV9vbGRfcHRlX3ByZXNlbnQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9jb3Vu dCkKIHsKQEAgLTYxMiwxMiArNjEyLDEyIEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11 X2ZsdXNoX2lvdGxiKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgIGlmICggaW9tbXVfZG9taWQg PT0gLTEgKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKCBwYWdlX2NvdW50 ICE9IDEgfHwgZ2ZuID09IGdmbl94KElOVkFMSURfR0ZOKSApCisgICAgICAgIGlmICggcGFnZV9j b3VudCAhPSAxIHx8IGRmbiA9PSBkZm5feChJTlZBTElEX0RGTikgKQogICAgICAgICAgICAgcmMg PSBpb21tdV9mbHVzaF9pb3RsYl9kc2koaW9tbXUsIGlvbW11X2RvbWlkLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgZmx1c2hfZGV2X2lvdGxiKTsKICAgICAgICAg ZWxzZQogICAgICAgICAgICAgcmMgPSBpb21tdV9mbHVzaF9pb3RsYl9wc2koaW9tbXUsIGlvbW11 X2RvbWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhZGRyX3Qp Z2ZuIDw8IFBBR0VfU0hJRlRfNEssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBfX2Rmbl90b19kYWRkcihkZm4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUEFHRV9PUkRFUl80SywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICFkbWFfb2xkX3B0ZV9wcmVzZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmx1c2hfZGV2X2lvdGxiKTsKQEAgLTYzMywxNSArNjMzLDE1IEBAIHN0YXRp YyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiKHN0cnVjdCBkb21haW4gKmQsCiB9 CiAKIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiX3BhZ2VzKHN0cnVj dCBkb21haW4gKmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIGdmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZGZuLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBhZ2VfY291bnQpCiB7Ci0g ICAgcmV0dXJuIGlvbW11X2ZsdXNoX2lvdGxiKGQsIGdmbiwgMSwgcGFnZV9jb3VudCk7CisgICAg cmV0dXJuIGlvbW11X2ZsdXNoX2lvdGxiKGQsIGRmbiwgMSwgcGFnZV9jb3VudCk7CiB9CiAKIHN0 YXRpYyBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2ZsdXNoX2lvdGxiX2FsbChzdHJ1Y3QgZG9tYWlu ICpkKQogewotICAgIHJldHVybiBpb21tdV9mbHVzaF9pb3RsYihkLCBnZm5feChJTlZBTElEX0dG TiksIDAsIDApOworICAgIHJldHVybiBpb21tdV9mbHVzaF9pb3RsYihkLCBkZm5feChJTlZBTElE X0RGTiksIDAsIDApOwogfQogCiAvKiBjbGVhciBvbmUgcGFnZSdzIHBhZ2UgdGFibGUgKi8KQEAg LTE3NjcsNyArMTc2Nyw3IEBAIHN0YXRpYyB2b2lkIGlvbW11X2RvbWFpbl90ZWFyZG93bihzdHJ1 Y3QgZG9tYWluICpkKQogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpbnRlbF9pb21tdV9t YXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGRmbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdz KQogewpAQCAtMTc4NiwxNCArMTc4NiwxNCBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpbnRl bF9pb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLAogCiAgICAgc3Bpbl9sb2NrKCZoZC0+ YXJjaC5tYXBwaW5nX2xvY2spOwogCi0gICAgcGdfbWFkZHIgPSBhZGRyX3RvX2RtYV9wYWdlX21h ZGRyKGQsIChwYWRkcl90KWdmbiA8PCBQQUdFX1NISUZUXzRLLCAxKTsKKyAgICBwZ19tYWRkciA9 IGFkZHJfdG9fZG1hX3BhZ2VfbWFkZHIoZCwgX19kZm5fdG9fZGFkZHIoZGZuKSwgMSk7CiAgICAg aWYgKCBwZ19tYWRkciA9PSAwICkKICAgICB7CiAgICAgICAgIHNwaW5fdW5sb2NrKCZoZC0+YXJj aC5tYXBwaW5nX2xvY2spOwogICAgICAgICByZXR1cm4gLUVOT01FTTsKICAgICB9CiAgICAgcGFn ZSA9IChzdHJ1Y3QgZG1hX3B0ZSAqKW1hcF92dGRfZG9tYWluX3BhZ2UocGdfbWFkZHIpOwotICAg IHB0ZSA9IHBhZ2UgKyAoZ2ZuICYgTEVWRUxfTUFTSyk7CisgICAgcHRlID0gcGFnZSArIChkZm4g JiBMRVZFTF9NQVNLKTsKICAgICBvbGQgPSAqcHRlOwogICAgIGRtYV9zZXRfcHRlX2FkZHIobmV3 LCAocGFkZHJfdCltZm4gPDwgUEFHRV9TSElGVF80Syk7CiAgICAgZG1hX3NldF9wdGVfcHJvdChu ZXcsCkBAIC0xODE3LDIyICsxODE3LDIyIEBAIHN0YXRpYyBpbnQgX19tdXN0X2NoZWNrIGludGVs X2lvbW11X21hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsCiAgICAgdW5tYXBfdnRkX2RvbWFpbl9w YWdlKHBhZ2UpOwogCiAgICAgaWYgKCAhdGhpc19jcHUoaW9tbXVfZG9udF9mbHVzaF9pb3RsYikg KQotICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiKGQsIGdmbiwgZG1hX3B0ZV9wcmVzZW50 KG9sZCksIDEpOworICAgICAgICByYyA9IGlvbW11X2ZsdXNoX2lvdGxiKGQsIGRmbiwgZG1hX3B0 ZV9wcmVzZW50KG9sZCksIDEpOwogCiAgICAgcmV0dXJuIHJjOwogfQogCiBzdGF0aWMgaW50IF9f bXVzdF9jaGVjayBpbnRlbF9pb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg Z2ZuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIGRmbikKIHsKICAgICAvKiBEbyBub3RoaW5nIGlmIGhhcmR3YXJlIGRvbWFpbiBh bmQgaW9tbXUgc3VwcG9ydHMgcGFzcyB0aHJ1LiAqLwogICAgIGlmICggaW9tbXVfcGFzc3Rocm91 Z2ggJiYgaXNfaGFyZHdhcmVfZG9tYWluKGQpICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBy ZXR1cm4gZG1hX3B0ZV9jbGVhcl9vbmUoZCwgKHBhZGRyX3QpZ2ZuIDw8IFBBR0VfU0hJRlRfNEsp OworICAgIHJldHVybiBkbWFfcHRlX2NsZWFyX29uZShkLCBfX2Rmbl90b19kYWRkcihkZm4pKTsK IH0KIAotaW50IGlvbW11X3B0ZV9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB1NjQgZ2ZuLCB1NjQg KnB0ZSwKK2ludCBpb21tdV9wdGVfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdWludDY0X3QgZGZu LCB1aW50NjRfdCAqcHRlLAogICAgICAgICAgICAgICAgICAgICBpbnQgb3JkZXIsIGludCBwcmVz ZW50KQogewogICAgIHN0cnVjdCBhY3BpX2RyaGRfdW5pdCAqZHJoZDsKQEAgLTE4NTYsNyArMTg1 Niw3IEBAIGludCBpb21tdV9wdGVfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdTY0IGdmbiwgdTY0 ICpwdGUsCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICByYyA9IGlvbW11X2ZsdXNo X2lvdGxiX3BzaShpb21tdSwgaW9tbXVfZG9taWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwYWRkcl90KWdmbiA8PCBQQUdFX1NISUZUXzRLLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBfX2Rmbl90b19kYWRkcihkZm4pLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvcmRlciwgIXByZXNlbnQsIGZsdXNoX2Rldl9pb3RsYik7CiAg ICAgICAgIGlmICggcmMgPiAwICkKICAgICAgICAgewpAQCAtMjYyNiw3ICsyNjI2LDcgQEAgc3Rh dGljIHZvaWQgdnRkX2R1bXBfcDJtX3RhYmxlX2xldmVsKHBhZGRyX3QgcHRfbWFkZHIsIGludCBs ZXZlbCwgcGFkZHJfdCBncGEsCiAgICAgICAgICAgICB2dGRfZHVtcF9wMm1fdGFibGVfbGV2ZWwo ZG1hX3B0ZV9hZGRyKCpwdGUpLCBuZXh0X2xldmVsLCAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhZGRyZXNzLCBpbmRlbnQgKyAxKTsKICAgICAgICAgZWxzZQotICAgICAg ICAgICAgcHJpbnRrKCIlKnNnZm46ICUwOGx4IG1mbjogJTA4bHhcbiIsCisgICAgICAgICAgICBw cmludGsoIiUqc2RmbjogJTA4bHggbWZuOiAlMDhseFxuIiwKICAgICAgICAgICAgICAgICAgICBp bmRlbnQsICIiLAogICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKShhZGRyZXNzID4+ IFBBR0VfU0hJRlRfNEspLAogICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKShkbWFf cHRlX2FkZHIoKnB0ZSkgPj4gUEFHRV9TSElGVF80SykpOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUveGVuL2lvbW11LmggYi94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaAppbmRleCBlMzVkOTQxZjNj Li4xOWQ1ZDU1ZDc5IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaAorKysgYi94 ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaApAQCAtMjMsMTEgKzIzLDM3IEBACiAjaW5jbHVkZSA8eGVu L3BhZ2UtZGVmcy5oPgogI2luY2x1ZGUgPHhlbi9zcGlubG9jay5oPgogI2luY2x1ZGUgPHhlbi9w Y2kuaD4KKyNpbmNsdWRlIDx4ZW4vdHlwZXNhZmUuaD4KICNpbmNsdWRlIDxwdWJsaWMvaHZtL2lv cmVxLmg+CiAjaW5jbHVkZSA8cHVibGljL2RvbWN0bC5oPgogI2luY2x1ZGUgPGFzbS9kZXZpY2Uu aD4KICNpbmNsdWRlIDxhc20vaW9tbXUuaD4KIAorVFlQRV9TQUZFKHVpbnQ2NF90LCBkZm4pOwor I2RlZmluZSBQUklfZGZuICAgICBQUkl4NjQKKyNkZWZpbmUgSU5WQUxJRF9ERk4gX2Rmbih+MFVM KQorCisjaWZuZGVmIGRmbl90CisjZGVmaW5lIGRmbl90IC8qIEdyZXAgZm9kZGVyOiBkZm5fdCwg X2RmbigpIGFuZCBkZm5feCgpIGFyZSBkZWZpbmVkIGFib3ZlICovCisjZGVmaW5lIF9kZm4KKyNk ZWZpbmUgZGZuX3gKKyN1bmRlZiBkZm5fdAorI3VuZGVmIF9kZm4KKyN1bmRlZiBkZm5feAorI2Vu ZGlmCisKKyNkZWZpbmUgSU9NTVVfUEFHRV9TSElGVCAxMgorI2RlZmluZSBJT01NVV9QQUdFX1NJ WkUgIChfQUMoMSxMKSA8PCBJT01NVV9QQUdFX1NISUZUKQorI2RlZmluZSBJT01NVV9QQUdFX01B U0sgICh+KElPTU1VX1BBR0VfU0laRSAtIDEpKQorCit0eXBlZGVmIHVpbnQ2NF90IGRhZGRyX3Q7 CisKKyNkZWZpbmUgX19kZm5fdG9fZGFkZHIoZGZuKSAoKGRhZGRyX3QpKGRmbikgPDwgSU9NTVVf UEFHRV9TSElGVCkKKyNkZWZpbmUgX19kYWRkcl90b19kZm4oZGFkZHIpICgodWludDY0X3QpKGRh ZGRyID4+IElPTU1VX1BBR0VfU0hJRlQpKQorCisjZGVmaW5lIGRmbl90b19kYWRkcihkZm4pIF9f ZGZuX3RvX2RhZGRyKGRmbl94KGRmbikpCisjZGVmaW5lIGRhZGRyX3RvX2RmbihkYWRkcikgX2Rm bihfX2RhZGRyX3RvX2RmbihkYWRkcikpCisKIGV4dGVybiBib29sX3QgaW9tbXVfZW5hYmxlLCBp b21tdV9lbmFibGVkOwogZXh0ZXJuIGJvb2xfdCBmb3JjZV9pb21tdSwgaW9tbXVfZG9tMF9zdHJp Y3QsIGlvbW11X3ZlcmJvc2U7CiBleHRlcm4gYm9vbF90IGlvbW11X3dvcmthcm91bmRfYmlvc19i dWcsIGlvbW11X2lnZngsIGlvbW11X3Bhc3N0aHJvdWdoOwpAQCAtNjAsOSArODYsOSBAQCB2b2lk IGlvbW11X3RlYXJkb3duKHN0cnVjdCBkb21haW4gKmQpOwogI2RlZmluZSBJT01NVUZfcmVhZGFi bGUgICgxdTw8X0lPTU1VRl9yZWFkYWJsZSkKICNkZWZpbmUgX0lPTU1VRl93cml0YWJsZSAxCiAj ZGVmaW5lIElPTU1VRl93cml0YWJsZSAgKDF1PDxfSU9NTVVGX3dyaXRhYmxlKQotaW50IF9fbXVz dF9jaGVjayBpb21tdV9tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdm biwKK2ludCBfX211c3RfY2hlY2sgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgdW5z aWduZWQgbG9uZyBkZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgbWZuLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwotaW50IF9fbXVzdF9jaGVjayBpb21tdV91 bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKTsKK2ludCBfX211 c3RfY2hlY2sgaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25n IGRmbik7CiAKIGVudW0gaW9tbXVfZmVhdHVyZQogewpAQCAtMTUwLDkgKzE3Niw5IEBAIHN0cnVj dCBpb21tdV9vcHMgewogI2VuZGlmIC8qIEhBU19QQ0kgKi8KIAogICAgIHZvaWQgKCp0ZWFyZG93 bikoc3RydWN0IGRvbWFpbiAqZCk7Ci0gICAgaW50IF9fbXVzdF9jaGVjayAoKm1hcF9wYWdlKShz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbiwKKyAgICBpbnQgX19tdXN0X2NoZWNr ICgqbWFwX3BhZ2UpKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZGZuLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4sIHVuc2lnbmVkIGlu dCBmbGFncyk7Ci0gICAgaW50IF9fbXVzdF9jaGVjayAoKnVubWFwX3BhZ2UpKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKTsKKyAgICBpbnQgX19tdXN0X2NoZWNrICgqdW5tYXBf cGFnZSkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4pOwogICAgIHZvaWQgKCpm cmVlX3BhZ2VfdGFibGUpKHN0cnVjdCBwYWdlX2luZm8gKik7CiAjaWZkZWYgQ09ORklHX1g4Ngog ICAgIHZvaWQgKCp1cGRhdGVfaXJlX2Zyb21fYXBpYykodW5zaWduZWQgaW50IGFwaWMsIHVuc2ln bmVkIGludCByZWcsIHVuc2lnbmVkIGludCB2YWx1ZSk7CkBAIC0xNjMsNyArMTg5LDcgQEAgc3Ry dWN0IGlvbW11X29wcyB7CiAgICAgdm9pZCAoKnJlc3VtZSkodm9pZCk7CiAgICAgdm9pZCAoKnNo YXJlX3AybSkoc3RydWN0IGRvbWFpbiAqZCk7CiAgICAgdm9pZCAoKmNyYXNoX3NodXRkb3duKSh2 b2lkKTsKLSAgICBpbnQgX19tdXN0X2NoZWNrICgqaW90bGJfZmx1c2gpKHN0cnVjdCBkb21haW4g KmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAorICAgIGludCBfX211c3RfY2hlY2sgKCppb3RsYl9mbHVz aCkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBkZm4sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9jb3VudCk7CiAgICAgaW50IF9f bXVzdF9jaGVjayAoKmlvdGxiX2ZsdXNoX2FsbCkoc3RydWN0IGRvbWFpbiAqZCk7CiAgICAgaW50 ICgqZ2V0X3Jlc2VydmVkX2RldmljZV9tZW1vcnkpKGlvbW11X2dyZG1fdCAqLCB2b2lkICopOwpA QCAtMTg1LDcgKzIxMSw3IEBAIGludCBpb21tdV9kb19wY2lfZG9tY3RsKHN0cnVjdCB4ZW5fZG9t Y3RsICosIHN0cnVjdCBkb21haW4gKmQsCiBpbnQgaW9tbXVfZG9fZG9tY3RsKHN0cnVjdCB4ZW5f ZG9tY3RsICosIHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgICAgICAgICAgICAgIFhFTl9HVUVT VF9IQU5ETEVfUEFSQU0oeGVuX2RvbWN0bF90KSk7CiAKLWludCBfX211c3RfY2hlY2sgaW9tbXVf aW90bGJfZmx1c2goc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sCitpbnQgX19t dXN0X2NoZWNrIGlvbW11X2lvdGxiX2ZsdXNoKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxv bmcgZGZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg cGFnZV9jb3VudCk7CiBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2lvdGxiX2ZsdXNoX2FsbChzdHJ1 Y3QgZG9tYWluICpkKTsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL21tLmggYi94ZW4v aW5jbHVkZS94ZW4vbW0uaAppbmRleCAyNDY1NGU4ZTIyLi4yODhkYzc3Yjg1IDEwMDY0NAotLS0g YS94ZW4vaW5jbHVkZS94ZW4vbW0uaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vbW0uaApAQCAtMjYs NiArMjYsMTEgQEAKICAqICAgQSBsaW5lYXIgaWRlYSBvZiBhIGd1ZXN0IHBoeXNpY2FsIGFkZHJl c3Mgc3BhY2UuIEZvciBhbiBhdXRvLXRyYW5zbGF0ZWQKICAqICAgZ3Vlc3QsIHBmbiA9PSBnZm4g d2hpbGUgZm9yIGEgbm9uLXRyYW5zbGF0ZWQgZ3Vlc3QsIHBmbiAhPSBnZm4uCiAgKgorICogZGZu OiBEZXZpY2UgRE1BIEZyYW1lIE51bWJlciAoZGVmaW5pdGlvbnMgaW4gaW5jbHVkZS94ZW4vaW9t bXUuaCkKKyAqICAgVGhlIGxpbmVhciBmcmFtZSBudW1iZXJzIG9mIElPTU1VIGFkZHJlc3Mgc3Bh Y2UuIEFsbCBpbml0aWF0b3JzIGZvciAoaS5lLgorICogICBhbGwgZGV2aWNlcyBhc3NpZ25lZCB0 bykgYSBndWVzdCBzaGFyZSBhIHNpbmdsZSBJT01NVSBhZGRyZXNzIHNwYWNlIGFuZCwKKyAqICAg YnkgZGVmYXVsdCwgWGVuIHdpbGwgZW5zdXJlIGRmbiA9PSBwZm4uCisgKgogICogV0FSTklORzog U29tZSBvZiB0aGVzZSB0ZXJtcyBoYXZlIGNoYW5nZWQgb3ZlciB0aW1lIHdoaWxlIG90aGVycyBo YXZlIGJlZW4KICAqIHVzZWQgaW5jb25zaXN0ZW50bHksIG1lYW5pbmcgdGhhdCBhIGxvdCBvZiBl eGlzdGluZyBjb2RlIGRvZXMgbm90IG1hdGNoIHRoZQogICogZGVmaW5pdGlvbnMgYWJvdmUuICBO ZXcgY29kZSBzaG91bGQgdXNlIHRoZXNlIHRlcm1zIGFzIGRlc2NyaWJlZCBoZXJlLCBhbmQKLS0g CjIuMTEuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0 dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=