From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM04-SN1-obe.outbound.protection.outlook.com (mail-eopbgr700052.outbound.protection.outlook.com [40.107.70.52]) by gabe.freedesktop.org (Postfix) with ESMTPS id DE90D6EFF9 for ; Tue, 8 Jan 2019 18:54:51 +0000 (UTC) From: "Li, Sun peng (Leo)" Date: Tue, 8 Jan 2019 18:54:49 +0000 Message-ID: References: <20190103193228.2180-1-David.Francis@amd.com> In-Reply-To: <20190103193228.2180-1-David.Francis@amd.com> Content-Language: en-US Content-ID: MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t v2] tests/amdgpu: Add test for Adaptive Backlight Management 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: "Francis, David" , "igt-dev@lists.freedesktop.org" List-ID: DQoNCk9uIDIwMTktMDEtMDMgMjozMiBwLm0uLCBEYXZpZCBGcmFuY2lzIHdyb3RlOg0KPiBBZGFw dGl2ZSBCYWNrbGlnaHQgTWFuYWdlbWVudCAoQUJNKSBpcyBhIHBvd2VyLXNhdmluZw0KPiBmZWF0 dXJlIG9uIEFNRCBBU0lDcyB0aGF0IHJlZHVjZXMgYmFja2xpZ2h0IHdoaWxlIGluY3JlYXNpbmcN Cj4gcGl4ZWwgY29udHJhc3QgYW5kIGx1bWluYW5jZS4gIFRoaXMgdGVzdCBjb25maXJtcyB0aGF0 DQo+IEFCTSBpcyBwcmVzZW50IGFuZCBlbmFibGVkLCBhbmQgdGhhdCBiYWNrbGlnaHQgcGVyZm9y bWFuY2UNCj4gaXMgc2FuZS4gIEl0IHVzZXMgQU1ELXNwZWNpZmljIGRlYnVnZnMgZW50cmllcyB0 bw0KPiByZWFkIHRoZSBiYWNrbGlnaHQgUFdNIHZhbHVlcy4NCj4gDQo+IEl0IGhhcyA1IHN1YnRl c3RzOg0KPiANCj4gZHBtc19jeWNsZQ0KPiBTZXRzIGJyaWdodG5lc3MgdG8gaGFsZiwgdGhlbiBj b25maXJtcyB0aGF0IHZhbHVlIGlzIHJlc3RvcmVkDQo+IGFmdGVyIGRwbXMgb2ZmIGFuZCB0aGVu IG9uLg0KPiANCj4gYmFja2xpZ2h0X21vbm90b25pY19iYXNpYw0KPiBTZXRzIGJyaWdodG5lc3Mg dG8gdGVuIGRpZmZlcmVudCB2YWx1ZXMsIGNvbmZpcm1pbmcgdGhhdA0KPiBoaWdoZXIgYnJpZ2h0 bmVzcyB2YWx1ZXMgYXJlIGJyaWdodGVyLg0KPiANCj4gYmFja2xpZ2h0X21vbm90b25pY19hYm0N Cj4gU2FtZSBhcyBiYWNrbGlnaHRfbW9ub3RvbmljX2Jhc2ljLCBidXQgd2l0aCBhYm0gZW5hYmxl ZC4NCj4gDQo+IGFibV9lbmFibGVkDQo+IFNldHMgYWJtIHRvIGl0cyBmb3VyIGludGVuc2l0eSBs ZXZlbHMsIGNvbmZpcm1pbmcgdGhhdA0KPiBhYm0gcmVkdWNlcyB0aGUgYmFja2xpZ2h0LCBhbmQg dGhlIHJlZHVjdGlvbiBpcyBncmVhdGVyDQo+IGZvciBoaWdoZXIgYWJtIGxldmVsLg0KPiANCj4g YWJtX2dyYWR1YWwNCj4gU2V0cyBhYm0gdG8gb2ZmIGFuZCB0aGVuIG1heGltdW0gaW50ZW5zaXR5 LCBjb25maXJtaW5nDQo+IHRoYXQgYnJpZ2h0bmVzcyBkZWNyZWFzZXMgY29udGludWFsbHkgb3Zl ciB0aGUgZmlyc3QNCj4gc2Vjb25kIGFuZCBldmVudHVhbGx5IHJlYWNoZXMgdGhlIHRhcmdldCB2 YWx1ZS4NCj4gVGhpcyB0ZXN0IHRha2VzIDMwcyB0byBydW4uDQo+IA0KPiB2MjogbWFrZSBzdXJl IHRoYXQgZHBtcyBpcyBjeWNsZWQgb24gdGhlIGVEUCBkaXNwbGF5DQo+IA0KPiBTaWduZWQtb2Zm LWJ5OiBEYXZpZCBGcmFuY2lzIDxEYXZpZC5GcmFuY2lzQGFtZC5jb20+DQoNClRoYW5rcywNCg0K UmV2aWV3ZWQtYnk6IExlbyBMaSA8c3VucGVuZy5saUBhbWQuY29tPg0KDQo+IC0tLQ0KPiAgIHRl c3RzL01ha2VmaWxlLnNvdXJjZXMgfCAgIDEgKw0KPiAgIHRlc3RzL2FtZGdwdS9hbWRfYWJtLmMg fCAzNjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gICAyIGZp bGVzIGNoYW5nZWQsIDM2NCBpbnNlcnRpb25zKCspDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRl c3RzL2FtZGdwdS9hbWRfYWJtLmMNCj4gDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcw0KPiBpbmRleCA1NjIwYzFkNi4uM2Q1NjBi ZWUgMTAwNjQ0DQo+IC0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMNCj4gKysrIGIvdGVzdHMv TWFrZWZpbGUuc291cmNlcw0KPiBAQCAtMTksNiArMTksNyBAQCBBTURHUFVfVEVTVFMgPSBcDQo+ ICAgCWFtZGdwdS9hbWRfYmFzaWMgXA0KPiAgIAlhbWRncHUvYW1kX2NzX25vcCBcDQo+ICAgCWFt ZGdwdS9hbWRfcHJpbWUgXA0KPiArCWFtZGdwdS9hbWRfYWJtIFwNCj4gICAJJChOVUxMKQ0KPiAg IA0KPiAgIFRFU1RTX3Byb2dzID0gXA0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvYW1kZ3B1L2FtZF9h Ym0uYyBiL3Rlc3RzL2FtZGdwdS9hbWRfYWJtLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g aW5kZXggMDAwMDAwMDAuLjM2M2IxZTkwDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvdGVzdHMv YW1kZ3B1L2FtZF9hYm0uYw0KPiBAQCAtMCwwICsxLDM2MyBAQA0KPiArLyoNCj4gKyAqIENvcHly aWdodCAyMDE4IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4NCj4gKyAqDQo+ICsgKiBQZXJt aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv YnRhaW5pbmcgYQ0KPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwNCj4gKyAqIHRvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24NCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLA0KPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlDQo+ICsgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOg0KPiArICoNCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQo+ICsgKiBhbGwgY29waWVz IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4NCj4gKyAqDQo+ICsgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUg0KPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksDQo+ICsgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwNCj4gKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMpIE9SIEFVVEhPUihTKSBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUg0KPiArICogT1RIRVIgTElBQklMSVRZLCBXSEVU SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsDQo+ICsgKiBB UklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1INCj4gKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCj4gKyAq Lw0KPiArDQo+ICsjaW5jbHVkZSAiaWd0LmgiDQo+ICsjaW5jbHVkZSAiZHJtdGVzdC5oIg0KPiAr I2luY2x1ZGUgImlndF9rbXMuaCINCj4gKyNpbmNsdWRlIDxsaW1pdHMuaD4NCj4gKyNpbmNsdWRl IDxlcnJuby5oPg0KPiArI2luY2x1ZGUgPHN0ZGJvb2wuaD4NCj4gKyNpbmNsdWRlIDxzdGRsaWIu aD4NCj4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPiArI2luY2x1ZGUgPHN0cmluZy5oPg0KPiArI2lu Y2x1ZGUgPGZjbnRsLmg+DQo+ICsjaW5jbHVkZSA8dGltZS5oPg0KPiArDQo+ICsjZGVmaW5lIEJB Q0tMSUdIVF9QQVRIICIvc3lzL2NsYXNzL2JhY2tsaWdodC9hbWRncHVfYmwwIg0KPiArDQo+ICtz dGF0aWMgaW50IHJlYWRfY3VycmVudF9iYWNrbGlnaHRfcHdtKGludCBkZWJ1Z2ZzX2RpcikNCj4g K3sNCj4gKwljaGFyIGJ1ZlsyMF07DQo+ICsNCj4gKwlpZ3RfZGVidWdmc19zaW1wbGVfcmVhZChk ZWJ1Z2ZzX2RpciwgImFtZGdwdV9jdXJyZW50X2JhY2tsaWdodF9wd20iLA0KPiArCQkJIGJ1Ziwg c2l6ZW9mKGJ1ZikpOw0KPiArDQo+ICsJcmV0dXJuIHN0cnRvbChidWYsIE5VTEwsIDApOw0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgaW50IHJlYWRfdGFyZ2V0X2JhY2tsaWdodF9wd20oaW50IGRlYnVn ZnNfZGlyKQ0KPiArew0KPiArCWNoYXIgYnVmWzIwXTsNCj4gKw0KPiArCWlndF9kZWJ1Z2ZzX3Np bXBsZV9yZWFkKGRlYnVnZnNfZGlyLCAiYW1kZ3B1X3RhcmdldF9iYWNrbGlnaHRfcHdtIiwNCj4g KwkJCSBidWYsIHNpemVvZihidWYpKTsNCj4gKw0KPiArCXJldHVybiBzdHJ0b2woYnVmLCBOVUxM LCAwKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBiYWNrbGlnaHRfd3JpdGVfYnJpZ2h0bmVz cyhpbnQgdmFsdWUpDQo+ICt7DQo+ICsJaW50IGZkOw0KPiArCWNoYXIgZnVsbFtQQVRIX01BWF07 DQo+ICsJY2hhciBzcmNbNjRdOw0KPiArCWludCBsZW47DQo+ICsNCj4gKwlpZ3RfYXNzZXJ0KHNu cHJpbnRmKGZ1bGwsIFBBVEhfTUFYLCAiJXMvJXMiLCBCQUNLTElHSFRfUEFUSCwgImJyaWdodG5l c3MiKSA8IFBBVEhfTUFYKTsNCj4gKwlmZCA9IG9wZW4oZnVsbCwgT19XUk9OTFkpOw0KPiArCWlm IChmZCA9PSAtMSkNCj4gKwkJcmV0dXJuIC1lcnJubzsNCj4gKw0KPiArCWxlbiA9IHNucHJpbnRm KHNyYywgc2l6ZW9mKHNyYyksICIlaSIsIHZhbHVlKTsNCj4gKwlsZW4gPSB3cml0ZShmZCwgc3Jj LCBsZW4pOw0KPiArCWNsb3NlKGZkKTsNCj4gKw0KPiArCWlmIChsZW4gPCAwKQ0KPiArCQlyZXR1 cm4gbGVuOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHNl dF9hYm1fbGV2ZWwoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGxldmVsKQ0KPiArew0KPiAr CWludCBpLCByZXQ7DQo+ICsJaW50IG91dHB1dF9pZDsNCj4gKwlkcm1Nb2RlT2JqZWN0UHJvcGVy dGllc1B0ciBwcm9wczsNCj4gKwl1aW50MzJfdCBwcm9wX2lkOw0KPiArCWRybU1vZGVQcm9wZXJ0 eVB0ciBwcm9wOw0KPiArCXVpbnQzMl90IHR5cGUgPSBEUk1fTU9ERV9PQkpFQ1RfQ09OTkVDVE9S Ow0KPiArDQo+ICsJZm9yIChpID0gMDsgaSA8IGRpc3BsYXktPm5fb3V0cHV0czsgaSsrKSB7DQo+ ICsJCW91dHB1dF9pZCA9IGRpc3BsYXktPm91dHB1dHNbaV0uaWQ7DQo+ICsJCXByb3BzID0gZHJt TW9kZU9iamVjdEdldFByb3BlcnRpZXMoZGlzcGxheS0+ZHJtX2ZkLCBvdXRwdXRfaWQsIHR5cGUp Ow0KPiArDQo+ICsJCWZvciAoaSA9IDA7IGkgPCBwcm9wcy0+Y291bnRfcHJvcHM7IGkrKykgew0K PiArCQkJcHJvcF9pZCA9IHByb3BzLT5wcm9wc1tpXTsNCj4gKwkJCXByb3AgPSBkcm1Nb2RlR2V0 UHJvcGVydHkoZGlzcGxheS0+ZHJtX2ZkLCBwcm9wX2lkKTsNCj4gKw0KPiArCQkJaWd0X2Fzc2Vy dChwcm9wKTsNCj4gKw0KPiArCQkJaWYgKHN0cmNtcChwcm9wLT5uYW1lLCAiYWJtIGxldmVsIikg PT0gMCkgew0KPiArCQkJCXJldCA9IGRybU1vZGVPYmplY3RTZXRQcm9wZXJ0eShkaXNwbGF5LT5k cm1fZmQsIG91dHB1dF9pZCwgdHlwZSwgcHJvcF9pZCwgbGV2ZWwpOw0KPiArDQo+ICsJCQkJaWd0 X2Fzc2VydF9lcShyZXQsIDApOw0KPiArCQkJfQ0KPiArDQo+ICsJCQlkcm1Nb2RlRnJlZVByb3Bl cnR5KHByb3ApOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQg YmFja2xpZ2h0X3JlYWRfbWF4X2JyaWdodG5lc3MoaW50ICpyZXN1bHQpDQo+ICt7DQo+ICsJaW50 IGZkOw0KPiArCWNoYXIgZnVsbFtQQVRIX01BWF07DQo+ICsJY2hhciBkc3RbNjRdOw0KPiArCWlu dCByLCBlOw0KPiArDQo+ICsJaWd0X2Fzc2VydChzbnByaW50ZihmdWxsLCBQQVRIX01BWCwgIiVz LyVzIiwgQkFDS0xJR0hUX1BBVEgsICJtYXhfYnJpZ2h0bmVzcyIpIDwgUEFUSF9NQVgpOw0KPiAr DQo+ICsJZmQgPSBvcGVuKGZ1bGwsIE9fUkRPTkxZKTsNCj4gKwlpZiAoZmQgPT0gLTEpDQo+ICsJ CXJldHVybiAtZXJybm87DQo+ICsNCj4gKwlyID0gcmVhZChmZCwgZHN0LCBzaXplb2YoZHN0KSk7 DQo+ICsJZSA9IGVycm5vOw0KPiArCWNsb3NlKGZkKTsNCj4gKw0KPiArCWlmIChyIDwgMCkNCj4g KwkJcmV0dXJuIC1lOw0KPiArDQo+ICsJZXJybm8gPSAwOw0KPiArCSpyZXN1bHQgPSBzdHJ0b2wo ZHN0LCBOVUxMLCAxMCk7DQo+ICsJcmV0dXJuIGVycm5vOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg dm9pZCBza2lwX2lmX2luY29tcGF0aWJsZShpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZGVi dWdmc19kaXIpDQo+ICt7DQo+ICsJaW50IHJldCwgaTsNCj4gKwljaGFyIGJ1ZlsyMF07DQo+ICsJ Ym9vbCBhYm1fcHJvcF9leGlzdHM7DQo+ICsJaW50IG91dHB1dF9pZDsNCj4gKwlkcm1Nb2RlT2Jq ZWN0UHJvcGVydGllc1B0ciBwcm9wczsNCj4gKwl1aW50MzJfdCB0eXBlID0gRFJNX01PREVfT0JK RUNUX0NPTk5FQ1RPUjsNCj4gKwl1aW50MzJfdCBwcm9wX2lkOw0KPiArCWRybU1vZGVQcm9wZXJ0 eVB0ciBwcm9wOw0KPiArDQo+ICsJcmV0ID0gaWd0X2RlYnVnZnNfc2ltcGxlX3JlYWQoZGVidWdm c19kaXIsICJhbWRncHVfY3VycmVudF9iYWNrbGlnaHRfcHdtIiwNCj4gKwkJCSBidWYsIHNpemVv ZihidWYpKTsNCj4gKw0KPiArCWlmIChyZXQgPCAwKQ0KPiArCQlpZ3Rfc2tpcCgiTm8gY3VycmVu dCBiYWNrbGlnaHQgZGVidWdmcyBlbnRyeS5cbiIpOw0KPiArDQo+ICsJcmV0ID0gaWd0X2RlYnVn ZnNfc2ltcGxlX3JlYWQoZGVidWdmc19kaXIsICJhbWRncHVfdGFyZ2V0X2JhY2tsaWdodF9wd20i LA0KPiArCQkJIGJ1Ziwgc2l6ZW9mKGJ1ZikpOw0KPiArDQo+ICsJaWYgKHJldCA8IDApDQo+ICsJ CWlndF9za2lwKCJObyB0YXJnZXQgYmFja2xpZ2h0IGRlYnVnZnMgZW50cnkuXG4iKTsNCj4gKw0K PiArCWFibV9wcm9wX2V4aXN0cyA9IGZhbHNlOw0KPiArDQo+ICsJZm9yIChpID0gMDsgaSA8IGRp c3BsYXktPm5fb3V0cHV0czsgaSsrKSB7DQo+ICsJCW91dHB1dF9pZCA9IGRpc3BsYXktPm91dHB1 dHNbaV0uaWQ7DQo+ICsJCXByb3BzID0gZHJtTW9kZU9iamVjdEdldFByb3BlcnRpZXMoZGlzcGxh eS0+ZHJtX2ZkLCBvdXRwdXRfaWQsIHR5cGUpOw0KPiArDQo+ICsJCWZvciAoaSA9IDA7IGkgPCBw cm9wcy0+Y291bnRfcHJvcHM7IGkrKykgew0KPiArCQkJcHJvcF9pZCA9IHByb3BzLT5wcm9wc1tp XTsNCj4gKwkJCXByb3AgPSBkcm1Nb2RlR2V0UHJvcGVydHkoZGlzcGxheS0+ZHJtX2ZkLCBwcm9w X2lkKTsNCj4gKw0KPiArCQkJaWYgKHN0cmNtcChwcm9wLT5uYW1lLCAiYWJtIGxldmVsIikgPT0g MCkNCj4gKwkJCQlhYm1fcHJvcF9leGlzdHMgPSB0cnVlOw0KPiArDQo+ICsJCQlkcm1Nb2RlRnJl ZVByb3BlcnR5KHByb3ApOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJaWYgKCFhYm1fcHJvcF9l eGlzdHMpDQo+ICsJCWlndF9za2lwKCJObyBhYm0gbGV2ZWwgcHJvcGVydHkgb24gYW55IGNvbm5l Y3Rvci5cbiIpOw0KPiArfQ0KPiArDQo+ICsNCj4gK3N0YXRpYyB2b2lkIGJhY2tsaWdodF9kcG1z X2N5Y2xlKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkZWJ1Z2ZzLCBpZ3Rfb3V0cHV0X3Qg Km91dHB1dCkNCj4gK3sNCj4gKwlpbnQgcmV0Ow0KPiArCWludCBtYXhfYnJpZ2h0bmVzczsNCj4g KwlpbnQgcHdtXzEsIHB3bV8yOw0KPiArDQo+ICsJcmV0ID0gYmFja2xpZ2h0X3JlYWRfbWF4X2Jy aWdodG5lc3MoJm1heF9icmlnaHRuZXNzKTsNCj4gKwlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7DQo+ ICsNCj4gKwlzZXRfYWJtX2xldmVsKGRpc3BsYXksIDApOw0KPiArCWJhY2tsaWdodF93cml0ZV9i cmlnaHRuZXNzKG1heF9icmlnaHRuZXNzIC8gMik7DQo+ICsJdXNsZWVwKDEwMDAwMCk7DQo+ICsJ cHdtXzEgPSByZWFkX3RhcmdldF9iYWNrbGlnaHRfcHdtKGRlYnVnZnMpOw0KPiArDQo+ICsJa21z dGVzdF9zZXRfY29ubmVjdG9yX2RwbXMoZGlzcGxheS0+ZHJtX2ZkLCBvdXRwdXQtPmNvbmZpZy5j b25uZWN0b3IsIERSTV9NT0RFX0RQTVNfT0ZGKTsNCj4gKwlrbXN0ZXN0X3NldF9jb25uZWN0b3Jf ZHBtcyhkaXNwbGF5LT5kcm1fZmQsIG91dHB1dC0+Y29uZmlnLmNvbm5lY3RvciwgRFJNX01PREVf RFBNU19PTik7DQo+ICsJdXNsZWVwKDEwMDAwMCk7DQo+ICsJcHdtXzIgPSByZWFkX3RhcmdldF9i YWNrbGlnaHRfcHdtKGRlYnVnZnMpOw0KPiArCWlndF9hc3NlcnRfZXEocHdtXzEsIHB3bV8yKTsN Cj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgYmFja2xpZ2h0X21vbm90b25pY19iYXNpYyhpZ3Rf ZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZGVidWdmcykNCj4gK3sNCj4gKwlpbnQgcmV0Ow0KPiAr CWludCBtYXhfYnJpZ2h0bmVzczsNCj4gKwlpbnQgcHJldl9wd20sIHB3bTsNCj4gKwlpbnQgYnJp Z2h0bmVzc19zdGVwOw0KPiArCWludCBicmlnaHRuZXNzOw0KPiArDQo+ICsJcmV0ID0gYmFja2xp Z2h0X3JlYWRfbWF4X2JyaWdodG5lc3MoJm1heF9icmlnaHRuZXNzKTsNCj4gKwlpZ3RfYXNzZXJ0 X2VxKHJldCwgMCk7DQo+ICsNCj4gKwlicmlnaHRuZXNzX3N0ZXAgPSBtYXhfYnJpZ2h0bmVzcyAv IDEwOw0KPiArDQo+ICsJc2V0X2FibV9sZXZlbChkaXNwbGF5LCAwKTsNCj4gKwliYWNrbGlnaHRf d3JpdGVfYnJpZ2h0bmVzcyhtYXhfYnJpZ2h0bmVzcyk7DQo+ICsJdXNsZWVwKDEwMDAwMCk7DQo+ ICsJcHJldl9wd20gPSByZWFkX3RhcmdldF9iYWNrbGlnaHRfcHdtKGRlYnVnZnMpOw0KPiArCWZv ciAoYnJpZ2h0bmVzcyA9IG1heF9icmlnaHRuZXNzIC0gYnJpZ2h0bmVzc19zdGVwOw0KPiArCSAg ICAgYnJpZ2h0bmVzcyA+IDA7DQo+ICsJICAgICBicmlnaHRuZXNzIC09IGJyaWdodG5lc3Nfc3Rl cCkgew0KPiArCQliYWNrbGlnaHRfd3JpdGVfYnJpZ2h0bmVzcyhicmlnaHRuZXNzKTsNCj4gKwkJ dXNsZWVwKDEwMDAwMCk7DQo+ICsJCXB3bSA9IHJlYWRfdGFyZ2V0X2JhY2tsaWdodF9wd20oZGVi dWdmcyk7DQo+ICsJCWlndF9hc3NlcnQocHdtIDwgcHJldl9wd20pOw0KPiArCQlwcmV2X3B3bSA9 IHB3bTsNCj4gKwl9DQo+ICsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgYmFja2xpZ2h0X21v bm90b25pY19hYm0oaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRlYnVnZnMpDQo+ICt7DQo+ ICsJaW50IHJldCwgaTsNCj4gKwlpbnQgbWF4X2JyaWdodG5lc3M7DQo+ICsJaW50IHByZXZfcHdt LCBwd207DQo+ICsJaW50IGJyaWdodG5lc3Nfc3RlcDsNCj4gKwlpbnQgYnJpZ2h0bmVzczsNCj4g Kw0KPiArCXJldCA9IGJhY2tsaWdodF9yZWFkX21heF9icmlnaHRuZXNzKCZtYXhfYnJpZ2h0bmVz cyk7DQo+ICsJaWd0X2Fzc2VydF9lcShyZXQsIDApOw0KPiArDQo+ICsJYnJpZ2h0bmVzc19zdGVw ID0gbWF4X2JyaWdodG5lc3MgLyAxMDsNCj4gKwlmb3IgKGkgPSAxOyBpIDwgNTsgaSsrKSB7DQo+ ICsJCXNldF9hYm1fbGV2ZWwoZGlzcGxheSwgaSk7DQo+ICsJCWJhY2tsaWdodF93cml0ZV9icmln aHRuZXNzKG1heF9icmlnaHRuZXNzKTsNCj4gKwkJdXNsZWVwKDEwMDAwMCk7DQo+ICsJCXByZXZf cHdtID0gcmVhZF90YXJnZXRfYmFja2xpZ2h0X3B3bShkZWJ1Z2ZzKTsNCj4gKwkJZm9yIChicmln aHRuZXNzID0gbWF4X2JyaWdodG5lc3MgLSBicmlnaHRuZXNzX3N0ZXA7DQo+ICsJCSAgICAgYnJp Z2h0bmVzcyA+IDA7DQo+ICsJCSAgICAgYnJpZ2h0bmVzcyAtPSBicmlnaHRuZXNzX3N0ZXApIHsN Cj4gKwkJCWJhY2tsaWdodF93cml0ZV9icmlnaHRuZXNzKGJyaWdodG5lc3MpOw0KPiArCQkJdXNs ZWVwKDEwMDAwMCk7DQo+ICsJCQlwd20gPSByZWFkX3RhcmdldF9iYWNrbGlnaHRfcHdtKGRlYnVn ZnMpOw0KPiArCQkJaWd0X2Fzc2VydChwd20gPCBwcmV2X3B3bSk7DQo+ICsJCQlwcmV2X3B3bSA9 IHB3bTsNCj4gKwkJfQ0KPiArCX0NCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgYWJtX2VuYWJs ZWQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRlYnVnZnMpDQo+ICt7DQo+ICsJaW50IHJl dCwgaTsNCj4gKwlpbnQgbWF4X2JyaWdodG5lc3M7DQo+ICsJaW50IHB3bSwgcHJldl9wd20sIHB3 bV93aXRob3V0X2FibTsNCj4gKw0KPiArCXJldCA9IGJhY2tsaWdodF9yZWFkX21heF9icmlnaHRu ZXNzKCZtYXhfYnJpZ2h0bmVzcyk7DQo+ICsJaWd0X2Fzc2VydF9lcShyZXQsIDApOw0KPiArDQo+ ICsJc2V0X2FibV9sZXZlbChkaXNwbGF5LCAwKTsNCj4gKwliYWNrbGlnaHRfd3JpdGVfYnJpZ2h0 bmVzcyhtYXhfYnJpZ2h0bmVzcyk7DQo+ICsJdXNsZWVwKDEwMDAwMCk7DQo+ICsJcHJldl9wd20g PSByZWFkX3RhcmdldF9iYWNrbGlnaHRfcHdtKGRlYnVnZnMpOw0KPiArCXB3bV93aXRob3V0X2Fi bSA9IHByZXZfcHdtOw0KPiArDQo+ICsJZm9yIChpID0gMTsgaSA8IDU7IGkrKykgew0KPiArCQlz ZXRfYWJtX2xldmVsKGRpc3BsYXksIGkpOw0KPiArCQl1c2xlZXAoMTAwMDAwKTsNCj4gKwkJcHdt ID0gcmVhZF90YXJnZXRfYmFja2xpZ2h0X3B3bShkZWJ1Z2ZzKTsNCj4gKwkJaWd0X2Fzc2VydChw d20gPD0gcHJldl9wd20pOw0KPiArCQlpZ3RfYXNzZXJ0KHB3bSA8IHB3bV93aXRob3V0X2FibSk7 DQo+ICsJCXByZXZfcHdtID0gcHdtOw0KPiArCX0NCj4gKw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg dm9pZCBhYm1fZ3JhZHVhbChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZGVidWdmcykNCj4g K3sNCj4gKwlpbnQgcmV0LCBpOw0KPiArCWludCBjb252ZXJnZW5jZV9kZWxheSA9IDE1Ow0KPiAr CWludCBwcmV2X3B3bSwgcHdtLCBjdXJyOw0KPiArCWludCBtYXhfYnJpZ2h0bmVzczsNCj4gKw0K PiArCXJldCA9IGJhY2tsaWdodF9yZWFkX21heF9icmlnaHRuZXNzKCZtYXhfYnJpZ2h0bmVzcyk7 DQo+ICsNCj4gKwlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7DQo+ICsNCj4gKwlzZXRfYWJtX2xldmVs KGRpc3BsYXksIDApOw0KPiArCWJhY2tsaWdodF93cml0ZV9icmlnaHRuZXNzKG1heF9icmlnaHRu ZXNzKTsNCj4gKw0KPiArCXNsZWVwKGNvbnZlcmdlbmNlX2RlbGF5KTsNCj4gKwlwcmV2X3B3bSA9 IHJlYWRfdGFyZ2V0X2JhY2tsaWdodF9wd20oZGVidWdmcyk7DQo+ICsJY3VyciA9IHJlYWRfY3Vy cmVudF9iYWNrbGlnaHRfcHdtKGRlYnVnZnMpOw0KPiArDQo+ICsJaWd0X2Fzc2VydF9lcShwcmV2 X3B3bSwgY3Vycik7DQo+ICsJc2V0X2FibV9sZXZlbChkaXNwbGF5LCA0KTsNCj4gKwlmb3IgKGkg PSAwOyBpIDwgMTA7IGkrKykgew0KPiArCQl1c2xlZXAoMTAwMDAwKTsNCj4gKwkJcHdtID0gcmVh ZF9jdXJyZW50X2JhY2tsaWdodF9wd20oZGVidWdmcyk7DQo+ICsJCWlndF9hc3NlcnQocHdtIDwg cHJldl9wd20pOw0KPiArCQlwcmV2X3B3bSA9IHB3bTsNCj4gKwl9DQo+ICsNCj4gKwlzbGVlcChj b252ZXJnZW5jZV9kZWxheSAtIDEpOw0KPiArDQo+ICsJcHJldl9wd20gPSByZWFkX3RhcmdldF9i YWNrbGlnaHRfcHdtKGRlYnVnZnMpOw0KPiArCWN1cnIgPSByZWFkX2N1cnJlbnRfYmFja2xpZ2h0 X3B3bShkZWJ1Z2ZzKTsNCj4gKw0KPiArCWlndF9hc3NlcnRfZXEocHJldl9wd20sIGN1cnIpOw0K PiArfQ0KPiArDQo+ICtpZ3RfbWFpbg0KPiArew0KPiArCWlndF9kaXNwbGF5X3QgZGlzcGxheTsN Cj4gKwlpbnQgZGVidWdmczsNCj4gKwllbnVtIHBpcGUgcGlwZTsNCj4gKwlpZ3Rfb3V0cHV0X3Qg Km91dHB1dDsNCj4gKw0KPiArCWlndF9za2lwX29uX3NpbXVsYXRpb24oKTsNCj4gKw0KPiArCWln dF9maXh0dXJlIHsNCj4gKwkJZGlzcGxheS5kcm1fZmQgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVy KERSSVZFUl9BTURHUFUpOw0KPiArDQo+ICsJCWlmIChkaXNwbGF5LmRybV9mZCA9PSAtMSkNCj4g KwkJCWlndF9za2lwKCJOb3QgYW4gYW1kZ3B1IGRyaXZlci5cbiIpOw0KPiArDQo+ICsJCWRlYnVn ZnMgPSBpZ3RfZGVidWdmc19kaXIoZGlzcGxheS5kcm1fZmQpOw0KPiArDQo+ICsJCWttc3Rlc3Rf c2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsNCj4gKw0KPiArCQlpZ3RfZGlzcGxheV9yZXF1aXJlKCZk aXNwbGF5LCBkaXNwbGF5LmRybV9mZCk7DQo+ICsNCj4gKwkJc2tpcF9pZl9pbmNvbXBhdGlibGUo JmRpc3BsYXksIGRlYnVnZnMpOw0KPiArDQo+ICsJCWZvcl9lYWNoX3BpcGVfd2l0aF92YWxpZF9v dXRwdXQoJmRpc3BsYXksIHBpcGUsIG91dHB1dCkgew0KPiArCQkJaWYgKG91dHB1dC0+Y29uZmln LmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX2VEUCkNCj4g KwkJCQlicmVhazsNCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCWlndF9zdWJ0ZXN0KCJkcG1zX2N5 Y2xlIikNCj4gKwkJYmFja2xpZ2h0X2RwbXNfY3ljbGUoJmRpc3BsYXksIGRlYnVnZnMsIG91dHB1 dCk7DQo+ICsJaWd0X3N1YnRlc3QoImJhY2tsaWdodF9tb25vdG9uaWNfYmFzaWMiKQ0KPiArCQli YWNrbGlnaHRfbW9ub3RvbmljX2Jhc2ljKCZkaXNwbGF5LCBkZWJ1Z2ZzKTsNCj4gKwlpZ3Rfc3Vi dGVzdCgiYmFja2xpZ2h0X21vbm90b25pY19hYm0iKQ0KPiArCQliYWNrbGlnaHRfbW9ub3Rvbmlj X2FibSgmZGlzcGxheSwgZGVidWdmcyk7DQo+ICsJaWd0X3N1YnRlc3QoImFibV9lbmFibGVkIikN Cj4gKwkJYWJtX2VuYWJsZWQoJmRpc3BsYXksIGRlYnVnZnMpOw0KPiArCWlndF9zdWJ0ZXN0KCJh Ym1fZ3JhZHVhbCIpDQo+ICsJCWFibV9ncmFkdWFsKCZkaXNwbGF5LCBkZWJ1Z2ZzKTsNCj4gKw0K PiArCWlndF9maXh0dXJlIHsNCj4gKwkJaWd0X2Rpc3BsYXlfZmluaSgmZGlzcGxheSk7DQo+ICsJ fQ0KPiArfQ0KPiANCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=