From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v4] tools/intel_guc_logger: Utility for capturing GuC firmware logs in a file Date: Wed, 12 Oct 2016 14:32:17 +0100 Message-ID: <0fcf3442-1697-e83a-55c1-f57c19fe9c22@linux.intel.com> References: <1473331461-21288-1-git-send-email-akash.goel@intel.com> <1476097172-24125-1-git-send-email-akash.goel@intel.com> <080dacb9-dff0-4963-af40-c2d47b497c8c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id E9FE96E85B for ; Wed, 12 Oct 2016 13:32:19 +0000 (UTC) In-Reply-To: <080dacb9-dff0-4963-af40-c2d47b497c8c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Goel, Akash" , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDEwLzEwLzIwMTYgMTU6MzEsIEdvZWwsIEFrYXNoIHdyb3RlOgo+Cj4KPiBPbiAxMC8xMC8y MDE2IDc6MjIgUE0sIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Pgo+PiBPbiAxMC8xMC8yMDE2IDEx OjU5LCBha2FzaC5nb2VsQGludGVsLmNvbSB3cm90ZToKPj4+IEZyb206IEFrYXNoIEdvZWwgPGFr YXNoLmdvZWxAaW50ZWwuY29tPgo+Pj4KPj4+IFRoaXMgcGF0Y2ggcHJvdmlkZXMgYSB0ZXN0IHV0 aWxpdHkgd2hpY2ggaGVscHMgY2FwdHVyZSBHdUMgZmlybXdhcmUKPj4+IGxvZ3MgYW5kCj4+PiB0 aGVuIGR1bXAgdGhlbSB0byBmaWxlLgo+Pj4gVGhlIGxvZ3MgYXJlIHB1bGxlZCBmcm9tIGEgZGVi dWdmcyBmaWxlCj4+PiAnL3N5cy9rZXJuZWwvZGVidWcvZHJpL2d1Y19sb2cnIGFuZAo+Pj4gYnkg ZGVmYXVsdCBzdG9yZWQgaW50byBhIGZpbGUgJ2d1Y19sb2dfZHVtcC5kYXQnLiBUaGUgbmFtZSwg Cj4+PiBpbmNsdWRpbmcgdGhlCj4+PiBsb2NhdGlvbiwgb2YgdGhlIG91dHB1dCBmaWxlIGNhbiBi ZSBjaGFuZ2VkIHRocm91Z2ggYSBjb21tYW5kIGxpbmUKPj4+IGFyZ3VtZW50Lgo+Pj4KPj4+IFRo ZSB1dGlsaXR5IGdvZXMgaW50byBhbiBpbmZpbml0ZSBsb29wIHdoZXJlIGl0IHdhaXRzIGZvciB0 aGUgYXJyaXZhbAo+Pj4gb2YgbmV3Cj4+PiBsb2dzIGFuZCBhcyBzb29uIGFzIG5ldyBzZXQgb2Yg bG9ncyBhcmUgcHJvZHVjZWQgaXQgY2FwdHVyZXMgdGhlbSBpbgo+Pj4gaXRzIGxvY2FsCj4+PiBi dWZmZXIgd2hpY2ggaXMgdGhlbiBmbHVzaGVkIG91dCB0byB0aGUgZmlsZSBvbiBkaXNrLgo+Pj4g QW55IHRpbWUgd2hlbiBsb2dnaW5nIG5lZWRzIHRvIGJlIGVuZGVkLCBVc2VyIGNhbiBzdG9wIHRo aXMgdXRpbGl0eQo+Pj4gKENUUkwrQykuCj4+Pgo+Pj4gQmVmb3JlIGVudGVyaW5nIGludG8gYSBs b29wLCBpdCBmaXJzdCBkaXNjYXJkcyB3aGF0ZXZlciBsb2dzIGFyZQo+Pj4gcHJlc2VudCBpbgo+ Pj4gdGhlIGRlYnVnZnMgZmlsZS4KPj4+IFRoaXMgd2F5IFVzZXIgY2FuIGZpcnN0IGxhdW5jaCB0 aGlzIHV0aWxpdHkgYW5kIHRoZW4gc3RhcnQgYQo+Pj4gd29ya2xvYWQvYWN0aXZpdHkKPj4+IGZv ciB3aGljaCBHdUMgZmlybXdhcmUgbG9ncyBhcmUgdG8gYmUgYWN0dWFsbHkgY2FwdHVyZWQgYW5k IGtlZXAKPj4+IHJ1bm5pbmcgdGhlCj4+PiB1dGlsaXR5IGZvciBhcyBsb25nIGFzIGl0cyBuZWVk ZWQsIGxpa2Ugb25jZSB0aGUgd29ya2xvYWQgaXMgb3ZlciB0aGlzCj4+PiB1dGlsaXR5Cj4+PiBj YW4gYmUgZm9yY2VmdWxseSBzdG9wcGVkLgo+Pj4KPj4+IElmIHRoZSBsb2dnaW5nIHdhc24ndCBl bmFibGVkIG9uIEd1QyBzaWRlIGJ5IHRoZSBEcml2ZXIgYXQgYm9vdCB0aW1lLAo+Pj4gdXRpbGl0 eQo+Pj4gd2lsbCBmaXJzdCBlbmFibGUgdGhlIGxvZ2dpbmcgYW5kIGxhdGVyIG9uIHdoZW4gaXQg aXMgc3RvcHBlZCAoQ1RSTCtDKQo+Pj4gaXQgd2lsbAo+Pj4gYWxzbyBwYXVzZSB0aGUgbG9nZ2lu ZyBvbiBHdUMgc2lkZS4KPj4+Cj4+PiB2MjoKPj4+IC0gVXNlIGNvbWJpbmF0aW9uIG9mIGFsYXJt IHN5c3RlbSBjYWxsICYgU0lHQUxSTSBzaWduYWwgdG8gcnVuIHRoZQo+Pj4gdXRpbGl0eQo+Pj4g ICAgZm9yIHJlcXVpcmVkIGR1cmF0aW9uLiAoVHZydGtvKQo+Pj4gLSBGaXggaW5jb25zaXN0ZW5j aWVzLCBkbyBtaW5vciBjbGVhbnVwIGFuZCByZWZhY3RvcmluZy4gKFR2cnRrbykKPj4+Cj4+PiB2 MzoKPj4+IC0gRml4IGRpc2NyZXBhbmN5IGZvciB0aGUgb3V0cHV0IGZpbGUgY29tbWFuZCBsaW5l IG9wdGlvbiBhbmQgdXBkYXRlIAo+Pj4gdGhlCj4+PiAgICBVc2FnZS9oZWxwIHN0cmluZy4KPj4+ Cj4+PiB2NDoKPj4+IC0gVXBkYXRlIHRoZSBleGl0IGNvbmRpdGlvbiBmb3IgZmx1c2hlciB0aHJl YWQsIG5vdyB3aWxsIGV4aXQgb25seSAKPj4+IGFmdGVyCj4+PiAgICB0aGUgY2FwdHVyZSBsb29w IGlzIG92ZXIgYW5kIG5vdCB3aGVuIHRoZSBmbGFnIHRvIHN0b3AgbG9nZ2luZyBpcyAKPj4+IHNl dC4KPj4+ICAgIFRoaXMgaGFuZGxlcyBhIGNvcm5lciBjYXNlLCBkdWUgdG8gd2hpY2ggdGhlIGR1 bXAgb2YgbGFzdCBjYXB0dXJlZAo+Pj4gYnVmZmVyCj4+PiAgICB3YXMgZ2V0dGluZyBtaXNzZWQu Cj4+PiAtIEFkZCBhIG5ld2xpbmUgY2hhcmFjdGVyIGF0IHRoZSBlbmQgb2YgYXNzZXJ0IG1lc3Nh Z2VzLgo+Pj4gLSBBdm9pZCB0aGUgYXNzZXJ0IGZvciB0aGUgY2FzZSwgd2hpY2ggb2NjdXJzIHZl cnkgcmFyZWx5LCB3aGVuIHRoZXJlCj4+PiBhcmUgbm8KPj4+ICAgIGJ5dGVzIHJlYWQgZnJvbSB0 aGUgcmVsYXkgZmlsZS4KPj4+Cj4+PiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGlu QGxpbnV4LmludGVsLmNvbT4KPj4+IFNpZ25lZC1vZmYtYnk6IEFrYXNoIEdvZWwgPGFrYXNoLmdv ZWxAaW50ZWwuY29tPgo+Pj4gUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJz dWxpbkBpbnRlbC5jb20+ICh2MykKPj4+IC0tLQo+Pj4gICB0b29scy9NYWtlZmlsZS5zb3VyY2Vz ICAgfCAgIDEgKwo+Pj4gICB0b29scy9pbnRlbF9ndWNfbG9nZ2VyLmMgfCA0MzgKPj4+ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+PiAgIDIgZmlsZXMg Y2hhbmdlZCwgNDM5IGluc2VydGlvbnMoKykKPj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xz L2ludGVsX2d1Y19sb2dnZXIuYwo+Pj4KPj4+IGRpZmYgLS1naXQgYS90b29scy9NYWtlZmlsZS5z b3VyY2VzIGIvdG9vbHMvTWFrZWZpbGUuc291cmNlcwo+Pj4gaW5kZXggMmJiNmM4ZS4uYmU1ODg3 MSAxMDA2NDQKPj4+IC0tLSBhL3Rvb2xzL01ha2VmaWxlLnNvdXJjZXMKPj4+ICsrKyBiL3Rvb2xz L01ha2VmaWxlLnNvdXJjZXMKPj4+IEBAIC0xOSw2ICsxOSw3IEBAIHRvb2xzX3Byb2dfbGlzdHMg PSAgICAgICAgXAo+Pj4gICAgICAgaW50ZWxfZ3B1X3RpbWUgICAgICAgIFwKPj4+ICAgICAgIGlu dGVsX2dwdV90b3AgICAgICAgIFwKPj4+ICAgICAgIGludGVsX2d0dCAgICAgICAgXAo+Pj4gKyAg ICBpbnRlbF9ndWNfbG9nZ2VyICAgICAgICBcCj4+PiAgICAgICBpbnRlbF9pbmZvZnJhbWVzICAg IFwKPj4+ICAgICAgIGludGVsX2wzX3Bhcml0eSAgICAgICAgXAo+Pj4gICAgICAgaW50ZWxfbGlk ICAgICAgICBcCj4+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxfZ3VjX2xvZ2dlci5jIGIvdG9v bHMvaW50ZWxfZ3VjX2xvZ2dlci5jCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gaW5kZXgg MDAwMDAwMC4uMTU5YTU0ZQo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvdG9vbHMvaW50ZWxf Z3VjX2xvZ2dlci5jCj4+PiBAQCAtMCwwICsxLDQzOCBAQAo+Pj4gKwo+Pj4gKyNkZWZpbmUgX0dO VV9TT1VSQ0UgIC8qIEZvciB1c2luZyBPX0RJUkVDVCAqLwo+Pj4gKyNpbmNsdWRlIDxpbnR0eXBl cy5oPgo+Pj4gKyNpbmNsdWRlIDxzdGRpby5oPgo+Pj4gKyNpbmNsdWRlIDxmY250bC5oPgo+Pj4g KyNpbmNsdWRlIDxzY2hlZC5oPgo+Pj4gKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KPj4+ICsjaW5j bHVkZSA8c3RyaW5nLmg+Cj4+PiArI2luY2x1ZGUgPGVycm5vLmg+Cj4+PiArI2luY2x1ZGUgPHNp Z25hbC5oPgo+Pj4gKyNpbmNsdWRlIDxzdGRsaWIuaD4KPj4+ICsjaW5jbHVkZSA8dW5pc3RkLmg+ Cj4+PiArI2luY2x1ZGUgPHN5cy9wb2xsLmg+Cj4+PiArI2luY2x1ZGUgPHN5cy93YWl0Lmg+Cj4+ PiArI2luY2x1ZGUgPHN5cy90eXBlcy5oPgo+Pj4gKyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgo+ Pj4gKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgo+Pj4gKyNpbmNsdWRlIDxhc3NlcnQuaD4KPj4+ICsj aW5jbHVkZSA8cHRocmVhZC5oPgo+Pj4gKwo+Pj4gKyNpbmNsdWRlICJpZ3QuaCIKPj4+ICsKPj4+ ICsjZGVmaW5lIE1CKHgpICgodWludDY0X3QpKHgpICogMTAyNCAqIDEwMjQpCj4+PiArI2lmbmRl ZiBQQUdFX1NJWkUKPj4+ICsgICNkZWZpbmUgUEFHRV9TSVpFIDQwOTYKPj4+ICsjZW5kaWYKPj4+ ICsvKiBDdXJyZW50bHkgdGhlIHNpemUgb2YgR3VDIGxvZyBidWZmZXIgaXMgMTkgcGFnZXMgJiBz byBpcyB0aGUgc2l6ZQo+Pj4gb2YgcmVsYXkKPj4+ICsgKiBzdWJidWZmZXIuIElmIHRoZSBzaXpl IGNoYW5nZXMgaW4gZnV0dXJlLCB0aGVuIHRoaXMgZGVmaW5lIGFsc28KPj4+IG5lZWRzIHRvIGJl Cj4+PiArICogdXBkYXRlZCBhY2NvcmRpbmdseS4KPj4+ICsgKi8KPj4+ICsjZGVmaW5lIFNVQkJV Rl9TSVpFICgxOSpQQUdFX1NJWkUpCj4+PiArLyogTmVlZCBsYXJnZSBidWZmZXJpbmcgZnJvbSBs b2dnZXIgc2lkZSB0byBoaWRlIHRoZSBESVNLIElPIGxhdGVuY3ksCj4+PiBEcml2ZXIKPj4+ICsg KiBjYW4gb25seSBzdG9yZSA4IHNuYXBzaG90cyBvZiBHdUMgbG9nIGJ1ZmZlciBpbiByZWxheS4K Pj4+ICsgKi8KPj4+ICsjZGVmaW5lIE5VTV9TVUJCVUZTIDEwMAo+Pj4gKwo+Pj4gKyNkZWZpbmUg UkVMQVlfRklMRV9OQU1FICAiZ3VjX2xvZyIKPj4+ICsjZGVmaW5lIERFRkFVTFRfT1VUUFVUX0ZJ TEVfTkFNRSAgImd1Y19sb2dfZHVtcC5kYXQiCj4+PiArI2RlZmluZSBDT05UUk9MX0ZJTEVfTkFN RSAiaTkxNV9ndWNfbG9nX2NvbnRyb2wiCj4+PiArCj4+PiArY2hhciAqcmVhZF9idWZmZXI7Cj4+ PiArY2hhciAqb3V0X2ZpbGVuYW1lOwo+Pj4gK2ludCBwb2xsX3RpbWVvdXQgPSAyOyAvKiBieSBk ZWZhdWx0IDJtcyB0aW1lb3V0ICovCj4+PiArcHRocmVhZF9tdXRleF90IG11dGV4Owo+Pj4gK3B0 aHJlYWRfdCBmbHVzaF90aHJlYWQ7Cj4+PiAraW50IHZlcmJvc2l0eV9sZXZlbCA9IDM7IC8qIGJ5 IGRlZmF1bHQgY2FwdHVyZSBsb2dzIGF0IG1heCAKPj4+IHZlcmJvc2l0eSAqLwo+Pj4gK3VpbnQz Ml90IHByb2R1Y2VkLCBjb25zdW1lZDsKPj4+ICt1aW50NjRfdCB0b3RhbF9ieXRlc193cml0dGVu Owo+Pj4gK2ludCBudW1fYnVmZmVycyA9IE5VTV9TVUJCVUZTOwo+Pj4gK2ludCByZWxheV9mZCwg b3V0ZmlsZV9mZCA9IC0xOwo+Pj4gK3VpbnQzMl90IHRlc3RfZHVyYXRpb24sIG1heF9maWxlc2l6 ZTsKPj4+ICtwdGhyZWFkX2NvbmRfdCB1bmRlcmZsb3dfY29uZCwgb3ZlcmZsb3dfY29uZDsKPj4+ ICtib29sIHN0b3BfbG9nZ2luZywgZGlzY2FyZF9vbGRsb2dzLCBjYXB0dXJpbmdfc3RvcHBlZDsK Pj4+ICsKPj4+ICtzdGF0aWMgdm9pZCBndWNfbG9nX2NvbnRyb2woYm9vbCBlbmFibGVfbG9nZ2lu ZykKPj4+ICt7Cj4+PiArICAgIGludCBjb250cm9sX2ZkOwo+Pj4gKyAgICBjaGFyIGRhdGFbMTld Owo+Pj4gKyAgICB1aW50NjRfdCB2YWw7Cj4+PiArICAgIGludCByZXQ7Cj4+PiArCj4+PiArICAg IGNvbnRyb2xfZmQgPSBpZ3RfZGVidWdmc19vcGVuKENPTlRST0xfRklMRV9OQU1FLCBPX1dST05M WSk7Cj4+PiArICAgIGlndF9hc3NlcnRfZihjb250cm9sX2ZkID49IDAsICJjb3VsZG4ndCBvcGVu IHRoZSBndWMgbG9nIGNvbnRyb2wKPj4+IGZpbGVcbiIpOwo+Pj4gKwo+Pj4gKyAgICB2YWwgPSBl bmFibGVfbG9nZ2luZyA/ICgodmVyYm9zaXR5X2xldmVsIDw8IDQpIHwgMHgxKSA6IDA7Cj4+PiAr Cj4+PiArICAgIHJldCA9IHNucHJpbnRmKGRhdGEsIHNpemVvZihkYXRhKSwgIjB4JSIgUFJJeDY0 LCB2YWwpOwo+Pj4gKyAgICBpZ3RfYXNzZXJ0KHJldCA+IDIgJiYgcmV0IDwgc2l6ZW9mKGRhdGEp KTsKPj4+ICsKPj4+ICsgICAgcmV0ID0gd3JpdGUoY29udHJvbF9mZCwgZGF0YSwgcmV0KTsKPj4+ ICsgICAgaWd0X2Fzc2VydF9mKHJldCA+IDAsICJjb3VsZG4ndCB3cml0ZSB0byB0aGUgbG9nIGNv bnRyb2wgZmlsZVxuIik7Cj4+PiArCj4+PiArICAgIGNsb3NlKGNvbnRyb2xfZmQpOwo+Pj4gK30K Pj4+ICsKPj4+ICtzdGF0aWMgdm9pZCBpbnRfc2lnX2hhbmRsZXIoaW50IHNpZykKPj4+ICt7Cj4+ PiArICAgIGlndF9pbmZvKCJyZWNlaXZlZCBzaWduYWwgJWRcbiIsIHNpZyk7Cj4+PiArCj4+PiAr ICAgIHN0b3BfbG9nZ2luZyA9IHRydWU7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIHB1 bGxfbGVmdG92ZXJfZGF0YSh2b2lkKQo+Pj4gK3sKPj4+ICsgICAgdW5zaWduZWQgaW50IGJ5dGVz X3JlYWQgPSAwOwo+Pj4gKyAgICBpbnQgcmV0Owo+Pj4gKwo+Pj4gKyAgICBkbyB7Cj4+PiArICAg ICAgICAvKiBSZWFkIHRoZSBsb2dzIGZyb20gcmVsYXkgYnVmZmVyICovCj4+PiArICAgICAgICBy ZXQgPSByZWFkKHJlbGF5X2ZkLCByZWFkX2J1ZmZlciwgU1VCQlVGX1NJWkUpOwo+Pj4gKyAgICAg ICAgaWYgKCFyZXQpCj4+PiArICAgICAgICAgICAgYnJlYWs7Cj4+PiArCj4+PiArICAgICAgICBp Z3RfYXNzZXJ0X2YocmV0ID4gMCwgImZhaWxlZCB0byByZWFkIGZyb20gdGhlIGd1YyBsb2cgCj4+ PiBmaWxlXG4iKTsKPj4+ICsgICAgICAgIGlndF9hc3NlcnRfZihyZXQgPT0gU1VCQlVGX1NJWkUs ICJpbnZhbGlkIHJlYWQgZnJvbSByZWxheQo+Pj4gZmlsZVxuIik7Cj4+PiArCj4+PiArICAgICAg ICBieXRlc19yZWFkICs9IHJldDsKPj4+ICsKPj4+ICsgICAgICAgIGlmIChvdXRmaWxlX2ZkID49 IDApIHsKPj4+ICsgICAgICAgICAgICByZXQgPSB3cml0ZShvdXRmaWxlX2ZkLCByZWFkX2J1ZmZl ciwgU1VCQlVGX1NJWkUpOwo+Pj4gKyAgICAgICAgICAgIGlndF9hc3NlcnRfZihyZXQgPT0gU1VC QlVGX1NJWkUsICJjb3VsZG4ndCBkdW1wIHRoZSBsb2dzCj4+PiBpbiBhIGZpbGVcbiIpOwo+Pj4g KyAgICAgICAgICAgIHRvdGFsX2J5dGVzX3dyaXR0ZW4gKz0gcmV0Owo+Pj4gKyAgICAgICAgfQo+ Pj4gKyAgICB9IHdoaWxlKDEpOwo+Pj4gKwo+Pj4gKyAgICBpZ3RfZGVidWcoIiV1IGJ5dGVzIGZs dXNoZWRcbiIsIGJ5dGVzX3JlYWQpOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgaW50IG51bV9m aWxsZWRfYnVmcyh2b2lkKQo+Pj4gK3sKPj4+ICsgICAgcmV0dXJuIChwcm9kdWNlZCAtIGNvbnN1 bWVkKTsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHZvaWQgcHVsbF9kYXRhKHZvaWQpCj4+PiAr ewo+Pj4gKyAgICBjaGFyICpwdHI7Cj4+PiArICAgIGludCByZXQ7Cj4+PiArCj4+PiArICAgIHB0 aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgpOwo+Pj4gKyAgICB3aGlsZSAobnVtX2ZpbGxlZF9idWZz KCkgPj0gbnVtX2J1ZmZlcnMpIHsKPj4+ICsgICAgICAgIGlndF9kZWJ1Zygib3ZlcmZsb3csIHdp bGwgd2FpdCwgcHJvZHVjZWQgJXUsIGNvbnN1bWVkICV1XG4iLAo+Pj4gcHJvZHVjZWQsIGNvbnN1 bWVkKTsKPj4+ICsgICAgICAgIC8qIFN0YWxsIHRoZSBtYWluIHRocmVhZCBpbiBjYXNlIG9mIG92 ZXJmbG93LCBhcyB0aGVyZSBhcmUgbm8KPj4+ICsgICAgICAgICAqIGJ1ZmZlcnMgYXZhaWxhYmxl IHRvIHN0b3JlIHRoZSBuZXcgbG9ncywgb3RoZXJ3aXNlIHRoZXJlCj4+PiArICAgICAgICAgKiBj b3VsZCBiZSBjb3JydXB0aW9uIGlmIGJvdGggdGhyZWFkcyB3b3JrIG9uIHRoZSBzYW1lIAo+Pj4g YnVmZmVyLgo+Pj4gKyAgICAgICAgICovCj4+PiArICAgICAgICBwdGhyZWFkX2NvbmRfd2FpdCgm b3ZlcmZsb3dfY29uZCwgJm11dGV4KTsKPj4+ICsgICAgfTsKPj4+ICsgICAgcHRocmVhZF9tdXRl eF91bmxvY2soJm11dGV4KTsKPj4+ICsKPj4+ICsgICAgcHRyID0gcmVhZF9idWZmZXIgKyAocHJv ZHVjZWQgJSBudW1fYnVmZmVycykgKiBTVUJCVUZfU0laRTsKPj4+ICsKPj4+ICsgICAgLyogUmVh ZCB0aGUgbG9ncyBmcm9tIHJlbGF5IGJ1ZmZlciAqLwo+Pj4gKyAgICByZXQgPSByZWFkKHJlbGF5 X2ZkLCBwdHIsIFNVQkJVRl9TSVpFKTsKPj4+ICsgICAgaWd0X2Fzc2VydF9mKHJldCA+PSAwLCAi ZmFpbGVkIHRvIHJlYWQgZnJvbSB0aGUgZ3VjIGxvZyBmaWxlXG4iKTsKPj4+ICsgICAgaWd0X2Fz c2VydF9mKCFyZXQgfHwgcmV0ID09IFNVQkJVRl9TSVpFLCAiaW52YWxpZCByZWFkIGZyb20gcmVs YXkKPj4+IGZpbGVcbiIpOwo+Pj4gKwo+Pj4gKyAgICBpZiAocmV0KSB7Cj4+PiArICAgICAgICBw dGhyZWFkX211dGV4X2xvY2soJm11dGV4KTsKPj4+ICsgICAgICAgIHByb2R1Y2VkKys7Cj4+PiAr ICAgICAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZ1bmRlcmZsb3dfY29uZCk7Cj4+PiArICAgICAg ICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXgpOwo+Pj4gKyAgICB9IGVsc2Ugewo+Pj4gKyAg ICAgICAgLyogT2NjYXNpb25hbGx5ICh2ZXJ5IHJhcmUpIHJlYWQgZnJvbSB0aGUgcmVsYXkgZmls ZSAKPj4+IHJldHVybnMgbm8KPj4+ICsgICAgICAgICAqIGRhdGEsIGFsYmVpdCB0aGUgcG9sbGlu ZyBkb25lIHByaW9yIHRvIHJlYWQgY2FsbCBpbmRpY2F0ZWQKPj4+ICsgICAgICAgICAqIGF2YWls YWJpbGl0eSBvZiBkYXRhLgo+Pj4gKyAgICAgICAgICovCj4+PiArICAgICAgICBpZ3RfZGVidWco Im5vIGRhdGEgcmVhZCBmcm9tIHRoZSByZWxheSBmaWxlXG4iKTsKPj4KPj4gVGhpcyB3b3JyaWVz IG1lLiBSZWxheWZzIGtlcm5lbCBzaWRlIGlzIHF1aXRlIHNpbXBsZSB3aGljaCB3b3VsZCBzdWdn ZXN0Cj4+IHRoZXJlIGlzIG1heWJlIGEgYnVnIGluIHRoZSBsb2dnZXI/IEFuZCBpdCBpcyB2ZXJ5 IGltcG9ydGFudCB0aGF0IHdlCj4+IHRydXN0IGxvZ2dlciBjb3JyZWN0bHkgY2FwdHVyaW5nIGRh dGEuIEJlY2F1c2UgcGVvcGxlIHdpbGwgc3BlbmQgYSBsb3QKPj4gb2YgdGltZSBkZWJ1Z2dpbmcg aXNzdWVzIGZyb20gdGhlIGxvZ3MgYW5kIGl0IHdvdWxkIGJlIGJhZCB0byBoYXZlIHRvCj4+IGNo YXNlIGlycmVndWxhcml0aWVzIGNhdXNlZCBieSBhIHByb2JsZW0gaW4gdGhlIGxvZ2dlci4KPj4K PiBBY3R1YWxseSBJIHNlZSB0aGlzIGlzc3VlIHJhcmVseSBhbmQgb25seSBhZnRlciBsb2dnaW5n IHNvbWUgR0JzIG9mIAo+IGRhdGEuIEFuZCBtb3N0IGxpa2VseSBpdCB3b24ndCBoYXZlIGFueSBi ZWFyaW5nIG9uIHRoZSBjb3JyZWN0bmVzcyBvZiAKPiBjYXB0dXJlZCBkYXRhLCB0aGUgbWlzc2Vk IHNuYXBzaG90IHNoYWxsIGJlIHB1bGxlZCBpbiB0aGUgbmV4dCAKPiBpdGVyYXRpb24gb2YgY2Fw dHVyZSBsb29wLiBBbHNvIG5vLW92ZXJ3cml0ZSBtb2RlIG9mIHJlbGF5IGlzIGJlaW5nIHVzZWQu Cj4KPiBBcyBwZXIgbXkgaHVuY2gsIGl0IGNhbid0IGJlIHJ1bGVkIG91dCB0aGF0IHRoaXMgaXMg bm90IGEgcmVsYXlmcyBpc3N1ZS4KPgo+PiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBhbmQgaWRlbnRp Znkgd2h5IGV4YWN0bHkgaXMgdGhpcyBoYXBwZW5pbmc/Cj4gV2lsbCB0cnkgdG8gaW52ZXN0aWdh dGUgYm90aCBmcm9tIHJlbGF5ZnMgc2lkZSBhcyB3ZWxsIGFzIGxvZ2dlciBzaWRlLCAKPiBidXQg aXQgd291bGQgdGFrZSBzb21lIHRpbWUuCj4gVGhpcyBtYXkgbm90IGJlIGNvbnNpZGVyZWQgYSBi bG9ja2VyLgo+CgpBcyB5b3UgcmVwb3J0ZWQgb2ZmIGxpc3QsIGFmdGVyIHNvbWUgZGVlcCBpbnZl c3RpZ2F0aW9uIHRoZXJlIHNlZW1zIHRvIApiZSBubyBwb3RlbnRpYWwgZm9yIGxvc3QgcGFja2V0 cy4gIkVtcHR5IHdha2V1cCIgaXMganVzdCBhIGNvbnNlcXVlbmNlIApvZiB1bnN5bmNocm9uaXpl ZCBuYXR1cmUgb2YgcmVsYXlmcy4KCkluIHRoZSBsaWdodCBvZiB0aGF0IEkgYW0gaGFwcHkgd2l0 aCB0aGUgbG9nZ2VyLCBzbzoKClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVy c3VsaW5AaW50ZWwuY29tPgoKUmVnYXJkcywKClR2cnRrbwoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==