code
[--C0DE--]Ly86ODEyMzI0ODE4NjM2NTAzNTMwNzoyOTE5NTE5OTUwOTc4NjQ5Mzc0OiB0aGlzIGlzIHRoZSBibG9nIGlkIGFuZCBwb3N0IGlkDQoNCmNvbnN0IGdsb2JhbCA9IHsNCiAgZ3JvdXA6IG51bGwsDQogIHNldDogbnVsbCwNCiAgcGVyc29uOiBudWxsLA0KICBkZXBsb3ltZW50SWQ6DQogICAgIkFLZnljYndGcTBLRUt4T0J3OERQbF8xa0dyRW9wN0MxbktJZ0NraDZkN1oxR1VHdmlFR0pfUGNQSXRaNUdqZTBGSzFSNHNlVyIsDQp9Ow0KDQpmdW5jdGlvbiBwdWJFZGl0VG9nZ2xlKGV2dCkgew0KICBjb25zb2xlLmxvZygiQnV0dG9uVGVzdCBjbGlja2VkIiwgZXZ0LnRhcmdldC5jaGVja2VkKTsNCg0KICBpZiAoZXZ0LnRhcmdldC5jaGVja2VkKSB7DQogICAgZmlsbEZyb21EeW5hbW9EQigpOw0KICB9IGVsc2Ugew0KICAgIGZpbGxGcm9tQmxvZ2dlcigpOw0KICB9DQp9DQoNCmZ1bmN0aW9uIGF1dGhJbml0KCkgew0KICAvLyBnZXQgdGhlIGluZGV4IGZvciB0aGlzIGdyb3VwDQoNCiAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTsgLy8gZ2V0IHVybCBwYXJhbXMNCiAgY29uc3QgYXV0aCA9IHBhcmFtcy5nZXQoImF1dGgiKTsNCiAgY29uc29sZS5sb2coImF1dGgiLCBhdXRoKTsNCiAgaWYgKCFhdXRoKSB7DQogICAgcmV0dXJuOw0KICB9DQogIC8vKmJ1dCB0aGlzIGJhY2sgaW4gbGF0ZXIuIGl0IGlzIG91dCBzbyBpIGNhbiBzZWUgaWYgY2FsbGluZyBmcm9tIGRkYiB3b3Jrcw0KICAvL2ZpbGxGcm9tQmxvZ2dlcigpOw0KfQ0KDQpmdW5jdGlvbiBmaWxsRnJvbUR5bmFtb0RCKCkgew0KICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9zY3JpcHQuZ29vZ2xlLmNvbS9tYWNyb3Mvcy8ke2dsb2JhbC5kZXBsb3ltZW50SWR9L2V4ZWNgOw0KDQogIGNvbnN0IGN1cnJlbnRfdXJsX3NwbGl0ID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnNwbGl0KCIvIik7DQogIGNvbnN0IHllYXJfbW9udGggPSBgJHtjdXJyZW50X3VybF9zcGxpdFsxXX0vJHtjdXJyZW50X3VybF9zcGxpdFsyXX1gOw0KDQogIC8vdGhlc2UgYXJlIGhhcmQgY29kZWQgZm9yIG5vdywgYnV0IHdlIHdpbGwgbmVlZCB0byBjb2xsZWN0IGluZm8gZm9ybSB0aGUgdXNlcg0KICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoew0KICAgIC8vIHRva2VuOiB0YWcoImF1dGgiKS52YWx1ZSwNCiAgICB0b2tlbjogInY1ZVpvYkk1dkQwTmtZNyIsDQogICAgeWVhcl9tb250aDogeWVhcl9tb250aCwNCiAgICBtb2RlOiAiYnVpbGRHcm91cEluZm9Kc29uIiwNCiAgfSk7DQoNCiAgZmV0Y2godXJsLCB7IGJvZHk6IGJvZHksIG1ldGhvZDogIlBPU1QiIH0pDQogICAgLnRoZW4oZnVuY3Rpb24gKGEpIHsNCiAgICAgIHJldHVybiBhLnRleHQoKTsNCiAgICB9KQ0KICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgew0KICAgICAgY29uc29sZS5sb2coInJlc3BvbnNlLS0tIiwgcmVzcG9uc2UpOw0KICAgICAgY29uc3QgZGF0YVggPSBKU09OLnBhcnNlKHJlc3BvbnNlKTsNCiAgICAgIGNvbnNvbGUubG9nKCJkYXRhIiwgZGF0YVgpOw0KDQogICAgICAvLyBnbG9iYWwuZ3JvdXAgPSBkYXRhWC5kYXRhLnNldF9pbmZvLkl0ZW1zOyAvL2tlZXAgZm9yIG5vdy4gdGhpcyBpcyBob3cgd2UgYWNjZXNzIHRoZSBsaXN0IG9mIHNlYXJjaFNldHMNCiAgICAgIGdsb2JhbC5ncm91cCA9IGRhdGFYLmRhdGE7DQoNCiAgICAgIC8vKkhlcmUgaXMgb3VyIGlzc3VlLiAtIFRPRE8NCiAgICAgIC8vRERCIGhhcyBsYWJlbHMgdGhhdCBkb2VzIG5vdCBtYXRjaCBibG9vZ2VyIHNvIHRoZSBjb2RlIHRvIHdyaXRlIHRvIGh0bWwgKHRhZygpLngpIGRvbid0IHdvcmsgd2l0aCBpdC4NCiAgICAgIC8vU09MVVRJT046IHRha2UgdGhlIEREQiBkYXRhYmxvY2sgYW5kIHB1c2ggaXQgaW50byBhIG5ldyBkYXRhYmxvY2sgd2l0aCBjb25zaXRhbnQga2V5cyBvZiBibG9nZ2VyLg0KICAgICAgLy8tLS0tLS0tIHNvIGZhciB3ZSBhcmUgZGVhbGluZyB3aXRoIHRoaXMgaW4gR29vZ2xlIEFwcHMgU2NyaXB0LCBpbiBDb2RlLmdzDQogICAgICBjb25zb2xlLmxvZygiLS0tLS0tLS1nbG9iYWwuZ3JvdXAtLS0tLS0tLS0tLSIsIGdsb2JhbC5ncm91cCk7DQoNCiAgICAgIGZpbGxHcm91cEluZm9ybWF0aW9uKGdsb2JhbC5ncm91cCk7DQogICAgfSk7DQp9DQoNCmZ1bmN0aW9uIGZpbGxGcm9tQmxvZ2dlcigpIHsNCiAgY29uc3QgdXJsID0NCiAgICB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsNCiAgICB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoImFkbWluIikuam9pbigiaW5kZXgiKTsNCiAgZmV0Y2godXJsKQ0KICAgIC50aGVuKGZ1bmN0aW9uIChhKSB7DQogICAgICByZXR1cm4gYS50ZXh0KCk7DQogICAgfSkNCiAgICAudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsNCiAgICAgIGdsb2JhbC5ncm91cCA9IGdldFBvc3RKc29uKHJlc3BvbnNlKTsNCiAgICAgIGNvbnNvbGUubG9nKCIrKysrKysrKysrKysrZ2xvYmFsLmdyb3VwKysrKysrKysrKysrKyIsIGdsb2JhbC5ncm91cCk7DQogICAgICBmaWxsR3JvdXBJbmZvcm1hdGlvbihnbG9iYWwuZ3JvdXApOw0KDQogICAgICBjb25zdCB7IG9wdGlvbiwgZGl2IH0gPSB2YW4udGFnczsNCg0KICAgICAgLy8gYnJpbmcgaW4gdGhlIGxpc3Qgb2Ygc2V0cw0KICAgICAgZm9yIChjb25zdCBzZXQgb2YgZ2xvYmFsLmdyb3VwLnNlYXJjaFNldHMpIHsNCiAgICAgICAgY29uc3Qgb3B0ID0gb3B0aW9uKHsgdmFsdWU6IHNldC5zZXRfaWQgfSwgc2V0LnRpdGxlKTsNCiAgICAgICAgdGFnKCJncm91cC1zZWFyY2gtc2V0cyIpLmFwcGVuZENoaWxkKG9wdCk7DQogICAgICB9DQogICAgICAvLyBBdXRvIGZpbGwgU2V0LUluZm8NCiAgICAgIGNob29zZVNlYXJjaFNldCgpOw0KICAgIH0pOw0KfQ0KDQpmdW5jdGlvbiBmaWxsR3JvdXBJbmZvcm1hdGlvbihqc29uKSB7DQogIHRhZygiZ3JvdXAtbmFtZSIpLnZhbHVlID0ganNvbi5uYW1lOw0KICB0YWcoImdyb3VwLW5hbWUiKS5kYXRhc2V0LmlkID0gIm5hbWUiOw0KICB0YWcoImdyb3VwLWxvY2F0aW9uLWxhYmVsIikudmFsdWUgPSBqc29uLmxvY2F0aW9uTGFiZWw7DQogIHRhZygiZ3JvdXAtbG9jYXRpb24tbGFiZWwiKS5kYXRhc2V0LmlkID0gImxvY2F0aW9uTGFiZWwiOw0KICB0YWcoImdyb3VwLWxvY2F0aW9uLXNpemUiKS52YWx1ZSA9IGpzb24ubG9jYXRpb25TaXplOw0KICB0YWcoImdyb3VwLWxvY2F0aW9uLXNpemUiKS5kYXRhc2V0LmlkID0gImxvY2F0aW9uU2l6ZSI7DQp9DQoNCmZ1bmN0aW9uIGJyaW5nSW5TZXREREIoKSB7fQ0KZnVuY3Rpb24gYnJpbmdJblBlcnNvbkREQigpIHt9DQoNCmZ1bmN0aW9uIGNob29zZVNlYXJjaFNldCgpIHsNCiAgdGFnKCJzZXQtcGVvcGxlIikucmVwbGFjZUNoaWxkcmVuKCk7DQogIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSB0YWcoImdyb3VwLXNlYXJjaC1zZXRzIikudmFsdWU7DQoNCiAgY29uc29sZS5sb2coIndlIGFyZSBpbiBjaG9vc2VTZWFyY2hTZXQiLCBzZWxlY3RlZFZhbHVlKTsNCg0KICAvL2ZldGNoaW5nIHRoZSBqc29uIGRhdGEvLw0KICBjb25zdCB1cmwgPQ0KICAgIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKw0KICAgIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5zcGxpdCgiYWRtaW4iKS5qb2luKHNlbGVjdGVkVmFsdWUpOw0KICBmZXRjaCh1cmwpDQogICAgLnRoZW4oZnVuY3Rpb24gKGEpIHsNCiAgICAgIHJldHVybiBhLnRleHQoKTsNCiAgICB9KQ0KICAgIC50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgew0KICAgICAgLy9jb25zb2xlLmxvZyhyZXNwb25zZSk7IC8vY3VyZW50bHkgcHJpbnRzIHRoZSBlbnRpcmUgaHRtbCBwYWdlDQogICAgICBnbG9iYWwuc2V0ID0gZ2V0UG9zdEpzb24ocmVzcG9uc2UpOw0KICAgICAgY29uc29sZS5sb2coImdsb2JhbC5zZXQiLCBnbG9iYWwuc2V0KTsNCiAgICAgIHRhZygic2V0LXRpdGxlIikudmFsdWUgPSBnbG9iYWwuc2V0LnRpdGxlOw0KICAgICAgdGFnKCJzZXQtdGl0bGUiKS5kYXRhc2V0LmlkID0gInRpdGxlIjsNCiAgICAgIHRhZygic2V0LWJhbm5lciIpLnZhbHVlID0gZ2xvYmFsLnNldC5iYW5uZXI7DQogICAgICB0YWcoInNldC1iYW5uZXIiKS5kYXRhc2V0LmlkID0gImJhbm5lciI7DQogICAgICB0YWcoInNldC10ZXh0LWNvbG9yIikudmFsdWUgPSBnbG9iYWwuc2V0LnRleHRDb2xvcjsNCiAgICAgIHRhZygic2V0LXRleHQtY29sb3IiKS5kYXRhc2V0LmlkID0gInRleHRDb2xvciI7DQogICAgICB0YWcoInNldC1iYWNrZ3JvdW5kLWNvbG9yIikudmFsdWUgPSBnbG9iYWwuc2V0LmJhY2tncm91bmRDb2xvcjsNCiAgICAgIHRhZygic2V0LWJhY2tncm91bmQtY29sb3IiKS5kYXRhc2V0LmlkID0gImJhY2tncm91bmRDb2xvciI7DQogICAgICB0YWcoInNldC1kZXNjIikudmFsdWUgPSBnbG9iYWwuc2V0LmRlc2M7DQogICAgICB0YWcoInNldC1kZXNjIikuZGF0YXNldC5pZCA9ICJkZXNjIjsNCg0KICAgICAgY29uc3QgeyBvcHRpb24sIGRpdiB9ID0gdmFuLnRhZ3M7DQogICAgICAvLyBicmluZyBpbiB0aGUgbGlzdCBvZiBwZW9wbGUNCiAgICAgIGZvciAoY29uc3Qgc2V0IG9mIGdsb2JhbC5zZXQucGVvcGxlKSB7DQogICAgICAgIGNvbnN0IG9wdCA9IG9wdGlvbih7IHZhbHVlOiBzZXQucGlkIH0sIHNldC5uYW1lKTsNCiAgICAgICAgdGFnKCJzZXQtcGVvcGxlIikuYXBwZW5kQ2hpbGQob3B0KTsNCiAgICAgIH0NCiAgICAgIC8vIEFVVE8gRklMTCBwZXJzb24taW5mbw0KICAgICAgY2hvb3NlUGVyc29uKCk7DQogICAgfSk7DQp9DQoNCmZ1bmN0aW9uIGNob29zZVBlcnNvbigpIHsNCiAgZ2xvYmFsLnBlcnNvbiA9IGdsb2JhbC5zZXQucGVvcGxlW3RhZygic2V0LXBlb3BsZSIpLnNlbGVjdGVkSW5kZXhdOw0KICBjb25zb2xlLmxvZyhnbG9iYWwucGVyc29uKTsNCiAgdGFnKCJwZXJzb24tbmFtZSIpLnZhbHVlID0gZ2xvYmFsLnBlcnNvbi5uYW1lOw0KICB0YWcoInBlcnNvbi1uYW1lIikuZGF0YXNldC5pZCA9ICJuYW1lIjsNCiAgdGFnKCJwZXJzb24tZ2VuZGVyIikudmFsdWUgPSBnbG9iYWwucGVyc29uLmdlbmRlcjsNCiAgdGFnKCJwZXJzb24tZ2VuZGVyIikuZGF0YXNldC5pZCA9ICJnZW5kZXIiOw0KICB0YWcoInBlcnNvbi1pbWFnZS11cmwiKS52YWx1ZSA9IGdsb2JhbC5wZXJzb24uaW1hZ2VVUkw7DQogIHRhZygicGVyc29uLWltYWdlLXVybCIpLmRhdGFzZXQuaWQgPSAiaW1hZ2VVUkwiOw0KICB0YWcoInBlcnNvbi11cmwiKS52YWx1ZSA9IGdsb2JhbC5wZXJzb24udXJsOw0KICB0YWcoInBlcnNvbi11cmwiKS5kYXRhc2V0LmlkID0gInVybCI7DQogIHRhZygicGVyc29uLWRlc2MiKS52YWx1ZSA9IGdsb2JhbC5wZXJzb24uZGVzYzsNCiAgdGFnKCJwZXJzb24tZGVzYyIpLmRhdGFzZXQuaWQgPSAiZGVzYyI7DQp9DQoNCmZ1bmN0aW9uIGNob29zZVNlYXJjaEJ5KCkgew0KICAvLypUSGlzIG5lZWRzIHRvIGJlIG1hZGUgc28gdGhhdCB0aGUgdXNlciBjYW4gZmlsdGVyIGhvdyB0aGV5IHNlYXJjaCwgQm90aCwgRGVhZCwgTGl2aW5nDQp9DQoNCmZ1bmN0aW9uIGdldFBvc3RKc29uKGh0bWwpIHsNCiAgLy8gZ292ZSB0cmllZCB0byBtYWtlIHRoaXMgd29yayB3aXRoIGRvYyBwYXJzZXIsIGJ1dCB0aGUganNvbiBqdXN0IGRpc2FwcGVhcmVkLg0KICByZXR1cm4gSlNPTi5wYXJzZSgNCiAgICBodG1sDQogICAgICAuc3BsaXQoYDxkaXYgaWQ9J3Bvc3QtanNvbicgc3R5bGU9J2Rpc3BsYXk6bm9uZSc+YClbMV0NCiAgICAgIC5zcGxpdCgiPC9kaXY+IilbMF0NCiAgKTsNCn0NCg0KZnVuY3Rpb24gbG9hZFNldChidXR0b24pIHsNCiAgaWYgKGJ1dHRvbi5pbm5lckhUTUwuaW5jbHVkZXMoIkRyYWZ0IikpIHsNCiAgICAvLyBnZXQgZGF0YSBmcm9tIER5bmFtbw0KICAgIGNvbnNvbGUubG9nKCJHZXR0aW5nIERhdGEgZnJvbSBEeW5hbW9EQiIpOw0KICB9IGVsc2Ugew0KICAgIC8vIGdldCBkYXRhIGZyb20gYmxvZ2dlcg0KICAgIGNvbnNvbGUubG9nKCJHZXR0aW5nIERhdGEgZnJvbSBCbG9nZ2VyIik7DQogIH0NCn0NCg0KZnVuY3Rpb24gY2hlY2tEaXJ0eShlbGVtZW50KSB7DQogIG9sZERhdGEgPSBlbGVtZW50LmlkLnNwbGl0KCItIilbMF07DQogIGlmIChnbG9iYWxbb2xkRGF0YV1bZWxlbWVudC5kYXRhc2V0LmlkXSA9PT0gZWxlbWVudC52YWx1ZSkgew0KICAgIC8vcmVvbXZlIGRpcnR5DQogICAgZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJkaXJ0eSIpOw0KICB9IGVsc2Ugew0KICAgIC8vYWRkIGRpcnR5DQogICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkaXJ0eSIpOw0KICB9DQp9DQoNCmZ1bmN0aW9uIHRhZyhpZCkgew0KICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOw0KfQ0KDQphdXRoSW5pdCgpOw0KDQovLw0KLy8NCi8vDQovLw0KLy8NCi8vDQovLw0KLy8NCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLw0KLy8gICBPbGQgQ29kZS4gIGxldCBpdCBhZ2UgYmVmb3JlIGl0IGdldHMgZGVsZXRlZC4uLi4gICAgICAgICAgICAgICAgLy8NCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vDQovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQpmdW5jdGlvbiBhdXRoZW50aWNhdGUoKSB7DQogIHRhZygiZXJyb3IiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOw0KICBjb25zb2xlLmxvZygidG9rZW4iLCB0YWcoImF1dGgiKS52YWx1ZSk7DQoNCiAgY29uc3QgZGVwbG95bWVudF9pZCA9DQogICAgIkFLZnljYnpvTWk3N0c1c2ZqeTBBMWRCTTZtLTB6NVBXTmlWZmVzbHVMNExaVWZDTzFFMHIweVVPUENxNkkxTlNwQVVYcmZZcCI7DQoNCiAgY29uc3QgdXJsID0gYGh0dHBzOi8vc2NyaXB0Lmdvb2dsZS5jb20vbWFjcm9zL3MvJHtkZXBsb3ltZW50X2lkfS9leGVjYDsNCiAgY29uc3QgcGF0aG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoIi8iKTsNCg0KICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoew0KICAgIHN5c3RlbTogYCR7cGF0aG5hbWVbMV19LyR7cGF0aG5hbWVbMl19YCwNCiAgICB0b2tlbjogdGFnKCJhdXRoIikudmFsdWUsDQogICAgbW9kZTogImF1dGgiLA0KICB9KTsNCg0KICBmZXRjaCh1cmwsIHsgYm9keTogYm9keSwgbWV0aG9kOiAiUE9TVCIgfSkNCiAgICAudGhlbihmdW5jdGlvbiAoYSkgew0KICAgICAgcmV0dXJuIGEuanNvbigpOw0KICAgIH0pDQogICAgLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7DQogICAgICBjb25zb2xlLmxvZygicmVzcG9uc2UtLS0iLCByZXNwb25zZSk7DQogICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAic3VjY2VzcyIpIHsNCiAgICAgICAgYnVpbGRHcm91cEVkaXQocmVzcG9uc2UuZGF0YSk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICBjb25zb2xlLmxvZygiZmFpbGVkIik7DQogICAgICAgIHRhZygiZXJyb3IiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCiAgICAgIH0NCiAgICB9KTsgLy8gZW5kIG9mIGZldGNoDQogIGNvbnNvbGUubG9nKCJhZnRlciBmZXRjaCIpOw0KfQ0KDQpmdW5jdGlvbiBidWlsZEdyb3VwRWRpdChkYXRhKSB7DQogIGNvbnN0IHsgYSwgZGl2LCB0YWJsZSwgdHIsIHRkLCBpbnB1dCB9ID0gdmFuLnRhZ3M7DQogIGNvbnN0IHRhYmxlMSA9IHRhYmxlKCk7DQogIHRhYmxlMS5hcHBlbmQoDQogICAgdHIodGQoIlRpdGxlIiksIHRkKCJJbWFnZSIpLCB0ZCgiQmFjayBDb2xvciIpLCB0ZCgiVGV4dCBDb2xvciIpKQ0KICApOw0KICBmb3IgKGNvbnN0IHNlYXJjaFNldCBvZiBkYXRhLnNlYXJjaF9zZXRzKSB7DQogICAgY29uc3QgbGluZSA9IHsNCiAgICAgIHNldF9pZDogc2VhcmNoU2V0LnNldF9pZCwNCiAgICAgIHRpdGxlOiBzZWFyY2hTZXQudGl0bGUsDQogICAgfTsNCiAgICB0YWJsZTEuYXBwZW5kKA0KICAgICAgdHIoDQogICAgICAgIHRkKHNlYXJjaFNldC50aXRsZSksDQogICAgICAgIHRkKHNlYXJjaFNldC5iYW5uZXIpLA0KICAgICAgICB0ZChzZWFyY2hTZXQuYmFja2dyb3VuZENvbG9yKSwNCiAgICAgICAgdGQoSlNPTi5zdHJpbmdpZnkobGluZSkgKyAiLCIpDQogICAgICApDQogICAgKTsNCiAgfQ0KDQogIGNvbnN0IGVkaXQgPSBkaXYoDQogICAgZGl2KHsgc3R5bGU6ICJoZWlnaHQ6MTBweCIgfSksDQogICAgZGl2KA0KICAgICAgeyBzdHlsZTogImJhY2tncm91bmQtY29sb3I6I2VlZTtwYWRkaW5nOjRweDtjb2xvcjpibGFjayIgfSwNCiAgICAgICJMb2NhdGlvbiBMYWJlbDoiLA0KICAgICAgaW5wdXQoew0KICAgICAgICBpZDogImxvY2F0aW9uLWxhYmVsIiwNCiAgICAgICAgdmFsdWU6IGRhdGEubG9jYXRpb25fbGFiZWwsDQogICAgICAgIHR5cGU6ICJ0ZXh0IiwNCiAgICAgICAgc3R5bGU6ICJ3aWR0aDozMDBweCIsDQogICAgICB9KSwNCiAgICAgIHRhYmxlMQ0KICAgICkNCiAgKTsNCiAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImFydGljbGUiKVswXS5yZXBsYWNlQ2hpbGRyZW4oZWRpdCk7DQp9DQo=[--C0DE--]