From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Deucher, Alexander" Subject: RE: [PATCH 15/23] drm/amdgpu/mxgpu: implement register access function with KIQ Date: Tue, 20 Dec 2016 13:59:24 +0000 Message-ID: References: <1481991405-30422-1-git-send-email-Xiangliang.Yu@amd.com> <1481991405-30422-16-git-send-email-Xiangliang.Yu@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Yu, Xiangliang" , Alex Deucher Cc: "dl.SRDC_SW_GPUVirtualization" , amd-gfx list , "Liu, Monk" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBhbWQtZ2Z4IFttYWlsdG86YW1k LWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10gT24gQmVoYWxmDQo+IE9mIFl1LCBY aWFuZ2xpYW5nDQo+IFNlbnQ6IFR1ZXNkYXksIERlY2VtYmVyIDIwLCAyMDE2IDE6MDggQU0NCj4g VG86IEFsZXggRGV1Y2hlcg0KPiBDYzogZGwuU1JEQ19TV19HUFVWaXJ0dWFsaXphdGlvbjsgTGl1 LCBNb25rOyBhbWQtZ2Z4IGxpc3QNCj4gU3ViamVjdDogUkU6IFtQQVRDSCAxNS8yM10gZHJtL2Ft ZGdwdS9teGdwdTogaW1wbGVtZW50IHJlZ2lzdGVyIGFjY2Vzcw0KPiBmdW5jdGlvbiB3aXRoIEtJ UQ0KPiANCj4gDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTog QWxleCBEZXVjaGVyIFttYWlsdG86YWxleGRldWNoZXJAZ21haWwuY29tXQ0KPiA+IFNlbnQ6IFR1 ZXNkYXksIERlY2VtYmVyIDIwLCAyMDE2IDc6MjcgQU0NCj4gPiBUbzogWXUsIFhpYW5nbGlhbmcg PFhpYW5nbGlhbmcuWXVAYW1kLmNvbT4NCj4gPiBDYzogYW1kLWdmeCBsaXN0IDxhbWQtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZz47DQo+ID4gZGwuU1JEQ19TV19HUFVWaXJ0dWFsaXphdGlvbg0K PiA+IDxkbC5TUkRDX1NXX0dQVVZpcnR1YWxpemF0aW9uQGFtZC5jb20+OyBMaXUsIE1vbmsNCj4g PiA8TW9uay5MaXVAYW1kLmNvbT4NCj4gPiBTdWJqZWN0OiBSZTogW1BBVENIIDE1LzIzXSBkcm0v YW1kZ3B1L214Z3B1OiBpbXBsZW1lbnQgcmVnaXN0ZXINCj4gYWNjZXNzDQo+ID4gZnVuY3Rpb24g d2l0aCBLSVENCj4gPg0KPiA+IE9uIFNhdCwgRGVjIDE3LCAyMDE2IGF0IDExOjE2IEFNLCBYaWFu Z2xpYW5nIFl1IDxYaWFuZ2xpYW5nLll1QGFtZC5jb20+DQo+ID4gd3JvdGU6DQo+ID4gPiBPbmUg b2YgaW1wb3J0YW50IHJvbGUgb2YgS0lRIGlzIHByb3ZpZGUgb25lIHdheSB0byBhY2Nlc3MgVkYN Cj4gPiA+IHJlZ2lzdGVycy4gVGhpcyBwYXRjaCBpbXBsZW1lbnQgdGhlIGZlYXR1cmUgYW5kIGV4 cG9ydCBpbnRlcmZhY2VzLg0KPiA+ID4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IE1vbmsgTGl1IDxN b25rLkxpdUBhbWQuY29tPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogWGlhbmdsaWFuZyBZdSA8WGlh bmdsaWFuZy5ZdUBhbWQuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X3ZpcnQuaCB8ICAgNCArKw0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9h bWQvbXhncHUvbXhncHVfa2lxLmMgICAgfCAxMTANCj4gPiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrDQo+ID4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKQ0KPiA+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL214Z3B1L214Z3B1X2tp cS5jDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV92aXJ0LmgNCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3ZpcnQuaA0KPiA+ID4gaW5kZXggOTdhYWUzMS4uYzc4NDM1ZCAxMDA2NDQNCj4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92aXJ0LmgNCj4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92aXJ0LmgNCj4gPiA+IEBAIC03NSw0ICs3 NSw4IEBAIHZvaWQgYW1kZ3B1X2dmeF9yaW5nX2VtaXRfbWV0YV9kYXRhKHN0cnVjdA0KPiA+ID4g YW1kZ3B1X3JpbmcgKnJpbmcsDQo+ID4gPiAgLyogZ2V0IGZ1bGwgZ3B1IGFjY2VzcyAqLw0KPiA+ ID4gIGludCBhbWRncHVfZ2V0X2dwdShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldik7ICBpbnQN Cj4gPiA+IGFtZGdwdV9wdXRfZ3B1KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KTsNCj4gPiA+ ICsNCj4gPiA+ICsvKiBhY2Nlc3MgdmYgcmVnaXN0ZXJzICovDQo+ID4gPiArdWludDMyX3QgYW1k Z3B1X2tpcV9ycmVnKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCByZWcpOw0K PiA+ID4gK3ZvaWQgYW1kZ3B1X2tpcV93cmVnKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1 aW50MzJfdCByZWcsDQo+ID4gPiArdWludDMyX3Qgdik7DQo+ID4gPiAgI2VuZGlmDQo+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9teGdwdS9teGdwdV9raXEuYw0KPiA+ID4g Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL214Z3B1L214Z3B1X2tpcS5jDQo+ID4gPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiA+ID4gaW5kZXggMDAwMDAwMC4uNmUxYjhlMw0KPiA+ID4gLS0tIC9kZXYv bnVsbA0KPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9teGdwdS9teGdwdV9raXEuYw0K PiA+ID4gQEAgLTAsMCArMSwxMTAgQEANCj4gPiA+ICsvKg0KPiA+ID4gKyAqIENvcHlyaWdodCAy MDE2IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4NCj4gPiA+ICsgKg0KPiA+ID4gKyAqIFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u DQo+ID4gPiArb2J0YWluaW5nIGENCj4gPiA+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlDQo+ID4gPiArIlNvZnR3YXJlIiks DQo+ID4gPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQNCj4gPiA+ICtsaW1pdGF0aW9uDQo+ID4gPiArICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsDQo+ID4g PiArc3VibGljZW5zZSwNCj4gPiA+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3 YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbQ0KPiA+ID4gK3RoZQ0KPiA+ID4gKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6DQo+ID4gPiArICoNCj4gPiA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQ0KPiA+ID4gK2luY2x1ZGVk IGluDQo+ID4gPiArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg U29mdHdhcmUuDQo+ID4gPiArICoNCj4gPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkNCj4gPiBLSU5ELA0KPiA+ID4gK0VYUFJF U1MgT1INCj4gPiA+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GDQo+ID4gPiArTUVSQ0hBTlRBQklMSVRZLA0KPiA+ID4gKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTg0KPiA+ IE5PIEVWRU5UDQo+ID4gPiArU0hBTEwNCj4gPiA+ICsgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihT KSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sDQo+ID4gPiArREFNQUdFUyBP Ug0KPiA+ID4gKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1INCj4gPiA+ICtPVEhFUldJU0UsDQo+ID4gPiArICogQVJJU0lORyBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUg0KPiA+IFRIRSBV U0UNCj4gPiA+ICtPUg0KPiA+ID4gKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4N Cj4gPiA+ICsgKg0KPiA+ID4gKyAqIEF1dGhvcnM6IFhpYW5nbGlhbmcuWXVAYW1kLmNvbQ0KPiA+ ID4gKyAqICAgICAgICAgTW9uay5MaXVAYW1kLmNvbQ0KPiA+ID4gKyAqLw0KPiA+ID4gKyNpbmNs dWRlICJhbWRfbXhncHUuaCINCj4gPiA+ICsjaW5jbHVkZSAidmlkLmgiDQo+ID4gPiArI2luY2x1 ZGUgImdjYS9nZnhfOF8wX2QuaCINCj4gPiA+ICsjaW5jbHVkZSAiZ2NhL2dmeF84XzBfc2hfbWFz ay5oIg0KPiA+ID4gKw0KPiA+ID4gK3N0YXRpYyB2b2lkIHhncHVfa2lxX3JpbmdfZW1pdF9ycmVn KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdTMyDQo+ID4gPiAraWR4KSB7DQo+ID4gPiArICAg ICAgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+YWRldjsNCj4gPiA+ICsgICAg ICAgc3RydWN0IGFtZF94Z3B1ICp4Z3B1ID0gKHN0cnVjdCBhbWRfeGdwdSAqKWFkZXYtPnByaXZf ZGF0YTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgUEFD S0VUMyhQQUNLRVQzX0NPUFlfREFUQSwgNCkpOw0KPiA+ID4gKyAgICAgICBhbWRncHVfcmluZ193 cml0ZShyaW5nLCAwIHwgICAgIC8qIHNyYzogcmVnaXN0ZXIqLw0KPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoNSA8PCA4KSB8ICAgICAgLyogZHN0OiBtZW1vcnkgKi8NCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDEgPDwgMjApKTsgICAgIC8qIHdy aXRlIGNvbmZpcm0gKi8NCj4gPiA+ICsgICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgaWR4 KTsNCj4gPiA+ICsgICAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMCk7DQo+ID4gPiArICAg ICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIGxvd2VyXzMyX2JpdHMoYWRldi0+d2IuZ3B1X2Fk ZHIgKw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Z3B1LT5yZWdfdmFs X29mZnMgKiA0KSk7DQo+ID4gPiArICAgICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIHVwcGVy XzMyX2JpdHMoYWRldi0+d2IuZ3B1X2FkZHIgKw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB4Z3B1LT5yZWdfdmFsX29mZnMgKiA0KSk7IH0NCj4gPiA+ICsNCj4gPiA+ICtz dGF0aWMgdm9pZCB4Z3B1X2tpcV9yaW5nX2VtaXRfd3JlZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJp bmcsIHUzMg0KPiA+ID4gK2lkeCwgdTMyIHZhbCkgew0KPiA+ID4gKyAgICAgICBhbWRncHVfcmlu Z193cml0ZShyaW5nLCBQQUNLRVQzKFBBQ0tFVDNfV1JJVEVfREFUQSwgMykpOw0KPiA+ID4gKyAg ICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCAoMSA8PCAxNikpOyAvKiBubyBpbmMgYWRkciAq Lw0KPiA+ID4gKyAgICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCBpZHgpOw0KPiA+ID4gKyAg ICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCAwKTsNCj4gPiA+ICsgICAgICAgYW1kZ3B1X3Jp bmdfd3JpdGUocmluZywgdmFsKTsNCj4gPiA+ICt9DQo+ID4NCj4gPiBUaGVzZSBzaG91bGQgYmUg aW4gZ2Z4OC4NCj4gDQo+IFRoaXMgaXMgb25seSBmb3IgdmlydHVhbGl6YXRpb24sICBwbGVhc2Ug c2VlIG15IHByZXZpb3VzIHBhdGNoJ3MgY29tbWVudC4NCg0KUmlnaHQsIGJ1dCBpdCdzIGdmeDgg c3BlY2lmaWMuICBUaGUgcGFja2V0IGFuZCByZWdpc3RlciBpbnRlcmZhY2UgbWF5IGNoYW5nZSBv biBvdGhlciBhc2ljcy4gIE1heWJlIHB1dCB0aGUgZ2Z4OCBzcGVjaWZpYyBiaXRzIGluIGdmeF92 OF8wX2tpcS5jIG9yIHNvbWV0aGluZyBsaWtlIHRoYXQuDQoNCkFsZXgNCg0KPiANCj4gPg0KPiA+ IEFsZXgNCj4gPg0KPiA+ID4gKw0KPiA+ID4gK3VpbnQzMl90IGFtZGdwdV9raXFfcnJlZyhzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgcmVnKSB7DQo+ID4gPiArICAgICAgIHNp Z25lZCBsb25nIHI7DQo+ID4gPiArICAgICAgIHVpbnQzMl90IHZhbDsNCj4gPiA+ICsgICAgICAg c3RydWN0IGZlbmNlICpmOw0KPiA+ID4gKyAgICAgICBzdHJ1Y3QgYW1kX3hncHUgKnhncHUgPSAo c3RydWN0IGFtZF94Z3B1ICopYWRldi0+cHJpdl9kYXRhOw0KPiA+ID4gKyAgICAgICBzdHJ1Y3Qg YW1kZ3B1X2tpcSAqa2lxID0gJmFkZXYtPmtpcTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgaWYg KGluX2ludGVycnVwdCgpKQ0KPiA+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ID4g Kw0KPiA+ID4gKyAgICAgICBtdXRleF9sb2NrKCZ4Z3B1LT5sb2NrKTsNCj4gPiA+ICsgICAgICAg YW1kZ3B1X3JpbmdfYWxsb2MoJmtpcS0+cmluZywgMzIpOw0KPiA+ID4gKyAgICAgICBhbWRncHVf cmluZ19lbWl0X2hkcF9mbHVzaCgma2lxLT5yaW5nKTsNCj4gPiA+ICsgICAgICAgeGdwdV9raXFf cmluZ19lbWl0X3JyZWcoJmtpcS0+cmluZywgcmVnKTsNCj4gPiA+ICsgICAgICAgYW1kZ3B1X3Jp bmdfZW1pdF9oZHBfaW52YWxpZGF0ZSgma2lxLT5yaW5nKTsNCj4gPiA+ICsgICAgICAgYW1kZ3B1 X2ZlbmNlX2VtaXQoJmtpcS0+cmluZywgJmYpOw0KPiA+ID4gKyAgICAgICBmZW5jZV9nZXQoZik7 DQo+ID4gPiArICAgICAgIGFtZGdwdV9yaW5nX2NvbW1pdCgma2lxLT5yaW5nKTsNCj4gPiA+ICsg ICAgICAgbXV0ZXhfdW5sb2NrKCZ4Z3B1LT5sb2NrKTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAg ciA9IGZlbmNlX3dhaXQoZiwgZmFsc2UpOw0KPiA+ID4gKyAgICAgICBmZW5jZV9wdXQoZik7DQo+ ID4gPiArICAgICAgIGlmIChyKQ0KPiA+ID4gKyAgICAgICAgICAgICAgIERSTV9FUlJPUigid2Fp dCBmb3Iga2lxIGZlbmNlIGVycm9yOiAlbGQuXG4iLCByKTsNCj4gPiA+ICsgICAgICAgZmVuY2Vf cHV0KGYpOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICB2YWwgPSBhZGV2LT53Yi53Ylt4Z3B1LT5y ZWdfdmFsX29mZnNdOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgICByZXR1cm4gdmFsOw0KPiA+ID4g K30NCj4gPiA+ICsNCj4gPiA+ICt2b2lkIGFtZGdwdV9raXFfd3JlZyhzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwgdWludDMyX3QgcmVnLA0KPiA+ID4gK3VpbnQzMl90IHYpIHsNCj4gPiA+ICsg ICAgICAgc2lnbmVkIGxvbmcgcjsNCj4gPiA+ICsgICAgICAgc3RydWN0IGZlbmNlICpmOw0KPiA+ ID4gKyAgICAgICBzdHJ1Y3QgYW1kX3hncHUgKnhncHUgPSAoc3RydWN0IGFtZF94Z3B1ICopYWRl di0+cHJpdl9kYXRhOw0KPiA+ID4gKyAgICAgICBzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxID0gJmFk ZXYtPmtpcTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgbXV0ZXhfbG9jaygmeGdwdS0+bG9jayk7 DQo+ID4gPiArICAgICAgIGFtZGdwdV9yaW5nX2FsbG9jKCZraXEtPnJpbmcsIDMyKTsNCj4gPiA+ ICsgICAgICAgYW1kZ3B1X3JpbmdfZW1pdF9oZHBfZmx1c2goJmtpcS0+cmluZyk7DQo+ID4gPiAr ICAgICAgIHhncHVfa2lxX3JpbmdfZW1pdF93cmVnKCZraXEtPnJpbmcsIHJlZywgdik7DQo+ID4g PiArICAgICAgIGFtZGdwdV9yaW5nX2VtaXRfaGRwX2ludmFsaWRhdGUoJmtpcS0+cmluZyk7DQo+ ID4gPiArICAgICAgIGFtZGdwdV9mZW5jZV9lbWl0KCZraXEtPnJpbmcsICZmKTsNCj4gPiA+ICsg ICAgICAgZmVuY2VfZ2V0KGYpOw0KPiA+ID4gKyAgICAgICBhbWRncHVfcmluZ19jb21taXQoJmtp cS0+cmluZyk7DQo+ID4gPiArICAgICAgIG11dGV4X3VubG9jaygmeGdwdS0+bG9jayk7DQo+ID4g PiArDQo+ID4gPiArICAgICAgIHIgPSBmZW5jZV93YWl0KGYsIGZhbHNlKTsNCj4gPiA+ICsgICAg ICAgZmVuY2VfcHV0KGYpOw0KPiA+ID4gKyAgICAgICBpZiAocikNCj4gPiA+ICsgICAgICAgICAg ICAgICBEUk1fRVJST1IoIndhaXQgZm9yIGtpcSBmZW5jZSBlcnJvcjogJWxkLlxuIiwgcik7DQo+ ID4gPiArICAgICAgIGZlbmNlX3B1dChmKTsNCj4gPiA+ICt9DQo+ID4gPiAtLQ0KPiA+ID4gMi43 LjQNCj4gPiA+DQo+ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXw0KPiA+ID4gYW1kLWdmeCBtYWlsaW5nIGxpc3QNCj4gPiA+IGFtZC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnDQo+ID4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2FtZC1nZngNCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18NCj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QNCj4gYW1kLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcNCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9hbWQtZ2Z4DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK