From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH i-g-t v2] scripts/trace.pl: Optimize event parsing and processing Date: Wed, 20 Dec 2017 09:41:17 +0000 Message-ID: <20171220094117.17430-1-tvrtko.ursulin@linux.intel.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr0-x235.google.com (mail-wr0-x235.google.com [IPv6:2a00:1450:400c:c0c::235]) by gabe.freedesktop.org (Postfix) with ESMTPS id ABC536E091 for ; Wed, 20 Dec 2017 09:41:30 +0000 (UTC) Received: by mail-wr0-x235.google.com with SMTP id s66so21716741wrc.9 for ; Wed, 20 Dec 2017 01:41:30 -0800 (PST) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkEgY291cGxl IG9mIHNtYWxsIG9wdGltaXphdGlvbnMgd2hpY2ggYWx0b2dldGhlciBicmluZyBhcm91bmQgMzAl CmltcHJvdmVtZW50IGluIG15IHRlc3RpbmcuCgoxLiBEbyBsZXNzIHN0cmluZyBwcm9jZXNzaW5n IG9uIHRyYWNlcG9pbnRzIG5hbWVzIGFuZCBwdXNoIG1vcmUgb2YgdGhlCiAgIGNoZWNrIGludG8g dGhlIGlmLWxhZGRlci4KCjIuIFB1bGwgb3V0IGNvbW1vbiBkYiBrZXkgYW5kIGN0eCBwcm9jZXNz aW5nIGFuZCBjYWNoZSBjb21tb24gdmFsdWVzIGluCiAgIGxvY2FsIHZhcnMuCgozLiBLZXkgdmFs dWUgcGFpciBwYXJzaW5nIGlzIGZhc3RlciB3aXRoIGEgcmVnZXhwLgoKNC4gQXZvaWQgc29ydGlu ZyB0aGUgZGIgaGFzaCBtdWx0aXBsZSB0aW1lcyBpZiBwb3NzaWJsZS4KCnYyOgogKiBVc2UgZmFz dGVyIGtleS12YWx1ZSBzcGxpdHRpbmcgbWV0aG9kLiAoSm9obiBIYXJyaXNvbikKClNpZ25lZC1v ZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBKb2hu IEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25AaW50ZWwuY29tPgotLS0KIHNjcmlwdHMvdHJhY2Uu cGwgfCAxMTUgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDY1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NjcmlwdHMvdHJhY2UucGwgYi9zY3JpcHRzL3RyYWNlLnBsCmluZGV4 IGFkZTBhOTE1NGJkNy4uMjYyOGE0MWFiZmM0IDEwMDc1NQotLS0gYS9zY3JpcHRzL3RyYWNlLnBs CisrKyBiL3NjcmlwdHMvdHJhY2UucGwKQEAgLTM1NiwxMTAgKzM1Niw5MiBAQCBteSAkcHJldl9m cmVxID0gMDsKIG15ICRwcmV2X2ZyZXFfdHMgPSAwOwogd2hpbGUgKDw+KSB7CiAJbXkgQGZpZWxk czsKLQlteSBAdG1wOwogCW15ICR0cF9uYW1lOwotCW15ICR0aW1lOwogCW15ICV0cDsKLQlteSAk a2V5OworCW15ICgkdGltZSwgJGN0eCwgJHJpbmcsICRzZXFubywgJG9yaWdfY3R4LCAka2V5KTsK IAogCWNob21wOwogCUBmaWVsZHMgPSBzcGxpdCAnICc7CiAKKwljaG9wICRmaWVsZHNbM107CisJ JHRpbWUgPSBpbnQoJGZpZWxkc1szXSAqIDEwMDAwMDAuMCk7CisKIAkkdHBfbmFtZSA9ICRmaWVs ZHNbNF07Ci0JQHRtcCA9IHNwbGl0ICc6JywgJHRwX25hbWUsIDI7Ci0JbmV4dCB1bmxlc3MgJHRt cFswXSBlcSAnaTkxNSc7Ci0JJHRwX25hbWUgPSAkdG1wWzFdOwotCWNob3AgJHRwX25hbWU7CiAK LQljaG9wICRmaWVsZHNbM107Ci0JJHRpbWUgPSAkZmllbGRzWzNdICogMTAwMDAwMC4wOwogCXNw bGljZSBAZmllbGRzLCAwLCA1OwogCiAJZm9yZWFjaCBteSAkZiAoQGZpZWxkcykgewotCQlteSBA a3YgPSBzcGxpdCAnPXwsJywgJGY7Ci0KLQkJJGt2WzBdID0gJ2dsb2JhbCcgaWYgJGt2WzBdIGVx ICdnbG9iYWxfc2Vxbm8nOworCQlteSAoJGssICR2KTsKIAotCQkkdHB7JGt2WzBdfSA9ICRrdlsx XTsKKwkJbmV4dCB1bmxlc3MgJGYgPX4gbS89LzsKKwkJKCRrLCAkdikgPSAoJGAsICQnKTsKKwkJ JGsgPSAnZ2xvYmFsJyBpZiAkayBlcSAnZ2xvYmFsX3NlcW5vJzsKKwkJY2hvcCAkdiBpZiBzdWJz dHIoJHYsIC0xLCAxKSBlcSAnLCc7CisJCSR0cHska30gPSAkdjsKIAl9CiAKIAluZXh0IGlmIGV4 aXN0cyAkdHB7J3JpbmcnfSBhbmQgZXhpc3RzICRpZ25vcmVfcmluZ3skdHB7J3JpbmcnfX07CiAK LQlpZiAoJHRwX25hbWUgZXEgJ2k5MTVfZ2VtX3JlcXVlc3Rfd2FpdF9iZWdpbicpIHsKLQkJbXkg JXJ3OworCWlmIChleGlzdHMgJHRweydyaW5nJ30gYW5kIGV4aXN0cyAkdHB7J2N0eCd9IGFuZCBl eGlzdHMgJHRweydzZXFubyd9KSB7CisJCSRyaW5nID0gJHRweydyaW5nJ307CisJCSRjdHggPSAk dHB7J2N0eCd9OworCQkkc2Vxbm8gPSAkdHB7J3NlcW5vJ307CisKKwkJJG9yaWdfY3R4ID0gJGN0 eDsKKwkJJGN0eCA9IHNhbml0aXplX2N0eCgkY3R4LCAkcmluZyk7CisJCSRrZXkgPSBkYl9rZXko JHJpbmcsICRjdHgsICRzZXFubyk7CisJfQogCi0JCSR0cHsnY3R4J30gPSBzYW5pdGl6ZV9jdHgo JHRweydjdHgnfSwgJHRweydyaW5nJ30pOwotCQkka2V5ID0gZGJfa2V5KCR0cHsncmluZyd9LCAk dHB7J2N0eCd9LCAkdHB7J3NlcW5vJ30pOworCWlmICgkdHBfbmFtZSBlcSAnaTkxNTppOTE1X2dl bV9yZXF1ZXN0X3dhaXRfYmVnaW46JykgeworCQlteSAlcnc7CiAKIAkJbmV4dCBpZiBleGlzdHMg JHJlcXdhaXR7JGtleX07CiAKIAkJJHJ3eydrZXknfSA9ICRrZXk7Ci0JCSRyd3sncmluZyd9ID0g JHRweydyaW5nJ307Ci0JCSRyd3snc2Vxbm8nfSA9ICR0cHsnc2Vxbm8nfTsKLQkJJHJ3eydjdHgn fSA9ICR0cHsnY3R4J307CisJCSRyd3sncmluZyd9ID0gJHJpbmc7CisJCSRyd3snc2Vxbm8nfSA9 ICRzZXFubzsKKwkJJHJ3eydjdHgnfSA9ICRjdHg7CiAJCSRyd3snc3RhcnQnfSA9ICR0aW1lOwog CQkkcmVxd2FpdHska2V5fSA9IFwlcnc7Ci0JCW5leHQ7Ci0JfSBlbHNpZiAoJHRwX25hbWUgZXEg J2k5MTVfZ2VtX3JlcXVlc3Rfd2FpdF9lbmQnKSB7Ci0JCSR0cHsnY3R4J30gPSBzYW5pdGl6ZV9j dHgoJHRweydjdHgnfSwgJHRweydyaW5nJ30pOwotCQkka2V5ID0gZGJfa2V5KCR0cHsncmluZyd9 LCAkdHB7J2N0eCd9LCAkdHB7J3NlcW5vJ30pOwotCisJfSBlbHNpZiAoJHRwX25hbWUgZXEgJ2k5 MTU6aTkxNV9nZW1fcmVxdWVzdF93YWl0X2VuZDonKSB7CiAJCW5leHQgdW5sZXNzIGV4aXN0cyAk cmVxd2FpdHska2V5fTsKIAogCQkkcmVxd2FpdHska2V5fS0+eydlbmQnfSA9ICR0aW1lOwotCQlu ZXh0OwotCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1X2dlbV9yZXF1ZXN0X2FkZCcpIHsKLQkJ bXkgJG9yaWdfY3R4ID0gJHRweydjdHgnfTsKLQotCQkkdHB7J2N0eCd9ID0gc2FuaXRpemVfY3R4 KCR0cHsnY3R4J30sICR0cHsncmluZyd9KTsKLQkJJGtleSA9IGRiX2tleSgkdHB7J3JpbmcnfSwg JHRweydjdHgnfSwgJHRweydzZXFubyd9KTsKLQorCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1 Omk5MTVfZ2VtX3JlcXVlc3RfYWRkOicpIHsKIAkJaWYgKGV4aXN0cyAkcXVldWV7JGtleX0pIHsK IAkJCSRjdHhkYnskb3JpZ19jdHh9Kys7Ci0JCQkkdHB7J2N0eCd9ID0gc2FuaXRpemVfY3R4KCRv cmlnX2N0eCwgJHRweydyaW5nJ30pOwotCQkJJGtleSA9IGRiX2tleSgkdHB7J3JpbmcnfSwgJHRw eydjdHgnfSwgJHRweydzZXFubyd9KTsKKwkJCSRjdHggPSBzYW5pdGl6ZV9jdHgoJG9yaWdfY3R4 LCAkcmluZyk7CisJCQkka2V5ID0gZGJfa2V5KCRyaW5nLCAkY3R4LCAkc2Vxbm8pOwogCQl9CiAK IAkJJHF1ZXVleyRrZXl9ID0gJHRpbWU7Ci0JCW5leHQ7Ci0JfSBlbHNpZiAoJHRwX25hbWUgZXEg J2k5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0JykgewotCQkkdHB7J2N0eCd9ID0gc2FuaXRpemVfY3R4 KCR0cHsnY3R4J30sICR0cHsncmluZyd9KTsKLQkJJGtleSA9IGRiX2tleSgkdHB7J3JpbmcnfSwg JHRweydjdHgnfSwgJHRweydzZXFubyd9KTsKLQorCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1 Omk5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0OicpIHsKIAkJZGllIGlmIGV4aXN0cyAkc3VibWl0eyRr ZXl9OwogCQlkaWUgdW5sZXNzIGV4aXN0cyAkcXVldWV7JGtleX07CiAKIAkJJHN1Ym1pdHska2V5 fSA9ICR0aW1lOwotCQluZXh0OwotCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1X2dlbV9yZXF1 ZXN0X2luJykgeworCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1Omk5MTVfZ2VtX3JlcXVlc3Rf aW46JykgewogCQlteSAlcmVxOwogCi0JCSR0cHsnY3R4J30gPSBzYW5pdGl6ZV9jdHgoJHRweydj dHgnfSwgJHRweydyaW5nJ30pOwotCQkka2V5ID0gZGJfa2V5KCR0cHsncmluZyd9LCAkdHB7J2N0 eCd9LCAkdHB7J3NlcW5vJ30pOwotCiAJCWRpZSBpZiBleGlzdHMgJGRieyRrZXl9OwogCQlkaWUg dW5sZXNzIGV4aXN0cyAkcXVldWV7JGtleX07CiAJCWRpZSB1bmxlc3MgZXhpc3RzICRzdWJtaXR7 JGtleX07CiAKIAkJJHJlcXsnc3RhcnQnfSA9ICR0aW1lOwotCQkkcmVxeydyaW5nJ30gPSAkdHB7 J3JpbmcnfTsKLQkJJHJlcXsnc2Vxbm8nfSA9ICR0cHsnc2Vxbm8nfTsKLQkJJHJlcXsnY3R4J30g PSAkdHB7J2N0eCd9OwotCQkkcmVxeyduYW1lJ30gPSAkdHB7J2N0eCd9IC4gJy8nIC4gJHRweydz ZXFubyd9OworCQkkcmVxeydyaW5nJ30gPSAkcmluZzsKKwkJJHJlcXsnc2Vxbm8nfSA9ICRzZXFu bzsKKwkJJHJlcXsnY3R4J30gPSAkY3R4OworCQkkcmVxeyduYW1lJ30gPSAkY3R4IC4gJy8nIC4g JHNlcW5vOwogCQkkcmVxeydnbG9iYWwnfSA9ICR0cHsnZ2xvYmFsJ307CiAJCSRyZXF7J3BvcnQn fSA9ICR0cHsncG9ydCd9OwogCQkkcmVxeydxdWV1ZSd9ID0gJHF1ZXVleyRrZXl9OwogCQkkcmVx eydzdWJtaXQtZGVsYXknfSA9ICRzdWJtaXR7JGtleX0gLSAkcXVldWV7JGtleX07CiAJCSRyZXF7 J2V4ZWN1dGUtZGVsYXknfSA9ICRyZXF7J3N0YXJ0J30gLSAkc3VibWl0eyRrZXl9OwotCQkkcmlu Z3N7JHRweydyaW5nJ319ID0gJGdpZCsrIHVubGVzcyBleGlzdHMgJHJpbmdzeyR0cHsncmluZyd9 fTsKLQkJJHJpbmdtYXB7JHJpbmdzeyR0cHsncmluZyd9fX0gPSAkdHB7J3JpbmcnfTsKKwkJJHJp bmdzeyRyaW5nfSA9ICRnaWQrKyB1bmxlc3MgZXhpc3RzICRyaW5nc3skcmluZ307CisJCSRyaW5n bWFweyRyaW5nc3skcmluZ319ID0gJHJpbmc7CiAJCSRkYnska2V5fSA9IFwlcmVxOwotCQluZXh0 OwotCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1X2dlbV9yZXF1ZXN0X291dCcpIHsKLQkJbXkg JGdrZXkgPSBnbG9iYWxfa2V5KCR0cHsncmluZyd9LCAkdHB7J2dsb2JhbCd9KTsKLQotCQkkdHB7 J2N0eCd9ID0gc2FuaXRpemVfY3R4KCR0cHsnY3R4J30sICR0cHsncmluZyd9KTsKLQkJJGtleSA9 IGRiX2tleSgkdHB7J3JpbmcnfSwgJHRweydjdHgnfSwgJHRweydzZXFubyd9KTsKKwl9IGVsc2lm ICgkdHBfbmFtZSBlcSAnaTkxNTppOTE1X2dlbV9yZXF1ZXN0X291dDonKSB7CisJCW15ICRna2V5 ID0gZ2xvYmFsX2tleSgkcmluZywgJHRweydnbG9iYWwnfSk7CiAKIAkJZGllIHVubGVzcyBleGlz dHMgJGRieyRrZXl9OwogCQlkaWUgdW5sZXNzIGV4aXN0cyAkZGJ7JGtleX0tPnsnc3RhcnQnfTsK QEAgLTQ3NiwxNSArNDU4LDEyIEBAIHdoaWxlICg8PikgewogCQl9CiAJCSRkYnska2V5fS0+eydk dXJhdGlvbid9ID0gJGRieyRrZXl9LT57J25vdGlmeSd9IC0gJGRieyRrZXl9LT57J3N0YXJ0J307 CiAJCSRkYnska2V5fS0+eydjb250ZXh0LWNvbXBsZXRlLWRlbGF5J30gPSAkZGJ7JGtleX0tPnsn ZW5kJ30gLSAkZGJ7JGtleX0tPnsnbm90aWZ5J307Ci0JCW5leHQ7Ci0JfSBlbHNpZiAoJHRwX25h bWUgZXEgJ2ludGVsX2VuZ2luZV9ub3RpZnknKSB7Ci0JCSRub3RpZnl7Z2xvYmFsX2tleSgkdHB7 J3JpbmcnfSwgJHRweydzZXFubyd9KX0gPSAkdGltZTsKLQkJbmV4dDsKLQl9IGVsc2lmICgkdHBf bmFtZSBlcSAnaW50ZWxfZ3B1X2ZyZXFfY2hhbmdlJykgeworCX0gZWxzaWYgKCR0cF9uYW1lIGVx ICdpbnRlbF9lbmdpbmVfbm90aWZ5OicpIHsKKwkJJG5vdGlmeXtnbG9iYWxfa2V5KCRyaW5nLCAk c2Vxbm8pfSA9ICR0aW1lOworCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1OmludGVsX2dwdV9m cmVxX2NoYW5nZTonKSB7CiAJCXB1c2ggQGZyZXFzLCBbJHByZXZfZnJlcV90cywgJHRpbWUsICRw cmV2X2ZyZXFdIGlmICRwcmV2X2ZyZXE7CiAJCSRwcmV2X2ZyZXFfdHMgPSAkdGltZTsKIAkJJHBy ZXZfZnJlcSA9ICR0cHsnbmV3X2ZyZXEnfTsKLQkJbmV4dDsKIAl9CiB9CiAKQEAgLTU1Nyw3ICs1 MzYsMTAgQEAgbXkgKCVzdWJtaXRfYXZnLCAlZXhlY3V0ZV9hdmcsICVjdHhzYXZlX2F2Zyk7CiBt eSAkbGFzdF90cyA9IDA7CiBteSAkZmlyc3RfdHM7CiAKLWZvcmVhY2ggbXkgJGtleSAoc29ydCB7 JGRieyRhfS0+eydzdGFydCd9IDw9PiAkZGJ7JGJ9LT57J3N0YXJ0J319IGtleXMgJWRiKSB7Citt eSBAc29ydGVkX2tleXMgPSBzb3J0IHskZGJ7JGF9LT57J3N0YXJ0J30gPD0+ICRkYnskYn0tPnsn c3RhcnQnfX0ga2V5cyAlZGI7CitteSAkcmVfc29ydCA9IDA7CisKK2ZvcmVhY2ggbXkgJGtleSAo QHNvcnRlZF9rZXlzKSB7CiAJbXkgJHJpbmcgPSAkZGJ7JGtleX0tPnsncmluZyd9OwogCW15ICRl bmQgPSAkZGJ7JGtleX0tPnsnZW5kJ307CiAKQEAgLTU4NSw2ICs1NjcsNyBAQCBmb3JlYWNoIG15 ICRrZXkgKHNvcnQgeyRkYnskYX0tPnsnc3RhcnQnfSA8PT4gJGRieyRifS0+eydzdGFydCd9fSBr ZXlzICVkYikgewogCiAJCSMgMjB1cyB0b2xlcmFuY2UKIAkJaWYgKGV4aXN0cyAkZGJ7JG5leHRf a2V5fSBhbmQgJGRieyRuZXh0X2tleX0tPnsnc3RhcnQnfSA8ICRzdGFydCArIDIwKSB7CisJCQkk cmVfc29ydCA9IDE7CiAJCQkkZGJ7JG5leHRfa2V5fS0+eydzdGFydCd9ID0gJHN0YXJ0ICsgJGRi eyRrZXl9LT57J2R1cmF0aW9uJ307CiAJCQkkZGJ7JG5leHRfa2V5fS0+eydzdGFydCd9ID0gJGRi eyRuZXh0X2tleX0tPnsnZW5kJ30gaWYgJGRieyRuZXh0X2tleX0tPnsnc3RhcnQnfSA+ICRkYnsk bmV4dF9rZXl9LT57J2VuZCd9OwogCQkJJGRieyRuZXh0X2tleX0tPnsnZHVyYXRpb24nfSA9ICRk YnskbmV4dF9rZXl9LT57J25vdGlmeSd9IC0gJGRieyRuZXh0X2tleX0tPnsnc3RhcnQnfTsKQEAg LTYwMSw2ICs1ODQsOCBAQCBmb3JlYWNoIG15ICRrZXkgKHNvcnQgeyRkYnskYX0tPnsnc3RhcnQn fSA8PT4gJGRieyRifS0+eydzdGFydCd9fSBrZXlzICVkYikgewogCSRjdHhzYXZlX2F2Z3skcmlu Z30gKz0gJGRieyRrZXl9LT57J2VuZCd9IC0gJGRieyRrZXl9LT57J25vdGlmeSd9OwogfQogCitA c29ydGVkX2tleXMgPSBzb3J0IHskZGJ7JGF9LT57J3N0YXJ0J30gPD0+ICRkYnskYn0tPnsnc3Rh cnQnfX0ga2V5cyAlZGIgaWYgJHJlX3NvcnQ7CisKIGZvcmVhY2ggbXkgJHJpbmcgKGtleXMgJWJh dGNoX2F2ZykgewogCSRiYXRjaF9hdmd7JHJpbmd9IC89ICRiYXRjaF9jb3VudHskcmluZ307CiAJ JGJhdGNoX3RvdGFsX2F2Z3skcmluZ30gLz0gJGJhdGNoX2NvdW50eyRyaW5nfTsKQEAgLTYxNiw3 ICs2MDEsNyBAQCBmb3JlYWNoIG15ICRnaWQgKHNvcnQga2V5cyAlcmluZ3MpIHsKIAlteSAoQHNf LCBAZV8pOwogCiAJIyBFeHRyYWN0IGFsbCBHUFUgYnVzeSBpbnRlcnZhbHMgYW5kIHNvcnQgdGhl bS4KLQlmb3JlYWNoIG15ICRrZXkgKHNvcnQgeyRkYnskYX0tPnsnc3RhcnQnfSA8PT4gJGRieyRi fS0+eydzdGFydCd9fSBrZXlzICVkYikgeworCWZvcmVhY2ggbXkgJGtleSAoQHNvcnRlZF9rZXlz KSB7CiAJCW5leHQgdW5sZXNzICRkYnska2V5fS0+eydyaW5nJ30gPT0gJHJpbmc7CiAJCXB1c2gg QHNfLCAkZGJ7JGtleX0tPnsnc3RhcnQnfTsKIAkJcHVzaCBAZV8sICRkYnska2V5fS0+eydlbmQn fTsKQEAgLTY2MCw3ICs2NDUsNyBAQCBteSBAZ3B1X2ludGVydmFsczsKIG15IChAc18sIEBlXyk7 CiAKICMgRXh0cmFjdCBhbGwgR1BVIGJ1c3kgaW50ZXJ2YWxzIGFuZCBzb3J0IHRoZW0uCi1mb3Jl YWNoIG15ICRrZXkgKHNvcnQgeyRkYnskYX0tPnsnc3RhcnQnfSA8PT4gJGRieyRifS0+eydzdGFy dCd9fSBrZXlzICVkYikgeworZm9yZWFjaCBteSAka2V5IChAc29ydGVkX2tleXMpIHsKIAlwdXNo IEBzXywgJGRieyRrZXl9LT57J3N0YXJ0J307CiAJcHVzaCBAZV8sICRkYnska2V5fS0+eydlbmQn fTsKIAlkaWUgaWYgJGRieyRrZXl9LT57J3N0YXJ0J30gPiAkZGJ7JGtleX0tPnsnZW5kJ307Ci0t IAoyLjE0LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=