From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 391516E114 for ; Wed, 16 Jan 2019 06:58:29 +0000 (UTC) Message-ID: From: Dhinakaran Pandiyan Date: Tue, 15 Jan 2019 22:58:21 -0800 In-Reply-To: <59ebe358861deb3f999e01306cc79d49e73491bd.camel@intel.com> References: <20190103143641.20200-1-jose.souza@intel.com> <20190103143641.20200-9-jose.souza@intel.com> <586981e862787b6cf77903c813a01692aa89f5ea.camel@intel.com> <59ebe358861deb3f999e01306cc79d49e73491bd.camel@intel.com> Mime-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t v2 9/9] test: Add PSR2 selective update tests 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: "Souza, Jose" , "igt-dev@lists.freedesktop.org" Cc: "Vivi, Rodrigo" List-ID: T24gTW9uLCAyMDE5LTAxLTE0IGF0IDE0OjQ4IC0wODAwLCBTb3V6YSwgSm9zZSB3cm90ZToKPiBP biBGcmksIDIwMTktMDEtMTEgYXQgMTU6MTUgLTA4MDAsIERoaW5ha2FyYW4gUGFuZGl5YW4gd3Jv dGU6Cj4gPiBPbiBUaHUsIDIwMTktMDEtMDMgYXQgMDY6MzYgLTA4MDAsIEpvc8OpIFJvYmVydG8g ZGUgU291emEgd3JvdGU6Cj4gPiA+IFRoaXMgdGVzdHMgY2hlY2tzIGlmIGhhcmR3YXJlIGlzIGFi bGUgdG8gZG8gc2VsZWN0aXZlIHVwZGF0ZSB3aGVuCj4gPiA+IHNjcmVlbiBjaGFuZ2VzLgo+ID4g PiBQU1IyIGRvbid0IHRyaWdnZXIgaW50ZXJydXB0aW9ucyBhbmQgdGhlICdQU1IyIFNVIHN0YXR1 cycKPiA+ID4gcmVnaXN0ZXIKPiA+ID4gaXMgbm90IGtlcHQgbG9hZGVkIGFsbCB0aGUgdGltZXMs IHNvIGl0IGlzIG5lY2Vzc2FyeSBrZWVwIHBvbGxpbmcKPiA+ID4gUFNSIHN0YXR1cyBkZWJ1Z2Zz IHVudGlsIHRob3NlIHZhbHVlcyBhcmUgbG9hZGVkLgo+ID4gCj4gPiBEb2VzIHRoaXMgbWVhbiBm bGlwcGluZyBvbmNlIHdoaWxlIHBvbGxpbmcgU1Ugc3RhdHVzIHJlZ2lzdGVycyBpcwo+ID4gbm90 Cj4gPiBzdWZmaWNpZW50Pwo+IAo+IEFmdGVyIGEgZmxpcCBpbiBERUVQX1NMRUVQIGl0IHdpbGwg ZG8gYSBQU1IgZXhpdCBhbmQgUFNSIGFjdGl2ZQo+IHNlcXVlbmNlLCBpdCB3aWxsIG9ubHkgZG8g YSBzZWxlY3RpdmUgdXBkYXRlIHdoaWxlIGluIFNMRUVQIHN0YXRlCj4gdGhhdAo+IGlzIHdoeSBt b3JlIHRoYW4gb25lIGZsaXAgaXMgbmVjZXNzYXJ5IGFuZCBpdCB3aWxsIHZhcnkgZGVwZW5kaW5n IG9mCj4gdGhlIHZhbHVlcyB0aGF0IGlzIHNldCB0byBmcmFtZXMgdG8gYWN0aXZhdGUgUFNSIGFu ZCBmcmFtZXMgdG8gZW50ZXIKPiBkZWVwIHNsZWVwLgo+IApJIGFtIHNlZWluZyB0aGF0IHRoZSBi bG9jayBjb3VudHMgYXJlIHplcm8gZXZlbiB3aGVuIGEgZmxpcCBpcyBkb25lCndpdGggUFNSMl9T VEFUVVMgc2hvd2luZyBTTEVFUCBzdGF0ZS4gTm90IHN1cmUgd2hhdCdzIGdvaW5nIG9uLgoKPiA+ IAo+ID4gCj4gPiA+IFdoZW4gbG9hZGVkIGl0IGlzIGNvbXBhcmVkIHdpdGggdGhlIGV4cGVjdGVk IHZhbHVlLCBpZiBtYXRjaGVzCj4gPiA+IHRoZSBwb2xsaW5nIGlzIHN0b3BwZWQgYW5kIHRoZSB0 ZXN0IHBhc3NlZCBvdGhlcndpc2UgaXQgd2lsbAo+ID4gPiB3YWl0IHVudGlsIGZhaWxfdGltZXJm ZCB0byBleHBpcmUgdG8gZmFpbCB0aGUgdGVzdC4KPiA+IAo+ID4gVGhpcyBwYXRjaCB3YXJyYW50 cyBzb21lIGV4cGxhbmF0aW9uIGFib3V0IHRoZSB0aW1lb3V0cyB1c2VkIGFuZAo+ID4gaG93Cj4g PiB0aGV5IHdlcmUgc2VsZWN0ZWQuCj4gCj4gVGhlIGZsaXAgdGltZW91dCBpcyBhIHZhbHVlIHRv IGFjaGlldmUgMTVoeiBmbGlwcyBhbmQgdGhlIGVycm9yIAo+IHRpbWVvdXQKPiB3aWxsIGJlIHJl bW92ZWQgYXMgeW91IHN1Z2dlc3RlZCBiZWxsb3csIEkgd2lsbCBhZGQgYSBjb21tZW50IHdoZW4K PiBzZXR0aW5nIHRoZSBpbnRlcnZhbCB0byB0aGUgZmxpcCB0aW1lcmZkLgo+IAo+ID4gCj4gPiA+ IHYyOiBVc2luZyBuZXcgU1UgYmxvY2tzIGRlYnVnZnMgb3V0cHV0Cj4gPiA+IAo+ID4gPiBDYzog Um9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+ID4gPiBDYzogRGhpbmFrYXJh biBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+Cj4gPiA+IFNpZ25lZC1v ZmYtYnk6IEpvc8OpIFJvYmVydG8gZGUgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgo+ID4g PiAtLS0KPiA+ID4gIGxpYi9pZ3RfcHNyLmMgICAgICAgICAgfCAgMjMgKysrCj4gPiA+ICBsaWIv aWd0X3Bzci5oICAgICAgICAgIHwgICAxICsKPiA+ID4gIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMg fCAgIDEgKwo+ID4gPiAgdGVzdHMva21zX3BzcjJfc3UuYyAgICB8IDM2Mgo+ID4gPiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gPiAgdGVzdHMvbWVzb24uYnVp bGQgICAgICB8ICAgMSArCj4gPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDM4OCBpbnNlcnRpb25zKCsp Cj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX3BzcjJfc3UuYwo+ID4gPiAKPiA+ ID4gZGlmZiAtLWdpdCBhL2xpYi9pZ3RfcHNyLmMgYi9saWIvaWd0X3Bzci5jCj4gPiA+IGluZGV4 IDBmNGIyZTIzLi5hOGI5ZTRjZSAxMDA2NDQKPiA+ID4gLS0tIGEvbGliL2lndF9wc3IuYwo+ID4g PiArKysgYi9saWIvaWd0X3Bzci5jCj4gPiA+IEBAIC0yMzQsMyArMjM0LDI2IEBAIGJvb2wgcHNy Ml93YWl0X3VwZGF0ZShpbnQgZGVidWdmc19mZCkKPiA+ID4gIHsKPiA+ID4gIAlyZXR1cm4gaWd0 X3dhaXQocHNyMl9zdGF0dXNfdXBkYXRlKGRlYnVnZnNfZmQpLCA0MCwgMTApOwo+ID4gPiAgfQo+ ID4gPiArCj4gPiA+ICsjZGVmaW5lIFBTUjJfU1VfQkxPQ0tfU1RSX0xPT0tVUCAiUFNSMiBTVSBi bG9ja3M6XG4wXHQiCj4gPiA+ICsKPiA+ID4gK2Jvb2wgcHNyMl9yZWFkX2xhc3RfbnVtX3N1X2Js b2Nrc192YWwoaW50IGRlYnVnZnNfZmQsIHVpbnQxNl90Cj4gPiA+ICpudW1fc3VfYmxvY2tzKQo+ ID4gPiArewo+ID4gPiArCWNoYXIgYnVmW1BTUl9TVEFUVVNfTUFYX0xFTl07Cj4gPiA+ICsJY2hh ciAqc3RyOwo+ID4gPiArCWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlyZXQgPSBpZ3RfZGVidWdm c19zaW1wbGVfcmVhZChkZWJ1Z2ZzX2ZkLAo+ID4gPiAiaTkxNV9lZHBfcHNyX3N0YXR1cyIsIGJ1 ZiwKPiA+ID4gKwkJCQkgICAgICBzaXplb2YoYnVmKSk7Cj4gPiA+ICsJaWYgKHJldCA8IDApCj4g PiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ID4gKwo+ID4gPiArCXN0ciA9IHN0cnN0cihidWYsIFBT UjJfU1VfQkxPQ0tfU1RSX0xPT0tVUCk7Cj4gPiA+ICsJaWYgKCFzdHIpCj4gPiA+ICsJCXJldHVy biBmYWxzZTsKPiA+ID4gKwo+ID4gPiArCXN0ciA9ICZzdHJbc3RybGVuKFBTUjJfU1VfQkxPQ0tf U1RSX0xPT0tVUCldOwo+ID4gPiArCSpudW1fc3VfYmxvY2tzID0gKHVpbnQxNl90KXN0cnRvbChz dHIsIE5VTEwsIDEwKTsKPiA+ID4gKwo+ID4gPiArCXJldHVybiB0cnVlOwo+ID4gPiArfQo+ID4g PiBkaWZmIC0tZ2l0IGEvbGliL2lndF9wc3IuaCBiL2xpYi9pZ3RfcHNyLmgKPiA+ID4gaW5kZXgg MmI4ZDFhOTAuLjM0OWViMGMyIDEwMDY0NAo+ID4gPiAtLS0gYS9saWIvaWd0X3Bzci5oCj4gPiA+ ICsrKyBiL2xpYi9pZ3RfcHNyLmgKPiA+ID4gQEAgLTQxLDUgKzQxLDYgQEAgYm9vbCBwc3IyX3dh aXRfdXBkYXRlKGludCBkZWJ1Z2ZzX2ZkKTsKPiA+ID4gIGJvb2wgcHNyMl9lbmFibGUoaW50IGRl YnVnZnNfZmQpOwo+ID4gPiAgYm9vbCBwc3IyX2Rpc2FibGUoaW50IGRlYnVnZnNfZmQpOwo+ID4g PiAgYm9vbCBwc3IyX3Npbmtfc3VwcG9ydChpbnQgZGVidWdmc19mZCk7Cj4gPiA+ICtib29sIHBz cjJfcmVhZF9sYXN0X251bV9zdV9ibG9ja3NfdmFsKGludCBkZWJ1Z2ZzX2ZkLCB1aW50MTZfdAo+ ID4gPiAqbnVtX3N1X2Jsb2Nrcyk7Cj4gPiA+ICAKPiA+ID4gICNlbmRpZgo+ID4gPiBkaWZmIC0t Z2l0IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiA+ ID4gaW5kZXggZWVkZGUxZTguLjNjNzllZWMwIDEwMDY0NAo+ID4gPiAtLS0gYS90ZXN0cy9NYWtl ZmlsZS5zb3VyY2VzCj4gPiA+ICsrKyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPiA+ID4gQEAg LTc4LDYgKzc4LDcgQEAgVEVTVFNfcHJvZ3MgPSBcCj4gPiA+ICAJa21zX3BsYW5lX3NjYWxpbmcg XAo+ID4gPiAgCWttc19wcm9wZXJ0aWVzIFwKPiA+ID4gIAlrbXNfcHNyIFwKPiA+ID4gKwlrbXNf cHNyMl9zdSBcCj4gPiA+ICAJa21zX3B3cml0ZV9jcmMgXAo+ID4gPiAgCWttc19ybWZiIFwKPiA+ ID4gIAlrbXNfcm90YXRpb25fY3JjIFwKPiA+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19wc3Iy X3N1LmMgYi90ZXN0cy9rbXNfcHNyMl9zdS5jCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g PiA+IGluZGV4IDAwMDAwMDAwLi42N2MwMmYyNQo+ID4gPiAtLS0gL2Rldi9udWxsCj4gPiA+ICsr KyBiL3Rlc3RzL2ttc19wc3IyX3N1LmMKPiA+ID4gQEAgLTAsMCArMSwzNjIgQEAKPiA+ID4gKy8q Cj4gPiA+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gPiArICoK PiA+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uCj4gPiA+IG9idGFpbmluZyBhCj4gPiA+ICsgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCj4gPiA+ICJTb2Z0 d2FyZSIpLAo+ID4gPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nCj4gPiA+IHdpdGhvdXQKPiA+ID4gbGltaXRhdGlvbgo+ID4gPiArICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsCj4gPiA+IHN1YmxpY2Vuc2UsCj4gPiA+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhl IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8KPiA+ID4gd2hvbQo+ID4gPiB0aGUK PiA+ID4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nCj4gPiA+IGNvbmRpdGlvbnM6Cj4gPiA+ICsgKgo+ID4gPiArICogVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UKPiA+ID4gKGluY2x1 ZGluZwo+ID4gPiB0aGUgbmV4dAo+ID4gPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsCj4gPiA+IHBvcnRpb25zIG9mIHRoZQo+ID4g PiArICogU29mdHdhcmUuCj4gPiA+ICsgKgo+ID4gPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCj4gPiA+IEtJTkQsCj4gPiA+IEVY UFJFU1MgT1IKPiA+ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YKPiA+ID4gTUVSQ0hBTlRBQklMSVRZLAo+ID4gPiArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PCj4g PiA+IEVWRU5UIFNIQUxMCj4gPiA+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVS UyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKPiA+ID4gREFNQUdFUwo+ID4gPiBPUiBPVEhFUgo+ ID4gPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUgo+ID4gPiBPVEhFUldJU0UsCj4gPiA+IEFSSVNJTkcKPiA+ID4gKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKPiA+ID4g T1RIRVIgREVBTElOR1MKPiA+ID4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiA+ID4gKyAqCj4gPiA+ ICsgKi8KPiA+ID4gKwo+ID4gPiArI2luY2x1ZGUgImlndC5oIgo+ID4gPiArI2luY2x1ZGUgImln dF9zeXNmcy5oIgo+ID4gPiArI2luY2x1ZGUgImlndF9wc3IuaCIKPiA+ID4gKyNpbmNsdWRlIDxl cnJuby5oPgo+ID4gPiArI2luY2x1ZGUgPHBvbGwuaD4KPiA+ID4gKyNpbmNsdWRlIDxwdGhyZWFk Lmg+Cj4gPiA+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPgo+ID4gPiArI2luY2x1ZGUgPHN0ZGlvLmg+ Cj4gPiA+ICsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gPiA+ICsjaW5jbHVkZSA8c3lzL3RpbWVyZmQu aD4KPiA+ID4gKyNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIKPiA+ID4gKwo+ID4gPiArSUdUX1RF U1RfREVTQ1JJUFRJT04oIlRlc3QgUFNSMiBzZWxlY3RpdmUgdXBkYXRlIik7Cj4gPiA+ICsKPiA+ ID4gKyNkZWZpbmUgU1FVQVJFX1NJWkUgMTAwCj4gPiA+ICsKPiA+ID4gK2VudW0gb3BlcmF0aW9u cyB7Cj4gPiA+ICsJUEFHRV9GTElQLAo+ID4gPiArCUZST05UQlVGRkVSLAo+ID4gPiArCUxBU1QK PiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBjb25zdCBjaGFyICpvcF9zdHIoZW51bSBv cGVyYXRpb25zIG9wKQo+ID4gPiArewo+ID4gPiArCXN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qg bmFtZVtdID0gewo+ID4gPiArCQlbUEFHRV9GTElQXSA9ICJwYWdlX2ZsaXAiLAo+ID4gPiArCQlb RlJPTlRCVUZGRVJdID0gImZyb250YnVmZmVyIgo+ID4gPiArCX07Cj4gPiA+ICsKPiA+ID4gKwly ZXR1cm4gbmFtZVtvcF07Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3R5cGVkZWYgc3RydWN0IHsK PiA+ID4gKwlzdHJ1Y3QgaWd0X2ZiIGZiWzJdOwo+ID4gPiArCXN0cnVjdCBwb2xsZmQgcG9sbGZk c1syXTsKPiA+ID4gKwlwdGhyZWFkX3QgdGhyZWFkX2lkOwo+ID4gPiArCWludCBkcm1fZmQ7Cj4g PiA+ICsJaW50IGRlYnVnZnNfZmQ7Cj4gPiA+ICsJaW50IGZsaXBfdGltZXJmZDsKPiA+ID4gKwlp bnQgZmFpbF90aW1lcmZkOwo+ID4gPiArCXVpbnQzMl90IGNoYW5nZXM7Cj4gPiA+ICsJdm9sYXRp bGUgYm9vbCBydW47Cj4gPiA+ICsJdm9sYXRpbGUgYm9vbCBzdWNlc3M7Cj4gPiA+ICsKPiA+ID4g KwllbnVtIG9wZXJhdGlvbnMgb3A7Cj4gPiA+ICsJdWludDMyX3QgZGV2aWQ7Cj4gPiA+ICsJdWlu dDMyX3QgY3J0Y19pZDsKPiA+ID4gKwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7Cj4gPiA+ICsJZHJt X2ludGVsX2J1Zm1nciAqYnVmbWdyOwo+ID4gPiArCWludCBtb2Rfc2l6ZTsKPiA+ID4gKwlpbnQg bW9kX3N0cmlkZTsKPiA+ID4gKwlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7Cj4gPiA+ICsJaWd0X291 dHB1dF90ICpvdXRwdXQ7Cj4gPiA+ICt9IGRhdGFfdDsKPiA+ID4gKwo+ID4gPiArc3RhdGljIHZv aWQgc2V0dXBfb3V0cHV0KGRhdGFfdCAqZGF0YSkKPiA+ID4gK3sKPiA+ID4gKwlpZ3RfZGlzcGxh eV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7Cj4gPiA+ICsJaWd0X291dHB1dF90ICpvdXRw dXQ7Cj4gPiA+ICsJZW51bSBwaXBlIHBpcGU7Cj4gPiA+ICsKPiA+ID4gKwlmb3JfZWFjaF9waXBl X3dpdGhfdmFsaWRfb3V0cHV0KGRpc3BsYXksIHBpcGUsIG91dHB1dCkgewo+ID4gPiArCQlkcm1N b2RlQ29ubmVjdG9yUHRyIGMgPSBvdXRwdXQtPmNvbmZpZy5jb25uZWN0b3I7Cj4gPiA+ICsKPiA+ ID4gKwkJaWYgKGMtPmNvbm5lY3Rvcl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9lRFApCj4g PiA+ICsJCQljb250aW51ZTsKPiA+ID4gKwo+ID4gPiArCQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91 dHB1dCwgcGlwZSk7Cj4gPiA+ICsJCWRhdGEtPmNydGNfaWQgPSBvdXRwdXQtPmNvbmZpZy5jcnRj LT5jcnRjX2lkOwo+ID4gPiArCQlkYXRhLT5vdXRwdXQgPSBvdXRwdXQ7Cj4gPiA+ICsJCWRhdGEt Pm1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7Cj4gPiA+ICsKPiA+ID4gKwkJcmV0 dXJuOwo+ID4gPiArCX0KPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgZGlzcGxh eV9pbml0KGRhdGFfdCAqZGF0YSkKPiA+ID4gK3sKPiA+ID4gKwlpZ3RfZGlzcGxheV9yZXF1aXJl KCZkYXRhLT5kaXNwbGF5LCBkYXRhLT5kcm1fZmQpOwo+ID4gPiArCXNldHVwX291dHB1dChkYXRh KTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgZGlzcGxheV9maW5pKGRhdGFf dCAqZGF0YSkKPiA+ID4gK3sKPiA+ID4gKwlpZ3RfZGlzcGxheV9maW5pKCZkYXRhLT5kaXNwbGF5 KTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQgKmRlYnVnZnNfdGhyZWFkKHZv aWQgKnB0cikKPiA+ID4gK3sKPiA+ID4gKwlkYXRhX3QgKmRhdGEgPSBwdHI7Cj4gPiA+ICsJdWlu dDE2X3QgZXhwZWN0ZWRfbnVtX3N1X2Jsb2NrczsKPiA+ID4gKwo+ID4gPiArCS8qIGVhY2ggc2Vs ZWN0aXZlIHVwZGF0ZSBibG9jayBpcyA0IGxpbmVzIHRhbGwgKi8KPiA+ID4gKwlleHBlY3RlZF9u dW1fc3VfYmxvY2tzID0gU1FVQVJFX1NJWkUgLyA0Owo+ID4gPiArCWV4cGVjdGVkX251bV9zdV9i bG9ja3MgKz0gU1FVQVJFX1NJWkUgJSA0ID8gMSA6IDA7Cj4gPiA+ICsKPiA+ID4gKwl3aGlsZSAo ZGF0YS0+cnVuKSB7Cj4gPiA+ICsJCXVpbnQxNl90IG51bV9zdV9ibG9ja3M7Cj4gPiA+ICsJCWJv b2wgcjsKPiA+ID4gKwo+ID4gPiArCQlyID0gcHNyMl9yZWFkX2xhc3RfbnVtX3N1X2Jsb2Nrc192 YWwoZGF0YS0+ZGVidWdmc19mZCwKPiA+ID4gKwkJCQkJCSAgICAgJm51bV9zdV9ibG9ja3MpOwo+ ID4gPiArCQlpZiAociAmJiBudW1fc3VfYmxvY2tzID09IGV4cGVjdGVkX251bV9zdV9ibG9ja3Mp IHsKPiA+ID4gKwkJCWRhdGEtPnJ1biA9IGZhbHNlOwo+ID4gPiArCQkJZGF0YS0+c3VjZXNzID0g dHJ1ZTsKPiA+ID4gKwkJCWJyZWFrOwo+ID4gPiArCQl9Cj4gPiA+ICsKPiA+ID4gKwkJdXNsZWVw KDEpOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gCj4gPiBXaGF0IGhhcHBlbnMgaWYgeW91IHN0YXJ0 IHRoaXMgdGhyZWFkIGFuZCB0aGVuIGZsaXAganVzdCBvbmNlPyBEbwo+ID4geW91Cj4gPiBzZWUg dGhlIGV4cGVjdGVkIGJsb2NrIGNvdW50IGluIGRlYnVnZnMgYXQgc29tZSBpbnN0YW5jZSBhZnRl ciB0aGUKPiA+IGZsaXA/Cj4gCj4gQXMgc2FpZCBhYm92ZSBubywgYXMgd2Ugd2FpdCBmb3IgREVF UF9TTEVFUCBzdGF0ZSBhbmQgZXZlbiBpbiBTTEVFUAo+IHN0YXRlIHNvbWV0aW1lcyBIVyBkZWNp ZGVzIHRvIGdvIHRvIFBTUiBleGl0IGFuZCBQU1IgYWN0aXZlIGZsb3cKPiBpbnN0ZWFkIG9mIGRv IGEgc2VsZWN0aXZlIHVwZGF0ZS4KPiAKPiA+IAo+ID4gPiArCXJldHVybiBOVUxMOwo+ID4gPiAr fQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBwcmVwYXJlKGRhdGFfdCAqZGF0YSkKPiA+ID4g K3sKPiA+ID4gKwlzdHJ1Y3QgaXRpbWVyc3BlYyBpbnRlcnZhbDsKPiA+ID4gKwlpZ3RfcGxhbmVf dCAqcHJpbWFyeTsKPiA+ID4gKwlpbnQgcjsKPiA+ID4gKwo+ID4gPiArCS8qIGFsbCBncmVlbiBm cmFtZSAqLwo+ID4gPiArCWlndF9jcmVhdGVfY29sb3JfZmIoZGF0YS0+ZHJtX2ZkLAo+ID4gPiAr CQkJICAgIGRhdGEtPm1vZGUtPmhkaXNwbGF5LCBkYXRhLT5tb2RlLT52ZGlzcGxheSwKPiA+ID4g KwkJCSAgICBEUk1fRk9STUFUX1hSR0I4ODg4LAo+ID4gPiArCQkJICAgIExPQ0FMX0RSTV9GT1JN QVRfTU9EX05PTkUsCj4gPiA+ICsJCQkgICAgMC4wLCAxLjAsIDAuMCwKPiA+ID4gKwkJCSAgICAm ZGF0YS0+ZmJbMF0pOwo+ID4gPiArCj4gPiA+ICsJaWYgKGRhdGEtPm9wID09IFBBR0VfRkxJUCkg ewo+ID4gPiArCQljYWlyb190ICpjcjsKPiA+ID4gKwo+ID4gPiArCQlpZ3RfY3JlYXRlX2NvbG9y X2ZiKGRhdGEtPmRybV9mZCwKPiA+ID4gKwkJCQkgICAgZGF0YS0+bW9kZS0+aGRpc3BsYXksIGRh dGEtPm1vZGUtCj4gPiA+ID4gdmRpc3BsYXksCj4gPiA+IAo+ID4gPiArCQkJCSAgICBEUk1fRk9S TUFUX1hSR0I4ODg4LAo+ID4gPiArCQkJCSAgICBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+ ID4gPiArCQkJCSAgICAwLjAsIDEuMCwgMC4wLAo+ID4gPiArCQkJCSAgICAmZGF0YS0+ZmJbMV0p Owo+ID4gPiArCj4gPiA+ICsJCWNyID0gaWd0X2dldF9jYWlyb19jdHgoZGF0YS0+ZHJtX2ZkLCAm ZGF0YS0+ZmJbMV0pOwo+ID4gPiArCQkvKiBhIHdoaXRlIHNxdWFyZSAqLwo+ID4gPiArCQlpZ3Rf cGFpbnRfY29sb3JfYWxwaGEoY3IsIDAsIDAsIFNRVUFSRV9TSVpFLAo+ID4gPiBTUVVBUkVfU0la RSwKPiA+ID4gKwkJCQkgICAgICAxLjAsIDEuMCwgMS4wLCAxLjApOwo+ID4gPiArCQlpZ3RfcHV0 X2NhaXJvX2N0eChkYXRhLT5kcm1fZmQsICAmZGF0YS0+ZmJbMV0sIGNyKTsKPiA+ID4gKwl9Cj4g PiA+ICsKPiA+ID4gKwlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShkYXRhLT5v dXRwdXQsCj4gPiA+ICsJCQkJCSAgICBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiA+ID4gKwlp Z3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksIE5VTEwpOwo+ID4gPiArCj4gPiA+ICsJaWd0X2Rpc3Bs YXlfY29tbWl0KCZkYXRhLT5kaXNwbGF5KTsKPiA+ID4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1h cnksICZkYXRhLT5mYlswXSk7Cj4gPiA+ICsJaWd0X2Rpc3BsYXlfY29tbWl0KCZkYXRhLT5kaXNw bGF5KTsKPiA+ID4gKwo+ID4gPiArCWlndF9hc3NlcnQocHNyMl93YWl0X2RlZXBfc2xlZXAoZGF0 YS0+ZGVidWdmc19mZCkpOwo+ID4gPiArCj4gPiA+ICsJZGF0YS0+cnVuID0gdHJ1ZTsKPiA+ID4g KwlkYXRhLT5zdWNlc3MgPSBmYWxzZTsKPiA+ID4gKwlkYXRhLT5jaGFuZ2VzID0gMDsKPiA+ID4g Kwo+ID4gPiArCXIgPSBwdGhyZWFkX2NyZWF0ZSgmZGF0YS0+dGhyZWFkX2lkLCBOVUxMLCBkZWJ1 Z2ZzX3RocmVhZCwKPiA+ID4gZGF0YSk7Cj4gPiA+ICsJaWYgKHIpCj4gPiA+ICsJCWlndF93YXJu KCJFcnJvciBzdGFydGluZyB0aHJlYWQ6ICVpXG4iLCByKTsKPiA+ID4gKwo+ID4gPiArCWludGVy dmFsLml0X3ZhbHVlLnR2X25zZWMgPSAwOwo+ID4gPiArCWludGVydmFsLml0X3ZhbHVlLnR2X3Nl YyA9IDM7Cj4gPiA+ICsJaW50ZXJ2YWwuaXRfaW50ZXJ2YWwudHZfbnNlYyA9IGludGVydmFsLml0 X3ZhbHVlLnR2X25zZWM7Cj4gPiA+ICsJaW50ZXJ2YWwuaXRfaW50ZXJ2YWwudHZfc2VjID0gaW50 ZXJ2YWwuaXRfdmFsdWUudHZfc2VjOwo+ID4gPiArCXIgPSB0aW1lcmZkX3NldHRpbWUoZGF0YS0+ ZmFpbF90aW1lcmZkLCAwLCAmaW50ZXJ2YWwsIE5VTEwpOwo+ID4gPiArCWlndF9yZXF1aXJlX2Yo ciAhPSAtMSwgIkVycm9yIHNldHRpbmcgdGltZXJmZFxuIik7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ ID4gK3N0YXRpYyB2b2lkIHVwZGF0ZV9zY3JlZW4oZGF0YV90ICpkYXRhKQo+ID4gPiArewo+ID4g PiArCWRhdGEtPmNoYW5nZXMrKzsKPiA+ID4gKwo+ID4gPiArCXN3aXRjaCAoZGF0YS0+b3ApIHsK PiA+ID4gKwljYXNlIFBBR0VfRkxJUDogewo+ID4gPiArCQlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsK PiA+ID4gKwo+ID4gPiArCQlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShkYXRh LT5vdXRwdXQsCj4gPiA+ICsJCQkJCQkgICAgRFJNX1BMQU5FX1RZUEVfUFJJTQo+ID4gPiBBUlkp Owo+ID4gPiArCj4gPiA+ICsJCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmRhdGEtPmZiW2Rh dGEtPmNoYW5nZXMgJgo+ID4gPiAxXSk7Cj4gPiA+ICsJCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0 YS0+ZGlzcGxheSk7Cj4gPiA+ICsJCWJyZWFrOwo+ID4gPiArCX0KPiA+ID4gKwljYXNlIEZST05U QlVGRkVSOiB7Cj4gPiA+ICsJCWRybU1vZGVDbGlwIGNsaXA7Cj4gPiA+ICsJCWNhaXJvX3QgKmNy Owo+ID4gPiArCQlpbnQgcjsKPiA+ID4gKwo+ID4gPiArCQljbGlwLngxID0gY2xpcC55MSA9IDA7 Cj4gPiA+ICsJCWNsaXAueDIgPSBjbGlwLnkyID0gU1FVQVJFX1NJWkU7Cj4gPiA+ICsKPiA+ID4g KwkJY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5kcm1fZmQsICZkYXRhLT5mYlswXSk7Cj4g PiA+ICsKPiA+ID4gKwkJaWYgKGRhdGEtPmNoYW5nZXMgJiAxKSB7Cj4gPiA+ICsJCQkvKiBnbyBi YWNrIHRvIGFsbCBncmVlbiBmcmFtZSB3aXRoIHdpdGggc3F1YXJlCj4gPiA+ICovCj4gPiA+ICsJ CQlpZ3RfcGFpbnRfY29sb3JfYWxwaGEoY3IsIDAsIDAsIFNRVUFSRV9TSVpFLAo+ID4gPiArCQkJ CQkgICAgICBTUVVBUkVfU0laRSwgMS4wLCAxLjAsCj4gPiA+IDEuMCwgMS4wKTsKPiA+ID4gKwkJ fSBlbHNlIHsKPiA+ID4gKwkJCS8qIGdvIGJhY2sgdG8gYWxsIGdyZWVuIGZyYW1lICovCj4gPiA+ ICsJCQlpZ3RfcGFpbnRfY29sb3JfYWxwaGEoY3IsIDAsIDAsIFNRVUFSRV9TSVpFLAo+ID4gPiAr CQkJCQkgICAgICBTUVVBUkVfU0laRSwgMCwgMS4wLCAwLAo+ID4gPiAxLjApOwo+ID4gPiArCQl9 Cj4gPiA+ICsKPiA+ID4gKwkJciA9IGRybU1vZGVEaXJ0eUZCKGRhdGEtPmRybV9mZCwgZGF0YS0+ ZmJbMF0uZmJfaWQsCj4gPiA+ICZjbGlwLCAxKTsKPiA+ID4gKwkJaWd0X2Fzc2VydChyID09IDAg fHwgciA9PSAtRU5PU1lTKTsKPiA+ID4gKwkJYnJlYWs7Cj4gPiA+ICsJfQo+ID4gPiArCWRlZmF1 bHQ6Cj4gPiA+ICsJCWlndF9hc3NlcnRfZihkYXRhLT5vcCwgIk9wZXJhdGlvbiBub3QgaGFuZGxl ZFxuIik7Cj4gPiA+ICsJfQo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBydW4o ZGF0YV90ICpkYXRhKQo+ID4gPiArewo+ID4gPiArCXdoaWxlIChkYXRhLT5ydW4pIHsKPiA+ID4g KwkJdWludDY0X3QgZXhwOwo+ID4gPiArCQlpbnQgcjsKPiA+ID4gKwo+ID4gPiArCQlyID0gcG9s bChkYXRhLT5wb2xsZmRzLAo+ID4gPiArCQkJIHNpemVvZihkYXRhLT5wb2xsZmRzKSAvIHNpemVv ZihkYXRhLQo+ID4gPiA+IHBvbGxmZHNbMF0pLCAtMSk7Cj4gPiA+IAo+ID4gPiArCQlpZiAociA8 IDApCj4gPiA+ICsJCQlicmVhazsKPiA+ID4gKwo+ID4gPiArCQkvKiBmbGlwX3RpbWVyZmQgdGlt ZW91dCAqLwo+ID4gPiArCQlpZiAoZGF0YS0+cG9sbGZkc1swXS5yZXZlbnRzICYgUE9MTElOKSB7 Cj4gPiA+ICsJCQlyID0gcmVhZChkYXRhLT5wb2xsZmRzWzBdLmZkLCAmZXhwLAo+ID4gPiBzaXpl b2YoZXhwKSk7Cj4gPiA+ICsKPiA+ID4gKwkJCWlmIChyICE9IHNpemVvZih1aW50NjRfdCkpIHsK PiA+ID4gKwkJCQlpZ3Rfd2FybigicmVhZCBhIG5vdCBleHBlY3RlZCBudW1iZXIgb2YKPiA+ID4g Ynl0ZXMgZnJvbSBmbGlwX3RpbWVyZmQ6ICVpXG4iLCByKTsKPiA+ID4gKwkJCX0gZWxzZSBpZiAo ZXhwKQo+ID4gPiArCQkJCXVwZGF0ZV9zY3JlZW4oZGF0YSk7Cj4gPiA+ICsJCX0KPiA+ID4gKwo+ ID4gPiArCQkvKiBmYWlsX3RpbWVyZmQgdGltZW91dCAqLwo+ID4gCj4gPiBXb3VsZG4ndCBpdCBi ZSBzaW1wbGVyIHRvIGZsaXAgYSBmaXhlZCBudW1iZXIgb2YgdGltZXM/Cj4gCj4gWWVhaCBpdCB3 b3VsZCBiZSBzaW1wbGVyLCBJIHdpbGwgY2hhbmdlIHRvIHRoYXQuCj4gCj4gPiAKPiA+IAo+ID4g PiArCQlpZiAoZGF0YS0+cG9sbGZkc1sxXS5yZXZlbnRzICYgUE9MTElOKSB7Cj4gPiA+ICsJCQly ID0gcmVhZChkYXRhLT5wb2xsZmRzWzFdLmZkLCAmZXhwLAo+ID4gPiBzaXplb2YoZXhwKSk7Cj4g PiA+ICsKPiA+ID4gKwkJCWlmIChyICE9IHNpemVvZih1aW50NjRfdCkpIHsKPiA+ID4gKwkJCQlp Z3Rfd2FybigicmVhZCBhIG5vdCBleHBlY3RlZCBudW1iZXIgb2YKPiA+ID4gYnl0ZXMgZnJvbSBm YWlsX3RpbWVyZmQ6ICVpXG4iLCByKTsKPiA+ID4gKwkJCX0gZWxzZSBpZiAoZXhwKQo+ID4gPiAr CQkJCWJyZWFrOwo+ID4gPiArCQl9Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJZGF0YS0+cnVu ID0gZmFsc2U7Cj4gPiA+ICsJcHRocmVhZF9qb2luKGRhdGEtPnRocmVhZF9pZCwgTlVMTCk7Cj4g PiA+ICsKPiA+ID4gKwlpZ3RfZGVidWcoIkNoYW5nZXM6ICV1XG4iLCBkYXRhLT5jaGFuZ2VzKTsK PiA+ID4gKwlpZ3RfYXNzZXJ0KGRhdGEtPnN1Y2Vzcyk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4g K3N0YXRpYyB2b2lkIGNsZWFudXAoZGF0YV90ICpkYXRhKQo+ID4gPiArewo+ID4gPiArCWlndF9w bGFuZV90ICpwcmltYXJ5Owo+ID4gPiArCj4gPiA+ICsJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0 X3BsYW5lX3R5cGUoZGF0YS0+b3V0cHV0LAo+ID4gPiArCQkJCQkgICAgRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSk7Cj4gPiA+ICsJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCBOVUxMKTsKPiA+ID4g KwlpZ3RfZGlzcGxheV9jb21taXQoJmRhdGEtPmRpc3BsYXkpOwo+ID4gPiArCj4gPiA+ICsJaWd0 X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5mYlswXSk7Cj4gPiA+ICsJaWYgKGRhdGEt Pm9wID09IFBBR0VfRkxJUCkKPiA+ID4gKwkJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZk YXRhLT5mYlsxXSk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK2ludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCj4gPiA+ICt7Cj4gPiA+ICsJZGF0YV90IGRhdGEgPSB7fTsKPiA+ID4gKwll bnVtIG9wZXJhdGlvbnMgb3A7Cj4gPiA+ICsKPiA+ID4gKwlpZ3Rfc3VidGVzdF9pbml0X3BhcnNl X29wdHMoJmFyZ2MsIGFyZ3YsICIiLCBOVUxMLAo+ID4gPiArCQkJCSAgICBOVUxMLCBOVUxMLCBO VUxMKTsKPiA+ID4gKwlpZ3Rfc2tpcF9vbl9zaW11bGF0aW9uKCk7Cj4gPiA+ICsKPiA+ID4gKwlp Z3RfZml4dHVyZSB7Cj4gPiA+ICsJCXN0cnVjdCBpdGltZXJzcGVjIGludGVydmFsOwo+ID4gPiAr CQlpbnQgcjsKPiA+ID4gKwo+ID4gPiArCQlkYXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9t YXN0ZXIoRFJJVkVSX0lOVEVMKTsKPiA+ID4gKwkJZGF0YS5kZWJ1Z2ZzX2ZkID0gaWd0X2RlYnVn ZnNfZGlyKGRhdGEuZHJtX2ZkKTsKPiA+ID4gKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9k ZSgpOwo+ID4gPiArCQlkYXRhLmRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZpZChkYXRhLmRybV9m ZCk7Cj4gPiA+ICsKPiA+ID4gKwkJaWd0X3JlcXVpcmVfZihwc3IyX3Npbmtfc3VwcG9ydChkYXRh LmRlYnVnZnNfZmQpLAo+ID4gPiArCQkJICAgICAgIlNpbmsgZG9lcyBub3Qgc3VwcG9ydCBQU1Iy XG4iKTsKPiA+ID4gKwo+ID4gPiArCQlkYXRhLmJ1Zm1nciA9IGRybV9pbnRlbF9idWZtZ3JfZ2Vt X2luaXQoZGF0YS5kcm1fZmQsCj4gPiA+IDQwOTYpOwo+ID4gPiArCQlpZ3RfYXNzZXJ0KGRhdGEu YnVmbWdyKTsKPiA+ID4gKwkJZHJtX2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxlX3JldXNlKGRhdGEu YnVmbWdyKTsKPiA+ID4gKwo+ID4gPiArCQlkaXNwbGF5X2luaXQoJmRhdGEpOwo+ID4gPiArCj4g PiA+ICsJCWlndF9yZXF1aXJlKHBzcjJfZW5hYmxlKGRhdGEuZGVidWdmc19mZCkpOwo+ID4gPiAr CQlpZ3RfcmVxdWlyZShwc3IyX3dhaXRfZGVlcF9zbGVlcChkYXRhLmRlYnVnZnNfZmQpKTsKPiA+ ID4gKwo+ID4gPiArCQlkYXRhLmZsaXBfdGltZXJmZCA9IHRpbWVyZmRfY3JlYXRlKENMT0NLX01P Tk9UT05JQywKPiA+ID4gKwkJCQkJCSAgIFRGRF9OT05CTE9DSyk7Cj4gPiA+ICsJCWlndF9yZXF1 aXJlKGRhdGEuZmxpcF90aW1lcmZkICE9IC0xKTsKPiA+ID4gKwkJaW50ZXJ2YWwuaXRfdmFsdWUu dHZfbnNlYyA9IE5TRUNfUEVSX1NFQyAvIDE1Owo+ID4gCj4gPiBXaGF0J3MgdGhlIHJhdGlvbmFs ZSBmb3IgdGhpcyBudW1iZXI/Cj4gCj4gCj4gMTVoeiBmbGlwcywgSSB3aWxsIGFkZCBhIGNvbW1l bnQgaGVyZS4KUmlnaHQsIHdoeSAxNSBIej8gOikgSSdkIGxpa2UgdGhlIGNvbW1pdCBtZXNzYWdl IHRvIGV4cGxhaW4gdGhhdC4KCj4gCj4gCj4gCj4gPiAKPiA+ID4gKwkJaW50ZXJ2YWwuaXRfdmFs dWUudHZfc2VjID0gMDsKPiA+ID4gKwkJaW50ZXJ2YWwuaXRfaW50ZXJ2YWwudHZfbnNlYyA9Cj4g PiA+IGludGVydmFsLml0X3ZhbHVlLnR2X25zZWM7Cj4gPiA+ICsJCWludGVydmFsLml0X2ludGVy dmFsLnR2X3NlYyA9IGludGVydmFsLml0X3ZhbHVlLnR2X3NlYzsKPiA+ID4gKwkJciA9IHRpbWVy ZmRfc2V0dGltZShkYXRhLmZsaXBfdGltZXJmZCwgMCwgJmludGVydmFsLAo+ID4gPiBOVUxMKTsK PiA+ID4gKwkJaWd0X3JlcXVpcmVfZihyICE9IC0xLCAiRXJyb3Igc2V0dGluZyB0aW1lcmZkXG4i KTsKPiA+ID4gKwo+ID4gPiArCQlkYXRhLmZhaWxfdGltZXJmZCA9IHRpbWVyZmRfY3JlYXRlKENM T0NLX01PTk9UT05JQywKPiA+ID4gKwkJCQkJCSAgIFRGRF9OT05CTE9DSyk7Cj4gPiA+ICsJCWln dF9yZXF1aXJlKGRhdGEuZmFpbF90aW1lcmZkICE9IC0xKTsKPiA+ID4gKwo+ID4gPiArCQlkYXRh LnBvbGxmZHNbMF0uZmQgPSBkYXRhLmZsaXBfdGltZXJmZDsKPiA+ID4gKwkJZGF0YS5wb2xsZmRz WzBdLmV2ZW50cyA9IFBPTExJTjsKPiA+ID4gKwkJZGF0YS5wb2xsZmRzWzBdLnJldmVudHMgPSAw Owo+ID4gPiArCj4gPiA+ICsJCWRhdGEucG9sbGZkc1sxXS5mZCA9IGRhdGEuZmFpbF90aW1lcmZk Owo+ID4gPiArCQlkYXRhLnBvbGxmZHNbMV0uZXZlbnRzID0gUE9MTElOOwo+ID4gPiArCQlkYXRh LnBvbGxmZHNbMV0ucmV2ZW50cyA9IDA7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJZm9yIChv cCA9IFBBR0VfRkxJUDsgb3AgPCBMQVNUOyBvcCsrKSB7Cj4gPiA+ICsJCWlndF9zdWJ0ZXN0X2Yo IiVzIiwgb3Bfc3RyKG9wKSkgewo+ID4gPiArCQkJZGF0YS5vcCA9IG9wOwo+ID4gPiArCQkJcHJl cGFyZSgmZGF0YSk7Cj4gPiA+ICsJCQlydW4oJmRhdGEpOwo+ID4gPiArCQkJY2xlYW51cCgmZGF0 YSk7Cj4gPiA+ICsJCX0KPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlpZ3RfZml4dHVyZSB7Cj4g PiA+ICsJCWNsb3NlKGRhdGEuZGVidWdmc19mZCk7Cj4gPiA+ICsJCWRybV9pbnRlbF9idWZtZ3Jf ZGVzdHJveShkYXRhLmJ1Zm1ncik7Cj4gPiA+ICsJCWRpc3BsYXlfZmluaSgmZGF0YSk7Cj4gPiA+ ICsJfQo+ID4gPiArCj4gPiA+ICsJaWd0X2V4aXQoKTsKPiA+ID4gK30KPiA+ID4gZGlmZiAtLWdp dCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQKPiA+ID4gaW5kZXggYjhh NmU2MWIuLmM1NTczMzNjIDEwMDY0NAo+ID4gPiAtLS0gYS90ZXN0cy9tZXNvbi5idWlsZAo+ID4g PiArKysgYi90ZXN0cy9tZXNvbi5idWlsZAo+ID4gPiBAQCAtNDksNiArNDksNyBAQCB0ZXN0X3By b2dzID0gWwo+ID4gPiAgCSdrbXNfcGxhbmVfc2NhbGluZycsCj4gPiA+ICAJJ2ttc19wcm9wZXJ0 aWVzJywKPiA+ID4gIAkna21zX3BzcicsCj4gPiA+ICsJJ2ttc19wc3IyX3N1JywKPiA+ID4gIAkn a21zX3B3cml0ZV9jcmMnLAo+ID4gPiAgCSdrbXNfcm1mYicsCj4gPiA+ICAJJ2ttc19yb3RhdGlv bl9jcmMnLAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K aWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==