From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id DD6E56EA65 for ; Mon, 16 Sep 2019 19:40:49 +0000 (UTC) Date: Mon, 16 Sep 2019 12:42:28 -0700 From: Manasi Navare Message-ID: <20190916194227.GB22101@intel.com> References: <20190913234809.29030-1-manasi.d.navare@intel.com> <20190916193457.22046-1-manasi.d.navare@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190916193457.22046-1-manasi.d.navare@intel.com> Subject: Re: [igt-dev] [PATCH i-g-t v6] igt/tests/kms_dp_tiled_display: kms test for display port tiled displays 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: igt-dev@lists.freedesktop.org Cc: Simon Ser , madhumitha.tp@gmail.com, Petri Latvala List-ID: VGhhbmtzIGZvciB0aGUgcGF0Y2ggYW5kIHRoZSByZXZpZXdzLCBwdXNoZWQgdG8gaWd0LWRldgoK UmVnYXJkcwpNYW5hc2kKCgpPbiBNb24sIFNlcCAxNiwgMjAxOSBhdCAxMjozNDo1N1BNIC0wNzAw LCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+IEZyb206IE1hZGh1bWl0aGEgVG9sYWthbmFoYWxsaSBQ cmFkZWVwIDxtYWRodW1pdGhhLnRvbGFrYW5haGFsbGkucHJhZGVlcEBpbnRlbC5jb20+Cj4gCj4g VGhpcyB0ZXN0IHZhbGlkYXRlcyB0aGUgdGlsZWQgRFAgZGlzcGxheXMgdG8gZGlzcGxheSBhIHRl c3QgcGF0dGVybgo+IHNlYW1sZXNzbHkgYWNyb3NzIHRoZSB0d28gdGlsZXMuIEl0IHZhbGlkYXRl cyB0aGUgdHJhbnNjb2RlciBwb3J0Cj4gc3luYyBmZWF0dXJlIG9uIGk5MTUgdG8gZ2V0IGEgdGVh cmZyZWUgdGlsZWQgZGlzcGxheSBvdXRwdXQuCj4gCj4gUmVsYXRlZCBrZXJuZWwgd29yayBwYXRj aGVzLQo+IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9zZXJpZXMvNjY0MDMvCj4g Cj4gVGhpcyB0ZXN0IGNhbiBldmVudHVhbGx5IGJlIGV4dGVuZGVkIHRvIGNvdmVyIHRpbGVkIGRp c3BsYXkgc3VwcG9ydAo+IG9uIG90aGVyIGNvbm5lY3RvciB0eXBlcy4KPiAKPiB2NjoKPiAqIGln dF9yZXF1aXJlIGlmIGVub3VnaCBwaXBlcyBub3QgYXZhaWxhYmxlIChTaW1vbiwgUGV0cmkpCj4g djU6Cj4gKiBBZGRyZXNzZXMgbmV3bGluZSBuaXRzIChTaW1vbikKPiAqIEFkZCAyMDE5IGNvcHly aWdodCwgaWd0X2Rlc2NyaWJlIChQZXRyaSkKPiAqIENoZWNrIGFsbCBwcmV2IGNvbm5lY3RvcnMg Zm9yIHBpcGUgYXNzaWdubWVudHMgKFNpbW9uKQo+ICogQ29udGludWUgaWYgbnVtX2hfdGlsZXMg PSAwIChTaW1vbikKPiB2NDoKPiAqIEFkZCB0aGUgbG9naWMgdG8gY2hlY2sgdGhlcmUgYXJlCj4g cGFnZSBmbGlwcyBwZXIgY29ubmVjdG9yIChTaW1vbikKPiAqIENhbGxvYyBpbnN0ZWFkIG9mIG1h bGxvYyB0byBpbml0aWFsaXplIChNYW5hc2kpCj4gCj4gdjM6Cj4gKiBGaXggdGhlIHBvaW50ZXIg bGVha3MgKFNpbW9uKQo+ICogQ29kZSBpbmRlbnRhdGlvbiAoTWFuYXNpKQo+ICogQ29tcGFyZSB0 d28gY29uc2VjdXRpdmUgZmxpcCB0aW1lc3RhbXBzIChTaW1vbikKPiAqIFVzZSBzaW5nbGUgZmIg YWNyb3NzIHRpbGVzIChTaW1vbikKPiAqIEZpeCByZXNldCBtb2RlIGxvZ2ljIChNYW5hc2kpCj4g Cj4gdjI6IEFkZGVkIGEgY2hlY2sgZm9yIGNoZWNraW5nIHBhZ2VmbGlwIGV2ZW50IHRpbWVzdGFt cHMgKFNpbW9uLCBNYW5hc2kpCj4gICAgIE1pbm9yIHN0eWxlIGNoYW5nZXMgKFNpbW9uKQo+ICAg IENvZGUgY2xlYW4tdXAgYW5kIHJlb3JkZXJpbmcKPiAKPiBDYzogTWFuYXNpIE5hdmFyZSA8bWFu YXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiBDYzogUGV0cmkgTGF0dmFsYSA8cGV0cmkubGF0dmFs YUBpbnRlbC5jb20+Cj4gQ2M6IFNpbW9uIFNlciA8c2ltb24uc2VyQGludGVsLmNvbT4KPiBDYzog PG1hZGh1bWl0aGEudHBAZ21haWwuY29tPgo+IENjOiBTaW1vbiBTZXIgPGNvbnRhY3RAZW1lcnNp b24uZnI+Cj4gU2lnbmVkLW9mZi1ieTogTWFkaHVtaXRoYSBUb2xha2FuYWhhbGxpIFByYWRlZXAg PG1hZGh1bWl0aGEudG9sYWthbmFoYWxsaS5wcmFkZWVwQGludGVsLmNvbT4KPiBTaWduZWQtb2Zm LWJ5OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+IFJldmlld2Vk LWJ5OiBTaW1vbiBTZXIgPHNpbW9uLnNlckBpbnRlbC5jb20+Cj4gLS0tCj4gIHRlc3RzL01ha2Vm aWxlLnNvdXJjZXMgICAgICAgfCAgIDEgKwo+ICB0ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5j IHwgNDIyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIHRlc3RzL21lc29u LmJ1aWxkICAgICAgICAgICAgfCAgIDEgKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDQyNCBpbnNlcnRp b25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5j Cj4gCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmls ZS5zb3VyY2VzCj4gaW5kZXggYzAyZTRkOTQuLjc1NjFhYjliIDEwMDY0NAo+IC0tLSBhL3Rlc3Rz L01ha2VmaWxlLnNvdXJjZXMKPiArKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gQEAgLTQx LDYgKzQxLDcgQEAgVEVTVFNfcHJvZ3MgPSBcCj4gIAlrbXNfY3Vyc29yX2VkZ2Vfd2FsayBcCj4g IAlrbXNfY3Vyc29yX2xlZ2FjeSBcCj4gIAlrbXNfZHBfZHNjIFwKPiArCWttc19kcF90aWxlZF9k aXNwbGF5IFwKPiAgCWttc19kcmF3X2NyYyBcCj4gIAlrbXNfZmJjb25fZmJ0IFwKPiAgCWttc19m ZW5jZV9waW5fbGVhayBcCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19kcF90aWxlZF9kaXNwbGF5 LmMgYi90ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwMC4uYzQ2NDNjMzUKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvdGVzdHMv a21zX2RwX3RpbGVkX2Rpc3BsYXkuYwo+IEBAIC0wLDAgKzEsNDIyIEBACj4gKy8qCj4gKyAqIENv cHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsg Kgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVk ZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29m dHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ LAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdB UkUuCj4gKyAqCj4gKyAqIEF1dGhvcnM6Cj4gKyAqICBNYWRodW1pdGhhIFRvbGFrYW5haGFsbGkg UHJhZGVlcAo+ICsgKiAgICAgIDxtYWRodW1pdGhhLnRvbGFrYW5haGFsbGkucHJhZGVlcEBpbnRl bC5jb20+Cj4gKyAqICBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ ICsgKgo+ICsgKiBEaXNwbGF5IFBvcnQgVGlsZWQgRGlzcGxheSBUZXN0Cj4gKyAqIFRoaXMgdGVz dCBwYXJzZXMgdGhlIHRpbGUgaW5mb3JtYXRpb24gb2YgdGhlIGNvbm5lY3RvcnMgdGhhdCBoYXZl IFRJTEUKPiArICogcHJvcGVydHkgc2V0LCBzZXRzIHVwIHRoZSBmcmFtZWJ1ZmZlciB3aXRoIGNv cnJlY3Qgb2Zmc2V0cyBjb3JyZXNwb25kaW5nIHRvCj4gKyAqIHRoZSB0aWxlIG9mZnNldHMgYW5k IGRvZXMgYW4gYXRvbWljIG1vZGVzZXQgd2l0aCB0d28gQ1JUQ3MgZm9yIHR3bwo+ICsgKiBjb25u ZWN0b3JzLiBQYWdlIGZsaXAgZXZlbnQgdGltZXN0YW1wIGZyb20gZWFjaCBDUlRDIGlzIGNvbGxl Y3RlZCBhbmQKPiArICogY29tcGFyZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhleSBvY2N1cnJlZCBp biBhIHN5bmNocm9ub3VzIG1hbm5lci4KPiArICoKPiArICogVGhpcyB0ZXN0IGN1cnJlbnRseSBz dXBwb3J0cyBvbmx5IGhvcml6b250YWxseSB0aWxlZCBkaXNwbGF5cywgaW4gbGluZSB3aXRoCj4g KyAqIHRoZSBkaXNwbGF5cyBzdXBwb3J0ZWQgYnkgdGhlIGtlcm5lbCBhdCB0aGUgbW9tZW50Lgo+ ICsgKi8KPiArCj4gKyNpbmNsdWRlICJpZ3QuaCIKPiArI2luY2x1ZGUgInBvbGwuaCIKPiArI2lu Y2x1ZGUgImRybV9tb2RlLmgiCj4gKyNpbmNsdWRlICJkcm1fZm91cmNjLmgiCj4gKwo+ICtJR1Rf VEVTVF9ERVNDUklQVElPTigiVGVzdCBmb3IgVHJhbnNjb2RlciBQb3J0IFN5bmMgZm9yIERpc3Bs YXkgUG9ydCBUaWxlZCBEaXNwbGF5cyIpOwo+ICsKPiArdHlwZWRlZiBzdHJ1Y3Qgewo+ICsJaWd0 X291dHB1dF90ICpvdXRwdXQ7Cj4gKwlpZ3RfdGlsZV9pbmZvX3QgdGlsZTsKPiArCWVudW0gcGlw ZSBwaXBlOwo+ICsJZHJtTW9kZUNvbm5lY3RvclB0ciBjb25uZWN0b3I7Cj4gKwlib29sIGdvdF9w YWdlX2ZsaXA7Cj4gK30gZGF0YV9jb25uZWN0b3JfdDsKPiArCj4gK3R5cGVkZWYgc3RydWN0IHsK PiArCWludCBkcm1fZmQ7Cj4gKwlpbnQgbnVtX2hfdGlsZXM7Cj4gKwlpZ3RfZmJfdCBmYl90ZXN0 X3BhdHRlcm47Cj4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5Owo+ICsJZGF0YV9jb25uZWN0b3Jf dCAqY29ubnM7Cj4gKwllbnVtIGlndF9jb21taXRfc3R5bGUgY29tbWl0Owo+ICt9IGRhdGFfdDsK PiArCj4gK3N0YXRpYyBpbnQgZHJtX3Byb3BlcnR5X2lzX3RpbGUoZHJtTW9kZVByb3BlcnR5UHRy IHByb3ApCj4gK3sKPiArCXJldHVybiAoc3RyY21wKHByb3AtPm5hbWUsICJUSUxFIikgPyAwIDog MSkgJiYKPiArCQkJIGRybV9wcm9wZXJ0eV90eXBlX2lzKHByb3AsIERSTV9NT0RFX1BST1BfQkxP Qik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGdldF9jb25uZWN0b3JfdGlsZV9wcm9wcyhkYXRh X3QgKmRhdGEsIGRybU1vZGVDb25uZWN0b3JQdHIgY29ubiwKPiArCQkJCSAgICAgaWd0X3RpbGVf aW5mb190ICp0aWxlKQo+ICt7Cj4gKwlpbnQgaSA9IDA7Cj4gKwlkcm1Nb2RlUHJvcGVydHlQdHIg cHJvcDsKPiArCWRybU1vZGVQcm9wZXJ0eUJsb2JQdHIgYmxvYjsKPiArCj4gKwlmb3IgKGkgPSAw OyBpIDwgY29ubi0+Y291bnRfcHJvcHM7IGkrKykgewo+ICsJCXByb3AgPSBkcm1Nb2RlR2V0UHJv cGVydHkoZGF0YS0+ZHJtX2ZkLCBjb25uLT5wcm9wc1tpXSk7Cj4gKwo+ICsJCWlndF9hc3NlcnQo cHJvcCk7Cj4gKwo+ICsJCWlmICghZHJtX3Byb3BlcnR5X2lzX3RpbGUocHJvcCkpIHsKPiArCQkJ ZHJtTW9kZUZyZWVQcm9wZXJ0eShwcm9wKTsKPiArCQkJY29udGludWU7Cj4gKwkJfQo+ICsKPiAr CQlibG9iID0gZHJtTW9kZUdldFByb3BlcnR5QmxvYihkYXRhLT5kcm1fZmQsCj4gKwkJCQljb25u LT5wcm9wX3ZhbHVlc1tpXSk7Cj4gKwo+ICsJCWlmICghYmxvYikKPiArCQkJZ290byBjbGVhbnVw Owo+ICsKPiArCQlpZ3RfcGFyc2VfY29ubmVjdG9yX3RpbGVfYmxvYihibG9iLCB0aWxlKTsKPiAr CQlicmVhazsKPiArCX0KPiArCj4gK2NsZWFudXA6Cj4gKwlkcm1Nb2RlRnJlZVByb3BlcnR5KHBy b3ApOwo+ICsJZHJtTW9kZUZyZWVQcm9wZXJ0eUJsb2IoYmxvYik7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIGdldF9udW1iZXJfb2ZfaF90aWxlcyhkYXRhX3QgKmRhdGEpCj4gK3sKPiArCWludCBp Owo+ICsJZHJtTW9kZVJlc1B0ciByZXM7Cj4gKwlkcm1Nb2RlQ29ubmVjdG9yUHRyIGNvbm5lY3Rv cjsKPiArCWlndF90aWxlX2luZm9fdCB0aWxlID0gey5udW1faF90aWxlID0gMH07Cj4gKwo+ICsJ aWd0X2Fzc2VydChyZXMgPSBkcm1Nb2RlR2V0UmVzb3VyY2VzKGRhdGEtPmRybV9mZCkpOwo+ICsK PiArCWZvciAoaSA9IDA7IGkgPCByZXMtPmNvdW50X2Nvbm5lY3RvcnM7IGkrKykgewo+ICsJCWNv bm5lY3RvciA9IGRybU1vZGVHZXRDb25uZWN0b3JDdXJyZW50KGRhdGEtPmRybV9mZCwKPiArCQkJ CQkJICAgICAgIHJlcy0+Y29ubmVjdG9yc1tpXSk7Cj4gKwo+ICsJCWlndF9hc3NlcnQoY29ubmVj dG9yKTsKPiArCj4gKwkJaWYgKGNvbm5lY3Rvci0+Y29ubmVjdGlvbiAhPSBEUk1fTU9ERV9DT05O RUNURUQgfHwKPiArCQkgICAgY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSAhPSBEUk1fTU9ERV9D T05ORUNUT1JfRGlzcGxheVBvcnQpIHsKPiArCQkJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubmVj dG9yKTsKPiArCQkJY29udGludWU7Cj4gKwkJfQo+ICsKPiArCQlnZXRfY29ubmVjdG9yX3RpbGVf cHJvcHMoZGF0YSwgY29ubmVjdG9yLCAmdGlsZSk7Cj4gKwo+ICsJCWlmICh0aWxlLm51bV9oX3Rp bGUgPT0gMCkgewo+ICsJCQlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25uZWN0b3IpOwo+ICsJCQlj b250aW51ZTsKPiArCQl9Cj4gKwkJZGF0YS0+bnVtX2hfdGlsZXMgPSB0aWxlLm51bV9oX3RpbGU7 Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJZHJtTW9kZUZyZWVSZXNvdXJjZXMocmVzKTsKPiAr CWRybU1vZGVGcmVlQ29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IGdldF9jb25uZWN0b3JzKGRhdGFfdCAqZGF0YSkKPiArewo+ICsJaW50IGNvdW50ID0gMDsKPiAr CWlndF9vdXRwdXRfdCAqb3V0cHV0Owo+ICsJZGF0YV9jb25uZWN0b3JfdCAqY29ubnMgPSBkYXRh LT5jb25uczsKPiArCj4gKwlmb3JfZWFjaF9jb25uZWN0ZWRfb3V0cHV0KGRhdGEtPmRpc3BsYXks IG91dHB1dCkgewo+ICsJCWNvbm5zW2NvdW50XS5jb25uZWN0b3IgPSBkcm1Nb2RlR2V0Q29ubmVj dG9yKGRhdGEtPmRpc3BsYXktPmRybV9mZCwKPiArCQkJCQkJCSAgICAgb3V0cHV0LT5pZCk7Cj4g Kwo+ICsJCWlndF9hc3NlcnQoY29ubnNbY291bnRdLmNvbm5lY3Rvcik7Cj4gKwo+ICsJCWlmIChj b25uc1tjb3VudF0uY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSAhPQo+ICsJCSAgICBEUk1fTU9E RV9DT05ORUNUT1JfRGlzcGxheVBvcnQpIHsKPiArCQkJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29u bnNbY291bnRdLmNvbm5lY3Rvcik7Cj4gKwkJCWNvbnRpbnVlOwo+ICsJCX0KPiArCj4gKwkJZ2V0 X2Nvbm5lY3Rvcl90aWxlX3Byb3BzKGRhdGEsIGNvbm5zW2NvdW50XS5jb25uZWN0b3IsCj4gKwkJ CQkJICZjb25uc1tjb3VudF0udGlsZSk7Cj4gKwo+ICsJCWlmIChjb25uc1tjb3VudF0udGlsZS5u dW1faF90aWxlID09IDApIHsKPiArCQkJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubnNbY291bnRd LmNvbm5lY3Rvcik7Cj4gKwkJCWNvbnRpbnVlOwo+ICsJCX0KPiArCj4gKwkJLyogQ2hlY2sgaWYg dGhlIGNvbm5lY3RvcnMgYmVsb25nIHRvIHRoZSBzYW1lIHRpbGUgZ3JvdXAgKi8KPiArCQlpZiAo Y291bnQgPiAwKQo+ICsJCQlpZ3RfYXNzZXJ0KGNvbm5zW2NvdW50XS50aWxlLnRpbGVfZ3JvdXBf aWQgPT0KPiArCQkJCSAgIGNvbm5zW2NvdW50LTFdLnRpbGUudGlsZV9ncm91cF9pZCk7Cj4gKwo+ ICsJCWNvdW50Kys7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4gK3Jlc2V0X3BsYW5l KGlndF9vdXRwdXRfdCAqb3V0cHV0KQo+ICt7Cj4gKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKPiAr Cj4gKwlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsIERSTV9QTEFO RV9UWVBFX1BSSU1BUlkpOwo+ICsJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCBOVUxMKTsKPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgcmVzZXRfb3V0cHV0KGlndF9vdXRwdXRfdCAqb3V0cHV0KQo+ ICt7Cj4gKwlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9OT05FKTsKPiArfQo+ICsK PiArc3RhdGljIHZvaWQgcmVzZXRfbW9kZShkYXRhX3QgKmRhdGEpCj4gK3sKPiArCWludCBjb3Vu dDsKPiArCWlndF9vdXRwdXRfdCAqb3V0cHV0Owo+ICsJZGF0YV9jb25uZWN0b3JfdCAqY29ubnMg PSBkYXRhLT5jb25uczsKPiArCj4gKwlmb3IgKGNvdW50ID0gMDsgY291bnQgPCBkYXRhLT5udW1f aF90aWxlczsgY291bnQrKykgewo+ICsJCW91dHB1dCA9IGlndF9vdXRwdXRfZnJvbV9jb25uZWN0 b3IoZGF0YS0+ZGlzcGxheSwKPiArCQkJCQkJICAgY29ubnNbY291bnRdLmNvbm5lY3Rvcik7Cj4g KwkJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfTk9ORSk7Cj4gKwl9Cj4gKwlpZ3Rf ZGlzcGxheV9jb21taXQyKGRhdGEtPmRpc3BsYXksIGRhdGEtPmNvbW1pdCk7Cj4gK30KPiArCj4g K3N0YXRpYyB2b2lkIHRlc3RfY2xlYW51cChkYXRhX3QgKmRhdGEpCj4gK3sKPiArCWludCBjb3Vu dDsKPiArCWRhdGFfY29ubmVjdG9yX3QgKmNvbm5zID0gZGF0YS0+Y29ubnM7Cj4gKwo+ICsJZm9y IChjb3VudCA9IDA7IGNvdW50IDwgZGF0YS0+bnVtX2hfdGlsZXM7IGNvdW50KyspIHsKPiArCQlp ZiAoY29ubnNbY291bnRdLm91dHB1dCkgewo+ICsJCQlyZXNldF9wbGFuZShjb25uc1tjb3VudF0u b3V0cHV0KTsKPiArCQkJcmVzZXRfb3V0cHV0KGNvbm5zW2NvdW50XS5vdXRwdXQpOwo+ICsJCX0K PiArCX0KPiArCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmJfdGVzdF9wYXR0 ZXJuKTsKPiArCWlndF9kaXNwbGF5X2NvbW1pdDIoZGF0YS0+ZGlzcGxheSwgZGF0YS0+Y29tbWl0 KTsKPiArCW1lbXNldChjb25ucywgMCwgc2l6ZW9mKGRhdGFfY29ubmVjdG9yX3QpICogZGF0YS0+ bnVtX2hfdGlsZXMpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzZXR1cF9tb2RlKGRhdGFfdCAq ZGF0YSkKPiArewo+ICsJaW50IGNvdW50ID0gMCwgcHJldiA9IDA7Cj4gKwlib29sIHBpcGVfaW5f dXNlID0gZmFsc2U7Cj4gKwllbnVtIHBpcGUgcGlwZTsKPiArCWlndF9vdXRwdXRfdCAqb3V0cHV0 Owo+ICsJZGF0YV9jb25uZWN0b3JfdCAqY29ubnMgPSBkYXRhLT5jb25uczsKPiArCj4gKwkvKgo+ ICsJICogVGhlIG91dHB1dCBpcyBzZXQgdG8gUElQRV9OT05FIGFuZCB0aGVuIGFzc2lnbmVkIGEg cGlwZS4KPiArCSAqIFRoaXMgaXMgZG9uZSB0byBlbnN1cmUgYSBjb21wbGV0ZSBtb2Rlc2V0IG9j Y3VyZXMgZXZlcnkKPiArCSAqIHRpbWUgdGhlIHRlc3QgaXMgcnVuLgo+ICsJICovCj4gKwlyZXNl dF9tb2RlKGRhdGEpOwo+ICsKPiArCWZvciAoY291bnQgPSAwOyBjb3VudCA8IGRhdGEtPm51bV9o X3RpbGVzOyBjb3VudCsrKSB7Cj4gKwkJb3V0cHV0ID0gaWd0X291dHB1dF9mcm9tX2Nvbm5lY3Rv cihkYXRhLT5kaXNwbGF5LAo+ICsJCQkJCQkgICBjb25uc1tjb3VudF0uY29ubmVjdG9yKTsKPiAr Cj4gKwkJZm9yX2VhY2hfcGlwZShkYXRhLT5kaXNwbGF5LCBwaXBlKSB7Cj4gKwkJCXBpcGVfaW5f dXNlID0gZmFsc2U7Cj4gKwkJCWlmIChjb3VudCA+IDApIHsKPiArCQkJCWZvciAocHJldiA9IGNv dW50IC0gMTsgcHJldiA+PSAwOyBwcmV2LS0pIHsKPiArCQkJCQlpZiAocGlwZSA9PSBjb25uc1tw cmV2XS5waXBlKSB7Cj4gKwkJCQkJCXBpcGVfaW5fdXNlID0gdHJ1ZTsKPiArCQkJCQkJYnJlYWs7 Cj4gKwkJCQkJfQo+ICsJCQkJfQo+ICsJCQkJaWYgKHBpcGVfaW5fdXNlKQo+ICsJCQkJCWNvbnRp bnVlOwo+ICsJCQl9Cj4gKwo+ICsJCQlpZiAoaWd0X3BpcGVfY29ubmVjdG9yX3ZhbGlkKHBpcGUs IG91dHB1dCkpIHsKPiArCQkJCWNvbm5zW2NvdW50XS5waXBlID0gcGlwZTsKPiArCQkJCWNvbm5z W2NvdW50XS5vdXRwdXQgPSBvdXRwdXQ7Cj4gKwo+ICsJCQkJaWd0X291dHB1dF9zZXRfcGlwZShj b25uc1tjb3VudF0ub3V0cHV0LAo+ICsJCQkJCQkgICAgY29ubnNbY291bnRdLnBpcGUpOwo+ICsJ CQkJYnJlYWs7Cj4gKwkJCX0KPiArCQl9Cj4gKwkJaWd0X3JlcXVpcmUoY29ubnNbY291bnRdLnBp cGUgIT0gUElQRV9OT05FKTsKPiArCX0KPiArCWlndF9kaXNwbGF5X2NvbW1pdF9hdG9taWMoZGF0 YS0+ZGlzcGxheSwgRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQsCj4gKwkJCQkgIE5VTEwp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzZXR1cF9mcmFtZWJ1ZmZlcihkYXRhX3QgKmRhdGEp Cj4gK3sKPiArCWludCBjb3VudDsKPiArCWlndF9wbGFuZV90ICpwcmltYXJ5Owo+ICsJaW50IGZi X2hfc2l6ZSA9IDAsIGZiX3Zfc2l6ZSA9IDA7Cj4gKwlkYXRhX2Nvbm5lY3Rvcl90ICpjb25ucyA9 IGRhdGEtPmNvbm5zOwo+ICsKPiArCWZvciAoY291bnQgPSAwOyBjb3VudCA8IGRhdGEtPm51bV9o X3RpbGVzOyBjb3VudCsrKSB7Cj4gKwo+ICsJCWZiX2hfc2l6ZSArPSBjb25uc1tjb3VudF0udGls ZS50aWxlX2hfc2l6ZTsKPiArCQkvKiBXZSBzdXBwb3J0IG9ubHkgaG9yaXpvbnRhbCB0aWxlcywg c28gdmVydGljYWwgc2l6ZSBpcyBzYW1lCj4gKwkJICogZm9yIGFsbCB0aWxlcyBhbmQgbmVlZHMg dG8gYmUgYXNzaWduZWQgb25seSBvbmNlLgo+ICsJCSAqLwo+ICsJCWlmICghZmJfdl9zaXplKQo+ ICsJCQlmYl92X3NpemUgPSBjb25uc1tjb3VudF0udGlsZS50aWxlX3Zfc2l6ZTsKPiArCj4gKwkJ aWYgKGNvdW50ID4gMCkKPiArCQkJaWd0X2Fzc2VydChjb25uc1tjb3VudF0udGlsZS50aWxlX3Zf c2l6ZSA9PQo+ICsJCQkJICAgY29ubnNbY291bnQtMV0udGlsZS50aWxlX3Zfc2l6ZSk7Cj4gKwl9 Cj4gKwo+ICsJaWd0X2NyZWF0ZV9wYXR0ZXJuX2ZiKGRhdGEtPmRybV9mZCwKPiArCQkJICAgICAg ZmJfaF9zaXplLAo+ICsJCQkgICAgICBmYl92X3NpemUsCj4gKwkJCSAgICAgIERSTV9GT1JNQVRf WEJHUjg4ODgsCj4gKwkJCSAgICAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCj4gKwkJCSAg ICAgICZkYXRhLT5mYl90ZXN0X3BhdHRlcm4pOwo+ICsKPiArCWZvciAoY291bnQgPSAwOyBjb3Vu dCA8IGRhdGEtPm51bV9oX3RpbGVzOyBjb3VudCsrKSB7Cj4gKwkJcHJpbWFyeSA9IGlndF9vdXRw dXRfZ2V0X3BsYW5lX3R5cGUoY29ubnNbY291bnRdLm91dHB1dCwKPiArCQkJCQkJICAgIERSTV9Q TEFORV9UWVBFX1BSSU1BUlkpOwo+ICsKPiArCQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZk YXRhLT5mYl90ZXN0X3BhdHRlcm4pOwo+ICsKPiArCQlpZ3RfZmJfc2V0X3NpemUoJmRhdGEtPmZi X3Rlc3RfcGF0dGVybiwgcHJpbWFyeSwKPiArCQkJCWNvbm5zW2NvdW50XS50aWxlLnRpbGVfaF9z aXplLAo+ICsJCQkJY29ubnNbY291bnRdLnRpbGUudGlsZV92X3NpemUpOwo+ICsKPiArCQlpZ3Rf ZmJfc2V0X3Bvc2l0aW9uKCZkYXRhLT5mYl90ZXN0X3BhdHRlcm4sIHByaW1hcnksCj4gKwkJCQkg ICAgKGNvbm5zW2NvdW50XS50aWxlLnRpbGVfaF9zaXplICoKPiArCQkJCSAgICAgY29ubnNbY291 bnRdLnRpbGUudGlsZV9oX2xvYyksCj4gKwkJCQkgICAgKGNvbm5zW2NvdW50XS50aWxlLnRpbGVf dl9zaXplICoKPiArCQkJCSAgICAgY29ubnNbY291bnRdLnRpbGUudGlsZV92X2xvYykpOwo+ICsK PiArCQlpZ3RfcGxhbmVfc2V0X3NpemUocHJpbWFyeSwKPiArCQkJCSAgIGNvbm5zW2NvdW50XS50 aWxlLnRpbGVfaF9zaXplLAo+ICsJCQkJICAgY29ubnNbY291bnRdLnRpbGUudGlsZV92X3NpemUp Owo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBwYWdlX2ZsaXBfaGFuZGxlcihpbnQgZmQs IHVuc2lnbmVkIGludCBzZXEsCj4gKwkJCSAgICAgIHVuc2lnbmVkIGludCB0dl9zZWMsIHVuc2ln bmVkIGludCB0dl91c2VjLAo+ICsJCQkgICAgICB1bnNpZ25lZCBpbnQgY3J0Y19pZCwgdm9pZCAq X2RhdGEpCj4gK3sKPiArCWRhdGFfdCAqZGF0YSA9IF9kYXRhOwo+ICsJZGF0YV9jb25uZWN0b3Jf dCAqY29ubjsKPiArCWJvb2wgaXNfb25fdGltZSA9IGZhbHNlOwo+ICsJc3RhdGljIHVuc2lnbmVk IGludCBfdHZfc2VjLCBfdHZfdXNlYzsKPiArCWludCBpOwo+ICsKPiArCWlndF9kZWJ1ZygiUGFn ZSBGbGlwIEV2ZW50IHJlY2VpdmVkIGZyb20gQ1JUQzolZCBhdCAldToldVxuIiwgY3J0Y19pZCwK PiArCQkgIHR2X3NlYywgdHZfdXNlYyk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGRhdGEtPm51 bV9oX3RpbGVzOyBpKyspIHsKPiArCj4gKwkJY29ubiA9ICZkYXRhLT5jb25uc1tpXTsKPiArCQlp ZiAoZGF0YS0+ZGlzcGxheS0+cGlwZXNbY29ubi0+cGlwZV0uY3J0Y19pZCA9PSBjcnRjX2lkKSB7 Cj4gKwkJCWlndF9hc3NlcnRfZighY29ubi0+Z290X3BhZ2VfZmxpcCwKPiArCQkJCSAgICAgIkdv dCB0d28gcGFnZS1mbGlwcyBmb3IgQ1JUQyAldVxuIiwKPiArCQkJCSAgICAgY3J0Y19pZCk7Cj4g KwkJCWNvbm4tPmdvdF9wYWdlX2ZsaXAgPSB0cnVlOwo+ICsKPiArCQkJLyogU2tpcCB0aGUgZm9s bG93aW5nIGNoZWNrcyBmb3IgdGhlIGZpcnN0IHBhZ2UgZmxpcCBldmVudCAqLwo+ICsJCQlpZiAo X3R2X3NlYyA9PSAwIHx8IF90dl91c2VjID09IDApIHsKPiArCQkJCV90dl9zZWMgPSB0dl9zZWM7 Cj4gKwkJCQlfdHZfdXNlYyA9IHR2X3VzZWM7Cj4gKwkJCQlyZXR1cm47Cj4gKwkJCX0KPiArCQkJ LyoKPiArCQkJICogRm9yIHNlYW1sZXNzIHRlYXItZnJlZSBkaXNwbGF5LCB0aGUgcGFnZSBmbGlw IGV2ZW50IHRpbWVzdGFtcHMKPiArCQkJICogZnJvbSBhbGwgdGhlIHRpbGVzIHNob3VsZCBub3Qg ZGlmZmVyIGJ5IG1vcmUgdGhhbiAxMHVzLgo+ICsJCQkgKi8KPiArCQkJaXNfb25fdGltZSA9IHR2 X3NlYyA9PSBfdHZfc2VjICYmIChhYnModHZfdXNlYyAtIF90dl91c2VjKSA8IDEwKTsKPiArCj4g KwkJCWlndF9mYWlsX29uX2YoIWlzX29uX3RpbWUsICJEZWxheWVkIHBhZ2UgZmxpcCBldmVudCBm cm9tIENSVEM6JWQgYXQgJXU6JXVcbiIsCj4gKwkJCQkgICAgICBjcnRjX2lkLCB0dl9zZWMsIHR2 X3VzZWMpOwo+ICsJCQlyZXR1cm47Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWlndF9hc3NlcnRfZihm YWxzZSwgIkdvdCBwYWdlLWZsaXAgZXZlbnQgZm9yIHVuZXhwZWN0ZWQgQ1JUQyAldVxuIiwKPiAr CQkgICAgIGNydGNfaWQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBnb3RfYWxsX3BhZ2VfZmxp cHMoZGF0YV90ICpkYXRhKQo+ICt7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwg ZGF0YS0+bnVtX2hfdGlsZXM7IGkrKykgewo+ICsJCWlmICghZGF0YS0+Y29ubnNbaV0uZ290X3Bh Z2VfZmxpcCkKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsKPiArCXJldHVybiB0cnVlOwo+ ICt9Cj4gKwo+ICtpZ3RfbWFpbgo+ICt7Cj4gKwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7Cj4gKwlk YXRhX3QgZGF0YSA9IHswfTsKPiArCXN0cnVjdCBwb2xsZmQgcGZkID0gezB9Owo+ICsJZHJtRXZl bnRDb250ZXh0IGRybV9ldmVudCA9IHswfTsKPiArCWludCByZXQ7Cj4gKwo+ICsJaWd0X2ZpeHR1 cmUgewo+ICsJCWRhdGEuZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklWRVJfQU5Z KTsKPiArCj4gKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOwo+ICsJCWlndF9kaXNw bGF5X3JlcXVpcmUoJmRpc3BsYXksIGRhdGEuZHJtX2ZkKTsKPiArCQlpZ3RfZGlzcGxheV9yZXNl dCgmZGlzcGxheSk7Cj4gKwo+ICsJCWRhdGEuZGlzcGxheSA9ICZkaXNwbGF5Owo+ICsJCXBmZC5m ZCA9IGRhdGEuZHJtX2ZkOwo+ICsJCXBmZC5ldmVudHMgPSBQT0xMSU47Cj4gKwkJZHJtX2V2ZW50 LnZlcnNpb24gPSAzOwo+ICsJCWRybV9ldmVudC5wYWdlX2ZsaXBfaGFuZGxlcjIgPSBwYWdlX2Zs aXBfaGFuZGxlcjsKPiArCQlkYXRhLmNvbW1pdCA9IGRhdGEuZGlzcGxheS0+aXNfYXRvbWljID8g Q09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1k7Cj4gKwkJaWd0X3JlcXVpcmUoZGF0YS5jb21t aXQgPT0gQ09NTUlUX0FUT01JQyk7Cj4gKwo+ICsJCWdldF9udW1iZXJfb2ZfaF90aWxlcygmZGF0 YSk7Cj4gKwkJaWd0X2RlYnVnKCJOdW1iZXIgb2YgSG9yaXpvbnRhbCBUaWxlczogJWRcbiIsIGRh dGEubnVtX2hfdGlsZXMpOwo+ICsJCWlndF9yZXF1aXJlKGRhdGEubnVtX2hfdGlsZXMgPiAwKTsK PiArCQlkYXRhLmNvbm5zID0gY2FsbG9jKGRhdGEubnVtX2hfdGlsZXMsIHNpemVvZihkYXRhX2Nv bm5lY3Rvcl90KSk7Cj4gKwl9Cj4gKwo+ICsJaWd0X2Rlc2NyaWJlKCJNYWtlIHN1cmUgdGhlIFRp bGVkIENSVENzIGFyZSBzeW5jaHJvbml6ZWQgYW5kIHdlIGdldCAiCj4gKwkJICAgICAicGFnZSBm bGlwcyBmb3IgYWxsIHRpbGVkIENSVENzIGluIG9uZSB2YmxhbmsuIik7Cj4gKwlpZ3Rfc3VidGVz dCgiYmFzaWMtdGVzdC1wYXR0ZXJuIikgewo+ICsJCWlndF9hc3NlcnQoZGF0YS5jb25ucyk7Cj4g Kwo+ICsJCWdldF9jb25uZWN0b3JzKCZkYXRhKTsKPiArCQlzZXR1cF9tb2RlKCZkYXRhKTsKPiAr CQlzZXR1cF9mcmFtZWJ1ZmZlcigmZGF0YSk7Cj4gKwkJaWd0X2Rpc3BsYXlfY29tbWl0X2F0b21p YyhkYXRhLmRpc3BsYXksIERSTV9NT0RFX0FUT01JQ19OT05CTE9DSyB8Cj4gKwkJCQkJICBEUk1f TU9ERV9QQUdFX0ZMSVBfRVZFTlQsICZkYXRhKTsKPiArCQl3aGlsZSAoIWdvdF9hbGxfcGFnZV9m bGlwcygmZGF0YSkpIHsKPiArCQkJcmV0ID0gcG9sbCgmcGZkLCAxLCAxMDAwKTsKPiArCQkJaWd0 X2Fzc2VydChyZXQgPT0gMSk7Cj4gKwkJCWRybUhhbmRsZUV2ZW50KGRhdGEuZHJtX2ZkLCAmZHJt X2V2ZW50KTsKPiArCQl9Cj4gKwo+ICsJCXRlc3RfY2xlYW51cCgmZGF0YSk7Cj4gKwl9Cj4gKwo+ ICsJaWd0X2ZpeHR1cmUgewo+ICsJCWZyZWUoZGF0YS5jb25ucyk7Cj4gKwkJY2xvc2UoZGF0YS5k cm1fZmQpOwo+ICsJCWttc3Rlc3RfcmVzdG9yZV92dF9tb2RlKCk7Cj4gKwkJaWd0X2Rpc3BsYXlf ZmluaShkYXRhLmRpc3BsYXkpOwo+ICsJfQo+ICt9Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29u LmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQKPiBpbmRleCBhN2IyYjMyMi4uNTAyOTJkZjggMTAw NjQ0Cj4gLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKPiArKysgYi90ZXN0cy9tZXNvbi5idWlsZAo+ IEBAIC0yNiw2ICsyNiw3IEBAIHRlc3RfcHJvZ3MgPSBbCj4gIAkna21zX2N1cnNvcl9lZGdlX3dh bGsnLAo+ICAJJ2ttc19jdXJzb3JfbGVnYWN5JywKPiAgCSdrbXNfZHBfZHNjJywKPiArCSdrbXNf ZHBfdGlsZWRfZGlzcGxheScsCj4gIAkna21zX2RyYXdfY3JjJywKPiAgCSdrbXNfZmJjb25fZmJ0 JywKPiAgCSdrbXNfZmVuY2VfcGluX2xlYWsnLAo+IC0tIAo+IDIuMTkuMQo+IApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlz dAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=