From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2063.outbound.protection.outlook.com [40.107.223.63]) by gabe.freedesktop.org (Postfix) with ESMTPS id CC1916E158 for ; Thu, 2 Jan 2020 23:03:25 +0000 (UTC) From: Harry Wentland References: <20191211204636.16222-1-sunpeng.li@amd.com> <20191212150319.GP1208@intel.com> Message-ID: Date: Thu, 2 Jan 2020 18:03:17 -0500 In-Reply-To: Content-Language: en-US MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_color: Add 10bpc frame buffer parameterization to subtests 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: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , sunpeng.li@amd.com Cc: igt-dev@lists.freedesktop.org List-ID: T24gMjAyMC0wMS0wMiA1OjU5IHAubS4sIEhhcnJ5IFdlbnRsYW5kIHdyb3RlOgo+IE9uIDIwMTkt MTItMTIgMTA6MDMgYS5tLiwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+PiBPbiBXZWQsIERlYyAx MSwgMjAxOSBhdCAwMzo0NjozNlBNIC0wNTAwLCBzdW5wZW5nLmxpQGFtZC5jb20gd3JvdGU6Cj4+ PiBGcm9tOiBMZW8gTGkgPHN1bnBlbmcubGlAYW1kLmNvbT4KPj4+Cj4+PiBXZSdkIGxpa2UgdG8g dGVzdCB0aGUgaGFyZHdhcmUgcGlwZSdzIGNvbG9yIG1hbmFnZW1lbnQgd2l0aCAxMGJpdAo+Pj4g c3VyZmFjZXMuCj4+Cj4+IFdoeSBleGFjdGx5PyBUaGUgcGlwZSBjb2xvciBtYW5hZ2VtZW50IHN0 dWZmIGRvZXNuJ3QgY2FyZSB3aGF0Cj4+IHBpeGVsIGZvcm1hdCB0aGUgcGxhbmUgdXNlZC4KPiAK PiBOb3Qgc3VyZSBob3cgdGhpcyB3b3JrcyBmb3IgSW50ZWwgYnV0IGZvciB1cyB0aGVyZSdzIGEg ZmFpciBhbW91bnQgb2YKPiBsb2dpYyBiZXR3ZWVuIGNvbG9yIG1hbmFnZW1lbnQgYW5kIHRoZSBw aXhlbCBmb3JtYXQuCj4gCgpUbyBjbGFyaWZ5LCBMZW8gaXMgc3RpbGwgY29ycmVjdCBpbiB0aGF0 IGluIEFNRCBIVyB0aGVzZSBzaG91bGRuJ3QgYmUKcmVsYXRlZCBidXQgdGhpcyBkb2Vzbid0IHJl YWxseSBndWFyYW50ZWUgdGhhdCB0aGUgZHJpdmVyIGRvZXNuJ3QgZG8Kc29tZXRoaW5nIGZ1bmt5 IGhlcmUuCgpIYXJyeQoKPiBJbiBnZW5lcmFsLCBub3Qgc3VyZSBpZiBJR1Qgc2hvdWxkIGJlIGRl c2lnbmVkIGJhc2VkIG9uIGFzc3VtcHRpb25zIG9mIGEKPiBjZXJ0YWluIEtNUyBkcml2ZXIgaW1w bGVtZW50YXRpb24uCj4gCj4gSGFycnkKPiAKPj4KPj4+IFRoaXMgY2hhbmdlIHBhcmFtZXRlcml6 ZXMgdGhlIGhhcmRjb2RlZCBmb3JtYXRzIHdpdGhpbiBlYWNoCj4+PiB0ZXN0LCBhbmQgZW5udW1l cmF0ZXMgdGhlIGFkZGl0aW9uYWwgc3VidGVzdHMgd2l0aGluIGEgZm9yIGxvb3AuIFRvCj4+PiBh dm9pZCByZW5hbWluZyBleGlzdGluZyB0ZXN0cywgdGhlIDEwYnBjIHRlc3RzIHdpbGwgaGF2ZSAn LTEwYnBjJwo+Pj4gaW5zZXJ0ZWQgYWZ0ZXIgdGhlIHBpcGUgbmFtZSwgd2hpbGUgdGhlIDhicGMg dGVzdCBuYW1lcyByZW1haW4KPj4+IHVuY2hhbmdlZC4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBM ZW8gTGkgPHN1bnBlbmcubGlAYW1kLmNvbT4KPj4+IC0tLQo+Pj4gIHRlc3RzL2ttc19jb2xvci5j IHwgMzUzICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+ ICAxIGZpbGUgY2hhbmdlZCwgMTk4IGluc2VydGlvbnMoKyksIDE1NSBkZWxldGlvbnMoLSkKPj4+ Cj4+PiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2NvbG9yLmMgYi90ZXN0cy9rbXNfY29sb3IuYwo+ Pj4gaW5kZXggYjRiNTc4YTcuLjNjNzZhMGQyIDEwMDY0NAo+Pj4gLS0tIGEvdGVzdHMva21zX2Nv bG9yLmMKPj4+ICsrKyBiL3Rlc3RzL2ttc19jb2xvci5jCj4+PiBAQCAtNTIsNiArNTIsMTIgQEAg dHlwZWRlZiBzdHJ1Y3Qgewo+Pj4gIAlkb3VibGUgY29lZmZzW107Cj4+PiAgfSBnYW1tYV9sdXRf dDsKPj4+ICAKPj4+ICt0eXBlZGVmIHN0cnVjdCB7Cj4+PiArCXVpbnQzMl90IGZvcm1hdDsKPj4+ ICsJaW50IGJwYzsKPj4+ICsJY2hhciBuYW1lWzE2XTsKPj4+ICt9IGZiX2Zvcm1hdF90Owo+Pj4g Kwo+Pj4gIHN0YXRpYyB2b2lkIHBhaW50X2dyYWRpZW50X3JlY3RhbmdsZXMoZGF0YV90ICpkYXRh LAo+Pj4gIAkJCQkgICAgICBkcm1Nb2RlTW9kZUluZm8gKm1vZGUsCj4+PiAgCQkJCSAgICAgIGNv bG9yX3QgKmNvbG9ycywKPj4+IEBAIC0yNjksNyArMjc1LDggQEAgc3RhdGljIHZvaWQgZGlzYWJs ZV9wcm9wKGlndF9waXBlX3QgKnBpcGUsIGVudW0gaWd0X2F0b21pY19jcnRjX3Byb3BlcnRpZXMg cHJvcCkKPj4+ICAgKiByZWN0YW5nbGVzIHdpdGggbGluZWFyIGRlZ2FtbWEgTFVULgo+Pj4gICAq Lwo+Pj4gIHN0YXRpYyB2b2lkIHRlc3RfcGlwZV9kZWdhbW1hKGRhdGFfdCAqZGF0YSwKPj4+IC0J CQkgICAgICBpZ3RfcGxhbmVfdCAqcHJpbWFyeSkKPj4+ICsJCQkgICAgICBpZ3RfcGxhbmVfdCAq cHJpbWFyeSwKPj4+ICsJCQkgICAgICB1aW50MzJfdCBmYl9mb3JtYXQpCj4+PiAgewo+Pj4gIAlp Z3Rfb3V0cHV0X3QgKm91dHB1dDsKPj4+ICAJZ2FtbWFfbHV0X3QgKmRlZ2FtbWFfbGluZWFyLCAq ZGVnYW1tYV9mdWxsOwo+Pj4gQEAgLTMwMSw3ICszMDgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3Bp cGVfZGVnYW1tYShkYXRhX3QgKmRhdGEsCj4+PiAgCQlmYl9pZCA9IGlndF9jcmVhdGVfZmIoZGF0 YS0+ZHJtX2ZkLAo+Pj4gIAkJCQkgICAgICBtb2RlLT5oZGlzcGxheSwKPj4+ICAJCQkJICAgICAg bW9kZS0+dmRpc3BsYXksCj4+PiAtCQkJCSAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsCj4+PiAr CQkJCSAgICAgIGZiX2Zvcm1hdCwKPj4+ICAJCQkJICAgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0Rf Tk9ORSwKPj4+ICAJCQkJICAgICAgJmZiKTsKPj4+ICAJCWlndF9hc3NlcnQoZmJfaWQpOwo+Pj4g QEAgLTMwOSw3ICszMTYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BpcGVfZGVnYW1tYShkYXRhX3Qg KmRhdGEsCj4+PiAgCQlmYl9tb2Rlc2V0X2lkID0gaWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQs Cj4+PiAgCQkJCQkgICAgICBtb2RlLT5oZGlzcGxheSwKPj4+ICAJCQkJCSAgICAgIG1vZGUtPnZk aXNwbGF5LAo+Pj4gLQkJCQkJICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwKPj4+ICsJCQkJCSAg ICAgIGZiX2Zvcm1hdCwKPj4+ICAJCQkJCSAgICAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUs Cj4+PiAgCQkJCQkgICAgICAmZmJfbW9kZXNldCk7Cj4+PiAgCQlpZ3RfYXNzZXJ0KGZiX21vZGVz ZXRfaWQpOwo+Pj4gQEAgLTM1Niw3ICszNjMsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BpcGVfZGVn YW1tYShkYXRhX3QgKmRhdGEsCj4+PiAgICogTFVUIGFuZCB2ZXJpZnkgd2UgaGF2ZSB0aGUgc2Ft ZSBDUkMgYXMgZHJhd2luZyBzb2xpZCBjb2xvciByZWN0YW5nbGVzLgo+Pj4gICAqLwo+Pj4gIHN0 YXRpYyB2b2lkIHRlc3RfcGlwZV9nYW1tYShkYXRhX3QgKmRhdGEsCj4+PiAtCQkJICAgIGlndF9w bGFuZV90ICpwcmltYXJ5KQo+Pj4gKwkJCSAgICBpZ3RfcGxhbmVfdCAqcHJpbWFyeSwKPj4+ICsJ CQkgICAgdWludDMyX3QgZmJfZm9ybWF0KQo+Pj4gIHsKPj4+ICAJaWd0X291dHB1dF90ICpvdXRw dXQ7Cj4+PiAgCWdhbW1hX2x1dF90ICpnYW1tYV9mdWxsOwo+Pj4gQEAgLTM4Myw3ICszOTEsNyBA QCBzdGF0aWMgdm9pZCB0ZXN0X3BpcGVfZ2FtbWEoZGF0YV90ICpkYXRhLAo+Pj4gIAkJZmJfaWQg PSBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRybV9mZCwKPj4+ICAJCQkJICAgICAgbW9kZS0+aGRpc3Bs YXksCj4+PiAgCQkJCSAgICAgIG1vZGUtPnZkaXNwbGF5LAo+Pj4gLQkJCQkgICAgICBEUk1fRk9S TUFUX1hSR0I4ODg4LAo+Pj4gKwkJCQkgICAgICBmYl9mb3JtYXQsCj4+PiAgCQkJCSAgICAgIExP Q0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCj4+PiAgCQkJCSAgICAgICZmYik7Cj4+PiAgCQlpZ3Rf YXNzZXJ0KGZiX2lkKTsKPj4+IEBAIC0zOTEsNyArMzk5LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9w aXBlX2dhbW1hKGRhdGFfdCAqZGF0YSwKPj4+ICAJCWZiX21vZGVzZXRfaWQgPSBpZ3RfY3JlYXRl X2ZiKGRhdGEtPmRybV9mZCwKPj4+ICAJCQkJCSAgICAgIG1vZGUtPmhkaXNwbGF5LAo+Pj4gIAkJ CQkJICAgICAgbW9kZS0+dmRpc3BsYXksCj4+PiAtCQkJCQkgICAgICBEUk1fRk9STUFUX1hSR0I4 ODg4LAo+Pj4gKwkJCQkJICAgICAgZmJfZm9ybWF0LAo+Pj4gIAkJCQkJICAgICAgTE9DQUxfRFJN X0ZPUk1BVF9NT0RfTk9ORSwKPj4+ICAJCQkJCSAgICAgICZmYl9tb2Rlc2V0KTsKPj4+ICAJCWln dF9hc3NlcnQoZmJfbW9kZXNldF9pZCk7Cj4+PiBAQCAtNDM2LDcgKzQ0NCw4IEBAIHN0YXRpYyB2 b2lkIHRlc3RfcGlwZV9nYW1tYShkYXRhX3QgKmRhdGEsCj4+PiAgICogd2l0aCBsaW5lYXIgbGVn YWN5IGdhbW1hIExVVC4KPj4+ICAgKi8KPj4+ICBzdGF0aWMgdm9pZCB0ZXN0X3BpcGVfbGVnYWN5 X2dhbW1hKGRhdGFfdCAqZGF0YSwKPj4+IC0JCQkJICAgaWd0X3BsYW5lX3QgKnByaW1hcnkpCj4+ PiArCQkJCSAgIGlndF9wbGFuZV90ICpwcmltYXJ5LAo+Pj4gKwkJCQkgICB1aW50MzJfdCBmYl9m b3JtYXQpCj4+PiAgewo+Pj4gIAlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPj4+ICAJY29sb3JfdCBy ZWRfZ3JlZW5fYmx1ZVtdID0gewo+Pj4gQEAgLTQ2OSw3ICs0NzgsNyBAQCBzdGF0aWMgdm9pZCB0 ZXN0X3BpcGVfbGVnYWN5X2dhbW1hKGRhdGFfdCAqZGF0YSwKPj4+ICAJCWZiX2lkID0gaWd0X2Ny ZWF0ZV9mYihkYXRhLT5kcm1fZmQsCj4+PiAgCQkJCSAgICAgIG1vZGUtPmhkaXNwbGF5LAo+Pj4g IAkJCQkgICAgICBtb2RlLT52ZGlzcGxheSwKPj4+IC0JCQkJICAgICAgRFJNX0ZPUk1BVF9YUkdC ODg4OCwKPj4+ICsJCQkJICAgICAgZmJfZm9ybWF0LAo+Pj4gIAkJCQkgICAgICBMT0NBTF9EUk1f Rk9STUFUX01PRF9OT05FLAo+Pj4gIAkJCQkgICAgICAmZmIpOwo+Pj4gIAkJaWd0X2Fzc2VydChm Yl9pZCk7Cj4+PiBAQCAtNDc3LDcgKzQ4Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGlwZV9sZWdh Y3lfZ2FtbWEoZGF0YV90ICpkYXRhLAo+Pj4gIAkJZmJfbW9kZXNldF9pZCA9IGlndF9jcmVhdGVf ZmIoZGF0YS0+ZHJtX2ZkLAo+Pj4gIAkJCQkJICAgICAgbW9kZS0+aGRpc3BsYXksCj4+PiAgCQkJ CQkgICAgICBtb2RlLT52ZGlzcGxheSwKPj4+IC0JCQkJCSAgICAgIERSTV9GT1JNQVRfWFJHQjg4 ODgsCj4+PiArCQkJCQkgICAgICBmYl9mb3JtYXQsCj4+PiAgCQkJCQkgICAgICBMT0NBTF9EUk1f Rk9STUFUX01PRF9OT05FLAo+Pj4gIAkJCQkJICAgICAgJmZiX21vZGVzZXQpOwo+Pj4gIAkJaWd0 X2Fzc2VydChmYl9tb2Rlc2V0X2lkKTsKPj4+IEBAIC02NzYsNyArNjg1LDggQEAgc3RhdGljIGJv b2wgdGVzdF9waXBlX2N0bShkYXRhX3QgKmRhdGEsCj4+PiAgCQkJICBpZ3RfcGxhbmVfdCAqcHJp bWFyeSwKPj4+ICAJCQkgIGNvbG9yX3QgKmJlZm9yZSwKPj4+ICAJCQkgIGNvbG9yX3QgKmFmdGVy LAo+Pj4gLQkJCSAgZG91YmxlICpjdG1fbWF0cml4KQo+Pj4gKwkJCSAgZG91YmxlICpjdG1fbWF0 cml4LAo+Pj4gKwkJCSAgdWludDMyX3QgZmJfZm9ybWF0KQo+Pj4gIHsKPj4+ICAJY29uc3QgZG91 YmxlIGN0bV9pZGVudGl0eVtdID0gewo+Pj4gIAkJMS4wLCAwLjAsIDAuMCwKPj4+IEBAIC03MDUs NyArNzE1LDcgQEAgc3RhdGljIGJvb2wgdGVzdF9waXBlX2N0bShkYXRhX3QgKmRhdGEsCj4+PiAg CQlmYl9pZCA9IGlndF9jcmVhdGVfZmIoZGF0YS0+ZHJtX2ZkLAo+Pj4gIAkJCQkgICAgICBtb2Rl LT5oZGlzcGxheSwKPj4+ICAJCQkJICAgICAgbW9kZS0+dmRpc3BsYXksCj4+PiAtCQkJCSAgICAg IERSTV9GT1JNQVRfWFJHQjg4ODgsCj4+PiArCQkJCSAgICAgIGZiX2Zvcm1hdCwKPj4+ICAJCQkJ ICAgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKPj4+ICAJCQkJICAgICAgJmZiKTsKPj4+ ICAJCWlndF9hc3NlcnQoZmJfaWQpOwo+Pj4gQEAgLTcxMyw3ICs3MjMsNyBAQCBzdGF0aWMgYm9v bCB0ZXN0X3BpcGVfY3RtKGRhdGFfdCAqZGF0YSwKPj4+ICAJCWZiX21vZGVzZXRfaWQgPSBpZ3Rf Y3JlYXRlX2ZiKGRhdGEtPmRybV9mZCwKPj4+ICAJCQkJCSAgICAgIG1vZGUtPmhkaXNwbGF5LAo+ Pj4gIAkJCQkJICAgICAgbW9kZS0+dmRpc3BsYXksCj4+PiAtCQkJCQkgICAgICBEUk1fRk9STUFU X1hSR0I4ODg4LAo+Pj4gKwkJCQkJICAgICAgZmJfZm9ybWF0LAo+Pj4gIAkJCQkJICAgICAgTE9D QUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKPj4+ICAJCQkJCSAgICAgICZmYl9tb2Rlc2V0KTsKPj4+ ICAJCWlndF9hc3NlcnQoZmJfbW9kZXNldF9pZCk7Cj4+PiBAQCAtNzgwLDcgKzc5MCw4IEBAIHN0 YXRpYyBib29sIHRlc3RfcGlwZV9jdG0oZGF0YV90ICpkYXRhLAo+Pj4gICAqLwo+Pj4gICNpZiAw Cj4+PiAgc3RhdGljIHZvaWQgdGVzdF9waXBlX2xpbWl0ZWRfcmFuZ2VfY3RtKGRhdGFfdCAqZGF0 YSwKPj4+IC0JCQkJCWlndF9wbGFuZV90ICpwcmltYXJ5KQo+Pj4gKwkJCQkJaWd0X3BsYW5lX3Qg KnByaW1hcnksCj4+PiArCQkJCQl1aW50MzJfdCBmYl9mb3JtYXQpCj4+PiAgewo+Pj4gIAlkb3Vi bGUgbGltaXRlZF9yZXN1bHQgPSAyMzUuMCAvIDI1NS4wOwo+Pj4gIAljb2xvcl90IHJlZF9ncmVl bl9ibHVlX2xpbWl0ZWRbXSA9IHsKPj4+IEBAIC04MjEsNyArODMyLDcgQEAgc3RhdGljIHZvaWQg dGVzdF9waXBlX2xpbWl0ZWRfcmFuZ2VfY3RtKGRhdGFfdCAqZGF0YSwKPj4+ICAJCWZiX2lkID0g aWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQsCj4+PiAgCQkJCSAgICAgIG1vZGUtPmhkaXNwbGF5 LAo+Pj4gIAkJCQkgICAgICBtb2RlLT52ZGlzcGxheSwKPj4+IC0JCQkJICAgICAgRFJNX0ZPUk1B VF9YUkdCODg4OCwKPj4+ICsJCQkJICAgICAgZmJfZm9ybWF0LAo+Pj4gIAkJCQkgICAgICBMT0NB TF9EUk1fRk9STUFUX01PRF9OT05FLAo+Pj4gIAkJCQkgICAgICAmZmIpOwo+Pj4gIAkJaWd0X2Fz c2VydChmYl9pZCk7Cj4+PiBAQCAtODI5LDcgKzg0MCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGlw ZV9saW1pdGVkX3JhbmdlX2N0bShkYXRhX3QgKmRhdGEsCj4+PiAgCQlmYl9tb2Rlc2V0X2lkID0g aWd0X2NyZWF0ZV9mYihkYXRhLT5kcm1fZmQsCj4+PiAgCQkJCQkgICAgICBtb2RlLT5oZGlzcGxh eSwKPj4+ICAJCQkJCSAgICAgIG1vZGUtPnZkaXNwbGF5LAo+Pj4gLQkJCQkJICAgICAgRFJNX0ZP Uk1BVF9YUkdCODg4OCwKPj4+ICsJCQkJCSAgICAgIGZiX2Zvcm1hdCwKPj4+ICAJCQkJCSAgICAg IExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCj4+PiAgCQkJCQkgICAgICAmZmJfbW9kZXNldCk7 Cj4+PiAgCQlpZ3RfYXNzZXJ0KGZiX21vZGVzZXRfaWQpOwo+Pj4gQEAgLTg3OCwxMyArODg5LDE4 IEBAIHJ1bl90ZXN0c19mb3JfcGlwZShkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwKQo+Pj4gIAlp Z3RfcGlwZV90ICpwaXBlOwo+Pj4gIAlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKPj4+ICAJZG91Ymxl IGRlbHRhOwo+Pj4gLQlpbnQgaTsKPj4+ICsJaW50IGksIGo7Cj4+PiAgCWNvbG9yX3QgcmVkX2dy ZWVuX2JsdWVbXSA9IHsKPj4+ICAJCXsgMS4wLCAwLjAsIDAuMCB9LAo+Pj4gIAkJeyAwLjAsIDEu MCwgMC4wIH0sCj4+PiAgCQl7IDAuMCwgMC4wLCAxLjAgfQo+Pj4gIAl9Owo+Pj4gIAo+Pj4gKwlm Yl9mb3JtYXRfdCBmYl9mb3JtYXRzW10gPSB7Cj4+PiArCQl7IERSTV9GT1JNQVRfWFJHQjg4ODgs IDggLCAiIn0sCj4+PiArCQl7IERSTV9GT1JNQVRfWFJHQjIxMDEwMTAsIDEwICwgIi0xMGJwYyJ9 Cj4+PiArCX07Cj4+PiArCj4+PiAgCWlndF9maXh0dXJlIHsKPj4+ICAJCWlndF9yZXF1aXJlX3Bp cGVfY3JjKGRhdGEtPmRybV9mZCk7Cj4+PiAgCj4+PiBAQCAtOTE2LDE2MiArOTMyLDE4OSBAQCBy dW5fdGVzdHNfZm9yX3BpcGUoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcCkKPj4+ICAJCWlndF9k aXNwbGF5X3JlcXVpcmVfb3V0cHV0X29uX3BpcGUoJmRhdGEtPmRpc3BsYXksIHApOwo+Pj4gIAl9 Cj4+PiAgCj4+PiAtCS8qIFdlIGFzc3VtZSBhbiA4Yml0cyBkZXB0aCBwZXIgY29sb3IgZm9yIGRl Z2FtbWEvZ2FtbWEgTFVUcwo+Pj4gLQkgKiBmb3IgQ1JDIGNoZWNrcyB3aXRoIGZyYW1lYnVmZmVy IHJlZmVyZW5jZXMuICovCj4+PiAtCWRhdGEtPmNvbG9yX2RlcHRoID0gODsKPj4+IC0JZGVsdGEg PSAxLjAgLyAoMSA8PCBkYXRhLT5jb2xvcl9kZXB0aCk7Cj4+PiAtCj4+PiAtCWlndF9zdWJ0ZXN0 X2YoInBpcGUtJXMtY3RtLXJlZC10by1ibHVlIiwga21zdGVzdF9waXBlX25hbWUocCkpIHsKPj4+ IC0JCWNvbG9yX3QgYmx1ZV9ncmVlbl9ibHVlW10gPSB7Cj4+PiAtCQkJeyAwLjAsIDAuMCwgMS4w IH0sCj4+PiAtCQkJeyAwLjAsIDEuMCwgMC4wIH0sCj4+PiAtCQkJeyAwLjAsIDAuMCwgMS4wIH0K Pj4+IC0JCX07Cj4+PiAtCQlkb3VibGUgY3RtW10gPSB7IDAuMCwgMC4wLCAwLjAsCj4+PiAtCQkJ CTAuMCwgMS4wLCAwLjAsCj4+PiAtCQkJCTEuMCwgMC4wLCAxLjAgfTsKPj4+IC0JCWlndF9hc3Nl cnQodGVzdF9waXBlX2N0bShkYXRhLCBwcmltYXJ5LCByZWRfZ3JlZW5fYmx1ZSwKPj4+IC0JCQkJ CSBibHVlX2dyZWVuX2JsdWUsIGN0bSkpOwo+Pj4gLQl9Cj4+PiArCS8qIEl0ZXJhdGUgb3ZlciBm YiBmb3JtYXRzIHRvIHRlc3QgKi8KPj4+ICsJZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUoZmJf Zm9ybWF0cyk7IGorKykgewo+Pj4gKwo+Pj4gKwkJZmJfZm9ybWF0X3QgKmZiX2Zvcm1hdCA9ICZm Yl9mb3JtYXRzW2pdOwo+Pj4gKwkJZGF0YS0+Y29sb3JfZGVwdGggPSBmYl9mb3JtYXQtPmJwYzsK Pj4+ICsJCWRlbHRhID0gMS4wIC8gKDEgPDwgZGF0YS0+Y29sb3JfZGVwdGgpOwo+Pj4gKwo+Pj4g KwkJaWd0X3N1YnRlc3RfZigicGlwZS0lcyVzLWN0bS1yZWQtdG8tYmx1ZSIsIGttc3Rlc3RfcGlw ZV9uYW1lKHApLAo+Pj4gKwkJCSAgICAgIGZiX2Zvcm1hdC0+bmFtZSkgewo+Pj4gKwkJCWNvbG9y X3QgYmx1ZV9ncmVlbl9ibHVlW10gPSB7Cj4+PiArCQkJCXsgMC4wLCAwLjAsIDEuMCB9LAo+Pj4g KwkJCQl7IDAuMCwgMS4wLCAwLjAgfSwKPj4+ICsJCQkJeyAwLjAsIDAuMCwgMS4wIH0KPj4+ICsJ CQl9Owo+Pj4gKwkJCWRvdWJsZSBjdG1bXSA9IHsgMC4wLCAwLjAsIDAuMCwKPj4+ICsJCQkJCTAu MCwgMS4wLCAwLjAsCj4+PiArCQkJCQkxLjAsIDAuMCwgMS4wIH07Cj4+PiArCQkJaWd0X2Fzc2Vy dCh0ZXN0X3BpcGVfY3RtKGRhdGEsIHByaW1hcnksIHJlZF9ncmVlbl9ibHVlLAo+Pj4gKwkJCQkJ CSBibHVlX2dyZWVuX2JsdWUsIGN0bSwKPj4+ICsJCQkJCQkgZmJfZm9ybWF0LT5mb3JtYXQpKTsK Pj4+ICsJCX0KPj4+ICAKPj4+IC0JaWd0X3N1YnRlc3RfZigicGlwZS0lcy1jdG0tZ3JlZW4tdG8t cmVkIiwga21zdGVzdF9waXBlX25hbWUocCkpIHsKPj4+IC0JCWNvbG9yX3QgcmVkX3JlZF9ibHVl W10gPSB7Cj4+PiAtCQkJeyAxLjAsIDAuMCwgMC4wIH0sCj4+PiAtCQkJeyAxLjAsIDAuMCwgMC4w IH0sCj4+PiAtCQkJeyAwLjAsIDAuMCwgMS4wIH0KPj4+IC0JCX07Cj4+PiAtCQlkb3VibGUgY3Rt W10gPSB7IDEuMCwgMS4wLCAwLjAsCj4+PiAtCQkJCTAuMCwgMC4wLCAwLjAsCj4+PiAtCQkJCTAu MCwgMC4wLCAxLjAgfTsKPj4+IC0JCWlndF9hc3NlcnQodGVzdF9waXBlX2N0bShkYXRhLCBwcmlt YXJ5LCByZWRfZ3JlZW5fYmx1ZSwKPj4+IC0JCQkJCSByZWRfcmVkX2JsdWUsIGN0bSkpOwo+Pj4g LQl9Cj4+PiArCQlpZ3Rfc3VidGVzdF9mKCJwaXBlLSVzJXMtY3RtLWdyZWVuLXRvLXJlZCIsCj4+ PiArCQkJICAgICAga21zdGVzdF9waXBlX25hbWUocCksIGZiX2Zvcm1hdC0+bmFtZSkgewo+Pj4g KwkJCWNvbG9yX3QgcmVkX3JlZF9ibHVlW10gPSB7Cj4+PiArCQkJCXsgMS4wLCAwLjAsIDAuMCB9 LAo+Pj4gKwkJCQl7IDEuMCwgMC4wLCAwLjAgfSwKPj4+ICsJCQkJeyAwLjAsIDAuMCwgMS4wIH0K Pj4+ICsJCQl9Owo+Pj4gKwkJCWRvdWJsZSBjdG1bXSA9IHsgMS4wLCAxLjAsIDAuMCwKPj4+ICsJ CQkJCTAuMCwgMC4wLCAwLjAsCj4+PiArCQkJCQkwLjAsIDAuMCwgMS4wIH07Cj4+PiArCQkJaWd0 X2Fzc2VydCh0ZXN0X3BpcGVfY3RtKGRhdGEsIHByaW1hcnksIHJlZF9ncmVlbl9ibHVlLAo+Pj4g KwkJCQkJCSByZWRfcmVkX2JsdWUsIGN0bSwKPj4+ICsJCQkJCQkgZmJfZm9ybWF0LT5mb3JtYXQp KTsKPj4+ICsJCX0KPj4+ICAKPj4+IC0JaWd0X3N1YnRlc3RfZigicGlwZS0lcy1jdG0tYmx1ZS10 by1yZWQiLCBrbXN0ZXN0X3BpcGVfbmFtZShwKSkgewo+Pj4gLQkJY29sb3JfdCByZWRfZ3JlZW5f cmVkW10gPSB7Cj4+PiAtCQkJeyAxLjAsIDAuMCwgMC4wIH0sCj4+PiAtCQkJeyAwLjAsIDEuMCwg MC4wIH0sCj4+PiAtCQkJeyAxLjAsIDAuMCwgMC4wIH0KPj4+IC0JCX07Cj4+PiAtCQlkb3VibGUg Y3RtW10gPSB7IDEuMCwgMC4wLCAxLjAsCj4+PiAtCQkJCTAuMCwgMS4wLCAwLjAsCj4+PiAtCQkJ CTAuMCwgMC4wLCAwLjAgfTsKPj4+IC0JCWlndF9hc3NlcnQodGVzdF9waXBlX2N0bShkYXRhLCBw cmltYXJ5LCByZWRfZ3JlZW5fYmx1ZSwKPj4+IC0JCQkJCSByZWRfZ3JlZW5fcmVkLCBjdG0pKTsK Pj4+IC0JfQo+Pj4gKwkJaWd0X3N1YnRlc3RfZigicGlwZS0lcyVzLWN0bS1ibHVlLXRvLXJlZCIs IGttc3Rlc3RfcGlwZV9uYW1lKHApLAo+Pj4gKwkJCSAgICAgIGZiX2Zvcm1hdC0+bmFtZSkgewo+ Pj4gKwkJCWNvbG9yX3QgcmVkX2dyZWVuX3JlZFtdID0gewo+Pj4gKwkJCQl7IDEuMCwgMC4wLCAw LjAgfSwKPj4+ICsJCQkJeyAwLjAsIDEuMCwgMC4wIH0sCj4+PiArCQkJCXsgMS4wLCAwLjAsIDAu MCB9Cj4+PiArCQkJfTsKPj4+ICsJCQlkb3VibGUgY3RtW10gPSB7IDEuMCwgMC4wLCAxLjAsCj4+ PiArCQkJCQkwLjAsIDEuMCwgMC4wLAo+Pj4gKwkJCQkJMC4wLCAwLjAsIDAuMCB9Owo+Pj4gKwkJ CWlndF9hc3NlcnQodGVzdF9waXBlX2N0bShkYXRhLCBwcmltYXJ5LCByZWRfZ3JlZW5fYmx1ZSwK Pj4+ICsJCQkJCQkgcmVkX2dyZWVuX3JlZCwgY3RtLAo+Pj4gKwkJCQkJCSBmYl9mb3JtYXQtPmZv cm1hdCkpOwo+Pj4gKwkJfQo+Pj4gIAo+Pj4gLQkvKiBXZSB0ZXN0cyBhIGZldyB2YWx1ZXMgYXJv dW5kIHRoZSBleHBlY3RlZCByZXN1bHQgYmVjYXVzZQo+Pj4gLQkgKiB0aGUgaXQgZGVwZW5kcyBv biB0aGUgaGFyZHdhcmUgd2UncmUgZGVhbGluZyB3aXRoLCB3ZSBjYW4KPj4+IC0JICogZWl0aGVy IGdldCBjbGFtcGVkIG9yIHJvdW5kZWQgdmFsdWVzIGFuZCB3ZSBhbHNvIG5lZWQgdG8KPj4+IC0J ICogYWNjb3VudCBmb3Igb2RkIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgTFVUcy4gKi8KPj4+IC0J aWd0X3N1YnRlc3RfZigicGlwZS0lcy1jdG0tMC0yNSIsIGttc3Rlc3RfcGlwZV9uYW1lKHApKSB7 Cj4+PiAtCQljb2xvcl90IGV4cGVjdGVkX2NvbG9yc1tdID0gewo+Pj4gLQkJCXsgMC4wLCB9LCB7 IDAuMCwgfSwgeyAwLjAsIH0KPj4+IC0JCX07Cj4+PiAtCQlkb3VibGUgY3RtW10gPSB7IDAuMjUs IDAuMCwgIDAuMCwKPj4+IC0JCQkJIDAuMCwgIDAuMjUsIDAuMCwKPj4+IC0JCQkJIDAuMCwgIDAu MCwgIDAuMjUgfTsKPj4+IC0JCWJvb2wgc3VjY2VzcyA9IGZhbHNlOwo+Pj4gLQo+Pj4gLQkJZm9y IChpID0gMDsgaSA8IDU7IGkrKykgewo+Pj4gLQkJCWV4cGVjdGVkX2NvbG9yc1swXS5yID0KPj4+ IC0JCQkJZXhwZWN0ZWRfY29sb3JzWzFdLmcgPQo+Pj4gLQkJCQlleHBlY3RlZF9jb2xvcnNbMl0u YiA9Cj4+PiAtCQkJCTAuMjUgKyBkZWx0YSAqIChpIC0gMik7Cj4+PiAtCQkJc3VjY2VzcyB8PSB0 ZXN0X3BpcGVfY3RtKGRhdGEsIHByaW1hcnksCj4+PiAtCQkJCQkJIHJlZF9ncmVlbl9ibHVlLAo+ Pj4gLQkJCQkJCSBleHBlY3RlZF9jb2xvcnMsIGN0bSk7Cj4+PiArCQkvKiBXZSB0ZXN0cyBhIGZl dyB2YWx1ZXMgYXJvdW5kIHRoZSBleHBlY3RlZCByZXN1bHQgYmVjYXVzZQo+Pj4gKwkJICogdGhl IGl0IGRlcGVuZHMgb24gdGhlIGhhcmR3YXJlIHdlJ3JlIGRlYWxpbmcgd2l0aCwgd2UgY2FuCj4+ PiArCQkgKiBlaXRoZXIgZ2V0IGNsYW1wZWQgb3Igcm91bmRlZCB2YWx1ZXMgYW5kIHdlIGFsc28g bmVlZCB0bwo+Pj4gKwkJICogYWNjb3VudCBmb3Igb2RkIG51bWJlciBvZiBpdGVtcyBpbiB0aGUg TFVUcy4gKi8KPj4+ICsJCWlndF9zdWJ0ZXN0X2YoInBpcGUtJXMlcy1jdG0tMC0yNSIsIGttc3Rl c3RfcGlwZV9uYW1lKHApLAo+Pj4gKwkJCSAgICAgIGZiX2Zvcm1hdC0+bmFtZSkgewo+Pj4gKwkJ CWNvbG9yX3QgZXhwZWN0ZWRfY29sb3JzW10gPSB7Cj4+PiArCQkJCXsgMC4wLCB9LCB7IDAuMCwg fSwgeyAwLjAsIH0KPj4+ICsJCQl9Owo+Pj4gKwkJCWRvdWJsZSBjdG1bXSA9IHsgMC4yNSwgMC4w LCAgMC4wLAo+Pj4gKwkJCQkJIDAuMCwgIDAuMjUsIDAuMCwKPj4+ICsJCQkJCSAwLjAsICAwLjAs ICAwLjI1IH07Cj4+PiArCQkJYm9vbCBzdWNjZXNzID0gZmFsc2U7Cj4+PiArCj4+PiArCQkJZm9y IChpID0gMDsgaSA8IDU7IGkrKykgewo+Pj4gKwkJCQlleHBlY3RlZF9jb2xvcnNbMF0uciA9Cj4+ PiArCQkJCQlleHBlY3RlZF9jb2xvcnNbMV0uZyA9Cj4+PiArCQkJCQlleHBlY3RlZF9jb2xvcnNb Ml0uYiA9Cj4+PiArCQkJCQkwLjI1ICsgZGVsdGEgKiAoaSAtIDIpOwo+Pj4gKwkJCQlzdWNjZXNz IHw9IHRlc3RfcGlwZV9jdG0oZGF0YSwgcHJpbWFyeSwKPj4+ICsJCQkJCQkJIHJlZF9ncmVlbl9i bHVlLAo+Pj4gKwkJCQkJCQkgZXhwZWN0ZWRfY29sb3JzLCBjdG0sCj4+PiArCQkJCQkJCSBmYl9m b3JtYXQtPmZvcm1hdCk7Cj4+PiArCQkJfQo+Pj4gKwkJCWlndF9hc3NlcnQoc3VjY2Vzcyk7Cj4+ PiAgCQl9Cj4+PiAtCQlpZ3RfYXNzZXJ0KHN1Y2Nlc3MpOwo+Pj4gLQl9Cj4+PiAgCj4+PiAtCWln dF9zdWJ0ZXN0X2YoInBpcGUtJXMtY3RtLTAtNSIsIGttc3Rlc3RfcGlwZV9uYW1lKHApKSB7Cj4+ PiAtCQljb2xvcl90IGV4cGVjdGVkX2NvbG9yc1tdID0gewo+Pj4gLQkJCXsgMC4wLCB9LCB7IDAu MCwgfSwgeyAwLjAsIH0KPj4+IC0JCX07Cj4+PiAtCQlkb3VibGUgY3RtW10gPSB7IDAuNSwgMC4w LCAwLjAsCj4+PiAtCQkJCSAwLjAsIDAuNSwgMC4wLAo+Pj4gLQkJCQkgMC4wLCAwLjAsIDAuNSB9 Owo+Pj4gLQkJYm9vbCBzdWNjZXNzID0gZmFsc2U7Cj4+PiAtCj4+PiAtCQlmb3IgKGkgPSAwOyBp IDwgNTsgaSsrKSB7Cj4+PiAtCQkJZXhwZWN0ZWRfY29sb3JzWzBdLnIgPQo+Pj4gLQkJCQlleHBl Y3RlZF9jb2xvcnNbMV0uZyA9Cj4+PiAtCQkJCWV4cGVjdGVkX2NvbG9yc1syXS5iID0KPj4+IC0J CQkJMC41ICsgZGVsdGEgKiAoaSAtIDIpOwo+Pj4gLQkJCXN1Y2Nlc3MgfD0gdGVzdF9waXBlX2N0 bShkYXRhLCBwcmltYXJ5LAo+Pj4gLQkJCQkJCSByZWRfZ3JlZW5fYmx1ZSwKPj4+IC0JCQkJCQkg ZXhwZWN0ZWRfY29sb3JzLCBjdG0pOwo+Pj4gKwkJaWd0X3N1YnRlc3RfZigicGlwZS0lcyVzLWN0 bS0wLTUiLCBrbXN0ZXN0X3BpcGVfbmFtZShwKSwKPj4+ICsJCQkgICAgICBmYl9mb3JtYXQtPm5h bWUpIHsKPj4+ICsJCQljb2xvcl90IGV4cGVjdGVkX2NvbG9yc1tdID0gewo+Pj4gKwkJCQl7IDAu MCwgfSwgeyAwLjAsIH0sIHsgMC4wLCB9Cj4+PiArCQkJfTsKPj4+ICsJCQlkb3VibGUgY3RtW10g PSB7IDAuNSwgMC4wLCAwLjAsCj4+PiArCQkJCQkgMC4wLCAwLjUsIDAuMCwKPj4+ICsJCQkJCSAw LjAsIDAuMCwgMC41IH07Cj4+PiArCQkJYm9vbCBzdWNjZXNzID0gZmFsc2U7Cj4+PiArCj4+PiAr CQkJZm9yIChpID0gMDsgaSA8IDU7IGkrKykgewo+Pj4gKwkJCQlleHBlY3RlZF9jb2xvcnNbMF0u ciA9Cj4+PiArCQkJCQlleHBlY3RlZF9jb2xvcnNbMV0uZyA9Cj4+PiArCQkJCQlleHBlY3RlZF9j b2xvcnNbMl0uYiA9Cj4+PiArCQkJCQkwLjUgKyBkZWx0YSAqIChpIC0gMik7Cj4+PiArCQkJCXN1 Y2Nlc3MgfD0gdGVzdF9waXBlX2N0bShkYXRhLCBwcmltYXJ5LAo+Pj4gKwkJCQkJCQkgcmVkX2dy ZWVuX2JsdWUsCj4+PiArCQkJCQkJCSBleHBlY3RlZF9jb2xvcnMsIGN0bSwKPj4+ICsJCQkJCQkJ IGZiX2Zvcm1hdC0+Zm9ybWF0KTsKPj4+ICsJCQl9Cj4+PiArCQkJaWd0X2Fzc2VydChzdWNjZXNz KTsKPj4+ICAJCX0KPj4+IC0JCWlndF9hc3NlcnQoc3VjY2Vzcyk7Cj4+PiAtCX0KPj4+ICAKPj4+ IC0JaWd0X3N1YnRlc3RfZigicGlwZS0lcy1jdG0tMC03NSIsIGttc3Rlc3RfcGlwZV9uYW1lKHAp KSB7Cj4+PiAtCQljb2xvcl90IGV4cGVjdGVkX2NvbG9yc1tdID0gewo+Pj4gLQkJCXsgMC4wLCB9 LCB7IDAuMCwgfSwgeyAwLjAsIH0KPj4+IC0JCX07Cj4+PiAtCQlkb3VibGUgY3RtW10gPSB7IDAu NzUsIDAuMCwgIDAuMCwKPj4+IC0JCQkJIDAuMCwgIDAuNzUsIDAuMCwKPj4+IC0JCQkJIDAuMCwg IDAuMCwgIDAuNzUgfTsKPj4+IC0JCWJvb2wgc3VjY2VzcyA9IGZhbHNlOwo+Pj4gLQo+Pj4gLQkJ Zm9yIChpID0gMDsgaSA8IDc7IGkrKykgewo+Pj4gLQkJCWV4cGVjdGVkX2NvbG9yc1swXS5yID0K Pj4+IC0JCQkJZXhwZWN0ZWRfY29sb3JzWzFdLmcgPQo+Pj4gLQkJCQlleHBlY3RlZF9jb2xvcnNb Ml0uYiA9Cj4+PiAtCQkJCTAuNzUgKyBkZWx0YSAqIChpIC0gMyk7Cj4+PiAtCQkJc3VjY2VzcyB8 PSB0ZXN0X3BpcGVfY3RtKGRhdGEsIHByaW1hcnksCj4+PiAtCQkJCQkJIHJlZF9ncmVlbl9ibHVl LAo+Pj4gLQkJCQkJCSBleHBlY3RlZF9jb2xvcnMsIGN0bSk7Cj4+PiArCQlpZ3Rfc3VidGVzdF9m KCJwaXBlLSVzJXMtY3RtLTAtNzUiLCBrbXN0ZXN0X3BpcGVfbmFtZShwKSwKPj4+ICsJCQkgICAg ICBmYl9mb3JtYXQtPm5hbWUpIHsKPj4+ICsJCQljb2xvcl90IGV4cGVjdGVkX2NvbG9yc1tdID0g ewo+Pj4gKwkJCQl7IDAuMCwgfSwgeyAwLjAsIH0sIHsgMC4wLCB9Cj4+PiArCQkJfTsKPj4+ICsJ CQlkb3VibGUgY3RtW10gPSB7IDAuNzUsIDAuMCwgIDAuMCwKPj4+ICsJCQkJCSAwLjAsICAwLjc1 LCAwLjAsCj4+PiArCQkJCQkgMC4wLCAgMC4wLCAgMC43NSB9Owo+Pj4gKwkJCWJvb2wgc3VjY2Vz cyA9IGZhbHNlOwo+Pj4gKwo+Pj4gKwkJCWZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHsKPj4+ICsJ CQkJZXhwZWN0ZWRfY29sb3JzWzBdLnIgPQo+Pj4gKwkJCQkJZXhwZWN0ZWRfY29sb3JzWzFdLmcg PQo+Pj4gKwkJCQkJZXhwZWN0ZWRfY29sb3JzWzJdLmIgPQo+Pj4gKwkJCQkJMC43NSArIGRlbHRh ICogKGkgLSAzKTsKPj4+ICsJCQkJc3VjY2VzcyB8PSB0ZXN0X3BpcGVfY3RtKGRhdGEsIHByaW1h cnksCj4+PiArCQkJCQkJCSByZWRfZ3JlZW5fYmx1ZSwKPj4+ICsJCQkJCQkJIGV4cGVjdGVkX2Nv bG9ycywgY3RtLAo+Pj4gKwkJCQkJCQkgZmJfZm9ybWF0LT5mb3JtYXQpOwo+Pj4gKwkJCX0KPj4+ ICsJCQlpZ3RfYXNzZXJ0KHN1Y2Nlc3MpOwo+Pj4gIAkJfQo+Pj4gLQkJaWd0X2Fzc2VydChzdWNj ZXNzKTsKPj4+IC0JfQo+Pj4gIAo+Pj4gLQlpZ3Rfc3VidGVzdF9mKCJwaXBlLSVzLWN0bS1tYXgi LCBrbXN0ZXN0X3BpcGVfbmFtZShwKSkgewo+Pj4gLQkJY29sb3JfdCBmdWxsX3JnYltdID0gewo+ Pj4gLQkJCXsgMS4wLCAwLjAsIDAuMCB9LAo+Pj4gLQkJCXsgMC4wLCAxLjAsIDAuMCB9LAo+Pj4g LQkJCXsgMC4wLCAwLjAsIDEuMCB9Cj4+PiAtCQl9Owo+Pj4gLQkJZG91YmxlIGN0bVtdID0geyAx MDAuMCwgICAwLjAsICAgMC4wLAo+Pj4gLQkJCQkgMC4wLCAgIDEwMC4wLCAgIDAuMCwKPj4+IC0J CQkJIDAuMCwgICAgIDAuMCwgMTAwLjAgfTsKPj4+IC0KPj4+IC0JCS8qIENoZXJyeVZpZXcgZ2Vu ZXJhdGVzIHZhbHVlcyBvbiAxMGJpdHMgdGhhdCB3ZQo+Pj4gLQkJICogcHJvZHVjZSB3aXRoIGFu IDggYml0cyBwZXIgY29sb3IgZnJhbWVidWZmZXIuICovCj4+PiAtCQlpZ3RfcmVxdWlyZSghSVNf Q0hFUlJZVklFVyhkYXRhLT5kZXZpZCkpOwo+Pj4gLQo+Pj4gLQkJaWd0X2Fzc2VydCh0ZXN0X3Bp cGVfY3RtKGRhdGEsIHByaW1hcnksIHJlZF9ncmVlbl9ibHVlLAo+Pj4gLQkJCQkJIGZ1bGxfcmdi LCBjdG0pKTsKPj4+IC0JfQo+Pj4gKwkJaWd0X3N1YnRlc3RfZigicGlwZS0lcyVzLWN0bS1tYXgi LCBrbXN0ZXN0X3BpcGVfbmFtZShwKSwKPj4+ICsJCQkgICAgICBmYl9mb3JtYXQtPm5hbWUpIHsK Pj4+ICsJCQljb2xvcl90IGZ1bGxfcmdiW10gPSB7Cj4+PiArCQkJCXsgMS4wLCAwLjAsIDAuMCB9 LAo+Pj4gKwkJCQl7IDAuMCwgMS4wLCAwLjAgfSwKPj4+ICsJCQkJeyAwLjAsIDAuMCwgMS4wIH0K Pj4+ICsJCQl9Owo+Pj4gKwkJCWRvdWJsZSBjdG1bXSA9IHsgMTAwLjAsICAgMC4wLCAgIDAuMCwK Pj4+ICsJCQkJCSAwLjAsICAgMTAwLjAsICAgMC4wLAo+Pj4gKwkJCQkJIDAuMCwgICAgIDAuMCwg MTAwLjAgfTsKPj4+ICsKPj4+ICsJCQkvKiBDaGVycnlWaWV3IGdlbmVyYXRlcyB2YWx1ZXMgb24g MTBiaXRzIHRoYXQgd2UKPj4+ICsJCQkgKiBwcm9kdWNlIHdpdGggYW4gOCBiaXRzIHBlciBjb2xv ciBmcmFtZWJ1ZmZlci4gKi8KPj4+ICsJCQlpZ3RfcmVxdWlyZSghSVNfQ0hFUlJZVklFVyhkYXRh LT5kZXZpZCkpOwo+Pj4gKwo+Pj4gKwkJCWlndF9hc3NlcnQodGVzdF9waXBlX2N0bShkYXRhLCBw cmltYXJ5LCByZWRfZ3JlZW5fYmx1ZSwKPj4+ICsJCQkJCQkgZnVsbF9yZ2IsIGN0bSwKPj4+ICsJ CQkJCQkgZmJfZm9ybWF0LT5mb3JtYXQpKTsKPj4+ICsJCX0KPj4+ICAKPj4+IC0JaWd0X3N1YnRl c3RfZigicGlwZS0lcy1jdG0tbmVnYXRpdmUiLCBrbXN0ZXN0X3BpcGVfbmFtZShwKSkgewo+Pj4g LQkJY29sb3JfdCBhbGxfYmxhY2tbXSA9IHsKPj4+IC0JCQl7IDAuMCwgMC4wLCAwLjAgfSwKPj4+ IC0JCQl7IDAuMCwgMC4wLCAwLjAgfSwKPj4+IC0JCQl7IDAuMCwgMC4wLCAwLjAgfQo+Pj4gLQkJ fTsKPj4+IC0JCWRvdWJsZSBjdG1bXSA9IHsgLTEuMCwgIDAuMCwgIDAuMCwKPj4+IC0JCQkJIDAu MCwgLTEuMCwgIDAuMCwKPj4+IC0JCQkJIDAuMCwgIDAuMCwgLTEuMCB9Owo+Pj4gLQkJaWd0X2Fz c2VydCh0ZXN0X3BpcGVfY3RtKGRhdGEsIHByaW1hcnksIHJlZF9ncmVlbl9ibHVlLAo+Pj4gLQkJ CQkJIGFsbF9ibGFjaywgY3RtKSk7Cj4+PiAtCX0KPj4+ICsJCWlndF9zdWJ0ZXN0X2YoInBpcGUt JXMlcy1jdG0tbmVnYXRpdmUiLCBrbXN0ZXN0X3BpcGVfbmFtZShwKSwKPj4+ICsJCQkgICAgICBm Yl9mb3JtYXQtPm5hbWUpIHsKPj4+ICsJCQljb2xvcl90IGFsbF9ibGFja1tdID0gewo+Pj4gKwkJ CQl7IDAuMCwgMC4wLCAwLjAgfSwKPj4+ICsJCQkJeyAwLjAsIDAuMCwgMC4wIH0sCj4+PiArCQkJ CXsgMC4wLCAwLjAsIDAuMCB9Cj4+PiArCQkJfTsKPj4+ICsJCQlkb3VibGUgY3RtW10gPSB7IC0x LjAsICAwLjAsICAwLjAsCj4+PiArCQkJCQkgMC4wLCAtMS4wLCAgMC4wLAo+Pj4gKwkJCQkJIDAu MCwgIDAuMCwgLTEuMCB9Owo+Pj4gKwkJCWlndF9hc3NlcnQodGVzdF9waXBlX2N0bShkYXRhLCBw cmltYXJ5LCByZWRfZ3JlZW5fYmx1ZSwKPj4+ICsJCQkJCQkgYWxsX2JsYWNrLCBjdG0sCj4+PiAr CQkJCQkJIGZiX2Zvcm1hdC0+Zm9ybWF0KSk7Cj4+PiArCQl9Cj4+PiAgCj4+PiAgI2lmIDAKPj4+ IC0JaWd0X3N1YnRlc3RfZigicGlwZS0lcy1jdG0tbGltaXRlZC1yYW5nZSIsIGttc3Rlc3RfcGlw ZV9uYW1lKHApKQo+Pj4gLQkJdGVzdF9waXBlX2xpbWl0ZWRfcmFuZ2VfY3RtKGRhdGEsIHByaW1h cnkpOwo+Pj4gKwkJaWd0X3N1YnRlc3RfZigicGlwZS0lcy1jdG0tbGltaXRlZC1yYW5nZSVzIiwK Pj4+ICsJCQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwKSwgZmJfZm9ybWF0LT5uYW1lKQo+Pj4g KwkJCXRlc3RfcGlwZV9saW1pdGVkX3JhbmdlX2N0bShkYXRhLCBwcmltYXJ5LAo+Pj4gKwkJCQkJ CSAgICBmYl9mb3JtYXQtPmZvcm1hdCk7Cj4+PiAgI2VuZGlmCj4+PiAgCj4+PiAtCWlndF9zdWJ0 ZXN0X2YoInBpcGUtJXMtZGVnYW1tYSIsIGttc3Rlc3RfcGlwZV9uYW1lKHApKQo+Pj4gLQkJdGVz dF9waXBlX2RlZ2FtbWEoZGF0YSwgcHJpbWFyeSk7Cj4+PiArCQlpZ3Rfc3VidGVzdF9mKCJwaXBl LSVzJXMtZGVnYW1tYSIsIGttc3Rlc3RfcGlwZV9uYW1lKHApLAo+Pj4gKwkJCSAgICAgIGZiX2Zv cm1hdC0+bmFtZSkKPj4+ICsJCQl0ZXN0X3BpcGVfZGVnYW1tYShkYXRhLCBwcmltYXJ5LCBmYl9m b3JtYXQtPmZvcm1hdCk7Cj4+PiAgCj4+PiAtCWlndF9zdWJ0ZXN0X2YoInBpcGUtJXMtZ2FtbWEi LCBrbXN0ZXN0X3BpcGVfbmFtZShwKSkKPj4+IC0JCXRlc3RfcGlwZV9nYW1tYShkYXRhLCBwcmlt YXJ5KTsKPj4+ICsJCWlndF9zdWJ0ZXN0X2YoInBpcGUtJXMlcy1nYW1tYSIsIGttc3Rlc3RfcGlw ZV9uYW1lKHApLAo+Pj4gKwkJCSAgICAgIGZiX2Zvcm1hdC0+bmFtZSkKPj4+ICsJCQl0ZXN0X3Bp cGVfZ2FtbWEoZGF0YSwgcHJpbWFyeSwgZmJfZm9ybWF0LT5mb3JtYXQpOwo+Pj4gIAo+Pj4gLQlp Z3Rfc3VidGVzdF9mKCJwaXBlLSVzLWxlZ2FjeS1nYW1tYSIsIGttc3Rlc3RfcGlwZV9uYW1lKHAp KQo+Pj4gLQkJdGVzdF9waXBlX2xlZ2FjeV9nYW1tYShkYXRhLCBwcmltYXJ5KTsKPj4+ICsJCWln dF9zdWJ0ZXN0X2YoInBpcGUtJXMlcy1sZWdhY3ktZ2FtbWEiLCBrbXN0ZXN0X3BpcGVfbmFtZShw KSwKPj4+ICsJCQkgICAgICBmYl9mb3JtYXQtPm5hbWUpCj4+PiArCQkJdGVzdF9waXBlX2xlZ2Fj eV9nYW1tYShkYXRhLCBwcmltYXJ5LAo+Pj4gKwkJCQkJICAgICAgIGZiX2Zvcm1hdC0+Zm9ybWF0 KTsKPj4+ICAKPj4+ICsJfSAvLyBFbmQgb2YgZmJfZm9ybWF0cyBpdGVyYXRvcgo+Pj4gKwo+Pj4g KwlkYXRhLT5jb2xvcl9kZXB0aCA9IDg7Cj4+PiAgCWlndF9zdWJ0ZXN0X2YoInBpcGUtJXMtbGVn YWN5LWdhbW1hLXJlc2V0Iiwga21zdGVzdF9waXBlX25hbWUocCkpCj4+PiAgCQl0ZXN0X3BpcGVf bGVnYWN5X2dhbW1hX3Jlc2V0KGRhdGEsIHByaW1hcnkpOwo+Pj4gIAo+Pj4gLS0gCj4+PiAyLjI0 LjAKPj4+Cj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+Pj4gaWd0LWRldiBtYWlsaW5nIGxpc3QKPj4+IGlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ln dC1kZXYKPj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+IGlndC1kZXYgbWFpbGluZyBsaXN0Cj4gaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK PiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRl diBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==