From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH i-g-t] scripts/trace.pl: Optimize event parsing and processing Date: Tue, 19 Dec 2017 08:23:23 -0800 Message-ID: References: <20171219111539.11231-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id BB04589C2A for ; Tue, 19 Dec 2017 16:23:34 +0000 (UTC) In-Reply-To: <20171219111539.11231-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 T24gMTIvMTkvMjAxNyAzOjE1IEFNLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPiBGcm9tOiBUdnJ0 a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+Cj4gQSBjb3VwbGUgb2Ygc21h bGwgb3B0aW1pemF0aW9ucyB3aGljaCBhbHRvZ2V0aGVyIGJyaW5nIGFyb3VuZCAzMCUKPiBpbXBy b3ZlbWVudCBpbiBteSB0ZXN0aW5nLgo+Cj4gMS4gRG8gbGVzcyBzdHJpbmcgcHJvY2Vzc2luZyBv biB0cmFjZXBvaW50cyBuYW1lcyBhbmQgcHVzaCBtb3JlIG9mIHRoZQo+ICAgICBjaGVjayBpbnRv IHRoZSBpZi1sYWRkZXIuCj4KPiAyLiBQdWxsIG91dCBjb21tb24gZGIga2V5IGFuZCBjdHggcHJv Y2Vzc2luZyBhbmQgY2FjaGUgY29tbW9uIHZhbHVlcyBpbgo+ICAgICBsb2NhbCB2YXJzLgo+Cj4g My4gS2V5IHZhbHVlIHBhaXIgcGFyc2luZyBpcyBmYXN0ZXIgd2l0aCBhIHJlZ2V4cC4KPgo+IDQu IEF2b2lkIHNvcnRpbmcgdGhlIGRiIGhhc2ggbXVsdGlwbGUgdGltZXMgaWYgcG9zc2libGUuCj4K PiBTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29t Pgo+IENjOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25AaW50ZWwuY29tPgo+IC0tLQo+ ICAgc2NyaXB0cy90cmFjZS5wbCB8IDExNCArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gICAxIGZpbGUgY2hhbmdlZCwgNDkgaW5zZXJ0aW9u cygrKSwgNjUgZGVsZXRpb25zKC0pCj4gLS0tCj4gSm9obiBwbGVhc2UgY2hlY2sgaWYgdGhpcyBo ZWxwcyB3aXRoIHlvdXIgbW9uc3RlciB0cmFjZXMgYmVmb3JlIHdlIGRlY2lkZQo+IGlmIGl0IGlz IHdvcnRoIHB1dHRpbmcgdGhpcyBpbi4gV2VsbCwgdGhlcmUgaXNuJ3QgbXVjaCBvZiBhIGRvd25z aWRlCj4gZXhjZXB0IHRvdWNoaW5nIHNvbWV0aGluZyB3aGljaCB3b3JrcyBhbmQgcmlza2luZyBi cmVha2luZyBpdC4KPgo+IGRpZmYgLS1naXQgYS9zY3JpcHRzL3RyYWNlLnBsIGIvc2NyaXB0cy90 cmFjZS5wbAo+IGluZGV4IDk4ZTRhOTg0M2E0My4uNTQ2M2UxZmQxOTU0IDEwMDc1NQo+IC0tLSBh L3NjcmlwdHMvdHJhY2UucGwKPiArKysgYi9zY3JpcHRzL3RyYWNlLnBsCj4gQEAgLTM1NiwxMTAg KzM1Niw5MSBAQCBteSAkcHJldl9mcmVxID0gMDsKPiAgIG15ICRwcmV2X2ZyZXFfdHMgPSAwOwo+ ICAgd2hpbGUgKDw+KSB7Cj4gICAJbXkgQGZpZWxkczsKPiAtCW15IEB0bXA7Cj4gICAJbXkgJHRw X25hbWU7Cj4gLQlteSAkdGltZTsKPiAgIAlteSAldHA7Cj4gLQlteSAka2V5Owo+ICsJbXkgKCR0 aW1lLCAkY3R4LCAkcmluZywgJHNlcW5vLCAkb3JpZ19jdHgsICRrZXkpOwo+ICAgCj4gICAJY2hv bXA7Cj4gICAJQGZpZWxkcyA9IHNwbGl0ICcgJzsKPiAgIAo+ICsJY2hvcCAkZmllbGRzWzNdOwo+ ICsJJHRpbWUgPSBpbnQoJGZpZWxkc1szXSAqIDEwMDAwMDAuMCk7Cj4gKwo+ICAgCSR0cF9uYW1l ID0gJGZpZWxkc1s0XTsKPiAtCUB0bXAgPSBzcGxpdCAnOicsICR0cF9uYW1lLCAyOwo+IC0JbmV4 dCB1bmxlc3MgJHRtcFswXSBlcSAnaTkxNSc7Cj4gLQkkdHBfbmFtZSA9ICR0bXBbMV07Cj4gLQlj aG9wICR0cF9uYW1lOwo+ICAgCj4gLQljaG9wICRmaWVsZHNbM107Cj4gLQkkdGltZSA9ICRmaWVs ZHNbM10gKiAxMDAwMDAwLjA7Cj4gICAJc3BsaWNlIEBmaWVsZHMsIDAsIDU7Cj4gICAKPiAgIAlm b3JlYWNoIG15ICRmIChAZmllbGRzKSB7Cj4gLQkJbXkgQGt2ID0gc3BsaXQgJz18LCcsICRmOwo+ IC0KPiAtCQkka3ZbMF0gPSAnZ2xvYmFsJyBpZiAka3ZbMF0gZXEgJ2dsb2JhbF9zZXFubyc7Cj4g KwkJbXkgKCRrLCAkdik7Cj4gICAKPiAtCQkkdHB7JGt2WzBdfSA9ICRrdlsxXTsKPiArCQkoJGss ICR2KSA9ICgkZiA9fiAvXihcUyspPShcZCspLyk7CkkgcmVjYWxsIHNvbWV0aGluZyBhYm91dCB1 c2luZyAoKSBzZWxlY3Rpb24gaXMgc2xvd2VyIHRoYW4gdXNpbmcgCnByZS1kZWZpbmVkIHZhbHVl cy4gRS5nLgogwqAgJGYgPX4gbS89LzsgKCRrLCAkdikgPSAoJGAsICQnKTsKCk9yIGRvIHlvdSBz cGVjaWZpY2FsbHkgbmVlZCB0aGUgZmlsdGVyaW5nIG9mIG9ubHkgbWF0Y2hpbmcgbnVtZXJpYyB2 YWx1ZXM/Cgo+ICsJCW5leHQgdW5sZXNzIGRlZmluZWQgJGs7Cj4gKwkJJGsgPSAnZ2xvYmFsJyBp ZiAkayBlcSAnZ2xvYmFsX3NlcW5vJzsKPiArCQkkdHB7JGt9ID0gJHY7Cj4gICAJfQo+ICAgCj4g ICAJbmV4dCBpZiBleGlzdHMgJHRweydyaW5nJ30gYW5kIGV4aXN0cyAkaWdub3JlX3Jpbmd7JHRw eydyaW5nJ319Owo+ICAgCj4gLQlpZiAoJHRwX25hbWUgZXEgJ2k5MTVfZ2VtX3JlcXVlc3Rfd2Fp dF9iZWdpbicpIHsKPiAtCQlteSAlcnc7Cj4gKwlpZiAoZXhpc3RzICR0cHsncmluZyd9IGFuZCBl eGlzdHMgJHRweydjdHgnfSBhbmQgZXhpc3RzICR0cHsnc2Vxbm8nfSkgewo+ICsJCSRyaW5nID0g JHRweydyaW5nJ307Cj4gKwkJJGN0eCA9ICR0cHsnY3R4J307Cj4gKwkJJHNlcW5vID0gJHRweydz ZXFubyd9Owo+ICsKPiArCQkkb3JpZ19jdHggPSAkY3R4Owo+ICsJCSRjdHggPSBzYW5pdGl6ZV9j dHgoJGN0eCwgJHJpbmcpOwo+ICsJCSRrZXkgPSBkYl9rZXkoJHJpbmcsICRjdHgsICRzZXFubyk7 Cj4gKwl9Cj4gICAKPiAtCQkkdHB7J2N0eCd9ID0gc2FuaXRpemVfY3R4KCR0cHsnY3R4J30sICR0 cHsncmluZyd9KTsKPiAtCQkka2V5ID0gZGJfa2V5KCR0cHsncmluZyd9LCAkdHB7J2N0eCd9LCAk dHB7J3NlcW5vJ30pOwo+ICsJaWYgKCR0cF9uYW1lIGVxICdpOTE1Omk5MTVfZ2VtX3JlcXVlc3Rf d2FpdF9iZWdpbjonKSB7Cj4gKwkJbXkgJXJ3Owo+ICAgCj4gICAJCW5leHQgaWYgZXhpc3RzICRy ZXF3YWl0eyRrZXl9Owo+ICAgCj4gICAJCSRyd3sna2V5J30gPSAka2V5Owo+IC0JCSRyd3sncmlu Zyd9ID0gJHRweydyaW5nJ307Cj4gLQkJJHJ3eydzZXFubyd9ID0gJHRweydzZXFubyd9Owo+IC0J CSRyd3snY3R4J30gPSAkdHB7J2N0eCd9Owo+ICsJCSRyd3sncmluZyd9ID0gJHJpbmc7Cj4gKwkJ JHJ3eydzZXFubyd9ID0gJHNlcW5vOwo+ICsJCSRyd3snY3R4J30gPSAkY3R4Owo+ICAgCQkkcnd7 J3N0YXJ0J30gPSAkdGltZTsKPiAgIAkJJHJlcXdhaXR7JGtleX0gPSBcJXJ3Owo+IC0JCW5leHQ7 Cj4gLQl9IGVsc2lmICgkdHBfbmFtZSBlcSAnaTkxNV9nZW1fcmVxdWVzdF93YWl0X2VuZCcpIHsK PiAtCQkkdHB7J2N0eCd9ID0gc2FuaXRpemVfY3R4KCR0cHsnY3R4J30sICR0cHsncmluZyd9KTsK PiAtCQkka2V5ID0gZGJfa2V5KCR0cHsncmluZyd9LCAkdHB7J2N0eCd9LCAkdHB7J3NlcW5vJ30p Owo+IC0KPiArCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1Omk5MTVfZ2VtX3JlcXVlc3Rfd2Fp dF9lbmQ6Jykgewo+ICAgCQluZXh0IHVubGVzcyBleGlzdHMgJHJlcXdhaXR7JGtleX07Cj4gICAK PiAgIAkJJHJlcXdhaXR7JGtleX0tPnsnZW5kJ30gPSAkdGltZTsKPiAtCQluZXh0Owo+IC0JfSBl bHNpZiAoJHRwX25hbWUgZXEgJ2k5MTVfZ2VtX3JlcXVlc3RfYWRkJykgewo+IC0JCW15ICRvcmln X2N0eCA9ICR0cHsnY3R4J307Cj4gLQo+IC0JCSR0cHsnY3R4J30gPSBzYW5pdGl6ZV9jdHgoJHRw eydjdHgnfSwgJHRweydyaW5nJ30pOwo+IC0JCSRrZXkgPSBkYl9rZXkoJHRweydyaW5nJ30sICR0 cHsnY3R4J30sICR0cHsnc2Vxbm8nfSk7Cj4gLQo+ICsJfSBlbHNpZiAoJHRwX25hbWUgZXEgJ2k5 MTU6aTkxNV9nZW1fcmVxdWVzdF9hZGQ6Jykgewo+ICAgCQlpZiAoZXhpc3RzICRxdWV1ZXska2V5 fSkgewo+ICAgCQkJJGN0eGRieyRvcmlnX2N0eH0rKzsKPiAtCQkJJHRweydjdHgnfSA9IHNhbml0 aXplX2N0eCgkdHB7J2N0eCd9LCAkdHB7J3JpbmcnfSk7Cj4gLQkJCSRrZXkgPSBkYl9rZXkoJHRw eydyaW5nJ30sICR0cHsnY3R4J30sICR0cHsnc2Vxbm8nfSk7Cj4gKwkJCSRjdHggPSBzYW5pdGl6 ZV9jdHgoJGN0eCwgJHJpbmcpOwpUaGlzIGJpdCBvcmlnaW5hbGx5IHdvcmtlZCBvbiAkb3JpZ19j dHggbm90ICRjdHggKGkuZS4sIGJlZm9yZSB5b3VyIApwcmV2aW91cyByZWZhY3RvcmluZyBwYXRj aCkuIFdoaWNoIHNob3VsZCBpdCBiZT8gV2lsbCBhIGRvdWJsZSAKc2FuaXRpc2F0aW9uIHN0ZXAg d29yayBhcyBpbnRlbmRlZD8gSSBkb24ndCBhY3R1YWxseSBoaXQgdGhpcyBsaW5lIGluIAphbnkg b2YgdGhlIHJ1bnMgSSd2ZSBkb25lLgoKCj4gKwkJCSRrZXkgPSBkYl9rZXkoJHJpbmcsICRjdHgs ICRzZXFubyk7Cj4gICAJCX0KPiAgIAo+ICAgCQkkcXVldWV7JGtleX0gPSAkdGltZTsKPiAtCQlu ZXh0Owo+IC0JfSBlbHNpZiAoJHRwX25hbWUgZXEgJ2k5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0Jykg ewo+IC0JCSR0cHsnY3R4J30gPSBzYW5pdGl6ZV9jdHgoJHRweydjdHgnfSwgJHRweydyaW5nJ30p Owo+IC0JCSRrZXkgPSBkYl9rZXkoJHRweydyaW5nJ30sICR0cHsnY3R4J30sICR0cHsnc2Vxbm8n fSk7Cj4gLQo+ICsJfSBlbHNpZiAoJHRwX25hbWUgZXEgJ2k5MTU6aTkxNV9nZW1fcmVxdWVzdF9z dWJtaXQ6Jykgewo+ICAgCQlkaWUgaWYgZXhpc3RzICRzdWJtaXR7JGtleX07Cj4gICAJCWRpZSB1 bmxlc3MgZXhpc3RzICRxdWV1ZXska2V5fTsKPiAgIAo+ICAgCQkkc3VibWl0eyRrZXl9ID0gJHRp bWU7Cj4gLQkJbmV4dDsKPiAtCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1X2dlbV9yZXF1ZXN0 X2luJykgewo+ICsJfSBlbHNpZiAoJHRwX25hbWUgZXEgJ2k5MTU6aTkxNV9nZW1fcmVxdWVzdF9p bjonKSB7Cj4gICAJCW15ICVyZXE7Cj4gICAKPiAtCQkkdHB7J2N0eCd9ID0gc2FuaXRpemVfY3R4 KCR0cHsnY3R4J30sICR0cHsncmluZyd9KTsKPiAtCQkka2V5ID0gZGJfa2V5KCR0cHsncmluZyd9 LCAkdHB7J2N0eCd9LCAkdHB7J3NlcW5vJ30pOwo+IC0KPiAgIAkJZGllIGlmIGV4aXN0cyAkZGJ7 JGtleX07Cj4gICAJCWRpZSB1bmxlc3MgZXhpc3RzICRxdWV1ZXska2V5fTsKPiAgIAkJZGllIHVu bGVzcyBleGlzdHMgJHN1Ym1pdHska2V5fTsKPiAgIAo+ICAgCQkkcmVxeydzdGFydCd9ID0gJHRp bWU7Cj4gLQkJJHJlcXsncmluZyd9ID0gJHRweydyaW5nJ307Cj4gLQkJJHJlcXsnc2Vxbm8nfSA9 ICR0cHsnc2Vxbm8nfTsKPiAtCQkkcmVxeydjdHgnfSA9ICR0cHsnY3R4J307Cj4gLQkJJHJlcXsn bmFtZSd9ID0gJHRweydjdHgnfSAuICcvJyAuICR0cHsnc2Vxbm8nfTsKPiArCQkkcmVxeydyaW5n J30gPSAkcmluZzsKPiArCQkkcmVxeydzZXFubyd9ID0gJHNlcW5vOwo+ICsJCSRyZXF7J2N0eCd9 ID0gJGN0eDsKPiArCQkkcmVxeyduYW1lJ30gPSAkY3R4IC4gJy8nIC4gJHNlcW5vOwo+ICAgCQkk cmVxeydnbG9iYWwnfSA9ICR0cHsnZ2xvYmFsJ307Cj4gICAJCSRyZXF7J3BvcnQnfSA9ICR0cHsn cG9ydCd9Owo+ICAgCQkkcmVxeydxdWV1ZSd9ID0gJHF1ZXVleyRrZXl9Owo+ICAgCQkkcmVxeydz dWJtaXQtZGVsYXknfSA9ICRzdWJtaXR7JGtleX0gLSAkcXVldWV7JGtleX07Cj4gICAJCSRyZXF7 J2V4ZWN1dGUtZGVsYXknfSA9ICRyZXF7J3N0YXJ0J30gLSAkc3VibWl0eyRrZXl9Owo+IC0JCSRy aW5nc3skdHB7J3JpbmcnfX0gPSAkZ2lkKysgdW5sZXNzIGV4aXN0cyAkcmluZ3N7JHRweydyaW5n J319Owo+IC0JCSRyaW5nbWFweyRyaW5nc3skdHB7J3JpbmcnfX19ID0gJHRweydyaW5nJ307Cj4g KwkJJHJpbmdzeyRyaW5nfSA9ICRnaWQrKyB1bmxlc3MgZXhpc3RzICRyaW5nc3skcmluZ307Cj4g KwkJJHJpbmdtYXB7JHJpbmdzeyRyaW5nfX0gPSAkcmluZzsKPiAgIAkJJGRieyRrZXl9ID0gXCVy ZXE7Cj4gLQkJbmV4dDsKPiAtCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1X2dlbV9yZXF1ZXN0 X291dCcpIHsKPiAtCQlteSAkZ2tleSA9IGdsb2JhbF9rZXkoJHRweydyaW5nJ30sICR0cHsnZ2xv YmFsJ30pOwo+IC0KPiAtCQkkdHB7J2N0eCd9ID0gc2FuaXRpemVfY3R4KCR0cHsnY3R4J30sICR0 cHsncmluZyd9KTsKPiAtCQkka2V5ID0gZGJfa2V5KCR0cHsncmluZyd9LCAkdHB7J2N0eCd9LCAk dHB7J3NlcW5vJ30pOwo+ICsJfSBlbHNpZiAoJHRwX25hbWUgZXEgJ2k5MTU6aTkxNV9nZW1fcmVx dWVzdF9vdXQ6Jykgewo+ICsJCW15ICRna2V5ID0gZ2xvYmFsX2tleSgkcmluZywgJHRweydnbG9i YWwnfSk7Cj4gICAKPiAgIAkJZGllIHVubGVzcyBleGlzdHMgJGRieyRrZXl9Owo+ICAgCQlkaWUg dW5sZXNzIGV4aXN0cyAkZGJ7JGtleX0tPnsnc3RhcnQnfTsKPiBAQCAtNDc2LDE1ICs0NTcsMTIg QEAgd2hpbGUgKDw+KSB7Cj4gICAJCX0KPiAgIAkJJGRieyRrZXl9LT57J2R1cmF0aW9uJ30gPSAk ZGJ7JGtleX0tPnsnbm90aWZ5J30gLSAkZGJ7JGtleX0tPnsnc3RhcnQnfTsKPiAgIAkJJGRieyRr ZXl9LT57J2NvbnRleHQtY29tcGxldGUtZGVsYXknfSA9ICRkYnska2V5fS0+eydlbmQnfSAtICRk Ynska2V5fS0+eydub3RpZnknfTsKPiAtCQluZXh0Owo+IC0JfSBlbHNpZiAoJHRwX25hbWUgZXEg J2ludGVsX2VuZ2luZV9ub3RpZnknKSB7Cj4gLQkJJG5vdGlmeXtnbG9iYWxfa2V5KCR0cHsncmlu Zyd9LCAkdHB7J3NlcW5vJ30pfSA9ICR0aW1lOwo+IC0JCW5leHQ7Cj4gLQl9IGVsc2lmICgkdHBf bmFtZSBlcSAnaW50ZWxfZ3B1X2ZyZXFfY2hhbmdlJykgewo+ICsJfSBlbHNpZiAoJHRwX25hbWUg ZXEgJ2ludGVsX2VuZ2luZV9ub3RpZnk6Jykgewo+ICsJCSRub3RpZnl7Z2xvYmFsX2tleSgkcmlu ZywgJHNlcW5vKX0gPSAkdGltZTsKPiArCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1OmludGVs X2dwdV9mcmVxX2NoYW5nZTonKSB7Cj4gICAJCXB1c2ggQGZyZXFzLCBbJHByZXZfZnJlcV90cywg JHRpbWUsICRwcmV2X2ZyZXFdIGlmICRwcmV2X2ZyZXE7Cj4gICAJCSRwcmV2X2ZyZXFfdHMgPSAk dGltZTsKPiAgIAkJJHByZXZfZnJlcSA9ICR0cHsnbmV3X2ZyZXEnfTsKPiAtCQluZXh0Owo+ICAg CX0KPiAgIH0KPiAgIAo+IEBAIC01NTcsNyArNTM1LDEwIEBAIG15ICglc3VibWl0X2F2ZywgJWV4 ZWN1dGVfYXZnLCAlY3R4c2F2ZV9hdmcpOwo+ICAgbXkgJGxhc3RfdHMgPSAwOwo+ICAgbXkgJGZp cnN0X3RzOwo+ICAgCj4gLWZvcmVhY2ggbXkgJGtleSAoc29ydCB7JGRieyRhfS0+eydzdGFydCd9 IDw9PiAkZGJ7JGJ9LT57J3N0YXJ0J319IGtleXMgJWRiKSB7Cj4gK215IEBzb3J0ZWRfa2V5cyA9 IHNvcnQgeyRkYnskYX0tPnsnc3RhcnQnfSA8PT4gJGRieyRifS0+eydzdGFydCd9fSBrZXlzICVk YjsKPiArbXkgJHJlX3NvcnQgPSAwOwo+ICsKPiArZm9yZWFjaCBteSAka2V5IChAc29ydGVkX2tl eXMpIHsKPiAgIAlteSAkcmluZyA9ICRkYnska2V5fS0+eydyaW5nJ307Cj4gICAJbXkgJGVuZCA9 ICRkYnska2V5fS0+eydlbmQnfTsKPiAgIAo+IEBAIC01ODUsNiArNTY2LDcgQEAgZm9yZWFjaCBt eSAka2V5IChzb3J0IHskZGJ7JGF9LT57J3N0YXJ0J30gPD0+ICRkYnskYn0tPnsnc3RhcnQnfX0g a2V5cyAlZGIpIHsKPiAgIAo+ICAgCQkjIDIwdXMgdG9sZXJhbmNlCj4gICAJCWlmIChleGlzdHMg JGRieyRuZXh0X2tleX0gYW5kICRkYnskbmV4dF9rZXl9LT57J3N0YXJ0J30gPCAkc3RhcnQgKyAy MCkgewo+ICsJCQkkcmVfc29ydCA9IDE7Cj4gICAJCQkkZGJ7JG5leHRfa2V5fS0+eydzdGFydCd9 ID0gJHN0YXJ0ICsgJGRieyRrZXl9LT57J2R1cmF0aW9uJ307Cj4gICAJCQkkZGJ7JG5leHRfa2V5 fS0+eydzdGFydCd9ID0gJGRieyRuZXh0X2tleX0tPnsnZW5kJ30gaWYgJGRieyRuZXh0X2tleX0t Pnsnc3RhcnQnfSA+ICRkYnskbmV4dF9rZXl9LT57J2VuZCd9Owo+ICAgCQkJJGRieyRuZXh0X2tl eX0tPnsnZHVyYXRpb24nfSA9ICRkYnskbmV4dF9rZXl9LT57J25vdGlmeSd9IC0gJGRieyRuZXh0 X2tleX0tPnsnc3RhcnQnfTsKPiBAQCAtNjAxLDYgKzU4Myw4IEBAIGZvcmVhY2ggbXkgJGtleSAo c29ydCB7JGRieyRhfS0+eydzdGFydCd9IDw9PiAkZGJ7JGJ9LT57J3N0YXJ0J319IGtleXMgJWRi KSB7Cj4gICAJJGN0eHNhdmVfYXZneyRyaW5nfSArPSAkZGJ7JGtleX0tPnsnZW5kJ30gLSAkZGJ7 JGtleX0tPnsnbm90aWZ5J307Cj4gICB9Cj4gICAKPiArQHNvcnRlZF9rZXlzID0gc29ydCB7JGRi eyRhfS0+eydzdGFydCd9IDw9PiAkZGJ7JGJ9LT57J3N0YXJ0J319IGtleXMgJWRiIGlmICRyZV9z b3J0Owo+ICsKPiAgIGZvcmVhY2ggbXkgJHJpbmcgKGtleXMgJWJhdGNoX2F2Zykgewo+ICAgCSRi YXRjaF9hdmd7JHJpbmd9IC89ICRiYXRjaF9jb3VudHskcmluZ307Cj4gICAJJGJhdGNoX3RvdGFs X2F2Z3skcmluZ30gLz0gJGJhdGNoX2NvdW50eyRyaW5nfTsKPiBAQCAtNjE2LDcgKzYwMCw3IEBA IGZvcmVhY2ggbXkgJGdpZCAoc29ydCBrZXlzICVyaW5ncykgewo+ICAgCW15IChAc18sIEBlXyk7 Cj4gICAKPiAgIAkjIEV4dHJhY3QgYWxsIEdQVSBidXN5IGludGVydmFscyBhbmQgc29ydCB0aGVt Lgo+IC0JZm9yZWFjaCBteSAka2V5IChzb3J0IHskZGJ7JGF9LT57J3N0YXJ0J30gPD0+ICRkYnsk Yn0tPnsnc3RhcnQnfX0ga2V5cyAlZGIpIHsKPiArCWZvcmVhY2ggbXkgJGtleSAoQHNvcnRlZF9r ZXlzKSB7Cj4gICAJCW5leHQgdW5sZXNzICRkYnska2V5fS0+eydyaW5nJ30gPT0gJHJpbmc7Cj4g ICAJCXB1c2ggQHNfLCAkZGJ7JGtleX0tPnsnc3RhcnQnfTsKPiAgIAkJcHVzaCBAZV8sICRkYnsk a2V5fS0+eydlbmQnfTsKPiBAQCAtNjYwLDcgKzY0NCw3IEBAIG15IEBncHVfaW50ZXJ2YWxzOwo+ ICAgbXkgKEBzXywgQGVfKTsKPiAgIAo+ICAgIyBFeHRyYWN0IGFsbCBHUFUgYnVzeSBpbnRlcnZh bHMgYW5kIHNvcnQgdGhlbS4KPiAtZm9yZWFjaCBteSAka2V5IChzb3J0IHskZGJ7JGF9LT57J3N0 YXJ0J30gPD0+ICRkYnskYn0tPnsnc3RhcnQnfX0ga2V5cyAlZGIpIHsKPiArZm9yZWFjaCBteSAk a2V5IChAc29ydGVkX2tleXMpIHsKPiAgIAlwdXNoIEBzXywgJGRieyRrZXl9LT57J3N0YXJ0J307 Cj4gICAJcHVzaCBAZV8sICRkYnska2V5fS0+eydlbmQnfTsKPiAgIAlkaWUgaWYgJGRieyRrZXl9 LT57J3N0YXJ0J30gPiAkZGJ7JGtleX0tPnsnZW5kJ307CgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK