From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 22DA66E395 for ; Wed, 22 Aug 2018 16:17:01 +0000 (UTC) Date: Wed, 22 Aug 2018 09:16:43 -0700 From: Rodrigo Vivi Message-ID: <20180822161643.GD2340@intel.com> References: <20180821001204.3385-1-rodrigo.vivi@intel.com> <877ekkb1xw.fsf@intel.com> <20180821145820.GA2159@intel.com> <87wosiaduq.fsf@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <87wosiaduq.fsf@intel.com> Subject: Re: [igt-dev] [RFC] tools/dpcd_dump: Introduce DPCD dump on IGT. 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: Jani Nikula Cc: igt-dev@lists.freedesktop.org, Rafael Antognolli , Dhinakaran Pandiyan List-ID: T24gV2VkLCBBdWcgMjIsIDIwMTggYXQgMDE6MzU6MDlQTSArMDMwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gVHVlLCAyMSBBdWcgMjAxOCwgUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50 ZWwuY29tPiB3cm90ZToKPiA+IE9uIFR1ZSwgQXVnIDIxLCAyMDE4IGF0IDEwOjQyOjM1QU0gKzAz MDAsIEphbmkgTmlrdWxhIHdyb3RlOgo+ID4+IE9uIE1vbiwgMjAgQXVnIDIwMTgsIFJvZHJpZ28g Vml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4gd3JvdGU6Cj4gPj4gPiBUaGUgaWRlYSBpcyB0 byByZW1vdmUgdGhlIGR1bXAgZnJvbSBpOTE1J3MgZGVidWdmcywgYnV0Cj4gPj4gPiBiZWZvcmUg d2UgbmVlZCB0byBiZSBhYmxlIHRvIGtlZXAgdGhlIGN1cnJlbnQgZGVidWcgZHBjZCBsaXN0Cj4g Pj4gPiBhbmQgSUdUIHNlZW1zIGEgZ29vZCBwbGFjZSB0byBoYXZlIHNvbWUgZmxleGliaWxpdHku Cj4gPj4gCj4gPj4gU2VlIGFsc28gWzFdLiBJJ20gbm90IHN1cmUgd2hhdCB0aGUgc3RhdHVzIGlz IG5vdy4gVGFydW4/Cj4gPgo+ID4gb2gsIEkgaGFkIG1pc3NlZCB0aGF0LCBzb3JyeS4KPiA+IEkg bm93IHJlbWVtYmVyIFRhcnVuIGFuZCBESyB0YWxraW5nIGFib3V0IHRoYXQgYnV0IEkgaGFkIGZv cmdvdHRlbi4uLgo+ID4KPiA+PiAKPiA+PiBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCBoYXZlIGJv dGggYXMgc2VwYXJhdGUgYmluYXJpZXMuCj4gPgo+ID4gSSBhZ3JlZSEgVGFydW4sIGZlZWwgZnJl ZSB0byBnZXQgbXkgZHVtcCBmdW5jdGlvbnMgYW5kIG1lcmdlIHRvIHlvdXIKPiA+IHdvcmsuCj4g Pgo+ID4gbWF5YmUgbXkgb25lIGNvdWxkIGJlIGRlZmF1bHQgYmVoYXZpb3VyIG9mIHlvdXJzIHdo ZW4gbm8gY29uZGl0aW9uCj4gPiBpcyBnaXZpbmcuCj4gPgo+ID4gTXkgaWRlYSBpcyB0byBzdGFy dCB3aXRoIHRoZSBjdXJyZW50IGR1bXAgdGhhdCB3ZSBoYXZlIGluIGRlYnVnZnMKPiA+IGFuZCBs YXRlciB0byBleHBhbmQgdGhhdCB0byBiZSBtb3JlIGdlbmVyaWMgbGlrZSBpbiBhIHR4dCBsaXN0 IGxpa2UKPiA+IHdlIGhhdmUgZm9yIGludGVsX3JlZy4KPiAKPiBBbmQgbm93IHdlJ3JlIGdvaW5n IGZ1bGwgY2lyY2xlIHdydCB0aGUgZGlzY3Vzc2lvbiBpbiBbMV0uIElmIHdlIGJvbHRlZAo+IGRw Y2QgYWNjZXNzIHRvIGludGVsX3JlZyBkaXJlY3RseSwgd2UnZCBnZXQgYWxsIG9mIHRoYXQgZm9y IGZyZWUuLi4KCm5haCEgbXkgYmFkIGZvciBtaXNzaW5nIHRoYXQgZGlzY3Vzc2lvbi4uLiBzb3Jy eQoKeWVhaCwgdGhpcyBpcyBhIGdvb2QgcG9pbnQuLi4KCmJ1dCBvbiB0aGUgb3RoZXIgaGFuZCBJ J20gbm90IHN1cmUgaWYgSSBsaWtlICppbnRlbCpfcmVnIHRvIHJlYWQgZHBjZCwKc3BlY2lhbGx5 IHdpdGggSUdUIG5vd2FkYXlzIHN0YW5kaW5nIGZvciBJR1QgaXMgR1BVIFRvb2xzIDspCgpzbywg d2hhdCBhYm91dCBtb3ZpbmcgY29yZSBvZiBpbnRlbF9yZWcgdG8gc29tZSBjb21tb24gbGlicmFy eSBhbmQKaW50ZWxfcmVnIGdldHMgdXNlZCBvbmx5IGZvciBpbnRlbCByZWdzIGFuZCBkcGNkX3Jl ZyBmb3IgZHBjZCBnZW5lcmljYWxseT8KCj4gCj4gQlIsCj4gSmFuaS4KPiAKPiAKPiAKPiAKPiA+ Cj4gPiBUaGFua3MsCj4gPiBSb2RyaWdvLgo+ID4KPiA+PiAKPiA+PiBCUiwKPiA+PiBKYW5pLgo+ ID4+IAo+ID4+IAo+ID4+IFsxXSBodHRwOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRj aC9tc2dpZC8yMDE4MDYxNDA3MTE0MS4xNDQyNzUtMS10YXJ1bi52eWFzQGludGVsLmNvbQo+ID4+ IAo+ID4+IAo+ID4+ID4KPiA+PiA+IEZJWE1FOiBmZmZmZiB0cmFzaC4uLgo+ID4+ID4KPiA+PiA+ IEN1cnJlbnQgZGVidWdmczoKPiA+PiA+Cj4gPj4gPiAkIHN1ZG8gY2F0IC9zeXMva2VybmVsL2Rl YnVnL2RyaS8wL0RQLTEvaTkxNV9kcGNkCj4gPj4gPiAwMDAwOiAxMiAxNCBjNCAwMSAwMSAwMCAw MSAwMCAwMiAwMiAwNiAwMCAwMCAwMCAwMgo+ID4+ID4gMDA3MDogMDAgMDAKPiA+PiA+IDAwODA6 IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwCj4gPj4gPiAw MTAwOiAxNCA4NCAwMCAwNiAwNiAwNiAwNiAwMCAwMSAwNCAwMAo+ID4+ID4gMDIwMDogNDEgMDAg NzcgNzcgMDEgMDMgMjIgMjIKPiA+PiA+IDA2MDA6IDAxCj4gPj4gPiAwNzAwOiAwMQo+ID4+ID4g MDcwMTogMDAgMDAgMDAgMDAKPiA+PiA+IDA3MjA6IDAwIDAxIDAwIDAwIDAwIDAxIDAxIDAwIDAw IDAwIDAwIDAwIDAxIDAwIDAwIDAxCj4gPj4gPiAwNzMyOiAwMCAwMAo+ID4+ID4KPiA+PiA+ICQg c3VkbyBjYXQgL3N5cy9rZXJuZWwvZGVidWcvZHJpLzAvZURQLTEvaTkxNV9kcGNkCj4gPj4gPiAw MDAwOiAxMiAxNCA4NCA0MCAwMCAwMCAwMSAwMSAwMiAwMCAwMCAwMCAwMCAwYiAwMAo+ID4+ID4g MDA3MDogMDEgMDAKPiA+PiA+IDAwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw IDAwIDAwIDAwIDAwIDAwCj4gPj4gPiAwMTAwOiAxNCAwNCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw MCAwMAo+ID4+ID4gMDIwMDogNDEgMDAgMDAgMDAgODAgMDAgNjYgNjYKPiA+PiA+IDA2MDA6IDAx Cj4gPj4gPiAwNzAwOiAwMgo+ID4+ID4gMDcwMTogOWYgNDAgMDAgMDAKPiA+PiA+IDA3MjA6IDAw IDAwIDAwIDAwIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwCj4gPj4gPiAwNzMy OiAwMCAwMAo+ID4+ID4KPiA+PiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ID4+ID4KPiA+PiA+IEN1cnJlbnQgZHBjZF9kdW1wIHBy b3Bvc2VkIGhlcmU6Cj4gPj4gPiAkIHN1ZG8gLi9idWlsZC90b29scy9kcGNkX2R1bXAKPiA+PiA+ Cj4gPj4gPiBEdW1waW5nIERQRERDLUIKPiA+PiA+IDoKPiA+PiA+IDAwMDA6ICAxMiAxNCBmZmZm ZmZjNCAwMSAwMSAwMCAwMSAwMCAwMiAwMiAwNiAwMCAwMCAwMCAwMgo+ID4+ID4gMDA3MDogIDAw IDAwCj4gPj4gPiAwMDgwOiAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAKPiA+PiA+IDAxMDA6ICAxNCBmZmZmZmY4NCAwMCAwNiAwNiAwNiAwNiAwMCAwMSAw NCAwMAo+ID4+ID4gMDIwMDogIDQxIDAwIDc3IDc3IDAxIDAzIDIyIDIyCj4gPj4gPiAwNjAwOiAg MDEKPiA+PiA+IDA3MDA6ICAwMQo+ID4+ID4gMDcwMTogIDAwIDAwIDAwIDAwCj4gPj4gPiAwNzIw OiAgMDAgMDEgMDAgMDAgMDAgMDEgMDEgMDAgMDAgMDAgMDAgMDAgMDEgMDAgMDAgMDEKPiA+PiA+ IDA3MzI6ICAwMCAwMAo+ID4+ID4KPiA+PiA+IERQQ0QgRFBEREMtQwo+ID4+ID4gIHNlZW1zIG5v dCBhdmFpbGFibGUuIHNraXBwaW5nLi4uCj4gPj4gPiBEdW1waW5nIERQRERDLUEKPiA+PiA+IDoK PiA+PiA+IDAwMDA6ICAxMiAxNCBmZmZmZmY4NCA0MCAwMCAwMCAwMSAwMSAwMiAwMCAwMCAwMCAw MCAwYiAwMAo+ID4+ID4gMDA3MDogIDAxIDAwCj4gPj4gPiAwMDgwOiAgMDAgMDAgMDAgMDAgMDAg MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAKPiA+PiA+IDAxMDA6ICAxNCAwNCAwMCAw MCAwMCAwMCAwMCAwMCAwMCAwMCAwMAo+ID4+ID4gMDIwMDogIDQxIDAwIDAwIDAwIGZmZmZmZjgw IDAwIDY2IDY2Cj4gPj4gPiAwNjAwOiAgMDEKPiA+PiA+IDA3MDA6ICAwMgo+ID4+ID4gMDcwMTog IGZmZmZmZjlmIDQwIDAwIDAwCj4gPj4gPiAwNzIwOiAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDEg MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAKPiA+PiA+IDA3MzI6ICAwMCAwMAo+ID4+ID4KPiA+PiA+ IENjOiBSYWZhZWwgQW50b2dub2xsaSA8cmFmYWVsLmFudG9nbm9sbGlAaW50ZWwuY29tPgo+ID4+ ID4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4gPj4gPiBDYzogRGhp bmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+Cj4gPj4gPiBT aWduZWQtb2ZmLWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gPj4g PiAtLS0KPiA+PiA+ICB0b29scy9NYWtlZmlsZS5zb3VyY2VzIHwgICAxICsKPiA+PiA+ICB0b29s cy9kcGNkX2R1bXAuYyAgICAgIHwgMTUyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4gPj4gPiAgdG9vbHMvbWVzb24uYnVpbGQgICAgICB8ICAgMSArCj4gPj4gPiAg MyBmaWxlcyBjaGFuZ2VkLCAxNTQgaW5zZXJ0aW9ucygrKQo+ID4+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NCB0b29scy9kcGNkX2R1bXAuYwo+ID4+ID4KPiA+PiA+IGRpZmYgLS1naXQgYS90b29scy9N YWtlZmlsZS5zb3VyY2VzIGIvdG9vbHMvTWFrZWZpbGUuc291cmNlcwo+ID4+ID4gaW5kZXggYWJk MjNhMGYuLmY0OTIxZjgzIDEwMDY0NAo+ID4+ID4gLS0tIGEvdG9vbHMvTWFrZWZpbGUuc291cmNl cwo+ID4+ID4gKysrIGIvdG9vbHMvTWFrZWZpbGUuc291cmNlcwo+ID4+ID4gQEAgLTYsNiArNiw3 IEBAIG5vaW5zdF9QUk9HUkFNUyA9CQlcCj4gPj4gPiAgCSQoTlVMTCkKPiA+PiA+ICAKPiA+PiA+ ICB0b29sc19wcm9nX2xpc3RzID0JCVwKPiA+PiA+ICsJZHBjZF9kdW1wCQlcCj4gPj4gPiAgCWln dF9zdGF0cwkJXAo+ID4+ID4gIAlpbnRlbF9hdWRpb19kdW1wCVwKPiA+PiA+ICAJaW50ZWxfcmVn CQlcCj4gPj4gPiBkaWZmIC0tZ2l0IGEvdG9vbHMvZHBjZF9kdW1wLmMgYi90b29scy9kcGNkX2R1 bXAuYwo+ID4+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+PiA+IGluZGV4IDAwMDAwMDAwLi4x Yjk4OWU1Mwo+ID4+ID4gLS0tIC9kZXYvbnVsbAo+ID4+ID4gKysrIGIvdG9vbHMvZHBjZF9kdW1w LmMKPiA+PiA+IEBAIC0wLDAgKzEsMTUyIEBACj4gPj4gPiArLyoKPiA+PiA+ICsgKiBDb3B5cmln aHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4+ID4gKyAqCj4gPj4gPiArICogUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0 YWluaW5nIGEKPiA+PiA+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ID4+ID4gKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24KPiA+PiA+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiA+PiA+ICsgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKPiA+PiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ID4+ID4gKyAqCj4gPj4gPiArICogVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0 aGUgbmV4dAo+ID4+ID4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiA+PiA+ICsgKiBTb2Z0d2FyZS4K PiA+PiA+ICsgKgo+ID4+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gPj4gPiArICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCj4gPj4gPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gPj4gPiArICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIKPiA+PiA+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ID4+ID4gKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MKPiA+PiA+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gPj4gPiArICoKPiA+PiA+ICsg Ki8KPiA+PiA+ICsKPiA+PiA+ICsjaW5jbHVkZSA8c3RkaW8uaD4KPiA+PiA+ICsjaW5jbHVkZSA8 c3RkbGliLmg+Cj4gPj4gPiArI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ID4+ID4gKyNpbmNsdWRlIDxz eXMvdHlwZXMuaD4KPiA+PiA+ICsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPiA+PiA+ICsjaW5jbHVk ZSA8ZmNudGwuaD4KPiA+PiA+ICsjaW5jbHVkZSA8ZGlyZW50Lmg+Cj4gPj4gPiArI2luY2x1ZGUg PHN0cmluZy5oPgo+ID4+ID4gKwo+ID4+ID4gK3N0cnVjdCBkcGNkX2Jsb2NrIHsKPiA+PiA+ICsJ LyogRFBDRCBkdW1wIHN0YXJ0IGFkZHJlc3MuICovCj4gPj4gPiArCXVuc2lnbmVkIGludCBvZmZz ZXQ7Cj4gPj4gPiArCS8qIERQQ0QgZHVtcCBzaXplLiBJZiB1bnNldCwgZGVmYXVsdHMgdG8gMS4g Ki8KPiA+PiA+ICsJc2l6ZV90IHNpemU7Cj4gPj4gPiArfTsKPiA+PiA+ICsKPiA+PiA+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRwY2RfYmxvY2sgZHBjZF9kdW1wW10gPSB7Cj4gPj4gPiArCS8qIERQ X0RQQ0RfUkVWICovCj4gPj4gPiArCXsgLm9mZnNldCA9IDAsIC5zaXplID0gMTUgfSwKPiA+PiA+ ICsJLyogRFBfUFNSX1NVUFBPUlQgdG8gRFBfUFNSX0NBUFMqLwo+ID4+ID4gKwl7IC5vZmZzZXQg PSAgMHg3MCwgLnNpemUgPSAyIH0sCj4gPj4gPiArCS8qIERQX0RPV05TVFJFQU1fUE9SVF8wICov Cj4gPj4gPiArCXsgLm9mZnNldCA9ICAweDgwLCAuc2l6ZSA9IDE2IH0sCj4gPj4gPiArCS8qIERQ X0xJTktfQldfU0VUIHRvIERQX0VEUF9DT05GSUdVUkFUSU9OX1NFVCAqLwo+ID4+ID4gKwl7IC5v ZmZzZXQgPSAweDEwMCwgLnNpemUgPSAxMSB9LAo+ID4+ID4gKwkvKiBEUF9TSU5LX0NPVU5UIHRv IERQX0FESlVTVF9SRVFVRVNUX0xBTkUyXzMgKi8KPiA+PiA+ICsJeyAub2Zmc2V0ID0gMHgyMDAs IC5zaXplID0gOCB9LAo+ID4+ID4gKwkvKiBEUF9TRVRfUE9XRVIgKi8KPiA+PiA+ICsJeyAub2Zm c2V0ID0gMHg2MDAgfSwKPiA+PiA+ICsJLyogRFBfRURQX0RQQ0RfUkVWICovCj4gPj4gPiArCXsg Lm9mZnNldCA9ICAweDcwMCB9LAo+ID4+ID4gKwkvKiBEUF9FRFBfR0VORVJBTF9DQVBfMSB0byBE UF9FRFBfR0VORVJBTF9DQVBfMyAqLwo+ID4+ID4gKwl7IC5vZmZzZXQgPSAweDcwMSwgLnNpemUg PSA0IH0sCj4gPj4gPiArCS8qIERQX0VEUF9ESVNQTEFZX0NPTlRST0xfUkVHSVNURVIgdG8gRFBf RURQX0JBQ0tMSUdIVF9GUkVRX0NBUF9NQVhfTFNCICovCj4gPj4gPiArCXsgLm9mZnNldCA9IDB4 NzIwLCAuc2l6ZSA9IDE2fSwKPiA+PiA+ICsJLyogRFBfRURQX0RCQ19NSU5JTVVNX0JSSUdIVE5F U1NfU0VUIHRvIERQX0VEUF9EQkNfTUFYSU1VTV9CUklHSFRORVNTX1NFVCAqLwo+ID4+ID4gKwl7 IC5vZmZzZXQgPSAgMHg3MzIsIC5zaXplID0gMiB9LAo+ID4+ID4gK307Cj4gPj4gPiArCj4gPj4g PiArdm9pZCBkdW1wX2FsbChpbnQgZmQpCj4gPj4gPiArewo+ID4+ID4gKwlpbnQgcmV0LCBpLCBq LCBzaXplOwo+ID4+ID4gKyAgICAgICAgY2hhciBidWZbMzJdOwo+ID4+ID4gKwo+ID4+ID4gKwlm b3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGRwY2RfZHVtcCkgLyBzaXplb2YoZHBjZF9kdW1wWzBdKTsg aSsrKSB7Cj4gPj4gPiArCQlyZXQgPSBsc2VlayhmZCwgZHBjZF9kdW1wW2ldLm9mZnNldCwgU0VF S19TRVQpOwo+ID4+ID4gKwkJaWYgKHJldCA8IDApIHsKPiA+PiA+ICsJCQlmcHJpbnRmKHN0ZGVy ciwgImxzZWVrIHRvICUwNHggZmFpbGVkIVxuIiwgZHBjZF9kdW1wW2ldLm9mZnNldCk7Cj4gPj4g PiArCQkJcmV0dXJuOwo+ID4+ID4gKwkJfQo+ID4+ID4gKwo+ID4+ID4gKwkJc2l6ZSA9IGRwY2Rf ZHVtcFtpXS5zaXplID8gZHBjZF9kdW1wW2ldLnNpemU6IDE7Cj4gPj4gPiArCQlwcmludGYoIiUw NHg6ICIsIGRwY2RfZHVtcFtpXS5vZmZzZXQpOwo+ID4+ID4gKwkJcmV0ID0gcmVhZChmZCwgJmJ1 Ziwgc2l6ZSk7Cj4gPj4gPiArCQlpZiAocmV0IDwgMCkgewo+ID4+ID4gKwkJCWZwcmludGYoc3Rk ZXJyLCAicmVhZCBvZiAlZCBieXRlcyB0byAlMDR4IGZhaWxlZCFcbiIsIHNpemUsIGRwY2RfZHVt cFtpXS5vZmZzZXQpOwo+ID4+ID4gKwkJCXJldHVybjsKPiA+PiA+ICsJCX0KPiA+PiA+ICsKPiA+ PiA+ICsJCWZvciAoaiA9IDA7IGogPCBzaXplOyBqKyspCj4gPj4gPiArCQkJcHJpbnRmKCIgJTAy eCIsIGJ1ZltqXSk7Cj4gPj4gPiArCQlwcmludGYoIlxuIik7Cj4gPj4gPiArCX0KPiA+PiA+ICt9 Cj4gPj4gPiArCj4gPj4gPiAraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQo+ID4+ID4g K3sKPiA+PiA+ICsJc3RydWN0IGRpcmVudCAqZGlyZW50Owo+ID4+ID4gKwlESVIgKmRpcjsKPiA+ PiA+ICsJY2hhciBkZXZfcGF0aFtQQVRIX01BWF07Cj4gPj4gPiArCWNoYXIgc3lzZnNfcGF0aFtQ QVRIX01BWF07Cj4gPj4gPiArCWludCBkZXZfZmQsIHN5c2ZzX2ZkLCByZXQgPSAwOwo+ID4+ID4g KwljaGFyIGRwY2RfbmFtZVs4XTsKPiA+PiA+ICsJY2hhciBkaXNjYXJkOwo+ID4+ID4gKwo+ID4+ ID4gKwlkaXIgPSBvcGVuZGlyKCIvc3lzL2NsYXNzL2RybV9kcF9hdXhfZGV2LyIpOwo+ID4+ID4g KwlpZiAoIWRpcikgewo+ID4+ID4gKwkJZnByaW50ZihzdGRlcnIsICJmYWlsIHRvIHJlYWQgL2Rl dlxuIik7Cj4gPj4gPiArCQlyZXR1cm4gLTE7Cj4gPj4gPiArCX0KPiA+PiA+ICsKPiA+PiA+ICsJ d2hpbGUgKChkaXJlbnQgPSByZWFkZGlyKGRpcikpKSB7Cj4gPj4gPiArCQlpZiAoc3RybmNtcChk aXJlbnQtPmRfbmFtZSwgImRybV9kcF9hdXgiLCAxMCkgPT0gMCkgewo+ID4+ID4gKwkJCXNwcmlu dGYoZGV2X3BhdGgsICIvZGV2LyVzIiwgZGlyZW50LT5kX25hbWUpOwo+ID4+ID4gKwkJCXNwcmlu dGYoc3lzZnNfcGF0aCwgIi9zeXMvY2xhc3MvZHJtX2RwX2F1eF9kZXYvJXMvbmFtZSIsCj4gPj4g PiArCQkJCWRpcmVudC0+ZF9uYW1lKTsKPiA+PiA+ICsKPiA+PiA+ICsJCQlzeXNmc19mZCA9IG9w ZW4oc3lzZnNfcGF0aCwgT19SRE9OTFkpOwo+ID4+ID4gKwkJCWlmIChzeXNmc19mZCA8IDApIHsK PiA+PiA+ICsJCQkJZnByaW50ZihzdGRlcnIsImZhaWwgdG8gb3BlbiAlc1xuIiwgc3lzZnNfcGF0 aCk7Cj4gPj4gPiArCQkJCWNvbnRpbnVlOwo+ID4+ID4gKwkJCX0KPiA+PiA+ICsKPiA+PiA+ICsJ CQlkZXZfZmQgPSBvcGVuKGRldl9wYXRoLCBPX1JET05MWSk7Cj4gPj4gPiArCQkJaWYgKGRldl9m ZCA8IDApIHsKPiA+PiA+ICsJCQkJZnByaW50ZihzdGRlcnIsImZhaWwgdG8gb3BlbiAlc1xuIiwg ZGV2X3BhdGgpOwo+ID4+ID4gKwkJCQljb250aW51ZTsKPiA+PiA+ICsJCQl9Cj4gPj4gPiArCj4g Pj4gPiArCQkJcmV0ID0gcmVhZChzeXNmc19mZCwgJmRwY2RfbmFtZSwgc2l6ZW9mKGRwY2RfbmFt ZSkpOwo+ID4+ID4gKwkJCWlmIChyZXQgPCAwKSB7Cj4gPj4gPiArCQkJCWZwcmludGYoc3RkZXJy LCAiZmFpbCB0byByZWFkIGRwY2QgbmFtZSBmcm9tICVzXG5cbiIsIHN5c2ZzX3BhdGgpOwo+ID4+ ID4gKwkJCQljb250aW51ZTsKPiA+PiA+ICsJCQl9Cj4gPj4gPiArCQkJZHBjZF9uYW1lW3JldF0g PSAnXDAnOwo+ID4+ID4gKwo+ID4+ID4gKwkJCS8qIER1bW15IHJlYWQgdG8gY2hlY2sgaWYgZHBj ZCBpcyBhdmFpbGFibGUgKi8KPiA+PiA+ICsJCQlyZXQgPSByZWFkKGRldl9mZCwgJmRpc2NhcmQs IDEpOwo+ID4+ID4gKwkJCWlmIChyZXQgIT0gMSkgewo+ID4+ID4gKwkJCQlmcHJpbnRmKHN0ZGVy ciwgIkRQQ0QgJXMgc2VlbXMgbm90IGF2YWlsYWJsZS4gc2tpcHBpbmcuLi5cbiIsIGRwY2RfbmFt ZSk7Cj4gPj4gPiArCQkJCWNvbnRpbnVlOwo+ID4+ID4gKwkJCX0KPiA+PiA+ICsKPiA+PiA+ICsJ CQlwcmludGYoIkR1bXBpbmcgJXM6XG4iLCBkcGNkX25hbWUpOwo+ID4+ID4gKwkJCWR1bXBfYWxs KGRldl9mZCk7Cj4gPj4gPiArCQkJcHJpbnRmKCJcbiIpOwo+ID4+ID4gKwo+ID4+ID4gKwo+ID4+ ID4gKwo+ID4+ID4gKwkJCWNsb3NlKHN5c2ZzX2ZkKTsKPiA+PiA+ICsJCQljbG9zZShkZXZfZmQp Owo+ID4+ID4gKwkJfQo+ID4+ID4gKwl9Cj4gPj4gPiArCj4gPj4gPiArCWNsb3NlZGlyKGRpcik7 Cj4gPj4gPiArCj4gPj4gPiArCXJldHVybiAwOwo+ID4+ID4gK30KPiA+PiA+IGRpZmYgLS1naXQg YS90b29scy9tZXNvbi5idWlsZCBiL3Rvb2xzL21lc29uLmJ1aWxkCj4gPj4gPiBpbmRleCBlNDUx N2Q2Ni4uMzMyNmE1YTcgMTAwNjQ0Cj4gPj4gPiAtLS0gYS90b29scy9tZXNvbi5idWlsZAo+ID4+ ID4gKysrIGIvdG9vbHMvbWVzb24uYnVpbGQKPiA+PiA+IEBAIC0xNCw2ICsxNCw3IEBAIGVuZGZv cmVhY2gKPiA+PiA+ICB0b29sc19wcm9ncyA9IFsKPiA+PiA+ICAJIyBGSVhNRSB3ZSBhbHJlYWR5 IGhhdmUgYSBsaWJ0ZXN0Y2FzZSB3aXRoIHRoaXMgbmFtZSBhcyB0YXJnZXQKPiA+PiA+ICAJIydp Z3Rfc3RhdHMnLAo+ID4+ID4gKwknZHBjZF9kdW1wJywKPiA+PiA+ICAJJ2ludGVsX2F1ZGlvX2R1 bXAnLAo+ID4+ID4gIAknaW50ZWxfYmFja2xpZ2h0JywKPiA+PiA+ICAJJ2ludGVsX2Jpb3NfZHVt cGVyJywKPiA+PiAKPiA+PiAtLSAKPiA+PiBKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2Ug R3JhcGhpY3MgQ2VudGVyCj4gCj4gLS0gCj4gSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNl IEdyYXBoaWNzIENlbnRlcgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCj4gaWd0LWRldiBtYWlsaW5nIGxpc3QKPiBpZ3QtZGV2QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aWd0LWRldgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpp Z3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK