From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-eopbgr740077.outbound.protection.outlook.com [40.107.74.77]) by gabe.freedesktop.org (Postfix) with ESMTPS id D086B6E33E for ; Thu, 24 Jan 2019 16:04:41 +0000 (UTC) From: "Wentland, Harry" Date: Thu, 24 Jan 2019 16:04:39 +0000 Message-ID: References: <20190109194932.16679-1-nicholas.kazlauskas@amd.com> In-Reply-To: <20190109194932.16679-1-nicholas.kazlauskas@amd.com> Content-Language: en-US Content-ID: <3642FF8C00E13D45B0436D08D3CA6A06@namprd12.prod.outlook.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] tests: Add variable refresh rate 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: "Kazlauskas, Nicholas" , "igt-dev@lists.freedesktop.org" Cc: Manasi Navare List-ID: T24gMjAxOS0wMS0wOSAyOjQ5IHAubS4sIE5pY2hvbGFzIEthemxhdXNrYXMgd3JvdGU6DQo+IFRo ZXJlIGFyZSAzIHRlc3RzIGZvciBiYXNpYyB2YXJpYWJsZSByZWZyZXNoIHJhdGUgZnVuY3Rpb25h bGl0eS4NCj4gDQo+IFRoZSB0ZXN0cyBtZWFzdXJlIGZsaXBwaW5nIGF0IHRoZSBtaWRwb2ludCBi ZXR3ZWVuIHRoZSBjdXJyZW50IG1vZGUncw0KPiByZWZyZXNoIHJhdGUgYW5kIHRoZSBtaW5pbXVt IHN1cHBvcnRlZCB2YXJpYWJsZSByZWZyZXNoIHJhdGUuDQo+IA0KPiBJdCB0ZXN0cyB0aGF0IFZS UiBpcyBlbmFibGVkIGFuZCB0aGF0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZmxpcA0KPiB0aW1l c3RhbXBzIGNvbnZlcmdlcyB0byB0aGUgcmVxdWVzdGVkIHJhdGUuIEl0IGFsc28gdGVzdHMgdGhp cyB1bmRlcg0KPiBib3RoIFMzIGFuZCBEUE1TLg0KPiANCj4gUG90ZW50aWFsIGlkZWFzIGZvciBm dXR1cmUgdGVzdHM6DQo+IC0gVGVzdCBiZWhhdmlvciBpbnNpZGUgVlJSIHJhbmdlIHdpdGggYSBz dGVwcGluZyB0ZXN0DQo+IC0gVGVzdCBiZWhhdmlvciBvdXRzaWRlIG9mIFZSUiByYW5nZQ0KPiAt IE11bHRpLW1vbml0b3IgKGxpbWl0ZWQgYnkgbm8gYXN5bmMgcGFnZWZsaXBzIGluIERSTSBhdG9t aWMgQVBJKQ0KPiANCj4gQ2M6IEhhcnJ5IFdlbnRsYW5kIDxoYXJyeS53ZW50bGFuZEBhbWQuY29t Pg0KPiBDYzogTGVvIExpIDxzdW5wZW5nLmxpQGFtZC5jb20+DQo+IENjOiBNYW5hc2kgTmF2YXJl IDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBOaWNob2xhcyBL YXpsYXVza2FzIDxuaWNob2xhcy5rYXpsYXVza2FzQGFtZC5jb20+DQo+IC0tLQ0KPiAgbGliL2ln dF9rbXMuYyAgICAgICAgICB8ICAgMyArDQo+ICBsaWIvaWd0X2ttcy5oICAgICAgICAgIHwgICAy ICsNCj4gIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgfCAgIDEgKw0KPiAgdGVzdHMva21zX3Zyci5j ICAgICAgICB8IDQxNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0K PiAgdGVzdHMvbWVzb24uYnVpbGQgICAgICB8ICAgMSArDQo+ICA1IGZpbGVzIGNoYW5nZWQsIDQy NCBpbnNlcnRpb25zKCspDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX3Zyci5jDQo+ IA0KPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuYyBiL2xpYi9pZ3Rfa21zLmMNCj4gaW5kZXgg Njg0YTU5OWMuLjJlZGYxOWVjIDEwMDY0NA0KPiAtLS0gYS9saWIvaWd0X2ttcy5jDQo+ICsrKyBi L2xpYi9pZ3Rfa21zLmMNCj4gQEAgLTE4OSw2ICsxODksNyBAQCBjb25zdCBjaGFyICogY29uc3Qg aWd0X2NydGNfcHJvcF9uYW1lc1tJR1RfTlVNX0NSVENfUFJPUFNdID0gew0KPiAgCVtJR1RfQ1JU Q19NT0RFX0lEXSA9ICJNT0RFX0lEIiwNCj4gIAlbSUdUX0NSVENfQUNUSVZFXSA9ICJBQ1RJVkUi LA0KPiAgCVtJR1RfQ1JUQ19PVVRfRkVOQ0VfUFRSXSA9ICJPVVRfRkVOQ0VfUFRSIiwNCj4gKwlb SUdUX0NSVENfVlJSX0VOQUJMRURdID0gIlZSUl9FTkFCTEVEIiwNCj4gIH07DQo+ICANCj4gIGNv bnN0IGNoYXIgKiBjb25zdCBpZ3RfY29ubmVjdG9yX3Byb3BfbmFtZXNbSUdUX05VTV9DT05ORUNU T1JfUFJPUFNdID0gew0KPiBAQCAtMTk3LDYgKzE5OCw3IEBAIGNvbnN0IGNoYXIgKiBjb25zdCBp Z3RfY29ubmVjdG9yX3Byb3BfbmFtZXNbSUdUX05VTV9DT05ORUNUT1JfUFJPUFNdID0gew0KPiAg CVtJR1RfQ09OTkVDVE9SX0RQTVNdID0gIkRQTVMiLA0KPiAgCVtJR1RfQ09OTkVDVE9SX0JST0FE Q0FTVF9SR0JdID0gIkJyb2FkY2FzdCBSR0IiLA0KPiAgCVtJR1RfQ09OTkVDVE9SX0NPTlRFTlRf UFJPVEVDVElPTl0gPSAiQ29udGVudCBQcm90ZWN0aW9uIiwNCj4gKwlbSUdUX0NPTk5FQ1RPUl9W UlJfQ0FQQUJMRV0gPSAidnJyX2NhcGFibGUiLA0KPiAgfTsNCj4gIA0KPiAgLyoNCj4gQEAgLTE3 ODYsNiArMTc4OCw3IEBAIHN0YXRpYyB2b2lkIGlndF9waXBlX3Jlc2V0KGlndF9waXBlX3QgKnBp cGUpDQo+ICB7DQo+ICAJaWd0X3BpcGVfb2JqX3NldF9wcm9wX3ZhbHVlKHBpcGUsIElHVF9DUlRD X01PREVfSUQsIDApOw0KPiAgCWlndF9waXBlX29ial9zZXRfcHJvcF92YWx1ZShwaXBlLCBJR1Rf Q1JUQ19BQ1RJVkUsIDApOw0KPiArCWlndF9waXBlX29ial9zZXRfcHJvcF92YWx1ZShwaXBlLCBJ R1RfQ1JUQ19WUlJfRU5BQkxFRCwgMCk7DQo+ICAJaWd0X3BpcGVfb2JqX2NsZWFyX3Byb3BfY2hh bmdlZChwaXBlLCBJR1RfQ1JUQ19PVVRfRkVOQ0VfUFRSKTsNCj4gIA0KPiAgCXBpcGUtPm91dF9m ZW5jZV9mZCA9IC0xOw0KPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21z LmgNCj4gaW5kZXggNGE3YzNjOTcuLjY3OWQ0ZTg0IDEwMDY0NA0KPiAtLS0gYS9saWIvaWd0X2tt cy5oDQo+ICsrKyBiL2xpYi9pZ3Rfa21zLmgNCj4gQEAgLTEwNCw2ICsxMDQsNyBAQCBlbnVtIGln dF9hdG9taWNfY3J0Y19wcm9wZXJ0aWVzIHsNCj4gICAgICAgICBJR1RfQ1JUQ19NT0RFX0lELA0K PiAgICAgICAgIElHVF9DUlRDX0FDVElWRSwNCj4gICAgICAgICBJR1RfQ1JUQ19PVVRfRkVOQ0Vf UFRSLA0KPiArICAgICAgIElHVF9DUlRDX1ZSUl9FTkFCTEVELA0KPiAgICAgICAgIElHVF9OVU1f Q1JUQ19QUk9QUw0KPiAgfTsNCj4gIA0KPiBAQCAtMTIxLDYgKzEyMiw3IEBAIGVudW0gaWd0X2F0 b21pY19jb25uZWN0b3JfcHJvcGVydGllcyB7DQo+ICAgICAgICAgSUdUX0NPTk5FQ1RPUl9EUE1T LA0KPiAgICAgICAgIElHVF9DT05ORUNUT1JfQlJPQURDQVNUX1JHQiwNCj4gICAgICAgICBJR1Rf Q09OTkVDVE9SX0NPTlRFTlRfUFJPVEVDVElPTiwNCj4gKyAgICAgICBJR1RfQ09OTkVDVE9SX1ZS Ul9DQVBBQkxFLA0KPiAgICAgICAgIElHVF9OVU1fQ09OTkVDVE9SX1BST1BTDQo+ICB9Ow0KPiAg DQo+IGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUu c291cmNlcw0KPiBpbmRleCBiYWFjN2FlMC4uMjM5YmVkNTkgMTAwNjQ0DQo+IC0tLSBhL3Rlc3Rz L01ha2VmaWxlLnNvdXJjZXMNCj4gKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcw0KPiBAQCAt ODgsNiArODgsNyBAQCBURVNUU19wcm9ncyA9IFwNCj4gIAlrbXNfdHZfbG9hZF9kZXRlY3QgXA0K PiAgCWttc191bml2ZXJzYWxfcGxhbmUgXA0KPiAgCWttc192YmxhbmsgXA0KPiArCWttc192cnIg XA0KPiAgCWttc19zZXF1ZW5jZSBcDQo+ICAJbWV0YV90ZXN0IFwNCj4gIAlwZXJmIFwNCj4gZGlm ZiAtLWdpdCBhL3Rlc3RzL2ttc192cnIuYyBiL3Rlc3RzL2ttc192cnIuYw0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMC4uYzZiODhlNTMNCj4gLS0tIC9kZXYvbnVsbA0K PiArKysgYi90ZXN0cy9rbXNfdnJyLmMNCj4gQEAgLTAsMCArMSw0MTcgQEANCj4gKy8qDQo+ICsg KiBDb3B5cmlnaHQgMjAxOCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuDQo+ICsgKg0KPiAr ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGENCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksDQo+ICsgKiB0byBkZWFs IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs aW1pdGF0aW9uDQo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwNCj4gKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQ0KPiAr ICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoNCj4gKyAqDQo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbg0KPiArICogYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQo+ICsgKg0K PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KPiArICogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5P IEVWRU5UIFNIQUxMDQo+ICsgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1INCj4gKyAqIE9USEVSIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLA0K PiArICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SDQo+ICsgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUu DQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgImlndC5oIg0KPiArI2luY2x1ZGUgInN3X3N5bmMu aCINCj4gKyNpbmNsdWRlIDxmY250bC5oPg0KPiArI2luY2x1ZGUgPHNpZ25hbC5oPg0KPiArDQo+ ICsjZGVmaW5lIE5TRUNTX1BFUl9TRUMgKDEwMDAwMDAwMDB1bGwpDQo+ICsNCj4gKy8qDQo+ICsg KiBFYWNoIHRlc3QgbWVhc3VyZW1lbnQgc3RlcCBydW5zIGZvciB+NSBzZWNvbmRzLg0KPiArICog VGhpcyBnaXZlcyBhIGRlY2VudCBzYW1wbGUgc2l6ZSArIGVub3VnaCB0aW1lIGZvciBhbnkgYWRh cHRhdGlvbiB0byBvY2N1ciBpZiBuZWNlc3NhcnkuDQo+ICsgKi8NCj4gKyNkZWZpbmUgVEVTVF9E VVJBVElPTl9OUyAoNTAwMDAwMDAwMHVsbCkNCj4gKw0KPiArZW51bSB7DQo+ICsJVEVTVF9OT05F ID0gMCwNCj4gKwlURVNUX0RQTVMgPSAxIDw8IDAsDQo+ICsJVEVTVF9TVVNQRU5EID0gMSA8PCAx LA0KPiArfTsNCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3QgcmFuZ2Ugew0KPiArCXVuc2lnbmVkIGlu dCBtaW47DQo+ICsJdW5zaWduZWQgaW50IG1heDsNCj4gK30gcmFuZ2VfdDsNCj4gKw0KPiArdHlw ZWRlZiBzdHJ1Y3QgZGF0YSB7DQo+ICsJaWd0X2Rpc3BsYXlfdCBkaXNwbGF5Ow0KPiArCWludCBk cm1fZmQ7DQo+ICsJaWd0X2ZiX3QgZmIwOw0KPiArCWlndF9mYl90IGZiMTsNCj4gK30gZGF0YV90 Ow0KPiArDQo+ICt0eXBlZGVmIHZvaWQgKCp0ZXN0X3QpKGRhdGFfdCosIGVudW0gcGlwZSwgaWd0 X291dHB1dF90KiwgdWludDMyX3QpOw0KPiArDQo+ICsvKiBDb252ZXJ0cyBhIHRpbWVzcGVjIHN0 cnVjdHVyZSB0byBuYW5vc2Vjb25kcy4gKi8NCj4gK3N0YXRpYyB1aW50NjRfdCB0aW1lc3BlY190 b19ucyhzdHJ1Y3QgdGltZXNwZWMgKnRzKQ0KPiArew0KPiArCXJldHVybiB0cy0+dHZfc2VjICog TlNFQ1NfUEVSX1NFQyArIHRzLT50dl9uc2VjOw0KPiArfQ0KPiArDQo+ICsvKg0KPiArICogR2V0 cyBhIHZibGFuayBldmVudCBmcm9tIERSTSBhbmQgcmV0dXJucyBpdHMgdGltZXN0YW1wIGluIG5h bm9zZWNvbmRzLg0KPiArICogVGhpcyBibG9ja3MgdW50aWwgdGhlIGV2ZW50IGlzIHJlY2VpdmVk Lg0KPiArICovDQo+ICtzdGF0aWMgdWludDY0X3QgZ2V0X3ZibGFua19ldmVudF9ucyhkYXRhX3Qg KmRhdGEpDQo+ICt7DQo+ICsJc3RydWN0IGRybV9ldmVudF92YmxhbmsgZXY7DQo+ICsNCj4gKwlp Z3Rfc2V0X3RpbWVvdXQoMSwgIldhaXRpbmcgZm9yIHZibGFuayBldmVudFxuIik7DQo+ICsJaWd0 X2Fzc2VydF9lcShyZWFkKGRhdGEtPmRybV9mZCwgJmV2LCBzaXplb2YoZXYpKSwgc2l6ZW9mKGV2 KSk7DQo+ICsJaWd0X3Jlc2V0X3RpbWVvdXQoKTsNCj4gKw0KPiArCXJldHVybiBldi50dl9zZWMg KiBOU0VDU19QRVJfU0VDICsgZXYudHZfdXNlYyAqIDEwMDB1bGw7DQo+ICt9DQo+ICsNCj4gKy8q DQo+ICsgKiBSZXR1cm5zIHRoZSBjdXJyZW50IENMT0NLX01PTk9UT05JQyB0aW1lIGluIG5hbm9z ZWNvbmRzLg0KPiArICogVGhlIHJlZ3VsYXIgSUdUIGhlbHBlcnMgY2FuJ3QgYmUgdXNlZCBzaW5j ZSB0aGV5IGRlZmF1bHQgdG8NCj4gKyAqIENMT0NLX01PTk9UT05JQ19SQVcgLSB3aGljaCBpc24n dCB3aGF0IHRoZSBrZXJuZWwgdXNlcyBmb3IgaXRzIHRpbWVzdGFtcHMuDQo+ICsgKi8NCj4gK3N0 YXRpYyB1aW50NjRfdCBnZXRfdGltZV9ucyh2b2lkKQ0KPiArew0KPiArCXN0cnVjdCB0aW1lc3Bl YyB0czsNCj4gKwltZW1zZXQoJnRzLCAwLCBzaXplb2YodHMpKTsNCj4gKwllcnJubyA9IDA7DQo+ ICsNCj4gKwlpZiAoIWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmdHMpKQ0KPiArCQly ZXR1cm4gdGltZXNwZWNfdG9fbnMoJnRzKTsNCj4gKw0KPiArCWlndF93YXJuKCJDb3VsZCBub3Qg cmVhZCBtb25vdG9uaWMgdGltZTogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7DQo+ICsJaWd0X2Zh aWwoLWVycm5vKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICsvKiBSZXR1cm5z IHRoZSByYXRlIGR1cmF0aW9uIGluIG5hbm9zZWNvbmRzIGZvciB0aGUgZ2l2ZW4gcmVmcmVzaCBy YXRlLiAqLw0KPiArc3RhdGljIHVpbnQ2NF90IHJhdGVfZnJvbV9yZWZyZXNoKHVpbnQ2NF90IHJl ZnJlc2gpDQo+ICt7DQo+ICsJcmV0dXJuIE5TRUNTX1BFUl9TRUMgLyByZWZyZXNoOw0KPiArfQ0K PiArDQo+ICsvKiBSZXR1cm5zIHRoZSBtaW4gYW5kIG1heCB2cnIgcmFuZ2UgZnJvbSB0aGUgY29u bmVjdG9yIGRlYnVnZnMuICovDQo+ICtzdGF0aWMgcmFuZ2VfdCBnZXRfdnJyX3JhbmdlKGRhdGFf dCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQpDQo+ICt7DQo+ICsJY2hhciBidWZbMjU2XTsN Cj4gKwljaGFyICpzdGFydF9sb2M7DQo+ICsJaW50IGZkLCByZXM7DQo+ICsJcmFuZ2VfdCByYW5n ZTsNCj4gKw0KPiArCWZkID0gaWd0X2RlYnVnZnNfY29ubmVjdG9yX2RpcihkYXRhLT5kcm1fZmQs IG91dHB1dC0+bmFtZSwgT19SRE9OTFkpOw0KPiArCWlndF9hc3NlcnQoZmQgPj0gMCk7DQo+ICsN Cj4gKwlyZXMgPSBpZ3RfZGVidWdmc19zaW1wbGVfcmVhZChmZCwgInZycl9yYW5nZSIsIGJ1Ziwg c2l6ZW9mKGJ1ZikpOw0KPiArCWlndF9yZXF1aXJlKHJlcyA+IDApOw0KPiArDQo+ICsJY2xvc2Uo ZmQpOw0KPiArDQo+ICsJaWd0X2Fzc2VydChzdGFydF9sb2MgPSBzdHJzdHIoYnVmLCAiTWluOiAi KSk7DQo+ICsJaWd0X2Fzc2VydF9lcShzc2NhbmYoc3RhcnRfbG9jLCAiTWluOiAldSIsICZyYW5n ZS5taW4pLCAxKTsNCj4gKw0KPiArCWlndF9hc3NlcnQoc3RhcnRfbG9jID0gc3Ryc3RyKGJ1Ziwg Ik1heDogIikpOw0KPiArCWlndF9hc3NlcnRfZXEoc3NjYW5mKHN0YXJ0X2xvYywgIk1heDogJXUi LCAmcmFuZ2UubWF4KSwgMSk7DQo+ICsNCg0KV291bGQgYmUgZ29vZCB0byBzZWUgdGhpcyBwYXRj aCBvbiBhbWQtZ2Z4IHNvIHJldmlld2VycyBjYW4gcmVmZXJlbmNlIGl0Lg0KDQo+ICsJcmV0dXJu IHJhbmdlOw0KPiArfQ0KPiArDQo+ICsvKiBSZXR1cm5zIGEgc3VpdGFibGUgdnJyIHRlc3QgZnJl cXVlbmN5LiAqLw0KPiArc3RhdGljIHVpbnQzMl90IGdldF90ZXN0X3JhdGVfbnMoZGF0YV90ICpk YXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCkNCj4gK3sNCj4gKwlkcm1Nb2RlTW9kZUluZm8gKm1v ZGUgPSBpZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7DQo+ICsJcmFuZ2VfdCByYW5nZTsNCj4g Kwl1aW50MzJfdCB2dGVzdDsNCj4gKw0KPiArCS8qDQo+ICsJICogVGhlIGZyZXF1ZW5jeSB3aXRo IHRoZSBmYXN0ZXN0IGNvbnZlcmdlbmNlIHNwZWVkIHNob3VsZCBiZQ0KPiArCSAqIHRoZSBtaWRw b2ludCBiZXR3ZWVuIHRoZSBjdXJyZW50IG1vZGUgdmZyZXEgYW5kIHRoZSBtaW4NCj4gKwkgKiBz dXBwb3J0ZWQgdmZyZXEuDQo+ICsJICovDQo+ICsJcmFuZ2UgPSBnZXRfdnJyX3JhbmdlKGRhdGEs IG91dHB1dCk7DQo+ICsJaWd0X3JlcXVpcmUobW9kZS0+dnJlZnJlc2ggPiByYW5nZS5taW4pOw0K PiArDQo+ICsJdnRlc3QgPSAobW9kZS0+dnJlZnJlc2ggLSByYW5nZS5taW4pIC8gMiArIHJhbmdl Lm1pbjsNCj4gKwlpZ3RfcmVxdWlyZSh2dGVzdCA8IG1vZGUtPnZyZWZyZXNoKTsNCj4gKw0KPiAr CXJldHVybiByYXRlX2Zyb21fcmVmcmVzaCh2dGVzdCk7DQo+ICt9DQo+ICsNCj4gKy8qIFJldHVy bnMgdHJ1ZSBpZiBhbiBvdXRwdXQgc3VwcG9ydHMgVlJSLiAqLw0KPiArc3RhdGljIGJvb2wgaGFz X3ZycihpZ3Rfb3V0cHV0X3QgKm91dHB1dCkNCj4gK3sNCj4gKwlyZXR1cm4gaWd0X291dHB1dF9o YXNfcHJvcChvdXRwdXQsIElHVF9DT05ORUNUT1JfVlJSX0NBUEFCTEUpICYmDQo+ICsJICAgICAg IGlndF9vdXRwdXRfZ2V0X3Byb3Aob3V0cHV0LCBJR1RfQ09OTkVDVE9SX1ZSUl9DQVBBQkxFKTsN Cj4gK30NCj4gKw0KPiArLyogVG9nZ2xlcyB2YXJpYWJsZSByZWZyZXNoIHJhdGUgb24gdGhlIHBp cGUuICovDQo+ICtzdGF0aWMgdm9pZCBzZXRfdnJyX29uX3BpcGUoZGF0YV90ICpkYXRhLCBlbnVt IHBpcGUgcGlwZSwgYm9vbCBlbmFibGVkKQ0KPiArew0KPiArCWlndF9waXBlX3NldF9wcm9wX3Zh bHVlKCZkYXRhLT5kaXNwbGF5LCBwaXBlLCBJR1RfQ1JUQ19WUlJfRU5BQkxFRCwNCj4gKwkJCQll bmFibGVkKTsNCj4gKwlpZ3RfZGlzcGxheV9jb21taXRfYXRvbWljKCZkYXRhLT5kaXNwbGF5LCAw LCBOVUxMKTsNCj4gK30NCj4gKw0KPiArLyogUHJlcGFyZSB0aGUgZGlzcGxheSBmb3IgdGVzdGlu ZyBvbiB0aGUgZ2l2ZW4gcGlwZS4gKi8NCj4gK3N0YXRpYyB2b2lkIHByZXBhcmVfdGVzdChkYXRh X3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVtIHBpcGUgcGlwZSkNCj4gK3sNCj4g Kwlkcm1Nb2RlTW9kZUluZm8gbW9kZSA9ICppZ3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7DQo+ ICsJaWd0X3BsYW5lX3QgKnByaW1hcnk7DQo+ICsJY2Fpcm9fdCAqY3I7DQo+ICsNCj4gKwkvKiBS ZXNldCBvdXRwdXQgKi8NCj4gKwlpZ3RfZGlzcGxheV9yZXNldCgmZGF0YS0+ZGlzcGxheSk7DQo+ ICsJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOw0KPiArDQo+ICsJLyogUHJlcGFy ZSByZXNvdXJjZXMgKi8NCj4gKwlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZi MSk7DQo+ICsJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5mYjApOw0KPiArDQoN ClNob3VsZCB3ZSBkbyB0aGlzIGF0IHRoZSBlbmQgb2YgZWFjaCB0ZXN0IGluIGEgY2xlYW51cF90 ZXN0PyBOb3Qgc3VyZSB3aHkgd2UncmUgZG9pbmcgdGhpcyBoZXJlLCBvdGhlciB0aGFuIGNsZWFu aW5nIHVwIGZyb20gdGhlIHByZXZpb3VzIHRlc3QuDQoNCkhhcnJ5DQoNCj4gKwlpZ3RfY3JlYXRl X2NvbG9yX2ZiKGRhdGEtPmRybV9mZCwgbW9kZS5oZGlzcGxheSwgbW9kZS52ZGlzcGxheSwNCj4g KwkJCSAgICBEUk1fRk9STUFUX1hSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLA0K PiArCQkJICAgIDAuNTAsIDAuNTAsIDAuNTAsICZkYXRhLT5mYjApOw0KPiArDQo+ICsJaWd0X2Ny ZWF0ZV9jb2xvcl9mYihkYXRhLT5kcm1fZmQsIG1vZGUuaGRpc3BsYXksIG1vZGUudmRpc3BsYXks DQo+ICsJCQkgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9O RSwNCj4gKwkJCSAgICAwLjUwLCAwLjUwLCAwLjUwLCAmZGF0YS0+ZmIxKTsNCj4gKw0KPiArCWNy ID0gaWd0X2dldF9jYWlyb19jdHgoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmIwKTsNCj4gKw0KPiAr CWlndF9wYWludF9jb2xvcihjciwgMCwgMCwgbW9kZS5oZGlzcGxheSAvIDEwLCBtb2RlLnZkaXNw bGF5IC8gMTAsDQo+ICsJCQkxLjAwLCAwLjAwLCAwLjAwKTsNCj4gKw0KPiArCS8qIFRha2UgY2Fy ZSBvZiBhbnkgcmVxdWlyZWQgbW9kZXNldHRpbmcgYmVmb3JlIHRoZSB0ZXN0IGJlZ2lucy4gKi8N Cj4gKwlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsIERSTV9QTEFO RV9UWVBFX1BSSU1BUlkpOw0KPiArCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmRhdGEtPmZi MCk7DQo+ICsNCj4gKwlpZ3RfZGlzcGxheV9jb21taXRfYXRvbWljKCZkYXRhLT5kaXNwbGF5LA0K PiArCQkJCSAgRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQsIE5VTEwpOw0KPiArfQ0KPiAr DQo+ICsvKiBXYWl0cyBmb3IgdGhlIHZibGFuayBpbnRlcnZhbC4gUmV0dXJucyB0aGUgdmJsYW5r IHRpbWVzdGFtcCBpbiBucy4gKi8NCj4gK3N0YXRpYyB1aW50NjRfdA0KPiArd2FpdF9mb3JfdmJs YW5rKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUpDQo+ICt7DQo+ICsJZHJtVkJsYW5rIHZi bCA9IHsgMCB9Ow0KPiArDQo+ICsJdmJsLnJlcXVlc3QudHlwZSA9IGttc3Rlc3RfZ2V0X3ZibF9m bGFnKHBpcGUpOw0KPiArCXZibC5yZXF1ZXN0LnR5cGUgfD0gRFJNX1ZCTEFOS19SRUxBVElWRSB8 IERSTV9WQkxBTktfRVZFTlQ7DQo+ICsJdmJsLnJlcXVlc3Quc2VxdWVuY2UgPSAxOw0KPiArCWRy bVdhaXRWQmxhbmsoZGF0YS0+ZHJtX2ZkLCAmdmJsKTsNCj4gKw0KPiArCXJldHVybiBnZXRfdmJs YW5rX2V2ZW50X25zKGRhdGEpOw0KPiArfQ0KPiArDQo+ICsvKiBQZXJmb3JtcyBhbiBhc3luY2hy b25vdXMgbm9uLWJsb2NraW5nIHBhZ2UtZmxpcCBvbiBhIHBpcGUuICovDQo+ICtzdGF0aWMgaW50 DQo+ICtkb19mbGlwKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGVfaWQsIGlndF9mYl90ICpm YikNCj4gK3sNCj4gKwlpZ3RfcGlwZV90ICpwaXBlID0gJmRhdGEtPmRpc3BsYXkucGlwZXNbcGlw ZV9pZF07DQo+ICsJaW50IHJldDsNCj4gKw0KPiArCWlndF9zZXRfdGltZW91dCgxLCAiU2NoZWR1 bGluZyBwYWdlIGZsaXBcbiIpOw0KPiArDQo+ICsJLyoNCj4gKwkgKiBPbmx5IHRoZSBsZWdhY3kg ZmxpcCBpb2N0bCBzdXBwb3J0cyBhc3luYyBmbGlwcy4NCj4gKwkgKiBJdCdzIGFsc28gbm9uLWJs b2NraW5nLCBidXQgcmV0dXJucyAtRUJVU1kgaWYgZmxpcHBpbmcgdG9vIGZhc3QuDQo+ICsJICog MnggbW9uaXRvciB0ZXN0cyB3aWxsIG5lZWQgYXN5bmMgZmxpcHMgaW4gdGhlIGF0b21pYyBBUEku DQo+ICsJICovDQo+ICsJZG8gew0KPiArCQlyZXQgPSBkcm1Nb2RlUGFnZUZsaXAoZGF0YS0+ZHJt X2ZkLCBwaXBlLT5jcnRjX2lkLA0KPiArCQkJCSAgICAgIGZiLT5mYl9pZCwNCj4gKwkJCQkgICAg ICBEUk1fTU9ERV9QQUdFX0ZMSVBfRVZFTlQgfA0KPiArCQkJCSAgICAgIERSTV9NT0RFX1BBR0Vf RkxJUF9BU1lOQywNCj4gKwkJCQkgICAgICBkYXRhKTsNCj4gKwl9IHdoaWxlIChyZXQgPT0gLUVC VVNZKTsNCj4gKw0KPiArCWlndF9hc3NlcnRfZXEocmV0LCAwKTsNCj4gKwlpZ3RfcmVzZXRfdGlt ZW91dCgpOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBGbGlw cyBhdCB0aGUgZ2l2ZW4gcmF0ZSBhbmQgbWVhc3VyZXMgYWdhaW5zdCB0aGUgZXhwZWN0ZWQgdmFs dWUuDQo+ICsgKiBSZXR1cm5zIHRoZSBwYXNzIHJhdGUgYXMgYSBwZXJjZW50YWdlIGZyb20gMCAt IDEwMC4NCj4gKyAqDQo+ICsgKiBUaGUgVlJSIEFQSSBpcyBxdWl0ZSBmbGV4aWJsZSBpbiB0ZXJt cyBvZiBkZWZpbml0aW9uIC0gdGhlIGRyaXZlcg0KPiArICogY2FuIGFyYml0cmFyaWx5IHJlc3Ry aWN0IHRoZSBib3VuZHMgZnVydGhlciB0aGFuIHRoZSBhYnNvbHV0ZQ0KPiArICogbWluIGFuZCBt YXggcmFuZ2UuIEJ1dCBWUlIgaXMgcmVhbGx5IGFib3V0IGV4dGVuZGluZyB0aGUgZmxpcA0KPiAr ICogdG8gcHJldmVudCBzdHV0dGVyaW5nIG9yIHRvIG1hdGNoIGEgc291cmNlIGNvbnRlbnQgcmF0 ZS4NCj4gKyAqDQo+ICsgKiBUaGUgb25seSB3YXkgdG8gInByZXNlbnQiIGF0IGEgZml4ZWQgcmF0 ZSBsaWtlIHVzZXJzcGFjZSBpbiBhIHZlbmRvcg0KPiArICogbmV1dHJhbCBtYW5uZXIgaXMgdG8g ZG8gaXQgd2l0aCBhc3luYyBmbGlwcy4gVGhpcyBhdm9pZHMgdGhlIG5lZWQNCj4gKyAqIHRvIHdh aXQgZm9yIG5leHQgdmJsYW5rIGFuZCBpdCBzaG91bGQgZXZlbnR1YWxseSBjb252ZXJnZSBhdCB0 aGUNCj4gKyAqIGRlc2lyZWQgcmF0ZS4NCj4gKyAqLw0KPiArc3RhdGljIHVpbnQzMl90DQo+ICtm bGlwX2FuZF9tZWFzdXJlKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQsIGVudW0g cGlwZSBwaXBlLA0KPiArCQkgdWludDY0X3QgcmF0ZV9ucywgdWludDY0X3QgZHVyYXRpb25fbnMp DQo+ICt7DQo+ICsJdWludDY0X3Qgc3RhcnRfbnMsIGxhc3RfdmJsYW5rX25zOw0KPiArCXVpbnQz Ml90IHRvdGFsX2ZsaXAgPSAwLCB0b3RhbF9wYXNzID0gMDsNCj4gKwlib29sIGZyb250ID0gZmFs c2U7DQo+ICsNCj4gKwkvKiBBbGlnbiB3aXRoIHRoZSB2YmxhbmsgcmVnaW9uIHRvIHNwZWVkIHVw IGNvbnZlcmdlbmNlLiAqLw0KPiArCWxhc3RfdmJsYW5rX25zID0gd2FpdF9mb3JfdmJsYW5rKGRh dGEsIHBpcGUpOw0KPiArCXN0YXJ0X25zID0gZ2V0X3RpbWVfbnMoKTsNCj4gKw0KPiArCWZvciAo OzspIHsNCj4gKwkJdWludDY0X3Qgbm93X25zLCB2YmxhbmtfbnMsIHdhaXRfbnMsIHRhcmdldF9u czsNCj4gKwkJaW50NjRfdCBkaWZmX25zOw0KPiArDQo+ICsJCWZyb250ID0gIWZyb250Ow0KPiAr CQlkb19mbGlwKGRhdGEsIHBpcGUsIGZyb250ID8gJmRhdGEtPmZiMSA6ICZkYXRhLT5mYjApOw0K PiArDQo+ICsJCXZibGFua19ucyA9IGdldF92YmxhbmtfZXZlbnRfbnMoZGF0YSk7DQo+ICsJCWRp ZmZfbnMgPSByYXRlX25zIC0gKHZibGFua19ucyAtIGxhc3RfdmJsYW5rX25zKTsNCj4gKwkJbGFz dF92YmxhbmtfbnMgPSB2YmxhbmtfbnM7DQo+ICsNCj4gKwkJdG90YWxfZmxpcCArPSAxOw0KPiAr DQo+ICsJCS8qDQo+ICsJCSAqIENoZWNrIGlmIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3 byBmbGlwIHRpbWVzdGFtcHMNCj4gKwkJICogd2FzIHdpdGhpbiB0aGUgcmVxdWlyZWQgdGhyZXNo b2xkIGZyb20gdGhlIGV4cGVjdGVkIHJhdGUuDQo+ICsJCSAqDQo+ICsJCSAqIEEgfjUwdXMgdGhy ZXNob2xkIGlzIGFyYml0cmFyeSwgYnV0IGl0J3Mgcm91Z2hseSB0aGUNCj4gKwkJICogZGlmZmVy ZW5jZSBiZXR3ZWVuIDE0NEh6IGFuZCAxNDNIeiB3aGljaCBzaG91bGQgZ2l2ZSB0aGlzDQo+ICsJ CSAqIGVub3VnaCBhY2N1cmFjeSBmb3IgbW9zdCB1c2UgY2FzZXMuDQo+ICsJCSAqLw0KPiArCQlp ZiAobGxhYnMoZGlmZl9ucykgPCA1MDAwMGxsKQ0KPiArCQkJdG90YWxfcGFzcyArPSAxOw0KPiAr DQo+ICsJCW5vd19ucyA9IGdldF90aW1lX25zKCk7DQo+ICsJCWlmIChub3dfbnMgLSBzdGFydF9u cyA+IGR1cmF0aW9uX25zKQ0KPiArCQkJYnJlYWs7DQo+ICsNCj4gKwkJLyoNCj4gKwkJICogQnVy biBDUFUgdW50aWwgbmV4dCB0aW1lc3RhbXAsIHNsZWVwaW5nIGlzbid0IGFjY3VyYXRlIGVub3Vn aC4NCj4gKwkJICogSXQncyB3b3J0aCBub3RpbmcgdGhhdCB0aGUgdGFyZ2V0IHRpbWVzdGFtcCBp cyBiYXNlZCBvbiBhYnNvbHV0ZQ0KPiArCQkgKiB0aW1lc3RhbXAgcmF0aGVyIHRoYW4gYSBkZWx0 YSB0byBhdm9pZCBhY2N1bXVsYXRpb24gZXJyb3JzLg0KPiArCQkgKi8NCj4gKwkJZGlmZl9ucyA9 IG5vd19ucyAtIHN0YXJ0X25zOw0KPiArCQl3YWl0X25zID0gKChkaWZmX25zICsgcmF0ZV9ucyAt IDEpIC8gcmF0ZV9ucykgKiByYXRlX25zOw0KPiArCQl0YXJnZXRfbnMgPSBzdGFydF9ucyArIHdh aXRfbnMgLSAxMDsNCj4gKw0KPiArCQl3aGlsZSAoZ2V0X3RpbWVfbnMoKSA8IHRhcmdldF9ucyk7 DQo+ICsJfQ0KPiArDQo+ICsJaWd0X2luZm8oIkNvbXBsZXRlZCAldSBmbGlwcywgJXUgd2VyZSBp biB0aHJlc2hvbGQgZm9yICVsdW5zLlxuIiwNCj4gKwkJIHRvdGFsX2ZsaXAsIHRvdGFsX3Bhc3Ms IHJhdGVfbnMpOw0KPiArDQo+ICsJcmV0dXJuIHRvdGFsX2ZsaXAgPyAoKHRvdGFsX3Bhc3MgKiAx MDApIC8gdG90YWxfZmxpcCkgOiAwOw0KPiArfQ0KPiArDQo+ICsvKiBCYXNpYyBWUlIgZmxpcCBm dW5jdGlvbmFsaXR5IHRlc3QgLSBlbmFibGUsIG1lYXN1cmUsIGRpc2FibGUsIG1lYXN1cmUgKi8N Cj4gK3N0YXRpYyB2b2lkDQo+ICt0ZXN0X2Jhc2ljKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBp cGUsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCB1aW50MzJfdCBmbGFncykNCj4gK3sNCj4gKwl1aW50 NjRfdCByYXRlOw0KPiArCXVpbnQzMl90IHJlc3VsdDsNCj4gKw0KPiArCXJhdGUgPSBnZXRfdGVz dF9yYXRlX25zKGRhdGEsIG91dHB1dCk7DQo+ICsNCj4gKwlwcmVwYXJlX3Rlc3QoZGF0YSwgb3V0 cHV0LCBwaXBlKTsNCj4gKw0KPiArCXNldF92cnJfb25fcGlwZShkYXRhLCBwaXBlLCAxKTsNCj4g Kw0KPiArCS8qDQo+ICsJICogRG8gYSBzaG9ydCBydW4gd2l0aCBWUlIsIGJ1dCBkb24ndCBjaGVj ayB0aGUgcmVzdWx0Lg0KPiArCSAqIFRoaXMgaXMgdG8gbWFrZSBzdXJlIHdlIHdlcmUgYWN0dWFs bHkgaW4gdGhlIG1pZGRsZSBvZg0KPiArCSAqIGFjdGl2ZSBmbGlwcGluZyBiZWZvcmUgZG9pbmcg dGhlIERQTVMvc3VzcGVuZCBzdGVwcy4NCj4gKwkgKi8NCj4gKwlmbGlwX2FuZF9tZWFzdXJlKGRh dGEsIG91dHB1dCwgcGlwZSwgcmF0ZSwgMjUwMDAwMDAwdWxsKTsNCj4gKw0KPiArCWlmIChmbGFn cyAmIFRFU1RfRFBNUykgew0KPiArCQlrbXN0ZXN0X3NldF9jb25uZWN0b3JfZHBtcyhvdXRwdXQt PmRpc3BsYXktPmRybV9mZCwNCj4gKwkJCQkJICAgb3V0cHV0LT5jb25maWcuY29ubmVjdG9yLA0K PiArCQkJCQkgICBEUk1fTU9ERV9EUE1TX09GRik7DQo+ICsJCWttc3Rlc3Rfc2V0X2Nvbm5lY3Rv cl9kcG1zKG91dHB1dC0+ZGlzcGxheS0+ZHJtX2ZkLA0KPiArCQkJCQkgICBvdXRwdXQtPmNvbmZp Zy5jb25uZWN0b3IsDQo+ICsJCQkJCSAgIERSTV9NT0RFX0RQTVNfT04pOw0KPiArCX0NCj4gKw0K PiArCWlmIChmbGFncyAmIFRFU1RfU1VTUEVORCkNCj4gKwkJaWd0X3N5c3RlbV9zdXNwZW5kX2F1 dG9yZXN1bWUoU1VTUEVORF9TVEFURV9NRU0sDQo+ICsJCQkJCSAgICAgIFNVU1BFTkRfVEVTVF9O T05FKTsNCj4gKw0KPiArCXJlc3VsdCA9IGZsaXBfYW5kX21lYXN1cmUoZGF0YSwgb3V0cHV0LCBw aXBlLCByYXRlLCBURVNUX0RVUkFUSU9OX05TKTsNCj4gKw0KPiArCXNldF92cnJfb25fcGlwZShk YXRhLCBwaXBlLCAwKTsNCj4gKw0KPiArCS8qIFRoaXMgY2hlY2sgaXMgZGVsYXllZCB1bnRpbCBh ZnRlciBWUlIgaXMgZGlzYWJsZWQgc28gaXQgaXNuJ3QNCj4gKwkgKiBsZWZ0IGVuYWJsZWQgaWYg dGhlIHRlc3QgZmFpbHMuICovDQo+ICsJaWd0X2Fzc2VydF9mKHJlc3VsdCA+IDc1LA0KPiArCQkg ICAgICJUYXJnZXQgVlJSIG9uIHRocmVzaG9sZCBub3QgcmVhY2hlZCwgcmVzdWx0IHdhcyAldSUl XG4iLA0KPiArCQkgICAgIHJlc3VsdCk7DQo+ICsNCj4gKwlyZXN1bHQgPSBmbGlwX2FuZF9tZWFz dXJlKGRhdGEsIG91dHB1dCwgcGlwZSwgcmF0ZSwgVEVTVF9EVVJBVElPTl9OUyk7DQo+ICsNCj4g KwlpZ3RfYXNzZXJ0X2YocmVzdWx0IDwgMTAsDQo+ICsJCSAgICAgIlRhcmdldCBWUlIgb2ZmIHRo cmVzaG9sZCBleGNlZWRlZCwgcmVzdWx0IHdhcyAldSUlXG4iLA0KPiArCQkgICAgIHJlc3VsdCk7 DQo+ICt9DQo+ICsNCj4gKy8qIFJ1bnMgdGVzdHMgb24gb3V0cHV0cyB0aGF0IGFyZSBWUlIgY2Fw YWJsZS4gKi8NCj4gK3N0YXRpYyB2b2lkDQo+ICtydW5fdnJyX3Rlc3QoZGF0YV90ICpkYXRhLCB0 ZXN0X3QgdGVzdCwgdWludDMyX3QgZmxhZ3MpDQo+ICt7DQo+ICsJaWd0X291dHB1dF90ICpvdXRw dXQ7DQo+ICsJYm9vbCBmb3VuZCA9IGZhbHNlOw0KPiArDQo+ICsJZm9yX2VhY2hfY29ubmVjdGVk X291dHB1dCgmZGF0YS0+ZGlzcGxheSwgb3V0cHV0KSB7DQo+ICsJCWVudW0gcGlwZSBwaXBlOw0K PiArDQo+ICsJCWlmICghaGFzX3ZycihvdXRwdXQpKQ0KPiArCQkJY29udGludWU7DQo+ICsNCj4g KwkJZm9yX2VhY2hfcGlwZSgmZGF0YS0+ZGlzcGxheSwgcGlwZSkNCj4gKwkJCWlmIChpZ3RfcGlw ZV9jb25uZWN0b3JfdmFsaWQocGlwZSwgb3V0cHV0KSkgew0KPiArCQkJCXRlc3QoZGF0YSwgcGlw ZSwgb3V0cHV0LCBmbGFncyk7DQo+ICsJCQkJZm91bmQgPSB0cnVlOw0KPiArCQkJCWJyZWFrOw0K PiArCQkJfQ0KPiArCX0NCj4gKw0KPiArCWlmICghZm91bmQpDQo+ICsJCWlndF9za2lwKCJObyB2 cnIgY2FwYWJsZSBvdXRwdXRzIGZvdW5kLlxuIik7DQo+ICt9DQo+ICsNCj4gK2lndF9tYWluDQo+ ICt7DQo+ICsJZGF0YV90IGRhdGEgPSB7IDAgfTsNCj4gKw0KPiArCWlndF9za2lwX29uX3NpbXVs YXRpb24oKTsNCj4gKw0KPiArCWlndF9maXh0dXJlIHsNCj4gKwkJZGF0YS5kcm1fZmQgPSBkcm1f b3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9BTlkpOw0KPiArDQo+ICsJCWttc3Rlc3Rfc2V0X3Z0 X2dyYXBoaWNzX21vZGUoKTsNCj4gKw0KPiArCQlpZ3RfZGlzcGxheV9yZXF1aXJlKCZkYXRhLmRp c3BsYXksIGRhdGEuZHJtX2ZkKTsNCj4gKwkJaWd0X3JlcXVpcmUoZGF0YS5kaXNwbGF5LmlzX2F0 b21pYyk7DQo+ICsJCWlndF9kaXNwbGF5X3JlcXVpcmVfb3V0cHV0KCZkYXRhLmRpc3BsYXkpOw0K PiArCX0NCj4gKw0KPiArCWlndF9zdWJ0ZXN0KCJmbGlwLWJhc2ljIikNCj4gKwkJcnVuX3Zycl90 ZXN0KCZkYXRhLCB0ZXN0X2Jhc2ljLCAwKTsNCj4gKw0KPiArCWlndF9zdWJ0ZXN0KCJmbGlwLWRw bXMiKQ0KPiArCQlydW5fdnJyX3Rlc3QoJmRhdGEsIHRlc3RfYmFzaWMsIFRFU1RfRFBNUyk7DQo+ ICsNCj4gKwlpZ3Rfc3VidGVzdCgiZmxpcC1zdXNwZW5kIikNCj4gKwkJcnVuX3Zycl90ZXN0KCZk YXRhLCB0ZXN0X2Jhc2ljLCBURVNUX1NVU1BFTkQpOw0KPiArDQo+ICsJaWd0X2ZpeHR1cmUgew0K PiArCQlpZ3RfZGlzcGxheV9maW5pKCZkYXRhLmRpc3BsYXkpOw0KPiArCX0NCj4gK30NCj4gZGlm ZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQNCj4gaW5kZXgg YjhhNmU2MWIuLmU4ODdmMTMxIDEwMDY0NA0KPiAtLS0gYS90ZXN0cy9tZXNvbi5idWlsZA0KPiAr KysgYi90ZXN0cy9tZXNvbi5idWlsZA0KPiBAQCAtNTksNiArNTksNyBAQCB0ZXN0X3Byb2dzID0g Ww0KPiAgCSdrbXNfdHZfbG9hZF9kZXRlY3QnLA0KPiAgCSdrbXNfdW5pdmVyc2FsX3BsYW5lJywN Cj4gIAkna21zX3ZibGFuaycsDQo+ICsJJ2ttc192cnInLA0KPiAgCSdtZXRhX3Rlc3QnLA0KPiAg CSdwZXJmJywNCj4gIAkncG1fYmFja2xpZ2h0JywNCj4gDQpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2lndC1kZXYK