From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: Re: [PATCH i-g-t] scripts/trace.pl: Auto-detect tracepoint field order Date: Mon, 18 Dec 2017 15:59:11 +0000 Message-ID: <94a46c3d-939c-0fdf-d0a2-bc68010b39cc@intel.com> References: <20171218120215.28139-1-tvrtko.ursulin@linux.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 6A96C89A0E for ; Mon, 18 Dec 2017 15:59:14 +0000 (UTC) In-Reply-To: <20171218120215.28139-1-tvrtko.ursulin@linux.intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMTgvMTIvMTcgMTI6MDIsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+IEZyb206IFR2cnRrbyBV cnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4KPiBJbnN0ZWFkIG9mIGhhcmQtY29k aW5nIHRoZSBvcmRlciBvZiBrZXktdmFsdWUgcGFpcnMgaW50byByZWd1bGFyCj4gZXhwcmVzc2lv bnMsIGF1dG8tZGV0ZWN0IHRoZW0gYXMgd2UgZ28uCj4KPiBBdCB0aGUgc2FtZSB0aW1lIHJlLWZh Y3RvciB0aGUgY29kZSBzbyBpdCBpcyBzbWFsbGVyIGFuZCBldmVuCj4gc2xpZ2h0bHkgZmFzdGVy ICgxMC0xNSUgYnkgYSBxdWljayBtZWFzdXJlbWVudCkuCj4KPiBTaWduZWQtb2ZmLWJ5OiBUdnJ0 a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IENjOiBMaW9uZWwgTGFuZHdl cmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+Cj4gQ2M6IEpvaG4gSGFycmlzb24g PEpvaG4uQy5IYXJyaXNvbkBpbnRlbC5jb20+ClRlc3RlZC1ieTogTGlvbmVsIExhbmR3ZXJsaW4g PGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgoKPiAtLS0KPiAgIHNjcmlwdHMvdHJhY2Uu cGwgfCAyMjMgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDcxIGluc2VydGlvbnMoKyksIDE1MiBkZWxldGlv bnMoLSkKPgo+IGRpZmYgLS1naXQgYS9zY3JpcHRzL3RyYWNlLnBsIGIvc2NyaXB0cy90cmFjZS5w bAo+IGluZGV4IGFlZDliMjBkODQwNy4uOWIzZmI2NDg2ZmVjIDEwMDc1NQo+IC0tLSBhL3Njcmlw dHMvdHJhY2UucGwKPiArKysgYi9zY3JpcHRzL3RyYWNlLnBsCj4gQEAgLTMwMiw3NCArMzAyLDYg QEAgZGllIGlmIHNjYWxhcihAYXJncyk7Cj4gICAKPiAgIEBBUkdWID0gQGFyZ3M7Cj4gICAKPiAt c3ViIHBhcnNlX3JlcQo+IC17Cj4gLQlteSAoJGxpbmUsICR0cCkgPSBAXzsKPiAtCXN0YXRlICVj YWNoZTsKPiAtCj4gLQkkY2FjaGV7JHRwfSA9IHFyLyhcZCspXC4oXGQrKTouKiR0cC4qcmluZz0o XGQrKSwgY3R4PShcZCspLCBzZXFubz0oXGQrKSwgZ2xvYmFsKD86X3NlcW5vKT89KFxkKykvIHVu bGVzcyBleGlzdHMgJGNhY2hleyR0cH07Cj4gLQo+IC0JaWYgKCRsaW5lID1+ICRjYWNoZXskdHB9 KSB7Cj4gLQkJcmV0dXJuICgkMSwgJDIsICQzLCAkNCwgJDUsICQ2KTsKPiAtCX0gZWxzZSB7Cj4g LQkJcmV0dXJuIHVuZGVmOwo+IC0JfQo+IC19Cj4gLQo+IC1zdWIgcGFyc2VfcmVxX2h3Cj4gLXsK PiAtCW15ICgkbGluZSwgJHRwKSA9IEBfOwo+IC0Jc3RhdGUgJWNhY2hlOwo+IC0KPiAtCSRjYWNo ZXskdHB9ID0gcXIvKFxkKylcLihcZCspOi4qJHRwLipyaW5nPShcZCspLCBjdHg9KFxkKyksIHNl cW5vPShcZCspLCBnbG9iYWwoPzpfc2Vxbm8pPz0oXGQrKSwgcG9ydD0oXGQrKS8gdW5sZXNzIGV4 aXN0cyAkY2FjaGV7JHRwfTsKPiAtCj4gLQlpZiAoJGxpbmUgPX4gJGNhY2hleyR0cH0pIHsKPiAt CQlyZXR1cm4gKCQxLCAkMiwgJDMsICQ0LCAkNSwgJDYsICQ3KTsKPiAtCX0gZWxzZSB7Cj4gLQkJ cmV0dXJuIHVuZGVmOwo+IC0JfQo+IC19Cj4gLQo+IC1zdWIgcGFyc2VfcmVxX3dhaXRfYmVnaW4K PiAtewo+IC0JbXkgKCRsaW5lLCAkdHApID0gQF87Cj4gLQo+IC0JaWYgKCRsaW5lID1+IC8oXGQr KVwuKFxkKyk6LippOTE1X2dlbV9yZXF1ZXN0X3dhaXRfYmVnaW4uKnJpbmc9KFxkKyksIGN0eD0o XGQrKSwgc2Vxbm89KFxkKykvKSB7Cj4gLQkJcmV0dXJuICgkMSwgJDIsICQzLCAkNCwgJDUpOwo+ IC0JfSBlbHNlIHsKPiAtCQlyZXR1cm4gdW5kZWY7Cj4gLQl9Cj4gLX0KPiAtCj4gLXN1YiBwYXJz ZV9ub3RpZnkKPiAtewo+IC0JbXkgKCRsaW5lKSA9IEBfOwo+IC0KPiAtCWlmICgkbGluZSA9fiAv KFxkKylcLihcZCspOi4qaW50ZWxfZW5naW5lX25vdGlmeS4qcmluZz0oXGQrKSwgc2Vxbm89KFxk KykvKSB7Cj4gLQkJcmV0dXJuICgkMSwgJDIsICQzLCAkNCk7Cj4gLQl9IGVsc2Ugewo+IC0JCXJl dHVybiB1bmRlZjsKPiAtCX0KPiAtfQo+IC0KPiAtc3ViIHBhcnNlX2ZyZXEKPiAtewo+IC0JbXkg KCRsaW5lKSA9IEBfOwo+IC0KPiAtCWlmICgkbGluZSA9fiAvKFxkKylcLihcZCspOi4qaW50ZWxf Z3B1X2ZyZXFfY2hhbmdlLipuZXdfZnJlcT0oXGQrKS8pIHsKPiAtCQlyZXR1cm4gKCQxLCAkMiwg JDMpOwo+IC0JfSBlbHNlIHsKPiAtCQlyZXR1cm4gdW5kZWY7Cj4gLQl9Cj4gLX0KPiAtCj4gLXN1 YiB1cwo+IC17Cj4gLQlteSAoJHMsICR1cykgPSBAXzsKPiAtCj4gLQlyZXR1cm4gJHMgKiAxMDAw MDAwICsgJHVzOwo+IC19Cj4gLQo+ICAgc3ViIGRiX2tleQo+ICAgewo+ICAgCW15ICgkcmluZywg JGN0eCwgJHNlcW5vKSA9IEBfOwo+IEBAIC00MjUsODYgKzM1Nyw4NyBAQCBteSAkcHJldl9mcmVx X3RzID0gMDsKPiAgIG15ICRvbGRrZXJuZWx3YSA9IDA7Cj4gICBteSAoJG5vX3F1ZXVlLCAkbm9f aW4pOwo+ICAgd2hpbGUgKDw+KSB7Cj4gLQlteSAoJHMsICR1cywgJHJpbmcsICRjdHgsICRzZXFu bywgJGdsb2JhbF9zZXFubywgJHBvcnQpOwo+IC0JbXkgJGZyZXE7Cj4gKwlteSBAZmllbGRzOwo+ ICsJbXkgQHRtcDsKPiArCW15ICR0cF9uYW1lOwo+ICsJbXkgJHRpbWU7Cj4gKwlteSAldHA7Cj4g ICAJbXkgJGtleTsKPiAgIAo+ICAgCWNob21wOwo+ICsJQGZpZWxkcyA9IHNwbGl0ICcgJzsKPiAg IAo+IC0JKCRzLCAkdXMsICRyaW5nLCAkY3R4LCAkc2Vxbm8pID0gcGFyc2VfcmVxX3dhaXRfYmVn aW4oJF8pOwo+IC0JaWYgKGRlZmluZWQgJHMpIHsKPiAtCQlteSAlcnc7Cj4gKwkkdHBfbmFtZSA9 ICRmaWVsZHNbNF07Cj4gKwlAdG1wID0gc3BsaXQgJzonLCAkdHBfbmFtZSwgMjsKPiArCW5leHQg dW5sZXNzICR0bXBbMF0gZXEgJ2k5MTUnOwo+ICsJJHRwX25hbWUgPSAkdG1wWzFdOwo+ICsJY2hv cCAkdHBfbmFtZTsKPiAgIAo+IC0JCW5leHQgaWYgZXhpc3RzICRpZ25vcmVfcmluZ3skcmluZ307 Cj4gKwljaG9wICRmaWVsZHNbM107Cj4gKwkkdGltZSA9ICRmaWVsZHNbM10gKiAxMDAwMDAwLjA7 Cj4gKwlzcGxpY2UgQGZpZWxkcywgMCwgNTsKPiAgIAo+IC0JCSRjdHggPSBzYW5pdGl6ZV9jdHgo JGN0eCwgJHJpbmcpOwo+IC0JCSRrZXkgPSBkYl9rZXkoJHJpbmcsICRjdHgsICRzZXFubyk7Cj4g Kwlmb3JlYWNoIG15ICRmIChAZmllbGRzKSB7Cj4gKwkJbXkgQGt2ID0gc3BsaXQgJz18LCcsICRm Owo+ICAgCj4gLQkJbmV4dCBpZiBleGlzdHMgJHJlcXdhaXR7JGtleX07Cj4gKwkJJGt2WzBdID0g J2dsb2JhbCcgaWYgJGt2WzBdIGVxICdnbG9iYWxfc2Vxbm8nOwo+ICAgCj4gLQkJJHJ3eydrZXkn fSA9ICRrZXk7Cj4gLQkJJHJ3eydyaW5nJ30gPSAkcmluZzsKPiAtCQkkcnd7J3NlcW5vJ30gPSAk c2Vxbm87Cj4gLQkJJHJ3eydjdHgnfSA9ICRjdHg7Cj4gLQkJJHJ3eydzdGFydCd9ID0gdXMoJHMs ICR1cyk7Cj4gLQkJJHJlcXdhaXR7JGtleX0gPSBcJXJ3Owo+IC0JCW5leHQ7Cj4gKwkJJHRweyRr dlswXX0gPSAka3ZbMV07Cj4gICAJfQo+ICAgCj4gLQkoJHMsICR1cywgJHJpbmcsICRjdHgsICRz ZXFubywgJGdsb2JhbF9zZXFubykgPSBwYXJzZV9yZXEoJF8sICdpOTE1Omk5MTVfZ2VtX3JlcXVl c3Rfd2FpdF9lbmQnKTsKPiAtCWlmIChkZWZpbmVkICRzKSB7Cj4gLQkJbmV4dCBpZiBleGlzdHMg JGlnbm9yZV9yaW5neyRyaW5nfTsKPiArCXJldHVybiB1bmRlZiBpZiBleGlzdHMgJHRweydyaW5n J30gYW5kIGV4aXN0cyAkaWdub3JlX3Jpbmd7JHRweydyaW5nJ319Owo+ICsKPiArCWlmICgkdHBf bmFtZSBlcSAnaTkxNV9nZW1fcmVxdWVzdF93YWl0X2JlZ2luJykgewo+ICsJCW15ICVydzsKPiAg IAo+IC0JCSRjdHggPSBzYW5pdGl6ZV9jdHgoJGN0eCwgJHJpbmcpOwo+IC0JCSRrZXkgPSBkYl9r ZXkoJHJpbmcsICRjdHgsICRzZXFubyk7Cj4gKwkJJHRweydjdHgnfSA9IHNhbml0aXplX2N0eCgk dHB7J2N0eCd9LCAkdHB7J3JpbmcnfSk7Cj4gKwkJJGtleSA9IGRiX2tleSgkdHB7J3JpbmcnfSwg JHRweydjdHgnfSwgJHRweydzZXFubyd9KTsKPiAgIAo+IC0JCW5leHQgdW5sZXNzIGV4aXN0cyAk cmVxd2FpdHska2V5fTsKPiArCQluZXh0IGlmIGV4aXN0cyAkcmVxd2FpdHska2V5fTsKPiAgIAo+ IC0JCSRyZXF3YWl0eyRrZXl9LT57J2VuZCd9ID0gdXMoJHMsICR1cyk7Cj4gKwkJJHJ3eydrZXkn fSA9ICRrZXk7Cj4gKwkJJHJ3eydyaW5nJ30gPSAkdHB7J3JpbmcnfTsKPiArCQkkcnd7J3NlcW5v J30gPSAkdHB7J3NlcW5vJ307Cj4gKwkJJHJ3eydjdHgnfSA9ICR0cHsnY3R4J307Cj4gKwkJJHJ3 eydzdGFydCd9ID0gJHRpbWU7Cj4gKwkJJHJlcXdhaXR7JGtleX0gPSBcJXJ3Owo+ICAgCQluZXh0 Owo+IC0JfQo+ICsJfSBlbHNpZiAoJHRwX25hbWUgZXEgJ2k5MTVfZ2VtX3JlcXVlc3Rfd2FpdF9l bmQnKSB7Cj4gKwkJJHRweydjdHgnfSA9IHNhbml0aXplX2N0eCgkdHB7J2N0eCd9LCAkdHB7J3Jp bmcnfSk7Cj4gKwkJJGtleSA9IGRiX2tleSgkdHB7J3JpbmcnfSwgJHRweydjdHgnfSwgJHRweydz ZXFubyd9KTsKPiAgIAo+IC0JKCRzLCAkdXMsICRyaW5nLCAkY3R4LCAkc2Vxbm8sICRnbG9iYWxf c2Vxbm8pID0gcGFyc2VfcmVxKCRfLCAnaTkxNTppOTE1X2dlbV9yZXF1ZXN0X2FkZCcpOwo+IC0J aWYgKGRlZmluZWQgJHMpIHsKPiAtCQlteSAkb3JpZ19jdHggPSAkY3R4Owo+ICsJCW5leHQgdW5s ZXNzIGV4aXN0cyAkcmVxd2FpdHska2V5fTsKPiAgIAo+IC0JCW5leHQgaWYgZXhpc3RzICRpZ25v cmVfcmluZ3skcmluZ307Cj4gKwkJJHJlcXdhaXR7JGtleX0tPnsnZW5kJ30gPSAkdGltZTsKPiAr CQluZXh0Owo+ICsJfSBlbHNpZiAoJHRwX25hbWUgZXEgJ2k5MTVfZ2VtX3JlcXVlc3RfYWRkJykg ewo+ICsJCW15ICRvcmlnX2N0eCA9ICR0cHsnY3R4J307Cj4gICAKPiAtCQkkY3R4ID0gc2FuaXRp emVfY3R4KCRjdHgsICRyaW5nKTsKPiAtCQkka2V5ID0gZGJfa2V5KCRyaW5nLCAkY3R4LCAkc2Vx bm8pOwo+ICsJCSR0cHsnY3R4J30gPSBzYW5pdGl6ZV9jdHgoJHRweydjdHgnfSwgJHRweydyaW5n J30pOwo+ICsJCSRrZXkgPSBkYl9rZXkoJHRweydyaW5nJ30sICR0cHsnY3R4J30sICR0cHsnc2Vx bm8nfSk7Cj4gICAKPiAgIAkJaWYgKGV4aXN0cyAkcXVldWV7JGtleX0pIHsKPiAgIAkJCSRjdHhk Ynskb3JpZ19jdHh9Kys7Cj4gLQkJCSRjdHggPSBzYW5pdGl6ZV9jdHgoJG9yaWdfY3R4LCAkcmlu Zyk7Cj4gLQkJCSRrZXkgPSBkYl9rZXkoJHJpbmcsICRjdHgsICRzZXFubyk7Cj4gKwkJCSR0cHsn Y3R4J30gPSBzYW5pdGl6ZV9jdHgoJHRweydjdHgnfSwgJHRweydyaW5nJ30pOwo+ICsJCQkka2V5 ID0gZGJfa2V5KCR0cHsncmluZyd9LCAkdHB7J2N0eCd9LCAkdHB7J3NlcW5vJ30pOwo+ICAgCQl9 Cj4gICAKPiAtCQkkcXVldWV7JGtleX0gPSB1cygkcywgJHVzKTsKPiArCQkkcXVldWV7JGtleX0g PSAkdGltZTsKPiAgIAkJbmV4dDsKPiAtCX0KPiAtCj4gLQkoJHMsICR1cywgJHJpbmcsICRjdHgs ICRzZXFubywgJGdsb2JhbF9zZXFubykgPSBwYXJzZV9yZXEoJF8sICdpOTE1Omk5MTVfZ2VtX3Jl cXVlc3Rfc3VibWl0Jyk7Cj4gLQlpZiAoZGVmaW5lZCAkcykgewo+IC0JCW5leHQgaWYgZXhpc3Rz ICRpZ25vcmVfcmluZ3skcmluZ307Cj4gLQo+IC0JCSRjdHggPSBzYW5pdGl6ZV9jdHgoJGN0eCwg JHJpbmcpOwo+IC0JCSRrZXkgPSBkYl9rZXkoJHJpbmcsICRjdHgsICRzZXFubyk7Cj4gKwl9IGVs c2lmICgkdHBfbmFtZSBlcSAnaTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQnKSB7Cj4gKwkJJHRweydj dHgnfSA9IHNhbml0aXplX2N0eCgkdHB7J2N0eCd9LCAkdHB7J3JpbmcnfSk7Cj4gKwkJJGtleSA9 IGRiX2tleSgkdHB7J3JpbmcnfSwgJHRweydjdHgnfSwgJHRweydzZXFubyd9KTsKPiAgIAo+ICAg CQlkaWUgaWYgZXhpc3RzICRzdWJtaXR7JGtleX07Cj4gICAJCWRpZSB1bmxlc3MgZXhpc3RzICRx dWV1ZXska2V5fTsKPiAgIAo+IC0JCSRzdWJtaXR7JGtleX0gPSB1cygkcywgJHVzKTsKPiArCQkk c3VibWl0eyRrZXl9ID0gJHRpbWU7Cj4gICAJCW5leHQ7Cj4gLQl9Cj4gLQo+IC0JKCRzLCAkdXMs ICRyaW5nLCAkY3R4LCAkc2Vxbm8sICRnbG9iYWxfc2Vxbm8sICRwb3J0KSA9IHBhcnNlX3JlcV9o dygkXywgJ2k5MTU6aTkxNV9nZW1fcmVxdWVzdF9pbicpOwo+IC0JaWYgKGRlZmluZWQgJHMpIHsK PiArCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1X2dlbV9yZXF1ZXN0X2luJykgewo+ICAgCQlt eSAlcmVxOwo+ICAgCj4gLQkJbmV4dCBpZiBleGlzdHMgJGlnbm9yZV9yaW5neyRyaW5nfTsKPiAt Cj4gLQkJJGN0eCA9IHNhbml0aXplX2N0eCgkY3R4LCAkcmluZyk7Cj4gLQkJJGtleSA9IGRiX2tl eSgkcmluZywgJGN0eCwgJHNlcW5vKTsKPiArCQkkdHB7J2N0eCd9ID0gc2FuaXRpemVfY3R4KCR0 cHsnY3R4J30sICR0cHsncmluZyd9KTsKPiArCQkka2V5ID0gZGJfa2V5KCR0cHsncmluZyd9LCAk dHB7J2N0eCd9LCAkdHB7J3NlcW5vJ30pOwo+ICAgCj4gICAJCWRpZSBpZiBleGlzdHMgJGRieyRr ZXl9Owo+ICAgCQlpZiAobm90IGV4aXN0cyAkcXVldWV7JGtleX0gYW5kICRvbGRrZXJuZWx3YSkg ewo+IEBAIC01MTQsMzAgKzQ0NywyNSBAQCB3aGlsZSAoPD4pIHsKPiAgIAkJZGllIHVubGVzcyBl eGlzdHMgJHF1ZXVleyRrZXl9Owo+ICAgCQlkaWUgdW5sZXNzIGV4aXN0cyAkc3VibWl0eyRrZXl9 Owo+ICAgCj4gLQkJJHJlcXsnc3RhcnQnfSA9IHVzKCRzLCAkdXMpOwo+IC0JCSRyZXF7J3Jpbmcn fSA9ICRyaW5nOwo+IC0JCSRyZXF7J3NlcW5vJ30gPSAkc2Vxbm87Cj4gLQkJJHJlcXsnY3R4J30g PSAkY3R4Owo+IC0JCSRyZXF7J25hbWUnfSA9ICRjdHggLiAnLycgLiAkc2Vxbm87Cj4gLQkJJHJl cXsnZ2xvYmFsJ30gPSAkZ2xvYmFsX3NlcW5vOwo+IC0JCSRyZXF7J3BvcnQnfSA9ICRwb3J0Owo+ ICsJCSRyZXF7J3N0YXJ0J30gPSAkdGltZTsKPiArCQkkcmVxeydyaW5nJ30gPSAkdHB7J3Jpbmcn fTsKPiArCQkkcmVxeydzZXFubyd9ID0gJHRweydzZXFubyd9Owo+ICsJCSRyZXF7J2N0eCd9ID0g JHRweydjdHgnfTsKPiArCQkkcmVxeyduYW1lJ30gPSAkdHB7J2N0eCd9IC4gJy8nIC4gJHRweydz ZXFubyd9Owo+ICsJCSRyZXF7J2dsb2JhbCd9ID0gJHRweydnbG9iYWwnfTsKPiArCQkkcmVxeydw b3J0J30gPSAkdHB7J3BvcnQnfTsKPiAgIAkJJHJlcXsncXVldWUnfSA9ICRxdWV1ZXska2V5fTsK PiAgIAkJJHJlcXsnc3VibWl0LWRlbGF5J30gPSAkc3VibWl0eyRrZXl9IC0gJHF1ZXVleyRrZXl9 Owo+ICAgCQkkcmVxeydleGVjdXRlLWRlbGF5J30gPSAkcmVxeydzdGFydCd9IC0gJHN1Ym1pdHsk a2V5fTsKPiAtCQkkcmluZ3N7JHJpbmd9ID0gJGdpZCsrIHVubGVzcyBleGlzdHMgJHJpbmdzeyRy aW5nfTsKPiAtCQkkcmluZ21hcHskcmluZ3N7JHJpbmd9fSA9ICRyaW5nOwo+ICsJCSRyaW5nc3sk dHB7J3JpbmcnfX0gPSAkZ2lkKysgdW5sZXNzIGV4aXN0cyAkcmluZ3N7JHRweydyaW5nJ319Owo+ ICsJCSRyaW5nbWFweyRyaW5nc3skdHB7J3JpbmcnfX19ID0gJHRweydyaW5nJ307Cj4gICAJCSRk Ynska2V5fSA9IFwlcmVxOwo+ICAgCQluZXh0Owo+IC0JfQo+IC0KPiAtCSgkcywgJHVzLCAkcmlu ZywgJGN0eCwgJHNlcW5vLCAkZ2xvYmFsX3NlcW5vLCAkcG9ydCkgPSBwYXJzZV9yZXEoJF8sICdp OTE1Omk5MTVfZ2VtX3JlcXVlc3Rfb3V0Jyk7Cj4gLQlpZiAoZGVmaW5lZCAkcykgewo+IC0JCW15 ICRna2V5ID0gZ2xvYmFsX2tleSgkcmluZywgJGdsb2JhbF9zZXFubyk7Cj4gKwl9IGVsc2lmICgk dHBfbmFtZSBlcSAnaTkxNV9nZW1fcmVxdWVzdF9vdXQnKSB7Cj4gKwkJbXkgJGdrZXkgPSBnbG9i YWxfa2V5KCR0cHsncmluZyd9LCAkdHB7J2dsb2JhbCd9KTsKPiAgIAo+IC0JCW5leHQgaWYgZXhp c3RzICRpZ25vcmVfcmluZ3skcmluZ307Cj4gLQo+IC0JCSRjdHggPSBzYW5pdGl6ZV9jdHgoJGN0 eCwgJHJpbmcpOwo+IC0JCSRrZXkgPSBkYl9rZXkoJHJpbmcsICRjdHgsICRzZXFubyk7Cj4gKwkJ JHRweydjdHgnfSA9IHNhbml0aXplX2N0eCgkdHB7J2N0eCd9LCAkdHB7J3JpbmcnfSk7Cj4gKwkJ JGtleSA9IGRiX2tleSgkdHB7J3JpbmcnfSwgJHRweydjdHgnfSwgJHRweydzZXFubyd9KTsKPiAg IAo+ICAgCQlpZiAobm90IGV4aXN0cyAkZGJ7JGtleX0gYW5kICRvbGRrZXJuZWx3YSkgewo+ICAg CQkJJG5vX2luKys7Cj4gQEAgLTU0Nyw3ICs0NzUsNyBAQCB3aGlsZSAoPD4pIHsKPiAgIAkJZGll IHVubGVzcyBleGlzdHMgJGRieyRrZXl9LT57J3N0YXJ0J307Cj4gICAJCWRpZSBpZiBleGlzdHMg JGRieyRrZXl9LT57J2VuZCd9Owo+ICAgCj4gLQkJJGRieyRrZXl9LT57J2VuZCd9ID0gdXMoJHMs ICR1cyk7Cj4gKwkJJGRieyRrZXl9LT57J2VuZCd9ID0gJHRpbWU7Cj4gICAJCWlmIChleGlzdHMg JG5vdGlmeXskZ2tleX0pIHsKPiAgIAkJCSRkYnska2V5fS0+eydub3RpZnknfSA9ICRub3RpZnl7 JGdrZXl9Owo+ICAgCQl9IGVsc2Ugewo+IEBAIC01NTksMjIgKzQ4NywxMyBAQCB3aGlsZSAoPD4p IHsKPiAgIAkJJGRieyRrZXl9LT57J2R1cmF0aW9uJ30gPSAkZGJ7JGtleX0tPnsnbm90aWZ5J30g LSAkZGJ7JGtleX0tPnsnc3RhcnQnfTsKPiAgIAkJJGRieyRrZXl9LT57J2NvbnRleHQtY29tcGxl dGUtZGVsYXknfSA9ICRkYnska2V5fS0+eydlbmQnfSAtICRkYnska2V5fS0+eydub3RpZnknfTsK PiAgIAkJbmV4dDsKPiAtCX0KPiAtCj4gLQkoJHMsICR1cywgJHJpbmcsICRzZXFubykgPSBwYXJz ZV9ub3RpZnkoJF8pOwo+IC0JaWYgKGRlZmluZWQgJHMpIHsKPiAtCQluZXh0IGlmIGV4aXN0cyAk aWdub3JlX3Jpbmd7JHJpbmd9Owo+IC0JCSRub3RpZnl7Z2xvYmFsX2tleSgkcmluZywgJHNlcW5v KX0gPSB1cygkcywgJHVzKTsKPiArCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpbnRlbF9lbmdpbmVf bm90aWZ5Jykgewo+ICsJCSRub3RpZnl7Z2xvYmFsX2tleSgkdHB7J3JpbmcnfSwgJHRweydzZXFu byd9KX0gPSAkdGltZTsKPiAgIAkJbmV4dDsKPiAtCX0KPiAtCj4gLQkoJHMsICR1cywgJGZyZXEp ID0gcGFyc2VfZnJlcSgkXyk7Cj4gLQlpZiAoZGVmaW5lZCAkcykgewo+IC0JCW15ICRjdXIgPSB1 cygkcywgJHVzKTsKPiAtCj4gLQkJcHVzaCBAZnJlcXMsIFskcHJldl9mcmVxX3RzLCAkY3VyLCAk cHJldl9mcmVxXSBpZiAkcHJldl9mcmVxOwo+IC0JCSRwcmV2X2ZyZXFfdHMgPSAkY3VyOwo+IC0J CSRwcmV2X2ZyZXEgPSAkZnJlcTsKPiArCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpbnRlbF9ncHVf ZnJlcV9jaGFuZ2UnKSB7Cj4gKwkJcHVzaCBAZnJlcXMsIFskcHJldl9mcmVxX3RzLCAkdGltZSwg JHByZXZfZnJlcV0gaWYgJHByZXZfZnJlcTsKPiArCQkkcHJldl9mcmVxX3RzID0gJHRpbWU7Cj4g KwkJJHByZXZfZnJlcSA9ICR0cHsnbmV3X2ZyZXEnfTsKPiAgIAkJbmV4dDsKPiAgIAl9Cj4gICB9 CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==