From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kumar, Shobhit" Subject: Re: [PATCH] drm/i915: Wait for PP cycle delay only if panel is in power off sequence Date: Mon, 14 Dec 2015 09:29:28 +0530 Message-ID: <566E3EA0.4070909@linux.intel.com> References: <20151209150453.GA29974@nuc-i3427.alporthouse.com> <20151209160517.GH4437@intel.com> <56694656.8040607@linux.intel.com> <20151210131537.GO4437@intel.com> <20151210133845.GR4437@intel.com> <56698E85.2090704@intel.com> <20151210150210.GA4437@intel.com> <566AB2B1.90107@intel.com> <566AB663.6000205@linux.intel.com> <20151211170005.GH20822@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 3D2C16E40F for ; Sun, 13 Dec 2015 19:59:35 -0800 (PST) In-Reply-To: <20151211170005.GH20822@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Shobhit Kumar , intel-gfx List-Id: intel-gfx@lists.freedesktop.org T24gMTIvMTEvMjAxNSAxMDozMCBQTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBGcmksIERl YyAxMSwgMjAxNSBhdCAwNToxMToyM1BNICswNTMwLCBLdW1hciwgU2hvYmhpdCB3cm90ZToKPj4g T24gMTIvMTEvMjAxNSAwNDo1NSBQTSwgVGh1bGFzaW1hbmksIFNpdmFrdW1hciB3cm90ZToKPj4+ Cj4+Pgo+Pj4gT24gMTIvMTAvMjAxNSA4OjMyIFBNLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4+ Pj4gT24gVGh1LCBEZWMgMTAsIDIwMTUgYXQgMDg6MDk6MDFQTSArMDUzMCwgVGh1bGFzaW1hbmks IFNpdmFrdW1hciB3cm90ZToKPj4+Pj4KPj4+Pj4gT24gMTIvMTAvMjAxNSA3OjA4IFBNLCBWaWxs ZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4+Pj4+PiBPbiBUaHUsIERlYyAxMCwgMjAxNSBhdCAwMzoxNToz N1BNICswMjAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4+Pj4+Pj4gT24gVGh1LCBEZWMgMTAs IDIwMTUgYXQgMDM6MDE6MDJQTSArMDUzMCwgS3VtYXIsIFNob2JoaXQgd3JvdGU6Cj4+Pj4+Pj4+ IE9uIDEyLzA5LzIwMTUgMDk6MzUgUE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPj4+Pj4+Pj4+ IE9uIFdlZCwgRGVjIDA5LCAyMDE1IGF0IDA4OjU5OjI2UE0gKzA1MzAsIFNob2JoaXQgS3VtYXIg d3JvdGU6Cj4+Pj4+Pj4+Pj4gT24gV2VkLCBEZWMgOSwgMjAxNSBhdCA4OjM0IFBNLCBDaHJpcyBX aWxzb24KPj4+Pj4+Pj4+PiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPiB3cm90ZToKPj4+Pj4+ Pj4+Pj4gT24gV2VkLCBEZWMgMDksIDIwMTUgYXQgMDg6MDc6MTBQTSArMDUzMCwgU2hvYmhpdCBL dW1hciB3cm90ZToKPj4+Pj4+Pj4+Pj4+IE9uIFdlZCwgRGVjIDksIDIwMTUgYXQgNzoyNyBQTSwg VmlsbGUgU3lyasOkbMOkCj4+Pj4+Pj4+Pj4+PiA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+IHdyb3RlOgo+Pj4+Pj4+Pj4+Pj4+IE9uIFdlZCwgRGVjIDA5LCAyMDE1IGF0IDA2OjUxOjQ4 UE0gKzA1MzAsIFNob2JoaXQgS3VtYXIgd3JvdGU6Cj4+Pj4+Pj4+Pj4+Pj4+IER1cmluZyByZXN1 bWUsIHdoaWxlIHR1cm5pbmcgdGhlIEVEUCBwYW5lbCBwb3dlciBvbiwgd2UgbmVlZAo+Pj4+Pj4+ Pj4+Pj4+PiBub3Qgd2FpdAo+Pj4+Pj4+Pj4+Pj4+PiBibGluZGx5IGZvciBwYW5lbF9wb3dlcl9j eWNsZV9kZWxheS4gQ2hlY2sgaWYgcGFuZWwgcG93ZXIKPj4+Pj4+Pj4+Pj4+Pj4gZG93biBzZXF1 ZW5jZQo+Pj4+Pj4+Pj4+Pj4+PiBpbiBwcm9ncmVzcyBhbmQgdGhlbiBvbmx5IHdhaXQuIFRoaXMg aW1wcm92ZXMgb3VyIHJlc3VtZQo+Pj4+Pj4+Pj4+Pj4+PiB0aW1lIHNpZ25pZmljYW50bHkuCj4+ Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFNob2JoaXQgS3VtYXIg PHNob2JoaXQua3VtYXJAaW50ZWwuY29tPgo+Pj4+Pj4+Pj4+Pj4+PiAtLS0KPj4+Pj4+Pj4+Pj4+ Pj4gICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgfCAxNyArKysrKysrKysrKysr KysrLQo+Pj4+Pj4+Pj4+Pj4+PiAgICAgMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyks IDEgZGVsZXRpb24oLSkKPj4+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4+Pj4+Pj4+Pj4+Pj4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+Pj4+Pj4+Pj4+Pj4+IGluZGV4IGYzMzVjOTIuLjEw ZWM2NjkgMTAwNjQ0Cj4+Pj4+Pj4+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMKPj4+Pj4+Pj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwo+Pj4+Pj4+Pj4+Pj4+PiBAQCAtNjE3LDYgKzYxNywyMCBAQCBzdGF0aWMgYm9vbCBlZHBf aGF2ZV9wYW5lbF9wb3dlcihzdHJ1Y3QKPj4+Pj4+Pj4+Pj4+Pj4gaW50ZWxfZHAgKmludGVsX2Rw KQo+Pj4+Pj4+Pj4+Pj4+PiAgICAgICAgICByZXR1cm4gKEk5MTVfUkVBRChfcHBfc3RhdF9yZWco aW50ZWxfZHApKSAmIFBQX09OKQo+Pj4+Pj4+Pj4+Pj4+PiAhPSAwOwo+Pj4+Pj4+Pj4+Pj4+PiAg ICAgfQo+Pj4+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Pj4+PiArc3RhdGljIGJvb2wgZWRwX3BhbmVs X29mZl9zZXEoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPj4+Pj4+Pj4+Pj4+Pj4gK3sKPj4+ Pj4+Pj4+Pj4+Pj4gKyAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RwX3RvX2Rl dihpbnRlbF9kcCk7Cj4+Pj4+Pj4+Pj4+Pj4+ICsgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+Pj4+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+ Pj4+Pj4gKyAgICAgbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPnBwc19tdXRleCk7Cj4+ Pj4+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+Pj4+Pj4gKyAgICAgaWYgKElTX1ZBTExFWVZJRVcoZGV2 KSAmJgo+Pj4+Pj4+Pj4+Pj4+PiArICAgICAgICAgaW50ZWxfZHAtPnBwc19waXBlID09IElOVkFM SURfUElQRSkKPj4+Pj4+Pj4+Pj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4+Pj4+ Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+Pj4+Pj4gKyAgICAgcmV0dXJuIChJOTE1X1JFQUQoX3BwX3N0 YXRfcmVnKGludGVsX2RwKSkgJgo+Pj4+Pj4+Pj4+Pj4+PiBQUF9TRVFVRU5DRV9QT1dFUl9ET1dO KSAhPSAwOwo+Pj4+Pj4+Pj4+Pj4+PiArfQo+Pj4+Pj4+Pj4+Pj4+IFRoaXMgZG9lbnMndCBtYWtl IHNlbnNlIHRvIG1lLiBUaGUgcG93ZXIgZG93biBjeWNsZSBtYXkgaGF2ZQo+Pj4+Pj4+Pj4+Pj4+ IGNvbXBsZXRlZCBqdXN0IGJlZm9yZSwgYW5kIHNvIHRoaXMgd291bGQgY2xhaW0gd2UgZG9uJ3Qg aGF2ZSB0bwo+Pj4+Pj4+Pj4+Pj4+IHdhaXQgZm9yIHRoZSBwb3dlcl9jeWNsZV9kZWxheS4KPj4+ Pj4+Pj4+Pj4+IE5vdCBzdXJlIEkgdW5kZXJzdGFuZCB5b3VyIGNvbmNlcm4gY29ycmVjdGx5LiBZ b3UgYXJlIHJpZ2h0LAo+Pj4+Pj4+Pj4+Pj4gcG93ZXIKPj4+Pj4+Pj4+Pj4+IGRvd24gY3ljbGUg bWF5IGhhdmUgY29tcGxldGVkIGp1c3QgYmVmb3JlIGFuZCBpZiBpdCBoYXMgdGhlbgo+Pj4+Pj4+ Pj4+Pj4gd2UgZG9uJ3QKPj4+Pj4+Pj4+Pj4+IG5lZWQgdG8gd2FpdC4gQnV0IGluIGNhc2UgdGhl IHBvd2VyIGRvd24gY3ljbGUgaXMgaW4gcHJvZ3Jlc3MKPj4+Pj4+Pj4+Pj4+IGFzIHBlcgo+Pj4+ Pj4+Pj4+Pj4gaW50ZXJuYWwgc3RhdGUsIHRoZW4gd2UgbmVlZCB0byB3YWl0IGZvciBpdCB0byBj b21wbGV0ZS4gVGhpcwo+Pj4+Pj4+Pj4+Pj4gd2lsbAo+Pj4+Pj4+Pj4+Pj4gaGFwcGVuIGZvciBl eGFtcGxlIGluIG5vbi1zdXNwZW5kIGRpc2FibGUgcGF0aCBhbmQgd2lsbCBiZQo+Pj4+Pj4+Pj4+ Pj4gaGFuZGxlZAo+Pj4+Pj4+Pj4+Pj4gY29ycmVjdGx5LiBJbiBjYXNlIG9mIGFjdHVhbCBzdXNw ZW5kL3Jlc3VtZSwgdGhpcyB3b3VsZCBoYXZlCj4+Pj4+Pj4+Pj4+PiBzdWNjZXNzZnVsbHkgY29t cGxldGVkIGFuZCB3aWxsIHNraXAgdGhlIHdhaXQgYXMgaXQgaXMgbm90IG5lZWRlZAo+Pj4+Pj4+ Pj4+Pj4gYmVmb3JlIGVuYWJsaW5nIHBhbmVsIHBvd2VyLgo+Pj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ Pj4+Pj4gKwo+Pj4+Pj4+Pj4+Pj4+PiAgICAgc3RhdGljIGJvb2wgZWRwX2hhdmVfcGFuZWxfdmRk KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+Pj4+Pj4+Pj4+Pj4+ICAgICB7Cj4+Pj4+Pj4+ Pj4+Pj4+ICAgICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kcF90b19kZXYo aW50ZWxfZHApOwo+Pj4+Pj4+Pj4+Pj4+PiBAQCAtMjAyNSw3ICsyMDM5LDggQEAgc3RhdGljIHZv aWQgZWRwX3BhbmVsX29uKHN0cnVjdAo+Pj4+Pj4+Pj4+Pj4+PiBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4+Pj4+Pj4+Pj4+Pj4+ICAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZShkcF90b19kaWdfcG9y dChpbnRlbF9kcCktPnBvcnQpKSkKPj4+Pj4+Pj4+Pj4+Pj4gICAgICAgICAgICAgICAgICByZXR1 cm47Cj4+Pj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Pj4+IC0gICAgIHdhaXRfcGFuZWxfcG93ZXJf Y3ljbGUoaW50ZWxfZHApOwo+Pj4+Pj4+Pj4+Pj4+PiArICAgICBpZiAoZWRwX3BhbmVsX29mZl9z ZXEoaW50ZWxfZHApKQo+Pj4+Pj4+Pj4+Pj4+PiArICAgICAgICAgICAgIHdhaXRfcGFuZWxfcG93 ZXJfY3ljbGUoaW50ZWxfZHApOwo+Pj4+Pj4+Pj4+PiBMb29raW5nIGluIGZyb20gdGhlIHNpZGUs IEkgaGF2ZSBubyBpZGVhIHdoYXQgdGhpcyBpcyBtZWFudCB0bwo+Pj4+Pj4+Pj4+PiBkby4gQXQK Pj4+Pj4+Pj4+Pj4gdGhlIHZlcnkgbGVhc3QgeW91IG5lZWQgeW91ciBleHBsYW5hdG9yeSBwYXJh Z3JhcGggaGVyZSB3aGljaAo+Pj4+Pj4+Pj4+PiB3b3VsZAo+Pj4+Pj4+Pj4+PiBpbmNsdWRlIHdo YXQgZXhhY3RseSB5b3UgYXJlIHdhaXRpbmcgZm9yIGF0IHRoZSBzdGFydCBvZgo+Pj4+Pj4+Pj4+ PiBlZHBfcGFuZWxfb24KPj4+Pj4+Pj4+Pj4gKGFuZCBwbGVhc2UgdHJ5IGFuZCBmaW5kIGEgYmV0 dGVyIG5hbWUgZm9yIGVkcF9wYW5lbF9vZmZfc2VxKCkpLgo+Pj4+Pj4+Pj4+IEkgd2lsbCBhZGQg YSBjb21tZW50LiBCYXNpY2FsbHkgSSBhbSBub3QgYWRkaXRpb25hbGx5IHdhaXRpbmcsIGJ1dAo+ Pj4+Pj4+Pj4+IGNvbnZlcnRpbmcgdGhlIHdhaXQgd2hpY2ggd2FzIGFscmVhZHkgdGhlcmUgdG8g YSBjb25kaXRpb25hbAo+Pj4+Pj4+Pj4+IHdhaXQuIFRoZQo+Pj4+Pj4+Pj4+IGVkcF9wYW5lbF9v ZmZfc2VxLCBjaGVja3MgaWYgcGFuZWwgcG93ZXIgZG93biBzZXF1ZW5jZSBpcyBpbgo+Pj4+Pj4+ Pj4+IHByb2dyZXNzLgo+Pj4+Pj4+Pj4+IEluIHRoYXQgY2FzZSB3ZSBuZWVkIHRvIHdhaXQgZm9y IHRoZSBwYW5lbCBwb3dlciBjeWNsZSBkZWxheS4gSWYKPj4+Pj4+Pj4+PiBpdCBpcwo+Pj4+Pj4+ Pj4+IG5vdCBpbiB0aGF0IHNlcXVlbmNlLCB0aGVyZSBpcyBubyBuZWVkIHRvIHdhaXQuIEkgd2ls bCBtYWtlIGFuCj4+Pj4+Pj4+Pj4gYXR0ZW1wdAo+Pj4+Pj4+Pj4+IGFnYWluIG9uIHRoZSBuYW1p bmcgaW4gbmV4dCBwYXRjaCB1cGRhdGUuCj4+Pj4+Pj4+PiBBcyBmYXIgSSByZW1lYmVyIHlvdSBu ZWVkIHRvIHdhaXQgZm9yIHBvd2VyX2N5Y2xlX2RlbGF5IGJldHdlZW4KPj4+Pj4+Pj4+IHBvd2Vy Cj4+Pj4+Pj4+PiBkb3duIGN5Y2xlIGFuZCBwb3dlciB1cCBjeWNsZS4gWW91J3JlIHRyeWluZyB0 byB0aHJvdyB0aGF0IHdhaXQgYXdheQo+Pj4+Pj4+Pj4gZW50aXJlbHksIHVubGVzcyB0aGUgZnVu Y3Rpb24gaGFwcGVucyBnZXQgY2FsbGVkIHdoaWxlIHRoZSBwb3dlcgo+Pj4+Pj4+Pj4gZG93bgo+ Pj4+Pj4+PiBZZXMgeW91IGFyZSByaWdodCBhbmQgSSByZWFsaXplIEkgbWFkZSBhIG1pc3Rha2Ug aW4gbXkgcGF0Y2ggd2hpY2ggaXMKPj4+Pj4+Pj4gbm90IGNoZWNraW5nIFBQX0NZQ0xFX0RFTEFZ X0FDVElWRSBiaXQuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBjeWNsZSBpcyBzdGlsbCBpbiBwcm9ncmVz cy4gV2Ugc2hvdWxkIGFscmVhZHkgb3B0aW1pemUgYXdheQo+Pj4+Pj4+Pj4gcmVkdW5kYW50Cj4+ Pj4+Pj4+PiB3YWl0cyBieSB0cmFja2luZyB0aGUgZW5kIG9mIHRoZSBwb3dlciBkb3duIGN5Y2xl IHdpdGggdGhlIGppZmZpZXMKPj4+Pj4+Pj4+IHRyYWNraW5nLgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ IEFjdHVhbGx5IGxvb2tpbmcgYXQgdGhlIGNvZGUgdGhlIHBvd2VyX2N5Y2xlX2RlbGF5IGdldHMg Y291bnRlZCBmcm9tCj4+Pj4+Pj4+PiB0aGUgc3RhcnQgb2YgdGhlIGxhc3QgcG93ZXIgZG93biBj eWNsZSwgc28gc3VwcG9zZWRseSBpdCdzIGFsd2F5cyBhdAo+Pj4+Pj4+Pj4gbGVhc3QgYXMgbG9u ZyBhcyB0aGUgcG93ZXIgZG93biBjeWNsZSwgYW5kIHR5cGljYWxseSBpdCdzIHF1aXRlIGEKPj4+ Pj4+Pj4+IGJpdAo+Pj4+Pj4+Pj4gbG9uZ2VyIHRoYXQgdGhhdC4gQnV0IHRoYXQgZG9lc24ndCBj aGFuZ2UgdGhlIGZhY3QgdGhhdCB5b3UgY2FuJ3QKPj4+Pj4+Pj4+IGp1c3Qgc2tpcCBpdCBiZWNh dXNlIHRoZSBwb3dlciBkb3duIGN5Y2xlIGRlbGF5IGhhcHBlbmVkIHRvIGVuZAo+Pj4+Pj4+Pj4g YWxyZWFkeS4KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBTbyB3aGF0IHdlIGRvIG5vdyBpczoKPj4+Pj4+ Pj4+IDEuIGluaXRpYXRlIHBvd2VyIGRvd24gY3ljbGUKPj4+Pj4+Pj4+IDIuIGxhc3RfcG93ZXJf Y3ljbGU9amlmZmllcwo+Pj4+Pj4+Pj4gMy4gd2FpdCBmb3IgcG93ZXIgZG93biAoSSBzdXBwb3Nl IHRoaXMgYWN0dWFsbHkgd2FpdHMKPj4+Pj4+Pj4+ICAgICAgIHVudGlsIHRoZSBwb3dlciBkb3du IGRlbGF5IGhhcyBwYXNzZWQgc2luY2UgdGhhdCdzCj4+Pj4+Pj4+PiAgICAgICBwcm9ncmFtbWVz IGludG8gdGhlIFBQUykuCj4+Pj4+Pj4+PiA0LiB3YWl0IGZvciBwb3dlcl9jeWNsZV9kZWxheSBm cm9tIGxhc3RfcG93ZXJfY3ljbGUKPj4+Pj4+Pj4+IDUuIGluaXRpYXRlIHBvd2VyIHVwIGN5Y2xl Cj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gSSB0aGluayB3aXRoIHlvdXIgcGF0Y2ggc3RlcCA0IHdvdWxk IGFsd2F5cyBiZSBza2lwcGVkIHNpbmNlIHRoZQo+Pj4+Pj4+Pj4gcG93ZXIgZG93biBjeWNsZSBo YXMgYWxyZWFkeSBlbmRlZCwgYW5kIHRoZW4gd2UgZmFpbCB0byBob25vciB0aGUKPj4+Pj4+Pj4+ IHBvd2VyIGN5Y2xlIGRlbGF5Lgo+Pj4+Pj4+PiBZZXMsIEkgYWdyZWUuIEkgbWlzc2VkIGNoZWNr aW5nIGZvciBQUF9DWUNMRV9ERUxBWV9BQ1RJVkUuIEFkZGluZwo+Pj4+Pj4+PiB0aGF0Cj4+Pj4+ Pj4+IGNoZWNrIHdpbGwgdGFrZSBjYXJlIG9mIHRoaXMgc2NlbmFyaW8gSSBndWVzcyA/Cj4+Pj4+ Pj4gTm9wZS4gVGhlIHZkZCBmb3JjZSBiaXQgZG9lc24ndCByZXNwZWN0IHRoZSBQUFMgc3RhdGUg bWFjaGluZSwgc28gd2UKPj4+Pj4+PiBtdXN0IGRvIHRoZSB3YWl0cyBtYW51YWxseSBpbnN0ZWFk LiBBbmQgaW4gdGhlb3J5IHlvdXIgcGF0Y2ggd291bGRuJ3QKPj4+Pj4+PiBkbyBhbnl0aGluZyBh bnl3YXkgc2luY2UgdGhlIHNsZWVwIGFscmVhZHkgdGFrZXMgaW50byBhY2NvdW50IHdoZW4gdGhl Cj4+Pj4+Pj4gcG93ZXIgY3ljbGUgZGVsYXkgc3RhcnRlZC4KPj4+Pj4+Pgo+Pj4+Pj4+IFRoZSBm YWN0IHRoYXQgd2UgdXNlIG1zbGVlcCgpIG1heSBhY3R1YWxseSBtYWtlIHRob3NlIHNsZWVwcyBz b21ld2hhdAo+Pj4+Pj4+IGxvbmdlciwgYW5kIG1heWJlIHdlIHNob3VsZCBhbHNvIHRoaW5rIGFi b3V0IHN3aXRjaGluZyB0bwo+Pj4+Pj4+IHVzbGVlcF9yYW5nZSgpCj4+Pj4+Pj4gaGVyZS4KPj4+ Pj4+IE9oLCBhbmQgd2UgbWF5IHdhbnQgdG8gc3RvcCB1c2luZyB0aGUgcG93ZXIgc2VxdWVuY2Vy IGZvcmNlZCBkZWxheSwKPj4+Pj4+IGF0IGxlYXN0IGZvciB0aGUgcG93ZXIgdXAgZGVsYXkgc2lu Y2Ugd2UgY291bGQgdGhlbiBzcGVlZCB1cCB0aGUgcG93ZXIKPj4+Pj4+IHVwIHRpbWUgYnkgd2Fp dGluZyBmb3IgdGhlIGxvbmcgSFBEIGluc3RlYWQuIENsaW50IGV2ZW4gc2VudCBhIHBhdGNoCj4+ Pj4+PiBmb3IKPj4+Pj4+IHRoYXQsIGJ1dCBJIGRvbid0IHRoaW5rIGl0IGFjdHVhbGx5IGNoYW5n ZSB0aGUgUFBTIGRlbGF5cy4gQnV0IG1heWJlCj4+Pj4+PiB0aGUgUFBTIHdvbid0IHJlYWxseSBr aWNrIGluIGR1ZSB0byBvdXIgdXNlIG9mIHRoZSB2ZGQgZm9yY2UgYml0IGR1cmluZwo+Pj4+Pj4g cGFuZWwgcG93ZXIgdXA/Cj4+Pj4+Pgo+Pj4+Pj4gVGhlIGJhaGF2aW91ciBvZiB0aGUgUFBTIGRl bGF5cyB2cy4gdGhlIHZkZCBmb3JjZSBiaXQgaXNuJ3QgYWN0dWFsbHkKPj4+Pj4+IGRvY3VtZW50 ZWQsIHNvIGl0IHdvdWxkIGJlIHNvbWV0aGluZyB0aGF0IGNvdWxkIGJlIHN0dWRpZWQgYSBiaXQg YnkKPj4+Pj4+IGJhbmdpbmcgb24gdGhlIGhhcmR3YXJlLiBQcm9iYWJseSBiZXN0IGRvbmUgb24g YSBtYWNoaW5lIHdoZXJlIHRoZXJlJ3MKPj4+Pj4+IG5vIGxvY2FsIHBhbmVsIHRvIGF2b2lkIGRh bWFnaW5nIGl0IGlmIHRoaW5ncyBnbyBiYWQuCj4+Pj4+IGkgdGhpbmsgaSB1cGRhdGVkIGFib3V0 IHVzaW5nIGhwZC9lZGlkIHJlYWQgaW5zdGVhZCBvZiB3YWl0aW5nIGVudGlyZSBUMwo+Pj4+PiBk ZWxheSBmb3IgcG93ZXIgb24KPj4+Pj4gZHVyaW5nIElSQyBjaGF0IHNvbWV0aW1lIGJhY2sgdG8g ZGFudmV0LiBpbiBzaG9ydCBpdCBkb2VzIG5vdCB3b3JrCj4+Pj4+IGFjcm9zcwo+Pj4+PiBhbGwg cGFuZWxzLCBpdCBjYXVzZXMgYmxvb21pbmcgZWZmZWN0IG9uIHNvbWUgcGFuZWxzIHJlc3VsdGlu ZyBpbiBwYW5lbAo+Pj4+PiBmYWlsaW5nCj4+Pj4+IHRvIHR1cm4gb24sIHdoaWNoIHdpbGwgYWxz byBhZmZlY3QgcGFuZWwgbGlmZS4KPj4+PiA6KCBJIHdhcyBob3Bpbmcgd2UgY291bGQgdXNlIGl0 IGZvciBlRFAsIGJ1dCBJIGd1ZXNzIGJlaW5nIGFuIG9wdGltaXN0Cj4+Pj4gd2hlbiBpdCBjb21l cyB0byBoYXJkd2FyZSBuZXZlciBwYXlzIG9mZi4KPj4+Pgo+Pj4+IEkgd29uZGVyIGlmIHdlIGNv dWxkIGF0IGxlYXN0IHN0YXJ0IGRvaW5nIHNvbWUgb2YgdGhlIEFVWCBjb21tdW5pY2F0aW9uCj4+ Pj4gc29vbmVyLiBUaGF0IGlzLCBtYXliZSB3ZSBjYW4gZG8gYXQgbGVhc3QgdGhlIERQX0xJTktf QldfU0VUIGFuZCB0aGUKPj4+PiBEUF9ET1dOU1BSRUFEX0NUUkwgRFBDRCB3cml0ZXMgYWZ0ZXIg Z2V0dGluZyB0aGUgSFBELCBhbmQgb25seSB0aGVuCj4+Pj4gd2FpdCBmb3IgdGhlIGVuZCBvZiB0 aGUgcG93ZXIgb24gZGVsYXkganVzdCBiZWZvcmUgc3RhcnRpbmcgdGhlCj4+Pj4gbGluayB0cmFp bmluZz8gQW5kIHRoZSBzYW1lIGZvciBhbnkgb3RoZXIgQVVYIGNoYXR0ZXIgd2hlbiB0aGUgcGFu ZWwKPj4+PiBpcyBvdGhlcndpc2UgcG93ZXJlZCBvZmY/Cj4+Pj4KPj4+IDopIHR3byBwYXJ0cyB0 byBvcHRpbWl6YXRpb24gb2Ygc3VjaCBEUENEIGF1eCBjb21tdW5pY2F0aW9ucwo+Pj4gMSkgdGhl eSBjYW4gY2hhbmdlIGR1cmluZyBtb2Rlc2V0IHNvIHdlIGNhbiBuZXZlciBiZSBzdXJlIGlmIHRo ZSB2YWx1ZQo+Pj4gd2lsbCBiZSBmaW5hbAo+Pj4gMikgdGhvc2UgYXJlIHRvbyBzbWFsbCBvcGVy YXRpb25zIHRvIGhlbHAgaW4gYW55IG1ham9yIHdheSBmb3IgcG93ZXIgb24uCj4+Pgo+Pj4gU29t ZSBtb3JlIGNvc3RseS90aW1lIGNvbnN1bWluZyBvcGVyYXRpb25zIHdlIGNhbiBvcHRpbWl6ZSB0 byAiYm9vdCB0bwo+Pj4gZWRwIiBhcmUKPj4+IDEpIGF2b2lkIFZERCAmIFBQUyBvbi8wZmYuIGku ZSAgdG90YWxseSBhdm9pZCBkb2luZyBhbnkgbW9kZXNldCBvcCwKPj4+IHNpbmNlIGVEUCB1c3Vh bGx5Cj4+PiBoYXMgb25lIG9yIHR3byBtb2RlcyBpdCBpcyBoaWdobHkgbGlrZWx5IHRoYXQgd2Ug d2lsbCBhcHBseSB0aGUgc2FtZSBtb2RlCj4+PiBicm91Z2h0IHVwIGJ5IEJJT1MsIHNvIGFueSBl ZmZvcnQgb24gb3VyIHNpZGUgaXMganVzdCByZWRvaW5nIHN0dWZmLgo+Pj4gMikgaWYgdGhlIGFi b3ZlIGlzIG5vdCBwb3NzaWJsZSwgd2UgY2FuIHJlbW92ZSBhcyBtdWNoIG9mIFZERCBvZmYvb24K Pj4+IGluIG91ciBmbG93IGFzIHBvc3NpYmxlLihlYWNoIG9mZiB3aWxsIHRha2UgdGhlIGVudGly ZSBQb3dlciBkb3duIGRlbGF5Cj4+PiB0aW1lCj4+PiBhbmQgdGhlIG5leHQgb24gd2lsbCB0YWtl IHBvd2VyIG9uIGRlbGF5IHRpbWUpCj4+PiAzKSBvdXIgZHBjZCByZWFkL3dyaXRlIGxvZ2ljIHNo b3VsZCBiZSBvcHRpbWl6ZWQsIG91ciB3aG9sZSBMaW5rIHRyYWluaW5nCj4+PiBvbiBDSFQgaXMg dGFraW5nIH4xNW1zLCB3aGljaCBzaG91bGQgaGF2ZSBiZWVuIGNvbXBsZXRlZCBpbiB1bmRlciAx MG1zLgo+Pj4KPj4+IGlmIHdlIGltcGxlbWVudCBwb2ludCAxIGFib3ZlIGZvciBib290L3M0IHJl c3VtZSB3ZSBjYW4gYnJpbmcgZG93biBtb2Rlc2V0Cj4+PiB0aW1lIGZvciBlZHAgYWxvbmUgc2Nl bmFyaW8gdG8gZmV3IG1zLgo+Pj4gaSBkb24ndCB3YW50IHRvIGtlZXAgdGFsa2luZyBidXQgbm90 IGRvaW5nIGFueXRoaW5nLCB3aWxsIGZpbmlzaCBteQo+Pj4gY29tcGxpYW5jZQo+Pj4gYWN0aXZp dGllcyAoaW5jbHVkaW5nIHVwc3RyZWFtaW5nKSBhbmQgdGhlbiB3aWxsIHRyeSB0byB0YXJnZXQg ZWFjaCBvZgo+Pj4gdGhlIGFib3ZlLiA6KQo+Pgo+PiBUaGFua3MgU2l2YSBmb3IgaXRlcmF0aW5n IGZldyBvcHRpbWl6YXRpb24gcG9pbnRzIHdoaWNoIEkgaGF2ZSBiZWVuIGFsc28KPj4gdGhpbmtp bmcgYXJlIG5lZWRlZC4gQnV0IGxldHMgdGFrZSB0aGUgb3ZlciBhbGwgb3B0aW1pemF0aW9uIHBv c3NpYmlsaXRpZXMKPj4gaW4gYW5vdGhlciB0aHJlYWQuIE15IHF1ZXN0aW9uIHRvIHlvdSBndXlz IGluIHRoZSBjdXJyZW50IGNvbnRleHQgaXMgLQo+Pgo+PiAxLiBTaGFsbCB3ZSBrZWVwIHRoZSBw YW5lbF9wb3dlcl9jeWNsZV9kZWxheSBhcyBpcyBidXQgYWRqdXN0aW5nIGppZmZpZXMKPj4gYmFz ZWQgb24gd2FsbCBjbG9jayBhcyBWaWxsZSBzdWdnZXN0ZWQuIFRoaXMgd2lsbCBlbnN1cmUgdGhh dCB3ZSBza2lwIHRoZQo+PiB3YWl0IGluIHN1c3BlbmQvcmVzdW1lIHNjZW5hcmlvLCBvcgo+Pgo+ PiAyLiBIYXZlIHRoZSBIVyBQUFMgYmFzZWQgdHJhY2tpbmcgZm9yIGRlbGF5cyBhbmQgYWxzbyB0 YWtlIGNhcmUgdGhhdCBWREQKPj4gZm9yY2Ugb24gaXMgbm90IGNhbGxlZCBiZWZvcmUgcGFuZWwg cG93ZXIgY3ljbGUgaXMgY29tcGxldGVseSBvdmVyLiBJZiBhbGwKPj4gZG8gbm90IGFncmVlIG9y IHNlZSBpc3N1ZXMgd2l0aCB0aGlzIGFwcHJvYWNoLCB3ZSBjYW4ga2VlcCB0aGlzIGZvciBsYXRl cgo+PiB3aGVuIHdlIG9wdGltaXplIHZkZCBvbi9vZmYgc2VxdWVuY2VzIGFzIHN1Z2dlc3RlZCBi eSBzaXZhIGFuZCBnbyBmb3Igbm93Cj4+IHdpdGggYXBwcm9hY2ggMS4KPgo+IElpcmMgb24gc29t ZSBwbGF0Zm9ybXMgUFBTIHJlc2V0cyBpbmNvcnJlY3RseSBhbmQgd2UgbmVlZCB0aGUgd2FpdHMg ZnJvbQo+IHN0ZXAgMSB0byBhdm9pZCBmcnlpbmcgdGhlIHBhbmVsLiBUaGF0J3Mgd2h5IHdlIGFk ZGVkIHRoZW0uIFNvIEkgdGhpbmsKPiBhZGp1c3RpbmcgamlmZmllIGJ5IHRoZSB3YWxsY2xvY2sg dGltZSB3ZSd2ZSBiZWVuIHN1c3BlbmRlZCB3b3VsZCBiZSBiZXN0LgoKVmVyeSB3ZWxsLiBXaWxs IGdldCB0aGUgdXBkYXRlZCBwYXRjaCBvdXQgYXNhcC4KClJlZ2FyZHMKU2hvYmhpdAoKPiAtRGFu aWVsCj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK