From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Wed, 8 May 2019 13:10:40 +0100 Message-Id: <20190508121058.27038-4-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190508121058.27038-1-tvrtko.ursulin@linux.intel.com> References: <20190508121058.27038-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 03/21] trace.pl: Virtual engine support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org, Tvrtko Ursulin List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkFkZCB2aXJ0 dWFsL3F1ZXVlIHRpbWVsaW5lcyB0byBib3RoIHN0ZG91dCBhbmQgSFRNTCBvdXRwdXQuCgpBIG5l dyB0aW1lbGluZSBpcyBjcmVhdGVkIGZvciBlYWNoIHF1ZXVlL3ZpcnR1YWwgZW5naW5lIHRvIGRp c3BsYXkKYXNzb2NpYXRlZCByZXF1ZXN0cyBpbiBxdWV1ZWQgYW5kIHJ1bm5hYmxlIHN0YXRlcy4g T25jZSByZXF1ZXN0cyBhcmUKc3VibWl0dGVkIHRvIGEgcmVhbCBlbmdpbmUgZm9yIGV4ZWN1dGlu ZyB0aGV5IHNob3cgdXAgb24gdGhlIHBoeXNpY2FsCmVuZ2luZSB0aW1lbGluZS4KClNpZ25lZC1v ZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBzY3JpcHRzL3RyYWNlLnBs IHwgMjM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiAx IGZpbGUgY2hhbmdlZCwgMjA4IGluc2VydGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NjcmlwdHMvdHJhY2UucGwgYi9zY3JpcHRzL3RyYWNlLnBsCmluZGV4IDk1ZGMzYTY0 NWU4ZS4uNmNjMzMyYmI2ZTJhIDEwMDc1NQotLS0gYS9zY3JpcHRzL3RyYWNlLnBsCisrKyBiL3Nj cmlwdHMvdHJhY2UucGwKQEAgLTI3LDExICsyNywxNiBAQCB1c2Ugd2FybmluZ3M7CiB1c2UgNS4w MTA7CiAKIG15ICRnaWQgPSAwOwotbXkgKCVkYiwgJXF1ZXVlLCAlc3VibWl0LCAlbm90aWZ5LCAl cmluZ3MsICVjdHhkYiwgJXJpbmdtYXAsICVyZXF3YWl0LAorbXkgKCVkYiwgJXZkYiwgJXF1ZXVl LCAlc3VibWl0LCAlbm90aWZ5LCAlcmluZ3MsICVjdHhkYiwgJXJpbmdtYXAsICVyZXF3YWl0LAog ICAgICVjdHh0aW1lbGluZXMsICVjdHhlbmdpbmVzKTsKK215ICglY2lkcywgJWN0eG1hcCk7Citt eSAkY2lkID0gMDsKK215ICVxdWV1ZXM7CiBteSBAZnJlcXM7CiAKLW15ICRtYXhfaXRlbXMgPSAz MDAwOwordXNlIGNvbnN0YW50IFZFTkcgPT4gJzI1NToyNTQnOworCitteSAkbWF4X3JlcXVlc3Rz ID0gMTAwMDsKIG15ICR3aWR0aF91cyA9IDMyMDAwOwogbXkgJGNvcnJlY3RfZHVyYXRpb25zID0g MDsKIG15ICVpZ25vcmVfcmluZzsKQEAgLTE4MSwyMSArMTg2LDIxIEBAIHN1YiBhcmdfdHJhY2UK IAlyZXR1cm4gQF87CiB9CiAKLXN1YiBhcmdfbWF4X2l0ZW1zCitzdWIgYXJnX21heF9yZXF1ZXN0 cwogewogCW15ICR2YWw7CiAKIAlyZXR1cm4gdW5sZXNzIHNjYWxhcihAXyk7CiAKLQlpZiAoJF9b MF0gZXEgJy0tbWF4LWl0ZW1zJyBvciAkX1swXSBlcSAnLW0nKSB7CisJaWYgKCRfWzBdIGVxICct LW1heC1yZXF1ZXN0cycgb3IgJF9bMF0gZXEgJy1tJykgewogCQlzaGlmdCBAXzsKIAkJJHZhbCA9 IHNoaWZ0IEBfOwotCX0gZWxzaWYgKCRfWzBdID1+IC8tLW1heC1pdGVtcz0oXGQrKS8pIHsKKwl9 IGVsc2lmICgkX1swXSA9fiAvLS1tYXgtcmVxdWVzdHM9KFxkKykvKSB7CiAJCXNoaWZ0IEBfOwog CQkkdmFsID0gJDE7CiAJfQogCi0JJG1heF9pdGVtcyA9IGludCgkdmFsKSBpZiBkZWZpbmVkICR2 YWw7CisJJG1heF9yZXF1ZXN0cyA9IGludCgkdmFsKSBpZiBkZWZpbmVkICR2YWw7CiAKIAlyZXR1 cm4gQF87CiB9CkBAIC0yOTIsNyArMjk3LDcgQEAgd2hpbGUgKEBhcmdzKSB7CiAJQGFyZ3MgPSBh cmdfYXZnX2RlbGF5X3N0YXRzKEBhcmdzKTsKIAlAYXJncyA9IGFyZ19ncHVfdGltZWxpbmUoQGFy Z3MpOwogCUBhcmdzID0gYXJnX3RyYWNlKEBhcmdzKTsKLQlAYXJncyA9IGFyZ19tYXhfaXRlbXMo QGFyZ3MpOworCUBhcmdzID0gYXJnX21heF9yZXF1ZXN0cyhAYXJncyk7CiAJQGFyZ3MgPSBhcmdf em9vbV93aWR0aChAYXJncyk7CiAJQGFyZ3MgPSBhcmdfc3BsaXRfcmVxdWVzdHMoQGFyZ3MpOwog CUBhcmdzID0gYXJnX2lnbm9yZV9yaW5nKEBhcmdzKTsKQEAgLTMyNCw2ICszMjksMTMgQEAgc3Vi IHNhbml0aXplX2N0eAogCX0KIH0KIAorc3ViIGlzX3ZlbmcKK3sKKwlteSAoJGNsYXNzLCAkaW5z dGFuY2UpID0gc3BsaXQgJzonLCBzaGlmdDsKKworCXJldHVybiAkaW5zdGFuY2UgZXEgJzI1NCc7 Cit9CisKICMgTWFpbiBpbnB1dCBsb29wIC0gcGFyc2UgbGluZXMgYW5kIGJ1aWxkIHRoZSBpbnRl cm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUKICMgdHJhY2UgdXNpbmcgYSBoYXNoIG9mIHJlcXVl c3RzIGFuZCBzb21lIGF1eGlsbGlhcnkgZGF0YSBzdHJ1Y3R1cmVzLgogbXkgJHByZXZfZnJlcSA9 IDA7CkBAIC0zNjYsNiArMzc4LDcgQEAgd2hpbGUgKDw+KSB7CiAJCQkkY3R4ID0gJHRweydjdHgn fTsKIAkJCSRvcmlnX2N0eCA9ICRjdHg7CiAJCQkkY3R4ID0gc2FuaXRpemVfY3R4KCRjdHgsICRy aW5nKTsKKwkJCSRyaW5nID0gVkVORyBpZiBpc192ZW5nKCRyaW5nKTsKIAkJCSRrZXkgPSBkYl9r ZXkoJHJpbmcsICRjdHgsICRzZXFubyk7CiAJCX0KIAl9CkBAIC0zNzQsNiArMzg3LDcgQEAgd2hp bGUgKDw+KSB7CiAJCW15ICVydzsKIAogCQluZXh0IGlmIGV4aXN0cyAkcmVxd2FpdHska2V5fTsK KwkJZGllIGlmICRyaW5nIGVxIFZFTkcgYW5kIG5vdCBleGlzdHMgJHF1ZXVlc3skY3R4fTsKIAog CQkkcnd7J2tleSd9ID0gJGtleTsKIAkJJHJ3eydyaW5nJ30gPSAkcmluZzsKQEAgLTM4Miw5ICsz OTYsMTkgQEAgd2hpbGUgKDw+KSB7CiAJCSRyd3snc3RhcnQnfSA9ICR0aW1lOwogCQkkcmVxd2Fp dHska2V5fSA9IFwlcnc7CiAJfSBlbHNpZiAoJHRwX25hbWUgZXEgJ2k5MTU6aTkxNV9yZXF1ZXN0 X3dhaXRfZW5kOicpIHsKLQkJbmV4dCB1bmxlc3MgZXhpc3RzICRyZXF3YWl0eyRrZXl9OworCQlk aWUgaWYgJHJpbmcgZXEgVkVORyBhbmQgbm90IGV4aXN0cyAkcXVldWVzeyRjdHh9OwogCi0JCSRy ZXF3YWl0eyRrZXl9LT57J2VuZCd9ID0gJHRpbWU7CisJCWlmIChleGlzdHMgJHJlcXdhaXR7JGtl eX0pIHsKKwkJCSRyZXF3YWl0eyRrZXl9LT57J2VuZCd9ID0gJHRpbWU7CisJCX0gZWxzZSB7ICMg VmlydHVhbCBlbmdpbmUKKwkJCW15ICR2a2V5ID0gZGJfa2V5KFZFTkcsICRjdHgsICRzZXFubyk7 CisKKwkJCWRpZSB1bmxlc3MgZXhpc3RzICRyZXF3YWl0eyR2a2V5fTsKKworCQkJIyBJZiB0aGUg d2FpdCBzdGFydGVkIG9uIHRoZSB2aXJ0dWFsIGVuZ2luZSwgYXR0cmlidXRlCisJCQkjIGl0IHRv IGl0IGNvbXBsZXRlbHkuCisJCQkkcmVxd2FpdHskdmtleX0tPnsnZW5kJ30gPSAkdGltZTsKKwkJ fQogCX0gZWxzaWYgKCR0cF9uYW1lIGVxICdpOTE1Omk5MTVfcmVxdWVzdF9hZGQ6JykgewogCQlp ZiAoZXhpc3RzICRxdWV1ZXska2V5fSkgewogCQkJJGN0eGRieyRvcmlnX2N0eH0rKzsKQEAgLTM5 NSwxOSArNDE5LDUyIEBAIHdoaWxlICg8PikgewogCQl9CiAKIAkJJHF1ZXVleyRrZXl9ID0gJHRp bWU7CisJCWlmICgkcmluZyBlcSBWRU5HIGFuZCBub3QgZXhpc3RzICRxdWV1ZXN7JGN0eH0pIHsK KwkJCSRxdWV1ZXN7JGN0eH0gPSAxIDsKKwkJCSRjaWRzeyRjdHh9ID0gJGNpZCsrOworCQkJJGN0 eG1hcHskY2lkc3skY3R4fX0gPSAkY3R4OworCQl9CiAJfSBlbHNpZiAoJHRwX25hbWUgZXEgJ2k5 MTU6aTkxNV9yZXF1ZXN0X3N1Ym1pdDonKSB7CiAJCWRpZSBpZiBleGlzdHMgJHN1Ym1pdHska2V5 fTsKIAkJZGllIHVubGVzcyBleGlzdHMgJHF1ZXVleyRrZXl9OworCQlkaWUgaWYgJHJpbmcgZXEg VkVORyBhbmQgbm90IGV4aXN0cyAkcXVldWVzeyRjdHh9OwogCiAJCSRzdWJtaXR7JGtleX0gPSAk dGltZTsKIAl9IGVsc2lmICgkdHBfbmFtZSBlcSAnaTkxNTppOTE1X3JlcXVlc3RfaW46Jykgewor CQlteSAoJHEsICRzKTsKIAkJbXkgJXJlcTsKIAogCQkjIHByZWVtcHRpb24KIAkJZGVsZXRlICRk Ynska2V5fSBpZiBleGlzdHMgJGRieyRrZXl9OwogCi0JCWRpZSB1bmxlc3MgZXhpc3RzICRxdWV1 ZXska2V5fTsKLQkJZGllIHVubGVzcyBleGlzdHMgJHN1Ym1pdHska2V5fTsKKwkJdW5sZXNzIChl eGlzdHMgJHF1ZXVleyRrZXl9KSB7CisJCQkjIFZpcnR1YWwgZW5naW5lCisJCQlteSAkdmtleSA9 IGRiX2tleShWRU5HLCAkY3R4LCAkc2Vxbm8pOworCQkJbXkgJXJlcTsKKworCQkJZGllIHVubGVz cyBleGlzdHMgJHF1ZXVlc3skY3R4fTsKKwkJCWRpZSB1bmxlc3MgZXhpc3RzICRxdWV1ZXskdmtl eX07CisJCQlkaWUgdW5sZXNzIGV4aXN0cyAkc3VibWl0eyR2a2V5fTsKKworCQkJIyBDcmVhdGUg c2VwYXJhdGUgcmVxdWVzdCByZWNvcmQgb24gdGhlIHF1ZXVlIHRpbWVsaW5lCisJCQkkcSA9ICRx dWV1ZXskdmtleX07CisJCQkkcyA9ICRzdWJtaXR7JHZrZXl9OworCQkJJHJlcXsncXVldWUnfSA9 ICRxOworCQkJJHJlcXsnc3VibWl0J30gPSAkczsKKwkJCSRyZXF7J3N0YXJ0J30gPSAkdGltZTsK KwkJCSRyZXF7J2VuZCd9ID0gJHRpbWU7CisJCQkkcmVxeydyaW5nJ30gPSBWRU5HOworCQkJJHJl cXsnc2Vxbm8nfSA9ICRzZXFubzsKKwkJCSRyZXF7J2N0eCd9ID0gJGN0eDsKKwkJCSRyZXF7J25h bWUnfSA9ICRjdHggLiAnLycgLiAkc2Vxbm87CisJCQkkcmVxeydnbG9iYWwnfSA9ICR0cHsnZ2xv YmFsJ307CisJCQkkcmVxeydwb3J0J30gPSAkdHB7J3BvcnQnfTsKKworCQkJJHZkYnskdmtleX0g PSBcJXJlcTsKKwkJfSBlbHNlIHsKKwkJCSRxID0gJHF1ZXVleyRrZXl9OworCQkJJHMgPSAkc3Vi bWl0eyRrZXl9OworCQl9CiAKIAkJJHJlcXsnc3RhcnQnfSA9ICR0aW1lOwogCQkkcmVxeydyaW5n J30gPSAkcmluZzsKQEAgLTQxOSw4ICs0NzYsOSBAQCB3aGlsZSAoPD4pIHsKIAkJJHJlcXsnbmFt ZSd9ID0gJGN0eCAuICcvJyAuICRzZXFubzsKIAkJJHJlcXsnZ2xvYmFsJ30gPSAkdHB7J2dsb2Jh bCd9OwogCQkkcmVxeydwb3J0J30gPSAkdHB7J3BvcnQnfTsKLQkJJHJlcXsncXVldWUnfSA9ICRx dWV1ZXska2V5fTsKLQkJJHJlcXsnc3VibWl0J30gPSAkc3VibWl0eyRrZXl9OworCQkkcmVxeydx dWV1ZSd9ID0gJHE7CisJCSRyZXF7J3N1Ym1pdCd9ID0gJHM7CisJCSRyZXF7J3ZpcnR1YWwnfSA9 IDEgaWYgZXhpc3RzICRxdWV1ZXN7JGN0eH07CiAJCSRyaW5nc3skcmluZ30gPSAkZ2lkKysgdW5s ZXNzIGV4aXN0cyAkcmluZ3N7JHJpbmd9OwogCQkkcmluZ21hcHskcmluZ3N7JHJpbmd9fSA9ICRy aW5nOwogCQkkZGJ7JGtleX0gPSBcJXJlcTsKQEAgLTcyMCw4ICs3NzgsMTAgQEAgZm9yZWFjaCBt eSAka2V5IChAc29ydGVkX2tleXMpIHsKIAogCSRydW5uaW5neyRyaW5nfSArPSAkZW5kIC0gJHN0 YXJ0IGlmICRjb3JyZWN0X2R1cmF0aW9ucyBvcgogCQkJCQkgICAgbm90IGV4aXN0cyAkZGJ7JGtl eX0tPnsnbm8tZW5kJ307Ci0JJHJ1bm5hYmxleyRyaW5nfSArPSAkZGJ7JGtleX0tPnsnZXhlY3V0 ZS1kZWxheSd9OwotCSRxdWV1ZWR7JHJpbmd9ICs9ICRzdGFydCAtICRkYnska2V5fS0+eydleGVj dXRlLWRlbGF5J30gLSAkZGJ7JGtleX0tPnsncXVldWUnfTsKKwl1bmxlc3MgKGV4aXN0cyAkZGJ7 JGtleX0tPnsndmlydHVhbCd9KSB7CisJCSRydW5uYWJsZXskcmluZ30gKz0gJGRieyRrZXl9LT57 J2V4ZWN1dGUtZGVsYXknfTsKKwkJJHF1ZXVlZHskcmluZ30gKz0gJHN0YXJ0IC0gJGRieyRrZXl9 LT57J2V4ZWN1dGUtZGVsYXknfSAtICRkYnska2V5fS0+eydxdWV1ZSd9OworCX0KIAogCSRiYXRj aF9jb3VudHskcmluZ30rKzsKIApAQCAtODQwLDYgKzkwMCwxMiBAQCBmb3JlYWNoIG15ICRrZXkg KGtleXMgJXJlcXdhaXQpIHsKIAkkcmVxd3skcmVxd2FpdHska2V5fS0+eydyaW5nJ319ICs9ICRy ZXF3YWl0eyRrZXl9LT57J2VuZCd9IC0gJHJlcXdhaXR7JGtleX0tPnsnc3RhcnQnfTsKIH0KIAor IyBBZGQgdXAgYWxsIHJlcXVlc3Qgd2FpdHMgcGVyIHZpcnR1YWwgZW5naW5lCitteSAldnJlcXc7 Citmb3JlYWNoIG15ICRrZXkgKGtleXMgJXJlcXdhaXQpIHsKKwkkdnJlcXd7JHJlcXdhaXR7JGtl eX0tPnsnY3R4J319ICs9ICRyZXF3YWl0eyRrZXl9LT57J2VuZCd9IC0gJHJlcXdhaXR7JGtleX0t Pnsnc3RhcnQnfTsKK30KKwogc2F5IHNwcmludGYoJ0dQVTogJS4yZiUlIGlkbGUsICUuMmYlJSBi dXN5JywKIAkgICAgICRmbGF0X2J1c3l7J2dwdS1pZGxlJ30sICRmbGF0X2J1c3l7J2dwdS1idXN5 J30pIHVubGVzcyAkaHRtbDsKIApAQCAtOTYxLDE4ICsxMDI3LDI0IEBAIEVOREhUTUwKIHN1YiBo dG1sX3N0YXRzCiB7CiAJbXkgKCRzdGF0cywgJGdyb3VwLCAkaWQpID0gQF87CisJbXkgJHZlbmcg PSBleGlzdHMgJHN0YXRzLT57J3ZpcnR1YWwnfSA/IDEgOiAwOwogCW15ICRuYW1lOwogCi0JJG5h bWUgPSAnUmluZycgLiAkZ3JvdXA7CisJJG5hbWUgPSAkdmVuZyA/ICdWaXJ0dWFsJyA6ICdSaW5n JzsKKwkkbmFtZSAuPSAkZ3JvdXA7CiAJJG5hbWUgLj0gJzxicj48c21hbGw+PGJyPic7Ci0JJG5h bWUgLj0gc3ByaW50ZignJS4yZicsICRzdGF0cy0+eydpZGxlJ30pIC4gJyUgaWRsZTxicj48YnI+ JzsKLQkkbmFtZSAuPSBzcHJpbnRmKCclLjJmJywgJHN0YXRzLT57J2J1c3knfSkgLiAnJSBidXN5 PGJyPic7CisJdW5sZXNzICgkdmVuZykgeworCQkkbmFtZSAuPSBzcHJpbnRmKCclLjJmJywgJHN0 YXRzLT57J2lkbGUnfSkgLiAnJSBpZGxlPGJyPjxicj4nOworCQkkbmFtZSAuPSBzcHJpbnRmKCcl LjJmJywgJHN0YXRzLT57J2J1c3knfSkgLiAnJSBidXN5PGJyPic7CisJfQogCSRuYW1lIC49IHNw cmludGYoJyUuMmYnLCAkc3RhdHMtPnsncnVubmFibGUnfSkgLiAnJSBydW5uYWJsZTxicj4nOwog CSRuYW1lIC49IHNwcmludGYoJyUuMmYnLCAkc3RhdHMtPnsncXVldWVkJ30pIC4gJyUgcXVldWVk PGJyPjxicj4nOwogCSRuYW1lIC49IHNwcmludGYoJyUuMmYnLCAkc3RhdHMtPnsnd2FpdCd9KSAu ICclIHdhaXQ8YnI+PGJyPic7CiAJJG5hbWUgLj0gJHN0YXRzLT57J2NvdW50J30gLiAnIGJhdGNo ZXM8YnI+JzsKLQkkbmFtZSAuPSBzcHJpbnRmKCclLjJmJywgJHN0YXRzLT57J2F2Zyd9KSAuICd1 cyBhdmcgYmF0Y2g8YnI+JzsKLQkkbmFtZSAuPSBzcHJpbnRmKCclLjJmJywgJHN0YXRzLT57J3Rv dGFsLWF2Zyd9KSAuICd1cyBhdmcgZW5naW5lIGJhdGNoPGJyPic7CisJdW5sZXNzICgkdmVuZykg eworCQkkbmFtZSAuPSBzcHJpbnRmKCclLjJmJywgJHN0YXRzLT57J2F2Zyd9KSAuICd1cyBhdmcg YmF0Y2g8YnI+JzsKKwkJJG5hbWUgLj0gc3ByaW50ZignJS4yZicsICRzdGF0cy0+eyd0b3RhbC1h dmcnfSkgLiAndXMgYXZnIGVuZ2luZSBiYXRjaDxicj4nOworCX0KIAkkbmFtZSAuPSAnPC9zbWFs bD4nOwogCiAJcHJpbnQgIlx0e2lkOiAkaWQsIGNvbnRlbnQ6ICckbmFtZSd9LFxuIjsKQEAgLTk4 MSwxNyArMTA1MywyNCBAQCBzdWIgaHRtbF9zdGF0cwogc3ViIHN0ZGlvX3N0YXRzCiB7CiAJbXkg KCRzdGF0cywgJGdyb3VwLCAkaWQpID0gQF87CisJbXkgJHZlbmcgPSBleGlzdHMgJHN0YXRzLT57 J3ZpcnR1YWwnfSA/IDEgOiAwOwogCW15ICRzdHI7CiAKLQkkc3RyID0gJ1JpbmcnIC4gJGdyb3Vw IC4gJzogJzsKKwkkc3RyID0gJHZlbmcgPyAnVmlydHVhbCcgOiAnUmluZyc7CisJJHN0ciAuPSAk Z3JvdXAgLiAnOiAnOwogCSRzdHIgLj0gJHN0YXRzLT57J2NvdW50J30gLiAnIGJhdGNoZXMsICc7 Ci0JJHN0ciAuPSBzcHJpbnRmKCclLjJmICglLjJmKSBhdmcgYmF0Y2ggdXMsICcsICRzdGF0cy0+ eydhdmcnfSwgJHN0YXRzLT57J3RvdGFsLWF2Zyd9KTsKLQkkc3RyIC49IHNwcmludGYoJyUuMmYn LCAkc3RhdHMtPnsnaWRsZSd9KSAuICclIGlkbGUsICc7Ci0JJHN0ciAuPSBzcHJpbnRmKCclLjJm JywgJHN0YXRzLT57J2J1c3knfSkgLiAnJSBidXN5LCAnOworCXVubGVzcyAoJHZlbmcpIHsKKwkJ JHN0ciAuPSBzcHJpbnRmKCclLjJmICglLjJmKSBhdmcgYmF0Y2ggdXMsICcsCisJCQkJJHN0YXRz LT57J2F2Zyd9LCAkc3RhdHMtPnsndG90YWwtYXZnJ30pOworCQkkc3RyIC49IHNwcmludGYoJyUu MmYnLCAkc3RhdHMtPnsnaWRsZSd9KSAuICclIGlkbGUsICc7CisJCSRzdHIgLj0gc3ByaW50Zign JS4yZicsICRzdGF0cy0+eydidXN5J30pIC4gJyUgYnVzeSwgJzsKKwl9CisKIAkkc3RyIC49IHNw cmludGYoJyUuMmYnLCAkc3RhdHMtPnsncnVubmFibGUnfSkgLiAnJSBydW5uYWJsZSwgJzsKIAkk c3RyIC49IHNwcmludGYoJyUuMmYnLCAkc3RhdHMtPnsncXVldWVkJ30pIC4gJyUgcXVldWVkLCAn OwogCSRzdHIgLj0gc3ByaW50ZignJS4yZicsICRzdGF0cy0+eyd3YWl0J30pIC4gJyUgd2FpdCc7 Ci0JaWYgKCRhdmdfZGVsYXlfc3RhdHMpIHsKKworCWlmICgkYXZnX2RlbGF5X3N0YXRzIGFuZCBu b3QgJHZlbmcpIHsKIAkJJHN0ciAuPSAnLCBzdWJtaXQvZXhlY3V0ZS9zYXZlLWF2Zz0oJzsKIAkJ JHN0ciAuPSBzcHJpbnRmKCclLjJmLyUuMmYvJS4yZiknLCAkc3RhdHMtPnsnc3VibWl0J30sICRz dGF0cy0+eydleGVjdXRlJ30sICRzdGF0cy0+eydzYXZlJ30pOwogCX0KQEAgLTEwMTMsOCArMTA5 MiwxNiBAQCBmb3JlYWNoIG15ICRncm91cCAoc29ydCBrZXlzICVyaW5ncykgewogCiAJJHN0YXRz eydpZGxlJ30gPSAoMS4wIC0gJGZsYXRfYnVzeXskcmluZ30gLyAkZWxhcHNlZCkgKiAxMDAuMDsK IAkkc3RhdHN7J2J1c3knfSA9ICRydW5uaW5neyRyaW5nfSAvICRlbGFwc2VkICogMTAwLjA7Ci0J JHN0YXRzeydydW5uYWJsZSd9ID0gJHJ1bm5hYmxleyRyaW5nfSAvICRlbGFwc2VkICogMTAwLjA7 Ci0JJHN0YXRzeydxdWV1ZWQnfSA9ICRxdWV1ZWR7JHJpbmd9IC8gJGVsYXBzZWQgKiAxMDAuMDsK KwlpZiAoZXhpc3RzICRydW5uYWJsZXskcmluZ30pIHsKKwkJJHN0YXRzeydydW5uYWJsZSd9ID0g JHJ1bm5hYmxleyRyaW5nfSAvICRlbGFwc2VkICogMTAwLjA7CisJfSBlbHNlIHsKKwkJJHN0YXRz eydydW5uYWJsZSd9ID0gMDsKKwl9CisJaWYgKGV4aXN0cyAkcXVldWVkeyRyaW5nfSkgeworCQkk c3RhdHN7J3F1ZXVlZCd9ID0gJHF1ZXVlZHskcmluZ30gLyAkZWxhcHNlZCAqIDEwMC4wOworCX0g ZWxzZSB7CisJCSRzdGF0c3sncXVldWVkJ30gPSAwOworCX0KIAkkcmVxd3skcmluZ30gPSAwIHVu bGVzcyBleGlzdHMgJHJlcXd7JHJpbmd9OwogCSRzdGF0c3snd2FpdCd9ID0gJHJlcXd7JHJpbmd9 IC8gJGVsYXBzZWQgKiAxMDAuMDsKIAkkc3RhdHN7J2NvdW50J30gPSAkYmF0Y2hfY291bnR7JHJp bmd9OwpAQCAtMTAzMSw2ICsxMTE4LDU5IEBAIGZvcmVhY2ggbXkgJGdyb3VwIChzb3J0IGtleXMg JXJpbmdzKSB7CiAJfQogfQogCitzdWIgc29ydFZRdWV1ZSB7CisJbXkgJGFzID0gJHZkYnskYX0t PnsncXVldWUnfTsKKwlteSAkYnMgPSAkdmRieyRifS0+eydxdWV1ZSd9OworCW15ICR2YWw7CisK KwkkdmFsID0gJGFzIDw9PiAkYnM7CisJJHZhbCA9ICRhIGNtcCAkYiBpZiAkdmFsID09IDA7CisK KwlyZXR1cm4gJHZhbDsKK30KKworbXkgQHNvcnRlZF92a2V5cyA9IHNvcnQgc29ydFZRdWV1ZSBr ZXlzICV2ZGI7CitteSAoJXZxdWV1ZWQsICV2cnVubmFibGUpOworCitmb3JlYWNoIG15ICRrZXkg KEBzb3J0ZWRfdmtleXMpIHsKKwlteSAkY3R4ID0gJHZkYnska2V5fS0+eydjdHgnfTsKKworCSR2 ZGJ7JGtleX0tPnsnc3VibWl0LWRlbGF5J30gPSAkdmRieyRrZXl9LT57J3N1Ym1pdCd9IC0gJHZk Ynska2V5fS0+eydxdWV1ZSd9OworCSR2ZGJ7JGtleX0tPnsnZXhlY3V0ZS1kZWxheSd9ID0gJHZk Ynska2V5fS0+eydzdGFydCd9IC0gJHZkYnska2V5fS0+eydzdWJtaXQnfTsKKworCSR2cXVldWVk eyRjdHh9ICs9ICR2ZGJ7JGtleX0tPnsnc3VibWl0LWRlbGF5J307CisJJHZydW5uYWJsZXskY3R4 fSArPSAkdmRieyRrZXl9LT57J2V4ZWN1dGUtZGVsYXknfTsKK30KKworbXkgJHZlbmdfaWQgPSAk ZW5naW5lX3N0YXJ0X2lkICsgc2NhbGFyKGtleXMgJXJpbmdzKTsKKworZm9yZWFjaCBteSAkY2lk IChzb3J0IGtleXMgJWN0eG1hcCkgeworCW15ICRjdHggPSAkY3R4bWFweyRjaWR9OworCW15ICRl bGFwc2VkID0gJGxhc3RfdHMgLSAkZmlyc3RfdHM7CisJbXkgJXN0YXRzOworCisJJHN0YXRzeyd2 aXJ0dWFsJ30gPSAxOworCWlmIChleGlzdHMgJHZydW5uYWJsZXskY3R4fSkgeworCQkkc3RhdHN7 J3J1bm5hYmxlJ30gPSAkdnJ1bm5hYmxleyRjdHh9IC8gJGVsYXBzZWQgKiAxMDAuMDsKKwl9IGVs c2UgeworCQkkc3RhdHN7J3J1bm5hYmxlJ30gPSAwOworCX0KKwlpZiAoZXhpc3RzICR2cXVldWVk eyRjdHh9KSB7CisJCSRzdGF0c3sncXVldWVkJ30gPSAkdnF1ZXVlZHskY3R4fSAvICRlbGFwc2Vk ICogMTAwLjA7CisJfSBlbHNlIHsKKwkJJHN0YXRzeydxdWV1ZWQnfSA9IDA7CisJfQorCSR2cmVx d3skY3R4fSA9IDAgdW5sZXNzIGV4aXN0cyAkdnJlcXd7JGN0eH07CisJJHN0YXRzeyd3YWl0J30g PSAkdnJlcXd7JGN0eH0gLyAkZWxhcHNlZCAqIDEwMC4wOworCSRzdGF0c3snY291bnQnfSA9IHNj YWxhcihncmVwIHskY3R4ID09ICR2ZGJ7JF99LT57J2N0eCd9fSBrZXlzICV2ZGIpOworCisJaWYg KCRodG1sKSB7CisJCWh0bWxfc3RhdHMoXCVzdGF0cywgJGNpZCwgJHZlbmdfaWQrKyk7CisJfSBl bHNlIHsKKwkJc3RkaW9fc3RhdHMoXCVzdGF0cywgJGNpZCwgJHZlbmdfaWQrKyk7CisJfQorfQor CiBleGl0IDAgdW5sZXNzICRodG1sOwogCiBwcmludCA8PEVOREhUTUw7CkBAIC0xMTM0LDYgKzEy NzQsNyBAQCBzdWIgYm94X3N0eWxlCiB9CiAKIG15ICRpID0gMDsKK215ICRyZXEgPSAwOwogZm9y ZWFjaCBteSAka2V5IChzb3J0IHNvcnRRdWV1ZSBrZXlzICVkYikgewogCW15ICgkbmFtZSwgJGN0 eCwgJHNlcW5vKSA9ICgkZGJ7JGtleX0tPnsnbmFtZSd9LCAkZGJ7JGtleX0tPnsnY3R4J30sICRk Ynska2V5fS0+eydzZXFubyd9KTsKIAlteSAoJHF1ZXVlLCAkc3RhcnQsICRub3RpZnksICRlbmQp ID0gKCRkYnska2V5fS0+eydxdWV1ZSd9LCAkZGJ7JGtleX0tPnsnc3RhcnQnfSwgJGRieyRrZXl9 LT57J25vdGlmeSd9LCAkZGJ7JGtleX0tPnsnZW5kJ30pOwpAQCAtMTE0Nyw3ICsxMjg4LDcgQEAg Zm9yZWFjaCBteSAka2V5IChzb3J0IHNvcnRRdWV1ZSBrZXlzICVkYikgewogCW15ICRza2V5Owog CiAJIyBzdWJtaXQgdG8gZXhlY3V0ZQotCXVubGVzcyAoZXhpc3RzICRza2lwX2JveHsncXVldWUn fSkgeworCXVubGVzcyAoZXhpc3RzICRza2lwX2JveHsncXVldWUnfSBvciBleGlzdHMgJGRieyRr ZXl9LT57J3ZpcnR1YWwnfSkgewogCQkkc2tleSA9IDIgKiAkbWF4X3NlcW5vICogJGN0eCArIDIg KiAkc2Vxbm87CiAJCSRzdHlsZSA9IGJveF9zdHlsZSgkY3R4LCAncXVldWUnKTsKIAkJJGNvbnRl bnQgPSAiJG5hbWU8YnI+JGRieyRrZXl9LT57J3N1Ym1pdC1kZWxheSd9dXMgPHNtYWxsPigkZGJ7 JGtleX0tPnsnZXhlY3V0ZS1kZWxheSd9dXMpPC9zbWFsbD4iOwpAQCAtMTE1OCw3ICsxMjk5LDcg QEAgZm9yZWFjaCBteSAka2V5IChzb3J0IHNvcnRRdWV1ZSBrZXlzICVkYikgewogCiAJIyBleGVj dXRlIHRvIHN0YXJ0CiAJJGVuZ2luZV9zdGFydCA9ICRkYnska2V5fS0+eydzdGFydCd9IHVubGVz cyBkZWZpbmVkICRlbmdpbmVfc3RhcnQ7Ci0JdW5sZXNzIChleGlzdHMgJHNraXBfYm94eydyZWFk eSd9KSB7CisJdW5sZXNzIChleGlzdHMgJHNraXBfYm94eydyZWFkeSd9IG9yIGV4aXN0cyAkZGJ7 JGtleX0tPnsndmlydHVhbCd9KSB7CiAJCSRza2V5ID0gMiAqICRtYXhfc2Vxbm8gKiAkY3R4ICsg MiAqICRzZXFubyArIDE7CiAJCSRzdHlsZSA9IGJveF9zdHlsZSgkY3R4LCAncmVhZHknKTsKIAkJ JGNvbnRlbnQgPSAiPHNtYWxsPiRuYW1lPGJyPiRkYnska2V5fS0+eydleGVjdXRlLWRlbGF5J311 czwvc21hbGw+IjsKQEAgLTExOTksNyArMTM0MCw3IEBAIGZvcmVhY2ggbXkgJGtleSAoc29ydCBz b3J0UXVldWUga2V5cyAlZGIpIHsKIAogCSRsYXN0X3RzID0gJGVuZDsKIAotCWxhc3QgaWYgJGkg PiAkbWF4X2l0ZW1zOworCWxhc3QgaWYgKyskcmVxID4gJG1heF9yZXF1ZXN0czsKIH0KIAogcHVz aCBAZnJlcXMsIFskcHJldl9mcmVxX3RzLCAkbGFzdF90cywgJHByZXZfZnJlcV0gaWYgJHByZXZf ZnJlcTsKQEAgLTEyMzIsNiArMTM3Myw0MyBAQCBpZiAoJGdwdV90aW1lbGluZSkgewogCX0KIH0K IAorJHJlcSA9IDA7CiskdmVuZ19pZCA9ICRlbmdpbmVfc3RhcnRfaWQgKyBzY2FsYXIoa2V5cyAl cmluZ3MpOworZm9yZWFjaCBteSAka2V5IChAc29ydGVkX3ZrZXlzKSB7CisJbXkgKCRuYW1lLCAk Y3R4LCAkc2Vxbm8pID0gKCR2ZGJ7JGtleX0tPnsnbmFtZSd9LCAkdmRieyRrZXl9LT57J2N0eCd9 LCAkdmRieyRrZXl9LT57J3NlcW5vJ30pOworCW15ICRxdWV1ZSA9ICR2ZGJ7JGtleX0tPnsncXVl dWUnfTsKKwlteSAkc3VibWl0ID0gJHZkYnska2V5fS0+eydzdWJtaXQnfTsKKwlteSAkZW5naW5l X3N0YXJ0ID0gJGRieyRrZXl9LT57J2VuZ2luZS1zdGFydCd9OworCW15ICgkY29udGVudCwgJHN0 eWxlLCAkc3RhcnRlbmQsICRza2V5KTsKKwlteSAkZ3JvdXAgPSAkdmVuZ19pZCArICRjaWRzeyRj dHh9OworCW15ICRzdWJncm91cCA9ICRjdHggLSAkbWluX2N0eDsKKwlteSAkdHlwZSA9ICcgdHlw ZTogXCdyYW5nZVwnLCc7CisJbXkgJGR1cmF0aW9uOworCisJIyBzdWJtaXQgdG8gZXhlY3V0ZQor CXVubGVzcyAoZXhpc3RzICRza2lwX2JveHsncXVldWUnfSkgeworCQkkc2tleSA9IDIgKiAkbWF4 X3NlcW5vICogJGN0eCArIDIgKiAkc2Vxbm87CisJCSRzdHlsZSA9IGJveF9zdHlsZSgkY3R4LCAn cXVldWUnKTsKKwkJJGNvbnRlbnQgPSAiJG5hbWU8YnI+JHZkYnska2V5fS0+eydzdWJtaXQtZGVs YXknfXVzIDxzbWFsbD4oJHZkYnska2V5fS0+eydleGVjdXRlLWRlbGF5J311cyk8L3NtYWxsPiI7 CisJCSRzdGFydGVuZCA9ICdzdGFydDogJyAuICRxdWV1ZSAuICcsIGVuZDogJyAuICRzdWJtaXQ7 CisJCXByaW50ICJcdHtpZDogJGksIGtleTogJHNrZXksICR0eXBlIGdyb3VwOiAkZ3JvdXAsIHN1 Ymdyb3VwOiAkc3ViZ3JvdXAsIHN1Ymdyb3VwT3JkZXI6ICRzdWJncm91cCwgY29udGVudDogJyRj b250ZW50JywgJHN0YXJ0ZW5kLCBzdHlsZTogXCckc3R5bGVcJ30sXG4iOworCQkkaSsrOworCX0K KworCSMgZXhlY3V0ZSB0byBzdGFydAorCSRlbmdpbmVfc3RhcnQgPSAkdmRieyRrZXl9LT57J3N0 YXJ0J30gdW5sZXNzIGRlZmluZWQgJGVuZ2luZV9zdGFydDsKKwl1bmxlc3MgKGV4aXN0cyAkc2tp cF9ib3h7J3JlYWR5J30pIHsKKwkJJHNrZXkgPSAyICogJG1heF9zZXFubyAqICRjdHggKyAyICog JHNlcW5vICsgMTsKKwkJJHN0eWxlID0gYm94X3N0eWxlKCRjdHgsICdyZWFkeScpOworCQkkY29u dGVudCA9ICI8c21hbGw+JG5hbWU8YnI+JHZkYnska2V5fS0+eydleGVjdXRlLWRlbGF5J311czwv c21hbGw+IjsKKwkJJHN0YXJ0ZW5kID0gJ3N0YXJ0OiAnIC4gJHN1Ym1pdCAuICcsIGVuZDogJyAu ICRlbmdpbmVfc3RhcnQ7CisJCXByaW50ICJcdHtpZDogJGksIGtleTogJHNrZXksICR0eXBlIGdy b3VwOiAkZ3JvdXAsIHN1Ymdyb3VwOiAkc3ViZ3JvdXAsIHN1Ymdyb3VwT3JkZXI6ICRzdWJncm91 cCwgY29udGVudDogJyRjb250ZW50JywgJHN0YXJ0ZW5kLCBzdHlsZTogXCckc3R5bGVcJ30sXG4i OworCQkkaSsrOworCX0KKworCWxhc3QgaWYgKyskcmVxID4gJG1heF9yZXF1ZXN0czsKK30KKwog bXkgJGVuZF90cyA9ICRmaXJzdF90cyArICR3aWR0aF91czsKICRmaXJzdF90cyA9ICRmaXJzdF90 czsKIAotLSAKMi4xOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=