eval %q{Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ29weXJpZ2h0 IDIwMDYsIERpZGllciBCdXIuCgojIFRISVMgU09GVFdBUkUgSVMgUFJPVklE RUQgIkFTIElTIiBBTkQgV0lUSE9VVCBBTlkgRVhQUkVTUyBPUgojIElNUExJ RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBXSVRIT1VUIExJTUlUQVRJT04s IFRIRSBJTVBMSUVECiMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgojLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBOYW1lICAgICAgICA6ICAg YWRvLnJiCiMgRGVzY3JpcHRpb24gOiAgIEV4cG9ydCBwYWdlcyB0byAyRCB2 YXJpb3VzIGZvcm1hdCBmaWxlcy4KIyBNZW51IEl0ZW0gICA6ICAgUGx1Z2lu cy0+QXV0b21hdGVkIDJEIE91dHB1dAojIENvbnRleHQgTWVudTogICBOb25l CiMgVXNhZ2UgICAgICAgOiAgIFNlbGVjdCBQdWxnaW5zL0F1dG9tYXRlZCAy RCBPdXRwdXQKIyBEYXRlICAgICAgICA6ICAgMzEvMDEvMjAwNiBiZXRhIHZl cnNpb24KIyBUeXBlICAgICAgICA6ICAgVG9vbAojLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KCnJlcXVpcmUgJ3NrZXRjaHVwLnJiJwpyZXF1 aXJlICdXaW4zMkFQSScKI3JlcXVpcmUgJ3dpbjMyb2xlJwojcmVxdWlyZSAn ZXh0ZW5zaW9ucy5yYicKI3JlcXVpcmUgJ0xhbmdIYW5kbGVyLnJiJwoKIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR0VORVJBTCBVU0FHRSBGVU5DVElPTlMKIy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpk ZWYgYWRvX3NlbGVjdF9leHBvcnRfZm9sZGVyKGZvcm1hdCkKbW9kZWwgPSBT a2V0Y2h1cC5hY3RpdmVfbW9kZWwKY3VycmVudF9kaXIgPSBGaWxlLmRpcm5h bWUobW9kZWwucGF0aCkKbW9kZWxfbmFtZSA9IEZpbGUuYmFzZW5hbWUobW9k ZWwucGF0aCkuc3BsaXQoIi4iKVswXQoKIyBDcmVhdGUgdGhlIGV4cG9ydCBm b2xkZXIgaWYgaXQgZG9lc24ndCBleGlzdCBhbmQgdGhlIHVzZXIgZGlkbid0 IHNldCBpdAppZiBub3QgJHVzZXJfZXhwb3J0X2RpcgogIGlmIG5vdCAoIERp ci5lbnRyaWVzKGN1cnJlbnRfZGlyKS5pbmNsdWRlPyhtb2RlbF9uYW1lICsg Il8iICsgZm9ybWF0KSApCiAgICBEaXIubWtkaXIoY3VycmVudF9kaXIgKyAi XFwiICsgbW9kZWxfbmFtZSArICJfIiArIGZvcm1hdCkKICAgICRleHBvcnRf ZGlyID0gY3VycmVudF9kaXIgKyAiXFwiICsgbW9kZWxfbmFtZSArICJfIiAr IGZvcm1hdAogICAgZWxzZQogICAgJGV4cG9ydF9kaXIgPSBjdXJyZW50X2Rp ciArICJcXCIgKyBtb2RlbF9uYW1lICsgIl8iICsgZm9ybWF0CiAgZW5kCiAg ZWxzZQogICRleHBvcnRfZGlyID0gJHVzZXJfZXhwb3J0X2RpcgplbmQKZW5k CgpkZWYgYWRvX3NldF9leHBvcnRfZm9sZGVyCm1vZGVsID0gU2tldGNodXAu YWN0aXZlX21vZGVsCmN1cnJlbnRfZGlyID0gRmlsZS5kaXJuYW1lKG1vZGVs LnBhdGgpCm1vZGVsX25hbWUgPSBGaWxlLmJhc2VuYW1lKG1vZGVsLnBhdGgp CmZvbGRlciA9IFVJLm9wZW5wYW5lbCgiU2VsZWN0aW9ubmVyIHVuIGZpY2hp ZXIgZGFucyBsZSBkb3NzaWVyIG91IGV4cG9ydGVyOiIsICIiLCAiIikKJHVz ZXJfZXhwb3J0X2RpciA9IEZpbGUuZGlybmFtZShmb2xkZXIpCmVuZAoKZGVm IGFkb19zZXRfZXhwb3J0X2ZvbGRlcl9kZWZhdWx0CmlmIG5vdCAkaW1nX2Zv cm1hdAogIGZvcm1hdCA9ICJKUEciCiAgZWxzZQogIGZvcm1hdCA9ICRpbWdf Zm9ybWF0LnVwY2FzZQplbmQKbW9kZWwgPSBTa2V0Y2h1cC5hY3RpdmVfbW9k ZWwKY3VycmVudF9kaXIgPSBGaWxlLmRpcm5hbWUobW9kZWwucGF0aCkKbW9k ZWxfbmFtZSA9IEZpbGUuYmFzZW5hbWUobW9kZWwucGF0aCkuc3BsaXQoIi4i KVswXQppZiAkdXNlcl9leHBvcnRfZGlyCiAgJHVzZXJfZXhwb3J0X2RpciA9 IG5pbAogIGlmIG5vdCAoIERpci5lbnRyaWVzKGN1cnJlbnRfZGlyKS5pbmNs dWRlPyhtb2RlbF9uYW1lICsgIl8iICsgZm9ybWF0KSApCiAgICBEaXIubWtk aXIoY3VycmVudF9kaXIgKyAiXFwiICsgbW9kZWxfbmFtZSArICJfIiArIGZv cm1hdCkKICAgICRleHBvcnRfZGlyID0gY3VycmVudF9kaXIgKyAiXFwiICsg bW9kZWxfbmFtZSArICJfIiArIGZvcm1hdAogICAgZWxzZQogICAgJGV4cG9y dF9kaXIgPSBjdXJyZW50X2RpciArICJcXCIgKyBtb2RlbF9uYW1lICsgIl8i ICsgZm9ybWF0CiAgZW5kCmVuZAplbmQKCmRlZiBleGVjX29uX2F1dG9sb2Fk CnB1dHMgKCJBRE8gY2hhcmdlLiBELiBCdXIsIDMxLjAxLjA2IikKZW5kCgoj LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tIFN3aXRjaCBmcm9tIHJhZCB0byBkZWcKZGVmIHJhZDJkZWcgKGEpCnJl dHVybiAoIGEgKiAxODAuMCApIC8gTWF0aDo6UEkKZW5kCgojLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN3aXRj aCBmcm9tIGRlZyB0byByYWQKZGVmIGRlZzJyYWQgKGEpCnJldHVybiAoIGEg KiBNYXRoOjpQSSApIC8gMTgwLjAKZW5kCgojLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJldHVybnMgdGhlIGZp cnN0IHBvc2l0aW9uIG9mIHRoZSBjYW1lcmEgYW5kIHVwIHZlY3RvciwgZ2l2 ZW4gMiBhbmdsZXM6IGF6aW11dGggYW5kIGhhdXRldXIsIGRpc3RhbmNlIGlz IGEgY29uc3RhbnQgb2YgMTAwMApkZWYgYWRvX2NhbWVyYV9wb3NpdGlvbigg YXppbXV0aCwgaGF1dGV1ciApCiMgZGVmYXVsdCBzdGFydCBwb2ludCBvZiBj YW1lcmEKdmVjX3N0YXJ0X3Bvc2l0aW9uID0gR2VvbTo6VmVjdG9yM2QubmV3 KDAuMCwtMTAwMC4wLDAuMCkKIyByb3RhdGlvbiBhcm91bmQgWgp2ZWNfel93 b3JsZCA9IEdlb206OlZlY3RvcjNkLm5ldygwLjAsIDAuMCwgMS4wKSAKdHog PSBHZW9tOjpUcmFuc2Zvcm1hdGlvbi5yb3RhdGlvbihbMC4wLDAuMCwwLjBd LCB2ZWNfel93b3JsZCwgZGVnMnJhZCggYXppbXV0aCApKQp2ZWNfeHlfcG9z aXRpb24gPSB2ZWNfc3RhcnRfcG9zaXRpb24udHJhbnNmb3JtKHR6KQojIHJv dGF0aW9uIGFyb3VuZCBYCnRfcm90X3BsdXNfcGlzMiA9IEdlb206OlRyYW5z Zm9ybWF0aW9uLnJvdGF0aW9uKFswLjAsMC4wLDAuMF0sIFswLjAsMC4wLDEu MF0sIGRlZzJyYWQoIDkwLjAgKSkKdmVjX3BlcnAgPSB2ZWNfeHlfcG9zaXRp b24udHJhbnNmb3JtKHRfcm90X3BsdXNfcGlzMikKdHggPSBHZW9tOjpUcmFu c2Zvcm1hdGlvbi5yb3RhdGlvbihbMC4wLDAuMCwwLjBdLCB2ZWNfcGVycCwg ZGVnMnJhZCggMC4wIC0gaGF1dGV1ciApKQokdmVjX2NhbWVyYV9wb3NpdGlv biA9IHZlY194eV9wb3NpdGlvbi50cmFuc2Zvcm0odHgpCgokdmVjX3VwID0g JHZlY19jYW1lcmFfcG9zaXRpb24gKiB2ZWNfcGVycAoKZW5kCgojLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNl dCByZW5kZXJpbmcgb3B0aW9ucyBvZiBwYWdlIGluIHRtcF92aWV3IGR1cmlu ZyBleHBvcnQKZGVmIHNldF9wYWdlX3JlbmRlcmluZ19vcHRpb25zKCBwYWdl LCB2KQptb2RlbD1Ta2V0Y2h1cC5hY3RpdmVfbW9kZWwKcF9yb3B0ID0gcGFn ZS5yZW5kZXJpbmdfb3B0aW9ucwptX3JvcHQgPSBtb2RlbC5yZW5kZXJpbmdf b3B0aW9ucwojcHV0cyBwX3JvcHQudG9fYQppZiBwX3JvcHQKICBwX3JvcHQu ZWFjaF9wYWlyIHsgfCBrZXksIHZhbHVlIHwgbV9yb3B0W2tleV0gPSB2YWx1 ZSB9CmVuZAp2LmludmFsaWRhdGUKZW5kCgojLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tVHVybnMgb2ZmIGludmlz aWJsZSBsYXllcnMgaW4gdG1wX3ZpZXcgZHVyaW5nIGV4cG9ydApkZWYgc2V0 X3BhZ2VfbGF5ZXJzKCBwYWdlLCB2KQptb2RlbD1Ta2V0Y2h1cC5hY3RpdmVf bW9kZWwKbW9kZWxfbGF5ZXJzID0gbW9kZWwubGF5ZXJzCm1vZGVsX2xheWVy cy5lYWNoIGRvIHxsfAogIGwudmlzaWJsZSA9IHRydWUKZW5kCnYuaW52YWxp ZGF0ZQpsYXllcnMgPSBwYWdlLmxheWVycwppZiBsYXllcnMubGVuZ3RoICE9 IDAKICBsYXllcnMuZWFjaCBkbyB8bHwKICAgIGwudmlzaWJsZSA9IGZhbHNl CiAgICB2LmludmFsaWRhdGUKICBlbmQKZW5kCmVuZAoKIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFH RVMgRlVOQ1RJT05TCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTZXQgdGhlIHJlbmRl ciBtb2RlIGZvciBhIHBhZ2UgYmVmb3JlIHVwZGF0aW5nIGl0CiMgV2lyZWZy YW1lOiAwCiMgSGlkZGVuIGxpbmVzIHJlbW92YWw6IDEKIyBTaGFkaW5nOiAy CiMgVGV4dHVyaW5nOiAyICsgIlRleHR1cmUiLCB0cnVlCmRlZiBzZXRfcmVu ZGVyaW5nX29wdGlvbiggcmVuZGVyLCBzaGFkb3csIHRyYW5zcCApCm1vZGVs PVNrZXRjaHVwLmFjdGl2ZV9tb2RlbAoKY2FzZSByZW5kZXIKICB3aGVuICJG aWxhaXJlIgogIG1vZGVsLnJlbmRlcmluZ19vcHRpb25zWyJSZW5kZXJNb2Rl Il0gPSAwCiAgd2hlbiAiTGlnbmVzIGNhY2hlZXMiCiAgbW9kZWwucmVuZGVy aW5nX29wdGlvbnNbIlJlbmRlck1vZGUiXSA9IDEKICB3aGVuICJDb3VsZXVy IHBhciBjYWxxdWUiCiAgbW9kZWwucmVuZGVyaW5nX29wdGlvbnNbIlJlbmRl ck1vZGUiXSA9IDIKICBtb2RlbC5yZW5kZXJpbmdfb3B0aW9uc1siRGlzcGxh eUNvbG9yQnlMYXllciJdID0gdHJ1ZQogIG1vZGVsLnJlbmRlcmluZ19vcHRp b25zWyJUZXh0dXJlIl0gPSBmYWxzZQogIHdoZW4gIkNvdWxldXIgcGFyIG1h dGVyaWF1IgogIG1vZGVsLnJlbmRlcmluZ19vcHRpb25zWyJSZW5kZXJNb2Rl Il0gPSAyCiAgbW9kZWwucmVuZGVyaW5nX29wdGlvbnNbIkRpc3BsYXlDb2xv ckJ5TGF5ZXIiXSA9IGZhbHNlCiAgbW9kZWwucmVuZGVyaW5nX29wdGlvbnNb IlRleHR1cmUiXSA9IGZhbHNlCiAgd2hlbiAiVGV4dHVyZSIKICBtb2RlbC5y ZW5kZXJpbmdfb3B0aW9uc1siUmVuZGVyTW9kZSJdID0gMwogIG1vZGVsLnJl bmRlcmluZ19vcHRpb25zWyJEaXNwbGF5Q29sb3JCeUxheWVyIl0gPSBmYWxz ZQogIG1vZGVsLnJlbmRlcmluZ19vcHRpb25zWyJUZXh0dXJlIl0gPSB0cnVl CmVuZAoKY2FzZSBzaGFkb3cKICB3aGVuICJPdWkiCiAgbW9kZWwuc2hhZG93 X2luZm9bIkRpc3BsYXlTaGFkb3dzIl0gPSB0cnVlCiAgd2hlbiAiTm9uIgog IG1vZGVsLnNoYWRvd19pbmZvWyJEaXNwbGF5U2hhZG93cyJdID0gZmFsc2UK ZW5kCgpjYXNlIHRyYW5zcAp3aGVuICJPdWkiCiAgbW9kZWwucmVuZGVyaW5n X29wdGlvbnNbIk1vZGVsVHJhbnNwYXJlbmN5Il0gPSB0cnVlCiAgd2hlbiAi Tm9uIgogIG1vZGVsLnJlbmRlcmluZ19vcHRpb25zWyJNb2RlbFRyYW5zcGFy ZW5jeSJdID0gZmFsc2UKZW5kCmVuZAoKIy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTZXQgYWxsIHBhZ2VzIHRv IG9ydGhvCmRlZiBhZG9fc2V0X2FsbF9wYWdlc19vcnRob3ZpZXcgCm1vZGVs PVNrZXRjaHVwLmFjdGl2ZV9tb2RlbApwYWdlcyA9IG1vZGVsLnBhZ2VzCnBh Z2VzLmVhY2ggIGRvIHxwfAogIGlmIHAuY2FtZXJhLnBlcnNwZWN0aXZlPwog ICAgcC5jYW1lcmEucGVyc3BlY3RpdmUgPSBmYWxzZQogIGVuZAplbmQKZW5k CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gU2V0IGFsbCBwYWdlcyB0byBwZXJzcGVjdGl2ZQpkZWYgYWRvX3Nl dF9hbGxfcGFnZXNfcGVyc3ZpZXcgCm1vZGVsPVNrZXRjaHVwLmFjdGl2ZV9t b2RlbApwYWdlcyA9IG1vZGVsLnBhZ2VzCnBhZ2VzLmVhY2ggIGRvIHxwfAog IGlmIG5vdCBwLmNhbWVyYS5wZXJzcGVjdGl2ZT8KICAgIHAuY2FtZXJhLnBl cnNwZWN0aXZlID0gdHJ1ZQogIGVuZAplbmQKZW5kCiMtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2V0IHN0YW5k YXJkIHBhZ2VzIHRvIG9ydGhvCmRlZiBhZG9fc2V0X3N0YW5kYXJkX3BhZ2Vz X29ydGhvdmlldyAKbW9kZWw9U2tldGNodXAuYWN0aXZlX21vZGVsCnBhZ2Vz ID0gbW9kZWwucGFnZXMKc3RhbmRhcmRfcGFnZXMgPSBbIkRlc3N1cyIsICJE ZXNzb3VzIiwgIkF2YW50IiwgIkFycmllcmUiLCAiR2F1Y2hlIiwgIkRyb2l0 ZSIsICJBdmFudF9HYXVjaGUiLCAiQXZhbnRfRHJvaXRlIiwgIkFycmllcmVf R2F1Y2hlIiwgIkFycmllcmVfRHJvaXRlIl0KcGFnZXMuZWFjaCAgZG8gfHB8 CiAgaWYoIHN0YW5kYXJkX3BhZ2VzLmluY2x1ZGU/IHAubmFtZSkKICAgIGlm IHAuY2FtZXJhLnBlcnNwZWN0aXZlPwogICAgICBwLmNhbWVyYS5wZXJzcGVj dGl2ZSA9IGZhbHNlCiAgICBlbmQKICBlbmQKZW5kCmVuZAojLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNldCBz dGFuZGFyZCBwYWdlcyB0byBwZXJzcGVjdGl2ZQpkZWYgYWRvX3NldF9zdGFu ZGFyZF9wYWdlc19wZXJzdmlldyAKbW9kZWw9U2tldGNodXAuYWN0aXZlX21v ZGVsCnBhZ2VzID0gbW9kZWwucGFnZXMKc3RhbmRhcmRfcGFnZXMgPSBbIkRl c3N1cyIsICJEZXNzb3VzIiwgIkF2YW50IiwgIkFycmllcmUiLCAiR2F1Y2hl IiwgIkRyb2l0ZSIsICJBdmFudF9HYXVjaGUiLCAiQXZhbnRfRHJvaXRlIiwg IkFycmllcmVfR2F1Y2hlIiwgIkFycmllcmVfRHJvaXRlIl0KcGFnZXMuZWFj aCAgZG8gfHB8CiAgaWYoIHN0YW5kYXJkX3BhZ2VzLmluY2x1ZGU/IHAubmFt ZSkKICAgIGlmIG5vdCBwLmNhbWVyYS5wZXJzcGVjdGl2ZT8KICAgICAgcC5j YW1lcmEucGVyc3BlY3RpdmUgPSB0cnVlCiAgICBlbmQKICBlbmQKZW5kCmVu ZAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tIFNldCB1c2VyIHBhZ2VzIHRvIG9ydGhvCmRlZiBhZG9fc2V0X3Vz ZXJfcGFnZXNfb3J0aG92aWV3IAptb2RlbD1Ta2V0Y2h1cC5hY3RpdmVfbW9k ZWwKcGFnZXMgPSBtb2RlbC5wYWdlcwpzdGFuZGFyZF9wYWdlcyA9IFsiRGVz c3VzIiwgIkRlc3NvdXMiLCAiQXZhbnQiLCAiQXJyaWVyZSIsICJHYXVjaGUi LCAiRHJvaXRlIiwgIkF2YW50X0dhdWNoZSIsICJBdmFudF9Ecm9pdGUiLCAi QXJyaWVyZV9HYXVjaGUiLCAiQXJyaWVyZV9Ecm9pdGUiXQpwYWdlcy5lYWNo ICBkbyB8cHwKICBpZiggbm90IHN0YW5kYXJkX3BhZ2VzLmluY2x1ZGU/IHAu bmFtZSkKICAgIGlmIHAuY2FtZXJhLnBlcnNwZWN0aXZlPwogICAgICBwLmNh bWVyYS5wZXJzcGVjdGl2ZSA9IGZhbHNlCiAgICBlbmQKICBlbmQKZW5kCmVu ZAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tIFNldCB1c2VyIHBhZ2VzIHRvIHBlcnNwZWN0aXZlCmRlZiBhZG9f c2V0X3VzZXJfcGFnZXNfcGVyc3ZpZXcgCm1vZGVsPVNrZXRjaHVwLmFjdGl2 ZV9tb2RlbApwYWdlcyA9IG1vZGVsLnBhZ2VzCnN0YW5kYXJkX3BhZ2VzID0g WyJEZXNzdXMiLCAiRGVzc291cyIsICJBdmFudCIsICJBcnJpZXJlIiwgIkdh dWNoZSIsICJEcm9pdGUiLCAiQXZhbnRfR2F1Y2hlIiwgIkF2YW50X0Ryb2l0 ZSIsICJBcnJpZXJlX0dhdWNoZSIsICJBcnJpZXJlX0Ryb2l0ZSJdCnBhZ2Vz LmVhY2ggIGRvIHxwfAogIGlmKCBub3Qgc3RhbmRhcmRfcGFnZXMuaW5jbHVk ZT8gcC5uYW1lKQogICAgaWYgbm90IHAuY2FtZXJhLnBlcnNwZWN0aXZlPwog ICAgICBwLmNhbWVyYS5wZXJzcGVjdGl2ZSA9IHRydWUKICAgIGVuZAogIGVu ZAplbmQKZW5kCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tIFJlZnJlc2ggYWxsIHBhZ2VzIHdpdGggbmV3IHNl dHRpbmdzCmRlZiBhZG9fcmVmcmVzaF9hbGxfcGFnZXMKbW9kZWw9U2tldGNo dXAuYWN0aXZlX21vZGVsCnBhZ2VzID0gbW9kZWwucGFnZXMKIyBkZWZhdWx0 IHZhbHVlcyBpZiBub3Qgc2V0CiRyZW5kZXJfcGFnZXMgPSAiTGlnbmVzIGNh Y2hlZXMiIGlmIG5vdCAkcmVuZGVyX3BhZ2VzCiRzaGFkb3dzX3BhZ2VzID0g Ik5vbiIgaWYgbm90ICRzaGFkb3dzX3BhZ2VzCiR0cmFuc19wYWdlcyA9ICJO b24iIGlmIG5vdCAkdHJhbnNfcGFnZXMKCiMgcHJvY2VzcyBlYWNoIHBhZ2UK cGFnZXMuZWFjaCAgZG8gfHB8CiAgdG1wX3ZpZXcgPSBtb2RlbC5hY3RpdmVf dmlldyAKICB0bXBfdmlldy5jYW1lcmEgPSBwLmNhbWVyYQogIChzZXRfcmVu ZGVyaW5nX29wdGlvbiAkcmVuZGVyX3BhZ2VzLCAkc2hhZG93c19wYWdlcywg JHRyYW5zX3BhZ2VzKQogIChzZXRfcGFnZV9sYXllcnMgcCwgdG1wX3ZpZXcp CiAgdG1wX3ZpZXcuaW52YWxpZGF0ZQogIHAudXBkYXRlCmVuZAplbmQKIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSBSZWZyZXNoIHN0YW5kYXJkIHBhZ2VzIHdpdGggbmV3IHNldHRpbmdzCmRl ZiBhZG9fcmVmcmVzaF9zdGFuZGFyZF9wYWdlcwptb2RlbD1Ta2V0Y2h1cC5h Y3RpdmVfbW9kZWwKcGFnZXMgPSBtb2RlbC5wYWdlcwpzdGFuZGFyZF9wYWdl cyA9IFsiRGVzc3VzIiwgIkRlc3NvdXMiLCAiQXZhbnQiLCAiQXJyaWVyZSIs ICJHYXVjaGUiLCAiRHJvaXRlIiwgIkF2YW50X0dhdWNoZSIsICJBdmFudF9E cm9pdGUiLCAiQXJyaWVyZV9HYXVjaGUiLCAiQXJyaWVyZV9Ecm9pdGUiXQoj IGRlZmF1bHQgdmFsdWVzIGlmIG5vdCBzZXQKJHJlbmRlcl9wYWdlcyA9ICJM aWduZXMgY2FjaGVlcyIgaWYgbm90ICRyZW5kZXJfcGFnZXMKJHNoYWRvd3Nf cGFnZXMgPSAiTm9uIiBpZiBub3QgJHNoYWRvd3NfcGFnZXMKJHRyYW5zX3Bh Z2VzID0gIk5vbiIgaWYgbm90ICR0cmFuc19wYWdlcwoKIyBwcm9jZXNzIGVh Y2ggcGFnZQpwYWdlcy5lYWNoICBkbyB8cHwKICBpZiBzdGFuZGFyZF9wYWdl cy5pbmNsdWRlPyBwLm5hbWUKICAgIHRtcF92aWV3ID0gbW9kZWwuYWN0aXZl X3ZpZXcgCiAgICB0bXBfdmlldy5jYW1lcmEgPSBwLmNhbWVyYQogICAgKHNl dF9yZW5kZXJpbmdfb3B0aW9uICRyZW5kZXJfcGFnZXMsICRzaGFkb3dzX3Bh Z2VzLCAkdHJhbnNfcGFnZXMpCiAgICAoc2V0X3BhZ2VfbGF5ZXJzIHAsIHRt cF92aWV3KQogICAgdG1wX3ZpZXcuaW52YWxpZGF0ZQogICAgcC51cGRhdGUK ICBlbmQKZW5kCmVuZAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tIFJlZnJlc2ggdXNlciBwYWdlcyB3aXRoIG5l dyBzZXR0aW5ncwpkZWYgYWRvX3JlZnJlc2hfdXNlcl9wYWdlcwptb2RlbD1T a2V0Y2h1cC5hY3RpdmVfbW9kZWwKcGFnZXMgPSBtb2RlbC5wYWdlcwpzdGFu ZGFyZF9wYWdlcyA9IFsiRGVzc3VzIiwgIkRlc3NvdXMiLCAiQXZhbnQiLCAi QXJyaWVyZSIsICJHYXVjaGUiLCAiRHJvaXRlIiwgIkF2YW50X0dhdWNoZSIs ICJBdmFudF9Ecm9pdGUiLCAiQXJyaWVyZV9HYXVjaGUiLCAiQXJyaWVyZV9E cm9pdGUiXQojIGRlZmF1bHQgdmFsdWVzIGlmIG5vdCBzZXQKJHJlbmRlcl9w YWdlcyA9ICJMaWduZXMgY2FjaGVlcyIgaWYgbm90ICRyZW5kZXJfcGFnZXMK JHNoYWRvd3NfcGFnZXMgPSAiTm9uIiBpZiBub3QgJHNoYWRvd3NfcGFnZXMK JHRyYW5zX3BhZ2VzID0gIk5vbiIgaWYgbm90ICR0cmFuc19wYWdlcwoKIyBw cm9jZXNzIGVhY2ggcGFnZQpwYWdlcy5lYWNoICBkbyB8cHwKICBpZiBub3Qg c3RhbmRhcmRfcGFnZXMuaW5jbHVkZT8gcC5uYW1lCiAgICB0bXBfdmlldyA9 IG1vZGVsLmFjdGl2ZV92aWV3IAogICAgdG1wX3ZpZXcuY2FtZXJhID0gcC5j YW1lcmEKICAgIChzZXRfcmVuZGVyaW5nX29wdGlvbiAkcmVuZGVyX3BhZ2Vz LCAkc2hhZG93c19wYWdlcywgJHRyYW5zX3BhZ2VzKQogICAgKHNldF9wYWdl X2xheWVycyBwLCB0bXBfdmlldykKICAgIHRtcF92aWV3LmludmFsaWRhdGUK ICAgIHAudXBkYXRlCiAgZW5kCmVuZAplbmQKCiMtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUkFNRVRF UlMgRlVOQ1RJT05TCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTZXQgcGFnZXMgcGFy YW1ldGVycwpkZWYgYWRvX3NldF9wYWdlc19zZXR0aW5ncwojZGVmYXVsdCB2 YWx1ZXMKJG9ydGhvX3BhZ2VzID0gIk91aSIgaWYgbm90ICRvcnRob19wYWdl cwokYXhvX3BhZ2VzID0gIk91aSIgaWYgbm90ICRheG9fcGFnZXMKJHJlbmRl cl9wYWdlcyA9ICJMaWduZXMgY2FjaGVlcyIgaWYgbm90ICRyZW5kZXJfcGFn ZXMKJHNoYWRvd3NfcGFnZXMgPSAiTm9uIiBpZiBub3QgJHNoYWRvd3NfcGFn ZXMKJHRyYW5zX3BhZ2VzID0gIk5vbiIgaWYgbm90ICR0cmFuc19wYWdlcwok YW5nbGVfYXppbXV0aF9wYWdlcyA9IC00NS4wIGlmIG5vdCAkYW5nbGVfYXpp bXV0aF9wYWdlcwokYW5nbGVfaGF1dGV1cl9wYWdlcyA9IDQ1LjAgaWYgbm90 ICRhbmdsZV9oYXV0ZXVyX3BhZ2VzCgojRGlhbG9nIGJveDoKb3J0aG9fbGlz dCA9ICV3W1llcyBOb10uam9pbigifCIpCmF4b19saXN0ID0gJXdbWWVzIE5v XS5qb2luKCJ8IikKcmVuZGVyX2xpc3Q9IFsiRmlsYWlyZSIsICJMaWduZXMg Y2FjaGVlcyIsICJDb3VsZXVyIHBhciBjYWxxdWUiLCAiQ291bGV1ciBwYXIg bWF0ZXJpYXUiLCAiVGV4dHVyZSJdLmpvaW4oInwiKQpzaGFkb3dfbGlzdCA9 ICV3W1llcyBOb10uam9pbigifCIpCnRyYW5zcF9saXN0ID0gJXdbWWVzIE5v XS5qb2luKCJ8IikKYXJyYXlfb2ZfZHJvcGRvd25zID0gW3JlbmRlcl9saXN0 LCBzaGFkb3dfbGlzdCwgdHJhbnNwX2xpc3RdCnByb21wdHM9WyJSZW5kdSBk ZSBwYWdlczogICIsICJPbWJyZXM6ICAiLCAiVHJhbnNwYXJlbmNlOiAgIiwi QXppbXV0aCBheG9ub21ldHJpcXVlICgwIC0+IC05MCk6ICAiLCAiSGF1dGV1 ciBheG9ub21ldHJpcXVlICgwIC0+ICs5MCk6ICAiXQp2YWx1ZXM9WyRyZW5k ZXJfcGFnZXMsICRzaGFkb3dzX3BhZ2VzLCAkdHJhbnNfcGFnZXMsJGFuZ2xl X2F6aW11dGhfcGFnZXMudG9fcywgJGFuZ2xlX2hhdXRldXJfcGFnZXMudG9f c10KcmVzdWx0cyA9IGlucHV0Ym94IHByb21wdHMsIHZhbHVlcywgYXJyYXlf b2ZfZHJvcGRvd25zLCAiUGFyYW1ldHJlcyBkZXMgcGFnZXMiCnJldHVybiBu aWwgaWYgbm90IHJlc3VsdHMKJHJlbmRlcl9wYWdlcyA9IHJlc3VsdHNbMF0K JHNoYWRvd3NfcGFnZXMgPSByZXN1bHRzWzFdCiR0cmFuc19wYWdlcyA9IHJl c3VsdHNbMl0KJGFuZ2xlX2F6aW11dGhfcGFnZXMgPSByZXN1bHRzWzNdLnRv X2YKJGFuZ2xlX2hhdXRldXJfcGFnZXMgPSByZXN1bHRzWzRdLnRvX2YKZW5k CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tIFNldCBwYWdlcyBwYXJhbWV0ZXJzCmRlZiBhZG9fc2V0X3ZpZXdw b2ludF9zZXR0aW5ncwojZGVmYXVsdCB2YWx1ZXMKJGFuZ2xlX2F6aW11dGhf cGFnZXMgPSAtNDUuMCBpZiBub3QgJGFuZ2xlX2F6aW11dGhfcGFnZXMKJGFu Z2xlX2hhdXRldXJfcGFnZXMgPSA0NS4wIGlmIG5vdCAkYW5nbGVfaGF1dGV1 cl9wYWdlcwoKI0RpYWxvZyBib3g6CnByb21wdHM9WyJBemltdXRoIGF4b25v bWV0cmlxdWUgKDAgLT4gLTkwKTogICIsICJIYXV0ZXVyIGF4b25vbWV0cmlx dWUgKDAgLT4gKzkwKTogICJdCnZhbHVlcz1bJGFuZ2xlX2F6aW11dGhfcGFn ZXMudG9fcywgJGFuZ2xlX2hhdXRldXJfcGFnZXMudG9fc10KcmVzdWx0cyA9 IGlucHV0Ym94IHByb21wdHMsIHZhbHVlcywgIlBvaW50IGRlIHZ1ZSBheG9u b21ldHJpcXVlIgpyZXR1cm4gbmlsIGlmIG5vdCByZXN1bHRzCiRhbmdsZV9h emltdXRoX3BhZ2VzID0gcmVzdWx0c1swXS50b19mCiRhbmdsZV9oYXV0ZXVy X3BhZ2VzID0gcmVzdWx0c1sxXS50b19mCgppZiAoJGFuZ2xlX2F6aW11dGhf cGFnZXMgPCAtMTgwLjApIG9yICgkYW5nbGVfYXppbXV0aF9wYWdlcyA+IDE4 MC4wKQogICRhbmdsZV9hemltdXRoX3BhZ2VzID0gMC4wCiAgVUkubWVzc2Fn ZWJveCgiQXppbXV0aCBpbmNvcnJlY3QsIHJlbWlzIGEgMC4iKQplbmQKaWYg KCRhbmdsZV9oYXV0ZXVyX3BhZ2VzIDwgLTE4MC4wKSBvciAoJGFuZ2xlX2hh dXRldXJfcGFnZXMgPiAxODAuMCkKICAkYW5nbGVfaGF1dGV1cl9wYWdlcyA9 IDE4MC4wCiAgVUkubWVzc2FnZWJveCgiSGF1dGV1ciBpbmNvcnJlY3RlLCBy ZW1pc2UgYSAwLiIpCmVuZAplbmQKCmRlZiBhZG9fYWJvdXQKVUkubWVzc2Fn ZWJveCgiU29ydGllIDJEIGF1dG9tYXRpc2VlXG5ELiBCdXIsIFNjcmlwdCBS dWJ5IC0gVmVyc2lvbiAxLjAuIDMxIEphbnZpZXIgMjAwNlxuVGhhbmtzIHRv IFRCRCBhbmQgVElHIGZvciB0aGVpciBoZWxwLiIgLCBNQl9NVUxUSUxJTkUg LCAiQSBwcm9wb3MgZCdBRE8iKSAKZW5kCgojLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTUFHRVMgU0VU VElOR1MgYW5kIEVYUE9SVAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTZXQgaW1hZ2Vz IHBhcmFtZXRlcnMKZGVmIGFkb19zZXRfaW1nX3NldHRpbmdzCiMgc2V0cyB0 aGUgZGVmYXVsdCB2YWx1ZXMgaWYgbm90IHNldCBieSB0aGUgdXNlcgokaW1n X2Zvcm1hdCA9ICJqcGciIGlmIG5vdCAkaW1nX2Zvcm1hdAokaW1nX2FsaWFz ID0gIk91aSIgaWYgbm90ICRpbWdfYWxpYXMKJGltZ193aWR0aCA9ICI2NDAi IGlmIG5vdCAkaW1nX3dpZHRoCiRpbWdfaGVpZ2h0ID0gIjQ4MCIgaWYgbm90 ICRpbWdfaGVpZ2h0CgoKI0RpYWxvZyBib3g6CmZvcm1hdF9saXN0ID0gJXdb anBnIGJtcCB0Z2EgdGlmIHBuZ10uam9pbigifCIpCmFsaWFzX2xpc3QgPSAl d1tZZXMgTm9dLmpvaW4oInwiKQphcnJheV9vZl9kcm9wZG93bnMgPSBbZm9y bWF0X2xpc3QsIGFsaWFzX2xpc3RdCnByb21wdHM9WyJGb3JtYXQ6ICAiLCAi QW50aS1jcmVuZWxhZ2U6ICAiLCAiTGFyZ2V1ciAocGl4ZWxzKTogICIsICJI YXV0ZXVyIChwaXhlbHMpOiAgIl0KdmFsdWVzPVskaW1nX2Zvcm1hdCwgJGlt Z19hbGlhcywgJGltZ193aWR0aCwgJGltZ19oZWlnaHRdCnJlc3VsdHMgPSBp bnB1dGJveCBwcm9tcHRzLCB2YWx1ZXMsIGFycmF5X29mX2Ryb3Bkb3ducywg IlBhcmFtZXRyZXMgZGVzIGltYWdlcyIKcmV0dXJuIG5pbCBpZiBub3QgcmVz dWx0cwokaW1nX2Zvcm1hdCA9IHJlc3VsdHNbMF0KJGltZ19hbGlhcyA9IHJl c3VsdHNbMV0KJGltZ193aWR0aCA9IHJlc3VsdHNbMl0KJGltZ19oZWlnaHQg PSByZXN1bHRzWzNdCmVuZAoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBvcnQgaWtlYSBwYWdlcyB0byBp bWFnZXMKZGVmIGFkb19leHBvcnRfaW1nX2Zyb21fcGFnZXMoIHdoYXQgKQpt b2RlbCA9IFNrZXRjaHVwLmFjdGl2ZV9tb2RlbAptb2RlbF9uYW1lID0gRmls ZS5iYXNlbmFtZShtb2RlbC5wYXRoKS5zcGxpdCgiLiIpWzBdCnBhZ2VzID0g bW9kZWwucGFnZXMKJGltZ19leHBvcnRlZCA9IDAKc3RhbmRhcmRfcGFnZXMg PSBbIkRlc3N1cyIsICJEZXNzb3VzIiwgIkF2YW50IiwgIkFycmllcmUiLCAi R2F1Y2hlIiwgIkRyb2l0ZSIsICJBdmFudF9HYXVjaGUiLCAiQXZhbnRfRHJv aXRlIiwgIkFycmllcmVfR2F1Y2hlIiwgIkFycmllcmVfRHJvaXRlIl0KcGFn ZXNfdG9fZXhwb3J0ID0gW10KCiMgU2VsZWN0IGV4cG9ydCBmb2xkZXIKY2Fz ZSAkaW1nX2Zvcm1hdAogIHdoZW4gImpwZyIKICAgIChhZG9fc2VsZWN0X2V4 cG9ydF9mb2xkZXIgIkpQRyIpCiAgd2hlbiAicG5nIgogICAgKGFkb19zZWxl Y3RfZXhwb3J0X2ZvbGRlciAiUE5HIikKICB3aGVuICJibXAiCiAgICAoYWRv X3NlbGVjdF9leHBvcnRfZm9sZGVyICJCTVAiKQogIHdoZW4gInRpZiIKICAg IChhZG9fc2VsZWN0X2V4cG9ydF9mb2xkZXIgIlRJRiIpCiAgd2hlbiAidGdh IgogICAgKGFkb19zZWxlY3RfZXhwb3J0X2ZvbGRlciAiVEdBIikKZW5kCgpj YXNlIHdoYXQKICB3aGVuICJhbGwiCiAgICBwYWdlc190b19leHBvcnQgPSBw YWdlcwogIHdoZW4gInVzZXIiCiAgICBwYWdlcy5lYWNoIGRvIHxwfAogICAg ICBpZiggbm90IHN0YW5kYXJkX3BhZ2VzLmluY2x1ZGU/IHAubmFtZSkKICAg ICAgICBwYWdlc190b19leHBvcnQucHVzaCBwCiAgICAgIGVuZAogICAgZW5k CiAgd2hlbiAic3RhbmRhcmQiCiAgICBwYWdlcy5lYWNoIGRvIHxwfAogICAg ICBpZiggc3RhbmRhcmRfcGFnZXMuaW5jbHVkZT8gcC5uYW1lKQogICAgICAg IHBhZ2VzX3RvX2V4cG9ydC5wdXNoIHAKICAgICAgZW5kCiAgICBlbmQKZW5k CiMgRGVmYXVsdCB2YWx1ZXMgaWYgbm90IGFscmVhZHkgbG9hZGVkCiRpbWdf Zm9ybWF0ID0gImpwZyIgaWYgbm90ICRpbWdfZm9ybWF0CiRpbWdfYWxpYXMg PSAiT3VpIiBpZiBub3QgJGltZ19hbGlhcwokaW1nX3dpZHRoID0gIjY0MCIg aWYgbm90ICRpbWdfd2lkdGgKJGltZ19oZWlnaHQgPSAiNDgwIiBpZiBub3Qg JGltZ19oZWlnaHQKJGV4cG9ydF9kaXIgPSAkdXNlcl9leHBvcnRfZGlyIGlm ICR1c2VyX2V4cG9ydF9kaXIKCmlmKCAkaW1nX2FsaWFzID09ICJPdWkiKQog IGFhID0gdHJ1ZQogIGVsc2UKICBhYSA9IGZhbHNlCmVuZAoKcGFnZXNfdG9f ZXhwb3J0LmVhY2ggZG8gfHB8CiAgcHV0cyAiUGFnZTogIiArIHAubmFtZQog IHBhZ2VfY2FtZXJhID0gcC5jYW1lcmEKICBwYWdlX25hbWUgPSBwLm5hbWUK ICB0bXBfdmlldyA9IG1vZGVsLmFjdGl2ZV92aWV3IAogIHRtcF92aWV3LmNh bWVyYSA9IHBhZ2VfY2FtZXJhCiAgIyBSZW5kZXJpbmcgb3B0aW9ucwogIChz ZXRfcGFnZV9yZW5kZXJpbmdfb3B0aW9ucyBwLCB0bXBfdmlldykKICAjIExh eWVycwogICMoc2V0X3BhZ2VfbGF5ZXJzIHAsIHRtcF92aWV3KQogIGxheWVy cyA9IHAubGF5ZXJzCiAgaWYgbGF5ZXJzIGFuZCBsYXllcnMubGVuZ3RoICE9 IDAKICAgIGxheWVycy5lYWNoIGRvIHxsfAogICAgICBsLnZpc2libGUgPSBm YWxzZQogICAgICB0bXBfdmlldy5pbnZhbGlkYXRlCiAgICBlbmQKICBlbmQK ICB0bXBfdmlldy5pbnZhbGlkYXRlCiAgCiAgIyBCYWNrIHRvIGN1cnJlbnQg Zm9sZGVyCkRpci5jaGRpcihGaWxlLmRpcm5hbWUobW9kZWwucGF0aCkpCgog ICMgRXhwb3J0IGltYWdlCiAgI3RtcF92aWV3LndyaXRlX2ltYWdlIEZpbGUu ZGlybmFtZShTa2V0Y2h1cC5hY3RpdmVfbW9kZWwucGF0aCkgKyAiXFwiICsg bW9kZWxfbmFtZSsgIl8iICsgcGFnZV9uYW1lICsgIi4iICsgJGltZ19mb3Jt YXQsICRpbWdfd2lkdGgudG9faSwgJGltZ19oZWlnaHQudG9faSwgYWEKICB0 bXBfdmlldy53cml0ZV9pbWFnZSAkZXhwb3J0X2RpciArICJcXCIgKyBtb2Rl bF9uYW1lKyAiXyIgKyBwYWdlX25hbWUgKyAiLiIgKyAkaW1nX2Zvcm1hdCwg JGltZ193aWR0aC50b19pLCAkaW1nX2hlaWdodC50b19pLCBhYQogICRpbWdf ZXhwb3J0ZWQgPSAkaW1nX2V4cG9ydGVkICsgMQogIFNrZXRjaHVwLnNldF9z dGF0dXNfdGV4dCgiRXhwb3J0IGltYWdlICIgKyAkaW1nX2V4cG9ydGVkLnRv X3MgKyAiOiAiICsgcGFnZV9uYW1lKQplbmQKVUkubWVzc2FnZWJveCgkaW1n X2V4cG9ydGVkLnRvX3MgKyAiIGltYWdlcyBleHBvcnRlZXNcbiBkYW5zIGxl IGRvc3NpZXI6XG4iICsgJGV4cG9ydF9kaXIgKQplbmQKCiMtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ3JlYXRl IHN0YW5kYXJkIHBhZ2VzCmRlZiBhZG9fY3JlYXRlX3N0YW5kYXJkX3BhZ2Vz Cm1vZGVsPVNrZXRjaHVwLmFjdGl2ZV9tb2RlbAojZGVmYXVsdCB2YWx1ZXMK JG9ydGhvX3BhZ2VzID0gIk91aSIgaWYgbm90ICRvcnRob19wYWdlcwokYXhv X3BhZ2VzID0gIk91aSIgaWYgbm90ICRheG9fcGFnZXMKJHJlbmRlcl9wYWdl cyA9ICJMaWduZXMgY2FjaGVlcyIgaWYgbm90ICRyZW5kZXJfcGFnZXMKJHNo YWRvd3NfcGFnZXMgPSAiTm9uIiBpZiBub3QgJHNoYWRvd3NfcGFnZXMKJHRy YW5zX3BhZ2VzID0gIk5vbiIgaWYgbm90ICR0cmFuc19wYWdlcwoKIyBFeGlz dGluZyBwYWdlcyBuYW1lcwpwYWdlcyA9IG1vZGVsLnBhZ2VzCiRwYWdlc19u YW1lcyA9IFtdCnBhZ2VzLmVhY2ggIGRvIHxwfAogICRwYWdlc19uYW1lcy5w dXNoKCBwLm5hbWUgKQplbmQKCiMgT3J0aG8gcGFnZXMgY3JlYXRpb24gaWYg bm90IGNyZWF0ZWQgeWV0CmlmKCAkb3J0aG9fcGFnZXMgPT0gIk91aSIgKSBh bmQgbm90ICggJHBhZ2VzX25hbWVzLmluY2x1ZGU/KCAiVG9wIikgKQogIChh ZG9fY3JlYXRlX29ydGhvX3BhZ2VzICRyZW5kZXJfcGFnZXMsICRzaGFkb3dz X3BhZ2VzLCAkdHJhbnNfcGFnZXMpCiAgZWxzZQogIFVJLm1lc3NhZ2Vib3go IlBhcyBiZXNvaW4gZGUgcmVjcmVlciBsZXMgcGFnZXMgb3J0aG9nb25hbGVz IHN0YW5kYXJkLiIpCmVuZAojIEF4b25vbWV0cmljIHBhZ2VzIGNyZWF0aW9u IGlmIG5vdCBjcmVhdGVkIHlldAogIGlmKCAkYXhvX3BhZ2VzID09ICJPdWki ICkgYW5kIG5vdCAoICRwYWdlc19uYW1lcy5pbmNsdWRlPyggIkZyb250X0xl ZnQiKSApCiAgICAoYWRvX2NyZWF0ZV9heG9fcGFnZXMgJHJlbmRlcl9wYWdl cywgJHNoYWRvd3NfcGFnZXMsICR0cmFuc19wYWdlcykKICAgIGVsc2UKICAg IFVJLm1lc3NhZ2Vib3goIlBhcyBiZXNvaW4gZGUgcmVjcmVlciBsZXMgcGFn ZXMgYXhvbm9tZXRyaXF1ZXMgc3RhbmRhcmQuIikKICBlbmQKZW5kCgoKIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSBDcmVhdGUgYXhvbm9tZXRyaWMgcGFnZXMgd2l0aCBzcGVjaWZpZWQgcmVu ZGVyIHR5cGUKZGVmIGFkb19jcmVhdGVfb3J0aG9fcGFnZXMoIHJlbmRlcl90 eXBlLCBzaGFkb3dzLCB0cmFuc3BhcmVuY3kpCgojZGVmYXVsdCB2YWx1ZXMK JG9ydGhvX3BhZ2VzID0gIk91aSIgaWYgbm90ICRvcnRob19wYWdlcwokYXhv X3BhZ2VzID0gIk91aSIgaWYgbm90ICRheG9fcGFnZXMKJHJlbmRlcl9wYWdl cyA9ICJMaWduZXMgY2FjaGVlcyIgaWYgbm90ICRyZW5kZXJfcGFnZXMKJHNo YWRvd3NfcGFnZXMgPSAiTm9uIiBpZiBub3QgJHNoYWRvd3NfcGFnZXMKJHRy YW5zX3BhZ2VzID0gIk5vbiIgaWYgbm90ICR0cmFuc19wYWdlcwoKIyBDdXJy ZW50IHBhcmFtcwptb2RlbD1Ta2V0Y2h1cC5hY3RpdmVfbW9kZWwKcGFnZXM9 bW9kZWwucGFnZXMKbnVtX3BhZ2VzPXBhZ2VzLmNvdW50CnBhZ2VzX25hbWVz ID0gW10KcGFnZXMuZWFjaCB7fHBhZ2V8IHBhZ2VzX25hbWVzLnB1c2goIHBh Z2UubmFtZSApfQp2aWV3PW1vZGVsLmFjdGl2ZV92aWV3CmNhbWVyYT12aWV3 LmNhbWVyYQoKcGFnZXNfbGFiZWxzID0gWyJEZXNzdXMiLCAiRGVzc291cyIs ICJBdmFudCIsICJBcnJpZXJlIiwgIkdhdWNoZSIsICJEcm9pdGUiXQoKaWYg cGFnZXNfbmFtZXMuaW5jbHVkZT8oIlRvcCIpCiAgYnV0dG9uX3ByZXNzID0g VUkubWVzc2FnZWJveCgiUGFnZXMgb3J0aG9nb25hbGVzIGV4aXN0YW50ZXMu IExlcyByZS1jcmVlciA/IiwgTUJfWUVTTk8pCiAgaWYgYnV0dG9uX3ByZXNz ID09IDYKICAgIHB1dHMgKCJNaXNlIGEgam91ciBkZXMgcGFnZXMgYXZlYyBs ZXMgcGFyYW1ldHJlcyBkZSBsJ2FmZmljaGFnZSBjb3VyYW50IikKICAgIHBh Z2VzLmVhY2ggZG8gfHB8CiAgICAgIGlmIHBhZ2VzX2xhYmVscy5pbmNsdWRl PyhwLm5hbWUpCiAgICAgICAgKHNldF9yZW5kZXJpbmdfb3B0aW9uICRyZW5k ZXJfcGFnZXMsICRzaGFkb3dzX3BhZ2VzLCAkdHJhbnNfcGFnZXMpCiAgICAg ICAgcC51cGRhdGUKICAgICAgZW5kCiAgICBlbmQKICBlbHNlCiAgICBicmVh awogIGVuZAplbmQKCiMgVG9wIHZpZXcKY2FtZXJhLnNldCBbMCwwLDEwMDBd LCBbMCwwLDBdLCBbMCwxLDBdLCBmYWxzZQp2aWV3Lnpvb21fZXh0ZW50cwpu ZXdfcGFnZSA9IHBhZ2VzLmFkZCAiRGVzc3VzIgooc2V0X3JlbmRlcmluZ19v cHRpb24gJHJlbmRlcl9wYWdlcywgJHNoYWRvd3NfcGFnZXMsICR0cmFuc19w YWdlcykKdmlldy56b29tX2V4dGVudHMKdmlldy5pbnZhbGlkYXRlCm5ld19w YWdlLnVwZGF0ZQojICBCb3R0b20gdmlldwpjYW1lcmEuc2V0IFswLDAsLTEw MDBdLCBbMCwwLDBdLCBbMCwxLDBdLCBmYWxzZQp2aWV3Lnpvb21fZXh0ZW50 cwpuZXdfcGFnZSA9IHBhZ2VzLmFkZCAiRGVzc291cyIKKHNldF9yZW5kZXJp bmdfb3B0aW9uICRyZW5kZXJfcGFnZXMsICRzaGFkb3dzX3BhZ2VzLCAkdHJh bnNfcGFnZXMpCnZpZXcuem9vbV9leHRlbnRzCnZpZXcuaW52YWxpZGF0ZQpu ZXdfcGFnZS51cGRhdGUKIyBGcm9udCB2aWV3CmNhbWVyYS5zZXQgWzAsLTEw MDAsMF0sIFswLDAsMF0sIFswLDAsMV0sIGZhbHNlCnZpZXcuem9vbV9leHRl bnRzCm5ld19wYWdlID0gcGFnZXMuYWRkICJBdmFudCIKKHNldF9yZW5kZXJp bmdfb3B0aW9uICRyZW5kZXJfcGFnZXMsICRzaGFkb3dzX3BhZ2VzLCAkdHJh bnNfcGFnZXMpCnZpZXcuem9vbV9leHRlbnRzCnZpZXcuaW52YWxpZGF0ZQpu ZXdfcGFnZS51cGRhdGUKIyBSZWFyIHZpZXcKY2FtZXJhLnNldCBbMCwxMDAw LDBdLCBbMCwwLDBdLCBbMCwwLDFdLCBmYWxzZQp2aWV3Lnpvb21fZXh0ZW50 cwpuZXdfcGFnZSA9IHBhZ2VzLmFkZCAiQXJyaWVyZSIKKHNldF9yZW5kZXJp bmdfb3B0aW9uICRyZW5kZXJfcGFnZXMsICRzaGFkb3dzX3BhZ2VzLCAkdHJh bnNfcGFnZXMpCnZpZXcuem9vbV9leHRlbnRzCnZpZXcuaW52YWxpZGF0ZQpu ZXdfcGFnZS51cGRhdGUKIyBMZWZ0IHZpZXcKY2FtZXJhLnNldCBbLTEwMDAs MCwwXSwgWzAsMCwwXSwgWzAsMCwxXSwgZmFsc2UKdmlldy56b29tX2V4dGVu dHMKbmV3X3BhZ2UgPSBwYWdlcy5hZGQgIkdhdWNoZSIKKHNldF9yZW5kZXJp bmdfb3B0aW9uICRyZW5kZXJfcGFnZXMsICRzaGFkb3dzX3BhZ2VzLCAkdHJh bnNfcGFnZXMpCnZpZXcuem9vbV9leHRlbnRzCnZpZXcuaW52YWxpZGF0ZQpu ZXdfcGFnZS51cGRhdGUKIyBSaWdodCB2aWV3CmNhbWVyYS5zZXQgWzEwMDAs MCwwXSwgWzAsMCwwXSwgWzAsMCwxXSwgZmFsc2UKdmlldy56b29tX2V4dGVu dHMKbmV3X3BhZ2UgPSBwYWdlcy5hZGQgIkRyb2l0ZSIKKHNldF9yZW5kZXJp bmdfb3B0aW9uICRyZW5kZXJfcGFnZXMsICRzaGFkb3dzX3BhZ2VzLCAkdHJh bnNfcGFnZXMpCnZpZXcuem9vbV9leHRlbnRzCnZpZXcuaW52YWxpZGF0ZQpu ZXdfcGFnZS51cGRhdGUKZW5kCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENyZWF0ZSBheG9ub21ldHJpYyBw YWdlcyB3aXRoIHNwZWNpZmllZCByZW5kZXIgdHlwZQpkZWYgYWRvX2NyZWF0 ZV9heG9fcGFnZXMoIHJlbmRlcl90eXBlLCBzaGFkb3dzLCB0cmFuc3BhcmVu Y3kpCiMgRGVmYXVsdCB2YWx1ZXMKI2RlZmF1bHQgdmFsdWVzCiRvcnRob19w YWdlcyA9ICJPdWkiIGlmIG5vdCAkb3J0aG9fcGFnZXMKJGF4b19wYWdlcyA9 ICJPdWkiIGlmIG5vdCAkYXhvX3BhZ2VzCiRyZW5kZXJfcGFnZXMgPSAiTGln bmVzIGNhY2hlZXMiIGlmIG5vdCAkcmVuZGVyX3BhZ2VzCiRzaGFkb3dzX3Bh Z2VzID0gIk5vbiIgaWYgbm90ICRzaGFkb3dzX3BhZ2VzCiR0cmFuc19wYWdl cyA9ICJOb24iIGlmIG5vdCAkdHJhbnNfcGFnZXMKJGFuZ2xlX2F6aW11dGhf cGFnZXMgPSAtNDUuMCBpZiBub3QgJGFuZ2xlX2F6aW11dGhfcGFnZXMKJGFu Z2xlX2hhdXRldXJfcGFnZXMgPSA0NS4wIGlmIG5vdCAkYW5nbGVfaGF1dGV1 cl9wYWdlcwojIEN1cnJlbnQgcGFyYW1zCm1vZGVsID0gU2tldGNodXAuYWN0 aXZlX21vZGVsCnBhZ2VzID0gbW9kZWwucGFnZXMKbnVtX3BhZ2VzID0gcGFn ZXMuY291bnQKdmlldyA9IG1vZGVsLmFjdGl2ZV92aWV3CmNhbWVyYSA9IHZp ZXcuY2FtZXJhCnRfcm90X3BsdXNfcGlzMiA9IEdlb206OlRyYW5zZm9ybWF0 aW9uLnJvdGF0aW9uKFswLjAsMC4wLDAuMF0sIFswLjAsMC4wLDEuMF0sIGRl ZzJyYWQoIDkwLjAgKSkKCiMgQ29tcHV0ZSBjYW1lcmEgdmlld3BvaW50IHBv c2l0aW9uID0gJGNhbWVyYV9wb3NpdGlvbgooYWRvX2NhbWVyYV9wb3NpdGlv biAkYW5nbGVfYXppbXV0aF9wYWdlcywgJGFuZ2xlX2hhdXRldXJfcGFnZXMp CgoKIyBGcm9udC1MZWZ0IHZpZXcKY2FtZXJhLnNldCBbJHZlY19jYW1lcmFf cG9zaXRpb24ueCwkdmVjX2NhbWVyYV9wb3NpdGlvbi55LCR2ZWNfY2FtZXJh X3Bvc2l0aW9uLnpdICwgWzAsMCwwXSwgJHZlY191cCwgZmFsc2UKdmlldy56 b29tX2V4dGVudHMKbmV3X3BhZ2UgPSBwYWdlcy5hZGQgIkF2YW50X0dhdWNo ZSIKKHNldF9yZW5kZXJpbmdfb3B0aW9uICRyZW5kZXJfcGFnZXMsICRzaGFk b3dzX3BhZ2VzLCAkdHJhbnNfcGFnZXMpCnZpZXcuem9vbV9leHRlbnRzCnZp ZXcuaW52YWxpZGF0ZQpuZXdfcGFnZS51cGRhdGUKIyBGcm9udC1SaWdodCB2 aWV3CiR2ZWNfY2FtZXJhX2Zyb250X3JpZ2h0ID0gJHZlY19jYW1lcmFfcG9z aXRpb24udHJhbnNmb3JtKHRfcm90X3BsdXNfcGlzMikKJHZlY191cF9mcm9u dF9yaWdodCA9ICR2ZWNfdXAudHJhbnNmb3JtKHRfcm90X3BsdXNfcGlzMikK I2NhbWVyYS5zZXQgWzEwMDAsLTEwMDAsMTAwMF0sIFswLDAsMF0sIFstMSwx LDFdLCBmYWxzZQpjYW1lcmEuc2V0IFskdmVjX2NhbWVyYV9mcm9udF9yaWdo dC54LCR2ZWNfY2FtZXJhX2Zyb250X3JpZ2h0LnksJHZlY19jYW1lcmFfZnJv bnRfcmlnaHQuel0sIFswLDAsMF0sICR2ZWNfdXBfZnJvbnRfcmlnaHQsIGZh bHNlCnZpZXcuem9vbV9leHRlbnRzCm5ld19wYWdlID0gcGFnZXMuYWRkICJB dmFudF9Ecm9pdGUiCihzZXRfcmVuZGVyaW5nX29wdGlvbiAkcmVuZGVyX3Bh Z2VzLCAkc2hhZG93c19wYWdlcywgJHRyYW5zX3BhZ2VzKQp2aWV3Lnpvb21f ZXh0ZW50cwp2aWV3LmludmFsaWRhdGUKbmV3X3BhZ2UudXBkYXRlCiMgUmVh ci1MZWZ0IHZpZXcKJHZlY19jYW1lcmFfcmVhcl9sZWZ0ID0gJHZlY19jYW1l cmFfZnJvbnRfcmlnaHQudHJhbnNmb3JtKHRfcm90X3BsdXNfcGlzMikKJHZl Y191cF9yZWFyX2xlZnQgPSAkdmVjX3VwX2Zyb250X3JpZ2h0LnRyYW5zZm9y bSh0X3JvdF9wbHVzX3BpczIpCiNjYW1lcmEuc2V0IFsxMDAwLDEwMDAsMTAw MF0sIFswLDAsMF0sIFstMSwtMSwxXSwgZmFsc2UKY2FtZXJhLnNldCBbJHZl Y19jYW1lcmFfcmVhcl9sZWZ0LngsJHZlY19jYW1lcmFfcmVhcl9sZWZ0Lnks JHZlY19jYW1lcmFfcmVhcl9sZWZ0LnpdLCBbMCwwLDBdLCAkdmVjX3VwX3Jl YXJfbGVmdCwgZmFsc2UKdmlldy56b29tX2V4dGVudHMKbmV3X3BhZ2UgPSBw YWdlcy5hZGQgIkFycmllcmVfR2F1Y2hlIgooc2V0X3JlbmRlcmluZ19vcHRp b24gJHJlbmRlcl9wYWdlcywgJHNoYWRvd3NfcGFnZXMsICR0cmFuc19wYWdl cykKdmlldy56b29tX2V4dGVudHMKdmlldy5pbnZhbGlkYXRlCm5ld19wYWdl LnVwZGF0ZQojIFJlYXItUmlnaHQgdmlldwokdmVjX2NhbWVyYV9yZWFyX3Jp Z2h0ID0gJHZlY19jYW1lcmFfcmVhcl9sZWZ0LnRyYW5zZm9ybSh0X3JvdF9w bHVzX3BpczIpCiR2ZWNfdXBfcmVhcl9yaWdodCA9ICR2ZWNfdXBfcmVhcl9s ZWZ0LnRyYW5zZm9ybSh0X3JvdF9wbHVzX3BpczIpCiNjYW1lcmEuc2V0IFst MTAwMCwxMDAwLDEwMDBdLCBbMCwwLDBdLCBbMSwtMSwxXSwgZmFsc2UKY2Ft ZXJhLnNldCBbJHZlY19jYW1lcmFfcmVhcl9yaWdodC54LCR2ZWNfY2FtZXJh X3JlYXJfcmlnaHQueSwkdmVjX2NhbWVyYV9yZWFyX3JpZ2h0LnpdLCBbMCww LDBdLCAkdmVjX3VwX3JlYXJfcmlnaHQsIGZhbHNlCnZpZXcuem9vbV9leHRl bnRzCm5ld19wYWdlID0gcGFnZXMuYWRkICJBcnJpZXJlX0Ryb2l0ZSIKKHNl dF9yZW5kZXJpbmdfb3B0aW9uICRyZW5kZXJfcGFnZXMsICRzaGFkb3dzX3Bh Z2VzLCAkdHJhbnNfcGFnZXMpCnZpZXcuem9vbV9leHRlbnRzCnZpZXcuaW52 YWxpZGF0ZQpuZXdfcGFnZS51cGRhdGUKCmVuZAoKIy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhQT1JU IEZVTkNUSU9OUwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXRyBFWFBPUlQK Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9ydCBwYWdlcyB0byBEV0cgZmlsZXMK ZGVmIGFkb19leHBvcnRfZHdnX2Zyb21fcGFnZXMoIHdoYXQgKQptb2RlbCA9 IFNrZXRjaHVwLmFjdGl2ZV9tb2RlbApwYWdlcyA9IG1vZGVsLnBhZ2VzCiRk d2dfZXhwb3J0ZWQgPSAwCnN0YW5kYXJkX3BhZ2VzID0gWyJEZXNzdXMiLCAi RGVzc291cyIsICJBdmFudCIsICJBcnJpZXJlIiwgIkdhdWNoZSIsICJEcm9p dGUiLCAiQXZhbnRfR2F1Y2hlIiwgIkF2YW50X0Ryb2l0ZSIsICJBcnJpZXJl X0dhdWNoZSIsICJBcnJpZXJlX0Ryb2l0ZSJdCnBhZ2VzX3RvX2V4cG9ydCA9 IFtdCgooYWRvX3NlbGVjdF9leHBvcnRfZm9sZGVyICJEV0ciKQoKY2FzZSB3 aGF0CiAgd2hlbiAiYWxsIgogICAgcGFnZXNfdG9fZXhwb3J0ID0gcGFnZXMK ICB3aGVuICJ1c2VyIgogICAgcGFnZXMuZWFjaCBkbyB8cHwKICAgICAgaWYo IG5vdCBzdGFuZGFyZF9wYWdlcy5pbmNsdWRlPyBwLm5hbWUpCiAgICAgICAg cGFnZXNfdG9fZXhwb3J0LnB1c2ggcAogICAgICBlbmQKICAgIGVuZAogIHdo ZW4gInN0YW5kYXJkIgogICAgcGFnZXMuZWFjaCBkbyB8cHwKICAgICAgaWYo IHN0YW5kYXJkX3BhZ2VzLmluY2x1ZGU/IHAubmFtZSkKICAgICAgICBwYWdl c190b19leHBvcnQucHVzaCBwCiAgICAgIGVuZAogICAgZW5kCmVuZAoKcGFn ZXNfdG9fZXhwb3J0LmVhY2ggZG8gfHB8CiAgcGFnZV9jYW1lcmEgPSBwLmNh bWVyYQogIHBhZ2VfbmFtZSA9IHAubmFtZQogIHRtcF92aWV3ID0gbW9kZWwu YWN0aXZlX3ZpZXcgCiAgdG1wX3ZpZXcuY2FtZXJhID0gcGFnZV9jYW1lcmEK ICAjdG1wX3ZpZXcuem9vbV9leHRlbnRzCiAgIyBSZW5kZXJpbmcgb3B0aW9u cwogIChzZXRfcGFnZV9yZW5kZXJpbmdfb3B0aW9ucyBwLCB0bXBfdmlldykK ICAjIExheWVycwogICMoc2V0X3BhZ2VfbGF5ZXJzIHAsIHRtcF92aWV3KQog IGxheWVycyA9IHAubGF5ZXJzCiAgaWYgbGF5ZXJzIGFuZCBsYXllcnMubGVu Z3RoICE9IDAKICAgIGxheWVycy5lYWNoIGRvIHxsfAogICAgICBsLnZpc2li bGUgPSBmYWxzZQogICAgICB0bXBfdmlldy5pbnZhbGlkYXRlCiAgICBlbmQK ICBlbmQKICB0bXBfdmlldy5pbnZhbGlkYXRlCiAgCiAgIyBFeHBvcnQgZHdn CiAgICBwdXRzICJQYWdlOiAiICsgcGFnZV9uYW1lCiAgICAoYWRvX2V4cG9y dF9kd2dfcGFnZSBwYWdlX25hbWUpCiAgICBVSS5tZXNzYWdlYm94KCJMYSBw YWdlOiAiICsgcGFnZV9uYW1lICsgIiBleGlzdGUgZXQgYSBldGUgcmUtZW5y ZWdpc3RyZWUuIikKICAgICRkd2dfZXhwb3J0ZWQgPSAkZHdnX2V4cG9ydGVk ICsgMQogICAgU2tldGNodXAuc2V0X3N0YXR1c190ZXh0KCJFeHBvcnQgRFdH OiAiICsgJGR3Z19leHBvcnRlZC50b19zICsgIjogIiArIHBhZ2VfbmFtZSkK ICAjZW5kCmVuZAoKIyBCYWNrIHRvIGN1cnJlbnQgZm9sZGVyCkRpci5jaGRp cihGaWxlLmRpcm5hbWUobW9kZWwucGF0aCkpCgojIEVuZCBtZXNzYWdlClVJ Lm1lc3NhZ2Vib3goICRkd2dfZXhwb3J0ZWQudG9fcyArICIgZmljaGllcnMg RFdHXG5leHBvcnRlcyBkYW5zIGxlIGRvc3NpZXI6XG4iICsgJGV4cG9ydF9k aXIgKQplbmQKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gRXhwb3J0IGEgcGFnZSB0byBEV0cgZmlsZQpkZWYg YWRvX2V4cG9ydF9kd2dfcGFnZSggcF9uYW1lICkKbW9kZWwgPSBTa2V0Y2h1 cC5hY3RpdmVfbW9kZWwKbW9kZWxfbmFtZSA9IEZpbGUuYmFzZW5hbWUobW9k ZWwucGF0aCkuc3BsaXQoIi4iKVswXQp0bXBfdmlldyA9IG1vZGVsLmFjdGl2 ZV92aWV3CnBhZ2VfY2FtZXJhID0gbW9kZWwucGFnZXNbcF9uYW1lXS5jYW1l cmEKdG1wX3ZpZXcuY2FtZXJhID0gcGFnZV9jYW1lcmEKdG1wX3ZpZXcuem9v bV9leHRlbnRzCnRtcF92aWV3LmludmFsaWRhdGUKaSA9IDIKCmlmICggKGku ZGl2bW9kIDIpICA9PSAwICkKIyBvcGVuIEV4cG9ydCBhcyBHcmFwaGljcwpT a2V0Y2h1cC5zZW5kX2FjdGlvbiAyMTIzNwpzZW5kID0gV2luMzJBUEkubmV3 KCIuL1BsdWdpbnMvQXV0b0l0WDMuZGxsIiwgIkFVM19TZW5kIiwgWydQJywn TCddLCAnVicpCiMgZW50ZXIgZmlsZW5hbWUKc2VuZC5jYWxsKCRleHBvcnRf ZGlyICsgIlxcIiArIG1vZGVsX25hbWUgKyAiXyIgKyBwX25hbWUsMCkKIyBz ZWxlY3QgRVBTCnNlbmQuY2FsbCgie1RBQn0iLDApCiNzZW5kLmNhbGwoInth fSIsMCkKc2VuZC5jYWxsKCJ7RE9XTn0iLDApCnNlbmQuY2FsbCgie0RPV059 IiwwKQpzZW5kLmNhbGwoIntET1dOfSIsMCkKc2VuZC5jYWxsKCJ7RE9XTn0i LDApCnNlbmQuY2FsbCgie0RPV059IiwwKQpzZW5kLmNhbGwoIntET1dOfSIs MCkKc2VuZC5jYWxsKCJ7RE9XTn0iLDApCnNlbmQuY2FsbCgie0RPV059Iiww KQpzZW5kLmNhbGwoIntET1dOfSIsMCkKc2VuZC5jYWxsKCJ7RE9XTn0iLDAp CnNlbmQuY2FsbCgie1VQfSIsMCkKc2VuZC5jYWxsKCJ7VEFCfSIsMCkKIyBl eHBvcnQKc2VuZC5jYWxsKCJ7RW50ZXJ9IiwwKQojIGlmIGZpbGUgYWxyZWFk eSBleGlzdHMgb3ZlcndyaXRlCnNlbmQuY2FsbCgie0xFRlR9IiwwKQpzZW5k LmNhbGwoIntFbnRlcn0iLDApCgpzZW5kLmNhbGwoIntFbnRlcn0iLDApCmkg PSBpICsgMQplbHNlCiMgb3BlbiBFeHBvcnQgYXMgR3JhcGhpY3MKU2tldGNo dXAuc2VuZF9hY3Rpb24gMjEyMzcKc2VuZCA9IFdpbjMyQVBJLm5ldygiLi9Q bHVnaW5zL0F1dG9JdFgzLmRsbCIsICJBVTNfU2VuZCIsIFsnUCcsJ0wnXSwg J1YnKQojIGVudGVyIGZpbGVuYW1lCnNlbmQuY2FsbCgkZXhwb3J0X2RpciAr ICJcXCIgKyBtb2RlbF9uYW1lICsgIl8iICsgcF9uYW1lLDApCiMgc2VsZWN0 IEVQUwpzZW5kLmNhbGwoIntUQUJ9IiwwKQojc2VuZC5jYWxsKCJ7YSAyfSIs MCkKc2VuZC5jYWxsKCJ7RE9XTn0iLDApCnNlbmQuY2FsbCgie0RPV059Iiww KQpzZW5kLmNhbGwoIntET1dOfSIsMCkKc2VuZC5jYWxsKCJ7RE9XTn0iLDAp CnNlbmQuY2FsbCgie0RPV059IiwwKQpzZW5kLmNhbGwoIntET1dOfSIsMCkK c2VuZC5jYWxsKCJ7RE9XTn0iLDApCnNlbmQuY2FsbCgie0RPV059IiwwKQpz ZW5kLmNhbGwoIntET1dOfSIsMCkKc2VuZC5jYWxsKCJ7RE9XTn0iLDApCnNl bmQuY2FsbCgie1VQfSIsMCkKc2VuZC5jYWxsKCJ7VEFCfSIsMCkKIyBleHBv cnQKc2VuZC5jYWxsKCJ7RW50ZXJ9IiwwKQojIGlmIGZpbGUgYWxyZWFkeSBl eGlzdHMgb3ZlcndyaXRlCnNlbmQuY2FsbCgie0xFRlR9IiwwKQpzZW5kLmNh bGwoIntFbnRlcn0iLDApCgpzZW5kLmNhbGwoIntFbnRlcn0iLDApCmkgPSBp ICsgMQplbmQKCmVuZAoKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIERYRiBFWFBPUlQKIy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tIEV4cG9ydCBwYWdlcyB0byBEWEYgZmlsZXMKZGVmIGFkb19l eHBvcnRfZHhmX2Zyb21fcGFnZXMoIHdoYXQgKQptb2RlbCA9IFNrZXRjaHVw LmFjdGl2ZV9tb2RlbApwYWdlcyA9IG1vZGVsLnBhZ2VzCiRkeGZfZXhwb3J0 ZWQgPSAwCnN0YW5kYXJkX3BhZ2VzID0gWyJEZXNzdXMiLCAiRGVzc291cyIs ICJBdmFudCIsICJBcnJpZXJlIiwgIkdhdWNoZSIsICJEcm9pdGUiLCAiQXZh bnRfR2F1Y2hlIiwgIkF2YW50X0Ryb2l0ZSIsICJBcnJpZXJlX0dhdWNoZSIs ICJBcnJpZXJlX0Ryb2l0ZSJdCnBhZ2VzX3RvX2V4cG9ydCA9IFtdCihhZG9f c2VsZWN0X2V4cG9ydF9mb2xkZXIgIkRYRiIpCgpjYXNlIHdoYXQKICB3aGVu ICJhbGwiCiAgICBwYWdlc190b19leHBvcnQgPSBwYWdlcwogIHdoZW4gInVz ZXIiCiAgICBwYWdlcy5lYWNoIGRvIHxwfAogICAgICBpZiggbm90IHN0YW5k YXJkX3BhZ2VzLmluY2x1ZGU/IHAubmFtZSkKICAgICAgICBwYWdlc190b19l eHBvcnQucHVzaCBwCiAgICAgIGVuZAogICAgZW5kCiAgd2hlbiAic3RhbmRh cmQiCiAgICBwYWdlcy5lYWNoIGRvIHxwfAogICAgICBpZiggc3RhbmRhcmRf cGFnZXMuaW5jbHVkZT8gcC5uYW1lKQogICAgICAgIHBhZ2VzX3RvX2V4cG9y dC5wdXNoIHAKICAgICAgZW5kCiAgICBlbmQKZW5kCgpwYWdlc190b19leHBv cnQuZWFjaCBkbyB8cHwKICBwYWdlX2NhbWVyYSA9IHAuY2FtZXJhCiAgcGFn ZV9uYW1lID0gcC5uYW1lCiAgdG1wX3ZpZXcgPSBtb2RlbC5hY3RpdmVfdmll dyAKICB0bXBfdmlldy5jYW1lcmEgPSBwYWdlX2NhbWVyYQogICMgUmVuZGVy aW5nIG9wdGlvbnMKICAoc2V0X3BhZ2VfcmVuZGVyaW5nX29wdGlvbnMgcCwg dG1wX3ZpZXcpCiAgIyBMYXllcnMKICAjKHNldF9wYWdlX2xheWVycyBwLCB0 bXBfdmlldykKICBsYXllcnMgPSBwLmxheWVycwogIGlmIGxheWVycyBhbmQg bGF5ZXJzLmxlbmd0aCAhPSAwCiAgICBsYXllcnMuZWFjaCBkbyB8bHwKICAg ICAgbC52aXNpYmxlID0gZmFsc2UKICAgICAgdG1wX3ZpZXcuaW52YWxpZGF0 ZQogICAgZW5kCiAgZW5kCiAgI3RtcF92aWV3Lnpvb21fZXh0ZW50cwogIHRt cF92aWV3LmludmFsaWRhdGUKICAKICAjIEV4cG9ydCBkeGYgCiAgICBwdXRz ICJQYWdlOiAiICsgcGFnZV9uYW1lCiAgICAoYWRvX2V4cG9ydF9keGZfcGFn ZSBwYWdlX25hbWUpCiAgICBVSS5tZXNzYWdlYm94KCJMYSBwYWdlOiAiICsg cGFnZV9uYW1lICsgIiBleGlzdGUgZXQgYSBldGUgcmUtZW5yZWdpc3RyZWUu IikKICAgICRkeGZfZXhwb3J0ZWQgPSAkZHhmX2V4cG9ydGVkICsgMQogICAg U2tldGNodXAuc2V0X3N0YXR1c190ZXh0KCJFeHBvcnQgRFhGOiAiICsgJGR3 Z19leHBvcnRlZC50b19zICsgIjogIiArIHBhZ2VfbmFtZSkKICAjZW5kCmVu ZAoKIyBCYWNrIHRvIGN1cnJlbnQgZm9sZGVyCkRpci5jaGRpcihGaWxlLmRp cm5hbWUobW9kZWwucGF0aCkpCgojIEVuZCBtZXNzYWdlClVJLm1lc3NhZ2Vi b3goICRkeGZfZXhwb3J0ZWQudG9fcyArICIgZmljaGllcnMgRFhGXG5leHBv cnRlcyBkYW5zIGxlIGRvc3NpZXI6XG4iICsgJGV4cG9ydF9kaXIgKQplbmQK CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gRXhwb3J0IGEgcGFnZSB0byBEWEYgZmlsZQpkZWYgYWRvX2V4cG9y dF9keGZfcGFnZSggcF9uYW1lICkKbW9kZWwgPSBTa2V0Y2h1cC5hY3RpdmVf bW9kZWwKbW9kZWxfbmFtZSA9IEZpbGUuYmFzZW5hbWUobW9kZWwucGF0aCku c3BsaXQoIi4iKVswXQp0bXBfdmlldyA9IG1vZGVsLmFjdGl2ZV92aWV3CnBh Z2VfY2FtZXJhID0gbW9kZWwucGFnZXNbcF9uYW1lXS5jYW1lcmEKdG1wX3Zp ZXcuY2FtZXJhID0gcGFnZV9jYW1lcmEKdG1wX3ZpZXcuem9vbV9leHRlbnRz CnRtcF92aWV3LmludmFsaWRhdGUKIyBvcGVuIEV4cG9ydCBhcyBHcmFwaGlj cwpTa2V0Y2h1cC5zZW5kX2FjdGlvbiAyMTIzNwpzZW5kID0gV2luMzJBUEku bmV3KCIuL1BsdWdpbnMvQXV0b0l0WDMuZGxsIiwgIkFVM19TZW5kIiwgWydQ JywnTCddLCAnVicpCiMgZW50ZXIgZmlsZW5hbWUKc2VuZC5jYWxsKCRleHBv cnRfZGlyICsgIlxcIiArIG1vZGVsX25hbWUgKyAiXyIgKyAgcF9uYW1lLDAp CiMgc2VsZWN0IEVQUwpzZW5kLmNhbGwoIntUQUJ9IiwwKQojc2VuZC5jYWxs KCJ7YSAyfSIsMCkKc2VuZC5jYWxsKCJ7RE9XTn0iLDApCnNlbmQuY2FsbCgi e0RPV059IiwwKQpzZW5kLmNhbGwoIntET1dOfSIsMCkKc2VuZC5jYWxsKCJ7 RE9XTn0iLDApCnNlbmQuY2FsbCgie0RPV059IiwwKQpzZW5kLmNhbGwoIntE T1dOfSIsMCkKc2VuZC5jYWxsKCJ7RE9XTn0iLDApCnNlbmQuY2FsbCgie0RP V059IiwwKQpzZW5kLmNhbGwoIntET1dOfSIsMCkKc2VuZC5jYWxsKCJ7RE9X Tn0iLDApCnNlbmQuY2FsbCgie1RBQn0iLDApCiMgZXhwb3J0CnNlbmQuY2Fs bCgie0VudGVyfSIsMCkKIyBpZiBmaWxlIGFscmVhZHkgZXhpc3RzIG92ZXJ3 cml0ZQpzZW5kLmNhbGwoIntMRUZUfSIsMCkKc2VuZC5jYWxsKCJ7RW50ZXJ9 IiwwKQoKc2VuZC5jYWxsKCJ7RW50ZXJ9IiwwKQplbmQKCgojLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF UFMgRVhQT1JUCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFeHBvcnQgaWtlYSBwYWdl cyB0byBwb3N0c2NyaXB0IGZpbGVzCmRlZiBhZG9fZXhwb3J0X2Vwc19mcm9t X3BhZ2VzKCB3aGF0ICkKbW9kZWwgPSBTa2V0Y2h1cC5hY3RpdmVfbW9kZWwK cGFnZXMgPSBtb2RlbC5wYWdlcwokZXBzX2V4cG9ydGVkID0gMApzdGFuZGFy ZF9wYWdlcyA9IFsiRGVzc3VzIiwgIkRlc3NvdXMiLCAiQXZhbnQiLCAiQXJy aWVyZSIsICJHYXVjaGUiLCAiRHJvaXRlIiwgIkF2YW50X0dhdWNoZSIsICJB dmFudF9Ecm9pdGUiLCAiQXJyaWVyZV9HYXVjaGUiLCAiQXJyaWVyZV9Ecm9p dGUiXQpwYWdlc190b19leHBvcnQgPSBbXQooYWRvX3NlbGVjdF9leHBvcnRf Zm9sZGVyICJFUFMiKQoKY2FzZSB3aGF0CiAgd2hlbiAiYWxsIgogICAgcGFn ZXNfdG9fZXhwb3J0ID0gcGFnZXMKICB3aGVuICJ1c2VyIgogICAgcGFnZXMu ZWFjaCBkbyB8cHwKICAgICAgaWYoIG5vdCBzdGFuZGFyZF9wYWdlcy5pbmNs dWRlPyBwLm5hbWUpCiAgICAgICAgcGFnZXNfdG9fZXhwb3J0LnB1c2ggcAog ICAgICBlbmQKICAgIGVuZAogIHdoZW4gInN0YW5kYXJkIgogICAgcGFnZXMu ZWFjaCBkbyB8cHwKICAgICAgaWYoIHN0YW5kYXJkX3BhZ2VzLmluY2x1ZGU/ IHAubmFtZSkKICAgICAgICBwYWdlc190b19leHBvcnQucHVzaCBwCiAgICAg IGVuZAogICAgZW5kCmVuZAoKcGFnZXNfdG9fZXhwb3J0LmVhY2ggZG8gfHB8 CiAgcGFnZV9jYW1lcmEgPSBwLmNhbWVyYQogIHBhZ2VfbmFtZSA9IHAubmFt ZQogIHRtcF92aWV3ID0gbW9kZWwuYWN0aXZlX3ZpZXcgCiAgdG1wX3ZpZXcu Y2FtZXJhID0gcGFnZV9jYW1lcmEKICAjIFJlbmRlcmluZyBvcHRpb25zCiAg KHNldF9wYWdlX3JlbmRlcmluZ19vcHRpb25zIHAsIHRtcF92aWV3KQogICMg TGF5ZXJzCiAgIyhzZXRfcGFnZV9sYXllcnMgcCwgdG1wX3ZpZXcpCiAgbGF5 ZXJzID0gcC5sYXllcnMKICBpZiBsYXllcnMgYW5kIGxheWVycy5sZW5ndGgg IT0gMAogICAgbGF5ZXJzLmVhY2ggZG8gfGx8CiAgICAgIGwudmlzaWJsZSA9 IGZhbHNlCiAgICAgIHRtcF92aWV3LmludmFsaWRhdGUKICAgIGVuZAogIGVu ZAogICN0bXBfdmlldy56b29tX2V4dGVudHMKICB0bXBfdmlldy5pbnZhbGlk YXRlCiAgCiAgIyBFeHBvcnQgZXBzCiAgICBwdXRzICJMYSBwYWdlOiAiICsg cGFnZV9uYW1lCiAgICAoYWRvX2V4cG9ydF9lcHNfcGFnZSBwYWdlX25hbWUp CiAgICBVSS5tZXNzYWdlYm94KCJQYWdlOiAiICsgcGFnZV9uYW1lICsgIiBl eGlzdGUgZXQgYSBldGUgcmUtZW5yZWdpc3RyZWUuIikKICAgICRlcHNfZXhw b3J0ZWQgPSAkZXBzX2V4cG9ydGVkICsgMQogICAgU2tldGNodXAuc2V0X3N0 YXR1c190ZXh0KCJFeHBvcnQgRVBTOiAiICsgJGVwc19leHBvcnRlZC50b19z ICsgIjogIiArIHBhZ2VfbmFtZSkKICAjZW5kCmVuZAoKIyBCYWNrIHRvIGN1 cnJlbnQgZm9sZGVyCkRpci5jaGRpcihGaWxlLmRpcm5hbWUobW9kZWwucGF0 aCkpCgojIEVuZCBtZXNzYWdlClVJLm1lc3NhZ2Vib3goICRlcHNfZXhwb3J0 ZWQudG9fcyArICIgZmljaGllcnMgRVBTXG5leHBvcnRlcyBkYW5zIGxlIGRv c3NpZXI6XG4iICsgJGV4cG9ydF9kaXIgKQplbmQKCiMtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXhwb3J0IGEg cGFnZSB0byBwb3N0c2NyaXB0IGZpbGUKZGVmIGFkb19leHBvcnRfZXBzX3Bh Z2UoIHBfbmFtZSApCm1vZGVsID0gU2tldGNodXAuYWN0aXZlX21vZGVsCm1v ZGVsX25hbWUgPSBGaWxlLmJhc2VuYW1lKG1vZGVsLnBhdGgpLnNwbGl0KCIu IilbMF0KdG1wX3ZpZXcgPSBtb2RlbC5hY3RpdmVfdmlldwpwYWdlX2NhbWVy YSA9IG1vZGVsLnBhZ2VzW3BfbmFtZV0uY2FtZXJhCnRtcF92aWV3LmNhbWVy YSA9IHBhZ2VfY2FtZXJhCnRtcF92aWV3Lnpvb21fZXh0ZW50cwp0bXBfdmll dy5pbnZhbGlkYXRlCiMgb3BlbiBFeHBvcnQgYXMgR3JhcGhpY3MKU2tldGNo dXAuc2VuZF9hY3Rpb24gMjEyMzcKc2VuZCA9IFdpbjMyQVBJLm5ldygiLi9Q bHVnaW5zL0F1dG9JdFgzLmRsbCIsICJBVTNfU2VuZCIsIFsnUCcsJ0wnXSwg J1YnKQojIGVudGVyIGZpbGVuYW1lCnNlbmQuY2FsbCgkZXhwb3J0X2RpciAr ICJcXCIgKyBtb2RlbF9uYW1lICsgIl8iICsgcF9uYW1lLDApCiMgc2VsZWN0 IEVQUwpzZW5kLmNhbGwoIntUQUJ9IiwwKQojc2VuZC5jYWxsKCJ7ZSAyfSIs MCkKc2VuZC5jYWxsKCJ7RE9XTn0iLDApCnNlbmQuY2FsbCgie0RPV059Iiww KQpzZW5kLmNhbGwoIntET1dOfSIsMCkKc2VuZC5jYWxsKCJ7RE9XTn0iLDAp CnNlbmQuY2FsbCgie0RPV059IiwwKQpzZW5kLmNhbGwoIntET1dOfSIsMCkK c2VuZC5jYWxsKCJ7RE9XTn0iLDApCnNlbmQuY2FsbCgie0RPV059IiwwKQpz ZW5kLmNhbGwoIntET1dOfSIsMCkKc2VuZC5jYWxsKCJ7RE9XTn0iLDApCnNl bmQuY2FsbCgie1VQfSIsMCkKc2VuZC5jYWxsKCJ7VVB9IiwwKQpzZW5kLmNh bGwoIntVUH0iLDApCnNlbmQuY2FsbCgie1VQfSIsMCkKc2VuZC5jYWxsKCJ7 VVB9IiwwKQpzZW5kLmNhbGwoIntVUH0iLDApCnNlbmQuY2FsbCgie1VQfSIs MCkKc2VuZC5jYWxsKCJ7VEFCfSIsMCkKIyBleHBvcnQKc2VuZC5jYWxsKCJ7 RW50ZXJ9IiwwKQojIGlmIGZpbGUgYWxyZWFkeSBleGlzdHMgb3ZlcndyaXRl CnNlbmQuY2FsbCgie0xFRlR9IiwwKQpzZW5kLmNhbGwoIntFbnRlcn0iLDAp CgplbmQKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQojICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFBERiBFWFBPUlQKIy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t IEV4cG9ydCBwYWdlcyB0byBQREYgZmlsZXMKZGVmIGFkb19leHBvcnRfcGRm X2Zyb21fcGFnZXMoIHdoYXQgKQptb2RlbCA9IFNrZXRjaHVwLmFjdGl2ZV9t b2RlbApwYWdlcyA9IG1vZGVsLnBhZ2VzCiRwZGZfZXhwb3J0ZWQgPSAwCnN0 YW5kYXJkX3BhZ2VzID0gWyJEZXNzdXMiLCAiRGVzc291cyIsICJBdmFudCIs ICJBcnJpZXJlIiwgIkdhdWNoZSIsICJEcm9pdGUiLCAiQXZhbnRfR2F1Y2hl IiwgIkF2YW50X0Ryb2l0ZSIsICJBcnJpZXJlX0dhdWNoZSIsICJBcnJpZXJl X0Ryb2l0ZSJdCnBhZ2VzX3RvX2V4cG9ydCA9IFtdCihhZG9fc2VsZWN0X2V4 cG9ydF9mb2xkZXIgIlBERiIpCgpjYXNlIHdoYXQKICB3aGVuICJhbGwiCiAg ICBwYWdlc190b19leHBvcnQgPSBwYWdlcwogIHdoZW4gInVzZXIiCiAgICBw YWdlcy5lYWNoIGRvIHxwfAogICAgICBpZiggbm90IHN0YW5kYXJkX3BhZ2Vz LmluY2x1ZGU/IHAubmFtZSkKICAgICAgICBwYWdlc190b19leHBvcnQucHVz aCBwCiAgICAgIGVuZAogICAgZW5kCiAgd2hlbiAic3RhbmRhcmQiCiAgICBw YWdlcy5lYWNoIGRvIHxwfAogICAgICBpZiggc3RhbmRhcmRfcGFnZXMuaW5j bHVkZT8gcC5uYW1lKQogICAgICAgIHBhZ2VzX3RvX2V4cG9ydC5wdXNoIHAK ICAgICAgZW5kCiAgICBlbmQKZW5kCgpwYWdlc190b19leHBvcnQuZWFjaCBk byB8cHwKICBwYWdlX2NhbWVyYSA9IHAuY2FtZXJhCiAgcGFnZV9uYW1lID0g cC5uYW1lCiAgdG1wX3ZpZXcgPSBtb2RlbC5hY3RpdmVfdmlldyAKICB0bXBf dmlldy5jYW1lcmEgPSBwYWdlX2NhbWVyYQogICMgUmVuZGVyaW5nIG9wdGlv bnMKICAoc2V0X3BhZ2VfcmVuZGVyaW5nX29wdGlvbnMgcCwgdG1wX3ZpZXcp CiAgIyBMYXllcnMKICAjKHNldF9wYWdlX2xheWVycyBwLCB0bXBfdmlldykK ICBsYXllcnMgPSBwLmxheWVycwogIGlmIGxheWVycyBhbmQgbGF5ZXJzLmxl bmd0aCAhPSAwCiAgICBsYXllcnMuZWFjaCBkbyB8bHwKICAgICAgbC52aXNp YmxlID0gZmFsc2UKICAgICAgdG1wX3ZpZXcuaW52YWxpZGF0ZQogICAgZW5k CiAgZW5kCiAgI3RtcF92aWV3Lnpvb21fZXh0ZW50cwogIHRtcF92aWV3Lmlu dmFsaWRhdGUKICAKICAjIEV4cG9ydCBwZGYKICAgIHB1dHMgIkxhIHBhZ2U6 ICIgKyBwYWdlX25hbWUKICAgIChhZG9fZXhwb3J0X3BkZl9wYWdlIHBhZ2Vf bmFtZSkKICAgIFVJLm1lc3NhZ2Vib3goIlBhZ2U6ICIgKyBwYWdlX25hbWUg KyAiIGV4aXN0ZSBldCBhIGV0ZSByZS1lbnJlZ2lzdHJlZS4iKQogICAgJHBk Zl9leHBvcnRlZCA9ICRwZGZfZXhwb3J0ZWQgKyAxCiAgICBTa2V0Y2h1cC5z ZXRfc3RhdHVzX3RleHQoIkV4cG9ydCBQREY6ICIgKyAkcGRmX2V4cG9ydGVk LnRvX3MgKyAiOiAiICsgcGFnZV9uYW1lKQogICNlbmQKZW5kCgojIEJhY2sg dG8gY3VycmVudCBmb2xkZXIKRGlyLmNoZGlyKEZpbGUuZGlybmFtZShtb2Rl bC5wYXRoKSkKCiMgRW5kIG1lc3NhZ2UKVUkubWVzc2FnZWJveCggJHBkZl9l eHBvcnRlZC50b19zICsgImZpY2hpZXJzIFBERlxuZXhwb3J0ZXMgZGFucyBs ZSBkb3NzaWVyOlxuIiArICRleHBvcnRfZGlyICkKZW5kCgojLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV4cG9y dCBhIHBhZ2UgdG8gRFdHIGZpbGUKZGVmIGFkb19leHBvcnRfcGRmX3BhZ2Uo IHBfbmFtZSApCm1vZGVsID0gU2tldGNodXAuYWN0aXZlX21vZGVsCm1vZGVs X25hbWUgPSBGaWxlLmJhc2VuYW1lKG1vZGVsLnBhdGgpLnNwbGl0KCIuIilb MF0KdG1wX3ZpZXcgPSBtb2RlbC5hY3RpdmVfdmlldwpwYWdlX2NhbWVyYSA9 IG1vZGVsLnBhZ2VzW3BfbmFtZV0uY2FtZXJhCnRtcF92aWV3LmNhbWVyYSA9 IHBhZ2VfY2FtZXJhCnRtcF92aWV3Lnpvb21fZXh0ZW50cwp0bXBfdmlldy5p bnZhbGlkYXRlCgojIG9wZW4gRXhwb3J0IGFzIEdyYXBoaWNzClNrZXRjaHVw LnNlbmRfYWN0aW9uIDIxMjM3CnNlbmQgPSBXaW4zMkFQSS5uZXcoIi4vUGx1 Z2lucy9BdXRvSXRYMy5kbGwiLCAiQVUzX1NlbmQiLCBbJ1AnLCdMJ10sICdW JykKIyBlbnRlciBmaWxlbmFtZQpzZW5kLmNhbGwoJGV4cG9ydF9kaXIgKyAi XFwiICsgbW9kZWxfbmFtZSArICJfIiArIHBfbmFtZSwwKQojIHNlbGVjdCBF UFMKc2VuZC5jYWxsKCJ7VEFCfSIsMCkKI3NlbmQuY2FsbCgie3AgMX0iLDAp CnNlbmQuY2FsbCgie0RPV059IiwwKQpzZW5kLmNhbGwoIntET1dOfSIsMCkK c2VuZC5jYWxsKCJ7RE9XTn0iLDApCnNlbmQuY2FsbCgie0RPV059IiwwKQpz ZW5kLmNhbGwoIntET1dOfSIsMCkKc2VuZC5jYWxsKCJ7RE9XTn0iLDApCnNl bmQuY2FsbCgie0RPV059IiwwKQpzZW5kLmNhbGwoIntET1dOfSIsMCkKc2Vu ZC5jYWxsKCJ7VVB9IiwwKQpzZW5kLmNhbGwoIntVUH0iLDApCnNlbmQuY2Fs bCgie1VQfSIsMCkKc2VuZC5jYWxsKCJ7VVB9IiwwKQpzZW5kLmNhbGwoIntV UH0iLDApCnNlbmQuY2FsbCgie1VQfSIsMCkKc2VuZC5jYWxsKCJ7VVB9Iiww KQpzZW5kLmNhbGwoIntVUH0iLDApCnNlbmQuY2FsbCgie1RBQn0iLDApCiMg ZXhwb3J0CnNlbmQuY2FsbCgie0VudGVyfSIsMCkKIyBpZiBmaWxlIGFscmVh ZHkgZXhpc3RzIG92ZXJ3cml0ZQpzZW5kLmNhbGwoIntMRUZUfSIsMCkKc2Vu ZC5jYWxsKCJ7RW50ZXJ9IiwwKQoKZW5kCgojLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRU5VIElURU1T CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQoKaWYoIG5vdCAkYWRvX21lbnVfbG9hZGVkICkKICAg IGFkZF9zZXBhcmF0b3JfdG9fbWVudSgiUGx1Z2lucyIpCiAgICBhZG9fbWVu dSA9IFVJLm1lbnUoIlBsdWdpbnMiKS5hZGRfc3VibWVudSgiRXhwb3J0IDJE IGF1dG9tYXRpcXVlIikKICAgIGFkb19tZW51LmFkZF9pdGVtKCJTZWxlY3Rp b25uZXIgbGUgZG9zc2llciBkJ2V4cG9ydCIpIHsgYWRvX3NldF9leHBvcnRf Zm9sZGVyIH0KICAgIGFkb19tZW51LmFkZF9pdGVtKCJSZW1ldHRyZSBsZSBk b3NzaWVyIGQnZXhwb3J0IHBhciBkZWZhdXQiKSB7IGFkb19zZXRfZXhwb3J0 X2ZvbGRlcl9kZWZhdWx0IH0KICAgIGFkb19tZW51LmFkZF9zZXBhcmF0b3IK ICAgIGFkb19tZW51LmFkZF9pdGVtKCJQYXJhbWV0cmVzIGRlcyBwYWdlcyIp IHsgKGFkb19zZXRfcGFnZXNfc2V0dGluZ3MpIH0KICAgIGFkb19tZW51LmFk ZF9pdGVtKCJQYXJhbWV0cmVzIGRlcyBpbWFnZXMiKSB7IChhZG9fc2V0X2lt Z19zZXR0aW5ncykgfQogICAgZWRpdF9wYWdlc19tZW51ID0gYWRvX21lbnUu YWRkX3N1Ym1lbnUoIk1vZGlmaWVyIGxlcyBwYWdlcyIpIHsgVUkubWVzc2Fn ZWJveCgiTm8gY29tbWFuZCBoZXJlICEiKSB9CiAgICBlZGl0X3BhZ2VzX21l bnUuYWRkX2l0ZW0oIlRvdXRlcyBsZXMgcGFnZXMgZW4gcHJvamVjdGlvbiBv cnRob2dvbmFsZSIpIHsgKGFkb19zZXRfYWxsX3BhZ2VzX29ydGhvdmlldykg fQogICAgZWRpdF9wYWdlc19tZW51LmFkZF9pdGVtKCJUb3V0ZXMgbGVzIHBh Z2VzIGVuIHBlcnNwZWN0aXZlIikgeyAoYWRvX3NldF9hbGxfcGFnZXNfcGVy c3ZpZXcpIH0KICAgIGVkaXRfcGFnZXNfbWVudS5hZGRfaXRlbSgiUGFnZXMg c3RhbmRhcmQgZW4gcHJvamVjdGlvbiBvcnRob2dvbmFsZSIpIHsgKGFkb19z ZXRfc3RhbmRhcmRfcGFnZXNfb3J0aG92aWV3KSB9CiAgICBlZGl0X3BhZ2Vz X21lbnUuYWRkX2l0ZW0oIlBhZ2VzIHN0YW5kYXJkIGVuIHBlcnNwZWN0aXZl IikgeyAoYWRvX3NldF9zdGFuZGFyZF9wYWdlc19wZXJzdmlldykgfQogICAg ZWRpdF9wYWdlc19tZW51LmFkZF9pdGVtKCJQYWdlcyB1dGlsaXNhdGV1ciBl biBwcm9qZWN0aW9uIG9ydGhvZ29uYWxlIikgeyAoYWRvX3NldF91c2VyX3Bh Z2VzX29ydGhvdmlldykgfQogICAgZWRpdF9wYWdlc19tZW51LmFkZF9pdGVt KCJQYWdlcyB1dGlsaXNhdGV1ciBlbiBwZXJzcGVjdGl2ZSIpIHsgKGFkb19z ZXRfdXNlcl9wYWdlc19wZXJzdmlldykgfQogICAgZWRpdF9wYWdlc19tZW51 LmFkZF9zZXBhcmF0b3IKICAgIGVkaXRfcGFnZXNfbWVudS5hZGRfaXRlbSgi UmFmcmFpY2hpciB0b3V0ZXMgbGVzIHBhZ2VzIikgeyAoYWRvX3JlZnJlc2hf YWxsX3BhZ2VzKSB9CiAgICBlZGl0X3BhZ2VzX21lbnUuYWRkX2l0ZW0oIlJh ZnJhaWNoaXIgcGFnZXMgc3RhbmRhcmQiKSB7IChhZG9fcmVmcmVzaF9zdGFu ZGFyZF9wYWdlcykgfQogICAgZWRpdF9wYWdlc19tZW51LmFkZF9pdGVtKCJS YWZyYWljaGlyIHBhZ2VzIHV0aWxpc2F0ZXVyIikgeyAoYWRvX3JlZnJlc2hf dXNlcl9wYWdlcykgfQogICAgYWRvX21lbnUuYWRkX2l0ZW0oIkNyZWVyIHBh Z2VzIG9ydGhvZ29uYWxlcyIpIHsgKGFkb19jcmVhdGVfb3J0aG9fcGFnZXMg JHJlbmRlcl90eXBlLCAkc2hhZG93c19wYWdlcywgJHRyYW5zX3BhZ2VzKSB9 CiAgICBhZG9fbWVudS5hZGRfaXRlbSgiQ3JlZXIgcGFnZXMgYXhvbm9tZXRy aXF1ZXMiKSB7IChhZG9fY3JlYXRlX2F4b19wYWdlcyAkcmVuZGVyX3R5cGUs ICRzaGFkb3dzX3BhZ2VzLCAkdHJhbnNfcGFnZXMpIH0KICAgIGFkb19tZW51 LmFkZF9zZXBhcmF0b3IKICAgIGV4cG9ydDBfbWVudSA9IGFkb19tZW51LmFk ZF9zdWJtZW51KCJFeHBvcnRlciB0b3V0ZXMgbGVzIHBhZ2VzIGVuIikgeyBV SS5tZXNzYWdlYm94KCJQYXMgZGUgY29tbWFuZGUgaWNpICEiKSB9CiAgICBl eHBvcnQwX21lbnUuYWRkX2l0ZW0oIkRXRyIpIHsgKGFkb19leHBvcnRfZHdn X2Zyb21fcGFnZXMgImFsbCIpIH0KICAgIGV4cG9ydDBfbWVudS5hZGRfaXRl bSgiRFhGIikgeyAoYWRvX2V4cG9ydF9keGZfZnJvbV9wYWdlcyAiYWxsIikg fQogICAgZXhwb3J0MF9tZW51LmFkZF9pdGVtKCJFUFMiKSB7IChhZG9fZXhw b3J0X2Vwc19mcm9tX3BhZ2VzICJhbGwiKSB9CiAgICBleHBvcnQwX21lbnUu YWRkX2l0ZW0oIlBERiIpIHsgKGFkb19leHBvcnRfcGRmX2Zyb21fcGFnZXMg ImFsbCIpIH0KICAgIGV4cG9ydDBfbWVudS5hZGRfaXRlbSgiSW1hZ2VzIikg eyAoYWRvX2V4cG9ydF9pbWdfZnJvbV9wYWdlcyAiYWxsIikgfQogICAgZXhw b3J0MV9tZW51ID0gYWRvX21lbnUuYWRkX3N1Ym1lbnUoIkV4cG9ydGVyIGxl cyBwYWdlcyBzdGFuZGFyZCBlbiIpIHsgVUkubWVzc2FnZWJveCgiUGFzIGRl IGNvbW1hbmRlIGljaSAhIikgfQogICAgZXhwb3J0MV9tZW51LmFkZF9pdGVt KCJEV0ciKSB7IChhZG9fZXhwb3J0X2R3Z19mcm9tX3BhZ2VzICJzdGFuZGFy ZCIpIH0KICAgIGV4cG9ydDFfbWVudS5hZGRfaXRlbSgiRFhGIikgeyAoYWRv X2V4cG9ydF9keGZfZnJvbV9wYWdlcyAic3RhbmRhcmQiKSB9CiAgICBleHBv cnQxX21lbnUuYWRkX2l0ZW0oIkVQUyIpIHsgKGFkb19leHBvcnRfZXBzX2Zy b21fcGFnZXMgInN0YW5kYXJkIikgfQogICAgZXhwb3J0MV9tZW51LmFkZF9p dGVtKCJQREYiKSB7IChhZG9fZXhwb3J0X3BkZl9mcm9tX3BhZ2VzICJzdGFu ZGFyZCIpIH0KICAgIGV4cG9ydDFfbWVudS5hZGRfaXRlbSgiSW1hZ2VzIikg eyAoYWRvX2V4cG9ydF9pbWdfZnJvbV9wYWdlcyAic3RhbmRhcmQiKSB9CiAg ICBleHBvcnQyX21lbnUgPSBhZG9fbWVudS5hZGRfc3VibWVudSgiRXhwb3J0 ZXIgbGVzIHBhZ2VzIHV0aWxpc2F0ZXVyIGVuIikgeyBVSS5tZXNzYWdlYm94 KCJQYXMgZGUgY29tbWFuZGUgaWNpICEiKSB9CiAgICBleHBvcnQyX21lbnUu YWRkX2l0ZW0oIkRXRyIpIHsgKGFkb19leHBvcnRfZHdnX2Zyb21fcGFnZXMg InVzZXIiKSB9CiAgICBleHBvcnQyX21lbnUuYWRkX2l0ZW0oIkRYRiIpIHsg KGFkb19leHBvcnRfZHhmX2Zyb21fcGFnZXMgInVzZXIiKSB9CiAgICBleHBv cnQyX21lbnUuYWRkX2l0ZW0oIkVQUyIpIHsgKGFkb19leHBvcnRfZXBzX2Zy b21fcGFnZXMgInVzZXIiKSB9CiAgICBleHBvcnQyX21lbnUuYWRkX2l0ZW0o IlBERiIpIHsgKGFkb19leHBvcnRfcGRmX2Zyb21fcGFnZXMgInVzZXIiKSB9 CiAgICBleHBvcnQyX21lbnUuYWRkX2l0ZW0oIkltYWdlcyIpIHsgKGFkb19l eHBvcnRfaW1nX2Zyb21fcGFnZXMgInVzZXIiKSB9CiAgICBhZG9fbWVudS5h ZGRfaXRlbSgiQSBwcm9wb3MgZCdBRE8uLi4iKSB7IChhZG9fYWJvdXQpIH0K ICAgICRhZG9fbWVudV9sb2FkZWQgPSB0cnVlCmVuZAoKZmlsZV9sb2FkZWQo ImZyX2Fkby5yYiIpCgooZXhlY19vbl9hdXRvbG9hZCkKCg==}.unpack("m").to_s