From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH i-g-t] tools Add a intel_fw_dump tool Date: Tue, 30 Jun 2015 17:49:12 +0300 Message-ID: <87si992qvr.fsf@intel.com> References: <1435673623-15343-1-git-send-email-damien.lespiau@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 609B36E991 for ; Tue, 30 Jun 2015 07:51:28 -0700 (PDT) In-Reply-To: <1435673623-15343-1-git-send-email-damien.lespiau@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Damien Lespiau , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAzMCBKdW4gMjAxNSwgRGFtaWVuIExlc3BpYXUgPGRhbWllbi5sZXNwaWF1QGludGVs LmNvbT4gd3JvdGU6Cj4gU28gd2UgY2FuIGluc3BlY3QgZncgaGVhZGVycy4gU2FtcGxlIG91dHB1 dDoKCk5pdHBpY2sgb24gdGhlIHRvb2wgbmFtZSwgSSdkIGxpa2UgdG8gbWFrZSBhIGRpc3RpbmN0 aW9uIGJldHdlZW4gdG9vbHMKdGhhdCBkdW1wIHNvbWUgYmxvYiBmcm9tIHRoZSBkcml2ZXIvaGFy ZHdhcmUvYmlvcy93aGF0ZXZlciwgYW5kIHRvb2xzCnRoYXQgZGVjb2RlIHRob3NlIGJsb2JzLiAo U2VlIGFsc28gdGhlIGNvbmZ1c2luZyBuYW1pbmcgd2l0aAppbnRlbF9iaW9zX2R1bXBlciB2cy4g aW50ZWxfYmlvc19yZWFkZXIuKSAgSSdkIGNhbGwgdGhpcwoiaW50ZWxfZmlybXdhcmVfZGVjb2Rl Ii4KCkFub3RoZXIgbml0cGljayBpcyB0aGF0IEknZCBwbGFuIG9uIHVzaW5nIGdldG9wdCBmcm9t IHRoZSBiZWdpbm5pbmcsIGFuZApoYXZpbmcgYSAtZiBvciAtLWZpbGUgb3B0aW9uIGZvciB0aGUg aW5wdXQuCgpCUiwKSmFuaS4KCj4gRmlybXdhcmU6IHNrbF9kbWNfdmVyMV8xOC5iaW4gKDc4OTIg Ynl0ZXMpCj4gQ1NTIGhlYWRlciAoMTI4IGJ5dGVzKQo+ICAgICBtb2R1bGVfdHlwZTogRE1DICg5 KQo+ICAgICBoZWFkZXJfbGVuOiAzMgo+ICAgICBoZWFkZXJfdmVyOiAweDEwMDAwCj4gICAgIG1v ZHVsZV9pZDogMHgwCj4gICAgIG1vZHVsZV92ZW5kb3I6IDB4MAo+ICAgICBkYXRlOiAweDdkZjA2 MGMKPiAgICAgc2l6ZTogMTk3Mwo+ICAgICBrZXlfc2l6ZTogMAo+ICAgICBtb2R1bHVzX3NpemU6 IDAKPiAgICAgZXhwb25lbnRfc2l6ZTogMAo+ICAgICB2ZXJzaW9uOiAxLjE4ICgweDEwMDEyKQo+ ICAgICBrZXJuZWxfaGVhZGVyX2luZm86IDB4MAo+IFBhY2thZ2UgaGVhZGVyICgyNTYgYnl0ZXMp Cj4gICAgIGhlYWRlcl9sZW46IDY0Cj4gICAgIGhlYWRlcl92ZXI6IDEKPiAgICAgbnVtX2VudHJp ZXM6IDMKPiBGaXJtd2FyZSAjMQo+ICAgICBzdGVwcGluZzogQS4qCj4gICAgIG9mZnNldDogNDI5 NDk2NzI5NQo+IEZpcm13YXJlICMyCj4gICAgIHN0ZXBwaW5nOiBCLioKPiAgICAgb2Zmc2V0OiA0 Mjk0OTY3Mjk1Cj4gRmlybXdhcmUgIzMKPiAgICAgc3RlcHBpbmc6ICouKgo+ICAgICBvZmZzZXQ6 IDAKPiAweDdmMDg2NzE0MzAwMAo+IDB4N2YwODY3MTQzMTgwCj4gICAgIHNpZ25hdHVyZTogMHg0 MDQwM2UzZQo+ICAgICBoZWFkZXJfbGVuOiAxMjgKPiAgICAgaGVhZGVyX3ZlcjogMQo+ICAgICBk bWNjX3ZlcjogNTIwCj4gICAgIHByb2plY3Q6IDB4OTAwCj4gICAgIGZ3X3NpemU6IDE4NDUKPiAg ICAgZndfdmVyc2lvbjogMHgxMDAwOAo+ICAgICBtbWlvX2NvdW50OiAzCj4gICAgICAgICB3cml0 ZSgweDAwMDhmMDc0LCAweDAwMDAyZmMwKQo+ICAgICAgICAgd3JpdGUoMHgwMDA4ZjAwNCwgMHgw MjUwMDIwNCkKPiAgICAgICAgIHdyaXRlKDB4MDAwOGYwMzQsIDB4YzAwM2I0MDApCj4KPiBTaWdu ZWQtb2ZmLWJ5OiBEYW1pZW4gTGVzcGlhdSA8ZGFtaWVuLmxlc3BpYXVAaW50ZWwuY29tPgo+IC0t LQo+ICB0b29scy8uZ2l0aWdub3JlICAgICAgIHwgICAxICsKPiAgdG9vbHMvTWFrZWZpbGUuc291 cmNlcyB8ICAgMSArCj4gIHRvb2xzL2ludGVsX2Z3X2R1bXAuYyAgfCAyODcgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAzIGZpbGVzIGNoYW5nZWQs IDI4OSBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9pbnRlbF9md19k dW1wLmMKPgo+IGRpZmYgLS1naXQgYS90b29scy8uZ2l0aWdub3JlIGIvdG9vbHMvLmdpdGlnbm9y ZQo+IGluZGV4IDVhMmY1ZmYuLjVhNWM2MmMgMTAwNjQ0Cj4gLS0tIGEvdG9vbHMvLmdpdGlnbm9y ZQo+ICsrKyBiL3Rvb2xzLy5naXRpZ25vcmUKPiBAQCAtMTAsNiArMTAsNyBAQCBpbnRlbF9kdW1w X2RlY29kZQo+ICBpbnRlbF9lcnJvcl9kZWNvZGUKPiAgaW50ZWxfZm9yY2V3YWtlZAo+ICBpbnRl bF9mcmFtZWJ1ZmZlcl9kdW1wCj4gK2ludGVsX2Z3X2R1bXAKPiAgaW50ZWxfZ3B1X2ZyZXF1ZW5j eQo+ICBpbnRlbF9ncHVfdGltZQo+ICBpbnRlbF9ncHVfdG9wCj4gZGlmZiAtLWdpdCBhL3Rvb2xz L01ha2VmaWxlLnNvdXJjZXMgYi90b29scy9NYWtlZmlsZS5zb3VyY2VzCj4gaW5kZXggNWFjZjQ1 YS4uNmY1MTE2MiAxMDA2NDQKPiAtLS0gYS90b29scy9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIv dG9vbHMvTWFrZWZpbGUuc291cmNlcwo+IEBAIC0xNyw2ICsxNyw3IEBAIGJpbl9QUk9HUkFNUyA9 IAkJCQlcCj4gIAlpbnRlbF9mb3JjZXdha2VkCQlcCj4gIAlpbnRlbF9ncHVfZnJlcXVlbmN5CQlc Cj4gIAlpbnRlbF9mcmFtZWJ1ZmZlcl9kdW1wIAkJXAo+ICsJaW50ZWxfZndfZHVtcAkJCVwKPiAg CWludGVsX2dwdV90aW1lIAkJCVwKPiAgCWludGVsX2dwdV90b3AgCQkJXAo+ICAJaW50ZWxfZ3R0 IAkJCVwKPiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfZndfZHVtcC5jIGIvdG9vbHMvaW50ZWxf ZndfZHVtcC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5hZTZlMDJj Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3Rvb2xzL2ludGVsX2Z3X2R1bXAuYwo+IEBAIC0wLDAg KzEsMjg3IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE1IEludGVsIENvcnBvcmF0aW9u Cj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAq IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM SU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqIEF1dGhvcnM6Cj4gKyAqICAg IERhbWllbiBMZXNwaWF1IDxkYW1pZW4ubGVzcGlhdUBpbnRlbC5jb20+Cj4gKyAqLwo+ICsKPiAr I2luY2x1ZGUgPGZjbnRsLmg+Cj4gKyNpbmNsdWRlIDxzdGRpby5oPgo+ICsjaW5jbHVkZSA8c3Rk aW50Lmg+Cj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPiArI2luY2x1ZGUgPHN0cmluZy5oPgo+ICsj aW5jbHVkZSA8dW5pc3RkLmg+Cj4gKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KPiArI2luY2x1ZGUg PHN5cy9tbWFuLmg+Cj4gKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgo+ICsKPiArI2luY2x1ZGUgImln dF9jb3JlLmgiCj4gKwo+ICsjZGVmaW5lIF9fcGFja2VkICAgICAgICAgICAgICAgICAgICAgICAg X19hdHRyaWJ1dGVfXygocGFja2VkKSkKPiArCj4gK3N0cnVjdCBpbnRlbF9jc3NfaGVhZGVyIHsK PiArCS8qIDB4MDkgZm9yIERNQyAqLwo+ICsJdWludDMyX3QgbW9kdWxlX3R5cGU7Cj4gKwo+ICsJ LyogSW5jbHVkZXMgdGhlIERNQyBzcGVjaWZpYyBoZWFkZXIgaW4gZHdvcmRzICovCj4gKwl1aW50 MzJfdCBoZWFkZXJfbGVuOwo+ICsKPiArCS8qIGFsd2F5cyB2YWx1ZSB3b3VsZCBiZSAweDEwMDAw ICovCj4gKwl1aW50MzJfdCBoZWFkZXJfdmVyOwo+ICsKPiArCS8qIE5vdCB1c2VkICovCj4gKwl1 aW50MzJfdCBtb2R1bGVfaWQ7Cj4gKwo+ICsJLyogTm90IHVzZWQgKi8KPiArCXVpbnQzMl90IG1v ZHVsZV92ZW5kb3I7Cj4gKwo+ICsJLyogaW4gWVlZWU1NREQgZm9ybWF0ICovCj4gKwl1aW50MzJf dCBkYXRlOwo+ICsKPiArCS8qIFNpemUgaW4gZHdvcmRzIChDU1NfSGVhZGVybGVuICsgUGFja2Fn ZUhlYWRlckxlbiArIGRtYyBGV3NMZW4pLzQgKi8KPiArCXVpbnQzMl90IHNpemU7Cj4gKwo+ICsJ LyogTm90IHVzZWQgKi8KPiArCXVpbnQzMl90IGtleV9zaXplOwo+ICsKPiArCS8qIE5vdCB1c2Vk ICovCj4gKwl1aW50MzJfdCBtb2R1bHVzX3NpemU7Cj4gKwo+ICsJLyogTm90IHVzZWQgKi8KPiAr CXVpbnQzMl90IGV4cG9uZW50X3NpemU7Cj4gKwo+ICsJLyogTm90IHVzZWQgKi8KPiArCXVpbnQz Ml90IHJlc2VydmVkMVsxMl07Cj4gKwo+ICsJLyogTWFqb3IgTWlub3IgKi8KPiArCXVpbnQzMl90 IHZlcnNpb247Cj4gKwo+ICsJLyogTm90IHVzZWQgKi8KPiArCXVpbnQzMl90IHJlc2VydmVkMls4 XTsKPiArCj4gKwkvKiBOb3QgdXNlZCAqLwo+ICsJdWludDMyX3Qga2VybmVsX2hlYWRlcl9pbmZv Owo+ICt9IF9fcGFja2VkOwo+ICsKPiArc3RydWN0IGludGVsX2Z3X2luZm8gewo+ICsJdWludDE2 X3QgcmVzZXJ2ZWQxOwo+ICsKPiArCS8qIFN0ZXBwaW5nIChBLCBCLCBDLCAuLi4sICopLiAqIGlz IGEgd2lsZGNhcmQgKi8KPiArCWNoYXIgc3RlcHBpbmc7Cj4gKwo+ICsJLyogU3ViLXN0ZXBwaW5n ICgwLCAxLCAuLi4sICopLiAqIGlzIGEgd2lsZGNhcmQgKi8KPiArCWNoYXIgc3Vic3RlcHBpbmc7 Cj4gKwo+ICsJdWludDMyX3Qgb2Zmc2V0Owo+ICsJdWludDMyX3QgcmVzZXJ2ZWQyOwo+ICt9IF9f cGFja2VkOwo+ICsKPiArc3RydWN0IGludGVsX3BhY2thZ2VfaGVhZGVyIHsKPiArCS8qIERNQyBj b250YWluZXIgaGVhZGVyIGxlbmd0aCBpbiBkd29yZHMgKi8KPiArCXVuc2lnbmVkIGNoYXIgaGVh ZGVyX2xlbjsKPiArCj4gKwkvKiBhbHdheXMgdmFsdWUgd291bGQgYmUgMHgwMSAqLwo+ICsJdW5z aWduZWQgY2hhciBoZWFkZXJfdmVyOwo+ICsKPiArCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTBd Owo+ICsKPiArCS8qIE51bWJlciBvZiB2YWxpZCBlbnRyaWVzIGluIHRoZSBGV0luZm8gYXJyYXkg YmVsb3cgKi8KPiArCXVpbnQzMl90IG51bV9lbnRyaWVzOwo+ICsKPiArCXN0cnVjdCBpbnRlbF9m d19pbmZvIGZ3X2luZm9bMjBdOwo+ICt9IF9fcGFja2VkOwo+ICsKPiArc3RydWN0IGludGVsX2Rt Y19oZWFkZXIgewo+ICsJLyogYWx3YXlzIHZhbHVlIHdvdWxkIGJlIDB4NDA0MDNFM0UgKi8KPiAr CXVpbnQzMl90IHNpZ25hdHVyZTsKPiArCj4gKwkvKiBETUMgYmluYXJ5IGhlYWRlciBsZW5ndGgg Ki8KPiArCXVuc2lnbmVkIGNoYXIgaGVhZGVyX2xlbjsKPiArCj4gKwkvKiAweDAxICovCj4gKwl1 bnNpZ25lZCBjaGFyIGhlYWRlcl92ZXI7Cj4gKwo+ICsJLyogUmVzZXJ2ZWQgKi8KPiArCXVpbnQx Nl90IGRtY2NfdmVyOwo+ICsKPiArCS8qIE1ham9yLCBNaW5vciAqLwo+ICsJdWludDMyX3QJcHJv amVjdDsKPiArCj4gKwkvKiBGaXJtd2FyZSBwcm9ncmFtIHNpemUgKGV4Y2x1ZGluZyBoZWFkZXIp IGluIGR3b3JkcyAqLwo+ICsJdWludDMyX3QJZndfc2l6ZTsKPiArCj4gKwkvKiBNYWpvciBNaW5v ciB2ZXJzaW9uICovCj4gKwl1aW50MzJfdCBmd192ZXJzaW9uOwo+ICsKPiArCS8qIE51bWJlciBv ZiB2YWxpZCBNTUlPIGN5Y2xlcyBwcmVzZW50LiAqLwo+ICsJdWludDMyX3QgbW1pb19jb3VudDsK PiArCj4gKwkvKiBNTUlPIGFkZHJlc3MgKi8KPiArCXVpbnQzMl90IG1taW9hZGRyWzhdOwo+ICsK PiArCS8qIE1NSU8gZGF0YSAqLwo+ICsJdWludDMyX3QgbW1pb2RhdGFbOF07Cj4gKwo+ICsJLyog RlcgZmlsZW5hbWUgICovCj4gKwl1bnNpZ25lZCBjaGFyIGRmaWxlWzMyXTsKPiArCj4gKwl1aW50 MzJfdCByZXNlcnZlZDFbMl07Cj4gK30gX19wYWNrZWQ7Cj4gKwo+ICt0eXBlZGVmIHN0cnVjdCB7 Cj4gKwlpbnQgZmQ7Cj4gKwl1aW50OF90ICpiYXNlOwo+ICsJc3RydWN0IGludGVsX2Nzc19oZWFk ZXIgKmNzc19oZWFkZXI7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGFja2FnZV9oZWFkZXIgKnBhY2thZ2Vf aGVhZGVyOwo+ICt9IGNzcl90Owo+ICsKPiArc3RhdGljIHZvaWQgY3NyX29wZW4oY3NyX3QgKmN0 eCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCj4gK3sKPiArCXN0cnVjdCBzdGF0IHN0Owo+ICsKPiAr CWN0eC0+ZmQgPSBvcGVuKGZpbGVuYW1lLCBPX1JEV1IpOwo+ICsJaWd0X2ZhaWxfb25fZihjdHgt PmZkID09IC0xLCAiQ291bGRuJ3Qgb3BlbiAlc1xuIiwgZmlsZW5hbWUpOwo+ICsKPiArCWZzdGF0 KGN0eC0+ZmQsICZzdCk7Cj4gKwljdHgtPmJhc2UgPSBtbWFwKE5VTEwsIHN0LnN0X3NpemUsIFBS T1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9QUklWQVRFLAo+ICsJCQkgY3R4LT5mZCwgMCk7Cj4g KwlpZ3RfZmFpbF9vbl9mKGN0eC0+YmFzZSA9PSBNQVBfRkFJTEVELCAiQ291bGRuJ3QgbW1hcCAl c1xuIiwgZmlsZW5hbWUpOwo+ICsKPiArCXByaW50ZigiRmlybXdhcmU6ICVzICglemQgYnl0ZXMp XG4iLCBmaWxlbmFtZSwgc3Quc3Rfc2l6ZSk7Cj4gKwo+ICsJY3R4LT5jc3NfaGVhZGVyID0gKHN0 cnVjdCBpbnRlbF9jc3NfaGVhZGVyICopY3R4LT5iYXNlOwo+ICsJY3R4LT5wYWNrYWdlX2hlYWRl ciA9IChzdHJ1Y3QgaW50ZWxfcGFja2FnZV9oZWFkZXIgKikKPiArCQkJCShjdHgtPmJhc2UgKyBz aXplb2YoKmN0eC0+Y3NzX2hlYWRlcikpOwo+ICt9Cj4gKwo+ICsjZGVmaW5lIHByaW50X2QzMihw LCBmaWVsZCkgXAo+ICsJcHJpbnRmKCIgICAgIiNmaWVsZCI6ICV1XG4iLCAocCktPmZpZWxkKQo+ ICsjZGVmaW5lIHByaW50X3gzMihwLCBmaWVsZCkgXAo+ICsJcHJpbnRmKCIgICAgIiNmaWVsZCI6 IDB4JXhcbiIsIChwKS0+ZmllbGQpCj4gKyNkZWZpbmUgcHJpbnRfcyhwLCBmaWVsZCkgXAo+ICsJ cHJpbnRmKCIgICAgIiNmaWVsZCI6ICVzXG4iLCAocCktPmZpZWxkKQo+ICsKPiArc3RhdGljIGNv bnN0IGNoYXIgKm1vZHVsZV90eXBlX25hbWUodWludDMyX3QgbW9kdWxlX3R5cGUpCj4gK3sKPiAr CXN3aXRjaCAobW9kdWxlX3R5cGUpIHsKPiArCWNhc2UgMHg5Ogo+ICsJCXJldHVybiAiRE1DIjsK PiArCWRlZmF1bHQ6Cj4gKwkJcmV0dXJuICJVbmtub3duIjsKPiArCX0KPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgZHVtcF9jc3MoY3NyX3QgKmN0eCkKPiArewo+ICsJc3RydWN0IGludGVsX2Nzc19o ZWFkZXIgKmNzcyA9IGN0eC0+Y3NzX2hlYWRlcjsKPiArCj4gKwlwcmludGYoIkNTUyBoZWFkZXIg KCV6ZCBieXRlcylcbiIsIHNpemVvZigqY3NzKSk7Cj4gKwlwcmludGYoIiAgICBtb2R1bGVfdHlw ZTogJXMgKCVkKVxuIiwgbW9kdWxlX3R5cGVfbmFtZShjc3MtPm1vZHVsZV90eXBlKSwKPiArCSAg ICAgICBjc3MtPm1vZHVsZV90eXBlKTsKPiArCXByaW50X2QzMihjc3MsIGhlYWRlcl9sZW4pOwo+ ICsJcHJpbnRfeDMyKGNzcywgaGVhZGVyX3Zlcik7Cj4gKwlwcmludF94MzIoY3NzLCBtb2R1bGVf aWQpOwo+ICsJcHJpbnRfeDMyKGNzcywgbW9kdWxlX3ZlbmRvcik7Cj4gKwlwcmludF94MzIoY3Nz LCBkYXRlKTsKPiArCXByaW50X2QzMihjc3MsIHNpemUpOwo+ICsJcHJpbnRfZDMyKGNzcywga2V5 X3NpemUpOwo+ICsJcHJpbnRfZDMyKGNzcywgbW9kdWx1c19zaXplKTsKPiArCXByaW50X2QzMihj c3MsIGV4cG9uZW50X3NpemUpOwo+ICsJLyogdWludDMyX3QgcmVzZXJ2ZWQxWzEyXTsgKi8KPiAr CXByaW50ZigiICAgIHZlcnNpb246ICVkLiVkICgweCV4KVxuIiwgY3NzLT52ZXJzaW9uID4+IDE2 LAo+ICsJICAgICAgIGNzcy0+dmVyc2lvbiAmIDB4ZmZmZiwgY3NzLT52ZXJzaW9uKTsKPiArCS8q IHVpbnQzMl90IHJlc2VydmVkMls4XTsgKi8KPiArCXByaW50X3gzMihjc3MsIGtlcm5lbF9oZWFk ZXJfaW5mbyk7Cj4gKwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBkdW1wX2RtYyhjc3JfdCAqY3R4 LCBzdHJ1Y3QgaW50ZWxfZndfaW5mbyAqaW5mbykKPiArewo+ICsJc3RydWN0IGludGVsX2RtY19o ZWFkZXIgKmRtYzsKPiArCXVuc2lnbmVkIGludCBpOwo+ICsKPiArCWlmIChpbmZvLT5vZmZzZXQg PT0gMHhmZmZmZmZmZikKPiArCQlyZXR1cm47Cj4gKwo+ICsJZG1jID0gKHN0cnVjdCBpbnRlbF9k bWNfaGVhZGVyICopKGN0eC0+YmFzZSArIHNpemVvZigqY3R4LT5jc3NfaGVhZGVyKQo+ICsJCQkJ CSAgKyBzaXplb2YoKmN0eC0+cGFja2FnZV9oZWFkZXIpICsKPiArCQkJCQkgIGluZm8tPm9mZnNl dCk7Cj4gKwo+ICsJcHJpbnRfeDMyKGRtYywgc2lnbmF0dXJlKTsKPiArCXByaW50X2QzMihkbWMs IGhlYWRlcl9sZW4pOwo+ICsJcHJpbnRfZDMyKGRtYywgaGVhZGVyX3Zlcik7Cj4gKwlwcmludF9k MzIoZG1jLCBkbWNjX3Zlcik7Cj4gKwlwcmludF94MzIoZG1jLCBwcm9qZWN0KTsKPiArCXByaW50 X2QzMihkbWMsIGZ3X3NpemUpOwo+ICsJcHJpbnRfeDMyKGRtYywgZndfdmVyc2lvbik7Cj4gKwlw cmludF9kMzIoZG1jLCBtbWlvX2NvdW50KTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgZG1jLT5t bWlvX2NvdW50OyBpKyspIHsKPiArCQlwcmludGYoIiAgICAgICAgd3JpdGUoMHglMDh4LCAweCUw OHgpXG4iLCBkbWMtPm1taW9hZGRyW2ldLAo+ICsJCSAgICAgICBkbWMtPm1taW9kYXRhW2ldKTsK PiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZHVtcF9wYWNrYWdlKGNzcl90ICpjdHgpCj4g K3sKPiArCXN0cnVjdCBpbnRlbF9wYWNrYWdlX2hlYWRlciAqcGFja2FnZSA9IGN0eC0+cGFja2Fn ZV9oZWFkZXI7Cj4gKwl1bnNpZ25lZCBpbnQgaTsKPiArCj4gKwlwcmludGYoIlBhY2thZ2UgaGVh ZGVyICglemQgYnl0ZXMpXG4iLCBzaXplb2YoKnBhY2thZ2UpKTsKPiArCj4gKwlwcmludF9kMzIo cGFja2FnZSwgaGVhZGVyX2xlbik7Cj4gKwlwcmludF9kMzIocGFja2FnZSwgaGVhZGVyX3Zlcik7 Cj4gKwkvKiB1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzEwXTsgKi8KPiArCXByaW50X2QzMihwYWNr YWdlLCBudW1fZW50cmllcyk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IHBhY2thZ2UtPm51bV9l bnRyaWVzOyBpKyspIHsKPiArCQlzdHJ1Y3QgaW50ZWxfZndfaW5mbyAqaW5mbyA9ICZwYWNrYWdl LT5md19pbmZvW2ldOwo+ICsKPiArCQlwcmludGYoIkZpcm13YXJlICMlZFxuIiwgaSArIDEpOwo+ ICsJCXByaW50ZigiICAgIHN0ZXBwaW5nOiAlYy4lY1xuIiwgaW5mby0+c3RlcHBpbmcsCj4gKwkJ ICAgICAgIGluZm8tPnN1YnN0ZXBwaW5nKTsKPiArCQlwcmludF9kMzIoaW5mbywgb2Zmc2V0KTsK PiArCj4gKwkJZHVtcF9kbWMoY3R4LCBpbmZvKTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZv aWQgY3NyX2R1bXAoY3NyX3QgKmN0eCkKPiArewo+ICsJZHVtcF9jc3MoY3R4KTsKPiArCWR1bXBf cGFja2FnZShjdHgpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY3NyX3QgY3R4Owo+ICsKPiAraW50IG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQo+ICt7Cj4gKwlpZiAoYXJnYyAhPSAyKSB7Cj4gKwkJ ZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgZmlybXdhcmUuYmluXG4iLCBhcmd2WzBdKTsKPiAr CQlyZXR1cm4gMTsKPiArCX0KPiArCj4gKwljc3Jfb3BlbigmY3R4LCBhcmd2WzFdKTsKPiArCWNz cl9kdW1wKCZjdHgpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gLS0gCj4gMi4xLjAKPgo+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKSmFu aSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==