From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-vs1-xe41.google.com (mail-vs1-xe41.google.com [IPv6:2607:f8b0:4864:20::e41]) by gabe.freedesktop.org (Postfix) with ESMTPS id 50FF46E029 for ; Tue, 9 Jul 2019 13:48:26 +0000 (UTC) Received: by mail-vs1-xe41.google.com with SMTP id y16so7024977vsc.3 for ; Tue, 09 Jul 2019 06:48:26 -0700 (PDT) MIME-Version: 1.0 References: <20190704095604.16589-1-oleg.vasilev@intel.com> <20190704095604.16589-2-oleg.vasilev@intel.com> In-Reply-To: <20190704095604.16589-2-oleg.vasilev@intel.com> From: Rodrigo Siqueira Date: Tue, 9 Jul 2019 10:48:14 -0300 Message-ID: Subject: Re: [igt-dev] [PATCH 2/2] tests/prime_generic: add vendor-agnostic prime tests 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: Oleg Vasilev Cc: IGT GPU Tools , Daniel Vetter List-ID: SGkgT2xlZywKCkkgcmVhbGx5IGxpa2VkIHRoaXMgcGF0Y2ggc2luY2UgaXQgbG9va3MgbGlrZSBk b2N1bWVudGF0aW9uLCB3aGljaAptZWFucyB0aGF0IHNvbWVvbmUgbGlrZSBtZSBjYW4gdXNlIGl0 IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0byB1c2UKcHJpbWUuCgpCdHcsIGEgZmV3IGNvbW1lbnRz IGlubGluZQoKT24gVGh1LCBKdWwgNCwgMjAxOSBhdCA2OjU2IEFNIE9sZWcgVmFzaWxldiA8b2xl Zy52YXNpbGV2QGludGVsLmNvbT4gd3JvdGU6Cj4KPiBDdXJyZW50bHksIHdlIGhhdmUgZGlmZmVy ZW50IHNldHMgb2YgcHJpbWUgdGVzdHM6Cj4gIC0gdmdlbStpOTE1Cj4gIC0gYW1kZ3B1K2k5MTUK PiAgLSBuditpOTE1Cj4KPiBUaG9zZSB0ZXN0cyB1c2UgdmVuZG9yLXNwZWNpZmljIGlvY3Rscywg dGhlcmVmb3JlLCBub3QgaW50ZXJjaGFuZ2VhYmxlLgo+IFRoZSBpZGVhIGlzIHRvIGNyZWF0ZSBh IHNldCBvZiB0ZXN0cyB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gd29yayBvbiBhbnkKPiBwcmltZS1j b21wYXRpYmxlIGRyaXZlci4gSXQgY2FuIGJlIHJ1biB3aXRoIGFueSBjb21iaW5hdGlvbiBvZgo+ IGV4cG9ydGVyK2ltcG9ydGVyLCB3aGVyZQo+Cj4gVGhlIGZpcnN0IHRlc3QgaXMgc2ltcGxlOgo+ IDEuIEV4cG9ydGVyIGNyZWF0ZXMgYSBmcmFtZWJ1ZmZlciBhbmQgZmlsbHMgaXQgd2l0aCBhIHBs YWluIGNvbG9yCj4gMi4gRmIgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGltcG9ydGVyCj4gMy4gSW1w b3J0ZXIgbW9kZXNldHMgYW5kIGNvbXB1dGVzIHBpcGUgQ1JDCj4gNC4gSW1wb3J0ZXIgZHJhd3Mg dGhlIHNhbWUgY29sb3IgdGhyb3VnaCBjYWlybyBhbmQgY29tcGFyZXMgQ1JDCj4KPiBUaGUgaW5p dGlhbCBtb3RpdmF0aW9uIGNvbWVzIGZyb20gdGhlIG5lZWQgdG8gdGVzdCBwcmltZSBzdXBwb3J0 IGluCj4gdmttcy4KPgo+IENjOiBSb2RyaWdvIFNpcXVlaXJhIDxyb2RyaWdvc2lxdWVpcmFtZWxv QGdtYWlsLmNvbT4KPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgo+IFNpZ25l ZC1vZmYtYnk6IE9sZWcgVmFzaWxldiA8b2xlZy52YXNpbGV2QGludGVsLmNvbT4KPiAtLS0KPiAg dGVzdHMvbWVzb24uYnVpbGQgICAgIHwgICAxICsKPiAgdGVzdHMvcHJpbWVfZ2VuZXJpYy5jIHwg MjM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAyIGZpbGVz IGNoYW5nZWQsIDIzOSBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9w cmltZV9nZW5lcmljLmMKPgo+IGRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3Rz L21lc29uLmJ1aWxkCj4gaW5kZXggMzRhNzQwMjUuLjFjOTM4ZTk1IDEwMDY0NAo+IC0tLSBhL3Rl c3RzL21lc29uLmJ1aWxkCj4gKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKPiBAQCAtNzYsNiArNzYs NyBAQCB0ZXN0X3Byb2dzID0gWwo+ICAgICAgICAgJ3ByaW1lX3NlbGZfaW1wb3J0JywKPiAgICAg ICAgICdwcmltZV91ZGwnLAo+ICAgICAgICAgJ3ByaW1lX3ZnZW0nLAo+ICsgICAgICAgJ3ByaW1l X2dlbmVyaWMnLAo+ICAgICAgICAgJ3N5bmNvYmpfYmFzaWMnLAo+ICAgICAgICAgJ3N5bmNvYmpf d2FpdCcsCj4gICAgICAgICAndGVtcGxhdGUnLAo+IGRpZmYgLS1naXQgYS90ZXN0cy9wcmltZV9n ZW5lcmljLmMgYi90ZXN0cy9wcmltZV9nZW5lcmljLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDAwMDAwMDAwLi42NWU0ODc2Mwo+IC0tLSAvZGV2L251bGwKPiArKysgYi90ZXN0cy9w cmltZV9nZW5lcmljLmMKPiBAQCAtMCwwICsxLDIzOCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQg wqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRv IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICog VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu Y2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO IE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF IE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsg Ki8KPiArCj4gKyNpbmNsdWRlICJpZ3QuaCIKPiArI2luY2x1ZGUgImlndF92Z2VtLmgiCj4gKwo+ ICsjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Cj4gKyNpbmNsdWRlIDxzeXMvcG9sbC5oPgo+ICsjaW5j bHVkZSA8dGltZS5oPgo+ICsKPiArc3RhdGljIHN0cnVjdCB7Cj4gKyAgICAgICBkb3VibGUgciwg ZywgYjsKPiArICAgICAgIHVpbnQzMl90IGNvbG9yOwo+ICsgICAgICAgaWd0X2NyY190IHByaW1l X2NyYzsKPiArICAgICAgIGlndF9jcmNfdCBkaXJlY3RfY3JjOwo+ICsgICAgICAgY2hhciAqcHJp bWVfc3RyOwo+ICsgICAgICAgY2hhciAqZGlyZWN0X3N0cjsKPiArfSBjb2xvcnNbM10gPSB7Cj4g KyAgICAgICB7IC5yID0gMC4wLCAuZyA9IDAuMCwgLmIgPSAwLjAsIC5jb2xvciA9IDB4ZmYwMDAw MDB9LAo+ICsgICAgICAgeyAuciA9IDEuMCwgLmcgPSAxLjAsIC5iID0gMS4wLCAuY29sb3IgPSAw eGZmZmZmZmZmfSwKPiArICAgICAgIHsgLnIgPSAxLjAsIC5nID0gMC4wLCAuYiA9IDAuMCwgLmNv bG9yID0gMHhmZmZmMDAwMH0sCj4gK307Cj4gKwo+ICtJR1RfVEVTVF9ERVNDUklQVElPTigiR2Vu ZXJpYyB0ZXN0cywgd29ya2luZyB3aXRoIGFueSBwcmltZSBkZXZpY2UiKTsKPiArCj4gK3N0YXRp YyBib29sIGhhc19wcmltZV9pbXBvcnQoaW50IGZkKQo+ICt7Cj4gKyAgICAgICB1aW50NjRfdCB2 YWx1ZTsKPiArCj4gKyAgICAgICBpZiAoZHJtR2V0Q2FwKGZkLCBEUk1fQ0FQX1BSSU1FLCAmdmFs dWUpKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gKwo+ICsgICAgICAgcmV0dXJu IHZhbHVlICYgRFJNX1BSSU1FX0NBUF9JTVBPUlQ7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIGhh c19wcmltZV9leHBvcnQoaW50IGZkKQo+ICt7Cj4gKyAgICAgICB1aW50NjRfdCB2YWx1ZTsKPiAr Cj4gKyAgICAgICBpZiAoZHJtR2V0Q2FwKGZkLCBEUk1fQ0FQX1BSSU1FLCAmdmFsdWUpKQo+ICsg ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gKwo+ICsgICAgICAgcmV0dXJuIHZhbHVlICYg RFJNX1BSSU1FX0NBUF9FWFBPUlQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHByZXBhcmVfc2Ny YXRjaChpbnQgZXhwb3J0ZXIsIHN0cnVjdCB2Z2VtX2JvICpzY3JhdGNoLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICBkcm1Nb2RlTW9kZUluZm8gKm1vZGUsIHVpbnQzMl90IGNvbG9yKQo+ ICt7Cj4gKyAgICAgICBpbnQgaTsKPiArICAgICAgIHVpbnQzMl90ICpwdHI7Cj4gKwo+ICsgICAg ICAgc2NyYXRjaC0+d2lkdGggPSBtb2RlLT5oZGlzcGxheTsKPiArICAgICAgIHNjcmF0Y2gtPmhl aWdodCA9IG1vZGUtPnZkaXNwbGF5Owo+ICsgICAgICAgc2NyYXRjaC0+YnBwID0gMzI7Cj4gKyAg ICAgICB2Z2VtX2NyZWF0ZShleHBvcnRlciwgc2NyYXRjaCk7Cj4gKwo+ICsgICAgICAgcHRyID0g dmdlbV9tbWFwKGV4cG9ydGVyLCBzY3JhdGNoLCBQUk9UX1dSSVRFKTsKPiArICAgICAgIGZvciAo aSA9IDA7IGkgPCBzY3JhdGNoLT5zaXplIC8gc2l6ZW9mKCpwdHIpOyArK2kpCj4gKyAgICAgICAg ICAgICAgIHB0cltpXSA9IGNvbG9yOwo+ICsKPiArICAgICAgIG11bm1hcChwdHIsIHNjcmF0Y2gt PnNpemUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBwcmVwYXJlX2ZiKGludCBpbXBvcnRlciwg c3RydWN0IHZnZW1fYm8gKnNjcmF0Y2gsIHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICt7Cj4gKyAgICAg ICBlbnVtIGlndF9jb2xvcl9lbmNvZGluZyBjb2xvcl9lbmNvZGluZyA9IElHVF9DT0xPUl9ZQ0JD Ul9CVDcwOTsKPiArICAgICAgIGVudW0gaWd0X2NvbG9yX3JhbmdlIGNvbG9yX3JhbmdlID0gSUdU X0NPTE9SX1lDQkNSX0xJTUlURURfUkFOR0U7Cj4gKwo+ICsgICAgICAgaWd0X2luaXRfZmIoZmIs IGltcG9ydGVyLCBzY3JhdGNoLT53aWR0aCwgc2NyYXRjaC0+aGVpZ2h0LAo+ICsgICAgICAgICAg ICAgICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwK PiArICAgICAgICAgICAgICAgICAgIGNvbG9yX2VuY29kaW5nLCBjb2xvcl9yYW5nZSk7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGltcG9ydF9mYihpbnQgaW1wb3J0ZXIsIHN0cnVjdCBpZ3RfZmIg KmZiLAo+ICsgICAgICAgICAgICAgICAgICAgICBpbnQgZG1hYnVmX2ZkLCB1aW50MzJfdCBwaXRj aCkKPiArewo+ICsgICAgICAgdWludDMyX3Qgb2Zmc2V0c1s0XSwgcGl0Y2hlc1s0XSwgaGFuZGxl c1s0XTsKPiArICAgICAgIGludCByZXQ7Cj4gKwo+ICsgICAgICAgZmItPmdlbV9oYW5kbGUgPSBw cmltZV9mZF90b19oYW5kbGUoaW1wb3J0ZXIsIGRtYWJ1Zl9mZCk7Cj4gKwo+ICsgICAgICAgaGFu ZGxlc1swXSA9IGZiLT5nZW1faGFuZGxlOwo+ICsgICAgICAgcGl0Y2hlc1swXSA9IHBpdGNoOwo+ ICsgICAgICAgb2Zmc2V0c1swXSA9IDA7Cj4gKwo+ICsgICAgICAgcmV0ID0gZHJtTW9kZUFkZEZC MihpbXBvcnRlciwgZmItPndpZHRoLCBmYi0+aGVpZ2h0LAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICBEUk1fRk9STUFUX1hSR0I4ODg4LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICBoYW5kbGVzLCBwaXRjaGVzLCBvZmZzZXRzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAmZmItPmZiX2lkLCAwKTsKPiArICAgICAgIGlndF9hc3NlcnQocmV0ID09IDApOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBzZXRfZmIoc3RydWN0IGlndF9mYiAqZmIsCj4gKyAgICAgICAgICAg ICAgICAgIGlndF9kaXNwbGF5X3QgKmRpc3BsYXksCj4gKyAgICAgICAgICAgICAgICAgIGlndF9v dXRwdXRfdCAqb3V0cHV0KQo+ICt7Cj4gKyAgICAgICBpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKPiAr ICAgICAgIGludCByZXQ7Cj4gKwo+ICsgICAgICAgcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3Bs YW5lKG91dHB1dCwgMCk7Cj4gKyAgICAgICBpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksIGZiKTsK PiArICAgICAgIHJldCA9IGlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKPiArCj4gKyAgICAg ICBpZ3RfYXNzZXJ0KHJldCA9PSAwKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdGVzdF9jcmMo aW50IGV4cG9ydGVyLCBpbnQgaW1wb3J0ZXIpCj4gK3sKPiArICAgICAgIGVudW0gcGlwZSBwaXBl ID0gUElQRV9BOwo+ICsgICAgICAgaWd0X2Rpc3BsYXlfdCBkaXNwbGF5Owo+ICsgICAgICAgaWd0 X291dHB1dF90ICpvdXRwdXQ7Cj4gKyAgICAgICBpZ3RfcGlwZV9jcmNfdCAqcGlwZV9jcmM7Cj4g KyAgICAgICBzdHJ1Y3QgaWd0X2ZiIGZiOwo+ICsgICAgICAgaW50IGRtYWJ1Zl9mZDsKPiArICAg ICAgIHN0cnVjdCB2Z2VtX2JvIHNjcmF0Y2g7IC8qIGRlc3BpdGUgdGhlIG5hbWUsIGl0IHN1aXRz IGZvciBhbnkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbS1jb21wYXRp YmxlIGRldmljZSAqLwoKU2luY2UgdmdlbV9ibyBpcyBzdWl0aW5nIGZvciBhbnkgZ2VtLWNvbXBh dGlibGUgZGV2aWNlLCBob3cgYWJvdXQgc2VuZAphIHBhdGNoIHRoYXQgYWRkZWQgYSBiZXR0ZXIg bmFtZSBmb3IgaXQ/IElNSE8gdGhpcyBpcyBnb29kIGZvcgpyZWFkYWJpbGl0eSBzYWtlIC0gYW55 d2F5LCBqdXN0IGFuIGlkZWEuCgo+ICsgICAgICAgaW50IGksIGo7Cj4gKyAgICAgICBkcm1Nb2Rl TW9kZUluZm8gKm1vZGU7Cj4gKwo+ICsgICAgICAgYm9vbCBjcmNfZXF1YWw7Cj4gKwo+ICsgICAg ICAgaWd0X2Rpc3BsYXlfcmVxdWlyZSgmZGlzcGxheSwgaW1wb3J0ZXIpOwo+ICsgICAgICAgaWd0 X3NraXBfb24ocGlwZSA+PSBkaXNwbGF5Lm5fcGlwZXMpOwo+ICsgICAgICAgb3V0cHV0ID0gaWd0 X2dldF9zaW5nbGVfb3V0cHV0X2Zvcl9waXBlKCZkaXNwbGF5LCBwaXBlKTsKPiArICAgICAgIGln dF9yZXF1aXJlX2Yob3V0cHV0LCAiTm8gY29ubmVjdG9yIGZvdW5kIGZvciBwaXBlICVzXG4iLAo+ ICsgICAgICAgICAgICAgICAgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSk7Cj4gKwo+ICsg ICAgICAgaWd0X2Rpc3BsYXlfcmVzZXQoJmRpc3BsYXkpOwo+ICsgICAgICAgaWd0X291dHB1dF9z ZXRfcGlwZShvdXRwdXQsIHBpcGUpOwoKVGhlIGFib3ZlIGNvZGUgbG9va3MgbGlrZSBhIHNldHVw LCBob3cgYWJvdXQgbW92ZSBpdCBmb3IgYSBzdGF0aWMKZnVuY3Rpb24gcmVzcG9uc2libGUgZm9y IHRoaXMgYWN0aW9uPyBJTUhPLCBpdCBjb3VsZCBiZSBlYXNpZXIgdG8KdW5kZXJzdGFuZCB0ZXN0 X2NyYywgaWYgaXQncyBmb2N1c2VkIG9uIG9ubHkgb24gQ1JDIHRlc3QuCgpBZGRpdGlvbmFsbHks IEkgd2FudCB0byBzdWdnZXN0IHRoYXQgaWd0X2Rpc3BsYXlfZmluaSgpIGdldHMgaW52b2tlZAph dCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24gYmVjYXVzZSB5b3UgaW5pdGlhbGl6ZWQgc29tZSBk aXNwbGF5IHN0dWZmCmFuZCBkaWQgbm90IGNsZWFuIHVwIHRoZW0gYXQgdGhlIGVuZC4KCj4gKwo+ ICsgICAgICAgbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKPiArICAgICAgIHBp cGVfY3JjID0gaWd0X3BpcGVfY3JjX25ldyhpbXBvcnRlciwgcGlwZSwgSU5URUxfUElQRV9DUkNf U09VUkNFX0FVVE8pOwo+ICsKPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNv bG9ycyk7IGkrKykgewo+ICsgICAgICAgICAgICAgICBwcmVwYXJlX3NjcmF0Y2goZXhwb3J0ZXIs ICZzY3JhdGNoLCBtb2RlLCBjb2xvcnNbaV0uY29sb3IpOwo+ICsgICAgICAgICAgICAgICBkbWFi dWZfZmQgPSBwcmltZV9oYW5kbGVfdG9fZmQoZXhwb3J0ZXIsIHNjcmF0Y2guaGFuZGxlKTsKPiAr ICAgICAgICAgICAgICAgZ2VtX2Nsb3NlKGV4cG9ydGVyLCBzY3JhdGNoLmhhbmRsZSk7Cj4gKwo+ ICsgICAgICAgICAgICAgICBwcmVwYXJlX2ZiKGltcG9ydGVyLCAmc2NyYXRjaCwgJmZiKTsKPiAr ICAgICAgICAgICAgICAgaW1wb3J0X2ZiKGltcG9ydGVyLCAmZmIsIGRtYWJ1Zl9mZCwgc2NyYXRj aC5waXRjaCk7Cj4gKyAgICAgICAgICAgICAgIGNsb3NlKGRtYWJ1Zl9mZCk7Cj4gKwo+ICsgICAg ICAgICAgICAgICBzZXRfZmIoJmZiLCAmZGlzcGxheSwgb3V0cHV0KTsKPiArICAgICAgICAgICAg ICAgaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKHBpcGVfY3JjLCAmY29sb3JzW2ldLnByaW1lX2Ny Yyk7Cj4gKyAgICAgICAgICAgICAgIGNvbG9yc1tpXS5wcmltZV9zdHIgPSBpZ3RfY3JjX3RvX3N0 cmluZygmY29sb3JzW2ldLnByaW1lX2NyYyk7CgpNYXliZSBJIG1pc3NlZCBzb21ldGhpbmcsIGJ1 dCBJIHRoaW5rIHlvdSBmb3Jnb3QgdG8gZnJlZSB0aGUgYnVmZmVyCmFsbG9jYXRlZCBieSBpZ3Rf Y3JjX3RvX3N0cmluZygpLgoKPiArICAgICAgICAgICAgICAgaWd0X2RlYnVnKCJQcmltZSBDUkMg Zm9yICUjMDh4IGlzICVzXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzW2ld LmNvbG9yLCBjb2xvcnNbaV0ucHJpbWVfc3RyKTsKPiArICAgICAgICAgICAgICAgaWd0X3JlbW92 ZV9mYihpbXBvcnRlciwgJmZiKTsKPiArCj4gKyAgICAgICAgICAgICAgIGlndF9jcmVhdGVfY29s b3JfZmIoaW1wb3J0ZXIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9k ZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzW2ldLnIsIGNvbG9y c1tpXS5nLCBjb2xvcnNbaV0uYiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmZmIpOwo+ICsKPiArICAgICAgICAgICAgICAgc2V0X2ZiKCZmYiwgJmRpc3BsYXksIG91dHB1 dCk7Cj4gKyAgICAgICAgICAgICAgIGlndF9waXBlX2NyY19jb2xsZWN0X2NyYyhwaXBlX2NyYywg JmNvbG9yc1tpXS5kaXJlY3RfY3JjKTsKPiArICAgICAgICAgICAgICAgY29sb3JzW2ldLmRpcmVj dF9zdHIgPSBpZ3RfY3JjX3RvX3N0cmluZygmY29sb3JzW2ldLmRpcmVjdF9jcmMpOwoKRGl0dG8u Cgo+ICsgICAgICAgICAgICAgICBpZ3RfZGVidWcoIkRpcmVjdCBDUkMgZm9yICUjMDh4IGlzICVz XG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JzW2ldLmNvbG9yLCBjb2xvcnNb aV0uZGlyZWN0X3N0cik7Cj4gKyAgICAgICAgICAgICAgIGlndF9yZW1vdmVfZmIoaW1wb3J0ZXIs ICZmYik7CgpIb3cgYWJvdXQgY3JlYXRpbmcgYSBzdGF0aWMgZnVuY3Rpb24gd2l0aCBhIG1lYW5p bmdmdWwgbmFtZSB0aGF0IG1ha2VzCnRoZSBmb2xsb3dpbmcgc3RlcHM6Cgogc2V0X2ZiKCkgLT4g aWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKCkgLT4gY29sb3JzW2ldKiAtPiBpZ3RfZGVidWcoKQot PiBpZ3RfcmVtb3ZlX2ZiKCkKClRoZSBhYm92ZSBzdGVwcyBhcmUgc2ltaWxhciBmb3IgJ3ByaW1l JyBhbmQgJ2RpcmVjdCcuIE1heWJlIGEgZnVuY3Rpb24KdGhhdCBvbmx5IGhhbmRsZXMgdGhlc2Ug c3RlcHMgbWFrZXMgaXQgZWFzeSB0byB1bmRlcnN0YW5kIHRoZSBjb2RlIGFuZAphbHNvIGltcHJv dmUgdGhlIG1haW50YWluYWJpbGl0eS4KCkJlc3QgcmVnYXJkcwoKPiArICAgICAgIH0KPiArICAg ICAgIGlndF9waXBlX2NyY19mcmVlKHBpcGVfY3JjKTsKPiArCj4gKyAgICAgICBpZ3RfZGVidWco IkNSQyB0YWJsZTpcbiIpOwo+ICsgICAgICAgaWd0X2RlYnVnKCJDb2xvclx0XHRQcmltZVx0XHRE aXJlY3RcbiIpOwo+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY29sb3JzKTsg aSsrKSB7Cj4gKyAgICAgICAgICAgICAgIGlndF9kZWJ1ZygiJSMwOHhcdCUuOHNcdCUuOHNcbiIs IGNvbG9yc1tpXS5jb2xvciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yc1tpXS5w cmltZV9zdHIsIGNvbG9yc1tpXS5kaXJlY3Rfc3RyKTsKPiArICAgICAgIH0KPiArCj4gKyAgICAg ICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb2xvcnMpOyBpKyspIHsKPiArICAgICAgICAg ICAgICAgZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUoY29sb3JzKTsgaisrKSB7Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gaikgewo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWd0X2Fzc2VydF9jcmNfZXF1YWwoJmNvbG9yc1tpXS5wcmltZV9jcmMsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29sb3Jz W2pdLmRpcmVjdF9jcmMpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmNfZXF1YWwgPSBpZ3RfY2hlY2tfY3JjX2Vx dWFsKCZjb2xvcnNbaV0ucHJpbWVfY3JjLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29sb3JzW2pdLmRpcmVjdF9jcmMp Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWd0X2Fzc2VydF9mKCFjcmNfZXF1 YWwsICJDUkMgc2hvdWxkIGJlIGRpZmZlcmVudCIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAg IH0KPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9p ZCBydW5fdGVzdF9jcmMoaW50IGV4cG9ydF9jaGlwc2V0LCBpbnQgaW1wb3J0X2NoaXBzZXQpCj4g K3sKPiArICAgICAgIGludCBpbXBvcnRlciA9IC0xOwo+ICsgICAgICAgaW50IGV4cG9ydGVyID0g LTE7Cj4gKwo+ICsgICAgICAgZXhwb3J0ZXIgPSBkcm1fb3Blbl9kcml2ZXIoZXhwb3J0X2NoaXBz ZXQpOwo+ICsgICAgICAgaW1wb3J0ZXIgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVyKGltcG9ydF9j aGlwc2V0KTsKPiArCj4gKyAgICAgICBpZ3RfcmVxdWlyZShoYXNfcHJpbWVfZXhwb3J0KGV4cG9y dGVyKSk7Cj4gKyAgICAgICBpZ3RfcmVxdWlyZShoYXNfcHJpbWVfaW1wb3J0KGltcG9ydGVyKSk7 Cj4gKyAgICAgICBpZ3RfcmVxdWlyZV9waXBlX2NyYyhpbXBvcnRlcik7Cj4gKwo+ICsgICAgICAg dGVzdF9jcmMoZXhwb3J0ZXIsIGltcG9ydGVyKTsKPiArICAgICAgIGNsb3NlKGltcG9ydGVyKTsK PiArICAgICAgIGNsb3NlKGV4cG9ydGVyKTsKPiArfQo+ICsKPiAraWd0X21haW4KPiArewo+ICsg ICAgICAgaWd0X2ZpeHR1cmUgewo+ICsgICAgICAgICAgICAgICBrbXN0ZXN0X3NldF92dF9ncmFw aGljc19tb2RlKCk7Cj4gKyAgICAgICB9Cj4gKyAgICAgICBpZ3Rfc3VidGVzdCgiY3JjLXZnZW0t dmttcyIpCj4gKyAgICAgICAgICAgICAgIHJ1bl90ZXN0X2NyYyhEUklWRVJfVkdFTSwgRFJJVkVS X1ZLTVMpOwo+ICsgICAgICAgaWd0X3N1YnRlc3QoImNyYy1pOTE1LXZrbXMiKQo+ICsgICAgICAg ICAgICAgICBydW5fdGVzdF9jcmMoRFJJVkVSX0lOVEVMLCBEUklWRVJfVktNUyk7Cj4gKyAgICAg ICBpZ3Rfc3VidGVzdCgiY3JjLXZnZW0taTkxNSIpCj4gKyAgICAgICAgICAgICAgIHJ1bl90ZXN0 X2NyYyhEUklWRVJfVkdFTSwgRFJJVkVSX0lOVEVMKTsKPiArICAgICAgIGlndF9zdWJ0ZXN0KCJj cmMtYW1kLWk5MTUiKQo+ICsgICAgICAgICAgICAgICBydW5fdGVzdF9jcmMoRFJJVkVSX0FNREdQ VSwgRFJJVkVSX0lOVEVMKTsKPiArICAgICAgIGlndF9zdWJ0ZXN0KCJjcmMtaTkxNS1hbWQiKQo+ ICsgICAgICAgICAgICAgICBydW5fdGVzdF9jcmMoRFJJVkVSX0lOVEVMLCBEUklWRVJfQU1ER1BV KTsKPiArfQo+IC0tCj4gMi4yMi4wCj4KCgotLSAKClJvZHJpZ28gU2lxdWVpcmEKaHR0cHM6Ly9z aXF1ZWlyYS50ZWNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==