From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH] drm/i915/skl: enable PC9/10 power states during suspend-to-idle Date: Thu, 19 Nov 2015 20:12:47 +0200 Message-ID: <1447956767.29536.66.camel@intel.com> References: <1447860750-18110-1-git-send-email-imre.deak@intel.com> <20151118163356.GI20799@phenom.ffwll.local> <1447865083.14073.36.camel@intel.com> <20151119133448.GA4670@patrik-desktop.isw.intel.com> <1447942007.29536.29.camel@intel.com> <20151119180053.GA7765@patrik-desktop.isw.intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id E29E96E9F7 for ; Thu, 19 Nov 2015 10:12:50 -0800 (PST) In-Reply-To: <20151119180053.GA7765@patrik-desktop.isw.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Patrik Jakobsson Cc: intel-gfx@lists.freedesktop.org, "Rafael J. Wysocki" , Nivedita Swaminathan List-Id: intel-gfx@lists.freedesktop.org T24gdG8sIDIwMTUtMTEtMTkgYXQgMTk6MDAgKzAxMDAsIFBhdHJpayBKYWtvYnNzb24gd3JvdGU6 Cj4gT24gVGh1LCBOb3YgMTksIDIwMTUgYXQgMDQ6MDY6NDdQTSArMDIwMCwgSW1yZSBEZWFrIHdy b3RlOgo+ID4gT24gdG8sIDIwMTUtMTEtMTkgYXQgMTQ6MzQgKzAxMDAsIFBhdHJpayBKYWtvYnNz b24gd3JvdGU6Cj4gPiA+IE9uIFdlZCwgTm92IDE4LCAyMDE1IGF0IDA2OjQ0OjQzUE0gKzAyMDAs IEltcmUgRGVhayB3cm90ZToKPiA+ID4gPiBPbiBrZSwgMjAxNS0xMS0xOCBhdCAxNzozMyArMDEw MCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4gPiA+IE9uIFdlZCwgTm92IDE4LCAyMDE1IGF0 IDA1OjMyOjMwUE0gKzAyMDAsIEltcmUgRGVhayB3cm90ZToKPiA+ID4gPiA+ID4gRHVyaW5nIHN1 c3BlbmQtdG8taWRsZSB3ZSBuZWVkIHRvIGtlZXAgdGhlIERNQyBmaXJtd2FyZSBhY3RpdmUgYW5k IERDNgo+ID4gPiA+ID4gPiBlbmFibGVkLCBzaW5jZSBvdGhlcndpc2Ugd2Ugd29uJ3QgcmVhY2gg ZGVlcCBzeXN0ZW0gcG93ZXIgc3RhdGVzIGxpa2UKPiA+ID4gPiA+ID4gUEM5LzEwLiBUaGUgbGVh ZCBmb3IgdGhpcyBjYW1lIGZyb20gTml2ZWRpdGEgd2hvIG5vdGljZWQgdGhhdCB0aGUKPiA+ID4g PiA+ID4ga2VybmVsJ3MgdHVyYm9zdGF0IHRvb2wgZGlkbid0IHJlcG9ydCBhbnkgUEM5LzEwIHJl c2lkZW5jeSBjaGFuZ2UKPiA+ID4gPiA+ID4gYWNyb3NzIGFuICdlY2hvIGZyZWV6ZSA+IC9zeXMv cG93ZXIvc3RhdGUnLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gUmVwb3J0ZWQtYnk6IE5pdmVk aXRhIFN3YW1pbmF0aGFuwqAKPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogSW1yZSBEZWFrIDxp bXJlLmRlYWtAaW50ZWwuY29tPgo+ID4gPiA+ID4gPiAtLS0KPiA+ID4gPiA+ID4gwqBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIHwgNDQgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0KPiA+ID4gPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIHzCoMKgMSArCj4gPiA+ID4gPiA+IMKgMiBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25z KCspLCAxMCBkZWxldGlvbnMoLSkKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYwo+ID4gPiA+ID4gPiBpbmRleCA2MzQ0ZGZiLi42NDllMjBhIDEwMDY0NAo+ID4g PiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gPiA+ID4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiA+ID4gPiA+ID4gQEAgLTYy NCw2ICs2MjQsMTQgQEAgc3RhdGljIGludCB2bHZfcmVzdW1lX3ByZXBhcmUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiA+ID4gPiDCoAkJCcKgwqDCoMKgwqDCoGJvb2wg cnBtX3Jlc3VtZSk7Cj4gPiA+ID4gPiA+IMKgc3RhdGljIGludCBieHRfcmVzdW1lX3ByZXBhcmUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiA+ID4gPiA+ID4gwqAKPiA+ID4g PiA+ID4gK3N0YXRpYyBib29sIHN1c3BlbmRfdG9faWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsjaWYgSVNfRU5BQkxFRChD T05GSUdfQUNQSV9TTEVFUCkKPiA+ID4gPiA+ID4gKwlpZiAoYWNwaV90YXJnZXRfc3lzdGVtX3N0 YXRlKCkgPCBBQ1BJX1NUQVRFX1MzKQo+ID4gPiA+ID4gPiArCQlyZXR1cm4gdHJ1ZTsKPiA+ID4g PiA+ID4gKyNlbmRpZgo+ID4gPiA+ID4gPiArCXJldHVybiBmYWxzZTsKPiA+ID4gPiA+ID4gK30K PiA+ID4gPiA+ID4gwqAKPiA+ID4gPiA+ID4gwqBzdGF0aWMgaW50IGk5MTVfZHJtX3N1c3BlbmQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ID4gPiA+ID4gwqB7Cj4gPiA+ID4gPiA+IEBAIC02 NzYsMTEgKzY4NCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcm1fc3VzcGVuZChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ID4gPiA+ID4gPiDCoAo+ID4gPiA+ID4gPiDCoAlpOTE1X3NhdmVfc3RhdGUo ZGV2KTsKPiA+ID4gPiA+ID4gwqAKPiA+ID4gPiA+ID4gLQlvcHJlZ2lvbl90YXJnZXRfc3RhdGUg PSBQQ0lfRDNjb2xkOwo+ID4gPiA+ID4gPiAtI2lmIElTX0VOQUJMRUQoQ09ORklHX0FDUElfU0xF RVApCj4gPiA+ID4gPiA+IC0JaWYgKGFjcGlfdGFyZ2V0X3N5c3RlbV9zdGF0ZSgpIDwgQUNQSV9T VEFURV9TMykKPiA+ID4gPiA+ID4gLQkJb3ByZWdpb25fdGFyZ2V0X3N0YXRlID0gUENJX0QxOwo+ ID4gPiA+ID4gPiAtI2VuZGlmCj4gPiA+ID4gPiA+ICsJb3ByZWdpb25fdGFyZ2V0X3N0YXRlID0g c3VzcGVuZF90b19pZGxlKGRldl9wcml2KSA/IFBDSV9EMSA6IFBDSV9EM2NvbGQ7Cj4gPiA+ID4g PiA+IMKgCWludGVsX29wcmVnaW9uX25vdGlmeV9hZGFwdGVyKGRldiwgb3ByZWdpb25fdGFyZ2V0 X3N0YXRlKTsKPiA+ID4gPiA+ID4gwqAKPiA+ID4gPiA+ID4gwqAJaW50ZWxfdW5jb3JlX2ZvcmNl d2FrZV9yZXNldChkZXYsIGZhbHNlKTsKPiA+ID4gPiA+ID4gQEAgLTcwMSwxNSArNzA1LDI2IEBA IHN0YXRpYyBpbnQgaTkxNV9kcm1fc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4g PiA+ID4gPiDCoHN0YXRpYyBpbnQgaTkxNV9kcm1fc3VzcGVuZF9sYXRlKHN0cnVjdCBkcm1fZGV2 aWNlICpkcm1fZGV2LCBib29sIGhpYmVybmF0aW9uKQo+ID4gPiA+ID4gPiDCoHsKPiA+ID4gPiA+ ID4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHJtX2Rldi0+ZGV2X3By aXZhdGU7Cj4gPiA+ID4gPiA+ICsJYm9vbCBmd19jc3I7Cj4gPiA+ID4gPiA+IMKgCWludCByZXQ7 Cj4gPiA+ID4gPiA+IMKgCj4gPiA+ID4gPiA+IC0JaW50ZWxfcG93ZXJfZG9tYWluc19zdXNwZW5k KGRldl9wcml2KTsKPiA+ID4gPiA+ID4gKwlmd19jc3IgPSBzdXNwZW5kX3RvX2lkbGUoZGV2X3By aXYpICYmIGRldl9wcml2LT5jc3IuZG1jX3BheWxvYWQ7Cj4gPiA+ID4gPiA+ICsJLyoKPiA+ID4g PiA+ID4gKwnCoCogSW4gY2FzZSBvZiBmaXJtd2FyZSBhc3Npc3RlZCBjb250ZXh0IHNhdmUvcmVz dG9yZSBkb24ndCBtYW51YWxseQo+ID4gPiA+ID4gPiArCcKgKiBkZWluaXQgdGhlIHBvd2VyIGRv bWFpbnMuIFRoaXMgYWxzbyBtZWFucyB0aGUgQ1NSL0RNQyBmaXJtd2FyZSB3aWxsCj4gPiA+ID4g PiA+ICsJwqAqIHN0YXkgYWN0aXZlLCBpdCB3aWxsIHBvd2VyIGRvd24gYW55IEhXIHJlc291cmNl cyBhcyByZXF1aXJlZCBhbmQKPiA+ID4gPiA+ID4gKwnCoCogYWxzbyBlbmFibGUgZGVlcGVyIHN5 c3RlbSBwb3dlciBzdGF0ZXMgdGhhdCB3b3VsZCBiZSBibG9ja2VkIGlmIHRoZQo+ID4gPiA+ID4g PiArCcKgKiBmaXJtd2FyZSB3YXMgaW5hY3RpdmUuCj4gPiA+ID4gPiA+ICsJwqAqLwo+ID4gPiA+ ID4gPiArCWlmICghZndfY3NyKQo+ID4gPiA+ID4gPiArCQlpbnRlbF9wb3dlcl9kb21haW5zX3N1 c3BlbmQoZGV2X3ByaXYpOwo+ID4gPiA+ID4gPiDCoAo+ID4gPiA+ID4gPiDCoAlyZXQgPSBpbnRl bF9zdXNwZW5kX2NvbXBsZXRlKGRldl9wcml2KTsKPiA+ID4gPiA+ID4gwqAKPiA+ID4gPiA+ID4g wqAJaWYgKHJldCkgewo+ID4gPiA+ID4gPiDCoAkJRFJNX0VSUk9SKCJTdXNwZW5kIGNvbXBsZXRl IGZhaWxlZDogJWRcbiIsIHJldCk7Cj4gPiA+ID4gPiA+IC0JCWludGVsX3Bvd2VyX2RvbWFpbnNf aW5pdF9odyhkZXZfcHJpdiwgdHJ1ZSk7Cj4gPiA+ID4gPiA+ICsJCWlmICghZndfY3NyKQo+ID4g PiA+ID4gPiArCQkJaW50ZWxfcG93ZXJfZG9tYWluc19pbml0X2h3KGRldl9wcml2LCB0cnVlKTsK PiA+ID4gPiA+ID4gwqAKPiA+ID4gPiA+ID4gwqAJCXJldHVybiByZXQ7Cj4gPiA+ID4gPiA+IMKg CX0KPiA+ID4gPiA+ID4gQEAgLTczMCw2ICs3NDUsOCBAQCBzdGF0aWMgaW50IGk5MTVfZHJtX3N1 c3BlbmRfbGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiwgYm9vbCBoaWJlcm5hdGlvbikK PiA+ID4gPiA+ID4gwqAJaWYgKCEoaGliZXJuYXRpb24gJiYgSU5URUxfSU5GTyhkZXZfcHJpdikt PmdlbiA8IDYpKQo+ID4gPiA+ID4gPiDCoAkJcGNpX3NldF9wb3dlcl9zdGF0ZShkcm1fZGV2LT5w ZGV2LCBQQ0lfRDNob3QpOwo+ID4gPiA+ID4gPiDCoAo+ID4gPiA+ID4gPiArCWRldl9wcml2LT5z dXNwZW5kZWRfdG9faWRsZSA9IHN1c3BlbmRfdG9faWRsZShkZXZfcHJpdik7Cj4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gwqAJcmV0dXJuIDA7Cj4gPiA+ID4gPiA+IMKgfQo+ID4gPiA+ID4gPiDC oAo+ID4gPiA+ID4gPiBAQCAtODQyLDggKzg1OSwxMCBAQCBzdGF0aWMgaW50IGk5MTVfZHJtX3Jl c3VtZV9lYXJseShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gPiA+ID4gPiDCoAnCoCogRklY TUU6IFRoaXMgc2hvdWxkIGJlIHNvbHZlZCB3aXRoIGEgc3BlY2lhbCBoZG1pIHNpbmsgZGV2aWNl IG9yCj4gPiA+ID4gPiA+IMKgCcKgKiBzaW1pbGFyIHNvIHRoYXQgcG93ZXIgZG9tYWlucyBjYW4g YmUgZW1wbG95ZWQuCj4gPiA+ID4gPiA+IMKgCcKgKi8KPiA+ID4gPiA+ID4gLQlpZiAocGNpX2Vu YWJsZV9kZXZpY2UoZGV2LT5wZGV2KSkKPiA+ID4gPiA+ID4gLQkJcmV0dXJuIC1FSU87Cj4gPiA+ ID4gPiA+ICsJaWYgKHBjaV9lbmFibGVfZGV2aWNlKGRldi0+cGRldikpIHsKPiA+ID4gPiA+ID4g KwkJcmV0ID0gLUVJTzsKPiA+ID4gPiA+ID4gKwkJZ290byBvdXQ7Cj4gPiA+ID4gPiA+ICsJfQo+ ID4gPiA+ID4gPiDCoAo+ID4gPiA+ID4gPiDCoAlwY2lfc2V0X21hc3RlcihkZXYtPnBkZXYpOwo+ ID4gPiA+ID4gPiDCoAo+ID4gPiA+ID4gPiBAQCAtODYxLDcgKzg4MCwxMiBAQCBzdGF0aWMgaW50 IGk5MTVfZHJtX3Jlc3VtZV9lYXJseShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gPiA+ID4g PiDCoAkJaHN3X2Rpc2FibGVfcGM4KGRldl9wcml2KTsKPiA+ID4gPiA+ID4gwqAKPiA+ID4gPiA+ ID4gwqAJaW50ZWxfdW5jb3JlX3Nhbml0aXplKGRldik7Cj4gPiA+ID4gPiA+IC0JaW50ZWxfcG93 ZXJfZG9tYWluc19pbml0X2h3KGRldl9wcml2LCB0cnVlKTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gPiArCWlmICghKGRldl9wcml2LT5zdXNwZW5kZWRfdG9faWRsZSAmJiBkZXZfcHJpdi0+Y3Ny LmRtY19wYXlsb2FkKSkKPiA+ID4gPiA+ID4gKwkJaW50ZWxfcG93ZXJfZG9tYWluc19pbml0X2h3 KGRldl9wcml2LCB0cnVlKTsKPiA+ID4gPiA+IAo+ID4gPiA+ID4gVGhpcyBkb2Vzbid0IHdvcmsg d2hlbiBlLmcuIHN5c3RlbSBzdXNwZW5kIHRvIFMzIGZhaWxzLCBpbiB3aGljaCBjYXNlIGRtYwo+ ID4gPiA+ID4gd2lsbCBhbHNvIHN1cnZpdmUuIFdlIG5lZWQgdGhlIHBtIGNvcmUgdG8gdGVsbCB1 cyB3aGF0IHJlYWxseSBoYXBwZW5lZCwKPiA+ID4gPiA+IGFuZCBSYWZhZWwgV3l6b2NraSB3YXMg d29ya2luZyBvbiBwYXRjaGVzIGZvciB0aGF0Ogo+ID4gPiA+ID4gCj4gPiA+ID4gPiBodHRwOi8v bGttbC5pdS5lZHUvaHlwZXJtYWlsL2xpbnV4L2tlcm5lbC8xNTEwLjAvMDQyNjYuaHRtbAo+ID4g PiA+ID4gCj4gPiA+ID4gPiBTcGVjaWZpY2FsbHkgd2UgbmVlZCB0aGUgcG1fc3VzcGVuZC9yZXN1 bWVfdmlhX2Zpcm13YXJlIGhlbHBlcnMuCj4gPiA+ID4gPiBVbmZvcnR1bmF0ZWx5IHRoZXNlIGRp ZG4ndCBtYWtlIGl0IGludG8gNC40LCBzbyB3ZSBuZWVkIHRvIHBpY2sgUmFmYWVsLgo+ID4gPiA+ IAo+ID4gPiA+IEkgdGhpbmsgaXQgZG9lcyB3b3JrLiBXZSBkZWFjdGl2YXRlIHRoZSBmaXJtd2Fy ZSBkdXJpbmcgUzMsUzQgc3VzcGVuZAo+ID4gPiA+IGluIGFueSBjYXNlIGFuZCByZXByb2dyYW0g aXQgZHVyaW5nIFMzLFM0IHJlc3VtZSwgc28gaXQgZG9lc24ndCBtYXR0ZXIKPiA+ID4gPiBpZiB0 aGUgZmlybXdhcmUgY29udGVudHMgc3Vydml2ZSBvciBub3QuIFdoYXQgd2Ugd2FudCBpcyB0byBl bnN1cmUgdGhhdAo+ID4gPiA+IGR1cmluZyBzdXNwZW5kLXRvLWlkbGUgd2UgZG9uJ3QgZGVhY3Rp dmF0ZSB0aGUgZmlybXdhcmUgdGhhdCBpcyB3ZQo+ID4gPiA+IGRvbid0IGRpc2FibGUgREM2IGFu ZCB3ZSBjYW4gZGVjaWRlIHRoYXQgYmFzZWQKPiA+ID4gPiBvbsKgYWNwaV90YXJnZXRfc3lzdGVt X3N0YXRlKCkuCj4gPiA+IAo+ID4gPiBJZiBTMyBmYWlscyB3ZSB3b3VsZCByZXByb2dyYW0gdGhl IERNQyBldmVuIHRob3VnaCB0aGVyZSBpcyBubyBuZWVkIGZvciBpdC4gRG8KPiA+ID4gd2Uga25v dyBpZiB0aGF0IGlzIGFsbG93ZWQ/IFBvdGVudGlhbGx5IHRoZSBETUMgY291bGQgYmUgZG9pbmcg c29tZXRoaW5nIHdoZW4gd2UKPiA+ID4gcmVwcm9ncmFtIGl0IGFuZCBwdXQgdXMgaW4gYW4gdW5k ZWZpbmVkIHN0YXRlLiBPbiB0aGUgb3RoZXIgaGFuZCwgb25lIHdvdWxkIGhvcGUKPiA+ID4gdGhh dCBpdCdzIGNsZXZlciBlbm91Z2ggdG8gcHV0IHVzIGJhY2sgaW4gYSB2YWxpZCBzdGF0ZSB3aGVu IHN0YXJ0aW5nIGFnYWluLgo+ID4gPiAKPiA+ID4gSSBoYXZlbid0IHNlZW4gYW55IHByb2JsZW1z IHdoZW4gcmVwcm9ncmFtbWluZyB0aGUgRE1DIHNvIEkgdGhpbmsgdGhpcyBmaXggaXMgb2sKPiA+ ID4gZm9yIG5vdyBhbmQgd2UgY2FuIGRvIHRoZSBwcm9wZXIgZml4IHdoZW4gUmFmYWVsJ3MgcGF0 Y2hlcyBsYW5kLgo+ID4gCj4gPiBXZSB1bmluaXRpYWxpemUgdGhlIHdob2xlIGRpc3BsYXkgYmxv Y2sgYW5kIHB1dCB0aGUgZGV2aWNlIGludG8gRDMgc3RhdGUsIEkgdGhpbmsKPiA+IGFmdGVyIHRo YXQgdGhlIERNQyBzaG91bGQgYmUgaW5hY3RpdmUuCj4gCj4gT2sgc28gd2UgYXJlIGZpbmUgb24g YW4gUzMgZmFpbCBlaXRoZXIgd2F5Lgo+IAo+ID4gCj4gPiBJIG5vdGljZWQgbm93IHRoYXQgZGNf c3RhdGVfZGVidWdtYXNrX21lbW9yeV91cCBnZXRzIHJlc2V0IGFmdGVyIFMzL1M0LiBJIGJlbGll dmUKPiA+IHRoaXMgaXMgd2hhdCBhY3R1YWxseSBhY3RpdmF0ZXMgdGhlIGZpcm13YXJlLiBTbyBo b3cgYWJvdXQgdXNpbmcgdGhpcyBmbGFnIHRvCj4gPiBkZWNpZGUgd2hldGhlciB0byByZXByb2dy YW0gdGhlIGZpcm13YXJlIGFuZCBzd2l0Y2ggdG8gdXNpbmcgdGhlIG5ldyBoZWxwZXJzIG9uY2UK PiA+IFJhZmFlbCBhZGRlZCB0aGVtPwo+IAo+IFllcywgaXQgc2VlbXMgdG8gaG9sZCBvZmYgYW55 IERDNS82IHN0YXRlIHRyYW5zaXN0aW9ucyB1bnRpbCB3ZSBkbyBhCj4gZGNfc3RhdGVfZGVidWdt YXNrX21lbW9yeV91cCgpLiBCdXQgSSdtIG5vdCBzdXJlIHdlIGNhbiB0cnVzdCB0aG9zZSBiaXRz IHRvIGJlCj4gY2xlYXJlZC4gRmVlbHMgYSBiaXQgbGlrZSB0aGUgQ1NSX1BST0dSQU0oMCkgY2hl Y2sgYWxsIG92ZXIgYWdhaW4uwqAKCkl0J3MgYSBiaXQgZGlmZmVyZW50IHRob3VnaDogdGhlIHBy b2dyYW1taW5nIHNlcXVlbmNlIHNheXMgd2UgbmVlZCB0bwpmaXJzdCBwcm9ncmFtIHRoZSBmaXJt d2FyZSBhbmQgdGhlbiBzZXQgdGhpcyBmbGFnLiBGcm9tIHdoaWNoIEkgYXNzdW1lCml0IHNob3Vs ZG4ndCBiZSBzZXQgd2hpbGUgd2UgYXJlIHByb2dyYW1taW5nIGl0LiBCdXQgeWVhLCBpdCdzIG5v dCB0b28KY2xlYXIgaW4gYW55IGNhc2UgaW4gdGhlIHNwZWMsIEkgd2lsbCB0cnkgdG8gY2xhcmlm eSBpdCB3aXRoIHRoZSBGVyBwZW9wbGUuCgo+IEknZCBwcmVmZXIgdG8KPiBrZWVwIHRoZSBwYXRj aCBhcyBpcyBpZiBvayB3aXRoIHlvdSBzbzoKPiAKPiBSZXZpZXdlZC1ieTogUGF0cmlrIEpha29i c3NvbiA8cGF0cmlrLmpha29ic3NvbkBsaW51eC5pbnRlbC5jb20+CgpPaywgdGhhbmtzIGZvciB0 aGUgcmV2aWV3LgoKPiAKPiA+IAo+ID4gLS1JbXJlCj4gPiAKPiA+IApfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=