From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 63F6E6EBB2 for ; Tue, 18 Dec 2018 12:12:56 +0000 (UTC) Date: Tue, 18 Dec 2018 14:12:52 +0200 From: Petri Latvala Message-ID: <20181218121252.GU17124@platvala-desk.ger.corp.intel.com> References: <20181213005739.29199-1-anusha.srivatsa@intel.com> <20181217120027.GR17124@platvala-desk.ger.corp.intel.com> <83F5C7385F545743AD4FB2A62F75B07347FC81EB@ORSMSX108.amr.corp.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <83F5C7385F545743AD4FB2A62F75B07347FC81EB@ORSMSX108.amr.corp.intel.com> Subject: Re: [igt-dev] [PATCH i-g-t] test/kms_dp_dsc: Basic KMS test to validate VESA DSC on DP/eDP List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "Srivatsa, Anusha" Cc: "igt-dev@lists.freedesktop.org" , "Navare, Manasi D" , "Pandiyan, Dhinakaran" List-ID: T24gTW9uLCBEZWMgMTcsIDIwMTggYXQgMDk6NDQ6MjZQTSArMDIwMCwgU3JpdmF0c2EsIEFudXNo YSB3cm90ZToKPiAKPiAKPiA+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+RnJvbTogTGF0 dmFsYSwgUGV0cmkKPiA+U2VudDogTW9uZGF5LCBEZWNlbWJlciAxNywgMjAxOCA0OjAwIEFNCj4g PlRvOiBTcml2YXRzYSwgQW51c2hhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPgo+ID5DYzog aWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IE5hdmFyZSwgTWFuYXNpIEQKPiA+PG1hbmFz aS5kLm5hdmFyZUBpbnRlbC5jb20+OyBBcmdlbnppYW5vLCBBbnRvbmlvCj4gPjxhbnRvbmlvLmFy Z2Vuemlhbm9AaW50ZWwuY29tPjsgUGFuZGl5YW4sIERoaW5ha2FyYW4KPiA+PGRoaW5ha2FyYW4u cGFuZGl5YW5AaW50ZWwuY29tPjsgVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KPiA+U3ViamVjdDogUmU6IFtQQVRDSCBpLWctdF0gdGVzdC9rbXNfZHBfZHNj OiBCYXNpYyBLTVMgdGVzdCB0byB2YWxpZGF0ZSBWRVNBIERTQwo+ID5vbiBEUC9lRFAKPiA+Cj4g Pk9uIFdlZCwgRGVjIDEyLCAyMDE4IGF0IDA0OjU3OjM5UE0gLTA4MDAsIEFudXNoYSB3cm90ZToK PiA+PiBGcm9tOiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4+ Cj4gPj4gVGhpcyBwYXRjaCBhZGRzIGEgYmFzaWMga21zIHRlc3QgdG8gdmFsaWRhdGUgdGhlIGRp c3BsYXkgc3RyZWFtCj4gPj4gY29tcHJlc3Npb24gZnVuY3Rpb25hbGl0eSBpZiBzdXBwb3J0ZWQg b24gRFAvZURQIGNvbm5lY3Rvci4KPiA+PiBDdXJyZW50bHkgdGhpcyBoYXMgb25seSB0d28gc3Vi dGVzdHMgdG8gZm9yY2UgdGhlIERTQyBvbiBhbGwgdGhlIGVEUAo+ID4+IGFuZCBEUCBjb25uZWN0 b3JzIHRoYXQgc3VwcG9ydCBpdCB3aXRoIGRlZmF1bHQgcGFyYW1ldGVycy4KPiA+PiBUaGlzIHdp bGwgYmUgZXhwYW5kZWQgdG8gYWRkIG1vcmUgc3VidGVzdHMgdG8gdHdlYWsgRFNDIHBhcmFtZXRl cnMuCj4gPj4KPiA+PiB2NjogKGZyb20gQW51c2hhKQo+ID4+ICogRml4IHJ1bl90ZXN0KCkgKFBl dHJpKQo+ID4+ICogRml4IHVwZGF0ZV9kaXNwbGF5KCkgdG8gYXZvaWQgbGVha3MuIChQZXRyaSkK PiA+PiB2NToKPiA+PiAqIEZpeCB0ZXN0IGNsZWFudXAgdG8gYXZvaWQgY3Jhc2ggKFBldHJpKQo+ ID4+IHY0Ogo+ID4+ICogRnV0dXJlIHByb29mIGZvciBtb3JlIHRlc3QgdHlwZXMgKFBldHJpKQo+ ID4+ICogRml4IGFscGhhYmV0aWNhbCBvcmRlciAoUGV0cmkpCj4gPj4gKiBzL2lndF9kaXNwbGF5 X2luaXQvaWd0X2Rpc3BsYXlfcmVxdWlyZSAoUGV0cmkpCj4gPj4gKiBSZW1vdmUgYmxhbmsgbGlu ZXMgYWZ0ZXIgcmV0dXJuIChQZXRyaSkKPiA+PiB2MzoKPiA+PiAqIFVzZSBhcnJheSBvZiBjb25u ZWN0b3JzIGFuZCBsb29wIHRocm91Z2ggKFBldHJpKQo+ID4+ICogQWxzbyBjaGVjayBmb3IgRkVD IG9uIERQIGNvbm5lY3RvcnMgKE1hbmFzaSkKPiA+PiAqIEFkZCBhIFBpcGVfQSByZXN0cmljdGlv biBvbiBEUCAoVmlsbGUpCj4gPj4gdjI6Cj4gPj4gKiBVc2UgSUdUIHdyYXBwZXJzIGZvciBhbGwg KERLLCBBbnRvbmlvKQo+ID4+ICogU3BsaXQgaW50byB0d28gc3VidGVzdHMgZm9yIGVEUCBhbmQg RFAgdHlwZXMgKFBldHJpKQo+ID4+Cj4gPj4gQ2M6IFBldHJpIExhdHZhbGEgPHBldHJpLmxhdHZh bGFAaW50ZWwuY29tPgo+ID4+IENjOiBBbnRvbmlvIEFyZ2Vuemlhbm8gPGFudG9uaW8uYXJnZW56 aWFub0BpbnRlbC5jb20+Cj4gPj4gQ2M6IERoaW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5ha2FyYW4u cGFuZGl5YW5AaW50ZWwuY29tPgo+ID4+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmph bGFAbGludXguaW50ZWwuY29tPgo+ID4+IENjOiBBbnVzaGEgU3JpdmF0c2EgPGFudXNoYS5zcml2 YXRzYUBpbnRlbC5jb20+Cj4gPj4gU2lnbmVkLW9mZi1ieTogQW51c2hhIFNyaXZhdHNhIDxhbnVz aGEuc3JpdmF0c2FAaW50ZWwuY29tPgo+ID4+IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUg PG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gPj4gLS0tCj4gPj4gIHRlc3RzL01ha2VmaWxl LnNvdXJjZXMgfCAgIDEgKwo+ID4+ICB0ZXN0cy9rbXNfZHBfZHNjLmMgICAgIHwgMjY0ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPj4gIHRlc3RzL21lc29uLmJ1 aWxkICAgICAgfCAgIDEgKwo+ID4+ICAzIGZpbGVzIGNoYW5nZWQsIDI2NiBpbnNlcnRpb25zKCsp Cj4gPj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfZHBfZHNjLmMKPiA+Pgo+ID4+IGRp ZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNl cyBpbmRleAo+ID4+IGVlZGRlMWU4Li5hM2MyNGM5OSAxMDA2NDQKPiA+PiAtLS0gYS90ZXN0cy9N YWtlZmlsZS5zb3VyY2VzCj4gPj4gKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ID4+IEBA IC01NCw2ICs1NCw3IEBAIFRFU1RTX3Byb2dzID0gXAo+ID4+ICAJa21zX2NydGNfYmFja2dyb3Vu ZF9jb2xvciBcCj4gPj4gIAlrbXNfY3Vyc29yX2NyYyBcCj4gPj4gIAlrbXNfY3Vyc29yX2xlZ2Fj eSBcCj4gPj4gKwlrbXNfZHBfZHNjIFwKPiA+PiAgCWttc19kcmF3X2NyYyBcCj4gPj4gIAlrbXNf ZmJjb25fZmJ0IFwKPiA+PiAgCWttc19mZW5jZV9waW5fbGVhayBcCj4gPj4gZGlmZiAtLWdpdCBh L3Rlc3RzL2ttc19kcF9kc2MuYyBiL3Rlc3RzL2ttc19kcF9kc2MuYyBuZXcgZmlsZSBtb2RlCj4g Pj4gMTAwNjQ0IGluZGV4IDAwMDAwMDAwLi44ODRhNzcxNwo+ID4+IC0tLSAvZGV2L251bGwKPiA+ PiArKysgYi90ZXN0cy9rbXNfZHBfZHNjLmMKPiA+PiBAQCAtMCwwICsxLDI2NCBAQAo+ID4+ICsv Kgo+ID4+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4+ICsgKgo+ ID4+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbgo+ID4+ICtvYnRhaW5pbmcgYQo+ID4+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCj4gPj4gKyJTb2Z0d2Fy ZSIpLAo+ID4+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dAo+ID4+ICtsaW1pdGF0aW9uCj4gPj4gKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLAo+ID4+ICtz dWJsaWNlbnNlLAo+ID4+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbQo+ID4+ICt0aGUKPiA+PiArICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKPiA+PiArICoKPiA+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZwo+ID4+ICt0aGUgbmV4dAo+ID4+ICsgKiBwYXJh Z3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y dGlvbnMKPiA+PiArb2YgdGhlCj4gPj4gKyAqIFNvZnR3YXJlLgo+ID4+ICsgKgo+ID4+ICsgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwKPiA+PiArRVhQUkVTUyBPUgo+ID4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4gPj4gK01FUkNIQU5UQUJJTElUWSwKPiA+ PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO VC4gIElOIE5PCj4gPkVWRU5UCj4gPj4gK1NIQUxMCj4gPj4gKyAqIFRIRSBBVVRIT1JTIE9SIENP UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAo+ID5EQU1BR0VTCj4gPj4g K09SIE9USEVSCj4gPj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+ID4+ICtBUklTSU5HCj4gPj4gKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKPiA+ PiArT1RIRVIgREVBTElOR1MKPiA+PiArICogSU4gVEhFIFNPRlRXQVJFLgo+ID4+ICsgKgo+ID4+ ICsgKiBEaXNwbGF5cG9ydCBEaXNwbGF5IFN0cmVhbSBDb21wcmVzc2lvbiB0ZXN0Cj4gPj4gKyAq IFVudGlsIHRoZSBDUkMgc3VwcG9ydCBpcyBhZGRlZCB0aGlzIG5lZWRzIHRvIGJlIGludm9rZWQg d2l0aAo+ID4+ICstLWludGVyYWN0aXZlCj4gPj4gKyAqIHRvIG1hbnVhbGx5IHZlcmlmeSBpZiB0 aGUgdGVzdCBwYXR0ZXJuIGlzIHNlZW4gd2l0aG91dCBjb3JydXB0aW9uCj4gPj4gK2ZvciBlYWNo Cj4gPj4gKyAqIHN1YnRlc3QuCj4gPj4gKyAqCj4gPj4gKyAqIEF1dGhvcnM6Cj4gPj4gKyAqIE1h bmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gPj4gKyAqCj4gPj4gKyAq Lwo+ID4+ICsjaW5jbHVkZSAiaWd0LmgiCj4gPj4gKyNpbmNsdWRlICJpZ3Rfc3lzZnMuaCIKPiA+ PiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gPj4gKyNpbmNsdWRlIDxnZXRvcHQuaD4KPiA+PiArI2lu Y2x1ZGUgPG1hdGguaD4KPiA+PiArI2luY2x1ZGUgPHN0ZGludC5oPgo+ID4+ICsjaW5jbHVkZSA8 c3RkYm9vbC5oPgo+ID4+ICsjaW5jbHVkZSA8c3RyaW5ncy5oPgo+ID4+ICsjaW5jbHVkZSA8dW5p c3RkLmg+Cj4gPj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPiA+PiArI2luY2x1ZGUgPHNpZ25hbC5o Pgo+ID4+ICsjaW5jbHVkZSA8dGltZS5oPgo+ID4+ICsjaW5jbHVkZSA8ZmNudGwuaD4KPiA+PiAr I2luY2x1ZGUgPHRlcm1pb3MuaD4KPiA+PiArCj4gPj4gK2VudW0gZHNjX3Rlc3RfdHlwZQo+ID4+ ICt7Cj4gPj4gKwl0ZXN0X2Jhc2ljX2RzY19lbmFibGUKPiA+PiArfTsKPiA+PiArCj4gPj4gK3R5 cGVkZWYgc3RydWN0IHsKPiA+PiArCWludCBkcm1fZmQ7Cj4gPj4gKwlpbnQgZGVidWdmc19mZDsK PiA+PiArCXVpbnQzMl90IGlkOwo+ID4+ICsJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5Owo+ID4+ICsJ c3RydWN0IGlndF9mYiBmYl90ZXN0X3BhdHRlcm47Cj4gPj4gKwlpZ3Rfb3V0cHV0X3QgKm91dHB1 dDsKPiA+PiArCWludCBtb2RlX3ZhbGlkOwo+ID4+ICsJZHJtTW9kZU1vZGVJbmZvICptb2RlOwo+ ID4+ICsJZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yOwo+ID4+ICsJZHJtTW9kZUVuY29kZXIg KmVuY29kZXI7Cj4gPj4gKwlpbnQgY3J0YzsKPiA+PiArCWVudW0gcGlwZSBwaXBlOwo+ID4+ICsJ Y2hhciBjb25uX25hbWVbMTI4XTsKPiA+PiArfSBkYXRhX3Q7Cj4gPj4gKwo+ID4+ICtzdGF0aWMg aW5saW5lIHZvaWQgbWFudWFsKGNvbnN0IGNoYXIgKmV4cGVjdGVkKSB7Cj4gPj4gKwlpZ3RfZGVi dWdfbWFudWFsX2NoZWNrKCJhbGwiLCBleHBlY3RlZCk7IH0KPiA+PiArCj4gPj4gK3N0YXRpYyBi b29sIGlzX2RwX2RzY19zdXBwb3J0ZWQoZGF0YV90ICpkYXRhKSB7Cj4gPj4gKwljaGFyIGZpbGVf bmFtZVsxMjhdID0gezB9Owo+ID4+ICsJY2hhciBidWZbNTEyXTsKPiA+PiArCj4gPj4gKwlzdHJj cHkoZmlsZV9uYW1lLCBkYXRhLT5jb25uX25hbWUpOwo+ID4+ICsJc3RyY2F0KGZpbGVfbmFtZSwg Ii9pOTE1X2RzY19mZWNfc3VwcG9ydCIpOwo+ID4+ICsJaWd0X3JlcXVpcmUoaWd0X2RlYnVnZnNf c2ltcGxlX3JlYWQoZGF0YS0+ZGVidWdmc19mZCwgZmlsZV9uYW1lLCBidWYsCj4gPj4gKwkJCQkJ ICAgIHNpemVvZihidWYpKSA+IDApOwo+ID4+ICsJaWd0X2RlYnVnZnNfcmVhZChkYXRhLT5kcm1f ZmQsIGZpbGVfbmFtZSwgYnVmKTsKPiA+PiArCj4gPj4gKwlyZXR1cm4gc3Ryc3RyKGJ1ZiwgIkRT Q19TaW5rX1N1cHBvcnQ6IHllcyIpOyB9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgYm9vbCBpc19kcF9m ZWNfc3VwcG9ydGVkKGRhdGFfdCAqZGF0YSkgewo+ID4+ICsJY2hhciBmaWxlX25hbWVbMTI4XSA9 IHswfTsKPiA+PiArCWNoYXIgYnVmWzUxMl07Cj4gPj4gKwo+ID4+ICsJc3RyY3B5KGZpbGVfbmFt ZSwgZGF0YS0+Y29ubl9uYW1lKTsKPiA+PiArCXN0cmNhdChmaWxlX25hbWUsICIvaTkxNV9kc2Nf ZmVjX3N1cHBvcnQiKTsKPiA+PiArCWlndF9kZWJ1Z2ZzX3JlYWQoZGF0YS0+ZHJtX2ZkLCBmaWxl X25hbWUsIGJ1Zik7Cj4gPj4gKwo+ID4+ICsJcmV0dXJuIHN0cnN0cihidWYsICJGRUNfU2lua19T dXBwb3J0OiB5ZXMiKTsgfQo+ID4+ICsKPiA+PiArc3RhdGljIGJvb2wgaXNfZHBfZHNjX2VuYWJs ZWQoZGF0YV90ICpkYXRhKSB7Cj4gPj4gKwljaGFyIGZpbGVfbmFtZVsxMjhdID0gezB9Owo+ID4+ ICsJY2hhciBidWZbNTEyXTsKPiA+PiArCj4gPj4gKwlzdHJjcHkoZmlsZV9uYW1lLCBkYXRhLT5j b25uX25hbWUpOwo+ID4+ICsJc3RyY2F0KGZpbGVfbmFtZSwgIi9pOTE1X2RzY19mZWNfc3VwcG9y dCIpOwo+ID4+ICsJaWd0X2RlYnVnZnNfcmVhZChkYXRhLT5kcm1fZmQsIGZpbGVfbmFtZSwgYnVm KTsKPiA+PiArCj4gPj4gKwlyZXR1cm4gc3Ryc3RyKGJ1ZiwgIkRTQ19FbmFibGVkOiB5ZXMiKTsg fQo+ID4+ICsKPiA+PiArc3RhdGljIHZvaWQgZm9yY2VfZHBfZHNjX2VuYWJsZShkYXRhX3QgKmRh dGEpIHsKPiA+PiArCWNoYXIgZmlsZV9uYW1lWzEyOF0gPSB7MH07Cj4gPj4gKwlpbnQgcmV0Owo+ ID4+ICsKPiA+PiArCXN0cmNweShmaWxlX25hbWUsIGRhdGEtPmNvbm5fbmFtZSk7Cj4gPj4gKwlz dHJjYXQoZmlsZV9uYW1lLCAiL2k5MTVfZHNjX2ZlY19zdXBwb3J0Iik7Cj4gPj4gKwlpZ3RfZGVi dWcgKCJGb3JjaW5nIERTQyBlbmFibGUgb24gJXNcbiIsIGRhdGEtPmNvbm5fbmFtZSk7Cj4gPj4g KwlyZXQgPSBpZ3Rfc3lzZnNfd3JpdGUoZGF0YS0+ZGVidWdmc19mZCwgZmlsZV9uYW1lLCAiMSIs IDEpOwo+ID4+ICsJaWd0X2Fzc2VydF9mKHJldCA+IDAsICJkZWJ1Z2ZzX3dyaXRlIGZhaWxlZCIp OyB9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgdm9pZCBjbGVhcl9kcF9kc2NfZW5hYmxlKGRhdGFfdCAq ZGF0YSkgewo+ID4+ICsJY2hhciBmaWxlX25hbWVbMTI4XSA9IHswfTsKPiA+PiArCWludCByZXQ7 Cj4gPj4gKwo+ID4+ICsJc3RyY3B5KGZpbGVfbmFtZSwgZGF0YS0+Y29ubl9uYW1lKTsKPiA+PiAr CXN0cmNhdChmaWxlX25hbWUsICIvaTkxNV9kc2NfZmVjX3N1cHBvcnQiKTsKPiA+PiArCWlndF9k ZWJ1ZyAoIkNsZWFyaW5nIERTQyBlbmFibGUgb24gJXNcbiIsIGRhdGEtPmNvbm5fbmFtZSk7Cj4g Pj4gKwlyZXQgPSBpZ3Rfc3lzZnNfd3JpdGUoZGF0YS0+ZGVidWdmc19mZCwgZmlsZV9uYW1lLCAi MCIsIDEpOwo+ID4+ICsJaWd0X2Fzc2VydF9mKHJldCA+IDAsICJkZWJ1Z2ZzX3dyaXRlIGZhaWxl ZCIpOyB9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgdm9pZCB0ZXN0X2NsZWFudXAoZGF0YV90ICpkYXRh KSB7Cj4gPj4gKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKPiA+PiArCj4gPj4gKwlpZiAoZGF0YS0+ b3V0cHV0KSB7Cj4gPj4gKwlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShkYXRh LT5vdXRwdXQsCj4gPj4gKwkJCQkJICAgIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwo+ID4+ICsJ aWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCBOVUxMKTsKPiA+PiArCWlndF9kaXNwbGF5X2NvbW1p dCgmZGF0YS0+ZGlzcGxheSk7Cj4gPj4gKwo+ID4+ICsJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1f ZmQsICZkYXRhLT5mYl90ZXN0X3BhdHRlcm4pOwo+ID4+ICsJfQo+ID4+ICt9Cj4gPgo+ID4KPiA+ SW5kZW50YXRpb24gb24gdGhlIGlmIGlzIHdyb25nLgo+IAo+IE9vcHMuLi53aWxsIGZpeCBpdC4K PiAKPiA+Cj4gPj4gKwo+ID4+ICsKPiA+PiArLyoKPiA+PiArICogUmUtcHJvYmUgY29ubmVjdG9y cyBhbmQgZG8gYSBtb2Rlc2V0IHdpdGggRFNDCj4gPj4gKyAqCj4gPj4gKyAqLwo+ID4+ICtzdGF0 aWMgdm9pZCB1cGRhdGVfZGlzcGxheShkYXRhX3QgKmRhdGEsIGVudW0gZHNjX3Rlc3RfdHlwZQo+ ID4+ICt0ZXN0X3R5cGUpIHsKPiA+PiArCWlndF9wbGFuZV90ICpwcmltYXJ5Owo+ID4+ICsJZGF0 YS0+bW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUoZGF0YS0+b3V0cHV0KTsKPiA+PiArCWRhdGEt PmNvbm5lY3RvciA9IGRhdGEtPm91dHB1dC0+Y29uZmlnLmNvbm5lY3RvcjsKPiA+PiArCj4gPj4g KwlpZiAoZGF0YS0+Y29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PQo+ID5EUk1fTU9ERV9DT05O RUNUT1JfRGlzcGxheVBvcnQgJiYKPiA+PiArCSAgICBkYXRhLT5waXBlID09IFBJUEVfQSkgewo+ ID4+ICsJCWlndF9kZWJ1ZyAoIkRTQyBub3Qgc3VwcG9ydGVkIG9uIFBpcGUgQSBvbiBleHRlcm5h bCBEUFxuIik7Cj4gPj4gKwkJcmV0dXJuOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCWlmICh0ZXN0 X3R5cGUgPT0gdGVzdF9iYXNpY19kc2NfZW5hYmxlKSB7Cj4gPj4gKwkJaWd0X2RlYnVnICgiRFND IGlzIHN1cHBvcnRlZCBvbiAlc1xuIiwKPiA+PiArCQkJICAgZGF0YS0+Y29ubl9uYW1lKTsKPiA+ PiArCQlmb3JjZV9kcF9kc2NfZW5hYmxlKGRhdGEpOwo+ID4+ICsJCS8qIENsZWFyIHRoZSBmYiBp biBvcmRlciB0byBhdm9pZCBsZWFrcyAqLwo+ID4+ICsJCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJt X2ZkLCAmZGF0YS0+ZmJfdGVzdF9wYXR0ZXJuKTsKPiA+PiArCQlpZ3RfY3JlYXRlX3BhdHRlcm5f ZmIoZGF0YS0+ZHJtX2ZkLCBkYXRhLT5tb2RlLT5oZGlzcGxheSwKPiA+PiArCQkJCSAgICAgIGRh dGEtPm1vZGUtPnZkaXNwbGF5LAo+ID4+ICsJCQkJICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwK PiA+PiArCQkJCSAgICAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCj4gPj4gKwkJCQkgICAg ICAmZGF0YS0+ZmJfdGVzdF9wYXR0ZXJuKTsKPiA+PiArCQlwcmltYXJ5ID0gaWd0X291dHB1dF9n ZXRfcGxhbmVfdHlwZShkYXRhLT5vdXRwdXQsCj4gPj4gKwo+ID5EUk1fUExBTkVfVFlQRV9QUklN QVJZKTsKPiA+PiArCQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZkYXRhLT5mYl90ZXN0X3Bh dHRlcm4pOwo+ID4+ICsJCWlndF9kaXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7Cj4gPj4g KwkJLyogVW50aWwgd2UgaGF2ZSBDUkMgY2hlY2sgc3VwcG9ydCwgbWFudWFsbHkgY2hlY2sgaWYg UkdCIHRlc3QKPiA+cGF0dGVybiBoYXMgbm8gY29ycnVwdGlvbiAqLwo+ID4+ICsJCW1hbnVhbCAo IlJHQiB0ZXN0IHBhdHRlcm4gd2l0aG91dCBjb3JydXB0aW9uIik7Cj4gPj4gKwkJaWd0X2Fzc2Vy dF9mKGlzX2RwX2RzY19lbmFibGVkKGRhdGEpLAo+ID4+ICsJCQkgICAgICJEZWZhdWx0IERTQyBl bmFibGUgZmFpbGVkIG9uIENvbm5lY3RvcjogJXMgUGlwZToKPiA+JXMiLAo+ID4+ICsJCQkgICAg IGRhdGEtPmNvbm5fbmFtZSwKPiA+PiArCQkJICAgICBrbXN0ZXN0X3BpcGVfbmFtZShkYXRhLT5w aXBlKSk7Cj4gPj4gKwkJY2xlYXJfZHBfZHNjX2VuYWJsZShkYXRhKTsKPiA+PiArCX0gZWxzZSB7 Cj4gPj4gKwkJaWd0X2Fzc2VydCghIlVua25vd24gdGVzdCB0eXBlXG4iKTsKPiA+PiArCX0KPiA+ PiArfQo+ID4+ICsKPiA+PiArc3RhdGljIHZvaWQgcnVuX3Rlc3QoZGF0YV90ICpkYXRhLCBpZ3Rf b3V0cHV0X3QgKm91dHB1dCwKPiA+PiArCQkgICAgIGVudW0gZHNjX3Rlc3RfdHlwZSB0ZXN0X3R5 cGUpCj4gPj4gK3sKPiA+PiArCWVudW0gcGlwZSBwaXBlOwo+ID4+ICsKPiA+PiArCWZvcl9lYWNo X3BpcGVfc3RhdGljKHBpcGUpIHsKPiA+Cj4gPgo+ID5UaGlzIGRvZXNuJ3QgbmVlZCB0byBiZSB0 aGUgX3N0YXRpYyBsb29wLCBmb3JfZWFjaF9waXBlKGRhdGEtPmRpc3BsYXksIHBpcGUpIGNhbgo+ ID5iZSB1c2VkLgo+IAo+IEhtbW0uLi5sb29raW5nIGF0IGJvdGggYWdhaW4sIGl0IHNheXMgZm9y X2VhY2hfcGlwZV9zdGF0aWMoKSBpcyB0byBiZSB1c2VkIHRvIGVudW1lcmF0ZSBwZXItcGlwZSBz dWJ0ZXN0cyBhbmQgZm9yXwo+IGVhY2hfcGlwZSgpIGNhbm5vdCBiZSB1c2VkIHRvIGVudW1lcmF0 ZSBwZXItcGlwZSBzdWJ0ZXN0cy4gU28sIGlmIHdlIHdhbnQgdG8gYWRkIG1vcmUgc3VidGVzdHMg d29udCBoYXZpbmcgX3N0YXRpYyBiZSB1c2VmdWw/CgoKSXQgbWVhbnMgZm9yX2VhY2hfcGlwZV9z dGF0aWMgaXMgdG8gYmUgdXNlZCBpZiB5b3UncmUgbm90IGluc2lkZSBhbgppZ3Rfc3VidGVzdCBv ciBpZ3RfZml4dHVyZS4gSW5zaWRlIHRoZW0geW91IGNhbiB1c2UgcmVhbCBydW50aW1lCmluZm9y bWF0aW9uIGFuZCBmb3JfZWFjaF9waXBlIGlzIG9rLgoKSW4gcHNldWRvY29kZSwgdGhlc2UgYXJl IHRoZSB1c2UgY2FzZXMgZm9yIHRoZSBkaWZmZXJlbnQgZm9ybXM6CgoKZm9yX2VhY2hfcGlwZV9z dGF0aWMocGlwZSkgewogaWd0X3N1YnRlc3RfZigiZG8tdGhpbmdzLW9uLXBpcGUtJXMiLCBrbXN0 ZXN0X3BpcGVfbmFtZShwaXBlKSkgewogIC4uLgogfQp9CgppZ3Rfc3VidGVzdCgiZG8tdGhpbmdz IikgewogZm9yX2VhY2hfcGlwZSguLi4pIHsKICAuLi4KIH0KfQoKCj4gCj4gPgo+ID4+ICsJCWlm IChpZ3RfcGlwZV9jb25uZWN0b3JfdmFsaWQocGlwZSwgb3V0cHV0KSkgewo+ID4+ICsJCQlpZ3Rf b3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlwZSk7Cj4gPj4gKwkJCWRhdGEtPnBpcGUgPSBwaXBl Owo+ID4+ICsJCQlkYXRhLT5vdXRwdXQgPSBvdXRwdXQ7Cj4gPj4gKwkJCXVwZGF0ZV9kaXNwbGF5 KGRhdGEsIHRlc3RfdHlwZSk7Cj4gPj4gKwkJfQo+ID4+ICsJfQo+ID4+ICt9Cj4gPj4gKwo+ID4+ ICtpZ3RfbWFpbgo+ID4+ICt7Cj4gPj4gKwlkYXRhX3QgZGF0YSA9IHt9Owo+ID4+ICsJaWd0X291 dHB1dF90ICpvdXRwdXQ7Cj4gPj4gKwlkcm1Nb2RlUmVzICpyZXM7Cj4gPj4gKwlkcm1Nb2RlQ29u bmVjdG9yICpjb25uZWN0b3I7Cj4gPj4gKwlpbnQgaSwgdGVzdF9jb25uX2NudCwgdGVzdF9jbnQ7 Cj4gPj4gKwlpbnQgdGVzdHNbXSA9IHtEUk1fTU9ERV9DT05ORUNUT1JfZURQLAo+ID4+ICtEUk1f TU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnR9Owo+ID4+ICsKPiA+PiArCWlndF9maXh0dXJlIHsK PiA+PiArCQlkYXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0FOWSk7 Cj4gPj4gKwkJZGF0YS5kZWJ1Z2ZzX2ZkID0gaWd0X2RlYnVnZnNfZGlyKGRhdGEuZHJtX2ZkKTsK PiA+PiArCQlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7Cj4gPj4gKwkJaWd0X2Rpc3Bs YXlfcmVxdWlyZSgmZGF0YS5kaXNwbGF5LCBkYXRhLmRybV9mZCk7Cj4gPj4gKwkJLy9pZ3RfZGlz cGxheV9yZXF1aXJlX291dHB1dCgmZGF0YS5kaXNwbGF5KTsKPiA+PiArCQlpZ3RfcmVxdWlyZShy ZXMgPSBkcm1Nb2RlR2V0UmVzb3VyY2VzKGRhdGEuZHJtX2ZkKSk7Cj4gPj4gKwl9Cj4gPj4gKwo+ ID4+ICsJZm9yICh0ZXN0X2NudCA9IDA7IHRlc3RfY250IDwgQVJSQVlfU0laRSh0ZXN0cyk7IHRl c3RfY250KyspIHsKPiA+PiArCj4gPj4gKwkJaWd0X3N1YnRlc3RfZigiYmFzaWMtZHNjLWVuYWJs ZS0lcyIsCj4gPj4gKwkJCSAgICAgIGttc3Rlc3RfY29ubmVjdG9yX3R5cGVfc3RyKHRlc3RzW3Rl c3RfY250XSkpIHsKPiA+PiArCQkJdGVzdF9jb25uX2NudCA9IDA7Cj4gPj4gKwkJCWZvciAoaSA9 IDA7IGkgPCByZXMtPmNvdW50X2Nvbm5lY3RvcnM7IGkrKykgewo+ID4+ICsJCQkJY29ubmVjdG9y ID0KPiA+ZHJtTW9kZUdldENvbm5lY3RvckN1cnJlbnQoZGF0YS5kcm1fZmQsCj4gPj4gKwkJCQkJ CQkJICAgICAgIHJlcy0KPiA+PmNvbm5lY3RvcnNbaV0pOwo+ID4+ICsJCQkJaWYgKGNvbm5lY3Rv ci0+Y29ubmVjdGlvbiAhPQo+ID5EUk1fTU9ERV9DT05ORUNURUQgfHwKPiA+PiArCQkJCSAgICBj b25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlICE9Cj4gPj4gKwkJCQkgICAgdGVzdHNbdGVzdF9jbnRd KQo+ID4+ICsJCQkJCWNvbnRpbnVlOwo+ID4+ICsJCQkJdGVzdF9jb25uX2NudCsrOwo+ID4+ICsJ CQkJb3V0cHV0ID0KPiA+aWd0X291dHB1dF9mcm9tX2Nvbm5lY3RvcigmZGF0YS5kaXNwbGF5LCBj b25uZWN0b3IpOwo+ID4+ICsJCQkJc3ByaW50ZihkYXRhLmNvbm5fbmFtZSwgIiVzLSVkIiwKPiA+ PiArCQkJCQlrbXN0ZXN0X2Nvbm5lY3Rvcl90eXBlX3N0cihjb25uZWN0b3ItCj4gPj5jb25uZWN0 b3JfdHlwZSksCj4gPj4gKwkJCQkJdGVzdF9jb25uX2NudCk7Cj4gPj4gKwkJCQlpZ3RfcmVxdWly ZV9mKGlzX2RwX2RzY19zdXBwb3J0ZWQoJmRhdGEpLAo+ID4+ICsJCQkJCSAgICAgICJEU0Mgbm90 IHN1cHBvcnRlZCBvbiBjb25uZWN0b3IgJXMKPiA+XG4iLAo+ID4+ICsJCQkJCSAgICAgIGRhdGEu Y29ubl9uYW1lKTsKPiA+Cj4gPlRoaXMgd2lsbCBtYWtlIHRoZSBzdWJ0ZXN0IHNraXAgd2hlbiBj aGVja2luZyBEUC0xLCB3aXRob3V0IHRyeWluZwo+ID5EUC0yIGF0IGFsbC4gSXMgdGhhdCBpbnRl bmRlZD8KPiA+Cj4gTm8uIGl0IGhhcyB0byB0ZXN0IGZvciBEUC0yIGFzIHdlbGwuLgo+IEJ1dCBl dmVuIGlmIHRoZSBpZ3RfcmVxdWlyZSgpIGhlcmUgZmFpbHMsIHRoZSBsb29wIHdpbGwgbW92ZSBv biB0bwo+IHRoZSBuZXh0IGNvbm5lY3RvciByaWdodD8KCgpObywgaXQganVtcHMgb3V0IG9mIHRo ZSBpZ3Rfc3VidGVzdCBibG9jaywgdG8gdGhlIG5leHQgaXRlcmF0aW9uIG9mCnRoZSBvdXRlciBs b29wLCB3aGljaCBsb29wcyBvdmVyIGNvbm5lY3RvciB0eXBlcy4KCgotLSAKUGV0cmkgTGF0dmFs YQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2 IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK