```

LS0tDQp0aXRsZTogIkdyw6FmaWNvIEF0aXZpZGFkZSBFY29uw7RtaWNhIHBvciBTZXRvcmVzIg0KZGF0ZTogIjIwMjYtMDMtMTEiDQpvdXRwdXQ6IA0KIGh0bWxfZG9jdW1lbnQ6DQogIHRvYzogdHJ1ZQ0KICB0aGVtZTogbHVtZW4NCiAgaGlnaGxpZ2h0OiB0YW5nbw0KICBjb2RlX2ZvbGRpbmc6IHNob3cNCiAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0UpDQoNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KHNpZHJhcikNCmxpYnJhcnkoaXBlYWRhdGFyKQ0KbGlicmFyeShxdWFudG1vZCkNCmxpYnJhcnkoc2NhbGVzKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KHJiY2IpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkod3JpdGV4bCkNCmxpYnJhcnkoaHR0cikNCmxpYnJhcnkodGlkeXIpDQpgYGANCg0KDQpgYGB7cn0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShoaWdoY2hhcnRlcikNCmxpYnJhcnkobHVicmlkYXRlKQ0KDQojIENvbGV0YXIgZGFkb3MgZG9zIHNldG9yZXMgKElCQy1CciBzZXRvcmlhbCkgZGUgamFuZWlyby8yMDI0IGF0w6kgZGV6ZW1icm8vMjAyNQ0KIyBBVEVOw4fDg086IFPDo28gbsO6bWVyb3Mtw61uZGljZSBjb20gYmFzZSAyMDIyID0gMTAwLCBOw4NPIHPDo28gdmFsb3JlcyBlbSBSJCBtaWxow7Vlcw0KDQpkYWRvc19zZXJ2aWNvcyA8LSBnZXRfc2VyaWVzKDI5NjA2LCBzdGFydF9kYXRlID0gIjIwMjQtMDEtMDEiLCBlbmRfZGF0ZSA9ICIyMDI1LTEyLTMwIikgJT4lIA0KICByZW5hbWUoU2Vydmljb3MgPSBgMjk2MDZgKSAgIyBJQkMtQnIgU2VydmnDp29zICjDrW5kaWNlKSAtIGNvbSBhanVzdGUgc2F6b25hbA0KDQpkYWRvc19hZ3JvIDwtIGdldF9zZXJpZXMoMjk2MDIsIHN0YXJ0X2RhdGUgPSAiMjAyNC0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMjUtMTItMzAiKSAlPiUgDQogIHJlbmFtZShBZ3JvcGVjdWFyaWEgPSBgMjk2MDJgKSAgIyBJQkMtQnIgQWdyb3BlY3XDoXJpYSAow61uZGljZSkgLSBjb20gYWp1c3RlIHNhem9uYWwNCg0KZGFkb3NfaW5kdXN0cmlhIDwtIGdldF9zZXJpZXMoMjk2MDQsIHN0YXJ0X2RhdGUgPSAiMjAyNC0wMS0wMSIsIGVuZF9kYXRlID0gIjIwMjUtMTItMzAiKSAlPiUgDQogIHJlbmFtZShJbmR1c3RyaWEgPSBgMjk2MDRgKSAgIyBJQkMtQnIgSW5kw7pzdHJpYSAow61uZGljZSkgLSBjb20gYWp1c3RlIHNhem9uYWwNCg0KIyBDb21iaW5hciB0b2RvcyBvcyBkYWRvcw0KZGFkb3Nfc2V0b3JlcyA8LSBkYWRvc19zZXJ2aWNvcyAlPiUNCiAgbGVmdF9qb2luKGRhZG9zX2Fncm8sIGJ5ID0gImRhdGUiKSAlPiUNCiAgbGVmdF9qb2luKGRhZG9zX2luZHVzdHJpYSwgYnkgPSAiZGF0ZSIpICU+JQ0KICBtdXRhdGUoDQogICAgdGltZXN0YW1wID0gZGF0ZXRpbWVfdG9fdGltZXN0YW1wKGRhdGUpLA0KICAgICMgTWFudGVyIHZhbG9yZXMgb3JpZ2luYWlzIGRvIMOtbmRpY2UgKGJhc2UgMjAyMiA9IDEwMCkNCiAgICBTZXJ2aWNvc19pbmRpY2UgPSBTZXJ2aWNvcywNCiAgICBBZ3JvcGVjdWFyaWFfaW5kaWNlID0gQWdyb3BlY3VhcmlhLA0KICAgIEluZHVzdHJpYV9pbmRpY2UgPSBJbmR1c3RyaWENCiAgKSAlPiUNCiAgc2VsZWN0KGRhdGUsIHRpbWVzdGFtcCwgU2Vydmljb3NfaW5kaWNlLCBBZ3JvcGVjdWFyaWFfaW5kaWNlLCBJbmR1c3RyaWFfaW5kaWNlKSAlPiUNCiAgYXJyYW5nZShkYXRlKQ0KDQojIFZlcmlmaWNhciBzZSBow6EgZGFkb3MNCmlmKG5yb3coZGFkb3Nfc2V0b3JlcykgPT0gMCkgew0KICBzdG9wKCJOw6NvIGZvcmFtIGVuY29udHJhZG9zIGRhZG9zIHBhcmEgbyBwZXLDrW9kbyBzZWxlY2lvbmFkby4gVmVyaWZpcXVlIHNlIG9zIGPDs2RpZ29zIGVzdMOjbyBjb3JyZXRvcyBlIHNlIG9zIGRhZG9zIGVzdMOjbyBkaXNwb27DrXZlaXMuIikNCn0NCg0KIyBDYWxjdWxhciBsaW1pdGVzIGRvIGVpeG8gWSBwYXJhIHpvb20gYXV0b23DoXRpY28NCnlfbWluIDwtIG1pbihjKGRhZG9zX3NldG9yZXMkU2Vydmljb3NfaW5kaWNlLCANCiAgICAgICAgICAgICAgIGRhZG9zX3NldG9yZXMkQWdyb3BlY3VhcmlhX2luZGljZSwgDQogICAgICAgICAgICAgICBkYWRvc19zZXRvcmVzJEluZHVzdHJpYV9pbmRpY2UpLCBuYS5ybSA9IFRSVUUpDQp5X21heCA8LSBtYXgoYyhkYWRvc19zZXRvcmVzJFNlcnZpY29zX2luZGljZSwgDQogICAgICAgICAgICAgICBkYWRvc19zZXRvcmVzJEFncm9wZWN1YXJpYV9pbmRpY2UsIA0KICAgICAgICAgICAgICAgZGFkb3Nfc2V0b3JlcyRJbmR1c3RyaWFfaW5kaWNlKSwgbmEucm0gPSBUUlVFKQ0KDQojIEFkaWNpb25hciB1bWEgbWFyZ2VtIGRlIDUlIHBhcmEgbWVsaG9yIHZpc3VhbGl6YcOnw6NvDQp5X3JhbmdlIDwtIHlfbWF4IC0geV9taW4NCnlfbWluX2FqdXN0YWRvIDwtIG1heCgwLCBmbG9vcih5X21pbiAtIDAuMDUgKiB5X3JhbmdlKSkNCnlfbWF4X2FqdXN0YWRvIDwtIGNlaWxpbmcoeV9tYXggKyAwLjA1ICogeV9yYW5nZSkNCg0KIyBDcmlhciBvIGdyw6FmaWNvIGNvbSBwb250b3MgKG1hcmtlcnMpIG5hcyBsaW5oYXMNCmhpZ2hjaGFydCh0eXBlID0gInN0b2NrIikgJT4lDQogICMgU8OpcmllOiBTZXJ2acOnb3MNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3Nfc2V0b3JlcyAlPiUgc2VsZWN0KHRpbWVzdGFtcCwgU2Vydmljb3NfaW5kaWNlKSksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBuYW1lID0gIklCQy1CciBTZXJ2acOnb3MiLA0KICAgIGNvbG9yID0gIiM0NmIxZTEiLCAgIyBBenVsIGNsYXJvDQogICAgbGluZVdpZHRoID0gMiwNCiAgICBtYXJrZXIgPSBsaXN0KA0KICAgICAgZW5hYmxlZCA9IFRSVUUsICAgICAgICAjIEhBQklMSVRBIE9TIFBPTlRPUw0KICAgICAgcmFkaXVzID0gMywgICAgICAgICAgICAjIFRhbWFuaG8gZG8gcG9udG8NCiAgICAgIHN5bWJvbCA9ICJjaXJjbGUiLCAgICAgIyBGb3JtYXRvOiBjw61yY3Vsbw0KICAgICAgZmlsbENvbG9yID0gIiM0NmIxZTEiLCAjIENvciBkZSBwcmVlbmNoaW1lbnRvDQogICAgICBsaW5lV2lkdGggPSAxLCAgICAgICAgICMgQm9yZGEgZG8gcG9udG8NCiAgICAgIGxpbmVDb2xvciA9ICIjRkZGRkZGIiAgIyBDb3IgZGEgYm9yZGEgKGJyYW5jbyBwYXJhIGRlc3RhY2FyKQ0KICAgICksDQogICAgeUF4aXMgPSAwLA0KICAgIHRvb2x0aXAgPSBsaXN0KHZhbHVlRGVjaW1hbHMgPSAxKQ0KICApICU+JQ0KICAjIFPDqXJpZTogQWdyb3BlY3XDoXJpYQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBsaXN0X3BhcnNlMihkYWRvc19zZXRvcmVzICU+JSBzZWxlY3QodGltZXN0YW1wLCBBZ3JvcGVjdWFyaWFfaW5kaWNlKSksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBuYW1lID0gIklCQy1CciBBZ3JvcGVjdcOhcmlhIiwNCiAgICBjb2xvciA9ICIjZmViNzEyIiwgICMgRG91cmFkbw0KICAgIGxpbmVXaWR0aCA9IDIsDQogICAgbWFya2VyID0gbGlzdCgNCiAgICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgICAgcmFkaXVzID0gMywNCiAgICAgIHN5bWJvbCA9ICJjaXJjbGUiLA0KICAgICAgZmlsbENvbG9yID0gIiNmZWI3MTIiLA0KICAgICAgbGluZVdpZHRoID0gMSwNCiAgICAgIGxpbmVDb2xvciA9ICIjRkZGRkZGIg0KICAgICksDQogICAgeUF4aXMgPSAwLA0KICAgIHRvb2x0aXAgPSBsaXN0KHZhbHVlRGVjaW1hbHMgPSAxKQ0KICApICU+JQ0KICAjIFPDqXJpZTogSW5kw7pzdHJpYQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBsaXN0X3BhcnNlMihkYWRvc19zZXRvcmVzICU+JSBzZWxlY3QodGltZXN0YW1wLCBJbmR1c3RyaWFfaW5kaWNlKSksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBuYW1lID0gIklCQy1CciBJbmTDunN0cmlhIiwNCiAgICBjb2xvciA9ICIjMDIwMjNjIiwgICMgQXp1bCBlc2N1cm8NCiAgICBsaW5lV2lkdGggPSAyLA0KICAgIG1hcmtlciA9IGxpc3QoDQogICAgICBlbmFibGVkID0gVFJVRSwNCiAgICAgIHJhZGl1cyA9IDMsDQogICAgICBzeW1ib2wgPSAiY2lyY2xlIiwNCiAgICAgIGZpbGxDb2xvciA9ICIjMDIwMjNjIiwNCiAgICAgIGxpbmVXaWR0aCA9IDEsDQogICAgICBsaW5lQ29sb3IgPSAiI0ZGRkZGRiINCiAgICApLA0KICAgIHlBeGlzID0gMCwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSkNCiAgKSAlPiUNCiAgaGNfeUF4aXMoDQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiw41uZGljZSAoYmFzZTogMjAyMiA9IDEwMCkiKSwNCiAgICBvcHBvc2l0ZSA9IEZBTFNFLA0KICAgIGxhYmVscyA9IGxpc3QoZm9ybWF0ID0gInt2YWx1ZX0iKSwNCiAgICBtaW4gPSB5X21pbl9hanVzdGFkbywNCiAgICBtYXggPSB5X21heF9hanVzdGFkbywNCiAgICBwbG90TGluZXMgPSBsaXN0KA0KICAgICAgbGlzdCgNCiAgICAgICAgdmFsdWUgPSAxMDAsDQogICAgICAgIGNvbG9yID0gIiM2NjY2NjYiLA0KICAgICAgICBkYXNoU3R5bGUgPSAiZGFzaCIsDQogICAgICAgIHdpZHRoID0gMSwNCiAgICAgICAgbGFiZWwgPSBsaXN0KHRleHQgPSAiQmFzZSAoMjAyMiA9IDEwMCkiKQ0KICAgICAgKQ0KICAgICkNCiAgKSAlPiUNCiAgaGNfeEF4aXMoDQogICAgdHlwZSA9ICdkYXRldGltZScsDQogICAgbGFiZWxzID0gbGlzdChmb3JtYXQgPSAne3ZhbHVlOiViICVZfScpDQogICkgJT4lDQogIGhjX3RpdGxlKHRleHQgPSAiSUJDLUJyIHBvciBTZXRvciAtIEF0aXZpZGFkZSBFY29uw7RtaWNhIGNvbSBBanVzdGUgU2F6b25hbCIpICU+JQ0KICBoY19zdWJ0aXRsZSh0ZXh0ID0gIsONbmRpY2UgYmFzZTogMjAyMiA9IDEwMCAtIFBlcsOtb2RvOiBKYW4vMjAyNCBhIERlei8yMDI1IikgJT4lDQogIGhjX2NyZWRpdHMoDQogICAgZW5hYmxlZCA9IFRSVUUsIA0KICAgIHRleHQgPSAiRm9udGU6IEJhbmNvIENlbnRyYWwgZG8gQnJhc2lsIChTR1MgLSBDw7NkaWdvczogMjk2MDYsIDI5NjAyLCAyOTYwNCkiDQogICkgJT4lDQogIGhjX3JhbmdlU2VsZWN0b3IoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgYnV0dG9ucyA9IGxpc3QoDQogICAgICBsaXN0KHR5cGUgPSAnbW9udGgnLCBjb3VudCA9IDMsIHRleHQgPSAnM00nKSwNCiAgICAgIGxpc3QodHlwZSA9ICdtb250aCcsIGNvdW50ID0gNiwgdGV4dCA9ICc2TScpLA0KICAgICAgbGlzdCh0eXBlID0gJ2FsbCcsIHRleHQgPSAnVG9kbyBwZXLDrW9kbycpDQogICAgKSwNCiAgICBzZWxlY3RlZCA9IDINCiAgKSAlPiUNCiAgaGNfdG9vbHRpcCgNCiAgICBzaGFyZWQgPSBUUlVFLA0KICAgIGhlYWRlckZvcm1hdCA9ICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMnB4Ij48Yj57cG9pbnQua2V5fTwvYj48L3NwYW4+PGJyLz4nLA0KICAgIHBvaW50Rm9ybWF0ID0gJzxzcGFuIHN0eWxlPSJjb2xvcjp7c2VyaWVzLmNvbG9yfSI+4pePPC9zcGFuPiB7c2VyaWVzLm5hbWV9OiA8Yj57cG9pbnQueTouMWZ9PC9iPjxici8+JywNCiAgICB2YWx1ZURlY2ltYWxzID0gMQ0KICApICU+JQ0KICBoY19sZWdlbmQoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgYWxpZ24gPSAiY2VudGVyIiwNCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsDQogICAgbGF5b3V0ID0gImhvcml6b250YWwiDQogICkgJT4lDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIHNlcmllcyA9IGxpc3QoDQogICAgICBhbmltYXRpb24gPSBUUlVFLA0KICAgICAgY29ubmVjdE51bGxzID0gVFJVRQ0KICAgICkNCiAgKSAlPiUNCmhjX2V4cG9ydGluZygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICBmaWxlbmFtZSA9ICJJQkMtQnJfcG9yX3NldG9yIiwNCiAgICBidXR0b25zID0gbGlzdCgNCiAgICAgIGNvbnRleHRCdXR0b24gPSBsaXN0KA0KICAgICAgICB0ZXh0ID0gIkJhaXhhciBncsOhZmljbyIsDQogICAgICAgIG1lbnVJdGVtcyA9IGMoImRvd25sb2FkUE5HIiwgImRvd25sb2FkSlBFRyIsICJkb3dubG9hZFBERiIsICJkb3dubG9hZFNWRyIpDQogICAgICApDQogICAgKSwNCiAgICBjaGFydE9wdGlvbnMgPSBsaXN0KA0KICAgICAgY2hhcnQgPSBsaXN0KGJhY2tncm91bmRDb2xvciA9ICIjRkZGRkZGIiksDQogICAgICBwbG90T3B0aW9ucyA9IGxpc3QoDQogICAgICAgIHNlcmllcyA9IGxpc3QoDQogICAgICAgICAgZGF0YUxhYmVscyA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKQ0KICAgICAgICApDQogICAgICApDQogICAgKQ0KICApDQpgYGANCmBgYA0KDQo=