From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id B14C289CBC for ; Fri, 12 Jul 2019 10:24:29 +0000 (UTC) From: "Ser, Simon" Date: Fri, 12 Jul 2019 10:24:26 +0000 Message-ID: <6e24f5e4b5f96e91cb309c0f74aa840a38f0679e.camel@intel.com> References: <20190704095604.16589-1-oleg.vasilev@intel.com> <20190704095604.16589-2-oleg.vasilev@intel.com> <20190710163542.GX15868@phenom.ffwll.local> <20190711171903.GP15868@phenom.ffwll.local> In-Reply-To: <20190711171903.GP15868@phenom.ffwll.local> Content-Language: en-US Content-ID: MIME-Version: 1.0 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: "daniel@ffwll.ch" Cc: "igt-dev@lists.freedesktop.org" List-ID: T24gVGh1LCAyMDE5LTA3LTExIGF0IDE5OjE5ICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOg0K PiBPbiBUaHUsIEp1bCAxMSwgMjAxOSBhdCAwMzoyMDo1MlBNICswMDAwLCBTZXIsIFNpbW9uIHdy b3RlOg0KPiA+IE9uIFRodSwgMjAxOS0wNy0xMSBhdCAxNDozNiArMDIwMCwgRGFuaWVsIFZldHRl ciB3cm90ZToNCj4gPiA+IE9uIFRodSwgSnVsIDExLCAyMDE5IGF0IDExOjA5IEFNIFZhc2lsZXYs IE9sZWcgPG9sZWcudmFzaWxldkBpbnRlbC5jb20+IHdyb3RlOg0KPiA+ID4gPiBPbiBXZWQsIDIw MTktMDctMTAgYXQgMTg6MzUgKzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6DQo+ID4gPiA+ID4g T24gVGh1LCBKdWwgMDQsIDIwMTkgYXQgMTI6NTY6MDRQTSArMDMwMCwgT2xlZyBWYXNpbGV2IHdy b3RlOg0KPiA+ID4gPiA+ID4gQ3VycmVudGx5LCB3ZSBoYXZlIGRpZmZlcmVudCBzZXRzIG9mIHBy aW1lIHRlc3RzOg0KPiA+ID4gPiA+ID4gIC0gdmdlbStpOTE1DQo+ID4gPiA+ID4gPiAgLSBhbWRn cHUraTkxNQ0KPiA+ID4gPiA+ID4gIC0gbnYraTkxNQ0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4g PiBUaG9zZSB0ZXN0cyB1c2UgdmVuZG9yLXNwZWNpZmljIGlvY3RscywgdGhlcmVmb3JlLCBub3QN Cj4gPiA+ID4gPiA+IGludGVyY2hhbmdlYWJsZS4NCj4gPiA+ID4gPiA+IFRoZSBpZGVhIGlzIHRv IGNyZWF0ZSBhIHNldCBvZiB0ZXN0cyB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gd29yayBvbg0KPiA+ ID4gPiA+ID4gYW55DQo+ID4gPiA+ID4gPiBwcmltZS1jb21wYXRpYmxlIGRyaXZlci4gSXQgY2Fu IGJlIHJ1biB3aXRoIGFueSBjb21iaW5hdGlvbiBvZg0KPiA+ID4gPiA+ID4gZXhwb3J0ZXIraW1w b3J0ZXIsIHdoZXJlDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IFRoZSBmaXJzdCB0ZXN0IGlz IHNpbXBsZToNCj4gPiA+ID4gPiA+IDEuIEV4cG9ydGVyIGNyZWF0ZXMgYSBmcmFtZWJ1ZmZlciBh bmQgZmlsbHMgaXQgd2l0aCBhIHBsYWluIGNvbG9yDQo+ID4gPiA+ID4gPiAyLiBGYiBpcyB0cmFu c2ZlcnJlZCB0byB0aGUgaW1wb3J0ZXINCj4gPiA+ID4gPiA+IDMuIEltcG9ydGVyIG1vZGVzZXRz IGFuZCBjb21wdXRlcyBwaXBlIENSQw0KPiA+ID4gPiA+ID4gNC4gSW1wb3J0ZXIgZHJhd3MgdGhl IHNhbWUgY29sb3IgdGhyb3VnaCBjYWlybyBhbmQgY29tcGFyZXMgQ1JDDQo+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+IFRoZSBpbml0aWFsIG1vdGl2YXRpb24gY29tZXMgZnJvbSB0aGUgbmVlZCB0 byB0ZXN0IHByaW1lIHN1cHBvcnQgaW4NCj4gPiA+ID4gPiA+IHZrbXMuDQo+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+IENjOiBSb2RyaWdvIFNpcXVlaXJhIDxyb2RyaWdvc2lxdWVpcmFtZWxvQGdt YWlsLmNvbT4NCj4gPiA+ID4gPiA+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+ DQo+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBPbGVnIFZhc2lsZXYgPG9sZWcudmFzaWxldkBp bnRlbC5jb20+DQo+ID4gPiA+ID4gPiAtLS0NCj4gPiA+ID4gPiA+ICB0ZXN0cy9tZXNvbi5idWls ZCAgICAgfCAgIDEgKw0KPiA+ID4gPiA+ID4gIHRlc3RzL3ByaW1lX2dlbmVyaWMuYyB8IDIzOA0K PiA+ID4gPiA+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ ID4gPiA+ID4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAyMzkgaW5zZXJ0aW9ucygrKQ0KPiA+ID4gPiA+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9wcmltZV9nZW5lcmljLmMNCj4gPiA+ID4gPiA+ IA0KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVz b24uYnVpbGQNCj4gPiA+ID4gPiA+IGluZGV4IDM0YTc0MDI1Li4xYzkzOGU5NSAxMDA2NDQNCj4g PiA+ID4gPiA+IC0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkDQo+ID4gPiA+ID4gPiArKysgYi90ZXN0 cy9tZXNvbi5idWlsZA0KPiA+ID4gPiA+ID4gQEAgLTc2LDYgKzc2LDcgQEAgdGVzdF9wcm9ncyA9 IFsNCj4gPiA+ID4gPiA+ICAgICAncHJpbWVfc2VsZl9pbXBvcnQnLA0KPiA+ID4gPiA+ID4gICAg ICdwcmltZV91ZGwnLA0KPiA+ID4gPiA+ID4gICAgICdwcmltZV92Z2VtJywNCj4gPiA+ID4gPiA+ ICsgICAncHJpbWVfZ2VuZXJpYycsDQo+ID4gPiA+ID4gPiAgICAgJ3N5bmNvYmpfYmFzaWMnLA0K PiA+ID4gPiA+ID4gICAgICdzeW5jb2JqX3dhaXQnLA0KPiA+ID4gPiA+ID4gICAgICd0ZW1wbGF0 ZScsDQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMvcHJpbWVfZ2VuZXJpYy5jIGIvdGVz dHMvcHJpbWVfZ2VuZXJpYy5jDQo+ID4gPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ ID4gPiA+ID4gaW5kZXggMDAwMDAwMDAuLjY1ZTQ4NzYzDQo+ID4gPiA+ID4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gPiA+ID4gPiArKysgYi90ZXN0cy9wcmltZV9nZW5lcmljLmMNCj4gPiA+ID4gPiA+ IEBAIC0wLDAgKzEsMjM4IEBADQo+ID4gPiA+ID4gPiArLyoNCj4gPiA+ID4gPiA+ICsgKiBDb3B5 cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbg0KPiA+ID4gPiA+ID4gKyAqDQo+ID4gPiA+ ID4gPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv IGFueSBwZXJzb24NCj4gPiA+ID4gPiA+IG9idGFpbmluZyBhDQo+ID4gPiA+ID4gPiArICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZQ0KPiA+ID4gPiA+ID4gIlNvZnR3YXJlIiksDQo+ID4gPiA+ID4gPiArICogdG8gZGVhbCBpbiB0 aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQNCj4gPiA+ ID4gPiA+IGxpbWl0YXRpb24NCj4gPiA+ID4gPiA+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwNCj4gPiA+ID4gPiA+IHN1Ymxp Y2Vuc2UsDQo+ID4gPiA+ID4gPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvDQo+ID4gPiA+ID4gPiB3aG9tIHRoZQ0KPiA+ID4g PiA+ID4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nDQo+ID4gPiA+ID4gPiBjb25kaXRpb25zOg0KPiA+ID4gPiA+ID4gKyAqDQo+ID4g PiA+ID4gPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv biBub3RpY2UNCj4gPiA+ID4gPiA+IChpbmNsdWRpbmcgdGhlIG5leHQNCj4gPiA+ID4gPiA+ICsg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwNCj4gPiA+ID4gPiA+IHBvcnRpb25zIG9mIHRoZQ0KPiA+ID4gPiA+ID4gKyAqIFNvZnR3YXJl Lg0KPiA+ID4gPiA+ID4gKyAqDQo+ID4gPiA+ID4gPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsDQo+ID4gPiA+ID4gPiBF WFBSRVNTIE9SDQo+ID4gPiA+ID4gPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRg0KPiA+ID4gPiA+ID4gTUVSQ0hBTlRBQklMSVRZLA0K PiA+ID4gPiA+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTw0KPiA+ID4gPiA+ID4gRVZFTlQgU0hBTEwNCj4gPiA+ID4gPiA+ ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwNCj4gPiA+ID4gPiA+IERBTUFHRVMgT1IgT1RIRVINCj4gPiA+ID4gPiA+ICsgKiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwNCj4gPiA+ID4gPiA+IEFSSVNJTkcNCj4gPiA+ID4gPiA+ICsgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SDQo+ID4gPiA+ID4g PiBPVEhFUiBERUFMSU5HUw0KPiA+ID4gPiA+ID4gKyAqIElOIFRIRSBTT0ZUV0FSRS4NCj4gPiA+ ID4gPiA+ICsgKi8NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsjaW5jbHVkZSAiaWd0Lmgi DQo+ID4gPiA+ID4gPiArI2luY2x1ZGUgImlndF92Z2VtLmgiDQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiArI2luY2x1ZGUgPHN5cy9pb2N0bC5oPg0KPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDxz eXMvcG9sbC5oPg0KPiA+ID4gPiA+ID4gKyNpbmNsdWRlIDx0aW1lLmg+DQo+ID4gPiA+ID4gPiAr DQo+ID4gPiA+ID4gPiArc3RhdGljIHN0cnVjdCB7DQo+ID4gPiA+ID4gPiArICAgZG91YmxlIHIs IGcsIGI7DQo+ID4gPiA+ID4gPiArICAgdWludDMyX3QgY29sb3I7DQo+ID4gPiA+ID4gPiArICAg aWd0X2NyY190IHByaW1lX2NyYzsNCj4gPiA+ID4gPiA+ICsgICBpZ3RfY3JjX3QgZGlyZWN0X2Ny YzsNCj4gPiA+ID4gPiA+ICsgICBjaGFyICpwcmltZV9zdHI7DQo+ID4gPiA+ID4gPiArICAgY2hh ciAqZGlyZWN0X3N0cjsNCj4gPiA+ID4gPiA+ICt9IGNvbG9yc1szXSA9IHsNCj4gPiA+ID4gPiA+ ICsgICB7IC5yID0gMC4wLCAuZyA9IDAuMCwgLmIgPSAwLjAsIC5jb2xvciA9IDB4ZmYwMDAwMDB9 LA0KPiA+ID4gPiA+ID4gKyAgIHsgLnIgPSAxLjAsIC5nID0gMS4wLCAuYiA9IDEuMCwgLmNvbG9y ID0gMHhmZmZmZmZmZn0sDQo+ID4gPiA+ID4gPiArICAgeyAuciA9IDEuMCwgLmcgPSAwLjAsIC5i ID0gMC4wLCAuY29sb3IgPSAweGZmZmYwMDAwfSwNCj4gPiA+ID4gPiA+ICt9Ow0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gK0lHVF9URVNUX0RFU0NSSVBUSU9OKCJHZW5lcmljIHRlc3RzLCB3 b3JraW5nIHdpdGggYW55IHByaW1lDQo+ID4gPiA+ID4gPiBkZXZpY2UiKTsNCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICtzdGF0aWMgYm9vbCBoYXNfcHJpbWVfaW1wb3J0KGludCBmZCkNCj4g PiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiArICAgdWludDY0X3QgdmFsdWU7DQo+ID4gPiA+ID4g PiArDQo+ID4gPiA+ID4gPiArICAgaWYgKGRybUdldENhcChmZCwgRFJNX0NBUF9QUklNRSwgJnZh bHVlKSkNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgIHJldHVybiBmYWxzZTsNCj4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ICsgICByZXR1cm4gdmFsdWUgJiBEUk1fUFJJTUVfQ0FQX0lNUE9SVDsN Cj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArc3RhdGljIGJvb2wg aGFzX3ByaW1lX2V4cG9ydChpbnQgZmQpDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAg IHVpbnQ2NF90IHZhbHVlOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgIGlmIChkcm1H ZXRDYXAoZmQsIERSTV9DQVBfUFJJTUUsICZ2YWx1ZSkpDQo+ID4gPiA+ID4gPiArICAgICAgICAg ICByZXR1cm4gZmFsc2U7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgcmV0dXJuIHZh bHVlICYgRFJNX1BSSU1FX0NBUF9FWFBPUlQ7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIHByZXBhcmVfc2NyYXRjaChpbnQgZXhwb3J0ZXIs IHN0cnVjdCB2Z2VtX2JvICpzY3JhdGNoLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgZHJtTW9kZU1vZGVJbmZvICptb2RlLCB1aW50MzJfdCBjb2xvcikNCj4gPiA+ID4gPiA+ ICt7DQo+ID4gPiA+ID4gPiArICAgaW50IGk7DQo+ID4gPiA+ID4gPiArICAgdWludDMyX3QgKnB0 cjsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICBzY3JhdGNoLT53aWR0aCA9IG1vZGUt PmhkaXNwbGF5Ow0KPiA+ID4gPiA+ID4gKyAgIHNjcmF0Y2gtPmhlaWdodCA9IG1vZGUtPnZkaXNw bGF5Ow0KPiA+ID4gPiA+ID4gKyAgIHNjcmF0Y2gtPmJwcCA9IDMyOw0KPiA+ID4gPiA+ID4gKyAg IHZnZW1fY3JlYXRlKGV4cG9ydGVyLCBzY3JhdGNoKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsgICBwdHIgPSB2Z2VtX21tYXAoZXhwb3J0ZXIsIHNjcmF0Y2gsIFBST1RfV1JJVEUpOw0K PiA+ID4gPiA+ID4gKyAgIGZvciAoaSA9IDA7IGkgPCBzY3JhdGNoLT5zaXplIC8gc2l6ZW9mKCpw dHIpOyArK2kpDQo+ID4gPiA+ID4gPiArICAgICAgICAgICBwdHJbaV0gPSBjb2xvcjsNCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICBtdW5tYXAocHRyLCBzY3JhdGNoLT5zaXplKTsNCj4g PiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArc3RhdGljIHZvaWQgcHJl cGFyZV9mYihpbnQgaW1wb3J0ZXIsIHN0cnVjdCB2Z2VtX2JvICpzY3JhdGNoLA0KPiA+ID4gPiA+ ID4gc3RydWN0IGlndF9mYiAqZmIpDQo+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gKyAgIGVu dW0gaWd0X2NvbG9yX2VuY29kaW5nIGNvbG9yX2VuY29kaW5nID0gSUdUX0NPTE9SX1lDQkNSX0JU NzA5Ow0KPiA+ID4gPiA+ID4gKyAgIGVudW0gaWd0X2NvbG9yX3JhbmdlIGNvbG9yX3JhbmdlID0N Cj4gPiA+ID4gPiA+IElHVF9DT0xPUl9ZQ0JDUl9MSU1JVEVEX1JBTkdFOw0KPiA+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ID4gKyAgIGlndF9pbml0X2ZiKGZiLCBpbXBvcnRlciwgc2NyYXRjaC0+d2lk dGgsIHNjcmF0Y2gtPmhlaWdodCwNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBEUk1fRk9S TUFUX1hSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLA0KPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgIGNvbG9yX2VuY29kaW5nLCBjb2xvcl9yYW5nZSk7DQo+ID4gPiA+ID4gPiAr fQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIGltcG9ydF9mYihpbnQg aW1wb3J0ZXIsIHN0cnVjdCBpZ3RfZmIgKmZiLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgaW50IGRtYWJ1Zl9mZCwgdWludDMyX3QgcGl0Y2gpDQo+ID4gPiA+ID4gPiArew0KPiA+ID4g PiA+ID4gKyAgIHVpbnQzMl90IG9mZnNldHNbNF0sIHBpdGNoZXNbNF0sIGhhbmRsZXNbNF07DQo+ ID4gPiA+ID4gPiArICAgaW50IHJldDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICBm Yi0+Z2VtX2hhbmRsZSA9IHByaW1lX2ZkX3RvX2hhbmRsZShpbXBvcnRlciwgZG1hYnVmX2ZkKTsN Cj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICBoYW5kbGVzWzBdID0gZmItPmdlbV9oYW5k bGU7DQo+ID4gPiA+ID4gPiArICAgcGl0Y2hlc1swXSA9IHBpdGNoOw0KPiA+ID4gPiA+ID4gKyAg IG9mZnNldHNbMF0gPSAwOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgIHJldCA9IGRy bU1vZGVBZGRGQjIoaW1wb3J0ZXIsIGZiLT53aWR0aCwgZmItPmhlaWdodCwNCj4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsDQo+ID4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVzLCBwaXRjaGVzLCBvZmZzZXRzLA0KPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgJmZiLT5mYl9pZCwgMCk7DQo+ID4gPiA+ ID4gPiArICAgaWd0X2Fzc2VydChyZXQgPT0gMCk7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIHNldF9mYihzdHJ1Y3QgaWd0X2ZiICpmYiwN Cj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgIGlndF9kaXNwbGF5X3QgKmRpc3BsYXksDQo+ID4g PiA+ID4gPiArICAgICAgICAgICAgICBpZ3Rfb3V0cHV0X3QgKm91dHB1dCkNCj4gPiA+ID4gPiA+ ICt7DQo+ID4gPiA+ID4gPiArICAgaWd0X3BsYW5lX3QgKnByaW1hcnk7DQo+ID4gPiA+ID4gPiAr ICAgaW50IHJldDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICBwcmltYXJ5ID0gaWd0 X291dHB1dF9nZXRfcGxhbmUob3V0cHV0LCAwKTsNCj4gPiA+ID4gPiA+ICsgICBpZ3RfcGxhbmVf c2V0X2ZiKHByaW1hcnksIGZiKTsNCj4gPiA+ID4gPiA+ICsgICByZXQgPSBpZ3RfZGlzcGxheV9j b21taXQoZGlzcGxheSk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAgaWd0X2Fzc2Vy dChyZXQgPT0gMCk7DQo+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4g K3N0YXRpYyB2b2lkIHRlc3RfY3JjKGludCBleHBvcnRlciwgaW50IGltcG9ydGVyKQ0KPiA+ID4g PiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgICBlbnVtIHBpcGUgcGlwZSA9IFBJUEVfQTsNCj4gPiA+ ID4gPiA+ICsgICBpZ3RfZGlzcGxheV90IGRpc3BsYXk7DQo+ID4gPiA+ID4gPiArICAgaWd0X291 dHB1dF90ICpvdXRwdXQ7DQo+ID4gPiA+ID4gPiArICAgaWd0X3BpcGVfY3JjX3QgKnBpcGVfY3Jj Ow0KPiA+ID4gPiA+ID4gKyAgIHN0cnVjdCBpZ3RfZmIgZmI7DQo+ID4gPiA+ID4gPiArICAgaW50 IGRtYWJ1Zl9mZDsNCj4gPiA+ID4gPiA+ICsgICBzdHJ1Y3QgdmdlbV9ibyBzY3JhdGNoOyAvKiBk ZXNwaXRlIHRoZSBuYW1lLCBpdCBzdWl0cyBmb3IgYW55DQo+ID4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ2VtLWNvbXBhdGlibGUgZGV2aWNlICovDQo+ID4gPiA+ID4g PiArICAgaW50IGksIGo7DQo+ID4gPiA+ID4gPiArICAgZHJtTW9kZU1vZGVJbmZvICptb2RlOw0K PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgIGJvb2wgY3JjX2VxdWFsOw0KPiA+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ID4gKyAgIGlndF9kaXNwbGF5X3JlcXVpcmUoJmRpc3BsYXksIGltcG9y dGVyKTsNCj4gPiA+ID4gPiA+ICsgICBpZ3Rfc2tpcF9vbihwaXBlID49IGRpc3BsYXkubl9waXBl cyk7DQo+ID4gPiA+ID4gPiArICAgb3V0cHV0ID0gaWd0X2dldF9zaW5nbGVfb3V0cHV0X2Zvcl9w aXBlKCZkaXNwbGF5LCBwaXBlKTsNCj4gPiA+ID4gPiA+ICsgICBpZ3RfcmVxdWlyZV9mKG91dHB1 dCwgIk5vIGNvbm5lY3RvciBmb3VuZCBmb3IgcGlwZSAlc1xuIiwNCj4gPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKTsNCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsgICBpZ3RfZGlzcGxheV9yZXNldCgmZGlzcGxheSk7DQo+ID4gPiA+ID4gPiAr ICAgaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyAgIG1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7DQo+ID4gPiA+ ID4gPiArICAgcGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGltcG9ydGVyLCBwaXBlLA0KPiA+ ID4gPiA+ID4gSU5URUxfUElQRV9DUkNfU09VUkNFX0FVVE8pOw0KPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gKyAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNvbG9ycyk7IGkrKykgew0K PiA+ID4gPiA+ID4gKyAgICAgICAgICAgcHJlcGFyZV9zY3JhdGNoKGV4cG9ydGVyLCAmc2NyYXRj aCwgbW9kZSwNCj4gPiA+ID4gPiA+IGNvbG9yc1tpXS5jb2xvcik7DQo+ID4gPiA+ID4gPiArICAg ICAgICAgICBkbWFidWZfZmQgPSBwcmltZV9oYW5kbGVfdG9fZmQoZXhwb3J0ZXIsDQo+ID4gPiA+ ID4gPiBzY3JhdGNoLmhhbmRsZSk7DQo+ID4gPiA+ID4gPiArICAgICAgICAgICBnZW1fY2xvc2Uo ZXhwb3J0ZXIsIHNjcmF0Y2guaGFuZGxlKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsg ICAgICAgICAgIHByZXBhcmVfZmIoaW1wb3J0ZXIsICZzY3JhdGNoLCAmZmIpOw0KPiA+ID4gPiA+ ID4gKyAgICAgICAgICAgaW1wb3J0X2ZiKGltcG9ydGVyLCAmZmIsIGRtYWJ1Zl9mZCwgc2NyYXRj aC5waXRjaCk7DQo+ID4gPiA+ID4gPiArICAgICAgICAgICBjbG9zZShkbWFidWZfZmQpOw0KPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgc2V0X2ZiKCZmYiwgJmRpc3BsYXks IG91dHB1dCk7DQo+ID4gPiA+ID4gPiArICAgICAgICAgICBpZ3RfcGlwZV9jcmNfY29sbGVjdF9j cmMocGlwZV9jcmMsDQo+ID4gPiA+ID4gPiAmY29sb3JzW2ldLnByaW1lX2NyYyk7DQo+ID4gPiA+ ID4gPiArICAgICAgICAgICBjb2xvcnNbaV0ucHJpbWVfc3RyID0NCj4gPiA+ID4gPiA+IGlndF9j cmNfdG9fc3RyaW5nKCZjb2xvcnNbaV0ucHJpbWVfY3JjKTsNCj4gPiA+ID4gPiA+ICsgICAgICAg ICAgIGlndF9kZWJ1ZygiUHJpbWUgQ1JDIGZvciAlIzA4eCBpcyAlc1xuIiwNCj4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICBjb2xvcnNbaV0uY29sb3IsIGNvbG9yc1tpXS5wcmltZV9z dHIpOw0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgaWd0X3JlbW92ZV9mYihpbXBvcnRlciwgJmZi KTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgIGlndF9jcmVhdGVfY29s b3JfZmIoaW1wb3J0ZXIsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwNCj4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwNCj4gPiA+ID4gPiA+ IExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsDQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbG9yc1tpXS5yLCBjb2xvcnNbaV0uZywNCj4gPiA+ID4gPiA+IGNv bG9yc1tpXS5iLA0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm ZmIpOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgc2V0X2ZiKCZmYiwg JmRpc3BsYXksIG91dHB1dCk7DQo+ID4gPiA+ID4gPiArICAgICAgICAgICBpZ3RfcGlwZV9jcmNf Y29sbGVjdF9jcmMocGlwZV9jcmMsDQo+ID4gPiA+ID4gPiAmY29sb3JzW2ldLmRpcmVjdF9jcmMp Ow0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgY29sb3JzW2ldLmRpcmVjdF9zdHIgPQ0KPiA+ID4g PiA+ID4gaWd0X2NyY190b19zdHJpbmcoJmNvbG9yc1tpXS5kaXJlY3RfY3JjKTsNCj4gPiA+ID4g PiA+ICsgICAgICAgICAgIGlndF9kZWJ1ZygiRGlyZWN0IENSQyBmb3IgJSMwOHggaXMgJXNcbiIs DQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgY29sb3JzW2ldLmNvbG9yLCBjb2xv cnNbaV0uZGlyZWN0X3N0cik7DQo+ID4gPiA+ID4gPiArICAgICAgICAgICBpZ3RfcmVtb3ZlX2Zi KGltcG9ydGVyLCAmZmIpOw0KPiA+ID4gPiA+ID4gKyAgIH0NCj4gPiA+ID4gPiA+ICsgICBpZ3Rf cGlwZV9jcmNfZnJlZShwaXBlX2NyYyk7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArICAg aWd0X2RlYnVnKCJDUkMgdGFibGU6XG4iKTsNCj4gPiA+ID4gPiA+ICsgICBpZ3RfZGVidWcoIkNv bG9yXHRcdFByaW1lXHRcdERpcmVjdFxuIik7DQo+ID4gPiA+ID4gPiArICAgZm9yIChpID0gMDsg aSA8IEFSUkFZX1NJWkUoY29sb3JzKTsgaSsrKSB7DQo+ID4gPiA+ID4gPiArICAgICAgICAgICBp Z3RfZGVidWcoIiUjMDh4XHQlLjhzXHQlLjhzXG4iLCBjb2xvcnNbaV0uY29sb3IsDQo+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgY29sb3JzW2ldLnByaW1lX3N0ciwgY29sb3JzW2ld LmRpcmVjdF9zdHIpOw0KPiA+ID4gPiA+ID4gKyAgIH0NCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ICsgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb2xvcnMpOyBpKyspIHsNCj4gPiA+ ID4gPiA+ICsgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBBUlJBWV9TSVpFKGNvbG9ycyk7IGor Kykgew0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSBqKSB7DQo+ID4g PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgaWd0X2Fzc2VydF9jcmNfZXF1YWwo JmNvbG9yc1tpXS5wcmltZV9jDQo+ID4gPiA+ID4gPiByYywNCj4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29sb3JzW2pdLmRpcmVj dF8NCj4gPiA+ID4gPiA+IGNyYyk7DQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgIH0g ZWxzZSB7DQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JjX2VxdWFs ID0NCj4gPiA+ID4gPiA+IGlndF9jaGVja19jcmNfZXF1YWwoJmNvbG9yc1tpXS5wcmltZV9jcmMs DQo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmY29sb3JzDQo+ID4gPiA+ID4gPiBbal0uZGlyZWN0X2NyYyk7DQo+ ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgaWd0X2Fzc2VydF9mKCFjcmNf ZXF1YWwsICJDUkMgc2hvdWxkIGJlDQo+ID4gPiA+ID4gPiBkaWZmZXJlbnQiKTsNCj4gPiA+ID4g PiA+ICsgICAgICAgICAgICAgICAgICAgfQ0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgfQ0KPiA+ ID4gPiA+ID4gKyAgIH0NCj4gPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4g PiArc3RhdGljIHZvaWQgcnVuX3Rlc3RfY3JjKGludCBleHBvcnRfY2hpcHNldCwgaW50IGltcG9y dF9jaGlwc2V0KQ0KPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ICsgICBpbnQgaW1wb3J0ZXIg PSAtMTsNCj4gPiA+ID4gPiA+ICsgICBpbnQgZXhwb3J0ZXIgPSAtMTsNCj4gPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiA+ICsgICBleHBvcnRlciA9IGRybV9vcGVuX2RyaXZlcihleHBvcnRfY2hpcHNl dCk7DQo+ID4gPiA+ID4gPiArICAgaW1wb3J0ZXIgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVyKGlt cG9ydF9jaGlwc2V0KTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICBpZ3RfcmVxdWly ZShoYXNfcHJpbWVfZXhwb3J0KGV4cG9ydGVyKSk7DQo+ID4gPiA+ID4gPiArICAgaWd0X3JlcXVp cmUoaGFzX3ByaW1lX2ltcG9ydChpbXBvcnRlcikpOw0KPiA+ID4gPiA+ID4gKyAgIGlndF9yZXF1 aXJlX3BpcGVfY3JjKGltcG9ydGVyKTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgICB0 ZXN0X2NyYyhleHBvcnRlciwgaW1wb3J0ZXIpOw0KPiA+ID4gPiA+ID4gKyAgIGNsb3NlKGltcG9y dGVyKTsNCj4gPiA+ID4gPiA+ICsgICBjbG9zZShleHBvcnRlcik7DQo+ID4gPiA+ID4gPiArfQ0K PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gK2lndF9tYWluDQo+ID4gPiA+ID4gPiArew0KPiA+ ID4gPiA+ID4gKyAgIGlndF9maXh0dXJlIHsNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgIGttc3Rl c3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsNCj4gPiA+ID4gPiA+ICsgICB9DQo+ID4gPiA+ID4g PiArICAgaWd0X3N1YnRlc3QoImNyYy12Z2VtLXZrbXMiKQ0KPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgcnVuX3Rlc3RfY3JjKERSSVZFUl9WR0VNLCBEUklWRVJfVktNUyk7DQo+ID4gPiA+ID4gPiAr ICAgaWd0X3N1YnRlc3QoImNyYy1pOTE1LXZrbXMiKQ0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAg cnVuX3Rlc3RfY3JjKERSSVZFUl9JTlRFTCwgRFJJVkVSX1ZLTVMpOw0KPiA+ID4gPiA+ID4gKyAg IGlndF9zdWJ0ZXN0KCJjcmMtdmdlbS1pOTE1IikNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgIHJ1 bl90ZXN0X2NyYyhEUklWRVJfVkdFTSwgRFJJVkVSX0lOVEVMKTsNCj4gPiA+ID4gPiA+ICsgICBp Z3Rfc3VidGVzdCgiY3JjLWFtZC1pOTE1IikNCj4gPiA+ID4gPiA+ICsgICAgICAgICAgIHJ1bl90 ZXN0X2NyYyhEUklWRVJfQU1ER1BVLCBEUklWRVJfSU5URUwpOw0KPiA+ID4gPiA+ID4gKyAgIGln dF9zdWJ0ZXN0KCJjcmMtaTkxNS1hbWQiKQ0KPiA+ID4gPiA+ID4gKyAgICAgICAgICAgcnVuX3Rl c3RfY3JjKERSSVZFUl9JTlRFTCwgRFJJVkVSX0FNREdQVSk7DQo+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gVGhpcyBpc24ndCBhbnkgbW9yZSBnZW5lcmljIHRoYW4gd2hhdCB3ZSBoYXZlIGUuZy4gaW4g cHJpbWVfdmdlbQ0KPiA+ID4gPiA+IGFscmVhZHkuDQo+ID4gPiA+IA0KPiA+ID4gPiBIZXJlIG5v bi1nZW5lcmljIHBhcnQgaXMgb25seSB0aG9zZSAxMCBsaW5lcyBvZiBzdWJ0ZXN0cyBkZWZpbml0 aW9ucy4NCj4gPiA+ID4gVGhlIHJlc3QgaXMgY29tbW9uIGNvZGUuDQo+ID4gPiA+IA0KPiA+ID4g PiBJIGd1ZXNzLCB0aGlzIHNlcGFyYXRlIHN1YnRlc3QgZGVmaW5pdGlvbnMgY2FuIGRvY3VtZW50 IHRoZSBkZXZpY2UNCj4gPiA+ID4gcGFpcnMgdGhlIHRlc3QgaXMgZXhwZWN0ZWQgdG8gd29yayAr IHdlIGNhbiBibGFja2xpc3QgdGVzdHMgd2hpY2ggd2UNCj4gPiA+ID4gZG9uJ3QgaGF2ZSB0aGUg aGFyZHdhcmUgZm9yLg0KPiA+ID4gDQo+ID4gPiBCdXQgd2UgYWxyZWFkeSBoYXZlIHRlc3RzIGZv ciBzcGVjaWZpYyBwYWlycywgd2hpY2ggY2FuIGFsc28gdGVzdA0KPiA+ID4gc3BlY2lmaWMgc3R1 ZmYuIEluIGdlbmVyYWwgd2UgZG9uJ3QgZG8gdGVzdHMgd2l0aCAtZ2VuOSwgZ2VuMTEsIC1nZW44 DQo+ID4gPiBwcmVmaXhlcyBlaXRoZXIuIFRoaXMgaGVyZSB3b3VsZCBiZSBhIGZpcnN0IEknZCBz YXkuDQo+ID4gPiANCj4gPiA+ID4gPiBUaGUgd2F5IHRvIGRvIGEgZ2VuZXJpYyBrbXMgdGVzdGNh c2UgaXMgdG8gdXNlIERSSVZFUl9BTlkgKHllcyBzb21lDQo+ID4gPiA+ID4gb2YgdGhlDQo+ID4g PiA+ID4gZWFybGllciBjb252ZXJzaW9uIHVuZm9ydHVuYXRlbHkgdXNlZCBzdHVmZiBsaWtlIERS SVZFUl9JTlRFTCB8DQo+ID4gPiA+ID4gRFJJVkVSX0FNREdQVSkuIFdpdGggdGhhdCB5b3UgYWxz byBkb24ndCBuZWVkIHlvdXIgbGlicmFyeSBwcmVwDQo+ID4gPiA+ID4gcGF0Y2gsDQo+ID4gPiA+ ID4gYmVjYXVzZSBubyBuZWVkIGZvciBhIERSSVZFUl9WS01TLg0KPiA+ID4gPiANCj4gPiA+ID4g QnV0IGhvdyBjYW4gd2Ugb3BlbiB0d28gZGlmZmVyZW50IGRldmljZXMgd2l0aCBEUklWRVJfQU5Z PyBJZiBJIHB1dA0KPiA+ID4gPiANCj4gPiA+ID4gZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVS X0FOWSkNCj4gPiA+ID4gZmQyID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9BTlkpDQo+ID4gPiA+ IA0KPiA+ID4gPiBJIGdldCB0aGUgc2FtZSBkZXZpY2Ugb3BlbmVkIHR3byB0aW1lcywgZG8gST8N Cj4gPiA+IA0KPiA+ID4gT25lIG9mIHRoZW0gd291bGQgYmUgRFJJVkVSX1ZHRU0uIEFuZCBJIHRo aW5rIHdlIGFscmVhZHkgbWFrZSBzdXJlDQo+ID4gPiB0aGF0IHlvdSBkb24ndCBhY2NpZGVudGFs bHkgZ2V0IHZnZW0gZm9yIERSSVZFUl9BTlkuIE90aGVyd2lzZSBJIGd1ZXNzDQo+ID4gPiB3ZSdk IG5lZWQgYSBEUklWRVJfQU5ZX0JVVF9WR0VNLiBXZWxsIHJlYWxseSB3aGF0IHdlIHdhbnQgaXMN Cj4gPiA+IERSSVZFUl9BTllfS01TIGhlcmUsIHdoaWNoIHdvdWxkIGFsc28gZXhjbHVkZSB2Z2Vt LiBTbyBpZiBpdCBkb2Vzbid0DQo+ID4gPiB3b3JrIGFscmVhZHksIHNtYWxsIHBhdGNoIG5lZWRl ZCBpbiBsaWIvLCBidXQgRFJJVkVSX1ZLTVMgYWxzbyBuZWVkcw0KPiA+ID4gdGhhdC4gQW5kIEkg cmVhbGx5IGRvbid0IHdhbnQgbW9yZSBEUklWRVJfRk9PIGRlZmluZXMgZm9yIGEgcGxhaW4gb2xk DQo+ID4gPiBrbXMtb25seSBkcml2ZXIuIGttcyBpcyBzdXBwb3NlZCB0byBiZSBhIHNoYXJlZCBj cm9zcy1kcml2ZXIgc3RhbmRhcmQsDQo+ID4gPiBpZiB3ZSBjYW4ndCBldmVuIHdyaXRlIHNoYXJl ZCB0ZXN0Y2FzZXMgaXQncyBqdXN0IGVwaWMgZmFpbCA6LSkNCj4gPiA+IA0KPiA+ID4gPiA+IElt byBiZXN0IHRvIHN0YXJ0IG91dCBieSBjb252ZXJ0aW5nIHByaW1lX3ZnZW0uYyBmb3IgdGhpcywg YW5kIGFkZGluZw0KPiA+ID4gPiA+IGZvcg0KPiA+ID4gPiA+IHRoZSBpOTE1IHNwZWNpZmljIHRl c3RzIChidXQgX29ubHlfIGZvciB0aG9zZSkgYSBzcGVjaWZpYyAiaXMgdGhpcw0KPiA+ID4gPiA+ IGk5MTUiDQo+ID4gPiA+ID4gY2hlY2ssIHNvIHdlIHNraXAgdGhvc2UgdGVzdHMuIEFuZCByZXBs YWNlIERSSVZFUl9JTlRFTCBieQ0KPiA+ID4gPiA+IERSSVZFUl9BTlkuDQo+ID4gPiA+ID4gV2Vs bCwgYW55dGhpbmcgZXhjZXB0IHZnZW0gOi0pDQo+ID4gPiA+IA0KPiA+ID4gPiBJZiBJIGFtIG5v dCBtaXN0YWtlbiwgYWxsIHRlc3RzIGluIHByaW1lX3ZnZW0gYXJlIGludGVsLXNwZWNpZmljIDpE DQo+ID4gPiA+IA0KPiA+ID4gPiBTb21lIGlkZWFzIGNhbiBiZSB0YWtlbiBmcm9tIGl0LCBidXQg YW55d2F5LCBpdCBwcm9iYWJseSBuZWVkcyBhIGRlZXANCj4gPiA+ID4gcmV3cml0ZS4NCj4gPiA+ ID4gDQo+ID4gPiA+IEFuZCBwcmltZV92Z2VtIHVzZSBvbmx5IHZnZW0gYXMgYW4gZXhwb3J0ZXIg ZGV2aWNlLiBIZXJlIHdlIGNhbiB1c2UgYW55DQo+ID4gPiA+IGRldmljZS4gU3VyZSwgc29tZSB0 ZXN0cyB3b3VsZCBldmVudHVhbGx5IHVzZSB2Z2VtLXNwZWNpZmljIGZlYXR1cmVzLA0KPiA+ID4g PiBidXQgc29tZSBjb3VsZCByZW1haW4gbW9yZSBnZW5lcmljLg0KPiA+ID4gDQo+ID4gPiBNYXli ZSBJIHdhc24ndCBhbGwgdGhhdCBjbGVhciB0aGVuLCBJIHRoaW5rIHdoYXQgd2Ugd2FudCB0byB0 ZXN0IGluIGENCj4gPiA+IGdlbmVyaWMgcHJpbWUgdGVzdCBpcyB2Z2VtK0RSSVZFUl9BTllfS01T LiBUaGVuIGRyaXZlcnMgY2FuIHRlc3QgdGhlDQo+ID4gPiByZW5kZXIgc2lkZSB1c2luZyBEUklW RVJfRk9PK3ZnZW0uIFRoaXMgd2F5IHlvdSBvbmx5IG5lZWQgdG8gaGF2ZSAxDQo+ID4gPiBnZW5l cmljIGttcyB0ZXN0LCBwbHVzIE4gdGVzdHMgZm9yIGFsbCB0aGUgcmVuZGVyaW5nIGRyaXZlcnMu IEluc3RlYWQNCj4gPiA+IG9mIE0geCBOIHRlc3RjYXNlcyBsaWtlIHlvdSdyZSBwcm9wb3Npbmcg aGVyZS4gdmdlbSBpcyBqdXN0IHRoZQ0KPiA+ID4gYWJzdHJhY3Rpb24gbGF5ZXIvbW9ja2luZyBs YXllciB3ZSB1c2UgdG8gc2VwYXJhdGUgdGhlc2UgdHdvIHdvcmxkcy4NCj4gPiA+IEFuZCBvZiBj b3Vyc2UgZm9yIHNwZWNpZmljIHNoYXJpbmcgeW91IGNhbiBzdGlsbCBkbyB0aGF0LCBlLmcuIHRv IHRlc3QNCj4gPiA+IGRtYSBlbmdpbmUgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIGFtZGdwdSBhbmQg aTkxNSwgb3Igbm91dmVhdSBhbmQgaTkxNS4NCj4gPiA+IEJ1dCB0aG9zZSB0ZXN0cyBkb24ndCBu ZWVkIHRvIGludm9sdmUga21zLg0KPiA+ID4gDQo+ID4gPiBBbmQgeWVhaCBwcmltZV92Z2VtIG1p Z2h0IG5lZWQgdG8gYmUgc3BsaXQgaW50byBwcmltZV9pOTE1X3ZnZW0gYW5kDQo+ID4gPiBwcmlt ZV9rbXNfdmdlbS4gQnV0IGFsbCB0aGUgZGlzcGxheSByZWxhdGVkIHRlc3RjYXNlcyBzaG91bGQg YmUNCj4gPiA+IHBvc3NpYmxlIHRvIGV4dHJhY3QgaW50byBzdWNoIGEgcHJpbWVfa21zX3ZnZW0g ZnJhbWV3b3JrLg0KPiA+IA0KPiA+IE9uZSBjb3VsZCBhbHNvIHdhbnQgdG8gdGVzdCBkcm1Qcmlt ZUhhbmRsZVRvRkQgYW5kIGRybVByaW1lRkRUb0hhbmRsZQ0KPiA+IGJldHdlZW4gZS5nLiBhbWRn cHUgYW5kIGk5MTUuIEkgZ3Vlc3MgaXQncyB1c2luZyBhIGRpZmZlcmVudCBjb2RlIHBhdGgNCj4g PiB0aGFuIGdlbS4NCj4gDQo+IFllYWgsIGJ1dCBvbmx5IGlmIHlvdSBhbHNvIGRvIHNvbWUgaTkx NSBvciBhbWRncHUgc3BlY2lmaWMgY29tbWFuZA0KPiBzdWJtaXNzaW9uLiBPdGhlcndpc2UgaWYg aXQncyBhbGwgY3B1LW9ubHksIHRoZW4geW91IHdvbnQgaGl0IGFueQ0KPiBhZGRpdGlvbmFsIHBh dGggdGhhbiB3aGF0IHlvdSBjYW4gdGVzdCB3aXRoIHZnZW0gYWxyZWFkeS4gS2luZGEgbXkgcG9p bnQNCj4gcmVhbGx5LCB0aGVyZSdzIG5vIHJvb20gcmVhbGx5IGZvciBhICJnZW5lcmljIiBpOTE1 K2FtZGdwdSBwcmltZSB0ZXN0LiBBcw0KPiBzb29uIGFzIHlvdSBsb29rIGF0IHRoYXQgY29tYm8s IGl0J3MgYWxsIGFib3V0IHNwZWNpZmljcy4NCg0KSSBzZWUsIHRoYXQgbWFrZXMgc2Vuc2UuIFRo YW5rcyBmb3IgdGFraW5nIHRoZSB0aW1lIHRvIGV4cGxhaW4uIDopDQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3Qt ZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=