From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 403276E541 for ; Wed, 23 Jan 2019 19:40:49 +0000 (UTC) Message-ID: <1f826e02f392ca71e422433e003b0df2c600ff97.camel@intel.com> From: Dhinakaran Pandiyan Date: Wed, 23 Jan 2019 11:40:42 -0800 In-Reply-To: <1545226909-1148-1-git-send-email-juhapekka.heikkila@gmail.com> References: <1545144020-21029-1-git-send-email-juhapekka.heikkila@gmail.com> <1545226909-1148-1-git-send-email-juhapekka.heikkila@gmail.com> Mime-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_available_modes_crc: Fix handling of test comparisons List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: dhinakaran.pandiyan@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Juha-Pekka Heikkila , igt-dev@lists.freedesktop.org List-ID: T24gV2VkLCAyMDE4LTEyLTE5IGF0IDE1OjQxICswMjAwLCBKdWhhLVBla2thIEhlaWtraWxhIHdy b3RlOgo+IEZpeGVkIGhhbmRsaW5nIG9mIHNpbmdsZSBwbGFuZSBtb2RlcyBzbyB1c2VkIGJwcCBu ZXZlciBnZXQgdG8KPiBiZSAwIGFuZCBlYXNlIG9mZiBjcmMgY29tcGFyaXNvbiBhIGJpdCB3aXRo IGdhbW1hIHRhYmxlcyBhcwo+IGlkZWEgb2YgdGhpcyB0ZXN0IGlzIHRvIHNlZSBjaG9zZW4gbW9k ZXMgYXJlIGFibGUgdG8gaW5pdGlhbGl6ZS4KPiAKPiBSZWxlYXNlIG91dHB1dCB0byBQSVBFX0FO WSBhdCBlbmQgb2YgdGVzdCBwZXIgY29ubmVjdG9yLgo+IAo+IFJlZHVjZSB2ZXJib3NlbmVzcyBp ZiB0aGVyZSdzIG5vIGVycm9ycy4KPiAKPiBCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNr dG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NjQxCj4gQnVnemlsbGE6IGh0dHBzOi8vYnVncy5m cmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjcwMQo+IFNpZ25lZC1vZmYtYnk6IEp1 aGEtUGVra2EgSGVpa2tpbGEgPGp1aGFwZWtrYS5oZWlra2lsYUBnbWFpbC5jb20+Cj4gLS0tCj4g IHRlc3RzL2ttc19hdmFpbGFibGVfbW9kZXNfY3JjLmMgfCAxNjkgKysrKysrKysrKysrKysrKysr KystLS0tLS0tLQo+IC0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgODYgaW5zZXJ0aW9u cygrKSwgODMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19hdmFpbGFi bGVfbW9kZXNfY3JjLmMKPiBiL3Rlc3RzL2ttc19hdmFpbGFibGVfbW9kZXNfY3JjLmMKPiBpbmRl eCA0NWE0Nzc1Li4wNDQ3MmQwIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2ttc19hdmFpbGFibGVfbW9k ZXNfY3JjLmMKPiArKysgYi90ZXN0cy9rbXNfYXZhaWxhYmxlX21vZGVzX2NyYy5jCj4gQEAgLTU0 LDYgKzU0LDEyIEBAIHR5cGVkZWYgc3RydWN0IHsKPiAgCj4gIAlpZ3RfY3JjX3QgY3Vyc29yX2Ny YzsKPiAgCWlndF9jcmNfdCBmdWxsc2NyZWVuX2NyYzsKPiArCj4gKwkvKgo+ICsJICogSWYgdGhl cmUncyB1bmtub3duIGZvcm1hdCBzZXR0aW5nIHVwIG1vZGUgY2FuIGZhaWwKPiArCSAqIHdpdGhv dXQgZmFpbGluZyBlbnRpcmUgdGVzdC4KPiArCSAqLwo+ICsJYm9vbCBhbGxvd19mYWlsOwo+ICB9 IGRhdGFfdDsKPiAgCj4gIAo+IEBAIC0xMjAsNyArMTI2LDYgQEAgc3RhdGljIHZvaWQgZ2VuZXJh dGVfY29tcGFyaXNvbl9jcmNfbGlzdChkYXRhX3QKPiAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRw dXQpCj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IHsKPiAgCXVpbnQzMl90CWZvdXJjYzsKPiAt CWNoYXIJCXplcm9wYWRkaW5nOwo+ICAJZW51bQkJeyBCWVRFU19QUF8xPTEsCj4gIAkJCQlCWVRF U19QUF8yPTIsCj4gIAkJCQlCWVRFU19QUF80PTQsCj4gQEAgLTEyOSw0MiArMTM0LDMzIEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3Qgewo+ICAJCQkJU0tJUDQgfSBicHA7Cj4gIAl1aW50MzJfdAl2YWx1 ZTsKPiAgfSBmaWxsZXJzW10gPSB7Cj4gLQl7IERSTV9GT1JNQVRfQzgsIDAsIEJZVEVTX1BQXzEs IDB4ZmZ9LAo+IC0JeyBEUk1fRk9STUFUX1JHQjU2NSwgMCwgQllURVNfUFBfMiwgMHhmZmZmfSwK PiAtCXsgRFJNX0ZPUk1BVF9YUkdCODg4OCwgMCwgQllURVNfUFBfNCwgMHhmZmZmZmZmZn0sCj4g LQl7IERSTV9GT1JNQVRfWEJHUjg4ODgsIDAsIEJZVEVTX1BQXzQsIDB4ZmZmZmZmZmZ9LAo+IC0K PiAtCS8qCj4gLQkgKiBmb2xsb3dpbmcgdHdvIGFyZSBza2lwcGVkIGJlY2F1c2UgYmxlbmRpbmcg c2VlbXMgdG8gd29yawo+IC0JICogaW5jb3JyZWN0bHkgd2l0aCBleGNlcHRpb24gb2YgQVIyNCBv biBjdXJzb3IgcGxhbmUuCj4gLQkgKiBUZXN0IHN0aWxsIGNyZWF0ZXMgdGhlIHBsYW5lcywganVz dCBmaWxsaW5nIHBsYW5lCj4gLQkgKiBhbmQgZ2V0dGluZyBjcmMgaXMgc2tpcHBlZC4KPiAtCSAq Lwo+IC0JeyBEUk1fRk9STUFUX0FSR0I4ODg4LCAwLCBTS0lQNCwgMHhmZmZmZmZmZn0sCj4gLQl7 IERSTV9GT1JNQVRfQUJHUjg4ODgsIDAsIFNLSVA0LCAweDAwZmZmZmZmfSwKPiAtCj4gLQl7IERS TV9GT1JNQVRfWFJHQjIxMDEwMTAsIDAsIEJZVEVTX1BQXzQsIDB4ZmZmZmZmZmZ9LAo+IC0JeyBE Uk1fRk9STUFUX1hCR1IyMTAxMDEwLCAwLCBCWVRFU19QUF80LCAweGZmZmZmZmZmfSwKPiAtCj4g LQl7IERSTV9GT1JNQVRfWVVZViwgMCwgQllURVNfUFBfNCwgMHg4MGViODBlYn0sCj4gLQl7IERS TV9GT1JNQVRfWVZZVSwgMCwgQllURVNfUFBfNCwgMHg4MGViODBlYn0sCj4gLQl7IERSTV9GT1JN QVRfVllVWSwgMCwgQllURVNfUFBfNCwgMHhlYjgwZWI4MH0sCj4gLQl7IERSTV9GT1JNQVRfVVlW WSwgMCwgQllURVNfUFBfNCwgMHhlYjgwZWI4MH0sCj4gKwl7IERSTV9GT1JNQVRfQzgsIEJZVEVT X1BQXzEsIDB4ZmZ9LAo+ICsJeyBEUk1fRk9STUFUX1JHQjU2NSwgQllURVNfUFBfMiwgMHhmZmZm fSwKPiArCXsgRFJNX0ZPUk1BVF9YUkdCODg4OCwgQllURVNfUFBfNCwgMHhmZmZmZmZmZn0sCj4g Kwl7IERSTV9GT1JNQVRfWEJHUjg4ODgsIEJZVEVTX1BQXzQsIDB4ZmZmZmZmZmZ9LAo+ICsJeyBE Uk1fRk9STUFUX0FSR0I4ODg4LCBCWVRFU19QUF80LCAweGZmZmZmZmZmfSwKPiArCXsgRFJNX0ZP Uk1BVF9BQkdSODg4OCwgQllURVNfUFBfNCwgMHgwMGZmZmZmZn0sCj4gKwl7IERSTV9GT1JNQVRf WFJHQjIxMDEwMTAsIEJZVEVTX1BQXzQsIDB4ZmZmZmZmZmZ9LAo+ICsJeyBEUk1fRk9STUFUX1hC R1IyMTAxMDEwLCBCWVRFU19QUF80LCAweGZmZmZmZmZmfSwKPiArCXsgRFJNX0ZPUk1BVF9ZVVlW LCBCWVRFU19QUF80LCAweDgwZWI4MGVifSwKPiArCXsgRFJNX0ZPUk1BVF9ZVllVLCBCWVRFU19Q UF80LCAweDgwZWI4MGVifSwKPiArCXsgRFJNX0ZPUk1BVF9WWVVZLCBCWVRFU19QUF80LCAweGVi ODBlYjgwfSwKPiArCXsgRFJNX0ZPUk1BVF9VWVZZLCBCWVRFU19QUF80LCAweGViODBlYjgwfSwK PiAgCj4gIAkvKgo+ICAJICogKHNlbWktKXBsYW5hciBmb3JtYXRzCj4gIAkgKi8KPiAtCXsgRFJN X0ZPUk1BVF9OVjEyLCAwLCBOVjEyLCAweDgwZWJ9LAo+ICsJeyBEUk1fRk9STUFUX05WMTIsIE5W MTIsIDB4ODBlYn0sCj4gICNpZmRlZiBEUk1fRk9STUFUX1AwMTAKPiAtCXsgRFJNX0ZPUk1BVF9Q MDEwLCAwLCBQMDEwLCAweDgwMDBlYjAwfSwKPiArCXsgRFJNX0ZPUk1BVF9QMDEwLCBQMDEwLCAw eDgwMDBlYjAwfSwKPiAgI2VuZGlmCj4gICNpZmRlZiBEUk1fRk9STUFUX1AwMTIKPiAtCXsgRFJN X0ZPUk1BVF9QMDEyLCAwLCBQMDEwLCAweDgwMDBlYjAwfSwKPiArCXsgRFJNX0ZPUk1BVF9QMDEy LCBQMDEwLCAweDgwMDBlYjAwfSwKPiAgI2VuZGlmCj4gICNpZmRlZiBEUk1fRk9STUFUX1AwMTYK PiAtCXsgRFJNX0ZPUk1BVF9QMDE2LCAwLCBQMDEwLCAweDgwMDBlYjAwfSwKPiArCXsgRFJNX0ZP Uk1BVF9QMDE2LCBQMDEwLCAweDgwMDBlYjAwfSwKPiAgI2VuZGlmCj4gLQl7IDAsIDAsIDAsIDAg fQo+ICsJeyAwLCBTS0lQNCwgMCB9Cj4gIH07Cj4gIAo+ICAvKgo+IEBAIC0yMjEsMjQgKzIxNyw5 IEBAIHN0YXRpYyBib29sIGZpbGxfaW5fZmIoZGF0YV90ICpkYXRhLAo+IGlndF9vdXRwdXRfdCAq b3V0cHV0LCBpZ3RfcGxhbmVfdCAqcGxhbmUsCj4gIAkJd3JpdGVzaXplID0gZGF0YS0+c2l6ZStk YXRhLT5zaXplLzI7Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIFNLSVA0Ogo+IC0JCWlmIChmaWxsZXJz W2ldLmZvdXJjYyA9PSBEUk1fRk9STUFUX0FSR0I4ODg4ICYmCj4gLQkJICAgIHBsYW5lLT50eXBl ID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikgewo+IC0JCS8qCj4gLQkJICogc3BlY2lhbCBmb3Ig Y3Vyc29yIHBsYW5lIHdoZXJlIGJsZW5kaW5nIHdvcmtzCj4gY29ycmVjdGx5Lgo+IC0JCSAqLwo+ IC0JCQlwdGVtcF8zMl9idWYgPSAodW5zaWduZWQgaW50KilkYXRhLT5idWY7Cj4gLQkJCWZvciAo YyA9IDA7IGMgPCBkYXRhLT5zaXplLzQ7IGMrKykKPiAtCQkJCXB0ZW1wXzMyX2J1ZltjXSA9IGZp bGxlcnNbaV0udmFsdWU7Cj4gLQkJCXdyaXRlc2l6ZSA9IGRhdGEtPnNpemU7Cj4gLQkJCWJyZWFr Owo+IC0JCX0KPiAtCQlpZ3RfaW5mbygiRm9ybWF0ICVzIENSQyBjb21wYXJpc29uIHNraXBwZWQg YnkKPiBkZXNpZ24uXG4iLAo+IC0JCQkgKGNoYXIqKSZmaWxsZXJzW2ldLmZvdXJjYyk7Cj4gLQo+ IC0JCXJldHVybiBmYWxzZTsKPiAgCWRlZmF1bHQ6Cj4gLQkJaWd0X2luZm8oIlVuc3VwcG9ydGVk IG1vZGUgZm9yIHRlc3QgJXNcbiIsCj4gLQkJCSAoY2hhciopJmZpbGxlcnNbaV0uZm91cmNjKTsK PiArCQlpZ3RfaW5mbygiVW5zdXBwb3J0ZWQgbW9kZSBmb3IgdGVzdGluZyBDUkMgJS40c1xuIiwK PiArCQkJIChjaGFyICopJmZvcm1hdCk7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiBA QCAtMjYxLDYgKzI0Miw4IEBAIHN0YXRpYyBib29sIHNldHVwX2ZiKGRhdGFfdCAqZGF0YSwgaWd0 X291dHB1dF90Cj4gKm91dHB1dCwgaWd0X3BsYW5lX3QgKnBsYW5lLAo+ICAJaW50IGJwcCA9IDA7 Cj4gIAlpbnQgaTsKPiAgCj4gKwlkYXRhLT5hbGxvd19mYWlsID0gZmFsc2U7Cj4gKwo+ICAJbW9k ZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKPiAgCWlmIChwbGFuZS0+dHlwZSAhPSBE Uk1fUExBTkVfVFlQRV9DVVJTT1IpIHsKPiAgCQl3ID0gbW9kZS0+aGRpc3BsYXk7Cj4gQEAgLTI4 OSw2ICsyNzIsOCBAQCBzdGF0aWMgYm9vbCBzZXR1cF9mYihkYXRhX3QgKmRhdGEsIGlndF9vdXRw dXRfdAo+ICpvdXRwdXQsIGlndF9wbGFuZV90ICpwbGFuZSwKPiAgCQlicmVhazsKPiAgCj4gIAlj YXNlIFNLSVA0Ogo+ICsJCWRhdGEtPmFsbG93X2ZhaWwgPSB0cnVlOwo+ICsJCS8qIGZhbGwgdGhy b3VnaCAqLwo+ICAJY2FzZSBCWVRFU19QUF80Ogo+ICAJCWJwcCA9IDMyOwo+ICAJCWJyZWFrOwo+ IEBAIC0zMTksNyArMzA0LDcgQEAgc3RhdGljIGJvb2wgc2V0dXBfZmIoZGF0YV90ICpkYXRhLCBp Z3Rfb3V0cHV0X3QKPiAqb3V0cHV0LCBpZ3RfcGxhbmVfdCAqcGxhbmUsCj4gIAo+ICAJaWYocmV0 IDwgMCkgewo+ICAJCWlndF9pbmZvKCJDcmVhdGluZyBmYiBmb3IgZm9ybWF0ICVzIGZhaWxlZCwg cmV0dXJuIGNvZGUKPiAlZFxuIiwKPiAtCQkJIChjaGFyKikmZGF0YS0+Zm9ybWF0Lm5hbWUsIHJl dCk7Cj4gKwkJCSAoY2hhciAqKSZkYXRhLT5mb3JtYXQubmFtZSwgcmV0KTsKPiAgCj4gIAkJcmV0 dXJuIGZhbHNlOwo+ICAJfQo+IEBAIC0zODAsMTMgKzM2NSwxNCBAQCBzdGF0aWMgYm9vbCBwcmVw YXJlX2NydGMoZGF0YV90ICpkYXRhLAo+IGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+ICAKPiAgCj4g IHN0YXRpYyBpbnQKPiAtdGVzdF9vbmVfbW9kZShkYXRhX3QqIGRhdGEsIGlndF9vdXRwdXRfdCAq b3V0cHV0LCBpZ3RfcGxhbmVfdCoKPiBwbGFuZSwKPiAtCSAgICAgIGludCBtb2RlKQo+ICt0ZXN0 X29uZV9tb2RlKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQsIGlndF9wbGFuZV90 Cj4gKnBsYW5lLAo+ICsJICAgICAgZW51bSBwaXBlIHBpcGUsIGludCBtb2RlKQo+ICB7Cj4gIAlp Z3RfY3JjX3QgY3VycmVudF9jcmM7Cj4gIAlzaWduZWQgclZhbCA9IDA7Cj4gIAlib29sIGRvX2Ny YzsKPiAtCWNoYXIqIGNyY2NvbXBhcmVbMl07Cj4gKwljaGFyICpjcmNjb21wYXJlWzJdOwo+ICsJ aWd0X2NyY190ICpwX2NyYzsKPiAgCj4gIAlpZiAocHJlcGFyZV9jcnRjKGRhdGEsIG91dHB1dCwg cGxhbmUsIG1vZGUpKXsKPiAgCQkvKgo+IEBAIC00MDQsMzIgKzM5MCwzMiBAQCB0ZXN0X29uZV9t b2RlKGRhdGFfdCogZGF0YSwgaWd0X291dHB1dF90Cj4gKm91dHB1dCwgaWd0X3BsYW5lX3QqIHBs YW5lLAo+ICAJCWlmIChkb19jcmMpIHsKPiAgCQkJaWd0X3BpcGVfY3JjX2dldF9jdXJyZW50KGRh dGEtPmdmeF9mZCwgZGF0YS0KPiA+cGlwZV9jcmMsICZjdXJyZW50X2NyYyk7Cj4gIAo+IC0JCQlp ZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKSB7Cj4gLQkJCQlpZiAoIWln dF9jaGVja19jcmNfZXF1YWwoJmN1cnJlbnRfY3JjLAo+IC0JCQkJCSZkYXRhLT5mdWxsc2NyZWVu X2NyYykpIHsKPiAtCQkJCQljcmNjb21wYXJlWzBdID0KPiBpZ3RfY3JjX3RvX3N0cmluZygmY3Vy cmVudF9jcmMpOwo+IC0JCQkJCWNyY2NvbXBhcmVbMV0gPQo+IGlndF9jcmNfdG9fc3RyaW5nKCZk YXRhLT5mdWxsc2NyZWVuX2NyYyk7Cj4gLQkJCQkJaWd0X3dhcm4oImNyYyBtaXNtYXRjaC4gdGFy Z2V0Cj4gJS44cywgcmVzdWx0ICUuOHMuXG4iLCBjcmNjb21wYXJlWzBdLCBjcmNjb21wYXJlWzFd KTsKPiAtCQkJCQlmcmVlKGNyY2NvbXBhcmVbMF0pOwo+IC0JCQkJCWZyZWUoY3JjY29tcGFyZVsx XSk7Cj4gLQkJCQkJclZhbCsrOwo+IC0JCQkJfQo+IC0JCQl9IGVsc2Ugewo+IC0JCQkJaWYgKCFp Z3RfY2hlY2tfY3JjX2VxdWFsKCZjdXJyZW50X2NyYywKPiAtCQkJCQkmZGF0YS0+Y3Vyc29yX2Ny YykpIHsKPiAtCQkJCQljcmNjb21wYXJlWzBdID0KPiBpZ3RfY3JjX3RvX3N0cmluZygmY3VycmVu dF9jcmMpOwo+IC0JCQkJCWNyY2NvbXBhcmVbMV0gPQo+IGlndF9jcmNfdG9fc3RyaW5nKCZkYXRh LT5jdXJzb3JfY3JjKTsKPiAtCQkJCQlpZ3Rfd2FybigiY3JjIG1pc21hdGNoLiB0YXJnZXQKPiAl LjhzLCByZXN1bHQgJS44cy5cbiIsIGNyY2NvbXBhcmVbMF0sIGNyY2NvbXBhcmVbMV0pOwo+IC0J CQkJCWZyZWUoY3JjY29tcGFyZVswXSk7Cj4gLQkJCQkJZnJlZShjcmNjb21wYXJlWzFdKTsKPiAr CQkJaWYgKHBsYW5lLT50eXBlICE9IERSTV9QTEFORV9UWVBFX0NVUlNPUikKPiArCQkJCXBfY3Jj ID0gJmRhdGEtPmZ1bGxzY3JlZW5fY3JjOwo+ICsJCQllbHNlCj4gKwkJCQlwX2NyYyA9ICZkYXRh LT5jdXJzb3JfY3JjOwo+ICsKPiArCQkJaWYgKCFpZ3RfY2hlY2tfY3JjX2VxdWFsKCZjdXJyZW50 X2NyYywgcF9jcmMpKQo+IHsKPiArCQkJCWNyY2NvbXBhcmVbMF0gPQo+IGlndF9jcmNfdG9fc3Ry aW5nKCZjdXJyZW50X2NyYyk7Cj4gKwkJCQljcmNjb21wYXJlWzFdID0KPiBpZ3RfY3JjX3RvX3N0 cmluZyhwX2NyYyk7Cj4gKwkJCQlpZ3Rfd2FybigiY3JjIG1pc21hdGNoIG9uICVzIFBJUEUgJXMK PiBwbGFuZSAlZCBmb3JtYXQgJS40cy4gdGFyZ2V0ICUuOHMsIHJlc3VsdCAlLjhzLlxuIiwKPiAr CQkJCQkgaWd0X291dHB1dF9uYW1lKG91dHB1dCksCj4gKwkJCQkJIGttc3Rlc3RfcGlwZV9uYW1l KHBpcGUpLAo+ICsJCQkJCSBwbGFuZS0+aW5kZXgsCj4gKwkJCQkJIChjaGFyICopJmRhdGEtPmZv cm1hdC5uYW1lLAo+ICsJCQkJCSBjcmNjb21wYXJlWzBdLAo+ICsJCQkJCSBjcmNjb21wYXJlWzFd KTsKCkNhbiB5b3UgcGxlYXNlIHNwbGl0IHRoaXMgZGVidWcgcHJpbnQgaW50byBhIHNlcGFyYXRl IHBhdGNoPyBUaGF0IHdheQp3ZSBjYW4gc2VlIHdoaWNoIGZvcm1hdC9wbGFuZS9waXBlIGNvbWJp bmF0aW9uIGlzIGZhaWxpbmcgb24gSUNMIHdoaWxlIAp5b3UgYXJlIHdvcmtpbmcgb24gdGhlIGdh bW1hIGZpeGVzPwoKCgo+ICsKPiArCQkJCWZyZWUoY3JjY29tcGFyZVswXSk7Cj4gKwkJCQlmcmVl KGNyY2NvbXBhcmVbMV0pOwo+ICsJCQkJaWYgKCFkYXRhLT5hbGxvd19mYWlsKQo+ICAJCQkJCXJW YWwrKzsKPiAtCQkJCX0KPiAgCQkJfQo+ICAJCX0KPiAgCQlyZW1vdmVfZmIoZGF0YSwgb3V0cHV0 LCBwbGFuZSk7Cj4gIAkJcmV0dXJuIHJWYWw7Cj4gIAl9Cj4gLQlyZXR1cm4gMTsKPiArCXJldHVy biBkYXRhLT5hbGxvd19mYWlsID8gMCA6IDE7Cj4gIH0KPiAgCj4gIAo+IEBAIC00NDAsMTQgKzQy NiwzOCBAQCB0ZXN0X2F2YWlsYWJsZV9tb2RlcyhkYXRhX3QqIGRhdGEpCj4gIAlpZ3RfcGxhbmVf dCAqcGxhbmU7Cj4gIAlpbnQgbW9kZWluZGV4Owo+ICAJZW51bSBwaXBlIHBpcGU7Cj4gLQlpbnQg aW52YWxpZHMgPSAwOwo+ICsJaW50IGZhaWxlZF9jcmNzID0gMCwgaSwgbHV0X3NpemU7Cj4gIAlk cm1Nb2RlUGxhbmUgKm1vZGVQbGFuZTsKPiAtCWNoYXIgcGxhbmV0eXBlWzNdWzhdID0geyJPVkVS TEFZXDAiLCAiUFJJTUFSWVwwIiwgIkNVUlNPUlwwIiB9Owo+ICsKPiArCXN0cnVjdCB7Cj4gKwkJ dWludDE2X3QgcmVkOwo+ICsJCXVpbnQxNl90IGdyZWVuOwo+ICsJCXVpbnQxNl90IGJsdWU7Cj4g KwkJdWludDE2X3QgcmVzZXJ2ZWQ7Cj4gKwl9ICpsdXQ7Cj4gIAo+ICAJZm9yX2VhY2hfcGlwZV93 aXRoX3ZhbGlkX291dHB1dCgmZGF0YS0+ZGlzcGxheSwgcGlwZSwgb3V0cHV0KSB7Cj4gKwkJaWd0 X2Rpc3BsYXlfcmVzZXQoJmRhdGEtPmRpc3BsYXkpOwo+ICAJCWlndF9vdXRwdXRfc2V0X3BpcGUo b3V0cHV0LCBwaXBlKTsKPiAgCQlpZ3RfZGlzcGxheV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBk YXRhLT5jb21taXQpOwo+ICAKPiArCQlpZiAoaWd0X3BpcGVfb2JqX2hhc19wcm9wKCZkYXRhLT5k aXNwbGF5LnBpcGVzW3BpcGVdLAo+IElHVF9DUlRDX0dBTU1BX0xVVF9TSVpFKSkgewo+ICsJCQls dXRfc2l6ZSA9IGlndF9waXBlX2dldF9wcm9wKCZkYXRhLT5kaXNwbGF5LAo+IHBpcGUsCj4gKwkJ CQkJCSAgICAgSUdUX0NSVENfR0FNTUFfTFVUCj4gX1NJWkUpOwo+ICsJCQlsdXQgPSBjYWxsb2Mo c2l6ZW9mKCpsdXQpLCBsdXRfc2l6ZSk7Cj4gKwo+ICsJCQlmb3IgKGkgPSAwOyBpIDwgbHV0X3Np emU7IGkrKykgewo+ICsJCQkJbHV0W2ldLnJlZCA9IChpICogMHhmZmZmIC8gKGx1dF9zaXplIC0K PiAxKSkgJiAweGZjMDA7Cj4gKwkJCQlsdXRbaV0uZ3JlZW4gPSAoaSAqIDB4ZmZmZiAvIChsdXRf c2l6ZQo+IC0gMSkpICYgMHhmYzAwOwo+ICsJCQkJbHV0W2ldLmJsdWUgPSAoaSAqIDB4ZmZmZiAv IChsdXRfc2l6ZSAtCj4gMSkpICYgMHhmYzAwOwo+ICsJCQl9Cj4gKwo+ICsJCQlpZ3RfcGlwZV9y ZXBsYWNlX3Byb3BfYmxvYigmZGF0YS0+ZGlzcGxheSwKPiBwaXBlLAo+ICsJCQkJCQkgICBJR1Rf Q1JUQ19HQU1NQV9MVVQsCj4gKwkJCQkJCSAgIGx1dCwgc2l6ZW9mKCpsdXQpICoKPiBsdXRfc2l6 ZSk7Cj4gKwkJCWZyZWUobHV0KTsKPiArCQl9Cj4gKwo+ICAJCWRhdGEtPnBpcGVfY3JjID0gaWd0 X3BpcGVfY3JjX25ldyhkYXRhLT5nZnhfZmQsIHBpcGUsCj4gIAkJCQkJCSAgSU5URUxfUElQRV9D UkNfU09VUkNFCj4gX0FVVE8pOwo+ICAKPiBAQCAtNDY3LDI1ICs0NzcsMTggQEAgdGVzdF9hdmFp bGFibGVfbW9kZXMoZGF0YV90KiBkYXRhKQo+ICAJCQkgICAgIG1vZGVpbmRleCsrKSB7Cj4gIAkJ CQlkYXRhLT5mb3JtYXQuZHdvcmQgPSBtb2RlUGxhbmUtCj4gPmZvcm1hdHNbbW9kZWluZGV4XTsK PiAgCj4gLQkJCQlpZ3RfaW5mbygiVGVzdGluZyBjb25uZWN0b3IgJXMgdXNpbmcKPiBwaXBlICVz IiBcCj4gLQkJCQkJICIgcGxhbmUgaW5kZXggJWQgdHlwZSAlcyBtb2RlCj4gJXNcbiIsCj4gLQkJ CQkJIGlndF9vdXRwdXRfbmFtZShvdXRwdXQpLAo+IC0JCQkJCSBrbXN0ZXN0X3BpcGVfbmFtZShw aXBlKSwKPiAtCQkJCQkgcGxhbmUtPmluZGV4LAo+IC0JCQkJCSBwbGFuZXR5cGVbcGxhbmUtPnR5 cGVdLAo+IC0JCQkJCSAoY2hhciopJmRhdGEtPmZvcm1hdC5uYW1lKTsKPiAtCj4gLQkJCQlpbnZh bGlkcyArPSB0ZXN0X29uZV9tb2RlKGRhdGEsIG91dHB1dCwKPiAtCQkJCQkJCSAgcGxhbmUsCj4g LQkJCQkJCQkgIG1vZGVQbGFuZS0KPiA+Zm9ybWF0c1ttb2RlaW5kZXhdKTsKPiArCQkJCWZhaWxl ZF9jcmNzICs9IHRlc3Rfb25lX21vZGUoZGF0YSwKPiBvdXRwdXQsCj4gKwkJCQkJCQkgICAgIHBs YW5lLAo+IHBpcGUsCj4gKwkJCQkJCQkgICAgIG1vZGVQbGFuZS0KPiA+Zm9ybWF0c1ttb2RlaW5k ZXhdKTsKPiAgCQkJfQo+ICAJCQlkcm1Nb2RlRnJlZVBsYW5lKG1vZGVQbGFuZSk7Cj4gIAkJfQo+ ICAJCWlndF9waXBlX2NyY19zdG9wKGRhdGEtPnBpcGVfY3JjKTsKPiAgCQlpZ3RfcGlwZV9jcmNf ZnJlZShkYXRhLT5waXBlX2NyYyk7Cj4gLQkJaWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlz cGxheSwgZGF0YS0+Y29tbWl0KTsKPiArCj4gKwkJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQs IFBJUEVfQU5ZKTsKPiAgCX0KPiAtCWlndF9hc3NlcnQoaW52YWxpZHMgPT0gMCk7Cj4gKwlpZ3Rf YXNzZXJ0KGZhaWxlZF9jcmNzID09IDApOwo+ICB9Cj4gIAo+ICAKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1k ZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaWd0LWRldgo=