xiaomianao666

插件名:global_觅影

Mar 28th, 2024
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:网页插件¥js_url¥global_觅影@base64://Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICDop4XlvbEKLy8gQHZlcnNpb24gICAgICAyMC4yMC5maW5hbAovLyBAYXV0aG9yICAgICAgIChvy5jil6HLmG8pCi8vIEBkZXNjcmlwdGlvbiAg5pSv5oyB56e75Yqo56uv77yb5Yqg6YCf6Lez5bm/5ZGK77ybVklQIOinhumikeino+aekO+8m+aUr+aMgeiHquWKqOino+aekO+8m+makOiXj+inhumikeawtOWNsO+8m+W/q+aNt+i3s+i9rOaQnOe0oua6kO+8m+iHquWumuS5ieino+aekOWSjOaQnOe0oua6kO+8m+ixhueTo8K36YCJ5b2x6KeGIOWHgOWMlgovLyBAbmFtZXNwYWNlICAgIChvy5jil6HLmG8pCi8vIEBpY29uICAgICAgICAgaHR0cHM6Ly9wLnBzdGF0cC5jb20vb3JpZ2luL2ZlNjkwMDAwYzkxNDE5NTViYmFjCi8vIEBsaWNlbnNlICAgICAgR1BMIExpY2Vuc2UKLy8gQGluY2x1ZGUgICAgICAqCi8vIEBydW4tYXQgICAgICAgZG9jdW1lbnQtc3RhcnQKLy8gQGdyYW50ICAgICAgICBHTV9zZXRWYWx1ZQovLyBAZ3JhbnQgICAgICAgIEdNX2dldFZhbHVlCi8vIEBncmFudCAgICAgICAgR01fZGVsZXRlVmFsdWUKLy8gQGdyYW50ICAgICAgICB1bnNhZmVXaW5kb3cKLy8gPT0vVXNlclNjcmlwdD09CgohYXN5bmMgZnVuY3Rpb24oKSB7CiAgZnVuY3Rpb24gX3RPKCkgewogICAgY29uc3QgZSA9IF90VExMKFsgIiIsICIiIF0pOwogICAgcmV0dXJuIF90TyA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gZTsKICAgIH0sIGU7CiAgfQogIGZ1bmN0aW9uIF90VExMKGUsIHQpIHsKICAgIHJldHVybiB0IHx8ICh0ID0gZS5zbGljZSgwKSksIGUucmF3ID0gdCwgZTsKICB9CiAgZnVuY3Rpb24gX3RDQShlKSB7CiAgICByZXR1cm4gX2FXSChlKSB8fCBfaVRBKGUpIHx8IF91SVRBKGUpIHx8IF9uSVMoKTsKICB9CiAgZnVuY3Rpb24gX25JUygpIHsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IoIlR5cGVFcnJvciIpOwogIH0KICBmdW5jdGlvbiBfdUlUQShlLCB0KSB7CiAgICBpZiAoZSkgewogICAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUpIHJldHVybiBfYUxUQShlLCB0KTsKICAgICAgdmFyIGkgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwgLTEpOwogICAgICByZXR1cm4gIk9iamVjdCIgPT09IGkgJiYgZS5jb25zdHJ1Y3RvciAmJiAoaSA9IGUuY29uc3RydWN0b3IubmFtZSksICJNYXAiID09PSBpIHx8ICJTZXQiID09PSBpID8gQXJyYXkuZnJvbShlKSA6ICJBcmd1bWVudHMiID09PSBpIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KGkpID8gX2FMVEEoZSwgdCkgOiB2b2lkIDA7CiAgICB9CiAgfQogIGZ1bmN0aW9uIF9pVEEoZSkgewogICAgaWYgKCJ1bmRlZmluZWQiICE9IHR5cGVvZiBTeW1ib2wgJiYgU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSkgcmV0dXJuIEFycmF5LmZyb20oZSk7CiAgfQogIGZ1bmN0aW9uIF9hV0goZSkgewogICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiBfYUxUQShlKTsKICB9CiAgZnVuY3Rpb24gX2FMVEEoZSwgdCkgewogICAgKG51bGwgPT0gdCB8fCB0ID4gZS5sZW5ndGgpICYmICh0ID0gZS5sZW5ndGgpOwogICAgZm9yICh2YXIgaSA9IDAsIG4gPSBBcnJheSh0KTsgaSA8IHQ7IGkrKykgbltpXSA9IGVbaV07CiAgICByZXR1cm4gbjsKICB9CiAgdmFyIF9NYXRoZmxvb3IgPSBNYXRoLmZsb29yLCBfTWF0aG1pbiA9IE1hdGgubWluLCBfTWF0aG1heCA9IE1hdGgubWF4OwogIGZ1bmN0aW9uIGgoZSkgewogICAgbGV0IHQgPSAiIjsKICAgIGNvbnN0IGkgPSB7fTsKICAgIGZvciAodmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoLCBhID0gQXJyYXkoMSA8IG4gPyBuIC0gMSA6IDApLCBvID0gMTsgbyA8IG47IG8rKykgYVtvIC0gMV0gPSBhcmd1bWVudHNbb107CiAgICBmb3IgKGxldCBuID0gMDsgbiA8IGEubGVuZ3RoOyBuKyspIGlmIChhW25dIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHsKICAgICAgY29uc3QgbyA9ICJpZCIgKyBuOwogICAgICBpW29dID0gYVtuXSwgdCArPSBlW25dICsgJzxkaXYgYXBwZW5kPSInICsgbyArICciPjwvZGl2Pic7CiAgICB9IGVsc2UgdCArPSBlW25dICsgYVtuXTsKICAgIHQgKz0gZVtlLmxlbmd0aCAtIDFdOwogICAgY29uc3QgciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7CiAgICByLmlubmVySFRNTCA9IHQ7CiAgICBjb25zdCBzID0gci5jb250ZW50OwogICAgcmV0dXJuIF90Q0Eocy5xdWVyeVNlbGVjdG9yQWxsKCJbYXBwZW5kXSIpKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgIGNvbnN0IHQgPSBpW2UuZ2V0QXR0cmlidXRlKCJhcHBlbmQiKV07CiAgICAgIGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodCwgZSksIGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKTsKICAgIH0pKSwgcy5jb2xsZWN0ID0gZnVuY3Rpb24oKSB7CiAgICAgIGxldCB7YXR0cjogZSA9ICJyZWYiLCBrZWVwQXR0cmlidXRlOiB0LCB0bzogaSA9IHt9fSA9IDAgPCBhcmd1bWVudHMubGVuZ3RoICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdID8gYXJndW1lbnRzWzBdIDoge307CiAgICAgIGNvbnN0IG4gPSBzLnF1ZXJ5U2VsZWN0b3JBbGwoIlsiICsgZSArICJdIik7CiAgICAgIHJldHVybiBfdENBKG4pLnJlZHVjZSgoZnVuY3Rpb24oaSwgbikgewogICAgICAgIGNvbnN0IGEgPSBuLmdldEF0dHJpYnV0ZShlKS50cmltKCk7CiAgICAgICAgcmV0dXJuIHQgfHwgbi5yZW1vdmVBdHRyaWJ1dGUoZSksIGlbYV0gPSBpW2FdID8gQXJyYXkuaXNBcnJheShpW2FdKSA/IFtdLmNvbmNhdChfdENBKGlbYV0pLCBbIG4gXSkgOiBbIGlbYV0sIG4gXSA6IG4sIAogICAgICAgIGk7CiAgICAgIH0pLCBpKTsKICAgIH0sIHM7CiAgfQogIGZ1bmN0aW9uIERPTSgpIHsKICAgIGNvbnN0IGUgPSB7fTsKICAgIGxldCB0ID0gZnVuY3Rpb24oZSkgewogICAgICB2YXIgdCwgaTsKICAgICAgbGV0IG4gPSAxIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IHt9OwogICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzLmxlbmd0aCwgbyA9IEFycmF5KDIgPCBhID8gYSAtIDIgOiAwKSwgciA9IDI7IHIgPCBhOyByKyspIG9bciAtIDJdID0gYXJndW1lbnRzW3JdOwogICAgICByZXR1cm4gewogICAgICAgICQ6IGUsCiAgICAgICAgYTogIW4gfHwgbi4kIHx8IG4uY29uY2F0ID8gewogICAgICAgICAgYzogKHQgPSBbXSkuY29uY2F0LmFwcGx5KHQsIFsgbiB8fCBbXSBdLmNvbmNhdChvKSkKICAgICAgICB9IDogKG4uYyA9IChpID0gW10pLmNvbmNhdC5hcHBseShpLCBvKSwgbikKICAgICAgfTsKICAgIH0sIGkgPSBmdW5jdGlvbigpIHsKICAgICAgbGV0IGUgPSAwIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IFtdLCB0ID0gMSA8IGFyZ3VtZW50cy5sZW5ndGggPyBhcmd1bWVudHNbMV0gOiB2b2lkIDAsIGkgPSAyIDwgYXJndW1lbnRzLmxlbmd0aCA/IGFyZ3VtZW50c1syXSA6IHZvaWQgMDsKICAgICAgcmV0dXJuIGUubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuIGUodCwgaSk7CiAgICAgIH0pKTsKICAgIH0sIG4gPSBmdW5jdGlvbihlKSB7CiAgICAgIHJldHVybiBuZXcgUHJveHkoZSwgewogICAgICAgIGdldDogZnVuY3Rpb24oZSwgdCwgaSkgewogICAgICAgICAgcmV0dXJuIG4oKGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gKGkgPSBlLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKSkuYS5jbGFzc05hbWUgPSAoaS5hLmNsYXNzTmFtZSB8fCAiICIpICsgIiAiICsgdCwgCiAgICAgICAgICAgIGk7CiAgICAgICAgICB9KSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sIGEgPSBlLlIgPSBmdW5jdGlvbihlLCB0KSB7CiAgICAgIGxldCBuID0gMiA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gPyBhcmd1bWVudHNbMl0gOiB0LmNoaWxkTm9kZXMsIG8gPSAzIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1szXSA/IGFyZ3VtZW50c1szXSA6IDA7CiAgICAgIGZvciAoW10uY29uY2F0KGUpLm1hcCgoZnVuY3Rpb24ociwgcywgbCkgewogICAgICAgIGxldCBjID0gMyA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbM10gPyBhcmd1bWVudHNbM10gOiBuW28rK10sIGQgPSA0IDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1s0XSA/IGFyZ3VtZW50c1s0XSA6IHIucyA9IChjID8gYy5hID09IHIuJCAmJiAoci5zIHx8IGMucykgOiByLnMpIHx8IHt9LCBwID0gNSA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbNV0gPyBhcmd1bWVudHNbNV0gOiB7CiAgICAgICAgICBhOiByLiQsCiAgICAgICAgICBzOiBkLAogICAgICAgICAgbTogW10sCiAgICAgICAgICB1OiBbXSwKICAgICAgICAgIGQ6IFtdCiAgICAgICAgfTsKICAgICAgICBmb3IgKDsoci4kIHx8IGUpLmJpbmQ7ICkgciA9IHIuJChyLmEsIGQsIChmdW5jdGlvbihpKSB7CiAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihkLCBpKSAmJiBhKGUsIHQpOwogICAgICAgIH0pLCBwKTsKICAgICAgICBzID0gci5yZXBsYWNlID8gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocikgOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHIuJCksIHMgPSBjID8gYy4kICE9IHIuJCAmJiBjLmRhdGEgIT0gciA/ICh0LnJlcGxhY2VDaGlsZChzLCBjKSwgCiAgICAgICAgcykgOiBjIDogdC5hcHBlbmRDaGlsZChzKSwgbCA9IGMgPyBjLmEgPT0gcC5hID8gcC5kIDogKGkoYy51KSwgYShbXSwgYyksIHAubSkgOiBwLm0sIAogICAgICAgIE9iamVjdC5hc3NpZ24ocywgciwgcCksIHIucmVwbGFjZSA/IHMuZGF0YSA9IHIgOiBPYmplY3Qua2V5cyhyLmEpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgcmV0dXJuICJzdHlsZSIgPT0gZSA/IE9iamVjdC5hc3NpZ24oc1tlXSwgci5hW2VdKSA6IHNbZV0gIT09IHIuYVtlXSAmJiAoc1tlXSA9IHIuYVtlXSk7CiAgICAgICAgfSkpICYmIHAuciB8fCBhKHIuYS5jLCBzKSwgaShsLCBzLCBjKTsKICAgICAgfSkpOyBuW29dOyApIGkobltvXS51KSwgYShbXSwgdC5yZW1vdmVDaGlsZChuW29dKSk7CiAgICB9OwogICAgcmV0dXJuIGUuSCA9IG5ldyBQcm94eSh0LCB7CiAgICAgIGdldDogZnVuY3Rpb24oZSwgaSkgewogICAgICAgIHJldHVybiBlW2ldIHx8IG4odC5iaW5kKGUsIGkpKTsKICAgICAgfQogICAgfSksIGU7CiAgfQogIGZ1bmN0aW9uIGdldFZpcFBsYXllcigpIHsKICAgIHJldHVybiAkKFBsYXllclNlbGVjdG9yKS5nZXQoMCkgfHwgJCgiI3BsYXllciwgLnBsYXllciIpLmdldCgwKTsKICB9CiAgZnVuY3Rpb24geFN0cmluZyhlKSB7CiAgICByZXR1cm4gX0QgPyBlIDogZS5yZXBsYWNlKC8oXHcpL2csIChmdW5jdGlvbihlLCB0KSB7CiAgICAgIHJldHVybiB4Q2hhclt0XSB8fCB0OwogICAgfSkpOwogIH0KICBmdW5jdGlvbiBNX1ZpcFVybChlKSB7CiAgICBpZiAoIWUgfHwgX0QpIHJldHVybiBlOwogICAgY29uc3QgdCA9IHhTdHJpbmcoZSkucmVwbGFjZSgvwrcvZywgIi4iKS5yZXBsYWNlKC8tL2csICIvIik7CiAgICByZXR1cm4gImh0dHBzOi8vIiArIHQgKyAodC5pbmNsdWRlcygiPyIpID8gIiIgOiAodC5lbmRzV2l0aCgiLiIpID8gInBocCIgOiAvXC8kLy50ZXN0KHQpID8gIiIgOiAiLyIpICsgIj91cmwiKSArICI9IjsKICB9CiAgZnVuY3Rpb24gZ2V0S2V5d29yZEZyb21VcmwoZSkgewogICAgY29uc3QgdCA9IGUgJiYgZS5zb3VyY2UsIGkgPSBsb2NhdGlvbi5ocmVmLm1hdGNoKHQgPyBlIDogQ29tbW9uU2VhcmNoS2V5d29yZFJlZ2V4KTsKICAgIHJldHVybiBpID8gZGVjb2RlVVJJQ29tcG9uZW50KCh0ID8gaVsxXSB8fCBpWzJdIDogaVsyXSB8fCBpWzRdKSB8fCAiIikgOiAiIjsKICB9CiAgZnVuY3Rpb24gcHVyaWZ5S2V5d29yZChlKSB7CiAgICByZXR1cm4gZSA/IChQdXJpZnlLZXl3b3JkUmVnZXggPyBlLnJlcGxhY2UoUHVyaWZ5S2V5d29yZFJlZ2V4LCAiIikgfHwgKGUuc3RhcnRzV2l0aCgi56ysIikgPyAiIiA6IGUpIDogZSkucmVwbGFjZSgvXHMqOlxzKiQvLCAiIikucmVwbGFjZSgvXHMqKFvnsqToi7Hml6Vd6K+tfFxbLuivrVxdKVxzKiQvLCAiIikucmVwbGFjZSgvKC4qXFMuKilcKC4qXClccyokLywgIiQxIikucmVwbGFjZSgvLirjgIooLisp44CLLiovLCAiJDEiKS5yZXBsYWNlKC9ccysoYmR8aGR8XGQrcClccyokL2ksICIiKS5yZXBsYWNlKC9bOu+8ml1ccyokLywgIiIpLnJlcGxhY2UoL++8iC4r77yJLywgIiIpLnRyaW0oKSA6ICIiOwogIH0KICBmdW5jdGlvbiBTeW5jU3RhdGUoZSwgdCkgewogICAgZS5fc3luYyB8fCAodCh7CiAgICAgIF9zeW5jOiAhMAogICAgfSksIFN0YXRlcy5wdXNoKHQpKTsKICB9CiAgZnVuY3Rpb24gU2V0U3RhdGUoZSkgewogICAgU3RhdGVzLmZvckVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgcmV0dXJuIHQoZSk7CiAgICB9KSk7CiAgfQogIGZ1bmN0aW9uIGdldCQoKSB7CiAgICBjb25zdCBlID0gewogICAgICBvbihlLCB0KSB7CiAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgIHJldHVybiBlLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgcmV0dXJuIGkuYWRkRXZlbnRMaXN0ZW5lcihlLCB0KTsKICAgICAgICB9KSksIHRoaXM7CiAgICAgIH0sCiAgICAgIG9mZihlLCB0KSB7CiAgICAgICAgdmFyIGkgPSB0aGlzOwogICAgICAgIHJldHVybiBlLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgcmV0dXJuIGkucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLCB0KTsKICAgICAgICB9KSksIHRoaXM7CiAgICAgIH0sCiAgICAgIGF0dHIoZSwgdCkgewogICAgICAgIHJldHVybiB2b2lkIDAgPT09IHQgPyB0aGlzLmdldEF0dHJpYnV0ZShlKSA6IChudWxsID09IHQgPyB0aGlzLnJlbW92ZUF0dHJpYnV0ZShlKSA6IHRoaXMuc2V0QXR0cmlidXRlKGUsIHQgfHwgIiIpLCAKICAgICAgICB0aGlzKTsKICAgICAgfQogICAgfTsKICAgIHJldHVybiBmdW5jdGlvbiB0KGkpIHsKICAgICAgZnVuY3Rpb24gbihlKSB7CiAgICAgICAgcmV0dXJuICJzdHJpbmciID09IHR5cGVvZiBlID8gaChfdE8oKSwgZSkgOiBlWzBdIHx8IGU7CiAgICAgIH0KICAgICAgbGV0IGEgPSAxIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IGRvY3VtZW50OwogICAgICBpZiAoaSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSByZXR1cm4gImxvYWRpbmciID09IGRvY3VtZW50LnJlYWR5U3RhdGUgPyBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgaSkgOiBpKCk7CiAgICAgIGxldCBvID0gaSBpbnN0YW5jZW9mIE5vZGVMaXN0IHx8IEFycmF5LmlzQXJyYXkoaSkgPyBpIDogaSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50IHx8IGkgaW5zdGFuY2VvZiBTVkdFbGVtZW50ID8gWyBpIF0gOiBhLnF1ZXJ5U2VsZWN0b3JBbGwoaSk7CiAgICAgIHJldHVybiBvLmxlbmd0aCB8fCAobyA9IFtdKSwgT2JqZWN0LmFzc2lnbihBcnJheS5mcm9tKG8pLm1hcCgoZnVuY3Rpb24odCkgewogICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHQsIGUpOwogICAgICB9KSksIHsKICAgICAgICBvbihlLCB0KSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5mb3JFYWNoKChmdW5jdGlvbihpKSB7CiAgICAgICAgICAgIHJldHVybiBpLm9uKGUsIHQpOwogICAgICAgICAgfSkpLCB0aGlzOwogICAgICAgIH0sCiAgICAgICAgb2ZmKGUsIHQpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmZvckVhY2goKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgcmV0dXJuIGkub2ZmKGUsIHQpOwogICAgICAgICAgfSkpLCB0aGlzOwogICAgICAgIH0sCiAgICAgICAgYXR0cihlLCB0KSB7CiAgICAgICAgICByZXR1cm4gInN0cmluZyIgPT0gdHlwZW9mIGUgJiYgdm9pZCAwID09PSB0ID8gdGhpc1swXS5hdHRyKGUpIDogKCJvYmplY3QiID09IHR5cGVvZiBlID8gdGhpcy5mb3JFYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhlKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgbGV0IFtpLCBuXSA9IGU7CiAgICAgICAgICAgICAgcmV0dXJuIHQuYXR0cihpLCBuKTsKICAgICAgICAgICAgfSkpOwogICAgICAgICAgfSkpIDogInN0cmluZyIgPT0gdHlwZW9mIGUgJiYgKHQgfHwgbnVsbCA9PSB0IHx8ICIiID09IHQpICYmIHRoaXMuZm9yRWFjaCgoZnVuY3Rpb24oaSkgewogICAgICAgICAgICByZXR1cm4gaS5hdHRyKGUsIHQpOwogICAgICAgICAgfSkpLCB0aGlzKTsKICAgICAgICB9LAogICAgICAgIGdldChlKSB7CiAgICAgICAgICByZXR1cm4gdGhpc1swID4gZSA/IGUgKyB0aGlzLmxlbmd0aCA6IGVdOwogICAgICAgIH0sCiAgICAgICAgZXEoZSkgewogICAgICAgICAgcmV0dXJuIHQodGhpcy5nZXQoZSkpOwogICAgICAgIH0sCiAgICAgICAgZWFjaChlKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5mb3JFYWNoKChmdW5jdGlvbih0LCBpKSB7CiAgICAgICAgICAgIGUuYmluZCh0KSh0LCBpLCB0aGlzKTsKICAgICAgICAgIH0pKSwgdGhpczsKICAgICAgICB9LAogICAgICAgIHJlbW92ZSgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgcmV0dXJuIGUucGFyZW50Tm9kZSAmJiBlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSk7CiAgICAgICAgICB9KSk7CiAgICAgICAgfSwKICAgICAgICBlbXB0eSgpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZm9yICg7ZS5maXJzdENoaWxkOyApIGUucmVtb3ZlQ2hpbGQoZS5maXJzdENoaWxkKTsKICAgICAgICAgIH0pKTsKICAgICAgICB9LAogICAgICAgIGhhc0NsYXNzKGUpIHsKICAgICAgICAgIHJldHVybiB0aGlzWzBdICYmIHRoaXNbMF0uY2xhc3NMaXN0LmNvbnRhaW5zKGUpOwogICAgICAgIH0sCiAgICAgICAgYWRkQ2xhc3MoZSkgewogICAgICAgICAgdmFyIHQgPSB0aGlzOwogICAgICAgICAgcmV0dXJuIGUudHJpbSgpLnNwbGl0KC9ccysvKS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHJldHVybiB0LmVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgICByZXR1cm4gdC5jbGFzc0xpc3QuYWRkKGUpOwogICAgICAgICAgICB9KSk7CiAgICAgICAgICB9KSksIHRoaXM7CiAgICAgICAgfSwKICAgICAgICByZW1vdmVDbGFzcyhlKSB7CiAgICAgICAgICB2YXIgdCA9IHRoaXM7CiAgICAgICAgICByZXR1cm4gZS5zcGxpdCgvXHMrLykuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgICByZXR1cm4gdC5lYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgICAgcmV0dXJuIHQuY2xhc3NMaXN0LnJlbW92ZShlKTsKICAgICAgICAgICAgfSkpOwogICAgICAgICAgfSkpLCB0aGlzOwogICAgICAgIH0sCiAgICAgICAgdG9nZ2xlQ2xhc3MoZSkgewogICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdC5jbGFzc0xpc3QudG9nZ2xlKGUpOwogICAgICAgICAgfSkpOwogICAgICAgIH0sCiAgICAgICAgY3NzKGUsIHQpIHsKICAgICAgICAgIGlmICgib2JqZWN0IiA9PSB0eXBlb2YgZSkgewogICAgICAgICAgICBmb3IgKGNvbnN0IHQgaW4gZSkgdGhpcy5lYWNoKChmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgaS5zdHlsZVt0XSA9IGVbdF07CiAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gdCA9PT0gW10uXyA/IHRoaXNbMF0uc3R5bGVbZV0gOiB0aGlzLmVhY2goKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgaS5zdHlsZVtlXSA9IHQ7CiAgICAgICAgICB9KSk7CiAgICAgICAgfSwKICAgICAgICB3aWR0aChlKSB7CiAgICAgICAgICBjb25zdCB0ID0gdGhpc1swXTsKICAgICAgICAgIHJldHVybiB2b2lkIDAgPT09IGUgPyBwYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUodCwgbnVsbCkud2lkdGgucmVwbGFjZSgicHgiLCAiIikpIDogKCJmdW5jdGlvbiIgPT0gdHlwZW9mIGUgJiYgKGUgPSBlKCkpLCAKICAgICAgICAgIHQuc3R5bGUud2lkdGggPSAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IGUgOiBlICsgInB4IiwgdGhpcyk7CiAgICAgICAgfSwKICAgICAgICBoZWlnaHQoZSkgewogICAgICAgICAgY29uc3QgdCA9IHRoaXNbMF07CiAgICAgICAgICByZXR1cm4gdm9pZCAwID09PSBlID8gcGFyc2VGbG9hdChnZXRDb21wdXRlZFN0eWxlKHQsIG51bGwpLmhlaWdodC5yZXBsYWNlKCJweCIsICIiKSkgOiAoImZ1bmN0aW9uIiA9PSB0eXBlb2YgZSAmJiAoZSA9IGUoKSksIAogICAgICAgICAgdC5zdHlsZS5oZWlnaHQgPSAic3RyaW5nIiA9PSB0eXBlb2YgZSA/IGUgOiBlICsgInB4IiwgdGhpcyk7CiAgICAgICAgfSwKICAgICAgICB0ZXh0KGUpIHsKICAgICAgICAgIHJldHVybiBlID09PSBbXS5fID8gdGhpc1swXS50ZXh0Q29udGVudCA6IHRoaXMuZWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICB0LnRleHRDb250ZW50ID0gZTsKICAgICAgICAgIH0pKTsKICAgICAgICB9LAogICAgICAgIGh0bWwoZSkgewogICAgICAgICAgcmV0dXJuIGUgPT09IFtdLl8gPyB0aGlzWzBdLmlubmVySFRNTCA6IHRoaXMuZWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICB0LmlubmVySFRNTCA9IGU7CiAgICAgICAgICB9KSk7CiAgICAgICAgfSwKICAgICAgICBiZWZvcmUoZSkgewogICAgICAgICAgcmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24odCkgewogICAgICAgICAgICByZXR1cm4gdC5pbnNlcnRBZGphY2VudEhUTUwoImJlZm9yZWJlZ2luIiwgZSk7CiAgICAgICAgICB9KSk7CiAgICAgICAgfSwKICAgICAgICBhZnRlcihlKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0Lmluc2VydEFkamFjZW50SFRNTCgiYWZ0ZXJlbmQiLCBlKTsKICAgICAgICAgIH0pKTsKICAgICAgICB9LAogICAgICAgIGFwcGVuZChlKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0LmFwcGVuZENoaWxkKG4oZSkpOwogICAgICAgICAgfSkpOwogICAgICAgIH0sCiAgICAgICAgcHJlcGVuZChlKSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbih0KSB7CiAgICAgICAgICAgIHJldHVybiB0Lmluc2VydEJlZm9yZShuKGUpLCB0LmZpcnN0Q2hpbGQpOwogICAgICAgICAgfSkpOwogICAgICAgIH0sCiAgICAgICAgcGFyZW50KCkgewogICAgICAgICAgcmV0dXJuIDAgPCB0aGlzLmxlbmd0aCA/IHQodGhpc1swXS5wYXJlbnROb2RlKSA6IFtdOwogICAgICAgIH0sCiAgICAgICAgY2xpY2soKSB7CiAgICAgICAgICB0cnkgewogICAgICAgICAgICB0aGlzWzBdICYmIHRoaXNbMF0uY2xpY2sgJiYgdGhpc1swXS5jbGljaygpOwogICAgICAgICAgfSBjYXRjaCAoZSkge30KICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgIH0sCiAgICAgICAgY2xpY2tPdXRzaWRlKGUpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKHQpIHsKICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgIHQuY29udGFpbnMoaS50YXJnZXQpIHx8IGUoKTsKICAgICAgICAgICAgfSkpOwogICAgICAgICAgfSkpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9OwogIH0KICBmdW5jdGlvbiB3YWl0KGUsIHQpIHsKICAgIGxldCBpID0gMiA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gPyBhcmd1bWVudHNbMl0gOiAwOwogICAgY29uc3QgbiA9IGUgaW5zdGFuY2VvZiBGdW5jdGlvbiA/IGUoKSA6IDAgPCAkKGUpLmxlbmd0aDsKICAgIHJldHVybiBuID8gdm9pZCAodCBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmIHQobikpIDogdm9pZCAoMTAwIDwgaSB8fCBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgd2FpdChlLCB0LCBpICsgMSk7CiAgICB9KSwgMTAwKSk7CiAgfQogIGZ1bmN0aW9uICQkKGUsIHQpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oaSkgewogICAgICB3YWl0KGUsIChmdW5jdGlvbihlKSB7CiAgICAgICAgdCBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmIHQoZSksIGkoZSk7CiAgICAgIH0pKTsKICAgIH0pKTsKICB9CiAgZnVuY3Rpb24gZW1pdHRlcihlKSB7CiAgICByZXR1cm4gZSA9IGUgfHwgT2JqZWN0LmNyZWF0ZShudWxsKSwgewogICAgICBvbih0LCBpKSB7CiAgICAgICAgKGVbdF0gfHwgKGVbdF0gPSBbXSkpLnB1c2goaSk7CiAgICAgIH0sCiAgICAgIG9mZih0LCBpKSB7CiAgICAgICAgZVt0XSAmJiBlW3RdLnNwbGljZShlW3RdLmluZGV4T2YoaSkgPj4+IDAsIDEpOwogICAgICB9LAogICAgICBlbWl0KHQsIGkpIHsKICAgICAgICAoZVt0XSB8fCBbXSkuc2xpY2UoKS5tYXAoKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgIGUoaSk7CiAgICAgICAgfSkpLCAoZVsiKiJdIHx8IFtdKS5zbGljZSgpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgZSh0LCBpKTsKICAgICAgICB9KSk7CiAgICAgIH0KICAgIH07CiAgfQogIGZ1bmN0aW9uIGRlbGF5KGUpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCkgewogICAgICBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICB0KCk7CiAgICAgIH0pLCBlKTsKICAgIH0pKTsKICB9CiAgZnVuY3Rpb24gSXMoZSwgdCkgewogICAgcmV0dXJuIHQgfHwgKHQgPSBsb2NhdGlvbi5ocmVmLnJlcGxhY2UoLz1odHRwcz86LisvZywgIj1taXlpbmciKSksICEhZSAmJiAoZSBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gZSh0KSA6ICJzdHJpbmciID09IHR5cGVvZiBlID8gZS5zcGxpdCgifCIpLnNvbWUoKGZ1bmN0aW9uKGUpIHsKICAgICAgcmV0dXJuIHQuaW5jbHVkZXMoZSk7CiAgICB9KSkgOiBlLnRlc3QodCkpOwogIH0KICBmdW5jdGlvbiBJc05vdChlLCB0KSB7CiAgICByZXR1cm4gIUlzKGUsIHQpOwogIH0KICBmdW5jdGlvbiBnZXRHbG9iYWwoZSkgewogICAgcmV0dXJuIChoYXNVbnNhZmVXaW5kb3cgPyB1bnNhZmVXaW5kb3cgOiB3aW5kb3cpW2VdOwogIH0KICBmdW5jdGlvbiBzZXRHbG9iYWwoZSwgdCkgewogICAgd2luZG93W2VdID0gdCwgaGFzVW5zYWZlV2luZG93ICYmICh1bnNhZmVXaW5kb3dbZV0gPSB0KTsKICB9CiAgZnVuY3Rpb24gcGFyc2VTdG9yZURhdGEoZSkgewogICAgbGV0IHQgPSAxIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IG51bGw7CiAgICBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGUpIHRyeSB7CiAgICAgIGUgPSBKU09OLnBhcnNlKGUpOwogICAgfSBjYXRjaCAoZSkge30KICAgIHJldHVybiBudWxsID09PSBlID8gdCA6IGU7CiAgfQogIGZ1bmN0aW9uIGdldENkblVybChlKSB7CiAgICByZXR1cm4gImh0dHBzOi8vY2RuLmJvb3RjZG4ubmV0L2FqYXgvbGlicyIgKyBlOwogIH0KICBhc3luYyBmdW5jdGlvbiBmZXRjaENkblVybChlLCB0KSB7CiAgICBsZXQgaTsKICAgIGNvbnN0IG4gPSAvXlwvXHcvLnRlc3QoZSk7CiAgICBpZiAoZSA9IG4gPyBnZXRDZG5VcmwoZSkgOiBlLCAhdCAmJiBuKSB7CiAgICAgIGNvbnN0IHQgPSBlLm1hdGNoKC8uKlwvKFteXC9dKylcLyhbXlwvXSspJC8pOwogICAgICBpID0gdFsyXTsKICAgIH0gZWxzZSBpID0gdCAmJiB0Lm5hbWUgfHwgZTsKICAgIGNvbnN0IGEgPSBHbG9iYWxTdG9yZS5nZXQoaSk7CiAgICBsZXQgbzsKICAgIHJldHVybiBvID0gYSAmJiAiMjAuMjAuZmluYWwiID09PSBhLnZlcnNpb24gPyBhLmRhdGEgOiBhd2FpdCB3aW5kb3cuZmV0Y2goZSkudGhlbigoZnVuY3Rpb24oZSkgewogICAgICByZXR1cm4gZS50ZXh0KCk7CiAgICB9KSkudGhlbigoZnVuY3Rpb24oZSkgewogICAgICByZXR1cm4gR2xvYmFsU3RvcmUuc2V0KGksIHsKICAgICAgICBkYXRhOiBlLAogICAgICAgIHZlcnNpb246IFZFUlNJT04KICAgICAgfSksIGU7CiAgICB9KSksIG87CiAgfQogIGFzeW5jIGZ1bmN0aW9uIGFkZEpzKHVybCwgb3B0cykgewogICAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoQ2RuVXJsKHVybCwgb3B0cyk7CiAgICByZXR1cm4gZXZhbChkYXRhKTsKICB9CiAgYXN5bmMgZnVuY3Rpb24gYWRkQ3NzVXJsKGUpIHsKICAgIGFkZENzcyhhd2FpdCBmZXRjaENkblVybChlKSk7CiAgfQogIGZ1bmN0aW9uIGFkZENzcyhlKSB7CiAgICBsZXQgdDsKICAgIHJldHVybiAvXihodHRwfFwvKS8udGVzdChlKSA/IGFkZENzc1VybChlKSA6IChlID0gZS5yZXBsYWNlKC9cbitccyovZywgIiAiKSwgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIiksIAogICAgdC5zdHlsZVNoZWV0ID8gdC5zdHlsZVNoZWV0LmNzc1RleHQgPSBlIDogdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlKSksIAogICAgdC50eXBlID0gInRleHQvY3NzIiwgdm9pZCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKHQpKTsKICB9CiAgZnVuY3Rpb24gcHJlZml4Q3NzKGUsIHQpIHsKICAgIGxldCBpLCBuLCBhLCBvLCByID0gdC5sZW5ndGg7CiAgICB0ICs9ICIgIiwgZSA9IChlID0gKGUgPSBlLnJlcGxhY2UoL1wvXCooPzooPyFcKlwvKVtcc1xTXSkqXCpcL3xbXHJcblx0XSsvZywgIiIpKS5yZXBsYWNlKC99KFxzKilAL2csICJ9QCIpKS5yZXBsYWNlKC99KFxzKil9L2csICJ9fSIpOwogICAgZm9yIChsZXQgcyA9IDA7IHMgPCBlLmxlbmd0aCAtIDI7IHMrKykgaSA9IGVbc10sIG4gPSBlW3MgKyAxXSwgIkAiID09PSBpICYmIChhID0gITApLCAKICAgIGEgfHwgInsiICE9PSBpIHx8IChvID0gITApLCBvICYmICJ9IiA9PT0gaSAmJiAobyA9ICExKSwgIW8gJiYgIkAiICE9PSBuICYmICJ9IiAhPT0gbiAmJiAoIn0iID09PSBpIHx8ICIsIiA9PT0gaSB8fCAoInsiID09PSBpIHx8ICI7IiA9PT0gaSkgJiYgYSkgJiYgKGUgPSBlLnNsaWNlKDAsIHMgKyAxKSArIHQgKyBlLnNsaWNlKHMgKyAxKSwgCiAgICBzICs9IHIsIGEgPSAhMSk7CiAgICByZXR1cm4gMCAhPT0gZS5pbmRleE9mKHQpICYmIDAgIT09IGUuaW5kZXhPZigiQCIpICYmIChlID0gdCArIGUpLCBlOwogIH0KICBmdW5jdGlvbiBlbnN1cmVBcnJheShlKSB7CiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShlKSA/IGUgOiBlLnRyaW0oKS5zcGxpdCgvW1xuXHNdKlxuK1tcblxzXSovKTsKICB9CiAgZnVuY3Rpb24gdG9nZ2xlVmlld3BvcnQoKSB7CiAgICBsZXQgZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1ldGFbbmFtZT12aWV3cG9ydF0iKTsKICAgIGUgfHwgKGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJtZXRhIiksIGUubmFtZSA9ICJ2aWV3cG9ydCIsIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQoZSkpOwogICAgY29uc3QgdCA9IGFsbG93U2NhbGUgPyAid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWF4aW11bS1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9bm8iIDogIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9eWVzIjsKICAgIGUuc2V0QXR0cmlidXRlKCJjb250ZW50IiwgdCksIGFsbG93U2NhbGUgPSAhYWxsb3dTY2FsZTsKICB9CiAgZnVuY3Rpb24gcGFyc2VVcmwoZSwgdCkgewogICAgbGV0IGksIG4sIGEgPSBlLnRyaW0oKS5zcGxpdCgvW1xzQF0rLyk7CiAgICBjb25zdCBvID0gYS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgcmV0dXJuIC9odHRwcz86XC9cLy8udGVzdChlKTsKICAgIH0pKTsKICAgIGEgPSBhLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICByZXR1cm4gIS9odHRwcz86XC9cLy8udGVzdChlKTsKICAgIH0pKSwgby5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgIC9cL1wvbVwufFwvbVwvfFwvXC9tc291Ly50ZXN0KGUpID8gaSA9IGUgOiBuID0gZTsKICAgIH0pKTsKICAgIGxldCByID0gKGlzTW9iaWxlID8gaSA6IG4pIHx8IG9bMF07CiAgICB0ICYmIChyID0gdG9TZWFyY2hVcmwociwgdCkpOwogICAgY29uc3QgcyA9IDAgPCBhLmxlbmd0aCA/IGEuam9pbigiICIpIDogci5tYXRjaCgvXC9cLyguK1wuKT8oW15cL10rKVwuXHcrXC8vKVsyXS5yZXBsYWNlKC9eKFx3KS8sIChmdW5jdGlvbihlKSB7CiAgICAgIHJldHVybiBlLnRvVXBwZXJDYXNlKCk7CiAgICB9KSk7CiAgICByZXR1cm4gewogICAgICB1cmw6IHIsCiAgICAgIG5hbWU6IHMKICAgIH07CiAgfQogIGZ1bmN0aW9uIGdldENkbkltYWdlVXJsKGUpIHsKICAgIHJldHVybiAiaHR0cHM6Ly9wLnBzdGF0cC5jb20vb3JpZ2luLyIgKyBlOwogIH0KICBmdW5jdGlvbiBjbG9zZU1ZKCkgewogICAgbGV0IGUgPSAhKDAgPCBhcmd1bWVudHMubGVuZ3RoICYmIHZvaWQgMCAhPT0gYXJndW1lbnRzWzBdKSB8fCBhcmd1bWVudHNbMF07CiAgICAkKCIuTVkiKS5oYXNDbGFzcygiaXMtYWN0aXZlIikgJiYgKGUgJiYgcGF1c2VNWVBsYXkoKSwgJCgiLk1ZIikuYXR0cigiZGF0YS1zY3JvbGwiLCBudWxsKSwgCiAgICAkKCIuTVkiKS5yZW1vdmVDbGFzcygiaXMtYWN0aXZlIikpOwogIH0KICBmdW5jdGlvbiB1cGRhdGVQbGF5ZXJCb3goKSB7CiAgICBwbGF5ZXJCb3ggPSBpc01vYmlsZSA/IG51bGwgOiBnZXRWaXBQbGF5ZXIoKSwgcGxheWVyQm94ID8gKCQocGxheWVyQm94KS5hZGRDbGFzcygiTVktcGxheWVyIiksIAogICAgJCgiaHRtbCIpLmFkZENsYXNzKCJNWS1waXAiKSwgJChwbGF5ZXJCb3gpLm9uKCJjbGljayIsIChmdW5jdGlvbigpIHsKICAgICAgY2xvc2VNWSghMSk7CiAgICB9KSksIHBsYXllckJveC5zY3JvbGxJbnRvVmlldyh7CiAgICAgIGJlaGF2aW9yOiAic21vb3RoIiwKICAgICAgYmxvY2s6ICJzdGFydCIKICAgIH0pKSA6IHBsYXllckJveCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5NWS1wbGF5ZXIiKTsKICB9CiAgZnVuY3Rpb24gcGF1c2VNWVBsYXkoKSB7CiAgICBjb25zdCBlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLk1ZIC5NWS1wbGF5ZXIgdmlkZW8iKTsKICAgIGUgJiYgIWUucGF1c2VkICYmIGUucGF1c2UoKTsKICB9CiAgZnVuY3Rpb24gcGF1c2VQbGF5KCkgewogICAgdHJ5IHsKICAgICAgJCgiYm9keSB2aWRlbywgYm9keSBhdWRpbyIpLmVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICBlLnBhdXNlZCB8fCBlLnBhdXNlKCk7CiAgICAgIH0pKTsKICAgICAgY29uc3QgZSA9IERhdGUubm93KCksIHQgPSBzZXRJbnRlcnZhbCgoZnVuY3Rpb24oKSB7CiAgICAgICAgY29uc3QgaSA9IERhdGUubm93KCkgLSBlLCBuID0gZ2V0R2xvYmFsKCJwbGF5ZXJPYmplY3QiKSB8fCBnZXRHbG9iYWwoIk1HVFZQbGF5ZXIiKSAmJiBnZXRHbG9iYWwoIk1HVFZQbGF5ZXIiKS5wbGF5ZXIgfHwgZ2V0R2xvYmFsKCJ2aWRlb1BsYXllciIpIHx8IGdldEdsb2JhbCgiUExBWUVSIik7CiAgICAgICAgbiAmJiBuLnBhdXNlIGluc3RhbmNlb2YgRnVuY3Rpb24gJiYgbi5wYXVzZSgpLCAoIW4gfHwgaSA+IDllNCkgJiYgY2xlYXJJbnRlcnZhbCh0KTsKICAgICAgfSksIDYwKTsKICAgIH0gY2F0Y2ggKGUpIHt9CiAgfQogIGFzeW5jIGZ1bmN0aW9uIHBsYXlWaWRlbyhlKSB7CiAgICBpZiAocGF1c2VQbGF5KCksICQoIi5NWS1wbGF5LWxpc3QgLk1ZLWJ1dHRvbiIpLnJlbW92ZUNsYXNzKCJpcy1hY3RpdmUiKSwgU2V0U3RhdGUoewogICAgICBjdXJyZW50VmlkZW9Vcmw6IGUKICAgIH0pLCBwbGF5aW5nVmlkZW9VcmwgPSBlLCAkKCIuTVktcGxheWVyIikucmVtb3ZlQ2xhc3MoImlzLWxvYWRlZCIpLCAkKCIuTVktdmlkZW8tdXJscyIpLnJlbW92ZUNsYXNzKCJpcy1wbGF5LWZhaWwiKSwgCiAgICAvPWh0dHBzPzouKy8udGVzdChlKSkgewogICAgICBjb25zdCB0ID0gJzxkaXYgY2xhc3M9Ik1ZLXBsYXllci1iZyIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHVybCgnICsgZ2V0Q2RuSW1hZ2VVcmwoUExDc1twYXJzZUludChEYXRlLm5vdygpIC8gMWUzKSAlIFBMQ3MubGVuZ3RoXSkgKyAnKTsiPjxkaXYgY2xhc3M9Ik1ZLXBsYXllci1tYXNrIj48L2Rpdj48ZGl2IGNsYXNzPSJNWS1zaWduIj4ob8uY4pehy5hvKTxzcGFuIGNsYXNzPSJNWS12ZXJzaW9uIj52IDIwLjIwLmZpbmFsPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Ik1ZLXNsb2dhbiI+PHN0cm9uZz7op4U8L3N0cm9uZz48ZGl2IGNsYXNzPSJNWS1sb2FkZXIiPicgKyBJY29uLmxvYWRlciArICc8L2Rpdj48c3Ryb25nPuW9sTwvc3Ryb25nPjwvZGl2PjxkaXYgY2xhc3M9Ik1ZLWVycm9yLXRleHQiPuino+aekOWksei0pe+8jOabtOaNouino+aekOaSreaUvu+8jOaIluWcqOWFtuWug+ato+eJiOe9keermeS4iuino+aekDwvZGl2PjwvZGl2Pic7CiAgICAgIHVwZGF0ZVBsYXllckJveCgpLCAkKHBsYXllckJveCkuaHRtbCgnPGRpdiBjbGFzcz0iTVktcGxheWVyLWJveCBpcy1pZnJhbWUiPicgKyB0ICsgJzxpZnJhbWUgaWQ9Ik1ZLXBsYXllci1pZnJhbWUiIHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBib3JkZXI6IG5vbmU7IG91dGxpbmU6IG5vbmU7IiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBhbGxvd3RyYW5zcGFyZW5jeT0idHJ1ZSIgZnJhbWVib3JkZXI9IjAiIHNjcm9sbGluZz0ibm8iIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctZm9ybXMiIGFsbG93ZnVsbHNjcmVlbj0iYWxsb3dmdWxsc2NyZWVuIiBtb3phbGxvd2Z1bGxzY3JlZW49Im1vemFsbG93ZnVsbHNjcmVlbiIgbXNhbGxvd2Z1bGxzY3JlZW49Im1zYWxsb3dmdWxsc2NyZWVuIiBvYWxsb3dmdWxsc2NyZWVuPSJvYWxsb3dmdWxsc2NyZWVuIiB3ZWJraXRhbGxvd2Z1bGxzY3JlZW49IndlYmtpdGFsbG93ZnVsbHNjcmVlbiIgc3JjPSInICsgZSArICciPjwvaWZyYW1lPjwvZGl2PicpLCAKICAgICAgc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgJChwbGF5ZXJCb3gpLmFkZENsYXNzKCJpcy1sb2FkZWQiKTsKICAgICAgfSksIDJlMyksIHBsYXllciAmJiBwbGF5ZXIuZGVzdHJveSAmJiBwbGF5ZXIuZGVzdHJveSgpLCBwbGF5ZXIgPSBudWxsOwogICAgfSBlbHNlIHsKICAgICAgdXBkYXRlUGxheWVyQm94KCksIGF3YWl0IHBsYXlCZWZvcmUoKTsKICAgICAgbGV0IHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuTVktcGxheWVyIHZpZGVvIik7CiAgICAgICghdCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuTVktcGxheWVyID4gLk1ZLXBsYXllci1ib3giKSkgJiYgKCQocGxheWVyQm94KS5odG1sKCc8ZGl2IGNsYXNzPSJNWS1wbGF5ZXItYm94IGlzLXZpZGVvIj48dmlkZW8gY29udHJvbHMgYXV0b3BsYXkgcHJlbG9hZD0iYXV0byIgc3JjPSInICsgZSArICciIHBvc3Rlcj0iJyArIFBQQyArICciPjwvdmlkZW8+PC9kaXY+JyksIAogICAgICB0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLk1ZLXBsYXllciB2aWRlbyIpKTsKICAgICAgY29uc3QgaSA9IGdldEdsb2JhbCgiUGx5ciIpLCBuID0gZ2V0R2xvYmFsKCJIbHMiKSB8fCBnZXRHbG9iYWwoImhscyIpOwogICAgICBpZiAoIXBsYXllciAmJiBpICYmIChwbGF5ZXIgPSBuZXcgaSh0LCB7CiAgICAgICAgaW52ZXJ0VGltZTogITEsCiAgICAgICAgYXV0b3BsYXk6ICEwLAogICAgICAgIHZvbHVtZTogLjc1LAogICAgICAgIHNwZWVkOiB7CiAgICAgICAgICBzZWxlY3RlZDogMSwKICAgICAgICAgIG9wdGlvbnM6IFsgLjUsIC43NSwgMSwgMS4yNSwgMS41LCAyIF0KICAgICAgICB9LAogICAgICAgIHN0b3JhZ2U6IHsKICAgICAgICAgIGVuYWJsZWQ6ICEwLAogICAgICAgICAga2V5OiAi6KeF5b2xLnBseXIiCiAgICAgICAgfQogICAgICB9KSwgcGxheWVyLm9uKCJlbnRlcmZ1bGxzY3JlZW4iLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgJCgiaHRtbCIpLmFkZENsYXNzKCJNWS1mdWxsc2NyZWVuIik7CiAgICAgIH0pKSwgcGxheWVyLm9uKCJleGl0ZnVsbHNjcmVlIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICQoImh0bWwiKS5yZW1vdmVDbGFzcygiTVktZnVsbHNjcmVlbiIpOwogICAgICB9KSksIHBsYXllci5vbigiZXJyb3IiLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgJCgiLk1ZLXZpZGVvLXVybHMiKS5hZGRDbGFzcygiaXMtcGxheS1mYWlsIiksIHBsYXlGYWlsZWRVcmwgPSBwbGF5aW5nVmlkZW9Vcmw7CiAgICAgIH0pKSksIC9cLm0zdTgvLnRlc3QoZSkgJiYgbiAmJiBuLmlzU3VwcG9ydGVkKCkpIHsKICAgICAgICBjb25zdCBpID0gbmV3IG47CiAgICAgICAgaS5sb2FkU291cmNlKGUpLCBpLmF0dGFjaE1lZGlhKHQpLCBpLm9uKG4uRXZlbnRzLk1BTklGRVNUX1BBUlNFRCwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgdC5wbGF5KCk7CiAgICAgICAgfSkpOwogICAgICB9IGVsc2UgdC5zcmMgPSBlLCB0LmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlZG1ldGFkYXRhIiwgKGZ1bmN0aW9uKCkgewogICAgICAgIHQucGxheSgpOwogICAgICB9KSk7CiAgICB9CiAgfQogIGZ1bmN0aW9uIGdldFRhcmdldFVybCgpIHsKICAgIHJldHVybiBkZWNvZGVVUkkobG9jYXRpb24uaHJlZi5yZXBsYWNlKC8mP1x3Kz1odHRwW14mXSsvLCAiIikucmVwbGFjZSgvLisoaHR0cHM/OikvLCAiJDEiKSk7CiAgfQogIGZ1bmN0aW9uIHBsYXlWaXBVcmwoZSwgdCkgewogICAgaWYgKCFlKSByZXR1cm47CiAgICBsZXQgaSA9IGdldFRhcmdldFVybCgpOwogICAgdCAmJiB0LnZpcCAmJiB0LnZpcC5maXhVcmwgJiYgKGkgPSB0LnZpcC5maXhVcmwgaW5zdGFuY2VvZiBGdW5jdGlvbiA/IHQudmlwLmZpeFVybChpKSA6IGZpeFZpcFVybChpKSk7CiAgICBjb25zdCBuID0gZSArIChlLmluY2x1ZGVzKCJibG9iOiIpID8gIiIgOiBpKTsKICAgIHNldHRpbmdzLnBpcCAmJiAhL2h0dHA6Ly50ZXN0KGUpID8gcGxheVZpZGVvKG4pIDogKHBhdXNlUGxheSgpLCBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgd2luZG93Lm9wZW4obiwgIl9ibGFuayIpOwogICAgfSksIDEwMCkpOwogIH0KICBmdW5jdGlvbiBnZXRWaWRlb1R5cGUoZSkgewogICAgcmV0dXJuIGUuc3RhcnRzV2l0aCgiYmxvYjoiKSA/ICJibG9iIiA6IGUubWF0Y2godmlkZW9FeHRSZWdleClbMV07CiAgfQogIGZ1bmN0aW9uIGdldFZpZGVvU2hvcnROYW1lKGUsIHQsIGkpIHsKICAgIGNvbnN0IG4gPSBnZXRWaWRlb1R5cGUoZSk7CiAgICBsZXQgYSA9IG51bXNbdF07CiAgICBpZiAoIWkpIHsKICAgICAgY29uc3QgdCA9IGUubWF0Y2goL1wvXC8uKj8oW14uXSspXC5bXi5dK1wvLyksIGkgPSBlLnJlcGxhY2UoL1w/LisvLCAiIikuc3BsaXQoL1tcLy1dLykucG9wKCkuc3BsaXQoIi4iKTsKICAgICAgYSA9ICh0ID8gdFsxXSArICIvIiA6ICIiKSArIGlbMF0uc2xpY2UoMCwgOCk7CiAgICB9CiAgICByZXR1cm4gYSArIChuID8gJzxzcGFuIGNsYXNzPSJNWS1leHQiPicgKyBuICsgIjwvc3Bhbj4iIDogIiIpOwogIH0KICBhc3luYyBmdW5jdGlvbiBwbGF5QmVmb3JlKCkgewogICAgaXNMb2FkUGxheWVyIHx8IChhd2FpdCBhZGRKcygiL2hscy5qcy8wLjEzLjIvaGxzLm1pbi5qcyIpLCBhZGRDc3MoIi9wbHlyLzMuNi4yL3BseXIuY3NzIiksIAogICAgYXdhaXQgYWRkSnMoIi9wbHlyLzMuNi4yL3BseXIubWluLmpzIiksIGF3YWl0IGFkZEpzKCIvZHBsYXllci8xLjI1LjEvRFBsYXllci5taW4uanMiKSwgCiAgICBpc0xvYWRQbGF5ZXIgPSAhMCk7CiAgfQogIGZ1bmN0aW9uIGlTbmlmZigpIHt9CiAgZnVuY3Rpb24gaGlrZXJTbmlmZigpIHsKICAgIGxldCByZXNvdXJjZSA9IGV2YWwod2luZG93LmZ5X2JyaWRnZV9hcHAuZ2V0TmV0d29ya1JlY29yZHMoKSk7CiAgICByZXNvdXJjZSA9IHJlc291cmNlLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICByZXR1cm4gZS50aW1lc3RhbXAgPiBzbmlmZlRpbWVzdGFtcCAmJiBpc1ZhbGlkVmlkZW9VcmwoZS51cmwpOwogICAgfSkpLCBpc1NuaWZmaW5nICYmIChyZXNvdXJjZS5mb3JFYWNoKChmdW5jdGlvbihlKSB7CiAgICAgIGdldFNuaWZmVmlkZW9VcmwoZS51cmwpOwogICAgfSkpLCBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgaGlrZXJTbmlmZigpOwogICAgfSksIDIwMCkpOwogIH0KICBmdW5jdGlvbiBtaXhpYVNuaWZmKCkgewogICAgbGV0IGUgPSBbXSwgdCA9IHdpbmRvdy5teF9icm93c2VyX29iai5nZXR3ZWJsb2dzKCJodHRwIik7CiAgICAiZXJyb3IiICE9PSB0ICYmIChlID0gdC50cmltKCkuc3BsaXQoL1xzKlxuW1xuXHNdKi8pLCBlID0gZS5maWx0ZXIoKGZ1bmN0aW9uKGUpIHsKICAgICAgcmV0dXJuIGlzVmFsaWRWaWRlb1VybChlKTsKICAgIH0pKSksIGlzU25pZmZpbmcgJiYgKGUuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICBnZXRTbmlmZlZpZGVvVXJsKGUpOwogICAgfSkpLCBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgbWl4aWFTbmlmZigpOwogICAgfSksIDIwMCkpOwogIH0KICBmdW5jdGlvbiBhZGRJZnJhbWUoZSkgewogICAgbGV0IHQgPSAxIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6ICIuTVktaWZyYW1lcyI7CiAgICBjb25zdCBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CiAgICByZXR1cm4gaS5mcmFtZWJvcmRlciA9ICIwIiwgaS5zY3JvbGxpbmcgPSAibm8iLCBpLnNlYW1sZXNzID0gITAsIGkuc2FuZGJveCA9ICJhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIGFsbG93LWZvcm1zIiwgCiAgICBpLnNyYyA9IGUsICQodCkuYXBwZW5kKGkpLCBpOwogIH0KICBmdW5jdGlvbiByZW1vdmVJZnJhbWUoZSkgewogICAgaWYgKGUpIHRyeSB7CiAgICAgIGUuc3JjID0gImFib3V0OmJsYW5rIiwgJChlKS5yZW1vdmUoKTsKICAgIH0gY2F0Y2ggKGUpIHt9CiAgfQogIGZ1bmN0aW9uIGVtcHR5SWZyYW1lcygpIHsKICAgICQoIi5NWS1pZnJhbWVzID4gaWZyYW1lIikuZWFjaCgoZnVuY3Rpb24oZSkgewogICAgICByZW1vdmVJZnJhbWUoZSk7CiAgICB9KSksICQoIi5NWS1pZnJhbWVzIikuZW1wdHkoKTsKICB9CiAgZnVuY3Rpb24gdXBkYXRlU2V0dGluZ3MoZSwgdCkgewogICAgc2V0dGluZ3NbZV0gPSB0LCBTdG9yZS5zZXQoInNldHRpbmdzIiwgc2V0dGluZ3MpOwogIH0KICBmdW5jdGlvbiBzbmlmZlN0YXJ0KCkgewogICAgcGF1c2VQbGF5KCksIHNuaWZmVGltZXN0YW1wID0gRGF0ZS5ub3coKSwgaXNTbmlmZmluZyA9ICEwLCBpc0lmcmFtZVBsYXlDaGVjayA9ICExLCAKICAgIHNuaWZmSW5kZXggPSAtMSwgaWZyYW1lcyA9IHt9LCAkKCIuTVktdmlwLXNuaWZmIikucmVtb3ZlQ2xhc3MoImlzLWZhaWwgaXMtZG9uZSIpLmFkZENsYXNzKCJpcy1zbmlmZmluZyIpOwogICAgbGV0IGUgPSAwOwogICAgY29uc3QgdCA9IHNuaWZmVmlwVXJscy5sZW5ndGgsIGkgPSBzZXRJbnRlcnZhbCgoZnVuY3Rpb24oKSB7CiAgICAgIGNvbnN0IG4gPSAkKCIuTVktaWZyYW1lcyA+IGlmcmFtZSIpLmxlbmd0aCwgYSA9ICQoIi5NWS12aXAtbGlzdCAuTVktYnV0dG9uLmlzLXN1Y2Nlc3MiKS5sZW5ndGgsIG8gPSB2aWRlb1VybHMubGVuZ3RoLCByID0gKG8gKyBhKSAvIDE3LCBzID0gRGF0ZS5ub3coKSAtIHNuaWZmVGltZXN0YW1wOwogICAgICAoMCA9PT0gbiAmJiBzbmlmZkluZGV4ID49IHQgLSAxIHx8IDVlNCA8IHMgJiYgKDEwIDw9IG8gfHwgOCA8PSBvICYmIDUgPD0gYSB8fCAxNSA8PSBhKSB8fCA4ZTQgPCBzICYmIHIgPj0gLjk5KSAmJiAoc25pZmZEb25lKCksIAogICAgICAwID09PSBvICYmIDAgPT09IGEgJiYgc25pZmZGYWlsKCkpLCBpc1NuaWZmaW5nID8gKGUgPSBfTWF0aG1pbihfTWF0aG1heChfTWF0aG1pbihfTWF0aG1heChzbmlmZkluZGV4ICsgMSwgMSkgLyAodCArIDIgKiBuKSwgMSksIHIsIGUgKyAuMDAyNSksIC45OSksIAogICAgICAkKCIuTVktYmctcHJvZ3Jlc3MiKS5jc3MoewogICAgICAgIHdpZHRoOiAxMDAgKiBlICsgIiUiCiAgICAgIH0pKSA6IGNsZWFySW50ZXJ2YWwoaSk7CiAgICB9KSwgMjUwKTsKICB9CiAgZnVuY3Rpb24gc25pZmZEb25lKCkgewogICAgJCgiLk1ZLXZpcC1zbmlmZiIpLnJlbW92ZUNsYXNzKCJpcy1mYWlsIGlzLXNuaWZmaW5nIikuYWRkQ2xhc3MoImlzLWRvbmUiKSwgaXNTbmlmZmluZyA9ICExLCAKICAgIGVtcHR5SWZyYW1lcygpLCBpZnJhbWVzID0ge30sICQoIi5NWS12aXAtc25pZmYiKS5hZGRDbGFzcygiaXMtZG9uZSIpLCAkKCIuTVktYmctcHJvZ3Jlc3MiKS5jc3MoewogICAgICB3aWR0aDogZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLk1ZLXZpcC1saXN0Iikuc2Nyb2xsV2lkdGggKyAicHgiCiAgICB9KTsKICB9CiAgZnVuY3Rpb24gc25pZmZGYWlsKCkgewogICAgc25pZmZEb25lKCksICQoIi5NWS12aXAtc25pZmYiKS5hZGRDbGFzcygiaXMtZmFpbCIpLCAkKCIuTVktcGxheWVyLWJnIikuYWRkQ2xhc3MoImlzLWZhaWwiKTsKICB9CiAgZnVuY3Rpb24gc25pZmYoKSB7CiAgICBpZiAoaXNTbmlmZmluZyAmJiBzbmlmZkRvbmUoKSwgc25pZmZTdGFydCgpLCAhaXNBdXRvU25pZmZpbmcpIGlmIChpc0F1dG9TbmlmZmluZyA9ICEwLCAKICAgIGlzQWxsb3dJZnJhbWVTbmlmZikgaVNuaWZmKCk7IGVsc2UgaWYgKGlzQWxsb3dIaWtlclNuaWZmKSBoaWtlclNuaWZmKCk7IGVsc2UgewogICAgICBpZiAoIWlzQWxsb3dNaXhpYVNuaWZmKSByZXR1cm4gdm9pZCBzbmlmZkRvbmUoKTsKICAgICAgbWl4aWFTbmlmZigpOwogICAgfQogICAgc25pZmZHbygpOwogIH0KICBmdW5jdGlvbiBzbmlmZkdvKCkgewogICAgaWYgKCFpc1NuaWZmaW5nKSByZXR1cm47CiAgICBjb25zdCBlID0gc25pZmZWaXBVcmxzWysrc25pZmZJbmRleF07CiAgICBpZiAoIWUpIHsKICAgICAgY29uc3QgZSA9IHNldEludGVydmFsKChmdW5jdGlvbigpIHsKICAgICAgICAwID09PSAkKCIuTVktaWZyYW1lcyA+IGlmcmFtZSIpLmxlbmd0aCAmJiAoY2xlYXJJbnRlcnZhbChlKSwgc25pZmZEb25lKCksIDAgPT09IHZpZGVvVXJscy5sZW5ndGggJiYgMCA9PT0gJCgiLk1ZLXZpcC1saXN0IC5NWS1idXR0b24uaXMtc3VjY2Vzcy5pcy1hY3RpdmUiKS5sZW5ndGggJiYgc25pZmZGYWlsKCkpOwogICAgICB9KSwgMWUzKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgbGV0IHQgPSAkKCIuTVktaWZyYW1lcyA+IGlmcmFtZSIpLmxlbmd0aDsKICAgIGNvbnN0IGkgPSBhZGRJZnJhbWUoZS51cmwgKyBsb2NhdGlvbi5ocmVmKTsKICAgIGlmcmFtZXNbZS51cmxdID0gaSwgaS5tdXRlICYmIGkubXV0ZSgpLCBpLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgICBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICByZW1vdmVJZnJhbWUoaSwgIlRJTUVPVVQiKTsKICAgICAgfSksIDEyZTMpOwogICAgfSwgc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgIHJlbW92ZUlmcmFtZShpLCAiTUFYIFRJTUVPVVQiKTsKICAgIH0pLCAxNWUzKSwgZnVuY3Rpb24gZSgpIHsKICAgICAgaWYgKHQgPSAkKCIuTVktaWZyYW1lcyA+IGlmcmFtZSIpLmxlbmd0aCwgdCA+IE1BWF9TTklGRl9MSU1JVCAtIDEpIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAgIGUoKTsKICAgICAgfSksIDEwMCk7IGVsc2UgewogICAgICAgIGNvbnN0IGUgPSBwbGF5ZXIgJiYgcGxheWVyLnJlYWR5ICYmIDAgPCBwbGF5ZXIuZHVyYXRpb24sIGkgPSBfTWF0aG1pbih2aWRlb1VybHMubGVuZ3RoICogKGUgPyAyMDAgOiAxNTApICsgMTAwICogX01hdGhtYXgoTUFYX1NOSUZGX0xJTUlUIC0gdCwgMCkgKyBfTWF0aG1pbig1MCAqIHNuaWZmSW5kZXgsIDFlMyksIDNlMyk7CiAgICAgICAgc2V0VGltZW91dCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICBzbmlmZkdvKCk7CiAgICAgICAgfSksIGkpOwogICAgICB9CiAgICB9KCk7CiAgfQogIGZ1bmN0aW9uIGFjdGl2ZU1peWluZyhlKSB7CiAgICBmdW5jdGlvbiB0KGUpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICB4OiBlLnRvdWNoZXMgPyBlLnRvdWNoZXNbMF0ucGFnZVggOiBlLmNsaWVudFgsCiAgICAgICAgeTogZS50b3VjaGVzID8gZS50b3VjaGVzWzBdLnBhZ2VZIDogZS5jbGllbnRZCiAgICAgIH07CiAgICB9CiAgICBmdW5jdGlvbiBpKGUpIHsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpLCBlLnN0b3BQcm9wYWdhdGlvbigpLCBoID0gITAsIGIgPSAhMTsKICAgICAgY29uc3Qge3g6IGksIHk6IG59ID0gdChlKTsKICAgICAgbSA9IGkgLSBmLm9mZnNldExlZnQsIHUgPSBuIC0gZi5vZmZzZXRUb3AsIGcgPSBEYXRlLm5vdygpOwogICAgfQogICAgZnVuY3Rpb24gbihlKSB7CiAgICAgIGlmICghKDIwMCA+IERhdGUubm93KCkgLSBnKSAmJiAoYiA9ICEwLCBoKSkgewogICAgICAgICQoIi5NWS1mYWIiKS5hZGRDbGFzcygiaXMtbW92aW5nIik7CiAgICAgICAgY29uc3Qge3g6IGksIHk6IG59ID0gdChlKSwgYSA9IF9NYXRobWluKF9NYXRobWF4KDAsIGkgLSBtKSwgd2luZG93LmlubmVyV2lkdGggLSBmLm9mZnNldFdpZHRoKSwgbyA9IF9NYXRobWluKF9NYXRobWF4KDAsIG4gLSB1KSwgd2luZG93LmlubmVySGVpZ2h0IC0gZi5vZmZzZXRIZWlnaHQpOwogICAgICAgIGYuc3R5bGUubGVmdCA9IGEgKyAicHgiLCBmLnN0eWxlLnRvcCA9IG8gKyAicHgiLCBTdG9yZS5zZXQoImZhYkxlZnQiLCBhKSwgU3RvcmUuc2V0KCJmYWJUb3AiLCBvKTsKICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gYSgpIHsKICAgICAgaCA9ICExLCAkKCIuTVktZmFiIikucmVtb3ZlQ2xhc3MoImlzLW1vdmluZyIpLCBiIHx8ICgkKCIuTVkiKS5hZGRDbGFzcygiaXMtYWN0aXZlIiksIAogICAgICBpc0FsbG93U25pZmYgJiYgISQoIi5NWS12aXAtc25pZmYiKS5oYXNDbGFzcygiaXMtZG9uZSIpICYmIHNldHRpbmdzLmF1dG9KaWV4aSAmJiBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICBzbmlmZigpOwogICAgICB9KSwgMWUzKSk7CiAgICB9CiAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigibWl5aW5nIikpIHJldHVybjsKICAgIGNvbnN0IG8gPSB3aW5kb3cuaW5uZXJIZWlnaHQsIHIgPSB3aW5kb3cuaW5uZXJXaWR0aDsKICAgIGxldCBzID0gMCwgbCA9IDA7CiAgICByID4gbyA/IChsID0gcGFyc2VJbnQoMiAqIG8gLyAzKSAtIDYsIHMgPSBwYXJzZUludCgxNiAqIGwgLyA5KSkgOiAocyA9IHIsIGwgPSBwYXJzZUludCg5ICogcyAvIDE2KSk7CiAgICBsZXQgYyA9IHdpbmRvdy5pbm5lcldpZHRoIC0gKGlzTW9iaWxlID8gNzAgOiA4MCksIGQgPSAuNjUgKiB3aW5kb3cuaW5uZXJIZWlnaHQ7CiAgICBhZGRDc3MoIi5NWSB7cG9zaXRpb246IGZpeGVkO3RvcDogMDtsZWZ0OiAwO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTt6LWluZGV4OiAyMTQ3NDgzNjQ3O2Rpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO3BvaW50ZXItZXZlbnRzOiBub25lO2ZvbnQtc2l6ZTogMTRweDt9Lk1ZLW0ge2ZvbnQtc2l6ZTogMTJweDt9Lk1ZID4gKiB7cG9pbnRlci1ldmVudHM6IGF1dG87ei1pbmRleDogMTt9Lk1ZLWhpZGUge2Rpc3BsYXk6IG5vbmUgIWltcG9ydGFudDt2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDt3aWR0aDogMCAhaW1wb3J0YW50O2hlaWdodDogMCAhaW1wb3J0YW50O21heC13aWR0aDogMCAhaW1wb3J0YW50O21heC1oZWlnaHQ6IDAgIWltcG9ydGFudDtvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7bGVmdDogLTk5OTk5cHggIWltcG9ydGFudDtvcGFjaXR5OiAwICFpbXBvcnRhbnQ7cG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDt9Lk1ZIHN2ZyB7d2lkdGg6IDEwMCU7bWluLXdpZHRoOiAxZW07fS5NWS1tYWluIHtwb3NpdGlvbjogcmVsYXRpdmU7fS5NWS1mYWIge3Bvc2l0aW9uOiBmaXhlZDtsZWZ0OiAiICsgX01hdGhtaW4oU3RvcmUuZ2V0KCJmYWJMZWZ0IiwgYyksIGMpICsgInB4O3RvcDogIiArIF9NYXRobWluKFN0b3JlLmdldCgiZmFiVG9wIiwgZCksIGQpICsgInB4O2ZvbnQtc2l6ZTogMThweDt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7bWF4LXdpZHRoOiAiICsgKGlzTW9iaWxlID8gIjJlbSIgOiAiMS41ZW0iKSArICI7bWF4LWhlaWdodDogIiArIChpc01vYmlsZSA/ICIyZW0iIDogIjEuNWVtIikgKyAnO2Rpc3BsYXk6IGZsZXg7anVzdGlmeS1jb250ZW50OiBjZW50ZXI7YWxpZ24taXRlbXM6IGNlbnRlcjtjdXJzb3I6IHBvaW50ZXI7cGFkZGluZzogNXB4IDVweCAzcHg7Ym9yZGVyLXJhZGl1czogNTAlO2JhY2tncm91bmQ6ICNlMGU1ZWM7Ym94LXNoYWRvdzogMCAzcHggMjBweCAtM3B4ICM0NTVBNjQ7Y29sb3I6ICM0NTVBNjQ7cG9pbnRlci1ldmVudHM6IGF1dG87YW5pbWF0aW9uOiBteS16b29tLWluLXVwIC44NXMgZWFzZTt9Lk1ZLWZhYjpub3QoLmlzLW1vdmluZykge3RyYW5zaXRpb246IHRvcCAuNzVzLCBsZWZ0IC43NXM7fS5NWS1mYWIgc3ZnIHtkaXNwbGF5OiBibG9jazt9Lk1ZLmlzLWFjdGl2ZSAuTVktZmFiLCAuTVlbZGF0YS1zY3JvbGw9ImRvd24iXSAuTVktZmFiIHthbmltYXRpb246IG15LXpvb20tb3V0LWRvd24gMXMgZWFzZS1pbi1vdXQ7dG9wOiAxMDN2aCAhaW1wb3J0YW50O2xlZnQ6IDEwM3Z3ICFpbXBvcnRhbnQ7dHJhbnNpdGlvbjogdG9wIC43NXMsIGxlZnQgLjc1czt9Lk1ZLWZhYi1ib3JkZXIge3Bvc2l0aW9uOiBhYnNvbHV0ZTtsZWZ0OiAtMTFweDt0b3A6IC0xMXB4O3JpZ2h0OiAtMTFweDtib3R0b206IC0xMXB4O29wYWNpdHk6IC43NTtjb2xvcjogIzQ1NUE2NDt9Lk1ZLXJvdGF0ZSB7YW5pbWF0aW9uOiBteS1yb3RhdGUgNnMgbGluZWFyIGluZmluaXRlO30uTVktZmFiOm5vdCguaGFzLXZpcCkgLk1ZLXlpbmcge2Rpc3BsYXk6IG5vbmU7fS5NWS1mYWIuaGFzLXZpcCAuTVktbWkge2Rpc3BsYXk6IG5vbmU7fS5NWS1mYWItdGlwIHtkaXNwbGF5OiBub25lO3dvcmQtYnJlYWs6IGtlZXAtYWxsO3RvcDogLTIuMjVlbTtwYWRkaW5nOiAycHggNXB4O2JvcmRlci1yYWRpdXM6IDNweDtwb3NpdGlvbjogYWJzb2x1dGU7Zm9udC1zaXplOiAuNzVlbTtiYWNrZ3JvdW5kLWNvbG9yOiAjZjdlZGUyO2NvbG9yOiAjNDU1QTY0O30uTVktZmFiOmhvdmVyIC5NWS1mYWItdGlwIHtkaXNwbGF5OiBibG9jazt9Lk1ZLWNsb3NlLCAuTVktZnVsbHNjcmVlbiB7cG9zaXRpb246IGFic29sdXRlO3dpZHRoOiAyNHB4O2hlaWdodDogMjRweDtjdXJzb3I6IHBvaW50ZXI7Ym9yZGVyLXJhZGl1czogNTAlO3BhZGRpbmc6IDVweDtiYWNrZ3JvdW5kOiAjRUVFRUVFO2JveC1zaGFkb3c6IDAgMCA4cHggNHB4IHJnYigyMTYsMjE2LDIxNik7Y29sb3I6ICM2MDdEOEI7ZGlzcGxheTogZmxleDtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjthbGlnbi1pdGVtczogY2VudGVyO3otaW5kZXg6IDEwO3RyYW5zaXRpb246IGFsbCAuNTt9Lk1ZLWNsb3NlIHtyaWdodDogLjVlbTt0b3A6IC0xLjVlbTt9Lk1ZLWZ1bGxzY3JlZW4ge3RvcDogLTEuMTVlbTtyaWdodDogNGVtO3BhZGRpbmc6IDVweDt3aWR0aDogMTZweDtoZWlnaHQ6IDE2cHg7Ym9yZGVyLXJhZGl1czogM3B4O30uTVktdGlueSAuTVktZnVsbHNjcmVlbiB7cmlnaHQ6IDA7dG9wOiAtMS42NWVtO30uTVktbSAuTVktZnVsbHNjcmVlbiB7ZGlzcGxheTogbm9uZTt9Lk1ZLWZ1bGxzY3JlZW4gPiAqIHtkaXNwbGF5OiBmbGV4O30uTVk6bm90KC5NWS10aW55KSAuTVktaWNvbi1zaHJpbmsge2Rpc3BsYXk6IG5vbmU7fS5NWS10aW55IC5NWS1pY29uLWV4cGFuZCB7ZGlzcGxheTogbm9uZTt9Lk1ZLWNsb3NlOmhvdmVyIHtjb2xvcjogI2U1NmI2Zjt9Lk1ZLWZ1bGxzY3JlZW46aG92ZXIge2NvbG9yOiAjMmE5ZDhmO30uTVktZWRpdC1jbG9zZSB7cG9zaXRpb246IGFic29sdXRlO3JpZ2h0OiAtLjVlbTt0b3A6IC0xZW07d2lkdGg6IDEuNWVtO2hlaWdodDogMS41ZW07Y3Vyc29yOiBwb2ludGVyO2JvcmRlci1yYWRpdXM6IDUwJTtwYWRkaW5nOiA1cHg7YmFja2dyb3VuZDogI0VFRUVFRTtib3gtc2hhZG93OiAwIDAgOHB4IDFweCByZ2JhKDE5MiwxOTIsMTkyLDAuNzUpO2NvbG9yOiAjNjA3RDhCO2Rpc3BsYXk6IGZsZXg7anVzdGlmeS1jb250ZW50OiBjZW50ZXI7YWxpZ24taXRlbXM6IGNlbnRlcjt9Lk1ZLW0gLk1ZLWVkaXQtY2xvc2Uge2ZvbnQtc2l6ZTogMTRweDtwYWRkaW5nOiAxcHg7cmlnaHQ6IC0uMjVlbTt0b3A6IC0uNWVtO30uTVktdGlwIHttYXJnaW46IC4yNWVtIDFlbTtmb250LXNpemU6IC45ZW07Ym9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMTM1LCAxMzUsIDEzNSwgMC4yNSk7Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMTM1LCAxMzUsIDEzNSwgMC4yNSk7cGFkZGluZzogLjVlbSAwO2NvbG9yOiAjNWI1YjY3O2xldHRlci1zcGFjaW5nOiAxcHg7dGV4dC1zaGFkb3c6IG5vbmU7dGV4dC1hbGlnbjogY2VudGVyO2xpbmUtaGVpZ2h0OiAxLjU7fS5NWS1kYXJrLXRoZW1lIC5NWS10aXAge2NvbG9yOiBpbmhlcml0O30uTVktdGlwIHN0cm9uZyB7Y29sb3I6ICNGRjcwNDM7fS5NWS1wYWdlIHt3aWR0aDogMTAwJTtwb3NpdGlvbjogcmVsYXRpdmU7Ym94LXNoYWRvdzogMCAwIDEwcHggMTZweCAjZTBlNWVjO2JhY2tncm91bmQtY29sb3I6ICNlMGU1ZWM7Y29sb3I6ICM0NTVBNjQ7YW5pbWF0aW9uOiBteS16b29tLW91dC1kb3duIC41cyBlYXNlLWluLW91dDtvcGFjaXR5OiAwO3Zpc2liaWxpdHk6IGhpZGRlbjt9Lk1ZLmlzLWxvYWRlZCAuTVktcGFnZSB7dmlzaWJpbGl0eTogdmlzaWJsZTt9Lk1ZLmlzLWFjdGl2ZSAuTVktcGFnZSB7b3BhY2l0eTogMTt0cmFuc2l0aW9uOiBvcGFjaXR5IC41czthbmltYXRpb246IG15LXpvb20taW4tZG93biAuMnMgZWFzZS1pbi1vdXQ7fS5NWTpub3QoLmlzLWFjdGl2ZSkgLk1ZLW1haW4ge3BvaW50ZXItZXZlbnRzOiBub25lO30uTVktaWZyYW1lcyB7dmlzaWJpbGl0eTogaGlkZGVuO3BvaW50ZXItZXZlbnRzOiBub25lO3Bvc2l0aW9uOiBmaXhlZDtib3R0b206IDA7bGVmdDogMDttYXgtd2lkdGg6IDMyMHB4O2Rpc3BsYXk6IGJsb2NrO30uTVktaWZyYW1lcyA+IGlmcmFtZSB7bWF4LXdpZHRoOiAxMDVweDttYXgtaGVpZ2h0OiA2MHB4O2Rpc3BsYXk6IGlubGluZS1ibG9jazt9Lk1ZLXBhbmVsIHtwb3NpdGlvbjogcmVsYXRpdmU7cGFkZGluZzogMS41ZW0gMCAuNWVtO30uTVktYnV0dG9ucyB7bGV0dGVyLXNwYWNpbmc6IDFweDtkaXNwbGF5OiBmbGV4O292ZXJmbG93LXg6IGF1dG87Ym94LXNoYWRvdzogMCAxcHggOHB4IDAgcmdiYSgwLDAsMCwwLjIpO3BhZGRpbmc6IDZweCAuNzVlbSA1cHggMDttYXJnaW4tdG9wOiAxMHB4O3Bvc2l0aW9uOiByZWxhdGl2ZTtiYWNrZ3JvdW5kOiAjZWZmMWYzO30uTVktcGxheS1saXN0Lk1ZLWJ1dHRvbnMge3BhZGRpbmc6IDEwcHggLjc1ZW0gNnB4IDA7bWFyZ2luLWJvdHRvbTogNXB4O30uTVktYnV0dG9ucyA+ICo6bm90KC5NWS1iZy1wcm9ncmVzcykge3otaW5kZXg6IDE7fS5NWS1idXR0b24ge2Rpc3BsYXk6IGlubGluZS1mbGV4O2p1c3RpZnktY29udGVudDogY2VudGVyO2FsaWduLWl0ZW1zOiBjZW50ZXI7d2hpdGUtc3BhY2U6IG5vd3JhcDtjdXJzb3I6IHBvaW50ZXI7cGFkZGluZzogLjM1ZW0gLjVlbSAuNDVlbTtwb3NpdGlvbjogcmVsYXRpdmU7bWFyZ2luOiAwIC4yNWVtO2JvcmRlcjogbm9uZTtib3JkZXItcmFkaXVzOiAzcHg7dHJhbnNpdGlvbjogYWxsIC41cztjb2xvcjogIzA4NGM2MTtiYWNrZ3JvdW5kLWNvbG9yOiAjZjdlZGUyO2JveC1zaGFkb3c6IDAgLTJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNSkgaW5zZXQ7fS5NWS1zZWFyY2ggLk1ZLWJ1dHRvbiB7Y29sb3I6ICMyYzZlNDk7fS5NWS1zZWFyY2ggLk1ZLWJ1dHRvbi5pcy12aXAge2NvbG9yOiAjZWU2YzRkO30uTVktc2VhcmNoIC5NWS1idXR0b24uaXMtYW5pbWUge2NvbG9yOiAjZWY0NzZmO30uTVktYnV0dG9uLmlzLW1wNCAuTVktZXh0IHtjb2xvcjogIzU4OGI4Yjt9Lk1ZLWJ1dHRvbjpob3ZlciwuTVktYnV0dG9uOmFjdGl2ZSwuTVktbGFiZWw6aG92ZXIsLk1ZLWJ1dHRvbi5pcy1tcDQ6aG92ZXIgLk1ZLWV4dCB7Y29sb3I6ICNmZWY5ZWYgIWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOiAjNGM5NTZjICFpbXBvcnRhbnQ7Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O30uTVktYnV0dG9uLmlzLXN1Y2Nlc3Mge2NvbG9yOiAjMGVhZDY5O2ZvbnQtd2VpZ2h0OiBib2xkO30uTVktYnV0dG9uLmlzLWZhaWwge29wYWNpdHk6IC42NTtjb2xvcjogI2YzODM3NTt9Lk1ZLWJ1dHRvbi5pcy1hY3RpdmUge2ZvbnQtd2VpZ2h0OiBib2xkO2NvbG9yOiAjZTc2ZjUxO30uTVktYnV0dG9uLmlzLXN1Y2Nlc3MsLk1ZLWJ1dHRvbi5pcy1hY3RpdmUsLk1ZLWJ1dHRvbi5pcy1kb25lIHtib3gtc2hhZG93OiAwIC0ycHggMCBjdXJyZW50Q29sb3IgaW5zZXQ7fS5NWS1idXR0b24uaXMtc25pZmZpbmcge2JhY2tncm91bmQtY29sb3I6ICM0Yzk1NmM7Y29sb3I6ICNmMmU5ZTQ7bWFyZ2luOiAwIC4zNWVtO30uTVktYnV0dG9uOm5vdCguaXMtc25pZmZpbmcpIC5NWS1zbmlmZmluZy10ZXh0IHtkaXNwbGF5OiBub25lO30uTVktYnV0dG9uLmlzLXNuaWZmaW5nIHN2ZyB7ZGlzcGxheTogbm9uZTt9Lk1ZLWJ1dHRvbi5pcy1kb25lIHtib3JkZXI6IDFweCBzb2xpZDtjb2xvcjogIzRjOTU2Yzt9Lk1ZLWJ1dHRvbi5pcy1wb3AuaXMtYWN0aXZlIHtjb2xvcjogI2UyOTU3ODt9Lk1ZLWJ1dHRvbnMgLk1ZLXBhZGRpbmcge3BvaW50ZXItZXZlbnRzOiBub25lO30uTVktYnV0dG9uIHN2ZyB7d2lkdGg6IDFlbTtoZWlnaHQ6IDFlbTt9Lk1ZLWJ1dHRvbnMgLk1ZLXBhZGRpbmcge2Rpc3BsYXk6IGlubGluZS1ibG9jaztwYWRkaW5nOiAwIC41ZW07fS5NWS1wbGF5LWxpc3QuaXMtc2hvcnQgLk1ZLWJ1dHRvbiB7bWluLXdpZHRoOiAyZW07fS5NWS12aXAtbGlzdDpub3QoLmlzLWFsbG93LXNuaWZmKSAuTVktdmlwLXNuaWZmIHtkaXNwbGF5OiBub25lO30uTVktdmlwLWxpc3QgLk1ZLWJ1dHRvbiwuTVktbSAuTVktcGxheS1saXN0IC5NWS1idXR0b24ge29yZGVyOiAxO30uTVktdmlwLWxpc3QgLk1ZLWJ1dHRvbi5pcy1zdWNjZXNzLC5NWS1tIC5NWS1wbGF5LWxpc3QgLk1ZLWJ1dHRvbi5pcy1hY3RpdmUge29yZGVyOiAwO30uTVktdmlwLWxpc3QgLk1ZLXBhZGRpbmcsIC5NWS1wbGF5LWxpc3QgLk1ZLXBhZGRpbmcge29yZGVyOiA5O30uTVktdmlwLXNuaWZmIHtvcmRlcjogMCAhaW1wb3J0YW50O21pbi13aWR0aDogMmVtO30uTVktdmlwLWxpc3QgLk1ZLXZpcC1zbmlmZi5pcy1kb25lIH4gLk1ZLXBhZGRpbmcge2Rpc3BsYXk6IG5vbmU7fS5NWS1leHQge3Bvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IC0uNWVtO3JpZ2h0OiAtLjc1ZW07YmFja2dyb3VuZDogaW5oZXJpdDt6LWluZGV4OiAxO3BhZGRpbmc6IDFweCAzcHg7Ym9yZGVyLXJhZGl1czogM3B4O3RyYW5zZm9ybTogc2NhbGUoLjYpIHJvdGF0ZVooMTVkZWcpO30uTVktc3RhdHVzLWJlYXQge3Bvc2l0aW9uOiByZWxhdGl2ZTtwYWRkaW5nOiAuMzVlbSAuNWVtIC40NWVtO21hcmdpbjogMCAuMjVlbTtwb2ludGVyLWV2ZW50czogbm9uZTtvcGFjaXR5OiAuNTt9Lk1ZLXN0YXR1cy1iZWF0OjphZnRlciB7Y29udGVudDogIiI7cG9zaXRpb246IGFic29sdXRlO2xlZnQ6IDUwJTt0b3A6IDUwJTt3aWR0aDogNHB4O2hlaWdodDogNHB4O3RyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO2JveC1zaXppbmc6IGJvcmRlci1ib3g7dHJhbnNpdGlvbjogYWxsIDAuM3M7Ym9yZGVyLXJhZGl1czogNTAlO2JhY2tncm91bmQ6ICM2MDdEOEI7Ym9yZGVyOiAxcHggc29saWQgIzYwN0Q4QjthbmltYXRpb246IG15LXB1bHNlLXBvc2l0aXZlIDIuNXMgZWFzZSBpbmZpbml0ZTt9Lk1ZLWJnLXByb2dyZXNzIHtwb3NpdGlvbjogYWJzb2x1dGU7d2lkdGg6IDA7aGVpZ2h0OiAxMDAlO2xlZnQ6IDA7dG9wOiAwO2JhY2tncm91bmQtY29sb3I6ICM2MGI5NjM7YmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjIpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjIpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMikgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTtvcGFjaXR5OiAwLjU7cG9pbnRlci1ldmVudHM6IG5vbmU7dHJhbnNpdGlvbjogd2lkdGggMnM7fS5NWS12aXAtc25pZmYgLk1ZLWJ1YmJsZSB7cG9zaXRpb246IGFic29sdXRlO3RvcDogMTAlO2xlZnQ6IDU1JTt3aWR0aDogNHB4O2hlaWdodDogNHB4O2JvcmRlci1yYWRpdXM6IDUwJTtiYWNrZ3JvdW5kLWNvbG9yOiAjZWVmNmZjO29wYWNpdHk6IDA7dmlzaWJpbGl0eTogaGlkZGVuO30uTVktdmlwLXNuaWZmLmlzLXNuaWZmaW5nIC5NWS1idWJibGUge3Zpc2liaWxpdHk6IHZpc2libGU7fS5NWS12aXAtc25pZmYgLk1ZLWJ1YmJsZS5NWS1iMSB7YW5pbWF0aW9uOiBteS1idWJibGUxIDEuMnMgbGluZWFyIGluZmluaXRlO30uTVktdmlwLXNuaWZmIC5NWS1idWJibGUuTVktYjIge2FuaW1hdGlvbjogbXktYnViYmxlMiAxLjJzIGxpbmVhciBpbmZpbml0ZTt9Lk1ZLXZpcC1zbmlmZiAuTVktYnViYmxlLk1ZLWIzIHthbmltYXRpb246IG15LWJ1YmJsZTMgMS4ycyBsaW5lYXIgaW5maW5pdGU7fS5NWS12aXAtc25pZmYuaXMtc25pZmZpbmcge2FuaW1hdGlvbjogbXktYmVhdCAwLjRzIGluZmluaXRlIGFsdGVybmF0ZTt9Lk1ZLXBsYXktZmFpbC10ZXh0IHt0ZXh0LWFsaWduOiBjZW50ZXI7cGFkZGluZzogLjVlbTtjb2xvcjogI2ZlNWY1NTt9Lk1ZLXBsYXktZmFpbC10ZXh0IGEge2N1cnNvcjogcG9pbnRlcjtjb2xvcjogIzAwNzdiNjtmb250LXdlaWdodDogYm9sZDttYXJnaW46IDAgLjI1ZW07dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7fS5NWSBzdHJvbmcge2ZvbnQtd2VpZ2h0OiBib2xkO30uTVktdmlkZW8tdXJsczpub3QoLmlzLXBsYXktZmFpbCkgLk1ZLXBsYXktZmFpbC10ZXh0IHtkaXNwbGF5OiBub25lO30uTVktc2Nyb2xsYmFyOjotd2Via2l0LXNjcm9sbGJhciB7YmFja2dyb3VuZC1jb2xvcjogI2VlZTtoZWlnaHQ6IDRweDt3aWR0aDogNnB4O30uTVktc2Nyb2xsYmFyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7Ym9yZGVyLXJhZGl1czogM3B4O2JhY2tncm91bmQtY29sb3I6ICM0Q0FGNTA7YmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjIpIDI1JSwgdHJhbnNwYXJlbnQgMjUlLCB0cmFuc3BhcmVudCA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgLjIpIDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMikgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTt9Lk1ZLXBsYXllciB7cG9zaXRpb246IHJlbGF0aXZlO3otaW5kZXg6IDEwMDttYXJnaW4tdG9wOiAuNWVtO30uTVktcGxheWVyOm5vdCg6ZW1wdHkpIHtwYWRkaW5nOiAwIDNweDt9Lk1ZLXBsYXllci1ib3gge21heC13aWR0aDogJyArIHMgKyAicHg7d2lkdGg6IDEwMCU7aGVpZ2h0OiAiICsgbCArICJweDttYXJnaW46IDAgYXV0bztib3gtc2hhZG93OiA5cHggOXB4IDE2cHggcmdiYSgxNjMsIDE3NywgMTk4LCAwLjYpLCAtOXB4IC05cHggMTZweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSk7Ym9yZGVyLXJhZGl1czogOHB4O292ZXJmbG93OiBoaWRkZW47cG9zaXRpb246IHJlbGF0aXZlO2Rpc3BsYXk6IGZsZXg7anVzdGlmeS1jb250ZW50OiBjZW50ZXI7YWxpZ24taXRlbXM6IGNlbnRlcjt9Lk1ZLXBsYXllci1ib3ggdmlkZW8ge2hlaWdodDogMTAwJTt3aWR0aDogMTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazt9Lk1ZLXBsYXllci1ib3ggdmlkZW8sLk1ZLXBsYXllci1ib3ggaWZyYW1lIHtoZWlnaHQ6IDEwMCU7d2lkdGg6IDEwMCU7bWluLWhlaWdodDogIiArIGwgKyAncHg7fS5NWS1wbGF5ZXIgLnBseXJfX3Byb2dyZXNzIGlucHV0W3R5cGU9cmFuZ2VdIHtjdXJzb3I6IHBvaW50ZXI7fS5NWS1wbGF5ZXI6bm90KC5pcy1sb2FkZWQpIGlmcmFtZSB7ZGlzcGxheTogbm9uZTt9Lk1ZLXBsYXllci1iZyB7cG9zaXRpb246IGFic29sdXRlO3RvcDogMDtib3R0b206IDA7bGVmdDogMDtyaWdodDogMDtkaXNwbGF5OiBmbGV4O2p1c3RpZnktY29udGVudDogY2VudGVyO2FsaWduLWl0ZW1zOiBjZW50ZXI7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtmb250LXNpemU6IDE2cHg7Y29sb3I6ICNmMWYzZjU7b3ZlcmZsb3c6IGhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiAjMDEwODFhO2JhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO2JhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7dHJhbnNpdGlvbjogYWxsIDMuNXM7fS5NWS1wbGF5ZXIuaXMtbG9hZGVkIC5NWS1wbGF5ZXItYmcge3Zpc2liaWxpdHk6IGhpZGRlbjtvcGFjaXR5OiAwO30uTVktbSAuTVktcGxheWVyLWJnIHtmb250LXNpemU6IDEycHg7fS5NWS1wbGF5ZXItbWFzayB7YmFja2dyb3VuZC1jb2xvcjogIzI4MjgyODtwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiAwO3JpZ2h0OiAwO2JvdHRvbTogMDtsZWZ0OiAwO29wYWNpdHk6IDAuMzU7dHJhbnNpdGlvbjogYWxsIDIuNXM7fS5NWS1wbGF5ZXItYmcuaXMtZmFpbCAuTVktcGxheWVyLW1hc2sge29wYWNpdHk6IDAuOTt9Lk1ZLXNpZ24ge29wYWNpdHk6IC4yNTt0ZXh0LXNoYWRvdzogMXB4IDFweCAycHggIzAwMDAwMDt3aWR0aDogOTYlO2Rpc3BsYXk6IGZsZXg7anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO3Bvc2l0aW9uOiBhYnNvbHV0ZTtib3R0b206IDFlbTtmb250LXNpemU6IC44ZW07cG9pbnRlci1ldmVudHM6IG5vbmU7fS5NWS12ZXJzaW9uIHtmb250LXNpemU6IC44ZW07b3BhY2l0eTogLjk7fS5NWS1zbG9nYW4ge2xldHRlci1zcGFjaW5nOiAycHg7Y29sb3I6ICNmODk2NGM7ZGlzcGxheTogZmxleDtqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWV2ZW5seTthbGlnbi1pdGVtczogY2VudGVyO3dpZHRoOiAxMDAlO21heC13aWR0aDogNDgwcHg7fS5NWS1zbG9nYW4gc3Ryb25nIHtmb250LXNpemU6IDIuNWVtO3RleHQtc2hhZG93OiAwIDAgNXB4ICNmZmE1MDAsIDAgMCA1cHggI2ZmYTUwMCwgMCAwIDE1cHggI2ZmYTUwMCwgMCAwIDIwcHggI2ZmYTUwMCwgMCAwIDZweCAjZmYwMDAwLCAwIDAgMTBweCAjZmY4ZDAwLCAwIDAgOXB4ICNmZjAwMDA7Y29sb3I6ICNmZmY2YTk7b3BhY2l0eTogLjg7dHJhbnNmb3JtOiBzY2FsZSgwLjkpO2Rpc3BsYXk6IGlubGluZS1ibG9jazttYXJnaW46IDAgNXB4O30uTVktc2xvZ2FuIHN0cm9uZzpmaXJzdC1jaGlsZCB7YW5pbWF0aW9uOiBteS1ib3BBIC41cyBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxLjI3NSkgZm9yd2FyZHMgaW5maW5pdGUgYWx0ZXJuYXRlLCBNWS1ibGluayA2cyBpbmZpbml0ZTt9Lk1ZLXNsb2dhbiBzdHJvbmc6bGFzdC1jaGlsZCB7YW5pbWF0aW9uOiBteS1ib3BCIC41cyAwLjJzIGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEuMjc1KSBmb3J3YXJkcyBpbmZpbml0ZSBhbHRlcm5hdGUsIE1ZLWJsaW5rIDZzIDEuNXMgaW5maW5pdGU7fS5NWS1lcnJvci10ZXh0IHtkaXNwbGF5OiBub25lO3BhZGRpbmctdG9wOiAxZW07bGV0dGVyLXNwYWNpbmc6IDFweDtib3gtc2hhZG93OiAwIC0xMHB4IDhweCAwICNmZmY0ZTY7cGFkZGluZzogLjI1ZW0gLjVlbSAuNGVtO3Bvc2l0aW9uOiBhYnNvbHV0ZTtib3R0b206IDA7bGVmdDogLTUlO3JpZ2h0OiAtNSU7d2lkdGg6IDExMCU7dGV4dC1hbGlnbjogY2VudGVyO2JhY2tncm91bmQtY29sb3I6ICNmZmY0ZTY7Y29sb3I6ICNGRjU3MjI7fS5NWS1wbGF5ZXItYmcuaXMtZmFpbCAuTVktc2xvZ2FuIHtjb2xvcjogI2Y3NjcwNzt9Lk1ZLXBsYXllci1iZy5pcy1mYWlsIC5NWS1zbG9nYW4gc3Ryb25nIHtjb2xvcjogcmdiKDI1NSwyNDMsMjI0LDAuNSk7dGV4dC1zaGFkb3c6IG5vbmU7fS5NWS1wbGF5ZXItYmcuaXMtZmFpbCAuTVktbG9hZGVyLC5NWS1wbGF5ZXItYmcuaXMtZmFpbCArIC5NWS12aXAtcGxheSB7ZGlzcGxheTogbm9uZTt9Lk1ZLXBsYXllci1iZy5pcy1mYWlsIC5NWS1lcnJvci10ZXh0IHtkaXNwbGF5OiBibG9jazt9Lk1ZLWxvYWRlciB7Ym9yZGVyOiAzLjZweCBzb2xpZCAjZmY5NzRkO2JveC1zaXppbmc6IGJvcmRlci1ib3g7b3ZlcmZsb3c6IGhpZGRlbjt3aWR0aDogMmVtO2hlaWdodDogMmVtO2xlZnQ6IDUwJTt0b3A6IDUwJTthbmltYXRpb246IG15LWxvYWRlci1zcGluIDJzIGxpbmVhciBpbmZpbml0ZSByZXZlcnNlO2ZpbHRlcjogdXJsKCNNWS1sLWYpO2JveC1zaGFkb3c6IDAgMCAwIDFweCAjZmY5NzRkIGluc2V0O30uTVktbG9hZGVyOmJlZm9yZSB7Y29udGVudDogIiI7cG9zaXRpb246IGFic29sdXRlO2FuaW1hdGlvbjogbXktbG9hZGVyLXNwaW4gMnMgY3ViaWMtYmV6aWVyKDAuNTksIDAuMjUsIDAuNCwgMC42OSkgaW5maW5pdGU7YmFja2dyb3VuZDogI2ZmOTc0ZDt0cmFuc2Zvcm0tb3JpZ2luOiB0b3AgY2VudGVyO2JvcmRlci1yYWRpdXM6IDUwJTt3aWR0aDogMTUwJTtoZWlnaHQ6IDE1MCU7dG9wOiA1MCU7bGVmdDogLTEyLjUlO30uTVktbGFiZWwge2Rpc3BsYXk6IGlubGluZS1ibG9jazt3aGl0ZS1zcGFjZTogbm93cmFwO3BhZGRpbmc6IC4zNWVtIC41ZW0gLjQ1ZW07bWFyZ2luOiAwIC41ZW07Zm9udC13ZWlnaHQ6IGJvbGQ7Ym9yZGVyLXJhZGl1czogM3B4O2xldHRlci1zcGFjaW5nOiAzcHg7Ym94LXNoYWRvdzogMCAtM3B4IDAgcmdiYSgwLCAwLCAwLCAwLjIpIGluc2V0O2N1cnNvcjogcG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiAjZjJlOWU0O2NvbG9yOiAjOGE1YTQ0O30uTVktZGV0YWlsIHtwb3NpdGlvbjogYWJzb2x1dGU7d2lkdGg6IDEwMCU7dG9wOiAtMC4yNWVtO2xlZnQ6IC41ZW07ei1pbmRleDogMjtkaXNwbGF5OiBmbGV4O2FsaWduLWl0ZW1zOiBjZW50ZXI7cGFkZGluZzogLjI1ZW0gLjVlbSAuNWVtO30uTVktdGl0bGUge2xldHRlci1zcGFjaW5nOiAxcHg7Zm9udC13ZWlnaHQ6IGJvbGQ7bWF4LXdpZHRoOiA3NSU7d2hpdGUtc3BhY2U6IG5vd3JhcDtvdmVyZmxvdzogaGlkZGVuO3RleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO30uTVktZGV0YWlsIGkge2Rpc3BsYXk6IGlubGluZS1ibG9jazt3aWR0aDogMnB4O2JhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtoZWlnaHQ6IDFlbTtib3JkZXItcmFkaXVzOiA1MCU7bWFyZ2luOiAwIDFlbTtvcGFjaXR5OiAuMjU7fS5NWS1tb2RlLXN3aXRjaCB7Y3Vyc29yOiBwb2ludGVyO30uTVktbGlnaHQsIC5NWS1kYXJrIHtkaXNwbGF5OiBmbGV4O2p1c3RpZnktY29udGVudDogY2VudGVyO2FsaWduLWl0ZW1zOiBjZW50ZXI7fS5NWTpub3QoLk1ZLWRhcmstdGhlbWUpIC5NWS1kYXJrIHtkaXNwbGF5OiBub25lO30uTVkuTVktZGFyay10aGVtZSAuTVktbGlnaHQge2Rpc3BsYXk6IG5vbmU7fS5NWS1tb2RlLXN3aXRjaCBzdmcge3dpZHRoOiAxZW07fS5NWS1zZXR0aW5ncyB7cGFkZGluZzogMWVtO2xldHRlci1zcGFjaW5nOiAxcHg7fS5NWS1wbGF5ZXI6bm90KDplbXB0eSkgfiAuTVktdGlwIHtkaXNwbGF5OiBub25lO30uTVktc2V0dGluZ3MgLk1ZLWl0ZW0ge2JvcmRlcjogMXB4IHNvbGlkO3BhZGRpbmc6IC4yNWVtIC41ZW07Y3Vyc29yOiBwb2ludGVyO2JvcmRlci1yYWRpdXM6IDNweDt9Lk1ZLXNldHRpbmdzIC5NWS1pdGVtOmhvdmVyIHtiYWNrZ3JvdW5kLWNvbG9yOiAjMzM5YWYwO2NvbG9yOiAjZmFmYWZhO2JveC1zaGFkb3c6IDAgLTJweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSBpbnNldDtib3JkZXItY29sb3I6ICMzNTgyYzM7fS5NWS1zZXR0aW5ncyAuTVktaXRlbS5pcy1hY3RpdmUge2ZvbnQtd2VpZ2h0OiBib2xkO2NvbG9yOiAjZmFmYWZhO2JveC1zaGFkb3c6IDAgLTJweCAwIHJnYmEoMCwgMCwgMCwgMC4yKSBpbnNldDtiYWNrZ3JvdW5kLWNvbG9yOiAjMmE5ZDhmO2JvcmRlci1jb2xvcjogIzJhOWQ4Zjt9Lk1ZLXNldHRpbmdzIC5NWS1pdGVtICsgLk1ZLWl0ZW0ge21hcmdpbi1sZWZ0OiAuNWVtO30uTVktZWRpdCB7cG9zaXRpb246IGZpeGVkO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTtkaXNwbGF5OiBmbGV4O2p1c3RpZnktY29udGVudDogY2VudGVyO2FsaWduLWl0ZW1zOiBjZW50ZXI7b3ZlcmZsb3c6IGhpZGRlbjt9Lk1ZLWVkaXQ6bm90KC5pcy1hY3RpdmUpIHtkaXNwbGF5OiBub25lO30uTVktb3ZlcmxheSB7Ym90dG9tOiAwO2xlZnQ6IDA7cG9zaXRpb246IGFic29sdXRlO3JpZ2h0OiAwO3RvcDogMDtiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwLDEwLDEwLC44Nik7fS5NWS1lZGl0LXBhbmVsIHt6LWluZGV4OiAxO2JhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7cGFkZGluZzogMWVtO2JvcmRlci1yYWRpdXM6IDVweDtwb3NpdGlvbjogcmVsYXRpdmU7bWF4LXdpZHRoOiA2MDBweDt3aWR0aDogMTAwJTttYXJnaW46IDAgLjVlbTt9Lk1ZLWVkaXQtaGludCB7cGFkZGluZzogMCAuNWVtIDFlbSAuNWVtO30uTVktZWRpdCB0ZXh0YXJlYSB7cGFkZGluZzogLjc1ZW07Zm9udC1zaXplOiAxNnB4O2xpbmUtaGVpZ2h0OiAxLjQ7bGV0dGVyLXNwYWNpbmc6IDFweDtib3JkZXItcmFkaXVzOiA1cHg7d2lkdGg6IGNhbGMoMTAwJSAtIDEuNWVtKTttaW4taGVpZ2h0OiA2MHZoO2JveC1zaGFkb3c6IDAgNHB4IDhweCAwIHJnYmEoMCwwLDAsMC4yKTtib3JkZXI6IDFweCBzb2xpZCAjZWVlO292ZXJmbG93LXk6IGF1dG87d29yZC1icmVhazogYnJlYWstYWxsO30uTVktZGFyay10aGVtZSAuTVktYmctcHJvZ3Jlc3Mge2JhY2tncm91bmQtY29sb3I6ICNmN2ZmZjc7fS5NWS1kYXJrLXRoZW1lIC5NWS1mYWItYm9yZGVyIHtjb2xvcjogI2Y1ZGViMzt9Lk1ZLWRhcmstdGhlbWUgLk1ZLWZhYiB7YmFja2dyb3VuZDogIzI1MjcyYWU2O2JveC1zaGFkb3c6IDAgM3B4IDIwcHggLTNweCAjZjVkZWIzO2NvbG9yOiAjZjVkZWIzO30uTVktZGFyay10aGVtZSAuTVktcGFnZSB7YmFja2dyb3VuZC1jb2xvcjogIzI1MjcyYTtib3gtc2hhZG93OiAwIDAgMTBweCAxNnB4IHJnYigzNywzOSw0Mik7Y29sb3I6IHdoZWF0O30uTVktZGFyay10aGVtZSAuTVktY2xvc2UsLk1ZLWRhcmstdGhlbWUgLk1ZLWZ1bGxzY3JlZW4ge2JhY2tncm91bmQ6IHJnYigzNywzOSw0Mik7Ym94LXNoYWRvdzogMCAwIDhweCA0cHggcmdiKDUzLDU5LDYzKTtjb2xvcjogd2hlYXQ7fS5NWS1kYXJrLXRoZW1lIC5NWS1wbGF5ZXItYm94IHtib3gtc2hhZG93OiA5cHggOXB4IDE2cHggcmdiKDUzLDU5LDYzKTt9Lk1ZLWRhcmstdGhlbWUgLk1ZLWJ1dHRvbnMge2JhY2tncm91bmQ6ICMyNTMyMzc7fS5NWS1kYXJrLXRoZW1lIC5NWS1zdGF0dXMtYmVhdDo6YWZ0ZXIge2JhY2tncm91bmQ6ICNFRUVFRUU7Ym9yZGVyLWNvbG9yOiAjRUVFRUVFO2FuaW1hdGlvbjogbXktcHVsc2UtcG9zaXRpdmUtZGFyayAyLjVzIGVhc2UgaW5maW5pdGU7fS5NWS10aW55IC5NWS1kZXRhaWwsLk1ZLXRpbnkgLk1ZLWNsb3NlLC5NWS10aW55IC5NWS10aXAsLk1ZLXRpbnkgLk1ZLXNldHRpbmdzLC5NWS10aW55IC5NWS1zZWFyY2gge2Rpc3BsYXk6IG5vbmUgIWltcG9ydGFudDt9Lk1ZLXRpbnkgLk1ZLXBhbmVsIHtwYWRkaW5nLXRvcDogMDtwYWRkaW5nLWJvdHRvbTogMDt9Lk1ZLXBpcCAuTVktcGxheWVyOm5vdCg6ZW1wdHkpIHtwYWRkaW5nOiAwO30uTVktcGlwIC5NWS1wbGF5ZXIge3Bvc2l0aW9uOiByZWxhdGl2ZTtoZWlnaHQ6IDEwMCU7bWF4LWhlaWdodDogMTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiAjMDEwODFhO292ZXJmbG93OiBoaWRkZW47ei1pbmRleDogMjE0NzQ4MzY0Nzt9Lk1ZLXBpcCAuTVktcGxheWVyLWJveCB7Ym9yZGVyLXJhZGl1czogMDtib3gtc2hhZG93OiBub25lO3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXgtd2lkdGg6IDEwMCU7bWluLWhlaWdodDogYXV0bzt9Lm8tLXZpcCwgLm8tLWp1bXAge2Rpc3BsYXk6IG5vbmUgIWltcG9ydGFudDt2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDt3aWR0aDogMCAhaW1wb3J0YW50O2hlaWdodDogMCAhaW1wb3J0YW50O21heC13aWR0aDogMCAhaW1wb3J0YW50O21heC1oZWlnaHQ6IDAgIWltcG9ydGFudDtvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7cG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7bGVmdDogLTk5OTk5cHggIWltcG9ydGFudDtvcGFjaXR5OiAwICFpbXBvcnRhbnQ7cG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDt9JyArIEtFWUZSQU1FU19TVFlMRVMpOwogICAgbGV0IHAgPSAiIjsKICAgIGlmIChlLnZpcCkgewogICAgICBjb25zdCBlID0gWyB7CiAgICAgICAga2V5OiAicGlwIiwKICAgICAgICB0ZXh0OiAoaXNNb2JpbGUgPyAi5pysIiA6ICLljp/nvZEiKSArICLpobXop6PmnpAiCiAgICAgIH0gXTsKICAgICAgaXNNb2JpbGUgfHwgZS5wdXNoKHsKICAgICAgICBrZXk6ICJza2lwQWQiLAogICAgICAgIHRleHQ6ICLliqDpgJ/ot7Plub/lkYoiCiAgICAgIH0sIHsKICAgICAgICBrZXk6ICJoaWRlV2F0ZXJtYXJrIiwKICAgICAgICB0ZXh0OiAi5Y676KeG6aKR5rC05Y2wIgogICAgICB9KSwgaXNBbGxvd1NuaWZmICYmIGUudW5zaGlmdCh7CiAgICAgICAga2V5OiAiYXV0b0ppZXhpIiwKICAgICAgICB0ZXh0OiAi6Ieq5Yqo6Kej5p6QIgogICAgICB9KSwgcCA9ICc8ZGl2IGNsYXNzPSJNWS1zZXR0aW5ncyI+JyArIGUubWFwKChmdW5jdGlvbihlKSB7CiAgICAgICAgcmV0dXJuICc8c3BhbiBjbGFzcz0iTVktaXRlbScgKyAoc2V0dGluZ3NbZS5rZXldID8gIiBpcy1hY3RpdmUiIDogIiIpICsgJyIga2V5PSInICsgZS5rZXkgKyAnIj4nICsgZS50ZXh0ICsgIjwvc3Bhbj4iOwogICAgICB9KSkuam9pbigiIikgKyAiPC9kaXY+IjsKICAgIH0KICAgICQoImh0bWwiKS5hcHBlbmQoJzxtaXlpbmcgY2xhc3M9Ik1ZJyArIChpc0RhcmtNb2RlID8gIiBNWS1kYXJrLXRoZW1lIiA6ICIiKSArIChoYXNUaW55TW9kZSAmJiBpc1RpbnlNb2RlID8gIiBNWS10aW55IiA6ICIiKSArICciPjxkaXYgY2xhc3M9Ik1ZLWZhYiI+PHNwYW4gY2xhc3M9Ik1ZLWZhYi10aXAiPuWPr+aLluaLvTwvc3Bhbj48c3BhbiBjbGFzcz0iTVktZmFiLWJvcmRlciI+JyArIEljb24uZW5jaXJjbGUgKyAnPC9zcGFuPjxzcGFuIGNsYXNzPSJNWS1taSI+JyArIEljb24ubWkgKyAnPC9zcGFuPjxzcGFuIGNsYXNzPSJNWS15aW5nIj4nICsgSWNvbi55aW5nICsgJzwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJNWS1tYWluIj48ZGl2IGNsYXNzPSJNWS1wYWdlIE1ZLXNjcm9sbGJhciI+PGRpdiBjbGFzcz0iTVktZGV0YWlsIj48c3BhbiBjbGFzcz0iTVktbW9kZS1zd2l0Y2giPjxzcGFuIGNsYXNzPSJNWS1kYXJrIj4nICsgSWNvbi5tb29uICsgJzwvc3Bhbj48c3BhbiBjbGFzcz0iTVktbGlnaHQiPicgKyBJY29uLnN1biArICc8L3NwYW4+PC9zcGFuPjxpPjwvaT48c3BhbiBjbGFzcz0iTVktdmVyc2lvbiI+djIwLjIwLmZpbmFsPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Ik1ZLXBhbmVsIj48ZGl2IGNsYXNzPSJNWS1mdWxsc2NyZWVuJyArIChoYXNUaW55TW9kZSA/ICIiIDogIiBNWS1oaWRlIikgKyAnIj48c3BhbiBjbGFzcz0iTVktaWNvbi1zaHJpbmsiPicgKyBJY29uLnNocmluayArICc8L3NwYW4+PHNwYW4gY2xhc3M9Ik1ZLWljb24tZXhwYW5kIj4nICsgSWNvbi5leHBhbmQgKyAnPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Ik1ZLWNsb3NlIj4nICsgSWNvbi54ICsgIjwvZGl2PiIgKyBwICsgJzxkaXYgY2xhc3M9Ik1ZLXBsYXllciI+PC9kaXY+PGRpdiBjbGFzcz0iTVktdGlwJyArIChJcyhpc1ZpcFNpdGVSZWdleCkgPyAiIiA6ICIgTVktaGlkZSIpICsgJyI+PGRpdj7ngrnlh7s8c3Ryb25nPuino+aekDwvc3Ryb25nPuWSjDxzdHJvbmc+5pCc57SiPC9zdHJvbmc+5Y+v5Lul6Ieq5a6a5LmJJyArIChpc01vYmlsZSA/ICI8YnI+5aSa5pWw6Kej5p6Q5Lya5Zyo56e75Yqo56uv5pi+56S6PHN0cm9uZz7lm77niYflub/lkYo8L3N0cm9uZz7vvIzpnIDmiYvliqjmi6bmiKrjgII8YnI+6YWN5ZCI5rWP6KeI5Zmo55qEPHN0cm9uZz7ll4XmjqLlip/og708L3N0cm9uZz7kvb/nlKjvvIzkvZPpqozmm7TkvbPjgIIiIDogIiIpICsgJzwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Ik1ZLXZpZGVvLXVybHMiPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Ik1ZLWVkaXQiPjxkaXYgY2xhc3M9Ik1ZLW92ZXJsYXkiPjwvZGl2PjxkaXYgY2xhc3M9Ik1ZLWVkaXQtcGFuZWwiPjxkaXYgY2xhc3M9Ik1ZLWVkaXQtY2xvc2UiPicgKyBJY29uLnggKyAnPC9kaXY+PGRpdiBjbGFzcz0iTVktZWRpdC1oaW50Ij48L2Rpdj48dGV4dGFyZWEgcGxhY2Vob2xkZXI9Iua4heepuuS8muS9v+eUqOm7mOiupOWAvCI+PC90ZXh0YXJlYT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJNWS1pZnJhbWVzIj48L2Rpdj48L21peWluZz4nKSwgCiAgICAkKCIuTVktbW9kZS1zd2l0Y2giKS5vbigiY2xpY2siLCAoZnVuY3Rpb24oKSB7CiAgICAgICQodGhpcykudG9nZ2xlQ2xhc3MoImlzLWRhcmsiKSwgJCgiLk1ZIikudG9nZ2xlQ2xhc3MoIk1ZLWRhcmstdGhlbWUiKSwgaXNEYXJrTW9kZSA9ICFpc0RhcmtNb2RlLCAKICAgICAgU3RvcmUuc2V0KCJpc0RhcmtNb2RlIiwgaXNEYXJrTW9kZSk7CiAgICB9KSksICQoIi5NWS1zZXR0aW5ncyAuTVktaXRlbSIpLm9uKCJjbGljayIsIChmdW5jdGlvbigpIHsKICAgICAgJCh0aGlzKS50b2dnbGVDbGFzcygiaXMtYWN0aXZlIiksIHVwZGF0ZVNldHRpbmdzKCQodGhpcykuYXR0cigia2V5IiksICQodGhpcykuaGFzQ2xhc3MoImlzLWFjdGl2ZSIpKTsKICAgIH0pKSwgJCgiLk1ZLWVkaXQgdGV4dGFyZWEiKS5vZmYoImlucHV0Iikub24oImlucHV0IiwgKGZ1bmN0aW9uKCkgewogICAgICBjb25zdCBlID0gJCh0aGlzKS5hdHRyKCJrZXkiKSwgdCA9ICQodGhpcykuZ2V0KDApLnZhbHVlOwogICAgICBlZGl0RGF0YVtlXSA9IHQsIEdsb2JhbFN0b3JlLnNldChlLCB0KTsKICAgIH0pKSwgJCgiLk1ZLWVkaXQtY2xvc2UsIC5NWS1lZGl0IC5NWS1vdmVybGF5Iikub24oImNsaWNrIiwgKGZ1bmN0aW9uKCkgewogICAgICAkKCIuTVktZWRpdCIpLnJlbW92ZUNsYXNzKCJpcy1hY3RpdmUiKTsKICAgIH0pKTsKICAgIGNvbnN0IGYgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuTVktZmFiIik7CiAgICBsZXQgbSwgdSwgaCA9ICExLCBiID0gITEsIGcgPSBEYXRlLm5vdygpOwogICAgZi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgaSksIGYuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgaSksIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCBuKSwgCiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgbiksIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIGEpLCAKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgYSksICQoIi5NWSIpLmNsaWNrT3V0c2lkZSgoZnVuY3Rpb24oKSB7CiAgICAgICQoIi5NWSIpLmhhc0NsYXNzKCJpcy1hY3RpdmUiKSAmJiBjbG9zZU1ZKCk7CiAgICB9KSksICQoIi5NWS1jbG9zZSIpLm9uKCJjbGljayIsIGNsb3NlTVkpLCAkKCJib2R5Iikub24oImNsaWNrIiwgY2xvc2VNWSk7CiAgICBsZXQgdiA9IEdsb2JhbFN0b3JlLmdldCgiZGlzcGxheVZpZGVvU2hvcnROYW1lIiwgITApOwogICAgc2V0R2xvYmFsKCJNWV9jbGlja1ZpZGVvVXJsIiwgKGZ1bmN0aW9uKGUsIHQsIGkpIHsKICAgICAgcmV0dXJuIGUucHJldmVudERlZmF1bHQoKSwgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwgJCh0KS5oYXNDbGFzcygiaXMtYWN0aXZlIikgPyAocGF1c2VNWVBsYXkoKSwgCiAgICAgIGlzSGlrZXIgJiYgd2luZG93LmZ5X2JyaWRnZV9hcHAucGxheVZpZGVvID8gd2luZG93LmZ5X2JyaWRnZV9hcHAucGxheVZpZGVvKGkpIDogd2luZG93Lm9wZW4oaSwgIl9ibGFuayIpKSA6ICgkKCIuTVktdmlwLWxpc3QgLk1ZLWJ1dHRvbi5pcy1waXAiKS5yZW1vdmVDbGFzcygiaXMtYWN0aXZlIiksIAogICAgICB2b2lkIHBsYXlWaWRlbyhpKSk7CiAgICB9KSksIHNldEdsb2JhbCgiTVlfY2xpY2tQbGF5bGlzdExhYmVsIiwgKGZ1bmN0aW9uKGUpIHsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpLCBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLCB2ID0gIXYsIFNldFN0YXRlKHsKICAgICAgICBEaXNwbGF5VmlkZW9TaG9ydE5hbWU6IHYKICAgICAgfSksIEdsb2JhbFN0b3JlLnNldCgiZGlzcGxheVZpZGVvU2hvcnROYW1lIiwgdik7CiAgICB9KSksIHNldEdsb2JhbCgiTVlfY2xpY2tOZXdUYWJQbGF5IiwgKGZ1bmN0aW9uKCkgewogICAgICB3aW5kb3cub3BlbigkKCIuTVktcGxheS1saXN0IC5NWS1idXR0b24uaXMtYWN0aXZlIikuYXR0cigiX2hyZWYiKSwgIl9ibGFuayIpOwogICAgfSkpLCBSKEgoKGZ1bmN0aW9uKGUsIHQsIGksIG4pIHsKICAgICAgU3luY1N0YXRlKHQsIGkpLCBuLnIgPSAxOwogICAgICBjb25zdCB7dmlkZW9VcmxzOiBhLCBjdXJyZW50VmlkZW9Vcmw6IG8sIERpc3BsYXlWaWRlb1Nob3J0TmFtZTogciA9ICEwfSA9IHQ7CiAgICAgIHJldHVybiBhICYmIDAgPCBhLmxlbmd0aCA/IEgoImRpdiIsIHsKICAgICAgICBjbGFzc05hbWU6ICJNWS1saXN0LWJveCIsCiAgICAgICAgaW5uZXJIVE1MOiAnPGRpdiBjbGFzcz0iTVktcGxheS1mYWlsLXRleHQiPjxzdHJvbmc+5pKt5pS+5aSx6LSl77yBPC9zdHJvbmc+6K+l57q/6Lev5Y+v6IO95peg5rOV5Zyo5b2T5YmN6aG16Z2i5pKt5pS+77yM5Y+v5Lul5YaN5qyh54K55Ye76K+l57q/6Lev77yM5ZyoPGEgb25jbGljaz0iTVlfY2xpY2tOZXdUYWJQbGF5KCkiPuaWsOeql+WPo+aJk+W8gDwvYT7mkq3mlL7miJbkuIvovb08L2Rpdj48ZGl2IGNsYXNzPSJNWS1wbGF5LWxpc3QgTVktYnV0dG9ucyBNWS1zY3JvbGxiYXInICsgKHIgPyAiIGlzLXNob3J0IiA6ICIiKSArICciPjxzcGFuIGNsYXNzPSJNWS1sYWJlbCIgb25jbGljaz0iTVlfY2xpY2tQbGF5bGlzdExhYmVsKGV2ZW50KSI+57q/6LevPC9zcGFuPicgKyBhLm1hcCgoZnVuY3Rpb24oZSwgdCkgewogICAgICAgICAgcmV0dXJuICc8c3BhbiBjbGFzcz0iTVktYnV0dG9uIGlzLScgKyBnZXRWaWRlb1R5cGUoZSkgKyAobyA9PT0gZSA/ICIgaXMtYWN0aXZlIiA6ICIiKSArICciIF9ocmVmPSInICsgZSArICciIG9uY2xpY2s9Ik1ZX2NsaWNrVmlkZW9VcmwoZXZlbnQsIHRoaXMsIFwnJyArIGUgKyAiJylcIj4iICsgZ2V0VmlkZW9TaG9ydE5hbWUoZSwgdCwgcikgKyAiPC9zcGFuPiI7CiAgICAgICAgfSkpLmpvaW4oIiIpICsgJzxzcGFuIGNsYXNzPSJNWS1wYWRkaW5nIj48L3NwYW4+PC9kaXY+JwogICAgICB9KSA6ICIiOwogICAgfSkpLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuTVktdmlkZW8tdXJscyIpKTsKICAgIGxldCB5ID0gMCwgTSA9IGlzTW9iaWxlID8gMjAwIDogMjUwOwogICAgY29uc3QgeCA9IHRocm90dGxlKChmdW5jdGlvbigpIHsKICAgICAgY29uc3QgZSA9IHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wOwogICAgICBsZXQgdCA9ICIiOwogICAgICBlIDwgTSB8fCAodCA9IGUgPiB5ID8gImRvd24iIDogInVwIiksIHkgPSAwID49IGUgPyAwIDogZSwgJCgiLk1ZIikuYXR0cigiZGF0YS1zY3JvbGwiLCB0KTsKICAgIH0pKTsKICAgIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgeCwgewogICAgICAgIHBhc3NpdmU6ICEwCiAgICAgIH0pOwogICAgfSksIDJlMyksICQoIi5NWSIpLmFkZENsYXNzKChpc01vYmlsZSA/ICJNWS1tIiA6ICJNWS1wYyIpICsgKF9EID8gIiBNWS1kZWJ1ZyIgOiAiIikpLCAKICAgIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICAkKCIuTVkiKS5hZGRDbGFzcygiaXMtbG9hZGVkIik7CiAgICB9KSwgMWUzKSwgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZnVsbHNjcmVlbmNoYW5nZSIsIChmdW5jdGlvbigpIHsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLk1ZIC5NWS1wbGF5ZXIiKSB8fCAoZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnQgPyAkKCIuTVkiKS5hZGRDbGFzcygiTVktaGlkZSIpIDogJCgiLk1ZIikucmVtb3ZlQ2xhc3MoIk1ZLWhpZGUiKSk7CiAgICB9KSk7CiAgfQogIGZ1bmN0aW9uIGdldFVybE5hbWUoZSkgewogICAgcmV0dXJuIGUubWF0Y2goL1wvXC8oLitcLik/KFteXC9dKylcLlx3K1wvLylbMl0ucmVwbGFjZSgvXihcdykvLCAoZnVuY3Rpb24oZSkgewogICAgICByZXR1cm4gZS50b1VwcGVyQ2FzZSgpOwogICAgfSkpLnNsaWNlKDAsIDUpOwogIH0KICBmdW5jdGlvbiBwYXJzZVRvVXJscyhlKSB7CiAgICByZXR1cm4gZW5zdXJlQXJyYXkoZSkubWFwKChmdW5jdGlvbihlKSB7CiAgICAgIGxldCB0ID0gZS5zcGxpdCgvXHMrLyk7CiAgICAgIHJldHVybiBlID0gdC5wb3AoKSwgL15odHRwLis9Ly50ZXN0KGUpID8gewogICAgICAgIHVybDogZSwKICAgICAgICBuYW1lOiAwIDwgdC5sZW5ndGggPyB0LmpvaW4oIiAiKSA6IGdldFVybE5hbWUoZSkKICAgICAgfSA6IHt9OwogICAgfSkpLmZpbHRlcigoZnVuY3Rpb24oZSkgewogICAgICByZXR1cm4gZS51cmw7CiAgICB9KSk7CiAgfQogIGZ1bmN0aW9uIGZpeFZpcFVybChlKSB7CiAgICByZXR1cm4gZS5yZXBsYWNlKC9bXD8jXS4rL2csICIiKTsKICB9CiAgZnVuY3Rpb24gc2tpcEFkKGUpIHsKICAgIGxldCB0ID0gITE7CiAgICBpZiAoJCgidmlkZW8gc291cmNlW3NyY10sIHZpZGVvW3NyY10iKS5lYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICJWSURFTyIgIT09IGUudGFnTmFtZSAmJiAoZSA9ICQoZSkucGFyZW50KCkpLCBlLnBhdXNlZCB8fCAodCA9ICEwKTsKICAgIH0pKSwgIXQpIHJldHVybiB2b2lkIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCkgewogICAgICBza2lwQWQoZSk7CiAgICB9KSwgNTAwKTsKICAgIGNvbnN0IGkgPSBlLmFkUGxheWJhY2tSYXRlIHx8IDE2LCBuID0gc2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCkgewogICAgICBzZXR0aW5ncy5za2lwQWQgfHwgY2xlYXJJbnRlcnZhbChuKSwgJCgidmlkZW8gc291cmNlW3NyY10sIHZpZGVvW3NyY10iKS5lYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgIlZJREVPIiAhPT0gZS50YWdOYW1lICYmIChlID0gJChlKS5wYXJlbnQoKSksICFlIHx8IGlzTmFOKGUuZHVyYXRpb24pIHx8IDkwIDwgZS5kdXJhdGlvbiB8fCBlLmN1cnJlbnRUaW1lID4gZS5kdXJhdGlvbiAtIDIgfHwgKGUuY3VycmVudFRpbWUsIAogICAgICAgIGUucGxheWJhY2tSYXRlID0gaSwgZS5wYXVzZWQgJiYgZS5wbGF5KCkpOwogICAgICB9KSksIGUuc2tpcEFkICYmIGUuc2tpcEFkKCk7CiAgICB9KSwgMTAwKTsKICB9CiAgZnVuY3Rpb24gb3BlbkVkaXQoZSwgdCkgewogICAgJCgiLk1ZLWVkaXQiKS5hZGRDbGFzcygiaXMtYWN0aXZlIik7CiAgICBjb25zdCBpID0gJCgiLk1ZLWVkaXQgdGV4dGFyZWEiKTsKICAgIGkuZ2V0KDApLnZhbHVlID0gKGVkaXREYXRhW2VdIHx8ICIiKS50cmltKCksIGkuYXR0cigia2V5IiwgZSksICQoIi5NWS1lZGl0LWhpbnQiKS5odG1sKHQgPyAi5Yi35paw55Sf5pWI77yM5riF56m65oGi5aSN6buY6K6k77yMIiArIHQgOiBkZWZhdWx0SGludCk7CiAgfQogIGZ1bmN0aW9uIGFjdGl2ZVZpcChlKSB7CiAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5NWS12aXAtbGlzdCIpKSB7CiAgICAgIGlmIChhY3RpdmVNaXlpbmcoZSksICFpc01vYmlsZSAmJiBzZXR0aW5ncy5za2lwQWQgJiYgc2tpcEFkKGUpLCBzZXR0aW5ncy5oaWRlV2F0ZXJtYXJrICYmIGUudmlwLndhdGVybWFyayAmJiBhZGRDc3MoZS52aXAud2F0ZXJtYXJrICsgIiB7ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O3Zpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50O3dpZHRoOiAwICFpbXBvcnRhbnQ7aGVpZ2h0OiAwICFpbXBvcnRhbnQ7bWF4LXdpZHRoOiAwICFpbXBvcnRhbnQ7bWF4LWhlaWdodDogMCAhaW1wb3J0YW50O292ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtsZWZ0OiAtOTk5OTlweCAhaW1wb3J0YW50O29wYWNpdHk6IDAgIWltcG9ydGFudDtwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O30iKSwgCiAgICAgICQoIi5NWS1mYWIiKS5hZGRDbGFzcygiaGFzLXZpcCIpLCAhaXNBbGxvd0lmcmFtZVNuaWZmKSB7CiAgICAgICAgY29uc3QgZSA9IGFkZElmcmFtZShTbmlmZkNoZWNrVXJsKTsKICAgICAgICBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgIHJlbW92ZUlmcmFtZShlKTsKICAgICAgICB9KSwgNWUzKTsKICAgICAgfQogICAgICBsZXQgdCA9IChHbG9iYWxTdG9yZS5nZXQoIlZpcFVybHMiKSB8fCAiIikudHJpbSgpIHx8IFZfVTsKICAgICAgdmlwVXJscyA9IHQsIGVkaXREYXRhLlZpcFVybHMgPSB0LCB2aXBVcmxzID0gcGFyc2VUb1VybHModmlwVXJscyksIEFyci5jaHVua3MoRF9WX1UucmVwbGFjZSgvPVxzLisvZywgIj0iKS50cmltKCkuc3BsaXQoLyx8XG4vKSwgNykuZm9yRWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgIEFyci5zaHVmZmxlKGUpLmZvckVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgIGNvbnN0IHQgPSBfRCA/IGUgOiBNX1ZpcFVybChlKTsKICAgICAgICAgIHNuaWZmVmlwVXJscy5wdXNoKHsKICAgICAgICAgICAgdXJsOiB0LAogICAgICAgICAgICBfdXJsOiBzbmlmZlZpcFVybHMubGVuZ3RoLAogICAgICAgICAgICBuYW1lOiBnZXRVcmxOYW1lKHQpCiAgICAgICAgICB9KTsKICAgICAgICB9KSk7CiAgICAgIH0pKSwgdmlwVXJscyA9IHZpcFVybHMuY29uY2F0KHNuaWZmVmlwVXJscyksICQoIi5NWS1wYW5lbCIpLmFwcGVuZCgnPGRpdiBjbGFzcz0iTVktdmlwLWxpc3QgTVktYnV0dG9ucyBNWS1zY3JvbGxiYXInICsgKGlzQWxsb3dTbmlmZiA/ICIgaXMtYWxsb3ctc25pZmYiIDogIiIpICsgJyI+PHNwYW4gY2xhc3M9Ik1ZLWJnLXByb2dyZXNzIj48L3NwYW4+PHNwYW4gY2xhc3M9Ik1ZLWxhYmVsIj7op6PmnpA8L3NwYW4+PHNwYW4gY2xhc3M9Ik1ZLWJ1dHRvbiBNWS12aXAtc25pZmYiPjxzcGFuIGNsYXNzPSJNWS1zbmlmZmluZy10ZXh0Ij7lgZw8L3NwYW4+JyArIEljb24udmlwICsgJzxpIGNsYXNzPSJNWS1idWJibGUgTVktYjEiPjwvaT48aSBjbGFzcz0iTVktYnViYmxlIE1ZLWIyIj48L2k+PGkgY2xhc3M9Ik1ZLWJ1YmJsZSBNWS1iMyI+PC9pPjwvc3Bhbj4nICsgdmlwVXJscy5tYXAoKGZ1bmN0aW9uKGUpIHsKICAgICAgICByZXR1cm4gJzxzcGFuIGNsYXNzPSJNWS1idXR0b24gJyArIChlLnVybC5zdGFydHNXaXRoKCJodHRwcyIpID8gImlzLXBpcCIgOiAiaXMtcG9wIikgKyAnIiBfaHJlZj0iJyArIChlLl91cmwgfHwgZS51cmwpICsgJyI+JyArIGUubmFtZSArICI8L3NwYW4+IjsKICAgICAgfSkpLmpvaW4oIlxuIikgKyAnPHNwYW4gY2xhc3M9Ik1ZLXBhZGRpbmciPjwvc3Bhbj48L2Rpdj4nKSwgJCgiLk1ZLWZ1bGxzY3JlZW4iKS5vbigiY2xpY2siLCAoZnVuY3Rpb24oKSB7CiAgICAgICAgJCgiLk1ZIikudG9nZ2xlQ2xhc3MoIk1ZLXRpbnkiKSwgaXNUaW55TW9kZSA9ICFpc1RpbnlNb2RlLCBTdG9yZS5zZXQoImlzVGlueU1vZGUiLCBpc1RpbnlNb2RlKTsKICAgICAgfSkpLCAkKCIuTVktdmlwLWxpc3QgLk1ZLWJ1dHRvbiIpLm9uKCJjbGljayIsIChmdW5jdGlvbigpIHsKICAgICAgICBjb25zdCB0ID0gJCh0aGlzKS5oYXNDbGFzcygiaXMtYWN0aXZlIik7CiAgICAgICAgaWYgKCQoIi5NWS12aXAtbGlzdCAuTVktYnV0dG9uLmlzLXBpcCIpLnJlbW92ZUNsYXNzKCJpcy1hY3RpdmUiKSwgJCh0aGlzKS5oYXNDbGFzcygiTVktdmlwLXNuaWZmIikpIHJldHVybiAkKHRoaXMpLmhhc0NsYXNzKCJpcy1zbmlmZmluZyIpID8gc25pZmZEb25lKCkgOiBzbmlmZigpOwogICAgICAgIFNldFN0YXRlKHsKICAgICAgICAgIGN1cnJlbnRWaWRlb1VybDogbnVsbAogICAgICAgIH0pLCBwbGF5aW5nVmlkZW9VcmwgPSBudWxsOwogICAgICAgIGxldCBpID0gJCh0aGlzKS5hdHRyKCJfaHJlZiIpLCBuID0gITE7CiAgICAgICAgcmV0dXJuIGkuaW5jbHVkZXMoImh0dHAiKSB8fCAoaSA9IHNuaWZmVmlwVXJsc1tpXS51cmwsIG4gPSAhMCksICF0IHx8ICFfRCAmJiBuID8gKCQodGhpcykuaGFzQ2xhc3MoImlzLXBvcCIpID8gJCgiLk1ZLXZpcC1saXN0IC5NWS1idXR0b24uaXMtcG9wIikucmVtb3ZlQ2xhc3MoImlzLWFjdGl2ZSIpIDogJCgiLk1ZLXZpcC1saXN0IC5NWS1idXR0b24iKS5yZW1vdmVDbGFzcygiaXMtYWN0aXZlIiksIAogICAgICAgICQodGhpcykuYWRkQ2xhc3MoImlzLWFjdGl2ZSIpLCB2b2lkIHBsYXlWaXBVcmwoaSwgZSkpIDogKHBhdXNlTVlQbGF5KCksICQoIi5NWS1wbGF5ZXIiKS5lbXB0eSgpLCAKICAgICAgICB3aW5kb3cub3BlbihpICsgZ2V0VGFyZ2V0VXJsKCksICJfYmxhbmsiKSk7CiAgICAgIH0pKSwgJCgiLk1ZLXZpcC1saXN0IC5NWS1sYWJlbCIpLm9uKCJjbGljayIsIChmdW5jdGlvbigpIHsKICAgICAgICBvcGVuRWRpdCgiVmlwVXJscyIsICLljp/nvZHpobXop6PmnpDlj6rmlK/mjIEgaHR0cHMg6Kej5p6QIik7CiAgICAgIH0pKTsKICAgIH0KICB9CiAgZnVuY3Rpb24gaW5zZXJ0U2VhcmNoKGUsIHQpIHsKICAgIGlmICghZSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuTVktc2VhcmNoIikpIHJldHVybjsKICAgIGFjdGl2ZU1peWluZyh0KTsKICAgIGxldCBpID0gKEdsb2JhbFN0b3JlLmdldCgiU2VhcmNoVXJscyIpIHx8ICIiKS50cmltKCkgfHwgU0VBUkNIX1VSTFM7CiAgICBlZGl0RGF0YS5TZWFyY2hVcmxzID0gaSwgSXNOb3QoL2RvdWJhblwuY29tLykgJiYgKGkgPSAi6KeF5b2xICBodHRwczovL21vdmllLmRvdWJhbi5jb20vdGFnL1xuXG4iICsgaSksIAogICAgaSA9IGVuc3VyZUFycmF5KGkpLm1hcCgoZnVuY3Rpb24oZSkgewogICAgICBjb25zdCB7dXJsOiB0LCBuYW1lOiBpfSA9IHBhcnNlVXJsKGUpLCBuID0gSXMoaXNBbmltZVNpdGVSZWdleCwgdCksIGEgPSBJcyhpc1ZpcFNpdGVSZWdleCwgdCk7CiAgICAgIHJldHVybiB7CiAgICAgICAgdXJsOiB0LAogICAgICAgIG5hbWU6IGksCiAgICAgICAgd2VpZ2h0OiAvZG91YmFuLmNvbS8udGVzdCh0KSA/IDEwIDogKElzKC9iaWxpYmlsaS5jb20vKSB8fCBJcyhpc0FuaW1lU2l0ZVJlZ2V4KSkgJiYgbiA/IDUgOiAoSXMoaXNWaXBTaXRlUmVnZXgpIHx8IElzKC9kb3ViYW4uY29tLykpICYmIGEgPyAzIDogbiA/IDEgOiBhID8gMCA6IDIKICAgICAgfTsKICAgIH0pKSwgaS5zb3J0KChmdW5jdGlvbihlLCB0KSB7CiAgICAgIHJldHVybiB0LndlaWdodCAtIGUud2VpZ2h0OwogICAgfSkpLCAkKCIuTVktcGFuZWwiKS5hcHBlbmQoJzxkaXYgY2xhc3M9Ik1ZLXNlYXJjaCBNWS1idXR0b25zIE1ZLXNjcm9sbGJhciI+PHNwYW4gY2xhc3M9Ik1ZLWxhYmVsIj7mkJzntKI8L3NwYW4+JyArIGZ1bmN0aW9uKCkgewogICAgICBjb25zdCBlID0gSHJlZi5tYXRjaCgvXC9cLy4qPyhcdyspXC5cdytcLy8pWzFdOwogICAgICByZXR1cm4gaS5tYXAoKGZ1bmN0aW9uKHQpIHsKICAgICAgICBjb25zdCBpID0gaXNWaXBTaXRlUmVnZXgudGVzdCh0LnVybCkgPyAiaXMtdmlwIiA6IGlzQW5pbWVTaXRlUmVnZXgudGVzdCh0LnVybCkgPyAiaXMtYW5pbWUiIDogIiIsIG4gPSB0LnVybC5tYXRjaCgvXC9cLy4qPyhcdyspXC5cdytcLy8pWzFdOwogICAgICAgIHJldHVybiB0LnVybC5pbmNsdWRlcyhlKSB8fCBIcmVmLmluY2x1ZGVzKG4pID8gJzxzcGFuIGNsYXNzPSJNWS1zdGF0dXMtYmVhdCI+PC9zcGFuPicgOiAnPHNwYW4gY2xhc3M9Ik1ZLWJ1dHRvbiAnICsgaSArICciICcgKyAoX0QgPyAnZGF0YS13ZWlnaHQ9IicgKyB0LndlaWdodCArICciICcgOiAiIikgKyAnX2hyZWY9IicgKyB0LnVybCArICciPicgKyB0Lm5hbWUgKyAiPC9zcGFuPiI7CiAgICAgIH0pKS5qb2luKCJcbiIpOwogICAgfSgpICsgJzxzcGFuIGNsYXNzPSJNWS1wYWRkaW5nIj48L3NwYW4+PC9kaXY+JyksICQoIi5NWS1kZXRhaWwiKS5hcHBlbmQoJzxpPjwvaT48c3BhbiBjbGFzcz0iTVktdGl0bGUiPicgKyBlICsgIjwvc3Bhbj4iKSwgCiAgICAkKCIuTVktc2VhcmNoIC5NWS1idXR0b24iKS5vbigiY2xpY2siLCAoZnVuY3Rpb24oKSB7CiAgICAgIGxldCB0ID0gJCh0aGlzKS5hdHRyKCJfaHJlZiIpLnJlcGxhY2UoIioqIiwgZSk7CiAgICAgIHdpbmRvdy5vcGVuKHQsICJfYmxhbmsiKTsKICAgIH0pKSwgJCgiLk1ZLXNlYXJjaCAuTVktbGFiZWwiKS5vbigiY2xpY2siLCAoZnVuY3Rpb24oKSB7CiAgICAgIG9wZW5FZGl0KCJTZWFyY2hVcmxzIiwgIioqIOihqOekuuaQnOe0ouivjSIpOwogICAgfSkpLCAkKCJ0aXRsZSIpLmh0bWwoZSk7CiAgfQogIGZ1bmN0aW9uIGFjdGl2ZVNlYXJjaChlKSB7CiAgICBsZXQgdCA9IGdldEtleXdvcmRGcm9tVXJsKGUuc2VhcmNoKTsKICAgIGNvbnN0IGkgPSBlLnNlYXJjaDsKICAgICQkKChmdW5jdGlvbigpIHsKICAgICAgaWYgKCF0KSBpZiAoInN0cmluZyIgPT0gdHlwZW9mIGkpICQoaSkuZWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgIHQgPSAkKGUpLnRleHQoKSB8fCB0OwogICAgICB9KSk7IGVsc2UgaWYgKGkgaW5zdGFuY2VvZiBGdW5jdGlvbikgdCA9IGkoKTsgZWxzZSB7CiAgICAgICAgY29uc3QgZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImgxLnRpdGxlIikgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaDEiKTsKICAgICAgICBlICYmICh0ID0gZS50ZXh0Q29udGVudCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHQgPSBwdXJpZnlLZXl3b3JkKHQpLCB0OwogICAgfSksIChmdW5jdGlvbigpIHsKICAgICAgaW5zZXJ0U2VhcmNoKHQsIGUpOwogICAgfSkpOwogIH0KICBmdW5jdGlvbiBmaXhNM3U4UGxheWluZygpIHsKICAgIGZ1bmN0aW9uIGUoZSkgewogICAgICBlLmZyb20gPSBIcmVmLCBlLm9yaWdpbiA9IEhyZWYsIGUudXJsID0gbiwgaXNOb3RUb3AgJiYgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKHt9LCBlLCB7CiAgICAgICAgX2lkOiBNRVNTQUdFX0lELAogICAgICAgIGFjdGlvbjogIk1ZOmxvZyIsCiAgICAgICAgcGFyZW50OiAhMAogICAgICB9KSwgIioiKTsKICAgIH0KICAgIGNvbnN0IHQgPSBEYXRlLm5vdygpOwogICAgbGV0IGksIG47CiAgICBjb25zdCBhID0gc2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCkgewogICAgICBjb25zdCBvID0gRGF0ZS5ub3coKSAtIHQ7CiAgICAgIG4gPSAiIiwgaSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInZpZGVvIHNvdXJjZVtzcmNdLCB2aWRlb1tzcmNdIiksIGkgJiYgKG4gPSBpLnNyYyksIAogICAgICAiVklERU8iICE9PSBpLnRhZ05hbWUgJiYgKGkgPSAkKGkpLnBhcmVudCgpKSwgLyhcLm0zdTh8XC9tM3U4cGxheSlbXlwvXSokLy50ZXN0KG4pID8gKGNsZWFySW50ZXJ2YWwoYSksIAogICAgICBzZXRUaW1lb3V0KChhc3luYyBmdW5jdGlvbigpIHsKICAgICAgICBpZiAoMCA9PT0gaS5yZWFkeVN0YXRlKSB7CiAgICAgICAgICBsZXQgdCA9IGdldEdsb2JhbCgiSGxzIik7CiAgICAgICAgICBpZiAodCB8fCAoYXdhaXQgYWRkSnMoIi9obHMuanMvMC4xMy4yL2hscy5taW4uanMiKSwgdCA9IGdldEdsb2JhbCgiSGxzIikpLCB0LmlzU3VwcG9ydGVkKCkpIHsKICAgICAgICAgICAgaS5wYXVzZSgpOwogICAgICAgICAgICBjb25zdCBhID0gbmV3IHQ7CiAgICAgICAgICAgIGEubG9hZFNvdXJjZShuKSwgYS5hdHRhY2hNZWRpYShpKSwgYS5vbih0LkV2ZW50cy5NQU5JRkVTVF9QQVJTRUQsIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICBpLnBsYXkoKTsKICAgICAgICAgICAgfSkpLCBlKHsKICAgICAgICAgICAgICB0ZXh0OiAi4pyUIEZpeCBtM3U4IHBsYXkiCiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSksIDE1MDApKSA6IG8gPj0gMTVlMyAmJiAoY2xlYXJJbnRlcnZhbChhKSwgZSh7CiAgICAgICAgdGV4dDogIsOXIEZpeCBtM3U4IHBsYXkgZmFpbGVkIgogICAgICB9KSk7CiAgICB9KSwgMTAwKTsKICB9CiAgZnVuY3Rpb24gaXNWYWxpZFZpZGVvVXJsKGUpIHsKICAgIHJldHVybiBpc1ZpZGVvVXJsUmVnZXgudGVzdChlKSAmJiAhaXNJbnZhbGlkU25pZmZVcmxSZWdleC50ZXN0KGUpOwogIH0KICBmdW5jdGlvbiBnZXRTbmlmZlZpZGVvVXJsKGUpIHsKICAgIGlmIChlID0gZGVjb2RlVVJJQ29tcG9uZW50KGUudHJpbSgpKS5yZXBsYWNlKC9eKGh0dHA6KT9cL1wvLywgImh0dHBzOi8vIiksICFzbmlmZlZpZGVvVXJscy5pbmNsdWRlcyhlKSkgaWYgKHNuaWZmVmlkZW9VcmxzLnB1c2goZSksIAogICAgaXNOb3RUb3AgfHwgL15ibG9iOi8udGVzdChlKSkgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZSh7CiAgICAgIHVybDogZS50cmltKCksCiAgICAgIHBhZ2VJbmZvOiBwYWdlSW5mbywKICAgICAgX2lkOiBNRVNTQUdFX0lELAogICAgICBhY3Rpb246ICJNWTpzbmlmZi52aWRlbyIsCiAgICAgIGZyb206IEhyZWYsCiAgICAgIG9yaWdpbjogSHJlZiwKICAgICAgcGFyZW50OiBpc05vdFRvcCwKICAgICAgZHBsYXllcjogZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmRwbGF5ZXIiKS5sZW5ndGgKICAgIH0sICIqIik7IGVsc2UgewogICAgICBpZiAoaXNTbmlmZmluZyAmJiAhZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLk1ZLXBsYXktbGlzdCAuTVktYnV0dG9uLmlzLWFjdGl2ZSwgLk1ZLXZpcC1saXN0IC5NWS1idXR0b24uaXMtcGlwLmlzLWFjdGl2ZSIpKSB7CiAgICAgICAgJCgiLk1ZLXZpcC1saXN0IC5NWS1idXR0b24uaXMtcGlwIikucmVtb3ZlQ2xhc3MoImlzLWFjdGl2ZSIpLCBwbGF5VmlkZW8oZSk7CiAgICAgICAgbGV0IHQsIGkgPSAwLCBuID0gMDsKICAgICAgICBzZXRUaW1lb3V0KChmdW5jdGlvbiBlKCkgewogICAgICAgICAgaWYgKHQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuTVktcGxheS1saXN0IC5NWS1idXR0b24uaXMtYWN0aXZlICsgLk1ZLWJ1dHRvbiIpLCAKICAgICAgICAgICghKDAgPCBuKSB8fCB0KSAmJiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuTVktcGxheS1saXN0IC5NWS1idXR0b24uaXMtYWN0aXZlIikpIHsKICAgICAgICAgICAgaWYgKCQoIi5NWS1wbGF5LWxpc3QgLk1ZLWJ1dHRvbi5pcy1hY3RpdmUiKS5lYWNoKChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoIl9ocmVmIikgIT09IHBsYXlpbmdWaWRlb1VybCAmJiAkKHRoaXMpLnJlbW92ZUNsYXNzKCJpcy1hY3RpdmUiKTsKICAgICAgICAgICAgfSkpLCBwbGF5RmFpbGVkVXJsICE9PSBwbGF5aW5nVmlkZW9VcmwgJiYgcGxheWVyICYmIHBsYXllci5yZWFkeSkgewogICAgICAgICAgICAgIGlmIChpc01vYmlsZSAmJiAwIDwgcGxheWVyLmR1cmF0aW9uIHx8IHBsYXllci5jdXJyZW50VGltZSA+IChpc01vYmlsZSA/IDMgOiAxMCkpIHJldHVybjsKICAgICAgICAgICAgICBpZiAoIWlzU25pZmZpbmcgJiYgIXQgfHwgMCA8IHBsYXllci5jdXJyZW50VGltZSAmJiBpICE9PSBwbGF5ZXIuY3VycmVudFRpbWUpIHJldHVybiBpID0gcGxheWVyLmN1cnJlbnRUaW1lLCAKICAgICAgICAgICAgICB2b2lkIHNldFRpbWVvdXQoZSwgM2UzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpID0gMCwgdCA/IHQuY2xpY2soKSA6IDEgPCB2aWRlb1VybHMubGVuZ3RoICYmICh0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLk1ZLXBsYXktbGlzdCAuTVktYnV0dG9uIiksIAogICAgICAgICAgICB0ICYmIHQuY2xpY2soKSwgbisrKSwgc2V0VGltZW91dChlLCA0NTAwKTsKICAgICAgICAgIH0KICAgICAgICB9KSwgNGUzKTsKICAgICAgfQogICAgICB2aWRlb1VybHMucHVzaChlKSwgU2V0U3RhdGUoewogICAgICAgIHZpZGVvVXJsczogdmlkZW9VcmxzCiAgICAgIH0pOwogICAgfQogIH0KICBmdW5jdGlvbiBtdXRlU25pZmZWaWRlbyhlKSB7CiAgICBlICYmICJWSURFTyIgIT09IGUudGFnTmFtZSAmJiAoZSA9ICQoZSkucGFyZW50KCkpLCBlICYmICgvXmJsb2I6Ly50ZXN0KGUuc3JjKSAmJiAoZS5fX3NyYyA9IGUuc3JjLCAKICAgIGUuc3JjID0gIiIpLCBlLm11dGVkID0gITAsIGUudm9sdW1lID0gMCwgZS5hdXRvcGxheSA9ICExLCBlLnByZWxvYWQgPSAibm9uZSIsIGUucGF1c2UgJiYgZS5wYXVzZSgpLCAKICAgIGUucGxheSA9IGZ1bmN0aW9uKCkge30pOwogIH0KICBmdW5jdGlvbiBzbmlmZlZpZGVvKCkgewogICAgbGV0IGU7CiAgICBpc1NuaWZmSWZyYW1lID8gKGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiZHBsYXllci12b2x1bWUiKSwgbG9jYWxTdG9yYWdlLnNldEl0ZW0oImRwbGF5ZXItdm9sdW1lIiwgMCksIAogICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oIk1ZLmRwbGF5ZXItdm9sdW1lIiwgZSksICQoInZpZGVvIHNvdXJjZVtzcmNdLCB2aWRlb1tzcmNdIikuZWFjaCgoZnVuY3Rpb24oZSkgewogICAgICBtdXRlU25pZmZWaWRlbyhlKTsKICAgIH0pKSkgOiAoZSA9ICtsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiTVkuZHBsYXllci12b2x1bWUiKSwgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oIk1ZLmRwbGF5ZXItdm9sdW1lIiksIAogICAgMCA8IGUgPyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiZHBsYXllci12b2x1bWUiLCBlKSA6IGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJkcGxheWVyLXZvbHVtZSIpKTsKICAgIGNvbnN0IHQgPSBzZXRJbnRlcnZhbCgoZnVuY3Rpb24oKSB7CiAgICAgICQoInZpZGVvIHNvdXJjZVtzcmNdLCB2aWRlb1tzcmNdIikuZWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgIGlzU25pZmZJZnJhbWUgJiYgbXV0ZVNuaWZmVmlkZW8oZSk7CiAgICAgICAgbGV0IGkgPSBlLl9fc3JjIHx8IGUuc3JjOwogICAgICAgIGlmIChpKSB7CiAgICAgICAgICAiVklERU8iICE9PSBlLnRhZ05hbWUgJiYgKGUgPSAkKGUpLnBhcmVudCgpKSwgL15cL1teXC9dLy50ZXN0KGkpICYmIChpID0gbG9jYXRpb24ub3JpZ2luICsgaSk7CiAgICAgICAgICBjb25zdCBuID0gL15ibG9iOi8udGVzdChpKTsKICAgICAgICAgIGlmIChpc1NuaWZmSWZyYW1lKSBlLnNyYyA9ICIiLCBjbGVhckludGVydmFsKHQpLCAkKCJ2aWRlbywgaWZyYW1lIikucmVtb3ZlKCksICQoImJvZHkiKS5odG1sKCIiKTsgZWxzZSBpZiAobiAmJiAoaXNOYU4oZS5kdXJhdGlvbikgfHwgMTgwID4gZS5kdXJhdGlvbikpIHJldHVybjsKICAgICAgICAgIG4gfHwgaXNWYWxpZFZpZGVvVXJsKGkpID8gZ2V0U25pZmZWaWRlb1VybChpKSA6IHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoewogICAgICAgICAgICBwYWdlSW5mbzogcGFnZUluZm8sCiAgICAgICAgICAgIHRleHQ6ICJOT1QgTUFUQ0ggVklERU8gVVJMIiwKICAgICAgICAgICAgX2lkOiBNRVNTQUdFX0lELAogICAgICAgICAgICBhY3Rpb246ICJNWTpsb2ciLAogICAgICAgICAgICBmcm9tOiBsb2NhdGlvbi5ocmVmLAogICAgICAgICAgICBvcmlnaW46IGxvY2F0aW9uLmhyZWYsCiAgICAgICAgICAgIHVybDogaSwKICAgICAgICAgICAgcGFyZW50OiAhMAogICAgICAgICAgfSwgIioiKTsKICAgICAgICB9CiAgICAgIH0pKTsKICAgICAgY29uc3QgZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImlmcmFtZVtzcmNdIik7CiAgICAgIGlmIChlKSB7CiAgICAgICAgY29uc3QgdCA9IGUuc2NyLCBpID0gZGVjb2RlVVJJQ29tcG9uZW50KHQpLm1hdGNoKC89KGh0dHBbXiY9XStcLihtM3U4fG1wNCkpLyk7CiAgICAgICAgKC9kcGxheWVyLy50ZXN0KHQpIHx8IGlzVmlkZW9VcmxSZWdleC50ZXN0KHQpKSAmJiB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHsKICAgICAgICAgIHBhZ2VJbmZvOiBwYWdlSW5mbywKICAgICAgICAgIHRleHQ6ICJpZnJhbWUgcGxheWVyIHVybCIsCiAgICAgICAgICBfaWQ6IE1FU1NBR0VfSUQsCiAgICAgICAgICBhY3Rpb246ICJNWTpsb2ciLAogICAgICAgICAgZnJvbTogbG9jYXRpb24uaHJlZiwKICAgICAgICAgIG9yaWdpbjogbG9jYXRpb24uaHJlZiwKICAgICAgICAgIHVybDogaSA/IGlbMV0gOiB0LAogICAgICAgICAgaXNNYXRjaDogaSAmJiBpc1ZhbGlkVmlkZW9VcmwoaVsxXSksCiAgICAgICAgICBwYXJlbnQ6ICEwCiAgICAgICAgfSwgIioiKSwgaSAmJiBpc1ZhbGlkVmlkZW9VcmwoaVsxXSkgJiYgKCQoImlmcmFtZSIpLnJlbW92ZSgpLCBnZXRTbmlmZlZpZGVvVXJsKGlbMV0pKTsKICAgICAgfQogICAgfSksIDEwMCk7CiAgfQogIGZ1bmN0aW9uIGdldFZpZGVvSW5mbyhlKSB7CiAgICByZXR1cm4gewogICAgICBzcmM6IGUuc3JjLAogICAgICBkdXJhdGlvbjogZS5kdXJhdGlvbiwKICAgICAgcGF1c2VkOiBlLnBhdXNlZCwKICAgICAgY3VycmVudFRpbWU6IGUuY3VycmVudFRpbWUsCiAgICAgIHBsYXliYWNrUmF0ZTogZS5wbGF5YmFja1JhdGUKICAgIH07CiAgfQogIGZ1bmN0aW9uIHVybERldGVjdCgpIHsKICAgIHNldEludGVydmFsKChmdW5jdGlvbigpIHsKICAgICAgIWZ1bmN0aW9uKCkgewogICAgICAgIGlmIChIcmVmICE9PSB3aW5kb3cubG9jYXRpb24uaHJlZikgewogICAgICAgICAgY29uc3QgZSA9IEhyZWY7CiAgICAgICAgICBIcmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWYsIEUuZW1pdCgidXJsLmNoYW5nZSIsIHsKICAgICAgICAgICAgbmV3VXJsOiBIcmVmLAogICAgICAgICAgICBvbGRVcmw6IGUKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfSgpOwogICAgfSksIDI1MCk7CiAgfQogIGZ1bmN0aW9uIFJVTEVTX0dPKCkgewogICAgbGV0IGUgPSAwIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1swXSA/IGFyZ3VtZW50c1swXSA6IFJVTEVTOwogICAgZm9yIChjb25zdCB0IG9mIGUpIGlmIChJcyh0Lm1hdGNoKSkgewogICAgICBpZiAoITEgPT09IHQuZW5hYmxlKSBicmVhazsKICAgICAgbGV0IGUgPSAiIjsKICAgICAgaWYgKHQuaGlkZSAmJiAoZSArPSAiXG4iICsgdC5oaWRlICsgIiB7ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O3Zpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50O3dpZHRoOiAwICFpbXBvcnRhbnQ7aGVpZ2h0OiAwICFpbXBvcnRhbnQ7bWF4LXdpZHRoOiAwICFpbXBvcnRhbnQ7bWF4LWhlaWdodDogMCAhaW1wb3J0YW50O292ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtsZWZ0OiAtOTk5OTlweCAhaW1wb3J0YW50O29wYWNpdHk6IDAgIWltcG9ydGFudDtwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O30iKSwgCiAgICAgIHQuY3NzICYmIChlICs9IHQuY3NzKSwgYWRkQ3NzKGUpLCB0Ll9qcyBpbnN0YW5jZW9mIEZ1bmN0aW9uICYmIHQuX2pzKCksIHQuanMgaW5zdGFuY2VvZiBGdW5jdGlvbiAmJiAkKChmdW5jdGlvbigpIHsKICAgICAgICB0LmpzKCk7CiAgICAgIH0pKSwgdC5ydWxlcyAmJiBSVUxFU19HTyh0LnJ1bGVzLCAhMSksIHQucmVzdWx0KSB7CiAgICAgICAgY29uc3QgZSA9ICJzdHJpbmciID09IHR5cGVvZiB0LnJlc3VsdCA/IHsKICAgICAgICAgIHRpdGxlOiB0LnJlc3VsdCwKICAgICAgICAgIHVybDogdC5yZXN1bHQKICAgICAgICB9IDogdC5yZXN1bHQ7CiAgICAgICAgaWYgKDEgPT09ICQoZS50aXRsZSkubGVuZ3RoKSB7CiAgICAgICAgICBjb25zdCB0ID0gJChlLnRpdGxlKS50ZXh0KCk7CiAgICAgICAgICBpZiAoIS/nrKwuezEsM31b5a2j6ZuG6K+d6YOoXS4qJC8udGVzdCh0KSkgewogICAgICAgICAgICBjb25zdCB0ID0gJChlLnVybCkuZXEoMCkuYXR0cigiaHJlZiIpOwogICAgICAgICAgICB0ICYmIChsb2NhdGlvbi5ocmVmID0gdCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgICQoKGZ1bmN0aW9uKCkgewogICAgICAgIHQudmlwICYmIGFjdGl2ZVZpcCh0KSwgdC5zZWFyY2ggJiYgYWN0aXZlU2VhcmNoKHQpLCBpc1VybERldGVjdCB8fCAoaXNVcmxEZXRlY3QgPSAhMCwgCiAgICAgICAgdXJsRGV0ZWN0KCkpOwogICAgICB9KSk7CiAgICB9CiAgfQogIGNvbnN0IFZFUlNJT04gPSAiMjAuMjAuZmluYWwiLCBOQU1FID0gIuinheW9sSI7CiAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIm1peWluZyIpKSByZXR1cm47CiAgY29uc3QgX0QgPSAhMSwgaGFzVW5zYWZlV2luZG93ID0gInVuZGVmaW5lZCIgIT0gdHlwZW9mIHVuc2FmZVdpbmRvdywgaXNHTSA9ICJ1bmRlZmluZWQiICE9IHR5cGVvZiBHTSAmJiBoYXNVbnNhZmVXaW5kb3csIGlzVG9wID0gd2luZG93LnRvcCA9PT0gd2luZG93LnNlbGYsIGlzTm90VG9wID0gIWlzVG9wLCBzY3JlZW5XaWR0aCA9IHdpbmRvdy5zY3JlZW4ud2lkdGg7CiAgbGV0IEhyZWYgPSBsb2NhdGlvbi5ocmVmOwogIGNvbnN0IGlzTW9iaWxlID0gNjAwID49IHNjcmVlbldpZHRoIHx8IC9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSB8fCAhMSwgTUFYX1pfSU5ERVggPSAyMTQ3NDgzNjQ3OwogIGlmIChpc1RvcCAmJiBJcygvdndlY2FtLnRjLnFxLmNvbXxcLnRpdGFuLm1ndHYuY29tLykgJiYgIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInZpZGVvIikpIHJldHVybiB2b2lkIChJc05vdCgvbWl5aW5nLykgJiYgKGxvY2F0aW9uLmhyZWYgPSBIcmVmICsgKEhyZWYuaW5jbHVkZXMoIj8iKSA/ICImIiA6ICI/IikgKyAibWl5aW5nPSIgKyAobmV3IERhdGUpLmdldEZ1bGxZZWFyKCkpKTsKICBjb25zdCBSVUxFUyA9IFsgewogICAgbmFtZTogIuixhueToyIsCiAgICBtYXRjaDogIm1vdmllLmRvdWJhbi5jb20iLAogICAgcnVsZXM6IFsgewogICAgICBuYW1lOiAi6K+m5oOFIiwKICAgICAgbWF0Y2g6ICIvc3ViamVjdC8iLAogICAgICBzZWFyY2g6ICJ0aXRsZSIKICAgIH0gXQogIH0sIHsKICAgIG5hbWU6ICLosYbnk6PCt+enu+WKqOerryIsCiAgICBtYXRjaDogIm0uZG91YmFuLmNvbSIsCiAgICBydWxlczogWyB7CiAgICAgIG5hbWU6ICLor6bmg4UiLAogICAgICBtYXRjaDogIi9tb3ZpZS9zdWJqZWN0LyIsCiAgICAgIHNlYXJjaDogIi5zdWItdGl0bGUiCiAgICB9IF0sCiAgICBoaWRlOiAiLnNjb3JlLXdyaXRlLCBhW2hyZWYqPSd0b19hcHAnXTpub3QoLnN1Yi1ob25vcik6bm90KC5zdWItY292ZXIpLCBhW2hyZWYqPSdkb3ViYW5hcHAnXSwgZGl2W2lkKj0nQkFJRFUnXSwgZGl2W2lkKj0nZ29vZ2xlJ10sIHNlY3Rpb24gKyAuY2VudGVyLCAuYm90dG9tX2FkX2Rvd25sb2FkLCAuc3ViLXZlbmRvciwgLnRvX3BjLCAuc3ViLWRldGFpbCAubWFyay1tb3ZpZSwgLnN1Yi1kZXRhaWwgLm1hcmstdHYsIC5zdWJqZWN0LWJhbm5lciwgLmJvdHRvbV9hZF9kb3dubG9hZCwgLmNvdmVyLWNvdW50LCAjZ29vZ2xlX2VzZiwgLmFkc2J5Z29vZ2xlLCAuQWR2ZXJ0aXNlbWVudCwgLlRhbGlvbk5hdi1wcmltYXJ5IC5uYXYtYnRucy5jYW5jZWwiLAogICAgY3NzOiAiLnBhZ2UgLnN1YmplY3QtaGVhZGVyLXdyYXAgLnN1Yi1ob25vciB7Zm9udC1zaXplOiAxMnB4O30ucGFnZSAuc3ViamVjdC1oZWFkZXItd3JhcCAuc3ViLWhvbm9yIC5pbmZvLXJhbmsge3BhZGRpbmc6IDAgNXB4O21pbi13aWR0aDogYXV0bzt9LnBhZ2UgLnN1YmplY3QtaGVhZGVyLXdyYXAgLnN1Yi1ob25vciAuaW5mby1zY29wZSB7cGFkZGluZzogMCA1cHg7bWluLXdpZHRoOiBhdXRvO30uc3ViamVjdC1pbnRybyB7bWFyZ2luLXRvcDogMTVweDt9IgogIH0sIHsKICAgIG5hbWU6ICLlk5Tlk6nlk5Tlk6kiLAogICAgbWF0Y2g6ICIuYmlsaWJpbGkuY29tIiwKICAgIHJ1bGVzOiBbIHsKICAgICAgbmFtZTogIuaQnOe0oiIsCiAgICAgIG1hdGNoOiAvXC9zZWFyY2h8c2VhcmNoXC4vLAogICAgICBzZWFyY2g6ICEwCiAgICB9LCB7CiAgICAgIG5hbWU6ICLmkq3mlL4iLAogICAgICBtYXRjaDogL1wvYmFuZ3VtaVwvcGxheVwvLywKICAgICAgc2VhcmNoOiAiLm1lZGlhLXRpdGxlLCAuZXAtaW5mby10aXRsZSIKICAgIH0gXSwKICAgIGhpZGU6ICIuaW5kZXhfX29wZW5BcHBCdG5fX3NyYy1jb21tb25Db21wb25lbnQtdG9wQXJlYS0sIC5pbmRleF9fY29udGFpbmVyX19zcmMtY29tbW9uQ29tcG9uZW50LWJvdHRvbU9wZW5BcHAtLCAuYmlsaS1hcHAsIC5yZWNvbS13cmFwcGVyLCAuYi1mb290ZXIsIC5vcGVuLWFwcC1iYXIsIC5vcGVuLWFwcC1mbG9hdCwgLm1vcmUtcmV2aWV3LXdyYXBwZXIsICNiYW5uZXJBZCwgLmJhbm5lci1jYXJkLCAjc2xpZGVfYWQiCiAgfSwgewogICAgbmFtZTogIuiFvuiur+inhumikSIsCiAgICBtYXRjaDogInYucXEuY29tIiwKICAgIHJ1bGVzOiBbIHsKICAgICAgbmFtZTogIuaQnOe0oiIsCiAgICAgIG1hdGNoOiAiL3NlYXJjaCIsCiAgICAgIHNlYXJjaDogITAKICAgIH0sIHsKICAgICAgbmFtZTogIuaSreaUviIsCiAgICAgIG1hdGNoOiAvXC9jb3ZlclwvfFwvcGxheS8sCiAgICAgIHZpcDogewogICAgICAgIHdhdGVybWFyazogIi50eHAtd2F0ZXJtYXJrIiwKICAgICAgICBmaXhVcmwoZSkgewogICAgICAgICAgaWYgKGUuaW5jbHVkZXMoImNpZD0iKSkgewogICAgICAgICAgICBjb25zdCB0ID0gZS5tYXRjaCgvY2lkPShcdyspLylbMV07CiAgICAgICAgICAgIGxldCBpID0gZS5tYXRjaCgvdmlkPShcdyspLyk7CiAgICAgICAgICAgIHJldHVybiBpID0gaSA/ICIvIiArIGlbMV0gOiAiIiwgImh0dHBzOi8vdi5xcS5jb20veC9jb3Zlci8iICsgdCArIGkgKyAiLmh0bWwiOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGUuaW5jbHVkZXMoIi94L2NvdmVyIikgPyBlLnJlcGxhY2UoL1wuaHRtbC4qLywgIi5odG1sIikgOiBlOwogICAgICAgIH0KICAgICAgfSwKICAgICAgc2VhcmNoOiAiLm1vZF92aWRlb19pbmZvIC52aWRlb190aXRsZSwgLl9tYWluX3RpdGxlLCAucGxheWVyX3RpdGxlIiwKICAgICAgc2tpcEFkKCkgewogICAgICAgICQoJ3R4cGRpdltkYXRhLXJvbGU9ImhkLWFkLWFkYXB0ZXItYWRsYXllciJdIHZpZGVvW3NyY10nKS5lYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICAgICBlLm11dGVkID0gITA7CiAgICAgICAgfSkpOwogICAgICB9CiAgICB9IF0sCiAgICBoaWRlOiAnLm1vZF9zb3VyY2UsIC52aWRlb19mdW5jdGlvbiwgLm1vZF9wcm9tb3Rpb24sICN2aXBfcHJpdmlsZWdlLCAjdmlwX2FjdGl2aXR5LCAuVV9iZ19iLCAuYnRuX29wZW5fdiwgLmJ0bl9vcGVuYXBwLCAjdmlwX2hlYWRlciwgLmJ0bl91c2VyX2hkLCAubW9kX3NpZGVzbGlwX3ByaXZpbGVnZXMsIC5tb2RfZ2FtZV9yZWMsIC5tb2Rfc291cmNlLCAubW9kX3Byb21vdGlvbiwgLm1vZF9zaWRlc2xpcF9oLCAuYnRuX29wZW4sIC5idG5fcGF5LCAubW9kX2JveF9sYXN0dmlldywgLm1vZF92aXBfcG9wdXAsIC5tb2RfdmlwX3BvcHVwICsgLm1hc2tfbGF5ZXIsIHR4cGRpdltkYXRhLXJvbGU9ImhkLWFkLWFkYXB0ZXItaW50ZXJhY3RpdmVsYXllciJdLCAubW9kX2FkLCAudHZwX2FwcF9iYXIsIC5tb2RfcmVjb21tZW5kJywKICAgIGNzczogIlxuYm9keSwgI3ZpcF90aXRsZSB7cGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDt9Lm1vZF9lcGlzb2Rlc19udW1iZXJzLmlzLXZpcCAuaXRlbSB7d2lkdGg6IGF1dG87cGFkZGluZzogMCAxZW07fS5VX2h0bWxfYmcgLmNvbnRhaW5lciB7cGFkZGluZy1ib3R0b206IDMwcHg7fS5tb2RfcGxheSAubW9kX3BsYXllcl92aXB0aXBzIC5idG5fdHJ5IHtsZWZ0OiAzMCU7fS5tb2RfYm94IC5tb2RfdmlkZW9faW5mbyB7bWFyZ2luLXRvcDogMWVtO30iCiAgfSwgewogICAgbmFtZTogIueIseWlh+iJuiIsCiAgICBtYXRjaDogIi5pcWl5aS5jb20iLAogICAgcnVsZXM6IFsgewogICAgICBuYW1lOiAi5pCc57SiIiwKICAgICAgbWF0Y2g6IC9cL3NlYXJjaHxzb1wuaXFpeWkvLAogICAgICBzZWFyY2g6ICEwCiAgICB9LCB7CiAgICAgIG5hbWU6ICLmkq3mlL4iLAogICAgICBtYXRjaDogIi92XyIsCiAgICAgIHZpcDogewogICAgICAgIHdhdGVybWFyazogIi5pcXAtbG9nby1ib3giLAogICAgICAgIGZpeFVybDogZSA9PiBlLnJlcGxhY2UoL1wuaHRtbC4qLywgIi5odG1sIikucmVwbGFjZSgidHcuIiwgInd3dy4iKQogICAgICB9LAogICAgICBzZWFyY2g6ICIjd2lkZ2V0LXZpZGVvdGl0bGUsIC52aWRlby10aXRsZSwgLmMtdGl0bGUtbGluaywgLnBsYXllci10aXRsZSBhLCAudHctcGxheS10aXRsZSAuZHJhbWEtbmFtZSwgLnR3LXBsYXktdGl0bGUiLAogICAgICBza2lwQWQoKSB7CiAgICAgICAgJCgidmlkZW9bc3JjXSIpLmVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgICAgIDkxID4gZS5kdXJhdGlvbiAmJiAkKCIuc2tpcHBhYmxlLWFmdGVyIikuY2xpY2soKTsKICAgICAgICB9KSk7CiAgICAgIH0KICAgIH0gXSwKICAgIGhpZGU6ICcubS1pcXlEb3duLCAuaGVhZGVyLWxvZ2luICsgZGl2LCAubS12aWRlby1hY3Rpb24sIGRpdltuYW1lPSJtLXZpcFJpZ2h0cyJdLCBkaXZbbmFtZT0ibS1leHRlbmRCYXIiXSwgLm0taXF5bGluay1kaXZlcnNpb24sIC5tLWlxeWxpbmstZ3VpZGUsIC5jLW9wZW5WaXAsIC5jLXNjb3JlLWJ0biwgLm0tdmlkZW9Vc2VyLXNwYWNpbmcsIC5tLXBwLWVudHJhbmNlLCAubS1ob3RXb3Jkcy1ib3R0b20sIGRpdlt0ZW1wbGF0ZS10eXBlPSJBTEJVTSJdIC5tLXBsYXllci10aXAsIC5pcXAtYm94LWludGVncmFsLCAuYnRuLXRpY2tldCwgLmJ0bi15dXl1ZSwgLmJ0bi1kb3dubG9hZCwgLm0taXF5RG93biwgLmlxcC1wbGF5ZXIgZGl2W2FkaWRdLCAuZGV0YWlsLXNkLCAuc2Nyb2xsLWFuY2hvciA+ICo6bm90KDpsYXN0LWNoaWxkKSwgI2lQcm9ncmVzcyB+IGRpdltzdHlsZV0nCiAgfSwgewogICAgbmFtZTogIuS8mOmFtyIsCiAgICBtYXRjaDogInlvdWt1LmNvbSIsCiAgICBydWxlczogWyB7CiAgICAgIG5hbWU6ICLmkJzntKIiLAogICAgICBtYXRjaDogIi9zZWFyY2hfdmlkZW8iLAogICAgICB2aXA6ICEwLAogICAgICBzZWFyY2g6ICEwCiAgICB9LCB7CiAgICAgIG5hbWU6ICLmkq3mlL4iLAogICAgICBtYXRjaDogL1wvdl98XC92aWRlb1wvfGFsaXBheV92aWRlb1wvaWRfLywKICAgICAgdmlwOiB7CiAgICAgICAgZml4VXJsOiAhMCwKICAgICAgICB3YXRlcm1hcms6ICIueW91a3UtbGF5ZXItd3VsaWFvIgogICAgICB9LAogICAgICBzZWFyY2g6ICIucGxheWVyLXRpdGxlIC5zdWJ0aXRsZSBhLCAubW9kdWxlLW5hbWUgaDEsIC5hbnRob2xvZ3ktdGl0bGUtd3JhcCAudGl0bGUsIC50aXRsZS1saW5rIiwKICAgICAgc2tpcEFkKCkgewogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5oNS1leHQtbGF5ZXIgdmlkZW9bc3JjXSIpICYmICgkKCIuaDUtZXh0LWxheWVyIikuZW1wdHkoKSwgCiAgICAgICAgISQoIi5oNXBsYXllci1kYXNoYm9hcmQgLmNvbnRyb2wtcGxheS1pY29uIikuaGFzQ2xhc3MoImNvbnRyb2wtcGF1c2UtaWNvbiIpICYmICQoIi5oNXBsYXllci1kYXNoYm9hcmQgLmNvbnRyb2wtcGxheS1pY29uIikuY2xpY2soKSwgCiAgICAgICAgJCgiLmluZm9ybWF0aW9uLXRpcHMiKS5jc3MoImRpc3BsYXkiLCAibm9uZSIpKTsKICAgICAgfSwKICAgICAganMoKSB7CiAgICAgICAgaXNNb2JpbGUgfHwgJCQoIi5xdWFsaXR5LWRhc2hib2FyZCAueW91a3VfdmlwX3BheV9idG4sIC5xdWFsaXR5LWRhc2hib2FyZCAubG9naW4tY2FudXNlIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgJCgiLnF1YWxpdHktZGFzaGJvYXJkIC55b3VrdV92aXBfcGF5X2J0biwgLnF1YWxpdHktZGFzaGJvYXJkIC5sb2dpbi1jYW51c2UiKS5yZW1vdmVDbGFzcygieW91a3VfdmlwX3BheV9idG4gZGlzYWJsZSBsb2dpbi1jYW51c2UiKSwgCiAgICAgICAgICAkKCIucXVhbGl0eS1pdGVtIikub24oImNsaWNrIiwgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAkKCIuaDVwbGF5ZXItZGFzaGJvYXJkIC5jb250cm9sLXBsYXktaWNvbiIpLmhhc0NsYXNzKCJjb250cm9sLXBhdXNlLWljb24iKSB8fCAkKCIuaDVwbGF5ZXItZGFzaGJvYXJkIC5jb250cm9sLXBsYXktaWNvbiIpLmNsaWNrKCk7CiAgICAgICAgICAgIH0pLCAxNTAwKTsKICAgICAgICAgIH0pKTsKICAgICAgICB9KSk7CiAgICAgIH0KICAgIH0gXSwKICAgIGhpZGU6ICcuaDUtZGV0YWlsLWd1aWRlLCAuaDUtZGV0YWlsLWFkLCAuYnJpZWYtYnRtLCAuc21hcnRCYW5uZXJCdG4sIC5jbXQtdXNlci1hY3Rpb24sICNyaWdodC10aXRsZS1hZC1iYW5uZXIsIC5Db3JuZXItY29udGFpbmVyLCAucXItd3JhcCwgLnF1YWxpdHktaXRlbVtjbGFzcyo9InAiXSAudmlwLWxhYmVsLCAuYXdhcmQtcGFzcywgLmljb25zaG91Y2FuZyB+IGRpdiAubW9kYWwtcG9zaXRpb24tY29udGFpbmVyLCAuanMtdG9wLWljb24nCiAgfSwgewogICAgbmFtZTogIuiKkuaenCIsCiAgICBtYXRjaDogIi5tZ3R2LmNvbSIsCiAgICBydWxlczogWyB7CiAgICAgIG5hbWU6ICLmkJzntKIiLAogICAgICBtYXRjaDogIi9zbyIsCiAgICAgIHNlYXJjaDogL2tbLT1dKFteJlw/XC9cLl0rKS8KICAgIH0sIHsKICAgICAgbmFtZTogIuaSreaUviIsCiAgICAgIG1hdGNoOiAvXC9bYmxdXC8vLAogICAgICB2aXA6IHsKICAgICAgICBmaXhVcmw6ICEwCiAgICAgIH0sCiAgICAgIHNlYXJjaDogIi52LXBhbmVsLXRpdGxlLCAudnQtdHh0LCAubS1wbGF5ZXItb3BlbiAuY29udHJvbC1sZWZ0IC50aXRsZSIsCiAgICAgIHNraXBBZCgpIHsKICAgICAgICAkKCIuYXNfaWNvbi0tdW5tdXRlIikuY2xpY2soKTsKICAgICAgfQogICAgfSBdLAogICAgaGlkZTogIi5hZC1iYW5uZXIsIC52aWRlby1hcmVhLWJhciwgLnZpZGVvLWVycm9yIC5idG4sIC5tLXZpcC1saXN0LCAubS12aXAtbGlzdCArIGRpdjpub3QoW2NsYXNzXSksIC50b2FwcCwgLnZpZGVvLWNvbW1lbnQgLmZ0LCAubWctYXBwLXN3aXAsIG1hbmdvLXBsdWdpbi1hZCwgbWFuZ28tY29udHJvbC10aXAsIC5NWS1wbGF5ZXIgLm0tcGxheWVyLWVycm9yLCAuTVktcGxheWVyIGNvbnRhaW5lciA+ICo6bm90KC5wbHlyKSIKICB9LCB7CiAgICBuYW1lOiAi5pCc54uQIiwKICAgIG1hdGNoOiAvKGZpbG18dHYpXC5zb2h1XC5jb20vLAogICAgcnVsZXM6IFsgewogICAgICBuYW1lOiAi5pCc57SiIiwKICAgICAgbWF0Y2g6IC8oa2V5fHdkKT0vLAogICAgICBzZWFyY2g6ICEwCiAgICB9LCB7CiAgICAgIG5hbWU6ICLmkq3mlL4iLAogICAgICBtYXRjaDogL1wvKHZ8YWxidW1cL3xwaG9uZV9wbGF5X2ZpbG18XGQrXC9uXGQrLnNodG1sKS8sCiAgICAgIHZpcDogewogICAgICAgIGZpeFVybChlKSB7CiAgICAgICAgICBpZiAoL3Bob25lX3BsYXlfZmlsbS4rY2hhbm5lbGVkPS8udGVzdChlKSkgewogICAgICAgICAgICBjb25zdCB0ID0gZS5tYXRjaCgvY2hhbm5lbGVkPShcdyspLylbMV07CiAgICAgICAgICAgIHJldHVybiAiaHR0cHM6Ly9maWxtLnNvaHUuY29tL2FsYnVtLyIgKyBlLm1hdGNoKC9haWQ9KFx3KykvKVsxXSArICIuaHRtbD9jaGFubmVsZWQ9IiArIHQ7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gZTsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIHNlYXJjaDogIiN2aW5mb2JveCBoMiwgLnQtaW5mbywgLm1vdmllLXQgaDMiLAogICAgICBza2lwQWQoKSB7CiAgICAgICAgJCgiLngtdmlkZW8tYWR2IHZpZGVvIikuZWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgICAgZS5tdXRlZCA9ICEwOwogICAgICAgIH0pKTsKICAgICAgfQogICAgfSBdLAogICAgaGlkZTogIi5hY3R2LWJhbm5lciwgLmJ0bi14ei1hcHAsIC50d2luZm9faWNvbndyYXAsIC5idG4tY29tbWVudC1hcHAsICNhZF9iYW5uZXIsIC5hZHZlcnRpc2UsIC5tYWluLWFkLXZpZXctYm94LCAuZm9vdC5zb2h1LXN3aXBlciwgLmFwcC1zdGFyLXZib3gsIC5hcHAtZ3Vlc3MtdmJveCwgLm1haW4tcmVjLXZpZXctYm94LCAuYXBwLXFpYW5mYW4tYm94LCAuY29tbWVudC1lbXB0eS1iZywgLmNvcHlpbmZvLCAucGgtdmJveCwgLmJ0bl9tX2FjdGlvbiwgLmJ0bi14ei1hcHAsICNmaWxtX3RvcF9iYW5uZXIsIC5idG4tY29tbWVudC1hcHAsIC5hZHYsIC54LWFkdi1wYXVzZS1ub25saW5lYXItcGFuZWwiCiAgfSwgewogICAgbmFtZTogIuS5kOinhiIsCiAgICBtYXRjaDogIi5sZS5jb20iLAogICAgcnVsZXM6IFsgewogICAgICBuYW1lOiAi5pCc57SiIiwKICAgICAgbWF0Y2g6IC9cL3NlYXJjaHxzby5sZS5jb21cL3MvLAogICAgICBzZWFyY2g6ICEwCiAgICB9LCB7CiAgICAgIG5hbWU6ICLmkq3mlL4iLAogICAgICBtYXRjaDogL1wvKHB0dlwvdnBsYXlcL3x2cGxheV8pLywKICAgICAgdmlwOiB7CiAgICAgICAgZml4VXJsOiAhMAogICAgICB9LAogICAgICBzZWFyY2g6ICIuYnJpZWZJbnRyb19pbmZvIC5pbmZvX3RpdCwgI2otaW50cm9kdWN0aW9uIGgyIiwKICAgICAgYWRQbGF5YmFja1JhdGU6IDQsCiAgICAgIHNraXBBZCgpIHsKICAgICAgICBjb25zdCBlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3ZpZGVvIHZpZGVvIik7CiAgICAgICAgZSAmJiA5MCA+PSBlLmR1cmF0aW9uID8gZS5tdXRlZCA9ICEwIDogIXdpbmRvdy5fX3NraXBBZCAmJiAoZS5tdXRlZCA9ICExLCB3aW5kb3cuX19za2lwQWQgPSAhMCk7CiAgICAgIH0KICAgIH0gXSwKICAgIGhpZGU6ICIuZ2FtZVByb21vdGlvbiwgLmdhbWVQcm9tb3Rpb25UeHQsICNqLWxlYXBwTW9yZSwgLmxiekRhb2xpdSwgLmFya0JveCIKICB9LCB7CiAgICBuYW1lOiAi5ZKq5ZKVIiwKICAgIG1hdGNoOiAibWlndXZpZGVvLmNvbSIsCiAgICBydWxlczogWyB7CiAgICAgIG5hbWU6ICLmkJzntKIiLAogICAgICBtYXRjaDogInNlYXJjaC5odG1sIiwKICAgICAgc2VhcmNoOiAva2V5d29yZHM9KFteJlw/XC9cLl0rKXxcPy4qIyhbXiZcP1wvXC5dKykvCiAgICB9LCB7CiAgICAgIG5hbWU6ICLmkq3mlL4iLAogICAgICBtYXRjaDogImRldGFpbC5odG1sIiwKICAgICAgdmlwOiAhMCwKICAgICAgc2VhcmNoOiAiLmxlZnQtYm94IC50aXRsZSwgLmVwaXNvZGVUaXRsZSwgLnZpZGVvX3RpdGxlIgogICAgfSBdLAogICAgaGlkZTogJy5ncm91cC1pdGVtW25hbWUqPSLlub/lkYoiXSwgLm9wZW5DbGllbnQnCiAgfSwgewogICAgbmFtZTogIlBQVFYiLAogICAgbWF0Y2g6ICIucHB0di5jb20iLAogICAgcnVsZXM6IFsgewogICAgICBuYW1lOiAi5pCc57SiIiwKICAgICAgbWF0Y2g6IC9zb3UuKyhrd3xrZXl3b3JkKT0vLAogICAgICBzZWFyY2g6ICEwCiAgICB9LCB7CiAgICAgIG5hbWU6ICLmkq3mlL4iLAogICAgICBtYXRjaDogIi9zaG93LyIsCiAgICAgIHZpcDogewogICAgICAgIGZpeFVybDogITAKICAgICAgfSwKICAgICAgc2VhcmNoOiAiI3ZpZGVvLWluZm8gaDEsIC52b2QtdGl0LWluIHNwYW4sIC50aXQiCiAgICB9IF0sCiAgICBoaWRlOiAnLnctdmlkZW8tdmFzdGFkLCAjdmlkZW8tZG93bmxvYWQtZ2FtZSwgZGl2W2NsYXNzKj0ib3BlbmFwcCJdLCBkaXZbY2xhc3MqPSJzaWRlLWFkdiJdLCBkaXZbaWQqPSJhZnBfIl0sIGRpdltpZCo9Ii1hZnAiXSwgaWZyYW1lW3NyYyo9Ii9nYW1lLyJdLCAuYWZwUG9zaXRpb24sIC5kb3dubG9hZC1pY29uYmFyJwogIH0sIHsKICAgIG5hbWU6ICLljY7mlbAiLAogICAgbWF0Y2g6ICJ3YXN1LmNuIiwKICAgIHJ1bGVzOiBbIHsKICAgICAgbmFtZTogIuaQnOe0oiIsCiAgICAgIG1hdGNoOiAvU2VhcmNoXC8uK2s9LywKICAgICAgc2VhcmNoOiAhMAogICAgfSwgewogICAgICBuYW1lOiAi5pKt5pS+IiwKICAgICAgbWF0Y2g6IC9bcFBdbGF5XC9zaG93XC8vLAogICAgICB2aXA6IHsKICAgICAgICBmaXhVcmw6ICEwCiAgICAgIH0sCiAgICAgIHNlYXJjaDogIi5tb3ZpZV90aXRsZSBoMiIKICAgIH0gXSwKICAgIGhpZGU6ICdkaXZbaWQqPSJCQUlEVSJdLCAucGxheWVyX21lbnVfY29uLCBib2R5ID4gZGl2W3N0eWxlKj0iZml4ZWQiXScKICB9LCB7CiAgICBuYW1lOiAiMTkwNSIsCiAgICBtYXRjaDogIjE5MDUuY29tIiwKICAgIHJ1bGVzOiBbIHsKICAgICAgbmFtZTogIuaQnOe0oiIsCiAgICAgIG1hdGNoOiAvXC9zZWFyY2gvaSwKICAgICAgc2VhcmNoOiAhMAogICAgfSwgewogICAgICBuYW1lOiAi5pKt5pS+IiwKICAgICAgbWF0Y2g6ICIvdl8iLAogICAgICB2aXA6IHsKICAgICAgICBmaXhVcmw6ICEwCiAgICAgIH0sCiAgICAgIHNlYXJjaDogIiNtb3ZpZV9pbmZvIC5pbmZvSW5uZXIgLnRpdGxlLCAubW92aWUtdGl0bGUsIC50dl90aXRsZSIKICAgIH0gXSwKICAgIGhpZGU6ICIjYXBwX3N0b3JlLCAub3Blbk1lbWJlcnNoaXBCdG4sIGJvZHkgPiBkaXZbaWRdOm5vdChbY2xhc3NdKSA+IGlmcmFtZSwgLnB2Mi1hZHZlcnRpc2VtZW50LCAub3Blbi1hcHAiCiAgfSwgewogICAgbmFtZTogIjEwODDlvbHop4YiLAogICAgbWF0Y2g6ICJrMTA4MC5uZXQiLAogICAgcnVsZXM6IFsgewogICAgICBuYW1lOiAi5pCc57SiIiwKICAgICAgbWF0Y2g6ICJ3ZD0iLAogICAgICBzZWFyY2g6ICEwLAogICAgICByZXN1bHQ6ICIuZGV0YWlsIC5idG4td2FybSIKICAgIH0sIHsKICAgICAgbmFtZTogIuivpuaDhSIsCiAgICAgIG1hdGNoOiAiL3ZvZGRldGFpbC8iLAogICAgICBzZWFyY2g6ICEwCiAgICB9LCB7CiAgICAgIG5hbWU6ICLmkq3mlL4iLAogICAgICBtYXRjaDogIi92b2RwbGF5IiwKICAgICAgc2VhcmNoOiAiLm15dWktcGxheWVyX19kYXRhIGgzIGEsIC5jb2wtcGQgPiAubXl1aS1wYW5lbF9faGVhZCBoMyIKICAgIH0gXSwKICAgIGhpZGU6ICJib2R5ID4gKjpub3Qoc2NyaXB0KSArIHNjcmlwdCB+ICpbaWRdIgogIH0sIHsKICAgIG5hbWU6ICIxMDkw5b2x6KeGIiwKICAgIG1hdGNoOiAvMTA5MHlzXGQ/LmNvbS8sCiAgICBydWxlczogWyB7CiAgICAgIG5hbWU6ICLmkJzntKIiLAogICAgICBtYXRjaDogImM9c2VhcmNoIiwKICAgICAgc2VhcmNoKCkgewogICAgICAgIGNvbnN0IGUgPSBsb2NhdGlvbi5ocmVmLm1hdGNoKC93ZD0oW14tJl0rKS8pOwogICAgICAgIHJldHVybiBlID8gZVsxXSA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5tb3JlICsgLnRpdGxlIikudGV4dENvbnRlbnQ7CiAgICAgIH0sCiAgICAgIHJlc3VsdDogImgzLnRpdGxlIGEiCiAgICB9LCB7CiAgICAgIG5hbWU6ICLor6bmg4UiLAogICAgICBtYXRjaDogIi9zaG93LyIsCiAgICAgIHNlYXJjaDogIi5zdHVpLWNvbnRlbnRfX2RldGFpbCBoMy50aXRsZSIKICAgIH0sIHsKICAgICAgbmFtZTogIuaSreaUviIsCiAgICAgIG1hdGNoOiAiL3BsYXkiLAogICAgICBzZWFyY2goKSB7CiAgICAgICAgY29uc3QgZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImg0IGZvbnQiKTsKICAgICAgICByZXR1cm4gZSAmJiBlLnRleHRDb250ZW50LnJlcGxhY2UoLy0uKy8sICIiKTsKICAgICAgfQogICAgfSBdLAogICAgaGlkZTogIi5jb250YWluZXIgfiAqW2lkXSwgYm9keSA+IC5jb250YWluZXIgPiBwW3N0eWxlXSwgLnJvdyA+IHBbc3R5bGVdIgogIH0sIHsKICAgIG5hbWU6ICLlroznvo7nnIvnnIsiLAogICAgbWF0Y2g6ICJ3YW5tZWlray5tZSIsCiAgICBydWxlczogWyB7CiAgICAgIG5hbWU6ICLmkJzntKIiLAogICAgICBtYXRjaDogIi9zby8iLAogICAgICBzZWFyY2g6ICEwLAogICAgICByZXN1bHQ6ICJoMy50aXRsZSBhIgogICAgfSwgewogICAgICBuYW1lOiAi6K+m5oOFIiwKICAgICAgbWF0Y2g6ICIvcHJvamVjdCIsCiAgICAgIHNlYXJjaDogKCkgPT4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaDEudGl0bGUiKS5jaGlsZE5vZGVzWzBdLm5vZGVWYWx1ZQogICAgfSwgewogICAgICBuYW1lOiAi5pKt5pS+IiwKICAgICAgbWF0Y2g6ICIvcGxheSIsCiAgICAgIHNlYXJjaDogImgxIGEiCiAgICB9IF0sCiAgICBoaWRlOiAiLmNvbnRhaW5lciB+ICpbaWRdIgogIH0sIHsKICAgIG5hbWU6ICLlnKjnur/kuYvlrrYiLAogICAgbWF0Y2g6ICJ6eHpqLm1lIiwKICAgIHJ1bGVzOiBbIHsKICAgICAgbmFtZTogIuaQnOe0oiIsCiAgICAgIG1hdGNoOiAid2Q9IiwKICAgICAgc2VhcmNoOiAhMCwKICAgICAgcmVzdWx0OiAiLnN0dWktdm9kbGlzdCAudGl0bGUgYSIKICAgIH0sIHsKICAgICAgbmFtZTogIuivpuaDhSIsCiAgICAgIG1hdGNoOiAiL2RldGFpbCIsCiAgICAgIHNlYXJjaDogITAKICAgIH0sIHsKICAgICAgbmFtZTogIuaSreaUviIsCiAgICAgIG1hdGNoOiAiL3ZpZGVvIiwKICAgICAgc2VhcmNoOiAiaDEiCiAgICB9IF0sCiAgICBoaWRlOiAnYm9keSA+IGRpdltjbGFzc149IkFEIl0sIGJvZHkgPiAqOm5vdChzY3JpcHQpICsgc2NyaXB0IH4gKltpZF0nCiAgfSwgewogICAgbmFtZTogIjkx576O5YmnIiwKICAgIG1hdGNoOiAiOTFtancuY29tIiwKICAgIHJ1bGVzOiBbIHsKICAgICAgbmFtZTogIuaQnOe0oiIsCiAgICAgIG1hdGNoOiAicz0iLAogICAgICBzZWFyY2g6IC9zPSguKykvLAogICAgICByZXN1bHQ6IHsKICAgICAgICB0aXRsZTogIi5tLW1vdmllcyAudS1tb3ZpZSBoMiIsCiAgICAgICAgdXJsOiAiLm0tbW92aWVzIC51LW1vdmllIGEiCiAgICAgIH0KICAgIH0sIHsKICAgICAgbmFtZTogIuivpuaDhSIsCiAgICAgIG1hdGNoOiAiL3ZpZGVvIiwKICAgICAgc2VhcmNoOiAoKSA9PiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuYXJ0aWNsZS10aXRsZSBhIikudGV4dENvbnRlbnQubWF0Y2goL+OAiiguKz8p44CLLylbMV0KICAgIH0sIHsKICAgICAgbmFtZTogIuaSreaUviIsCiAgICAgIG1hdGNoOiAiL3ZwbGF5IiwKICAgICAgc2VhcmNoOiAiLnZ0aXRsZSBhIgogICAgfSBdLAogICAgaGlkZTogImJvZHkgPiAqOm5vdChzY3JpcHQpICsgc2NyaXB0IH4gKltpZF0sIGRpdjpub3QoW2lkXSkgPiBpZnJhbWUsIGEgPiBpZnJhbWUsIC5hZHMiCiAgfSwgewogICAgbmFtZTogIuelnumprCIsCiAgICBtYXRjaDogInNoZW5tYTQ0ODAuY29tIiwKICAgIHJ1bGVzOiBbIHsKICAgICAgbmFtZTogIuaQnOe0oiIsCiAgICAgIG1hdGNoOiAiL3NlYXJjaCIsCiAgICAgIHNlYXJjaDogITAsCiAgICAgIHJlc3VsdDogIi5zdHVpLXZvZGxpc3RfX3RpdGxlIGEiCiAgICB9LCB7CiAgICAgIG5hbWU6ICLor6bmg4UiLAogICAgICBtYXRjaDogIi9kZXRhaWwiLAogICAgICBzZWFyY2g6ICEwCiAgICB9LCB7CiAgICAgIG5hbWU6ICLmkq3mlL4iLAogICAgICBtYXRjaDogIi9wbGF5IiwKICAgICAgc2VhcmNoOiAiaDEgYSIKICAgIH0gXQogIH0sIHsKICAgIG5hbWU6ICJUVkIiLAogICAgbWF0Y2g6ICJoa3R2eWIuY29tIiwKICAgIHJ1bGVzOiBbIHsKICAgICAgbmFtZTogIuaQnOe0oiIsCiAgICAgIG1hdGNoOiAiL3NlYXJjaCIsCiAgICAgIHNlYXJjaDogITAsCiAgICAgIHJlc3VsdDogIi5zZWFyY2hrZXkiCiAgICB9LCB7CiAgICAgIG5hbWU6ICLmkq3mlL4iLAogICAgICBtYXRjaDogIi92b2QvcGxheSIsCiAgICAgIHNlYXJjaDogImgzIGEiCiAgICB9IF0sCiAgICBoaWRlOiAiYm9keSA+IGlmcmFtZSwgYm9keSA+IGRpdltzdHlsZV06bm90KFtjbGFzc10pLCBib2R5ID4gZGl2W2lkXTpub3QoW2NsYXNzXSksIC5teXVpLXBhbmVsIH4gZGl2W2lkXSwgLm5hdi1tZW51ID4gLmhpZGRlbi1tZCwgc2NyaXB0ICsgYVtpZF0sIGFbaWRdICsgZGl2W3N0eWxlXTpub3QoW2NsYXNzXSkiCiAgfSwgewogICAgbmFtZTogIumjnuaegemAnyIsCiAgICBtYXRjaDogImZlaWppc3U4LmNvbSIsCiAgICBydWxlczogWyB7CiAgICAgIG5hbWU6ICLmkJzntKIiLAogICAgICBtYXRjaDogIi9zZWFyY2giLAogICAgICBzZWFyY2g6ICEwLAogICAgICByZXN1bHQ6ICIjcmVzdWx0IGgyIGEiCiAgICB9LCB7CiAgICAgIG5hbWU6ICLmkq3mlL4iLAogICAgICBtYXRjaDogL2FjZ1wvXGQrXC9cZCsvLAogICAgICBzZWFyY2g6ICJoMSBhIgogICAgfSBdLAogICAgaGlkZTogIi5pbmRleC10b3AgfiBkaXYsIC52LXRvcCB+IGRpdiwgLmZvb3RlciB+IGRpdiwgLmZvb3RlciB+IGJyZGUsIGJvZHkgPiBkaXY6bm90KFtjbGFzc10pIgogIH0sIHsKICAgIG5hbWU6ICLkuJzmlrnln47liqjmvKsiLAogICAgbWF0Y2g6ICJkZmNkbS5jb20iLAogICAgcnVsZXM6IFsgewogICAgICBuYW1lOiAi5pCc57SiIiwKICAgICAgbWF0Y2g6ICIvc2VhcmNoIiwKICAgICAgc2VhcmNoOiAoKSA9PiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIja2V5X3Jlc3VsdCIpLnRleHRDb250ZW50Lm1hdGNoKC8uKj8iKC4rKSIuKi8pWzFdCiAgICB9LCB7CiAgICAgIG5hbWU6ICLor6bmg4Ur5pKt5pS+IiwKICAgICAgbWF0Y2g6ICIvdHYvIiwKICAgICAgc2VhcmNoOiAoKSA9PiBsb2NhdGlvbi5ocmVmLmluY2x1ZGVzKCIuaHRtbCIpID8gQXJyYXkuZnJvbShkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuaDIgYSIpKS5zbGljZSgtMSlbMF0udGV4dENvbnRlbnQgOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIubmFtZSIpLmNoaWxkTm9kZXNbMF0ubm9kZVZhbHVlCiAgICB9IF0KICB9LCB7CiAgICBuYW1lOiAi55yf5LiN5Y2hIiwKICAgIG1hdGNoOiAiemhlbmJ1a2EuY29tIiwKICAgIHJ1bGVzOiBbIHsKICAgICAgbmFtZTogIuaQnOe0oiIsCiAgICAgIG1hdGNoOiAiL3ZvZHNlYXJjaCIsCiAgICAgIHNlYXJjaCgpIHsKICAgICAgICBjb25zdCBlID0gbG9jYXRpb24uaHJlZi5tYXRjaCgvd2RcLyhbXlwvXSspLyk7CiAgICAgICAgcmV0dXJuIGUgPyBlWzFdIDogZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaDMiKS50ZXh0Q29udGVudDsKICAgICAgfSwKICAgICAgcmVzdWx0OiAiLnN0dWktdm9kbGlzdF9fbWVkaWEgaDMudGl0bGUgYSIKICAgIH0sIHsKICAgICAgbmFtZTogIuivpuaDhSIsCiAgICAgIG1hdGNoOiAiL3ZvZGRldGFpbC8iLAogICAgICBzZWFyY2g6ICEwCiAgICB9LCB7CiAgICAgIG5hbWU6ICLmkq3mlL4iLAogICAgICBtYXRjaDogIi92b2RwbGF5IiwKICAgICAgc2VhcmNoOiAiLmRldGFpbCBoMSIsCiAgICAgIGhpZGU6ICJib2R5ID4gZGl2W2lkXTpub3QoW2NsYXNzXSksIC5zdHVpLXBsYXllcl9faXRlbSB+IGRpdltzdHlsZV0iCiAgICB9IF0sCiAgICBoaWRlOiAiLmNvbnRhaW5lciA+IGEsIGJvZHkgPiBkaXZbc3R5bGVdIgogIH0sIHsKICAgIG5hbWU6ICLnop/lvbEiLAogICAgbWF0Y2g6IC9kdmRoZC5tZXw5NTI3ODAuY29tLywKICAgIHJ1bGVzOiBbIHsKICAgICAgbmFtZTogIuaQnOe0oiIsCiAgICAgIG1hdGNoOiAiL3NlYXJjaCIsCiAgICAgIHNlYXJjaDogITAsCiAgICAgIHJlc3VsdDogewogICAgICAgIHRpdGxlOiAiLm0tbW92aWVzIC51LW1vdmllIGgyIiwKICAgICAgICB1cmw6ICIubS1tb3ZpZXMgLnUtbW92aWUgYSIKICAgICAgfQogICAgfSwgewogICAgICBuYW1lOiAi5pKt5pS+IiwKICAgICAgbWF0Y2g6ICIvdmlkZW8iLAogICAgICBzZWFyY2g6ICIudnRpdGxlIGEiLAogICAgICBoaWRlOiAnYm9keSA+IGJyZGUsIGJvZHkgPiBkaXZbaWRdOm5vdChbY2xhc3NdKSwgYm9keSA+IGEsIC5oZWFkZXIgfiBkaXZbY2xhc3MqPSJhZCJdLCAud2lkZ2V0X2FkcycKICAgIH0gXQogIH0sIHsKICAgIG5hbWU6ICJaenpGdW4iLAogICAgbWF0Y2g6IC93d3cuenp6ZnVuLmNvbS8sCiAgICBydWxlczogWyB7CiAgICAgIG5hbWU6ICLmkJzntKIiLAogICAgICBtYXRjaDogIi92b2Qtc2VhcmNoIiwKICAgICAgc2VhcmNoOiAhMCwKICAgICAgcmVzdWx0OiAiLnNob3ctbGlzdCBoMiBhIgogICAgfSwgewogICAgICBuYW1lOiAi6K+m5oOFIiwKICAgICAgbWF0Y2g6ICIvdm9kLWRldGFpbCIsCiAgICAgIHNlYXJjaDogITAKICAgIH0sIHsKICAgICAgbmFtZTogIuaSreaUviIsCiAgICAgIG1hdGNoOiAiL3ZvZC1wbGF5IiwKICAgICAgc2VhcmNoKCkgewogICAgICAgIGNvbnN0IGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuYnJlYWQtY3J1bWItbmF2LCAubGVvLWJnLWEgaDEiKTsKICAgICAgICByZXR1cm4gZSA/IGUudGV4dENvbnRlbnQucmVwbGFjZSgvLirlvZPliY3mkq3mlL7vvJooLis/KSAtLiovLCAiJDEiKSA6ICIiOwogICAgICB9CiAgICB9IF0sCiAgICBoaWRlOiAiI25hdmJhciArIGRpdltzdHlsZV0iLAogICAganMoKSB7CiAgICAgICQoImlucHV0W29uY2xpY2tdIikuZWFjaCgoZnVuY3Rpb24oKSB7CiAgICAgICAgdGhpcy52YWx1ZS5pbmNsdWRlcygi57un57ut6K6/6ZeuIikgJiYgdGhpcy5jbGljaygpOwogICAgICB9KSk7CiAgICB9CiAgfSwgewogICAgbmFtZTogIui/heaSrSIsCiAgICBtYXRjaDogInhiZG0ub3JnIiwKICAgIHJ1bGVzOiBbIHsKICAgICAgbmFtZTogIuaQnOe0oiIsCiAgICAgIG1hdGNoOiAiL3NlYXJjaCIsCiAgICAgIHNlYXJjaDogITAKICAgIH0sIHsKICAgICAgbmFtZTogIuaSreaUviIsCiAgICAgIG1hdGNoOiAiL3ZpZGVvIiwKICAgICAgc2VhcmNoOiAiLm15dWktcGFuZWxfX2hlYWQgaDMgYSIKICAgIH0gXSwKICAgIGhpZGU6ICJib2R5ID4gZGl2IgogIH0sIHsKICAgIG5hbWU6ICLlk5Tlkqrlk5TlkqoiLAogICAgbWF0Y2g6ICJiaW1pYmltaS5tZSIsCiAgICBydWxlczogWyB7CiAgICAgIG5hbWU6ICLmkJzntKIiLAogICAgICBtYXRjaDogIi9zZWFyY2giLAogICAgICBzZWFyY2goKSB7CiAgICAgICAgY29uc3QgZSA9IGxvY2F0aW9uLmhyZWYubWF0Y2goL3dkXC8oW15cL10rKS8pOwogICAgICAgIHJldHVybiBlID8gZVsxXSA6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5wX3RhYiBzdHJvbmcsIC5sZW8tc2VhcmNoLXdkIikudGV4dENvbnRlbnQ7CiAgICAgIH0sCiAgICAgIHJlc3VsdDogewogICAgICAgIHRpdGxlOiAiLmluZm8gYSwgLmxlby1kZXRhaWwtbWVkaWEgaDEiLAogICAgICAgIHVybDogIi5pbmZvIGEsIC5sZW8tZGV0YWlsLW1lZGlhIC5sZW8tcG8tYWIgYSIKICAgICAgfQogICAgfSwgewogICAgICBuYW1lOiAi6K+m5oOFIiwKICAgICAgbWF0Y2g6ICIvYmkvIiwKICAgICAgc2VhcmNoOiAiaDEiCiAgICB9LCB7CiAgICAgIG5hbWU6ICLmkq3mlL4iLAogICAgICBtYXRjaDogIi9wbGF5LyIsCiAgICAgIHNlYXJjaDogIi52X3BhdGggLmN1cnJlbnQsIGhlYWRlciBhICsgZm9udCwgaDEubGVvLWZzLWwiCiAgICB9IF0sCiAgICBoaWRlOiAiYm9keSA+IGRpdltpZF06bm90KFtjbGFzc10pLCBib2R5ID4gZGl2W3N0eWxlXTpub3QoW2NsYXNzXSksIC50dWlndWFuZywgYm9keSA+IC5sZW8tY29udGFpbmVyIH4gW2lkXSwgLnNzcjEsIC5zc3IxICsgZGl2Om5vdChbY2xhc3NdKSwgaW5zW2lkXSwgc2VjdGlvbiArIGRpdltpZF0iLAogICAgY3NzOiAiLmxlby1kZXRhaWwtd3JhcCB7YmFja2dyb3VuZC1jb2xvcjogIzZlYTdiODttYXJnaW4tYm90dG9tOiAxMHB4O2JvcmRlci1yYWRpdXM6IDVweDtib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsMCwwLDAuMik7fSIKICB9LCB7CiAgICBuYW1lOiAi5aau5Y+vIiwKICAgIG1hdGNoOiAvbmljb3R2XC4obWV8Y2x1YikvLAogICAgcnVsZXM6IFsgewogICAgICBuYW1lOiAi5pCc57SiIiwKICAgICAgbWF0Y2g6ICIvc2VhcmNoIiwKICAgICAgc2VhcmNoOiAhMCwKICAgICAgcmVzdWx0OiAiaDIgYSIKICAgIH0sIHsKICAgICAgbmFtZTogIuivpuaDhSIsCiAgICAgIG1hdGNoOiAiL3ZpZGVvL2RldGFpbC8iLAogICAgICBzZWFyY2g6ICIubWVkaWEtYm9keSAuZmYtdGV4dCIKICAgIH0sIHsKICAgICAgbmFtZTogIuaSreaUviIsCiAgICAgIG1hdGNoOiAiL3BsYXkvIiwKICAgICAgc2VhcmNoOiAoKSA9PiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJ0aXRsZSIpLnRleHQubWF0Y2goL+OAiiguKz8p44CLLylbMV0KICAgIH0gXSwKICAgIGhpZGU6ICJib2R5ID4gYnJkZSwgYm9keSA+IGRpdltpZF06bm90KFtjbGFzc10pLCBib2R5ID4gZGl2W3N0eWxlXTpub3QoW2NsYXNzXSksIGJvZHkgPiBhLCAuZmYtYWRzLCBib2R5ID4gZGl2W2NsYXNzbmFtZV0sICNmZi10b3RvcCB+IGRpdltpZF0iCiAgfSwgewogICAgbmFtZTogIkFHRSIsCiAgICBtYXRjaDogImFnZWZhbnMudHYiLAogICAgcnVsZXM6IFsgewogICAgICBuYW1lOiAi5pCc57SiIiwKICAgICAgbWF0Y2g6ICIvc2VhcmNoIiwKICAgICAgc2VhcmNoOiAhMCwKICAgICAgcmVzdWx0OiAiLmNlbGxfaW1mb3JtX25hbWUiCiAgICB9LCB7CiAgICAgIG5hbWU6ICLor6bmg4UiLAogICAgICBtYXRjaDogIi9kZXRhaWwiLAogICAgICBzZWFyY2g6ICIuZGV0YWlsX2ltZm9ybV9uYW1lIgogICAgfSwgewogICAgICBuYW1lOiAi5pKt5pS+IiwKICAgICAgbWF0Y2g6IC9cL3BsYXlcLy4rcGxheWlkPS8sCiAgICAgIHNlYXJjaDogIiNkZXRhaWxuYW1lIGEiCiAgICB9IF0sCiAgICBoaWRlOiAiZGl2W3N0eWxlXTpub3QoW2NsYXNzXSkgPiBhIiwKICAgIGNzczogIlxuZGl2LCBzcGFuIHtjb2xvcjogaW5oZXJpdDt9IgogIH0sIHsKICAgIG5hbWU6ICLmrKHlhYMiLAogICAgbWF0Y2g6ICJjeWxvbGkuY29tIiwKICAgIHJ1bGVzOiBbIHsKICAgICAgbmFtZTogIuaQnOe0oiIsCiAgICAgIG1hdGNoOiAiL3ZvZHNlYXJjaCIsCiAgICAgIHNlYXJjaCgpIHsKICAgICAgICBjb25zdCBlID0gbG9jYXRpb24uaHJlZi5tYXRjaCgvdm9kc2VhcmNoXC8oW14tXSspLyk7CiAgICAgICAgcmV0dXJuIGUgPyBlWzFdIDogZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLm1haW4taGVhZCAudGl0bGUgYiwgLnJlLWluZm8gYiIpLnRleHRDb250ZW50OwogICAgICB9LAogICAgICByZXN1bHQ6ICIuc2VhcmNoIC50aXRsZSIKICAgIH0sIHsKICAgICAgbmFtZTogIuivpuaDhSIsCiAgICAgIG1hdGNoOiAvXC9jeVxkKy8sCiAgICAgIHNlYXJjaDogIi5kcmFtYS10aXQgaDMiCiAgICB9LCB7CiAgICAgIG5hbWU6ICLmkq3mlL4iLAogICAgICBtYXRjaDogL1wveXZcZCsvLAogICAgICBzZWFyY2g6ICIudS10aXRsZSBhLCAudGl0bGUgYSIKICAgIH0gXSwKICAgIGhpZGU6ICIuY29sdW1uLXJndCAjcGxheSIKICB9LCB7CiAgICBuYW1lOiAiTWlrYW4iLAogICAgbWF0Y2g6ICJtaWthbmFuaS5tZSIsCiAgICBydWxlczogWyB7CiAgICAgIG5hbWU6ICLmkJzntKIiLAogICAgICBtYXRjaDogIi9TZWFyY2giLAogICAgICBzZWFyY2g6ICEwCiAgICB9IF0KICB9LCB7CiAgICBuYW1lOiAi6Iy25p2v54uQIiwKICAgIG1hdGNoOiAiY3VwZm94LmNvbS9zZWFyY2giLAogICAgc2VhcmNoOiAhMAogIH0sIHsKICAgIG1hdGNoOiAibTE5MDcuY24iLAogICAgaGlkZTogIiNzLXBsYXllciArIC5zaG93ID4gZGl2W3RpdGxlXSwgI3MtY29udHJvbHMgKyBkaXYgPiBkaXY6bnRoLWNoaWxkKG4rNSk6bm90KDpsYXN0LWNoaWxkKSIsCiAgICBfanMoKSB7CiAgICAgIGxldCBlID0gMDsKICAgICAgY29uc3QgdCA9IHNldEludGVydmFsKChmdW5jdGlvbigpIHsKICAgICAgICAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3MtcGxheWVyICsgLnNob3ciKSB8fCAzMCA8IGUrKykgJiYgKGNsZWFySW50ZXJ2YWwodCksIAogICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNzLWNvbnRyb2xzID4gZGl2IGltZyArIHNwYW4iKS5jbGljaygpKTsKICAgICAgfSksIDEwMCk7CiAgICAgIHdpbmRvdy5hbGVydCA9IGZ1bmN0aW9uKCkge307CiAgICB9CiAgfSwgewogICAgbWF0Y2g6ICJva2p4LmNjIiwKICAgIGhpZGU6ICIuV0FORy1XQU5HIgogIH0sIHsKICAgIG5hbWU6ICLljJfmnoF4cyIsCiAgICBtYXRjaDogL2JlaWppeHNcLmNuLip1cmw9aHR0cC8sCiAgICBqcygpIHsKICAgICAgaWYgKGlzTW9iaWxlICYmIHRvZ2dsZVZpZXdwb3J0KCksIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNUZXh0Qm94MSIpLnZhbHVlKSB7CiAgICAgICAgJCgiI2Zvcm0xIikucHJlcGVuZCgkKCIudmlkZW8tanMiKS5wYXJlbnQoKSk7CiAgICAgICAgbGV0IGUgPSAwOwogICAgICAgIGNvbnN0IHQgPSBzZXRJbnRlcnZhbCgoZnVuY3Rpb24oKSB7CiAgICAgICAgICBjb25zdCBpID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigidmlkZW8iKTsKICAgICAgICAgIGlmIChpICYmIDM5MCA+IGkuZHVyYXRpb24pIHsKICAgICAgICAgICAgaS5wYXVzZSgpOwogICAgICAgICAgICBjb25zdCBlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI1RleHRCb3gyIikudmFsdWUgfHwgIiIsIG4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJ2aWRlbyIpOwogICAgICAgICAgICBuLmNsYXNzTGlzdC5hZGQoIk1ZLWZhaWwiKSwgbi5pbm5lckhUTUwgPSAiPGRpdj48ZGl2Puino+aekOWksei0pTwvZGl2PiIgKyAoZSA/ICI8ZGl2PiIgKyBlICsgIjwvZGl2PiIgOiAiIikgKyAiPC9kaXY+IiwgCiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodCk7CiAgICAgICAgICB9CiAgICAgICAgICAxMDAgPCBlKysgJiYgY2xlYXJJbnRlcnZhbCh0KTsKICAgICAgICB9KSwgMTAwKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZXQgZSA9IEhyZWYuc3BsaXQoInVybD0iKVsxXTsKICAgICAgICBpZiAoZSkgewogICAgICAgICAgZSA9IGRlY29kZVVSSShlKSwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI1RleHRCb3gxIikudmFsdWUgPSBlOwogICAgICAgICAgY29uc3QgdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNCdXR0b24xIik7CiAgICAgICAgICB0ICYmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIudmlkZW8tanMiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUgIWltcG9ydGFudCIsIHQuY2xpY2soKSk7CiAgICAgICAgfQogICAgICAgIGxldCB0ID0gMDsKICAgICAgICBjb25zdCBpID0gc2V0SW50ZXJ2YWwoKGZ1bmN0aW9uKCkgewogICAgICAgICAgY29uc3QgZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInZpZGVvIik7CiAgICAgICAgICBlICYmIDM2MCA+IGUuZHVyYXRpb24gPyBlLnBhdXNlKCkgOiBlLnBsYXkoKSwgMTAwIDwgdCsrICYmIGNsZWFySW50ZXJ2YWwoaSk7CiAgICAgICAgfSksIDEwMCk7CiAgICAgIH0KICAgIH0sCiAgICBjc3M6ICJcbmJvZHkgPiBmb3JtIHtwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtsZWZ0OiAwICFpbXBvcnRhbnQ7cmlnaHQ6IDAgIWltcG9ydGFudDt0b3A6IDAgIWltcG9ydGFudDtib3R0b206IDAgIWltcG9ydGFudDtiYWNrZ3JvdW5kOiAjZWVlOGQzICFpbXBvcnRhbnQ7ei1pbmRleDogIiArIE1BWF9aX0lOREVYICsgIiAhaW1wb3J0YW50O31kaXYsaW5wdXQsZm9ybSB7bWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7fWZvcm0gI2RpdmNzczUge2hlaWdodDogYXV0bztwYWRkaW5nOiAwIDFlbTtib3JkZXI6IG5vbmU7d2lkdGg6IGF1dG87fS5NWS1mYWlsIHtoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDt9Lk1ZLWZhaWwgPiBkaXYge3RleHQtYWxpZ246IGNlbnRlcjtib3JkZXItdG9wOiAxcHggc29saWQgIzQ5NTA1Nztib3JkZXItYm90dG9tOiAxcHggc29saWQgIzQ5NTA1NztwYWRkaW5nOiAxZW07Y29sb3I6ICNkOTQ4MGY7Zm9udC13ZWlnaHQ6IGJvbGQ7Zm9udC1zaXplOiAxNnB4O2JhY2tncm91bmQtY29sb3I6ICNmZmY0ZTY7fS5NWS1mYWlsID4gZGl2ID4gZGl2ICsgZGl2IHttYXJnaW4tdG9wOiAxZW07fSIgKyAoaXNNb2JpbGUgPyAnXG5oNSBpbnB1dFt0eXBlPSJ0ZXh0Il0ge3dpZHRoOiA5MCUgIWltcG9ydGFudDttYXJnaW46IC41ZW0gMCAhaW1wb3J0YW50O3BhZGRpbmc6IDAgLjVlbSAhaW1wb3J0YW50O30udmlkZW8tanMge3dpZHRoOiAxMDAlICFpbXBvcnRhbnQ7aGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50O30nIDogIlxuZm9ybSAjZGl2Y3NzNSB7bWF4LXdpZHRoOiA1NzBweCAhaW1wb3J0YW50O30iKQogIH0gXSwgUHVyaWZ5U3R5bGUgPSAiZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O3Zpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50O3dpZHRoOiAwICFpbXBvcnRhbnQ7aGVpZ2h0OiAwICFpbXBvcnRhbnQ7bWF4LXdpZHRoOiAwICFpbXBvcnRhbnQ7bWF4LWhlaWdodDogMCAhaW1wb3J0YW50O292ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtsZWZ0OiAtOTk5OTlweCAhaW1wb3J0YW50O29wYWNpdHk6IDAgIWltcG9ydGFudDtwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50OyIsIFZfVSA9ICJcbmh0dHBzOi8vejEubTE5MDcuY24vP2p4PVxu5YyX5p6BIGh0dHA6Ly9iZWlqaXhzLmNuLz91cmw9XG4iLCBTRUFSQ0hfVVJMUyA9ICJcbuixhueToyAgaHR0cHM6Ly9zZWFyY2guZG91YmFuLmNvbS9tb3ZpZS9zdWJqZWN0X3NlYXJjaD9zZWFyY2hfdGV4dD0qKiAgaHR0cHM6Ly9tLmRvdWJhbi5jb20vc2VhcmNoLz90eXBlPW1vdmllJnF1ZXJ5PSoqXG5cbuiFvuiuryAgaHR0cHM6Ly9tLnYucXEuY29tL3NlYXJjaC5odG1sP2FjdD0wJmtleVdvcmQ9KiogIGh0dHBzOi8vdi5xcS5jb20veC9zZWFyY2gvP3E9Kipcblxu54ix5aWH6Im6ICBodHRwczovL20uaXFpeWkuY29tL3NlYXJjaC5odG1sP3NvdXJjZT1kZWZhdWx0JmtleT0qKiAgaHR0cHM6Ly9zby5pcWl5aS5jb20vc28vcV8qKlxuXG7kvJjphbcgIGh0dHBzOi8vc2VhcmNoLnlvdWt1LmNvbS9zZWFyY2hfdmlkZW8/a2V5d29yZD0qKiAgaHR0cHM6Ly9zby55b3VrdS5jb20vc2VhcmNoX3ZpZGVvL3FfKipcblxu6IqS5p6cICBodHRwczovL20ubWd0di5jb20vc28/az0qKiAgaHR0cHM6Ly9zby5tZ3R2LmNvbS9zbz9rPSoqXG5cbjE5MDUgIGh0dHBzOi8vdmlwLjE5MDUuY29tL1NlYXJjaD9xPSoqXG5cbuaQnOeLkCAgaHR0cHM6Ly9tLnR2LnNvaHUuY29tL3VwbG9hZC9oNS9tL21zby5odG1sP2tleT0qKiAgaHR0cHM6Ly9zby50di5zb2h1LmNvbS9tdHM/d2Q9Kipcblxu6Iy25p2v54uQICBodHRwczovL3d3dy5jdXBmb3guY29tL3NlYXJjaD9rZXk9KipcblxuMTA4MCAgaHR0cHM6Ly93d3cuazEwODAubmV0L3ZvZHNlYXJjaC8tLS0tLS0tLS0tLS0tLmh0bWw/d2Q9KipcblxuMTA5MCAgaHR0cHM6Ly8xMDkweXMuY29tLz9jPXNlYXJjaCZzb3J0PWFkZHRpbWUmb3JkZXI9ZGVzYyZwYWdlPTEmd2Q9Kipcblxu5a6M576OICBodHRwczovL3d3dy53YW5tZWlray5tZS9zby8tLS0tLS0tLS0tLS0tLmh0bWw/d2Q9Kipcblxu5Zyo57q/ICBodHRwczovL3d3dy56eHpqLm1lL3ZvZHNlYXJjaC8tLS0tLS0tLS0tLS0tLmh0bWw/d2Q9Kipcblxu56We6amsICBodHRwczovL3d3dy5zaGVubWE0NDgwLmNvbS9zZWFyY2gvLS0tLS0tLS0tLS0tLS8/d2Q9Kipcblxu6aOe5p6B6YCfICBodHRwOi8vbS5mZWlqaXN1OC5jb20vc2VhcmNoLyoqICBodHRwOi8vZmVpamlzdTguY29tL3NlYXJjaC8qKlxuXG7nnJ/kuI3ljaEgIGh0dHBzOi8vd3d3LnpoZW5idWthLmNvbS92b2RzZWFyY2gvLS0tLS0tLS0tLS0tLS8/d2Q9Kipcblxu56Kf5b2xICBodHRwczovL2R2ZGhkLm1lL3NlYXJjaC5waHA/c2VhcmNod29yZD0qKlxuXG7nvo7liacgIGh0dHBzOi8vOTFtancuY29tLz9zPSoqXG5cblRWQiAgaHR0cHM6Ly93d3cuaGt0dnliLmNvbS92b2Qvc2VhcmNoLmh0bWw/d2Q9Kipcblxu5ZOU5ZOp5ZOU5ZOpICBodHRwczovL20uYmlsaWJpbGkuY29tL3NlYXJjaD9rZXl3b3JkPSoqICBodHRwczovL3NlYXJjaC5iaWxpYmlsaS5jb20vYWxsP2tleXdvcmQ9Kipcblxu6L+F5pKtICBodHRwczovL3d3dy54YmRtLm9yZy9zZWFyY2gucGhwP3NlYXJjaHdvcmQ9KipcblxuWnp6RnVuICBodHRwOi8vd3d3Lnp6emZ1bi5jb20vdm9kLXNlYXJjaC5odG1sP3dkPSoqXG5cbuWmruWPryAgaHR0cDovL3d3dy5uaWNvdHYubWUvdmlkZW8vc2VhcmNoLyoqLmh0bWxcblxuQUdFICBodHRwczovL3d3dy5hZ2VmYW5zLnR2L3NlYXJjaD9wYWdlPTEmcXVlcnk9Kipcblxu5qyh5YWDICBodHRwczovL2N5bG9saS5jb20vdm9kc2VhcmNoLyoqLS0tLS0tLS0tLTEtLS0vXG5cbuWTlOWSqiAgaHR0cDovL2JpbWliaW1pLm1lL3ZvZC9zZWFyY2gvd2QvKiovcGFnZS8xL1xuXG5NaWthbiAgaHR0cHM6Ly9taWthbmFuaS5tZS9Ib21lL1NlYXJjaD9zZWFyY2hzdHI9KipcbiIsIERfVl9VID0gIml4wrd4amEwMWF1Z3ludcK3YzB3LGlqZXhqwrdwdzZqZ8K3Y3UsMGtpeMK3Y2Msdmpiwrc1MmlqZXhqwrd0MGIsaWRhYWHCt2Mwdy1peMK3LGl4wrd5MG55anR2wrdjMHcsbW1twrd4cWphMHNqwrdjMHctdmpiLGl4wrdpam5wMGl4wrdjMHctdmpiwrcsaXjCt25yMWtpwrdjMHcsbW1twrd1eGYxdsK3YzB3LGl4wrc5OGHCt2p1ayxtbW3Ct2g4aXjCt2Mwdy1pamV4asK3LGIxYXnCt2YwOTfCt2N1LG1tbcK3YmF1Z25pamV4asK3Y2MtaWpleGrCtyxtbW3CtzhvOW9nwrdjdS1pamV4aixhYmrCt2lqZXhqwrcxYSxtbW3Ct2IxYXl3M244wrdjdS1pamV4asK3LGFiasK3OTI3aXjCt2Mwdy12amIsNjZvZcK3YzB3LGl4wrcxYWNoZcK3d2UtY2MsaXjCtzZsOGfCt2Mwdyx2amLCt3diMHPCt3JldS12LGl4wrd0YTBmajF3wrdjdS12amIsaXjCt2UxbXRjwrdjMHctdmpiLG1tbcK3bDdsN3ludcK3YzB3LWl4LXR5wrcsYWJqwrczaXjCt3QwYi12amIsY3F1wrd5YXVnaW7Ct3ZqYi1rLGl4wrdvb29sOG/Ct3QwYi1peCxhYmrCtzY1MzUyb8K3dDBiLXZqYixpeMK3dGEwZmoxd8K3Y3UtaWpleGosaXjCtzk5eXltwrdjMHcsaWpleGrCtzM4b2vCt2Mwdyx2wrc3Y3lxwrdjMHctdmpiLGFiasK3dHY5Mm/Ct2Mwdy1peCxhYmrCt3NqZ25peMK3YzB3LGl4wrdhcDMzwrd0MGItdmpiLGl4wrdrdzU4wrd0MGItaXgsbW1twrd5YTBzMG7Ct2NjLWlqZXhqLT92LGlqZXhqYWJqwrd5ajFhdXPCt3VldC1pamV4aixwZWFhY2PCt2Mwdy1hYmrCtyxpeMK3dGEwZmoxd8K3Y3UtaXgiLCBQbGF5ZXJTZWxlY3RvciA9ICIjaWZyYW1hV3JhcHBlciwgI3NvaHVwbGF5ZXIgLngtcGxheWVyLCAuYy1wbGF5ZXItdmlkZW8sICN3UGxheWVyLCAjdmlkZW8tYm94LCAjcGxheWVyYm94LCAudGQtaDVfX3BsYXllciwgLnRkLXBsYXlib3gsIC5pcXAtcGxheWVyLCAuZy1wbGF5IC52aWRlby1hcmVhLCAjbW9kX3BsYXllciwgI3BsYXlCb3gsICNqLXBsYXllciwgI3ZpZGVvLCAubS12aWRlby1wbGF5ZXIsIC5zaXRlX3BsYXllciIsIGlzVmlwU2l0ZVJlZ2V4ID0gLyh2XC5xcXx0dlwuc29odXxpcWl5aXx5b3VrdXxtZ3R2fDE5MDV8cHB0dnxsZSlcLihjb218Y24pLywgaXNBbmltZVNpdGVSZWdleCA9IC8oYmlsaWJpbGl8Y3lsb2xpfG5pY290dnx6enpmdW58bWlrYW5hbml8eGJkbXxhZ2VmYW5zfGJpbWliaW1pKVwuKGNvbXxtZXxvcmd8dHZ8dmlkZW8pLywgRG9tID0gRE9NKCksIFIgPSBEb20uUiwgSCA9IERvbS5ILCBBcnIgPSB7CiAgICBzaHVmZmxlKGUpIHsKICAgICAgZm9yIChsZXQgdCA9IGUubGVuZ3RoOyAwIDwgdDsgKSB7CiAgICAgICAgY29uc3QgaSA9IF9NYXRoZmxvb3IoTWF0aC5yYW5kb20oKSAqIHQpOwogICAgICAgIHQtLTsKICAgICAgICBjb25zdCBuID0gZVt0XTsKICAgICAgICBlW3RdID0gZVtpXSwgZVtpXSA9IG47CiAgICAgIH0KICAgICAgcmV0dXJuIGU7CiAgICB9LAogICAgY2h1bmtzOiAoZSwgdCkgPT4gZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsIGksIG4pIHsKICAgICAgY29uc3QgYSA9IF9NYXRoZmxvb3IobiAvIHQpOwogICAgICByZXR1cm4gZVthXSA9IFtdLmNvbmNhdChlW2FdIHx8IFtdLCBpKSwgZTsKICAgIH0pLCBbXSkKICB9LCB4Q2hhciA9IHsKICAgIGI6ICJwIiwKICAgIHA6ICJiIiwKICAgIGQ6ICJxIiwKICAgIHE6ICJkIiwKICAgIGk6ICJqIiwKICAgIGo6ICJpIiwKICAgIGw6ICIxIiwKICAgIDE6ICJsIiwKICAgIG06ICJ3IiwKICAgIHc6ICJtIiwKICAgIG46ICJ1IiwKICAgIHU6ICJuIiwKICAgIG86ICIwIiwKICAgIDA6ICJvIgogIH0sIFB1cmlmeUtleXdvcmRSZWdleCA9IC8uKuOAinzjgIsuKnxbLVxzXSrnrKwuezEsM31b5a2j6ZuG6K+d6YOoXS4qfFxzK1xkezIsM31ccyokL2csIENvbW1vblNlYXJjaEtleXdvcmRSZWdleCA9IC8od2R8a2V5fGtleXdvcmR8c2VhcmNod29yZHxxdWVyeXxrd3xxfHNlYXJjaHN0cik9KFteJlw/XC9cLi1dKyl8KHNlYXJjaFwvfHNlYWNoZXItfFtcV11xXykoW14mXD9cL1wuLV0rKS9pLCBTdGF0ZXMgPSBbXSwgdGhyb3R0bGUgPSBmdW5jdGlvbihlKSB7CiAgICBsZXQgdCwgaSA9IG51bGw7CiAgICBjb25zdCBuID0gZnVuY3Rpb24obikgewogICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgaSA9IG51bGwsIGUuYXBwbHkobiwgdCk7CiAgICAgIH07CiAgICB9LCBhID0gZnVuY3Rpb24oKSB7CiAgICAgIGZvciAodmFyIGUgPSBhcmd1bWVudHMubGVuZ3RoLCBhID0gQXJyYXkoZSksIG8gPSAwOyBvIDwgZTsgbysrKSBhW29dID0gYXJndW1lbnRzW29dOwogICAgICB0ID0gYSwgbnVsbCA9PT0gaSAmJiAoaSA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShuKHRoaXMpKSk7CiAgICB9OwogICAgcmV0dXJuIGEuY2FuY2VsID0gZnVuY3Rpb24oKSB7CiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGkpLCBpID0gbnVsbDsKICAgIH0sIGE7CiAgfSwgJCA9IGdldCQoKSwgRSA9IGVtaXR0ZXIoKTsKICBsZXQgd2luVyA9IHdpbmRvdy5pbm5lcldpZHRoIHx8IDA7CiAgZm9yIChjb25zdCBlID0gRGF0ZS5ub3coKTsgM2UzID4gRGF0ZS5ub3coKSAtIGUgJiYgMCA9PT0gKHdpblcgPSB3aW5kb3cuaW5uZXJXaWR0aCB8fCAwKTsgKSBhd2FpdCBkZWxheSgxMDApOwogIGNvbnN0IG1heFNuaWZmSWZyYW1lV2lkdGggPSAxMDUsIGlzU25pZmZJZnJhbWUgPSAwIDwgd2luVyAmJiAxMTAgPj0gd2luVzsKICBwYWdlSW5mbyA9IHsKICAgIGlzU25pZmZJZnJhbWU6IGlzU25pZmZJZnJhbWUsCiAgICB3aW5XOiB3aW5XLAogICAgc2NyZWVuV2lkdGg6IHNjcmVlbldpZHRoCiAgfSwgRS5vbigiTVk6bG9nIiwgKGZ1bmN0aW9uKCkge30pKSwgRS5vbigiZW5hYmxlLnNuaWZmIiwgKGZ1bmN0aW9uKGUpIHsKICAgIGUuZnJvbSA9PT0gU25pZmZDaGVja1VybCAmJiAkKCIuTVktaWZyYW1lcyA+IGlmcmFtZSIpLmVhY2goKGZ1bmN0aW9uKGUpIHsKICAgICAgZS5zcmMgPT09IFNuaWZmQ2hlY2tVcmwgJiYgcmVtb3ZlSWZyYW1lKGUpOwogICAgfSkpLCBpc0FsbG93SWZyYW1lU25pZmYgfHwgKGlzQWxsb3dJZnJhbWVTbmlmZiA9ICEwLCBpc0FsbG93U25pZmYgPSAhMCwgR2xvYmFsU3RvcmUuc2V0KCJpc0FsbG93SWZyYW1lU25pZmYiLCAhMCksIAogICAgJCgiLk1ZLXZpcC1saXN0IikuYWRkQ2xhc3MoImlzLWFsbG93LXNuaWZmIikpOwogIH0pKSwgRS5vbigiTVk6c25pZmYudmlkZW8iLCAoZnVuY3Rpb24oZSkgewogICAgY29uc3QgdCA9IGUuZnJvbS5yZXBsYWNlKC89aHR0cHM/Oi4rLywgIj0iKTsKICAgIHJlbW92ZUlmcmFtZShpZnJhbWVzW3RdLCAiU05JRkYgU1VDQ0VTUyIpLCBlLnVybC5zdGFydHNXaXRoKCJibG9iOiIpID8gJCgiLk1ZLXZpcC1saXN0IC5NWS1idXR0b25bX2hyZWZdIikuZWFjaCgoZnVuY3Rpb24oZSkgewogICAgICBsZXQgaSA9ICQodGhpcykuYXR0cigiX2hyZWYiKTsKICAgICAgaSAmJiAhaS5pbmNsdWRlcygiaHR0cCIpICYmIChpID0gc25pZmZWaXBVcmxzW2ldLnVybCksIGkgPT09IHQgJiYgKCQoZSkuYWRkQ2xhc3MoImlzLXN1Y2Nlc3MiKSwgCiAgICAgIGlzU25pZmZpbmcgJiYgIWlzSWZyYW1lUGxheUNoZWNrICYmIChpc0lmcmFtZVBsYXlDaGVjayA9ICEwLCBzZXRUaW1lb3V0KChmdW5jdGlvbigpIHsKICAgICAgICAwID09PSB2aWRlb1VybHMubGVuZ3RoICYmIDAgPT09ICQoIi5NWS12aXAtbGlzdCAuTVktYnV0dG9uLmlzLXN1Y2Nlc3MuaXMtYWN0aXZlIikubGVuZ3RoICYmIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5NWS12aXAtbGlzdCAuTVktYnV0dG9uLmlzLXN1Y2Nlc3MiKS5jbGljaygpOwogICAgICB9KSwgMTFlMykpKTsKICAgIH0pKSA6IGdldFNuaWZmVmlkZW9VcmwoZS51cmwpOwogIH0pKTsKICBjb25zdCBzdG9yZVByZWZpeCA9IE5BTUUgKyAiLiIsIFN0b3JlID0gewogICAgZ2V0KGUpIHsKICAgICAgbGV0IHQgPSAxIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IG51bGw7CiAgICAgIHJldHVybiBwYXJzZVN0b3JlRGF0YSh3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oc3RvcmVQcmVmaXggKyBlKSwgdCk7CiAgICB9LAogICAgc2V0KGUpIHsKICAgICAgbGV0IHQgPSAxIDwgYXJndW1lbnRzLmxlbmd0aCAmJiB2b2lkIDAgIT09IGFyZ3VtZW50c1sxXSA/IGFyZ3VtZW50c1sxXSA6IG51bGw7CiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShzdG9yZVByZWZpeCArIGUsIEpTT04uc3RyaW5naWZ5KHQpKTsKICAgIH0sCiAgICByZW1vdmUoZSkgewogICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oc3RvcmVQcmVmaXggKyBlKTsKICAgIH0KICB9LCBHbG9iYWxTdG9yZSA9IHsKICAgIGdldChlKSB7CiAgICAgIGxldCB0ID0gMSA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiBudWxsOwogICAgICByZXR1cm4gaXNHTSA/IHBhcnNlU3RvcmVEYXRhKEdNX2dldFZhbHVlKHN0b3JlUHJlZml4ICsgZSwgdCksIHQpIDogU3RvcmUuZ2V0KGUsIHQpOwogICAgfSwKICAgIHNldChlKSB7CiAgICAgIGxldCB0ID0gMSA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMV0gPyBhcmd1bWVudHNbMV0gOiBudWxsOwogICAgICBpc0dNID8gR01fc2V0VmFsdWUoc3RvcmVQcmVmaXggKyBlLCBKU09OLnN0cmluZ2lmeSh0KSkgOiBTdG9yZS5zZXQoZSwgdCk7CiAgICB9LAogICAgcmVtb3ZlKGUpIHsKICAgICAgaXNHTSA/IEdNX2RlbGV0ZVZhbHVlKGUpIDogU3RvcmUucmVtb3ZlKGUpOwogICAgfQogIH07CiAgbGV0IGFsbG93U2NhbGUgPSAhMDsKICBjb25zdCBkYXkgPSBuZXcgRGF0ZSwgU25pZmZDaGVja1VybCA9IGdldENkbkltYWdlVXJsKCJmZTIzMDAwMTM5YTAyM2NlZGM0YyIpLCBQUENzID0gImZlOGQwMDAxZTcxYjQyMWFmNDcwO2ZlOWQwMDAxYTIzZmE0YmExMmU2O2ZlYmMwMDAxZjdkY2E2MDFhY2FhO2ZlZDgwMDAxNDNjMWM5OTc3ZjBhO2ZlZGQwMDAxZjhkYmYxMTNhOWU0O2ZmMTUwMDAxNzNlN2E5MWIyYmRmO2ZmMTgwMDAxNTgyN2JkNWE3MGZjO2ZmMTkwMDAxNDkzMzZiMGVkYWRjO2ZmMzQwMDAyMWFkNWRjOTliY2JhO2ZmODEwMDAxMDE5ZDdiOTg2Y2QzO2ZmOTgwMDAwYTBiZGQwZmZhYzcxO2ZmYTAwMDAyYzdiMDg3MDNhNzljIi50cmltKCkuc3BsaXQoLzt8XG4vKSwgUFBDID0gZ2V0Q2RuSW1hZ2VVcmwoUFBDc1soZGF5LmdldERheSgpICsgZGF5LmdldEhvdXJzKCkpICUgUFBDcy5sZW5ndGhdKSwgUExDcyA9ICIxMDAwMDAwMDA4YzAwYzZmOTA5NmY7MTAwMDMwMDAwOTM5NDExMTZkODFhO2RjMGUwMDA2MmIyYzVlYjQ5M2JkO2RjMGYwMDA1NDA2NGY4YzM4MGY1O2RjMTAwMDA0NWMwNzVkZDMwNjU2O2RjMTEwMDA1ZThiNzJhMWNlNTgzO2ZlMjMwMDAxM2JhYTRjZGUyODkwO2ZlMmYwMDAxMjlkMDA2YzJhMTM5O2ZlMzQwMDAxMzVhNDIxMjU0NDg2O2ZlMzYwMDAxZWMzMzZhOTZkMGJjO2ZlM2IwMDAwZWI1M2Y4NDQ5MDM4O2ZlM2MwMDAxNTA0M2QzN2Q3YmU1O2ZlNDIwMDAyMThiOWY3ZjVhNTViO2ZlNDIwMDAyMThjNWYxMWMyZWQ5O2ZlNDMwMDAxMDQzNDQ4OTk0ODQ2O2ZlNDYwMDAwYjNmYWU2YWExYmIxO2ZlNGQwMDAxMGNmNWM0OGM5YjZiO2ZlNTEwMDAwZjFmYjE5ODAxZTM4O2ZlNWYwMDAxNTRhNzk0MjYxMTM4O2ZlNjMwMDAxYjIyMmQ4YTZlYjdlO2ZlNmQwMDAyMjY0NTJmYWFmNjQwO2ZlNzIwMDAxZjI0ZjllOTMwNDZmO2ZlN2EwMDAxNTcwNjkyOWUxZDM3O2ZlN2QwMDAyNTQ4Y2ZkMTE1MmJiO2ZlOGIwMDAxYzI3MDZiZmUzZTc3O2ZlOGYwMDAyN2ZkZDc5ZGRhN2ZkO2ZlOTYwMDAxYjFlYTBhYTdlNDYzO2ZlYTQwMDAyYmZhYTU3ZDBlZGU0O2ZlYTYwMDAxMjc0MjZiNGQzYmRhO2ZlYTcwMDAwODgxYzUzNjk0NzI0O2ZlYTgwMDAyYjBmZDE2MmU3OWZhO2ZlYTkwMDAxMmNhNmM0OWQ2NThlO2ZlYWEwMDAyYzU5ZWQ4YTlkZWRmO2ZlYWQwMDAxMTdjYTlmZDI1MDU0O2ZlYjAwMDAxNGI5OGZhZTc3N2FmO2ZlYjAwMDAxNGUyYzg0MjI4ZWY5O2ZlYjEwMDAxNDE5OGNhODA0Yzk2O2ZlYjMwMDAxNTUwMjg2MTlkYjkyO2ZlYjkwMDAwZmFiMGM5MzRjN2NjO2ZlYmMwMDAxNjQxNzRhNTc5YjEyO2ZlYzUwMDAxM2NiM2YyNDkyMDg3O2ZlYzYwMDAxNDY3OTlkYjgyZGRjO2ZlYzgwMDAxMDdmMDRkZDliZWExO2ZlY2UwMDAxNDVjN2U4YWIzOGFjO2ZlY2YwMDAxZjFjMzdiYTYyZTBhO2ZlZDIwMDAxZDc0YjdlNmVmMTdjO2ZlZGIwMDAwYjJmYjA2MzBkNmVjO2ZlZTEwMDAwZmNmOWUwZjhhMGVhO2ZlZTIwMDAwY2JmZTFkOTQwMzVhO2ZlZTIwMDAwY2JmZjE4YjBmYTc4O2ZlZTkwMDAxNjY0MTE3MDc4MDg0O2ZlZjUwMDAyMmZhOGI1ZTU0ODg0O2ZlZjkwMDAxMWVkNjVkZTFiZjcyO2ZlZmEwMDAwYzhmMjVmYmY4ODliO2ZlZmQwMDAyNTViNjkyOGY0YTMyO2ZmMDAwMDAxMDgwMzgwYzEyN2FiO2ZmMDAwMDAxNTc2ZDZkMTY0ZGQ1O2ZmMDgwMDAxNzE4ODRlMmU0NmMwO2ZmMDgwMDAxNzE4Y2ViYmU4NTAxO2ZmMDgwMDAxNzE4ZWI5NDhiMWI0O2ZmMTMwMDAxMGYzZGExNzI5MGQ1O2ZmMTYwMDAxY2IzZmNjOTUyZTY4O2ZmMTcwMDAwOWRiMTFlMmQzNTU1O2ZmMWMwMDAxMTY3NWE0NDRhOWFmO2ZmMjQwMDAxNzI0OWQxNWIxYjgzO2ZmMjUwMDAxYThkYzBjNGIxZTM3O2ZmMjYwMDAyMDg1NDA3OTAzOGVjO2ZmMjcwMDAxZWMyMDQ4ZTk1NjY5O2ZmMjgwMDAxYjQxZjM3YzRmNWFjO2ZmMmQwMDAwYzIxN2Y3NzZjZDBmO2ZmMmYwMDAzYTE3NjA1NzQxMjIyO2ZmMzIwMDAxMjBmZmJmYTM3OWQ3O2ZmMzMwMDAwOThiYzNlNWM3NjRlO2ZmMzYwMDAwYjIzMmM3Nzk0N2M1O2ZmNDQwMDAyOTJiYmY4MTY0YWYyO2ZmNTUwMDAxMDVjMmM1ZjAwYjZhO2ZmNWUwMDAxN2Y0OWEzNmIyNzM2O2ZmNWUwMDAxODMxMGViNTgyOWNhO2ZmNjQwMDAwZTJiZDU1YjI2ZTI3O2ZmNjUwMDAxMzQzMDY2YjdhNDA3O2ZmNmEwMDAxZjNiYjE4NGQ2YjAwO2ZmNzMwMDAwOWQ1ZGJlZjdmNWViO2ZmNzMwMDAwOWQ1ZmIxYzBhN2VhO2ZmNzcwMDAxODhjOGMxMjQyOTdkO2ZmOGQwMDAxOGU4N2Y1OGZjYmVjO2ZmOTQwMDAxYzc0NzYzNTIxZDVlO2ZmOTYwMDAwYzFlMTgxYTRkZTBlO2ZmOTgwMDAwYzBhMjAzZWIzNGJiO2ZmOWEwMDAxYzc5NDgwNDQzNzk4O2ZmYTAwMDAxYzUwYWRhNTY1MDViO2ZmYTQwMDAwZTc1NzQyZTcyZDdjO2ZmYTQwMDAwZTkzMTA2NmFmYzQ3O2ZmYTkwMDAwZTdkNmY5YzgzMTllO2ZmYWQwMDAxMjQ2ZWNjOGRjMWM2O2ZmYmEwMDAxN2JlZDkxNDhhNzQ0O2ZmY2EwMDAwYmI5ZmI1ZTU5ZjFmO2ZmY2MwMDAwZGUxYzE4ODg2MjIzO2ZmY2QwMDAxN2VkMGJkNDc2YWFmO2ZmZDEwMDAwODYwNTBjNDUyMDE1O2ZmZDIwMDAwOTBiMzk1NjdmZWQ1O2ZmZDQwMDAxMzNhOTkyZDZmZWFhO2ZmZDUwMDAwYTZhM2MwOGYyZjY1O2ZmZDcwMDAwZWYxOTljMzJkYzdiO2ZmZGIwMDAwODQ4YTZhYzExM2Y1O2ZmZTIwMDAxMjE4YjNjZTZjY2ZmO2ZmZTMwMDAwYTNmYzRlODQyMTBjO2ZmZTkwMDAwZGFmMWI3YmY3MjZkO2ZmZWMwMDAxNzAyMWMwMjhiM2ZkO2ZmZjQwMDAwZTRmOGYyNzdhNmJkO2ZmZjkwMDAxYTdkNzMzNzQ0N2NmIi50cmltKCkuc3BsaXQoLzt8XG4vKS5tYXAoKGZ1bmN0aW9uKGUpIHsKICAgIHJldHVybiBlLnJlcGxhY2UoL1xzLisvZywgIiIpOwogIH0pKTsKICBsZXQgcGxheWVyLCBwbGF5ZXJCb3gsIHBsYXlGYWlsZWRVcmw7CiAgY29uc3QgdmlkZW9FeHRSZWdleCA9IC9cLihtcDR8bTN1OCkvLCBudW1zID0gIuKRoOKRoeKRouKRo+KRpOKRpeKRpuKRp+KRqOKRqeKRquKRq+KRrOKRreKRruKRr+KRsOKRseKRsuKRsyI7CiAgbGV0IGlzTG9hZFBsYXllciA9ICExLCBpc1NuaWZmaW5nID0gITEsIHNuaWZmVGltZXN0YW1wID0gRGF0ZS5ub3coKSwgaXNBbGxvd0lmcmFtZVNuaWZmID0gR2xvYmFsU3RvcmUuZ2V0KCJpc0FsbG93SWZyYW1lU25pZmYiKSB8fCAhMTsKICBjb25zdCBpc0hpa2VyID0gISF3aW5kb3cuZnlfYnJpZGdlX2FwcCwgaXNNaXhpYSA9ICEhd2luZG93Lm14X2Jyb3dzZXJfb2JqLCBpc0FsbG93SGlrZXJTbmlmZiA9IGlzSGlrZXIgJiYgISF3aW5kb3cuZnlfYnJpZGdlX2FwcC5nZXROZXR3b3JrUmVjb3JkcywgaXNBbGxvd01peGlhU25pZmYgPSBpc01peGlhICYmICEhd2luZG93Lm14X2Jyb3dzZXJfb2JqLmdldHdlYmxvZzsKICBsZXQgaXNBbGxvd1NuaWZmID0gaXNBbGxvd0hpa2VyU25pZmYgfHwgaXNBbGxvd01peGlhU25pZmYgfHwgaXNBbGxvd0lmcmFtZVNuaWZmLCBzZXR0aW5ncyA9IHsKICAgIHBpcDogIWlzTW9iaWxlIHx8IGlzQWxsb3dTbmlmZiwKICAgIHNraXBBZDogITAsCiAgICBoaWRlV2F0ZXJtYXJrOiAhMCwKICAgIGF1dG9KaWV4aTogITAKICB9OwogIE9iamVjdC5hc3NpZ24oc2V0dGluZ3MsIFN0b3JlLmdldCgic2V0dGluZ3MiLCB7fSkpOwogIGxldCB2aXBVcmxzID0gW10sIGlzQXV0b1NuaWZmaW5nID0gITEsIHNuaWZmSW5kZXggPSAwOwogIGNvbnN0IE1BWF9TTklGRl9MSU1JVCA9IGlzTW9iaWxlID8gNiA6IDU7CiAgbGV0IGlzSWZyYW1lUGxheUNoZWNrID0gITE7CiAgY29uc3QgS0VZRlJBTUVTX1NUWUxFUyA9ICJcbkBrZXlmcmFtZXMgbXktcHVsc2UtcG9zaXRpdmUgezAlIHtib3gtc2hhZG93OiAwIDAgMCAwICM2MDdEOEI7fTEwMCUge2JveC1zaGFkb3c6IDAgMCAwIDVweCB0cmFuc3BhcmVudDt9fUBrZXlmcmFtZXMgbXktcHVsc2UtcG9zaXRpdmUtZGFyayB7MCUge2JveC1zaGFkb3c6IDAgMCAwIDAgI0VFRUVFRTt9MTAwJSB7Ym94LXNoYWRvdzogMCAwIDAgNXB4IHRyYW5zcGFyZW50O319QGtleWZyYW1lcyBteS1iZWF0IHt0byB7dHJhbnNmb3JtOiBzY2FsZSgxLjIpO319QGtleWZyYW1lcyBteS1idWJibGUxIHs0MCUge3RyYW5zZm9ybTogdHJhbnNsYXRlKDJweCwycHgpIHNjYWxlKC43OSk7b3BhY2l0eTogLjg7fXRvIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSg2cHgsLTRweCkgc2NhbGUoLjU3KTtvcGFjaXR5OiAwO319QGtleWZyYW1lcyBteS1idWJibGUyIHswJSB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoNHB4LDNweCk7fTE2JSB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoNHB4LDNweCk7b3BhY2l0eTogMDt9MjglIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSg3cHgpO29wYWNpdHk6IC44O302MCUge3RyYW5zZm9ybTogdHJhbnNsYXRlKDExcHgsLTJweCk7fTcyJSB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoMTRweCwtM3B4KSBzY2FsZSguNTcpO29wYWNpdHk6IDA7fX1Aa2V5ZnJhbWVzIG15LWJ1YmJsZTMgezAlIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMHB4LC00cHgpIHNjYWxlKC43MSlcbn0xNiUge3RyYW5zZm9ybTogdHJhbnNsYXRlKDEwcHgsLTRweCkgc2NhbGUoLjcxKTtvcGFjaXR5OiAwO30yOCUge3RyYW5zZm9ybTogdHJhbnNsYXRlKDEwcHgsLTRweCkgc2NhbGUoLjcxKTtvcGFjaXR5OiAuNTt9NzIlIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNHB4LC05cHgpIHNjYWxlKC41Nyk7b3BhY2l0eTogMDt9fUBrZXlmcmFtZXMgbXktcm90YXRlIHtcdDEwMCUge1x0XHR0cmFuc2Zvcm06IHJvdGF0ZSgxdHVybik7XHR9fUBrZXlmcmFtZXMgbXktem9vbS1pbi11cCB7ZnJvbSB7b3BhY2l0eTogMDt0cmFuc2Zvcm06IHNjYWxlM2QoMC4xLCAwLjEsIDAuMSkgdHJhbnNsYXRlM2QoMCwgMTAwMHB4LCAwKTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC41NSwgMC4wNTUsIDAuNjc1LCAwLjE5KTt9NjAlIHtvcGFjaXR5OiAxO3RyYW5zZm9ybTogc2NhbGUzZCgwLjQ3NSwgMC40NzUsIDAuNDc1KSB0cmFuc2xhdGUzZCgwLCAtNjBweCwgMCk7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7fX1Aa2V5ZnJhbWVzIG15LXpvb20taW4tZG93biB7ZnJvbSB7b3BhY2l0eTogMDt0cmFuc2Zvcm06IHNjYWxlM2QoMC4xLCAwLjEsIDAuMSkgdHJhbnNsYXRlM2QoMCwgLTEwMDBweCwgMCk7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNTUsIDAuMDU1LCAwLjY3NSwgMC4xOSk7fTYwJSB7b3BhY2l0eTogMTt0cmFuc2Zvcm06IHNjYWxlM2QoMC40NzUsIDAuNDc1LCAwLjQ3NSkgdHJhbnNsYXRlM2QoMCwgNjBweCwgMCk7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMSk7fX1Aa2V5ZnJhbWVzIG15LXpvb20tb3V0LWRvd24gezQwJSB7b3BhY2l0eTogMTt0cmFuc2Zvcm06IHNjYWxlM2QoMC40NzUsIDAuNDc1LCAwLjQ3NSkgdHJhbnNsYXRlM2QoMCwgLTYwcHgsIDApO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjU1LCAwLjA1NSwgMC42NzUsIDAuMTkpO310byB7b3BhY2l0eTogMDt0cmFuc2Zvcm06IHNjYWxlM2QoMC4xLCAwLjEsIDAuMSkgdHJhbnNsYXRlM2QoMCwgMjAwMHB4LCAwKTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxKTt9fUBrZXlmcmFtZXMgbXktYm9wQSB7MCUge3RyYW5zZm9ybTogc2NhbGUoMC45KTtvcGFjaXR5OiAuODt9NTAlLDEwMCUge3RyYW5zZm9ybTogc2NhbGUoMSk7b3BhY2l0eTogMTt9fUBrZXlmcmFtZXMgbXktYm9wQiB7MCUge3RyYW5zZm9ybTogc2NhbGUoMC45KTtvcGFjaXR5OiAuODt9ODAlLDEwMCUge3RyYW5zZm9ybTogc2NhbGUoMSkgcm90YXRlWigtM2RlZyk7b3BhY2l0eTogMTt9fUBrZXlmcmFtZXMgbXktbG9hZGVyLXNwaW4gezAlIHt0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTt9MTAwJSB7dHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTt9fSI7CiAgbGV0IGlzRGFya01vZGUgPSBTdG9yZS5nZXQoImlzRGFya01vZGUiLCAhMSk7CiAgY29uc3QgaGFzVGlueU1vZGUgPSBJcyhpc1ZpcFNpdGVSZWdleCkgJiYgIWlzTW9iaWxlOwogIGxldCBpc1RpbnlNb2RlID0gU3RvcmUuZ2V0KCJpc1RpbnlNb2RlIiwgITEpLCBzbmlmZlZpcFVybHMgPSBbXTsKICBjb25zdCBlZGl0RGF0YSA9IHt9LCBkZWZhdWx0SGludCA9ICLliLfmlrDnlJ/mlYjvvIzmuIXnqbrmgaLlpI3pu5jorqQiLCBJY29uID0gewogICAgdmlwOiAnPHN2ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAgMCAxOCAxOCI+PHBhdGggZD0iTTE3LjczMSw2LjI3bC0yLjc3MS00LjQ2NGMtMC4zMzItMC41MzQtMC45MDYtMC44NTItMS41MzgtMC44NTJoLTIuMzY0Yy0wLjU1MywwLTEsMC40NDgtMSwxczAuNDQ3LDEsMSwxaDIuMjYxbDIuNjI4LDQuMjMybC02Ljk1NSw3LjU4TDIuMDUzLDcuMTg3bDIuNjI4LTQuMjMzaDIuMzNjMC41NTIsMCwxLTAuNDQ4LDEtMXMtMC40NDgtMS0xLTFINC41NzdjLTAuNjIzLDAtMS4yMTIsMC4zMjctMS41MzcsMC44NTNMMC4yNjcsNi4yNzJjLTAuNDE2LDAuNjcxLTAuMzQ2LDEuNTIxLDAuMTg5LDIuMTMzbDcuNDc1LDguMTY3YzAuMjc1LDAuMzEzLDAuNjYzLDAuNDc1LDEuMDU2LDAuNDc1YzAuMzI0LDAsMC42NTEtMC4xMSwwLjkyLTAuMzM2bDcuNjQ4LTguMzIxQzE4LjA3Nyw3Ljc5NCwxOC4xNDgsNi45NDMsMTcuNzMxLDYuMjd6Ij48L3BhdGg+PHBhdGggZD0iTTQuNTE3LDYuMTY3QzQuMTA4LDYuNTM4LDQuMDc4LDcuMTcxLDQuNDUsNy41OGwzLjgxLDQuMTljMC4xODksMC4yMDgsMC40NTgsMC4zMjcsMC43MzksMC4zMjdjMCwwLDAsMCwwLDBjMC4yODEsMCwwLjU1LTAuMTE4LDAuNzM5LTAuMzI3bDMuODEtNC4xODRjMC4zNzItMC40MDksMC4zNDMtMS4wNDEtMC4wNjYtMS40MTNjLTAuNDA3LTAuMzcyLTEuMDM5LTAuMzQyLTEuNDEyLDAuMDY2TDksOS42MTJMNS45MjksNi4yMzRDNS41NTgsNS44MjYsNC45MjYsNS43OTYsNC41MTcsNi4xNjd6Ij48L3BhdGg+PC9zdmc+JywKICAgIHg6ICc8c3ZnIGZpbGw9ImN1cnJlbnRDb2xvciIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiI+PC9wYXRoPjwvc3ZnPicsCiAgICBzdW46ICc8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI1Ij48L2NpcmNsZT48bGluZSB4MT0iMTIiIHkxPSIxIiB4Mj0iMTIiIHkyPSIzIj48L2xpbmU+PGxpbmUgeDE9IjEyIiB5MT0iMjEiIHgyPSIxMiIgeTI9IjIzIj48L2xpbmU+PGxpbmUgeDE9IjQuMjIiIHkxPSI0LjIyIiB4Mj0iNS42NCIgeTI9IjUuNjQiPjwvbGluZT48bGluZSB4MT0iMTguMzYiIHkxPSIxOC4zNiIgeDI9IjE5Ljc4IiB5Mj0iMTkuNzgiPjwvbGluZT48bGluZSB4MT0iMSIgeTE9IjEyIiB4Mj0iMyIgeTI9IjEyIj48L2xpbmU+PGxpbmUgeDE9IjIxIiB5MT0iMTIiIHgyPSIyMyIgeTI9IjEyIj48L2xpbmU+PGxpbmUgeDE9IjQuMjIiIHkxPSIxOS43OCIgeDI9IjUuNjQiIHkyPSIxOC4zNiI+PC9saW5lPjxsaW5lIHgxPSIxOC4zNiIgeTE9IjUuNjQiIHgyPSIxOS43OCIgeTI9IjQuMjIiPjwvbGluZT48L3N2Zz4nLAogICAgbW9vbjogJzxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGQ9Ik0yMSAxMi43OUE5IDkgMCAxIDEgMTEuMjEgMyA3IDcgMCAwIDAgMjEgMTIuNzl6Ij48L3BhdGg+PC9zdmc+JywKICAgIGVuY2lyY2xlOiAnPHN2ZyB2aWV3Qm94PSItNjUgLTY1IDEzMCAxMzAiPjxkZWZzPjxmaWx0ZXIgaWQ9Ik1ZLWJsdXIiPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMiPjwvZmVHYXVzc2lhbkJsdXI+PC9maWx0ZXI+PC9kZWZzPjxnIGZpbGw9ImN1cnJlbnRDb2xvciI+PGcgY2xhc3M9Ik1ZLXJvdGF0ZSI+PGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9Im5vbmUiPjxwYXRoIGZpbHRlcj0idXJsKCNNWS1ibHVyKSIgb3BhY2l0eT0iMC41IiBkPSJNIDAgNDAgYSAzNSAzNSAwIDAgMSAwIC03MCAxMCAxMCAwIDAgMCAwIC0yMCA0NSA0NSAwIDAgMCAwIDkwIj48L3BhdGg+PHBhdGggZD0iTSAwIDQwIGEgMzkgMzkgMCAwIDEgMCAtNzggMiAyIDAgMCAwIDAgLTQgNDEgNDEgMCAwIDAgMCA4MiI+PC9wYXRoPjwvZz48L2c+PC9nPjwvc3ZnPicsCiAgICBtaTogJzxzdmcgZmlsbD0iY3VycmVudENvbG9yIiB2aWV3Qm94PSIwLCAwLCA0MDAsNDAwIj48cGF0aCBkPSJNMTU0LjI1NCAxNC4zMzMgQyAxNTMuOTQwIDE0Ljg4MywxNTIuOTIyIDE3LjczMywxNTEuOTkwIDIwLjY2NyBDIDE1MS4wNTkgMjMuNjAwLDE0OC4wMzQgMzAuNTMwLDE0NS4yNjggMzYuMDY2IEMgMTQwLjM0OSA0NS45MTIsMTMzLjgwMSA2NC45MTIsMTM0LjkzNiA2Ni4wNDcgQyAxMzUuMjUwIDY2LjM2MSwxNDAuMjE2IDYyLjQxNSwxNDUuOTcwIDU3LjI3NiBDIDE1MS43MjQgNTIuMTM4LDE2MC41MzUgNDQuODA1LDE2NS41NDkgNDAuOTgxIEMgMTc2LjA1NyAzMi45NjcsMTc2LjA5NSAzMi44NDUsMTcwLjMzMyAyNS41NzIgQyAxNjMuODkzIDE3LjQ0MywxNTUuNzMzIDExLjczOSwxNTQuMjU0IDE0LjMzMyBNMjExLjM1NSA0Ny42NjcgQyAyMDUuNzQ4IDc3LjIyMiwxOTUuNTQ3IDkzLjU4MCwxNjAuMTIxIDEyOS44MjMgQyAxMzcuMjUxIDE1My4yMjEsMTI4LjQ5MyAxNjAuMDk5LDExNy4zMDMgMTYzLjQ1MSBDIDEwMi41MjMgMTY3Ljg3OCw5OS40ODMgMTczLjg3MCwxMDMuODMyIDE5MC4wMDAgQyAxMDYuNDYxIDE5OS43NTQsMTA1LjYwMiAyMDguNDkyLDEwMC41MjIgMjIzLjY0NyBDIDkzLjM1NyAyNDUuMDI2LDk1LjQ4MSAyNTYuNTYyLDEwOS4yNjggMjcxLjE0MCBMIDExNi4wMTkgMjc4LjI3OCAxMTMuOTU4IDI4NC4xMzkgQyAxMTAuMjI0IDI5NC43NTUsMTA1Ljg0OSAyOTkuNjgyLDkyLjYyNiAzMDguMTYzIEMgODUuNjgyIDMxMi42MTYsODAuMDAxIDMxNi4zNTIsODAuMDAxIDMxNi40NjQgQyA4MC4wMTAgMzE3Ljk4OCw4Ny45NzQgMzQ1Ljc1Miw4OC41NzUgMzQ2LjM1MyBDIDkxLjUxOCAzNDkuMjk2LDExNy40NTMgMzE3LjQ3MCwxMzEuNDgyIDI5My43MDAgQyAxMzYuMzc5IDI4NS40MDMsMTQ0LjU2NSAyNzMuMDc2LDE0OS42NzQgMjY2LjMwNyBMIDE1OC45NjQgMjU0LjAwMCAxNTguMDgyIDI2Mi4wMDAgQyAxNTcuNTk4IDI2Ni40MDAsMTU1LjY1MiAyNzkuMjgwLDE1My43NTggMjkwLjYyMyBDIDE0OS4wODEgMzE4LjY0MiwxNTMuNzI3IDMzOC4xMTUsMTY3LjE5NCAzNDYuOTQzIEMgMTY5LjY0OSAzNDguNTUzLDE3Mi4zMzUgMzUxLjc0MCwxNzMuMTYyIDM1NC4wMjcgQyAxNzguNjMwIDM2OS4xNDksMTk5Ljc0OSAzODEuOTM3LDIyNC45MDEgMzg1LjM1NiBDIDI1MS4yODYgMzg4Ljk0MiwzMzkuNjUzIDM4MC41NzMsMzQ5LjMzMyAzNzMuNTcyIEMgMzY1LjE5MSAzNjIuMTAzLDM2Ny4zNzkgMjg0LjIzMSwzNTIuMDc0IDI3Ni4wNDAgQyAzNDUuMDU5IDI3Mi4yODUsMzQ0LjY3NyAyNzMuMTc2LDM0NC41MzEgMjkzLjY3MyBDIDM0NC4yODEgMzI4Ljg0MiwzMzMuODUxIDM1MS43NTAsMzEzLjkzOSAzNjAuODY2IEMgMjk4Ljc0NyAzNjcuODIxLDIyNi43MzQgMzczLjI3NSwyMDkuMzMzIDM2OC43ODkgQyAxNzcuMzQ3IDM2MC41NDEsMTcwLjA0NCAzNTEuNDM5LDE3MC4xODYgMzIwLjAwMCBDIDE3MC4yNzggMjk5LjYzMywxNzkuMjgyIDI1MC42NjcsMTgyLjkzNSAyNTAuNjY3IEMgMTg2LjA4NSAyNTAuNjY3LDE5Ni44NzcgMjYwLjEyMiwyMDYuODMwIDI3MS42MDIgQyAyMjUuMDc1IDI5Mi42NDYsMjI2LjE0NSAyOTIuMzU5LDIzMS44NjAgMjY0Ljg5MCBDIDI0OS4zMzIgMTgwLjkwMiwyNDYuNTEwIDE0Ni40NDAsMjE5Ljk4NiAxMTkuOTAwIEwgMjA5Ljg5MiAxMDkuODAwIDIxNi4xOTggMTAyLjAyNyBDIDIyNy41MTUgODguMDc3LDIzNi4yOTAgNjUuNzc3LDIzMy40MjYgNTguMjQzIEMgMjI4Ljg2NSA0Ni4yNDYsMjEzLjA2MSAzOC42NzQsMjExLjM1NSA0Ny42NjcgTTE0OS42NjcgNzEuNDgyIEMgMTQ0LjA2NCA3My45NzAsMTUwLjU4OCA5NC4zNjksMTYwLjM3MyAxMDQuOTYwIEMgMTYzLjYxMyAxMDguNDY1LDE2Ni44OTggMTEyLjUwOSwxNjcuNjc0IDExMy45NDcgQyAxNzAuNDM4IDExOS4wNjMsMTcxLjE1NiAxMDQuOTc4LDE2OC44NzYgOTAuMzY1IEMgMTY2LjI3NSA3My42ODgsMTU5LjU2MyA2Ny4wOTAsMTQ5LjY2NyA3MS40ODIgTTg5LjMzMyAxMDIuNDc0IEMgODkuMzMzIDEwOS42NDksMTEyLjczNCAxMzAuOTMwLDEyMC4wMDAgMTMwLjM2NCBDIDEzMS4zODEgMTI5LjQ3NywxMTkuODM4IDEwOS44NTEsMTA0LjY2NyAxMDQuMjk0IEMgOTguMzQwIDEwMS45NzcsODkuMzMzIDEwMC45MDgsODkuMzMzIDEwMi40NzQgTTIxMS4zMjEgMTQxLjY2NyBDIDIxOS4zNzYgMTQ4LjYzMSwyMTkuMDU5IDE4Mi4yNzYsMjEwLjczMCAyMDQuMjc5IEMgMjA1LjY1MiAyMTcuNjk3LDIwNi4xNDcgMjE3LjQ4NCwxODYuMTk5IDIxNC44MTUgQyAxNjcuMzA0IDIxMi4yODcsMTY4LjE1NyAyMTIuODA2LDE2My4zMTggMjAwLjg3NyBDIDE2MC43MDkgMTk0LjQ0NiwxNTQuMzE1IDE4Ny45MDgsMTUyLjQ1NCAxODkuNzY5IEMgMTUxLjk0NiAxOTAuMjc2LDE1MS4xMDcgMTk1LjkzNiwxNTAuNTkwIDIwMi4zNDYgQyAxNDguNjk1IDIyNS44MzcsMTIzLjcwMyAyODIuODE0LDExNy44NTcgMjc2Ljk2OCBDIDExNS4yMTcgMjc0LjMyOCwxMjguNDQ5IDE4Ny42MzIsMTMyLjg1NSAxNzguNzA1IEMgMTQ0LjQxMSAxNTUuMjg4LDE3MS4wNzkgMTQwLjM5NywyMDQuMjU5IDEzOC44MzYgQyAyMDYuMjY5IDEzOC43NDEsMjA5LjM4MCAxMzkuOTg4LDIxMS4zMjEgMTQxLjY2NyI+PC9wYXRoPjwvc3ZnPicsCiAgICB5aW5nOiAnPHN2ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAsIDAsIDQwMCw0MDAiPjxwYXRoIGQ9Ik0xNTguNjY3IDE4Ljc0MSBDIDE0OC4wMzMgMjIuMzM2LDEzNi42MjAgMjYuNTI4LDEzMy4zMDQgMjguMDU4IEwgMTI3LjI3NCAzMC44MzggMTE2LjgwMCAyNy40MTkgQyAxMDMuOTg5IDIzLjIzNyw5OS44MzggMjMuMjMzLDk0Ljg5MyAyNy4zOTkgQyA5NC42NTAgMjcuNjAzLDk4LjE5NiAzMi40NzIsMTAyLjc3MSAzOC4yMTggQyAxMTguMTk2IDU3LjU5MiwxMjMuOTczIDc1LjA0NSwxMjQuMDI5IDEwMi40NTEgQyAxMjQuMDYzIDExOS4wNTQsMTI1LjkwMyAxMjQuMzQ2LDEzNC41MDggMTMyLjYwNCBDIDE0My44MzggMTQxLjU1OCwxNDEuNzA2IDE0OC4xNDIsMTI4LjY2NyAxNTAuNjM3IEMgMTI0LjI2NyAxNTEuNDc5LDExNS4yNjcgMTUzLjY5MCwxMDguNjY3IDE1NS41NTIgQyAxMDIuMDY3IDE1Ny40MTMsODEuNzI3IDE2MS44NTUsNjMuNDY3IDE2NS40MjMgQyAzNi42NDcgMTcwLjY2MywyOS42NjUgMTcyLjQ3NiwyNy4xMzQgMTc0Ljg1NCBDIDI0LjEwOCAxNzcuNjk2LDIyLjk0MSAxODEuMjcyLDI1LjAwMCAxODEuMzkxIEMgMjUuNTUwIDE4MS40MjMsMjguNzAwIDE4MS45ODMsMzIuMDAwIDE4Mi42MzUgQyAzNi43ODcgMTgzLjU4MSw0NC43MzkgMTgyLjcxMyw3MS4zMzMgMTc4LjMzOCBDIDExNi44MjMgMTcwLjg1NSwxMTYuMTMzIDE3MC41NDMsMTE3LjQ4NiAxOTkuMjY4IEMgMTE4LjQ4NSAyMjAuNDc5LDEyMS40MDkgMjI5LjQ3OSwxMzAuMTM5IDIzOC4yMDkgQyAxNDAuNTcwIDI0OC42NDAsMTQ4LjAwMCAyNDMuNTc0LDE0OC4wMDAgMjI2LjAyOSBDIDE0OC4wMDAgMjEzLjkyMCwxNTAuNjAyIDIwOC4wMDAsMTU1LjE1NiAyMDkuNzQ3IEMgMTU4LjgzOSAyMTEuMTYxLDE1OS4yMzIgMjE0LjYyNywxNTYuNTkzIDIyMi4zOTMgQyAxNTMuMzEyIDIzMi4wNDQsMTUzLjUxNiAyNDEuODUxLDE1Ny4xNDQgMjQ4Ljk2MyBDIDE2MC42NzkgMjU1Ljg5MSwxNjAuNzA3IDI1Ny42MTQsMTU3LjMzMyAyNjAuNjY3IEMgMTUzLjk0NSAyNjMuNzMzLDE1My45ODEgMjY2LjExMCwxNTcuNTM2IDI3NC4xNDcgQyAxNjMuNDE0IDI4Ny40MzYsMTYxLjk5NCAzMTMuNTk4LDE1NC45NTUgMzIxLjY2NyBDIDE1MS4zMzAgMzI1LjgyMywxMjguNTY3IDMyNC4yMDUsMTE0LjI4NyAzMTguNzc2IEMgMTA5LjAxMCAzMTYuNzcwLDExMS41ODUgMzEyLjM2MywxMjcuOTM5IDI5NS40MTMgQyAxNDUuNjY1IDI3Ny4wNDEsMTQ4LjU3MSAyNzIuNTkxLDE0MS41MTkgMjc0LjYxMyBDIDEzNS43MjUgMjc2LjI3NSwxMzIuNzgxIDI3OC4xMTksMTI0Ljg3NCAyODUuMDM4IEMgMTA3LjE2MCAzMDAuNTM5LDkxLjEyMCAzMDIuNjc4LDc1LjE1MCAyOTEuNjY3IEMgNjQuMjcyIDI4NC4xNjYsNjIuMzYzIDI4My45NTYsNTcuMDAxIDI4OS42NjcgQyAzOS41OTAgMzA4LjIwOCw1MC44ODkgMzI4LjI2Nyw4Mi4wMDAgMzM0LjA1MiBDIDk5LjY4NyAzMzcuMzQxLDExNC43NjkgMzQyLjAyMiwxMjYuMzc2IDM0Ny44MjUgQyAxNjMuNTM0IDM2Ni40MDYsMTc1LjY3NCAzNjkuNzgxLDE4Mi4xMzAgMzYzLjMyNSBMIDE4NS40NzIgMzU5Ljk4MyAxODQuNTM2IDMyMS41ODEgQyAxODMuMTQzIDI2NC4zODUsMTg2LjYwNCAyNDQuODg5LDE5Ny4zNjAgMjQ5LjM0NSBDIDIwMS4yMzQgMjUwLjk0OSwyMjAuMDAwIDI2OS45MzYsMjIwLjAwMCAyNzIuMjUwIEMgMjIwLjAwMCAyNzQuNDEzLDIzMC4yMjMgMjczLjM2OSwyMzIuMjQwIDI3MS4wMDAgQyAyMzcuNDA0IDI2NC45MzUsMjQwLjM4NCAyNTcuNzYxLDI0Mi4yMTYgMjQ2Ljk4NiBDIDI0NS4zMTMgMjI4Ljc2NywyNTAuNTE1IDIxNS4xODQsMjY3Ljg3MSAxODAuMDAwIEMgMjg2LjIwMyAxNDIuODM4LDI5Mi4wMDAgMTM1LjI1MiwyOTIuMDAwIDE0OC40MjUgQyAyOTIuMDAwIDE2MC43NTYsMzAxLjc0NyAxNzkuNzA3LDMwNi41NjAgMTc2LjczMyBDIDMxMC4yMzQgMTc0LjQ2MiwzMDYuNjA5IDE5MC4zMTQsMzAwLjc5MiAyMDEuOTU1IEMgMjkzLjQ5MCAyMTYuNTY5LDI5Mi44NjkgMjIzLjQxNywyOTcuODcwIDIzNC4xNTggQyAzMDMuMDQxIDI0NS4yNjMsMzA5LjA4MSAyNDguMDAxLDMxNC43NjggMjQxLjgxOSBDIDMyNi43NjYgMjI4Ljc3NiwzNDUuMzQ4IDIyNi44NTksMzUwLjQ4NiAyMzguMTM1IEMgMzU4Ljk4OCAyNTYuNzk1LDMyMC4wMDIgMzIxLjc0OCwyNzguNjY3IDM1Ny43OTEgQyAyNTEuMzkyIDM4MS41NzQsMjQ4LjA1NCAzODUuMzMzLDI1NC4yMTIgMzg1LjMzMyBDIDI1NS4zNDEgMzg1LjMzMywyNjUuNjU2IDM3OS43MzksMjc3LjEzMyAzNzIuOTAyIEMgMjg4LjYxMCAzNjYuMDY1LDMwMi4yMTkgMzU4LjAxNiwzMDcuMzc2IDM1NS4wMTUgQyAzNTMuMjM3IDMyOC4zMjksMzg5LjcyNyAyNTguODg1LDM3Mi45MTUgMjMwLjI4NSBDIDM2OC4wMDggMjIxLjkzNywzNTguOTk3IDIxNS41NDksMzQ3LjE3NyAyMTIuMDQwIEMgMzMzLjcyNiAyMDguMDQ3LDMzMy4wNTkgMjA3LjA2MSwzMzUuNDI0IDE5NC42NjMgQyAzMzkuMDg3IDE3NS40NTcsMzM3Ljg1NCAxNjUuOTgyLDMzMC42MTkgMTU3Ljc0MiBDIDMyNS4zNDggMTUxLjczOCwzMjUuNTcxIDE0OS44MTIsMzMzLjEyNiAxMzYuMTE4IEMgMzQ3LjQ0MiAxMTAuMTY4LDM1NC44ODMgODcuMzc4LDM1Ni42NzMgNjQuMDAwIEMgMzU3LjIwNiA1Ny4wMzMsMzU4LjUzOSA0OS41ODYsMzU5LjYzNSA0Ny40NTAgQyAzNzMuMzUxIDIwLjcwNCwzMTYuOTQ2IDE0LjI2NiwzMDAuNDQ3IDQwLjY5NCBDIDI5OC4zNjggNDQuMDI0LDI5NS4wOTMgNDguODE3LDI5My4xNzAgNTEuMzQ0IEMgMjkxLjI0NiA1My44NzIsMjg4LjY3NCA1OS45MTYsMjg3LjQ1MyA2NC43NzYgQyAyODQuODEwIDc1LjMwMCwyNzkuMDk0IDg4LjI5NSwyNzMuNTg4IDk2LjI5NyBDIDI3MS4zOTQgOTkuNDg1LDI2Ny42NDkgMTA2Ljc0MCwyNjUuMjY1IDExMi40MTkgQyAyNTkuODc5IDEyNS4yNDksMjUzLjc1MCAxMzEuMzM4LDI0Ny40NzkgMTMwLjA4OCBDIDIzNS4xNzggMTI3LjYzNSwyMjkuNzg3IDEyNy44MzUsMjE2Ljg1NCAxMzEuMjIzIEMgMjAzLjI0MyAxMzQuNzg4LDE5NC4wNzIgMTM1LjYwOCwxOTIuNjk2IDEzMy4zODEgQyAxOTEuMzU1IDEzMS4yMTEsMTk4LjIzMSAxMTIuODI5LDIwNi43MTUgOTUuOTA0IEMgMjMyLjgxMSA0My44NDUsMjI4LjAzMSAyMC4xMjUsMTkwLjA4OCAxMy40MDIgQyAxNzkuNDcxIDExLjUyMSwxODAuNTgzIDExLjMzMiwxNTguNjY3IDE4Ljc0MSBNMTQ3Ljg2MSA0MC4wOTUgQyAxNTEuNTI0IDQwLjg4MCwxNjEuMzAzIDQyLjIzMCwxNjkuNTk0IDQzLjA5NSBDIDE4My43NzUgNDQuNTc0LDE4NC42OTIgNDQuODQ5LDE4NS4xMDIgNDcuNzQwIEMgMTg1Ljc4MyA1Mi41NDMsMTgzLjA0NSA1NC42NjcsMTc2LjE3MCA1NC42NjYgQyAxNzIuNzc3IDU0LjY2NiwxNjYuMzgxIDU1Ljk2NCwxNjEuOTU3IDU3LjU1MCBDIDE1MS42NzYgNjEuMjM3LDE0Ny45MzIgNjAuMzM5LDE0Mi45MzQgNTIuOTg5IEMgMTMzLjgxOSAzOS41ODAsMTM0LjcwMSAzNy4yNzIsMTQ3Ljg2MSA0MC4wOTUgTTE4OC43NDUgMTM1LjM3NiBDIDE4NS44NzEgMTM3LjU0OSwxNzEuMzEzIDEzOC4xMjUsMTcwLjA3MCAxMzYuMTE0IEMgMTY4Ljg5NSAxMzQuMjExLDE3MS44OTYgMTMzLjU0OSwxODIuMDAwIDEzMy40ODEgQyAxOTAuNDg2IDEzMy40MjQsMTkxLjA5OCAxMzMuNTk2LDE4OC43NDUgMTM1LjM3NiBNMjQ0LjAwMCAxNDguMTcyIEMgMjQ0LjAwMCAxNDkuMDAwLDIzNi40MzAgMTY2LjY5OCwyMjcuMTc4IDE4Ny41MDAgTCAyMTAuMzU2IDIyNS4zMjIgMjAzLjA1MyAyMjkuODkwIEMgMTgyLjg3MyAyNDIuNTEzLDE3NS4wMTIgMjQyLjM5OCwxODIuMzM3IDIyOS41ODYgQyAxOTguNzE0IDIwMC45NDEsMjAyLjI3NCAxODYuODgwLDE5NC42MTEgMTgxLjExMiBDIDE4OS41MjcgMTc3LjI4NSwxNjguODcyIDE3NC45NDQsMTU5LjY4NSAxNzcuMTU0IEMgMTQzLjcyMSAxODAuOTkzLDEzOC4wODQgMTc5Ljc4OCwxMzIuNTU5IDE3MS4zNTUgQyAxMjkuMjM5IDE2Ni4yODksMTMwLjQ1MSAxNjUuOTY4LDE1MS40ODcgMTY2LjM0MSBDIDE3Mi41ODIgMTY2LjcxNSwxNzYuMDQ4IDE2NS45MzcsMTg0Ljk4NyAxNTguODI1IEMgMTkzLjU1MiAxNTIuMDA5LDIwMy4wNjEgMTQ5LjAxNCwyMTkuMzMzIDE0OC4wMDcgQyAyNDIuNzkyIDE0Ni41NTUsMjQ0LjAwMCAxNDYuNTYzLDI0NC4wMDAgMTQ4LjE3MiBNMTQ4LjYxMiAyNjkuNDIyIEMgMTQ3LjA0OCAyNzEuOTUyLDE0OS4zMjkgMjcyLjU3NiwxNTEuNjUxIDI3MC4yNTQgQyAxNTMuNzI5IDI2OC4xNzUsMTUzLjczMyAyNjguMDAwLDE1MS42OTggMjY4LjAwMCBDIDE1MC40ODQgMjY4LjAwMCwxNDkuMDk1IDI2OC42NDAsMTQ4LjYxMiAyNjkuNDIyIj48L3BhdGg+PC9zdmc+JywKICAgIGxvYWRlcjogJzxzdmc+PGRlZnM+PGZpbHRlciBpZD0iTVktbC1mIj48ZmVHYXVzc2lhbkJsdXIgaW49IlNvdXJjZUdyYXBoaWMiIHN0ZERldmlhdGlvbj0iMiIgcmVzdWx0PSJibHVyIiAvPjxmZUNvbG9yTWF0cml4IGluPSJibHVyIiBtb2RlPSJtYXRyaXgiIHZhbHVlcz0iMSAwIDAgMCAwICAwIDEgMCAwIDAgIDAgMCAxIDAgMCAgMCAwIDAgNSAtMiIgcmVzdWx0PSJnb29leSIgLz48ZmVDb21wb3NpdGUgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iZ29vZXkiIG9wZXJhdG9yPSJhdG9wIi8+PC9maWx0ZXI+PC9kZWZzPjwvc3ZnPicsCiAgICBleHBhbmQ6ICc8c3ZnIGZpbGw9ImN1cnJlbnRDb2xvciIgdmlld0JveD0iMCAwIDY0IDY0IiBmaWxsPSIjMDEyZTUyIj48cGF0aCBkPSJtNDggOGgtMjZjLTEuMTA0IDAtMiAuODk2LTIgMnMuODk2IDIgMiAyaDI2YzIuMjA2IDAgNCAxLjc5NCA0IDR2MzJjMCAyLjIwNi0xLjc5NCA0LTQgNGgtMzJjLTIuMjA2IDAtNC0xLjc5NC00LTR2LTI2YzAtMS4xMDQtLjg5Ni0yLTItMnMtMiAuODk2LTIgMnYyNmMwIDQuNDExIDMuNTg5IDggOCA4aDMyYzQuNDExIDAgOC0zLjU4OSA4LTh2LTMyYzAtNC40MTEtMy41ODktOC04LTh6Ii8+PHBhdGggZD0ibTI5IDQyYzAgMS4xMDQuODk2IDIgMiAyaDExYzEuMTA0IDAgMi0uODk2IDItMnYtMTFjMC0xLjEwNC0uODk2LTItMi0ycy0yIC44OTYtMiAydjYuMTcybC0xNi41ODYtMTYuNTg2Yy0uNzgtLjc4MS0yLjA0OC0uNzgxLTIuODI4IDAtLjc4MS43ODEtLjc4MSAyLjA0NyAwIDIuODI4bDE2LjU4NiAxNi41ODZoLTYuMTcyYy0xLjEwNCAwLTIgLjg5Ni0yIDJ6Ii8+PC9zdmc+JywKICAgIHNocmluazogJzxzdmcgZmlsbD0iY3VycmVudENvbG9yIiB2aWV3Qm94PSIwIDAgNjQgNjQiPjxwYXRoIGQ9Im00OCA4aC0zMmMtNC40MTEgMC04IDMuNTg5LTggOHYzMmMwIDQuNDExIDMuNTg5IDggOCA4aDI2YzEuMTA0IDAgMi0uODk2IDItMnMtLjg5Ni0yLTItMmgtMjZjLTIuMjA2IDAtNC0xLjc5NC00LTR2LTMyYzAtMi4yMDYgMS43OTQtNCA0LTRoMzJjMi4yMDYgMCA0IDEuNzk0IDQgNHYyNmMwIDEuMTA0Ljg5NiAyIDIgMnMyLS44OTYgMi0ydi0yNmMwLTQuNDExLTMuNTg5LTgtOC04eiIvPjxwYXRoIGQ9Im0zNSAyMmMwLTEuMTA0LS44OTYtMi0yLTJoLTExYy0xLjEwNCAwLTIgLjg5Ni0yIDJ2MTFjMCAxLjEwNC44OTYgMiAyIDJzMi0uODk2IDItMnYtNi4xNzJsMTYuNTg2IDE2LjU4NmMuMzkuMzkxLjkwMi41ODYgMS40MTQuNTg2czEuMDI0LS4xOTUgMS40MTQtLjU4NmMuNzgxLS43ODEuNzgxLTIuMDQ3IDAtMi44MjhsLTE2LjU4Ni0xNi41ODZoNi4xNzJjMS4xMDQgMCAyLS44OTYgMi0yeiIvPjwvc3ZnPicKICB9LCBpc0ppZXhpUmVnZXggPSAvKGp4fHVybHx2KT1odHRwcz86L2k7CiAgbGV0IG0zdThWaWRlbzsKICAhaXNTbmlmZklmcmFtZSAmJiAoSXMoaXNKaWV4aVJlZ2V4KSAmJiBJcyhpc1ZpcFNpdGVSZWdleCwgSHJlZi5yZXBsYWNlKC8uKz0oaHR0cHM/OikvLCAiJDEiKSkgfHwgaXNOb3RUb3AgJiYgKElzKC89aHR0cHM/Oi4rXC5tM3U4LykgfHwgKG0zdThWaWRlbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInZpZGVvIHNvdXJjZVtzcmNdLCB2aWRlb1tzcmNdIikpICYmIC9cLm0zdTgvLnRlc3QobTN1OFZpZGVvLnNyYykpKSAmJiAoYWRkQ3NzKCJcbmJvZHkgPiAqOm5vdChzY3JpcHQpICsgc2NyaXB0IH4gKltpZF06bm90KFtjbGFzc10pIHsiICsgUHVyaWZ5U3R5bGUgKyAifSIpLCAKICBmaXhNM3U4UGxheWluZygpKTsKICBjb25zdCBNRVNTQUdFX0lEID0gTkFNRSArICIyMC4yMC5maW5hbCI7CiAgaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGZ1bmN0aW9uKGUpIHsKICAgIGNvbnN0IHQgPSBlLmRhdGE7CiAgICB0ICYmIHQuX2lkID09PSBNRVNTQUdFX0lEICYmIChpc05vdFRvcCAmJiB0LnBhcmVudCA/ICh0LmZyb20gPSBsb2NhdGlvbi5ocmVmLCB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKHQsICIqIikpIDogaXNUb3AgJiYgdC5hY3Rpb24gJiYgRS5lbWl0KHQuYWN0aW9uLCB0KSk7CiAgfSkpLCBpc05vdFRvcCAmJiBsb2NhdGlvbi5ocmVmID09PSBTbmlmZkNoZWNrVXJsKSByZXR1cm4gdm9pZCB3aW5kb3cudG9wLnBvc3RNZXNzYWdlKHsKICAgIF9pZDogTUVTU0FHRV9JRCwKICAgIGFjdGlvbjogImVuYWJsZS5zbmlmZiIsCiAgICBmcm9tOiBsb2NhdGlvbi5ocmVmCiAgfSwgIioiKTsKICBjb25zdCBpc1ZpZGVvVXJsUmVnZXggPSAvXihodHRwfFwvXC8pLisoXC4obXA0fG0zdTgpfG0zdThwbGF5LnBocCkvLCBpc0ludmFsaWRTbmlmZlVybFJlZ2V4ID0gL2J0cmFjZS52aWRlby5xcS5jb218bG1zankucXEuY29tfHZsaXZlLnFxdmlkZW8udGMucXEuY29tfHF6b25lc3R5bGUuZ3RpbWcuY258aW1nLmJhaWR1LmNvbXxkcGxheWVyXC9cdysubXA0fHZpcC5md3dteTEuY258Y29tLXQtaXFpeWkuY29tfGh6MTg5Y2xvdWQub29zLWh6LmN0eXVuYXBpLmNufHZpZGVvLmRhLm1ndHYuY29tfCh0aXRhbi5tZ3R2LmNvbXxjZG4ub3NzLWNuLmFsaXl1bmNzLmNvbS5nbXMtbGlnaHRpbmcuY29tKS4rbTN1OHxqaWVzaHVvLW9renkuY29tfG1hbmhvby5jbnxcL3szfXxcLihqc3xjc3MpLywgdmlkZW9VcmxzID0gW10sIHNuaWZmVmlkZW9VcmxzID0gW107CiAgbGV0IGlmcmFtZXMgPSB7fTsKICBpc05vdFRvcCAmJiBzbmlmZlZpZGVvKCk7CiAgbGV0IGlzVXJsRGV0ZWN0ID0gITE7CiAgRS5vbigidXJsLmNoYW5nZSIsIChmdW5jdGlvbihlKSB7CiAgICBsZXQge29sZFVybDogdCwgbmV3VXJsOiBpfSA9IGU7CiAgICBSVUxFU19HTygpOwogIH0pKSwgUlVMRVNfR08oKSwgSXMoL21vdmllXC5kb3ViYW5cLmNvbVwvdGFnXC8vKSAmJiAoYWRkQ3NzKCIuYXNpZGUsIC5leHRyYSwuZGFsZV9tb3ZpZV90YWdfYm90dG9tX2Jhbm5lciB7IiArIFB1cmlmeVN0eWxlICsgIn0iICsgcHJlZml4Q3NzKCIuZ3JpZC0xNi04IC5hcnRpY2xlIHt3aWR0aDogYXV0bztmbG9hdDogdW5zZXQ7fWgxIHtkaXNwbGF5OiBub25lO30jZGItbmF2LW1vdmllIHttYXJnaW4tYm90dG9tOiAyMHB4O30jZGItbmF2LW1vdmllIC5NWS1uYXYtaXRlbS1hIHtiYWNrZ3JvdW5kLWNvbG9yOiAjMjdhO2NvbG9yOiAjZmFmYWZhO3BhZGRpbmc6IDNweCA1cHg7Ym9yZGVyLXJhZGl1czogM3B4O30ubGlzdC13cCB7ZGlzcGxheTogZmxleDtmbGV4LXdyYXA6IHdyYXA7anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO21hcmdpbi10b3A6IDI1cHg7fWEuaXRlbSB7d2lkdGg6IDExOHB4O21hcmdpbjogMCA4cHg7fWRpdi5pdGVtIHt3aWR0aDogMTAwJTttYXJnaW4tbGVmdDogOHB4O21hcmdpbi1yaWdodDogOHB4O21hcmdpbi1ib3R0b206IDE2cHg7fWEuaXRlbSBwIHtwYWRkaW5nLXJpZ2h0OiAwO3RleHQtYWxpZ246IGNlbnRlcjt9YS5pdGVtIC5jb3Zlci13cCwgZGl2Lml0ZW0gLnBvc3RlciB7b3ZlcmZsb3c6IGhpZGRlbjtib3JkZXItcmFkaXVzOiAzcHg7Ym94LXNoYWRvdzogMCAxcHggNHB4IHJnYmEoMCwgMCwgMCwgMC4zOSk7Ym9yZGVyOiAzcHggc29saWQgI2YxZWRlZDtoZWlnaHQ6IGF1dG87fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzIwcHgpIHthLml0ZW0gLmNvdmVyLXdwIHtib3JkZXItd2lkdGg6IDA7fX1hLml0ZW0gLmNvdmVyLXdwOmhvdmVyLCBkaXYuaXRlbSAucG9zdGVyOmhvdmVyIHtib3gtc2hhZG93OiAwIDVweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC41KTt9YS5pdGVtIC5waWMgaW1nIHt3aWR0aDogMTAwJTtoZWlnaHQ6IDE2M3B4O29iamVjdC1maXQ6IGNvdmVyO31hLml0ZW0gLmNvdmVyLXdwOmFmdGVyIHtkaXNwbGF5OiBub25lO30udGFnLW5hdiB7bWFyZ2luLXJpZ2h0OiAwO30uTVktaXRlbS1kaXZpZGVyIHt3aWR0aDogMTAwJTt9Lk1ZLWl0ZW0tZGl2aWRlciArIC5NWS1pdGVtLWRpdmlkZXIge2Rpc3BsYXk6IG5vbmU7fSIsICIuTVktbWl5aW5nIikgKyBwcmVmaXhDc3MoIi5jYXRlZ29yeSB7d2lkdGg6IDEwMCU7d2hpdGUtc3BhY2U6IG5vd3JhcDtvdmVyZmxvdy14OiBhdXRvO30udGFncyB7bWFyZ2luLWJvdHRvbTogMWVtICFpbXBvcnRhbnQ7fS50YWdzLCAuTVktZG91YmFuLXNlYXJjaCB7cGFkZGluZy1sZWZ0OiA2cHg7cGFkZGluZy1yaWdodDogNnB4O30uY2hlY2tib3hfX2lucHV0IHt2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7fS50YWctbmF2IHttYXJnaW46IDAgYXV0bztmb250LXNpemU6IDEycHg7d2lkdGg6IDEwMCU7fS50YWctbmF2IC50YWJzLCAudGFnLW5hdiAuY2hlY2sge2Rpc3BsYXk6IGZsZXg7anVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7d2lkdGg6IDEwMCU7fS50YWctbmF2IC50YWJzIGEge3BhZGRpbmc6IDcuNXB4IDVweCA1cHg7fS50YWJzIGE6bm90KC50YWItY2hlY2tlZCkge2JvcmRlcjogMXB4IHNvbGlkICNkZmRmZGY7fS50YWJzIC50YWItY2hlY2tlZCB7Ym9yZGVyOiAxcHggc29saWQgIzI1OGRjZCFpbXBvcnRhbnQ7fS50YWItY2hlY2tlZDphZnRlciB7ZGlzcGxheTogbm9uZTt9LmNoZWNrYm94LCAucmFuZ2Uge21hcmdpbi1yaWdodDogNXB4O30uY2hlY2sge2Zsb2F0OiBub25lO21hcmdpbi10b3A6IDVweDt9Lmxpc3Qtd3Age21hcmdpbi10b3A6IDQwcHg7anVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7fS5saXN0LXdwLCAuaXRlbSAuY292ZXItd3Age292ZXJmbG93OiB1bnNldDt9YS5pdGVtIHt3aWR0aDogY2FsYygoMTAwJSAtIDE1cHgpIC8gMyk7dGV4dC1hbGlnbjogY2VudGVyO21hcmdpbjogMCAycHg7fWEuaXRlbSBwIHtwYWRkaW5nLXJpZ2h0OiAwO31hLml0ZW0gLmNvdmVyLXdwOmFmdGVyLCAucG9zdGVyOmFmdGVyIHtkaXNwbGF5OiBub25lO30udGFnLW5hdiAucmFuZ2UtZHJvcGRvd24ge2xlZnQ6IDAgIWltcG9ydGFudDt3aWR0aDogYXV0byAhaW1wb3J0YW50O3JpZ2h0OiAwICFpbXBvcnRhbnQ7dG9wOiAtNGVtICFpbXBvcnRhbnQ7fS5hcnRpY2xlIC5tb3JlIHttYXJnaW46IDFlbSAhaW1wb3J0YW50O30iLCAiLk1ZIikgKyAoaXNNb2JpbGUgPyBwcmVmaXhDc3MoIlxuYm9keSA+ICo6bm90KC5NWSkgeyIgKyBQdXJpZnlTdHlsZSArICJ9I2FwcCAuYXJ0aWNsZSwgLmFydGljbGUuTVkge3Bvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDA7bGVmdDogMDtyaWdodDogMDtwYWRkaW5nOiAxMHB4IDA7dHJhbnNpdGlvbjogYWxsIDAuOHM7fS5jYXRlZ29yeTo6LXdlYmtpdC1zY3JvbGxiYXIge3dpZHRoOiAxcHg7aGVpZ2h0OiAxcHg7YmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjMsIDIyMywgMjIzLCAwLjI1KTt9LmNhdGVnb3J5Ojotd2Via2l0LXNjcm9sbGJhci10cmFjayB7YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Ym9yZGVyOiAwcHggbm9uZSAjZmZmZmZmO2JvcmRlci1yYWRpdXM6IDUwcHg7fS5jYXRlZ29yeTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgey13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAwIDIuNXB4IHJnYmEoMCwgMCwgMCwgMC4xKTtib3gtc2hhZG93OiBpbnNldCAwIDAgMi41cHggcmdiYSgwLCAwLCAwLCAwLjEpO2JvcmRlci1yYWRpdXM6IDIuNXB4O2JhY2tncm91bmQtY29sb3I6IHJnYmEoMjIzLCAyMjMsIDIyMywgMC4yNSk7b3BhY2l0eTogMC43O3RyYW5zaXRpb246IG9wYWNpdHkgZWFzZS1pbi1vdXQgMjAwbXM7fS5jYXRlZ29yeTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge29wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMjMsIDIyMywgMjIzLCAwLjI1KTt9Lk1ZLWRvdWJhbi1zZWFyY2gge3Bvc2l0aW9uOiByZWxhdGl2ZTtkaXNwbGF5OiBmbGV4O21hcmdpbi1ib3R0b206IDVweDt9Lk1ZLWRvdWJhbi1zZWFyY2ggLmlucCB7aGVpZ2h0OiAzNHB4O3RleHQtYWxpZ246IGNlbnRlcjtjdXJzb3I6IHRleHQ7d2lkdGg6IDkwJTtib3JkZXItdG9wOiAxcHggc29saWQgI2RlZGVkZTtib3JkZXItbGVmdDogMXB4IHNvbGlkICNkZWRlZGU7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDt9Lk1ZLWRvdWJhbi1zZWFyY2ggLmlucCBpbnB1dCB7YmFja2dyb3VuZDogI2ZmZjt3aWR0aDogOTYlO21hcmdpbjogMDt0ZXh0LWFsaWduOiBsZWZ0O2hlaWdodDogMzBweDtwYWRkaW5nLWxlZnQ6IDEwcHg7b3V0bGluZTogbm9uZTt9Lk1ZLWRvdWJhbi1zZWFyY2ggaW5wdXQgey13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtib3JkZXI6IG5vbmU7YmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7fS5NWS1kb3ViYW4tc2VhcmNoIC5pbnAtYnRuIHtwb3NpdGlvbjogcmVsYXRpdmU7d2lkdGg6IDM3cHg7aGVpZ2h0OiAzNHB4O30uTVktZG91YmFuLXNlYXJjaCAuaW5wLWJ0biBpbnB1dCB7d2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO2ZvbnQtc2l6ZTogMDtwYWRkaW5nOiAzNXB4IDAgMCAwO292ZXJmbG93OiBoaWRkZW47Y29sb3I6IHRyYW5zcGFyZW50O2N1cnNvcjogcG9pbnRlcjt9Lk1ZLWRvdWJhbi1zZWFyY2ggLmlucC1idG4gaW5wdXQ6Zm9jdXMge291dGxpbmU6IG5vbmU7fS5NWS1kb3ViYW4tc2VhcmNoIC5pbnAge2JhY2tncm91bmQtaW1hZ2U6IHVybCgvL2ltZzMuZG91YmFuaW8uY29tL2RhZS9hY2NvdW50cy9yZXNvdXJjZXMvYTRhMzhhNS9tb3ZpZS9hc3NldHMvbmF2X212X2JnLnBuZz9zPTEpO30uTVktZG91YmFuLXNlYXJjaCAuaW5wLWJ0biBpbnB1dCB7YmFja2dyb3VuZDogdXJsKC8vaW1nMy5kb3ViYW5pby5jb20vZGFlL2FjY291bnRzL3Jlc291cmNlcy9hNGEzOGE1L21vdmllL2Fzc2V0cy9uYXZfbXZfYmcucG5nP3M9MSkgbm8tcmVwZWF0IDAgLTQwcHg7fS5NWS1pdGVtLWJhbGFuY2VyIHttYXJnaW4tbGVmdDogMTElO21hcmdpbi1yaWdodDogMTElO30iLCAiaHRtbCIpIDogIiIpKSwgCiAgJCgiaHRtbCIpLmFkZENsYXNzKCJNWS1taXlpbmciKSwgJCgoZnVuY3Rpb24oKSB7CiAgICBjb25zdCBlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmxpc3Qtd3AiKTsKICAgIGxldCB0ID0gITEsIGkgPSAhMTsKICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKChmdW5jdGlvbihlKSB7CiAgICAgIGlmIChpKSBpID0gITE7IGVsc2UgewogICAgICAgIGZvciAoY29uc3QgaSBvZiBlKSAiY2hpbGRMaXN0IiA9PSBpLnR5cGUgJiYgKHQgPSAhMCk7CiAgICAgICAgdCAmJiAoaSA9ICEwLCAkKCIubGlzdC13cCIpLmFwcGVuZCgnPGRpdiBjbGFzcz0iTVktaXRlbS1kaXZpZGVyIj48L2Rpdj4nKSk7CiAgICAgIH0KICAgIH0pKS5vYnNlcnZlKGUsIHsKICAgICAgYXR0cmlidXRlczogITAsCiAgICAgIGNoaWxkTGlzdDogITAKICAgIH0pLCAkKCIubmF2LWl0ZW1zIGxpIGEiKS5lYWNoKChmdW5jdGlvbihlKSB7CiAgICAgICQoZSkudGV4dCgpLmluY2x1ZGVzKCLliIbnsbsiKSAmJiAkKGUpLmFkZENsYXNzKCJNWS1uYXYtaXRlbS1hIikuaHRtbChOQU1FKTsKICAgIH0pKSwgJCgidGl0bGUiKS5odG1sKE5BTUUpLCBpc01vYmlsZSAmJiAoJCgiI2FwcCAuYXJ0aWNsZSAudGFncyIpLmJlZm9yZSgnPGRpdiBjbGFzcz0iTVktZG91YmFuLXNlYXJjaCI+PGRpdiBjbGFzcz0iaW5wIj48aW5wdXQgc2l6ZT0iMjIiIG1heGxlbmd0aD0iNjAiIHBsYWNlaG9sZGVyPSLmkJzntKLnlLXlvbHjgIHnlLXop4bliafjgIHnu7zoibrjgIHlvbHkuroiIHZhbHVlPSIiIGF1dG9jb21wbGV0ZT0ib2ZmIj48L2Rpdj48ZGl2IGNsYXNzPSJpbnAtYnRuIj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0i5pCc57SiIj48L2Rpdj48L2Rpdj4nKSwgCiAgICAkKCJib2R5IikucHJlcGVuZCgkKCIjYXBwIC5hcnRpY2xlIikuYWRkQ2xhc3MoIk1ZIikpLCAkKCIuTVktZG91YmFuLXNlYXJjaCBpbnB1dCIpLm9uKCJrZXl1cCIsIChmdW5jdGlvbihlKSB7CiAgICAgIDEzID09PSBlLmtleUNvZGUgJiYgKGUucHJldmVudERlZmF1bHQoKSwgbG9jYXRpb24uaHJlZiA9ICJodHRwczovL20uZG91YmFuLmNvbS9zZWFyY2gvP3F1ZXJ5PSIgKyBlLnRhcmdldC52YWx1ZSArICImdHlwZT1tb3ZpZSIpOwogICAgfSkpLCAkKCIuTVktZG91YmFuLXNlYXJjaCAuaW5wLWJ0biBpbnB1dCIpLm9uKCJjbGljayIsIChmdW5jdGlvbihlKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgY29uc3QgdCA9ICQoIi5NWS1kb3ViYW4tc2VhcmNoIGlucHV0IikudmFsKCk7CiAgICAgIGxvY2F0aW9uLmhyZWYgPSAiaHR0cHM6Ly9tLmRvdWJhbi5jb20vc2VhcmNoLz9xdWVyeT0iICsgdCArICImdHlwZT1tb3ZpZSI7CiAgICB9KSksIHNldEludGVydmFsKChmdW5jdGlvbigpIHsKICAgICAgJCgiLmxpc3Qtd3AgW2hyZWZdIikuZWFjaCgoZnVuY3Rpb24oZSkgewogICAgICAgIGNvbnN0IHQgPSAkKGUpLmF0dHIoImhyZWYiKTsKICAgICAgICB0LmluY2x1ZGVzKCJtb3ZpZS5kb3ViYW4uY29tIikgJiYgJChlKS5hdHRyKCJocmVmIiwgdC5yZXBsYWNlKCJtb3ZpZS5kb3ViYW4uY29tIiwgIm0uZG91YmFuLmNvbS9tb3ZpZSIpKS5hdHRyKCJ0YXJnZXQiLCAiX2JsYW5rIik7CiAgICAgIH0pKTsKICAgIH0pLCA1MDApKTsKICB9KSkpOwp9KCk7
Add Comment
Please, Sign In to add comment