From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 45FEB89394 for ; Thu, 16 May 2019 11:28:06 +0000 (UTC) From: Petri Latvala Date: Thu, 16 May 2019 14:27:54 +0300 Message-Id: <20190516112755.28311-1-petri.latvala@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 1/2 v2] runner: Add support for aborting on network failure 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: Tomi Sarvela , Petri Latvala List-ID: SWYgdGhlIG5ldHdvcmsgZ29lcyBkb3duIHdoaWxlIHRlc3RpbmcsIENJIHRlbmRzIHRvIGludGVy cHJldCB0aGF0IGFzCnRoZSBkZXZpY2UgYmVpbmcgZG93biwgY3V0dGluZyBpdHMgcG93ZXIgYWZ0 ZXIgYSB3aGlsZS4gVGhpcyBjYXVzZXMgYW4KaW5jb21wbGV0ZSB0byBhbiBpbm5vY2VudCB0ZXN0 LCBpbmNyZWFzaW5nIG5vaXNlIGluIHRoZSByZXN1bHRzLgoKQSBuZXcgZmxhZyB0byAtLWFib3J0 LW9uLW1vbml0b3JlZC1lcnJvciwgInBpbmciLCB1c2VzIGxpYm9waW5nIHRvCnBpbmcgYSBob3N0 IGNvbmZpZ3VyZWQgaW4gLmlndHJjIHdpdGggb25lIHBpbmcgYWZ0ZXIgZWFjaCB0ZXN0CmV4ZWN1 dGlvbiBhbmQgYWJvcnRzIHRoZSBydW4gaWYgdGhlcmUgaXMgbm8gcmVwbHkgaW4gYSBoYXJkY29k ZWQKYW1vdW50IG9mIHRpbWUuCgp2MjoKIC0gVXNlIGEgaGlnaGVyIHRpbWVvdXQKIC0gQWxsb3cg aG9zdG5hbWUgY29uZmlndXJhdGlvbiBmcm9tIGVudmlyb25tZW50CgpTaWduZWQtb2ZmLWJ5OiBQ ZXRyaSBMYXR2YWxhIDxwZXRyaS5sYXR2YWxhQGludGVsLmNvbT4KQ2M6IEFya2FkaXVzeiBIaWxl ciA8YXJrYWRpdXN6LmhpbGVyQGludGVsLmNvbT4KQ2M6IE1hcnRpbiBQZXJlcyA8bWFydGluLnBl cmVzQGxpbnV4LmludGVsLmNvbT4KQ2M6IFRvbWkgU2FydmVsYSA8dG9taS5wLnNhcnZlbGFAaW50 ZWwuY29tPgotLS0KIG1lc29uLmJ1aWxkICAgICAgICB8ICAgMSArCiBtZXNvbl9vcHRpb25zLnR4 dCAgfCAgIDYgKysKIHJ1bm5lci9leGVjdXRvci5jICB8IDEzNSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIHJ1bm5lci9tZXNvbi5idWlsZCB8ICAxMiArKyst CiBydW5uZXIvc2V0dGluZ3MuYyAgfCAgIDQgKysKIHJ1bm5lci9zZXR0aW5ncy5oICB8ICAgNSAr LQogNiBmaWxlcyBjaGFuZ2VkLCAxNjAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCmluZGV4IGEwNWU5MTJjLi5hYWM2 N2YxYSAxMDA2NDQKLS0tIGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAgLTEwMCw2 ICsxMDAsNyBAQCBidWlsZF90ZXN0cyA9IGdldF9vcHRpb24oJ2J1aWxkX3Rlc3RzJykKIHdpdGhf bGliZHJtID0gZ2V0X29wdGlvbignd2l0aF9saWJkcm0nKQogd2l0aF9saWJ1bndpbmQgPSBnZXRf b3B0aW9uKCd3aXRoX2xpYnVud2luZCcpCiBidWlsZF9ydW5uZXIgPSBnZXRfb3B0aW9uKCdidWls ZF9ydW5uZXInKQord2l0aF9vcGluZyA9IGdldF9vcHRpb24oJ3dpdGhfb3BpbmcnKQogCiBfYnVp bGRfb3ZlcmxheSA9IGJ1aWxkX292ZXJsYXkgIT0gJ2ZhbHNlJwogX292ZXJsYXlfcmVxdWlyZWQg PSBidWlsZF9vdmVybGF5ID09ICd0cnVlJwpkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQg Yi9tZXNvbl9vcHRpb25zLnR4dAppbmRleCA4ODhlZmU1Ni4uOTM1Zjg4M2UgMTAwNjQ0Ci0tLSBh L21lc29uX29wdGlvbnMudHh0CisrKyBiL21lc29uX29wdGlvbnMudHh0CkBAIC01OCw2ICs1OCwx MiBAQCBvcHRpb24oJ2J1aWxkX3J1bm5lcicsCiAgICAgICAgY2hvaWNlcyA6IFsnYXV0bycsICd0 cnVlJywgJ2ZhbHNlJ10sCiAgICAgICAgZGVzY3JpcHRpb24gOiAnQnVpbGQgdGVzdCBydW5uZXIn KQogCitvcHRpb24oJ3dpdGhfb3BpbmcnLAorICAgICAgIHR5cGUgOiAnY29tYm8nLAorICAgICAg IHZhbHVlIDogJ2F1dG8nLAorICAgICAgIGNob2ljZXMgOiBbJ2F1dG8nLCAndHJ1ZScsICdmYWxz ZSddLAorICAgICAgIGRlc2NyaXB0aW9uIDogJ0J1aWxkIGlndF9ydW5uZXIgd2l0aCBsaWJvcGlu ZycpCisKIG9wdGlvbigndXNlX3JwYXRoJywKICAgICAgICB0eXBlIDogJ2Jvb2xlYW4nLAogICAg ICAgIHZhbHVlIDogZmFsc2UsCmRpZmYgLS1naXQgYS9ydW5uZXIvZXhlY3V0b3IuYyBiL3J1bm5l ci9leGVjdXRvci5jCmluZGV4IDdlNWZiZThmLi5iZTc4NDc0YyAxMDA2NDQKLS0tIGEvcnVubmVy L2V4ZWN1dG9yLmMKKysrIGIvcnVubmVyL2V4ZWN1dG9yLmMKQEAgLTEsNiArMSwxMCBAQAogI2lu Y2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxnbGliLmg+CiAj aW5jbHVkZSA8bGludXgvd2F0Y2hkb2cuaD4KKyNpZiBIQVZFX09QSU5HCisjaW5jbHVkZSA8b3Bp bmcuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAj aW5jbHVkZSA8c3RkbGliLmg+CkBAIC0xMDgsNiArMTEyLDEzMyBAQCBzdGF0aWMgdm9pZCBwaW5n X3dhdGNoZG9ncyh2b2lkKQogCX0KIH0KIAorI2lmIEhBVkVfT1BJTkcKK3N0YXRpYyBwaW5nb2Jq X3QgKnBpbmdvYmogPSBOVUxMOworCitzdGF0aWMgYm9vbCBsb2FkX3BpbmdfY29uZmlnX2Zyb21f ZmlsZSh2b2lkKQoreworCWNoYXIgKmtleV9maWxlX2VudiA9IE5VTEw7CisJY2hhciAqa2V5X2Zp bGVfbG9jID0gTlVMTDsKKwlHRXJyb3IgKmVycm9yID0gTlVMTDsKKwlHS2V5RmlsZSAqa2V5X2Zp bGUgPSBOVUxMOworCWNvbnN0IGNoYXIgKnBpbmdfaG9zdG5hbWU7CisJaW50IHJldDsKKworCS8q IERldGVybWluZSBpZ3QgY29uZmlnIHBhdGggKi8KKwlrZXlfZmlsZV9lbnYgPSBnZXRlbnYoIklH VF9DT05GSUdfUEFUSCIpOworCWlmIChrZXlfZmlsZV9lbnYpIHsKKwkJa2V5X2ZpbGVfbG9jID0g c3RyZHVwKGtleV9maWxlX2Vudik7CisJfSBlbHNlIHsKKwkJYXNwcmludGYoJmtleV9maWxlX2xv YywgIiVzLy5pZ3RyYyIsIGdfZ2V0X2hvbWVfZGlyKCkpOworCX0KKworCS8qIExvYWQgaWd0IGNv bmZpZyBmaWxlICovCisJa2V5X2ZpbGUgPSBnX2tleV9maWxlX25ldygpOworCXJldCA9IGdfa2V5 X2ZpbGVfbG9hZF9mcm9tX2ZpbGUoa2V5X2ZpbGUsIGtleV9maWxlX2xvYywKKwkJCQkJR19LRVlf RklMRV9OT05FLCAmZXJyb3IpOworCWZyZWUoa2V5X2ZpbGVfbG9jKTsKKworCWlmICghcmV0KSB7 CisJCWdfZXJyb3JfZnJlZShlcnJvcik7CisJCWdfa2V5X2ZpbGVfZnJlZShrZXlfZmlsZSk7CisJ CXJldHVybiBmYWxzZTsKKwl9CisKKwlnX2NsZWFyX2Vycm9yKCZlcnJvcik7CisKKwlwaW5nX2hv c3RuYW1lID0KKwkJZ19rZXlfZmlsZV9nZXRfc3RyaW5nKGtleV9maWxlLCAiRFVUIiwKKwkJCQkg ICAgICAiUGluZ0hvc3ROYW1lIiwgJmVycm9yKTsKKworCWdfY2xlYXJfZXJyb3IoJmVycm9yKTsK KwlnX2tleV9maWxlX2ZyZWUoa2V5X2ZpbGUpOworCisJaWYgKCFwaW5nX2hvc3RuYW1lKQorCQly ZXR1cm4gZmFsc2U7CisKKwlpZiAocGluZ19ob3N0X2FkZChwaW5nb2JqLCBwaW5nX2hvc3RuYW1l KSkgeworCQlmcHJpbnRmKHN0ZGVyciwKKwkJCSJhYm9ydCBvbiBwaW5nOiBDYW5ub3QgdXNlIGhv c3RuYW1lIGZyb20gY29uZmlnIGZpbGVcbiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0 dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGxvYWRfcGluZ19jb25maWdfZnJvbV9lbnYodm9p ZCkKK3sKKwljb25zdCBjaGFyICpwaW5nX2hvc3RuYW1lOworCisJcGluZ19ob3N0bmFtZSA9IGdl dGVudigiSUdUX1BJTkdfSE9TVE5BTUUiKTsKKwlpZiAoIXBpbmdfaG9zdG5hbWUpCisJCXJldHVy biBmYWxzZTsKKworCWlmIChwaW5nX2hvc3RfYWRkKHBpbmdvYmosIHBpbmdfaG9zdG5hbWUpKSB7 CisJCWZwcmludGYoc3RkZXJyLAorCQkJImFib3J0IG9uIHBpbmc6IENhbm5vdCB1c2UgaG9zdG5h bWUgZnJvbSBlbnZpcm9ubWVudFxuIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4g dHJ1ZTsKK30KKworI2VuZGlmCisKK3N0YXRpYyB2b2lkIHBpbmdfY29uZmlnKHZvaWQpCit7Cisj aWYgSEFWRV9PUElORworCWRvdWJsZSB0aW1lb3V0ID0gMjAuMDsgLyogRmFpciBkaWNlIHJvbGwg Ki8KKworCWlmIChwaW5nb2JqKQorCQlyZXR1cm47CisKKwlwaW5nb2JqID0gcGluZ19jb25zdHJ1 Y3QoKTsKKworCS8qIFRyeSBlbnYgZmlyc3QsIHRoZW4gY29uZmlnIGZpbGUgKi8KKwlpZiAoIWxv YWRfcGluZ19jb25maWdfZnJvbV9lbnYoKSAmJiAhbG9hZF9waW5nX2NvbmZpZ19mcm9tX2ZpbGUo KSkgeworCQlmcHJpbnRmKHN0ZGVyciwKKwkJCSJhYm9ydCBvbiBwaW5nOiBObyBob3N0IHRvIHBp bmcgY29uZmlndXJlZFxuIik7CisJCXBpbmdfZGVzdHJveShwaW5nb2JqKTsKKwkJcGluZ29iaiA9 IE5VTEw7CisJCXJldHVybjsKKwl9CisKKwlwaW5nX3NldG9wdChwaW5nb2JqLCBQSU5HX09QVF9U SU1FT1VULCAmdGltZW91dCk7CisjZW5kaWYKK30KKworc3RhdGljIGNoYXIgKmhhbmRsZV9waW5n KHZvaWQpCit7CisjaWYgSEFWRV9PUElORworCWlmIChwaW5nb2JqKSB7CisJCXBpbmdvYmpfaXRl cl90ICppdGVyOworCisJCXBpbmdfc2VuZChwaW5nb2JqKTsKKworCQlmb3IgKGl0ZXIgPSBwaW5n X2l0ZXJhdG9yX2dldChwaW5nb2JqKTsKKwkJICAgICBpdGVyICE9IE5VTEw7CisJCSAgICAgaXRl ciA9IHBpbmdfaXRlcmF0b3JfbmV4dChpdGVyKSkgeworCQkJZG91YmxlIGxhdGVuY3k7CisJCQlz aXplX3QgbGVuID0gc2l6ZW9mKGxhdGVuY3kpOworCisJCQlwaW5nX2l0ZXJhdG9yX2dldF9pbmZv KGl0ZXIsCisJCQkJCSAgICAgICBQSU5HX0lORk9fTEFURU5DWSwKKwkJCQkJICAgICAgICZsYXRl bmN5LAorCQkJCQkgICAgICAgJmxlbik7CisJCQlpZiAobGF0ZW5jeSA8IDAuMCkgeworCQkJCWNo YXIgKnJlYXNvbjsKKworCQkJCWFzcHJpbnRmKCZyZWFzb24sCisJCQkJCSAiUGluZyBob3N0IGRp ZCBub3QgcmVzcG9uZCB0byBwaW5nLCBuZXR3b3JrIGRvd24iKTsKKwkJCQlyZXR1cm4gcmVhc29u OworCQkJfQorCQl9CisJfQorI2VuZGlmCisKKwlyZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIGNo YXIgKmhhbmRsZV9sb2NrZGVwKHZvaWQpCiB7CiAJY29uc3QgY2hhciAqaGVhZGVyID0gIkxvY2tk ZXAgbm90IGFjdGl2ZVxuXG4vcHJvYy9sb2NrZGVwX3N0YXRzIGNvbnRlbnRzOlxuIjsKQEAgLTE5 Nyw2ICszMjgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKIH0gYWJvcnRfaGFuZGxlcnNbXSA9 IHsKIAl7IEFCT1JUX0xPQ0tERVAsIGhhbmRsZV9sb2NrZGVwIH0sCiAJeyBBQk9SVF9UQUlOVCwg aGFuZGxlX3RhaW50IH0sCisJeyBBQk9SVF9QSU5HLCBoYW5kbGVfcGluZyB9LAogCXsgMCwgMCB9 LAogfTsKIApAQCAtMTI4OCw2ICsxNDIwLDkgQEAgYm9vbCBleGVjdXRlKHN0cnVjdCBleGVjdXRl X3N0YXRlICpzdGF0ZSwKIAogCWluaXRfd2F0Y2hkb2dzKHNldHRpbmdzKTsKIAorCWlmIChzZXR0 aW5ncy0+YWJvcnRfbWFzayAmIEFCT1JUX1BJTkcpCisJCXBpbmdfY29uZmlnKCk7CisKIAlpZiAo IXVuYW1lKCZ1bmFtZWJ1ZikpIHsKIAkJZHByaW50Zih1bmFtZWZkLCAiJXMgJXMgJXMgJXMgJXNc biIsCiAJCQl1bmFtZWJ1Zi5zeXNuYW1lLApkaWZmIC0tZ2l0IGEvcnVubmVyL21lc29uLmJ1aWxk IGIvcnVubmVyL21lc29uLmJ1aWxkCmluZGV4IGI2NThmMWQyLi5hNTRhYWFiNCAxMDA2NDQKLS0t IGEvcnVubmVyL21lc29uLmJ1aWxkCisrKyBiL3J1bm5lci9tZXNvbi5idWlsZApAQCAtMSw0ICsx LDEzIEBACiBqc29uYyA9IGRlcGVuZGVuY3koJ2pzb24tYycsIHJlcXVpcmVkOiBfcnVubmVyX3Jl cXVpcmVkKQorcnVubmVyX2RlcHMgPSBbanNvbmMsIGdsaWJdCitoYXZlX29waW5nID0gW10KK2lm IHdpdGhfb3BpbmcgIT0gJ2ZhbHNlJworCW9waW5nID0gZGVwZW5kZW5jeSgnbGlib3BpbmcnLCBy ZXF1aXJlZDogd2l0aF9vcGluZyA9PSAndHJ1ZScpCisJaWYgb3BpbmcuZm91bmQoKQorCQlydW5u ZXJfZGVwcyArPSBvcGluZworCQloYXZlX29waW5nID0gJy1ESEFWRV9PUElORz0xJworCWVuZGlm CitlbmRpZgogCiBydW5uZXJsaWJfc291cmNlcyA9IFsgJ3NldHRpbmdzLmMnLAogCQkgICAgICAn am9iX2xpc3QuYycsCkBAIC0yMSw3ICszMCw4IEBAIGlmIF9idWlsZF9ydW5uZXIgYW5kIF9idWls ZF90ZXN0cyBhbmQganNvbmMuZm91bmQoKQogCiAJcnVubmVybGliID0gc3RhdGljX2xpYnJhcnko J2lndF9ydW5uZXInLCBydW5uZXJsaWJfc291cmNlcywKIAkJCQkgICBpbmNsdWRlX2RpcmVjdG9y aWVzIDogaW5jLAotCQkJCSAgIGRlcGVuZGVuY2llcyA6IFtqc29uYywgZ2xpYl0pCisJCQkJICAg Y19hcmdzIDogaGF2ZV9vcGluZywKKwkJCQkgICBkZXBlbmRlbmNpZXMgOiBydW5uZXJfZGVwcykK IAogCXJ1bm5lciA9IGV4ZWN1dGFibGUoJ2lndF9ydW5uZXInLCBydW5uZXJfc291cmNlcywKIAkJ CSAgICBsaW5rX3dpdGggOiBydW5uZXJsaWIsCmRpZmYgLS1naXQgYS9ydW5uZXIvc2V0dGluZ3Mu YyBiL3J1bm5lci9zZXR0aW5ncy5jCmluZGV4IGFkMzhhZThkLi5iNTdkMWE2YSAxMDA2NDQKLS0t IGEvcnVubmVyL3NldHRpbmdzLmMKKysrIGIvcnVubmVyL3NldHRpbmdzLmMKQEAgLTQ4LDYgKzQ4 LDcgQEAgc3RhdGljIHN0cnVjdCB7CiB9IGFib3J0X2NvbmRpdGlvbnNbXSA9IHsKIAl7IEFCT1JU X1RBSU5ULCAidGFpbnQiIH0sCiAJeyBBQk9SVF9MT0NLREVQLCAibG9ja2RlcCIgfSwKKwl7IEFC T1JUX1BJTkcsICJwaW5nIiB9LAogCXsgQUJPUlRfQUxMLCAiYWxsIiB9LAogCXsgMCwgMCB9LAog fTsKQEAgLTEzNiw2ICsxMzcsOSBAQCBzdGF0aWMgY29uc3QgY2hhciAqdXNhZ2Vfc3RyID0KIAki ICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGUgY29uZGl0aW9uczpcbiIKIAkiICAgICAg ICAgICAgICAgICAgICAgICAgIGxvY2tkZXAgLSBhYm9ydCB3aGVuIGtlcm5lbCBsb2NrZGVwIGhh cyBiZWVuIGFuZ2VyZWQuXG4iCiAJIiAgICAgICAgICAgICAgICAgICAgICAgICB0YWludCAgIC0g YWJvcnQgd2hlbiBrZXJuZWwgYmVjb21lcyBmYXRhbGx5IHRhaW50ZWQuXG4iCisJIiAgICAgICAg ICAgICAgICAgICAgICAgICBwaW5nICAgIC0gYWJvcnQgd2hlbiBhIGhvc3QgY29uZmlndXJlZCBp biAuaWd0cmMgb3JcbiIKKwkiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZp cm9ubWVudCB2YXJpYWJsZSBJR1RfUElOR19IT1NUTkFNRSBkb2VzXG4iCisJIiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbm90IHJlc3BvbmQgdG8gcGluZy5cbiIKIAkiICAgICAg ICAgICAgICAgICAgICAgICAgIGFsbCAgICAgLSBhYm9ydCBmb3IgYWxsIG9mIHRoZSBhYm92ZS5c biIKIAkiICAtcywgLS1zeW5jICAgICAgICAgICAgU3luYyByZXN1bHRzIHRvIGRpc2sgYWZ0ZXIg ZXZlcnkgdGVzdFxuIgogCSIgIC1sIHtxdWlldCx2ZXJib3NlLGR1bW15fSwgLS1sb2ctbGV2ZWwg e3F1aWV0LHZlcmJvc2UsZHVtbXl9XG4iCmRpZmYgLS1naXQgYS9ydW5uZXIvc2V0dGluZ3MuaCBi L3J1bm5lci9zZXR0aW5ncy5oCmluZGV4IDBhMWVlMDhkLi4yYjZlNjVkMCAxMDA2NDQKLS0tIGEv cnVubmVyL3NldHRpbmdzLmgKKysrIGIvcnVubmVyL3NldHRpbmdzLmgKQEAgLTE1LDkgKzE1LDEw IEBAIGVudW0gewogCiAjZGVmaW5lIEFCT1JUX1RBSU5UICAgKDEgPDwgMCkKICNkZWZpbmUgQUJP UlRfTE9DS0RFUCAoMSA8PCAxKQotI2RlZmluZSBBQk9SVF9BTEwgICAgIChBQk9SVF9UQUlOVCB8 IEFCT1JUX0xPQ0tERVApCisjZGVmaW5lIEFCT1JUX1BJTkcgICAgKDEgPDwgMikKKyNkZWZpbmUg QUJPUlRfQUxMICAgICAoQUJPUlRfVEFJTlQgfCBBQk9SVF9MT0NLREVQIHwgQUJPUlRfUElORykK IAotX1N0YXRpY19hc3NlcnQoQUJPUlRfQUxMID09IChBQk9SVF9UQUlOVCB8IEFCT1JUX0xPQ0tE RVApLCAiQUJPUlRfQUxMIG11c3QgYmUgYWxsIGNvbmRpdGlvbnMgYml0d2lzZSBvcidkIik7Citf U3RhdGljX2Fzc2VydChBQk9SVF9BTEwgPT0gKEFCT1JUX1RBSU5UIHwgQUJPUlRfTE9DS0RFUCB8 IEFCT1JUX1BJTkcpLCAiQUJPUlRfQUxMIG11c3QgYmUgYWxsIGNvbmRpdGlvbnMgYml0d2lzZSBv cidkIik7CiAKIHN0cnVjdCByZWdleF9saXN0IHsKIAljaGFyICoqcmVnZXhfc3RyaW5nczsKLS0g CjIuMTkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K aWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2