From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from shards.monkeyblade.net ([184.105.139.130]:50588 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751260AbdCYHyL (ORCPT ); Sat, 25 Mar 2017 03:54:11 -0400 Received: from localhost (74-93-104-98-Washington.hfc.comcastbusiness.net [74.93.104.98]) (Authenticated sender: davem-davemloft) by shards.monkeyblade.net (Postfix) with ESMTPSA id 1D50D13CF6675 for ; Sat, 25 Mar 2017 00:54:01 -0700 (PDT) Date: Sat, 25 Mar 2017 00:53:59 -0700 (PDT) Message-Id: <20170325.005359.2244832719295518110.davem@davemloft.net> To: stable@vger.kernel.org Subject: [PATCHES] Networking From: David Miller Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Sat_Mar_25_00_53_59_2017_214)--" Content-Transfer-Encoding: 7bit Sender: stable-owner@vger.kernel.org List-ID: ----Next_Part(Sat_Mar_25_00_53_59_2017_214)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Please queue up the following bug fixes for v4.9 and v4.10 -stable, respectively. Thanks! ----Next_Part(Sat_Mar_25_00_53_59_2017_214)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="net_49.mbox" RnJvbSA5ZTM1NGFiZjljZTM1ZmJjZTQzNGI5OWYwZjRhYjI5MjE1MjA0OWFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYWVlZCBNYWhhbWVlZCA8c2FlZWRtQG1lbGxhbm94LmNvbT4K RGF0ZTogV2VkLCAyMiBGZWIgMjAxNyAxNzoyMDoxMiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDAx LzExMl0gbmV0L21seDVlOiBSZWdpc3Rlci91bnJlZ2lzdGVyIHZwb3J0IHJlcHJlc2VudG9ycyBv bgogaW50ZXJmYWNlIGF0dGFjaC9kZXRhY2gKClsgVXBzdHJlYW0gY29tbWl0IDZmMDhhMjJjNWZi MmI5YWVmYjhlY2Q4NDk2NzU4ZTdhNjc3YzFmZGUgXQoKQ3VycmVudGx5IHZwb3J0IHJlcHJlc2Vu dG9ycyBhcmUgYWRkZWQgb25seSBvbiBkcml2ZXIgbG9hZCBhbmQgcmVtb3ZlZCBvbgpkcml2ZXIg dW5sb2FkLiAgQXBwYXJlbnRseSB3ZSBmb3Jnb3QgdG8gaGFuZGxlIHRoZW0gd2hlbiB3ZSBhZGRl ZCB0aGUKc2VhbWxlc3MgcmVzZXQgZmxvdyBmZWF0dXJlLiAgVGhpcyBjYXVzZWQgdG8gbGVhdmUg dGhlIHJlcHJlc2VudG9ycwpuZXRkZXZzIGFsaXZlIGFuZCBhY3RpdmUgd2l0aCBvcGVuIEhXIHJl c291cmNlcyBvbiBwY2kgc2h1dGRvd24gYW5kIG9uCmVycm9yIHJlc2V0IGZsb3dzLgoKVG8gb3Zl cmNvbWUgdGhpcyB3ZSBtb3ZlIHRoZWlyIGhhbmRsaW5nIHRvIGludGVyZmFjZSBhdHRhY2gvZGV0 YWNoLCBzbwp0aGV5IHdvdWxkIGJlIGNsZWFuZWQgdXAgb24gc2h1dGRvd24gYW5kIHJlY3JlYXRl ZCBvbiByZXNldCBmbG93cy4KCkZpeGVzOiAyNmU1OWQ4MDc3YTMgKCJuZXQvbWx4NWU6IEltcGxl bWVudCBtbHg1ZSBpbnRlcmZhY2UgYXR0YWNoL2RldGFjaCBjYWxsYmFja3MiKQpTaWduZWQtb2Zm LWJ5OiBTYWVlZCBNYWhhbWVlZCA8c2FlZWRtQG1lbGxhbm94LmNvbT4KUmV2aWV3ZWQtYnk6IEhh ZGFyIEhlbiBaaW9uIDxoYWRhcmhAbWVsbGFub3guY29tPgpSZXZpZXdlZC1ieTogUm9pIERheWFu IDxyb2lkQG1lbGxhbm94LmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZl bUBkYXZlbWxvZnQubmV0PgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdr aEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94 L21seDUvY29yZS9lbl9tYWluLmMgfCAyMyArKysrKysrKysrKysrKystLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYyBiL2RyaXZl cnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMKaW5kZXggYjMwNjcx MzcuLjg2NTdiM2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21s eDUvY29yZS9lbl9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NS9jb3JlL2VuX21haW4uYwpAQCAtMzkzNiw2ICszOTM2LDE5IEBAIHN0YXRpYyB2b2lkIG1seDVl X3JlZ2lzdGVyX3Zwb3J0X3JlcChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldikKIAl9CiB9CiAK K3N0YXRpYyB2b2lkIG1seDVlX3VucmVnaXN0ZXJfdnBvcnRfcmVwKHN0cnVjdCBtbHg1X2NvcmVf ZGV2ICptZGV2KQoreworCXN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdyA9IG1kZXYtPnByaXYuZXN3 aXRjaDsKKwlpbnQgdG90YWxfdmZzID0gTUxYNV9UT1RBTF9WUE9SVFMobWRldik7CisJaW50IHZw b3J0OworCisJaWYgKCFNTFg1X0NBUF9HRU4obWRldiwgdnBvcnRfZ3JvdXBfbWFuYWdlcikpCisJ CXJldHVybjsKKworCWZvciAodnBvcnQgPSAxOyB2cG9ydCA8IHRvdGFsX3ZmczsgdnBvcnQrKykK KwkJbWx4NV9lc3dpdGNoX3VucmVnaXN0ZXJfdnBvcnRfcmVwKGVzdywgdnBvcnQpOworfQorCiB2 b2lkIG1seDVlX2RldGFjaF9uZXRkZXYoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHN0cnVj dCBuZXRfZGV2aWNlICpuZXRkZXYpCiB7CiAJc3RydWN0IG1seDVlX3ByaXYgKnByaXYgPSBuZXRk ZXZfcHJpdihuZXRkZXYpOwpAQCAtMzk4Myw2ICszOTk2LDcgQEAgc3RhdGljIGludCBtbHg1ZV9h dHRhY2goc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHZvaWQgKnZwcml2KQogCQlyZXR1cm4g ZXJyOwogCX0KIAorCW1seDVlX3JlZ2lzdGVyX3Zwb3J0X3JlcChtZGV2KTsKIAlyZXR1cm4gMDsK IH0KIApAQCAtMzk5NCw2ICs0MDA4LDcgQEAgc3RhdGljIHZvaWQgbWx4NWVfZGV0YWNoKHN0cnVj dCBtbHg1X2NvcmVfZGV2ICptZGV2LCB2b2lkICp2cHJpdikKIAlpZiAoIW5ldGlmX2RldmljZV9w cmVzZW50KG5ldGRldikpCiAJCXJldHVybjsKIAorCW1seDVlX3VucmVnaXN0ZXJfdnBvcnRfcmVw KG1kZXYpOwogCW1seDVlX2RldGFjaF9uZXRkZXYobWRldiwgbmV0ZGV2KTsKIAltbHg1ZV9kZXN0 cm95X21kZXZfcmVzb3VyY2VzKG1kZXYpOwogfQpAQCAtNDAxMiw4ICs0MDI3LDYgQEAgc3RhdGlj IHZvaWQgKm1seDVlX2FkZChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldikKIAlpZiAoZXJyKQog CQlyZXR1cm4gTlVMTDsKIAotCW1seDVlX3JlZ2lzdGVyX3Zwb3J0X3JlcChtZGV2KTsKLQogCWlm IChNTFg1X0NBUF9HRU4obWRldiwgdnBvcnRfZ3JvdXBfbWFuYWdlcikpCiAJCXBwcml2ID0gJmVz dy0+b2ZmbG9hZHMudnBvcnRfcmVwc1swXTsKIApAQCAtNDA2NSwxMyArNDA3OCw3IEBAIHZvaWQg bWx4NWVfZGVzdHJveV9uZXRkZXYoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHN0cnVjdCBt bHg1ZV9wcml2ICpwcml2KQogCiBzdGF0aWMgdm9pZCBtbHg1ZV9yZW1vdmUoc3RydWN0IG1seDVf Y29yZV9kZXYgKm1kZXYsIHZvaWQgKnZwcml2KQogewotCXN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVz dyA9IG1kZXYtPnByaXYuZXN3aXRjaDsKLQlpbnQgdG90YWxfdmZzID0gTUxYNV9UT1RBTF9WUE9S VFMobWRldik7CiAJc3RydWN0IG1seDVlX3ByaXYgKnByaXYgPSB2cHJpdjsKLQlpbnQgdnBvcnQ7 Ci0KLQlmb3IgKHZwb3J0ID0gMTsgdnBvcnQgPCB0b3RhbF92ZnM7IHZwb3J0KyspCi0JCW1seDVf ZXN3aXRjaF91bnJlZ2lzdGVyX3Zwb3J0X3JlcChlc3csIHZwb3J0KTsKIAogCXVucmVnaXN0ZXJf bmV0ZGV2KHByaXYtPm5ldGRldik7CiAJbWx4NWVfZGV0YWNoKG1kZXYsIHZwcml2KTsKLS0gCjIu MS4wCgoKRnJvbSBhNjMzMjY2NDY5OTVmZmVhY2VhNjUxN2M4OWNkMTc4YWJiMmMyYWY4IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUYXJpcSBUb3VrYW4gPHRhcmlxdEBtZWxsYW5veC5j b20+CkRhdGU6IFdlZCwgMjIgRmViIDIwMTcgMTc6MjA6MTMgKzAyMDAKU3ViamVjdDogW1BBVENI IDAwMi8xMTJdIG5ldC9tbHg1ZTogRG8gbm90IHJlZHVjZSBMUk8gV1FFIHNpemUgd2hlbiBub3Qg dXNpbmcKIGJ1aWxkX3NrYgoKWyBVcHN0cmVhbSBjb21taXQgNDA3OGU2MzdjMTJmMWUwYTc0Mjkz ZjFlYzk1NjNmNDJiZmYxNGEwMyBdCgpXaGVuIHJxX3R5cGUgaXMgU3RyaWRpbmcgUlEsIG5vIHJv b20gb2YgU0tCX1JFU0VSVkUgaXMgbmVlZGVkCmFzIFNLQiBhbGxvY2F0aW9uIGlzIG5vdCBkb25l IHZpYSBidWlsZF9za2IuCgpGaXhlczogZTRiODU1MDgwNzJiICgibmV0L21seDVlOiBTbGlnaHRs eSByZWR1Y2UgaGFyZHdhcmUgTFJPIHNpemUiKQpTaWduZWQtb2ZmLWJ5OiBUYXJpcSBUb3VrYW4g PHRhcmlxdEBtZWxsYW5veC5jb20+ClNpZ25lZC1vZmYtYnk6IFNhZWVkIE1haGFtZWVkIDxzYWVl ZG1AbWVsbGFub3guY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRh dmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxp bnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NS9jb3JlL2VuX21haW4uYyB8IDExICsrKysrLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNSBpbnNl cnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9t ZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jCmluZGV4IDg2NTdiM2IuLmQ0ZmE4NTEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMK KysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYwpA QCAtODEsNiArODEsNyBAQCBzdGF0aWMgYm9vbCBtbHg1ZV9jaGVja19mcmFnbWVudGVkX3N0cmlk aW5nX3JxX2NhcChzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldikKIHN0YXRpYyB2b2lkIG1seDVl X3NldF9ycV90eXBlX3BhcmFtcyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwgdTggcnFfdHlwZSkK IHsKIAlwcml2LT5wYXJhbXMucnFfd3FfdHlwZSA9IHJxX3R5cGU7CisJcHJpdi0+cGFyYW1zLmxy b193cWVfc3ogPSBNTFg1RV9QQVJBTVNfREVGQVVMVF9MUk9fV1FFX1NaOwogCXN3aXRjaCAocHJp di0+cGFyYW1zLnJxX3dxX3R5cGUpIHsKIAljYXNlIE1MWDVfV1FfVFlQRV9MSU5LRURfTElTVF9T VFJJRElOR19SUToKIAkJcHJpdi0+cGFyYW1zLmxvZ19ycV9zaXplID0gTUxYNUVfUEFSQU1TX0RF RkFVTFRfTE9HX1JRX1NJWkVfTVBXOwpAQCAtOTIsNiArOTMsMTAgQEAgc3RhdGljIHZvaWQgbWx4 NWVfc2V0X3JxX3R5cGVfcGFyYW1zKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LCB1OCBycV90eXBl KQogCQlicmVhazsKIAlkZWZhdWx0OiAvKiBNTFg1X1dRX1RZUEVfTElOS0VEX0xJU1QgKi8KIAkJ cHJpdi0+cGFyYW1zLmxvZ19ycV9zaXplID0gTUxYNUVfUEFSQU1TX0RFRkFVTFRfTE9HX1JRX1NJ WkU7CisKKwkJLyogRXh0cmEgcm9vbSBuZWVkZWQgZm9yIGJ1aWxkX3NrYiAqLworCQlwcml2LT5w YXJhbXMubHJvX3dxZV9zeiAtPSBNTFg1X1JYX0hFQURST09NICsKKwkJCVNLQl9EQVRBX0FMSUdO KHNpemVvZihzdHJ1Y3Qgc2tiX3NoYXJlZF9pbmZvKSk7CiAJfQogCXByaXYtPnBhcmFtcy5taW5f cnhfd3FlcyA9IG1seDVfbWluX3J4X3dxZXMocHJpdi0+cGFyYW1zLnJxX3dxX3R5cGUsCiAJCQkJ CSAgICAgICBCSVQocHJpdi0+cGFyYW1zLmxvZ19ycV9zaXplKSk7CkBAIC0zNDczLDEyICszNDc4 LDYgQEAgc3RhdGljIHZvaWQgbWx4NWVfYnVpbGRfbmljX25ldGRldl9wcml2KHN0cnVjdCBtbHg1 X2NvcmVfZGV2ICptZGV2LAogCW1seDVlX2J1aWxkX2RlZmF1bHRfaW5kaXJfcnF0KG1kZXYsIHBy aXYtPnBhcmFtcy5pbmRpcmVjdGlvbl9ycXQsCiAJCQkJICAgICAgTUxYNUVfSU5ESVJfUlFUX1NJ WkUsIHByb2ZpbGUtPm1heF9uY2gobWRldikpOwogCi0JcHJpdi0+cGFyYW1zLmxyb193cWVfc3og PQotCQlNTFg1RV9QQVJBTVNfREVGQVVMVF9MUk9fV1FFX1NaIC0KLQkJLyogRXh0cmEgcm9vbSBu ZWVkZWQgZm9yIGJ1aWxkX3NrYiAqLwotCQlNTFg1X1JYX0hFQURST09NIC0KLQkJU0tCX0RBVEFf QUxJR04oc2l6ZW9mKHN0cnVjdCBza2Jfc2hhcmVkX2luZm8pKTsKLQogCS8qIEluaXRpYWxpemUg cGZsYWdzICovCiAJTUxYNUVfU0VUX1BSSVZfRkxBRyhwcml2LCBNTFg1RV9QRkxBR19SWF9DUUVf QkFTRURfTU9ERVIsCiAJCQkgICAgcHJpdi0+cGFyYW1zLnJ4X2NxX3BlcmlvZF9tb2RlID09IE1M WDVfQ1FfUEVSSU9EX01PREVfU1RBUlRfRlJPTV9DUUUpOwotLSAKMi4xLjAKCgpGcm9tIDBjNmUz OGU3OTFlOTRhZTBiMmE3NzNlYTcyNjI2ODg3MTkwNzIzMTYgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IFRhcmlxIFRvdWthbiA8dGFyaXF0QG1lbGxhbm94LmNvbT4KRGF0ZTogV2VkLCAy MiBGZWIgMjAxNyAxNzoyMDoxNiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDAzLzExMl0gbmV0L21s eDVlOiBGaXggd3JvbmcgQ1FFIGRlY29tcHJlc3Npb24KClsgVXBzdHJlYW0gY29tbWl0IDM2MTU0 YmU0MGEyOGU0YWZhYTA0MTZkYTI2ODFkODBiN2UyY2EzMTkgXQoKSW4gY3FlIGNvbXByZXNzaW9u IHdpdGggc3RyaWRpbmcgUlEsIHRoZSBkZWNvbXByZXNzaW9uIG9mIHRoZSBDUUUgZmllbGQKd3Fl X2NvdW50ZXIgd2FzIGRvbmUgd2l0aCBhIHdyb25nIHdyYXBhcm91bmQgdmFsdWUuClRoaXMgY2F1 c2VkIGhhbmRsaW5nIGNxZXMgd2l0aCBhIHdyb25nIHBvaW50ZXIgdG8gd3FlIChyeCBkZXNjcmlw dG9yKQphbmQgY3JlYXRpbmcgU0tCcyB3aXRoIHdyb25nIGRhdGEsIHBvaW50aW5nIHRvIHdyb25n IChhbmQgYWxyZWFkeSBjb25zdW1lZCkKc3RyaWRlcy9wYWdlcy4KClRoZSBtZWFuaW5nIG9mIHRo ZSBDUUUgZmllbGQgd3FlX2NvdW50ZXIgaW4gc3RyaWRpbmcgUlEgaG9sZHMgdGhlCnN0cmlkZSBp bmRleCBpbnN0ZWFkIG9mIHRoZSBXUUUgaW5kZXguIEhlbmNlLCB3aGVuIGRlY29tcHJlc3NpbmcK YSBDUUUsIHdxZV9jb3VudGVyIHNob3VsZCBoYXZlIHdyYXBwZWQtYXJvdW5kIHRoZSBudW1iZXIg b2Ygc3RyaWRlcwppbiBhIHNpbmdsZSBtdWx0aS1wYWNrZXQgV1FFLgoKV2UgZHJvcHBlZCB0aGlz IHdyYXAtYXJvdW5kIG1hc2sgYXQgYWxsIGluIENRRSBkZWNvbXByZXNzaW9uIG9mIHN0cmlkaW5n ClJRLiBJdCBpcyBub3QgbmVlZGVkIGFzIGluIHN1Y2ggY2FzZXMgdGhlIENRRSBjb21wcmVzc2lv biBzZXNzaW9uIHdvdWxkCmJyZWFrIGJlY2F1c2Ugb2YgZGlmZmVyZW50IHZhbHVlIG9mIHdxZV9p ZCBmaWVsZCwgc3RhcnRpbmcgYSBuZXcKY29tcHJlc3Npb24gc2Vzc2lvbi4KClRlc3RlZDoKIGV0 aHRvb2wgLUsgZXRoeHggbHJvIG9mZi9vbgogZXRodG9vbCAtLXNldC1wcml2LWZsYWdzIGV0aHh4 IHJ4X2NxZV9jb21wcmVzcyBvbgogc3VwZXJfbmV0cGVyZiAxNiB7aXB2NCxpcHY2fSAtdCBUQ1Bf U1RSRUFNIC1tIDUwIC1ECiB2ZXJpZmllZCBubyBjc3VtIGVycm9ycyBhbmQgbm8gcGFnZSByZWZj b3VudCBpc3N1ZXMuCgpGaXhlczogNzIxOWFiMzRmMTg0ICgibmV0L21seDVlOiBDUUUgY29tcHJl c3Npb24iKQpTaWduZWQtb2ZmLWJ5OiBUYXJpcSBUb3VrYW4gPHRhcmlxdEBtZWxsYW5veC5jb20+ ClJlcG9ydGVkLWJ5OiBUb20gSGVyYmVydCA8dG9tQGhlcmJlcnRsYW5kLmNvbT4KQ2M6IGtlcm5l bC10ZWFtQGZiLmNvbQpTaWduZWQtb2ZmLWJ5OiBTYWVlZCBNYWhhbWVlZCA8c2FlZWRtQG1lbGxh bm94LmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQu bmV0PgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5k YXRpb24ub3JnPgotLS0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9l bl9yeC5jIHwgMTMgKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygr KSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg1L2NvcmUvZW5fcnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21s eDUvY29yZS9lbl9yeC5jCmluZGV4IGU3YjIxNTguLjc5NmJkZjAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jCisrKyBiL2RyaXZlcnMv bmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jCkBAIC05MiwxOSArOTIsMTgg QEAgc3RhdGljIGlubGluZSB2b2lkIG1seDVlX2NxZXNfdXBkYXRlX293bmVyKHN0cnVjdCBtbHg1 ZV9jcSAqY3EsIHUzMiBjcWNjLCBpbnQgbikKIHN0YXRpYyBpbmxpbmUgdm9pZCBtbHg1ZV9kZWNv bXByZXNzX2NxZShzdHJ1Y3QgbWx4NWVfcnEgKnJxLAogCQkJCQlzdHJ1Y3QgbWx4NWVfY3EgKmNx LCB1MzIgY3FjYykKIHsKLQl1MTYgd3FlX2NudF9zdGVwOwotCiAJY3EtPnRpdGxlLmJ5dGVfY250 ICAgICA9IGNxLT5taW5pX2FycltjcS0+bWluaV9hcnJfaWR4XS5ieXRlX2NudDsKIAljcS0+dGl0 bGUuY2hlY2tfc3VtICAgID0gY3EtPm1pbmlfYXJyW2NxLT5taW5pX2Fycl9pZHhdLmNoZWNrc3Vt OwogCWNxLT50aXRsZS5vcF9vd24gICAgICAmPSAweGYwOwogCWNxLT50aXRsZS5vcF9vd24gICAg ICB8PSAweDAxICYgKGNxY2MgPj4gY3EtPndxLmxvZ19zeik7CiAJY3EtPnRpdGxlLndxZV9jb3Vu dGVyICA9IGNwdV90b19iZTE2KGNxLT5kZWNtcHJzX3dxZV9jb3VudGVyKTsKIAotCXdxZV9jbnRf c3RlcCA9Ci0JCXJxLT53cV90eXBlID09IE1MWDVfV1FfVFlQRV9MSU5LRURfTElTVF9TVFJJRElO R19SUSA/Ci0JCW1wd3JxX2dldF9jcWVfY29uc3VtZWRfc3RyaWRlcygmY3EtPnRpdGxlKSA6IDE7 Ci0JY3EtPmRlY21wcnNfd3FlX2NvdW50ZXIgPQotCQkoY3EtPmRlY21wcnNfd3FlX2NvdW50ZXIg KyB3cWVfY250X3N0ZXApICYgcnEtPndxLnN6X20xOworCWlmIChycS0+d3FfdHlwZSA9PSBNTFg1 X1dRX1RZUEVfTElOS0VEX0xJU1RfU1RSSURJTkdfUlEpCisJCWNxLT5kZWNtcHJzX3dxZV9jb3Vu dGVyICs9CisJCQltcHdycV9nZXRfY3FlX2NvbnN1bWVkX3N0cmlkZXMoJmNxLT50aXRsZSk7CisJ ZWxzZQorCQljcS0+ZGVjbXByc193cWVfY291bnRlciA9CisJCQkoY3EtPmRlY21wcnNfd3FlX2Nv dW50ZXIgKyAxKSAmIHJxLT53cS5zel9tMTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIG1seDVl X2RlY29tcHJlc3NfY3FlX25vX2hhc2goc3RydWN0IG1seDVlX3JxICpycSwKLS0gCjIuMS4wCgoK RnJvbSBlZTJkYTc5ZGUyODlkMDYyYzljM2E1NzE0YjNmNGQzN2ZhNmM4NjhmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXR0aGlhcyBTY2hpZmZlciA8bXNjaGlmZmVyQHVuaXZlcnNl LWZhY3RvcnkubmV0PgpEYXRlOiBUaHUsIDIzIEZlYiAyMDE3IDE3OjE5OjQxICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAwMDQvMTEyXSB2eGxhbjogY29ycmVjdGx5IHZhbGlkYXRlIFZYTEFOIElEIGFn YWluc3QKIFZYTEFOX05fVklECgpbIFVwc3RyZWFtIGNvbW1pdCA0ZTM3ZDY5MTFmMzY1NDViMjg2 ZDE1MDczZjZmMjIyMmY4NDBlODFjIF0KClRoZSBpbmNvcnJlY3QgY2hlY2sgY2F1c2VkIGFuIG9m Zi1ieS1vbmUgZXJyb3I6IHRoZSBtYXhpbXVtIFZJRCAweGZmZmZmZgp3YXMgdW51c2FibGUuCgpG aXhlczogZDM0Mjg5NGM1ZDJmICgidnhsYW46IHZpcnR1YWwgZXh0ZW5zaWJsZSBsYW4iKQpTaWdu ZWQtb2ZmLWJ5OiBNYXR0aGlhcyBTY2hpZmZlciA8bXNjaGlmZmVyQHVuaXZlcnNlLWZhY3Rvcnku bmV0PgpBY2tlZC1ieTogSmlyaSBCZW5jIDxqYmVuY0ByZWRoYXQuY29tPgpTaWduZWQtb2ZmLWJ5 OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdy ZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogZHJpdmVy cy9uZXQvdnhsYW4uYyB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4bGFuLmMgYi9kcml2ZXJzL25l dC92eGxhbi5jCmluZGV4IGQ0ZjQ5NWIuLjdlM2IyZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L3Z4bGFuLmMKKysrIGIvZHJpdmVycy9uZXQvdnhsYW4uYwpAQCAtMjYzNyw3ICsyNjM3LDcgQEAg c3RhdGljIGludCB2eGxhbl92YWxpZGF0ZShzdHJ1Y3QgbmxhdHRyICp0YltdLCBzdHJ1Y3Qgbmxh dHRyICpkYXRhW10pCiAKIAlpZiAoZGF0YVtJRkxBX1ZYTEFOX0lEXSkgewogCQlfX3UzMiBpZCA9 IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9WWExBTl9JRF0pOwotCQlpZiAoaWQgPj0gVlhMQU5fVklE X01BU0spCisJCWlmIChpZCA+PSBWWExBTl9OX1ZJRCkKIAkJCXJldHVybiAtRVJBTkdFOwogCX0K IAotLSAKMi4xLjAKCgpGcm9tIGY3MDgxMDU3ZDEyYzBjYjUwYTg0ODY5YmFlMDNmYjlkNDA2MDM3 ZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IERhdmlkIEZvcnN0ZXIgPGRmb3JzdGVy QGJyb2NhZGUuY29tPgpEYXRlOiBGcmksIDI0IEZlYiAyMDE3IDE0OjIwOjMyICswMDAwClN1Ympl Y3Q6IFtQQVRDSCAwMDUvMTEyXSB2dGk2OiByZXR1cm4gR1JFX0tFWSBmb3IgdnRpNgoKWyBVcHN0 cmVhbSBjb21taXQgN2RjZGY5NDFjZGM5NjY5MmFiOTlmZDc5MGM4Y2M2ODk0NTUxNDg1MSBdCgpB bGlnbiB2dGk2IHdpdGggdnRpIGJ5IHJldHVybmluZyBHUkVfS0VZIGZsYWcuIFRoaXMgZW5hYmxl cyBpcHJvdXRlMgp0byBkaXNwbGF5IHR1bm5lbCBrZXlzIG9uICJpcCAtNiB0dW5uZWwgc2hvdyIK ClNpZ25lZC1vZmYtYnk6IERhdmlkIEZvcnN0ZXIgPGRmb3JzdGVyQGJyb2NhZGUuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1v ZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0t LQogbmV0L2lwdjYvaXA2X3Z0aS5jIHwgNCArKysrCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X3Z0aS5jIGIvbmV0L2lwdjYvaXA2X3Z0 aS5jCmluZGV4IGMyOTljMWUuLjY2YzJiNGIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2lwNl92dGku YworKysgYi9uZXQvaXB2Ni9pcDZfdnRpLmMKQEAgLTY5MSw2ICs2OTEsMTAgQEAgdnRpNl9wYXJt X3RvX3VzZXIoc3RydWN0IGlwNl90bmxfcGFybTIgKnUsIGNvbnN0IHN0cnVjdCBfX2lwNl90bmxf cGFybSAqcCkKIAl1LT5saW5rID0gcC0+bGluazsKIAl1LT5pX2tleSA9IHAtPmlfa2V5OwogCXUt Pm9fa2V5ID0gcC0+b19rZXk7CisJaWYgKHUtPmlfa2V5KQorCQl1LT5pX2ZsYWdzIHw9IEdSRV9L RVk7CisJaWYgKHUtPm9fa2V5KQorCQl1LT5vX2ZsYWdzIHw9IEdSRV9LRVk7CiAJdS0+cHJvdG8g PSBwLT5wcm90bzsKIAogCW1lbWNweSh1LT5uYW1lLCBwLT5uYW1lLCBzaXplb2YodS0+bmFtZSkp OwotLSAKMi4xLjAKCgpGcm9tIGE2NDQwN2ZhZmUwOWNhMzNiMDlhYWJkNDljNWQ1MjZiMWI2Yjc1 MjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJyaWFuIFJ1c3NlbGwgPGJydXNzZWxs QGJyb2NhZGUuY29tPgpEYXRlOiBGcmksIDI0IEZlYiAyMDE3IDE3OjQ3OjExICswMDAwClN1Ympl Y3Q6IFtQQVRDSCAwMDYvMTEyXSB2eGxhbjogZG9uJ3QgYWxsb3cgb3ZlcndyaXRlIG9mIGNvbmZp ZyBzcmMgYWRkcgoKWyBVcHN0cmVhbSBjb21taXQgMTE1ODYzMmI1YTJkY2NlMDc4NmMxYjFiOTk2 NTRlODFjYzg2Nzk4MSBdCgpXaGVuIHVzaW5nIElQdjYgdHJhbnNwb3J0IGFuZCBhIGRlZmF1bHQg ZHN0LCBhIHBvaW50ZXIgdG8gdGhlIGNvbmZpZ3VyZWQKc291cmNlIGFkZHJlc3MgaXMgcGFzc2Vk IGludG8gdGhlIHJvdXRlIGxvb2t1cC4gSWYgbm8gc291cmNlIGFkZHJlc3MgaXMKY29uZmlndXJl ZCwgdGhlbiB0aGUgdmFsdWUgaXMgb3ZlcndyaXR0ZW4uCgpJUHY2IHJvdXRlIGxvb2t1cCBpZ25v cmVzIGVncmVzcyBpZmluZGV4IG1hdGNoIGlmIHRoZSBzb3VyY2UgYWRkcmVzcyBpcyBzZXQsCnNv IGlmIGVncmVzcyBpZmluZGV4IG1hdGNoIGlzIGRlc2lyZWQsIHRoZSBzb3VyY2UgYWRkcmVzcyBt dXN0IGJlIHBhc3NlZAphcyBhbnkuIFRoZSBvdmVyd3JpdGUgYnJlYWtzIHRoaXMgZm9yIHN1YnNl cXVlbnQgbG9va3Vwcy4KCkF2b2lkIHRoaXMgYnkgY29weWluZyB0aGUgY29uZmlndXJlZCBhZGRy ZXNzIHRvIGFuIGV4aXN0aW5nIHN0YWNrIHZhcmlhYmxlCmFuZCBwYXNzIGEgcG9pbnRlciB0byB0 aGF0IGluc3RlYWQuCgpGaXhlczogMjcyZDk2YTVhYjEwICgibmV0OiB2eGxhbjogbHd0OiBVc2Ug c291cmNlIGlwIGFkZHJlc3MgZHVyaW5nIHJvdXRlIGxvb2t1cC4iKQoKU2lnbmVkLW9mZi1ieTog QnJpYW4gUnVzc2VsbCA8YnJ1c3NlbGxAYnJvY2FkZS5jb20+CkFja2VkLWJ5OiBKaXJpIEJlbmMg PGpiZW5jQHJlZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1A ZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hA bGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBkcml2ZXJzL25ldC92eGxhbi5jIHwgMTIgKysrKyst LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4bGFuLmMgYi9kcml2ZXJzL25ldC92eGxhbi5jCmlu ZGV4IDdlM2IyZTIuLmFjM2Y4ZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Z4bGFuLmMKKysr IGIvZHJpdmVycy9uZXQvdnhsYW4uYwpAQCAtMTk0Miw3ICsxOTQyLDYgQEAgc3RhdGljIHZvaWQg dnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRl diwKIAljb25zdCBzdHJ1Y3QgaXBoZHIgKm9sZF9pcGg7CiAJdW5pb24gdnhsYW5fYWRkciAqZHN0 OwogCXVuaW9uIHZ4bGFuX2FkZHIgcmVtb3RlX2lwLCBsb2NhbF9pcDsKLQl1bmlvbiB2eGxhbl9h ZGRyICpzcmM7CiAJc3RydWN0IHZ4bGFuX21ldGFkYXRhIF9tZDsKIAlzdHJ1Y3QgdnhsYW5fbWV0 YWRhdGEgKm1kID0gJl9tZDsKIAlfX2JlMTYgc3JjX3BvcnQgPSAwLCBkc3RfcG9ydDsKQEAgLTE5 NjAsNyArMTk1OSw3IEBAIHN0YXRpYyB2b2lkIHZ4bGFuX3htaXRfb25lKHN0cnVjdCBza19idWZm ICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCWRzdF9wb3J0ID0gcmRzdC0+cmVtb3Rl X3BvcnQgPyByZHN0LT5yZW1vdGVfcG9ydCA6IHZ4bGFuLT5jZmcuZHN0X3BvcnQ7CiAJCXZuaSA9 IHJkc3QtPnJlbW90ZV92bmk7CiAJCWRzdCA9ICZyZHN0LT5yZW1vdGVfaXA7Ci0JCXNyYyA9ICZ2 eGxhbi0+Y2ZnLnNhZGRyOworCQlsb2NhbF9pcCA9IHZ4bGFuLT5jZmcuc2FkZHI7CiAJCWRzdF9j YWNoZSA9ICZyZHN0LT5kc3RfY2FjaGU7CiAJfSBlbHNlIHsKIAkJaWYgKCFpbmZvKSB7CkBAIC0x OTc5LDcgKzE5NzgsNiBAQCBzdGF0aWMgdm9pZCB2eGxhbl94bWl0X29uZShzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJbG9jYWxfaXAuc2luNi5zaW42X2Fk ZHIgPSBpbmZvLT5rZXkudS5pcHY2LnNyYzsKIAkJfQogCQlkc3QgPSAmcmVtb3RlX2lwOwotCQlz cmMgPSAmbG9jYWxfaXA7CiAJCWRzdF9jYWNoZSA9ICZpbmZvLT5kc3RfY2FjaGU7CiAJfQogCkBA IC0yMDI4LDcgKzIwMjYsNyBAQCBzdGF0aWMgdm9pZCB2eGxhbl94bWl0X29uZShzdHJ1Y3Qgc2tf YnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQlydCA9IHZ4bGFuX2dldF9yb3V0 ZSh2eGxhbiwgc2tiLAogCQkJCSAgICAgcmRzdCA/IHJkc3QtPnJlbW90ZV9pZmluZGV4IDogMCwg dG9zLAogCQkJCSAgICAgZHN0LT5zaW4uc2luX2FkZHIuc19hZGRyLAotCQkJCSAgICAgJnNyYy0+ c2luLnNpbl9hZGRyLnNfYWRkciwKKwkJCQkgICAgICZsb2NhbF9pcC5zaW4uc2luX2FkZHIuc19h ZGRyLAogCQkJCSAgICAgZHN0X2NhY2hlLCBpbmZvKTsKIAkJaWYgKElTX0VSUihydCkpIHsKIAkJ CW5ldGRldl9kYmcoZGV2LCAibm8gcm91dGUgdG8gJXBJNFxuIiwKQEAgLTIwNzEsNyArMjA2OSw3 IEBAIHN0YXRpYyB2b2lkIHZ4bGFuX3htaXRfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVj dCBuZXRfZGV2aWNlICpkZXYsCiAJCWlmIChlcnIgPCAwKQogCQkJZ290byB4bWl0X3R4X2Vycm9y OwogCi0JCXVkcF90dW5uZWxfeG1pdF9za2IocnQsIHNrLCBza2IsIHNyYy0+c2luLnNpbl9hZGRy LnNfYWRkciwKKwkJdWRwX3R1bm5lbF94bWl0X3NrYihydCwgc2ssIHNrYiwgbG9jYWxfaXAuc2lu LnNpbl9hZGRyLnNfYWRkciwKIAkJCQkgICAgZHN0LT5zaW4uc2luX2FkZHIuc19hZGRyLCB0b3Ms IHR0bCwgZGYsCiAJCQkJICAgIHNyY19wb3J0LCBkc3RfcG9ydCwgeG5ldCwgIXVkcF9zdW0pOwog I2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpCkBAIC0yMDg3LDcgKzIwODUsNyBAQCBzdGF0aWMg dm9pZCB2eGxhbl94bWl0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2Rldmlj ZSAqZGV2LAogCQluZHN0ID0gdnhsYW42X2dldF9yb3V0ZSh2eGxhbiwgc2tiLAogCQkJCQlyZHN0 ID8gcmRzdC0+cmVtb3RlX2lmaW5kZXggOiAwLCB0b3MsCiAJCQkJCWxhYmVsLCAmZHN0LT5zaW42 LnNpbjZfYWRkciwKLQkJCQkJJnNyYy0+c2luNi5zaW42X2FkZHIsCisJCQkJCSZsb2NhbF9pcC5z aW42LnNpbjZfYWRkciwKIAkJCQkJZHN0X2NhY2hlLCBpbmZvKTsKIAkJaWYgKElTX0VSUihuZHN0 KSkgewogCQkJbmV0ZGV2X2RiZyhkZXYsICJubyByb3V0ZSB0byAlcEk2XG4iLApAQCAtMjEzNCw3 ICsyMTMyLDcgQEAgc3RhdGljIHZvaWQgdnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNr Yiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCXJldHVybjsKIAkJfQogCQl1ZHBfdHVubmVs Nl94bWl0X3NrYihuZHN0LCBzaywgc2tiLCBkZXYsCi0JCQkJICAgICAmc3JjLT5zaW42LnNpbjZf YWRkciwKKwkJCQkgICAgICZsb2NhbF9pcC5zaW42LnNpbjZfYWRkciwKIAkJCQkgICAgICZkc3Qt PnNpbjYuc2luNl9hZGRyLCB0b3MsIHR0bCwKIAkJCQkgICAgIGxhYmVsLCBzcmNfcG9ydCwgZHN0 X3BvcnQsICF1ZHBfc3VtKTsKICNlbmRpZgotLSAKMi4xLjAKCgpGcm9tIDM2OTMxZWIwMTVlZTQ0 ZmUyYzhmMjIwYjQ2NTAwYjI1ZjcyODI0NDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IEp1bGlhbiBBbmFzdGFzb3YgPGphQHNzaS5iZz4KRGF0ZTogU3VuLCAyNiBGZWIgMjAxNyAxNzox NDozNSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDA3LzExMl0gaXB2NDogbWFzayB0b3MgZm9yIGlu cHV0IHJvdXRlCgpbIFVwc3RyZWFtIGNvbW1pdCA2ZTI4MDk5ZDM4YzBlNTBkNjJjMWFmYzA1NGUz N2U1NzNhZGYzZDIxIF0KClJlc3RvcmUgdGhlIGxvc3QgbWFza2luZyBvZiBUT1MgaW4gaW5wdXQg cm91dGUgY29kZSB0bwphbGxvdyBpcCBydWxlcyB0byBtYXRjaCBpdCBwcm9wZXJseS4KClByb2Js ZW0gWzFdIG5vdGljZWQgYnkgU2htdWxpayBMYWRrYW5pIDxzaG11bGlrLmxhZGthbmlAZ21haWwu Y29tPgoKWzFdIGh0dHA6Ly9tYXJjLmluZm8vP3Q9MTM3MzMxNzU1MzAwMDQwJnI9MSZ3PTIKCkZp eGVzOiA4OWFlZjg5MjFiZmIgKCJpcHY0OiBEZWxldGUgcm91dGluZyBjYWNoZS4iKQpTaWduZWQt b2ZmLWJ5OiBKdWxpYW4gQW5hc3Rhc292IDxqYUBzc2kuYmc+ClNpZ25lZC1vZmYtYnk6IERhdmlk IFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9h aC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBuZXQvaXB2NC9yb3V0 ZS5jIHwgMSArCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKCmRpZmYgLS1naXQgYS9u ZXQvaXB2NC9yb3V0ZS5jIGIvbmV0L2lwdjQvcm91dGUuYwppbmRleCBkODUxY2FlLi4xN2U2ZmJm IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9yb3V0ZS5jCisrKyBiL25ldC9pcHY0L3JvdXRlLmMKQEAg LTE5NjgsNiArMTk2OCw3IEBAIGludCBpcF9yb3V0ZV9pbnB1dF9ub3JlZihzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLCBfX2JlMzIgZGFkZHIsIF9fYmUzMiBzYWRkciwKIHsKIAlpbnQgcmVzOwogCisJdG9z ICY9IElQVE9TX1JUX01BU0s7CiAJcmN1X3JlYWRfbG9jaygpOwogCiAJLyogTXVsdGljYXN0IHJl Y29nbml0aW9uIGxvZ2ljIGlzIG1vdmVkIGZyb20gcm91dGUgY2FjaGUgdG8gaGVyZS4KLS0gCjIu MS4wCgoKRnJvbSAwNjM4OTNlNGVjODhjMjUzZmY1MmE4ZTg0ODYxNjlmY2Y1ZTJkODQwIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSb21hbiBNYXNoYWsgPG1ydkBtb2phdGF0dS5jb20+ CkRhdGU6IEZyaSwgMjQgRmViIDIwMTcgMTE6MDA6MzIgLTA1MDAKU3ViamVjdDogW1BBVENIIDAw OC8xMTJdIG5ldCBzY2hlZCBhY3Rpb25zOiBkZWNyZW1lbnQgbW9kdWxlIHJlZmVyZW5jZSBjb3Vu dAogYWZ0ZXIgdGFibGUgZmx1c2guCgpbIFVwc3RyZWFtIGNvbW1pdCBlZGI5ZDFiZmY0YmJlMTli OGFlMGU3MWIxZjM4NzMyNTkxYTllZWIyIF0KCldoZW4gdGMgYWN0aW9ucyBhcmUgbG9hZGVkIGFz IGEgbW9kdWxlIGFuZCBubyBhY3Rpb25zIGhhdmUgYmVlbiBpbnN0YWxsZWQsCmZsdXNoaW5nIHRo ZW0gd291bGQgcmVzdWx0IGluIGFjdGlvbnMgcmVtb3ZlZCBmcm9tIHRoZSBtZW1vcnksIGJ1dCBt b2R1bGVzCnJlZmVyZW5jZSBjb3VudCBub3QgYmVpbmcgZGVjcmVtZW50ZWQsIHNvIHRoYXQgdGhl IG1vZHVsZXMgd291bGQgbm90IGJlCnVubG9hZGVkLgoKRm9sbG93aW5nIGlzIGV4YW1wbGUgd2l0 aCBHQUNUIGFjdGlvbjoKCiUgc3VkbyBtb2Rwcm9iZSBhY3RfZ2FjdAolIGxzbW9kCk1vZHVsZSAg ICAgICAgICAgICAgICAgIFNpemUgIFVzZWQgYnkKYWN0X2dhY3QgICAgICAgICAgICAgICAxNjM4 NCAgMAolCiUgc3VkbyB0YyBhY3Rpb25zIGxzIGFjdGlvbiBnYWN0CiUKJSBzdWRvIHRjIGFjdGlv bnMgZmx1c2ggYWN0aW9uIGdhY3QKJSBsc21vZApNb2R1bGUgICAgICAgICAgICAgICAgICBTaXpl ICBVc2VkIGJ5CmFjdF9nYWN0ICAgICAgICAgICAgICAgMTYzODQgIDEKJSBzdWRvIHRjIGFjdGlv bnMgZmx1c2ggYWN0aW9uIGdhY3QKJSBsc21vZApNb2R1bGUgICAgICAgICAgICAgICAgICBTaXpl ICBVc2VkIGJ5CmFjdF9nYWN0ICAgICAgICAgICAgICAgMTYzODQgIDIKJSBzdWRvIHJtbW9kIGFj dF9nYWN0CnJtbW9kOiBFUlJPUjogTW9kdWxlIGFjdF9nYWN0IGlzIGluIHVzZQouLi4uCgpBZnRl ciB0aGUgZml4OgolIGxzbW9kCk1vZHVsZSAgICAgICAgICAgICAgICAgIFNpemUgIFVzZWQgYnkK YWN0X2dhY3QgICAgICAgICAgICAgICAxNjM4NCAgMAolCiUgc3VkbyB0YyBhY3Rpb25zIGFkZCBh Y3Rpb24gcGFzcyBpbmRleCAxCiUgc3VkbyB0YyBhY3Rpb25zIGFkZCBhY3Rpb24gcGFzcyBpbmRl eCAyCiUgc3VkbyB0YyBhY3Rpb25zIGFkZCBhY3Rpb24gcGFzcyBpbmRleCAzCiUgbHNtb2QKTW9k dWxlICAgICAgICAgICAgICAgICAgU2l6ZSAgVXNlZCBieQphY3RfZ2FjdCAgICAgICAgICAgICAg IDE2Mzg0ICAzCiUKJSBzdWRvIHRjIGFjdGlvbnMgZmx1c2ggYWN0aW9uIGdhY3QKJSBsc21vZApN b2R1bGUgICAgICAgICAgICAgICAgICBTaXplICBVc2VkIGJ5CmFjdF9nYWN0ICAgICAgICAgICAg ICAgMTYzODQgIDAKJQolIHN1ZG8gdGMgYWN0aW9ucyBmbHVzaCBhY3Rpb24gZ2FjdAolIGxzbW9k Ck1vZHVsZSAgICAgICAgICAgICAgICAgIFNpemUgIFVzZWQgYnkKYWN0X2dhY3QgICAgICAgICAg ICAgICAxNjM4NCAgMAolIHN1ZG8gcm1tb2QgYWN0X2dhY3QKJSBsc21vZApNb2R1bGUgICAgICAg ICAgICAgICAgICBTaXplICBVc2VkIGJ5CiUKCkZpeGVzOiBmOTcwMTdjZGVmZWYgKCJuZXQtc2No ZWQ6IEZpeCBhY3Rpb25zIGZsdXNoaW5nIikKU2lnbmVkLW9mZi1ieTogUm9tYW4gTWFzaGFrIDxt cnZAbW9qYXRhdHUuY29tPgpTaWduZWQtb2ZmLWJ5OiBKYW1hbCBIYWRpIFNhbGltIDxqaHNAbW9q YXRhdHUuY29tPgpBY2tlZC1ieTogQ29uZyBXYW5nIDx4aXlvdS53YW5nY29uZ0BnbWFpbC5jb20+ ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2ln bmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9y Zz4KLS0tCiBuZXQvc2NoZWQvYWN0X2FwaS5jIHwgNSArLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3Rf YXBpLmMgYi9uZXQvc2NoZWQvYWN0X2FwaS5jCmluZGV4IGM2YzJhOTMuLmM2NTFjZmMgMTAwNjQ0 Ci0tLSBhL25ldC9zY2hlZC9hY3RfYXBpLmMKKysrIGIvbmV0L3NjaGVkL2FjdF9hcGkuYwpAQCAt ODIwLDEwICs4MjAsOCBAQCBzdGF0aWMgaW50IHRjYV9hY3Rpb25fZmx1c2goc3RydWN0IG5ldCAq bmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsCiAJCWdvdG8gb3V0X21vZHVsZV9wdXQ7CiAKIAllcnIg PSBvcHMtPndhbGsobmV0LCBza2IsICZkY2IsIFJUTV9ERUxBQ1RJT04sIG9wcyk7Ci0JaWYgKGVy ciA8IDApCisJaWYgKGVyciA8PSAwKQogCQlnb3RvIG91dF9tb2R1bGVfcHV0OwotCWlmIChlcnIg PT0gMCkKLQkJZ290byBub2ZsdXNoX291dDsKIAogCW5sYV9uZXN0X2VuZChza2IsIG5lc3QpOwog CkBAIC04NDAsNyArODM4LDYgQEAgc3RhdGljIGludCB0Y2FfYWN0aW9uX2ZsdXNoKHN0cnVjdCBu ZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLAogb3V0X21vZHVsZV9wdXQ6CiAJbW9kdWxlX3B1 dChvcHMtPm93bmVyKTsKIGVycl9vdXQ6Ci1ub2ZsdXNoX291dDoKIAlrZnJlZV9za2Ioc2tiKTsK IAlyZXR1cm4gZXJyOwogfQotLSAKMi4xLjAKCgpGcm9tIDgzNzc4NmNiYmI2MGYwMDc3MGIwMmVm ZDE1NTQ2YjM2MDA4YjUzNmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/ cT9QYXVsPTIwSD1DMz1CQ2Jlcj89IDxwaHVlYmVyQGtlcm5zcC5pbj4KRGF0ZTogU3VuLCAyNiBG ZWIgMjAxNyAxNzo1ODoxOSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDA5LzExMl0gbDJ0cDogYXZv aWQgdXNlLWFmdGVyLWZyZWUgY2F1c2VkIGJ5CiBsMnRwX2lwX2JhY2tsb2dfcmVjdgpNSU1FLVZl cnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVu dC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKWyBVcHN0cmVhbSBjb21taXQgNTFmYjYwZWIxNjJh Yjg0YzVlZGYyYWU5YzYzY2YwYjg3OGU1NTQ3ZSBdCgpsMnRwX2lwX2JhY2tsb2dfcmVjdiBtYXkg bm90IHJldHVybiAtMSBpZiB0aGUgcGFja2V0IGdldHMgZHJvcHBlZC4KVGhlIHJldHVybiB2YWx1 ZSBpcyBwYXNzZWQgdXAgdG8gaXBfbG9jYWxfZGVsaXZlcl9maW5pc2gsIHdoaWNoIHRyZWF0cwpu ZWdhdGl2ZSB2YWx1ZXMgYXMgYW4gSVAgcHJvdG9jb2wgbnVtYmVyIGZvciByZXN1Ym1pc3Npb24u CgpTaWduZWQtb2ZmLWJ5OiBQYXVsIEjDvGJlciA8cGh1ZWJlckBrZXJuc3AuaW4+ClNpZ25lZC1v ZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1i eTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBu ZXQvbDJ0cC9sMnRwX2lwLmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9uZXQvbDJ0cC9sMnRwX2lwLmMgYi9uZXQvbDJ0 cC9sMnRwX2lwLmMKaW5kZXggYzBmMDc1MC4uZmY3NTBiYiAxMDA2NDQKLS0tIGEvbmV0L2wydHAv bDJ0cF9pcC5jCisrKyBiL25ldC9sMnRwL2wydHBfaXAuYwpAQCAtMzg4LDcgKzM4OCw3IEBAIHN0 YXRpYyBpbnQgbDJ0cF9pcF9iYWNrbG9nX3JlY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tf YnVmZiAqc2tiKQogZHJvcDoKIAlJUF9JTkNfU1RBVFMoc29ja19uZXQoc2spLCBJUFNUQVRTX01J Ql9JTkRJU0NBUkRTKTsKIAlrZnJlZV9za2Ioc2tiKTsKLQlyZXR1cm4gLTE7CisJcmV0dXJuIDA7 CiB9CiAKIC8qIFVzZXJzcGFjZSB3aWxsIGNhbGwgc2VuZG1zZygpIG9uIHRoZSB0dW5uZWwgc29j a2V0IHRvIHNlbmQgTDJUUAotLSAKMi4xLjAKCgpGcm9tIGZlYWE1YmFiNDMzNTBiOTU0MjhkYzAx Y2YxZjA2NDMwNWU3MmRkODcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEZsb3JpYW4g RmFpbmVsbGkgPGYuZmFpbmVsbGlAZ21haWwuY29tPgpEYXRlOiBGcmksIDIwIEphbiAyMDE3IDE1 OjMxOjUyIC0wODAwClN1YmplY3Q6IFtQQVRDSCAwMTAvMTEyXSBuZXQ6IHBoeTogQXZvaWQgZGVh ZGxvY2sgZHVyaW5nIHBoeV9lcnJvcigpCgpbIFVwc3RyZWFtIGNvbW1pdCBlYWIxMjc3MTdhNmFm NTQ0MDFiYTUzNDc5MGM3OTNlYzE0M2NkMWZjIF0KCnBoeV9lcnJvcigpIGlzIGNhbGxlZCBpbiB0 aGUgUEhZIHN0YXRlIG1hY2hpbmUgd29ya3F1ZXVlIGNvbnRleHQsIGFuZApjYWxscyBwaHlfdHJp Z2dlcl9tYWNoaW5lKCkgd2hpY2ggZG9lcyBhIGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygpIG9m CnRoZSB3b3JrcXVldWUgd2UgZXhlY3V0ZSBmcm9tLCBjYXVzaW5nIGEgZGVhZGxvY2sgc2l0dWF0 aW9uLgoKQXVnbWVudCBwaHlfdHJpZ2dlcl9tYWNoaW5lKCkgbWFjaGluZSB3aXRoIGEgc3luYyBi b29sZWFuIGluZGljYXRpbmcKd2hldGhlciB3ZSBzaG91bGQgdXNlIGNhbmNlbF8qX3N5bmMoKSBv ciBqdXN0IGNhbmNlbF8qX3dvcmsoKS4KCkZpeGVzOiAzYzI5M2Y0ZTA4YjUgKCJuZXQ6IHBoeTog VHJpZ2dlciBzdGF0ZSBtYWNoaW5lIG9uIHN0YXRlIGNoYW5nZSBhbmQgbm90IHBvbGxpbmcuIikK UmVwb3J0ZWQtYnk6IFJ1c3NlbGwgS2luZyA8cm1rK2tlcm5lbEBhcm1saW51eC5vcmcudWs+ClNp Z25lZC1vZmYtYnk6IEZsb3JpYW4gRmFpbmVsbGkgPGYuZmFpbmVsbGlAZ21haWwuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1v ZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0t LQogZHJpdmVycy9uZXQvcGh5L3BoeS5jIHwgMTQgKysrKysrKysrLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCA5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvcGh5L3BoeS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeS5jCmluZGV4IGY0MjRiODYuLjIw MWZmYTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHkuYworKysgYi9kcml2ZXJzL25l dC9waHkvcGh5LmMKQEAgLTYxMSwxNCArNjExLDE4IEBAIHZvaWQgcGh5X3N0YXJ0X21hY2hpbmUo c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKICAqIHBoeV90cmlnZ2VyX21hY2hpbmUgLSB0cmln Z2VyIHRoZSBzdGF0ZSBtYWNoaW5lIHRvIHJ1bgogICoKICAqIEBwaHlkZXY6IHRoZSBwaHlfZGV2 aWNlIHN0cnVjdAorICogQHN5bmM6IGluZGljYXRlIHdoZXRoZXIgd2Ugc2hvdWxkIHdhaXQgZm9y IHRoZSB3b3JrcXVldWUgY2FuY2VsYXRpb24KICAqCiAgKiBEZXNjcmlwdGlvbjogVGhlcmUgaGFz IGJlZW4gYSBjaGFuZ2UgaW4gc3RhdGUgd2hpY2ggcmVxdWlyZXMgdGhhdCB0aGUKICAqICAgc3Rh dGUgbWFjaGluZSBydW5zLgogICovCiAKLXN0YXRpYyB2b2lkIHBoeV90cmlnZ2VyX21hY2hpbmUo c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKK3N0YXRpYyB2b2lkIHBoeV90cmlnZ2VyX21hY2hp bmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBzeW5jKQogewotCWNhbmNlbF9kZWxh eWVkX3dvcmtfc3luYygmcGh5ZGV2LT5zdGF0ZV9xdWV1ZSk7CisJaWYgKHN5bmMpCisJCWNhbmNl bF9kZWxheWVkX3dvcmtfc3luYygmcGh5ZGV2LT5zdGF0ZV9xdWV1ZSk7CisJZWxzZQorCQljYW5j ZWxfZGVsYXllZF93b3JrKCZwaHlkZXYtPnN0YXRlX3F1ZXVlKTsKIAlxdWV1ZV9kZWxheWVkX3dv cmsoc3lzdGVtX3Bvd2VyX2VmZmljaWVudF93cSwgJnBoeWRldi0+c3RhdGVfcXVldWUsIDApOwog fQogCkBAIC02NTUsNyArNjU5LDcgQEAgc3RhdGljIHZvaWQgcGh5X2Vycm9yKHN0cnVjdCBwaHlf ZGV2aWNlICpwaHlkZXYpCiAJcGh5ZGV2LT5zdGF0ZSA9IFBIWV9IQUxURUQ7CiAJbXV0ZXhfdW5s b2NrKCZwaHlkZXYtPmxvY2spOwogCi0JcGh5X3RyaWdnZXJfbWFjaGluZShwaHlkZXYpOworCXBo eV90cmlnZ2VyX21hY2hpbmUocGh5ZGV2LCBmYWxzZSk7CiB9CiAKIC8qKgpAQCAtODE3LDcgKzgy MSw3IEBAIHZvaWQgcGh5X2NoYW5nZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJfQogCiAJ LyogcmVzY2hlZHVsZSBzdGF0ZSBxdWV1ZSB3b3JrIHRvIHJ1biBhcyBzb29uIGFzIHBvc3NpYmxl ICovCi0JcGh5X3RyaWdnZXJfbWFjaGluZShwaHlkZXYpOworCXBoeV90cmlnZ2VyX21hY2hpbmUo cGh5ZGV2LCB0cnVlKTsKIAlyZXR1cm47CiAKIGlnbm9yZToKQEAgLTkwNyw3ICs5MTEsNyBAQCB2 b2lkIHBoeV9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KQogCWlmIChkb19yZXN1bWUp CiAJCXBoeV9yZXN1bWUocGh5ZGV2KTsKIAotCXBoeV90cmlnZ2VyX21hY2hpbmUocGh5ZGV2KTsK KwlwaHlfdHJpZ2dlcl9tYWNoaW5lKHBoeWRldiwgdHJ1ZSk7CiB9CiBFWFBPUlRfU1lNQk9MKHBo eV9zdGFydCk7CiAKLS0gCjIuMS4wCgoKRnJvbSAwYTQwZGE0YTc0ZjE3NjdjOGZmN2ZhZmZlODZi Y2IwNmNhZTI4MGVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBLaWNpbnNr aSA8amFrdWIua2ljaW5za2lAbmV0cm9ub21lLmNvbT4KRGF0ZTogRnJpLCAyNCBGZWIgMjAxNyAx MTo0MzozNiAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggMDExLzExMl0gdnhsYW46IGxvY2sgUkNVIG9u IFRYIHBhdGgKClsgVXBzdHJlYW0gY29tbWl0IDU2ZGU4NTllOTk2N2MwNzA0NjRhOWE5ZjRmMThk NzNmOTQ0NzI5OGUgXQoKVGhlcmUgaXMgbm8gZ3VhcmFudGVlcyB0aGF0IGNhbGxlcnMgb2YgdGhl IFRYIHBhdGggd2lsbCBob2xkCnRoZSBSQ1UgbG9jay4gIEdyYWIgaXQgZXhwbGljaXRseS4KCkZp eGVzOiBjNmZjYzRmYzVmOGIgKCJ2eGxhbjogYXZvaWQgdXNpbmcgc3RhbGUgdnhsYW4gc29ja2V0 LiIpClNpZ25lZC1vZmYtYnk6IEpha3ViIEtpY2luc2tpIDxqYWt1Yi5raWNpbnNraUBuZXRyb25v bWUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5u ZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRh dGlvbi5vcmc+Ci0tLQogZHJpdmVycy9uZXQvdnhsYW4uYyB8IDEzICsrKysrKysrLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9uZXQvdnhsYW4uYyBiL2RyaXZlcnMvbmV0L3Z4bGFuLmMKaW5kZXggYWMzZjhk NS4uM2M0YzJjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4uYworKysgYi9kcml2ZXJz L25ldC92eGxhbi5jCkBAIC0xOTU1LDYgKzE5NTUsNyBAQCBzdGF0aWMgdm9pZCB2eGxhbl94bWl0 X29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCiAJaW5m byA9IHNrYl90dW5uZWxfaW5mbyhza2IpOwogCisJcmN1X3JlYWRfbG9jaygpOwogCWlmIChyZHN0 KSB7CiAJCWRzdF9wb3J0ID0gcmRzdC0+cmVtb3RlX3BvcnQgPyByZHN0LT5yZW1vdGVfcG9ydCA6 IHZ4bGFuLT5jZmcuZHN0X3BvcnQ7CiAJCXZuaSA9IHJkc3QtPnJlbW90ZV92bmk7CkBAIC0xOTg1 LDcgKzE5ODYsNyBAQCBzdGF0aWMgdm9pZCB2eGxhbl94bWl0X29uZShzdHJ1Y3Qgc2tfYnVmZiAq c2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQlpZiAoZGlkX3JzYykgewogCQkJLyogc2hv cnQtY2lyY3VpdGVkIGJhY2sgdG8gbG9jYWwgYnJpZGdlICovCiAJCQl2eGxhbl9lbmNhcF9ieXBh c3Moc2tiLCB2eGxhbiwgdnhsYW4pOwotCQkJcmV0dXJuOworCQkJZ290byBvdXRfdW5sb2NrOwog CQl9CiAJCWdvdG8gZHJvcDsKIAl9CkBAIC0yMDU0LDcgKzIwNTUsNyBAQCBzdGF0aWMgdm9pZCB2 eGxhbl94bWl0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2 LAogCQkJaWYgKCFkc3RfdnhsYW4pCiAJCQkJZ290byB0eF9lcnJvcjsKIAkJCXZ4bGFuX2VuY2Fw X2J5cGFzcyhza2IsIHZ4bGFuLCBkc3RfdnhsYW4pOwotCQkJcmV0dXJuOworCQkJZ290byBvdXRf dW5sb2NrOwogCQl9CiAKIAkJaWYgKCFpbmZvKQpAQCAtMjExNSw3ICsyMTE2LDcgQEAgc3RhdGlj IHZvaWQgdnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZp Y2UgKmRldiwKIAkJCWlmICghZHN0X3Z4bGFuKQogCQkJCWdvdG8gdHhfZXJyb3I7CiAJCQl2eGxh bl9lbmNhcF9ieXBhc3Moc2tiLCB2eGxhbiwgZHN0X3Z4bGFuKTsKLQkJCXJldHVybjsKKwkJCWdv dG8gb3V0X3VubG9jazsKIAkJfQogCiAJCWlmICghaW5mbykKQEAgLTIxMjksNyArMjEzMCw3IEBA IHN0YXRpYyB2b2lkIHZ4bGFuX3htaXRfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBu ZXRfZGV2aWNlICpkZXYsCiAJCWlmIChlcnIgPCAwKSB7CiAJCQlkc3RfcmVsZWFzZShuZHN0KTsK IAkJCWRldi0+c3RhdHMudHhfZXJyb3JzKys7Ci0JCQlyZXR1cm47CisJCQlnb3RvIG91dF91bmxv Y2s7CiAJCX0KIAkJdWRwX3R1bm5lbDZfeG1pdF9za2IobmRzdCwgc2ssIHNrYiwgZGV2LAogCQkJ CSAgICAgJmxvY2FsX2lwLnNpbjYuc2luNl9hZGRyLApAQCAtMjEzNyw3ICsyMTM4LDggQEAgc3Rh dGljIHZvaWQgdnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9k ZXZpY2UgKmRldiwKIAkJCQkgICAgIGxhYmVsLCBzcmNfcG9ydCwgZHN0X3BvcnQsICF1ZHBfc3Vt KTsKICNlbmRpZgogCX0KLQorb3V0X3VubG9jazoKKwlyY3VfcmVhZF91bmxvY2soKTsKIAlyZXR1 cm47CiAKIGRyb3A6CkBAIC0yMTUzLDYgKzIxNTUsNyBAQCBzdGF0aWMgdm9pZCB2eGxhbl94bWl0 X29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCWRldi0+ c3RhdHMudHhfZXJyb3JzKys7CiB0eF9mcmVlOgogCWRldl9rZnJlZV9za2Ioc2tiKTsKKwlyY3Vf cmVhZF91bmxvY2soKTsKIH0KIAogLyogVHJhbnNtaXQgbG9jYWwgcGFja2V0cyBvdmVyIFZ4bGFu Ci0tIAoyLjEuMAoKCkZyb20gMDI1OTVmNDcyNTQ4NzM4Y2QxYWIzYWJmNDI0Mjc3ZDZmNDg5MDQ4 ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSmFrdWIgS2ljaW5za2kgPGpha3ViLmtp Y2luc2tpQG5ldHJvbm9tZS5jb20+CkRhdGU6IEZyaSwgMjQgRmViIDIwMTcgMTE6NDM6MzcgLTA4 MDAKU3ViamVjdDogW1BBVENIIDAxMi8xMTJdIGdlbmV2ZTogbG9jayBSQ1Ugb24gVFggcGF0aAoK WyBVcHN0cmVhbSBjb21taXQgYTcxN2UzZjc0MDgwM2NjODhiZDVjOWE3MGM5MzUwNGY2YTM2ODY2 MyBdCgpUaGVyZSBpcyBubyBndWFyYW50ZWVzIHRoYXQgY2FsbGVycyBvZiB0aGUgVFggcGF0aCB3 aWxsIGhvbGQKdGhlIFJDVSBsb2NrLiAgR3JhYiBpdCBleHBsaWNpdGx5LgoKRml4ZXM6IGZjZWI5 YzNlMzgyNSAoImdlbmV2ZTogYXZvaWQgdXNpbmcgc3RhbGUgZ2VuZXZlIHNvY2tldC4iKQpTaWdu ZWQtb2ZmLWJ5OiBKYWt1YiBLaWNpbnNraSA8amFrdWIua2ljaW5za2lAbmV0cm9ub21lLmNvbT4K U2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgpTaWdu ZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3Jn PgotLS0KIGRyaXZlcnMvbmV0L2dlbmV2ZS5jIHwgMTAgKysrKysrKystLQogMSBmaWxlIGNoYW5n ZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L25ldC9nZW5ldmUuYyBiL2RyaXZlcnMvbmV0L2dlbmV2ZS5jCmluZGV4IDhiNDgyMmEuLjNjMWY4 OWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2dlbmV2ZS5jCisrKyBiL2RyaXZlcnMvbmV0L2dl bmV2ZS5jCkBAIC0xMDM5LDE2ICsxMDM5LDIyIEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBnZW5ldmVf eG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0 cnVjdCBnZW5ldmVfZGV2ICpnZW5ldmUgPSBuZXRkZXZfcHJpdihkZXYpOwogCXN0cnVjdCBpcF90 dW5uZWxfaW5mbyAqaW5mbyA9IE5VTEw7CisJaW50IGVycjsKIAogCWlmIChnZW5ldmUtPmNvbGxl Y3RfbWQpCiAJCWluZm8gPSBza2JfdHVubmVsX2luZm8oc2tiKTsKIAorCXJjdV9yZWFkX2xvY2so KTsKICNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KQogCWlmICgoaW5mbyAmJiBpcF90dW5uZWxf aW5mb19hZihpbmZvKSA9PSBBRl9JTkVUNikgfHwKIAkgICAgKCFpbmZvICYmIGdlbmV2ZS0+cmVt b3RlLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUNikpCi0JCXJldHVybiBnZW5ldmU2X3htaXRfc2ti KHNrYiwgZGV2LCBpbmZvKTsKKwkJZXJyID0gZ2VuZXZlNl94bWl0X3NrYihza2IsIGRldiwgaW5m byk7CisJZWxzZQogI2VuZGlmCi0JcmV0dXJuIGdlbmV2ZV94bWl0X3NrYihza2IsIGRldiwgaW5m byk7CisJCWVyciA9IGdlbmV2ZV94bWl0X3NrYihza2IsIGRldiwgaW5mbyk7CisJcmN1X3JlYWRf dW5sb2NrKCk7CisKKwlyZXR1cm4gZXJyOwogfQogCiBzdGF0aWMgaW50IF9fZ2VuZXZlX2NoYW5n ZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUsIGJvb2wgc3RyaWN0KQot LSAKMi4xLjAKCgpGcm9tIDhmNGRiNjBjN2ZiNTEyMDA1MDMwOTcxNzEyM2VmY2ZkMjVhMDIwMzQg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IElkbyBTY2hpbW1lbCA8aWRvc2NoQG1lbGxh bm94LmNvbT4KRGF0ZTogVHVlLCAyOCBGZWIgMjAxNyAwODo1NTo0MCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggMDEzLzExMl0gbWx4c3c6IHNwZWN0cnVtX3JvdXRlcjogQXZvaWQgcG90ZW50aWFsIHBh Y2tldHMgbG9zcwoKWyBVcHN0cmVhbSBjb21taXQgZjdkZjQ5MjNmYTk4NjI0N2U5M2VjMmNkZmY1 Y2ExNjhmZmYxNGRjZiBdCgpXaGVuIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIExQTSB0cmVlIGNoYW5n ZXMgKGYuZS4sIGR1ZSB0byB0aGUgYWRkaXRpb24gb2YKYSBuZXcgcHJlZml4KSwgd2UgdW5iaW5k IHRoZSBvbGQgdHJlZSBhbmQgdGhlbiBiaW5kIHRoZSBuZXcgb25lLiBUaGlzCm1heSByZXN1bHQg aW4gdGVtcG9yYXJ5IHBhY2tldCBsb3NzLgoKSW5zdGVhZCwgb3ZlcndyaXRlIHRoZSBvbGQgYmlu ZGluZyB3aXRoIHRoZSBuZXcgb25lLgoKRml4ZXM6IDZiNzVjNDgwN2RiMyAoIm1seHN3OiBzcGVj dHJ1bV9yb3V0ZXI6IEFkZCB2aXJ0dWFsIHJvdXRlciBtYW5hZ2VtZW50IikKU2lnbmVkLW9mZi1i eTogSWRvIFNjaGltbWVsIDxpZG9zY2hAbWVsbGFub3guY29tPgpTaWduZWQtb2ZmLWJ5OiBKaXJp IFBpcmtvIDxqaXJpQG1lbGxhbm94LmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVy IDxkYXZlbUBkYXZlbWxvZnQubmV0PgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4g PGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0KIC4uLi9uZXQvZXRoZXJuZXQvbWVsbGFu b3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMgIHwgMzAgKysrKysrKysrKysrKystLS0tLS0tLQog MSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L3NwZWN0cnVtX3JvdXRl ci5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVy LmMKaW5kZXggZTgzMDcyZC4uNjkwNTYzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMKKysrIGIvZHJpdmVycy9uZXQvZXRo ZXJuZXQvbWVsbGFub3gvbWx4c3cvc3BlY3RydW1fcm91dGVyLmMKQEAgLTUwMCwzMCArNTAwLDQw IEBAIHN0YXRpYyBpbnQKIG1seHN3X3NwX3ZyX2xwbV90cmVlX2NoZWNrKHN0cnVjdCBtbHhzd19z cCAqbWx4c3dfc3AsIHN0cnVjdCBtbHhzd19zcF92ciAqdnIsCiAJCQkgICBzdHJ1Y3QgbWx4c3df c3BfcHJlZml4X3VzYWdlICpyZXFfcHJlZml4X3VzYWdlKQogewotCXN0cnVjdCBtbHhzd19zcF9s cG1fdHJlZSAqbHBtX3RyZWU7CisJc3RydWN0IG1seHN3X3NwX2xwbV90cmVlICpscG1fdHJlZSA9 IHZyLT5scG1fdHJlZTsKKwlzdHJ1Y3QgbWx4c3dfc3BfbHBtX3RyZWUgKm5ld190cmVlOworCWlu dCBlcnI7CiAKLQlpZiAobWx4c3dfc3BfcHJlZml4X3VzYWdlX2VxKHJlcV9wcmVmaXhfdXNhZ2Us Ci0JCQkJICAgICAmdnItPmxwbV90cmVlLT5wcmVmaXhfdXNhZ2UpKQorCWlmIChtbHhzd19zcF9w cmVmaXhfdXNhZ2VfZXEocmVxX3ByZWZpeF91c2FnZSwgJmxwbV90cmVlLT5wcmVmaXhfdXNhZ2Up KQogCQlyZXR1cm4gMDsKIAotCWxwbV90cmVlID0gbWx4c3dfc3BfbHBtX3RyZWVfZ2V0KG1seHN3 X3NwLCByZXFfcHJlZml4X3VzYWdlLAorCW5ld190cmVlID0gbWx4c3dfc3BfbHBtX3RyZWVfZ2V0 KG1seHN3X3NwLCByZXFfcHJlZml4X3VzYWdlLAogCQkJCQkgdnItPnByb3RvLCBmYWxzZSk7Ci0J aWYgKElTX0VSUihscG1fdHJlZSkpIHsKKwlpZiAoSVNfRVJSKG5ld190cmVlKSkgewogCQkvKiBX ZSBmYWlsZWQgdG8gZ2V0IGEgdHJlZSBhY2NvcmRpbmcgdG8gdGhlIHJlcXVpcmVkCiAJCSAqIHBy ZWZpeCB1c2FnZS4gSG93ZXZlciwgdGhlIGN1cnJlbnQgdHJlZSBtaWdodCBiZSBzdGlsbCBnb29k CiAJCSAqIGZvciB1cyBpZiBvdXIgcmVxdWlyZW1lbnQgaXMgc3Vic2V0IG9mIHRoZSBwcmVmaXhl cyB1c2VkCiAJCSAqIGluIHRoZSB0cmVlLgogCQkgKi8KIAkJaWYgKG1seHN3X3NwX3ByZWZpeF91 c2FnZV9zdWJzZXQocmVxX3ByZWZpeF91c2FnZSwKLQkJCQkJCSAmdnItPmxwbV90cmVlLT5wcmVm aXhfdXNhZ2UpKQorCQkJCQkJICZscG1fdHJlZS0+cHJlZml4X3VzYWdlKSkKIAkJCXJldHVybiAw OwotCQlyZXR1cm4gUFRSX0VSUihscG1fdHJlZSk7CisJCXJldHVybiBQVFJfRVJSKG5ld190cmVl KTsKIAl9CiAKLQltbHhzd19zcF92cl9scG1fdHJlZV91bmJpbmQobWx4c3dfc3AsIHZyKTsKLQlt bHhzd19zcF9scG1fdHJlZV9wdXQobWx4c3dfc3AsIHZyLT5scG1fdHJlZSk7CisJLyogUHJldmVu dCBwYWNrZXQgbG9zcyBieSBvdmVyd3JpdGluZyBleGlzdGluZyBiaW5kaW5nICovCisJdnItPmxw bV90cmVlID0gbmV3X3RyZWU7CisJZXJyID0gbWx4c3dfc3BfdnJfbHBtX3RyZWVfYmluZChtbHhz d19zcCwgdnIpOworCWlmIChlcnIpCisJCWdvdG8gZXJyX3RyZWVfYmluZDsKKwltbHhzd19zcF9s cG1fdHJlZV9wdXQobWx4c3dfc3AsIGxwbV90cmVlKTsKKworCXJldHVybiAwOworCitlcnJfdHJl ZV9iaW5kOgogCXZyLT5scG1fdHJlZSA9IGxwbV90cmVlOwotCXJldHVybiBtbHhzd19zcF92cl9s cG1fdHJlZV9iaW5kKG1seHN3X3NwLCB2cik7CisJbWx4c3dfc3BfbHBtX3RyZWVfcHV0KG1seHN3 X3NwLCBuZXdfdHJlZSk7CisJcmV0dXJuIGVycjsKIH0KIAogc3RhdGljIHN0cnVjdCBtbHhzd19z cF92ciAqbWx4c3dfc3BfdnJfZ2V0KHN0cnVjdCBtbHhzd19zcCAqbWx4c3dfc3AsCi0tIAoyLjEu MAoKCkZyb20gYmJhZWI5YjczZmE4OTBkZDdhNmZhMzc5YTdlNDgyMjY4NzY0M2E0ZSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29t PgpEYXRlOiBXZWQsIDEgTWFyIDIwMTcgMDg6Mzk6NDkgLTA4MDAKU3ViamVjdDogW1BBVENIIDAx NC8xMTJdIHRjcC9kY2NwOiBibG9jayBCSCBmb3IgU1lOIHByb2Nlc3NpbmcKClsgVXBzdHJlYW0g Y29tbWl0IDQ0OTgwOWE2NmMxZDBiMTU2M2RlZTg0NDkzZTE0YmYzMTA0ZDJkN2UgXQoKU1lOIHBy b2Nlc3NpbmcgcmVhbGx5IHdhcyBtZWFudCB0byBiZSBoYW5kbGVkIGZyb20gQkguCgpXaGVuIEkg Z290IHJpZCBvZiBCSCBibG9ja2luZyB3aGlsZSBwcm9jZXNzaW5nIHNvY2tldCBiYWNrbG9nCmlu IGNvbW1pdCA1NDEzZDFiYWJlOGYgKCJuZXQ6IGRvIG5vdCBibG9jayBCSCB3aGlsZSBwcm9jZXNz aW5nIHNvY2tldApiYWNrbG9nIiksIEkgZm9yZ290IHRoYXQgYSBtYWxpY2lvdXMgdXNlciBjb3Vs ZCB0cmFuc2l0aW9uIHRvIFRDUF9MSVNURU4KZnJvbSBhIHN0YXRlIHRoYXQgYWxsb3dlZCAoU1lO KSBwYWNrZXRzIHRvIGJlIHBhcmtlZCBpbiB0aGUgc29ja2V0CmJhY2tsb2cgd2hpbGUgc29ja2V0 IGlzIG93bmVkIGJ5IHRoZSB0aHJlYWQgZG9pbmcgdGhlIGxpc3RlbigpIGNhbGwuCgpTdXJlIGVu b3VnaCBzeXprYWxsZXIgZm91bmQgdGhpcyBhbmQgcmVwb3J0ZWQgdGhlIGJ1ZyA7KQoKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClsgSU5GTzogaW5jb25zaXN0ZW50IGxvY2sgc3Rh dGUgXQo0LjEwLjArICM2MCBOb3QgdGFpbnRlZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KaW5jb25zaXN0ZW50IHtJTi1TT0ZUSVJRLVd9IC0+IHtTT0ZUSVJRLU9OLVd9IHVzYWdl LgpzeXotZXhlY3V0b3IwLzUwOTAgW0hDMFswXTpTQzBbMF06SEUxOlNFMV0gdGFrZXM6CiAoJigm aGFzaGluZm8tPmVoYXNoX2xvY2tzW2ldKS0+cmxvY2speysuPy4uLn0sIGF0OgpbPGZmZmZmZmZm ODNhNmEzNzA+XSBzcGluX2xvY2sgaW5jbHVkZS9saW51eC9zcGlubG9jay5oOjI5OSBbaW5saW5l XQogKCYoJmhhc2hpbmZvLT5laGFzaF9sb2Nrc1tpXSktPnJsb2NrKXsrLj8uLi59LCBhdDoKWzxm ZmZmZmZmZjgzYTZhMzcwPl0gaW5ldF9laGFzaF9pbnNlcnQrMHgyNDAvMHhhZDAKbmV0L2lwdjQv aW5ldF9oYXNodGFibGVzLmM6NDA3CntJTi1TT0ZUSVJRLVd9IHN0YXRlIHdhcyByZWdpc3RlcmVk IGF0OgogIG1hcmtfaXJxZmxhZ3Mga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jOjI5MjMgW2lubGlu ZV0KICBfX2xvY2tfYWNxdWlyZSsweGJjZi8weDMyNzAga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5j OjMyOTUKICBsb2NrX2FjcXVpcmUrMHgyNDEvMHg1ODAga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5j OjM3NTMKICBfX3Jhd19zcGluX2xvY2sgaW5jbHVkZS9saW51eC9zcGlubG9ja19hcGlfc21wLmg6 MTQyIFtpbmxpbmVdCiAgX3Jhd19zcGluX2xvY2srMHgzMy8weDUwIGtlcm5lbC9sb2NraW5nL3Nw aW5sb2NrLmM6MTUxCiAgc3Bpbl9sb2NrIGluY2x1ZGUvbGludXgvc3BpbmxvY2suaDoyOTkgW2lu bGluZV0KICBpbmV0X2VoYXNoX2luc2VydCsweDI0MC8weGFkMCBuZXQvaXB2NC9pbmV0X2hhc2h0 YWJsZXMuYzo0MDcKICByZXFza19xdWV1ZV9oYXNoX3JlcSBuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rp b25fc29jay5jOjc1MyBbaW5saW5lXQogIGluZXRfY3NrX3JlcXNrX3F1ZXVlX2hhc2hfYWRkKzB4 MWI3LzB4MmEwIG5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2NrLmM6NzY0CiAgdGNwX2Nvbm5f cmVxdWVzdCsweDI1Y2MvMHgzMzEwIG5ldC9pcHY0L3RjcF9pbnB1dC5jOjYzOTkKICB0Y3BfdjRf Y29ubl9yZXF1ZXN0KzB4MTU3LzB4MjIwIG5ldC9pcHY0L3RjcF9pcHY0LmM6MTI2MgogIHRjcF9y Y3Zfc3RhdGVfcHJvY2VzcysweDgwMi8weDQxMzAgbmV0L2lwdjQvdGNwX2lucHV0LmM6NTg4OQog IHRjcF92NF9kb19yY3YrMHg1NmIvMHg5NDAgbmV0L2lwdjQvdGNwX2lwdjQuYzoxNDMzCiAgdGNw X3Y0X3JjdisweDJlMTIvMHgzMjEwIG5ldC9pcHY0L3RjcF9pcHY0LmM6MTcxMQogIGlwX2xvY2Fs X2RlbGl2ZXJfZmluaXNoKzB4NGNlLzB4YzQwIG5ldC9pcHY0L2lwX2lucHV0LmM6MjE2CiAgTkZf SE9PSyBpbmNsdWRlL2xpbnV4L25ldGZpbHRlci5oOjI1NyBbaW5saW5lXQogIGlwX2xvY2FsX2Rl bGl2ZXIrMHgxY2UvMHg3MTAgbmV0L2lwdjQvaXBfaW5wdXQuYzoyNTcKICBkc3RfaW5wdXQgaW5j bHVkZS9uZXQvZHN0Lmg6NDkyIFtpbmxpbmVdCiAgaXBfcmN2X2ZpbmlzaCsweGIxZC8weDIxMTAg bmV0L2lwdjQvaXBfaW5wdXQuYzozOTYKICBORl9IT09LIGluY2x1ZGUvbGludXgvbmV0ZmlsdGVy Lmg6MjU3IFtpbmxpbmVdCiAgaXBfcmN2KzB4ZDkwLzB4MTljMCBuZXQvaXB2NC9pcF9pbnB1dC5j OjQ4NwogIF9fbmV0aWZfcmVjZWl2ZV9za2JfY29yZSsweDFhZDEvMHgzNDAwIG5ldC9jb3JlL2Rl di5jOjQxNzkKICBfX25ldGlmX3JlY2VpdmVfc2tiKzB4MmEvMHgxNzAgbmV0L2NvcmUvZGV2LmM6 NDIxNwogIG5ldGlmX3JlY2VpdmVfc2tiX2ludGVybmFsKzB4MWQ2LzB4NDMwIG5ldC9jb3JlL2Rl di5jOjQyNDUKICBuYXBpX3NrYl9maW5pc2ggbmV0L2NvcmUvZGV2LmM6NDYwMiBbaW5saW5lXQog IG5hcGlfZ3JvX3JlY2VpdmUrMHg0ZTYvMHg2ODAgbmV0L2NvcmUvZGV2LmM6NDYzNgogIGUxMDAw X3JlY2VpdmVfc2tiIGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4u Yzo0MDMzIFtpbmxpbmVdCiAgZTEwMDBfY2xlYW5fcnhfaXJxKzB4NWUwLzB4MTQ5MApkcml2ZXJz L25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6NDQ4OQogIGUxMDAwX2NsZWFu KzB4YjlhLzB4MjkxMCBkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWlu LmM6MzgzNAogIG5hcGlfcG9sbCBuZXQvY29yZS9kZXYuYzo1MTcxIFtpbmxpbmVdCiAgbmV0X3J4 X2FjdGlvbisweGU3MC8weDE5MDAgbmV0L2NvcmUvZGV2LmM6NTIzNgogIF9fZG9fc29mdGlycSsw eDJmYi8weGI3ZCBrZXJuZWwvc29mdGlycS5jOjI4NAogIGludm9rZV9zb2Z0aXJxIGtlcm5lbC9z b2Z0aXJxLmM6MzY0IFtpbmxpbmVdCiAgaXJxX2V4aXQrMHgxOWUvMHgxZDAga2VybmVsL3NvZnRp cnEuYzo0MDUKICBleGl0aW5nX2lycSBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9hcGljLmg6NjU4IFtp bmxpbmVdCiAgZG9fSVJRKzB4ODEvMHgxYTAgYXJjaC94ODYva2VybmVsL2lycS5jOjI1MAogIHJl dF9mcm9tX2ludHIrMHgwLzB4MjAKICBuYXRpdmVfc2FmZV9oYWx0KzB4Ni8weDEwIGFyY2gveDg2 L2luY2x1ZGUvYXNtL2lycWZsYWdzLmg6NTMKICBhcmNoX3NhZmVfaGFsdCBhcmNoL3g4Ni9pbmNs dWRlL2FzbS9wYXJhdmlydC5oOjk4IFtpbmxpbmVdCiAgZGVmYXVsdF9pZGxlKzB4OGYvMHg0MTAg YXJjaC94ODYva2VybmVsL3Byb2Nlc3MuYzoyNzEKICBhcmNoX2NwdV9pZGxlKzB4YS8weDEwIGFy Y2gveDg2L2tlcm5lbC9wcm9jZXNzLmM6MjYyCiAgZGVmYXVsdF9pZGxlX2NhbGwrMHgzNi8weDYw IGtlcm5lbC9zY2hlZC9pZGxlLmM6OTYKICBjcHVpZGxlX2lkbGVfY2FsbCBrZXJuZWwvc2NoZWQv aWRsZS5jOjE1NCBbaW5saW5lXQogIGRvX2lkbGUrMHgzNDgvMHg0NDAga2VybmVsL3NjaGVkL2lk bGUuYzoyNDMKICBjcHVfc3RhcnR1cF9lbnRyeSsweDE4LzB4MjAga2VybmVsL3NjaGVkL2lkbGUu YzozNDUKICBzdGFydF9zZWNvbmRhcnkrMHgzNDQvMHg0NDAgYXJjaC94ODYva2VybmVsL3NtcGJv b3QuYzoyNzIKICB2ZXJpZnlfY3B1KzB4MC8weGZjCmlycSBldmVudCBzdGFtcDogMTc0MQpoYXJk aXJxcyBsYXN0ICBlbmFibGVkIGF0ICgxNzQxKTogWzxmZmZmZmZmZjg0ZDQ5ZDc3Pl0KX19yYXdf c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSBpbmNsdWRlL2xpbnV4L3NwaW5sb2NrX2FwaV9zbXAuaDox NjAKW2lubGluZV0KaGFyZGlycXMgbGFzdCAgZW5hYmxlZCBhdCAoMTc0MSk6IFs8ZmZmZmZmZmY4 NGQ0OWQ3Nz5dCl9yYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSsweGY3LzB4MWEwIGtlcm5lbC9s b2NraW5nL3NwaW5sb2NrLmM6MTkxCmhhcmRpcnFzIGxhc3QgZGlzYWJsZWQgYXQgKDE3NDApOiBb PGZmZmZmZmZmODRkNGE3MzI+XQpfX3Jhd19zcGluX2xvY2tfaXJxc2F2ZSBpbmNsdWRlL2xpbnV4 L3NwaW5sb2NrX2FwaV9zbXAuaDoxMDggW2lubGluZV0KaGFyZGlycXMgbGFzdCBkaXNhYmxlZCBh dCAoMTc0MCk6IFs8ZmZmZmZmZmY4NGQ0YTczMj5dCl9yYXdfc3Bpbl9sb2NrX2lycXNhdmUrMHhh Mi8weDExMCBrZXJuZWwvbG9ja2luZy9zcGlubG9jay5jOjE1OQpzb2Z0aXJxcyBsYXN0ICBlbmFi bGVkIGF0ICgxNzM4KTogWzxmZmZmZmZmZjg0ZDRkZWZmPl0KX19kb19zb2Z0aXJxKzB4N2NmLzB4 YjdkIGtlcm5lbC9zb2Z0aXJxLmM6MzEwCnNvZnRpcnFzIGxhc3QgZGlzYWJsZWQgYXQgKDE1NzEp OiBbPGZmZmZmZmZmODRkNGI5MmM+XQpkb19zb2Z0aXJxX293bl9zdGFjaysweDFjLzB4MzAgYXJj aC94ODYvZW50cnkvZW50cnlfNjQuUzo5MDIKCm90aGVyIGluZm8gdGhhdCBtaWdodCBoZWxwIHVz IGRlYnVnIHRoaXM6CiBQb3NzaWJsZSB1bnNhZmUgbG9ja2luZyBzY2VuYXJpbzoKCiAgICAgICBD UFUwCiAgICAgICAtLS0tCiAgbG9jaygmKCZoYXNoaW5mby0+ZWhhc2hfbG9ja3NbaV0pLT5ybG9j ayk7CiAgPEludGVycnVwdD4KICAgIGxvY2soJigmaGFzaGluZm8tPmVoYXNoX2xvY2tzW2ldKS0+ cmxvY2spOwoKICoqKiBERUFETE9DSyAqKioKCjEgbG9jayBoZWxkIGJ5IHN5ei1leGVjdXRvcjAv NTA5MDoKICMwOiAgKHNrX2xvY2stQUZfSU5FVDYpeysuKy4rLn0sIGF0OiBbPGZmZmZmZmZmODM0 MDZiNDM+XSBsb2NrX3NvY2sKaW5jbHVkZS9uZXQvc29jay5oOjE0NjAgW2lubGluZV0KICMwOiAg KHNrX2xvY2stQUZfSU5FVDYpeysuKy4rLn0sIGF0OiBbPGZmZmZmZmZmODM0MDZiNDM+XQpzb2Nr X3NldHNvY2tvcHQrMHgyMzMvMHgxZTQwIG5ldC9jb3JlL3NvY2suYzo2ODMKCnN0YWNrIGJhY2t0 cmFjZToKQ1BVOiAxIFBJRDogNTA5MCBDb21tOiBzeXotZXhlY3V0b3IwIE5vdCB0YWludGVkIDQu MTAuMCsgIzYwCkhhcmR3YXJlIG5hbWU6IFFFTVUgU3RhbmRhcmQgUEMgKGk0NDBGWCArIFBJSVgs IDE5OTYpLCBCSU9TIEJvY2hzIDAxLzAxLzIwMTEKQ2FsbCBUcmFjZToKIF9fZHVtcF9zdGFjayBs aWIvZHVtcF9zdGFjay5jOjE1IFtpbmxpbmVdCiBkdW1wX3N0YWNrKzB4MjkyLzB4Mzk4IGxpYi9k dW1wX3N0YWNrLmM6NTEKIHByaW50X3VzYWdlX2J1ZysweDNlZi8weDQ1MCBrZXJuZWwvbG9ja2lu Zy9sb2NrZGVwLmM6MjM4NwogdmFsaWRfc3RhdGUga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jOjI0 MDAgW2lubGluZV0KIG1hcmtfbG9ja19pcnEga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jOjI2MDIg W2lubGluZV0KIG1hcmtfbG9jaysweGYzMC8weDE0MTAga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5j OjMwNjUKIG1hcmtfaXJxZmxhZ3Mga2VybmVsL2xvY2tpbmcvbG9ja2RlcC5jOjI5NDEgW2lubGlu ZV0KIF9fbG9ja19hY3F1aXJlKzB4NmRjLzB4MzI3MCBrZXJuZWwvbG9ja2luZy9sb2NrZGVwLmM6 MzI5NQogbG9ja19hY3F1aXJlKzB4MjQxLzB4NTgwIGtlcm5lbC9sb2NraW5nL2xvY2tkZXAuYzoz NzUzCiBfX3Jhd19zcGluX2xvY2sgaW5jbHVkZS9saW51eC9zcGlubG9ja19hcGlfc21wLmg6MTQy IFtpbmxpbmVdCiBfcmF3X3NwaW5fbG9jaysweDMzLzB4NTAga2VybmVsL2xvY2tpbmcvc3Bpbmxv Y2suYzoxNTEKIHNwaW5fbG9jayBpbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmg6Mjk5IFtpbmxpbmVd CiBpbmV0X2VoYXNoX2luc2VydCsweDI0MC8weGFkMCBuZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMu Yzo0MDcKIHJlcXNrX3F1ZXVlX2hhc2hfcmVxIG5ldC9pcHY0L2luZXRfY29ubmVjdGlvbl9zb2Nr LmM6NzUzIFtpbmxpbmVdCiBpbmV0X2Nza19yZXFza19xdWV1ZV9oYXNoX2FkZCsweDFiNy8weDJh MCBuZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29jay5jOjc2NAogZGNjcF92Nl9jb25uX3JlcXVl c3QrMHhhZGEvMHgxMWIwIG5ldC9kY2NwL2lwdjYuYzozODAKIGRjY3BfcmN2X3N0YXRlX3Byb2Nl c3MrMHg1MWUvMHgxNjYwIG5ldC9kY2NwL2lucHV0LmM6NjA2CiBkY2NwX3Y2X2RvX3JjdisweDIx My8weDM1MCBuZXQvZGNjcC9pcHY2LmM6NjMyCiBza19iYWNrbG9nX3JjdiBpbmNsdWRlL25ldC9z b2NrLmg6ODk2IFtpbmxpbmVdCiBfX3JlbGVhc2Vfc29jaysweDEyNy8weDNhMCBuZXQvY29yZS9z b2NrLmM6MjA1MgogcmVsZWFzZV9zb2NrKzB4YTUvMHgyYjAgbmV0L2NvcmUvc29jay5jOjI1MzkK IHNvY2tfc2V0c29ja29wdCsweDYwZi8weDFlNDAgbmV0L2NvcmUvc29jay5jOjEwMTYKIFNZU0Nf c2V0c29ja29wdCBuZXQvc29ja2V0LmM6MTc4MiBbaW5saW5lXQogU3lTX3NldHNvY2tvcHQrMHgy ZmIvMHgzYTAgbmV0L3NvY2tldC5jOjE3NjUKIGVudHJ5X1NZU0NBTExfNjRfZmFzdHBhdGgrMHgx Zi8weGMyClJJUDogMDAzMzoweDQ0NThiOQpSU1A6IDAwMmI6MDAwMDdmZThiMjZjMmI1OCBFRkxB R1M6IDAwMDAwMjkyIE9SSUdfUkFYOiAwMDAwMDAwMDAwMDAwMDM2ClJBWDogZmZmZmZmZmZmZmZm ZmZkYSBSQlg6IDAwMDAwMDAwMDAwMDAwMDYgUkNYOiAwMDAwMDAwMDAwNDQ1OGI5ClJEWDogMDAw MDAwMDAwMDAwMDAxYSBSU0k6IDAwMDAwMDAwMDAwMDAwMDEgUkRJOiAwMDAwMDAwMDAwMDAwMDA2 ClJCUDogMDAwMDAwMDAwMDZlMjExMCBSMDg6IDAwMDAwMDAwMDAwMDAwMTAgUjA5OiAwMDAwMDAw MDAwMDAwMDAwClIxMDogMDAwMDAwMDAyMDhjMzAwMCBSMTE6IDAwMDAwMDAwMDAwMDAyOTIgUjEy OiAwMDAwMDAwMDAwNzA4MDAwClIxMzogMDAwMDAwMDAyMDAwMDAwMCBSMTQ6IDAwMDAwMDAwMDAw MDEwMDAgUjE1OiAwMDAwMDAwMDAwMDAwMDAwCgpGaXhlczogNTQxM2QxYmFiZThmICgibmV0OiBk byBub3QgYmxvY2sgQkggd2hpbGUgcHJvY2Vzc2luZyBzb2NrZXQgYmFja2xvZyIpClNpZ25lZC1v ZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KUmVwb3J0ZWQtYnk6IEFu ZHJleSBLb25vdmFsb3YgPGFuZHJleWtudmxAZ29vZ2xlLmNvbT4KQWNrZWQtYnk6IFNvaGVpbCBI YXNzYXMgWWVnYW5laCA8c29oZWlsQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMu IE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1I YXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBuZXQvZGNjcC9pbnB1dC5j ICAgICB8IDEwICsrKysrKysrLS0KIG5ldC9pcHY0L3RjcF9pbnB1dC5jIHwgMTAgKysrKysrKyst LQogMiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL25ldC9kY2NwL2lucHV0LmMgYi9uZXQvZGNjcC9pbnB1dC5jCmluZGV4IDhmZWRj MmQuLjRhMDVkNzggMTAwNjQ0Ci0tLSBhL25ldC9kY2NwL2lucHV0LmMKKysrIGIvbmV0L2RjY3Av aW5wdXQuYwpAQCAtNTc3LDYgKzU3Nyw3IEBAIGludCBkY2NwX3Jjdl9zdGF0ZV9wcm9jZXNzKHN0 cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlzdHJ1Y3QgZGNjcF9zb2NrICpk cCA9IGRjY3Bfc2soc2spOwogCXN0cnVjdCBkY2NwX3NrYl9jYiAqZGNiID0gRENDUF9TS0JfQ0Io c2tiKTsKIAljb25zdCBpbnQgb2xkX3N0YXRlID0gc2stPnNrX3N0YXRlOworCWJvb2wgYWNjZXB0 YWJsZTsKIAlpbnQgcXVldWVkID0gMDsKIAogCS8qCkBAIC02MDMsOCArNjA0LDEzIEBAIGludCBk Y2NwX3Jjdl9zdGF0ZV9wcm9jZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNr YiwKIAkgKi8KIAlpZiAoc2stPnNrX3N0YXRlID09IERDQ1BfTElTVEVOKSB7CiAJCWlmIChkaC0+ ZGNjcGhfdHlwZSA9PSBEQ0NQX1BLVF9SRVFVRVNUKSB7Ci0JCQlpZiAoaW5ldF9jc2soc2spLT5p Y3NrX2FmX29wcy0+Y29ubl9yZXF1ZXN0KHNrLAotCQkJCQkJCQkgICAgc2tiKSA8IDApCisJCQkv KiBJdCBpcyBwb3NzaWJsZSB0aGF0IHdlIHByb2Nlc3MgU1lOIHBhY2tldHMgZnJvbSBiYWNrbG9n LAorCQkJICogc28gd2UgbmVlZCB0byBtYWtlIHN1cmUgdG8gZGlzYWJsZSBCSCByaWdodCB0aGVy ZS4KKwkJCSAqLworCQkJbG9jYWxfYmhfZGlzYWJsZSgpOworCQkJYWNjZXB0YWJsZSA9IGluZXRf Y3NrKHNrKS0+aWNza19hZl9vcHMtPmNvbm5fcmVxdWVzdChzaywgc2tiKSA+PSAwOworCQkJbG9j YWxfYmhfZW5hYmxlKCk7CisJCQlpZiAoIWFjY2VwdGFibGUpCiAJCQkJcmV0dXJuIDE7CiAJCQlj b25zdW1lX3NrYihza2IpOwogCQkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3Bf aW5wdXQuYyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jCmluZGV4IGM3MWQ0OWMuLmNlNDJkZWQgMTAw NjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jCisrKyBiL25ldC9pcHY0L3RjcF9pbnB1dC5j CkBAIC01OTE2LDkgKzU5MTYsMTUgQEAgaW50IHRjcF9yY3Zfc3RhdGVfcHJvY2VzcyhzdHJ1Y3Qg c29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiAJCWlmICh0aC0+c3luKSB7CiAJCQlpZiAo dGgtPmZpbikKIAkJCQlnb3RvIGRpc2NhcmQ7Ci0JCQlpZiAoaWNzay0+aWNza19hZl9vcHMtPmNv bm5fcmVxdWVzdChzaywgc2tiKSA8IDApCi0JCQkJcmV0dXJuIDE7CisJCQkvKiBJdCBpcyBwb3Nz aWJsZSB0aGF0IHdlIHByb2Nlc3MgU1lOIHBhY2tldHMgZnJvbSBiYWNrbG9nLAorCQkJICogc28g d2UgbmVlZCB0byBtYWtlIHN1cmUgdG8gZGlzYWJsZSBCSCByaWdodCB0aGVyZS4KKwkJCSAqLwor CQkJbG9jYWxfYmhfZGlzYWJsZSgpOworCQkJYWNjZXB0YWJsZSA9IGljc2stPmljc2tfYWZfb3Bz LT5jb25uX3JlcXVlc3Qoc2ssIHNrYikgPj0gMDsKKwkJCWxvY2FsX2JoX2VuYWJsZSgpOwogCisJ CQlpZiAoIWFjY2VwdGFibGUpCisJCQkJcmV0dXJuIDE7CiAJCQljb25zdW1lX3NrYihza2IpOwog CQkJcmV0dXJuIDA7CiAJCX0KLS0gCjIuMS4wCgoKRnJvbSBmYTdjNDhmYjNhZDE3NDRkYWI3YTlh Mjc4M2FlNTg5YmQ4N2I3MzJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIE1h bm5pbmcgPG1tYW5uaW5nQGJyb2NhZGUuY29tPgpEYXRlOiBXZWQsIDEgTWFyIDIwMTcgMDk6NTU6 MjggKzAwMDAKU3ViamVjdDogW1BBVENIIDAxNS8xMTJdIG5ldDogYnJpZGdlOiBhbGxvdyBJUHY2 IHdoZW4gbXVsdGljYXN0IGZsb29kIGlzCiBkaXNhYmxlZAoKWyBVcHN0cmVhbSBjb21taXQgODk1 M2RlMmYwMmFkN2IxNWU0OTY0YzgyZjlhZmQ2MGYxMjhlNGU5OCBdCgpFdmVuIHdpdGggbXVsdGlj YXN0IGZsb29kaW5nIHR1cm5lZCBvZmYsIElQdjYgTkQgc2hvdWxkIHN0aWxsIHdvcmsgc28KdGhh dCBJUHY2IGNvbm5lY3Rpdml0eSBpcyBwcm92aWRlZC4gQWxsb3cgdGhpcyBieSBjb250aW51aW5n IHRvIGZsb29kCm11bHRpY2FzdCB0cmFmZmljIG9yaWdpbmF0ZWQgYnkgdXMuCgpGaXhlczogYjZj YjVhYzgzMzFiICgibmV0OiBicmlkZ2U6IGFkZCBwZXItcG9ydCBtdWx0aWNhc3QgZmxvb2QgZmxh ZyIpCkNjOiBOaWtvbGF5IEFsZWtzYW5kcm92IDxuaWtvbGF5QGN1bXVsdXNuZXR3b3Jrcy5jb20+ ClNpZ25lZC1vZmYtYnk6IE1pa2UgTWFubmluZyA8bW1hbm5pbmdAYnJvY2FkZS5jb20+CkFja2Vk LWJ5OiBOaWtvbGF5IEFsZWtzYW5kcm92IDxuaWtvbGF5QGN1bXVsdXNuZXR3b3Jrcy5jb20+ClNp Z25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVk LW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4K LS0tCiBuZXQvYnJpZGdlL2JyX2ZvcndhcmQuYyB8IDMgKystCiAxIGZpbGUgY2hhbmdlZCwgMiBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl9m b3J3YXJkLmMgYi9uZXQvYnJpZGdlL2JyX2ZvcndhcmQuYwppbmRleCA3Y2I0MWFlLi44NDk4ZTM1 IDEwMDY0NAotLS0gYS9uZXQvYnJpZGdlL2JyX2ZvcndhcmQuYworKysgYi9uZXQvYnJpZGdlL2Jy X2ZvcndhcmQuYwpAQCAtMTg2LDggKzE4Niw5IEBAIHZvaWQgYnJfZmxvb2Qoc3RydWN0IG5ldF9i cmlkZ2UgKmJyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkvKiBEbyBub3QgZmxvb2QgdW5pY2Fz dCB0cmFmZmljIHRvIHBvcnRzIHRoYXQgdHVybiBpdCBvZmYgKi8KIAkJaWYgKHBrdF90eXBlID09 IEJSX1BLVF9VTklDQVNUICYmICEocC0+ZmxhZ3MgJiBCUl9GTE9PRCkpCiAJCQljb250aW51ZTsK KwkJLyogRG8gbm90IGZsb29kIGlmIG1jIG9mZiwgZXhjZXB0IGZvciB0cmFmZmljIHdlIG9yaWdp bmF0ZSAqLwogCQlpZiAocGt0X3R5cGUgPT0gQlJfUEtUX01VTFRJQ0FTVCAmJgotCQkgICAgIShw LT5mbGFncyAmIEJSX01DQVNUX0ZMT09EKSkKKwkJICAgICEocC0+ZmxhZ3MgJiBCUl9NQ0FTVF9G TE9PRCkgJiYgc2tiLT5kZXYgIT0gYnItPmRldikKIAkJCWNvbnRpbnVlOwogCiAJCS8qIERvIG5v dCBmbG9vZCB0byBwb3J0cyB0aGF0IGVuYWJsZSBwcm94eSBBUlAgKi8KLS0gCjIuMS4wCgoKRnJv bSA2MmZlMDUyMWZiNmNjM2I4ODdmZGMwMGRkY2E5YzM4ZDI2MTRiOGIwIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUG90YXBlbmtvIDxnbGlkZXJAZ29vZ2xlLmNvbT4K RGF0ZTogV2VkLCAxIE1hciAyMDE3IDEyOjU3OjIwICswMTAwClN1YmplY3Q6IFtQQVRDSCAwMTYv MTEyXSBuZXQ6IGRvbid0IGNhbGwgc3RybGVuKCkgb24gdGhlIHVzZXIgYnVmZmVyIGluCiBwYWNr ZXRfYmluZF9zcGt0KCkKClsgVXBzdHJlYW0gY29tbWl0IDU0MGUyODk0Zjc5MDU1Mzg3NDBhYWYx MjJiZDhlMDU0OGUxYzM0YTQgXQoKS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplciwgYSBuZXcg ZXJyb3IgZGV0ZWN0aW9uIHRvb2wpIHJlcG9ydHMgdXNlIG9mCnVuaW5pdGlhbGl6ZWQgbWVtb3J5 IGluIHBhY2tldF9iaW5kX3Nwa3QoKToKQWNrZWQtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRA Z29vZ2xlLmNvbT4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpCVUc6IEtNU0FOOiB1c2Ugb2YgdW5pdGlhbGl6ZWQgbWVt b3J5CkNQVTogMCBQSUQ6IDEwNzQgQ29tbTogcGFja2V0IE5vdCB0YWludGVkIDQuOC4wLXJjNisg IzE4OTEKSGFyZHdhcmUgbmFtZTogUUVNVSBTdGFuZGFyZCBQQyAoaTQ0MEZYICsgUElJWCwgMTk5 NiksIEJJT1MgQm9jaHMKMDEvMDEvMjAxMQogMDAwMDAwMDAwMDAwMDAwMCBmZmZmODgwMDZiNmRm YzA4IGZmZmZmZmZmODI1NTlhZTggZmZmZjg4MDA2YjZkZmI0OAogZmZmZmZmZmY4MThhN2M5MSBm ZmZmZmZmZjg1YjljODcwIDAwMDAwMDAwMDAwMDAwOTIgZmZmZmZmZmY4NWI5YzU1MAogMDAwMDAw MDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDkyIDAwMDAwMDAwZWM0MDA5MTEgMDAwMDAwMDAwMDAw MDAwMgpDYWxsIFRyYWNlOgogWzwgICAgIGlubGluZSAgICAgPl0gX19kdW1wX3N0YWNrIGxpYi9k dW1wX3N0YWNrLmM6MTUKIFs8ZmZmZmZmZmY4MjU1OWFlOD5dIGR1bXBfc3RhY2srMHgyMzgvMHgy OTAgbGliL2R1bXBfc3RhY2suYzo1MQogWzxmZmZmZmZmZjgxOGE2NjI2Pl0ga21zYW5fcmVwb3J0 KzB4Mjc2LzB4MmUwIG1tL2ttc2FuL2ttc2FuLmM6MTAwMwogWzxmZmZmZmZmZjgxOGE3ODNiPl0g X19tc2FuX3dhcm5pbmcrMHg1Yi8weGIwCm1tL2ttc2FuL2ttc2FuX2luc3RyLmM6NDI0CiBbPCAg ICAgaW5saW5lICAgICA+XSBzdHJsZW4gbGliL3N0cmluZy5jOjQ4NAogWzxmZmZmZmZmZjgyNTli NThkPl0gc3RybGNweSsweDlkLzB4MjAwIGxpYi9zdHJpbmcuYzoxNDQKIFs8ZmZmZmZmZmY4NGIy ZWNhND5dIHBhY2tldF9iaW5kX3Nwa3QrMHgxNDQvMHgyMzAKbmV0L3BhY2tldC9hZl9wYWNrZXQu YzozMTMyCiBbPGZmZmZmZmZmODQyNDJlNGQ+XSBTWVNDX2JpbmQrMHg0MGQvMHg1ZjAgbmV0L3Nv Y2tldC5jOjEzNzAKIFs8ZmZmZmZmZmY4NDI0MmEyMj5dIFN5U19iaW5kKzB4ODIvMHhhMCBuZXQv c29ja2V0LmM6MTM1NgogWzxmZmZmZmZmZjg1MTU5OTFiPl0gZW50cnlfU1lTQ0FMTF82NF9mYXN0 cGF0aCsweDEzLzB4OGYKYXJjaC94ODYvZW50cnkvZW50cnlfNjQubzo/CmNoYWluZWQgb3JpZ2lu OiAwMDAwMDAwMGViYTAwOTExCiBbPGZmZmZmZmZmODEwYmI3ODc+XSBzYXZlX3N0YWNrX3RyYWNl KzB4MjcvMHg1MAphcmNoL3g4Ni9rZXJuZWwvc3RhY2t0cmFjZS5jOjY3CiBbPCAgICAgaW5saW5l ICAgICA+XSBrbXNhbl9zYXZlX3N0YWNrX3dpdGhfZmxhZ3MgbW0va21zYW4va21zYW4uYzozMjIK IFs8ICAgICBpbmxpbmUgICAgID5dIGttc2FuX3NhdmVfc3RhY2sgbW0va21zYW4va21zYW4uYzoz MzQKIFs8ZmZmZmZmZmY4MThhNTlmOD5dIGttc2FuX2ludGVybmFsX2NoYWluX29yaWdpbisweDEx OC8weDFlMAptbS9rbXNhbi9rbXNhbi5jOjUyNwogWzxmZmZmZmZmZjgxOGE3NzczPl0gX19tc2Fu X3NldF9hbGxvY2Ffb3JpZ2luNCsweGMzLzB4MTMwCm1tL2ttc2FuL2ttc2FuX2luc3RyLmM6Mzgw CiBbPGZmZmZmZmZmODQyNDJiNjk+XSBTWVNDX2JpbmQrMHgxMjkvMHg1ZjAgbmV0L3NvY2tldC5j OjEzNTYKIFs8ZmZmZmZmZmY4NDI0MmEyMj5dIFN5U19iaW5kKzB4ODIvMHhhMCBuZXQvc29ja2V0 LmM6MTM1NgogWzxmZmZmZmZmZjg1MTU5OTFiPl0gZW50cnlfU1lTQ0FMTF82NF9mYXN0cGF0aCsw eDEzLzB4OGYKYXJjaC94ODYvZW50cnkvZW50cnlfNjQubzo/Cm9yaWdpbiBkZXNjcmlwdGlvbjog LS0tLWFkZHJlc3NAU1lTQ19iaW5kIChvcmlnaW49MDAwMDAwMDBlYjQwMDkxMSkKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Cih0aGUgbGluZSBudW1iZXJzIGFyZSByZWxhdGl2ZSB0byA0LjgtcmM2LCBidXQgdGhlIGJ1ZyBw ZXJzaXN0cwp1cHN0cmVhbSkKCiwgd2hlbiBJIHJ1biB0aGUgZm9sbG93aW5nIHByb2dyYW0gYXMg cm9vdDoKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICNpbmNsdWRlIDxz dHJpbmcuaD4KICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAjaW5jbHVkZSA8bmV0cGFja2V0L3Bh Y2tldC5oPgogI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5oPgoKIGludCBtYWluKCkgewogICBzdHJ1 Y3Qgc29ja2FkZHIgYWRkcjsKICAgbWVtc2V0KCZhZGRyLCAweGZmLCBzaXplb2YoYWRkcikpOwog ICBhZGRyLnNhX2ZhbWlseSA9IEFGX1BBQ0tFVDsKICAgaW50IGZkID0gc29ja2V0KFBGX1BBQ0tF VCwgU09DS19QQUNLRVQsIGh0b25zKEVUSF9QX0FMTCkpOwogICBiaW5kKGZkLCAmYWRkciwgc2l6 ZW9mKGFkZHIpKTsKICAgcmV0dXJuIDA7CiB9Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KClRoaXMgaGFwcGVucyBiZWNhdXNlIGFkZHIuc2FfZGF0YSBjb3BpZWQgZnJvbSB0 aGUgdXNlcnNwYWNlIGlzIG5vdAp6ZXJvLXRlcm1pbmF0ZWQsIGFuZCBjb3B5aW5nIGl0IHdpdGgg c3RybGNweSgpIGluIHBhY2tldF9iaW5kX3Nwa3QoKQpyZXN1bHRzIGluIGNhbGxpbmcgc3RybGVu KCkgb24gdGhlIGtlcm5lbCBjb3B5IG9mIHRoYXQgbm9uLXRlcm1pbmF0ZWQKYnVmZmVyLgoKU2ln bmVkLW9mZi1ieTogQWxleGFuZGVyIFBvdGFwZW5rbyA8Z2xpZGVyQGdvb2dsZS5jb20+ClNpZ25l ZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9m Zi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0t CiBuZXQvcGFja2V0L2FmX3BhY2tldC5jIHwgOCArKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDYg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvcGFja2V0L2Fm X3BhY2tldC5jIGIvbmV0L3BhY2tldC9hZl9wYWNrZXQuYwppbmRleCAzNGRlMzI2Li5mMmIwNGE3 IDEwMDY0NAotLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jCisrKyBiL25ldC9wYWNrZXQvYWZf cGFja2V0LmMKQEAgLTMxNDAsNyArMzE0MCw3IEBAIHN0YXRpYyBpbnQgcGFja2V0X2JpbmRfc3Br dChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHIgKnVhZGRyLAogCQkJICAgIGlu dCBhZGRyX2xlbikKIHsKIAlzdHJ1Y3Qgc29jayAqc2sgPSBzb2NrLT5zazsKLQljaGFyIG5hbWVb MTVdOworCWNoYXIgbmFtZVtzaXplb2YodWFkZHItPnNhX2RhdGEpICsgMV07CiAKIAkvKgogCSAq CUNoZWNrIGxlZ2FsaXR5CkBAIC0zMTQ4LDcgKzMxNDgsMTEgQEAgc3RhdGljIGludCBwYWNrZXRf YmluZF9zcGt0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkciAqdWFkZHIsCiAK IAlpZiAoYWRkcl9sZW4gIT0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpCiAJCXJldHVybiAtRUlO VkFMOwotCXN0cmxjcHkobmFtZSwgdWFkZHItPnNhX2RhdGEsIHNpemVvZihuYW1lKSk7CisJLyog dWFkZHItPnNhX2RhdGEgY29tZXMgZnJvbSB0aGUgdXNlcnNwYWNlLCBpdCdzIG5vdCBndWFyYW50 ZWVkIHRvIGJlCisJICogemVyby10ZXJtaW5hdGVkLgorCSAqLworCW1lbWNweShuYW1lLCB1YWRk ci0+c2FfZGF0YSwgc2l6ZW9mKHVhZGRyLT5zYV9kYXRhKSk7CisJbmFtZVtzaXplb2YodWFkZHIt PnNhX2RhdGEpXSA9IDA7CiAKIAlyZXR1cm4gcGFja2V0X2RvX2JpbmQoc2ssIG5hbWUsIDAsIHBr dF9zayhzayktPm51bSk7CiB9Ci0tIAoyLjEuMAoKCkZyb20gM2Q4N2RjZTNkZmQ2NjVhODkyZDEw N2I3OTdlNjg2OTcyMDRjM2U0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBE dW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpEYXRlOiBXZWQsIDEgTWFyIDIwMTcgMTQ6Mjg6 MzkgLTA4MDAKU3ViamVjdDogW1BBVENIIDAxNy8xMTJdIG5ldDogbmV0X2VuYWJsZV90aW1lc3Rh bXAoKSBjYW4gYmUgY2FsbGVkIGZyb20gaXJxCiBjb250ZXh0cwoKWyBVcHN0cmVhbSBjb21taXQg MTNiYWEwMGFkMDFiYjNhOWY4OTNlM2EwOGNiYzJkMDcyZmMwYzE1ZCBdCgpJdCBpcyBub3cgdmVy eSBjbGVhciB0aGF0IHNpbGx5IFRDUCBsaXN0ZW5lcnMgbWlnaHQgcGxheSB3aXRoCmVuYWJsaW5n L2Rpc2FibGluZyB0aW1lc3RhbXBpbmcgd2hpbGUgbmV3IGNoaWxkcmVuIGFyZSBhZGRlZAp0byB0 aGVpciBhY2NlcHQgcXVldWUuCgpNZWFuaW5nIG5ldF9lbmFibGVfdGltZXN0YW1wKCkgY2FuIGJl IGNhbGxlZCBmcm9tIEJIIGNvbnRleHQKd2hpbGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgc3RhdGlj IGtleSBpcyBub3QgZW5hYmxlZC4KCkxldHMgcGxheSBzYWZlIGFuZCBhbGxvdyBhbGwgY29udGV4 dHMuCgpUaGUgd29yayBxdWV1ZSBpcyBzY2hlZHVsZWQgb25seSB1bmRlciB0aGUgcHJvYmxlbWF0 aWMgY2FzZXMsCndoaWNoIGFyZSB0aGUgc3RhdGljIGtleSBlbmFibGUvZGlzYWJsZSB0cmFuc2l0 aW9uLCB0byBub3Qgc2xvdyBkb3duCmNyaXRpY2FsIHBhdGhzLgoKVGhpcyBleHRlbmRzIGFuZCBp bXByb3ZlcyB3aGF0IHdlIGRpZCBpbiBjb21taXQgNWZhOGJiZGEzOGM2ICgibmV0OiB1c2UKYSB3 b3JrIHF1ZXVlIHRvIGRlZmVyIG5ldF9kaXNhYmxlX3RpbWVzdGFtcCgpIHdvcmsiKQoKRml4ZXM6 IGI5MGU1Nzk0YzViZCAoIm5ldDogZG9udCBjYWxsIGp1bXBfbGFiZWxfZGVjIGZyb20gaXJxIGNv bnRleHQiKQpTaWduZWQtb2ZmLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+ ClJlcG9ydGVkLWJ5OiBEbWl0cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+ClNpZ25lZC1v ZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1i eTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBu ZXQvY29yZS9kZXYuYyB8IDM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiAx IGZpbGUgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jCmluZGV4IDYwYjBhNjA0Li4yZTA0 ZmQxIDEwMDY0NAotLS0gYS9uZXQvY29yZS9kZXYuYworKysgYi9uZXQvY29yZS9kZXYuYwpAQCAt MTY5NywyNyArMTY5Nyw1NCBAQCBFWFBPUlRfU1lNQk9MX0dQTChuZXRfZGVjX2VncmVzc19xdWV1 ZSk7CiBzdGF0aWMgc3RydWN0IHN0YXRpY19rZXkgbmV0c3RhbXBfbmVlZGVkIF9fcmVhZF9tb3N0 bHk7CiAjaWZkZWYgSEFWRV9KVU1QX0xBQkVMCiBzdGF0aWMgYXRvbWljX3QgbmV0c3RhbXBfbmVl ZGVkX2RlZmVycmVkOworc3RhdGljIGF0b21pY190IG5ldHN0YW1wX3dhbnRlZDsKIHN0YXRpYyB2 b2lkIG5ldHN0YW1wX2NsZWFyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlpbnQgZGVm ZXJyZWQgPSBhdG9taWNfeGNoZygmbmV0c3RhbXBfbmVlZGVkX2RlZmVycmVkLCAwKTsKKwlpbnQg d2FudGVkOwogCi0Jd2hpbGUgKGRlZmVycmVkLS0pCi0JCXN0YXRpY19rZXlfc2xvd19kZWMoJm5l dHN0YW1wX25lZWRlZCk7CisJd2FudGVkID0gYXRvbWljX2FkZF9yZXR1cm4oZGVmZXJyZWQsICZu ZXRzdGFtcF93YW50ZWQpOworCWlmICh3YW50ZWQgPiAwKQorCQlzdGF0aWNfa2V5X2VuYWJsZSgm bmV0c3RhbXBfbmVlZGVkKTsKKwllbHNlCisJCXN0YXRpY19rZXlfZGlzYWJsZSgmbmV0c3RhbXBf bmVlZGVkKTsKIH0KIHN0YXRpYyBERUNMQVJFX1dPUksobmV0c3RhbXBfd29yaywgbmV0c3RhbXBf Y2xlYXIpOwogI2VuZGlmCiAKIHZvaWQgbmV0X2VuYWJsZV90aW1lc3RhbXAodm9pZCkKIHsKKyNp ZmRlZiBIQVZFX0pVTVBfTEFCRUwKKwlpbnQgd2FudGVkOworCisJd2hpbGUgKDEpIHsKKwkJd2Fu dGVkID0gYXRvbWljX3JlYWQoJm5ldHN0YW1wX3dhbnRlZCk7CisJCWlmICh3YW50ZWQgPD0gMCkK KwkJCWJyZWFrOworCQlpZiAoYXRvbWljX2NtcHhjaGcoJm5ldHN0YW1wX3dhbnRlZCwgd2FudGVk LCB3YW50ZWQgKyAxKSA9PSB3YW50ZWQpCisJCQlyZXR1cm47CisJfQorCWF0b21pY19pbmMoJm5l dHN0YW1wX25lZWRlZF9kZWZlcnJlZCk7CisJc2NoZWR1bGVfd29yaygmbmV0c3RhbXBfd29yayk7 CisjZWxzZQogCXN0YXRpY19rZXlfc2xvd19pbmMoJm5ldHN0YW1wX25lZWRlZCk7CisjZW5kaWYK IH0KIEVYUE9SVF9TWU1CT0wobmV0X2VuYWJsZV90aW1lc3RhbXApOwogCiB2b2lkIG5ldF9kaXNh YmxlX3RpbWVzdGFtcCh2b2lkKQogewogI2lmZGVmIEhBVkVfSlVNUF9MQUJFTAotCS8qIG5ldF9k aXNhYmxlX3RpbWVzdGFtcCgpIGNhbiBiZSBjYWxsZWQgZnJvbSBub24gcHJvY2VzcyBjb250ZXh0 ICovCi0JYXRvbWljX2luYygmbmV0c3RhbXBfbmVlZGVkX2RlZmVycmVkKTsKKwlpbnQgd2FudGVk OworCisJd2hpbGUgKDEpIHsKKwkJd2FudGVkID0gYXRvbWljX3JlYWQoJm5ldHN0YW1wX3dhbnRl ZCk7CisJCWlmICh3YW50ZWQgPD0gMSkKKwkJCWJyZWFrOworCQlpZiAoYXRvbWljX2NtcHhjaGco Jm5ldHN0YW1wX3dhbnRlZCwgd2FudGVkLCB3YW50ZWQgLSAxKSA9PSB3YW50ZWQpCisJCQlyZXR1 cm47CisJfQorCWF0b21pY19kZWMoJm5ldHN0YW1wX25lZWRlZF9kZWZlcnJlZCk7CiAJc2NoZWR1 bGVfd29yaygmbmV0c3RhbXBfd29yayk7CiAjZWxzZQogCXN0YXRpY19rZXlfc2xvd19kZWMoJm5l dHN0YW1wX25lZWRlZCk7Ci0tIAoyLjEuMAoKCkZyb20gMGJjYzMxOWQ1NTRjYmMyNDE0YjcyMWQ3 NzNiNzc1YjNjYWRlOWJkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1h emV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpEYXRlOiBXZWQsIDEgTWFyIDIwMTcgMTQ6NDU6MDYg LTA4MDAKU3ViamVjdDogW1BBVENIIDAxOC8xMTJdIGlwdjY6IG9ycGhhbiBza2JzIGluIHJlYXNz ZW1ibHkgdW5pdAoKWyBVcHN0cmVhbSBjb21taXQgNDhjYWMxOGVjZjFkZTgyZjc2MjU5YTU0NDAy YzNhZGI3ODM5YWQwMSBdCgpBbmRyZXkgcmVwb3J0ZWQgYSB1c2UtYWZ0ZXItZnJlZSBpbiBJUHY2 IHN0YWNrLgoKSXNzdWUgaGVyZSBpcyB0aGF0IHdlIGZyZWUgdGhlIHNvY2tldCB3aGlsZSBpdCBz dGlsbCBoYXMgc2tiCmluIFRYIHBhdGggYW5kIGluIHNvbWUgcXVldWVzLgoKSXQgaGFwcGVucyBo ZXJlIGJlY2F1c2UgSVB2NiByZWFzc2VtYmx5IHVuaXQgbWVzc2VzIHNrYi0+dHJ1ZXNpemUsCmJy ZWFraW5nIHNrYl9zZXRfb3duZXJfdygpIGJhZGx5LgoKV2UgZml4ZWQgYSBzaW1pbGFyIGlzc3Vl IGZvciBJUFY0IGluIGNvbW1pdCA4MjgyZjI3NDQ5YmYgKCJpbmV0OiBmcmFnOgpBbHdheXMgb3Jw aGFuIHNrYnMgaW5zaWRlIGlwX2RlZnJhZygpIikKQWNrZWQtYnk6IEpvZSBTdHJpbmdlciA8am9l QG92bi5vcmc+Cgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KQlVHOiBLQVNBTjogdXNlLWFmdGVyLWZyZWUgaW4gc29ja193 ZnJlZSsweDExOC8weDEyMApSZWFkIG9mIHNpemUgOCBhdCBhZGRyIGZmZmY4ODAwNjJkYTAwNjAg YnkgdGFzayBhLm91dC80MTQwCgpwYWdlOmZmZmZlYTAwMDE4YjY4MDAgY291bnQ6MSBtYXBjb3Vu dDowIG1hcHBpbmc6ICAgICAgICAgIChudWxsKQppbmRleDoweDAgY29tcG91bmRfbWFwY291bnQ6 IDAKZmxhZ3M6IDB4MTAwMDAwMDAwMDA4MTAwKHNsYWJ8aGVhZCkKcmF3OiAwMTAwMDAwMDAwMDA4 MTAwIDAwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMTgwMTMwMDEzCnJh dzogZGVhZDAwMDAwMDAwMDEwMCBkZWFkMDAwMDAwMDAwMjAwIGZmZmY4ODAwNjc0MWYxNDAgMDAw MDAwMDAwMDAwMDAwMApwYWdlIGR1bXBlZCBiZWNhdXNlOiBrYXNhbjogYmFkIGFjY2VzcyBkZXRl Y3RlZAoKQ1BVOiAwIFBJRDogNDE0MCBDb21tOiBhLm91dCBOb3QgdGFpbnRlZCA0LjEwLjAtcmMz KyAjNTkKSGFyZHdhcmUgbmFtZTogUUVNVSBTdGFuZGFyZCBQQyAoaTQ0MEZYICsgUElJWCwgMTk5 NiksIEJJT1MgQm9jaHMgMDEvMDEvMjAxMQpDYWxsIFRyYWNlOgogX19kdW1wX3N0YWNrIGxpYi9k dW1wX3N0YWNrLmM6MTUKIGR1bXBfc3RhY2srMHgyOTIvMHgzOTggbGliL2R1bXBfc3RhY2suYzo1 MQogZGVzY3JpYmVfYWRkcmVzcyBtbS9rYXNhbi9yZXBvcnQuYzoyNjIKIGthc2FuX3JlcG9ydF9l cnJvcisweDEyMS8weDU2MCBtbS9rYXNhbi9yZXBvcnQuYzozNzAKIGthc2FuX3JlcG9ydCBtbS9r YXNhbi9yZXBvcnQuYzozOTIKIF9fYXNhbl9yZXBvcnRfbG9hZDhfbm9hYm9ydCsweDNlLzB4NDAg bW0va2FzYW4vcmVwb3J0LmM6NDEzCiBzb2NrX2ZsYWcgLi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9i aXRvcHMuaDozMjQKIHNvY2tfd2ZyZWUrMHgxMTgvMHgxMjAgbmV0L2NvcmUvc29jay5jOjE2MzEK IHNrYl9yZWxlYXNlX2hlYWRfc3RhdGUrMHhmYy8weDI1MCBuZXQvY29yZS9za2J1ZmYuYzo2NTUK IHNrYl9yZWxlYXNlX2FsbCsweDE1LzB4NjAgbmV0L2NvcmUvc2tidWZmLmM6NjY4CiBfX2tmcmVl X3NrYisweDE1LzB4MjAgbmV0L2NvcmUvc2tidWZmLmM6Njg0CiBrZnJlZV9za2IrMHgxNmUvMHg0 ZTAgbmV0L2NvcmUvc2tidWZmLmM6NzA1CiBpbmV0X2ZyYWdfZGVzdHJveSsweDEyMS8weDI5MCBu ZXQvaXB2NC9pbmV0X2ZyYWdtZW50LmM6MzA0CiBpbmV0X2ZyYWdfcHV0IC4vaW5jbHVkZS9uZXQv aW5ldF9mcmFnLmg6MTMzCiBuZl9jdF9mcmFnNl9nYXRoZXIrMHgxMTI1LzB4MzhiMCBuZXQvaXB2 Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmM6NjE3CiBpcHY2X2RlZnJhZysweDIxYi8w eDM1MCBuZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfZGVmcmFnX2lwdjZfaG9va3MuYzo2OAogbmZfaG9v a19lbnRyeV9ob29rZm4gLi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci5oOjEwMgogbmZfaG9va19z bG93KzB4YzMvMHgyOTAgbmV0L25ldGZpbHRlci9jb3JlLmM6MzEwCiBuZl9ob29rIC4vaW5jbHVk ZS9saW51eC9uZXRmaWx0ZXIuaDoyMTIKIF9faXA2X2xvY2FsX291dCsweDUyYy8weGFmMCBuZXQv aXB2Ni9vdXRwdXRfY29yZS5jOjE2MAogaXA2X2xvY2FsX291dCsweDJkLzB4MTcwIG5ldC9pcHY2 L291dHB1dF9jb3JlLmM6MTcwCiBpcDZfc2VuZF9za2IrMHhhMS8weDM0MCBuZXQvaXB2Ni9pcDZf b3V0cHV0LmM6MTcyMgogaXA2X3B1c2hfcGVuZGluZ19mcmFtZXMrMHhiMy8weGUwIG5ldC9pcHY2 L2lwNl9vdXRwdXQuYzoxNzQyCiByYXd2Nl9wdXNoX3BlbmRpbmdfZnJhbWVzIG5ldC9pcHY2L3Jh dy5jOjYxMwogcmF3djZfc2VuZG1zZysweDJjZmYvMHg0MTMwIG5ldC9pcHY2L3Jhdy5jOjkyNwog aW5ldF9zZW5kbXNnKzB4MTY0LzB4NWIwIG5ldC9pcHY0L2FmX2luZXQuYzo3NDQKIHNvY2tfc2Vu ZG1zZ19ub3NlYyBuZXQvc29ja2V0LmM6NjM1CiBzb2NrX3NlbmRtc2crMHhjYS8weDExMCBuZXQv c29ja2V0LmM6NjQ1CiBzb2NrX3dyaXRlX2l0ZXIrMHgzMjYvMHg2MjAgbmV0L3NvY2tldC5jOjg0 OAogbmV3X3N5bmNfd3JpdGUgZnMvcmVhZF93cml0ZS5jOjQ5OQogX192ZnNfd3JpdGUrMHg0ODMv MHg3NjAgZnMvcmVhZF93cml0ZS5jOjUxMgogdmZzX3dyaXRlKzB4MTg3LzB4NTMwIGZzL3JlYWRf d3JpdGUuYzo1NjAKIFNZU0Nfd3JpdGUgZnMvcmVhZF93cml0ZS5jOjYwNwogU3lTX3dyaXRlKzB4 ZmIvMHgyMzAgZnMvcmVhZF93cml0ZS5jOjU5OQogZW50cnlfU1lTQ0FMTF82NF9mYXN0cGF0aCsw eDFmLzB4YzIgYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUzoyMDMKUklQOiAwMDMzOjB4N2ZmMjZl NmY1Yjc5ClJTUDogMDAyYjowMDAwN2ZmMjY4ZTBlZDk4IEVGTEFHUzogMDAwMDAyMDYgT1JJR19S QVg6IDAwMDAwMDAwMDAwMDAwMDEKUkFYOiBmZmZmZmZmZmZmZmZmZmRhIFJCWDogMDAwMDdmZjI2 OGUwZjljMCBSQ1g6IDAwMDA3ZmYyNmU2ZjViNzkKUkRYOiAwMDAwMDAwMDAwMDAwMDEwIFJTSTog MDAwMDAwMDAyMGY1MGZlMSBSREk6IDAwMDAwMDAwMDAwMDAwMDMKUkJQOiAwMDAwN2ZmMjZlYmMx MjIwIFIwODogMDAwMDAwMDAwMDAwMDAwMCBSMDk6IDAwMDAwMDAwMDAwMDAwMDAKUjEwOiAwMDAw MDAwMDAwMDAwMDAwIFIxMTogMDAwMDAwMDAwMDAwMDIwNiBSMTI6IDAwMDAwMDAwMDAwMDAwMDAK UjEzOiAwMDAwN2ZmMjY4ZTBmOWMwIFIxNDogMDAwMDdmZjI2ZWZlYzA0MCBSMTU6IDAwMDAwMDAw MDAwMDAwMDMKClRoZSBidWdneSBhZGRyZXNzIGJlbG9uZ3MgdG8gdGhlIG9iamVjdCBhdCBmZmZm ODgwMDYyZGEwMDAwCiB3aGljaCBiZWxvbmdzIHRvIHRoZSBjYWNoZSBSQVd2NiBvZiBzaXplIDE1 MDQKVGhlIGJ1Z2d5IGFkZHJlc3MgZmZmZjg4MDA2MmRhMDA2MCBpcyBsb2NhdGVkIDk2IGJ5dGVz IGluc2lkZQogb2YgMTUwNC1ieXRlIHJlZ2lvbiBbZmZmZjg4MDA2MmRhMDAwMCwgZmZmZjg4MDA2 MmRhMDVlMCkKCkZyZWVkIGJ5IHRhc2sgNDExMzoKIHNhdmVfc3RhY2tfdHJhY2UrMHgxNi8weDIw IGFyY2gveDg2L2tlcm5lbC9zdGFja3RyYWNlLmM6NTcKIHNhdmVfc3RhY2srMHg0My8weGQwIG1t L2thc2FuL2thc2FuLmM6NTAyCiBzZXRfdHJhY2sgbW0va2FzYW4va2FzYW4uYzo1MTQKIGthc2Fu X3NsYWJfZnJlZSsweDczLzB4YzAgbW0va2FzYW4va2FzYW4uYzo1NzgKIHNsYWJfZnJlZV9ob29r IG1tL3NsdWIuYzoxMzUyCiBzbGFiX2ZyZWVfZnJlZWxpc3RfaG9vayBtbS9zbHViLmM6MTM3NAog c2xhYl9mcmVlIG1tL3NsdWIuYzoyOTUxCiBrbWVtX2NhY2hlX2ZyZWUrMHhiMi8weDJjMCBtbS9z bHViLmM6Mjk3Mwogc2tfcHJvdF9mcmVlIG5ldC9jb3JlL3NvY2suYzoxMzc3CiBfX3NrX2Rlc3Ry dWN0KzB4NDljLzB4NmUwIG5ldC9jb3JlL3NvY2suYzoxNDUyCiBza19kZXN0cnVjdCsweDQ3LzB4 ODAgbmV0L2NvcmUvc29jay5jOjE0NjAKIF9fc2tfZnJlZSsweDU3LzB4MjMwIG5ldC9jb3JlL3Nv Y2suYzoxNDY4CiBza19mcmVlKzB4MjMvMHgzMCBuZXQvY29yZS9zb2NrLmM6MTQ3OQogc29ja19w dXQgLi9pbmNsdWRlL25ldC9zb2NrLmg6MTYzOAogc2tfY29tbW9uX3JlbGVhc2UrMHgzMWUvMHg0 ZTAgbmV0L2NvcmUvc29jay5jOjI3ODIKIHJhd3Y2X2Nsb3NlKzB4NTQvMHg4MCBuZXQvaXB2Ni9y YXcuYzoxMjE0CiBpbmV0X3JlbGVhc2UrMHhlZC8weDFjMCBuZXQvaXB2NC9hZl9pbmV0LmM6NDI1 CiBpbmV0Nl9yZWxlYXNlKzB4NTAvMHg3MCBuZXQvaXB2Ni9hZl9pbmV0Ni5jOjQzMQogc29ja19y ZWxlYXNlKzB4OGQvMHgxZTAgbmV0L3NvY2tldC5jOjU5OQogc29ja19jbG9zZSsweDE2LzB4MjAg bmV0L3NvY2tldC5jOjEwNjMKIF9fZnB1dCsweDMzMi8weDdmMCBmcy9maWxlX3RhYmxlLmM6MjA4 CiBfX19fZnB1dCsweDE1LzB4MjAgZnMvZmlsZV90YWJsZS5jOjI0NAogdGFza193b3JrX3J1bisw eDE5Yi8weDI3MCBrZXJuZWwvdGFza193b3JrLmM6MTE2CiBleGl0X3Rhc2tfd29yayAuL2luY2x1 ZGUvbGludXgvdGFza193b3JrLmg6MjEKIGRvX2V4aXQrMHgxODZiLzB4MjgwMCBrZXJuZWwvZXhp dC5jOjgzOQogZG9fZ3JvdXBfZXhpdCsweDE0OS8weDQyMCBrZXJuZWwvZXhpdC5jOjk0MwogU1lT Q19leGl0X2dyb3VwIGtlcm5lbC9leGl0LmM6OTU0CiBTeVNfZXhpdF9ncm91cCsweDFkLzB4MjAg a2VybmVsL2V4aXQuYzo5NTIKIGVudHJ5X1NZU0NBTExfNjRfZmFzdHBhdGgrMHgxZi8weGMyIGFy Y2gveDg2L2VudHJ5L2VudHJ5XzY0LlM6MjAzCgpBbGxvY2F0ZWQgYnkgdGFzayA0MTE1Ogogc2F2 ZV9zdGFja190cmFjZSsweDE2LzB4MjAgYXJjaC94ODYva2VybmVsL3N0YWNrdHJhY2UuYzo1Nwog c2F2ZV9zdGFjaysweDQzLzB4ZDAgbW0va2FzYW4va2FzYW4uYzo1MDIKIHNldF90cmFjayBtbS9r YXNhbi9rYXNhbi5jOjUxNAoga2FzYW5fa21hbGxvYysweGFkLzB4ZTAgbW0va2FzYW4va2FzYW4u Yzo2MDUKIGthc2FuX3NsYWJfYWxsb2MrMHgxMi8weDIwIG1tL2thc2FuL2thc2FuLmM6NTQ0CiBz bGFiX3Bvc3RfYWxsb2NfaG9vayBtbS9zbGFiLmg6NDMyCiBzbGFiX2FsbG9jX25vZGUgbW0vc2x1 Yi5jOjI3MDgKIHNsYWJfYWxsb2MgbW0vc2x1Yi5jOjI3MTYKIGttZW1fY2FjaGVfYWxsb2MrMHgx YWYvMHgyNTAgbW0vc2x1Yi5jOjI3MjEKIHNrX3Byb3RfYWxsb2MrMHg2NS8weDJhMCBuZXQvY29y ZS9zb2NrLmM6MTMzNAogc2tfYWxsb2MrMHgxMDUvMHgxMDEwIG5ldC9jb3JlL3NvY2suYzoxMzk2 CiBpbmV0Nl9jcmVhdGUrMHg0NGQvMHgxMTUwIG5ldC9pcHY2L2FmX2luZXQ2LmM6MTgzCiBfX3Nv Y2tfY3JlYXRlKzB4NGY2LzB4ODgwIG5ldC9zb2NrZXQuYzoxMTk5CiBzb2NrX2NyZWF0ZSBuZXQv c29ja2V0LmM6MTIzOQogU1lTQ19zb2NrZXQgbmV0L3NvY2tldC5jOjEyNjkKIFN5U19zb2NrZXQr MHhmOS8weDIzMCBuZXQvc29ja2V0LmM6MTI0OQogZW50cnlfU1lTQ0FMTF82NF9mYXN0cGF0aCsw eDFmLzB4YzIgYXJjaC94ODYvZW50cnkvZW50cnlfNjQuUzoyMDMKCk1lbW9yeSBzdGF0ZSBhcm91 bmQgdGhlIGJ1Z2d5IGFkZHJlc3M6CiBmZmZmODgwMDYyZDlmZjAwOiBmYyBmYyBmYyBmYyBmYyBm YyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYwogZmZmZjg4MDA2MmQ5ZmY4MDogZmMgZmMg ZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMKPmZmZmY4ODAwNjJkYTAw MDA6IGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiIGZiCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBmZmZm ODgwMDYyZGEwMDgwOiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBmYiBm YiBmYgogZmZmZjg4MDA2MmRhMDEwMDogZmIgZmIgZmIgZmIgZmIgZmIgZmIgZmIgZmIgZmIgZmIg ZmIgZmIgZmIgZmIgZmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CgpSZXBvcnRlZC1ieTogQW5kcmV5IEtvbm92YWxvdiA8 YW5kcmV5a252bEBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1h emV0QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2 ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGlu dXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBuZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Jl YXNtLmMgfCAxICsKIG5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYyAgICAgICAgICAgICB8IDEg LQogMiBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYyBiL25ldC9pcHY2 L25ldGZpbHRlci9uZl9jb25udHJhY2tfcmVhc20uYwppbmRleCA5OTQ4YjVjLi45ODZkNGNhIDEw MDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3JlYXNtLmMKKysrIGIv bmV0L2lwdjYvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19yZWFzbS5jCkBAIC01ODksNiArNTg5LDcg QEAgaW50IG5mX2N0X2ZyYWc2X2dhdGhlcihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZm ICpza2IsIHUzMiB1c2VyKQogCWhkciA9IGlwdjZfaGRyKHNrYik7CiAJZmhkciA9IChzdHJ1Y3Qg ZnJhZ19oZHIgKilza2JfdHJhbnNwb3J0X2hlYWRlcihza2IpOwogCisJc2tiX29ycGhhbihza2Ip OwogCWZxID0gZnFfZmluZChuZXQsIGZoZHItPmlkZW50aWZpY2F0aW9uLCB1c2VyLCAmaGRyLT5z YWRkciwgJmhkci0+ZGFkZHIsCiAJCSAgICAgc2tiLT5kZXYgPyBza2ItPmRldi0+aWZpbmRleCA6 IDAsIGlwNl9mcmFnX2VjbihoZHIpKTsKIAlpZiAoZnEgPT0gTlVMTCkgewpkaWZmIC0tZ2l0IGEv bmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jIGIvbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5j CmluZGV4IGVhYjIxMGIuLjQ4Mzg2YmYgMTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3aXRjaC9jb25u dHJhY2suYworKysgYi9uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMKQEAgLTM2Nyw3ICszNjcs NiBAQCBzdGF0aWMgaW50IGhhbmRsZV9mcmFnbWVudHMoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qg c3dfZmxvd19rZXkgKmtleSwKIAl9IGVsc2UgaWYgKGtleS0+ZXRoLnR5cGUgPT0gaHRvbnMoRVRI X1BfSVBWNikpIHsKIAkJZW51bSBpcDZfZGVmcmFnX3VzZXJzIHVzZXIgPSBJUDZfREVGUkFHX0NP Tk5UUkFDS19JTiArIHpvbmU7CiAKLQkJc2tiX29ycGhhbihza2IpOwogCQltZW1zZXQoSVA2Q0Io c2tiKSwgMCwgc2l6ZW9mKHN0cnVjdCBpbmV0Nl9za2JfcGFybSkpOwogCQllcnIgPSBuZl9jdF9m cmFnNl9nYXRoZXIobmV0LCBza2IsIHVzZXIpOwogCQlpZiAoZXJyKSB7Ci0tIAoyLjEuMAoKCkZy b20gNTFhZTFmYmNmMTczMjVkNDdjMjBmNjVmYjk2OGJlMmQyZDEyZmVkMCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogQXJuYWxkbyBDYXJ2YWxobyBkZSBNZWxvIDxhY21lQHJlZGhhdC5j b20+CkRhdGU6IFdlZCwgMSBNYXIgMjAxNyAxNjozNTowNyAtMDMwMApTdWJqZWN0OiBbUEFUQ0gg MDE5LzExMl0gZGNjcDogVW5sb2NrIHNvY2sgYmVmb3JlIGNhbGxpbmcgc2tfZnJlZSgpCgpbIFVw c3RyZWFtIGNvbW1pdCBkNWFmYjZmOWI2YmIyYzU3YmQwYzA1ZTc2ZTEyNDg5ZGMwZDAzN2Q5IF0K ClRoZSBjb2RlIHdoZXJlIHNrX2Nsb25lKCkgY2FtZSBmcm9tIGNyZWF0ZWQgYSBuZXcgc29ja2V0 IGFuZCBsb2NrZWQgaXQsCmJ1dCB0aGVuLCBvbiB0aGUgZXJyb3IgcGF0aCBkaWRuJ3QgdW5sb2Nr IGl0LgoKVGhpcyBwcm9ibGVtIHN0YXllZCB0aGVyZSBmb3IgYSBsb25nIHdoaWxlLCB0aWxsIGIw NjkxYzhlZTdjMiAoIm5ldDoKVW5sb2NrIHNvY2sgYmVmb3JlIGNhbGxpbmcgc2tfZnJlZSgpIikg Zml4ZWQgaXQsIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoZQpjYWxsZXJzIG9mIHNrX2Nsb25lKCkgKG5v dyBza19jbG9uZV9sb2NrZWQoKSkgd2VyZSBub3QgYXVkaXRlZCBhbmQgdGhlCm9uZSBpbiBkY2Nw X2NyZWF0ZV9vcGVucmVxX2NoaWxkKCkgcmVtYWluZWQuCgpOb3cgaW4gdGhlIGFnZSBvZiB0aGUg c3lza2FsbGVyIGZ1enplciwgdGhpcyB3YXMgZmluYWxseSB1bmNvdmVyZWQsIGFzCnJlcG9ydGVk IGJ5IERtaXRyeToKCiAtLS0tIDg8IC0tLS0KCkkndmUgZ290IHRoZSBmb2xsb3dpbmcgcmVwb3J0 IHdoaWxlIHJ1bm5pbmcgc3l6a2FsbGVyIGZ1enplciBvbgo4NjI5MmIzM2Q0YjcgKCJNZXJnZSBi cmFuY2ggJ2FrcG0nIChwYXRjaGVzIGZyb20gQW5kcmV3KSIpCgogIFsgQlVHOiBoZWxkIGxvY2sg ZnJlZWQhIF0KICA0LjEwLjArICMyMzQgTm90IHRhaW50ZWQKICAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgc3l6LWV4ZWN1dG9yNi82ODk4IGlzIGZyZWVpbmcgbWVtb3J5CiAgZmZmZjg4MDA2 Mjg2Y2FjMC1mZmZmODgwMDYyODZkM2I3LCB3aXRoIGEgbG9jayBzdGlsbCBoZWxkIHRoZXJlIQog ICAoc2xvY2stQUZfSU5FVDYpeysuLS4uLn0sIGF0OiBbPGZmZmZmZmZmODM2MmMyYzk+XSBzcGlu X2xvY2sKICBpbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmg6Mjk5IFtpbmxpbmVdCiAgIChzbG9jay1B Rl9JTkVUNil7Ky4tLi4ufSwgYXQ6IFs8ZmZmZmZmZmY4MzYyYzJjOT5dCiAgc2tfY2xvbmVfbG9j aysweDNkOS8weDEyYzAgbmV0L2NvcmUvc29jay5jOjE1MDQKICA1IGxvY2tzIGhlbGQgYnkgc3l6 LWV4ZWN1dG9yNi82ODk4OgogICAjMDogIChza19sb2NrLUFGX0lORVQ2KXsrLisuKy59LCBhdDog WzxmZmZmZmZmZjgzOWEzNGI0Pl0gbG9ja19zb2NrCiAgaW5jbHVkZS9uZXQvc29jay5oOjE0NjAg W2lubGluZV0KICAgIzA6ICAoc2tfbG9jay1BRl9JTkVUNil7Ky4rLisufSwgYXQ6IFs8ZmZmZmZm ZmY4MzlhMzRiND5dCiAgaW5ldF9zdHJlYW1fY29ubmVjdCsweDQ0LzB4YTAgbmV0L2lwdjQvYWZf aW5ldC5jOjY4MQogICAjMTogIChyY3VfcmVhZF9sb2NrKXsuLi4uLi59LCBhdDogWzxmZmZmZmZm ZjgzYmMxYzJhPl0KICBpbmV0Nl9jc2tfeG1pdCsweDEyYS8weDVkMCBuZXQvaXB2Ni9pbmV0Nl9j b25uZWN0aW9uX3NvY2suYzoxMjYKICAgIzI6ICAocmN1X3JlYWRfbG9jayl7Li4uLi4ufSwgYXQ6 IFs8ZmZmZmZmZmY4MzY5YjQyND5dIF9fc2tiX3VubGluawogIGluY2x1ZGUvbGludXgvc2tidWZm Lmg6MTc2NyBbaW5saW5lXQogICAjMjogIChyY3VfcmVhZF9sb2NrKXsuLi4uLi59LCBhdDogWzxm ZmZmZmZmZjgzNjliNDI0Pl0gX19za2JfZGVxdWV1ZQogIGluY2x1ZGUvbGludXgvc2tidWZmLmg6 MTc4MyBbaW5saW5lXQogICAjMjogIChyY3VfcmVhZF9sb2NrKXsuLi4uLi59LCBhdDogWzxmZmZm ZmZmZjgzNjliNDI0Pl0KICBwcm9jZXNzX2JhY2tsb2crMHgyNjQvMHg3MzAgbmV0L2NvcmUvZGV2 LmM6NDgzNQogICAjMzogIChyY3VfcmVhZF9sb2NrKXsuLi4uLi59LCBhdDogWzxmZmZmZmZmZjgz YWViNWMwPl0KICBpcDZfaW5wdXRfZmluaXNoKzB4MC8weDE3MDAgbmV0L2lwdjYvaXA2X2lucHV0 LmM6NTkKICAgIzQ6ICAoc2xvY2stQUZfSU5FVDYpeysuLS4uLn0sIGF0OiBbPGZmZmZmZmZmODM2 MmMyYzk+XSBzcGluX2xvY2sKICBpbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmg6Mjk5IFtpbmxpbmVd CiAgICM0OiAgKHNsb2NrLUFGX0lORVQ2KXsrLi0uLi59LCBhdDogWzxmZmZmZmZmZjgzNjJjMmM5 Pl0KICBza19jbG9uZV9sb2NrKzB4M2Q5LzB4MTJjMCBuZXQvY29yZS9zb2NrLmM6MTUwNAoKRml4 IGl0IGp1c3QgbGlrZSB3YXMgZG9uZSBieSBiMDY5MWM4ZWU3YzIgKCJuZXQ6IFVubG9jayBzb2Nr IGJlZm9yZSBjYWxsaW5nCnNrX2ZyZWUoKSIpLgoKUmVwb3J0ZWQtYnk6IERtaXRyeSBWeXVrb3Yg PGR2eXVrb3ZAZ29vZ2xlLmNvbT4KQ2M6IENvbmcgV2FuZyA8eGl5b3Uud2FuZ2NvbmdAZ21haWwu Y29tPgpDYzogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpDYzogR2Vycml0IFJl bmtlciA8Z2Vycml0QGVyZy5hYmRuLmFjLnVrPgpDYzogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxp bnV0cm9uaXguZGU+Ckxpbms6IGh0dHA6Ly9sa21sLmtlcm5lbC5vcmcvci8yMDE3MDMwMTE1MzUx MC5HRTE1MTQ1QGtlcm5lbC5vcmcKU2lnbmVkLW9mZi1ieTogQXJuYWxkbyBDYXJ2YWxobyBkZSBN ZWxvIDxhY21lQHJlZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2 ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVn a2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBuZXQvZGNjcC9taW5pc29ja3MuYyB8IDEgKwog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0IGEvbmV0L2RjY3AvbWlu aXNvY2tzLmMgYi9uZXQvZGNjcC9taW5pc29ja3MuYwppbmRleCA1M2VkZGY5Li5kMjBkOTQ4IDEw MDY0NAotLS0gYS9uZXQvZGNjcC9taW5pc29ja3MuYworKysgYi9uZXQvZGNjcC9taW5pc29ja3Mu YwpAQCAtMTIyLDYgKzEyMiw3IEBAIHN0cnVjdCBzb2NrICpkY2NwX2NyZWF0ZV9vcGVucmVxX2No aWxkKGNvbnN0IHN0cnVjdCBzb2NrICpzaywKIAkJCS8qIEl0IGlzIHN0aWxsIHJhdyBjb3B5IG9m IHBhcmVudCwgc28gaW52YWxpZGF0ZQogCQkJICogZGVzdHJ1Y3RvciBhbmQgbWFrZSBwbGFpbiBz a19mcmVlKCkgKi8KIAkJCW5ld3NrLT5za19kZXN0cnVjdCA9IE5VTEw7CisJCQliaF91bmxvY2tf c29jayhuZXdzayk7CiAJCQlza19mcmVlKG5ld3NrKTsKIAkJCXJldHVybiBOVUxMOwogCQl9Ci0t IAoyLjEuMAoKCkZyb20gNDU0N2YwM2QxYTYyNGQ3ZTkyYzY1MDc3YjdjYjViMmEzMzgzOWNiMyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogV0FORyBDb25nIDx4aXlvdS53YW5nY29uZ0Bn bWFpbC5jb20+CkRhdGU6IEZyaSwgMyBNYXIgMjAxNyAxMjoyMToxNCAtMDgwMApTdWJqZWN0OiBb UEFUQ0ggMDIwLzExMl0gc3RycGFyc2VyOiBkZXN0cm95IHdvcmtxdWV1ZSBvbiBtb2R1bGUgZXhp dAoKWyBVcHN0cmVhbSBjb21taXQgZjc4ZWY3Y2Q5YTA2ODZiOTc5Njc5ZDBkZTA2MWM2ZGJmZDhk NjQ5ZSBdCgpGaXhlczogNDNhMGM2NzUxYTMyICgic3RycGFyc2VyOiBTdHJlYW0gcGFyc2VyIGZv ciBtZXNzYWdlcyIpCkNjOiBUb20gSGVyYmVydCA8dG9tQGhlcmJlcnRsYW5kLmNvbT4KU2lnbmVk LW9mZi1ieTogQ29uZyBXYW5nIDx4aXlvdS53YW5nY29uZ0BnbWFpbC5jb20+ClNpZ25lZC1vZmYt Ynk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTog R3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBuZXQv c3RycGFyc2VyL3N0cnBhcnNlci5jIHwgMSArCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KykKCmRpZmYgLS1naXQgYS9uZXQvc3RycGFyc2VyL3N0cnBhcnNlci5jIGIvbmV0L3N0cnBhcnNl ci9zdHJwYXJzZXIuYwppbmRleCA0MWFkZjM2Li5iNWMyNzliIDEwMDY0NAotLS0gYS9uZXQvc3Ry cGFyc2VyL3N0cnBhcnNlci5jCisrKyBiL25ldC9zdHJwYXJzZXIvc3RycGFyc2VyLmMKQEAgLTUw NCw2ICs1MDQsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBzdHJwX21vZF9pbml0KHZvaWQpCiAKIHN0 YXRpYyB2b2lkIF9fZXhpdCBzdHJwX21vZF9leGl0KHZvaWQpCiB7CisJZGVzdHJveV93b3JrcXVl dWUoc3RycF93cSk7CiB9CiBtb2R1bGVfaW5pdChzdHJwX21vZF9pbml0KTsKIG1vZHVsZV9leGl0 KHN0cnBfbW9kX2V4aXQpOwotLSAKMi4xLjAKCgpGcm9tIDA3NzUzYmM2YTI4MTZjMWMzYjlmN2Jm ZjEzMzI1MWY2MjNjN2JjOTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVyaWMgRHVt YXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNvbT4KRGF0ZTogRnJpLCAzIE1hciAyMDE3IDE0OjA4OjIx IC0wODAwClN1YmplY3Q6IFtQQVRDSCAwMjEvMTEyXSB0Y3A6IGZpeCB2YXJpb3VzIGlzc3VlcyBm b3Igc29ja2V0cyBtb3JwaGluZyB0bwogbGlzdGVuIHN0YXRlCgpbIFVwc3RyZWFtIGNvbW1pdCAw MmIyZmFhZjBhZjFkODU1ODVmNmQ2OTgwZTI4NmQ1MzYxMmFjZmMyIF0KCkRtaXRyeSBWeXVrb3Yg cmVwb3J0ZWQgYSBkaXZpZGUgYnkgMCB0cmlnZ2VyZWQgYnkgc3l6a2FsbGVyLCBleHBsb2l0aW5n CnRjcF9kaXNjb25uZWN0KCkgcGF0aCB0aGF0IHdhcyBuZXZlciByZWFsbHkgY29uc2lkZXJlZCBh bmQvb3IgdXNlZApiZWZvcmUgc3l6a2FsbGVyIDspCgpJIHdhcyBub3QgYWJsZSB0byByZXByb2R1 Y2UgdGhlIGJ1ZywgYnV0IGl0IHNlZW1zIGlzc3VlcyBoZXJlIGFyZSB0aGUKdGhyZWUgcG9zc2li bGUgYWN0aW9ucyB0aGF0IGFzc3VtZWQgdGhleSB3b3VsZCBuZXZlciB0cmlnZ2VyIG9uIGEKbGlz dGVuZXIuCgoxKSB0Y3Bfd3JpdGVfdGltZXJfaGFuZGxlcgoyKSB0Y3BfZGVsYWNrX3RpbWVyX2hh bmRsZXIKMykgTVRVIHJlZHVjdGlvbgoKT25seSBJUHY2IE1UVSByZWR1Y3Rpb24gd2FzIHByb3Bl cmx5IHRlc3RpbmcgVENQX0NMT1NFIGFuZCBUQ1BfTElTVEVOCiBzdGF0ZXMgZnJvbSB0Y3BfdjZf bXR1X3JlZHVjZWQoKQoKU2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29n bGUuY29tPgpSZXBvcnRlZC1ieTogRG1pdHJ5IFZ5dWtvdiA8ZHZ5dWtvdkBnb29nbGUuY29tPgpT aWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25l ZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+ Ci0tLQogbmV0L2lwdjQvdGNwX2lwdjQuYyAgfCA3ICsrKysrLS0KIG5ldC9pcHY0L3RjcF90aW1l ci5jIHwgNiArKysrLS0KIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA0IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9pcHY0LmMgYi9uZXQvaXB2NC90Y3Bf aXB2NC5jCmluZGV4IDIyNTkxMTQuLjViYjgwOWYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9p cHY0LmMKKysrIGIvbmV0L2lwdjQvdGNwX2lwdjQuYwpAQCAtMjY5LDEwICsyNjksMTMgQEAgRVhQ T1JUX1NZTUJPTCh0Y3BfdjRfY29ubmVjdCk7CiAgKi8KIHZvaWQgdGNwX3Y0X210dV9yZWR1Y2Vk KHN0cnVjdCBzb2NrICpzaykKIHsKLQlzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7CiAJc3RydWN0IGlu ZXRfc29jayAqaW5ldCA9IGluZXRfc2soc2spOwotCXUzMiBtdHUgPSB0Y3Bfc2soc2spLT5tdHVf aW5mbzsKKwlzdHJ1Y3QgZHN0X2VudHJ5ICpkc3Q7CisJdTMyIG10dTsKIAorCWlmICgoMSA8PCBz ay0+c2tfc3RhdGUpICYgKFRDUEZfTElTVEVOIHwgVENQRl9DTE9TRSkpCisJCXJldHVybjsKKwlt dHUgPSB0Y3Bfc2soc2spLT5tdHVfaW5mbzsKIAlkc3QgPSBpbmV0X2Nza191cGRhdGVfcG10dShz aywgbXR1KTsKIAlpZiAoIWRzdCkKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNw X3RpbWVyLmMgYi9uZXQvaXB2NC90Y3BfdGltZXIuYwppbmRleCAzZWExY2Y4Li5iMWU2NWIzIDEw MDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfdGltZXIuYworKysgYi9uZXQvaXB2NC90Y3BfdGltZXIu YwpAQCAtMjQ5LDcgKzI0OSw4IEBAIHZvaWQgdGNwX2RlbGFja190aW1lcl9oYW5kbGVyKHN0cnVj dCBzb2NrICpzaykKIAogCXNrX21lbV9yZWNsYWltX3BhcnRpYWwoc2spOwogCi0JaWYgKHNrLT5z a19zdGF0ZSA9PSBUQ1BfQ0xPU0UgfHwgIShpY3NrLT5pY3NrX2Fjay5wZW5kaW5nICYgSUNTS19B Q0tfVElNRVIpKQorCWlmICgoKDEgPDwgc2stPnNrX3N0YXRlKSAmIChUQ1BGX0NMT1NFIHwgVENQ Rl9MSVNURU4pKSB8fAorCSAgICAhKGljc2stPmljc2tfYWNrLnBlbmRpbmcgJiBJQ1NLX0FDS19U SU1FUikpCiAJCWdvdG8gb3V0OwogCiAJaWYgKHRpbWVfYWZ0ZXIoaWNzay0+aWNza19hY2sudGlt ZW91dCwgamlmZmllcykpIHsKQEAgLTU1Miw3ICs1NTMsOCBAQCB2b2lkIHRjcF93cml0ZV90aW1l cl9oYW5kbGVyKHN0cnVjdCBzb2NrICpzaykKIAlzdHJ1Y3QgaW5ldF9jb25uZWN0aW9uX3NvY2sg Kmljc2sgPSBpbmV0X2Nzayhzayk7CiAJaW50IGV2ZW50OwogCi0JaWYgKHNrLT5za19zdGF0ZSA9 PSBUQ1BfQ0xPU0UgfHwgIWljc2stPmljc2tfcGVuZGluZykKKwlpZiAoKCgxIDw8IHNrLT5za19z dGF0ZSkgJiAoVENQRl9DTE9TRSB8IFRDUEZfTElTVEVOKSkgfHwKKwkgICAgIWljc2stPmljc2tf cGVuZGluZykKIAkJZ290byBvdXQ7CiAKIAlpZiAodGltZV9hZnRlcihpY3NrLT5pY3NrX3RpbWVv dXQsIGppZmZpZXMpKSB7Ci0tIAoyLjEuMAoKCkZyb20gOThmYTNkMmE4ZTM5OWM0MGY2ODFiY2E4 M2Y4YWI1MjI2NTdjMTZkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1h emV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpEYXRlOiBGcmksIDMgTWFyIDIwMTcgMjE6MDE6MDIg LTA4MDAKU3ViamVjdDogW1BBVENIIDAyMi8xMTJdIG5ldDogZml4IHNvY2tldCByZWZjb3VudGlu ZyBpbgogc2tiX2NvbXBsZXRlX3dpZmlfYWNrKCkKClsgVXBzdHJlYW0gY29tbWl0IGRkNGYxMDcy MmFlYjEwZjRmNTgyOTQ4ODM5ZjA2NmJlYmU0NGU1ZmIgXQoKVFggc2ticyBkbyBub3QgbmVjZXNz YXJpbHkgaG9sZCBhIHJlZmVyZW5jZSBvbiBza2ItPnNrLT5za19yZWZjbnQKQnkgdGhlIHRpbWUg VFggY29tcGxldGlvbiBoYXBwZW5zLCBza19yZWZjbnQgbWlnaHQgYmUgYWxyZWFkeSAwLgoKc29j a19ob2xkKCkvc29ja19wdXQoKSB3b3VsZCB0aGVuIGNvcnJ1cHQgY3JpdGljYWwgc3RhdGUsIGxp a2UKc2tfd21lbV9hbGxvYy4KCkZpeGVzOiBiZjdmYTU1MWUwY2UgKCJtYWM4MDIxMTogUmVzb2x2 ZSBza19yZWZjbnQvc2tfd21lbV9hbGxvYyBpc3N1ZSBpbiB3aWZpIGFjayBwYXRoIikKU2lnbmVk LW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpDYzogQWxleGFuZGVy IER1eWNrIDxhbGV4YW5kZXIuaC5kdXlja0BpbnRlbC5jb20+CkNjOiBKb2hhbm5lcyBCZXJnIDxq b2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0PgpDYzogU29oZWlsIEhhc3NhcyBZZWdhbmVoIDxzb2hl aWxAZ29vZ2xlLmNvbT4KQ2M6IFdpbGxlbSBkZSBCcnVpam4gPHdpbGxlbWJAZ29vZ2xlLmNvbT4K QWNrZWQtYnk6IFNvaGVpbCBIYXNzYXMgWWVnYW5laCA8c29oZWlsQGdvb2dsZS5jb20+ClNpZ25l ZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9m Zi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0t CiBuZXQvY29yZS9za2J1ZmYuYyB8IDE1ICsrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQs IDggaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvY29yZS9z a2J1ZmYuYyBiL25ldC9jb3JlL3NrYnVmZi5jCmluZGV4IDFlM2UwMDguLmI4MDY2NzcgMTAwNjQ0 Ci0tLSBhL25ldC9jb3JlL3NrYnVmZi5jCisrKyBiL25ldC9jb3JlL3NrYnVmZi5jCkBAIC0zODcx LDcgKzM4NzEsNyBAQCB2b2lkIHNrYl9jb21wbGV0ZV93aWZpX2FjayhzdHJ1Y3Qgc2tfYnVmZiAq c2tiLCBib29sIGFja2VkKQogewogCXN0cnVjdCBzb2NrICpzayA9IHNrYi0+c2s7CiAJc3RydWN0 IHNvY2tfZXh0ZXJyX3NrYiAqc2VycjsKLQlpbnQgZXJyOworCWludCBlcnIgPSAxOwogCiAJc2ti LT53aWZpX2Fja2VkX3ZhbGlkID0gMTsKIAlza2ItPndpZmlfYWNrZWQgPSBhY2tlZDsKQEAgLTM4 ODEsMTQgKzM4ODEsMTUgQEAgdm9pZCBza2JfY29tcGxldGVfd2lmaV9hY2soc3RydWN0IHNrX2J1 ZmYgKnNrYiwgYm9vbCBhY2tlZCkKIAlzZXJyLT5lZS5lZV9lcnJubyA9IEVOT01TRzsKIAlzZXJy LT5lZS5lZV9vcmlnaW4gPSBTT19FRV9PUklHSU5fVFhTVEFUVVM7CiAKLQkvKiB0YWtlIGEgcmVm ZXJlbmNlIHRvIHByZXZlbnQgc2tiX29ycGhhbigpIGZyb20gZnJlZWluZyB0aGUgc29ja2V0ICov Ci0Jc29ja19ob2xkKHNrKTsKLQotCWVyciA9IHNvY2tfcXVldWVfZXJyX3NrYihzaywgc2tiKTsK KwkvKiBUYWtlIGEgcmVmZXJlbmNlIHRvIHByZXZlbnQgc2tiX29ycGhhbigpIGZyb20gZnJlZWlu ZyB0aGUgc29ja2V0LAorCSAqIGJ1dCBvbmx5IGlmIHRoZSBzb2NrZXQgcmVmY291bnQgaXMgbm90 IHplcm8uCisJICovCisJaWYgKGxpa2VseShhdG9taWNfaW5jX25vdF96ZXJvKCZzay0+c2tfcmVm Y250KSkpIHsKKwkJZXJyID0gc29ja19xdWV1ZV9lcnJfc2tiKHNrLCBza2IpOworCQlzb2NrX3B1 dChzayk7CisJfQogCWlmIChlcnIpCiAJCWtmcmVlX3NrYihza2IpOwotCi0Jc29ja19wdXQoc2sp OwogfQogRVhQT1JUX1NZTUJPTF9HUEwoc2tiX2NvbXBsZXRlX3dpZmlfYWNrKTsKIAotLSAKMi4x LjAKCgpGcm9tIGYxNTdjYzFkNzI1MTQwM2M5NTBkOTYwZTNiY2Y5ODhjMTRkOWRlZGEgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVyaWMgRHVtYXpldCA8ZWR1bWF6ZXRAZ29vZ2xlLmNv bT4KRGF0ZTogRnJpLCAzIE1hciAyMDE3IDIxOjAxOjAzIC0wODAwClN1YmplY3Q6IFtQQVRDSCAw MjMvMTEyXSBuZXQ6IGZpeCBzb2NrZXQgcmVmY291bnRpbmcgaW4KIHNrYl9jb21wbGV0ZV90eF90 aW1lc3RhbXAoKQoKWyBVcHN0cmVhbSBjb21taXQgOWFjMjVmYzA2Mzc1MTM3OWNiNzc0MzRmZWY5 ZjNiMDg4Y2QzZTJmNyBdCgpUWCBza2JzIGRvIG5vdCBuZWNlc3NhcmlseSBob2xkIGEgcmVmZXJl bmNlIG9uIHNrYi0+c2stPnNrX3JlZmNudApCeSB0aGUgdGltZSBUWCBjb21wbGV0aW9uIGhhcHBl bnMsIHNrX3JlZmNudCBtaWdodCBiZSBhbHJlYWR5IDAuCgpzb2NrX2hvbGQoKS9zb2NrX3B1dCgp IHdvdWxkIHRoZW4gY29ycnVwdCBjcml0aWNhbCBzdGF0ZSwgbGlrZQpza193bWVtX2FsbG9jIGFu ZCBsZWFkIHRvIGxlYWtzIG9yIHVzZSBhZnRlciBmcmVlLgoKRml4ZXM6IDYyYmNjYjhjZGI2OSAo Im5ldC10aW1lc3RhbXA6IE1ha2UgdGhlIGNsb25lIG9wZXJhdGlvbiBzdGFuZC1hbG9uZSBmcm9t IHBoeSB0aW1lc3RhbXBpbmciKQpTaWduZWQtb2ZmLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0 QGdvb2dsZS5jb20+CkNjOiBBbGV4YW5kZXIgRHV5Y2sgPGFsZXhhbmRlci5oLmR1eWNrQGludGVs LmNvbT4KQ2M6IEpvaGFubmVzIEJlcmcgPGpvaGFubmVzQHNpcHNvbHV0aW9ucy5uZXQ+CkNjOiBT b2hlaWwgSGFzc2FzIFllZ2FuZWggPHNvaGVpbEBnb29nbGUuY29tPgpDYzogV2lsbGVtIGRlIEJy dWlqbiA8d2lsbGVtYkBnb29nbGUuY29tPgpBY2tlZC1ieTogU29oZWlsIEhhc3NhcyBZZWdhbmVo IDxzb2hlaWxAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZl bUBkYXZlbWxvZnQubmV0PgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdr aEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0KIG5ldC9jb3JlL3NrYnVmZi5jIHwgMTUgKysrKysr KystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL3NrYnVmZi5jIGIvbmV0L2NvcmUvc2tidWZmLmMKaW5k ZXggYjgwNjY3Ny4uZjBmNDYyYyAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvc2tidWZmLmMKKysrIGIv bmV0L2NvcmUvc2tidWZmLmMKQEAgLTM4MTQsMTMgKzM4MTQsMTQgQEAgdm9pZCBza2JfY29tcGxl dGVfdHhfdGltZXN0YW1wKHN0cnVjdCBza19idWZmICpza2IsCiAJaWYgKCFza2JfbWF5X3R4X3Rp bWVzdGFtcChzaywgZmFsc2UpKQogCQlyZXR1cm47CiAKLQkvKiB0YWtlIGEgcmVmZXJlbmNlIHRv IHByZXZlbnQgc2tiX29ycGhhbigpIGZyb20gZnJlZWluZyB0aGUgc29ja2V0ICovCi0Jc29ja19o b2xkKHNrKTsKLQotCSpza2JfaHd0c3RhbXBzKHNrYikgPSAqaHd0c3RhbXBzOwotCV9fc2tiX2Nv bXBsZXRlX3R4X3RpbWVzdGFtcChza2IsIHNrLCBTQ01fVFNUQU1QX1NORCk7Ci0KLQlzb2NrX3B1 dChzayk7CisJLyogVGFrZSBhIHJlZmVyZW5jZSB0byBwcmV2ZW50IHNrYl9vcnBoYW4oKSBmcm9t IGZyZWVpbmcgdGhlIHNvY2tldCwKKwkgKiBidXQgb25seSBpZiB0aGUgc29ja2V0IHJlZmNvdW50 IGlzIG5vdCB6ZXJvLgorCSAqLworCWlmIChsaWtlbHkoYXRvbWljX2luY19ub3RfemVybygmc2st PnNrX3JlZmNudCkpKSB7CisJCSpza2JfaHd0c3RhbXBzKHNrYikgPSAqaHd0c3RhbXBzOworCQlf X3NrYl9jb21wbGV0ZV90eF90aW1lc3RhbXAoc2tiLCBzaywgU0NNX1RTVEFNUF9TTkQpOworCQlz b2NrX3B1dChzayk7CisJfQogfQogRVhQT1JUX1NZTUJPTF9HUEwoc2tiX2NvbXBsZXRlX3R4X3Rp bWVzdGFtcCk7CiAKLS0gCjIuMS4wCgoKRnJvbSA1Zjc5YWFiNDFkZWRhYTg2OWVmM2M3MDZlNGMw ODcyMzE4NjY1ODg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS2hvcm9z aGlsb3YgPGtob3Jvc2hpbG92QGlzcHJhcy5ydT4KRGF0ZTogU3VuLCA1IE1hciAyMDE3IDAzOjAx OjU1ICswMzAwClN1YmplY3Q6IFtQQVRDSCAwMjQvMTEyXSBuZXQvc2NoZWQ6IGFjdF9za2Jtb2Q6 IHJlbW92ZSB1bm5lZWRlZAogcmN1X3JlYWRfdW5sb2NrIGluIHRjZl9za2Jtb2RfZHVtcAoKWyBV cHN0cmVhbSBjb21taXQgNmM0ZGM3NWMyNTE3MjFmNTE3ZTlkYWViNTM3MGVhNjA2YjViMzVjZSBd CgpGb3VuZCBieSBMaW51eCBEcml2ZXIgVmVyaWZpY2F0aW9uIHByb2plY3QgKGxpbnV4dGVzdGlu Zy5vcmcpLgoKU2lnbmVkLW9mZi1ieTogQWxleGV5IEtob3Jvc2hpbG92IDxraG9yb3NoaWxvdkBp c3ByYXMucnU+CkFja2VkLWJ5OiBKYW1hbCBIYWRpIFNhbGltIDxqaHNAbW9qYXRhdHUuY29tPgpT aWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25l ZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+ Ci0tLQogbmV0L3NjaGVkL2FjdF9za2Jtb2QuYyB8IDEgLQogMSBmaWxlIGNoYW5nZWQsIDEgZGVs ZXRpb24oLSkKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X3NrYm1vZC5jIGIvbmV0L3NjaGVk L2FjdF9za2Jtb2QuYwppbmRleCBlN2Q5NjM4Li5mODUzMTNkIDEwMDY0NAotLS0gYS9uZXQvc2No ZWQvYWN0X3NrYm1vZC5jCisrKyBiL25ldC9zY2hlZC9hY3Rfc2tibW9kLmMKQEAgLTIyOCw3ICsy MjgsNiBAQCBzdGF0aWMgaW50IHRjZl9za2Jtb2RfZHVtcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBz dHJ1Y3QgdGNfYWN0aW9uICphLAogCiAJcmV0dXJuIHNrYi0+bGVuOwogbmxhX3B1dF9mYWlsdXJl OgotCXJjdV9yZWFkX3VubG9jaygpOwogCW5sbXNnX3RyaW0oc2tiLCBiKTsKIAlyZXR1cm4gLTE7 CiB9Ci0tIAoyLjEuMAoKCkZyb20gN2MwZWFlZWM4NGQxNGQ0Yjg1NzczY2NhYzhiZmZlOGIyZWFm ZWE3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxlZHVtYXpl dEBnb29nbGUuY29tPgpEYXRlOiBTdW4sIDUgTWFyIDIwMTcgMTA6NTI6MTYgLTA4MDAKU3ViamVj dDogW1BBVENIIDAyNS8xMTJdIGRjY3A6IGZpeCB1c2UtYWZ0ZXItZnJlZSBpbiBkY2NwX2ZlYXRf YWN0aXZhdGVfdmFsdWVzCgpbIFVwc3RyZWFtIGNvbW1pdCA2MmY4ZjRkOTA2NmMxYzZmMjQ3NDg0 NWQxY2E3ZTI4OTFmMmFlM2ZkIF0KCkRtaXRyeSByZXBvcnRlZCBjcmFzaGVzIGluIERDQ1Agc3Rh Y2sgWzFdCgpQcm9ibGVtIGhlcmUgaXMgdGhhdCB3aGVuIEkgZ290IHJpZCBvZiBsaXN0ZW5lciBz cGlubG9jaywgSSBtaXNzZWQgdGhlCmZhY3QgdGhhdCBEQ0NQIHN0b3JlcyBhIGNvbXBsZXggc3Rh dGUgaW4gc3RydWN0IGRjY3BfcmVxdWVzdF9zb2NrLAp3aGlsZSBUQ1AgZG9lcyBub3QuCgpTaW5j ZSBtdWx0aXBsZSBjcHVzIGNvdWxkIGFjY2VzcyBpdCBhdCB0aGUgc2FtZSB0aW1lLCB3ZSBuZWVk IHRvIGFkZApwcm90ZWN0aW9uLgoKWzFdCkJVRzogS0FTQU46IHVzZS1hZnRlci1mcmVlIGluIGRj Y3BfZmVhdF9hY3RpdmF0ZV92YWx1ZXMrMHg5NjcvMHhhYjAKbmV0L2RjY3AvZmVhdC5jOjE1NDEg YXQgYWRkciBmZmZmODgwMDM3MTNiZTY4ClJlYWQgb2Ygc2l6ZSA4IGJ5IHRhc2sgc3l6LWV4ZWN1 dG9yMi84NDU3CkNQVTogMiBQSUQ6IDg0NTcgQ29tbTogc3l6LWV4ZWN1dG9yMiBOb3QgdGFpbnRl ZCA0LjEwLjAtcmM3KyAjMTI3CkhhcmR3YXJlIG5hbWU6IFFFTVUgU3RhbmRhcmQgUEMgKGk0NDBG WCArIFBJSVgsIDE5OTYpLCBCSU9TIEJvY2hzIDAxLzAxLzIwMTEKQ2FsbCBUcmFjZToKIDxJUlE+ CiBfX2R1bXBfc3RhY2sgbGliL2R1bXBfc3RhY2suYzoxNSBbaW5saW5lXQogZHVtcF9zdGFjaysw eDI5Mi8weDM5OCBsaWIvZHVtcF9zdGFjay5jOjUxCiBrYXNhbl9vYmplY3RfZXJyKzB4MWMvMHg3 MCBtbS9rYXNhbi9yZXBvcnQuYzoxNjIKIHByaW50X2FkZHJlc3NfZGVzY3JpcHRpb24gbW0va2Fz YW4vcmVwb3J0LmM6MjAwIFtpbmxpbmVdCiBrYXNhbl9yZXBvcnRfZXJyb3IgbW0va2FzYW4vcmVw b3J0LmM6Mjg5IFtpbmxpbmVdCiBrYXNhbl9yZXBvcnQucGFydC4xKzB4MjBlLzB4NGUwIG1tL2th c2FuL3JlcG9ydC5jOjMxMQoga2FzYW5fcmVwb3J0IG1tL2thc2FuL3JlcG9ydC5jOjMzMiBbaW5s aW5lXQogX19hc2FuX3JlcG9ydF9sb2FkOF9ub2Fib3J0KzB4MjkvMHgzMCBtbS9rYXNhbi9yZXBv cnQuYzozMzIKIGRjY3BfZmVhdF9hY3RpdmF0ZV92YWx1ZXMrMHg5NjcvMHhhYjAgbmV0L2RjY3Av ZmVhdC5jOjE1NDEKIGRjY3BfY3JlYXRlX29wZW5yZXFfY2hpbGQrMHg0NjQvMHg2MTAgbmV0L2Rj Y3AvbWluaXNvY2tzLmM6MTIxCiBkY2NwX3Y2X3JlcXVlc3RfcmVjdl9zb2NrKzB4MWY2LzB4MTk2 MCBuZXQvZGNjcC9pcHY2LmM6NDU3CiBkY2NwX2NoZWNrX3JlcSsweDMzNS8weDVhMCBuZXQvZGNj cC9taW5pc29ja3MuYzoxODYKIGRjY3BfdjZfcmN2KzB4NjllLzB4MWQwMCBuZXQvZGNjcC9pcHY2 LmM6NzExCiBpcDZfaW5wdXRfZmluaXNoKzB4NDZkLzB4MTdhMCBuZXQvaXB2Ni9pcDZfaW5wdXQu YzoyNzkKIE5GX0hPT0sgaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIuaDoyNTcgW2lubGluZV0KIGlw Nl9pbnB1dCsweGRiLzB4NTkwIG5ldC9pcHY2L2lwNl9pbnB1dC5jOjMyMgogZHN0X2lucHV0IGlu Y2x1ZGUvbmV0L2RzdC5oOjUwNyBbaW5saW5lXQogaXA2X3Jjdl9maW5pc2grMHgyODkvMHg4OTAg bmV0L2lwdjYvaXA2X2lucHV0LmM6NjkKIE5GX0hPT0sgaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIu aDoyNTcgW2lubGluZV0KIGlwdjZfcmN2KzB4MTJlYy8weDIzZDAgbmV0L2lwdjYvaXA2X2lucHV0 LmM6MjAzCiBfX25ldGlmX3JlY2VpdmVfc2tiX2NvcmUrMHgxYWU1LzB4MzQwMCBuZXQvY29yZS9k ZXYuYzo0MTkwCiBfX25ldGlmX3JlY2VpdmVfc2tiKzB4MmEvMHgxNzAgbmV0L2NvcmUvZGV2LmM6 NDIyOAogcHJvY2Vzc19iYWNrbG9nKzB4ZTUvMHg2YzAgbmV0L2NvcmUvZGV2LmM6NDgzOQogbmFw aV9wb2xsIG5ldC9jb3JlL2Rldi5jOjUyMDIgW2lubGluZV0KIG5ldF9yeF9hY3Rpb24rMHhlNzAv MHgxOTAwIG5ldC9jb3JlL2Rldi5jOjUyNjcKIF9fZG9fc29mdGlycSsweDJmYi8weGI3ZCBrZXJu ZWwvc29mdGlycS5jOjI4NAogZG9fc29mdGlycV9vd25fc3RhY2srMHgxYy8weDMwIGFyY2gveDg2 L2VudHJ5L2VudHJ5XzY0LlM6OTAyCiA8L0lSUT4KIGRvX3NvZnRpcnEucGFydC4xNysweDFlOC8w eDIzMCBrZXJuZWwvc29mdGlycS5jOjMyOAogZG9fc29mdGlycSBrZXJuZWwvc29mdGlycS5jOjE3 NiBbaW5saW5lXQogX19sb2NhbF9iaF9lbmFibGVfaXArMHgxZjIvMHgyMDAga2VybmVsL3NvZnRp cnEuYzoxODEKIGxvY2FsX2JoX2VuYWJsZSBpbmNsdWRlL2xpbnV4L2JvdHRvbV9oYWxmLmg6MzEg W2lubGluZV0KIHJjdV9yZWFkX3VubG9ja19iaCBpbmNsdWRlL2xpbnV4L3JjdXBkYXRlLmg6OTcx IFtpbmxpbmVdCiBpcDZfZmluaXNoX291dHB1dDIrMHhiYjAvMHgyM2QwIG5ldC9pcHY2L2lwNl9v dXRwdXQuYzoxMjMKIGlwNl9maW5pc2hfb3V0cHV0KzB4MzAyLzB4OTYwIG5ldC9pcHY2L2lwNl9v dXRwdXQuYzoxNDgKIE5GX0hPT0tfQ09ORCBpbmNsdWRlL2xpbnV4L25ldGZpbHRlci5oOjI0NiBb aW5saW5lXQogaXA2X291dHB1dCsweDFjYi8weDhkMCBuZXQvaXB2Ni9pcDZfb3V0cHV0LmM6MTYy CiBpcDZfeG1pdCsweGNkZi8weDIwZDAgaW5jbHVkZS9uZXQvZHN0Lmg6NTAxCiBpbmV0Nl9jc2tf eG1pdCsweDMyMC8weDVmMCBuZXQvaXB2Ni9pbmV0Nl9jb25uZWN0aW9uX3NvY2suYzoxNzkKIGRj Y3BfdHJhbnNtaXRfc2tiKzB4YjA5LzB4MTEyMCBuZXQvZGNjcC9vdXRwdXQuYzoxNDEKIGRjY3Bf eG1pdF9wYWNrZXQrMHgyMTUvMHg3NjAgbmV0L2RjY3Avb3V0cHV0LmM6MjgwCiBkY2NwX3dyaXRl X3htaXQrMHgxNjgvMHgxZDAgbmV0L2RjY3Avb3V0cHV0LmM6MzYyCiBkY2NwX3NlbmRtc2crMHg3 OWMvMHhiMTAgbmV0L2RjY3AvcHJvdG8uYzo3OTYKIGluZXRfc2VuZG1zZysweDE2NC8weDViMCBu ZXQvaXB2NC9hZl9pbmV0LmM6NzQ0CiBzb2NrX3NlbmRtc2dfbm9zZWMgbmV0L3NvY2tldC5jOjYz NSBbaW5saW5lXQogc29ja19zZW5kbXNnKzB4Y2EvMHgxMTAgbmV0L3NvY2tldC5jOjY0NQogU1lT Q19zZW5kdG8rMHg2NjAvMHg4MTAgbmV0L3NvY2tldC5jOjE2ODcKIFN5U19zZW5kdG8rMHg0MC8w eDUwIG5ldC9zb2NrZXQuYzoxNjU1CiBlbnRyeV9TWVNDQUxMXzY0X2Zhc3RwYXRoKzB4MWYvMHhj MgpSSVA6IDAwMzM6MHg0NDU4YjkKUlNQOiAwMDJiOjAwMDA3ZjhjZWI3N2JiNTggRUZMQUdTOiAw MDAwMDI4MiBPUklHX1JBWDogMDAwMDAwMDAwMDAwMDAyYwpSQVg6IGZmZmZmZmZmZmZmZmZmZGEg UkJYOiAwMDAwMDAwMDAwMDAwMDE3IFJDWDogMDAwMDAwMDAwMDQ0NThiOQpSRFg6IDAwMDAwMDAw MDAwMDAwMjMgUlNJOiAwMDAwMDAwMDIwZTYwMDAwIFJESTogMDAwMDAwMDAwMDAwMDAxNwpSQlA6 IDAwMDAwMDAwMDA2ZTFiOTAgUjA4OiAwMDAwMDAwMDIwMGY5ZmUxIFIwOTogMDAwMDAwMDAwMDAw MDAyMApSMTA6IDAwMDAwMDAwMDAwMDgwMTAgUjExOiAwMDAwMDAwMDAwMDAwMjgyIFIxMjogMDAw MDAwMDAwMDcwODBhOApSMTM6IDAwMDAwMDAwMDAwMDAwMDAgUjE0OiAwMDAwN2Y4Y2ViNzdjOWMw IFIxNTogMDAwMDdmOGNlYjc3YzcwMApPYmplY3QgYXQgZmZmZjg4MDAzNzEzYmU1MCwgaW4gY2Fj aGUga21hbGxvYy02NCBzaXplOiA2NApBbGxvY2F0ZWQ6ClBJRCA9IDg0NDYKIHNhdmVfc3RhY2tf dHJhY2UrMHgxNi8weDIwIGFyY2gveDg2L2tlcm5lbC9zdGFja3RyYWNlLmM6NTcKIHNhdmVfc3Rh Y2srMHg0My8weGQwIG1tL2thc2FuL2thc2FuLmM6NTAyCiBzZXRfdHJhY2sgbW0va2FzYW4va2Fz YW4uYzo1MTQgW2lubGluZV0KIGthc2FuX2ttYWxsb2MrMHhhZC8weGUwIG1tL2thc2FuL2thc2Fu LmM6NjA1CiBrbWVtX2NhY2hlX2FsbG9jX3RyYWNlKzB4ODIvMHgyNzAgbW0vc2x1Yi5jOjI3MzgK IGttYWxsb2MgaW5jbHVkZS9saW51eC9zbGFiLmg6NDkwIFtpbmxpbmVdCiBkY2NwX2ZlYXRfZW50 cnlfbmV3KzB4MjE0LzB4NDEwIG5ldC9kY2NwL2ZlYXQuYzo0NjcKIGRjY3BfZmVhdF9wdXNoX2No YW5nZSsweDM4LzB4MjIwIG5ldC9kY2NwL2ZlYXQuYzo0ODcKIF9fZmVhdF9yZWdpc3Rlcl9zcCsw eDIyMy8weDJmMCBuZXQvZGNjcC9mZWF0LmM6NzQxCiBkY2NwX2ZlYXRfcHJvcGFnYXRlX2NjaWQr MHgyMmIvMHgyYjAgbmV0L2RjY3AvZmVhdC5jOjk0OQogZGNjcF9mZWF0X3NlcnZlcl9jY2lkX2Rl cGVuZGVuY2llcysweDFiMy8weDI1MCBuZXQvZGNjcC9mZWF0LmM6MTAxMgogZGNjcF9tYWtlX3Jl c3BvbnNlKzB4MWYxLzB4YzkwIG5ldC9kY2NwL291dHB1dC5jOjQyMwogZGNjcF92Nl9zZW5kX3Jl c3BvbnNlKzB4NGVjLzB4YzIwIG5ldC9kY2NwL2lwdjYuYzoyMTcKIGRjY3BfdjZfY29ubl9yZXF1 ZXN0KzB4YWJhLzB4MTFiMCBuZXQvZGNjcC9pcHY2LmM6Mzc3CiBkY2NwX3Jjdl9zdGF0ZV9wcm9j ZXNzKzB4NTFlLzB4MTY1MCBuZXQvZGNjcC9pbnB1dC5jOjYwNgogZGNjcF92Nl9kb19yY3YrMHgy MTMvMHgzNTAgbmV0L2RjY3AvaXB2Ni5jOjYzMgogc2tfYmFja2xvZ19yY3YgaW5jbHVkZS9uZXQv c29jay5oOjg5MyBbaW5saW5lXQogX19za19yZWNlaXZlX3NrYisweDM2Zi8weGNjMCBuZXQvY29y ZS9zb2NrLmM6NDc5CiBkY2NwX3Y2X3JjdisweGJhNS8weDFkMDAgbmV0L2RjY3AvaXB2Ni5jOjc0 MgogaXA2X2lucHV0X2ZpbmlzaCsweDQ2ZC8weDE3YTAgbmV0L2lwdjYvaXA2X2lucHV0LmM6Mjc5 CiBORl9IT09LIGluY2x1ZGUvbGludXgvbmV0ZmlsdGVyLmg6MjU3IFtpbmxpbmVdCiBpcDZfaW5w dXQrMHhkYi8weDU5MCBuZXQvaXB2Ni9pcDZfaW5wdXQuYzozMjIKIGRzdF9pbnB1dCBpbmNsdWRl L25ldC9kc3QuaDo1MDcgW2lubGluZV0KIGlwNl9yY3ZfZmluaXNoKzB4Mjg5LzB4ODkwIG5ldC9p cHY2L2lwNl9pbnB1dC5jOjY5CiBORl9IT09LIGluY2x1ZGUvbGludXgvbmV0ZmlsdGVyLmg6MjU3 IFtpbmxpbmVdCiBpcHY2X3JjdisweDEyZWMvMHgyM2QwIG5ldC9pcHY2L2lwNl9pbnB1dC5jOjIw MwogX19uZXRpZl9yZWNlaXZlX3NrYl9jb3JlKzB4MWFlNS8weDM0MDAgbmV0L2NvcmUvZGV2LmM6 NDE5MAogX19uZXRpZl9yZWNlaXZlX3NrYisweDJhLzB4MTcwIG5ldC9jb3JlL2Rldi5jOjQyMjgK IHByb2Nlc3NfYmFja2xvZysweGU1LzB4NmMwIG5ldC9jb3JlL2Rldi5jOjQ4MzkKIG5hcGlfcG9s bCBuZXQvY29yZS9kZXYuYzo1MjAyIFtpbmxpbmVdCiBuZXRfcnhfYWN0aW9uKzB4ZTcwLzB4MTkw MCBuZXQvY29yZS9kZXYuYzo1MjY3CiBfX2RvX3NvZnRpcnErMHgyZmIvMHhiN2Qga2VybmVsL3Nv ZnRpcnEuYzoyODQKRnJlZWQ6ClBJRCA9IDE1CiBzYXZlX3N0YWNrX3RyYWNlKzB4MTYvMHgyMCBh cmNoL3g4Ni9rZXJuZWwvc3RhY2t0cmFjZS5jOjU3CiBzYXZlX3N0YWNrKzB4NDMvMHhkMCBtbS9r YXNhbi9rYXNhbi5jOjUwMgogc2V0X3RyYWNrIG1tL2thc2FuL2thc2FuLmM6NTE0IFtpbmxpbmVd CiBrYXNhbl9zbGFiX2ZyZWUrMHg3My8weGMwIG1tL2thc2FuL2thc2FuLmM6NTc4CiBzbGFiX2Zy ZWVfaG9vayBtbS9zbHViLmM6MTM1NSBbaW5saW5lXQogc2xhYl9mcmVlX2ZyZWVsaXN0X2hvb2sg bW0vc2x1Yi5jOjEzNzcgW2lubGluZV0KIHNsYWJfZnJlZSBtbS9zbHViLmM6Mjk1NCBbaW5saW5l XQoga2ZyZWUrMHhlOC8weDJiMCBtbS9zbHViLmM6Mzg3NAogZGNjcF9mZWF0X2VudHJ5X2Rlc3Ry dWN0b3IucGFydC40KzB4NDgvMHg2MCBuZXQvZGNjcC9mZWF0LmM6NDE4CiBkY2NwX2ZlYXRfZW50 cnlfZGVzdHJ1Y3RvciBuZXQvZGNjcC9mZWF0LmM6NDE2IFtpbmxpbmVdCiBkY2NwX2ZlYXRfbGlz dF9wb3AgbmV0L2RjY3AvZmVhdC5jOjU0MSBbaW5saW5lXQogZGNjcF9mZWF0X2FjdGl2YXRlX3Zh bHVlcysweDU3Zi8weGFiMCBuZXQvZGNjcC9mZWF0LmM6MTU0MwogZGNjcF9jcmVhdGVfb3BlbnJl cV9jaGlsZCsweDQ2NC8weDYxMCBuZXQvZGNjcC9taW5pc29ja3MuYzoxMjEKIGRjY3BfdjZfcmVx dWVzdF9yZWN2X3NvY2srMHgxZjYvMHgxOTYwIG5ldC9kY2NwL2lwdjYuYzo0NTcKIGRjY3BfY2hl Y2tfcmVxKzB4MzM1LzB4NWEwIG5ldC9kY2NwL21pbmlzb2Nrcy5jOjE4NgogZGNjcF92Nl9yY3Yr MHg2OWUvMHgxZDAwIG5ldC9kY2NwL2lwdjYuYzo3MTEKIGlwNl9pbnB1dF9maW5pc2grMHg0NmQv MHgxN2EwIG5ldC9pcHY2L2lwNl9pbnB1dC5jOjI3OQogTkZfSE9PSyBpbmNsdWRlL2xpbnV4L25l dGZpbHRlci5oOjI1NyBbaW5saW5lXQogaXA2X2lucHV0KzB4ZGIvMHg1OTAgbmV0L2lwdjYvaXA2 X2lucHV0LmM6MzIyCiBkc3RfaW5wdXQgaW5jbHVkZS9uZXQvZHN0Lmg6NTA3IFtpbmxpbmVdCiBp cDZfcmN2X2ZpbmlzaCsweDI4OS8weDg5MCBuZXQvaXB2Ni9pcDZfaW5wdXQuYzo2OQogTkZfSE9P SyBpbmNsdWRlL2xpbnV4L25ldGZpbHRlci5oOjI1NyBbaW5saW5lXQogaXB2Nl9yY3YrMHgxMmVj LzB4MjNkMCBuZXQvaXB2Ni9pcDZfaW5wdXQuYzoyMDMKIF9fbmV0aWZfcmVjZWl2ZV9za2JfY29y ZSsweDFhZTUvMHgzNDAwIG5ldC9jb3JlL2Rldi5jOjQxOTAKIF9fbmV0aWZfcmVjZWl2ZV9za2Ir MHgyYS8weDE3MCBuZXQvY29yZS9kZXYuYzo0MjI4CiBwcm9jZXNzX2JhY2tsb2crMHhlNS8weDZj MCBuZXQvY29yZS9kZXYuYzo0ODM5CiBuYXBpX3BvbGwgbmV0L2NvcmUvZGV2LmM6NTIwMiBbaW5s aW5lXQogbmV0X3J4X2FjdGlvbisweGU3MC8weDE5MDAgbmV0L2NvcmUvZGV2LmM6NTI2NwogX19k b19zb2Z0aXJxKzB4MmZiLzB4YjdkIGtlcm5lbC9zb2Z0aXJxLmM6Mjg0Ck1lbW9yeSBzdGF0ZSBh cm91bmQgdGhlIGJ1Z2d5IGFkZHJlc3M6CiBmZmZmODgwMDM3MTNiZDAwOiBmYyBmYyBmYyBmYyBm YyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYyBmYwogZmZmZjg4MDAzNzEzYmQ4MDogZmMg ZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMgZmMKPmZmZmY4ODAwMzcx M2JlMDA6IGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZjIGZiIGZiIGZiIGZiIGZiIGZiCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CgpGaXhlczogMDc5MDk2ZjEwM2ZhICgidGNwL2RjY3A6IGluc3RhbGwgc3luX3JlY3YgcmVxdWVz dHMgaW50byBlaGFzaCB0YWJsZSIpClNpZ25lZC1vZmYtYnk6IEVyaWMgRHVtYXpldCA8ZWR1bWF6 ZXRAZ29vZ2xlLmNvbT4KUmVwb3J0ZWQtYnk6IERtaXRyeSBWeXVrb3YgPGR2eXVrb3ZAZ29vZ2xl LmNvbT4KVGVzdGVkLWJ5OiBEbWl0cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+ClNpZ25l ZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9m Zi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0t CiBpbmNsdWRlL2xpbnV4L2RjY3AuaCB8ICAxICsKIG5ldC9kY2NwL21pbmlzb2Nrcy5jIHwgMjQg KysrKysrKysrKysrKysrKy0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMo KyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kY2NwLmggYi9p bmNsdWRlL2xpbnV4L2RjY3AuaAppbmRleCA2MWQwNDJiLi42ODQ0OTI5IDEwMDY0NAotLS0gYS9p bmNsdWRlL2xpbnV4L2RjY3AuaAorKysgYi9pbmNsdWRlL2xpbnV4L2RjY3AuaApAQCAtMTYzLDYg KzE2Myw3IEBAIHN0cnVjdCBkY2NwX3JlcXVlc3Rfc29jayB7CiAJX191NjQJCQkgZHJlcV9pc3I7 CiAJX191NjQJCQkgZHJlcV9nc3I7CiAJX19iZTMyCQkJIGRyZXFfc2VydmljZTsKKwlzcGlubG9j a190CQkgZHJlcV9sb2NrOwogCXN0cnVjdCBsaXN0X2hlYWQJIGRyZXFfZmVhdG5lZzsKIAlfX3Uz MgkJCSBkcmVxX3RpbWVzdGFtcF9lY2hvOwogCV9fdTMyCQkJIGRyZXFfdGltZXN0YW1wX3RpbWU7 CmRpZmYgLS1naXQgYS9uZXQvZGNjcC9taW5pc29ja3MuYyBiL25ldC9kY2NwL21pbmlzb2Nrcy5j CmluZGV4IGQyMGQ5NDguLjM5ZTdlMmIgMTAwNjQ0Ci0tLSBhL25ldC9kY2NwL21pbmlzb2Nrcy5j CisrKyBiL25ldC9kY2NwL21pbmlzb2Nrcy5jCkBAIC0xNDYsNiArMTQ2LDEzIEBAIHN0cnVjdCBz b2NrICpkY2NwX2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2Is CiAJc3RydWN0IGRjY3BfcmVxdWVzdF9zb2NrICpkcmVxID0gZGNjcF9yc2socmVxKTsKIAlib29s IG93bl9yZXE7CiAKKwkvKiBUQ1AvRENDUCBsaXN0ZW5lcnMgYmVjYW1lIGxvY2tsZXNzLgorCSAq IERDQ1Agc3RvcmVzIGNvbXBsZXggc3RhdGUgaW4gaXRzIHJlcXVlc3Rfc29jaywgc28gd2UgbmVl ZAorCSAqIGEgcHJvdGVjdGlvbiBmb3IgdGhlbSwgbm93IHRoaXMgY29kZSBydW5zIHdpdGhvdXQg YmVpbmcgcHJvdGVjdGVkCisJICogYnkgdGhlIHBhcmVudCAobGlzdGVuZXIpIGxvY2suCisJICov CisJc3Bpbl9sb2NrX2JoKCZkcmVxLT5kcmVxX2xvY2spOworCiAJLyogQ2hlY2sgZm9yIHJldHJh bnNtaXR0ZWQgUkVRVUVTVCAqLwogCWlmIChkY2NwX2hkcihza2IpLT5kY2NwaF90eXBlID09IERD Q1BfUEtUX1JFUVVFU1QpIHsKIApAQCAtMTYwLDcgKzE2Nyw3IEBAIHN0cnVjdCBzb2NrICpkY2Nw X2NoZWNrX3JlcShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IsCiAJCQlpbmV0 X3J0eF9zeW5fYWNrKHNrLCByZXEpOwogCQl9CiAJCS8qIE5ldHdvcmsgRHVwbGljYXRlLCBkaXNj YXJkIHBhY2tldCAqLwotCQlyZXR1cm4gTlVMTDsKKwkJZ290byBvdXQ7CiAJfQogCiAJRENDUF9T S0JfQ0Ioc2tiKS0+ZGNjcGRfcmVzZXRfY29kZSA9IERDQ1BfUkVTRVRfQ09ERV9QQUNLRVRfRVJS T1I7CkBAIC0xODYsMjAgKzE5MywyMCBAQCBzdHJ1Y3Qgc29jayAqZGNjcF9jaGVja19yZXEoc3Ry dWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiAJY2hpbGQgPSBpbmV0X2Nzayhz ayktPmljc2tfYWZfb3BzLT5zeW5fcmVjdl9zb2NrKHNrLCBza2IsIHJlcSwgTlVMTCwKIAkJCQkJ CQkgcmVxLCAmb3duX3JlcSk7Ci0JaWYgKCFjaGlsZCkKLQkJZ290byBsaXN0ZW5fb3ZlcmZsb3c7 Ci0KLQlyZXR1cm4gaW5ldF9jc2tfY29tcGxldGVfaGFzaGRhbmNlKHNrLCBjaGlsZCwgcmVxLCBv d25fcmVxKTsKKwlpZiAoY2hpbGQpIHsKKwkJY2hpbGQgPSBpbmV0X2Nza19jb21wbGV0ZV9oYXNo ZGFuY2Uoc2ssIGNoaWxkLCByZXEsIG93bl9yZXEpOworCQlnb3RvIG91dDsKKwl9CiAKLWxpc3Rl bl9vdmVyZmxvdzoKLQlkY2NwX3ByX2RlYnVnKCJsaXN0ZW5fb3ZlcmZsb3chXG4iKTsKIAlEQ0NQ X1NLQl9DQihza2IpLT5kY2NwZF9yZXNldF9jb2RlID0gRENDUF9SRVNFVF9DT0RFX1RPT19CVVNZ OwogZHJvcDoKIAlpZiAoZGNjcF9oZHIoc2tiKS0+ZGNjcGhfdHlwZSAhPSBEQ0NQX1BLVF9SRVNF VCkKIAkJcmVxLT5yc2tfb3BzLT5zZW5kX3Jlc2V0KHNrLCBza2IpOwogCiAJaW5ldF9jc2tfcmVx c2tfcXVldWVfZHJvcChzaywgcmVxKTsKLQlyZXR1cm4gTlVMTDsKK291dDoKKwlzcGluX3VubG9j a19iaCgmZHJlcS0+ZHJlcV9sb2NrKTsKKwlyZXR1cm4gY2hpbGQ7CiB9CiAKIEVYUE9SVF9TWU1C T0xfR1BMKGRjY3BfY2hlY2tfcmVxKTsKQEAgLTI1MCw2ICsyNTcsNyBAQCBpbnQgZGNjcF9yZXFz a19pbml0KHN0cnVjdCByZXF1ZXN0X3NvY2sgKnJlcSwKIHsKIAlzdHJ1Y3QgZGNjcF9yZXF1ZXN0 X3NvY2sgKmRyZXEgPSBkY2NwX3JzayhyZXEpOwogCisJc3Bpbl9sb2NrX2luaXQoJmRyZXEtPmRy ZXFfbG9jayk7CiAJaW5ldF9yc2socmVxKS0+aXJfcm10X3BvcnQgPSBkY2NwX2hkcihza2IpLT5k Y2NwaF9zcG9ydDsKIAlpbmV0X3JzayhyZXEpLT5pcl9udW0JICAgPSBudG9ocyhkY2NwX2hkcihz a2IpLT5kY2NwaF9kcG9ydCk7CiAJaW5ldF9yc2socmVxKS0+YWNrZWQJICAgPSAwOwotLSAKMi4x LjAKCgpGcm9tIGRiNmU3Nzk2MTg2YThkOWE0MWU5ZDE0YjRhODI0YzljYjgwYWFhZjQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IERhdmlkIEFoZXJuIDxkc2FAY3VtdWx1c25ldHdvcmtz LmNvbT4KRGF0ZTogTW9uLCA2IE1hciAyMDE3IDA4OjUzOjA0IC0wODAwClN1YmplY3Q6IFtQQVRD SCAwMjYvMTEyXSB2cmY6IEZpeCB1c2UtYWZ0ZXItZnJlZSBpbiB2cmZfeG1pdAoKWyBVcHN0cmVh bSBjb21taXQgZjc4ODdkNDBlNTQxZjc0NDAyZGYwNjg0YTE0NjNjMGEwYmI2OGM2OCBdCgpLQVNB TiBkZXRlY3RlZCBhIHVzZS1hZnRlci1mcmVlOgoKWyAgMjY5LjQ2NzA2N10gQlVHOiBLQVNBTjog dXNlLWFmdGVyLWZyZWUgaW4gdnJmX3htaXQrMHg3ZjEvMHg4MjcgW3ZyZl0gYXQgYWRkciBmZmZm ODgwMDM1MGEyMWMwClsgIDI2OS40NjcwNjddIFJlYWQgb2Ygc2l6ZSA0IGJ5IHRhc2sgc3NoLzE4 NzkKWyAgMjY5LjQ2NzA2N10gQ1BVOiAxIFBJRDogMTg3OSBDb21tOiBzc2ggTm90IHRhaW50ZWQg NC4xMC4wKyAjMjQ5ClsgIDI2OS40NjcwNjddIEhhcmR3YXJlIG5hbWU6IFFFTVUgU3RhbmRhcmQg UEMgKGk0NDBGWCArIFBJSVgsIDE5OTYpLCBCSU9TIDEuNy41LTIwMTQwNTMxXzA4MzAzMC1nYW5k YWxmIDA0LzAxLzIwMTQKWyAgMjY5LjQ2NzA2N10gQ2FsbCBUcmFjZToKWyAgMjY5LjQ2NzA2N10g IGR1bXBfc3RhY2srMHg4MS8weGI2ClsgIDI2OS40NjcwNjddICBrYXNhbl9vYmplY3RfZXJyKzB4 MjEvMHg3OApbICAyNjkuNDY3MDY3XSAga2FzYW5fcmVwb3J0KzB4MmY3LzB4NDUwClsgIDI2OS40 NjcwNjddICA/IHZyZl94bWl0KzB4N2YxLzB4ODI3IFt2cmZdClsgIDI2OS40NjcwNjddICA/IGlw X291dHB1dCsweGE0LzB4ZGIKWyAgMjY5LjQ2NzA2N10gIF9fYXNhbl9sb2FkNCsweDZiLzB4NmQK WyAgMjY5LjQ2NzA2N10gIHZyZl94bWl0KzB4N2YxLzB4ODI3IFt2cmZdCi4uLgoKV2hpY2ggY29y cmVzcG9uZHMgdG8gdGhlIHNrYiBhY2Nlc3MgYWZ0ZXIgeG1pdCBoYW5kbGluZy4gRml4IGJ5IHNh dmluZwpza2ItPmxlbiBhbmQgdXNpbmcgdGhlIHNhdmVkIHZhbHVlIHRvIHVwZGF0ZSBzdGF0cy4K CkZpeGVzOiAxOTMxMjVkYmQ4ZWIyICgibmV0OiBJbnRyb2R1Y2UgVlJGIGRldmljZSBkcml2ZXIi KQpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBBaGVybiA8ZHNhQGN1bXVsdXNuZXR3b3Jrcy5jb20+ClNp Z25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVk LW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4K LS0tCiBkcml2ZXJzL25ldC92cmYuYyB8IDMgKystCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnJmLmMgYi9k cml2ZXJzL25ldC92cmYuYwppbmRleCA5NWNmMWQ4Li5iYzc0NGFjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL25ldC92cmYuYworKysgYi9kcml2ZXJzL25ldC92cmYuYwpAQCAtMzQ2LDYgKzM0Niw3IEBA IHN0YXRpYyBuZXRkZXZfdHhfdCBpc19pcF90eF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBz dHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCiBzdGF0aWMgbmV0ZGV2X3R4X3QgdnJmX3htaXQoc3Ry dWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKKwlpbnQgbGVuID0g c2tiLT5sZW47CiAJbmV0ZGV2X3R4X3QgcmV0ID0gaXNfaXBfdHhfZnJhbWUoc2tiLCBkZXYpOwog CiAJaWYgKGxpa2VseShyZXQgPT0gTkVUX1hNSVRfU1VDQ0VTUyB8fCByZXQgPT0gTkVUX1hNSVRf Q04pKSB7CkBAIC0zNTMsNyArMzU0LDcgQEAgc3RhdGljIG5ldGRldl90eF90IHZyZl94bWl0KHN0 cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIAkJdTY0X3N0YXRz X3VwZGF0ZV9iZWdpbigmZHN0YXRzLT5zeW5jcCk7CiAJCWRzdGF0cy0+dHhfcGt0cysrOwotCQlk c3RhdHMtPnR4X2J5dGVzICs9IHNrYi0+bGVuOworCQlkc3RhdHMtPnR4X2J5dGVzICs9IGxlbjsK IAkJdTY0X3N0YXRzX3VwZGF0ZV9lbmQoJmRzdGF0cy0+c3luY3ApOwogCX0gZWxzZSB7CiAJCXRo aXNfY3B1X2luYyhkZXYtPmRzdGF0cy0+dHhfZHJwcyk7Ci0tIAoyLjEuMAoKCkZyb20gYjA3ZWVk OGY3MTE5ZDQzY2JmZTRkMmQ2NjI0MWJkMDQwOTllNjU4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogUGFvbG8gQWJlbmkgPHBhYmVuaUByZWRoYXQuY29tPgpEYXRlOiBUdWUsIDcgTWFy IDIwMTcgMTg6MzM6MzEgKzAxMDAKU3ViamVjdDogW1BBVENIIDAyNy8xMTJdIG5ldC90dW5uZWw6 IHNldCBpbm5lciBwcm90b2NvbCBpbiBuZXR3b3JrIGdybyBob29rcwoKWyBVcHN0cmVhbSBjb21t aXQgMjk0YWNmMWMwMWJhY2U1Y2VhNWQzMGI1MTA1MDQyMzhiZjVmN2MyNSBdCgpUaGUgZ3NvIGNv ZGUgb2Ygc2V2ZXJhbCB0dW5uZWxzIHR5cGUgKGdyZSBhbmQgdWRwIHR1bm5lbHMpCnRha2VzIGZv ciBncmFudGVkIHRoYXQgdGhlIHNrYi0+aW5uZXJfcHJvdG9jb2wgaXMgcHJvcGVybHkKaW5pdGlh bGl6ZWQgYW5kIGRyb3BzIHRoZSBwYWNrZXQgZWxzZXdoZXJlLgoKT24gdGhlIGZvcndhcmRpbmcg cGF0aCBubyBvbmUgaXMgaW5pdGlhbGl6aW5nIHN1Y2ggZmllbGQsCnNvIGdybyBlbmNhcHN1bGF0 ZWQgcGFja2V0cyBhcmUgZHJvcHBlZCBvbiBmb3J3YXJkLgoKU2luY2UgY29tbWl0IDM4NzIwMzUy NDEyYSAoImdyZTogVXNlIGlubmVyX3Byb3RvIHRvIG9idGFpbgppbm5lciBoZWFkZXIgcHJvdG9j b2wiKSwgdGhpcyBjYW4gYmUgcmVwcm9kdWNlZCB3aGVuIHRoZQplbmNhcHN1bGF0ZWQgcGFja2V0 cyB1c2UgZ3JlIGFzIHRoZSB0dW5uZWxpbmcgcHJvdG9jb2wuCgpUaGUgaXNzdWUgaGFwcGVucyBh bHNvIHdpdGggdnhsYW4gYW5kIGdlbmV2ZSB0dW5uZWxzIHNpbmNlCmNvbW1pdCA4YmNlNmQ3ZDBk MWUgKCJ1ZHA6IEdlbmVyYWxpemUgc2tiX3VkcF9zZWdtZW50IiksIGlmIHRoZQpmb3J3YXJkaW5n IGhvc3QncyBpbmdyZXNzIG5pYyBoYXMgaC93IG9mZmxvYWQgZm9yIHN1Y2ggdHVubmVsCmFuZCBh IHZ4bGFuL2dlbmV2ZSBkZXZpY2UgaXMgY29uZmlndXJlZCBvbiB0b3Agb2YgaXQsIHJlZ2FyZGxl c3MKb2YgdGhlIGNvbmZpZ3VyZWQgcGVlciBhZGRyZXNzIGFuZCB2bmkuCgpUbyBhZGRyZXNzIHRo ZSBpc3N1ZSwgdGhpcyBjaGFuZ2UgaW5pdGlhbGl6ZSB0aGUgaW5uZXJfcHJvdG9jb2wKZmllbGQg Zm9yIGVuY2Fwc3VsYXRlZCBwYWNrZXRzIGluIGJvdGggaXB2NCBhbmQgaXB2NiBncm8gY29tcGxl dGUKY2FsbGJhY2tzLgoKRml4ZXM6IDM4NzIwMzUyNDEyYSAoImdyZTogVXNlIGlubmVyX3Byb3Rv IHRvIG9idGFpbiBpbm5lciBoZWFkZXIgcHJvdG9jb2wiKQpGaXhlczogOGJjZTZkN2QwZDFlICgi dWRwOiBHZW5lcmFsaXplIHNrYl91ZHBfc2VnbWVudCIpClNpZ25lZC1vZmYtYnk6IFBhb2xvIEFi ZW5pIDxwYWJlbmlAcmVkaGF0LmNvbT4KQWNrZWQtYnk6IEFsZXhhbmRlciBEdXljayA8YWxleGFu ZGVyLmguZHV5Y2tAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRh dmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3Jl Z2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogbmV0L2lwdjQvYWZfaW5ldC5jICAgICB8IDQg KysrLQogbmV0L2lwdjYvaXA2X29mZmxvYWQuYyB8IDQgKysrLQogMiBmaWxlcyBjaGFuZ2VkLCA2 IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvYWZf aW5ldC5jIGIvbmV0L2lwdjQvYWZfaW5ldC5jCmluZGV4IDIxNTE0MzI0Li45NzFiOTQ3IDEwMDY0 NAotLS0gYS9uZXQvaXB2NC9hZl9pbmV0LmMKKysrIGIvbmV0L2lwdjQvYWZfaW5ldC5jCkBAIC0x NDYwLDggKzE0NjAsMTAgQEAgaW50IGluZXRfZ3JvX2NvbXBsZXRlKHN0cnVjdCBza19idWZmICpz a2IsIGludCBuaG9mZikKIAlpbnQgcHJvdG8gPSBpcGgtPnByb3RvY29sOwogCWludCBlcnIgPSAt RU5PU1lTOwogCi0JaWYgKHNrYi0+ZW5jYXBzdWxhdGlvbikKKwlpZiAoc2tiLT5lbmNhcHN1bGF0 aW9uKSB7CisJCXNrYl9zZXRfaW5uZXJfcHJvdG9jb2woc2tiLCBjcHVfdG9fYmUxNihFVEhfUF9J UCkpOwogCQlza2Jfc2V0X2lubmVyX25ldHdvcmtfaGVhZGVyKHNrYiwgbmhvZmYpOworCX0KIAog CWNzdW1fcmVwbGFjZTIoJmlwaC0+Y2hlY2ssIGlwaC0+dG90X2xlbiwgbmV3bGVuKTsKIAlpcGgt PnRvdF9sZW4gPSBuZXdsZW47CmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5jIGIv bmV0L2lwdjYvaXA2X29mZmxvYWQuYwppbmRleCBmYzdiNDAxLi4zM2IwNGVjIDEwMDY0NAotLS0g YS9uZXQvaXB2Ni9pcDZfb2ZmbG9hZC5jCisrKyBiL25ldC9pcHY2L2lwNl9vZmZsb2FkLmMKQEAg LTI5NCw4ICsyOTQsMTAgQEAgc3RhdGljIGludCBpcHY2X2dyb19jb21wbGV0ZShzdHJ1Y3Qgc2tf YnVmZiAqc2tiLCBpbnQgbmhvZmYpCiAJc3RydWN0IGlwdjZoZHIgKmlwaCA9IChzdHJ1Y3QgaXB2 NmhkciAqKShza2ItPmRhdGEgKyBuaG9mZik7CiAJaW50IGVyciA9IC1FTk9TWVM7CiAKLQlpZiAo c2tiLT5lbmNhcHN1bGF0aW9uKQorCWlmIChza2ItPmVuY2Fwc3VsYXRpb24pIHsKKwkJc2tiX3Nl dF9pbm5lcl9wcm90b2NvbChza2IsIGNwdV90b19iZTE2KEVUSF9QX0lQVjYpKTsKIAkJc2tiX3Nl dF9pbm5lcl9uZXR3b3JrX2hlYWRlcihza2IsIG5ob2ZmKTsKKwl9CiAKIAlpcGgtPnBheWxvYWRf bGVuID0gaHRvbnMoc2tiLT5sZW4gLSBuaG9mZiAtIHNpemVvZigqaXBoKSk7CiAKLS0gCjIuMS4w CgoKRnJvbSBjY2I2NWFkYzZjYTZmMWNmODBjYWU0NzRhNGI4YzhmNmU2YzM2MTY4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiRG1pdHJ5IFYuIExldmluIiA8bGR2QGFsdGxpbnV4Lm9y Zz4KRGF0ZTogVHVlLCA3IE1hciAyMDE3IDIzOjUwOjUwICswMzAwClN1YmplY3Q6IFtQQVRDSCAw MjgvMTEyXSB1YXBpOiBmaXggbGludXgvcGFja2V0X2RpYWcuaCB1c2Vyc3BhY2UgY29tcGlsYXRp b24KIGVycm9yCgpbIFVwc3RyZWFtIGNvbW1pdCA3NDVjYjdmOGE1ZGUwODA1Y2FkZTNkZTM5OTFi N2E5NTMxN2M3YzczIF0KClJlcGxhY2UgTUFYX0FERFJfTEVOIHdpdGggaXRzIG51bWVyaWMgdmFs dWUgdG8gZml4IHRoZSBmb2xsb3dpbmcKbGludXgvcGFja2V0X2RpYWcuaCB1c2Vyc3BhY2UgY29t cGlsYXRpb24gZXJyb3I6CgovdXNyL2luY2x1ZGUvbGludXgvcGFja2V0X2RpYWcuaDo2NzoxNzog ZXJyb3I6ICdNQVhfQUREUl9MRU4nIHVuZGVjbGFyZWQgaGVyZSAobm90IGluIGEgZnVuY3Rpb24p CiAgX191OCBwZG1jX2FkZHJbTUFYX0FERFJfTEVOXTsKClRoaXMgaXMgbm90IHRoZSBmaXJzdCBj YXNlIGluIHRoZSBVQVBJIHdoZXJlIHRoZSBudW1lcmljIHZhbHVlCm9mIE1BWF9BRERSX0xFTiBp cyB1c2VkIGluc3RlYWQgb2Ygc3ltYm9saWMgb25lLCB1YXBpL2xpbnV4L2lmX2xpbmsuaAphbHJl YWR5IGRvZXMgdGhlIHNhbWU6CgokIGdyZXAgTUFYX0FERFJfTEVOIGluY2x1ZGUvdWFwaS9saW51 eC9pZl9saW5rLmgKCV9fdTggbWFjWzMyXTsgLyogTUFYX0FERFJfTEVOICovCgpUaGVyZSBhcmUg bm8gVUFQSSBoZWFkZXJzIGJlc2lkZXMgdGhlc2UgdHdvIHRoYXQgdXNlIE1BWF9BRERSX0xFTi4K ClNpZ25lZC1vZmYtYnk6IERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KQWNrZWQt Ynk6IFBhdmVsIEVtZWx5YW5vdiA8eGVtdWxAdmlydHVvenpvLmNvbT4KU2lnbmVkLW9mZi1ieTog RGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgpTaWduZWQtb2ZmLWJ5OiBHcmVn IEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0KIGluY2x1ZGUv dWFwaS9saW51eC9wYWNrZXRfZGlhZy5oIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3Bh Y2tldF9kaWFnLmggYi9pbmNsdWRlL3VhcGkvbGludXgvcGFja2V0X2RpYWcuaAppbmRleCBkMDhj NjNmLi4wYzVkNWRkIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvcGFja2V0X2RpYWcu aAorKysgYi9pbmNsdWRlL3VhcGkvbGludXgvcGFja2V0X2RpYWcuaApAQCAtNjQsNyArNjQsNyBA QCBzdHJ1Y3QgcGFja2V0X2RpYWdfbWNsaXN0IHsKIAlfX3UzMglwZG1jX2NvdW50OwogCV9fdTE2 CXBkbWNfdHlwZTsKIAlfX3UxNglwZG1jX2FsZW47Ci0JX191OAlwZG1jX2FkZHJbTUFYX0FERFJf TEVOXTsKKwlfX3U4CXBkbWNfYWRkclszMl07IC8qIE1BWF9BRERSX0xFTiAqLwogfTsKIAogc3Ry dWN0IHBhY2tldF9kaWFnX3JpbmcgewotLSAKMi4xLjAKCgpGcm9tIDQ3YzhkYzQ3YzAwODBjODZj OWFiYTM2ZjU4ZjZmYjRhN2JmODRjMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEV0 aWVubmUgTm9zcyA8ZXRpZW5uZS5ub3NzQHdpZmlyc3QuZnI+CkRhdGU6IEZyaSwgMTAgTWFyIDIw MTcgMTY6NTU6MzIgKzAxMDAKU3ViamVjdDogW1BBVENIIDAyOS8xMTJdIGFjdF9jb25ubWFyazog YXZvaWQgY3Jhc2hpbmcgb24gbWFsZm9ybWVkIG5sYXR0cnMKIHdpdGggbnVsbCBwYXJtcwpNSU1F LVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29u dGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKWyBVcHN0cmVhbSBjb21taXQgNTI0OTFjNzYw N2M1NTI3MTM4MDk1ZWRmNDRjNTMxNjlkYzFkZGI4MiBdCgp0Y2ZfY29ubm1hcmtfaW5pdCBkb2Vz IG5vdCBjaGVjayBpbiBpdHMgY29uZmlndXJhdGlvbiBpZiBUQ0FfQ09OTk1BUktfUEFSTVMKaXMg c2V0LCByZXN1bHRpbmcgaW4gYSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2Ugd2hlbiB0cnlpbmcg dG8gYWNjZXNzIGl0LgoKWzUwMTA5OS4wNDMwMDddIEJVRzogdW5hYmxlIHRvIGhhbmRsZSBrZXJu ZWwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGF0IDAwMDAwMDAwMDAwMDAwMDQKWzUwMTA5OS4w NDMwMzldIElQOiBbPGZmZmZmZmZmYzEwYzYwZmI+XSB0Y2ZfY29ubm1hcmtfaW5pdCsweDhiLzB4 MTgwIFthY3RfY29ubm1hcmtdCi4uLgpbNTAxMDk5LjA0NDMzNF0gQ2FsbCBUcmFjZToKWzUwMTA5 OS4wNDQzNDVdICBbPGZmZmZmZmZmYTQ3MjcwZTg+XSA/IHRjZl9hY3Rpb25faW5pdF8xKzB4MTk4 LzB4MWIwCls1MDEwOTkuMDQ0MzYzXSAgWzxmZmZmZmZmZmE0NzI3MWIwPl0gPyB0Y2ZfYWN0aW9u X2luaXQrMHhiMC8weDEyMApbNTAxMDk5LjA0NDM4MF0gIFs8ZmZmZmZmZmZhNDcyNTBhND5dID8g dGNmX2V4dHNfdmFsaWRhdGUrMHhjNC8weDExMApbNTAxMDk5LjA0NDM5OF0gIFs8ZmZmZmZmZmZj MGY1ZmE5Nz5dID8gdTMyX3NldF9wYXJtcysweGE3LzB4MjcwIFtjbHNfdTMyXQpbNTAxMDk5LjA0 NDQxN10gIFs8ZmZmZmZmZmZjMGY2MGJmMD5dID8gdTMyX2NoYW5nZSsweDY4MC8weDg3YiBbY2xz X3UzMl0KWzUwMTA5OS4wNDQ0MzZdICBbPGZmZmZmZmZmYTQ3MjVkMWQ+XSA/IHRjX2N0bF90Zmls dGVyKzB4NGRkLzB4OGEwCls1MDEwOTkuMDQ0NDU0XSAgWzxmZmZmZmZmZmE0NGEyM2ExPl0gPyBz ZWN1cml0eV9jYXBhYmxlKzB4NDEvMHg2MApbNTAxMDk5LjA0NDQ3MV0gIFs8ZmZmZmZmZmZhNDcw Y2EwMT5dID8gcnRuZXRsaW5rX3Jjdl9tc2crMHhlMS8weDIyMApbNTAxMDk5LjA0NDQ5MF0gIFs8 ZmZmZmZmZmZhNDcwYzkyMD5dID8gcnRubF9uZXdsaW5rKzB4ODcwLzB4ODcwCls1MDEwOTkuMDQ0 NTA3XSAgWzxmZmZmZmZmZmE0NzJjYzYxPl0gPyBuZXRsaW5rX3Jjdl9za2IrMHhhMS8weGMwCls1 MDEwOTkuMDQ0NTI0XSAgWzxmZmZmZmZmZmE0NzA3M2Y0Pl0gPyBydG5ldGxpbmtfcmN2KzB4MjQv MHgzMApbNTAxMDk5LjA0NDU0MV0gIFs8ZmZmZmZmZmZhNDcyYzYzND5dID8gbmV0bGlua191bmlj YXN0KzB4MTg0LzB4MjMwCls1MDEwOTkuMDQ0NTU4XSAgWzxmZmZmZmZmZmE0NzJjOWQ4Pl0gPyBu ZXRsaW5rX3NlbmRtc2crMHgyZjgvMHgzYjAKWzUwMTA5OS4wNDQ1NzZdICBbPGZmZmZmZmZmYTQ2 ZDg4ODA+XSA/IHNvY2tfc2VuZG1zZysweDMwLzB4NDAKWzUwMTA5OS4wNDQ1OTJdICBbPGZmZmZm ZmZmYTQ2ZDhlMDM+XSA/IFNZU0Nfc2VuZHRvKzB4ZDMvMHgxNTAKWzUwMTA5OS4wNDQ2MDhdICBb PGZmZmZmZmZmYTQyNWZkYTE+XSA/IF9fZG9fcGFnZV9mYXVsdCsweDJkMS8weDUxMApbNTAxMDk5 LjA0NDYyNl0gIFs8ZmZmZmZmZmZhNDdmYmQ3Yj5dID8gc3lzdGVtX2NhbGxfZmFzdF9jb21wYXJl X2VuZCsweGMvMHg5YgoKRml4ZXM6IDIyYTVkYzBlNWUzZSAoIm5ldDogc2NoZWQ6IEludHJvZHVj ZSBjb25ubWFyayBhY3Rpb24iKQpTaWduZWQtb2ZmLWJ5OiDDiXRpZW5uZSBOb3NzIDxldGllbm5l Lm5vc3NAd2lmaXJzdC5mcj4KU2lnbmVkLW9mZi1ieTogVmljdG9yaWVuIE1vbGxlIDx2aWN0b3Jp ZW4ubW9sbGVAd2lmaXJzdC5mcj4KQWNrZWQtYnk6IENvbmcgV2FuZyA8eGl5b3Uud2FuZ2NvbmdA Z21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9m dC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91 bmRhdGlvbi5vcmc+Ci0tLQogbmV0L3NjaGVkL2FjdF9jb25ubWFyay5jIHwgMyArKysKIDEgZmls ZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2Nv bm5tYXJrLmMgYi9uZXQvc2NoZWQvYWN0X2Nvbm5tYXJrLmMKaW5kZXggZWFlMDdhMi4uMTE5MTE3 OSAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2FjdF9jb25ubWFyay5jCisrKyBiL25ldC9zY2hlZC9h Y3RfY29ubm1hcmsuYwpAQCAtMTEzLDYgKzExMyw5IEBAIHN0YXRpYyBpbnQgdGNmX2Nvbm5tYXJr X2luaXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgbmxhdHRyICpubGEsCiAJaWYgKHJldCA8IDAp CiAJCXJldHVybiByZXQ7CiAKKwlpZiAoIXRiW1RDQV9DT05OTUFSS19QQVJNU10pCisJCXJldHVy biAtRUlOVkFMOworCiAJcGFybSA9IG5sYV9kYXRhKHRiW1RDQV9DT05OTUFSS19QQVJNU10pOwog CiAJaWYgKCF0Y2ZfaGFzaF9jaGVjayh0biwgcGFybS0+aW5kZXgsIGEsIGJpbmQpKSB7Ci0tIAoy LjEuMAoKCkZyb20gYjYxMjA2ZTI1MzAyMGFkYmZkZTMxZjY2MmVjN2I1ZWE4YjU0OTM1ZiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRGF2aWQgQWhlcm4gPGRzYUBjdW11bHVzbmV0d29y a3MuY29tPgpEYXRlOiBGcmksIDEwIE1hciAyMDE3IDA5OjQ2OjE1IC0wODAwClN1YmplY3Q6IFtQ QVRDSCAwMzAvMTEyXSBtcGxzOiBTZW5kIHJvdXRlIGRlbGV0ZSBub3RpZmljYXRpb25zIHdoZW4g cm91dGVyCiBtb2R1bGUgaXMgdW5sb2FkZWQKClsgVXBzdHJlYW0gY29tbWl0IGUzNzc5MWVjMWFk Nzg1YjU5MDIyYWUyMTFmNjNhMTYxODliYWNlYmYgXQoKV2hlbiB0aGUgbXBsc19yb3V0ZXIgbW9k dWxlIGlzIHVubG9hZGVkLCBtcGxzIHJvdXRlcyBhcmUgZGVsZXRlZCBidXQKbm90aWZpY2F0aW9u cyBhcmUgbm90IHNlbnQgdG8gdXNlcnNwYWNlIGxlYXZpbmcgdXNlcnNwYWNlIGNhY2hlcwpvdXQg b2Ygc3luYy4gQWRkIHRoZSBjYWxsIHRvIG1wbHNfbm90aWZ5X3JvdXRlIGluIG1wbHNfbmV0X2V4 aXQgYXMKcm91dGVzIGFyZSBmcmVlZC4KCkZpeGVzOiAwMTg5MTk3ZjQ0MTYwICgibXBsczogQmFz aWMgcm91dGluZyBzdXBwb3J0IikKU2lnbmVkLW9mZi1ieTogRGF2aWQgQWhlcm4gPGRzYUBjdW11 bHVzbmV0d29ya3MuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRh dmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxp bnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogbmV0L21wbHMvYWZfbXBscy5jIHwgMSArCiAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKykKCmRpZmYgLS1naXQgYS9uZXQvbXBscy9hZl9tcGxzLmMg Yi9uZXQvbXBscy9hZl9tcGxzLmMKaW5kZXggNWI3NzM3Ny4uMmEyMWZmMSAxMDA2NDQKLS0tIGEv bmV0L21wbHMvYWZfbXBscy5jCisrKyBiL25ldC9tcGxzL2FmX21wbHMuYwpAQCAtMTY5Niw2ICsx Njk2LDcgQEAgc3RhdGljIHZvaWQgbXBsc19uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpCiAJZm9y IChpbmRleCA9IDA7IGluZGV4IDwgcGxhdGZvcm1fbGFiZWxzOyBpbmRleCsrKSB7CiAJCXN0cnVj dCBtcGxzX3JvdXRlICpydCA9IHJ0bmxfZGVyZWZlcmVuY2UocGxhdGZvcm1fbGFiZWxbaW5kZXhd KTsKIAkJUkNVX0lOSVRfUE9JTlRFUihwbGF0Zm9ybV9sYWJlbFtpbmRleF0sIE5VTEwpOworCQlt cGxzX25vdGlmeV9yb3V0ZShuZXQsIGluZGV4LCBydCwgTlVMTCwgTlVMTCk7CiAJCW1wbHNfcnRf ZnJlZShydCk7CiAJfQogCXJ0bmxfdW5sb2NrKCk7Ci0tIAoyLjEuMAoKCkZyb20gODdjMDI4NmEw N2Y5M2VkYzg3NGM4NjFhOTE1OWU1ODZmYzUxZWU2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogRGF2aWQgQWhlcm4gPGRzYUBjdW11bHVzbmV0d29ya3MuY29tPgpEYXRlOiBGcmksIDEw IE1hciAyMDE3IDE0OjExOjM5IC0wODAwClN1YmplY3Q6IFtQQVRDSCAwMzEvMTEyXSBtcGxzOiBE byBub3QgZGVjcmVtZW50IGFsaXZlIGNvdW50ZXIgZm9yIHVucmVnaXN0ZXIKIGV2ZW50cwoKWyBV cHN0cmVhbSBjb21taXQgNzkwOTlhYWIzOGM4ZjVjNzQ2NzQ4YjA2NmFlNzRiYTk4NGZlMmNjOCBd CgpNdWx0aXBhdGggcm91dGVzIGNhbiBiZSByZW5kZXJlZCB1c2VzbGVzcyB3aGVuIGEgZGV2aWNl IGluIG9uZSBvZiB0aGUKcGF0aHMgaXMgZGVsZXRlZC4gRm9yIGV4YW1wbGU6CgokIGlwIC1mIG1w bHMgcm8gbHMKMTAwCgluZXh0aG9wIGFzIHRvIDIwMCB2aWEgaW5ldCAxNzIuMTYuMi4yICBkZXYg dmlydDEyCgluZXh0aG9wIGFzIHRvIDMwMCB2aWEgaW5ldCAxNzIuMTYuMy4yICBkZXYgYnIwCjEw MQoJbmV4dGhvcCBhcyB0byAyMDEgdmlhIGluZXQ2IDIwMDA6Mjo6MiAgZGV2IHZpcnQxMgoJbmV4 dGhvcCBhcyB0byAzMDEgdmlhIGluZXQ2IDIwMDA6Mzo6MiAgZGV2IGJyMAoKJCBpcCBsaSBkZWwg YnIwCgpXaGVuIGJyMCBpcyBkZWxldGVkIHRoZSBvdGhlciBob3AgaXMgbm90IGNvbnNpZGVyZWQg aW4KbXBsc19zZWxlY3RfbXVsdGlwYXRoIGJlY2F1c2Ugb2YgdGhlIGFsaXZlIGNoZWNrIC0tIHJ0 X25obl9hbGl2ZQppcyAwLgoKcnRfbmhuX2FsaXZlIGlzIGRlY3JlbWVudGVkIG9uY2UgaW4gbXBs c19pZmRvd24gd2hlbiB0aGUgZGV2aWNlIGlzIHRha2VuCmRvd24gKE5FVERFVl9ET1dOKSBhbmQg YWdhaW4gd2hlbiBpdCBpcyBkZWxldGVkIChORVRERVZfVU5SRUdJU1RFUikuIEZvcgphIDIgaG9w IHJvdXRlLCBkZWxldGluZyBvbmUgZGV2aWNlIGRyb3BzIHRoZSBhbGl2ZSBjb3VudCB0byAwLiBT aW5jZQpkZXZpY2VzIGFyZSB0YWtlbiBkb3duIGJlZm9yZSB1bnJlZ2lzdGVyaW5nLCB0aGUgZGVj cmVtZW50IG9uCk5FVERFVl9VTlJFR0lTVEVSIGlzIHJlZHVuZGFudC4KCkZpeGVzOiBjODkzNTlh NDJlMmE0ICgibXBsczogc3VwcG9ydCBmb3IgZGVhZCByb3V0ZXMiKQpTaWduZWQtb2ZmLWJ5OiBE YXZpZCBBaGVybiA8ZHNhQGN1bXVsdXNuZXR3b3Jrcy5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlk IFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9h aC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBuZXQvbXBscy9hZl9t cGxzLmMgfCAzICsrLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQoKZGlmZiAtLWdpdCBhL25ldC9tcGxzL2FmX21wbHMuYyBiL25ldC9tcGxzL2FmX21wbHMu YwppbmRleCAyYTIxZmYxLi4xMzA5ZTJjIDEwMDY0NAotLS0gYS9uZXQvbXBscy9hZl9tcGxzLmMK KysrIGIvbmV0L21wbHMvYWZfbXBscy5jCkBAIC05NTYsNyArOTU2LDggQEAgc3RhdGljIHZvaWQg bXBsc19pZmRvd24oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IGV2ZW50KQogCQkJCS8qIGZh bGwgdGhyb3VnaCAqLwogCQkJY2FzZSBORVRERVZfQ0hBTkdFOgogCQkJCW5oLT5uaF9mbGFncyB8 PSBSVE5IX0ZfTElOS0RPV047Ci0JCQkJQUNDRVNTX09OQ0UocnQtPnJ0X25obl9hbGl2ZSkgPSBy dC0+cnRfbmhuX2FsaXZlIC0gMTsKKwkJCQlpZiAoZXZlbnQgIT0gTkVUREVWX1VOUkVHSVNURVIp CisJCQkJCUFDQ0VTU19PTkNFKHJ0LT5ydF9uaG5fYWxpdmUpID0gcnQtPnJ0X25obl9hbGl2ZSAt IDE7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCQlpZiAoZXZlbnQgPT0gTkVUREVWX1VOUkVHSVNURVIp Ci0tIAoyLjEuMAoKCkZyb20gNGE4ZDNiYjczYTgyMWUxOTIzYmE3MTU3YjNiYjM2NGU1YWVhYjBj OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU2FicmluYSBEdWJyb2NhIDxzZEBxdWVh c3lzbmFpbC5uZXQ+CkRhdGU6IE1vbiwgMTMgTWFyIDIwMTcgMTM6Mjg6MDkgKzAxMDAKU3ViamVj dDogW1BBVENIIDAzMi8xMTJdIGlwdjY6IG1ha2UgRUNNUCByb3V0ZSByZXBsYWNlbWVudCBsZXNz IGdyZWVkeQoKWyBVcHN0cmVhbSBjb21taXQgNjdlMTk0MDA3YmUwOGQwNzEyOTQ0NTYyNzRkZDUz ZTBhMDRmZGY5MCBdCgpDb21taXQgMjc1OTY0NzI0NzNhICgiaXB2NjogZml4IEVDTVAgcm91dGUg cmVwbGFjZW1lbnQiKSBpbnRyb2R1Y2VkIGEKbG9vcCB0aGF0IHJlbW92ZXMgYWxsIHNpYmxpbmdz IG9mIGFuIEVDTVAgcm91dGUgdGhhdCBpcyBiZWluZwpyZXBsYWNlZC4gSG93ZXZlciwgdGhpcyBs b29wIGRvZXNuJ3Qgc3RvcCB3aGVuIGl0IGhhcyByZXBsYWNlZApzaWJsaW5ncywgYW5kIGtlZXBz IHJlbW92aW5nIG90aGVyIHJvdXRlcyB3aXRoIGEgaGlnaGVyIG1ldHJpYy4KV2UgYWxzbyBlbmQg dXAgdHJpZ2dlcmluZyB0aGUgV0FSTl9PTiBhZnRlciB0aGUgbG9vcCwgYmVjYXVzZSBhZnRlcgp0 aGlzIG5zaWJsaW5ncyA8IDAuCgpJbnN0ZWFkLCBzdG9wIHRoZSBsb29wIHdoZW4gd2UgaGF2ZSB0 YWtlbiBjYXJlIG9mIGFsbCByb3V0ZXMgd2l0aCB0aGUKc2FtZSBtZXRyaWMgYXMgdGhlIHJvdXRl IGJlaW5nIHJlcGxhY2VkLgoKICBSZXByb2R1Y2VyOgogID09PT09PT09PT09CiAgICAjIS9iaW4v c2gKCiAgICBpcCBuZXRucyBhZGQgbnMxCiAgICBpcCBuZXRucyBhZGQgbnMyCiAgICBpcCAtbmV0 IG5zMSBsaW5rIHNldCBsbyB1cAoKICAgIGZvciB4IGluIDAgMSAyIDsgZG8KICAgICAgICBpcCBs aW5rIGFkZCB2ZXRoJHggbmV0bnMgbnMyIHR5cGUgdmV0aCBwZWVyIG5hbWUgZXRoJHggbmV0bnMg bnMxCiAgICAgICAgaXAgLW5ldCBuczEgbGluayBzZXQgZXRoJHggdXAKICAgICAgICBpcCAtbmV0 IG5zMiBsaW5rIHNldCB2ZXRoJHggdXAKICAgIGRvbmUKCiAgICBpcCAtbmV0IG5zMSAtNiByIGEg MjAwMDo6LzY0IG5leHRob3AgdmlhIGZlODA6OjAgZGV2IGV0aDAgXAogICAgICAgICAgICBuZXh0 aG9wIHZpYSBmZTgwOjoxIGRldiBldGgxIG5leHRob3AgdmlhIGZlODA6OjIgZGV2IGV0aDIKICAg IGlwIC1uZXQgbnMxIC02IHIgYSAyMDAwOjovNjQgdmlhIGZlODA6OjQyIGRldiBldGgwIG1ldHJp YyAyNTYKICAgIGlwIC1uZXQgbnMxIC02IHIgYSAyMDAwOjovNjQgdmlhIGZlODA6OjQzIGRldiBl dGgwIG1ldHJpYyAyMDQ4CgogICAgZWNobyAiYmVmb3JlIHJlcGxhY2UsIDMgcm91dGVzIgogICAg aXAgLW5ldCBuczEgLTYgciB8IGdyZXAgLXYgJ15mZTgwXHxeZmYwMCcKICAgIGVjaG8KCiAgICBp cCAtbmV0IG5zMSAtNiByIGMgMjAwMDo6LzY0IG5leHRob3AgdmlhIGZlODA6OjQgZGV2IGV0aDAg XAogICAgICAgICAgICBuZXh0aG9wIHZpYSBmZTgwOjo1IGRldiBldGgxIG5leHRob3AgdmlhIGZl ODA6OjYgZGV2IGV0aDIKCiAgICBlY2hvICJhZnRlciByZXBsYWNlLCBvbmx5IDIgcm91dGVzLCBt ZXRyaWMgMjA0OCBpcyBnb25lIgogICAgaXAgLW5ldCBuczEgLTYgciB8IGdyZXAgLXYgJ15mZTgw XHxeZmYwMCcKCkZpeGVzOiAyNzU5NjQ3MjQ3M2EgKCJpcHY2OiBmaXggRUNNUCByb3V0ZSByZXBs YWNlbWVudCIpClNpZ25lZC1vZmYtYnk6IFNhYnJpbmEgRHVicm9jYSA8c2RAcXVlYXN5c25haWwu bmV0PgpBY2tlZC1ieTogTmljb2xhcyBEaWNodGVsIDxuaWNvbGFzLmRpY2h0ZWxANndpbmQuY29t PgpSZXZpZXdlZC1ieTogWGluIExvbmcgPGx1Y2llbi54aW5AZ21haWwuY29tPgpSZXZpZXdlZC1i eTogTWljaGFsIEt1YmVjZWsgPG1rdWJlY2VrQHN1c2UuY3o+ClNpZ25lZC1vZmYtYnk6IERhdmlk IFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9h aC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBuZXQvaXB2Ni9pcDZf ZmliLmMgfCAyICsrCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0 IGEvbmV0L2lwdjYvaXA2X2ZpYi5jIGIvbmV0L2lwdjYvaXA2X2ZpYi5jCmluZGV4IGVmNTQ4NTIu LjhjODhhMzcgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2lwNl9maWIuYworKysgYi9uZXQvaXB2Ni9p cDZfZmliLmMKQEAgLTkwOCw2ICs5MDgsOCBAQCBzdGF0aWMgaW50IGZpYjZfYWRkX3J0Mm5vZGUo c3RydWN0IGZpYjZfbm9kZSAqZm4sIHN0cnVjdCBydDZfaW5mbyAqcnQsCiAJCQlpbnMgPSAmcnQt PmRzdC5ydDZfbmV4dDsKIAkJCWl0ZXIgPSAqaW5zOwogCQkJd2hpbGUgKGl0ZXIpIHsKKwkJCQlp ZiAoaXRlci0+cnQ2aV9tZXRyaWMgPiBydC0+cnQ2aV9tZXRyaWMpCisJCQkJCWJyZWFrOwogCQkJ CWlmIChydDZfcXVhbGlmeV9mb3JfZWNtcChpdGVyKSkgewogCQkJCQkqaW5zID0gaXRlci0+ZHN0 LnJ0Nl9uZXh0OwogCQkJCQlmaWI2X3B1cmdlX3J0KGl0ZXIsIGZuLCBpbmZvLT5ubF9uZXQpOwot LSAKMi4xLjAKCgpGcm9tIDY4MzEwMGVkNDU3NjFkNTZhNWQyYjNkNzk5MTllY2RkMTJmOGNiYmEg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEZsb3JpYW4gV2VzdHBoYWwgPGZ3QHN0cmxl bi5kZT4KRGF0ZTogTW9uLCAxMyBNYXIgMjAxNyAxNjoyNDoyOCArMDEwMApTdWJqZWN0OiBbUEFU Q0ggMDMzLzExMl0gaXB2NjogYXZvaWQgd3JpdGUgdG8gYSBwb3NzaWJseSBjbG9uZWQgc2tiCgpb IFVwc3RyZWFtIGNvbW1pdCA3OWU0OTUwM2VmZTUzYThjNTFkOGI2OTViZWRjOGEzNDZjNWU0YTg3 IF0KCmlwNl9mcmFnbWVudCwgaW4gY2FzZSBza2IgaGFzIGEgZnJhZ2xpc3QsIGNoZWNrcyBpZiB0 aGUKc2tiIGlzIGNsb25lZC4gIElmIGl0IGlzLCBpdCB3aWxsIG1vdmUgdG8gdGhlICdzbG93IHBh dGgnIGFuZCBhbGxvY2F0ZXMKbmV3IHNrYnMgZm9yIGVhY2ggZnJhZ21lbnQuCgpIb3dldmVyLCBy aWdodCBiZWZvcmUgZW50ZXJpbmcgdGhlIHNsb3dwYXRoIGxvb3AsIGl0IHVwZGF0ZXMgdGhlCm5l eHRoZHIgdmFsdWUgb2YgdGhlIGxhc3QgaXB2NiBleHRlbnNpb24gaGVhZGVyIHRvIE5FWFRIRFJf RlJBR01FTlQsCnRvIGFjY291bnQgZm9yIHRoZSBmcmFnbWVudCBoZWFkZXIgdGhhdCB3aWxsIGJl IGluc2VydGVkIGluIHRoZSBuZXcKaXB2Ni1mcmFnbWVudCBza2JzLgoKSW4gY2FzZSBvcmlnaW5h bCBza2IgaXMgY2xvbmVkIHRoaXMgbXVuZ2VzIG5leHRoZHIgdmFsdWUgb2YgYW5vdGhlcgpza2Iu ICBBdm9pZCB0aGlzIGJ5IGRvaW5nIHRoZSBuZXh0aGRyIHVwZGF0ZSBmb3IgZWFjaCBvZiB0aGUg bmV3IGZyYWdtZW50CnNrYnMgc2VwYXJhdGVseS4KClRoaXMgd2FzIG9ic2VydmVkIHdpdGggdGNw ZHVtcCBvbiBhIGJyaWRnZSBkZXZpY2Ugd2hlcmUgbmV0ZmlsdGVyIGlwdjYKcmVhc3NlbWJseSBp cyBhY3RpdmU6ICB0Y3BkdW1wIHNob3dzIG1hbGZvcm1lZCBmcmFnbWVudCBoZWFkZXJzIGFzCnRo ZSBsNCBoZWFkZXIgKGljbXB2NiwgdGNwLCBldGMpLiBpcyBkZWNvZGVkIGFzIGEgZnJhZ21lbnQg aGVhZGVyLgoKQ2M6IEhhbm5lcyBGcmVkZXJpYyBTb3dhIDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9u Lm9yZz4KUmVwb3J0ZWQtYnk6IEFuZHJlYXMgS2FyaXMgPGFrYXJpc0ByZWRoYXQuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBGbG9yaWFuIFdlc3RwaGFsIDxmd0BzdHJsZW4uZGU+ClNpZ25lZC1vZmYtYnk6 IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTogR3Jl ZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBuZXQvaXB2 Ni9pcDZfb3V0cHV0LmMgfCA3ICsrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMgYi9u ZXQvaXB2Ni9pcDZfb3V0cHV0LmMKaW5kZXggOWE4N2JmYi4uZTI3YjhmZCAxMDA2NDQKLS0tIGEv bmV0L2lwdjYvaXA2X291dHB1dC5jCisrKyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuYwpAQCAtNzU3 LDEzICs3NTcsMTQgQEAgaW50IGlwNl9mcmFnbWVudChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBz b2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkgKglGcmFnbWVudCB0aGUgZGF0YWdyYW0u CiAJICovCiAKLQkqcHJldmhkciA9IE5FWFRIRFJfRlJBR01FTlQ7CiAJdHJvb20gPSBydC0+ZHN0 LmRldi0+bmVlZGVkX3RhaWxyb29tOwogCiAJLyoKIAkgKglLZWVwIGNvcHlpbmcgZGF0YSB1bnRp bCB3ZSBydW4gb3V0LgogCSAqLwogCXdoaWxlIChsZWZ0ID4gMCkJeworCQl1OCAqZnJhZ25leHRo ZHJfb2Zmc2V0OworCiAJCWxlbiA9IGxlZnQ7CiAJCS8qIElGOiBpdCBkb2Vzbid0IGZpdCwgdXNl ICdtdHUnIC0gdGhlIGRhdGEgc3BhY2UgbGVmdCAqLwogCQlpZiAobGVuID4gbXR1KQpAQCAtODA4 LDYgKzgwOSwxMCBAQCBpbnQgaXA2X2ZyYWdtZW50KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNv Y2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkgKi8KIAkJc2tiX2NvcHlfZnJvbV9saW5l YXJfZGF0YShza2IsIHNrYl9uZXR3b3JrX2hlYWRlcihmcmFnKSwgaGxlbik7CiAKKwkJZnJhZ25l eHRoZHJfb2Zmc2V0ID0gc2tiX25ldHdvcmtfaGVhZGVyKGZyYWcpOworCQlmcmFnbmV4dGhkcl9v ZmZzZXQgKz0gcHJldmhkciAtIHNrYl9uZXR3b3JrX2hlYWRlcihza2IpOworCQkqZnJhZ25leHRo ZHJfb2Zmc2V0ID0gTkVYVEhEUl9GUkFHTUVOVDsKKwogCQkvKgogCQkgKglCdWlsZCBmcmFnbWVu dCBoZWFkZXIuCiAJCSAqLwotLSAKMi4xLjAKCgpGcm9tIDliY2UyNmYyMjRkODdjZDQ1NGJhNTY3 ZWIyZTAxYTZiMDI1MmMwNTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEZsb3JpYW4g V2VzdHBoYWwgPGZ3QHN0cmxlbi5kZT4KRGF0ZTogTW9uLCAxMyBNYXIgMjAxNyAxNzozODoxNyAr MDEwMApTdWJqZWN0OiBbUEFUQ0ggMDM0LzExMl0gYnJpZGdlOiBkcm9wIG5ldGZpbHRlciBmYWtl IHJ0YWJsZSB1bmNvbmRpdGlvbmFsbHkKClsgVXBzdHJlYW0gY29tbWl0IGExM2IyMDgyZWNlOTUy NDc3NzliOTk5NWM0ZTkxYjQyNDZiZWQwMjMgXQoKQW5kcmVhcyByZXBvcnRzIGtlcm5lbCBvb3Bz IGR1cmluZyBybW1vZCBvZiB0aGUgYnJfbmV0ZmlsdGVyIG1vZHVsZS4KSGFubmVzIGRlYnVnZ2Vk IHRoZSBvb3BzIGRvd24gdG8gYSBOVUxMIHJ0NmluZm8tPnJ0NmlfaW5kZXYuCgpQcm9ibGVtIGlz IHRoYXQgYnJfbmV0ZmlsdGVyIGhhcyB0aGUgbmFzdHkgY29uY2VwdCBvZiBhZGRpbmcgYSBmYWtl CnJ0YWJsZSB0byBza2ItPmRzdDsgdGhpcyBoYXBwZW5zIGluIGEgYnJfbmV0ZmlsdGVyIHByZXJv dXRpbmcgaG9vay4KCkEgc2Vjb25kIGhvb2sgKGluIGJyaWRnZSBMT0NBTF9JTikgaXMgc3VwcG9z ZWQgdG8gcmVtb3ZlIHRoZXNlIGFnYWluCmJlZm9yZSB0aGUgc2tiIGlzIGhhbmRlZCB1cCB0aGUg c3RhY2suCgpIb3dldmVyLCBvbiBtb2R1bGUgdW5sb2FkIGhvb2tzIGdldCB1bnJlZ2lzdGVyZWQg d2hpY2ggbWVhbnMgYW4Kc2tiIGNvdWxkIHRyYXZlcnNlIHRoZSBwcmVyb3V0aW5nIGhvb2sgdGhh dCBhdHRhY2hlcyB0aGUgZmFrZV9ydGFibGUsCndoaWxlIHRoZSAnZmFrZSBydGFibGUgcmVtb3Zl JyBob29rIGdldHMgcmVtb3ZlZCBmcm9tIHRoZSBob29rbGlzdAppbW1lZGlhdGVseSBhZnRlci4K CkZpeGVzOiAzNDY2NmQ0NjdjYmYxZTJlM2M3ICgibmV0ZmlsdGVyOiBicmlkZ2U6IG1vdmUgYnJf bmV0ZmlsdGVyIG91dCBvZiB0aGUgY29yZSIpClJlcG9ydGVkLWJ5OiBBbmRyZWFzIEthcmlzIDxh a2FyaXNAcmVkaGF0LmNvbT4KRGVidWdnZWQtYnk6IEhhbm5lcyBGcmVkZXJpYyBTb3dhIDxoYW5u ZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBXZXN0cGhhbCA8 ZndAc3RybGVuLmRlPgpBY2tlZC1ieTogUGFibG8gTmVpcmEgQXl1c28gPHBhYmxvQG5ldGZpbHRl ci5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5l dD4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0 aW9uLm9yZz4KLS0tCiBuZXQvYnJpZGdlL2JyX2lucHV0LmMgICAgICAgICAgIHwgIDEgKwogbmV0 L2JyaWRnZS9icl9uZXRmaWx0ZXJfaG9va3MuYyB8IDIxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQog MiBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvbmV0L2JyaWRnZS9icl9pbnB1dC5jIGIvbmV0L2JyaWRnZS9icl9pbnB1dC5jCmluZGV4 IDg1NWI3MmYuLjI2N2I0NmEgMTAwNjQ0Ci0tLSBhL25ldC9icmlkZ2UvYnJfaW5wdXQuYworKysg Yi9uZXQvYnJpZGdlL2JyX2lucHV0LmMKQEAgLTI5LDYgKzI5LDcgQEAgRVhQT1JUX1NZTUJPTChi cl9zaG91bGRfcm91dGVfaG9vayk7CiBzdGF0aWMgaW50CiBicl9uZXRpZl9yZWNlaXZlX3NrYihz dHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsK Kwlicl9kcm9wX2Zha2VfcnRhYmxlKHNrYik7CiAJcmV0dXJuIG5ldGlmX3JlY2VpdmVfc2tiKHNr Yik7CiB9CiAKZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmMgYi9u ZXQvYnJpZGdlL2JyX25ldGZpbHRlcl9ob29rcy5jCmluZGV4IDdmYmRiYWUuLmFhMWRmMWEgMTAw NjQ0Ci0tLSBhL25ldC9icmlkZ2UvYnJfbmV0ZmlsdGVyX2hvb2tzLmMKKysrIGIvbmV0L2JyaWRn ZS9icl9uZXRmaWx0ZXJfaG9va3MuYwpAQCAtNTIxLDIxICs1MjEsNiBAQCBzdGF0aWMgdW5zaWdu ZWQgaW50IGJyX25mX3ByZV9yb3V0aW5nKHZvaWQgKnByaXYsCiB9CiAKIAotLyogUEZfQlJJREdF L0xPQ0FMX0lOICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KLS8qIFRoZSBwYWNrZXQgaXMgbG9jYWxseSBkZXN0aW5lZCwgd2hpY2ggcmVxdWlyZXMgYSBy ZWFsCi0gKiBkc3RfZW50cnksIHNvIGRldGFjaCB0aGUgZmFrZSBvbmUuICBPbiB0aGUgd2F5IHVw LCB0aGUKLSAqIHBhY2tldCB3b3VsZCBwYXNzIHRocm91Z2ggUFJFX1JPVVRJTkcgYWdhaW4gKHdo aWNoIGFscmVhZHkKLSAqIHRvb2sgcGxhY2Ugd2hlbiB0aGUgcGFja2V0IGVudGVyZWQgdGhlIGJy aWRnZSksIGJ1dCB3ZQotICogcmVnaXN0ZXIgYW4gSVB2NCBQUkVfUk9VVElORyAnc2Fib3RhZ2Un IGhvb2sgdGhhdCB3aWxsCi0gKiBwcmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmcuICovCi1zdGF0 aWMgdW5zaWduZWQgaW50IGJyX25mX2xvY2FsX2luKHZvaWQgKnByaXYsCi0JCQkJICAgc3RydWN0 IHNrX2J1ZmYgKnNrYiwKLQkJCQkgICBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUp Ci17Ci0JYnJfZHJvcF9mYWtlX3J0YWJsZShza2IpOwotCXJldHVybiBORl9BQ0NFUFQ7Ci19Ci0K IC8qIFBGX0JSSURHRS9GT1JXQVJEICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCiBzdGF0aWMgaW50IGJyX25mX2ZvcndhcmRfZmluaXNoKHN0cnVjdCBu ZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogewpAQCAtOTA2 LDEyICs4OTEsNiBAQCBzdGF0aWMgc3RydWN0IG5mX2hvb2tfb3BzIGJyX25mX29wc1tdIF9fcmVh ZF9tb3N0bHkgPSB7CiAJCS5wcmlvcml0eSA9IE5GX0JSX1BSSV9CUk5GLAogCX0sCiAJewotCQku aG9vayA9IGJyX25mX2xvY2FsX2luLAotCQkucGYgPSBORlBST1RPX0JSSURHRSwKLQkJLmhvb2tu dW0gPSBORl9CUl9MT0NBTF9JTiwKLQkJLnByaW9yaXR5ID0gTkZfQlJfUFJJX0JSTkYsCi0JfSwK LQl7CiAJCS5ob29rID0gYnJfbmZfZm9yd2FyZF9pcCwKIAkJLnBmID0gTkZQUk9UT19CUklER0Us CiAJCS5ob29rbnVtID0gTkZfQlJfRk9SV0FSRCwKLS0gCjIuMS4wCgoKRnJvbSA5ODkzM2ViMzZk ZDI1Y2I2Nzk3NzY4YmFmYjliNjdhZjg0ZTgwYTcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiBKb24gTWF4d2VsbCA8am1heHdlbGwzN0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTAgTWFy IDIwMTcgMTY6NDA6MzMgKzExMDAKU3ViamVjdDogW1BBVENIIDAzNS8xMTJdIGRjY3AvdGNwOiBm aXggcm91dGluZyByZWRpcmVjdCByYWNlCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTog dGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0 CgpbIFVwc3RyZWFtIGNvbW1pdCA0NWNhZWFhNWFjMGI0YjExNzg0YWM2ZjkzMmMwYWQ0YzZiNjdj ZGEwIF0KCkFzIEVyaWMgRHVtYXpldCBwb2ludGVkIG91dCB0aGlzIGFsc28gbmVlZHMgdG8gYmUg Zml4ZWQgaW4gSVB2Ni4KdjI6IENvbnRhaW5zIHRoZSBJUHY2IHRjcC9JcHY2IGRjY3AgcGF0Y2hl cyBhcyB3ZWxsLgoKV2UgaGF2ZSBzZWVuIGEgZmV3IGluY2lkZW50cyBsYXRlbHkgd2hlcmUgYSBk c3RfZW50eSBoYXMgYmVlbiBmcmVlZAp3aXRoIGEgZGFuZ2xpbmcgVENQIHNvY2tldCByZWZlcmVu Y2UgKHNrLT5za19kc3RfY2FjaGUpIHBvaW50aW5nIHRvIHRoYXQKZHN0X2VudHJ5LiBJZiB0aGUg Y29uZGl0aW9ucy90aW1pbmdzIGFyZSByaWdodCBhIGNyYXNoIHRoZW4gZW5zdWVzIHdoZW4gdGhl CmZyZWVkIGRzdF9lbnRyeSBpcyByZWZlcmVuY2VkIGxhdGVyIG9uLiBBIENvbW1vbiBjcmFzaGlu ZyBiYWNrIHRyYWNlIGlzOgoKICM4IFtdIHBhZ2VfZmF1bHQgYXQgZmZmZmZmZmY4MTYzZTY0OAog ICAgW2V4Y2VwdGlvbiBSSVA6IF9fdGNwX2Fja19zbmRfY2hlY2srNzRdCi4KLgogIzkgW10gdGNw X3Jjdl9lc3RhYmxpc2hlZCBhdCBmZmZmZmZmZjgxNTgwYjY0CiMxMCBbXSB0Y3BfdjRfZG9fcmN2 IGF0IGZmZmZmZmZmODE1OGI1NGEKIzExIFtdIHRjcF92NF9yY3YgYXQgZmZmZmZmZmY4MTU4Y2Qw MgojMTIgW10gaXBfbG9jYWxfZGVsaXZlcl9maW5pc2ggYXQgZmZmZmZmZmY4MTU2NjhmNAojMTMg W10gaXBfbG9jYWxfZGVsaXZlciBhdCBmZmZmZmZmZjgxNTY2YmQ5CiMxNCBbXSBpcF9yY3ZfZmlu aXNoIGF0IGZmZmZmZmZmODE1NjY1NmQKIzE1IFtdIGlwX3JjdiBhdCBmZmZmZmZmZjgxNTY2ZjA2 CiMxNiBbXSBfX25ldGlmX3JlY2VpdmVfc2tiX2NvcmUgYXQgZmZmZmZmZmY4MTUyYjNhMgojMTcg W10gX19uZXRpZl9yZWNlaXZlX3NrYiBhdCBmZmZmZmZmZjgxNTJiNjA4CiMxOCBbXSBuZXRpZl9y ZWNlaXZlX3NrYiBhdCBmZmZmZmZmZjgxNTJiNjkwCiMxOSBbXSB2bXhuZXQzX3JxX3J4X2NvbXBs ZXRlIGF0IGZmZmZmZmZmYTAxNWVlYWYgW3ZteG5ldDNdCiMyMCBbXSB2bXhuZXQzX3BvbGxfcnhf b25seSBhdCBmZmZmZmZmZmEwMTVmMzJhIFt2bXhuZXQzXQojMjEgW10gbmV0X3J4X2FjdGlvbiBh dCBmZmZmZmZmZjgxNTJiYWMyCiMyMiBbXSBfX2RvX3NvZnRpcnEgYXQgZmZmZmZmZmY4MTA4NGI0 ZgojMjMgW10gY2FsbF9zb2Z0aXJxIGF0IGZmZmZmZmZmODE2NDg0NWMKIzI0IFtdIGRvX3NvZnRp cnEgYXQgZmZmZmZmZmY4MTAxNmZjNQojMjUgW10gaXJxX2V4aXQgYXQgZmZmZmZmZmY4MTA4NGVl NQojMjYgW10gZG9fSVJRIGF0IGZmZmZmZmZmODE2NDhmZjgKCk9mIGNvdXJzZSBpdCBtYXkgaGFw cGVuIHdpdGggb3RoZXIgTklDIGRyaXZlcnMgYXMgd2VsbC4KCkl0J3MgZm91bmQgdGhlIGZyZWVk IGRzdF9lbnRyeSBoZXJlOgoKIDIyNCBzdGF0aWMgYm9vbCB0Y3BfaW5fcXVpY2thY2tfbW9kZShz dHJ1Y3Qgc29jayAqc2sp4oapCiAyMjUge+KGqQogMjI2IOKWuSAgICAgICBjb25zdCBzdHJ1Y3Qg aW5ldF9jb25uZWN0aW9uX3NvY2sgKmljc2sgPSBpbmV0X2Nzayhzayk74oapCiAyMjcg4pa5ICAg ICAgIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdCA9IF9fc2tfZHN0X2dldChzayk74oapCiAy Mjgg4oapCiAyMjkg4pa5ICAgICAgIHJldHVybiAoZHN0ICYmIGRzdF9tZXRyaWMoZHN0LCBSVEFY X1FVSUNLQUNLKSkgfHzihqkKIDIzMCDilrkgICAgICAg4pa5ICAgICAgIChpY3NrLT5pY3NrX2Fj ay5xdWljayAmJiAhaWNzay0+aWNza19hY2sucGluZ3BvbmcpO+KGqQogMjMxIH3ihqkKCkJ1dCB0 aGVyZSBhcmUgb3RoZXIgYmFja3RyYWNlcyBhdHRyaWJ1dGVkIHRvIHRoZSBzYW1lIGZyZWVkIGRz dF9lbnRyeSBpbgpuZXRmaWx0ZXIgY29kZSBhcyB3ZWxsLgoKQWxsIHRoZSB2bWNvcmVzIHNob3dl ZCAyIHNpZ25pZmljYW50IGNsdWVzOgoKLSBSZW1vdGUgaG9zdHMgYmVoaW5kIHRoZSBkZWZhdWx0 IGdhdGV3YXkgaGFkIGFsd2F5cyBiZWVuIHJlZGlyZWN0ZWQgdG8gYQpkaWZmZXJlbnQgZ2F0ZXdh eS4gQSBydGFibGUvZHN0X2VudHJ5IHdpbGwgYmUgYWRkZWQgZm9yIHRoYXQgaG9zdC4gTWFraW5n Cm1vcmUgZHN0X2VudHJ5cyB3aXRoIGxvd2VyIHJlZmVyZW5jZSBjb3VudHMuIE1ha2luZyB0aGlz IG1vcmUgcHJvYmFibGUuCgotIEFsbCB2bWNvcmVzIHNob3dlZCBhIHBvc3RpdGl2ZSBMb2NrRHJv cHBlZEljbXBzIHZhbHVlLCBlLmc6CgpMb2NrRHJvcHBlZEljbXBzICAgICAgICAgICAgICAgICAg MjY3CgpBIGNsb3NlciBsb29rIGF0IHRoZSB0Y3BfdjRfZXJyKCkgaGFuZGxlciByZXZlYWxlZCB0 aGF0IGRvX3JlZGlyZWN0KCkgd2lsbCBydW4KcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHVzZXIgc3Bh Y2UgaGFzIHRoZSBzb2NrZXQgbG9ja2VkLiBUaGlzIGNhbiByZXN1bHQgaW4gYQpyYWNlIGNvbmRp dGlvbiB3aGVyZSB0aGUgc2FtZSBkc3RfZW50cnkgY2FjaGVkIGluIHNrLT5za19kc3RfZW50cnkg Y2FuIGJlCmRlY3JlbWVudGVkIHR3aWNlIGZvciB0aGUgc2FtZSBzb2NrZXQgdmlhOgoKZG9fcmVk aXJlY3QoKS0+X19za19kc3RfY2hlY2soKS0+IGRzdF9yZWxlYXNlKCkuCgpXaGljaCBsZWFkcyB0 byB0aGUgZHN0X2VudHJ5IGJlaW5nIHByZW1hdHVyZWx5IGZyZWVkIHdpdGggYW5vdGhlciBzb2Nr ZXQKcG9pbnRpbmcgdG8gaXQgdmlhIHNrLT5za19kc3RfY2FjaGUgYW5kIGEgc3Vic2VxdWVudCBj cmFzaC4KClRvIGZpeCB0aGlzIHNraXAgZG9fcmVkaXJlY3QoKSBpZiB1c2VzcGFjZSBoYXMgdGhl IHNvY2tldCBsb2NrZWQuIEluc3RlYWQgbGV0CnRoZSByZWRpcmVjdCB0YWtlIHBsYWNlIGxhdGVy IHdoZW4gdXNlciBzcGFjZSBkb2VzIG5vdCBoYXZlIHRoZSBzb2NrZXQKbG9ja2VkLgoKVGhlIGRj Y3AvSVB2NiBjb2RlIGlzIHZlcnkgc2ltaWxhciBpbiB0aGlzIHJlc3BlY3QsIHNvIGZpeGluZyBp dCB0aGVyZSB0b28uCgpBcyBFcmljIEdhcnZlciBwb2ludGVkIG91dCB0aGUgZm9sbG93aW5nIGNv bW1pdCBub3cgaW52YWxpZGF0ZXMgcm91dGVzLiBXaGljaApjYW4gc2V0IHRoZSBkc3QtPm9ic29s ZXRlIGZsYWcgc28gdGhhdCBpcHY0X2RzdF9jaGVjaygpIHJldHVybnMgbnVsbCBhbmQKdHJpZ2dl cnMgdGhlIGRzdF9yZWxlYXNlKCkuCgpGaXhlczogY2ViMzMyMDYxMGQ2ICgiaXB2NDogS2lsbCBy b3V0ZXMgZHVyaW5nIFBNVFUvcmVkaXJlY3QgdXBkYXRlcy4iKQpDYzogRXJpYyBHYXJ2ZXIgPGVn YXJ2ZXJAcmVkaGF0LmNvbT4KQ2M6IEhhbm5lcyBTb3dhIDxoc293YUByZWRoYXQuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBKb24gTWF4d2VsbCA8am1heHdlbGwzN0BnbWFpbC5jb20+ClNpZ25lZC1vZmYt Ynk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTog R3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBuZXQv ZGNjcC9pcHY0LmMgICAgIHwgMyArKy0KIG5ldC9kY2NwL2lwdjYuYyAgICAgfCA4ICsrKysrLS0t CiBuZXQvaXB2NC90Y3BfaXB2NC5jIHwgMyArKy0KIG5ldC9pcHY2L3RjcF9pcHY2LmMgfCA4ICsr KysrLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvbmV0L2RjY3AvaXB2NC5jIGIvbmV0L2RjY3AvaXB2NC5jCmluZGV4IGVk YmU1OWQuLjg2YjA5MzMgMTAwNjQ0Ci0tLSBhL25ldC9kY2NwL2lwdjQuYworKysgYi9uZXQvZGNj cC9pcHY0LmMKQEAgLTI4OSw3ICsyODksOCBAQCBzdGF0aWMgdm9pZCBkY2NwX3Y0X2VycihzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mbykKIAogCXN3aXRjaCAodHlwZSkgewogCWNhc2UgSUNN UF9SRURJUkVDVDoKLQkJZGNjcF9kb19yZWRpcmVjdChza2IsIHNrKTsKKwkJaWYgKCFzb2NrX293 bmVkX2J5X3VzZXIoc2spKQorCQkJZGNjcF9kb19yZWRpcmVjdChza2IsIHNrKTsKIAkJZ290byBv dXQ7CiAJY2FzZSBJQ01QX1NPVVJDRV9RVUVOQ0g6CiAJCS8qIEp1c3Qgc2lsZW50bHkgaWdub3Jl IHRoZXNlLiAqLwpkaWZmIC0tZ2l0IGEvbmV0L2RjY3AvaXB2Ni5jIGIvbmV0L2RjY3AvaXB2Ni5j CmluZGV4IDc1MDZjMDMuLjIzN2Q2MmMgMTAwNjQ0Ci0tLSBhL25ldC9kY2NwL2lwdjYuYworKysg Yi9uZXQvZGNjcC9pcHY2LmMKQEAgLTEyMiwxMCArMTIyLDEyIEBAIHN0YXRpYyB2b2lkIGRjY3Bf djZfZXJyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBpbmV0Nl9za2JfcGFybSAqb3B0LAog CW5wID0gaW5ldDZfc2soc2spOwogCiAJaWYgKHR5cGUgPT0gTkRJU0NfUkVESVJFQ1QpIHsKLQkJ c3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gX19za19kc3RfY2hlY2soc2ssIG5wLT5kc3RfY29va2ll KTsKKwkJaWYgKCFzb2NrX293bmVkX2J5X3VzZXIoc2spKSB7CisJCQlzdHJ1Y3QgZHN0X2VudHJ5 ICpkc3QgPSBfX3NrX2RzdF9jaGVjayhzaywgbnAtPmRzdF9jb29raWUpOwogCi0JCWlmIChkc3Qp Ci0JCQlkc3QtPm9wcy0+cmVkaXJlY3QoZHN0LCBzaywgc2tiKTsKKwkJCWlmIChkc3QpCisJCQkJ ZHN0LT5vcHMtPnJlZGlyZWN0KGRzdCwgc2ssIHNrYik7CisJCX0KIAkJZ290byBvdXQ7CiAJfQog CmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaXB2NC5jIGIvbmV0L2lwdjQvdGNwX2lwdjQuYwpp bmRleCA1YmI4MDlmLi42OTg4NTY2IDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfaXB2NC5jCisr KyBiL25ldC9pcHY0L3RjcF9pcHY0LmMKQEAgLTQyMSw3ICs0MjEsOCBAQCB2b2lkIHRjcF92NF9l cnIoc3RydWN0IHNrX2J1ZmYgKmljbXBfc2tiLCB1MzIgaW5mbykKIAogCXN3aXRjaCAodHlwZSkg ewogCWNhc2UgSUNNUF9SRURJUkVDVDoKLQkJZG9fcmVkaXJlY3QoaWNtcF9za2IsIHNrKTsKKwkJ aWYgKCFzb2NrX293bmVkX2J5X3VzZXIoc2spKQorCQkJZG9fcmVkaXJlY3QoaWNtcF9za2IsIHNr KTsKIAkJZ290byBvdXQ7CiAJY2FzZSBJQ01QX1NPVVJDRV9RVUVOQ0g6CiAJCS8qIEp1c3Qgc2ls ZW50bHkgaWdub3JlIHRoZXNlLiAqLwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvdGNwX2lwdjYuYyBi L25ldC9pcHY2L3RjcF9pcHY2LmMKaW5kZXggNjY3Mzk2NS4uYjJlNjFhMCAxMDA2NDQKLS0tIGEv bmV0L2lwdjYvdGNwX2lwdjYuYworKysgYi9uZXQvaXB2Ni90Y3BfaXB2Ni5jCkBAIC0zNzUsMTAg KzM3NSwxMiBAQCBzdGF0aWMgdm9pZCB0Y3BfdjZfZXJyKHN0cnVjdCBza19idWZmICpza2IsIHN0 cnVjdCBpbmV0Nl9za2JfcGFybSAqb3B0LAogCW5wID0gaW5ldDZfc2soc2spOwogCiAJaWYgKHR5 cGUgPT0gTkRJU0NfUkVESVJFQ1QpIHsKLQkJc3RydWN0IGRzdF9lbnRyeSAqZHN0ID0gX19za19k c3RfY2hlY2soc2ssIG5wLT5kc3RfY29va2llKTsKKwkJaWYgKCFzb2NrX293bmVkX2J5X3VzZXIo c2spKSB7CisJCQlzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QgPSBfX3NrX2RzdF9jaGVjayhzaywgbnAt PmRzdF9jb29raWUpOwogCi0JCWlmIChkc3QpCi0JCQlkc3QtPm9wcy0+cmVkaXJlY3QoZHN0LCBz aywgc2tiKTsKKwkJCWlmIChkc3QpCisJCQkJZHN0LT5vcHMtPnJlZGlyZWN0KGRzdCwgc2ssIHNr Yik7CisJCX0KIAkJZ290byBvdXQ7CiAJfQogCi0tIAoyLjEuMAoKCkZyb20gYmVhYTY2Y2NlNTU2 ODkwNzZjYWNkM2I2YjI5MDg4NmQ1MDNlYWEzNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogSGFubmVzIEZyZWRlcmljIFNvd2EgPGhhbm5lc0BzdHJlc3NpbmR1a3Rpb24ub3JnPgpEYXRl OiBNb24sIDEzIE1hciAyMDE3IDAwOjAwOjI2ICswMTAwClN1YmplY3Q6IFtQQVRDSCAwMzYvMTEy XSB0dW46IGZpeCBwcmVtYXR1cmUgUE9MTE9VVCBub3RpZmljYXRpb24gb24gdHVuCiBkZXZpY2Vz Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYt OApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpbIFVwc3RyZWFtIGNvbW1pdCBiMjBl MmQ1NDc4OWM2YWNiZjZiZDBlZmRiZWMyY2Y1ZmE0ZDkwZWYxIF0KCmFzemxpZyBvYnNlcnZlZCBm YWlsaW5nIHNzaCB0dW5uZWxzICgtdykgZHVyaW5nIGluaXRpYWxpemF0aW9uIHNpbmNlCmNvbW1p dCBjYzlkYTZjYzRmNTZlMCAoImlwdjY6IGFkZHJjb25mOiB1c2Ugc3RhYmxlIGFkZHJlc3MgZ2Vu ZXJhdG9yIGZvcgpBUlBIUkRfTk9ORSIpLiBXZSBhbHJlYWR5IGhhZCByZXBvcnRzIHRoYXQgdGhl IG1lbnRpb25lZCBjb21taXQgYnJlYWtzCkp1bmlwZXIgVlBOIGNvbm5lY3Rpb25zLiBJIGNhbid0 IGNsZWFybHkgc2F5IHRoYXQgdGhlIEp1bmlwZXIgVlBOIGNsaWVudApoYXMgdGhlIHNhbWUgcHJv YmxlbSwgYnV0IGl0IGlzIHdvcnRoIGEgdHJ5IHRvIGhpbnQgdG8gdGhpcyBwYXRjaC4KCkJlY2F1 c2Ugb2YgdGhlIGVhcmx5IGdlbmVyYXRpb24gb2YgbGluayBsb2NhbCBhZGRyZXNzZXMsIHRoZSBr ZXJuZWwgbm93CmNhbiBzdGFydCBhc2tpbmcgZm9yIHJvdXRlcnMgb24gdGhlIGxvY2FsIHN1Ym5l dCBtdWNoIGVhcmxpZXIgdGhhbiB1c3VhbC4KVGhvc2Ugcm91dGVyIHNvbGljaXRhdGlvbiBwYWNr ZXRzIGFycml2ZSBpbnNpZGUgdGhlIHNzaCBjaGFubmVscyBhbmQKc2hvdWxkIGJlIHRyYW5zbWl0 dGVkIHRvIHRoZSB0dW4gZmQgYmVmb3JlIHRoZSBjb25maWd1cmF0aW9uIHNjcmlwdHMKbWlnaHQg aGF2ZSB1cHBlZCB0aGUgaW50ZXJmYWNlIGFuZCBtYWRlIGl0IHJlYWR5IGZvciB0cmFuc21pc3Np b24uCgpzc2ggcG9sbHMgb24gdGhlIGludGVyZmFjZSBhbmQgcmVjZWl2ZXMgYmFjayBhIFBPTExf T1VULiBJdCB0cmllcyB0byBzZW5kCnRoZSBlYXJpbHkgcm91dGVyIHNvbGljaXRhdGlvbiBwYWNr ZXQgdG8gdGhlIHR1biBpbnRlcmZhY2UuICBVbmZvcnR1bmF0ZWx5Cml0IGhhc24ndCBiZWVuIHVw J2VkIHlldCBieSBjb25maWcgc2NyaXB0cywgdGh1cyBmYWlsaW5nIHdpdGggLUVJTy4gc3NoCmRv ZXNuJ3QgcmV0cnkgYWdhaW4gYW5kIGNvbnNpZGVycyB0aGUgdHVuIGludGVyZmFjZSBicm9rZW4g Zm9yZXZlci4KCkxpbms6IGh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9MTIxMTMxCkZpeGVzOiBjYzlkYTZjYzRmNTYgKCJpcHY2OiBhZGRyY29uZjogdXNlIHN0YWJs ZSBhZGRyZXNzIGdlbmVyYXRvciBmb3IgQVJQSFJEX05PTkUiKQpDYzogQmrDuHJuIE1vcmsgPGJq b3JuQG1vcmsubm8+ClJlcG9ydGVkLWJ5OiBWYWxkaXMgS2xldG5pZWtzIDxWYWxkaXMuS2xldG5p ZWtzQHZ0LmVkdT4KQ2M6IFZhbGRpcyBLbGV0bmlla3MgPFZhbGRpcy5LbGV0bmlla3NAdnQuZWR1 PgpSZXBvcnRlZC1ieTogSm9uYXMgTGlwcHVuZXIgPGpvbmFzQGxpcHB1bmVyLmNhPgpDYzogSm9u YXMgTGlwcHVuZXIgPGpvbmFzQGxpcHB1bmVyLmNhPgpSZXBvcnRlZC1ieTogYXN6bGlnIDxhc3ps aWdAcmVkbW9vbnN0dWRpb3Mub3JnPgpDYzogYXN6bGlnIDxhc3psaWdAcmVkbW9vbnN0dWRpb3Mu b3JnPgpTaWduZWQtb2ZmLWJ5OiBIYW5uZXMgRnJlZGVyaWMgU293YSA8aGFubmVzQHN0cmVzc2lu ZHVrdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1s b2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhm b3VuZGF0aW9uLm9yZz4KLS0tCiBkcml2ZXJzL25ldC90dW4uYyB8IDE4ICsrKysrKysrKysrKysr Ky0tLQogMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdHVuLmMgYi9kcml2ZXJzL25ldC90dW4uYwppbmRleCBi MzFhY2E4Li5hOTMxYjczIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90dW4uYworKysgYi9kcml2 ZXJzL25ldC90dW4uYwpAQCAtODE5LDcgKzgxOSwxOCBAQCBzdGF0aWMgdm9pZCB0dW5fbmV0X3Vu aW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogLyogTmV0IGRldmljZSBvcGVuLiAqLwogc3Rh dGljIGludCB0dW5fbmV0X29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKKwlzdHJ1Y3Qg dHVuX3N0cnVjdCAqdHVuID0gbmV0ZGV2X3ByaXYoZGV2KTsKKwlpbnQgaTsKKwogCW5ldGlmX3R4 X3N0YXJ0X2FsbF9xdWV1ZXMoZGV2KTsKKworCWZvciAoaSA9IDA7IGkgPCB0dW4tPm51bXF1ZXVl czsgaSsrKSB7CisJCXN0cnVjdCB0dW5fZmlsZSAqdGZpbGU7CisKKwkJdGZpbGUgPSBydG5sX2Rl cmVmZXJlbmNlKHR1bi0+dGZpbGVzW2ldKTsKKwkJdGZpbGUtPnNvY2tldC5zay0+c2tfd3JpdGVf c3BhY2UodGZpbGUtPnNvY2tldC5zayk7CisJfQorCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTExMTYs OSArMTEyNywxMCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHR1bl9jaHJfcG9sbChzdHJ1Y3QgZmls ZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdCkKIAlpZiAoIXNrYl9hcnJheV9lbXB0eSgmdGZpbGUt PnR4X2FycmF5KSkKIAkJbWFzayB8PSBQT0xMSU4gfCBQT0xMUkROT1JNOwogCi0JaWYgKHNvY2tf d3JpdGVhYmxlKHNrKSB8fAotCSAgICAoIXRlc3RfYW5kX3NldF9iaXQoU09DS1dRX0FTWU5DX05P U1BBQ0UsICZzay0+c2tfc29ja2V0LT5mbGFncykgJiYKLQkgICAgIHNvY2tfd3JpdGVhYmxlKHNr KSkpCisJaWYgKHR1bi0+ZGV2LT5mbGFncyAmIElGRl9VUCAmJgorCSAgICAoc29ja193cml0ZWFi bGUoc2spIHx8CisJICAgICAoIXRlc3RfYW5kX3NldF9iaXQoU09DS1dRX0FTWU5DX05PU1BBQ0Us ICZzay0+c2tfc29ja2V0LT5mbGFncykgJiYKKwkgICAgICBzb2NrX3dyaXRlYWJsZShzaykpKSkK IAkJbWFzayB8PSBQT0xMT1VUIHwgUE9MTFdSTk9STTsKIAogCWlmICh0dW4tPmRldi0+cmVnX3N0 YXRlICE9IE5FVFJFR19SRUdJU1RFUkVEKQotLSAKMi4xLjAKCgpGcm9tIDllMzgzNzVhNGIxNzQ4 OTQ2YWI0NmEzMTdkZWYzMDQ2YmI0MjVmMWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IEhhbm5lcyBGcmVkZXJpYyBTb3dhIDxoYW5uZXNAc3RyZXNzaW5kdWt0aW9uLm9yZz4KRGF0ZTog TW9uLCAxMyBNYXIgMjAxNyAwMDowMTozMCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDM3LzExMl0g ZGNjcDogZml4IG1lbW9yeSBsZWFrIGR1cmluZyB0ZWFyLWRvd24gb2YKIHVuc3VjY2Vzc2Z1bCBj b25uZWN0aW9uIHJlcXVlc3QKClsgVXBzdHJlYW0gY29tbWl0IDcyZWY5YzQxMjVjN2IyNTdlM2E3 MTRkNjJkNzc4YWI0NjU4M2Q2YTMgXQoKVGhpcyBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrLCB3 aGljaCBoYXBwZW5zIGlmIHRoZSBjb25uZWN0aW9uIHJlcXVlc3QKaXMgbm90IGZ1bGZpbGxlZCBi ZXR3ZWVuIHBhcnNpbmcgdGhlIERDQ1Agb3B0aW9ucyBhbmQgaGFuZGxpbmcgdGhlIFNZTgooYmVj YXVzZSBlLmcuIHRoZSBiYWNrbG9nIGlzIGZ1bGwpLCBiZWNhdXNlIHdlIGZvcmdvdCB0byBmcmVl IHRoZQpsaXN0IG9mIGFjayB2ZWN0b3JzLgoKUmVwb3J0ZWQtYnk6IEppYW53ZW4gSmkgPGppamlA cmVkaGF0LmNvbT4KU2lnbmVkLW9mZi1ieTogSGFubmVzIEZyZWRlcmljIFNvd2EgPGhhbm5lc0Bz dHJlc3NpbmR1a3Rpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVt QGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2to QGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogbmV0L2RjY3AvY2NpZHMvY2NpZDIuYyB8IDEgKwog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0IGEvbmV0L2RjY3AvY2Np ZHMvY2NpZDIuYyBiL25ldC9kY2NwL2NjaWRzL2NjaWQyLmMKaW5kZXggZjA1MzE5OC4uNWUzYTcz MCAxMDA2NDQKLS0tIGEvbmV0L2RjY3AvY2NpZHMvY2NpZDIuYworKysgYi9uZXQvZGNjcC9jY2lk cy9jY2lkMi5jCkBAIC03NDksNiArNzQ5LDcgQEAgc3RhdGljIHZvaWQgY2NpZDJfaGNfdHhfZXhp dChzdHJ1Y3Qgc29jayAqc2spCiAJZm9yIChpID0gMDsgaSA8IGhjLT50eF9zZXFidWZjOyBpKysp CiAJCWtmcmVlKGhjLT50eF9zZXFidWZbaV0pOwogCWhjLT50eF9zZXFidWZjID0gMDsKKwlkY2Nw X2Fja3ZlY19wYXJzZWRfY2xlYW51cCgmaGMtPnR4X2F2X2NodW5rcyk7CiB9CiAKIHN0YXRpYyB2 b2lkIGNjaWQyX2hjX3J4X3BhY2tldF9yZWN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1 ZmYgKnNrYikKLS0gCjIuMS4wCgoKRnJvbSAxNDExNzA3YWNiODVjNTE0YzYwM2Y2OTIzMjdjOThk YjQ4MTI3OTAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgR3JhZiA8dGdy YWZAc3V1Zy5jaD4KRGF0ZTogVHVlLCAxOCBPY3QgMjAxNiAxOTo1MToxOSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMDM4LzExMl0gYnBmOiBEZXRlY3QgaWRlbnRpY2FsIFBUUl9UT19NQVBfVkFMVUVf T1JfTlVMTAogcmVnaXN0ZXJzCgpbIFVwc3RyZWFtIGNvbW1pdCA1N2EwOWJmMGE0MTY3MDA2NzZl NzcxMDJjMjhmOWNmY2I0ODI2N2UwIF0KCkEgQlBGIHByb2dyYW0gaXMgcmVxdWlyZWQgdG8gY2hl Y2sgdGhlIHJldHVybiByZWdpc3RlciBvZiBhCm1hcF9lbGVtX2xvb2t1cCgpIGNhbGwgYmVmb3Jl IGFjY2Vzc2luZyBtZW1vcnkuIFRoZSB2ZXJpZmllciBrZWVwcwp0cmFjayBvZiB0aGlzIGJ5IGNv bnZlcnRpbmcgdGhlIHR5cGUgb2YgdGhlIHJlc3VsdCByZWdpc3RlciBmcm9tClBUUl9UT19NQVBf VkFMVUVfT1JfTlVMTCB0byBQVFJfVE9fTUFQX1ZBTFVFIGFmdGVyIGEgY29uZGl0aW9uYWwKanVt cCBlbnN1cmVzIHNhZmV0eS4gVGhpcyBjaGVjayBpcyBjdXJyZW50bHkgZXhjbHVzaXZlbHkgcGVy Zm9ybWVkCmZvciB0aGUgcmVzdWx0IHJlZ2lzdGVyIDAuCgpJbiB0aGUgZXZlbnQgdGhlIGNvbXBp bGVyIHJlb3JkZXJzIGluc3RydWN0aW9ucywgQlBGX01PVjY0X1JFRwppbnN0cnVjdGlvbnMgbWF5 IGJlIG1vdmVkIGJlZm9yZSB0aGUgY29uZGl0aW9uYWwganVtcCB3aGljaCBjYXVzZXMKdGhlbSB0 byBrZWVwIHRoZWlyIHR5cGUgUFRSX1RPX01BUF9WQUxVRV9PUl9OVUxMIHRvIHdoaWNoIHRoZQp2 ZXJpZmllciBvYmplY3RzIHdoZW4gdGhlIHJlZ2lzdGVyIGlzIGFjY2Vzc2VkOgoKMDogKGI3KSBy MSA9IDEwCjE6ICg3YikgKih1NjQgKikocjEwIC04KSA9IHIxCjI6IChiZikgcjIgPSByMTAKMzog KDA3KSByMiArPSAtOAo0OiAoMTgpIHIxID0gMHg1OWMwMDAwMAo2OiAoODUpIGNhbGwgMQo3OiAo YmYpIHI0ID0gcjAKODogKDE1KSBpZiByMCA9PSAweDAgZ290byBwYysxCiBSMD1tYXBfdmFsdWUo a3M9OCx2cz04KSBSND1tYXBfdmFsdWVfb3JfbnVsbChrcz04LHZzPTgpIFIxMD1mcAo5OiAoN2Ep ICoodTY0ICopKHI0ICswKSA9IDAKUjQgaW52YWxpZCBtZW0gYWNjZXNzICdtYXBfdmFsdWVfb3Jf bnVsbCcKClRoaXMgY29tbWl0IGV4dGVuZHMgdGhlIHZlcmlmaWVyIHRvIGtlZXAgdHJhY2sgb2Yg YWxsIGlkZW50aWNhbApQVFJfVE9fTUFQX1ZBTFVFX09SX05VTEwgcmVnaXN0ZXJzIGFmdGVyIGEg bWFwX2VsZW1fbG9va3VwKCkgYnkKYXNzaWduaW5nIHRoZW0gYW4gSUQgYW5kIHRoZW4gbWFya2lu ZyB0aGVtIGFsbCB3aGVuIHRoZSBjb25kaXRpb25hbApqdW1wIGlzIG9ic2VydmVkLgoKU2lnbmVk LW9mZi1ieTogVGhvbWFzIEdyYWYgPHRncmFmQHN1dWcuY2g+ClJldmlld2VkLWJ5OiBKb3NlZiBC YWNpayA8amJhY2lrQGZiLmNvbT4KQWNrZWQtYnk6IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlv Z2VhcmJveC5uZXQ+CkFja2VkLWJ5OiBBbGV4ZWkgU3Rhcm92b2l0b3YgPGFzdEBrZXJuZWwub3Jn PgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNp Z25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5v cmc+Ci0tLQogaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaCB8ICAyICstCiBrZXJuZWwvYnBm L3ZlcmlmaWVyLmMgICAgICAgIHwgNjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaCBiL2luY2x1 ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmgKaW5kZXggNmFhZjQyNS4uNzQ1M2MxMiAxMDA2NDQKLS0t IGEvaW5jbHVkZS9saW51eC9icGZfdmVyaWZpZXIuaAorKysgYi9pbmNsdWRlL2xpbnV4L2JwZl92 ZXJpZmllci5oCkBAIC0yNCwxMyArMjQsMTMgQEAgc3RydWN0IGJwZl9yZWdfc3RhdGUgewogCSAq LwogCXM2NCBtaW5fdmFsdWU7CiAJdTY0IG1heF92YWx1ZTsKKwl1MzIgaWQ7CiAJdW5pb24gewog CQkvKiB2YWxpZCB3aGVuIHR5cGUgPT0gQ09OU1RfSU1NIHwgUFRSX1RPX1NUQUNLIHwgVU5LTk9X Tl9WQUxVRSAqLwogCQlzNjQgaW1tOwogCiAJCS8qIHZhbGlkIHdoZW4gdHlwZSA9PSBQVFJfVE9f UEFDS0VUKiAqLwogCQlzdHJ1Y3QgewotCQkJdTMyIGlkOwogCQkJdTE2IG9mZjsKIAkJCXUxNiBy YW5nZTsKIAkJfTsKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9i cGYvdmVyaWZpZXIuYwppbmRleCA4MTk5ODIxLi5jNDI4YzlmIDEwMDY0NAotLS0gYS9rZXJuZWwv YnBmL3ZlcmlmaWVyLmMKKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC0yMTIsOSArMjEy LDEwIEBAIHN0YXRpYyB2b2lkIHByaW50X3ZlcmlmaWVyX3N0YXRlKHN0cnVjdCBicGZfdmVyaWZp ZXJfc3RhdGUgKnN0YXRlKQogCQllbHNlIGlmICh0ID09IENPTlNUX1BUUl9UT19NQVAgfHwgdCA9 PSBQVFJfVE9fTUFQX1ZBTFVFIHx8CiAJCQkgdCA9PSBQVFJfVE9fTUFQX1ZBTFVFX09SX05VTEwg fHwKIAkJCSB0ID09IFBUUl9UT19NQVBfVkFMVUVfQURKKQotCQkJdmVyYm9zZSgiKGtzPSVkLHZz PSVkKSIsCisJCQl2ZXJib3NlKCIoa3M9JWQsdnM9JWQsaWQ9JXUpIiwKIAkJCQlyZWctPm1hcF9w dHItPmtleV9zaXplLAotCQkJCXJlZy0+bWFwX3B0ci0+dmFsdWVfc2l6ZSk7CisJCQkJcmVnLT5t YXBfcHRyLT52YWx1ZV9zaXplLAorCQkJCXJlZy0+aWQpOwogCQlpZiAocmVnLT5taW5fdmFsdWUg IT0gQlBGX1JFR0lTVEVSX01JTl9SQU5HRSkKIAkJCXZlcmJvc2UoIixtaW5fdmFsdWU9JWxsZCIs CiAJCQkJKGxvbmcgbG9uZylyZWctPm1pbl92YWx1ZSk7CkBAIC00NDcsNiArNDQ4LDcgQEAgc3Rh dGljIHZvaWQgbWFya19yZWdfdW5rbm93bl92YWx1ZShzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVn cywgdTMyIHJlZ25vKQogewogCUJVR19PTihyZWdubyA+PSBNQVhfQlBGX1JFRyk7CiAJcmVnc1ty ZWdub10udHlwZSA9IFVOS05PV05fVkFMVUU7CisJcmVnc1tyZWdub10uaWQgPSAwOwogCXJlZ3Nb cmVnbm9dLmltbSA9IDA7CiB9CiAKQEAgLTEyNTIsNiArMTI1NCw3IEBAIHN0YXRpYyBpbnQgY2hl Y2tfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBpbnQgZnVuY19pZCkKIAkJCXJl dHVybiAtRUlOVkFMOwogCQl9CiAJCXJlZ3NbQlBGX1JFR18wXS5tYXBfcHRyID0gbWV0YS5tYXBf cHRyOworCQlyZWdzW0JQRl9SRUdfMF0uaWQgPSArK2Vudi0+aWRfZ2VuOwogCX0gZWxzZSB7CiAJ CXZlcmJvc2UoInVua25vd24gcmV0dXJuIHR5cGUgJWQgb2YgZnVuYyAlZFxuIiwKIAkJCWZuLT5y ZXRfdHlwZSwgZnVuY19pZCk7CkBAIC0xNjY4LDggKzE2NzEsNyBAQCBzdGF0aWMgaW50IGNoZWNr X2FsdV9vcChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmlu c24pCiAJCQkJCQlpbnNuLT5zcmNfcmVnKTsKIAkJCQkJcmV0dXJuIC1FQUNDRVM7CiAJCQkJfQot CQkJCXJlZ3NbaW5zbi0+ZHN0X3JlZ10udHlwZSA9IFVOS05PV05fVkFMVUU7Ci0JCQkJcmVnc1tp bnNuLT5kc3RfcmVnXS5tYXBfcHRyID0gTlVMTDsKKwkJCQltYXJrX3JlZ191bmtub3duX3ZhbHVl KHJlZ3MsIGluc24tPmRzdF9yZWcpOwogCQkJfQogCQl9IGVsc2UgewogCQkJLyogY2FzZTogUiA9 IGltbQpAQCAtMTkzMSw2ICsxOTMzLDM4IEBAIHN0YXRpYyB2b2lkIHJlZ19zZXRfbWluX21heF9p bnYoc3RydWN0IGJwZl9yZWdfc3RhdGUgKnRydWVfcmVnLAogCWNoZWNrX3JlZ19vdmVyZmxvdyh0 cnVlX3JlZyk7CiB9CiAKK3N0YXRpYyB2b2lkIG1hcmtfbWFwX3JlZyhzdHJ1Y3QgYnBmX3JlZ19z dGF0ZSAqcmVncywgdTMyIHJlZ25vLCB1MzIgaWQsCisJCQkgZW51bSBicGZfcmVnX3R5cGUgdHlw ZSkKK3sKKwlzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnID0gJnJlZ3NbcmVnbm9dOworCisJaWYg KHJlZy0+dHlwZSA9PSBQVFJfVE9fTUFQX1ZBTFVFX09SX05VTEwgJiYgcmVnLT5pZCA9PSBpZCkg eworCQlyZWctPnR5cGUgPSB0eXBlOworCQlpZiAodHlwZSA9PSBVTktOT1dOX1ZBTFVFKQorCQkJ bWFya19yZWdfdW5rbm93bl92YWx1ZShyZWdzLCByZWdubyk7CisJfQorfQorCisvKiBUaGUgbG9n aWMgaXMgc2ltaWxhciB0byBmaW5kX2dvb2RfcGt0X3BvaW50ZXJzKCksIGJvdGggY291bGQgZXZl bnR1YWxseQorICogYmUgZm9sZGVkIHRvZ2V0aGVyIGF0IHNvbWUgcG9pbnQuCisgKi8KK3N0YXRp YyB2b2lkIG1hcmtfbWFwX3JlZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9zdGF0ZSAqc3RhdGUsIHUz MiByZWdubywKKwkJCSAgZW51bSBicGZfcmVnX3R5cGUgdHlwZSkKK3sKKwlzdHJ1Y3QgYnBmX3Jl Z19zdGF0ZSAqcmVncyA9IHN0YXRlLT5yZWdzOworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8 IE1BWF9CUEZfUkVHOyBpKyspCisJCW1hcmtfbWFwX3JlZyhyZWdzLCBpLCByZWdzW3JlZ25vXS5p ZCwgdHlwZSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgTUFYX0JQRl9TVEFDSzsgaSArPSBCUEZfUkVH X1NJWkUpIHsKKwkJaWYgKHN0YXRlLT5zdGFja19zbG90X3R5cGVbaV0gIT0gU1RBQ0tfU1BJTEwp CisJCQljb250aW51ZTsKKwkJbWFya19tYXBfcmVnKHN0YXRlLT5zcGlsbGVkX3JlZ3MsIGkgLyBC UEZfUkVHX1NJWkUsCisJCQkgICAgIHJlZ3NbcmVnbm9dLmlkLCB0eXBlKTsKKwl9Cit9CisKIHN0 YXRpYyBpbnQgY2hlY2tfY29uZF9qbXBfb3Aoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwK IAkJCSAgICAgc3RydWN0IGJwZl9pbnNuICppbnNuLCBpbnQgKmluc25faWR4KQogewpAQCAtMjAx OCwxOCArMjA1MiwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX2NvbmRfam1wX29wKHN0cnVjdCBicGZf dmVyaWZpZXJfZW52ICplbnYsCiAJaWYgKEJQRl9TUkMoaW5zbi0+Y29kZSkgPT0gQlBGX0sgJiYK IAkgICAgaW5zbi0+aW1tID09IDAgJiYgKG9wY29kZSA9PSBCUEZfSkVRIHx8IG9wY29kZSA9PSBC UEZfSk5FKSAmJgogCSAgICBkc3RfcmVnLT50eXBlID09IFBUUl9UT19NQVBfVkFMVUVfT1JfTlVM TCkgewotCQlpZiAob3Bjb2RlID09IEJQRl9KRVEpIHsKLQkJCS8qIG5leHQgZmFsbHRocm91Z2gg aW5zbiBjYW4gYWNjZXNzIG1lbW9yeSB2aWEKLQkJCSAqIHRoaXMgcmVnaXN0ZXIKLQkJCSAqLwot CQkJcmVnc1tpbnNuLT5kc3RfcmVnXS50eXBlID0gUFRSX1RPX01BUF9WQUxVRTsKLQkJCS8qIGJy YW5jaCB0YXJnZXIgY2Fubm90IGFjY2VzcyBpdCwgc2luY2UgcmVnID09IDAgKi8KLQkJCW1hcmtf cmVnX3Vua25vd25fdmFsdWUob3RoZXJfYnJhbmNoLT5yZWdzLAotCQkJCQkgICAgICAgaW5zbi0+ ZHN0X3JlZyk7Ci0JCX0gZWxzZSB7Ci0JCQlvdGhlcl9icmFuY2gtPnJlZ3NbaW5zbi0+ZHN0X3Jl Z10udHlwZSA9IFBUUl9UT19NQVBfVkFMVUU7Ci0JCQltYXJrX3JlZ191bmtub3duX3ZhbHVlKHJl Z3MsIGluc24tPmRzdF9yZWcpOwotCQl9CisJCS8qIE1hcmsgYWxsIGlkZW50aWNhbCBtYXAgcmVn aXN0ZXJzIGluIGVhY2ggYnJhbmNoIGFzIGVpdGhlcgorCQkgKiBzYWZlIG9yIHVua25vd24gZGVw ZW5kaW5nIFIgPT0gMCBvciBSICE9IDAgY29uZGl0aW9uYWwuCisJCSAqLworCQltYXJrX21hcF9y ZWdzKHRoaXNfYnJhbmNoLCBpbnNuLT5kc3RfcmVnLAorCQkJICAgICAgb3Bjb2RlID09IEJQRl9K RVEgPyBQVFJfVE9fTUFQX1ZBTFVFIDogVU5LTk9XTl9WQUxVRSk7CisJCW1hcmtfbWFwX3JlZ3Mo b3RoZXJfYnJhbmNoLCBpbnNuLT5kc3RfcmVnLAorCQkJICAgICAgb3Bjb2RlID09IEJQRl9KRVEg PyBVTktOT1dOX1ZBTFVFIDogUFRSX1RPX01BUF9WQUxVRSk7CiAJfSBlbHNlIGlmIChCUEZfU1JD KGluc24tPmNvZGUpID09IEJQRl9YICYmIG9wY29kZSA9PSBCUEZfSkdUICYmCiAJCSAgIGRzdF9y ZWctPnR5cGUgPT0gUFRSX1RPX1BBQ0tFVCAmJgogCQkgICByZWdzW2luc24tPnNyY19yZWddLnR5 cGUgPT0gUFRSX1RPX1BBQ0tFVF9FTkQpIHsKLS0gCjIuMS4wCgoKRnJvbSBiN2Y1YWExY2EwYmVk YmQxMDliZTc1NjNmNmE5NGM5YTM3NzE0NTM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBBbGV4ZWkgU3Rhcm92b2l0b3YgPGFzdEBmYi5jb20+CkRhdGU6IFdlZCwgNyBEZWMgMjAxNiAx MDo1Nzo1OSAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggMDM5LzExMl0gYnBmOiBmaXggc3RhdGUgZXF1 aXZhbGVuY2UKClsgVXBzdHJlYW0gY29tbWl0IGQyYTRkZDM3ZjZiNDFmYmNhZDc2ZWZiZjYzMTI0 ZWIzMTI2YzY2ZmUgXQoKQ29tbW1pdHMgNTdhMDliZjBhNDE2ICgiYnBmOiBEZXRlY3QgaWRlbnRp Y2FsIFBUUl9UT19NQVBfVkFMVUVfT1JfTlVMTCByZWdpc3RlcnMiKQphbmQgNDg0NjExMzU3YzE5 ICgiYnBmOiBhbGxvdyBhY2Nlc3MgaW50byBtYXAgdmFsdWUgYXJyYXlzIikgYnkgdGhlbXNlbHZl cwphcmUgY29ycmVjdCwgYnV0IGluIGNvbWJpbmF0aW9uIHRoZXkgbWFrZSBzdGF0ZSBlcXVpdmFs ZW5jZSBpZ25vcmUgJ2lkJyBmaWVsZApvZiB0aGUgcmVnaXN0ZXIgc3RhdGUgd2hpY2ggY2FuIGxl YWQgdG8gYWNjZXB0aW5nIGludmFsaWQgcHJvZ3JhbS4KCkZpeGVzOiA1N2EwOWJmMGE0MTYgKCJi cGY6IERldGVjdCBpZGVudGljYWwgUFRSX1RPX01BUF9WQUxVRV9PUl9OVUxMIHJlZ2lzdGVycyIp CkZpeGVzOiA0ODQ2MTEzNTdjMTkgKCJicGY6IGFsbG93IGFjY2VzcyBpbnRvIG1hcCB2YWx1ZSBh cnJheXMiKQpTaWduZWQtb2ZmLWJ5OiBBbGV4ZWkgU3Rhcm92b2l0b3YgPGFzdEBrZXJuZWwub3Jn PgpBY2tlZC1ieTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KQWNrZWQt Ynk6IFRob21hcyBHcmFmIDx0Z3JhZkBzdXVnLmNoPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBN aWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFy dG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogaW5jbHVkZS9saW51eC9icGZf dmVyaWZpZXIuaCB8IDE0ICsrKysrKystLS0tLS0tCiBrZXJuZWwvYnBmL3ZlcmlmaWVyLmMgICAg ICAgIHwgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmggYi9pbmNsdWRl L2xpbnV4L2JwZl92ZXJpZmllci5oCmluZGV4IDc0NTNjMTIuLmExM2IwMzEgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvbGludXgvYnBmX3ZlcmlmaWVyLmgKKysrIGIvaW5jbHVkZS9saW51eC9icGZfdmVy aWZpZXIuaApAQCAtMTgsMTMgKzE4LDYgQEAKIAogc3RydWN0IGJwZl9yZWdfc3RhdGUgewogCWVu dW0gYnBmX3JlZ190eXBlIHR5cGU7Ci0JLyoKLQkgKiBVc2VkIHRvIGRldGVybWluZSBpZiBhbnkg bWVtb3J5IGFjY2VzcyB1c2luZyB0aGlzIHJlZ2lzdGVyIHdpbGwKLQkgKiByZXN1bHQgaW4gYSBi YWQgYWNjZXNzLgotCSAqLwotCXM2NCBtaW5fdmFsdWU7Ci0JdTY0IG1heF92YWx1ZTsKLQl1MzIg aWQ7CiAJdW5pb24gewogCQkvKiB2YWxpZCB3aGVuIHR5cGUgPT0gQ09OU1RfSU1NIHwgUFRSX1RP X1NUQUNLIHwgVU5LTk9XTl9WQUxVRSAqLwogCQlzNjQgaW1tOwpAQCAtNDAsNiArMzMsMTMgQEAg c3RydWN0IGJwZl9yZWdfc3RhdGUgewogCQkgKi8KIAkJc3RydWN0IGJwZl9tYXAgKm1hcF9wdHI7 CiAJfTsKKwl1MzIgaWQ7CisJLyogVXNlZCB0byBkZXRlcm1pbmUgaWYgYW55IG1lbW9yeSBhY2Nl c3MgdXNpbmcgdGhpcyByZWdpc3RlciB3aWxsCisJICogcmVzdWx0IGluIGEgYmFkIGFjY2Vzcy4g VGhlc2UgdHdvIGZpZWxkcyBtdXN0IGJlIGxhc3QuCisJICogU2VlIHN0YXRlc19lcXVhbCgpCisJ ICovCisJczY0IG1pbl92YWx1ZTsKKwl1NjQgbWF4X3ZhbHVlOwogfTsKIAogZW51bSBicGZfc3Rh Y2tfc2xvdF90eXBlIHsKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5l bC9icGYvdmVyaWZpZXIuYwppbmRleCBjNDI4YzlmLi42MDM2ZDFlIDEwMDY0NAotLS0gYS9rZXJu ZWwvYnBmL3ZlcmlmaWVyLmMKKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jCkBAIC0yNDk4LDcg KzI0OTgsNyBAQCBzdGF0aWMgYm9vbCBzdGF0ZXNfZXF1YWwoc3RydWN0IGJwZl92ZXJpZmllcl9l bnYgKmVudiwKIAkJICogd2UgZGlkbid0IGRvIGEgdmFyaWFibGUgYWNjZXNzIGludG8gYSBtYXAg dGhlbiB3ZSBhcmUgYS1vay4KIAkJICovCiAJCWlmICghdmFybGVuX21hcF9hY2Nlc3MgJiYKLQkJ ICAgIHJvbGQtPnR5cGUgPT0gcmN1ci0+dHlwZSAmJiByb2xkLT5pbW0gPT0gcmN1ci0+aW1tKQor CQkgICAgbWVtY21wKHJvbGQsIHJjdXIsIG9mZnNldG9mZW5kKHN0cnVjdCBicGZfcmVnX3N0YXRl LCBpZCkpID09IDApCiAJCQljb250aW51ZTsKIAogCQkvKiBJZiB3ZSBkaWRuJ3QgbWFwIGFjY2Vz cyB0aGVuIGFnYWluIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlCi0tIAoyLjEuMAoKCkZyb20gMTg4 OWQ2ZDliNWU3NjdjNzA3MGFkMzFmOTMzNzFkY2IwNWIwY2VhNCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KRGF0ZTog VGh1LCAxNSBEZWMgMjAxNiAwMTozMDowNiArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDQwLzExMl0g YnBmOiBmaXggcmVncmVzc2lvbiBvbiB2ZXJpZmllciBwcnVuaW5nIHdydCBtYXAKIGxvb2t1cHMK ClsgVXBzdHJlYW0gY29tbWl0IGEwOGRkMGRhNTMwN2JhMDEyOTVjODM4MzkyM2U1MWU3OTk3YzM1 NzYgXQoKQ29tbWl0IDU3YTA5YmYwYTQxNiAoImJwZjogRGV0ZWN0IGlkZW50aWNhbCBQVFJfVE9f TUFQX1ZBTFVFX09SX05VTEwKcmVnaXN0ZXJzIikgaW50cm9kdWNlZCBhIHJlZ3Jlc3Npb24gd2hl cmUgZXhpc3RpbmcgcHJvZ3JhbXMgc3RvcHBlZApsb2FkaW5nIGR1ZSB0byByZWFjaGluZyB0aGUg dmVyaWZpZXIncyBtYXhpbXVtIGNvbXBsZXhpdHkgbGltaXQsCndoZXJlYXMgcHJpb3IgdG8gdGhp cyBjb21taXQgdGhleSB3ZXJlIGxvYWRpbmcganVzdCBmaW5lOyB0aGUgYWZmZWN0ZWQKcHJvZ3Jh bSBoYXMgcm91Z2hseSAyayBpbnN0cnVjdGlvbnMuCgpXaGF0IHdhcyBmb3VuZCBpcyB0aGF0IHN0 YXRlIHBydW5pbmcgY291bGRuJ3QgYmUgcGVyZm9ybWVkIGVmZmVjdGl2ZWx5CmFueW1vcmUgZHVl IHRvIG1pc21hdGNoZXMgb2YgdGhlIHZlcmlmaWVyJ3MgcmVnaXN0ZXIgc3RhdGUsIGluIHBhcnRp Y3VsYXIKaW4gdGhlIGlkIHRyYWNraW5nLiBJdCBkb2Vzbid0IG1lYW4gdGhhdCA1N2EwOWJmMGE0 MTYgaXMgaW5jb3JyZWN0IHBlcgpzZSwgYnV0IHJhdGhlciB0aGF0IHZlcmlmaWVyIG5lZWRzIHRv IHBlcmZvcm0gYSBsb3QgbW9yZSB3b3JrIGZvciB0aGUKc2FtZSBwcm9ncmFtIHdpdGggcmVnYXJk cyB0byBpbnZvbHZlZCBtYXAgbG9va3Vwcy4KClNpbmNlIGNvbW1pdCA1N2EwOWJmMGE0MTYgaXMg b25seSBhYm91dCB0cmFja2luZyByZWdpc3RlcnMgd2l0aCB0eXBlClBUUl9UT19NQVBfVkFMVUVf T1JfTlVMTCwgdGhlIGlkIGlzIG9ubHkgbmVlZGVkIHRvIGZvbGxvdyByZWdpc3RlcnMKdW50aWwg dGhleSBhcmUgcHJvbW90ZWQgdGhyb3VnaCBwYXR0ZXJuIG1hdGNoaW5nIHdpdGggYSBOVUxMIGNo ZWNrIHRvCmVpdGhlciBQVFJfVE9fTUFQX1ZBTFVFIG9yIFVOS05PV05fVkFMVUUgdHlwZS4gQWZ0 ZXIgdGhhdCBwb2ludCwgdGhlCmlkIGJlY29tZXMgaXJyZWxldmFudCBmb3IgdGhlIHRyYW5zaXRp b25lZCB0eXBlcy4KCkZvciBVTktOT1dOX1ZBTFVFLCBpZCBpcyBhbHJlYWR5IHJlc2V0IHRvIDAg dmlhIG1hcmtfcmVnX3Vua25vd25fdmFsdWUoKSwKYnV0IG5vdCBzbyBmb3IgUFRSX1RPX01BUF9W QUxVRSB3aGVyZSBpZCBpcyBiZWNvbWluZyBzdGFsZS4gSXQncyBldmVuCnRyYW5zZmVycmVkIGZ1 cnRoZXIgaW50byBvdGhlciB0eXBlcyB0aGF0IGRvbid0IG1ha2UgdXNlIG9mIGl0LiBBbW9uZwpv dGhlcnMsIG9uZSBleGFtcGxlIGlzIHdoZXJlIFVOS05PV05fVkFMVUUgaXMgc2V0IG9uIGZ1bmN0 aW9uIGNhbGwKcmV0dXJuIHdpdGggUkVUX0lOVEVHRVIgcmV0dXJuIHR5cGUuCgpzdGF0ZXNfZXF1 YWwoKSB3aWxsIHRoZW4gZmFsbCB0aHJvdWdoIHRoZSBtZW1jbXAoKSBvbiByZWdpc3RlciBzdGF0 ZTsKbm90ZSB0aGF0IHRoZSBzZWNvbmQgbWVtY21wKCkgdXNlcyBvZmZzZXRvZmVuZCgpLCBzbyB0 aGUgaWQgaXMgcGFydCBvZgp0aGF0IHNpbmNlIGQyYTRkZDM3ZjZiNCAoImJwZjogZml4IHN0YXRl IGVxdWl2YWxlbmNlIikuIEJ1dCB0aGUgYmlzZWN0CnBvaW50ZWQgYWxyZWFkeSB0byA1N2EwOWJm MGE0MTYsIHdoZXJlIHdlIHJlYWxseSByZWFjaCBiZXlvbmQgY29tcGxleGl0eQpsaW1pdC4gV2hh dCBJIGZvdW5kIHdhcyB0aGF0IHN0YXRlc19lcXVhbCgpIG9mdGVuIGZhaWxlZCBpbiB0aGlzCmNh c2UgZHVlIHRvIGlkIG1pc21hdGNoZXMgaW4gc3BpbGxlZCByZWdzIHdpdGggcmVnaXN0ZXJzIGlu IHR5cGUKUFRSX1RPX01BUF9WQUxVRS4gVW5saWtlIG5vbi1zcGlsbGVkIHJlZ3MsIHNwaWxsZWQg cmVncyBqdXN0IHBlcmZvcm0KYSBtZW1jbXAoKSBvbiB0aGVpciByZWcgc3RhdGUgYW5kIGRvbid0 IGhhdmUgYW55IG90aGVyIG9wdGltaXphdGlvbnMKaW4gcGxhY2UsIHRoZXJlZm9yZSBhbHNvIGlk IHdhcyByZWxldmFudCBpbiB0aGlzIGNhc2UgZm9yIG1ha2luZyBhCnBydW5pbmcgZGVjaXNpb24u CgpXZSBjYW4gc2FmZWx5IHJlc2V0IGlkIHRvIDAgYXMgd2VsbCB3aGVuIGNvbnZlcnRpbmcgdG8g UFRSX1RPX01BUF9WQUxVRS4KRm9yIHRoZSBhZmZlY3RlZCBwcm9ncmFtLCBpdCByZXN1bHRlZCBp biBhIH4xNyBmb2xkIHJlZHVjdGlvbiBvZgpjb21wbGV4aXR5IGFuZCBsZXQgdGhlIHByb2dyYW0g bG9hZCBmaW5lIGFnYWluLiBTZWxmdGVzdCBzdWl0ZSBhbHNvCnJ1bnMgZmluZS4gVGhlIG9ubHkg b3RoZXIgcGxhY2Ugd2hlcmUgZW52LT5pZF9nZW4gaXMgdXNlZCBjdXJyZW50bHkgaXMKdGhyb3Vn aCBkaXJlY3QgcGFja2V0IGFjY2VzcywgYnV0IGZvciB0aGVzZSBjYXNlcyBpZCBpcyBsb25nIGxp dmluZywgdGh1cwphIGRpZmZlcmVudCBzY2VuYXJpby4KCkFsc28sIHRoZSBjdXJyZW50IGxvZ2lj IGluIG1hcmtfbWFwX3JlZ3MoKSBpcyBub3QgZnVsbHkgY29ycmVjdCB3aGVuCm1hcmtpbmcgTlVM TCBicmFuY2ggd2l0aCBVTktOT1dOX1ZBTFVFLiBXZSBuZWVkIHRvIGNhY2hlIHRoZSBkZXN0aW5h dGlvbgpyZWcncyBpZCBpbiBhbnkgY2FzZS4gT3RoZXJ3aXNlLCBvbmNlIHdlIG1hcmtlZCB0aGF0 IHJlZyBhcyBVTktOT1dOX1ZBTFVFLAppdCdzIGlkIGlzIHJlc2V0IGFuZCBhbnkgc3Vic2VxdWVu dCByZWdpc3RlcnMgdGhhdCBob2xkIHRoZSBvcmlnaW5hbCBpZAphbmQgYXJlIG9mIHR5cGUgUFRS X1RPX01BUF9WQUxVRV9PUl9OVUxMIHdvbid0IGJlIG1hcmtlZCBVTktOT1dOX1ZBTFVFCmFueW1v cmUsIHNpbmNlIG1hcmtfbWFwX3JlZygpIHJldXNlcyB0aGUgdW5jYWNoZWQgcmVnc1tyZWdub10u aWQgdGhhdAp3YXMganVzdCBvdmVycmlkZGVuLiBOb3RlLCB3ZSBkb24ndCBuZWVkIHRvIGNhY2hl IGl0IG91dHNpZGUgb2YKbWFya19tYXBfcmVncygpLCBzaW5jZSBpdCdzIGNhbGxlZCBvbmNlIG9u IHRoaXNfYnJhbmNoIGFuZCB0aGUgb3RoZXIKdGltZSBvbiBvdGhlcl9icmFuY2gsIHdoaWNoIGFy ZSBib3RoIHR3byBpbmRlcGVuZGVudCB2ZXJpZmllciBzdGF0ZXMuCkEgdGVzdCBjYXNlIGZvciB0 aGlzIGlzIGFkZGVkIGhlcmUsIHRvby4KCkZpeGVzOiA1N2EwOWJmMGE0MTYgKCJicGY6IERldGVj dCBpZGVudGljYWwgUFRSX1RPX01BUF9WQUxVRV9PUl9OVUxMIHJlZ2lzdGVycyIpClNpZ25lZC1v ZmYtYnk6IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+CkFja2VkLWJ5OiBU aG9tYXMgR3JhZiA8dGdyYWZAc3V1Zy5jaD4KQWNrZWQtYnk6IEFsZXhlaSBTdGFyb3ZvaXRvdiA8 YXN0QGtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2 ZW1sb2Z0Lm5ldD4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGlu dXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBrZXJuZWwvYnBmL3ZlcmlmaWVyLmMgfCAxMSArKysrKysr Ky0tLQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMK aW5kZXggNjAzNmQxZS4uYTk2N2FlOCAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5j CisrKyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpAQCAtMTk0MCw2ICsxOTQwLDExIEBAIHN0YXRp YyB2b2lkIG1hcmtfbWFwX3JlZyhzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVncywgdTMyIHJlZ25v LCB1MzIgaWQsCiAKIAlpZiAocmVnLT50eXBlID09IFBUUl9UT19NQVBfVkFMVUVfT1JfTlVMTCAm JiByZWctPmlkID09IGlkKSB7CiAJCXJlZy0+dHlwZSA9IHR5cGU7CisJCS8qIFdlIGRvbid0IG5l ZWQgaWQgZnJvbSB0aGlzIHBvaW50IG9ud2FyZHMgYW55bW9yZSwgdGh1cyB3ZQorCQkgKiBzaG91 bGQgYmV0dGVyIHJlc2V0IGl0LCBzbyB0aGF0IHN0YXRlIHBydW5pbmcgaGFzIGNoYW5jZXMKKwkJ ICogdG8gdGFrZSBlZmZlY3QuCisJCSAqLworCQlyZWctPmlkID0gMDsKIAkJaWYgKHR5cGUgPT0g VU5LTk9XTl9WQUxVRSkKIAkJCW1hcmtfcmVnX3Vua25vd25fdmFsdWUocmVncywgcmVnbm8pOwog CX0KQEAgLTE5NTIsMTYgKzE5NTcsMTYgQEAgc3RhdGljIHZvaWQgbWFya19tYXBfcmVncyhzdHJ1 Y3QgYnBmX3ZlcmlmaWVyX3N0YXRlICpzdGF0ZSwgdTMyIHJlZ25vLAogCQkJICBlbnVtIGJwZl9y ZWdfdHlwZSB0eXBlKQogewogCXN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWdzID0gc3RhdGUtPnJl Z3M7CisJdTMyIGlkID0gcmVnc1tyZWdub10uaWQ7CiAJaW50IGk7CiAKIAlmb3IgKGkgPSAwOyBp IDwgTUFYX0JQRl9SRUc7IGkrKykKLQkJbWFya19tYXBfcmVnKHJlZ3MsIGksIHJlZ3NbcmVnbm9d LmlkLCB0eXBlKTsKKwkJbWFya19tYXBfcmVnKHJlZ3MsIGksIGlkLCB0eXBlKTsKIAogCWZvciAo aSA9IDA7IGkgPCBNQVhfQlBGX1NUQUNLOyBpICs9IEJQRl9SRUdfU0laRSkgewogCQlpZiAoc3Rh dGUtPnN0YWNrX3Nsb3RfdHlwZVtpXSAhPSBTVEFDS19TUElMTCkKIAkJCWNvbnRpbnVlOwotCQlt YXJrX21hcF9yZWcoc3RhdGUtPnNwaWxsZWRfcmVncywgaSAvIEJQRl9SRUdfU0laRSwKLQkJCSAg ICAgcmVnc1tyZWdub10uaWQsIHR5cGUpOworCQltYXJrX21hcF9yZWcoc3RhdGUtPnNwaWxsZWRf cmVncywgaSAvIEJQRl9SRUdfU0laRSwgaWQsIHR5cGUpOwogCX0KIH0KIAotLSAKMi4xLjAKCgpG cm9tIDBlMGYxZDZmZGIzNTNmYzg4NmVlOTlkNjQ2YzU2MWU0YWQzZDRlYmMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+ CkRhdGU6IFN1biwgMTggRGVjIDIwMTYgMDE6NTI6NTkgKzAxMDAKU3ViamVjdDogW1BBVENIIDA0 MS8xMTJdIGJwZjogZml4IG1hcmtfcmVnX3Vua25vd25fdmFsdWUgZm9yIHNwaWxsZWQgcmVncyBv bgogbWFwIHZhbHVlIG1hcmtpbmcKClsgVXBzdHJlYW0gY29tbWl0IDY3NjBiZjJkZGRlOGFkNjRm ODIwNWE2NTEyMjNhOTNkZTNhMzU0OTQgXQoKTWFydGluIHJlcG9ydGVkIGEgdmVyaWZpZXIgaXNz dWUgdGhhdCBoaXQgdGhlIEJVR19PTigpIGZvciBoaXMKdGVzdCBjYXNlIGluIHRoZSBtYXJrX3Jl Z191bmtub3duX3ZhbHVlKCkgZnVuY3Rpb246CgogIFsgIDIwMi44NjEzODBdIGtlcm5lbCBCVUcg YXQga2VybmVsL2JwZi92ZXJpZmllci5jOjQ2NyEKICBbLi4uXQogIFsgIDIwMy4yOTExMDldIENh bGwgVHJhY2U6CiAgWyAgMjAzLjI5NjUwMV0gIFs8ZmZmZmZmZmY4MTEzNjRkNT5dIG1hcmtfbWFw X3JlZysweDQ1LzB4NTAKICBbICAyMDMuMzA4MjI1XSAgWzxmZmZmZmZmZjgxMTM2NTU4Pl0gbWFy a19tYXBfcmVncysweDc4LzB4OTAKICBbICAyMDMuMzIwMTQwXSAgWzxmZmZmZmZmZjgxMTM5Mzhk Pl0gZG9fY2hlY2srMHgyMjZkLzB4MmM5MAogIFsgIDIwMy4zMzE4NjVdICBbPGZmZmZmZmZmODEx M2E2YWI+XSBicGZfY2hlY2srMHg0OGIvMHg3ODAKICBbICAyMDMuMzQzNDAzXSAgWzxmZmZmZmZm ZjgxMTM0YzhlPl0gYnBmX3Byb2dfbG9hZCsweDI3ZS8weDQ0MAogIFsgIDIwMy4zNTU3MDVdICBb PGZmZmZmZmZmODExOGEzOGY+XSA/IGhhbmRsZV9tbV9mYXVsdCsweDExYWYvMHgxMjMwCiAgWyAg MjAzLjM2OTE1OF0gIFs8ZmZmZmZmZmY4MTJkODE4OD5dID8gc2VjdXJpdHlfY2FwYWJsZSsweDQ4 LzB4NjAKICBbICAyMDMuMzgyMDM1XSAgWzxmZmZmZmZmZjgxMTM1MWE0Pl0gU3lTX2JwZisweDEy NC8weDk2MAogIFsgIDIwMy4zOTMxODVdICBbPGZmZmZmZmZmODEwNTE1ZjY+XSA/IF9fZG9fcGFn ZV9mYXVsdCsweDI3Ni8weDQ5MAogIFsgIDIwMy40MDYyNThdICBbPGZmZmZmZmZmODE2ZGIzMjA+ XSBlbnRyeV9TWVNDQUxMXzY0X2Zhc3RwYXRoKzB4MTMvMHg5NAoKVGhpcyBpc3N1ZSBnb3QgdW5j b3ZlcmVkIGFmdGVyIHRoZSBmaXggaW4gYTA4ZGQwZGE1MzA3ICgiYnBmOiBmaXgKcmVncmVzc2lv biBvbiB2ZXJpZmllciBwcnVuaW5nIHdydCBtYXAgbG9va3VwcyIpLiBUaGUgcmVhc29uIHdoeSBp dAp3YXNuJ3Qgbm90aWNlZCBiZWZvcmUgd2FzLCBiZWNhdXNlIGFzIG1lbnRpb25lZCBpbiBhMDhk ZDBkYTUzMDcsCm1hcmtfbWFwX3JlZ3MoKSB3YXMgZG9pbmcgdGhlIGlkIG1hdGNoaW5nIGluY29y cmVjdGx5IGJhc2VkIG9uIHRoZQp1bmNhY2hlZCByZWdzW3JlZ25vXS5pZC4gU28sIGluIHRoZSBm aXJzdCBsb29wLCB3ZSB3YWxrZWQgYWxsIHJlZ3MKYW5kIGFzIHNvb24gYXMgd2UgZm91bmQgcmVn bm8gPT0gaSwgdGhlbiB0aGlzIHJlZydzIGlkIHdhcyBjbGVhcmVkCndoZW4gY2FsbGluZyBtYXJr X3JlZ191bmtub3duX3ZhbHVlKCkgdGh1cyB0aGF0IGV2ZXJ5IHN1YnNlcXVlbnQKcmVnaXN0ZXIg d2FzIHByb2JlZCBhZ2FpbnN0IGlkIG9mIDAgKHdoaWNoLCBpbiBjb21iaW5hdGlvbiB3aXRoIHRo ZQpQVFJfVE9fTUFQX1ZBTFVFX09SX05VTEwgdHlwZSBpcyBhbiBpbnZhbGlkIGNvbmRpdGlvbiB0 aGF0IG5vIG90aGVyCnJlZ2lzdGVyIHN0YXRlIGNhbiBob2xkKSwgYW5kIHRoZXJlZm9yZSB3YXNu J3QgdHlwZSB0cmFuc2l0aW9uZWQgc3VjaAphcyBpbiB0aGUgc3BpbGxlZCByZWdpc3RlciBjYXNl IGZvciB0aGUgc2Vjb25kIGxvb3AuCgpOb3cgc2luY2UgdGhhdCBnb3QgZml4ZWQsIGl0IHR1cm5l ZCBvdXQgdGhhdCA1N2EwOWJmMGE0MTYgKCJicGY6CkRldGVjdCBpZGVudGljYWwgUFRSX1RPX01B UF9WQUxVRV9PUl9OVUxMIHJlZ2lzdGVycyIpIHVzZWQKbWFya19yZWdfdW5rbm93bl92YWx1ZSgp IGluY29ycmVjdGx5IGZvciB0aGUgc3BpbGxlZCByZWdzLCBhbmQgdGh1cwpoaXR0aW5nIHRoZSBC VUdfT04oKSBpbiBzb21lIGNhc2VzIGR1ZSB0byByZWdubyA+PSBNQVhfQlBGX1JFRy4KCkFsdGhv dWdoIHNwaWxsZWQgcmVncyBoYXZlIHRoZSBzYW1lIHR5cGUgYXMgdGhlIG5vbi1zcGlsbGVkIHJl Z3MKZm9yIHRoZSB2ZXJpZmllciBzdGF0ZSwgdGhhdCBpcywgc3RydWN0IGJwZl9yZWdfc3RhdGUs IHRoZXkgYXJlCnNlbWFudGljYWxseSBkaWZmZXJlbnQgZnJvbSB0aGUgbm9uLXNwaWxsZWQgcmVn cy4gSW4gb3RoZXIgd29yZHMsCnRoZXJlIGNhbiBiZSB1cCB0byA2NCAoTUFYX0JQRl9TVEFDSyAv IEJQRl9SRUdfU0laRSkgc3BpbGxlZCByZWdzCmluIHRoZSBzdGFjaywgZm9yIGV4YW1wbGUsIHJl Z2lzdGVyIFI8eD4gY291bGQgaGF2ZSBiZWVuIHNwaWxsZWQgYnkKdGhlIHByb2dyYW0gdG8gc3Rh Y2sgbG9jYXRpb24gWCwgWSwgWiwgYW5kIGluIG1hcmtfbWFwX3JlZ3MoKSB3ZQpuZWVkIHRvIHNj YW4gdGhlc2Ugc3RhY2sgc2xvdHMgb2YgdHlwZSBTVEFDS19TUElMTCBmb3IgcG90ZW50aWFsCnJl Z2lzdGVycyB0aGF0IHdlIGhhdmUgdG8gdHJhbnNpdGlvbiBmcm9tIFBUUl9UT19NQVBfVkFMVUVf T1JfTlVMTC4KVGhlcmVmb3JlLCBkZXBlbmRpbmcgb24gdGhlIGxvY2F0aW9uLCB0aGUgc3BpbGxl ZF9yZWdzIHJlZ25vIGNhbgpiZSBhIGxvdCBoaWdoZXIgdGhhbiBqdXN0IE1BWF9CUEZfUkVHJ3Mg dmFsdWUgc2luY2Ugd2Ugb3BlcmF0ZSBvbgpzdGFjayBpbnN0ZWFkLiBUaGUgcmVzZXQgaW4gbWFy a19yZWdfdW5rbm93bl92YWx1ZSgpIGl0c2VsZiBpcwpqdXN0IGZpbmUsIG9ubHkgdGhhdCB0aGUg QlVHX09OKCkgd2FzIGluYXBwcm9wcmlhdGUgZm9yIHRoaXMuIEZpeAppdCBieSBtYWtpbmcgYSBf X21hcmtfcmVnX3Vua25vd25fdmFsdWUoKSB2ZXJzaW9uIHRoYXQgY2FuIGJlCmNhbGxlZCBmcm9t IG1hcmtfbWFwX3JlZygpIGdlbmVyaWNhbGx5OyB3ZSBrbm93IGZvciB0aGUgbm9uLXNwaWxsZWQK Y2FzZSB0aGF0IHRoZSByZWdubyBpcyBhbHdheXMgPCBNQVhfQlBGX1JFRyBhbnl3YXkuCgpGaXhl czogNTdhMDliZjBhNDE2ICgiYnBmOiBEZXRlY3QgaWRlbnRpY2FsIFBUUl9UT19NQVBfVkFMVUVf T1JfTlVMTCByZWdpc3RlcnMiKQpSZXBvcnRlZC1ieTogTWFydGluIEthRmFpIExhdSA8a2FmYWlA ZmIuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gu bmV0PgpBY2tlZC1ieTogQWxleGVpIFN0YXJvdm9pdG92IDxhc3RAa2VybmVsLm9yZz4KU2lnbmVk LW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgpTaWduZWQtb2Zm LWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0K IGtlcm5lbC9icGYvdmVyaWZpZXIuYyB8IDExICsrKysrKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwg OCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYv dmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCBhOTY3YWU4Li44NWQxYzk0 IDEwMDY0NAotLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKKysrIGIva2VybmVsL2JwZi92ZXJp Zmllci5jCkBAIC00NDQsMTQgKzQ0NCwxOSBAQCBzdGF0aWMgdm9pZCBpbml0X3JlZ19zdGF0ZShz dHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVncykKIAlyZWdzW0JQRl9SRUdfMV0udHlwZSA9IFBUUl9U T19DVFg7CiB9CiAKLXN0YXRpYyB2b2lkIG1hcmtfcmVnX3Vua25vd25fdmFsdWUoc3RydWN0IGJw Zl9yZWdfc3RhdGUgKnJlZ3MsIHUzMiByZWdubykKK3N0YXRpYyB2b2lkIF9fbWFya19yZWdfdW5r bm93bl92YWx1ZShzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVncywgdTMyIHJlZ25vKQogewotCUJV R19PTihyZWdubyA+PSBNQVhfQlBGX1JFRyk7CiAJcmVnc1tyZWdub10udHlwZSA9IFVOS05PV05f VkFMVUU7CiAJcmVnc1tyZWdub10uaWQgPSAwOwogCXJlZ3NbcmVnbm9dLmltbSA9IDA7CiB9CiAK K3N0YXRpYyB2b2lkIG1hcmtfcmVnX3Vua25vd25fdmFsdWUoc3RydWN0IGJwZl9yZWdfc3RhdGUg KnJlZ3MsIHUzMiByZWdubykKK3sKKwlCVUdfT04ocmVnbm8gPj0gTUFYX0JQRl9SRUcpOworCV9f bWFya19yZWdfdW5rbm93bl92YWx1ZShyZWdzLCByZWdubyk7Cit9CisKIHN0YXRpYyB2b2lkIHJl c2V0X3JlZ19yYW5nZV92YWx1ZXMoc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZ3MsIHUzMiByZWdu bykKIHsKIAlyZWdzW3JlZ25vXS5taW5fdmFsdWUgPSBCUEZfUkVHSVNURVJfTUlOX1JBTkdFOwpA QCAtMTk0Niw3ICsxOTUxLDcgQEAgc3RhdGljIHZvaWQgbWFya19tYXBfcmVnKHN0cnVjdCBicGZf cmVnX3N0YXRlICpyZWdzLCB1MzIgcmVnbm8sIHUzMiBpZCwKIAkJICovCiAJCXJlZy0+aWQgPSAw OwogCQlpZiAodHlwZSA9PSBVTktOT1dOX1ZBTFVFKQotCQkJbWFya19yZWdfdW5rbm93bl92YWx1 ZShyZWdzLCByZWdubyk7CisJCQlfX21hcmtfcmVnX3Vua25vd25fdmFsdWUocmVncywgcmVnbm8p OwogCX0KIH0KIAotLSAKMi4xLjAKCgpGcm9tIDIzODJjMTQ4NmM2MmEyMWQxNjJmMGQ0NTdjNjFj ZDg3YTI0OThmZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEtyaXN0ZXIgSm9oYW5z ZW4gPGtqbHhAdGVtcGxlb2ZzdHVwaWQuY29tPgpEYXRlOiBXZWQsIDQgSmFuIDIwMTcgMDE6MjI6 NTIgLTA4MDAKU3ViamVjdDogW1BBVENIIDA0Mi8xMTJdIGRtYWVuZ2luZTogaW90YTogaW9hdF9h bGxvY19jaGFuX3Jlc291cmNlcyBzaG91bGQgbm90CiBwZXJmb3JtIHNsZWVwaW5nIGFsbG9jYXRp b25zLgoKY29tbWl0IDIxZDI1ZjZhNDIxN2U3NTU5MDZjYjU0OGI1NWRkYWIzOWQwZTg4YjkgdXBz dHJlYW0uCgpPbiBhIGtlcm5lbCB3aXRoIERFQlVHX0xPQ0tTLCBpb2F0X2ZyZWVfY2hhbl9yZXNv dXJjZXMgdHJpZ2dlcnMgYW4KaW5faW50ZXJydXB0KCkgd2FybmluZy4gIFdpdGggUFJPVkVfTE9D S0lORywgaXQgcmVwb3J0cyBkZXRlY3RpbmcgYQpTT0ZUSVJRLXNhZmUgdG8gU09GVElSUS11bnNh ZmUgbG9jayBvcmRlcmluZyBpbiB0aGUgc2FtZSBjb2RlIHBhdGguCgpUaGlzIGlzIGJlY2F1c2Ug ZG1hX2dlbmVyaWNfYWxsb2NfY29oZXJlbnQoKSBjaGVja3MgaWYgdGhlIEdGUCBmbGFncwpwZXJt aXQgYmxvY2tpbmcuICBJdCBhbGxvY2F0ZXMgZnJvbSBkaWZmZXJlbnQgc3Vic3lzdGVtcyBpZiBi bG9ja2luZyBpcwpwZXJtaXR0ZWQuICBUaGUgZnJlZSBwYXRoIGtub3dzIGhvdyB0byByZXR1cm4g dGhlIG1lbW9yeSB0byB0aGUgY29ycmVjdAphbGxvY2F0b3IuICBJZiBHRlBfS0VSTkVMIGlzIHNw ZWNpZmllZCB0aGVuIHRoZSBhbGxvYyBhbmQgZnJlZSBlbmQgdXAKZ29pbmcgdGhyb3VnaCBjbWFf YWxsb2MoKSwgd2hpY2ggdXNlcyBtdXRleGVzLgoKR2l2ZW4gdGhhdCBpb2F0X2ZyZWVfY2hhbl9y ZXNvdXJjZXMoKSBjYW4gYmUgY2FsbGVkIGluIGludGVycnVwdApjb250ZXh0LCBpb2F0X2FsbG9j X2NoYW5fcmVzb3VyY2VzKCkgbXVzdCBzcGVjaWZ5IEdGUF9OT1dBSVQgc28gdGhhdCB0aGUKYWxs b2NhdGlvbnMgZG8gbm90IGJsb2NrIGFuZCBpbnN0ZWFkIHVzZSBhbiBhbGxvY2F0b3IgdGhhdCB1 c2VzCnNwaW5sb2Nrcy4KClNpZ25lZC1vZmYtYnk6IEtyaXN0ZXIgSm9oYW5zZW4gPGtqbHhAdGVt cGxlb2ZzdHVwaWQuY29tPgpBY2tlZC1ieTogRGF2ZSBKaWFuZyA8ZGF2ZS5qaWFuZ0BpbnRlbC5j b20+ClNpZ25lZC1vZmYtYnk6IFZpbm9kIEtvdWwgPHZpbm9kLmtvdWxAaW50ZWwuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3Jn PgotLS0KIGRyaXZlcnMvZG1hL2lvYXQvaW5pdC5jIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1h L2lvYXQvaW5pdC5jIGIvZHJpdmVycy9kbWEvaW9hdC9pbml0LmMKaW5kZXggMDE1ZjcxMS4uZDIz NWZiZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEvaW9hdC9pbml0LmMKKysrIGIvZHJpdmVycy9k bWEvaW9hdC9pbml0LmMKQEAgLTY5MSw3ICs2OTEsNyBAQCBzdGF0aWMgaW50IGlvYXRfYWxsb2Nf Y2hhbl9yZXNvdXJjZXMoc3RydWN0IGRtYV9jaGFuICpjKQogCS8qIGRvaW5nIDIgMzJiaXQgd3Jp dGVzIHRvIG1taW8gc2luY2UgMSA2NGIgd3JpdGUgZG9lc24ndCB3b3JrICovCiAJaW9hdF9jaGFu LT5jb21wbGV0aW9uID0KIAkJZG1hX3Bvb2xfemFsbG9jKGlvYXRfY2hhbi0+aW9hdF9kbWEtPmNv bXBsZXRpb25fcG9vbCwKLQkJCQlHRlBfS0VSTkVMLCAmaW9hdF9jaGFuLT5jb21wbGV0aW9uX2Rt YSk7CisJCQkJR0ZQX05PV0FJVCwgJmlvYXRfY2hhbi0+Y29tcGxldGlvbl9kbWEpOwogCWlmICgh aW9hdF9jaGFuLT5jb21wbGV0aW9uKQogCQlyZXR1cm4gLUVOT01FTTsKIApAQCAtNzAxLDcgKzcw MSw3IEBAIHN0YXRpYyBpbnQgaW9hdF9hbGxvY19jaGFuX3Jlc291cmNlcyhzdHJ1Y3QgZG1hX2No YW4gKmMpCiAJICAgICAgIGlvYXRfY2hhbi0+cmVnX2Jhc2UgKyBJT0FUX0NIQU5DTVBfT0ZGU0VU X0hJR0gpOwogCiAJb3JkZXIgPSBJT0FUX01BWF9PUkRFUjsKLQlyaW5nID0gaW9hdF9hbGxvY19y aW5nKGMsIG9yZGVyLCBHRlBfS0VSTkVMKTsKKwlyaW5nID0gaW9hdF9hbGxvY19yaW5nKGMsIG9y ZGVyLCBHRlBfTk9XQUlUKTsKIAlpZiAoIXJpbmcpCiAJCXJldHVybiAtRU5PTUVNOwogCi0tIAoy LjEuMAoKCkZyb20gNGI0MDYxMWE5YjdlNWQwNjYyNjY3NGFmODk4NjA4MTY3YWMzZjcyNyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRGFuIFN0cmVldG1hbiA8ZGRzdHJlZXRAaWVlZS5v cmc+CkRhdGU6IEZyaSwgMTcgTWFyIDIwMTcgMDA6NDg6MTggKzAwMDAKU3ViamVjdDogW1BBVENI IDA0My8xMTJdIHhlbjogZG8gbm90IHJlLXVzZSBwaXJxIG51bWJlciBjYWNoZWQgaW4gcGNpIGRl dmljZQogbXNpIG1zZyBkYXRhCgpbIFVwc3RyZWFtIGNvbW1pdCBjNzRmZDgwZjJmNDFkMDVmMzUw YmI0NzgxNTEwMjFmODg1NTFhZmU4IF0KClJldmVydCB0aGUgbWFpbiBwYXJ0IG9mIGNvbW1pdDoK YWY0MmI4ZDEyZjhhICgieGVuOiBmaXggTVNJIHNldHVwIGFuZCB0ZWFyZG93biBmb3IgUFYgb24g SFZNIGd1ZXN0cyIpCgpUaGF0IGNvbW1pdCBpbnRyb2R1Y2VkIHJlYWRpbmcgdGhlIHBjaSBkZXZp Y2UncyBtc2kgbWVzc2FnZSBkYXRhIHRvIHNlZQppZiBhIHBpcnEgd2FzIHByZXZpb3VzbHkgY29u ZmlndXJlZCBmb3IgdGhlIGRldmljZSdzIG1zaS9tc2l4LCBhbmQgcmUtdXNlCnRoYXQgcGlycS4g IEF0IHRoZSB0aW1lLCB0aGF0IHdhcyB0aGUgY29ycmVjdCBiZWhhdmlvci4gIEhvd2V2ZXIsIGEK bGF0ZXIgY2hhbmdlIHRvIFFlbXUgY2F1c2VkIGl0IHRvIGNhbGwgaW50byB0aGUgWGVuIGh5cGVy dmlzb3IgdG8gdW5tYXAKYWxsIHBpcnFzIGZvciBhIHBjaSBkZXZpY2UsIHdoZW4gdGhlIHBjaSBk ZXZpY2UgZGlzYWJsZXMgaXRzIE1TSS9NU0lYCnZlY3RvcnM7IHNwZWNpZmljYWxseSB0aGUgUWVt dSBjb21taXQ6CmM5NzY0MzdjN2RiYTljNzQ0NGZiNDFkZjQ1NDY4OTY4YWFhMzI2YWQKKCJxZW11 LXhlbjogZnJlZSBhbGwgdGhlIHBpcnFzIGZvciBtc2kvbXNpeCB3aGVuIGRyaXZlciB1bmxvYWQi KQoKT25jZSBRZW11IGFkZGVkIHRoaXMgcGlycSB1bm1hcHBpbmcsIGl0IHdhcyBubyBsb25nZXIg Y29ycmVjdCBmb3IgdGhlCmtlcm5lbCB0byByZS11c2UgdGhlIHBpcnEgbnVtYmVyIGNhY2hlZCBp biB0aGUgcGNpIGRldmljZSBtc2kgbWVzc2FnZQpkYXRhLiAgQWxsIFFlbXUgcmVsZWFzZXMgc2lu Y2UgMi4xLjAgY29udGFpbiB0aGUgcGF0Y2ggdGhhdCB1bm1hcHMgdGhlCnBpcnFzIHdoZW4gdGhl IHBjaSBkZXZpY2UgZGlzYWJsZXMgaXRzIE1TSS9NU0lYIHZlY3RvcnMuCgpUaGlzIGJ1ZyBpcyBj YXVzaW5nIGZhaWx1cmVzIHRvIGluaXRpYWxpemUgbXVsdGlwbGUgTlZNZSBjb250cm9sbGVycwp1 bmRlciBYZW4sIGJlY2F1c2UgdGhlIE5WTWUgZHJpdmVyIHNldHMgdXAgYSBzaW5nbGUgTVNJWCB2 ZWN0b3IgZm9yCmVhY2ggY29udHJvbGxlciAoY29uY3VycmVudGx5KSwgYW5kIHRoZW4gYWZ0ZXIg dXNpbmcgdGhhdCB0byB0YWxrIHRvCnRoZSBjb250cm9sbGVyIGZvciBzb21lIGNvbmZpZ3VyYXRp b24gZGF0YSwgaXQgZGlzYWJsZXMgdGhlIHNpbmdsZSBNU0lYCnZlY3RvciBhbmQgcmUtY29uZmln dXJlcyBhbGwgdGhlIE1TSVggdmVjdG9ycyBpdCBuZWVkcy4gIFNvIHRoZSBNU0lYCnNldHVwIGNv ZGUgdHJpZXMgdG8gcmUtdXNlIHRoZSBjYWNoZWQgcGlycSBmcm9tIHRoZSBmaXJzdCB2ZWN0b3IK Zm9yIGVhY2ggY29udHJvbGxlciwgYnV0IHRoZSBoeXBlcnZpc29yIGhhcyBhbHJlYWR5IGdpdmVu IGF3YXkgdGhhdApwaXJxIHRvIGFub3RoZXIgY29udHJvbGxlciwgYW5kIGl0cyBpbml0aWFsaXph dGlvbiBmYWlscy4KClRoaXMgaXMgZGlzY3Vzc2VkIGluIG1vcmUgZGV0YWlsIGF0OgpodHRwczov L2xpc3RzLnhlbi5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxNy0wMS9tc2cwMDQ0Ny5o dG1sCgpGaXhlczogYWY0MmI4ZDEyZjhhICgieGVuOiBmaXggTVNJIHNldHVwIGFuZCB0ZWFyZG93 biBmb3IgUFYgb24gSFZNIGd1ZXN0cyIpClNpZ25lZC1vZmYtYnk6IERhbiBTdHJlZXRtYW4gPGRh bi5zdHJlZXRtYW5AY2Fub25pY2FsLmNvbT4KUmV2aWV3ZWQtYnk6IFN0ZWZhbm8gU3RhYmVsbGlu aSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQWNrZWQtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2ls ayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogQm9yaXMgT3N0cm92c2t5 IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogU2FzaGEgTGV2aW4g PGFsZXhhbmRlci5sZXZpbkB2ZXJpem9uLmNvbT4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1I YXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBhcmNoL3g4Ni9wY2kveGVu LmMgfCAyMyArKysrKysrLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0 aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvcGNpL3hlbi5j IGIvYXJjaC94ODYvcGNpL3hlbi5jCmluZGV4IGJlZGZhYjkuLmEwMGE2YzAgMTAwNjQ0Ci0tLSBh L2FyY2gveDg2L3BjaS94ZW4uYworKysgYi9hcmNoL3g4Ni9wY2kveGVuLmMKQEAgLTIzNCwyMyAr MjM0LDE0IEBAIHN0YXRpYyBpbnQgeGVuX2h2bV9zZXR1cF9tc2lfaXJxcyhzdHJ1Y3QgcGNpX2Rl diAqZGV2LCBpbnQgbnZlYywgaW50IHR5cGUpCiAJCXJldHVybiAxOwogCiAJZm9yX2VhY2hfcGNp X21zaV9lbnRyeShtc2lkZXNjLCBkZXYpIHsKLQkJX19wY2lfcmVhZF9tc2lfbXNnKG1zaWRlc2Ms ICZtc2cpOwotCQlwaXJxID0gTVNJX0FERFJfRVhUX0RFU1RfSUQobXNnLmFkZHJlc3NfaGkpIHwK LQkJCSgobXNnLmFkZHJlc3NfbG8gPj4gTVNJX0FERFJfREVTVF9JRF9TSElGVCkgJiAweGZmKTsK LQkJaWYgKG1zZy5kYXRhICE9IFhFTl9QSVJRX01TSV9EQVRBIHx8Ci0JCSAgICB4ZW5faXJxX2Zy b21fcGlycShwaXJxKSA8IDApIHsKLQkJCXBpcnEgPSB4ZW5fYWxsb2NhdGVfcGlycV9tc2koZGV2 LCBtc2lkZXNjKTsKLQkJCWlmIChwaXJxIDwgMCkgewotCQkJCWlycSA9IC1FTk9ERVY7Ci0JCQkJ Z290byBlcnJvcjsKLQkJCX0KLQkJCXhlbl9tc2lfY29tcG9zZV9tc2coZGV2LCBwaXJxLCAmbXNn KTsKLQkJCV9fcGNpX3dyaXRlX21zaV9tc2cobXNpZGVzYywgJm1zZyk7Ci0JCQlkZXZfZGJnKCZk ZXYtPmRldiwgInhlbjogbXNpIGJvdW5kIHRvIHBpcnE9JWRcbiIsIHBpcnEpOwotCQl9IGVsc2Ug ewotCQkJZGV2X2RiZygmZGV2LT5kZXYsCi0JCQkJInhlbjogbXNpIGFscmVhZHkgYm91bmQgdG8g cGlycT0lZFxuIiwgcGlycSk7CisJCXBpcnEgPSB4ZW5fYWxsb2NhdGVfcGlycV9tc2koZGV2LCBt c2lkZXNjKTsKKwkJaWYgKHBpcnEgPCAwKSB7CisJCQlpcnEgPSAtRU5PREVWOworCQkJZ290byBl cnJvcjsKIAkJfQorCQl4ZW5fbXNpX2NvbXBvc2VfbXNnKGRldiwgcGlycSwgJm1zZyk7CisJCV9f cGNpX3dyaXRlX21zaV9tc2cobXNpZGVzYywgJm1zZyk7CisJCWRldl9kYmcoJmRldi0+ZGV2LCAi eGVuOiBtc2kgYm91bmQgdG8gcGlycT0lZFxuIiwgcGlycSk7CiAJCWlycSA9IHhlbl9iaW5kX3Bp cnFfbXNpX3RvX2lycShkZXYsIG1zaWRlc2MsIHBpcnEsCiAJCQkJCSAgICAgICAodHlwZSA9PSBQ Q0lfQ0FQX0lEX01TSSkgPyBudmVjIDogMSwKIAkJCQkJICAgICAgICh0eXBlID09IFBDSV9DQVBf SURfTVNJWCkgPwotLSAKMi4xLjAKCgpGcm9tIDE1ZmZjOTMxZWViOTRkOTY3M2MyYTE2MzgyODcw NGE3Y2Y0YzFkZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IENocmlzIEogQXJnZXMg PGNocmlzdG9waGVyYXJnZXNAZ21haWwuY29tPgpEYXRlOiBGcmksIDE3IE1hciAyMDE3IDAwOjQ4 OjE5ICswMDAwClN1YmplY3Q6IFtQQVRDSCAwNDQvMTEyXSBpZ2I6IFdvcmthcm91bmQgZm9yIGln YiBpMjEwIGZpcm13YXJlIGlzc3VlCgpbIFVwc3RyZWFtIGNvbW1pdCA0ZTY4NGY1OWQ3NjBhMmM3 YzcxNmJiNjAxOTA3ODM1NDZlMmQwOGExIF0KClNvbWV0aW1lcyBmaXJtd2FyZSBtYXkgbm90IHBy b3Blcmx5IGluaXRpYWxpemUgSTM0N0FUNF9QQUdFX1NFTEVDVCBjYXVzaW5nCnRoZSBwcm9iZSBv ZiBhbiBpZ2IgaTIxMCBOSUMgdG8gZmFpbC4gVGhpcyBwYXRjaCBhZGRzIGFuIGFkZGl0aW9uIHpl cm9pbmcKb2YgdGhpcyByZWdpc3RlciBkdXJpbmcgaWdiX2dldF9waHlfaWQgdG8gd29ya2Fyb3Vu ZCB0aGlzIGlzc3VlLgoKVGhhbmtzIGZvciBKb2NoZW4gSGVubmViZXJnIGZvciB0aGUgaWRlYSBh bmQgb3JpZ2luYWwgcGF0Y2guCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBKIEFyZ2VzIDxjaHJpc3Rv cGhlcmFyZ2VzQGdtYWlsLmNvbT4KVGVzdGVkLWJ5OiBBYXJvbiBCcm93biA8YWFyb24uZi5icm93 bkBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEplZmYgS2lyc2hlciA8amVmZnJleS50LmtpcnNo ZXJAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8YWxleGFuZGVyLmxldmlu QHZlcml6b24uY29tPgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBs aW51eGZvdW5kYXRpb24ub3JnPgotLS0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9l MTAwMF9waHkuYyB8IDQgKysrKwogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9waHkuYyBiL2Ry aXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9lMTAwMF9waHkuYwppbmRleCA1YjU0MjU0Li41 NjllZTI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvZTEwMDBf cGh5LmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2UxMDAwX3BoeS5jCkBA IC03Nyw2ICs3NywxMCBAQCBzMzIgaWdiX2dldF9waHlfaWQoc3RydWN0IGUxMDAwX2h3ICpodykK IAlzMzIgcmV0X3ZhbCA9IDA7CiAJdTE2IHBoeV9pZDsKIAorCS8qIGVuc3VyZSBQSFkgcGFnZSBz ZWxlY3Rpb24gdG8gZml4IG1pc2NvbmZpZ3VyZWQgaTIxMCAqLworCWlmIChody0+bWFjLnR5cGUg PT0gZTEwMDBfaTIxMCkKKwkJcGh5LT5vcHMud3JpdGVfcmVnKGh3LCBJMzQ3QVQ0X1BBR0VfU0VM RUNULCAwKTsKKwogCXJldF92YWwgPSBwaHktPm9wcy5yZWFkX3JlZyhodywgUEhZX0lEMSwgJnBo eV9pZCk7CiAJaWYgKHJldF92YWwpCiAJCWdvdG8gb3V0OwotLSAKMi4xLjAKCgpGcm9tIDYxMjI5 ZTYyYzFhYTRkMzk3YWFiOTk0OTMyNWNhYjQ5YWNmZDdkYWIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IFRvZGQgRnVqaW5ha2EgPHRvZGQuZnVqaW5ha2FAaW50ZWwuY29tPgpEYXRlOiBG cmksIDE3IE1hciAyMDE3IDAwOjQ4OjE5ICswMDAwClN1YmplY3Q6IFtQQVRDSCAwNDUvMTEyXSBp Z2I6IGFkZCBpMjExIHRvIGkyMTAgUEhZIHdvcmthcm91bmQKClsgVXBzdHJlYW0gY29tbWl0IDVi YzhjMjMwZTJhOTkzYjQ5MjQ0Zjk0NTc0OTlmMTcyODNkYTllYzcgXQoKaTIxMCBhbmQgaTIxMSBz aGFyZSB0aGUgc2FtZSBQSFkgYnV0IGhhdmUgZGlmZmVyZW50IFBDSSBJRHMuIERvbid0CmZvcmdl dCBpMjExIGZvciBhbnkgaTIxMCB3b3JrYXJvdW5kcy4KClNpZ25lZC1vZmYtYnk6IFRvZGQgRnVq aW5ha2EgPHRvZGQuZnVqaW5ha2FAaW50ZWwuY29tPgpUZXN0ZWQtYnk6IEFhcm9uIEJyb3duIDxh YXJvbi5mLmJyb3duQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogSmVmZiBLaXJzaGVyIDxqZWZm cmV5LnQua2lyc2hlckBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFNhc2hhIExldmluIDxhbGV4 YW5kZXIubGV2aW5AdmVyaXpvbi5jb20+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1h biA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogZHJpdmVycy9uZXQvZXRoZXJuZXQv aW50ZWwvaWdiL2UxMDAwX3BoeS5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50 ZWwvaWdiL2UxMDAwX3BoeS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2UxMDAw X3BoeS5jCmluZGV4IDU2OWVlMjUuLjI3ODhhNTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0 aGVybmV0L2ludGVsL2lnYi9lMTAwMF9waHkuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9p bnRlbC9pZ2IvZTEwMDBfcGh5LmMKQEAgLTc4LDcgKzc4LDcgQEAgczMyIGlnYl9nZXRfcGh5X2lk KHN0cnVjdCBlMTAwMF9odyAqaHcpCiAJdTE2IHBoeV9pZDsKIAogCS8qIGVuc3VyZSBQSFkgcGFn ZSBzZWxlY3Rpb24gdG8gZml4IG1pc2NvbmZpZ3VyZWQgaTIxMCAqLwotCWlmIChody0+bWFjLnR5 cGUgPT0gZTEwMDBfaTIxMCkKKwlpZiAoKGh3LT5tYWMudHlwZSA9PSBlMTAwMF9pMjEwKSB8fCAo aHctPm1hYy50eXBlID09IGUxMDAwX2kyMTEpKQogCQlwaHktPm9wcy53cml0ZV9yZWcoaHcsIEkz NDdBVDRfUEFHRV9TRUxFQ1QsIDApOwogCiAJcmV0X3ZhbCA9IHBoeS0+b3BzLnJlYWRfcmVnKGh3 LCBQSFlfSUQxLCAmcGh5X2lkKTsKLS0gCjIuMS4wCgoKRnJvbSAwYWQxZDc2NjBhNTcxNTJhYjZj N2FlOGZmNWQwMmI2NDYwYjI4MWE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNo YWVsIEN5ciA8bWlrZWN5ckB1cy5pYm0uY29tPgpEYXRlOiBGcmksIDE3IE1hciAyMDE3IDAwOjQ4 OjIwICswMDAwClN1YmplY3Q6IFtQQVRDSCAwNDYvMTEyXSBzY3NpOiBpYm12c2NzaXM6IElzc3Vl cyBmcm9tIERhbiBDYXJwZW50ZXIvU21hdGNoCgpbIFVwc3RyZWFtIGNvbW1pdCAxMTk1MGQ3MGI1 MmQyYmM1ZTM1ODBkYThjZDYzOTA5ZWYzOGQ2N2RiIF0KClNpZ25lZC1vZmYtYnk6IE1pY2hhZWwg Q3lyIDxtaWtlY3lyQHVzLmlibS5jb20+ClNpZ25lZC1vZmYtYnk6IEJyeWFudCBHLiBMeSA8YnJ5 YW50bHlAbGludXgudm5ldC5pYm0uY29tPgpUZXN0ZWQtYnk6IFN0ZXZlbiBSb3llciA8c2Vyb3ll ckBsaW51eC52bmV0LmlibS5jb20+ClNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLLiBQZXRlcnNlbiA8 bWFydGluLnBldGVyc2VuQG9yYWNsZS5jb20+ClNpZ25lZC1vZmYtYnk6IFNhc2hhIExldmluIDxh bGV4YW5kZXIubGV2aW5AdmVyaXpvbi5jb20+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFy dG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogZHJpdmVycy9zY3NpL2libXZz Y3NpX3RndC9pYm12c2NzaV90Z3QuYyB8IDEzICsrKy0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCAzIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv c2NzaS9pYm12c2NzaV90Z3QvaWJtdnNjc2lfdGd0LmMgYi9kcml2ZXJzL3Njc2kvaWJtdnNjc2lf dGd0L2libXZzY3NpX3RndC5jCmluZGV4IDkxZGZkNTguLjI5MmEzZjMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvc2NzaS9pYm12c2NzaV90Z3QvaWJtdnNjc2lfdGd0LmMKKysrIGIvZHJpdmVycy9zY3Np L2libXZzY3NpX3RndC9pYm12c2NzaV90Z3QuYwpAQCAtMTc0NiwxNCArMTc0Niw3IEBAIHN0YXRp YyBsb25nIGlibXZzY3Npc19tYWQoc3RydWN0IHNjc2lfaW5mbyAqdnNjc2ksIHN0cnVjdCB2aW9z cnBfY3JxICpjcnEpCiAKIAkJcHJfZGVidWcoIm1hZDogdHlwZSAlZFxuIiwgYmUzMl90b19jcHUo bWFkLT50eXBlKSk7CiAKLQkJaWYgKGJlMTZfdG9fY3B1KG1hZC0+bGVuZ3RoKSA8IDApIHsKLQkJ CWRldl9lcnIoJnZzY3NpLT5kZXYsICJtYWQ6IGxlbmd0aCBpcyA8IDBcbiIpOwotCQkJaWJtdnNj c2lzX3Bvc3RfZGlzY29ubmVjdCh2c2NzaSwKLQkJCQkJCSAgRVJSX0RJU0NPTk5FQ1RfUkVDT05O RUNULCAwKTsKLQkJCXJjID0gU1JQX1ZJT0xBVElPTjsKLQkJfSBlbHNlIHsKLQkJCXJjID0gaWJt dnNjc2lzX3Byb2Nlc3NfbWFkKHZzY3NpLCBpdWUpOwotCQl9CisJCXJjID0gaWJtdnNjc2lzX3By b2Nlc3NfbWFkKHZzY3NpLCBpdWUpOwogCiAJCXByX2RlYnVnKCJtYWQ6IHN0YXR1cyAlaGQsIHJj ICVsZFxuIiwgYmUxNl90b19jcHUobWFkLT5zdGF0dXMpLAogCQkJIHJjKTsKQEAgLTI1MjMsNyAr MjUxNiw2IEBAIHN0YXRpYyB2b2lkIGlibXZzY3Npc19wYXJzZV9jbWQoc3RydWN0IHNjc2lfaW5m byAqdnNjc2ksCiAJCWRldl9lcnIoJnZzY3NpLT5kZXYsICIweCVsbHg6IHBhcnNpbmcgU1JQIGRl c2NyaXB0b3IgdGFibGUgZmFpbGVkLlxuIiwKIAkJCXNycC0+dGFnKTsKIAkJZ290byBmYWlsOwot CQlyZXR1cm47CiAJfQogCiAJY21kLT5yc3Auc29sX25vdCA9IHNycC0+c29sX25vdDsKQEAgLTMz NzksNyArMzM3MSw4IEBAIHN0YXRpYyBpbnQgaWJtdnNjc2lzX3Byb2JlKHN0cnVjdCB2aW9fZGV2 ICp2ZGV2LAogCUlOSVRfTElTVF9IRUFEKCZ2c2NzaS0+d2FpdGluZ19yc3ApOwogCUlOSVRfTElT VF9IRUFEKCZ2c2NzaS0+YWN0aXZlX3EpOwogCi0Jc25wcmludGYodnNjc2ktPnRwb3J0LnRwb3J0 X25hbWUsIDI1NiwgIiVzIiwgZGV2X25hbWUoJnZkZXYtPmRldikpOworCXNucHJpbnRmKHZzY3Np LT50cG9ydC50cG9ydF9uYW1lLCBJQk1WU0NTSVNfTkFNRUxFTiwgIiVzIiwKKwkJIGRldl9uYW1l KCZ2ZGV2LT5kZXYpKTsKIAogCXByX2RlYnVnKCJwcm9iZSB0cG9ydF9uYW1lOiAlc1xuIiwgdnNj c2ktPnRwb3J0LnRwb3J0X25hbWUpOwogCi0tIAoyLjEuMAoKCkZyb20gMjkwMjI4NjBkZjhlZmFi ZGYwYTJkMzU2ZmQ2MTRkNGRiYTI3OTFhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog TWljaGFlbCBDeXIgPG1pa2VjeXJAdXMuaWJtLmNvbT4KRGF0ZTogRnJpLCAxNyBNYXIgMjAxNyAw MDo0ODoyMCArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMDQ3LzExMl0gc2NzaTogaWJtdnNjc2lzOiBS ZXR1cm4gY29ycmVjdCBwYXJ0aXRpb24gbmFtZS8jIHRvCiBjbGllbnQKClsgVXBzdHJlYW0gY29t bWl0IDljOTNjZjAzZDRlYjNkYzU4OTMxZmY3Y2FjMGFmOWMzNDRmZTVlMGIgXQoKU2lnbmVkLW9m Zi1ieTogTWljaGFlbCBDeXIgPG1pa2VjeXJAdXMuaWJtLmNvbT4KU2lnbmVkLW9mZi1ieTogQnJ5 YW50IEcuIEx5IDxicnlhbnRseUBsaW51eC52bmV0LmlibS5jb20+ClRlc3RlZC1ieTogU3RldmVu IFJveWVyIDxzZXJveWVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KU2lnbmVkLW9mZi1ieTogTWFydGlu IEsuIFBldGVyc2VuIDxtYXJ0aW4ucGV0ZXJzZW5Ab3JhY2xlLmNvbT4KU2lnbmVkLW9mZi1ieTog U2FzaGEgTGV2aW4gPGFsZXhhbmRlci5sZXZpbkB2ZXJpem9uLmNvbT4KU2lnbmVkLW9mZi1ieTog R3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBkcml2 ZXJzL3Njc2kvaWJtdnNjc2lfdGd0L2libXZzY3NpX3RndC5jIHwgNSArKysrLQogMSBmaWxlIGNo YW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvc2NzaS9pYm12c2NzaV90Z3QvaWJtdnNjc2lfdGd0LmMgYi9kcml2ZXJzL3Njc2kvaWJtdnNj c2lfdGd0L2libXZzY3NpX3RndC5jCmluZGV4IDI5MmEzZjMuLjhkNWVlYjEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvc2NzaS9pYm12c2NzaV90Z3QvaWJtdnNjc2lfdGd0LmMKKysrIGIvZHJpdmVycy9z Y3NpL2libXZzY3NpX3RndC9pYm12c2NzaV90Z3QuYwpAQCAtMzM4Nyw2ICszMzg3LDkgQEAgc3Rh dGljIGludCBpYm12c2NzaXNfcHJvYmUoc3RydWN0IHZpb19kZXYgKnZkZXYsCiAJc3RybmNhdCh2 c2NzaS0+ZXllLCB2ZGV2LT5uYW1lLCBNQVhfRVlFKTsKIAogCXZzY3NpLT5kZHMudW5pdF9pZCA9 IHZkZXYtPnVuaXRfYWRkcmVzczsKKwlzdHJuY3B5KHZzY3NpLT5kZHMucGFydGl0aW9uX25hbWUs IHBhcnRpdGlvbl9uYW1lLAorCQlzaXplb2YodnNjc2ktPmRkcy5wYXJ0aXRpb25fbmFtZSkpOwor CXZzY3NpLT5kZHMucGFydGl0aW9uX251bSA9IHBhcnRpdGlvbl9udW1iZXI7CiAKIAlzcGluX2xv Y2tfYmgoJmlibXZzY3Npc19kZXZfbG9jayk7CiAJbGlzdF9hZGRfdGFpbCgmdnNjc2ktPmxpc3Qs ICZpYm12c2NzaXNfZGV2X2xpc3QpOwpAQCAtMzYwMyw3ICszNjA2LDcgQEAgc3RhdGljIGludCBp Ym12c2NzaXNfZ2V0X3N5c3RlbV9pbmZvKHZvaWQpCiAKIAludW0gPSBvZl9nZXRfcHJvcGVydHko cm9vdGRuLCAiaWJtLHBhcnRpdGlvbi1ubyIsIE5VTEwpOwogCWlmIChudW0pCi0JCXBhcnRpdGlv bl9udW1iZXIgPSAqbnVtOworCQlwYXJ0aXRpb25fbnVtYmVyID0gb2ZfcmVhZF9udW1iZXIobnVt LCAxKTsKIAogCW9mX25vZGVfcHV0KHJvb3Rkbik7CiAKLS0gCjIuMS4wCgoKRnJvbSA0ZDM2ZjQ4 NTlmYTQ0M2UwMmU3ODM0YjlhNWNlMDFiNjNmN2FmMmMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiBNaWNoYWVsIEN5ciA8bWlrZWN5ckB1cy5pYm0uY29tPgpEYXRlOiBGcmksIDE3IE1h ciAyMDE3IDAwOjQ4OjIwICswMDAwClN1YmplY3Q6IFtQQVRDSCAwNDgvMTEyXSBzY3NpOiBpYm12 c2NzaXM6IENsZWFuIHVwIHByb3Blcmx5IGlmCiB0YXJnZXRfc3VibWl0X2NtZC90bXIgZmFpbHMK ClsgVXBzdHJlYW0gY29tbWl0IDc0MzViMzJlMmQyZmI1ZGE2YzJhZTliOWM4Y2U1NmQ4YTNjYjNi YzMgXQoKU2lnbmVkLW9mZi1ieTogTWljaGFlbCBDeXIgPG1pa2VjeXJAdXMuaWJtLmNvbT4KU2ln bmVkLW9mZi1ieTogQnJ5YW50IEcuIEx5IDxicnlhbnRseUBsaW51eC52bmV0LmlibS5jb20+ClRl c3RlZC1ieTogU3RldmVuIFJveWVyIDxzZXJveWVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KU2lnbmVk LW9mZi1ieTogTWFydGluIEsuIFBldGVyc2VuIDxtYXJ0aW4ucGV0ZXJzZW5Ab3JhY2xlLmNvbT4K U2lnbmVkLW9mZi1ieTogU2FzaGEgTGV2aW4gPGFsZXhhbmRlci5sZXZpbkB2ZXJpem9uLmNvbT4K U2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9u Lm9yZz4KLS0tCiBkcml2ZXJzL3Njc2kvaWJtdnNjc2lfdGd0L2libXZzY3NpX3RndC5jIHwgNyAr KysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9zY3NpL2libXZzY3NpX3RndC9pYm12c2NzaV90Z3QuYyBiL2RyaXZlcnMvc2NzaS9pYm12 c2NzaV90Z3QvaWJtdnNjc2lfdGd0LmMKaW5kZXggOGQ1ZWViMS4uZTRjZDhmZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9zY3NpL2libXZzY3NpX3RndC9pYm12c2NzaV90Z3QuYworKysgYi9kcml2ZXJz L3Njc2kvaWJtdnNjc2lfdGd0L2libXZzY3NpX3RndC5jCkBAIC0yNTUyLDYgKzI1NTIsMTAgQEAg c3RhdGljIHZvaWQgaWJtdnNjc2lzX3BhcnNlX2NtZChzdHJ1Y3Qgc2NzaV9pbmZvICp2c2NzaSwK IAkJCSAgICAgICBkYXRhX2xlbiwgYXR0ciwgZGlyLCAwKTsKIAlpZiAocmMpIHsKIAkJZGV2X2Vy cigmdnNjc2ktPmRldiwgInRhcmdldF9zdWJtaXRfY21kIGZhaWxlZCwgcmMgJWRcbiIsIHJjKTsK KwkJc3Bpbl9sb2NrX2JoKCZ2c2NzaS0+aW50cl9sb2NrKTsKKwkJbGlzdF9kZWwoJmNtZC0+bGlz dCk7CisJCWlibXZzY3Npc19mcmVlX2NtZF9yZXNvdXJjZXModnNjc2ksIGNtZCk7CisJCXNwaW5f dW5sb2NrX2JoKCZ2c2NzaS0+aW50cl9sb2NrKTsKIAkJZ290byBmYWlsOwogCX0KIAlyZXR1cm47 CkBAIC0yNjMxLDYgKzI2MzUsOSBAQCBzdGF0aWMgdm9pZCBpYm12c2NzaXNfcGFyc2VfdGFzayhz dHJ1Y3Qgc2NzaV9pbmZvICp2c2NzaSwKIAkJaWYgKHJjKSB7CiAJCQlkZXZfZXJyKCZ2c2NzaS0+ ZGV2LCAidGFyZ2V0X3N1Ym1pdF90bXIgZmFpbGVkLCByYyAlZFxuIiwKIAkJCQlyYyk7CisJCQlz cGluX2xvY2tfYmgoJnZzY3NpLT5pbnRyX2xvY2spOworCQkJbGlzdF9kZWwoJmNtZC0+bGlzdCk7 CisJCQlzcGluX3VubG9ja19iaCgmdnNjc2ktPmludHJfbG9jayk7CiAJCQljbWQtPnNlX2NtZC5z ZV90bXJfcmVxLT5yZXNwb25zZSA9CiAJCQkJVE1SX0ZVTkNUSU9OX1JFSkVDVEVEOwogCQl9Ci0t IAoyLjEuMAoKCkZyb20gMTg5NDkxZjgxY2Y2MzlkMmQwMjkyMzM0NTgwYjk5NjljOGE0MjRkZiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTWljaGFlbCBDeXIgPG1pa2VjeXJAdXMuaWJt LmNvbT4KRGF0ZTogRnJpLCAxNyBNYXIgMjAxNyAwMDo0ODoyMSArMDAwMApTdWJqZWN0OiBbUEFU Q0ggMDQ5LzExMl0gc2NzaTogaWJtdnNjc2lzOiBSZWFycmFuZ2UgZnVuY3Rpb25zIGZvciBmdXR1 cmUKIHBhdGNoZXMKClsgVXBzdHJlYW0gY29tbWl0IDc5ZmFjOWM5Yjc0ZjQ5NTFjOWNlODJiMjJl NzE0YmNjMzRhZTRhNTYgXQoKVGhpcyBwYXRjaCByZW9yZGVycyBmdW5jdGlvbnMgaW4gYSBtYW5u ZXIgbmVjZXNzYXJ5IGZvciBhIGZvbGxvdy1vbgpwYXRjaC4gIEl0IGFsc28gbWFrZXMgc29tZSBt aW5vciBzdHlsaW5nIGNoYW5nZXMgKG1vc3RseSByZW1vdmluZyBleHRyYQpzcGFjZXMpIGFuZCBm aXhlcyBzb21lIHR5cG9zLgoKVGhlcmUgYXJlIG5vIGNvZGUgY2hhbmdlcyBpbiB0aGlzIHBhdGNo LCB3aXRoIG9uZSBleGNlcHRpb246IGR1ZSB0byB0aGUKcmVvcmRlcmluZyBvZiB0aGUgZnVuY3Rp b25zLCBJIG5lZWRlZCB0byBleHBsaWNpdGx5IGRlY2xhcmUgYSBmdW5jdGlvbgphdCB0aGUgdG9w IG9mIHRoZSBmaWxlLiAgSG93ZXZlciwgdGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQg cGF0Y2gsCnNpbmNlIHRoZSBjb2RlIHJlcXVpcmluZyB0aGUgcHJlZGVjbGFyYXRpb24gd2lsbCBi ZSByZW1vdmVkLgoKU2lnbmVkLW9mZi1ieTogTWljaGFlbCBDeXIgPG1pa2VjeXJAdXMuaWJtLmNv bT4KU2lnbmVkLW9mZi1ieTogQnJ5YW50IEcuIEx5IDxicnlhbnRseUBsaW51eC52bmV0LmlibS5j b20+ClRlc3RlZC1ieTogU3RldmVuIFJveWVyIDxzZXJveWVyQGxpbnV4LnZuZXQuaWJtLmNvbT4K U2lnbmVkLW9mZi1ieTogTWFydGluIEsuIFBldGVyc2VuIDxtYXJ0aW4ucGV0ZXJzZW5Ab3JhY2xl LmNvbT4KU2lnbmVkLW9mZi1ieTogU2FzaGEgTGV2aW4gPGFsZXhhbmRlci5sZXZpbkB2ZXJpem9u LmNvbT4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3Vu ZGF0aW9uLm9yZz4KLS0tCiBkcml2ZXJzL3Njc2kvaWJtdnNjc2lfdGd0L2libXZzY3NpX3RndC5j IHwgNzk2ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAz OTkgaW5zZXJ0aW9ucygrKSwgMzk3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv c2NzaS9pYm12c2NzaV90Z3QvaWJtdnNjc2lfdGd0LmMgYi9kcml2ZXJzL3Njc2kvaWJtdnNjc2lf dGd0L2libXZzY3NpX3RndC5jCmluZGV4IGU0Y2Q4ZmYuLjRmZWFlNDMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvc2NzaS9pYm12c2NzaV90Z3QvaWJtdnNjc2lfdGd0LmMKKysrIGIvZHJpdmVycy9zY3Np L2libXZzY3NpX3RndC9pYm12c2NzaV90Z3QuYwpAQCAtMjIsNyArMjIsNyBAQAogICoKICAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLwogCi0jZGVmaW5lIHByX2ZtdChmbXQpICAgICBLQlVJTERfTU9ETkFN RSAiOiAiIGZtdAorI2RlZmluZSBwcl9mbXQoZm10KQlLQlVJTERfTU9ETkFNRSAiOiAiIGZtdAog CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CkBA IC02Miw2ICs2Miw4IEBAIHN0YXRpYyBsb25nIGlibXZzY3Npc19wYXJzZV9jb21tYW5kKHN0cnVj dCBzY3NpX2luZm8gKnZzY3NpLAogCiBzdGF0aWMgdm9pZCBpYm12c2NzaXNfYWRhcHRlcl9pZGxl KHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpKTsKIAorc3RhdGljIHZvaWQgaWJtdnNjc2lzX3Jlc2V0 X3F1ZXVlKHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpLCB1aW50IG5ld19zdGF0ZSk7CisKIHN0YXRp YyB2b2lkIGlibXZzY3Npc19kZXRlcm1pbmVfcmVzaWQoc3RydWN0IHNlX2NtZCAqc2VfY21kLAog CQkJCSAgICAgIHN0cnVjdCBzcnBfcnNwICpyc3ApCiB7CkBAIC04Miw3ICs4NCw3IEBAIHN0YXRp YyB2b2lkIGlibXZzY3Npc19kZXRlcm1pbmVfcmVzaWQoc3RydWN0IHNlX2NtZCAqc2VfY21kLAog CQl9CiAJfSBlbHNlIGlmIChzZV9jbWQtPnNlX2NtZF9mbGFncyAmIFNDRl9PVkVSRkxPV19CSVQp IHsKIAkJaWYgKHNlX2NtZC0+ZGF0YV9kaXJlY3Rpb24gPT0gRE1BX1RPX0RFVklDRSkgewotCQkJ LyogIHJlc2lkdWFsIGRhdGEgZnJvbSBhbiBvdmVyZmxvdyB3cml0ZSAqLworCQkJLyogcmVzaWR1 YWwgZGF0YSBmcm9tIGFuIG92ZXJmbG93IHdyaXRlICovCiAJCQlyc3AtPmZsYWdzID0gU1JQX1JT UF9GTEFHX0RPT1ZFUjsKIAkJCXJzcC0+ZGF0YV9vdXRfcmVzX2NudCA9IGNwdV90b19iZTMyKHJl c2lkdWFsX2NvdW50KTsKIAkJfSBlbHNlIGlmIChzZV9jbWQtPmRhdGFfZGlyZWN0aW9uID09IERN QV9GUk9NX0RFVklDRSkgewpAQCAtMTAyLDcgKzEwNCw3IEBAIHN0YXRpYyB2b2lkIGlibXZzY3Np c19kZXRlcm1pbmVfcmVzaWQoc3RydWN0IHNlX2NtZCAqc2VfY21kLAogICogYW5kIHRoZSBmdW5j dGlvbiByZXR1cm5zIFRSVUUuCiAgKgogICogRVhFQ1VUSU9OIEVOVklST05NRU5UOgotICogICAg ICBJbnRlcnJ1cHQgb3IgUHJvY2VzcyBlbnZpcm9ubWVudAorICoJSW50ZXJydXB0IG9yIFByb2Nl c3MgZW52aXJvbm1lbnQKICAqLwogc3RhdGljIGJvb2wgY29ubmVjdGlvbl9icm9rZW4oc3RydWN0 IHNjc2lfaW5mbyAqdnNjc2kpCiB7CkBAIC0zMjUsNyArMzI3LDcgQEAgc3RhdGljIHN0cnVjdCB2 aW9zcnBfY3JxICppYm12c2NzaXNfY21kX3FfZGVxdWV1ZSh1aW50IG1hc2ssCiB9CiAKIC8qKgot ICogaWJtdnNjc2lzX3NlbmRfaW5pdF9tZXNzYWdlKCkgLSAgc2VuZCBpbml0aWFsaXplIG1lc3Nh Z2UgdG8gdGhlIGNsaWVudAorICogaWJtdnNjc2lzX3NlbmRfaW5pdF9tZXNzYWdlKCkgLSBzZW5k IGluaXRpYWxpemUgbWVzc2FnZSB0byB0aGUgY2xpZW50CiAgKiBAdnNjc2k6CVBvaW50ZXIgdG8g b3VyIGFkYXB0ZXIgc3RydWN0dXJlCiAgKiBAZm9ybWF0OglXaGljaCBJbml0IE1lc3NhZ2UgZm9y bWF0IHRvIHNlbmQKICAqCkBAIC0zODMsMTMgKzM4NSwxMyBAQCBzdGF0aWMgbG9uZyBpYm12c2Nz aXNfY2hlY2tfaW5pdF9tc2coc3RydWN0IHNjc2lfaW5mbyAqdnNjc2ksIHVpbnQgKmZvcm1hdCkK IAkJCQkJICAgICAgdnNjc2ktPmNtZF9xLmJhc2VfYWRkcik7CiAJCWlmIChjcnEpIHsKIAkJCSpm b3JtYXQgPSAodWludCkoY3JxLT5mb3JtYXQpOwotCQkJcmMgPSAgRVJST1I7CisJCQlyYyA9IEVS Uk9SOwogCQkJY3JxLT52YWxpZCA9IElOVkFMSURBVEVfQ01EX1JFU1BfRUw7CiAJCQlkbWFfcm1i KCk7CiAJCX0KIAl9IGVsc2UgewogCQkqZm9ybWF0ID0gKHVpbnQpKGNycS0+Zm9ybWF0KTsKLQkJ cmMgPSAgRVJST1I7CisJCXJjID0gRVJST1I7CiAJCWNycS0+dmFsaWQgPSBJTlZBTElEQVRFX0NN RF9SRVNQX0VMOwogCQlkbWFfcm1iKCk7CiAJfQpAQCAtMzk4LDE2NiArNDAwLDYgQEAgc3RhdGlj IGxvbmcgaWJtdnNjc2lzX2NoZWNrX2luaXRfbXNnKHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpLCB1 aW50ICpmb3JtYXQpCiB9CiAKIC8qKgotICogaWJtdnNjc2lzX2VzdGFibGlzaF9uZXdfcSgpIC0g RXN0YWJsaXNoIG5ldyBDUlEgcXVldWUKLSAqIEB2c2NzaToJUG9pbnRlciB0byBvdXIgYWRhcHRl ciBzdHJ1Y3R1cmUKLSAqIEBuZXdfc3RhdGU6CU5ldyBzdGF0ZSBiZWluZyBlc3RhYmxpc2hlZCBh ZnRlciByZXNldHRpbmcgdGhlIHF1ZXVlCi0gKgotICogTXVzdCBiZSBjYWxsZWQgd2l0aCBpbnRl cnJ1cHQgbG9jayBoZWxkLgotICovCi1zdGF0aWMgbG9uZyBpYm12c2NzaXNfZXN0YWJsaXNoX25l d19xKHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpLCAgdWludCBuZXdfc3RhdGUpCi17Ci0JbG9uZyBy YyA9IEFEQVBUX1NVQ0NFU1M7Ci0JdWludCBmb3JtYXQ7Ci0KLQl2c2NzaS0+ZmxhZ3MgJj0gUFJF U0VSVkVfRkxBR19GSUVMRFM7Ci0JdnNjc2ktPnJzcF9xX3RpbWVyLnRpbWVyX3BvcHMgPSAwOwot CXZzY3NpLT5kZWJpdCA9IDA7Ci0JdnNjc2ktPmNyZWRpdCA9IDA7Ci0KLQlyYyA9IHZpb19lbmFi bGVfaW50ZXJydXB0cyh2c2NzaS0+ZG1hX2Rldik7Ci0JaWYgKHJjKSB7Ci0JCXByX3dhcm4oInJl c2V0X3F1ZXVlOiBmYWlsZWQgdG8gZW5hYmxlIGludGVycnVwdHMsIHJjICVsZFxuIiwKLQkJCXJj KTsKLQkJcmV0dXJuIHJjOwotCX0KLQotCXJjID0gaWJtdnNjc2lzX2NoZWNrX2luaXRfbXNnKHZz Y3NpLCAmZm9ybWF0KTsKLQlpZiAocmMpIHsKLQkJZGV2X2VycigmdnNjc2ktPmRldiwgInJlc2V0 X3F1ZXVlOiBjaGVja19pbml0X21zZyBmYWlsZWQsIHJjICVsZFxuIiwKLQkJCXJjKTsKLQkJcmV0 dXJuIHJjOwotCX0KLQotCWlmIChmb3JtYXQgPT0gVU5VU0VEX0ZPUk1BVCAmJiBuZXdfc3RhdGUg PT0gV0FJVF9DT05ORUNUSU9OKSB7Ci0JCXJjID0gaWJtdnNjc2lzX3NlbmRfaW5pdF9tZXNzYWdl KHZzY3NpLCBJTklUX01TRyk7Ci0JCXN3aXRjaCAocmMpIHsKLQkJY2FzZSBIX1NVQ0NFU1M6Ci0J CWNhc2UgSF9EUk9QUEVEOgotCQljYXNlIEhfQ0xPU0VEOgotCQkJcmMgPSBBREFQVF9TVUNDRVNT OwotCQkJYnJlYWs7Ci0KLQkJY2FzZSBIX1BBUkFNRVRFUjoKLQkJY2FzZSBIX0hBUkRXQVJFOgot CQkJYnJlYWs7Ci0KLQkJZGVmYXVsdDoKLQkJCXZzY3NpLT5zdGF0ZSA9IFVOREVGSU5FRDsKLQkJ CXJjID0gSF9IQVJEV0FSRTsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCi0JcmV0dXJuIHJjOwotfQot Ci0vKioKLSAqIGlibXZzY3Npc19yZXNldF9xdWV1ZSgpIC0gUmVzZXQgQ1JRIFF1ZXVlCi0gKiBA dnNjc2k6CVBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCi0gKiBAbmV3X3N0YXRlOglO ZXcgc3RhdGUgdG8gZXN0YWJsaXNoIGFmdGVyIHJlc2V0dGluZyB0aGUgcXVldWUKLSAqCi0gKiBU aGlzIGZ1bmN0aW9uIGNhbGxzIGhfZnJlZV9xIGFuZCB0aGVuIGNhbGxzIGhfcmVnX3EgYW5kIGRv ZXMgYWxsCi0gKiBvZiB0aGUgYm9va2tlZXBpbmcgdG8gZ2V0IHVzIGJhY2sgdG8gd2hlcmUgd2Ug Y2FuIGNvbW11bmljYXRlLgotICoKLSAqIEFjdHVhbGx5LCB3ZSBkb24ndCBhbHdheXMgY2FsbCBo X2ZyZWVfY3JxLiAgQSBwcm9ibGVtIHdhcyBkaXNjb3ZlcmVkCi0gKiB3aGVyZSBvbmUgcGFydGl0 aW9uIHdvdWxkIGNsb3NlIGFuZCByZW9wZW4gaGlzIHF1ZXVlLCB3aGljaCB3b3VsZAotICogY2F1 c2UgaGlzIHBhcnRuZXIgdG8gZ2V0IGEgdHJhbnNwb3J0IGV2ZW50LCB3aGljaCB3b3VsZCBjYXVz ZSBoaW0gdG8KLSAqIGNsb3NlIGFuZCByZW9wZW4gaGlzIHF1ZXVlLCB3aGljaCB3b3VsZCBjYXVz ZSB0aGUgb3JpZ2luYWwgcGFydGl0aW9uCi0gKiB0byBnZXQgYSB0cmFuc3BvcnQgZXZlbnQsIGV0 Yy4sIGV0Yy4gIFRvIHByZXZlbnQgdGhpcywgd2UgZG9uJ3QKLSAqIGFjdHVhbGx5IGNsb3NlIG91 ciBxdWV1ZSBpZiB0aGUgY2xpZW50IGluaXRpYXRlZCB0aGUgcmVzZXQsIChpLmUuCi0gKiBlaXRo ZXIgd2UgZ290IGEgdHJhbnNwb3J0IGV2ZW50IG9yIHdlIGhhdmUgZGV0ZWN0ZWQgdGhhdCB0aGUg Y2xpZW50J3MKLSAqIHF1ZXVlIGlzIGdvbmUpCi0gKgotICogRVhFQ1VUSU9OIEVOVklST05NRU5U OgotICoJUHJvY2VzcyBlbnZpcm9ubWVudCwgY2FsbGVkIHdpdGggaW50ZXJydXB0IGxvY2sgaGVs ZAotICovCi1zdGF0aWMgdm9pZCBpYm12c2NzaXNfcmVzZXRfcXVldWUoc3RydWN0IHNjc2lfaW5m byAqdnNjc2ksIHVpbnQgbmV3X3N0YXRlKQotewotCWludCBieXRlczsKLQlsb25nIHJjID0gQURB UFRfU1VDQ0VTUzsKLQotCXByX2RlYnVnKCJyZXNldF9xdWV1ZTogZmxhZ3MgMHgleFxuIiwgdnNj c2ktPmZsYWdzKTsKLQotCS8qIGRvbid0IHJlc2V0LCB0aGUgY2xpZW50IGRpZCBpdCBmb3IgdXMg Ki8KLQlpZiAodnNjc2ktPmZsYWdzICYgKENMSUVOVF9GQUlMRUQgfCBUUkFOU19FVkVOVCkpIHsK LQkJdnNjc2ktPmZsYWdzICY9ICBQUkVTRVJWRV9GTEFHX0ZJRUxEUzsKLQkJdnNjc2ktPnJzcF9x X3RpbWVyLnRpbWVyX3BvcHMgPSAwOwotCQl2c2NzaS0+ZGViaXQgPSAwOwotCQl2c2NzaS0+Y3Jl ZGl0ID0gMDsKLQkJdnNjc2ktPnN0YXRlID0gbmV3X3N0YXRlOwotCQl2aW9fZW5hYmxlX2ludGVy cnVwdHModnNjc2ktPmRtYV9kZXYpOwotCX0gZWxzZSB7Ci0JCXJjID0gaWJtdnNjc2lzX2ZyZWVf Y29tbWFuZF9xKHZzY3NpKTsKLQkJaWYgKHJjID09IEFEQVBUX1NVQ0NFU1MpIHsKLQkJCXZzY3Np LT5zdGF0ZSA9IG5ld19zdGF0ZTsKLQotCQkJYnl0ZXMgPSB2c2NzaS0+Y21kX3Euc2l6ZSAqIFBB R0VfU0laRTsKLQkJCXJjID0gaF9yZWdfY3JxKHZzY3NpLT5kZHMudW5pdF9pZCwKLQkJCQkgICAg ICAgdnNjc2ktPmNtZF9xLmNycV90b2tlbiwgYnl0ZXMpOwotCQkJaWYgKHJjID09IEhfQ0xPU0VE IHx8IHJjID09IEhfU1VDQ0VTUykgewotCQkJCXJjID0gaWJtdnNjc2lzX2VzdGFibGlzaF9uZXdf cSh2c2NzaSwKLQkJCQkJCQkgICAgICAgbmV3X3N0YXRlKTsKLQkJCX0KLQotCQkJaWYgKHJjICE9 IEFEQVBUX1NVQ0NFU1MpIHsKLQkJCQlwcl9kZWJ1ZygicmVzZXRfcXVldWU6IHJlZ19jcnEgcmMg JWxkXG4iLCByYyk7Ci0KLQkJCQl2c2NzaS0+c3RhdGUgPSBFUlJfRElTQ09OTkVDVEVEOwotCQkJ CXZzY3NpLT5mbGFncyB8PSAgUkVTUE9OU0VfUV9ET1dOOwotCQkJCWlibXZzY3Npc19mcmVlX2Nv bW1hbmRfcSh2c2NzaSk7Ci0JCQl9Ci0JCX0gZWxzZSB7Ci0JCQl2c2NzaS0+c3RhdGUgPSBFUlJf RElTQ09OTkVDVEVEOwotCQkJdnNjc2ktPmZsYWdzIHw9IFJFU1BPTlNFX1FfRE9XTjsKLQkJfQot CX0KLX0KLQotLyoqCi0gKiBpYm12c2NzaXNfZnJlZV9jbWRfcmVzb3VyY2VzKCkgLSBGcmVlIGNv bW1hbmQgcmVzb3VyY2VzCi0gKiBAdnNjc2k6CVBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0 dXJlCi0gKiBAY21kOglDb21tYW5kIHdoaWNoIGlzIG5vdCBsb25nZXIgaW4gdXNlCi0gKgotICog TXVzdCBiZSBjYWxsZWQgd2l0aCBpbnRlcnJ1cHQgbG9jayBoZWxkLgotICovCi1zdGF0aWMgdm9p ZCBpYm12c2NzaXNfZnJlZV9jbWRfcmVzb3VyY2VzKHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpLAot CQkJCQkgc3RydWN0IGlibXZzY3Npc19jbWQgKmNtZCkKLXsKLQlzdHJ1Y3QgaXVfZW50cnkgKml1 ZSA9IGNtZC0+aXVlOwotCi0Jc3dpdGNoIChjbWQtPnR5cGUpIHsKLQljYXNlIFRBU0tfTUFOQUdF TUVOVDoKLQljYXNlIFNDU0lfQ0RCOgotCQkvKgotCQkgKiBXaGVuIHRoZSBxdWV1ZSBnb2VzIGRv d24gdGhpcyB2YWx1ZSBpcyBjbGVhcmVkLCBzbyBpdAotCQkgKiBjYW5ub3QgYmUgY2xlYXJlZCBp biB0aGlzIGdlbmVyYWwgcHVycG9zZSBmdW5jdGlvbi4KLQkJICovCi0JCWlmICh2c2NzaS0+ZGVi aXQpCi0JCQl2c2NzaS0+ZGViaXQgLT0gMTsKLQkJYnJlYWs7Ci0JY2FzZSBBREFQVEVSX01BRDoK LQkJdnNjc2ktPmZsYWdzICY9IH5QUk9DRVNTSU5HX01BRDsKLQkJYnJlYWs7Ci0JY2FzZSBVTlNF VF9UWVBFOgotCQlicmVhazsKLQlkZWZhdWx0OgotCQlkZXZfZXJyKCZ2c2NzaS0+ZGV2LCAiZnJl ZV9jbWRfcmVzb3VyY2VzIHVua25vd24gdHlwZSAlZFxuIiwKLQkJCWNtZC0+dHlwZSk7Ci0JCWJy ZWFrOwotCX0KLQotCWNtZC0+aXVlID0gTlVMTDsKLQlsaXN0X2FkZF90YWlsKCZjbWQtPmxpc3Qs ICZ2c2NzaS0+ZnJlZV9jbWQpOwotCXNycF9pdV9wdXQoaXVlKTsKLQotCWlmIChsaXN0X2VtcHR5 KCZ2c2NzaS0+YWN0aXZlX3EpICYmIGxpc3RfZW1wdHkoJnZzY3NpLT5zY2hlZHVsZV9xKSAmJgot CSAgICBsaXN0X2VtcHR5KCZ2c2NzaS0+d2FpdGluZ19yc3ApICYmICh2c2NzaS0+ZmxhZ3MgJiBX QUlUX0ZPUl9JRExFKSkgewotCQl2c2NzaS0+ZmxhZ3MgJj0gfldBSVRfRk9SX0lETEU7Ci0JCWNv bXBsZXRlKCZ2c2NzaS0+d2FpdF9pZGxlKTsKLQl9Ci19Ci0KLS8qKgogICogaWJtdnNjc2lzX2Rp c2Nvbm5lY3QoKSAtIEhlbHBlciBmdW5jdGlvbiB0byBkaXNjb25uZWN0CiAgKiBAd29yazoJUG9p bnRlciB0byB3b3JrX3N0cnVjdCwgZ2l2ZXMgYWNjZXNzIHRvIG91ciBhZGFwdGVyIHN0cnVjdHVy ZQogICoKQEAgLTU5MCw3ICs0MzIsNyBAQCBzdGF0aWMgdm9pZCBpYm12c2NzaXNfZGlzY29ubmVj dChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJICogc2hvdWxkIHRyYW5zaXRpdGlvbiB0byB0 aGUgbmV3IHN0YXRlCiAJICovCiAJc3dpdGNoICh2c2NzaS0+c3RhdGUpIHsKLQkvKiAgU2hvdWxk IG5ldmVyIGJlIGNhbGxlZCB3aGlsZSBpbiB0aGlzIHN0YXRlLiAqLworCS8qIFNob3VsZCBuZXZl ciBiZSBjYWxsZWQgd2hpbGUgaW4gdGhpcyBzdGF0ZS4gKi8KIAljYXNlIE5PX1FVRVVFOgogCS8q CiAJICogQ2FuIG5ldmVyIHRyYW5zaXRpb24gZnJvbSB0aGlzIHN0YXRlOwpAQCAtNzI2LDg0ICs1 NjgsMzk0IEBAIHN0YXRpYyB2b2lkIGlibXZzY3Npc19kaXNjb25uZWN0KHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKICAqIHRoZSBuZXcgc3RhdGUgKGlmIHRoZSBvbmUgcGFzc2VkIGluIGlzIG1v cmUgInNldmVyZSIgdGhhbiB0aGUKICAqIHByZXZpb3VzIG9uZSkuCiAgKgotICogUFJFQ09ORElU SU9OOgotICoJaW50ZXJydXB0IGxvY2sgaXMgaGVsZAorICogUFJFQ09ORElUSU9OOgorICoJaW50 ZXJydXB0IGxvY2sgaXMgaGVsZAorICovCitzdGF0aWMgdm9pZCBpYm12c2NzaXNfcG9zdF9kaXNj b25uZWN0KHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpLCB1aW50IG5ld19zdGF0ZSwKKwkJCQkgICAg ICB1aW50IGZsYWdfYml0cykKK3sKKwl1aW50IHN0YXRlOworCisJLyogY2hlY2sgdGhlIHZhbGlk aXR5IG9mIHRoZSBuZXcgc3RhdGUgKi8KKwlzd2l0Y2ggKG5ld19zdGF0ZSkgeworCWNhc2UgVU5D T05GSUdVUklORzoKKwljYXNlIEVSUl9ESVNDT05ORUNUOgorCWNhc2UgRVJSX0RJU0NPTk5FQ1Rf UkVDT05ORUNUOgorCWNhc2UgV0FJVF9JRExFOgorCQlicmVhazsKKworCWRlZmF1bHQ6CisJCWRl dl9lcnIoJnZzY3NpLT5kZXYsICJwb3N0X2Rpc2Nvbm5lY3Q6IEludmFsaWQgbmV3IHN0YXRlICVk XG4iLAorCQkJbmV3X3N0YXRlKTsKKwkJcmV0dXJuOworCX0KKworCXZzY3NpLT5mbGFncyB8PSBm bGFnX2JpdHM7CisKKwlwcl9kZWJ1ZygicG9zdF9kaXNjb25uZWN0OiBuZXdfc3RhdGUgMHgleCwg ZmxhZ19iaXRzIDB4JXgsIHZzY3NpLT5mbGFncyAweCV4LCBzdGF0ZSAlaHhcbiIsCisJCSBuZXdf c3RhdGUsIGZsYWdfYml0cywgdnNjc2ktPmZsYWdzLCB2c2NzaS0+c3RhdGUpOworCisJaWYgKCEo dnNjc2ktPmZsYWdzICYgKERJU0NPTk5FQ1RfU0NIRURVTEVEIHwgU0NIRURVTEVfRElTQ09OTkVD VCkpKSB7CisJCXZzY3NpLT5mbGFncyB8PSBTQ0hFRFVMRV9ESVNDT05ORUNUOworCQl2c2NzaS0+ bmV3X3N0YXRlID0gbmV3X3N0YXRlOworCisJCUlOSVRfV09SSygmdnNjc2ktPnByb2Nfd29yaywg aWJtdnNjc2lzX2Rpc2Nvbm5lY3QpOworCQkodm9pZClxdWV1ZV93b3JrKHZzY3NpLT53b3JrX3Es ICZ2c2NzaS0+cHJvY193b3JrKTsKKwl9IGVsc2UgeworCQlpZiAodnNjc2ktPm5ld19zdGF0ZSkK KwkJCXN0YXRlID0gdnNjc2ktPm5ld19zdGF0ZTsKKwkJZWxzZQorCQkJc3RhdGUgPSB2c2NzaS0+ c3RhdGU7CisKKwkJc3dpdGNoIChzdGF0ZSkgeworCQljYXNlIE5PX1FVRVVFOgorCQljYXNlIFVO Q09ORklHVVJJTkc6CisJCQlicmVhazsKKworCQljYXNlIEVSUl9ESVNDT05ORUNURUQ6CisJCWNh c2UgRVJSX0RJU0NPTk5FQ1Q6CisJCWNhc2UgVU5ERUZJTkVEOgorCQkJaWYgKG5ld19zdGF0ZSA9 PSBVTkNPTkZJR1VSSU5HKQorCQkJCXZzY3NpLT5uZXdfc3RhdGUgPSBuZXdfc3RhdGU7CisJCQli cmVhazsKKworCQljYXNlIEVSUl9ESVNDT05ORUNUX1JFQ09OTkVDVDoKKwkJCXN3aXRjaCAobmV3 X3N0YXRlKSB7CisJCQljYXNlIFVOQ09ORklHVVJJTkc6CisJCQljYXNlIEVSUl9ESVNDT05ORUNU OgorCQkJCXZzY3NpLT5uZXdfc3RhdGUgPSBuZXdfc3RhdGU7CisJCQkJYnJlYWs7CisJCQlkZWZh dWx0OgorCQkJCWJyZWFrOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBXQUlUX0VOQUJMRUQ6 CisJCWNhc2UgUEFSVF9VUF9XQUlUX0VOQUI6CisJCWNhc2UgV0FJVF9JRExFOgorCQljYXNlIFdB SVRfQ09OTkVDVElPTjoKKwkJY2FzZSBDT05ORUNURUQ6CisJCWNhc2UgU1JQX1BST0NFU1NJTkc6 CisJCQl2c2NzaS0+bmV3X3N0YXRlID0gbmV3X3N0YXRlOworCQkJYnJlYWs7CisKKwkJZGVmYXVs dDoKKwkJCWJyZWFrOworCQl9CisJfQorCisJcHJfZGVidWcoIkxlYXZpbmcgcG9zdF9kaXNjb25u ZWN0OiBmbGFncyAweCV4LCBuZXdfc3RhdGUgMHgleFxuIiwKKwkJIHZzY3NpLT5mbGFncywgdnNj c2ktPm5ld19zdGF0ZSk7Cit9CisKKy8qKgorICogaWJtdnNjc2lzX2hhbmRsZV9pbml0X2NvbXBs X21zZygpIC0gUmVzcG9uZCB0byBhbiBJbml0IENvbXBsZXRlIE1lc3NhZ2UKKyAqIEB2c2NzaToJ UG9pbnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCisgKiBNdXN0IGJlIGNhbGxlZCB3 aXRoIGludGVycnVwdCBsb2NrIGhlbGQuCisgKi8KK3N0YXRpYyBsb25nIGlibXZzY3Npc19oYW5k bGVfaW5pdF9jb21wbF9tc2coc3RydWN0IHNjc2lfaW5mbyAqdnNjc2kpCit7CisJbG9uZyByYyA9 IEFEQVBUX1NVQ0NFU1M7CisKKwlzd2l0Y2ggKHZzY3NpLT5zdGF0ZSkgeworCWNhc2UgTk9fUVVF VUU6CisJY2FzZSBFUlJfRElTQ09OTkVDVDoKKwljYXNlIEVSUl9ESVNDT05ORUNUX1JFQ09OTkVD VDoKKwljYXNlIEVSUl9ESVNDT05ORUNURUQ6CisJY2FzZSBVTkNPTkZJR1VSSU5HOgorCWNhc2Ug VU5ERUZJTkVEOgorCQlyYyA9IEVSUk9SOworCQlicmVhazsKKworCWNhc2UgV0FJVF9DT05ORUNU SU9OOgorCQl2c2NzaS0+c3RhdGUgPSBDT05ORUNURUQ7CisJCWJyZWFrOworCisJY2FzZSBXQUlU X0lETEU6CisJY2FzZSBTUlBfUFJPQ0VTU0lORzoKKwljYXNlIENPTk5FQ1RFRDoKKwljYXNlIFdB SVRfRU5BQkxFRDoKKwljYXNlIFBBUlRfVVBfV0FJVF9FTkFCOgorCWRlZmF1bHQ6CisJCXJjID0g RVJST1I7CisJCWRldl9lcnIoJnZzY3NpLT5kZXYsICJpbml0X21zZzogaW52YWxpZCBzdGF0ZSAl ZCB0byBnZXQgaW5pdCBjb21wbCBtc2dcbiIsCisJCQl2c2NzaS0+c3RhdGUpOworCQlpYm12c2Nz aXNfcG9zdF9kaXNjb25uZWN0KHZzY3NpLCBFUlJfRElTQ09OTkVDVF9SRUNPTk5FQ1QsIDApOwor CQlicmVhazsKKwl9CisKKwlyZXR1cm4gcmM7Cit9CisKKy8qKgorICogaWJtdnNjc2lzX2hhbmRs ZV9pbml0X21zZygpIC0gUmVzcG9uZCB0byBhbiBJbml0IE1lc3NhZ2UKKyAqIEB2c2NzaToJUG9p bnRlciB0byBvdXIgYWRhcHRlciBzdHJ1Y3R1cmUKKyAqCisgKiBNdXN0IGJlIGNhbGxlZCB3aXRo IGludGVycnVwdCBsb2NrIGhlbGQuCisgKi8KK3N0YXRpYyBsb25nIGlibXZzY3Npc19oYW5kbGVf aW5pdF9tc2coc3RydWN0IHNjc2lfaW5mbyAqdnNjc2kpCit7CisJbG9uZyByYyA9IEFEQVBUX1NV Q0NFU1M7CisKKwlzd2l0Y2ggKHZzY3NpLT5zdGF0ZSkgeworCWNhc2UgV0FJVF9FTkFCTEVEOgor CQl2c2NzaS0+c3RhdGUgPSBQQVJUX1VQX1dBSVRfRU5BQjsKKwkJYnJlYWs7CisKKwljYXNlIFdB SVRfQ09OTkVDVElPTjoKKwkJcmMgPSBpYm12c2NzaXNfc2VuZF9pbml0X21lc3NhZ2UodnNjc2ks IElOSVRfQ09NUExFVEVfTVNHKTsKKwkJc3dpdGNoIChyYykgeworCQljYXNlIEhfU1VDQ0VTUzoK KwkJCXZzY3NpLT5zdGF0ZSA9IENPTk5FQ1RFRDsKKwkJCWJyZWFrOworCisJCWNhc2UgSF9QQVJB TUVURVI6CisJCQlkZXZfZXJyKCZ2c2NzaS0+ZGV2LCAiaW5pdF9tc2c6IGZhaWxlZCB0byBzZW5k LCByYyAlbGRcbiIsCisJCQkJcmMpOworCQkJaWJtdnNjc2lzX3Bvc3RfZGlzY29ubmVjdCh2c2Nz aSwgRVJSX0RJU0NPTk5FQ1QsIDApOworCQkJYnJlYWs7CisKKwkJY2FzZSBIX0RST1BQRUQ6CisJ CQlkZXZfZXJyKCZ2c2NzaS0+ZGV2LCAiaW5pdF9tc2c6IGZhaWxlZCB0byBzZW5kLCByYyAlbGRc biIsCisJCQkJcmMpOworCQkJcmMgPSBFUlJPUjsKKwkJCWlibXZzY3Npc19wb3N0X2Rpc2Nvbm5l Y3QodnNjc2ksCisJCQkJCQkgIEVSUl9ESVNDT05ORUNUX1JFQ09OTkVDVCwgMCk7CisJCQlicmVh azsKKworCQljYXNlIEhfQ0xPU0VEOgorCQkJcHJfd2FybigiaW5pdF9tc2c6IGZhaWxlZCB0byBz ZW5kLCByYyAlbGRcbiIsIHJjKTsKKwkJCXJjID0gMDsKKwkJCWJyZWFrOworCQl9CisJCWJyZWFr OworCisJY2FzZSBVTkRFRklORUQ6CisJCXJjID0gRVJST1I7CisJCWJyZWFrOworCisJY2FzZSBV TkNPTkZJR1VSSU5HOgorCQlicmVhazsKKworCWNhc2UgUEFSVF9VUF9XQUlUX0VOQUI6CisJY2Fz ZSBDT05ORUNURUQ6CisJY2FzZSBTUlBfUFJPQ0VTU0lORzoKKwljYXNlIFdBSVRfSURMRToKKwlj YXNlIE5PX1FVRVVFOgorCWNhc2UgRVJSX0RJU0NPTk5FQ1Q6CisJY2FzZSBFUlJfRElTQ09OTkVD VF9SRUNPTk5FQ1Q6CisJY2FzZSBFUlJfRElTQ09OTkVDVEVEOgorCWRlZmF1bHQ6CisJCXJjID0g RVJST1I7CisJCWRldl9lcnIoJnZzY3NpLT5kZXYsICJpbml0X21zZzogaW52YWxpZCBzdGF0ZSAl ZCB0byBnZXQgaW5pdCBtc2dcbiIsCisJCQl2c2NzaS0+c3RhdGUpOworCQlpYm12c2NzaXNfcG9z dF9kaXNjb25uZWN0KHZzY3NpLCBFUlJfRElTQ09OTkVDVF9SRUNPTk5FQ1QsIDApOworCQlicmVh azsKKwl9CisKKwlyZXR1cm4gcmM7Cit9CisKKy8qKgorICogaWJtdnNjc2lzX2luaXRfbXNnKCkg LSBSZXNwb25kIHRvIGFuIGluaXQgbWVzc2FnZQorICogQHZzY3NpOglQb2ludGVyIHRvIG91ciBh ZGFwdGVyIHN0cnVjdHVyZQorICogQGNycToJUG9pbnRlciB0byBDUlEgZWxlbWVudCBjb250YWlu aW5nIHRoZSBJbml0IE1lc3NhZ2UKKyAqCisgKiBFWEVDVVRJT04gRU5WSVJPTk1FTlQ6CisgKglJ bnRlcnJ1cHQsIGludGVycnVwdCBsb2NrIGhlbGQKKyAqLworc3RhdGljIGxvbmcgaWJtdnNjc2lz X2luaXRfbXNnKHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpLCBzdHJ1Y3Qgdmlvc3JwX2NycSAqY3Jx KQoreworCWxvbmcgcmMgPSBBREFQVF9TVUNDRVNTOworCisJcHJfZGVidWcoImluaXRfbXNnOiBz dGF0ZSAweCVoeFxuIiwgdnNjc2ktPnN0YXRlKTsKKworCXJjID0gaF92aW9jdGwodnNjc2ktPmRk cy51bml0X2lkLCBIX0dFVF9QQVJUTkVSX0lORk8sCisJCSAgICAgICh1NjQpdnNjc2ktPm1hcF9p b2JhIHwgKCh1NjQpUEFHRV9TSVpFIDw8IDMyKSwgMCwgMCwgMCwKKwkJICAgICAgMCk7CisJaWYg KHJjID09IEhfU1VDQ0VTUykgeworCQl2c2NzaS0+Y2xpZW50X2RhdGEucGFydGl0aW9uX251bWJl ciA9CisJCQliZTY0X3RvX2NwdSgqKHU2NCAqKXZzY3NpLT5tYXBfYnVmKTsKKwkJcHJfZGVidWco ImluaXRfbXNnLCBwYXJ0IG51bSAlZFxuIiwKKwkJCSB2c2NzaS0+Y2xpZW50X2RhdGEucGFydGl0 aW9uX251bWJlcik7CisJfSBlbHNlIHsKKwkJcHJfZGVidWcoImluaXRfbXNnIGhfdmlvY3RsIHJj ICVsZFxuIiwgcmMpOworCQlyYyA9IEFEQVBUX1NVQ0NFU1M7CisJfQorCisJaWYgKGNycS0+Zm9y bWF0ID09IElOSVRfTVNHKSB7CisJCXJjID0gaWJtdnNjc2lzX2hhbmRsZV9pbml0X21zZyh2c2Nz aSk7CisJfSBlbHNlIGlmIChjcnEtPmZvcm1hdCA9PSBJTklUX0NPTVBMRVRFX01TRykgeworCQly YyA9IGlibXZzY3Npc19oYW5kbGVfaW5pdF9jb21wbF9tc2codnNjc2kpOworCX0gZWxzZSB7CisJ CXJjID0gRVJST1I7CisJCWRldl9lcnIoJnZzY3NpLT5kZXYsICJpbml0X21zZzogaW52YWxpZCBm b3JtYXQgJWRcbiIsCisJCQkodWludCljcnEtPmZvcm1hdCk7CisJCWlibXZzY3Npc19wb3N0X2Rp c2Nvbm5lY3QodnNjc2ksIEVSUl9ESVNDT05ORUNUX1JFQ09OTkVDVCwgMCk7CisJfQorCisJcmV0 dXJuIHJjOworfQorCisvKioKKyAqIGlibXZzY3Npc19lc3RhYmxpc2hfbmV3X3EoKSAtIEVzdGFi bGlzaCBuZXcgQ1JRIHF1ZXVlCisgKiBAdnNjc2k6CVBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3Ry dWN0dXJlCisgKiBAbmV3X3N0YXRlOglOZXcgc3RhdGUgYmVpbmcgZXN0YWJsaXNoZWQgYWZ0ZXIg cmVzZXR0aW5nIHRoZSBxdWV1ZQorICoKKyAqIE11c3QgYmUgY2FsbGVkIHdpdGggaW50ZXJydXB0 IGxvY2sgaGVsZC4KKyAqLworc3RhdGljIGxvbmcgaWJtdnNjc2lzX2VzdGFibGlzaF9uZXdfcShz dHJ1Y3Qgc2NzaV9pbmZvICp2c2NzaSwgdWludCBuZXdfc3RhdGUpCit7CisJbG9uZyByYyA9IEFE QVBUX1NVQ0NFU1M7CisJdWludCBmb3JtYXQ7CisKKwl2c2NzaS0+ZmxhZ3MgJj0gUFJFU0VSVkVf RkxBR19GSUVMRFM7CisJdnNjc2ktPnJzcF9xX3RpbWVyLnRpbWVyX3BvcHMgPSAwOworCXZzY3Np LT5kZWJpdCA9IDA7CisJdnNjc2ktPmNyZWRpdCA9IDA7CisKKwlyYyA9IHZpb19lbmFibGVfaW50 ZXJydXB0cyh2c2NzaS0+ZG1hX2Rldik7CisJaWYgKHJjKSB7CisJCXByX3dhcm4oInJlc2V0X3F1 ZXVlOiBmYWlsZWQgdG8gZW5hYmxlIGludGVycnVwdHMsIHJjICVsZFxuIiwKKwkJCXJjKTsKKwkJ cmV0dXJuIHJjOworCX0KKworCXJjID0gaWJtdnNjc2lzX2NoZWNrX2luaXRfbXNnKHZzY3NpLCAm Zm9ybWF0KTsKKwlpZiAocmMpIHsKKwkJZGV2X2VycigmdnNjc2ktPmRldiwgInJlc2V0X3F1ZXVl OiBjaGVja19pbml0X21zZyBmYWlsZWQsIHJjICVsZFxuIiwKKwkJCXJjKTsKKwkJcmV0dXJuIHJj OworCX0KKworCWlmIChmb3JtYXQgPT0gVU5VU0VEX0ZPUk1BVCAmJiBuZXdfc3RhdGUgPT0gV0FJ VF9DT05ORUNUSU9OKSB7CisJCXJjID0gaWJtdnNjc2lzX3NlbmRfaW5pdF9tZXNzYWdlKHZzY3Np LCBJTklUX01TRyk7CisJCXN3aXRjaCAocmMpIHsKKwkJY2FzZSBIX1NVQ0NFU1M6CisJCWNhc2Ug SF9EUk9QUEVEOgorCQljYXNlIEhfQ0xPU0VEOgorCQkJcmMgPSBBREFQVF9TVUNDRVNTOworCQkJ YnJlYWs7CisKKwkJY2FzZSBIX1BBUkFNRVRFUjoKKwkJY2FzZSBIX0hBUkRXQVJFOgorCQkJYnJl YWs7CisKKwkJZGVmYXVsdDoKKwkJCXZzY3NpLT5zdGF0ZSA9IFVOREVGSU5FRDsKKwkJCXJjID0g SF9IQVJEV0FSRTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJcmV0dXJuIHJjOworfQorCisvKioK KyAqIGlibXZzY3Npc19yZXNldF9xdWV1ZSgpIC0gUmVzZXQgQ1JRIFF1ZXVlCisgKiBAdnNjc2k6 CVBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCisgKiBAbmV3X3N0YXRlOglOZXcgc3Rh dGUgdG8gZXN0YWJsaXNoIGFmdGVyIHJlc2V0dGluZyB0aGUgcXVldWUKKyAqCisgKiBUaGlzIGZ1 bmN0aW9uIGNhbGxzIGhfZnJlZV9xIGFuZCB0aGVuIGNhbGxzIGhfcmVnX3EgYW5kIGRvZXMgYWxs CisgKiBvZiB0aGUgYm9va2tlZXBpbmcgdG8gZ2V0IHVzIGJhY2sgdG8gd2hlcmUgd2UgY2FuIGNv bW11bmljYXRlLgorICoKKyAqIEFjdHVhbGx5LCB3ZSBkb24ndCBhbHdheXMgY2FsbCBoX2ZyZWVf Y3JxLiAgQSBwcm9ibGVtIHdhcyBkaXNjb3ZlcmVkCisgKiB3aGVyZSBvbmUgcGFydGl0aW9uIHdv dWxkIGNsb3NlIGFuZCByZW9wZW4gaGlzIHF1ZXVlLCB3aGljaCB3b3VsZAorICogY2F1c2UgaGlz IHBhcnRuZXIgdG8gZ2V0IGEgdHJhbnNwb3J0IGV2ZW50LCB3aGljaCB3b3VsZCBjYXVzZSBoaW0g dG8KKyAqIGNsb3NlIGFuZCByZW9wZW4gaGlzIHF1ZXVlLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUg b3JpZ2luYWwgcGFydGl0aW9uCisgKiB0byBnZXQgYSB0cmFuc3BvcnQgZXZlbnQsIGV0Yy4sIGV0 Yy4gIFRvIHByZXZlbnQgdGhpcywgd2UgZG9uJ3QKKyAqIGFjdHVhbGx5IGNsb3NlIG91ciBxdWV1 ZSBpZiB0aGUgY2xpZW50IGluaXRpYXRlZCB0aGUgcmVzZXQsIChpLmUuCisgKiBlaXRoZXIgd2Ug Z290IGEgdHJhbnNwb3J0IGV2ZW50IG9yIHdlIGhhdmUgZGV0ZWN0ZWQgdGhhdCB0aGUgY2xpZW50 J3MKKyAqIHF1ZXVlIGlzIGdvbmUpCisgKgorICogRVhFQ1VUSU9OIEVOVklST05NRU5UOgorICoJ UHJvY2VzcyBlbnZpcm9ubWVudCwgY2FsbGVkIHdpdGggaW50ZXJydXB0IGxvY2sgaGVsZAorICov CitzdGF0aWMgdm9pZCBpYm12c2NzaXNfcmVzZXRfcXVldWUoc3RydWN0IHNjc2lfaW5mbyAqdnNj c2ksIHVpbnQgbmV3X3N0YXRlKQoreworCWludCBieXRlczsKKwlsb25nIHJjID0gQURBUFRfU1VD Q0VTUzsKKworCXByX2RlYnVnKCJyZXNldF9xdWV1ZTogZmxhZ3MgMHgleFxuIiwgdnNjc2ktPmZs YWdzKTsKKworCS8qIGRvbid0IHJlc2V0LCB0aGUgY2xpZW50IGRpZCBpdCBmb3IgdXMgKi8KKwlp ZiAodnNjc2ktPmZsYWdzICYgKENMSUVOVF9GQUlMRUQgfCBUUkFOU19FVkVOVCkpIHsKKwkJdnNj c2ktPmZsYWdzICY9IFBSRVNFUlZFX0ZMQUdfRklFTERTOworCQl2c2NzaS0+cnNwX3FfdGltZXIu dGltZXJfcG9wcyA9IDA7CisJCXZzY3NpLT5kZWJpdCA9IDA7CisJCXZzY3NpLT5jcmVkaXQgPSAw OworCQl2c2NzaS0+c3RhdGUgPSBuZXdfc3RhdGU7CisJCXZpb19lbmFibGVfaW50ZXJydXB0cyh2 c2NzaS0+ZG1hX2Rldik7CisJfSBlbHNlIHsKKwkJcmMgPSBpYm12c2NzaXNfZnJlZV9jb21tYW5k X3EodnNjc2kpOworCQlpZiAocmMgPT0gQURBUFRfU1VDQ0VTUykgeworCQkJdnNjc2ktPnN0YXRl ID0gbmV3X3N0YXRlOworCisJCQlieXRlcyA9IHZzY3NpLT5jbWRfcS5zaXplICogUEFHRV9TSVpF OworCQkJcmMgPSBoX3JlZ19jcnEodnNjc2ktPmRkcy51bml0X2lkLAorCQkJCSAgICAgICB2c2Nz aS0+Y21kX3EuY3JxX3Rva2VuLCBieXRlcyk7CisJCQlpZiAocmMgPT0gSF9DTE9TRUQgfHwgcmMg PT0gSF9TVUNDRVNTKSB7CisJCQkJcmMgPSBpYm12c2NzaXNfZXN0YWJsaXNoX25ld19xKHZzY3Np LAorCQkJCQkJCSAgICAgICBuZXdfc3RhdGUpOworCQkJfQorCisJCQlpZiAocmMgIT0gQURBUFRf U1VDQ0VTUykgeworCQkJCXByX2RlYnVnKCJyZXNldF9xdWV1ZTogcmVnX2NycSByYyAlbGRcbiIs IHJjKTsKKworCQkJCXZzY3NpLT5zdGF0ZSA9IEVSUl9ESVNDT05ORUNURUQ7CisJCQkJdnNjc2kt PmZsYWdzIHw9IFJFU1BPTlNFX1FfRE9XTjsKKwkJCQlpYm12c2NzaXNfZnJlZV9jb21tYW5kX3Eo dnNjc2kpOworCQkJfQorCQl9IGVsc2UgeworCQkJdnNjc2ktPnN0YXRlID0gRVJSX0RJU0NPTk5F Q1RFRDsKKwkJCXZzY3NpLT5mbGFncyB8PSBSRVNQT05TRV9RX0RPV047CisJCX0KKwl9Cit9CisK Ky8qKgorICogaWJtdnNjc2lzX2ZyZWVfY21kX3Jlc291cmNlcygpIC0gRnJlZSBjb21tYW5kIHJl c291cmNlcworICogQHZzY3NpOglQb2ludGVyIHRvIG91ciBhZGFwdGVyIHN0cnVjdHVyZQorICog QGNtZDoJQ29tbWFuZCB3aGljaCBpcyBub3QgbG9uZ2VyIGluIHVzZQorICoKKyAqIE11c3QgYmUg Y2FsbGVkIHdpdGggaW50ZXJydXB0IGxvY2sgaGVsZC4KICAqLwotc3RhdGljIHZvaWQgaWJtdnNj c2lzX3Bvc3RfZGlzY29ubmVjdChzdHJ1Y3Qgc2NzaV9pbmZvICp2c2NzaSwgdWludCBuZXdfc3Rh dGUsCi0JCQkJICAgICAgdWludCBmbGFnX2JpdHMpCitzdGF0aWMgdm9pZCBpYm12c2NzaXNfZnJl ZV9jbWRfcmVzb3VyY2VzKHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpLAorCQkJCQkgc3RydWN0IGli bXZzY3Npc19jbWQgKmNtZCkKIHsKLQl1aW50IHN0YXRlOworCXN0cnVjdCBpdV9lbnRyeSAqaXVl ID0gY21kLT5pdWU7CiAKLQkvKiBjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIG5ldyBzdGF0ZSAq LwotCXN3aXRjaCAobmV3X3N0YXRlKSB7Ci0JY2FzZSBVTkNPTkZJR1VSSU5HOgotCWNhc2UgRVJS X0RJU0NPTk5FQ1Q6Ci0JY2FzZSBFUlJfRElTQ09OTkVDVF9SRUNPTk5FQ1Q6Ci0JY2FzZSBXQUlU X0lETEU6CisJc3dpdGNoIChjbWQtPnR5cGUpIHsKKwljYXNlIFRBU0tfTUFOQUdFTUVOVDoKKwlj YXNlIFNDU0lfQ0RCOgorCQkvKgorCQkgKiBXaGVuIHRoZSBxdWV1ZSBnb2VzIGRvd24gdGhpcyB2 YWx1ZSBpcyBjbGVhcmVkLCBzbyBpdAorCQkgKiBjYW5ub3QgYmUgY2xlYXJlZCBpbiB0aGlzIGdl bmVyYWwgcHVycG9zZSBmdW5jdGlvbi4KKwkJICovCisJCWlmICh2c2NzaS0+ZGViaXQpCisJCQl2 c2NzaS0+ZGViaXQgLT0gMTsKKwkJYnJlYWs7CisJY2FzZSBBREFQVEVSX01BRDoKKwkJdnNjc2kt PmZsYWdzICY9IH5QUk9DRVNTSU5HX01BRDsKKwkJYnJlYWs7CisJY2FzZSBVTlNFVF9UWVBFOgog CQlicmVhazsKLQogCWRlZmF1bHQ6Ci0JCWRldl9lcnIoJnZzY3NpLT5kZXYsICJwb3N0X2Rpc2Nv bm5lY3Q6IEludmFsaWQgbmV3IHN0YXRlICVkXG4iLAotCQkJbmV3X3N0YXRlKTsKLQkJcmV0dXJu OworCQlkZXZfZXJyKCZ2c2NzaS0+ZGV2LCAiZnJlZV9jbWRfcmVzb3VyY2VzIHVua25vd24gdHlw ZSAlZFxuIiwKKwkJCWNtZC0+dHlwZSk7CisJCWJyZWFrOwogCX0KIAotCXZzY3NpLT5mbGFncyB8 PSBmbGFnX2JpdHM7Ci0KLQlwcl9kZWJ1ZygicG9zdF9kaXNjb25uZWN0OiBuZXdfc3RhdGUgMHgl eCwgZmxhZ19iaXRzIDB4JXgsIHZzY3NpLT5mbGFncyAweCV4LCBzdGF0ZSAlaHhcbiIsCi0JCSBu ZXdfc3RhdGUsIGZsYWdfYml0cywgdnNjc2ktPmZsYWdzLCB2c2NzaS0+c3RhdGUpOwotCi0JaWYg KCEodnNjc2ktPmZsYWdzICYgKERJU0NPTk5FQ1RfU0NIRURVTEVEIHwgU0NIRURVTEVfRElTQ09O TkVDVCkpKSB7Ci0JCXZzY3NpLT5mbGFncyB8PSBTQ0hFRFVMRV9ESVNDT05ORUNUOwotCQl2c2Nz aS0+bmV3X3N0YXRlID0gbmV3X3N0YXRlOwotCi0JCUlOSVRfV09SSygmdnNjc2ktPnByb2Nfd29y aywgaWJtdnNjc2lzX2Rpc2Nvbm5lY3QpOwotCQkodm9pZClxdWV1ZV93b3JrKHZzY3NpLT53b3Jr X3EsICZ2c2NzaS0+cHJvY193b3JrKTsKLQl9IGVsc2UgewotCQlpZiAodnNjc2ktPm5ld19zdGF0 ZSkKLQkJCXN0YXRlID0gdnNjc2ktPm5ld19zdGF0ZTsKLQkJZWxzZQotCQkJc3RhdGUgPSB2c2Nz aS0+c3RhdGU7Ci0KLQkJc3dpdGNoIChzdGF0ZSkgewotCQljYXNlIE5PX1FVRVVFOgotCQljYXNl IFVOQ09ORklHVVJJTkc6Ci0JCQlicmVhazsKLQotCQljYXNlIEVSUl9ESVNDT05ORUNURUQ6Ci0J CWNhc2UgRVJSX0RJU0NPTk5FQ1Q6Ci0JCWNhc2UgVU5ERUZJTkVEOgotCQkJaWYgKG5ld19zdGF0 ZSA9PSBVTkNPTkZJR1VSSU5HKQotCQkJCXZzY3NpLT5uZXdfc3RhdGUgPSBuZXdfc3RhdGU7Ci0J CQlicmVhazsKLQotCQljYXNlIEVSUl9ESVNDT05ORUNUX1JFQ09OTkVDVDoKLQkJCXN3aXRjaCAo bmV3X3N0YXRlKSB7Ci0JCQljYXNlIFVOQ09ORklHVVJJTkc6Ci0JCQljYXNlIEVSUl9ESVNDT05O RUNUOgotCQkJCXZzY3NpLT5uZXdfc3RhdGUgPSBuZXdfc3RhdGU7Ci0JCQkJYnJlYWs7Ci0JCQlk ZWZhdWx0OgotCQkJCWJyZWFrOwotCQkJfQotCQkJYnJlYWs7Ci0KLQkJY2FzZSBXQUlUX0VOQUJM RUQ6Ci0JCWNhc2UgUEFSVF9VUF9XQUlUX0VOQUI6Ci0JCWNhc2UgV0FJVF9JRExFOgotCQljYXNl IFdBSVRfQ09OTkVDVElPTjoKLQkJY2FzZSBDT05ORUNURUQ6Ci0JCWNhc2UgU1JQX1BST0NFU1NJ Tkc6Ci0JCQl2c2NzaS0+bmV3X3N0YXRlID0gbmV3X3N0YXRlOwotCQkJYnJlYWs7CisJY21kLT5p dWUgPSBOVUxMOworCWxpc3RfYWRkX3RhaWwoJmNtZC0+bGlzdCwgJnZzY3NpLT5mcmVlX2NtZCk7 CisJc3JwX2l1X3B1dChpdWUpOwogCi0JCWRlZmF1bHQ6Ci0JCQlicmVhazsKLQkJfQorCWlmIChs aXN0X2VtcHR5KCZ2c2NzaS0+YWN0aXZlX3EpICYmIGxpc3RfZW1wdHkoJnZzY3NpLT5zY2hlZHVs ZV9xKSAmJgorCSAgICBsaXN0X2VtcHR5KCZ2c2NzaS0+d2FpdGluZ19yc3ApICYmICh2c2NzaS0+ ZmxhZ3MgJiBXQUlUX0ZPUl9JRExFKSkgeworCQl2c2NzaS0+ZmxhZ3MgJj0gfldBSVRfRk9SX0lE TEU7CisJCWNvbXBsZXRlKCZ2c2NzaS0+d2FpdF9pZGxlKTsKIAl9Ci0KLQlwcl9kZWJ1ZygiTGVh dmluZyBwb3N0X2Rpc2Nvbm5lY3Q6IGZsYWdzIDB4JXgsIG5ld19zdGF0ZSAweCV4XG4iLAotCQkg dnNjc2ktPmZsYWdzLCB2c2NzaS0+bmV3X3N0YXRlKTsKIH0KIAogLyoqCkBAIC04OTYsNyArMTA0 OCw3IEBAIHN0YXRpYyBsb25nIGlibXZzY3Npc190cmFuc19ldmVudChzdHJ1Y3Qgc2NzaV9pbmZv ICp2c2NzaSwKIAkJfQogCX0KIAotCXJjID0gIHZzY3NpLT5mbGFncyAmIFNDSEVEVUxFX0RJU0NP Tk5FQ1Q7CisJcmMgPSB2c2NzaS0+ZmxhZ3MgJiBTQ0hFRFVMRV9ESVNDT05ORUNUOwogCiAJcHJf ZGVidWcoIkxlYXZpbmcgdHJhbnNfZXZlbnQ6IGZsYWdzIDB4JXgsIHN0YXRlIDB4JWh4LCByYyAl bGRcbiIsCiAJCSB2c2NzaS0+ZmxhZ3MsIHZzY3NpLT5zdGF0ZSwgcmMpOwpAQCAtMTIyMSw3ICsx MzczLDcgQEAgc3RhdGljIGxvbmcgaWJtdnNjc2lzX2NvcHlfY3JxX3BhY2tldChzdHJ1Y3Qgc2Nz aV9pbmZvICp2c2NzaSwKICAqIEBpdWU6CUluZm9ybWF0aW9uIFVuaXQgY29udGFpbmluZyB0aGUg QWRhcHRlciBJbmZvIE1BRCByZXF1ZXN0CiAgKgogICogRVhFQ1VUSU9OIEVOVklST05NRU5UOgot ICoJSW50ZXJydXB0IGFkcGF0ZXIgbG9jayBpcyBoZWxkCisgKglJbnRlcnJ1cHQgYWRhcHRlciBs b2NrIGlzIGhlbGQKICAqLwogc3RhdGljIGxvbmcgaWJtdnNjc2lzX2FkYXB0ZXJfaW5mbyhzdHJ1 Y3Qgc2NzaV9pbmZvICp2c2NzaSwKIAkJCQkgICBzdHJ1Y3QgaXVfZW50cnkgKml1ZSkKQEAgLTE2 OTIsNyArMTg0NCw3IEBAIHN0YXRpYyB2b2lkIGlibXZzY3Npc19zZW5kX21hZF9yZXNwKHN0cnVj dCBzY3NpX2luZm8gKnZzY3NpLAogICogQGNycToJUG9pbnRlciB0byB0aGUgQ1JRIGVudHJ5IGNv bnRhaW5pbmcgdGhlIE1BRCByZXF1ZXN0CiAgKgogICogRVhFQ1VUSU9OIEVOVklST05NRU5UOgot ICoJSW50ZXJydXB0ICBjYWxsZWQgd2l0aCBhZGFwdGVyIGxvY2sgaGVsZAorICoJSW50ZXJydXB0 LCBjYWxsZWQgd2l0aCBhZGFwdGVyIGxvY2sgaGVsZAogICovCiBzdGF0aWMgbG9uZyBpYm12c2Nz aXNfbWFkKHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpLCBzdHJ1Y3Qgdmlvc3JwX2NycSAqY3JxKQog ewpAQCAtMTg1OCw3ICsyMDEwLDcgQEAgc3RhdGljIGxvbmcgaWJtdnNjc2lzX3NycF9sb2dpbl9y ZWooc3RydWN0IHNjc2lfaW5mbyAqdnNjc2ksCiAJCWJyZWFrOwogCWNhc2UgSF9QRVJNSVNTSU9O OgogCQlpZiAoY29ubmVjdGlvbl9icm9rZW4odnNjc2kpKQotCQkJZmxhZ19iaXRzID0gIFJFU1BP TlNFX1FfRE9XTiB8IENMSUVOVF9GQUlMRUQ7CisJCQlmbGFnX2JpdHMgPSBSRVNQT05TRV9RX0RP V04gfCBDTElFTlRfRkFJTEVEOwogCQlkZXZfZXJyKCZ2c2NzaS0+ZGV2LCAibG9naW5fcmVqOiBl cnJvciBjb3B5aW5nIHRvIGNsaWVudCwgcmMgJWxkXG4iLAogCQkJcmMpOwogCQlpYm12c2NzaXNf cG9zdF9kaXNjb25uZWN0KHZzY3NpLCBFUlJfRElTQ09OTkVDVF9SRUNPTk5FQ1QsCkBAIC0yMTgx LDE1NiArMjMzMyw2IEBAIHN0YXRpYyBsb25nIGlibXZzY3Npc19waW5nX3Jlc3BvbnNlKHN0cnVj dCBzY3NpX2luZm8gKnZzY3NpKQogfQogCiAvKioKLSAqIGlibXZzY3Npc19oYW5kbGVfaW5pdF9j b21wbF9tc2coKSAtIFJlc3BvbmQgdG8gYW4gSW5pdCBDb21wbGV0ZSBNZXNzYWdlCi0gKiBAdnNj c2k6CVBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCi0gKgotICogTXVzdCBiZSBjYWxs ZWQgd2l0aCBpbnRlcnJ1cHQgbG9jayBoZWxkLgotICovCi1zdGF0aWMgbG9uZyBpYm12c2NzaXNf aGFuZGxlX2luaXRfY29tcGxfbXNnKHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpKQotewotCWxvbmcg cmMgPSBBREFQVF9TVUNDRVNTOwotCi0Jc3dpdGNoICh2c2NzaS0+c3RhdGUpIHsKLQljYXNlIE5P X1FVRVVFOgotCWNhc2UgRVJSX0RJU0NPTk5FQ1Q6Ci0JY2FzZSBFUlJfRElTQ09OTkVDVF9SRUNP Tk5FQ1Q6Ci0JY2FzZSBFUlJfRElTQ09OTkVDVEVEOgotCWNhc2UgVU5DT05GSUdVUklORzoKLQlj YXNlIFVOREVGSU5FRDoKLQkJcmMgPSBFUlJPUjsKLQkJYnJlYWs7Ci0KLQljYXNlIFdBSVRfQ09O TkVDVElPTjoKLQkJdnNjc2ktPnN0YXRlID0gQ09OTkVDVEVEOwotCQlicmVhazsKLQotCWNhc2Ug V0FJVF9JRExFOgotCWNhc2UgU1JQX1BST0NFU1NJTkc6Ci0JY2FzZSBDT05ORUNURUQ6Ci0JY2Fz ZSBXQUlUX0VOQUJMRUQ6Ci0JY2FzZSBQQVJUX1VQX1dBSVRfRU5BQjoKLQlkZWZhdWx0OgotCQly YyA9IEVSUk9SOwotCQlkZXZfZXJyKCZ2c2NzaS0+ZGV2LCAiaW5pdF9tc2c6IGludmFsaWQgc3Rh dGUgJWQgdG8gZ2V0IGluaXQgY29tcGwgbXNnXG4iLAotCQkJdnNjc2ktPnN0YXRlKTsKLQkJaWJt dnNjc2lzX3Bvc3RfZGlzY29ubmVjdCh2c2NzaSwgRVJSX0RJU0NPTk5FQ1RfUkVDT05ORUNULCAw KTsKLQkJYnJlYWs7Ci0JfQotCi0JcmV0dXJuIHJjOwotfQotCi0vKioKLSAqIGlibXZzY3Npc19o YW5kbGVfaW5pdF9tc2coKSAtIFJlc3BvbmQgdG8gYW4gSW5pdCBNZXNzYWdlCi0gKiBAdnNjc2k6 CVBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCi0gKgotICogTXVzdCBiZSBjYWxsZWQg d2l0aCBpbnRlcnJ1cHQgbG9jayBoZWxkLgotICovCi1zdGF0aWMgbG9uZyBpYm12c2NzaXNfaGFu ZGxlX2luaXRfbXNnKHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpKQotewotCWxvbmcgcmMgPSBBREFQ VF9TVUNDRVNTOwotCi0Jc3dpdGNoICh2c2NzaS0+c3RhdGUpIHsKLQljYXNlIFdBSVRfRU5BQkxF RDoKLQkJdnNjc2ktPnN0YXRlID0gUEFSVF9VUF9XQUlUX0VOQUI7Ci0JCWJyZWFrOwotCi0JY2Fz ZSBXQUlUX0NPTk5FQ1RJT046Ci0JCXJjID0gaWJtdnNjc2lzX3NlbmRfaW5pdF9tZXNzYWdlKHZz Y3NpLCBJTklUX0NPTVBMRVRFX01TRyk7Ci0JCXN3aXRjaCAocmMpIHsKLQkJY2FzZSBIX1NVQ0NF U1M6Ci0JCQl2c2NzaS0+c3RhdGUgPSBDT05ORUNURUQ7Ci0JCQlicmVhazsKLQotCQljYXNlIEhf UEFSQU1FVEVSOgotCQkJZGV2X2VycigmdnNjc2ktPmRldiwgImluaXRfbXNnOiBmYWlsZWQgdG8g c2VuZCwgcmMgJWxkXG4iLAotCQkJCXJjKTsKLQkJCWlibXZzY3Npc19wb3N0X2Rpc2Nvbm5lY3Qo dnNjc2ksIEVSUl9ESVNDT05ORUNULCAwKTsKLQkJCWJyZWFrOwotCi0JCWNhc2UgSF9EUk9QUEVE OgotCQkJZGV2X2VycigmdnNjc2ktPmRldiwgImluaXRfbXNnOiBmYWlsZWQgdG8gc2VuZCwgcmMg JWxkXG4iLAotCQkJCXJjKTsKLQkJCXJjID0gRVJST1I7Ci0JCQlpYm12c2NzaXNfcG9zdF9kaXNj b25uZWN0KHZzY3NpLAotCQkJCQkJICBFUlJfRElTQ09OTkVDVF9SRUNPTk5FQ1QsIDApOwotCQkJ YnJlYWs7Ci0KLQkJY2FzZSBIX0NMT1NFRDoKLQkJCXByX3dhcm4oImluaXRfbXNnOiBmYWlsZWQg dG8gc2VuZCwgcmMgJWxkXG4iLCByYyk7Ci0JCQlyYyA9IDA7Ci0JCQlicmVhazsKLQkJfQotCQli cmVhazsKLQotCWNhc2UgVU5ERUZJTkVEOgotCQlyYyA9IEVSUk9SOwotCQlicmVhazsKLQotCWNh c2UgVU5DT05GSUdVUklORzoKLQkJYnJlYWs7Ci0KLQljYXNlIFBBUlRfVVBfV0FJVF9FTkFCOgot CWNhc2UgQ09OTkVDVEVEOgotCWNhc2UgU1JQX1BST0NFU1NJTkc6Ci0JY2FzZSBXQUlUX0lETEU6 Ci0JY2FzZSBOT19RVUVVRToKLQljYXNlIEVSUl9ESVNDT05ORUNUOgotCWNhc2UgRVJSX0RJU0NP Tk5FQ1RfUkVDT05ORUNUOgotCWNhc2UgRVJSX0RJU0NPTk5FQ1RFRDoKLQlkZWZhdWx0OgotCQly YyA9IEVSUk9SOwotCQlkZXZfZXJyKCZ2c2NzaS0+ZGV2LCAiaW5pdF9tc2c6IGludmFsaWQgc3Rh dGUgJWQgdG8gZ2V0IGluaXQgbXNnXG4iLAotCQkJdnNjc2ktPnN0YXRlKTsKLQkJaWJtdnNjc2lz X3Bvc3RfZGlzY29ubmVjdCh2c2NzaSwgRVJSX0RJU0NPTk5FQ1RfUkVDT05ORUNULCAwKTsKLQkJ YnJlYWs7Ci0JfQotCi0JcmV0dXJuIHJjOwotfQotCi0vKioKLSAqIGlibXZzY3Npc19pbml0X21z ZygpIC0gUmVzcG9uZCB0byBhbiBpbml0IG1lc3NhZ2UKLSAqIEB2c2NzaToJUG9pbnRlciB0byBv dXIgYWRhcHRlciBzdHJ1Y3R1cmUKLSAqIEBjcnE6CVBvaW50ZXIgdG8gQ1JRIGVsZW1lbnQgY29u dGFpbmluZyB0aGUgSW5pdCBNZXNzYWdlCi0gKgotICogRVhFQ1VUSU9OIEVOVklST05NRU5UOgot ICoJSW50ZXJydXB0LCBpbnRlcnJ1cHQgbG9jayBoZWxkCi0gKi8KLXN0YXRpYyBsb25nIGlibXZz Y3Npc19pbml0X21zZyhzdHJ1Y3Qgc2NzaV9pbmZvICp2c2NzaSwgc3RydWN0IHZpb3NycF9jcnEg KmNycSkKLXsKLQlsb25nIHJjID0gQURBUFRfU1VDQ0VTUzsKLQotCXByX2RlYnVnKCJpbml0X21z Zzogc3RhdGUgMHglaHhcbiIsIHZzY3NpLT5zdGF0ZSk7Ci0KLQlyYyA9IGhfdmlvY3RsKHZzY3Np LT5kZHMudW5pdF9pZCwgSF9HRVRfUEFSVE5FUl9JTkZPLAotCQkgICAgICAodTY0KXZzY3NpLT5t YXBfaW9iYSB8ICgodTY0KVBBR0VfU0laRSA8PCAzMiksIDAsIDAsIDAsCi0JCSAgICAgIDApOwot CWlmIChyYyA9PSBIX1NVQ0NFU1MpIHsKLQkJdnNjc2ktPmNsaWVudF9kYXRhLnBhcnRpdGlvbl9u dW1iZXIgPQotCQkJYmU2NF90b19jcHUoKih1NjQgKil2c2NzaS0+bWFwX2J1Zik7Ci0JCXByX2Rl YnVnKCJpbml0X21zZywgcGFydCBudW0gJWRcbiIsCi0JCQkgdnNjc2ktPmNsaWVudF9kYXRhLnBh cnRpdGlvbl9udW1iZXIpOwotCX0gZWxzZSB7Ci0JCXByX2RlYnVnKCJpbml0X21zZyBoX3Zpb2N0 bCByYyAlbGRcbiIsIHJjKTsKLQkJcmMgPSBBREFQVF9TVUNDRVNTOwotCX0KLQotCWlmIChjcnEt PmZvcm1hdCA9PSBJTklUX01TRykgewotCQlyYyA9IGlibXZzY3Npc19oYW5kbGVfaW5pdF9tc2co dnNjc2kpOwotCX0gZWxzZSBpZiAoY3JxLT5mb3JtYXQgPT0gSU5JVF9DT01QTEVURV9NU0cpIHsK LQkJcmMgPSBpYm12c2NzaXNfaGFuZGxlX2luaXRfY29tcGxfbXNnKHZzY3NpKTsKLQl9IGVsc2Ug ewotCQlyYyA9IEVSUk9SOwotCQlkZXZfZXJyKCZ2c2NzaS0+ZGV2LCAiaW5pdF9tc2c6IGludmFs aWQgZm9ybWF0ICVkXG4iLAotCQkJKHVpbnQpY3JxLT5mb3JtYXQpOwotCQlpYm12c2NzaXNfcG9z dF9kaXNjb25uZWN0KHZzY3NpLCBFUlJfRElTQ09OTkVDVF9SRUNPTk5FQ1QsIDApOwotCX0KLQot CXJldHVybiByYzsKLX0KLQotLyoqCiAgKiBpYm12c2NzaXNfcGFyc2VfY29tbWFuZCgpIC0gUGFy c2UgYW4gZWxlbWVudCB0YWtlbiBmcm9tIHRoZSBjbWQgcnNwIHF1ZXVlLgogICogQHZzY3NpOglQ b2ludGVyIHRvIG91ciBhZGFwdGVyIHN0cnVjdHVyZQogICogQGNycToJUG9pbnRlciB0byBDUlEg ZWxlbWVudCBjb250YWluaW5nIHRoZSBTUlAgcmVxdWVzdApAQCAtMjM4NSw3ICsyMzg3LDcgQEAg c3RhdGljIGxvbmcgaWJtdnNjc2lzX3BhcnNlX2NvbW1hbmQoc3RydWN0IHNjc2lfaW5mbyAqdnNj c2ksCiAJCWJyZWFrOwogCiAJY2FzZSBWQUxJRF9UUkFOU19FVkVOVDoKLQkJcmMgPSAgaWJtdnNj c2lzX3RyYW5zX2V2ZW50KHZzY3NpLCBjcnEpOworCQlyYyA9IGlibXZzY3Npc190cmFuc19ldmVu dCh2c2NzaSwgY3JxKTsKIAkJYnJlYWs7CiAKIAljYXNlIFZBTElEX0lOSVRfTVNHOgpAQCAtMzI3 MCw3ICszMjcyLDcgQEAgc3RhdGljIHZvaWQgaWJtdnNjc2lzX2hhbmRsZV9jcnEodW5zaWduZWQg bG9uZyBkYXRhKQogCS8qCiAJICogaWYgd2UgYXJlIGluIGEgcGF0aCB3aGVyZSB3ZSBhcmUgd2Fp dGluZyBmb3IgYWxsIHBlbmRpbmcgY29tbWFuZHMKIAkgKiB0byBjb21wbGV0ZSBiZWNhdXNlIHdl IHJlY2VpdmVkIGEgdHJhbnNwb3J0IGV2ZW50IGFuZCBhbnl0aGluZyBpbgotCSAqIHRoZSBjb21t YW5kIHF1ZXVlIGlzIGZvciBhIG5ldyBjb25uZWN0aW9uLCAgZG8gbm90aGluZworCSAqIHRoZSBj b21tYW5kIHF1ZXVlIGlzIGZvciBhIG5ldyBjb25uZWN0aW9uLCBkbyBub3RoaW5nCiAJICovCiAJ aWYgKFRBUkdFVF9TVE9QKHZzY3NpKSkgewogCQl2aW9fZW5hYmxlX2ludGVycnVwdHModnNjc2kt PmRtYV9kZXYpOwpAQCAtMzMxNCw3ICszMzE2LDcgQEAgc3RhdGljIHZvaWQgaWJtdnNjc2lzX2hh bmRsZV9jcnEodW5zaWduZWQgbG9uZyBkYXRhKQogCQkJCSAqIGV2ZXJ5dGhpbmcgYnV0IHRyYW5z cG9ydCBldmVudHMgb24gdGhlIHF1ZXVlCiAJCQkJICoKIAkJCQkgKiBuZWVkIHRvIGRlY3JlbWVu dCB0aGUgcXVldWUgaW5kZXggc28gd2UgY2FuCi0JCQkJICogbG9vayBhdCB0aGUgZWxtZW50IGFn YWluCisJCQkJICogbG9vayBhdCB0aGUgZWxlbWVudCBhZ2FpbgogCQkJCSAqLwogCQkJCWlmICh2 c2NzaS0+Y21kX3EuaW5kZXgpCiAJCQkJCXZzY3NpLT5jbWRfcS5pbmRleCAtPSAxOwpAQCAtMzk4 OCwxMCArMzk5MCwxMCBAQCBzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqaWJtdnNjc2lzX2Rldl9h dHRyc1tdID0gewogQVRUUklCVVRFX0dST1VQUyhpYm12c2NzaXNfZGV2KTsKIAogc3RhdGljIHN0 cnVjdCBjbGFzcyBpYm12c2NzaXNfY2xhc3MgPSB7Ci0JLm5hbWUgICAgICAgICAgID0gImlibXZz Y3NpcyIsCi0JLmRldl9yZWxlYXNlICAgID0gaWJtdnNjc2lzX2Rldl9yZWxlYXNlLAotCS5jbGFz c19hdHRycyAgICA9IGlibXZzY3Npc19jbGFzc19hdHRycywKLQkuZGV2X2dyb3VwcyAgICAgPSBp Ym12c2NzaXNfZGV2X2dyb3VwcywKKwkubmFtZQkJPSAiaWJtdnNjc2lzIiwKKwkuZGV2X3JlbGVh c2UJPSBpYm12c2NzaXNfZGV2X3JlbGVhc2UsCisJLmNsYXNzX2F0dHJzCT0gaWJtdnNjc2lzX2Ns YXNzX2F0dHJzLAorCS5kZXZfZ3JvdXBzCT0gaWJtdnNjc2lzX2Rldl9ncm91cHMsCiB9OwogCiBz dGF0aWMgc3RydWN0IHZpb19kZXZpY2VfaWQgaWJtdnNjc2lzX2RldmljZV90YWJsZVtdID0gewot LSAKMi4xLjAKCgpGcm9tIDk0NzAwODc3YzI1ZjY0Y2MzNjYwYjBmNzJjMGE4ZjIxNjVmNWM2OTYg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE1pY2hhZWwgQ3lyIDxtaWtlY3lyQHVzLmli bS5jb20+CkRhdGU6IEZyaSwgMTcgTWFyIDIwMTcgMDA6NDg6MjEgKzAwMDAKU3ViamVjdDogW1BB VENIIDA1MC8xMTJdIHNjc2k6IGlibXZzY3NpczogU3luY2hyb25pemUgY21kcyBhdCB0cGdfZW5h YmxlX3N0b3JlCiB0aW1lCgpbIFVwc3RyZWFtIGNvbW1pdCBjOWIzMzc5ZjYwYTgzMjg4YTVlMmY4 ZWE3NTQ3NjQ2MDk3ODY4OWIwIF0KClRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgd2F5IHRoZSBJQk0g dlNDU0kgc2VydmVyIGRyaXZlciBtYW5hZ2VzIGl0cwpDb21tYW5kL1Jlc3BvbnNlIFF1ZXVlIChD UlEpLiAgV2UgdXNlZCB0byByZWdpc3RlciB0aGUgQ1JRIHdpdGggcGh5cCBhdApwcm9iZSB0aW1l LiAgTm93IHdlIHdhaXQgdW50aWwgdHBnX2VuYWJsZV9zdG9yZS4gIFNpbWlsYXJseSwgd2hlbgp0 cGdfZW5hYmxlX3N0b3JlIGlzIGNhbGxlZCB0byAiZGlzYWJsZSIgKGkuZS4gdGhlIHN0b3JlZCB2 YWx1ZSBpcyAwKSwKd2UgdW5yZWdpc3RlciB0aGUgcXVldWUgd2l0aCBwaHlwLgoKT25lIGNvbnNx dWVuY2UgdG8gdGhpcyBpcyB0aGF0IHdlIGhhdmUgbm8gbmVlZCBmb3IgdGhlIFBBUlRfVVBfV0FJ VF9FTkFCCnN0YXRlLCBzaW5jZSB3ZSBjYW4ndCBnZXQgYW4gSW5pdCBNZXNzYWdlIGZyb20gdGhl IGNsaWVudCBpbiBvdXIgQ1JRIGlmCndlJ3JlIHdhaXRpbmcgdG8gYmUgZW5hYmxlZCwgc2luY2Ug d2UgaGF2ZW4ndCByZWdpc3RlcmVkIHRoZSBxdWV1ZSB5ZXQuCgpTaWduZWQtb2ZmLWJ5OiBNaWNo YWVsIEN5ciA8bWlrZWN5ckB1cy5pYm0uY29tPgpTaWduZWQtb2ZmLWJ5OiBCcnlhbnQgRy4gTHkg PGJyeWFudGx5QGxpbnV4LnZuZXQuaWJtLmNvbT4KVGVzdGVkLWJ5OiBTdGV2ZW4gUm95ZXIgPHNl cm95ZXJAbGludXgudm5ldC5pYm0uY29tPgpTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSy4gUGV0ZXJz ZW4gPG1hcnRpbi5wZXRlcnNlbkBvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZp biA8YWxleGFuZGVyLmxldmluQHZlcml6b24uY29tPgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2Fo LUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0KIGRyaXZlcnMvc2NzaS9p Ym12c2NzaV90Z3QvaWJtdnNjc2lfdGd0LmMgfCAyMjQgKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogZHJpdmVycy9zY3NpL2libXZzY3NpX3RndC9pYm12c2NzaV90Z3QuaCB8ICAgMiAt CiAyIGZpbGVzIGNoYW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDE4OCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvaWJtdnNjc2lfdGd0L2libXZzY3NpX3RndC5jIGIvZHJp dmVycy9zY3NpL2libXZzY3NpX3RndC9pYm12c2NzaV90Z3QuYwppbmRleCA0ZmVhZTQzLi41MDRl NTkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvaWJtdnNjc2lfdGd0L2libXZzY3NpX3RndC5j CisrKyBiL2RyaXZlcnMvc2NzaS9pYm12c2NzaV90Z3QvaWJtdnNjc2lfdGd0LmMKQEAgLTYyLDgg KzYyLDYgQEAgc3RhdGljIGxvbmcgaWJtdnNjc2lzX3BhcnNlX2NvbW1hbmQoc3RydWN0IHNjc2lf aW5mbyAqdnNjc2ksCiAKIHN0YXRpYyB2b2lkIGlibXZzY3Npc19hZGFwdGVyX2lkbGUoc3RydWN0 IHNjc2lfaW5mbyAqdnNjc2kpOwogCi1zdGF0aWMgdm9pZCBpYm12c2NzaXNfcmVzZXRfcXVldWUo c3RydWN0IHNjc2lfaW5mbyAqdnNjc2ksIHVpbnQgbmV3X3N0YXRlKTsKLQogc3RhdGljIHZvaWQg aWJtdnNjc2lzX2RldGVybWluZV9yZXNpZChzdHJ1Y3Qgc2VfY21kICpzZV9jbWQsCiAJCQkJICAg ICAgc3RydWN0IHNycF9yc3AgKnJzcCkKIHsKQEAgLTQxOCw3ICs0MTYsNiBAQCBzdGF0aWMgdm9p ZCBpYm12c2NzaXNfZGlzY29ubmVjdChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCQkJCSAg ICAgICBwcm9jX3dvcmspOwogCXUxNiBuZXdfc3RhdGU7CiAJYm9vbCB3YWl0X2lkbGUgPSBmYWxz ZTsKLQlsb25nIHJjID0gQURBUFRfU1VDQ0VTUzsKIAogCXNwaW5fbG9ja19iaCgmdnNjc2ktPmlu dHJfbG9jayk7CiAJbmV3X3N0YXRlID0gdnNjc2ktPm5ld19zdGF0ZTsKQEAgLTQ3MSwzMCArNDY4 LDEyIEBAIHN0YXRpYyB2b2lkIGlibXZzY3Npc19kaXNjb25uZWN0KHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKIAkJCXZzY3NpLT5zdGF0ZSA9IG5ld19zdGF0ZTsKIAkJYnJlYWs7CiAKLQkvKgot CSAqIElmIHRoaXMgaXMgYSB0cmFuc2l0aW9uIGludG8gYW4gZXJyb3Igc3RhdGUuCi0JICogYSBj bGllbnQgaXMgYXR0ZW1wdGluZyB0byBlc3RhYmxpc2ggYSBjb25uZWN0aW9uCi0JICogYW5kIGhh cyB2aW9sYXRlZCB0aGUgUlBBIHByb3RvY29sLgotCSAqIFRoZXJlIGNhbiBiZSBub3RoaW5nIHBl bmRpbmcgb24gdGhlIGFkYXB0ZXIgYWx0aG91Z2gKLQkgKiB0aGVyZSBjYW4gYmUgcmVxdWVzdHMg aW4gdGhlIGNvbW1hbmQgcXVldWUuCi0JICovCiAJY2FzZSBXQUlUX0VOQUJMRUQ6Ci0JY2FzZSBQ QVJUX1VQX1dBSVRfRU5BQjoKIAkJc3dpdGNoIChuZXdfc3RhdGUpIHsKKwkJLyogc2hvdWxkIG5l dmVyIGhhcHBlbiAqLwogCQljYXNlIEVSUl9ESVNDT05ORUNUOgotCQkJdnNjc2ktPmZsYWdzIHw9 IFJFU1BPTlNFX1FfRE9XTjsKLQkJCXZzY3NpLT5zdGF0ZSA9IG5ld19zdGF0ZTsKLQkJCXZzY3Np LT5mbGFncyAmPSB+KFNDSEVEVUxFX0RJU0NPTk5FQ1QgfAotCQkJCQkgIERJU0NPTk5FQ1RfU0NI RURVTEVEKTsKLQkJCWlibXZzY3Npc19mcmVlX2NvbW1hbmRfcSh2c2NzaSk7Ci0JCQlicmVhazsK IAkJY2FzZSBFUlJfRElTQ09OTkVDVF9SRUNPTk5FQ1Q6Ci0JCQlpYm12c2NzaXNfcmVzZXRfcXVl dWUodnNjc2ksIFdBSVRfRU5BQkxFRCk7Ci0JCQlicmVhazsKLQotCQkvKiBzaG91bGQgbmV2ZXIg aGFwcGVuICovCiAJCWNhc2UgV0FJVF9JRExFOgotCQkJcmMgPSBFUlJPUjsKIAkJCWRldl9lcnIo JnZzY3NpLT5kZXYsICJkaXNjb25uZWN0OiBpbnZhbGlkIHN0YXRlICVkIGZvciBXQUlUX0lETEVc biIsCiAJCQkJdnNjc2ktPnN0YXRlKTsKIAkJCWJyZWFrOwpAQCAtNjMxLDcgKzYxMCw2IEBAIHN0 YXRpYyB2b2lkIGlibXZzY3Npc19wb3N0X2Rpc2Nvbm5lY3Qoc3RydWN0IHNjc2lfaW5mbyAqdnNj c2ksIHVpbnQgbmV3X3N0YXRlLAogCQkJYnJlYWs7CiAKIAkJY2FzZSBXQUlUX0VOQUJMRUQ6Ci0J CWNhc2UgUEFSVF9VUF9XQUlUX0VOQUI6CiAJCWNhc2UgV0FJVF9JRExFOgogCQljYXNlIFdBSVRf Q09OTkVDVElPTjoKIAkJY2FzZSBDT05ORUNURUQ6CkBAIC02NzYsNyArNjU0LDYgQEAgc3RhdGlj IGxvbmcgaWJtdnNjc2lzX2hhbmRsZV9pbml0X2NvbXBsX21zZyhzdHJ1Y3Qgc2NzaV9pbmZvICp2 c2NzaSkKIAljYXNlIFNSUF9QUk9DRVNTSU5HOgogCWNhc2UgQ09OTkVDVEVEOgogCWNhc2UgV0FJ VF9FTkFCTEVEOgotCWNhc2UgUEFSVF9VUF9XQUlUX0VOQUI6CiAJZGVmYXVsdDoKIAkJcmMgPSBF UlJPUjsKIAkJZGV2X2VycigmdnNjc2ktPmRldiwgImluaXRfbXNnOiBpbnZhbGlkIHN0YXRlICVk IHRvIGdldCBpbml0IGNvbXBsIG1zZ1xuIiwKQEAgLTY5OSwxMCArNjc2LDYgQEAgc3RhdGljIGxv bmcgaWJtdnNjc2lzX2hhbmRsZV9pbml0X21zZyhzdHJ1Y3Qgc2NzaV9pbmZvICp2c2NzaSkKIAls b25nIHJjID0gQURBUFRfU1VDQ0VTUzsKIAogCXN3aXRjaCAodnNjc2ktPnN0YXRlKSB7Ci0JY2Fz ZSBXQUlUX0VOQUJMRUQ6Ci0JCXZzY3NpLT5zdGF0ZSA9IFBBUlRfVVBfV0FJVF9FTkFCOwotCQli cmVhazsKLQogCWNhc2UgV0FJVF9DT05ORUNUSU9OOgogCQlyYyA9IGlibXZzY3Npc19zZW5kX2lu aXRfbWVzc2FnZSh2c2NzaSwgSU5JVF9DT01QTEVURV9NU0cpOwogCQlzd2l0Y2ggKHJjKSB7CkBA IC03MzgsNyArNzExLDcgQEAgc3RhdGljIGxvbmcgaWJtdnNjc2lzX2hhbmRsZV9pbml0X21zZyhz dHJ1Y3Qgc2NzaV9pbmZvICp2c2NzaSkKIAljYXNlIFVOQ09ORklHVVJJTkc6CiAJCWJyZWFrOwog Ci0JY2FzZSBQQVJUX1VQX1dBSVRfRU5BQjoKKwljYXNlIFdBSVRfRU5BQkxFRDoKIAljYXNlIENP Tk5FQ1RFRDoKIAljYXNlIFNSUF9QUk9DRVNTSU5HOgogCWNhc2UgV0FJVF9JRExFOgpAQCAtODAx LDExICs3NzQsMTAgQEAgc3RhdGljIGxvbmcgaWJtdnNjc2lzX2luaXRfbXNnKHN0cnVjdCBzY3Np X2luZm8gKnZzY3NpLCBzdHJ1Y3Qgdmlvc3JwX2NycSAqY3JxKQogLyoqCiAgKiBpYm12c2NzaXNf ZXN0YWJsaXNoX25ld19xKCkgLSBFc3RhYmxpc2ggbmV3IENSUSBxdWV1ZQogICogQHZzY3NpOglQ b2ludGVyIHRvIG91ciBhZGFwdGVyIHN0cnVjdHVyZQotICogQG5ld19zdGF0ZToJTmV3IHN0YXRl IGJlaW5nIGVzdGFibGlzaGVkIGFmdGVyIHJlc2V0dGluZyB0aGUgcXVldWUKICAqCiAgKiBNdXN0 IGJlIGNhbGxlZCB3aXRoIGludGVycnVwdCBsb2NrIGhlbGQuCiAgKi8KLXN0YXRpYyBsb25nIGli bXZzY3Npc19lc3RhYmxpc2hfbmV3X3Eoc3RydWN0IHNjc2lfaW5mbyAqdnNjc2ksIHVpbnQgbmV3 X3N0YXRlKQorc3RhdGljIGxvbmcgaWJtdnNjc2lzX2VzdGFibGlzaF9uZXdfcShzdHJ1Y3Qgc2Nz aV9pbmZvICp2c2NzaSkKIHsKIAlsb25nIHJjID0gQURBUFRfU1VDQ0VTUzsKIAl1aW50IGZvcm1h dDsKQEAgLTgxNywxOSArNzg5LDE5IEBAIHN0YXRpYyBsb25nIGlibXZzY3Npc19lc3RhYmxpc2hf bmV3X3Eoc3RydWN0IHNjc2lfaW5mbyAqdnNjc2ksIHVpbnQgbmV3X3N0YXRlKQogCiAJcmMgPSB2 aW9fZW5hYmxlX2ludGVycnVwdHModnNjc2ktPmRtYV9kZXYpOwogCWlmIChyYykgewotCQlwcl93 YXJuKCJyZXNldF9xdWV1ZTogZmFpbGVkIHRvIGVuYWJsZSBpbnRlcnJ1cHRzLCByYyAlbGRcbiIs CisJCXByX3dhcm4oImVzdGFibGlzaF9uZXdfcTogZmFpbGVkIHRvIGVuYWJsZSBpbnRlcnJ1cHRz LCByYyAlbGRcbiIsCiAJCQlyYyk7CiAJCXJldHVybiByYzsKIAl9CiAKIAlyYyA9IGlibXZzY3Np c19jaGVja19pbml0X21zZyh2c2NzaSwgJmZvcm1hdCk7CiAJaWYgKHJjKSB7Ci0JCWRldl9lcnIo JnZzY3NpLT5kZXYsICJyZXNldF9xdWV1ZTogY2hlY2tfaW5pdF9tc2cgZmFpbGVkLCByYyAlbGRc biIsCisJCWRldl9lcnIoJnZzY3NpLT5kZXYsICJlc3RhYmxpc2hfbmV3X3E6IGNoZWNrX2luaXRf bXNnIGZhaWxlZCwgcmMgJWxkXG4iLAogCQkJcmMpOwogCQlyZXR1cm4gcmM7CiAJfQogCi0JaWYg KGZvcm1hdCA9PSBVTlVTRURfRk9STUFUICYmIG5ld19zdGF0ZSA9PSBXQUlUX0NPTk5FQ1RJT04p IHsKKwlpZiAoZm9ybWF0ID09IFVOVVNFRF9GT1JNQVQpIHsKIAkJcmMgPSBpYm12c2NzaXNfc2Vu ZF9pbml0X21lc3NhZ2UodnNjc2ksIElOSVRfTVNHKTsKIAkJc3dpdGNoIChyYykgewogCQljYXNl IEhfU1VDQ0VTUzoKQEAgLTg0Nyw2ICs4MTksOCBAQCBzdGF0aWMgbG9uZyBpYm12c2NzaXNfZXN0 YWJsaXNoX25ld19xKHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpLCB1aW50IG5ld19zdGF0ZSkKIAkJ CXJjID0gSF9IQVJEV0FSRTsKIAkJCWJyZWFrOwogCQl9CisJfSBlbHNlIGlmIChmb3JtYXQgPT0g SU5JVF9NU0cpIHsKKwkJcmMgPSBpYm12c2NzaXNfaGFuZGxlX2luaXRfbXNnKHZzY3NpKTsKIAl9 CiAKIAlyZXR1cm4gcmM7CkBAIC04NTUsNyArODI5LDYgQEAgc3RhdGljIGxvbmcgaWJtdnNjc2lz X2VzdGFibGlzaF9uZXdfcShzdHJ1Y3Qgc2NzaV9pbmZvICp2c2NzaSwgdWludCBuZXdfc3RhdGUp CiAvKioKICAqIGlibXZzY3Npc19yZXNldF9xdWV1ZSgpIC0gUmVzZXQgQ1JRIFF1ZXVlCiAgKiBA dnNjc2k6CVBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJlCi0gKiBAbmV3X3N0YXRlOglO ZXcgc3RhdGUgdG8gZXN0YWJsaXNoIGFmdGVyIHJlc2V0dGluZyB0aGUgcXVldWUKICAqCiAgKiBU aGlzIGZ1bmN0aW9uIGNhbGxzIGhfZnJlZV9xIGFuZCB0aGVuIGNhbGxzIGhfcmVnX3EgYW5kIGRv ZXMgYWxsCiAgKiBvZiB0aGUgYm9va2tlZXBpbmcgdG8gZ2V0IHVzIGJhY2sgdG8gd2hlcmUgd2Ug Y2FuIGNvbW11bmljYXRlLgpAQCAtODcyLDcgKzg0NSw3IEBAIHN0YXRpYyBsb25nIGlibXZzY3Np c19lc3RhYmxpc2hfbmV3X3Eoc3RydWN0IHNjc2lfaW5mbyAqdnNjc2ksIHVpbnQgbmV3X3N0YXRl KQogICogRVhFQ1VUSU9OIEVOVklST05NRU5UOgogICoJUHJvY2VzcyBlbnZpcm9ubWVudCwgY2Fs bGVkIHdpdGggaW50ZXJydXB0IGxvY2sgaGVsZAogICovCi1zdGF0aWMgdm9pZCBpYm12c2NzaXNf cmVzZXRfcXVldWUoc3RydWN0IHNjc2lfaW5mbyAqdnNjc2ksIHVpbnQgbmV3X3N0YXRlKQorc3Rh dGljIHZvaWQgaWJtdnNjc2lzX3Jlc2V0X3F1ZXVlKHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpKQog ewogCWludCBieXRlczsKIAlsb25nIHJjID0gQURBUFRfU1VDQ0VTUzsKQEAgLTg4NSwxOSArODU4 LDE4IEBAIHN0YXRpYyB2b2lkIGlibXZzY3Npc19yZXNldF9xdWV1ZShzdHJ1Y3Qgc2NzaV9pbmZv ICp2c2NzaSwgdWludCBuZXdfc3RhdGUpCiAJCXZzY3NpLT5yc3BfcV90aW1lci50aW1lcl9wb3Bz ID0gMDsKIAkJdnNjc2ktPmRlYml0ID0gMDsKIAkJdnNjc2ktPmNyZWRpdCA9IDA7Ci0JCXZzY3Np LT5zdGF0ZSA9IG5ld19zdGF0ZTsKKwkJdnNjc2ktPnN0YXRlID0gV0FJVF9DT05ORUNUSU9OOwog CQl2aW9fZW5hYmxlX2ludGVycnVwdHModnNjc2ktPmRtYV9kZXYpOwogCX0gZWxzZSB7CiAJCXJj ID0gaWJtdnNjc2lzX2ZyZWVfY29tbWFuZF9xKHZzY3NpKTsKIAkJaWYgKHJjID09IEFEQVBUX1NV Q0NFU1MpIHsKLQkJCXZzY3NpLT5zdGF0ZSA9IG5ld19zdGF0ZTsKKwkJCXZzY3NpLT5zdGF0ZSA9 IFdBSVRfQ09OTkVDVElPTjsKIAogCQkJYnl0ZXMgPSB2c2NzaS0+Y21kX3Euc2l6ZSAqIFBBR0Vf U0laRTsKIAkJCXJjID0gaF9yZWdfY3JxKHZzY3NpLT5kZHMudW5pdF9pZCwKIAkJCQkgICAgICAg dnNjc2ktPmNtZF9xLmNycV90b2tlbiwgYnl0ZXMpOwogCQkJaWYgKHJjID09IEhfQ0xPU0VEIHx8 IHJjID09IEhfU1VDQ0VTUykgewotCQkJCXJjID0gaWJtdnNjc2lzX2VzdGFibGlzaF9uZXdfcSh2 c2NzaSwKLQkJCQkJCQkgICAgICAgbmV3X3N0YXRlKTsKKwkJCQlyYyA9IGlibXZzY3Npc19lc3Rh Ymxpc2hfbmV3X3EodnNjc2kpOwogCQkJfQogCiAJCQlpZiAocmMgIT0gQURBUFRfU1VDQ0VTUykg ewpAQCAtMTAxNiwxMCArOTg4LDYgQEAgc3RhdGljIGxvbmcgaWJtdnNjc2lzX3RyYW5zX2V2ZW50 KHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpLAogCQkJCQkJICAgVFJBTlNfRVZFTlQpKTsKIAkJCWJy ZWFrOwogCi0JCWNhc2UgUEFSVF9VUF9XQUlUX0VOQUI6Ci0JCQl2c2NzaS0+c3RhdGUgPSBXQUlU X0VOQUJMRUQ7Ci0JCQlicmVhazsKLQogCQljYXNlIFNSUF9QUk9DRVNTSU5HOgogCQkJaWYgKCh2 c2NzaS0+ZGViaXQgPiAwKSB8fAogCQkJICAgICFsaXN0X2VtcHR5KCZ2c2NzaS0+c2NoZWR1bGVf cSkgfHwKQEAgLTEyMjAsMTUgKzExODgsMTggQEAgc3RhdGljIHZvaWQgaWJtdnNjc2lzX2FkYXB0 ZXJfaWRsZShzdHJ1Y3Qgc2NzaV9pbmZvICp2c2NzaSkKIAogCXN3aXRjaCAodnNjc2ktPnN0YXRl KSB7CiAJY2FzZSBFUlJfRElTQ09OTkVDVF9SRUNPTk5FQ1Q6Ci0JCWlibXZzY3Npc19yZXNldF9x dWV1ZSh2c2NzaSwgV0FJVF9DT05ORUNUSU9OKTsKKwkJaWJtdnNjc2lzX3Jlc2V0X3F1ZXVlKHZz Y3NpKTsKIAkJcHJfZGVidWcoImFkYXB0ZXJfaWRsZSwgZGlzY19yZWM6IGZsYWdzIDB4JXhcbiIs IHZzY3NpLT5mbGFncyk7CiAJCWJyZWFrOwogCiAJY2FzZSBFUlJfRElTQ09OTkVDVDoKIAkJaWJt dnNjc2lzX2ZyZWVfY29tbWFuZF9xKHZzY3NpKTsKLQkJdnNjc2ktPmZsYWdzICY9IH5ESVNDT05O RUNUX1NDSEVEVUxFRDsKKwkJdnNjc2ktPmZsYWdzICY9IH4oU0NIRURVTEVfRElTQ09OTkVDVCB8 IERJU0NPTk5FQ1RfU0NIRURVTEVEKTsKIAkJdnNjc2ktPmZsYWdzIHw9IFJFU1BPTlNFX1FfRE9X TjsKLQkJdnNjc2ktPnN0YXRlID0gRVJSX0RJU0NPTk5FQ1RFRDsKKwkJaWYgKHZzY3NpLT50cG9y dC5lbmFibGVkKQorCQkJdnNjc2ktPnN0YXRlID0gRVJSX0RJU0NPTk5FQ1RFRDsKKwkJZWxzZQor CQkJdnNjc2ktPnN0YXRlID0gV0FJVF9FTkFCTEVEOwogCQlwcl9kZWJ1ZygiYWRhcHRlcl9pZGxl LCBkaXNjOiBmbGFncyAweCV4LCBzdGF0ZSAweCVoeFxuIiwKIAkJCSB2c2NzaS0+ZmxhZ3MsIHZz Y3NpLT5zdGF0ZSk7CiAJCWJyZWFrOwpAQCAtMTc3Myw4ICsxNzQ0LDggQEAgc3RhdGljIHZvaWQg aWJtdnNjc2lzX3NlbmRfbWVzc2FnZXMoc3RydWN0IHNjc2lfaW5mbyAqdnNjc2kpCiAJCQkJCWJl NjRfdG9fY3B1KG1zZ19oaSksCiAJCQkJCWJlNjRfdG9fY3B1KGNtZC0+cnNwLnRhZykpOwogCi0J CQlwcl9kZWJ1Zygic2VuZF9tZXNzYWdlczogdGFnIDB4JWxseCwgcmMgJWxkXG4iLAotCQkJCSBi ZTY0X3RvX2NwdShjbWQtPnJzcC50YWcpLCByYyk7CisJCQlwcl9kZWJ1Zygic2VuZF9tZXNzYWdl czogY21kICVwLCB0YWcgMHglbGx4LCByYyAlbGRcbiIsCisJCQkJIGNtZCwgYmU2NF90b19jcHUo Y21kLT5yc3AudGFnKSwgcmMpOwogCiAJCQkvKiBpZiBhbGwgb2sgZnJlZSB1cCB0aGUgY29tbWFu ZCBlbGVtZW50IHJlc291cmNlcyAqLwogCQkJaWYgKHJjID09IEhfU1VDQ0VTUykgewpAQCAtMjc4 OCwzNiArMjc1OSw2IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpYm12c2NzaXNfaW50ZXJydXB0KGlu dCBkdW1teSwgdm9pZCAqZGF0YSkKIH0KIAogLyoqCi0gKiBpYm12c2NzaXNfY2hlY2tfcSgpIC0g SGVscGVyIGZ1bmN0aW9uIHRvIENoZWNrIEluaXQgTWVzc2FnZSBWYWxpZAotICogQHZzY3NpOglQ b2ludGVyIHRvIG91ciBhZGFwdGVyIHN0cnVjdHVyZQotICoKLSAqIENoZWNrcyBpZiBhIGluaXRp YWxpemUgbWVzc2FnZSB3YXMgcXVldWVkIGJ5IHRoZSBpbml0aWF0aW9yCi0gKiB3aGlsZSB0aGUg dGltaW5nIHdpbmRvdyB3YXMgb3Blbi4gIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20KLSAq IHByb2JlIGFmdGVyIHRoZSBDUlEgaXMgY3JlYXRlZCBhbmQgaW50ZXJydXB0cyBhcmUgZW5hYmxl ZC4KLSAqIEl0IHdvdWxkIG9ubHkgYmUgdXNlZCBieSBhZGFwdGVycyB3aG8gd2FpdCBmb3Igc29t ZSBldmVudCBiZWZvcmUKLSAqIGNvbXBsZXRpbmcgdGhlIGluaXQgaGFuZHNoYWtlIHdpdGggdGhl IGNsaWVudC4gIEZvciBpYm12c2NzaSwgdGhpcwotICogZXZlbnQgaXMgd2FpdGluZyBmb3IgdGhl IHBvcnQgdG8gYmUgZW5hYmxlZC4KLSAqCi0gKiBFWEVDVVRJT04gRU5WSVJPTk1FTlQ6Ci0gKglQ cm9jZXNzIGxldmVsIG9ubHksIGludGVycnVwdCBsb2NrIGhlbGQKLSAqLwotc3RhdGljIGxvbmcg aWJtdnNjc2lzX2NoZWNrX3Eoc3RydWN0IHNjc2lfaW5mbyAqdnNjc2kpCi17Ci0JdWludCBmb3Jt YXQ7Ci0JbG9uZyByYzsKLQotCXJjID0gaWJtdnNjc2lzX2NoZWNrX2luaXRfbXNnKHZzY3NpLCAm Zm9ybWF0KTsKLQlpZiAocmMpCi0JCWlibXZzY3Npc19wb3N0X2Rpc2Nvbm5lY3QodnNjc2ksIEVS Ul9ESVNDT05ORUNUX1JFQ09OTkVDVCwgMCk7Ci0JZWxzZSBpZiAoZm9ybWF0ID09IFVOVVNFRF9G T1JNQVQpCi0JCXZzY3NpLT5zdGF0ZSA9IFdBSVRfRU5BQkxFRDsKLQllbHNlCi0JCXZzY3NpLT5z dGF0ZSA9IFBBUlRfVVBfV0FJVF9FTkFCOwotCi0JcmV0dXJuIHJjOwotfQotCi0vKioKICAqIGli bXZzY3Npc19lbmFibGVfY2hhbmdlX3N0YXRlKCkgLSBTZXQgbmV3IHN0YXRlIGJhc2VkIG9uIGVu YWJsZWQgc3RhdHVzCiAgKiBAdnNjc2k6CVBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIgc3RydWN0dXJl CiAgKgpAQCAtMjgyOCw3NyArMjc2OSwxOSBAQCBzdGF0aWMgbG9uZyBpYm12c2NzaXNfY2hlY2tf cShzdHJ1Y3Qgc2NzaV9pbmZvICp2c2NzaSkKICAqLwogc3RhdGljIGxvbmcgaWJtdnNjc2lzX2Vu YWJsZV9jaGFuZ2Vfc3RhdGUoc3RydWN0IHNjc2lfaW5mbyAqdnNjc2kpCiB7CisJaW50IGJ5dGVz OwogCWxvbmcgcmMgPSBBREFQVF9TVUNDRVNTOwogCi1oYW5kbGVfc3RhdGVfY2hhbmdlOgotCXN3 aXRjaCAodnNjc2ktPnN0YXRlKSB7Ci0JY2FzZSBXQUlUX0VOQUJMRUQ6Ci0JCXJjID0gaWJtdnNj c2lzX3NlbmRfaW5pdF9tZXNzYWdlKHZzY3NpLCBJTklUX01TRyk7Ci0JCXN3aXRjaCAocmMpIHsK LQkJY2FzZSBIX1NVQ0NFU1M6Ci0JCWNhc2UgSF9EUk9QUEVEOgotCQljYXNlIEhfQ0xPU0VEOgot CQkJdnNjc2ktPnN0YXRlID0gIFdBSVRfQ09OTkVDVElPTjsKLQkJCXJjID0gQURBUFRfU1VDQ0VT UzsKLQkJCWJyZWFrOwotCi0JCWNhc2UgSF9QQVJBTUVURVI6Ci0JCQlicmVhazsKLQotCQljYXNl IEhfSEFSRFdBUkU6Ci0JCQlicmVhazsKLQotCQlkZWZhdWx0OgotCQkJdnNjc2ktPnN0YXRlID0g VU5ERUZJTkVEOwotCQkJcmMgPSBIX0hBUkRXQVJFOwotCQkJYnJlYWs7Ci0JCX0KLQkJYnJlYWs7 Ci0JY2FzZSBQQVJUX1VQX1dBSVRfRU5BQjoKLQkJcmMgPSBpYm12c2NzaXNfc2VuZF9pbml0X21l c3NhZ2UodnNjc2ksIElOSVRfQ09NUExFVEVfTVNHKTsKLQkJc3dpdGNoIChyYykgewotCQljYXNl IEhfU1VDQ0VTUzoKLQkJCXZzY3NpLT5zdGF0ZSA9IENPTk5FQ1RFRDsKLQkJCXJjID0gQURBUFRf U1VDQ0VTUzsKLQkJCWJyZWFrOwotCi0JCWNhc2UgSF9EUk9QUEVEOgotCQljYXNlIEhfQ0xPU0VE OgotCQkJdnNjc2ktPnN0YXRlID0gV0FJVF9FTkFCTEVEOwotCQkJZ290byBoYW5kbGVfc3RhdGVf Y2hhbmdlOwotCi0JCWNhc2UgSF9QQVJBTUVURVI6Ci0JCQlicmVhazsKLQotCQljYXNlIEhfSEFS RFdBUkU6Ci0JCQlicmVhazsKLQotCQlkZWZhdWx0OgotCQkJcmMgPSBIX0hBUkRXQVJFOwotCQkJ YnJlYWs7Ci0JCX0KLQkJYnJlYWs7Ci0KLQljYXNlIFdBSVRfQ09OTkVDVElPTjoKLQljYXNlIFdB SVRfSURMRToKLQljYXNlIFNSUF9QUk9DRVNTSU5HOgotCWNhc2UgQ09OTkVDVEVEOgotCQlyYyA9 IEFEQVBUX1NVQ0NFU1M7Ci0JCWJyZWFrOwotCQkvKiBzaG91bGQgbm90IGJlIGFibGUgdG8gZ2V0 IGhlcmUgKi8KLQljYXNlIFVOQ09ORklHVVJJTkc6Ci0JCXJjID0gRVJST1I7Ci0JCXZzY3NpLT5z dGF0ZSA9IFVOREVGSU5FRDsKLQkJYnJlYWs7CisJYnl0ZXMgPSB2c2NzaS0+Y21kX3Euc2l6ZSAq IFBBR0VfU0laRTsKKwlyYyA9IGhfcmVnX2NycSh2c2NzaS0+ZGRzLnVuaXRfaWQsIHZzY3NpLT5j bWRfcS5jcnFfdG9rZW4sIGJ5dGVzKTsKKwlpZiAocmMgPT0gSF9DTE9TRUQgfHwgcmMgPT0gSF9T VUNDRVNTKSB7CisJCXZzY3NpLT5zdGF0ZSA9IFdBSVRfQ09OTkVDVElPTjsKKwkJcmMgPSBpYm12 c2NzaXNfZXN0YWJsaXNoX25ld19xKHZzY3NpKTsKKwl9CiAKLQkJLyogZHJpdmVyIHNob3VsZCBu ZXZlciBhbGxvdyB0aGlzIHRvIGhhcHBlbiAqLwotCWNhc2UgRVJSX0RJU0NPTk5FQ1Q6Ci0JY2Fz ZSBFUlJfRElTQ09OTkVDVF9SRUNPTk5FQ1Q6Ci0JZGVmYXVsdDoKLQkJZGV2X2VycigmdnNjc2kt PmRldiwgImluIGludmFsaWQgc3RhdGUgJWQgZHVyaW5nIGVuYWJsZV9jaGFuZ2Vfc3RhdGVcbiIs Ci0JCQl2c2NzaS0+c3RhdGUpOwotCQlyYyA9IEFEQVBUX1NVQ0NFU1M7Ci0JCWJyZWFrOworCWlm IChyYyAhPSBBREFQVF9TVUNDRVNTKSB7CisJCXZzY3NpLT5zdGF0ZSA9IEVSUl9ESVNDT05ORUNU RUQ7CisJCXZzY3NpLT5mbGFncyB8PSBSRVNQT05TRV9RX0RPV047CiAJfQogCiAJcmV0dXJuIHJj OwpAQCAtMjkxOCw3ICsyODAxLDYgQEAgc3RhdGljIGxvbmcgaWJtdnNjc2lzX2VuYWJsZV9jaGFu Z2Vfc3RhdGUoc3RydWN0IHNjc2lfaW5mbyAqdnNjc2kpCiAgKi8KIHN0YXRpYyBsb25nIGlibXZz Y3Npc19jcmVhdGVfY29tbWFuZF9xKHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpLCBpbnQgbnVtX2Nt ZHMpCiB7Ci0JbG9uZyByYyA9IDA7CiAJaW50IHBhZ2VzOwogCXN0cnVjdCB2aW9fZGV2ICp2ZGV2 ID0gdnNjc2ktPmRtYV9kZXY7CiAKQEAgLTI5NDIsMjIgKzI4MjQsNyBAQCBzdGF0aWMgbG9uZyBp Ym12c2NzaXNfY3JlYXRlX2NvbW1hbmRfcShzdHJ1Y3Qgc2NzaV9pbmZvICp2c2NzaSwgaW50IG51 bV9jbWRzKQogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKLQlyYyA9ICBoX3JlZ19jcnEodnNjc2kt PmRkcy51bml0X2lkLCB2c2NzaS0+Y21kX3EuY3JxX3Rva2VuLCBQQUdFX1NJWkUpOwotCWlmIChy YykgewotCQlpZiAocmMgPT0gSF9DTE9TRUQpIHsKLQkJCXZzY3NpLT5zdGF0ZSA9IFdBSVRfRU5B QkxFRDsKLQkJCXJjID0gMDsKLQkJfSBlbHNlIHsKLQkJCWRtYV91bm1hcF9zaW5nbGUoJnZkZXYt PmRldiwgdnNjc2ktPmNtZF9xLmNycV90b2tlbiwKLQkJCQkJIFBBR0VfU0laRSwgRE1BX0JJRElS RUNUSU9OQUwpOwotCQkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXZzY3NpLT5jbWRfcS5iYXNl X2FkZHIpOwotCQkJcmMgPSAtRU5PREVWOwotCQl9Ci0JfSBlbHNlIHsKLQkJdnNjc2ktPnN0YXRl ID0gV0FJVF9FTkFCTEVEOwotCX0KLQotCXJldHVybiByYzsKKwlyZXR1cm4gMDsKIH0KIAogLyoq CkBAIC0zNDkxLDMxICszMzU4LDEyIEBAIHN0YXRpYyBpbnQgaWJtdnNjc2lzX3Byb2JlKHN0cnVj dCB2aW9fZGV2ICp2ZGV2LAogCQlnb3RvIGRlc3Ryb3lfV1E7CiAJfQogCi0Jc3Bpbl9sb2NrX2Jo KCZ2c2NzaS0+aW50cl9sb2NrKTsKLQl2aW9fZW5hYmxlX2ludGVycnVwdHModmRldik7Ci0JaWYg KHJjKSB7Ci0JCWRldl9lcnIoJnZzY3NpLT5kZXYsICJlbmFibGluZyBpbnRlcnJ1cHRzIGZhaWxl ZCwgcmMgJWRcbiIsIHJjKTsKLQkJcmMgPSAtRU5PREVWOwotCQlzcGluX3VubG9ja19iaCgmdnNj c2ktPmludHJfbG9jayk7Ci0JCWdvdG8gZnJlZV9pcnE7Ci0JfQotCi0JaWYgKGlibXZzY3Npc19j aGVja19xKHZzY3NpKSkgewotCQlyYyA9IEVSUk9SOwotCQlkZXZfZXJyKCZ2c2NzaS0+ZGV2LCAi cHJvYmU6IGNoZWNrX3EgZmFpbGVkLCByYyAlZFxuIiwgcmMpOwotCQlzcGluX3VubG9ja19iaCgm dnNjc2ktPmludHJfbG9jayk7Ci0JCWdvdG8gZGlzYWJsZV9pbnRlcnJ1cHQ7Ci0JfQotCXNwaW5f dW5sb2NrX2JoKCZ2c2NzaS0+aW50cl9sb2NrKTsKKwl2c2NzaS0+c3RhdGUgPSBXQUlUX0VOQUJM RUQ7CiAKIAlkZXZfc2V0X2RydmRhdGEoJnZkZXYtPmRldiwgdnNjc2kpOwogCiAJcmV0dXJuIDA7 CiAKLWRpc2FibGVfaW50ZXJydXB0OgotCXZpb19kaXNhYmxlX2ludGVycnVwdHModmRldik7Ci1m cmVlX2lycToKLQlmcmVlX2lycSh2ZGV2LT5pcnEsIHZzY3NpKTsKIGRlc3Ryb3lfV1E6CiAJZGVz dHJveV93b3JrcXVldWUodnNjc2ktPndvcmtfcSk7CiB1bm1hcF9idWY6CkBAIC0zOTA5LDE4ICsz NzU3LDIyIEBAIHN0YXRpYyBzc2l6ZV90IGlibXZzY3Npc190cGdfZW5hYmxlX3N0b3JlKHN0cnVj dCBjb25maWdfaXRlbSAqaXRlbSwKIAl9CiAKIAlpZiAodG1wKSB7Ci0JCXRwb3J0LT5lbmFibGVk ID0gdHJ1ZTsKIAkJc3Bpbl9sb2NrX2JoKCZ2c2NzaS0+aW50cl9sb2NrKTsKKwkJdHBvcnQtPmVu YWJsZWQgPSB0cnVlOwogCQlscmMgPSBpYm12c2NzaXNfZW5hYmxlX2NoYW5nZV9zdGF0ZSh2c2Nz aSk7CiAJCWlmIChscmMpCiAJCQlwcl9lcnIoImVuYWJsZV9jaGFuZ2Vfc3RhdGUgZmFpbGVkLCBy YyAlbGQgc3RhdGUgJWRcbiIsCiAJCQkgICAgICAgbHJjLCB2c2NzaS0+c3RhdGUpOwogCQlzcGlu X3VubG9ja19iaCgmdnNjc2ktPmludHJfbG9jayk7CiAJfSBlbHNlIHsKKwkJc3Bpbl9sb2NrX2Jo KCZ2c2NzaS0+aW50cl9sb2NrKTsKIAkJdHBvcnQtPmVuYWJsZWQgPSBmYWxzZTsKKwkJLyogVGhp cyBzaW11bGF0ZXMgdGhlIHNlcnZlciBnb2luZyBkb3duICovCisJCWlibXZzY3Npc19wb3N0X2Rp c2Nvbm5lY3QodnNjc2ksIEVSUl9ESVNDT05ORUNULCAwKTsKKwkJc3Bpbl91bmxvY2tfYmgoJnZz Y3NpLT5pbnRyX2xvY2spOwogCX0KIAotCXByX2RlYnVnKCJ0cGdfZW5hYmxlX3N0b3JlLCBzdGF0 ZSAlZFxuIiwgdnNjc2ktPnN0YXRlKTsKKwlwcl9kZWJ1ZygidHBnX2VuYWJsZV9zdG9yZSwgdG1w ICVsZCwgc3RhdGUgJWRcbiIsIHRtcCwgdnNjc2ktPnN0YXRlKTsKIAogCXJldHVybiBjb3VudDsK IH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9pYm12c2NzaV90Z3QvaWJtdnNjc2lfdGd0Lmgg Yi9kcml2ZXJzL3Njc2kvaWJtdnNjc2lfdGd0L2libXZzY3NpX3RndC5oCmluZGV4IDk4MWEwYzku LjE3ZTBlZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9pYm12c2NzaV90Z3QvaWJtdnNjc2lf dGd0LmgKKysrIGIvZHJpdmVycy9zY3NpL2libXZzY3NpX3RndC9pYm12c2NzaV90Z3QuaApAQCAt MjA0LDggKzIwNCw2IEBAIHN0cnVjdCBzY3NpX2luZm8gewogCXN0cnVjdCBsaXN0X2hlYWQgd2Fp dGluZ19yc3A7CiAjZGVmaW5lIE5PX1FVRVVFICAgICAgICAgICAgICAgICAgICAweDAwCiAjZGVm aW5lIFdBSVRfRU5BQkxFRCAgICAgICAgICAgICAgICAwWDAxCi0JLyogZHJpdmVyIGhhcyByZWNl aXZlZCBhbiBpbml0aWFsaXplIGNvbW1hbmQgKi8KLSNkZWZpbmUgUEFSVF9VUF9XQUlUX0VOQUIg ICAgICAgICAgIDB4MDIKICNkZWZpbmUgV0FJVF9DT05ORUNUSU9OICAgICAgICAgICAgIDB4MDQK IAkvKiBoYXZlIGVzdGFibGlzaGVkIGEgY29ubmVjdGlvbiAqLwogI2RlZmluZSBDT05ORUNURUQg ICAgICAgICAgICAgICAgICAgMHgwOAotLSAKMi4xLjAKCgpGcm9tIDQ1NmJlOThiNGU3OWEyZWQw MzE2YmJjMGU4ODVjNTI2Y2JlOGFmYWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE1p Y2hhZWwgQ3lyIDxtaWtlY3lyQHVzLmlibS5jb20+CkRhdGU6IEZyaSwgMTcgTWFyIDIwMTcgMDA6 NDg6MjIgKzAwMDAKU3ViamVjdDogW1BBVENIIDA1MS8xMTJdIHNjc2k6IGlibXZzY3NpczogU3lu Y2hyb25pemUgY21kcyBhdCByZW1vdmUgdGltZQoKWyBVcHN0cmVhbSBjb21taXQgOGJmMTE1NTdk NDRkMDA1NjIzNjBkMzcwZGU4YWE3MGJhODlhYTBkNSBdCgpUaGlzIHBhdGNoIGFkZHMgY29kZSB0 byBkaXNjb25uZWN0IGZyb20gdGhlIGNsaWVudCwgd2hpY2ggd2lsbCBtYWtlIHN1cmUKYW55IG91 dHN0YW5kaW5nIGNvbW1hbmRzIGhhdmUgYmVlbiBjb21wbGV0ZWQsIGJlZm9yZSBjb250aW51aW5n IG9uIHdpdGgKdGhlIHJlbW92ZSBvcGVyYXRpb24uCgpTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEN5 ciA8bWlrZWN5ckB1cy5pYm0uY29tPgpTaWduZWQtb2ZmLWJ5OiBCcnlhbnQgRy4gTHkgPGJyeWFu dGx5QGxpbnV4LnZuZXQuaWJtLmNvbT4KVGVzdGVkLWJ5OiBTdGV2ZW4gUm95ZXIgPHNlcm95ZXJA bGludXgudm5ldC5pYm0uY29tPgpTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSy4gUGV0ZXJzZW4gPG1h cnRpbi5wZXRlcnNlbkBvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8YWxl eGFuZGVyLmxldmluQHZlcml6b24uY29tPgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRt YW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0KIGRyaXZlcnMvc2NzaS9pYm12c2Nz aV90Z3QvaWJtdnNjc2lfdGd0LmMgfCAzOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LQogZHJpdmVycy9zY3NpL2libXZzY3NpX3RndC9pYm12c2NzaV90Z3QuaCB8ICAzICsrKwogMiBm aWxlcyBjaGFuZ2VkLCAzNyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvc2NzaS9pYm12c2NzaV90Z3QvaWJtdnNjc2lfdGd0LmMgYi9kcml2ZXJzL3Nj c2kvaWJtdnNjc2lfdGd0L2libXZzY3NpX3RndC5jCmluZGV4IDUwNGU1OTMuLmM0ZmU5NWEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9pYm12c2NzaV90Z3QvaWJtdnNjc2lfdGd0LmMKKysrIGIv ZHJpdmVycy9zY3NpL2libXZzY3NpX3RndC9pYm12c2NzaV90Z3QuYwpAQCAtNDcwLDYgKzQ3MCwx OCBAQCBzdGF0aWMgdm9pZCBpYm12c2NzaXNfZGlzY29ubmVjdChzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspCiAKIAljYXNlIFdBSVRfRU5BQkxFRDoKIAkJc3dpdGNoIChuZXdfc3RhdGUpIHsKKwkJ Y2FzZSBVTkNPTkZJR1VSSU5HOgorCQkJdnNjc2ktPnN0YXRlID0gbmV3X3N0YXRlOworCQkJdnNj c2ktPmZsYWdzIHw9IFJFU1BPTlNFX1FfRE9XTjsKKwkJCXZzY3NpLT5mbGFncyAmPSB+KFNDSEVE VUxFX0RJU0NPTk5FQ1QgfAorCQkJCQkgIERJU0NPTk5FQ1RfU0NIRURVTEVEKTsKKwkJCWRtYV9y bWIoKTsKKwkJCWlmICh2c2NzaS0+ZmxhZ3MgJiBDRkdfU0xFRVBJTkcpIHsKKwkJCQl2c2NzaS0+ ZmxhZ3MgJj0gfkNGR19TTEVFUElORzsKKwkJCQljb21wbGV0ZSgmdnNjc2ktPnVuY29uZmlnKTsK KwkJCX0KKwkJCWJyZWFrOworCiAJCS8qIHNob3VsZCBuZXZlciBoYXBwZW4gKi8KIAkJY2FzZSBF UlJfRElTQ09OTkVDVDoKIAkJY2FzZSBFUlJfRElTQ09OTkVDVF9SRUNPTk5FQ1Q6CkBAIC00ODIs NiArNDk0LDEzIEBAIHN0YXRpYyB2b2lkIGlibXZzY3Npc19kaXNjb25uZWN0KHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykKIAogCWNhc2UgV0FJVF9JRExFOgogCQlzd2l0Y2ggKG5ld19zdGF0ZSkg eworCQljYXNlIFVOQ09ORklHVVJJTkc6CisJCQl2c2NzaS0+ZmxhZ3MgfD0gUkVTUE9OU0VfUV9E T1dOOworCQkJdnNjc2ktPnN0YXRlID0gbmV3X3N0YXRlOworCQkJdnNjc2ktPmZsYWdzICY9IH4o U0NIRURVTEVfRElTQ09OTkVDVCB8CisJCQkJCSAgRElTQ09OTkVDVF9TQ0hFRFVMRUQpOworCQkJ aWJtdnNjc2lzX2ZyZWVfY29tbWFuZF9xKHZzY3NpKTsKKwkJCWJyZWFrOwogCQljYXNlIEVSUl9E SVNDT05ORUNUOgogCQljYXNlIEVSUl9ESVNDT05ORUNUX1JFQ09OTkVDVDoKIAkJCXZzY3NpLT5z dGF0ZSA9IG5ld19zdGF0ZTsKQEAgLTExODcsNiArMTIwNiwxNSBAQCBzdGF0aWMgdm9pZCBpYm12 c2NzaXNfYWRhcHRlcl9pZGxlKHN0cnVjdCBzY3NpX2luZm8gKnZzY3NpKQogCQlmcmVlX3FzID0g dHJ1ZTsKIAogCXN3aXRjaCAodnNjc2ktPnN0YXRlKSB7CisJY2FzZSBVTkNPTkZJR1VSSU5HOgor CQlpYm12c2NzaXNfZnJlZV9jb21tYW5kX3EodnNjc2kpOworCQlkbWFfcm1iKCk7CisJCWlzeW5j KCk7CisJCWlmICh2c2NzaS0+ZmxhZ3MgJiBDRkdfU0xFRVBJTkcpIHsKKwkJCXZzY3NpLT5mbGFn cyAmPSB+Q0ZHX1NMRUVQSU5HOworCQkJY29tcGxldGUoJnZzY3NpLT51bmNvbmZpZyk7CisJCX0K KwkJYnJlYWs7CiAJY2FzZSBFUlJfRElTQ09OTkVDVF9SRUNPTk5FQ1Q6CiAJCWlibXZzY3Npc19y ZXNldF9xdWV1ZSh2c2NzaSk7CiAJCXByX2RlYnVnKCJhZGFwdGVyX2lkbGUsIGRpc2NfcmVjOiBm bGFncyAweCV4XG4iLCB2c2NzaS0+ZmxhZ3MpOwpAQCAtMzM0Miw2ICszMzcwLDcgQEAgc3RhdGlj IGludCBpYm12c2NzaXNfcHJvYmUoc3RydWN0IHZpb19kZXYgKnZkZXYsCiAJCSAgICAgKHVuc2ln bmVkIGxvbmcpdnNjc2kpOwogCiAJaW5pdF9jb21wbGV0aW9uKCZ2c2NzaS0+d2FpdF9pZGxlKTsK Kwlpbml0X2NvbXBsZXRpb24oJnZzY3NpLT51bmNvbmZpZyk7CiAKIAlzbnByaW50Zih3cV9uYW1l LCAyNCwgImlibXZzY3NpcyVzIiwgZGV2X25hbWUoJnZkZXYtPmRldikpOwogCXZzY3NpLT53b3Jr X3EgPSBjcmVhdGVfd29ya3F1ZXVlKHdxX25hbWUpOwpAQCAtMzM5NywxMCArMzQyNiwxMSBAQCBz dGF0aWMgaW50IGlibXZzY3Npc19yZW1vdmUoc3RydWN0IHZpb19kZXYgKnZkZXYpCiAKIAlwcl9k ZWJ1ZygicmVtb3ZlICglcylcbiIsIGRldl9uYW1lKCZ2c2NzaS0+ZG1hX2Rldi0+ZGV2KSk7CiAK LQkvKgotCSAqIFRCRDogTmVlZCB0byBoYW5kbGUgaWYgdGhlcmUgYXJlIGNvbW1hbmRzIG9uIHRo ZSB3YWl0aW5nX3JzcCBxCi0JICogICAgICBBY3R1YWxseSwgY2FuIHRoZXJlIHN0aWxsIGJlIGNt ZHMgb3V0c3RhbmRpbmcgdG8gdGNtPwotCSAqLworCXNwaW5fbG9ja19iaCgmdnNjc2ktPmludHJf bG9jayk7CisJaWJtdnNjc2lzX3Bvc3RfZGlzY29ubmVjdCh2c2NzaSwgVU5DT05GSUdVUklORywg MCk7CisJdnNjc2ktPmZsYWdzIHw9IENGR19TTEVFUElORzsKKwlzcGluX3VubG9ja19iaCgmdnNj c2ktPmludHJfbG9jayk7CisJd2FpdF9mb3JfY29tcGxldGlvbigmdnNjc2ktPnVuY29uZmlnKTsK IAogCXZpb19kaXNhYmxlX2ludGVycnVwdHModmRldik7CiAJZnJlZV9pcnEodmRldi0+aXJxLCB2 c2NzaSk7CkBAIC0zNDA5LDcgKzM0MzksNiBAQCBzdGF0aWMgaW50IGlibXZzY3Npc19yZW1vdmUo c3RydWN0IHZpb19kZXYgKnZkZXYpCiAJCQkgRE1BX0JJRElSRUNUSU9OQUwpOwogCWtmcmVlKHZz Y3NpLT5tYXBfYnVmKTsKIAl0YXNrbGV0X2tpbGwoJnZzY3NpLT53b3JrX3Rhc2spOwotCWlibXZz Y3Npc191bnJlZ2lzdGVyX2NvbW1hbmRfcSh2c2NzaSk7CiAJaWJtdnNjc2lzX2Rlc3Ryb3lfY29t bWFuZF9xKHZzY3NpKTsKIAlpYm12c2NzaXNfZnJlZXRpbWVyKHZzY3NpKTsKIAlpYm12c2NzaXNf ZnJlZV9jbWRzKHZzY3NpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9pYm12c2NzaV90Z3Qv aWJtdnNjc2lfdGd0LmggYi9kcml2ZXJzL3Njc2kvaWJtdnNjc2lfdGd0L2libXZzY3NpX3RndC5o CmluZGV4IDE3ZTBlZjQuLjk4YjBjYTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9pYm12c2Nz aV90Z3QvaWJtdnNjc2lfdGd0LmgKKysrIGIvZHJpdmVycy9zY3NpL2libXZzY3NpX3RndC9pYm12 c2NzaV90Z3QuaApAQCAtMjU3LDYgKzI1Nyw4IEBAIHN0cnVjdCBzY3NpX2luZm8gewogI2RlZmlu ZSBTQ0hFRFVMRV9ESVNDT05ORUNUICAgICAgICAgICAweDAwNDAwCiAJLyogZGlzY29ubmVjdCBo YW5kbGVyIGlzIHNjaGVkdWxlZCAqLwogI2RlZmluZSBESVNDT05ORUNUX1NDSEVEVUxFRCAgICAg ICAgICAweDAwODAwCisJLyogcmVtb3ZlIGZ1bmN0aW9uIGlzIHNsZWVwaW5nICovCisjZGVmaW5l IENGR19TTEVFUElORyAgICAgICAgICAgICAgICAgIDB4MDEwMDAKIAl1MzIgZmxhZ3M7CiAJLyog YWRhcHRlciBsb2NrICovCiAJc3BpbmxvY2tfdCBpbnRyX2xvY2s7CkBAIC0yODUsNiArMjg3LDcg QEAgc3RydWN0IHNjc2lfaW5mbyB7CiAKIAlzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd29ya19x OwogCXN0cnVjdCBjb21wbGV0aW9uIHdhaXRfaWRsZTsKKwlzdHJ1Y3QgY29tcGxldGlvbiB1bmNv bmZpZzsKIAlzdHJ1Y3QgZGV2aWNlIGRldjsKIAlzdHJ1Y3QgdmlvX2RldiAqZG1hX2RldjsKIAlz dHJ1Y3Qgc3JwX3RhcmdldCB0YXJnZXQ7Ci0tIAoyLjEuMAoKCkZyb20gMjlkOTI4Nzg1ZjVlNzZi NWFiZmFmZTRhOTFjYzFkYjQxNTVjZDY3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog Vml0YWx5IEt1em5ldHNvdiA8dmt1em5ldHNAcmVkaGF0LmNvbT4KRGF0ZTogRnJpLCAxNyBNYXIg MjAxNyAwMDo0ODoyMiArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMDUyLzExMl0geDg2L2h5cGVydjog SGFuZGxlIHVua25vd24gTk1JcyBvbiBvbmUgQ1BVIHdoZW4KIHVua25vd25fbm1pX3BhbmljCgpb IFVwc3RyZWFtIGNvbW1pdCA1OTEwN2UyZjQ4ODMxZGFlZGM0Njk3M2NlNDk4ODYwNWFiMDY2ZGUz IF0KClRoZXJlIGlzIGEgZmVhdHVyZSBpbiBIeXBlci1WICgnRGVidWctVk0gLS1JbmplY3ROb25N YXNrYWJsZUludGVycnVwdCcpCndoaWNoIGluamVjdHMgTk1JIHRvIHRoZSBndWVzdC4gV2UgbWF5 IHdhbnQgdG8gY3Jhc2ggdGhlIGd1ZXN0IGFuZCBkbyBrZHVtcApvbiB0aGlzIE5NSSBieSBlbmFi bGluZyB1bmtub3duX25taV9wYW5pYy4gVG8gbWFrZSBrZHVtcCBzdWNjZWVkIHdlIG5lZWQgdG8K YWxsb3cgdGhlIGtkdW1wIGtlcm5lbCB0byByZS1lc3RhYmxpc2ggVk1CdXMgY29ubmVjdGlvbiBz byBpdCB3aWxsIHNlZQpWTUJ1cyBkZXZpY2VzIChzdG9yYWdlLCBuZXR3b3JrLC4uKS4KClRvIHBy b3Blcmx5IHVubG9hZCBWTUJ1cyBtYWtpbmcgaXQgcG9zc2libGUgdG8gc3RhcnQgb3ZlciBkdXJp bmcga2R1bXAgd2UKbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nOgoKIC0gU2VuZCBhbiAndW5sb2Fk JyBtZXNzYWdlIHRvIHRoZSBoeXBlcnZpc29yLiBUaGlzIGNhbiBiZSBkb25lIG9uIGFueSBDUFUK ICAgc28gd2UgZG8gdGhpcyB0aGUgY3Jhc2hpbmcgQ1BVLgoKIC0gUmVjZWl2ZSB0aGUgJ3VubG9h ZCBmaW5pc2hlZCcgcmVwbHkgbWVzc2FnZS4gV1MyMDEyUjIgZGVsaXZlcnMgdGhpcwogICBtZXNz YWdlIHRvIHRoZSBDUFUgd2hpY2ggd2FzIHVzZWQgdG8gZXN0YWJsaXNoIFZNQnVzIGNvbm5lY3Rp b24gZHVyaW5nCiAgIG1vZHVsZSBsb2FkIGFuZCB0aGlzIENQVSBtYXkgZGlmZmVyIGZyb20gdGhl IENQVSBzZW5kaW5nICd1bmxvYWQnLgoKUmVjZWl2aW5nIGEgVk1CdXMgbWVzc2FnZSBtZWFucyB0 aGUgZm9sbG93aW5nOgoKIC0gVGhlcmUgaXMgYSBwZXItQ1BVIHNsb3QgaW4gbWVtb3J5IGZvciBv bmUgbWVzc2FnZS4gVGhpcyBzbG90IGNhbiBpbgogICB0aGVvcnkgYmUgYWNjZXNzZWQgYnkgYW55 IENQVS4KCiAtIFdlIGdldCBhbiBpbnRlcnJ1cHQgb24gdGhlIENQVSB3aGVuIGEgbWVzc2FnZSB3 YXMgcGxhY2VkIGludG8gdGhlIHNsb3QuCgogLSBXaGVuIHdlIHJlYWQgdGhlIG1lc3NhZ2Ugd2Ug bmVlZCB0byBjbGVhciB0aGUgc2xvdCBhbmQgc2lnbmFsIHRoZSBmYWN0CiAgIHRvIHRoZSBoeXBl cnZpc29yLiBJbiBjYXNlIHRoZXJlIGFyZSBtb3JlIG1lc3NhZ2VzIHRvIHRoaXMgQ1BVIHBlbmRp bmcKICAgdGhlIGh5cGVydmlzb3Igd2lsbCBkZWxpdmVyIHRoZSBuZXh0IG1lc3NhZ2UuIFRoZSBz aWduYWxpbmcgaXMgZG9uZSBieQogICB3cml0aW5nIHRvIGFuIE1TUiBzbyB0aGlzIGNhbiBvbmx5 IGJlIGRvbmUgb24gdGhlIGFwcHJvcHJpYXRlIENQVS4KClRvIGF2b2lkIGRvaW5nIGNyb3NzLUNQ VSB3b3JrIG9uIGNyYXNoIHdlIGhhdmUgdm1idXNfd2FpdF9mb3JfdW5sb2FkKCkKZnVuY3Rpb24g d2hpY2ggY2hlY2tzIG1lc3NhZ2Ugc2xvdHMgZm9yIGFsbCBDUFVzIGluIGEgbG9vcCB3YWl0aW5n IGZvciB0aGUKJ3VubG9hZCBmaW5pc2hlZCcgbWVzc2FnZXMuIEhvd2V2ZXIsIHRoZXJlIGlzIGFu IGlzc3VlIHdoaWNoIGFyaXNlcyB3aGVuCnRoZXNlIGNvbmRpdGlvbnMgYXJlIG1ldDoKCiAtIFdl J3JlIGNyYXNoaW5nIG9uIGEgQ1BVIHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvbmUgd2hp Y2ggd2FzIHVzZWQKICAgdG8gaW5pdGlhbGx5IGNvbnRhY3QgdGhlIGh5cGVydmlzb3IuCgogLSBU aGUgQ1BVIHdoaWNoIHdhcyB1c2VkIGZvciB0aGUgaW5pdGlhbCBjb250YWN0IGlzIGJsb2NrZWQg d2l0aCBpbnRlcnJ1cHRzCiAgIGRpc2FibGVkIGFuZCB0aGVyZSBpcyBhIG1lc3NhZ2UgcGVuZGlu ZyBpbiB0aGUgbWVzc2FnZSBzbG90LgoKSW4gdGhpcyBjYXNlIHdlIHdvbid0IGJlIGFibGUgdG8g cmVhZCB0aGUgJ3VubG9hZCBmaW5pc2hlZCcgbWVzc2FnZSBvbiB0aGUKY3Jhc2hpbmcgQ1BVLiBU aGlzIGlzIHJlcHJvZHVjaWJsZSB3aGVuIHdlIHJlY2VpdmUgdW5rbm93biBOTUlzIG9uIGFsbCBD UFVzCnNpbXVsdGFuZW91c2x5OiB0aGUgZmlyc3QgQ1BVIGVudGVyaW5nIHBhbmljKCkgd2lsbCBw cm9jZWVkIHRvIGNyYXNoIGFuZAphbGwgb3RoZXIgQ1BVcyB3aWxsIHN0b3AgdGhlbXNlbHZlcyB3 aXRoIGludGVycnVwdHMgZGlzYWJsZWQuCgpUaGUgc3VnZ2VzdGVkIHNvbHV0aW9uIGlzIHRvIGhh bmRsZSB1bmtub3duIE5NSXMgZm9yIEh5cGVyLVYgZ3Vlc3RzIG9uIHRoZQpmaXJzdCBDUFUgd2hp Y2ggZ2V0cyB0aGVtIG9ubHkuIFRoaXMgd2lsbCBhbGxvdyB1cyB0byByZWx5IG9uIFZNQnVzCmlu dGVycnVwdCBoYW5kbGVyIGJlaW5nIGFibGUgdG8gcmVjZWl2ZSB0aGUgJ3VubG9hZCBmaW5pc2gn IG1lc3NhZ2UgaW4KY2FzZSBpdCBpcyBkZWxpdmVyZWQgdG8gYSBkaWZmZXJlbnQgQ1BVLgoKVGhl IGlzc3VlIGlzIG5vdCByZXByb2R1Y2libGUgb24gV1MyMDE2IGFzIERlYnVnLVZNIGRlbGl2ZXJz IE5NSSB0byB0aGUKYm9vdCBDUFUgb25seSwgV1MyMDEyUjIgYW5kIGVhcmxpZXIgSHlwZXItViB2 ZXJzaW9ucyBhcmUgYWZmZWN0ZWQuCgpTaWduZWQtb2ZmLWJ5OiBWaXRhbHkgS3V6bmV0c292IDx2 a3V6bmV0c0ByZWRoYXQuY29tPgpBY2tlZC1ieTogSy4gWS4gU3Jpbml2YXNhbiA8a3lzQG1pY3Jv c29mdC5jb20+CkNjOiBkZXZlbEBsaW51eGRyaXZlcnByb2plY3Qub3JnCkNjOiBIYWl5YW5nIFpo YW5nIDxoYWl5YW5nekBtaWNyb3NvZnQuY29tPgpMaW5rOiBodHRwOi8vbGttbC5rZXJuZWwub3Jn L3IvMjAxNjEyMDIxMDA3MjAuMjgxMjEtMS12a3V6bmV0c0ByZWRoYXQuY29tClNpZ25lZC1vZmYt Ynk6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgpTaWduZWQtb2ZmLWJ5OiBJ bmdvIE1vbG5hciA8bWluZ29Aa2VybmVsLm9yZz4KU2lnbmVkLW9mZi1ieTogU2FzaGEgTGV2aW4g PGFsZXhhbmRlci5sZXZpbkB2ZXJpem9uLmNvbT4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1I YXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBhcmNoL3g4Ni9rZXJuZWwv Y3B1L21zaHlwZXJ2LmMgfCAyNCArKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFu Z2VkLCAyNCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2NwdS9t c2h5cGVydi5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9tc2h5cGVydi5jCmluZGV4IDhmNDRjNWEu LmYyMjhmNzQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbXNoeXBlcnYuYworKysg Yi9hcmNoL3g4Ni9rZXJuZWwvY3B1L21zaHlwZXJ2LmMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs dWRlIDxhc20vYXBpYy5oPgogI2luY2x1ZGUgPGFzbS90aW1lci5oPgogI2luY2x1ZGUgPGFzbS9y ZWJvb3QuaD4KKyNpbmNsdWRlIDxhc20vbm1pLmg+CiAKIHN0cnVjdCBtc19oeXBlcnZfaW5mbyBt c19oeXBlcnY7CiBFWFBPUlRfU1lNQk9MX0dQTChtc19oeXBlcnYpOwpAQCAtMTU4LDYgKzE1OSwy NiBAQCBzdGF0aWMgdW5zaWduZWQgY2hhciBodl9nZXRfbm1pX3JlYXNvbih2b2lkKQogCXJldHVy biAwOwogfQogCisjaWZkZWYgQ09ORklHX1g4Nl9MT0NBTF9BUElDCisvKgorICogUHJpb3IgdG8g V1MyMDE2IERlYnVnLVZNIHNlbmRzIE5NSXMgdG8gYWxsIENQVXMgd2hpY2ggbWFrZXMKKyAqIGl0 IGRpZmljdWx0IHRvIHByb2Nlc3MgQ0hBTk5FTE1TR19VTkxPQUQgaW4gY2FzZSBvZiBjcmFzaC4g SGFuZGxlCisgKiB1bmtub3duIE5NSSBvbiB0aGUgZmlyc3QgQ1BVIHdoaWNoIGdldHMgaXQuCisg Ki8KK3N0YXRpYyBpbnQgaHZfbm1pX3Vua25vd24odW5zaWduZWQgaW50IHZhbCwgc3RydWN0IHB0 X3JlZ3MgKnJlZ3MpCit7CisJc3RhdGljIGF0b21pY190IG5taV9jcHUgPSBBVE9NSUNfSU5JVCgt MSk7CisKKwlpZiAoIXVua25vd25fbm1pX3BhbmljKQorCQlyZXR1cm4gTk1JX0RPTkU7CisKKwlp ZiAoYXRvbWljX2NtcHhjaGcoJm5taV9jcHUsIC0xLCByYXdfc21wX3Byb2Nlc3Nvcl9pZCgpKSAh PSAtMSkKKwkJcmV0dXJuIE5NSV9IQU5ETEVEOworCisJcmV0dXJuIE5NSV9ET05FOworfQorI2Vu ZGlmCisKIHN0YXRpYyB2b2lkIF9faW5pdCBtc19oeXBlcnZfaW5pdF9wbGF0Zm9ybSh2b2lkKQog ewogCS8qCkBAIC0xODMsNiArMjA0LDkgQEAgc3RhdGljIHZvaWQgX19pbml0IG1zX2h5cGVydl9p bml0X3BsYXRmb3JtKHZvaWQpCiAJCXByX2luZm8oIkh5cGVyVjogTEFQSUMgVGltZXIgRnJlcXVl bmN5OiAlI3hcbiIsCiAJCQlsYXBpY190aW1lcl9mcmVxdWVuY3kpOwogCX0KKworCXJlZ2lzdGVy X25taV9oYW5kbGVyKE5NSV9VTktOT1dOLCBodl9ubWlfdW5rbm93biwgTk1JX0ZMQUdfRklSU1Qs CisJCQkgICAgICJodl9ubWlfdW5rbm93biIpOwogI2VuZGlmCiAKIAlpZiAobXNfaHlwZXJ2LmZl YXR1cmVzICYgSFZfWDY0X01TUl9USU1FX1JFRl9DT1VOVF9BVkFJTEFCTEUpCi0tIAoyLjEuMAoK CkZyb20gNmE1ZjNlNjY0YWM3OThiNTQ0NDhmYzU1ZTdlN2MzYTlmZDFlZTlkNCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogQmpvcm4gSGVsZ2FhcyA8YmhlbGdhYXNAZ29vZ2xlLmNvbT4K RGF0ZTogRnJpLCAxNyBNYXIgMjAxNyAwMDo0ODoyMiArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMDUz LzExMl0gUENJOiBTZXBhcmF0ZSBWRiBCQVIgdXBkYXRlcyBmcm9tIHN0YW5kYXJkIEJBUgogdXBk YXRlcwoKWyBVcHN0cmVhbSBjb21taXQgNmZmYTI0ODljNTFkYTc3NTY0YTA4ODFhNzM3NjVlYTIx NjlmOTU1ZCBdCgpQcmV2aW91c2x5IHBjaV91cGRhdGVfcmVzb3VyY2UoKSB1c2VkIHRoZSBzYW1l IGNvZGUgcGF0aCBmb3IgdXBkYXRpbmcKc3RhbmRhcmQgQkFScyBhbmQgVkYgQkFScyBpbiBTUi1J T1YgY2FwYWJpbGl0aWVzLgoKU3BsaXQgdGhlIFZGIEJBUiB1cGRhdGUgaW50byBhIG5ldyBwY2lf aW92X3VwZGF0ZV9yZXNvdXJjZSgpIGludGVybmFsCmludGVyZmFjZSwgd2hpY2ggbWFrZXMgaXQg c2ltcGxlciB0byBjb21wdXRlIHRoZSBCQVIgYWRkcmVzcyAod2UgY2FuIGdldApyaWQgb2YgcGNp X3Jlc291cmNlX2JhcigpIGFuZCBwY2lfaW92X3Jlc291cmNlX2JhcigpKS4KClRoaXMgcGF0Y2g6 CgogIC0gUmVuYW1lcyBwY2lfdXBkYXRlX3Jlc291cmNlKCkgdG8gcGNpX3N0ZF91cGRhdGVfcmVz b3VyY2UoKSwKICAtIEFkZHMgcGNpX2lvdl91cGRhdGVfcmVzb3VyY2UoKSwKICAtIE1ha2VzIHBj aV91cGRhdGVfcmVzb3VyY2UoKSBhIHdyYXBwZXIgdGhhdCBjYWxscyB0aGUgYXBwcm9wcmlhdGUg b25lLAoKTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQuCgpTaWduZWQtb2ZmLWJ5OiBCam9y biBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPgpSZXZpZXdlZC1ieTogR2F2aW4gU2hhbiA8 Z3dzaGFuQGxpbnV4LnZuZXQuaWJtLmNvbT4KU2lnbmVkLW9mZi1ieTogU2FzaGEgTGV2aW4gPGFs ZXhhbmRlci5sZXZpbkB2ZXJpem9uLmNvbT4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0 bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBkcml2ZXJzL3BjaS9pb3YuYyAg ICAgICB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIGRyaXZlcnMvcGNpL3BjaS5oICAgICAgIHwgIDEgKwogZHJpdmVycy9wY2kvc2V0dXAtcmVz LmMgfCAxMyArKysrKysrKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvaW92LmMgYi9kcml2ZXJz L3BjaS9pb3YuYwppbmRleCBlMzBmMDVjLi4zOTg4OGNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Bj aS9pb3YuYworKysgYi9kcml2ZXJzL3BjaS9pb3YuYwpAQCAtNTcxLDYgKzU3MSw1NiBAQCBpbnQg cGNpX2lvdl9yZXNvdXJjZV9iYXIoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHJlc25vKQogCQk0 ICogKHJlc25vIC0gUENJX0lPVl9SRVNPVVJDRVMpOwogfQogCisvKioKKyAqIHBjaV9pb3ZfdXBk YXRlX3Jlc291cmNlIC0gdXBkYXRlIGEgVkYgQkFSCisgKiBAZGV2OiB0aGUgUENJIGRldmljZQor ICogQHJlc25vOiB0aGUgcmVzb3VyY2UgbnVtYmVyCisgKgorICogVXBkYXRlIGEgVkYgQkFSIGlu IHRoZSBTUi1JT1YgY2FwYWJpbGl0eSBvZiBhIFBGLgorICovCit2b2lkIHBjaV9pb3ZfdXBkYXRl X3Jlc291cmNlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCByZXNubykKK3sKKwlzdHJ1Y3QgcGNp X3NyaW92ICppb3YgPSBkZXYtPmlzX3BoeXNmbiA/IGRldi0+c3Jpb3YgOiBOVUxMOworCXN0cnVj dCByZXNvdXJjZSAqcmVzID0gZGV2LT5yZXNvdXJjZSArIHJlc25vOworCWludCB2Zl9iYXIgPSBy ZXNubyAtIFBDSV9JT1ZfUkVTT1VSQ0VTOworCXN0cnVjdCBwY2lfYnVzX3JlZ2lvbiByZWdpb247 CisJdTMyIG5ldzsKKwlpbnQgcmVnOworCisJLyoKKwkgKiBUaGUgZ2VuZXJpYyBwY2lfcmVzdG9y ZV9iYXJzKCkgcGF0aCBjYWxscyB0aGlzIGZvciBhbGwgZGV2aWNlcywKKwkgKiBpbmNsdWRpbmcg VkZzIGFuZCBub24tU1ItSU9WIGRldmljZXMuICBJZiB0aGlzIGlzIG5vdCBhIFBGLCB3ZQorCSAq IGhhdmUgbm90aGluZyB0byBkby4KKwkgKi8KKwlpZiAoIWlvdikKKwkJcmV0dXJuOworCisJLyoK KwkgKiBJZ25vcmUgdW5pbXBsZW1lbnRlZCBCQVJzLCB1bnVzZWQgcmVzb3VyY2Ugc2xvdHMgZm9y IDY0LWJpdAorCSAqIEJBUnMsIGFuZCBub24tbW92YWJsZSByZXNvdXJjZXMsIGUuZy4sIHRob3Nl IGRlc2NyaWJlZCB2aWEKKwkgKiBFbmhhbmNlZCBBbGxvY2F0aW9uLgorCSAqLworCWlmICghcmVz LT5mbGFncykKKwkJcmV0dXJuOworCisJaWYgKHJlcy0+ZmxhZ3MgJiBJT1JFU09VUkNFX1VOU0VU KQorCQlyZXR1cm47CisKKwlpZiAocmVzLT5mbGFncyAmIElPUkVTT1VSQ0VfUENJX0ZJWEVEKQor CQlyZXR1cm47CisKKwlwY2liaW9zX3Jlc291cmNlX3RvX2J1cyhkZXYtPmJ1cywgJnJlZ2lvbiwg cmVzKTsKKwluZXcgPSByZWdpb24uc3RhcnQ7CisJbmV3IHw9IHJlcy0+ZmxhZ3MgJiB+UENJX0JB U0VfQUREUkVTU19NRU1fTUFTSzsKKworCXJlZyA9IGlvdi0+cG9zICsgUENJX1NSSU9WX0JBUiAr IDQgKiB2Zl9iYXI7CisJcGNpX3dyaXRlX2NvbmZpZ19kd29yZChkZXYsIHJlZywgbmV3KTsKKwlp ZiAocmVzLT5mbGFncyAmIElPUkVTT1VSQ0VfTUVNXzY0KSB7CisJCW5ldyA9IHJlZ2lvbi5zdGFy dCA+PiAxNiA+PiAxNjsKKwkJcGNpX3dyaXRlX2NvbmZpZ19kd29yZChkZXYsIHJlZyArIDQsIG5l dyk7CisJfQorfQorCiByZXNvdXJjZV9zaXplX3QgX193ZWFrIHBjaWJpb3NfaW92X3Jlc291cmNl X2FsaWdubWVudChzdHJ1Y3QgcGNpX2RldiAqZGV2LAogCQkJCQkJICAgICAgaW50IHJlc25vKQog ewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNpLmggYi9kcml2ZXJzL3BjaS9wY2kuaAppbmRl eCA0NTE4NTYyLi41YmZjYjkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9wY2kuaAorKysgYi9k cml2ZXJzL3BjaS9wY2kuaApAQCAtMjkwLDYgKzI5MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBw Y2lfcmVzdG9yZV9hdHNfc3RhdGUoc3RydWN0IHBjaV9kZXYgKmRldikKIGludCBwY2lfaW92X2lu aXQoc3RydWN0IHBjaV9kZXYgKmRldik7CiB2b2lkIHBjaV9pb3ZfcmVsZWFzZShzdHJ1Y3QgcGNp X2RldiAqZGV2KTsKIGludCBwY2lfaW92X3Jlc291cmNlX2JhcihzdHJ1Y3QgcGNpX2RldiAqZGV2 LCBpbnQgcmVzbm8pOwordm9pZCBwY2lfaW92X3VwZGF0ZV9yZXNvdXJjZShzdHJ1Y3QgcGNpX2Rl diAqZGV2LCBpbnQgcmVzbm8pOwogcmVzb3VyY2Vfc2l6ZV90IHBjaV9zcmlvdl9yZXNvdXJjZV9h bGlnbm1lbnQoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHJlc25vKTsKIHZvaWQgcGNpX3Jlc3Rv cmVfaW92X3N0YXRlKHN0cnVjdCBwY2lfZGV2ICpkZXYpOwogaW50IHBjaV9pb3ZfYnVzX3Jhbmdl KHN0cnVjdCBwY2lfYnVzICpidXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvc2V0dXAtcmVz LmMgYi9kcml2ZXJzL3BjaS9zZXR1cC1yZXMuYwppbmRleCA5NTI2ZTM0Li42OTVmMzJkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL3BjaS9zZXR1cC1yZXMuYworKysgYi9kcml2ZXJzL3BjaS9zZXR1cC1y ZXMuYwpAQCAtMjUsOCArMjUsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KICNpbmNsdWRl ICJwY2kuaCIKIAotCi12b2lkIHBjaV91cGRhdGVfcmVzb3VyY2Uoc3RydWN0IHBjaV9kZXYgKmRl diwgaW50IHJlc25vKQorc3RhdGljIHZvaWQgcGNpX3N0ZF91cGRhdGVfcmVzb3VyY2Uoc3RydWN0 IHBjaV9kZXYgKmRldiwgaW50IHJlc25vKQogewogCXN0cnVjdCBwY2lfYnVzX3JlZ2lvbiByZWdp b247CiAJYm9vbCBkaXNhYmxlOwpAQCAtMTEwLDYgKzEwOSwxNiBAQCB2b2lkIHBjaV91cGRhdGVf cmVzb3VyY2Uoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHJlc25vKQogCQlwY2lfd3JpdGVfY29u ZmlnX3dvcmQoZGV2LCBQQ0lfQ09NTUFORCwgY21kKTsKIH0KIAordm9pZCBwY2lfdXBkYXRlX3Jl c291cmNlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCByZXNubykKK3sKKwlpZiAocmVzbm8gPD0g UENJX1JPTV9SRVNPVVJDRSkKKwkJcGNpX3N0ZF91cGRhdGVfcmVzb3VyY2UoZGV2LCByZXNubyk7 CisjaWZkZWYgQ09ORklHX1BDSV9JT1YKKwllbHNlIGlmIChyZXNubyA+PSBQQ0lfSU9WX1JFU09V UkNFUyAmJiByZXNubyA8PSBQQ0lfSU9WX1JFU09VUkNFX0VORCkKKwkJcGNpX2lvdl91cGRhdGVf cmVzb3VyY2UoZGV2LCByZXNubyk7CisjZW5kaWYKK30KKwogaW50IHBjaV9jbGFpbV9yZXNvdXJj ZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgcmVzb3VyY2UpCiB7CiAJc3RydWN0IHJlc291cmNl ICpyZXMgPSAmZGV2LT5yZXNvdXJjZVtyZXNvdXJjZV07Ci0tIAoyLjEuMAoKCkZyb20gN2I2NWMz YTg0MzExMDI2MjAwYjE5ZWI4NmM5YTc2ZmYwMDQ0MDJmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogQmpvcm4gSGVsZ2FhcyA8YmhlbGdhYXNAZ29vZ2xlLmNvbT4KRGF0ZTogRnJpLCAx NyBNYXIgMjAxNyAwMDo0ODoyMyArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMDU0LzExMl0gUENJOiBS ZW1vdmUgcGNpX3Jlc291cmNlX2JhcigpIGFuZAogcGNpX2lvdl9yZXNvdXJjZV9iYXIoKQoKWyBV cHN0cmVhbSBjb21taXQgMjg2YzIzNzhhYWNjYzczNDNlYmYxN2VjNmNkODY1Njc2NTljYWY3MCBd CgpwY2lfc3RkX3VwZGF0ZV9yZXNvdXJjZSgpIG9ubHkgZGVhbHMgd2l0aCBzdGFuZGFyZCBCQVJz LCBzbyB3ZSBkb24ndCBoYXZlCnRvIHdvcnJ5IGFib3V0IHRoZSBjb21wbGljYXRpb25zIG9mIFZG IEJBUnMgaW4gYW4gU1ItSU9WIGNhcGFiaWxpdHkuCgpDb21wdXRlIHRoZSBCQVIgYWRkcmVzcyBp bmxpbmUgYW5kIHJlbW92ZSBwY2lfcmVzb3VyY2VfYmFyKCkuICBUaGF0IG1ha2VzCnBjaV9pb3Zf cmVzb3VyY2VfYmFyKCkgdW51c2VkLCBzbyByZW1vdmUgdGhhdCBhcyB3ZWxsLgoKU2lnbmVkLW9m Zi1ieTogQmpvcm4gSGVsZ2FhcyA8YmhlbGdhYXNAZ29vZ2xlLmNvbT4KUmV2aWV3ZWQtYnk6IEdh dmluIFNoYW4gPGd3c2hhbkBsaW51eC52bmV0LmlibS5jb20+ClNpZ25lZC1vZmYtYnk6IFNhc2hh IExldmluIDxhbGV4YW5kZXIubGV2aW5AdmVyaXpvbi5jb20+ClNpZ25lZC1vZmYtYnk6IEdyZWcg S3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogZHJpdmVycy9w Y2kvaW92LmMgICAgICAgfCAxOCAtLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvcGNpL3BjaS5j ICAgICAgIHwgMzAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3BjaS9w Y2kuaCAgICAgICB8ICA2IC0tLS0tLQogZHJpdmVycy9wY2kvc2V0dXAtcmVzLmMgfCAxMyArKysr KysrLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNjAgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvaW92LmMgYi9kcml2ZXJzL3BjaS9pb3YuYwpp bmRleCAzOTg4OGNmLi4zZmI4ZDJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9pb3YuYworKysg Yi9kcml2ZXJzL3BjaS9pb3YuYwpAQCAtNTU0LDI0ICs1NTQsNiBAQCB2b2lkIHBjaV9pb3ZfcmVs ZWFzZShzdHJ1Y3QgcGNpX2RldiAqZGV2KQogfQogCiAvKioKLSAqIHBjaV9pb3ZfcmVzb3VyY2Vf YmFyIC0gZ2V0IHBvc2l0aW9uIG9mIHRoZSBTUi1JT1YgQkFSCi0gKiBAZGV2OiB0aGUgUENJIGRl dmljZQotICogQHJlc25vOiB0aGUgcmVzb3VyY2UgbnVtYmVyCi0gKgotICogUmV0dXJucyBwb3Np dGlvbiBvZiB0aGUgQkFSIGVuY2Fwc3VsYXRlZCBpbiB0aGUgU1ItSU9WIGNhcGFiaWxpdHkuCi0g Ki8KLWludCBwY2lfaW92X3Jlc291cmNlX2JhcihzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgcmVz bm8pCi17Ci0JaWYgKHJlc25vIDwgUENJX0lPVl9SRVNPVVJDRVMgfHwgcmVzbm8gPiBQQ0lfSU9W X1JFU09VUkNFX0VORCkKLQkJcmV0dXJuIDA7Ci0KLQlCVUdfT04oIWRldi0+aXNfcGh5c2ZuKTsK LQotCXJldHVybiBkZXYtPnNyaW92LT5wb3MgKyBQQ0lfU1JJT1ZfQkFSICsKLQkJNCAqIChyZXNu byAtIFBDSV9JT1ZfUkVTT1VSQ0VTKTsKLX0KLQotLyoqCiAgKiBwY2lfaW92X3VwZGF0ZV9yZXNv dXJjZSAtIHVwZGF0ZSBhIFZGIEJBUgogICogQGRldjogdGhlIFBDSSBkZXZpY2UKICAqIEByZXNu bzogdGhlIHJlc291cmNlIG51bWJlcgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNpLmMgYi9k cml2ZXJzL3BjaS9wY2kuYwppbmRleCBlZGE2YTdjLi4xZmMyY2Y0IDEwMDY0NAotLS0gYS9kcml2 ZXJzL3BjaS9wY2kuYworKysgYi9kcml2ZXJzL3BjaS9wY2kuYwpAQCAtNDgzNSwzNiArNDgzNSw2 IEBAIGludCBwY2lfc2VsZWN0X2JhcnMoc3RydWN0IHBjaV9kZXYgKmRldiwgdW5zaWduZWQgbG9u ZyBmbGFncykKIH0KIEVYUE9SVF9TWU1CT0wocGNpX3NlbGVjdF9iYXJzKTsKIAotLyoqCi0gKiBw Y2lfcmVzb3VyY2VfYmFyIC0gZ2V0IHBvc2l0aW9uIG9mIHRoZSBCQVIgYXNzb2NpYXRlZCB3aXRo IGEgcmVzb3VyY2UKLSAqIEBkZXY6IHRoZSBQQ0kgZGV2aWNlCi0gKiBAcmVzbm86IHRoZSByZXNv dXJjZSBudW1iZXIKLSAqIEB0eXBlOiB0aGUgQkFSIHR5cGUgdG8gYmUgZmlsbGVkIGluCi0gKgot ICogUmV0dXJucyBCQVIgcG9zaXRpb24gaW4gY29uZmlnIHNwYWNlLCBvciAwIGlmIHRoZSBCQVIg aXMgaW52YWxpZC4KLSAqLwotaW50IHBjaV9yZXNvdXJjZV9iYXIoc3RydWN0IHBjaV9kZXYgKmRl diwgaW50IHJlc25vLCBlbnVtIHBjaV9iYXJfdHlwZSAqdHlwZSkKLXsKLQlpbnQgcmVnOwotCi0J aWYgKHJlc25vIDwgUENJX1JPTV9SRVNPVVJDRSkgewotCQkqdHlwZSA9IHBjaV9iYXJfdW5rbm93 bjsKLQkJcmV0dXJuIFBDSV9CQVNFX0FERFJFU1NfMCArIDQgKiByZXNubzsKLQl9IGVsc2UgaWYg KHJlc25vID09IFBDSV9ST01fUkVTT1VSQ0UpIHsKLQkJKnR5cGUgPSBwY2lfYmFyX21lbTMyOwot CQlyZXR1cm4gZGV2LT5yb21fYmFzZV9yZWc7Ci0JfSBlbHNlIGlmIChyZXNubyA8IFBDSV9CUklE R0VfUkVTT1VSQ0VTKSB7Ci0JCS8qIGRldmljZSBzcGVjaWZpYyByZXNvdXJjZSAqLwotCQkqdHlw ZSA9IHBjaV9iYXJfdW5rbm93bjsKLQkJcmVnID0gcGNpX2lvdl9yZXNvdXJjZV9iYXIoZGV2LCBy ZXNubyk7Ci0JCWlmIChyZWcpCi0JCQlyZXR1cm4gcmVnOwotCX0KLQotCWRldl9lcnIoJmRldi0+ ZGV2LCAiQkFSICVkOiBpbnZhbGlkIHJlc291cmNlXG4iLCByZXNubyk7Ci0JcmV0dXJuIDA7Ci19 Ci0KIC8qIFNvbWUgYXJjaGl0ZWN0dXJlcyByZXF1aXJlIGFkZGl0aW9uYWwgcHJvZ3JhbW1pbmcg dG8gZW5hYmxlIFZHQSAqLwogc3RhdGljIGFyY2hfc2V0X3ZnYV9zdGF0ZV90IGFyY2hfc2V0X3Zn YV9zdGF0ZTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNpLmggYi9kcml2ZXJzL3BjaS9w Y2kuaAppbmRleCA1YmZjYjkyLi5hNWQzN2Y2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9wY2ku aAorKysgYi9kcml2ZXJzL3BjaS9wY2kuaApAQCAtMjQ1LDcgKzI0NSw2IEBAIGJvb2wgcGNpX2J1 c19yZWFkX2Rldl92ZW5kb3JfaWQoc3RydWN0IHBjaV9idXMgKmJ1cywgaW50IGRldmZuLCB1MzIg KnBsLAogaW50IHBjaV9zZXR1cF9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKmRldik7CiBpbnQgX19w Y2lfcmVhZF9iYXNlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGVudW0gcGNpX2Jhcl90eXBlIHR5cGUs CiAJCSAgICBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgdW5zaWduZWQgaW50IHJlZyk7Ci1pbnQgcGNp X3Jlc291cmNlX2JhcihzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgcmVzbm8sIGVudW0gcGNpX2Jh cl90eXBlICp0eXBlKTsKIHZvaWQgcGNpX2NvbmZpZ3VyZV9hcmkoc3RydWN0IHBjaV9kZXYgKmRl dik7CiB2b2lkIF9fcGNpX2J1c19zaXplX2JyaWRnZXMoc3RydWN0IHBjaV9idXMgKmJ1cywKIAkJ CXN0cnVjdCBsaXN0X2hlYWQgKnJlYWxsb2NfaGVhZCk7CkBAIC0yODksNyArMjg4LDYgQEAgc3Rh dGljIGlubGluZSB2b2lkIHBjaV9yZXN0b3JlX2F0c19zdGF0ZShzdHJ1Y3QgcGNpX2RldiAqZGV2 KQogI2lmZGVmIENPTkZJR19QQ0lfSU9WCiBpbnQgcGNpX2lvdl9pbml0KHN0cnVjdCBwY2lfZGV2 ICpkZXYpOwogdm9pZCBwY2lfaW92X3JlbGVhc2Uoc3RydWN0IHBjaV9kZXYgKmRldik7Ci1pbnQg cGNpX2lvdl9yZXNvdXJjZV9iYXIoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHJlc25vKTsKIHZv aWQgcGNpX2lvdl91cGRhdGVfcmVzb3VyY2Uoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHJlc25v KTsKIHJlc291cmNlX3NpemVfdCBwY2lfc3Jpb3ZfcmVzb3VyY2VfYWxpZ25tZW50KHN0cnVjdCBw Y2lfZGV2ICpkZXYsIGludCByZXNubyk7CiB2b2lkIHBjaV9yZXN0b3JlX2lvdl9zdGF0ZShzdHJ1 Y3QgcGNpX2RldiAqZGV2KTsKQEAgLTMwNCwxMCArMzAyLDYgQEAgc3RhdGljIGlubGluZSB2b2lk IHBjaV9pb3ZfcmVsZWFzZShzdHJ1Y3QgcGNpX2RldiAqZGV2KQogCiB7CiB9Ci1zdGF0aWMgaW5s aW5lIGludCBwY2lfaW92X3Jlc291cmNlX2JhcihzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgcmVz bm8pCi17Ci0JcmV0dXJuIDA7Ci19CiBzdGF0aWMgaW5saW5lIHZvaWQgcGNpX3Jlc3RvcmVfaW92 X3N0YXRlKHN0cnVjdCBwY2lfZGV2ICpkZXYpCiB7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bj aS9zZXR1cC1yZXMuYyBiL2RyaXZlcnMvcGNpL3NldHVwLXJlcy5jCmluZGV4IDY5NWYzMmQuLjE4 MmQwZjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3NldHVwLXJlcy5jCisrKyBiL2RyaXZlcnMv cGNpL3NldHVwLXJlcy5jCkBAIC0zMiw3ICszMiw2IEBAIHN0YXRpYyB2b2lkIHBjaV9zdGRfdXBk YXRlX3Jlc291cmNlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCByZXNubykKIAl1MTYgY21kOwog CXUzMiBuZXcsIGNoZWNrLCBtYXNrOwogCWludCByZWc7Ci0JZW51bSBwY2lfYmFyX3R5cGUgdHlw ZTsKIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9IGRldi0+cmVzb3VyY2UgKyByZXNubzsKIAogCWlm IChkZXYtPmlzX3ZpcnRmbikgewpAQCAtNjYsMTQgKzY1LDE2IEBAIHN0YXRpYyB2b2lkIHBjaV9z dGRfdXBkYXRlX3Jlc291cmNlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCByZXNubykKIAllbHNl CiAJCW1hc2sgPSAodTMyKVBDSV9CQVNFX0FERFJFU1NfTUVNX01BU0s7CiAKLQlyZWcgPSBwY2lf cmVzb3VyY2VfYmFyKGRldiwgcmVzbm8sICZ0eXBlKTsKLQlpZiAoIXJlZykKLQkJcmV0dXJuOwot CWlmICh0eXBlICE9IHBjaV9iYXJfdW5rbm93bikgeworCWlmIChyZXNubyA8IFBDSV9ST01fUkVT T1VSQ0UpIHsKKwkJcmVnID0gUENJX0JBU0VfQUREUkVTU18wICsgNCAqIHJlc25vOworCX0gZWxz ZSBpZiAocmVzbm8gPT0gUENJX1JPTV9SRVNPVVJDRSkgewogCQlpZiAoIShyZXMtPmZsYWdzICYg SU9SRVNPVVJDRV9ST01fRU5BQkxFKSkKIAkJCXJldHVybjsKKworCQlyZWcgPSBkZXYtPnJvbV9i YXNlX3JlZzsKIAkJbmV3IHw9IFBDSV9ST01fQUREUkVTU19FTkFCTEU7Ci0JfQorCX0gZWxzZQor CQlyZXR1cm47CiAKIAkvKgogCSAqIFdlIGNhbid0IHVwZGF0ZSBhIDY0LWJpdCBCQVIgYXRvbWlj YWxseSwgc28gd2hlbiBwb3NzaWJsZSwKLS0gCjIuMS4wCgoKRnJvbSBlZDA5ZDIxMWQyOGUyNjBl ODFiODU3ZTE5MzNlNDNhM2YyMzBjZjM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBC am9ybiBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPgpEYXRlOiBGcmksIDE3IE1hciAyMDE3 IDAwOjQ4OjIzICswMDAwClN1YmplY3Q6IFtQQVRDSCAwNTUvMTEyXSBQQ0k6IEFkZCBjb21tZW50 cyBhYm91dCBST00gQkFSIHVwZGF0aW5nCgpbIFVwc3RyZWFtIGNvbW1pdCAwYjQ1N2RkZTNjZjhi N2M3NmE2MGY4ZTk2MGYyMWJiZDRhYmRjNDE2IF0KCnBjaV91cGRhdGVfcmVzb3VyY2UoKSB1cGRh dGVzIGEgaGFyZHdhcmUgQkFSIHNvIGl0cyBhZGRyZXNzIG1hdGNoZXMgdGhlCmtlcm5lbCdzIHN0 cnVjdCByZXNvdXJjZSBVTkxFU1MgaXQncyBhIGRpc2FibGVkIFJPTSBCQVIuICBXZSBvbmx5IHVw ZGF0ZQp0aG9zZSB3aGVuIHdlIGVuYWJsZSB0aGUgUk9NLgoKSXQncyBub3Qgb2J2aW91cyBmcm9t IHRoZSBjb2RlIHdoeSBST00gQkFScyBzaG91bGQgYmUgaGFuZGxlZCBzcGVjaWFsbHkuCkFwcGFy ZW50bHkgdGhlcmUgYXJlIE1hdHJveCBkZXZpY2VzIHdpdGggZGVmZWN0aXZlIFJPTSBCQVJzIHRo YXQgcmVhZCBhcwp6ZXJvIHdoZW4gZGlzYWJsZWQuICBUaGF0IG1lYW5zIHRoYXQgaWYgcGNpX2Vu YWJsZV9yb20oKSByZWFkcyB0aGUgZGlzYWJsZWQKQkFSLCBzZXRzIFBDSV9ST01fQUREUkVTU19F TkFCTEUgKHdpdGhvdXQgcmUtaW5zZXJ0aW5nIHRoZSBhZGRyZXNzKSwgYW5kCndyaXRlcyBpdCBi YWNrLCBpdCB3b3VsZCBlbmFibGUgdGhlIFJPTSBhdCBhZGRyZXNzIHplcm8uCgpBZGQgY29tbWVu dHMgYW5kIHJlZmVyZW5jZXMgdG8gZXhwbGFpbiB3aHkgd2UgY2FuJ3QgbWFrZSB0aGUgY29kZSBs b29rIG1vcmUKcmF0aW9uYWwuCgpUaGUgY29kZSBjaGFuZ2VzIGFyZSBmcm9tIDc1NTUyOGM4NjBi MCAoIklnbm9yZSBkaXNhYmxlZCBST00gcmVzb3VyY2VzIGF0CnNldHVwIikgYW5kIDgwODVjZTA4 NGMwZiAoIltQQVRDSF0gRml4IFBDSSBST00gbWFwcGluZyIpLgoKTGluazogaHR0cHM6Ly9sa21s Lm9yZy9sa21sLzIwMDUvOC8zMC8xMzgKU2lnbmVkLW9mZi1ieTogQmpvcm4gSGVsZ2FhcyA8Ymhl bGdhYXNAZ29vZ2xlLmNvbT4KUmV2aWV3ZWQtYnk6IEdhdmluIFNoYW4gPGd3c2hhbkBsaW51eC52 bmV0LmlibS5jb20+ClNpZ25lZC1vZmYtYnk6IFNhc2hhIExldmluIDxhbGV4YW5kZXIubGV2aW5A dmVyaXpvbi5jb20+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxp bnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogZHJpdmVycy9wY2kvcm9tLmMgICAgICAgfCA1ICsrKysr CiBkcml2ZXJzL3BjaS9zZXR1cC1yZXMuYyB8IDYgKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDEx IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9yb20uYyBiL2RyaXZlcnMv cGNpL3JvbS5jCmluZGV4IDA2NjYzZDMuLmI2ZWRiMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNp L3JvbS5jCisrKyBiL2RyaXZlcnMvcGNpL3JvbS5jCkBAIC0zNSw2ICszNSwxMSBAQCBpbnQgcGNp X2VuYWJsZV9yb20oc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAJaWYgKHJlcy0+ZmxhZ3MgJiBJT1JF U09VUkNFX1JPTV9TSEFET1cpCiAJCXJldHVybiAwOwogCisJLyoKKwkgKiBJZGVhbGx5IHBjaV91 cGRhdGVfcmVzb3VyY2UoKSB3b3VsZCB1cGRhdGUgdGhlIFJPTSBCQVIgYWRkcmVzcywKKwkgKiBh bmQgd2Ugd291bGQgb25seSBzZXQgdGhlIGVuYWJsZSBiaXQgaGVyZS4gIEJ1dCBhcHBhcmVudGx5 IHNvbWUKKwkgKiBkZXZpY2VzIGhhdmUgYnVnZ3kgUk9NIEJBUnMgdGhhdCByZWFkIGFzIHplcm8g d2hlbiBkaXNhYmxlZC4KKwkgKi8KIAlwY2liaW9zX3Jlc291cmNlX3RvX2J1cyhwZGV2LT5idXMs ICZyZWdpb24sIHJlcyk7CiAJcGNpX3JlYWRfY29uZmlnX2R3b3JkKHBkZXYsIHBkZXYtPnJvbV9i YXNlX3JlZywgJnJvbV9hZGRyKTsKIAlyb21fYWRkciAmPSB+UENJX1JPTV9BRERSRVNTX01BU0s7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9zZXR1cC1yZXMuYyBiL2RyaXZlcnMvcGNpL3NldHVw LXJlcy5jCmluZGV4IDE4MmQwZjAuLmJkNmZjYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3Nl dHVwLXJlcy5jCisrKyBiL2RyaXZlcnMvcGNpL3NldHVwLXJlcy5jCkBAIC02OCw2ICs2OCwxMiBA QCBzdGF0aWMgdm9pZCBwY2lfc3RkX3VwZGF0ZV9yZXNvdXJjZShzdHJ1Y3QgcGNpX2RldiAqZGV2 LCBpbnQgcmVzbm8pCiAJaWYgKHJlc25vIDwgUENJX1JPTV9SRVNPVVJDRSkgewogCQlyZWcgPSBQ Q0lfQkFTRV9BRERSRVNTXzAgKyA0ICogcmVzbm87CiAJfSBlbHNlIGlmIChyZXNubyA9PSBQQ0lf Uk9NX1JFU09VUkNFKSB7CisKKwkJLyoKKwkJICogQXBwYXJlbnRseSBzb21lIE1hdHJveCBkZXZp Y2VzIGhhdmUgUk9NIEJBUnMgdGhhdCByZWFkCisJCSAqIGFzIHplcm8gd2hlbiBkaXNhYmxlZCwg c28gZG9uJ3QgdXBkYXRlIFJPTSBCQVJzIHVubGVzcworCQkgKiB0aGV5J3JlIGVuYWJsZWQuICBT ZWUgaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMDUvOC8zMC8xMzguCisJCSAqLwogCQlpZiAoIShy ZXMtPmZsYWdzICYgSU9SRVNPVVJDRV9ST01fRU5BQkxFKSkKIAkJCXJldHVybjsKIAotLSAKMi4x LjAKCgpGcm9tIGJiNDc5MjQ2YmIzZWU3ZDhmNGIxY2FhZGEwZGI5YTI2OGU5NThmMWUgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJqb3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5j b20+CkRhdGU6IEZyaSwgMTcgTWFyIDIwMTcgMDA6NDg6MjMgKzAwMDAKU3ViamVjdDogW1BBVENI IDA1Ni8xMTJdIFBDSTogRGVjb3VwbGUgSU9SRVNPVVJDRV9ST01fRU5BQkxFIGFuZAogUENJX1JP TV9BRERSRVNTX0VOQUJMRQoKWyBVcHN0cmVhbSBjb21taXQgN2E2ZDMxMmI1MGU2M2Y1OThmNWI1 OTE0YzRmZDIxODc4YWMyYjU5NSBdCgpSZW1vdmUgdGhlIGFzc3VtcHRpb24gdGhhdCBJT1JFU09V UkNFX1JPTV9FTkFCTEUgPT0gUENJX1JPTV9BRERSRVNTX0VOQUJMRS4KUENJX1JPTV9BRERSRVNT X0VOQUJMRSBpcyB0aGUgUk9NIGVuYWJsZSBiaXQgZGVmaW5lZCBieSB0aGUgUENJIHNwZWMsIHNv IGlmCndlJ3JlIHJlYWRpbmcgb3Igd3JpdGluZyBhIEJBUiByZWdpc3RlciB2YWx1ZSwgdGhhdCdz IHdoYXQgd2Ugc2hvdWxkIHVzZS4KSU9SRVNPVVJDRV9ST01fRU5BQkxFIGlzIGEgY29ycmVzcG9u ZGluZyBiaXQgaW4gc3RydWN0IHJlc291cmNlIGZsYWdzLgoKU2lnbmVkLW9mZi1ieTogQmpvcm4g SGVsZ2FhcyA8YmhlbGdhYXNAZ29vZ2xlLmNvbT4KUmV2aWV3ZWQtYnk6IEdhdmluIFNoYW4gPGd3 c2hhbkBsaW51eC52bmV0LmlibS5jb20+ClNpZ25lZC1vZmYtYnk6IFNhc2hhIExldmluIDxhbGV4 YW5kZXIubGV2aW5AdmVyaXpvbi5jb20+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1h biA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogZHJpdmVycy9wY2kvcHJvYmUuYyB8 IDMgKystCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcHJvYmUuYyBiL2RyaXZlcnMvcGNpL3Byb2JlLmMKaW5k ZXggMzAwNzcwYy4uZDI2NmQ4MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvcHJvYmUuYworKysg Yi9kcml2ZXJzL3BjaS9wcm9iZS5jCkBAIC0yMjcsNyArMjI3LDggQEAgaW50IF9fcGNpX3JlYWRf YmFzZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBlbnVtIHBjaV9iYXJfdHlwZSB0eXBlLAogCQkJbWFz azY0ID0gKHUzMilQQ0lfQkFTRV9BRERSRVNTX01FTV9NQVNLOwogCQl9CiAJfSBlbHNlIHsKLQkJ cmVzLT5mbGFncyB8PSAobCAmIElPUkVTT1VSQ0VfUk9NX0VOQUJMRSk7CisJCWlmIChsICYgUENJ X1JPTV9BRERSRVNTX0VOQUJMRSkKKwkJCXJlcy0+ZmxhZ3MgfD0gSU9SRVNPVVJDRV9ST01fRU5B QkxFOwogCQlsNjQgPSBsICYgUENJX1JPTV9BRERSRVNTX01BU0s7CiAJCXN6NjQgPSBzeiAmIFBD SV9ST01fQUREUkVTU19NQVNLOwogCQltYXNrNjQgPSAodTMyKVBDSV9ST01fQUREUkVTU19NQVNL OwotLSAKMi4xLjAKCgpGcm9tIGEzODAxMmRjNjllYjJmYjFhNjYwYmJjODhlOThjODgyYjVjZjJm Y2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJqb3JuIEhlbGdhYXMgPGJoZWxnYWFz QGdvb2dsZS5jb20+CkRhdGU6IEZyaSwgMTcgTWFyIDIwMTcgMDA6NDg6MjQgKzAwMDAKU3ViamVj dDogW1BBVENIIDA1Ny8xMTJdIFBDSTogRG9uJ3QgdXBkYXRlIFZGIEJBUnMgd2hpbGUgVkYgbWVt b3J5IHNwYWNlIGlzCiBlbmFibGVkCgpbIFVwc3RyZWFtIGNvbW1pdCA1NDZiYTlmOGYyMmY3MWIw MjAyYjZiYTg5NjdiZTVjYzZkYWU0ZTIxIF0KCklmIHdlIHVwZGF0ZSBhIFZGIEJBUiB3aGlsZSBp dCdzIGVuYWJsZWQsIHRoZXJlIGFyZSB0d28gcG90ZW50aWFsIHByb2JsZW1zOgoKICAxKSBBbnkg ZHJpdmVyIHRoYXQncyB1c2luZyB0aGUgVkYgaGFzIGEgY2FjaGVkIEJBUiB2YWx1ZSB0aGF0IGlz IHN0YWxlCiAgICAgYWZ0ZXIgdGhlIHVwZGF0ZSwgYW5kCgogIDIpIFdlIGNhbid0IHVwZGF0ZSA2 NC1iaXQgQkFScyBhdG9taWNhbGx5LCBzbyB0aGUgaW50ZXJtZWRpYXRlIHN0YXRlCiAgICAgKG5l dyBsb3dlciBkd29yZCB3aXRoIG9sZCB1cHBlciBkd29yZCkgbWF5IGNvbmZsaWN0IHdpdGggYW5v dGhlcgogICAgIGRldmljZSwgYW5kIGFuIGFjY2VzcyBieSBhIGRyaXZlciB1bnJlbGF0ZWQgdG8g dGhlIFZGIG1heSBjYXVzZSBhIGJ1cwogICAgIGVycm9yLgoKV2FybiBhYm91dCBhdHRlbXB0cyB0 byB1cGRhdGUgVkYgQkFScyB3aGlsZSB0aGV5IGFyZSBlbmFibGVkLiAgVGhpcyBpcyBhCnByb2dy YW1taW5nIGVycm9yLCBzbyB1c2UgZGV2X1dBUk4oKSB0byBnZXQgYSBiYWNrdHJhY2UuCgpTaWdu ZWQtb2ZmLWJ5OiBCam9ybiBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPgpSZXZpZXdlZC1i eTogR2F2aW4gU2hhbiA8Z3dzaGFuQGxpbnV4LnZuZXQuaWJtLmNvbT4KU2lnbmVkLW9mZi1ieTog U2FzaGEgTGV2aW4gPGFsZXhhbmRlci5sZXZpbkB2ZXJpem9uLmNvbT4KU2lnbmVkLW9mZi1ieTog R3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBkcml2 ZXJzL3BjaS9pb3YuYyB8IDggKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMo KykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9pb3YuYyBiL2RyaXZlcnMvcGNpL2lvdi5jCmlu ZGV4IDNmYjhkMmEuLjgyNTVkMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2lvdi5jCisrKyBi L2RyaXZlcnMvcGNpL2lvdi5jCkBAIC01NjYsNiArNTY2LDcgQEAgdm9pZCBwY2lfaW92X3VwZGF0 ZV9yZXNvdXJjZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgcmVzbm8pCiAJc3RydWN0IHJlc291 cmNlICpyZXMgPSBkZXYtPnJlc291cmNlICsgcmVzbm87CiAJaW50IHZmX2JhciA9IHJlc25vIC0g UENJX0lPVl9SRVNPVVJDRVM7CiAJc3RydWN0IHBjaV9idXNfcmVnaW9uIHJlZ2lvbjsKKwl1MTYg Y21kOwogCXUzMiBuZXc7CiAJaW50IHJlZzsKIApAQCAtNTc3LDYgKzU3OCwxMyBAQCB2b2lkIHBj aV9pb3ZfdXBkYXRlX3Jlc291cmNlKHN0cnVjdCBwY2lfZGV2ICpkZXYsIGludCByZXNubykKIAlp ZiAoIWlvdikKIAkJcmV0dXJuOwogCisJcGNpX3JlYWRfY29uZmlnX3dvcmQoZGV2LCBpb3YtPnBv cyArIFBDSV9TUklPVl9DVFJMLCAmY21kKTsKKwlpZiAoKGNtZCAmIFBDSV9TUklPVl9DVFJMX1ZG RSkgJiYgKGNtZCAmIFBDSV9TUklPVl9DVFJMX01TRSkpIHsKKwkJZGV2X1dBUk4oJmRldi0+ZGV2 LCAiY2FuJ3QgdXBkYXRlIGVuYWJsZWQgVkYgQkFSJWQgJXBSXG4iLAorCQkJIHZmX2JhciwgcmVz KTsKKwkJcmV0dXJuOworCX0KKwogCS8qCiAJICogSWdub3JlIHVuaW1wbGVtZW50ZWQgQkFScywg dW51c2VkIHJlc291cmNlIHNsb3RzIGZvciA2NC1iaXQKIAkgKiBCQVJzLCBhbmQgbm9uLW1vdmFi bGUgcmVzb3VyY2VzLCBlLmcuLCB0aG9zZSBkZXNjcmliZWQgdmlhCi0tIAoyLjEuMAoKCkZyb20g NzRjY2U4MTFhNGI2MGQ2NGM1YzMwNDk2ZjMyNmVjZDE4YTcyYTZiMiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogQmpvcm4gSGVsZ2FhcyA8YmhlbGdhYXNAZ29vZ2xlLmNvbT4KRGF0ZTog RnJpLCAxNyBNYXIgMjAxNyAwMDo0ODoyNCArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMDU4LzExMl0g UENJOiBVcGRhdGUgQkFScyB1c2luZyBwcm9wZXJ0eSBiaXRzIGFwcHJvcHJpYXRlIGZvcgogdHlw ZQoKWyBVcHN0cmVhbSBjb21taXQgNDVkMDA0ZjRhZmVmZGQ4ZDc5OTE2ZWU2ZDk3YTllY2Q5NGJi MWZmZSBdCgpUaGUgQkFSIHByb3BlcnR5IGJpdHMgKDAtMyBmb3IgbWVtb3J5IEJBUnMsIDAtMSBm b3IgSS9PIEJBUnMpIGFyZSBzdXBwb3NlZAp0byBiZSByZWFkLW9ubHksIGJ1dCB3ZSBkbyBzYXZl IHRoZW0gaW4gcmVzLT5mbGFncyBhbmQgaW5jbHVkZSB0aGVtIHdoZW4KdXBkYXRpbmcgdGhlIEJB Ui4KCk1hc2sgdGhlIEkvTyBwcm9wZXJ0eSBiaXRzIHdpdGggflBDSV9CQVNFX0FERFJFU1NfSU9f TUFTSyAoMHgzKSBpbnN0ZWFkIG9mClBDSV9SRUdJT05fRkxBR19NQVNLICgweGYpIHRvIG1ha2Ug aXQgb2J2aW91cyB0aGF0IHdlIGNhbid0IGNvcnJ1cHQgYml0cwoyLTMgb2YgSS9PIGFkZHJlc3Nl cy4KClVzZSBQQ0lfUk9NX0FERFJFU1NfTUFTSyBmb3IgUk9NIEJBUnMuICBUaGlzIG1lYW5zIHdl J2xsIG9ubHkgY2hlY2sgdGhlIHRvcAoyMSBiaXRzIChpbnN0ZWFkIG9mIHRoZSAyOCBiaXRzIHdl IHVzZWQgdG8gY2hlY2spIG9mIGEgUk9NIEJBUiB0byBzZWUgaWYKdGhlIHVwZGF0ZSB3YXMgc3Vj Y2Vzc2Z1bC4KClNpZ25lZC1vZmYtYnk6IEJqb3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5j b20+ClNpZ25lZC1vZmYtYnk6IFNhc2hhIExldmluIDxhbGV4YW5kZXIubGV2aW5AdmVyaXpvbi5j b20+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRh dGlvbi5vcmc+Ci0tLQogZHJpdmVycy9wY2kvc2V0dXAtcmVzLmMgfCAxMSArKysrKysrKy0tLQog MSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3BjaS9zZXR1cC1yZXMuYyBiL2RyaXZlcnMvcGNpL3NldHVwLXJlcy5jCmlu ZGV4IGJkNmZjYTkuLjhhNzMyMmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3NldHVwLXJlcy5j CisrKyBiL2RyaXZlcnMvcGNpL3NldHVwLXJlcy5jCkBAIC01OCwxMiArNTgsMTcgQEAgc3RhdGlj IHZvaWQgcGNpX3N0ZF91cGRhdGVfcmVzb3VyY2Uoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IHJl c25vKQogCQlyZXR1cm47CiAKIAlwY2liaW9zX3Jlc291cmNlX3RvX2J1cyhkZXYtPmJ1cywgJnJl Z2lvbiwgcmVzKTsKKwluZXcgPSByZWdpb24uc3RhcnQ7CiAKLQluZXcgPSByZWdpb24uc3RhcnQg fCAocmVzLT5mbGFncyAmIFBDSV9SRUdJT05fRkxBR19NQVNLKTsKLQlpZiAocmVzLT5mbGFncyAm IElPUkVTT1VSQ0VfSU8pCisJaWYgKHJlcy0+ZmxhZ3MgJiBJT1JFU09VUkNFX0lPKSB7CiAJCW1h c2sgPSAodTMyKVBDSV9CQVNFX0FERFJFU1NfSU9fTUFTSzsKLQllbHNlCisJCW5ldyB8PSByZXMt PmZsYWdzICYgflBDSV9CQVNFX0FERFJFU1NfSU9fTUFTSzsKKwl9IGVsc2UgaWYgKHJlc25vID09 IFBDSV9ST01fUkVTT1VSQ0UpIHsKKwkJbWFzayA9ICh1MzIpUENJX1JPTV9BRERSRVNTX01BU0s7 CisJfSBlbHNlIHsKIAkJbWFzayA9ICh1MzIpUENJX0JBU0VfQUREUkVTU19NRU1fTUFTSzsKKwkJ bmV3IHw9IHJlcy0+ZmxhZ3MgJiB+UENJX0JBU0VfQUREUkVTU19NRU1fTUFTSzsKKwl9CiAKIAlp ZiAocmVzbm8gPCBQQ0lfUk9NX1JFU09VUkNFKSB7CiAJCXJlZyA9IFBDSV9CQVNFX0FERFJFU1Nf MCArIDQgKiByZXNubzsKLS0gCjIuMS4wCgoKRnJvbSAzZDU4NDQ0ZGVhODFiYTA1NTZmZmNiMzU2 YTE5ZmMyZDIyNGQ0ZWFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCam9ybiBIZWxn YWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPgpEYXRlOiBGcmksIDE3IE1hciAyMDE3IDAwOjQ4OjI0 ICswMDAwClN1YmplY3Q6IFtQQVRDSCAwNTkvMTEyXSBQQ0k6IElnbm9yZSBCQVIgdXBkYXRlcyBv biB2aXJ0dWFsIGZ1bmN0aW9ucwoKWyBVcHN0cmVhbSBjb21taXQgNjM4ODBiMjMwYTRhZjUwMmM1 NmRkZTNkNDU4ODYzNGM3MGM2NjAwNiBdCgpWRiBCQVJzIGFyZSByZWFkLW9ubHkgemVybywgc28g dXBkYXRpbmcgVkYgQkFScyB3aWxsIG5vdCBoYXZlIGFueSBlZmZlY3QuClNlZSB0aGUgU1ItSU9W IHNwZWMgcjEuMSwgc2VjIDMuNC4xLjExLgoKV2UgYWxyZWFkeSBpZ25vcmUgdGhlc2UgdXBkYXRl cyBiZWNhdXNlIG9mIDcwNjc1ZTBiNmExYSAoIlBDSTogRG9uJ3QgdHJ5IHRvCnJlc3RvcmUgVkYg QkFScyIpOyB0aGlzIG1lcmVseSByZXN0cnVjdHVyZXMgaXQgc2xpZ2h0bHkgdG8gbWFrZSBpdCBl YXNpZXIKdG8gc3BsaXQgdXBkYXRlcyBmb3Igc3RhbmRhcmQgYW5kIFNSLUlPViBCQVJzLgoKU2ln bmVkLW9mZi1ieTogQmpvcm4gSGVsZ2FhcyA8YmhlbGdhYXNAZ29vZ2xlLmNvbT4KUmV2aWV3ZWQt Ynk6IEdhdmluIFNoYW4gPGd3c2hhbkBsaW51eC52bmV0LmlibS5jb20+ClNpZ25lZC1vZmYtYnk6 IFNhc2hhIExldmluIDxhbGV4YW5kZXIubGV2aW5AdmVyaXpvbi5jb20+ClNpZ25lZC1vZmYtYnk6 IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogZHJp dmVycy9wY2kvcGNpLmMgICAgICAgfCA0IC0tLS0KIGRyaXZlcnMvcGNpL3NldHVwLXJlcy5jIHwg NSArKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNpLmMgYi9kcml2ZXJzL3BjaS9wY2kuYwppbmRl eCAxZmMyY2Y0Li42OTIyOTY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9wY2kuYworKysgYi9k cml2ZXJzL3BjaS9wY2kuYwpAQCAtNTY0LDEwICs1NjQsNiBAQCBzdGF0aWMgdm9pZCBwY2lfcmVz dG9yZV9iYXJzKHN0cnVjdCBwY2lfZGV2ICpkZXYpCiB7CiAJaW50IGk7CiAKLQkvKiBQZXIgU1It SU9WIHNwZWMgMy40LjEuMTEsIFZGIEJBUnMgYXJlIFJPIHplcm8gKi8KLQlpZiAoZGV2LT5pc192 aXJ0Zm4pCi0JCXJldHVybjsKLQogCWZvciAoaSA9IDA7IGkgPCBQQ0lfQlJJREdFX1JFU09VUkNF UzsgaSsrKQogCQlwY2lfdXBkYXRlX3Jlc291cmNlKGRldiwgaSk7CiB9CmRpZmYgLS1naXQgYS9k cml2ZXJzL3BjaS9zZXR1cC1yZXMuYyBiL2RyaXZlcnMvcGNpL3NldHVwLXJlcy5jCmluZGV4IDhh NzMyMmMuLjRiYzU4OWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3NldHVwLXJlcy5jCisrKyBi L2RyaXZlcnMvcGNpL3NldHVwLXJlcy5jCkBAIC0zNCwxMCArMzQsOSBAQCBzdGF0aWMgdm9pZCBw Y2lfc3RkX3VwZGF0ZV9yZXNvdXJjZShzdHJ1Y3QgcGNpX2RldiAqZGV2LCBpbnQgcmVzbm8pCiAJ aW50IHJlZzsKIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlcyA9IGRldi0+cmVzb3VyY2UgKyByZXNubzsK IAotCWlmIChkZXYtPmlzX3ZpcnRmbikgewotCQlkZXZfd2FybigmZGV2LT5kZXYsICJjYW4ndCB1 cGRhdGUgVkYgQkFSJWRcbiIsIHJlc25vKTsKKwkvKiBQZXIgU1ItSU9WIHNwZWMgMy40LjEuMTEs IFZGIEJBUnMgYXJlIFJPIHplcm8gKi8KKwlpZiAoZGV2LT5pc192aXJ0Zm4pCiAJCXJldHVybjsK LQl9CiAKIAkvKgogCSAqIElnbm9yZSByZXNvdXJjZXMgZm9yIHVuaW1wbGVtZW50ZWQgQkFScyBh bmQgdW51c2VkIHJlc291cmNlIHNsb3RzCi0tIAoyLjEuMAoKCkZyb20gZmI3YzUyMWExNDYwYWQ0 NmExNzg1OTI3NGQ3OWYzMDU5OWJkYjVlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog R2F2aW4gU2hhbiA8Z3dzaGFuQGxpbnV4LnZuZXQuaWJtLmNvbT4KRGF0ZTogRnJpLCAxNyBNYXIg MjAxNyAwMDo0ODoyNSArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMDYwLzExMl0gUENJOiBEbyBhbnkg VkYgQkFSIHVwZGF0ZXMgYmVmb3JlIGVuYWJsaW5nIHRoZSBCQVJzCgpbIFVwc3RyZWFtIGNvbW1p dCBmNDBlYzNjNzQ4YzY5MTJmNjI2NmM1NmE3Zjc5OTJkZTYxYjI1NWVkIF0KClByZXZpb3VzbHkg d2UgZW5hYmxlZCBWRnMgYW5kIGVuYWJsZSB0aGVpciBtZW1vcnkgc3BhY2UgYmVmb3JlIGNhbGxp bmcKcGNpYmlvc19zcmlvdl9lbmFibGUoKS4gIEJ1dCBwY2liaW9zX3NyaW92X2VuYWJsZSgpIG1h eSB1cGRhdGUgdGhlIFZGIEJBUnM6CmZvciBleGFtcGxlLCBvbiBQUEMgUG93ZXJOViB3ZSBtYXkg Y2hhbmdlIHRoZW0gdG8gbWFuYWdlIHRoZSBhc3NvY2lhdGlvbiBvZgpWRnMgdG8gUEVzLgoKQmVj YXVzZSA2NC1iaXQgQkFScyBjYW5ub3QgYmUgdXBkYXRlZCBhdG9taWNhbGx5LCBpdCdzIHVuc2Fm ZSB0byB1cGRhdGUKdGhlbSB3aGlsZSB0aGV5J3JlIGVuYWJsZWQuICBUaGUgaGFsZi11cGRhdGVk IHN0YXRlIG1heSBjb25mbGljdCB3aXRoIG90aGVyCmRldmljZXMgaW4gdGhlIHN5c3RlbS4KCkNh bGwgcGNpYmlvc19zcmlvdl9lbmFibGUoKSBiZWZvcmUgZW5hYmxpbmcgdGhlIFZGcyBzbyBhbnkg QkFSIHVwZGF0ZXMKaGFwcGVuIHdoaWxlIHRoZSBWRiBCQVJzIGFyZSBkaXNhYmxlZC4KCltiaGVs Z2FhczogY2hhbmdlbG9nXQpUZXN0ZWQtYnk6IENhcm9sIFNvdG8gPGNsc290b0B1cy5pYm0uY29t PgpTaWduZWQtb2ZmLWJ5OiBHYXZpbiBTaGFuIDxnd3NoYW5AbGludXgudm5ldC5pYm0uY29tPgpT aWduZWQtb2ZmLWJ5OiBCam9ybiBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPgoKU2lnbmVk LW9mZi1ieTogU2FzaGEgTGV2aW4gPGFsZXhhbmRlci5sZXZpbkB2ZXJpem9uLmNvbT4KU2lnbmVk LW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4K LS0tCiBkcml2ZXJzL3BjaS9pb3YuYyB8IDE0ICsrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv cGNpL2lvdi5jIGIvZHJpdmVycy9wY2kvaW92LmMKaW5kZXggODI1NWQyOC4uNDcyMjc4MiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9wY2kvaW92LmMKKysrIGIvZHJpdmVycy9wY2kvaW92LmMKQEAgLTMw NiwxMyArMzA2LDYgQEAgc3RhdGljIGludCBzcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKmRl diwgaW50IG5yX3ZpcnRmbikKIAkJCXJldHVybiByYzsKIAl9CiAKLQlwY2lfaW92X3NldF9udW12 ZnMoZGV2LCBucl92aXJ0Zm4pOwotCWlvdi0+Y3RybCB8PSBQQ0lfU1JJT1ZfQ1RSTF9WRkUgfCBQ Q0lfU1JJT1ZfQ1RSTF9NU0U7Ci0JcGNpX2NmZ19hY2Nlc3NfbG9jayhkZXYpOwotCXBjaV93cml0 ZV9jb25maWdfd29yZChkZXYsIGlvdi0+cG9zICsgUENJX1NSSU9WX0NUUkwsIGlvdi0+Y3RybCk7 Ci0JbXNsZWVwKDEwMCk7Ci0JcGNpX2NmZ19hY2Nlc3NfdW5sb2NrKGRldik7Ci0KIAlpb3YtPmlu aXRpYWxfVkZzID0gaW5pdGlhbDsKIAlpZiAobnJfdmlydGZuIDwgaW5pdGlhbCkKIAkJaW5pdGlh bCA9IG5yX3ZpcnRmbjsKQEAgLTMyMyw2ICszMTYsMTMgQEAgc3RhdGljIGludCBzcmlvdl9lbmFi bGUoc3RydWN0IHBjaV9kZXYgKmRldiwgaW50IG5yX3ZpcnRmbikKIAkJZ290byBlcnJfcGNpYmlv czsKIAl9CiAKKwlwY2lfaW92X3NldF9udW12ZnMoZGV2LCBucl92aXJ0Zm4pOworCWlvdi0+Y3Ry bCB8PSBQQ0lfU1JJT1ZfQ1RSTF9WRkUgfCBQQ0lfU1JJT1ZfQ1RSTF9NU0U7CisJcGNpX2NmZ19h Y2Nlc3NfbG9jayhkZXYpOworCXBjaV93cml0ZV9jb25maWdfd29yZChkZXYsIGlvdi0+cG9zICsg UENJX1NSSU9WX0NUUkwsIGlvdi0+Y3RybCk7CisJbXNsZWVwKDEwMCk7CisJcGNpX2NmZ19hY2Nl c3NfdW5sb2NrKGRldik7CisKIAlmb3IgKGkgPSAwOyBpIDwgaW5pdGlhbDsgaSsrKSB7CiAJCXJj ID0gcGNpX2lvdl9hZGRfdmlydGZuKGRldiwgaSwgMCk7CiAJCWlmIChyYykKLS0gCjIuMS4wCgoK RnJvbSAzZTVhN2Y1Yjk1ZjAwYmY2OWU5M2EzYjcwMTkzNTVjZWQ4MDdjM2QwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgRmFsY29uIDx0bGZhbGNvbkBsaW51eC52bmV0Lmli bS5jb20+CkRhdGU6IEZyaSwgMTcgTWFyIDIwMTcgMDA6NDg6MjUgKzAwMDAKU3ViamVjdDogW1BB VENIIDA2MS8xMTJdIGlibXZldGg6IGNhbGN1bGF0ZSBnc29fc2VncyBmb3IgbGFyZ2UgcGFja2V0 cwoKWyBVcHN0cmVhbSBjb21taXQgOTRhY2YxNjRkYzhmMTE4NGU4ZDA3MzdiZTcxMjUxMzRjMjcw MWRiZSBdCgpJbmNsdWRlIGNhbGN1bGF0aW9ucyB0byBjb21wdXRlIHRoZSBudW1iZXIgb2Ygc2Vn bWVudHMKdGhhdCBjb21wcmlzZSBhbiBhZ2dyZWdhdGVkIGxhcmdlIHBhY2tldC4KClNpZ25lZC1v ZmYtYnk6IFRob21hcyBGYWxjb24gPHRsZmFsY29uQGxpbnV4LnZuZXQuaWJtLmNvbT4KUmV2aWV3 ZWQtYnk6IE1hcmNlbG8gUmljYXJkbyBMZWl0bmVyIDxtYXJjZWxvLmxlaXRuZXJAZ21haWwuY29t PgpSZXZpZXdlZC1ieTogSm9uYXRoYW4gTWF4d2VsbCA8am1heHdlbGwzN0BnbWFpbC5jb20+ClNp Z25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KU2lnbmVk LW9mZi1ieTogU2FzaGEgTGV2aW4gPGFsZXhhbmRlci5sZXZpbkB2ZXJpem9uLmNvbT4KU2lnbmVk LW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4K LS0tCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jIHwgMTIgKysrKysrKysrKy0t CiAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jIGIvZHJpdmVycy9uZXQv ZXRoZXJuZXQvaWJtL2libXZldGguYwppbmRleCBhMzYwMjJiLi4wM2RjYTczIDEwMDY0NAotLS0g YS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdmV0aC5jCisrKyBiL2RyaXZlcnMvbmV0L2V0 aGVybmV0L2libS9pYm12ZXRoLmMKQEAgLTExODEsNyArMTE4MSw5IEBAIHN0YXRpYyBuZXRkZXZf dHhfdCBpYm12ZXRoX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAogc3RhdGljIHZv aWQgaWJtdmV0aF9yeF9tc3NfaGVscGVyKHN0cnVjdCBza19idWZmICpza2IsIHUxNiBtc3MsIGlu dCBscmdfcGt0KQogeworCXN0cnVjdCB0Y3BoZHIgKnRjcGg7CiAJaW50IG9mZnNldCA9IDA7CisJ aW50IGhkcl9sZW47CiAKIAkvKiBvbmx5IFRDUCBwYWNrZXRzIHdpbGwgYmUgYWdncmVnYXRlZCAq LwogCWlmIChza2ItPnByb3RvY29sID09IGh0b25zKEVUSF9QX0lQKSkgewpAQCAtMTIwOCwxNCAr MTIxMCwyMCBAQCBzdGF0aWMgdm9pZCBpYm12ZXRoX3J4X21zc19oZWxwZXIoc3RydWN0IHNrX2J1 ZmYgKnNrYiwgdTE2IG1zcywgaW50IGxyZ19wa3QpCiAJLyogaWYgbXNzIGlzIG5vdCBzZXQgdGhy b3VnaCBMYXJnZSBQYWNrZXQgYml0L21zcyBpbiByeCBidWZmZXIsCiAJICogZXhwZWN0IHRoYXQg dGhlIG1zcyB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIHRjcCBoZWFkZXIgY2hlY2tzdW0uCiAJICov CisJdGNwaCA9IChzdHJ1Y3QgdGNwaGRyICopKHNrYi0+ZGF0YSArIG9mZnNldCk7CiAJaWYgKGxy Z19wa3QpIHsKIAkJc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6ZSA9IG1zczsKIAl9IGVsc2UgaWYg KG9mZnNldCkgewotCQlzdHJ1Y3QgdGNwaGRyICp0Y3BoID0gKHN0cnVjdCB0Y3BoZHIgKikoc2ti LT5kYXRhICsgb2Zmc2V0KTsKLQogCQlza2Jfc2hpbmZvKHNrYiktPmdzb19zaXplID0gbnRvaHMo dGNwaC0+Y2hlY2spOwogCQl0Y3BoLT5jaGVjayA9IDA7CiAJfQorCisJaWYgKHNrYl9zaGluZm8o c2tiKS0+Z3NvX3NpemUpIHsKKwkJaGRyX2xlbiA9IG9mZnNldCArIHRjcGgtPmRvZmYgKiA0Owor CQlza2Jfc2hpbmZvKHNrYiktPmdzb19zZWdzID0KKwkJCQlESVZfUk9VTkRfVVAoc2tiLT5sZW4g LSBoZHJfbGVuLAorCQkJCQkgICAgIHNrYl9zaGluZm8oc2tiKS0+Z3NvX3NpemUpOworCX0KIH0K IAogc3RhdGljIGludCBpYm12ZXRoX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQg YnVkZ2V0KQotLSAKMi4xLjAKCgpGcm9tIDNjMGNiYjQ3YThkNjM0OTc4MjI1YTUyNzY0NjkxMDk2 YTdmYzE0NjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFZpdGFseSBLdXpuZXRzb3Yg PHZrdXpuZXRzQHJlZGhhdC5jb20+CkRhdGU6IEZyaSwgMTcgTWFyIDIwMTcgMDA6NDg6MjYgKzAw MDAKU3ViamVjdDogW1BBVENIIDA2Mi8xMTJdIERyaXZlcnM6IGh2OiByaW5nX2J1ZmZlcjogY291 bnQgb24gd3JhcCBhcm91bmQKIG1hcHBpbmdzIGluIGdldF9uZXh0X3BrdF9yYXcoKSAodjIpCgpb IFVwc3RyZWFtIGNvbW1pdCBmYTMyZmY2NTc2NjIzNjE2YzE3NTE1NjJlZGFlZDhjMTY0Y2E1MTk5 IF0KCldpdGggd3JhcCBhcm91bmQgbWFwcGluZ3MgaW4gcGxhY2Ugd2UgY2FuIGFsd2F5cyBwcm92 aWRlIGRyaXZlcnMgd2l0aApkaXJlY3QgbGlua3MgdG8gcGFja2V0cyBvbiB0aGUgcmluZyBidWZm ZXIsIGV2ZW4gd2hlbiB0aGV5IHdyYXAgYXJvdW5kLgpEbyB0aGUgcmVxdWlyZWQgdXBkYXRlcyB0 byBnZXRfbmV4dF9wa3RfcmF3KCkvcHV0X3BrdF9yYXcoKQoKVGhlIGZpcnN0IHZlcnNpb24gb2Yg dGhpcyBjb21taXQgd2FzIHJldmVydGVkICg2NWE1MzJmM2Q1MGEpIHRvIGRlYWwgd2l0aApjcm9z cy10cmVlIG1lcmdlIGlzc3VlcyB3aGljaCBhcmUgKGhvcGVmdWxseSkgcmVzb2x2ZWQgbm93LgoK U2lnbmVkLW9mZi1ieTogVml0YWx5IEt1em5ldHNvdiA8dmt1em5ldHNAcmVkaGF0LmNvbT4KU2ln bmVkLW9mZi1ieTogSy4gWS4gU3Jpbml2YXNhbiA8a3lzQG1pY3Jvc29mdC5jb20+ClRlc3RlZC1i eTogRGV4dWFuIEN1aSA8ZGVjdWlAbWljcm9zb2Z0LmNvbT4KU2lnbmVkLW9mZi1ieTogR3JlZyBL cm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTog U2FzaGEgTGV2aW4gPGFsZXhhbmRlci5sZXZpbkB2ZXJpem9uLmNvbT4KU2lnbmVkLW9mZi1ieTog R3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBpbmNs dWRlL2xpbnV4L2h5cGVydi5oIHwgMzIgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0K IDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L2h5cGVydi5oIGIvaW5jbHVkZS9saW51eC9oeXBlcnYuaApp bmRleCAxOTJlZWYyZi4uZDU5NmEwNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9oeXBlcnYu aAorKysgYi9pbmNsdWRlL2xpbnV4L2h5cGVydi5oCkBAIC0xNTQ4LDMxICsxNTQ4LDIzIEBAIHN0 YXRpYyBpbmxpbmUgc3RydWN0IHZtcGFja2V0X2Rlc2NyaXB0b3IgKgogZ2V0X25leHRfcGt0X3Jh dyhzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqY2hhbm5lbCkKIHsKIAlzdHJ1Y3QgaHZfcmluZ19idWZm ZXJfaW5mbyAqcmluZ19pbmZvID0gJmNoYW5uZWwtPmluYm91bmQ7Ci0JdTMyIHJlYWRfbG9jID0g cmluZ19pbmZvLT5wcml2X3JlYWRfaW5kZXg7CisJdTMyIHByaXZfcmVhZF9sb2MgPSByaW5nX2lu Zm8tPnByaXZfcmVhZF9pbmRleDsKIAl2b2lkICpyaW5nX2J1ZmZlciA9IGh2X2dldF9yaW5nX2J1 ZmZlcihyaW5nX2luZm8pOwotCXN0cnVjdCB2bXBhY2tldF9kZXNjcmlwdG9yICpjdXJfZGVzYzsK LQl1MzIgcGFja2V0bGVuOwogCXUzMiBkc2l6ZSA9IHJpbmdfaW5mby0+cmluZ19kYXRhc2l6ZTsK LQl1MzIgZGVsdGEgPSByZWFkX2xvYyAtIHJpbmdfaW5mby0+cmluZ19idWZmZXItPnJlYWRfaW5k ZXg7CisJLyoKKwkgKiBkZWx0YSBpcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHdoYXQgaXMgYXZh aWxhYmxlIHRvIHJlYWQgYW5kCisJICogd2hhdCB3YXMgYWxyZWFkeSBjb25zdW1lZCBpbiBwbGFj ZS4gV2UgY29tbWl0IHJlYWQgaW5kZXggYWZ0ZXIKKwkgKiB0aGUgd2hvbGUgYmF0Y2ggaXMgcHJv Y2Vzc2VkLgorCSAqLworCXUzMiBkZWx0YSA9IHByaXZfcmVhZF9sb2MgPj0gcmluZ19pbmZvLT5y aW5nX2J1ZmZlci0+cmVhZF9pbmRleCA/CisJCXByaXZfcmVhZF9sb2MgLSByaW5nX2luZm8tPnJp bmdfYnVmZmVyLT5yZWFkX2luZGV4IDoKKwkJKGRzaXplIC0gcmluZ19pbmZvLT5yaW5nX2J1ZmZl ci0+cmVhZF9pbmRleCkgKyBwcml2X3JlYWRfbG9jOwogCXUzMiBieXRlc19hdmFpbF90b3JlYWQg PSAoaHZfZ2V0X2J5dGVzX3RvX3JlYWQocmluZ19pbmZvKSAtIGRlbHRhKTsKIAogCWlmIChieXRl c19hdmFpbF90b3JlYWQgPCBzaXplb2Yoc3RydWN0IHZtcGFja2V0X2Rlc2NyaXB0b3IpKQogCQly ZXR1cm4gTlVMTDsKIAotCWlmICgocmVhZF9sb2MgKyBzaXplb2YoKmN1cl9kZXNjKSkgPiBkc2l6 ZSkKLQkJcmV0dXJuIE5VTEw7Ci0KLQljdXJfZGVzYyA9IHJpbmdfYnVmZmVyICsgcmVhZF9sb2M7 Ci0JcGFja2V0bGVuID0gY3VyX2Rlc2MtPmxlbjggPDwgMzsKLQotCS8qCi0JICogSWYgdGhlIHBh Y2tldCB1bmRlciBjb25zaWRlcmF0aW9uIGlzIHdyYXBwaW5nIGFyb3VuZCwKLQkgKiByZXR1cm4g ZmFpbHVyZS4KLQkgKi8KLQlpZiAoKHJlYWRfbG9jICsgcGFja2V0bGVuICsgVk1CVVNfUEtUX1RS QUlMRVIpID4gKGRzaXplIC0gMSkpCi0JCXJldHVybiBOVUxMOwotCi0JcmV0dXJuIGN1cl9kZXNj OworCXJldHVybiByaW5nX2J1ZmZlciArIHByaXZfcmVhZF9sb2M7CiB9CiAKIC8qCkBAIC0xNTg0 LDE2ICsxNTc2LDE0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBwdXRfcGt0X3JhdyhzdHJ1Y3Qgdm1i dXNfY2hhbm5lbCAqY2hhbm5lbCwKIAkJCQlzdHJ1Y3Qgdm1wYWNrZXRfZGVzY3JpcHRvciAqZGVz YykKIHsKIAlzdHJ1Y3QgaHZfcmluZ19idWZmZXJfaW5mbyAqcmluZ19pbmZvID0gJmNoYW5uZWwt PmluYm91bmQ7Ci0JdTMyIHJlYWRfbG9jID0gcmluZ19pbmZvLT5wcml2X3JlYWRfaW5kZXg7CiAJ dTMyIHBhY2tldGxlbiA9IGRlc2MtPmxlbjggPDwgMzsKIAl1MzIgZHNpemUgPSByaW5nX2luZm8t PnJpbmdfZGF0YXNpemU7CiAKLQlpZiAoKHJlYWRfbG9jICsgcGFja2V0bGVuICsgVk1CVVNfUEtU X1RSQUlMRVIpID4gZHNpemUpCi0JCUJVRygpOwogCS8qCiAJICogSW5jbHVkZSB0aGUgcGFja2V0 IHRyYWlsZXIuCiAJICovCiAJcmluZ19pbmZvLT5wcml2X3JlYWRfaW5kZXggKz0gcGFja2V0bGVu ICsgVk1CVVNfUEtUX1RSQUlMRVI7CisJcmluZ19pbmZvLT5wcml2X3JlYWRfaW5kZXggJT0gZHNp emU7CiB9CiAKIC8qCi0tIAoyLjEuMAoKCkZyb20gNWQ4YjNlNzU1OTc0NDk0Mjk2ZTRhMmM1ODc0 YzA0YWJhOTUzMjU2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQWxleGV5IEthcmRh c2hldnNraXkgPGFpa0BvemxhYnMucnU+CkRhdGU6IEZyaSwgMTcgTWFyIDIwMTcgMDA6NDg6MjYg KzAwMDAKU3ViamVjdDogW1BBVENIIDA2My8xMTJdIHZmaW8vc3BhcHI6IFBvc3Rwb25lIGFsbG9j YXRpb24gb2YgdXNlcnNwYWNlIHZlcnNpb24KIG9mIFRDRSB0YWJsZQoKWyBVcHN0cmVhbSBjb21t aXQgMzk3MDFlNTZmNWYxNmVhMGNmOGZjOWU4NDcyZTY0NWY4ZGU5MWQyMyBdCgpUaGUgaW9tbXVf dGFibGUgc3RydWN0IG1hbmFnZXMgYSBoYXJkd2FyZSBUQ0UgdGFibGUgYW5kIGEgdm1hbGxvYydk CnRhYmxlIHdpdGggY29ycmVzcG9uZGluZyB1c2Vyc3BhY2UgYWRkcmVzc2VzLiBCb3RoIGFyZSBh bGxvY2F0ZWQgd2hlbgp0aGUgZGVmYXVsdCBETUEgd2luZG93IGlzIGNyZWF0ZWQgYW5kIHRoaXMg aGFwcGVucyB3aGVuIHRoZSB2ZXJ5IGZpcnN0Cmdyb3VwIGlzIGF0dGFjaGVkIHRvIGEgY29udGFp bmVyLgoKQXMgd2UgYXJlIGdvaW5nIHRvIGFsbG93IHRoZSB1c2Vyc3BhY2UgdG8gY29uZmlndXJl IGNvbnRhaW5lciBpbiBvbmUKbWVtb3J5IGNvbnRleHQgYW5kIHBhcyBjb250YWluZXIgZmQgdG8g YW5vdGhlciwgd2UgaGF2ZSB0byBwb3N0cG9uZXMKc3VjaCBhbGxvY2F0aW9ucyB0aWxsIGEgY29u dGFpbmVyIGZkIGlzIHBhc3NlZCB0byB0aGUgZGVzdGluYXRpb24KdXNlciBwcm9jZXNzIHNvIHdl IHdvdWxkIGFjY291bnQgbG9ja2VkIG1lbW9yeSBsaW1pdCBhZ2FpbnN0IHRoZSBhY3R1YWwKY29u dGFpbmVyIHVzZXIgY29uc3RyYWluc3RzLgoKVGhpcyBwb3N0cG9uZXMgdGhlIGl0X3VzZXJzcGFj ZSBhcnJheSBhbGxvY2F0aW9uIHRpbGwgaXQgaXMgdXNlZCBmaXJzdAp0aW1lIGZvciBtYXBwaW5n LiBUaGUgdW5tYXBwaW5nIHBhdGNoIGFscmVhZHkgY2hlY2tzIGlmIHRoZSBhcnJheSBpcwphbGxv Y2F0ZWQuCgpTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgS2FyZGFzaGV2c2tpeSA8YWlrQG96bGFicy5y dT4KUmV2aWV3ZWQtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1 PgpBY2tlZC1ieTogQWxleCBXaWxsaWFtc29uIDxhbGV4LndpbGxpYW1zb25AcmVkaGF0LmNvbT4K U2lnbmVkLW9mZi1ieTogTWljaGFlbCBFbGxlcm1hbiA8bXBlQGVsbGVybWFuLmlkLmF1PgpTaWdu ZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8YWxleGFuZGVyLmxldmluQHZlcml6b24uY29tPgpTaWdu ZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3Jn PgotLS0KIGRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3NwYXByX3RjZS5jIHwgMjAgKysrKysrKy0t LS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3NwYXByX3RjZS5jIGIv ZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfc3BhcHJfdGNlLmMKaW5kZXggODAzNzhkZC4uMmE2ZTEz OCAxMDA2NDQKLS0tIGEvZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfc3BhcHJfdGNlLmMKKysrIGIv ZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfc3BhcHJfdGNlLmMKQEAgLTUwOSw2ICs1MDksMTIgQEAg c3RhdGljIGxvbmcgdGNlX2lvbW11X2J1aWxkX3YyKHN0cnVjdCB0Y2VfY29udGFpbmVyICpjb250 YWluZXIsCiAJdW5zaWduZWQgbG9uZyBocGE7CiAJZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGly dG1wOwogCisJaWYgKCF0YmwtPml0X3VzZXJzcGFjZSkgeworCQlyZXQgPSB0Y2VfaW9tbXVfdXNl cnNwYWNlX3ZpZXdfYWxsb2ModGJsKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfQor CiAJZm9yIChpID0gMDsgaSA8IHBhZ2VzOyArK2kpIHsKIAkJc3RydWN0IG1tX2lvbW11X3RhYmxl X2dyb3VwX21lbV90ICptZW0gPSBOVUxMOwogCQl1bnNpZ25lZCBsb25nICpwdWEgPSBJT01NVV9U QUJMRV9VU0VSU1BBQ0VfRU5UUlkodGJsLApAQCAtNTgyLDE1ICs1ODgsNiBAQCBzdGF0aWMgbG9u ZyB0Y2VfaW9tbXVfY3JlYXRlX3RhYmxlKHN0cnVjdCB0Y2VfY29udGFpbmVyICpjb250YWluZXIs CiAJV0FSTl9PTighcmV0ICYmICEoKnB0YmwpLT5pdF9vcHMtPmZyZWUpOwogCVdBUk5fT04oIXJl dCAmJiAoKCpwdGJsKS0+aXRfYWxsb2NhdGVkX3NpemUgIT0gdGFibGVfc2l6ZSkpOwogCi0JaWYg KCFyZXQgJiYgY29udGFpbmVyLT52MikgewotCQlyZXQgPSB0Y2VfaW9tbXVfdXNlcnNwYWNlX3Zp ZXdfYWxsb2MoKnB0YmwpOwotCQlpZiAocmV0KQotCQkJKCpwdGJsKS0+aXRfb3BzLT5mcmVlKCpw dGJsKTsKLQl9Ci0KLQlpZiAocmV0KQotCQlkZWNyZW1lbnRfbG9ja2VkX3ZtKHRhYmxlX3NpemUg Pj4gUEFHRV9TSElGVCk7Ci0KIAlyZXR1cm4gcmV0OwogfQogCkBAIC0xMDYyLDEwICsxMDU5LDcg QEAgc3RhdGljIGludCB0Y2VfaW9tbXVfdGFrZV9vd25lcnNoaXAoc3RydWN0IHRjZV9jb250YWlu ZXIgKmNvbnRhaW5lciwKIAkJaWYgKCF0YmwgfHwgIXRibC0+aXRfbWFwKQogCQkJY29udGludWU7 CiAKLQkJcmMgPSB0Y2VfaW9tbXVfdXNlcnNwYWNlX3ZpZXdfYWxsb2ModGJsKTsKLQkJaWYgKCFy YykKLQkJCXJjID0gaW9tbXVfdGFrZV9vd25lcnNoaXAodGJsKTsKLQorCQlyYyA9IGlvbW11X3Rh a2Vfb3duZXJzaGlwKHRibCk7CiAJCWlmIChyYykgewogCQkJZm9yIChqID0gMDsgaiA8IGk7ICsr aikKIAkJCQlpb21tdV9yZWxlYXNlX293bmVyc2hpcCgKLS0gCjIuMS4wCgoKRnJvbSAyYmE3ZWYy MTgyMGVjNWNiMjM3NjA3ODc3NGUyNGQ2ZjZhNzM4NmIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiBBbGV4ZXkgS2FyZGFzaGV2c2tpeSA8YWlrQG96bGFicy5ydT4KRGF0ZTogRnJpLCAx NyBNYXIgMjAxNyAwMDo0ODoyNiArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMDY0LzExMl0gcG93ZXJw Yy9pb21tdTogUGFzcyBtbV9zdHJ1Y3QgdG8gaW5pdC9jbGVhbnVwIGhlbHBlcnMKClsgVXBzdHJl YW0gY29tbWl0IDg4ZjU0YTM1ODFlYjlkZWFhM2JkMWFhZGU0MGFlZjI2NmQ3ODIzODUgXQoKV2Ug YXJlIGdvaW5nIHRvIGdldCByaWQgb2YgQGN1cnJlbnQgcmVmZXJlbmNlcyBpbiBtbXVfY29udGV4 dF9ib29zM3M2NC5jCmFuZCBjYWNoZSBtbV9zdHJ1Y3QgaW4gdGhlIFZGSU8gY29udGFpbmVyLiBT aW5jZSBtbV9jb250ZXh0X3QgZG9lcyBub3QKaGF2ZSByZWZlcmVuY2UgY291bnRpbmcsIHdlIHdp bGwgYmUgdXNpbmcgbW1fc3RydWN0IHdoaWNoIGRvZXMgaGF2ZQp0aGUgcmVmZXJlbmNlIGNvdW50 ZXIuCgpUaGlzIGNoYW5nZXMgbW1faW9tbXVfaW5pdC9tbV9pb21tdV9jbGVhbnVwIHRvIHJlY2Vp dmUgbW1fc3RydWN0IHJhdGhlcgp0aGFuIG1tX2NvbnRleHRfdCAod2hpY2ggaXMgZW1iZWRkZWQg aW50byBtbSkuCgpUaGlzIHNob3VsZCBub3QgY2F1c2UgYW55IGJlaGF2aW9yYWwgY2hhbmdlLgoK U2lnbmVkLW9mZi1ieTogQWxleGV5IEthcmRhc2hldnNraXkgPGFpa0BvemxhYnMucnU+ClJldmll d2VkLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KU2lnbmVk LW9mZi1ieTogTWljaGFlbCBFbGxlcm1hbiA8bXBlQGVsbGVybWFuLmlkLmF1PgpTaWduZWQtb2Zm LWJ5OiBTYXNoYSBMZXZpbiA8YWxleGFuZGVyLmxldmluQHZlcml6b24uY29tPgpTaWduZWQtb2Zm LWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0K IGFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tbXVfY29udGV4dC5oIHwgNCArKy0tCiBhcmNoL3Bv d2VycGMva2VybmVsL3NldHVwLWNvbW1vbi5jICAgICB8IDIgKy0KIGFyY2gvcG93ZXJwYy9tbS9t bXVfY29udGV4dF9ib29rM3M2NC5jIHwgNCArKy0tCiBhcmNoL3Bvd2VycGMvbW0vbW11X2NvbnRl eHRfaW9tbXUuYyAgICB8IDkgKysrKystLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlv bnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUv YXNtL21tdV9jb250ZXh0LmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW11X2NvbnRleHQu aAppbmRleCA1YzQ1MTE0Li40MjQ4NDRiIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVk ZS9hc20vbW11X2NvbnRleHQuaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW11X2Nv bnRleHQuaApAQCAtMjMsOCArMjMsOCBAQCBleHRlcm4gYm9vbCBtbV9pb21tdV9wcmVyZWdpc3Rl cmVkKHZvaWQpOwogZXh0ZXJuIGxvbmcgbW1faW9tbXVfZ2V0KHVuc2lnbmVkIGxvbmcgdWEsIHVu c2lnbmVkIGxvbmcgZW50cmllcywKIAkJc3RydWN0IG1tX2lvbW11X3RhYmxlX2dyb3VwX21lbV90 ICoqcG1lbSk7CiBleHRlcm4gbG9uZyBtbV9pb21tdV9wdXQoc3RydWN0IG1tX2lvbW11X3RhYmxl X2dyb3VwX21lbV90ICptZW0pOwotZXh0ZXJuIHZvaWQgbW1faW9tbXVfaW5pdChtbV9jb250ZXh0 X3QgKmN0eCk7Ci1leHRlcm4gdm9pZCBtbV9pb21tdV9jbGVhbnVwKG1tX2NvbnRleHRfdCAqY3R4 KTsKK2V4dGVybiB2b2lkIG1tX2lvbW11X2luaXQoc3RydWN0IG1tX3N0cnVjdCAqbW0pOworZXh0 ZXJuIHZvaWQgbW1faW9tbXVfY2xlYW51cChzdHJ1Y3QgbW1fc3RydWN0ICptbSk7CiBleHRlcm4g c3RydWN0IG1tX2lvbW11X3RhYmxlX2dyb3VwX21lbV90ICptbV9pb21tdV9sb29rdXAodW5zaWdu ZWQgbG9uZyB1YSwKIAkJdW5zaWduZWQgbG9uZyBzaXplKTsKIGV4dGVybiBzdHJ1Y3QgbW1faW9t bXVfdGFibGVfZ3JvdXBfbWVtX3QgKm1tX2lvbW11X2ZpbmQodW5zaWduZWQgbG9uZyB1YSwKZGlm ZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXAtY29tbW9uLmMgYi9hcmNoL3Bvd2Vy cGMva2VybmVsL3NldHVwLWNvbW1vbi5jCmluZGV4IDI3MGVlMzAuLmY1MTZhYzUgMTAwNjQ0Ci0t LSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXAtY29tbW9uLmMKKysrIGIvYXJjaC9wb3dlcnBj L2tlcm5lbC9zZXR1cC1jb21tb24uYwpAQCAtOTE1LDcgKzkxNSw3IEBAIHZvaWQgX19pbml0IHNl dHVwX2FyY2goY2hhciAqKmNtZGxpbmVfcCkKIAlpbml0X21tLmNvbnRleHQucHRlX2ZyYWcgPSBO VUxMOwogI2VuZGlmCiAjaWZkZWYgQ09ORklHX1NQQVBSX1RDRV9JT01NVQotCW1tX2lvbW11X2lu aXQoJmluaXRfbW0uY29udGV4dCk7CisJbW1faW9tbXVfaW5pdCgmaW5pdF9tbSk7CiAjZW5kaWYK IAlpcnFzdGFja19lYXJseV9pbml0KCk7CiAJZXhjX2x2bF9lYXJseV9pbml0KCk7CmRpZmYgLS1n aXQgYS9hcmNoL3Bvd2VycGMvbW0vbW11X2NvbnRleHRfYm9vazNzNjQuYyBiL2FyY2gvcG93ZXJw Yy9tbS9tbXVfY29udGV4dF9ib29rM3M2NC5jCmluZGV4IGIxMTRmOGIuLmFkODI3MzUgMTAwNjQ0 Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS9tbXVfY29udGV4dF9ib29rM3M2NC5jCisrKyBiL2FyY2gv cG93ZXJwYy9tbS9tbXVfY29udGV4dF9ib29rM3M2NC5jCkBAIC0xMTUsNyArMTE1LDcgQEAgaW50 IGluaXRfbmV3X2NvbnRleHQoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCBtbV9zdHJ1 Y3QgKm1tKQogCW1tLT5jb250ZXh0LnB0ZV9mcmFnID0gTlVMTDsKICNlbmRpZgogI2lmZGVmIENP TkZJR19TUEFQUl9UQ0VfSU9NTVUKLQltbV9pb21tdV9pbml0KCZtbS0+Y29udGV4dCk7CisJbW1f aW9tbXVfaW5pdChtbSk7CiAjZW5kaWYKIAlyZXR1cm4gMDsKIH0KQEAgLTE2MCw3ICsxNjAsNyBA QCBzdGF0aWMgaW5saW5lIHZvaWQgZGVzdHJveV9wYWdldGFibGVfcGFnZShzdHJ1Y3QgbW1fc3Ry dWN0ICptbSkKIHZvaWQgZGVzdHJveV9jb250ZXh0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQogewog I2lmZGVmIENPTkZJR19TUEFQUl9UQ0VfSU9NTVUKLQltbV9pb21tdV9jbGVhbnVwKCZtbS0+Y29u dGV4dCk7CisJbW1faW9tbXVfY2xlYW51cChtbSk7CiAjZW5kaWYKIAogI2lmZGVmIENPTkZJR19Q UENfSUNTV1gKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9tbXVfY29udGV4dF9pb21tdS5j IGIvYXJjaC9wb3dlcnBjL21tL21tdV9jb250ZXh0X2lvbW11LmMKaW5kZXggZTBmMWMzMy4uYWQy ZTU3NSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL21tL21tdV9jb250ZXh0X2lvbW11LmMKKysr IGIvYXJjaC9wb3dlcnBjL21tL21tdV9jb250ZXh0X2lvbW11LmMKQEAgLTM3MywxNiArMzczLDE3 IEBAIHZvaWQgbW1faW9tbXVfbWFwcGVkX2RlYyhzdHJ1Y3QgbW1faW9tbXVfdGFibGVfZ3JvdXBf bWVtX3QgKm1lbSkKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKG1tX2lvbW11X21hcHBlZF9kZWMpOwog Ci12b2lkIG1tX2lvbW11X2luaXQobW1fY29udGV4dF90ICpjdHgpCit2b2lkIG1tX2lvbW11X2lu aXQoc3RydWN0IG1tX3N0cnVjdCAqbW0pCiB7Ci0JSU5JVF9MSVNUX0hFQURfUkNVKCZjdHgtPmlv bW11X2dyb3VwX21lbV9saXN0KTsKKwlJTklUX0xJU1RfSEVBRF9SQ1UoJm1tLT5jb250ZXh0Lmlv bW11X2dyb3VwX21lbV9saXN0KTsKIH0KIAotdm9pZCBtbV9pb21tdV9jbGVhbnVwKG1tX2NvbnRl eHRfdCAqY3R4KQordm9pZCBtbV9pb21tdV9jbGVhbnVwKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKQog ewogCXN0cnVjdCBtbV9pb21tdV90YWJsZV9ncm91cF9tZW1fdCAqbWVtLCAqdG1wOwogCi0JbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKG1lbSwgdG1wLCAmY3R4LT5pb21tdV9ncm91cF9tZW1fbGlz dCwgbmV4dCkgeworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtZW0sIHRtcCwgJm1tLT5jb250 ZXh0LmlvbW11X2dyb3VwX21lbV9saXN0LAorCQkJbmV4dCkgewogCQlsaXN0X2RlbF9yY3UoJm1l bS0+bmV4dCk7CiAJCW1tX2lvbW11X2RvX2ZyZWUobWVtKTsKIAl9Ci0tIAoyLjEuMAoKCkZyb20g NWIzNDY2NmJkMmU3MDA0NmY5ODgwZGIwMTExOWM3ZDkwOGUwODg4ZCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogQWxleGV5IEthcmRhc2hldnNraXkgPGFpa0BvemxhYnMucnU+CkRhdGU6 IEZyaSwgMTcgTWFyIDIwMTcgMDA6NDg6MjcgKzAwMDAKU3ViamVjdDogW1BBVENIIDA2NS8xMTJd IHBvd2VycGMvaW9tbXU6IFN0b3AgdXNpbmcgQGN1cnJlbnQgaW4gbW1faW9tbXVfeHh4CgpbIFVw c3RyZWFtIGNvbW1pdCBkN2JhZWU2OTAxYjM0YzQ4OTVlYjc4ZWZkYmYxM2E0OTA3OWQ3NDA0IF0K ClRoaXMgY2hhbmdlcyBtbV9pb21tdV94eHggaGVscGVycyB0byB0YWtlIG1tX3N0cnVjdCBhcyBh IHBhcmFtZXRlcgppbnN0ZWFkIG9mIGdldHRpbmcgaXQgZnJvbSBAY3VycmVudCB3aGljaCBpbiBz b21lIHNpdHVhdGlvbnMgbWF5Cm5vdCBoYXZlIGEgdmFsaWQgcmVmZXJlbmNlIHRvIG1tLgoKVGhp cyBjaGFuZ2VzIGhlbHBlcnMgdG8gcmVjZWl2ZSBAbW0gYW5kIG1vdmVzIGFsbCByZWZlcmVuY2Vz IHRvIEBjdXJyZW50CnRvIHRoZSBjYWxsZXIsIGluY2x1ZGluZyBjaGVja3MgZm9yICFjdXJyZW50 IGFuZCAhY3VycmVudC0+bW07CmNoZWNrcyBpbiBtbV9pb21tdV9wcmVyZWdpc3RlcmVkKCkgYXJl IHJlbW92ZWQgYXMgdGhlcmUgaXMgbm8gY2FsbGVyCnlldC4KClRoaXMgbW92ZXMgdGhlIG1tX2lv bW11X2FkanVzdF9sb2NrZWRfdm0oKSBjYWxsIHRvIHRoZSBjYWxsZXIgYXMKaXQgcmVjZWl2ZXMg bW1faW9tbXVfdGFibGVfZ3JvdXBfbWVtX3QgYnV0IGl0IG5lZWRzIG1tLgoKVGhpcyBzaG91bGQg Y2F1c2Ugbm8gYmVoYXZpb3JhbCBjaGFuZ2UuCgpTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgS2FyZGFz aGV2c2tpeSA8YWlrQG96bGFicy5ydT4KUmV2aWV3ZWQtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRA Z2lic29uLmRyb3BiZWFyLmlkLmF1PgpBY2tlZC1ieTogQWxleCBXaWxsaWFtc29uIDxhbGV4Lndp bGxpYW1zb25AcmVkaGF0LmNvbT4KU2lnbmVkLW9mZi1ieTogTWljaGFlbCBFbGxlcm1hbiA8bXBl QGVsbGVybWFuLmlkLmF1PgpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8YWxleGFuZGVyLmxl dmluQHZlcml6b24uY29tPgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdr aEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0KIGFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tbXVf Y29udGV4dC5oIHwgMTYgKysrKysrLS0tLS0tCiBhcmNoL3Bvd2VycGMvbW0vbW11X2NvbnRleHRf aW9tbXUuYyAgICB8IDQ2ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZl cnMvdmZpby92ZmlvX2lvbW11X3NwYXByX3RjZS5jICAgIHwgMTQgKysrKysrKystLS0KIDMgZmls ZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmggYi9hcmNoL3Bvd2VycGMv aW5jbHVkZS9hc20vbW11X2NvbnRleHQuaAppbmRleCA0MjQ4NDRiLi5iOWUzZjBhIDEwMDY0NAot LS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaAorKysgYi9hcmNoL3Bv d2VycGMvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaApAQCAtMTksMTYgKzE5LDE4IEBAIGV4dGVy biB2b2lkIGRlc3Ryb3lfY29udGV4dChzdHJ1Y3QgbW1fc3RydWN0ICptbSk7CiBzdHJ1Y3QgbW1f aW9tbXVfdGFibGVfZ3JvdXBfbWVtX3Q7CiAKIGV4dGVybiBpbnQgaXNvbGF0ZV9scnVfcGFnZShz dHJ1Y3QgcGFnZSAqcGFnZSk7CS8qIGZyb20gaW50ZXJuYWwuaCAqLwotZXh0ZXJuIGJvb2wgbW1f aW9tbXVfcHJlcmVnaXN0ZXJlZCh2b2lkKTsKLWV4dGVybiBsb25nIG1tX2lvbW11X2dldCh1bnNp Z25lZCBsb25nIHVhLCB1bnNpZ25lZCBsb25nIGVudHJpZXMsCitleHRlcm4gYm9vbCBtbV9pb21t dV9wcmVyZWdpc3RlcmVkKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKTsKK2V4dGVybiBsb25nIG1tX2lv bW11X2dldChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKKwkJdW5zaWduZWQgbG9uZyB1YSwgdW5zaWdu ZWQgbG9uZyBlbnRyaWVzLAogCQlzdHJ1Y3QgbW1faW9tbXVfdGFibGVfZ3JvdXBfbWVtX3QgKipw bWVtKTsKLWV4dGVybiBsb25nIG1tX2lvbW11X3B1dChzdHJ1Y3QgbW1faW9tbXVfdGFibGVfZ3Jv dXBfbWVtX3QgKm1lbSk7CitleHRlcm4gbG9uZyBtbV9pb21tdV9wdXQoc3RydWN0IG1tX3N0cnVj dCAqbW0sCisJCXN0cnVjdCBtbV9pb21tdV90YWJsZV9ncm91cF9tZW1fdCAqbWVtKTsKIGV4dGVy biB2b2lkIG1tX2lvbW11X2luaXQoc3RydWN0IG1tX3N0cnVjdCAqbW0pOwogZXh0ZXJuIHZvaWQg bW1faW9tbXVfY2xlYW51cChzdHJ1Y3QgbW1fc3RydWN0ICptbSk7Ci1leHRlcm4gc3RydWN0IG1t X2lvbW11X3RhYmxlX2dyb3VwX21lbV90ICptbV9pb21tdV9sb29rdXAodW5zaWduZWQgbG9uZyB1 YSwKLQkJdW5zaWduZWQgbG9uZyBzaXplKTsKLWV4dGVybiBzdHJ1Y3QgbW1faW9tbXVfdGFibGVf Z3JvdXBfbWVtX3QgKm1tX2lvbW11X2ZpbmQodW5zaWduZWQgbG9uZyB1YSwKLQkJdW5zaWduZWQg bG9uZyBlbnRyaWVzKTsKK2V4dGVybiBzdHJ1Y3QgbW1faW9tbXVfdGFibGVfZ3JvdXBfbWVtX3Qg Km1tX2lvbW11X2xvb2t1cChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKKwkJdW5zaWduZWQgbG9uZyB1 YSwgdW5zaWduZWQgbG9uZyBzaXplKTsKK2V4dGVybiBzdHJ1Y3QgbW1faW9tbXVfdGFibGVfZ3Jv dXBfbWVtX3QgKm1tX2lvbW11X2ZpbmQoc3RydWN0IG1tX3N0cnVjdCAqbW0sCisJCXVuc2lnbmVk IGxvbmcgdWEsIHVuc2lnbmVkIGxvbmcgZW50cmllcyk7CiBleHRlcm4gbG9uZyBtbV9pb21tdV91 YV90b19ocGEoc3RydWN0IG1tX2lvbW11X3RhYmxlX2dyb3VwX21lbV90ICptZW0sCiAJCXVuc2ln bmVkIGxvbmcgdWEsIHVuc2lnbmVkIGxvbmcgKmhwYSk7CiBleHRlcm4gbG9uZyBtbV9pb21tdV9t YXBwZWRfaW5jKHN0cnVjdCBtbV9pb21tdV90YWJsZV9ncm91cF9tZW1fdCAqbWVtKTsKZGlmZiAt LWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9tbXVfY29udGV4dF9pb21tdS5jIGIvYXJjaC9wb3dlcnBj L21tL21tdV9jb250ZXh0X2lvbW11LmMKaW5kZXggYWQyZTU3NS4uNGM2ZGIwOSAxMDA2NDQKLS0t IGEvYXJjaC9wb3dlcnBjL21tL21tdV9jb250ZXh0X2lvbW11LmMKKysrIGIvYXJjaC9wb3dlcnBj L21tL21tdV9jb250ZXh0X2lvbW11LmMKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIGxvbmcgbW1f aW9tbXVfYWRqdXN0X2xvY2tlZF92bShzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAl9CiAKIAlwcl9k ZWJ1ZygiWyVkXSBSTElNSVRfTUVNTE9DSyBIQVNINjQgJWMlbGQgJWxkLyVsZFxuIiwKLQkJCWN1 cnJlbnQtPnBpZCwKKwkJCWN1cnJlbnQgPyBjdXJyZW50LT5waWQgOiAwLAogCQkJaW5jciA/ICcr JyA6ICctJywKIAkJCW5wYWdlcyA8PCBQQUdFX1NISUZULAogCQkJbW0tPmxvY2tlZF92bSA8PCBQ QUdFX1NISUZULApAQCAtNjYsMTIgKzY2LDkgQEAgc3RhdGljIGxvbmcgbW1faW9tbXVfYWRqdXN0 X2xvY2tlZF92bShzdHJ1Y3QgbW1fc3RydWN0ICptbSwKIAlyZXR1cm4gcmV0OwogfQogCi1ib29s IG1tX2lvbW11X3ByZXJlZ2lzdGVyZWQodm9pZCkKK2Jvb2wgbW1faW9tbXVfcHJlcmVnaXN0ZXJl ZChzdHJ1Y3QgbW1fc3RydWN0ICptbSkKIHsKLQlpZiAoIWN1cnJlbnQgfHwgIWN1cnJlbnQtPm1t KQotCQlyZXR1cm4gZmFsc2U7Ci0KLQlyZXR1cm4gIWxpc3RfZW1wdHkoJmN1cnJlbnQtPm1tLT5j b250ZXh0LmlvbW11X2dyb3VwX21lbV9saXN0KTsKKwlyZXR1cm4gIWxpc3RfZW1wdHkoJm1tLT5j b250ZXh0LmlvbW11X2dyb3VwX21lbV9saXN0KTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKG1tX2lv bW11X3ByZXJlZ2lzdGVyZWQpOwogCkBAIC0xMjQsMTkgKzEyMSwxNiBAQCBzdGF0aWMgaW50IG1t X2lvbW11X21vdmVfcGFnZV9mcm9tX2NtYShzdHJ1Y3QgcGFnZSAqcGFnZSkKIAlyZXR1cm4gMDsK IH0KIAotbG9uZyBtbV9pb21tdV9nZXQodW5zaWduZWQgbG9uZyB1YSwgdW5zaWduZWQgbG9uZyBl bnRyaWVzLAorbG9uZyBtbV9pb21tdV9nZXQoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVk IGxvbmcgdWEsIHVuc2lnbmVkIGxvbmcgZW50cmllcywKIAkJc3RydWN0IG1tX2lvbW11X3RhYmxl X2dyb3VwX21lbV90ICoqcG1lbSkKIHsKIAlzdHJ1Y3QgbW1faW9tbXVfdGFibGVfZ3JvdXBfbWVt X3QgKm1lbTsKIAlsb25nIGksIGosIHJldCA9IDAsIGxvY2tlZF9lbnRyaWVzID0gMDsKIAlzdHJ1 Y3QgcGFnZSAqcGFnZSA9IE5VTEw7CiAKLQlpZiAoIWN1cnJlbnQgfHwgIWN1cnJlbnQtPm1tKQot CQlyZXR1cm4gLUVTUkNIOyAvKiBwcm9jZXNzIGV4aXRlZCAqLwotCiAJbXV0ZXhfbG9jaygmbWVt X2xpc3RfbXV0ZXgpOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UobWVtLCAmY3VycmVudC0+ bW0tPmNvbnRleHQuaW9tbXVfZ3JvdXBfbWVtX2xpc3QsCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9y Y3UobWVtLCAmbW0tPmNvbnRleHQuaW9tbXVfZ3JvdXBfbWVtX2xpc3QsCiAJCQluZXh0KSB7CiAJ CWlmICgobWVtLT51YSA9PSB1YSkgJiYgKG1lbS0+ZW50cmllcyA9PSBlbnRyaWVzKSkgewogCQkJ KyttZW0tPnVzZWQ7CkBAIC0xNTQsNyArMTQ4LDcgQEAgbG9uZyBtbV9pb21tdV9nZXQodW5zaWdu ZWQgbG9uZyB1YSwgdW5zaWduZWQgbG9uZyBlbnRyaWVzLAogCiAJfQogCi0JcmV0ID0gbW1faW9t bXVfYWRqdXN0X2xvY2tlZF92bShjdXJyZW50LT5tbSwgZW50cmllcywgdHJ1ZSk7CisJcmV0ID0g bW1faW9tbXVfYWRqdXN0X2xvY2tlZF92bShtbSwgZW50cmllcywgdHJ1ZSk7CiAJaWYgKHJldCkK IAkJZ290byB1bmxvY2tfZXhpdDsKIApAQCAtMjE1LDExICsyMDksMTEgQEAgbG9uZyBtbV9pb21t dV9nZXQodW5zaWduZWQgbG9uZyB1YSwgdW5zaWduZWQgbG9uZyBlbnRyaWVzLAogCW1lbS0+ZW50 cmllcyA9IGVudHJpZXM7CiAJKnBtZW0gPSBtZW07CiAKLQlsaXN0X2FkZF9yY3UoJm1lbS0+bmV4 dCwgJmN1cnJlbnQtPm1tLT5jb250ZXh0LmlvbW11X2dyb3VwX21lbV9saXN0KTsKKwlsaXN0X2Fk ZF9yY3UoJm1lbS0+bmV4dCwgJm1tLT5jb250ZXh0LmlvbW11X2dyb3VwX21lbV9saXN0KTsKIAog dW5sb2NrX2V4aXQ6CiAJaWYgKGxvY2tlZF9lbnRyaWVzICYmIHJldCkKLQkJbW1faW9tbXVfYWRq dXN0X2xvY2tlZF92bShjdXJyZW50LT5tbSwgbG9ja2VkX2VudHJpZXMsIGZhbHNlKTsKKwkJbW1f aW9tbXVfYWRqdXN0X2xvY2tlZF92bShtbSwgbG9ja2VkX2VudHJpZXMsIGZhbHNlKTsKIAogCW11 dGV4X3VubG9jaygmbWVtX2xpc3RfbXV0ZXgpOwogCkBAIC0yNjQsMTcgKzI1OCwxMyBAQCBzdGF0 aWMgdm9pZCBtbV9pb21tdV9mcmVlKHN0cnVjdCByY3VfaGVhZCAqaGVhZCkKIHN0YXRpYyB2b2lk IG1tX2lvbW11X3JlbGVhc2Uoc3RydWN0IG1tX2lvbW11X3RhYmxlX2dyb3VwX21lbV90ICptZW0p CiB7CiAJbGlzdF9kZWxfcmN1KCZtZW0tPm5leHQpOwotCW1tX2lvbW11X2FkanVzdF9sb2NrZWRf dm0oY3VycmVudC0+bW0sIG1lbS0+ZW50cmllcywgZmFsc2UpOwogCWNhbGxfcmN1KCZtZW0tPnJj dSwgbW1faW9tbXVfZnJlZSk7CiB9CiAKLWxvbmcgbW1faW9tbXVfcHV0KHN0cnVjdCBtbV9pb21t dV90YWJsZV9ncm91cF9tZW1fdCAqbWVtKQorbG9uZyBtbV9pb21tdV9wdXQoc3RydWN0IG1tX3N0 cnVjdCAqbW0sIHN0cnVjdCBtbV9pb21tdV90YWJsZV9ncm91cF9tZW1fdCAqbWVtKQogewogCWxv bmcgcmV0ID0gMDsKIAotCWlmICghY3VycmVudCB8fCAhY3VycmVudC0+bW0pCi0JCXJldHVybiAt RVNSQ0g7IC8qIHByb2Nlc3MgZXhpdGVkICovCi0KIAltdXRleF9sb2NrKCZtZW1fbGlzdF9tdXRl eCk7CiAKIAlpZiAobWVtLT51c2VkID09IDApIHsKQEAgLTI5Nyw2ICsyODcsOCBAQCBsb25nIG1t X2lvbW11X3B1dChzdHJ1Y3QgbW1faW9tbXVfdGFibGVfZ3JvdXBfbWVtX3QgKm1lbSkKIAkvKiBA bWFwcGVkIGJlY2FtZSAwIHNvIG5vdyBtYXBwaW5ncyBhcmUgZGlzYWJsZWQsIHJlbGVhc2UgdGhl IHJlZ2lvbiAqLwogCW1tX2lvbW11X3JlbGVhc2UobWVtKTsKIAorCW1tX2lvbW11X2FkanVzdF9s b2NrZWRfdm0obW0sIG1lbS0+ZW50cmllcywgZmFsc2UpOworCiB1bmxvY2tfZXhpdDoKIAltdXRl eF91bmxvY2soJm1lbV9saXN0X211dGV4KTsKIApAQCAtMzA0LDE0ICsyOTYsMTIgQEAgbG9uZyBt bV9pb21tdV9wdXQoc3RydWN0IG1tX2lvbW11X3RhYmxlX2dyb3VwX21lbV90ICptZW0pCiB9CiBF WFBPUlRfU1lNQk9MX0dQTChtbV9pb21tdV9wdXQpOwogCi1zdHJ1Y3QgbW1faW9tbXVfdGFibGVf Z3JvdXBfbWVtX3QgKm1tX2lvbW11X2xvb2t1cCh1bnNpZ25lZCBsb25nIHVhLAotCQl1bnNpZ25l ZCBsb25nIHNpemUpCitzdHJ1Y3QgbW1faW9tbXVfdGFibGVfZ3JvdXBfbWVtX3QgKm1tX2lvbW11 X2xvb2t1cChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKKwkJdW5zaWduZWQgbG9uZyB1YSwgdW5zaWdu ZWQgbG9uZyBzaXplKQogewogCXN0cnVjdCBtbV9pb21tdV90YWJsZV9ncm91cF9tZW1fdCAqbWVt LCAqcmV0ID0gTlVMTDsKIAotCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KG1lbSwKLQkJCSZjdXJy ZW50LT5tbS0+Y29udGV4dC5pb21tdV9ncm91cF9tZW1fbGlzdCwKLQkJCW5leHQpIHsKKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5X3JjdShtZW0sICZtbS0+Y29udGV4dC5pb21tdV9ncm91cF9tZW1fbGlz dCwgbmV4dCkgewogCQlpZiAoKG1lbS0+dWEgPD0gdWEpICYmCiAJCQkJKHVhICsgc2l6ZSA8PSBt ZW0tPnVhICsKIAkJCQkgKG1lbS0+ZW50cmllcyA8PCBQQUdFX1NISUZUKSkpIHsKQEAgLTMyNCwx NCArMzE0LDEyIEBAIHN0cnVjdCBtbV9pb21tdV90YWJsZV9ncm91cF9tZW1fdCAqbW1faW9tbXVf bG9va3VwKHVuc2lnbmVkIGxvbmcgdWEsCiB9CiBFWFBPUlRfU1lNQk9MX0dQTChtbV9pb21tdV9s b29rdXApOwogCi1zdHJ1Y3QgbW1faW9tbXVfdGFibGVfZ3JvdXBfbWVtX3QgKm1tX2lvbW11X2Zp bmQodW5zaWduZWQgbG9uZyB1YSwKLQkJdW5zaWduZWQgbG9uZyBlbnRyaWVzKQorc3RydWN0IG1t X2lvbW11X3RhYmxlX2dyb3VwX21lbV90ICptbV9pb21tdV9maW5kKHN0cnVjdCBtbV9zdHJ1Y3Qg Km1tLAorCQl1bnNpZ25lZCBsb25nIHVhLCB1bnNpZ25lZCBsb25nIGVudHJpZXMpCiB7CiAJc3Ry dWN0IG1tX2lvbW11X3RhYmxlX2dyb3VwX21lbV90ICptZW0sICpyZXQgPSBOVUxMOwogCi0JbGlz dF9mb3JfZWFjaF9lbnRyeV9yY3UobWVtLAotCQkJJmN1cnJlbnQtPm1tLT5jb250ZXh0LmlvbW11 X2dyb3VwX21lbV9saXN0LAotCQkJbmV4dCkgeworCWxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KG1l bSwgJm1tLT5jb250ZXh0LmlvbW11X2dyb3VwX21lbV9saXN0LCBuZXh0KSB7CiAJCWlmICgobWVt LT51YSA9PSB1YSkgJiYgKG1lbS0+ZW50cmllcyA9PSBlbnRyaWVzKSkgewogCQkJcmV0ID0gbWVt OwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV9zcGFwcl90 Y2UuYyBiL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3NwYXByX3RjZS5jCmluZGV4IDJhNmUxMzgu LjRlZmQyYjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3NwYXByX3RjZS5j CisrKyBiL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3NwYXByX3RjZS5jCkBAIC0xMDcsMTQgKzEw NywxNyBAQCBzdGF0aWMgbG9uZyB0Y2VfaW9tbXVfdW5yZWdpc3Rlcl9wYWdlcyhzdHJ1Y3QgdGNl X2NvbnRhaW5lciAqY29udGFpbmVyLAogewogCXN0cnVjdCBtbV9pb21tdV90YWJsZV9ncm91cF9t ZW1fdCAqbWVtOwogCisJaWYgKCFjdXJyZW50IHx8ICFjdXJyZW50LT5tbSkKKwkJcmV0dXJuIC1F U1JDSDsgLyogcHJvY2VzcyBleGl0ZWQgKi8KKwogCWlmICgodmFkZHIgJiB+UEFHRV9NQVNLKSB8 fCAoc2l6ZSAmIH5QQUdFX01BU0spKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCW1lbSA9IG1tX2lv bW11X2ZpbmQodmFkZHIsIHNpemUgPj4gUEFHRV9TSElGVCk7CisJbWVtID0gbW1faW9tbXVfZmlu ZChjdXJyZW50LT5tbSwgdmFkZHIsIHNpemUgPj4gUEFHRV9TSElGVCk7CiAJaWYgKCFtZW0pCiAJ CXJldHVybiAtRU5PRU5UOwogCi0JcmV0dXJuIG1tX2lvbW11X3B1dChtZW0pOworCXJldHVybiBt bV9pb21tdV9wdXQoY3VycmVudC0+bW0sIG1lbSk7CiB9CiAKIHN0YXRpYyBsb25nIHRjZV9pb21t dV9yZWdpc3Rlcl9wYWdlcyhzdHJ1Y3QgdGNlX2NvbnRhaW5lciAqY29udGFpbmVyLApAQCAtMTI0 LDExICsxMjcsMTQgQEAgc3RhdGljIGxvbmcgdGNlX2lvbW11X3JlZ2lzdGVyX3BhZ2VzKHN0cnVj dCB0Y2VfY29udGFpbmVyICpjb250YWluZXIsCiAJc3RydWN0IG1tX2lvbW11X3RhYmxlX2dyb3Vw X21lbV90ICptZW0gPSBOVUxMOwogCXVuc2lnbmVkIGxvbmcgZW50cmllcyA9IHNpemUgPj4gUEFH RV9TSElGVDsKIAorCWlmICghY3VycmVudCB8fCAhY3VycmVudC0+bW0pCisJCXJldHVybiAtRVNS Q0g7IC8qIHByb2Nlc3MgZXhpdGVkICovCisKIAlpZiAoKHZhZGRyICYgflBBR0VfTUFTSykgfHwg KHNpemUgJiB+UEFHRV9NQVNLKSB8fAogCQkJKCh2YWRkciArIHNpemUpIDwgdmFkZHIpKQogCQly ZXR1cm4gLUVJTlZBTDsKIAotCXJldCA9IG1tX2lvbW11X2dldCh2YWRkciwgZW50cmllcywgJm1l bSk7CisJcmV0ID0gbW1faW9tbXVfZ2V0KGN1cnJlbnQtPm1tLCB2YWRkciwgZW50cmllcywgJm1l bSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMzc1LDcgKzM4MSw3IEBAIHN0YXRp YyBpbnQgdGNlX2lvbW11X3ByZXJlZ191YV90b19ocGEodW5zaWduZWQgbG9uZyB0Y2UsIHVuc2ln bmVkIGxvbmcgc2l6ZSwKIAlsb25nIHJldCA9IDA7CiAJc3RydWN0IG1tX2lvbW11X3RhYmxlX2dy b3VwX21lbV90ICptZW07CiAKLQltZW0gPSBtbV9pb21tdV9sb29rdXAodGNlLCBzaXplKTsKKwlt ZW0gPSBtbV9pb21tdV9sb29rdXAoY3VycmVudC0+bW0sIHRjZSwgc2l6ZSk7CiAJaWYgKCFtZW0p CiAJCXJldHVybiAtRUlOVkFMOwogCi0tIAoyLjEuMAoKCkZyb20gOTJlNDRiY2Q3MWFlNWFlMmY2 ZDI1OTk2M2NhZjBiMTM0MjQzY2FhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQWxl eGV5IEthcmRhc2hldnNraXkgPGFpa0BvemxhYnMucnU+CkRhdGU6IEZyaSwgMTcgTWFyIDIwMTcg MDA6NDg6MjcgKzAwMDAKU3ViamVjdDogW1BBVENIIDA2Ni8xMTJdIHZmaW8vc3BhcHI6IFJlZmVy ZW5jZSBtbSBpbiB0Y2VfY29udGFpbmVyCgpbIFVwc3RyZWFtIGNvbW1pdCBiYzgyZDEyMmFlNGEw ZTlmOTcxZjEzNDAzOTk1ODk4ZmNmYTBjMDllIF0KCkluIHNvbWUgc2l0dWF0aW9ucyB0aGUgdXNl cnNwYWNlIG1lbW9yeSBjb250ZXh0IG1heSBsaXZlIGxvbmdlciB0aGFuCnRoZSB1c2Vyc3BhY2Ug cHJvY2VzcyBpdHNlbGYgc28gaWYgd2UgbmVlZCB0byBkbyBwcm9wZXIgbWVtb3J5IGNvbnRleHQK Y2xlYW51cCwgd2UgYmV0dGVyIGhhdmUgdGNlX2NvbnRhaW5lciB0YWtlIGEgcmVmZXJlbmNlIHRv IG1tX3N0cnVjdCBhbmQKdXNlIGl0IGxhdGVyIHdoZW4gdGhlIHByb2Nlc3MgaXMgZ29uZSAoQGN1 cnJlbnQgb3IgQGN1cnJlbnQtPm1tIGlzIE5VTEwpLgoKVGhpcyByZWZlcmVuY2VzIG1tIGFuZCBz dG9yZXMgdGhlIHBvaW50ZXIgaW4gdGhlIGNvbnRhaW5lcjsgdGhpcyBpcyBkb25lCmluIGEgbmV3 IGhlbHBlciAtIHRjZV9pb21tdV9tbV9zZXQoKSAtIHdoZW4gb25lIG9mIHRoZSBmb2xsb3dpbmcg aGFwcGVuczoKLSBhIGNvbnRhaW5lciBpcyBlbmFibGVkIChJT01NVSB2MSk7Ci0gYSBmaXJzdCBh dHRlbXB0IHRvIHByZS1yZWdpc3RlciBtZW1vcnkgaXMgbWFkZSAoSU9NTVUgdjIpOwotIGEgRE1B IHdpbmRvdyBpcyBjcmVhdGVkIChJT01NVSB2MikuClRoZSBAbW0gc3RheXMgcmVmZXJlbmNlZCB0 aWxsIHRoZSBjb250YWluZXIgaXMgZGVzdHJveWVkLgoKVGhpcyByZXBsYWNlcyBjdXJyZW50LT5t bSB3aXRoIGNvbnRhaW5lci0+bW0gZXZlcnl3aGVyZSBleGNlcHQgZGVidWcKcHJpbnRzLgoKVGhp cyBhZGRzIGEgY2hlY2sgdGhhdCBjdXJyZW50LT5tbSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHN0 b3JlZCBpbgp0aGUgY29udGFpbmVyIHRvIHByZXZlbnQgdXNlcnNwYWNlIGZyb20gbWFraW5nIGNo YW5nZXMgdG8gYSBtZW1vcnkKY29udGV4dCBvZiBvdGhlciBwcm9jZXNzZXMuCgpETUEgbWFwL3Vu bWFwIGlvY3RscygpIGRvIG5vdCBjaGVjayBmb3IgQG1tIGFzIHRoZXkgYWxyZWFkeSBjaGVjawpm b3IgQGVuYWJsZWQgd2hpY2ggaXMgc2V0IGFmdGVyIHRjZV9pb21tdV9tbV9zZXQoKSBpcyBjYWxs ZWQuCgpUaGlzIGRvZXMgbm90IHJlZmVyZW5jZSBhIHRhc2sgYXMgbXVsdGlwbGUgdGhyZWFkcyB3 aXRoaW4gdGhlIHNhbWUgbW0KYXJlIGFsbG93ZWQgdG8gaW9jdGwoKSB0byB2ZmlvIGFuZCBzdXBw b3NlZGx5IHRoZXkgd2lsbCBoYXZlIHNhbWUgbGltaXRzCmFuZCBjYXBhYmlsaXRpZXMgYW5kIGlm IHRoZXkgZG8gbm90LCB3ZSdsbCBqdXN0IGZhaWwgd2l0aCBubyBoYXJtIG1hZGUuCgpTaWduZWQt b2ZmLWJ5OiBBbGV4ZXkgS2FyZGFzaGV2c2tpeSA8YWlrQG96bGFicy5ydT4KQWNrZWQtYnk6IEFs ZXggV2lsbGlhbXNvbiA8YWxleC53aWxsaWFtc29uQHJlZGhhdC5jb20+ClJldmlld2VkLWJ5OiBE YXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KU2lnbmVkLW9mZi1ieTog TWljaGFlbCBFbGxlcm1hbiA8bXBlQGVsbGVybWFuLmlkLmF1PgpTaWduZWQtb2ZmLWJ5OiBTYXNo YSBMZXZpbiA8YWxleGFuZGVyLmxldmluQHZlcml6b24uY29tPgpTaWduZWQtb2ZmLWJ5OiBHcmVn IEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0KIGRyaXZlcnMv dmZpby92ZmlvX2lvbW11X3NwYXByX3RjZS5jIHwgMTYwICsrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwMCBpbnNlcnRpb25zKCspLCA2MCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV9zcGFwcl90Y2Uu YyBiL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3NwYXByX3RjZS5jCmluZGV4IDRlZmQyYjIuLjRi ZWJlODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3NwYXByX3RjZS5jCisr KyBiL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3NwYXByX3RjZS5jCkBAIC0zMSw0OSArMzEsNDkg QEAKIHN0YXRpYyB2b2lkIHRjZV9pb21tdV9kZXRhY2hfZ3JvdXAodm9pZCAqaW9tbXVfZGF0YSwK IAkJc3RydWN0IGlvbW11X2dyb3VwICppb21tdV9ncm91cCk7CiAKLXN0YXRpYyBsb25nIHRyeV9p bmNyZW1lbnRfbG9ja2VkX3ZtKGxvbmcgbnBhZ2VzKQorc3RhdGljIGxvbmcgdHJ5X2luY3JlbWVu dF9sb2NrZWRfdm0oc3RydWN0IG1tX3N0cnVjdCAqbW0sIGxvbmcgbnBhZ2VzKQogewogCWxvbmcg cmV0ID0gMCwgbG9ja2VkLCBsb2NrX2xpbWl0OwogCi0JaWYgKCFjdXJyZW50IHx8ICFjdXJyZW50 LT5tbSkKLQkJcmV0dXJuIC1FU1JDSDsgLyogcHJvY2VzcyBleGl0ZWQgKi8KKwlpZiAoV0FSTl9P Tl9PTkNFKCFtbSkpCisJCXJldHVybiAtRVBFUk07CiAKIAlpZiAoIW5wYWdlcykKIAkJcmV0dXJu IDA7CiAKLQlkb3duX3dyaXRlKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOwotCWxvY2tlZCA9IGN1 cnJlbnQtPm1tLT5sb2NrZWRfdm0gKyBucGFnZXM7CisJZG93bl93cml0ZSgmbW0tPm1tYXBfc2Vt KTsKKwlsb2NrZWQgPSBtbS0+bG9ja2VkX3ZtICsgbnBhZ2VzOwogCWxvY2tfbGltaXQgPSBybGlt aXQoUkxJTUlUX01FTUxPQ0spID4+IFBBR0VfU0hJRlQ7CiAJaWYgKGxvY2tlZCA+IGxvY2tfbGlt aXQgJiYgIWNhcGFibGUoQ0FQX0lQQ19MT0NLKSkKIAkJcmV0ID0gLUVOT01FTTsKIAllbHNlCi0J CWN1cnJlbnQtPm1tLT5sb2NrZWRfdm0gKz0gbnBhZ2VzOworCQltbS0+bG9ja2VkX3ZtICs9IG5w YWdlczsKIAogCXByX2RlYnVnKCJbJWRdIFJMSU1JVF9NRU1MT0NLICslbGQgJWxkLyVsZCVzXG4i LCBjdXJyZW50LT5waWQsCiAJCQlucGFnZXMgPDwgUEFHRV9TSElGVCwKLQkJCWN1cnJlbnQtPm1t LT5sb2NrZWRfdm0gPDwgUEFHRV9TSElGVCwKKwkJCW1tLT5sb2NrZWRfdm0gPDwgUEFHRV9TSElG VCwKIAkJCXJsaW1pdChSTElNSVRfTUVNTE9DSyksCiAJCQlyZXQgPyAiIC0gZXhjZWVkZWQiIDog IiIpOwogCi0JdXBfd3JpdGUoJmN1cnJlbnQtPm1tLT5tbWFwX3NlbSk7CisJdXBfd3JpdGUoJm1t LT5tbWFwX3NlbSk7CiAKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCBkZWNyZW1lbnRf bG9ja2VkX3ZtKGxvbmcgbnBhZ2VzKQorc3RhdGljIHZvaWQgZGVjcmVtZW50X2xvY2tlZF92bShz dHJ1Y3QgbW1fc3RydWN0ICptbSwgbG9uZyBucGFnZXMpCiB7Ci0JaWYgKCFjdXJyZW50IHx8ICFj dXJyZW50LT5tbSB8fCAhbnBhZ2VzKQotCQlyZXR1cm47IC8qIHByb2Nlc3MgZXhpdGVkICovCisJ aWYgKCFtbSB8fCAhbnBhZ2VzKQorCQlyZXR1cm47CiAKLQlkb3duX3dyaXRlKCZjdXJyZW50LT5t bS0+bW1hcF9zZW0pOwotCWlmIChXQVJOX09OX09OQ0UobnBhZ2VzID4gY3VycmVudC0+bW0tPmxv Y2tlZF92bSkpCi0JCW5wYWdlcyA9IGN1cnJlbnQtPm1tLT5sb2NrZWRfdm07Ci0JY3VycmVudC0+ bW0tPmxvY2tlZF92bSAtPSBucGFnZXM7CisJZG93bl93cml0ZSgmbW0tPm1tYXBfc2VtKTsKKwlp ZiAoV0FSTl9PTl9PTkNFKG5wYWdlcyA+IG1tLT5sb2NrZWRfdm0pKQorCQlucGFnZXMgPSBtbS0+ bG9ja2VkX3ZtOworCW1tLT5sb2NrZWRfdm0gLT0gbnBhZ2VzOwogCXByX2RlYnVnKCJbJWRdIFJM SU1JVF9NRU1MT0NLIC0lbGQgJWxkLyVsZFxuIiwgY3VycmVudC0+cGlkLAogCQkJbnBhZ2VzIDw8 IFBBR0VfU0hJRlQsCi0JCQljdXJyZW50LT5tbS0+bG9ja2VkX3ZtIDw8IFBBR0VfU0hJRlQsCisJ CQltbS0+bG9ja2VkX3ZtIDw8IFBBR0VfU0hJRlQsCiAJCQlybGltaXQoUkxJTUlUX01FTUxPQ0sp KTsKLQl1cF93cml0ZSgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKKwl1cF93cml0ZSgmbW0tPm1t YXBfc2VtKTsKIH0KIAogLyoKQEAgLTk4LDI2ICs5OCwzOCBAQCBzdHJ1Y3QgdGNlX2NvbnRhaW5l ciB7CiAJYm9vbCBlbmFibGVkOwogCWJvb2wgdjI7CiAJdW5zaWduZWQgbG9uZyBsb2NrZWRfcGFn ZXM7CisJc3RydWN0IG1tX3N0cnVjdCAqbW07CiAJc3RydWN0IGlvbW11X3RhYmxlICp0YWJsZXNb SU9NTVVfVEFCTEVfR1JPVVBfTUFYX1RBQkxFU107CiAJc3RydWN0IGxpc3RfaGVhZCBncm91cF9s aXN0OwogfTsKIAorc3RhdGljIGxvbmcgdGNlX2lvbW11X21tX3NldChzdHJ1Y3QgdGNlX2NvbnRh aW5lciAqY29udGFpbmVyKQoreworCWlmIChjb250YWluZXItPm1tKSB7CisJCWlmIChjb250YWlu ZXItPm1tID09IGN1cnJlbnQtPm1tKQorCQkJcmV0dXJuIDA7CisJCXJldHVybiAtRVBFUk07CisJ fQorCUJVR19PTighY3VycmVudC0+bW0pOworCWNvbnRhaW5lci0+bW0gPSBjdXJyZW50LT5tbTsK KwlhdG9taWNfaW5jKCZjb250YWluZXItPm1tLT5tbV9jb3VudCk7CisKKwlyZXR1cm4gMDsKK30K Kwogc3RhdGljIGxvbmcgdGNlX2lvbW11X3VucmVnaXN0ZXJfcGFnZXMoc3RydWN0IHRjZV9jb250 YWluZXIgKmNvbnRhaW5lciwKIAkJX191NjQgdmFkZHIsIF9fdTY0IHNpemUpCiB7CiAJc3RydWN0 IG1tX2lvbW11X3RhYmxlX2dyb3VwX21lbV90ICptZW07CiAKLQlpZiAoIWN1cnJlbnQgfHwgIWN1 cnJlbnQtPm1tKQotCQlyZXR1cm4gLUVTUkNIOyAvKiBwcm9jZXNzIGV4aXRlZCAqLwotCiAJaWYg KCh2YWRkciAmIH5QQUdFX01BU0spIHx8IChzaXplICYgflBBR0VfTUFTSykpCiAJCXJldHVybiAt RUlOVkFMOwogCi0JbWVtID0gbW1faW9tbXVfZmluZChjdXJyZW50LT5tbSwgdmFkZHIsIHNpemUg Pj4gUEFHRV9TSElGVCk7CisJbWVtID0gbW1faW9tbXVfZmluZChjb250YWluZXItPm1tLCB2YWRk ciwgc2l6ZSA+PiBQQUdFX1NISUZUKTsKIAlpZiAoIW1lbSkKIAkJcmV0dXJuIC1FTk9FTlQ7CiAK LQlyZXR1cm4gbW1faW9tbXVfcHV0KGN1cnJlbnQtPm1tLCBtZW0pOworCXJldHVybiBtbV9pb21t dV9wdXQoY29udGFpbmVyLT5tbSwgbWVtKTsKIH0KIAogc3RhdGljIGxvbmcgdGNlX2lvbW11X3Jl Z2lzdGVyX3BhZ2VzKHN0cnVjdCB0Y2VfY29udGFpbmVyICpjb250YWluZXIsCkBAIC0xMjcsMTQg KzEzOSwxMSBAQCBzdGF0aWMgbG9uZyB0Y2VfaW9tbXVfcmVnaXN0ZXJfcGFnZXMoc3RydWN0IHRj ZV9jb250YWluZXIgKmNvbnRhaW5lciwKIAlzdHJ1Y3QgbW1faW9tbXVfdGFibGVfZ3JvdXBfbWVt X3QgKm1lbSA9IE5VTEw7CiAJdW5zaWduZWQgbG9uZyBlbnRyaWVzID0gc2l6ZSA+PiBQQUdFX1NI SUZUOwogCi0JaWYgKCFjdXJyZW50IHx8ICFjdXJyZW50LT5tbSkKLQkJcmV0dXJuIC1FU1JDSDsg LyogcHJvY2VzcyBleGl0ZWQgKi8KLQogCWlmICgodmFkZHIgJiB+UEFHRV9NQVNLKSB8fCAoc2l6 ZSAmIH5QQUdFX01BU0spIHx8CiAJCQkoKHZhZGRyICsgc2l6ZSkgPCB2YWRkcikpCiAJCXJldHVy biAtRUlOVkFMOwogCi0JcmV0ID0gbW1faW9tbXVfZ2V0KGN1cnJlbnQtPm1tLCB2YWRkciwgZW50 cmllcywgJm1lbSk7CisJcmV0ID0gbW1faW9tbXVfZ2V0KGNvbnRhaW5lci0+bW0sIHZhZGRyLCBl bnRyaWVzLCAmbWVtKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC0xNDMsNyArMTUy LDggQEAgc3RhdGljIGxvbmcgdGNlX2lvbW11X3JlZ2lzdGVyX3BhZ2VzKHN0cnVjdCB0Y2VfY29u dGFpbmVyICpjb250YWluZXIsCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBsb25nIHRjZV9pb21t dV91c2Vyc3BhY2Vfdmlld19hbGxvYyhzdHJ1Y3QgaW9tbXVfdGFibGUgKnRibCkKK3N0YXRpYyBs b25nIHRjZV9pb21tdV91c2Vyc3BhY2Vfdmlld19hbGxvYyhzdHJ1Y3QgaW9tbXVfdGFibGUgKnRi bCwKKwkJc3RydWN0IG1tX3N0cnVjdCAqbW0pCiB7CiAJdW5zaWduZWQgbG9uZyBjYiA9IF9BTElH Tl9VUChzaXplb2YodGJsLT5pdF91c2Vyc3BhY2VbMF0pICoKIAkJCXRibC0+aXRfc2l6ZSwgUEFH RV9TSVpFKTsKQEAgLTE1MiwxMyArMTYyLDEzIEBAIHN0YXRpYyBsb25nIHRjZV9pb21tdV91c2Vy c3BhY2Vfdmlld19hbGxvYyhzdHJ1Y3QgaW9tbXVfdGFibGUgKnRibCkKIAogCUJVR19PTih0Ymwt Pml0X3VzZXJzcGFjZSk7CiAKLQlyZXQgPSB0cnlfaW5jcmVtZW50X2xvY2tlZF92bShjYiA+PiBQ QUdFX1NISUZUKTsKKwlyZXQgPSB0cnlfaW5jcmVtZW50X2xvY2tlZF92bShtbSwgY2IgPj4gUEFH RV9TSElGVCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAogCXVhcyA9IHZ6YWxsb2MoY2Ip OwogCWlmICghdWFzKSB7Ci0JCWRlY3JlbWVudF9sb2NrZWRfdm0oY2IgPj4gUEFHRV9TSElGVCk7 CisJCWRlY3JlbWVudF9sb2NrZWRfdm0obW0sIGNiID4+IFBBR0VfU0hJRlQpOwogCQlyZXR1cm4g LUVOT01FTTsKIAl9CiAJdGJsLT5pdF91c2Vyc3BhY2UgPSB1YXM7CkBAIC0xNjYsNyArMTc2LDgg QEAgc3RhdGljIGxvbmcgdGNlX2lvbW11X3VzZXJzcGFjZV92aWV3X2FsbG9jKHN0cnVjdCBpb21t dV90YWJsZSAqdGJsKQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCB0Y2VfaW9tbXVfdXNl cnNwYWNlX3ZpZXdfZnJlZShzdHJ1Y3QgaW9tbXVfdGFibGUgKnRibCkKK3N0YXRpYyB2b2lkIHRj ZV9pb21tdV91c2Vyc3BhY2Vfdmlld19mcmVlKHN0cnVjdCBpb21tdV90YWJsZSAqdGJsLAorCQlz dHJ1Y3QgbW1fc3RydWN0ICptbSkKIHsKIAl1bnNpZ25lZCBsb25nIGNiID0gX0FMSUdOX1VQKHNp emVvZih0YmwtPml0X3VzZXJzcGFjZVswXSkgKgogCQkJdGJsLT5pdF9zaXplLCBQQUdFX1NJWkUp OwpAQCAtMTc2LDcgKzE4Nyw3IEBAIHN0YXRpYyB2b2lkIHRjZV9pb21tdV91c2Vyc3BhY2Vfdmll d19mcmVlKHN0cnVjdCBpb21tdV90YWJsZSAqdGJsKQogCiAJdmZyZWUodGJsLT5pdF91c2Vyc3Bh Y2UpOwogCXRibC0+aXRfdXNlcnNwYWNlID0gTlVMTDsKLQlkZWNyZW1lbnRfbG9ja2VkX3ZtKGNi ID4+IFBBR0VfU0hJRlQpOworCWRlY3JlbWVudF9sb2NrZWRfdm0obW0sIGNiID4+IFBBR0VfU0hJ RlQpOwogfQogCiBzdGF0aWMgYm9vbCB0Y2VfcGFnZV9pc19jb250YWluZWQoc3RydWN0IHBhZ2Ug KnBhZ2UsIHVuc2lnbmVkIHBhZ2Vfc2hpZnQpCkBAIC0yMzYsOSArMjQ3LDYgQEAgc3RhdGljIGlu dCB0Y2VfaW9tbXVfZW5hYmxlKHN0cnVjdCB0Y2VfY29udGFpbmVyICpjb250YWluZXIpCiAJc3Ry dWN0IGlvbW11X3RhYmxlX2dyb3VwICp0YWJsZV9ncm91cDsKIAlzdHJ1Y3QgdGNlX2lvbW11X2dy b3VwICp0Y2VncnA7CiAKLQlpZiAoIWN1cnJlbnQtPm1tKQotCQlyZXR1cm4gLUVTUkNIOyAvKiBw cm9jZXNzIGV4aXRlZCAqLwotCiAJaWYgKGNvbnRhaW5lci0+ZW5hYmxlZCkKIAkJcmV0dXJuIC1F QlVTWTsKIApAQCAtMjgzLDggKzI5MSwxMiBAQCBzdGF0aWMgaW50IHRjZV9pb21tdV9lbmFibGUo c3RydWN0IHRjZV9jb250YWluZXIgKmNvbnRhaW5lcikKIAlpZiAoIXRhYmxlX2dyb3VwLT50Y2Uz Ml9zaXplKQogCQlyZXR1cm4gLUVQRVJNOwogCisJcmV0ID0gdGNlX2lvbW11X21tX3NldChjb250 YWluZXIpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKIAlsb2NrZWQgPSB0YWJsZV9ncm91 cC0+dGNlMzJfc2l6ZSA+PiBQQUdFX1NISUZUOwotCXJldCA9IHRyeV9pbmNyZW1lbnRfbG9ja2Vk X3ZtKGxvY2tlZCk7CisJcmV0ID0gdHJ5X2luY3JlbWVudF9sb2NrZWRfdm0oY29udGFpbmVyLT5t bSwgbG9ja2VkKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCkBAIC0zMDIsMTAgKzMxNCw4 IEBAIHN0YXRpYyB2b2lkIHRjZV9pb21tdV9kaXNhYmxlKHN0cnVjdCB0Y2VfY29udGFpbmVyICpj b250YWluZXIpCiAKIAljb250YWluZXItPmVuYWJsZWQgPSBmYWxzZTsKIAotCWlmICghY3VycmVu dC0+bW0pCi0JCXJldHVybjsKLQotCWRlY3JlbWVudF9sb2NrZWRfdm0oY29udGFpbmVyLT5sb2Nr ZWRfcGFnZXMpOworCUJVR19PTighY29udGFpbmVyLT5tbSk7CisJZGVjcmVtZW50X2xvY2tlZF92 bShjb250YWluZXItPm1tLCBjb250YWluZXItPmxvY2tlZF9wYWdlcyk7CiB9CiAKIHN0YXRpYyB2 b2lkICp0Y2VfaW9tbXVfb3Blbih1bnNpZ25lZCBsb25nIGFyZykKQEAgLTMzMiw3ICszNDIsOCBA QCBzdGF0aWMgdm9pZCAqdGNlX2lvbW11X29wZW4odW5zaWduZWQgbG9uZyBhcmcpCiBzdGF0aWMg aW50IHRjZV9pb21tdV9jbGVhcihzdHJ1Y3QgdGNlX2NvbnRhaW5lciAqY29udGFpbmVyLAogCQlz dHJ1Y3QgaW9tbXVfdGFibGUgKnRibCwKIAkJdW5zaWduZWQgbG9uZyBlbnRyeSwgdW5zaWduZWQg bG9uZyBwYWdlcyk7Ci1zdGF0aWMgdm9pZCB0Y2VfaW9tbXVfZnJlZV90YWJsZShzdHJ1Y3QgaW9t bXVfdGFibGUgKnRibCk7CitzdGF0aWMgdm9pZCB0Y2VfaW9tbXVfZnJlZV90YWJsZShzdHJ1Y3Qg dGNlX2NvbnRhaW5lciAqY29udGFpbmVyLAorCQlzdHJ1Y3QgaW9tbXVfdGFibGUgKnRibCk7CiAK IHN0YXRpYyB2b2lkIHRjZV9pb21tdV9yZWxlYXNlKHZvaWQgKmlvbW11X2RhdGEpCiB7CkBAIC0z NTcsMTAgKzM2OCwxMiBAQCBzdGF0aWMgdm9pZCB0Y2VfaW9tbXVfcmVsZWFzZSh2b2lkICppb21t dV9kYXRhKQogCQkJY29udGludWU7CiAKIAkJdGNlX2lvbW11X2NsZWFyKGNvbnRhaW5lciwgdGJs LCB0YmwtPml0X29mZnNldCwgdGJsLT5pdF9zaXplKTsKLQkJdGNlX2lvbW11X2ZyZWVfdGFibGUo dGJsKTsKKwkJdGNlX2lvbW11X2ZyZWVfdGFibGUoY29udGFpbmVyLCB0YmwpOwogCX0KIAogCXRj ZV9pb21tdV9kaXNhYmxlKGNvbnRhaW5lcik7CisJaWYgKGNvbnRhaW5lci0+bW0pCisJCW1tZHJv cChjb250YWluZXItPm1tKTsKIAltdXRleF9kZXN0cm95KCZjb250YWluZXItPmxvY2spOwogCiAJ a2ZyZWUoY29udGFpbmVyKTsKQEAgLTM3NSwxMyArMzg4LDE0IEBAIHN0YXRpYyB2b2lkIHRjZV9p b21tdV91bnVzZV9wYWdlKHN0cnVjdCB0Y2VfY29udGFpbmVyICpjb250YWluZXIsCiAJcHV0X3Bh Z2UocGFnZSk7CiB9CiAKLXN0YXRpYyBpbnQgdGNlX2lvbW11X3ByZXJlZ191YV90b19ocGEodW5z aWduZWQgbG9uZyB0Y2UsIHVuc2lnbmVkIGxvbmcgc2l6ZSwKK3N0YXRpYyBpbnQgdGNlX2lvbW11 X3ByZXJlZ191YV90b19ocGEoc3RydWN0IHRjZV9jb250YWluZXIgKmNvbnRhaW5lciwKKwkJdW5z aWduZWQgbG9uZyB0Y2UsIHVuc2lnbmVkIGxvbmcgc2l6ZSwKIAkJdW5zaWduZWQgbG9uZyAqcGhw YSwgc3RydWN0IG1tX2lvbW11X3RhYmxlX2dyb3VwX21lbV90ICoqcG1lbSkKIHsKIAlsb25nIHJl dCA9IDA7CiAJc3RydWN0IG1tX2lvbW11X3RhYmxlX2dyb3VwX21lbV90ICptZW07CiAKLQltZW0g PSBtbV9pb21tdV9sb29rdXAoY3VycmVudC0+bW0sIHRjZSwgc2l6ZSk7CisJbWVtID0gbW1faW9t bXVfbG9va3VwKGNvbnRhaW5lci0+bW0sIHRjZSwgc2l6ZSk7CiAJaWYgKCFtZW0pCiAJCXJldHVy biAtRUlOVkFMOwogCkBAIC0zOTQsMTggKzQwOCwxOCBAQCBzdGF0aWMgaW50IHRjZV9pb21tdV9w cmVyZWdfdWFfdG9faHBhKHVuc2lnbmVkIGxvbmcgdGNlLCB1bnNpZ25lZCBsb25nIHNpemUsCiAJ cmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIHRjZV9pb21tdV91bnVzZV9wYWdlX3YyKHN0cnVj dCBpb21tdV90YWJsZSAqdGJsLAotCQl1bnNpZ25lZCBsb25nIGVudHJ5KQorc3RhdGljIHZvaWQg dGNlX2lvbW11X3VudXNlX3BhZ2VfdjIoc3RydWN0IHRjZV9jb250YWluZXIgKmNvbnRhaW5lciwK KwkJc3RydWN0IGlvbW11X3RhYmxlICp0YmwsIHVuc2lnbmVkIGxvbmcgZW50cnkpCiB7CiAJc3Ry dWN0IG1tX2lvbW11X3RhYmxlX2dyb3VwX21lbV90ICptZW0gPSBOVUxMOwogCWludCByZXQ7CiAJ dW5zaWduZWQgbG9uZyBocGEgPSAwOwogCXVuc2lnbmVkIGxvbmcgKnB1YSA9IElPTU1VX1RBQkxF X1VTRVJTUEFDRV9FTlRSWSh0YmwsIGVudHJ5KTsKIAotCWlmICghcHVhIHx8ICFjdXJyZW50IHx8 ICFjdXJyZW50LT5tbSkKKwlpZiAoIXB1YSkKIAkJcmV0dXJuOwogCi0JcmV0ID0gdGNlX2lvbW11 X3ByZXJlZ191YV90b19ocGEoKnB1YSwgSU9NTVVfUEFHRV9TSVpFKHRibCksCisJcmV0ID0gdGNl X2lvbW11X3ByZXJlZ191YV90b19ocGEoY29udGFpbmVyLCAqcHVhLCBJT01NVV9QQUdFX1NJWkUo dGJsKSwKIAkJCSZocGEsICZtZW0pOwogCWlmIChyZXQpCiAJCXByX2RlYnVnKCIlczogdGNlICVs eCBhdCAjJWx4IHdhcyBub3QgY2FjaGVkLCByZXQ9JWRcbiIsCkBAIC00MzUsNyArNDQ5LDcgQEAg c3RhdGljIGludCB0Y2VfaW9tbXVfY2xlYXIoc3RydWN0IHRjZV9jb250YWluZXIgKmNvbnRhaW5l ciwKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChjb250YWluZXItPnYyKSB7Ci0JCQl0Y2VfaW9tbXVf dW51c2VfcGFnZV92Mih0YmwsIGVudHJ5KTsKKwkJCXRjZV9pb21tdV91bnVzZV9wYWdlX3YyKGNv bnRhaW5lciwgdGJsLCBlbnRyeSk7CiAJCQljb250aW51ZTsKIAkJfQogCkBAIC01MTYsNyArNTMw LDcgQEAgc3RhdGljIGxvbmcgdGNlX2lvbW11X2J1aWxkX3YyKHN0cnVjdCB0Y2VfY29udGFpbmVy ICpjb250YWluZXIsCiAJZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlydG1wOwogCiAJaWYgKCF0 YmwtPml0X3VzZXJzcGFjZSkgewotCQlyZXQgPSB0Y2VfaW9tbXVfdXNlcnNwYWNlX3ZpZXdfYWxs b2ModGJsKTsKKwkJcmV0ID0gdGNlX2lvbW11X3VzZXJzcGFjZV92aWV3X2FsbG9jKHRibCwgY29u dGFpbmVyLT5tbSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KQEAgLTUyNiw4ICs1 NDAsOCBAQCBzdGF0aWMgbG9uZyB0Y2VfaW9tbXVfYnVpbGRfdjIoc3RydWN0IHRjZV9jb250YWlu ZXIgKmNvbnRhaW5lciwKIAkJdW5zaWduZWQgbG9uZyAqcHVhID0gSU9NTVVfVEFCTEVfVVNFUlNQ QUNFX0VOVFJZKHRibCwKIAkJCQllbnRyeSArIGkpOwogCi0JCXJldCA9IHRjZV9pb21tdV9wcmVy ZWdfdWFfdG9faHBhKHRjZSwgSU9NTVVfUEFHRV9TSVpFKHRibCksCi0JCQkJJmhwYSwgJm1lbSk7 CisJCXJldCA9IHRjZV9pb21tdV9wcmVyZWdfdWFfdG9faHBhKGNvbnRhaW5lciwKKwkJCQl0Y2Us IElPTU1VX1BBR0VfU0laRSh0YmwpLCAmaHBhLCAmbWVtKTsKIAkJaWYgKHJldCkKIAkJCWJyZWFr OwogCkBAIC01NDgsNyArNTYyLDcgQEAgc3RhdGljIGxvbmcgdGNlX2lvbW11X2J1aWxkX3YyKHN0 cnVjdCB0Y2VfY29udGFpbmVyICpjb250YWluZXIsCiAJCXJldCA9IGlvbW11X3RjZV94Y2hnKHRi bCwgZW50cnkgKyBpLCAmaHBhLCAmZGlydG1wKTsKIAkJaWYgKHJldCkgewogCQkJLyogZGlydG1w IGNhbm5vdCBiZSBETUFfTk9ORSBoZXJlICovCi0JCQl0Y2VfaW9tbXVfdW51c2VfcGFnZV92Mih0 YmwsIGVudHJ5ICsgaSk7CisJCQl0Y2VfaW9tbXVfdW51c2VfcGFnZV92Mihjb250YWluZXIsIHRi bCwgZW50cnkgKyBpKTsKIAkJCXByX2VycigiaW9tbXVfdGNlOiAlcyBmYWlsZWQgaW9iYT0lbHgs IHRjZT0lbHgsIHJldD0lbGRcbiIsCiAJCQkJCV9fZnVuY19fLCBlbnRyeSA8PCB0YmwtPml0X3Bh Z2Vfc2hpZnQsCiAJCQkJCXRjZSwgcmV0KTsKQEAgLTU1Niw3ICs1NzAsNyBAQCBzdGF0aWMgbG9u ZyB0Y2VfaW9tbXVfYnVpbGRfdjIoc3RydWN0IHRjZV9jb250YWluZXIgKmNvbnRhaW5lciwKIAkJ fQogCiAJCWlmIChkaXJ0bXAgIT0gRE1BX05PTkUpCi0JCQl0Y2VfaW9tbXVfdW51c2VfcGFnZV92 Mih0YmwsIGVudHJ5ICsgaSk7CisJCQl0Y2VfaW9tbXVfdW51c2VfcGFnZV92Mihjb250YWluZXIs IHRibCwgZW50cnkgKyBpKTsKIAogCQkqcHVhID0gdGNlOwogCkBAIC01ODQsNyArNTk4LDcgQEAg c3RhdGljIGxvbmcgdGNlX2lvbW11X2NyZWF0ZV90YWJsZShzdHJ1Y3QgdGNlX2NvbnRhaW5lciAq Y29udGFpbmVyLAogCWlmICghdGFibGVfc2l6ZSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlyZXQg PSB0cnlfaW5jcmVtZW50X2xvY2tlZF92bSh0YWJsZV9zaXplID4+IFBBR0VfU0hJRlQpOworCXJl dCA9IHRyeV9pbmNyZW1lbnRfbG9ja2VkX3ZtKGNvbnRhaW5lci0+bW0sIHRhYmxlX3NpemUgPj4g UEFHRV9TSElGVCk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtNTk3LDEzICs2MTEs MTQgQEAgc3RhdGljIGxvbmcgdGNlX2lvbW11X2NyZWF0ZV90YWJsZShzdHJ1Y3QgdGNlX2NvbnRh aW5lciAqY29udGFpbmVyLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIHRjZV9pb21t dV9mcmVlX3RhYmxlKHN0cnVjdCBpb21tdV90YWJsZSAqdGJsKQorc3RhdGljIHZvaWQgdGNlX2lv bW11X2ZyZWVfdGFibGUoc3RydWN0IHRjZV9jb250YWluZXIgKmNvbnRhaW5lciwKKwkJc3RydWN0 IGlvbW11X3RhYmxlICp0YmwpCiB7CiAJdW5zaWduZWQgbG9uZyBwYWdlcyA9IHRibC0+aXRfYWxs b2NhdGVkX3NpemUgPj4gUEFHRV9TSElGVDsKIAotCXRjZV9pb21tdV91c2Vyc3BhY2Vfdmlld19m cmVlKHRibCk7CisJdGNlX2lvbW11X3VzZXJzcGFjZV92aWV3X2ZyZWUodGJsLCBjb250YWluZXIt Pm1tKTsKIAl0YmwtPml0X29wcy0+ZnJlZSh0YmwpOwotCWRlY3JlbWVudF9sb2NrZWRfdm0ocGFn ZXMpOworCWRlY3JlbWVudF9sb2NrZWRfdm0oY29udGFpbmVyLT5tbSwgcGFnZXMpOwogfQogCiBz dGF0aWMgbG9uZyB0Y2VfaW9tbXVfY3JlYXRlX3dpbmRvdyhzdHJ1Y3QgdGNlX2NvbnRhaW5lciAq Y29udGFpbmVyLApAQCAtNjY2LDcgKzY4MSw3IEBAIHN0YXRpYyBsb25nIHRjZV9pb21tdV9jcmVh dGVfd2luZG93KHN0cnVjdCB0Y2VfY29udGFpbmVyICpjb250YWluZXIsCiAJCXRhYmxlX2dyb3Vw ID0gaW9tbXVfZ3JvdXBfZ2V0X2lvbW11ZGF0YSh0Y2VncnAtPmdycCk7CiAJCXRhYmxlX2dyb3Vw LT5vcHMtPnVuc2V0X3dpbmRvdyh0YWJsZV9ncm91cCwgbnVtKTsKIAl9Ci0JdGNlX2lvbW11X2Zy ZWVfdGFibGUodGJsKTsKKwl0Y2VfaW9tbXVfZnJlZV90YWJsZShjb250YWluZXIsIHRibCk7CiAK IAlyZXR1cm4gcmV0OwogfQpAQCAtNzA0LDcgKzcxOSw3IEBAIHN0YXRpYyBsb25nIHRjZV9pb21t dV9yZW1vdmVfd2luZG93KHN0cnVjdCB0Y2VfY29udGFpbmVyICpjb250YWluZXIsCiAKIAkvKiBG cmVlIHRhYmxlICovCiAJdGNlX2lvbW11X2NsZWFyKGNvbnRhaW5lciwgdGJsLCB0YmwtPml0X29m ZnNldCwgdGJsLT5pdF9zaXplKTsKLQl0Y2VfaW9tbXVfZnJlZV90YWJsZSh0YmwpOworCXRjZV9p b21tdV9mcmVlX3RhYmxlKGNvbnRhaW5lciwgdGJsKTsKIAljb250YWluZXItPnRhYmxlc1tudW1d ID0gTlVMTDsKIAogCXJldHVybiAwOwpAQCAtNzMwLDcgKzc0NSwxNyBAQCBzdGF0aWMgbG9uZyB0 Y2VfaW9tbXVfaW9jdGwodm9pZCAqaW9tbXVfZGF0YSwKIAkJfQogCiAJCXJldHVybiAocmV0IDwg MCkgPyAwIDogcmV0OworCX0KKworCS8qCisJICogU2FuaXR5IGNoZWNrIHRvIHByZXZlbnQgb25l IHVzZXJzcGFjZSBmcm9tIG1hbmlwdWxhdGluZworCSAqIGFub3RoZXIgdXNlcnNwYWNlIG1tLgor CSAqLworCUJVR19PTighY29udGFpbmVyKTsKKwlpZiAoY29udGFpbmVyLT5tbSAmJiBjb250YWlu ZXItPm1tICE9IGN1cnJlbnQtPm1tKQorCQlyZXR1cm4gLUVQRVJNOwogCisJc3dpdGNoIChjbWQp IHsKIAljYXNlIFZGSU9fSU9NTVVfU1BBUFJfVENFX0dFVF9JTkZPOiB7CiAJCXN0cnVjdCB2Zmlv X2lvbW11X3NwYXByX3RjZV9pbmZvIGluZm87CiAJCXN0cnVjdCB0Y2VfaW9tbXVfZ3JvdXAgKnRj ZWdycDsKQEAgLTg5MSw2ICs5MTYsMTAgQEAgc3RhdGljIGxvbmcgdGNlX2lvbW11X2lvY3RsKHZv aWQgKmlvbW11X2RhdGEsCiAJCW1pbnN6ID0gb2Zmc2V0b2ZlbmQoc3RydWN0IHZmaW9faW9tbXVf c3BhcHJfcmVnaXN0ZXJfbWVtb3J5LAogCQkJCXNpemUpOwogCisJCXJldCA9IHRjZV9pb21tdV9t bV9zZXQoY29udGFpbmVyKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisKIAkJaWYgKGNv cHlfZnJvbV91c2VyKCZwYXJhbSwgKHZvaWQgX191c2VyICopYXJnLCBtaW5zeikpCiAJCQlyZXR1 cm4gLUVGQVVMVDsKIApAQCAtOTE0LDYgKzk0Myw5IEBAIHN0YXRpYyBsb25nIHRjZV9pb21tdV9p b2N0bCh2b2lkICppb21tdV9kYXRhLAogCQlpZiAoIWNvbnRhaW5lci0+djIpCiAJCQlicmVhazsK IAorCQlpZiAoIWNvbnRhaW5lci0+bW0pCisJCQlyZXR1cm4gLUVQRVJNOworCiAJCW1pbnN6ID0g b2Zmc2V0b2ZlbmQoc3RydWN0IHZmaW9faW9tbXVfc3BhcHJfcmVnaXN0ZXJfbWVtb3J5LAogCQkJ CXNpemUpOwogCkBAIC05NzIsNiArMTAwNCwxMCBAQCBzdGF0aWMgbG9uZyB0Y2VfaW9tbXVfaW9j dGwodm9pZCAqaW9tbXVfZGF0YSwKIAkJaWYgKCFjb250YWluZXItPnYyKQogCQkJYnJlYWs7CiAK KwkJcmV0ID0gdGNlX2lvbW11X21tX3NldChjb250YWluZXIpOworCQlpZiAocmV0KQorCQkJcmV0 dXJuIHJldDsKKwogCQlpZiAoIXRjZV9ncm91cHNfYXR0YWNoZWQoY29udGFpbmVyKSkKIAkJCXJl dHVybiAtRU5YSU87CiAKQEAgLTEwMDYsNiArMTA0MiwxMCBAQCBzdGF0aWMgbG9uZyB0Y2VfaW9t bXVfaW9jdGwodm9pZCAqaW9tbXVfZGF0YSwKIAkJaWYgKCFjb250YWluZXItPnYyKQogCQkJYnJl YWs7CiAKKwkJcmV0ID0gdGNlX2lvbW11X21tX3NldChjb250YWluZXIpOworCQlpZiAocmV0KQor CQkJcmV0dXJuIHJldDsKKwogCQlpZiAoIXRjZV9ncm91cHNfYXR0YWNoZWQoY29udGFpbmVyKSkK IAkJCXJldHVybiAtRU5YSU87CiAKQEAgLTEwNDYsNyArMTA4Niw3IEBAIHN0YXRpYyB2b2lkIHRj ZV9pb21tdV9yZWxlYXNlX293bmVyc2hpcChzdHJ1Y3QgdGNlX2NvbnRhaW5lciAqY29udGFpbmVy LAogCQkJY29udGludWU7CiAKIAkJdGNlX2lvbW11X2NsZWFyKGNvbnRhaW5lciwgdGJsLCB0Ymwt Pml0X29mZnNldCwgdGJsLT5pdF9zaXplKTsKLQkJdGNlX2lvbW11X3VzZXJzcGFjZV92aWV3X2Zy ZWUodGJsKTsKKwkJdGNlX2lvbW11X3VzZXJzcGFjZV92aWV3X2ZyZWUodGJsLCBjb250YWluZXIt Pm1tKTsKIAkJaWYgKHRibC0+aXRfbWFwKQogCQkJaW9tbXVfcmVsZWFzZV9vd25lcnNoaXAodGJs KTsKIAotLSAKMi4xLjAKCgpGcm9tIDA4MGViMTM1NDJhODUzYjBlZTYwNjFmMTdiZjEyNDA3OWQw OGU2NGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEFsZXhleSBLYXJkYXNoZXZza2l5 IDxhaWtAb3psYWJzLnJ1PgpEYXRlOiBGcmksIDE3IE1hciAyMDE3IDAwOjQ4OjI3ICswMDAwClN1 YmplY3Q6IFtQQVRDSCAwNjcvMTEyXSBwb3dlcnBjL21tL2lvbW11LCB2ZmlvL3NwYXByOiBQdXQg cGFnZXMgb24gVkZJTwogY29udGFpbmVyIHNodXRkb3duCgpbIFVwc3RyZWFtIGNvbW1pdCA0YjZm YWQ3MDk3Zjg4MzMzNWI2ZDk2MjdjODgzY2I3ZjI3NmQ5NGM5IF0KCkF0IHRoZSBtb21lbnQgdGhl IHVzZXJzcGFjZSB0b29sIGlzIGV4cGVjdGVkIHRvIHJlcXVlc3QgcGlubmluZyBvZgp0aGUgZW50 aXJlIGd1ZXN0IFJBTSB3aGVuIFZGSU8gSU9NTVUgU1BBUFIgdjIgZHJpdmVyIGlzIHByZXNlbnQu CldoZW4gdGhlIHVzZXJzcGFjZSBwcm9jZXNzIGZpbmlzaGVzLCBhbGwgdGhlIHBpbm5lZCBwYWdl cyBuZWVkIHRvCmJlIHB1dDsgdGhpcyBpcyBkb25lIGFzIGEgcGFydCBvZiB0aGUgdXNlcnNwYWNl IG1lbW9yeSBjb250ZXh0IChNTSkKZGVzdHJ1Y3Rpb24gd2hpY2ggaGFwcGVucyBvbiB0aGUgdmVy eSBsYXN0IG1tZHJvcCgpLgoKVGhpcyBhcHByb2FjaCBoYXMgYSBwcm9ibGVtIHRoYXQgYSBNTSBv ZiB0aGUgdXNlcnNwYWNlIHByb2Nlc3MKbWF5IGxpdmUgbG9uZ2VyIHRoYW4gdGhlIHVzZXJzcGFj ZSBwcm9jZXNzIGl0c2VsZiBhcyBrZXJuZWwgdGhyZWFkcwp1c2UgdXNlcnNwYWNlIHByb2Nlc3Mg TU1zIHdoaWNoIHdhcyBydW5ubmluZyBvbiBhIENQVSB3aGVyZQp0aGUga2VybmVsIHRocmVhZCB3 YXMgc2NoZWR1bGVkIHRvLiBJZiB0aGlzIGhhcHBlbmVkLCB0aGUgTU0gcmVtYWlucwpyZWZlcmVu Y2VkIHVudGlsIHRoaXMgZXhhY3Qga2VybmVsIHRocmVhZCB3YWtlcyB1cCBhZ2FpbgphbmQgcmVs ZWFzZXMgdGhlIHZlcnkgbGFzdCByZWZlcmVuY2UgdG8gdGhlIE1NLCBvbiBhbiBpZGxlIHN5c3Rl bSB0aGlzCmNhbiB0YWtlIGV2ZW4gaG91cnMuCgpUaGlzIG1vdmVzIHByZXJlZ2lzdGVyZWQgcmVn aW9ucyB0cmFja2luZyBmcm9tIE1NIHRvIFZGSU87IGluc3RlYWRzIG9mCnVzaW5nIG1tX2lvbW11 X3RhYmxlX2dyb3VwX21lbV90Ojp1c2VkLCB0Y2VfY29udGFpbmVyOjpwcmVyZWdfbGlzdCBpcwph ZGRlZCBzbyBlYWNoIGNvbnRhaW5lciByZWxlYXNlcyByZWdpb25zIHdoaWNoIGl0IGhhcyBwcmUt cmVnaXN0ZXJlZC4KClRoaXMgY2hhbmdlcyB0aGUgdXNlcnNwYWNlIGludGVyZmFjZSB0byByZXR1 cm4gRUJVU1kgaWYgYSBtZW1vcnkKcmVnaW9uIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCBpbiBhIGNv bnRhaW5lci4gSG93ZXZlciBpdCBzaG91bGQgbm90CmhhdmUgYW55IHByYWN0aWNhbCBlZmZlY3Qg YXMgdGhlIG9ubHkgdXNlcnNwYWNlIHRvb2wgYXZhaWxhYmxlIG5vdwpkb2VzIHJlZ2lzdGVyIG1l bW9yeSByZWdpb24gb25jZSBwZXIgY29udGFpbmVyIGFueXdheS4KCkFzIHRjZV9pb21tdV9yZWdp c3Rlcl9wYWdlcy90Y2VfaW9tbXVfdW5yZWdpc3Rlcl9wYWdlcyBhcmUgY2FsbGVkCnVuZGVyIGNv bnRhaW5lci0+bG9jaywgdGhpcyBkb2VzIG5vdCBuZWVkIGFkZGl0aW9uYWwgbG9ja2luZy4KClNp Z25lZC1vZmYtYnk6IEFsZXhleSBLYXJkYXNoZXZza2l5IDxhaWtAb3psYWJzLnJ1PgpSZXZpZXdl ZC1ieTogTmljaG9sYXMgUGlnZ2luIDxucGlnZ2luQGdtYWlsLmNvbT4KQWNrZWQtYnk6IEFsZXgg V2lsbGlhbXNvbiA8YWxleC53aWxsaWFtc29uQHJlZGhhdC5jb20+ClJldmlld2VkLWJ5OiBEYXZp ZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KU2lnbmVkLW9mZi1ieTogTWlj aGFlbCBFbGxlcm1hbiA8bXBlQGVsbGVybWFuLmlkLmF1PgpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBM ZXZpbiA8YWxleGFuZGVyLmxldmluQHZlcml6b24uY29tPgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEty b2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0KIGFyY2gvcG93ZXJw Yy9tbS9tbXVfY29udGV4dF9ib29rM3M2NC5jIHwgIDQgKy0tCiBhcmNoL3Bvd2VycGMvbW0vbW11 X2NvbnRleHRfaW9tbXUuYyAgICB8IDExIC0tLS0tLQogZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVf c3BhcHJfdGNlLmMgICAgfCA2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiAz IGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9tbXVfY29udGV4dF9ib29rM3M2NC5jIGIvYXJjaC9wb3dl cnBjL21tL21tdV9jb250ZXh0X2Jvb2szczY0LmMKaW5kZXggYWQ4MjczNS4uNzNiZjZlMSAxMDA2 NDQKLS0tIGEvYXJjaC9wb3dlcnBjL21tL21tdV9jb250ZXh0X2Jvb2szczY0LmMKKysrIGIvYXJj aC9wb3dlcnBjL21tL21tdV9jb250ZXh0X2Jvb2szczY0LmMKQEAgLTE1NiwxMyArMTU2LDExIEBA IHN0YXRpYyBpbmxpbmUgdm9pZCBkZXN0cm95X3BhZ2V0YWJsZV9wYWdlKHN0cnVjdCBtbV9zdHJ1 Y3QgKm1tKQogfQogI2VuZGlmCiAKLQogdm9pZCBkZXN0cm95X2NvbnRleHQoc3RydWN0IG1tX3N0 cnVjdCAqbW0pCiB7CiAjaWZkZWYgQ09ORklHX1NQQVBSX1RDRV9JT01NVQotCW1tX2lvbW11X2Ns ZWFudXAobW0pOworCVdBUk5fT05fT05DRSghbGlzdF9lbXB0eSgmbW0tPmNvbnRleHQuaW9tbXVf Z3JvdXBfbWVtX2xpc3QpKTsKICNlbmRpZgotCiAjaWZkZWYgQ09ORklHX1BQQ19JQ1NXWAogCWRy b3BfY29wKG1tLT5jb250ZXh0LmFjb3AsIG1tKTsKIAlrZnJlZShtbS0+Y29udGV4dC5jb3BfbG9j a3ApOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL21tdV9jb250ZXh0X2lvbW11LmMgYi9h cmNoL3Bvd2VycGMvbW0vbW11X2NvbnRleHRfaW9tbXUuYwppbmRleCA0YzZkYjA5Li4xMDRiYWQw IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbW0vbW11X2NvbnRleHRfaW9tbXUuYworKysgYi9h cmNoL3Bvd2VycGMvbW0vbW11X2NvbnRleHRfaW9tbXUuYwpAQCAtMzY1LDE0ICszNjUsMyBAQCB2 b2lkIG1tX2lvbW11X2luaXQoc3RydWN0IG1tX3N0cnVjdCAqbW0pCiB7CiAJSU5JVF9MSVNUX0hF QURfUkNVKCZtbS0+Y29udGV4dC5pb21tdV9ncm91cF9tZW1fbGlzdCk7CiB9Ci0KLXZvaWQgbW1f aW9tbXVfY2xlYW51cChzdHJ1Y3QgbW1fc3RydWN0ICptbSkKLXsKLQlzdHJ1Y3QgbW1faW9tbXVf dGFibGVfZ3JvdXBfbWVtX3QgKm1lbSwgKnRtcDsKLQotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2Fm ZShtZW0sIHRtcCwgJm1tLT5jb250ZXh0LmlvbW11X2dyb3VwX21lbV9saXN0LAotCQkJbmV4dCkg ewotCQlsaXN0X2RlbF9yY3UoJm1lbS0+bmV4dCk7Ci0JCW1tX2lvbW11X2RvX2ZyZWUobWVtKTsK LQl9Ci19CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV9zcGFwcl90Y2UuYyBi L2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3NwYXByX3RjZS5jCmluZGV4IDRiZWJlODEuLjMzZTU5 OTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3NwYXByX3RjZS5jCisrKyBi L2RyaXZlcnMvdmZpby92ZmlvX2lvbW11X3NwYXByX3RjZS5jCkBAIC04OSw2ICs4OSwxNSBAQCBz dHJ1Y3QgdGNlX2lvbW11X2dyb3VwIHsKIH07CiAKIC8qCisgKiBBIGNvbnRhaW5lciBuZWVkcyB0 byByZW1lbWJlciB3aGljaCBwcmVyZWdpc3RlcmVkIHJlZ2lvbiAgaXQgaGFzCisgKiByZWZlcmVu Y2VkIHRvIGRvIHByb3BlciBjbGVhbnVwIGF0IHRoZSB1c2Vyc3BhY2UgcHJvY2VzcyBleGl0Lgor ICovCitzdHJ1Y3QgdGNlX2lvbW11X3ByZXJlZyB7CisJc3RydWN0IGxpc3RfaGVhZCBuZXh0Owor CXN0cnVjdCBtbV9pb21tdV90YWJsZV9ncm91cF9tZW1fdCAqbWVtOworfTsKKworLyoKICAqIFRo ZSBjb250YWluZXIgZGVzY3JpcHRvciBzdXBwb3J0cyBvbmx5IGEgc2luZ2xlIGdyb3VwIHBlciBj b250YWluZXIuCiAgKiBSZXF1aXJlZCBieSB0aGUgQVBJIGFzIHRoZSBjb250YWluZXIgaXMgbm90 IHN1cHBsaWVkIHdpdGggdGhlIElPTU1VIGdyb3VwCiAgKiBhdCB0aGUgbW9tZW50IG9mIGluaXRp YWxpemF0aW9uLgpAQCAtMTAxLDYgKzExMCw3IEBAIHN0cnVjdCB0Y2VfY29udGFpbmVyIHsKIAlz dHJ1Y3QgbW1fc3RydWN0ICptbTsKIAlzdHJ1Y3QgaW9tbXVfdGFibGUgKnRhYmxlc1tJT01NVV9U QUJMRV9HUk9VUF9NQVhfVEFCTEVTXTsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGdyb3VwX2xpc3Q7CisJ c3RydWN0IGxpc3RfaGVhZCBwcmVyZWdfbGlzdDsKIH07CiAKIHN0YXRpYyBsb25nIHRjZV9pb21t dV9tbV9zZXQoc3RydWN0IHRjZV9jb250YWluZXIgKmNvbnRhaW5lcikKQEAgLTExNywxMCArMTI3 LDI3IEBAIHN0YXRpYyBsb25nIHRjZV9pb21tdV9tbV9zZXQoc3RydWN0IHRjZV9jb250YWluZXIg KmNvbnRhaW5lcikKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGxvbmcgdGNlX2lvbW11X3ByZXJl Z19mcmVlKHN0cnVjdCB0Y2VfY29udGFpbmVyICpjb250YWluZXIsCisJCXN0cnVjdCB0Y2VfaW9t bXVfcHJlcmVnICp0Y2VtZW0pCit7CisJbG9uZyByZXQ7CisKKwlyZXQgPSBtbV9pb21tdV9wdXQo Y29udGFpbmVyLT5tbSwgdGNlbWVtLT5tZW0pOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisK KwlsaXN0X2RlbCgmdGNlbWVtLT5uZXh0KTsKKwlrZnJlZSh0Y2VtZW0pOworCisJcmV0dXJuIDA7 Cit9CisKIHN0YXRpYyBsb25nIHRjZV9pb21tdV91bnJlZ2lzdGVyX3BhZ2VzKHN0cnVjdCB0Y2Vf Y29udGFpbmVyICpjb250YWluZXIsCiAJCV9fdTY0IHZhZGRyLCBfX3U2NCBzaXplKQogewogCXN0 cnVjdCBtbV9pb21tdV90YWJsZV9ncm91cF9tZW1fdCAqbWVtOworCXN0cnVjdCB0Y2VfaW9tbXVf cHJlcmVnICp0Y2VtZW07CisJYm9vbCBmb3VuZCA9IGZhbHNlOwogCiAJaWYgKCh2YWRkciAmIH5Q QUdFX01BU0spIHx8IChzaXplICYgflBBR0VfTUFTSykpCiAJCXJldHVybiAtRUlOVkFMOwpAQCAt MTI5LDcgKzE1NiwxNyBAQCBzdGF0aWMgbG9uZyB0Y2VfaW9tbXVfdW5yZWdpc3Rlcl9wYWdlcyhz dHJ1Y3QgdGNlX2NvbnRhaW5lciAqY29udGFpbmVyLAogCWlmICghbWVtKQogCQlyZXR1cm4gLUVO T0VOVDsKIAotCXJldHVybiBtbV9pb21tdV9wdXQoY29udGFpbmVyLT5tbSwgbWVtKTsKKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5KHRjZW1lbSwgJmNvbnRhaW5lci0+cHJlcmVnX2xpc3QsIG5leHQpIHsK KwkJaWYgKHRjZW1lbS0+bWVtID09IG1lbSkgeworCQkJZm91bmQgPSB0cnVlOworCQkJYnJlYWs7 CisJCX0KKwl9CisKKwlpZiAoIWZvdW5kKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCXJldHVybiB0 Y2VfaW9tbXVfcHJlcmVnX2ZyZWUoY29udGFpbmVyLCB0Y2VtZW0pOwogfQogCiBzdGF0aWMgbG9u ZyB0Y2VfaW9tbXVfcmVnaXN0ZXJfcGFnZXMoc3RydWN0IHRjZV9jb250YWluZXIgKmNvbnRhaW5l ciwKQEAgLTEzNywxNiArMTc0LDI5IEBAIHN0YXRpYyBsb25nIHRjZV9pb21tdV9yZWdpc3Rlcl9w YWdlcyhzdHJ1Y3QgdGNlX2NvbnRhaW5lciAqY29udGFpbmVyLAogewogCWxvbmcgcmV0ID0gMDsK IAlzdHJ1Y3QgbW1faW9tbXVfdGFibGVfZ3JvdXBfbWVtX3QgKm1lbSA9IE5VTEw7CisJc3RydWN0 IHRjZV9pb21tdV9wcmVyZWcgKnRjZW1lbTsKIAl1bnNpZ25lZCBsb25nIGVudHJpZXMgPSBzaXpl ID4+IFBBR0VfU0hJRlQ7CiAKIAlpZiAoKHZhZGRyICYgflBBR0VfTUFTSykgfHwgKHNpemUgJiB+ UEFHRV9NQVNLKSB8fAogCQkJKCh2YWRkciArIHNpemUpIDwgdmFkZHIpKQogCQlyZXR1cm4gLUVJ TlZBTDsKIAorCW1lbSA9IG1tX2lvbW11X2ZpbmQoY29udGFpbmVyLT5tbSwgdmFkZHIsIGVudHJp ZXMpOworCWlmIChtZW0pIHsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeSh0Y2VtZW0sICZjb250YWlu ZXItPnByZXJlZ19saXN0LCBuZXh0KSB7CisJCQlpZiAodGNlbWVtLT5tZW0gPT0gbWVtKQorCQkJ CXJldHVybiAtRUJVU1k7CisJCX0KKwl9CisKIAlyZXQgPSBtbV9pb21tdV9nZXQoY29udGFpbmVy LT5tbSwgdmFkZHIsIGVudHJpZXMsICZtZW0pOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAK Kwl0Y2VtZW0gPSBremFsbG9jKHNpemVvZigqdGNlbWVtKSwgR0ZQX0tFUk5FTCk7CisJdGNlbWVt LT5tZW0gPSBtZW07CisJbGlzdF9hZGQoJnRjZW1lbS0+bmV4dCwgJmNvbnRhaW5lci0+cHJlcmVn X2xpc3QpOworCiAJY29udGFpbmVyLT5lbmFibGVkID0gdHJ1ZTsKIAogCXJldHVybiAwOwpAQCAt MzMzLDYgKzM4Myw3IEBAIHN0YXRpYyB2b2lkICp0Y2VfaW9tbXVfb3Blbih1bnNpZ25lZCBsb25n IGFyZykKIAogCW11dGV4X2luaXQoJmNvbnRhaW5lci0+bG9jayk7CiAJSU5JVF9MSVNUX0hFQURf UkNVKCZjb250YWluZXItPmdyb3VwX2xpc3QpOworCUlOSVRfTElTVF9IRUFEX1JDVSgmY29udGFp bmVyLT5wcmVyZWdfbGlzdCk7CiAKIAljb250YWluZXItPnYyID0gYXJnID09IFZGSU9fU1BBUFJf VENFX3YyX0lPTU1VOwogCkBAIC0zNzEsNiArNDIyLDE0IEBAIHN0YXRpYyB2b2lkIHRjZV9pb21t dV9yZWxlYXNlKHZvaWQgKmlvbW11X2RhdGEpCiAJCXRjZV9pb21tdV9mcmVlX3RhYmxlKGNvbnRh aW5lciwgdGJsKTsKIAl9CiAKKwl3aGlsZSAoIWxpc3RfZW1wdHkoJmNvbnRhaW5lci0+cHJlcmVn X2xpc3QpKSB7CisJCXN0cnVjdCB0Y2VfaW9tbXVfcHJlcmVnICp0Y2VtZW07CisKKwkJdGNlbWVt ID0gbGlzdF9maXJzdF9lbnRyeSgmY29udGFpbmVyLT5wcmVyZWdfbGlzdCwKKwkJCQlzdHJ1Y3Qg dGNlX2lvbW11X3ByZXJlZywgbmV4dCk7CisJCVdBUk5fT05fT05DRSh0Y2VfaW9tbXVfcHJlcmVn X2ZyZWUoY29udGFpbmVyLCB0Y2VtZW0pKTsKKwl9CisKIAl0Y2VfaW9tbXVfZGlzYWJsZShjb250 YWluZXIpOwogCWlmIChjb250YWluZXItPm1tKQogCQltbWRyb3AoY29udGFpbmVyLT5tbSk7Ci0t IAoyLjEuMAoKCkZyb20gMmU2MGJhY2EyMzViMDVkNDAyNjIwN2UzMWI2ZmMzODVjMGMxYzEyMiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQWxleGV5IEthcmRhc2hldnNraXkgPGFpa0Bv emxhYnMucnU+CkRhdGU6IEZyaSwgMTcgTWFyIDIwMTcgMDA6NDg6MjggKzAwMDAKU3ViamVjdDog W1BBVENIIDA2OC8xMTJdIHZmaW8vc3BhcHI6IEFkZCBhIGhlbHBlciB0byBjcmVhdGUgZGVmYXVs dCBETUEgd2luZG93CgpbIFVwc3RyZWFtIGNvbW1pdCA2ZjAxY2M2OTJhMTY0MDUyMzVkNWMzNDA1 NjQ1NWIxODI2ODIxMjNjIF0KClRoZXJlIGlzIGFscmVhZHkgYSBoZWxwZXIgdG8gY3JlYXRlIGEg RE1BIHdpbmRvdyB3aGljaCBkb2VzIGFsbG9jYXRlCmEgdGFibGUgYW5kIHByb2dyYW1zIGl0IHRv IHRoZSBJT01NVSBncm91cC4gSG93ZXZlcgp0Y2VfaW9tbXVfdGFrZV9vd25lcnNoaXBfZGR3KCkg ZGlkIG5vdCB1c2UgaXQgYW5kIGRpZCB0aGVzZSAyIGNhbGxzCml0c2VsZiB0byBzaW1wbGlmeSBl cnJvciBwYXRoLgoKU2luY2Ugd2UgYXJlIGdvaW5nIHRvIGRlbGF5IHRoZSBkZWZhdWx0IHdpbmRv dyBjcmVhdGlvbiB0aWxsCnRoZSBkZWZhdWx0IHdpbmRvdyBpcyBhY2Nlc3NlZC9yZW1vdmVkIG9y IG5ldyB3aW5kb3cgaXMgYWRkZWQsCndlIG5lZWQgYSBoZWxwZXIgdG8gY3JlYXRlIGEgZGVmYXVs dCB3aW5kb3cgZnJvbSBhbGwgdGhlc2UgY2FzZXMuCgpUaGlzIGFkZHMgdGNlX2lvbW11X2NyZWF0 ZV9kZWZhdWx0X3dpbmRvdygpLiBTaW5jZSBpdCByZWxpZXMgb24KYSBWRklPIGNvbnRhaW5lciB0 byBoYXZlIGF0IGxlYXN0IG9uZSBJT01NVSBncm91cCAoZm9yIGZ1dHVyZSB1c2UpLAp0aGlzIGNo YW5nZXMgdGNlX2lvbW11X2F0dGFjaF9ncm91cCgpIHRvIGFkZCBhIGdyb3VwIHRvIHRoZSBjb250 YWluZXIKZmlyc3QgYW5kIHRoZW4gY2FsbCB0aGUgbmV3IGhlbHBlci4KClNpZ25lZC1vZmYtYnk6 IEFsZXhleSBLYXJkYXNoZXZza2l5IDxhaWtAb3psYWJzLnJ1PgpSZXZpZXdlZC1ieTogRGF2aWQg R2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+CkFja2VkLWJ5OiBBbGV4IFdpbGxp YW1zb24gPGFsZXgud2lsbGlhbXNvbkByZWRoYXQuY29tPgpTaWduZWQtb2ZmLWJ5OiBNaWNoYWVs IEVsbGVybWFuIDxtcGVAZWxsZXJtYW4uaWQuYXU+ClNpZ25lZC1vZmYtYnk6IFNhc2hhIExldmlu IDxhbGV4YW5kZXIubGV2aW5AdmVyaXpvbi5jb20+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgt SGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogZHJpdmVycy92ZmlvL3Zm aW9faW9tbXVfc3BhcHJfdGNlLmMgfCA4NyArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfc3BhcHJfdGNlLmMgYi9kcml2 ZXJzL3ZmaW8vdmZpb19pb21tdV9zcGFwcl90Y2UuYwppbmRleCAzM2U1OTk1Li5lOTVjM2ViIDEw MDY0NAotLS0gYS9kcml2ZXJzL3ZmaW8vdmZpb19pb21tdV9zcGFwcl90Y2UuYworKysgYi9kcml2 ZXJzL3ZmaW8vdmZpb19pb21tdV9zcGFwcl90Y2UuYwpAQCAtNzg0LDYgKzc4NCwyOSBAQCBzdGF0 aWMgbG9uZyB0Y2VfaW9tbXVfcmVtb3ZlX3dpbmRvdyhzdHJ1Y3QgdGNlX2NvbnRhaW5lciAqY29u dGFpbmVyLAogCXJldHVybiAwOwogfQogCitzdGF0aWMgbG9uZyB0Y2VfaW9tbXVfY3JlYXRlX2Rl ZmF1bHRfd2luZG93KHN0cnVjdCB0Y2VfY29udGFpbmVyICpjb250YWluZXIpCit7CisJbG9uZyBy ZXQ7CisJX191NjQgc3RhcnRfYWRkciA9IDA7CisJc3RydWN0IHRjZV9pb21tdV9ncm91cCAqdGNl Z3JwOworCXN0cnVjdCBpb21tdV90YWJsZV9ncm91cCAqdGFibGVfZ3JvdXA7CisKKwlpZiAoIXRj ZV9ncm91cHNfYXR0YWNoZWQoY29udGFpbmVyKSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwl0Y2Vn cnAgPSBsaXN0X2ZpcnN0X2VudHJ5KCZjb250YWluZXItPmdyb3VwX2xpc3QsCisJCQlzdHJ1Y3Qg dGNlX2lvbW11X2dyb3VwLCBuZXh0KTsKKwl0YWJsZV9ncm91cCA9IGlvbW11X2dyb3VwX2dldF9p b21tdWRhdGEodGNlZ3JwLT5ncnApOworCWlmICghdGFibGVfZ3JvdXApCisJCXJldHVybiAtRU5P REVWOworCisJcmV0ID0gdGNlX2lvbW11X2NyZWF0ZV93aW5kb3coY29udGFpbmVyLCBJT01NVV9Q QUdFX1NISUZUXzRLLAorCQkJdGFibGVfZ3JvdXAtPnRjZTMyX3NpemUsIDEsICZzdGFydF9hZGRy KTsKKwlXQVJOX09OX09OQ0UoIXJldCAmJiBzdGFydF9hZGRyKTsKKworCXJldHVybiByZXQ7Cit9 CisKIHN0YXRpYyBsb25nIHRjZV9pb21tdV9pb2N0bCh2b2lkICppb21tdV9kYXRhLAogCQkJCSB1 bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIHsKQEAgLTExOTksOSArMTIyMiw2 IEBAIHN0YXRpYyB2b2lkIHRjZV9pb21tdV9yZWxlYXNlX293bmVyc2hpcF9kZHcoc3RydWN0IHRj ZV9jb250YWluZXIgKmNvbnRhaW5lciwKIHN0YXRpYyBsb25nIHRjZV9pb21tdV90YWtlX293bmVy c2hpcF9kZHcoc3RydWN0IHRjZV9jb250YWluZXIgKmNvbnRhaW5lciwKIAkJc3RydWN0IGlvbW11 X3RhYmxlX2dyb3VwICp0YWJsZV9ncm91cCkKIHsKLQlsb25nIGksIHJldCA9IDA7Ci0Jc3RydWN0 IGlvbW11X3RhYmxlICp0YmwgPSBOVUxMOwotCiAJaWYgKCF0YWJsZV9ncm91cC0+b3BzLT5jcmVh dGVfdGFibGUgfHwgIXRhYmxlX2dyb3VwLT5vcHMtPnNldF93aW5kb3cgfHwKIAkJCSF0YWJsZV9n cm91cC0+b3BzLT5yZWxlYXNlX293bmVyc2hpcCkgewogCQlXQVJOX09OX09OQ0UoMSk7CkBAIC0x MjEwLDQ3ICsxMjMwLDcgQEAgc3RhdGljIGxvbmcgdGNlX2lvbW11X3Rha2Vfb3duZXJzaGlwX2Rk dyhzdHJ1Y3QgdGNlX2NvbnRhaW5lciAqY29udGFpbmVyLAogCiAJdGFibGVfZ3JvdXAtPm9wcy0+ dGFrZV9vd25lcnNoaXAodGFibGVfZ3JvdXApOwogCi0JLyoKLQkgKiBJZiBpdCB0aGUgZmlyc3Qg Z3JvdXAgYXR0YWNoZWQsIGNoZWNrIGlmIHRoZXJlIGlzCi0JICogYSBkZWZhdWx0IERNQSB3aW5k b3cgYW5kIGNyZWF0ZSBvbmUgaWYgbm9uZSBhcwotCSAqIHRoZSB1c2Vyc3BhY2UgZXhwZWN0cyBp dCB0byBleGlzdC4KLQkgKi8KLQlpZiAoIXRjZV9ncm91cHNfYXR0YWNoZWQoY29udGFpbmVyKSAm JiAhY29udGFpbmVyLT50YWJsZXNbMF0pIHsKLQkJcmV0ID0gdGNlX2lvbW11X2NyZWF0ZV90YWJs ZShjb250YWluZXIsCi0JCQkJdGFibGVfZ3JvdXAsCi0JCQkJMCwgLyogd2luZG93IG51bWJlciAq LwotCQkJCUlPTU1VX1BBR0VfU0hJRlRfNEssCi0JCQkJdGFibGVfZ3JvdXAtPnRjZTMyX3NpemUs Ci0JCQkJMSwgLyogZGVmYXVsdCBsZXZlbHMgKi8KLQkJCQkmdGJsKTsKLQkJaWYgKHJldCkKLQkJ CWdvdG8gcmVsZWFzZV9leGl0OwotCQllbHNlCi0JCQljb250YWluZXItPnRhYmxlc1swXSA9IHRi bDsKLQl9Ci0KLQkvKiBTZXQgYWxsIHdpbmRvd3MgdG8gdGhlIG5ldyBncm91cCAqLwotCWZvciAo aSA9IDA7IGkgPCBJT01NVV9UQUJMRV9HUk9VUF9NQVhfVEFCTEVTOyArK2kpIHsKLQkJdGJsID0g Y29udGFpbmVyLT50YWJsZXNbaV07Ci0KLQkJaWYgKCF0YmwpCi0JCQljb250aW51ZTsKLQotCQkv KiBTZXQgdGhlIGRlZmF1bHQgd2luZG93IHRvIGEgbmV3IGdyb3VwICovCi0JCXJldCA9IHRhYmxl X2dyb3VwLT5vcHMtPnNldF93aW5kb3codGFibGVfZ3JvdXAsIGksIHRibCk7Ci0JCWlmIChyZXQp Ci0JCQlnb3RvIHJlbGVhc2VfZXhpdDsKLQl9Ci0KIAlyZXR1cm4gMDsKLQotcmVsZWFzZV9leGl0 OgotCWZvciAoaSA9IDA7IGkgPCBJT01NVV9UQUJMRV9HUk9VUF9NQVhfVEFCTEVTOyArK2kpCi0J CXRhYmxlX2dyb3VwLT5vcHMtPnVuc2V0X3dpbmRvdyh0YWJsZV9ncm91cCwgaSk7Ci0KLQl0YWJs ZV9ncm91cC0+b3BzLT5yZWxlYXNlX293bmVyc2hpcCh0YWJsZV9ncm91cCk7Ci0KLQlyZXR1cm4g cmV0OwogfQogCiBzdGF0aWMgaW50IHRjZV9pb21tdV9hdHRhY2hfZ3JvdXAodm9pZCAqaW9tbXVf ZGF0YSwKQEAgLTEyNjAsNiArMTI0MCw3IEBAIHN0YXRpYyBpbnQgdGNlX2lvbW11X2F0dGFjaF9n cm91cCh2b2lkICppb21tdV9kYXRhLAogCXN0cnVjdCB0Y2VfY29udGFpbmVyICpjb250YWluZXIg PSBpb21tdV9kYXRhOwogCXN0cnVjdCBpb21tdV90YWJsZV9ncm91cCAqdGFibGVfZ3JvdXA7CiAJ c3RydWN0IHRjZV9pb21tdV9ncm91cCAqdGNlZ3JwID0gTlVMTDsKKwlib29sIGNyZWF0ZV9kZWZh dWx0X3dpbmRvdyA9IGZhbHNlOwogCiAJbXV0ZXhfbG9jaygmY29udGFpbmVyLT5sb2NrKTsKIApA QCAtMTMwMiwxNCArMTI4MywzMCBAQCBzdGF0aWMgaW50IHRjZV9pb21tdV9hdHRhY2hfZ3JvdXAo dm9pZCAqaW9tbXVfZGF0YSwKIAl9CiAKIAlpZiAoIXRhYmxlX2dyb3VwLT5vcHMgfHwgIXRhYmxl X2dyb3VwLT5vcHMtPnRha2Vfb3duZXJzaGlwIHx8Ci0JCQkhdGFibGVfZ3JvdXAtPm9wcy0+cmVs ZWFzZV9vd25lcnNoaXApCisJCQkhdGFibGVfZ3JvdXAtPm9wcy0+cmVsZWFzZV9vd25lcnNoaXAp IHsKIAkJcmV0ID0gdGNlX2lvbW11X3Rha2Vfb3duZXJzaGlwKGNvbnRhaW5lciwgdGFibGVfZ3Jv dXApOwotCWVsc2UKKwl9IGVsc2UgewogCQlyZXQgPSB0Y2VfaW9tbXVfdGFrZV9vd25lcnNoaXBf ZGR3KGNvbnRhaW5lciwgdGFibGVfZ3JvdXApOworCQlpZiAoIXRjZV9ncm91cHNfYXR0YWNoZWQo Y29udGFpbmVyKSAmJiAhY29udGFpbmVyLT50YWJsZXNbMF0pCisJCQljcmVhdGVfZGVmYXVsdF93 aW5kb3cgPSB0cnVlOworCX0KIAogCWlmICghcmV0KSB7CiAJCXRjZWdycC0+Z3JwID0gaW9tbXVf Z3JvdXA7CiAJCWxpc3RfYWRkKCZ0Y2VncnAtPm5leHQsICZjb250YWluZXItPmdyb3VwX2xpc3Qp OworCQkvKgorCQkgKiBJZiBpdCB0aGUgZmlyc3QgZ3JvdXAgYXR0YWNoZWQsIGNoZWNrIGlmIHRo ZXJlIGlzCisJCSAqIGEgZGVmYXVsdCBETUEgd2luZG93IGFuZCBjcmVhdGUgb25lIGlmIG5vbmUg YXMKKwkJICogdGhlIHVzZXJzcGFjZSBleHBlY3RzIGl0IHRvIGV4aXN0LgorCQkgKi8KKwkJaWYg KGNyZWF0ZV9kZWZhdWx0X3dpbmRvdykgeworCQkJcmV0ID0gdGNlX2lvbW11X2NyZWF0ZV9kZWZh dWx0X3dpbmRvdyhjb250YWluZXIpOworCQkJaWYgKHJldCkgeworCQkJCWxpc3RfZGVsKCZ0Y2Vn cnAtPm5leHQpOworCQkJCXRjZV9pb21tdV9yZWxlYXNlX293bmVyc2hpcF9kZHcoY29udGFpbmVy LAorCQkJCQkJdGFibGVfZ3JvdXApOworCQkJfQorCQl9CiAJfQogCiB1bmxvY2tfZXhpdDoKLS0g CjIuMS4wCgoKRnJvbSA1M2UxODk2OGE5YzA3NTNlNTQyY2M0ZjZiMGNjMmRhNWRiNjRmZmQ5IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS2FyZGFzaGV2c2tpeSA8YWlrQG96 bGFicy5ydT4KRGF0ZTogRnJpLCAxNyBNYXIgMjAxNyAwMDo0ODoyOSArMDAwMApTdWJqZWN0OiBb UEFUQ0ggMDY5LzExMl0gdmZpby9zcGFwcjogUG9zdHBvbmUgZGVmYXVsdCB3aW5kb3cgY3JlYXRp b24KClsgVXBzdHJlYW0gY29tbWl0IGQ5YzcyODk0OWRkYzlkZTU3MzRiZjNiMTJlYTkwNmNhOGE3 N2YyYTAgXQoKV2UgYXJlIGdvaW5nIHRvIGFsbG93IHRoZSB1c2Vyc3BhY2UgdG8gY29uZmlndXJl IGNvbnRhaW5lciBpbgpvbmUgbWVtb3J5IGNvbnRleHQgYW5kIHBhc3MgY29udGFpbmVyIGZkIHRv IGFub3RoZXIgc28Kd2UgYXJlIHBvc3Rwb25pbmcgbWVtb3J5IGFsbG9jYXRpb25zIGFjY291bnRl ZCBhZ2FpbnN0CnRoZSBsb2NrZWQgbWVtb3J5IGxpbWl0LiBPbmUgb2YgcHJldmlvdXMgcGF0Y2hl cyB0b29rIGNhcmUgb2YKaXRfdXNlcnNwYWNlLgoKQXQgdGhlIG1vbWVudCB3ZSBjcmVhdGUgdGhl IGRlZmF1bHQgRE1BIHdpbmRvdyB3aGVuIHRoZSBmaXJzdCBncm91cCBpcwphdHRhY2hlZCB0byBh IGNvbnRhaW5lcjsgdGhpcyBpcyBkb25lIGZvciB0aGUgdXNlcnNwYWNlIHdoaWNoIGlzIG5vdApE RFctYXdhcmUgYnV0IGZhbWlsaWFyIHdpdGggdGhlIFNQQVBSIFRDRSBJT01NVSB2MiBpbiB0aGUg cGFydCBvZiBtZW1vcnkKcHJlLXJlZ2lzdHJhdGlvbiAtIHN1Y2ggY2xpZW50IGV4cGVjdHMgdGhl IGRlZmF1bHQgRE1BIHdpbmRvdyB0byBleGlzdC4KClRoaXMgcG9zdHBvbmVzIHRoZSBkZWZhdWx0 IERNQSB3aW5kb3cgYWxsb2NhdGlvbiB0aWxsIG9uZSBvZgp0aGUgZm9sbGl3aW5nIGhhcHBlbnM6 CjEuIGZpcnN0IG1hcC91bm1hcCByZXF1ZXN0IGFycml2ZXM7CjIuIG5ldyB3aW5kb3cgaXMgcmVx dWVzdGVkOwpUaGlzIGFkZHMgbm9vcCBmb3IgdGhlIGNhc2Ugd2hlbiB0aGUgdXNlcnNwYWNlIHJl cXVlc3RlZCByZW1vdmFsCm9mIHRoZSBkZWZhdWx0IHdpbmRvdyB3aGljaCBoYXMgbm90IGJlZW4g Y3JlYXRlZCB5ZXQuCgpTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgS2FyZGFzaGV2c2tpeSA8YWlrQG96 bGFicy5ydT4KUmV2aWV3ZWQtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFy LmlkLmF1PgpBY2tlZC1ieTogQWxleCBXaWxsaWFtc29uIDxhbGV4LndpbGxpYW1zb25AcmVkaGF0 LmNvbT4KU2lnbmVkLW9mZi1ieTogTWljaGFlbCBFbGxlcm1hbiA8bXBlQGVsbGVybWFuLmlkLmF1 PgpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8YWxleGFuZGVyLmxldmluQHZlcml6b24uY29t PgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRp b24ub3JnPgotLS0KIGRyaXZlcnMvdmZpby92ZmlvX2lvbW11X3NwYXByX3RjZS5jIHwgNDAgKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI1IGlu c2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby92 ZmlvX2lvbW11X3NwYXByX3RjZS5jIGIvZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfc3BhcHJfdGNl LmMKaW5kZXggZTk1YzNlYi4uYzg4MjM1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy92ZmlvL3ZmaW9f aW9tbXVfc3BhcHJfdGNlLmMKKysrIGIvZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfc3BhcHJfdGNl LmMKQEAgLTEwNiw2ICsxMDYsNyBAQCBzdHJ1Y3QgdGNlX2NvbnRhaW5lciB7CiAJc3RydWN0IG11 dGV4IGxvY2s7CiAJYm9vbCBlbmFibGVkOwogCWJvb2wgdjI7CisJYm9vbCBkZWZfd2luZG93X3Bl bmRpbmc7CiAJdW5zaWduZWQgbG9uZyBsb2NrZWRfcGFnZXM7CiAJc3RydWN0IG1tX3N0cnVjdCAq bW07CiAJc3RydWN0IGlvbW11X3RhYmxlICp0YWJsZXNbSU9NTVVfVEFCTEVfR1JPVVBfTUFYX1RB QkxFU107CkBAIC03OTEsNiArNzkyLDkgQEAgc3RhdGljIGxvbmcgdGNlX2lvbW11X2NyZWF0ZV9k ZWZhdWx0X3dpbmRvdyhzdHJ1Y3QgdGNlX2NvbnRhaW5lciAqY29udGFpbmVyKQogCXN0cnVjdCB0 Y2VfaW9tbXVfZ3JvdXAgKnRjZWdycDsKIAlzdHJ1Y3QgaW9tbXVfdGFibGVfZ3JvdXAgKnRhYmxl X2dyb3VwOwogCisJaWYgKCFjb250YWluZXItPmRlZl93aW5kb3dfcGVuZGluZykKKwkJcmV0dXJu IDA7CisKIAlpZiAoIXRjZV9ncm91cHNfYXR0YWNoZWQoY29udGFpbmVyKSkKIAkJcmV0dXJuIC1F Tk9ERVY7CiAKQEAgLTgwNCw2ICs4MDgsOSBAQCBzdGF0aWMgbG9uZyB0Y2VfaW9tbXVfY3JlYXRl X2RlZmF1bHRfd2luZG93KHN0cnVjdCB0Y2VfY29udGFpbmVyICpjb250YWluZXIpCiAJCQl0YWJs ZV9ncm91cC0+dGNlMzJfc2l6ZSwgMSwgJnN0YXJ0X2FkZHIpOwogCVdBUk5fT05fT05DRSghcmV0 ICYmIHN0YXJ0X2FkZHIpOwogCisJaWYgKCFyZXQpCisJCWNvbnRhaW5lci0+ZGVmX3dpbmRvd19w ZW5kaW5nID0gZmFsc2U7CisKIAlyZXR1cm4gcmV0OwogfQogCkBAIC05MDcsNiArOTE0LDEwIEBA IHN0YXRpYyBsb25nIHRjZV9pb21tdV9pb2N0bCh2b2lkICppb21tdV9kYXRhLAogCQkJCVZGSU9f RE1BX01BUF9GTEFHX1dSSVRFKSkKIAkJCXJldHVybiAtRUlOVkFMOwogCisJCXJldCA9IHRjZV9p b21tdV9jcmVhdGVfZGVmYXVsdF93aW5kb3coY29udGFpbmVyKTsKKwkJaWYgKHJldCkKKwkJCXJl dHVybiByZXQ7CisKIAkJbnVtID0gdGNlX2lvbW11X2ZpbmRfdGFibGUoY29udGFpbmVyLCBwYXJh bS5pb3ZhLCAmdGJsKTsKIAkJaWYgKG51bSA8IDApCiAJCQlyZXR1cm4gLUVOWElPOwpAQCAtOTcw LDYgKzk4MSwxMCBAQCBzdGF0aWMgbG9uZyB0Y2VfaW9tbXVfaW9jdGwodm9pZCAqaW9tbXVfZGF0 YSwKIAkJaWYgKHBhcmFtLmZsYWdzKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKKwkJcmV0ID0gdGNl X2lvbW11X2NyZWF0ZV9kZWZhdWx0X3dpbmRvdyhjb250YWluZXIpOworCQlpZiAocmV0KQorCQkJ cmV0dXJuIHJldDsKKwogCQludW0gPSB0Y2VfaW9tbXVfZmluZF90YWJsZShjb250YWluZXIsIHBh cmFtLmlvdmEsICZ0YmwpOwogCQlpZiAobnVtIDwgMCkKIAkJCXJldHVybiAtRU5YSU87CkBAIC0x MTA3LDYgKzExMjIsMTAgQEAgc3RhdGljIGxvbmcgdGNlX2lvbW11X2lvY3RsKHZvaWQgKmlvbW11 X2RhdGEsCiAKIAkJbXV0ZXhfbG9jaygmY29udGFpbmVyLT5sb2NrKTsKIAorCQlyZXQgPSB0Y2Vf aW9tbXVfY3JlYXRlX2RlZmF1bHRfd2luZG93KGNvbnRhaW5lcik7CisJCWlmIChyZXQpCisJCQly ZXR1cm4gcmV0OworCiAJCXJldCA9IHRjZV9pb21tdV9jcmVhdGVfd2luZG93KGNvbnRhaW5lciwg Y3JlYXRlLnBhZ2Vfc2hpZnQsCiAJCQkJY3JlYXRlLndpbmRvd19zaXplLCBjcmVhdGUubGV2ZWxz LAogCQkJCSZjcmVhdGUuc3RhcnRfYWRkcik7CkBAIC0xMTQzLDYgKzExNjIsMTEgQEAgc3RhdGlj IGxvbmcgdGNlX2lvbW11X2lvY3RsKHZvaWQgKmlvbW11X2RhdGEsCiAJCWlmIChyZW1vdmUuZmxh Z3MpCiAJCQlyZXR1cm4gLUVJTlZBTDsKIAorCQlpZiAoY29udGFpbmVyLT5kZWZfd2luZG93X3Bl bmRpbmcgJiYgIXJlbW92ZS5zdGFydF9hZGRyKSB7CisJCQljb250YWluZXItPmRlZl93aW5kb3df cGVuZGluZyA9IGZhbHNlOworCQkJcmV0dXJuIDA7CisJCX0KKwogCQltdXRleF9sb2NrKCZjb250 YWluZXItPmxvY2spOwogCiAJCXJldCA9IHRjZV9pb21tdV9yZW1vdmVfd2luZG93KGNvbnRhaW5l ciwgcmVtb3ZlLnN0YXJ0X2FkZHIpOwpAQCAtMTI0MCw3ICsxMjY0LDYgQEAgc3RhdGljIGludCB0 Y2VfaW9tbXVfYXR0YWNoX2dyb3VwKHZvaWQgKmlvbW11X2RhdGEsCiAJc3RydWN0IHRjZV9jb250 YWluZXIgKmNvbnRhaW5lciA9IGlvbW11X2RhdGE7CiAJc3RydWN0IGlvbW11X3RhYmxlX2dyb3Vw ICp0YWJsZV9ncm91cDsKIAlzdHJ1Y3QgdGNlX2lvbW11X2dyb3VwICp0Y2VncnAgPSBOVUxMOwot CWJvb2wgY3JlYXRlX2RlZmF1bHRfd2luZG93ID0gZmFsc2U7CiAKIAltdXRleF9sb2NrKCZjb250 YWluZXItPmxvY2spOwogCkBAIC0xMjg4LDI1ICsxMzExLDEyIEBAIHN0YXRpYyBpbnQgdGNlX2lv bW11X2F0dGFjaF9ncm91cCh2b2lkICppb21tdV9kYXRhLAogCX0gZWxzZSB7CiAJCXJldCA9IHRj ZV9pb21tdV90YWtlX293bmVyc2hpcF9kZHcoY29udGFpbmVyLCB0YWJsZV9ncm91cCk7CiAJCWlm ICghdGNlX2dyb3Vwc19hdHRhY2hlZChjb250YWluZXIpICYmICFjb250YWluZXItPnRhYmxlc1sw XSkKLQkJCWNyZWF0ZV9kZWZhdWx0X3dpbmRvdyA9IHRydWU7CisJCQljb250YWluZXItPmRlZl93 aW5kb3dfcGVuZGluZyA9IHRydWU7CiAJfQogCiAJaWYgKCFyZXQpIHsKIAkJdGNlZ3JwLT5ncnAg PSBpb21tdV9ncm91cDsKIAkJbGlzdF9hZGQoJnRjZWdycC0+bmV4dCwgJmNvbnRhaW5lci0+Z3Jv dXBfbGlzdCk7Ci0JCS8qCi0JCSAqIElmIGl0IHRoZSBmaXJzdCBncm91cCBhdHRhY2hlZCwgY2hl Y2sgaWYgdGhlcmUgaXMKLQkJICogYSBkZWZhdWx0IERNQSB3aW5kb3cgYW5kIGNyZWF0ZSBvbmUg aWYgbm9uZSBhcwotCQkgKiB0aGUgdXNlcnNwYWNlIGV4cGVjdHMgaXQgdG8gZXhpc3QuCi0JCSAq LwotCQlpZiAoY3JlYXRlX2RlZmF1bHRfd2luZG93KSB7Ci0JCQlyZXQgPSB0Y2VfaW9tbXVfY3Jl YXRlX2RlZmF1bHRfd2luZG93KGNvbnRhaW5lcik7Ci0JCQlpZiAocmV0KSB7Ci0JCQkJbGlzdF9k ZWwoJnRjZWdycC0+bmV4dCk7Ci0JCQkJdGNlX2lvbW11X3JlbGVhc2Vfb3duZXJzaGlwX2Rkdyhj b250YWluZXIsCi0JCQkJCQl0YWJsZV9ncm91cCk7Ci0JCQl9Ci0JCX0KIAl9CiAKIHVubG9ja19l eGl0OgotLSAKMi4xLjAKCgpGcm9tIGRkYzIzYjUyMTJiOWNmYTJlNGY4MDJiZDk1ZTM2NWU2M2E2 YjJjYzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJlbiBTa2VnZ3MgPGJza2VnZ3NA cmVkaGF0LmNvbT4KRGF0ZTogRnJpLCAxNyBNYXIgMjAxNyAwMDo0ODoyOSArMDAwMApTdWJqZWN0 OiBbUEFUQ0ggMDcwLzExMl0gZHJtL25vdXZlYXUvZGlzcC9ncDEwMjogZml4IGN1cnNvci9vdmVy bGF5IGltbWVkaWF0ZQogY2hhbm5lbCBpbmRpY2VzCgpbIFVwc3RyZWFtIGNvbW1pdCBlNTBmY2Zm MTVmZTEyMGVmMjEwM2E5ZTE4YWY2NjQ0MjM1YzJiMTRkIF0KClNpZ25lZC1vZmYtYnk6IEJlbiBT a2VnZ3MgPGJza2VnZ3NAcmVkaGF0LmNvbT4KU2lnbmVkLW9mZi1ieTogU2FzaGEgTGV2aW4gPGFs ZXhhbmRlci5sZXZpbkB2ZXJpem9uLmNvbT4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0 bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbm91 dmVhdS9udmttL2VuZ2luZS9kaXNwL0tidWlsZCAgICB8ICAyICsrCiAuLi4vZ3B1L2RybS9ub3V2 ZWF1L252a20vZW5naW5lL2Rpc3AvY2hhbm52NTAuaCAgICB8ICAyICsrCiAuLi4vZ3B1L2RybS9u b3V2ZWF1L252a20vZW5naW5lL2Rpc3AvY3Vyc2dwMTAyLmMgICB8IDM3ICsrKysrKysrKysrKysr KysrKysrKysKIC4uLi9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9vaW1tZ3AxMDIu YyAgIHwgMzcgKysrKysrKysrKysrKysrKysrKysrKwogLi4uL2dwdS9kcm0vbm91dmVhdS9udmtt L2VuZ2luZS9kaXNwL3Jvb3RncDEwNC5jICAgfCAgNCArLS0KIDUgZmlsZXMgY2hhbmdlZCwgODAg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2N1cnNncDEwMi5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9vaW1tZ3Ax MDIuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rp c3AvS2J1aWxkIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9LYnVp bGQKaW5kZXggNzdhNTJiNS4uNzBmMDM0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25v dXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9LYnVpbGQKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvbnZrbS9lbmdpbmUvZGlzcC9LYnVpbGQKQEAgLTk1LDkgKzk1LDExIEBAIG52a20teSArPSBu dmttL2VuZ2luZS9kaXNwL2N1cnNnODQubwogbnZrbS15ICs9IG52a20vZW5naW5lL2Rpc3AvY3Vy c2d0MjE1Lm8KIG52a20teSArPSBudmttL2VuZ2luZS9kaXNwL2N1cnNnZjExOS5vCiBudmttLXkg Kz0gbnZrbS9lbmdpbmUvZGlzcC9jdXJzZ2sxMDQubworbnZrbS15ICs9IG52a20vZW5naW5lL2Rp c3AvY3Vyc2dwMTAyLm8KIAogbnZrbS15ICs9IG52a20vZW5naW5lL2Rpc3Avb2ltbW52NTAubwog bnZrbS15ICs9IG52a20vZW5naW5lL2Rpc3Avb2ltbWc4NC5vCiBudmttLXkgKz0gbnZrbS9lbmdp bmUvZGlzcC9vaW1tZ3QyMTUubwogbnZrbS15ICs9IG52a20vZW5naW5lL2Rpc3Avb2ltbWdmMTE5 Lm8KIG52a20teSArPSBudmttL2VuZ2luZS9kaXNwL29pbW1nazEwNC5vCitudmttLXkgKz0gbnZr bS9lbmdpbmUvZGlzcC9vaW1tZ3AxMDIubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25v dXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9jaGFubnY1MC5oIGIvZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvbnZrbS9lbmdpbmUvZGlzcC9jaGFubnY1MC5oCmluZGV4IGY1ZjY4M2QuLjA0YTdlNTggMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3AvY2hhbm52 NTAuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2NoYW5u djUwLmgKQEAgLTExNCw2ICsxMTQsOCBAQCBleHRlcm4gY29uc3Qgc3RydWN0IG52NTBfZGlzcF9w aW9jX29jbGFzcyBnZjExOV9kaXNwX2N1cnNfb2NsYXNzOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBu djUwX2Rpc3BfcGlvY19vY2xhc3MgZ2sxMDRfZGlzcF9vaW1tX29jbGFzczsKIGV4dGVybiBjb25z dCBzdHJ1Y3QgbnY1MF9kaXNwX3Bpb2Nfb2NsYXNzIGdrMTA0X2Rpc3BfY3Vyc19vY2xhc3M7CiAK K2V4dGVybiBjb25zdCBzdHJ1Y3QgbnY1MF9kaXNwX3Bpb2Nfb2NsYXNzIGdwMTAyX2Rpc3Bfb2lt bV9vY2xhc3M7CitleHRlcm4gY29uc3Qgc3RydWN0IG52NTBfZGlzcF9waW9jX29jbGFzcyBncDEw Ml9kaXNwX2N1cnNfb2NsYXNzOwogCiBpbnQgbnY1MF9kaXNwX2N1cnNfbmV3KGNvbnN0IHN0cnVj dCBudjUwX2Rpc3BfY2hhbl9mdW5jICosCiAJCSAgICAgICBjb25zdCBzdHJ1Y3QgbnY1MF9kaXNw X2NoYW5fbXRoZCAqLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9l bmdpbmUvZGlzcC9jdXJzZ3AxMDIuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5n aW5lL2Rpc3AvY3Vyc2dwMTAyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZTk1ODIxMAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20v ZW5naW5lL2Rpc3AvY3Vyc2dwMTAyLmMKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdo dCAyMDE2IFJlZCBIYXQgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHks IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQv b3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g d2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFM TAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgor ICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6IEJlbiBT a2VnZ3MgPGJza2VnZ3NAcmVkaGF0LmNvbT4KKyAqLworI2luY2x1ZGUgImNoYW5udjUwLmgiCisj aW5jbHVkZSAicm9vdG52NTAuaCIKKworI2luY2x1ZGUgPG52aWYvY2xhc3MuaD4KKworY29uc3Qg c3RydWN0IG52NTBfZGlzcF9waW9jX29jbGFzcworZ3AxMDJfZGlzcF9jdXJzX29jbGFzcyA9IHsK KwkuYmFzZS5vY2xhc3MgPSBHSzEwNF9ESVNQX0NVUlNPUiwKKwkuYmFzZS5taW52ZXIgPSAwLAor CS5iYXNlLm1heHZlciA9IDAsCisJLmN0b3IgPSBudjUwX2Rpc3BfY3Vyc19uZXcsCisJLmZ1bmMg PSAmZ2YxMTlfZGlzcF9waW9jX2Z1bmMsCisJLmNoaWQgPSB7IDEzLCAxNyB9LAorfTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3Avb2ltbWdwMTAy LmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL29pbW1ncDEwMi5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZjgyMzYKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL29pbW1ncDEw Mi5jCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNiBSZWQgSGF0IEluYy4K KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgor ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQg SE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UgorICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElO IFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOiBCZW4gU2tlZ2dzIDxic2tlZ2dzQHJlZGhh dC5jb20+CisgKi8KKyNpbmNsdWRlICJjaGFubnY1MC5oIgorI2luY2x1ZGUgInJvb3RudjUwLmgi CisKKyNpbmNsdWRlIDxudmlmL2NsYXNzLmg+CisKK2NvbnN0IHN0cnVjdCBudjUwX2Rpc3BfcGlv Y19vY2xhc3MKK2dwMTAyX2Rpc3Bfb2ltbV9vY2xhc3MgPSB7CisJLmJhc2Uub2NsYXNzID0gR0sx MDRfRElTUF9PVkVSTEFZLAorCS5iYXNlLm1pbnZlciA9IDAsCisJLmJhc2UubWF4dmVyID0gMCwK KwkuY3RvciA9IG52NTBfZGlzcF9vaW1tX25ldywKKwkuZnVuYyA9ICZnZjExOV9kaXNwX3Bpb2Nf ZnVuYywKKwkuY2hpZCA9IHsgOSwgMTMgfSwKK307CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL3Jvb3RncDEwNC5jIGIvZHJpdmVycy9ncHUvZHJt L25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9yb290Z3AxMDQuYwppbmRleCA4NDQzZTA0Li5iMDUz YjI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNw L3Jvb3RncDEwNC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rp c3Avcm9vdGdwMTA0LmMKQEAgLTM2LDggKzM2LDggQEAgZ3AxMDRfZGlzcF9yb290ID0gewogCQkm Z3AxMDRfZGlzcF9vdmx5X29jbGFzcywKIAl9LAogCS5waW9jID0gewotCQkmZ2sxMDRfZGlzcF9v aW1tX29jbGFzcywKLQkJJmdrMTA0X2Rpc3BfY3Vyc19vY2xhc3MsCisJCSZncDEwMl9kaXNwX29p bW1fb2NsYXNzLAorCQkmZ3AxMDJfZGlzcF9jdXJzX29jbGFzcywKIAl9LAogfTsKIAotLSAKMi4x LjAKCgpGcm9tIDUwMDE3NTZjMWM3MGFiNTU1ZDRkM2NhNjk2NTU0N2FjMDI0MTBkNGIgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJlbiBTa2VnZ3MgPGJza2VnZ3NAcmVkaGF0LmNvbT4K RGF0ZTogRnJpLCAxNyBNYXIgMjAxNyAwMDo0ODoyOSArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMDcx LzExMl0gZHJtL25vdXZlYXUvZGlzcC9udjUwLTogc3BsaXQgY2hpZCBpbnRvIGNoaWQuY3RybCBh bmQKIGNoaWQudXNlcgoKWyBVcHN0cmVhbSBjb21taXQgNDM5MWQ3ZjVjNzlhOWZlNmZhMTFjZjZj MTYwY2E3ZjdiZGI0OWQyYSBdCgpHUDEwMi9HUDEwNCBtYWtlIGxpZmUgZGlmZmljdWx0IGJ5IHJl ZGVmaW5pbmcgdGhlIGNoYW5uZWwgaW5kaWNlcyBmb3IKc29tZSByZWdpc3RlcnMsIGJ1dCBub3Qg b3RoZXJzLgoKU2lnbmVkLW9mZi1ieTogQmVuIFNrZWdncyA8YnNrZWdnc0ByZWRoYXQuY29tPgpT aWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8YWxleGFuZGVyLmxldmluQHZlcml6b24uY29tPgpT aWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24u b3JnPgotLS0KIC4uLi9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9jaGFubnY1MC5j ICAgIHwgMjMgKysrKystLS0tLS0KIC4uLi9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlz cC9jaGFubnY1MC5oICAgIHwgIDYgKystCiAuLi4vZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5l L2Rpc3AvZG1hY2dmMTE5LmMgICB8IDQ0ICsrKysrKysrKysrLS0tLS0tLS0tLS0KIC4uLi9ncHUv ZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9kbWFjZ3AxMDQuYyAgIHwgMjMgKysrKystLS0t LS0KIC4uLi9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9kbWFjbnY1MC5jICAgIHwg NDQgKysrKysrKysrKystLS0tLS0tLS0tLQogLi4uL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2lu ZS9kaXNwL3Bpb2NnZjExOS5jICAgfCAyOCArKysrKysrLS0tLS0tLQogLi4uL2dwdS9kcm0vbm91 dmVhdS9udmttL2VuZ2luZS9kaXNwL3Bpb2NudjUwLmMgICAgfCAzMCArKysrKysrKy0tLS0tLS0K IDcgZmlsZXMgY2hhbmdlZCwgMTA2IGluc2VydGlvbnMoKyksIDkyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3AvY2hhbm52 NTAuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3AvY2hhbm52NTAu YwppbmRleCBkZDI5NTNiLi4zNzZmMmM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91 dmVhdS9udmttL2VuZ2luZS9kaXNwL2NoYW5udjUwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25v dXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9jaGFubnY1MC5jCkBAIC04Miw3ICs4Miw3IEBAIG52NTBf ZGlzcF9jaGFuX210aGQoc3RydWN0IG52NTBfZGlzcF9jaGFuICpjaGFuLCBpbnQgZGVidWcpCiAK IAkJCWlmIChtdGhkLT5hZGRyKSB7CiAJCQkJc25wcmludGYoY25hbWVfLCBzaXplb2YoY25hbWVf KSwgIiVzICVkIiwKLQkJCQkJIG10aGQtPm5hbWUsIGNoYW4tPmNoaWQpOworCQkJCQkgbXRoZC0+ bmFtZSwgY2hhbi0+Y2hpZC51c2VyKTsKIAkJCQljbmFtZSA9IGNuYW1lXzsKIAkJCX0KIApAQCAt MTM5LDcgKzEzOSw3IEBAIG52NTBfZGlzcF9jaGFuX3VldmVudF9jdG9yKHN0cnVjdCBudmttX29i amVjdCAqb2JqZWN0LCB2b2lkICpkYXRhLCB1MzIgc2l6ZSwKIAlpZiAoIShyZXQgPSBudmlmX3Vu dmVycyhyZXQsICZkYXRhLCAmc2l6ZSwgYXJncy0+bm9uZSkpKSB7CiAJCW5vdGlmeS0+c2l6ZSAg PSBzaXplb2Yoc3RydWN0IG52aWZfbm90aWZ5X3VldmVudF9yZXApOwogCQlub3RpZnktPnR5cGVz ID0gMTsKLQkJbm90aWZ5LT5pbmRleCA9IGNoYW4tPmNoaWQ7CisJCW5vdGlmeS0+aW5kZXggPSBj aGFuLT5jaGlkLnVzZXI7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMTU5LDcgKzE1OSw3IEBAIG52 NTBfZGlzcF9jaGFuX3JkMzIoc3RydWN0IG52a21fb2JqZWN0ICpvYmplY3QsIHU2NCBhZGRyLCB1 MzIgKmRhdGEpCiAJc3RydWN0IG52NTBfZGlzcF9jaGFuICpjaGFuID0gbnY1MF9kaXNwX2NoYW4o b2JqZWN0KTsKIAlzdHJ1Y3QgbnY1MF9kaXNwICpkaXNwID0gY2hhbi0+cm9vdC0+ZGlzcDsKIAlz dHJ1Y3QgbnZrbV9kZXZpY2UgKmRldmljZSA9IGRpc3AtPmJhc2UuZW5naW5lLnN1YmRldi5kZXZp Y2U7Ci0JKmRhdGEgPSBudmttX3JkMzIoZGV2aWNlLCAweDY0MDAwMCArIChjaGFuLT5jaGlkICog MHgxMDAwKSArIGFkZHIpOworCSpkYXRhID0gbnZrbV9yZDMyKGRldmljZSwgMHg2NDAwMDAgKyAo Y2hhbi0+Y2hpZC51c2VyICogMHgxMDAwKSArIGFkZHIpOwogCXJldHVybiAwOwogfQogCkBAIC0x NjksNyArMTY5LDcgQEAgbnY1MF9kaXNwX2NoYW5fd3IzMihzdHJ1Y3QgbnZrbV9vYmplY3QgKm9i amVjdCwgdTY0IGFkZHIsIHUzMiBkYXRhKQogCXN0cnVjdCBudjUwX2Rpc3BfY2hhbiAqY2hhbiA9 IG52NTBfZGlzcF9jaGFuKG9iamVjdCk7CiAJc3RydWN0IG52NTBfZGlzcCAqZGlzcCA9IGNoYW4t PnJvb3QtPmRpc3A7CiAJc3RydWN0IG52a21fZGV2aWNlICpkZXZpY2UgPSBkaXNwLT5iYXNlLmVu Z2luZS5zdWJkZXYuZGV2aWNlOwotCW52a21fd3IzMihkZXZpY2UsIDB4NjQwMDAwICsgKGNoYW4t PmNoaWQgKiAweDEwMDApICsgYWRkciwgZGF0YSk7CisJbnZrbV93cjMyKGRldmljZSwgMHg2NDAw MDAgKyAoY2hhbi0+Y2hpZC51c2VyICogMHgxMDAwKSArIGFkZHIsIGRhdGEpOwogCXJldHVybiAw OwogfQogCkBAIC0xOTYsNyArMTk2LDcgQEAgbnY1MF9kaXNwX2NoYW5fbWFwKHN0cnVjdCBudmtt X29iamVjdCAqb2JqZWN0LCB1NjQgKmFkZHIsIHUzMiAqc2l6ZSkKIAlzdHJ1Y3QgbnY1MF9kaXNw ICpkaXNwID0gY2hhbi0+cm9vdC0+ZGlzcDsKIAlzdHJ1Y3QgbnZrbV9kZXZpY2UgKmRldmljZSA9 IGRpc3AtPmJhc2UuZW5naW5lLnN1YmRldi5kZXZpY2U7CiAJKmFkZHIgPSBkZXZpY2UtPmZ1bmMt PnJlc291cmNlX2FkZHIoZGV2aWNlLCAwKSArCi0JCTB4NjQwMDAwICsgKGNoYW4tPmNoaWQgKiAw eDEwMDApOworCQkweDY0MDAwMCArIChjaGFuLT5jaGlkLnVzZXIgKiAweDEwMDApOwogCSpzaXpl ID0gMHgwMDEwMDA7CiAJcmV0dXJuIDA7CiB9CkBAIC0yNDMsOCArMjQzLDggQEAgbnY1MF9kaXNw X2NoYW5fZHRvcihzdHJ1Y3QgbnZrbV9vYmplY3QgKm9iamVjdCkKIHsKIAlzdHJ1Y3QgbnY1MF9k aXNwX2NoYW4gKmNoYW4gPSBudjUwX2Rpc3BfY2hhbihvYmplY3QpOwogCXN0cnVjdCBudjUwX2Rp c3AgKmRpc3AgPSBjaGFuLT5yb290LT5kaXNwOwotCWlmIChjaGFuLT5jaGlkID49IDApCi0JCWRp c3AtPmNoYW5bY2hhbi0+Y2hpZF0gPSBOVUxMOworCWlmIChjaGFuLT5jaGlkLnVzZXIgPj0gMCkK KwkJZGlzcC0+Y2hhbltjaGFuLT5jaGlkLnVzZXJdID0gTlVMTDsKIAlyZXR1cm4gY2hhbi0+ZnVu Yy0+ZHRvciA/IGNoYW4tPmZ1bmMtPmR0b3IoY2hhbikgOiBjaGFuOwogfQogCkBAIC0yNzMsMTQg KzI3MywxNSBAQCBudjUwX2Rpc3BfY2hhbl9jdG9yKGNvbnN0IHN0cnVjdCBudjUwX2Rpc3BfY2hh bl9mdW5jICpmdW5jLAogCWNoYW4tPmZ1bmMgPSBmdW5jOwogCWNoYW4tPm10aGQgPSBtdGhkOwog CWNoYW4tPnJvb3QgPSByb290OwotCWNoYW4tPmNoaWQgPSBjaGlkOworCWNoYW4tPmNoaWQuY3Ry bCA9IGNoaWQ7CisJY2hhbi0+Y2hpZC51c2VyID0gY2hpZDsKIAljaGFuLT5oZWFkID0gaGVhZDsK IAotCWlmIChkaXNwLT5jaGFuW2NoYW4tPmNoaWRdKSB7Ci0JCWNoYW4tPmNoaWQgPSAtMTsKKwlp ZiAoZGlzcC0+Y2hhbltjaGFuLT5jaGlkLnVzZXJdKSB7CisJCWNoYW4tPmNoaWQudXNlciA9IC0x OwogCQlyZXR1cm4gLUVCVVNZOwogCX0KLQlkaXNwLT5jaGFuW2NoYW4tPmNoaWRdID0gY2hhbjsK KwlkaXNwLT5jaGFuW2NoYW4tPmNoaWQudXNlcl0gPSBjaGFuOwogCXJldHVybiAwOwogfQogCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2NoYW5u djUwLmggYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2NoYW5udjUw LmgKaW5kZXggMDRhN2U1OC4uN2I1YTJlYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25v dXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9jaGFubnY1MC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9u b3V2ZWF1L252a20vZW5naW5lL2Rpc3AvY2hhbm52NTAuaApAQCAtNyw3ICs3LDExIEBAIHN0cnVj dCBudjUwX2Rpc3BfY2hhbiB7CiAJY29uc3Qgc3RydWN0IG52NTBfZGlzcF9jaGFuX2Z1bmMgKmZ1 bmM7CiAJY29uc3Qgc3RydWN0IG52NTBfZGlzcF9jaGFuX210aGQgKm10aGQ7CiAJc3RydWN0IG52 NTBfZGlzcF9yb290ICpyb290OwotCWludCBjaGlkOworCisJc3RydWN0IHsKKwkJaW50IGN0cmw7 CisJCWludCB1c2VyOworCX0gY2hpZDsKIAlpbnQgaGVhZDsKIAogCXN0cnVjdCBudmttX29iamVj dCBvYmplY3Q7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2lu ZS9kaXNwL2RtYWNnZjExOS5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUv ZGlzcC9kbWFjZ2YxMTkuYwppbmRleCBhNTdmN2NlLi5jZTdjZDc0IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2RtYWNnZjExOS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3AvZG1hY2dmMTE5LmMKQEAgLTMy LDggKzMyLDggQEAgZ2YxMTlfZGlzcF9kbWFjX2JpbmQoc3RydWN0IG52NTBfZGlzcF9kbWFjICpj aGFuLAogCQkgICAgIHN0cnVjdCBudmttX29iamVjdCAqb2JqZWN0LCB1MzIgaGFuZGxlKQogewog CXJldHVybiBudmttX3JhbWh0X2luc2VydChjaGFuLT5iYXNlLnJvb3QtPnJhbWh0LCBvYmplY3Qs Ci0JCQkJIGNoYW4tPmJhc2UuY2hpZCwgLTksIGhhbmRsZSwKLQkJCQkgY2hhbi0+YmFzZS5jaGlk IDw8IDI3IHwgMHgwMDAwMDAwMSk7CisJCQkJIGNoYW4tPmJhc2UuY2hpZC51c2VyLCAtOSwgaGFu ZGxlLAorCQkJCSBjaGFuLT5iYXNlLmNoaWQudXNlciA8PCAyNyB8IDB4MDAwMDAwMDEpOwogfQog CiB2b2lkCkBAIC00MiwyMiArNDIsMjMgQEAgZ2YxMTlfZGlzcF9kbWFjX2Zpbmkoc3RydWN0IG52 NTBfZGlzcF9kbWFjICpjaGFuKQogCXN0cnVjdCBudjUwX2Rpc3AgKmRpc3AgPSBjaGFuLT5iYXNl LnJvb3QtPmRpc3A7CiAJc3RydWN0IG52a21fc3ViZGV2ICpzdWJkZXYgPSAmZGlzcC0+YmFzZS5l bmdpbmUuc3ViZGV2OwogCXN0cnVjdCBudmttX2RldmljZSAqZGV2aWNlID0gc3ViZGV2LT5kZXZp Y2U7Ci0JaW50IGNoaWQgPSBjaGFuLT5iYXNlLmNoaWQ7CisJaW50IGN0cmwgPSBjaGFuLT5iYXNl LmNoaWQuY3RybDsKKwlpbnQgdXNlciA9IGNoYW4tPmJhc2UuY2hpZC51c2VyOwogCiAJLyogZGVh Y3RpdmF0ZSBjaGFubmVsICovCi0JbnZrbV9tYXNrKGRldmljZSwgMHg2MTA0OTAgKyAoY2hpZCAq IDB4MDAxMCksIDB4MDAwMDEwMTAsIDB4MDAwMDEwMDApOwotCW52a21fbWFzayhkZXZpY2UsIDB4 NjEwNDkwICsgKGNoaWQgKiAweDAwMTApLCAweDAwMDAwMDAzLCAweDAwMDAwMDAwKTsKKwludmtt X21hc2soZGV2aWNlLCAweDYxMDQ5MCArIChjdHJsICogMHgwMDEwKSwgMHgwMDAwMTAxMCwgMHgw MDAwMTAwMCk7CisJbnZrbV9tYXNrKGRldmljZSwgMHg2MTA0OTAgKyAoY3RybCAqIDB4MDAxMCks IDB4MDAwMDAwMDMsIDB4MDAwMDAwMDApOwogCWlmIChudmttX21zZWMoZGV2aWNlLCAyMDAwLAot CQlpZiAoIShudmttX3JkMzIoZGV2aWNlLCAweDYxMDQ5MCArIChjaGlkICogMHgxMCkpICYgMHgw MDFlMDAwMCkpCisJCWlmICghKG52a21fcmQzMihkZXZpY2UsIDB4NjEwNDkwICsgKGN0cmwgKiAw eDEwKSkgJiAweDAwMWUwMDAwKSkKIAkJCWJyZWFrOwogCSkgPCAwKSB7Ci0JCW52a21fZXJyb3Io c3ViZGV2LCAiY2ggJWQgZmluaTogJTA4eFxuIiwgY2hpZCwKLQkJCSAgIG52a21fcmQzMihkZXZp Y2UsIDB4NjEwNDkwICsgKGNoaWQgKiAweDEwKSkpOworCQludmttX2Vycm9yKHN1YmRldiwgImNo ICVkIGZpbmk6ICUwOHhcbiIsIHVzZXIsCisJCQkgICBudmttX3JkMzIoZGV2aWNlLCAweDYxMDQ5 MCArIChjdHJsICogMHgxMCkpKTsKIAl9CiAKIAkvKiBkaXNhYmxlIGVycm9yIHJlcG9ydGluZyBh bmQgY29tcGxldGlvbiBub3RpZmljYXRpb24gKi8KLQludmttX21hc2soZGV2aWNlLCAweDYxMDA5 MCwgMHgwMDAwMDAwMSA8PCBjaGlkLCAweDAwMDAwMDAwKTsKLQludmttX21hc2soZGV2aWNlLCAw eDYxMDBhMCwgMHgwMDAwMDAwMSA8PCBjaGlkLCAweDAwMDAwMDAwKTsKKwludmttX21hc2soZGV2 aWNlLCAweDYxMDA5MCwgMHgwMDAwMDAwMSA8PCB1c2VyLCAweDAwMDAwMDAwKTsKKwludmttX21h c2soZGV2aWNlLCAweDYxMDBhMCwgMHgwMDAwMDAwMSA8PCB1c2VyLCAweDAwMDAwMDAwKTsKIH0K IAogc3RhdGljIGludApAQCAtNjYsMjYgKzY3LDI3IEBAIGdmMTE5X2Rpc3BfZG1hY19pbml0KHN0 cnVjdCBudjUwX2Rpc3BfZG1hYyAqY2hhbikKIAlzdHJ1Y3QgbnY1MF9kaXNwICpkaXNwID0gY2hh bi0+YmFzZS5yb290LT5kaXNwOwogCXN0cnVjdCBudmttX3N1YmRldiAqc3ViZGV2ID0gJmRpc3At PmJhc2UuZW5naW5lLnN1YmRldjsKIAlzdHJ1Y3QgbnZrbV9kZXZpY2UgKmRldmljZSA9IHN1YmRl di0+ZGV2aWNlOwotCWludCBjaGlkID0gY2hhbi0+YmFzZS5jaGlkOworCWludCBjdHJsID0gY2hh bi0+YmFzZS5jaGlkLmN0cmw7CisJaW50IHVzZXIgPSBjaGFuLT5iYXNlLmNoaWQudXNlcjsKIAog CS8qIGVuYWJsZSBlcnJvciByZXBvcnRpbmcgKi8KLQludmttX21hc2soZGV2aWNlLCAweDYxMDBh MCwgMHgwMDAwMDAwMSA8PCBjaGlkLCAweDAwMDAwMDAxIDw8IGNoaWQpOworCW52a21fbWFzayhk ZXZpY2UsIDB4NjEwMGEwLCAweDAwMDAwMDAxIDw8IHVzZXIsIDB4MDAwMDAwMDEgPDwgdXNlcik7 CiAKIAkvKiBpbml0aWFsaXNlIGNoYW5uZWwgZm9yIGRtYSBjb21tYW5kIHN1Ym1pc3Npb24gKi8K LQludmttX3dyMzIoZGV2aWNlLCAweDYxMDQ5NCArIChjaGlkICogMHgwMDEwKSwgY2hhbi0+cHVz aCk7Ci0JbnZrbV93cjMyKGRldmljZSwgMHg2MTA0OTggKyAoY2hpZCAqIDB4MDAxMCksIDB4MDAw MTAwMDApOwotCW52a21fd3IzMihkZXZpY2UsIDB4NjEwNDljICsgKGNoaWQgKiAweDAwMTApLCAw eDAwMDAwMDAxKTsKLQludmttX21hc2soZGV2aWNlLCAweDYxMDQ5MCArIChjaGlkICogMHgwMDEw KSwgMHgwMDAwMDAxMCwgMHgwMDAwMDAxMCk7Ci0JbnZrbV93cjMyKGRldmljZSwgMHg2NDAwMDAg KyAoY2hpZCAqIDB4MTAwMCksIDB4MDAwMDAwMDApOwotCW52a21fd3IzMihkZXZpY2UsIDB4NjEw NDkwICsgKGNoaWQgKiAweDAwMTApLCAweDAwMDAwMDEzKTsKKwludmttX3dyMzIoZGV2aWNlLCAw eDYxMDQ5NCArIChjdHJsICogMHgwMDEwKSwgY2hhbi0+cHVzaCk7CisJbnZrbV93cjMyKGRldmlj ZSwgMHg2MTA0OTggKyAoY3RybCAqIDB4MDAxMCksIDB4MDAwMTAwMDApOworCW52a21fd3IzMihk ZXZpY2UsIDB4NjEwNDljICsgKGN0cmwgKiAweDAwMTApLCAweDAwMDAwMDAxKTsKKwludmttX21h c2soZGV2aWNlLCAweDYxMDQ5MCArIChjdHJsICogMHgwMDEwKSwgMHgwMDAwMDAxMCwgMHgwMDAw MDAxMCk7CisJbnZrbV93cjMyKGRldmljZSwgMHg2NDAwMDAgKyAoY3RybCAqIDB4MTAwMCksIDB4 MDAwMDAwMDApOworCW52a21fd3IzMihkZXZpY2UsIDB4NjEwNDkwICsgKGN0cmwgKiAweDAwMTAp LCAweDAwMDAwMDEzKTsKIAogCS8qIHdhaXQgZm9yIGl0IHRvIGdvIGluYWN0aXZlICovCiAJaWYg KG52a21fbXNlYyhkZXZpY2UsIDIwMDAsCi0JCWlmICghKG52a21fcmQzMihkZXZpY2UsIDB4NjEw NDkwICsgKGNoaWQgKiAweDEwKSkgJiAweDgwMDAwMDAwKSkKKwkJaWYgKCEobnZrbV9yZDMyKGRl dmljZSwgMHg2MTA0OTAgKyAoY3RybCAqIDB4MTApKSAmIDB4ODAwMDAwMDApKQogCQkJYnJlYWs7 CiAJKSA8IDApIHsKLQkJbnZrbV9lcnJvcihzdWJkZXYsICJjaCAlZCBpbml0OiAlMDh4XG4iLCBj aGlkLAotCQkJICAgbnZrbV9yZDMyKGRldmljZSwgMHg2MTA0OTAgKyAoY2hpZCAqIDB4MTApKSk7 CisJCW52a21fZXJyb3Ioc3ViZGV2LCAiY2ggJWQgaW5pdDogJTA4eFxuIiwgdXNlciwKKwkJCSAg IG52a21fcmQzMihkZXZpY2UsIDB4NjEwNDkwICsgKGN0cmwgKiAweDEwKSkpOwogCQlyZXR1cm4g LUVCVVNZOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9l bmdpbmUvZGlzcC9kbWFjZ3AxMDQuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5n aW5lL2Rpc3AvZG1hY2dwMTA0LmMKaW5kZXggYWQyNGMyYy4uZDI2ZDNiNCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9kbWFjZ3AxMDQuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2RtYWNncDEwNC5jCkBA IC0zMiwyNiArMzIsMjcgQEAgZ3AxMDRfZGlzcF9kbWFjX2luaXQoc3RydWN0IG52NTBfZGlzcF9k bWFjICpjaGFuKQogCXN0cnVjdCBudjUwX2Rpc3AgKmRpc3AgPSBjaGFuLT5iYXNlLnJvb3QtPmRp c3A7CiAJc3RydWN0IG52a21fc3ViZGV2ICpzdWJkZXYgPSAmZGlzcC0+YmFzZS5lbmdpbmUuc3Vi ZGV2OwogCXN0cnVjdCBudmttX2RldmljZSAqZGV2aWNlID0gc3ViZGV2LT5kZXZpY2U7Ci0JaW50 IGNoaWQgPSBjaGFuLT5iYXNlLmNoaWQ7CisJaW50IGN0cmwgPSBjaGFuLT5iYXNlLmNoaWQuY3Ry bDsKKwlpbnQgdXNlciA9IGNoYW4tPmJhc2UuY2hpZC51c2VyOwogCiAJLyogZW5hYmxlIGVycm9y IHJlcG9ydGluZyAqLwotCW52a21fbWFzayhkZXZpY2UsIDB4NjEwMGEwLCAweDAwMDAwMDAxIDw8 IGNoaWQsIDB4MDAwMDAwMDEgPDwgY2hpZCk7CisJbnZrbV9tYXNrKGRldmljZSwgMHg2MTAwYTAs IDB4MDAwMDAwMDEgPDwgdXNlciwgMHgwMDAwMDAwMSA8PCB1c2VyKTsKIAogCS8qIGluaXRpYWxp c2UgY2hhbm5lbCBmb3IgZG1hIGNvbW1hbmQgc3VibWlzc2lvbiAqLwotCW52a21fd3IzMihkZXZp Y2UsIDB4NjExNDk0ICsgKGNoaWQgKiAweDAwMTApLCBjaGFuLT5wdXNoKTsKLQludmttX3dyMzIo ZGV2aWNlLCAweDYxMTQ5OCArIChjaGlkICogMHgwMDEwKSwgMHgwMDAxMDAwMCk7Ci0JbnZrbV93 cjMyKGRldmljZSwgMHg2MTE0OWMgKyAoY2hpZCAqIDB4MDAxMCksIDB4MDAwMDAwMDEpOwotCW52 a21fbWFzayhkZXZpY2UsIDB4NjEwNDkwICsgKGNoaWQgKiAweDAwMTApLCAweDAwMDAwMDEwLCAw eDAwMDAwMDEwKTsKLQludmttX3dyMzIoZGV2aWNlLCAweDY0MDAwMCArIChjaGlkICogMHgxMDAw KSwgMHgwMDAwMDAwMCk7Ci0JbnZrbV93cjMyKGRldmljZSwgMHg2MTA0OTAgKyAoY2hpZCAqIDB4 MDAxMCksIDB4MDAwMDAwMTMpOworCW52a21fd3IzMihkZXZpY2UsIDB4NjExNDk0ICsgKGN0cmwg KiAweDAwMTApLCBjaGFuLT5wdXNoKTsKKwludmttX3dyMzIoZGV2aWNlLCAweDYxMTQ5OCArIChj dHJsICogMHgwMDEwKSwgMHgwMDAxMDAwMCk7CisJbnZrbV93cjMyKGRldmljZSwgMHg2MTE0OWMg KyAoY3RybCAqIDB4MDAxMCksIDB4MDAwMDAwMDEpOworCW52a21fbWFzayhkZXZpY2UsIDB4NjEw NDkwICsgKGN0cmwgKiAweDAwMTApLCAweDAwMDAwMDEwLCAweDAwMDAwMDEwKTsKKwludmttX3dy MzIoZGV2aWNlLCAweDY0MDAwMCArIChjdHJsICogMHgxMDAwKSwgMHgwMDAwMDAwMCk7CisJbnZr bV93cjMyKGRldmljZSwgMHg2MTA0OTAgKyAoY3RybCAqIDB4MDAxMCksIDB4MDAwMDAwMTMpOwog CiAJLyogd2FpdCBmb3IgaXQgdG8gZ28gaW5hY3RpdmUgKi8KIAlpZiAobnZrbV9tc2VjKGRldmlj ZSwgMjAwMCwKLQkJaWYgKCEobnZrbV9yZDMyKGRldmljZSwgMHg2MTA0OTAgKyAoY2hpZCAqIDB4 MTApKSAmIDB4ODAwMDAwMDApKQorCQlpZiAoIShudmttX3JkMzIoZGV2aWNlLCAweDYxMDQ5MCAr IChjdHJsICogMHgxMCkpICYgMHg4MDAwMDAwMCkpCiAJCQlicmVhazsKIAkpIDwgMCkgewotCQlu dmttX2Vycm9yKHN1YmRldiwgImNoICVkIGluaXQ6ICUwOHhcbiIsIGNoaWQsCi0JCQkgICBudmtt X3JkMzIoZGV2aWNlLCAweDYxMDQ5MCArIChjaGlkICogMHgxMCkpKTsKKwkJbnZrbV9lcnJvcihz dWJkZXYsICJjaCAlZCBpbml0OiAlMDh4XG4iLCB1c2VyLAorCQkJICAgbnZrbV9yZDMyKGRldmlj ZSwgMHg2MTA0OTAgKyAoY3RybCAqIDB4MTApKSk7CiAJCXJldHVybiAtRUJVU1k7CiAJfQogCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2RtYWNu djUwLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2RtYWNudjUw LmMKaW5kZXggOWM2NjQ1YS4uY2ZiYTk5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25v dXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9kbWFjbnY1MC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9u b3V2ZWF1L252a20vZW5naW5lL2Rpc3AvZG1hY252NTAuYwpAQCAtMTc5LDkgKzE3OSw5IEBAIG52 NTBfZGlzcF9kbWFjX2JpbmQoc3RydWN0IG52NTBfZGlzcF9kbWFjICpjaGFuLAogCQkgICAgc3Ry dWN0IG52a21fb2JqZWN0ICpvYmplY3QsIHUzMiBoYW5kbGUpCiB7CiAJcmV0dXJuIG52a21fcmFt aHRfaW5zZXJ0KGNoYW4tPmJhc2Uucm9vdC0+cmFtaHQsIG9iamVjdCwKLQkJCQkgY2hhbi0+YmFz ZS5jaGlkLCAtMTAsIGhhbmRsZSwKLQkJCQkgY2hhbi0+YmFzZS5jaGlkIDw8IDI4IHwKLQkJCQkg Y2hhbi0+YmFzZS5jaGlkKTsKKwkJCQkgY2hhbi0+YmFzZS5jaGlkLnVzZXIsIC0xMCwgaGFuZGxl LAorCQkJCSBjaGFuLT5iYXNlLmNoaWQudXNlciA8PCAyOCB8CisJCQkJIGNoYW4tPmJhc2UuY2hp ZC51c2VyKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE5MCwyMSArMTkwLDIyIEBAIG52NTBfZGlz cF9kbWFjX2Zpbmkoc3RydWN0IG52NTBfZGlzcF9kbWFjICpjaGFuKQogCXN0cnVjdCBudjUwX2Rp c3AgKmRpc3AgPSBjaGFuLT5iYXNlLnJvb3QtPmRpc3A7CiAJc3RydWN0IG52a21fc3ViZGV2ICpz dWJkZXYgPSAmZGlzcC0+YmFzZS5lbmdpbmUuc3ViZGV2OwogCXN0cnVjdCBudmttX2RldmljZSAq ZGV2aWNlID0gc3ViZGV2LT5kZXZpY2U7Ci0JaW50IGNoaWQgPSBjaGFuLT5iYXNlLmNoaWQ7CisJ aW50IGN0cmwgPSBjaGFuLT5iYXNlLmNoaWQuY3RybDsKKwlpbnQgdXNlciA9IGNoYW4tPmJhc2Uu Y2hpZC51c2VyOwogCiAJLyogZGVhY3RpdmF0ZSBjaGFubmVsICovCi0JbnZrbV9tYXNrKGRldmlj ZSwgMHg2MTAyMDAgKyAoY2hpZCAqIDB4MDAxMCksIDB4MDAwMDEwMTAsIDB4MDAwMDEwMDApOwot CW52a21fbWFzayhkZXZpY2UsIDB4NjEwMjAwICsgKGNoaWQgKiAweDAwMTApLCAweDAwMDAwMDAz LCAweDAwMDAwMDAwKTsKKwludmttX21hc2soZGV2aWNlLCAweDYxMDIwMCArIChjdHJsICogMHgw MDEwKSwgMHgwMDAwMTAxMCwgMHgwMDAwMTAwMCk7CisJbnZrbV9tYXNrKGRldmljZSwgMHg2MTAy MDAgKyAoY3RybCAqIDB4MDAxMCksIDB4MDAwMDAwMDMsIDB4MDAwMDAwMDApOwogCWlmIChudmtt X21zZWMoZGV2aWNlLCAyMDAwLAotCQlpZiAoIShudmttX3JkMzIoZGV2aWNlLCAweDYxMDIwMCAr IChjaGlkICogMHgxMCkpICYgMHgwMDFlMDAwMCkpCisJCWlmICghKG52a21fcmQzMihkZXZpY2Us IDB4NjEwMjAwICsgKGN0cmwgKiAweDEwKSkgJiAweDAwMWUwMDAwKSkKIAkJCWJyZWFrOwogCSkg PCAwKSB7Ci0JCW52a21fZXJyb3Ioc3ViZGV2LCAiY2ggJWQgZmluaSB0aW1lb3V0LCAlMDh4XG4i LCBjaGlkLAotCQkJICAgbnZrbV9yZDMyKGRldmljZSwgMHg2MTAyMDAgKyAoY2hpZCAqIDB4MTAp KSk7CisJCW52a21fZXJyb3Ioc3ViZGV2LCAiY2ggJWQgZmluaSB0aW1lb3V0LCAlMDh4XG4iLCB1 c2VyLAorCQkJICAgbnZrbV9yZDMyKGRldmljZSwgMHg2MTAyMDAgKyAoY3RybCAqIDB4MTApKSk7 CiAJfQogCiAJLyogZGlzYWJsZSBlcnJvciByZXBvcnRpbmcgYW5kIGNvbXBsZXRpb24gbm90aWZp Y2F0aW9ucyAqLwotCW52a21fbWFzayhkZXZpY2UsIDB4NjEwMDI4LCAweDAwMDEwMDAxIDw8IGNo aWQsIDB4MDAwMDAwMDAgPDwgY2hpZCk7CisJbnZrbV9tYXNrKGRldmljZSwgMHg2MTAwMjgsIDB4 MDAwMTAwMDEgPDwgdXNlciwgMHgwMDAwMDAwMCA8PCB1c2VyKTsKIH0KIAogc3RhdGljIGludApA QCAtMjEzLDI2ICsyMTQsMjcgQEAgbnY1MF9kaXNwX2RtYWNfaW5pdChzdHJ1Y3QgbnY1MF9kaXNw X2RtYWMgKmNoYW4pCiAJc3RydWN0IG52NTBfZGlzcCAqZGlzcCA9IGNoYW4tPmJhc2Uucm9vdC0+ ZGlzcDsKIAlzdHJ1Y3QgbnZrbV9zdWJkZXYgKnN1YmRldiA9ICZkaXNwLT5iYXNlLmVuZ2luZS5z dWJkZXY7CiAJc3RydWN0IG52a21fZGV2aWNlICpkZXZpY2UgPSBzdWJkZXYtPmRldmljZTsKLQlp bnQgY2hpZCA9IGNoYW4tPmJhc2UuY2hpZDsKKwlpbnQgY3RybCA9IGNoYW4tPmJhc2UuY2hpZC5j dHJsOworCWludCB1c2VyID0gY2hhbi0+YmFzZS5jaGlkLnVzZXI7CiAKIAkvKiBlbmFibGUgZXJy b3IgcmVwb3J0aW5nICovCi0JbnZrbV9tYXNrKGRldmljZSwgMHg2MTAwMjgsIDB4MDAwMTAwMDAg PDwgY2hpZCwgMHgwMDAxMDAwMCA8PCBjaGlkKTsKKwludmttX21hc2soZGV2aWNlLCAweDYxMDAy OCwgMHgwMDAxMDAwMCA8PCB1c2VyLCAweDAwMDEwMDAwIDw8IHVzZXIpOwogCiAJLyogaW5pdGlh bGlzZSBjaGFubmVsIGZvciBkbWEgY29tbWFuZCBzdWJtaXNzaW9uICovCi0JbnZrbV93cjMyKGRl dmljZSwgMHg2MTAyMDQgKyAoY2hpZCAqIDB4MDAxMCksIGNoYW4tPnB1c2gpOwotCW52a21fd3Iz MihkZXZpY2UsIDB4NjEwMjA4ICsgKGNoaWQgKiAweDAwMTApLCAweDAwMDEwMDAwKTsKLQludmtt X3dyMzIoZGV2aWNlLCAweDYxMDIwYyArIChjaGlkICogMHgwMDEwKSwgY2hpZCk7Ci0JbnZrbV9t YXNrKGRldmljZSwgMHg2MTAyMDAgKyAoY2hpZCAqIDB4MDAxMCksIDB4MDAwMDAwMTAsIDB4MDAw MDAwMTApOwotCW52a21fd3IzMihkZXZpY2UsIDB4NjQwMDAwICsgKGNoaWQgKiAweDEwMDApLCAw eDAwMDAwMDAwKTsKLQludmttX3dyMzIoZGV2aWNlLCAweDYxMDIwMCArIChjaGlkICogMHgwMDEw KSwgMHgwMDAwMDAxMyk7CisJbnZrbV93cjMyKGRldmljZSwgMHg2MTAyMDQgKyAoY3RybCAqIDB4 MDAxMCksIGNoYW4tPnB1c2gpOworCW52a21fd3IzMihkZXZpY2UsIDB4NjEwMjA4ICsgKGN0cmwg KiAweDAwMTApLCAweDAwMDEwMDAwKTsKKwludmttX3dyMzIoZGV2aWNlLCAweDYxMDIwYyArIChj dHJsICogMHgwMDEwKSwgY3RybCk7CisJbnZrbV9tYXNrKGRldmljZSwgMHg2MTAyMDAgKyAoY3Ry bCAqIDB4MDAxMCksIDB4MDAwMDAwMTAsIDB4MDAwMDAwMTApOworCW52a21fd3IzMihkZXZpY2Us IDB4NjQwMDAwICsgKGN0cmwgKiAweDEwMDApLCAweDAwMDAwMDAwKTsKKwludmttX3dyMzIoZGV2 aWNlLCAweDYxMDIwMCArIChjdHJsICogMHgwMDEwKSwgMHgwMDAwMDAxMyk7CiAKIAkvKiB3YWl0 IGZvciBpdCB0byBnbyBpbmFjdGl2ZSAqLwogCWlmIChudmttX21zZWMoZGV2aWNlLCAyMDAwLAot CQlpZiAoIShudmttX3JkMzIoZGV2aWNlLCAweDYxMDIwMCArIChjaGlkICogMHgxMCkpICYgMHg4 MDAwMDAwMCkpCisJCWlmICghKG52a21fcmQzMihkZXZpY2UsIDB4NjEwMjAwICsgKGN0cmwgKiAw eDEwKSkgJiAweDgwMDAwMDAwKSkKIAkJCWJyZWFrOwogCSkgPCAwKSB7Ci0JCW52a21fZXJyb3Io c3ViZGV2LCAiY2ggJWQgaW5pdCB0aW1lb3V0LCAlMDh4XG4iLCBjaGlkLAotCQkJICAgbnZrbV9y ZDMyKGRldmljZSwgMHg2MTAyMDAgKyAoY2hpZCAqIDB4MTApKSk7CisJCW52a21fZXJyb3Ioc3Vi ZGV2LCAiY2ggJWQgaW5pdCB0aW1lb3V0LCAlMDh4XG4iLCB1c2VyLAorCQkJICAgbnZrbV9yZDMy KGRldmljZSwgMHg2MTAyMDAgKyAoY3RybCAqIDB4MTApKSk7CiAJCXJldHVybiAtRUJVU1k7CiAJ fQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNw L3Bpb2NnZjExOS5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9w aW9jZ2YxMTkuYwppbmRleCBhNjI1YTk4Li4wYWJhYTY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL3Bpb2NnZjExOS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3AvcGlvY2dmMTE5LmMKQEAgLTMyLDIwICsz MiwyMSBAQCBnZjExOV9kaXNwX3Bpb2NfZmluaShzdHJ1Y3QgbnY1MF9kaXNwX2NoYW4gKmNoYW4p CiAJc3RydWN0IG52NTBfZGlzcCAqZGlzcCA9IGNoYW4tPnJvb3QtPmRpc3A7CiAJc3RydWN0IG52 a21fc3ViZGV2ICpzdWJkZXYgPSAmZGlzcC0+YmFzZS5lbmdpbmUuc3ViZGV2OwogCXN0cnVjdCBu dmttX2RldmljZSAqZGV2aWNlID0gc3ViZGV2LT5kZXZpY2U7Ci0JaW50IGNoaWQgPSBjaGFuLT5j aGlkOworCWludCBjdHJsID0gY2hhbi0+Y2hpZC5jdHJsOworCWludCB1c2VyID0gY2hhbi0+Y2hp ZC51c2VyOwogCi0JbnZrbV9tYXNrKGRldmljZSwgMHg2MTA0OTAgKyAoY2hpZCAqIDB4MTApLCAw eDAwMDAwMDAxLCAweDAwMDAwMDAwKTsKKwludmttX21hc2soZGV2aWNlLCAweDYxMDQ5MCArIChj dHJsICogMHgxMCksIDB4MDAwMDAwMDEsIDB4MDAwMDAwMDApOwogCWlmIChudmttX21zZWMoZGV2 aWNlLCAyMDAwLAotCQlpZiAoIShudmttX3JkMzIoZGV2aWNlLCAweDYxMDQ5MCArIChjaGlkICog MHgxMCkpICYgMHgwMDAzMDAwMCkpCisJCWlmICghKG52a21fcmQzMihkZXZpY2UsIDB4NjEwNDkw ICsgKGN0cmwgKiAweDEwKSkgJiAweDAwMDMwMDAwKSkKIAkJCWJyZWFrOwogCSkgPCAwKSB7Ci0J CW52a21fZXJyb3Ioc3ViZGV2LCAiY2ggJWQgZmluaTogJTA4eFxuIiwgY2hpZCwKLQkJCSAgIG52 a21fcmQzMihkZXZpY2UsIDB4NjEwNDkwICsgKGNoaWQgKiAweDEwKSkpOworCQludmttX2Vycm9y KHN1YmRldiwgImNoICVkIGZpbmk6ICUwOHhcbiIsIHVzZXIsCisJCQkgICBudmttX3JkMzIoZGV2 aWNlLCAweDYxMDQ5MCArIChjdHJsICogMHgxMCkpKTsKIAl9CiAKIAkvKiBkaXNhYmxlIGVycm9y IHJlcG9ydGluZyBhbmQgY29tcGxldGlvbiBub3RpZmljYXRpb24gKi8KLQludmttX21hc2soZGV2 aWNlLCAweDYxMDA5MCwgMHgwMDAwMDAwMSA8PCBjaGlkLCAweDAwMDAwMDAwKTsKLQludmttX21h c2soZGV2aWNlLCAweDYxMDBhMCwgMHgwMDAwMDAwMSA8PCBjaGlkLCAweDAwMDAwMDAwKTsKKwlu dmttX21hc2soZGV2aWNlLCAweDYxMDA5MCwgMHgwMDAwMDAwMSA8PCB1c2VyLCAweDAwMDAwMDAw KTsKKwludmttX21hc2soZGV2aWNlLCAweDYxMDBhMCwgMHgwMDAwMDAwMSA8PCB1c2VyLCAweDAw MDAwMDAwKTsKIH0KIAogc3RhdGljIGludApAQCAtNTQsMjAgKzU1LDIxIEBAIGdmMTE5X2Rpc3Bf cGlvY19pbml0KHN0cnVjdCBudjUwX2Rpc3BfY2hhbiAqY2hhbikKIAlzdHJ1Y3QgbnY1MF9kaXNw ICpkaXNwID0gY2hhbi0+cm9vdC0+ZGlzcDsKIAlzdHJ1Y3QgbnZrbV9zdWJkZXYgKnN1YmRldiA9 ICZkaXNwLT5iYXNlLmVuZ2luZS5zdWJkZXY7CiAJc3RydWN0IG52a21fZGV2aWNlICpkZXZpY2Ug PSBzdWJkZXYtPmRldmljZTsKLQlpbnQgY2hpZCA9IGNoYW4tPmNoaWQ7CisJaW50IGN0cmwgPSBj aGFuLT5jaGlkLmN0cmw7CisJaW50IHVzZXIgPSBjaGFuLT5jaGlkLnVzZXI7CiAKIAkvKiBlbmFi bGUgZXJyb3IgcmVwb3J0aW5nICovCi0JbnZrbV9tYXNrKGRldmljZSwgMHg2MTAwYTAsIDB4MDAw MDAwMDEgPDwgY2hpZCwgMHgwMDAwMDAwMSA8PCBjaGlkKTsKKwludmttX21hc2soZGV2aWNlLCAw eDYxMDBhMCwgMHgwMDAwMDAwMSA8PCB1c2VyLCAweDAwMDAwMDAxIDw8IHVzZXIpOwogCiAJLyog YWN0aXZhdGUgY2hhbm5lbCAqLwotCW52a21fd3IzMihkZXZpY2UsIDB4NjEwNDkwICsgKGNoaWQg KiAweDEwKSwgMHgwMDAwMDAwMSk7CisJbnZrbV93cjMyKGRldmljZSwgMHg2MTA0OTAgKyAoY3Ry bCAqIDB4MTApLCAweDAwMDAwMDAxKTsKIAlpZiAobnZrbV9tc2VjKGRldmljZSwgMjAwMCwKLQkJ dTMyIHRtcCA9IG52a21fcmQzMihkZXZpY2UsIDB4NjEwNDkwICsgKGNoaWQgKiAweDEwKSk7CisJ CXUzMiB0bXAgPSBudmttX3JkMzIoZGV2aWNlLCAweDYxMDQ5MCArIChjdHJsICogMHgxMCkpOwog CQlpZiAoKHRtcCAmIDB4MDAwMzAwMDApID09IDB4MDAwMTAwMDApCiAJCQlicmVhazsKIAkpIDwg MCkgewotCQludmttX2Vycm9yKHN1YmRldiwgImNoICVkIGluaXQ6ICUwOHhcbiIsIGNoaWQsCi0J CQkgICBudmttX3JkMzIoZGV2aWNlLCAweDYxMDQ5MCArIChjaGlkICogMHgxMCkpKTsKKwkJbnZr bV9lcnJvcihzdWJkZXYsICJjaCAlZCBpbml0OiAlMDh4XG4iLCB1c2VyLAorCQkJICAgbnZrbV9y ZDMyKGRldmljZSwgMHg2MTA0OTAgKyAoY3RybCAqIDB4MTApKSk7CiAJCXJldHVybiAtRUJVU1k7 CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9k aXNwL3Bpb2NudjUwLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNw L3Bpb2NudjUwLmMKaW5kZXggOWQyNjE4ZC4uMDIxMWUwZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9waW9jbnY1MC5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3AvcGlvY252NTAuYwpAQCAtMzIsMTUgKzMy LDE2IEBAIG52NTBfZGlzcF9waW9jX2Zpbmkoc3RydWN0IG52NTBfZGlzcF9jaGFuICpjaGFuKQog CXN0cnVjdCBudjUwX2Rpc3AgKmRpc3AgPSBjaGFuLT5yb290LT5kaXNwOwogCXN0cnVjdCBudmtt X3N1YmRldiAqc3ViZGV2ID0gJmRpc3AtPmJhc2UuZW5naW5lLnN1YmRldjsKIAlzdHJ1Y3QgbnZr bV9kZXZpY2UgKmRldmljZSA9IHN1YmRldi0+ZGV2aWNlOwotCWludCBjaGlkID0gY2hhbi0+Y2hp ZDsKKwlpbnQgY3RybCA9IGNoYW4tPmNoaWQuY3RybDsKKwlpbnQgdXNlciA9IGNoYW4tPmNoaWQu dXNlcjsKIAotCW52a21fbWFzayhkZXZpY2UsIDB4NjEwMjAwICsgKGNoaWQgKiAweDEwKSwgMHgw MDAwMDAwMSwgMHgwMDAwMDAwMCk7CisJbnZrbV9tYXNrKGRldmljZSwgMHg2MTAyMDAgKyAoY3Ry bCAqIDB4MTApLCAweDAwMDAwMDAxLCAweDAwMDAwMDAwKTsKIAlpZiAobnZrbV9tc2VjKGRldmlj ZSwgMjAwMCwKLQkJaWYgKCEobnZrbV9yZDMyKGRldmljZSwgMHg2MTAyMDAgKyAoY2hpZCAqIDB4 MTApKSAmIDB4MDAwMzAwMDApKQorCQlpZiAoIShudmttX3JkMzIoZGV2aWNlLCAweDYxMDIwMCAr IChjdHJsICogMHgxMCkpICYgMHgwMDAzMDAwMCkpCiAJCQlicmVhazsKIAkpIDwgMCkgewotCQlu dmttX2Vycm9yKHN1YmRldiwgImNoICVkIHRpbWVvdXQ6ICUwOHhcbiIsIGNoaWQsCi0JCQkgICBu dmttX3JkMzIoZGV2aWNlLCAweDYxMDIwMCArIChjaGlkICogMHgxMCkpKTsKKwkJbnZrbV9lcnJv cihzdWJkZXYsICJjaCAlZCB0aW1lb3V0OiAlMDh4XG4iLCB1c2VyLAorCQkJICAgbnZrbV9yZDMy KGRldmljZSwgMHg2MTAyMDAgKyAoY3RybCAqIDB4MTApKSk7CiAJfQogfQogCkBAIC01MCwyNiAr NTEsMjcgQEAgbnY1MF9kaXNwX3Bpb2NfaW5pdChzdHJ1Y3QgbnY1MF9kaXNwX2NoYW4gKmNoYW4p CiAJc3RydWN0IG52NTBfZGlzcCAqZGlzcCA9IGNoYW4tPnJvb3QtPmRpc3A7CiAJc3RydWN0IG52 a21fc3ViZGV2ICpzdWJkZXYgPSAmZGlzcC0+YmFzZS5lbmdpbmUuc3ViZGV2OwogCXN0cnVjdCBu dmttX2RldmljZSAqZGV2aWNlID0gc3ViZGV2LT5kZXZpY2U7Ci0JaW50IGNoaWQgPSBjaGFuLT5j aGlkOworCWludCBjdHJsID0gY2hhbi0+Y2hpZC5jdHJsOworCWludCB1c2VyID0gY2hhbi0+Y2hp ZC51c2VyOwogCi0JbnZrbV93cjMyKGRldmljZSwgMHg2MTAyMDAgKyAoY2hpZCAqIDB4MTApLCAw eDAwMDAyMDAwKTsKKwludmttX3dyMzIoZGV2aWNlLCAweDYxMDIwMCArIChjdHJsICogMHgxMCks IDB4MDAwMDIwMDApOwogCWlmIChudmttX21zZWMoZGV2aWNlLCAyMDAwLAotCQlpZiAoIShudmtt X3JkMzIoZGV2aWNlLCAweDYxMDIwMCArIChjaGlkICogMHgxMCkpICYgMHgwMDAzMDAwMCkpCisJ CWlmICghKG52a21fcmQzMihkZXZpY2UsIDB4NjEwMjAwICsgKGN0cmwgKiAweDEwKSkgJiAweDAw MDMwMDAwKSkKIAkJCWJyZWFrOwogCSkgPCAwKSB7Ci0JCW52a21fZXJyb3Ioc3ViZGV2LCAiY2gg JWQgdGltZW91dDA6ICUwOHhcbiIsIGNoaWQsCi0JCQkgICBudmttX3JkMzIoZGV2aWNlLCAweDYx MDIwMCArIChjaGlkICogMHgxMCkpKTsKKwkJbnZrbV9lcnJvcihzdWJkZXYsICJjaCAlZCB0aW1l b3V0MDogJTA4eFxuIiwgdXNlciwKKwkJCSAgIG52a21fcmQzMihkZXZpY2UsIDB4NjEwMjAwICsg KGN0cmwgKiAweDEwKSkpOwogCQlyZXR1cm4gLUVCVVNZOwogCX0KIAotCW52a21fd3IzMihkZXZp Y2UsIDB4NjEwMjAwICsgKGNoaWQgKiAweDEwKSwgMHgwMDAwMDAwMSk7CisJbnZrbV93cjMyKGRl dmljZSwgMHg2MTAyMDAgKyAoY3RybCAqIDB4MTApLCAweDAwMDAwMDAxKTsKIAlpZiAobnZrbV9t c2VjKGRldmljZSwgMjAwMCwKLQkJdTMyIHRtcCA9IG52a21fcmQzMihkZXZpY2UsIDB4NjEwMjAw ICsgKGNoaWQgKiAweDEwKSk7CisJCXUzMiB0bXAgPSBudmttX3JkMzIoZGV2aWNlLCAweDYxMDIw MCArIChjdHJsICogMHgxMCkpOwogCQlpZiAoKHRtcCAmIDB4MDAwMzAwMDApID09IDB4MDAwMTAw MDApCiAJCQlicmVhazsKIAkpIDwgMCkgewotCQludmttX2Vycm9yKHN1YmRldiwgImNoICVkIHRp bWVvdXQxOiAlMDh4XG4iLCBjaGlkLAotCQkJICAgbnZrbV9yZDMyKGRldmljZSwgMHg2MTAyMDAg KyAoY2hpZCAqIDB4MTApKSk7CisJCW52a21fZXJyb3Ioc3ViZGV2LCAiY2ggJWQgdGltZW91dDE6 ICUwOHhcbiIsIHVzZXIsCisJCQkgICBudmttX3JkMzIoZGV2aWNlLCAweDYxMDIwMCArIChjdHJs ICogMHgxMCkpKTsKIAkJcmV0dXJuIC1FQlVTWTsKIAl9CiAKLS0gCjIuMS4wCgoKRnJvbSAwMDQy YWZlMTE3YzY5ZTQxNTExZTIyYzE1OTk0ZTg1M2E4NTZlMTBmIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBCZW4gU2tlZ2dzIDxic2tlZ2dzQHJlZGhhdC5jb20+CkRhdGU6IEZyaSwgMTcg TWFyIDIwMTcgMDA6NDg6MzAgKzAwMDAKU3ViamVjdDogW1BBVENIIDA3Mi8xMTJdIGRybS9ub3V2 ZWF1L2Rpc3AvbnY1MC06IHNwZWNpZnkgY3RybC91c2VyIHNlcGFyYXRlbHkKIHdoZW4gY29uc3Ry dWN0aW5nIGNsYXNzZXMKClsgVXBzdHJlYW0gY29tbWl0IDJhMzJiOWIxODY2YTJlZTlmMDFmYmYy YTQ4ZDk5MDEyZjAxMjA3MzkgXQoKU2lnbmVkLW9mZi1ieTogQmVuIFNrZWdncyA8YnNrZWdnc0By ZWRoYXQuY29tPgpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8YWxleGFuZGVyLmxldmluQHZl cml6b24uY29tPgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51 eGZvdW5kYXRpb24ub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5l L2Rpc3AvY2hhbm52NTAuYyAgfCAxMSArKysrKystLS0tLQogZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvbnZrbS9lbmdpbmUvZGlzcC9jaGFubnY1MC5oICB8IDE1ICsrKysrKysrKy0tLS0tLQogZHJp dmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9jdXJzZzg0LmMgICB8ICAyICst CiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2N1cnNnZjExOS5jIHwg IDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3AvY3Vyc2drMTA0 LmMgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9jdXJz Z3QyMTUuYyB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNw L2N1cnNudjUwLmMgIHwgIDYgKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2Vu Z2luZS9kaXNwL2RtYWNudjUwLmMgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252 a20vZW5naW5lL2Rpc3Avb2ltbWc4NC5jICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvbnZrbS9lbmdpbmUvZGlzcC9vaW1tZ2YxMTkuYyB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0v bm91dmVhdS9udmttL2VuZ2luZS9kaXNwL29pbW1nazEwNC5jIHwgIDIgKy0KIGRyaXZlcnMvZ3B1 L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3Avb2ltbWd0MjE1LmMgfCAgMiArLQogZHJpdmVy cy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9vaW1tbnY1MC5jICB8ICA2ICsrKy0t LQogZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9yb290bnY1MC5jICB8 ICA0ICsrLS0KIDE0IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rp c3AvY2hhbm52NTAuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3Av Y2hhbm52NTAuYwppbmRleCAzNzZmMmM2Li45ZDkwZDhiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2NoYW5udjUwLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9jaGFubnY1MC5jCkBAIC0yNjMsNyArMjYz LDcgQEAgbnY1MF9kaXNwX2NoYW4gPSB7CiBpbnQKIG52NTBfZGlzcF9jaGFuX2N0b3IoY29uc3Qg c3RydWN0IG52NTBfZGlzcF9jaGFuX2Z1bmMgKmZ1bmMsCiAJCSAgICBjb25zdCBzdHJ1Y3QgbnY1 MF9kaXNwX2NoYW5fbXRoZCAqbXRoZCwKLQkJICAgIHN0cnVjdCBudjUwX2Rpc3Bfcm9vdCAqcm9v dCwgaW50IGNoaWQsIGludCBoZWFkLAorCQkgICAgc3RydWN0IG52NTBfZGlzcF9yb290ICpyb290 LCBpbnQgY3RybCwgaW50IHVzZXIsIGludCBoZWFkLAogCQkgICAgY29uc3Qgc3RydWN0IG52a21f b2NsYXNzICpvY2xhc3MsCiAJCSAgICBzdHJ1Y3QgbnY1MF9kaXNwX2NoYW4gKmNoYW4pCiB7CkBA IC0yNzMsOCArMjczLDggQEAgbnY1MF9kaXNwX2NoYW5fY3Rvcihjb25zdCBzdHJ1Y3QgbnY1MF9k aXNwX2NoYW5fZnVuYyAqZnVuYywKIAljaGFuLT5mdW5jID0gZnVuYzsKIAljaGFuLT5tdGhkID0g bXRoZDsKIAljaGFuLT5yb290ID0gcm9vdDsKLQljaGFuLT5jaGlkLmN0cmwgPSBjaGlkOwotCWNo YW4tPmNoaWQudXNlciA9IGNoaWQ7CisJY2hhbi0+Y2hpZC5jdHJsID0gY3RybDsKKwljaGFuLT5j aGlkLnVzZXIgPSB1c2VyOwogCWNoYW4tPmhlYWQgPSBoZWFkOwogCiAJaWYgKGRpc3AtPmNoYW5b Y2hhbi0+Y2hpZC51c2VyXSkgewpAQCAtMjg4LDcgKzI4OCw3IEBAIG52NTBfZGlzcF9jaGFuX2N0 b3IoY29uc3Qgc3RydWN0IG52NTBfZGlzcF9jaGFuX2Z1bmMgKmZ1bmMsCiBpbnQKIG52NTBfZGlz cF9jaGFuX25ld18oY29uc3Qgc3RydWN0IG52NTBfZGlzcF9jaGFuX2Z1bmMgKmZ1bmMsCiAJCSAg ICBjb25zdCBzdHJ1Y3QgbnY1MF9kaXNwX2NoYW5fbXRoZCAqbXRoZCwKLQkJICAgIHN0cnVjdCBu djUwX2Rpc3Bfcm9vdCAqcm9vdCwgaW50IGNoaWQsIGludCBoZWFkLAorCQkgICAgc3RydWN0IG52 NTBfZGlzcF9yb290ICpyb290LCBpbnQgY3RybCwgaW50IHVzZXIsIGludCBoZWFkLAogCQkgICAg Y29uc3Qgc3RydWN0IG52a21fb2NsYXNzICpvY2xhc3MsCiAJCSAgICBzdHJ1Y3QgbnZrbV9vYmpl Y3QgKipwb2JqZWN0KQogewpAQCAtMjk4LDUgKzI5OCw2IEBAIG52NTBfZGlzcF9jaGFuX25ld18o Y29uc3Qgc3RydWN0IG52NTBfZGlzcF9jaGFuX2Z1bmMgKmZ1bmMsCiAJCXJldHVybiAtRU5PTUVN OwogCSpwb2JqZWN0ID0gJmNoYW4tPm9iamVjdDsKIAotCXJldHVybiBudjUwX2Rpc3BfY2hhbl9j dG9yKGZ1bmMsIG10aGQsIHJvb3QsIGNoaWQsIGhlYWQsIG9jbGFzcywgY2hhbik7CisJcmV0dXJu IG52NTBfZGlzcF9jaGFuX2N0b3IoZnVuYywgbXRoZCwgcm9vdCwgY3RybCwgdXNlciwKKwkJCQkg ICBoZWFkLCBvY2xhc3MsIGNoYW4pOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25v dXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9jaGFubnY1MC5oIGIvZHJpdmVycy9ncHUvZHJtL25vdXZl YXUvbnZrbS9lbmdpbmUvZGlzcC9jaGFubnY1MC5oCmluZGV4IDdiNWEyZWEuLjczN2IzOGYgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3AvY2hhbm52 NTAuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2NoYW5u djUwLmgKQEAgLTI5LDExICsyOSwxMSBAQCBzdHJ1Y3QgbnY1MF9kaXNwX2NoYW5fZnVuYyB7CiAK IGludCBudjUwX2Rpc3BfY2hhbl9jdG9yKGNvbnN0IHN0cnVjdCBudjUwX2Rpc3BfY2hhbl9mdW5j ICosCiAJCQljb25zdCBzdHJ1Y3QgbnY1MF9kaXNwX2NoYW5fbXRoZCAqLAotCQkJc3RydWN0IG52 NTBfZGlzcF9yb290ICosIGludCBjaGlkLCBpbnQgaGVhZCwKKwkJCXN0cnVjdCBudjUwX2Rpc3Bf cm9vdCAqLCBpbnQgY3RybCwgaW50IHVzZXIsIGludCBoZWFkLAogCQkJY29uc3Qgc3RydWN0IG52 a21fb2NsYXNzICosIHN0cnVjdCBudjUwX2Rpc3BfY2hhbiAqKTsKIGludCBudjUwX2Rpc3BfY2hh bl9uZXdfKGNvbnN0IHN0cnVjdCBudjUwX2Rpc3BfY2hhbl9mdW5jICosCiAJCQljb25zdCBzdHJ1 Y3QgbnY1MF9kaXNwX2NoYW5fbXRoZCAqLAotCQkJc3RydWN0IG52NTBfZGlzcF9yb290ICosIGlu dCBjaGlkLCBpbnQgaGVhZCwKKwkJCXN0cnVjdCBudjUwX2Rpc3Bfcm9vdCAqLCBpbnQgY3RybCwg aW50IHVzZXIsIGludCBoZWFkLAogCQkJY29uc3Qgc3RydWN0IG52a21fb2NsYXNzICosIHN0cnVj dCBudmttX29iamVjdCAqKik7CiAKIGV4dGVybiBjb25zdCBzdHJ1Y3QgbnY1MF9kaXNwX2NoYW5f ZnVuYyBudjUwX2Rpc3BfcGlvY19mdW5jOwpAQCAtOTQsMTMgKzk0LDE2IEBAIGV4dGVybiBjb25z dCBzdHJ1Y3QgbnY1MF9kaXNwX2NoYW5fbXRoZCBnazEwNF9kaXNwX292bHlfY2hhbl9tdGhkOwog c3RydWN0IG52NTBfZGlzcF9waW9jX29jbGFzcyB7CiAJaW50ICgqY3RvcikoY29uc3Qgc3RydWN0 IG52NTBfZGlzcF9jaGFuX2Z1bmMgKiwKIAkJICAgIGNvbnN0IHN0cnVjdCBudjUwX2Rpc3BfY2hh bl9tdGhkICosCi0JCSAgICBzdHJ1Y3QgbnY1MF9kaXNwX3Jvb3QgKiwgaW50IGNoaWQsCisJCSAg ICBzdHJ1Y3QgbnY1MF9kaXNwX3Jvb3QgKiwgaW50IGN0cmwsIGludCB1c2VyLAogCQkgICAgY29u c3Qgc3RydWN0IG52a21fb2NsYXNzICosIHZvaWQgKmRhdGEsIHUzMiBzaXplLAogCQkgICAgc3Ry dWN0IG52a21fb2JqZWN0ICoqKTsKIAlzdHJ1Y3QgbnZrbV9zY2xhc3MgYmFzZTsKIAljb25zdCBz dHJ1Y3QgbnY1MF9kaXNwX2NoYW5fZnVuYyAqZnVuYzsKIAljb25zdCBzdHJ1Y3QgbnY1MF9kaXNw X2NoYW5fbXRoZCAqbXRoZDsKLQlpbnQgY2hpZDsKKwlzdHJ1Y3QgeworCQlpbnQgY3RybDsKKwkJ aW50IHVzZXI7CisJfSBjaGlkOwogfTsKIAogZXh0ZXJuIGNvbnN0IHN0cnVjdCBudjUwX2Rpc3Bf cGlvY19vY2xhc3MgbnY1MF9kaXNwX29pbW1fb2NsYXNzOwpAQCAtMTIzLDEyICsxMjYsMTIgQEAg ZXh0ZXJuIGNvbnN0IHN0cnVjdCBudjUwX2Rpc3BfcGlvY19vY2xhc3MgZ3AxMDJfZGlzcF9jdXJz X29jbGFzczsKIAogaW50IG52NTBfZGlzcF9jdXJzX25ldyhjb25zdCBzdHJ1Y3QgbnY1MF9kaXNw X2NoYW5fZnVuYyAqLAogCQkgICAgICAgY29uc3Qgc3RydWN0IG52NTBfZGlzcF9jaGFuX210aGQg KiwKLQkJICAgICAgIHN0cnVjdCBudjUwX2Rpc3Bfcm9vdCAqLCBpbnQgY2hpZCwKKwkJICAgICAg IHN0cnVjdCBudjUwX2Rpc3Bfcm9vdCAqLCBpbnQgY3RybCwgaW50IHVzZXIsCiAJCSAgICAgICBj b25zdCBzdHJ1Y3QgbnZrbV9vY2xhc3MgKiwgdm9pZCAqZGF0YSwgdTMyIHNpemUsCiAJCSAgICAg ICBzdHJ1Y3QgbnZrbV9vYmplY3QgKiopOwogaW50IG52NTBfZGlzcF9vaW1tX25ldyhjb25zdCBz dHJ1Y3QgbnY1MF9kaXNwX2NoYW5fZnVuYyAqLAogCQkgICAgICAgY29uc3Qgc3RydWN0IG52NTBf ZGlzcF9jaGFuX210aGQgKiwKLQkJICAgICAgIHN0cnVjdCBudjUwX2Rpc3Bfcm9vdCAqLCBpbnQg Y2hpZCwKKwkJICAgICAgIHN0cnVjdCBudjUwX2Rpc3Bfcm9vdCAqLCBpbnQgY3RybCwgaW50IHVz ZXIsCiAJCSAgICAgICBjb25zdCBzdHJ1Y3QgbnZrbV9vY2xhc3MgKiwgdm9pZCAqZGF0YSwgdTMy IHNpemUsCiAJCSAgICAgICBzdHJ1Y3QgbnZrbV9vYmplY3QgKiopOwogI2VuZGlmCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2N1cnNnODQuYyBi L2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3AvY3Vyc2c4NC5jCmluZGV4 IGRkOTlmYzcuLmZhNzgxYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252 a20vZW5naW5lL2Rpc3AvY3Vyc2c4NC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252 a20vZW5naW5lL2Rpc3AvY3Vyc2c4NC5jCkBAIC0zMyw1ICszMyw1IEBAIGc4NF9kaXNwX2N1cnNf b2NsYXNzID0gewogCS5iYXNlLm1heHZlciA9IDAsCiAJLmN0b3IgPSBudjUwX2Rpc3BfY3Vyc19u ZXcsCiAJLmZ1bmMgPSAmbnY1MF9kaXNwX3Bpb2NfZnVuYywKLQkuY2hpZCA9IDcsCisJLmNoaWQg PSB7IDcsIDcgfSwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmtt L2VuZ2luZS9kaXNwL2N1cnNnZjExOS5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9l bmdpbmUvZGlzcC9jdXJzZ2YxMTkuYwppbmRleCAyYTE1NzRlLi4yYmU2ZmIwIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2N1cnNnZjExOS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3AvY3Vyc2dmMTE5LmMK QEAgLTMzLDUgKzMzLDUgQEAgZ2YxMTlfZGlzcF9jdXJzX29jbGFzcyA9IHsKIAkuYmFzZS5tYXh2 ZXIgPSAwLAogCS5jdG9yID0gbnY1MF9kaXNwX2N1cnNfbmV3LAogCS5mdW5jID0gJmdmMTE5X2Rp c3BfcGlvY19mdW5jLAotCS5jaGlkID0gMTMsCisJLmNoaWQgPSB7IDEzLCAxMyB9LAogfTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3AvY3Vyc2dr MTA0LmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2N1cnNnazEw NC5jCmluZGV4IDI4ZThmMDYuLjJhOTlkYjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9u b3V2ZWF1L252a20vZW5naW5lL2Rpc3AvY3Vyc2drMTA0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9jdXJzZ2sxMDQuYwpAQCAtMzMsNSArMzMsNSBAQCBn azEwNF9kaXNwX2N1cnNfb2NsYXNzID0gewogCS5iYXNlLm1heHZlciA9IDAsCiAJLmN0b3IgPSBu djUwX2Rpc3BfY3Vyc19uZXcsCiAJLmZ1bmMgPSAmZ2YxMTlfZGlzcF9waW9jX2Z1bmMsCi0JLmNo aWQgPSAxMywKKwkuY2hpZCA9IHsgMTMsIDEzIH0sCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9jdXJzZ3QyMTUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3AvY3Vyc2d0MjE1LmMKaW5kZXggZDhhNGI5Yy4u MDBhN2YzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUv ZGlzcC9jdXJzZ3QyMTUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2lu ZS9kaXNwL2N1cnNndDIxNS5jCkBAIC0zMyw1ICszMyw1IEBAIGd0MjE1X2Rpc3BfY3Vyc19vY2xh c3MgPSB7CiAJLmJhc2UubWF4dmVyID0gMCwKIAkuY3RvciA9IG52NTBfZGlzcF9jdXJzX25ldywK IAkuZnVuYyA9ICZudjUwX2Rpc3BfcGlvY19mdW5jLAotCS5jaGlkID0gNywKKwkuY2hpZCA9IHsg NywgNyB9LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5n aW5lL2Rpc3AvY3Vyc252NTAuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5l L2Rpc3AvY3Vyc252NTAuYwppbmRleCA4YjEzMjA0Li44MmZmODJkIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2N1cnNudjUwLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9jdXJzbnY1MC5jCkBAIC0zMyw3 ICszMyw3IEBACiBpbnQKIG52NTBfZGlzcF9jdXJzX25ldyhjb25zdCBzdHJ1Y3QgbnY1MF9kaXNw X2NoYW5fZnVuYyAqZnVuYywKIAkJICAgY29uc3Qgc3RydWN0IG52NTBfZGlzcF9jaGFuX210aGQg Km10aGQsCi0JCSAgIHN0cnVjdCBudjUwX2Rpc3Bfcm9vdCAqcm9vdCwgaW50IGNoaWQsCisJCSAg IHN0cnVjdCBudjUwX2Rpc3Bfcm9vdCAqcm9vdCwgaW50IGN0cmwsIGludCB1c2VyLAogCQkgICBj b25zdCBzdHJ1Y3QgbnZrbV9vY2xhc3MgKm9jbGFzcywgdm9pZCAqZGF0YSwgdTMyIHNpemUsCiAJ CSAgIHN0cnVjdCBudmttX29iamVjdCAqKnBvYmplY3QpCiB7CkBAIC01NCw3ICs1NCw3IEBAIG52 NTBfZGlzcF9jdXJzX25ldyhjb25zdCBzdHJ1Y3QgbnY1MF9kaXNwX2NoYW5fZnVuYyAqZnVuYywK IAl9IGVsc2UKIAkJcmV0dXJuIHJldDsKIAotCXJldHVybiBudjUwX2Rpc3BfY2hhbl9uZXdfKGZ1 bmMsIG10aGQsIHJvb3QsIGNoaWQgKyBoZWFkLAorCXJldHVybiBudjUwX2Rpc3BfY2hhbl9uZXdf KGZ1bmMsIG10aGQsIHJvb3QsIGN0cmwgKyBoZWFkLCB1c2VyICsgaGVhZCwKIAkJCQkgICBoZWFk LCBvY2xhc3MsIHBvYmplY3QpOwogfQogCkBAIC02NSw1ICs2NSw1IEBAIG52NTBfZGlzcF9jdXJz X29jbGFzcyA9IHsKIAkuYmFzZS5tYXh2ZXIgPSAwLAogCS5jdG9yID0gbnY1MF9kaXNwX2N1cnNf bmV3LAogCS5mdW5jID0gJm52NTBfZGlzcF9waW9jX2Z1bmMsCi0JLmNoaWQgPSA3LAorCS5jaGlk ID0geyA3LCA3IH0sCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZr bS9lbmdpbmUvZGlzcC9kbWFjbnY1MC5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9l bmdpbmUvZGlzcC9kbWFjbnY1MC5jCmluZGV4IGNmYmE5OTQuLjBhMTM4MWEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3AvZG1hY252NTAuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL2RtYWNudjUwLmMKQEAg LTE0OSw3ICsxNDksNyBAQCBudjUwX2Rpc3BfZG1hY19uZXdfKGNvbnN0IHN0cnVjdCBudjUwX2Rp c3BfZG1hY19mdW5jICpmdW5jLAogCWNoYW4tPmZ1bmMgPSBmdW5jOwogCiAJcmV0ID0gbnY1MF9k aXNwX2NoYW5fY3RvcigmbnY1MF9kaXNwX2RtYWNfZnVuY18sIG10aGQsIHJvb3QsCi0JCQkJICBj aGlkLCBoZWFkLCBvY2xhc3MsICZjaGFuLT5iYXNlKTsKKwkJCQkgIGNoaWQsIGNoaWQsIGhlYWQs IG9jbGFzcywgJmNoYW4tPmJhc2UpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3Avb2ltbWc4NC5j IGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9vaW1tZzg0LmMKaW5k ZXggNTRhNGFlOC4uNWFkNWQwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUv bnZrbS9lbmdpbmUvZGlzcC9vaW1tZzg0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUv bnZrbS9lbmdpbmUvZGlzcC9vaW1tZzg0LmMKQEAgLTMzLDUgKzMzLDUgQEAgZzg0X2Rpc3Bfb2lt bV9vY2xhc3MgPSB7CiAJLmJhc2UubWF4dmVyID0gMCwKIAkuY3RvciA9IG52NTBfZGlzcF9vaW1t X25ldywKIAkuZnVuYyA9ICZudjUwX2Rpc3BfcGlvY19mdW5jLAotCS5jaGlkID0gNSwKKwkuY2hp ZCA9IHsgNSwgNSB9LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252 a20vZW5naW5lL2Rpc3Avb2ltbWdmMTE5LmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmtt L2VuZ2luZS9kaXNwL29pbW1nZjExOS5jCmluZGV4IGM2NThkYjUuLjFmOWZkMzQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3Avb2ltbWdmMTE5LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9vaW1tZ2YxMTku YwpAQCAtMzMsNSArMzMsNSBAQCBnZjExOV9kaXNwX29pbW1fb2NsYXNzID0gewogCS5iYXNlLm1h eHZlciA9IDAsCiAJLmN0b3IgPSBudjUwX2Rpc3Bfb2ltbV9uZXcsCiAJLmZ1bmMgPSAmZ2YxMTlf ZGlzcF9waW9jX2Z1bmMsCi0JLmNoaWQgPSA5LAorCS5jaGlkID0geyA5LCA5IH0sCiB9OwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9vaW1tZ2sx MDQuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3Avb2ltbWdrMTA0 LmMKaW5kZXggYjFmZGU4Yy4uMGMwOWZlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25v dXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9vaW1tZ2sxMDQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v bm91dmVhdS9udmttL2VuZ2luZS9kaXNwL29pbW1nazEwNC5jCkBAIC0zMyw1ICszMyw1IEBAIGdr MTA0X2Rpc3Bfb2ltbV9vY2xhc3MgPSB7CiAJLmJhc2UubWF4dmVyID0gMCwKIAkuY3RvciA9IG52 NTBfZGlzcF9vaW1tX25ldywKIAkuZnVuYyA9ICZnZjExOV9kaXNwX3Bpb2NfZnVuYywKLQkuY2hp ZCA9IDksCisJLmNoaWQgPSB7IDksIDkgfSwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL29pbW1ndDIxNS5jIGIvZHJpdmVycy9ncHUvZHJt L25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9vaW1tZ3QyMTUuYwppbmRleCBmNGU3ZWIzLi4xMjgx ZGIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNw L29pbW1ndDIxNS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rp c3Avb2ltbWd0MjE1LmMKQEAgLTMzLDUgKzMzLDUgQEAgZ3QyMTVfZGlzcF9vaW1tX29jbGFzcyA9 IHsKIAkuYmFzZS5tYXh2ZXIgPSAwLAogCS5jdG9yID0gbnY1MF9kaXNwX29pbW1fbmV3LAogCS5m dW5jID0gJm52NTBfZGlzcF9waW9jX2Z1bmMsCi0JLmNoaWQgPSA1LAorCS5jaGlkID0geyA1LCA1 IH0sCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUv ZGlzcC9vaW1tbnY1MC5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlz cC9vaW1tbnY1MC5jCmluZGV4IDM5NDBiOWMuLjA3NTQwZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3Avb2ltbW52NTAuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2luZS9kaXNwL29pbW1udjUwLmMKQEAgLTMzLDcgKzMz LDcgQEAKIGludAogbnY1MF9kaXNwX29pbW1fbmV3KGNvbnN0IHN0cnVjdCBudjUwX2Rpc3BfY2hh bl9mdW5jICpmdW5jLAogCQkgICBjb25zdCBzdHJ1Y3QgbnY1MF9kaXNwX2NoYW5fbXRoZCAqbXRo ZCwKLQkJICAgc3RydWN0IG52NTBfZGlzcF9yb290ICpyb290LCBpbnQgY2hpZCwKKwkJICAgc3Ry dWN0IG52NTBfZGlzcF9yb290ICpyb290LCBpbnQgY3RybCwgaW50IHVzZXIsCiAJCSAgIGNvbnN0 IHN0cnVjdCBudmttX29jbGFzcyAqb2NsYXNzLCB2b2lkICpkYXRhLCB1MzIgc2l6ZSwKIAkJICAg c3RydWN0IG52a21fb2JqZWN0ICoqcG9iamVjdCkKIHsKQEAgLTU0LDcgKzU0LDcgQEAgbnY1MF9k aXNwX29pbW1fbmV3KGNvbnN0IHN0cnVjdCBudjUwX2Rpc3BfY2hhbl9mdW5jICpmdW5jLAogCX0g ZWxzZQogCQlyZXR1cm4gcmV0OwogCi0JcmV0dXJuIG52NTBfZGlzcF9jaGFuX25ld18oZnVuYywg bXRoZCwgcm9vdCwgY2hpZCArIGhlYWQsCisJcmV0dXJuIG52NTBfZGlzcF9jaGFuX25ld18oZnVu YywgbXRoZCwgcm9vdCwgY3RybCArIGhlYWQsIHVzZXIgKyBoZWFkLAogCQkJCSAgIGhlYWQsIG9j bGFzcywgcG9iamVjdCk7CiB9CiAKQEAgLTY1LDUgKzY1LDUgQEAgbnY1MF9kaXNwX29pbW1fb2Ns YXNzID0gewogCS5iYXNlLm1heHZlciA9IDAsCiAJLmN0b3IgPSBudjUwX2Rpc3Bfb2ltbV9uZXcs CiAJLmZ1bmMgPSAmbnY1MF9kaXNwX3Bpb2NfZnVuYywKLQkuY2hpZCA9IDUsCisJLmNoaWQgPSB7 IDUsIDUgfSwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2Vu Z2luZS9kaXNwL3Jvb3RudjUwLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmttL2VuZ2lu ZS9kaXNwL3Jvb3RudjUwLmMKaW5kZXggMmY5Y2VjZC4uMDVjODI5YSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9lbmdpbmUvZGlzcC9yb290bnY1MC5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vZW5naW5lL2Rpc3Avcm9vdG52NTAuYwpAQCAtMjA3 LDggKzIwNyw4IEBAIG52NTBfZGlzcF9yb290X3Bpb2NfbmV3Xyhjb25zdCBzdHJ1Y3QgbnZrbV9v Y2xhc3MgKm9jbGFzcywKIHsKIAljb25zdCBzdHJ1Y3QgbnY1MF9kaXNwX3Bpb2Nfb2NsYXNzICpz Y2xhc3MgPSBvY2xhc3MtPnByaXY7CiAJc3RydWN0IG52NTBfZGlzcF9yb290ICpyb290ID0gbnY1 MF9kaXNwX3Jvb3Qob2NsYXNzLT5wYXJlbnQpOwotCXJldHVybiBzY2xhc3MtPmN0b3Ioc2NsYXNz LT5mdW5jLCBzY2xhc3MtPm10aGQsIHJvb3QsIHNjbGFzcy0+Y2hpZCwKLQkJCSAgICBvY2xhc3Ms IGRhdGEsIHNpemUsIHBvYmplY3QpOworCXJldHVybiBzY2xhc3MtPmN0b3Ioc2NsYXNzLT5mdW5j LCBzY2xhc3MtPm10aGQsIHJvb3QsIHNjbGFzcy0+Y2hpZC5jdHJsLAorCQkJICAgIHNjbGFzcy0+ Y2hpZC51c2VyLCBvY2xhc3MsIGRhdGEsIHNpemUsIHBvYmplY3QpOwogfQogCiBzdGF0aWMgaW50 Ci0tIAoyLjEuMAoKCkZyb20gNjFhMTUzZDA2ZWY0Y2UxN2JmMmEyMDBkYzZlNzI0N2RjM2I1NmE1 NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTWF1cmljaW8gRmFyaWEgZGUgT2xpdmVp cmEgPG1hdXJpY2ZvQGxpbnV4LnZuZXQuaWJtLmNvbT4KRGF0ZTogRnJpLCAxNyBNYXIgMjAxNyAw MDo0ODozMCArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMDczLzExMl0gYmxvY2s6IGFsbG93IFdSSVRF X1NBTUUgY29tbWFuZHMgd2l0aCB0aGUgU0dfSU8gaW9jdGwKClsgVXBzdHJlYW0gY29tbWl0IDI1 Y2RiNjQ1MTA2NDRmM2U4NTRkNTAyZDY5YzczZjIxYzZkZjg4YTkgXQoKVGhlIFdSSVRFX1NBTUUg Y29tbWFuZHMgYXJlIG5vdCBwcmVzZW50IGluIHRoZSBibGtfZGVmYXVsdF9jbWRfZmlsdGVyCndy aXRlX29rIGxpc3QsIGFuZCB0aHVzIGFyZSBmYWlsZWQgd2l0aCAtRVBFUk0gd2hlbiB0aGUgU0df SU8gaW9jdGwoKQppcyBleGVjdXRlZCB3aXRob3V0IENBUF9TWVNfUkFXSU8gY2FwYWJpbGl0eSAo ZS5nLiwgdW5wcml2aWxlZ2VkIHVzZXJzKS4KWyBzZ19pbygpIC0+IGJsa19maWxsX3NnaGRyX3Jx KCkgPiBibGtfdmVyaWZ5X2NvbW1hbmQoKSAtPiAtRVBFUk0gXQoKVGhlIHByb2JsZW0gY2FuIGJl IHJlcHJvZHVjZWQgd2l0aCB0aGUgc2dfd3JpdGVfc2FtZSBjb21tYW5kCgogICMgc2dfd3JpdGVf c2FtZSAtLW51bSAxIC0teGZlcmxlbiA1MTIgL2Rldi9zZGEKICAjCgogICMgY2Fwc2ggLS1kcm9w PWNhcF9zeXNfcmF3aW8gLS0gLWMgXAogICAgJ3NnX3dyaXRlX3NhbWUgLS1udW0gMSAtLXhmZXJs ZW4gNTEyIC9kZXYvc2RhJwogICAgV3JpdGUgc2FtZTogcGFzcyB0aHJvdWdoIG9zIGVycm9yOiBP cGVyYXRpb24gbm90IHBlcm1pdHRlZAogICMKCkZvciBjb21wYXJpc29uLCB0aGUgV1JJVEVfVkVS SUZZIGNvbW1hbmQgZG9lcyBub3Qgb2JzZXJ2ZSB0aGlzIHByb2JsZW0sCnNpbmNlIGl0IGlzIGlu IHRoYXQgbGlzdDoKCiAgIyBjYXBzaCAtLWRyb3A9Y2FwX3N5c19yYXdpbyAtLSAtYyBcCiAgICAn c2dfd3JpdGVfdmVyaWZ5IC0tbnVtIDEgLS1pbGVuIDUxMiAtLWxiYSAwIC9kZXYvc2RhJwogICMK ClNvLCB0aGlzIHBhdGNoIGFkZHMgdGhlIFdSSVRFX1NBTUUgY29tbWFuZHMgdG8gdGhlIGxpc3Qs IGluIG9yZGVyCmZvciB0aGUgU0dfSU8gaW9jdGwgdG8gZmluaXNoIHN1Y2Nlc3NmdWxseToKCiAg IyBjYXBzaCAtLWRyb3A9Y2FwX3N5c19yYXdpbyAtLSAtYyBcCiAgICAnc2dfd3JpdGVfc2FtZSAt LW51bSAxIC0teGZlcmxlbiA1MTIgL2Rldi9zZGEnCiAgIwoKVGhhdCBjYXNlIGhhcHBlbnMgdG8g YmUgZXhlcmNpc2VkIGJ5IFFFTVUgS1ZNIGd1ZXN0cyB3aXRoICdzY3NpLWJsb2NrJyBkZXZpY2Vz CihxZW11ICItZGV2aWNlIHNjc2ktYmxvY2siIFsxXSwgbGlidmlydCAiPGRpc2sgdHlwZT0nYmxv Y2snIGRldmljZT0nbHVuJz4iIFsyXSksCndoaWNoIGVtcGxveXMgdGhlIFNHX0lPIGlvY3RsKCkg YW5kIHJ1bnMgYXMgYW4gdW5wcml2aWxlZ2VkIHVzZXIgKGxpYnZpcnQtcWVtdSkuCgpJbiB0aGF0 IHNjZW5hcmlvLCB3aGVuIGEgZmlsZXN5c3RlbSAoZS5nLiwgZXh0NCkgcGVyZm9ybXMgaXRzIHpl cm8tb3V0IGNhbGxzLAp3aGljaCBhcmUgdHJhbnNsYXRlZCB0byB3cml0ZS1zYW1lIGNhbGxzIGlu IHRoZSBndWVzdCBrZXJuZWwsIGFuZCB0aGVuIGludG8KU0dfSU8gaW9jdGxzIHRvIHRoZSBob3N0 IGtlcm5lbCwgU0NTSSBJL08gZXJyb3JzIG1heSBiZSBvYnNlcnZlZCBpbiB0aGUgZ3Vlc3Q6Cgog IFsuLi5dIHNkIDA6MDowOjA6IFtzZGFdIHRhZyMwIEZBSUxFRCBSZXN1bHQ6IGhvc3RieXRlPURJ RF9PSyBkcml2ZXJieXRlPURSSVZFUl9TRU5TRQogIFsuLi5dIHNkIDA6MDowOjA6IFtzZGFdIHRh ZyMwIFNlbnNlIEtleSA6IEFib3J0ZWQgQ29tbWFuZCBbY3VycmVudF0KICBbLi4uXSBzZCAwOjA6 MDowOiBbc2RhXSB0YWcjMCBBZGQuIFNlbnNlOiBJL08gcHJvY2VzcyB0ZXJtaW5hdGVkCiAgWy4u Ll0gc2QgMDowOjA6MDogW3NkYV0gdGFnIzAgQ0RCOiBXcml0ZSBTYW1lKDEwKSA0MSAwMCAwMSAw NCBlMCA3OCAwMCAwMCAwOCAwMAogIFsuLi5dIGJsa191cGRhdGVfcmVxdWVzdDogSS9PIGVycm9y LCBkZXYgc2RhLCBzZWN0b3IgMTcwOTY4MjQKCkxpbmtzOgpbMV0gaHR0cDovL2dpdC5xZW11Lm9y Zy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPTMzNmE2OTE1YmM3MDg5ZmIyMGZlYTRiYTk5OTcyYWQ5 YTk3YzVmNTIKWzJdIGh0dHBzOi8vbGlidmlydC5vcmcvZm9ybWF0ZG9tYWluLmh0bWwjZWxlbWVu dHNEaXNrcyAoc2VlICdkaXNrJyAtPiAnZGV2aWNlJykKClNpZ25lZC1vZmYtYnk6IE1hdXJpY2lv IEZhcmlhIGRlIE9saXZlaXJhIDxtYXVyaWNmb0BsaW51eC52bmV0LmlibS5jb20+ClNpZ25lZC1v ZmYtYnk6IEJyYWhhZGFtYmFsIFNyaW5pdmFzYW4gPGxhdGhhQGxpbnV4LnZuZXQuaWJtLmNvbT4K UmVwb3J0ZWQtYnk6IE1hbmp1bmF0aGEgSCBSIDxtYW5qdWhyMUBpbi5pYm0uY29tPgpSZXZpZXdl ZC1ieTogQ2hyaXN0b3BoIEhlbGx3aWcgPGhjaEBsc3QuZGU+ClNpZ25lZC1vZmYtYnk6IEplbnMg QXhib2UgPGF4Ym9lQGZiLmNvbT4KU2lnbmVkLW9mZi1ieTogU2FzaGEgTGV2aW4gPGFsZXhhbmRl ci5sZXZpbkB2ZXJpem9uLmNvbT4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxn cmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBibG9jay9zY3NpX2lvY3RsLmMgfCAzICsr KwogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2Jsb2NrL3Nj c2lfaW9jdGwuYyBiL2Jsb2NrL3Njc2lfaW9jdGwuYwppbmRleCAwNzc0Nzk5Li5jNmZlZTc0IDEw MDY0NAotLS0gYS9ibG9jay9zY3NpX2lvY3RsLmMKKysrIGIvYmxvY2svc2NzaV9pb2N0bC5jCkBA IC0xODIsNiArMTgyLDkgQEAgc3RhdGljIHZvaWQgYmxrX3NldF9jbWRfZmlsdGVyX2RlZmF1bHRz KHN0cnVjdCBibGtfY21kX2ZpbHRlciAqZmlsdGVyKQogCV9fc2V0X2JpdChXUklURV8xNiwgZmls dGVyLT53cml0ZV9vayk7CiAJX19zZXRfYml0KFdSSVRFX0xPTkcsIGZpbHRlci0+d3JpdGVfb2sp OwogCV9fc2V0X2JpdChXUklURV9MT05HXzIsIGZpbHRlci0+d3JpdGVfb2spOworCV9fc2V0X2Jp dChXUklURV9TQU1FLCBmaWx0ZXItPndyaXRlX29rKTsKKwlfX3NldF9iaXQoV1JJVEVfU0FNRV8x NiwgZmlsdGVyLT53cml0ZV9vayk7CisJX19zZXRfYml0KFdSSVRFX1NBTUVfMzIsIGZpbHRlci0+ d3JpdGVfb2spOwogCV9fc2V0X2JpdChFUkFTRSwgZmlsdGVyLT53cml0ZV9vayk7CiAJX19zZXRf Yml0KEdQQ01EX01PREVfU0VMRUNUXzEwLCBmaWx0ZXItPndyaXRlX29rKTsKIAlfX3NldF9iaXQo TU9ERV9TRUxFQ1QsIGZpbHRlci0+d3JpdGVfb2spOwotLSAKMi4xLjAKCgpGcm9tIGU2MjcxMTZj MGMzNWQzZDQyZmIwMzE2ODM2MDZhNDljZTdkNjNjYzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IEhhcmFsZCBGcmV1ZGVuYmVyZ2VyIDxmcmV1ZGVAbGludXgudm5ldC5pYm0uY29tPgpE YXRlOiBGcmksIDE3IE1hciAyMDE3IDAwOjQ4OjMxICswMDAwClN1YmplY3Q6IFtQQVRDSCAwNzQv MTEyXSBzMzkwL3pjcnlwdDogSW50cm9kdWNlIENFWDYgdG9sZXJhdGlvbgoKWyBVcHN0cmVhbSBj b21taXQgYjNlODY1MmJjYmZhMDQ4MDdlNDQ3MDhkNGQwYzhjZGFkMzljOTIxNSBdCgpTaWduZWQt b2ZmLWJ5OiBIYXJhbGQgRnJldWRlbmJlcmdlciA8ZnJldWRlQGxpbnV4LnZuZXQuaWJtLmNvbT4K U2lnbmVkLW9mZi1ieTogTWFydGluIFNjaHdpZGVmc2t5IDxzY2h3aWRlZnNreUBkZS5pYm0uY29t PgpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8YWxleGFuZGVyLmxldmluQHZlcml6b24uY29t PgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRp b24ub3JnPgotLS0KIGRyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmMgfCAzICsrKwogZHJpdmVy cy9zMzkwL2NyeXB0by9hcF9idXMuaCB8IDEgKwogMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlv bnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jIGIvZHJpdmVy cy9zMzkwL2NyeXB0by9hcF9idXMuYwppbmRleCBlZDkyZmIwLi43NmI4MDJjIDEwMDY0NAotLS0g YS9kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5jCisrKyBiL2RyaXZlcnMvczM5MC9jcnlwdG8v YXBfYnVzLmMKQEAgLTE3MTIsNiArMTcxMiw5IEBAIHN0YXRpYyB2b2lkIGFwX3NjYW5fYnVzKHN0 cnVjdCB3b3JrX3N0cnVjdCAqdW51c2VkKQogCQlhcF9kZXYtPnF1ZXVlX2RlcHRoID0gcXVldWVf ZGVwdGg7CiAJCWFwX2Rldi0+cmF3X2h3dHlwZSA9IGRldmljZV90eXBlOwogCQlhcF9kZXYtPmRl dmljZV90eXBlID0gZGV2aWNlX3R5cGU7CisJCS8qIENFWDYgdG9sZXJhdGlvbjogbWFwIHRvIENF WDUgKi8KKwkJaWYgKGRldmljZV90eXBlID09IEFQX0RFVklDRV9UWVBFX0NFWDYpCisJCQlhcF9k ZXYtPmRldmljZV90eXBlID0gQVBfREVWSUNFX1RZUEVfQ0VYNTsKIAkJYXBfZGV2LT5mdW5jdGlv bnMgPSBkZXZpY2VfZnVuY3Rpb25zOwogCQlzcGluX2xvY2tfaW5pdCgmYXBfZGV2LT5sb2NrKTsK IAkJSU5JVF9MSVNUX0hFQUQoJmFwX2Rldi0+cGVuZGluZ3EpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zMzkwL2NyeXB0by9hcF9idXMuaCBiL2RyaXZlcnMvczM5MC9jcnlwdG8vYXBfYnVzLmgKaW5k ZXggZDdmZGY1Yy4uZmQ2NmQyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL2NyeXB0by9hcF9i dXMuaAorKysgYi9kcml2ZXJzL3MzOTAvY3J5cHRvL2FwX2J1cy5oCkBAIC0xMDUsNiArMTA1LDcg QEAgc3RhdGljIGlubGluZSBpbnQgYXBfdGVzdF9iaXQodW5zaWduZWQgaW50ICpwdHIsIHVuc2ln bmVkIGludCBucikKICNkZWZpbmUgQVBfREVWSUNFX1RZUEVfQ0VYM0MJOQogI2RlZmluZSBBUF9E RVZJQ0VfVFlQRV9DRVg0CTEwCiAjZGVmaW5lIEFQX0RFVklDRV9UWVBFX0NFWDUJMTEKKyNkZWZp bmUgQVBfREVWSUNFX1RZUEVfQ0VYNgkxMgogCiAvKgogICogS25vd24gZnVuY3Rpb24gZmFjaWxp dGllcwotLSAKMi4xLjAKCgpGcm9tIGJkMmRlNDUwMzFiOWIwNTczOGM5MWI4N2MxYzM2MDQ3MWMw NzViYmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEhlbnJpayBJbmdvIDxoZW5yaWsu aW5nb0Bhdm9pbmVsYW1hLmZpPgpEYXRlOiBGcmksIDE3IE1hciAyMDE3IDAwOjQ4OjMxICswMDAw ClN1YmplY3Q6IFtQQVRDSCAwNzUvMTEyXSB1dmN2aWRlbzogdXZjX3NjYW5fZmFsbGJhY2soKSBm b3Igd2ViY2FtcyB3aXRoIGJyb2tlbgogY2hhaW4KClsgVXBzdHJlYW0gY29tbWl0IGU5NTAyNjdh YjgwMmM4NTU4ZjExMDBlYWZkNDA4N2ZkMDM5YWQ2MzQgXQoKU29tZSBkZXZpY2VzIGhhdmUgaW52 YWxpZCBiYVNvdXJjZUlEIHJlZmVyZW5jZXMsIGNhdXNpbmcgdXZjX3NjYW5fY2hhaW4oKQp0byBm YWlsLCBidXQgaWYgd2UganVzdCB0YWtlIHRoZSBlbnRpdGllcyB3ZSBjYW4gZmluZCBhbmQgcHV0 IHRoZW0KdG9nZXRoZXIgaW4gdGhlIG1vc3Qgc2Vuc2libGUgY2hhaW4gd2UgY2FuIHRoaW5rIG9m LCB0dXJucyBvdXQgdGhleSBkbwp3b3JrIGFueXdheS4gTm90ZTogVGhpcyBoZXVyaXN0aWMgYXNz dW1lcyB0aGVyZSBpcyBhIHNpbmdsZSBjaGFpbi4KCkF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIGRl dmljZXMga25vd24gdG8gaGF2ZSBzdWNoIGEgYnJva2VuIGNoYWluIGFyZQogIC0gQWNlciBJbnRl Z3JhdGVkIENhbWVyYSAoNTk4NjowNTVhKQogIC0gUmVhbHRlayBydGwxNTdhNyAoMGJkYTo1N2E3 KQoKU2lnbmVkLW9mZi1ieTogSGVucmlrIEluZ28gPGhlbnJpay5pbmdvQGF2b2luZWxhbWEuZmk+ ClNpZ25lZC1vZmYtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNv bmJvYXJkLmNvbT4KU2lnbmVkLW9mZi1ieTogTWF1cm8gQ2FydmFsaG8gQ2hlaGFiIDxtY2hlaGFi QHMtb3BlbnNvdXJjZS5jb20+ClNpZ25lZC1vZmYtYnk6IFNhc2hhIExldmluIDxhbGV4YW5kZXIu bGV2aW5AdmVyaXpvbi5jb20+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3Jl Z2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogZHJpdmVycy9tZWRpYS91c2IvdXZjL3V2Y19k cml2ZXIuYyB8IDExOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiAxIGZp bGUgY2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS91c2IvdXZjL3V2Y19kcml2ZXIuYyBiL2RyaXZlcnMvbWVkaWEvdXNi L3V2Yy91dmNfZHJpdmVyLmMKaW5kZXggMzAyZTI4NC4uY2RlNDNiNiAxMDA2NDQKLS0tIGEvZHJp dmVycy9tZWRpYS91c2IvdXZjL3V2Y19kcml2ZXIuYworKysgYi9kcml2ZXJzL21lZGlhL3VzYi91 dmMvdXZjX2RyaXZlci5jCkBAIC0xNTk1LDYgKzE1OTUsMTE0IEBAIHN0YXRpYyBjb25zdCBjaGFy ICp1dmNfcHJpbnRfY2hhaW4oc3RydWN0IHV2Y192aWRlb19jaGFpbiAqY2hhaW4pCiAJcmV0dXJu IGJ1ZmZlcjsKIH0KIAorc3RhdGljIHN0cnVjdCB1dmNfdmlkZW9fY2hhaW4gKnV2Y19hbGxvY19j aGFpbihzdHJ1Y3QgdXZjX2RldmljZSAqZGV2KQoreworCXN0cnVjdCB1dmNfdmlkZW9fY2hhaW4g KmNoYWluOworCisJY2hhaW4gPSBremFsbG9jKHNpemVvZigqY2hhaW4pLCBHRlBfS0VSTkVMKTsK KwlpZiAoY2hhaW4gPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwlJTklUX0xJU1RfSEVBRCgm Y2hhaW4tPmVudGl0aWVzKTsKKwltdXRleF9pbml0KCZjaGFpbi0+Y3RybF9tdXRleCk7CisJY2hh aW4tPmRldiA9IGRldjsKKwl2NGwyX3ByaW9faW5pdCgmY2hhaW4tPnByaW8pOworCisJcmV0dXJu IGNoYWluOworfQorCisvKgorICogRmFsbGJhY2sgaGV1cmlzdGljIGZvciBkZXZpY2VzIHRoYXQg ZG9uJ3QgY29ubmVjdCB1bml0cyBhbmQgdGVybWluYWxzIGluIGEKKyAqIHZhbGlkIGNoYWluLgor ICoKKyAqIFNvbWUgZGV2aWNlcyBoYXZlIGludmFsaWQgYmFTb3VyY2VJRCByZWZlcmVuY2VzLCBj YXVzaW5nIHV2Y19zY2FuX2NoYWluKCkKKyAqIHRvIGZhaWwsIGJ1dCBpZiB3ZSBqdXN0IHRha2Ug dGhlIGVudGl0aWVzIHdlIGNhbiBmaW5kIGFuZCBwdXQgdGhlbSB0b2dldGhlcgorICogaW4gdGhl IG1vc3Qgc2Vuc2libGUgY2hhaW4gd2UgY2FuIHRoaW5rIG9mLCB0dXJucyBvdXQgdGhleSBkbyB3 b3JrIGFueXdheS4KKyAqIE5vdGU6IFRoaXMgaGV1cmlzdGljIGFzc3VtZXMgdGhlcmUgaXMgYSBz aW5nbGUgY2hhaW4uCisgKgorICogQXQgdGhlIHRpbWUgb2Ygd3JpdGluZywgZGV2aWNlcyBrbm93 biB0byBoYXZlIHN1Y2ggYSBicm9rZW4gY2hhaW4gYXJlCisgKiAgLSBBY2VyIEludGVncmF0ZWQg Q2FtZXJhICg1OTg2OjA1NWEpCisgKiAgLSBSZWFsdGVrIHJ0bDE1N2E3ICgwYmRhOjU3YTcpCisg Ki8KK3N0YXRpYyBpbnQgdXZjX3NjYW5fZmFsbGJhY2soc3RydWN0IHV2Y19kZXZpY2UgKmRldikK K3sKKwlzdHJ1Y3QgdXZjX3ZpZGVvX2NoYWluICpjaGFpbjsKKwlzdHJ1Y3QgdXZjX2VudGl0eSAq aXRlcm0gPSBOVUxMOworCXN0cnVjdCB1dmNfZW50aXR5ICpvdGVybSA9IE5VTEw7CisJc3RydWN0 IHV2Y19lbnRpdHkgKmVudGl0eTsKKwlzdHJ1Y3QgdXZjX2VudGl0eSAqcHJldjsKKworCS8qCisJ ICogU3RhcnQgYnkgbG9jYXRpbmcgdGhlIGlucHV0IGFuZCBvdXRwdXQgdGVybWluYWxzLiBXZSBv bmx5IHN1cHBvcnQKKwkgKiBkZXZpY2VzIHdpdGggZXhhY3RseSBvbmUgb2YgZWFjaCBmb3Igbm93 LgorCSAqLworCWxpc3RfZm9yX2VhY2hfZW50cnkoZW50aXR5LCAmZGV2LT5lbnRpdGllcywgbGlz dCkgeworCQlpZiAoVVZDX0VOVElUWV9JU19JVEVSTShlbnRpdHkpKSB7CisJCQlpZiAoaXRlcm0p CisJCQkJcmV0dXJuIC1FSU5WQUw7CisJCQlpdGVybSA9IGVudGl0eTsKKwkJfQorCisJCWlmIChV VkNfRU5USVRZX0lTX09URVJNKGVudGl0eSkpIHsKKwkJCWlmIChvdGVybSkKKwkJCQlyZXR1cm4g LUVJTlZBTDsKKwkJCW90ZXJtID0gZW50aXR5OworCQl9CisJfQorCisJaWYgKGl0ZXJtID09IE5V TEwgfHwgb3Rlcm0gPT0gTlVMTCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBBbGxvY2F0ZSB0 aGUgY2hhaW4gYW5kIGZpbGwgaXQuICovCisJY2hhaW4gPSB1dmNfYWxsb2NfY2hhaW4oZGV2KTsK KwlpZiAoY2hhaW4gPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpZiAodXZjX3NjYW5f Y2hhaW5fZW50aXR5KGNoYWluLCBvdGVybSkgPCAwKQorCQlnb3RvIGVycm9yOworCisJcHJldiA9 IG90ZXJtOworCisJLyoKKwkgKiBBZGQgYWxsIFByb2Nlc3NpbmcgYW5kIEV4dGVuc2lvbiBVbml0 cyB3aXRoIHR3byBwYWRzLiBUaGUgb3JkZXIKKwkgKiBkb2Vzbid0IG1hdHRlciBtdWNoLCB1c2Ug cmV2ZXJzZSBsaXN0IHRyYXZlcnNhbCB0byBjb25uZWN0IHVuaXRzIGluCisJICogVVZDIGRlc2Ny aXB0b3Igb3JkZXIgYXMgd2UgYnVpbGQgdGhlIGNoYWluIGZyb20gb3V0cHV0IHRvIGlucHV0LiBU aGlzCisJICogbGVhZHMgdG8gdW5pdHMgYXBwZWFyaW5nIGluIHRoZSBvcmRlciBtZWFudCBieSB0 aGUgbWFudWZhY3R1cmVyIGZvcgorCSAqIHRoZSBjYW1lcmFzIGtub3duIHRvIHJlcXVpcmUgdGhp cyBoZXVyaXN0aWMuCisJICovCisJbGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNlKGVudGl0eSwg JmRldi0+ZW50aXRpZXMsIGxpc3QpIHsKKwkJaWYgKGVudGl0eS0+dHlwZSAhPSBVVkNfVkNfUFJP Q0VTU0lOR19VTklUICYmCisJCSAgICBlbnRpdHktPnR5cGUgIT0gVVZDX1ZDX0VYVEVOU0lPTl9V TklUKQorCQkJY29udGludWU7CisKKwkJaWYgKGVudGl0eS0+bnVtX3BhZHMgIT0gMikKKwkJCWNv bnRpbnVlOworCisJCWlmICh1dmNfc2Nhbl9jaGFpbl9lbnRpdHkoY2hhaW4sIGVudGl0eSkgPCAw KQorCQkJZ290byBlcnJvcjsKKworCQlwcmV2LT5iYVNvdXJjZUlEWzBdID0gZW50aXR5LT5pZDsK KwkJcHJldiA9IGVudGl0eTsKKwl9CisKKwlpZiAodXZjX3NjYW5fY2hhaW5fZW50aXR5KGNoYWlu LCBpdGVybSkgPCAwKQorCQlnb3RvIGVycm9yOworCisJcHJldi0+YmFTb3VyY2VJRFswXSA9IGl0 ZXJtLT5pZDsKKworCWxpc3RfYWRkX3RhaWwoJmNoYWluLT5saXN0LCAmZGV2LT5jaGFpbnMpOwor CisJdXZjX3RyYWNlKFVWQ19UUkFDRV9QUk9CRSwKKwkJICAiRm91bmQgYSB2aWRlbyBjaGFpbiBi eSBmYWxsYmFjayBoZXVyaXN0aWMgKCVzKS5cbiIsCisJCSAgdXZjX3ByaW50X2NoYWluKGNoYWlu KSk7CisKKwlyZXR1cm4gMDsKKworZXJyb3I6CisJa2ZyZWUoY2hhaW4pOworCXJldHVybiAtRUlO VkFMOworfQorCiAvKgogICogU2NhbiB0aGUgZGV2aWNlIGZvciB2aWRlbyBjaGFpbnMgYW5kIHJl Z2lzdGVyIHZpZGVvIGRldmljZXMuCiAgKgpAQCAtMTYxNywxNSArMTcyNSwxMCBAQCBzdGF0aWMg aW50IHV2Y19zY2FuX2RldmljZShzdHJ1Y3QgdXZjX2RldmljZSAqZGV2KQogCQlpZiAodGVybS0+ Y2hhaW4ubmV4dCB8fCB0ZXJtLT5jaGFpbi5wcmV2KQogCQkJY29udGludWU7CiAKLQkJY2hhaW4g PSBremFsbG9jKHNpemVvZigqY2hhaW4pLCBHRlBfS0VSTkVMKTsKKwkJY2hhaW4gPSB1dmNfYWxs b2NfY2hhaW4oZGV2KTsKIAkJaWYgKGNoYWluID09IE5VTEwpCiAJCQlyZXR1cm4gLUVOT01FTTsK IAotCQlJTklUX0xJU1RfSEVBRCgmY2hhaW4tPmVudGl0aWVzKTsKLQkJbXV0ZXhfaW5pdCgmY2hh aW4tPmN0cmxfbXV0ZXgpOwotCQljaGFpbi0+ZGV2ID0gZGV2OwotCQl2NGwyX3ByaW9faW5pdCgm Y2hhaW4tPnByaW8pOwotCiAJCXRlcm0tPmZsYWdzIHw9IFVWQ19FTlRJVFlfRkxBR19ERUZBVUxU OwogCiAJCWlmICh1dmNfc2Nhbl9jaGFpbihjaGFpbiwgdGVybSkgPCAwKSB7CkBAIC0xNjM5LDYg KzE3NDIsOSBAQCBzdGF0aWMgaW50IHV2Y19zY2FuX2RldmljZShzdHJ1Y3QgdXZjX2RldmljZSAq ZGV2KQogCQlsaXN0X2FkZF90YWlsKCZjaGFpbi0+bGlzdCwgJmRldi0+Y2hhaW5zKTsKIAl9CiAK KwlpZiAobGlzdF9lbXB0eSgmZGV2LT5jaGFpbnMpKQorCQl1dmNfc2Nhbl9mYWxsYmFjayhkZXYp OworCiAJaWYgKGxpc3RfZW1wdHkoJmRldi0+Y2hhaW5zKSkgewogCQl1dmNfcHJpbnRrKEtFUk5f SU5GTywgIk5vIHZhbGlkIHZpZGVvIGNoYWluIGZvdW5kLlxuIik7CiAJCXJldHVybiAtMTsKLS0g CjIuMS4wCgoKRnJvbSBiYzAxZWI5Mzk4OTk3NjJlZWRlMzAzZmZiYmJmY2RhMTk3MzE2MjM0IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBWbGFkaW1pciBEYXZ5ZG92IDx2ZGF2eWRvdi5k ZXZAZ21haWwuY29tPgpEYXRlOiBGcmksIDE3IE1hciAyMDE3IDAwOjQ4OjMxICswMDAwClN1Ympl Y3Q6IFtQQVRDSCAwNzYvMTEyXSBzbHViOiBtb3ZlIHN5bmNocm9uaXplX3NjaGVkIG91dCBvZiBz bGFiX211dGV4IG9uCiBzaHJpbmsKClsgVXBzdHJlYW0gY29tbWl0IDg5ZTM2NGRiNzFmYjVlN2Zj OGQ5MzIyODE1MmFiZmE2N2RhZjM1ZmEgXQoKc3luY2hyb25pemVfc2NoZWQoKSBpcyBhIGhlYXZ5 IG9wZXJhdGlvbiBhbmQgY2FsbGluZyBpdCBwZXIgZWFjaCBjYWNoZQpvd25lZCBieSBhIG1lbW9y eSBjZ3JvdXAgYmVpbmcgZGVzdHJveWVkIG1heSB0YWtlIHF1aXRlIHNvbWUgdGltZS4gIFdoYXQK aXMgd29yc2UsIGl0J3MgY3VycmVudGx5IGNhbGxlZCB1bmRlciB0aGUgc2xhYl9tdXRleCwgc3Rh bGxpbmcgYWxsIHdvcmtzCmRvaW5nIGNhY2hlIGNyZWF0aW9uL2Rlc3RydWN0aW9uLgoKQWN0dWFs bHksIHRoZXJlIGlzbid0IG11Y2ggcG9pbnQgaW4gY2FsbGluZyBzeW5jaHJvbml6ZV9zY2hlZCgp IGZvciBlYWNoCmNhY2hlIC0gaXQncyBlbm91Z2ggdG8gY2FsbCBpdCBqdXN0IG9uY2UgLSBhZnRl ciBzZXR0aW5nIGNwdV9wYXJ0aWFsIGZvcgphbGwgY2FjaGVzIGFuZCBiZWZvcmUgc2hyaW5raW5n IHRoZW0uICBUaGlzIHdheSwgd2UgY2FuIGFsc28gbW92ZSBpdCBvdXQKb2YgdGhlIHNsYWJfbXV0 ZXgsIHdoaWNoIHdlIGhhdmUgdG8gaG9sZCBmb3IgaXRlcmF0aW5nIG92ZXIgdGhlIHNsYWIKY2Fj aGUgbGlzdC4KCkxpbms6IGh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9MTcyOTkxCkxpbms6IGh0dHA6Ly9sa21sLmtlcm5lbC5vcmcvci8wYTEwZDcxZWNhZTNkYjAw ZmI0NDIxYmNkM2Y4MmJjYzkxMWY0YmU0LjE0NzUzMjk3NTEuZ2l0LnZkYXZ5ZG92LmRldkBnbWFp bC5jb20KU2lnbmVkLW9mZi1ieTogVmxhZGltaXIgRGF2eWRvdiA8dmRhdnlkb3YuZGV2QGdtYWls LmNvbT4KUmVwb3J0ZWQtYnk6IERvdWcgU215dGhpZXMgPGRzbXl0aGllc0B0ZWx1cy5uZXQ+CkFj a2VkLWJ5OiBKb29uc29vIEtpbSA8aWFtam9vbnNvby5raW1AbGdlLmNvbT4KQ2M6IENocmlzdG9w aCBMYW1ldGVyIDxjbEBsaW51eC5jb20+CkNjOiBEYXZpZCBSaWVudGplcyA8cmllbnRqZXNAZ29v Z2xlLmNvbT4KQ2M6IEpvaGFubmVzIFdlaW5lciA8aGFubmVzQGNtcHhjaGcub3JnPgpDYzogTWlj aGFsIEhvY2tvIDxtaG9ja29Aa2VybmVsLm9yZz4KQ2M6IFBla2thIEVuYmVyZyA8cGVuYmVyZ0Br ZXJuZWwub3JnPgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZvdW5k YXRpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgt Zm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IFNhc2hhIExldmluIDxhbGV4YW5kZXIubGV2 aW5AdmVyaXpvbi5jb20+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2to QGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogbW0vc2xhYi5jICAgICAgICB8ICA0ICsrLS0KIG1t L3NsYWIuaCAgICAgICAgfCAgMiArLQogbW0vc2xhYl9jb21tb24uYyB8IDI3ICsrKysrKysrKysr KysrKysrKysrKysrKystLQogbW0vc2xvYi5jICAgICAgICB8ICAyICstCiBtbS9zbHViLmMgICAg ICAgIHwgMTkgKystLS0tLS0tLS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRp b25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9tbS9zbGFiLmMgYi9tbS9zbGFi LmMKaW5kZXggYmQ4NzhmMC4uMWY4MmQxNiAxMDA2NDQKLS0tIGEvbW0vc2xhYi5jCisrKyBiL21t L3NsYWIuYwpAQCAtMjMzMiw3ICsyMzMyLDcgQEAgc3RhdGljIGludCBkcmFpbl9mcmVlbGlzdChz dHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsCiAJcmV0dXJuIG5yX2ZyZWVkOwogfQogCi1pbnQgX19r bWVtX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGVwLCBib29sIGRlYWN0aXZh dGUpCitpbnQgX19rbWVtX2NhY2hlX3NocmluayhzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGVwKQog ewogCWludCByZXQgPSAwOwogCWludCBub2RlOwpAQCAtMjM1Miw3ICsyMzUyLDcgQEAgaW50IF9f a21lbV9jYWNoZV9zaHJpbmsoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlcCwgYm9vbCBkZWFjdGl2 YXRlKQogCiBpbnQgX19rbWVtX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNo ZXApCiB7Ci0JcmV0dXJuIF9fa21lbV9jYWNoZV9zaHJpbmsoY2FjaGVwLCBmYWxzZSk7CisJcmV0 dXJuIF9fa21lbV9jYWNoZV9zaHJpbmsoY2FjaGVwKTsKIH0KIAogdm9pZCBfX2ttZW1fY2FjaGVf cmVsZWFzZShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGVwKQpkaWZmIC0tZ2l0IGEvbW0vc2xhYi5o IGIvbW0vc2xhYi5oCmluZGV4IGJjMDVmZGMuLmNlYjdkNzAgMTAwNjQ0Ci0tLSBhL21tL3NsYWIu aAorKysgYi9tbS9zbGFiLmgKQEAgLTE0Niw3ICsxNDYsNyBAQCBzdGF0aWMgaW5saW5lIHVuc2ln bmVkIGxvbmcga21lbV9jYWNoZV9mbGFncyh1bnNpZ25lZCBsb25nIG9iamVjdF9zaXplLAogCiBp bnQgX19rbWVtX2NhY2hlX3NodXRkb3duKHN0cnVjdCBrbWVtX2NhY2hlICopOwogdm9pZCBfX2tt ZW1fY2FjaGVfcmVsZWFzZShzdHJ1Y3Qga21lbV9jYWNoZSAqKTsKLWludCBfX2ttZW1fY2FjaGVf c2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICosIGJvb2wpOworaW50IF9fa21lbV9jYWNoZV9zaHJp bmsoc3RydWN0IGttZW1fY2FjaGUgKik7CiB2b2lkIHNsYWJfa21lbV9jYWNoZV9yZWxlYXNlKHN0 cnVjdCBrbWVtX2NhY2hlICopOwogCiBzdHJ1Y3Qgc2VxX2ZpbGU7CmRpZmYgLS1naXQgYS9tbS9z bGFiX2NvbW1vbi5jIGIvbW0vc2xhYl9jb21tb24uYwppbmRleCAzMjliMDM4Li41ZDJmMjRmIDEw MDY0NAotLS0gYS9tbS9zbGFiX2NvbW1vbi5jCisrKyBiL21tL3NsYWJfY29tbW9uLmMKQEAgLTU3 Myw2ICs1NzMsMjkgQEAgdm9pZCBtZW1jZ19kZWFjdGl2YXRlX2ttZW1fY2FjaGVzKHN0cnVjdCBt ZW1fY2dyb3VwICptZW1jZykKIAlnZXRfb25saW5lX2NwdXMoKTsKIAlnZXRfb25saW5lX21lbXMo KTsKIAorI2lmZGVmIENPTkZJR19TTFVCCisJLyoKKwkgKiBJbiBjYXNlIG9mIFNMVUIsIHdlIG5l ZWQgdG8gZGlzYWJsZSBlbXB0eSBzbGFiIGNhY2hpbmcgdG8KKwkgKiBhdm9pZCBwaW5uaW5nIHRo ZSBvZmZsaW5lIG1lbW9yeSBjZ3JvdXAgYnkgZnJlZWFibGUga21lbQorCSAqIHBhZ2VzIGNoYXJn ZWQgdG8gaXQuIFNMQUIgZG9lc24ndCBuZWVkIHRoaXMsIGFzIGl0CisJICogcGVyaW9kaWNhbGx5 IHB1cmdlcyB1bnVzZWQgc2xhYnMuCisJICovCisJbXV0ZXhfbG9jaygmc2xhYl9tdXRleCk7CisJ bGlzdF9mb3JfZWFjaF9lbnRyeShzLCAmc2xhYl9jYWNoZXMsIGxpc3QpIHsKKwkJYyA9IGlzX3Jv b3RfY2FjaGUocykgPyBjYWNoZV9mcm9tX21lbWNnX2lkeChzLCBpZHgpIDogTlVMTDsKKwkJaWYg KGMpIHsKKwkJCWMtPmNwdV9wYXJ0aWFsID0gMDsKKwkJCWMtPm1pbl9wYXJ0aWFsID0gMDsKKwkJ fQorCX0KKwltdXRleF91bmxvY2soJnNsYWJfbXV0ZXgpOworCS8qCisJICoga21lbV9jYWNoZS0+ Y3B1X3BhcnRpYWwgaXMgY2hlY2tlZCBsb2NrbGVzc2x5IChzZWUKKwkgKiBwdXRfY3B1X3BhcnRp YWwoKSkuIE1ha2Ugc3VyZSB0aGUgY2hhbmdlIGlzIHZpc2libGUuCisJICovCisJc3luY2hyb25p emVfc2NoZWQoKTsKKyNlbmRpZgorCiAJbXV0ZXhfbG9jaygmc2xhYl9tdXRleCk7CiAJbGlzdF9m b3JfZWFjaF9lbnRyeShzLCAmc2xhYl9jYWNoZXMsIGxpc3QpIHsKIAkJaWYgKCFpc19yb290X2Nh Y2hlKHMpKQpAQCAtNTg0LDcgKzYwNyw3IEBAIHZvaWQgbWVtY2dfZGVhY3RpdmF0ZV9rbWVtX2Nh Y2hlcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpCiAJCWlmICghYykKIAkJCWNvbnRpbnVlOwog Ci0JCV9fa21lbV9jYWNoZV9zaHJpbmsoYywgdHJ1ZSk7CisJCV9fa21lbV9jYWNoZV9zaHJpbmso Yyk7CiAJCWFyci0+ZW50cmllc1tpZHhdID0gTlVMTDsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZzbGFi X211dGV4KTsKQEAgLTc1NSw3ICs3NzgsNyBAQCBpbnQga21lbV9jYWNoZV9zaHJpbmsoc3RydWN0 IGttZW1fY2FjaGUgKmNhY2hlcCkKIAlnZXRfb25saW5lX2NwdXMoKTsKIAlnZXRfb25saW5lX21l bXMoKTsKIAlrYXNhbl9jYWNoZV9zaHJpbmsoY2FjaGVwKTsKLQlyZXQgPSBfX2ttZW1fY2FjaGVf c2hyaW5rKGNhY2hlcCwgZmFsc2UpOworCXJldCA9IF9fa21lbV9jYWNoZV9zaHJpbmsoY2FjaGVw KTsKIAlwdXRfb25saW5lX21lbXMoKTsKIAlwdXRfb25saW5lX2NwdXMoKTsKIAlyZXR1cm4gcmV0 OwpkaWZmIC0tZ2l0IGEvbW0vc2xvYi5jIGIvbW0vc2xvYi5jCmluZGV4IDVlYzE1ODAuLmVhYzA0 ZDQzIDEwMDY0NAotLS0gYS9tbS9zbG9iLmMKKysrIGIvbW0vc2xvYi5jCkBAIC02MzQsNyArNjM0 LDcgQEAgdm9pZCBfX2ttZW1fY2FjaGVfcmVsZWFzZShzdHJ1Y3Qga21lbV9jYWNoZSAqYykKIHsK IH0KIAotaW50IF9fa21lbV9jYWNoZV9zaHJpbmsoc3RydWN0IGttZW1fY2FjaGUgKmQsIGJvb2wg ZGVhY3RpdmF0ZSkKK2ludCBfX2ttZW1fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICpk KQogewogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvbW0vc2x1Yi5jIGIvbW0vc2x1Yi5jCmlu ZGV4IDdhYTBlOTcuLjU4Yzc1MjYgMTAwNjQ0Ci0tLSBhL21tL3NsdWIuYworKysgYi9tbS9zbHVi LmMKQEAgLTM4ODcsNyArMzg4Nyw3IEBAIEVYUE9SVF9TWU1CT0woa2ZyZWUpOwogICogYmVpbmcg YWxsb2NhdGVkIGZyb20gbGFzdCBpbmNyZWFzaW5nIHRoZSBjaGFuY2UgdGhhdCB0aGUgbGFzdCBv YmplY3RzCiAgKiBhcmUgZnJlZWQgaW4gdGhlbS4KICAqLwotaW50IF9fa21lbV9jYWNoZV9zaHJp bmsoc3RydWN0IGttZW1fY2FjaGUgKnMsIGJvb2wgZGVhY3RpdmF0ZSkKK2ludCBfX2ttZW1fY2Fj aGVfc2hyaW5rKHN0cnVjdCBrbWVtX2NhY2hlICpzKQogewogCWludCBub2RlOwogCWludCBpOwpA QCAtMzg5OSwyMSArMzg5OSw2IEBAIGludCBfX2ttZW1fY2FjaGVfc2hyaW5rKHN0cnVjdCBrbWVt X2NhY2hlICpzLCBib29sIGRlYWN0aXZhdGUpCiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQg cmV0ID0gMDsKIAotCWlmIChkZWFjdGl2YXRlKSB7Ci0JCS8qCi0JCSAqIERpc2FibGUgZW1wdHkg c2xhYnMgY2FjaGluZy4gVXNlZCB0byBhdm9pZCBwaW5uaW5nIG9mZmxpbmUKLQkJICogbWVtb3J5 IGNncm91cHMgYnkga21lbSBwYWdlcyB0aGF0IGNhbiBiZSBmcmVlZC4KLQkJICovCi0JCXMtPmNw dV9wYXJ0aWFsID0gMDsKLQkJcy0+bWluX3BhcnRpYWwgPSAwOwotCi0JCS8qCi0JCSAqIHMtPmNw dV9wYXJ0aWFsIGlzIGNoZWNrZWQgbG9ja2xlc3NseSAoc2VlIHB1dF9jcHVfcGFydGlhbCksCi0J CSAqIHNvIHdlIGhhdmUgdG8gbWFrZSBzdXJlIHRoZSBjaGFuZ2UgaXMgdmlzaWJsZS4KLQkJICov Ci0JCXN5bmNocm9uaXplX3NjaGVkKCk7Ci0JfQotCiAJZmx1c2hfYWxsKHMpOwogCWZvcl9lYWNo X2ttZW1fY2FjaGVfbm9kZShzLCBub2RlLCBuKSB7CiAJCUlOSVRfTElTVF9IRUFEKCZkaXNjYXJk KTsKQEAgLTM5NzAsNyArMzk1NSw3IEBAIHN0YXRpYyBpbnQgc2xhYl9tZW1fZ29pbmdfb2ZmbGlu ZV9jYWxsYmFjayh2b2lkICphcmcpCiAKIAltdXRleF9sb2NrKCZzbGFiX211dGV4KTsKIAlsaXN0 X2Zvcl9lYWNoX2VudHJ5KHMsICZzbGFiX2NhY2hlcywgbGlzdCkKLQkJX19rbWVtX2NhY2hlX3No cmluayhzLCBmYWxzZSk7CisJCV9fa21lbV9jYWNoZV9zaHJpbmsocyk7CiAJbXV0ZXhfdW5sb2Nr KCZzbGFiX211dGV4KTsKIAogCXJldHVybiAwOwotLSAKMi4xLjAKCgpGcm9tIDVjMTllOTA3MGRm ODE2NWRiN2JhMjZjMTNmMzk4NDhkOTRlMmNlOGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IEFsZXggSHVuZyA8YWxleC5odW5nQGNhbm9uaWNhbC5jb20+CkRhdGU6IEZyaSwgMTcgTWFy IDIwMTcgMDA6NDg6MzIgKzAwMDAKU3ViamVjdDogW1BBVENIIDA3Ny8xMTJdIEFDUEkgLyBibGFj a2xpc3Q6IGFkZCBfUkVWIHF1aXJrcyBmb3IgRGVsbCBQcmVjaXNpb24KIDU1MjAgYW5kIDM1MjAK ClsgVXBzdHJlYW0gY29tbWl0IDk1MjNiOWJmNmRjZWVmNmIwMjE1ZTkwYjIzNDhjZDY0NjU5N2Y3 OTYgXQoKUHJlY2lzaW9uIDU1MjAgYW5kIDM1MjAgZWl0aGVyIGhhbmcgYXQgbG9naW4gYW5kIGR1 cmluZyBzdXNwZW5kIG9yIHJlYm9vdC4KCkl0IHR1cm5zIG91dCB0aGF0IHRoYXQgYWRkaW5nIHRo ZW0gdG8gYWNwaV9yZXZfZG1pX3RhYmxlW10gaGVscHMgdG8gd29yawphcm91bmQgdGhvc2UgaXNz dWVzLgoKU2lnbmVkLW9mZi1ieTogQWxleCBIdW5nIDxhbGV4Lmh1bmdAY2Fub25pY2FsLmNvbT4K WyByanc6IENoYW5nZWxvZyBdClNpZ25lZC1vZmYtYnk6IFJhZmFlbCBKLiBXeXNvY2tpIDxyYWZh ZWwuai53eXNvY2tpQGludGVsLmNvbT4KClNpZ25lZC1vZmYtYnk6IFNhc2hhIExldmluIDxhbGV4 YW5kZXIubGV2aW5AdmVyaXpvbi5jb20+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1h biA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogZHJpdmVycy9hY3BpL2JsYWNrbGlz dC5jIHwgMTYgKysrKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMo KykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvYmxhY2tsaXN0LmMgYi9kcml2ZXJzL2FjcGkv YmxhY2tsaXN0LmMKaW5kZXggYmRjNjdiYS4uNGY4N2ZkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9h Y3BpL2JsYWNrbGlzdC5jCisrKyBiL2RyaXZlcnMvYWNwaS9ibGFja2xpc3QuYwpAQCAtMTYwLDYg KzE2MCwyMiBAQCBzdGF0aWMgc3RydWN0IGRtaV9zeXN0ZW1faWQgYWNwaV9yZXZfZG1pX3RhYmxl W10gX19pbml0ZGF0YSA9IHsKIAkJICAgICAgRE1JX01BVENIKERNSV9QUk9EVUNUX05BTUUsICJY UFMgMTMgOTM0MyIpLAogCQl9LAogCX0sCisJeworCSAuY2FsbGJhY2sgPSBkbWlfZW5hYmxlX3Jl dl9vdmVycmlkZSwKKwkgLmlkZW50ID0gIkRFTEwgUHJlY2lzaW9uIDU1MjAiLAorCSAubWF0Y2hl cyA9IHsKKwkJICAgICAgRE1JX01BVENIKERNSV9TWVNfVkVORE9SLCAiRGVsbCBJbmMuIiksCisJ CSAgICAgIERNSV9NQVRDSChETUlfUFJPRFVDVF9OQU1FLCAiUHJlY2lzaW9uIDU1MjAiKSwKKwkJ fSwKKwl9LAorCXsKKwkgLmNhbGxiYWNrID0gZG1pX2VuYWJsZV9yZXZfb3ZlcnJpZGUsCisJIC5p ZGVudCA9ICJERUxMIFByZWNpc2lvbiAzNTIwIiwKKwkgLm1hdGNoZXMgPSB7CisJCSAgICAgIERN SV9NQVRDSChETUlfU1lTX1ZFTkRPUiwgIkRlbGwgSW5jLiIpLAorCQkgICAgICBETUlfTUFUQ0go RE1JX1BST0RVQ1RfTkFNRSwgIlByZWNpc2lvbiAzNTIwIiksCisJCX0sCisJfSwKICNlbmRpZgog CXt9CiB9OwotLSAKMi4xLjAKCgpGcm9tIDU2YzI4ZTc5ODNhOGM4NzdlOTlkZTAxNTJjZTNmN2Y1 ZWVhOTg5NjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IE1pY2hhZWwgUG9iZWdhIDxt cG9iZWdhQG5ldmVyd2FyZS5jb20+CkRhdGU6IEZyaSwgMTcgTWFyIDIwMTcgMDA6NDg6MzIgKzAw MDAKU3ViamVjdDogW1BBVENIIDA3OC8xMTJdIEFDUEkgLyBibGFja2xpc3Q6IE1ha2UgRGVsbCBM YXRpdHVkZSAzMzUwIGV0aGVybmV0CiB3b3JrCgpbIFVwc3RyZWFtIGNvbW1pdCA3MDhmNWRjYzIx YWU5YjM1ZjM5NTg2NWZjMTU0YjAxMDViYWY0ZGU0IF0KClRoZSBEZWxsIExhdGl0dWRlIDMzNTAn cyBldGhlcm5ldCBjYXJkIGF0dGVtcHRzIHRvIHVzZSBhIHJlc2VydmVkCklSUSAoMTgpLCByZXN1 bHRpbmcgaW4gQUNQSSBiZWluZyB1bmFibGUgdG8gZW5hYmxlIHRoZSBldGhlcm5ldC4KCkFkZGlu ZyBpdCB0byBhY3BpX3Jldl9kbWlfdGFibGVbXSBoZWxwcyB0byB3b3JrIGFyb3VuZCB0aGlzIHBy b2JsZW0uCgpTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFBvYmVnYSA8bXBvYmVnYUBuZXZlcndhcmUu Y29tPgpbIHJqdzogQ2hhbmdlbG9nIF0KU2lnbmVkLW9mZi1ieTogUmFmYWVsIEouIFd5c29ja2kg PHJhZmFlbC5qLnd5c29ja2lAaW50ZWwuY29tPgoKU2lnbmVkLW9mZi1ieTogU2FzaGEgTGV2aW4g PGFsZXhhbmRlci5sZXZpbkB2ZXJpem9uLmNvbT4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1I YXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBkcml2ZXJzL2FjcGkvYmxh Y2tsaXN0LmMgfCAxMiArKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25z KCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2JsYWNrbGlzdC5jIGIvZHJpdmVycy9hY3Bp L2JsYWNrbGlzdC5jCmluZGV4IDRmODdmZDcuLjQ0MjFmN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv YWNwaS9ibGFja2xpc3QuYworKysgYi9kcml2ZXJzL2FjcGkvYmxhY2tsaXN0LmMKQEAgLTE3Niw2 ICsxNzYsMTggQEAgc3RhdGljIHN0cnVjdCBkbWlfc3lzdGVtX2lkIGFjcGlfcmV2X2RtaV90YWJs ZVtdIF9faW5pdGRhdGEgPSB7CiAJCSAgICAgIERNSV9NQVRDSChETUlfUFJPRFVDVF9OQU1FLCAi UHJlY2lzaW9uIDM1MjAiKSwKIAkJfSwKIAl9LAorCS8qCisJICogUmVzb2x2ZXMgYSBxdWlyayB3 aXRoIHRoZSBEZWxsIExhdGl0dWRlIDMzNTAgdGhhdAorCSAqIGNhdXNlcyB0aGUgZXRoZXJuZXQg YWRhcHRlciB0byBub3QgZnVuY3Rpb24uCisJICovCisJeworCSAuY2FsbGJhY2sgPSBkbWlfZW5h YmxlX3Jldl9vdmVycmlkZSwKKwkgLmlkZW50ID0gIkRFTEwgTGF0aXR1ZGUgMzM1MCIsCisJIC5t YXRjaGVzID0geworCQkgICAgICBETUlfTUFUQ0goRE1JX1NZU19WRU5ET1IsICJEZWxsIEluYy4i KSwKKwkJICAgICAgRE1JX01BVENIKERNSV9QUk9EVUNUX05BTUUsICJMYXRpdHVkZSAzMzUwIiks CisJCX0sCisJfSwKICNlbmRpZgogCXt9CiB9OwotLSAKMi4xLjAKCgpGcm9tIDRmYTFjNjVjZjA0 MGE5MzNlZThkMmQwZDFjMGRmODMzNjFhZGQ3YWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IEdhYnJpZWwgS3Jpc21hbiBCZXJ0YXppIDxrcmlzbWFuQGxpbnV4LnZuZXQuaWJtLmNvbT4K RGF0ZTogRnJpLCAxNyBNYXIgMjAxNyAwMDo0ODozMiArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMDc5 LzExMl0gc2VyaWFsOiA4MjUwX3BjaTogRGV0YWNoIGxvdy1sZXZlbCBkcml2ZXIgZHVyaW5nIFBD SQogZXJyb3IgcmVjb3ZlcnkKClsgVXBzdHJlYW0gY29tbWl0IGYyMDlmYTAzZmM5ZDEzMWIzMTA4 YzJlNDkzNjE4MWVhYmFiODc0MTYgXQoKRHVyaW5nIGEgUENJIGVycm9yIHJlY292ZXJ5LCBsaWtl IHRoZSBvbmVzIHByb3Zva2VkIGJ5IEVFSCBpbiB0aGUgcHBjNjQKcGxhdGZvcm0sIGFsbCBJTyB0 byB0aGUgZGV2aWNlIG11c3QgYmUgYmxvY2tlZCB3aGlsZSB0aGUgcmVjb3ZlcnkgaXMKY29tcGxl dGVkLiAgQ3VycmVudCA4MjUwX3BjaSBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1c3BlbmRzIHRoZSBw b3J0Cmluc3RlYWQgb2YgZGV0YWNoaW5nIGl0LCB3aGljaCBkb2Vzbid0IHByZXZlbnQgaW5jb21p bmcgYWNjZXNzZXMgbGlrZQpUSU9DTUdFVCBhbmQgVElPQ01TRVQgY2FsbHMgZnJvbSByZWFjaGlu ZyB0aGUgZGV2aWNlLiAgVGhvc2UgZW5kIHVwCnJhY2luZyB3aXRoIHRoZSBFRUggcmVjb3Zlcnks IGNyYXNoaW5nIGl0LiAgU2ltaWxhciByYWNlcyB3ZXJlIGFsc28Kb2JzZXJ2ZWQgd2hlbiBvcGVu aW5nIHRoZSBkZXZpY2UgYW5kIHdoZW4gc2h1dHRpbmcgaXQgZG93biBkdXJpbmcKcmVjb3Zlcnku CgpUaGlzIHBhdGNoIGltcGxlbWVudHMgYSBtb3JlIHJvYnVzdCBJTyBibG9ja2FnZSBmb3IgdGhl IDgyNTBfcGNpCnJlY292ZXJ5IGJ5IHVucmVnaXN0ZXJpbmcgdGhlIHBvcnQgYXQgdGhlIGJlZ2lu bmluZyBvZiB0aGUgcHJvY2VkdXJlIGFuZApyZS1hZGRpbmcgaXQgYWZ0ZXJ3YXJkcy4gIFNpbmNl IHRoZSBwb3J0IGlzIGRldGFjaGVkIGZyb20gdGhlIHVhcnQKbGF5ZXIsIHdlIGNhbiBiZSBzdXJl IHRoYXQgbm8gcmVxdWVzdCB3aWxsIG1ha2UgdGhyb3VnaCB0byB0aGUgZGV2aWNlCmR1cmluZyBy ZWNvdmVyeS4gIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgc29sdXRpb24gdXNlZCBieSB0aGUgSlNN IHNlcmlhbApkcml2ZXIuCgpJIHRoYW5rIFBldGVyIEh1cmxleSA8cGV0ZXJAaHVybGV5c29mdHdh cmUuY29tPiBmb3IgdmFsdWFibGUgaW5wdXQgb24KdGhpcyBvbmUgb3ZlciBvbmUgeWVhciBhZ28u CgpTaWduZWQtb2ZmLWJ5OiBHYWJyaWVsIEtyaXNtYW4gQmVydGF6aSA8a3Jpc21hbkBsaW51eC52 bmV0LmlibS5jb20+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxp bnV4Zm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IFNhc2hhIExldmluIDxhbGV4YW5kZXIu bGV2aW5AdmVyaXpvbi5jb20+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3Jl Z2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogZHJpdmVycy90dHkvc2VyaWFsLzgyNTAvODI1 MF9wY2kuYyB8IDIzICsrKysrKysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTkg aW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9z ZXJpYWwvODI1MC84MjUwX3BjaS5jIGIvZHJpdmVycy90dHkvc2VyaWFsLzgyNTAvODI1MF9wY2ku YwppbmRleCA0ZDA5YmQ0Li42ZTNlNjM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwv ODI1MC84MjUwX3BjaS5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwLzgyNTBfcGNpLmMK QEAgLTUyLDYgKzUyLDcgQEAgc3RydWN0IHNlcmlhbF9wcml2YXRlIHsKIAlzdHJ1Y3QgcGNpX2Rl dgkJKmRldjsKIAl1bnNpZ25lZCBpbnQJCW5yOwogCXN0cnVjdCBwY2lfc2VyaWFsX3F1aXJrCSpx dWlyazsKKwljb25zdCBzdHJ1Y3QgcGNpc2VyaWFsX2JvYXJkICpib2FyZDsKIAlpbnQJCQlsaW5l WzBdOwogfTsKIApAQCAtMzg3MSw2ICszODcyLDcgQEAgcGNpc2VyaWFsX2luaXRfcG9ydHMoc3Ry dWN0IHBjaV9kZXYgKmRldiwgY29uc3Qgc3RydWN0IHBjaXNlcmlhbF9ib2FyZCAqYm9hcmQpCiAJ CX0KIAl9CiAJcHJpdi0+bnIgPSBpOworCXByaXYtPmJvYXJkID0gYm9hcmQ7CiAJcmV0dXJuIHBy aXY7CiAKIGVycl9kZWluaXQ6CkBAIC0zODgxLDcgKzM4ODMsNyBAQCBwY2lzZXJpYWxfaW5pdF9w b3J0cyhzdHJ1Y3QgcGNpX2RldiAqZGV2LCBjb25zdCBzdHJ1Y3QgcGNpc2VyaWFsX2JvYXJkICpi b2FyZCkKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHBjaXNlcmlhbF9pbml0X3BvcnRzKTsKIAotdm9p ZCBwY2lzZXJpYWxfcmVtb3ZlX3BvcnRzKHN0cnVjdCBzZXJpYWxfcHJpdmF0ZSAqcHJpdikKK3Zv aWQgcGNpc2VyaWFsX2RldGFjaF9wb3J0cyhzdHJ1Y3Qgc2VyaWFsX3ByaXZhdGUgKnByaXYpCiB7 CiAJc3RydWN0IHBjaV9zZXJpYWxfcXVpcmsgKnF1aXJrOwogCWludCBpOwpAQCAtMzg5NSw3ICsz ODk3LDExIEBAIHZvaWQgcGNpc2VyaWFsX3JlbW92ZV9wb3J0cyhzdHJ1Y3Qgc2VyaWFsX3ByaXZh dGUgKnByaXYpCiAJcXVpcmsgPSBmaW5kX3F1aXJrKHByaXYtPmRldik7CiAJaWYgKHF1aXJrLT5l eGl0KQogCQlxdWlyay0+ZXhpdChwcml2LT5kZXYpOworfQogCit2b2lkIHBjaXNlcmlhbF9yZW1v dmVfcG9ydHMoc3RydWN0IHNlcmlhbF9wcml2YXRlICpwcml2KQoreworCXBjaXNlcmlhbF9kZXRh Y2hfcG9ydHMocHJpdik7CiAJa2ZyZWUocHJpdik7CiB9CiBFWFBPUlRfU1lNQk9MX0dQTChwY2lz ZXJpYWxfcmVtb3ZlX3BvcnRzKTsKQEAgLTU1OTAsNyArNTU5Niw3IEBAIHN0YXRpYyBwY2lfZXJz X3Jlc3VsdF90IHNlcmlhbDgyNTBfaW9fZXJyb3JfZGV0ZWN0ZWQoc3RydWN0IHBjaV9kZXYgKmRl diwKIAkJcmV0dXJuIFBDSV9FUlNfUkVTVUxUX0RJU0NPTk5FQ1Q7CiAKIAlpZiAocHJpdikKLQkJ cGNpc2VyaWFsX3N1c3BlbmRfcG9ydHMocHJpdik7CisJCXBjaXNlcmlhbF9kZXRhY2hfcG9ydHMo cHJpdik7CiAKIAlwY2lfZGlzYWJsZV9kZXZpY2UoZGV2KTsKIApAQCAtNTYxNSw5ICs1NjIxLDE4 IEBAIHN0YXRpYyBwY2lfZXJzX3Jlc3VsdF90IHNlcmlhbDgyNTBfaW9fc2xvdF9yZXNldChzdHJ1 Y3QgcGNpX2RldiAqZGV2KQogc3RhdGljIHZvaWQgc2VyaWFsODI1MF9pb19yZXN1bWUoc3RydWN0 IHBjaV9kZXYgKmRldikKIHsKIAlzdHJ1Y3Qgc2VyaWFsX3ByaXZhdGUgKnByaXYgPSBwY2lfZ2V0 X2RydmRhdGEoZGV2KTsKKwljb25zdCBzdHJ1Y3QgcGNpc2VyaWFsX2JvYXJkICpib2FyZDsKIAot CWlmIChwcml2KQotCQlwY2lzZXJpYWxfcmVzdW1lX3BvcnRzKHByaXYpOworCWlmICghcHJpdikK KwkJcmV0dXJuOworCisJYm9hcmQgPSBwcml2LT5ib2FyZDsKKwlrZnJlZShwcml2KTsKKwlwcml2 ID0gcGNpc2VyaWFsX2luaXRfcG9ydHMoZGV2LCBib2FyZCk7CisKKwlpZiAoIUlTX0VSUihwcml2 KSkgeworCQlwY2lfc2V0X2RydmRhdGEoZGV2LCBwcml2KTsKKwl9CiB9CiAKIHN0YXRpYyBjb25z dCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIHNlcmlhbDgyNTBfZXJyX2hhbmRsZXIgPSB7Ci0t IAoyLjEuMAoKCkZyb20gY2U3YWVmZmU3NTk2MzQzZmNlNDkzMDdmMzc0NDQ0YjE5OWI5NTBhMSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQWxleGFuZHJlIEJlbGxvbmkgPGFsZXhhbmRy ZS5iZWxsb25pQGZyZWUtZWxlY3Ryb25zLmNvbT4KRGF0ZTogRnJpLCAxNyBNYXIgMjAxNyAwMDo0 ODozMyArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMDgwLzExMl0gdXNiOiBnYWRnZXQ6IHVkYzogYXRt ZWw6IHJlbW92ZSBtZW1vcnkgbGVhawoKWyBVcHN0cmVhbSBjb21taXQgMzI4NTZlZWE3YmY3NWRm Yjk5Yjk1NWFkYTZlMTQ3ZjU1M2ExMTM2NiBdCgpDb21taXQgYmJlMDk3ZjA5MmIwICgidXNiOiBn YWRnZXQ6IHVkYzogYXRtZWw6IGZpeCBlbmRwb2ludCBuYW1lIikKaW50cm9kdWNlZCBhIG1lbW9y eSBsZWFrIHdoZW4gdW5iaW5kaW5nIHRoZSBkcml2ZXIuIFRoZSBlbmRwb2ludCBuYW1lcwp3b3Vs ZCBub3QgYmUgZnJlZWQuIFNvbHZlIHRoYXQgYnkgaW5jbHVkaW5nIHRoZSBuYW1lIGFzIGEgc3Ry aW5nIGluIHN0cnVjdAp1c2JhX2VwIHNvIGl0IGlzIGZyZWVkIHdoZW4gdGhlIGVuZHBvaW50IGlz LgoKU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIEJlbGxvbmkgPGFsZXhhbmRyZS5iZWxsb25pQGZy ZWUtZWxlY3Ryb25zLmNvbT4KU2lnbmVkLW9mZi1ieTogRmVsaXBlIEJhbGJpIDxmZWxpcGUuYmFs YmlAbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8YWxleGFuZGVy LmxldmluQHZlcml6b24uY29tPgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdy ZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0KIGRyaXZlcnMvdXNiL2dhZGdldC91ZGMvYXRt ZWxfdXNiYV91ZGMuYyB8IDMgKystCiBkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2F0bWVsX3VzYmFf dWRjLmggfCAxICsKIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9hdG1lbF91c2JhX3VkYy5j IGIvZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9hdG1lbF91c2JhX3VkYy5jCmluZGV4IDQ1YmM5OTcu LmE5NWIzZTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvYXRtZWxfdXNiYV91 ZGMuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2F0bWVsX3VzYmFfdWRjLmMKQEAgLTE5 NzgsNyArMTk3OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgdXNiYV9lcCAqIGF0bWVsX3VkY19vZl9pbml0 KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiAJCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJv Zl9wcm9iZTogbmFtZSBlcnJvciglZClcbiIsIHJldCk7CiAJCQlnb3RvIGVycjsKIAkJfQotCQll cC0+ZXAubmFtZSA9IGthc3ByaW50ZihHRlBfS0VSTkVMLCAiZXAlZCIsIGVwLT5pbmRleCk7CisJ CXNwcmludGYoZXAtPm5hbWUsICJlcCVkIiwgZXAtPmluZGV4KTsKKwkJZXAtPmVwLm5hbWUgPSBl cC0+bmFtZTsKIAogCQllcC0+ZXBfcmVncyA9IHVkYy0+cmVncyArIFVTQkFfRVBUX0JBU0UoaSk7 CiAJCWVwLT5kbWFfcmVncyA9IHVkYy0+cmVncyArIFVTQkFfRE1BX0JBU0UoaSk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2F0bWVsX3VzYmFfdWRjLmggYi9kcml2ZXJzL3Vz Yi9nYWRnZXQvdWRjL2F0bWVsX3VzYmFfdWRjLmgKaW5kZXggM2UxYzlkNS4uYjAzYjJlYiAxMDA2 NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9hdG1lbF91c2JhX3VkYy5oCisrKyBiL2Ry aXZlcnMvdXNiL2dhZGdldC91ZGMvYXRtZWxfdXNiYV91ZGMuaApAQCAtMjgwLDYgKzI4MCw3IEBA IHN0cnVjdCB1c2JhX2VwIHsKIAl2b2lkIF9faW9tZW0JCQkJKmVwX3JlZ3M7CiAJdm9pZCBfX2lv bWVtCQkJCSpkbWFfcmVnczsKIAl2b2lkIF9faW9tZW0JCQkJKmZpZm87CisJY2hhcgkJCQkJbmFt ZVs4XTsKIAlzdHJ1Y3QgdXNiX2VwCQkJCWVwOwogCXN0cnVjdCB1c2JhX3VkYwkJCQkqdWRjOwog Ci0tIAoyLjEuMAoKCkZyb20gNzg4NTE5NWI5MTc3MDQyYWVhM2RhNjVjNDc4OTc5MGY4ZTc4OGFh NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTWljaGFlbCBFbGxlcm1hbiA8bXBlQGVs bGVybWFuLmlkLmF1PgpEYXRlOiBGcmksIDE3IE1hciAyMDE3IDAwOjQ4OjMzICswMDAwClN1Ympl Y3Q6IFtQQVRDSCAwODEvMTEyXSBwb3dlcnBjL21tOiBGaXggYnVpbGQgYnJlYWsgd2hlbiBDTUE9 biAmJgogU1BBUFJfVENFX0lPTU1VPXkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0 ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQK ClsgVXBzdHJlYW0gY29tbWl0IGEwNWVmMTYxY2RkMjJmYWNjZmZlMDZmMjFmYzhmMWUyNDk1NjUz ODUgXQoKQ3VycmVudGx5IHRoZSBidWlsZCBicmVha3MgaWYgQ01BPW4gYW5kIFNQQVBSX1RDRV9J T01NVT15OgoKICBhcmNoL3Bvd2VycGMvbW0vbW11X2NvbnRleHRfaW9tbXUuYzogSW4gZnVuY3Rp b24g4oCYbW1faW9tbXVfZ2V04oCZOgogIGFyY2gvcG93ZXJwYy9tbS9tbXVfY29udGV4dF9pb21t dS5jOjE5Mzo0MjogZXJyb3I6IOKAmE1JR1JBVEVfQ01B4oCZIHVuZGVjbGFyZWQgKGZpcnN0IHVz ZSBpbiB0aGlzIGZ1bmN0aW9uKQogIGlmIChnZXRfcGFnZWJsb2NrX21pZ3JhdGV0eXBlKHBhZ2Up ID09IE1JR1JBVEVfQ01BKSB7CiAgXn5+fn5+fn5+fn4KCkZpeCBpdCBieSB1c2luZyB0aGUgZXhp c3RpbmcgaXNfbWlncmF0ZV9jbWFfcGFnZSgpLCB3aGljaCBldmF1bGF0ZXMgdG8KZmFsc2Ugd2hl biBDTUE9bi4KCkZpeGVzOiAyZTViYmI1NDYxZjEgKCJLVk06IFBQQzogQm9vazNTIEhWOiBNaWdy YXRlIHBpbm5lZCBwYWdlcyBvdXQgb2YgQ01BIikKU2lnbmVkLW9mZi1ieTogTWljaGFlbCBFbGxl cm1hbiA8bXBlQGVsbGVybWFuLmlkLmF1PgpTaWduZWQtb2ZmLWJ5OiBTYXNoYSBMZXZpbiA8YWxl eGFuZGVyLmxldmluQHZlcml6b24uY29tPgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRt YW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0KIGFyY2gvcG93ZXJwYy9tbS9tbXVf Y29udGV4dF9pb21tdS5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL21tL21tdV9jb250ZXh0X2lv bW11LmMgYi9hcmNoL3Bvd2VycGMvbW0vbW11X2NvbnRleHRfaW9tbXUuYwppbmRleCAxMDRiYWQw Li43ZGU3MTI0IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvbW0vbW11X2NvbnRleHRfaW9tbXUu YworKysgYi9hcmNoL3Bvd2VycGMvbW0vbW11X2NvbnRleHRfaW9tbXUuYwpAQCAtMTg0LDcgKzE4 NCw3IEBAIGxvbmcgbW1faW9tbXVfZ2V0KHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLCB1bnNpZ25lZCBs b25nIHVhLCB1bnNpZ25lZCBsb25nIGVudHJpZXMsCiAJCSAqIG9mIHRoZSBDTUEgem9uZSBpZiBw b3NzaWJsZS4gTk9URTogZmF1bHRpbmcgaW4gKyBtaWdyYXRpb24KIAkJICogY2FuIGJlIGV4cGVu c2l2ZS4gQmF0Y2hpbmcgY2FuIGJlIGNvbnNpZGVyZWQgbGF0ZXIKIAkJICovCi0JCWlmIChnZXRf cGFnZWJsb2NrX21pZ3JhdGV0eXBlKHBhZ2UpID09IE1JR1JBVEVfQ01BKSB7CisJCWlmIChpc19t aWdyYXRlX2NtYV9wYWdlKHBhZ2UpKSB7CiAJCQlpZiAobW1faW9tbXVfbW92ZV9wYWdlX2Zyb21f Y21hKHBhZ2UpKQogCQkJCWdvdG8gcG9wdWxhdGU7CiAJCQlpZiAoMSAhPSBnZXRfdXNlcl9wYWdl c19mYXN0KHVhICsgKGkgPDwgUEFHRV9TSElGVCksCi0tIAoyLjEuMAoKCkZyb20gZjRkNDBjZmQ2 MWVhNmU5OWY5NjU1NzZkMTliNzZiNDJmZDM3MTM2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogQm9yaXMgQnJlemlsbG9uIDxib3Jpcy5icmV6aWxsb25AZnJlZS1lbGVjdHJvbnMuY29t PgpEYXRlOiBUdWUsIDIyIE5vdiAyMDE2IDEyOjQ1OjI4IC0wODAwClN1YmplY3Q6IFtQQVRDSCAw ODIvMTEyXSBjbGs6IGJjbTI4MzU6IEZpeCAtPmZpeGVkX2RpdmlkZXIgb2YgcGxsaF9hdXgKCmNv bW1pdCBmMmE0NjkyNmFiYTFmMGMzMzk0NDkwMWQyNDIwYTZhODg3NDU1ZGRjIHVwc3RyZWFtLgoK VGhlcmUgaXMgbm8gZml4ZWQgZGl2aWRlciBvbiBwbGxoX2F1eC4KClNpZ25lZC1vZmYtYnk6IEJv cmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGZyZWUtZWxlY3Ryb25zLmNvbT4KU2lnbmVk LW9mZi1ieTogRXJpYyBBbmhvbHQgPGVyaWNAYW5ob2x0Lm5ldD4KUmV2aWV3ZWQtYnk6IEVyaWMg QW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+ClNpZ25lZC1vZmYtYnk6IFN0ZXBoZW4gQm95ZCA8c2Jv eWRAY29kZWF1cm9yYS5vcmc+CkNjOiBBbWl0IFB1bmRpciA8YW1pdC5wdW5kaXJAbGluYXJvLm9y Zz4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0 aW9uLm9yZz4KLS0tCiBkcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYyB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvY2xrL2JjbS9jbGstYmNtMjgzNS5jIGIvZHJpdmVycy9jbGsvYmNtL2Nsay1iY20yODM1 LmMKaW5kZXggM2JiZDJhNS4uMmFjYWE3NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvYmNtL2Ns ay1iY20yODM1LmMKKysrIGIvZHJpdmVycy9jbGsvYmNtL2Nsay1iY20yODM1LmMKQEAgLTE1OTgs NyArMTU5OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmNtMjgzNV9jbGtfZGVzYyBjbGtfZGVz Y19hcnJheVtdID0gewogCQkuYTJ3X3JlZyA9IEEyV19QTExIX0FVWCwKIAkJLmxvYWRfbWFzayA9 IENNX1BMTEhfTE9BREFVWCwKIAkJLmhvbGRfbWFzayA9IDAsCi0JCS5maXhlZF9kaXZpZGVyID0g MTApLAorCQkuZml4ZWRfZGl2aWRlciA9IDEpLAogCVtCQ00yODM1X1BMTEhfUElYXQk9IFJFR0lT VEVSX1BMTF9ESVYoCiAJCS5uYW1lID0gInBsbGhfcGl4IiwKIAkJLnNvdXJjZV9wbGwgPSAicGxs aCIsCi0tIAoyLjEuMAoKCkZyb20gNmIzMzA2NzA2NzMzY2M5OGJmMTRlMzBmZjU0ZmE5MDg0Yjc2 Y2Q1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRGVyZWsgRm9yZW1hbiA8ZGVyZWtm QG9zZy5zYW1zdW5nLmNvbT4KRGF0ZTogVGh1LCAyNCBOb3YgMjAxNiAxMjoxMTo1NSAtMDYwMApT dWJqZWN0OiBbUEFUQ0ggMDgzLzExMl0gZHJtL3ZjNDogRml4IHJhY2UgYmV0d2VlbiBwYWdlIGZs aXAgY29tcGxldGlvbiBldmVudAogYW5kIGNsZWFuLXVwCgpjb21taXQgMjZmYzc4ZjZmZWYzOWI5 ZDdhMTVkZWY1ZTdlOTgyNmZmNjgzMDNmNCB1cHN0cmVhbS4KClRoZXJlIHdhcyBhIHNtYWxsIHdp bmRvdyB3aGVyZSBhIHVzZXJzcGFjZSBwcm9ncmFtIGNvdWxkIHN1Ym1pdAphIHBhZ2VmbGlwIGFm dGVyIHJlY2VpdmluZyBhIHBhZ2VmbGlwIGNvbXBsZXRpb24gZXZlbnQgeWV0IHN0aWxsCnJlY2Vp dmUgRUJVU1kuCgpTaWduZWQtb2ZmLWJ5OiBEZXJlayBGb3JlbWFuIDxkZXJla2ZAb3NnLnNhbXN1 bmcuY29tPgpTaWduZWQtb2ZmLWJ5OiBFcmljIEFuaG9sdCA8ZXJpY0BhbmhvbHQubmV0PgpSZXZp ZXdlZC1ieTogRXJpYyBBbmhvbHQgPGVyaWNAYW5ob2x0Lm5ldD4KUmV2aWV3ZWQtYnk6IERhbmll bCBTdG9uZSA8ZGFuaWVsc0Bjb2xsYWJvcmEuY29tPgpDYzogQW1pdCBQdW5kaXIgPGFtaXQucHVu ZGlyQGxpbmFyby5vcmc+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2to QGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfY3J0Yy5j IHwgIDggKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5oICB8ICAxICsKIGRy aXZlcnMvZ3B1L2RybS92YzQvdmM0X2ttcy5jICB8IDMzICsrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2NydGMuYyBiL2RyaXZl cnMvZ3B1L2RybS92YzQvdmM0X2NydGMuYwppbmRleCBkNTQ0ZmY5Li5hMDYyMjI4IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L3ZjNC92YzRfY3J0Yy5jCkBAIC02NjksNiArNjY5LDE0IEBAIHZvaWQgdmM0X2Rpc2FibGVfdmJs YW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBjcnRjX2lkKQogCUNSVENf V1JJVEUoUFZfSU5URU4sIDApOwogfQogCisvKiBNdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBldmVu dCBsb2NrIGhlbGQgKi8KK2Jvb2wgdmM0X2V2ZW50X3BlbmRpbmcoc3RydWN0IGRybV9jcnRjICpj cnRjKQoreworCXN0cnVjdCB2YzRfY3J0YyAqdmM0X2NydGMgPSB0b192YzRfY3J0YyhjcnRjKTsK KworCXJldHVybiAhIXZjNF9jcnRjLT5ldmVudDsKK30KKwogc3RhdGljIHZvaWQgdmM0X2NydGNf aGFuZGxlX3BhZ2VfZmxpcChzdHJ1Y3QgdmM0X2NydGMgKnZjNF9jcnRjKQogewogCXN0cnVjdCBk cm1fY3J0YyAqY3J0YyA9ICZ2YzRfY3J0Yy0+YmFzZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS92YzQvdmM0X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmgKaW5kZXgg N2MxZTRkOS4uY2M3N2I4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmgKQEAgLTQ0MCw2ICs0NDAsNyBA QCBpbnQgdmM0X2JvX3N0YXRzX2RlYnVnZnMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICphcmcp OwogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgdmM0X2NydGNfZHJpdmVyOwogaW50IHZj NF9lbmFibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBjcnRj X2lkKTsKIHZvaWQgdmM0X2Rpc2FibGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVu c2lnbmVkIGludCBjcnRjX2lkKTsKK2Jvb2wgdmM0X2V2ZW50X3BlbmRpbmcoc3RydWN0IGRybV9j cnRjICpjcnRjKTsKIGludCB2YzRfY3J0Y19kZWJ1Z2ZzX3JlZ3Moc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICphcmcpOwogaW50IHZjNF9jcnRjX2dldF9zY2Fub3V0cG9zKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHVuc2lnbmVkIGludCBjcnRjX2lkLAogCQkJICAgIHVuc2lnbmVkIGludCBmbGFn cywgaW50ICp2cG9zLCBpbnQgKmhwb3MsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0 L3ZjNF9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2ttcy5jCmluZGV4IGMxZjY1YzYu LjY3YWYyYWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2ttcy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2ttcy5jCkBAIC0xMTksMTcgKzExOSwzNCBAQCBzdGF0 aWMgaW50IHZjNF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAkvKiBN YWtlIHN1cmUgdGhhdCBhbnkgb3V0c3RhbmRpbmcgbW9kZXNldHMgaGF2ZSBmaW5pc2hlZC4gKi8K IAlpZiAobm9uYmxvY2spIHsKLQkJcmV0ID0gZG93bl90cnlsb2NrKCZ2YzQtPmFzeW5jX21vZGVz ZXQpOwotCQlpZiAocmV0KSB7CisJCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKKwkJc3RydWN0IGRy bV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOworCQl1bnNpZ25lZCBsb25nIGZsYWdzOworCQlib29s IGJ1c3kgPSBmYWxzZTsKKworCQkvKgorCQkgKiBJZiB0aGVyZSdzIGFuIHVuZGlzcGF0Y2hlZCBl dmVudCB0byBzZW5kIHRoZW4gd2UncmUKKwkJICogb2J2aW91c2x5IHN0aWxsIGJ1c3kuICBJZiB0 aGVyZSBpc24ndCwgdGhlbiB3ZSBjYW4KKwkJICogdW5jb25kaXRpb25hbGx5IHdhaXQgZm9yIHRo ZSBzZW1hcGhvcmUgYmVjYXVzZSBpdAorCQkgKiBzaG91bGRuJ3QgYmUgY29udGVuZGVkIChmb3Ig bG9uZykuCisJCSAqCisJCSAqIFRoaXMgaXMgdG8gcHJldmVudCBhIHJhY2Ugd2hlcmUgcXVldWlu ZyBhIG5ldyBmbGlwCisJCSAqIGZyb20gdXNlcnNwYWNlIGltbWVkaWF0ZWx5IG9uIHJlY2VpcHQg b2YgYW4gZXZlbnQKKwkJICogYmVhdHMgb3VyIGNsZWFuLXVwIGFuZCByZXR1cm5zIEVCVVNZLgor CQkgKi8KKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOworCQlm b3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKQorCQkJYnVz eSB8PSB2YzRfZXZlbnRfcGVuZGluZyhjcnRjKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm ZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7CisJCWlmIChidXN5KSB7CiAJCQlrZnJlZShjKTsKIAkJ CXJldHVybiAtRUJVU1k7CiAJCX0KLQl9IGVsc2UgewotCQlyZXQgPSBkb3duX2ludGVycnVwdGli bGUoJnZjNC0+YXN5bmNfbW9kZXNldCk7Ci0JCWlmIChyZXQpIHsKLQkJCWtmcmVlKGMpOwotCQkJ cmV0dXJuIHJldDsKLQkJfQorCX0KKwlyZXQgPSBkb3duX2ludGVycnVwdGlibGUoJnZjNC0+YXN5 bmNfbW9kZXNldCk7CisJaWYgKHJldCkgeworCQlrZnJlZShjKTsKKwkJcmV0dXJuIHJldDsKIAl9 CiAKIAlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9wcmVwYXJlX3BsYW5lcyhkZXYsIHN0YXRlKTsK LS0gCjIuMS4wCgoKRnJvbSA4Y2E3ZWYwZDlhZjk2NDRhNjVlM2UyMmNjYzE5MzdmMDBjYWE3Nzdi IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBCcmV6aWxsb24gPGJvcmlzLmJy ZXppbGxvbkBmcmVlLWVsZWN0cm9ucy5jb20+CkRhdGU6IEZyaSwgMiBEZWMgMjAxNiAxNDo0ODow NyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDg0LzExMl0gZHJtL3ZjNDogRml4IC0+Y2xvY2tfc2Vs ZWN0IHNldHRpbmcgZm9yIHRoZSBWRUMKIGVuY29kZXIKCmNvbW1pdCBhYjhkZjYwZTNhM2I2ODQy MGQwZDQ0NzdjNWYwN2MwMGZiZmIwNzhiIHVwc3RyZWFtLgoKUFZfQ09OVFJPTF9DTEtfU0VMRUNU X1ZFQyBpcyBhY3R1YWxseSAyIGFuZCBub3QgMC4gRml4IHRoZSBkZWZpbml0aW9uIGFuZApyZXdv cmsgdGhlIHZjNF9zZXRfY3J0Y19wb3NzaWJsZV9tYXNrcygpIHRvIGNvdmVyIHRoZSBmdWxsIHJh bmdlIG9mIHRoZQpQVl9DT05UUk9MX0NMS19TRUxFQ1QgZmllbGQuCgpTaWduZWQtb2ZmLWJ5OiBC b3JpcyBCcmV6aWxsb24gPGJvcmlzLmJyZXppbGxvbkBmcmVlLWVsZWN0cm9ucy5jb20+ClNpZ25l ZC1vZmYtYnk6IEVyaWMgQW5ob2x0IDxlcmljQGFuaG9sdC5uZXQ+CkNjOiBBbWl0IFB1bmRpciA8 YW1pdC5wdW5kaXJAbGluYXJvLm9yZz4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFu IDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vdmM0L3Zj NF9jcnRjLmMgfCAzOCArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmggIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL3ZjNC92 YzRfcmVncy5oIHwgIDMgKystCiAzIGZpbGVzIGNoYW5nZWQsIDI2IGluc2VydGlvbnMoKyksIDE2 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2NydGMu YyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2NydGMuYwppbmRleCBhMDYyMjI4Li43YWFkY2Ux IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9jcnRjLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3ZjNC92YzRfY3J0Yy5jCkBAIC04Myw4ICs4Myw3IEBAIHN0cnVjdCB2YzRfY3J0 Y19kYXRhIHsKIAkvKiBXaGljaCBjaGFubmVsIG9mIHRoZSBIVlMgdGhpcyBwaXhlbHZhbHZlIHNv dXJjZXMgZnJvbS4gKi8KIAlpbnQgaHZzX2NoYW5uZWw7CiAKLQllbnVtIHZjNF9lbmNvZGVyX3R5 cGUgZW5jb2RlcjBfdHlwZTsKLQllbnVtIHZjNF9lbmNvZGVyX3R5cGUgZW5jb2RlcjFfdHlwZTsK KwllbnVtIHZjNF9lbmNvZGVyX3R5cGUgZW5jb2Rlcl90eXBlc1s0XTsKIH07CiAKICNkZWZpbmUg Q1JUQ19XUklURShvZmZzZXQsIHZhbCkgd3JpdGVsKHZhbCwgdmM0X2NydGMtPnJlZ3MgKyAob2Zm c2V0KSkKQEAgLTg2NywyMCArODY2LDI2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNf aGVscGVyX2Z1bmNzIHZjNF9jcnRjX2hlbHBlcl9mdW5jcyA9IHsKIAogc3RhdGljIGNvbnN0IHN0 cnVjdCB2YzRfY3J0Y19kYXRhIHB2MF9kYXRhID0gewogCS5odnNfY2hhbm5lbCA9IDAsCi0JLmVu Y29kZXIwX3R5cGUgPSBWQzRfRU5DT0RFUl9UWVBFX0RTSTAsCi0JLmVuY29kZXIxX3R5cGUgPSBW QzRfRU5DT0RFUl9UWVBFX0RQSSwKKwkuZW5jb2Rlcl90eXBlcyA9IHsKKwkJW1BWX0NPTlRST0xf Q0xLX1NFTEVDVF9EU0ldID0gVkM0X0VOQ09ERVJfVFlQRV9EU0kwLAorCQlbUFZfQ09OVFJPTF9D TEtfU0VMRUNUX0RQSV9TTUlfSERNSV0gPSBWQzRfRU5DT0RFUl9UWVBFX0RQSSwKKwl9LAogfTsK IAogc3RhdGljIGNvbnN0IHN0cnVjdCB2YzRfY3J0Y19kYXRhIHB2MV9kYXRhID0gewogCS5odnNf Y2hhbm5lbCA9IDIsCi0JLmVuY29kZXIwX3R5cGUgPSBWQzRfRU5DT0RFUl9UWVBFX0RTSTEsCi0J LmVuY29kZXIxX3R5cGUgPSBWQzRfRU5DT0RFUl9UWVBFX1NNSSwKKwkuZW5jb2Rlcl90eXBlcyA9 IHsKKwkJW1BWX0NPTlRST0xfQ0xLX1NFTEVDVF9EU0ldID0gVkM0X0VOQ09ERVJfVFlQRV9EU0kx LAorCQlbUFZfQ09OVFJPTF9DTEtfU0VMRUNUX0RQSV9TTUlfSERNSV0gPSBWQzRfRU5DT0RFUl9U WVBFX1NNSSwKKwl9LAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCB2YzRfY3J0Y19kYXRhIHB2 Ml9kYXRhID0gewogCS5odnNfY2hhbm5lbCA9IDEsCi0JLmVuY29kZXIwX3R5cGUgPSBWQzRfRU5D T0RFUl9UWVBFX1ZFQywKLQkuZW5jb2RlcjFfdHlwZSA9IFZDNF9FTkNPREVSX1RZUEVfSERNSSwK KwkuZW5jb2Rlcl90eXBlcyA9IHsKKwkJW1BWX0NPTlRST0xfQ0xLX1NFTEVDVF9EUElfU01JX0hE TUldID0gVkM0X0VOQ09ERVJfVFlQRV9IRE1JLAorCQlbUFZfQ09OVFJPTF9DTEtfU0VMRUNUX1ZF Q10gPSBWQzRfRU5DT0RFUl9UWVBFX1ZFQywKKwl9LAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVj dCBvZl9kZXZpY2VfaWQgdmM0X2NydGNfZHRfbWF0Y2hbXSA9IHsKQEAgLTg5NCwxNyArODk5LDIw IEBAIHN0YXRpYyB2b2lkIHZjNF9zZXRfY3J0Y19wb3NzaWJsZV9tYXNrcyhzdHJ1Y3QgZHJtX2Rl dmljZSAqZHJtLAogCQkJCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7CiAJc3RydWN0IHZjNF9j cnRjICp2YzRfY3J0YyA9IHRvX3ZjNF9jcnRjKGNydGMpOworCWNvbnN0IHN0cnVjdCB2YzRfY3J0 Y19kYXRhICpjcnRjX2RhdGEgPSB2YzRfY3J0Yy0+ZGF0YTsKKwljb25zdCBlbnVtIHZjNF9lbmNv ZGVyX3R5cGUgKmVuY29kZXJfdHlwZXMgPSBjcnRjX2RhdGEtPmVuY29kZXJfdHlwZXM7CiAJc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwogCiAJZHJtX2Zvcl9lYWNoX2VuY29kZXIoZW5jb2Rl ciwgZHJtKSB7CiAJCXN0cnVjdCB2YzRfZW5jb2RlciAqdmM0X2VuY29kZXIgPSB0b192YzRfZW5j b2RlcihlbmNvZGVyKTsKLQotCQlpZiAodmM0X2VuY29kZXItPnR5cGUgPT0gdmM0X2NydGMtPmRh dGEtPmVuY29kZXIwX3R5cGUpIHsKLQkJCXZjNF9lbmNvZGVyLT5jbG9ja19zZWxlY3QgPSAwOwot CQkJZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgfD0gZHJtX2NydGNfbWFzayhjcnRjKTsKLQkJfSBl bHNlIGlmICh2YzRfZW5jb2Rlci0+dHlwZSA9PSB2YzRfY3J0Yy0+ZGF0YS0+ZW5jb2RlcjFfdHlw ZSkgewotCQkJdmM0X2VuY29kZXItPmNsb2NrX3NlbGVjdCA9IDE7Ci0JCQllbmNvZGVyLT5wb3Nz aWJsZV9jcnRjcyB8PSBkcm1fY3J0Y19tYXNrKGNydGMpOworCQlpbnQgaTsKKworCQlmb3IgKGkg PSAwOyBpIDwgQVJSQVlfU0laRShjcnRjX2RhdGEtPmVuY29kZXJfdHlwZXMpOyBpKyspIHsKKwkJ CWlmICh2YzRfZW5jb2Rlci0+dHlwZSA9PSBlbmNvZGVyX3R5cGVzW2ldKSB7CisJCQkJdmM0X2Vu Y29kZXItPmNsb2NrX3NlbGVjdCA9IGk7CisJCQkJZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgfD0g ZHJtX2NydGNfbWFzayhjcnRjKTsKKwkJCQlicmVhazsKKwkJCX0KIAkJfQogCX0KIH0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3Zj NC92YzRfZHJ2LmgKaW5kZXggY2M3N2I4Yi4uNTBhNTVlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL3ZjNC92YzRfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmgK QEAgLTE5NCw2ICsxOTQsNyBAQCB0b192YzRfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUp CiB9CiAKIGVudW0gdmM0X2VuY29kZXJfdHlwZSB7CisJVkM0X0VOQ09ERVJfVFlQRV9OT05FLAog CVZDNF9FTkNPREVSX1RZUEVfSERNSSwKIAlWQzRfRU5DT0RFUl9UWVBFX1ZFQywKIAlWQzRfRU5D T0RFUl9UWVBFX0RTSTAsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9yZWdz LmggYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9yZWdzLmgKaW5kZXggMWFhNDRjMi4uMzlmNjg4 NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfcmVncy5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS92YzQvdmM0X3JlZ3MuaApAQCAtMTc3LDggKzE3Nyw5IEBACiAjIGRlZmluZSBQ Vl9DT05UUk9MX1dBSVRfSFNUQVJUCQkJQklUKDEyKQogIyBkZWZpbmUgUFZfQ09OVFJPTF9QSVhF TF9SRVBfTUFTSwkJVkM0X01BU0soNSwgNCkKICMgZGVmaW5lIFBWX0NPTlRST0xfUElYRUxfUkVQ X1NISUZUCQk0Ci0jIGRlZmluZSBQVl9DT05UUk9MX0NMS19TRUxFQ1RfRFNJX1ZFQwkJMAorIyBk ZWZpbmUgUFZfQ09OVFJPTF9DTEtfU0VMRUNUX0RTSQkJMAogIyBkZWZpbmUgUFZfQ09OVFJPTF9D TEtfU0VMRUNUX0RQSV9TTUlfSERNSQkxCisjIGRlZmluZSBQVl9DT05UUk9MX0NMS19TRUxFQ1Rf VkVDCQkyCiAjIGRlZmluZSBQVl9DT05UUk9MX0NMS19TRUxFQ1RfTUFTSwkJVkM0X01BU0soMywg MikKICMgZGVmaW5lIFBWX0NPTlRST0xfQ0xLX1NFTEVDVF9TSElGVAkJMgogIyBkZWZpbmUgUFZf Q09OVFJPTF9GSUZPX0NMUgkJCUJJVCgxKQotLSAKMi4xLjAKCgpGcm9tIDYxZTc5ODYwYjRiYzYy NTlhOTY4NWExMDdhNmIzNDM1MmQ2ZGM3YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IE1hcmMgWnluZ2llciA8bWFyYy56eW5naWVyQGFybS5jb20+CkRhdGU6IEZyaSwgMTcgRmViIDIw MTcgMTQ6MzI6MTggKzAwMDAKU3ViamVjdDogW1BBVENIIDA4NS8xMTJdIGFybTY0OiBLVk06IFZI RTogQ2xlYXIgSENSX1RHRSB3aGVuIGludmFsaWRhdGluZwogZ3Vlc3QgVExCcwoKY29tbWl0IDY4 OTI1MTc2Mjk2YThiOTk1ZTUwMzM0OTIwMGUyNTY2NzRiZmU1YWMgdXBzdHJlYW0uCgpXaGVuIGlu dmFsaWRhdGluZyBndWVzdCBUTEJzLCBzcGVjaWFsIGNhcmUgbXVzdCBiZSB0YWtlbiB0bwphY3R1 YWxseSBzaG9vdCB0aGUgZ3Vlc3QgVExCcyBhbmQgbm90IHRoZSBob3N0IG9uZXMgaWYgd2UncmUK cnVubmluZyBvbiBhIFZIRSBzeXN0ZW0uICBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlIEhDUl9F TDIuVEdFCmJpdCwgd2hpY2ggd2UgZm9yZ2V0IHRvIGNsZWFyIGJlZm9yZSBpbnZhbGlkYXRpbmcg VExCcy4KCkFkZHJlc3MgdGhlIGlzc3VlIGJ5IGludHJvZHVjaW5nIHR3byB3cmFwcGVycyAoX190 bGJfc3dpdGNoX3RvX2d1ZXN0CmFuZCBfX3RsYl9zd2l0Y2hfdG9faG9zdCkgdGhhdCB0YWtlIGNh cmUgb2YgYm90aCB0aGUgVlRUQlJfRUwyCmFuZCBIQ1JfRUwyLlRHRSBzd2l0Y2hpbmcuCgpSZXBv cnRlZC1ieTogVG9tYXN6IE5vd2lja2kgPHRub3dpY2tpQGNhdml1bW5ldHdvcmtzLmNvbT4KVGVz dGVkLWJ5OiBUb21hc3ogTm93aWNraSA8dG5vd2lja2lAY2F2aXVtbmV0d29ya3MuY29tPgpSZXZp ZXdlZC1ieTogQ2hyaXN0b2ZmZXIgRGFsbCA8Y2RhbGxAbGluYXJvLm9yZz4KU2lnbmVkLW9mZi1i eTogTWFyYyBaeW5naWVyIDxtYXJjLnp5bmdpZXJAYXJtLmNvbT4KU2lnbmVkLW9mZi1ieTogR3Jl ZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBhcmNoL2Fy bTY0L2t2bS9oeXAvdGxiLmMgfCA2NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspLCA5IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2h5cC90bGIuYyBiL2FyY2gvYXJt NjQva3ZtL2h5cC90bGIuYwppbmRleCA4OGUyZjJiLi41NTg4OWQwIDEwMDY0NAotLS0gYS9hcmNo L2FybTY0L2t2bS9oeXAvdGxiLmMKKysrIGIvYXJjaC9hcm02NC9rdm0vaHlwL3RsYi5jCkBAIC0x NywxNCArMTcsNjIgQEAKIAogI2luY2x1ZGUgPGFzbS9rdm1faHlwLmg+CiAKK3N0YXRpYyB2b2lk IF9faHlwX3RleHQgX190bGJfc3dpdGNoX3RvX2d1ZXN0X3ZoZShzdHJ1Y3Qga3ZtICprdm0pCit7 CisJdTY0IHZhbDsKKworCS8qCisJICogV2l0aCBWSEUgZW5hYmxlZCwgd2UgaGF2ZSBIQ1JfRUwy LntFMkgsVEdFfSA9IHsxLDF9LCBhbmQKKwkgKiBtb3N0IFRMQiBvcGVyYXRpb25zIHRhcmdldCBF TDIvRUwwLiBJbiBvcmRlciB0byBhZmZlY3QgdGhlCisJICogZ3Vlc3QgVExCcyAoRUwxL0VMMCks IHdlIG5lZWQgdG8gY2hhbmdlIG9uZSBvZiB0aGVzZSB0d28KKwkgKiBiaXRzLiBDaGFuZ2luZyBF MkggaXMgaW1wb3NzaWJsZSAoZ29vZGJ5ZSBUVEJSMV9FTDIpLCBzbworCSAqIGxldCdzIGZsaXAg VEdFIGJlZm9yZSBleGVjdXRpbmcgdGhlIFRMQiBvcGVyYXRpb24uCisJICovCisJd3JpdGVfc3lz cmVnKGt2bS0+YXJjaC52dHRiciwgdnR0YnJfZWwyKTsKKwl2YWwgPSByZWFkX3N5c3JlZyhoY3Jf ZWwyKTsKKwl2YWwgJj0gfkhDUl9UR0U7CisJd3JpdGVfc3lzcmVnKHZhbCwgaGNyX2VsMik7CisJ aXNiKCk7Cit9CisKK3N0YXRpYyB2b2lkIF9faHlwX3RleHQgX190bGJfc3dpdGNoX3RvX2d1ZXN0 X252aGUoc3RydWN0IGt2bSAqa3ZtKQoreworCXdyaXRlX3N5c3JlZyhrdm0tPmFyY2gudnR0YnIs IHZ0dGJyX2VsMik7CisJaXNiKCk7Cit9CisKK3N0YXRpYyBoeXBfYWx0ZXJuYXRlX3NlbGVjdChf X3RsYl9zd2l0Y2hfdG9fZ3Vlc3QsCisJCQkgICAgX190bGJfc3dpdGNoX3RvX2d1ZXN0X252aGUs CisJCQkgICAgX190bGJfc3dpdGNoX3RvX2d1ZXN0X3ZoZSwKKwkJCSAgICBBUk02NF9IQVNfVklS VF9IT1NUX0VYVE4pOworCitzdGF0aWMgdm9pZCBfX2h5cF90ZXh0IF9fdGxiX3N3aXRjaF90b19o b3N0X3ZoZShzdHJ1Y3Qga3ZtICprdm0pCit7CisJLyoKKwkgKiBXZSdyZSBkb25lIHdpdGggdGhl IFRMQiBvcGVyYXRpb24sIGxldCdzIHJlc3RvcmUgdGhlIGhvc3QncworCSAqIHZpZXcgb2YgSENS X0VMMi4KKwkgKi8KKwl3cml0ZV9zeXNyZWcoMCwgdnR0YnJfZWwyKTsKKwl3cml0ZV9zeXNyZWco SENSX0hPU1RfVkhFX0ZMQUdTLCBoY3JfZWwyKTsKK30KKworc3RhdGljIHZvaWQgX19oeXBfdGV4 dCBfX3RsYl9zd2l0Y2hfdG9faG9zdF9udmhlKHN0cnVjdCBrdm0gKmt2bSkKK3sKKwl3cml0ZV9z eXNyZWcoMCwgdnR0YnJfZWwyKTsKK30KKworc3RhdGljIGh5cF9hbHRlcm5hdGVfc2VsZWN0KF9f dGxiX3N3aXRjaF90b19ob3N0LAorCQkJICAgIF9fdGxiX3N3aXRjaF90b19ob3N0X252aGUsCisJ CQkgICAgX190bGJfc3dpdGNoX3RvX2hvc3RfdmhlLAorCQkJICAgIEFSTTY0X0hBU19WSVJUX0hP U1RfRVhUTik7CisKIHZvaWQgX19oeXBfdGV4dCBfX2t2bV90bGJfZmx1c2hfdm1pZF9pcGEoc3Ry dWN0IGt2bSAqa3ZtLCBwaHlzX2FkZHJfdCBpcGEpCiB7CiAJZHNiKGlzaHN0KTsKIAogCS8qIFN3 aXRjaCB0byByZXF1ZXN0ZWQgVk1JRCAqLwogCWt2bSA9IGtlcm5faHlwX3ZhKGt2bSk7Ci0Jd3Jp dGVfc3lzcmVnKGt2bS0+YXJjaC52dHRiciwgdnR0YnJfZWwyKTsKLQlpc2IoKTsKKwlfX3RsYl9z d2l0Y2hfdG9fZ3Vlc3QoKShrdm0pOwogCiAJLyoKIAkgKiBXZSBjb3VsZCBkbyBzbyBtdWNoIGJl dHRlciBpZiB3ZSBoYWQgdGhlIFZBIGFzIHdlbGwuCkBAIC00NSw3ICs5Myw3IEBAIHZvaWQgX19o eXBfdGV4dCBfX2t2bV90bGJfZmx1c2hfdm1pZF9pcGEoc3RydWN0IGt2bSAqa3ZtLCBwaHlzX2Fk ZHJfdCBpcGEpCiAJZHNiKGlzaCk7CiAJaXNiKCk7CiAKLQl3cml0ZV9zeXNyZWcoMCwgdnR0YnJf ZWwyKTsKKwlfX3RsYl9zd2l0Y2hfdG9faG9zdCgpKGt2bSk7CiB9CiAKIHZvaWQgX19oeXBfdGV4 dCBfX2t2bV90bGJfZmx1c2hfdm1pZChzdHJ1Y3Qga3ZtICprdm0pCkBAIC01NCwxNCArMTAyLDEz IEBAIHZvaWQgX19oeXBfdGV4dCBfX2t2bV90bGJfZmx1c2hfdm1pZChzdHJ1Y3Qga3ZtICprdm0p CiAKIAkvKiBTd2l0Y2ggdG8gcmVxdWVzdGVkIFZNSUQgKi8KIAlrdm0gPSBrZXJuX2h5cF92YShr dm0pOwotCXdyaXRlX3N5c3JlZyhrdm0tPmFyY2gudnR0YnIsIHZ0dGJyX2VsMik7Ci0JaXNiKCk7 CisJX190bGJfc3dpdGNoX3RvX2d1ZXN0KCkoa3ZtKTsKIAogCWFzbSB2b2xhdGlsZSgidGxiaSB2 bWFsbHMxMmUxaXMiIDogOiApOwogCWRzYihpc2gpOwogCWlzYigpOwogCi0Jd3JpdGVfc3lzcmVn KDAsIHZ0dGJyX2VsMik7CisJX190bGJfc3dpdGNoX3RvX2hvc3QoKShrdm0pOwogfQogCiB2b2lk IF9faHlwX3RleHQgX19rdm1fdGxiX2ZsdXNoX2xvY2FsX3ZtaWQoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1KQpAQCAtNjksMTQgKzExNiwxMyBAQCB2b2lkIF9faHlwX3RleHQgX19rdm1fdGxiX2ZsdXNo X2xvY2FsX3ZtaWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXN0cnVjdCBrdm0gKmt2bSA9IGtl cm5faHlwX3ZhKGtlcm5faHlwX3ZhKHZjcHUpLT5rdm0pOwogCiAJLyogU3dpdGNoIHRvIHJlcXVl c3RlZCBWTUlEICovCi0Jd3JpdGVfc3lzcmVnKGt2bS0+YXJjaC52dHRiciwgdnR0YnJfZWwyKTsK LQlpc2IoKTsKKwlfX3RsYl9zd2l0Y2hfdG9fZ3Vlc3QoKShrdm0pOwogCiAJYXNtIHZvbGF0aWxl KCJ0bGJpIHZtYWxsZTEiIDogOiApOwogCWRzYihuc2gpOwogCWlzYigpOwogCi0Jd3JpdGVfc3lz cmVnKDAsIHZ0dGJyX2VsMik7CisJX190bGJfc3dpdGNoX3RvX2hvc3QoKShrdm0pOwogfQogCiB2 b2lkIF9faHlwX3RleHQgX19rdm1fZmx1c2hfdm1fY29udGV4dCh2b2lkKQotLSAKMi4xLjAKCgpG cm9tIDA5NTYzNWJlODA5YWRlMjQyOWM4NDRkMDllODM5MTMzMGZhOWJjYTQgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IFNoYW5rZXIgRG9udGhpbmVuaSA8c2hhbmtlcmRAY29kZWF1cm9y YS5vcmc+CkRhdGU6IFR1ZSwgNyBNYXIgMjAxNyAwODoyMDozOCAtMDYwMApTdWJqZWN0OiBbUEFU Q0ggMDg2LzExMl0gaXJxY2hpcC9naWN2My1pdHM6IEFkZCB3b3JrYXJvdW5kIGZvciBRREYyNDAw IElUUwogZXJyYXR1bSAwMDY1Cgpjb21taXQgOTA5MjJhMmQwM2Q4NGRlMzZiZjhhOTk3OWQ2MjU4 MDEwMmYzMWE5MiB1cHN0cmVhbS4KCk9uIFF1YWxjb21tIERhdGFjZW50ZXIgVGVjaG5vbG9naWVz IFFERjI0MDAgU29DcywgdGhlIElUUyBoYXJkd2FyZQppbXBsZW1lbnRhdGlvbiB1c2VzIDE2Qnl0 ZXMgZm9yIEludGVycnVwdCBUcmFuc2xhdGlvbiBFbnRyeSAoSVRFKSwKYnV0IHJlcG9ydHMgYW4g aW5jb3JyZWN0IHZhbHVlIG9mIDhCeXRlcyBpbiBHSVRTX1RZUEVSLklUVEVfc2l6ZS4KCkl0IG1p Z2h0IGNhdXNlIGtlcm5lbCBtZW1vcnkgY29ycnVwdGlvbiBkZXBlbmRpbmcgb24gdGhlIG51bWJl cgpvZiBNU0koeCkgdGhhdCBhcmUgY29uZmlndXJlZCBhbmQgdGhlIGFtb3VudCBvZiBtZW1vcnkg dGhhdCBoYXMKYmVlbiBhbGxvY2F0ZWQgZm9yIElURXMgaW4gaXRzX2NyZWF0ZV9kZXZpY2UoKS4K ClRoaXMgcGF0Y2ggZml4ZXMgdGhlIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBieSBzZXR0 aW5nIHRoZQpjb3JyZWN0IElURSBzaXplIHRvIDE2Qnl0ZXMuCgpDYzogc3RhYmxlQHZnZXIua2Vy bmVsLm9yZwpTaWduZWQtb2ZmLWJ5OiBTaGFua2VyIERvbnRoaW5lbmkgPHNoYW5rZXJkQGNvZGVh dXJvcmEub3JnPgpTaWduZWQtb2ZmLWJ5OiBNYXJjIFp5bmdpZXIgPG1hcmMuenluZ2llckBhcm0u Y29tPgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5k YXRpb24ub3JnPgotLS0KIERvY3VtZW50YXRpb24vYXJtNjQvc2lsaWNvbi1lcnJhdGEudHh0IHwg NDQgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogYXJjaC9hcm02NC9LY29uZmln ICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysrKwogZHJpdmVycy9pcnFjaGlwL2lycS1n aWMtdjMtaXRzLmMgICAgICAgfCAxNiArKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDQ5 IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRp b24vYXJtNjQvc2lsaWNvbi1lcnJhdGEudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm02NC9zaWxpY29u LWVycmF0YS50eHQKaW5kZXggNDA1ZGExMS4uZDExYWY1MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRh dGlvbi9hcm02NC9zaWxpY29uLWVycmF0YS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm02NC9z aWxpY29uLWVycmF0YS50eHQKQEAgLTQyLDI0ICs0MiwyNiBAQCBmaWxlIGFjdHMgYXMgYSByZWdp c3RyeSBvZiBzb2Z0d2FyZSB3b3JrYXJvdW5kcyBpbiB0aGUgTGludXggS2VybmVsIGFuZAogd2ls bCBiZSB1cGRhdGVkIHdoZW4gbmV3IHdvcmthcm91bmRzIGFyZSBjb21taXR0ZWQgYW5kIGJhY2tw b3J0ZWQgdG8KIHN0YWJsZSBrZXJuZWxzLgogCi18IEltcGxlbWVudG9yICAgIHwgQ29tcG9uZW50 ICAgICAgIHwgRXJyYXR1bSBJRCAgICAgIHwgS2NvbmZpZyAgICAgICAgICAgICAgICAgfAotKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgQVJNICAgICAgICAgICAgfCBDb3J0ZXgtQTUzICAgICAg fCAjODI2MzE5ICAgICAgICAgfCBBUk02NF9FUlJBVFVNXzgyNjMxOSAgICB8Ci18IEFSTSAgICAg ICAgICAgIHwgQ29ydGV4LUE1MyAgICAgIHwgIzgyNzMxOSAgICAgICAgIHwgQVJNNjRfRVJSQVRV TV84MjczMTkgICAgfAotfCBBUk0gICAgICAgICAgICB8IENvcnRleC1BNTMgICAgICB8ICM4MjQw NjkgICAgICAgICB8IEFSTTY0X0VSUkFUVU1fODI0MDY5ICAgIHwKLXwgQVJNICAgICAgICAgICAg fCBDb3J0ZXgtQTUzICAgICAgfCAjODE5NDcyICAgICAgICAgfCBBUk02NF9FUlJBVFVNXzgxOTQ3 MiAgICB8Ci18IEFSTSAgICAgICAgICAgIHwgQ29ydGV4LUE1MyAgICAgIHwgIzg0NTcxOSAgICAg ICAgIHwgQVJNNjRfRVJSQVRVTV84NDU3MTkgICAgfAotfCBBUk0gICAgICAgICAgICB8IENvcnRl eC1BNTMgICAgICB8ICM4NDM0MTkgICAgICAgICB8IEFSTTY0X0VSUkFUVU1fODQzNDE5ICAgIHwK LXwgQVJNICAgICAgICAgICAgfCBDb3J0ZXgtQTU3ICAgICAgfCAjODMyMDc1ICAgICAgICAgfCBB Uk02NF9FUlJBVFVNXzgzMjA3NSAgICB8Ci18IEFSTSAgICAgICAgICAgIHwgQ29ydGV4LUE1NyAg ICAgIHwgIzg1MjUyMyAgICAgICAgIHwgTi9BICAgICAgICAgICAgICAgICAgICAgfAotfCBBUk0g ICAgICAgICAgICB8IENvcnRleC1BNTcgICAgICB8ICM4MzQyMjAgICAgICAgICB8IEFSTTY0X0VS UkFUVU1fODM0MjIwICAgIHwKLXwgQVJNICAgICAgICAgICAgfCBDb3J0ZXgtQTcyICAgICAgfCAj ODUzNzA5ICAgICAgICAgfCBOL0EgICAgICAgICAgICAgICAgICAgICB8Ci18IEFSTSAgICAgICAg ICAgIHwgTU1VLTUwMCAgICAgICAgIHwgIzg0MTExOSwjODI2NDE5IHwgTi9BICAgICAgICAgICAg ICAgICAgICAgfAotfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAg ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwKLXwgQ2F2aXVtICAgICAgICAgfCBU aHVuZGVyWCBJVFMgICAgfCAjMjIzNzUsICMyNDMxMyAgfCBDQVZJVU1fRVJSQVRVTV8yMjM3NSAg ICB8Ci18IENhdml1bSAgICAgICAgIHwgVGh1bmRlclggSVRTICAgIHwgIzIzMTQ0ICAgICAgICAg IHwgQ0FWSVVNX0VSUkFUVU1fMjMxNDQgICAgfAotfCBDYXZpdW0gICAgICAgICB8IFRodW5kZXJY IEdJQ3YzICB8ICMyMzE1NCAgICAgICAgICB8IENBVklVTV9FUlJBVFVNXzIzMTU0ICAgIHwKLXwg Q2F2aXVtICAgICAgICAgfCBUaHVuZGVyWCBDb3JlICAgfCAjMjc0NTYgICAgICAgICAgfCBDQVZJ VU1fRVJSQVRVTV8yNzQ1NiAgICB8Ci18IENhdml1bSAgICAgICAgIHwgVGh1bmRlclggU01NVXYy IHwgIzI3NzA0ICAgICAgICAgIHwgTi9BCQkgICAgICAgfAotfCAgICAgICAgICAgICAgICB8ICAg ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAg IHwKLXwgRnJlZXNjYWxlL05YUCAgfCBMUzIwODBBL0xTMTA0M0EgfCBBLTAwODU4NSAgICAgICAg fCBGU0xfRVJSQVRVTV9BMDA4NTg1ICAgICB8Cit8IEltcGxlbWVudG9yICAgIHwgQ29tcG9uZW50 ICAgICAgIHwgRXJyYXR1bSBJRCAgICAgIHwgS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgIHwK KystLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBBUk0gICAgICAgICAgICB8IENvcnRleC1B NTMgICAgICB8ICM4MjYzMTkgICAgICAgICB8IEFSTTY0X0VSUkFUVU1fODI2MzE5ICAgICAgICB8 Cit8IEFSTSAgICAgICAgICAgIHwgQ29ydGV4LUE1MyAgICAgIHwgIzgyNzMxOSAgICAgICAgIHwg QVJNNjRfRVJSQVRVTV84MjczMTkgICAgICAgIHwKK3wgQVJNICAgICAgICAgICAgfCBDb3J0ZXgt QTUzICAgICAgfCAjODI0MDY5ICAgICAgICAgfCBBUk02NF9FUlJBVFVNXzgyNDA2OSAgICAgICAg fAorfCBBUk0gICAgICAgICAgICB8IENvcnRleC1BNTMgICAgICB8ICM4MTk0NzIgICAgICAgICB8 IEFSTTY0X0VSUkFUVU1fODE5NDcyICAgICAgICB8Cit8IEFSTSAgICAgICAgICAgIHwgQ29ydGV4 LUE1MyAgICAgIHwgIzg0NTcxOSAgICAgICAgIHwgQVJNNjRfRVJSQVRVTV84NDU3MTkgICAgICAg IHwKK3wgQVJNICAgICAgICAgICAgfCBDb3J0ZXgtQTUzICAgICAgfCAjODQzNDE5ICAgICAgICAg fCBBUk02NF9FUlJBVFVNXzg0MzQxOSAgICAgICAgfAorfCBBUk0gICAgICAgICAgICB8IENvcnRl eC1BNTcgICAgICB8ICM4MzIwNzUgICAgICAgICB8IEFSTTY0X0VSUkFUVU1fODMyMDc1ICAgICAg ICB8Cit8IEFSTSAgICAgICAgICAgIHwgQ29ydGV4LUE1NyAgICAgIHwgIzg1MjUyMyAgICAgICAg IHwgTi9BICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgQVJNICAgICAgICAgICAgfCBDb3J0 ZXgtQTU3ICAgICAgfCAjODM0MjIwICAgICAgICAgfCBBUk02NF9FUlJBVFVNXzgzNDIyMCAgICAg ICAgfAorfCBBUk0gICAgICAgICAgICB8IENvcnRleC1BNzIgICAgICB8ICM4NTM3MDkgICAgICAg ICB8IE4vQSAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8IEFSTSAgICAgICAgICAgIHwgTU1V LTUwMCAgICAgICAgIHwgIzg0MTExOSwjODI2NDE5IHwgTi9BICAgICAgICAgICAgICAgICAgICAg ICAgIHwKK3wgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBDYXZpdW0gICAgICAgICB8IFRo dW5kZXJYIElUUyAgICB8ICMyMjM3NSwgIzI0MzEzICB8IENBVklVTV9FUlJBVFVNXzIyMzc1ICAg ICAgICB8Cit8IENhdml1bSAgICAgICAgIHwgVGh1bmRlclggSVRTICAgIHwgIzIzMTQ0ICAgICAg ICAgIHwgQ0FWSVVNX0VSUkFUVU1fMjMxNDQgICAgICAgIHwKK3wgQ2F2aXVtICAgICAgICAgfCBU aHVuZGVyWCBHSUN2MyAgfCAjMjMxNTQgICAgICAgICAgfCBDQVZJVU1fRVJSQVRVTV8yMzE1NCAg ICAgICAgfAorfCBDYXZpdW0gICAgICAgICB8IFRodW5kZXJYIENvcmUgICB8ICMyNzQ1NiAgICAg ICAgICB8IENBVklVTV9FUlJBVFVNXzI3NDU2ICAgICAgICB8Cit8IENhdml1bSAgICAgICAgIHwg VGh1bmRlclggU01NVXYyIHwgIzI3NzA0ICAgICAgICAgIHwgTi9BICAgICAgICAgICAgICAgICAg ICAgICAgIHwKK3wgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCBGcmVlc2NhbGUvTlhQICB8 IExTMjA4MEEvTFMxMDQzQSB8IEEtMDA4NTg1ICAgICAgICB8IEZTTF9FUlJBVFVNX0EwMDg1ODUg ICAgICAgICB8Cit8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgUXVhbGNvbW0gVGVjaC4g fCBRREYyNDAwIElUUyAgICAgfCBFMDA2NSAgICAgICAgICAgfCBRQ09NX1FERjI0MDBfRVJSQVRV TV8wMDY1ICAgfApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9LY29uZmlnIGIvYXJjaC9hcm02NC9L Y29uZmlnCmluZGV4IDk2OWVmODguLmNmNTdhNzcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvS2Nv bmZpZworKysgYi9hcmNoL2FybTY0L0tjb25maWcKQEAgLTQ3NCw2ICs0NzQsMTYgQEAgY29uZmln IENBVklVTV9FUlJBVFVNXzI3NDU2CiAKIAkgIElmIHVuc3VyZSwgc2F5IFkuCiAKK2NvbmZpZyBR Q09NX1FERjI0MDBfRVJSQVRVTV8wMDY1CisJYm9vbCAiUURGMjQwMCBFMDA2NTogSW5jb3JyZWN0 IEdJVFNfVFlQRVIuSVRUX0VudHJ5X3NpemUiCisJZGVmYXVsdCB5CisJaGVscAorCSAgT24gUXVh bGNvbW0gRGF0YWNlbnRlciBUZWNobm9sb2dpZXMgUURGMjQwMCBTb0MsIElUUyBoYXJkd2FyZSBy ZXBvcnRzCisJICBJVEUgc2l6ZSBpbmNvcnJlY3RseS4gVGhlIEdJVFNfVFlQRVIuSVRUX0VudHJ5 X3NpemUgZmllbGQgc2hvdWxkIGhhdmUKKwkgIGJlZW4gaW5kaWNhdGVkIGFzIDE2Qnl0ZXMgKDB4 ZiksIG5vdCA4Qnl0ZXMgKDB4NykuCisKKwkgIElmIHVuc3VyZSwgc2F5IFkuCisKIGVuZG1lbnUK IAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lycWNoaXAvaXJxLWdpYy12My1pdHMuYyBiL2RyaXZl cnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jCmluZGV4IGM1ZGVlMzAuLmFjYjlkMjUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvaXJxY2hpcC9pcnEtZ2ljLXYzLWl0cy5jCisrKyBiL2RyaXZlcnMvaXJx Y2hpcC9pcnEtZ2ljLXYzLWl0cy5jCkBAIC0xNTk4LDYgKzE1OTgsMTQgQEAgc3RhdGljIHZvaWQg X19tYXliZV91bnVzZWQgaXRzX2VuYWJsZV9xdWlya19jYXZpdW1fMjMxNDQodm9pZCAqZGF0YSkK IAlpdHMtPmZsYWdzIHw9IElUU19GTEFHU19XT1JLQVJPVU5EX0NBVklVTV8yMzE0NDsKIH0KIAor c3RhdGljIHZvaWQgX19tYXliZV91bnVzZWQgaXRzX2VuYWJsZV9xdWlya19xZGYyNDAwX2UwMDY1 KHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGl0c19ub2RlICppdHMgPSBkYXRhOworCisJLyogT24g UURGMjQwMCwgdGhlIHNpemUgb2YgdGhlIElURSBpcyAxNkJ5dGVzICovCisJaXRzLT5pdGVfc2l6 ZSA9IDE2OworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IGdpY19xdWlyayBpdHNfcXVpcmtzW10g PSB7CiAjaWZkZWYgQ09ORklHX0NBVklVTV9FUlJBVFVNXzIyMzc1CiAJewpAQCAtMTYxNSw2ICsx NjIzLDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2ljX3F1aXJrIGl0c19xdWlya3NbXSA9IHsK IAkJLmluaXQJPSBpdHNfZW5hYmxlX3F1aXJrX2Nhdml1bV8yMzE0NCwKIAl9LAogI2VuZGlmCisj aWZkZWYgQ09ORklHX1FDT01fUURGMjQwMF9FUlJBVFVNXzAwNjUKKwl7CisJCS5kZXNjCT0gIklU UzogUURGMjQwMCBlcnJhdHVtIDAwNjUiLAorCQkuaWlkcgk9IDB4MDAwMDEwNzAsIC8qIFFERjI0 MDAgSVRTIHJldiAxLnggKi8KKwkJLm1hc2sJPSAweGZmZmZmZmZmLAorCQkuaW5pdAk9IGl0c19l bmFibGVfcXVpcmtfcWRmMjQwMF9lMDA2NSwKKwl9LAorI2VuZGlmCiAJewogCX0KIH07Ci0tIAoy LjEuMAoKCkZyb20gNWVjOThlNmZmZGNlNWViNWRiZTM1OTNkZjJhYTgyNGQwNGQ3MDg0MiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogUGV0ZXIgWmlqbHN0cmEgPHBldGVyekBpbmZyYWRl YWQub3JnPgpEYXRlOiBNb24sIDEzIE1hciAyMDE3IDE1OjU3OjEyICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwODcvMTEyXSB4ODYvdHNjOiBGaXggQVJUIGZvciBUU0NfS05PV05fRlJFUQoKY29tbWl0 IDQ0ZmVlODhjZWE0M2QzYzJjYWM5NjJlMDQzOWNiMTBhM2NhYmZmNmQgdXBzdHJlYW0uCgpTdWJo cmFuc3UgcmVwb3J0ZWQgdGhhdCBjb252ZXJ0X2FydF90b190c2MoKSBpc24ndCB3b3JraW5nIGZv ciBoaW0uCgpUaGUgQVJUIHRvIFRTQyByZWxhdGlvbiBpcyBvbmx5IHNldCB1cCBmb3Igc3lzdGVt cyB3aGljaCB1c2UgdGhlIHJlZmluZWQKVFNDIGNhbGlicmF0aW9uLiBTeXN0ZW1zIHdpdGgga25v d24gVFNDIGZyZXF1ZW5jeSAoYXZhaWxhYmxlIHZpYSBDUFVJRCAxNSkKYXJlIG5vdCB1c2luZyB0 aGUgcmVmaW5lZCBjYWxpYnJhdGlvbiBhbmQgdGhlcmVmb3IgdGhlIEFSVCB0byBUU0MgcmVsYXRp b24KaXMgbmV2ZXIgZXN0YWJsaXNoZWQuCgpBZGQgdGhlIHNldHVwIHRvIHRoZSBrbm93biBmcmVx dWVuY3kgaW5pdCBwYXRoIHdoaWNoIHNraXBzIEFSVApjYWxpYnJhdGlvbi4gVGhlIGluaXQgY29k ZSBuZWVkcyB0byBiZSBkdXBsaWNhdGVkIGFzIGZvciBzeXN0ZW1zIHdoaWNoIHVzZQpyZWZpbmVk IGNhbGlicmF0aW9uIHRoZSBBUlQgc2V0dXAgbXVzdCBiZSBkZWxheWVkIHVudGlsIGNhbGlicmF0 aW9uIGhhcwpiZWVuIGRvbmUuCgpUaGUgcHJvYmxlbSBoYXMgYmVlbiB0aGVyZSBzaW5jZSB0aGUg QVJUIHN1cHBvcnQgd2FzIGludHJvZGR1Y2VkLCBidXQgb25seQpkZXRlY3RlZCBub3cgYmVjYXVz ZSBTdWJocmFuc3UgdGVzdGVkIHRoZSBmaXJzdCB0aW1lIG9uIGhhcmR3YXJlIHdoaWNoIGhhcwpU U0MgZnJlcXVlbmN5IGVudW1lcmF0ZWQgdmlhIENQVUlEIDE1LgoKTm90ZSBmb3Igc3RhYmxlOiBU aGUgY29uZGl0aW9uYWwgaGFzIGNoYW5nZWQgZnJvbSBUU0NfUkVMSUFCTEUgdG8KICAgICAJIAkg VFNDX0tOT1dOX0ZSRVFVRU5DWS4KClsgdGdseDogUmV3cm90ZSBjaGFuZ2Vsb2cgYW5kIGlkZW50 aWZpZWQgdGhlIHByb3BlciAnRml4ZXMnIGNvbW1pdCBdCgpGaXhlczogZjk2NzdlMGY4MzA4ICgi eDg2L3RzYzogQWx3YXlzIFJ1bm5pbmcgVGltZXIgKEFSVCkgY29ycmVsYXRlZCBjbG9ja3NvdXJj ZSIpClJlcG9ydGVkLWJ5OiAiUHJ1c3R5LCBTdWJocmFuc3UgUyIgPHN1YmhyYW5zdS5zLnBydXN0 eUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFBldGVyIFppamxzdHJhIChJbnRlbCkgPHBldGVy ekBpbmZyYWRlYWQub3JnPgpDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwpDYzogY2hyaXN0b3Bo ZXIucy5oYWxsQGludGVsLmNvbQpDYzoga2V2aW4uYi5zdGFudG9uQGludGVsLmNvbQpDYzogam9o bi5zdHVsdHpAbGluYXJvLm9yZwpDYzogYWthdGFyaWFAdm13YXJlLmNvbQpMaW5rOiBodHRwOi8v bGttbC5rZXJuZWwub3JnL3IvMjAxNzAzMTMxNDU3MTIuR0kzMzEyQHR3aW5zLnByb2dyYW1taW5n LmtpY2tzLWFzcy5uZXQKU2lnbmVkLW9mZi1ieTogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0 cm9uaXguZGU+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4 Zm91bmRhdGlvbi5vcmc+Ci0tLQogYXJjaC94ODYva2VybmVsL3RzYy5jIHwgMiArKwogMSBmaWxl IGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC90 c2MuYyBiL2FyY2gveDg2L2tlcm5lbC90c2MuYwppbmRleCA0NmIyZjQxLi5lZWE4OGZlIDEwMDY0 NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvdHNjLmMKKysrIGIvYXJjaC94ODYva2VybmVsL3RzYy5j CkBAIC0xMjg3LDYgKzEyODcsOCBAQCBzdGF0aWMgaW50IF9faW5pdCBpbml0X3RzY19jbG9ja3Nv dXJjZSh2b2lkKQogCSAqIGV4cG9ydGluZyBhIHJlbGlhYmxlIFRTQy4KIAkgKi8KIAlpZiAoYm9v dF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1RTQ19SRUxJQUJMRSkpIHsKKwkJaWYgKGJvb3RfY3B1X2hh cyhYODZfRkVBVFVSRV9BUlQpKQorCQkJYXJ0X3JlbGF0ZWRfY2xvY2tzb3VyY2UgPSAmY2xvY2tz b3VyY2VfdHNjOwogCQljbG9ja3NvdXJjZV9yZWdpc3Rlcl9raHooJmNsb2Nrc291cmNlX3RzYywg dHNjX2toeik7CiAJCXJldHVybiAwOwogCX0KLS0gCjIuMS4wCgoKRnJvbSAyNGJhMjg0MmE0OWRh MzMzODU4MWI0MmE1NjE4MDg4ZDJhMGIwNzMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBBbmRyZXkgUnlhYmluaW4gPGFyeWFiaW5pbkB2aXJ0dW96em8uY29tPgpEYXRlOiBNb24sIDEz IE1hciAyMDE3IDE5OjMzOjM3ICswMzAwClN1YmplY3Q6IFtQQVRDSCAwODgvMTEyXSB4ODYva2Fz YW46IEZpeCBib290IHdpdGggS0FTQU49eSBhbmQKIFBST0ZJTEVfQU5OT1RBVEVEX0JSQU5DSEVT PXkKCmNvbW1pdCBiZTM2MDZmZjczOWQxYzFiZTM2Mzg5Zjg3MzdjNTc3YWQ4N2UxZjU3IHVwc3Ry ZWFtLgoKVGhlIGtlcm5lbCBkb2Vzbid0IGJvb3Qgd2l0aCBib3RoIFBST0ZJTEVfQU5OT1RBVEVE X0JSQU5DSEVTPXkgYW5kIEtBU0FOPXkKb3B0aW9ucyBzZWxlY3RlZC4gV2l0aCBicmFuY2ggcHJv ZmlsaW5nIGVuYWJsZWQgd2UgZW5kIHVwIGNhbGxpbmcKZnRyYWNlX2xpa2VseV91cGRhdGUoKSBi ZWZvcmUga2FzYW5fZWFybHlfaW5pdCgpLiBmdHJhY2VfbGlrZWx5X3VwZGF0ZSgpIGlzCmJ1aWx0 IHdpdGggS0FTQU4gaW5zdHJ1bWVudGF0aW9uLCBzbyBjYWxsaW5nIGl0IGJlZm9yZSBrYXNhbiBo YXMgYmVlbgppbml0aWFsaXplZCBsZWFkcyB0byBjcmFzaC4KClVzZSBESVNBQkxFX0JSQU5DSF9Q Uk9GSUxJTkcgZGVmaW5lIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IGNhbGwKZnRyYWNlX2xp a2VseV91cGRhdGUoKSBmcm9tIGVhcmx5IGNvZGUgYmVmb3JlIGthc2FuX2Vhcmx5X2luaXQoKS4K CkZpeGVzOiBlZjdmMGQ2YTZjYTggKCJ4ODZfNjQ6IGFkZCBLQVNhbiBzdXBwb3J0IikKUmVwb3J0 ZWQtYnk6IEZlbmdndWFuZyBXdSA8ZmVuZ2d1YW5nLnd1QGludGVsLmNvbT4KU2lnbmVkLW9mZi1i eTogQW5kcmV5IFJ5YWJpbmluIDxhcnlhYmluaW5AdmlydHVvenpvLmNvbT4KQ2M6IGthc2FuLWRl dkBnb29nbGVncm91cHMuY29tCkNjOiBBbGV4YW5kZXIgUG90YXBlbmtvIDxnbGlkZXJAZ29vZ2xl LmNvbT4KQ2M6IEFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+CkNjOiBs a3BAMDEub3JnCkNjOiBEbWl0cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+Ckxpbms6IGh0 dHA6Ly9sa21sLmtlcm5lbC5vcmcvci8yMDE3MDMxMzE2MzMzNy4xNzA0LTEtYXJ5YWJpbmluQHZp cnR1b3p6by5jb20KU2lnbmVkLW9mZi1ieTogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9u aXguZGU+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91 bmRhdGlvbi5vcmc+Ci0tLQogYXJjaC94ODYva2VybmVsL2hlYWQ2NC5jICAgIHwgMSArCiBhcmNo L3g4Ni9tbS9rYXNhbl9pbml0XzY0LmMgfCAxICsKIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRp b25zKCspCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2hlYWQ2NC5jIGIvYXJjaC94ODYv a2VybmVsL2hlYWQ2NC5jCmluZGV4IDU0YTIzNzIuLmI1Nzg1YzEgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2tlcm5lbC9oZWFkNjQuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvaGVhZDY0LmMKQEAgLTQs NiArNCw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDAwIEFuZHJlYSBBcmNhbmdlbGkgPGFuZHJl YUBzdXNlLmRlPiBTdVNFCiAgKi8KIAorI2RlZmluZSBESVNBQkxFX0JSQU5DSF9QUk9GSUxJTkcK ICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CiAjaW5jbHVkZSA8bGludXgvbGlua2FnZS5oPgogI2lu Y2x1ZGUgPGxpbnV4L3R5cGVzLmg+CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9rYXNhbl9pbml0 XzY0LmMgYi9hcmNoL3g4Ni9tbS9rYXNhbl9pbml0XzY0LmMKaW5kZXggMDQ5M2MxNy4uMzMzMzYy ZiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbW0va2FzYW5faW5pdF82NC5jCisrKyBiL2FyY2gveDg2 L21tL2thc2FuX2luaXRfNjQuYwpAQCAtMSwzICsxLDQgQEAKKyNkZWZpbmUgRElTQUJMRV9CUkFO Q0hfUFJPRklMSU5HCiAjZGVmaW5lIHByX2ZtdChmbXQpICJrYXNhbjogIiBmbXQKICNpbmNsdWRl IDxsaW51eC9ib290bWVtLmg+CiAjaW5jbHVkZSA8bGludXgva2FzYW4uaD4KLS0gCjIuMS4wCgoK RnJvbSA5ZjkxMTViNjdhYTU4MjFlMWQ1NDkwZDk0YzFhZDg3ZDAzOTZmN2I2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmR5IEx1dG9taXJza2kgPGx1dG9Aa2VybmVsLm9yZz4KRGF0 ZTogVGh1LCAxNiBNYXIgMjAxNyAxMjo1OTozOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMDg5LzEx Ml0geDg2L3BlcmY6IEZpeCBDUjQuUENFIHByb3BhZ2F0aW9uIHRvIHVzZSBhY3RpdmVfbW0KIGlu c3RlYWQgb2YgbW0KCmNvbW1pdCA1ZGM4NTVkNDRjMmFkOTYwYTg2ZjU5M2M2MDQ2MWYxYWUxNTY2 YjZkIHVwc3RyZWFtLgoKSWYgb25lIHRocmVhZCBtbWFwcyBhIHBlcmYgZXZlbnQgd2hpbGUgYW5v dGhlciB0aHJlYWQgaW4gdGhlIHNhbWUgbW0KaXMgaW4gc29tZSBjb250ZXh0IHdoZXJlIGFjdGl2 ZV9tbSAhPSBtbSAod2hpY2ggY2FuIGhhcHBlbiBpbiB0aGUKc2NoZWR1bGVyLCBmb3IgZXhhbXBs ZSksIHJlZnJlc2hfcGNlKCkgd291bGQgd3JpdGUgdGhlIHdyb25nIHZhbHVlCnRvIENSNC5QQ0Uu ICBUaGlzIGJyb2tlIHNvbWUgUEFQSSB0ZXN0cy4KClJlcG9ydGVkLWFuZC10ZXN0ZWQtYnk6IFZp bmNlIFdlYXZlciA8dmluY2VudC53ZWF2ZXJAbWFpbmUuZWR1PgpTaWduZWQtb2ZmLWJ5OiBBbmR5 IEx1dG9taXJza2kgPGx1dG9Aa2VybmVsLm9yZz4KQ2M6IEFsZXhhbmRlciBTaGlzaGtpbiA8YWxl eGFuZGVyLnNoaXNoa2luQGxpbnV4LmludGVsLmNvbT4KQ2M6IEFybmFsZG8gQ2FydmFsaG8gZGUg TWVsbyA8YWNtZUByZWRoYXQuY29tPgpDYzogQm9yaXNsYXYgUGV0a292IDxicGV0a292QHN1c2Uu ZGU+CkNjOiBILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4KQ2M6IEppcmkgT2xzYSA8am9s c2FAcmVkaGF0LmNvbT4KQ2M6IExpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0 aW9uLm9yZz4KQ2M6IFBldGVyIFppamxzdHJhIDxwZXRlcnpAaW5mcmFkZWFkLm9yZz4KQ2M6IFN0 ZXBoYW5lIEVyYW5pYW4gPGVyYW5pYW5AZ29vZ2xlLmNvbT4KQ2M6IFRob21hcyBHbGVpeG5lciA8 dGdseEBsaW51dHJvbml4LmRlPgpGaXhlczogNzkxMWQzZjdhZjE0ICgicGVyZi94ODY6IE9ubHkg YWxsb3cgcmRwbWMgaWYgYSBwZXJmX2V2ZW50IGlzIG1hcHBlZCIpCkxpbms6IGh0dHA6Ly9sa21s Lmtlcm5lbC5vcmcvci8wYzViMzhhNzZlYTUwZTQwNWY5YWJlMDdhMTNkZmFlZjg3YzE3M2ExLjE0 ODk2OTQyNzAuZ2l0Lmx1dG9Aa2VybmVsLm9yZwpTaWduZWQtb2ZmLWJ5OiBJbmdvIE1vbG5hciA8 bWluZ29Aa2VybmVsLm9yZz4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVn a2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBhcmNoL3g4Ni9ldmVudHMvY29yZS5jIHwgNCAr Ky0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2FyY2gveDg2L2V2ZW50cy9jb3JlLmMgYi9hcmNoL3g4Ni9ldmVudHMvY29yZS5j CmluZGV4IDdmZTg4YmIuLjM4NjIzZTIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2V2ZW50cy9jb3Jl LmMKKysrIGIvYXJjaC94ODYvZXZlbnRzL2NvcmUuYwpAQCAtMjA5Niw4ICsyMDk2LDggQEAgc3Rh dGljIGludCB4ODZfcG11X2V2ZW50X2luaXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQogCiBz dGF0aWMgdm9pZCByZWZyZXNoX3BjZSh2b2lkICppZ25vcmVkKQogewotCWlmIChjdXJyZW50LT5t bSkKLQkJbG9hZF9tbV9jcjQoY3VycmVudC0+bW0pOworCWlmIChjdXJyZW50LT5hY3RpdmVfbW0p CisJCWxvYWRfbW1fY3I0KGN1cnJlbnQtPmFjdGl2ZV9tbSk7CiB9CiAKIHN0YXRpYyB2b2lkIHg4 Nl9wbXVfZXZlbnRfbWFwcGVkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKLS0gCjIuMS4wCgoK RnJvbSA2MjQ0ZmZjNWExMjIxZTU5M2E5MzdjN2FkM2MwM2E5Y2U2OTFhOGRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBaaWpsc3RyYSA8cGV0ZXJ6QGluZnJhZGVhZC5vcmc+ CkRhdGU6IFNhdCwgNCBNYXIgMjAxNyAxMDoyNzoxOCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDkw LzExMl0gZnV0ZXg6IEZpeCBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4KIEZVVEVYX1JFUVVF VUVfUEkKCmNvbW1pdCBjMjM2YzhlOTVhM2QzOTViMDQ5NGU3MTA4ZjBkNDFjZjM2ZWMxMDdjIHVw c3RyZWFtLgoKV2hpbGUgd29ya2luZyBvbiB0aGUgZnV0ZXggY29kZSwgSSBzdHVtYmxlZCBvdmVy IHRoaXMgcG90ZW50aWFsCnVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLiBEbWl0cnkgdHJpZ2dlcmVk IGl0IGxhdGVyIHdpdGggc3l6a2FsbGVyLgoKcGlfbXV0ZXggaXMgYSBwb2ludGVyIGludG8gcGlf c3RhdGUsIHdoaWNoIHdlIGRyb3AgdGhlIHJlZmVyZW5jZSBvbiBpbgp1bnF1ZXVlX21lX3BpKCku IFNvIGFueSBhY2Nlc3MgdG8gdGhhdCBwb2ludGVyIGFmdGVyIHRoYXQgaXMgYmFkLgoKU2luY2Ug b3RoZXIgc2l0ZXMgYWxyZWFkeSBkbyBydF9tdXRleF91bmxvY2soKSB3aXRoIGhiLT5sb2NrIGhl bGQsIHNlZQpmb3IgZXhhbXBsZSBmdXRleF9sb2NrX3BpKCksIHNpbXBseSBtb3ZlIHRoZSB1bmxv Y2sgYmVmb3JlCnVucXVldWVfbWVfcGkoKS4KClJlcG9ydGVkLWJ5OiBEbWl0cnkgVnl1a292IDxk dnl1a292QGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IFBldGVyIFppamxzdHJhIChJbnRlbCkg PHBldGVyekBpbmZyYWRlYWQub3JnPgpSZXZpZXdlZC1ieTogRGFycmVuIEhhcnQgPGR2aGFydEBs aW51eC5pbnRlbC5jb20+CkNjOiBqdXJpLmxlbGxpQGFybS5jb20KQ2M6IGJpZ2Vhc3lAbGludXRy b25peC5kZQpDYzogeGxwYW5nQHJlZGhhdC5jb20KQ2M6IHJvc3RlZHRAZ29vZG1pcy5vcmcKQ2M6 IG1hdGhpZXUuZGVzbm95ZXJzQGVmZmljaW9zLmNvbQpDYzogamRlc2Zvc3NlekBlZmZpY2lvcy5j b20KQ2M6IGR2aGFydEBpbmZyYWRlYWQub3JnCkNjOiBicmlzdG90QHJlZGhhdC5jb20KTGluazog aHR0cDovL2xrbWwua2VybmVsLm9yZy9yLzIwMTcwMzA0MDkzNTU4LjgwMTc0NDI0NkBpbmZyYWRl YWQub3JnClNpZ25lZC1vZmYtYnk6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRl PgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRp b24ub3JnPgotLS0KIGtlcm5lbC9mdXRleC5jIHwgMjAgKysrKysrKysrKystLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2tlcm5lbC9mdXRleC5jIGIva2VybmVsL2Z1dGV4LmMKaW5kZXggMzhiNjhjMi4uYWE0NWM0 ZSAxMDA2NDQKLS0tIGEva2VybmVsL2Z1dGV4LmMKKysrIGIva2VybmVsL2Z1dGV4LmMKQEAgLTI4 MTMsNyArMjgxMyw2IEBAIHN0YXRpYyBpbnQgZnV0ZXhfd2FpdF9yZXF1ZXVlX3BpKHUzMiBfX3Vz ZXIgKnVhZGRyLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCiB7CiAJc3RydWN0IGhydGltZXJfc2xlZXBl ciB0aW1lb3V0LCAqdG8gPSBOVUxMOwogCXN0cnVjdCBydF9tdXRleF93YWl0ZXIgcnRfd2FpdGVy OwotCXN0cnVjdCBydF9tdXRleCAqcGlfbXV0ZXggPSBOVUxMOwogCXN0cnVjdCBmdXRleF9oYXNo X2J1Y2tldCAqaGI7CiAJdW5pb24gZnV0ZXhfa2V5IGtleTIgPSBGVVRFWF9LRVlfSU5JVDsKIAlz dHJ1Y3QgZnV0ZXhfcSBxID0gZnV0ZXhfcV9pbml0OwpAQCAtMjkwNSw2ICsyOTA0LDggQEAgc3Rh dGljIGludCBmdXRleF93YWl0X3JlcXVldWVfcGkodTMyIF9fdXNlciAqdWFkZHIsIHVuc2lnbmVk IGludCBmbGFncywKIAkJCXNwaW5fdW5sb2NrKHEubG9ja19wdHIpOwogCQl9CiAJfSBlbHNlIHsK KwkJc3RydWN0IHJ0X211dGV4ICpwaV9tdXRleDsKKwogCQkvKgogCQkgKiBXZSBoYXZlIGJlZW4g d29rZW4gdXAgYnkgZnV0ZXhfdW5sb2NrX3BpKCksIGEgdGltZW91dCwgb3IgYQogCQkgKiBzaWdu YWwuICBmdXRleF91bmxvY2tfcGkoKSB3aWxsIG5vdCBkZXN0cm95IHRoZSBsb2NrX3B0ciBub3IK QEAgLTI5MjgsMTggKzI5MjksMTkgQEAgc3RhdGljIGludCBmdXRleF93YWl0X3JlcXVldWVfcGko dTMyIF9fdXNlciAqdWFkZHIsIHVuc2lnbmVkIGludCBmbGFncywKIAkJaWYgKHJlcykKIAkJCXJl dCA9IChyZXMgPCAwKSA/IHJlcyA6IDA7CiAKKwkJLyoKKwkJICogSWYgZml4dXBfcGlfc3RhdGVf b3duZXIoKSBmYXVsdGVkIGFuZCB3YXMgdW5hYmxlIHRvIGhhbmRsZQorCQkgKiB0aGUgZmF1bHQs IHVubG9jayB0aGUgcnRfbXV0ZXggYW5kIHJldHVybiB0aGUgZmF1bHQgdG8KKwkJICogdXNlcnNw YWNlLgorCQkgKi8KKwkJaWYgKHJldCAmJiBydF9tdXRleF9vd25lcihwaV9tdXRleCkgPT0gY3Vy cmVudCkKKwkJCXJ0X211dGV4X3VubG9jayhwaV9tdXRleCk7CisKIAkJLyogVW5xdWV1ZSBhbmQg ZHJvcCB0aGUgbG9jay4gKi8KIAkJdW5xdWV1ZV9tZV9waSgmcSk7CiAJfQogCi0JLyoKLQkgKiBJ ZiBmaXh1cF9waV9zdGF0ZV9vd25lcigpIGZhdWx0ZWQgYW5kIHdhcyB1bmFibGUgdG8gaGFuZGxl IHRoZQotCSAqIGZhdWx0LCB1bmxvY2sgdGhlIHJ0X211dGV4IGFuZCByZXR1cm4gdGhlIGZhdWx0 IHRvIHVzZXJzcGFjZS4KLQkgKi8KLQlpZiAocmV0ID09IC1FRkFVTFQpIHsKLQkJaWYgKHBpX211 dGV4ICYmIHJ0X211dGV4X293bmVyKHBpX211dGV4KSA9PSBjdXJyZW50KQotCQkJcnRfbXV0ZXhf dW5sb2NrKHBpX211dGV4KTsKLQl9IGVsc2UgaWYgKHJldCA9PSAtRUlOVFIpIHsKKwlpZiAocmV0 ID09IC1FSU5UUikgewogCQkvKgogCQkgKiBXZSd2ZSBhbHJlYWR5IGJlZW4gcmVxdWV1ZWQsIGJ1 dCBjYW5ub3QgcmVzdGFydCBieSBjYWxsaW5nCiAJCSAqIGZ1dGV4X2xvY2tfcGkoKSBkaXJlY3Rs eS4gV2UgY291bGQgcmVzdGFydCB0aGlzIHN5c2NhbGwsIGJ1dAotLSAKMi4xLjAKCgpGcm9tIDE1 MjIxODFmNGJjMTRhNjFjNzI5ODE0MzlmY2JlOWE4NzQ5NmYzY2YgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IFBldGVyIFppamxzdHJhIDxwZXRlcnpAaW5mcmFkZWFkLm9yZz4KRGF0ZTog U2F0LCA0IE1hciAyMDE3IDEwOjI3OjE5ICswMTAwClN1YmplY3Q6IFtQQVRDSCAwOTEvMTEyXSBm dXRleDogQWRkIG1pc3NpbmcgZXJyb3IgaGFuZGxpbmcgdG8gRlVURVhfUkVRVUVVRV9QSQoKY29t bWl0IDliYmIyNWFmZWIxODI1MDJjYTRmMmM0ZjNmODhhZjA2ODFiMzRjYWUgdXBzdHJlYW0uCgpU aG9tYXMgc3BvdHRlZCB0aGF0IGZpeHVwX3BpX3N0YXRlX293bmVyKCkgY2FuIHJldHVybiBlcnJv cnMgYW5kIHdlCmZhaWwgdG8gdW5sb2NrIHRoZSBydF9tdXRleCBpbiB0aGF0IGNhc2UuCgpSZXBv cnRlZC1ieTogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+ClNpZ25lZC1vZmYt Ynk6IFBldGVyIFppamxzdHJhIChJbnRlbCkgPHBldGVyekBpbmZyYWRlYWQub3JnPgpSZXZpZXdl ZC1ieTogRGFycmVuIEhhcnQgPGR2aGFydEBsaW51eC5pbnRlbC5jb20+CkNjOiBqdXJpLmxlbGxp QGFybS5jb20KQ2M6IGJpZ2Vhc3lAbGludXRyb25peC5kZQpDYzogeGxwYW5nQHJlZGhhdC5jb20K Q2M6IHJvc3RlZHRAZ29vZG1pcy5vcmcKQ2M6IG1hdGhpZXUuZGVzbm95ZXJzQGVmZmljaW9zLmNv bQpDYzogamRlc2Zvc3NlekBlZmZpY2lvcy5jb20KQ2M6IGR2aGFydEBpbmZyYWRlYWQub3JnCkNj OiBicmlzdG90QHJlZGhhdC5jb20KTGluazogaHR0cDovL2xrbWwua2VybmVsLm9yZy9yLzIwMTcw MzA0MDkzNTU4Ljg2NzQwMTc2MEBpbmZyYWRlYWQub3JnClNpZ25lZC1vZmYtYnk6IFRob21hcyBH bGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhh cnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgotLS0KIGtlcm5lbC9mdXRleC5jIHwg MiArKwogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2tlcm5l bC9mdXRleC5jIGIva2VybmVsL2Z1dGV4LmMKaW5kZXggYWE0NWM0ZS4uNGM2YjZlNiAxMDA2NDQK LS0tIGEva2VybmVsL2Z1dGV4LmMKKysrIGIva2VybmVsL2Z1dGV4LmMKQEAgLTI4OTYsNiArMjg5 Niw4IEBAIHN0YXRpYyBpbnQgZnV0ZXhfd2FpdF9yZXF1ZXVlX3BpKHUzMiBfX3VzZXIgKnVhZGRy LCB1bnNpZ25lZCBpbnQgZmxhZ3MsCiAJCWlmIChxLnBpX3N0YXRlICYmIChxLnBpX3N0YXRlLT5v d25lciAhPSBjdXJyZW50KSkgewogCQkJc3Bpbl9sb2NrKHEubG9ja19wdHIpOwogCQkJcmV0ID0g Zml4dXBfcGlfc3RhdGVfb3duZXIodWFkZHIyLCAmcSwgY3VycmVudCk7CisJCQlpZiAocmV0ICYm IHJ0X211dGV4X293bmVyKCZxLnBpX3N0YXRlLT5waV9tdXRleCkgPT0gY3VycmVudCkKKwkJCQly dF9tdXRleF91bmxvY2soJnEucGlfc3RhdGUtPnBpX211dGV4KTsKIAkJCS8qCiAJCQkgKiBEcm9w IHRoZSByZWZlcmVuY2UgdG8gdGhlIHBpIHN0YXRlIHdoaWNoCiAJCQkgKiB0aGUgcmVxdWV1ZV9w aSgpIGNvZGUgYWNxdWlyZWQgZm9yIHVzLgotLSAKMi4xLjAKCgpGcm9tIGM0MDYwOTY1MjI2NzQ0 MGFlNmY4MDAzMDNlYTFmM2JlMTdkMzU3ZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IE5pa2xhcyBDYXNzZWwgPG5pa2xhcy5jYXNzZWxAYXhpcy5jb20+CkRhdGU6IFNhdCwgMjUgRmVi IDIwMTcgMDE6MTc6NTMgKzAxMDAKU3ViamVjdDogW1BBVENIIDA5Mi8xMTJdIGxvY2tpbmcvcndz ZW06IEZpeCBkb3duX3dyaXRlX2tpbGxhYmxlKCkgZm9yCiBDT05GSUdfUldTRU1fR0VORVJJQ19T UElOTE9DSz15Cgpjb21taXQgMTdmY2JkNTkwZDBjM2UzNWJkOTY0NmUyMjE1Zjg2NTg2Mzc4YmM0 MiB1cHN0cmVhbS4KCldlIGhhbmcgaWYgU0lHS0lMTCBoYXMgYmVlbiBzZW50LCBidXQgdGhlIHRh c2sgaXMgc3R1Y2sgaW4gZG93bl9yZWFkKCkKKGFmdGVyIGRvX2V4aXQoKSksIGV2ZW4gdGhvdWdo IG5vIHRhc2sgaXMgZG9pbmcgZG93bl93cml0ZSgpIG9uIHRoZQpyd3NlbSBpbiBxdWVzdGlvbjoK CiAgSU5GTzogdGFzayBsaWJ1cG5wOjIxODY4IGJsb2NrZWQgZm9yIG1vcmUgdGhhbiAxMjAgc2Vj b25kcy4KICBsaWJ1cG5wICAgICAgICAgRCAgICAwIDIxODY4ICAgICAgMSAweDA4MTAwMDA4CiAg Li4uCiAgQ2FsbCBUcmFjZToKICBfX3NjaGVkdWxlKCkKICBzY2hlZHVsZSgpCiAgX19kb3duX3Jl YWQoKQogIGRvX2V4aXQoKQogIGRvX2dyb3VwX2V4aXQoKQogIF9fd2FrZV91cF9wYXJlbnQoKQoK VGhpcyBidWcgaGFzIGFscmVhZHkgYmVlbiBmaXhlZCBmb3IgQ09ORklHX1JXU0VNX1hDSEdBRERf QUxHT1JJVEhNPXkgaW4KdGhlIGZvbGxvd2luZyBjb21taXQ6CgogMDRjYWZlZDdmYzE5ICgibG9j a2luZy9yd3NlbTogRml4IGRvd25fd3JpdGVfa2lsbGFibGUoKSIpCgouLi4gaG93ZXZlciwgdGhp cyBidWcgYWxzbyBleGlzdHMgZm9yIENPTkZJR19SV1NFTV9HRU5FUklDX1NQSU5MT0NLPXkuCgpT aWduZWQtb2ZmLWJ5OiBOaWtsYXMgQ2Fzc2VsIDxuaWtsYXMuY2Fzc2VsQGF4aXMuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBQZXRlciBaaWpsc3RyYSAoSW50ZWwpIDxwZXRlcnpAaW5mcmFkZWFkLm9yZz4K Q2M6IDxtaG9ja29Ac3VzZS5jb20+CkNjOiBBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZvdW5k YXRpb24ub3JnPgpDYzogTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24u b3JnPgpDYzogTmlrbGFzIENhc3NlbCA8bmlrbGFzc0BheGlzLmNvbT4KQ2M6IFBhdWwgRS4gTWNL ZW5uZXkgPHBhdWxtY2tAbGludXgudm5ldC5pYm0uY29tPgpDYzogUGV0ZXIgWmlqbHN0cmEgPHBl dGVyekBpbmZyYWRlYWQub3JnPgpDYzogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXgu ZGU+CkZpeGVzOiBkNDc5OTYwODJmNTIgKCJsb2NraW5nL3J3c2VtOiBJbnRyb2R1Y2UgYmFzaXMg Zm9yIGRvd25fd3JpdGVfa2lsbGFibGUoKSIpCkxpbms6IGh0dHA6Ly9sa21sLmtlcm5lbC5vcmcv ci8xNDg3OTgxODczLTEyNjQ5LTEtZ2l0LXNlbmQtZW1haWwtbmlrbGFzc0BheGlzLmNvbQpTaWdu ZWQtb2ZmLWJ5OiBJbmdvIE1vbG5hciA8bWluZ29Aa2VybmVsLm9yZz4KU2lnbmVkLW9mZi1ieTog R3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KLS0tCiBrZXJu ZWwvbG9ja2luZy9yd3NlbS1zcGlubG9jay5jIHwgMTUgKysrKysrKysrKy0tLS0tCiAxIGZpbGUg Y2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9r ZXJuZWwvbG9ja2luZy9yd3NlbS1zcGlubG9jay5jIGIva2VybmVsL2xvY2tpbmcvcndzZW0tc3Bp bmxvY2suYwppbmRleCAxNTkxZjZiLi4yYmVmNGFiIDEwMDY0NAotLS0gYS9rZXJuZWwvbG9ja2lu Zy9yd3NlbS1zcGlubG9jay5jCisrKyBiL2tlcm5lbC9sb2NraW5nL3J3c2VtLXNwaW5sb2NrLmMK QEAgLTIxNiwxMCArMjE2LDggQEAgaW50IF9fc2NoZWQgX19kb3duX3dyaXRlX2NvbW1vbihzdHJ1 Y3Qgcndfc2VtYXBob3JlICpzZW0sIGludCBzdGF0ZSkKIAkJICovCiAJCWlmIChzZW0tPmNvdW50 ID09IDApCiAJCQlicmVhazsKLQkJaWYgKHNpZ25hbF9wZW5kaW5nX3N0YXRlKHN0YXRlLCBjdXJy ZW50KSkgewotCQkJcmV0ID0gLUVJTlRSOwotCQkJZ290byBvdXQ7Ci0JCX0KKwkJaWYgKHNpZ25h bF9wZW5kaW5nX3N0YXRlKHN0YXRlLCBjdXJyZW50KSkKKwkJCWdvdG8gb3V0X25vbG9jazsKIAkJ c2V0X3Rhc2tfc3RhdGUodHNrLCBzdGF0ZSk7CiAJCXJhd19zcGluX3VubG9ja19pcnFyZXN0b3Jl KCZzZW0tPndhaXRfbG9jaywgZmxhZ3MpOwogCQlzY2hlZHVsZSgpOwpAQCAtMjI3LDEyICsyMjUs MTkgQEAgaW50IF9fc2NoZWQgX19kb3duX3dyaXRlX2NvbW1vbihzdHJ1Y3Qgcndfc2VtYXBob3Jl ICpzZW0sIGludCBzdGF0ZSkKIAl9CiAJLyogZ290IHRoZSBsb2NrICovCiAJc2VtLT5jb3VudCA9 IC0xOwotb3V0OgogCWxpc3RfZGVsKCZ3YWl0ZXIubGlzdCk7CiAKIAlyYXdfc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmc2VtLT53YWl0X2xvY2ssIGZsYWdzKTsKIAogCXJldHVybiByZXQ7CisKK291 dF9ub2xvY2s6CisJbGlzdF9kZWwoJndhaXRlci5saXN0KTsKKwlpZiAoIWxpc3RfZW1wdHkoJnNl bS0+d2FpdF9saXN0KSkKKwkJX19yd3NlbV9kb193YWtlKHNlbSwgMSk7CisJcmF3X3NwaW5fdW5s b2NrX2lycXJlc3RvcmUoJnNlbS0+d2FpdF9sb2NrLCBmbGFncyk7CisKKwlyZXR1cm4gLUVJTlRS OwogfQogCiB2b2lkIF9fc2NoZWQgX19kb3duX3dyaXRlKHN0cnVjdCByd19zZW1hcGhvcmUgKnNl bSkKLS0gCjIuMS4wCgoKRnJvbSBlY2RjNWIxMmQ3YTAxNzA3YjViM2YzMzRjZGY0N2YwMWU1MGQy Y2UzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5pZWwgQXh0ZW5zIDxkamFAYXh0 ZW5zLm5ldD4KRGF0ZTogRnJpLCAzIE1hciAyMDE3IDE3OjU2OjU1ICsxMTAwClN1YmplY3Q6IFtQ QVRDSCAwOTMvMTEyXSBjcnlwdG86IHBvd2VycGMgLSBGaXggaW5pdGlhbGlzYXRpb24gb2YgY3Jj MzJjCiBjb250ZXh0Cgpjb21taXQgYWEyYmU5YjNkNmQyZDY5OWU5Y2E3Y2JmYzAwODY3YzgwZTVk YTIxMyB1cHN0cmVhbS4KClR1cm5pbmcgb24gY3J5cHRvIHNlbGYtdGVzdHMgb24gYSBQT1dFUjgg c2hvd3M6CgogICAgYWxnOiBoYXNoOiBUZXN0IDEgZmFpbGVkIGZvciBjcmMzMmMtdnBtc3VtCiAg ICAwMDAwMDAwMDogZmYgZmYgZmYgZmYKCkNvbXBhcmluZyB0aGUgY29kZSB3aXRoIHRoZSBJbnRl bCBDUkMzMmMgaW1wbGVtZW50YXRpb24gb24gd2hpY2gKb3VycyBpcyBiYXNlZCBzaG93cyB0aGF0 IHdlIGFyZSBkb2luZyBhbiBpbml0IHdpdGggMCwgbm90IH4wCmFzIENSQzMyYyByZXF1aXJlcy4K ClRoaXMgcHJvYmFibHkgd2Fzbid0IGNhdWdodCBiZWNhdXNlIGJ0cmZzIGRvZXMgaXRzIG93biB3 ZWlyZApvcGVuLWNvZGVkIGluaXRpYWxpc2F0aW9uLgoKSW5pdGlhbGlzZSBvdXIgaW50ZXJuYWwg Y29udGV4dCB0byB+MCBvbiBpbml0LgoKVGhpcyBtYWtlcyB0aGUgc2VsZi10ZXN0cyBwYXNzLCBh bmQgYnRyZnMgY29udGludWVzIHRvIHdvcmsuCgpGaXhlczogNmRkN2E4MmNjNTRlICgiY3J5cHRv OiBwb3dlcnBjIC0gQWRkIFBPV0VSOCBvcHRpbWlzZWQgY3JjMzJjIikKQ2M6IEFudG9uIEJsYW5j aGFyZCA8YW50b25Ac2FtYmEub3JnPgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgQXh0ZW5zIDxkamFA YXh0ZW5zLm5ldD4KQWNrZWQtYnk6IEFudG9uIEJsYW5jaGFyZCA8YW50b25Ac2FtYmEub3JnPgpT aWduZWQtb2ZmLWJ5OiBIZXJiZXJ0IFh1IDxoZXJiZXJ0QGdvbmRvci5hcGFuYS5vcmcuYXU+ClNp Z25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5v cmc+Ci0tLQogYXJjaC9wb3dlcnBjL2NyeXB0by9jcmMzMmMtdnBtc3VtX2dsdWUuYyB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL2FyY2gvcG93ZXJwYy9jcnlwdG8vY3JjMzJjLXZwbXN1bV9nbHVlLmMgYi9hcmNoL3Bvd2Vy cGMvY3J5cHRvL2NyYzMyYy12cG1zdW1fZ2x1ZS5jCmluZGV4IDlmYTA0NmQuLjQxMTk5NDUgMTAw NjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcnlwdG8vY3JjMzJjLXZwbXN1bV9nbHVlLmMKKysrIGIv YXJjaC9wb3dlcnBjL2NyeXB0by9jcmMzMmMtdnBtc3VtX2dsdWUuYwpAQCAtNTIsNyArNTIsNyBA QCBzdGF0aWMgaW50IGNyYzMyY192cG1zdW1fY3JhX2luaXQoc3RydWN0IGNyeXB0b190Zm0gKnRm bSkKIHsKIAl1MzIgKmtleSA9IGNyeXB0b190Zm1fY3R4KHRmbSk7CiAKLQkqa2V5ID0gMDsKKwkq a2V5ID0gfjA7CiAKIAlyZXR1cm4gMDsKIH0KLS0gCjIuMS4wCgoKRnJvbSBjMzgyNWRhMTQzZmM0 MTllMjYzOWU2MDJmNjJkNzkzZWQwZGU0NjU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDE3IDEyOjQ0OjA3ICswMTAwClN1YmplY3Q6IFtQQVRDSCAwOTQvMTEyXSBM aW51eCA0LjkuMTcKCi0tLQogTWFrZWZpbGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxl CmluZGV4IDRlMGY5NjIuLjAwNGY5MGEgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2Vm aWxlCkBAIC0xLDYgKzEsNiBAQAogVkVSU0lPTiA9IDQKIFBBVENITEVWRUwgPSA5Ci1TVUJMRVZF TCA9IDE2CitTVUJMRVZFTCA9IDE3CiBFWFRSQVZFUlNJT04gPQogTkFNRSA9IFJvYXJpbmcgTGlv bnVzCiAKLS0gCjIuMS4wCgoKRnJvbSBlNWFlMGU4ODE1OWEyYjZkMjdhYzQzNjkwYTZiMzFkODg3 NDhmNWY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBPciBHZXJsaXR6IDxvZ2VybGl0 ekBtZWxsYW5veC5jb20+CkRhdGU6IFdlZCwgMTUgTWFyIDIwMTcgMTg6MTA6NDcgKzAyMDAKU3Vi amVjdDogW1BBVENIIDA5NS8xMTJdIG5ldC9vcGVudnN3aXRjaDogU2V0IHRoZSBpcHY2IHNvdXJj ZSB0dW5uZWwga2V5CiBhZGRyZXNzIGF0dHJpYnV0ZSBjb3JyZWN0bHkKClsgVXBzdHJlYW0gY29t bWl0IDNkMjBmMWY3YmQ1NzVkMTQ3ZmZhNzU2MjFmYTU2MGVlYTBhZWM2OTAgXQoKV2hlbiBkZWFs aW5nIHdpdGggaXB2NiBzb3VyY2UgdHVubmVsIGtleSBhZGRyZXNzIGF0dHJpYnV0ZQooT1ZTX1RV Tk5FTF9LRVlfQVRUUl9JUFY2X1NSQykgd2UgYXJlIHdyb25nbHkgc2V0dGluZyB0aGUgdHVubmVs CmRzdCBpcCwgZml4IHRoYXQuCgpGaXhlczogNmIyNmJhM2E3ZDk1ICgnb3BlbnZzd2l0Y2g6IG5l dGxpbmsgYXR0cmlidXRlcyBmb3IgSVB2NiB0dW5uZWxpbmcnKQpTaWduZWQtb2ZmLWJ5OiBPciBH ZXJsaXR6IDxvZ2VybGl0ekBtZWxsYW5veC5jb20+ClJlcG9ydGVkLWJ5OiBQYXVsIEJsYWtleSA8 cGF1bGJAbWVsbGFub3guY29tPgpBY2tlZC1ieTogSmlyaSBCZW5jIDxqYmVuY0ByZWRoYXQuY29t PgpBY2tlZC1ieTogSm9lIFN0cmluZ2VyIDxqb2VAb3ZuLm9yZz4KU2lnbmVkLW9mZi1ieTogRGF2 aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5ldC9vcGVudnN3aXRjaC9m bG93X25ldGxpbmsuYyB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYyBi L25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYwppbmRleCBhZTI1ZGVkLi42NzdkN2NjIDEw MDY0NAotLS0gYS9uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMKKysrIGIvbmV0L29wZW52 c3dpdGNoL2Zsb3dfbmV0bGluay5jCkBAIC01ODgsNyArNTg4LDcgQEAgc3RhdGljIGludCBpcF90 dW5fZnJvbV9ubGF0dHIoY29uc3Qgc3RydWN0IG5sYXR0ciAqYXR0ciwKIAkJCWlwdjQgPSB0cnVl OwogCQkJYnJlYWs7CiAJCWNhc2UgT1ZTX1RVTk5FTF9LRVlfQVRUUl9JUFY2X1NSQzoKLQkJCVNX X0ZMT1dfS0VZX1BVVChtYXRjaCwgdHVuX2tleS51LmlwdjYuZHN0LAorCQkJU1dfRkxPV19LRVlf UFVUKG1hdGNoLCB0dW5fa2V5LnUuaXB2Ni5zcmMsCiAJCQkJCW5sYV9nZXRfaW42X2FkZHIoYSks IGlzX21hc2spOwogCQkJaXB2NiA9IHRydWU7CiAJCQlicmVhazsKLS0gCjIuMS4wCgoKRnJvbSBh YTU2YmUwZTVkMWUyNmI0ZDhkNGMzOGEyNmQ1MjFmMzA1YjExNjRmIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBGbG9yaWFuIEZhaW5lbGxpIDxmLmZhaW5lbGxpQGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAxNSBNYXIgMjAxNyAxMjo1NzoyMSAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMDk2LzEx Ml0gbmV0OiBiY21nZW5ldDogRG8gbm90IHN1c3BlbmQgUEhZIGlmIFdha2Utb24tTEFOIGlzCiBl bmFibGVkCgpbIFVwc3RyZWFtIGNvbW1pdCA1MzcxYmJmNGIyOTVlZWEzMzRlZDQ1M2VmYTI4NmFm YTJjM2NjZmYzIF0KClN1c3BlbmRpbmcgdGhlIFBIWSB3b3VsZCBiZSBwdXR0aW5nIGl0IGluIGEg bG93IHBvd2VyIHN0YXRlIHdoZXJlIGl0Cm1heSBubyBsb25nZXIgYWxsb3cgdXMgdG8gZG8gV2Fr ZS1vbi1MQU4uCgpGaXhlczogY2MwMTNmYjQ4ODk4ICgibmV0OiBiY21nZW5ldDogY29ycmVjdGx5 IHN1c3BlbmQgYW5kIHJlc3VtZSBQSFkgZGV2aWNlIikKU2lnbmVkLW9mZi1ieTogRmxvcmlhbiBG YWluZWxsaSA8Zi5mYWluZWxsaUBnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1p bGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9h ZGNvbS9nZW5ldC9iY21nZW5ldC5jIHwgNiArKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2Fk Y29tL2dlbmV0L2JjbWdlbmV0LmMKaW5kZXggYTRlNjBlNS4uMDk3NWFmMiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYworKysgYi9kcml2 ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jCkBAIC0zNDAyLDcgKzM0 MDIsOCBAQCBzdGF0aWMgaW50IGJjbWdlbmV0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZCkKIAog CWJjbWdlbmV0X25ldGlmX3N0b3AoZGV2KTsKIAotCXBoeV9zdXNwZW5kKHByaXYtPnBoeWRldik7 CisJaWYgKCFkZXZpY2VfbWF5X3dha2V1cChkKSkKKwkJcGh5X3N1c3BlbmQocHJpdi0+cGh5ZGV2 KTsKIAogCW5ldGlmX2RldmljZV9kZXRhY2goZGV2KTsKIApAQCAtMzQ5OSw3ICszNTAwLDggQEAg c3RhdGljIGludCBiY21nZW5ldF9yZXN1bWUoc3RydWN0IGRldmljZSAqZCkKIAogCW5ldGlmX2Rl dmljZV9hdHRhY2goZGV2KTsKIAotCXBoeV9yZXN1bWUocHJpdi0+cGh5ZGV2KTsKKwlpZiAoIWRl dmljZV9tYXlfd2FrZXVwKGQpKQorCQlwaHlfcmVzdW1lKHByaXYtPnBoeWRldik7CiAKIAlpZiAo cHJpdi0+ZWVlLmVlZV9lbmFibGVkKQogCQliY21nZW5ldF9lZWVfZW5hYmxlX3NldChkZXYsIHRy dWUpOwotLSAKMi4xLjAKCgpGcm9tIGI4NjZkMDM5ZGJjZDlhYjg5NmM2NDdhOGJjMmM0MjM1ODdm ZmQ2ZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEVyaWMgRHVtYXpldCA8ZWR1bWF6 ZXRAZ29vZ2xlLmNvbT4KRGF0ZTogV2VkLCAxNSBNYXIgMjAxNyAxMzoyMToyOCAtMDcwMApTdWJq ZWN0OiBbUEFUQ0ggMDk3LzExMl0gbmV0OiBwcm9wZXJseSByZWxlYXNlIHNrX2ZyYWcucGFnZQoK WyBVcHN0cmVhbSBjb21taXQgMjJhMGUxOGVhYzdhOWU5ODZmZWM3NmM2MGZhNGEyOTI2ZDEyOTFl MiBdCgpJIG1pc3Rha2VubHkgYWRkZWQgdGhlIGNvZGUgdG8gcmVsZWFzZSBzay0+c2tfZnJhZyBp bgpza19jb21tb25fcmVsZWFzZSgpIGluc3RlYWQgb2Ygc2tfZGVzdHJ1Y3QoKQoKVENQIHNvY2tl dHMgdXNpbmcgc2stPnNrX2FsbG9jYXRpb24gPT0gR0ZQX0FUT01JQyBkbyBubyBjYWxsCnNrX2Nv bW1vbl9yZWxlYXNlKCkgYXQgY2xvc2UgdGltZSwgdGh1cyBsZWFraW5nIG9uZSAob3JkZXItMykg cGFnZS4KCmlTQ1NJIGlzIHVzaW5nIHN1Y2ggc29ja2V0cy4KCkZpeGVzOiA1NjQwZjc2ODU4MzEg KCJuZXQ6IHVzZSBhIHBlciB0YXNrIGZyYWcgYWxsb2NhdG9yIikKU2lnbmVkLW9mZi1ieTogRXJp YyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBN aWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2NvcmUvc29jay5jIHwgMTAgKysr KystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9uZXQvY29yZS9zb2NrLmMgYi9uZXQvY29yZS9zb2NrLmMKaW5kZXggYmM2 NTQzZi4uNDc4MDllOSAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvc29jay5jCisrKyBiL25ldC9jb3Jl L3NvY2suYwpAQCAtMTQzNyw2ICsxNDM3LDExIEBAIHN0YXRpYyB2b2lkIF9fc2tfZGVzdHJ1Y3Qo c3RydWN0IHJjdV9oZWFkICpoZWFkKQogCQlwcl9kZWJ1ZygiJXM6IG9wdG1lbSBsZWFrYWdlICgl ZCBieXRlcykgZGV0ZWN0ZWRcbiIsCiAJCQkgX19mdW5jX18sIGF0b21pY19yZWFkKCZzay0+c2tf b21lbV9hbGxvYykpOwogCisJaWYgKHNrLT5za19mcmFnLnBhZ2UpIHsKKwkJcHV0X3BhZ2Uoc2st PnNrX2ZyYWcucGFnZSk7CisJCXNrLT5za19mcmFnLnBhZ2UgPSBOVUxMOworCX0KKwogCWlmIChz ay0+c2tfcGVlcl9jcmVkKQogCQlwdXRfY3JlZChzay0+c2tfcGVlcl9jcmVkKTsKIAlwdXRfcGlk KHNrLT5za19wZWVyX3BpZCk7CkBAIC0yNzM4LDExICsyNzQzLDYgQEAgdm9pZCBza19jb21tb25f cmVsZWFzZShzdHJ1Y3Qgc29jayAqc2spCiAKIAlza19yZWZjbnRfZGVidWdfcmVsZWFzZShzayk7 CiAKLQlpZiAoc2stPnNrX2ZyYWcucGFnZSkgewotCQlwdXRfcGFnZShzay0+c2tfZnJhZy5wYWdl KTsKLQkJc2stPnNrX2ZyYWcucGFnZSA9IE5VTEw7Ci0JfQotCiAJc29ja19wdXQoc2spOwogfQog RVhQT1JUX1NZTUJPTChza19jb21tb25fcmVsZWFzZSk7Ci0tIAoyLjEuMAoKCkZyb20gMDU2MjAz MTIzM2M0YTM4NmIxZTZlZTA1OGM2NzYxMmI1NjlkYjk0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogIkxlbmRhY2t5LCBUaG9tYXMiIDxUaG9tYXMuTGVuZGFja3lAYW1kLmNvbT4KRGF0 ZTogV2VkLCAxNSBNYXIgMjAxNyAxNToxMToyMyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMDk4LzEx Ml0gYW1kLXhnYmU6IEZpeCBqdW1ibyBNVFUgcHJvY2Vzc2luZyBvbiBuZXdlciBoYXJkd2FyZQoK WyBVcHN0cmVhbSBjb21taXQgNjIyYzM2ZjE0M2ZjOTU2NmJhNDlkN2NlYzk5NGMyZGExMTgyZDll MiBdCgpOZXdlciBoYXJkd2FyZSBkb2VzIG5vdCBwcm92aWRlIGEgY3VtdWxhdGl2ZSBwYXlsb2Fk IGxlbmd0aCB3aGVuIG11bHRpcGxlCmRlc2NyaXB0b3JzIGFyZSBuZWVkZWQgdG8gaGFuZGxlIHRo ZSBkYXRhLiBPbmNlIHRoZSBNVFUgaW5jcmVhc2VzIGJleW9uZAp0aGUgc2l6ZSB0aGF0IGNhbiBi ZSBoYW5kbGVkIGJ5IGEgc2luZ2xlIGRlc2NyaXB0b3IsIHRoZSBTS0IgZG9lcyBub3QgZ2V0CmJ1 aWx0IHByb3Blcmx5IGJ5IHRoZSBkcml2ZXIuCgpUaGUgZHJpdmVyIHdpbGwgbm93IGNhbGN1bGF0 ZSB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBidWZmZXJzIHVzZWQgYnkgdGhlCmhhcmR3YXJlLiAgVGhl IGZpcnN0IGJ1ZmZlciBvZiB0aGUgZmlyc3QgZGVzY3JpcHRvciBpcyBmb3IgcGFja2V0IGhlYWRl cnMKb3IgcGFja2V0IGhlYWRlcnMgYW5kIGRhdGEgd2hlbiB0aGUgaGVhZGVycyBjYW4ndCBiZSBz cGxpdC4gU3Vic2VxdWVudApkZXNjcmlwdG9ycyBpbiBhIG11bHRpLWRlc2NyaXB0b3IgY2hhaW4g d2lsbCBub3QgdXNlIHRoZSBmaXJzdCBidWZmZXIuIFRoZQpzZWNvbmQgYnVmZmVyIGlzIHVzZWQg YnkgYWxsIHRoZSBkZXNjcmlwdG9ycyBpbiB0aGUgY2hhaW4gZm9yIHBheWxvYWQgZGF0YS4KQmFz ZWQgb24gd2hldGhlciB0aGUgZHJpdmVyIGlzIHByb2Nlc3NpbmcgdGhlIGZpcnN0LCBpbnRlcm1l ZGlhdGUsIG9yIGxhc3QKZGVzY3JpcHRvciBpdCBjYW4gY2FsY3VsYXRlIHRoZSBidWZmZXIgdXNh Z2UgYW5kIGJ1aWxkIHRoZSBTS0IgcHJvcGVybHkuCgpUZXN0ZWQgYW5kIHZlcmlmaWVkIG9uIGJv dGggb2xkIGFuZCBuZXcgaGFyZHdhcmUuCgpTaWduZWQtb2ZmLWJ5OiBUb20gTGVuZGFja3kgPHRo b21hcy5sZW5kYWNreUBhbWQuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRh dmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdi ZS1jb21tb24uaCB8ICAgNiArLQogZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1k ZXYuYyAgICB8ICAyMCArKystLS0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUt ZHJ2LmMgICAgfCAxMDIgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFu Z2VkLCA3OCBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWNvbW1vbi5oIGIvZHJpdmVycy9uZXQvZXRo ZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaAppbmRleCBiYmVmOTU5Li4xNTkyZTFjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWNvbW1vbi5oCisrKyBi L2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtY29tbW9uLmgKQEAgLTkxNyw4ICs5 MTcsOCBAQAogI2RlZmluZSBSWF9QQUNLRVRfQVRUUklCVVRFU19DU1VNX0RPTkVfV0lEVEgJMQog I2RlZmluZSBSWF9QQUNLRVRfQVRUUklCVVRFU19WTEFOX0NUQUdfSU5ERVgJMQogI2RlZmluZSBS WF9QQUNLRVRfQVRUUklCVVRFU19WTEFOX0NUQUdfV0lEVEgJMQotI2RlZmluZSBSWF9QQUNLRVRf QVRUUklCVVRFU19JTkNPTVBMRVRFX0lOREVYCTIKLSNkZWZpbmUgUlhfUEFDS0VUX0FUVFJJQlVU RVNfSU5DT01QTEVURV9XSURUSAkxCisjZGVmaW5lIFJYX1BBQ0tFVF9BVFRSSUJVVEVTX0xBU1Rf SU5ERVgJCTIKKyNkZWZpbmUgUlhfUEFDS0VUX0FUVFJJQlVURVNfTEFTVF9XSURUSAkJMQogI2Rl ZmluZSBSWF9QQUNLRVRfQVRUUklCVVRFU19DT05URVhUX05FWFRfSU5ERVgJMwogI2RlZmluZSBS WF9QQUNLRVRfQVRUUklCVVRFU19DT05URVhUX05FWFRfV0lEVEgJMQogI2RlZmluZSBSWF9QQUNL RVRfQVRUUklCVVRFU19DT05URVhUX0lOREVYCTQKQEAgLTkyNyw2ICs5MjcsOCBAQAogI2RlZmlu ZSBSWF9QQUNLRVRfQVRUUklCVVRFU19SWF9UU1RBTVBfV0lEVEgJMQogI2RlZmluZSBSWF9QQUNL RVRfQVRUUklCVVRFU19SU1NfSEFTSF9JTkRFWAk2CiAjZGVmaW5lIFJYX1BBQ0tFVF9BVFRSSUJV VEVTX1JTU19IQVNIX1dJRFRICTEKKyNkZWZpbmUgUlhfUEFDS0VUX0FUVFJJQlVURVNfRklSU1Rf SU5ERVgJNworI2RlZmluZSBSWF9QQUNLRVRfQVRUUklCVVRFU19GSVJTVF9XSURUSAkxCiAKICNk ZWZpbmUgUlhfTk9STUFMX0RFU0MwX09WVF9JTkRFWAkJMAogI2RlZmluZSBSWF9OT1JNQUxfREVT QzBfT1ZUX1dJRFRICQkxNgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hn YmUveGdiZS1kZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMK aW5kZXggMWJhYmNjMS4uY2ExMDZkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQv YW1kL3hnYmUveGdiZS1kZXYuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94 Z2JlLWRldi5jCkBAIC0xNzIxLDEwICsxNzIxLDE1IEBAIHN0YXRpYyBpbnQgeGdiZV9kZXZfcmVh ZChzdHJ1Y3QgeGdiZV9jaGFubmVsICpjaGFubmVsKQogCiAJLyogR2V0IHRoZSBoZWFkZXIgbGVu Z3RoICovCiAJaWYgKFhHTUFDX0dFVF9CSVRTX0xFKHJkZXNjLT5kZXNjMywgUlhfTk9STUFMX0RF U0MzLCBGRCkpIHsKKwkJWEdNQUNfU0VUX0JJVFMocGFja2V0LT5hdHRyaWJ1dGVzLCBSWF9QQUNL RVRfQVRUUklCVVRFUywKKwkJCSAgICAgICBGSVJTVCwgMSk7CiAJCXJkYXRhLT5yeC5oZHJfbGVu ID0gWEdNQUNfR0VUX0JJVFNfTEUocmRlc2MtPmRlc2MyLAogCQkJCQkJICAgICAgUlhfTk9STUFM X0RFU0MyLCBITCk7CiAJCWlmIChyZGF0YS0+cnguaGRyX2xlbikKIAkJCXBkYXRhLT5leHRfc3Rh dHMucnhfc3BsaXRfaGVhZGVyX3BhY2tldHMrKzsKKwl9IGVsc2UgeworCQlYR01BQ19TRVRfQklU UyhwYWNrZXQtPmF0dHJpYnV0ZXMsIFJYX1BBQ0tFVF9BVFRSSUJVVEVTLAorCQkJICAgICAgIEZJ UlNULCAwKTsKIAl9CiAKIAkvKiBHZXQgdGhlIFJTUyBoYXNoICovCkBAIC0xNzQ3LDE5ICsxNzUy LDE2IEBAIHN0YXRpYyBpbnQgeGdiZV9kZXZfcmVhZChzdHJ1Y3QgeGdiZV9jaGFubmVsICpjaGFu bmVsKQogCQl9CiAJfQogCi0JLyogR2V0IHRoZSBwYWNrZXQgbGVuZ3RoICovCi0JcmRhdGEtPnJ4 LmxlbiA9IFhHTUFDX0dFVF9CSVRTX0xFKHJkZXNjLT5kZXNjMywgUlhfTk9STUFMX0RFU0MzLCBQ TCk7Ci0KLQlpZiAoIVhHTUFDX0dFVF9CSVRTX0xFKHJkZXNjLT5kZXNjMywgUlhfTk9STUFMX0RF U0MzLCBMRCkpIHsKLQkJLyogTm90IGFsbCB0aGUgZGF0YSBoYXMgYmVlbiB0cmFuc2ZlcnJlZCBm b3IgdGhpcyBwYWNrZXQgKi8KLQkJWEdNQUNfU0VUX0JJVFMocGFja2V0LT5hdHRyaWJ1dGVzLCBS WF9QQUNLRVRfQVRUUklCVVRFUywKLQkJCSAgICAgICBJTkNPTVBMRVRFLCAxKTsKKwkvKiBOb3Qg YWxsIHRoZSBkYXRhIGhhcyBiZWVuIHRyYW5zZmVycmVkIGZvciB0aGlzIHBhY2tldCAqLworCWlm ICghWEdNQUNfR0VUX0JJVFNfTEUocmRlc2MtPmRlc2MzLCBSWF9OT1JNQUxfREVTQzMsIExEKSkK IAkJcmV0dXJuIDA7Ci0JfQogCiAJLyogVGhpcyBpcyB0aGUgbGFzdCBvZiB0aGUgZGF0YSBmb3Ig dGhpcyBwYWNrZXQgKi8KIAlYR01BQ19TRVRfQklUUyhwYWNrZXQtPmF0dHJpYnV0ZXMsIFJYX1BB Q0tFVF9BVFRSSUJVVEVTLAotCQkgICAgICAgSU5DT01QTEVURSwgMCk7CisJCSAgICAgICBMQVNU LCAxKTsKKworCS8qIEdldCB0aGUgcGFja2V0IGxlbmd0aCAqLworCXJkYXRhLT5yeC5sZW4gPSBY R01BQ19HRVRfQklUU19MRShyZGVzYy0+ZGVzYzMsIFJYX05PUk1BTF9ERVNDMywgUEwpOwogCiAJ LyogU2V0IGNoZWNrc3VtIGRvbmUgaW5kaWNhdG9yIGFzIGFwcHJvcHJpYXRlICovCiAJaWYgKG5l dGRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX1JYQ1NVTSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQv eGdiZS94Z2JlLWRydi5jCmluZGV4IDdmOTIxNmQuLjBmMGYzMDE0IDEwMDY0NAotLS0gYS9kcml2 ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jCisrKyBiL2RyaXZlcnMvbmV0L2V0 aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMKQEAgLTE3NTIsMTMgKzE3NTIsMTIgQEAgc3RhdGlj IHN0cnVjdCBza19idWZmICp4Z2JlX2NyZWF0ZV9za2Ioc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBk YXRhLAogewogCXN0cnVjdCBza19idWZmICpza2I7CiAJdTggKnBhY2tldDsKLQl1bnNpZ25lZCBp bnQgY29weV9sZW47CiAKIAlza2IgPSBuYXBpX2FsbG9jX3NrYihuYXBpLCByZGF0YS0+cnguaGRy LmRtYV9sZW4pOwogCWlmICghc2tiKQogCQlyZXR1cm4gTlVMTDsKIAotCS8qIFN0YXJ0IHdpdGgg dGhlIGhlYWRlciBidWZmZXIgd2hpY2ggbWF5IGNvbnRhaW4ganVzdCB0aGUgaGVhZGVyCisJLyog UHVsbCBpbiB0aGUgaGVhZGVyIGJ1ZmZlciB3aGljaCBtYXkgY29udGFpbiBqdXN0IHRoZSBoZWFk ZXIKIAkgKiBvciB0aGUgaGVhZGVyIHBsdXMgZGF0YQogCSAqLwogCWRtYV9zeW5jX3NpbmdsZV9y YW5nZV9mb3JfY3B1KHBkYXRhLT5kZXYsIHJkYXRhLT5yeC5oZHIuZG1hX2Jhc2UsCkBAIC0xNzY3 LDMwICsxNzY2LDQ5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqeGdiZV9jcmVhdGVfc2tiKHN0 cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSwKIAogCXBhY2tldCA9IHBhZ2VfYWRkcmVzcyhyZGF0 YS0+cnguaGRyLnBhLnBhZ2VzKSArCiAJCSByZGF0YS0+cnguaGRyLnBhLnBhZ2VzX29mZnNldDsK LQljb3B5X2xlbiA9IChyZGF0YS0+cnguaGRyX2xlbikgPyByZGF0YS0+cnguaGRyX2xlbiA6IGxl bjsKLQljb3B5X2xlbiA9IG1pbihyZGF0YS0+cnguaGRyLmRtYV9sZW4sIGNvcHlfbGVuKTsKLQlz a2JfY29weV90b19saW5lYXJfZGF0YShza2IsIHBhY2tldCwgY29weV9sZW4pOwotCXNrYl9wdXQo c2tiLCBjb3B5X2xlbik7Ci0KLQlsZW4gLT0gY29weV9sZW47Ci0JaWYgKGxlbikgewotCQkvKiBB ZGQgdGhlIHJlbWFpbmluZyBkYXRhIGFzIGEgZnJhZyAqLwotCQlkbWFfc3luY19zaW5nbGVfcmFu Z2VfZm9yX2NwdShwZGF0YS0+ZGV2LAotCQkJCQkgICAgICByZGF0YS0+cnguYnVmLmRtYV9iYXNl LAotCQkJCQkgICAgICByZGF0YS0+cnguYnVmLmRtYV9vZmYsCi0JCQkJCSAgICAgIHJkYXRhLT5y eC5idWYuZG1hX2xlbiwKLQkJCQkJICAgICAgRE1BX0ZST01fREVWSUNFKTsKLQotCQlza2JfYWRk X3J4X2ZyYWcoc2tiLCBza2Jfc2hpbmZvKHNrYiktPm5yX2ZyYWdzLAotCQkJCXJkYXRhLT5yeC5i dWYucGEucGFnZXMsCi0JCQkJcmRhdGEtPnJ4LmJ1Zi5wYS5wYWdlc19vZmZzZXQsCi0JCQkJbGVu LCByZGF0YS0+cnguYnVmLmRtYV9sZW4pOwotCQlyZGF0YS0+cnguYnVmLnBhLnBhZ2VzID0gTlVM TDsKLQl9CisJc2tiX2NvcHlfdG9fbGluZWFyX2RhdGEoc2tiLCBwYWNrZXQsIGxlbik7CisJc2ti X3B1dChza2IsIGxlbik7CiAKIAlyZXR1cm4gc2tiOwogfQogCitzdGF0aWMgdW5zaWduZWQgaW50 IHhnYmVfcnhfYnVmMV9sZW4oc3RydWN0IHhnYmVfcmluZ19kYXRhICpyZGF0YSwKKwkJCQkgICAg IHN0cnVjdCB4Z2JlX3BhY2tldF9kYXRhICpwYWNrZXQpCit7CisJLyogQWx3YXlzIHplcm8gaWYg bm90IHRoZSBmaXJzdCBkZXNjcmlwdG9yICovCisJaWYgKCFYR01BQ19HRVRfQklUUyhwYWNrZXQt PmF0dHJpYnV0ZXMsIFJYX1BBQ0tFVF9BVFRSSUJVVEVTLCBGSVJTVCkpCisJCXJldHVybiAwOwor CisJLyogRmlyc3QgZGVzY3JpcHRvciB3aXRoIHNwbGl0IGhlYWRlciwgcmV0dXJuIGhlYWRlciBs ZW5ndGggKi8KKwlpZiAocmRhdGEtPnJ4Lmhkcl9sZW4pCisJCXJldHVybiByZGF0YS0+cnguaGRy X2xlbjsKKworCS8qIEZpcnN0IGRlc2NyaXB0b3IgYnV0IG5vdCB0aGUgbGFzdCBkZXNjcmlwdG9y IGFuZCBubyBzcGxpdCBoZWFkZXIsCisJICogc28gdGhlIGZ1bGwgYnVmZmVyIHdhcyB1c2VkCisJ ICovCisJaWYgKCFYR01BQ19HRVRfQklUUyhwYWNrZXQtPmF0dHJpYnV0ZXMsIFJYX1BBQ0tFVF9B VFRSSUJVVEVTLCBMQVNUKSkKKwkJcmV0dXJuIHJkYXRhLT5yeC5oZHIuZG1hX2xlbjsKKworCS8q IEZpcnN0IGRlc2NyaXB0b3IgYW5kIGxhc3QgZGVzY3JpcHRvciBhbmQgbm8gc3BsaXQgaGVhZGVy LCBzbworCSAqIGNhbGN1bGF0ZSBob3cgbXVjaCBvZiB0aGUgYnVmZmVyIHdhcyB1c2VkCisJICov CisJcmV0dXJuIG1pbl90KHVuc2lnbmVkIGludCwgcmRhdGEtPnJ4Lmhkci5kbWFfbGVuLCByZGF0 YS0+cngubGVuKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCB4Z2JlX3J4X2J1ZjJfbGVuKHN0 cnVjdCB4Z2JlX3JpbmdfZGF0YSAqcmRhdGEsCisJCQkJICAgICBzdHJ1Y3QgeGdiZV9wYWNrZXRf ZGF0YSAqcGFja2V0LAorCQkJCSAgICAgdW5zaWduZWQgaW50IGxlbikKK3sKKwkvKiBBbHdheXMg dGhlIGZ1bGwgYnVmZmVyIGlmIG5vdCB0aGUgbGFzdCBkZXNjcmlwdG9yICovCisJaWYgKCFYR01B Q19HRVRfQklUUyhwYWNrZXQtPmF0dHJpYnV0ZXMsIFJYX1BBQ0tFVF9BVFRSSUJVVEVTLCBMQVNU KSkKKwkJcmV0dXJuIHJkYXRhLT5yeC5idWYuZG1hX2xlbjsKKworCS8qIExhc3QgZGVzY3JpcHRv ciBzbyBjYWxjdWxhdGUgaG93IG11Y2ggb2YgdGhlIGJ1ZmZlciB3YXMgdXNlZAorCSAqIGZvciB0 aGUgbGFzdCBiaXQgb2YgZGF0YQorCSAqLworCXJldHVybiByZGF0YS0+cngubGVuIC0gbGVuOwor fQorCiBzdGF0aWMgaW50IHhnYmVfdHhfcG9sbChzdHJ1Y3QgeGdiZV9jaGFubmVsICpjaGFubmVs KQogewogCXN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSA9IGNoYW5uZWwtPnBkYXRhOwpAQCAt MTg3Myw4ICsxODkxLDggQEAgc3RhdGljIGludCB4Z2JlX3J4X3BvbGwoc3RydWN0IHhnYmVfY2hh bm5lbCAqY2hhbm5lbCwgaW50IGJ1ZGdldCkKIAlzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGk7CiAJ c3RydWN0IHNrX2J1ZmYgKnNrYjsKIAlzdHJ1Y3Qgc2tiX3NoYXJlZF9od3RzdGFtcHMgKmh3dHN0 YW1wczsKLQl1bnNpZ25lZCBpbnQgaW5jb21wbGV0ZSwgZXJyb3IsIGNvbnRleHRfbmV4dCwgY29u dGV4dDsKLQl1bnNpZ25lZCBpbnQgbGVuLCByZGVzY19sZW4sIG1heF9sZW47CisJdW5zaWduZWQg aW50IGxhc3QsIGVycm9yLCBjb250ZXh0X25leHQsIGNvbnRleHQ7CisJdW5zaWduZWQgaW50IGxl biwgYnVmMV9sZW4sIGJ1ZjJfbGVuLCBtYXhfbGVuOwogCXVuc2lnbmVkIGludCByZWNlaXZlZCA9 IDA7CiAJaW50IHBhY2tldF9jb3VudCA9IDA7CiAKQEAgLTE4ODQsNyArMTkwMiw3IEBAIHN0YXRp YyBpbnQgeGdiZV9yeF9wb2xsKHN0cnVjdCB4Z2JlX2NoYW5uZWwgKmNoYW5uZWwsIGludCBidWRn ZXQpCiAJaWYgKCFyaW5nKQogCQlyZXR1cm4gMDsKIAotCWluY29tcGxldGUgPSAwOworCWxhc3Qg PSAwOwogCWNvbnRleHRfbmV4dCA9IDA7CiAKIAluYXBpID0gKHBkYXRhLT5wZXJfY2hhbm5lbF9p cnEpID8gJmNoYW5uZWwtPm5hcGkgOiAmcGRhdGEtPm5hcGk7CkBAIC0xOTE4LDkgKzE5MzYsOCBA QCBzdGF0aWMgaW50IHhnYmVfcnhfcG9sbChzdHJ1Y3QgeGdiZV9jaGFubmVsICpjaGFubmVsLCBp bnQgYnVkZ2V0KQogCQlyZWNlaXZlZCsrOwogCQlyaW5nLT5jdXIrKzsKIAotCQlpbmNvbXBsZXRl ID0gWEdNQUNfR0VUX0JJVFMocGFja2V0LT5hdHRyaWJ1dGVzLAotCQkJCQkgICAgUlhfUEFDS0VU X0FUVFJJQlVURVMsCi0JCQkJCSAgICBJTkNPTVBMRVRFKTsKKwkJbGFzdCA9IFhHTUFDX0dFVF9C SVRTKHBhY2tldC0+YXR0cmlidXRlcywgUlhfUEFDS0VUX0FUVFJJQlVURVMsCisJCQkJICAgICAg TEFTVCk7CiAJCWNvbnRleHRfbmV4dCA9IFhHTUFDX0dFVF9CSVRTKHBhY2tldC0+YXR0cmlidXRl cywKIAkJCQkJICAgICAgUlhfUEFDS0VUX0FUVFJJQlVURVMsCiAJCQkJCSAgICAgIENPTlRFWFRf TkVYVCk7CkBAIC0xOTI5LDcgKzE5NDYsNyBAQCBzdGF0aWMgaW50IHhnYmVfcnhfcG9sbChzdHJ1 Y3QgeGdiZV9jaGFubmVsICpjaGFubmVsLCBpbnQgYnVkZ2V0KQogCQkJCQkgQ09OVEVYVCk7CiAK IAkJLyogRWFybGllciBlcnJvciwganVzdCBkcmFpbiB0aGUgcmVtYWluaW5nIGRhdGEgKi8KLQkJ aWYgKChpbmNvbXBsZXRlIHx8IGNvbnRleHRfbmV4dCkgJiYgZXJyb3IpCisJCWlmICgoIWxhc3Qg fHwgY29udGV4dF9uZXh0KSAmJiBlcnJvcikKIAkJCWdvdG8gcmVhZF9hZ2FpbjsKIAogCQlpZiAo ZXJyb3IgfHwgcGFja2V0LT5lcnJvcnMpIHsKQEAgLTE5NDEsMTYgKzE5NTgsMjIgQEAgc3RhdGlj IGludCB4Z2JlX3J4X3BvbGwoc3RydWN0IHhnYmVfY2hhbm5lbCAqY2hhbm5lbCwgaW50IGJ1ZGdl dCkKIAkJfQogCiAJCWlmICghY29udGV4dCkgewotCQkJLyogTGVuZ3RoIGlzIGN1bXVsYXRpdmUs IGdldCB0aGlzIGRlc2NyaXB0b3IncyBsZW5ndGggKi8KLQkJCXJkZXNjX2xlbiA9IHJkYXRhLT5y eC5sZW4gLSBsZW47Ci0JCQlsZW4gKz0gcmRlc2NfbGVuOworCQkJLyogR2V0IHRoZSBkYXRhIGxl bmd0aCBpbiB0aGUgZGVzY3JpcHRvciBidWZmZXJzICovCisJCQlidWYxX2xlbiA9IHhnYmVfcnhf YnVmMV9sZW4ocmRhdGEsIHBhY2tldCk7CisJCQlsZW4gKz0gYnVmMV9sZW47CisJCQlidWYyX2xl biA9IHhnYmVfcnhfYnVmMl9sZW4ocmRhdGEsIHBhY2tldCwgbGVuKTsKKwkJCWxlbiArPSBidWYy X2xlbjsKIAotCQkJaWYgKHJkZXNjX2xlbiAmJiAhc2tiKSB7CisJCQlpZiAoIXNrYikgewogCQkJ CXNrYiA9IHhnYmVfY3JlYXRlX3NrYihwZGF0YSwgbmFwaSwgcmRhdGEsCi0JCQkJCQkgICAgICBy ZGVzY19sZW4pOwotCQkJCWlmICghc2tiKQorCQkJCQkJICAgICAgYnVmMV9sZW4pOworCQkJCWlm ICghc2tiKSB7CiAJCQkJCWVycm9yID0gMTsKLQkJCX0gZWxzZSBpZiAocmRlc2NfbGVuKSB7CisJ CQkJCWdvdG8gc2tpcF9kYXRhOworCQkJCX0KKwkJCX0KKworCQkJaWYgKGJ1ZjJfbGVuKSB7CiAJ CQkJZG1hX3N5bmNfc2luZ2xlX3JhbmdlX2Zvcl9jcHUocGRhdGEtPmRldiwKIAkJCQkJCQlyZGF0 YS0+cnguYnVmLmRtYV9iYXNlLAogCQkJCQkJCXJkYXRhLT5yeC5idWYuZG1hX29mZiwKQEAgLTE5 NjAsMTMgKzE5ODMsMTQgQEAgc3RhdGljIGludCB4Z2JlX3J4X3BvbGwoc3RydWN0IHhnYmVfY2hh bm5lbCAqY2hhbm5lbCwgaW50IGJ1ZGdldCkKIAkJCQlza2JfYWRkX3J4X2ZyYWcoc2tiLCBza2Jf c2hpbmZvKHNrYiktPm5yX2ZyYWdzLAogCQkJCQkJcmRhdGEtPnJ4LmJ1Zi5wYS5wYWdlcywKIAkJ CQkJCXJkYXRhLT5yeC5idWYucGEucGFnZXNfb2Zmc2V0LAotCQkJCQkJcmRlc2NfbGVuLAorCQkJ CQkJYnVmMl9sZW4sCiAJCQkJCQlyZGF0YS0+cnguYnVmLmRtYV9sZW4pOwogCQkJCXJkYXRhLT5y eC5idWYucGEucGFnZXMgPSBOVUxMOwogCQkJfQogCQl9CiAKLQkJaWYgKGluY29tcGxldGUgfHwg Y29udGV4dF9uZXh0KQorc2tpcF9kYXRhOgorCQlpZiAoIWxhc3QgfHwgY29udGV4dF9uZXh0KQog CQkJZ290byByZWFkX2FnYWluOwogCiAJCWlmICghc2tiKQpAQCAtMjAyNCw3ICsyMDQ4LDcgQEAg c3RhdGljIGludCB4Z2JlX3J4X3BvbGwoc3RydWN0IHhnYmVfY2hhbm5lbCAqY2hhbm5lbCwgaW50 IGJ1ZGdldCkKIAl9CiAKIAkvKiBDaGVjayBpZiB3ZSBuZWVkIHRvIHNhdmUgc3RhdGUgYmVmb3Jl IGxlYXZpbmcgKi8KLQlpZiAocmVjZWl2ZWQgJiYgKGluY29tcGxldGUgfHwgY29udGV4dF9uZXh0 KSkgeworCWlmIChyZWNlaXZlZCAmJiAoIWxhc3QgfHwgY29udGV4dF9uZXh0KSkgewogCQlyZGF0 YSA9IFhHQkVfR0VUX0RFU0NfREFUQShyaW5nLCByaW5nLT5jdXIpOwogCQlyZGF0YS0+c3RhdGVf c2F2ZWQgPSAxOwogCQlyZGF0YS0+c3RhdGUuc2tiID0gc2tiOwotLSAKMi4xLjAKCgpGcm9tIGNm YzZhYmQwOWY5ZDRmNDlkOGM4NTUwOGI4ZTQ2MjdhOTI3MDdjYjggTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCkZyb206IEtyaXMgTXVycGh5IDxrcmlza2VuZEBsaW51eC52bmV0LmlibS5jb20+CkRh dGU6IFRodSwgMTYgTWFyIDIwMTcgMTA6NTE6MjggLTA1MDAKU3ViamVjdDogW1BBVENIIDA5OS8x MTJdIG9wZW52c3dpdGNoOiBBZGQgbWlzc2luZyBjYXNlIE9WU19UVU5ORUxfS0VZX0FUVFJfUEFE CgpbIFVwc3RyZWFtIGNvbW1pdCA4ZjNkYmZkNzllZDllZjk3NzAzMDVhN2NjNGUxM2RmZDMxYWQy Y2QwIF0KCkFkZGVkIGEgY2FzZSBmb3IgT1ZTX1RVTk5FTF9LRVlfQVRUUl9QQUQgdG8gdGhlIHN3 aXRjaCBzdGF0ZW1lbnQKaW4gaXBfdHVuX2Zyb21fbmxhdHRyIGluIG9yZGVyIHRvIHByZXZlbnQg dGhlIGRlZmF1bHQgY2FzZQpyZXR1cm5pbmcgYW4gZXJyb3IuCgpGaXhlczogYjQ2ZjZkZWQ5MDZl ICgibGlibmw6IG5sYV9wdXRfYmU2NCgpOiBhbGlnbiBvbiBhIDY0LWJpdCBhcmVhIikKU2lnbmVk LW9mZi1ieTogS3JpcyBNdXJwaHkgPGtyaXNrZW5kQGxpbnV4LnZuZXQuaWJtLmNvbT4KQWNrZWQt Ynk6IEpvZSBTdHJpbmdlciA8am9lQG92bi5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1p bGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRs aW5rLmMgfCAyICsrCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0 IGEvbmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jIGIvbmV0L29wZW52c3dpdGNoL2Zsb3df bmV0bGluay5jCmluZGV4IDY3N2Q3Y2MuLjA3OTI1NDEgMTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3 aXRjaC9mbG93X25ldGxpbmsuYworKysgYi9uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMK QEAgLTY0OSw2ICs2NDksOCBAQCBzdGF0aWMgaW50IGlwX3R1bl9mcm9tX25sYXR0cihjb25zdCBz dHJ1Y3QgbmxhdHRyICphdHRyLAogCQkJdHVuX2ZsYWdzIHw9IFRVTk5FTF9WWExBTl9PUFQ7CiAJ CQlvcHRzX3R5cGUgPSB0eXBlOwogCQkJYnJlYWs7CisJCWNhc2UgT1ZTX1RVTk5FTF9LRVlfQVRU Ul9QQUQ6CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCU9WU19OTEVSUihsb2csICJVbmtub3du IElQIHR1bm5lbCBhdHRyaWJ1dGUgJWQiLAogCQkJCSAgdHlwZSk7Ci0tIAoyLjEuMAoKCkZyb20g MDkwOTgzNDRhNGFjNDljOWIyNWY5MGQ1MzU3OWFkYjA3Y2FhMzk3MCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogQW5kcmV5IFVsYW5vdiA8YW5kcmV5dUBnb29nbGUuY29tPgpEYXRlOiBU dWUsIDE0IE1hciAyMDE3IDIwOjE2OjQyIC0wNzAwClN1YmplY3Q6IFtQQVRDSCAxMDAvMTEyXSBu ZXQ6IHVuaXg6IHByb3Blcmx5IHJlLWluY3JlbWVudCBpbmZsaWdodCBjb3VudGVyIG9mCiBHQyBk aXNjYXJkZWQgY2FuZGlkYXRlcwoKWyBVcHN0cmVhbSBjb21taXQgN2RmOWMyNDYyNWI5OTgxNzc5 YWZiOGZjZGJlMmJiNDc2NWU2MTE0NyBdCgpEbWl0cnkgaGFzIHJlcG9ydGVkIHRoYXQgYSBCVUdf T04oKSBjb25kaXRpb24gaW4gdW5peF9ub3RpbmZsaWdodCgpCm1heSBiZSB0cmlnZ2VyZWQgYnkg YSBzaW1wbGUgY29kZSB0aGF0IGZvcndhcmRzIHVuaXggc29ja2V0IGluIGFuClNDTV9SSUdIVFMg bWVzc2FnZS4KVGhhdCBpcyBjYXVzZWQgYnkgaW5jb3JyZWN0IHVuaXggc29ja2V0IEdDIGltcGxl bWVudGF0aW9uIGluIHVuaXhfZ2MoKS4KClRoZSBHQyBmaXJzdCBjb2xsZWN0cyBsaXN0IG9mIGNh bmRpZGF0ZXMsIHRoZW4gKGEpIGRlY3JlbWVudHMgdGhlaXIKImNoaWxkcmVuJ3MiIGluZmxpZ2h0 IGNvdW50ZXIsIChiKSBjaGVja3Mgd2hpY2ggaW5mbGlnaHQgY291bnRlcnMgYXJlCm5vdyAwLCBh bmQgdGhlbiAoYykgaW5jcmVtZW50cyBhbGwgaW5mbGlnaHQgY291bnRlcnMgYmFjay4KKGEpIGFu ZCAoYykgYXJlIGRvbmUgYnkgY2FsbGluZyBzY2FuX2NoaWxkcmVuKCkgd2l0aCBpbmNfaW5mbGln aHQgb3IKZGVjX2luZmxpZ2h0IGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuCgpDb21taXQgNjIwOTM0 NGY1YTM3ICgibmV0OiB1bml4OiBmaXggaW5mbGlnaHQgY291bnRpbmcgYnVnIGluIGdhcmJhZ2UK Y29sbGVjdG9yIikgY2hhbmdlZCBzY2FuX2NoaWxkcmVuKCkgc3VjaCB0aGF0IGl0IG5vIGxvbmdl ciBjb25zaWRlcnMKc29ja2V0cyB0aGF0IGRvIG5vdCBoYXZlIFVOSVhfR0NfQ0FORElEQVRFIGZs YWcuIEl0IGFsc28gYWRkZWQgYSBibG9jawpvZiBjb2RlIHRoYXQgdGhhdCB1bnNldHMgdGhpcyBm bGFnIF9iZWZvcmVfIGludm9raW5nCnNjYW5fY2hpbGRyZW4oLCBkZWNfaWZsaWdodCwgKS4gVGhp cyBtYXkgbGVhZCB0byBpbmNvcnJlY3QgaW5mbGlnaHQKY291bnRlcnMgZm9yIHNvbWUgc29ja2V0 cy4KClRoaXMgY2hhbmdlIGZpeGVzIHRoaXMgYnVnIGJ5IGNoYW5naW5nIG9yZGVyIG9mIG9wZXJh dGlvbnM6ClVOSVhfR0NfQ0FORElEQVRFIGlzIG5vdyB1bnNldCBvbmx5IGFmdGVyIGFsbCBpbmZs aWdodCBjb3VudGVycyBhcmUKcmVzdG9yZWQgdG8gdGhlIG9yaWdpbmFsIHN0YXRlLgoKICBrZXJu ZWwgQlVHIGF0IG5ldC91bml4L2dhcmJhZ2UuYzoxNDkhCiAgUklQOiAwMDEwOls8ZmZmZmZmZmY4 NzE3ZWJmND5dICBbPGZmZmZmZmZmODcxN2ViZjQ+XQogIHVuaXhfbm90aW5mbGlnaHQrMHgzYjQv MHg0OTAgbmV0L3VuaXgvZ2FyYmFnZS5jOjE0OQogIENhbGwgVHJhY2U6CiAgIFs8ZmZmZmZmZmY4 NzE2Y2ZiZj5dIHVuaXhfZGV0YWNoX2Zkcy5pc3JhLjE5KzB4ZmYvMHgxNzAgbmV0L3VuaXgvYWZf dW5peC5jOjE0ODcKICAgWzxmZmZmZmZmZjg3MTZmNmE5Pl0gdW5peF9kZXN0cnVjdF9zY20rMHhm OS8weDIxMCBuZXQvdW5peC9hZl91bml4LmM6MTQ5NgogICBbPGZmZmZmZmZmODZhOTBhMDE+XSBz a2JfcmVsZWFzZV9oZWFkX3N0YXRlKzB4MTAxLzB4MjAwIG5ldC9jb3JlL3NrYnVmZi5jOjY1NQog ICBbPGZmZmZmZmZmODZhOTgwOGE+XSBza2JfcmVsZWFzZV9hbGwrMHgxYS8weDYwIG5ldC9jb3Jl L3NrYnVmZi5jOjY2OAogICBbPGZmZmZmZmZmODZhOTgwZWE+XSBfX2tmcmVlX3NrYisweDFhLzB4 MzAgbmV0L2NvcmUvc2tidWZmLmM6Njg0CiAgIFs8ZmZmZmZmZmY4NmE5ODI4ND5dIGtmcmVlX3Nr YisweDE4NC8weDU3MCBuZXQvY29yZS9za2J1ZmYuYzo3MDUKICAgWzxmZmZmZmZmZjg3MTc4OWQ1 Pl0gdW5peF9yZWxlYXNlX3NvY2srMHg1YjUvMHhiZDAgbmV0L3VuaXgvYWZfdW5peC5jOjU1OQog ICBbPGZmZmZmZmZmODcxNzkwMzk+XSB1bml4X3JlbGVhc2UrMHg0OS8weDkwIG5ldC91bml4L2Fm X3VuaXguYzo4MzYKICAgWzxmZmZmZmZmZjg2YTY5NGIyPl0gc29ja19yZWxlYXNlKzB4OTIvMHgx ZjAgbmV0L3NvY2tldC5jOjU3MAogICBbPGZmZmZmZmZmODZhNjk2MmI+XSBzb2NrX2Nsb3NlKzB4 MWIvMHgyMCBuZXQvc29ja2V0LmM6MTAxNwogICBbPGZmZmZmZmZmODFhNzZiOGU+XSBfX2ZwdXQr MHgzNGUvMHg5MTAgZnMvZmlsZV90YWJsZS5jOjIwOAogICBbPGZmZmZmZmZmODFhNzcxZGE+XSBf X19fZnB1dCsweDFhLzB4MjAgZnMvZmlsZV90YWJsZS5jOjI0NAogICBbPGZmZmZmZmZmODE0ODNh YjA+XSB0YXNrX3dvcmtfcnVuKzB4MWEwLzB4MjgwIGtlcm5lbC90YXNrX3dvcmsuYzoxMTYKICAg WzwgICAgIGlubGluZSAgICAgPl0gZXhpdF90YXNrX3dvcmsgaW5jbHVkZS9saW51eC90YXNrX3dv cmsuaDoyMQogICBbPGZmZmZmZmZmODE0MTI4N2E+XSBkb19leGl0KzB4MTgzYS8weDI2NDAga2Vy bmVsL2V4aXQuYzo4MjgKICAgWzxmZmZmZmZmZjgxNDEzODNlPl0gZG9fZ3JvdXBfZXhpdCsweDE0 ZS8weDQyMCBrZXJuZWwvZXhpdC5jOjkzMQogICBbPGZmZmZmZmZmODE0NDI5ZDM+XSBnZXRfc2ln bmFsKzB4NjYzLzB4MTg4MCBrZXJuZWwvc2lnbmFsLmM6MjMwNwogICBbPGZmZmZmZmZmODEyMzli NDU+XSBkb19zaWduYWwrMHhjNS8weDIxOTAgYXJjaC94ODYva2VybmVsL3NpZ25hbC5jOjgwNwog ICBbPGZmZmZmZmZmODEwMDY2NmE+XSBleGl0X3RvX3VzZXJtb2RlX2xvb3ArMHgxZWEvMHgyZDAK ICBhcmNoL3g4Ni9lbnRyeS9jb21tb24uYzoxNTYKICAgWzwgICAgIGlubGluZSAgICAgPl0gcHJl cGFyZV9leGl0X3RvX3VzZXJtb2RlIGFyY2gveDg2L2VudHJ5L2NvbW1vbi5jOjE5MAogICBbPGZm ZmZmZmZmODEwMDk2OTM+XSBzeXNjYWxsX3JldHVybl9zbG93cGF0aCsweDRkMy8weDU3MAogIGFy Y2gveDg2L2VudHJ5L2NvbW1vbi5jOjI1OQogICBbPGZmZmZmZmZmODgxNDc4ZTY+XSBlbnRyeV9T WVNDQUxMXzY0X2Zhc3RwYXRoKzB4YzQvMHhjNgoKTGluazogaHR0cHM6Ly9sa21sLm9yZy9sa21s LzIwMTcvMy82LzI1MgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXkgVWxhbm92IDxhbmRyZXl1QGdvb2ds ZS5jb20+ClJlcG9ydGVkLWJ5OiBEbWl0cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+CkZp eGVzOiA2MjA5MzQ0ICgibmV0OiB1bml4OiBmaXggaW5mbGlnaHQgY291bnRpbmcgYnVnIGluIGdh cmJhZ2UgY29sbGVjdG9yIikKU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBk YXZlbWxvZnQubmV0PgotLS0KIG5ldC91bml4L2dhcmJhZ2UuYyB8IDE3ICsrKysrKysrKy0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL25ldC91bml4L2dhcmJhZ2UuYyBiL25ldC91bml4L2dhcmJhZ2UuYwppbmRleCA2 YTBkNDg1Li5jMzY3NTdlIDEwMDY0NAotLS0gYS9uZXQvdW5peC9nYXJiYWdlLmMKKysrIGIvbmV0 L3VuaXgvZ2FyYmFnZS5jCkBAIC0xNDYsNiArMTQ2LDcgQEAgdm9pZCB1bml4X25vdGluZmxpZ2h0 KHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlciwgc3RydWN0IGZpbGUgKmZwKQogCWlmIChzKSB7CiAJ CXN0cnVjdCB1bml4X3NvY2sgKnUgPSB1bml4X3NrKHMpOwogCisJCUJVR19PTighYXRvbWljX2xv bmdfcmVhZCgmdS0+aW5mbGlnaHQpKTsKIAkJQlVHX09OKGxpc3RfZW1wdHkoJnUtPmxpbmspKTsK IAogCQlpZiAoYXRvbWljX2xvbmdfZGVjX2FuZF90ZXN0KCZ1LT5pbmZsaWdodCkpCkBAIC0zNDEs NiArMzQyLDE0IEBAIHZvaWQgdW5peF9nYyh2b2lkKQogCX0KIAlsaXN0X2RlbCgmY3Vyc29yKTsK IAorCS8qIE5vdyBnY19jYW5kaWRhdGVzIGNvbnRhaW5zIG9ubHkgZ2FyYmFnZS4gIFJlc3RvcmUg b3JpZ2luYWwKKwkgKiBpbmZsaWdodCBjb3VudGVycyBmb3IgdGhlc2UgYXMgd2VsbCwgYW5kIHJl bW92ZSB0aGUgc2tidWZmcworCSAqIHdoaWNoIGFyZSBjcmVhdGluZyB0aGUgY3ljbGUocykuCisJ ICovCisJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmaGl0bGlzdCk7CisJbGlzdF9mb3JfZWFjaF9lbnRy eSh1LCAmZ2NfY2FuZGlkYXRlcywgbGluaykKKwkJc2Nhbl9jaGlsZHJlbigmdS0+c2ssIGluY19p bmZsaWdodCwgJmhpdGxpc3QpOworCiAJLyogbm90X2N5Y2xlX2xpc3QgY29udGFpbnMgdGhvc2Ug c29ja2V0cyB3aGljaCBkbyBub3QgbWFrZSB1cCBhCiAJICogY3ljbGUuICBSZXN0b3JlIHRoZXNl IHRvIHRoZSBpbmZsaWdodCBsaXN0LgogCSAqLwpAQCAtMzUwLDE0ICszNTksNiBAQCB2b2lkIHVu aXhfZ2Modm9pZCkKIAkJbGlzdF9tb3ZlX3RhaWwoJnUtPmxpbmssICZnY19pbmZsaWdodF9saXN0 KTsKIAl9CiAKLQkvKiBOb3cgZ2NfY2FuZGlkYXRlcyBjb250YWlucyBvbmx5IGdhcmJhZ2UuICBS ZXN0b3JlIG9yaWdpbmFsCi0JICogaW5mbGlnaHQgY291bnRlcnMgZm9yIHRoZXNlIGFzIHdlbGws IGFuZCByZW1vdmUgdGhlIHNrYnVmZnMKLQkgKiB3aGljaCBhcmUgY3JlYXRpbmcgdGhlIGN5Y2xl KHMpLgotCSAqLwotCXNrYl9xdWV1ZV9oZWFkX2luaXQoJmhpdGxpc3QpOwotCWxpc3RfZm9yX2Vh Y2hfZW50cnkodSwgJmdjX2NhbmRpZGF0ZXMsIGxpbmspCi0Jc2Nhbl9jaGlsZHJlbigmdS0+c2ss IGluY19pbmZsaWdodCwgJmhpdGxpc3QpOwotCiAJc3Bpbl91bmxvY2soJnVuaXhfZ2NfbG9jayk7 CiAKIAkvKiBIZXJlIHdlIGFyZS4gSGl0bGlzdCBpcyBmaWxsZWQuIERpZS4gKi8KLS0gCjIuMS4w CgoKRnJvbSBjNTcxYmYyOWQyZjJhY2U3YzU2YWNjNGI1YTBhMGViYjFiYTBlMTdlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Qmo9QzM9Qjhybj0yME1vcms/PSA8Ympv cm5AbW9yay5ubz4KRGF0ZTogRnJpLCAxNyBNYXIgMjAxNyAxNzoyMDo0OCArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggMTAxLzExMl0gcW1pX3d3YW46IGFkZCBEZWxsIERXNTgxMWUKTUlNRS1WZXJzaW9u OiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJh bnNmZXItRW5jb2Rpbmc6IDhiaXQKClsgVXBzdHJlYW0gY29tbWl0IDZiZDg0NWQxY2Y5OGI0NWM2 MzRiYWFjYjgzODE0MzZkYWQzYzJkZDAgXQoKVGhpcyBpcyBhIERlbGwgYnJhbmRlZCBTaWVycmEg V2lyZWxlc3MgRU03NDU1LiBJdCBpcyBvcGVyYXRpbmcgaW4KTUJJTSBtb2RlIGJ5IGRlZmF1bHQs IGJ1dCBjYW4gYmUgY29uZmlndXJlZCB0byBwcm92aWRlIHR3byBRTUkvUk1ORVQKZnVuY3Rpb25z LgoKU2lnbmVkLW9mZi1ieTogQmrDuHJuIE1vcmsgPGJqb3JuQG1vcmsubm8+ClNpZ25lZC1vZmYt Ynk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25l dC91c2IvcW1pX3d3YW4uYyB8IDIgKysKIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykK CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC91c2IvcW1pX3d3YW4uYyBiL2RyaXZlcnMvbmV0L3Vz Yi9xbWlfd3dhbi5jCmluZGV4IDI0ZDUyNzIuLjBkNTE5YTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv bmV0L3VzYi9xbWlfd3dhbi5jCisrKyBiL2RyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jCkBAIC05 MjQsNiArOTI0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkIHByb2R1Y3Rz W10gPSB7CiAJe1FNSV9GSVhFRF9JTlRGKDB4NDEzYywgMHg4MWE5LCA4KX0sCS8qIERlbGwgV2ly ZWxlc3MgNTgwOGUgR29iaShUTSkgNEcgTFRFIE1vYmlsZSBCcm9hZGJhbmQgQ2FyZCAqLwogCXtR TUlfRklYRURfSU5URigweDQxM2MsIDB4ODFiMSwgOCl9LAkvKiBEZWxsIFdpcmVsZXNzIDU4MDll IEdvYmkoVE0pIDRHIExURSBNb2JpbGUgQnJvYWRiYW5kIENhcmQgKi8KIAl7UU1JX0ZJWEVEX0lO VEYoMHg0MTNjLCAweDgxYjMsIDgpfSwJLyogRGVsbCBXaXJlbGVzcyA1ODA5ZSBHb2JpKFRNKSA0 RyBMVEUgTW9iaWxlIEJyb2FkYmFuZCBDYXJkIChyZXYzKSAqLworCXtRTUlfRklYRURfSU5URigw eDQxM2MsIDB4ODFiNiwgOCl9LAkvKiBEZWxsIFdpcmVsZXNzIDU4MTFlICovCisJe1FNSV9GSVhF RF9JTlRGKDB4NDEzYywgMHg4MWI2LCAxMCl9LAkvKiBEZWxsIFdpcmVsZXNzIDU4MTFlICovCiAJ e1FNSV9GSVhFRF9JTlRGKDB4MDNmMCwgMHg0ZTFkLCA4KX0sCS8qIEhQIGx0NDExMSBMVEUvRVYt RE8vSFNQQSsgR29iaSA0RyBNb2R1bGUgKi8KIAl7UU1JX0ZJWEVEX0lOVEYoMHgyMmRlLCAweDkw NjEsIDMpfSwJLyogV2VUZWxlY29tIFdQRC02MDBOICovCiAJe1FNSV9GSVhFRF9JTlRGKDB4MWUw ZSwgMHg5MDAxLCA1KX0sCS8qIFNJTUNvbSA3MjMwRSAqLwotLSAKMi4xLjAKCgpGcm9tIDZhZTE1 YjJjZTIzNzBiZGRlNmE5MjhkZmIxOWRiZTFiOTI0YjJhZTMgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IERhdmlkIEFoZXJuIDxkc2FAY3VtdWx1c25ldHdvcmtzLmNvbT4KRGF0ZTogRnJp LCAxNyBNYXIgMjAxNyAxNjowNzoxMSAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMTAyLzExMl0gbmV0 OiB2cmY6IFJlc2V0IHJ0NmlfaWRldiBpbiBsb2NhbCBkc3QgYWZ0ZXIgcHV0CgpbIFVwc3RyZWFt IGNvbW1pdCAzZGM4NTdmMGU4ZmMyMjYxMGE1OWNiYjM0NmJhNjJjNmU5MjE4NjNmIF0KClRoZSBW UkYgZHJpdmVyIHRha2VzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbmV0Nl9kZXYgb24gdGhlIFZSRiBk ZXZpY2UgZm9yCml0cyBydDZfbG9jYWwgZHN0IHdoZW4gaGFuZGxpbmcgbG9jYWwgdHJhZmZpYyB0 aHJvdWdoIHRoZSBWUkYgZGV2aWNlIGFzCmEgbG9vcGJhY2suIFdoZW4gdGhlIGRldmljZSBpcyBk ZWxldGVkIHRoZSBkcml2ZXIgZG9lcyBhIHB1dCBvbiB0aGUgaWRldgpidXQgZG9lcyBub3QgcmVz ZXQgcnQ2aV9pZGV2IGluIHRoZSBydDZfaW5mbyBzdHJ1Y3QuIFdoZW4gdGhlIGRzdCBpcwpkZXN0 cm95ZWQsIGRzdF9kZXN0cm95IGNhbGxzIGlwNl9kc3RfZGVzdHJveSB3aGljaCBkb2VzIGEgc2Vj b25kIHB1dCBmb3IKd2hhdCBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSByZWZlcmVuY2UgY2F1c2lu ZyBpdCB0byBiZSBwcmVtYXR1cmVseSBmcmVlZC4KUmVzZXQgcnQ2aV9pZGV2IGFmdGVyIHRoZSBw dXQgaW4gdGhlIHZyZiBkcml2ZXIuCgpGaXhlczogYjQ4NjlhYTJmODgxZSAoIm5ldDogdnJmOiBp cHY2IHN1cHBvcnQgZm9yIGxvY2FsIHRyYWZmaWMgdG8KICAgICAgICAgICAgICAgICAgICAgICBs b2NhbCBhZGRyZXNzZXMiKQpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBBaGVybiA8ZHNhQGN1bXVsdXNu ZXR3b3Jrcy5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1s b2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC92cmYuYyB8IDQgKysrLQogMSBmaWxlIGNoYW5nZWQs IDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L3ZyZi5jIGIvZHJpdmVycy9uZXQvdnJmLmMKaW5kZXggYmM3NDRhYy4uYTJhZmI4ZSAxMDA2NDQK LS0tIGEvZHJpdmVycy9uZXQvdnJmLmMKKysrIGIvZHJpdmVycy9uZXQvdnJmLmMKQEAgLTQ2Nyw4 ICs0NjcsMTAgQEAgc3RhdGljIHZvaWQgdnJmX3J0Nl9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNl ICpkZXYsIHN0cnVjdCBuZXRfdnJmICp2cmYpCiAJfQogCiAJaWYgKHJ0Nl9sb2NhbCkgewotCQlp ZiAocnQ2X2xvY2FsLT5ydDZpX2lkZXYpCisJCWlmIChydDZfbG9jYWwtPnJ0NmlfaWRldikgewog CQkJaW42X2Rldl9wdXQocnQ2X2xvY2FsLT5ydDZpX2lkZXYpOworCQkJcnQ2X2xvY2FsLT5ydDZp X2lkZXYgPSBOVUxMOworCQl9CiAKIAkJZHN0ID0gJnJ0Nl9sb2NhbC0+ZHN0OwogCQlkZXZfcHV0 KGRzdC0+ZGV2KTsKLS0gCjIuMS4wCgoKRnJvbSA4N2I5MGRmMzhiMDI4Zjc5MjMxYTVmZjFhMWFm ZTMxYWUyMmU0MWFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBPciBHZXJsaXR6IDxv Z2VybGl0ekBtZWxsYW5veC5jb20+CkRhdGU6IFR1ZSwgMjEgTWFyIDIwMTcgMTU6NTk6MTIgKzAy MDAKU3ViamVjdDogW1BBVENIIDEwMy8xMTJdIG5ldC9tbHg1OiBBZGQgbWlzc2luZyBlbnRyaWVz IGZvciBzZXQvcXVlcnkgcmF0ZQogbGltaXQgY29tbWFuZHMKClsgVXBzdHJlYW0gY29tbWl0IDFm MzBhODZjNTgwOTMwNDZkYzNlNDljMjNkMjYxODg5NGUwOThmN2EgXQoKVGhlIHN3aXRjaCBjYXNl cyBmb3IgdGhlIHJhdGUgbGltaXQgc2V0IGFuZCBxdWVyeSBjb21tYW5kcyB3ZXJlCm1pc3Npbmcs IHdoaWNoIGNvdWxkIGdldCB1cyB3cm9uZyB1bmRlciBmdyBlcnJvciBvciBkcml2ZXIgcmVzZXQK ZmxvdywgZml4IHRoYXQuCgpGaXhlczogMTQ2NmNjNWIyM2QxICgnbmV0L21seDU6IFJhdGUgbGlt aXQgdGFibGVzIHN1cHBvcnQnKQpTaWduZWQtb2ZmLWJ5OiBPciBHZXJsaXR6IDxvZ2VybGl0ekBt ZWxsYW5veC5jb20+ClJldmlld2VkLWJ5OiBIYWRhciBIZW4gWmlvbiA8aGFkYXJoQG1lbGxhbm94 LmNvbT4KU2lnbmVkLW9mZi1ieTogU2FlZWQgTWFoYW1lZWQgPHNhZWVkbUBtZWxsYW5veC5jb20+ ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0t CiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMgfCA0ICsrKysK IDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5l dC9tZWxsYW5veC9tbHg1L2NvcmUvY21kLmMKaW5kZXggYmZlNDEwZS4uM2Y1MWE0NCAxMDA2NDQK LS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jCisrKyBi L2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9jbWQuYwpAQCAtMzY3LDYg KzM2Nyw4IEBAIHN0YXRpYyBpbnQgbWx4NV9pbnRlcm5hbF9lcnJfcmV0X3ZhbHVlKHN0cnVjdCBt bHg1X2NvcmVfZGV2ICpkZXYsIHUxNiBvcCwKIAljYXNlIE1MWDVfQ01EX09QX1FVRVJZX1ZQT1JU X0NPVU5URVI6CiAJY2FzZSBNTFg1X0NNRF9PUF9BTExPQ19RX0NPVU5URVI6CiAJY2FzZSBNTFg1 X0NNRF9PUF9RVUVSWV9RX0NPVU5URVI6CisJY2FzZSBNTFg1X0NNRF9PUF9TRVRfUkFURV9MSU1J VDoKKwljYXNlIE1MWDVfQ01EX09QX1FVRVJZX1JBVEVfTElNSVQ6CiAJY2FzZSBNTFg1X0NNRF9P UF9BTExPQ19QRDoKIAljYXNlIE1MWDVfQ01EX09QX0FMTE9DX1VBUjoKIAljYXNlIE1MWDVfQ01E X09QX0NPTkZJR19JTlRfTU9ERVJBVElPTjoKQEAgLTUwMCw2ICs1MDIsOCBAQCBjb25zdCBjaGFy ICptbHg1X2NvbW1hbmRfc3RyKGludCBjb21tYW5kKQogCU1MWDVfQ09NTUFORF9TVFJfQ0FTRShB TExPQ19RX0NPVU5URVIpOwogCU1MWDVfQ09NTUFORF9TVFJfQ0FTRShERUFMTE9DX1FfQ09VTlRF Uik7CiAJTUxYNV9DT01NQU5EX1NUUl9DQVNFKFFVRVJZX1FfQ09VTlRFUik7CisJTUxYNV9DT01N QU5EX1NUUl9DQVNFKFNFVF9SQVRFX0xJTUlUKTsKKwlNTFg1X0NPTU1BTkRfU1RSX0NBU0UoUVVF UllfUkFURV9MSU1JVCk7CiAJTUxYNV9DT01NQU5EX1NUUl9DQVNFKEFMTE9DX1BEKTsKIAlNTFg1 X0NPTU1BTkRfU1RSX0NBU0UoREVBTExPQ19QRCk7CiAJTUxYNV9DT01NQU5EX1NUUl9DQVNFKEFM TE9DX1VBUik7Ci0tIAoyLjEuMAoKCkZyb20gYzc0NmEzMTVlZjFmN2E4N2VlZjM4M2VkMGJhNzRm ZDc0ZDNiZTAzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogT3IgR2VybGl0eiA8b2dl cmxpdHpAbWVsbGFub3guY29tPgpEYXRlOiBUdWUsIDIxIE1hciAyMDE3IDE1OjU5OjE1ICswMjAw ClN1YmplY3Q6IFtQQVRDSCAxMDQvMTEyXSBuZXQvbWx4NWU6IFVzZSB0aGUgcHJvcGVyIFVBUEkg dmFsdWVzIHdoZW4gb2ZmbG9hZGluZwogVEMgdmxhbiBhY3Rpb25zCgpbIFVwc3RyZWFtIGNvbW1p dCAwOWM5MWRkZjJjZDMzNDg5YzJjMTRlZGZlZjQzYWUzOGQ0MTI4ODhlIF0KCkN1cnJlbnRseSB3 ZSB1c2UgdGhlIG5vbiBVQVBJIHZhbHVlcyBhbmQgd2UgbWlzcyBlcnJpbmcgb24KdGhlIG1vZGlm eSBhY3Rpb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCwgZml4IHRoYXQuCgpGaXhlczogOGIzMjU4 MGRmMWNiICgnbmV0L21seDVlOiBBZGQgVEMgdmxhbiBhY3Rpb24gZm9yIFNSSU9WIG9mZmxvYWRz JykKU2lnbmVkLW9mZi1ieTogT3IgR2VybGl0eiA8b2dlcmxpdHpAbWVsbGFub3guY29tPgpSZXBv cnRlZC1ieTogUGV0ciBNYWNoYXRhIDxwZXRybUBtZWxsYW5veC5jb20+ClJldmlld2VkLWJ5OiBK aXJpIFBpcmtvIDxqaXJpQG1lbGxhbm94LmNvbT4KU2lnbmVkLW9mZi1ieTogU2FlZWQgTWFoYW1l ZWQgPHNhZWVkbUBtZWxsYW5veC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8 ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9t bHg1L2NvcmUvZW5fdGMuYyB8IDYgKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25z KCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21l bGxhbm94L21seDUvY29yZS9lbl90Yy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv bWx4NS9jb3JlL2VuX3RjLmMKaW5kZXggYTU0M2VhNi4uM2ZkNDcxYSAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMKKysrIGIvZHJpdmVy cy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMKQEAgLTQyNywxNCArNDI3 LDE2IEBAIHN0YXRpYyBpbnQgcGFyc2VfdGNfZmRiX2FjdGlvbnMoc3RydWN0IG1seDVlX3ByaXYg KnByaXYsIHN0cnVjdCB0Y2ZfZXh0cyAqZXh0cywKIAkJfQogCiAJCWlmIChpc190Y2Zfdmxhbihh KSkgewotCQkJaWYgKHRjZl92bGFuX2FjdGlvbihhKSA9PSBWTEFOX0ZfUE9QKSB7CisJCQlpZiAo dGNmX3ZsYW5fYWN0aW9uKGEpID09IFRDQV9WTEFOX0FDVF9QT1ApIHsKIAkJCQlhdHRyLT5hY3Rp b24gfD0gTUxYNV9GTE9XX0NPTlRFWFRfQUNUSU9OX1ZMQU5fUE9QOwotCQkJfSBlbHNlIGlmICh0 Y2Zfdmxhbl9hY3Rpb24oYSkgPT0gVkxBTl9GX1BVU0gpIHsKKwkJCX0gZWxzZSBpZiAodGNmX3Zs YW5fYWN0aW9uKGEpID09IFRDQV9WTEFOX0FDVF9QVVNIKSB7CiAJCQkJaWYgKHRjZl92bGFuX3B1 c2hfcHJvdG8oYSkgIT0gaHRvbnMoRVRIX1BfODAyMVEpKQogCQkJCQlyZXR1cm4gLUVPUE5PVFNV UFA7CiAKIAkJCQlhdHRyLT5hY3Rpb24gfD0gTUxYNV9GTE9XX0NPTlRFWFRfQUNUSU9OX1ZMQU5f UFVTSDsKIAkJCQlhdHRyLT52bGFuID0gdGNmX3ZsYW5fcHVzaF92aWQoYSk7CisJCQl9IGVsc2Ug eyAvKiBhY3Rpb24gaXMgVENBX1ZMQU5fQUNUX01PRElGWSAqLworCQkJCXJldHVybiAtRU9QTk9U U1VQUDsKIAkJCX0KIAkJCWNvbnRpbnVlOwogCQl9Ci0tIAoyLjEuMAoKCkZyb20gMjNmNjAwM2Fm NDY5OGMyMzhlNDRmMWY0MjAxYTYxYzM0MTdmODgwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogTWFvciBHb3R0bGllYiA8bWFvcmdAbWVsbGFub3guY29tPgpEYXRlOiBUdWUsIDIxIE1h ciAyMDE3IDE1OjU5OjE3ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxMDUvMTEyXSBuZXQvbWx4NTog SW5jcmVhc2UgbnVtYmVyIG9mIG1heCBRUHMgaW4gZGVmYXVsdAogcHJvZmlsZQoKWyBVcHN0cmVh bSBjb21taXQgNWY0MGI0ZWQ5NzVjMjYwMTZjZjQxOTUzYjc1MTBmZTkwNzE4ZTIxYyBdCgpXaXRo IENvbm5lY3RYLTQgc2hhcmluZyBTUlFzIGZyb20gdGhlIHNhbWUgc3BhY2UgYXMgUVBzLCB3ZSBo aXQgYQpsaW1pdCBwcmV2ZW50aW5nIHNvbWUgYXBwbGljYXRpb25zIHRvIGFsbG9jYXRlIG5lZWRl ZCBRUHMgYW1vdW50LgpEb3VibGUgdGhlIHNpemUgdG8gMjU2Sy4KCkZpeGVzOiBlMTI2YmE5N2Ri YTllICgnbWx4NTogQWRkIGRyaXZlciBmb3IgTWVsbGFub3ggQ29ubmVjdC1JQiBhZGFwdGVycycp ClNpZ25lZC1vZmYtYnk6IE1hb3IgR290dGxpZWIgPG1hb3JnQG1lbGxhbm94LmNvbT4KU2lnbmVk LW9mZi1ieTogU2FlZWQgTWFoYW1lZWQgPHNhZWVkbUBtZWxsYW5veC5jb20+ClNpZ25lZC1vZmYt Ynk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVy bmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMKaW5kZXggMGM5ZWY4Ny4uN2ExOTZhMCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYwor KysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jCkBAIC04 Nyw3ICs4Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgbWx4NV9wcm9maWxlIHByb2ZpbGVbXSA9IHsKIAlb Ml0gPSB7CiAJCS5tYXNrCQk9IE1MWDVfUFJPRl9NQVNLX1FQX1NJWkUgfAogCQkJCSAgTUxYNV9Q Uk9GX01BU0tfTVJfQ0FDSEUsCi0JCS5sb2dfbWF4X3FwCT0gMTcsCisJCS5sb2dfbWF4X3FwCT0g MTgsCiAJCS5tcl9jYWNoZVswXQk9IHsKIAkJCS5zaXplCT0gNTAwLAogCQkJLmxpbWl0CT0gMjUw Ci0tIAoyLjEuMAoKCkZyb20gNzIwYjMwYzE3MzhhN2I0YTRmNjAzZGQ3ODk1ZDMzNWE4OTBjNGQx NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogR2FsIFByZXNzbWFuIDxnYWxwQG1lbGxh bm94LmNvbT4KRGF0ZTogVHVlLCAyMSBNYXIgMjAxNyAxNTo1OToxOCArMDIwMApTdWJqZWN0OiBb UEFUQ0ggMTA2LzExMl0gbmV0L21seDVlOiBDb3VudCBHU08gcGFja2V0cyBjb3JyZWN0bHkKClsg VXBzdHJlYW0gY29tbWl0IGQzYTRlNGRhNTRjN2FkYjQyMGQ1ZjQ4ZTg5YmU5MTNiMTRiZGVmZjEg XQoKVFggcGFja2V0cyBzdGF0aXN0aWNzICgndHhfcGFja2V0cycgY291bnRlcikgdXNlZCB0byBj b3VudCBHU08gcGFja2V0cwphcyBvbmUsIGV2ZW4gdGhvdWdoIGl0IGNvbnRhaW5zIG11bHRpcGxl IHNlZ21lbnRzLgpUaGlzIHBhdGNoIHdpbGwgaW5jcmVtZW50IHRoZSBjb3VudGVyIGJ5IHRoZSBu dW1iZXIgb2Ygc2VnbWVudHMsIGFuZAphbGlnbiB0aGUgZHJpdmVyIHdpdGggdGhlIGJlaGF2aW9y IG9mIG90aGVyIGRyaXZlcnMgaW4gdGhlIHN0YWNrLgoKTm90ZSB0aGF0IG5vIGluZm9ybWF0aW9u IGlzIGxvc3QgaW4gdGhpcyBwYXRjaCBkdWUgdG8gJ3R4X3Rzb19wYWNrZXRzJwpjb3VudGVyIGV4 aXN0ZW5jZS4KCkJlZm9yZSwgZXRodG9vbCBzaG93ZWQ6CiQgZXRodG9vbCAtUyBlbnM2IHwgZWdy ZXAgInR4X3BhY2tldHN8dHhfdHNvX3BhY2tldHMiCiAgICAgdHhfcGFja2V0czogNjEzNDAKICAg ICB0eF90c29fcGFja2V0czogNjA5NTQKICAgICB0eF9wYWNrZXRzX3BoeTogMjQ1MTExNQoKTm93 LCB3ZSB3aWxsIHNlZSB0aGUgbW9yZSBsb2dpY2FsIHN0YXRpc3RpY3M6CiQgZXRodG9vbCAtUyBl bnM2IHwgZWdyZXAgInR4X3BhY2tldHN8dHhfdHNvX3BhY2tldHMiCiAgICAgdHhfcGFja2V0czog MjQ1MTExNQogICAgIHR4X3Rzb19wYWNrZXRzOiA2MDk1NAogICAgIHR4X3BhY2tldHNfcGh5OiAy NDUxMTE1CgpGaXhlczogZTU4NmIzYjBiYWVlICgibmV0L21seDU6IEV0aGVybmV0IERhdGFwYXRo IGZpbGVzIikKU2lnbmVkLW9mZi1ieTogR2FsIFByZXNzbWFuIDxnYWxwQG1lbGxhbm94LmNvbT4K Q2M6IGtlcm5lbC10ZWFtQGZiLmNvbQpTaWduZWQtb2ZmLWJ5OiBTYWVlZCBNYWhhbWVlZCA8c2Fl ZWRtQG1lbGxhbm94LmNvbT4KQWNrZWQtYnk6IEFsZXhlaSBTdGFyb3ZvaXRvdiA8YXN0QGtlcm5l bC5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5l dD4KLS0tCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHguYyB8 IDUgKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vu X3R4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHguYwpp bmRleCBjZmI2ODM3Li41NzQzMTEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9t ZWxsYW5veC9tbHg1L2NvcmUvZW5fdHguYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg1L2NvcmUvZW5fdHguYwpAQCAtMjcyLDE1ICsyNzIsMTggQEAgc3RhdGljIG5ldGRl dl90eF90IG1seDVlX3NxX3htaXQoc3RydWN0IG1seDVlX3NxICpzcSwgc3RydWN0IHNrX2J1ZmYg KnNrYikKIAkJCXNxLT5zdGF0cy50c29fYnl0ZXMgKz0gc2tiLT5sZW4gLSBpaHM7CiAJCX0KIAor CQlzcS0+c3RhdHMucGFja2V0cyArPSBza2Jfc2hpbmZvKHNrYiktPmdzb19zZWdzOwogCQludW1f Ynl0ZXMgPSBza2ItPmxlbiArIChza2Jfc2hpbmZvKHNrYiktPmdzb19zZWdzIC0gMSkgKiBpaHM7 CiAJfSBlbHNlIHsKIAkJYmYgPSBzcS0+YmZfYnVkZ2V0ICYmCiAJCSAgICAgIXNrYi0+eG1pdF9t b3JlICYmCiAJCSAgICAgIXNrYl9zaGluZm8oc2tiKS0+bnJfZnJhZ3M7CiAJCWlocyA9IG1seDVl X2dldF9pbmxpbmVfaGRyX3NpemUoc3EsIHNrYiwgYmYpOworCQlzcS0+c3RhdHMucGFja2V0cysr OwogCQludW1fYnl0ZXMgPSBtYXhfdCh1bnNpZ25lZCBpbnQsIHNrYi0+bGVuLCBFVEhfWkxFTik7 CiAJfQogCisJc3EtPnN0YXRzLmJ5dGVzICs9IG51bV9ieXRlczsKIAl3aS0+bnVtX2J5dGVzID0g bnVtX2J5dGVzOwogCiAJaWYgKHNrYl92bGFuX3RhZ19wcmVzZW50KHNrYikpIHsKQEAgLTM3Nyw4 ICszODAsNiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgbWx4NWVfc3FfeG1pdChzdHJ1Y3QgbWx4NWVf c3EgKnNxLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCWlmIChiZikKIAkJc3EtPmJmX2J1ZGdldC0t OwogCi0Jc3EtPnN0YXRzLnBhY2tldHMrKzsKLQlzcS0+c3RhdHMuYnl0ZXMgKz0gbnVtX2J5dGVz OwogCXJldHVybiBORVRERVZfVFhfT0s7CiAKIGRtYV91bm1hcF93cWVfZXJyOgotLSAKMi4xLjAK CgpGcm9tIGNhY2YxOGNhNDc0NTdjZDUxNzA5NzUyMWNkNTE4NzZmOTE5OTI1NWQgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IEdhbCBQcmVzc21hbiA8Z2FscEBtZWxsYW5veC5jb20+CkRh dGU6IFR1ZSwgMjEgTWFyIDIwMTcgMTU6NTk6MTkgKzAyMDAKU3ViamVjdDogW1BBVENIIDEwNy8x MTJdIG5ldC9tbHg1ZTogQ291bnQgTFJPIHBhY2tldHMgY29ycmVjdGx5CgpbIFVwc3RyZWFtIGNv bW1pdCA4YWI3ZTJhZTE1ZDg0YmE3NThiMmM4YzZmNDA3NTcyMmU5YmQyYTA4IF0KClJYIHBhY2tl dHMgc3RhdGlzdGljcyAoJ3J4X3BhY2tldHMnIGNvdW50ZXIpIHVzZWQgdG8gY291bnQgTFJPIHBh Y2tldHMKYXMgb25lLCBldmVuIHRob3VnaCBpdCBjb250YWlucyBtdWx0aXBsZSBzZWdtZW50cy4K VGhpcyBwYXRjaCB3aWxsIGluY3JlbWVudCB0aGUgY291bnRlciBieSB0aGUgbnVtYmVyIG9mIHNl Z21lbnRzLCBhbmQKYWxpZ24gdGhlIGRyaXZlciB3aXRoIHRoZSBiZWhhdmlvciBvZiBvdGhlciBk cml2ZXJzIGluIHRoZSBzdGFjay4KCk5vdGUgdGhhdCBubyBpbmZvcm1hdGlvbiBpcyBsb3N0IGlu IHRoaXMgcGF0Y2ggZHVlIHRvICdyeF9scm9fcGFja2V0cycKY291bnRlciBleGlzdGVuY2UuCgpC ZWZvcmUsIGV0aHRvb2wgc2hvd2VkOgokIGV0aHRvb2wgLVMgZW5zNiB8IGVncmVwICJyeF9wYWNr ZXRzfHJ4X2xyb19wYWNrZXRzIgogICAgIHJ4X3BhY2tldHM6IDQzNTI3NwogICAgIHJ4X2xyb19w YWNrZXRzOiAzNTg0NwogICAgIHJ4X3BhY2tldHNfcGh5OiAxOTM1MDY2CgpOb3csIHdlIHdpbGwg c2VlIHRoZSBtb3JlIGxvZ2ljYWwgc3RhdGlzdGljczoKJCBldGh0b29sIC1TIGVuczYgfCBlZ3Jl cCAicnhfcGFja2V0c3xyeF9scm9fcGFja2V0cyIKICAgICByeF9wYWNrZXRzOiAxOTM1MDY2CiAg ICAgcnhfbHJvX3BhY2tldHM6IDM1ODQ3CiAgICAgcnhfcGFja2V0c19waHk6IDE5MzUwNjYKCkZp eGVzOiBlNTg2YjNiMGJhZWUgKCJuZXQvbWx4NTogRXRoZXJuZXQgRGF0YXBhdGggZmlsZXMiKQpT aWduZWQtb2ZmLWJ5OiBHYWwgUHJlc3NtYW4gPGdhbHBAbWVsbGFub3guY29tPgpDYzoga2VybmVs LXRlYW1AZmIuY29tClNpZ25lZC1vZmYtYnk6IFNhZWVkIE1haGFtZWVkIDxzYWVlZG1AbWVsbGFu b3guY29tPgpBY2tlZC1ieTogQWxleGVpIFN0YXJvdm9pdG92IDxhc3RAa2VybmVsLm9yZz4KU2ln bmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGRy aXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jIHwgNCArKysrCiAx IGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQv ZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5l dC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYwppbmRleCA3OTZiZGYwLi43MzA5YWUzIDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYwor KysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYwpAQCAt NjAyLDYgKzYwMiwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgbWx4NWVfYnVpbGRfcnhfc2tiKHN0 cnVjdCBtbHg1X2NxZTY0ICpjcWUsCiAJaWYgKGxyb19udW1fc2VnID4gMSkgewogCQltbHg1ZV9s cm9fdXBkYXRlX2hkcihza2IsIGNxZSwgY3FlX2JjbnQpOwogCQlza2Jfc2hpbmZvKHNrYiktPmdz b19zaXplID0gRElWX1JPVU5EX1VQKGNxZV9iY250LCBscm9fbnVtX3NlZyk7CisJCS8qIFN1YnRy YWN0IG9uZSBzaW5jZSB3ZSBhbHJlYWR5IGNvdW50ZWQgdGhpcyBhcyBvbmUKKwkJICogInJlZ3Vs YXIiIHBhY2tldCBpbiBtbHg1ZV9jb21wbGV0ZV9yeF9jcWUoKQorCQkgKi8KKwkJcnEtPnN0YXRz LnBhY2tldHMgKz0gbHJvX251bV9zZWcgLSAxOwogCQlycS0+c3RhdHMubHJvX3BhY2tldHMrKzsK IAkJcnEtPnN0YXRzLmxyb19ieXRlcyArPSBjcWVfYmNudDsKIAl9Ci0tIAoyLjEuMAoKCkZyb20g MjQ5Y2JiYTc0NDE5MWMwZDUxMWM2ZWU5YTY1ZDUwNDA0ZGFjMTU1ZiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogQWxleGFuZGVyIFBvdGFwZW5rbyA8Z2xpZGVyQGdvb2dsZS5jb20+CkRh dGU6IFR1ZSwgMjEgTWFyIDIwMTcgMTc6MTQ6MjcgKzAxMDAKU3ViamVjdDogW1BBVENIIDEwOC8x MTJdIGlwdjY6IG1ha2Ugc3VyZSB0byBpbml0aWFsaXplIHNvY2tjLnRzZmxhZ3MgYmVmb3JlCiBm aXJzdCB1c2UKClsgVXBzdHJlYW0gY29tbWl0IGQ1MTU2ODRkNzgxNDg4ODRkNWZjNDI1YmE5MDRj NTBmMDM4NDQwMjAgXQoKSW4gdGhlIGNhc2UgdWRwX3NrKHNrKS0+cGVuZGluZyBpcyBBRl9JTkVU NiwgdWRwdjZfc2VuZG1zZygpIHdvdWxkCmp1bXAgdG8gZG9fYXBwZW5kX2RhdGEsIHNraXBwaW5n IHRoZSBpbml0aWFsaXphdGlvbiBvZiBzb2NrYy50c2ZsYWdzLgpGaXggdGhlIHByb2JsZW0gYnkg bW92aW5nIHNvY2tjLnRzZmxhZ3MgaW5pdGlhbGl6YXRpb24gZWFybGllci4KClRoZSBidWcgd2Fz IGRldGVjdGVkIHdpdGggS01TQU4uCgpGaXhlczogYzE0YWM5NDUxYzM0ICgic29jazogZW5hYmxl IHRpbWVzdGFtcGluZyB1c2luZyBjb250cm9sIG1lc3NhZ2VzIikKU2lnbmVkLW9mZi1ieTogQWxl eGFuZGVyIFBvdGFwZW5rbyA8Z2xpZGVyQGdvb2dsZS5jb20+CkFja2VkLWJ5OiBTb2hlaWwgSGFz c2FzIFllZ2FuZWggPHNvaGVpbEBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBN aWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2lwdjYvdWRwLmMgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9uZXQvaXB2Ni91ZHAuYyBiL25ldC9pcHY2L3VkcC5jCmluZGV4IGU0YTgwMDAuLjQwYTI4OWYg MTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3VkcC5jCisrKyBiL25ldC9pcHY2L3VkcC5jCkBAIC0xMDM3 LDYgKzEwMzcsNyBAQCBpbnQgdWRwdjZfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBt c2doZHIgKm1zZywgc2l6ZV90IGxlbikKIAlpcGM2LmhsaW1pdCA9IC0xOwogCWlwYzYudGNsYXNz ID0gLTE7CiAJaXBjNi5kb250ZnJhZyA9IC0xOworCXNvY2tjLnRzZmxhZ3MgPSBzay0+c2tfdHNm bGFnczsKIAogCS8qIGRlc3RpbmF0aW9uIGFkZHJlc3MgY2hlY2sgKi8KIAlpZiAoc2luNikgewpA QCAtMTE1Niw3ICsxMTU3LDYgQEAgaW50IHVkcHY2X3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBz dHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4pCiAJCWZsNi5mbG93aTZfb2lmID0gbnAtPnN0 aWNreV9wa3RpbmZvLmlwaTZfaWZpbmRleDsKIAogCWZsNi5mbG93aTZfbWFyayA9IHNrLT5za19t YXJrOwotCXNvY2tjLnRzZmxhZ3MgPSBzay0+c2tfdHNmbGFnczsKIAogCWlmIChtc2ctPm1zZ19j b250cm9sbGVuKSB7CiAJCW9wdCA9ICZvcHRfc3BhY2U7Ci0tIAoyLjEuMAoKCkZyb20gNDJkZmZj YTFhM2VmZmMwMTA1NDU2NTA1MTRlY2ZhMzkxMWEzNjVmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogRG91ZyBCZXJnZXIgPG9wZW5kbWJAZ21haWwuY29tPgpEYXRlOiBUdWUsIDIxIE1h ciAyMDE3IDE0OjAxOjA2IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAxMDkvMTEyXSBuZXQ6IGJjbWdl bmV0OiByZW1vdmUgYmNtZ2VuZXRfaW50ZXJuYWxfcGh5X3NldHVwKCkKClsgVXBzdHJlYW0gY29t bWl0IDMxNzM5ZWFlNzM4Y2NiZThiOWQ2MjdjM2YyMjUxMDE3Y2EwM2Y0ZDIgXQoKQ29tbWl0IDZh YzNjZTgyOTVlNiAoIm5ldDogYmNtZ2VuZXQ6IFJlbW92ZSBleGNlc3NpdmUgUEhZIHJlc2V0IikK cmVtb3ZlZCB0aGUgYmNtZ2VuZXRfbWlpX3Jlc2V0KCkgZnVuY3Rpb24gZnJvbSBiY21nZW5ldF9w b3dlcl91cCgpIGFuZApiY21nZW5ldF9pbnRlcm5hbF9waHlfc2V0dXAoKSBmdW5jdGlvbnMuICBJ biBzbyBkb2luZyBpdCBicm9rZSB0aGUgcmVzZXQKb2YgdGhlIGludGVybmFsIFBIWSBkZXZpY2Vz IHVzZWQgYnkgdGhlIEdFTkVUdjEtR0VORVR2MyB3aGljaCByZXF1aXJlZAp0aGlzIHJlc2V0IGJl Zm9yZSB0aGUgVW5pTUFDIHdhcyBlbmFibGVkLiAgSXQgYWxzbyBicm9rZSB0aGUgaW50ZXJuYWwK R1BIWSBkZXZpY2VzIHVzZWQgYnkgdGhlIEdFTkVUdjQgYmVjYXVzZSB0aGUgY29uZmlnX2luaXQg dGhhdCBpbnN0YWxsZWQKdGhlIEFGRSB3b3JrYXJvdW5kIHdhcyBubyBsb25nZXIgb2NjdXJyaW5n IGFmdGVyIHRoZSByZXNldCBvZiB0aGUgR1BIWQpwZXJmb3JtZWQgYnkgYmNtZ2VuZXRfcGh5X3Bv d2VyX3NldCgpIGluIGJjbWdlbmV0X2ludGVybmFsX3BoeV9zZXR1cCgpLgpJbiBhZGRpdGlvbiB0 aGUgY29kZSBpbiBiY21nZW5ldF9pbnRlcm5hbF9waHlfc2V0dXAoKSByZWxhdGVkIHRvIHRoZQoi ZW5hYmxlIEFQRCIgY29tbWVudCBnb2VzIHdpdGggdGhlIGJjbWdlbmV0X21paV9yZXNldCgpIHNv IGl0IHNob3VsZApoYXZlIGFsc28gYmVlbiByZW1vdmVkLgoKQ29tbWl0IGJkNDA2MGE2MTA4YiAo Im5ldDogYmNtZ2VuZXQ6IFBvd2VyIG9uIGludGVncmF0ZWQgR1BIWSBpbgpiY21nZW5ldF9wb3dl cl91cCgpIikgbW92ZWQgdGhlIGJjbWdlbmV0X3BoeV9wb3dlcl9zZXQoKSBjYWxsIHRvIHRoZQpi Y21nZW5ldF9wb3dlcl91cCgpIGZ1bmN0aW9uLCBidXQgZmFpbGVkIHRvIHJlbW92ZSBpdCBmcm9t IHRoZQpiY21nZW5ldF9pbnRlcm5hbF9waHlfc2V0dXAoKSBmdW5jdGlvbi4gIEhhZCBpdCBkb25l IHNvLCB0aGUKYmNtZ2VuZXRfaW50ZXJuYWxfcGh5X3NldHVwKCkgZnVuY3Rpb24gd291bGQgaGF2 ZSBiZWVuIGVtcHR5IGFuZCBjb3VsZApoYXZlIGJlZW4gcmVtb3ZlZCBhdCB0aGF0IHRpbWUuCgpD b21taXQgNWRiZWJiYjQ0YTZhICgibmV0OiBiY21nZW5ldDogU29mdHdhcmUgcmVzZXQgRVBIWSBh ZnRlciBwb3dlciBvbiIpCndhcyBzdWJtaXR0ZWQgdG8gY29ycmVjdCB0aGUgZnVuY3Rpb25hbCBw cm9ibGVtcyBpbnRyb2R1Y2VkIGJ5CmNvbW1pdCA2YWMzY2U4Mjk1ZTYgKCJuZXQ6IGJjbWdlbmV0 OiBSZW1vdmUgZXhjZXNzaXZlIFBIWSByZXNldCIpLiBJdAp3YXMgaW5jbHVkZWQgaW4gdjQuNCBh bmQgbWFkZSBhdmFpbGFibGUgb24gNC4zLXN0YWJsZS4gVW5mb3J0dW5hdGVseSwKaXQgZGlkbid0 IGZ1bGx5IHJldmVydCB0aGUgY29tbWl0IGJlY2F1c2UgdGhpcyBiY21nZW5ldF9taWlfcmVzZXQo KQpkb2Vzbid0IGFwcGx5IHRoZSBzb2Z0IHJlc2V0IHRvIHRoZSBpbnRlcm5hbCBHUEhZIHVzZWQg YnkgR0VORVR2NCBsaWtlCnRoZSBwcmV2aW91cyBvbmUgZGlkLiBUaGlzIHByZXZlbnRzIHRoZSBy ZXN0b3JhdGlvbiBvZiB0aGUgQUZFIHdvcmstCmFyb3VuZHMgZm9yIGludGVybmFsIEdQSFkgZGV2 aWNlcyBhZnRlciB0aGUgYmNtZ2VuZXRfcGh5X3Bvd2VyX3NldCgpIGluCmJjbWdlbmV0X2ludGVy bmFsX3BoeV9zZXR1cCgpLgoKVGhpcyBjb21taXQgdGFrZXMgdGhlIGFsdGVybmF0ZSBhcHByb2Fj aCBvZiByZW1vdmluZyB0aGUgdW5uZWNlc3NhcnkKYmNtZ2VuZXRfaW50ZXJuYWxfcGh5X3NldHVw KCkgZnVuY3Rpb24gd2hpY2ggc2hvdWxkbid0IGhhdmUgYmVlbiBpbiB2NC4zCnNvIHRoYXQgd2hl biBiY21nZW5ldF9taWlfcmVzZXQoKSB3YXMgcmVzdG9yZWQgaXQgc2hvdWxkIGhhdmUgb25seSBn b25lCmludG8gYmNtZ2VuZXRfcG93ZXJfdXAoKS4gIFRoaXMgd2lsbCBhdm9pZCB0aGUgcHJvYmxl bXMgd2hpbGUgYWxzbwpyZW1vdmluZyB0aGUgcmVkdW5kYW5jeSAoYW5kIGhvcGVmdWxseSBzb21l IG9mIHRoZSBjb25mdXNpb24pLgoKRml4ZXM6IDZhYzNjZTgyOTVlNiAoIm5ldDogYmNtZ2VuZXQ6 IFJlbW92ZSBleGNlc3NpdmUgUEhZIHJlc2V0IikKU2lnbmVkLW9mZi1ieTogRG91ZyBCZXJnZXIg PG9wZW5kbWJAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogRmxvcmlhbiBGYWluZWxsaSA8Zi5mYWlu ZWxsaUBnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2 ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21t aWkuYyB8IDE1IC0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1p aS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMKaW5kZXgg ZTg3NjA3Ni4uMmY5MjgxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRj b20vZ2VuZXQvYmNtbWlpLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2Vu ZXQvYmNtbWlpLmMKQEAgLTIyMCwyMCArMjIwLDYgQEAgdm9pZCBiY21nZW5ldF9waHlfcG93ZXJf c2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgZW5hYmxlKQogCXVkZWxheSg2MCk7CiB9 CiAKLXN0YXRpYyB2b2lkIGJjbWdlbmV0X2ludGVybmFsX3BoeV9zZXR1cChzdHJ1Y3QgbmV0X2Rl dmljZSAqZGV2KQotewotCXN0cnVjdCBiY21nZW5ldF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYo ZGV2KTsKLQl1MzIgcmVnOwotCi0JLyogUG93ZXIgdXAgUEhZICovCi0JYmNtZ2VuZXRfcGh5X3Bv d2VyX3NldChkZXYsIHRydWUpOwotCS8qIGVuYWJsZSBBUEQgKi8KLQlyZWcgPSBiY21nZW5ldF9l eHRfcmVhZGwocHJpdiwgRVhUX0VYVF9QV1JfTUdNVCk7Ci0JcmVnIHw9IEVYVF9QV1JfRE5fRU5f TEQ7Ci0JYmNtZ2VuZXRfZXh0X3dyaXRlbChwcml2LCByZWcsIEVYVF9FWFRfUFdSX01HTVQpOwot CWJjbWdlbmV0X21paV9yZXNldChkZXYpOwotfQotCiBzdGF0aWMgdm9pZCBiY21nZW5ldF9tb2Nh X3BoeV9zZXR1cChzdHJ1Y3QgYmNtZ2VuZXRfcHJpdiAqcHJpdikKIHsKIAl1MzIgcmVnOwpAQCAt MjgxLDcgKzI2Nyw2IEBAIGludCBiY21nZW5ldF9taWlfY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNl ICpkZXYpCiAKIAkJaWYgKHByaXYtPmludGVybmFsX3BoeSkgewogCQkJcGh5X25hbWUgPSAiaW50 ZXJuYWwgUEhZIjsKLQkJCWJjbWdlbmV0X2ludGVybmFsX3BoeV9zZXR1cChkZXYpOwogCQl9IGVs c2UgaWYgKHByaXYtPnBoeV9pbnRlcmZhY2UgPT0gUEhZX0lOVEVSRkFDRV9NT0RFX01PQ0EpIHsK IAkJCXBoeV9uYW1lID0gIk1vQ0EiOwogCQkJYmNtZ2VuZXRfbW9jYV9waHlfc2V0dXAocHJpdik7 Ci0tIAoyLjEuMAoKCkZyb20gNzJlNGYzZWIwMGFjODhhOTY0M2VkMjBmMGM0MDhlZTM5MmM5NjMx MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBn b29nbGUuY29tPgpEYXRlOiBUdWUsIDIxIE1hciAyMDE3IDE5OjIyOjI4IC0wNzAwClN1YmplY3Q6 IFtQQVRDSCAxMTAvMTEyXSBpcHY0OiBwcm92aWRlIHN0cm9uZ2VyIHVzZXIgaW5wdXQgdmFsaWRh dGlvbiBpbgogbmxfZmliX2lucHV0KCkKClsgVXBzdHJlYW0gY29tbWl0IGM2NGMwYjNjYWM0YzVi OGNiMDkzNzI3ZDJjMTk3NDNlYTM5NjVjMGIgXQoKQWxleGFuZGVyIHJlcG9ydGVkIGEgS01TQU4g c3BsYXQgY2F1c2VkIGJ5IHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQKZmllbGQgKHRiX2lkX2luKSBm cm9tIHVzZXIgcHJvdmlkZWQgc3RydWN0IGZpYl9yZXN1bHRfbmwKCkl0IHR1cm5zIG91dCBubF9m aWJfaW5wdXQoKSBzYW5pdHkgdGVzdHMgb24gdXNlciBpbnB1dCBpcyBhIGJpdAp3cm9uZyA6CgpV c2VyIGNhbiBwcmV0ZW5kIG5saC0+bmxtc2dfbGVuIGlzIGJpZyBlbm91Z2gsIGJ1dCBwcm92aWRl CmF0IHNlbmRtc2coKSB0aW1lIGEgdG9vIHNtYWxsIGJ1ZmZlci4KClJlcG9ydGVkLWJ5OiBBbGV4 YW5kZXIgUG90YXBlbmtvIDxnbGlkZXJAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogRXJpYyBE dW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxs ZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2lwdjQvZmliX2Zyb250ZW5kLmMgfCAz ICsrLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5jIGIvbmV0L2lwdjQvZmliX2Zyb250ZW5k LmMKaW5kZXggNWIwM2Q3Zi4uNjc4OWU0OCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvZmliX2Zyb250 ZW5kLmMKKysrIGIvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmMKQEAgLTEwODEsNyArMTA4MSw4IEBA IHN0YXRpYyB2b2lkIG5sX2ZpYl9pbnB1dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCiAJbmV0ID0g c29ja19uZXQoc2tiLT5zayk7CiAJbmxoID0gbmxtc2dfaGRyKHNrYik7Ci0JaWYgKHNrYi0+bGVu IDwgTkxNU0dfSERSTEVOIHx8IHNrYi0+bGVuIDwgbmxoLT5ubG1zZ19sZW4gfHwKKwlpZiAoc2ti LT5sZW4gPCBubG1zZ190b3RhbF9zaXplKHNpemVvZigqZnJuKSkgfHwKKwkgICAgc2tiLT5sZW4g PCBubGgtPm5sbXNnX2xlbiB8fAogCSAgICBubG1zZ19sZW4obmxoKSA8IHNpemVvZigqZnJuKSkK IAkJcmV0dXJuOwogCi0tIAoyLjEuMAoKCkZyb20gYjRlOTAwZTg1MTBiODIzMmVkYzkxN2FjM2Zj NzI3OTEwMGQ4MTlkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRGFuaWVsIEJvcmtt YW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KRGF0ZTogV2VkLCAyMiBNYXIgMjAxNyAxMzowODow OCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMTExLzExMl0gc29ja2V0LCBicGY6IGZpeCBza19maWx0 ZXIgdXNlIGFmdGVyIGZyZWUgaW4KIHNrX2Nsb25lX2xvY2sKClsgVXBzdHJlYW0gY29tbWl0IGE5 N2U1MGNjNGNiNjdlMWU3YmZmNTZmNmI0MWNkYTYyY2E4MzIzMzYgXQoKSW4gc2tfY2xvbmVfbG9j aygpLCB3ZSBjcmVhdGUgYSBuZXcgc29ja2V0IGFuZCBpbmhlcml0IG1vc3Qgb2YgdGhlCnBhcmVu dCdzIG1lbWJlcnMgdmlhIHNvY2tfY29weSgpIHdoaWNoIG1lbWNweSgpJ3MgdmFyaW91cyBzZWN0 aW9ucy4KTm93LCBpbiBjYXNlIHRoZSBwYXJlbnQgc29ja2V0IGhhZCBhIEJQRiBzb2NrZXQgZmls dGVyIGF0dGFjaGVkLAp0aGVuIG5ld3NrLT5za19maWx0ZXIgcG9pbnRzIHRvIHRoZSBzYW1lIGlu c3RhbmNlIGFzIHRoZSBvcmlnaW5hbApzay0+c2tfZmlsdGVyLgoKc2tfZmlsdGVyX2NoYXJnZSgp IGlzIHRoZW4gY2FsbGVkIG9uIHRoZSBuZXdzay0+c2tfZmlsdGVyIHRvIHRha2UgYQpyZWZlcmVu Y2UgYW5kIHNob3VsZCB0aGF0IGZhaWwgZHVlIHRvIGhpdHRpbmcgbWF4IG9wdG1lbSwgd2UgYmFp bApvdXQgYW5kIHJlbGVhc2UgdGhlIG5ld3NrIGluc3RhbmNlLgoKVGhlIGlzc3VlIGlzIHRoYXQg Y29tbWl0IDI3ODU3MWJhY2EyYSAoIm5ldDogZmlsdGVyOiBzaW1wbGlmeSBzb2NrZXQKY2hhcmdp bmciKSB3cm9uZ2x5IGNvbWJpbmVkIHRoZSBkaXNtYW50bGUgcGF0aCB3aXRoIHRoZSBmYWlsdXJl IHBhdGgKb2YgeGZybV9za19jbG9uZV9wb2xpY3koKS4gVGhpcyBtZWFucywgZXZlbiB3aGVuIGNo YXJnaW5nIGZhaWxlZCwgd2UKY2FsbCBza19mcmVlX3VubG9ja19jbG9uZSgpIG9uIHRoZSBuZXdz aywgd2hpY2ggdGhlbiBzdGlsbCBwb2ludHMgdG8KdGhlIHNhbWUgc2tfZmlsdGVyIGFzIHRoZSBv cmlnaW5hbCBzay4KClRodXMsIHNrX2ZyZWVfdW5sb2NrX2Nsb25lKCkgY2FsbHMgaW50byBfX3Nr X2Rlc3RydWN0KCkgZXZlbnR1YWxseQp3aGVyZSBpdCB0ZXN0cyBmb3IgcHJlc2VudCBza19maWx0 ZXIgYW5kIGNhbGxzIHNrX2ZpbHRlcl91bmNoYXJnZSgpCm9uIGl0LCB3aGljaCBwb3RlbnRpYWxs eSBsZXRzIHNrX29tZW1fYWxsb2Mgd3JhcCBhcm91bmQgYW5kIHJlbGVhc2VzCnRoZSBlQlBGIHBy b2cgYW5kIHNrX2ZpbHRlciBzdHJ1Y3R1cmUgZnJvbSB0aGUgKHN0aWxsIGludGFjdCkgcGFyZW50 LgoKRml4IGl0IGJ5IG1ha2luZyBzdXJlIHRoYXQgd2hlbiBza19maWx0ZXJfY2hhcmdlKCkgZmFp bGVkLCB3ZSByZXNldApuZXdzay0+c2tfZmlsdGVyIGJhY2sgdG8gTlVMTCBiZWZvcmUgcGFzc2lu ZyB0byBza19mcmVlX3VubG9ja19jbG9uZSgpLApzbyB0aGF0IHdlIGRvbid0IG1lc3Mgd2l0aCB0 aGUgcGFyZW50cyBza19maWx0ZXIuCgpPbmx5IGlmIHhmcm1fc2tfY2xvbmVfcG9saWN5KCkgZmFp bHMsIHdlIGRpZCByZWFjaCB0aGUgcG9pbnQgd2hlcmUKZWl0aGVyIHRoZSBwYXJlbnQncyBmaWx0 ZXIgd2FzIE5VTEwgYW5kIGFzIGEgcmVzdWx0IG5ld3NrJ3MgYXMgd2VsbApvciB3aGVyZSB3ZSBw cmV2aW91c2x5IGhhZCBhIHN1Y2Nlc3NmdWwgc2tfZmlsdGVyX2NoYXJnZSgpLCB0aHVzIGZvcgp0 aGF0IGNhc2UsIHdlIGRvIG5lZWQgc2tfZmlsdGVyX3VuY2hhcmdlKCkgdG8gcmVsZWFzZSB0aGUg cHJpb3IgdGFrZW4KcmVmZXJlbmNlIG9uIHNrX2ZpbHRlci4KCkZpeGVzOiAyNzg1NzFiYWNhMmEg KCJuZXQ6IGZpbHRlcjogc2ltcGxpZnkgc29ja2V0IGNoYXJnaW5nIikKU2lnbmVkLW9mZi1ieTog RGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KQWNrZWQtYnk6IEFsZXhlaSBT dGFyb3ZvaXRvdiA8YXN0QGtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxl ciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvY29yZS9zb2NrLmMgfCA2ICsrKysrKwog MSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL3Nv Y2suYyBiL25ldC9jb3JlL3NvY2suYwppbmRleCA0NzgwOWU5Li40NzBhMjA0IDEwMDY0NAotLS0g YS9uZXQvY29yZS9zb2NrLmMKKysrIGIvbmV0L2NvcmUvc29jay5jCkBAIC0xNTM4LDYgKzE1Mzgs MTIgQEAgc3RydWN0IHNvY2sgKnNrX2Nsb25lX2xvY2soY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBj b25zdCBnZnBfdCBwcmlvcml0eSkKIAkJCWlzX2NoYXJnZWQgPSBza19maWx0ZXJfY2hhcmdlKG5l d3NrLCBmaWx0ZXIpOwogCiAJCWlmICh1bmxpa2VseSghaXNfY2hhcmdlZCB8fCB4ZnJtX3NrX2Ns b25lX3BvbGljeShuZXdzaywgc2spKSkgeworCQkJLyogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhh dCB3ZSBkb24ndCB1bmNoYXJnZSB0aGUgbmV3CisJCQkgKiBzb2NrZXQgaWYgd2UgY291bGRuJ3Qg Y2hhcmdlIGl0IGluIHRoZSBmaXJzdCBwbGFjZQorCQkJICogYXMgb3RoZXJ3aXNlIHdlIHVuY2hh cmdlIHRoZSBwYXJlbnQncyBmaWx0ZXIuCisJCQkgKi8KKwkJCWlmICghaXNfY2hhcmdlZCkKKwkJ CQlSQ1VfSU5JVF9QT0lOVEVSKG5ld3NrLT5za19maWx0ZXIsIE5VTEwpOwogCQkJLyogSXQgaXMg c3RpbGwgcmF3IGNvcHkgb2YgcGFyZW50LCBzbyBpbnZhbGlkYXRlCiAJCQkgKiBkZXN0cnVjdG9y IGFuZCBtYWtlIHBsYWluIHNrX2ZyZWUoKSAqLwogCQkJbmV3c2stPnNrX2Rlc3RydWN0ID0gTlVM TDsKLS0gCjIuMS4wCgoKRnJvbSBjNGViYmIwNTkwNDhjNDVhYzU5OWFkNzJjOGI1YTRhZmJkNjll OTRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0 QGdvb2dsZS5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMTcgMDg6MTA6MjEgLTA3MDAKU3ViamVj dDogW1BBVENIIDExMi8xMTJdIHRjcDogaW5pdGlhbGl6ZSBpY3NrX2Fjay5scmN2dGltZSBhdCBz ZXNzaW9uIHN0YXJ0CiB0aW1lCgpbIFVwc3RyZWFtIGNvbW1pdCAxNWJiNzc0NWU5NGE2NjVjYWY0 MmJmYWFiZjBjZTA2Mjg0NWI1MzNiIF0KCmljc2tfYWNrLmxyY3Z0aW1lIGhhcyBhIDAgdmFsdWUg YXQgc29ja2V0IGNyZWF0aW9uIHRpbWUuCgp0Y3BpX2xhc3RfZGF0YV9yZWN2IGNhbiBoYXZlIGJv Z3VzIHZhbHVlIGlmIG5vIHBheWxvYWQgaXMgZXZlciByZWNlaXZlZC4KClRoaXMgcGF0Y2ggaW5p dGlhbGl6ZXMgaWNza19hY2subHJjdnRpbWUgZm9yIGFjdGl2ZSBzZXNzaW9ucwppbiB0Y3BfZmlu aXNoX2Nvbm5lY3QoKSwgYW5kIGZvciBwYXNzaXZlIHNlc3Npb25zIGluCnRjcF9jcmVhdGVfb3Bl bnJlcV9jaGlsZCgpCgpTaWduZWQtb2ZmLWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2ds ZS5jb20+CkFja2VkLWJ5OiBOZWFsIENhcmR3ZWxsIDxuY2FyZHdlbGxAZ29vZ2xlLmNvbT4KU2ln bmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIG5l dC9pcHY0L3RjcF9pbnB1dC5jICAgICB8IDIgKy0KIG5ldC9pcHY0L3RjcF9taW5pc29ja3MuYyB8 IDEgKwogMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfaW5wdXQuYyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jCmlu ZGV4IGNlNDJkZWQuLjc3MjdmZmUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9pbnB1dC5jCisr KyBiL25ldC9pcHY0L3RjcF9pbnB1dC5jCkBAIC01NTcxLDYgKzU1NzEsNyBAQCB2b2lkIHRjcF9m aW5pc2hfY29ubmVjdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpCiAJc3Ry dWN0IGluZXRfY29ubmVjdGlvbl9zb2NrICppY3NrID0gaW5ldF9jc2soc2spOwogCiAJdGNwX3Nl dF9zdGF0ZShzaywgVENQX0VTVEFCTElTSEVEKTsKKwlpY3NrLT5pY3NrX2Fjay5scmN2dGltZSA9 IHRjcF90aW1lX3N0YW1wOwogCiAJaWYgKHNrYikgewogCQlpY3NrLT5pY3NrX2FmX29wcy0+c2tf cnhfZHN0X3NldChzaywgc2tiKTsKQEAgLTU3ODksNyArNTc5MCw2IEBAIHN0YXRpYyBpbnQgdGNw X3Jjdl9zeW5zZW50X3N0YXRlX3Byb2Nlc3Moc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLAogCQkJICogdG8gc3RhbmQgYWdhaW5zdCB0aGUgdGVtcHRhdGlvbiA4KSAgICAgLS1B TksKIAkJCSAqLwogCQkJaW5ldF9jc2tfc2NoZWR1bGVfYWNrKHNrKTsKLQkJCWljc2stPmljc2tf YWNrLmxyY3Z0aW1lID0gdGNwX3RpbWVfc3RhbXA7CiAJCQl0Y3BfZW50ZXJfcXVpY2thY2tfbW9k ZShzayk7CiAJCQlpbmV0X2Nza19yZXNldF94bWl0X3RpbWVyKHNrLCBJQ1NLX1RJTUVfREFDSywK IAkJCQkJCSAgVENQX0RFTEFDS19NQVgsIFRDUF9SVE9fTUFYKTsKZGlmZiAtLWdpdCBhL25ldC9p cHY0L3RjcF9taW5pc29ja3MuYyBiL25ldC9pcHY0L3RjcF9taW5pc29ja3MuYwppbmRleCA2MjM0 ZWJhLi44NjE1YTZiIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMKKysrIGIv bmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jCkBAIC00NjYsNiArNDY2LDcgQEAgc3RydWN0IHNvY2sg KnRjcF9jcmVhdGVfb3BlbnJlcV9jaGlsZChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssCiAJCW5ld3Rw LT5tZGV2X3VzID0gamlmZmllc190b191c2VjcyhUQ1BfVElNRU9VVF9JTklUKTsKIAkJbWlubWF4 X3Jlc2V0KCZuZXd0cC0+cnR0X21pbiwgdGNwX3RpbWVfc3RhbXAsIH4wVSk7CiAJCW5ld2ljc2st Pmljc2tfcnRvID0gVENQX1RJTUVPVVRfSU5JVDsKKwkJbmV3aWNzay0+aWNza19hY2subHJjdnRp bWUgPSB0Y3BfdGltZV9zdGFtcDsKIAogCQluZXd0cC0+cGFja2V0c19vdXQgPSAwOwogCQluZXd0 cC0+cmV0cmFuc19vdXQgPSAwOwotLSAKMi4xLjAKCg== ----Next_Part(Sat_Mar_25_00_53_59_2017_214)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="net_410.mbox" RnJvbSA1NmJkNGUyYjJmNWIzYTM4ODE2YTI3NjhhYTM5YWUwYjk2OWI4YmI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBPciBHZXJsaXR6IDxvZ2VybGl0ekBtZWxsYW5veC5jb20+CkRh dGU6IFdlZCwgMTUgTWFyIDIwMTcgMTg6MTA6NDcgKzAyMDAKU3ViamVjdDogW1BBVENIIDAxLzI0 XSBuZXQvb3BlbnZzd2l0Y2g6IFNldCB0aGUgaXB2NiBzb3VyY2UgdHVubmVsIGtleSBhZGRyZXNz CiBhdHRyaWJ1dGUgY29ycmVjdGx5CgpbIFVwc3RyZWFtIGNvbW1pdCAzZDIwZjFmN2JkNTc1ZDE0 N2ZmYTc1NjIxZmE1NjBlZWEwYWVjNjkwIF0KCldoZW4gZGVhbGluZyB3aXRoIGlwdjYgc291cmNl IHR1bm5lbCBrZXkgYWRkcmVzcyBhdHRyaWJ1dGUKKE9WU19UVU5ORUxfS0VZX0FUVFJfSVBWNl9T UkMpIHdlIGFyZSB3cm9uZ2x5IHNldHRpbmcgdGhlIHR1bm5lbApkc3QgaXAsIGZpeCB0aGF0LgoK Rml4ZXM6IDZiMjZiYTNhN2Q5NSAoJ29wZW52c3dpdGNoOiBuZXRsaW5rIGF0dHJpYnV0ZXMgZm9y IElQdjYgdHVubmVsaW5nJykKU2lnbmVkLW9mZi1ieTogT3IgR2VybGl0eiA8b2dlcmxpdHpAbWVs bGFub3guY29tPgpSZXBvcnRlZC1ieTogUGF1bCBCbGFrZXkgPHBhdWxiQG1lbGxhbm94LmNvbT4K QWNrZWQtYnk6IEppcmkgQmVuYyA8amJlbmNAcmVkaGF0LmNvbT4KQWNrZWQtYnk6IEpvZSBTdHJp bmdlciA8am9lQG92bi5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1A ZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMgYi9uZXQvb3BlbnZzd2l0Y2gvZmxv d19uZXRsaW5rLmMKaW5kZXggYzg3ZDM1OS4uOTQyNWQzMiAxMDA2NDQKLS0tIGEvbmV0L29wZW52 c3dpdGNoL2Zsb3dfbmV0bGluay5jCisrKyBiL25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsu YwpAQCAtNTg4LDcgKzU4OCw3IEBAIHN0YXRpYyBpbnQgaXBfdHVuX2Zyb21fbmxhdHRyKGNvbnN0 IHN0cnVjdCBubGF0dHIgKmF0dHIsCiAJCQlpcHY0ID0gdHJ1ZTsKIAkJCWJyZWFrOwogCQljYXNl IE9WU19UVU5ORUxfS0VZX0FUVFJfSVBWNl9TUkM6Ci0JCQlTV19GTE9XX0tFWV9QVVQobWF0Y2gs IHR1bl9rZXkudS5pcHY2LmRzdCwKKwkJCVNXX0ZMT1dfS0VZX1BVVChtYXRjaCwgdHVuX2tleS51 LmlwdjYuc3JjLAogCQkJCQlubGFfZ2V0X2luNl9hZGRyKGEpLCBpc19tYXNrKTsKIAkJCWlwdjYg PSB0cnVlOwogCQkJYnJlYWs7Ci0tIAoyLjEuMAoKCkZyb20gZjFhMWQ0NDIzMzZhMGFkMGVlYjNm ZDg4OGRjODYyYjg1MTQ3MTJiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRmxvcmlh biBGYWluZWxsaSA8Zi5mYWluZWxsaUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMTUgTWFyIDIwMTcg MTI6NTc6MjEgLTA3MDAKU3ViamVjdDogW1BBVENIIDAyLzI0XSBuZXQ6IGJjbWdlbmV0OiBEbyBu b3Qgc3VzcGVuZCBQSFkgaWYgV2FrZS1vbi1MQU4gaXMKIGVuYWJsZWQKClsgVXBzdHJlYW0gY29t bWl0IDUzNzFiYmY0YjI5NWVlYTMzNGVkNDUzZWZhMjg2YWZhMmMzY2NmZjMgXQoKU3VzcGVuZGlu ZyB0aGUgUEhZIHdvdWxkIGJlIHB1dHRpbmcgaXQgaW4gYSBsb3cgcG93ZXIgc3RhdGUgd2hlcmUg aXQKbWF5IG5vIGxvbmdlciBhbGxvdyB1cyB0byBkbyBXYWtlLW9uLUxBTi4KCkZpeGVzOiBjYzAx M2ZiNDg4OTggKCJuZXQ6IGJjbWdlbmV0OiBjb3JyZWN0bHkgc3VzcGVuZCBhbmQgcmVzdW1lIFBI WSBkZXZpY2UiKQpTaWduZWQtb2ZmLWJ5OiBGbG9yaWFuIEZhaW5lbGxpIDxmLmZhaW5lbGxpQGdt YWlsLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQu bmV0PgotLS0KIGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbWdlbmV0LmMg fCA2ICsrKystLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21n ZW5ldC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtZ2VuZXQuYwpp bmRleCBmOTI4OTY4Li4zNzg5YmVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9i cm9hZGNvbS9nZW5ldC9iY21nZW5ldC5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2Fk Y29tL2dlbmV0L2JjbWdlbmV0LmMKQEAgLTMzOTUsNyArMzM5NSw4IEBAIHN0YXRpYyBpbnQgYmNt Z2VuZXRfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkKQogCiAJYmNtZ2VuZXRfbmV0aWZfc3RvcChk ZXYpOwogCi0JcGh5X3N1c3BlbmQocHJpdi0+cGh5ZGV2KTsKKwlpZiAoIWRldmljZV9tYXlfd2Fr ZXVwKGQpKQorCQlwaHlfc3VzcGVuZChwcml2LT5waHlkZXYpOwogCiAJbmV0aWZfZGV2aWNlX2Rl dGFjaChkZXYpOwogCkBAIC0zNDkyLDcgKzM0OTMsOCBAQCBzdGF0aWMgaW50IGJjbWdlbmV0X3Jl c3VtZShzdHJ1Y3QgZGV2aWNlICpkKQogCiAJbmV0aWZfZGV2aWNlX2F0dGFjaChkZXYpOwogCi0J cGh5X3Jlc3VtZShwcml2LT5waHlkZXYpOworCWlmICghZGV2aWNlX21heV93YWtldXAoZCkpCisJ CXBoeV9yZXN1bWUocHJpdi0+cGh5ZGV2KTsKIAogCWlmIChwcml2LT5lZWUuZWVlX2VuYWJsZWQp CiAJCWJjbWdlbmV0X2VlZV9lbmFibGVfc2V0KGRldiwgdHJ1ZSk7Ci0tIAoyLjEuMAoKCkZyb20g OTU2MjVhYzIyOGQ3YjMwNGE2ZTE5YTJhMjlhNjliZTQxMTM4ZTYxOSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpEYXRlOiBX ZWQsIDE1IE1hciAyMDE3IDEzOjIxOjI4IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAwMy8yNF0gbmV0 OiBwcm9wZXJseSByZWxlYXNlIHNrX2ZyYWcucGFnZQoKWyBVcHN0cmVhbSBjb21taXQgMjJhMGUx OGVhYzdhOWU5ODZmZWM3NmM2MGZhNGEyOTI2ZDEyOTFlMiBdCgpJIG1pc3Rha2VubHkgYWRkZWQg dGhlIGNvZGUgdG8gcmVsZWFzZSBzay0+c2tfZnJhZyBpbgpza19jb21tb25fcmVsZWFzZSgpIGlu c3RlYWQgb2Ygc2tfZGVzdHJ1Y3QoKQoKVENQIHNvY2tldHMgdXNpbmcgc2stPnNrX2FsbG9jYXRp b24gPT0gR0ZQX0FUT01JQyBkbyBubyBjYWxsCnNrX2NvbW1vbl9yZWxlYXNlKCkgYXQgY2xvc2Ug dGltZSwgdGh1cyBsZWFraW5nIG9uZSAob3JkZXItMykgcGFnZS4KCmlTQ1NJIGlzIHVzaW5nIHN1 Y2ggc29ja2V0cy4KCkZpeGVzOiA1NjQwZjc2ODU4MzEgKCJuZXQ6IHVzZSBhIHBlciB0YXNrIGZy YWcgYWxsb2NhdG9yIikKU2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29n bGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5u ZXQ+Ci0tLQogbmV0L2NvcmUvc29jay5jIHwgMTAgKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQs IDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvY29yZS9z b2NrLmMgYi9uZXQvY29yZS9zb2NrLmMKaW5kZXggNGVjYTI3ZC4uYzhhNWNiZiAxMDA2NDQKLS0t IGEvbmV0L2NvcmUvc29jay5jCisrKyBiL25ldC9jb3JlL3NvY2suYwpAQCAtMTQ0NCw2ICsxNDQ0 LDExIEBAIHN0YXRpYyB2b2lkIF9fc2tfZGVzdHJ1Y3Qoc3RydWN0IHJjdV9oZWFkICpoZWFkKQog CQlwcl9kZWJ1ZygiJXM6IG9wdG1lbSBsZWFrYWdlICglZCBieXRlcykgZGV0ZWN0ZWRcbiIsCiAJ CQkgX19mdW5jX18sIGF0b21pY19yZWFkKCZzay0+c2tfb21lbV9hbGxvYykpOwogCisJaWYgKHNr LT5za19mcmFnLnBhZ2UpIHsKKwkJcHV0X3BhZ2Uoc2stPnNrX2ZyYWcucGFnZSk7CisJCXNrLT5z a19mcmFnLnBhZ2UgPSBOVUxMOworCX0KKwogCWlmIChzay0+c2tfcGVlcl9jcmVkKQogCQlwdXRf Y3JlZChzay0+c2tfcGVlcl9jcmVkKTsKIAlwdXRfcGlkKHNrLT5za19wZWVyX3BpZCk7CkBAIC0y Nzc0LDExICsyNzc5LDYgQEAgdm9pZCBza19jb21tb25fcmVsZWFzZShzdHJ1Y3Qgc29jayAqc2sp CiAKIAlza19yZWZjbnRfZGVidWdfcmVsZWFzZShzayk7CiAKLQlpZiAoc2stPnNrX2ZyYWcucGFn ZSkgewotCQlwdXRfcGFnZShzay0+c2tfZnJhZy5wYWdlKTsKLQkJc2stPnNrX2ZyYWcucGFnZSA9 IE5VTEw7Ci0JfQotCiAJc29ja19wdXQoc2spOwogfQogRVhQT1JUX1NZTUJPTChza19jb21tb25f cmVsZWFzZSk7Ci0tIAoyLjEuMAoKCkZyb20gNTVhNmRhNzQzNmNiMzdmOWMwMjA4MTViMWRkYjYx ZWFiYWIxMWE5YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogIkxlbmRhY2t5LCBUaG9t YXMiIDxUaG9tYXMuTGVuZGFja3lAYW1kLmNvbT4KRGF0ZTogV2VkLCAxNSBNYXIgMjAxNyAxNTox MToyMyAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMDQvMjRdIGFtZC14Z2JlOiBGaXgganVtYm8gTVRV IHByb2Nlc3Npbmcgb24gbmV3ZXIgaGFyZHdhcmUKClsgVXBzdHJlYW0gY29tbWl0IDYyMmMzNmYx NDNmYzk1NjZiYTQ5ZDdjZWM5OTRjMmRhMTE4MmQ5ZTIgXQoKTmV3ZXIgaGFyZHdhcmUgZG9lcyBu b3QgcHJvdmlkZSBhIGN1bXVsYXRpdmUgcGF5bG9hZCBsZW5ndGggd2hlbiBtdWx0aXBsZQpkZXNj cmlwdG9ycyBhcmUgbmVlZGVkIHRvIGhhbmRsZSB0aGUgZGF0YS4gT25jZSB0aGUgTVRVIGluY3Jl YXNlcyBiZXlvbmQKdGhlIHNpemUgdGhhdCBjYW4gYmUgaGFuZGxlZCBieSBhIHNpbmdsZSBkZXNj cmlwdG9yLCB0aGUgU0tCIGRvZXMgbm90IGdldApidWlsdCBwcm9wZXJseSBieSB0aGUgZHJpdmVy LgoKVGhlIGRyaXZlciB3aWxsIG5vdyBjYWxjdWxhdGUgdGhlIHNpemUgb2YgdGhlIGRhdGEgYnVm ZmVycyB1c2VkIGJ5IHRoZQpoYXJkd2FyZS4gIFRoZSBmaXJzdCBidWZmZXIgb2YgdGhlIGZpcnN0 IGRlc2NyaXB0b3IgaXMgZm9yIHBhY2tldCBoZWFkZXJzCm9yIHBhY2tldCBoZWFkZXJzIGFuZCBk YXRhIHdoZW4gdGhlIGhlYWRlcnMgY2FuJ3QgYmUgc3BsaXQuIFN1YnNlcXVlbnQKZGVzY3JpcHRv cnMgaW4gYSBtdWx0aS1kZXNjcmlwdG9yIGNoYWluIHdpbGwgbm90IHVzZSB0aGUgZmlyc3QgYnVm ZmVyLiBUaGUKc2Vjb25kIGJ1ZmZlciBpcyB1c2VkIGJ5IGFsbCB0aGUgZGVzY3JpcHRvcnMgaW4g dGhlIGNoYWluIGZvciBwYXlsb2FkIGRhdGEuCkJhc2VkIG9uIHdoZXRoZXIgdGhlIGRyaXZlciBp cyBwcm9jZXNzaW5nIHRoZSBmaXJzdCwgaW50ZXJtZWRpYXRlLCBvciBsYXN0CmRlc2NyaXB0b3Ig aXQgY2FuIGNhbGN1bGF0ZSB0aGUgYnVmZmVyIHVzYWdlIGFuZCBidWlsZCB0aGUgU0tCIHByb3Bl cmx5LgoKVGVzdGVkIGFuZCB2ZXJpZmllZCBvbiBib3RoIG9sZCBhbmQgbmV3IGhhcmR3YXJlLgoK U2lnbmVkLW9mZi1ieTogVG9tIExlbmRhY2t5IDx0aG9tYXMubGVuZGFja3lAYW1kLmNvbT4KU2ln bmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGRy aXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtY29tbW9uLmggfCAgIDYgKy0KIGRyaXZl cnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMgICAgfCAgMjAgKysrLS0tCiBkcml2 ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jICAgIHwgMTAyICsrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgNTAg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUv eGdiZS1jb21tb24uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtY29tbW9u LmgKaW5kZXggOGEyODBlNy4uODZmMTYyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaAorKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQv eGdiZS94Z2JlLWNvbW1vbi5oCkBAIC0xMTQ4LDggKzExNDgsOCBAQAogI2RlZmluZSBSWF9QQUNL RVRfQVRUUklCVVRFU19DU1VNX0RPTkVfV0lEVEgJMQogI2RlZmluZSBSWF9QQUNLRVRfQVRUUklC VVRFU19WTEFOX0NUQUdfSU5ERVgJMQogI2RlZmluZSBSWF9QQUNLRVRfQVRUUklCVVRFU19WTEFO X0NUQUdfV0lEVEgJMQotI2RlZmluZSBSWF9QQUNLRVRfQVRUUklCVVRFU19JTkNPTVBMRVRFX0lO REVYCTIKLSNkZWZpbmUgUlhfUEFDS0VUX0FUVFJJQlVURVNfSU5DT01QTEVURV9XSURUSAkxCisj ZGVmaW5lIFJYX1BBQ0tFVF9BVFRSSUJVVEVTX0xBU1RfSU5ERVgJCTIKKyNkZWZpbmUgUlhfUEFD S0VUX0FUVFJJQlVURVNfTEFTVF9XSURUSAkJMQogI2RlZmluZSBSWF9QQUNLRVRfQVRUUklCVVRF U19DT05URVhUX05FWFRfSU5ERVgJMwogI2RlZmluZSBSWF9QQUNLRVRfQVRUUklCVVRFU19DT05U RVhUX05FWFRfV0lEVEgJMQogI2RlZmluZSBSWF9QQUNLRVRfQVRUUklCVVRFU19DT05URVhUX0lO REVYCTQKQEAgLTExNTgsNiArMTE1OCw4IEBACiAjZGVmaW5lIFJYX1BBQ0tFVF9BVFRSSUJVVEVT X1JYX1RTVEFNUF9XSURUSAkxCiAjZGVmaW5lIFJYX1BBQ0tFVF9BVFRSSUJVVEVTX1JTU19IQVNI X0lOREVYCTYKICNkZWZpbmUgUlhfUEFDS0VUX0FUVFJJQlVURVNfUlNTX0hBU0hfV0lEVEgJMQor I2RlZmluZSBSWF9QQUNLRVRfQVRUUklCVVRFU19GSVJTVF9JTkRFWAk3CisjZGVmaW5lIFJYX1BB Q0tFVF9BVFRSSUJVVEVTX0ZJUlNUX1dJRFRICTEKIAogI2RlZmluZSBSWF9OT1JNQUxfREVTQzBf T1ZUX0lOREVYCQkwCiAjZGVmaW5lIFJYX05PUk1BTF9ERVNDMF9PVlRfV0lEVEgJCTE2CmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jIGIvZHJpdmVy cy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kZXYuYwppbmRleCA5MzdmMzdhLi4yNGE2ODdj IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRldi5jCisr KyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZGV2LmMKQEAgLTE4OTYsMTAg KzE4OTYsMTUgQEAgc3RhdGljIGludCB4Z2JlX2Rldl9yZWFkKHN0cnVjdCB4Z2JlX2NoYW5uZWwg KmNoYW5uZWwpCiAKIAkvKiBHZXQgdGhlIGhlYWRlciBsZW5ndGggKi8KIAlpZiAoWEdNQUNfR0VU X0JJVFNfTEUocmRlc2MtPmRlc2MzLCBSWF9OT1JNQUxfREVTQzMsIEZEKSkgeworCQlYR01BQ19T RVRfQklUUyhwYWNrZXQtPmF0dHJpYnV0ZXMsIFJYX1BBQ0tFVF9BVFRSSUJVVEVTLAorCQkJICAg ICAgIEZJUlNULCAxKTsKIAkJcmRhdGEtPnJ4Lmhkcl9sZW4gPSBYR01BQ19HRVRfQklUU19MRShy ZGVzYy0+ZGVzYzIsCiAJCQkJCQkgICAgICBSWF9OT1JNQUxfREVTQzIsIEhMKTsKIAkJaWYgKHJk YXRhLT5yeC5oZHJfbGVuKQogCQkJcGRhdGEtPmV4dF9zdGF0cy5yeF9zcGxpdF9oZWFkZXJfcGFj a2V0cysrOworCX0gZWxzZSB7CisJCVhHTUFDX1NFVF9CSVRTKHBhY2tldC0+YXR0cmlidXRlcywg UlhfUEFDS0VUX0FUVFJJQlVURVMsCisJCQkgICAgICAgRklSU1QsIDApOwogCX0KIAogCS8qIEdl dCB0aGUgUlNTIGhhc2ggKi8KQEAgLTE5MjIsMTkgKzE5MjcsMTYgQEAgc3RhdGljIGludCB4Z2Jl X2Rldl9yZWFkKHN0cnVjdCB4Z2JlX2NoYW5uZWwgKmNoYW5uZWwpCiAJCX0KIAl9CiAKLQkvKiBH ZXQgdGhlIHBhY2tldCBsZW5ndGggKi8KLQlyZGF0YS0+cngubGVuID0gWEdNQUNfR0VUX0JJVFNf TEUocmRlc2MtPmRlc2MzLCBSWF9OT1JNQUxfREVTQzMsIFBMKTsKLQotCWlmICghWEdNQUNfR0VU X0JJVFNfTEUocmRlc2MtPmRlc2MzLCBSWF9OT1JNQUxfREVTQzMsIExEKSkgewotCQkvKiBOb3Qg YWxsIHRoZSBkYXRhIGhhcyBiZWVuIHRyYW5zZmVycmVkIGZvciB0aGlzIHBhY2tldCAqLwotCQlY R01BQ19TRVRfQklUUyhwYWNrZXQtPmF0dHJpYnV0ZXMsIFJYX1BBQ0tFVF9BVFRSSUJVVEVTLAot CQkJICAgICAgIElOQ09NUExFVEUsIDEpOworCS8qIE5vdCBhbGwgdGhlIGRhdGEgaGFzIGJlZW4g dHJhbnNmZXJyZWQgZm9yIHRoaXMgcGFja2V0ICovCisJaWYgKCFYR01BQ19HRVRfQklUU19MRShy ZGVzYy0+ZGVzYzMsIFJYX05PUk1BTF9ERVNDMywgTEQpKQogCQlyZXR1cm4gMDsKLQl9CiAKIAkv KiBUaGlzIGlzIHRoZSBsYXN0IG9mIHRoZSBkYXRhIGZvciB0aGlzIHBhY2tldCAqLwogCVhHTUFD X1NFVF9CSVRTKHBhY2tldC0+YXR0cmlidXRlcywgUlhfUEFDS0VUX0FUVFJJQlVURVMsCi0JCSAg ICAgICBJTkNPTVBMRVRFLCAwKTsKKwkJICAgICAgIExBU1QsIDEpOworCisJLyogR2V0IHRoZSBw YWNrZXQgbGVuZ3RoICovCisJcmRhdGEtPnJ4LmxlbiA9IFhHTUFDX0dFVF9CSVRTX0xFKHJkZXNj LT5kZXNjMywgUlhfTk9STUFMX0RFU0MzLCBQTCk7CiAKIAkvKiBTZXQgY2hlY2tzdW0gZG9uZSBp bmRpY2F0b3IgYXMgYXBwcm9wcmlhdGUgKi8KIAlpZiAobmV0ZGV2LT5mZWF0dXJlcyAmIE5FVElG X0ZfUlhDU1VNKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdi ZS1kcnYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMKaW5kZXgg NzQyZTVkMWIuLjM2ZmQxYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94 Z2JlL3hnYmUtZHJ2LmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1k cnYuYwpAQCAtMTk3MywxMyArMTk3MywxMiBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnhnYmVf Y3JlYXRlX3NrYihzdHJ1Y3QgeGdiZV9wcnZfZGF0YSAqcGRhdGEsCiB7CiAJc3RydWN0IHNrX2J1 ZmYgKnNrYjsKIAl1OCAqcGFja2V0OwotCXVuc2lnbmVkIGludCBjb3B5X2xlbjsKIAogCXNrYiA9 IG5hcGlfYWxsb2Nfc2tiKG5hcGksIHJkYXRhLT5yeC5oZHIuZG1hX2xlbik7CiAJaWYgKCFza2Ip CiAJCXJldHVybiBOVUxMOwogCi0JLyogU3RhcnQgd2l0aCB0aGUgaGVhZGVyIGJ1ZmZlciB3aGlj aCBtYXkgY29udGFpbiBqdXN0IHRoZSBoZWFkZXIKKwkvKiBQdWxsIGluIHRoZSBoZWFkZXIgYnVm ZmVyIHdoaWNoIG1heSBjb250YWluIGp1c3QgdGhlIGhlYWRlcgogCSAqIG9yIHRoZSBoZWFkZXIg cGx1cyBkYXRhCiAJICovCiAJZG1hX3N5bmNfc2luZ2xlX3JhbmdlX2Zvcl9jcHUocGRhdGEtPmRl diwgcmRhdGEtPnJ4Lmhkci5kbWFfYmFzZSwKQEAgLTE5ODgsMzAgKzE5ODcsNDkgQEAgc3RhdGlj IHN0cnVjdCBza19idWZmICp4Z2JlX2NyZWF0ZV9za2Ioc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBk YXRhLAogCiAJcGFja2V0ID0gcGFnZV9hZGRyZXNzKHJkYXRhLT5yeC5oZHIucGEucGFnZXMpICsK IAkJIHJkYXRhLT5yeC5oZHIucGEucGFnZXNfb2Zmc2V0OwotCWNvcHlfbGVuID0gKHJkYXRhLT5y eC5oZHJfbGVuKSA/IHJkYXRhLT5yeC5oZHJfbGVuIDogbGVuOwotCWNvcHlfbGVuID0gbWluKHJk YXRhLT5yeC5oZHIuZG1hX2xlbiwgY29weV9sZW4pOwotCXNrYl9jb3B5X3RvX2xpbmVhcl9kYXRh KHNrYiwgcGFja2V0LCBjb3B5X2xlbik7Ci0Jc2tiX3B1dChza2IsIGNvcHlfbGVuKTsKLQotCWxl biAtPSBjb3B5X2xlbjsKLQlpZiAobGVuKSB7Ci0JCS8qIEFkZCB0aGUgcmVtYWluaW5nIGRhdGEg YXMgYSBmcmFnICovCi0JCWRtYV9zeW5jX3NpbmdsZV9yYW5nZV9mb3JfY3B1KHBkYXRhLT5kZXYs Ci0JCQkJCSAgICAgIHJkYXRhLT5yeC5idWYuZG1hX2Jhc2UsCi0JCQkJCSAgICAgIHJkYXRhLT5y eC5idWYuZG1hX29mZiwKLQkJCQkJICAgICAgcmRhdGEtPnJ4LmJ1Zi5kbWFfbGVuLAotCQkJCQkg ICAgICBETUFfRlJPTV9ERVZJQ0UpOwotCi0JCXNrYl9hZGRfcnhfZnJhZyhza2IsIHNrYl9zaGlu Zm8oc2tiKS0+bnJfZnJhZ3MsCi0JCQkJcmRhdGEtPnJ4LmJ1Zi5wYS5wYWdlcywKLQkJCQlyZGF0 YS0+cnguYnVmLnBhLnBhZ2VzX29mZnNldCwKLQkJCQlsZW4sIHJkYXRhLT5yeC5idWYuZG1hX2xl bik7Ci0JCXJkYXRhLT5yeC5idWYucGEucGFnZXMgPSBOVUxMOwotCX0KKwlza2JfY29weV90b19s aW5lYXJfZGF0YShza2IsIHBhY2tldCwgbGVuKTsKKwlza2JfcHV0KHNrYiwgbGVuKTsKIAogCXJl dHVybiBza2I7CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBpbnQgeGdiZV9yeF9idWYxX2xlbihzdHJ1 Y3QgeGdiZV9yaW5nX2RhdGEgKnJkYXRhLAorCQkJCSAgICAgc3RydWN0IHhnYmVfcGFja2V0X2Rh dGEgKnBhY2tldCkKK3sKKwkvKiBBbHdheXMgemVybyBpZiBub3QgdGhlIGZpcnN0IGRlc2NyaXB0 b3IgKi8KKwlpZiAoIVhHTUFDX0dFVF9CSVRTKHBhY2tldC0+YXR0cmlidXRlcywgUlhfUEFDS0VU X0FUVFJJQlVURVMsIEZJUlNUKSkKKwkJcmV0dXJuIDA7CisKKwkvKiBGaXJzdCBkZXNjcmlwdG9y IHdpdGggc3BsaXQgaGVhZGVyLCByZXR1cm4gaGVhZGVyIGxlbmd0aCAqLworCWlmIChyZGF0YS0+ cnguaGRyX2xlbikKKwkJcmV0dXJuIHJkYXRhLT5yeC5oZHJfbGVuOworCisJLyogRmlyc3QgZGVz Y3JpcHRvciBidXQgbm90IHRoZSBsYXN0IGRlc2NyaXB0b3IgYW5kIG5vIHNwbGl0IGhlYWRlciwK KwkgKiBzbyB0aGUgZnVsbCBidWZmZXIgd2FzIHVzZWQKKwkgKi8KKwlpZiAoIVhHTUFDX0dFVF9C SVRTKHBhY2tldC0+YXR0cmlidXRlcywgUlhfUEFDS0VUX0FUVFJJQlVURVMsIExBU1QpKQorCQly ZXR1cm4gcmRhdGEtPnJ4Lmhkci5kbWFfbGVuOworCisJLyogRmlyc3QgZGVzY3JpcHRvciBhbmQg bGFzdCBkZXNjcmlwdG9yIGFuZCBubyBzcGxpdCBoZWFkZXIsIHNvCisJICogY2FsY3VsYXRlIGhv dyBtdWNoIG9mIHRoZSBidWZmZXIgd2FzIHVzZWQKKwkgKi8KKwlyZXR1cm4gbWluX3QodW5zaWdu ZWQgaW50LCByZGF0YS0+cnguaGRyLmRtYV9sZW4sIHJkYXRhLT5yeC5sZW4pOworfQorCitzdGF0 aWMgdW5zaWduZWQgaW50IHhnYmVfcnhfYnVmMl9sZW4oc3RydWN0IHhnYmVfcmluZ19kYXRhICpy ZGF0YSwKKwkJCQkgICAgIHN0cnVjdCB4Z2JlX3BhY2tldF9kYXRhICpwYWNrZXQsCisJCQkJICAg ICB1bnNpZ25lZCBpbnQgbGVuKQoreworCS8qIEFsd2F5cyB0aGUgZnVsbCBidWZmZXIgaWYgbm90 IHRoZSBsYXN0IGRlc2NyaXB0b3IgKi8KKwlpZiAoIVhHTUFDX0dFVF9CSVRTKHBhY2tldC0+YXR0 cmlidXRlcywgUlhfUEFDS0VUX0FUVFJJQlVURVMsIExBU1QpKQorCQlyZXR1cm4gcmRhdGEtPnJ4 LmJ1Zi5kbWFfbGVuOworCisJLyogTGFzdCBkZXNjcmlwdG9yIHNvIGNhbGN1bGF0ZSBob3cgbXVj aCBvZiB0aGUgYnVmZmVyIHdhcyB1c2VkCisJICogZm9yIHRoZSBsYXN0IGJpdCBvZiBkYXRhCisJ ICovCisJcmV0dXJuIHJkYXRhLT5yeC5sZW4gLSBsZW47Cit9CisKIHN0YXRpYyBpbnQgeGdiZV90 eF9wb2xsKHN0cnVjdCB4Z2JlX2NoYW5uZWwgKmNoYW5uZWwpCiB7CiAJc3RydWN0IHhnYmVfcHJ2 X2RhdGEgKnBkYXRhID0gY2hhbm5lbC0+cGRhdGE7CkBAIC0yMDk0LDggKzIxMTIsOCBAQCBzdGF0 aWMgaW50IHhnYmVfcnhfcG9sbChzdHJ1Y3QgeGdiZV9jaGFubmVsICpjaGFubmVsLCBpbnQgYnVk Z2V0KQogCXN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaTsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwog CXN0cnVjdCBza2Jfc2hhcmVkX2h3dHN0YW1wcyAqaHd0c3RhbXBzOwotCXVuc2lnbmVkIGludCBp bmNvbXBsZXRlLCBlcnJvciwgY29udGV4dF9uZXh0LCBjb250ZXh0OwotCXVuc2lnbmVkIGludCBs ZW4sIHJkZXNjX2xlbiwgbWF4X2xlbjsKKwl1bnNpZ25lZCBpbnQgbGFzdCwgZXJyb3IsIGNvbnRl eHRfbmV4dCwgY29udGV4dDsKKwl1bnNpZ25lZCBpbnQgbGVuLCBidWYxX2xlbiwgYnVmMl9sZW4s IG1heF9sZW47CiAJdW5zaWduZWQgaW50IHJlY2VpdmVkID0gMDsKIAlpbnQgcGFja2V0X2NvdW50 ID0gMDsKIApAQCAtMjEwNSw3ICsyMTIzLDcgQEAgc3RhdGljIGludCB4Z2JlX3J4X3BvbGwoc3Ry dWN0IHhnYmVfY2hhbm5lbCAqY2hhbm5lbCwgaW50IGJ1ZGdldCkKIAlpZiAoIXJpbmcpCiAJCXJl dHVybiAwOwogCi0JaW5jb21wbGV0ZSA9IDA7CisJbGFzdCA9IDA7CiAJY29udGV4dF9uZXh0ID0g MDsKIAogCW5hcGkgPSAocGRhdGEtPnBlcl9jaGFubmVsX2lycSkgPyAmY2hhbm5lbC0+bmFwaSA6 ICZwZGF0YS0+bmFwaTsKQEAgLTIxMzksOSArMjE1Nyw4IEBAIHN0YXRpYyBpbnQgeGdiZV9yeF9w b2xsKHN0cnVjdCB4Z2JlX2NoYW5uZWwgKmNoYW5uZWwsIGludCBidWRnZXQpCiAJCXJlY2VpdmVk Kys7CiAJCXJpbmctPmN1cisrOwogCi0JCWluY29tcGxldGUgPSBYR01BQ19HRVRfQklUUyhwYWNr ZXQtPmF0dHJpYnV0ZXMsCi0JCQkJCSAgICBSWF9QQUNLRVRfQVRUUklCVVRFUywKLQkJCQkJICAg IElOQ09NUExFVEUpOworCQlsYXN0ID0gWEdNQUNfR0VUX0JJVFMocGFja2V0LT5hdHRyaWJ1dGVz LCBSWF9QQUNLRVRfQVRUUklCVVRFUywKKwkJCQkgICAgICBMQVNUKTsKIAkJY29udGV4dF9uZXh0 ID0gWEdNQUNfR0VUX0JJVFMocGFja2V0LT5hdHRyaWJ1dGVzLAogCQkJCQkgICAgICBSWF9QQUNL RVRfQVRUUklCVVRFUywKIAkJCQkJICAgICAgQ09OVEVYVF9ORVhUKTsKQEAgLTIxNTAsNyArMjE2 Nyw3IEBAIHN0YXRpYyBpbnQgeGdiZV9yeF9wb2xsKHN0cnVjdCB4Z2JlX2NoYW5uZWwgKmNoYW5u ZWwsIGludCBidWRnZXQpCiAJCQkJCSBDT05URVhUKTsKIAogCQkvKiBFYXJsaWVyIGVycm9yLCBq dXN0IGRyYWluIHRoZSByZW1haW5pbmcgZGF0YSAqLwotCQlpZiAoKGluY29tcGxldGUgfHwgY29u dGV4dF9uZXh0KSAmJiBlcnJvcikKKwkJaWYgKCghbGFzdCB8fCBjb250ZXh0X25leHQpICYmIGVy cm9yKQogCQkJZ290byByZWFkX2FnYWluOwogCiAJCWlmIChlcnJvciB8fCBwYWNrZXQtPmVycm9y cykgewpAQCAtMjE2MiwxNiArMjE3OSwyMiBAQCBzdGF0aWMgaW50IHhnYmVfcnhfcG9sbChzdHJ1 Y3QgeGdiZV9jaGFubmVsICpjaGFubmVsLCBpbnQgYnVkZ2V0KQogCQl9CiAKIAkJaWYgKCFjb250 ZXh0KSB7Ci0JCQkvKiBMZW5ndGggaXMgY3VtdWxhdGl2ZSwgZ2V0IHRoaXMgZGVzY3JpcHRvcidz IGxlbmd0aCAqLwotCQkJcmRlc2NfbGVuID0gcmRhdGEtPnJ4LmxlbiAtIGxlbjsKLQkJCWxlbiAr PSByZGVzY19sZW47CisJCQkvKiBHZXQgdGhlIGRhdGEgbGVuZ3RoIGluIHRoZSBkZXNjcmlwdG9y IGJ1ZmZlcnMgKi8KKwkJCWJ1ZjFfbGVuID0geGdiZV9yeF9idWYxX2xlbihyZGF0YSwgcGFja2V0 KTsKKwkJCWxlbiArPSBidWYxX2xlbjsKKwkJCWJ1ZjJfbGVuID0geGdiZV9yeF9idWYyX2xlbihy ZGF0YSwgcGFja2V0LCBsZW4pOworCQkJbGVuICs9IGJ1ZjJfbGVuOwogCi0JCQlpZiAocmRlc2Nf bGVuICYmICFza2IpIHsKKwkJCWlmICghc2tiKSB7CiAJCQkJc2tiID0geGdiZV9jcmVhdGVfc2ti KHBkYXRhLCBuYXBpLCByZGF0YSwKLQkJCQkJCSAgICAgIHJkZXNjX2xlbik7Ci0JCQkJaWYgKCFz a2IpCisJCQkJCQkgICAgICBidWYxX2xlbik7CisJCQkJaWYgKCFza2IpIHsKIAkJCQkJZXJyb3Ig PSAxOwotCQkJfSBlbHNlIGlmIChyZGVzY19sZW4pIHsKKwkJCQkJZ290byBza2lwX2RhdGE7CisJ CQkJfQorCQkJfQorCisJCQlpZiAoYnVmMl9sZW4pIHsKIAkJCQlkbWFfc3luY19zaW5nbGVfcmFu Z2VfZm9yX2NwdShwZGF0YS0+ZGV2LAogCQkJCQkJCXJkYXRhLT5yeC5idWYuZG1hX2Jhc2UsCiAJ CQkJCQkJcmRhdGEtPnJ4LmJ1Zi5kbWFfb2ZmLApAQCAtMjE4MSwxMyArMjIwNCwxNCBAQCBzdGF0 aWMgaW50IHhnYmVfcnhfcG9sbChzdHJ1Y3QgeGdiZV9jaGFubmVsICpjaGFubmVsLCBpbnQgYnVk Z2V0KQogCQkJCXNrYl9hZGRfcnhfZnJhZyhza2IsIHNrYl9zaGluZm8oc2tiKS0+bnJfZnJhZ3Ms CiAJCQkJCQlyZGF0YS0+cnguYnVmLnBhLnBhZ2VzLAogCQkJCQkJcmRhdGEtPnJ4LmJ1Zi5wYS5w YWdlc19vZmZzZXQsCi0JCQkJCQlyZGVzY19sZW4sCisJCQkJCQlidWYyX2xlbiwKIAkJCQkJCXJk YXRhLT5yeC5idWYuZG1hX2xlbik7CiAJCQkJcmRhdGEtPnJ4LmJ1Zi5wYS5wYWdlcyA9IE5VTEw7 CiAJCQl9CiAJCX0KIAotCQlpZiAoaW5jb21wbGV0ZSB8fCBjb250ZXh0X25leHQpCitza2lwX2Rh dGE6CisJCWlmICghbGFzdCB8fCBjb250ZXh0X25leHQpCiAJCQlnb3RvIHJlYWRfYWdhaW47CiAK IAkJaWYgKCFza2IpCkBAIC0yMjQ1LDcgKzIyNjksNyBAQCBzdGF0aWMgaW50IHhnYmVfcnhfcG9s bChzdHJ1Y3QgeGdiZV9jaGFubmVsICpjaGFubmVsLCBpbnQgYnVkZ2V0KQogCX0KIAogCS8qIENo ZWNrIGlmIHdlIG5lZWQgdG8gc2F2ZSBzdGF0ZSBiZWZvcmUgbGVhdmluZyAqLwotCWlmIChyZWNl aXZlZCAmJiAoaW5jb21wbGV0ZSB8fCBjb250ZXh0X25leHQpKSB7CisJaWYgKHJlY2VpdmVkICYm ICghbGFzdCB8fCBjb250ZXh0X25leHQpKSB7CiAJCXJkYXRhID0gWEdCRV9HRVRfREVTQ19EQVRB KHJpbmcsIHJpbmctPmN1cik7CiAJCXJkYXRhLT5zdGF0ZV9zYXZlZCA9IDE7CiAJCXJkYXRhLT5z dGF0ZS5za2IgPSBza2I7Ci0tIAoyLjEuMAoKCkZyb20gMWM3MjlhNDZkYTNkNWQwMWQ0ZGJjMzMz MmFlZDE1NGU2NGVjMjZjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogS3JpcyBNdXJw aHkgPGtyaXNrZW5kQGxpbnV4LnZuZXQuaWJtLmNvbT4KRGF0ZTogVGh1LCAxNiBNYXIgMjAxNyAx MDo1MToyOCAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMDUvMjRdIG9wZW52c3dpdGNoOiBBZGQgbWlz c2luZyBjYXNlIE9WU19UVU5ORUxfS0VZX0FUVFJfUEFECgpbIFVwc3RyZWFtIGNvbW1pdCA4ZjNk YmZkNzllZDllZjk3NzAzMDVhN2NjNGUxM2RmZDMxYWQyY2QwIF0KCkFkZGVkIGEgY2FzZSBmb3Ig T1ZTX1RVTk5FTF9LRVlfQVRUUl9QQUQgdG8gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKaW4gaXBfdHVu X2Zyb21fbmxhdHRyIGluIG9yZGVyIHRvIHByZXZlbnQgdGhlIGRlZmF1bHQgY2FzZQpyZXR1cm5p bmcgYW4gZXJyb3IuCgpGaXhlczogYjQ2ZjZkZWQ5MDZlICgibGlibmw6IG5sYV9wdXRfYmU2NCgp OiBhbGlnbiBvbiBhIDY0LWJpdCBhcmVhIikKU2lnbmVkLW9mZi1ieTogS3JpcyBNdXJwaHkgPGty aXNrZW5kQGxpbnV4LnZuZXQuaWJtLmNvbT4KQWNrZWQtYnk6IEpvZSBTdHJpbmdlciA8am9lQG92 bi5vcmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5l dD4KLS0tCiBuZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMgfCAyICsrCiAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2Zsb3df bmV0bGluay5jIGIvbmV0L29wZW52c3dpdGNoL2Zsb3dfbmV0bGluay5jCmluZGV4IDk0MjVkMzIu LjI1NmU4ZjEgMTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3aXRjaC9mbG93X25ldGxpbmsuYworKysg Yi9uZXQvb3BlbnZzd2l0Y2gvZmxvd19uZXRsaW5rLmMKQEAgLTY0OSw2ICs2NDksOCBAQCBzdGF0 aWMgaW50IGlwX3R1bl9mcm9tX25sYXR0cihjb25zdCBzdHJ1Y3QgbmxhdHRyICphdHRyLAogCQkJ dHVuX2ZsYWdzIHw9IFRVTk5FTF9WWExBTl9PUFQ7CiAJCQlvcHRzX3R5cGUgPSB0eXBlOwogCQkJ YnJlYWs7CisJCWNhc2UgT1ZTX1RVTk5FTF9LRVlfQVRUUl9QQUQ6CisJCQlicmVhazsKIAkJZGVm YXVsdDoKIAkJCU9WU19OTEVSUihsb2csICJVbmtub3duIElQIHR1bm5lbCBhdHRyaWJ1dGUgJWQi LAogCQkJCSAgdHlwZSk7Ci0tIAoyLjEuMAoKCkZyb20gYjhhZWE4OTJhY2E3ZmM1NjY4N2E3MTc0 MjI2ZmZhMTNiMzY3Nzk5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQW5kcmV5IFVs YW5vdiA8YW5kcmV5dUBnb29nbGUuY29tPgpEYXRlOiBUdWUsIDE0IE1hciAyMDE3IDIwOjE2OjQy IC0wNzAwClN1YmplY3Q6IFtQQVRDSCAwNi8yNF0gbmV0OiB1bml4OiBwcm9wZXJseSByZS1pbmNy ZW1lbnQgaW5mbGlnaHQgY291bnRlciBvZiBHQwogZGlzY2FyZGVkIGNhbmRpZGF0ZXMKClsgVXBz dHJlYW0gY29tbWl0IDdkZjljMjQ2MjViOTk4MTc3OWFmYjhmY2RiZTJiYjQ3NjVlNjExNDcgXQoK RG1pdHJ5IGhhcyByZXBvcnRlZCB0aGF0IGEgQlVHX09OKCkgY29uZGl0aW9uIGluIHVuaXhfbm90 aW5mbGlnaHQoKQptYXkgYmUgdHJpZ2dlcmVkIGJ5IGEgc2ltcGxlIGNvZGUgdGhhdCBmb3J3YXJk cyB1bml4IHNvY2tldCBpbiBhbgpTQ01fUklHSFRTIG1lc3NhZ2UuClRoYXQgaXMgY2F1c2VkIGJ5 IGluY29ycmVjdCB1bml4IHNvY2tldCBHQyBpbXBsZW1lbnRhdGlvbiBpbiB1bml4X2djKCkuCgpU aGUgR0MgZmlyc3QgY29sbGVjdHMgbGlzdCBvZiBjYW5kaWRhdGVzLCB0aGVuIChhKSBkZWNyZW1l bnRzIHRoZWlyCiJjaGlsZHJlbidzIiBpbmZsaWdodCBjb3VudGVyLCAoYikgY2hlY2tzIHdoaWNo IGluZmxpZ2h0IGNvdW50ZXJzIGFyZQpub3cgMCwgYW5kIHRoZW4gKGMpIGluY3JlbWVudHMgYWxs IGluZmxpZ2h0IGNvdW50ZXJzIGJhY2suCihhKSBhbmQgKGMpIGFyZSBkb25lIGJ5IGNhbGxpbmcg c2Nhbl9jaGlsZHJlbigpIHdpdGggaW5jX2luZmxpZ2h0IG9yCmRlY19pbmZsaWdodCBhcyB0aGUg c2Vjb25kIGFyZ3VtZW50LgoKQ29tbWl0IDYyMDkzNDRmNWEzNyAoIm5ldDogdW5peDogZml4IGlu ZmxpZ2h0IGNvdW50aW5nIGJ1ZyBpbiBnYXJiYWdlCmNvbGxlY3RvciIpIGNoYW5nZWQgc2Nhbl9j aGlsZHJlbigpIHN1Y2ggdGhhdCBpdCBubyBsb25nZXIgY29uc2lkZXJzCnNvY2tldHMgdGhhdCBk byBub3QgaGF2ZSBVTklYX0dDX0NBTkRJREFURSBmbGFnLiBJdCBhbHNvIGFkZGVkIGEgYmxvY2sK b2YgY29kZSB0aGF0IHRoYXQgdW5zZXRzIHRoaXMgZmxhZyBfYmVmb3JlXyBpbnZva2luZwpzY2Fu X2NoaWxkcmVuKCwgZGVjX2lmbGlnaHQsICkuIFRoaXMgbWF5IGxlYWQgdG8gaW5jb3JyZWN0IGlu ZmxpZ2h0CmNvdW50ZXJzIGZvciBzb21lIHNvY2tldHMuCgpUaGlzIGNoYW5nZSBmaXhlcyB0aGlz IGJ1ZyBieSBjaGFuZ2luZyBvcmRlciBvZiBvcGVyYXRpb25zOgpVTklYX0dDX0NBTkRJREFURSBp cyBub3cgdW5zZXQgb25seSBhZnRlciBhbGwgaW5mbGlnaHQgY291bnRlcnMgYXJlCnJlc3RvcmVk IHRvIHRoZSBvcmlnaW5hbCBzdGF0ZS4KCiAga2VybmVsIEJVRyBhdCBuZXQvdW5peC9nYXJiYWdl LmM6MTQ5IQogIFJJUDogMDAxMDpbPGZmZmZmZmZmODcxN2ViZjQ+XSAgWzxmZmZmZmZmZjg3MTdl YmY0Pl0KICB1bml4X25vdGluZmxpZ2h0KzB4M2I0LzB4NDkwIG5ldC91bml4L2dhcmJhZ2UuYzox NDkKICBDYWxsIFRyYWNlOgogICBbPGZmZmZmZmZmODcxNmNmYmY+XSB1bml4X2RldGFjaF9mZHMu aXNyYS4xOSsweGZmLzB4MTcwIG5ldC91bml4L2FmX3VuaXguYzoxNDg3CiAgIFs8ZmZmZmZmZmY4 NzE2ZjZhOT5dIHVuaXhfZGVzdHJ1Y3Rfc2NtKzB4ZjkvMHgyMTAgbmV0L3VuaXgvYWZfdW5peC5j OjE0OTYKICAgWzxmZmZmZmZmZjg2YTkwYTAxPl0gc2tiX3JlbGVhc2VfaGVhZF9zdGF0ZSsweDEw MS8weDIwMCBuZXQvY29yZS9za2J1ZmYuYzo2NTUKICAgWzxmZmZmZmZmZjg2YTk4MDhhPl0gc2ti X3JlbGVhc2VfYWxsKzB4MWEvMHg2MCBuZXQvY29yZS9za2J1ZmYuYzo2NjgKICAgWzxmZmZmZmZm Zjg2YTk4MGVhPl0gX19rZnJlZV9za2IrMHgxYS8weDMwIG5ldC9jb3JlL3NrYnVmZi5jOjY4NAog ICBbPGZmZmZmZmZmODZhOTgyODQ+XSBrZnJlZV9za2IrMHgxODQvMHg1NzAgbmV0L2NvcmUvc2ti dWZmLmM6NzA1CiAgIFs8ZmZmZmZmZmY4NzE3ODlkNT5dIHVuaXhfcmVsZWFzZV9zb2NrKzB4NWI1 LzB4YmQwIG5ldC91bml4L2FmX3VuaXguYzo1NTkKICAgWzxmZmZmZmZmZjg3MTc5MDM5Pl0gdW5p eF9yZWxlYXNlKzB4NDkvMHg5MCBuZXQvdW5peC9hZl91bml4LmM6ODM2CiAgIFs8ZmZmZmZmZmY4 NmE2OTRiMj5dIHNvY2tfcmVsZWFzZSsweDkyLzB4MWYwIG5ldC9zb2NrZXQuYzo1NzAKICAgWzxm ZmZmZmZmZjg2YTY5NjJiPl0gc29ja19jbG9zZSsweDFiLzB4MjAgbmV0L3NvY2tldC5jOjEwMTcK ICAgWzxmZmZmZmZmZjgxYTc2YjhlPl0gX19mcHV0KzB4MzRlLzB4OTEwIGZzL2ZpbGVfdGFibGUu YzoyMDgKICAgWzxmZmZmZmZmZjgxYTc3MWRhPl0gX19fX2ZwdXQrMHgxYS8weDIwIGZzL2ZpbGVf dGFibGUuYzoyNDQKICAgWzxmZmZmZmZmZjgxNDgzYWIwPl0gdGFza193b3JrX3J1bisweDFhMC8w eDI4MCBrZXJuZWwvdGFza193b3JrLmM6MTE2CiAgIFs8ICAgICBpbmxpbmUgICAgID5dIGV4aXRf dGFza193b3JrIGluY2x1ZGUvbGludXgvdGFza193b3JrLmg6MjEKICAgWzxmZmZmZmZmZjgxNDEy ODdhPl0gZG9fZXhpdCsweDE4M2EvMHgyNjQwIGtlcm5lbC9leGl0LmM6ODI4CiAgIFs8ZmZmZmZm ZmY4MTQxMzgzZT5dIGRvX2dyb3VwX2V4aXQrMHgxNGUvMHg0MjAga2VybmVsL2V4aXQuYzo5MzEK ICAgWzxmZmZmZmZmZjgxNDQyOWQzPl0gZ2V0X3NpZ25hbCsweDY2My8weDE4ODAga2VybmVsL3Np Z25hbC5jOjIzMDcKICAgWzxmZmZmZmZmZjgxMjM5YjQ1Pl0gZG9fc2lnbmFsKzB4YzUvMHgyMTkw IGFyY2gveDg2L2tlcm5lbC9zaWduYWwuYzo4MDcKICAgWzxmZmZmZmZmZjgxMDA2NjZhPl0gZXhp dF90b191c2VybW9kZV9sb29wKzB4MWVhLzB4MmQwCiAgYXJjaC94ODYvZW50cnkvY29tbW9uLmM6 MTU2CiAgIFs8ICAgICBpbmxpbmUgICAgID5dIHByZXBhcmVfZXhpdF90b191c2VybW9kZSBhcmNo L3g4Ni9lbnRyeS9jb21tb24uYzoxOTAKICAgWzxmZmZmZmZmZjgxMDA5NjkzPl0gc3lzY2FsbF9y ZXR1cm5fc2xvd3BhdGgrMHg0ZDMvMHg1NzAKICBhcmNoL3g4Ni9lbnRyeS9jb21tb24uYzoyNTkK ICAgWzxmZmZmZmZmZjg4MTQ3OGU2Pl0gZW50cnlfU1lTQ0FMTF82NF9mYXN0cGF0aCsweGM0LzB4 YzYKCkxpbms6IGh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE3LzMvNi8yNTIKU2lnbmVkLW9mZi1i eTogQW5kcmV5IFVsYW5vdiA8YW5kcmV5dUBnb29nbGUuY29tPgpSZXBvcnRlZC1ieTogRG1pdHJ5 IFZ5dWtvdiA8ZHZ5dWtvdkBnb29nbGUuY29tPgpGaXhlczogNjIwOTM0NCAoIm5ldDogdW5peDog Zml4IGluZmxpZ2h0IGNvdW50aW5nIGJ1ZyBpbiBnYXJiYWdlIGNvbGxlY3RvciIpClNpZ25lZC1v ZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvdW5p eC9nYXJiYWdlLmMgfCAxNyArKysrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDkgaW5z ZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9uZXQvdW5peC9nYXJiYWdl LmMgYi9uZXQvdW5peC9nYXJiYWdlLmMKaW5kZXggNmEwZDQ4NS4uYzM2NzU3ZSAxMDA2NDQKLS0t IGEvbmV0L3VuaXgvZ2FyYmFnZS5jCisrKyBiL25ldC91bml4L2dhcmJhZ2UuYwpAQCAtMTQ2LDYg KzE0Niw3IEBAIHZvaWQgdW5peF9ub3RpbmZsaWdodChzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIs IHN0cnVjdCBmaWxlICpmcCkKIAlpZiAocykgewogCQlzdHJ1Y3QgdW5peF9zb2NrICp1ID0gdW5p eF9zayhzKTsKIAorCQlCVUdfT04oIWF0b21pY19sb25nX3JlYWQoJnUtPmluZmxpZ2h0KSk7CiAJ CUJVR19PTihsaXN0X2VtcHR5KCZ1LT5saW5rKSk7CiAKIAkJaWYgKGF0b21pY19sb25nX2RlY19h bmRfdGVzdCgmdS0+aW5mbGlnaHQpKQpAQCAtMzQxLDYgKzM0MiwxNCBAQCB2b2lkIHVuaXhfZ2Mo dm9pZCkKIAl9CiAJbGlzdF9kZWwoJmN1cnNvcik7CiAKKwkvKiBOb3cgZ2NfY2FuZGlkYXRlcyBj b250YWlucyBvbmx5IGdhcmJhZ2UuICBSZXN0b3JlIG9yaWdpbmFsCisJICogaW5mbGlnaHQgY291 bnRlcnMgZm9yIHRoZXNlIGFzIHdlbGwsIGFuZCByZW1vdmUgdGhlIHNrYnVmZnMKKwkgKiB3aGlj aCBhcmUgY3JlYXRpbmcgdGhlIGN5Y2xlKHMpLgorCSAqLworCXNrYl9xdWV1ZV9oZWFkX2luaXQo JmhpdGxpc3QpOworCWxpc3RfZm9yX2VhY2hfZW50cnkodSwgJmdjX2NhbmRpZGF0ZXMsIGxpbmsp CisJCXNjYW5fY2hpbGRyZW4oJnUtPnNrLCBpbmNfaW5mbGlnaHQsICZoaXRsaXN0KTsKKwogCS8q IG5vdF9jeWNsZV9saXN0IGNvbnRhaW5zIHRob3NlIHNvY2tldHMgd2hpY2ggZG8gbm90IG1ha2Ug dXAgYQogCSAqIGN5Y2xlLiAgUmVzdG9yZSB0aGVzZSB0byB0aGUgaW5mbGlnaHQgbGlzdC4KIAkg Ki8KQEAgLTM1MCwxNCArMzU5LDYgQEAgdm9pZCB1bml4X2djKHZvaWQpCiAJCWxpc3RfbW92ZV90 YWlsKCZ1LT5saW5rLCAmZ2NfaW5mbGlnaHRfbGlzdCk7CiAJfQogCi0JLyogTm93IGdjX2NhbmRp ZGF0ZXMgY29udGFpbnMgb25seSBnYXJiYWdlLiAgUmVzdG9yZSBvcmlnaW5hbAotCSAqIGluZmxp Z2h0IGNvdW50ZXJzIGZvciB0aGVzZSBhcyB3ZWxsLCBhbmQgcmVtb3ZlIHRoZSBza2J1ZmZzCi0J ICogd2hpY2ggYXJlIGNyZWF0aW5nIHRoZSBjeWNsZShzKS4KLQkgKi8KLQlza2JfcXVldWVfaGVh ZF9pbml0KCZoaXRsaXN0KTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHUsICZnY19jYW5kaWRhdGVz LCBsaW5rKQotCXNjYW5fY2hpbGRyZW4oJnUtPnNrLCBpbmNfaW5mbGlnaHQsICZoaXRsaXN0KTsK LQogCXNwaW5fdW5sb2NrKCZ1bml4X2djX2xvY2spOwogCiAJLyogSGVyZSB3ZSBhcmUuIEhpdGxp c3QgaXMgZmlsbGVkLiBEaWUuICovCi0tIAoyLjEuMAoKCkZyb20gYzdjZWJiODE5ZDEwMGY2NDZh YjYxNWQ4MmUwNTAyZGYyM2YzM2VmOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9V VEYtOD9xP0JqPUMzPUI4cm49MjBNb3JrPz0gPGJqb3JuQG1vcmsubm8+CkRhdGU6IEZyaSwgMTcg TWFyIDIwMTcgMTc6MjA6NDggKzAxMDAKU3ViamVjdDogW1BBVENIIDA3LzI0XSBxbWlfd3dhbjog YWRkIERlbGwgRFc1ODExZQpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxh aW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKWyBVcHN0 cmVhbSBjb21taXQgNmJkODQ1ZDFjZjk4YjQ1YzYzNGJhYWNiODM4MTQzNmRhZDNjMmRkMCBdCgpU aGlzIGlzIGEgRGVsbCBicmFuZGVkIFNpZXJyYSBXaXJlbGVzcyBFTTc0NTUuIEl0IGlzIG9wZXJh dGluZyBpbgpNQklNIG1vZGUgYnkgZGVmYXVsdCwgYnV0IGNhbiBiZSBjb25maWd1cmVkIHRvIHBy b3ZpZGUgdHdvIFFNSS9STU5FVApmdW5jdGlvbnMuCgpTaWduZWQtb2ZmLWJ5OiBCasO4cm4gTW9y ayA8Ympvcm5AbW9yay5ubz4KU2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBk YXZlbWxvZnQubmV0PgotLS0KIGRyaXZlcnMvbmV0L3VzYi9xbWlfd3dhbi5jIHwgMiArKwogMSBm aWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Vz Yi9xbWlfd3dhbi5jIGIvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMKaW5kZXggMjRkNTI3Mi4u MGQ1MTlhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdXNiL3FtaV93d2FuLmMKKysrIGIvZHJp dmVycy9uZXQvdXNiL3FtaV93d2FuLmMKQEAgLTkyNCw2ICs5MjQsOCBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHVzYl9kZXZpY2VfaWQgcHJvZHVjdHNbXSA9IHsKIAl7UU1JX0ZJWEVEX0lOVEYoMHg0 MTNjLCAweDgxYTksIDgpfSwJLyogRGVsbCBXaXJlbGVzcyA1ODA4ZSBHb2JpKFRNKSA0RyBMVEUg TW9iaWxlIEJyb2FkYmFuZCBDYXJkICovCiAJe1FNSV9GSVhFRF9JTlRGKDB4NDEzYywgMHg4MWIx LCA4KX0sCS8qIERlbGwgV2lyZWxlc3MgNTgwOWUgR29iaShUTSkgNEcgTFRFIE1vYmlsZSBCcm9h ZGJhbmQgQ2FyZCAqLwogCXtRTUlfRklYRURfSU5URigweDQxM2MsIDB4ODFiMywgOCl9LAkvKiBE ZWxsIFdpcmVsZXNzIDU4MDllIEdvYmkoVE0pIDRHIExURSBNb2JpbGUgQnJvYWRiYW5kIENhcmQg KHJldjMpICovCisJe1FNSV9GSVhFRF9JTlRGKDB4NDEzYywgMHg4MWI2LCA4KX0sCS8qIERlbGwg V2lyZWxlc3MgNTgxMWUgKi8KKwl7UU1JX0ZJWEVEX0lOVEYoMHg0MTNjLCAweDgxYjYsIDEwKX0s CS8qIERlbGwgV2lyZWxlc3MgNTgxMWUgKi8KIAl7UU1JX0ZJWEVEX0lOVEYoMHgwM2YwLCAweDRl MWQsIDgpfSwJLyogSFAgbHQ0MTExIExURS9FVi1ETy9IU1BBKyBHb2JpIDRHIE1vZHVsZSAqLwog CXtRTUlfRklYRURfSU5URigweDIyZGUsIDB4OTA2MSwgMyl9LAkvKiBXZVRlbGVjb20gV1BELTYw ME4gKi8KIAl7UU1JX0ZJWEVEX0lOVEYoMHgxZTBlLCAweDkwMDEsIDUpfSwJLyogU0lNQ29tIDcy MzBFICovCi0tIAoyLjEuMAoKCkZyb20gNzhmODZkZGUwM2RjNWFmYzEwOWVjMjg2ZjExMWU1Zjg4 NjJiZWUzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRGF2aWQgQWhlcm4gPGRzYUBj dW11bHVzbmV0d29ya3MuY29tPgpEYXRlOiBGcmksIDE3IE1hciAyMDE3IDE2OjA3OjExIC0wNzAw ClN1YmplY3Q6IFtQQVRDSCAwOC8yNF0gbmV0OiB2cmY6IFJlc2V0IHJ0NmlfaWRldiBpbiBsb2Nh bCBkc3QgYWZ0ZXIgcHV0CgpbIFVwc3RyZWFtIGNvbW1pdCAzZGM4NTdmMGU4ZmMyMjYxMGE1OWNi YjM0NmJhNjJjNmU5MjE4NjNmIF0KClRoZSBWUkYgZHJpdmVyIHRha2VzIGEgcmVmZXJlbmNlIHRv IHRoZSBpbmV0Nl9kZXYgb24gdGhlIFZSRiBkZXZpY2UgZm9yCml0cyBydDZfbG9jYWwgZHN0IHdo ZW4gaGFuZGxpbmcgbG9jYWwgdHJhZmZpYyB0aHJvdWdoIHRoZSBWUkYgZGV2aWNlIGFzCmEgbG9v cGJhY2suIFdoZW4gdGhlIGRldmljZSBpcyBkZWxldGVkIHRoZSBkcml2ZXIgZG9lcyBhIHB1dCBv biB0aGUgaWRldgpidXQgZG9lcyBub3QgcmVzZXQgcnQ2aV9pZGV2IGluIHRoZSBydDZfaW5mbyBz dHJ1Y3QuIFdoZW4gdGhlIGRzdCBpcwpkZXN0cm95ZWQsIGRzdF9kZXN0cm95IGNhbGxzIGlwNl9k c3RfZGVzdHJveSB3aGljaCBkb2VzIGEgc2Vjb25kIHB1dCBmb3IKd2hhdCBpcyBlc3NlbnRpYWxs eSB0aGUgc2FtZSByZWZlcmVuY2UgY2F1c2luZyBpdCB0byBiZSBwcmVtYXR1cmVseSBmcmVlZC4K UmVzZXQgcnQ2aV9pZGV2IGFmdGVyIHRoZSBwdXQgaW4gdGhlIHZyZiBkcml2ZXIuCgpGaXhlczog YjQ4NjlhYTJmODgxZSAoIm5ldDogdnJmOiBpcHY2IHN1cHBvcnQgZm9yIGxvY2FsIHRyYWZmaWMg dG8KICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBhZGRyZXNzZXMiKQpTaWduZWQtb2ZmLWJ5 OiBEYXZpZCBBaGVybiA8ZHNhQGN1bXVsdXNuZXR3b3Jrcy5jb20+ClNpZ25lZC1vZmYtYnk6IERh dmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJzL25ldC92cmYu YyB8IDQgKysrLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZyZi5jIGIvZHJpdmVycy9uZXQvdnJmLmMKaW5k ZXggNjgyYWFjMC4uOTIxZmVmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnJmLmMKKysrIGIv ZHJpdmVycy9uZXQvdnJmLmMKQEAgLTQ2Miw4ICs0NjIsMTAgQEAgc3RhdGljIHZvaWQgdnJmX3J0 Nl9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRfdnJmICp2cmYpCiAJ fQogCiAJaWYgKHJ0Nl9sb2NhbCkgewotCQlpZiAocnQ2X2xvY2FsLT5ydDZpX2lkZXYpCisJCWlm IChydDZfbG9jYWwtPnJ0NmlfaWRldikgewogCQkJaW42X2Rldl9wdXQocnQ2X2xvY2FsLT5ydDZp X2lkZXYpOworCQkJcnQ2X2xvY2FsLT5ydDZpX2lkZXYgPSBOVUxMOworCQl9CiAKIAkJZHN0ID0g JnJ0Nl9sb2NhbC0+ZHN0OwogCQlkZXZfcHV0KGRzdC0+ZGV2KTsKLS0gCjIuMS4wCgoKRnJvbSBi NjM4ZTBhZTQ1ZWVkMmQ1MDFjOGNjMzkzYWRlNTllMDY1ZWQzMzM0IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBPciBHZXJsaXR6IDxvZ2VybGl0ekBtZWxsYW5veC5jb20+CkRhdGU6IFR1 ZSwgMjEgTWFyIDIwMTcgMTU6NTk6MTIgKzAyMDAKU3ViamVjdDogW1BBVENIIDA5LzI0XSBuZXQv bWx4NTogQWRkIG1pc3NpbmcgZW50cmllcyBmb3Igc2V0L3F1ZXJ5IHJhdGUgbGltaXQKIGNvbW1h bmRzCgpbIFVwc3RyZWFtIGNvbW1pdCAxZjMwYTg2YzU4MDkzMDQ2ZGMzZTQ5YzIzZDI2MTg4OTRl MDk4ZjdhIF0KClRoZSBzd2l0Y2ggY2FzZXMgZm9yIHRoZSByYXRlIGxpbWl0IHNldCBhbmQgcXVl cnkgY29tbWFuZHMgd2VyZQptaXNzaW5nLCB3aGljaCBjb3VsZCBnZXQgdXMgd3JvbmcgdW5kZXIg ZncgZXJyb3Igb3IgZHJpdmVyIHJlc2V0CmZsb3csIGZpeCB0aGF0LgoKRml4ZXM6IDE0NjZjYzVi MjNkMSAoJ25ldC9tbHg1OiBSYXRlIGxpbWl0IHRhYmxlcyBzdXBwb3J0JykKU2lnbmVkLW9mZi1i eTogT3IgR2VybGl0eiA8b2dlcmxpdHpAbWVsbGFub3guY29tPgpSZXZpZXdlZC1ieTogSGFkYXIg SGVuIFppb24gPGhhZGFyaEBtZWxsYW5veC5jb20+ClNpZ25lZC1vZmYtYnk6IFNhZWVkIE1haGFt ZWVkIDxzYWVlZG1AbWVsbGFub3guY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIg PGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv bWx4NS9jb3JlL2NtZC5jIHwgNCArKysrCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCsp CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Nt ZC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2NtZC5jCmluZGV4 IGNhYTgzN2UuLmEzODAzNTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxh bm94L21seDUvY29yZS9jbWQuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9t bHg1L2NvcmUvY21kLmMKQEAgLTM2MSw2ICszNjEsOCBAQCBzdGF0aWMgaW50IG1seDVfaW50ZXJu YWxfZXJyX3JldF92YWx1ZShzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqZGV2LCB1MTYgb3AsCiAJY2Fz ZSBNTFg1X0NNRF9PUF9RVUVSWV9WUE9SVF9DT1VOVEVSOgogCWNhc2UgTUxYNV9DTURfT1BfQUxM T0NfUV9DT1VOVEVSOgogCWNhc2UgTUxYNV9DTURfT1BfUVVFUllfUV9DT1VOVEVSOgorCWNhc2Ug TUxYNV9DTURfT1BfU0VUX1JBVEVfTElNSVQ6CisJY2FzZSBNTFg1X0NNRF9PUF9RVUVSWV9SQVRF X0xJTUlUOgogCWNhc2UgTUxYNV9DTURfT1BfQUxMT0NfUEQ6CiAJY2FzZSBNTFg1X0NNRF9PUF9B TExPQ19VQVI6CiAJY2FzZSBNTFg1X0NNRF9PUF9DT05GSUdfSU5UX01PREVSQVRJT046CkBAIC00 OTcsNiArNDk5LDggQEAgY29uc3QgY2hhciAqbWx4NV9jb21tYW5kX3N0cihpbnQgY29tbWFuZCkK IAlNTFg1X0NPTU1BTkRfU1RSX0NBU0UoQUxMT0NfUV9DT1VOVEVSKTsKIAlNTFg1X0NPTU1BTkRf U1RSX0NBU0UoREVBTExPQ19RX0NPVU5URVIpOwogCU1MWDVfQ09NTUFORF9TVFJfQ0FTRShRVUVS WV9RX0NPVU5URVIpOworCU1MWDVfQ09NTUFORF9TVFJfQ0FTRShTRVRfUkFURV9MSU1JVCk7CisJ TUxYNV9DT01NQU5EX1NUUl9DQVNFKFFVRVJZX1JBVEVfTElNSVQpOwogCU1MWDVfQ09NTUFORF9T VFJfQ0FTRShBTExPQ19QRCk7CiAJTUxYNV9DT01NQU5EX1NUUl9DQVNFKERFQUxMT0NfUEQpOwog CU1MWDVfQ09NTUFORF9TVFJfQ0FTRShBTExPQ19VQVIpOwotLSAKMi4xLjAKCgpGcm9tIDBlOTJj ZTZlNmZjZGJiYjUxZTg3NmJmYWJlMmNkM2NkNTdkMTM3OTAgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IE9yIEdlcmxpdHogPG9nZXJsaXR6QG1lbGxhbm94LmNvbT4KRGF0ZTogVHVlLCAy MSBNYXIgMjAxNyAxNTo1OToxMyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTAvMjRdIG5ldC9tbHg1 ZTogQ2hhbmdlIHRoZSBUQyBvZmZsb2FkIHJ1bGUgYWRkL2RlbCBjb2RlIHBhdGgKIHRvIGJlIHBl ciBOSUMgb3IgRS1Td2l0Y2gKClsgVXBzdHJlYW0gY29tbWl0IGQ4NWNkY2NiYjNmZTlhNjMyZWM5 ZDBmNGU0NTI2YzhjODRmYzM1MjMgXQoKUmVmYWN0b3IgdGhlIGNvZGUgdG8gZGVhbCB3aXRoIGFk ZC9kZWwgVEMgcnVsZXMgdG8gaGF2ZSBoYW5kbGVyIHBlciBOSUMvRS1zd2l0Y2gKb2ZmbG9hZGlu ZyB1c2UgY2FzZSwgYW5kIHB1c2ggdGhlIGxhdHRlciBpbnRvIHRoZSBlLXN3aXRjaCBjb2RlLiBU aGlzIHByb3ZpZGVzCmJldHRlciBzZXBhcmF0aW9uIGFuZCBpcyB0byBiZSB1c2VkIGluIGRvd24t c3RyZWFtIHBhdGNoIGZvciBhcHBseWluZyBhIGZpeC4KCkZpeGVzOiBiZmZhYTkxNjU4OGUgKCJu ZXQvbWx4NTogRS1Td2l0Y2gsIEFkZCBjb250cm9sIGZvciBpbmxpbmUgbW9kZSIpClNpZ25lZC1v ZmYtYnk6IE9yIEdlcmxpdHogPG9nZXJsaXR6QG1lbGxhbm94LmNvbT4KUmV2aWV3ZWQtYnk6IFJv aSBEYXlhbiA8cm9pZEBtZWxsYW5veC5jb20+ClNpZ25lZC1vZmYtYnk6IFNhZWVkIE1haGFtZWVk IDxzYWVlZG1AbWVsbGFub3guY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRh dmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NS9jb3JlL2VuX3RjLmMgICAgfCA1NyArKysrKysrKysrKysrKystLS0tLS0tCiBkcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oICB8ICA1ICsrCiAuLi4vZXRo ZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMuYyB8IDE0ICsrKysrKwog MyBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYyBi L2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jCmluZGV4IDJl YmJlODAuLmIyMzc4YTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94 L21seDUvY29yZS9lbl90Yy5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21s eDUvY29yZS9lbl90Yy5jCkBAIC0xMjgsNiArMTI4LDIzIEBAIG1seDVlX3RjX2FkZF9uaWNfZmxv dyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwKIAlyZXR1cm4gcnVsZTsKIH0KIAorc3RhdGljIHZv aWQgbWx4NWVfdGNfZGVsX25pY19mbG93KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LAorCQkJCSAg c3RydWN0IG1seDVlX3RjX2Zsb3cgKmZsb3cpCit7CisJc3RydWN0IG1seDVfZmMgKmNvdW50ZXIg PSBOVUxMOworCisJaWYgKCFJU19FUlIoZmxvdy0+cnVsZSkpIHsKKwkJY291bnRlciA9IG1seDVf Zmxvd19ydWxlX2NvdW50ZXIoZmxvdy0+cnVsZSk7CisJCW1seDVfZGVsX2Zsb3dfcnVsZXMoZmxv dy0+cnVsZSk7CisJCW1seDVfZmNfZGVzdHJveShwcml2LT5tZGV2LCBjb3VudGVyKTsKKwl9CisK KwlpZiAoIW1seDVlX3RjX251bV9maWx0ZXJzKHByaXYpICYmIChwcml2LT5mcy50Yy50KSkgewor CQltbHg1X2Rlc3Ryb3lfZmxvd190YWJsZShwcml2LT5mcy50Yy50KTsKKwkJcHJpdi0+ZnMudGMu dCA9IE5VTEw7CisJfQorfQorCiBzdGF0aWMgc3RydWN0IG1seDVfZmxvd19oYW5kbGUgKgogbWx4 NWVfdGNfYWRkX2ZkYl9mbG93KHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LAogCQkgICAgICBzdHJ1 Y3QgbWx4NV9mbG93X3NwZWMgKnNwZWMsCkBAIC0xNDQsNyArMTYxLDI0IEBAIG1seDVlX3RjX2Fk ZF9mZGJfZmxvdyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwKIH0KIAogc3RhdGljIHZvaWQgbWx4 NWVfZGV0YWNoX2VuY2FwKHN0cnVjdCBtbHg1ZV9wcml2ICpwcml2LAotCQkJICAgICAgIHN0cnVj dCBtbHg1ZV90Y19mbG93ICpmbG93KSB7CisJCQkgICAgICAgc3RydWN0IG1seDVlX3RjX2Zsb3cg KmZsb3cpOworCitzdGF0aWMgdm9pZCBtbHg1ZV90Y19kZWxfZmRiX2Zsb3coc3RydWN0IG1seDVl X3ByaXYgKnByaXYsCisJCQkJICBzdHJ1Y3QgbWx4NWVfdGNfZmxvdyAqZmxvdykKK3sKKwlzdHJ1 Y3QgbWx4NV9lc3dpdGNoICplc3cgPSBwcml2LT5tZGV2LT5wcml2LmVzd2l0Y2g7CisKKwltbHg1 X2Vzd2l0Y2hfZGVsX29mZmxvYWRlZF9ydWxlKGVzdywgZmxvdy0+cnVsZSwgZmxvdy0+YXR0cik7 CisKKwltbHg1X2Vzd2l0Y2hfZGVsX3ZsYW5fYWN0aW9uKGVzdywgZmxvdy0+YXR0cik7CisKKwlp ZiAoZmxvdy0+YXR0ci0+YWN0aW9uICYgTUxYNV9GTE9XX0NPTlRFWFRfQUNUSU9OX0VOQ0FQKQor CQltbHg1ZV9kZXRhY2hfZW5jYXAocHJpdiwgZmxvdyk7Cit9CisKK3N0YXRpYyB2b2lkIG1seDVl X2RldGFjaF9lbmNhcChzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdiwKKwkJCSAgICAgICBzdHJ1Y3Qg bWx4NWVfdGNfZmxvdyAqZmxvdykKK3sKIAlzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0ID0gZmxvdy0+ ZW5jYXAubmV4dDsKIAogCWxpc3RfZGVsKCZmbG93LT5lbmNhcCk7CkBAIC0xNjksMjQgKzIwMywx MSBAQCBzdGF0aWMgdm9pZCBtbHg1ZV90Y19kZWxfZmxvdyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJp diwKIAkJCSAgICAgIHN0cnVjdCBtbHg1ZV90Y19mbG93ICpmbG93KQogewogCXN0cnVjdCBtbHg1 X2Vzd2l0Y2ggKmVzdyA9IHByaXYtPm1kZXYtPnByaXYuZXN3aXRjaDsKLQlzdHJ1Y3QgbWx4NV9m YyAqY291bnRlciA9IE5VTEw7Ci0KLQlpZiAoIUlTX0VSUihmbG93LT5ydWxlKSkgewotCQljb3Vu dGVyID0gbWx4NV9mbG93X3J1bGVfY291bnRlcihmbG93LT5ydWxlKTsKLQkJbWx4NV9kZWxfZmxv d19ydWxlcyhmbG93LT5ydWxlKTsKLQkJbWx4NV9mY19kZXN0cm95KHByaXYtPm1kZXYsIGNvdW50 ZXIpOwotCX0KIAotCWlmIChlc3cgJiYgZXN3LT5tb2RlID09IFNSSU9WX09GRkxPQURTKSB7Ci0J CW1seDVfZXN3aXRjaF9kZWxfdmxhbl9hY3Rpb24oZXN3LCBmbG93LT5hdHRyKTsKLQkJaWYgKGZs b3ctPmF0dHItPmFjdGlvbiAmIE1MWDVfRkxPV19DT05URVhUX0FDVElPTl9FTkNBUCkKLQkJCW1s eDVlX2RldGFjaF9lbmNhcChwcml2LCBmbG93KTsKLQl9Ci0KLQlpZiAoIW1seDVlX3RjX251bV9m aWx0ZXJzKHByaXYpICYmIChwcml2LT5mcy50Yy50KSkgewotCQltbHg1X2Rlc3Ryb3lfZmxvd190 YWJsZShwcml2LT5mcy50Yy50KTsKLQkJcHJpdi0+ZnMudGMudCA9IE5VTEw7Ci0JfQorCWlmIChl c3cgJiYgZXN3LT5tb2RlID09IFNSSU9WX09GRkxPQURTKQorCQltbHg1ZV90Y19kZWxfZmRiX2Zs b3cocHJpdiwgZmxvdyk7CisJZWxzZQorCQltbHg1ZV90Y19kZWxfbmljX2Zsb3cocHJpdiwgZmxv dyk7CiB9CiAKIHN0YXRpYyB2b2lkIHBhcnNlX3Z4bGFuX2F0dHIoc3RydWN0IG1seDVfZmxvd19z cGVjICpzcGVjLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4 NS9jb3JlL2Vzd2l0Y2guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29y ZS9lc3dpdGNoLmgKaW5kZXggODY2MWRkMy4uNDRjY2QwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9u ZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2guaAorKysgYi9kcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oCkBAIC0yNjMsNiArMjYzLDEx IEBAIHN0cnVjdCBtbHg1X2Zsb3dfaGFuZGxlICoKIG1seDVfZXN3aXRjaF9hZGRfb2ZmbG9hZGVk X3J1bGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LAogCQkJCXN0cnVjdCBtbHg1X2Zsb3dfc3Bl YyAqc3BlYywKIAkJCQlzdHJ1Y3QgbWx4NV9lc3dfZmxvd19hdHRyICphdHRyKTsKK3ZvaWQKK21s eDVfZXN3aXRjaF9kZWxfb2ZmbG9hZGVkX3J1bGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LAor CQkJCXN0cnVjdCBtbHg1X2Zsb3dfaGFuZGxlICpydWxlLAorCQkJCXN0cnVjdCBtbHg1X2Vzd19m bG93X2F0dHIgKmF0dHIpOworCiBzdHJ1Y3QgbWx4NV9mbG93X2hhbmRsZSAqCiBtbHg1X2Vzd2l0 Y2hfY3JlYXRlX3Zwb3J0X3J4X3J1bGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCBpbnQgdnBv cnQsIHUzMiB0aXJuKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFu b3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21l bGxhbm94L21seDUvY29yZS9lc3dpdGNoX29mZmxvYWRzLmMKaW5kZXggNTk1ZjdjNy4uOGEyOTk1 OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vz d2l0Y2hfb2ZmbG9hZHMuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1 L2NvcmUvZXN3aXRjaF9vZmZsb2Fkcy5jCkBAIC05Nyw2ICs5NywyMCBAQCBtbHg1X2Vzd2l0Y2hf YWRkX29mZmxvYWRlZF9ydWxlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywKIAlyZXR1cm4gcnVs ZTsKIH0KIAordm9pZAorbWx4NV9lc3dpdGNoX2RlbF9vZmZsb2FkZWRfcnVsZShzdHJ1Y3QgbWx4 NV9lc3dpdGNoICplc3csCisJCQkJc3RydWN0IG1seDVfZmxvd19oYW5kbGUgKnJ1bGUsCisJCQkJ c3RydWN0IG1seDVfZXN3X2Zsb3dfYXR0ciAqYXR0cikKK3sKKwlzdHJ1Y3QgbWx4NV9mYyAqY291 bnRlciA9IE5VTEw7CisKKwlpZiAoIUlTX0VSUihydWxlKSkgeworCQljb3VudGVyID0gbWx4NV9m bG93X3J1bGVfY291bnRlcihydWxlKTsKKwkJbWx4NV9kZWxfZmxvd19ydWxlcyhydWxlKTsKKwkJ bWx4NV9mY19kZXN0cm95KGVzdy0+ZGV2LCBjb3VudGVyKTsKKwl9Cit9CisKIHN0YXRpYyBpbnQg ZXN3X3NldF9nbG9iYWxfdmxhbl9wb3Aoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LCB1OCB2YWwp CiB7CiAJc3RydWN0IG1seDVfZXN3aXRjaF9yZXAgKnJlcDsKLS0gCjIuMS4wCgoKRnJvbSBiOTdi YjNiNTczNDY3OTg1ZjA5YmY5Y2NlM2Q0M2I5MWU2NDU4MjQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBSb2kgRGF5YW4gPHJvaWRAbWVsbGFub3guY29tPgpEYXRlOiBUdWUsIDIxIE1h ciAyMDE3IDE1OjU5OjE0ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxMS8yNF0gbmV0L21seDU6IEUt U3dpdGNoLCBEb24ndCBhbGxvdyBjaGFuZ2luZyBpbmxpbmUgbW9kZQogd2hlbiBmbG93cyBhcmUg Y29uZmlndXJlZAoKWyBVcHN0cmVhbSBjb21taXQgMzc1ZjUxZTJiNWI3YjlhNDJiMzEzOWFlYTUx OWNiYjFiZmM1ZDZlZiBdCgpDaGFuZ2luZyB0aGUgZXN3aXRjaCBpbmxpbmUgbW9kZSBjYW4gcG90 ZW50aWFsbHkgY2F1c2UgYWxyZWFkeSBjb25maWd1cmVkCmZsb3dzIG5vdCB0byBtYXRjaCB0aGUg cG9saWN5LiBFLmcuIHNldCBwb2xpY3kgTDQsIGFkZCBzb21lIEw0IHJ1bGVzLApzZXQgcG9saWN5 IHRvIEwyIC0tPiBiYWQhIEhlbmNlIHdlIGRpc2FsbG93IGl0LgoKS2VlcCB0cmFjayBvZiBob3cg bWFueSBvZmZsb2FkZWQgcnVsZXMgYXJlIG5vdyBzZXQgYW5kIHJlZnVzZQppbmxpbmUgbW9kZSBj aGFuZ2VzIGlmIHRoaXMgaXNuJ3QgemVyby4KCkZpeGVzOiBiZmZhYTkxNjU4OGUgKCJuZXQvbWx4 NTogRS1Td2l0Y2gsIEFkZCBjb250cm9sIGZvciBpbmxpbmUgbW9kZSIpClNpZ25lZC1vZmYtYnk6 IFJvaSBEYXlhbiA8cm9pZEBtZWxsYW5veC5jb20+ClJldmlld2VkLWJ5OiBPciBHZXJsaXR6IDxv Z2VybGl0ekBtZWxsYW5veC5jb20+ClNpZ25lZC1vZmYtYnk6IFNhZWVkIE1haGFtZWVkIDxzYWVl ZG1AbWVsbGFub3guY29tPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRh dmVtbG9mdC5uZXQ+Ci0tLQogZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3Jl L2Vzd2l0Y2guaCAgICAgICAgICB8IDEgKwogZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv bWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9hZHMuYyB8IDggKysrKysrKysKIDIgZmlsZXMgY2hhbmdl ZCwgOSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVs bGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2guaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94 L21seDUvY29yZS9lc3dpdGNoLmgKaW5kZXggNDRjY2QwYy4uYjU5NjdkZiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2guaAorKysgYi9k cml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRjaC5oCkBAIC0yMDEs NiArMjAxLDcgQEAgc3RydWN0IG1seDVfZXN3X29mZmxvYWQgewogCXN0cnVjdCBtbHg1X2Vzd2l0 Y2hfcmVwICp2cG9ydF9yZXBzOwogCURFQ0xBUkVfSEFTSFRBQkxFKGVuY2FwX3RibCwgOCk7CiAJ dTggaW5saW5lX21vZGU7CisJdTY0IG51bV9mbG93czsKIH07CiAKIHN0cnVjdCBtbHg1X2Vzd2l0 Y2ggewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3Jl L2Vzd2l0Y2hfb2ZmbG9hZHMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUv Y29yZS9lc3dpdGNoX29mZmxvYWRzLmMKaW5kZXggOGEyOTk1OS4uN2JjZTJiZCAxMDA2NDQKLS0t IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vzd2l0Y2hfb2ZmbG9h ZHMuYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZXN3aXRj aF9vZmZsb2Fkcy5jCkBAIC05Myw2ICs5Myw4IEBAIG1seDVfZXN3aXRjaF9hZGRfb2ZmbG9hZGVk X3J1bGUoc3RydWN0IG1seDVfZXN3aXRjaCAqZXN3LAogCQkJCSAgIHNwZWMsICZmbG93X2FjdCwg ZGVzdCwgaSk7CiAJaWYgKElTX0VSUihydWxlKSkKIAkJbWx4NV9mY19kZXN0cm95KGVzdy0+ZGV2 LCBjb3VudGVyKTsKKwllbHNlCisJCWVzdy0+b2ZmbG9hZHMubnVtX2Zsb3dzKys7CiAKIAlyZXR1 cm4gcnVsZTsKIH0KQEAgLTEwOCw2ICsxMTAsNyBAQCBtbHg1X2Vzd2l0Y2hfZGVsX29mZmxvYWRl ZF9ydWxlKHN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdywKIAkJY291bnRlciA9IG1seDVfZmxvd19y dWxlX2NvdW50ZXIocnVsZSk7CiAJCW1seDVfZGVsX2Zsb3dfcnVsZXMocnVsZSk7CiAJCW1seDVf ZmNfZGVzdHJveShlc3ctPmRldiwgY291bnRlcik7CisJCWVzdy0+b2ZmbG9hZHMubnVtX2Zsb3dz LS07CiAJfQogfQogCkBAIC05MTksNiArOTIyLDExIEBAIGludCBtbHg1X2RldmxpbmtfZXN3aXRj aF9pbmxpbmVfbW9kZV9zZXQoc3RydWN0IGRldmxpbmsgKmRldmxpbmssIHU4IG1vZGUpCiAJICAg IE1MWDVfQ0FQX0lOTElORV9NT0RFX1ZQT1JUX0NPTlRFWFQpCiAJCXJldHVybiAtRU9QTk9UU1VQ UDsKIAorCWlmIChlc3ctPm9mZmxvYWRzLm51bV9mbG93cyA+IDApIHsKKwkJZXN3X3dhcm4oZGV2 LCAiQ2FuJ3Qgc2V0IGlubGluZSBtb2RlIHdoZW4gZmxvd3MgYXJlIGNvbmZpZ3VyZWRcbiIpOwor CQlyZXR1cm4gLUVPUE5PVFNVUFA7CisJfQorCiAJZXJyID0gZXN3X2lubGluZV9tb2RlX2Zyb21f ZGV2bGluayhtb2RlLCAmbWx4NV9tb2RlKTsKIAlpZiAoZXJyKQogCQlnb3RvIG91dDsKLS0gCjIu MS4wCgoKRnJvbSBhZGYxOGQ2NWUyNWI2MmZmMjhhODIzMjgwYmNlZDdkMDk3NmUwYjNmIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBPciBHZXJsaXR6IDxvZ2VybGl0ekBtZWxsYW5veC5j b20+CkRhdGU6IFR1ZSwgMjEgTWFyIDIwMTcgMTU6NTk6MTUgKzAyMDAKU3ViamVjdDogW1BBVENI IDEyLzI0XSBuZXQvbWx4NWU6IFVzZSB0aGUgcHJvcGVyIFVBUEkgdmFsdWVzIHdoZW4gb2ZmbG9h ZGluZwogVEMgdmxhbiBhY3Rpb25zCgpbIFVwc3RyZWFtIGNvbW1pdCAwOWM5MWRkZjJjZDMzNDg5 YzJjMTRlZGZlZjQzYWUzOGQ0MTI4ODhlIF0KCkN1cnJlbnRseSB3ZSB1c2UgdGhlIG5vbiBVQVBJ IHZhbHVlcyBhbmQgd2UgbWlzcyBlcnJpbmcgb24KdGhlIG1vZGlmeSBhY3Rpb24gd2hpY2ggaXMg bm90IHN1cHBvcnRlZCwgZml4IHRoYXQuCgpGaXhlczogOGIzMjU4MGRmMWNiICgnbmV0L21seDVl OiBBZGQgVEMgdmxhbiBhY3Rpb24gZm9yIFNSSU9WIG9mZmxvYWRzJykKU2lnbmVkLW9mZi1ieTog T3IgR2VybGl0eiA8b2dlcmxpdHpAbWVsbGFub3guY29tPgpSZXBvcnRlZC1ieTogUGV0ciBNYWNo YXRhIDxwZXRybUBtZWxsYW5veC5jb20+ClJldmlld2VkLWJ5OiBKaXJpIFBpcmtvIDxqaXJpQG1l bGxhbm94LmNvbT4KU2lnbmVkLW9mZi1ieTogU2FlZWQgTWFoYW1lZWQgPHNhZWVkbUBtZWxsYW5v eC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5l dD4KLS0tCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdGMuYyB8 IDYgKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9l bl90Yy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMK aW5kZXggYjIzNzhhOC4uY2JjMDFhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQv bWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVs bGFub3gvbWx4NS9jb3JlL2VuX3RjLmMKQEAgLTk3NCwxNCArOTc0LDE2IEBAIHN0YXRpYyBpbnQg cGFyc2VfdGNfZmRiX2FjdGlvbnMoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsIHN0cnVjdCB0Y2Zf ZXh0cyAqZXh0cywKIAkJfQogCiAJCWlmIChpc190Y2ZfdmxhbihhKSkgewotCQkJaWYgKHRjZl92 bGFuX2FjdGlvbihhKSA9PSBWTEFOX0ZfUE9QKSB7CisJCQlpZiAodGNmX3ZsYW5fYWN0aW9uKGEp ID09IFRDQV9WTEFOX0FDVF9QT1ApIHsKIAkJCQlhdHRyLT5hY3Rpb24gfD0gTUxYNV9GTE9XX0NP TlRFWFRfQUNUSU9OX1ZMQU5fUE9QOwotCQkJfSBlbHNlIGlmICh0Y2Zfdmxhbl9hY3Rpb24oYSkg PT0gVkxBTl9GX1BVU0gpIHsKKwkJCX0gZWxzZSBpZiAodGNmX3ZsYW5fYWN0aW9uKGEpID09IFRD QV9WTEFOX0FDVF9QVVNIKSB7CiAJCQkJaWYgKHRjZl92bGFuX3B1c2hfcHJvdG8oYSkgIT0gaHRv bnMoRVRIX1BfODAyMVEpKQogCQkJCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAKIAkJCQlhdHRyLT5h Y3Rpb24gfD0gTUxYNV9GTE9XX0NPTlRFWFRfQUNUSU9OX1ZMQU5fUFVTSDsKIAkJCQlhdHRyLT52 bGFuID0gdGNmX3ZsYW5fcHVzaF92aWQoYSk7CisJCQl9IGVsc2UgeyAvKiBhY3Rpb24gaXMgVENB X1ZMQU5fQUNUX01PRElGWSAqLworCQkJCXJldHVybiAtRU9QTk9UU1VQUDsKIAkJCX0KIAkJCWNv bnRpbnVlOwogCQl9Ci0tIAoyLjEuMAoKCkZyb20gNGNiZmNkODU5ZjllMjhmOTY1NDk2ZmY2YWEy MDY0MjRkMTUyNWE1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogUGF1bCBCbGFrZXkg PHBhdWxiQG1lbGxhbm94LmNvbT4KRGF0ZTogVHVlLCAyMSBNYXIgMjAxNyAxNTo1OToxNiArMDIw MApTdWJqZWN0OiBbUEFUQ0ggMTMvMjRdIG5ldC9tbHg1ZTogQXZvaWQgc3VwcG9ydGluZyB1ZHAg dHVubmVsIHBvcnQgbmRvIGZvciBWRgogcmVwcwoKWyBVcHN0cmVhbSBjb21taXQgMWFkOWEwMGFl MGVmYzJlOTMzNzE0OGQ2YzM4MmZhZDNkMjdiZjk5YSBdCgpUaGlzIHdhcyBhZGRlZCB0byBhbGxv dyB0aGUgVEMgb2ZmbG9hZGluZyBjb2RlIHRvIGlkZW50aWZ5IG9mZmxvYWRpbmcKZW5jYXAvZGVj YXAgdnhsYW4gcnVsZXMuCgpUaGUgVkYgcmVwcyBhcmUgZWZmZWN0aXZlbHkgcmVsYXRlZCB0byB0 aGUgc2FtZSBtbHg1IFBDSSBkZXZpY2UgYXMgdGhlClBGLiBTaW5jZSB0aGUga2VybmVsIGludm9r ZXMgdGhlIChzYXkpIGRlbGV0ZSBuZG8gZm9yIGVhY2ggbmV0ZGV2LCB0aGUKRlcgZXJyZWQgb24g bXVsdGlwbGUgdnhsYW4gZHN0IHBvcnQgZGVsZXRlcyB3aGVuIHRoZSBwb3J0IHdhcyBkZWxldGVk CmZyb20gdGhlIHN5c3RlbS4KCldlIGZpeCB0aGF0IGJ5IGtlZXBpbmcgdGhlIHJlZ2lzdHJhdGlv biB0byBiZSBjYXJyaWVkIG91dCBvbmx5IGJ5IHRoZQpQRi4gU2luY2UgdGhlIFBGIHNlcnZlcyBh cyB0aGUgdXBsaW5rIGRldmljZSwgdGhlIFZGIHJlcHMgd2lsbCBsb29rCnVwIGEgcG9ydCB0aGVy ZSBhbmQgcmVhbGl6ZSBpZiB0aGV5IGFyZSBvayB0byBvZmZsb2FkIHRoYXQuCgpUZXN0ZWQ6CiA8 U0VUVVAgVkZTPgogPFNFVFVQIHN3aXRjaGRldiBtb2RlIHRvIGhhdmUgcmVwcmVzZW50b3JzPgog aXAgbGluayBhZGQgdnhsYW4xIHR5cGUgdnhsYW4gaWQgNDQgZGV2IGVuczVmMCBkc3Rwb3J0IDk5 OTkKIGlwIGxpbmsgc2V0IHZ4bGFuMSB1cAogaXAgbGluayBkZWwgZGV2IHZ4bGFuMQoKRml4ZXM6 IDRhMjU3MzBlYjIwMiAoJ25ldC9tbHg1ZTogQWRkIG5kb191ZHBfdHVubmVsX2FkZCB0byBWRiBy ZXByZXNlbnRvcnMnKQpTaWduZWQtb2ZmLWJ5OiBQYXVsIEJsYWtleSA8cGF1bGJAbWVsbGFub3gu Y29tPgpSZXZpZXdlZC1ieTogT3IgR2VybGl0eiA8b2dlcmxpdHpAbWVsbGFub3guY29tPgpTaWdu ZWQtb2ZmLWJ5OiBTYWVlZCBNYWhhbWVlZCA8c2FlZWRtQG1lbGxhbm94LmNvbT4KU2lnbmVkLW9m Zi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGRyaXZlcnMv bmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oICAgICAgfCA0IC0tLS0KIGRyaXZl cnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMgfCA4ICsrKystLS0t CiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcmVwLmMgIHwgMiAt LQogZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMgICB8IDkg KysrKysrKy0tCiA0IGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29y ZS9lbi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgKaW5k ZXggYzY5YTFmOC4uNDFkYjQ3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVs bGFub3gvbWx4NS9jb3JlL2VuLmgKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv bWx4NS9jb3JlL2VuLmgKQEAgLTkyMSwxMCArOTIxLDYgQEAgdm9pZCBtbHg1ZV9kZXN0cm95X25l dGRldihzdHJ1Y3QgbWx4NV9jb3JlX2RldiAqbWRldiwgc3RydWN0IG1seDVlX3ByaXYgKnByaXYp OwogaW50IG1seDVlX2F0dGFjaF9uZXRkZXYoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHN0 cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpOwogdm9pZCBtbHg1ZV9kZXRhY2hfbmV0ZGV2KHN0cnVj dCBtbHg1X2NvcmVfZGV2ICptZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTsKIHUzMiBt bHg1ZV9jaG9vc2VfbHJvX3RpbWVvdXQoc3RydWN0IG1seDVfY29yZV9kZXYgKm1kZXYsIHUzMiB3 YW50ZWRfdGltZW91dCk7Ci12b2lkIG1seDVlX2FkZF92eGxhbl9wb3J0KHN0cnVjdCBuZXRfZGV2 aWNlICpuZXRkZXYsCi0JCQkgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKTsKLXZvaWQgbWx4 NWVfZGVsX3Z4bGFuX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKLQkJCSAgc3RydWN0 IHVkcF90dW5uZWxfaW5mbyAqdGkpOwogCiBpbnQgbWx4NWVfZ2V0X29mZmxvYWRfc3RhdHMoaW50 IGF0dHJfaWQsIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkgICAgdm9pZCAqc3Ap OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vu X21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWlu LmMKaW5kZXggOWQ5YzY0OS4uYTUwMWQ4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5l dC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jCkBAIC0zMDU1LDggKzMwNTUsOCBAQCBzdGF0 aWMgaW50IG1seDVlX2dldF92Zl9zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJCQkg ICAgdmZfc3RhdHMpOwogfQogCi12b2lkIG1seDVlX2FkZF92eGxhbl9wb3J0KHN0cnVjdCBuZXRf ZGV2aWNlICpuZXRkZXYsCi0JCQkgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKQorc3RhdGlj IHZvaWQgbWx4NWVfYWRkX3Z4bGFuX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKKwkJ CQkgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpCiB7CiAJc3RydWN0IG1seDVlX3ByaXYgKnBy aXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOwogCkBAIC0zMDY5LDggKzMwNjksOCBAQCB2b2lkIG1s eDVlX2FkZF92eGxhbl9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsCiAJbWx4NWVfdnhs YW5fcXVldWVfd29yayhwcml2LCB0aS0+c2FfZmFtaWx5LCBiZTE2X3RvX2NwdSh0aS0+cG9ydCks IDEpOwogfQogCi12b2lkIG1seDVlX2RlbF92eGxhbl9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpu ZXRkZXYsCi0JCQkgIHN0cnVjdCB1ZHBfdHVubmVsX2luZm8gKnRpKQorc3RhdGljIHZvaWQgbWx4 NWVfZGVsX3Z4bGFuX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwKKwkJCQkgc3RydWN0 IHVkcF90dW5uZWxfaW5mbyAqdGkpCiB7CiAJc3RydWN0IG1seDVlX3ByaXYgKnByaXYgPSBuZXRk ZXZfcHJpdihuZXRkZXYpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg1L2NvcmUvZW5fcmVwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9t bHg1L2NvcmUvZW5fcmVwLmMKaW5kZXggODUwMzc4OC4uODcxZmYzYiAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3JlcC5jCisrKyBiL2RyaXZl cnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yZXAuYwpAQCAtMzk0LDggKzM5 NCw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWx4NWVfbmV0ZGV2X29w c19yZXAgPSB7CiAJLm5kb19nZXRfcGh5c19wb3J0X25hbWUgID0gbWx4NWVfcmVwX2dldF9waHlz X3BvcnRfbmFtZSwKIAkubmRvX3NldHVwX3RjICAgICAgICAgICAgPSBtbHg1ZV9yZXBfbmRvX3Nl dHVwX3RjLAogCS5uZG9fZ2V0X3N0YXRzNjQgICAgICAgICA9IG1seDVlX3JlcF9nZXRfc3RhdHMs Ci0JLm5kb191ZHBfdHVubmVsX2FkZCAgICAgID0gbWx4NWVfYWRkX3Z4bGFuX3BvcnQsCi0JLm5k b191ZHBfdHVubmVsX2RlbCAgICAgID0gbWx4NWVfZGVsX3Z4bGFuX3BvcnQsCiAJLm5kb19oYXNf b2ZmbG9hZF9zdGF0cwkgPSBtbHg1ZV9oYXNfb2ZmbG9hZF9zdGF0cywKIAkubmRvX2dldF9vZmZs b2FkX3N0YXRzCSA9IG1seDVlX2dldF9vZmZsb2FkX3N0YXRzLAogfTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl90Yy5jIGIvZHJpdmVycy9u ZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMKaW5kZXggY2JjMDFhMS4uY2M3 MTg4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3Jl L2VuX3RjLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2Vu X3RjLmMKQEAgLTI2NCwxMiArMjY0LDE1IEBAIHN0YXRpYyBpbnQgcGFyc2VfdHVubmVsX2F0dHIo c3RydWN0IG1seDVlX3ByaXYgKnByaXYsCiAJCQlza2JfZmxvd19kaXNzZWN0b3JfdGFyZ2V0KGYt PmRpc3NlY3RvciwKIAkJCQkJCSAgRkxPV19ESVNTRUNUT1JfS0VZX0VOQ19QT1JUUywKIAkJCQkJ CSAgZi0+bWFzayk7CisJCXN0cnVjdCBtbHg1X2Vzd2l0Y2ggKmVzdyA9IHByaXYtPm1kZXYtPnBy aXYuZXN3aXRjaDsKKwkJc3RydWN0IG5ldF9kZXZpY2UgKnVwX2RldiA9IG1seDVfZXN3aXRjaF9n ZXRfdXBsaW5rX25ldGRldihlc3cpOworCQlzdHJ1Y3QgbWx4NWVfcHJpdiAqdXBfcHJpdiA9IG5l dGRldl9wcml2KHVwX2Rldik7CiAKIAkJLyogRnVsbCB1ZHAgZHN0IHBvcnQgbXVzdCBiZSBnaXZl biAqLwogCQlpZiAobWVtY2hyX2ludigmbWFzay0+ZHN0LCAweGZmLCBzaXplb2YobWFzay0+ZHN0 KSkpCiAJCQlnb3RvIHZ4bGFuX21hdGNoX29mZmxvYWRfZXJyOwogCi0JCWlmIChtbHg1ZV92eGxh bl9sb29rdXBfcG9ydChwcml2LCBiZTE2X3RvX2NwdShrZXktPmRzdCkpICYmCisJCWlmIChtbHg1 ZV92eGxhbl9sb29rdXBfcG9ydCh1cF9wcml2LCBiZTE2X3RvX2NwdShrZXktPmRzdCkpICYmCiAJ CSAgICBNTFg1X0NBUF9FU1cocHJpdi0+bWRldiwgdnhsYW5fZW5jYXBfZGVjYXApKQogCQkJcGFy c2VfdnhsYW5fYXR0cihzcGVjLCBmKTsKIAkJZWxzZSB7CkBAIC04MjcsNiArODMwLDggQEAgc3Rh dGljIGludCBtbHg1ZV9hdHRhY2hfZW5jYXAoc3RydWN0IG1seDVlX3ByaXYgKnByaXYsCiAJCQkg ICAgICBzdHJ1Y3QgbWx4NV9lc3dfZmxvd19hdHRyICphdHRyKQogewogCXN0cnVjdCBtbHg1X2Vz d2l0Y2ggKmVzdyA9IHByaXYtPm1kZXYtPnByaXYuZXN3aXRjaDsKKwlzdHJ1Y3QgbmV0X2Rldmlj ZSAqdXBfZGV2ID0gbWx4NV9lc3dpdGNoX2dldF91cGxpbmtfbmV0ZGV2KGVzdyk7CisJc3RydWN0 IG1seDVlX3ByaXYgKnVwX3ByaXYgPSBuZXRkZXZfcHJpdih1cF9kZXYpOwogCXVuc2lnbmVkIHNo b3J0IGZhbWlseSA9IGlwX3R1bm5lbF9pbmZvX2FmKHR1bl9pbmZvKTsKIAlzdHJ1Y3QgaXBfdHVu bmVsX2tleSAqa2V5ID0gJnR1bl9pbmZvLT5rZXk7CiAJc3RydWN0IG1seDVfZW5jYXBfaW5mbyBp bmZvOwpAQCAtODQ5LDcgKzg1NCw3IEBAIHN0YXRpYyBpbnQgbWx4NWVfYXR0YWNoX2VuY2FwKHN0 cnVjdCBtbHg1ZV9wcml2ICpwcml2LAogCQlyZXR1cm4gLUVPUE5PVFNVUFA7CiAJfQogCi0JaWYg KG1seDVlX3Z4bGFuX2xvb2t1cF9wb3J0KHByaXYsIGJlMTZfdG9fY3B1KGtleS0+dHBfZHN0KSkg JiYKKwlpZiAobWx4NWVfdnhsYW5fbG9va3VwX3BvcnQodXBfcHJpdiwgYmUxNl90b19jcHUoa2V5 LT50cF9kc3QpKSAmJgogCSAgICBNTFg1X0NBUF9FU1cocHJpdi0+bWRldiwgdnhsYW5fZW5jYXBf ZGVjYXApKSB7CiAJCWluZm8udHBfZHN0ID0ga2V5LT50cF9kc3Q7CiAJCWluZm8udHVuX2lkID0g dHVubmVsX2lkX3RvX2tleTMyKGtleS0+dHVuX2lkKTsKLS0gCjIuMS4wCgoKRnJvbSBjNjNhOGUz MDRiOTU1MWQwNmZmNzU2NmJkN2M0MjNiZTJkMjhjOWMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiBNYW9yIEdvdHRsaWViIDxtYW9yZ0BtZWxsYW5veC5jb20+CkRhdGU6IFR1ZSwgMjEg TWFyIDIwMTcgMTU6NTk6MTcgKzAyMDAKU3ViamVjdDogW1BBVENIIDE0LzI0XSBuZXQvbWx4NTog SW5jcmVhc2UgbnVtYmVyIG9mIG1heCBRUHMgaW4gZGVmYXVsdCBwcm9maWxlCgpbIFVwc3RyZWFt IGNvbW1pdCA1ZjQwYjRlZDk3NWMyNjAxNmNmNDE5NTNiNzUxMGZlOTA3MThlMjFjIF0KCldpdGgg Q29ubmVjdFgtNCBzaGFyaW5nIFNSUXMgZnJvbSB0aGUgc2FtZSBzcGFjZSBhcyBRUHMsIHdlIGhp dCBhCmxpbWl0IHByZXZlbnRpbmcgc29tZSBhcHBsaWNhdGlvbnMgdG8gYWxsb2NhdGUgbmVlZGVk IFFQcyBhbW91bnQuCkRvdWJsZSB0aGUgc2l6ZSB0byAyNTZLLgoKRml4ZXM6IGUxMjZiYTk3ZGJh OWUgKCdtbHg1OiBBZGQgZHJpdmVyIGZvciBNZWxsYW5veCBDb25uZWN0LUlCIGFkYXB0ZXJzJykK U2lnbmVkLW9mZi1ieTogTWFvciBHb3R0bGllYiA8bWFvcmdAbWVsbGFub3guY29tPgpTaWduZWQt b2ZmLWJ5OiBTYWVlZCBNYWhhbWVlZCA8c2FlZWRtQG1lbGxhbm94LmNvbT4KU2lnbmVkLW9mZi1i eTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGRyaXZlcnMvbmV0 L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJu ZXQvbWVsbGFub3gvbWx4NS9jb3JlL21haW4uYwppbmRleCAzYzMxNWViLi40YWNhMjY1IDEwMDY0 NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvbWFpbi5jCisr KyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9tYWluLmMKQEAgLTg3 LDcgKzg3LDcgQEAgc3RhdGljIHN0cnVjdCBtbHg1X3Byb2ZpbGUgcHJvZmlsZVtdID0gewogCVsy XSA9IHsKIAkJLm1hc2sJCT0gTUxYNV9QUk9GX01BU0tfUVBfU0laRSB8CiAJCQkJICBNTFg1X1BS T0ZfTUFTS19NUl9DQUNIRSwKLQkJLmxvZ19tYXhfcXAJPSAxNywKKwkJLmxvZ19tYXhfcXAJPSAx OCwKIAkJLm1yX2NhY2hlWzBdCT0gewogCQkJLnNpemUJPSA1MDAsCiAJCQkubGltaXQJPSAyNTAK LS0gCjIuMS4wCgoKRnJvbSAxNWRlYzJiNDJiYzljODFmNWE1ZDNhZjY0ZDY4OTk1ODEzYTE1YmFl IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHYWwgUHJlc3NtYW4gPGdhbHBAbWVsbGFu b3guY29tPgpEYXRlOiBUdWUsIDIxIE1hciAyMDE3IDE1OjU5OjE4ICswMjAwClN1YmplY3Q6IFtQ QVRDSCAxNS8yNF0gbmV0L21seDVlOiBDb3VudCBHU08gcGFja2V0cyBjb3JyZWN0bHkKClsgVXBz dHJlYW0gY29tbWl0IGQzYTRlNGRhNTRjN2FkYjQyMGQ1ZjQ4ZTg5YmU5MTNiMTRiZGVmZjEgXQoK VFggcGFja2V0cyBzdGF0aXN0aWNzICgndHhfcGFja2V0cycgY291bnRlcikgdXNlZCB0byBjb3Vu dCBHU08gcGFja2V0cwphcyBvbmUsIGV2ZW4gdGhvdWdoIGl0IGNvbnRhaW5zIG11bHRpcGxlIHNl Z21lbnRzLgpUaGlzIHBhdGNoIHdpbGwgaW5jcmVtZW50IHRoZSBjb3VudGVyIGJ5IHRoZSBudW1i ZXIgb2Ygc2VnbWVudHMsIGFuZAphbGlnbiB0aGUgZHJpdmVyIHdpdGggdGhlIGJlaGF2aW9yIG9m IG90aGVyIGRyaXZlcnMgaW4gdGhlIHN0YWNrLgoKTm90ZSB0aGF0IG5vIGluZm9ybWF0aW9uIGlz IGxvc3QgaW4gdGhpcyBwYXRjaCBkdWUgdG8gJ3R4X3Rzb19wYWNrZXRzJwpjb3VudGVyIGV4aXN0 ZW5jZS4KCkJlZm9yZSwgZXRodG9vbCBzaG93ZWQ6CiQgZXRodG9vbCAtUyBlbnM2IHwgZWdyZXAg InR4X3BhY2tldHN8dHhfdHNvX3BhY2tldHMiCiAgICAgdHhfcGFja2V0czogNjEzNDAKICAgICB0 eF90c29fcGFja2V0czogNjA5NTQKICAgICB0eF9wYWNrZXRzX3BoeTogMjQ1MTExNQoKTm93LCB3 ZSB3aWxsIHNlZSB0aGUgbW9yZSBsb2dpY2FsIHN0YXRpc3RpY3M6CiQgZXRodG9vbCAtUyBlbnM2 IHwgZWdyZXAgInR4X3BhY2tldHN8dHhfdHNvX3BhY2tldHMiCiAgICAgdHhfcGFja2V0czogMjQ1 MTExNQogICAgIHR4X3Rzb19wYWNrZXRzOiA2MDk1NAogICAgIHR4X3BhY2tldHNfcGh5OiAyNDUx MTE1CgpGaXhlczogZTU4NmIzYjBiYWVlICgibmV0L21seDU6IEV0aGVybmV0IERhdGFwYXRoIGZp bGVzIikKU2lnbmVkLW9mZi1ieTogR2FsIFByZXNzbWFuIDxnYWxwQG1lbGxhbm94LmNvbT4KQ2M6 IGtlcm5lbC10ZWFtQGZiLmNvbQpTaWduZWQtb2ZmLWJ5OiBTYWVlZCBNYWhhbWVlZCA8c2FlZWRt QG1lbGxhbm94LmNvbT4KQWNrZWQtYnk6IEFsZXhlaSBTdGFyb3ZvaXRvdiA8YXN0QGtlcm5lbC5v cmc+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4K LS0tCiBkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHguYyB8IDUg KysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3R4 LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fdHguYwppbmRl eCBjZmI2ODM3Li41NzQzMTEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxs YW5veC9tbHg1L2NvcmUvZW5fdHguYworKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5v eC9tbHg1L2NvcmUvZW5fdHguYwpAQCAtMjcyLDE1ICsyNzIsMTggQEAgc3RhdGljIG5ldGRldl90 eF90IG1seDVlX3NxX3htaXQoc3RydWN0IG1seDVlX3NxICpzcSwgc3RydWN0IHNrX2J1ZmYgKnNr YikKIAkJCXNxLT5zdGF0cy50c29fYnl0ZXMgKz0gc2tiLT5sZW4gLSBpaHM7CiAJCX0KIAorCQlz cS0+c3RhdHMucGFja2V0cyArPSBza2Jfc2hpbmZvKHNrYiktPmdzb19zZWdzOwogCQludW1fYnl0 ZXMgPSBza2ItPmxlbiArIChza2Jfc2hpbmZvKHNrYiktPmdzb19zZWdzIC0gMSkgKiBpaHM7CiAJ fSBlbHNlIHsKIAkJYmYgPSBzcS0+YmZfYnVkZ2V0ICYmCiAJCSAgICAgIXNrYi0+eG1pdF9tb3Jl ICYmCiAJCSAgICAgIXNrYl9zaGluZm8oc2tiKS0+bnJfZnJhZ3M7CiAJCWlocyA9IG1seDVlX2dl dF9pbmxpbmVfaGRyX3NpemUoc3EsIHNrYiwgYmYpOworCQlzcS0+c3RhdHMucGFja2V0cysrOwog CQludW1fYnl0ZXMgPSBtYXhfdCh1bnNpZ25lZCBpbnQsIHNrYi0+bGVuLCBFVEhfWkxFTik7CiAJ fQogCisJc3EtPnN0YXRzLmJ5dGVzICs9IG51bV9ieXRlczsKIAl3aS0+bnVtX2J5dGVzID0gbnVt X2J5dGVzOwogCiAJaWYgKHNrYl92bGFuX3RhZ19wcmVzZW50KHNrYikpIHsKQEAgLTM3Nyw4ICsz ODAsNiBAQCBzdGF0aWMgbmV0ZGV2X3R4X3QgbWx4NWVfc3FfeG1pdChzdHJ1Y3QgbWx4NWVfc3Eg KnNxLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCWlmIChiZikKIAkJc3EtPmJmX2J1ZGdldC0tOwog Ci0Jc3EtPnN0YXRzLnBhY2tldHMrKzsKLQlzcS0+c3RhdHMuYnl0ZXMgKz0gbnVtX2J5dGVzOwog CXJldHVybiBORVRERVZfVFhfT0s7CiAKIGRtYV91bm1hcF93cWVfZXJyOgotLSAKMi4xLjAKCgpG cm9tIGZlMDkwZjdkMGEyNmViZmE4ZTZiNDhlOGJmYmJlYmNjZTE0NGZiZWEgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IEdhbCBQcmVzc21hbiA8Z2FscEBtZWxsYW5veC5jb20+CkRhdGU6 IFR1ZSwgMjEgTWFyIDIwMTcgMTU6NTk6MTkgKzAyMDAKU3ViamVjdDogW1BBVENIIDE2LzI0XSBu ZXQvbWx4NWU6IENvdW50IExSTyBwYWNrZXRzIGNvcnJlY3RseQoKWyBVcHN0cmVhbSBjb21taXQg OGFiN2UyYWUxNWQ4NGJhNzU4YjJjOGM2ZjQwNzU3MjJlOWJkMmEwOCBdCgpSWCBwYWNrZXRzIHN0 YXRpc3RpY3MgKCdyeF9wYWNrZXRzJyBjb3VudGVyKSB1c2VkIHRvIGNvdW50IExSTyBwYWNrZXRz CmFzIG9uZSwgZXZlbiB0aG91Z2ggaXQgY29udGFpbnMgbXVsdGlwbGUgc2VnbWVudHMuClRoaXMg cGF0Y2ggd2lsbCBpbmNyZW1lbnQgdGhlIGNvdW50ZXIgYnkgdGhlIG51bWJlciBvZiBzZWdtZW50 cywgYW5kCmFsaWduIHRoZSBkcml2ZXIgd2l0aCB0aGUgYmVoYXZpb3Igb2Ygb3RoZXIgZHJpdmVy cyBpbiB0aGUgc3RhY2suCgpOb3RlIHRoYXQgbm8gaW5mb3JtYXRpb24gaXMgbG9zdCBpbiB0aGlz IHBhdGNoIGR1ZSB0byAncnhfbHJvX3BhY2tldHMnCmNvdW50ZXIgZXhpc3RlbmNlLgoKQmVmb3Jl LCBldGh0b29sIHNob3dlZDoKJCBldGh0b29sIC1TIGVuczYgfCBlZ3JlcCAicnhfcGFja2V0c3xy eF9scm9fcGFja2V0cyIKICAgICByeF9wYWNrZXRzOiA0MzUyNzcKICAgICByeF9scm9fcGFja2V0 czogMzU4NDcKICAgICByeF9wYWNrZXRzX3BoeTogMTkzNTA2NgoKTm93LCB3ZSB3aWxsIHNlZSB0 aGUgbW9yZSBsb2dpY2FsIHN0YXRpc3RpY3M6CiQgZXRodG9vbCAtUyBlbnM2IHwgZWdyZXAgInJ4 X3BhY2tldHN8cnhfbHJvX3BhY2tldHMiCiAgICAgcnhfcGFja2V0czogMTkzNTA2NgogICAgIHJ4 X2xyb19wYWNrZXRzOiAzNTg0NwogICAgIHJ4X3BhY2tldHNfcGh5OiAxOTM1MDY2CgpGaXhlczog ZTU4NmIzYjBiYWVlICgibmV0L21seDU6IEV0aGVybmV0IERhdGFwYXRoIGZpbGVzIikKU2lnbmVk LW9mZi1ieTogR2FsIFByZXNzbWFuIDxnYWxwQG1lbGxhbm94LmNvbT4KQ2M6IGtlcm5lbC10ZWFt QGZiLmNvbQpTaWduZWQtb2ZmLWJ5OiBTYWVlZCBNYWhhbWVlZCA8c2FlZWRtQG1lbGxhbm94LmNv bT4KQWNrZWQtYnk6IEFsZXhlaSBTdGFyb3ZvaXRvdiA8YXN0QGtlcm5lbC5vcmc+ClNpZ25lZC1v ZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBkcml2ZXJz L25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fcnguYyB8IDQgKysrKwogMSBmaWxl IGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L21lbGxhbm94L21seDUvY29yZS9lbl9yeC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVs bGFub3gvbWx4NS9jb3JlL2VuX3J4LmMKaW5kZXggZTNiODhiYi4uYjE5MzlhMSAxMDA2NDQKLS0t IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmMKKysrIGIv ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3J4LmMKQEAgLTYwMyw2 ICs2MDMsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIG1seDVlX2J1aWxkX3J4X3NrYihzdHJ1Y3Qg bWx4NV9jcWU2NCAqY3FlLAogCWlmIChscm9fbnVtX3NlZyA+IDEpIHsKIAkJbWx4NWVfbHJvX3Vw ZGF0ZV9oZHIoc2tiLCBjcWUsIGNxZV9iY250KTsKIAkJc2tiX3NoaW5mbyhza2IpLT5nc29fc2l6 ZSA9IERJVl9ST1VORF9VUChjcWVfYmNudCwgbHJvX251bV9zZWcpOworCQkvKiBTdWJ0cmFjdCBv bmUgc2luY2Ugd2UgYWxyZWFkeSBjb3VudGVkIHRoaXMgYXMgb25lCisJCSAqICJyZWd1bGFyIiBw YWNrZXQgaW4gbWx4NWVfY29tcGxldGVfcnhfY3FlKCkKKwkJICovCisJCXJxLT5zdGF0cy5wYWNr ZXRzICs9IGxyb19udW1fc2VnIC0gMTsKIAkJcnEtPnN0YXRzLmxyb19wYWNrZXRzKys7CiAJCXJx LT5zdGF0cy5scm9fYnl0ZXMgKz0gY3FlX2JjbnQ7CiAJfQotLSAKMi4xLjAKCgpGcm9tIDQwYjJh YmNkM2JjOGNkYzQ0MGI2YTU3ZjdmNzE1MWU0ZjNlYzA2NTkgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IEFsZXhhbmRlciBQb3RhcGVua28gPGdsaWRlckBnb29nbGUuY29tPgpEYXRlOiBU dWUsIDIxIE1hciAyMDE3IDE3OjE0OjI3ICswMTAwClN1YmplY3Q6IFtQQVRDSCAxNy8yNF0gaXB2 NjogbWFrZSBzdXJlIHRvIGluaXRpYWxpemUgc29ja2MudHNmbGFncyBiZWZvcmUKIGZpcnN0IHVz ZQoKWyBVcHN0cmVhbSBjb21taXQgZDUxNTY4NGQ3ODE0ODg4NGQ1ZmM0MjViYTkwNGM1MGYwMzg0 NDAyMCBdCgpJbiB0aGUgY2FzZSB1ZHBfc2soc2spLT5wZW5kaW5nIGlzIEFGX0lORVQ2LCB1ZHB2 Nl9zZW5kbXNnKCkgd291bGQKanVtcCB0byBkb19hcHBlbmRfZGF0YSwgc2tpcHBpbmcgdGhlIGlu aXRpYWxpemF0aW9uIG9mIHNvY2tjLnRzZmxhZ3MuCkZpeCB0aGUgcHJvYmxlbSBieSBtb3Zpbmcg c29ja2MudHNmbGFncyBpbml0aWFsaXphdGlvbiBlYXJsaWVyLgoKVGhlIGJ1ZyB3YXMgZGV0ZWN0 ZWQgd2l0aCBLTVNBTi4KCkZpeGVzOiBjMTRhYzk0NTFjMzQgKCJzb2NrOiBlbmFibGUgdGltZXN0 YW1waW5nIHVzaW5nIGNvbnRyb2wgbWVzc2FnZXMiKQpTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIg UG90YXBlbmtvIDxnbGlkZXJAZ29vZ2xlLmNvbT4KQWNrZWQtYnk6IFNvaGVpbCBIYXNzYXMgWWVn YW5laCA8c29oZWlsQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1pbGxlciA8 ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvaXB2Ni91ZHAuYyB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL25ldC9p cHY2L3VkcC5jIGIvbmV0L2lwdjYvdWRwLmMKaW5kZXggMjIxODI1YS4uMDc3MGY5NSAxMDA2NDQK LS0tIGEvbmV0L2lwdjYvdWRwLmMKKysrIGIvbmV0L2lwdjYvdWRwLmMKQEAgLTEwMjIsNiArMTAy Miw3IEBAIGludCB1ZHB2Nl9zZW5kbXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAq bXNnLCBzaXplX3QgbGVuKQogCWlwYzYuaGxpbWl0ID0gLTE7CiAJaXBjNi50Y2xhc3MgPSAtMTsK IAlpcGM2LmRvbnRmcmFnID0gLTE7CisJc29ja2MudHNmbGFncyA9IHNrLT5za190c2ZsYWdzOwog CiAJLyogZGVzdGluYXRpb24gYWRkcmVzcyBjaGVjayAqLwogCWlmIChzaW42KSB7CkBAIC0xMTQ2 LDcgKzExNDcsNiBAQCBpbnQgdWRwdjZfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBt c2doZHIgKm1zZywgc2l6ZV90IGxlbikKIAogCWZsNi5mbG93aTZfbWFyayA9IHNrLT5za19tYXJr OwogCWZsNi5mbG93aTZfdWlkID0gc2stPnNrX3VpZDsKLQlzb2NrYy50c2ZsYWdzID0gc2stPnNr X3RzZmxhZ3M7CiAKIAlpZiAobXNnLT5tc2dfY29udHJvbGxlbikgewogCQlvcHQgPSAmb3B0X3Nw YWNlOwotLSAKMi4xLjAKCgpGcm9tIDAxNDc0OTQ1MDM0MjNmZDg5NTk0YTYxZjRjM2Y3NGIxYjdk MTc1MWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IERvdWcgQmVyZ2VyIDxvcGVuZG1i QGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAyMSBNYXIgMjAxNyAxNDowMTowNiAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggMTgvMjRdIG5ldDogYmNtZ2VuZXQ6IHJlbW92ZSBiY21nZW5ldF9pbnRlcm5hbF9w aHlfc2V0dXAoKQoKWyBVcHN0cmVhbSBjb21taXQgMzE3MzllYWU3MzhjY2JlOGI5ZDYyN2MzZjIy NTEwMTdjYTAzZjRkMiBdCgpDb21taXQgNmFjM2NlODI5NWU2ICgibmV0OiBiY21nZW5ldDogUmVt b3ZlIGV4Y2Vzc2l2ZSBQSFkgcmVzZXQiKQpyZW1vdmVkIHRoZSBiY21nZW5ldF9taWlfcmVzZXQo KSBmdW5jdGlvbiBmcm9tIGJjbWdlbmV0X3Bvd2VyX3VwKCkgYW5kCmJjbWdlbmV0X2ludGVybmFs X3BoeV9zZXR1cCgpIGZ1bmN0aW9ucy4gIEluIHNvIGRvaW5nIGl0IGJyb2tlIHRoZSByZXNldApv ZiB0aGUgaW50ZXJuYWwgUEhZIGRldmljZXMgdXNlZCBieSB0aGUgR0VORVR2MS1HRU5FVHYzIHdo aWNoIHJlcXVpcmVkCnRoaXMgcmVzZXQgYmVmb3JlIHRoZSBVbmlNQUMgd2FzIGVuYWJsZWQuICBJ dCBhbHNvIGJyb2tlIHRoZSBpbnRlcm5hbApHUEhZIGRldmljZXMgdXNlZCBieSB0aGUgR0VORVR2 NCBiZWNhdXNlIHRoZSBjb25maWdfaW5pdCB0aGF0IGluc3RhbGxlZAp0aGUgQUZFIHdvcmthcm91 bmQgd2FzIG5vIGxvbmdlciBvY2N1cnJpbmcgYWZ0ZXIgdGhlIHJlc2V0IG9mIHRoZSBHUEhZCnBl cmZvcm1lZCBieSBiY21nZW5ldF9waHlfcG93ZXJfc2V0KCkgaW4gYmNtZ2VuZXRfaW50ZXJuYWxf cGh5X3NldHVwKCkuCkluIGFkZGl0aW9uIHRoZSBjb2RlIGluIGJjbWdlbmV0X2ludGVybmFsX3Bo eV9zZXR1cCgpIHJlbGF0ZWQgdG8gdGhlCiJlbmFibGUgQVBEIiBjb21tZW50IGdvZXMgd2l0aCB0 aGUgYmNtZ2VuZXRfbWlpX3Jlc2V0KCkgc28gaXQgc2hvdWxkCmhhdmUgYWxzbyBiZWVuIHJlbW92 ZWQuCgpDb21taXQgYmQ0MDYwYTYxMDhiICgibmV0OiBiY21nZW5ldDogUG93ZXIgb24gaW50ZWdy YXRlZCBHUEhZIGluCmJjbWdlbmV0X3Bvd2VyX3VwKCkiKSBtb3ZlZCB0aGUgYmNtZ2VuZXRfcGh5 X3Bvd2VyX3NldCgpIGNhbGwgdG8gdGhlCmJjbWdlbmV0X3Bvd2VyX3VwKCkgZnVuY3Rpb24sIGJ1 dCBmYWlsZWQgdG8gcmVtb3ZlIGl0IGZyb20gdGhlCmJjbWdlbmV0X2ludGVybmFsX3BoeV9zZXR1 cCgpIGZ1bmN0aW9uLiAgSGFkIGl0IGRvbmUgc28sIHRoZQpiY21nZW5ldF9pbnRlcm5hbF9waHlf c2V0dXAoKSBmdW5jdGlvbiB3b3VsZCBoYXZlIGJlZW4gZW1wdHkgYW5kIGNvdWxkCmhhdmUgYmVl biByZW1vdmVkIGF0IHRoYXQgdGltZS4KCkNvbW1pdCA1ZGJlYmJiNDRhNmEgKCJuZXQ6IGJjbWdl bmV0OiBTb2Z0d2FyZSByZXNldCBFUEhZIGFmdGVyIHBvd2VyIG9uIikKd2FzIHN1Ym1pdHRlZCB0 byBjb3JyZWN0IHRoZSBmdW5jdGlvbmFsIHByb2JsZW1zIGludHJvZHVjZWQgYnkKY29tbWl0IDZh YzNjZTgyOTVlNiAoIm5ldDogYmNtZ2VuZXQ6IFJlbW92ZSBleGNlc3NpdmUgUEhZIHJlc2V0Iiku IEl0CndhcyBpbmNsdWRlZCBpbiB2NC40IGFuZCBtYWRlIGF2YWlsYWJsZSBvbiA0LjMtc3RhYmxl LiBVbmZvcnR1bmF0ZWx5LAppdCBkaWRuJ3QgZnVsbHkgcmV2ZXJ0IHRoZSBjb21taXQgYmVjYXVz ZSB0aGlzIGJjbWdlbmV0X21paV9yZXNldCgpCmRvZXNuJ3QgYXBwbHkgdGhlIHNvZnQgcmVzZXQg dG8gdGhlIGludGVybmFsIEdQSFkgdXNlZCBieSBHRU5FVHY0IGxpa2UKdGhlIHByZXZpb3VzIG9u ZSBkaWQuIFRoaXMgcHJldmVudHMgdGhlIHJlc3RvcmF0aW9uIG9mIHRoZSBBRkUgd29yay0KYXJv dW5kcyBmb3IgaW50ZXJuYWwgR1BIWSBkZXZpY2VzIGFmdGVyIHRoZSBiY21nZW5ldF9waHlfcG93 ZXJfc2V0KCkgaW4KYmNtZ2VuZXRfaW50ZXJuYWxfcGh5X3NldHVwKCkuCgpUaGlzIGNvbW1pdCB0 YWtlcyB0aGUgYWx0ZXJuYXRlIGFwcHJvYWNoIG9mIHJlbW92aW5nIHRoZSB1bm5lY2Vzc2FyeQpi Y21nZW5ldF9pbnRlcm5hbF9waHlfc2V0dXAoKSBmdW5jdGlvbiB3aGljaCBzaG91bGRuJ3QgaGF2 ZSBiZWVuIGluIHY0LjMKc28gdGhhdCB3aGVuIGJjbWdlbmV0X21paV9yZXNldCgpIHdhcyByZXN0 b3JlZCBpdCBzaG91bGQgaGF2ZSBvbmx5IGdvbmUKaW50byBiY21nZW5ldF9wb3dlcl91cCgpLiAg VGhpcyB3aWxsIGF2b2lkIHRoZSBwcm9ibGVtcyB3aGlsZSBhbHNvCnJlbW92aW5nIHRoZSByZWR1 bmRhbmN5IChhbmQgaG9wZWZ1bGx5IHNvbWUgb2YgdGhlIGNvbmZ1c2lvbikuCgpGaXhlczogNmFj M2NlODI5NWU2ICgibmV0OiBiY21nZW5ldDogUmVtb3ZlIGV4Y2Vzc2l2ZSBQSFkgcmVzZXQiKQpT aWduZWQtb2ZmLWJ5OiBEb3VnIEJlcmdlciA8b3BlbmRtYkBnbWFpbC5jb20+ClJldmlld2VkLWJ5 OiBGbG9yaWFuIEZhaW5lbGxpIDxmLmZhaW5lbGxpQGdtYWlsLmNvbT4KU2lnbmVkLW9mZi1ieTog RGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0KIGRyaXZlcnMvbmV0L2V0 aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jIHwgMTUgLS0tLS0tLS0tLS0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRo ZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9h ZGNvbS9nZW5ldC9iY21taWkuYwppbmRleCBlODc2MDc2Li4yZjkyODE5IDEwMDY0NAotLS0gYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYworKysgYi9kcml2ZXJz L25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYwpAQCAtMjIwLDIwICsyMjAsNiBA QCB2b2lkIGJjbWdlbmV0X3BoeV9wb3dlcl9zZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9v bCBlbmFibGUpCiAJdWRlbGF5KDYwKTsKIH0KIAotc3RhdGljIHZvaWQgYmNtZ2VuZXRfaW50ZXJu YWxfcGh5X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCi17Ci0Jc3RydWN0IGJjbWdlbmV0 X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwotCXUzMiByZWc7Ci0KLQkvKiBQb3dlciB1 cCBQSFkgKi8KLQliY21nZW5ldF9waHlfcG93ZXJfc2V0KGRldiwgdHJ1ZSk7Ci0JLyogZW5hYmxl IEFQRCAqLwotCXJlZyA9IGJjbWdlbmV0X2V4dF9yZWFkbChwcml2LCBFWFRfRVhUX1BXUl9NR01U KTsKLQlyZWcgfD0gRVhUX1BXUl9ETl9FTl9MRDsKLQliY21nZW5ldF9leHRfd3JpdGVsKHByaXYs IHJlZywgRVhUX0VYVF9QV1JfTUdNVCk7Ci0JYmNtZ2VuZXRfbWlpX3Jlc2V0KGRldik7Ci19Ci0K IHN0YXRpYyB2b2lkIGJjbWdlbmV0X21vY2FfcGh5X3NldHVwKHN0cnVjdCBiY21nZW5ldF9wcml2 ICpwcml2KQogewogCXUzMiByZWc7CkBAIC0yODEsNyArMjY3LDYgQEAgaW50IGJjbWdlbmV0X21p aV9jb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogCQlpZiAocHJpdi0+aW50ZXJuYWxf cGh5KSB7CiAJCQlwaHlfbmFtZSA9ICJpbnRlcm5hbCBQSFkiOwotCQkJYmNtZ2VuZXRfaW50ZXJu YWxfcGh5X3NldHVwKGRldik7CiAJCX0gZWxzZSBpZiAocHJpdi0+cGh5X2ludGVyZmFjZSA9PSBQ SFlfSU5URVJGQUNFX01PREVfTU9DQSkgewogCQkJcGh5X25hbWUgPSAiTW9DQSI7CiAJCQliY21n ZW5ldF9tb2NhX3BoeV9zZXR1cChwcml2KTsKLS0gCjIuMS4wCgoKRnJvbSBkMmQzNDE5MDE4NmRh OTNlOWE2NDRhMDUzNjlhMDBiOGEzOTM3ODVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkRhdGU6IFR1ZSwgMjEgTWFyIDIw MTcgMTk6MjI6MjggLTA3MDAKU3ViamVjdDogW1BBVENIIDE5LzI0XSBpcHY0OiBwcm92aWRlIHN0 cm9uZ2VyIHVzZXIgaW5wdXQgdmFsaWRhdGlvbiBpbgogbmxfZmliX2lucHV0KCkKClsgVXBzdHJl YW0gY29tbWl0IGM2NGMwYjNjYWM0YzViOGNiMDkzNzI3ZDJjMTk3NDNlYTM5NjVjMGIgXQoKQWxl eGFuZGVyIHJlcG9ydGVkIGEgS01TQU4gc3BsYXQgY2F1c2VkIGJ5IHJlYWRzIG9mIHVuaW5pdGlh bGl6ZWQKZmllbGQgKHRiX2lkX2luKSBmcm9tIHVzZXIgcHJvdmlkZWQgc3RydWN0IGZpYl9yZXN1 bHRfbmwKCkl0IHR1cm5zIG91dCBubF9maWJfaW5wdXQoKSBzYW5pdHkgdGVzdHMgb24gdXNlciBp bnB1dCBpcyBhIGJpdAp3cm9uZyA6CgpVc2VyIGNhbiBwcmV0ZW5kIG5saC0+bmxtc2dfbGVuIGlz IGJpZyBlbm91Z2gsIGJ1dCBwcm92aWRlCmF0IHNlbmRtc2coKSB0aW1lIGEgdG9vIHNtYWxsIGJ1 ZmZlci4KClJlcG9ydGVkLWJ5OiBBbGV4YW5kZXIgUG90YXBlbmtvIDxnbGlkZXJAZ29vZ2xlLmNv bT4KU2lnbmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0 L2lwdjQvZmliX2Zyb250ZW5kLmMgfCAzICsrLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl9mcm9udGVuZC5j IGIvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmMKaW5kZXggYjM5YTc5MS4uMDkxZGUwYiAxMDA2NDQK LS0tIGEvbmV0L2lwdjQvZmliX2Zyb250ZW5kLmMKKysrIGIvbmV0L2lwdjQvZmliX2Zyb250ZW5k LmMKQEAgLTEwODIsNyArMTA4Miw4IEBAIHN0YXRpYyB2b2lkIG5sX2ZpYl9pbnB1dChzdHJ1Y3Qg c2tfYnVmZiAqc2tiKQogCiAJbmV0ID0gc29ja19uZXQoc2tiLT5zayk7CiAJbmxoID0gbmxtc2df aGRyKHNrYik7Ci0JaWYgKHNrYi0+bGVuIDwgTkxNU0dfSERSTEVOIHx8IHNrYi0+bGVuIDwgbmxo LT5ubG1zZ19sZW4gfHwKKwlpZiAoc2tiLT5sZW4gPCBubG1zZ190b3RhbF9zaXplKHNpemVvZigq ZnJuKSkgfHwKKwkgICAgc2tiLT5sZW4gPCBubGgtPm5sbXNnX2xlbiB8fAogCSAgICBubG1zZ19s ZW4obmxoKSA8IHNpemVvZigqZnJuKSkKIAkJcmV0dXJuOwogCi0tIAoyLjEuMAoKCkZyb20gNDlj Y2EyYjZhYTk5NjRmZjk4ZTQwMmZmMTc1MmEwOWZhYmU3ZjE1ZCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KRGF0ZTog V2VkLCAyMiBNYXIgMjAxNyAxMzowODowOCArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMjAvMjRdIHNv Y2tldCwgYnBmOiBmaXggc2tfZmlsdGVyIHVzZSBhZnRlciBmcmVlIGluCiBza19jbG9uZV9sb2Nr CgpbIFVwc3RyZWFtIGNvbW1pdCBhOTdlNTBjYzRjYjY3ZTFlN2JmZjU2ZjZiNDFjZGE2MmNhODMy MzM2IF0KCkluIHNrX2Nsb25lX2xvY2soKSwgd2UgY3JlYXRlIGEgbmV3IHNvY2tldCBhbmQgaW5o ZXJpdCBtb3N0IG9mIHRoZQpwYXJlbnQncyBtZW1iZXJzIHZpYSBzb2NrX2NvcHkoKSB3aGljaCBt ZW1jcHkoKSdzIHZhcmlvdXMgc2VjdGlvbnMuCk5vdywgaW4gY2FzZSB0aGUgcGFyZW50IHNvY2tl dCBoYWQgYSBCUEYgc29ja2V0IGZpbHRlciBhdHRhY2hlZCwKdGhlbiBuZXdzay0+c2tfZmlsdGVy IHBvaW50cyB0byB0aGUgc2FtZSBpbnN0YW5jZSBhcyB0aGUgb3JpZ2luYWwKc2stPnNrX2ZpbHRl ci4KCnNrX2ZpbHRlcl9jaGFyZ2UoKSBpcyB0aGVuIGNhbGxlZCBvbiB0aGUgbmV3c2stPnNrX2Zp bHRlciB0byB0YWtlIGEKcmVmZXJlbmNlIGFuZCBzaG91bGQgdGhhdCBmYWlsIGR1ZSB0byBoaXR0 aW5nIG1heCBvcHRtZW0sIHdlIGJhaWwKb3V0IGFuZCByZWxlYXNlIHRoZSBuZXdzayBpbnN0YW5j ZS4KClRoZSBpc3N1ZSBpcyB0aGF0IGNvbW1pdCAyNzg1NzFiYWNhMmEgKCJuZXQ6IGZpbHRlcjog c2ltcGxpZnkgc29ja2V0CmNoYXJnaW5nIikgd3JvbmdseSBjb21iaW5lZCB0aGUgZGlzbWFudGxl IHBhdGggd2l0aCB0aGUgZmFpbHVyZSBwYXRoCm9mIHhmcm1fc2tfY2xvbmVfcG9saWN5KCkuIFRo aXMgbWVhbnMsIGV2ZW4gd2hlbiBjaGFyZ2luZyBmYWlsZWQsIHdlCmNhbGwgc2tfZnJlZV91bmxv Y2tfY2xvbmUoKSBvbiB0aGUgbmV3c2ssIHdoaWNoIHRoZW4gc3RpbGwgcG9pbnRzIHRvCnRoZSBz YW1lIHNrX2ZpbHRlciBhcyB0aGUgb3JpZ2luYWwgc2suCgpUaHVzLCBza19mcmVlX3VubG9ja19j bG9uZSgpIGNhbGxzIGludG8gX19za19kZXN0cnVjdCgpIGV2ZW50dWFsbHkKd2hlcmUgaXQgdGVz dHMgZm9yIHByZXNlbnQgc2tfZmlsdGVyIGFuZCBjYWxscyBza19maWx0ZXJfdW5jaGFyZ2UoKQpv biBpdCwgd2hpY2ggcG90ZW50aWFsbHkgbGV0cyBza19vbWVtX2FsbG9jIHdyYXAgYXJvdW5kIGFu ZCByZWxlYXNlcwp0aGUgZUJQRiBwcm9nIGFuZCBza19maWx0ZXIgc3RydWN0dXJlIGZyb20gdGhl IChzdGlsbCBpbnRhY3QpIHBhcmVudC4KCkZpeCBpdCBieSBtYWtpbmcgc3VyZSB0aGF0IHdoZW4g c2tfZmlsdGVyX2NoYXJnZSgpIGZhaWxlZCwgd2UgcmVzZXQKbmV3c2stPnNrX2ZpbHRlciBiYWNr IHRvIE5VTEwgYmVmb3JlIHBhc3NpbmcgdG8gc2tfZnJlZV91bmxvY2tfY2xvbmUoKSwKc28gdGhh dCB3ZSBkb24ndCBtZXNzIHdpdGggdGhlIHBhcmVudHMgc2tfZmlsdGVyLgoKT25seSBpZiB4ZnJt X3NrX2Nsb25lX3BvbGljeSgpIGZhaWxzLCB3ZSBkaWQgcmVhY2ggdGhlIHBvaW50IHdoZXJlCmVp dGhlciB0aGUgcGFyZW50J3MgZmlsdGVyIHdhcyBOVUxMIGFuZCBhcyBhIHJlc3VsdCBuZXdzaydz IGFzIHdlbGwKb3Igd2hlcmUgd2UgcHJldmlvdXNseSBoYWQgYSBzdWNjZXNzZnVsIHNrX2ZpbHRl cl9jaGFyZ2UoKSwgdGh1cyBmb3IKdGhhdCBjYXNlLCB3ZSBkbyBuZWVkIHNrX2ZpbHRlcl91bmNo YXJnZSgpIHRvIHJlbGVhc2UgdGhlIHByaW9yIHRha2VuCnJlZmVyZW5jZSBvbiBza19maWx0ZXIu CgpGaXhlczogMjc4NTcxYmFjYTJhICgibmV0OiBmaWx0ZXI6IHNpbXBsaWZ5IHNvY2tldCBjaGFy Z2luZyIpClNpZ25lZC1vZmYtYnk6IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5u ZXQ+CkFja2VkLWJ5OiBBbGV4ZWkgU3Rhcm92b2l0b3YgPGFzdEBrZXJuZWwub3JnPgpTaWduZWQt b2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogbmV0L2Nv cmUvc29jay5jIHwgNiArKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKCmRp ZmYgLS1naXQgYS9uZXQvY29yZS9zb2NrLmMgYi9uZXQvY29yZS9zb2NrLmMKaW5kZXggYzhhNWNi Zi4uNGU3ZjEwYyAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvc29jay5jCisrKyBiL25ldC9jb3JlL3Nv Y2suYwpAQCAtMTU0NSw2ICsxNTQ1LDEyIEBAIHN0cnVjdCBzb2NrICpza19jbG9uZV9sb2NrKGNv bnN0IHN0cnVjdCBzb2NrICpzaywgY29uc3QgZ2ZwX3QgcHJpb3JpdHkpCiAJCQlpc19jaGFyZ2Vk ID0gc2tfZmlsdGVyX2NoYXJnZShuZXdzaywgZmlsdGVyKTsKIAogCQlpZiAodW5saWtlbHkoIWlz X2NoYXJnZWQgfHwgeGZybV9za19jbG9uZV9wb2xpY3kobmV3c2ssIHNrKSkpIHsKKwkJCS8qIFdl IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3QgdW5jaGFyZ2UgdGhlIG5ldworCQkJICog c29ja2V0IGlmIHdlIGNvdWxkbid0IGNoYXJnZSBpdCBpbiB0aGUgZmlyc3QgcGxhY2UKKwkJCSAq IGFzIG90aGVyd2lzZSB3ZSB1bmNoYXJnZSB0aGUgcGFyZW50J3MgZmlsdGVyLgorCQkJICovCisJ CQlpZiAoIWlzX2NoYXJnZWQpCisJCQkJUkNVX0lOSVRfUE9JTlRFUihuZXdzay0+c2tfZmlsdGVy LCBOVUxMKTsKIAkJCS8qIEl0IGlzIHN0aWxsIHJhdyBjb3B5IG9mIHBhcmVudCwgc28gaW52YWxp ZGF0ZQogCQkJICogZGVzdHJ1Y3RvciBhbmQgbWFrZSBwbGFpbiBza19mcmVlKCkgKi8KIAkJCW5l d3NrLT5za19kZXN0cnVjdCA9IE5VTEw7Ci0tIAoyLjEuMAoKCkZyb20gNGM0N2QxMDEwYjJlZmUz MjljZDM2YWE1MDZkZGNiN2U0MzVhNjkzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog U3RhbmlzbGF3IEdydXN6a2EgPHNncnVzemthQHJlZGhhdC5jb20+CkRhdGU6IFdlZCwgMjIgTWFy IDIwMTcgMTY6MDg6MzMgKzAxMDAKU3ViamVjdDogW1BBVENIIDIxLzI0XSBnZW5ldGxpbms6IGZp eCBjb3VudGluZyByZWdyZXNzaW9uIG9uIGN0cmxfZHVtcGZhbWlseSgpCgpbIFVwc3RyZWFtIGNv bW1pdCAxZDJhNmE1ZTRiZjI5MjE1MzEwNzFmY2ZmODUzODYyM2RjZTc0ZWZhIF0KCkNvbW1pdCAy YWUwZjE3ZGYxY2QgKCJnZW5ldGxpbms6IHVzZSBpZHIgdG8gdHJhY2sgZmFtaWxpZXMiKSByZXBs YWNlZAoKCWlmICgrK24gPCBmYW1zX3RvX3NraXApCgkJY29udGludWU7CmludG86CgoJaWYgKG4r KyA8IGZhbXNfdG9fc2tpcCkKCQljb250aW51ZTsKClRoaXMgc3VidGxlIGNoYW5nZSBjYXVzZSB0 aGF0IG9uIHJldHJ5IGN0cmxfZHVtcGZhbWlseSgpIGNhbGwgd2Ugb21pdApvbmUgZmFtaWx5IHRo YXQgZmFpbGVkIHRvIGRvIGN0cmxfZmlsbF9pbmZvKCkgb24gcHJldmlvdXMgY2FsbCwgYmVjYXVz ZQpjYi0+YXJnc1swXSA9IG4gbnVtYmVyIGNvdW50cyBhbHNvIGZhbWlseSB0aGF0IGZhaWxlZCB0 byBkbwpjdHJsX2ZpbGxfaW5mbygpLgoKUGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0gYW5kIGF2b2lk IGNvbmZ1c2lvbiBpbiB0aGUgZnV0dXJlIGp1c3QgZGVjcmVhc2UKbiBjb3VudGVyIHdoZW4gY3Ry bF9maWxsX2luZm8oKSBmYWlsLgoKVXNlciB2aXNpYmxlIHByb2JsZW0gY2F1c2VkIGJ5IHRoaXMg YnVnIGlzIGZhaWx1cmUgdG8gZ2V0IGFjY2VzcyB0bwpzb21lIGdlbmV0bGluayBmYW1pbHkgaS5l LiBubDgwMjExLiBIb3dldmVyIHByb2JsZW0gaXMgcmVwcm9kdWNpYmxlCm9ubHkgaWYgbnVtYmVy IG9mIHJlZ2lzdGVyZWQgZ2VuZXRsaW5rIGZhbWlsaWVzIGlzIGJpZyBlbm91Z2ggdG8KY2F1c2Ug c2Vjb25kIGNhbGwgb2YgY3RybF9kdW1wZmFtaWx5KCkuCgpDYzogWG9zZSBWYXpxdWV6IFBlcmV6 IDx4b3NlLnZhenF1ZXpAZ21haWwuY29tPgpDYzogTGFycnkgRmluZ2VyIDxMYXJyeS5GaW5nZXJA bHdmaW5nZXIubmV0PgpDYzogSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5l dD4KRml4ZXM6IDJhZTBmMTdkZjFjZCAoImdlbmV0bGluazogdXNlIGlkciB0byB0cmFjayBmYW1p bGllcyIpClNpZ25lZC1vZmYtYnk6IFN0YW5pc2xhdyBHcnVzemthIDxzZ3J1c3prYUByZWRoYXQu Y29tPgpBY2tlZC1ieTogSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldD4K U2lnbmVkLW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgotLS0K IG5ldC9uZXRsaW5rL2dlbmV0bGluay5jIHwgNCArKystCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L25ldGxpbmsvZ2VuZXRs aW5rLmMgYi9uZXQvbmV0bGluay9nZW5ldGxpbmsuYwppbmRleCBmYjZlMTBmLi45MmUwOTgxIDEw MDY0NAotLS0gYS9uZXQvbmV0bGluay9nZW5ldGxpbmsuYworKysgYi9uZXQvbmV0bGluay9nZW5l dGxpbmsuYwpAQCAtNzgzLDggKzc4MywxMCBAQCBzdGF0aWMgaW50IGN0cmxfZHVtcGZhbWlseShz dHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpCiAKIAkJaWYg KGN0cmxfZmlsbF9pbmZvKHJ0LCBORVRMSU5LX0NCKGNiLT5za2IpLnBvcnRpZCwKIAkJCQkgICBj Yi0+bmxoLT5ubG1zZ19zZXEsIE5MTV9GX01VTFRJLAotCQkJCSAgIHNrYiwgQ1RSTF9DTURfTkVX RkFNSUxZKSA8IDApCisJCQkJICAgc2tiLCBDVFJMX0NNRF9ORVdGQU1JTFkpIDwgMCkgeworCQkJ bi0tOwogCQkJYnJlYWs7CisJCX0KIAl9CiAKIAljYi0+YXJnc1swXSA9IG47Ci0tIAoyLjEuMAoK CkZyb20gNGVhZGY5MzRiNDU0ZDkwODU1ZjVjYzI1NWJhZmMwNGUxZWU2YjlhMiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDE3IDA4OjEwOjIxIC0wNzAwClN1YmplY3Q6IFtQQVRDSCAyMi8y NF0gdGNwOiBpbml0aWFsaXplIGljc2tfYWNrLmxyY3Z0aW1lIGF0IHNlc3Npb24gc3RhcnQgdGlt ZQoKWyBVcHN0cmVhbSBjb21taXQgMTViYjc3NDVlOTRhNjY1Y2FmNDJiZmFhYmYwY2UwNjI4NDVi NTMzYiBdCgppY3NrX2Fjay5scmN2dGltZSBoYXMgYSAwIHZhbHVlIGF0IHNvY2tldCBjcmVhdGlv biB0aW1lLgoKdGNwaV9sYXN0X2RhdGFfcmVjdiBjYW4gaGF2ZSBib2d1cyB2YWx1ZSBpZiBubyBw YXlsb2FkIGlzIGV2ZXIgcmVjZWl2ZWQuCgpUaGlzIHBhdGNoIGluaXRpYWxpemVzIGljc2tfYWNr LmxyY3Z0aW1lIGZvciBhY3RpdmUgc2Vzc2lvbnMKaW4gdGNwX2ZpbmlzaF9jb25uZWN0KCksIGFu ZCBmb3IgcGFzc2l2ZSBzZXNzaW9ucyBpbgp0Y3BfY3JlYXRlX29wZW5yZXFfY2hpbGQoKQoKU2ln bmVkLW9mZi1ieTogRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgpBY2tlZC1ieTog TmVhbCBDYXJkd2VsbCA8bmNhcmR3ZWxsQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlk IFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBuZXQvaXB2NC90Y3BfaW5wdXQu YyAgICAgfCAyICstCiBuZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMgfCAxICsKIDIgZmlsZXMgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvbmV0L2lw djQvdGNwX2lucHV0LmMgYi9uZXQvaXB2NC90Y3BfaW5wdXQuYwppbmRleCAyODc3N2EwLi5lNzUx NmVmIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfaW5wdXQuYworKysgYi9uZXQvaXB2NC90Y3Bf aW5wdXQuYwpAQCAtNTU3MSw2ICs1NTcxLDcgQEAgdm9pZCB0Y3BfZmluaXNoX2Nvbm5lY3Qoc3Ry dWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCXN0cnVjdCBpbmV0X2Nvbm5lY3Rp b25fc29jayAqaWNzayA9IGluZXRfY3NrKHNrKTsKIAogCXRjcF9zZXRfc3RhdGUoc2ssIFRDUF9F U1RBQkxJU0hFRCk7CisJaWNzay0+aWNza19hY2subHJjdnRpbWUgPSB0Y3BfdGltZV9zdGFtcDsK IAogCWlmIChza2IpIHsKIAkJaWNzay0+aWNza19hZl9vcHMtPnNrX3J4X2RzdF9zZXQoc2ssIHNr Yik7CkBAIC01Nzg5LDcgKzU3OTAsNiBAQCBzdGF0aWMgaW50IHRjcF9yY3Zfc3luc2VudF9zdGF0 ZV9wcm9jZXNzKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCSAqIHRv IHN0YW5kIGFnYWluc3QgdGhlIHRlbXB0YXRpb24gOCkgICAgIC0tQU5LCiAJCQkgKi8KIAkJCWlu ZXRfY3NrX3NjaGVkdWxlX2Fjayhzayk7Ci0JCQlpY3NrLT5pY3NrX2Fjay5scmN2dGltZSA9IHRj cF90aW1lX3N0YW1wOwogCQkJdGNwX2VudGVyX3F1aWNrYWNrX21vZGUoc2spOwogCQkJaW5ldF9j c2tfcmVzZXRfeG1pdF90aW1lcihzaywgSUNTS19USU1FX0RBQ0ssCiAJCQkJCQkgIFRDUF9ERUxB Q0tfTUFYLCBUQ1BfUlRPX01BWCk7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfbWluaXNvY2tz LmMgYi9uZXQvaXB2NC90Y3BfbWluaXNvY2tzLmMKaW5kZXggMjhjZTVlZS4uODBmZjUxNyAxMDA2 NDQKLS0tIGEvbmV0L2lwdjQvdGNwX21pbmlzb2Nrcy5jCisrKyBiL25ldC9pcHY0L3RjcF9taW5p c29ja3MuYwpAQCAtNDY2LDYgKzQ2Niw3IEBAIHN0cnVjdCBzb2NrICp0Y3BfY3JlYXRlX29wZW5y ZXFfY2hpbGQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLAogCQluZXd0cC0+bWRldl91cyA9IGppZmZp ZXNfdG9fdXNlY3MoVENQX1RJTUVPVVRfSU5JVCk7CiAJCW1pbm1heF9yZXNldCgmbmV3dHAtPnJ0 dF9taW4sIHRjcF90aW1lX3N0YW1wLCB+MFUpOwogCQluZXdpY3NrLT5pY3NrX3J0byA9IFRDUF9U SU1FT1VUX0lOSVQ7CisJCW5ld2ljc2stPmljc2tfYWNrLmxyY3Z0aW1lID0gdGNwX3RpbWVfc3Rh bXA7CiAKIAkJbmV3dHAtPnBhY2tldHNfb3V0ID0gMDsKIAkJbmV3dHAtPnJldHJhbnNfb3V0ID0g MDsKLS0gCjIuMS4wCgoKRnJvbSBhZGM3ZTBhYTA4NGIxNGY3NTUwY2I0Yzg4YWE4OWUxOGQ4MjM1 YTY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiTGVuZGFja3ksIFRob21hcyIgPFRo b21hcy5MZW5kYWNreUBhbWQuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDE3IDE3OjI1OjI3IC0w NTAwClN1YmplY3Q6IFtQQVRDSCAyMy8yNF0gYW1kLXhnYmU6IEZpeCB0aGUgRUNDLXJlbGF0ZWQg Yml0IHBvc2l0aW9uIGRlZmluaXRpb25zCgpbIFVwc3RyZWFtIGNvbW1pdCBmNDNmZWVmNGU2YWNk ZTEwODU3ZmNiZmRlZGU3OTBkNmIzZjJjNzFkIF0KClRoZSBFQ0MgYml0IHBvc2l0aW9ucyB0aGF0 IGRlc2NyaWJlIHdoZXRoZXIgdGhlIEVDQyBpbnRlcnJ1cHQgaXMgZm9yClR4LCBSeCBvciBkZXNj cmlwdG9yIG1lbW9yeSBhbmQgd2hldGhlciB0aGUgaXQgaXMgYSBzaW5nbGUgY29ycmVjdGFibGUK b3IgZG91YmxlIGRldGVjdGVkIGVycm9yIHdlcmUgZGVmaW5lZCBpbiBpbmNvcnJlY3RseSAocmV2 ZXJzZWQgb3JkZXIpLgpGaXggdGhlIGJpdCBwb3NpdGlvbiBkZWZpbml0aW9ucyBmb3IgdGhlc2Ug c2V0dGluZ3Mgc28gdGhhdCB0aGUgcHJvcGVyCkVDQyBoYW5kbGluZyBpcyBwZXJmb3JtZWQuCgpT aWduZWQtb2ZmLWJ5OiBUb20gTGVuZGFja3kgPHRob21hcy5sZW5kYWNreUBhbWQuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBEYXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+Ci0tLQogZHJp dmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1jb21tb24uaCB8IDI0ICsrKysrKysrKysr Ky0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUt Y29tbW9uLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWNvbW1vbi5oCmlu ZGV4IDg2ZjE2MjYuLjEyN2FkYmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Ft ZC94Z2JlL3hnYmUtY29tbW9uLmgKKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUv eGdiZS1jb21tb24uaApAQCAtOTg0LDI5ICs5ODQsMjkgQEAKICNkZWZpbmUgWFBfRUNDX0NOVDFf REVTQ19ERURfV0lEVEgJCTgKICNkZWZpbmUgWFBfRUNDX0NOVDFfREVTQ19TRUNfSU5ERVgJCTAK ICNkZWZpbmUgWFBfRUNDX0NOVDFfREVTQ19TRUNfV0lEVEgJCTgKLSNkZWZpbmUgWFBfRUNDX0lF Ul9ERVNDX0RFRF9JTkRFWAkJMAorI2RlZmluZSBYUF9FQ0NfSUVSX0RFU0NfREVEX0lOREVYCQk1 CiAjZGVmaW5lIFhQX0VDQ19JRVJfREVTQ19ERURfV0lEVEgJCTEKLSNkZWZpbmUgWFBfRUNDX0lF Ul9ERVNDX1NFQ19JTkRFWAkJMQorI2RlZmluZSBYUF9FQ0NfSUVSX0RFU0NfU0VDX0lOREVYCQk0 CiAjZGVmaW5lIFhQX0VDQ19JRVJfREVTQ19TRUNfV0lEVEgJCTEKLSNkZWZpbmUgWFBfRUNDX0lF Ul9SWF9ERURfSU5ERVgJCQkyCisjZGVmaW5lIFhQX0VDQ19JRVJfUlhfREVEX0lOREVYCQkJMwog I2RlZmluZSBYUF9FQ0NfSUVSX1JYX0RFRF9XSURUSAkJCTEKLSNkZWZpbmUgWFBfRUNDX0lFUl9S WF9TRUNfSU5ERVgJCQkzCisjZGVmaW5lIFhQX0VDQ19JRVJfUlhfU0VDX0lOREVYCQkJMgogI2Rl ZmluZSBYUF9FQ0NfSUVSX1JYX1NFQ19XSURUSAkJCTEKLSNkZWZpbmUgWFBfRUNDX0lFUl9UWF9E RURfSU5ERVgJCQk0CisjZGVmaW5lIFhQX0VDQ19JRVJfVFhfREVEX0lOREVYCQkJMQogI2RlZmlu ZSBYUF9FQ0NfSUVSX1RYX0RFRF9XSURUSAkJCTEKLSNkZWZpbmUgWFBfRUNDX0lFUl9UWF9TRUNf SU5ERVgJCQk1CisjZGVmaW5lIFhQX0VDQ19JRVJfVFhfU0VDX0lOREVYCQkJMAogI2RlZmluZSBY UF9FQ0NfSUVSX1RYX1NFQ19XSURUSAkJCTEKLSNkZWZpbmUgWFBfRUNDX0lTUl9ERVNDX0RFRF9J TkRFWAkJMAorI2RlZmluZSBYUF9FQ0NfSVNSX0RFU0NfREVEX0lOREVYCQk1CiAjZGVmaW5lIFhQ X0VDQ19JU1JfREVTQ19ERURfV0lEVEgJCTEKLSNkZWZpbmUgWFBfRUNDX0lTUl9ERVNDX1NFQ19J TkRFWAkJMQorI2RlZmluZSBYUF9FQ0NfSVNSX0RFU0NfU0VDX0lOREVYCQk0CiAjZGVmaW5lIFhQ X0VDQ19JU1JfREVTQ19TRUNfV0lEVEgJCTEKLSNkZWZpbmUgWFBfRUNDX0lTUl9SWF9ERURfSU5E RVgJCQkyCisjZGVmaW5lIFhQX0VDQ19JU1JfUlhfREVEX0lOREVYCQkJMwogI2RlZmluZSBYUF9F Q0NfSVNSX1JYX0RFRF9XSURUSAkJCTEKLSNkZWZpbmUgWFBfRUNDX0lTUl9SWF9TRUNfSU5ERVgJ CQkzCisjZGVmaW5lIFhQX0VDQ19JU1JfUlhfU0VDX0lOREVYCQkJMgogI2RlZmluZSBYUF9FQ0Nf SVNSX1JYX1NFQ19XSURUSAkJCTEKLSNkZWZpbmUgWFBfRUNDX0lTUl9UWF9ERURfSU5ERVgJCQk0 CisjZGVmaW5lIFhQX0VDQ19JU1JfVFhfREVEX0lOREVYCQkJMQogI2RlZmluZSBYUF9FQ0NfSVNS X1RYX0RFRF9XSURUSAkJCTEKLSNkZWZpbmUgWFBfRUNDX0lTUl9UWF9TRUNfSU5ERVgJCQk1Cisj ZGVmaW5lIFhQX0VDQ19JU1JfVFhfU0VDX0lOREVYCQkJMAogI2RlZmluZSBYUF9FQ0NfSVNSX1RY X1NFQ19XSURUSAkJCTEKICNkZWZpbmUgWFBfSTJDX01VVEVYX0JVU1lfSU5ERVgJCQkzMQogI2Rl ZmluZSBYUF9JMkNfTVVURVhfQlVTWV9XSURUSAkJCTEKLS0gCjIuMS4wCgoKRnJvbSBmOTI2ODJl OWY2OTAwNDMyZWRkYWM0ZmQ0ZTMxOTczMzJhNmZmN2E4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkRhdGU6IFRodSwgMTYg TWFyIDIwMTcgMTk6MDI6MzMgLTA3MDAKU3ViamVjdDogW1BBVENIIDI0LzI0XSBuZXQ6IHNvbHZl IGEgTkFQSSByYWNlCgpjb21taXQgMzllNmM4MjA4ZDdiNmZiOWQyMDQ3ODUwZmIzMzI3ZGI1Njdi NTY0YiB1cHN0cmVhbS4KCldoaWxlIHBsYXlpbmcgd2l0aCBtbHg0IGhhcmR3YXJlIHRpbWVzdGFt cGluZyBvZiBSWCBwYWNrZXRzLCBJIGZvdW5kCnRoYXQgc29tZSBwYWNrZXRzIHdlcmUgcmVjZWl2 ZWQgYnkgVENQIHN0YWNrIHdpdGggYSB+MjAwIG1zIGRlbGF5Li4uCgpTaW5jZSB0aGUgdGltZXN0 YW1wIHdhcyBwcm92aWRlZCBieSB0aGUgTklDLCBhbmQgbXkgcHJvYmUgd2FzIGFkZGVkCmluIHRj cF92NF9yY3YoKSB3aGlsZSBpbiBCSCBoYW5kbGVyLCBJIHdhcyBjb25maWRlbnQgaXQgd2FzIG5v dAphIHNlbmRlciBpc3N1ZSwgb3IgYSBkcm9wIGluIHRoZSBuZXR3b3JrLgoKVGhpcyB3b3VsZCBo YXBwZW4gd2l0aCBhIHZlcnkgbG93IHByb2JhYmlsaXR5LCBidXQgaHVydGluZyBSUEMKd29ya2xv YWRzLgoKQSBOQVBJIGRyaXZlciBub3JtYWxseSBhcm1zIHRoZSBJUlEgYWZ0ZXIgdGhlIG5hcGlf Y29tcGxldGVfZG9uZSgpLAphZnRlciBOQVBJX1NUQVRFX1NDSEVEIGlzIGNsZWFyZWQsIHNvIHRo YXQgdGhlIGhhcmQgaXJxIGhhbmRsZXIgY2FuIGdyYWIKaXQuCgpQcm9ibGVtIGlzIHRoYXQgaWYg YW5vdGhlciBwb2ludCBpbiB0aGUgc3RhY2sgZ3JhYnMgTkFQSV9TVEFURV9TQ0hFRCBiaXQKd2hp bGUgSVJRIGFyZSBub3QgZGlzYWJsZWQsIHdlIG1pZ2h0IGhhdmUgbGF0ZXIgYW4gSVJRIGZpcmlu ZyBhbmQKZmluZGluZyB0aGlzIGJpdCBzZXQsIHJpZ2h0IGJlZm9yZSBuYXBpX2NvbXBsZXRlX2Rv bmUoKSBjbGVhcnMgaXQuCgpUaGlzIGNhbiBoYXBwZW4gd2l0aCBidXN5IHBvbGxpbmcgdXNlcnMs IG9yIGlmIGdyb19mbHVzaF90aW1lb3V0IGlzCnVzZWQuIEJ1dCBzb21lIG90aGVyIHVzZXMgb2Yg bmFwaV9zY2hlZHVsZSgpIGluIGRyaXZlcnMgY2FuIGNhdXNlIHRoaXMKYXMgd2VsbC4KCnRocmVh ZCAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkIDIgKGNvdWxkIGJlIG9u IHNhbWUgY3B1LCBvciBub3QpCgovLyBidXN5IHBvbGxpbmcgb3IgbmFwaV93YXRjaGRvZygpCm5h cGlfc2NoZWR1bGUoKTsKLi4uCm5hcGktPnBvbGwoKQoKZGV2aWNlIHBvbGxpbmc6CnJlYWQgMiBw YWNrZXRzIGZyb20gcmluZyBidWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQWRkaXRpb25hbCAzcmQgcGFja2V0IGlzCmF2YWlsYWJsZS4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlIGhhcmQgaXJxCgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb2VzIG5vdGhpbmcgYmVjYXVzZQpO QVBJX1NUQVRFX1NDSEVEIGJpdCBpcyBvd25lZCBieSB0aHJlYWQgMQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBuYXBpX3NjaGVkdWxlKCk7CgpuYXBpX2NvbXBsZXRl X2RvbmUobmFwaSwgMik7CnJlYXJtX2lycSgpOwoKTm90ZSB0aGF0IHJlYXJtX2lycSgpIHdpbGwg bm90IGZvcmNlIHRoZSBkZXZpY2UgdG8gc2VuZCBhbiBhZGRpdGlvbmFsCklSUSBmb3IgdGhlIHBh Y2tldCBpdCBhbHJlYWR5IHNpZ25hbGVkICgzcmQgcGFja2V0IGluIG15IGV4YW1wbGUpCgpUaGlz IHBhdGNoIGFkZHMgYSBuZXcgTkFQSV9TVEFURV9NSVNTRUQgYml0LCB0aGF0IG5hcGlfc2NoZWR1 bGVfcHJlcCgpCmNhbiBzZXQgaWYgaXQgY291bGQgbm90IGdyYWIgTkFQSV9TVEFURV9TQ0hFRAoK VGhlbiBuYXBpX2NvbXBsZXRlX2RvbmUoKSBwcm9wZXJseSByZXNjaGVkdWxlcyB0aGUgbmFwaSB0 byBtYWtlIHN1cmUKd2UgZG8gbm90IG1pc3Mgc29tZXRoaW5nLgoKU2luY2Ugd2UgbWFuaXB1bGF0 ZSBtdWx0aXBsZSBiaXRzIGF0IG9uY2UsIHVzZSBjbXB4Y2hnKCkgbGlrZSBpbgpza19idXN5X2xv b3AoKSB0byBwcm92aWRlIHByb3BlciB0cmFuc2FjdGlvbnMuCgpJbiB2MiwgSSBjaGFuZ2VkIG5h cGlfd2F0Y2hkb2coKSB0byB1c2UgYSByZWxheGVkIHZhcmlhbnQgb2YKbmFwaV9zY2hlZHVsZV9w cmVwKCkgOiBObyBuZWVkIHRvIHNldCBOQVBJX1NUQVRFX01JU1NFRCBmcm9tIHRoaXMgcG9pbnQu CgpJbiB2MywgSSBhZGRlZCBtb3JlIGRldGFpbHMgaW4gdGhlIGNoYW5nZWxvZyBhbmQgY2xlYXJz Ck5BUElfU1RBVEVfTUlTU0VEIGluIGJ1c3lfcG9sbF9zdG9wKCkKCkluIHY0LCBJIGFkZGVkIHRo ZSBpZGVhcyBnaXZlbiBieSBBbGV4YW5kZXIgRHV5Y2sgaW4gdjMgcmV2aWV3CgpTaWduZWQtb2Zm LWJ5OiBFcmljIER1bWF6ZXQgPGVkdW1hemV0QGdvb2dsZS5jb20+CkNjOiBBbGV4YW5kZXIgRHV5 Y2sgPGFsZXhhbmRlci5kdXlja0BnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFMuIE1p bGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KLS0tCiBpbmNsdWRlL2xpbnV4L25ldGRldmljZS5o IHwgMjkgKysrKysrLS0tLS0tLS0tLS0KIG5ldC9jb3JlL2Rldi5jICAgICAgICAgICAgfCA4MSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogMiBmaWxlcyBj aGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L25ldGRldmljZS5oIGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaAppbmRl eCAyNzkxNDY3Li5iZGVmOGI3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5o CisrKyBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKQEAgLTMzMCw2ICszMzAsNyBAQCBzdHJ1 Y3QgbmFwaV9zdHJ1Y3QgewogCiBlbnVtIHsKIAlOQVBJX1NUQVRFX1NDSEVELAkvKiBQb2xsIGlz IHNjaGVkdWxlZCAqLworCU5BUElfU1RBVEVfTUlTU0VELAkvKiByZXNjaGVkdWxlIGEgbmFwaSAq LwogCU5BUElfU1RBVEVfRElTQUJMRSwJLyogRGlzYWJsZSBwZW5kaW5nICovCiAJTkFQSV9TVEFU RV9OUFNWQywJLyogTmV0cG9sbCAtIGRvbid0IGRlcXVldWUgZnJvbSBwb2xsX2xpc3QgKi8KIAlO QVBJX1NUQVRFX0hBU0hFRCwJLyogSW4gTkFQSSBoYXNoIChidXN5IHBvbGxpbmcgcG9zc2libGUp ICovCkBAIC0zMzgsMTIgKzMzOSwxMyBAQCBlbnVtIHsKIH07CiAKIGVudW0gewotCU5BUElGX1NU QVRFX1NDSEVECSA9ICgxVUwgPDwgTkFQSV9TVEFURV9TQ0hFRCksCi0JTkFQSUZfU1RBVEVfRElT QUJMRQkgPSAoMVVMIDw8IE5BUElfU1RBVEVfRElTQUJMRSksCi0JTkFQSUZfU1RBVEVfTlBTVkMJ ID0gKDFVTCA8PCBOQVBJX1NUQVRFX05QU1ZDKSwKLQlOQVBJRl9TVEFURV9IQVNIRUQJID0gKDFV TCA8PCBOQVBJX1NUQVRFX0hBU0hFRCksCi0JTkFQSUZfU1RBVEVfTk9fQlVTWV9QT0xMID0gKDFV TCA8PCBOQVBJX1NUQVRFX05PX0JVU1lfUE9MTCksCi0JTkFQSUZfU1RBVEVfSU5fQlVTWV9QT0xM ID0gKDFVTCA8PCBOQVBJX1NUQVRFX0lOX0JVU1lfUE9MTCksCisJTkFQSUZfU1RBVEVfU0NIRUQJ ID0gQklUKE5BUElfU1RBVEVfU0NIRUQpLAorCU5BUElGX1NUQVRFX01JU1NFRAkgPSBCSVQoTkFQ SV9TVEFURV9NSVNTRUQpLAorCU5BUElGX1NUQVRFX0RJU0FCTEUJID0gQklUKE5BUElfU1RBVEVf RElTQUJMRSksCisJTkFQSUZfU1RBVEVfTlBTVkMJID0gQklUKE5BUElfU1RBVEVfTlBTVkMpLAor CU5BUElGX1NUQVRFX0hBU0hFRAkgPSBCSVQoTkFQSV9TVEFURV9IQVNIRUQpLAorCU5BUElGX1NU QVRFX05PX0JVU1lfUE9MTCA9IEJJVChOQVBJX1NUQVRFX05PX0JVU1lfUE9MTCksCisJTkFQSUZf U1RBVEVfSU5fQlVTWV9QT0xMID0gQklUKE5BUElfU1RBVEVfSU5fQlVTWV9QT0xMKSwKIH07CiAK IGVudW0gZ3JvX3Jlc3VsdCB7CkBAIC00MTMsMjAgKzQxNSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v bCBuYXBpX2Rpc2FibGVfcGVuZGluZyhzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm4pCiAJcmV0dXJuIHRl c3RfYml0KE5BUElfU1RBVEVfRElTQUJMRSwgJm4tPnN0YXRlKTsKIH0KIAotLyoqCi0gKgluYXBp X3NjaGVkdWxlX3ByZXAgLSBjaGVjayBpZiBOQVBJIGNhbiBiZSBzY2hlZHVsZWQKLSAqCUBuOiBO QVBJIGNvbnRleHQKLSAqCi0gKiBUZXN0IGlmIE5BUEkgcm91dGluZSBpcyBhbHJlYWR5IHJ1bm5p bmcsIGFuZCBpZiBub3QgbWFyawotICogaXQgYXMgcnVubmluZy4gIFRoaXMgaXMgdXNlZCBhcyBh IGNvbmRpdGlvbiB2YXJpYWJsZSB0bwotICogaW5zdXJlIG9ubHkgb25lIE5BUEkgcG9sbCBpbnN0 YW5jZSBydW5zLiAgV2UgYWxzbyBtYWtlCi0gKiBzdXJlIHRoZXJlIGlzIG5vIHBlbmRpbmcgTkFQ SSBkaXNhYmxlLgotICovCi1zdGF0aWMgaW5saW5lIGJvb2wgbmFwaV9zY2hlZHVsZV9wcmVwKHN0 cnVjdCBuYXBpX3N0cnVjdCAqbikKLXsKLQlyZXR1cm4gIW5hcGlfZGlzYWJsZV9wZW5kaW5nKG4p ICYmCi0JCSF0ZXN0X2FuZF9zZXRfYml0KE5BUElfU1RBVEVfU0NIRUQsICZuLT5zdGF0ZSk7Ci19 Citib29sIG5hcGlfc2NoZWR1bGVfcHJlcChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm4pOwogCiAvKioK ICAqCW5hcGlfc2NoZWR1bGUgLSBzY2hlZHVsZSBOQVBJIHBvbGwKZGlmZiAtLWdpdCBhL25ldC9j b3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmMKaW5kZXggZmQ2ZTJkZi4uNTRmOGMxNiAxMDA2NDQK LS0tIGEvbmV0L2NvcmUvZGV2LmMKKysrIGIvbmV0L2NvcmUvZGV2LmMKQEAgLTQ5MTMsNiArNDkx MywzOSBAQCB2b2lkIF9fbmFwaV9zY2hlZHVsZShzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm4pCiBFWFBP UlRfU1lNQk9MKF9fbmFwaV9zY2hlZHVsZSk7CiAKIC8qKgorICoJbmFwaV9zY2hlZHVsZV9wcmVw IC0gY2hlY2sgaWYgbmFwaSBjYW4gYmUgc2NoZWR1bGVkCisgKglAbjogbmFwaSBjb250ZXh0Cisg KgorICogVGVzdCBpZiBOQVBJIHJvdXRpbmUgaXMgYWxyZWFkeSBydW5uaW5nLCBhbmQgaWYgbm90 IG1hcmsKKyAqIGl0IGFzIHJ1bm5pbmcuICBUaGlzIGlzIHVzZWQgYXMgYSBjb25kaXRpb24gdmFy aWFibGUKKyAqIGluc3VyZSBvbmx5IG9uZSBOQVBJIHBvbGwgaW5zdGFuY2UgcnVucy4gIFdlIGFs c28gbWFrZQorICogc3VyZSB0aGVyZSBpcyBubyBwZW5kaW5nIE5BUEkgZGlzYWJsZS4KKyAqLwor Ym9vbCBuYXBpX3NjaGVkdWxlX3ByZXAoc3RydWN0IG5hcGlfc3RydWN0ICpuKQoreworCXVuc2ln bmVkIGxvbmcgdmFsLCBuZXc7CisKKwlkbyB7CisJCXZhbCA9IFJFQURfT05DRShuLT5zdGF0ZSk7 CisJCWlmICh1bmxpa2VseSh2YWwgJiBOQVBJRl9TVEFURV9ESVNBQkxFKSkKKwkJCXJldHVybiBm YWxzZTsKKwkJbmV3ID0gdmFsIHwgTkFQSUZfU1RBVEVfU0NIRUQ7CisKKwkJLyogU2V0cyBTVEFU RV9NSVNTRUQgYml0IGlmIFNUQVRFX1NDSEVEIHdhcyBhbHJlYWR5IHNldAorCQkgKiBUaGlzIHdh cyBzdWdnZXN0ZWQgYnkgQWxleGFuZGVyIER1eWNrLCBhcyBjb21waWxlcgorCQkgKiBlbWl0cyBi ZXR0ZXIgY29kZSB0aGFuIDoKKwkJICogaWYgKHZhbCAmIE5BUElGX1NUQVRFX1NDSEVEKQorCQkg KiAgICAgbmV3IHw9IE5BUElGX1NUQVRFX01JU1NFRDsKKwkJICovCisJCW5ldyB8PSAodmFsICYg TkFQSUZfU1RBVEVfU0NIRUQpIC8gTkFQSUZfU1RBVEVfU0NIRUQgKgorCQkJCQkJICAgTkFQSUZf U1RBVEVfTUlTU0VEOworCX0gd2hpbGUgKGNtcHhjaGcoJm4tPnN0YXRlLCB2YWwsIG5ldykgIT0g dmFsKTsKKworCXJldHVybiAhKHZhbCAmIE5BUElGX1NUQVRFX1NDSEVEKTsKK30KK0VYUE9SVF9T WU1CT0wobmFwaV9zY2hlZHVsZV9wcmVwKTsKKworLyoqCiAgKiBfX25hcGlfc2NoZWR1bGVfaXJx b2ZmIC0gc2NoZWR1bGUgZm9yIHJlY2VpdmUKICAqIEBuOiBlbnRyeSB0byBzY2hlZHVsZQogICoK QEAgLTQ5NDMsNyArNDk3Niw3IEBAIEVYUE9SVF9TWU1CT0woX19uYXBpX2NvbXBsZXRlKTsKIAog Ym9vbCBuYXBpX2NvbXBsZXRlX2RvbmUoc3RydWN0IG5hcGlfc3RydWN0ICpuLCBpbnQgd29ya19k b25lKQogewotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJdW5zaWduZWQgbG9uZyBmbGFncywgdmFs LCBuZXc7CiAKIAkvKgogCSAqIDEpIERvbid0IGxldCBuYXBpIGRlcXVldWUgZnJvbSB0aGUgY3B1 IHBvbGwgbGlzdApAQCAtNDk2NywxNCArNTAwMCwzMyBAQCBib29sIG5hcGlfY29tcGxldGVfZG9u ZShzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm4sIGludCB3b3JrX2RvbmUpCiAJCWVsc2UKIAkJCW5hcGlf Z3JvX2ZsdXNoKG4sIGZhbHNlKTsKIAl9Ci0JaWYgKGxpa2VseShsaXN0X2VtcHR5KCZuLT5wb2xs X2xpc3QpKSkgewotCQlXQVJOX09OX09OQ0UoIXRlc3RfYW5kX2NsZWFyX2JpdChOQVBJX1NUQVRF X1NDSEVELCAmbi0+c3RhdGUpKTsKLQl9IGVsc2UgeworCWlmICh1bmxpa2VseSghbGlzdF9lbXB0 eSgmbi0+cG9sbF9saXN0KSkpIHsKIAkJLyogSWYgbi0+cG9sbF9saXN0IGlzIG5vdCBlbXB0eSwg d2UgbmVlZCB0byBtYXNrIGlycXMgKi8KIAkJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwotCQlfX25h cGlfY29tcGxldGUobik7CisJCWxpc3RfZGVsX2luaXQoJm4tPnBvbGxfbGlzdCk7CiAJCWxvY2Fs X2lycV9yZXN0b3JlKGZsYWdzKTsKIAl9CisKKwlkbyB7CisJCXZhbCA9IFJFQURfT05DRShuLT5z dGF0ZSk7CisKKwkJV0FSTl9PTl9PTkNFKCEodmFsICYgTkFQSUZfU1RBVEVfU0NIRUQpKTsKKwor CQluZXcgPSB2YWwgJiB+KE5BUElGX1NUQVRFX01JU1NFRCB8IE5BUElGX1NUQVRFX1NDSEVEKTsK KworCQkvKiBJZiBTVEFURV9NSVNTRUQgd2FzIHNldCwgbGVhdmUgU1RBVEVfU0NIRUQgc2V0LAor CQkgKiBiZWNhdXNlIHdlIHdpbGwgY2FsbCBuYXBpLT5wb2xsKCkgb25lIG1vcmUgdGltZS4KKwkJ ICogVGhpcyBDIGNvZGUgd2FzIHN1Z2dlc3RlZCBieSBBbGV4YW5kZXIgRHV5Y2sgdG8gaGVscCBn Y2MuCisJCSAqLworCQluZXcgfD0gKHZhbCAmIE5BUElGX1NUQVRFX01JU1NFRCkgLyBOQVBJRl9T VEFURV9NSVNTRUQgKgorCQkJCQkJICAgIE5BUElGX1NUQVRFX1NDSEVEOworCX0gd2hpbGUgKGNt cHhjaGcoJm4tPnN0YXRlLCB2YWwsIG5ldykgIT0gdmFsKTsKKworCWlmICh1bmxpa2VseSh2YWwg JiBOQVBJRl9TVEFURV9NSVNTRUQpKSB7CisJCV9fbmFwaV9zY2hlZHVsZShuKTsKKwkJcmV0dXJu IGZhbHNlOworCX0KKwogCXJldHVybiB0cnVlOwogfQogRVhQT1JUX1NZTUJPTChuYXBpX2NvbXBs ZXRlX2RvbmUpOwpAQCAtNTAwMCw2ICs1MDUyLDE2IEBAIHN0YXRpYyB2b2lkIGJ1c3lfcG9sbF9z dG9wKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgdm9pZCAqaGF2ZV9wb2xsX2xvY2spCiB7CiAJ aW50IHJjOwogCisJLyogQnVzeSBwb2xsaW5nIG1lYW5zIHRoZXJlIGlzIGEgaGlnaCBjaGFuY2Ug ZGV2aWNlIGRyaXZlciBoYXJkIGlycQorCSAqIGNvdWxkIG5vdCBncmFiIE5BUElfU1RBVEVfU0NI RUQsIGFuZCB0aGF0IE5BUElfU1RBVEVfTUlTU0VEIHdhcworCSAqIHNldCBpbiBuYXBpX3NjaGVk dWxlX3ByZXAoKS4KKwkgKiBTaW5jZSB3ZSBhcmUgYWJvdXQgdG8gY2FsbCBuYXBpLT5wb2xsKCkg b25jZSBtb3JlLCB3ZSBjYW4gc2FmZWx5CisJICogY2xlYXIgTkFQSV9TVEFURV9NSVNTRUQuCisJ ICoKKwkgKiBOb3RlOiB4ODYgY291bGQgdXNlIGEgc2luZ2xlICJsb2NrIGFuZCAuLi4iIGluc3Ry dWN0aW9uCisJICogdG8gcGVyZm9ybSB0aGVzZSB0d28gY2xlYXJfYml0KCkKKwkgKi8KKwljbGVh cl9iaXQoTkFQSV9TVEFURV9NSVNTRUQsICZuYXBpLT5zdGF0ZSk7CiAJY2xlYXJfYml0KE5BUElf U1RBVEVfSU5fQlVTWV9QT0xMLCAmbmFwaS0+c3RhdGUpOwogCiAJbG9jYWxfYmhfZGlzYWJsZSgp OwpAQCAtNTE0Niw4ICs1MjA4LDEzIEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBuYXBp X3dhdGNoZG9nKHN0cnVjdCBocnRpbWVyICp0aW1lcikKIAlzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5h cGk7CiAKIAluYXBpID0gY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QsIHRp bWVyKTsKLQlpZiAobmFwaS0+Z3JvX2xpc3QpCi0JCW5hcGlfc2NoZWR1bGUobmFwaSk7CisKKwkv KiBOb3RlIDogd2UgdXNlIGEgcmVsYXhlZCB2YXJpYW50IG9mIG5hcGlfc2NoZWR1bGVfcHJlcCgp IG5vdCBzZXR0aW5nCisJICogTkFQSV9TVEFURV9NSVNTRUQsIHNpbmNlIHdlIGRvIG5vdCByZWFj dCB0byBhIGRldmljZSBJUlEuCisJICovCisJaWYgKG5hcGktPmdyb19saXN0ICYmICFuYXBpX2Rp c2FibGVfcGVuZGluZyhuYXBpKSAmJgorCSAgICAhdGVzdF9hbmRfc2V0X2JpdChOQVBJX1NUQVRF X1NDSEVELCAmbmFwaS0+c3RhdGUpKQorCQlfX25hcGlfc2NoZWR1bGVfaXJxb2ZmKG5hcGkpOwog CiAJcmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUOwogfQotLSAKMi4xLjAKCg== ----Next_Part(Sat_Mar_25_00_53_59_2017_214)----