From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v8 10/19] drm/i915/dsc: Compute Rate Control parameters for DSC Date: Tue, 6 Nov 2018 12:14:50 -0800 Message-ID: <20181106201450.GD26420@intel.com> References: <20181102213138.301-1-manasi.d.navare@intel.com> <20181102213138.301-11-manasi.d.navare@intel.com> <20181106143338.GV9144@intel.com> <20181106165240.GC18274@intel.com> <20181106170050.GC9144@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181106170050.GC9144@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBOb3YgMDYsIDIwMTggYXQgMDc6MDA6NTBQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFR1ZSwgTm92IDA2LCAyMDE4IGF0IDA4OjUyOjQxQU0gLTA4MDAsIE1hbmFz aSBOYXZhcmUgd3JvdGU6Cj4gPiBPbiBUdWUsIE5vdiAwNiwgMjAxOCBhdCAwNDozMzozOFBNICsw MjAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPiA+IE9uIEZyaSwgTm92IDAyLCAyMDE4IGF0 IDAyOjMxOjI5UE0gLTA3MDAsIE1hbmFzaSBOYXZhcmUgd3JvdGU6Cj4gPiA+ID4gRnJvbTogR2F1 cmF2IEsgU2luZ2ggPGdhdXJhdi5rLnNpbmdoQGludGVsLmNvbT4KPiA+ID4gPiAKPiA+ID4gPiBU aGlzIGNvbXB1dGF0aW9uIG9mIFJDIHBhcmFtcyBoYXBwZW5zIGluIHRoZSBhdG9taWMgY29tbWl0 IHBoYXNlCj4gPiA+ID4gZHVyaW5nIGNvbXB1dGVfY29uZmlnKCkgdG8gdmFsaWRhdGUgaWYgZGlz cGxheSBzdHJlYW0gY29tcHJlc3Npb24KPiA+ID4gPiBjYW4gYmUgZW5hYmxlZCBmb3IgdGhlIHJl cXVlc3RlZCBtb2RlLgo+ID4gPiA+IAo+ID4gPiA+IHY3IChGcm9tIE1hbmFzaSk6Cj4gPiA+ID4g KiBVc2UgRFJNX0RFQlVHIGluc3RlYWQgb2YgRFJNX0VSUk9SIChWaWxsZSkKPiA+ID4gPiAqIFVz ZSBFcnJvciBudW1iZXJpbnN0ZWFkIG9mIC0xIChWaWxsZSkKPiA+ID4gPiB2NiAoRnJvbSBNYW5h c2kpOgo+ID4gPiA+ICogVXNlIDkgaW5zdGVhZCBvZiAweDkgZm9yIGNvbnNpc3RlbmN5IChBbnVz aGEpCj4gPiA+ID4gCj4gPiA+ID4gdjUgKEZyb20gTWFuYXNpKToKPiA+ID4gPiAqIEZpeCBkaW0g Y2hlY2twYXRjaCB3YXJuaW5ncy9jaGVja3MKPiA+ID4gPiB2NChGcm9tIEdhdXJhdik6Cj4gPiA+ ID4gKiBObyBjaGFuZ2UuUmViYXNlIG9uIGRybS10aXAKPiA+ID4gPiAKPiA+ID4gPiB2MyAoRnJv bSBHYXVyYXYpOgo+ID4gPiA+ICogUmViYXNlIG9uIHRvcCBvZiBNYW5hc2kncyBsYXRlc3Qgc2Vy aWVzCj4gPiA+ID4gKiBSZXR1cm4gLXZlIHZhbHVlIGluIGNhc2Ugb2YgZmFpbHVyZSBzY2VuYXJp b3MgKE1hbmFzaSkKPiA+ID4gPiAKPiA+ID4gPiBGaXggcmV2aWV3IGNvbW1lbnRzIGZyb20gVmls bGU6Cj4gPiA+ID4gKiBSZW1vdmUgdW5uZWNlc3NhcnkgY29tbWVudHMKPiA+ID4gPiAqIFJlbW92 ZSB1bm5lY2Vzc2FyeSBwYXJhbnRoZXNpcwo+ID4gPiA+ICogQWRkIGNvbW1lbnRzIGZvciBmZXcg UkMgcGFyYW1zIGNhbGN1bGF0aW9ucwo+ID4gPiA+IAo+ID4gPiA+IHYyIChGcm9tIE1hbmFzaSk6 Cj4gPiA+ID4gKiBSZWJhc2UgR2F1cmF2J3MgcGF0Y2ggZnJvbSBpbnRlbC1nZnggdG8gZ2Z4LWlu dGVybmFsCj4gPiA+ID4gKiBVc2Ugc3RydWN0IGRybV9kc2NfY2ZnIGluc3RlYWQgb2Ygc3RydWN0 IGludGVsX2RwCj4gPiA+ID4gYXMgYSBwYXJhbWV0ZXIKPiA+ID4gPiAKPiA+ID4gPiBDYzogTWFu YXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiA+ID4gPiBDYzogSmFuaSBO aWt1bGEgPGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbT4KPiA+ID4gPiBDYzogVmlsbGUgU3ly amFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+ID4gU2lnbmVkLW9mZi1i eTogR2F1cmF2IEsgU2luZ2ggPGdhdXJhdi5rLnNpbmdoQGludGVsLmNvbT4KPiA+ID4gPiBTaWdu ZWQtb2ZmLWJ5OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4g PiA+IFJldmlld2VkLWJ5OiBBbnVzaGEgU3JpdmF0c2EgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5j b20+Cj4gPiA+ID4gLS0tCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2Mu YyB8IDEyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gPiAgMSBmaWxlIGNo YW5nZWQsIDEyNyBpbnNlcnRpb25zKCspCj4gPiA+ID4gCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Zkc2MuYwo+ID4gPiA+IGluZGV4IDBhMTkxOGYyZjY0My4uYTc2Zjc4YjljMGVlIDEwMDY0 NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwo+ID4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwo+ID4gPiA+IEBAIC0zMTcs NiArMzE3LDEzMCBAQCBzdGF0aWMgaW50IGdldF9jb2x1bW5faW5kZXhfZm9yX3JjX3BhcmFtcyh1 OCBiaXRzX3Blcl9jb21wb25lbnQpCj4gPiA+ID4gIAl9Cj4gPiA+ID4gIH0KPiA+ID4gPiAgCj4g PiA+ID4gK3N0YXRpYyBpbnQgaW50ZWxfY29tcHV0ZV9yY19wYXJhbWV0ZXJzKHN0cnVjdCBkcm1f ZHNjX2NvbmZpZyAqdmRzY19jZmcpCj4gPiA+ID4gK3sKPiA+ID4gPiArCXVuc2lnbmVkIGxvbmcg Z3JvdXBzX3Blcl9saW5lID0gMDsKPiA+ID4gPiArCXVuc2lnbmVkIGxvbmcgZ3JvdXBzX3RvdGFs ID0gMDsKPiA+ID4gPiArCXVuc2lnbmVkIGxvbmcgbnVtX2V4dHJhX211eF9iaXRzID0gMDsKPiA+ ID4gPiArCXVuc2lnbmVkIGxvbmcgc2xpY2VfYml0cyA9IDA7Cj4gPiA+ID4gKwl1bnNpZ25lZCBs b25nIGhyZF9kZWxheSA9IDA7Cj4gPiA+ID4gKwl1bnNpZ25lZCBsb25nIGZpbmFsX3NjYWxlID0g MDsKPiA+ID4gPiArCXVuc2lnbmVkIGxvbmcgcmJzX21pbiA9IDA7Cj4gPiA+ID4gKwo+ID4gPiA+ ICsJLyogTnVtYmVyIG9mIGdyb3VwcyB1c2VkIHRvIGNvZGUgZWFjaCBsaW5lIG9mIGEgc2xpY2Ug Ki8KPiA+ID4gPiArCWdyb3Vwc19wZXJfbGluZSA9IERJVl9ST1VORF9VUCh2ZHNjX2NmZy0+c2xp Y2Vfd2lkdGgsCj4gPiA+ID4gKwkJCQkgICAgICAgRFNDX1JDX1BJWEVMU19QRVJfR1JPVVApOwo+ ID4gPiA+ICsKPiA+ID4gPiArCS8qIGNodW5rc2l6ZSBpbiBCeXRlcyAqLwo+ID4gPiA+ICsJdmRz Y19jZmctPnNsaWNlX2NodW5rX3NpemUgPSBESVZfUk9VTkRfVVAodmRzY19jZmctPnNsaWNlX3dp ZHRoICoKPiA+ID4gPiArCQkJCQkJICB2ZHNjX2NmZy0+Yml0c19wZXJfcGl4ZWwsCj4gPiA+ID4g KwkJCQkJCSAgKDggKiAxNikpOwo+ID4gPiA+ICsKPiA+ID4gPiArCWlmICh2ZHNjX2NmZy0+Y29u dmVydF9yZ2IpCj4gPiA+ID4gKwkJbnVtX2V4dHJhX211eF9iaXRzID0gMyAqICh2ZHNjX2NmZy0+ bXV4X3dvcmRfc2l6ZSArCj4gPiA+ID4gKwkJCQkJICAoNCAqIHZkc2NfY2ZnLT5iaXRzX3Blcl9j b21wb25lbnQgKyA0KQo+ID4gPiA+ICsJCQkJCSAgLSAyKTsKPiA+ID4gPiArCWVsc2UKPiA+ID4g PiArCQludW1fZXh0cmFfbXV4X2JpdHMgPSAzICogdmRzY19jZmctPm11eF93b3JkX3NpemUgKwo+ ID4gPiA+ICsJCQkoNCAqIHZkc2NfY2ZnLT5iaXRzX3Blcl9jb21wb25lbnQgKyA0KSArCj4gPiA+ ID4gKwkJCTIgKiAoNCAqIHZkc2NfY2ZnLT5iaXRzX3Blcl9jb21wb25lbnQpIC0gMjsKPiA+ID4g PiArCS8qIE51bWJlciBvZiBiaXRzIGluIG9uZSBTbGljZSAqLwo+ID4gPiA+ICsJc2xpY2VfYml0 cyA9IDggKiB2ZHNjX2NmZy0+c2xpY2VfY2h1bmtfc2l6ZSAqIHZkc2NfY2ZnLT5zbGljZV9oZWln aHQ7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJd2hpbGUgKChudW1fZXh0cmFfbXV4X2JpdHMgPiAwKSAm Jgo+ID4gPiA+ICsJICAgICAgICgoc2xpY2VfYml0cyAtIG51bV9leHRyYV9tdXhfYml0cykgJSB2 ZHNjX2NmZy0+bXV4X3dvcmRfc2l6ZSkpCj4gPiA+ID4gKwkJbnVtX2V4dHJhX211eF9iaXRzLS07 Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKGdyb3Vwc19wZXJfbGluZSA8IHZkc2NfY2ZnLT5pbml0 aWFsX3NjYWxlX3ZhbHVlIC0gOCkKPiA+ID4gPiArCQl2ZHNjX2NmZy0+aW5pdGlhbF9zY2FsZV92 YWx1ZSA9IGdyb3Vwc19wZXJfbGluZSArIDg7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJLyogc2NhbGVf ZGVjcmVtZW50X2ludGVydmFsIGNhbGN1bGF0aW9uIGFjY29yZGluZyB0byBEU0Mgc3BlYyAxLjEx ICovCj4gPiA+ID4gKwlpZiAodmRzY19jZmctPmluaXRpYWxfc2NhbGVfdmFsdWUgPiA4KQo+ID4g PiA+ICsJCXZkc2NfY2ZnLT5zY2FsZV9kZWNyZW1lbnRfaW50ZXJ2YWwgPSBncm91cHNfcGVyX2xp bmUgLwo+ID4gPiA+ICsJCQkodmRzY19jZmctPmluaXRpYWxfc2NhbGVfdmFsdWUgLSA4KTsKPiA+ ID4gPiArCWVsc2UKPiA+ID4gPiArCQl2ZHNjX2NmZy0+c2NhbGVfZGVjcmVtZW50X2ludGVydmFs ID0gRFNDX1NDQUxFX0RFQ1JFTUVOVF9JTlRFUlZBTF9NQVg7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJ dmRzY19jZmctPmZpbmFsX29mZnNldCA9IHZkc2NfY2ZnLT5yY19tb2RlbF9zaXplIC0KPiA+ID4g PiArCQkodmRzY19jZmctPmluaXRpYWxfeG1pdF9kZWxheSAqCj4gPiA+ID4gKwkJIHZkc2NfY2Zn LT5iaXRzX3Blcl9waXhlbCArIDgpIC8gMTYgKyBudW1fZXh0cmFfbXV4X2JpdHM7Cj4gPiA+ID4g Kwo+ID4gPiA+ICsJaWYgKHZkc2NfY2ZnLT5maW5hbF9vZmZzZXQgPj0gdmRzY19jZmctPnJjX21v ZGVsX3NpemUpIHsKPiA+ID4gPiArCQlEUk1fREVCVUdfS01TKCJGaW5hbE9mcyA8IFJjTW9kZWxT emUgZm9yIHRoaXMgSW5pdGlhbFhtaXREZWxheVxuIik7Cj4gPiA+ID4gKwkJcmV0dXJuIC1FSU5W QUw7Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJZmluYWxfc2NhbGUgPSAodmRzY19j ZmctPnJjX21vZGVsX3NpemUgKiA4KSAvCj4gPiA+ID4gKwkJKHZkc2NfY2ZnLT5yY19tb2RlbF9z aXplIC0gdmRzY19jZmctPmZpbmFsX29mZnNldCk7Cj4gPiA+ID4gKwlpZiAodmRzY19jZmctPnNs aWNlX2hlaWdodCA+IDEpCj4gPiA+ID4gKwkJLyoKPiA+ID4gPiArCQkgKiBOZmxCcGdPZmZzZXQg aXMgMTYgYml0IHZhbHVlIHdpdGggMTEgZnJhY3Rpb25hbCBiaXRzCj4gPiA+ID4gKwkJICogaGVu Y2Ugd2UgbXVsdGlwbHkgYnkgMl4xMSBmb3IgcHJlc2VydmluZyB0aGUKPiA+ID4gPiArCQkgKiBm cmFjdGlvbmFsIHBhcnQKPiA+ID4gPiArCQkgKi8KPiA+ID4gPiArCQl2ZHNjX2NmZy0+bmZsX2Jw Z19vZmZzZXQgPSBESVZfUk9VTkRfVVAoKHZkc2NfY2ZnLT5maXJzdF9saW5lX2JwZ19vZmZzZXQg PDwgMTEpLAo+ID4gPiA+ICsJCQkJCQkJKHZkc2NfY2ZnLT5zbGljZV9oZWlnaHQgLSAxKSk7Cj4g PiA+ID4gKwllbHNlCj4gPiA+ID4gKwkJdmRzY19jZmctPm5mbF9icGdfb2Zmc2V0ID0gMDsKPiA+ ID4gPiArCj4gPiA+ID4gKwkvKiAyXjE2IC0gMSAqLwo+ID4gPiA+ICsJaWYgKHZkc2NfY2ZnLT5u ZmxfYnBnX29mZnNldCA+IDY1NTM1KSB7Cj4gPiA+ID4gKwkJRFJNX0RFQlVHX0tNUygiTmZsQnBn T2Zmc2V0IGlzIHRvbyBsYXJnZSBmb3IgdGhpcyBzbGljZSBoZWlnaHRcbiIpOwo+ID4gPiA+ICsJ CXJldHVybiAtRUlOVkFMOwo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiArCS8qIE51bWJl ciBvZiBncm91cHMgdXNlZCB0byBjb2RlIHRoZSBlbnRpcmUgc2xpY2UgKi8KPiA+ID4gPiArCWdy b3Vwc190b3RhbCA9IGdyb3Vwc19wZXJfbGluZSAqIHZkc2NfY2ZnLT5zbGljZV9oZWlnaHQ7Cj4g PiA+ID4gKwo+ID4gPiA+ICsJLyogc2xpY2VfYnBnX29mZnNldCBpcyAxNiBiaXQgdmFsdWUgd2l0 aCAxMSBmcmFjdGlvbmFsIGJpdHMgKi8KPiA+ID4gPiArCXZkc2NfY2ZnLT5zbGljZV9icGdfb2Zm c2V0ID0gRElWX1JPVU5EX1VQKCgodmRzY19jZmctPnJjX21vZGVsX3NpemUgLQo+ID4gPiA+ICsJ CQkJCQkgICAgdmRzY19jZmctPmluaXRpYWxfb2Zmc2V0ICsKPiA+ID4gPiArCQkJCQkJICAgIG51 bV9leHRyYV9tdXhfYml0cykgPDwgMTEpLAo+ID4gPiA+ICsJCQkJCQkgIGdyb3Vwc190b3RhbCk7 Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKGZpbmFsX3NjYWxlID4gOSkgewo+ID4gPiA+ICsJCS8q Cj4gPiA+ID4gKwkJICogU2NhbGVJbmNyZW1lbnRJbnRlcnZhbCA9Cj4gPiA+ID4gKwkJICogZmlu YWxvZmZzZXQvKChOZmxCcGdPZmZzZXQgKyBTbGljZUJwZ09mZnNldCkqOChmaW5hbHNjYWxlIC0g MS4xMjUpKQo+ID4gPiA+ICsJCSAqIGFzIChOZmxCcGdPZmZzZXQgKyBTbGljZUJwZ09mZnNldCkg aGFzIDExIGJpdCBmcmFjdGlvbmFsIHZhbHVlLAo+ID4gPiA+ICsJCSAqIHdlIG5lZWQgZGl2aWRl IGJ5IDJeMTEgZnJvbSBwc3REc2NDZmcgdmFsdWVzCj4gPiA+ID4gKwkJICovCj4gPiA+ID4gKwkJ dmRzY19jZmctPnNjYWxlX2luY3JlbWVudF9pbnRlcnZhbCA9Cj4gPiA+ID4gKwkJCQkodmRzY19j ZmctPmZpbmFsX29mZnNldCAqICgxIDw8IDExKSkgLwo+ID4gPiA+ICsJCQkJKCh2ZHNjX2NmZy0+ bmZsX2JwZ19vZmZzZXQgKwo+ID4gPiA+ICsJCQkJdmRzY19jZmctPnNsaWNlX2JwZ19vZmZzZXQp Kgo+ID4gPiA+ICsJCQkJKGZpbmFsX3NjYWxlIC0gOSkpOwo+ID4gPiA+ICsJfSBlbHNlIHsKPiA+ ID4gPiArCQkvKgo+ID4gPiA+ICsJCSAqIElmIGZpbmFsU2NhbGVWYWx1ZSBpcyBsZXNzIHRoYW4g b3IgZXF1YWwgdG8gOSwgYSB2YWx1ZSBvZiAwIHNob3VsZAo+ID4gPiA+ICsJCSAqIGJlIHVzZWQg dG8gZGlzYWJsZSB0aGUgc2NhbGUgaW5jcmVtZW50IGF0IHRoZSBlbmQgb2YgdGhlIHNsaWNlCj4g PiA+ID4gKwkJICovCj4gPiA+ID4gKwkJdmRzY19jZmctPnNjYWxlX2luY3JlbWVudF9pbnRlcnZh bCA9IDA7Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKHZkc2NfY2ZnLT5zY2Fs ZV9pbmNyZW1lbnRfaW50ZXJ2YWwgPiA2NTUzNSkgewo+ID4gPiA+ICsJCURSTV9ERUJVR19LTVMo IlNjYWxlSW5jcmVtZW50SW50ZXJ2YWwgaXMgbGFyZ2UgZm9yIHNsaWNlIGhlaWdodFxuIik7Cj4g PiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJ LyoKPiA+ID4gPiArCSAqIERTQyBzcGVjIG1lbnRpb25zIHRoYXQgYml0c19wZXJfcGl4ZWwgc3Bl Y2lmaWVzIHRoZSB0YXJnZXQKPiA+ID4gPiArCSAqIGJpdHMvcGl4ZWwgKGJwcCkgcmF0ZSB0aGF0 IGlzIHVzZWQgYnkgdGhlIGVuY29kZXIsCj4gPiA+ID4gKwkgKiBpbiBzdGVwcyBvZiAxLzE2IG9m IGEgYml0IHBlciBwaXhlbAo+ID4gPiA+ICsJICovCj4gPiA+ID4gKwlyYnNfbWluID0gdmRzY19j ZmctPnJjX21vZGVsX3NpemUgLSB2ZHNjX2NmZy0+aW5pdGlhbF9vZmZzZXQgKwo+ID4gPiA+ICsJ CURJVl9ST1VORF9VUCh2ZHNjX2NmZy0+aW5pdGlhbF94bWl0X2RlbGF5ICoKPiA+ID4gPiArCQkJ ICAgICB2ZHNjX2NmZy0+Yml0c19wZXJfcGl4ZWwsIDE2KSArCj4gPiA+ID4gKwkJZ3JvdXBzX3Bl cl9saW5lICogdmRzY19jZmctPmZpcnN0X2xpbmVfYnBnX29mZnNldDsKPiA+ID4gPiArCj4gPiA+ ID4gKwlocmRfZGVsYXkgPSBESVZfUk9VTkRfVVAoKHJic19taW4gKiAxNiksIHZkc2NfY2ZnLT5i aXRzX3Blcl9waXhlbCk7Cj4gPiA+ID4gKwl2ZHNjX2NmZy0+cmNfYml0cyA9IChocmRfZGVsYXkg KiB2ZHNjX2NmZy0+Yml0c19wZXJfcGl4ZWwpIC8gMTY7Cj4gPiA+ID4gKwl2ZHNjX2NmZy0+aW5p dGlhbF9kZWNfZGVsYXkgPSBocmRfZGVsYXkgLSB2ZHNjX2NmZy0+aW5pdGlhbF94bWl0X2RlbGF5 Owo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4g PiA+ICsKPiA+ID4gPiAgaW50IGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAo+ID4gPiA+ICAJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBp cGVfY29uZmlnKQo+ID4gPiA+ICB7Cj4gPiA+ID4gQEAgLTQ1MSw1ICs1NzUsOCBAQCBpbnQgaW50 ZWxfZHBfY29tcHV0ZV9kc2NfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiA+ ID4gIAl2ZHNjX2NmZy0+aW5pdGlhbF9zY2FsZV92YWx1ZSA9ICh2ZHNjX2NmZy0+cmNfbW9kZWxf c2l6ZSA8PCAzKSAvCj4gPiA+ID4gIAkJKHZkc2NfY2ZnLT5yY19tb2RlbF9zaXplIC0gdmRzY19j ZmctPmluaXRpYWxfb2Zmc2V0KTsKPiA+ID4gPiAgCj4gPiA+ID4gKwlpZiAoaW50ZWxfY29tcHV0 ZV9yY19wYXJhbWV0ZXJzKHZkc2NfY2ZnKSA8IDApCj4gPiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7 Cj4gPiA+IAo+ID4gPiBPbmUgc2hvdWxkIHByZXR0eSBtdWNoIGFsd2F5cyBwYXNzIG9uIHRoZSBl cnJubyByYXRoZXIgdGhhbiBpbnZlbnRpbmcgYQo+ID4gPiBuZXcgb25lIG9uIHRoZSBzcG90Lgo+ ID4gCj4gPiBCdXQgY29tcHV0ZV9yY19wYXJhbWV0ZXJzKCkgZnVuY3Rpb24gcmV0dXJucyBFSU5W QUwgZXZlcnl3aGVyZSBmb3IgZXJyb3IgY2FzZXMKPiAKPiBXaHkgc2hvdWxkIEkgaGF2ZSB0byBr bm93IHRoYXQ/CgpBZnRlciBkb2luZyBlcnJubyAtLWxpc3QgYW5kIGxvb2tpbmcgYXQgdGhlIGF2 YWlsYWJsZSBlcnJub3MsIHRoZSBtb3N0IGxvZ2ljYWwgb25lcyB0byByZXR1cm4KZnJvbSBpbnRl bF9jb21wdXRlX3JjX3BhcmFtZXRlcnMgaXMgRVJBTkdFIHNpbmNlIHRoZSBlcnJvcnMgYXJlIGJl Y2F1c2UgdGhlIHBhcmFtZXRlcnMgb2Ygb3V0IG9mIHZhbGlkIHJhbmdlLgpBbmQgaGVyZSBJIGNh biBqdXN0IGRvIHJldHVybiBpbnRlbF9jb21wdXRlX3JjX3BhcmFtZXRlcnMoKQoKRG9lcyB0aGlz IGxvb2sgZ29vZD8KCk1hbmFzaQoKPiAKPiAtLSAKPiBWaWxsZSBTeXJqw6Rsw6QKPiBJbnRlbApf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK