From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 21DAF6E468 for ; Thu, 28 Mar 2019 18:08:49 +0000 (UTC) From: Maarten Lankhorst Date: Thu, 28 Mar 2019 19:08:44 +0100 Message-Id: <20190328180845.3905-2-maarten.lankhorst@linux.intel.com> In-Reply-To: <20190328180845.3905-1-maarten.lankhorst@linux.intel.com> References: <20190328180845.3905-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 2/3] lib/igt_fb: Add support for Y410/Y416 formats, v5. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: WTQxMCBpcyBwYWNrZWQgd2l0aCBjb21wcmVzc2VkIGEgY2hhbm5lbCBhbmQgb25seSAzMiBicHAs IGxpa2UKMTAgYml0cyBSR0IgZm9ybWF0cy4gWTQxNiBpcyBhIHBhY2tlZCAxNiBiaXRzIHBlciBj b21wb25lbnQgZm9ybWF0LgoKQ2hhbmdlcyBzaW5jZSB2MToKLSBSZWJhc2Ugb24gdG9wIG9mIHVw c3RyZWFtIFlVViBjaGFuZ2VzLgpDaGFuZ2VzIHNpbmNlIHYyOgotIERpc2NhcmQgYWxwaGEgY2hh bm5lbCwgbm90IHVzZWQgdXBzdHJlYW0uCkNoYW5nZXMgc2luY2UgdjM6Ci0gSGFuZGxlIHRoZSBY VllVIGZvcm1hdHMgYW5kIFk0MXggZm9ybWF0cyBjb3JyZWN0bHkuCkNoYW5nZXMgc2luY2UgdjQ6 Ci0gRml4IFlVViBjb252ZXJzaW9uIHJvdXRpbmVzLiAoVmlsbGUpCi0gVXNlIG1lbXNldDY0IHRv IGNsZWFyIGluaXRpYWwgZmIuIChWaWxsZSkKClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hv cnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogbGliL2lndF9jb2xv cl9lbmNvZGluZy5jIHwgICA2ICsKIGxpYi9pZ3RfZmIuYyAgICAgICAgICAgICB8IDI1NyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjM4 IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY29s b3JfZW5jb2RpbmcuYyBiL2xpYi9pZ3RfY29sb3JfZW5jb2RpbmcuYwppbmRleCA5ZjlkYzE0Mzll ZTQuLjdkZTZkNWFiZDY5MCAxMDA2NDQKLS0tIGEvbGliL2lndF9jb2xvcl9lbmNvZGluZy5jCisr KyBiL2xpYi9pZ3RfY29sb3JfZW5jb2RpbmcuYwpAQCAtMTU0LDYgKzE1NCwxMiBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGNvbG9yX2VuY29kaW5nX2Zvcm1hdCB7CiAJeyBEUk1fRk9STUFUX1kyMTAs IDY1NDcyLmYsIDQwOTYuZiwgNjAxNjAuZiwgNDA5Ni5mLCAzMjc2OC5mLCA2MTQ0MC5mIH0sCiAJ eyBEUk1fRk9STUFUX1kyMTIsIDY1NTIwLmYsIDQwOTYuZiwgNjAxNjAuZiwgNDA5Ni5mLCAzMjc2 OC5mLCA2MTQ0MC5mIH0sCiAJeyBEUk1fRk9STUFUX1kyMTYsIDY1NTM1LmYsIDQwOTYuZiwgNjAx NjAuZiwgNDA5Ni5mLCAzMjc2OC5mLCA2MTQ0MC5mIH0sCisJeyBEUk1fRk9STUFUX1k0MTAsIDEw MjMuZiwgNjQuZiwgOTQwLmYsIDY0LmYsIDUxMi5mLCA5NjAuZiB9LAorCXsgRFJNX0ZPUk1BVF9Z NDEyLCA2NTUyMC5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwgNjE0NDAuZiB9 LAorCXsgRFJNX0ZPUk1BVF9ZNDE2LCA2NTUzNS5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwg MzI3NjguZiwgNjE0NDAuZiB9LAorCXsgRFJNX0ZPUk1BVF9YVllVMjEwMTAxMCwgMTAyMy5mLCA2 NC5mLCA5NDAuZiwgNjQuZiwgNTEyLmYsIDk2MC5mIH0sCisJeyBEUk1fRk9STUFUX1hWWVUxMl8x NjE2MTYxNiwgNjU1MjAuZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQw LmYgfSwKKwl7IERSTV9GT1JNQVRfWFZZVTE2MTYxNjE2LCA2NTUzNS5mLCA0MDk2LmYsIDYwMTYw LmYsIDQwOTYuZiwgMzI3NjguZiwgNjE0NDAuZiB9LAogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVj dCBjb2xvcl9lbmNvZGluZ19mb3JtYXQgKmxvb2t1cF9mb3VyY2ModWludDMyX3QgZm91cmNjKQpk aWZmIC0tZ2l0IGEvbGliL2lndF9mYi5jIGIvbGliL2lndF9mYi5jCmluZGV4IGM1YjFlMTY5YTVm Zi4uNjAwZDljMjQ2ZTMwIDEwMDY0NAotLS0gYS9saWIvaWd0X2ZiLmMKKysrIGIvbGliL2lndF9m Yi5jCkBAIC0yMjEsNiArMjIxLDM2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZm9ybWF0X2Rlc2Nf c3RydWN0IHsKIAkgIC5udW1fcGxhbmVzID0gMywgLnBsYW5lX2JwcCA9IHsgOCwgOCwgOCwgfSwK IAkgIC5oc3ViID0gMiwgLnZzdWIgPSAxLAogCX0sCisJeyAubmFtZSA9ICJZNDEwIiwgLmRlcHRo ID0gLTEsIC5kcm1faWQgPSBEUk1fRk9STUFUX1k0MTAsCisJICAuY2Fpcm9faWQgPSBDQUlST19G T1JNQVRfUkdCQTEyOEYsCisJICAubnVtX3BsYW5lcyA9IDEsIC5wbGFuZV9icHAgPSB7IDMyLCB9 LAorCSAgLmhzdWIgPSAxLCAudnN1YiA9IDEsCisJfSwKKwl7IC5uYW1lID0gIlk0MTIiLCAuZGVw dGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfWTQxMiwKKwkgIC5jYWlyb19pZCA9IENBSVJP X0ZPUk1BVF9SR0JBMTI4RiwKKwkgIC5udW1fcGxhbmVzID0gMSwgLnBsYW5lX2JwcCA9IHsgNjQs IH0sCisJICAuaHN1YiA9IDEsIC52c3ViID0gMSwKKwl9LAorCXsgLm5hbWUgPSAiWTQxNiIsIC5k ZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9ZNDE2LAorCSAgLmNhaXJvX2lkID0gQ0FJ Uk9fRk9STUFUX1JHQkExMjhGLAorCSAgLm51bV9wbGFuZXMgPSAxLCAucGxhbmVfYnBwID0geyA2 NCwgfSwKKwkgIC5oc3ViID0gMSwgLnZzdWIgPSAxLAorCX0sCisJeyAubmFtZSA9ICJYVjMwIiwg LmRlcHRoID0gLTEsIC5kcm1faWQgPSBEUk1fRk9STUFUX1hWWVUyMTAxMDEwLAorCSAgLmNhaXJv X2lkID0gQ0FJUk9fRk9STUFUX1JHQjk2RiwKKwkgIC5udW1fcGxhbmVzID0gMSwgLnBsYW5lX2Jw cCA9IHsgMzIsIH0sCisJICAuaHN1YiA9IDEsIC52c3ViID0gMSwKKwl9LAorCXsgLm5hbWUgPSAi WFYzNiIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9YVllVMTJfMTYxNjE2MTYs CisJICAuY2Fpcm9faWQgPSBDQUlST19GT1JNQVRfUkdCOTZGLAorCSAgLm51bV9wbGFuZXMgPSAx LCAucGxhbmVfYnBwID0geyA2NCwgfSwKKwkgIC5oc3ViID0gMSwgLnZzdWIgPSAxLAorCX0sCisJ eyAubmFtZSA9ICJYVjQ4IiwgLmRlcHRoID0gLTEsIC5kcm1faWQgPSBEUk1fRk9STUFUX1hWWVUx NjE2MTYxNiwKKwkgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCisJICAubnVtX3Bs YW5lcyA9IDEsIC5wbGFuZV9icHAgPSB7IDY0LCB9LAorCSAgLmhzdWIgPSAxLCAudnN1YiA9IDEs CisJfSwKIAl7IC5uYW1lID0gIlAwMTAiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JN QVRfUDAxMCwKIAkgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCiAJICAubnVtX3Bs YW5lcyA9IDIsIC5wbGFuZV9icHAgPSB7IDE2LCAzMiB9LApAQCAtNjM4LDYgKzY2OCwxMiBAQCB1 aW50NjRfdCBpZ3RfZmJfdGlsaW5nX3RvX21vZCh1aW50NjRfdCB0aWxpbmcpCiAJfQogfQogCitz dGF0aWMgdm9pZCBtZW1zZXQ2NCh1aW50NjRfdCAqcywgdWludDY0X3QgYywgc2l6ZV90IG4pCit7 CisJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisJCXNbaV0gPSBjOworfQorCiBzdGF0aWMg dm9pZCBjbGVhcl95dXZfYnVmZmVyKHN0cnVjdCBpZ3RfZmIgKmZiKQogewogCWJvb2wgZnVsbF9y YW5nZSA9IGZiLT5jb2xvcl9yYW5nZSA9PSBJR1RfQ09MT1JfWUNCQ1JfRlVMTF9SQU5HRTsKQEAg LTY5MCw2ICs3MjYsMjEgQEAgc3RhdGljIHZvaWQgY2xlYXJfeXV2X2J1ZmZlcihzdHJ1Y3QgaWd0 X2ZiICpmYikKIAkJCWZiLT5zdHJpZGVzWzBdICogZmItPnBsYW5lX2hlaWdodFswXSAvIHNpemVv Zih3Y2hhcl90KSk7CiAJCWJyZWFrOwogCisJY2FzZSBEUk1fRk9STUFUX1hWWVUyMTAxMDEwOgor CWNhc2UgRFJNX0ZPUk1BVF9ZNDEwOgorCQl3bWVtc2V0KHB0ciArIGZiLT5vZmZzZXRzWzBdLAor CQkJZnVsbF9yYW5nZSA/IDB4MjAwMDAyMDAgOiAweDIwMDEwMjAwLAorCQlmYi0+c3RyaWRlc1sw XSAqIGZiLT5wbGFuZV9oZWlnaHRbMF0gLyBzaXplb2Yod2NoYXJfdCkpOworCQlicmVhazsKKwor CWNhc2UgRFJNX0ZPUk1BVF9YVllVMTJfMTYxNjE2MTY6CisJY2FzZSBEUk1fRk9STUFUX1hWWVUx NjE2MTYxNjoKKwljYXNlIERSTV9GT1JNQVRfWTQxMjoKKwljYXNlIERSTV9GT1JNQVRfWTQxNjoK KwkJbWVtc2V0NjQocHRyICsgZmItPm9mZnNldHNbMF0sCisJCQkgZnVsbF9yYW5nZSA/IDB4ODAw MDAwMDA4MDAwIDogMHg4MDAwMTAwMDgwMDBVTEwsCisJCQkgZmItPnN0cmlkZXNbMF0gKiBmYi0+ cGxhbmVfaGVpZ2h0WzBdIC8gc2l6ZW9mKHVpbnQ2NF90KSk7CisJCWJyZWFrOwogCX0KIAogCWln dF9mYl91bm1hcF9idWZmZXIoZmIsIHB0cik7CkBAIC0xOTAzLDEwICsxOTU0LDExIEBAIHN0YXRp YyB2b2lkIGNvbnZlcnRfc3JjX3B1dChjb25zdCBzdHJ1Y3QgZmJfY29udmVydCAqY3Z0LAogfQog CiBzdHJ1Y3QgeXV2X3BhcmFtZXRlcnMgewotCXVuc2lnbmVkCXlfaW5jOworCXVuc2lnbmVkCWF5 X2luYzsKIAl1bnNpZ25lZAl1dl9pbmM7Ci0JdW5zaWduZWQJeV9zdHJpZGU7CisJdW5zaWduZWQJ YXlfc3RyaWRlOwogCXVuc2lnbmVkCXV2X3N0cmlkZTsKKwl1bnNpZ25lZAlhX29mZnNldDsKIAl1 bnNpZ25lZAl5X29mZnNldDsKIAl1bnNpZ25lZAl1X29mZnNldDsKIAl1bnNpZ25lZAl2X29mZnNl dDsKQEAgLTE5MjQsNyArMTk3Niw3IEBAIHN0YXRpYyB2b2lkIGdldF95dXZfcGFyYW1ldGVycyhz dHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IHl1dl9wYXJhbWV0ZXJzICpwYXJhbXMpCiAJY2FzZSBE Uk1fRk9STUFUX1AwMTA6CiAJY2FzZSBEUk1fRk9STUFUX1AwMTI6CiAJY2FzZSBEUk1fRk9STUFU X1AwMTY6Ci0JCXBhcmFtcy0+eV9pbmMgPSAxOworCQlwYXJhbXMtPmF5X2luYyA9IDE7CiAJCXBh cmFtcy0+dXZfaW5jID0gMjsKIAkJYnJlYWs7CiAKQEAgLTE5MzIsNyArMTk4NCw3IEBAIHN0YXRp YyB2b2lkIGdldF95dXZfcGFyYW1ldGVycyhzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IHl1dl9w YXJhbWV0ZXJzICpwYXJhbXMpCiAJY2FzZSBEUk1fRk9STUFUX1lVVjQyMjoKIAljYXNlIERSTV9G T1JNQVRfWVZVNDIwOgogCWNhc2UgRFJNX0ZPUk1BVF9ZVlU0MjI6Ci0JCXBhcmFtcy0+eV9pbmMg PSAxOworCQlwYXJhbXMtPmF5X2luYyA9IDE7CiAJCXBhcmFtcy0+dXZfaW5jID0gMTsKIAkJYnJl YWs7CiAKQEAgLTE5NDMsMTIgKzE5OTUsMTYgQEAgc3RhdGljIHZvaWQgZ2V0X3l1dl9wYXJhbWV0 ZXJzKHN0cnVjdCBpZ3RfZmIgKmZiLCBzdHJ1Y3QgeXV2X3BhcmFtZXRlcnMgKnBhcmFtcykKIAlj YXNlIERSTV9GT1JNQVRfWTIxMDoKIAljYXNlIERSTV9GT1JNQVRfWTIxMjoKIAljYXNlIERSTV9G T1JNQVRfWTIxNjoKLQkJcGFyYW1zLT55X2luYyA9IDI7CisJCXBhcmFtcy0+YXlfaW5jID0gMjsK IAkJcGFyYW1zLT51dl9pbmMgPSA0OwogCQlicmVhazsKIAorCWNhc2UgRFJNX0ZPUk1BVF9YVllV MTJfMTYxNjE2MTY6CisJY2FzZSBEUk1fRk9STUFUX1hWWVUxNjE2MTYxNjoKKwljYXNlIERSTV9G T1JNQVRfWTQxMjoKKwljYXNlIERSTV9GT1JNQVRfWTQxNjoKIAljYXNlIERSTV9GT1JNQVRfWFlV Vjg4ODg6Ci0JCXBhcmFtcy0+eV9pbmMgPSA0OworCQlwYXJhbXMtPmF5X2luYyA9IDQ7CiAJCXBh cmFtcy0+dXZfaW5jID0gNDsKIAkJYnJlYWs7CiAJfQpAQCAtMTk2NSw3ICsyMDIxLDcgQEAgc3Rh dGljIHZvaWQgZ2V0X3l1dl9wYXJhbWV0ZXJzKHN0cnVjdCBpZ3RfZmIgKmZiLCBzdHJ1Y3QgeXV2 X3BhcmFtZXRlcnMgKnBhcmFtcykKIAljYXNlIERSTV9GT1JNQVRfUDAxMDoKIAljYXNlIERSTV9G T1JNQVRfUDAxMjoKIAljYXNlIERSTV9GT1JNQVRfUDAxNjoKLQkJcGFyYW1zLT55X3N0cmlkZSA9 IGZiLT5zdHJpZGVzWzBdOworCQlwYXJhbXMtPmF5X3N0cmlkZSA9IGZiLT5zdHJpZGVzWzBdOwog CQlwYXJhbXMtPnV2X3N0cmlkZSA9IGZiLT5zdHJpZGVzWzFdOwogCQlicmVhazsKIApAQCAtMTk3 Nyw3ICsyMDMzLDExIEBAIHN0YXRpYyB2b2lkIGdldF95dXZfcGFyYW1ldGVycyhzdHJ1Y3QgaWd0 X2ZiICpmYiwgc3RydWN0IHl1dl9wYXJhbWV0ZXJzICpwYXJhbXMpCiAJY2FzZSBEUk1fRk9STUFU X1kyMTI6CiAJY2FzZSBEUk1fRk9STUFUX1kyMTY6CiAJY2FzZSBEUk1fRk9STUFUX1hZVVY4ODg4 OgotCQlwYXJhbXMtPnlfc3RyaWRlID0gZmItPnN0cmlkZXNbMF07CisJY2FzZSBEUk1fRk9STUFU X1hWWVUxMl8xNjE2MTYxNjoKKwljYXNlIERSTV9GT1JNQVRfWFZZVTE2MTYxNjE2OgorCWNhc2Ug RFJNX0ZPUk1BVF9ZNDEyOgorCWNhc2UgRFJNX0ZPUk1BVF9ZNDE2OgorCQlwYXJhbXMtPmF5X3N0 cmlkZSA9IGZiLT5zdHJpZGVzWzBdOwogCQlwYXJhbXMtPnV2X3N0cmlkZSA9IGZiLT5zdHJpZGVz WzBdOwogCQlicmVhazsKIAl9CkBAIC0yMDUxLDYgKzIxMTEsMTYgQEAgc3RhdGljIHZvaWQgZ2V0 X3l1dl9wYXJhbWV0ZXJzKHN0cnVjdCBpZ3RfZmIgKmZiLCBzdHJ1Y3QgeXV2X3BhcmFtZXRlcnMg KnBhcmFtcykKIAkJcGFyYW1zLT52X29mZnNldCA9IGZiLT5vZmZzZXRzWzBdICsgNjsKIAkJYnJl YWs7CiAKKwljYXNlIERSTV9GT1JNQVRfWFZZVTEyXzE2MTYxNjE2OgorCWNhc2UgRFJNX0ZPUk1B VF9YVllVMTYxNjE2MTY6CisJY2FzZSBEUk1fRk9STUFUX1k0MTI6CisJY2FzZSBEUk1fRk9STUFU X1k0MTY6CisJCXBhcmFtcy0+YV9vZmZzZXQgPSBmYi0+b2Zmc2V0c1swXSArIDY7CisJCXBhcmFt cy0+eV9vZmZzZXQgPSBmYi0+b2Zmc2V0c1swXSArIDI7CisJCXBhcmFtcy0+dV9vZmZzZXQgPSBm Yi0+b2Zmc2V0c1swXTsKKwkJcGFyYW1zLT52X29mZnNldCA9IGZiLT5vZmZzZXRzWzBdICsgNDsK KwkJYnJlYWs7CisKIAljYXNlIERSTV9GT1JNQVRfWFlVVjg4ODg6CiAJCXBhcmFtcy0+eV9vZmZz ZXQgPSBmYi0+b2Zmc2V0c1swXSArIDE7CiAJCXBhcmFtcy0+dV9vZmZzZXQgPSBmYi0+b2Zmc2V0 c1swXSArIDI7CkBAIC0yMTAyLDcgKzIxNzIsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3l1dl90 b19yZ2IyNChzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogCQkJd3JpdGVfcmdiKHJnYl90bXAsICZy Z2IpOwogCiAJCQlyZ2JfdG1wICs9IGJwcDsKLQkJCXlfdG1wICs9IHBhcmFtcy55X2luYzsKKwkJ CXlfdG1wICs9IHBhcmFtcy5heV9pbmM7CiAKIAkJCWlmICgoc3JjX2ZtdC0+aHN1YiA9PSAxKSB8 fCAoaiAlIHNyY19mbXQtPmhzdWIpKSB7CiAJCQkJdV90bXAgKz0gcGFyYW1zLnV2X2luYzsKQEAg LTIxMTEsNyArMjE4MSw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfeXV2X3RvX3JnYjI0KHN0cnVj dCBmYl9jb252ZXJ0ICpjdnQpCiAJCX0KIAogCQlyZ2IyNCArPSByZ2IyNF9zdHJpZGU7Ci0JCXkg Kz0gcGFyYW1zLnlfc3RyaWRlOworCQl5ICs9IHBhcmFtcy5heV9zdHJpZGU7CiAKIAkJaWYgKChz cmNfZm10LT52c3ViID09IDEpIHx8IChpICUgc3JjX2ZtdC0+dnN1YikpIHsKIAkJCXUgKz0gcGFy YW1zLnV2X3N0cmlkZTsKQEAgLTIxNjIsNyArMjIzMiw3IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRf cmdiMjRfdG9feXV2KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCiAJCQlyZ2JfdG1wICs9IGJwcDsK IAogCQkJKnlfdG1wID0geXV2LmRbMF07Ci0JCQl5X3RtcCArPSBwYXJhbXMueV9pbmM7CisJCQl5 X3RtcCArPSBwYXJhbXMuYXlfaW5jOwogCiAJCQlpZiAoKGkgJSBkc3RfZm10LT52c3ViKSB8fCAo aiAlIGRzdF9mbXQtPmhzdWIpKQogCQkJCWNvbnRpbnVlOwpAQCAtMjE5OSw3ICsyMjY5LDcgQEAg c3RhdGljIHZvaWQgY29udmVydF9yZ2IyNF90b195dXYoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkK IAkJfQogCiAJCXJnYjI0ICs9IHJnYjI0X3N0cmlkZTsKLQkJeSArPSBwYXJhbXMueV9zdHJpZGU7 CisJCXkgKz0gcGFyYW1zLmF5X3N0cmlkZTsKIAogCQlpZiAoKGkgJSBkc3RfZm10LT52c3ViKSA9 PSAoZHN0X2ZtdC0+dnN1YiAtIDEpKSB7CiAJCQl1ICs9IHBhcmFtcy51dl9zdHJpZGU7CkBAIC0y MjIzLDEzICsyMjkzLDEzIEBAIHN0YXRpYyB2b2lkIHdyaXRlX3JnYmYoZmxvYXQgKnJnYjI0LCBj b25zdCBzdHJ1Y3QgaWd0X3ZlYzQgKnJnYikKIAlyZ2IyNFsyXSA9IHJnYi0+ZFsyXTsKIH0KIAot c3RhdGljIHZvaWQgY29udmVydF95dXYxNl90b19mbG9hdChzdHJ1Y3QgZmJfY29udmVydCAqY3Z0 KQorc3RhdGljIHZvaWQgY29udmVydF95dXYxNl90b19mbG9hdChzdHJ1Y3QgZmJfY29udmVydCAq Y3Z0LCBib29sIGFscGhhKQogewogCWNvbnN0IHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKnNy Y19mbXQgPQogCQlsb29rdXBfZHJtX2Zvcm1hdChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCk7CiAJ aW50IGksIGo7Ci0JdWludDhfdCBmcHAgPSAzOwotCXVpbnQxNl90ICp5LCAqdSwgKnY7CisJdWlu dDhfdCBmcHAgPSBhbHBoYSA/IDQgOiAzOworCXVpbnQxNl90ICphLCAqeSwgKnUsICp2OwogCWZs b2F0ICpwdHIgPSBjdnQtPmRzdC5wdHI7CiAJdW5zaWduZWQgaW50IGZsb2F0X3N0cmlkZSA9IGN2 dC0+ZHN0LmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCpwdHIpOwogCXN0cnVjdCBpZ3RfbWF0NCBt ID0gaWd0X3ljYmNyX3RvX3JnYl9tYXRyaXgoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQsCkBAIC0y MjQ4LDExICsyMzE4LDEzIEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfeXV2MTZfdG9fZmxvYXQoc3Ry dWN0IGZiX2NvbnZlcnQgKmN2dCkKIAkJICAgIShwYXJhbXMudV9vZmZzZXQgJSBzaXplb2YoKmJ1 ZikpICYmCiAJCSAgICEocGFyYW1zLnZfb2Zmc2V0ICUgc2l6ZW9mKCpidWYpKSk7CiAKKwlhID0g YnVmICsgcGFyYW1zLmFfb2Zmc2V0IC8gc2l6ZW9mKCpidWYpOwogCXkgPSBidWYgKyBwYXJhbXMu eV9vZmZzZXQgLyBzaXplb2YoKmJ1Zik7CiAJdSA9IGJ1ZiArIHBhcmFtcy51X29mZnNldCAvIHNp emVvZigqYnVmKTsKIAl2ID0gYnVmICsgcGFyYW1zLnZfb2Zmc2V0IC8gc2l6ZW9mKCpidWYpOwog CiAJZm9yIChpID0gMDsgaSA8IGN2dC0+ZHN0LmZiLT5oZWlnaHQ7IGkrKykgeworCQljb25zdCB1 aW50MTZfdCAqYV90bXAgPSBhOwogCQljb25zdCB1aW50MTZfdCAqeV90bXAgPSB5OwogCQljb25z dCB1aW50MTZfdCAqdV90bXAgPSB1OwogCQljb25zdCB1aW50MTZfdCAqdl90bXAgPSB2OwpAQCAt MjI2OSw4ICsyMzQxLDEzIEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfeXV2MTZfdG9fZmxvYXQoc3Ry dWN0IGZiX2NvbnZlcnQgKmN2dCkKIAkJCXJnYiA9IGlndF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAm eXV2KTsKIAkJCXdyaXRlX3JnYmYocmdiX3RtcCwgJnJnYik7CiAKKwkJCWlmIChhbHBoYSkgewor CQkJCXJnYl90bXBbM10gPSAoKGZsb2F0KSphX3RtcCkgLyA2NTUzNS5mOworCQkJCWFfdG1wICs9 IHBhcmFtcy5heV9pbmM7CisJCQl9CisKIAkJCXJnYl90bXAgKz0gZnBwOwotCQkJeV90bXAgKz0g cGFyYW1zLnlfaW5jOworCQkJeV90bXAgKz0gcGFyYW1zLmF5X2luYzsKIAogCQkJaWYgKChzcmNf Zm10LT5oc3ViID09IDEpIHx8IChqICUgc3JjX2ZtdC0+aHN1YikpIHsKIAkJCQl1X3RtcCArPSBw YXJhbXMudXZfaW5jOwpAQCAtMjI3OSw3ICsyMzU2LDkgQEAgc3RhdGljIHZvaWQgY29udmVydF95 dXYxNl90b19mbG9hdChzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogCQl9CiAKIAkJcHRyICs9IGZs b2F0X3N0cmlkZTsKLQkJeSArPSBwYXJhbXMueV9zdHJpZGUgLyBzaXplb2YoKnkpOworCisJCWEg Kz0gcGFyYW1zLmF5X3N0cmlkZSAvIHNpemVvZigqYSk7CisJCXkgKz0gcGFyYW1zLmF5X3N0cmlk ZSAvIHNpemVvZigqeSk7CiAKIAkJaWYgKChzcmNfZm10LT52c3ViID09IDEpIHx8IChpICUgc3Jj X2ZtdC0+dnN1YikpIHsKIAkJCXUgKz0gcGFyYW1zLnV2X3N0cmlkZSAvIHNpemVvZigqdSk7CkBA IC0yMjkwLDE0ICsyMzY5LDE0IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfeXV2MTZfdG9fZmxvYXQo c3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKIAljb252ZXJ0X3NyY19wdXQoY3Z0LCBidWYpOwogfQog Ci1zdGF0aWMgdm9pZCBjb252ZXJ0X2Zsb2F0X3RvX3l1djE2KHN0cnVjdCBmYl9jb252ZXJ0ICpj dnQpCitzdGF0aWMgdm9pZCBjb252ZXJ0X2Zsb2F0X3RvX3l1djE2KHN0cnVjdCBmYl9jb252ZXJ0 ICpjdnQsIGJvb2wgYWxwaGEpCiB7CiAJY29uc3Qgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAq ZHN0X2ZtdCA9CiAJCWxvb2t1cF9kcm1fZm9ybWF0KGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0KTsK IAlpbnQgaSwgajsKLQl1aW50MTZfdCAqeSwgKnUsICp2OworCXVpbnQxNl90ICphLCAqeSwgKnUs ICp2OwogCWNvbnN0IGZsb2F0ICpwdHIgPSBjdnQtPnNyYy5wdHI7Ci0JdWludDhfdCBmcHAgPSAz OworCXVpbnQ4X3QgZnBwID0gYWxwaGEgPyA0IDogMzsKIAl1bnNpZ25lZCBmbG9hdF9zdHJpZGUg PSBjdnQtPnNyYy5mYi0+c3RyaWRlc1swXSAvIHNpemVvZigqcHRyKTsKIAlzdHJ1Y3QgaWd0X21h dDQgbSA9IGlndF9yZ2JfdG9feWNiY3JfbWF0cml4KGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0LAog CQkJCQkJICAgIGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0LApAQCAtMjMwOSwxNiArMjM4OCwxOSBA QCBzdGF0aWMgdm9pZCBjb252ZXJ0X2Zsb2F0X3RvX3l1djE2KHN0cnVjdCBmYl9jb252ZXJ0ICpj dnQpCiAJCSAgIGlndF9mb3JtYXRfaXNfeXV2KGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0KSk7CiAK IAlnZXRfeXV2X3BhcmFtZXRlcnMoY3Z0LT5kc3QuZmIsICZwYXJhbXMpOwotCWlndF9hc3NlcnQo IShwYXJhbXMueV9vZmZzZXQgJSBzaXplb2YoKnkpKSAmJgorCWlndF9hc3NlcnQoIShwYXJhbXMu YV9vZmZzZXQgJSBzaXplb2YoKmEpKSAmJgorCQkgICAhKHBhcmFtcy55X29mZnNldCAlIHNpemVv ZigqeSkpICYmCiAJCSAgICEocGFyYW1zLnVfb2Zmc2V0ICUgc2l6ZW9mKCp1KSkgJiYKIAkJICAg IShwYXJhbXMudl9vZmZzZXQgJSBzaXplb2YoKnYpKSk7CiAKKwlhID0gY3Z0LT5kc3QucHRyICsg cGFyYW1zLmFfb2Zmc2V0OwogCXkgPSBjdnQtPmRzdC5wdHIgKyBwYXJhbXMueV9vZmZzZXQ7CiAJ dSA9IGN2dC0+ZHN0LnB0ciArIHBhcmFtcy51X29mZnNldDsKIAl2ID0gY3Z0LT5kc3QucHRyICsg cGFyYW1zLnZfb2Zmc2V0OwogCiAJZm9yIChpID0gMDsgaSA8IGN2dC0+ZHN0LmZiLT5oZWlnaHQ7 IGkrKykgewogCQljb25zdCBmbG9hdCAqcmdiX3RtcCA9IHB0cjsKKwkJdWludDE2X3QgKmFfdG1w ID0gYTsKIAkJdWludDE2X3QgKnlfdG1wID0geTsKIAkJdWludDE2X3QgKnVfdG1wID0gdTsKIAkJ dWludDE2X3QgKnZfdG1wID0gdjsKQEAgLTIzMzEsMTAgKzI0MTMsMTUgQEAgc3RhdGljIHZvaWQg Y29udmVydF9mbG9hdF90b195dXYxNihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogCQkJcmVhZF9y Z2JmKCZyZ2IsIHJnYl90bXApOwogCQkJeXV2ID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZy Z2IpOwogCisJCQlpZiAoYWxwaGEpIHsKKwkJCQkqYV90bXAgPSByZ2JfdG1wWzNdICogNjU1MzUu ZiArIC41ZjsKKwkJCQlhX3RtcCArPSBwYXJhbXMuYXlfaW5jOworCQkJfQorCiAJCQlyZ2JfdG1w ICs9IGZwcDsKIAogCQkJKnlfdG1wID0geXV2LmRbMF07Ci0JCQl5X3RtcCArPSBwYXJhbXMueV9p bmM7CisJCQl5X3RtcCArPSBwYXJhbXMuYXlfaW5jOwogCiAJCQlpZiAoKGkgJSBkc3RfZm10LT52 c3ViKSB8fCAoaiAlIGRzdF9mbXQtPmhzdWIpKQogCQkJCWNvbnRpbnVlOwpAQCAtMjM3MSw3ICsy NDU4LDggQEAgc3RhdGljIHZvaWQgY29udmVydF9mbG9hdF90b195dXYxNihzdHJ1Y3QgZmJfY29u dmVydCAqY3Z0KQogCQl9CiAKIAkJcHRyICs9IGZsb2F0X3N0cmlkZTsKLQkJeSArPSBwYXJhbXMu eV9zdHJpZGUgLyBzaXplb2YoKnkpOworCQlhICs9IHBhcmFtcy5heV9zdHJpZGUgLyBzaXplb2Yo KmEpOworCQl5ICs9IHBhcmFtcy5heV9zdHJpZGUgLyBzaXplb2YoKnkpOwogCiAJCWlmICgoaSAl IGRzdF9mbXQtPnZzdWIpID09IChkc3RfZm10LT52c3ViIC0gMSkpIHsKIAkJCXUgKz0gcGFyYW1z LnV2X3N0cmlkZSAvIHNpemVvZigqdSk7CkBAIC0yMzgwLDYgKzI0NjgsOTUgQEAgc3RhdGljIHZv aWQgY29udmVydF9mbG9hdF90b195dXYxNihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogCX0KIH0K IAorc3RhdGljIHZvaWQgY29udmVydF9ZNDEwX3RvX2Zsb2F0KHN0cnVjdCBmYl9jb252ZXJ0ICpj dnQsIGJvb2wgYWxwaGEpCit7CisJaW50IGksIGo7CisJY29uc3QgdWludDMyX3QgKnV5djsKKwl1 aW50MzJfdCAqYnVmOworCWZsb2F0ICpwdHIgPSBjdnQtPmRzdC5wdHI7CisJdW5zaWduZWQgaW50 IGZsb2F0X3N0cmlkZSA9IGN2dC0+ZHN0LmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCpwdHIpOwor CXVuc2lnbmVkIGludCB1eXZfc3RyaWRlID0gY3Z0LT5zcmMuZmItPnN0cmlkZXNbMF0gLyBzaXpl b2YoKnV5dik7CisJc3RydWN0IGlndF9tYXQ0IG0gPSBpZ3RfeWNiY3JfdG9fcmdiX21hdHJpeChj dnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCwKKwkJCQkJCSAgICBjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1h dCwKKwkJCQkJCSAgICBjdnQtPnNyYy5mYi0+Y29sb3JfZW5jb2RpbmcsCisJCQkJCQkgICAgY3Z0 LT5zcmMuZmItPmNvbG9yX3JhbmdlKTsKKwl1bnNpZ25lZCBicHAgPSBhbHBoYSA/IDQgOiAzOwor CisJaWd0X2Fzc2VydCgoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9ZNDEw IHx8CisJCSAgICBjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1hWWVUyMTAx MDEwKSAmJgorCQkgICBjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCA9PSBJR1RfRk9STUFUX0ZMT0FU KTsKKworCXV5diA9IGJ1ZiA9IGNvbnZlcnRfc3JjX2dldChjdnQpOworCisJZm9yIChpID0gMDsg aSA8IGN2dC0+ZHN0LmZiLT5oZWlnaHQ7IGkrKykgeworCQlmb3IgKGogPSAwOyBqIDwgY3Z0LT5k c3QuZmItPndpZHRoOyBqKyspIHsKKwkJCS8qIENvbnZlcnQgMngxIHBpeGVsIGJsb2NrcyAqLwor CQkJc3RydWN0IGlndF92ZWM0IHl1djsKKwkJCXN0cnVjdCBpZ3RfdmVjNCByZ2I7CisKKwkJCXl1 di5kWzBdID0gKHV5dltqXSA+PiAxMCkgJiAweDNmZjsKKwkJCXl1di5kWzFdID0gdXl2W2pdICYg MHgzZmY7CisJCQl5dXYuZFsyXSA9ICh1eXZbal0gPj4gMjApICYgMHgzZmY7CisJCQl5dXYuZFsz XSA9IDEuZjsKKworCQkJcmdiID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZ5dXYpOworCisJ CQl3cml0ZV9yZ2JmKCZwdHJbaiAqIGJwcF0sICZyZ2IpOworCQkJaWYgKGFscGhhKQorCQkJCXB0 cltqICogYnBwICsgM10gPSAoZmxvYXQpKHV5dltqXSA+PiAzMCkgLyAzLmY7CisJCX0KKworCQlw dHIgKz0gZmxvYXRfc3RyaWRlOworCQl1eXYgKz0gdXl2X3N0cmlkZTsKKwl9CisKKwljb252ZXJ0 X3NyY19wdXQoY3Z0LCBidWYpOworfQorCitzdGF0aWMgdm9pZCBjb252ZXJ0X2Zsb2F0X3RvX1k0 MTAoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCwgYm9vbCBhbHBoYSkKK3sKKwlpbnQgaSwgajsKKwl1 aW50MzJfdCAqdXl2ID0gY3Z0LT5kc3QucHRyOworCWNvbnN0IGZsb2F0ICpwdHIgPSBjdnQtPnNy Yy5wdHI7CisJdW5zaWduZWQgZmxvYXRfc3RyaWRlID0gY3Z0LT5zcmMuZmItPnN0cmlkZXNbMF0g LyBzaXplb2YoKnB0cik7CisJdW5zaWduZWQgdXl2X3N0cmlkZSA9IGN2dC0+ZHN0LmZiLT5zdHJp ZGVzWzBdIC8gc2l6ZW9mKCp1eXYpOworCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3JnYl90b195 Y2Jjcl9tYXRyaXgoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQsCisJCQkJCQkgICAgY3Z0LT5kc3Qu ZmItPmRybV9mb3JtYXQsCisJCQkJCQkgICAgY3Z0LT5kc3QuZmItPmNvbG9yX2VuY29kaW5nLAor CQkJCQkJICAgIGN2dC0+ZHN0LmZiLT5jb2xvcl9yYW5nZSk7CisJdW5zaWduZWQgYnBwID0gYWxw aGEgPyA0IDogMzsKKworCWlndF9hc3NlcnQoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQgPT0gSUdU X0ZPUk1BVF9GTE9BVCAmJgorCQkgICAoY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQgPT0gRFJNX0ZP Uk1BVF9ZNDEwIHx8CisJCSAgICBjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFU X1hWWVUyMTAxMDEwKSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgY3Z0LT5kc3QuZmItPmhlaWdodDsg aSsrKSB7CisJCWZvciAoaiA9IDA7IGogPCBjdnQtPmRzdC5mYi0+d2lkdGg7IGorKykgeworCQkJ c3RydWN0IGlndF92ZWM0IHJnYjsKKwkJCXN0cnVjdCBpZ3RfdmVjNCB5dXY7CisJCQl1aW50OF90 IGEgPSAwOworCQkJdWludDE2X3QgeSwgY2IsIGNyOworCisJCQlyZWFkX3JnYmYoJnJnYiwgJnB0 cltqICogYnBwXSk7CisJCQlpZiAoYWxwaGEpCisJCQkJIGEgPSBwdHJbaiAqIGJwcCArIDNdICog My5mICsgLjVmOworCisJCQl5dXYgPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwgJnJnYik7CisJ CQl5ID0geXV2LmRbMF07CisJCQljYiA9IHl1di5kWzFdOworCQkJY3IgPSB5dXYuZFsyXTsKKwor CQkJdXl2W2pdID0gKChjYiAmIDB4M2ZmKSA8PCAwKSB8CisJCQkJICAoKHkgJiAweDNmZikgPDwg MTApIHwKKwkJCQkgICgoY3IgJiAweDNmZikgPDwgMjApIHwKKwkJCQkgIChhIDw8IDMwKTsKKwkJ fQorCisJCXB0ciArPSBmbG9hdF9zdHJpZGU7CisJCXV5diArPSB1eXZfc3RyaWRlOworCX0KK30K Kwogc3RhdGljIHZvaWQgY29udmVydF9waXhtYW4oc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKIHsK IAlwaXhtYW5fZm9ybWF0X2NvZGVfdCBzcmNfcGl4bWFuID0gZHJtX2Zvcm1hdF90b19waXhtYW4o Y3Z0LT5zcmMuZmItPmRybV9mb3JtYXQpOwpAQCAtMjQ2OSw3ICsyNjQ2LDE5IEBAIHN0YXRpYyB2 b2lkIGZiX2NvbnZlcnQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKIAkJY2FzZSBEUk1fRk9STUFU X1kyMTA6CiAJCWNhc2UgRFJNX0ZPUk1BVF9ZMjEyOgogCQljYXNlIERSTV9GT1JNQVRfWTIxNjoK LQkJCWNvbnZlcnRfeXV2MTZfdG9fZmxvYXQoY3Z0KTsKKwkJY2FzZSBEUk1fRk9STUFUX1hWWVUx Ml8xNjE2MTYxNjoKKwkJY2FzZSBEUk1fRk9STUFUX1hWWVUxNjE2MTYxNjoKKwkJCWNvbnZlcnRf eXV2MTZfdG9fZmxvYXQoY3Z0LCBmYWxzZSk7CisJCQlyZXR1cm47CisJCWNhc2UgRFJNX0ZPUk1B VF9ZNDEwOgorCQkJY29udmVydF9ZNDEwX3RvX2Zsb2F0KGN2dCwgdHJ1ZSk7CisJCQlyZXR1cm47 CisJCWNhc2UgRFJNX0ZPUk1BVF9YVllVMjEwMTAxMDoKKwkJCWNvbnZlcnRfWTQxMF90b19mbG9h dChjdnQsIGZhbHNlKTsKKwkJCXJldHVybjsKKwkJY2FzZSBEUk1fRk9STUFUX1k0MTI6CisJCWNh c2UgRFJNX0ZPUk1BVF9ZNDE2OgorCQkJY29udmVydF95dXYxNl90b19mbG9hdChjdnQsIHRydWUp OwogCQkJcmV0dXJuOwogCQl9CiAJfSBlbHNlIGlmIChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCA9 PSBJR1RfRk9STUFUX0ZMT0FUKSB7CkBAIC0yNDgwLDcgKzI2NjksMTkgQEAgc3RhdGljIHZvaWQg ZmJfY29udmVydChzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogCQljYXNlIERSTV9GT1JNQVRfWTIx MDoKIAkJY2FzZSBEUk1fRk9STUFUX1kyMTI6CiAJCWNhc2UgRFJNX0ZPUk1BVF9ZMjE2OgotCQkJ Y29udmVydF9mbG9hdF90b195dXYxNihjdnQpOworCQljYXNlIERSTV9GT1JNQVRfWFZZVTEyXzE2 MTYxNjE2OgorCQljYXNlIERSTV9GT1JNQVRfWFZZVTE2MTYxNjE2OgorCQkJY29udmVydF9mbG9h dF90b195dXYxNihjdnQsIGZhbHNlKTsKKwkJCXJldHVybjsKKwkJY2FzZSBEUk1fRk9STUFUX1k0 MTA6CisJCQljb252ZXJ0X2Zsb2F0X3RvX1k0MTAoY3Z0LCB0cnVlKTsKKwkJCXJldHVybjsKKwkJ Y2FzZSBEUk1fRk9STUFUX1hWWVUyMTAxMDEwOgorCQkJY29udmVydF9mbG9hdF90b19ZNDEwKGN2 dCwgZmFsc2UpOworCQkJcmV0dXJuOworCQljYXNlIERSTV9GT1JNQVRfWTQxMjoKKwkJY2FzZSBE Uk1fRk9STUFUX1k0MTY6CisJCQljb252ZXJ0X2Zsb2F0X3RvX3l1djE2KGN2dCwgdHJ1ZSk7CiAJ CQlyZXR1cm47CiAJCX0KIAl9CkBAIC0yOTQ3LDYgKzMxNDgsMTIgQEAgYm9vbCBpZ3RfZm9ybWF0 X2lzX3l1dih1aW50MzJfdCBkcm1fZm9ybWF0KQogCWNhc2UgRFJNX0ZPUk1BVF9ZMjEwOgogCWNh c2UgRFJNX0ZPUk1BVF9ZMjEyOgogCWNhc2UgRFJNX0ZPUk1BVF9ZMjE2OgorCWNhc2UgRFJNX0ZP Uk1BVF9YVllVMjEwMTAxMDoKKwljYXNlIERSTV9GT1JNQVRfWFZZVTEyXzE2MTYxNjE2OgorCWNh c2UgRFJNX0ZPUk1BVF9YVllVMTYxNjE2MTY6CisJY2FzZSBEUk1fRk9STUFUX1k0MTA6CisJY2Fz ZSBEUk1fRk9STUFUX1k0MTI6CisJY2FzZSBEUk1fRk9STUFUX1k0MTY6CiAJY2FzZSBEUk1fRk9S TUFUX1lVWVY6CiAJY2FzZSBEUk1fRk9STUFUX1lWWVU6CiAJY2FzZSBEUk1fRk9STUFUX1VZVlk6 Ci0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==