From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6BC5D6ED33 for ; Thu, 12 Sep 2019 12:51:58 +0000 (UTC) From: "Ser, Simon" Date: Thu, 12 Sep 2019 12:51:53 +0000 Message-ID: References: <20190823182351.25822-1-madhumitha.tolakanahalli.pradeep@intel.com> <20190823182351.25822-3-madhumitha.tolakanahalli.pradeep@intel.com> <44a51c697ed71dbf239322e20e9de0b18bc0b42c.camel@intel.com> <20190827212949.GF701@intel.com> <20190912004703.GA6114@intel.com> In-Reply-To: <20190912004703.GA6114@intel.com> Content-Language: en-US Content-ID: <22C5DD6A84A3B341B684AFB21C2FB8E2@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t v2 2/2] igt/tests/kms_dp_tiled_display: kms test for display port tiled displays 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: "Navare, Manasi D" Cc: "igt-dev@lists.freedesktop.org" , "madhumitha.tp@gmail.com" , "Latvala, Petri" List-ID: T24gV2VkLCAyMDE5LTA5LTExIGF0IDE3OjQ3IC0wNzAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOg0K PiBPbiBGcmksIEF1ZyAzMCwgMjAxOSBhdCAwNDozOTo1M0FNIC0wNzAwLCBTZXIsIFNpbW9uIHdy b3RlOg0KPiA+IE9uIFR1ZSwgMjAxOS0wOC0yNyBhdCAxNDoyOSAtMDcwMCwgTWFuYXNpIE5hdmFy ZSB3cm90ZToNCj4gPiA+IE9uIFR1ZSwgQXVnIDI3LCAyMDE5IGF0IDAzOjQ5OjM4QU0gLTA3MDAs IFNlciwgU2ltb24gd3JvdGU6DQo+ID4gPiA+IFRoYW5rcyBmb3IgdGhlIG5ldyB2ZXJzaW9uISBI ZXJlIGFyZSBzb21lIG1vcmUgY29tbWVudHMuIFNvbWUgb2YgdGhlbQ0KPiA+ID4gPiBhcmUgbml0 cywgc29tZSBvZiB0aGVtIGFyZSBtb3JlIHNlcmlvdXMgcXVlc3Rpb25zLiBGZWVsIGZyZWUgdG8g bGV0IG1lDQo+ID4gPiA+IGtub3cgaWYgSSdtIG1pc3Rha2VuIG9yIGlmIHlvdSBkb24ndCB1bmRl cnN0YW5kIG9uZSBvZiB0aGVtLg0KPiA+ID4gDQo+ID4gPiBUaGFua3MgZm9yIHRoZSByZXZpZXcg Y29tbWVudHMgU2ltb24uIEkgd2lsbCBiZSB3b3JraW5nIG9uIGFkZHJlc3NpbmcgdGhlIGZvbGxv d2luZw0KPiA+ID4gcmV2aWV3IGNvbW1lbnRzIGFuZCB3aWxsIHRha2Ugb3ZlciB0aGlzIHBhdGNo IHNpbmNlIE1hZGh1bWl0aGEncyBpbnRlcm5zaGlwIGhhcyBlbmRlZC4NCj4gPiA+IEkgcmVhbGx5 IGFwcHJlY2lhdGUgYWxsIHlvdXIgaGVscCBhbmQgZmVlZGJhY2sgb24gdGhpcy4NCj4gPiA+IA0K PiA+ID4gUGxlYXNlIGZpbmQgbXkgYW5zd2VycyBiZWxvdzoNCj4gPiA+IA0KPiA+ID4gPiBPbiBG cmksIDIwMTktMDgtMjMgYXQgMTE6MjMgLTA3MDAsIE1hZGh1bWl0aGEgVG9sYWthbmFoYWxsaSBQ cmFkZWVwIHdyb3RlOg0KPiA+ID4gPiA+IFRoaXMgdGVzdCB2YWxpZGF0ZXMgdGhlIHRpbGVkIERQ IGRpc3BsYXlzIHRvIGRpc3BsYXkgYSB0ZXN0IHBhdHRlcm4NCj4gPiA+ID4gPiBzZWFtbGVzc2x5 IGFjcm9zcyB0aGUgdHdvIHRpbGVzLiBJdCB2YWxpZGF0ZXMgdGhlIHRyYW5zY29kZXIgcG9ydA0K PiA+ID4gPiA+IHN5bmMgZmVhdHVyZSBvbiBpOTE1IHRvIGdldCBhIHRlYXJmcmVlIHRpbGVkIGRp c3BsYXkgb3V0cHV0Lg0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IFJlbGF0ZWQga2VybmVsIHdvcmsg cGF0Y2hlcy0NCj4gPiA+ID4gPiBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvc2Vy aWVzLzU5ODM3LyNyZXY0Lg0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IFRoaXMgdGVzdCBjYW4gZXZl bnR1YWxseSBiZSBleHRlbmRlZCB0byBjb3ZlciB0aWxlZCBkaXNwbGF5IHN1cHBvcnQNCj4gPiA+ ID4gPiBvbiBvdGhlciBjb25uZWN0b3IgdHlwZXMuDQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gdjI6 IEFkZGVkIGEgY2hlY2sgZm9yIGNoZWNraW5nIHBhZ2VmbGlwIGV2ZW50IHRpbWVzdGFtcHMgKFNp bW9uLCBNYW5hc2kpDQo+ID4gPiA+ID4gICAgIE1pbm9yIHN0eWxlIGNoYW5nZXMgKFNpbW9uKQ0K PiA+ID4gPiA+ICAgIENvZGUgY2xlYW4tdXAgYW5kIHJlb3JkZXJpbmcNCj4gPiA+ID4gPiANCj4g PiA+ID4gPiANCj4gPiA+ID4gPiBDYzogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGlu dGVsLmNvbT4NCj4gPiA+ID4gPiBDYzogUGV0cmkgTGF0dmFsYSA8cGV0cmkubGF0dmFsYUBpbnRl bC5jb20+DQo+ID4gPiA+ID4gQ2M6IFNpbW9uIFNlciA8c2ltb24uc2VyQGludGVsLmNvbT4NCj4g PiA+ID4gPiANCj4gPiA+ID4gPiBDYzogPG1hZGh1bWl0aGEudHBAZ21haWwuY29tPg0KPiA+ID4g PiA+IA0KPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IE1hZGh1bWl0aGEgVG9sYWthbmFoYWxsaSBQ cmFkZWVwIDxtYWRodW1pdGhhLnRvbGFrYW5haGFsbGkucHJhZGVlcEBpbnRlbC5jb20+DQo+ID4g PiA+ID4gLS0tDQo+ID4gPiA+ID4gIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgICAgICAgfCAgIDEg Kw0KPiA+ID4gPiA+ICB0ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5jIHwgMzQ2ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gPiA+ID4gIHRlc3RzL21lc29uLmJ1aWxk ICAgICAgICAgICAgfCAgIDEgKw0KPiA+ID4gPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDM0OCBpbnNl cnRpb25zKCspDQo+ID4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfZHBfdGls ZWRfZGlzcGxheS5jDQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL01h a2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzDQo+ID4gPiA+ID4gaW5kZXgg YzAyZTRkOTQuLjc1NjFhYjliIDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBhL3Rlc3RzL01ha2VmaWxl LnNvdXJjZXMNCj4gPiA+ID4gPiArKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzDQo+ID4gPiA+ ID4gQEAgLTQxLDYgKzQxLDcgQEAgVEVTVFNfcHJvZ3MgPSBcDQo+ID4gPiA+ID4gIAlrbXNfY3Vy c29yX2VkZ2Vfd2FsayBcDQo+ID4gPiA+ID4gIAlrbXNfY3Vyc29yX2xlZ2FjeSBcDQo+ID4gPiA+ ID4gIAlrbXNfZHBfZHNjIFwNCj4gPiA+ID4gPiArCWttc19kcF90aWxlZF9kaXNwbGF5IFwNCj4g PiA+ID4gPiAgCWttc19kcmF3X2NyYyBcDQo+ID4gPiA+ID4gIAlrbXNfZmJjb25fZmJ0IFwNCj4g PiA+ID4gPiAgCWttc19mZW5jZV9waW5fbGVhayBcDQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL3Rl c3RzL2ttc19kcF90aWxlZF9kaXNwbGF5LmMgYi90ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5j DQo+ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiBpbmRleCAwMDAwMDAw MC4uMTYyZmJkZDkNCj4gPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4gPiA+ID4gKysrIGIvdGVz dHMva21zX2RwX3RpbGVkX2Rpc3BsYXkuYw0KPiA+ID4gPiA+IEBAIC0wLDAgKzEsMzQ2IEBADQo+ ID4gPiA+ID4gKy8qDQo+ID4gPiA+ID4gKyAqIENvcHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBv cmF0aW9uDQo+ID4gPiA+ID4gKyAqDQo+ID4gPiA+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhDQo+ID4g PiA+ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksDQo+ID4gPiA+ID4gKyAqIHRvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24NCj4gPiA+ID4gPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsDQo+ID4gPiA+ID4gKyAqIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t IHRoZQ0KPiA+ID4gPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1Ympl Y3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KPiA+ID4gPiA+ICsgKg0KPiA+ID4gPiA+ ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSAoaW5jbHVkaW5nIHRoZSBuZXh0DQo+ID4gPiA+ID4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUNCj4g PiA+ID4gPiArICogU29mdHdhcmUuDQo+ID4gPiA+ID4gKyAqDQo+ID4gPiA+ID4gKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SDQo+ID4gPiA+ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KPiA+ID4gPiA+ICsg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAg SU4gTk8gRVZFTlQgU0hBTEwNCj4gPiA+ID4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hU IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCj4gPiA+ ID4gPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcNCj4gPiA+ID4gPiArICogRlJPTSwgT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H Uw0KPiA+ID4gPiA+ICsgKiBJTiBUSEUgU09GVFdBUkUuDQo+ID4gPiA+ID4gKyAqDQo+ID4gPiA+ ID4gKyAqIEF1dGhvcnM6DQo+ID4gPiA+ID4gKyAqICBNYWRodW1pdGhhIFRvbGFrYW5haGFsbGkg UHJhZGVlcA0KPiA+ID4gPiA+ICsgKiAgICAgIDxtYWRodW1pdGhhLnRvbGFrYW5haGFsbGkucHJh ZGVlcEBpbnRlbC5jb20+DQo+ID4gPiA+ID4gKyAqDQo+ID4gPiA+ID4gKyAqIERpc3BsYXkgUG9y dCBUaWxlZCBEaXNwbGF5IFRlc3QNCj4gPiA+ID4gPiArICogVGhpcyB0ZXN0IHBhcnNlcyB0aGUg dGlsZSBpbmZvcm1hdGlvbiBvZiB0aGUgY29ubmVjdG9ycyB0aGF0IGhhdmUgVElMRQ0KPiA+ID4g PiA+ICsgKiBwcm9wZXJ0eSBzZXQsIHNldHMgdXAgdGhlIGZyYW1lYnVmZmVyIHdpdGggY29ycmVj dCBvZmZzZXRzIGNvcnJlc3BvbmRpbmcgdG8NCj4gPiA+ID4gPiArICogdGhlIHRpbGUgb2Zmc2V0 cyBhbmQgZG9lcyBhbiBhdG9taWMgbW9kZXNldCB3aXRoIHR3byBDUlRDcyBmb3IgdHdvDQo+ID4g PiA+ID4gKyAqIGNvbm5lY3RvcnMuIFBhZ2UgZmxpcCBldmVudCB0aW1lc3RhbXAgZnJvbSBlYWNo IENSVEMgaXMgY29sbGVjdGVkIGFuZA0KPiA+ID4gPiA+ICsgKiBjb21wYXJlZCB0byBtYWtlIHN1 cmUgdGhhdCB0aGV5IG9jY3VycmVkIGluIGEgc3luY2hyb25vdXMgbWFubmVyLg0KPiA+ID4gPiA+ ICsgKg0KPiA+ID4gPiA+ICsgKiBUaGlzIHRlc3QgY3VycmVudGx5IHN1cHBvcnRzIG9ubHkgaG9y aXpvbnRhbGx5IHRpbGVkIGRpc3BsYXlzLCBpbiBsaW5lIHdpdGgNCj4gPiA+ID4gPiArICogdGhl IGRpc3BsYXlzIHN1cHBvcnRlZCBieSB0aGUga2VybmVsIGF0IHRoZSBtb21lbnQuDQo+ID4gPiA+ ID4gKyAqLw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArI2luY2x1ZGUgImlndC5oIg0KPiA+ID4g PiA+ICsjaW5jbHVkZSAicG9sbC5oIg0KPiA+ID4gPiA+ICsjaW5jbHVkZSAiZHJtX21vZGUuaCIN Cj4gPiA+ID4gPiArI2luY2x1ZGUgImRybV9mb3VyY2MuaCINCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gK0lHVF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0IGZvciBEaXNwbGF5IFBvcnQgVGlsZWQgRGlz cGxheXMiKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiA+ ID4gPiArCWludCBkcm1fZmQ7DQo+ID4gPiA+ID4gKwlpbnQgbnVtX2hfdGlsZXM7DQo+ID4gPiA+ ID4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5Ow0KPiA+ID4gPiA+ICsJZW51bSBpZ3RfY29tbWl0 X3N0eWxlIGNvbW1pdDsNCj4gPiA+ID4gPiArfSBkYXRhX3Q7DQo+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4gPiA+ID4gKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsN Cj4gPiA+ID4gPiArCWlndF90aWxlX2luZm9fdCB0aWxlOw0KPiA+ID4gPiA+ICsJaWd0X2ZiX3Qg ZmJfdGVzdF9wYXR0ZXJuOw0KPiA+ID4gPiA+ICsJZW51bSBwaXBlIHBpcGU7DQo+ID4gPiA+ID4g KwllbnVtIGlndF9jb21taXRfc3R5bGUgY29tbWl0Ow0KPiA+ID4gPiA+ICsJZHJtTW9kZUNvbm5l Y3RvclB0ciBjb25uZWN0b3I7DQo+ID4gPiA+ID4gK30gZGF0YV9jb25uZWN0b3JfdDsNCj4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gK3N0YXRpYyBpbnQgZHJtX3Byb3BlcnR5X2lzX3RpbGUoZHJtTW9k ZVByb3BlcnR5UHRyIHByb3ApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArCXJldHVybiAoc3Ry Y21wKHByb3AtPm5hbWUgLCAiVElMRSIpID8gMCA6IDEpICYmDQo+ID4gPiA+ID4gKwkJCSBkcm1f cHJvcGVydHlfdHlwZV9pcyhwcm9wLCBEUk1fTU9ERV9QUk9QX0JMT0IpOw0KPiA+ID4gPiA+ICt9 DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBnZXRfY29ubmVjdG9yX3RpbGVf cHJvcHMoZGF0YV90ICpkYXRhLCBkcm1Nb2RlQ29ubmVjdG9yUHRyIGNvbm4sDQo+ID4gPiA+ID4g KwkJaWd0X3RpbGVfaW5mb190ICp0aWxlKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKwlpbnQg aSA9IDA7DQo+ID4gPiA+ID4gKwlkcm1Nb2RlUHJvcGVydHlQdHIgcHJvcDsNCj4gPiA+ID4gPiAr CWRybU1vZGVQcm9wZXJ0eUJsb2JQdHIgYmxvYjsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwlm b3IgKGkgPSAwOyBpIDwgY29ubi0+Y291bnRfcHJvcHM7IGkrKykgew0KPiA+ID4gPiA+ICsJCXBy b3AgPSBkcm1Nb2RlR2V0UHJvcGVydHkoZGF0YS0+ZHJtX2ZkLCBjb25uLT5wcm9wc1tpXSk7DQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJCWlndF9hc3NlcnQocHJvcCk7DQo+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ICsJCWlmICghZHJtX3Byb3BlcnR5X2lzX3RpbGUocHJvcCkpDQo+ID4gPiA+ID4g KwkJCWNvbnRpbnVlOw0KPiA+ID4gPiANCj4gPiA+ID4gVGhpcyBicmFuY2ggbGVha3MgcHJvcC4N Cj4gPiA+IA0KPiA+ID4gRnJlZWluZyBwcm9wIGhlcmUgYmVmb3JlIGNvbnRpbnVpbmcgc2hkIGZp eCB0aGlzLCB3aWxsIGZpeCB0aGlzIGluIHRoZSBuZXh0IHJldg0KPiA+ID4gDQo+ID4gPiA+ID4g KwkJYmxvYiA9IGRybU1vZGVHZXRQcm9wZXJ0eUJsb2IoZGF0YS0+ZHJtX2ZkLA0KPiA+ID4gPiA+ ICsJCQkJY29ubi0+cHJvcF92YWx1ZXNbaV0pOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCQlp ZiAoIWJsb2IpDQo+ID4gPiA+ID4gKwkJCXJldHVybjsNCj4gPiA+ID4gDQo+ID4gPiA+IFRoaXMg YnJhbmNoIGxlYWtzIHByb3AuDQo+ID4gPiANCj4gPiA+IEFncmVlLCB3aWxsIGFkZCBkcm1Nb2Rl RnJlZVByb3BlcnR5QmxvYihibG9iKTsgYmVmb3JlIHJldHVybg0KPiA+ID4gDQo+ID4gPiA+ID4g KwkJaWd0X3BhcnNlX2Nvbm5lY3Rvcl90aWxlX2Jsb2IoYmxvYiwgdGlsZSk7DQo+ID4gPiA+ID4g KwkJYnJlYWs7DQo+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJZHJtTW9k ZUZyZWVQcm9wZXJ0eShwcm9wKTsNCj4gPiA+ID4gPiArCWRybU1vZGVGcmVlUHJvcGVydHlCbG9i KGJsb2IpOw0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICtzdGF0aWMgdm9p ZCBnZXRfbnVtYmVyX29mX2hfdGlsZXMoZGF0YV90ICpkYXRhKQ0KPiA+ID4gPiA+ICt7DQo+ID4g PiA+ID4gKwlpbnQgaTsNCj4gPiA+ID4gPiArCWRybU1vZGVSZXNQdHIgcmVzOw0KPiA+ID4gPiA+ ICsJZHJtTW9kZUNvbm5lY3RvclB0ciBjb25uZWN0b3I7DQo+ID4gPiA+ID4gKwlpZ3RfdGlsZV9p bmZvX3QgdGlsZSA9IHsubnVtX2hfdGlsZSA9IDB9Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr CWlndF9hc3NlcnQocmVzID0gZHJtTW9kZUdldFJlc291cmNlcyhkYXRhLT5kcm1fZmQpKTsNCj4g PiA+ID4gPiArDQo+ID4gPiA+ID4gKwlmb3IgKGkgPSAwOyBpIDwgcmVzLT5jb3VudF9jb25uZWN0 b3JzOyBpKyspIHsNCj4gPiA+ID4gPiArCQljb25uZWN0b3IgPSBkcm1Nb2RlR2V0Q29ubmVjdG9y Q3VycmVudChkYXRhLT5kcm1fZmQsDQo+ID4gPiA+ID4gKwkJCQlyZXMtPmNvbm5lY3RvcnNbaV0p Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCQlpZ3RfYXNzZXJ0KGNvbm5lY3Rvcik7DQo+ID4g PiA+ID4gKw0KPiA+ID4gPiA+ICsJCWlmICghKGNvbm5lY3Rvci0+Y29ubmVjdGlvbiA9PSBEUk1f TU9ERV9DT05ORUNURUQgJiYNCj4gPiA+ID4gPiArCQkJY29ubmVjdG9yLT5jb25uZWN0b3JfdHlw ZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQpKQ0KPiA+ID4gPiA+ICsJCQljb250 aW51ZTsNCj4gPiA+ID4gDQo+ID4gPiA+IFRoaXMgY2FuIGJlIHNpbXBsaWZpZWQgdG8NCj4gPiA+ ID4gDQo+ID4gPiA+ICAgICBjb25uZWN0aW9uICE9IERSTV9NT0RFX0NPTk5FQ1RFRCB8fA0KPiA+ ID4gPiAgICAgY29ubmVjdG9yX3R5cGUgIT0gRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0 DQo+ID4gPiANCj4gPiA+IFllcyB3aWxsIHNpbXBsaWZ5IGluIHRoZSBuZXh0IHJldg0KPiA+ID4g DQo+ID4gPiA+IEFkZGl0aW9uYWxseSwgdGhpcyBicmFuY2ggbGVha3MgdGhlIGNvbm5lY3Rvci4N Cj4gPiA+IA0KPiA+ID4gSG1tLCBzbyBjYWxsIGRybU1vZGVGcmVlQ29ubmVjdG9yKGNvbm5lY3Rv cik7IGJlZm9yZSBjb250aW51aW5nIHNoZCBiZSBmb2xsb3dlZCBpbiBnZW5lcmFsIHRocm91Z2hv dXQNCj4gPiA+IHRoZSBjb2RlIHJpZ2h0Pw0KPiA+IA0KPiA+IFllYWgsIHRoYXQgd291bGQgZml4 IGl0Lg0KPiA+IA0KPiA+ID4gPiA+ICsJCWdldF9jb25uZWN0b3JfdGlsZV9wcm9wcyhkYXRhLCBj b25uZWN0b3IsICZ0aWxlKTsNCj4gPiA+ID4gPiArCQlkYXRhLT5udW1faF90aWxlcyA9IHRpbGUu bnVtX2hfdGlsZTsNCj4gPiA+ID4gPiArCQlicmVhazsNCj4gPiA+ID4gPiArCX0NCj4gPiA+ID4g PiArDQo+ID4gPiA+ID4gKwlkcm1Nb2RlRnJlZVJlc291cmNlcyhyZXMpOw0KPiA+ID4gPiA+ICsJ ZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubmVjdG9yKTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArc3RhdGljIHZvaWQgZ2V0X2Nvbm5lY3RvcihkYXRhX3QgKmRhdGEsIGRh dGFfY29ubmVjdG9yX3QgKmNvbm4pDQo+ID4gPiA+IA0KPiA+ID4gPiBOaXQ6IHNpbmNlIHRoaXMg ZmlsbHMgYWxsIGNvbm5lY3RvcnMsIG1heWJlIGl0IHNob3VsZCBiZSBuYW1lZA0KPiA+ID4gPiBn ZXRfY29ubmVjdG9ycyAod2l0aCBhbiBzKS4gQWxzbyBpdCdzIG5vdCBjbGVhciB0aGF0IGNvbm4g cmVmZXJzIHRvIGFuDQo+ID4gPiA+IGFycmF5IG9mIGNvbm5lY3RvcnMsIG1heWJlIGl0IHNob3Vs ZCBiZSByZW5hbWVkIHRvIGNvbm5zLg0KPiA+ID4gDQo+ID4gPiBZZXMgSSBhZ3JlZSB0aGF0IHdp bGwgbWFrZSBpdCBtb3JlIHJlYWRhYmxlLCBJIHdpbGwgZml4IGl0IGluIG5leHQgcmV2DQo+ID4g PiANCj4gPiA+ID4gKEFwcGxpZXMgdG8gdGhlIHdob2xlIHBhdGNoKQ0KPiA+ID4gPiANCj4gPiA+ ID4gPiArew0KPiA+ID4gPiA+ICsJaW50IGNvdW50ID0gMDsNCj4gPiA+ID4gPiArCWlndF9vdXRw dXRfdCAqb3V0cHV0Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCWZvcl9lYWNoX2Nvbm5lY3Rl ZF9vdXRwdXQoZGF0YS0+ZGlzcGxheSwgb3V0cHV0KSB7DQo+ID4gPiA+ID4gKwkJY29ubltjb3Vu dF0uY29ubmVjdG9yID0gZHJtTW9kZUdldENvbm5lY3RvcihkYXRhLT5kaXNwbGF5LT5kcm1fZmQs DQo+ID4gPiA+ID4gKwkJCQkJCW91dHB1dC0+aWQpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr CQlpZ3RfYXNzZXJ0KGNvbm5bY291bnRdLmNvbm5lY3Rvcik7DQo+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ICsJCWlmICghKGNvbm5bY291bnRdLmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0NCj4g PiA+ID4gPiArCQkJRFJNX01PREVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KSkNCj4gPiA+ID4gPiAr CQkJY29udGludWU7DQo+ID4gPiA+IA0KPiA+ID4gPiBUaGlzIGNhbiBiZSBzaW1wbGlmaWVkIHRv DQo+ID4gPiA+IA0KPiA+ID4gPiAgICAgaWYgKGNvbm5lY3Rvcl90eXBlICE9IERSTV9NT0RFX0NP Tk5FQ1RPUl9EaXNwbGF5UG9ydCkNCj4gPiA+ID4gDQo+ID4gPiA+IEFkZGl0aW9uYWxseSwgdGhp cyBicmFuY2ggbGVha3MgdGhlIGNvbm5lY3Rvci4NCj4gPiA+ID4gDQo+ID4gPiA+ID4gKwkJZ2V0 X2Nvbm5lY3Rvcl90aWxlX3Byb3BzKGRhdGEsIGNvbm5bY291bnRdLmNvbm5lY3RvciwNCj4gPiA+ ID4gPiArCQkJJmNvbm5bY291bnRdLnRpbGUpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCQkv KiBDaGVjayBpZiB0aGUgY29ubmVjdG9ycyBiZWxvbmcgdG8gdGhlIHNhbWUgdGlsZSBncm91cCAq Lw0KPiA+ID4gPiA+ICsJCWlmIChjb3VudCA+IDApDQo+ID4gPiA+ID4gKwkJCWlndF9hc3NlcnQo Y29ubltjb3VudF0udGlsZS50aWxlX2dyb3VwX2lkID09DQo+ID4gPiA+ID4gKwkJCQljb25uW2Nv dW50LTFdLnRpbGUudGlsZV9ncm91cF9pZCk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJCWNv dW50Kys7DQo+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gK3N0YXRpYyB2b2lkDQo+ID4gPiA+ID4gK3Jlc2V0X2ZyYW1lYnVmZmVyKGludCBkcm1fZmQs IGlndF9vdXRwdXRfdCAqb3V0cHV0LCBpZ3RfZmJfdCAqZmIpDQo+ID4gPiA+ID4gK3sNCj4gPiA+ ID4gPiArCWlndF9wbGFuZV90ICpwcmltYXJ5Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCXBy aW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSk7DQo+ID4gPiA+ID4gKwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksIE5VTEwpOw0K PiA+ID4gPiA+ICsJaWd0X3JlbW92ZV9mYihkcm1fZmQsIGZiKTsNCj4gPiA+ID4gPiArfQ0KPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiArc3RhdGljIHZvaWQgcmVzZXRfb3V0cHV0KGlndF9vdXRwdXRf dCAqb3V0cHV0KQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKwlpZ3Rfb3V0cHV0X3NldF9waXBl KG91dHB1dCwgUElQRV9OT05FKTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiArc3RhdGljIHZvaWQgdGVzdF9jbGVhbnVwKGRhdGFfdCAqZGF0YSwgZGF0YV9jb25uZWN0b3Jf dCAqY29ubikNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsJaW50IGNvdW50Ow0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArCWZvciAoY291bnQgPSAwOyBjb3VudCA8IGRhdGEtPm51bV9oX3RpbGVz OyBjb3VudCsrKSB7DQo+ID4gPiA+ID4gKwkJaWYgKGNvbm5bY291bnRdLm91dHB1dCkgew0KPiA+ ID4gPiA+ICsJCQlyZXNldF9mcmFtZWJ1ZmZlcihkYXRhLT5kcm1fZmQsIGNvbm5bY291bnRdLm91 dHB1dCwNCj4gPiA+ID4gPiArCQkJCSZjb25uW2NvdW50XS5mYl90ZXN0X3BhdHRlcm4pOw0KPiA+ ID4gPiA+ICsJCQlyZXNldF9vdXRwdXQoY29ubltjb3VudF0ub3V0cHV0KTsNCj4gPiA+ID4gPiAr CQl9DQo+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gKwlpZ3RfZGlzcGxheV9jb21taXQyKGRhdGEt PmRpc3BsYXksIGRhdGEtPmNvbW1pdCk7DQo+ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gK3N0YXRpYyB2b2lkIHNldHVwX21vZGUoZGF0YV90ICpkYXRhLCBkYXRhX2Nvbm5lY3Rv cl90ICpjb25uX2RhdGEpDQo+ID4gPiA+IA0KPiA+ID4gPiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3Qg YWN0dWFsbHkgc2V0dXAgdGhlIG91dHB1dCBtb2RlLCBpdCBvbmx5IHNldHMgdXANCj4gPiA+ID4g dGhlIHBpcGUuIElzIHRoaXMgYW4gb3Zlcmxvb2s/DQo+ID4gPiANCj4gPiA+IHllcyB3ZSBqdXN0 IHNldCB0aGUgcGlwZS9DUlRDIGhlcmUgYW5kIHRoZSBhdG9taWMgY29tbWl0IGNhbGwgZG9lcyBh IGNvbXBsZXRlDQo+ID4gPiBtb2Rlc2V0IHdpdGggY2hlY2sgYW5kIGNvbW1pdCB3aXRob3V0IGFu eSBvdXRwdXQgc2luY2Ugd2UgZGlkbnQgc2V0dXAgZmIgeWV0Lg0KPiA+ID4gQnV0IEkgYWdyZWUg dGhhdCBjYWxsaW5nIGl0IGp1c3Qgc2V0dXBfcGlwZSByb2JhYmx5IG1ha2VzIGl0IG1vcmUgaW50 dWl0aXZlDQo+ID4gDQo+ID4gT2gsIEkgZm9yZ290IHRoYXQgaWd0X291dHB1dF9zZXRfcGlwZSBh bHNvIHNldHMgdGhlIG1vZGUuDQo+ID4gDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArCWludCBj b3VudCA9IDA7DQo+ID4gPiA+ID4gKwllbnVtIHBpcGUgcGlwZTsNCj4gPiA+ID4gPiArCWlndF9v dXRwdXRfdCAqb3V0cHV0Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCWZvciAoY291bnQgPSAw OyBjb3VudCA8IGRhdGEtPm51bV9oX3RpbGVzOyBjb3VudCsrKSB7DQo+ID4gPiA+ID4gKwkJb3V0 cHV0ID0gaWd0X291dHB1dF9mcm9tX2Nvbm5lY3RvcihkYXRhLT5kaXNwbGF5LA0KPiA+ID4gPiA+ ICsJCQkJY29ubl9kYXRhW2NvdW50XS5jb25uZWN0b3IpOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiArCQkvKg0KPiA+ID4gPiA+ICsJCSAqIFRoZSBvdXRwdXQgaXMgc2V0IHRvIFBJUEVfTk9ORSBh bmQgdGhlbiBhc3NpZ25lZCBhIHBpcGUuDQo+ID4gPiA+ID4gKwkJICogVGhpcyBpcyBkb25lIHRv IGVuc3VyZSBhIGNvbXBsZXRlIG1vZGVzZXQgb2NjdXJlcyBldmVyeQ0KPiA+ID4gPiA+ICsJCSAq IHRpbWUgdGhlIHRlc3QgaXMgcnVuLg0KPiA+ID4gPiA+ICsJCSAqLw0KPiA+ID4gPiA+ICsJCXJl c2V0X291dHB1dChvdXRwdXQpOw0KPiA+ID4gPiANCj4gPiA+ID4gSXMgdGhpcyBuZWNlc3Nhcnk/ DQo+ID4gPiANCj4gPiA+IFllcyB0aGlzIGlzIG5lY2Vzc2FyeSB0byBmb3JjZSBhIGNvbXBsZXRl IG1vZGVzZXQgZm9yIGVhY2ggdGVzdCBzaW5jZSBpZiB0aGUgcGlwZQ0KPiA+ID4gYXNzaWdubWVu dHMgb3IgdGhlIG1vZGUgaGFzIG5vdCBjaGFuZ2VkIGl0IHdpbGwgbm90IHNldCBuZWVkc19tb2Rl c2V0IGZsYWcgaW4gc2lkZSBrZXJuZWwNCj4gPiA+IGFuZCB3aWxsIG5vdCBkbyBhIGZ1bGwgYXRv bWljIGNoZWNrIGFuZCBjb21taXQuDQo+ID4gDQo+ID4gSG1tLCB3aHkgZG8gd2UgbmVlZCB0byBk byBhIG5ldyBtb2Rlc2V0PyBJZiB0aGUgbW9kZSBpcyBhbHJlYWR5IHNldCB0bw0KPiA+IHdoYXQg d2Ugd2FudCwgbm8gbmVlZCBmb3IgdGhpcz8NCj4gPiANCj4gPiAoU29ycnksIEknbSB1bmZhbWls aWFyIHdpdGggdGhlIGtlcm5lbCBzaWRlIG9mIHRoaW5ncyEpDQo+ID4gDQo+ID4gPiA+ID4gKwkJ Zm9yX2VhY2hfcGlwZShkYXRhLT5kaXNwbGF5LCBwaXBlKSB7DQo+ID4gPiA+ID4gKwkJCWlmIChj b3VudCA+IDAgJiYgcGlwZSA9PSBjb25uX2RhdGFbY291bnQtMV0ucGlwZSkNCj4gPiA+ID4gPiAr CQkJCWNvbnRpbnVlOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCQkJaWYgKGlndF9waXBlX2Nv bm5lY3Rvcl92YWxpZChwaXBlLCBvdXRwdXQpKSB7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJ CQkJY29ubl9kYXRhW2NvdW50XS5waXBlID0gcGlwZTsNCj4gPiA+ID4gPiArCQkJCWNvbm5fZGF0 YVtjb3VudF0ub3V0cHV0ID0gb3V0cHV0Ow0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCQkJCWln dF9vdXRwdXRfc2V0X3BpcGUoY29ubl9kYXRhW2NvdW50XS5vdXRwdXQsDQo+ID4gPiA+ID4gKwkJ CQkJY29ubl9kYXRhW2NvdW50XS5waXBlKTsNCj4gPiA+ID4gPiArCQkJCWJyZWFrOw0KPiA+ID4g PiA+ICsJCQl9DQo+ID4gPiA+ID4gKwkJfQ0KPiA+ID4gPiA+ICsJfQ0KPiA+ID4gPiA+ICsJaWd0 X2Rpc3BsYXlfY29tbWl0X2F0b21pYyhkYXRhLT5kaXNwbGF5LCBEUk1fTU9ERV9BVE9NSUNfQUxM T1dfTU9ERVNFVCwNCj4gPiA+ID4gPiArCQlOVUxMKTsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiArc3RhdGljIHZvaWQgc2V0dXBfZnJhbWVidWZmZXIoZGF0YV90ICpkYXRh LCBkYXRhX2Nvbm5lY3Rvcl90ICpjb25uKQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKwlpbnQg Y291bnQ7DQo+ID4gPiA+ID4gKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsNCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKwlmb3IgKGNvdW50ID0gMDsgY291bnQgPCBkYXRhLT5udW1faF90aWxlczsgY291 bnQrKykgew0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCQlpZ3RfY3JlYXRlX3BhdHRlcm5fZmIo ZGF0YS0+ZHJtX2ZkLA0KPiA+ID4gPiA+ICsJCQkoY29ubltjb3VudF0udGlsZS50aWxlX2hfc2l6 ZSAqDQo+ID4gPiA+ID4gKwkJCWRhdGEtPm51bV9oX3RpbGVzKSwNCj4gPiA+ID4gDQo+ID4gPiA+ IERvIHdlIG5lZWQgdG8gbXVsdGlwbHkgYnkgdGhlIG51bWJlciBvZiBob3Jpem9udGFsIHRpbGVz IGhlcmU/IEl0IHNlZW1zDQo+ID4gPiA+IHdlIG9ubHkgdXNlIHRoZSBmaXJzdCB0aWxlX2hfc2l6 ZSBwaXhlbHMgb2YgdGhlIGJ1ZmZlci4gQW0gSSBtaXNzaW5nDQo+ID4gPiA+IHNvbWV0aGluZz8N Cj4gPiA+ID4gDQo+ID4gPiANCj4gPiA+IFllcyB3ZSBvbmx5IHVzZSB0aGUgdGlsZV9oX3NpemUg b2YgdGhlIGJ1ZmZlciBhdCB0aGUgcHJvcGVyIG9mZnNldCBvZiB0aWxlX2hfbG9jDQo+ID4gPiBT byB0aGlzIGJlbG93IGxvZ2ljIHNoZCBiZSBtb2RpZmllZCB0byBvbmx5IGNyZWF0ZSBmYiBvZiB0 aGUgc2l6ZSB0aWxlX2hfc2l6ZSBpZiBpdHMgaW4gdGhlIGZvciBsb29wDQo+ID4gPiBvciBqdXN0 IGNyZWF0ZSBvbmUgZmIgb3V0c2lkZSB0aGUgbG9vcCBvZiB0aGUgc2l6ZSB0aWxlX2hfc2l6ZSAq IG51bV90aWxlcyBhbmQgdGhlbiBqdXN0IHVzZSB0aGF0IHdpdGggZGZmZXJlbnQNCj4gPiA+IG9m ZnNldHMgZm9yIHR3byBDUlRDcw0KPiA+ID4gDQo+ID4gPiBXaGVuIEkgZGlzY3Vzc2VkIHRoaXMg b24gZHJpLWRldmVsLCBwZW9wbGUgc2FpZCB0aGF0IHJlYWwgdXNlcnNwYWNlIGNhbiBkZWNpZGUg dG8gZG8gZWl0aGVyIG9uZSBzaW5nbGUgZmIgZm9yIGFsbCB0aWxlcw0KPiA+ID4gb3Igc2VwYXJh dGUgb25lcyB3aGVyZSBlYWNoIGlzIG9mIHRoZSBzaXplIGVxdWFsIHRvIHRpbGUgc2l6ZS4NCj4g PiA+IA0KPiA+ID4gTGV0IG1lIGtub3cgaWYgdGhlcmUgaXMgYSBwcmVmZXJlbmNlDQo+ID4gDQo+ ID4gQXMgYSB1c2Vyc3BhY2UgZGV2LCBJJ2Qgc2F5IGEgc2luZ2xlIEZCIHdvdWxkIGJlIGEgbGl0 dGxlIGJpdCBtb3JlDQo+ID4gcmVhbGlzdGljLCBidXQgeWVhaCBJIGd1ZXNzIHVzZXJzcGFjZSBj b3VsZCB1c2UgdHdvIEZCcyBhcyB3ZWxsLiBObyBiaWcNCj4gPiBkZWFsLCBJJ20gZmluZSB3aXRo IGJvdGguDQo+ID4gDQo+ID4gPiA+IEJ1dCBtYXliZSBhIHRlc3QgdGhhdCB3b3VsZCBiZXR0ZXIg cmVmbGVjdCByZWFsaXR5IHdvdWxkIGNyZWF0ZSBhDQo+ID4gPiA+IHNpbmdsZSBmcmFtZWJ1ZmZl ciBmb3IgYWxsIHRpbGVkIGRpc3BsYXlzLCB0byBkaXNwbGF5IGEgc2luZ2xlIGltYWdlDQo+ID4g PiA+IGFjcm9zcyBhbGwgb2YgdGhlbT8NCj4gPiA+ID4gDQo+ID4gPiA+ID4gKwkJCWNvbm5bY291 bnRdLnRpbGUudGlsZV92X3NpemUsDQo+ID4gPiA+ID4gKwkJCURSTV9GT1JNQVRfWEJHUjg4ODgs DQo+ID4gPiA+ID4gKwkJCUxPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsDQo+ID4gPiA+ID4gKwkJ CSZjb25uW2NvdW50XS5mYl90ZXN0X3BhdHRlcm4pOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr CQlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShjb25uW2NvdW50XS5vdXRwdXQs DQo+ID4gPiA+ID4gKwkJCQlEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsNCj4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gKwkJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmY29ubltjb3VudF0uZmJfdGVz dF9wYXR0ZXJuKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwkJaWd0X2ZiX3NldF9zaXplKCZj b25uW2NvdW50XS5mYl90ZXN0X3BhdHRlcm4sIHByaW1hcnksDQo+ID4gPiA+ID4gKwkJCQljb25u W2NvdW50XS50aWxlLnRpbGVfaF9zaXplLA0KPiA+ID4gPiA+ICsJCQkJY29ubltjb3VudF0udGls ZS50aWxlX3Zfc2l6ZSk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJCWlndF9mYl9zZXRfcG9z aXRpb24oJmNvbm5bY291bnRdLmZiX3Rlc3RfcGF0dGVybiwgcHJpbWFyeSwNCj4gPiA+ID4gPiAr CQkJCShjb25uW2NvdW50XS50aWxlLnRpbGVfaF9zaXplICoNCj4gPiA+ID4gPiArCQkJCWNvbm5b Y291bnRdLnRpbGUudGlsZV9oX2xvYyksDQo+ID4gPiA+ID4gKwkJCQkoY29ubltjb3VudF0udGls ZS50aWxlX3Zfc2l6ZSAqDQo+ID4gPiA+ID4gKwkJCQljb25uW2NvdW50XS50aWxlLnRpbGVfdl9s b2MpKTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwkJaWd0X3BsYW5lX3NldF9zaXplKHByaW1h cnksDQo+ID4gPiA+ID4gKwkJCQljb25uW2NvdW50XS50aWxlLnRpbGVfaF9zaXplLA0KPiA+ID4g PiA+ICsJCQkJY29ubltjb3VudF0udGlsZS50aWxlX3Zfc2l6ZSk7DQo+ID4gPiA+ID4gKwl9DQo+ ID4gPiA+ID4gK30NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIHBhZ2VfZmxp cF9oYW5kbGVyKGludCBmZCwgdW5zaWduZWQgaW50IHNlcSwNCj4gPiA+ID4gPiArCQl1bnNpZ25l ZCBpbnQgdHZfc2VjLCB1bnNpZ25lZCBpbnQgdHZfdXNlYywNCj4gPiA+ID4gPiArCQl1bnNpZ25l ZCBpbnQgY3J0Y19pZCwgdm9pZCAqZGF0YSkNCj4gPiA+ID4gPiArew0KPiA+ID4gPiA+ICsJYm9v bCBleHByID0gZmFsc2U7DQo+ID4gPiA+ID4gKwlzdGF0aWMgdW5zaWduZWQgaW50IF90dl9zZWMs IF90dl91c2VjOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCWlndF9kZWJ1ZygiUGFnZSBGbGlw IEV2ZW50IHJlY2VpdmVkIGZyb20gQ1JUQzolZCBhdCAldToldVxuIiwgY3J0Y19pZCwNCj4gPiA+ ID4gPiArCQl0dl9zZWMsIHR2X3VzZWMpOw0KPiA+ID4gPiANCj4gPiA+ID4gV2Ugc2hvdWxkIGFs c28gbWFrZSBzdXJlIHdlIHJlY2VpdmUgZXhhY3RseSBvbmUgcGFnZS1mbGlwIHBlciBDUlRDLg0K PiA+ID4gPiBDdXJyZW50bHkgd2UgZG9uJ3QgdXNlIGNydGNfaWQgKGFwYXJ0IGZyb20gbG9nZ2lu ZyBwdXJwb3NlcykuDQo+ID4gPiANCj4gPiA+IEkgc2VlIHNvIHNvbWVob3cgaGF2ZSBhIHN0YXRp YyBjb3VudCBvZiBldmVudHMgYW5kIG1ha2Ugc3VyZSBwZXIgY3J0YyBpZCBpdHMgdGhlIHNhbWUg Y291bnQgb3INCj4gPiA+IHNvbWUgc2ltaWxhciBsb2dpYw0KPiA+IA0KPiA+IFllYWguIFdlIGNv dWxkIGZvciBpbnN0YW5jZSBhZGQgYSAiYm9vbCBnb3RfcGFnZV9mbGlwIiBmaWVsZCBpbiBvdXIN Cj4gPiBkYXRhX2Nvbm5lY3Rvcl90IHN0cnVjdCBhbmQgc2V0IGl0IHRvIHRydWUgaGVyZSAobWFr aW5nIHN1cmUgaXQncyBub3QNCj4gPiBzZXQgdG8gdHJ1ZSBhbHJlYWR5KS4NCj4gPiANCj4gPiBB IHBvaW50ZXIgY2FuIGJlIHBhc3NlZCB0byBwYWdlX2ZsaXBfaGFuZGxlciB2aWEgdGhlIGRhdGEg YXJndW1lbnQuDQo+IA0KPiBJIGRpZG50IHVuZGVyc3RhbmQgd2hhdCB5b3UgbWVhbnQgYnkgcGFz c2luZyBhIHBvaW50ZXIgdG8gcGFnZV9mbGlwX2hhbmRsZXINCj4gdmlhIHRoZSBkYXRhIGFyZ3Vt ZW50Pw0KPiBJIGxvb2tlZCB0aHJvdWdoIHRoZSBkcm1IYW5kbGVFdmVudCBkZWZpbml0aW9uIGFu ZCBpdCBwb3B1bGF0ZXMgdGhlIHZvaWQgKmRhdGENCj4gaW4gcGFnZV9mbGlwX2hhbmRsZXIgd2l0 aCB2YmxhbmstPnVzZXJfZGF0YQ0KPiBTbyBpdHMgbm90IGNsZWFyIHRvIG1lIGhvdyB3ZSBjYW4g cGFzcyBvdXIgZGF0YV9jb25uZWN0b3JfdCAtPiBnb3RfcGFnZV9mbGlwX2Jvb2wgdG8gcGFnZV9m bGlwX2hhbmRsZXINCj4gYW5kIHNldCB0aGF0IHRvIHRydWUgaGVyZS4NCg0KSGkhDQoNClRoZSB1 c2VyX2RhdGEgZmllbGQgaXMgc2V0IHRvIHRoZSBsYXN0IGFyZ3VtZW50IGdpdmVuIHRvDQpkcm1N b2RlQXRvbWljQ29tbWl0IChpbiBJR1QsIHRvIGlndF9kaXNwbGF5X2NvbW1pdF9hdG9taWMpLiBD dXJyZW50bHkNCndlIHNldCBpdCB0byBOVUxMLCB3ZSBjb3VsZCBzZXQgaXQgdG8gdGhlIGRhdGFf Y29ubmVjdG9yX3QgYXJyYXkuDQoNCklmIGl0IGhlbHBzLCBoZXJlIFsxXSBpcyBhIHZlcnkgc2lt aWxhciB0ZXN0IHRoYXQganVzdCBhdG9taWNhbGx5IHBhZ2UtDQpmbGlwcyBvbiBtdWx0aXBsZSBD UlRDcyBhdCBvbmNlLiBOb3RlIGhvdyB0aGUgcGFnZV9mbGlwX2hhbmRsZXIgc2V0cw0KZ290X3Bh Z2VfZmxpcCAoYW5kIG1ha2VzIHN1cmUgdGhlcmUgYXJlIG5vIGRvdWJsZSBwYWdlLWZsaXBzKS4g QWxzbw0Kbm90ZSB0aGF0IHRoZSBsYXN0IGFyZ3VtZW50IHRvIGlndF9kaXNwbGF5X2NvbW1pdF9h dG9taWMgaXMgbm90IE5VTEwNCndoZW4gcGFnZS1mbGlwcGluZy4NCg0KWzFdOiBodHRwczovL3Bh dGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvMzI5MzM2Lw0KDQo+IEkgaGF2ZSBhbGwgdGhl IG90aGVyIGNoYW5nZXMgZG9uZSwgc28gaW4gbXkgcmV2aXNpb24gdGhhdCBJIGFtIGFib3V0IHRv IHNlbmQgYWxsIHRoZSBjaGFuZ2VzIGV4Y2VwdCBmb3INCj4gdGhpcyBjaGVjayB0byBkb3VibGUg Y2hlY2sgbnVtYmVyIG9mIHBhZ2UgZmxpcCBldmVudHMgPT0gbnVtX2hfdGlsZXMgaXMgbWlzc2lu Zy4NCj4gDQo+IEFsc28gaSBvYnNlcnZlZCB0aGF0IHNpbmNlIHRoZSBldmVudHMgYXJlIHF1ZXVl ZCwgaXQgY2FsbHMgdGhlIHBhZ2UgZmxpcCBoYW5kbGVyIHR3aWNlIGluIHRoZSBmaXJzdCB3YWl0 X2Zvcl9wYWdlX2ZsaXAoKSBjYWxsDQo+IHNvIGV2ZW4gaWYgaSBsb29wIGl0IHRoZSBudW1iZXIg b2YgdGltZXMgPSBudW1iZXIgb2YgY29ubmVjdG9ycywgaXQgY2FsbHMgcGFnZSBmbGlwIGhhbmRs ZXIgdHdpY2UgZm9yIHRoZSBmaXJzdCBsb29wDQo+IGFuZCB0aGVuIGRvZXNudCBjYWxsIHBhZ2Ug ZmxpcCBoYW5kbGVyIHRlaCBzZWNvbmQgdGltZS4NCj4gDQo+IFNvIEkgYW0gc2tpcHBpbmcgdGhh dCBsb29waW5nIHBhcnQgYXMgd2VsbC4NCg0KSW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBldmVu dHMgYmVpbmcgcXVldWVkIGFuZCBhbGwgYXJyaXZpbmcgaW4ganVzdA0Kb25lIHBvbGwoKSBjYWxs LCB3ZSBjYW4ganVzdCBsb29wIHVudGlsIHdlIGdvdCBhbGwgcGFnZS1mbGlwcy4gRm9yDQppbnN0 YW5jZSwgdGhpcyBpcyBkb25lIGluIHRoZSB0ZXN0IEkgbGlua2VkIGJlZm9yZSBbMV06DQoNCgl3 aGlsZSAoIWdvdF9hbGxfcGFnZV9mbGlwcygmZGF0YSkpIHsNCgkJcmV0ID0gcG9sbCgmcGZkLCAx LCAxMDAwKTsNCgkJaWd0X2Fzc2VydChyZXQgPT0gMSk7DQoJCWRybUhhbmRsZUV2ZW50KGRhdGEu ZHJtX2ZkLCAmZHJtX2V2ZW50KTsNCgl9DQoNCkxldCBtZSBrbm93IGlmIHNvbWV0aGluZydzIG5v dCBjbGVhciwgb3IgaWYgeW91IHRoaW5rIHRoaXMgaXNuJ3QgdGhlDQpyaWdodCBhcHByb2FjaCEN Cg0KPiBQbGVhc2UgbGV0IG1lIGtub3cgeW91ciB0aG91Z2h0cyBhbmQgSSBsb29rIGZvcndhcmQg dG8geW91ciByZXZpZXcgb24gdGVoIG5ldyByZXZpc2lvbiBJIGFtIHNlbmRpbmcgdG9kYXkuDQoN ClRoYW5rcyENCg0KPiBNYW5hc2kNCj4gDQo+ID4gPiA+ID4gKwkvKiBTa2lwIHRoZSBmb2xsb3dp bmcgY2hlY2tzIGZvciB0aGUgZmlyc3QgcGFnZSBmbGlwIGV2ZW50ICovDQo+ID4gPiA+ID4gKwlp ZiAoX3R2X3NlYyA9PSAwIHx8IF90dl91c2VjID09IDApIHsNCj4gPiA+ID4gPiArCQlfdHZfc2Vj ID0gdHZfc2VjOw0KPiA+ID4gPiA+ICsJCV90dl91c2VjID0gdHZfdXNlYzsNCj4gPiA+ID4gPiAr CQlyZXR1cm47DQo+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJLyoNCj4g PiA+ID4gPiArCSAqIEZvciBzZWFtbGVzcyB0ZWFyLWZyZWUgZGlzcGxheSwgdGhlIHBhZ2UgZmxp cCBldmVudCB0aW1lc3RhbXBzDQo+ID4gPiA+ID4gKwkgKiBmcm9tIGFsbCB0aGUgdGlsZXMgc2hv dWxkIG5vdCBkaWZmZXIgYnkgbW9yZSB0aGFuIDEwdXMuDQo+ID4gPiA+ID4gKwkgKi8NCj4gPiA+ ID4gPiArCWV4cHIgPSB0dl9zZWMgPT0gX3R2X3NlYyAmJiAoYWJzKHR2X3VzZWMgLSBfdHZfdXNl YykgPCAxMCk7DQo+ID4gPiA+IA0KPiA+ID4gPiBOaXQ6IHRoaXMgY291bGQgYmUgcmVuYW1lZCB0 byBlLmcuIGlzX29uX3RpbWUsIGV4cHIgaXMgYSBwcmV0dHkgdmFndWUNCj4gPiA+ID4gbmFtZS4N Cj4gPiA+IA0KPiA+ID4geWVzIGFncmVlIHdpbGwgcmVuYW1lIHRvIG1ha2UgaXQgbW9yZSByZWFk YWJsZQ0KPiA+ID4gDQo+ID4gPiA+ID4gKwlpZ3RfZmFpbF9vbl9mKCFleHByLCAiRGVsYXllZCBw YWdlIGZsaXAgZXZlbnQgZnJvbSBDUlRDOiVkIGF0ICV1OiV1XG4iLA0KPiA+ID4gPiA+ICsJCWNy dGNfaWQsIHR2X3NlYywgdHZfdXNlYyk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJaWYgKHR2 X3NlYyA8IF90dl9zZWMpDQo+ID4gPiA+ID4gKwkJX3R2X3NlYyA9IHR2X3NlYzsNCj4gPiA+ID4g PiArCWlmICh0dl91c2VjIDwgX3R2X3VzZWMpDQo+ID4gPiA+ID4gKwkJX3R2X3VzZWMgPSB0dl91 c2VjOw0KPiA+ID4gPiANCj4gPiA+ID4gVGhpcyB1cGRhdGVzIHRoZSB0aW1lc3RhbXAgb24gZWFj aCBwYWdlLWZsaXAuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZmlyc3QNCj4gPiA+ID4gYW5kIGxhc3Qg cGFnZS1mbGlwcyBjb3VsZCBiZSBkZWxheWVkIGJ5IG1vcmUgdGhhbiAxMMK1cyBpZiB0aGVyZSBh cmUNCj4gPiA+ID4gaW50ZXJtZWRpYXRlIHBhZ2UtZmxpcHMuIEZvciBpbnN0YW5jZSwgaWYgdGhl IGZpcnN0IHBhZ2UtZmxpcCBoYXBwZW5zDQo+ID4gPiA+IGF0IHQ9MMK1cyBhbmQgdGhlIHNlY29u ZCBvbmUgaGFwcGVucyBhdCB0PTnCtXMsIHRoZSBsYXN0IG9uZSBjb3VsZCBoYXBwZW4NCj4gPiA+ ID4gYXQgdD0xOMK1cyB3aXRob3V0IG1ha2luZyB0aGlzIHRlc3QgZmFpbHMuIElzIHRoaXMgc29t ZXRoaW5nIHdlIHdhbnQgdG8NCj4gPiA+ID4gYWxsb3c/DQo+ID4gPiANCj4gPiA+IE5vcGUgYWxs IG9mIHRoZW0gc2hvdWxkIGhhcHBlbiB3aXRoaW4gdGhlIHNhbWUgdmJsYW5rIHNvIHRoZSBkaWZm IGJldHdlZW4gYWxsDQo+ID4gPiBzaG91bGQgYmUgPDEwdXMsIHdpbGwgaGF2ZSB0byBtb2RpZnkg dGhlIGxvZ2ljIHRvIGRvIHRoYXQuDQo+ID4gPiANCj4gPiA+IHNvIGJhc2ljYWxseSBpbnN0ZWFk IG9mIG1ha2luZyA8MTB1cyBjb25kaXRpb24gZm9yIHRoZSBjb25zZWN1dGl2ZSBvbmVzLCBpdCBz aG91bGQgYmUgYmV0d2VlbiB0aGUgZmlyc3Qgb25lDQo+ID4gPiBhbmQgYWxsIG90aGVyIGV2ZW50 cywgY29ycmVjdD8NCj4gPiANCj4gPiBDb3JyZWN0ISBTbyB3ZSBjYW4ganVzdCBkcm9wIHRoZXNl IDQgbGluZXMsIHRoYXQgc2hvdWxkIGRvIGl0Lg0KPiA+IA0KPiA+ID4gPiA+ICt9DQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCB3YWl0X2Zvcl9wYWdlZmxpcChpbnQgZHJtX2Zk KQ0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gKwlzdHJ1Y3QgcG9sbGZkIHBmZDsNCj4gPiA+ID4g PiArCWRybUV2ZW50Q29udGV4dCBkcm1fZXZlbnQ7DQo+ID4gPiA+IA0KPiA+ID4gPiBOaXQ6IHRv IG1ha2Ugc3VyZSBnYXJiYWdlIGlzbid0IHJlYWQgZnJvbSB0aGlzIHN0cnVjdCAodGhlcmUgYXJl IG90aGVyDQo+ID4gPiA+IGZ1bmN0aW9uIHBvaW50ZXJzKSwgaXQncyBwcm9iYWJseSBzYWZlciB0 byB6ZXJvLWZpbGwgaXQgKD0gezB9KS4NCj4gPiA+IA0KPiA+ID4gR290IGl0DQo+ID4gPiANCj4g PiA+ID4gPiArCWRybV9ldmVudC52ZXJzaW9uID0gMzsNCj4gPiA+ID4gPiArCWRybV9ldmVudC5w YWdlX2ZsaXBfaGFuZGxlcjIgPSBwYWdlX2ZsaXBfaGFuZGxlcjsNCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKwlwZmQuZmQgPSBkcm1fZmQ7DQo+ID4gPiA+ID4gKwlwZmQuZXZlbnRzID0gUE9MTElO Ow0KPiA+ID4gPiA+ICsJcGZkLnJldmVudHMgPSAwOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr CXBvbGwoJnBmZCwgMSwgMTAwMCk7DQo+ID4gPiA+IA0KPiA+ID4gPiBNYXliZSB3ZSBzaG91bGQg Y2hlY2sgcG9sbCgyKSdzIHJldHVybiB2YWx1ZT8NCj4gPiA+IA0KPiA+ID4gcG9sbCgyKT8gT3Ig anVzdCBjaGVjayByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIHBvbGwoKSBqdXN0IGZvciBl cnJvciBoYW5kbGluZz8NCj4gPiANCj4gPiBZZXMsIGp1c3QgaW4gY2FzZS4NCj4gPiANCj4gPiAo QXMgYSBzaWRlIG5vdGUsIHBvbGwoMikgc2ltcGx5IG1lYW5zICJ0aGUgcG9sbCBzeXN0ZW0gY2Fs bCIgYW5kIHJlZmVycw0KPiA+IHRvIHBvbGwncyBzeXNjYWxsIG1hbnBhZ2Ugc2VjdGlvbi4pDQo+ ID4gDQo+ID4gPiA+ID4gKwlpZiAocGZkLnJldmVudHMgJiBQT0xMSU4pDQo+ID4gPiA+ID4gKwkJ ZHJtSGFuZGxlRXZlbnQoZHJtX2ZkLCAmZHJtX2V2ZW50KTsNCj4gPiA+ID4gDQo+ID4gPiA+IElm IHdlIGRvbid0IGdldCBQT0xMSU4gKGUuZy4gaWYgd2UgdGltZW91dCksIHdhaXRfZm9yX3BhZ2Vm bGlwIHdpbGwNCj4gPiA+ID4gc2lsZW50bHkgZG8gbm90aGluZywgYW5kIHRoZSB0ZXN0IHdpbGwg cGFzcy4gSW5zdGVhZCwgd2UgcHJvYmFibHkgd2FudA0KPiA+ID4gPiB0byBmYWlsIGluIHRoaXMg Y2FzZS4NCj4gPiA+IA0KPiA+ID4gWWVzIHRoYXRzIGNvcnJlY3QsIGp1c3QgYWRkIGVsc2UgY2Fz ZSB3aXRoIGlndF9hc3NlcnQ/DQo+ID4gDQo+ID4gWWVzIQ0KPiA+IA0KPiA+ID4gPiA+ICt9DQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICtpZ3RfbWFpbg0KPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4g KwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7DQo+ID4gPiA+ID4gKwlkYXRhX2Nvbm5lY3Rvcl90ICpj b25uX2RhdGEgPSBOVUxMOw0KPiA+ID4gPiA+ICsJZGF0YV90IGRhdGEgPSB7LmRybV9mZCA9IDAs IC5udW1faF90aWxlcyA9IDAsDQo+ID4gPiA+ID4gKwkJICAgICAgIC5kaXNwbGF5ID0gTlVMTCwg LmNvbW1pdCA9IENPTU1JVF9MRUdBQ1l9Ow0KPiA+ID4gPiANCj4gPiA+ID4gTml0OiBvbmUgY2Fu IGp1c3QgZG8gYXNzaWduIHRvIHswfSB0byB6ZXJvLWZpbGwgdGhlIHN0cnVjdC4NCj4gPiA+IA0K PiA+ID4gR290IGl0DQo+ID4gPiANCj4gPiA+ID4gPiArCWlndF9maXh0dXJlIHsNCj4gPiA+ID4g PiArCQlkYXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0FOWSk7DQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJCWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsN Cj4gPiA+ID4gPiArCQlpZ3RfZGlzcGxheV9yZXF1aXJlKCZkaXNwbGF5LCBkYXRhLmRybV9mZCk7 DQo+ID4gPiA+ID4gKwkJaWd0X2Rpc3BsYXlfcmVzZXQoJmRpc3BsYXkpOw0KPiA+ID4gPiA+ICsN Cj4gPiA+ID4gPiArCQlkYXRhLmRpc3BsYXkgPSAmZGlzcGxheTsNCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKwkJZ2V0X251bWJlcl9vZl9oX3RpbGVzKCZkYXRhKTsNCj4gPiA+ID4gPiArCQlpZ3Rf ZGVidWcoIk51bWJlciBvZiBIb3Jpem9udGFsIFRpbGVzOiAlZFxuIiwgZGF0YS5udW1faF90aWxl cyk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJCWRhdGEuY29tbWl0ID0gZGF0YS5kaXNwbGF5 LT5pc19hdG9taWMgPyBDT01NSVRfQVRPTUlDIDogQ09NTUlUX0xFR0FDWTsNCj4gPiA+ID4gDQo+ ID4gPiA+IFNob3VsZCB3ZSB0cnkgdG8gcnVuIHRoaXMgdGVzdCBhdCBhbGwgb24gZHJpdmVycyB0 aGF0IGRvbid0IHN1cHBvcnQNCj4gPiA+ID4gYXRvbWljPw0KPiA+ID4gPiANCj4gPiA+ID4gSWYg dGhlIGRyaXZlciBkb2Vzbid0IHN1cHBvcnQgYXRvbWljLCB1c2VyLXNwYWNlIHdpbGwgc3VibWl0 IHR3byBwYWdlLQ0KPiA+ID4gPiBmbGlwIHJlcXVlc3RzLiBIb3dldmVyIGl0J3MgcG9zc2libGUg dGhhdCB0aGUgaGFyZHdhcmUgZXhlY3V0ZXMgYSBwYWdlLQ0KPiA+ID4gPiBmbGlwIGJldHdlZW4g Ym90aCByZXF1ZXN0czogdXNlci1zcGFjZSBjYWxscyB0aGUgZmlyc3QgZHJtTW9kZVBhZ2VGbGlw LA0KPiA+ID4gPiB0aGUgdmJsYW5rIGZvciB0aGlzIHBhcnRpY3VsYXIgQ1JUQyB0cmlnZ2Vycywg dGhlbiB1c2VyLXNwYWNlIGNhbGxzIHRoZQ0KPiA+ID4gPiBzZWNvbmQgZHJtTW9kZVBhZ2VGbGlw LiBQYWdlLWZsaXBzIHdpbGwgYmUgb3V0LW9mLXN5bmMgYnkgb25lIGZyYW1lLg0KPiA+ID4gDQo+ ID4gPiBIbW0sIHllYSBzaG91bGQgcHJvYmJhbHkgaGF2ZSBpZ3RfcmVxdWlyZSBvbiBhdG9taWMN Cj4gPiA+IA0KPiA+ID4gPiA+ICsJCWlmIChkYXRhLm51bV9oX3RpbGVzID4gMCkNCj4gPiA+ID4g PiArCQkJY29ubl9kYXRhID0gbWFsbG9jKGRhdGEubnVtX2hfdGlsZXMgKiBzaXplb2YoZGF0YV9j b25uZWN0b3JfdCkpOw0KPiA+ID4gPiA+ICsJfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCWln dF9zdWJ0ZXN0KCJiYXNpYy10ZXN0LXBhdHRlcm4iKSB7DQo+ID4gPiA+ID4gKwkJaWd0X3NraXBf b24oZGF0YS5udW1faF90aWxlcyA9PSAwKTsNCj4gPiA+ID4gPiArCQlpZ3RfYXNzZXJ0KGNvbm5f ZGF0YSk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJCWdldF9jb25uZWN0b3IoJmRhdGEsIGNv bm5fZGF0YSk7DQo+ID4gPiA+ID4gKwkJc2V0dXBfbW9kZSgmZGF0YSwgY29ubl9kYXRhKTsNCj4g PiA+ID4gPiArCQlzZXR1cF9mcmFtZWJ1ZmZlcigmZGF0YSwgY29ubl9kYXRhKTsNCj4gPiA+ID4g PiArCQlpZ3RfZGlzcGxheV9jb21taXRfYXRvbWljKGRhdGEuZGlzcGxheSwgRFJNX01PREVfQVRP TUlDX05PTkJMT0NLIHwNCj4gPiA+ID4gPiArCQkJRFJNX01PREVfUEFHRV9GTElQX0VWRU5ULCBO VUxMKTsNCj4gPiA+ID4gPiArCQl3YWl0X2Zvcl9wYWdlZmxpcChkYXRhLmRybV9mZCk7DQo+ID4g PiA+IA0KPiA+ID4gPiBIZXJlIHdlIG9ubHkgd2FpdCBmb3IgYSBzaW5nbGUgcGFnZS1mbGlwLiBU aGlzIHdpbGwgb25seSBzdGFzaCB0aGUNCj4gPiA+ID4gdGltZXN0YW1wIG9mIHRoZSBmcnN0IHBh Z2UtZmxpcCB3aXRob3V0IGNoZWNraW5nIHRoZSB0aW1lLXN0YW1wIG9mDQo+ID4gPiA+IHN1YnNl cXVlbnQgcGFnZS1mbGlwcy4gV2Ugc2hvdWxkIHdhaXQgZm9yIGFzIG1hbnkgcGFnZS1mbGlwcyBh cyBlbmFibGVkDQo+ID4gPiA+IHRpbGVkIGNvbm5lY3RvcnMuDQo+ID4gPiANCj4gPiA+IFRoYXQg d2FzIG91ciBpbml0aWFsIHVuZGVyc3RhbmRpbmcgYXMgd2VsbCwgYnV0IHdpdGgganVzdCBvbmUg d2FpdF9mb3JfcGFnZWZsaXAgY2FsbCB3ZQ0KPiA+ID4gd2VyZSBnZXRpbmcgdHdvIHBhZ2UgZmxp cCBldmVudHMgZm9yIHR3byB0aWxlcw0KPiA+ID4gRG8gd2UgbmVlZCB0byBjYWxsIHdhaXQgZm9y IHBhZ2UgZmxpcCBleHBsaWNpdGx5IHRoZSBudW1iZXIgb2YgdGltZXMgPSBudW1iZXIgb2YgdGls ZXM/DQo+ID4gDQo+ID4gT2gsIEkgc2VlLiBTbyBpdCBzZWVtcyB0d28gZXZlbnRzIGFyZSBxdWV1 ZWQuIFRoZW4gd2Ugc2hvdWxkIHByb2JhYmx5DQo+ID4gbG9vcCB1bnRpbCB3ZSBoYXZlIGEgcGFn ZS1mbGlwIGZvciBhbGwgQ1JUQ3MsIHNpbmNlIHRoZXJlJ3Mgbm8NCj4gPiBndWFyYW50ZWUgYWxs IGV2ZW50cyB3aWxsIGJlIHNlbnQgYXQgb25jZS4NCj4gPiANCj4gPiA+IFJlZ2FyZHMNCj4gPiA+ IE1hbmFzaQ0KPiA+ID4gDQo+ID4gPiA+ID4gKwkJdGVzdF9jbGVhbnVwKCZkYXRhLCBjb25uX2Rh dGEpOw0KPiA+ID4gPiA+ICsJfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCWlndF9maXh0dXJl IHsNCj4gPiA+ID4gPiArCQlmcmVlKGNvbm5fZGF0YSk7DQo+ID4gPiA+ID4gKwkJY2xvc2UoZGF0 YS5kcm1fZmQpOw0KPiA+ID4gPiA+ICsJCWttc3Rlc3RfcmVzdG9yZV92dF9tb2RlKCk7DQo+ID4g PiA+ID4gKwkJaWd0X2Rpc3BsYXlfZmluaShkYXRhLmRpc3BsYXkpOw0KPiA+ID4gPiA+ICsJfQ0K PiA+ID4gPiA+ICt9DQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIv dGVzdHMvbWVzb24uYnVpbGQNCj4gPiA+ID4gPiBpbmRleCBhN2IyYjMyMi4uNTAyOTJkZjggMTAw NjQ0DQo+ID4gPiA+ID4gLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQNCj4gPiA+ID4gPiArKysgYi90 ZXN0cy9tZXNvbi5idWlsZA0KPiA+ID4gPiA+IEBAIC0yNiw2ICsyNiw3IEBAIHRlc3RfcHJvZ3Mg PSBbDQo+ID4gPiA+ID4gIAkna21zX2N1cnNvcl9lZGdlX3dhbGsnLA0KPiA+ID4gPiA+ICAJJ2tt c19jdXJzb3JfbGVnYWN5JywNCj4gPiA+ID4gPiAgCSdrbXNfZHBfZHNjJywNCj4gPiA+ID4gPiAr CSdrbXNfZHBfdGlsZWRfZGlzcGxheScsDQo+ID4gPiA+ID4gIAkna21zX2RyYXdfY3JjJywNCj4g PiA+ID4gPiAgCSdrbXNfZmJjb25fZmJ0JywNCj4gPiA+ID4gPiAgCSdrbXNfZmVuY2VfcGluX2xl YWsnLA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0 LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2