From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id C9C11899D4 for ; Thu, 13 Jun 2019 13:14:27 +0000 (UTC) References: <20190513165347.29108-1-maarten.lankhorst@linux.intel.com> <97cd03dc-387c-e646-2915-9e42829d4bcc@gmail.com> From: Maarten Lankhorst Message-ID: <35164500-06c0-68ab-0416-66750ea3be0e@linux.intel.com> Date: Thu, 13 Jun 2019 15:14:25 +0200 MIME-Version: 1.0 In-Reply-To: <97cd03dc-387c-e646-2915-9e42829d4bcc@gmail.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_yuv: Add yuv specific tests, v6. 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: juhapekka.heikkila@gmail.com, igt-dev@lists.freedesktop.org List-ID: T3AgMTItMDYtMjAxOSBvbSAyMjoxOCBzY2hyZWVmIEp1aGEtUGVra2EgSGVpa2tpbGE6Cj4gU29y cnkgZm9yIGRlbGF5IE1hYXJ0ZW4sIEkndmUgYmVlbiByZWFkaW5nIHRoaXMgb24gc2V2ZXJhbCBl dmVuaW5ncyBidXQgYWx3YXlzIHdhcyBpbnRlcnJ1cHRlZC4gSSB0aGluayB0aGlzIGxvb2sgYWxs IGdvb2QuCj4KPiBSZXZpZXdlZC1ieTogSnVoYS1QZWtrYSBIZWlra2lsYSA8anVoYXBla2thLmhl aWtraWxhQGdtYWlsLmNvbT4KPgo+IE9uIDEzLjUuMjAxOSAxOS41MywgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4+IEFkZCB0ZXN0cyBleGNlcmNpc2luZyBzd2l0Y2hpbmcgYmV0d2VlbiB2YXJp b3VzIHNjYWxlZC91bnNjYWxlZAo+PiB0cmFuc2l0aW9ucyB0byBhbmQgZnJvbSB2YXJpb3VzIG52 MTIgZm9ybWF0cywgc2luY2Ugc29tZSBvZiB0aGUKPj4gd29ya2Fyb3VuZHMgbWVudGlvbiB0aGlz IG1heSBmYWlsLgo+Pgo+PiBXZSBhbHNvIGFkZCBOVjEyIHNwZWNpZmljIGNsaXBwaW5nL3NjYWxp bmcgdGVzdHMsIHRvIG1ha2Ugc3VyZQo+PiB0aGF0IFlVViBzcmMgY29vcmRpbmF0ZXMgYXJlIGFs d2F5cyBwcm9ncmFtbWVkIGFzIGEgbXVsdGlwbGUgb2YgMgo+PiBjb3JyZWN0bHksIGFuZCB2ZXJp Znkgc2NhbGluZy9jbGlwcGluZyB3b3JrcyB3aXRoIENSQyB0ZXN0cy4KPj4KPj4gY3JvcC1zY2Fs ZS1idWcgc2hvd3MgYSBjb3JydXB0aW9uIHdoZW4gc2NhbGluZyBhbmQgY3JvcHBpbmcgYXQgdGhl Cj4+IHNhbWUgdGltZS4KPj4KPj4gVGhlIHN1YnBpeGVsIGNsaXAgdGVzdCByb3RhdGVzIGFuZCBj bGlwcyBhIHJlY3RhbmdsZSBvbiBlYWNoIHNpZGUsCj4+IHdoaWNoIHNob3VsZCBwcm9kdWNlIHRo ZSBzYW1lIENSQyBhcyB3aGVuIHRoYXQgcGFydCBvZiB0aGUgcmVjdGFuZ2xlCj4+IGlzIGhpZGRl biBieSBhIGN1cnNvciBhbmQgYSB3aG9sZSAyeDIgcGl4ZWwgaXMgaGlkZGVuLgo+Pgo+PiBDaGFu Z2VzIHNpbmNlIHYxOgo+PiAtIFJlc2V0IHBsYW5lIHBvc2l0aW9uIHRvIDAsMCBhdCB0aGUgc3Rh cnQgb2YgeXV2X3ZhbGlkX3dpZHRoX3BsYW5lKCkuCj4+IC0gSGFuZGxlIFN3YXRpJ3MgZmVlZGJh Y2suCj4+IENoYW5nZXMgc2luY2UgdjI6Cj4+IC0gU2tpcCA5MMKwLzI3MMKwIHJvdGF0aW9uIGlu IHRlc3RzIHdoZW4gZm9ybWF0cyBkb24ndCBzdXBwb3J0IGl0Lgo+PiAtIEFkZCBhbGwgbmV3IEhE UiBmb3JtYXRzIHRvIHRlc3QuCj4+IC0gVXNlIGlndF9wbGFuZV9oYXNfZm9ybWF0X21vZC4KPj4g LSBTdXBwb3J0IHRlc3RzIG9uICFpOTE1IGJ5IGNoZWNraW5nIGlmIFgvWSB0aWxpbmcgbW9kaWZp ZXJzIGFyZSBzdXBwb3J0ZWQuCj4+IC0gRG8gbm90IGVuYWJsZSB1bnRlc3RlZCBwbGFuZXMgdG8g cHJldmVudCBleGhhdXNpbmcgbWVtb3J5IGJhbmR3aWR0aAo+PiDCoMKgIGFuZCBhdmFpbGFibGUg TlYxMiBZIHBsYW5lcyBpbiB0aGUgcmdiLXN3aXRjaC1zY2FsZWQgdGVzdC4KPj4gQ2hhbmdlcyBz aW5jZSB2MzoKPj4gLSBBZGQgYSBzYW5pdHkgdGVzdCB0byBzYW5pdHkgdGVzdCBZVVYgY29udmVy c2lvbiBwYXRocywgb24gYWxsIHBsYW5lcyBhbmQgcGlwZXMuCj4+IC0gRHluYW1pY2FsbHkgZ2Vu ZXJhdGUgbGlzdCBvZiBZVVYgdGVzdHMgdGhyb3VnaCBpZ3RfZm9ybWF0X2FycmF5X2ZpbGwuCj4+ IENoYW5nZXMgc2luY2UgdjQ6Cj4+IC0gRGVjcmVhc2Ugc2l6ZSB0byA2NHg2NCB0byByZWR1Y2Ug dGVzdCBleGVjdXRpb24gdGltZSBldmVuIG1vcmUsCj4+IMKgwqAgc29tZSBZVVYgY29udmVyc2lv biByb3V0aW5lcyBhcmUgc2xvdy4KPj4gLSBEb24ndCBjbGVhciBkZWdhbW1hL2N0bSwgdGhpcyBp cyBkb25lIGluIGNvcmUgbm93Lgo+PiBDaGFuZ2VzIHNpbmNlIHY1Ogo+PiAtIEZpeCBtaW5vciBj b21waWxlIGVycm9yLgo+PiAtIEFkZCBtaXNzaW5nIGlndF9zdWJ0ZXN0X2dyb3VwCj4+Cj4+IFNp Z25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5p bnRlbC5jb20+Cj4+IC0tLQo+PiDCoCB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIHzCoMKgIDEgKwo+ PiDCoCB0ZXN0cy9rbXNfeXV2LmPCoMKgwqDCoMKgwqDCoCB8IDkzNyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwo+PiDCoCB0ZXN0cy9tZXNvbi5idWlsZMKgwqDCoMKg wqAgfMKgwqAgMSArCj4+IMKgIDMgZmlsZXMgY2hhbmdlZCwgOTM5IGluc2VydGlvbnMoKykKPj4g wqAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2ttc195dXYuYwo+Pgo+PiBkaWZmIC0tZ2l0IGEv dGVzdHMvTWFrZWZpbGUuc291cmNlcyBiL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKPj4gaW5kZXgg N2Y5MjFmNmM1OTg4Li41NzQ4NjFiMmUzMGYgMTAwNjQ0Cj4+IC0tLSBhL3Rlc3RzL01ha2VmaWxl LnNvdXJjZXMKPj4gKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+PiBAQCAtNzUsNiArNzUs NyBAQCBURVNUU19wcm9ncyA9IFwKPj4gwqDCoMKgwqDCoCBrbXNfdW5pdmVyc2FsX3BsYW5lIFwK Pj4gwqDCoMKgwqDCoCBrbXNfdmJsYW5rIFwKPj4gwqDCoMKgwqDCoCBrbXNfdnJyIFwKPj4gK8Kg wqDCoCBrbXNfeXV2IFwKPj4gwqDCoMKgwqDCoCBtZXRhX3Rlc3QgXAo+PiDCoMKgwqDCoMKgIHBl cmYgXAo+PiDCoMKgwqDCoMKgIHBlcmZfcG11IFwKPj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc195 dXYuYyBiL3Rlc3RzL2ttc195dXYuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAw MDAwMDAwMDAwMDAuLjZjZjY5YjA1MDRmOAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3Rlc3Rz L2ttc195dXYuYwo+PiBAQCAtMCwwICsxLDkzNyBAQAo+PiArLyoKPj4gKyAqIENvcHlyaWdodCDC qSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4+ICsgKgo+PiArICogUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPj4g KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgIlNvZnR3YXJlIiksCj4+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4+ICsgKiB0aGUg cmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg c3VibGljZW5zZSwKPj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+PiArICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPj4gKyAq Cj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgo+PiArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4+ICsgKgo+PiArICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKPj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCj4+ICsg KiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SIE9USEVSCj4+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+PiArICogRlJPTSwgT1VUIE9G IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE RUFMSU5HUwo+PiArICogSU4gVEhFIFNPRlRXQVJFLgo+PiArICoKPj4gKyAqIEF1dGhvcnM6Cj4+ ICsgKsKgwqDCoCBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50 ZWwuY29tPgo+PiArICovCj4+ICsjaW5jbHVkZSAiY29uZmlnLmgiCj4+ICsKPj4gKyNpbmNsdWRl ICJpZ3QuaCIKPj4gKyNpbmNsdWRlIDxjYWlyby5oPgo+PiArI2luY2x1ZGUgPGVycm5vLmg+Cj4+ ICsjaW5jbHVkZSA8c3RkaW50Lmg+Cj4+ICsjaW5jbHVkZSA8dW5pc3RkLmg+Cj4+ICsjaW5jbHVk ZSA8c3lzL3RpbWUuaD4KPj4gKwo+PiArdHlwZWRlZiBzdHJ1Y3Qgewo+PiArwqDCoMKgIGlndF9k aXNwbGF5X3QgZGlzcGxheTsKPj4gKwo+PiArwqDCoMKgIGlndF9waXBlX2NyY190ICpwaXBlX2Ny YzsKPj4gK8KgwqDCoCBzdHJ1Y3QgaWd0X2ZiIGZiWzZdOwo+PiArfSBkYXRhX3Q7Cj4+ICsKPj4g K3N0YXRpYyB1aW50NjRfdCB4X21vZGlmaWVyID0gTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORTsK Pj4gK3N0YXRpYyB1aW50NjRfdCB5X21vZGlmaWVyID0gTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9O RTsKPj4gK3N0YXRpYyB1aW50MzJfdCAqZm9ybWF0cywgY291bnRfZm9ybWF0czsKPj4gKwo+PiAr c3RhdGljIGJvb2wgcGlwZV9zdXBwb3J0c19mb3JtYXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwg ZW51bSBwaXBlIHBpcGUsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50 MzJfdCBmb3JtYXQsIHVpbnQ2NF90IHRpbGluZykKPj4gK3sKPj4gK8KgwqDCoCBpZ3RfcGxhbmVf dCAqcGxhbmU7Cj4+ICsKPj4gK8KgwqDCoCBmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRpc3BsYXks IHBpcGUsIHBsYW5lKQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGlndF9wbGFuZV9oYXNfZm9ybWF0 X21vZChwbGFuZSwgZm9ybWF0LCB0aWxpbmcpKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gdHJ1ZTsKPj4gKwo+PiArwqDCoMKgIHJldHVybiBmYWxzZTsKPj4gK30KPj4gKwo+PiAr Cj4+ICtzdGF0aWMgdm9pZCByZW1vdmVfZmJzKGRhdGFfdCAqZGF0YSkKPj4gK3sKPj4gK8KgwqDC oCBpbnQgaTsKPj4gKwo+PiArwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGRhdGEt PmZiKTsgaSsrKQo+PiArwqDCoMKgwqDCoMKgwqAgaWd0X3JlbW92ZV9mYihkYXRhLT5kaXNwbGF5 LmRybV9mZCwgJmRhdGEtPmZiW2ldKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgcHJlcGFy ZV9jcnRjKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUsIGlndF9vdXRwdXRfdCAqb3V0cHV0 KQo+PiArewo+PiArwqDCoMKgIGlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxh eTsKPj4gKwo+PiArwqDCoMKgIHJlbW92ZV9mYnMoZGF0YSk7Cj4+ICvCoMKgwqAgaWd0X2Rpc3Bs YXlfcmVzZXQoZGlzcGxheSk7Cj4+ICvCoMKgwqAgaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQs IHBpcGUpOwo+PiArwqDCoMKgIGlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FU T01JQyk7Cj4+ICsKPj4gK8KgwqDCoCBpZ3RfcGlwZV9jcmNfZnJlZShkYXRhLT5waXBlX2NyYyk7 Cj4+ICvCoMKgwqAgZGF0YS0+cGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGRpc3BsYXktPmRy bV9mZCwgcGlwZSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBJTlRFTF9QSVBFX0NSQ19TT1VSQ0VfQVVUTyk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lk IGZ1ZGdlX2x1dChkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLCB1aW50MTZfdCBtYXNrKQo+ PiArewo+PiArwqDCoMKgIGlndF9waXBlX3QgKnBpcGVfb2JqID0gJmRhdGEtPmRpc3BsYXkucGlw ZXNbcGlwZV07Cj4+ICvCoMKgwqAgdWludDE2X3QgKmx1dDsKPj4gK8KgwqDCoCBpbnQgaSwgbHV0 X3NpemU7Cj4+ICsKPj4gK8KgwqDCoCBpZiAoIWlndF9waXBlX29ial9oYXNfcHJvcChwaXBlX29i aiwgSUdUX0NSVENfR0FNTUFfTFVUX1NJWkUpKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+ PiArCj4+ICvCoMKgwqAgbHV0X3NpemUgPSBpZ3RfcGlwZV9vYmpfZ2V0X3Byb3AocGlwZV9vYmos IElHVF9DUlRDX0dBTU1BX0xVVF9TSVpFKTsKPj4gKwo+PiArwqDCoMKgIGx1dCA9IG1hbGxvYyhz aXplb2YodWludDE2X3QpICogbHV0X3NpemUpOwo+PiArwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBs dXRfc2l6ZTsgaSsrKQo+PiArwqDCoMKgwqDCoMKgwqAgbHV0W2ldID0gKGkgKiAweGZmZmYgLyAo bHV0X3NpemUgLSAxKSkgJiBtYXNrOwo+PiArCj4+ICvCoMKgwqAgaWd0X3BpcGVfb2JqX3JlcGxh Y2VfcHJvcF9ibG9iKHBpcGVfb2JqLCBJR1RfQ1JUQ19HQU1NQV9MVVQsIGx1dCwgbHV0X3NpemUg KiBzaXplb2YodWludDE2X3QpKTsKPj4gK8KgwqDCoCBmcmVlKGx1dCk7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyB2b2lkIHVuZnVkZ2VfbHV0KGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUpCj4+ ICt7Cj4+ICvCoMKgwqAgaWd0X3BpcGVfdCAqcGlwZV9vYmogPSAmZGF0YS0+ZGlzcGxheS5waXBl c1twaXBlXTsKPj4gKwo+PiArwqDCoMKgIGlmIChpZ3RfcGlwZV9vYmpfaGFzX3Byb3AocGlwZV9v YmosIElHVF9DUlRDX0dBTU1BX0xVVCkpCj4+ICvCoMKgwqDCoMKgwqDCoCBpZ3RfcGlwZV9vYmpf cmVwbGFjZV9wcm9wX2Jsb2IocGlwZV9vYmosIElHVF9DUlRDX0dBTU1BX0xVVCwgTlVMTCwgMCk7 Cj4+ICt9Cj4+ICsKPj4gKy8qCj4+ICsgKiBUZXN0IHRoYXQgd2UgaW5pdGlhbGl6ZSBhIFlVViBm YiBhcyBibGFjayBjb3JyZWN0bHksCj4+ICsgKiB0aGF0IHdoZW4gd2Ugd3JpdGUgYSBibGFjayBG QiBpdCB3aWxsIGdldCB0aGUgc2FtZSBDUkMsIGFuZCB0aGF0Cj4+ICsgKiBhbGwgY29sb3JzIHdl IHRlc3Qgd2lsbCBnaXZlIHRoZSBzYW1lIENSQyBvbiBhbGwgZm9ybWF0cy4KPj4gKyAqLwo+PiAr c3RhdGljIHZvaWQgeXV2X3Nhbml0eShkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlLCBpZ3Rf b3V0cHV0X3QgKm91dHB1dCkKPj4gK3sKPj4gK8KgwqDCoCBpZ3RfZGlzcGxheV90ICpkaXNwbGF5 ID0gJmRhdGEtPmRpc3BsYXk7Cj4+ICvCoMKgwqAgaWd0X3BsYW5lX3QgKnBsYW5lOwo+PiArwqDC oMKgIGlndF9jcmNfdCBibGFja19jcmMsIGNvbG9yX2NyYywgY3JjOwo+PiArwqDCoMKgIGJvb2wg Zmlyc3QgPSB0cnVlOwo+PiArCj4+ICvCoMKgwqAgcHJlcGFyZV9jcnRjKGRhdGEsIHBpcGUsIG91 dHB1dCk7Cj4+ICsKPj4gK8KgwqDCoCBmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRpc3BsYXksIHBp cGUsIHBsYW5lKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50 X2Zvcm1hdHM7IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgaWd0X2Zi ICpmYiA9ICZkYXRhLT5mYlswXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2Fpcm9fdCAq Y3I7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFpZ3RfZm9ybWF0X2lzX3l1 dihmb3JtYXRzW2ldKSB8fAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICFpZ3Rf cGxhbmVfaGFzX2Zvcm1hdF9tb2QocGxhbmUsIGZvcm1hdHNbaV0sIHhfbW9kaWZpZXIpKQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+PiArCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlndF9kZWJ1ZygiVGVzdGluZyBmb3JtYXQgJS40cyBvbiBwbGFuZSAl aVxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChjaGFyICopJmZvcm1h dHNbaV0sIHBsYW5lLT5pbmRleCk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9jcmVh dGVfZmIoZGlzcGxheS0+ZHJtX2ZkLCA2NCwgNjQsIGZvcm1hdHNbaV0sCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeF9tb2RpZmllciwgZmIpOwo+PiArCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9wbGFuZV9zZXRfZmIocGxhbmUsIGZiKTsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01N SVRfQVRPTUlDKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCFmaXJzdCkgewo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhk YXRhLT5waXBlX2NyYywgJmNyYyk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aWd0X2Fzc2VydF9jcmNfZXF1YWwoJmJsYWNrX2NyYywgJmNyYyk7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIH0gZWxzZSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0 X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmYmxhY2tfY3JjKTsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8q IENvbXBhcmUgaW5pdGlhbCBibGFjayBmYiB3aXRoIHJlZmVyZW5jZSBwYWludGVkIGJsYWNrIGNv bG9yICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNyID0gaWd0X2dldF9jYWlyb19jdHgo ZGlzcGxheS0+ZHJtX2ZkLCBmYik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9wYWlu dF9jb2xvcihjciwgMCwgMCwgZmItPndpZHRoLCBmYi0+aGVpZ2h0LCAwLiwgMC4sIDAuKTsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X3B1dF9jYWlyb19jdHgoZGlzcGxheS0+ZHJtX2Zk LCBmYiwgY3IpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfZGlydHlfZmIoZGlzcGxh eS0+ZHJtX2ZkLCBmYik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF93YWl0X2Zvcl92 YmxhbmsoZGlzcGxheS0+ZHJtX2ZkLCBwaXBlKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKGRhdGEtPnBpcGVfY3JjLCAmY3JjKTsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaWd0X2Fzc2VydF9jcmNfZXF1YWwoJmJsYWNrX2NyYywgJmNyYyk7 Cj4+ICsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBXcml0ZSBhIGNvbG9yIGZi ICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNyID0gaWd0X2dldF9jYWlyb19jdHgoZGlz cGxheS0+ZHJtX2ZkLCBmYik7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9wYWludF9j b2xvcihjciwgMCwgMCwgZmItPndpZHRoLCBmYi0+aGVpZ2h0LCAxLiwgMS4sIDAuKTsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X3B1dF9jYWlyb19jdHgoZGlzcGxheS0+ZHJtX2ZkLCBm YiwgY3IpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmdWRnZV9sdXQoZGF0YSwgcGlwZSwg MHhmYzAwKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X3BsYW5lX3NldF9mYihwbGFu ZSwgZmIpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfZGlzcGxheV9jb21taXQyKGRp c3BsYXksIENPTU1JVF9BVE9NSUMpOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlm ICghZmlyc3QpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfcGlwZV9j cmNfY29sbGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZjcmMpOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlndF9hc3NlcnRfY3JjX2VxdWFsKCZjb2xvcl9jcmMsICZjcmMpOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9IGVsc2Ugewo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJmNv bG9yX2NyYyk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmlyc3QgPSBmYWxz ZTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC8qIENvbnZlcnQgZnJvbSBZVVYsIGJhY2sgdG8gWVVWLCB0byBleHBvc2UgYnVncyBp biBjb252ZXJzaW9uIHJvdXRpbmVzICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNyID0g aWd0X2dldF9jYWlyb19jdHgoZGlzcGxheS0+ZHJtX2ZkLCBmYik7Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGlndF9wdXRfY2Fpcm9fY3R4KGRpc3BsYXktPmRybV9mZCwgZmIsIGNyKTsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X2RpcnR5X2ZiKGRpc3BsYXktPmRybV9mZCwgZmIp Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3Rfd2FpdF9mb3JfdmJsYW5rKGRpc3BsYXkt PmRybV9mZCwgcGlwZSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9waXBlX2NyY19j b2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywgJmNyYyk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlndF9hc3NlcnRfY3JjX2VxdWFsKCZjb2xvcl9jcmMsICZjcmMpOwo+PiArCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHVuZnVkZ2VfbHV0KGRhdGEsIHBpcGUpOwo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCBOVUxMKTsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaWd0X3JlbW92ZV9mYihkaXNwbGF5LT5kcm1fZmQsICZkYXRhLT5mYlsw XSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICvCoMKgwqAgfQo+PiArfQo+PiArCj4+ICtzdGF0 aWMgdm9pZCBzZXRfZmIoaWd0X3BsYW5lX3QgKnBsYW5lLCBzdHJ1Y3QgaWd0X2ZiICpmYiwKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJvb2wgc2NhbGVkLCBpZ3Rfcm90YXRpb25fdCByb3QpCj4+ ICt7Cj4+ICvCoMKgwqAgaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgZmIpOwo+PiArCj4+ICvCoMKg wqAgaWYgKHNjYWxlZCAmJiBmYikKPj4gK8KgwqDCoMKgwqDCoMKgIGlndF9mYl9zZXRfc2l6ZShm YiwgcGxhbmUsIGZiLT53aWR0aCwgMTYpOwo+PiArCj4+ICvCoMKgwqAgaWd0X3BsYW5lX3NldF9y b3RhdGlvbihwbGFuZSwgcm90KTsKPj4gK8KgwqDCoCBpZiAoZmIgJiYgKHJvdCA9PSBJR1RfUk9U QVRJT05fOTAgfHwgcm90ID09IElHVF9ST1RBVElPTl8yNzApKQo+PiArwqDCoMKgwqDCoMKgwqAg aWd0X3BsYW5lX3NldF9zaXplKHBsYW5lLCBmYi0+aGVpZ2h0LCBmYi0+d2lkdGgpOwo+PiArfQo+ PiArCj4+ICtzdGF0aWMgdm9pZCB5dXZfcmdiX3N3aXRjaChkYXRhX3QgKmRhdGEsIGVudW0gcGlw ZSBwaXBlLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3Rfb3V0cHV0X3QgKm91 dHB1dCwgYm9vbCBzY2FsZWQsIHVuc2lnbmVkIGZvcm1hdCkKPj4gK3sKPj4gK8KgwqDCoCBkcm1N b2RlTW9kZUluZm8gKm1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7Cj4+ICvCoMKg wqAgaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owo+PiArwqDCoMKgIGln dF9wbGFuZV90ICpwbGFuZTsKPj4gK8KgwqDCoCBpbnQgaTsKPj4gK8KgwqDCoCBpZ3RfY3JjX3Qg cmVmX2NyY1s0XSwgY3JjOwo+PiArwqDCoMKgIGJvb2wgdmFsaWRbNF0gPSB7fTsKPj4gKwo+PiAr wqDCoMKgIHByZXBhcmVfY3J0YyhkYXRhLCBwaXBlLCBvdXRwdXQpOwo+PiArCj4+ICvCoMKgwqAg aWd0X2NyZWF0ZV9wYXR0ZXJuX2ZiKGRpc3BsYXktPmRybV9mZCwgbW9kZS0+aGRpc3BsYXksIG1v ZGUtPnZkaXNwbGF5LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3Jt YXQsIHhfbW9kaWZpZXIsICZkYXRhLT5mYlswXSk7Cj4+ICsKPj4gK8KgwqDCoCBpZ3RfY3JlYXRl X3BhdHRlcm5fZmIoZGlzcGxheS0+ZHJtX2ZkLCBtb2RlLT52ZGlzcGxheSwgbW9kZS0+aGRpc3Bs YXksCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvcm1hdCwgeV9tb2Rp ZmllciwgJmRhdGEtPmZiWzFdKTsKPj4gKwo+PiArwqDCoMKgIGlndF9jcmVhdGVfcGF0dGVybl9m YihkaXNwbGF5LT5kcm1fZmQsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0ZPUk1BVF9YUkdCODg4OCwgeF9t b2RpZmllciwgJmRhdGEtPmZiWzJdKTsKPj4gKwo+PiArwqDCoMKgIGlndF9jcmVhdGVfcGF0dGVy bl9mYihkaXNwbGF5LT5kcm1fZmQsIG1vZGUtPnZkaXNwbGF5LCBtb2RlLT5oZGlzcGxheSwKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX0ZPUk1BVF9YUkdCODg4OCwg eV9tb2RpZmllciwgJmRhdGEtPmZiWzNdKTsKPj4gKwo+PiArwqDCoMKgIGZvcl9lYWNoX3BsYW5l X29uX3BpcGUoZGlzcGxheSwgcGlwZSwgcGxhbmUpIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGNvbnN0 IGludCBzZXFbXSA9IHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMiwgMCwgMiwgMSwgMywg MSwgMwo+PiArwqDCoMKgwqDCoMKgwqAgfTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCFp Z3RfcGxhbmVfaGFzX2Zvcm1hdF9tb2QocGxhbmUsIGZvcm1hdCwgZGF0YS0+ZmJbMF0ubW9kaWZp ZXIpKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsKPj4gKwo+PiArwqDCoMKg wqDCoMKgwqAgLyogQ29sbGVjdCByZWZlcmVuY2UgY3JjIHdpdGggdG9nZ2xlIGluIGJldHdlZW4u ICovCj4+ICvCoMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShyZWZfY3Jj KTsgaSsrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9yb3RhdGlvbl90IHJvdCA9 IChpID09IDEgfHwgaSA9PSAzKSA/Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg SUdUX1JPVEFUSU9OXzkwIDogSUdUX1JPVEFUSU9OXzA7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc2V0X2ZiKHBsYW5lLCAmZGF0YS0+ZmJbaV0sIHNjYWxlZCwgcm90KTsKPj4gKwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENP TU1JVF9BVE9NSUMpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfcGlwZV9jcmNfY29s bGVjdF9jcmMoZGF0YS0+cGlwZV9jcmMsICZyZWZfY3JjW2ldKTsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgdmFsaWRbaV0gPSB0cnVlOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHNldF9mYihwbGFuZSwgTlVMTCwgc2NhbGVkLCByb3QpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+PiArwqDC oMKgwqDCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCBmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRShzZXEpOyBpKyspIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IGogPSBz ZXFbaV07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9yb3RhdGlvbl90IHJvdCA9IChq ID09IDEgfHwgaiA9PSAzKSA/Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSUdU X1JPVEFUSU9OXzkwIDogSUdUX1JPVEFUSU9OXzA7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKCF2YWxpZFtqXSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBj b250aW51ZTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZXRfZmIocGxhbmUsICZk YXRhLT5mYltqXSwgc2NhbGVkLCByb3QpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3Rf ZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+PiArCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhkYXRhLT5waXBlX2NyYywg JmNyYyk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9hc3NlcnRfY3JjX2VxdWFsKCZy ZWZfY3JjW2pdLCAmY3JjKTsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqDC oMKgwqAgLyogV2Ugb25seSBoYXZlIGZldyBzY2FsZXJzLCBkb24ndCB1c2UgMSBmb3IgdW51c2Vk IHBsYW5lcyAqLwo+PiArwqDCoMKgwqDCoMKgwqAgaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVM TCk7Cj4+ICvCoMKgwqAgfQo+PiArfQo+PiArCj4+ICsjZGVmaW5lIGFzc2VydF9jb2xsZWN0ZWRf Y3JjX2VxdWFsKHBpcGVfY3JjLCBjcmMsIHJlZl9jcmMpIFwKPj4gK8KgwqDCoCBkbyB7IFwKPj4g K8KgwqDCoMKgwqDCoMKgIGlndF9waXBlX2NyY19nZXRfY3VycmVudChkaXNwbGF5LT5kcm1fZmQs IHBpcGVfY3JjLCBjcmMpO8KgwqDCoCBcCj4+ICvCoMKgwqDCoMKgwqDCoCBpZ3RfYXNzZXJ0X2Ny Y19lcXVhbChyZWZfY3JjLCBjcmMpO8KgwqDCoCBcCj4+ICvCoMKgwqAgfSB3aGlsZSAoMCkKPj4g Kwo+PiArc3RhdGljIHZvaWQgc2V0X3NyY19jb29yZHMoaWd0X3BsYW5lX3QgKnBsYW5lLCBzdHJ1 Y3QgaWd0X2ZiICpmYiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X3JvdGF0 aW9uX3Qgcm90LCBpbnQgdmlzLCBpbnQgaGlkZGVuKQo+PiArewo+PiArwqDCoMKgIHN3aXRjaCAo cm90KSB7Cj4+ICvCoMKgwqAgY2FzZSBJR1RfUk9UQVRJT05fMDoKPj4gK8KgwqDCoMKgwqDCoMKg IGlndF9mYl9zZXRfcG9zaXRpb24oZmIsIHBsYW5lLCBmYi0+d2lkdGggLyAyIC0gdmlzLCBmYi0+ aGVpZ2h0IC8gMiAtIHZpcyk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoCBj YXNlIElHVF9ST1RBVElPTl85MDoKPj4gK8KgwqDCoMKgwqDCoMKgIGlndF9mYl9zZXRfcG9zaXRp b24oZmIsIHBsYW5lLCBmYi0+d2lkdGggLyAyIC0gaGlkZGVuLCBmYi0+aGVpZ2h0IC8gMiAtIHZp cyk7Cj4+ICvCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gK8KgwqDCoCBjYXNlIElHVF9ST1RBVElP Tl8xODA6Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZ3RfZmJfc2V0X3Bvc2l0aW9uKGZiLCBwbGFuZSwg ZmItPndpZHRoIC8gMiAtIGhpZGRlbiwgZmItPmhlaWdodCAvIDIgLSBoaWRkZW4pOwo+PiArwqDC oMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqAgY2FzZSBJR1RfUk9UQVRJT05fMjcwOgo+PiAr wqDCoMKgwqDCoMKgwqAgaWd0X2ZiX3NldF9wb3NpdGlvbihmYiwgcGxhbmUsIGZiLT53aWR0aCAv IDIgLSB2aXMsIGZiLT5oZWlnaHQgLyAyIC0gaGlkZGVuKTsKPj4gK8KgwqDCoMKgwqDCoMKgIGJy ZWFrOwo+PiArwqDCoMKgIGRlZmF1bHQ6IGlndF9hc3NlcnQoMCk7Cj4gXl4KPiBUaGlzIHdhcyB0 aGUgb25seSBuaXQgSSBub3RpY2VkLgoKV2hhdCdzIHdyb25nIHRoZXJlPyBPciBkbyB5b3UgbWVh biBwdXR0aW5nIGl0IG9uIGEgbmV3bGluZT8KCn5NYWFydGVuCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2lndC1kZXY=