From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v3 05/14] drm/i915/dp: generate and cache sink rate array for all DP, not just eDP 1.4 Date: Tue, 4 Apr 2017 18:20:29 -0700 Message-ID: <20170405012029.GF2688@intel.com> References: <071bad76467f8ab2e73f3f61ad52d5a468004c71.1490712890.git.jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id B61176E6E6 for ; Wed, 5 Apr 2017 01:16:37 +0000 (UTC) Content-Disposition: inline In-Reply-To: <071bad76467f8ab2e73f3f61ad52d5a468004c71.1490712890.git.jani.nikula@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org, dhinakaran.pandiyan@intel.com List-Id: intel-gfx@lists.freedesktop.org SSBhZ3JlZSB3aXRoIGRpc2VudGFuZ2xpbmcgdGhlIGZhbGxiYWNrIHJhdGUgbGltaXRpbmcKZnJv bSBzaW5rIHJhdGVzIGFuZCBpbnN0ZWFkIGp1c3QgbGltaXRpbmcgdGhlIGNvbW1vbl9yYXRlcyBh cnJheQpiYXNlZCBvbiBtYXggbGluayByYXRlLiAKClJldmlld2VkLWJ5OiA8bWFuYXNpLmQubmF2 YXJlQGludGVsLmNvbT4KCk1hbmFzaQoKT24gVHVlLCBNYXIgMjgsIDIwMTcgYXQgMDU6NTk6MDVQ TSArMDMwMCwgSmFuaSBOaWt1bGEgd3JvdGU6Cj4gVGhlcmUgaXMgc29tZSBjb25mbGF0aW9uIHJl bGF0ZWQgdG8gc2luayByYXRlcywgbWFraW5nIHRoaXMgY2hhbmdlIG1vcmUKPiBjb21wbGljYXRl ZCB0aGFuIGl0IHdvdWxkIG90aGVyd2lzZSBoYXZlIHRvIGJlLiBUaGVyZSBhcmUgdGhyZWUgY2hh bmdlcwo+IGhlcmUgdGhhdCBhcmUgcmF0aGVyIGRpZmZpY3VsdCB0byBzcGxpdCB1cDoKPiAKPiAx KSBVc2UgdGhlIGludGVsX2RwLT5zaW5rX3JhdGVzIGFycmF5IGZvciBhbGwgRFAsIG5vdCBqdXN0 IGVEUCAxLjQuIFdlCj4gICAgaW5pdGlhbGl6ZSBpdCBmcm9tIERQQ0Qgb24gZURQIDEuNCBsaWtl IGJlZm9yZSwgYnV0IGdlbmVyYXRlIGl0IGJhc2VkCj4gICAgb24gRFBfTUFYX0xJTktfUkFURSBv biBvdGhlcnMuIFRoaXMgcmVkdWNlcyBjb2RlIGNvbXBsZXhpdHkgd2hlbiB3ZQo+ICAgIG5lZWQg dG8gdXNlIHRoZSBzaW5rIHJhdGVzOyB0aGV5IGFyZSBhbGwgYWx3YXlzIGluIHRoZSBzaW5rX3Jh dGVzCj4gICAgYXJyYXkuCj4gCj4gMikgVXBkYXRlIHRoZSBzaW5rIHJhdGUgYXJyYXkgd2hlbmV2 ZXIgd2UgcmVhZCBEUENELCBhbmQgdXNlIHRoZQo+ICAgIGluZm9ybWF0aW9uIGZyb20gdGhlcmUu IFRoaXMgaW5jcmVhc2VzIGNvZGUgcmVhZGFiaWxpdHkgd2hlbiB3ZSBuZWVkCj4gICAgdGhlIHNp bmsgcmF0ZXMuCj4gCj4gMykgRGlzZW50YW5nbGUgZmFsbGJhY2sgcmF0ZSBsaW1pdGluZyBmcm9t IHNpbmsgcmF0ZXMuIEluIHRoZSBjb2RlLCB0aGUKPiAgICBtYXggcmF0ZSBpcyBhIGR5bmFtaWMg cHJvcGVydHkgb2YgdGhlICpsaW5rKiwgbm90IG9mIHRoZSAqc2luayouIERvCj4gICAgdGhlIGxp bWl0aW5nIGFmdGVyIGludGVyc2VjdGluZyB0aGUgc291cmNlIGFuZCBzaW5rIHJhdGVzLCB3aGlj aCBhcmUKPiAgICBzdGF0aWMgcHJvcGVydGllcyBvZiB0aGUgZGV2aWNlcy4KPiAKPiBUaGlzIHBh dmVzIHRoZSB3YXkgZm9yIGZvbGxvdy11cCByZWZhY3RvcmluZyB0aGF0IEkndmUgcmVmcmFpbmVk IGZyb20KPiBkb2luZyBoZXJlIHRvIGtlZXAgdGhpcyBjaGFuZ2UgYXMgc2ltcGxlIGFzIGl0IHBv c3NpYmx5IGNhbi4KPiAKPiB2MjogaW50cm9kdWNlIHVzZV9yYXRlX3NlbGVjdCBhbmQgaGFuZGxl IG5vbi1jb25maXJtaW5nIGVEUCAoVmlsbGUpCj4gCj4gdjM6IGRvbid0IGNsb2JiZXIgY2FjaGVk IGVEUCByYXRlcyBvbiBzaG9ydCBwdWxzZSAoVmlsbGUpCj4gCj4gQ2M6IE1hbmFzaSBOYXZhcmUg PG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSmFuaSBOaWt1bGEgPGph bmkubmlrdWxhQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYyAgICAgICAgICAgICAgIHwgODEgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYyB8ICAzICstCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICAgICB8ICA1ICstCj4gIDMg ZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggZTliZDc1ZmYzOTA0Li5iMzhjYmE3ZDVhYmMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtMTMzLDYgKzEzMywzNCBAQCBzdGF0aWMg dm9pZCB2bHZfc3RlYWxfcG93ZXJfc2VxdWVuY2VyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g IAkJCQkgICAgICBlbnVtIHBpcGUgcGlwZSk7Cj4gIHN0YXRpYyB2b2lkIGludGVsX2RwX3Vuc2V0 X2VkaWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gIAo+ICtzdGF0aWMgaW50IGludGVs X2RwX251bV9yYXRlcyh1OCBsaW5rX2J3X2NvZGUpCj4gK3sKPiArCXN3aXRjaCAobGlua19id19j b2RlKSB7Cj4gKwlkZWZhdWx0Ogo+ICsJCVdBUk4oMSwgImludmFsaWQgbWF4IERQIGxpbmsgYncg dmFsICV4LCB1c2luZyAxLjYyR2Jwc1xuIiwKPiArCQkgICAgIGxpbmtfYndfY29kZSk7Cj4gKwlj YXNlIERQX0xJTktfQldfMV82MjoKPiArCQlyZXR1cm4gMTsKPiArCWNhc2UgRFBfTElOS19CV18y Xzc6Cj4gKwkJcmV0dXJuIDI7Cj4gKwljYXNlIERQX0xJTktfQldfNV80Ogo+ICsJCXJldHVybiAz Owo+ICsJfQo+ICt9Cj4gKwo+ICsvKiB1cGRhdGUgc2luayByYXRlcyBmcm9tIGRwY2QgKi8KPiAr c3RhdGljIHZvaWQgaW50ZWxfZHBfc2V0X3NpbmtfcmF0ZXMoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCkKPiArewo+ICsJaW50IGksIG51bV9yYXRlczsKPiArCj4gKwludW1fcmF0ZXMgPSBpbnRl bF9kcF9udW1fcmF0ZXMoaW50ZWxfZHAtPmRwY2RbRFBfTUFYX0xJTktfUkFURV0pOwo+ICsKPiAr CWZvciAoaSA9IDA7IGkgPCBudW1fcmF0ZXM7IGkrKykKPiArCQlpbnRlbF9kcC0+c2lua19yYXRl c1tpXSA9IGRlZmF1bHRfcmF0ZXNbaV07Cj4gKwo+ICsJaW50ZWxfZHAtPm51bV9zaW5rX3JhdGVz ID0gbnVtX3JhdGVzOwo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50Cj4gIGludGVsX2RwX21heF9saW5r X2J3KHN0cnVjdCBpbnRlbF9kcCAgKmludGVsX2RwKQo+ICB7Cj4gQEAgLTIwNSwxOSArMjMzLDYg QEAgaW50ZWxfZHBfZG93bnN0cmVhbV9tYXhfZG90Y2xvY2soc3RydWN0IGludGVsX2RwICppbnRl bF9kcCkKPiAgCXJldHVybiBtYXhfZG90Y2xrOwo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50Cj4gLWlu dGVsX2RwX3NpbmtfcmF0ZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgY29uc3QgaW50ICoq c2lua19yYXRlcykKPiAtewo+IC0JaWYgKGludGVsX2RwLT5udW1fc2lua19yYXRlcykgewo+IC0J CSpzaW5rX3JhdGVzID0gaW50ZWxfZHAtPnNpbmtfcmF0ZXM7Cj4gLQkJcmV0dXJuIGludGVsX2Rw LT5udW1fc2lua19yYXRlczsKPiAtCX0KPiAtCj4gLQkqc2lua19yYXRlcyA9IGRlZmF1bHRfcmF0 ZXM7Cj4gLQo+IC0JcmV0dXJuIChpbnRlbF9kcC0+bWF4X3NpbmtfbGlua19idyA+PiAzKSArIDE7 Cj4gLX0KPiAtCj4gIHN0YXRpYyB2b2lkCj4gIGludGVsX2RwX3NldF9zb3VyY2VfcmF0ZXMoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgewo+IEBAIC0yODYsMTUgKzMwMSwyMiBAQCBzdGF0 aWMgaW50IGludGVsX2RwX3JhdGVfaW5kZXgoY29uc3QgaW50ICpyYXRlcywgaW50IGxlbiwgaW50 IHJhdGUpCj4gIHN0YXRpYyBpbnQgaW50ZWxfZHBfY29tbW9uX3JhdGVzKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCj4gIAkJCQkgaW50ICpjb21tb25fcmF0ZXMpCj4gIHsKPiAtCWNvbnN0IGlu dCAqc2lua19yYXRlczsKPiAtCWludCBzaW5rX2xlbjsKPiArCWludCBtYXhfcmF0ZSA9IGRybV9k cF9id19jb2RlX3RvX2xpbmtfcmF0ZShpbnRlbF9kcC0+bWF4X3NpbmtfbGlua19idyk7Cj4gKwlp bnQgaSwgY29tbW9uX2xlbjsKPiAgCj4gLQlzaW5rX2xlbiA9IGludGVsX2RwX3NpbmtfcmF0ZXMo aW50ZWxfZHAsICZzaW5rX3JhdGVzKTsKPiArCWNvbW1vbl9sZW4gPSBpbnRlcnNlY3RfcmF0ZXMo aW50ZWxfZHAtPnNvdXJjZV9yYXRlcywKPiArCQkJCSAgICAgaW50ZWxfZHAtPm51bV9zb3VyY2Vf cmF0ZXMsCj4gKwkJCQkgICAgIGludGVsX2RwLT5zaW5rX3JhdGVzLAo+ICsJCQkJICAgICBpbnRl bF9kcC0+bnVtX3NpbmtfcmF0ZXMsCj4gKwkJCQkgICAgIGNvbW1vbl9yYXRlcyk7Cj4gKwo+ICsJ LyogTGltaXQgcmVzdWx0cyBieSBwb3RlbnRpYWxseSByZWR1Y2VkIG1heCByYXRlICovCj4gKwlm b3IgKGkgPSAwOyBpIDwgY29tbW9uX2xlbjsgaSsrKSB7Cj4gKwkJaWYgKGNvbW1vbl9yYXRlc1tj b21tb25fbGVuIC0gaSAtIDFdIDw9IG1heF9yYXRlKQo+ICsJCQlyZXR1cm4gY29tbW9uX2xlbiAt IGk7Cj4gKwl9Cj4gIAo+IC0JcmV0dXJuIGludGVyc2VjdF9yYXRlcyhpbnRlbF9kcC0+c291cmNl X3JhdGVzLAo+IC0JCQkgICAgICAgaW50ZWxfZHAtPm51bV9zb3VyY2VfcmF0ZXMsCj4gLQkJCSAg ICAgICBzaW5rX3JhdGVzLCBzaW5rX2xlbiwKPiAtCQkJICAgICAgIGNvbW1vbl9yYXRlcyk7Cj4g KwlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3RhdGljIGludCBpbnRlbF9kcF9saW5rX3JhdGVfaW5k ZXgoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiBAQCAtMTQ5OCw4ICsxNTIwLDcgQEAgc3Rh dGljIHZvaWQgc25wcmludGZfaW50X2FycmF5KGNoYXIgKnN0ciwgc2l6ZV90IGxlbiwKPiAgCj4g IHN0YXRpYyB2b2lkIGludGVsX2RwX3ByaW50X3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCj4gIHsKPiAtCWNvbnN0IGludCAqc2lua19yYXRlczsKPiAtCWludCBzaW5rX2xlbiwgY29t bW9uX2xlbjsKPiArCWludCBjb21tb25fbGVuOwo+ICAJaW50IGNvbW1vbl9yYXRlc1tEUF9NQVhf U1VQUE9SVEVEX1JBVEVTXTsKPiAgCWNoYXIgc3RyWzEyOF07IC8qIEZJWE1FOiB0b28gYmlnIGZv ciBzdGFjaz8gKi8KPiAgCj4gQEAgLTE1MTAsOCArMTUzMSw4IEBAIHN0YXRpYyB2b2lkIGludGVs X2RwX3ByaW50X3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAkJCSAgIGludGVs X2RwLT5zb3VyY2VfcmF0ZXMsIGludGVsX2RwLT5udW1fc291cmNlX3JhdGVzKTsKPiAgCURSTV9E RUJVR19LTVMoInNvdXJjZSByYXRlczogJXNcbiIsIHN0cik7Cj4gIAo+IC0Jc2lua19sZW4gPSBp bnRlbF9kcF9zaW5rX3JhdGVzKGludGVsX2RwLCAmc2lua19yYXRlcyk7Cj4gLQlzbnByaW50Zl9p bnRfYXJyYXkoc3RyLCBzaXplb2Yoc3RyKSwgc2lua19yYXRlcywgc2lua19sZW4pOwo+ICsJc25w cmludGZfaW50X2FycmF5KHN0ciwgc2l6ZW9mKHN0ciksCj4gKwkJCSAgIGludGVsX2RwLT5zaW5r X3JhdGVzLCBpbnRlbF9kcC0+bnVtX3NpbmtfcmF0ZXMpOwo+ICAJRFJNX0RFQlVHX0tNUygic2lu ayByYXRlczogJXNcbiIsIHN0cik7Cj4gIAo+ICAJY29tbW9uX2xlbiA9IGludGVsX2RwX2NvbW1v bl9yYXRlcyhpbnRlbF9kcCwgY29tbW9uX3JhdGVzKTsKPiBAQCAtMTU3Nyw3ICsxNTk4LDggQEAg aW50IGludGVsX2RwX3JhdGVfc2VsZWN0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBy YXRlKQo+ICB2b2lkIGludGVsX2RwX2NvbXB1dGVfcmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLCBpbnQgcG9ydF9jbG9jaywKPiAgCQkJICAgdWludDhfdCAqbGlua19idywgdWludDhfdCAq cmF0ZV9zZWxlY3QpCj4gIHsKPiAtCWlmIChpbnRlbF9kcC0+bnVtX3NpbmtfcmF0ZXMpIHsKPiAr CS8qIGVEUCAxLjQgcmF0ZSBzZWxlY3QgbWV0aG9kLiAqLwo+ICsJaWYgKGludGVsX2RwLT51c2Vf cmF0ZV9zZWxlY3QpIHsKPiAgCQkqbGlua19idyA9IDA7Cj4gIAkJKnJhdGVfc2VsZWN0ID0KPiAg CQkJaW50ZWxfZHBfcmF0ZV9zZWxlY3QoaW50ZWxfZHAsIHBvcnRfY2xvY2spOwo+IEBAIC0zNzAy LDYgKzM3MjQsMTEgQEAgaW50ZWxfZWRwX2luaXRfZHBjZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQo+ICAJCWludGVsX2RwLT5udW1fc2lua19yYXRlcyA9IGk7Cj4gIAl9Cj4gIAo+ICsJaWYg KGludGVsX2RwLT5udW1fc2lua19yYXRlcykKPiArCQlpbnRlbF9kcC0+dXNlX3JhdGVfc2VsZWN0 ID0gdHJ1ZTsKPiArCWVsc2UKPiArCQlpbnRlbF9kcF9zZXRfc2lua19yYXRlcyhpbnRlbF9kcCk7 Cj4gKwo+ICAJcmV0dXJuIHRydWU7Cj4gIH0KPiAgCj4gQEAgLTM3MTIsNiArMzczOSwxMCBAQCBp bnRlbF9kcF9nZXRfZHBjZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJaWYgKCFpbnRl bF9kcF9yZWFkX2RwY2QoaW50ZWxfZHApKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gKwkvKiBE b24ndCBjbG9iYmVyIGNhY2hlZCBlRFAgcmF0ZXMuICovCj4gKwlpZiAoIWlzX2VkcChpbnRlbF9k cCkpCj4gKwkJaW50ZWxfZHBfc2V0X3NpbmtfcmF0ZXMoaW50ZWxfZHApOwo+ICsKPiAgCWlmIChk cm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kcC0+YXV4LCBEUF9TSU5LX0NPVU5ULAo+ICAJCQkgICAg ICZpbnRlbF9kcC0+c2lua19jb3VudCwgMSkgPCAwKQo+ICAJCXJldHVybiBmYWxzZTsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4gaW5kZXggMDA0 OGI1MjBiYWY3Li42OTRhZDBmZmI1MjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4gQEAgLTE0Niw3ICsxNDYsOCBAQCBpbnRlbF9kcF9s aW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4g IAkJbGlua19jb25maWdbMV0gfD0gRFBfTEFORV9DT1VOVF9FTkhBTkNFRF9GUkFNRV9FTjsKPiAg CWRybV9kcF9kcGNkX3dyaXRlKCZpbnRlbF9kcC0+YXV4LCBEUF9MSU5LX0JXX1NFVCwgbGlua19j b25maWcsIDIpOwo+ICAKPiAtCWlmIChpbnRlbF9kcC0+bnVtX3NpbmtfcmF0ZXMpCj4gKwkvKiBl RFAgMS40IHJhdGUgc2VsZWN0IG1ldGhvZC4gKi8KPiArCWlmICghbGlua19idykKPiAgCQlkcm1f ZHBfZHBjZF93cml0ZSgmaW50ZWxfZHAtPmF1eCwgRFBfTElOS19SQVRFX1NFVCwKPiAgCQkJCSAg JnJhdGVfc2VsZWN0LCAxKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCBm NTk1NzQyNjFkYzYuLjc3YTk0YWFhOThjMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4gQEAgLTk1Miw5ICs5NTIsMTAgQEAgc3RydWN0IGludGVsX2RwIHsKPiAgCS8qIHNvdXJjZSBy YXRlcyAqLwo+ICAJaW50IG51bV9zb3VyY2VfcmF0ZXM7Cj4gIAljb25zdCBpbnQgKnNvdXJjZV9y YXRlczsKPiAtCS8qIHNpbmsgcmF0ZXMgYXMgcmVwb3J0ZWQgYnkgRFBfU1VQUE9SVEVEX0xJTktf UkFURVMgKi8KPiAtCXVpbnQ4X3QgbnVtX3NpbmtfcmF0ZXM7Cj4gKwkvKiBzaW5rIHJhdGVzIGFz IHJlcG9ydGVkIGJ5IERQX01BWF9MSU5LX1JBVEUvRFBfU1VQUE9SVEVEX0xJTktfUkFURVMgKi8K PiArCWludCBudW1fc2lua19yYXRlczsKPiAgCWludCBzaW5rX3JhdGVzW0RQX01BWF9TVVBQT1JU RURfUkFURVNdOwo+ICsJYm9vbCB1c2VfcmF0ZV9zZWxlY3Q7Cj4gIAkvKiBNYXggbGFuZSBjb3Vu dCBmb3IgdGhlIHNpbmsgYXMgcGVyIERQQ0QgcmVnaXN0ZXJzICovCj4gIAl1aW50OF90IG1heF9z aW5rX2xhbmVfY291bnQ7Cj4gIAkvKiBNYXggbGluayBCVyBmb3IgdGhlIHNpbmsgYXMgcGVyIERQ Q0QgcmVnaXN0ZXJzICovCj4gLS0gCj4gMi4xLjQKPiAKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==