From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id EF5208923C for ; Mon, 8 Apr 2019 13:41:04 +0000 (UTC) From: Stanislav Lisovskiy Date: Mon, 8 Apr 2019 16:40:56 +0300 Message-Id: <20190408134056.29062-1-stanislav.lisovskiy@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v7] igt/tests: kms_plane_stress: Add plane stress test List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: stanislav.lisovskiy@intel.com, ville.syrjala@intel.com, martin.peres@intel.com List-ID: VGhpcyB0ZXN0IGF0dGVtcHRzIHRvIHV0aWxpemUgYWxsIGNvbm5lY3RlZApvdXRwdXRzIGF0IHRo ZSBzYW1lIHRpbWUsIHVzaW5nIG1heGltdW0gcG9zc2libGUKcmVzb2x1dGlvbiBhbmQgYW1vdW50 IG9mIHBsYW5lcywgdG8gY2hlY2sgd2hldGhlcgp3ZSBhcmUgaGl0aW5nIGFueSBraW5kIG9mIGJh bmR3aWR0aCwgd2F0ZXJtYXJrIG9yCm90aGVyIGxpbWl0YXRpb25zLgoKdjI6IEFkZGVkIGNwdSBh bmQgZ3B1IGxvYWQgdGhyZWFkcywgd2hpY2ggY29uc3VtZQogICAgYWRkaXRpb25hbCBiYW5kd2lk dGguCgp2MzogUmVtb3ZlZCBiaW5hcnkgcGljdHVyZSBmaWxlLCB1c2luZyBwYXR0ZXJuIGZiCiAg ICBpbnN0ZWFkLgoKdjQ6IE1vdmVkIEZCIGNyZWF0aW9uL3JlbW92YWwgdG8gYmV0dGVyIHBsYWNl LgoKdjU6IEZpeGVkIHJlYmFzZSBjb25mbGljdCBhbmQgY2hhbmdlZCAiZmItPnRpbGluZyIKICAg IHRvICJmYi0+bW9kaWZpZXIiLgoKdjY6IFJlbW92ZWQgdW5uZWNlc3NhcnkgbmV3IG1hY3JvIGZv ciBpdGVyYXRpbmcgb24KICAgIHBpcGVzLiBUYWtlbiBpbnRvIHVzZSBpZ3RfZ2V0dGltZSBpbnN0 ZWFkIG9mCiAgICBjbG9ja19nZXR0aW1lLgoKdjc6IFB1dCBmYiByZWluaXQgaW50byBpZ3RfZml4 dHVyZSB0byBhdm9pZCBwcm9ibGVtcy4KICAgIE1vdmUgc3RyZXNzIGZ1bmN0aW9uIHVuZGVyIGln dF9zdWJ0ZXN0LiBSZWxlYXNlIHBsYW5lcywKICAgIHJlbW92ZSByZWR1bmRhbnQgY29tbWl0LCBh c3NlcnQgaWYgbm8gcGxhbmVzIGNhbiBiZSB1c2VkLgoKU2lnbmVkLW9mZi1ieTogU3RhbmlzbGF2 IExpc292c2tpeSA8c3RhbmlzbGF2Lmxpc292c2tpeUBpbnRlbC5jb20+Ci0tLQogdGVzdHMvTWFr ZWZpbGUuc291cmNlcyAgIHwgICAxICsKIHRlc3RzL2ttc19wbGFuZV9zdHJlc3MuYyB8IDU2OCAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3RzL21lc29uLmJ1aWxk ICAgICAgICB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDU3MCBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX3BsYW5lX3N0cmVzcy5jCgpkaWZmIC0tZ2l0IGEvdGVz dHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKaW5kZXggNzFjY2Yw MGEuLjlkMDRkODg4IDEwMDY0NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL3Rl c3RzL01ha2VmaWxlLnNvdXJjZXMKQEAgLTU5LDYgKzU5LDcgQEAgVEVTVFNfcHJvZ3MgPSBcCiAJ a21zX3BsYW5lX2xvd3JlcyBcCiAJa21zX3BsYW5lX211bHRpcGxlIFwKIAlrbXNfcGxhbmVfc2Nh bGluZyBcCisJa21zX3BsYW5lX3N0cmVzcyBcCiAJa21zX3Byb3BfYmxvYiBcCiAJa21zX3Byb3Bl cnRpZXMgXAogCWttc19wc3IgXApkaWZmIC0tZ2l0IGEvdGVzdHMva21zX3BsYW5lX3N0cmVzcy5j IGIvdGVzdHMva21zX3BsYW5lX3N0cmVzcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwLi5lYTFmODExYwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2ttc19wbGFuZV9zdHJl c3MuYwpAQCAtMCwwICsxLDU2OCBAQAorIC8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBD b3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAor ICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUK KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ TkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQg SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4K KyAqLworCisjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSAiaWd0X3JhbmQuaCIKKyNpbmNsdWRl ICJkcm10ZXN0LmgiCisjaW5jbHVkZSAic3dfc3luYy5oIgorI2luY2x1ZGUgPGVycm5vLmg+Cisj aW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNpbmNsdWRlIDxzdGRp by5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxw b2xsLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorCisjaWZuZGVmIERSTV9DQVBfQ1VSU09SX1dJ RFRICisjZGVmaW5lIERSTV9DQVBfQ1VSU09SX1dJRFRIIDB4OAorI2VuZGlmCisjaWZuZGVmIERS TV9DQVBfQ1VSU09SX0hFSUdIVAorI2RlZmluZSBEUk1fQ0FQX0NVUlNPUl9IRUlHSFQgMHg5Cisj ZW5kaWYKKworCitkcm1Nb2RlTW9kZUluZm8gdWhkX21vZGVfNjBoeiA9IHsKKwkubmFtZSA9ICIz ODQweDIxNjBANjBoeiIsCisJLnZyZWZyZXNoID0gNjAsCisJLmNsb2NrID0gMTQyNjY3KjIsCisJ LmhkaXNwbGF5ID0gMzg0MCwKKwkuaHN5bmNfc3RhcnQgPSAxOTM2KjIsCisJLmhzeW5jX2VuZCA9 IDE5NTIqMiwKKwkuaHRvdGFsID0gMjEwNCoyLAorCS52ZGlzcGxheSA9IDIxNjAsCisJLnZzeW5j X3N0YXJ0ID0gMTA4MyoyLAorCS52c3luY19lbmQgPSAxMDk3KjIsCisJLnZ0b3RhbCA9IDExMjgq MiwKKwkuZmxhZ3MgPSAweGEsCit9OworCisjZGVmaW5lIE5fRk9STUFUUyAzCitzdGF0aWMgY29u c3QgdWludDMyX3QgZm9ybWF0c1tOX0ZPUk1BVFNdID0geworCURSTV9GT1JNQVRfWFJHQjg4ODgs CisJRFJNX0ZPUk1BVF9SR0I1NjUsCisJRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMCwKK307CisKKyNk ZWZpbmUgTl9USUxJTkdfTUVUSE9EUyAzCitzdGF0aWMgY29uc3QgdWludDY0X3QgdGlsaW5nc1tO X1RJTElOR19NRVRIT0RTXSA9IHsKKwlEUk1fRk9STUFUX01PRF9MSU5FQVIsCisJSTkxNV9GT1JN QVRfTU9EX1hfVElMRUQsCisJSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQsCit9OworCitzdGF0aWMg Y29uc3QgY2hhciAqZm9ybWF0X3N0cihpbnQgZm9ybWF0X2luZGV4KQoreworCXN3aXRjaCAoZm9y bWF0c1tmb3JtYXRfaW5kZXhdKSB7CisJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKKwkJcmV0dXJu ICJyZ2I1NjUiOworCWNhc2UgRFJNX0ZPUk1BVF9YUkdCODg4ODoKKwkJcmV0dXJuICJ4cmdiODg4 OCI7CisJY2FzZSBEUk1fRk9STUFUX1hSR0IyMTAxMDEwOgorCQlyZXR1cm4gInhyZ2IyMTAxMDEw IjsKKwlkZWZhdWx0OgorCQlpZ3RfYXNzZXJ0KGZhbHNlKTsKKwl9Cit9CisKK3N0YXRpYyBjb25z dCBjaGFyICp0aWxpbmdfc3RyKGludCB0aWxpbmdfaW5kZXgpCit7CisJc3dpdGNoICh0aWxpbmdz W3RpbGluZ19pbmRleF0pIHsKKwljYXNlIERSTV9GT1JNQVRfTU9EX0xJTkVBUjoKKwkJcmV0dXJu ICJ1bnRpbGVkIjsKKwljYXNlIEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOgorCQlyZXR1cm4gInh0 aWxlZCI7CisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDoKKwkJcmV0dXJuICJ5dGlsZWQi OworCWRlZmF1bHQ6CisJCWlndF9hc3NlcnQoZmFsc2UpOworCX0KK30KKworCisjZGVmaW5lIE1B WF9DT1JFUyA4CisKK3N0cnVjdCBkYXRhOworCitzdHJ1Y3QgdGhyZWFkX2NvbnRleHQgeworCXN0 cnVjdCBkYXRhICpkYXRhOworCWludCBpZDsKKwl2b2lkICpidWYxOworCXZvaWQgKmJ1ZjI7Cit9 OworCitzdHJ1Y3QgZ3B1X2NvbnRleHQgeworCXN0cnVjdCBkYXRhICpkYXRhOworCWludCBwaXBl OworCWludCBjb2xvcjsKK307CisKK3N0cnVjdCBkYXRhIHsKKwlpbnQgZHJtX2ZkOworCWlndF9k aXNwbGF5X3QgZGlzcGxheTsKKwlpbnQgbnVtX3BsYW5lczsKKwl1aW50MzJfdCBmb3JtYXQ7CisJ dWludDY0X3QgbW9kaWZpZXI7CisJdWludDMyX3QgZGV2aWQ7CisJZHJtX2ludGVsX2J1Zm1nciAq YnVmbWdyOworCXN0cnVjdCBpZ3RfZmIgZmJbSUdUX01BWF9QSVBFU107CisJc3RydWN0IGlndF9m YiBjdXJzb3JfZmJbSUdUX01BWF9QSVBFU107CisJcHRocmVhZF90IGNwdV90aHJlYWRbTUFYX0NP UkVTXTsKKwlib29sIGNwdV90aHJlYWRfc3RvcFtNQVhfQ09SRVNdOworCXN0cnVjdCB0aHJlYWRf Y29udGV4dCBjcHVfY29udGV4dFtNQVhfQ09SRVNdOworCXN0cnVjdCBncHVfY29udGV4dCBncHVf Y29udGV4dFtJR1RfTUFYX1BJUEVTXTsKK307CisKKworc3RydWN0IGJhc2VfY3JjIHsKKwlib29s IHNldDsKKwlpZ3RfY3JjX3QgY3JjOworfTsKKworaWd0X3BpcGVfY3JjX3QgKnBpcGVfY3JjOwor CisjZGVmaW5lIEJVRl9TSVpFIDEyOCoxMDI0KjEwMjQKKworc3RhdGljIHZvaWQgKmNwdV9sb2Fk KHZvaWQgKmQpCit7CisJY2hhciAqYnVmMSwgKmJ1ZjI7CisJc3RydWN0IHRocmVhZF9jb250ZXh0 ICpjb250ZXh0ID0gKHN0cnVjdCB0aHJlYWRfY29udGV4dCAqKWQ7CisJc3RydWN0IGRhdGEgKmRh dGEgPSBjb250ZXh0LT5kYXRhOworCisJYnVmMSA9IGNvbnRleHQtPmJ1ZjE7CisJYnVmMiA9IGNv bnRleHQtPmJ1ZjI7CisKKwlkYXRhLT5jcHVfdGhyZWFkX3N0b3BbY29udGV4dC0+aWRdID0gZmFs c2U7CisKKwl3aGlsZSghZGF0YS0+Y3B1X3RocmVhZF9zdG9wW2NvbnRleHQtPmlkXSkgeworCQlt ZW1jcHkoYnVmMSwgYnVmMiwgQlVGX1NJWkUpOworCQltZW1jcHkoYnVmMiwgYnVmMSwgQlVGX1NJ WkUpOworCX0KKworCXJldHVybiBOVUxMOworfQorCisKK3N0YXRpYyB2b2lkIHNjcmF0Y2hfYnVm X2luaXQoc3RydWN0IGlndF9idWYgKmJ1ZiwKKwkJCWRybV9pbnRlbF9ibyAqYm8sIGludCB3aWR0 aCwgaW50IGhlaWdodCwgaW50IHN0cmlkZSwgaW50IHRpbGluZykKK3sKKwlidWYtPmJvID0gYm87 CisJYnVmLT5zdHJpZGUgPSBzdHJpZGU7CisJYnVmLT50aWxpbmcgPSB0aWxpbmc7CisJYnVmLT5z aXplID0gd2lkdGggKiBoZWlnaHQgKiA0OworCWJ1Zi0+YnBwID0gMzI7Cit9CisKKworc3RhdGlj IHZvaWQgZ3B1X2xvYWQoc3RydWN0IGdwdV9jb250ZXh0ICpncHVfY29udGV4dCkKK3sKKwlzdHJ1 Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoID0gTlVMTDsKKwlzdHJ1Y3QgaWd0X2J1ZiBkc3Q7 CisJc3RydWN0IGRhdGEgKmRhdGEgPSBncHVfY29udGV4dC0+ZGF0YTsKKwlpbnQgcGlwZSA9IGdw dV9jb250ZXh0LT5waXBlOworCWlndF9maWxsZnVuY190IGdwZ3B1X2ZpbGwgPSBOVUxMOworCWRy bV9pbnRlbF9ibyAqYm87CisJc3RydWN0IGlndF9mYiAqZmIgPSAmZGF0YS0+ZmJbcGlwZV07CisK KwlpZiAoIWRhdGEtPmRldmlkKSB7CisJCWRhdGEtPmRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZp ZChkYXRhLT5kcm1fZmQpOworCQlpZ3RfcmVxdWlyZV9nZW0oZGF0YS0+ZHJtX2ZkKTsKKworCQlk YXRhLT5idWZtZ3IgPSBkcm1faW50ZWxfYnVmbWdyX2dlbV9pbml0KGRhdGEtPmRybV9mZCwgNDA5 Nik7CisJCWlndF9hc3NlcnQoZGF0YS0+YnVmbWdyKTsKKwl9CisKKwlncGdwdV9maWxsID0gaWd0 X2dldF9ncGdwdV9maWxsZnVuYyhkYXRhLT5kZXZpZCk7CisKKwlpZ3RfcmVxdWlyZV9mKGdwZ3B1 X2ZpbGwsCisJICAgICAgIm5vIGdwZ3B1LWZpbGwgZnVuY3Rpb25cbiIpOworCisJYmF0Y2ggPSBp bnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhkYXRhLT5idWZtZ3IsIGRhdGEtPmRldmlkKTsKKwlpZ3Rf YXNzZXJ0KGJhdGNoKTsKKworCWJvID0gZ2VtX2hhbmRsZV90b19saWJkcm1fYm8oZGF0YS0+YnVm bWdyLCBkYXRhLT5kcm1fZmQsICIiLCBmYi0+Z2VtX2hhbmRsZSk7CisKKwlzY3JhdGNoX2J1Zl9p bml0KCZkc3QsIGJvLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsIGZiLT5zdHJpZGVzWzBdLCBmYi0+ bW9kaWZpZXIpOworCisJZ3BncHVfZmlsbChiYXRjaCwKKwkgICAmZHN0LCAwLCAwLCAoZmItPndp ZHRoICogNCksIGZiLT5oZWlnaHQsCisJICAgZ3B1X2NvbnRleHQtPmNvbG9yKTsKKworCWdwdV9j b250ZXh0LT5jb2xvciArPSAweDEwOworCisJaW50ZWxfYmF0Y2hidWZmZXJfZnJlZShiYXRjaCk7 Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgcGlwZV9zZWxlY3QoZW51bSBwaXBlIHBpcGUp Cit7CisJaWYgKHBpcGUgPiAxKQorCQlyZXR1cm4gcGlwZSA8PCBEUk1fVkJMQU5LX0hJR0hfQ1JU Q19TSElGVDsKKwllbHNlIGlmIChwaXBlID4gMCkKKwkJcmV0dXJuIERSTV9WQkxBTktfU0VDT05E QVJZOworCWVsc2UKKwkJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBnZXRfdmJsYW5r KGludCBmZCwgZW51bSBwaXBlIHBpcGUsIHVuc2lnbmVkIGZsYWdzKQoreworCXVuaW9uIGRybV93 YWl0X3ZibGFuayB2Ymw7CisKKwltZW1zZXQoJnZibCwgMCwgc2l6ZW9mKHZibCkpOworCXZibC5y ZXF1ZXN0LnR5cGUgPSBEUk1fVkJMQU5LX1JFTEFUSVZFIHwgcGlwZV9zZWxlY3QocGlwZSkgfCBm bGFnczsKKwlpZiAoZHJtSW9jdGwoZmQsIERSTV9JT0NUTF9XQUlUX1ZCTEFOSywgJnZibCkpCisJ CXJldHVybiAwOworCisJcmV0dXJuIHZibC5yZXBseS5zZXF1ZW5jZTsKK30KKworCitzdGF0aWMg aW50IHBsYW5lX3N0cmVzcyhzdHJ1Y3QgZGF0YSAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQs IGVudW0gcGlwZSBwaXBlLCBkcm1Nb2RlTW9kZUluZm8gKm1vZGUsIGJvb2wgZ3B1KQoreworCWln dF9wbGFuZV90ICpwbGFuZTsKKwl1aW50NjRfdCBjdXJzb3Jfd2lkdGgsIGN1cnNvcl9oZWlnaHQ7 CisJaW50IGk7CisJaW50IHJldDsKKwlpZ3RfY3JjX3QJY3JjLCBjcmMyOworCisJaWd0X291dHB1 dF9vdmVycmlkZV9tb2RlKG91dHB1dCwgbW9kZSk7CisKKwlpZ3Rfb3V0cHV0X3NldF9waXBlKG91 dHB1dCwgcGlwZSk7CisKKwlyZXQgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0X2F0b21pYygmZGF0 YS0+ZGlzcGxheSwKKwkJCURSTV9NT0RFX0FUT01JQ19URVNUX09OTFkgfCBEUk1fTU9ERV9BVE9N SUNfQUxMT1dfTU9ERVNFVCwgTlVMTCk7CisJaWYgKHJldCkgeworCQlpZ3Rfd2FybigiQ291bGQg bm90IGNvbW1pdCBtb2RlOiBcbiIpOworCQlrbXN0ZXN0X2R1bXBfbW9kZShtb2RlKTsKKwkJZ290 byBjbGVhbnVwOworCX0KKworCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksIENP TU1JVF9BVE9NSUMpOworCisJbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKKwor CWRvX29yX2RpZShkcm1HZXRDYXAoZGF0YS0+ZHJtX2ZkLCBEUk1fQ0FQX0NVUlNPUl9XSURUSCwg JmN1cnNvcl93aWR0aCkpOworCWRvX29yX2RpZShkcm1HZXRDYXAoZGF0YS0+ZHJtX2ZkLCBEUk1f Q0FQX0NVUlNPUl9IRUlHSFQsICZjdXJzb3JfaGVpZ2h0KSk7CisKKwlpZiAoIWRhdGEtPmN1cnNv cl9mYltwaXBlXS5mYl9pZCkgeworCQlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmRybV9mZCwg Y3Vyc29yX3dpZHRoLCBjdXJzb3JfaGVpZ2h0LAorCQkJCURSTV9GT1JNQVRfQVJHQjg4ODgsCisJ CQkJTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKKwkJCQkJMS4wLDAuMCwwLjAsCisJCQkJCSZk YXRhLT5jdXJzb3JfZmJbcGlwZV0pOworCX0KKworCWlmICghZGF0YS0+ZmJbcGlwZV0uZmJfaWQp IHsKKwkJaWd0X2NyZWF0ZV9jb2xvcl9wYXR0ZXJuX2ZiKGRhdGEtPmRybV9mZCwgbW9kZS0+aGRp c3BsYXksIG1vZGUtPnZkaXNwbGF5LAorCQkJCSAgICBkYXRhLT5mb3JtYXQsCisJCQkJICAgIGRh dGEtPm1vZGlmaWVyLAorCQkJCSAgICAwLjAsIDEuMCwgMC4wLCAmZGF0YS0+ZmJbcGlwZV0pOwor CX0KKworCWkgPSAwOworCisJZm9yX2VhY2hfcGxhbmVfb25fcGlwZSgmZGF0YS0+ZGlzcGxheSwg cGlwZSwgcGxhbmUpIHsKKwkJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNP UikgeworCQkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEtPmN1cnNvcl9mYltwaXBlXSk7 CisJCQlpZ3RfZmJfc2V0X3NpemUoJmRhdGEtPmN1cnNvcl9mYltwaXBlXSwgcGxhbmUsIGN1cnNv cl93aWR0aCwgY3Vyc29yX2hlaWdodCk7CisJCQlpZ3RfcGxhbmVfc2V0X3NpemUocGxhbmUsIGN1 cnNvcl93aWR0aCwgY3Vyc29yX2hlaWdodCk7CisJCX0gZWxzZSB7CisJCQlpZ3RfcGxhbmVfc2V0 X2ZiKHBsYW5lLCAmZGF0YS0+ZmJbcGlwZV0pOworCQkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihw bGFuZSwgMCwgMCk7CisJCQlpZ3RfZmJfc2V0X3NpemUoJmRhdGEtPmZiW3BpcGVdLCBwbGFuZSwg bW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5KTsKKwkJCWlndF9wbGFuZV9zZXRfc2l6ZShw bGFuZSwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5KTsKKwkJfQorCisJCXJldCA9IGln dF9kaXNwbGF5X3RyeV9jb21taXRfYXRvbWljKCZkYXRhLT5kaXNwbGF5LCBEUk1fTU9ERV9BVE9N SUNfVEVTVF9PTkxZIHwgRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQsIE5VTEwpOworCQlp ZiAocmV0KSB7CisJCQlpZ3RfaW5mbygiUGxhbmUgJWQgcGlwZSAlZCB0cnkgY29tbWl0IGZhaWxl ZCwgZXhpdGluZ1xuIiwgaSwgcGlwZSk7CisJCQlpZ3RfYXNzZXJ0X2YoaSA+IDAsICJXZSBzaG91 bGQgYmUgYWJsZSB0byBjb21taXQgYXQgbGVhc3QgMSBwbGFuZSEiKTsKKwkJCWRhdGEtPm51bV9w bGFuZXMgPSBpOworCQkJLyoKKwkJCSAqIFdlIGhhdmUgZGV0ZXJtaW5lZCBtYXggYW1vdW50IG9m IHBsYW5lcywgd2Ugd2lsbCBqdXN0CisJCQkgKiBrZWVwIGl0IGluIG1pbmQgYW5kIGJlIHNtYXJ0 ZXIgbmV4dCB0aW1lLgorCQkJICovCisJCQlyZXQgPSAwOworCQkJZ290byBjbGVhbnVwOworCQl9 CisKKwkJaWYgKCsraSA+PSBkYXRhLT5udW1fcGxhbmVzKQorCQkJYnJlYWs7CisJfQorCisJaWYg KGdwdSkgeworCQlncHVfbG9hZCgmZGF0YS0+Z3B1X2NvbnRleHRbcGlwZV0pOworCX0KKworCWln dF9kaXNwbGF5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksIENPTU1JVF9BVE9NSUMpOworCisJZ2V0 X3ZibGFuayhkYXRhLT5kaXNwbGF5LmRybV9mZCwgcGlwZSwgRFJNX1ZCTEFOS19ORVhUT05NSVNT KTsKKworCWlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhwaXBlX2NyYywgJmNyYyk7CisKKwlnZXRf dmJsYW5rKGRhdGEtPmRpc3BsYXkuZHJtX2ZkLCBwaXBlLCBEUk1fVkJMQU5LX05FWFRPTk1JU1Mp OworCisJaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKHBpcGVfY3JjLCAmY3JjMik7CisJaWd0X2Fz c2VydF9jcmNfZXF1YWwoJmNyYywgJmNyYzIpOworCisJcmV0dXJuIDA7CisKK2NsZWFudXA6CisJ Zm9yX2VhY2hfcGxhbmVfb25fcGlwZSgmZGF0YS0+ZGlzcGxheSwgcGlwZSwgcGxhbmUpCisJCWln dF9wbGFuZV9zZXRfZmIocGxhbmUsIE5VTEwpOworCisJcmV0dXJuIHJldDsKK30KKworI2RlZmlu ZSBEVVJBVElPTl9TRUMgNS4wMAorCitzdGF0aWMgZHJtTW9kZU1vZGVJbmZvICogZmluZF9oaWdo ZXN0X21vZGUoZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yKQoreworCWRybU1vZGVNb2RlSW5m byAqaGlnaGVzdF9tb2RlID0gTlVMTDsKKwlpbnQgajsKKworCWZvciAoaiA9IDA7IGogPCBjb25u ZWN0b3ItPmNvdW50X21vZGVzOyBqKyspIHsKKwkJaWYgKCFoaWdoZXN0X21vZGUpIHsKKwkJCWhp Z2hlc3RfbW9kZSA9ICZjb25uZWN0b3ItPm1vZGVzW2pdOworCQl9CisJCWVsc2UgaWYgKGNvbm5l Y3Rvci0+bW9kZXNbal0udmRpc3BsYXkgJiYgY29ubmVjdG9yLT5tb2Rlc1tqXS5oZGlzcGxheSkg eworCQkJaWYgKGhpZ2hlc3RfbW9kZS0+aGRpc3BsYXkgPCBjb25uZWN0b3ItPm1vZGVzW2pdLmhk aXNwbGF5KQorCQkJCWhpZ2hlc3RfbW9kZSA9ICZjb25uZWN0b3ItPm1vZGVzW2pdOworCQkJfQor CX0KKworCXJldHVybiBoaWdoZXN0X21vZGU7Cit9CisKK3N0YXRpYyB2b2lkIHN0cmVzcyhzdHJ1 Y3QgZGF0YSAqZGF0YSwgYm9vbCBvdmVycmlkZSwgYm9vbCBncHUsIGludCBmb3JtYXRfaWR4LCBp bnQgdGlsaW5nX2lkeCkKK3sKKwlzdHJ1Y3QgdGltZXNwZWMgc3RhcnQsIGVuZDsKKwlpZ3Rfb3V0 cHV0X3QgKm91dHB1dDsKKwlpbnQgcmV0O2ludCBjcnRjX2lkID0gMDsKKwlpbnQgaTsKKwlpbnQg cGlwZTsKKwlib29sIGZpcnN0X2l0ZXJhdGlvbiA9IHRydWU7CisJZHJtTW9kZU1vZGVJbmZvICpo aWdoZXN0X21vZGUgPSBOVUxMOworCisJZHJtTW9kZVJlcyAqbW9kZV9yZXNvdXJjZXMgPSBkcm1N b2RlR2V0UmVzb3VyY2VzKGRhdGEtPmRybV9mZCk7CisKKwlpZiAoIW1vZGVfcmVzb3VyY2VzKSB7 CisJCWlndF93YXJuKCJkcm1Nb2RlR2V0UmVzb3VyY2VzIGZhaWxlZDogJXNcbiIsIHN0cmVycm9y KGVycm5vKSk7CisJCXJldHVybjsKKwl9CisKKwlpZ3RfZ2V0dGltZSgmc3RhcnQpOworCisJZG8g eworCQkvKgorCQkgKiBJbmNyZW1lbnQgcGlwZSBvbmx5IGZvciBjb25uZWN0ZWQgb3V0cHV0cywK KwkJICogZm9yIGVhY2ggY29ubmVjdGVkIG91dHB1dCB3ZSBzaG91bGQgYXNzaWduIGEKKwkJICog ZGlmZmVyZW50IHBpcGUuCisJCSAqLworCQlwaXBlID0gMDsKKwkJZm9yX2VhY2hfY29ubmVjdGVk X291dHB1dCgmZGF0YS0+ZGlzcGxheSwgb3V0cHV0KSB7CisJCQljcnRjX2lkID0gMDsKKwkJCWZv ciAoaSA9IDA7IGkgPCBtb2RlX3Jlc291cmNlcy0+Y291bnRfY29ubmVjdG9yczsgaSsrKSB7CisJ CQkJZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yOworCisJCQkJY29ubmVjdG9yID0gZHJtTW9k ZUdldENvbm5lY3RvckN1cnJlbnQoZGF0YS0+ZHJtX2ZkLAorCQkJCQkJCSAgICAgICBtb2RlX3Jl c291cmNlcy0+Y29ubmVjdG9yc1tpXSk7CisJCQkJaWYgKCFjb25uZWN0b3IpIHsKKwkJCQkJaWd0 X3dhcm4oImNvdWxkIG5vdCBnZXQgY29ubmVjdG9yICVpOiAlc1xuIiwKKwkJCQkJCW1vZGVfcmVz b3VyY2VzLT5jb25uZWN0b3JzW2ldLCBzdHJlcnJvcihlcnJubykpOworCQkJCQljb250aW51ZTsK KwkJCQl9CisKKwkJCQlpZiAoIWNvbm5lY3Rvci0+Y291bnRfbW9kZXMpIHsKKwkJCQkJZHJtTW9k ZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsKKwkJCQkJY29udGludWU7CisJCQkJfQorCisJCQkJ aWYgKGNvbm5lY3Rvci0+Y29ubmVjdGlvbiA9PSBEUk1fTU9ERV9DT05ORUNURUQpIHsKKwkJCQkJ aWYgKGNydGNfaWQgPT0gcGlwZSkgeworCQkJCQkJaWYgKCFvdmVycmlkZSkgeworCQkJCQkJCWhp Z2hlc3RfbW9kZSA9IGZpbmRfaGlnaGVzdF9tb2RlKGNvbm5lY3Rvcik7CisJCQkJCQl9CisJCQkJ CQllbHNlCisJCQkJCQkJaGlnaGVzdF9tb2RlID0gJnVoZF9tb2RlXzYwaHo7CisKKwkJCQkJCWRh dGEtPmZvcm1hdCA9IGZvcm1hdHNbZm9ybWF0X2lkeF07CisJCQkJCQlkYXRhLT5tb2RpZmllciA9 IHRpbGluZ3NbdGlsaW5nX2lkeF07CisKKwkJCQkJCS8qCisJCQkJCQkgKiBVbnRpbCB3ZSBmaWd1 cmUgb3V0IG1heGltdW0gYW1vdW50IG9mIHBsYW5lcywKKwkJCQkJCSAqIHVzZSB0aGUgb25lIGRl Y2xhcmVkIGJ5IGtlcm5lbC4KKwkJCQkJCSAqLworCQkJCQkJaWYgKGZpcnN0X2l0ZXJhdGlvbiA9 PSB0cnVlKSB7CisJCQkJCQkJZGF0YS0+bnVtX3BsYW5lcyA9IGRhdGEtPmRpc3BsYXkucGlwZXNb cGlwZV0ubl9wbGFuZXM7CisJCQkJCQkJZmlyc3RfaXRlcmF0aW9uID0gZmFsc2U7CisJCQkJCQl9 CisKKwkJCQkJCWlndF9pbmZvKCJQaXBlICVzICVkIHBsYW5lcywgdXNpbmcgbW9kZToiLCBrbXN0 ZXN0X3BpcGVfbmFtZShwaXBlKSwKKwkJCQkJCQkJZGF0YS0+bnVtX3BsYW5lcyk7CisKKwkJCQkJ CWttc3Rlc3RfZHVtcF9tb2RlKGhpZ2hlc3RfbW9kZSk7CisKKwkJCQkJCXBpcGVfY3JjID0gaWd0 X3BpcGVfY3JjX25ldyhkYXRhLT5kcm1fZmQsIHBpcGUsCisJCQkJCQkJSU5URUxfUElQRV9DUkNf U09VUkNFX0FVVE8pOworCisJCQkJCQlyZXQgPSBwbGFuZV9zdHJlc3MoZGF0YSwgb3V0cHV0LCBw aXBlLCBoaWdoZXN0X21vZGUsIGdwdSk7CisKKwkJCQkJCWlndF9waXBlX2NyY19mcmVlKHBpcGVf Y3JjKTsKKwkJCQkJfQorCQkJCQljcnRjX2lkKys7CisJCQkJfQorCQkJCWRybU1vZGVGcmVlQ29u bmVjdG9yKGNvbm5lY3Rvcik7CisJCQl9CisJCQlpZiAoKCsrcGlwZSkgPT0gSUdUX01BWF9QSVBF UykKKwkJCQlicmVhazsKKwkJfQorCQlpZ3RfZ2V0dGltZSgmZW5kKTsKKwl9IHdoaWxlICgoaWd0 X3RpbWVfZWxhcHNlZCgmc3RhcnQsICZlbmQpIDwgRFVSQVRJT05fU0VDKSAmJiAhcmV0KTsKKwor CWRybU1vZGVGcmVlUmVzb3VyY2VzKG1vZGVfcmVzb3VyY2VzKTsKK30KKworc3RhdGljIHZvaWQg dGVzdChzdHJ1Y3QgZGF0YSAqZGF0YSwgYm9vbCBvdmVycmlkZSwgYm9vbCBjcHUsIGJvb2wgZ3B1 KQoreworCWludCBpOworCWludCBudW1iZXJfb2ZfY29yZXMgPSBtaW4oc3lzY29uZihfU0NfTlBS T0NFU1NPUlNfT05MTiksIE1BWF9DT1JFUyk7CisJaW50IGZvcm1hdF9pZHgsIHRpbGluZ19pZHg7 CisJaWd0X3BsYW5lX3QgKnBsYW5lOworCisJaWd0X2ZpeHR1cmUgeworCQlmb3IgKGkgPSAwOyBp IDwgSUdUX01BWF9QSVBFUzsgaSsrKSB7CisJCQkJZGF0YS0+ZmJbaV0uZmJfaWQgPSAwOworCQkJ CWRhdGEtPmN1cnNvcl9mYltpXS5mYl9pZCA9IDA7CisJCX0KKwkJaWYgKGdwdSkgeworCQkJZm9y IChpID0gMDsgaSA8IElHVF9NQVhfUElQRVM7IGkrKykgeworCQkJCWRhdGEtPmdwdV9jb250ZXh0 W2ldLmRhdGEgPSBkYXRhOworCQkJCWRhdGEtPmdwdV9jb250ZXh0W2ldLnBpcGUgPSBpOworCQkJ fQorCQl9CisKKwkJaWYgKGNwdSkgeworCQkJZm9yIChpID0gMDsgaSA8IG51bWJlcl9vZl9jb3Jl cztpKyspIHsKKwkJCQlkYXRhLT5jcHVfY29udGV4dFtpXS5idWYxID0gbWFsbG9jKEJVRl9TSVpF KTsKKwkJCQlkYXRhLT5jcHVfY29udGV4dFtpXS5idWYyID0gbWFsbG9jKEJVRl9TSVpFKTsKKwkJ CQlkYXRhLT5jcHVfY29udGV4dFtpXS5pZCA9IGk7CisJCQkJZGF0YS0+Y3B1X2NvbnRleHRbaV0u ZGF0YSA9IGRhdGE7CisJCQkJcHRocmVhZF9jcmVhdGUoJmRhdGEtPmNwdV90aHJlYWRbaV0sIE5V TEwsIGNwdV9sb2FkLCAodm9pZCopJmRhdGEtPmNwdV9jb250ZXh0W2ldKTsKKwkJCX0KKwkJfQor CX0KKworCWZvciAoZm9ybWF0X2lkeCA9IDA7IGZvcm1hdF9pZHggPCBOX0ZPUk1BVFM7IGZvcm1h dF9pZHgrKykgeworCQlmb3IgKHRpbGluZ19pZHggPSAwOyB0aWxpbmdfaWR4IDwgTl9USUxJTkdf TUVUSE9EUzsgdGlsaW5nX2lkeCsrKSB7CisJCQlpZ3Rfc3VidGVzdF9mKCJzdHJlc3MlcyVzJXMt JXMtJXMiLAorCQkJCSAgICAgIG92ZXJyaWRlID09IGZhbHNlID8gIiIgOiAiLW1vZGUtb3ZlcnJp ZGUiLAorCQkJCSAgICAgIGNwdSA9PSBmYWxzZSA/ICIiIDogIi1jcHUtbG9hZCIsCisJCQkJICAg ICAgZ3B1ID09IGZhbHNlID8gIiIgOiAiLWdwdS1sb2FkIiwKKwkJCQkgICAgICBmb3JtYXRfc3Ry KGZvcm1hdF9pZHgpLAorCQkJCSAgICAgIHRpbGluZ19zdHIodGlsaW5nX2lkeCkpIHsKKworCQkJ CXN0cmVzcyhkYXRhLCBvdmVycmlkZSwgZ3B1LCBmb3JtYXRfaWR4LCB0aWxpbmdfaWR4KTsKKwor CQkJfQorCisJCQlpZ3RfZml4dHVyZSB7CisJCQkJLyoKKwkJCQkgKiBBcyB3ZSBjaGFuZ2UgdGls aW5nL2Zvcm1hdCB3ZSBuZWVkIGEgbmV3IEZCCisJCQkJICovCisJCQkJZm9yIChpID0gMDsgaSA8 IElHVF9NQVhfUElQRVM7IGkrKykgeworCQkJCQlpZiAoZGF0YS0+ZmJbaV0uZmJfaWQpIHsKKwkJ CQkJCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoJmRhdGEtPmRpc3BsYXksIGksIHBsYW5lKQorCQkJ CQkJCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsIE5VTEwpOworCQkJCQkJaWd0X3JlbW92ZV9mYihk YXRhLT5kaXNwbGF5LmRybV9mZCwgJmRhdGEtPmZiW2ldKTsKKwkJCQkJCWRhdGEtPmZiW2ldLmZi X2lkID0gMDsKKwkJCQkJfQorCQkJCQlpZiAoZGF0YS0+Y3Vyc29yX2ZiW2ldLmZiX2lkKSB7CisJ CQkJCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRpc3BsYXkuZHJtX2ZkLCAmZGF0YS0+Y3Vyc29yX2Zi W2ldKTsKKwkJCQkJCWRhdGEtPmN1cnNvcl9mYltpXS5mYl9pZCA9IDA7CisJCQkJCX0KKwkJCQl9 CisJCQl9CisJCX0KKwl9CisKKwlpZ3RfZml4dHVyZSB7CisJCWlmIChjcHUpIHsKKwkJCWZvciAo aSA9IDA7IGkgPCBudW1iZXJfb2ZfY29yZXM7aSsrKSB7CisJCQkJZGF0YS0+Y3B1X3RocmVhZF9z dG9wW2ldID0gdHJ1ZTsKKwkJCQlwdGhyZWFkX2pvaW4oZGF0YS0+Y3B1X3RocmVhZFtpXSwgTlVM TCk7CisJCQl9CisJCQlmb3IgKGkgPSAwO2kgPCBudW1iZXJfb2ZfY29yZXM7IGkrKykgeworCQkJ CWZyZWUoZGF0YS0+Y3B1X2NvbnRleHRbaV0uYnVmMSk7CisJCQkJZnJlZShkYXRhLT5jcHVfY29u dGV4dFtpXS5idWYyKTsKKwkJCX0KKwkJfQorCX0KK30KKworCitzdHJ1Y3QgZGF0YSBkYXRhID0g eworCS5udW1fcGxhbmVzID0gNywKKwkuZm9ybWF0ID0gRFJNX0ZPUk1BVF9YUkdCODg4OCwKKwku bW9kaWZpZXIgPSBEUk1fRk9STUFUX01PRF9MSU5FQVIsCisJLmRldmlkID0gMCwKK307CisKKwor aWd0X21haW4KK3sKKwlib29sIG1vZGVfb3ZlcnJpZGUgPSBmYWxzZTsKKwlib29sIGNwdV9sb2Fk ID0gZmFsc2U7CisJYm9vbCBncHVfbG9hZCA9IGZhbHNlOworCisJaWd0X2ZpeHR1cmUgeworCQlk YXRhLmRybV9mZCA9IGRhdGEuZGlzcGxheS5kcm1fZmQgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVy KERSSVZFUl9BTlkpOworCisJCWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsKKworCQlp Z3RfZGlzcGxheV9yZXF1aXJlKCZkYXRhLmRpc3BsYXksIGRhdGEuZGlzcGxheS5kcm1fZmQpOwor CQlpZ3RfcmVxdWlyZShkYXRhLmRpc3BsYXkuaXNfYXRvbWljKTsKKwkJaWd0X2Rpc3BsYXlfcmVx dWlyZV9vdXRwdXQoJmRhdGEuZGlzcGxheSk7CisJfQorCisJdGVzdCgmZGF0YSwgbW9kZV9vdmVy cmlkZSwgY3B1X2xvYWQsIGdwdV9sb2FkKTsKKworCWNwdV9sb2FkID0gdHJ1ZTsKKwlncHVfbG9h ZCA9IHRydWU7CisKKwl0ZXN0KCZkYXRhLCBtb2RlX292ZXJyaWRlLCBjcHVfbG9hZCwgZ3B1X2xv YWQpOworCisJbW9kZV9vdmVycmlkZSA9IHRydWU7CisJY3B1X2xvYWQgPSBmYWxzZTsKKwlncHVf bG9hZCA9IGZhbHNlOworCisJdGVzdCgmZGF0YSwgbW9kZV9vdmVycmlkZSwgY3B1X2xvYWQsIGdw dV9sb2FkKTsKKworCWNwdV9sb2FkID0gdHJ1ZTsKKwlncHVfbG9hZCA9IHRydWU7CisKKwl0ZXN0 KCZkYXRhLCBtb2RlX292ZXJyaWRlLCBjcHVfbG9hZCwgZ3B1X2xvYWQpOworCisJaWd0X2ZpeHR1 cmUgeworCQlpZ3RfZGlzcGxheV9maW5pKCZkYXRhLmRpc3BsYXkpOworCX0KK30KXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3Rz L21lc29uLmJ1aWxkCmluZGV4IDkwMTVmODA5Li5jNTg2NjQyYyAxMDA2NDQKLS0tIGEvdGVzdHMv bWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAgLTQ2LDYgKzQ2LDcgQEAgdGVz dF9wcm9ncyA9IFsKIAkna21zX3BsYW5lX2xvd3JlcycsCiAJJ2ttc19wbGFuZV9tdWx0aXBsZScs CiAJJ2ttc19wbGFuZV9zY2FsaW5nJywKKwkna21zX3BsYW5lX3N0cmVzcycsCiAJJ2ttc19wcm9w X2Jsb2InLAogCSdrbXNfcHJvcGVydGllcycsCiAJJ2ttc19wc3InLAotLSAKMi4xNy4xCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxp bmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=