From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id D0F9F6E7AB for ; Tue, 26 Mar 2019 09:11:43 +0000 (UTC) Date: Tue, 26 Mar 2019 11:11:41 +0200 From: Petri Latvala Message-ID: <20190326091141.GZ4038@platvala-desk.ger.corp.intel.com> References: <20190325155440.22182-1-stanislav.lisovskiy@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190325155440.22182-1-stanislav.lisovskiy@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t v4] 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: Stanislav Lisovskiy Cc: igt-dev@lists.freedesktop.org, ville.syrjala@intel.com, martin.peres@intel.com List-ID: T24gTW9uLCBNYXIgMjUsIDIwMTkgYXQgMDU6NTQ6NDBQTSArMDIwMCwgU3RhbmlzbGF2IExpc292 c2tpeSB3cm90ZToKPiBUaGlzIHRlc3QgYXR0ZW1wdHMgdG8gdXRpbGl6ZSBhbGwgY29ubmVjdGVk Cj4gb3V0cHV0cyBhdCB0aGUgc2FtZSB0aW1lLCB1c2luZyBtYXhpbXVtIHBvc3NpYmxlCj4gcmVz b2x1dGlvbiBhbmQgYW1vdW50IG9mIHBsYW5lcywgdG8gY2hlY2sgd2hldGhlcgo+IHdlIGFyZSBo aXRpbmcgYW55IGtpbmQgb2YgYmFuZHdpZHRoLCB3YXRlcm1hcmsgb3IKPiBvdGhlciBsaW1pdGF0 aW9ucy4KPiAKPiB2MjogQWRkZWQgY3B1IGFuZCBncHUgbG9hZCB0aHJlYWRzLCB3aGljaCBjb25z dW1lCj4gICAgIGFkZGl0aW9uYWwgYmFuZHdpZHRoLgo+IAo+IHYzOiBSZW1vdmVkIGJpbmFyeSBw aWN0dXJlIGZpbGUsIHVzaW5nIHBhdHRlcm4gZmIKPiAgICAgaW5zdGVhZC4KPiAKPiB2NDogTW92 ZWQgRkIgY3JlYXRpb24vcmVtb3ZhbCB0byBiZXR0ZXIgcGxhY2UuCj4gCj4gU2lnbmVkLW9mZi1i eTogU3RhbmlzbGF2IExpc292c2tpeSA8c3RhbmlzbGF2Lmxpc292c2tpeUBpbnRlbC5jb20+Cj4g LS0tCj4gIGxpYi9pZ3Rfa21zLmggICAgICAgICAgICB8ICAgNyArCj4gIHRlc3RzL01ha2VmaWxl LnNvdXJjZXMgICB8ICAgMSArCj4gIHRlc3RzL2ttc19wbGFuZV9zdHJlc3MuYyB8IDU0NiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgdGVzdHMvbWVzb24uYnVpbGQg ICAgICAgIHwgICAxICsKPiAgNCBmaWxlcyBjaGFuZ2VkLCA1NTUgaW5zZXJ0aW9ucygrKQo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX3BsYW5lX3N0cmVzcy5jCj4gCj4gZGlmZiAtLWdp dCBhL2xpYi9pZ3Rfa21zLmggYi9saWIvaWd0X2ttcy5oCj4gaW5kZXggNDA3ZjNkNjQuLjBlNjc4 NGNhIDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3Rfa21zLmgKPiArKysgYi9saWIvaWd0X2ttcy5oCj4g QEAgLTUxOSw2ICs1MTksMTMgQEAgc3RhdGljIGlubGluZSBib29sIGlndF9vdXRwdXRfaXNfY29u bmVjdGVkKGlndF9vdXRwdXRfdCAqb3V0cHV0KQo+ICAJCWZvcl9lYWNoX2lmICgoKChvdXRwdXQp ID0gJihkaXNwbGF5KS0+b3V0cHV0c1tjb25fX10pLCBcCj4gIAkJCSAgICAgaWd0X3BpcGVfY29u bmVjdG9yX3ZhbGlkKChwaXBlKSwgKG91dHB1dCkpKSkKPiAgCj4gKyNkZWZpbmUgZm9yX2VhY2hf cGlwZV93aXRoX25ld19vdXRwdXQoZGlzcGxheSwgcGlwZSwgb3V0cHV0KSBcCj4gKwkJCWZvciAo aW50IGNvbiA9IDAsIChwaXBlKSA9IDA7IGNvbiA8IChkaXNwbGF5KS0+bl9vdXRwdXRzOyBjb24r KykgXAo+ICsJCQkJZm9yX2VhY2hfaWYoKG91dHB1dCkgPSAmKGRpc3BsYXkpLT5vdXRwdXRzW2Nv bl0pIFwKPiArCQkJCQlmb3JfZWFjaF9pZigocGlwZSkgPCBJR1RfTUFYX1BJUEVTKSBcCj4gKwkJ CQkJCWZvcl9lYWNoX2lmKGlndF9waXBlX2Nvbm5lY3Rvcl92YWxpZCgocGlwZSksIChvdXRwdXQp KSkKCgpEb2NzIGZvciB0aGlzLiBBbmQgYSB2ZXJ5IGdvb2QgZXhwbGFuYXRpb24gd2hhdCBpcyBk aWZmZXJlbnQgZnJvbQpmb3JfZWFjaF9waXBlX3dpdGhfdmFsaWRfb3V0cHV0KCkuCgoKPiArCj4g Kwo+ICBpZ3Rfb3V0cHV0X3QgKipfX2lndF9waXBlX3BvcHVsYXRlX291dHB1dHMoaWd0X2Rpc3Bs YXlfdCAqZGlzcGxheSwKPiAgCQkJCQkgICBpZ3Rfb3V0cHV0X3QgKipjaG9zZW5fb3V0cHV0cyk7 Cj4gIAo+IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZp bGUuc291cmNlcwo+IGluZGV4IDcxY2NmMDBhLi45ZDA0ZDg4OCAxMDA2NDQKPiAtLS0gYS90ZXN0 cy9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+IEBAIC01 OSw2ICs1OSw3IEBAIFRFU1RTX3Byb2dzID0gXAo+ICAJa21zX3BsYW5lX2xvd3JlcyBcCj4gIAlr bXNfcGxhbmVfbXVsdGlwbGUgXAo+ICAJa21zX3BsYW5lX3NjYWxpbmcgXAo+ICsJa21zX3BsYW5l X3N0cmVzcyBcCj4gIAlrbXNfcHJvcF9ibG9iIFwKPiAgCWttc19wcm9wZXJ0aWVzIFwKPiAgCWtt c19wc3IgXAo+IGRpZmYgLS1naXQgYS90ZXN0cy9rbXNfcGxhbmVfc3RyZXNzLmMgYi90ZXN0cy9r bXNfcGxhbmVfc3RyZXNzLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw Li44YTI0NGRjNwo+IC0tLSAvZGV2L251bGwKPiArKysgYi90ZXN0cy9rbXNfcGxhbmVfc3RyZXNz LmMKPiBAQCAtMCwwICsxLDU0NiBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRl bCBDb3Jwb3JhdGlvbgoKMjAxNj8KCgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBn cmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBj b3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo dGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVy bWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1 ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsg Kgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U WSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5P IEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H Cj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8K PiArCj4gKyNpbmNsdWRlICJpZ3QuaCIKPiArI2luY2x1ZGUgImlndF9yYW5kLmgiCj4gKyNpbmNs dWRlICJkcm10ZXN0LmgiCj4gKyNpbmNsdWRlICJzd19zeW5jLmgiCj4gKyNpbmNsdWRlIDxlcnJu by5oPgo+ICsjaW5jbHVkZSA8cHRocmVhZC5oPgo+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPgo+ICsj aW5jbHVkZSA8c3RkaW8uaD4KPiArI2luY2x1ZGUgPHN0cmluZy5oPgo+ICsjaW5jbHVkZSA8dGlt ZS5oPgo+ICsjaW5jbHVkZSA8cG9sbC5oPgo+ICsjaW5jbHVkZSA8cHRocmVhZC5oPgo+ICsKPiAr I2lmbmRlZiBEUk1fQ0FQX0NVUlNPUl9XSURUSAo+ICsjZGVmaW5lIERSTV9DQVBfQ1VSU09SX1dJ RFRIIDB4OAo+ICsjZW5kaWYKPiArI2lmbmRlZiBEUk1fQ0FQX0NVUlNPUl9IRUlHSFQKPiArI2Rl ZmluZSBEUk1fQ0FQX0NVUlNPUl9IRUlHSFQgMHg5Cj4gKyNlbmRpZgo+ICsKPiArCj4gK2RybU1v ZGVNb2RlSW5mbyB1aGRfbW9kZV82MGh6ID0gewo+ICsJLm5hbWUgPSAiMzg0MHgyMTYwQDYwaHoi LAo+ICsJLnZyZWZyZXNoID0gNjAsCj4gKwkuY2xvY2sgPSAxNDI2NjcqMiwKPiArCS5oZGlzcGxh eSA9IDM4NDAsCj4gKwkuaHN5bmNfc3RhcnQgPSAxOTM2KjIsCj4gKwkuaHN5bmNfZW5kID0gMTk1 MioyLAo+ICsJLmh0b3RhbCA9IDIxMDQqMiwKPiArCS52ZGlzcGxheSA9IDIxNjAsCj4gKwkudnN5 bmNfc3RhcnQgPSAxMDgzKjIsCj4gKwkudnN5bmNfZW5kID0gMTA5NyoyLAo+ICsJLnZ0b3RhbCA9 IDExMjgqMiwKPiArCS5mbGFncyA9IDB4YSwKPiArfTsKPiArCj4gKyNkZWZpbmUgTl9GT1JNQVRT IDMKPiArc3RhdGljIGNvbnN0IHVpbnQzMl90IGZvcm1hdHNbTl9GT1JNQVRTXSA9IHsKPiArCURS TV9GT1JNQVRfWFJHQjg4ODgsCj4gKwlEUk1fRk9STUFUX1JHQjU2NSwKPiArCURSTV9GT1JNQVRf WFJHQjIxMDEwMTAsCj4gK307Cj4gKwo+ICsjZGVmaW5lIE5fVElMSU5HX01FVEhPRFMgMwo+ICtz dGF0aWMgY29uc3QgdWludDY0X3QgdGlsaW5nc1tOX1RJTElOR19NRVRIT0RTXSA9IHsKPiArCURS TV9GT1JNQVRfTU9EX0xJTkVBUiwKPiArCUk5MTVfRk9STUFUX01PRF9YX1RJTEVELAo+ICsJSTkx NV9GT1JNQVRfTU9EX1lfVElMRUQsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3QgY2hhciAqZm9y bWF0X3N0cihpbnQgZm9ybWF0X2luZGV4KQo+ICt7Cj4gKwlzd2l0Y2ggKGZvcm1hdHNbZm9ybWF0 X2luZGV4XSkgewo+ICsJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKPiArCQlyZXR1cm4gInJnYjU2 NSI7Cj4gKwljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6Cj4gKwkJcmV0dXJuICJ4cmdiODg4OCI7 Cj4gKwljYXNlIERSTV9GT1JNQVRfWFJHQjIxMDEwMTA6Cj4gKwkJcmV0dXJuICJ4cmdiMjEwMTAx MCI7Cj4gKwlkZWZhdWx0Ogo+ICsJCWlndF9hc3NlcnQoZmFsc2UpOwo+ICsJfQo+ICt9Cj4gKwo+ ICtzdGF0aWMgY29uc3QgY2hhciAqdGlsaW5nX3N0cihpbnQgdGlsaW5nX2luZGV4KQo+ICt7Cj4g Kwlzd2l0Y2ggKHRpbGluZ3NbdGlsaW5nX2luZGV4XSkgewo+ICsJY2FzZSBEUk1fRk9STUFUX01P RF9MSU5FQVI6Cj4gKwkJcmV0dXJuICJ1bnRpbGVkIjsKPiArCWNhc2UgSTkxNV9GT1JNQVRfTU9E X1hfVElMRUQ6Cj4gKwkJcmV0dXJuICJ4dGlsZWQiOwo+ICsJY2FzZSBJOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRDoKPiArCQlyZXR1cm4gInl0aWxlZCI7Cj4gKwlkZWZhdWx0Ogo+ICsJCWlndF9hc3Nl cnQoZmFsc2UpOwo+ICsJfQo+ICt9Cj4gKwo+ICsKPiArI2RlZmluZSBNQVhfQ09SRVMgOAo+ICsK PiArc3RydWN0IGRhdGE7Cj4gKwo+ICtzdHJ1Y3QgdGhyZWFkX2NvbnRleHQgewo+ICsJc3RydWN0 IGRhdGEgKmRhdGE7Cj4gKwlpbnQgaWQ7Cj4gKwl2b2lkICpidWYxOwo+ICsJdm9pZCAqYnVmMjsK PiArfTsKPiArCj4gK3N0cnVjdCBncHVfY29udGV4dCB7Cj4gKwlzdHJ1Y3QgZGF0YSAqZGF0YTsK PiArCWludCBwaXBlOwo+ICsJaW50IGNvbG9yOwo+ICt9Owo+ICsKPiArc3RydWN0IGRhdGEgewo+ ICsJaW50IGRybV9mZDsKPiArCWlndF9kaXNwbGF5X3QgZGlzcGxheTsKPiArCWludCBudW1fcGxh bmVzOwo+ICsJdWludDMyX3QgZm9ybWF0Owo+ICsJdWludDY0X3QgbW9kaWZpZXI7Cj4gKwl1aW50 MzJfdCBkZXZpZDsKPiArCWRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsKPiArCXN0cnVjdCBpZ3Rf ZmIgZmJbSUdUX01BWF9QSVBFU107Cj4gKwlzdHJ1Y3QgaWd0X2ZiIGN1cnNvcl9mYltJR1RfTUFY X1BJUEVTXTsKPiArCXB0aHJlYWRfdCBjcHVfdGhyZWFkW01BWF9DT1JFU107Cj4gKwlib29sIGNw dV90aHJlYWRfc3RvcFtNQVhfQ09SRVNdOwo+ICsJc3RydWN0IHRocmVhZF9jb250ZXh0IGNwdV9j b250ZXh0W01BWF9DT1JFU107Cj4gKwlzdHJ1Y3QgZ3B1X2NvbnRleHQgZ3B1X2NvbnRleHRbSUdU X01BWF9QSVBFU107Cj4gK307Cj4gKwo+ICsKPiArc3RydWN0IGJhc2VfY3JjIHsKPiArCWJvb2wg c2V0Owo+ICsJaWd0X2NyY190IGNyYzsKPiArfTsKPiArCj4gK2lndF9waXBlX2NyY190ICpwaXBl X2NyYzsKPiArCj4gKyNkZWZpbmUgQlVGX1NJWkUgMTI4KjEwMjQqMTAyNAo+ICsKPiArc3RhdGlj IHZvaWQgKmNwdV9sb2FkKHZvaWQgKmQpCj4gK3sKPiArCWNoYXIgKmJ1ZjEsICpidWYyOwo+ICsJ c3RydWN0IHRocmVhZF9jb250ZXh0ICpjb250ZXh0ID0gKHN0cnVjdCB0aHJlYWRfY29udGV4dCAq KWQ7Cj4gKwlzdHJ1Y3QgZGF0YSAqZGF0YSA9IGNvbnRleHQtPmRhdGE7Cj4gKwo+ICsJYnVmMSA9 IGNvbnRleHQtPmJ1ZjE7Cj4gKwlidWYyID0gY29udGV4dC0+YnVmMjsKPiArCj4gKwlkYXRhLT5j cHVfdGhyZWFkX3N0b3BbY29udGV4dC0+aWRdID0gZmFsc2U7Cj4gKwo+ICsJd2hpbGUoIWRhdGEt PmNwdV90aHJlYWRfc3RvcFtjb250ZXh0LT5pZF0pIHsKPiArCQltZW1jcHkoYnVmMSwgYnVmMiwg QlVGX1NJWkUpOwo+ICsJCW1lbWNweShidWYyLCBidWYxLCBCVUZfU0laRSk7Cj4gKwl9Cj4gKwo+ ICsJcmV0dXJuIE5VTEw7Cj4gK30KPiArCj4gKwo+ICtzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9p bml0KHN0cnVjdCBpZ3RfYnVmICpidWYsCj4gKwkJCWRybV9pbnRlbF9ibyAqYm8sIGludCB3aWR0 aCwgaW50IGhlaWdodCwgaW50IHN0cmlkZSwgaW50IHRpbGluZykKPiArewo+ICsJYnVmLT5ibyA9 IGJvOwo+ICsJYnVmLT5zdHJpZGUgPSBzdHJpZGU7Cj4gKwlidWYtPnRpbGluZyA9IHRpbGluZzsK PiArCWJ1Zi0+c2l6ZSA9IHdpZHRoICogaGVpZ2h0ICogNDsKPiArCWJ1Zi0+YnBwID0gMzI7Cj4g K30KPiArCj4gKwo+ICtzdGF0aWMgdm9pZCBncHVfbG9hZChzdHJ1Y3QgZ3B1X2NvbnRleHQgKmdw dV9jb250ZXh0KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoID0gTlVM TDsKPiArCXN0cnVjdCBpZ3RfYnVmIGRzdDsKPiArCXN0cnVjdCBkYXRhICpkYXRhID0gZ3B1X2Nv bnRleHQtPmRhdGE7Cj4gKwlpbnQgcGlwZSA9IGdwdV9jb250ZXh0LT5waXBlOwo+ICsJaWd0X2Zp bGxmdW5jX3QgZ3BncHVfZmlsbCA9IE5VTEw7Cj4gKwlkcm1faW50ZWxfYm8gKmJvOwo+ICsJc3Ry dWN0IGlndF9mYiAqZmIgPSAmZGF0YS0+ZmJbcGlwZV07Cj4gKwo+ICsJaWYgKCFkYXRhLT5kZXZp ZCkgewo+ICsJCWRhdGEtPmRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChkYXRhLT5kcm1fZmQp Owo+ICsJCWlndF9yZXF1aXJlX2dlbShkYXRhLT5kcm1fZmQpOwo+ICsKPiArCQlkYXRhLT5idWZt Z3IgPSBkcm1faW50ZWxfYnVmbWdyX2dlbV9pbml0KGRhdGEtPmRybV9mZCwgNDA5Nik7Cj4gKwkJ aWd0X2Fzc2VydChkYXRhLT5idWZtZ3IpOwo+ICsJfQo+ICsKPiArCWdwZ3B1X2ZpbGwgPSBpZ3Rf Z2V0X2dwZ3B1X2ZpbGxmdW5jKGRhdGEtPmRldmlkKTsKPiArCj4gKwlpZ3RfcmVxdWlyZV9mKGdw Z3B1X2ZpbGwsCj4gKwkgICAgICAibm8gZ3BncHUtZmlsbCBmdW5jdGlvblxuIik7Cj4gKwo+ICsJ YmF0Y2ggPSBpbnRlbF9iYXRjaGJ1ZmZlcl9hbGxvYyhkYXRhLT5idWZtZ3IsIGRhdGEtPmRldmlk KTsKPiArCWlndF9hc3NlcnQoYmF0Y2gpOwo+ICsKPiArCWJvID0gZ2VtX2hhbmRsZV90b19saWJk cm1fYm8oZGF0YS0+YnVmbWdyLCBkYXRhLT5kcm1fZmQsICIiLCBmYi0+Z2VtX2hhbmRsZSk7Cj4g Kwo+ICsJc2NyYXRjaF9idWZfaW5pdCgmZHN0LCBibywgZmItPndpZHRoLCBmYi0+aGVpZ2h0LCBm Yi0+c3RyaWRlc1swXSwgZmItPnRpbGluZyk7Cj4gKwo+ICsJZ3BncHVfZmlsbChiYXRjaCwKPiAr CSAgICZkc3QsIDAsIDAsIChmYi0+d2lkdGggKiA0KSwgZmItPmhlaWdodCwKPiArCSAgIGdwdV9j b250ZXh0LT5jb2xvcik7Cj4gKwo+ICsJZ3B1X2NvbnRleHQtPmNvbG9yICs9IDB4MTA7Cj4gKwo+ ICsJaW50ZWxfYmF0Y2hidWZmZXJfZnJlZShiYXRjaCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxp bmUgdWludDMyX3QgcGlwZV9zZWxlY3QoZW51bSBwaXBlIHBpcGUpCj4gK3sKPiArCWlmIChwaXBl ID4gMSkKPiArCQlyZXR1cm4gcGlwZSA8PCBEUk1fVkJMQU5LX0hJR0hfQ1JUQ19TSElGVDsKPiAr CWVsc2UgaWYgKHBpcGUgPiAwKQo+ICsJCXJldHVybiBEUk1fVkJMQU5LX1NFQ09OREFSWTsKPiAr CWVsc2UKPiArCQlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHVuc2lnbmVkIGdldF92Ymxh bmsoaW50IGZkLCBlbnVtIHBpcGUgcGlwZSwgdW5zaWduZWQgZmxhZ3MpCj4gK3sKPiArCXVuaW9u IGRybV93YWl0X3ZibGFuayB2Ymw7Cj4gKwo+ICsJbWVtc2V0KCZ2YmwsIDAsIHNpemVvZih2Ymwp KTsKPiArCXZibC5yZXF1ZXN0LnR5cGUgPSBEUk1fVkJMQU5LX1JFTEFUSVZFIHwgcGlwZV9zZWxl Y3QocGlwZSkgfCBmbGFnczsKPiArCWlmIChkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX1dBSVRfVkJM QU5LLCAmdmJsKSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlyZXR1cm4gdmJsLnJlcGx5LnNlcXVl bmNlOwo+ICt9Cj4gKwo+ICsKPiArc3RhdGljIGludCBwbGFuZV9zdHJlc3Moc3RydWN0IGRhdGEg KmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVtIHBpcGUgcGlwZSwgZHJtTW9kZU1vZGVJ bmZvICptb2RlLCBib29sIGdwdSkKPiArewo+ICsJaWd0X3BsYW5lX3QgKnBsYW5lOwo+ICsJdWlu dDY0X3QgY3Vyc29yX3dpZHRoLCBjdXJzb3JfaGVpZ2h0Owo+ICsJaW50IGk7Cj4gKwlpbnQgcmV0 Owo+ICsJaWd0X2NyY190CWNyYywgY3JjMjsKPiArCj4gKwlpZ3Rfb3V0cHV0X292ZXJyaWRlX21v ZGUob3V0cHV0LCBtb2RlKTsKPiArCXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21taXRfYXRvbWlj KCZkYXRhLT5kaXNwbGF5LAo+ICsJCQlEUk1fTU9ERV9BVE9NSUNfVEVTVF9PTkxZIHwgRFJNX01P REVfQVRPTUlDX0FMTE9XX01PREVTRVQsIE5VTEwpOwo+ICsJaWYgKHJldCkgewo+ICsJCXJldHVy biByZXQ7Cj4gKwl9Cj4gKwo+ICsJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+ ICsKPiArCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksIENPTU1JVF9BVE9NSUMp Owo+ICsKPiArCW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7Cj4gKwo+ICsJZG9f b3JfZGllKGRybUdldENhcChkYXRhLT5kcm1fZmQsIERSTV9DQVBfQ1VSU09SX1dJRFRILCAmY3Vy c29yX3dpZHRoKSk7Cj4gKwlkb19vcl9kaWUoZHJtR2V0Q2FwKGRhdGEtPmRybV9mZCwgRFJNX0NB UF9DVVJTT1JfSEVJR0hULCAmY3Vyc29yX2hlaWdodCkpOwo+ICsKPiArCWlmICghZGF0YS0+Y3Vy c29yX2ZiW3BpcGVdLmZiX2lkKSB7Cj4gKwkJaWd0X2NyZWF0ZV9jb2xvcl9mYihkYXRhLT5kcm1f ZmQsIGN1cnNvcl93aWR0aCwgY3Vyc29yX2hlaWdodCwKPiArCQkJCURSTV9GT1JNQVRfQVJHQjg4 ODgsCj4gKwkJCQlMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+ICsJCQkJCTEuMCwwLjAsMC4w LAo+ICsJCQkJCSZkYXRhLT5jdXJzb3JfZmJbcGlwZV0pOwo+ICsJfQo+ICsKPiArCWlmICghZGF0 YS0+ZmJbcGlwZV0uZmJfaWQpIHsKPiArCQlpZ3RfY3JlYXRlX2NvbG9yX3BhdHRlcm5fZmIoZGF0 YS0+ZHJtX2ZkLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCj4gKwkJCQkgICAgZGF0 YS0+Zm9ybWF0LAo+ICsJCQkJICAgIGRhdGEtPm1vZGlmaWVyLAo+ICsJCQkJICAgIDAuMCwgMS4w LCAwLjAsICZkYXRhLT5mYltwaXBlXSk7Cj4gKwl9Cj4gKwo+ICsJcmV0ID0gaWd0X2Rpc3BsYXlf dHJ5X2NvbW1pdF9hdG9taWMoJmRhdGEtPmRpc3BsYXksIERSTV9NT0RFX0FUT01JQ19URVNUX09O TFkgfCBEUk1fTU9ERV9BVE9NSUNfQUxMT1dfTU9ERVNFVCwgTlVMTCk7Cj4gKwlpZiAocmV0KSB7 Cj4gKwkJaWd0X2luZm8oIlBsYW5lICVkIHBpcGUgJWQgdHJ5IGNvbW1pdCBmYWlsZWQsIGV4aXRp bmdcbiIsIGksIHBpcGUpOwo+ICsJCWdvdG8gY2xlYW51cDsKPiArCX0KPiArCj4gKwlpZ3RfZGlz cGxheV9jb21taXQyKCZkYXRhLT5kaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKPiArCj4gKwlpID0g MDsKPiArCj4gKwlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKCZkYXRhLT5kaXNwbGF5LCBwaXBlLCBw bGFuZSkgewo+ICsKPiArCQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09S KSB7Cj4gKwkJCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5jdXJzb3JfZmJbcGlwZV0p Owo+ICsJCQlpZ3RfZmJfc2V0X3NpemUoJmRhdGEtPmN1cnNvcl9mYltwaXBlXSwgcGxhbmUsIGN1 cnNvcl93aWR0aCwgY3Vyc29yX2hlaWdodCk7Cj4gKwkJCWlndF9wbGFuZV9zZXRfc2l6ZShwbGFu ZSwgY3Vyc29yX3dpZHRoLCBjdXJzb3JfaGVpZ2h0KTsKPiArCQl9IGVsc2Ugewo+ICsJCQlpZ3Rf cGxhbmVfc2V0X2ZiKHBsYW5lLCAmZGF0YS0+ZmJbcGlwZV0pOwo+ICsJCQlpZ3RfcGxhbmVfc2V0 X3Bvc2l0aW9uKHBsYW5lLCAwLCAwKTsKPiArCQkJaWd0X2ZiX3NldF9zaXplKCZkYXRhLT5mYltw aXBlXSwgcGxhbmUsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSk7Cj4gKwkJCWlndF9w bGFuZV9zZXRfc2l6ZShwbGFuZSwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5KTsKPiAr CQl9Cj4gKwo+ICsJCXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21taXRfYXRvbWljKCZkYXRhLT5k aXNwbGF5LCBEUk1fTU9ERV9BVE9NSUNfVEVTVF9PTkxZIHwgRFJNX01PREVfQVRPTUlDX0FMTE9X X01PREVTRVQsIE5VTEwpOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJaWd0X2luZm8oIlBsYW5lICVk IHBpcGUgJWQgdHJ5IGNvbW1pdCBmYWlsZWQsIGV4aXRpbmdcbiIsIGksIHBpcGUpOwo+ICsJCQln b3RvIGNsZWFudXA7Cj4gKwkJfQo+ICsKPiArCQlpZiAoKytpID49IGRhdGEtPm51bV9wbGFuZXMp Cj4gKwkJCWJyZWFrOwo+ICsJfQo+ICsKPiArCWlmIChncHUpIHsKPiArCQlncHVfbG9hZCgmZGF0 YS0+Z3B1X2NvbnRleHRbcGlwZV0pOwo+ICsJfQo+ICsKPiArCWlndF9kaXNwbGF5X2NvbW1pdDIo JmRhdGEtPmRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+ICsKPiArCWdldF92YmxhbmsoZGF0YS0+ ZGlzcGxheS5kcm1fZmQsIHBpcGUsIERSTV9WQkxBTktfTkVYVE9OTUlTUyk7Cj4gKwo+ICsJaWd0 X3BpcGVfY3JjX2NvbGxlY3RfY3JjKHBpcGVfY3JjLCAmY3JjKTsKPiArCj4gKwlnZXRfdmJsYW5r KGRhdGEtPmRpc3BsYXkuZHJtX2ZkLCBwaXBlLCBEUk1fVkJMQU5LX05FWFRPTk1JU1MpOwo+ICsK PiArCWlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhwaXBlX2NyYywgJmNyYzIpOwo+ICsJaWd0X2Fz c2VydF9jcmNfZXF1YWwoJmNyYywgJmNyYzIpOwo+ICsKPiArCXJldHVybiAwOwo+ICsKPiArY2xl YW51cDoKPiArCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoJmRhdGEtPmRpc3BsYXksIHBpcGUsIHBs YW5lKSB7Cj4gKwkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVMTCk7Cj4gKwl9Cj4gKwlpZ3Rf cmVtb3ZlX2ZiKGRhdGEtPmRpc3BsYXkuZHJtX2ZkLCAmZGF0YS0+ZmJbcGlwZV0pOwo+ICsJZGF0 YS0+ZmJbcGlwZV0uZmJfaWQgPSAwOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gKyNk ZWZpbmUgRFVSQVRJT05fU0VDIDUuMDAKPiArCj4gK3N0YXRpYyBkcm1Nb2RlTW9kZUluZm8gKiBm aW5kX2hpZ2hlc3RfbW9kZShkcm1Nb2RlQ29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCWRy bU1vZGVNb2RlSW5mbyAqaGlnaGVzdF9tb2RlID0gTlVMTDsKPiArCWludCBqOwo+ICsKPiArCWZv ciAoaiA9IDA7IGogPCBjb25uZWN0b3ItPmNvdW50X21vZGVzOyBqKyspIHsKPiArCQlpZiAoIWhp Z2hlc3RfbW9kZSkgewo+ICsJCQloaWdoZXN0X21vZGUgPSAmY29ubmVjdG9yLT5tb2Rlc1tqXTsK PiArCQl9Cj4gKwkJZWxzZSBpZiAoY29ubmVjdG9yLT5tb2Rlc1tqXS52ZGlzcGxheSAmJiBjb25u ZWN0b3ItPm1vZGVzW2pdLmhkaXNwbGF5KSB7Cj4gKwkJCWlmIChoaWdoZXN0X21vZGUtPmhkaXNw bGF5IDwgY29ubmVjdG9yLT5tb2Rlc1tqXS5oZGlzcGxheSkKPiArCQkJCWhpZ2hlc3RfbW9kZSA9 ICZjb25uZWN0b3ItPm1vZGVzW2pdOwo+ICsJCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGhpZ2hl c3RfbW9kZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc3RyZXNzKHN0cnVjdCBkYXRhICpkYXRh LCBib29sIG92ZXJyaWRlLCBib29sIGdwdSwgaW50IGZvcm1hdF9pZHgsIGludCB0aWxpbmdfaWR4 KQo+ICt7Cj4gKwlzdHJ1Y3QgdGltZXNwZWMgc3RhcnQsIGVuZDsKPiArCWlndF9vdXRwdXRfdCAq b3V0cHV0Owo+ICsJaW50IHJldDtpbnQgY3J0Y19pZCA9IDA7Cj4gKwlpbnQgaTsKPiArCWRybU1v ZGVNb2RlSW5mbyAqaGlnaGVzdF9tb2RlID0gTlVMTDsKPiArCj4gKwlkcm1Nb2RlUmVzICptb2Rl X3Jlc291cmNlcyA9IGRybU1vZGVHZXRSZXNvdXJjZXMoZGF0YS0+ZHJtX2ZkKTsKPiArCj4gKwlp ZiAoIW1vZGVfcmVzb3VyY2VzKSB7Cj4gKwkJaWd0X3dhcm4oImRybU1vZGVHZXRSZXNvdXJjZXMg ZmFpbGVkOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ ICsJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZzdGFydCk7Cj4gKwo+ICsJZG8gewo+ ICsJCWZvcl9lYWNoX3BpcGVfd2l0aF9uZXdfb3V0cHV0KCZkYXRhLT5kaXNwbGF5LCBwaXBlLCBv dXRwdXQpIHsKPiArCQkJY3J0Y19pZCA9IDA7Cj4gKwkJCWZvciAoaSA9IDA7IGkgPCBtb2RlX3Jl c291cmNlcy0+Y291bnRfY29ubmVjdG9yczsgaSsrKSB7Cj4gKwkJCQlkcm1Nb2RlQ29ubmVjdG9y ICpjb25uZWN0b3I7Cj4gKwo+ICsJCQkJY29ubmVjdG9yID0gZHJtTW9kZUdldENvbm5lY3RvckN1 cnJlbnQoZGF0YS0+ZHJtX2ZkLAo+ICsJCQkJCQkJICAgICAgIG1vZGVfcmVzb3VyY2VzLT5jb25u ZWN0b3JzW2ldKTsKPiArCQkJCWlmICghY29ubmVjdG9yKSB7Cj4gKwkJCQkJaWd0X3dhcm4oImNv dWxkIG5vdCBnZXQgY29ubmVjdG9yICVpOiAlc1xuIiwgbW9kZV9yZXNvdXJjZXMtPmNvbm5lY3Rv cnNbaV0sIHN0cmVycm9yKGVycm5vKSk7Cj4gKwkJCQkJY29udGludWU7Cj4gKwkJCQl9Cj4gKwo+ ICsJCQkJaWYgKCFjb25uZWN0b3ItPmNvdW50X21vZGVzKSB7Cj4gKwkJCQkJZHJtTW9kZUZyZWVD b25uZWN0b3IoY29ubmVjdG9yKTsKPiArCQkJCQljb250aW51ZTsKPiArCQkJCX0KPiArCj4gKwkJ CQlpZiAoY29ubmVjdG9yLT5jb25uZWN0aW9uID09IERSTV9NT0RFX0NPTk5FQ1RFRCkgewo+ICsJ CQkJCWlmIChjcnRjX2lkID09IHBpcGUpIHsKPiArCQkJCQkJaWYgKCFvdmVycmlkZSkgewo+ICsJ CQkJCQkJaGlnaGVzdF9tb2RlID0gZmluZF9oaWdoZXN0X21vZGUoY29ubmVjdG9yKTsKPiArCQkJ CQkJfQo+ICsJCQkJCQllbHNlCj4gKwkJCQkJCQloaWdoZXN0X21vZGUgPSAmdWhkX21vZGVfNjBo ejsKPiArCj4gKwkJCQkJCWRhdGEtPmZvcm1hdCA9IGZvcm1hdHNbZm9ybWF0X2lkeF07Cj4gKwkJ CQkJCWRhdGEtPm1vZGlmaWVyID0gdGlsaW5nc1t0aWxpbmdfaWR4XTsKPiArCQkJCQkJZGF0YS0+ bnVtX3BsYW5lcyA9IGRhdGEtPmRpc3BsYXkucGlwZXNbcGlwZV0ubl9wbGFuZXM7Cj4gKwo+ICsJ CQkJCQlpZ3RfaW5mbygiUGlwZSAlcyAlZCBwbGFuZXMsIHVzaW5nIG1vZGU6Iiwga21zdGVzdF9w aXBlX25hbWUocGlwZSksCj4gKwkJCQkJCQkJZGF0YS0+bnVtX3BsYW5lcyk7Cj4gKwo+ICsJCQkJ CQlrbXN0ZXN0X2R1bXBfbW9kZShoaWdoZXN0X21vZGUpOwo+ICsKPiArCQkJCQkJcGlwZV9jcmMg PSBpZ3RfcGlwZV9jcmNfbmV3KGRhdGEtPmRybV9mZCwgcGlwZSwKPiArCQkJCQkJCUlOVEVMX1BJ UEVfQ1JDX1NPVVJDRV9BVVRPKTsKPiArCj4gKwkJCQkJCXJldCA9IHBsYW5lX3N0cmVzcyhkYXRh LCBvdXRwdXQsIHBpcGUsIGhpZ2hlc3RfbW9kZSwgZ3B1KTsKPiArCj4gKwkJCQkJCWlndF9waXBl X2NyY19mcmVlKHBpcGVfY3JjKTsKPiArCQkJCQl9Cj4gKwkJCQkJY3J0Y19pZCsrOwo+ICsJCQkJ fQo+ICsJCQkJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsKPiArCQkJfQo+ICsJCQlw aXBlKys7Cj4gKwkJfQo+ICsJCWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmZW5kKTsK PiArCX0gd2hpbGUgKChpZ3RfdGltZV9lbGFwc2VkKCZzdGFydCwgJmVuZCkgPCBEVVJBVElPTl9T RUMpICYmICFyZXQpOwoKCklzIHRoZXJlIGEgcmVhc29uIGZvciB1c2luZyBjbG9ja19nZXR0aW1l IHdpdGggZXhwbGljaXQKQ0xPQ0tfTU9OT1RPTklDIGluc3RlYWQgb2YgaWd0X2dldHRpbWU/IEFu ZCBpZ3RfdGltZV9lbGFwc2VkIGluc3RlYWQKb2YgaWd0X3VudGlsX3RpbWVvdXQ/Cgo+ICsKPiAr CWRybU1vZGVGcmVlUmVzb3VyY2VzKG1vZGVfcmVzb3VyY2VzKTsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgdGVzdChzdHJ1Y3QgZGF0YSAqZGF0YSwgYm9vbCBvdmVycmlkZSwgYm9vbCBjcHUsIGJv b2wgZ3B1KQo+ICt7Cj4gKwlpbnQgaTsKPiArCWludCBudW1iZXJfb2ZfY29yZXMgPSBtaW4oc3lz Y29uZihfU0NfTlBST0NFU1NPUlNfT05MTiksIE1BWF9DT1JFUyk7Cj4gKwlpbnQgZm9ybWF0X2lk eCwgdGlsaW5nX2lkeDsKPiArCj4gKwlpZ3RfZml4dHVyZSB7Cj4gKwkJZm9yIChpID0gMDsgaSA8 IElHVF9NQVhfUElQRVM7IGkrKykgewo+ICsJCQkJZGF0YS0+ZmJbaV0uZmJfaWQgPSAwOwo+ICsJ CQkJZGF0YS0+Y3Vyc29yX2ZiW2ldLmZiX2lkID0gMDsKPiArCQl9Cj4gKwkJaWYgKGdwdSkgewo+ ICsJCQlmb3IgKGkgPSAwOyBpIDwgSUdUX01BWF9QSVBFUzsgaSsrKSB7Cj4gKwkJCQlkYXRhLT5n cHVfY29udGV4dFtpXS5kYXRhID0gZGF0YTsKPiArCQkJCWRhdGEtPmdwdV9jb250ZXh0W2ldLnBp cGUgPSBpOwo+ICsJCQl9Cj4gKwkJfQo+ICsKPiArCQlpZiAoY3B1KSB7Cj4gKwkJCWZvciAoaSA9 IDA7IGkgPCBudW1iZXJfb2ZfY29yZXM7aSsrKSB7Cj4gKwkJCQlkYXRhLT5jcHVfY29udGV4dFtp XS5idWYxID0gbWFsbG9jKEJVRl9TSVpFKTsKPiArCQkJCWRhdGEtPmNwdV9jb250ZXh0W2ldLmJ1 ZjIgPSBtYWxsb2MoQlVGX1NJWkUpOwo+ICsJCQkJZGF0YS0+Y3B1X2NvbnRleHRbaV0uaWQgPSBp Owo+ICsJCQkJZGF0YS0+Y3B1X2NvbnRleHRbaV0uZGF0YSA9IGRhdGE7Cj4gKwkJCQlwdGhyZWFk X2NyZWF0ZSgmZGF0YS0+Y3B1X3RocmVhZFtpXSwgTlVMTCwgY3B1X2xvYWQsICh2b2lkKikmZGF0 YS0+Y3B1X2NvbnRleHRbaV0pOwo+ICsJCQl9Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWZvciAoZm9y bWF0X2lkeCA9IDA7IGZvcm1hdF9pZHggPCBOX0ZPUk1BVFM7IGZvcm1hdF9pZHgrKykgewo+ICsJ CWZvciAodGlsaW5nX2lkeCA9IDA7IHRpbGluZ19pZHggPCBOX1RJTElOR19NRVRIT0RTOyB0aWxp bmdfaWR4KyspIHsKPiArCj4gKwkJCWlndF9zdWJ0ZXN0X2YoInN0cmVzcyVzJXMlcy0lcy0lcyIs Cj4gKwkJCQkgICAgICBvdmVycmlkZSA9PSBmYWxzZSA/ICIiIDogIi1tb2RlLW92ZXJyaWRlIiwK PiArCQkJCSAgICAgIGNwdSA9PSBmYWxzZSA/ICIiIDogIi1jcHUtbG9hZCIsCj4gKwkJCQkgICAg ICBncHUgPT0gZmFsc2UgPyAiIiA6ICItZ3B1LWxvYWQiLAo+ICsJCQkJICAgICAgZm9ybWF0X3N0 cihmb3JtYXRfaWR4KSwKPiArCQkJCSAgICAgIHRpbGluZ19zdHIodGlsaW5nX2lkeCkpCgoKRGlk IHlvdSBtZWFuIHRvIGhhdmUgc29tZSBicmFjZXMgaGVyZT8KCgotLSAKUGV0cmkgTGF0dmFsYQoK Cgo+ICsKPiArCQkJc3RyZXNzKGRhdGEsIG92ZXJyaWRlLCBncHUsIGZvcm1hdF9pZHgsIHRpbGlu Z19pZHgpOwo+ICsKPiArCQkJLyoKPiArCQkJICogQXMgd2UgY2hhbmdlIHRpbGluZy9mb3JtYXQg d2UgbmVlZCBhIG5ldyBGQgo+ICsJCQkgKi8KPiArCQkJZm9yIChpID0gMDsgaSA8IElHVF9NQVhf UElQRVM7IGkrKykgewo+ICsJCQkJaWYgKGRhdGEtPmZiW2ldLmZiX2lkKSB7Cj4gKwkJCQkJaWd0 X3JlbW92ZV9mYihkYXRhLT5kaXNwbGF5LmRybV9mZCwgJmRhdGEtPmZiW2ldKTsKPiArCQkJCQlk YXRhLT5mYltpXS5mYl9pZCA9IDA7Cj4gKwkJCQl9Cj4gKwkJCQlpZiAoZGF0YS0+Y3Vyc29yX2Zi W2ldLmZiX2lkKSB7Cj4gKwkJCQkJaWd0X3JlbW92ZV9mYihkYXRhLT5kaXNwbGF5LmRybV9mZCwg JmRhdGEtPmN1cnNvcl9mYltpXSk7Cj4gKwkJCQkJZGF0YS0+Y3Vyc29yX2ZiW2ldLmZiX2lkID0g MDsKPiArCQkJCX0KPiArCQkJfQo+ICsJCX0KPiArCX0KPiArCj4gKwlpZ3RfZml4dHVyZSB7Cj4g KwkJaWYgKGNwdSkgewo+ICsJCQlmb3IgKGkgPSAwOyBpIDwgbnVtYmVyX29mX2NvcmVzO2krKykg ewo+ICsJCQkJZGF0YS0+Y3B1X3RocmVhZF9zdG9wW2ldID0gdHJ1ZTsKPiArCQkJCXB0aHJlYWRf am9pbihkYXRhLT5jcHVfdGhyZWFkW2ldLCBOVUxMKTsKPiArCQkJfQo+ICsJCQlmb3IgKGkgPSAw O2kgPCBudW1iZXJfb2ZfY29yZXM7IGkrKykgewo+ICsJCQkJZnJlZShkYXRhLT5jcHVfY29udGV4 dFtpXS5idWYxKTsKPiArCQkJCWZyZWUoZGF0YS0+Y3B1X2NvbnRleHRbaV0uYnVmMik7Cj4gKwkJ CX0KPiArCQl9Cj4gKwl9Cj4gK30KPiArCj4gKwo+ICtzdHJ1Y3QgZGF0YSBkYXRhID0gewo+ICsJ Lm51bV9wbGFuZXMgPSA3LAo+ICsJLmZvcm1hdCA9IERSTV9GT1JNQVRfWFJHQjg4ODgsCj4gKwku bW9kaWZpZXIgPSBEUk1fRk9STUFUX01PRF9MSU5FQVIsCj4gKwkuZGV2aWQgPSAwLAo+ICt9Owo+ ICsKPiArCj4gK2lndF9tYWluCj4gK3sKPiArCWJvb2wgbW9kZV9vdmVycmlkZSA9IGZhbHNlOwo+ ICsJYm9vbCBjcHVfbG9hZCA9IGZhbHNlOwo+ICsJYm9vbCBncHVfbG9hZCA9IGZhbHNlOwo+ICsK PiArCWlndF9maXh0dXJlIHsKPiArCQlkYXRhLmRybV9mZCA9IGRhdGEuZGlzcGxheS5kcm1fZmQg PSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9BTlkpOwo+ICsKPiArCQlrbXN0ZXN0X3Nl dF92dF9ncmFwaGljc19tb2RlKCk7Cj4gKwo+ICsJCWlndF9kaXNwbGF5X3JlcXVpcmUoJmRhdGEu ZGlzcGxheSwgZGF0YS5kaXNwbGF5LmRybV9mZCk7Cj4gKwkJaWd0X3JlcXVpcmUoZGF0YS5kaXNw bGF5LmlzX2F0b21pYyk7Cj4gKwkJaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRwdXQoJmRhdGEuZGlz cGxheSk7Cj4gKwl9Cj4gKwo+ICsJdGVzdCgmZGF0YSwgbW9kZV9vdmVycmlkZSwgY3B1X2xvYWQs IGdwdV9sb2FkKTsKPiArCj4gKwljcHVfbG9hZCA9IHRydWU7Cj4gKwlncHVfbG9hZCA9IHRydWU7 Cj4gKwo+ICsJdGVzdCgmZGF0YSwgbW9kZV9vdmVycmlkZSwgY3B1X2xvYWQsIGdwdV9sb2FkKTsK PiArCj4gKwltb2RlX292ZXJyaWRlID0gdHJ1ZTsKPiArCWNwdV9sb2FkID0gZmFsc2U7Cj4gKwln cHVfbG9hZCA9IGZhbHNlOwo+ICsKPiArCXRlc3QoJmRhdGEsIG1vZGVfb3ZlcnJpZGUsIGNwdV9s b2FkLCBncHVfbG9hZCk7Cj4gKwo+ICsJY3B1X2xvYWQgPSB0cnVlOwo+ICsJZ3B1X2xvYWQgPSB0 cnVlOwo+ICsKPiArCXRlc3QoJmRhdGEsIG1vZGVfb3ZlcnJpZGUsIGNwdV9sb2FkLCBncHVfbG9h ZCk7Cj4gKwo+ICsJaWd0X2ZpeHR1cmUgewo+ICsJCWlndF9kaXNwbGF5X2ZpbmkoJmRhdGEuZGlz cGxheSk7Cj4gKwl9Cj4gK30KPiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKPiBkaWZmIC0t Z2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAo+IGluZGV4IDkwMTVm ODA5Li5jNTg2NjQyYyAxMDA2NDQKPiAtLS0gYS90ZXN0cy9tZXNvbi5idWlsZAo+ICsrKyBiL3Rl c3RzL21lc29uLmJ1aWxkCj4gQEAgLTQ2LDYgKzQ2LDcgQEAgdGVzdF9wcm9ncyA9IFsKPiAgCSdr bXNfcGxhbmVfbG93cmVzJywKPiAgCSdrbXNfcGxhbmVfbXVsdGlwbGUnLAo+ICAJJ2ttc19wbGFu ZV9zY2FsaW5nJywKPiArCSdrbXNfcGxhbmVfc3RyZXNzJywKPiAgCSdrbXNfcHJvcF9ibG9iJywK PiAgCSdrbXNfcHJvcGVydGllcycsCj4gIAkna21zX3BzcicsCj4gLS0gCj4gMi4xNy4xCj4gCj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBpZ3QtZGV2 IG1haWxpbmcgbGlzdAo+IGlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0 CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==