<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<style>body{background-color:white;}</style>
<link href="data:text/css,%40layer%20htmltools%20%7B%0A%2Ehtml%2Dfill%2Dcontainer%20%7B%0Adisplay%3A%20flex%3B%0Aflex%2Ddirection%3A%20column%3B%0A%0Amin%2Dheight%3A%200%3B%0Amin%2Dwidth%3A%200%3B%0A%7D%0A%2Ehtml%2Dfill%2Dcontainer%20%3E%20%2Ehtml%2Dfill%2Ditem%20%7B%0A%0Aflex%3A%201%201%20auto%3B%0Amin%2Dheight%3A%200%3B%0Amin%2Dwidth%3A%200%3B%0A%7D%0A%2Ehtml%2Dfill%2Dcontainer%20%3E%20%3Anot%28%2Ehtml%2Dfill%2Ditem%29%20%7B%0A%0Aflex%3A%200%200%20auto%3B%0A%7D%0A%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEFkZCBhIG1ldGhvZCB0byBkZWxlZ2F0b3IgdGhhdCwgd2hlbiBpbnZva2VkLCBjYWxscwogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbgogIC8vIHRoZSBkZWxlZ2F0ZWUsIGJ1dCB0aGVyZSB3YXMgb25lIG9uIGRlbGVnYXRvciBiZWZvcmUKICAvLyBkZWxlZ2F0ZU1ldGhvZCB3YXMgY2FsbGVkLCB0aGVuIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLgogIC8vIEZvciBleGFtcGxlOgogIC8vCiAgLy8gdmFyIGEgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2ExJyk7IH0KICAvLyAgIG1ldGhvZDI6IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYTInKTsgfQogIC8vIH07CiAgLy8gdmFyIGIgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2IxJyk7IH0KICAvLyB9OwogIC8vIGRlbGVnYXRlTWV0aG9kKGEsIGIsICJtZXRob2QxIik7CiAgLy8gZGVsZWdhdGVNZXRob2QoYSwgYiwgIm1ldGhvZDIiKTsKICAvLyBhLm1ldGhvZDEoKTsKICAvLyBhLm1ldGhvZDIoKTsKICAvLwogIC8vIFRoZSBvdXRwdXQgd291bGQgYmUgImIxIiwgImEyIi4KICBmdW5jdGlvbiBkZWxlZ2F0ZU1ldGhvZChkZWxlZ2F0b3IsIGRlbGVnYXRlZSwgbWV0aG9kTmFtZSkgewogICAgdmFyIGluaGVyaXRlZCA9IGRlbGVnYXRvclttZXRob2ROYW1lXTsKICAgIGRlbGVnYXRvclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGFyZ2V0ID0gZGVsZWdhdGVlOwogICAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGVlW21ldGhvZE5hbWVdOwoKICAgICAgLy8gVGhlIG1ldGhvZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBkZWxlZ2F0ZWUuIEluc3RlYWQsCiAgICAgIC8vIGNhbGwgdGhlIG1ldGhvZCBvbiB0aGUgZGVsZWdhdG9yLCBpZiBpdCBleGlzdHMuCiAgICAgIGlmICghbWV0aG9kKSB7CiAgICAgICAgdGFyZ2V0ID0gZGVsZWdhdG9yOwogICAgICAgIG1ldGhvZCA9IGluaGVyaXRlZDsKICAgICAgfQoKICAgICAgaWYgKG1ldGhvZCkgewogICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9OwogIH0KCiAgLy8gSW1wbGVtZW50IGEgdmFndWUgZmFjc2ltaWxpZSBvZiBqUXVlcnkncyBkYXRhIG1ldGhvZAogIGZ1bmN0aW9uIGVsZW1lbnREYXRhKGVsLCBuYW1lLCB2YWx1ZSkgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgewogICAgICByZXR1cm4gZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV07CiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgewogICAgICBlbFsiaHRtbHdpZGdldF9kYXRhXyIgKyBuYW1lXSA9IHZhbHVlOwogICAgICByZXR1cm4gZWw7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGVsZW1lbnREYXRhOiAiICsKICAgICAgICBhcmd1bWVudHMubGVuZ3RoKTsKICAgIH0KICB9CgogIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleAogIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHsKICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1wtXFtcXVwvXHtcfVwoXClcKlwrXD9cLlxcXF5cJFx8XS9nLCAiXFwkJiIpOwogIH0KCiAgZnVuY3Rpb24gaGFzQ2xhc3MoZWwsIGNsYXNzTmFtZSkgewogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgiXFxiIiArIGVzY2FwZVJlZ0V4cChjbGFzc05hbWUpICsgIlxcYiIpOwogICAgcmV0dXJuIHJlLnRlc3QoZWwuY2xhc3NOYW1lKTsKICB9CgogIC8vIGVsZW1lbnRzIC0gYXJyYXkgKG9yIGFycmF5LWxpa2Ugb2JqZWN0KSBvZiBIVE1MIGVsZW1lbnRzCiAgLy8gY2xhc3NOYW1lIC0gY2xhc3MgbmFtZSB0byB0ZXN0IGZvcgogIC8vIGluY2x1ZGUgLSBpZiB0cnVlLCBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIGdpdmVuIGNsYXNzTmFtZTsKICAvLyAgIGlmIGZhbHNlLCBvbmx5IHJldHVybiBlbGVtZW50cyAqd2l0aG91dCogZ2l2ZW4gY2xhc3NOYW1lCiAgZnVuY3Rpb24gZmlsdGVyQnlDbGFzcyhlbGVtZW50cywgY2xhc3NOYW1lLCBpbmNsdWRlKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoaGFzQ2xhc3MoZWxlbWVudHNbaV0sIGNsYXNzTmFtZSkgPT0gaW5jbHVkZSkKICAgICAgICByZXN1bHRzLnB1c2goZWxlbWVudHNbaV0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICBmdW5jdGlvbiBvbihvYmosIGV2ZW50TmFtZSwgZnVuYykgewogICAgaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgIG9iai5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgfSBlbHNlIGlmIChvYmouYXR0YWNoRXZlbnQpIHsKICAgICAgb2JqLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvZmYob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmoucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgb2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jLCBmYWxzZSk7CiAgICBlbHNlIGlmIChvYmouZGV0YWNoRXZlbnQpIHsKICAgICAgb2JqLmRldGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICAvLyBUcmFuc2xhdGUgYXJyYXkgb2YgdmFsdWVzIHRvIHRvcC9yaWdodC9ib3R0b20vbGVmdCwgYXMgdXN1YWwgd2l0aAogIC8vIHRoZSAicGFkZGluZyIgQ1NTIHByb3BlcnR5CiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3BhZGRpbmcKICBmdW5jdGlvbiB1bnBhY2tQYWRkaW5nKHZhbHVlKSB7CiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gIm51bWJlciIpCiAgICAgIHZhbHVlID0gW3ZhbHVlXTsKICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMF0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzBdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDIpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDQpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzNdfTsKICAgIH0KICB9CgogIC8vIENvbnZlcnQgYW4gdW5wYWNrZWQgcGFkZGluZyBvYmplY3QgdG8gYSBDU1MgdmFsdWUKICBmdW5jdGlvbiBwYWRkaW5nVG9Dc3MocGFkZGluZ09iaikgewogICAgcmV0dXJuIHBhZGRpbmdPYmoudG9wICsgInB4ICIgKyBwYWRkaW5nT2JqLnJpZ2h0ICsgInB4ICIgKyBwYWRkaW5nT2JqLmJvdHRvbSArICJweCAiICsgcGFkZGluZ09iai5sZWZ0ICsgInB4IjsKICB9CgogIC8vIE1ha2VzIGEgbnVtYmVyIHN1aXRhYmxlIGZvciBDU1MKICBmdW5jdGlvbiBweCh4KSB7CiAgICBpZiAodHlwZW9mKHgpID09PSAibnVtYmVyIikKICAgICAgcmV0dXJuIHggKyAicHgiOwogICAgZWxzZQogICAgICByZXR1cm4geDsKICB9CgogIC8vIFJldHJpZXZlcyBydW50aW1lIHdpZGdldCBzaXppbmcgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuCiAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbnVsbCwgb3IgYW4gb2JqZWN0IHdpdGggZmlsbCwgcGFkZGluZywKICAvLyBkZWZhdWx0V2lkdGgsIGRlZmF1bHRIZWlnaHQgZmllbGRzLgogIGZ1bmN0aW9uIHNpemluZ1BvbGljeShlbCkgewogICAgdmFyIHNpemluZ0VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vaHRtbHdpZGdldC1zaXppbmcnXSIpOwogICAgaWYgKCFzaXppbmdFbCkKICAgICAgcmV0dXJuIG51bGw7CiAgICB2YXIgc3AgPSBKU09OLnBhcnNlKHNpemluZ0VsLnRleHRDb250ZW50IHx8IHNpemluZ0VsLnRleHQgfHwgInt9Iik7CiAgICBpZiAodmlld2VyTW9kZSkgewogICAgICByZXR1cm4gc3Audmlld2VyOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHNwLmJyb3dzZXI7CiAgICB9CiAgfQoKICAvLyBAcGFyYW0gdGFza3MgQXJyYXkgb2Ygc3RyaW5ncyAob3IgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2Ugbm8tb3ApLgogIC8vICAgRWFjaCBlbGVtZW50IG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCB5aWVsZHMgYQogIC8vICAgZnVuY3Rpb24uIE9yLCBjYW4gYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICJjb2RlIiBhbmQgImRhdGEiCiAgLy8gICBwcm9wZXJ0aWVzOyBpbiB0aGlzIGNhc2UsIHRoZSAiY29kZSIgcHJvcGVydHkgc2hvdWxkIGJlIGEgc3RyaW5nCiAgLy8gICBvZiBKUyB0aGF0J3MgYW4gZXhwciB0aGF0IHlpZWxkcyBhIGZ1bmN0aW9uLCBhbmQgImRhdGEiIHNob3VsZCBiZQogIC8vICAgYW4gb2JqZWN0IHRoYXQgd2lsbCBiZSBhZGRlZCBhcyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHdoZW4gdGhhdAogIC8vICAgZnVuY3Rpb24gaXMgY2FsbGVkLgogIC8vIEBwYXJhbSB0YXJnZXQgVGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgInRoaXMiIGZvciBlYWNoIGZ1bmN0aW9uCiAgLy8gICBleGVjdXRpb24uCiAgLy8gQHBhcmFtIGFyZ3MgQXJyYXkgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb25zLiAoVGhlCiAgLy8gICBzYW1lIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZCB0byBhbGwgZnVuY3Rpb25zLikKICBmdW5jdGlvbiBldmFsQW5kUnVuKHRhc2tzLCB0YXJnZXQsIGFyZ3MpIHsKICAgIGlmICh0YXNrcykgewogICAgICBmb3JFYWNoKHRhc2tzLCBmdW5jdGlvbih0YXNrKSB7CiAgICAgICAgdmFyIHRoZXNlQXJncyA9IGFyZ3M7CiAgICAgICAgaWYgKHR5cGVvZih0YXNrKSA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgIHRoZXNlQXJncyA9IHRoZXNlQXJncy5jb25jYXQoW3Rhc2suZGF0YV0pOwogICAgICAgICAgdGFzayA9IHRhc2suY29kZTsKICAgICAgICB9CiAgICAgICAgdmFyIHRhc2tGdW5jID0gdHJ5RXZhbCh0YXNrKTsKICAgICAgICBpZiAodHlwZW9mKHRhc2tGdW5jKSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXNrIG11c3QgYmUgYSBmdW5jdGlvbiEgU291cmNlOlxuIiArIHRhc2spOwogICAgICAgIH0KICAgICAgICB0YXNrRnVuYy5hcHBseSh0YXJnZXQsIHRoZXNlQXJncyk7CiAgICAgIH0pOwogICAgfQogIH0KCiAgLy8gQXR0ZW1wdCBldmFsKCkgYm90aCB3aXRoIGFuZCB3aXRob3V0IGVuY2xvc2luZyBpbiBwYXJlbnRoZXNlcy4KICAvLyBOb3RlIHRoYXQgZW5jbG9zaW5nIGNvZXJjZXMgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBpbnRvCiAgLy8gYW4gZXhwcmVzc2lvbiB0aGF0IGV2YWwoKSBjYW4gcGFyc2UKICAvLyAob3RoZXJ3aXNlLCBhIFN5bnRheEVycm9yIGlzIHRocm93bikKICBmdW5jdGlvbiB0cnlFdmFsKGNvZGUpIHsKICAgIHZhciByZXN1bHQgPSBudWxsOwogICAgdHJ5IHsKICAgICAgcmVzdWx0ID0gZXZhbCgiKCIgKyBjb2RlICsgIikiKTsKICAgIH0gY2F0Y2goZXJyb3IpIHsKICAgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikpIHsKICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIHJlc3VsdCA9IGV2YWwoY29kZSk7CiAgICAgIH0gY2F0Y2goZSkgewogICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHsKICAgICAgICAgIHRocm93IGVycm9yOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aHJvdyBlOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIGZ1bmN0aW9uIGluaXRTaXppbmcoZWwpIHsKICAgIHZhciBzaXppbmcgPSBzaXppbmdQb2xpY3koZWwpOwogICAgaWYgKCFzaXppbmcpCiAgICAgIHJldHVybjsKCiAgICB2YXIgY2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImh0bWx3aWRnZXRfY29udGFpbmVyIik7CiAgICBpZiAoIWNlbCkKICAgICAgcmV0dXJuOwoKICAgIGlmICh0eXBlb2Yoc2l6aW5nLnBhZGRpbmcpICE9PSAidW5kZWZpbmVkIikgewogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbiA9ICIwIjsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nID0gcGFkZGluZ1RvQ3NzKHVucGFja1BhZGRpbmcoc2l6aW5nLnBhZGRpbmcpKTsKICAgIH0KCiAgICBpZiAoc2l6aW5nLmZpbGwpIHsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLndpZHRoID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLndpZHRoID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICBjZWwuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwogICAgICB2YXIgcGFkID0gdW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZyk7CiAgICAgIGNlbC5zdHlsZS50b3AgPSBwYWQudG9wICsgInB4IjsKICAgICAgY2VsLnN0eWxlLnJpZ2h0ID0gcGFkLnJpZ2h0ICsgInB4IjsKICAgICAgY2VsLnN0eWxlLmJvdHRvbSA9IHBhZC5ib3R0b20gKyAicHgiOwogICAgICBjZWwuc3R5bGUubGVmdCA9IHBhZC5sZWZ0ICsgInB4IjsKICAgICAgZWwuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGVsLnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKCiAgICAgIHJldHVybiB7CiAgICAgICAgZ2V0V2lkdGg6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoOyB9LAogICAgICAgIGdldEhlaWdodDogZnVuY3Rpb24oKSB7IHJldHVybiBjZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0OyB9CiAgICAgIH07CgogICAgfSBlbHNlIHsKICAgICAgZWwuc3R5bGUud2lkdGggPSBweChzaXppbmcud2lkdGgpOwogICAgICBlbC5zdHlsZS5oZWlnaHQgPSBweChzaXppbmcuaGVpZ2h0KTsKCiAgICAgIHJldHVybiB7CiAgICAgICAgZ2V0V2lkdGg6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoOyB9LAogICAgICAgIGdldEhlaWdodDogZnVuY3Rpb24oKSB7IHJldHVybiBjZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0OyB9CiAgICAgIH07CiAgICB9CiAgfQoKICAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgbWV0aG9kcwogIHZhciBkZWZhdWx0cyA9IHsKICAgIGZpbmQ6IGZ1bmN0aW9uKHNjb3BlKSB7CiAgICAgIHJldHVybiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCAiLiIgKyB0aGlzLm5hbWUpOwogICAgfSwKICAgIHJlbmRlckVycm9yOiBmdW5jdGlvbihlbCwgZXJyKSB7CiAgICAgIHZhciAkZWwgPSAkKGVsKTsKCiAgICAgIHRoaXMuY2xlYXJFcnJvcihlbCk7CgogICAgICAvLyBBZGQgYWxsIHRoZXNlIGVycm9yIGNsYXNzZXMsIGFzIFNoaW55IGRvZXMKICAgICAgdmFyIGVyckNsYXNzID0gInNoaW55LW91dHB1dC1lcnJvciI7CiAgICAgIGlmIChlcnIudHlwZSAhPT0gbnVsbCkgewogICAgICAgIC8vIHVzZSB0aGUgY2xhc3NlcyBvZiB0aGUgZXJyb3IgY29uZGl0aW9uIGFzIENTUyBjbGFzcyBuYW1lcwogICAgICAgIGVyckNsYXNzID0gZXJyQ2xhc3MgKyAiICIgKyAkLm1hcChhc0FycmF5KGVyci50eXBlKSwgZnVuY3Rpb24odHlwZSkgewogICAgICAgICAgcmV0dXJuIGVyckNsYXNzICsgIi0iICsgdHlwZTsKICAgICAgICB9KS5qb2luKCIgIik7CiAgICAgIH0KICAgICAgZXJyQ2xhc3MgPSBlcnJDbGFzcyArICIgaHRtbHdpZGdldHMtZXJyb3IiOwoKICAgICAgLy8gSXMgZWwgaW5saW5lIG9yIGJsb2NrPyBJZiBpbmxpbmUgb3IgaW5saW5lLWJsb2NrLCBqdXN0IGRpc3BsYXk6bm9uZSBpdAogICAgICAvLyBhbmQgYWRkIGFuIGlubGluZSBlcnJvci4KICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuY3NzKCJkaXNwbGF5Iik7CiAgICAgICRlbC5kYXRhKCJyZXN0b3JlLWRpc3BsYXktbW9kZSIsIGRpc3BsYXkpOwoKICAgICAgaWYgKGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siKSB7CiAgICAgICAgJGVsLmhpZGUoKTsKICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgIT09ICIiKSB7CiAgICAgICAgICB2YXIgZXJyb3JTcGFuID0gJCgiPHNwYW4+IikuYWRkQ2xhc3MoZXJyQ2xhc3MpOwogICAgICAgICAgZXJyb3JTcGFuLnRleHQoZXJyLm1lc3NhZ2UpOwogICAgICAgICAgJGVsLmFmdGVyKGVycm9yU3Bhbik7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGRpc3BsYXkgPT09ICJibG9jayIpIHsKICAgICAgICAvLyBJZiBibG9jaywgYWRkIGFuIGVycm9yIGp1c3QgYWZ0ZXIgdGhlIGVsLCBzZXQgdmlzaWJpbGl0eTpub25lIG9uIHRoZQogICAgICAgIC8vIGVsLCBhbmQgcG9zaXRpb24gdGhlIGVycm9yIHRvIGJlIG9uIHRvcCBvZiB0aGUgZWwuCiAgICAgICAgLy8gTWFyayBpdCB3aXRoIGEgdW5pcXVlIElEIGFuZCBDU1MgY2xhc3Mgc28gd2UgY2FuIHJlbW92ZSBpdCBsYXRlci4KICAgICAgICAkZWwuY3NzKCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpOwogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsKICAgICAgICAgIHZhciBlcnJvckRpdiA9ICQoIjxkaXY+IikuYWRkQ2xhc3MoZXJyQ2xhc3MpLmNzcygicG9zaXRpb24iLCAiYWJzb2x1dGUiKQogICAgICAgICAgICAuY3NzKCJ0b3AiLCBlbC5vZmZzZXRUb3ApCiAgICAgICAgICAgIC5jc3MoImxlZnQiLCBlbC5vZmZzZXRMZWZ0KQogICAgICAgICAgICAvLyBzZXR0aW5nIHdpZHRoIGNhbiBwdXNoIG91dCB0aGUgcGFnZSBzaXplLCBmb3JjaW5nIG90aGVyd2lzZQogICAgICAgICAgICAvLyB1bm5lY2Vzc2FyeSBzY3JvbGxiYXJzIHRvIGFwcGVhciBhbmQgbWFraW5nIGl0IGltcG9zc2libGUgZm9yCiAgICAgICAgICAgIC8vIHRoZSBlbGVtZW50IHRvIHNocmluazsgc28gdXNlIG1heC13aWR0aCBpbnN0ZWFkCiAgICAgICAgICAgIC5jc3MoIm1heFdpZHRoIiwgZWwub2Zmc2V0V2lkdGgpCiAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICBlcnJvckRpdi50ZXh0KGVyci5tZXNzYWdlKTsKICAgICAgICAgICRlbC5hZnRlcihlcnJvckRpdik7CgogICAgICAgICAgLy8gUmVhbGx5IGR1bWIgd2F5IHRvIGtlZXAgdGhlIHNpemUvcG9zaXRpb24gb2YgdGhlIGVycm9yIGluIHN5bmMgd2l0aAogICAgICAgICAgLy8gdGhlIHBhcmVudCBlbGVtZW50IGFzIHRoZSB3aW5kb3cgaXMgcmVzaXplZCBvciB3aGF0ZXZlci4KICAgICAgICAgIHZhciBpbnRJZCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoIWVycm9yRGl2WzBdLnBhcmVudEVsZW1lbnQpIHsKICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludElkKTsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZXJyb3JEaXYKICAgICAgICAgICAgICAuY3NzKCJ0b3AiLCBlbC5vZmZzZXRUb3ApCiAgICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpCiAgICAgICAgICAgICAgLmNzcygibWF4V2lkdGgiLCBlbC5vZmZzZXRXaWR0aCkKICAgICAgICAgICAgICAuY3NzKCJoZWlnaHQiLCBlbC5vZmZzZXRIZWlnaHQpOwogICAgICAgICAgfSwgNTAwKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBjbGVhckVycm9yOiBmdW5jdGlvbihlbCkgewogICAgICB2YXIgJGVsID0gJChlbCk7CiAgICAgIHZhciBkaXNwbGF5ID0gJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIik7CiAgICAgICRlbC5kYXRhKCJyZXN0b3JlLWRpc3BsYXktbW9kZSIsIG51bGwpOwoKICAgICAgaWYgKGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siKSB7CiAgICAgICAgaWYgKGRpc3BsYXkpCiAgICAgICAgICAkZWwuY3NzKCJkaXNwbGF5IiwgZGlzcGxheSk7CiAgICAgICAgJChlbC5uZXh0U2libGluZykuZmlsdGVyKCIuaHRtbHdpZGdldHMtZXJyb3IiKS5yZW1vdmUoKTsKICAgICAgfSBlbHNlIGlmIChkaXNwbGF5ID09PSAiYmxvY2siKXsKICAgICAgICAkZWwuY3NzKCJ2aXNpYmlsaXR5IiwgImluaGVyaXQiKTsKICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOwogICAgICB9CiAgICB9LAogICAgc2l6aW5nOiB7fQogIH07CgogIC8vIENhbGxlZCBieSB3aWRnZXQgYmluZGluZ3MgdG8gcmVnaXN0ZXIgYSBuZXcgdHlwZSBvZiB3aWRnZXQuIFRoZSBkZWZpbml0aW9uCiAgLy8gb2JqZWN0IGNhbiBjb250YWluIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKICAvLyAtIG5hbWUgKHJlcXVpcmVkKSAtIEEgc3RyaW5nIGluZGljYXRpbmcgdGhlIGJpbmRpbmcgbmFtZSwgd2hpY2ggd2lsbCBiZQogIC8vICAgdXNlZCBieSBkZWZhdWx0IGFzIHRoZSBDU1MgY2xhc3NuYW1lIHRvIGxvb2sgZm9yLgogIC8vIC0gaW5pdGlhbGl6ZSAob3B0aW9uYWwpIC0gQSBmdW5jdGlvbihlbCkgdGhhdCB3aWxsIGJlIGNhbGxlZCBvbmNlIHBlcgogIC8vICAgd2lkZ2V0IGVsZW1lbnQ7IGlmIGEgdmFsdWUgaXMgcmV0dXJuZWQsIGl0IHdpbGwgYmUgcGFzc2VkIGFzIHRoZSB0aGlyZAogIC8vICAgdmFsdWUgdG8gcmVuZGVyVmFsdWUuCiAgLy8gLSByZW5kZXJWYWx1ZSAocmVxdWlyZWQpIC0gQSBmdW5jdGlvbihlbCwgZGF0YSwgaW5pdFZhbHVlKSB0aGF0IHdpbGwgYmUKICAvLyAgIGNhbGxlZCB3aXRoIGRhdGEuIFN0YXRpYyBjb250ZXh0cyB3aWxsIGNhdXNlIHRoaXMgdG8gYmUgY2FsbGVkIG9uY2UgcGVyCiAgLy8gICBlbGVtZW50OyBTaGlueSBhcHBzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgcGVyCiAgLy8gICBlbGVtZW50LCBhcyB0aGUgZGF0YSBjaGFuZ2VzLgogIHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXQgPSBmdW5jdGlvbihkZWZpbml0aW9uKSB7CiAgICBpZiAoIWRlZmluaXRpb24ubmFtZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldpZGdldCBtdXN0IGhhdmUgYSBuYW1lIik7CiAgICB9CiAgICBpZiAoIWRlZmluaXRpb24udHlwZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldpZGdldCBtdXN0IGhhdmUgYSB0eXBlIik7CiAgICB9CiAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IG91dHB1dCB3aWRnZXRzCiAgICBpZiAoZGVmaW5pdGlvbi50eXBlICE9PSAib3V0cHV0IikgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB3aWRnZXQgdHlwZSAnIiArIGRlZmluaXRpb24udHlwZSArICInIik7CiAgICB9CiAgICAvLyBUT0RPOiBWZXJpZnkgdGhhdCAubmFtZSBpcyBhIHZhbGlkIENTUyBjbGFzc25hbWUKCiAgICAvLyBTdXBwb3J0IG5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9ucy4gT2xkLXN0eWxlIGNsYXNzLWJvdW5kCiAgICAvLyBkZWZpbml0aW9ucyBoYXZlIG9uZSB3aWRnZXQgIm9iamVjdCIgcGVyIHdpZGdldCBwZXIgdHlwZS9jbGFzcyBvZgogICAgLy8gd2lkZ2V0OyB0aGUgcmVuZGVyVmFsdWUgYW5kIHJlc2l6ZSBtZXRob2RzIG9uIHN1Y2ggd2lkZ2V0IG9iamVjdHMKICAgIC8vIHRha2UgZWwgYW5kIGluc3RhbmNlIGFyZ3VtZW50cywgYmVjYXVzZSB0aGUgd2lkZ2V0IG9iamVjdCBjYW4ndAogICAgLy8gc3RvcmUgdGhlbS4gTmV3LXN0eWxlIGluc3RhbmNlLWJvdW5kIGRlZmluaXRpb25zIGhhdmUgb25lIHdpZGdldAogICAgLy8gb2JqZWN0IHBlciB3aWRnZXQgaW5zdGFuY2U7IHRoZSBkZWZpbml0aW9uIHRoYXQncyBwYXNzZWQgaW4gZG9lc24ndAogICAgLy8gcHJvdmlkZSByZW5kZXJWYWx1ZSBvciByZXNpemUgbWV0aG9kcyBhdCBhbGwsIGp1c3QgdGhlIHNpbmdsZSBtZXRob2QKICAgIC8vICAgZmFjdG9yeShlbCwgd2lkdGgsIGhlaWdodCkKICAgIC8vIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IHRoYXQgaGFzIHJlbmRlclZhbHVlKHgpIGFuZCByZXNpemUodywgaCkuCiAgICAvLyBUaGlzIGVuYWJsZXMgYSBmYXIgbW9yZSBuYXR1cmFsIHByb2dyYW1taW5nIHN0eWxlIGZvciB0aGUgd2lkZ2V0CiAgICAvLyBhdXRob3IsIHdobyBjYW4gc3RvcmUgcGVyLWluc3RhbmNlIHN0YXRlIHVzaW5nIGVpdGhlciBPTy1zdHlsZQogICAgLy8gaW5zdGFuY2UgZmllbGRzIG9yIGZ1bmN0aW9uYWwtc3R5bGUgY2xvc3VyZSB2YXJpYWJsZXMgKEkgZ3Vlc3MgdGhpcwogICAgLy8gaXMgaW4gY29udHJhc3QgdG8gd2hhdCBjYW4gb25seSBiZSBjYWxsZWQgQy1zdHlsZSBwc2V1ZG8tT08gd2hpY2ggaXMKICAgIC8vIHdoYXQgd2UgcmVxdWlyZWQgYmVmb3JlKS4KICAgIGlmIChkZWZpbml0aW9uLmZhY3RvcnkpIHsKICAgICAgZGVmaW5pdGlvbiA9IGNyZWF0ZUxlZ2FjeURlZmluaXRpb25BZGFwdGVyKGRlZmluaXRpb24pOwogICAgfQoKICAgIGlmICghZGVmaW5pdGlvbi5yZW5kZXJWYWx1ZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldpZGdldCBtdXN0IGhhdmUgYSByZW5kZXJWYWx1ZSBmdW5jdGlvbiIpOwogICAgfQoKICAgIC8vIEZvciBzdGF0aWMgcmVuZGVyaW5nIChub24tU2hpbnkpLCB1c2UgYSBzaW1wbGUgd2lkZ2V0IHJlZ2lzdHJhdGlvbgogICAgLy8gc2NoZW1lLiBXZSBhbHNvIHVzZSB0aGlzIHNjaGVtZSBmb3IgU2hpbnkgYXBwcy9kb2N1bWVudHMgdGhhdCBhbHNvCiAgICAvLyBjb250YWluIHN0YXRpYyB3aWRnZXRzLgogICAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgPSB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyB8fCBbXTsKICAgIC8vIE1lcmdlIGRlZmF1bHRzIGludG8gdGhlIGRlZmluaXRpb247IGRvbid0IG11dGF0ZSB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbi4KICAgIHZhciBzdGF0aWNCaW5kaW5nID0gZXh0ZW5kKHt9LCBkZWZhdWx0cywgZGVmaW5pdGlvbik7CiAgICBvdmVycmlkZU1ldGhvZChzdGF0aWNCaW5kaW5nLCAiZmluZCIsIGZ1bmN0aW9uKHN1cGVyZnVuYykgewogICAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgICB2YXIgcmVzdWx0cyA9IHN1cGVyZnVuYyhzY29wZSk7CiAgICAgICAgLy8gRmlsdGVyIG91dCBTaGlueSBvdXRwdXRzLCB3ZSBvbmx5IHdhbnQgdGhlIHN0YXRpYyBraW5kCiAgICAgICAgcmV0dXJuIGZpbHRlckJ5Q2xhc3MocmVzdWx0cywgImh0bWwtd2lkZ2V0LW91dHB1dCIsIGZhbHNlKTsKICAgICAgfTsKICAgIH0pOwogICAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMucHVzaChzdGF0aWNCaW5kaW5nKTsKCiAgICBpZiAoc2hpbnlNb2RlKSB7CiAgICAgIC8vIFNoaW55IGlzIHJ1bm5pbmcuIFJlZ2lzdGVyIHRoZSBkZWZpbml0aW9uIHdpdGggYW4gb3V0cHV0IGJpbmRpbmcuCiAgICAgIC8vIFRoZSBkZWZpbml0aW9uIGl0c2VsZiB3aWxsIG5vdCBiZSB0aGUgb3V0cHV0IGJpbmRpbmcsIGluc3RlYWQKICAgICAgLy8gd2Ugd2lsbCBtYWtlIGFuIG91dHB1dCBiaW5kaW5nIG9iamVjdCB0aGF0IGRlbGVnYXRlcyB0byB0aGUKICAgICAgLy8gZGVmaW5pdGlvbi4gVGhpcyBpcyBiZWNhdXNlIHdlIGZvb2xpc2hseSB1c2VkIHRoZSBzYW1lIG1ldGhvZAogICAgICAvLyBuYW1lIChyZW5kZXJWYWx1ZSkgZm9yIGh0bWx3aWRnZXRzIGRlZmluaXRpb24gYW5kIFNoaW55IGJpbmRpbmdzCiAgICAgIC8vIGJ1dCB0aGV5IGFjdHVhbGx5IGhhdmUgcXVpdGUgZGlmZmVyZW50IHNlbWFudGljcyAodGhlIFNoaW55CiAgICAgIC8vIGJpbmRpbmdzIHJlY2VpdmUgZGF0YSB0aGF0IGluY2x1ZGVzIGxvdHMgb2YgbWV0YWRhdGEgdGhhdCBpdAogICAgICAvLyBzdHJpcHMgb2ZmIGJlZm9yZSBjYWxsaW5nIGh0bWx3aWRnZXRzIHJlbmRlclZhbHVlKS4gV2UgY2FuJ3QKICAgICAgLy8ganVzdCBpZ25vcmUgdGhlIGRpZmZlcmVuY2UgYmVjYXVzZSBpbiBzb21lIHdpZGdldHMgaXQncyBoZWxwZnVsCiAgICAgIC8vIHRvIGNhbGwgdGhpcy5yZW5kZXJWYWx1ZSgpIGZyb20gaW5zaWRlIG9mIHJlc2l6ZSgpLCBhbmQgaWYKICAgICAgLy8gd2UncmUgbm90IGRlbGVnYXRpbmcsIHRoZW4gdGhhdCBjYWxsIHdpbGwgZ28gdG8gdGhlIFNoaW55CiAgICAgIC8vIHZlcnNpb24gaW5zdGVhZCBvZiB0aGUgaHRtbHdpZGdldHMgdmVyc2lvbi4KCiAgICAgIC8vIE1lcmdlIGRlZmF1bHRzIHdpdGggZGVmaW5pdGlvbiwgd2l0aG91dCBtdXRhdGluZyBlaXRoZXIuCiAgICAgIHZhciBiaW5kaW5nRGVmID0gZXh0ZW5kKHt9LCBkZWZhdWx0cywgZGVmaW5pdGlvbik7CgogICAgICAvLyBUaGlzIG9iamVjdCB3aWxsIGJlIG91ciBhY3R1YWwgU2hpbnkgYmluZGluZy4KICAgICAgdmFyIHNoaW55QmluZGluZyA9IG5ldyBTaGlueS5PdXRwdXRCaW5kaW5nKCk7CgogICAgICAvLyBXaXRoIGEgZmV3IGV4Y2VwdGlvbnMsIHdlJ2xsIHdhbnQgdG8gc2ltcGx5IHVzZSB0aGUgYmluZGluZ0RlZidzCiAgICAgIC8vIHZlcnNpb24gb2YgbWV0aG9kcyBpZiB0aGV5IGFyZSBhdmFpbGFibGUsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8KICAgICAgLy8gU2hpbnkncyBkZWZhdWx0cy4gTk9URTogSWYgU2hpbnkncyBvdXRwdXQgYmluZGluZ3MgZ2FpbiBhZGRpdGlvbmFsCiAgICAgIC8vIG1ldGhvZHMgaW4gdGhlIGZ1dHVyZSwgYW5kIHdlIHdhbnQgdGhlbSB0byBiZSBvdmVycmlkZWFibGUgYnkKICAgICAgLy8gSFRNTFdpZGdldCBiaW5kaW5nIGRlZmluaXRpb25zLCB0aGVuIHdlJ2xsIG5lZWQgdG8gYWRkIHRoZW0gdG8gdGhpcwogICAgICAvLyBsaXN0LgogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJnZXRJZCIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJvblZhbHVlQ2hhbmdlIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgIm9uVmFsdWVFcnJvciIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJyZW5kZXJFcnJvciIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJjbGVhckVycm9yIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgInNob3dQcm9ncmVzcyIpOwoKICAgICAgLy8gVGhlIGZpbmQsIHJlbmRlclZhbHVlLCBhbmQgcmVzaXplIGFyZSBoYW5kbGVkIGRpZmZlcmVudGx5LCBiZWNhdXNlIHdlCiAgICAgIC8vIHdhbnQgdG8gYWN0dWFsbHkgZGVjb3JhdGUgdGhlIGJlaGF2aW9yIG9mIHRoZSBiaW5kaW5nRGVmIG1ldGhvZHMuCgogICAgICBzaGlueUJpbmRpbmcuZmluZCA9IGZ1bmN0aW9uKHNjb3BlKSB7CiAgICAgICAgdmFyIHJlc3VsdHMgPSBiaW5kaW5nRGVmLmZpbmQoc2NvcGUpOwoKICAgICAgICAvLyBPbmx5IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBTaGlueSBvdXRwdXRzLCBub3Qgc3RhdGljIG9uZXMKICAgICAgICB2YXIgZHluYW1pY1Jlc3VsdHMgPSByZXN1bHRzLmZpbHRlcigiLmh0bWwtd2lkZ2V0LW91dHB1dCIpOwoKICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2hhdGV2ZXIgY2F1c2VkIFNoaW55IHRvIHRoaW5rIHRoZXJlIG1pZ2h0IGJlCiAgICAgICAgLy8gbmV3IGR5bmFtaWMgb3V0cHV0cywgYWxzbyBjYXVzZWQgdGhlcmUgdG8gYmUgbmV3IHN0YXRpYyBvdXRwdXRzLgogICAgICAgIC8vIFNpbmNlIHRoZXJlIG1pZ2h0IGJlIGxvdHMgb2YgZGlmZmVyZW50IGh0bWx3aWRnZXRzIGJpbmRpbmdzLCB3ZQogICAgICAgIC8vIHNjaGVkdWxlIGV4ZWN1dGlvbiBmb3IgbGF0ZXItLW5vIG5lZWQgdG8gc3RhdGljUmVuZGVyIG11bHRpcGxlCiAgICAgICAgLy8gdGltZXMuCiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSBkeW5hbWljUmVzdWx0cy5sZW5ndGgpCiAgICAgICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlcigpOwoKICAgICAgICByZXR1cm4gZHluYW1pY1Jlc3VsdHM7CiAgICAgIH07CgogICAgICAvLyBXcmFwIHJlbmRlclZhbHVlIHRvIGhhbmRsZSBpbml0aWFsaXphdGlvbiwgd2hpY2ggdW5mb3J0dW5hdGVseSBpc24ndAogICAgICAvLyBzdXBwb3J0ZWQgbmF0aXZlbHkgYnkgU2hpbnkgYXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLgoKICAgICAgc2hpbnlCaW5kaW5nLnJlbmRlclZhbHVlID0gZnVuY3Rpb24oZWwsIGRhdGEpIHsKICAgICAgICBTaGlueS5yZW5kZXJEZXBlbmRlbmNpZXMoZGF0YS5kZXBzKTsKICAgICAgICAvLyBSZXNvbHZlIHN0cmluZ3MgbWFya2VkIGFzIGphdmFzY3JpcHQgbGl0ZXJhbHMgdG8gb2JqZWN0cwogICAgICAgIGlmICghKGRhdGEuZXZhbHMgaW5zdGFuY2VvZiBBcnJheSkpIGRhdGEuZXZhbHMgPSBbZGF0YS5ldmFsc107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGRhdGEuZXZhbHMgJiYgaSA8IGRhdGEuZXZhbHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlcihkYXRhLngsIGRhdGEuZXZhbHNbaV0pOwogICAgICAgIH0KICAgICAgICBpZiAoIWJpbmRpbmdEZWYucmVuZGVyT25OdWxsVmFsdWUpIHsKICAgICAgICAgIGlmIChkYXRhLnggPT09IG51bGwpIHsKICAgICAgICAgICAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlbC5zdHlsZS52aXNpYmlsaXR5ID0gImluaGVyaXQiOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIWVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiKSkgewogICAgICAgICAgaW5pdFNpemluZyhlbCk7CgogICAgICAgICAgZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIsIHRydWUpOwogICAgICAgICAgaWYgKGJpbmRpbmdEZWYuaW5pdGlhbGl6ZSkgewogICAgICAgICAgICB2YXIgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICB2YXIgcmVzdWx0ID0gYmluZGluZ0RlZi5pbml0aWFsaXplKGVsLCByZWN0LndpZHRoLCByZWN0LmhlaWdodCk7CiAgICAgICAgICAgIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiLCByZXN1bHQpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBiaW5kaW5nRGVmLnJlbmRlclZhbHVlKGVsLCBkYXRhLngsIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKSk7CiAgICAgICAgZXZhbEFuZFJ1bihkYXRhLmpzSG9va3MucmVuZGVyLCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiksIFtlbCwgZGF0YS54XSk7CiAgICAgIH07CgogICAgICAvLyBPbmx5IG92ZXJyaWRlIHJlc2l6ZSBpZiBiaW5kaW5nRGVmIGltcGxlbWVudHMgaXQKICAgICAgaWYgKGJpbmRpbmdEZWYucmVzaXplKSB7CiAgICAgICAgc2hpbnlCaW5kaW5nLnJlc2l6ZSA9IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICAgICAgICAvLyBTaGlueSBjYW4gY2FsbCByZXNpemUgYmVmb3JlIGluaXRpYWxpemUvcmVuZGVyVmFsdWUgaGF2ZSBiZWVuCiAgICAgICAgICAvLyBjYWxsZWQsIHdoaWNoIGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3Igd2lkZ2V0cy4KICAgICAgICAgIGlmIChlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIikpIHsKICAgICAgICAgICAgYmluZGluZ0RlZi5yZXNpemUoZWwsIHdpZHRoLCBoZWlnaHQsIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKSk7CiAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgfQoKICAgICAgU2hpbnkub3V0cHV0QmluZGluZ3MucmVnaXN0ZXIoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLm5hbWUpOwogICAgfQogIH07CgogIHZhciBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogIGZ1bmN0aW9uIHNjaGVkdWxlU3RhdGljUmVuZGVyKCkgewogICAgaWYgKCFzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQpIHsKICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsKICAgICAgfSwgMSk7CiAgICB9CiAgfQoKICAvLyBSZW5kZXIgc3RhdGljIHdpZGdldHMgYWZ0ZXIgdGhlIGRvY3VtZW50IGZpbmlzaGVzIGxvYWRpbmcKICAvLyBTdGF0aWNhbGx5IHJlbmRlciBhbGwgZWxlbWVudHMgdGhhdCBhcmUgb2YgdGhpcyB3aWRnZXQncyBjbGFzcwogIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIgPSBmdW5jdGlvbigpIHsKICAgIHZhciBiaW5kaW5ncyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgZm9yRWFjaChiaW5kaW5ncywgZnVuY3Rpb24oYmluZGluZykgewogICAgICB2YXIgbWF0Y2hlcyA9IGJpbmRpbmcuZmluZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOwogICAgICBmb3JFYWNoKG1hdGNoZXMsIGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgdmFyIHNpemVPYmogPSBpbml0U2l6aW5nKGVsLCBiaW5kaW5nKTsKCiAgICAgICAgdmFyIGdldFNpemUgPSBmdW5jdGlvbihlbCkgewogICAgICAgICAgaWYgKHNpemVPYmopIHsKICAgICAgICAgICAgcmV0dXJuIHt3OiBzaXplT2JqLmdldFdpZHRoKCksIGg6IHNpemVPYmouZ2V0SGVpZ2h0KCl9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICByZXR1cm4ge3c6IHJlY3Qud2lkdGgsIGg6IHJlY3QuaGVpZ2h0fQogICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIGlmIChoYXNDbGFzcyhlbCwgImh0bWwtd2lkZ2V0LXN0YXRpYy1ib3VuZCIpKQogICAgICAgICAgcmV0dXJuOwogICAgICAgIGVsLmNsYXNzTmFtZSA9IGVsLmNsYXNzTmFtZSArICIgaHRtbC13aWRnZXQtc3RhdGljLWJvdW5kIjsKCiAgICAgICAgdmFyIGluaXRSZXN1bHQ7CiAgICAgICAgaWYgKGJpbmRpbmcuaW5pdGlhbGl6ZSkgewogICAgICAgICAgdmFyIHNpemUgPSBnZXRTaXplKGVsKTsKICAgICAgICAgIGluaXRSZXN1bHQgPSBiaW5kaW5nLmluaXRpYWxpemUoZWwsIHNpemUudywgc2l6ZS5oKTsKICAgICAgICAgIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiLCBpbml0UmVzdWx0KTsKICAgICAgICB9CgogICAgICAgIGlmIChiaW5kaW5nLnJlc2l6ZSkgewogICAgICAgICAgdmFyIGxhc3RTaXplID0gZ2V0U2l6ZShlbCk7CiAgICAgICAgICB2YXIgcmVzaXplSGFuZGxlciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHNpemUgPSBnZXRTaXplKGVsKTsKICAgICAgICAgICAgaWYgKHNpemUudyA9PT0gMCAmJiBzaXplLmggPT09IDApCiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSBsYXN0U2l6ZS53ICYmIHNpemUuaCA9PT0gbGFzdFNpemUuaCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGxhc3RTaXplID0gc2l6ZTsKICAgICAgICAgICAgYmluZGluZy5yZXNpemUoZWwsIHNpemUudywgc2l6ZS5oLCBpbml0UmVzdWx0KTsKICAgICAgICAgIH07CgogICAgICAgICAgb24od2luZG93LCAicmVzaXplIiwgcmVzaXplSGFuZGxlcik7CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIGNhc2VzIHdoZXJlIHdlJ3JlIHJ1bm5pbmcgaW4gYSBTaGlueQogICAgICAgICAgLy8gYXBwLCBidXQgdGhlIHdpZGdldCBpdHNlbGYgaXMgbm90IGEgU2hpbnkgb3V0cHV0LCBidXQKICAgICAgICAgIC8vIHJhdGhlciBhIHNpbXBsZSBzdGF0aWMgd2lkZ2V0LiBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzCiAgICAgICAgICAvLyBhbiBybWFya2Rvd24gZG9jdW1lbnQgdGhhdCBoYXMgcnVudGltZTpzaGlueSBhbmQgd2lkZ2V0CiAgICAgICAgICAvLyB0aGF0IGlzbid0IGluIGEgcmVuZGVyIGZ1bmN0aW9uLiBTaGlueSBvbmx5IGtub3dzIHRvCiAgICAgICAgICAvLyBjYWxsIHJlc2l6ZSBoYW5kbGVycyBmb3IgU2hpbnkgb3V0cHV0cywgbm90IGZvciBzdGF0aWMKICAgICAgICAgIC8vIHdpZGdldHMsIHNvIHdlIGRvIGl0IG91cnNlbHZlcy4KICAgICAgICAgIGlmICh3aW5kb3cualF1ZXJ5KSB7CiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKAogICAgICAgICAgICAgICJzaG93bi5odG1sd2lkZ2V0cyBzaG93bi5icy50YWIuaHRtbHdpZGdldHMgc2hvd24uYnMuY29sbGFwc2UuaHRtbHdpZGdldHMiLAogICAgICAgICAgICAgIHJlc2l6ZUhhbmRsZXIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgd2luZG93LmpRdWVyeShkb2N1bWVudCkub24oCiAgICAgICAgICAgICAgImhpZGRlbi5odG1sd2lkZ2V0cyBoaWRkZW4uYnMudGFiLmh0bWx3aWRnZXRzIGhpZGRlbi5icy5jb2xsYXBzZS5odG1sd2lkZ2V0cyIsCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcgogICAgICAgICAgICApOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgc3BlY2lmaWMgY2FzZSBvZiBpb3NsaWRlcywgd2hpY2gKICAgICAgICAgIC8vIGZsaXBzIHNsaWRlcyBiZXR3ZWVuIGRpc3BsYXk6bm9uZSBhbmQgZGlzcGxheTpibG9jay4KICAgICAgICAgIC8vIElkZWFsbHkgd2Ugd291bGQgbm90IGhhdmUgdG8gaGF2ZSBpb3NsaWRlLXNwZWNpZmljIGNvZGUKICAgICAgICAgIC8vIGhlcmUsIGJ1dCByYXRoZXIgaGF2ZSBpb3NsaWRlcyByYWlzZSBhIGdlbmVyaWMgZXZlbnQsCiAgICAgICAgICAvLyBidXQgdGhlIHJtYXJrZG93biBwYWNrYWdlIGp1c3Qgd2VudCB0byBDUkFOIHNvIHRoZQogICAgICAgICAgLy8gd2luZG93IHRvIGdldHRpbmcgdGhhdCBmaXhlZCBtYXkgYmUgbG9uZy4KICAgICAgICAgIGlmICh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgICAgICAvLyBJdCdzIE9LIHRvIGxpbWl0IHRoaXMgdG8gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIKICAgICAgICAgICAgLy8gYnJvd3NlcnMgYmVjYXVzZSBpb3NsaWRlcyBpdHNlbGYgb25seSBzdXBwb3J0cwogICAgICAgICAgICAvLyBzdWNoIGJyb3dzZXJzLgogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlZW50ZXIiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgICAgb24oZG9jdW1lbnQsICJzbGlkZWxlYXZlIiwgcmVzaXplSGFuZGxlcik7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc2NyaXB0RGF0YSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtkYXRhLWZvcj0nIiArIGVsLmlkICsgIiddW3R5cGU9J2FwcGxpY2F0aW9uL2pzb24nXSIpOwogICAgICAgIGlmIChzY3JpcHREYXRhKSB7CiAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc2NyaXB0RGF0YS50ZXh0Q29udGVudCB8fCBzY3JpcHREYXRhLnRleHQpOwogICAgICAgICAgLy8gUmVzb2x2ZSBzdHJpbmdzIG1hcmtlZCBhcyBqYXZhc2NyaXB0IGxpdGVyYWxzIHRvIG9iamVjdHMKICAgICAgICAgIGlmICghKGRhdGEuZXZhbHMgaW5zdGFuY2VvZiBBcnJheSkpIGRhdGEuZXZhbHMgPSBbZGF0YS5ldmFsc107CiAgICAgICAgICBmb3IgKHZhciBrID0gMDsgZGF0YS5ldmFscyAmJiBrIDwgZGF0YS5ldmFscy5sZW5ndGg7IGsrKykgewogICAgICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuZXZhbHVhdGVTdHJpbmdNZW1iZXIoZGF0YS54LCBkYXRhLmV2YWxzW2tdKTsKICAgICAgICAgIH0KICAgICAgICAgIGJpbmRpbmcucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgaW5pdFJlc3VsdCk7CiAgICAgICAgICBldmFsQW5kUnVuKGRhdGEuanNIb29rcy5yZW5kZXIsIGluaXRSZXN1bHQsIFtlbCwgZGF0YS54XSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0pOwoKICAgIGludm9rZVBvc3RSZW5kZXJIYW5kbGVycygpOwogIH0KCgogIGZ1bmN0aW9uIGhhc19qUXVlcnkzKCkgewogICAgaWYgKCF3aW5kb3cualF1ZXJ5KSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHZhciAkdmVyc2lvbiA9IHdpbmRvdy5qUXVlcnkuZm4uanF1ZXJ5OwogICAgdmFyICRtYWpvcl92ZXJzaW9uID0gcGFyc2VJbnQoJHZlcnNpb24uc3BsaXQoIi4iKVswXSk7CiAgICByZXR1cm4gJG1ham9yX3ZlcnNpb24gPj0gMzsKICB9CgogIC8qCiAgLyBTaGlueSAxLjQgYnVtcGVkIGpRdWVyeSBmcm9tIDEueCB0byAzLnggd2hpY2ggbWVhbnMgalF1ZXJ5J3MKICAvIG9uLXJlYWR5IGhhbmRsZXIgKGkuZS4sICQoZm4pKSBpcyBub3cgYXN5bmNyb25vdXMgKGkuZS4sIGl0IG5vdwogIC8gcmVhbGx5IG1lYW5zICQoc2V0VGltZW91dChmbikpLgogIC8gaHR0cHM6Ly9qcXVlcnkuY29tL3VwZ3JhZGUtZ3VpZGUvMy4wLyNicmVha2luZy1jaGFuZ2UtZG9jdW1lbnQtcmVhZHktaGFuZGxlcnMtYXJlLW5vdy1hc3luY2hyb25vdXMKICAvCiAgLyBTaW5jZSBTaGlueSB1c2VzICQoKSB0byBzY2hlZHVsZSBpbml0U2hpbnksIHNoaW55Pj0xLjQgY2FsbHMgaW5pdFNoaW55CiAgLyBvbmUgdGljayBsYXRlciB0aGFuIGl0IGRpZCBiZWZvcmUsIHdoaWNoIG1lYW5zIHN0YXRpY1JlbmRlcigpIGlzCiAgLyBjYWxsZWQgcmVuZGVyVmFsdWUoKSBlYXJsaWVyIHRoYW4gKGFkdmFuY2VkKSB3aWRnZXQgYXV0aG9ycyBtaWdodCBiZSBleHBlY3RpbmcuCiAgLyBodHRwczovL2dpdGh1Yi5jb20vcnN0dWRpby9zaGlueS9pc3N1ZXMvMjYzMAogIC8KICAvIEZvciBhIGNvbmNyZXRlIGV4YW1wbGUsIGxlYWZsZXQgaGFzIHNvbWUgbWV0aG9kcyAoZS5nLiwgdXBkYXRlQm91bmRzKQogIC8gd2hpY2ggcmVmZXJlbmNlIFNoaW55IG1ldGhvZHMgcmVnaXN0ZXJlZCBpbiBpbml0U2hpbnkgKGUuZy4sIHNldElucHV0VmFsdWUpLgogIC8gU2luY2UgbGVhZmxldCBpcyBwcml2eSB0byB0aGlzIGxpZmUtY3ljbGUsIGl0IGtub3dzIHRvIHVzZSBzZXRUaW1lb3V0KCkgdG8KICAvIGRlbGF5IGV4ZWN1dGlvbiBvZiB0aG9zZSBtZXRob2RzICh1bnRpbCBTaGlueSBtZXRob2RzIGFyZSByZWFkeSkKICAvIGh0dHBzOi8vZ2l0aHViLmNvbS9yc3R1ZGlvL2xlYWZsZXQvYmxvYi8xOGVjOTgxL2phdmFzY3JpcHQvc3JjL2luZGV4LmpzI0wyNjYtTDI2OAogIC8KICAvIElkZWFsbHkgd2lkZ2V0IGF1dGhvcnMgd291bGRuJ3QgbmVlZCB0byB1c2UgdGhpcyBzZXRUaW1lb3V0KCkgaGFjayB0aGF0CiAgLyBsZWFmbGV0IHVzZXMgdG8gY2FsbCBTaGlueSBtZXRob2RzIG9uIGEgc3RhdGljUmVuZGVyKCkuIEluIHRoZSBsb25nIHJ1biwKICAvIHRoZSBsb2dpYyBpbml0U2hpbnkgc2hvdWxkIGJlIGJyb2tlbiB1cCBzbyB0aGF0IG1ldGhvZCByZWdpc3RyYXRpb24gaGFwcGVucwogIC8gcmlnaHQgYXdheSwgYnV0IGJpbmRpbmcgaGFwcGVucyBsYXRlci4KICAqLwogIGZ1bmN0aW9uIG1heWJlU3RhdGljUmVuZGVyTGF0ZXIoKSB7CiAgICBpZiAoc2hpbnlNb2RlICYmIGhhc19qUXVlcnkzKCkpIHsKICAgICAgd2luZG93LmpRdWVyeSh3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKTsKICAgIH0gZWxzZSB7CiAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsKICAgIH0KICB9CgogIGlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7CiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBhcmd1bWVudHMuY2FsbGVlLCBmYWxzZSk7CiAgICAgIG1heWJlU3RhdGljUmVuZGVyTGF0ZXIoKTsKICAgIH0sIGZhbHNlKTsKICB9IGVsc2UgaWYgKGRvY3VtZW50LmF0dGFjaEV2ZW50KSB7CiAgICBkb2N1bWVudC5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgZnVuY3Rpb24oKSB7CiAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiKSB7CiAgICAgICAgZG9jdW1lbnQuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGFyZ3VtZW50cy5jYWxsZWUpOwogICAgICAgIG1heWJlU3RhdGljUmVuZGVyTGF0ZXIoKTsKICAgICAgfQogICAgfSk7CiAgfQoKCiAgd2luZG93LkhUTUxXaWRnZXRzLmdldEF0dGFjaG1lbnRVcmwgPSBmdW5jdGlvbihkZXBuYW1lLCBrZXkpIHsKICAgIC8vIElmIG5vIGtleSwgZGVmYXVsdCB0byB0aGUgZmlyc3QgaXRlbQogICAgaWYgKHR5cGVvZihrZXkpID09PSAidW5kZWZpbmVkIikKICAgICAga2V5ID0gMTsKCiAgICB2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRlcG5hbWUgKyAiLSIgKyBrZXkgKyAiLWF0dGFjaG1lbnQiKTsKICAgIGlmICghbGluaykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0dGFjaG1lbnQgIiArIGRlcG5hbWUgKyAiLyIgKyBrZXkgKyAiIG5vdCBmb3VuZCBpbiBkb2N1bWVudCIpOwogICAgfQogICAgcmV0dXJuIGxpbmsuZ2V0QXR0cmlidXRlKCJocmVmIik7CiAgfTsKCiAgd2luZG93LkhUTUxXaWRnZXRzLmRhdGFmcmFtZVRvRDMgPSBmdW5jdGlvbihkZikgewogICAgdmFyIG5hbWVzID0gW107CiAgICB2YXIgbGVuZ3RoOwogICAgZm9yICh2YXIgbmFtZSBpbiBkZikgewogICAgICAgIGlmIChkZi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkKICAgICAgICAgICAgbmFtZXMucHVzaChuYW1lKTsKICAgICAgICBpZiAodHlwZW9mKGRmW25hbWVdKSAhPT0gIm9iamVjdCIgfHwgdHlwZW9mKGRmW25hbWVdLmxlbmd0aCkgPT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQWxsIGZpZWxkcyBtdXN0IGJlIGFycmF5cyIpOwogICAgICAgIH0gZWxzZSBpZiAodHlwZW9mKGxlbmd0aCkgIT09ICJ1bmRlZmluZWQiICYmIGxlbmd0aCAhPT0gZGZbbmFtZV0ubGVuZ3RoKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQWxsIGZpZWxkcyBtdXN0IGJlIGFycmF5cyBvZiB0aGUgc2FtZSBsZW5ndGgiKTsKICAgICAgICB9CiAgICAgICAgbGVuZ3RoID0gZGZbbmFtZV0ubGVuZ3RoOwogICAgfQogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHZhciBpdGVtOwogICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgbGVuZ3RoOyByb3crKykgewogICAgICAgIGl0ZW0gPSB7fTsKICAgICAgICBmb3IgKHZhciBjb2wgPSAwOyBjb2wgPCBuYW1lcy5sZW5ndGg7IGNvbCsrKSB7CiAgICAgICAgICAgIGl0ZW1bbmFtZXNbY29sXV0gPSBkZltuYW1lc1tjb2xdXVtyb3ddOwogICAgICAgIH0KICAgICAgICByZXN1bHRzLnB1c2goaXRlbSk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9OwoKICB3aW5kb3cuSFRNTFdpZGdldHMudHJhbnNwb3NlQXJyYXkyRCA9IGZ1bmN0aW9uKGFycmF5KSB7CiAgICAgIGlmIChhcnJheS5sZW5ndGggPT09IDApIHJldHVybiBhcnJheTsKICAgICAgdmFyIG5ld0FycmF5ID0gYXJyYXlbMF0ubWFwKGZ1bmN0aW9uKGNvbCwgaSkgewogICAgICAgICAgcmV0dXJuIGFycmF5Lm1hcChmdW5jdGlvbihyb3cpIHsKICAgICAgICAgICAgICByZXR1cm4gcm93W2ldCiAgICAgICAgICB9KQogICAgICB9KTsKICAgICAgcmV0dXJuIG5ld0FycmF5OwogIH07CiAgLy8gU3BsaXQgdmFsdWUgYXQgc3BsaXRDaGFyLCBidXQgYWxsb3cgc3BsaXRDaGFyIHRvIGJlIGVzY2FwZWQKICAvLyB1c2luZyBlc2NhcGVDaGFyLiBBbnkgb3RoZXIgY2hhcmFjdGVycyBlc2NhcGVkIGJ5IGVzY2FwZUNoYXIKICAvLyB3aWxsIGJlIGluY2x1ZGVkIGFzIHVzdWFsIChpbmNsdWRpbmcgZXNjYXBlQ2hhciBpdHNlbGYpLgogIGZ1bmN0aW9uIHNwbGl0V2l0aEVzY2FwZSh2YWx1ZSwgc3BsaXRDaGFyLCBlc2NhcGVDaGFyKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdmFyIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgIHZhciBjdXJyZW50UmVzdWx0ID0gIiI7CiAgICBmb3IgKHZhciBwb3MgPSAwOyBwb3MgPCB2YWx1ZS5sZW5ndGg7IHBvcysrKSB7CiAgICAgIGlmICghZXNjYXBlTW9kZSkgewogICAgICAgIGlmICh2YWx1ZVtwb3NdID09PSBzcGxpdENoYXIpIHsKICAgICAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgICAgICB9IGVsc2UgaWYgKHZhbHVlW3Bvc10gPT09IGVzY2FwZUNoYXIpIHsKICAgICAgICAgIGVzY2FwZU1vZGUgPSB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjdXJyZW50UmVzdWx0ICs9IHZhbHVlW3Bvc107CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICBlc2NhcGVNb2RlID0gZmFsc2U7CiAgICAgIH0KICAgIH0KICAgIGlmIChjdXJyZW50UmVzdWx0ICE9PSAiIikgewogICAgICByZXN1bHRzLnB1c2goY3VycmVudFJlc3VsdCk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9CiAgLy8gRnVuY3Rpb24gYXV0aG9yZWQgYnkgWWlodWkvSkogQWxsYWlyZQogIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlciA9IGZ1bmN0aW9uKG8sIG1lbWJlcikgewogICAgdmFyIHBhcnRzID0gc3BsaXRXaXRoRXNjYXBlKG1lbWJlciwgJy4nLCAnXFwnKTsKICAgIGZvciAodmFyIGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgIHZhciBwYXJ0ID0gcGFydHNbaV07CiAgICAgIC8vIHBhcnQgbWF5IGJlIGEgY2hhcmFjdGVyIG9yICdudW1lcmljJyBtZW1iZXIgbmFtZQogICAgICBpZiAobyAhPT0gbnVsbCAmJiB0eXBlb2YgbyA9PT0gIm9iamVjdCIgJiYgcGFydCBpbiBvKSB7CiAgICAgICAgaWYgKGkgPT0gKGwgLSAxKSkgeyAvLyBpZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSB0aGVuIGV2YWx1bGF0ZQogICAgICAgICAgaWYgKHR5cGVvZiBvW3BhcnRdID09PSAic3RyaW5nIikKICAgICAgICAgICAgb1twYXJ0XSA9IHRyeUV2YWwob1twYXJ0XSk7CiAgICAgICAgfSBlbHNlIHsgLy8gb3RoZXJ3aXNlIGNvbnRpbnVlIHRvIG5leHQgZW1iZWRkZWQgb2JqZWN0CiAgICAgICAgICBvID0gb1twYXJ0XTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9OwoKICAvLyBSZXRyaWV2ZSB0aGUgSFRNTFdpZGdldCBpbnN0YW5jZSAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlIG9mIGFuCiAgLy8gSFRNTFdpZGdldCBiaW5kaW5nJ3MgaW5pdGlhbGl6ZSgpIG9yIGZhY3RvcnkoKSBmdW5jdGlvbikKICAvLyBhc3NvY2lhdGVkIHdpdGggYW4gZWxlbWVudCwgb3IgbnVsbCBpZiBub25lLgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uKGVsKSB7CiAgICByZXR1cm4gZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpOwogIH07CgogIC8vIEZpbmRzIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBzY29wZSB0aGF0IG1hdGNoZXMgdGhlIHNlbGVjdG9yLAogIC8vIGFuZCByZXR1cm5zIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlIChpLmUuIHRoZSByZXR1cm4gdmFsdWUgb2YKICAvLyBhbiBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQogIC8vIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGVsZW1lbnQsIGlmIGFueS4gSWYgbm8gZWxlbWVudCBtYXRjaGVzIHRoZQogIC8vIHNlbGVjdG9yLCBvciB0aGUgZmlyc3QgbWF0Y2hpbmcgZWxlbWVudCBoYXMgbm8gSFRNTFdpZGdldAogIC8vIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCBpdCwgdGhlbiBudWxsIGlzIHJldHVybmVkLgogIC8vCiAgLy8gVGhlIHNjb3BlIGFyZ3VtZW50IGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gd2luZG93LmRvY3VtZW50LgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5maW5kID0gZnVuY3Rpb24oc2NvcGUsIHNlbGVjdG9yKSB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7CiAgICAgIHNlbGVjdG9yID0gc2NvcGU7CiAgICAgIHNjb3BlID0gZG9jdW1lbnQ7CiAgICB9CgogICAgdmFyIGVsID0gc2NvcGUucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CiAgICBpZiAoZWwgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlKGVsKTsKICAgIH0KICB9OwoKICAvLyBGaW5kcyBhbGwgZWxlbWVudHMgaW4gdGhlIHNjb3BlIHRoYXQgbWF0Y2ggdGhlIHNlbGVjdG9yLCBhbmQKICAvLyByZXR1cm5zIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlcyAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlcyBvZgogIC8vIGFuIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pCiAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50cywgaW4gYW4gYXJyYXkuIElmIGVsZW1lbnRzIHRoYXQKICAvLyBtYXRjaCB0aGUgc2VsZWN0b3IgZG9uJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIEhUTUxXaWRnZXQKICAvLyBpbnN0YW5jZSwgdGhlIHJldHVybmVkIGFycmF5IHdpbGwgY29udGFpbiBudWxscy4KICAvLwogIC8vIFRoZSBzY29wZSBhcmd1bWVudCBpcyBvcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIHdpbmRvdy5kb2N1bWVudC4KICB3aW5kb3cuSFRNTFdpZGdldHMuZmluZEFsbCA9IGZ1bmN0aW9uKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgewogICAgICBzZWxlY3RvciA9IHNjb3BlOwogICAgICBzY29wZSA9IGRvY3VtZW50OwogICAgfQoKICAgIHZhciBub2RlcyA9IHNjb3BlLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsKICAgICAgcmVzdWx0cy5wdXNoKHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZShub2Rlc1tpXSkpOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfTsKCiAgdmFyIHBvc3RSZW5kZXJIYW5kbGVycyA9IFtdOwogIGZ1bmN0aW9uIGludm9rZVBvc3RSZW5kZXJIYW5kbGVycygpIHsKICAgIHdoaWxlIChwb3N0UmVuZGVySGFuZGxlcnMubGVuZ3RoKSB7CiAgICAgIHZhciBoYW5kbGVyID0gcG9zdFJlbmRlckhhbmRsZXJzLnNoaWZ0KCk7CiAgICAgIGlmIChoYW5kbGVyKSB7CiAgICAgICAgaGFuZGxlcigpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZWdpc3RlciB0aGUgZ2l2ZW4gY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCBhZnRlciB0aGUKICAvLyBuZXh0IHRpbWUgc3RhdGljIHdpZGdldHMgYXJlIHJlbmRlcmVkLgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5hZGRQb3N0UmVuZGVySGFuZGxlciA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICBwb3N0UmVuZGVySGFuZGxlcnMucHVzaChjYWxsYmFjayk7CiAgfTsKCiAgLy8gVGFrZXMgYSBuZXctc3R5bGUgaW5zdGFuY2UtYm91bmQgZGVmaW5pdGlvbiwgYW5kIHJldHVybnMgYW4KICAvLyBvbGQtc3R5bGUgY2xhc3MtYm91bmQgZGVmaW5pdGlvbi4gVGhpcyBzYXZlcyB1cyBmcm9tIGhhdmluZwogIC8vIHRvIHJld3JpdGUgYWxsIHRoZSBsb2dpYyBpbiB0aGlzIGZpbGUgdG8gYWNjb21vZGF0ZSBib3RoCiAgLy8gdHlwZXMgb2YgZGVmaW5pdGlvbnMuCiAgZnVuY3Rpb24gY3JlYXRlTGVnYWN5RGVmaW5pdGlvbkFkYXB0ZXIoZGVmbikgewogICAgdmFyIHJlc3VsdCA9IHsKICAgICAgbmFtZTogZGVmbi5uYW1lLAogICAgICB0eXBlOiBkZWZuLnR5cGUsCiAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICAgICAgcmV0dXJuIGRlZm4uZmFjdG9yeShlbCwgd2lkdGgsIGhlaWdodCk7CiAgICAgIH0sCiAgICAgIHJlbmRlclZhbHVlOiBmdW5jdGlvbihlbCwgeCwgaW5zdGFuY2UpIHsKICAgICAgICByZXR1cm4gaW5zdGFuY2UucmVuZGVyVmFsdWUoeCk7CiAgICAgIH0sCiAgICAgIHJlc2l6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQsIGluc3RhbmNlKSB7CiAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICAgfQogICAgfTsKCiAgICBpZiAoZGVmbi5maW5kKQogICAgICByZXN1bHQuZmluZCA9IGRlZm4uZmluZDsKICAgIGlmIChkZWZuLnJlbmRlckVycm9yKQogICAgICByZXN1bHQucmVuZGVyRXJyb3IgPSBkZWZuLnJlbmRlckVycm9yOwogICAgaWYgKGRlZm4uY2xlYXJFcnJvcikKICAgICAgcmVzdWx0LmNsZWFyRXJyb3IgPSBkZWZuLmNsZWFyRXJyb3I7CgogICAgcmV0dXJuIHJlc3VsdDsKICB9Cn0pKCk7Cg=="></script>
<link href="data:text/css,%2Edt%2Dcrosstalk%2Dfade%20%7B%0Aopacity%3A%200%2E2%3B%0A%7D%0Ahtml%20body%20div%2EDTS%20div%2EdataTables%5FscrollBody%20%7B%0Abackground%3A%20none%3B%0A%7D%0A%0Atable%2EdataTable%20%7B%0Adisplay%3A%20table%3B%0A%7D%0A%0A%2Ehtml%2Dfill%2Dcontainer%20%3E%20%2Ehtml%2Dfill%2Ditem%2Edatatables%20%7B%0Aflex%2Dbasis%3A%20400px%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,KGZ1bmN0aW9uKCkgewoKLy8gc29tZSBoZWxwZXIgZnVuY3Rpb25zOiB1c2luZyBhIGdsb2JhbCBvYmplY3QgRFRXaWRnZXQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZAovLyBpbiBKUygpIGNvZGUsIGUuZy4gZGF0YXRhYmxlKG9wdGlvbnMgPSBsaXN0KGZvbyA9IEpTKCdjb2RlJykpKTsgdW5saWtlIFIncwovLyBkeW5hbWljIHNjb3BpbmcsIHdoZW4gJ2NvZGUnIGlzIGV2YWwnZWQsIEphdmFTY3JpcHQgZG9lcyBub3Qga25vdyBvYmplY3RzCi8vIGZyb20gdGhlICJwYXJlbnQgZnJhbWUiLCBlLmcuIEpTKCdEVFdpZGdldCcpIHdpbGwgbm90IHdvcmsgdW5sZXNzIGl0IHdhcyBtYWRlCi8vIGEgZ2xvYmFsIG9iamVjdAp2YXIgRFRXaWRnZXQgPSB7fTsKCi8vIDEyMzQ1NjY2Ni43ODkwIC0+IDEyMyw0NTYsNjY2Ljc4OTAKdmFyIG1hcmtJbnRlcnZhbCA9IGZ1bmN0aW9uKGQsIGRpZ2l0cywgaW50ZXJ2YWwsIG1hcmssIGRlY01hcmssIHByZWNpc2lvbikgewogIHggPSBwcmVjaXNpb24gPyBkLnRvUHJlY2lzaW9uKGRpZ2l0cykgOiBkLnRvRml4ZWQoZGlnaXRzKTsKICBpZiAoIS9eLT9bXGQuXSskLy50ZXN0KHgpKSByZXR1cm4geDsKICB2YXIgeHYgPSB4LnNwbGl0KCcuJyk7CiAgaWYgKHh2Lmxlbmd0aCA+IDIpIHJldHVybiB4OyAgLy8gc2hvdWxkIGhhdmUgYXQgbW9zdCBvbmUgZGVjaW1hbCBwb2ludAogIHh2WzBdID0geHZbMF0ucmVwbGFjZShuZXcgUmVnRXhwKCdcXEIoPz0oXFxkeycgKyBpbnRlcnZhbCArICd9KSsoPyFcXGQpKScsICdnJyksIG1hcmspOwogIHJldHVybiB4di5qb2luKGRlY01hcmspOwp9OwoKRFRXaWRnZXQuZm9ybWF0Q3VycmVuY3kgPSBmdW5jdGlvbihkYXRhLCBjdXJyZW5jeSwgZGlnaXRzLCBpbnRlcnZhbCwgbWFyaywgZGVjTWFyaywgYmVmb3JlLCB6ZXJvUHJpbnQpIHsKICB2YXIgZCA9IHBhcnNlRmxvYXQoZGF0YSk7CiAgaWYgKGlzTmFOKGQpKSByZXR1cm4gJyc7CiAgaWYgKHplcm9QcmludCAhPT0gbnVsbCAmJiBkID09PSAwLjApIHJldHVybiB6ZXJvUHJpbnQ7CiAgdmFyIHJlcyA9IG1hcmtJbnRlcnZhbChkLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrKTsKICByZXMgPSBiZWZvcmUgPyAoL14tLy50ZXN0KHJlcykgPyAnLScgKyBjdXJyZW5jeSArIHJlcy5yZXBsYWNlKC9eLS8sICcnKSA6IGN1cnJlbmN5ICsgcmVzKSA6CiAgICByZXMgKyBjdXJyZW5jeTsKICByZXR1cm4gcmVzOwp9OwoKRFRXaWRnZXQuZm9ybWF0U3RyaW5nID0gZnVuY3Rpb24oZGF0YSwgcHJlZml4LCBzdWZmaXgpIHsKICB2YXIgZCA9IGRhdGE7CiAgaWYgKGQgPT09IG51bGwpIHJldHVybiAnJzsKICByZXR1cm4gcHJlZml4ICsgZCArIHN1ZmZpeDsKfTsKCkRUV2lkZ2V0LmZvcm1hdFBlcmNlbnRhZ2UgPSBmdW5jdGlvbihkYXRhLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrLCB6ZXJvUHJpbnQpIHsKICB2YXIgZCA9IHBhcnNlRmxvYXQoZGF0YSk7CiAgaWYgKGlzTmFOKGQpKSByZXR1cm4gJyc7CiAgaWYgKHplcm9QcmludCAhPT0gbnVsbCAmJiBkID09PSAwLjApIHJldHVybiB6ZXJvUHJpbnQ7CiAgcmV0dXJuIG1hcmtJbnRlcnZhbChkICogMTAwLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrKSArICclJzsKfTsKCkRUV2lkZ2V0LmZvcm1hdFJvdW5kID0gZnVuY3Rpb24oZGF0YSwgZGlnaXRzLCBpbnRlcnZhbCwgbWFyaywgZGVjTWFyaywgemVyb1ByaW50KSB7CiAgdmFyIGQgPSBwYXJzZUZsb2F0KGRhdGEpOwogIGlmIChpc05hTihkKSkgcmV0dXJuICcnOwogIGlmICh6ZXJvUHJpbnQgIT09IG51bGwgJiYgZCA9PT0gMC4wKSByZXR1cm4gemVyb1ByaW50OwogIHJldHVybiBtYXJrSW50ZXJ2YWwoZCwgZGlnaXRzLCBpbnRlcnZhbCwgbWFyaywgZGVjTWFyayk7Cn07CgpEVFdpZGdldC5mb3JtYXRTaWduaWYgPSBmdW5jdGlvbihkYXRhLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrLCB6ZXJvUHJpbnQpIHsKICB2YXIgZCA9IHBhcnNlRmxvYXQoZGF0YSk7CiAgaWYgKGlzTmFOKGQpKSByZXR1cm4gJyc7CiAgaWYgKHplcm9QcmludCAhPT0gbnVsbCAmJiBkID09PSAwLjApIHJldHVybiB6ZXJvUHJpbnQ7CiAgcmV0dXJuIG1hcmtJbnRlcnZhbChkLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrLCB0cnVlKTsKfTsKCkRUV2lkZ2V0LmZvcm1hdERhdGUgPSBmdW5jdGlvbihkYXRhLCBtZXRob2QsIHBhcmFtcykgewogIHZhciBkID0gZGF0YTsKICBpZiAoZCA9PT0gbnVsbCkgcmV0dXJuICcnOwogIC8vIChuZXcgRGF0ZSgnMjAxNS0xMC0yOCcpKS50b0RhdGVTdHJpbmcoKSBtYXkgcmV0dXJuIDIwMTUtMTAtMjcgYmVjYXVzZSB0aGUKICAvLyBhY3R1YWwgdGltZSBjcmVhdGVkIGNvdWxkIGJlIGxpa2UgJ1R1ZSBPY3QgMjcgMjAxNSAxOTowMDowMCBHTVQtMDUwMCAoQ0RUKScsCiAgLy8gaS5lLiB0aGUgZGF0ZS1vbmx5IHN0cmluZyBpcyB0cmVhdGVkIGFzIFVUQyB0aW1lIGluc3RlYWQgb2YgbG9jYWwgdGltZQogIGlmICgobWV0aG9kID09PSAndG9EYXRlU3RyaW5nJyB8fCBtZXRob2QgPT09ICd0b0xvY2FsZURhdGVTdHJpbmcnKSAmJiAvXlxkezQsfVxEXGR7Mn1cRFxkezJ9JC8udGVzdChkKSkgewogICAgZCA9IGQuc3BsaXQoL1xELyk7CiAgICBkID0gbmV3IERhdGUoZFswXSwgZFsxXSAtIDEsIGRbMl0pOwogIH0gZWxzZSB7CiAgICBkID0gbmV3IERhdGUoZCk7CiAgfQogIHJldHVybiBkW21ldGhvZF0uYXBwbHkoZCwgcGFyYW1zKTsKfTsKCndpbmRvdy5EVFdpZGdldCA9IERUV2lkZ2V0OwoKLy8gQSBoZWxwZXIgZnVuY3Rpb24gdG8gdXBkYXRlIHRoZSBwcm9wZXJ0aWVzIG9mIGV4aXN0aW5nIGZpbHRlcnMKdmFyIHNldEZpbHRlclByb3BzID0gZnVuY3Rpb24odGQsIHByb3BzKSB7CiAgLy8gVXBkYXRlIGVuYWJsZWQvZGlzYWJsZWQgc3RhdGUKICB2YXIgJGlucHV0ID0gJCh0ZCkuZmluZCgnaW5wdXQnKS5maXJzdCgpOwogIHZhciBzZWFyY2hhYmxlID0gJGlucHV0LmRhdGEoJ3NlYXJjaGFibGUnKTsKICAkaW5wdXQucHJvcCgnZGlzYWJsZWQnLCAhc2VhcmNoYWJsZSB8fCBwcm9wcy5kaXNhYmxlZCk7CgogIC8vIEJhc2VkIG9uIHRoZSBmaWx0ZXIgdHlwZSwgc2V0IGl0cyBuZXcgdmFsdWVzCiAgdmFyIHR5cGUgPSB0ZC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdHlwZScpOwogIGlmIChbJ2ZhY3RvcicsICdsb2dpY2FsJ10uaW5jbHVkZXModHlwZSkpIHsKICAgIC8vIFJlZm9ybWF0IHRoZSBuZXcgZHJvcGRvd24gb3B0aW9ucyBmb3IgdXNlIHdpdGggc2VsZWN0aXplCiAgICB2YXIgbmV3X3ZhbHMgPSBwcm9wcy5wYXJhbXMub3B0aW9ucy5tYXAoZnVuY3Rpb24oaXRlbSkgewogICAgICByZXR1cm4geyB0ZXh0OiBpdGVtLCB2YWx1ZTogaXRlbSB9OwogICAgfSk7CgogICAgLy8gRmluZCB0aGUgc2VsZWN0aXplIG9iamVjdAogICAgdmFyIGRyb3Bkb3duID0gJCh0ZCkuZmluZCgnLnNlbGVjdGl6ZWQnKS5lcSgwKVswXS5zZWxlY3RpemU7CgogICAgLy8gTm90ZSB0aGUgY3VycmVudCB2YWx1ZXMKICAgIHZhciBvbGRfdmFscyA9IGRyb3Bkb3duLmdldFZhbHVlKCk7CgogICAgLy8gUmVtb3ZlIHRoZSBleGlzdGluZyB2YWx1ZXMKICAgIGRyb3Bkb3duLmNsZWFyT3B0aW9ucygpOwoKICAgIC8vIEFkZCB0aGUgbmV3IG9wdGlvbnMKICAgIGRyb3Bkb3duLmFkZE9wdGlvbihuZXdfdmFscyk7CgogICAgLy8gUHJlc2VydmUgdGhlIGV4aXN0aW5nIHZhbHVlcwogICAgZHJvcGRvd24uc2V0VmFsdWUob2xkX3ZhbHMpOwoKICB9IGVsc2UgaWYgKFsnbnVtYmVyJywgJ2ludGVnZXInLCAnZGF0ZScsICd0aW1lJ10uaW5jbHVkZXModHlwZSkpIHsKICAgIC8vIEFwcGx5IGludGVybmFsIHNjYWxpbmcgdG8gbmV3IGxpbWl0cy4gVXBkYXRpbmcgc2NhbGUgbm90IHlldCBpbXBsZW1lbnRlZC4KICAgIHZhciBzbGlkZXIgPSAkKHRkKS5maW5kKCcubm9VaS10YXJnZXQnKS5lcSgwKTsKICAgIHZhciBzY2FsZSA9IE1hdGgucG93KDEwLCBNYXRoLm1heCgwLCArc2xpZGVyLmRhdGEoJ3NjYWxlJykgfHwgMCkpOwogICAgdmFyIG5ld192YWxzID0gW3Byb3BzLnBhcmFtcy5taW4gKiBzY2FsZSwgcHJvcHMucGFyYW1zLm1heCAqIHNjYWxlXTsKCiAgICAvLyBOb3RlIHdoYXQgdGhlIG5ldyBsaW1pdHMgd2lsbCBiZSBqdXN0IGZvciB0aGlzIGZpbHRlcgogICAgdmFyIG5ld19saW1zID0gbmV3X3ZhbHMuc2xpY2UoKTsKCiAgICAvLyBEZXRlcm1pbmUgdGhlIGN1cnJlbnQgdmFsdWVzIGFuZCBsaW1pdHMKICAgIHZhciBvbGRfdmFscyA9IHNsaWRlci52YWwoKS5tYXAoTnVtYmVyKTsKICAgIHZhciBvbGRfbGltcyA9IHNsaWRlci5ub1VpU2xpZGVyKCdvcHRpb25zJykucmFuZ2U7CiAgICBvbGRfbGltcyA9IFtvbGRfbGltcy5taW4sIG9sZF9saW1zLm1heF07CgogICAgLy8gUHJlc2VydmUgdGhlIGN1cnJlbnQgdmFsdWVzIGlmIGZpbHRlcnMgaGF2ZSBiZWVuIGFwcGxpZWQ7IG90aGVyd2lzZSwgYXBwbHkgbm8gZmlsdGVyaW5nCiAgICBpZiAob2xkX3ZhbHNbMF0gIT0gb2xkX2xpbXNbMF0pIHsKICAgICAgbmV3X3ZhbHNbMF0gPSBNYXRoLm1heChvbGRfdmFsc1swXSwgbmV3X3ZhbHNbMF0pOwogICAgfQoKICAgIGlmIChvbGRfdmFsc1sxXSAhPSBvbGRfbGltc1sxXSkgewogICAgICBuZXdfdmFsc1sxXSA9IE1hdGgubWluKG9sZF92YWxzWzFdLCBuZXdfdmFsc1sxXSk7CiAgICB9CgogICAgLy8gVXBkYXRlIHRoZSBlbmRwb2ludHMgb2YgdGhlIHNsaWRlcgogICAgc2xpZGVyLm5vVWlTbGlkZXIoewogICAgICBzdGFydDogbmV3X3ZhbHMsCiAgICAgIHJhbmdlOiB7J21pbic6IG5ld19saW1zWzBdLCAnbWF4JzogbmV3X2xpbXNbMV19CiAgICB9LCB0cnVlKTsKICB9Cn07Cgp2YXIgdHJhbnNwb3NlQXJyYXkyRCA9IGZ1bmN0aW9uKGEpIHsKICByZXR1cm4gYS5sZW5ndGggPT09IDAgPyBhIDogSFRNTFdpZGdldHMudHJhbnNwb3NlQXJyYXkyRChhKTsKfTsKCnZhciBjcm9zc3RhbGtQbHVnaW5zSW5zdGFsbGVkID0gZmFsc2U7CgpmdW5jdGlvbiBtYXliZUluc3RhbGxDcm9zc3RhbGtQbHVnaW5zKCkgewogIGlmIChjcm9zc3RhbGtQbHVnaW5zSW5zdGFsbGVkKQogICAgcmV0dXJuOwogIGNyb3NzdGFsa1BsdWdpbnNJbnN0YWxsZWQgPSB0cnVlOwoKICAkLmZuLmRhdGFUYWJsZS5leHQuYWZuRmlsdGVyaW5nLnB1c2goCiAgICBmdW5jdGlvbihvU2V0dGluZ3MsIGFEYXRhLCBpRGF0YUluZGV4KSB7CiAgICAgIHZhciBjdGZpbHRlciA9IG9TZXR0aW5ncy5uVGFibGUuY3RmaWx0ZXI7CiAgICAgIGlmIChjdGZpbHRlciAmJiAhY3RmaWx0ZXJbaURhdGFJbmRleF0pCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgdmFyIGN0c2VsZWN0ID0gb1NldHRpbmdzLm5UYWJsZS5jdHNlbGVjdDsKICAgICAgaWYgKGN0c2VsZWN0ICYmICFjdHNlbGVjdFtpRGF0YUluZGV4XSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICApOwp9CgpIVE1MV2lkZ2V0cy53aWRnZXQoewogIG5hbWU6ICJkYXRhdGFibGVzIiwKICB0eXBlOiAib3V0cHV0IiwKICByZW5kZXJPbk51bGxWYWx1ZTogdHJ1ZSwKICBpbml0aWFsaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCkgewogICAgLy8gaW4gb3JkZXIgdGhhdCB0aGUgdHlwZT1udW1iZXIgaW5wdXRzIHJldHVybiBhIG51bWJlcgogICAgJC52YWxIb29rcy5udW1iZXIgPSB7CiAgICAgIGdldDogZnVuY3Rpb24oZWwpIHsKICAgICAgICB2YXIgdmFsdWUgPSBwYXJzZUZsb2F0KGVsLnZhbHVlKTsKICAgICAgICByZXR1cm4gaXNOYU4odmFsdWUpID8gIiIgOiB2YWx1ZTsKICAgICAgfQogICAgfTsKICAgICQoZWwpLmh0bWwoJyZuYnNwOycpOwogICAgcmV0dXJuIHsKICAgICAgZGF0YTogbnVsbCwKICAgICAgY3RmaWx0ZXJIYW5kbGU6IG5ldyBjcm9zc3RhbGsuRmlsdGVySGFuZGxlKCksCiAgICAgIGN0ZmlsdGVyU3Vic2NyaXB0aW9uOiBudWxsLAogICAgICBjdHNlbGVjdEhhbmRsZTogbmV3IGNyb3NzdGFsay5TZWxlY3Rpb25IYW5kbGUoKSwKICAgICAgY3RzZWxlY3RTdWJzY3JpcHRpb246IG51bGwKICAgIH07CiAgfSwKICByZW5kZXJWYWx1ZTogZnVuY3Rpb24oZWwsIGRhdGEsIGluc3RhbmNlKSB7CiAgICBpZiAoZWwub2Zmc2V0V2lkdGggPT09IDAgfHwgZWwub2Zmc2V0SGVpZ2h0ID09PSAwKSB7CiAgICAgIGluc3RhbmNlLmRhdGEgPSBkYXRhOwogICAgICByZXR1cm47CiAgICB9CiAgICBpbnN0YW5jZS5kYXRhID0gbnVsbDsKICAgIHZhciAkZWwgPSAkKGVsKTsKICAgICRlbC5lbXB0eSgpOwoKICAgIGlmIChkYXRhID09PSBudWxsKSB7CiAgICAgICRlbC5hcHBlbmQoJyZuYnNwOycpOwogICAgICAvLyBjbGVhciBwcmV2aW91cyBTaGlueSBpbnB1dHMgKGlmIGFueSkKICAgICAgZm9yICh2YXIgaSBpbiBpbnN0YW5jZS5jbGVhcklucHV0cykgaW5zdGFuY2UuY2xlYXJJbnB1dHNbaV0oKTsKICAgICAgaW5zdGFuY2UuY2xlYXJJbnB1dHMgPSB7fTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBjcm9zc3RhbGtPcHRpb25zID0gZGF0YS5jcm9zc3RhbGtPcHRpb25zOwogICAgaWYgKCFjcm9zc3RhbGtPcHRpb25zKSBjcm9zc3RhbGtPcHRpb25zID0gewogICAgICAna2V5JzogbnVsbCwgJ2dyb3VwJzogbnVsbAogICAgfTsKICAgIGlmIChjcm9zc3RhbGtPcHRpb25zLmdyb3VwKSB7CiAgICAgIG1heWJlSW5zdGFsbENyb3NzdGFsa1BsdWdpbnMoKTsKICAgICAgaW5zdGFuY2UuY3RmaWx0ZXJIYW5kbGUuc2V0R3JvdXAoY3Jvc3N0YWxrT3B0aW9ucy5ncm91cCk7CiAgICAgIGluc3RhbmNlLmN0c2VsZWN0SGFuZGxlLnNldEdyb3VwKGNyb3NzdGFsa09wdGlvbnMuZ3JvdXApOwogICAgfQoKICAgIC8vIGlmIHdlIGFyZSBpbiB0aGUgdmlld2VyIHRoZW4gd2UgYWx3YXlzIHdhbnQgdG8gZmlsbENvbnRhaW5lciBhbmQKICAgIC8vIGFuZCBhdXRvSGlkZU5hdmlnYXRpb24gKHVubGVzcyB0aGUgdXNlciBoYXMgZXhwbGljaXRseSBzZXQgdGhlc2UpCiAgICBpZiAod2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUpIHsKICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KCJmaWxsQ29udGFpbmVyIikpCiAgICAgICAgZGF0YS5maWxsQ29udGFpbmVyID0gdHJ1ZTsKICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KCJhdXRvSGlkZU5hdmlnYXRpb24iKSkKICAgICAgICBkYXRhLmF1dG9IaWRlTmF2aWdhdGlvbiA9IHRydWU7CiAgICB9CgogICAgLy8gcHJvcGFnYXRlIGZpbGxDb250YWluZXIgdG8gaW5zdGFuY2UgKHNvIHdlIGhhdmUgaXQgaW4gcmVzaXplKQogICAgaW5zdGFuY2UuZmlsbENvbnRhaW5lciA9IGRhdGEuZmlsbENvbnRhaW5lcjsKCiAgICB2YXIgY2VsbHMgPSBkYXRhLmRhdGE7CgogICAgaWYgKGNlbGxzIGluc3RhbmNlb2YgQXJyYXkpIGNlbGxzID0gdHJhbnNwb3NlQXJyYXkyRChjZWxscyk7CgogICAgJGVsLmFwcGVuZChkYXRhLmNvbnRhaW5lcik7CiAgICB2YXIgJHRhYmxlID0gJGVsLmZpbmQoJ3RhYmxlJyk7CiAgICBpZiAoZGF0YS5jbGFzcykgJHRhYmxlLmFkZENsYXNzKGRhdGEuY2xhc3MpOwogICAgaWYgKGRhdGEuY2FwdGlvbikgJHRhYmxlLnByZXBlbmQoZGF0YS5jYXB0aW9uKTsKCiAgICBpZiAoIWRhdGEuc2VsZWN0aW9uKSBkYXRhLnNlbGVjdGlvbiA9IHsKICAgICAgbW9kZTogJ25vbmUnLCBzZWxlY3RlZDogbnVsbCwgdGFyZ2V0OiAncm93Jywgc2VsZWN0YWJsZTogbnVsbAogICAgfTsKICAgIGlmIChIVE1MV2lkZ2V0cy5zaGlueU1vZGUgJiYgZGF0YS5zZWxlY3Rpb24ubW9kZSAhPT0gJ25vbmUnICYmCiAgICAgICAgZGF0YS5zZWxlY3Rpb24udGFyZ2V0ID09PSAncm93K2NvbHVtbicpIHsKICAgICAgaWYgKCR0YWJsZS5jaGlsZHJlbigndGZvb3QnKS5sZW5ndGggPT09IDApIHsKICAgICAgICAkdGFibGUuYXBwZW5kKCQoJzx0Zm9vdD4nKSk7CiAgICAgICAgJHRhYmxlLmZpbmQoJ3RoZWFkIHRyJykuY2xvbmUoKS5hcHBlbmRUbygkdGFibGUuZmluZCgndGZvb3QnKSk7CiAgICAgIH0KICAgIH0KCiAgICAvLyBjb2x1bW4gZmlsdGVycwogICAgdmFyIGZpbHRlclJvdzsKICAgIHN3aXRjaCAoZGF0YS5maWx0ZXIpIHsKICAgICAgY2FzZSAndG9wJzoKICAgICAgICAkdGFibGUuY2hpbGRyZW4oJ3RoZWFkJykuYXBwZW5kKGRhdGEuZmlsdGVySFRNTCk7CiAgICAgICAgZmlsdGVyUm93ID0gJHRhYmxlLmZpbmQoJ3RoZWFkIHRyOmxhc3QgdGQnKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnYm90dG9tJzoKICAgICAgICBpZiAoJHRhYmxlLmNoaWxkcmVuKCd0Zm9vdCcpLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgJHRhYmxlLmFwcGVuZCgkKCc8dGZvb3Q+JykpOwogICAgICAgIH0KICAgICAgICAkdGFibGUuY2hpbGRyZW4oJ3Rmb290JykucHJlcGVuZChkYXRhLmZpbHRlckhUTUwpOwogICAgICAgIGZpbHRlclJvdyA9ICR0YWJsZS5maW5kKCd0Zm9vdCB0cjpmaXJzdCB0ZCcpOwogICAgICAgIGJyZWFrOwogICAgfQoKICAgIHZhciBvcHRpb25zID0geyBzZWFyY2hEZWxheTogMTAwMCB9OwogICAgaWYgKGNlbGxzICE9PSBudWxsKSAkLmV4dGVuZChvcHRpb25zLCB7CiAgICAgIGRhdGE6IGNlbGxzCiAgICB9KTsKCiAgICAvLyBvcHRpb25zIGZvciBmaWxsQ29udGFpbmVyCiAgICB2YXIgYm9vdHN0cmFwQWN0aXZlID0gdHlwZW9mKCQuZm4ucG9wb3ZlcikgIT0gJ3VuZGVmaW5lZCc7CiAgICBpZiAoaW5zdGFuY2UuZmlsbENvbnRhaW5lcikgewoKICAgICAgLy8gZm9yY2Ugc2Nyb2xsWC9zY3JvbGxZIGFuZCB0dXJuIG9mZiBhdXRvV2lkdGgKICAgICAgb3B0aW9ucy5zY3JvbGxYID0gdHJ1ZTsKICAgICAgb3B0aW9ucy5zY3JvbGxZID0gIjEwMHB4IjsgLy8gY2FuIGJlIGFueSB2YWx1ZSwgd2UnbGwgYWRqdXN0IGJlbG93CgogICAgICAvLyBpZiB3ZSBhcmVuJ3QgcGFnaW5hdGluZyB0aGVuIG1vdmUgYXJvdW5kIHRoZSBpbmZvL2ZpbHRlciBjb250cm9scwogICAgICAvLyB0byBzYXZlIHNwYWNlIGF0IHRoZSBib3R0b20gYW5kIHJlcGhyYXNlIHRoZSBpbmZvIGNhbGxiYWNrCiAgICAgIGlmIChkYXRhLm9wdGlvbnMucGFnaW5nID09PSBmYWxzZSkgewoKICAgICAgICAvLyB3ZSBrbm93IGhvdyB0byBkbyB0aGlzIGNsZWFubHkgZm9yIGJvb3RzdHJhcCwgbm90IHNvIG11Y2gKICAgICAgICAvLyBmb3Igb3RoZXIgdGhlbWVzL2xheW91dHMKICAgICAgICBpZiAoYm9vdHN0cmFwQWN0aXZlKSB7CiAgICAgICAgICBvcHRpb25zLmRvbSA9ICI8J3Jvdyc8J2NvbC1zbS00J2k+PCdjb2wtc20tOCdmPj4iICsKICAgICAgICAgICAgICAgICAgICAgICAgIjwncm93JzwnY29sLXNtLTEyJ3RyPj4iOwogICAgICAgIH0KCiAgICAgICAgb3B0aW9ucy5mbkluZm9DYWxsYmFjayA9IGZ1bmN0aW9uKG9TZXR0aW5ncywgaVN0YXJ0LCBpRW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaU1heCwgaVRvdGFsLCBzUHJlKSB7CiAgICAgICAgICByZXR1cm4gTnVtYmVyKGlUb3RhbCkudG9Mb2NhbGVTdHJpbmcoKSArICIgcmVjb3JkcyI7CiAgICAgICAgfTsKICAgICAgfQogICAgfQoKICAgIC8vIGF1dG8gaGlkZSBuYXZpZ2F0aW9uIGlmIHJlcXVlc3RlZAogICAgLy8gTm90ZSwgdGhpcyBvbmx5IHdvcmtzIG9uIGNsaWVudC1zaWRlIHByb2Nlc3NpbmcgbW9kZSBhcyBvbiBzZXJ2ZXItc2lkZSwKICAgIC8vIGNlbGxzIChkYXRhLmRhdGEpIGlzIG51bGw7IEluIGFkZGl0aW9uLCB3ZSByZXF1aXJlIHRoZSBwYWdlTGVuZ3RoIG9wdGlvbgogICAgLy8gYmVpbmcgcHJvdmlkZWQgZXhwbGljaXRseSB0byBlbmFibGUgdGhpcy4gRGVzcGl0ZSB3ZSBtYXkgYmUgYWJsZSB0byBkZWR1Y2UKICAgIC8vIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHBhZ2VMZW5ndGgsIGl0IG1heSBjb21wbGljYXRlIHRoaW5ncyBzbyB3ZSdkIHJhdGhlcgogICAgLy8gcHV0IHRoaXMgcmVzcG9uc2libGl0eSB0byB1c2VycyBhbmQgd2FybiB0aGVtIG9uIHRoZSBSIHNpZGUuCiAgICBpZiAoZGF0YS5hdXRvSGlkZU5hdmlnYXRpb24gPT09IHRydWUgJiYgZGF0YS5vcHRpb25zLnBhZ2luZyAhPT0gZmFsc2UpIHsKICAgICAgLy8gc3RyaXAgYWxsIG5hdiBpZiBsZW5ndGggPj0gY2VsbHMKICAgICAgaWYgKChjZWxscyBpbnN0YW5jZW9mIEFycmF5KSAmJiBkYXRhLm9wdGlvbnMucGFnZUxlbmd0aCA+PSBjZWxscy5sZW5ndGgpCiAgICAgICAgb3B0aW9ucy5kb20gPSBib290c3RyYXBBY3RpdmUgPyAiPCdyb3cnPCdjb2wtc20tMTIndHI+PiIgOiAidCI7CiAgICAgIC8vIGFsdGVybmF0aXZlbHkgbGVhbiB0aGluZ3Mgb3V0IGZvciBmbGV4ZGFzaGJvYXJkIG1vYmlsZSBwb3J0cmFpdAogICAgICBlbHNlIGlmIChib290c3RyYXBBY3RpdmUgJiYgd2luZG93LkZsZXhEYXNoYm9hcmQgJiYgd2luZG93LkZsZXhEYXNoYm9hcmQuaXNNb2JpbGVQaG9uZSgpKQogICAgICAgIG9wdGlvbnMuZG9tID0gIjwncm93JzwnY29sLXNtLTEyJ2Y+PiIgKwogICAgICAgICAgICAgICAgICAgICAgIjwncm93JzwnY29sLXNtLTEyJ3RyPj4iICArCiAgICAgICAgICAgICAgICAgICAgICAiPCdyb3cnPCdjb2wtc20tMTIncD4+IjsKICAgIH0KCiAgICAkLmV4dGVuZCh0cnVlLCBvcHRpb25zLCBkYXRhLm9wdGlvbnMgfHwge30pOwoKICAgIHZhciBzZWFyY2hDb2xzID0gb3B0aW9ucy5zZWFyY2hDb2xzOwogICAgaWYgKHNlYXJjaENvbHMpIHsKICAgICAgc2VhcmNoQ29scyA9IHNlYXJjaENvbHMubWFwKGZ1bmN0aW9uKHgpIHsKICAgICAgICByZXR1cm4geCA9PT0gbnVsbCA/ICcnIDogeC5zZWFyY2g7CiAgICAgIH0pOwogICAgICAvLyBGSVhNRTogdGhpcyBtZWFucyBJIGRvbid0IHJlc3BlY3QgdGhlIGVzY2FwZVJlZ2V4IHNldHRpbmcKICAgICAgZGVsZXRlIG9wdGlvbnMuc2VhcmNoQ29sczsKICAgIH0KCiAgICAvLyBzZXJ2ZXItc2lkZSBwcm9jZXNzaW5nPwogICAgdmFyIHNlcnZlciA9IG9wdGlvbnMuc2VydmVyU2lkZSA9PT0gdHJ1ZTsKCiAgICAvLyB1c2UgdGhlIGRhdGFTcmMgZnVuY3Rpb24gdG8gcHJlLXByb2Nlc3MgSlNPTiBkYXRhIHJldHVybmVkIGZyb20gUgogICAgdmFyIERUX3Jvd3NfYWxsID0gW10sIERUX3Jvd3NfY3VycmVudCA9IFtdOwogICAgaWYgKHNlcnZlciAmJiBIVE1MV2lkZ2V0cy5zaGlueU1vZGUgJiYgdHlwZW9mIG9wdGlvbnMuYWpheCA9PT0gJ29iamVjdCcgJiYKICAgICAgICAvXnNlc3Npb25cL1tcZGEtel0rXC9kYXRhb2JqLy50ZXN0KG9wdGlvbnMuYWpheC51cmwpICYmICFvcHRpb25zLmFqYXguZGF0YVNyYykgewogICAgICBvcHRpb25zLmFqYXguZGF0YVNyYyA9IGZ1bmN0aW9uKGpzb24pIHsKICAgICAgICBEVF9yb3dzX2FsbCA9ICQubWFrZUFycmF5KGpzb24uRFRfcm93c19hbGwpOwogICAgICAgIERUX3Jvd3NfY3VycmVudCA9ICQubWFrZUFycmF5KGpzb24uRFRfcm93c19jdXJyZW50KTsKICAgICAgICB2YXIgZGF0YSA9IGpzb24uZGF0YTsKICAgICAgICBpZiAoIWNvbFJlb3JkZXJFbmFibGVkKCkpIHJldHVybiBkYXRhOwogICAgICAgIHZhciB0YWJsZSA9ICR0YWJsZS5EYXRhVGFibGUoKSwgb3JkZXIgPSB0YWJsZS5jb2xSZW9yZGVyLm9yZGVyKCksIGZsYWcgPSB0cnVlLCBpLCBqLCByb3c7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IG9yZGVyLmxlbmd0aDsgKytpKSBpZiAob3JkZXJbaV0gIT09IGkpIGZsYWcgPSBmYWxzZTsKICAgICAgICBpZiAoZmxhZykgcmV0dXJuIGRhdGE7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHsKICAgICAgICAgIHJvdyA9IGRhdGFbaV0uc2xpY2UoKTsKICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBvcmRlci5sZW5ndGg7ICsraikgZGF0YVtpXVtqXSA9IHJvd1tvcmRlcltqXV07CiAgICAgICAgfQogICAgICAgIHJldHVybiBkYXRhOwogICAgICB9OwogICAgfQoKICAgIHZhciB0aGl6ID0gdGhpczsKICAgIGlmIChpbnN0YW5jZS5maWxsQ29udGFpbmVyKSAkdGFibGUub24oJ2luaXQuZHQnLCBmdW5jdGlvbihlKSB7CiAgICAgIHRoaXouZmlsbEF2YWlsYWJsZUhlaWdodChlbCwgJChlbCkuaW5uZXJIZWlnaHQoKSk7CiAgICB9KTsKICAgIC8vIElmIHRoZSBwYWdlIGNvbnRhaW5zIHNlcnZlcmFsIGRhdGF0YWJsZXMgYW5kIG9uZSBvZiB3aGljaCBlbmFibGVzIGNvbFJlb3JkZXIsCiAgICAvLyB0aGUgdGFibGUuY29sUmVvcmRlci5vcmRlcigpIGZ1bmN0aW9uIHdpbGwgZXhpc3QgYnV0IHRocm93cyBlcnJvciB3aGVuIGNhbGxlZC4KICAgIC8vIFNvIGl0IHNlZW1zIGxpa2UgdGhlIG9ubHkgd2F5IHRvIGtub3cgaWYgY29sUmVvcmRlciBpcyBlbmFibGVkIG9yIG5vdCBpcyB0bwogICAgLy8gY2hlY2sgdGhlIG9wdGlvbnMuCiAgICB2YXIgY29sUmVvcmRlckVuYWJsZWQgPSBmdW5jdGlvbigpIHsgcmV0dXJuICJjb2xSZW9yZGVyIiBpbiBvcHRpb25zOyB9OwogICAgdmFyIHRhYmxlID0gJHRhYmxlLkRhdGFUYWJsZShvcHRpb25zKTsKICAgICRlbC5kYXRhKCdkYXRhdGFibGUnLCB0YWJsZSk7CgogICAgaWYgKCdyb3dHcm91cCcgaW4gb3B0aW9ucykgewogICAgICAvLyBNYWludGFpbiBSb3dHcm91cCBkYXRhU3JjIHdoZW4gY29sdW1ucyBhcmUgcmVvcmRlcmVkICgjMTEwOSkKICAgICAgdGFibGUub24oJ2NvbHVtbi1yZW9yZGVyJywgZnVuY3Rpb24oZSwgc2V0dGluZ3MsIGRldGFpbHMpIHsKICAgICAgICB2YXIgb2xkRGF0YVNyYyA9IHRhYmxlLnJvd0dyb3VwKCkuZGF0YVNyYygpOwogICAgICAgIHZhciBuZXdEYXRhU3JjID0gZGV0YWlscy5tYXBwaW5nW29sZERhdGFTcmNdOwogICAgICAgIHRhYmxlLnJvd0dyb3VwKCkuZGF0YVNyYyhuZXdEYXRhU3JjKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gVW5yZWdpc3RlciBwcmV2aW91cyBDcm9zc3RhbGsgZXZlbnQgc3Vic2NyaXB0aW9ucywgaWYgdGhleSBleGlzdAogICAgaWYgKGluc3RhbmNlLmN0ZmlsdGVyU3Vic2NyaXB0aW9uKSB7CiAgICAgIGluc3RhbmNlLmN0ZmlsdGVySGFuZGxlLm9mZigiY2hhbmdlIiwgaW5zdGFuY2UuY3RmaWx0ZXJTdWJzY3JpcHRpb24pOwogICAgICBpbnN0YW5jZS5jdGZpbHRlclN1YnNjcmlwdGlvbiA9IG51bGw7CiAgICB9CiAgICBpZiAoaW5zdGFuY2UuY3RzZWxlY3RTdWJzY3JpcHRpb24pIHsKICAgICAgaW5zdGFuY2UuY3RzZWxlY3RIYW5kbGUub2ZmKCJjaGFuZ2UiLCBpbnN0YW5jZS5jdHNlbGVjdFN1YnNjcmlwdGlvbik7CiAgICAgIGluc3RhbmNlLmN0c2VsZWN0U3Vic2NyaXB0aW9uID0gbnVsbDsKICAgIH0KCiAgICBpZiAoIWNyb3NzdGFsa09wdGlvbnMuZ3JvdXApIHsKICAgICAgJHRhYmxlWzBdLmN0ZmlsdGVyID0gbnVsbDsKICAgICAgJHRhYmxlWzBdLmN0c2VsZWN0ID0gbnVsbDsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBrZXkgPSBjcm9zc3RhbGtPcHRpb25zLmtleTsKICAgICAgZnVuY3Rpb24ga2V5c1RvTWF0Y2hlcyhrZXlzKSB7CiAgICAgICAgaWYgKCFrZXlzKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIHNlbGVjdGVkS2V5cyA9IHt9OwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHNlbGVjdGVkS2V5c1trZXlzW2ldXSA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgbWF0Y2hlcyA9IHt9OwogICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBrZXkubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgaWYgKHNlbGVjdGVkS2V5c1trZXlbal1dKQogICAgICAgICAgICAgIG1hdGNoZXNbal0gPSB0cnVlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIG1hdGNoZXM7CiAgICAgICAgfQogICAgICB9CgogICAgICBmdW5jdGlvbiBhcHBseUNyb3NzdGFsa0ZpbHRlcihlKSB7CiAgICAgICAgJHRhYmxlWzBdLmN0ZmlsdGVyID0ga2V5c1RvTWF0Y2hlcyhlLnZhbHVlKTsKICAgICAgICB0YWJsZS5kcmF3KCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2UuY3RmaWx0ZXJTdWJzY3JpcHRpb24gPSBpbnN0YW5jZS5jdGZpbHRlckhhbmRsZS5vbigiY2hhbmdlIiwgYXBwbHlDcm9zc3RhbGtGaWx0ZXIpOwogICAgICBhcHBseUNyb3NzdGFsa0ZpbHRlcih7dmFsdWU6IGluc3RhbmNlLmN0ZmlsdGVySGFuZGxlLmZpbHRlcmVkS2V5c30pOwoKICAgICAgZnVuY3Rpb24gYXBwbHlDcm9zc3RhbGtTZWxlY3Rpb24oZSkgewogICAgICAgIGlmIChlLnNlbmRlciAhPT0gaW5zdGFuY2UuY3RzZWxlY3RIYW5kbGUpIHsKICAgICAgICAgIHRhYmxlCiAgICAgICAgICAgIC5yb3dzKCcuJyArIHNlbENsYXNzLCB7c2VhcmNoOiAnYXBwbGllZCd9KQogICAgICAgICAgICAubm9kZXMoKQogICAgICAgICAgICAudG8kKCkKICAgICAgICAgICAgLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgIGlmIChzZWxlY3RlZFJvd3MpCiAgICAgICAgICAgIGNoYW5nZUlucHV0KCdyb3dzX3NlbGVjdGVkJywgc2VsZWN0ZWRSb3dzKCksIHZvaWQgMCwgdHJ1ZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZS5zZW5kZXIgIT09IGluc3RhbmNlLmN0c2VsZWN0SGFuZGxlICYmIGUudmFsdWUgJiYgZS52YWx1ZS5sZW5ndGgpIHsKICAgICAgICAgIHZhciBtYXRjaGVzID0ga2V5c1RvTWF0Y2hlcyhlLnZhbHVlKTsKCiAgICAgICAgICAvLyBwZXJzaXN0ZW50IHNlbGVjdGlvbiB3aXRoIHBsb3RseSAoJiBsZWFmbGV0KQogICAgICAgICAgdmFyIGN0T3B0cyA9IGNyb3NzdGFsay52YXIoInBsb3RseUNyb3NzdGFsa09wdHMiKS5nZXQoKSB8fCB7fTsKICAgICAgICAgIGlmIChjdE9wdHMucGVyc2lzdGVudCA9PT0gdHJ1ZSkgewogICAgICAgICAgICB2YXIgbWF0Y2hlcyA9ICQuZXh0ZW5kKG1hdGNoZXMsICR0YWJsZVswXS5jdHNlbGVjdCk7CiAgICAgICAgICB9CgogICAgICAgICAgJHRhYmxlWzBdLmN0c2VsZWN0ID0gbWF0Y2hlczsKICAgICAgICAgIHRhYmxlLmRyYXcoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKCR0YWJsZVswXS5jdHNlbGVjdCkgewogICAgICAgICAgICAkdGFibGVbMF0uY3RzZWxlY3QgPSBudWxsOwogICAgICAgICAgICB0YWJsZS5kcmF3KCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGluc3RhbmNlLmN0c2VsZWN0U3Vic2NyaXB0aW9uID0gaW5zdGFuY2UuY3RzZWxlY3RIYW5kbGUub24oImNoYW5nZSIsIGFwcGx5Q3Jvc3N0YWxrU2VsZWN0aW9uKTsKICAgICAgLy8gVE9ETzogVGhpcyBuZXh0IGxpbmUgZG9lc24ndCBzZWVtIHRvIHdvcmsgd2hlbiByZW5kZXJEYXRhVGFibGUgaXMgdXNlZAogICAgICBhcHBseUNyb3NzdGFsa1NlbGVjdGlvbih7dmFsdWU6IGluc3RhbmNlLmN0c2VsZWN0SGFuZGxlLnZhbHVlfSk7CiAgICB9CgogICAgdmFyIGluQXJyYXkgPSBmdW5jdGlvbih2YWwsIGFycmF5KSB7CiAgICAgIHJldHVybiAkLmluQXJyYXkodmFsLCAkLm1ha2VBcnJheShhcnJheSkpID4gLTE7CiAgICB9OwoKICAgIC8vIHNlYXJjaCB0aGUgaS10aCBjb2x1bW4KICAgIHZhciBzZWFyY2hDb2x1bW4gPSBmdW5jdGlvbihpLCB2YWx1ZSkgewogICAgICB2YXIgcmVnZXggPSBmYWxzZSwgY2kgPSB0cnVlOwogICAgICBpZiAob3B0aW9ucy5zZWFyY2gpIHsKICAgICAgICByZWdleCA9IG9wdGlvbnMuc2VhcmNoLnJlZ2V4LAogICAgICAgIGNpID0gb3B0aW9ucy5zZWFyY2guY2FzZUluc2Vuc2l0aXZlICE9PSBmYWxzZTsKICAgICAgfQogICAgICAvLyBuZWVkIHRvIHRyYW5zcG9zZSB0aGUgY29sdW1uIGluZGV4IHdoZW4gY29sUmVvcmRlciBpcyBlbmFibGVkCiAgICAgIGlmICh0YWJsZS5jb2xSZW9yZGVyKSBpID0gdGFibGUuY29sUmVvcmRlci50cmFuc3Bvc2UoaSk7CiAgICAgIHJldHVybiB0YWJsZS5jb2x1bW4oaSkuc2VhcmNoKHZhbHVlLCByZWdleCwgIXJlZ2V4LCBjaSk7CiAgICB9OwoKICAgIGlmIChkYXRhLmZpbHRlciAhPT0gJ25vbmUnKSB7CiAgICAgIGlmICghZGF0YS5oYXNPd25Qcm9wZXJ0eSgnZmlsdGVyU2V0dGluZ3MnKSkgZGF0YS5maWx0ZXJTZXR0aW5ncyA9IHt9OwoKICAgICAgZmlsdGVyUm93LmVhY2goZnVuY3Rpb24oaSwgdGQpIHsKCiAgICAgICAgdmFyICR0ZCA9ICQodGQpLCB0eXBlID0gJHRkLmRhdGEoJ3R5cGUnKSwgZmlsdGVyOwogICAgICAgIHZhciAkaW5wdXQgPSAkdGQuY2hpbGRyZW4oJ2RpdicpLmZpcnN0KCkuY2hpbGRyZW4oJ2lucHV0Jyk7CiAgICAgICAgdmFyIGRpc2FibGVkID0gJGlucHV0LnByb3AoJ2Rpc2FibGVkJyk7CiAgICAgICAgdmFyIHNlYXJjaGFibGUgPSB0YWJsZS5zZXR0aW5ncygpWzBdLmFvQ29sdW1uc1tpXS5iU2VhcmNoYWJsZTsKICAgICAgICAkaW5wdXQucHJvcCgnZGlzYWJsZWQnLCAhc2VhcmNoYWJsZSB8fCBkaXNhYmxlZCk7CiAgICAgICAgJGlucHV0LmRhdGEoJ3NlYXJjaGFibGUnLCBzZWFyY2hhYmxlKTsgLy8gZm9yIHVwZGF0aW5nIGxhdGVyCiAgICAgICAgJGlucHV0Lm9uKCdpbnB1dCBibHVyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAkaW5wdXQubmV4dCgnc3BhbicpLnRvZ2dsZShCb29sZWFuKCRpbnB1dC52YWwoKSkpOwogICAgICAgIH0pOwogICAgICAgIC8vIEJvb3RzdHJhcCBzZXRzIHBvaW50ZXItZXZlbnRzIHRvIG5vbmUgYW5kIHdlIHdvbid0IGJlIGFibGUgdG8gY2xpY2sKICAgICAgICAvLyB0aGUgY2xlYXIgYnV0dG9uCiAgICAgICAgJGlucHV0Lm5leHQoJ3NwYW4nKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywgJ2F1dG8nKS5oaWRlKCkuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAkKHRoaXMpLmhpZGUoKS5wcmV2KCdpbnB1dCcpLnZhbCgnJykudHJpZ2dlcignaW5wdXQnKS5mb2N1cygpOwogICAgICAgIH0pOwogICAgICAgIHZhciBzZWFyY2hDb2w7ICAvLyBzZWFyY2ggc3RyaW5nIGZvciB0aGlzIGNvbHVtbgogICAgICAgIGlmIChzZWFyY2hDb2xzICYmIHNlYXJjaENvbHNbaV0pIHsKICAgICAgICAgIHNlYXJjaENvbCA9IHNlYXJjaENvbHNbaV07CiAgICAgICAgICAkaW5wdXQudmFsKHNlYXJjaENvbCkudHJpZ2dlcignaW5wdXQnKTsKICAgICAgICB9CiAgICAgICAgdmFyICR4ID0gJHRkLmNoaWxkcmVuKCdkaXYnKS5sYXN0KCk7CgogICAgICAgIC8vIHJlbW92ZSB0aGUgb3ZlcmZsb3c6IGhpZGRlbiBhdHRyaWJ1dGUgb2YgdGhlIHNjcm9sbEhlYWQKICAgICAgICAvLyAob3RoZXJ3aXNlIHRoZSBzY3JvbGxpbmcgdGFibGUgYm9keSBvYnNjdXJlcyB0aGUgZmlsdGVycykKICAgICAgICAvLyBUaGUgd29ya2Fyb3VuZCBhbmQgdGhlIGRpc2N1c3Npb24gZnJvbQogICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yc3R1ZGlvL0RUL2lzc3Vlcy81NTQjaXNzdWVjb21tZW50LTUxODAwNzM0NwogICAgICAgIC8vIE90aGVyd2lzZSB0aGUgZmlsdGVyIHNlbGVjdGlvbiB3aWxsIG5vdCBiZSBhbmNob3JlZCB0byB0aGUgdmFsdWVzCiAgICAgICAgLy8gd2hlbiB0aGUgY29sdW1ucyBudW1iZXIgaXMgbWFueSBhbmQgc2Nyb2xsWCBpcyBlbmFibGVkLgogICAgICAgIHZhciBzY3JvbGxIZWFkID0gJChlbCkuZmluZCgnLmRhdGFUYWJsZXNfc2Nyb2xsSGVhZCwuZGF0YVRhYmxlc19zY3JvbGxGb290Jyk7CiAgICAgICAgdmFyIGNzc092ZXJmbG93SGVhZCA9IHNjcm9sbEhlYWQuY3NzKCdvdmVyZmxvdycpOwogICAgICAgIHZhciBzY3JvbGxCb2R5ID0gJChlbCkuZmluZCgnLmRhdGFUYWJsZXNfc2Nyb2xsQm9keScpOwogICAgICAgIHZhciBjc3NPdmVyZmxvd0JvZHkgPSBzY3JvbGxCb2R5LmNzcygnb3ZlcmZsb3cnKTsKICAgICAgICB2YXIgc2Nyb2xsVGFibGUgPSAkKGVsKS5maW5kKCcuZGF0YVRhYmxlc19zY3JvbGwnKTsKICAgICAgICB2YXIgY3NzT3ZlcmZsb3dUYWJsZSA9IHNjcm9sbFRhYmxlLmNzcygnb3ZlcmZsb3cnKTsKICAgICAgICBpZiAoY3NzT3ZlcmZsb3dIZWFkID09PSAnaGlkZGVuJykgewogICAgICAgICAgJHgub24oJ3Nob3cgaGlkZScsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ3Nob3cnKSB7CiAgICAgICAgICAgICAgc2Nyb2xsSGVhZC5jc3MoJ292ZXJmbG93JywgJ3Zpc2libGUnKTsKICAgICAgICAgICAgICBzY3JvbGxCb2R5LmNzcygnb3ZlcmZsb3cnLCAndmlzaWJsZScpOwogICAgICAgICAgICAgIHNjcm9sbFRhYmxlLmNzcygnb3ZlcmZsb3cteCcsICdzY3JvbGwnKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBzY3JvbGxIZWFkLmNzcygnb3ZlcmZsb3cnLCBjc3NPdmVyZmxvd0hlYWQpOwogICAgICAgICAgICAgIHNjcm9sbEJvZHkuY3NzKCdvdmVyZmxvdycsIGNzc092ZXJmbG93Qm9keSk7CiAgICAgICAgICAgICAgc2Nyb2xsVGFibGUuY3NzKCdvdmVyZmxvdy14JywgY3NzT3ZlcmZsb3dUYWJsZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgICAgJHguY3NzKCd6LWluZGV4JywgMjUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGluQXJyYXkodHlwZSwgWydmYWN0b3InLCAnbG9naWNhbCddKSkgewogICAgICAgICAgJGlucHV0Lm9uKHsKICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICRpbnB1dC5wYXJlbnQoKS5oaWRlKCk7ICR4LnNob3coKS50cmlnZ2VyKCdzaG93Jyk7IGZpbHRlclswXS5zZWxlY3RpemUuZm9jdXMoKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHZhciB2MSA9IEpTT04uc3RyaW5naWZ5KGZpbHRlclswXS5zZWxlY3RpemUuZ2V0VmFsdWUoKSksIHYyID0gJGlucHV0LnZhbCgpOwogICAgICAgICAgICAgIGlmICh2MSA9PT0gJ1tdJykgdjEgPSAnJzsKICAgICAgICAgICAgICBpZiAodjEgIT09IHYyKSBmaWx0ZXJbMF0uc2VsZWN0aXplLnNldFZhbHVlKHYyID09PSAnJyA/IFtdIDogSlNPTi5wYXJzZSh2MikpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIHZhciAkaW5wdXQyID0gJHguY2hpbGRyZW4oJ3NlbGVjdCcpOwogICAgICAgICAgZmlsdGVyID0gJGlucHV0Mi5zZWxlY3RpemUoJC5leHRlbmQoewogICAgICAgICAgICBvcHRpb25zOiAkaW5wdXQyLmRhdGEoJ29wdGlvbnMnKS5tYXAoZnVuY3Rpb24odiwgaSkgewogICAgICAgICAgICAgIHJldHVybiAoe3RleHQ6IHYsIHZhbHVlOiB2fSk7CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBwbHVnaW5zOiBbJ3JlbW92ZV9idXR0b24nXSwKICAgICAgICAgICAgaGlkZVNlbGVjdGVkOiB0cnVlLAogICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24odmFsdWUpIHsKICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHZhbHVlID0gW107IC8vIGNvbXBhdGliaWxpdHkgd2l0aCBqUXVlcnkgMy4wCiAgICAgICAgICAgICAgJGlucHV0LnZhbCh2YWx1ZS5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiAnJyk7CiAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCkgJGlucHV0LnRyaWdnZXIoJ2lucHV0Jyk7CiAgICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3RpdGxlJywgJGlucHV0LnZhbCgpKTsKICAgICAgICAgICAgICBpZiAoc2VydmVyKSB7CiAgICAgICAgICAgICAgICBzZWFyY2hDb2x1bW4oaSwgdmFsdWUubGVuZ3RoID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogJycpLmRyYXcoKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy8gdHVybiBvZmYgZmlsdGVyIGlmIG5vdGhpbmcgc2VsZWN0ZWQKICAgICAgICAgICAgICAkdGQuZGF0YSgnZmlsdGVyJywgdmFsdWUubGVuZ3RoID4gMCk7CiAgICAgICAgICAgICAgdGFibGUuZHJhdygpOyAgLy8gcmVkcmF3IHRhYmxlLCBhbmQgZmlsdGVycyB3aWxsIGJlIGFwcGxpZWQKICAgICAgICAgICAgfQogICAgICAgICAgfSwgZGF0YS5maWx0ZXJTZXR0aW5ncy5zZWxlY3QpKTsKICAgICAgICAgIGZpbHRlclswXS5zZWxlY3RpemUub24oJ2JsdXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgJHguaGlkZSgpLnRyaWdnZXIoJ2hpZGUnKTsgJGlucHV0LnBhcmVudCgpLnNob3coKTsgJGlucHV0LnRyaWdnZXIoJ2JsdXInKTsKICAgICAgICAgIH0pOwogICAgICAgICAgZmlsdGVyLm5leHQoJ2RpdicpLmNzcygnbWFyZ2luLWJvdHRvbScsICdhdXRvJyk7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnY2hhcmFjdGVyJykgewogICAgICAgICAgdmFyIGZ1biA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzZWFyY2hDb2x1bW4oaSwgJGlucHV0LnZhbCgpKS5kcmF3KCk7CiAgICAgICAgICB9OwogICAgICAgICAgLy8gdGhyb3R0bGUgc2VhcmNoaW5nIGZvciBzZXJ2ZXItc2lkZSBwcm9jZXNzaW5nCiAgICAgICAgICB2YXIgdGhyb3R0bGVkRnVuID0gJC5mbi5kYXRhVGFibGUudXRpbC50aHJvdHRsZShmdW4sIG9wdGlvbnMuc2VhcmNoRGVsYXkpOwogICAgICAgICAgJGlucHV0Lm9uKCdpbnB1dCcsIGZ1bmN0aW9uKGUsIGltbWVkaWF0ZSkgewogICAgICAgICAgICAvLyBhbHdheXMgYnlwYXNzIHRocm90dGxpbmcgd2hlbiBpbW1lZGlhdGUgPSB0cnVlICh2aWEgdGhlIHVwZGF0ZVNlYXJjaCBtZXRob2QpCiAgICAgICAgICAgIChpbW1lZGlhdGUgfHwgIXNlcnZlcikgPyBmdW4oKSA6IHRocm90dGxlZEZ1bigpOwogICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIGlmIChpbkFycmF5KHR5cGUsIFsnbnVtYmVyJywgJ2ludGVnZXInLCAnZGF0ZScsICd0aW1lJ10pKSB7CiAgICAgICAgICB2YXIgJHgwID0gJHg7CiAgICAgICAgICAkeCA9ICR4MC5jaGlsZHJlbignZGl2JykuZmlyc3QoKTsKICAgICAgICAgICR4MC5jc3MoewogICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6ICcjZmZmJywKICAgICAgICAgICAgJ2JvcmRlcic6ICcxcHggI2RkZCBzb2xpZCcsCiAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzRweCcsCiAgICAgICAgICAgICdwYWRkaW5nJzogZGF0YS52ZXJ0aWNhbCA/ICczNXB4IDIwcHgnOiAnMjBweCAyMHB4IDEwcHggMjBweCcKICAgICAgICAgIH0pOwogICAgICAgICAgdmFyICRzcGFucyA9ICR4MC5jaGlsZHJlbignc3BhbicpLmNzcyh7CiAgICAgICAgICAgICdtYXJnaW4tdG9wJzogZGF0YS52ZXJ0aWNhbCA/ICcwJyA6ICcxMHB4JywKICAgICAgICAgICAgJ3doaXRlLXNwYWNlJzogJ25vd3JhcCcKICAgICAgICAgIH0pOwogICAgICAgICAgdmFyICRzcGFuMSA9ICRzcGFucy5maXJzdCgpLCAkc3BhbjIgPSAkc3BhbnMubGFzdCgpOwogICAgICAgICAgdmFyIHIxID0gKyR4LmRhdGEoJ21pbicpLCByMiA9ICskeC5kYXRhKCdtYXgnKTsKICAgICAgICAgIC8vIHdoZW4gdGhlIG51bWJlcnMgYXJlIHRvbyBzbWFsbCBvciBoYXZlIG1hbnkgZGVjaW1hbCBwbGFjZXMsIHRoZQogICAgICAgICAgLy8gc2xpZGVyIG1heSBoYXZlIG51bWVyaWMgcHJlY2lzaW9uIHByb2JsZW1zICgjMTUwKQogICAgICAgICAgdmFyIHNjYWxlID0gTWF0aC5wb3coMTAsIE1hdGgubWF4KDAsICskeC5kYXRhKCdzY2FsZScpIHx8IDApKTsKICAgICAgICAgIHIxID0gTWF0aC5yb3VuZChyMSAqIHNjYWxlKTsgcjIgPSBNYXRoLnJvdW5kKHIyICogc2NhbGUpOwogICAgICAgICAgdmFyIHNjYWxlQmFjayA9IGZ1bmN0aW9uKHgsIHNjYWxlKSB7CiAgICAgICAgICAgIGlmIChzY2FsZSA9PT0gMSkgcmV0dXJuIHg7CiAgICAgICAgICAgIHZhciBkID0gTWF0aC5yb3VuZChNYXRoLmxvZyhzY2FsZSkgLyBNYXRoLmxvZygxMCkpOwogICAgICAgICAgICAvLyB0byBhdm9pZCBwcm9ibGVtcyBsaWtlIDMuNDIzLzEwMCAtPiAwLjAzNDIzMDAwMDAwMDAwMDAwMwogICAgICAgICAgICByZXR1cm4gKHggLyBzY2FsZSkudG9GaXhlZChkKTsKICAgICAgICAgIH07CiAgICAgICAgICB2YXIgc2xpZGVyX21pbiA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gZmlsdGVyLm5vVWlTbGlkZXIoJ29wdGlvbnMnKS5yYW5nZS5taW47CiAgICAgICAgICB9OwogICAgICAgICAgdmFyIHNsaWRlcl9tYXggPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIGZpbHRlci5ub1VpU2xpZGVyKCdvcHRpb25zJykucmFuZ2UubWF4OwogICAgICAgICAgfTsKICAgICAgICAgICRpbnB1dC5vbih7CiAgICAgICAgICAgIGZvY3VzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAkeDAuc2hvdygpLnRyaWdnZXIoJ3Nob3cnKTsKICAgICAgICAgICAgICAvLyBmaXJzdCwgbWFrZSBzdXJlIHRoZSBzbGlkZXIgZGl2IGxlYXZlcyBhdCBsZWFzdCAyMHB4IGJldHdlZW4KICAgICAgICAgICAgICAvLyB0aGUgdHdvIChzbGlkZXIgdmFsdWUpIHNwYW4ncwogICAgICAgICAgICAgICR4MC53aWR0aChNYXRoLm1heCgxNjAsICRzcGFuMS5vdXRlcldpZHRoKCkgKyAkc3BhbjIub3V0ZXJXaWR0aCgpICsgMjApKTsKICAgICAgICAgICAgICAvLyB0aGVuLCBpZiB0aGUgaW5wdXQgaXMgcmVhbGx5IHdpZGUgb3Igc2xpZGVyIGlzIHZlcnRpY2FsLAogICAgICAgICAgICAgIC8vIG1ha2UgdGhlIHNsaWRlciB0aGUgc2FtZSB3aWR0aCBhcyB0aGUgaW5wdXQKICAgICAgICAgICAgICBpZiAoJHgwLm91dGVyV2lkdGgoKSA8ICRpbnB1dC5vdXRlcldpZHRoKCkgfHwgZGF0YS52ZXJ0aWNhbCkgewogICAgICAgICAgICAgICAgJHgwLm91dGVyV2lkdGgoJGlucHV0Lm91dGVyV2lkdGgoKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgc2xpZGVyIGRpdiBkb2VzIG5vdCByZWFjaCBiZXlvbmQgdGhlIHJpZ2h0IG1hcmdpbgogICAgICAgICAgICAgIGlmICgkKHdpbmRvdykud2lkdGgoKSA8ICR4MC5vZmZzZXQoKS5sZWZ0ICsgJHgwLndpZHRoKCkpIHsKICAgICAgICAgICAgICAgICR4MC5vZmZzZXQoewogICAgICAgICAgICAgICAgICAnbGVmdCc6ICRpbnB1dC5vZmZzZXQoKS5sZWZ0ICsgJGlucHV0Lm91dGVyV2lkdGgoKSAtICR4MC5vdXRlcldpZHRoKCkKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgYmx1cjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgJHgwLmhpZGUoKS50cmlnZ2VyKCdoaWRlJyk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICBpZiAoJGlucHV0LnZhbCgpID09PSAnJykgZmlsdGVyLnZhbChbc2xpZGVyX21pbigpLCBzbGlkZXJfbWF4KCldKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgY2hhbmdlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB2YXIgdiA9ICRpbnB1dC52YWwoKS5yZXBsYWNlKC9ccy9nLCAnJyk7CiAgICAgICAgICAgICAgaWYgKHYgPT09ICcnKSByZXR1cm47CiAgICAgICAgICAgICAgdiA9IHYuc3BsaXQoJy4uLicpOwogICAgICAgICAgICAgIGlmICh2Lmxlbmd0aCAhPT0gMikgewogICAgICAgICAgICAgICAgJGlucHV0LnBhcmVudCgpLmFkZENsYXNzKCdoYXMtZXJyb3InKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKHZbMF0gPT09ICcnKSB2WzBdID0gc2xpZGVyX21pbigpOwogICAgICAgICAgICAgIGlmICh2WzFdID09PSAnJykgdlsxXSA9IHNsaWRlcl9tYXgoKTsKICAgICAgICAgICAgICAkaW5wdXQucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ2hhcy1lcnJvcicpOwogICAgICAgICAgICAgIC8vIHRyZWF0IGRhdGUgYXMgVVRDIHRpbWUgYXQgbWlkbmlnaHQKICAgICAgICAgICAgICB2YXIgc3RyVGltZSA9IGZ1bmN0aW9uKHgpIHsKICAgICAgICAgICAgICAgIHZhciBzID0gdHlwZSA9PT0gJ2RhdGUnID8gJ1QwMDowMDowMFonIDogJyc7CiAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyBEYXRlKHggKyBzKS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICAvLyBhZGQgMTAgbWludXRlcyB0byBkYXRlIHNpbmNlIGl0IGRvZXMgbm90IGh1cnQgdGhlIGRhdGUsIGFuZAogICAgICAgICAgICAgICAgLy8gaXQgaGVscHMgYXZvaWQgdGhlIHRyaWNreSBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIHByb2JsZW1zLAogICAgICAgICAgICAgICAgLy8gZS5nLiBzb21ldGltZXMgdGhlIGRhdGUgbWF5IGJlIGEgZmV3IG1pbGxpc2Vjb25kcyBlYXJsaWVyCiAgICAgICAgICAgICAgICAvLyB0aGFuIHRoZSBtaWRuaWdodCBkdWUgdG8gcHJlY2lzaW9uIHByb2JsZW1zIGluIG5vVWlTbGlkZXIKICAgICAgICAgICAgICAgIHJldHVybiB0eXBlID09PSAnZGF0ZScgPyB0ICsgMzYwMDAwMCA6IHQ7CiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBpZiAoaW5BcnJheSh0eXBlLCBbJ2RhdGUnLCAndGltZSddKSkgewogICAgICAgICAgICAgICAgdlswXSA9IHN0clRpbWUodlswXSk7CiAgICAgICAgICAgICAgICB2WzFdID0gc3RyVGltZSh2WzFdKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKHZbMF0gIT0gc2xpZGVyX21pbigpKSB2WzBdICo9IHNjYWxlOwogICAgICAgICAgICAgIGlmICh2WzFdICE9IHNsaWRlcl9tYXgoKSkgdlsxXSAqPSBzY2FsZTsKICAgICAgICAgICAgICBmaWx0ZXIudmFsKHYpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIHZhciBmb3JtYXREYXRlID0gZnVuY3Rpb24oZCkgewogICAgICAgICAgICBkID0gc2NhbGVCYWNrKGQsIHNjYWxlKTsKICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdudW1iZXInKSByZXR1cm4gZDsKICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdpbnRlZ2VyJykgcmV0dXJuIHBhcnNlSW50KGQpOwogICAgICAgICAgICB2YXIgeCA9IG5ldyBEYXRlKCtkKTsKICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdkYXRlJykgewogICAgICAgICAgICAgIHZhciBwYWQwID0gZnVuY3Rpb24oeCkgewogICAgICAgICAgICAgICAgcmV0dXJuICgnMCcgKyB4KS5zdWJzdHIoLTIsIDIpOwogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgcmV0dXJuIHguZ2V0VVRDRnVsbFllYXIoKSArICctJyArIHBhZDAoMSArIHguZ2V0VVRDTW9udGgoKSkKICAgICAgICAgICAgICAgICAgICAgICsgJy0nICsgcGFkMCh4LmdldFVUQ0RhdGUoKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIHgudG9JU09TdHJpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfTsKICAgICAgICAgIHZhciBvcHRzID0gdHlwZSA9PT0gJ2RhdGUnID8geyBzdGVwOiA2MCAqIDYwICogMTAwMCB9IDoKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9PT0gJ2ludGVnZXInID8geyBzdGVwOiAxIH0gOiB7fTsKCiAgICAgICAgICBvcHRzLm9yaWVudGF0aW9uID0gZGF0YS52ZXJ0aWNhbCA/ICd2ZXJ0aWNhbCc6ICdob3Jpem9udGFsJzsKICAgICAgICAgIG9wdHMuZGlyZWN0aW9uID0gZGF0YS52ZXJ0aWNhbCA/ICdydGwnOiAnbHRyJzsKCiAgICAgICAgICBmaWx0ZXIgPSAkeC5ub1VpU2xpZGVyKCQuZXh0ZW5kKHsKICAgICAgICAgICAgc3RhcnQ6IFtyMSwgcjJdLAogICAgICAgICAgICByYW5nZToge21pbjogcjEsIG1heDogcjJ9LAogICAgICAgICAgICBjb25uZWN0OiB0cnVlCiAgICAgICAgICB9LCBvcHRzLCBkYXRhLmZpbHRlclNldHRpbmdzLnNsaWRlcikpOwogICAgICAgICAgaWYgKHNjYWxlID4gMSkgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdDEgPSByMSwgdDIgPSByMjsKICAgICAgICAgICAgdmFyIHZhbCA9IGZpbHRlci52YWwoKTsKICAgICAgICAgICAgd2hpbGUgKHZhbFswXSA+IHIxIHx8IHZhbFsxXSA8IHIyKSB7CiAgICAgICAgICAgICAgaWYgKHZhbFswXSA+IHIxKSB7CiAgICAgICAgICAgICAgICB0MSAtPSB2YWxbMF0gLSByMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKHZhbFsxXSA8IHIyKSB7CiAgICAgICAgICAgICAgICB0MiArPSByMiAtIHZhbFsxXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZmlsdGVyID0gJHgubm9VaVNsaWRlcigkLmV4dGVuZCh7CiAgICAgICAgICAgICAgICBzdGFydDogW3QxLCB0Ml0sCiAgICAgICAgICAgICAgICByYW5nZToge21pbjogdDEsIG1heDogdDJ9LAogICAgICAgICAgICAgICAgY29ubmVjdDogdHJ1ZQogICAgICAgICAgICAgIH0sIG9wdHMsIGRhdGEuZmlsdGVyU2V0dGluZ3Muc2xpZGVyKSwgdHJ1ZSk7CiAgICAgICAgICAgICAgdmFsID0gZmlsdGVyLnZhbCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHIxICA9IHQxOyByMiA9IHQyOwogICAgICAgICAgfSkoKTsKICAgICAgICAgIC8vIGZvcm1hdCB3aXRoIGFjdGl2ZSBjb2x1bW4gcmVuZGVyZXIsIGlmIGRlZmluZWQKICAgICAgICAgIHZhciBjb2xEZWYgPSBkYXRhLm9wdGlvbnMuY29sdW1uRGVmcy5maW5kKGZ1bmN0aW9uKGRlZikgewogICAgICAgICAgICByZXR1cm4gKGRlZi50YXJnZXRzID09PSBpIHx8IGluQXJyYXkoaSwgZGVmLnRhcmdldHMpKSAmJiAncmVuZGVyJyBpbiBkZWY7CiAgICAgICAgICB9KTsKICAgICAgICAgIHZhciB1cGRhdGVTbGlkZXJUZXh0ID0gZnVuY3Rpb24odjEsIHYyKSB7CiAgICAgICAgICAgIC8vIHdlIG9ubHkga25vdyBob3cgdG8gdXNlIGZ1bmN0aW9uIHJlbmRlcmVycwogICAgICAgICAgICBpZiAoY29sRGVmICYmIHR5cGVvZiBjb2xEZWYucmVuZGVyID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgdmFyIHJlc3RvcmUgPSBmdW5jdGlvbih2KSB7CiAgICAgICAgICAgICAgICB2ID0gc2NhbGVCYWNrKHYsIHNjYWxlKTsKICAgICAgICAgICAgICAgIHJldHVybiBpbkFycmF5KHR5cGUsIFsnZGF0ZScsICd0aW1lJ10pID8gbmV3IERhdGUoK3YpIDogdjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgJHNwYW4xLnRleHQoY29sRGVmLnJlbmRlcihyZXN0b3JlKHYxKSwgJ2Rpc3BsYXknKSk7CiAgICAgICAgICAgICAgJHNwYW4yLnRleHQoY29sRGVmLnJlbmRlcihyZXN0b3JlKHYyKSwgJ2Rpc3BsYXknKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJHNwYW4xLnRleHQoZm9ybWF0RGF0ZSh2MSkpOwogICAgICAgICAgICAgICRzcGFuMi50ZXh0KGZvcm1hdERhdGUodjIpKTsKICAgICAgICAgICAgfQogICAgICAgICAgfTsKICAgICAgICAgIHVwZGF0ZVNsaWRlclRleHQocjEsIHIyKTsKICAgICAgICAgIHZhciB1cGRhdGVTbGlkZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB2YWwgPSBmaWx0ZXIudmFsKCk7CiAgICAgICAgICAgIC8vIHR1cm4gb2ZmIGZpbHRlciBpZiBpbiBmdWxsIHJhbmdlCiAgICAgICAgICAgICR0ZC5kYXRhKCdmaWx0ZXInLCB2YWxbMF0gPiBzbGlkZXJfbWluKCkgfHwgdmFsWzFdIDwgc2xpZGVyX21heCgpKTsKICAgICAgICAgICAgdmFyIHYxID0gZm9ybWF0RGF0ZSh2YWxbMF0pLCB2MiA9IGZvcm1hdERhdGUodmFsWzFdKSwgaXZhbDsKICAgICAgICAgICAgaWYgKCR0ZC5kYXRhKCdmaWx0ZXInKSkgewogICAgICAgICAgICAgIGl2YWwgPSB2MSArICcgLi4uICcgKyB2MjsKICAgICAgICAgICAgICAkaW5wdXQuYXR0cigndGl0bGUnLCBpdmFsKS52YWwoaXZhbCkudHJpZ2dlcignaW5wdXQnKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAkaW5wdXQuYXR0cigndGl0bGUnLCAnJykudmFsKCcnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB1cGRhdGVTbGlkZXJUZXh0KHZhbFswXSwgdmFsWzFdKTsKICAgICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ3NsaWRlJykgcmV0dXJuOyAgLy8gbm8gc2VhcmNoaW5nIHdoZW4gc2xpZGluZyBvbmx5CiAgICAgICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgICAgICBzZWFyY2hDb2x1bW4oaSwgJHRkLmRhdGEoJ2ZpbHRlcicpID8gaXZhbCA6ICcnKS5kcmF3KCk7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRhYmxlLmRyYXcoKTsKICAgICAgICAgIH07CiAgICAgICAgICBmaWx0ZXIub24oewogICAgICAgICAgICBzZXQ6IHVwZGF0ZVNsaWRlciwKICAgICAgICAgICAgc2xpZGU6IHVwZGF0ZVNsaWRlcgogICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAvLyBzZXJ2ZXItc2lkZSBwcm9jZXNzaW5nIHdpbGwgYmUgaGFuZGxlZCBieSBSIChvciB3aGF0ZXZlciBzZXJ2ZXIKICAgICAgICAvLyBsYW5ndWFnZSB5b3UgdXNlKTsgdGhlIGZvbGxvd2luZyBjb2RlIGlzIG9ubHkgbmVlZGVkIGZvciBjbGllbnQtc2lkZQogICAgICAgIC8vIHByb2Nlc3NpbmcKICAgICAgICBpZiAoc2VydmVyKSB7CiAgICAgICAgICAvLyBpZiBhIHNlYXJjaCBzdHJpbmcgaGFzIGJlZW4gcHJlLXNldCwgc2VhcmNoIG5vdwogICAgICAgICAgaWYgKHNlYXJjaENvbCkgJGlucHV0LnRyaWdnZXIoJ2lucHV0JykudHJpZ2dlcignY2hhbmdlJyk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgY3VzdG9tRmlsdGVyID0gZnVuY3Rpb24oc2V0dGluZ3MsIGRhdGEsIGRhdGFJbmRleCkgewogICAgICAgICAgLy8gdGhlcmUgaXMgbm8gd2F5IHRvIGF0dGFjaCBhIHNlYXJjaCBmdW5jdGlvbiB0byBhIHNwZWNpZmljIHRhYmxlLAogICAgICAgICAgLy8gYW5kIHdlIG5lZWQgdG8gbWFrZSBzdXJlIGEgZ2xvYmFsIHNlYXJjaCBmdW5jdGlvbiBpcyBub3QgYXBwbGllZCB0bwogICAgICAgICAgLy8gYWxsIHRhYmxlcyAoaS5lLiBhIHJhbmdlIGZpbHRlciBpbiBhIHByZXZpb3VzIHRhYmxlIHNob3VsZCBub3QgYmUKICAgICAgICAgIC8vIGFwcGxpZWQgdG8gdGhlIGN1cnJlbnQgdGFibGUpOyB3ZSB1c2UgdGhlIHNldHRpbmdzIG9iamVjdCB0bwogICAgICAgICAgLy8gZGV0ZXJtaW5lIGlmIHdlIHdhbnQgdG8gcGVyZm9ybSBzZWFyY2hpbmcgb24gdGhlIGN1cnJlbnQgdGFibGUsCiAgICAgICAgICAvLyBzaW5jZSBzZXR0aW5ncy5zVGFibGVJZCB3aWxsIGJlIGRpZmZlcmVudCB0byBkaWZmZXJlbnQgdGFibGVzCiAgICAgICAgICBpZiAodGFibGUuc2V0dGluZ3MoKVswXSAhPT0gc2V0dGluZ3MpIHJldHVybiB0cnVlOwogICAgICAgICAgLy8gbm8gZmlsdGVyIG9uIHRoaXMgY29sdW1uIG9yIG5vIG5lZWQgdG8gZmlsdGVyIHRoaXMgY29sdW1uCiAgICAgICAgICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ3VuZGVmaW5lZCcgfHwgISR0ZC5kYXRhKCdmaWx0ZXInKSkgcmV0dXJuIHRydWU7CgogICAgICAgICAgdmFyIHIgPSBmaWx0ZXIudmFsKCksIHYsIHIwLCByMTsKICAgICAgICAgIHZhciBpX2RhdGEgPSBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgIGlmICghY29sUmVvcmRlckVuYWJsZWQoKSkgcmV0dXJuIGk7CiAgICAgICAgICAgIHZhciBvcmRlciA9IHRhYmxlLmNvbFJlb3JkZXIub3JkZXIoKSwgazsKICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IG9yZGVyLmxlbmd0aDsgKytrKSBpZiAob3JkZXJba10gPT09IGkpIHJldHVybiBrOwogICAgICAgICAgICByZXR1cm4gaTsgLy8gaW4gdGhlb3J5IGl0IHdpbGwgbmV2ZXIgYmUgaGVyZS4uLgogICAgICAgICAgfQogICAgICAgICAgdiA9IGRhdGFbaV9kYXRhKGkpXTsKICAgICAgICAgIGlmICh0eXBlID09PSAnbnVtYmVyJyB8fCB0eXBlID09PSAnaW50ZWdlcicpIHsKICAgICAgICAgICAgdiA9IHBhcnNlRmxvYXQodik7CiAgICAgICAgICAgIC8vIGhvdyB0byBoYW5kbGUgTmFOPyBjdXJyZW50bHkgZXhjbHVkZSB0aGVzZSByb3dzCiAgICAgICAgICAgIGlmIChpc05hTih2KSkgcmV0dXJuKGZhbHNlKTsKICAgICAgICAgICAgcjAgPSBwYXJzZUZsb2F0KHNjYWxlQmFjayhyWzBdLCBzY2FsZSkpCiAgICAgICAgICAgIHIxID0gcGFyc2VGbG9hdChzY2FsZUJhY2soclsxXSwgc2NhbGUpKTsKICAgICAgICAgICAgaWYgKHYgPj0gcjAgJiYgdiA8PSByMSkgcmV0dXJuIHRydWU7CiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlJyB8fCB0eXBlID09PSAndGltZScpIHsKICAgICAgICAgICAgdiA9IG5ldyBEYXRlKHYpOwogICAgICAgICAgICByMCA9IG5ldyBEYXRlKHJbMF0gLyBzY2FsZSk7IHIxID0gbmV3IERhdGUoclsxXSAvIHNjYWxlKTsKICAgICAgICAgICAgaWYgKHYgPj0gcjAgJiYgdiA8PSByMSkgcmV0dXJuIHRydWU7CiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdmYWN0b3InKSB7CiAgICAgICAgICAgIGlmIChyLmxlbmd0aCA9PT0gMCB8fCBpbkFycmF5KHYsIHIpKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2xvZ2ljYWwnKSB7CiAgICAgICAgICAgIGlmIChyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIGlmIChpbkFycmF5KHYgPT09ICcnID8gJ25hJyA6IHYsIHIpKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9OwoKICAgICAgICAkLmZuLmRhdGFUYWJsZS5leHQuc2VhcmNoLnB1c2goY3VzdG9tRmlsdGVyKTsKCiAgICAgICAgLy8gc2VhcmNoIGZvciB0aGUgcHJlc2V0IHNlYXJjaCBzdHJpbmdzIGlmIGl0IGlzIG5vbi1lbXB0eQogICAgICAgIGlmIChzZWFyY2hDb2wpICRpbnB1dC50cmlnZ2VyKCdpbnB1dCcpLnRyaWdnZXIoJ2NoYW5nZScpOwoKICAgICAgfSk7CgogICAgfQoKICAgIC8vIGhpZ2hsaWdodCBzZWFyY2gga2V5d29yZHMKICAgIHZhciBoaWdobGlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIGJvZHkgPSAkKHRhYmxlLnRhYmxlKCkuYm9keSgpKTsKICAgICAgLy8gcmVtb3ZpbmcgdGhlIG9sZCBoaWdobGlnaHRpbmcgZmlyc3QKICAgICAgYm9keS51bmhpZ2hsaWdodCgpOwoKICAgICAgLy8gZG9uJ3QgaGlnaGxpZ2h0IHRoZSAibm90IGZvdW5kIiByb3csIHNvIHdlIGdldCB0aGUgcm93cyB1c2luZyB0aGUgYXBpCiAgICAgIGlmICh0YWJsZS5yb3dzKHsgZmlsdGVyOiAnYXBwbGllZCcgfSkuZGF0YSgpLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwogICAgICAvLyBoaWdobGlnaHQgZ2xvYmFsIHNlYXJjaCBrZXl3b3JkcwogICAgICBib2R5LmhpZ2hsaWdodCgkLnRyaW0odGFibGUuc2VhcmNoKCkpLnNwbGl0KC9ccysvKSk7CiAgICAgIC8vIHRoZW4gaGlnaGxpZ2h0IGtleXdvcmRzIGZyb20gaW5kaXZpZHVhbCBjb2x1bW4gZmlsdGVycwogICAgICBpZiAoZmlsdGVyUm93KSBmaWx0ZXJSb3cuZWFjaChmdW5jdGlvbihpLCB0ZCkgewogICAgICAgIHZhciAkdGQgPSAkKHRkKSwgdHlwZSA9ICR0ZC5kYXRhKCd0eXBlJyk7CiAgICAgICAgaWYgKHR5cGUgIT09ICdjaGFyYWN0ZXInKSByZXR1cm47CiAgICAgICAgdmFyICRpbnB1dCA9ICR0ZC5jaGlsZHJlbignZGl2JykuZmlyc3QoKS5jaGlsZHJlbignaW5wdXQnKTsKICAgICAgICB2YXIgY29sdW1uID0gdGFibGUuY29sdW1uKGkpLm5vZGVzKCkudG8kKCksCiAgICAgICAgICAgIHZhbCA9ICQudHJpbSgkaW5wdXQudmFsKCkpOwogICAgICAgIGlmICh0eXBlICE9PSAnY2hhcmFjdGVyJyB8fCB2YWwgPT09ICcnKSByZXR1cm47CiAgICAgICAgY29sdW1uLmhpZ2hsaWdodCh2YWwuc3BsaXQoL1xzKy8pKTsKICAgICAgfSk7CiAgICB9OwoKICAgIGlmIChvcHRpb25zLnNlYXJjaEhpZ2hsaWdodCkgewogICAgICB0YWJsZQogICAgICAub24oJ2RyYXcuZHQuZHRoIGNvbHVtbi12aXNpYmlsaXR5LmR0LmR0aCBjb2x1bW4tcmVvcmRlci5kdC5kdGgnLCBoaWdobGlnaHQpCiAgICAgIC5vbignZGVzdHJveScsIGZ1bmN0aW9uKCkgewogICAgICAgIC8vIHJlbW92ZSBldmVudCBoYW5kbGVyCiAgICAgICAgdGFibGUub2ZmKCdkcmF3LmR0LmR0aCBjb2x1bW4tdmlzaWJpbGl0eS5kdC5kdGggY29sdW1uLXJlb3JkZXIuZHQuZHRoJyk7CiAgICAgIH0pOwoKICAgICAgLy8gU2V0IHRoZSBvcHRpb24gZm9yIGVzY2FwaW5nIHJlZ2V4IGNoYXJhY3RlcnMgaW4gb3VyIHNlYXJjaCBzdHJpbmcuICBUaGlzIHdpbGwgYmUgdXNlZAogICAgICAvLyBmb3IgYWxsIGZ1dHVyZSBtYXRjaGluZy4KICAgICAgalF1ZXJ5LmZuLmhpZ2hsaWdodC5vcHRpb25zLmVzY2FwZVJlZ2V4ID0gKCFvcHRpb25zLnNlYXJjaCB8fCAhb3B0aW9ucy5zZWFyY2gucmVnZXgpOwoKICAgICAgLy8gaW5pdGlhbCBoaWdobGlnaHQgZm9yIHN0YXRlIHNhdmVkIGNvbmRpdGlvbnMgYW5kIGluaXRpYWwgc3RhdGVzCiAgICAgIGhpZ2hsaWdodCgpOwogICAgfQoKICAgIC8vIHJ1biB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gb24gdGhlIHRhYmxlIGluc3RhbmNlCiAgICBpZiAodHlwZW9mIGRhdGEuY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIGRhdGEuY2FsbGJhY2sodGFibGUpOwoKICAgIC8vIGRvdWJsZSBjbGljayB0byBlZGl0IHRoZSBjZWxsLCByb3csIGNvbHVtbiwgb3IgYWxsIGNlbGxzCiAgICBpZiAoZGF0YS5lZGl0YWJsZSkgdGFibGUub24oJ2RibGNsaWNrLmR0JywgJ3Rib2R5IHRkJywgZnVuY3Rpb24oZSkgewogICAgICAvLyBvbmx5IGJyaW5nIHVwIHRoZSBlZGl0b3Igd2hlbiB0aGUgY2VsbCBpdHNlbGYgaXMgZGJjbGlja2VkLCBhbmQgaWdub3JlCiAgICAgIC8vIG90aGVyIGRiY2xpY2sgZXZlbnRzIGJ1YmJsZWQgdXAgKGUuZy4gZnJvbSB0aGUgPGlucHV0PikKICAgICAgaWYgKGUudGFyZ2V0ICE9PSB0aGlzKSByZXR1cm47CiAgICAgIHZhciB0YXJnZXQgPSBbXSwgaW1tZWRpYXRlID0gZmFsc2U7CiAgICAgIHN3aXRjaCAoZGF0YS5lZGl0YWJsZS50YXJnZXQpIHsKICAgICAgICBjYXNlICdjZWxsJzoKICAgICAgICAgIHRhcmdldCA9IFt0aGlzXTsKICAgICAgICAgIGltbWVkaWF0ZSA9IHRydWU7ICAvLyBlZGl0IHdpbGwgdGFrZSBlZmZlY3QgaW1tZWRpYXRlbHkKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3Jvdyc6CiAgICAgICAgICB0YXJnZXQgPSB0YWJsZS5jZWxscyh0YWJsZS5jZWxsKHRoaXMpLmluZGV4KCkucm93LCAnKicpLm5vZGVzKCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdjb2x1bW4nOgogICAgICAgICAgdGFyZ2V0ID0gdGFibGUuY2VsbHMoJyonLCB0YWJsZS5jZWxsKHRoaXMpLmluZGV4KCkuY29sdW1uKS5ub2RlcygpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnYWxsJzoKICAgICAgICAgIHRhcmdldCA9IHRhYmxlLmNlbGxzKCkubm9kZXMoKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICB0aHJvdyAnVGhlIGVkaXRhYmxlIHBhcmFtZXRlciBtdXN0IGJlICJjZWxsIiwgInJvdyIsICJjb2x1bW4iLCBvciAiYWxsIic7CiAgICAgIH0KICAgICAgdmFyIGRpc2FibGVDb2xzID0gZGF0YS5lZGl0YWJsZS5kaXNhYmxlID8gZGF0YS5lZGl0YWJsZS5kaXNhYmxlLmNvbHVtbnMgOiBudWxsOwogICAgICB2YXIgbnVtZXJpY0NvbHMgPSBkYXRhLmVkaXRhYmxlLm51bWVyaWM7CiAgICAgIHZhciBhcmVhQ29scyA9IGRhdGEuZWRpdGFibGUuYXJlYTsKICAgICAgdmFyIGRhdGVDb2xzID0gZGF0YS5lZGl0YWJsZS5kYXRlOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhcmdldC5sZW5ndGg7IGkrKykgewogICAgICAgIChmdW5jdGlvbihjZWxsLCBjdXJyZW50KSB7CiAgICAgICAgICB2YXIgJGNlbGwgPSAkKGNlbGwpLCBodG1sID0gJGNlbGwuaHRtbCgpOwogICAgICAgICAgdmFyIF9jZWxsID0gdGFibGUuY2VsbChjZWxsKSwgdmFsdWUgPSBfY2VsbC5kYXRhKCksIGluZGV4ID0gX2NlbGwuaW5kZXgoKS5jb2x1bW47CiAgICAgICAgICB2YXIgJGlucHV0OwogICAgICAgICAgaWYgKGluQXJyYXkoaW5kZXgsIG51bWVyaWNDb2xzKSkgewogICAgICAgICAgICAkaW5wdXQgPSAkKCc8aW5wdXQgdHlwZT0ibnVtYmVyIj4nKTsKICAgICAgICAgIH0gZWxzZSBpZiAoaW5BcnJheShpbmRleCwgYXJlYUNvbHMpKSB7CiAgICAgICAgICAgICRpbnB1dCA9ICQoJzx0ZXh0YXJlYT48L3RleHRhcmVhPicpOwogICAgICAgICAgfSBlbHNlIGlmIChpbkFycmF5KGluZGV4LCBkYXRlQ29scykpIHsKICAgICAgICAgICAgJGlucHV0ID0gJCgnPGlucHV0IHR5cGU9ImRhdGUiPicpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGlucHV0ID0gJCgnPGlucHV0IHR5cGU9InRleHQiPicpOwogICAgICAgICAgfQogICAgICAgICAgaWYgKCFpbW1lZGlhdGUpIHsKICAgICAgICAgICAgJGNlbGwuZGF0YSgnaW5wdXQnLCAkaW5wdXQpLmRhdGEoJ2h0bWwnLCBodG1sKTsKICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3RpdGxlJywgJ0hpdCBDdHJsK0VudGVyIHRvIGZpbmlzaCBlZGl0aW5nLCBvciBFc2MgdG8gY2FuY2VsJyk7CiAgICAgICAgICB9CiAgICAgICAgICAkaW5wdXQudmFsKHZhbHVlKTsKICAgICAgICAgIGlmIChpbkFycmF5KGluZGV4LCBkaXNhYmxlQ29scykpIHsKICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3JlYWRvbmx5JywgJycpLmNzcygnZmlsdGVyJywgJ2ludmVydCgyNSUpJyk7CiAgICAgICAgICB9CiAgICAgICAgICAkY2VsbC5lbXB0eSgpLmFwcGVuZCgkaW5wdXQpOwogICAgICAgICAgaWYgKGNlbGwgPT09IGN1cnJlbnQpICRpbnB1dC5mb2N1cygpOwogICAgICAgICAgJGlucHV0LmNzcygnd2lkdGgnLCAnMTAwJScpOwoKICAgICAgICAgIGlmIChpbW1lZGlhdGUpICRpbnB1dC5vbignYmx1cicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHZhbHVlTmV3ID0gJGlucHV0LnZhbCgpOwogICAgICAgICAgICBpZiAodmFsdWVOZXcgIT09IHZhbHVlKSB7CiAgICAgICAgICAgICAgX2NlbGwuZGF0YSh2YWx1ZU5ldyk7CiAgICAgICAgICAgICAgaWYgKEhUTUxXaWRnZXRzLnNoaW55TW9kZSkgewogICAgICAgICAgICAgICAgY2hhbmdlSW5wdXQoJ2NlbGxfZWRpdCcsIFtjZWxsSW5mbyhjZWxsKV0sICdEVC5jZWxsSW5mbycsIG51bGwsIHtwcmlvcml0eTogJ2V2ZW50J30pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvLyBmb3Igc2VydmVyLXNpZGUgcHJvY2Vzc2luZywgdXNlcnMgaGF2ZSB0byBjYWxsIHJlcGxhY2VEYXRhKCkgdG8gdXBkYXRlIHRoZSB0YWJsZQogICAgICAgICAgICAgIGlmICghc2VydmVyKSB0YWJsZS5kcmF3KGZhbHNlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAkY2VsbC5odG1sKGh0bWwpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KS5vbigna2V5dXAnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIC8vIGhpdCBFc2NhcGUgdG8gY2FuY2VsIGVkaXRpbmcKICAgICAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMjcpICRpbnB1dC50cmlnZ2VyKCdibHVyJyk7CiAgICAgICAgICB9KTsKCiAgICAgICAgICAvLyBidWxrIGVkaXQgKHJvdywgY29sdW1uLCBvciBhbGwpCiAgICAgICAgICBpZiAoIWltbWVkaWF0ZSkgJGlucHV0Lm9uKCdrZXl1cCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHJlbW92ZUlucHV0ID0gZnVuY3Rpb24oJGNlbGwsIHJlc3RvcmUpIHsKICAgICAgICAgICAgICAkY2VsbC5kYXRhKCdpbnB1dCcpLnJlbW92ZSgpOwogICAgICAgICAgICAgIGlmIChyZXN0b3JlKSAkY2VsbC5odG1sKCRjZWxsLmRhdGEoJ2h0bWwnKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMjcpIHsKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhcmdldC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgcmVtb3ZlSW5wdXQoJCh0YXJnZXRbaV0pLCB0cnVlKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5rZXlDb2RlID09PSAxMyAmJiBlLmN0cmxLZXkpIHsKICAgICAgICAgICAgICAvLyBDdHJsICsgRW50ZXIKICAgICAgICAgICAgICB2YXIgY2VsbCwgJGNlbGwsIF9jZWxsLCBjZWxsRGF0YSA9IFtdOwogICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGFyZ2V0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBjZWxsID0gdGFyZ2V0W2ldOyAkY2VsbCA9ICQoY2VsbCk7IF9jZWxsID0gdGFibGUuY2VsbChjZWxsKTsKICAgICAgICAgICAgICAgIF9jZWxsLmRhdGEoJGNlbGwuZGF0YSgnaW5wdXQnKS52YWwoKSk7CiAgICAgICAgICAgICAgICBIVE1MV2lkZ2V0cy5zaGlueU1vZGUgJiYgY2VsbERhdGEucHVzaChjZWxsSW5mbyhjZWxsKSk7CiAgICAgICAgICAgICAgICByZW1vdmVJbnB1dCgkY2VsbCwgZmFsc2UpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoSFRNTFdpZGdldHMuc2hpbnlNb2RlKSB7CiAgICAgICAgICAgICAgICBjaGFuZ2VJbnB1dCgnY2VsbF9lZGl0JywgY2VsbERhdGEsICdEVC5jZWxsSW5mbycsIG51bGwsIHtwcmlvcml0eTogImV2ZW50In0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoIXNlcnZlcikgdGFibGUuZHJhdyhmYWxzZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0pKHRhcmdldFtpXSwgdGhpcyk7CiAgICAgIH0KICAgIH0pOwoKICAgIC8vIGludGVyYWN0aW9uIHdpdGggc2hpbnkKICAgIGlmICghSFRNTFdpZGdldHMuc2hpbnlNb2RlICYmICFjcm9zc3RhbGtPcHRpb25zLmdyb3VwKSByZXR1cm47CgogICAgdmFyIG1ldGhvZHMgPSB7fTsKICAgIHZhciBzaGlueURhdGEgPSB7fTsKCiAgICBtZXRob2RzLnVwZGF0ZUNhcHRpb24gPSBmdW5jdGlvbihjYXB0aW9uKSB7CiAgICAgIGlmICghY2FwdGlvbikgcmV0dXJuOwogICAgICAkdGFibGUuY2hpbGRyZW4oJ2NhcHRpb24nKS5yZXBsYWNlV2l0aChjYXB0aW9uKTsKICAgIH0KCiAgICAvLyByZWdpc3RlciBjbGVhciBmdW5jdGlvbnMgdG8gcmVtb3ZlIGlucHV0IHZhbHVlcyB3aGVuIHRoZSB0YWJsZSBpcyByZW1vdmVkCiAgICBpbnN0YW5jZS5jbGVhcklucHV0cyA9IHt9OwoKICAgIHZhciBjaGFuZ2VJbnB1dCA9IGZ1bmN0aW9uKGlkLCB2YWx1ZSwgdHlwZSwgbm9Dcm9zc3RhbGssIG9wdHMpIHsKICAgICAgdmFyIGV2ZW50ID0gaWQ7CiAgICAgIGlkID0gZWwuaWQgKyAnXycgKyBpZDsKICAgICAgaWYgKHR5cGUpIGlkID0gaWQgKyAnOicgKyB0eXBlOwogICAgICAvLyBkbyBub3QgdXBkYXRlIGlmIHRoZSBuZXcgdmFsdWUgaXMgdGhlIHNhbWUgYXMgb2xkIHZhbHVlCiAgICAgIGlmIChldmVudCAhPT0gJ2NlbGxfZWRpdCcgJiYgIS9fY2xpY2tlZCQvLnRlc3QoZXZlbnQpICYmIHNoaW55RGF0YS5oYXNPd25Qcm9wZXJ0eShpZCkgJiYgc2hpbnlEYXRhW2lkXSA9PT0gSlNPTi5zdHJpbmdpZnkodmFsdWUpKQogICAgICAgIHJldHVybjsKICAgICAgc2hpbnlEYXRhW2lkXSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTsKICAgICAgaWYgKEhUTUxXaWRnZXRzLnNoaW55TW9kZSAmJiBTaGlueS5zZXRJbnB1dFZhbHVlKSB7CiAgICAgICAgU2hpbnkuc2V0SW5wdXRWYWx1ZShpZCwgdmFsdWUsIG9wdHMpOwogICAgICAgIGlmICghaW5zdGFuY2UuY2xlYXJJbnB1dHNbaWRdKSBpbnN0YW5jZS5jbGVhcklucHV0c1tpZF0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFNoaW55LnNldElucHV0VmFsdWUoaWQsIG51bGwpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gSEFDSwogICAgICBpZiAoZXZlbnQgPT09ICJyb3dzX3NlbGVjdGVkIiAmJiAhbm9Dcm9zc3RhbGspIHsKICAgICAgICBpZiAoY3Jvc3N0YWxrT3B0aW9ucy5ncm91cCkgewogICAgICAgICAgdmFyIGtleXMgPSBjcm9zc3RhbGtPcHRpb25zLmtleTsKICAgICAgICAgIHZhciBzZWxlY3RlZEtleXMgPSBudWxsOwogICAgICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICAgIHNlbGVjdGVkS2V5cyA9IFtdOwogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgLy8gVGhlIHZhbHVlIGFycmF5J3MgY29udGVudHMgdXNlIDEtYmFzZWQgcm93IG51bWJlcnMsIHNvIHdlIG11c3QKICAgICAgICAgICAgICAvLyBjb252ZXJ0IHRvIDAtYmFzZWQgYmVmb3JlIGluZGV4aW5nIGludG8gdGhlIGtleXMgYXJyYXkuCiAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzLnB1c2goa2V5c1t2YWx1ZVtpXSAtIDFdKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaW5zdGFuY2UuY3RzZWxlY3RIYW5kbGUuc2V0KHNlbGVjdGVkS2V5cyk7CiAgICAgICAgfQogICAgICB9CiAgICB9OwoKICAgIHZhciBhZGRPbmUgPSBmdW5jdGlvbih4KSB7CiAgICAgIHJldHVybiB4Lm1hcChmdW5jdGlvbihpKSB7IHJldHVybiAxICsgaTsgfSk7CiAgICB9OwoKICAgIHZhciB1bmlxdWUgPSBmdW5jdGlvbih4KSB7CiAgICAgIHZhciB1eCA9IFtdOwogICAgICAkLmVhY2goeCwgZnVuY3Rpb24oaSwgZWwpewogICAgICAgIGlmICgkLmluQXJyYXkoZWwsIHV4KSA9PT0gLTEpIHV4LnB1c2goZWwpOwogICAgICB9KTsKICAgICAgcmV0dXJuIHV4OwogICAgfQoKICAgIC8vIGNoYW5nZSB0aGUgcm93IGluZGV4IG9mIGEgY2VsbAogICAgdmFyIHR3ZWFrQ2VsbEluZGV4ID0gZnVuY3Rpb24oY2VsbCkgewogICAgICB2YXIgaW5mbyA9IGNlbGwuaW5kZXgoKTsKICAgICAgLy8gc29tZSBjZWxsIG1heSBub3QgYmUgdmFsaWQuIGUuZywgIzc1OQogICAgICAvLyB3aGVuIHVzaW5nIHRoZSBSb3dHcm91cCBleHRlbnNpb24sIGRhdGF0YWJsZXMgd2lsbAogICAgICAvLyBnZW5lcmF0ZSB0aGUgcm93IGxhYmVsIGFuZCB0aGUgY2VsbHMgYXJlIG5vdCBwYXJ0IG9mCiAgICAgIC8vIHRoZSBkYXRhIHRodXMgY29udGFpbiBubyByb3cvY29sIGluZm8KICAgICAgaWYgKGluZm8gPT09IHVuZGVmaW5lZCkKICAgICAgICByZXR1cm4ge3JvdzogbnVsbCwgY29sOiBudWxsfTsKICAgICAgaWYgKHNlcnZlcikgewogICAgICAgIGluZm8ucm93ID0gRFRfcm93c19jdXJyZW50W2luZm8ucm93XTsKICAgICAgfSBlbHNlIHsKICAgICAgICBpbmZvLnJvdyArPSAxOwogICAgICB9CiAgICAgIHJldHVybiB7cm93OiBpbmZvLnJvdywgY29sOiBpbmZvLmNvbHVtbn07CiAgICB9CgogICAgdmFyIGNsZWFuU2VsZWN0ZWRWYWx1ZXMgPSBmdW5jdGlvbigpIHsKICAgICAgY2hhbmdlSW5wdXQoJ3Jvd3Nfc2VsZWN0ZWQnLCBbXSk7CiAgICAgIGNoYW5nZUlucHV0KCdjb2x1bW5zX3NlbGVjdGVkJywgW10pOwogICAgICBjaGFuZ2VJbnB1dCgnY2VsbHNfc2VsZWN0ZWQnLCB0cmFuc3Bvc2VBcnJheTJEKFtdKSwgJ3NoaW55Lm1hdHJpeCcpOwogICAgfQogICAgLy8gIzgyOCB3ZSBzaG91bGQgY2xlYW4gdGhlIHNlbGVjdGlvbiBvbiB0aGUgc2VydmVyLXNpZGUgd2hlbiB0aGUgdGFibGUgcmVsb2FkcwogICAgY2xlYW5TZWxlY3RlZFZhbHVlcygpOwoKICAgIC8vIGEgZmxhZyB0byBpbmRpY2F0ZXMgaWYgc2VsZWN0IGV4dGVuc2lvbiBpcyBpbml0aWFsaXplZCBvciBub3QKICAgIHZhciBmbGFnU2VsZWN0RXh0ID0gdGFibGUuc2V0dGluZ3MoKVswXS5fc2VsZWN0ICE9PSB1bmRlZmluZWQ7CiAgICAvLyB0aGUgU2VsZWN0IGV4dGVuc2lvbiBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoZSBjbGllbnQgbW9kZSBhbmQKICAgIC8vIHdoZW4gdGhlIHNlbGVjdGlvbi5tb2RlIGlzIHNldCB0byBub25lCiAgICBpZiAoZGF0YS5zZWxlY3Rpb24ubW9kZSA9PT0gJ25vbmUnICYmICFzZXJ2ZXIgJiYgZmxhZ1NlbGVjdEV4dCkgewogICAgICB2YXIgdXBkYXRlUm93c1NlbGVjdGVkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHJvd3MgPSB0YWJsZS5yb3dzKHtzZWxlY3RlZDogdHJ1ZX0pOwogICAgICAgIHZhciBzZWxlY3RlZCA9IFtdOwogICAgICAgICQuZWFjaChyb3dzLmluZGV4ZXMoKS50b0FycmF5KCksIGZ1bmN0aW9uKGksIHYpIHsKICAgICAgICAgIHNlbGVjdGVkLnB1c2godiArIDEpOwogICAgICAgIH0pOwogICAgICAgIGNoYW5nZUlucHV0KCdyb3dzX3NlbGVjdGVkJywgc2VsZWN0ZWQpOwogICAgICB9CiAgICAgIHZhciB1cGRhdGVDb2xzU2VsZWN0ZWQgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgY29sdW1ucyA9IHRhYmxlLmNvbHVtbnMoe3NlbGVjdGVkOiB0cnVlfSk7CiAgICAgICAgY2hhbmdlSW5wdXQoJ2NvbHVtbnNfc2VsZWN0ZWQnLCBjb2x1bW5zLmluZGV4ZXMoKS50b0FycmF5KCkpOwogICAgICB9CiAgICAgIHZhciB1cGRhdGVDZWxsc1NlbGVjdGVkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGNlbGxzID0gdGFibGUuY2VsbHMoe3NlbGVjdGVkOiB0cnVlfSk7CiAgICAgICAgdmFyIHNlbGVjdGVkID0gW107CiAgICAgICAgY2VsbHMuZXZlcnkoZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgcm93ID0gdGhpcy5pbmRleCgpLnJvdzsKICAgICAgICAgIHZhciBjb2wgPSB0aGlzLmluZGV4KCkuY29sdW1uOwogICAgICAgICAgc2VsZWN0ZWQgPSBzZWxlY3RlZC5jb25jYXQoW1tyb3cgKyAxLCBjb2xdXSk7CiAgICAgICAgfSk7CiAgICAgICAgY2hhbmdlSW5wdXQoJ2NlbGxzX3NlbGVjdGVkJywgdHJhbnNwb3NlQXJyYXkyRChzZWxlY3RlZCksICdzaGlueS5tYXRyaXgnKTsKICAgICAgfQogICAgICB0YWJsZS5vbignc2VsZWN0IGRlc2VsZWN0JywgZnVuY3Rpb24oZSwgZHQsIHR5cGUsIGluZGV4ZXMpIHsKICAgICAgICB1cGRhdGVSb3dzU2VsZWN0ZWQoKTsKICAgICAgICB1cGRhdGVDb2xzU2VsZWN0ZWQoKTsKICAgICAgICB1cGRhdGVDZWxsc1NlbGVjdGVkKCk7CiAgICAgIH0pCiAgICAgIHVwZGF0ZVJvd3NTZWxlY3RlZCgpOwogICAgICB1cGRhdGVDb2xzU2VsZWN0ZWQoKTsKICAgICAgdXBkYXRlQ2VsbHNTZWxlY3RlZCgpOwogICAgfQoKICAgIHZhciBzZWxNb2RlID0gZGF0YS5zZWxlY3Rpb24ubW9kZSwgc2VsVGFyZ2V0ID0gZGF0YS5zZWxlY3Rpb24udGFyZ2V0OwogICAgdmFyIHNlbERpc2FibGUgPSBkYXRhLnNlbGVjdGlvbi5zZWxlY3RhYmxlID09PSBmYWxzZTsKICAgIGlmIChpbkFycmF5KHNlbE1vZGUsIFsnc2luZ2xlJywgJ211bHRpcGxlJ10pKSB7CiAgICAgIHZhciBzZWxDbGFzcyA9IGluQXJyYXkoZGF0YS5zdHlsZSwgWydib290c3RyYXAnLCAnYm9vdHN0cmFwNCddKSA/ICdhY3RpdmUnIDogJ3NlbGVjdGVkJzsKICAgICAgLy8gc2VsZWN0ZWQxOiByb3cgaW5kaWNlczsgc2VsZWN0ZWQyOiBjb2x1bW4gaW5kaWNlcwogICAgICB2YXIgaW5pdFNlbCA9IGZ1bmN0aW9uKHgpIHsKICAgICAgICBpZiAoeCA9PT0gbnVsbCB8fCB0eXBlb2YgeCA9PT0gJ2Jvb2xlYW4nIHx8IHNlbFRhcmdldCA9PT0gJ2NlbGwnKSB7CiAgICAgICAgICByZXR1cm4ge3Jvd3M6IFtdLCBjb2xzOiBbXX07CiAgICAgICAgfSBlbHNlIGlmIChzZWxUYXJnZXQgPT09ICdyb3cnKSB7CiAgICAgICAgICByZXR1cm4ge3Jvd3M6ICQubWFrZUFycmF5KHgpLCBjb2xzOiBbXX07CiAgICAgICAgfSBlbHNlIGlmIChzZWxUYXJnZXQgPT09ICdjb2x1bW4nKSB7CiAgICAgICAgICByZXR1cm4ge3Jvd3M6IFtdLCBjb2xzOiAkLm1ha2VBcnJheSh4KX07CiAgICAgICAgfSBlbHNlIGlmIChzZWxUYXJnZXQgPT09ICdyb3crY29sdW1uJykgewogICAgICAgICAgcmV0dXJuIHtyb3dzOiAkLm1ha2VBcnJheSh4LnJvd3MpLCBjb2xzOiAkLm1ha2VBcnJheSh4LmNvbHMpfTsKICAgICAgICB9CiAgICAgIH0KICAgICAgdmFyIHNlbGVjdGVkID0gZGF0YS5zZWxlY3Rpb24uc2VsZWN0ZWQ7CiAgICAgIHZhciBzZWxlY3RlZDEgPSBpbml0U2VsKHNlbGVjdGVkKS5yb3dzLCBzZWxlY3RlZDIgPSBpbml0U2VsKHNlbGVjdGVkKS5jb2xzOwogICAgICAvLyBzZWxlY3RhYmxlIHNob3VsZCBjb250YWluIGVpdGhlciBhbGwgcG9zaXRpdmUgb3IgYWxsIG5vbi1wb3NpdGl2ZSB2YWx1ZXMsIG5vdCBib3RoCiAgICAgIC8vIHBvc2l0aXZlIHZhbHVlcyBpbmRpY2F0ZSAic2VsZWN0YWJsZSIgd2hpbGUgbm9uLXBvc2l0aXZlIHZhbHVlcyBtZWFucyAibm9uc2VsZWN0YWJsZSIKICAgICAgLy8gdGhlIGFzc2VydGlvbiBpcyBwZXJmb3JtZWQgb24gUiBzaWRlLiAob25seSBjb2x1bW4gaW5kaWNpZGVzIGNvdWxkIGJlIHplcm8gd2hpY2ggaW5kaWNhdGVzCiAgICAgIC8vIHRoZSByb3cgbmFtZSkKICAgICAgdmFyIHNlbGVjdGFibGUgPSBkYXRhLnNlbGVjdGlvbi5zZWxlY3RhYmxlOwogICAgICB2YXIgc2VsZWN0YWJsZTEgPSBpbml0U2VsKHNlbGVjdGFibGUpLnJvd3MsIHNlbGVjdGFibGUyID0gaW5pdFNlbChzZWxlY3RhYmxlKS5jb2xzOwoKICAgICAgLy8gQWZ0ZXIgdXNlcnMgcmVvcmRlciB0aGUgcm93cyBvciBmaWx0ZXIgdGhlIHRhYmxlLCB3ZSBjYW5ub3QgdXNlIHRoZSB0YWJsZSBpbmRleAogICAgICAvLyBkaXJlY3RseS4gSW5zdGVhZCwgd2UgbmVlZCB0aGlzIGZ1bmN0aW9uIHRvIGZpbmQgb3V0IHRoZSByb3dzIGJldHdlZW4gdGhlIHR3byBjbGlja3MuCiAgICAgIC8vIElmIHVzZXIgZmlsdGVyIHRoZSB0YWJsZSBhZ2FpbiBiZXR3ZWVuIHRoZSBzdGFydCBjbGljayBhbmQgdGhlIGVuZCBjbGljaywgdGhlIGJlaGF2aW9yCiAgICAgIC8vIHdvdWxkIGJlIHVuZGVmaW5lZCwgYnV0IGl0IHNob3VsZCBub3QgYmUgYSBwcm9ibGVtLgogICAgICB2YXIgc2hpZnRTZWxSb3dzSW5kZXggPSBmdW5jdGlvbihzdGFydCwgZW5kKSB7CiAgICAgICAgdmFyIGluZGV4ZXMgPSBzZXJ2ZXIgPyBEVF9yb3dzX2FsbCA6IHRhYmxlLnJvd3MoeyBzZWFyY2g6ICdhcHBsaWVkJyB9KS5pbmRleGVzKCkudG9BcnJheSgpOwogICAgICAgIHN0YXJ0ID0gaW5kZXhlcy5pbmRleE9mKHN0YXJ0KTsgZW5kID0gaW5kZXhlcy5pbmRleE9mKGVuZCk7CiAgICAgICAgLy8gaWYgc3RhcnQgaXMgbGFyZ2VyIHRoYW4gZW5kLCB3ZSBuZWVkIHRvIHN3YXAKICAgICAgICBpZiAoc3RhcnQgPiBlbmQpIHsKICAgICAgICAgIHZhciB0bXAgPSBlbmQ7IGVuZCA9IHN0YXJ0OyBzdGFydCA9IHRtcDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGluZGV4ZXMuc2xpY2Uoc3RhcnQsIGVuZCArIDEpOwogICAgICB9CgogICAgICB2YXIgc2VydmVyUm93SW5kZXggPSBmdW5jdGlvbihjbGllbnRSb3dJbmRleCkgewogICAgICAgIHJldHVybiBzZXJ2ZXIgPyBEVF9yb3dzX2N1cnJlbnRbY2xpZW50Um93SW5kZXhdIDogY2xpZW50Um93SW5kZXggKyAxOwogICAgICB9CgogICAgICAvLyByb3csIGNvbHVtbiwgb3IgY2VsbCBzZWxlY3Rpb24KICAgICAgdmFyIGxhc3RDbGlja2VkUm93OwogICAgICBpZiAoaW5BcnJheShzZWxUYXJnZXQsIFsncm93JywgJ3Jvdytjb2x1bW4nXSkpIHsKICAgICAgICAvLyBHZXQgdGhlIGN1cnJlbnQgc2VsZWN0ZWQgcm93cy4gSXQgd2lsbCBhbHNvCiAgICAgICAgLy8gdXBkYXRlIHRoZSBzZWxlY3RlZDEncyB2YWx1ZSBiYXNlZCBvbiB0aGUgY3VycmVudCByb3cgc2VsZWN0aW9uIHN0YXRlCiAgICAgICAgLy8gTm90ZSB3ZSBjYW4ndCBwdXQgdGhpcyBmdW5jdGlvbiBpbnNpZGUgc2VsZWN0Um93cygpIGRpcmVjdGx5LAogICAgICAgIC8vIHRoZSByZWFzb24gaXMgbWV0aG9kLnNlbGVjdFJvd3MoKSB3aWxsIG92ZXJyaWRlIHNlbGVjdGVkMSdzIHZhbHVlIGJ1dCB0aGlzCiAgICAgICAgLy8gZnVuY3Rpb24gd2lsbCBhZGQgcm93cyB0byBzZWxlY3RlZDEgKGtlZXAgdGhlIGV4aXN0aW5nIHNlbGVjdGlvbiksIHdoaWNoIGlzCiAgICAgICAgLy8gaW5jb25zaXN0ZW50IHdpdGggY29sdW1uIGFuZCBjZWxsIHNlbGVjdGlvbi4KICAgICAgICB2YXIgc2VsZWN0ZWRSb3dzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgcm93cyA9IHRhYmxlLnJvd3MoJy4nICsgc2VsQ2xhc3MpOwogICAgICAgICAgdmFyIGlkeCA9IHJvd3MuaW5kZXhlcygpLnRvQXJyYXkoKTsKICAgICAgICAgIGlmICghc2VydmVyKSB7CiAgICAgICAgICAgIHNlbGVjdGVkMSA9IGFkZE9uZShpZHgpOwogICAgICAgICAgICByZXR1cm4gc2VsZWN0ZWQxOwogICAgICAgICAgfQogICAgICAgICAgaWR4ID0gaWR4Lm1hcChmdW5jdGlvbihpKSB7CiAgICAgICAgICAgIHJldHVybiBEVF9yb3dzX2N1cnJlbnRbaV07CiAgICAgICAgICB9KTsKICAgICAgICAgIHNlbGVjdGVkMSA9IHNlbE1vZGUgPT09ICdtdWx0aXBsZScgPyB1bmlxdWUoc2VsZWN0ZWQxLmNvbmNhdChpZHgpKSA6IGlkeDsKICAgICAgICAgIHJldHVybiBzZWxlY3RlZDE7CiAgICAgICAgfQogICAgICAgIC8vIENoYW5nZSBzZWxlY3RlZDEncyB2YWx1ZSBiYXNlZCBvbiBzZWxlY3RhYmxlMSwgdGhlbiByZWZyZXNoIHRoZSByb3cgc3RhdGUKICAgICAgICB2YXIgb25seUtlZXBTZWxlY3RhYmxlUm93cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgaWYgKHNlbERpc2FibGUpIHsgLy8gdXNlcnMgY2FuJ3Qgc2VsZWN0OyB1c2VmdWwgd2hlbiBvbmx5IHdhbnQgYmFja2VuZCBzZWxlY3QKICAgICAgICAgICAgc2VsZWN0ZWQxID0gW107CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChzZWxlY3RhYmxlMS5sZW5ndGggPT09IDApIHJldHVybjsKICAgICAgICAgIHZhciBub25zZWxlY3RhYmxlID0gc2VsZWN0YWJsZTFbMF0gPD0gMDsKICAgICAgICAgIGlmIChub25zZWxlY3RhYmxlKSB7CiAgICAgICAgICAgIC8vIHNob3VsZCBtYWtlIHNlbGVjdGFibGUxIHBvc2l0aXZlCiAgICAgICAgICAgIHNlbGVjdGVkMSA9ICQoc2VsZWN0ZWQxKS5ub3Qoc2VsZWN0YWJsZTEubWFwKGZ1bmN0aW9uKGkpIHsgcmV0dXJuIC1pOyB9KSkuZ2V0KCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzZWxlY3RlZDEgPSAkKHNlbGVjdGVkMSkuZmlsdGVyKHNlbGVjdGFibGUxKS5nZXQoKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gQ2hhbmdlIHNlbGVjdGVkMSdzIHZhbHVlIGJhc2VkIG9uIHNlbGVjdGFibGUxLCB0aGVuCiAgICAgICAgLy8gcmVmcmVzaCB0aGUgcm93IHNlbGVjdGlvbiBzdGF0ZSBhY2NvcmRpbmcgdG8gdmFsdWVzIGluIHNlbGVjdGVkMQogICAgICAgIHZhciBzZWxlY3RSb3dzID0gZnVuY3Rpb24oaWdub3JlU2VsZWN0YWJsZSkgewogICAgICAgICAgaWYgKCFpZ25vcmVTZWxlY3RhYmxlKSBvbmx5S2VlcFNlbGVjdGFibGVSb3dzKCk7CiAgICAgICAgICB0YWJsZS4kKCd0ci4nICsgc2VsQ2xhc3MpLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgIGlmIChzZWxlY3RlZDEubGVuZ3RoID09PSAwKSByZXR1cm47CiAgICAgICAgICBpZiAoc2VydmVyKSB7CiAgICAgICAgICAgIHRhYmxlLnJvd3Moe3BhZ2U6ICdjdXJyZW50J30pLmV2ZXJ5KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIGlmIChpbkFycmF5KERUX3Jvd3NfY3VycmVudFt0aGlzLmluZGV4KCldLCBzZWxlY3RlZDEpKSB7CiAgICAgICAgICAgICAgICAkKHRoaXMubm9kZSgpKS5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciBzZWxlY3RlZDAgPSBzZWxlY3RlZDEubWFwKGZ1bmN0aW9uKGkpIHsgcmV0dXJuIGkgLSAxOyB9KTsKICAgICAgICAgICAgJCh0YWJsZS5yb3dzKHNlbGVjdGVkMCkubm9kZXMoKSkuYWRkQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0YWJsZS5vbignbW91c2Vkb3duLmR0JywgJ3Rib2R5IHRyJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSwgdGhpc1JvdyA9IHRhYmxlLnJvdyh0aGlzKTsKICAgICAgICAgIGlmIChzZWxNb2RlID09PSAnbXVsdGlwbGUnKSB7CiAgICAgICAgICAgIGlmIChlLnNoaWZ0S2V5ICYmIGxhc3RDbGlja2VkUm93ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAvLyBzZWxlY3Qgb3IgZGUtc2VsZWN0IGRlcGVuZHMgb24gdGhlIGxhc3QgY2xpY2tlZCByb3cncyBzdGF0dXMKICAgICAgICAgICAgICB2YXIgZmxhZ1NlbCA9ICEkdGhpcy5oYXNDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgICAgdmFyIGNydENsaWNrZWRSb3cgPSBzZXJ2ZXJSb3dJbmRleCh0aGlzUm93LmluZGV4KCkpOwogICAgICAgICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgICAgICAgIHZhciByb3dzSW5kZXggPSBzaGlmdFNlbFJvd3NJbmRleChsYXN0Q2xpY2tlZFJvdywgY3J0Q2xpY2tlZFJvdyk7CiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgY3VycmVudCBwYWdlJ3Mgc2VsQ2xhc3MKICAgICAgICAgICAgICAgIHJvd3NJbmRleC5tYXAoZnVuY3Rpb24oaSkgewogICAgICAgICAgICAgICAgICB2YXIgcm93SW5kZXggPSBEVF9yb3dzX2N1cnJlbnQuaW5kZXhPZihpKTsKICAgICAgICAgICAgICAgICAgaWYgKHJvd0luZGV4ID49IDApIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcm93ID0gdGFibGUucm93KHJvd0luZGV4KS5ub2RlcygpLnRvJCgpOwogICAgICAgICAgICAgICAgICAgIHZhciBmbGFnUm93U2VsID0gIXJvdy5oYXNDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdTZWwgPT09IGZsYWdSb3dTZWwpIHJvdy50b2dnbGVDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgLy8gdXBkYXRlIHNlbGVjdGVkMQogICAgICAgICAgICAgICAgaWYgKGZsYWdTZWwpIHsKICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQxID0gdW5pcXVlKHNlbGVjdGVkMS5jb25jYXQocm93c0luZGV4KSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBzZWxlY3RlZDEgPSBzZWxlY3RlZDEuZmlsdGVyKGZ1bmN0aW9uKGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICFpbkFycmF5KGluZGV4LCByb3dzSW5kZXgpOwogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8ganMgc3RhcnRzIGZyb20gMAogICAgICAgICAgICAgICAgc2hpZnRTZWxSb3dzSW5kZXgobGFzdENsaWNrZWRSb3cgLSAxLCBjcnRDbGlja2VkUm93IC0gMSkubWFwKGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgIHZhciByb3cgPSB0YWJsZS5yb3codmFsdWUpLm5vZGVzKCkudG8kKCk7CiAgICAgICAgICAgICAgICAgIHZhciBmbGFnUm93U2VsID0gIXJvdy5oYXNDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgICAgICAgIGlmIChmbGFnU2VsID09PSBmbGFnUm93U2VsKSByb3cudG9nZ2xlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAkdGhpcy50b2dnbGVDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICgkdGhpcy5oYXNDbGFzcyhzZWxDbGFzcykpIHsKICAgICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdGFibGUuJCgndHIuJyArIHNlbENsYXNzKS5yZW1vdmVDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgICAgJHRoaXMuYWRkQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoc2VydmVyICYmICEkdGhpcy5oYXNDbGFzcyhzZWxDbGFzcykpIHsKICAgICAgICAgICAgdmFyIGlkID0gRFRfcm93c19jdXJyZW50W3RoaXNSb3cuaW5kZXgoKV07CiAgICAgICAgICAgIC8vIHJlbW92ZSBpZCBmcm9tIHNlbGVjdGVkMSBzaW5jZSBpdHMgY2xhc3MgLnNlbGVjdGVkIGhhcyBiZWVuIHJlbW92ZWQKICAgICAgICAgICAgaWYgKGluQXJyYXkoaWQsIHNlbGVjdGVkMSkpIHNlbGVjdGVkMS5zcGxpY2UoJC5pbkFycmF5KGlkLCBzZWxlY3RlZDEpLCAxKTsKICAgICAgICAgIH0KICAgICAgICAgIHNlbGVjdGVkUm93cygpOyAvLyB1cGRhdGUgc2VsZWN0ZWQxJ3MgdmFsdWUgYmFzZWQgb24gc2VsQ2xhc3MKICAgICAgICAgIHNlbGVjdFJvd3MoZmFsc2UpOyAvLyBvbmx5IGtlZXAgdGhlIHNlbGVjdGFibGUgcm93cwogICAgICAgICAgY2hhbmdlSW5wdXQoJ3Jvd3Nfc2VsZWN0ZWQnLCBzZWxlY3RlZDEpOwogICAgICAgICAgY2hhbmdlSW5wdXQoJ3Jvd19sYXN0X2NsaWNrZWQnLCBzZXJ2ZXJSb3dJbmRleCh0aGlzUm93LmluZGV4KCkpLCBudWxsLCBudWxsLCB7cHJpb3JpdHk6ICdldmVudCd9KTsKICAgICAgICAgIGxhc3RDbGlja2VkUm93ID0gc2VydmVyUm93SW5kZXgodGhpc1Jvdy5pbmRleCgpKTsKICAgICAgICB9KTsKICAgICAgICBzZWxlY3RSb3dzKGZhbHNlKTsgIC8vIGluIGNhc2UgdXNlcnMgaGF2ZSBzcGVjaWZpZWQgcHJlLXNlbGVjdGVkIHJvd3MKICAgICAgICAvLyByZXN0b3JlIHNlbGVjdGVkIHJvd3MgYWZ0ZXIgdGhlIHRhYmxlIGlzIHJlZHJhd24gKGUuZy4gc29ydC9zZWFyY2gvcGFnZSk7CiAgICAgICAgLy8gY2xpZW50LXNpZGUgdGFibGVzIHdpbGwgcHJlc2VydmUgdGhlIHNlbGVjdGlvbnMgYXV0b21hdGljYWxseTsgZm9yCiAgICAgICAgLy8gc2VydmVyLXNpZGUgdGFibGVzLCB3ZSBoYXZlIHRvICpyZWFsKiByb3cgaW5kaWNlcyBhcmUgaW4gYHNlbGVjdGVkMWAKICAgICAgICBjaGFuZ2VJbnB1dCgncm93c19zZWxlY3RlZCcsIHNlbGVjdGVkMSk7CiAgICAgICAgaWYgKHNlcnZlcikgdGFibGUub24oJ2RyYXcuZHQnLCBmdW5jdGlvbihlKSB7IHNlbGVjdFJvd3MoZmFsc2UpOyB9KTsKICAgICAgICBtZXRob2RzLnNlbGVjdFJvd3MgPSBmdW5jdGlvbihzZWxlY3RlZCwgaWdub3JlU2VsZWN0YWJsZSkgewogICAgICAgICAgc2VsZWN0ZWQxID0gJC5tYWtlQXJyYXkoc2VsZWN0ZWQpOwogICAgICAgICAgc2VsZWN0Um93cyhpZ25vcmVTZWxlY3RhYmxlKTsKICAgICAgICAgIGNoYW5nZUlucHV0KCdyb3dzX3NlbGVjdGVkJywgc2VsZWN0ZWQxKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChpbkFycmF5KHNlbFRhcmdldCwgWydjb2x1bW4nLCAncm93K2NvbHVtbiddKSkgewogICAgICAgIGlmIChzZWxUYXJnZXQgPT09ICdyb3crY29sdW1uJykgewogICAgICAgICAgJCh0YWJsZS5jb2x1bW5zKCkuZm9vdGVyKCkpLmNzcygnY3Vyc29yJywgJ3BvaW50ZXInKTsKICAgICAgICB9CiAgICAgICAgLy8gdXBkYXRlIHNlbGVjdGVkMidzIHZhbHVlIGJhc2VkIG9uIHNlbGVjdGFibGUyCiAgICAgICAgdmFyIG9ubHlLZWVwU2VsZWN0YWJsZUNvbHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGlmIChzZWxEaXNhYmxlKSB7IC8vIHVzZXJzIGNhbid0IHNlbGVjdDsgdXNlZnVsIHdoZW4gb25seSB3YW50IGJhY2tlbmQgc2VsZWN0CiAgICAgICAgICAgIHNlbGVjdGVkMiA9IFtdOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoc2VsZWN0YWJsZTIubGVuZ3RoID09PSAwKSByZXR1cm47CiAgICAgICAgICB2YXIgbm9uc2VsZWN0YWJsZSA9IHNlbGVjdGFibGUyWzBdIDw9IDA7CiAgICAgICAgICBpZiAobm9uc2VsZWN0YWJsZSkgewogICAgICAgICAgICAvLyBuZWVkIHRvIG1ha2Ugc2VsZWN0YWJsZTIgcG9zaXRpdmUKICAgICAgICAgICAgc2VsZWN0ZWQyID0gJChzZWxlY3RlZDIpLm5vdChzZWxlY3RhYmxlMi5tYXAoZnVuY3Rpb24oaSkgeyByZXR1cm4gLWk7IH0pKS5nZXQoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNlbGVjdGVkMiA9ICQoc2VsZWN0ZWQyKS5maWx0ZXIoc2VsZWN0YWJsZTIpLmdldCgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyB1cGRhdGUgc2VsZWN0ZWQyIGFuZCB0aGVuCiAgICAgICAgLy8gcmVmcmVzaCB0aGUgY29sIHNlbGVjdGlvbiBzdGF0ZSBhY2NvcmRpbmcgdG8gdmFsdWVzIGluIHNlbGVjdGVkMgogICAgICAgIHZhciBzZWxlY3RDb2xzID0gZnVuY3Rpb24oaWdub3JlU2VsZWN0YWJsZSkgewogICAgICAgICAgaWYgKCFpZ25vcmVTZWxlY3RhYmxlKSBvbmx5S2VlcFNlbGVjdGFibGVDb2xzKCk7CiAgICAgICAgICAvLyBpZiBzZWxlY3RlZDIgaXMgbm90IGEgdmFsaWRlIGluZGV4IChlLmcuLCBsYXJnZXIgdGhhbiB0aGUgY29sdW1uIG51bWJlcikKICAgICAgICAgIC8vIHRhYmxlLmNvbHVtbnMoc2VsZWN0ZWQyKSB3aWxsIGZhaWwgYW5kIHJlc3VsdCBpbiBhIGJsYW5rIHRhYmxlCiAgICAgICAgICAvLyB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSB0YWJsZS5yb3dzKCksIHdoZXJlIHRoZSBvdXQtb2YtcmFuZ2UgaW5kZXhlcwogICAgICAgICAgLy8gZG9lc24ndCBhZmZlY3QgYXQgYWxsCiAgICAgICAgICBzZWxlY3RlZDIgPSAkKHNlbGVjdGVkMikuZmlsdGVyKHRhYmxlLmNvbHVtbnMoKS5pbmRleGVzKCkpLmdldCgpOwogICAgICAgICAgdGFibGUuY29sdW1ucygpLm5vZGVzKCkuZmxhdHRlbigpLnRvJCgpLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgIGlmIChzZWxlY3RlZDIubGVuZ3RoID4gMCkKICAgICAgICAgICAgdGFibGUuY29sdW1ucyhzZWxlY3RlZDIpLm5vZGVzKCkuZmxhdHRlbigpLnRvJCgpLmFkZENsYXNzKHNlbENsYXNzKTsKICAgICAgICB9CiAgICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgY29sSWR4ID0gc2VsVGFyZ2V0ID09PSAnY29sdW1uJyA/IHRhYmxlLmNlbGwodGhpcykuaW5kZXgoKS5jb2x1bW4gOgogICAgICAgICAgICAgICQuaW5BcnJheSh0aGlzLCB0YWJsZS5jb2x1bW5zKCkuZm9vdGVyKCkpLAogICAgICAgICAgICAgIHRoaXNDb2wgPSAkKHRhYmxlLmNvbHVtbihjb2xJZHgpLm5vZGVzKCkpOwogICAgICAgICAgaWYgKGNvbElkeCA9PT0gLTEpIHJldHVybjsKICAgICAgICAgIGlmICh0aGlzQ29sLmhhc0NsYXNzKHNlbENsYXNzKSkgewogICAgICAgICAgICB0aGlzQ29sLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgc2VsZWN0ZWQyLnNwbGljZSgkLmluQXJyYXkoY29sSWR4LCBzZWxlY3RlZDIpLCAxKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChzZWxNb2RlID09PSAnc2luZ2xlJykgJCh0YWJsZS5jZWxscygpLm5vZGVzKCkpLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgdGhpc0NvbC5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIHNlbGVjdGVkMiA9IHNlbE1vZGUgPT09ICdzaW5nbGUnID8gW2NvbElkeF0gOiB1bmlxdWUoc2VsZWN0ZWQyLmNvbmNhdChbY29sSWR4XSkpOwogICAgICAgICAgfQogICAgICAgICAgc2VsZWN0Q29scyhmYWxzZSk7IC8vIHVwZGF0ZSBzZWxlY3RlZDIgYmFzZWQgb24gc2VsZWN0YWJsZQogICAgICAgICAgY2hhbmdlSW5wdXQoJ2NvbHVtbnNfc2VsZWN0ZWQnLCBzZWxlY3RlZDIpOwogICAgICAgIH0KICAgICAgICBpZiAoc2VsVGFyZ2V0ID09PSAnY29sdW1uJykgewogICAgICAgICAgJCh0YWJsZS50YWJsZSgpLmJvZHkoKSkub24oJ2NsaWNrLmR0JywgJ3RkJywgY2FsbGJhY2spOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAkKHRhYmxlLnRhYmxlKCkuZm9vdGVyKCkpLm9uKCdjbGljay5kdCcsICd0ciB0aCcsIGNhbGxiYWNrKTsKICAgICAgICB9CiAgICAgICAgc2VsZWN0Q29scyhmYWxzZSk7ICAvLyBpbiBjYXNlIHVzZXJzIGhhdmUgc3BlY2lmaWVkIHByZS1zZWxlY3RlZCBjb2x1bW5zCiAgICAgICAgY2hhbmdlSW5wdXQoJ2NvbHVtbnNfc2VsZWN0ZWQnLCBzZWxlY3RlZDIpOwogICAgICAgIGlmIChzZXJ2ZXIpIHRhYmxlLm9uKCdkcmF3LmR0JywgZnVuY3Rpb24oZSkgeyBzZWxlY3RDb2xzKGZhbHNlKTsgfSk7CiAgICAgICAgbWV0aG9kcy5zZWxlY3RDb2x1bW5zID0gZnVuY3Rpb24oc2VsZWN0ZWQsIGlnbm9yZVNlbGVjdGFibGUpIHsKICAgICAgICAgIHNlbGVjdGVkMiA9ICQubWFrZUFycmF5KHNlbGVjdGVkKTsKICAgICAgICAgIHNlbGVjdENvbHMoaWdub3JlU2VsZWN0YWJsZSk7CiAgICAgICAgICBjaGFuZ2VJbnB1dCgnY29sdW1uc19zZWxlY3RlZCcsIHNlbGVjdGVkMik7CiAgICAgICAgfQogICAgICB9CgogICAgICBpZiAoc2VsVGFyZ2V0ID09PSAnY2VsbCcpIHsKICAgICAgICB2YXIgc2VsZWN0ZWQzID0gW10sIHNlbGVjdGFibGUzID0gW107CiAgICAgICAgaWYgKHNlbGVjdGVkICE9PSBudWxsKSBzZWxlY3RlZDMgPSBzZWxlY3RlZDsKICAgICAgICBpZiAoc2VsZWN0YWJsZSAhPT0gbnVsbCAmJiB0eXBlb2Ygc2VsZWN0YWJsZSAhPT0gJ2Jvb2xlYW4nKSBzZWxlY3RhYmxlMyA9IHNlbGVjdGFibGU7CiAgICAgICAgdmFyIGZpbmRJbmRleCA9IGZ1bmN0aW9uKGlqLCBzZWwpIHsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChpalswXSA9PT0gc2VsW2ldWzBdICYmIGlqWzFdID09PSBzZWxbaV1bMV0pIHJldHVybiBpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgIH0KICAgICAgICAgLy8gQ2hhbmdlIHNlbGVjdGVkMydzIHZhbHVlIGJhc2VkIG9uIHNlbGVjdGFibGUzLCB0aGVuIHJlZnJlc2ggdGhlIGNlbGwgc3RhdGUKICAgICAgICB2YXIgb25seUtlZXBTZWxlY3RhYmxlQ2VsbHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGlmIChzZWxEaXNhYmxlKSB7IC8vIHVzZXJzIGNhbid0IHNlbGVjdDsgdXNlZnVsIHdoZW4gb25seSB3YW50IGJhY2tlbmQgc2VsZWN0CiAgICAgICAgICAgIHNlbGVjdGVkMyA9IFtdOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoc2VsZWN0YWJsZTMubGVuZ3RoID09PSAwKSByZXR1cm47CiAgICAgICAgICB2YXIgbm9uc2VsZWN0YWJsZSA9IHNlbGVjdGFibGUzWzBdWzBdIDw9IDA7CiAgICAgICAgICB2YXIgb3V0ID0gW107CiAgICAgICAgICBpZiAobm9uc2VsZWN0YWJsZSkgewogICAgICAgICAgICBzZWxlY3RlZDMubWFwKGZ1bmN0aW9uKGlqKSB7CiAgICAgICAgICAgICAgLy8gc2hvdWxkIG1ha2Ugc2VsZWN0YWJsZTMgcG9zaXRpdmUKICAgICAgICAgICAgICBpZiAoZmluZEluZGV4KFstaWpbMF0sIC1palsxXV0sIHNlbGVjdGFibGUzKSA9PT0gLTEpIHsgb3V0LnB1c2goaWopOyB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc2VsZWN0ZWQzLm1hcChmdW5jdGlvbihpaikgewogICAgICAgICAgICAgIGlmIChmaW5kSW5kZXgoaWosIHNlbGVjdGFibGUzKSA+IC0xKSB7IG91dC5wdXNoKGlqKTsgfQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICAgIHNlbGVjdGVkMyA9IG91dDsKICAgICAgICB9CiAgICAgICAgLy8gQ2hhbmdlIHNlbGVjdGVkMydzIHZhbHVlIGJhc2VkIG9uIHNlbGVjdGFibGUzLCB0aGVuCiAgICAgICAgLy8gcmVmcmVzaCB0aGUgY2VsbCBzZWxlY3Rpb24gc3RhdGUgYWNjb3JkaW5nIHRvIHZhbHVlcyBpbiBzZWxlY3RlZDMKICAgICAgICB2YXIgc2VsZWN0Q2VsbHMgPSBmdW5jdGlvbihpZ25vcmVTZWxlY3RhYmxlKSB7CiAgICAgICAgICBpZiAoIWlnbm9yZVNlbGVjdGFibGUpIG9ubHlLZWVwU2VsZWN0YWJsZUNlbGxzKCk7CiAgICAgICAgICB0YWJsZS4kKCd0ZC4nICsgc2VsQ2xhc3MpLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgIGlmIChzZWxlY3RlZDMubGVuZ3RoID09PSAwKSByZXR1cm47CiAgICAgICAgICBpZiAoc2VydmVyKSB7CiAgICAgICAgICAgIHRhYmxlLmNlbGxzKHtwYWdlOiAnY3VycmVudCd9KS5ldmVyeShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB2YXIgaW5mbyA9IHR3ZWFrQ2VsbEluZGV4KHRoaXMpOwogICAgICAgICAgICAgIGlmIChmaW5kSW5kZXgoW2luZm8ucm93LCBpbmZvLmNvbF0sIHNlbGVjdGVkMykgPiAtMSkKICAgICAgICAgICAgICAgICQodGhpcy5ub2RlKCkpLmFkZENsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzZWxlY3RlZDMubWFwKGZ1bmN0aW9uKGlqKSB7CiAgICAgICAgICAgICAgJCh0YWJsZS5jZWxsKGlqWzBdIC0gMSwgaWpbMV0pLm5vZGUoKSkuYWRkQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHRhYmxlLm9uKCdjbGljay5kdCcsICd0Ym9keSB0ZCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSwgaW5mbyA9IHR3ZWFrQ2VsbEluZGV4KHRhYmxlLmNlbGwodGhpcykpOwogICAgICAgICAgaWYgKCR0aGlzLmhhc0NsYXNzKHNlbENsYXNzKSkgewogICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIHNlbGVjdGVkMy5zcGxpY2UoZmluZEluZGV4KFtpbmZvLnJvdywgaW5mby5jb2xdLCBzZWxlY3RlZDMpLCAxKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChzZWxNb2RlID09PSAnc2luZ2xlJykgJCh0YWJsZS5jZWxscygpLm5vZGVzKCkpLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgJHRoaXMuYWRkQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICBzZWxlY3RlZDMgPSBzZWxNb2RlID09PSAnc2luZ2xlJyA/IFtbaW5mby5yb3csIGluZm8uY29sXV0gOgogICAgICAgICAgICAgIHVuaXF1ZShzZWxlY3RlZDMuY29uY2F0KFtbaW5mby5yb3csIGluZm8uY29sXV0pKTsKICAgICAgICAgIH0KICAgICAgICAgIHNlbGVjdENlbGxzKGZhbHNlKTsgLy8gbXVzdCBjYWxsIHRoaXMgdG8gdXBkYXRlIHNlbGVjdGVkMyBiYXNlZCBvbiBzZWxlY3RhYmxlMwogICAgICAgICAgY2hhbmdlSW5wdXQoJ2NlbGxzX3NlbGVjdGVkJywgdHJhbnNwb3NlQXJyYXkyRChzZWxlY3RlZDMpLCAnc2hpbnkubWF0cml4Jyk7CiAgICAgICAgfSk7CiAgICAgICAgc2VsZWN0Q2VsbHMoZmFsc2UpOyAgLy8gaW4gY2FzZSB1c2VycyBoYXZlIHNwZWNpZmllZCBwcmUtc2VsZWN0ZWQgY29sdW1ucwogICAgICAgIGNoYW5nZUlucHV0KCdjZWxsc19zZWxlY3RlZCcsIHRyYW5zcG9zZUFycmF5MkQoc2VsZWN0ZWQzKSwgJ3NoaW55Lm1hdHJpeCcpOwoKICAgICAgICBpZiAoc2VydmVyKSB0YWJsZS5vbignZHJhdy5kdCcsIGZ1bmN0aW9uKGUpIHsgc2VsZWN0Q2VsbHMoZmFsc2UpOyB9KTsKICAgICAgICBtZXRob2RzLnNlbGVjdENlbGxzID0gZnVuY3Rpb24oc2VsZWN0ZWQsIGlnbm9yZVNlbGVjdGFibGUpIHsKICAgICAgICAgIHNlbGVjdGVkMyA9IHNlbGVjdGVkID8gc2VsZWN0ZWQgOiBbXTsKICAgICAgICAgIHNlbGVjdENlbGxzKGlnbm9yZVNlbGVjdGFibGUpOwogICAgICAgICAgY2hhbmdlSW5wdXQoJ2NlbGxzX3NlbGVjdGVkJywgdHJhbnNwb3NlQXJyYXkyRChzZWxlY3RlZDMpLCAnc2hpbnkubWF0cml4Jyk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8gZXhwb3NlIHNvbWUgdGFibGUgaW5mbyB0byBTaGlueQogICAgdmFyIHVwZGF0ZVRhYmxlSW5mbyA9IGZ1bmN0aW9uKGUsIHNldHRpbmdzKSB7CiAgICAgIC8vIFRPRE86IGlzIGFueW9uZSBpbnRlcmVzdGVkIGluIHRoZSBwYWdlIGluZm8/CiAgICAgIC8vIGNoYW5nZUlucHV0KCdwYWdlX2luZm8nLCB0YWJsZS5wYWdlLmluZm8oKSk7CiAgICAgIHZhciB1cGRhdGVSb3dJbmZvID0gZnVuY3Rpb24oaWQsIG1vZGlmaWVyKSB7CiAgICAgICAgdmFyIGlkeDsKICAgICAgICBpZiAoc2VydmVyKSB7CiAgICAgICAgICBpZHggPSBtb2RpZmllci5wYWdlID09PSAnY3VycmVudCcgPyBEVF9yb3dzX2N1cnJlbnQgOiBEVF9yb3dzX2FsbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIHJvd3MgPSB0YWJsZS5yb3dzKCQuZXh0ZW5kKHsKICAgICAgICAgICAgc2VhcmNoOiAnYXBwbGllZCcsCiAgICAgICAgICAgIHBhZ2U6ICdhbGwnCiAgICAgICAgICB9LCBtb2RpZmllcikpOwogICAgICAgICAgaWR4ID0gYWRkT25lKHJvd3MuaW5kZXhlcygpLnRvQXJyYXkoKSk7CiAgICAgICAgfQogICAgICAgIGNoYW5nZUlucHV0KCdyb3dzJyArICdfJyArIGlkLCBpZHgpOwogICAgICB9OwogICAgICB1cGRhdGVSb3dJbmZvKCdjdXJyZW50Jywge3BhZ2U6ICdjdXJyZW50J30pOwogICAgICB1cGRhdGVSb3dJbmZvKCdhbGwnLCB7fSk7CiAgICB9CiAgICB0YWJsZS5vbignZHJhdy5kdCcsIHVwZGF0ZVRhYmxlSW5mbyk7CiAgICB1cGRhdGVUYWJsZUluZm8oKTsKCiAgICAvLyBzdGF0ZSBpbmZvCiAgICB0YWJsZS5vbignZHJhdy5kdCBjb2x1bW4tdmlzaWJpbGl0eS5kdCcsIGZ1bmN0aW9uKCkgewogICAgICBjaGFuZ2VJbnB1dCgnc3RhdGUnLCB0YWJsZS5zdGF0ZSgpKTsKICAgIH0pOwogICAgY2hhbmdlSW5wdXQoJ3N0YXRlJywgdGFibGUuc3RhdGUoKSk7CgogICAgLy8gc2VhcmNoIGluZm8KICAgIHZhciB1cGRhdGVTZWFyY2hJbmZvID0gZnVuY3Rpb24oKSB7CiAgICAgIGNoYW5nZUlucHV0KCdzZWFyY2gnLCB0YWJsZS5zZWFyY2goKSk7CiAgICAgIGlmIChmaWx0ZXJSb3cpIGNoYW5nZUlucHV0KCdzZWFyY2hfY29sdW1ucycsIGZpbHRlclJvdy50b0FycmF5KCkubWFwKGZ1bmN0aW9uKHRkKSB7CiAgICAgICAgcmV0dXJuICQodGQpLmZpbmQoJ2lucHV0JykuZmlyc3QoKS52YWwoKTsKICAgICAgfSkpOwogICAgfQogICAgdGFibGUub24oJ2RyYXcuZHQnLCB1cGRhdGVTZWFyY2hJbmZvKTsKICAgIHVwZGF0ZVNlYXJjaEluZm8oKTsKCiAgICB2YXIgY2VsbEluZm8gPSBmdW5jdGlvbih0aGl6KSB7CiAgICAgIHZhciBpbmZvID0gdHdlYWtDZWxsSW5kZXgodGFibGUuY2VsbCh0aGl6KSk7CiAgICAgIGluZm8udmFsdWUgPSB0YWJsZS5jZWxsKHRoaXopLmRhdGEoKTsKICAgICAgcmV0dXJuIGluZm87CiAgICB9CiAgICAvLyB0aGUgY3VycmVudCBjZWxsIGNsaWNrZWQgb24KICAgIHRhYmxlLm9uKCdjbGljay5kdCcsICd0Ym9keSB0ZCcsIGZ1bmN0aW9uKCkgewogICAgICBjaGFuZ2VJbnB1dCgnY2VsbF9jbGlja2VkJywgY2VsbEluZm8odGhpcyksIG51bGwsIG51bGwsIHtwcmlvcml0eTogJ2V2ZW50J30pOwogICAgfSkKICAgIGNoYW5nZUlucHV0KCdjZWxsX2NsaWNrZWQnLCB7fSk7CgogICAgLy8gZG8gbm90IHRyaWdnZXIgdGFibGUgc2VsZWN0aW9uIHdoZW4gY2xpY2tpbmcgb24gbGlua3MgdW5sZXNzIHRoZXkgaGF2ZSBjbGFzc2VzCiAgICB0YWJsZS5vbignbW91c2Vkb3duLmR0JywgJ3Rib2R5IHRkIGEnLCBmdW5jdGlvbihlKSB7CiAgICAgIGlmICh0aGlzLmNsYXNzTmFtZSA9PT0gJycpIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICB9KTsKCiAgICBtZXRob2RzLmFkZFJvdyA9IGZ1bmN0aW9uKGRhdGEsIHJvd25hbWUsIHJlc2V0UGFnaW5nKSB7CiAgICAgIHZhciBuID0gdGFibGUuY29sdW1ucygpLmluZGV4ZXMoKS5sZW5ndGgsIGQgPSBuIC0gZGF0YS5sZW5ndGg7CiAgICAgIGlmIChkID09PSAxKSB7CiAgICAgICAgZGF0YSA9IHJvd25hbWUuY29uY2F0KGRhdGEpCiAgICAgIH0gZWxzZSBpZiAoZCAhPT0gMCkgewogICAgICAgIGNvbnNvbGUubG9nKGRhdGEpOwogICAgICAgIGNvbnNvbGUubG9nKHRhYmxlLmNvbHVtbnMoKS5pbmRleGVzKCkpOwogICAgICAgIHRocm93ICdOZXcgZGF0YSBtdXN0IGJlIG9mIHRoZSBzYW1lIGxlbmd0aCBhcyBjdXJyZW50IGRhdGEgKCcgKyBuICsgJyknOwogICAgICB9OwogICAgICB0YWJsZS5yb3cuYWRkKGRhdGEpLmRyYXcocmVzZXRQYWdpbmcpOwogICAgfQoKICAgIG1ldGhvZHMudXBkYXRlU2VhcmNoID0gZnVuY3Rpb24oa2V5d29yZHMpIHsKICAgICAgaWYgKGtleXdvcmRzLmdsb2JhbCAhPT0gbnVsbCkKICAgICAgICAkKHRhYmxlLnRhYmxlKCkuY29udGFpbmVyKCkpLmZpbmQoJ2lucHV0W3R5cGU9c2VhcmNoXScpLmZpcnN0KCkKICAgICAgICAgICAgIC52YWwoa2V5d29yZHMuZ2xvYmFsKS50cmlnZ2VyKCdpbnB1dCcpOwogICAgICB2YXIgY29sdW1ucyA9IGtleXdvcmRzLmNvbHVtbnM7CiAgICAgIGlmICghZmlsdGVyUm93IHx8IGNvbHVtbnMgPT09IG51bGwpIHJldHVybjsKICAgICAgZmlsdGVyUm93LnRvQXJyYXkoKS5tYXAoZnVuY3Rpb24odGQsIGkpIHsKICAgICAgICB2YXIgdiA9IHR5cGVvZiBjb2x1bW5zID09PSAnc3RyaW5nJyA/IGNvbHVtbnMgOiBjb2x1bW5zW2ldOwogICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKCdUaGUgc2VhcmNoIGtleXdvcmQgZm9yIGNvbHVtbiAnICsgaSArICcgaXMgdW5kZWZpbmVkJykKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgLy8gVXBkYXRlIGNvbHVtbiBzZWFyY2ggc3RyaW5nIGFuZCB2YWx1ZXMgb24gbGlua2VkIGZpbHRlciB3aWRnZXRzLgogICAgICAgIC8vICdpbnB1dCcgZm9yIGZhY3RvciBhbmQgY2hhciBmaWx0ZXJzLCAnY2hhbmdlJyBmb3IgbnVtZXJpYyBmaWx0ZXJzLgogICAgICAgICQodGQpLmZpbmQoJ2lucHV0JykuZmlyc3QoKS52YWwodikudHJpZ2dlcignaW5wdXQnLCBbdHJ1ZV0pLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICB9KTsKICAgICAgdGFibGUuZHJhdygpOwogICAgfQoKICAgIG1ldGhvZHMuaGlkZUNvbHMgPSBmdW5jdGlvbihoaWRlLCByZXNldCkgewogICAgICBpZiAocmVzZXQpIHRhYmxlLmNvbHVtbnMoKS52aXNpYmxlKHRydWUsIGZhbHNlKTsKICAgICAgdGFibGUuY29sdW1ucyhoaWRlKS52aXNpYmxlKGZhbHNlKTsKICAgIH0KCiAgICBtZXRob2RzLnNob3dDb2xzID0gZnVuY3Rpb24oc2hvdywgcmVzZXQpIHsKICAgICAgaWYgKHJlc2V0KSB0YWJsZS5jb2x1bW5zKCkudmlzaWJsZShmYWxzZSwgZmFsc2UpOwogICAgICB0YWJsZS5jb2x1bW5zKHNob3cpLnZpc2libGUodHJ1ZSk7CiAgICB9CgogICAgbWV0aG9kcy5jb2xSZW9yZGVyID0gZnVuY3Rpb24ob3JkZXIsIG9yaWdPcmRlcikgewogICAgICB0YWJsZS5jb2xSZW9yZGVyLm9yZGVyKG9yZGVyLCBvcmlnT3JkZXIpOwogICAgfQoKICAgIG1ldGhvZHMuc2VsZWN0UGFnZSA9IGZ1bmN0aW9uKHBhZ2UpIHsKICAgICAgaWYgKHRhYmxlLnBhZ2UuaW5mbygpLnBhZ2VzIDwgcGFnZSB8fCBwYWdlIDwgMSkgewogICAgICAgIHRocm93ICdTZWxlY3RlZCBwYWdlIGlzIG91dCBvZiByYW5nZSc7CiAgICAgIH07CiAgICAgIHRhYmxlLnBhZ2UocGFnZSAtIDEpLmRyYXcoZmFsc2UpOwogICAgfQoKICAgIG1ldGhvZHMucmVsb2FkRGF0YSA9IGZ1bmN0aW9uKHJlc2V0UGFnaW5nLCBjbGVhclNlbGVjdGlvbikgewogICAgICAvLyBlbXB0eSBzZWxlY3Rpb25zIGZpcnN0IGlmIG5lY2Vzc2FyeQogICAgICBpZiAobWV0aG9kcy5zZWxlY3RSb3dzICYmIGluQXJyYXkoJ3JvdycsIGNsZWFyU2VsZWN0aW9uKSkgbWV0aG9kcy5zZWxlY3RSb3dzKFtdKTsKICAgICAgaWYgKG1ldGhvZHMuc2VsZWN0Q29sdW1ucyAmJiBpbkFycmF5KCdjb2x1bW4nLCBjbGVhclNlbGVjdGlvbikpIG1ldGhvZHMuc2VsZWN0Q29sdW1ucyhbXSk7CiAgICAgIGlmIChtZXRob2RzLnNlbGVjdENlbGxzICYmIGluQXJyYXkoJ2NlbGwnLCBjbGVhclNlbGVjdGlvbikpIG1ldGhvZHMuc2VsZWN0Q2VsbHMoW10pOwogICAgICB0YWJsZS5hamF4LnJlbG9hZChudWxsLCByZXNldFBhZ2luZyk7CiAgICB9CgogICAgLy8gdXBkYXRlIHRhYmxlIGZpbHRlcnMgKHNldCBuZXcgbGltaXRzIG9mIHNsaWRlcnMpCiAgICBtZXRob2RzLnVwZGF0ZUZpbHRlcnMgPSBmdW5jdGlvbihuZXdQcm9wcykgewogICAgICAvLyBsb29wIHRocm91Z2ggZWFjaCBmaWx0ZXIgaW4gdGhlIGZpbHRlciByb3cKICAgICAgZmlsdGVyUm93LmVhY2goZnVuY3Rpb24oaSwgdGQpIHsKICAgICAgICB2YXIgayA9IGk7CiAgICAgICAgaWYgKGZpbHRlclJvdy5sZW5ndGggPiBuZXdQcm9wcy5sZW5ndGgpIHsKICAgICAgICAgIGlmIChpID09PSAwKSByZXR1cm47ICAvLyBmaXJzdCBjb2x1bW4gaXMgcm93IG5hbWVzCiAgICAgICAgICBrID0gaSAtIDE7CiAgICAgICAgfQogICAgICAgIC8vIFVwZGF0ZSB0aGUgZmlsdGVycyB0byByZWZsZWN0IHRoZSB1cGRhdGVkIGRhdGEuCiAgICAgICAgLy8gQWxsb3cgImZhbHN5IiAoZS5nLiBOVUxMKSB0byBzaWduaWZ5IGEgbm8tb3AuCiAgICAgICAgaWYgKG5ld1Byb3BzW2tdKSB7CiAgICAgICAgICBzZXRGaWx0ZXJQcm9wcyh0ZCwgbmV3UHJvcHNba10pOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9OwoKICAgIHRhYmxlLnNoaW55TWV0aG9kcyA9IG1ldGhvZHM7CiAgfSwKICByZXNpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0LCBpbnN0YW5jZSkgewogICAgaWYgKGluc3RhbmNlLmRhdGEpIHRoaXMucmVuZGVyVmFsdWUoZWwsIGluc3RhbmNlLmRhdGEsIGluc3RhbmNlKTsKCiAgICAvLyBkeW5hbWljYWxseSBhZGp1c3QgaGVpZ2h0IGlmIGZpbGxDb250YWluZXIgPSBUUlVFCiAgICBpZiAoaW5zdGFuY2UuZmlsbENvbnRhaW5lcikKICAgICAgdGhpcy5maWxsQXZhaWxhYmxlSGVpZ2h0KGVsLCBoZWlnaHQpOwoKICAgIHRoaXMuYWRqdXN0V2lkdGgoZWwpOwogIH0sCgogIC8vIGR5bmFtaWNhbGx5IHNldCB0aGUgc2Nyb2xsIGJvZHkgdG8gZmlsbCBhdmFpbGFibGUgaGVpZ2h0CiAgLy8gKHVzZWQgd2l0aCBmaWxsQ29udGFpbmVyID0gVFJVRSkKICBmaWxsQXZhaWxhYmxlSGVpZ2h0OiBmdW5jdGlvbihlbCwgYXZhaWxhYmxlSGVpZ2h0KSB7CgogICAgLy8gc2VlIGhvdyBtdWNoIG9mIHRoZSB0YWJsZSBpcyBvY2N1cGllZCBieSBoZWFkZXIvZm9vdGVyIGVsZW1lbnRzCiAgICAvLyBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSBhIHRhcmdldCBzY3JvbGwgYm9keSBoZWlnaHQKICAgIHZhciBkdFdyYXBwZXIgPSAkKGVsKS5maW5kKCdkaXYuZGF0YVRhYmxlc193cmFwcGVyJyk7CiAgICB2YXIgZHRTY3JvbGxCb2R5ID0gJChlbCkuZmluZCgkKCdkaXYuZGF0YVRhYmxlc19zY3JvbGxCb2R5JykpOwogICAgdmFyIGZyYW1pbmdIZWlnaHQgPSBkdFdyYXBwZXIuaW5uZXJIZWlnaHQoKSAtIGR0U2Nyb2xsQm9keS5pbm5lckhlaWdodCgpOwogICAgdmFyIHNjcm9sbEJvZHlIZWlnaHQgPSBhdmFpbGFibGVIZWlnaHQgLSBmcmFtaW5nSGVpZ2h0OwoKICAgIC8vIHdlIG5lZWQgdG8gc2V0IGBtYXgtaGVpZ2h0YCB0byBub25lIGFzIGRhdGF0YWJsZXMgbGlicmFyeSBub3cgc2V0cyB0aGlzCiAgICAvLyB0byBhIGZpeGVkIGhlaWdodCwgZGlzYWJsaW5nIHRoZSBhYmlsaXR5IHRvIHJlc2l6ZSB0byBmaWxsIHRoZSB3aW5kb3csCiAgICAvLyBhcyBpdCB3aWxsIGJlIHNldCB0byBhIGZpeGVkIDEwMHB4IHVuZGVyIHN1Y2ggY2lyY3Vtc3RhbmNlcywgZS5nLiwgUlN0dWRpbyBJREUsCiAgICAvLyBvciBGbGV4RGFzaGJvYXJkCiAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3JzdHVkaW8vRFQvaXNzdWVzLzk1MSNpc3N1ZWNvbW1lbnQtMTAyNjQ2NDUwOQogICAgZHRTY3JvbGxCb2R5LmNzcygnbWF4LWhlaWdodCcsICdub25lJyk7CiAgICAvLyBzZXQgdGhlIGhlaWdodAogICAgZHRTY3JvbGxCb2R5LmhlaWdodChzY3JvbGxCb2R5SGVpZ2h0ICsgJ3B4Jyk7CiAgfSwKCiAgLy8gYWRqdXN0IHRoZSB3aWR0aCBvZiBjb2x1bW5zOyByZW1vdmUgdGhlIGhhcmQtY29kZWQgd2lkdGhzIG9uIHRhYmxlIGFuZCB0aGUKICAvLyBzY3JvbGwgaGVhZGVyIHdoZW4gc2Nyb2xsWC9ZIGFyZSBlbmFibGVkCiAgYWRqdXN0V2lkdGg6IGZ1bmN0aW9uKGVsKSB7CiAgICB2YXIgJGVsID0gJChlbCksIHRhYmxlID0gJGVsLmRhdGEoJ2RhdGF0YWJsZScpOwogICAgaWYgKHRhYmxlKSB0YWJsZS5jb2x1bW5zLmFkanVzdCgpOwogICAgJGVsLmZpbmQoJy5kYXRhVGFibGVzX3Njcm9sbEhlYWRJbm5lcicpLmNzcygnd2lkdGgnLCAnJykKICAgICAgICAuY2hpbGRyZW4oJ3RhYmxlJykuY3NzKCdtYXJnaW4tbGVmdCcsICcnKTsKICB9Cn0pOwoKICBpZiAoIUhUTUxXaWRnZXRzLnNoaW55TW9kZSkgcmV0dXJuOwoKICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcignZGF0YXRhYmxlLWNhbGxzJywgZnVuY3Rpb24oZGF0YSkgewogICAgdmFyIGlkID0gZGF0YS5pZDsKICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAgIHZhciB0YWJsZSA9IGVsID8gJChlbCkuZGF0YSgnZGF0YXRhYmxlJykgOiBudWxsOwogICAgaWYgKCF0YWJsZSkgewogICAgICBjb25zb2xlLmxvZygiQ291bGRuJ3QgZmluZCB0YWJsZSB3aXRoIGlkICIgKyBpZCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgbWV0aG9kcyA9IHRhYmxlLnNoaW55TWV0aG9kcywgY2FsbCA9IGRhdGEuY2FsbDsKICAgIGlmIChtZXRob2RzW2NhbGwubWV0aG9kXSkgewogICAgICBtZXRob2RzW2NhbGwubWV0aG9kXS5hcHBseSh0YWJsZSwgY2FsbC5hcmdzKTsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnNvbGUubG9nKCJVbmtub3duIG1ldGhvZCAiICsgY2FsbC5tZXRob2QpOwogICAgfQogIH0pOwoKfSkoKTsK"></script>
<script src="data:application/javascript;base64,LyohIGpRdWVyeSB2My42LjAgfCAoYykgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwohZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZS5kb2N1bWVudD90KGUsITApOmZ1bmN0aW9uKGUpe2lmKCFlLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiB0KGUpfTp0KGUpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihDLGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1bXSxyPU9iamVjdC5nZXRQcm90b3R5cGVPZixzPXQuc2xpY2UsZz10LmZsYXQ/ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZmxhdC5jYWxsKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gdC5jb25jYXQuYXBwbHkoW10sZSl9LHU9dC5wdXNoLGk9dC5pbmRleE9mLG49e30sbz1uLnRvU3RyaW5nLHY9bi5oYXNPd25Qcm9wZXJ0eSxhPXYudG9TdHJpbmcsbD1hLmNhbGwoT2JqZWN0KSx5PXt9LG09ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJudW1iZXIiIT10eXBlb2YgZS5ub2RlVHlwZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUuaXRlbX0seD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmZT09PWUud2luZG93fSxFPUMuZG9jdW1lbnQsYz17dHlwZTohMCxzcmM6ITAsbm9uY2U6ITAsbm9Nb2R1bGU6ITB9O2Z1bmN0aW9uIGIoZSx0LG4pe3ZhciByLGksbz0obj1ufHxFKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtpZihvLnRleHQ9ZSx0KWZvcihyIGluIGMpKGk9dFtyXXx8dC5nZXRBdHRyaWJ1dGUmJnQuZ2V0QXR0cmlidXRlKHIpKSYmby5zZXRBdHRyaWJ1dGUocixpKTtuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1mdW5jdGlvbiB3KGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZT9uW28uY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBlfXZhciBmPSIzLjYuMCIsUz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgUy5mbi5pbml0KGUsdCl9O2Z1bmN0aW9uIHAoZSl7dmFyIHQ9ISFlJiYibGVuZ3RoImluIGUmJmUubGVuZ3RoLG49dyhlKTtyZXR1cm4hbShlKSYmIXgoZSkmJigiYXJyYXkiPT09bnx8MD09PXR8fCJudW1iZXIiPT10eXBlb2YgdCYmMDx0JiZ0LTEgaW4gZSl9Uy5mbj1TLnByb3RvdHlwZT17anF1ZXJ5OmYsY29uc3RydWN0b3I6UyxsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHMuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3MuY2FsbCh0aGlzKTplPDA/dGhpc1tlK3RoaXMubGVuZ3RoXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9Uy5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10aGlzLHR9LGVhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIFMuZWFjaCh0aGlzLGUpfSxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMubWFwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5jYWxsKGUsdCxlKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2socy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxldmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQrMSklMn0pKX0sb2RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQlMn0pKX0sZXE6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZW5ndGgsbj0rZSsoZTwwP3Q6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKDA8PW4mJm48dD9bdGhpc1tuXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6dSxzb3J0OnQuc29ydCxzcGxpY2U6dC5zcGxpY2V9LFMuZXh0ZW5kPVMuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaSxvLGE9YXJndW1lbnRzWzBdfHx7fSxzPTEsdT1hcmd1bWVudHMubGVuZ3RoLGw9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGEmJihsPWEsYT1hcmd1bWVudHNbc118fHt9LHMrKyksIm9iamVjdCI9PXR5cGVvZiBhfHxtKGEpfHwoYT17fSkscz09PXUmJihhPXRoaXMscy0tKTtzPHU7cysrKWlmKG51bGwhPShlPWFyZ3VtZW50c1tzXSkpZm9yKHQgaW4gZSlyPWVbdF0sIl9fcHJvdG9fXyIhPT10JiZhIT09ciYmKGwmJnImJihTLmlzUGxhaW5PYmplY3Qocil8fChpPUFycmF5LmlzQXJyYXkocikpKT8obj1hW3RdLG89aSYmIUFycmF5LmlzQXJyYXkobik/W106aXx8Uy5pc1BsYWluT2JqZWN0KG4pP246e30saT0hMSxhW3RdPVMuZXh0ZW5kKGwsbyxyKSk6dm9pZCAwIT09ciYmKGFbdF09cikpO3JldHVybiBhfSxTLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisoZitNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihlKX0sbm9vcDpmdW5jdGlvbigpe30saXNQbGFpbk9iamVjdDpmdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiEoIWV8fCJbb2JqZWN0IE9iamVjdF0iIT09by5jYWxsKGUpKSYmKCEodD1yKGUpKXx8ImZ1bmN0aW9uIj09dHlwZW9mKG49di5jYWxsKHQsImNvbnN0cnVjdG9yIikmJnQuY29uc3RydWN0b3IpJiZhLmNhbGwobik9PT1sKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlKXJldHVybiExO3JldHVybiEwfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGUsdCxuKXtiKGUse25vbmNlOnQmJnQubm9uY2V9LG4pfSxlYWNoOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wO2lmKHAoZSkpe2ZvcihuPWUubGVuZ3RoO3I8bjtyKyspaWYoITE9PT10LmNhbGwoZVtyXSxyLGVbcl0pKWJyZWFrfWVsc2UgZm9yKHIgaW4gZSlpZighMT09PXQuY2FsbChlW3JdLHIsZVtyXSkpYnJlYWs7cmV0dXJuIGV9LG1ha2VBcnJheTpmdW5jdGlvbihlLHQpe3ZhciBuPXR8fFtdO3JldHVybiBudWxsIT1lJiYocChPYmplY3QoZSkpP1MubWVyZ2Uobiwic3RyaW5nIj09dHlwZW9mIGU/W2VdOmUpOnUuY2FsbChuLGUpKSxufSxpbkFycmF5OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09dD8tMTppLmNhbGwodCxlLG4pfSxtZXJnZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0rdC5sZW5ndGgscj0wLGk9ZS5sZW5ndGg7cjxuO3IrKyllW2krK109dFtyXTtyZXR1cm4gZS5sZW5ndGg9aSxlfSxncmVwOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9W10saT0wLG89ZS5sZW5ndGgsYT0hbjtpPG87aSsrKSF0KGVbaV0saSkhPT1hJiZyLnB1c2goZVtpXSk7cmV0dXJuIHJ9LG1hcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPTAsYT1bXTtpZihwKGUpKWZvcihyPWUubGVuZ3RoO288cjtvKyspbnVsbCE9KGk9dChlW29dLG8sbikpJiZhLnB1c2goaSk7ZWxzZSBmb3IobyBpbiBlKW51bGwhPShpPXQoZVtvXSxvLG4pKSYmYS5wdXNoKGkpO3JldHVybiBnKGEpfSxndWlkOjEsc3VwcG9ydDp5fSksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKFMuZm5bU3ltYm9sLml0ZXJhdG9yXT10W1N5bWJvbC5pdGVyYXRvcl0pLFMuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksZnVuY3Rpb24oZSx0KXtuWyJbb2JqZWN0ICIrdCsiXSJdPXQudG9Mb3dlckNhc2UoKX0pO3ZhciBkPWZ1bmN0aW9uKG4pe3ZhciBlLGQsYixvLGksaCxmLGcsdyx1LGwsVCxDLGEsRSx2LHMsYyx5LFM9InNpenpsZSIrMSpuZXcgRGF0ZSxwPW4uZG9jdW1lbnQsaz0wLHI9MCxtPXVlKCkseD11ZSgpLEE9dWUoKSxOPXVlKCksaj1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dCYmKGw9ITApLDB9LEQ9e30uaGFzT3duUHJvcGVydHksdD1bXSxxPXQucG9wLEw9dC5wdXNoLEg9dC5wdXNoLE89dC5zbGljZSxQPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKGVbbl09PT10KXJldHVybiBuO3JldHVybi0xfSxSPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsTT0iW1xceDIwXFx0XFxyXFxuXFxmXSIsST0iKD86XFxcXFtcXGRhLWZBLUZdezEsNn0iK00rIj98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15cMC1cXHg3Zl0pKyIsVz0iXFxbIitNKyIqKCIrSSsiKSg/OiIrTSsiKihbKl4kfCF+XT89KSIrTSsiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiK0krIikpfCkiK00rIipcXF0iLEY9IjooIitJKyIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitXKyIpKil8LiopXFwpfCkiLEI9bmV3IFJlZ0V4cChNKyIrIiwiZyIpLCQ9bmV3IFJlZ0V4cCgiXiIrTSsiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitNKyIrJCIsImciKSxfPW5ldyBSZWdFeHAoIl4iK00rIiosIitNKyIqIiksej1uZXcgUmVnRXhwKCJeIitNKyIqKFs+K35dfCIrTSsiKSIrTSsiKiIpLFU9bmV3IFJlZ0V4cChNKyJ8PiIpLFg9bmV3IFJlZ0V4cChGKSxWPW5ldyBSZWdFeHAoIl4iK0krIiQiKSxHPXtJRDpuZXcgUmVnRXhwKCJeIygiK0krIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrSSsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrSSsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK1cpLFBTRVVETzpuZXcgUmVnRXhwKCJeIitGKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK00rIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiK00rIiooPzooWystXXwpIitNKyIqKFxcZCspfCkpIitNKyIqXFwpfCkiLCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86IitSKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cCgiXiIrTSsiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIitNKyIqKCg/Oi1cXGQpP1xcZCopIitNKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxZPS9IVE1MJC9pLFE9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxKPS9eaFxkJC9pLEs9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLFo9L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxlZT0vWyt+XS8sdGU9bmV3IFJlZ0V4cCgiXFxcXFtcXGRhLWZBLUZdezEsNn0iK00rIj98XFxcXChbXlxcclxcblxcZl0pIiwiZyIpLG5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49IjB4IitlLnNsaWNlKDEpLTY1NTM2O3JldHVybiB0fHwobjwwP1N0cmluZy5mcm9tQ2hhckNvZGUobis2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShuPj4xMHw1NTI5NiwxMDIzJm58NTYzMjApKX0scmU9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZGRkZcdy1dL2csaWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iXDAiPT09ZT8iXHVmZmZkIjplLnNsaWNlKDAsLTEpKyJcXCIrZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIitlfSxvZT1mdW5jdGlvbigpe1QoKX0sYWU9YmUoZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lLmRpc2FibGVkJiYiZmllbGRzZXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e0guYXBwbHkodD1PLmNhbGwocC5jaGlsZE5vZGVzKSxwLmNoaWxkTm9kZXMpLHRbcC5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZSl7SD17YXBwbHk6dC5sZW5ndGg/ZnVuY3Rpb24oZSx0KXtMLmFwcGx5KGUsTy5jYWxsKHQpKX06ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aCxyPTA7d2hpbGUoZVtuKytdPXRbcisrXSk7ZS5sZW5ndGg9bi0xfX19ZnVuY3Rpb24gc2UodCxlLG4scil7dmFyIGksbyxhLHMsdSxsLGMsZj1lJiZlLm93bmVyRG9jdW1lbnQscD1lP2Uubm9kZVR5cGU6OTtpZihuPW58fFtdLCJzdHJpbmciIT10eXBlb2YgdHx8IXR8fDEhPT1wJiY5IT09cCYmMTEhPT1wKXJldHVybiBuO2lmKCFyJiYoVChlKSxlPWV8fEMsRSkpe2lmKDExIT09cCYmKHU9Wi5leGVjKHQpKSlpZihpPXVbMV0pe2lmKDk9PT1wKXtpZighKGE9ZS5nZXRFbGVtZW50QnlJZChpKSkpcmV0dXJuIG47aWYoYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2UgaWYoZiYmKGE9Zi5nZXRFbGVtZW50QnlJZChpKSkmJnkoZSxhKSYmYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2V7aWYodVsyXSlyZXR1cm4gSC5hcHBseShuLGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCkpLG47aWYoKGk9dVszXSkmJmQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBILmFwcGx5KG4sZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGkpKSxufWlmKGQucXNhJiYhTlt0KyIgIl0mJighdnx8IXYudGVzdCh0KSkmJigxIT09cHx8Im9iamVjdCIhPT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKXtpZihjPXQsZj1lLDE9PT1wJiYoVS50ZXN0KHQpfHx6LnRlc3QodCkpKXsoZj1lZS50ZXN0KHQpJiZ5ZShlLnBhcmVudE5vZGUpfHxlKT09PWUmJmQuc2NvcGV8fCgocz1lLmdldEF0dHJpYnV0ZSgiaWQiKSk/cz1zLnJlcGxhY2UocmUsaWUpOmUuc2V0QXR0cmlidXRlKCJpZCIscz1TKSksbz0obD1oKHQpKS5sZW5ndGg7d2hpbGUoby0tKWxbb109KHM/IiMiK3M6IjpzY29wZSIpKyIgIit4ZShsW29dKTtjPWwuam9pbigiLCIpfXRyeXtyZXR1cm4gSC5hcHBseShuLGYucXVlcnlTZWxlY3RvckFsbChjKSksbn1jYXRjaChlKXtOKHQsITApfWZpbmFsbHl7cz09PVMmJmUucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGcodC5yZXBsYWNlKCQsIiQxIiksZSxuLHIpfWZ1bmN0aW9uIHVlKCl7dmFyIHI9W107cmV0dXJuIGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gci5wdXNoKHQrIiAiKT5iLmNhY2hlTGVuZ3RoJiZkZWxldGUgZVtyLnNoaWZ0KCldLGVbdCsiICJdPW59fWZ1bmN0aW9uIGxlKGUpe3JldHVybiBlW1NdPSEwLGV9ZnVuY3Rpb24gY2UoZSl7dmFyIHQ9Qy5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpO3RyeXtyZXR1cm4hIWUodCl9Y2F0Y2goZSl7cmV0dXJuITF9ZmluYWxseXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0PW51bGx9fWZ1bmN0aW9uIGZlKGUsdCl7dmFyIG49ZS5zcGxpdCgifCIpLHI9bi5sZW5ndGg7d2hpbGUoci0tKWIuYXR0ckhhbmRsZVtuW3JdXT10fWZ1bmN0aW9uIHBlKGUsdCl7dmFyIG49dCYmZSxyPW4mJjE9PT1lLm5vZGVUeXBlJiYxPT09dC5ub2RlVHlwZSYmZS5zb3VyY2VJbmRleC10LnNvdXJjZUluZGV4O2lmKHIpcmV0dXJuIHI7aWYobil3aGlsZShuPW4ubmV4dFNpYmxpbmcpaWYobj09PXQpcmV0dXJuLTE7cmV0dXJuIGU/MTotMX1mdW5jdGlvbiBkZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZS50eXBlPT09dH19ZnVuY3Rpb24gaGUobil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PXR8fCJidXR0b24iPT09dCkmJmUudHlwZT09PW59fWZ1bmN0aW9uIGdlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4iZm9ybSJpbiBlP2UucGFyZW50Tm9kZSYmITE9PT1lLmRpc2FibGVkPyJsYWJlbCJpbiBlPyJsYWJlbCJpbiBlLnBhcmVudE5vZGU/ZS5wYXJlbnROb2RlLmRpc2FibGVkPT09dDplLmRpc2FibGVkPT09dDplLmlzRGlzYWJsZWQ9PT10fHxlLmlzRGlzYWJsZWQhPT0hdCYmYWUoZSk9PT10OmUuZGlzYWJsZWQ9PT10OiJsYWJlbCJpbiBlJiZlLmRpc2FibGVkPT09dH19ZnVuY3Rpb24gdmUoYSl7cmV0dXJuIGxlKGZ1bmN0aW9uKG8pe3JldHVybiBvPStvLGxlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKFtdLGUubGVuZ3RoLG8pLGk9ci5sZW5ndGg7d2hpbGUoaS0tKWVbbj1yW2ldXSYmKGVbbl09ISh0W25dPWVbbl0pKX0pfSl9ZnVuY3Rpb24geWUoZSl7cmV0dXJuIGUmJiJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSYmZX1mb3IoZSBpbiBkPXNlLnN1cHBvcnQ9e30saT1zZS5pc1hNTD1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLm5hbWVzcGFjZVVSSSxuPWUmJihlLm93bmVyRG9jdW1lbnR8fGUpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4hWS50ZXN0KHR8fG4mJm4ubm9kZU5hbWV8fCJIVE1MIil9LFQ9c2Uuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWU/ZS5vd25lckRvY3VtZW50fHxlOnA7cmV0dXJuIHIhPUMmJjk9PT1yLm5vZGVUeXBlJiZyLmRvY3VtZW50RWxlbWVudCYmKGE9KEM9cikuZG9jdW1lbnRFbGVtZW50LEU9IWkoQykscCE9QyYmKG49Qy5kZWZhdWx0VmlldykmJm4udG9wIT09biYmKG4uYWRkRXZlbnRMaXN0ZW5lcj9uLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsb2UsITEpOm4uYXR0YWNoRXZlbnQmJm4uYXR0YWNoRXZlbnQoIm9udW5sb2FkIixvZSkpLGQuc2NvcGU9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQoQy5jcmVhdGVFbGVtZW50KCJkaXYiKSksInVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGwmJiFlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpzY29wZSBmaWVsZHNldCBkaXYiKS5sZW5ndGh9KSxkLmF0dHJpYnV0ZXM9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xhc3NOYW1lPSJpIiwhZS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksZC5nZXRFbGVtZW50c0J5VGFnTmFtZT1jZShmdW5jdGlvbihlKXtyZXR1cm4gZS5hcHBlbmRDaGlsZChDLmNyZWF0ZUNvbW1lbnQoIiIpKSwhZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1LLnRlc3QoQy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxkLmdldEJ5SWQ9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuaWQ9UywhQy5nZXRFbGVtZW50c0J5TmFtZXx8IUMuZ2V0RWxlbWVudHNCeU5hbWUoUykubGVuZ3RofSksZC5nZXRCeUlkPyhiLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UodGUsbmUpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImlkIik9PT10fX0sYi5maW5kLklEPWZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRCeUlkJiZFKXt2YXIgbj10LmdldEVsZW1lbnRCeUlkKGUpO3JldHVybiBuP1tuXTpbXX19KTooYi5maWx0ZXIuSUQ9ZnVuY3Rpb24oZSl7dmFyIG49ZS5yZXBsYWNlKHRlLG5lKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEF0dHJpYnV0ZU5vZGUmJmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gdCYmdC52YWx1ZT09PW59fSxiLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkUpe3ZhciBuLHIsaSxvPXQuZ2V0RWxlbWVudEJ5SWQoZSk7aWYobyl7aWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dO2k9dC5nZXRFbGVtZW50c0J5TmFtZShlKSxyPTA7d2hpbGUobz1pW3IrK10paWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dfXJldHVybltdfX0pLGIuZmluZC5UQUc9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihlLHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50c0J5VGFnTmFtZT90LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpOmQucXNhP3QucXVlcnlTZWxlY3RvckFsbChlKTp2b2lkIDB9OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPTAsbz10LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpO2lmKCIqIj09PWUpe3doaWxlKG49b1tpKytdKTE9PT1uLm5vZGVUeXBlJiZyLnB1c2gobik7cmV0dXJuIHJ9cmV0dXJuIG99LGIuZmluZC5DTEFTUz1kLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJkUpcmV0dXJuIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKX0scz1bXSx2PVtdLChkLnFzYT1LLnRlc3QoQy5xdWVyeVNlbGVjdG9yQWxsKSkmJihjZShmdW5jdGlvbihlKXt2YXIgdDthLmFwcGVuZENoaWxkKGUpLmlubmVySFRNTD0iPGEgaWQ9JyIrUysiJz48L2E+PHNlbGVjdCBpZD0nIitTKyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGUucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJnYucHVzaCgiWypeJF09IitNKyIqKD86Jyd8XCJcIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHYucHVzaCgiXFxbIitNKyIqKD86dmFsdWV8IitSKyIpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrUysiLV0iKS5sZW5ndGh8fHYucHVzaCgifj0iKSwodD1DLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgibmFtZSIsIiIpLGUuYXBwZW5kQ2hpbGQodCksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT0nJ10iKS5sZW5ndGh8fHYucHVzaCgiXFxbIitNKyIqbmFtZSIrTSsiKj0iK00rIiooPzonJ3xcIlwiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHYucHVzaCgiOmNoZWNrZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIitTKyIrKiIpLmxlbmd0aHx8di5wdXNoKCIuIy4rWyt+XSIpLGUucXVlcnlTZWxlY3RvckFsbCgiXFxcZiIpLHYucHVzaCgiW1xcclxcblxcZl0iKX0pLGNlKGZ1bmN0aW9uKGUpe2UuaW5uZXJIVE1MPSI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iO3ZhciB0PUMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTt0LnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGUuYXBwZW5kQ2hpbGQodCkuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGUucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGgmJnYucHVzaCgibmFtZSIrTSsiKlsqXiR8IX5dPz0iKSwyIT09ZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCYmdi5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGEuYXBwZW5kQ2hpbGQoZSkuZGlzYWJsZWQ9ITAsMiE9PWUucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZ2LnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4Iiksdi5wdXNoKCIsLio6Iil9KSksKGQubWF0Y2hlc1NlbGVjdG9yPUsudGVzdChjPWEubWF0Y2hlc3x8YS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLm9NYXRjaGVzU2VsZWN0b3J8fGEubXNNYXRjaGVzU2VsZWN0b3IpKSYmY2UoZnVuY3Rpb24oZSl7ZC5kaXNjb25uZWN0ZWRNYXRjaD1jLmNhbGwoZSwiKiIpLGMuY2FsbChlLCJbcyE9JyddOngiKSxzLnB1c2goIiE9IixGKX0pLHY9di5sZW5ndGgmJm5ldyBSZWdFeHAodi5qb2luKCJ8IikpLHM9cy5sZW5ndGgmJm5ldyBSZWdFeHAocy5qb2luKCJ8IikpLHQ9Sy50ZXN0KGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHk9dHx8Sy50ZXN0KGEuY29udGFpbnMpP2Z1bmN0aW9uKGUsdCl7dmFyIG49OT09PWUubm9kZVR5cGU/ZS5kb2N1bWVudEVsZW1lbnQ6ZSxyPXQmJnQucGFyZW50Tm9kZTtyZXR1cm4gZT09PXJ8fCEoIXJ8fDEhPT1yLm5vZGVUeXBlfHwhKG4uY29udGFpbnM/bi5jb250YWlucyhyKTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpKSl9OmZ1bmN0aW9uKGUsdCl7aWYodCl3aGlsZSh0PXQucGFyZW50Tm9kZSlpZih0PT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0saj10P2Z1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGw9ITAsMDt2YXIgbj0hZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gbnx8KDEmKG49KGUub3duZXJEb2N1bWVudHx8ZSk9PSh0Lm93bmVyRG9jdW1lbnR8fHQpP2UuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCk6MSl8fCFkLnNvcnREZXRhY2hlZCYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKT09PW4/ZT09Q3x8ZS5vd25lckRvY3VtZW50PT1wJiZ5KHAsZSk/LTE6dD09Q3x8dC5vd25lckRvY3VtZW50PT1wJiZ5KHAsdCk/MTp1P1AodSxlKS1QKHUsdCk6MDo0Jm4/LTE6MSl9OmZ1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGw9ITAsMDt2YXIgbixyPTAsaT1lLnBhcmVudE5vZGUsbz10LnBhcmVudE5vZGUsYT1bZV0scz1bdF07aWYoIWl8fCFvKXJldHVybiBlPT1DPy0xOnQ9PUM/MTppPy0xOm8/MTp1P1AodSxlKS1QKHUsdCk6MDtpZihpPT09bylyZXR1cm4gcGUoZSx0KTtuPWU7d2hpbGUobj1uLnBhcmVudE5vZGUpYS51bnNoaWZ0KG4pO249dDt3aGlsZShuPW4ucGFyZW50Tm9kZSlzLnVuc2hpZnQobik7d2hpbGUoYVtyXT09PXNbcl0pcisrO3JldHVybiByP3BlKGFbcl0sc1tyXSk6YVtyXT09cD8tMTpzW3JdPT1wPzE6MH0pLEN9LHNlLm1hdGNoZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gc2UoZSxudWxsLG51bGwsdCl9LHNlLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihlLHQpe2lmKFQoZSksZC5tYXRjaGVzU2VsZWN0b3ImJkUmJiFOW3QrIiAiXSYmKCFzfHwhcy50ZXN0KHQpKSYmKCF2fHwhdi50ZXN0KHQpKSl0cnl7dmFyIG49Yy5jYWxsKGUsdCk7aWYobnx8ZC5kaXNjb25uZWN0ZWRNYXRjaHx8ZS5kb2N1bWVudCYmMTEhPT1lLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBufWNhdGNoKGUpe04odCwhMCl9cmV0dXJuIDA8c2UodCxDLG51bGwsW2VdKS5sZW5ndGh9LHNlLmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGUub3duZXJEb2N1bWVudHx8ZSkhPUMmJlQoZSkseShlLHQpfSxzZS5hdHRyPWZ1bmN0aW9uKGUsdCl7KGUub3duZXJEb2N1bWVudHx8ZSkhPUMmJlQoZSk7dmFyIG49Yi5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0scj1uJiZELmNhbGwoYi5hdHRySGFuZGxlLHQudG9Mb3dlckNhc2UoKSk/bihlLHQsIUUpOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09cj9yOmQuYXR0cmlidXRlc3x8IUU/ZS5nZXRBdHRyaWJ1dGUodCk6KHI9ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSYmci5zcGVjaWZpZWQ/ci52YWx1ZTpudWxsfSxzZS5lc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGUrIiIpLnJlcGxhY2UocmUsaWUpfSxzZS5lcnJvcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrZSl9LHNlLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj1bXSxyPTAsaT0wO2lmKGw9IWQuZGV0ZWN0RHVwbGljYXRlcyx1PSFkLnNvcnRTdGFibGUmJmUuc2xpY2UoMCksZS5zb3J0KGopLGwpe3doaWxlKHQ9ZVtpKytdKXQ9PT1lW2ldJiYocj1uLnB1c2goaSkpO3doaWxlKHItLSllLnNwbGljZShuW3JdLDEpfXJldHVybiB1PW51bGwsZX0sbz1zZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe3ZhciB0LG49IiIscj0wLGk9ZS5ub2RlVHlwZTtpZihpKXtpZigxPT09aXx8OT09PWl8fDExPT09aSl7aWYoInN0cmluZyI9PXR5cGVvZiBlLnRleHRDb250ZW50KXJldHVybiBlLnRleHRDb250ZW50O2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZyluKz1vKGUpfWVsc2UgaWYoMz09PWl8fDQ9PT1pKXJldHVybiBlLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKHQ9ZVtyKytdKW4rPW8odCk7cmV0dXJuIG59LChiPXNlLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmxlLG1hdGNoOkcsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0ucmVwbGFjZSh0ZSxuZSksZVszXT0oZVszXXx8ZVs0XXx8ZVs1XXx8IiIpLnJlcGxhY2UodGUsbmUpLCJ+PSI9PT1lWzJdJiYoZVszXT0iICIrZVszXSsiICIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09ZVsxXS5zbGljZSgwLDMpPyhlWzNdfHxzZS5lcnJvcihlWzBdKSxlWzRdPSsoZVs0XT9lWzVdKyhlWzZdfHwxKToyKigiZXZlbiI9PT1lWzNdfHwib2RkIj09PWVbM10pKSxlWzVdPSsoZVs3XStlWzhdfHwib2RkIj09PWVbM10pKTplWzNdJiZzZS5lcnJvcihlWzBdKSxlfSxQU0VVRE86ZnVuY3Rpb24oZSl7dmFyIHQsbj0hZVs2XSYmZVsyXTtyZXR1cm4gRy5DSElMRC50ZXN0KGVbMF0pP251bGw6KGVbM10/ZVsyXT1lWzRdfHxlWzVdfHwiIjpuJiZYLnRlc3QobikmJih0PWgobiwhMCkpJiYodD1uLmluZGV4T2YoIikiLG4ubGVuZ3RoLXQpLW4ubGVuZ3RoKSYmKGVbMF09ZVswXS5zbGljZSgwLHQpLGVbMl09bi5zbGljZSgwLHQpKSxlLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKHRlLG5lKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWU/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXR9fSxDTEFTUzpmdW5jdGlvbihlKXt2YXIgdD1tW2UrIiAiXTtyZXR1cm4gdHx8KHQ9bmV3IFJlZ0V4cCgiKF58IitNKyIpIitlKyIoIitNKyJ8JCkiKSkmJm0oZSxmdW5jdGlvbihlKXtyZXR1cm4gdC50ZXN0KCJzdHJpbmciPT10eXBlb2YgZS5jbGFzc05hbWUmJmUuY2xhc3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24obixyLGkpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1zZS5hdHRyKGUsbik7cmV0dXJuIG51bGw9PXQ/IiE9Ij09PXI6IXJ8fCh0Kz0iIiwiPSI9PT1yP3Q9PT1pOiIhPSI9PT1yP3QhPT1pOiJePSI9PT1yP2kmJjA9PT10LmluZGV4T2YoaSk6Iio9Ij09PXI/aSYmLTE8dC5pbmRleE9mKGkpOiIkPSI9PT1yP2kmJnQuc2xpY2UoLWkubGVuZ3RoKT09PWk6In49Ij09PXI/LTE8KCIgIit0LnJlcGxhY2UoQiwiICIpKyIgIikuaW5kZXhPZihpKToifD0iPT09ciYmKHQ9PT1pfHx0LnNsaWNlKDAsaS5sZW5ndGgrMSk9PT1pKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oaCxlLHQsZyx2KXt2YXIgeT0ibnRoIiE9PWguc2xpY2UoMCwzKSxtPSJsYXN0IiE9PWguc2xpY2UoLTQpLHg9Im9mLXR5cGUiPT09ZTtyZXR1cm4gMT09PWcmJjA9PT12P2Z1bmN0aW9uKGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGw9eSE9PW0/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixjPWUucGFyZW50Tm9kZSxmPXgmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxwPSFuJiYheCxkPSExO2lmKGMpe2lmKHkpe3doaWxlKGwpe2E9ZTt3aGlsZShhPWFbbF0paWYoeD9hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1mOjE9PT1hLm5vZGVUeXBlKXJldHVybiExO3U9bD0ib25seSI9PT1oJiYhdSYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZih1PVttP2MuZmlyc3RDaGlsZDpjLmxhc3RDaGlsZF0sbSYmcCl7ZD0ocz0ocj0oaT0obz0oYT1jKVtTXXx8KGFbU109e30pKVthLnVuaXF1ZUlEXXx8KG9bYS51bmlxdWVJRF09e30pKVtoXXx8W10pWzBdPT09ayYmclsxXSkmJnJbMl0sYT1zJiZjLmNoaWxkTm9kZXNbc107d2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoMT09PWEubm9kZVR5cGUmJisrZCYmYT09PWUpe2lbaF09W2sscyxkXTticmVha319ZWxzZSBpZihwJiYoZD1zPShyPShpPShvPShhPWUpW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdfHxbXSlbMF09PT1rJiZyWzFdKSwhMT09PWQpd2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoKHg/YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ZjoxPT09YS5ub2RlVHlwZSkmJisrZCYmKHAmJigoaT0obz1hW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdPVtrLGRdKSxhPT09ZSkpYnJlYWs7cmV0dXJuKGQtPXYpPT09Z3x8ZCVnPT0wJiYwPD1kL2d9fX0sUFNFVURPOmZ1bmN0aW9uKGUsbyl7dmFyIHQsYT1iLnBzZXVkb3NbZV18fGIuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2UpO3JldHVybiBhW1NdP2Eobyk6MTxhLmxlbmd0aD8odD1bZSxlLCIiLG9dLGIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpP2xlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKGUsbyksaT1yLmxlbmd0aDt3aGlsZShpLS0pZVtuPVAoZSxyW2ldKV09ISh0W25dPXJbaV0pfSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSwwLHQpfSk6YX19LHBzZXVkb3M6e25vdDpsZShmdW5jdGlvbihlKXt2YXIgcj1bXSxpPVtdLHM9ZihlLnJlcGxhY2UoJCwiJDEiKSk7cmV0dXJuIHNbU10/bGUoZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbz1zKGUsbnVsbCxyLFtdKSxhPWUubGVuZ3RoO3doaWxlKGEtLSkoaT1vW2FdKSYmKGVbYV09ISh0W2FdPWkpKX0pOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gclswXT1lLHMocixudWxsLG4saSksclswXT1udWxsLCFpLnBvcCgpfX0pLGhhczpsZShmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIDA8c2UodCxlKS5sZW5ndGh9fSksY29udGFpbnM6bGUoZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC5yZXBsYWNlKHRlLG5lKSxmdW5jdGlvbihlKXtyZXR1cm4tMTwoZS50ZXh0Q29udGVudHx8byhlKSkuaW5kZXhPZih0KX19KSxsYW5nOmxlKGZ1bmN0aW9uKG4pe3JldHVybiBWLnRlc3Qobnx8IiIpfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIituKSxuPW4ucmVwbGFjZSh0ZSxuZSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlKXt2YXIgdDtkb3tpZih0PUU/ZS5sYW5nOmUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxlLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybih0PXQudG9Mb3dlckNhc2UoKSk9PT1ufHwwPT09dC5pbmRleE9mKG4rIi0iKX13aGlsZSgoZT1lLnBhcmVudE5vZGUpJiYxPT09ZS5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGUpe3ZhciB0PW4ubG9jYXRpb24mJm4ubG9jYXRpb24uaGFzaDtyZXR1cm4gdCYmdC5zbGljZSgxKT09PWUuaWR9LHJvb3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1hfSxmb2N1czpmdW5jdGlvbihlKXtyZXR1cm4gZT09PUMuYWN0aXZlRWxlbWVudCYmKCFDLmhhc0ZvY3VzfHxDLmhhc0ZvY3VzKCkpJiYhIShlLnR5cGV8fGUuaHJlZnx8fmUudGFiSW5kZXgpfSxlbmFibGVkOmdlKCExKSxkaXNhYmxlZDpnZSghMCksY2hlY2tlZDpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiEhZS5jaGVja2VkfHwib3B0aW9uIj09PXQmJiEhZS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsITA9PT1lLnNlbGVjdGVkfSxlbXB0eTpmdW5jdGlvbihlKXtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpaWYoZS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIWIucHNldWRvcy5lbXB0eShlKX0saGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBKLnRlc3QoZS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBRLnRlc3QoZS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiJidXR0b24iPT09ZS50eXBlfHwiYnV0dG9uIj09PXR9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09ZS50eXBlJiYobnVsbD09KHQ9ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PXQudG9Mb3dlckNhc2UoKSl9LGZpcnN0OnZlKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDp2ZShmdW5jdGlvbihlLHQpe3JldHVyblt0LTFdfSksZXE6dmUoZnVuY3Rpb24oZSx0LG4pe3JldHVybltuPDA/bit0Om5dfSksZXZlbjp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLG9kZDp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0xO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLGx0OnZlKGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bjwwP24rdDp0PG4/dDpuOzA8PS0tcjspZS5wdXNoKHIpO3JldHVybiBlfSksZ3Q6dmUoZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uPDA/bit0Om47KytyPHQ7KWUucHVzaChyKTtyZXR1cm4gZX0pfX0pLnBzZXVkb3MubnRoPWIucHNldWRvcy5lcSx7cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pYi5wc2V1ZG9zW2VdPWRlKGUpO2ZvcihlIGlue3N1Ym1pdDohMCxyZXNldDohMH0pYi5wc2V1ZG9zW2VdPWhlKGUpO2Z1bmN0aW9uIG1lKCl7fWZ1bmN0aW9uIHhlKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGgscj0iIjt0PG47dCsrKXIrPWVbdF0udmFsdWU7cmV0dXJuIHJ9ZnVuY3Rpb24gYmUocyxlLHQpe3ZhciB1PWUuZGlyLGw9ZS5uZXh0LGM9bHx8dSxmPXQmJiJwYXJlbnROb2RlIj09PWMscD1yKys7cmV0dXJuIGUuZmlyc3Q/ZnVuY3Rpb24oZSx0LG4pe3doaWxlKGU9ZVt1XSlpZigxPT09ZS5ub2RlVHlwZXx8ZilyZXR1cm4gcyhlLHQsbik7cmV0dXJuITF9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT1bayxwXTtpZihuKXt3aGlsZShlPWVbdV0paWYoKDE9PT1lLm5vZGVUeXBlfHxmKSYmcyhlLHQsbikpcmV0dXJuITB9ZWxzZSB3aGlsZShlPWVbdV0paWYoMT09PWUubm9kZVR5cGV8fGYpaWYoaT0obz1lW1NdfHwoZVtTXT17fSkpW2UudW5pcXVlSURdfHwob1tlLnVuaXF1ZUlEXT17fSksbCYmbD09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSllPWVbdV18fGU7ZWxzZXtpZigocj1pW2NdKSYmclswXT09PWsmJnJbMV09PT1wKXJldHVybiBhWzJdPXJbMl07aWYoKGlbY109YSlbMl09cyhlLHQsbikpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHdlKGkpe3JldHVybiAxPGkubGVuZ3RoP2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLmxlbmd0aDt3aGlsZShyLS0paWYoIWlbcl0oZSx0LG4pKXJldHVybiExO3JldHVybiEwfTppWzBdfWZ1bmN0aW9uIFRlKGUsdCxuLHIsaSl7Zm9yKHZhciBvLGE9W10scz0wLHU9ZS5sZW5ndGgsbD1udWxsIT10O3M8dTtzKyspKG89ZVtzXSkmJihuJiYhbihvLHIsaSl8fChhLnB1c2gobyksbCYmdC5wdXNoKHMpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gQ2UoZCxoLGcsdix5LGUpe3JldHVybiB2JiYhdltTXSYmKHY9Q2UodikpLHkmJiF5W1NdJiYoeT1DZSh5LGUpKSxsZShmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscz1bXSx1PVtdLGw9dC5sZW5ndGgsYz1lfHxmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7cisrKXNlKGUsdFtyXSxuKTtyZXR1cm4gbn0oaHx8IioiLG4ubm9kZVR5cGU/W25dOm4sW10pLGY9IWR8fCFlJiZoP2M6VGUoYyxzLGQsbixyKSxwPWc/eXx8KGU/ZDpsfHx2KT9bXTp0OmY7aWYoZyYmZyhmLHAsbixyKSx2KXtpPVRlKHAsdSksdihpLFtdLG4sciksbz1pLmxlbmd0aDt3aGlsZShvLS0pKGE9aVtvXSkmJihwW3Vbb11dPSEoZlt1W29dXT1hKSl9aWYoZSl7aWYoeXx8ZCl7aWYoeSl7aT1bXSxvPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmaS5wdXNoKGZbb109YSk7eShudWxsLHA9W10saSxyKX1vPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmLTE8KGk9eT9QKGUsYSk6c1tvXSkmJihlW2ldPSEodFtpXT1hKSl9fWVsc2UgcD1UZShwPT09dD9wLnNwbGljZShsLHAubGVuZ3RoKTpwKSx5P3kobnVsbCx0LHAscik6SC5hcHBseSh0LHApfSl9ZnVuY3Rpb24gRWUoZSl7Zm9yKHZhciBpLHQsbixyPWUubGVuZ3RoLG89Yi5yZWxhdGl2ZVtlWzBdLnR5cGVdLGE9b3x8Yi5yZWxhdGl2ZVsiICJdLHM9bz8xOjAsdT1iZShmdW5jdGlvbihlKXtyZXR1cm4gZT09PWl9LGEsITApLGw9YmUoZnVuY3Rpb24oZSl7cmV0dXJuLTE8UChpLGUpfSxhLCEwKSxjPVtmdW5jdGlvbihlLHQsbil7dmFyIHI9IW8mJihufHx0IT09dyl8fCgoaT10KS5ub2RlVHlwZT91KGUsdCxuKTpsKGUsdCxuKSk7cmV0dXJuIGk9bnVsbCxyfV07czxyO3MrKylpZih0PWIucmVsYXRpdmVbZVtzXS50eXBlXSljPVtiZSh3ZShjKSx0KV07ZWxzZXtpZigodD1iLmZpbHRlcltlW3NdLnR5cGVdLmFwcGx5KG51bGwsZVtzXS5tYXRjaGVzKSlbU10pe2ZvcihuPSsrcztuPHI7bisrKWlmKGIucmVsYXRpdmVbZVtuXS50eXBlXSlicmVhaztyZXR1cm4gQ2UoMTxzJiZ3ZShjKSwxPHMmJnhlKGUuc2xpY2UoMCxzLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09ZVtzLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoJCwiJDEiKSx0LHM8biYmRWUoZS5zbGljZShzLG4pKSxuPHImJkVlKGU9ZS5zbGljZShuKSksbjxyJiZ4ZShlKSl9Yy5wdXNoKHQpfXJldHVybiB3ZShjKX1yZXR1cm4gbWUucHJvdG90eXBlPWIuZmlsdGVycz1iLnBzZXVkb3MsYi5zZXRGaWx0ZXJzPW5ldyBtZSxoPXNlLnRva2VuaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzLHUsbD14W2UrIiAiXTtpZihsKXJldHVybiB0PzA6bC5zbGljZSgwKTthPWUscz1bXSx1PWIucHJlRmlsdGVyO3doaWxlKGEpe2ZvcihvIGluIG4mJiEocj1fLmV4ZWMoYSkpfHwociYmKGE9YS5zbGljZShyWzBdLmxlbmd0aCl8fGEpLHMucHVzaChpPVtdKSksbj0hMSwocj16LmV4ZWMoYSkpJiYobj1yLnNoaWZ0KCksaS5wdXNoKHt2YWx1ZTpuLHR5cGU6clswXS5yZXBsYWNlKCQsIiAiKX0pLGE9YS5zbGljZShuLmxlbmd0aCkpLGIuZmlsdGVyKSEocj1HW29dLmV4ZWMoYSkpfHx1W29dJiYhKHI9dVtvXShyKSl8fChuPXIuc2hpZnQoKSxpLnB1c2goe3ZhbHVlOm4sdHlwZTpvLG1hdGNoZXM6cn0pLGE9YS5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiB0P2EubGVuZ3RoOmE/c2UuZXJyb3IoZSk6eChlLHMpLnNsaWNlKDApfSxmPXNlLmNvbXBpbGU9ZnVuY3Rpb24oZSx0KXt2YXIgbix2LHksbSx4LHIsaT1bXSxvPVtdLGE9QVtlKyIgIl07aWYoIWEpe3R8fCh0PWgoZSkpLG49dC5sZW5ndGg7d2hpbGUobi0tKShhPUVlKHRbbl0pKVtTXT9pLnB1c2goYSk6by5wdXNoKGEpOyhhPUEoZSwodj1vLG09MDwoeT1pKS5sZW5ndGgseD0wPHYubGVuZ3RoLHI9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdT0wLGw9IjAiLGM9ZSYmW10sZj1bXSxwPXcsZD1lfHx4JiZiLmZpbmQuVEFHKCIqIixpKSxoPWsrPW51bGw9PXA/MTpNYXRoLnJhbmRvbSgpfHwuMSxnPWQubGVuZ3RoO2ZvcihpJiYodz10PT1DfHx0fHxpKTtsIT09ZyYmbnVsbCE9KG89ZFtsXSk7bCsrKXtpZih4JiZvKXthPTAsdHx8by5vd25lckRvY3VtZW50PT1DfHwoVChvKSxuPSFFKTt3aGlsZShzPXZbYSsrXSlpZihzKG8sdHx8QyxuKSl7ci5wdXNoKG8pO2JyZWFrfWkmJihrPWgpfW0mJigobz0hcyYmbykmJnUtLSxlJiZjLnB1c2gobykpfWlmKHUrPWwsbSYmbCE9PXUpe2E9MDt3aGlsZShzPXlbYSsrXSlzKGMsZix0LG4pO2lmKGUpe2lmKDA8dSl3aGlsZShsLS0pY1tsXXx8ZltsXXx8KGZbbF09cS5jYWxsKHIpKTtmPVRlKGYpfUguYXBwbHkocixmKSxpJiYhZSYmMDxmLmxlbmd0aCYmMTx1K3kubGVuZ3RoJiZzZS51bmlxdWVTb3J0KHIpfXJldHVybiBpJiYoaz1oLHc9cCksY30sbT9sZShyKTpyKSkpLnNlbGVjdG9yPWV9cmV0dXJuIGF9LGc9c2Uuc2VsZWN0PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZSxjPSFyJiZoKGU9bC5zZWxlY3Rvcnx8ZSk7aWYobj1ufHxbXSwxPT09Yy5sZW5ndGgpe2lmKDI8KG89Y1swXT1jWzBdLnNsaWNlKDApKS5sZW5ndGgmJiJJRCI9PT0oYT1vWzBdKS50eXBlJiY5PT09dC5ub2RlVHlwZSYmRSYmYi5yZWxhdGl2ZVtvWzFdLnR5cGVdKXtpZighKHQ9KGIuZmluZC5JRChhLm1hdGNoZXNbMF0ucmVwbGFjZSh0ZSxuZSksdCl8fFtdKVswXSkpcmV0dXJuIG47bCYmKHQ9dC5wYXJlbnROb2RlKSxlPWUuc2xpY2Uoby5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9aT1HLm5lZWRzQ29udGV4dC50ZXN0KGUpPzA6by5sZW5ndGg7d2hpbGUoaS0tKXtpZihhPW9baV0sYi5yZWxhdGl2ZVtzPWEudHlwZV0pYnJlYWs7aWYoKHU9Yi5maW5kW3NdKSYmKHI9dShhLm1hdGNoZXNbMF0ucmVwbGFjZSh0ZSxuZSksZWUudGVzdChvWzBdLnR5cGUpJiZ5ZSh0LnBhcmVudE5vZGUpfHx0KSkpe2lmKG8uc3BsaWNlKGksMSksIShlPXIubGVuZ3RoJiZ4ZShvKSkpcmV0dXJuIEguYXBwbHkobixyKSxuO2JyZWFrfX19cmV0dXJuKGx8fGYoZSxjKSkocix0LCFFLG4sIXR8fGVlLnRlc3QoZSkmJnllKHQucGFyZW50Tm9kZSl8fHQpLG59LGQuc29ydFN0YWJsZT1TLnNwbGl0KCIiKS5zb3J0KGopLmpvaW4oIiIpPT09UyxkLmRldGVjdER1cGxpY2F0ZXM9ISFsLFQoKSxkLnNvcnREZXRhY2hlZD1jZShmdW5jdGlvbihlKXtyZXR1cm4gMSZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKEMuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSl9KSxjZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0pfHxmZSgidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsZnVuY3Rpb24oZSx0LG4pe2lmKCFuKXJldHVybiBlLmdldEF0dHJpYnV0ZSh0LCJ0eXBlIj09PXQudG9Mb3dlckNhc2UoKT8xOjIpfSksZC5hdHRyaWJ1dGVzJiZjZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxpbnB1dC8+IixlLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLCIiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgidmFsdWUiKX0pfHxmZSgidmFsdWUiLGZ1bmN0aW9uKGUsdCxuKXtpZighbiYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gZS5kZWZhdWx0VmFsdWV9KSxjZShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIil9KXx8ZmUoUixmdW5jdGlvbihlLHQsbil7dmFyIHI7aWYoIW4pcmV0dXJuITA9PT1lW3RdP3QudG9Mb3dlckNhc2UoKToocj1lLmdldEF0dHJpYnV0ZU5vZGUodCkpJiZyLnNwZWNpZmllZD9yLnZhbHVlOm51bGx9KSxzZX0oQyk7Uy5maW5kPWQsUy5leHByPWQuc2VsZWN0b3JzLFMuZXhwclsiOiJdPVMuZXhwci5wc2V1ZG9zLFMudW5pcXVlU29ydD1TLnVuaXF1ZT1kLnVuaXF1ZVNvcnQsUy50ZXh0PWQuZ2V0VGV4dCxTLmlzWE1MRG9jPWQuaXNYTUwsUy5jb250YWlucz1kLmNvbnRhaW5zLFMuZXNjYXBlU2VsZWN0b3I9ZC5lc2NhcGU7dmFyIGg9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVtdLGk9dm9pZCAwIT09bjt3aGlsZSgoZT1lW3RdKSYmOSE9PWUubm9kZVR5cGUpaWYoMT09PWUubm9kZVR5cGUpe2lmKGkmJlMoZSkuaXMobikpYnJlYWs7ci5wdXNoKGUpfXJldHVybiByfSxUPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdO2U7ZT1lLm5leHRTaWJsaW5nKTE9PT1lLm5vZGVUeXBlJiZlIT09dCYmbi5wdXNoKGUpO3JldHVybiBufSxrPVMuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7ZnVuY3Rpb24gQShlLHQpe3JldHVybiBlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT10LnRvTG93ZXJDYXNlKCl9dmFyIE49L148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2k7ZnVuY3Rpb24gaihlLG4scil7cmV0dXJuIG0obik/Uy5ncmVwKGUsZnVuY3Rpb24oZSx0KXtyZXR1cm4hIW4uY2FsbChlLHQsZSkhPT1yfSk6bi5ub2RlVHlwZT9TLmdyZXAoZSxmdW5jdGlvbihlKXtyZXR1cm4gZT09PW4hPT1yfSk6InN0cmluZyIhPXR5cGVvZiBuP1MuZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybi0xPGkuY2FsbChuLGUpIT09cn0pOlMuZmlsdGVyKG4sZSxyKX1TLmZpbHRlcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dFswXTtyZXR1cm4gbiYmKGU9Ijpub3QoIitlKyIpIiksMT09PXQubGVuZ3RoJiYxPT09ci5ub2RlVHlwZT9TLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHIsZSk/W3JdOltdOlMuZmluZC5tYXRjaGVzKGUsUy5ncmVwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfSkpfSxTLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihlKXt2YXIgdCxuLHI9dGhpcy5sZW5ndGgsaT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gdGhpcy5wdXNoU3RhY2soUyhlKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodD0wO3Q8cjt0KyspaWYoUy5jb250YWlucyhpW3RdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihuPXRoaXMucHVzaFN0YWNrKFtdKSx0PTA7dDxyO3QrKylTLmZpbmQoZSxpW3RdLG4pO3JldHVybiAxPHI/Uy51bmlxdWVTb3J0KG4pOm59LGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiEhaih0aGlzLCJzdHJpbmciPT10eXBlb2YgZSYmay50ZXN0KGUpP1MoZSk6ZXx8W10sITEpLmxlbmd0aH19KTt2YXIgRCxxPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC87KFMuZm4uaW5pdD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaTtpZighZSlyZXR1cm4gdGhpcztpZihuPW58fEQsInN0cmluZyI9PXR5cGVvZiBlKXtpZighKHI9IjwiPT09ZVswXSYmIj4iPT09ZVtlLmxlbmd0aC0xXSYmMzw9ZS5sZW5ndGg/W251bGwsZSxudWxsXTpxLmV4ZWMoZSkpfHwhclsxXSYmdClyZXR1cm4hdHx8dC5qcXVlcnk/KHR8fG4pLmZpbmQoZSk6dGhpcy5jb25zdHJ1Y3Rvcih0KS5maW5kKGUpO2lmKHJbMV0pe2lmKHQ9dCBpbnN0YW5jZW9mIFM/dFswXTp0LFMubWVyZ2UodGhpcyxTLnBhcnNlSFRNTChyWzFdLHQmJnQubm9kZVR5cGU/dC5vd25lckRvY3VtZW50fHx0OkUsITApKSxOLnRlc3QoclsxXSkmJlMuaXNQbGFpbk9iamVjdCh0KSlmb3IociBpbiB0KW0odGhpc1tyXSk/dGhpc1tyXSh0W3JdKTp0aGlzLmF0dHIocix0W3JdKTtyZXR1cm4gdGhpc31yZXR1cm4oaT1FLmdldEVsZW1lbnRCeUlkKHJbMl0pKSYmKHRoaXNbMF09aSx0aGlzLmxlbmd0aD0xKSx0aGlzfXJldHVybiBlLm5vZGVUeXBlPyh0aGlzWzBdPWUsdGhpcy5sZW5ndGg9MSx0aGlzKTptKGUpP3ZvaWQgMCE9PW4ucmVhZHk/bi5yZWFkeShlKTplKFMpOlMubWFrZUFycmF5KGUsdGhpcyl9KS5wcm90b3R5cGU9Uy5mbixEPVMoRSk7dmFyIEw9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sSD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmdW5jdGlvbiBPKGUsdCl7d2hpbGUoKGU9ZVt0XSkmJjEhPT1lLm5vZGVUeXBlKTtyZXR1cm4gZX1TLmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKGUpe3ZhciB0PVMoZSx0aGlzKSxuPXQubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bjtlKyspaWYoUy5jb250YWlucyh0aGlzLHRbZV0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10aGlzLmxlbmd0aCxvPVtdLGE9InN0cmluZyIhPXR5cGVvZiBlJiZTKGUpO2lmKCFrLnRlc3QoZSkpZm9yKDtyPGk7cisrKWZvcihuPXRoaXNbcl07biYmbiE9PXQ7bj1uLnBhcmVudE5vZGUpaWYobi5ub2RlVHlwZTwxMSYmKGE/LTE8YS5pbmRleChuKToxPT09bi5ub2RlVHlwZSYmUy5maW5kLm1hdGNoZXNTZWxlY3RvcihuLGUpKSl7by5wdXNoKG4pO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjaygxPG8ubGVuZ3RoP1MudW5pcXVlU29ydChvKTpvKX0saW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/InN0cmluZyI9PXR5cGVvZiBlP2kuY2FsbChTKGUpLHRoaXNbMF0pOmkuY2FsbCh0aGlzLGUuanF1ZXJ5P2VbMF06ZSk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy51bmlxdWVTb3J0KFMubWVyZ2UodGhpcy5nZXQoKSxTKGUsdCkpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWU/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpfX0pLFMuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmMTEhPT10Lm5vZGVUeXBlP3Q6bnVsbH0scGFyZW50czpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGgoZSwicGFyZW50Tm9kZSIsbil9LG5leHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE8oZSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihlKXtyZXR1cm4gTyhlLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBoKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBoKGUsIm5leHRTaWJsaW5nIixuKX0scHJldlVudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaChlLCJwcmV2aW91c1NpYmxpbmciLG4pfSxzaWJsaW5nczpmdW5jdGlvbihlKXtyZXR1cm4gVCgoZS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxlKX0sY2hpbGRyZW46ZnVuY3Rpb24oZSl7cmV0dXJuIFQoZS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUuY29udGVudERvY3VtZW50JiZyKGUuY29udGVudERvY3VtZW50KT9lLmNvbnRlbnREb2N1bWVudDooQShlLCJ0ZW1wbGF0ZSIpJiYoZT1lLmNvbnRlbnR8fGUpLFMubWVyZ2UoW10sZS5jaGlsZE5vZGVzKSl9fSxmdW5jdGlvbihyLGkpe1MuZm5bcl09ZnVuY3Rpb24oZSx0KXt2YXIgbj1TLm1hcCh0aGlzLGksZSk7cmV0dXJuIlVudGlsIiE9PXIuc2xpY2UoLTUpJiYodD1lKSx0JiYic3RyaW5nIj09dHlwZW9mIHQmJihuPVMuZmlsdGVyKHQsbikpLDE8dGhpcy5sZW5ndGgmJihIW3JdfHxTLnVuaXF1ZVNvcnQobiksTC50ZXN0KHIpJiZuLnJldmVyc2UoKSksdGhpcy5wdXNoU3RhY2sobil9fSk7dmFyIFA9L1teXHgyMFx0XHJcblxmXSsvZztmdW5jdGlvbiBSKGUpe3JldHVybiBlfWZ1bmN0aW9uIE0oZSl7dGhyb3cgZX1mdW5jdGlvbiBJKGUsdCxuLHIpe3ZhciBpO3RyeXtlJiZtKGk9ZS5wcm9taXNlKT9pLmNhbGwoZSkuZG9uZSh0KS5mYWlsKG4pOmUmJm0oaT1lLnRoZW4pP2kuY2FsbChlLHQsbik6dC5hcHBseSh2b2lkIDAsW2VdLnNsaWNlKHIpKX1jYXRjaChlKXtuLmFwcGx5KHZvaWQgMCxbZV0pfX1TLkNhbGxiYWNrcz1mdW5jdGlvbihyKXt2YXIgZSxuO3I9InN0cmluZyI9PXR5cGVvZiByPyhlPXIsbj17fSxTLmVhY2goZS5tYXRjaChQKXx8W10sZnVuY3Rpb24oZSx0KXtuW3RdPSEwfSksbik6Uy5leHRlbmQoe30scik7dmFyIGksdCxvLGEscz1bXSx1PVtdLGw9LTEsYz1mdW5jdGlvbigpe2ZvcihhPWF8fHIub25jZSxvPWk9ITA7dS5sZW5ndGg7bD0tMSl7dD11LnNoaWZ0KCk7d2hpbGUoKytsPHMubGVuZ3RoKSExPT09c1tsXS5hcHBseSh0WzBdLHRbMV0pJiZyLnN0b3BPbkZhbHNlJiYobD1zLmxlbmd0aCx0PSExKX1yLm1lbW9yeXx8KHQ9ITEpLGk9ITEsYSYmKHM9dD9bXToiIil9LGY9e2FkZDpmdW5jdGlvbigpe3JldHVybiBzJiYodCYmIWkmJihsPXMubGVuZ3RoLTEsdS5wdXNoKHQpKSxmdW5jdGlvbiBuKGUpe1MuZWFjaChlLGZ1bmN0aW9uKGUsdCl7bSh0KT9yLnVuaXF1ZSYmZi5oYXModCl8fHMucHVzaCh0KTp0JiZ0Lmxlbmd0aCYmInN0cmluZyIhPT13KHQpJiZuKHQpfSl9KGFyZ3VtZW50cyksdCYmIWkmJmMoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIFMuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oZSx0KXt2YXIgbjt3aGlsZSgtMTwobj1TLmluQXJyYXkodCxzLG4pKSlzLnNwbGljZShuLDEpLG48PWwmJmwtLX0pLHRoaXN9LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gZT8tMTxTLmluQXJyYXkoZSxzKTowPHMubGVuZ3RofSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBzJiYocz1bXSksdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBhPXU9W10scz10PSIiLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIXN9LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gYT11PVtdLHR8fGl8fChzPXQ9IiIpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiEhYX0sZmlyZVdpdGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXx8KHQ9W2UsKHQ9dHx8W10pLnNsaWNlP3Quc2xpY2UoKTp0XSx1LnB1c2godCksaXx8YygpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFvfX07cmV0dXJuIGZ9LFMuZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihlKXt2YXIgbz1bWyJub3RpZnkiLCJwcm9ncmVzcyIsUy5DYWxsYmFja3MoIm1lbW9yeSIpLFMuQ2FsbGJhY2tzKCJtZW1vcnkiKSwyXSxbInJlc29sdmUiLCJkb25lIixTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwwLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksMSwicmVqZWN0ZWQiXV0saT0icGVuZGluZyIsYT17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIHMuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSwiY2F0Y2giOmZ1bmN0aW9uKGUpe3JldHVybiBhLnRoZW4obnVsbCxlKX0scGlwZTpmdW5jdGlvbigpe3ZhciBpPWFyZ3VtZW50cztyZXR1cm4gUy5EZWZlcnJlZChmdW5jdGlvbihyKXtTLmVhY2gobyxmdW5jdGlvbihlLHQpe3ZhciBuPW0oaVt0WzRdXSkmJmlbdFs0XV07c1t0WzFdXShmdW5jdGlvbigpe3ZhciBlPW4mJm4uYXBwbHkodGhpcyxhcmd1bWVudHMpO2UmJm0oZS5wcm9taXNlKT9lLnByb21pc2UoKS5wcm9ncmVzcyhyLm5vdGlmeSkuZG9uZShyLnJlc29sdmUpLmZhaWwoci5yZWplY3QpOnJbdFswXSsiV2l0aCJdKHRoaXMsbj9bZV06YXJndW1lbnRzKX0pfSksaT1udWxsfSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKHQsbixyKXt2YXIgdT0wO2Z1bmN0aW9uIGwoaSxvLGEscyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dGhpcyxyPWFyZ3VtZW50cyxlPWZ1bmN0aW9uKCl7dmFyIGUsdDtpZighKGk8dSkpe2lmKChlPWEuYXBwbHkobixyKSk9PT1vLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTt0PWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmZS50aGVuLG0odCk/cz90LmNhbGwoZSxsKHUsbyxSLHMpLGwodSxvLE0scykpOih1KyssdC5jYWxsKGUsbCh1LG8sUixzKSxsKHUsbyxNLHMpLGwodSxvLFIsby5ub3RpZnlXaXRoKSkpOihhIT09UiYmKG49dm9pZCAwLHI9W2VdKSwoc3x8by5yZXNvbHZlV2l0aCkobixyKSl9fSx0PXM/ZTpmdW5jdGlvbigpe3RyeXtlKCl9Y2F0Y2goZSl7Uy5EZWZlcnJlZC5leGNlcHRpb25Ib29rJiZTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2soZSx0LnN0YWNrVHJhY2UpLHU8PWkrMSYmKGEhPT1NJiYobj12b2lkIDAscj1bZV0pLG8ucmVqZWN0V2l0aChuLHIpKX19O2k/dCgpOihTLkRlZmVycmVkLmdldFN0YWNrSG9vayYmKHQuc3RhY2tUcmFjZT1TLkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSxDLnNldFRpbWVvdXQodCkpfX1yZXR1cm4gUy5EZWZlcnJlZChmdW5jdGlvbihlKXtvWzBdWzNdLmFkZChsKDAsZSxtKHIpP3I6UixlLm5vdGlmeVdpdGgpKSxvWzFdWzNdLmFkZChsKDAsZSxtKHQpP3Q6UikpLG9bMl1bM10uYWRkKGwoMCxlLG0obik/bjpNKSl9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWU/Uy5leHRlbmQoZSxhKTphfX0scz17fTtyZXR1cm4gUy5lYWNoKG8sZnVuY3Rpb24oZSx0KXt2YXIgbj10WzJdLHI9dFs1XTthW3RbMV1dPW4uYWRkLHImJm4uYWRkKGZ1bmN0aW9uKCl7aT1yfSxvWzMtZV1bMl0uZGlzYWJsZSxvWzMtZV1bM10uZGlzYWJsZSxvWzBdWzJdLmxvY2ssb1swXVszXS5sb2NrKSxuLmFkZCh0WzNdLmZpcmUpLHNbdFswXV09ZnVuY3Rpb24oKXtyZXR1cm4gc1t0WzBdKyJXaXRoIl0odGhpcz09PXM/dm9pZCAwOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxzW3RbMF0rIldpdGgiXT1uLmZpcmVXaXRofSksYS5wcm9taXNlKHMpLGUmJmUuY2FsbChzLHMpLHN9LHdoZW46ZnVuY3Rpb24oZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aCx0PW4scj1BcnJheSh0KSxpPXMuY2FsbChhcmd1bWVudHMpLG89Uy5EZWZlcnJlZCgpLGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JbdF09dGhpcyxpW3RdPTE8YXJndW1lbnRzLmxlbmd0aD9zLmNhbGwoYXJndW1lbnRzKTplLC0tbnx8by5yZXNvbHZlV2l0aChyLGkpfX07aWYobjw9MSYmKEkoZSxvLmRvbmUoYSh0KSkucmVzb2x2ZSxvLnJlamVjdCwhbiksInBlbmRpbmciPT09by5zdGF0ZSgpfHxtKGlbdF0mJmlbdF0udGhlbikpKXJldHVybiBvLnRoZW4oKTt3aGlsZSh0LS0pSShpW3RdLGEodCksby5yZWplY3QpO3JldHVybiBvLnByb21pc2UoKX19KTt2YXIgVz0vXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9ZnVuY3Rpb24oZSx0KXtDLmNvbnNvbGUmJkMuY29uc29sZS53YXJuJiZlJiZXLnRlc3QoZS5uYW1lKSYmQy5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIrZS5tZXNzYWdlLGUuc3RhY2ssdCl9LFMucmVhZHlFeGNlcHRpb249ZnVuY3Rpb24oZSl7Qy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZX0pfTt2YXIgRj1TLkRlZmVycmVkKCk7ZnVuY3Rpb24gQigpe0UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiksQy5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixCKSxTLnJlYWR5KCl9Uy5mbi5yZWFkeT1mdW5jdGlvbihlKXtyZXR1cm4gRi50aGVuKGUpWyJjYXRjaCJdKGZ1bmN0aW9uKGUpe1MucmVhZHlFeGNlcHRpb24oZSl9KSx0aGlzfSxTLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihlKXsoITA9PT1lPy0tUy5yZWFkeVdhaXQ6Uy5pc1JlYWR5KXx8KFMuaXNSZWFkeT0hMCkhPT1lJiYwPC0tUy5yZWFkeVdhaXR8fEYucmVzb2x2ZVdpdGgoRSxbU10pfX0pLFMucmVhZHkudGhlbj1GLnRoZW4sImNvbXBsZXRlIj09PUUucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09RS5yZWFkeVN0YXRlJiYhRS5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/Qy5zZXRUaW1lb3V0KFMucmVhZHkpOihFLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEIpLEMuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsQikpO3ZhciAkPWZ1bmN0aW9uKGUsdCxuLHIsaSxvLGEpe3ZhciBzPTAsdT1lLmxlbmd0aCxsPW51bGw9PW47aWYoIm9iamVjdCI9PT13KG4pKWZvcihzIGluIGk9ITAsbikkKGUsdCxzLG5bc10sITAsbyxhKTtlbHNlIGlmKHZvaWQgMCE9PXImJihpPSEwLG0ocil8fChhPSEwKSxsJiYoYT8odC5jYWxsKGUsciksdD1udWxsKToobD10LHQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBsLmNhbGwoUyhlKSxuKX0pKSx0KSlmb3IoO3M8dTtzKyspdChlW3NdLG4sYT9yOnIuY2FsbChlW3NdLHMsdChlW3NdLG4pKSk7cmV0dXJuIGk/ZTpsP3QuY2FsbChlKTp1P3QoZVswXSxuKTpvfSxfPS9eLW1zLS8sej0vLShbYS16XSkvZztmdW5jdGlvbiBVKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBYKGUpe3JldHVybiBlLnJlcGxhY2UoXywibXMtIikucmVwbGFjZSh6LFUpfXZhciBWPWZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZS5ub2RlVHlwZXx8OT09PWUubm9kZVR5cGV8fCErZS5ub2RlVHlwZX07ZnVuY3Rpb24gRygpe3RoaXMuZXhwYW5kbz1TLmV4cGFuZG8rRy51aWQrK31HLnVpZD0xLEcucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHR8fCh0PXt9LFYoZSkmJihlLm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT10Ok9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHRoaXMuZXhwYW5kbyx7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KSkpLHR9LHNldDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaT10aGlzLmNhY2hlKGUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClpW1godCldPW47ZWxzZSBmb3IociBpbiB0KWlbWChyKV09dFtyXTtyZXR1cm4gaX0sZ2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5jYWNoZShlKTplW3RoaXMuZXhwYW5kb10mJmVbdGhpcy5leHBhbmRvXVtYKHQpXX0sYWNjZXNzOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09dHx8dCYmInN0cmluZyI9PXR5cGVvZiB0JiZ2b2lkIDA9PT1uP3RoaXMuZ2V0KGUsdCk6KHRoaXMuc2V0KGUsdCxuKSx2b2lkIDAhPT1uP246dCl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9ZVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PXIpe2lmKHZvaWQgMCE9PXQpe249KHQ9QXJyYXkuaXNBcnJheSh0KT90Lm1hcChYKToodD1YKHQpKWluIHI/W3RdOnQubWF0Y2goUCl8fFtdKS5sZW5ndGg7d2hpbGUobi0tKWRlbGV0ZSByW3Rbbl1dfSh2b2lkIDA9PT10fHxTLmlzRW1wdHlPYmplY3QocikpJiYoZS5ub2RlVHlwZT9lW3RoaXMuZXhwYW5kb109dm9pZCAwOmRlbGV0ZSBlW3RoaXMuZXhwYW5kb10pfX0saGFzRGF0YTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHZvaWQgMCE9PXQmJiFTLmlzRW1wdHlPYmplY3QodCl9fTt2YXIgWT1uZXcgRyxRPW5ldyBHLEo9L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxLPS9bQS1aXS9nO2Z1bmN0aW9uIFooZSx0LG4pe3ZhciByLGk7aWYodm9pZCAwPT09biYmMT09PWUubm9kZVR5cGUpaWYocj0iZGF0YS0iK3QucmVwbGFjZShLLCItJCYiKS50b0xvd2VyQ2FzZSgpLCJzdHJpbmciPT10eXBlb2Yobj1lLmdldEF0dHJpYnV0ZShyKSkpe3RyeXtuPSJ0cnVlIj09PShpPW4pfHwiZmFsc2UiIT09aSYmKCJudWxsIj09PWk/bnVsbDppPT09K2krIiI/K2k6Si50ZXN0KGkpP0pTT04ucGFyc2UoaSk6aSl9Y2F0Y2goZSl7fVEuc2V0KGUsdCxuKX1lbHNlIG49dm9pZCAwO3JldHVybiBufVMuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiBRLmhhc0RhdGEoZSl8fFkuaGFzRGF0YShlKX0sZGF0YTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFEuYWNjZXNzKGUsdCxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1EucmVtb3ZlKGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gWS5hY2Nlc3MoZSx0LG4pfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1kucmVtb3ZlKGUsdCl9fSksUy5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24obixlKXt2YXIgdCxyLGksbz10aGlzWzBdLGE9byYmby5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PW4pe2lmKHRoaXMubGVuZ3RoJiYoaT1RLmdldChvKSwxPT09by5ub2RlVHlwZSYmIVkuZ2V0KG8sImhhc0RhdGFBdHRycyIpKSl7dD1hLmxlbmd0aDt3aGlsZSh0LS0pYVt0XSYmMD09PShyPWFbdF0ubmFtZSkuaW5kZXhPZigiZGF0YS0iKSYmKHI9WChyLnNsaWNlKDUpKSxaKG8scixpW3JdKSk7WS5zZXQobywiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGl9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuP3RoaXMuZWFjaChmdW5jdGlvbigpe1Euc2V0KHRoaXMsbil9KTokKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ7aWYobyYmdm9pZCAwPT09ZSlyZXR1cm4gdm9pZCAwIT09KHQ9US5nZXQobyxuKSk/dDp2b2lkIDAhPT0odD1aKG8sbikpP3Q6dm9pZCAwO3RoaXMuZWFjaChmdW5jdGlvbigpe1Euc2V0KHRoaXMsbixlKX0pfSxudWxsLGUsMTxhcmd1bWVudHMubGVuZ3RoLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtRLnJlbW92ZSh0aGlzLGUpfSl9fSksUy5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZihlKXJldHVybiB0PSh0fHwiZngiKSsicXVldWUiLHI9WS5nZXQoZSx0KSxuJiYoIXJ8fEFycmF5LmlzQXJyYXkobik/cj1ZLmFjY2VzcyhlLHQsUy5tYWtlQXJyYXkobikpOnIucHVzaChuKSkscnx8W119LGRlcXVldWU6ZnVuY3Rpb24oZSx0KXt0PXR8fCJmeCI7dmFyIG49Uy5xdWV1ZShlLHQpLHI9bi5sZW5ndGgsaT1uLnNoaWZ0KCksbz1TLl9xdWV1ZUhvb2tzKGUsdCk7ImlucHJvZ3Jlc3MiPT09aSYmKGk9bi5zaGlmdCgpLHItLSksaSYmKCJmeCI9PT10JiZuLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgby5zdG9wLGkuY2FsbChlLGZ1bmN0aW9uKCl7Uy5kZXF1ZXVlKGUsdCl9LG8pKSwhciYmbyYmby5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dCsicXVldWVIb29rcyI7cmV0dXJuIFkuZ2V0KGUsbil8fFkuYWNjZXNzKGUsbix7ZW1wdHk6Uy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7WS5yZW1vdmUoZSxbdCsicXVldWUiLG5dKX0pfSl9fSksUy5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKHQsbil7dmFyIGU9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHQmJihuPXQsdD0iZngiLGUtLSksYXJndW1lbnRzLmxlbmd0aDxlP1MucXVldWUodGhpc1swXSx0KTp2b2lkIDA9PT1uP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9Uy5xdWV1ZSh0aGlzLHQsbik7Uy5fcXVldWVIb29rcyh0aGlzLHQpLCJmeCI9PT10JiYiaW5wcm9ncmVzcyIhPT1lWzBdJiZTLmRlcXVldWUodGhpcyx0KX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtTLmRlcXVldWUodGhpcyxlKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnF1ZXVlKGV8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0xLGk9Uy5EZWZlcnJlZCgpLG89dGhpcyxhPXRoaXMubGVuZ3RoLHM9ZnVuY3Rpb24oKXstLXJ8fGkucmVzb2x2ZVdpdGgobyxbb10pfTsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLGU9ZXx8ImZ4Ijt3aGlsZShhLS0pKG49WS5nZXQob1thXSxlKyJxdWV1ZUhvb2tzIikpJiZuLmVtcHR5JiYocisrLG4uZW1wdHkuYWRkKHMpKTtyZXR1cm4gcygpLGkucHJvbWlzZSh0KX19KTt2YXIgZWU9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsdGU9bmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiK2VlKyIpKFthLXolXSopJCIsImkiKSxuZT1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLHJlPUUuZG9jdW1lbnRFbGVtZW50LGllPWZ1bmN0aW9uKGUpe3JldHVybiBTLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKX0sb2U9e2NvbXBvc2VkOiEwfTtyZS5nZXRSb290Tm9kZSYmKGllPWZ1bmN0aW9uKGUpe3JldHVybiBTLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKXx8ZS5nZXRSb290Tm9kZShvZSk9PT1lLm93bmVyRG9jdW1lbnR9KTt2YXIgYWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ibm9uZSI9PT0oZT10fHxlKS5zdHlsZS5kaXNwbGF5fHwiIj09PWUuc3R5bGUuZGlzcGxheSYmaWUoZSkmJiJub25lIj09PVMuY3NzKGUsImRpc3BsYXkiKX07ZnVuY3Rpb24gc2UoZSx0LG4scil7dmFyIGksbyxhPTIwLHM9cj9mdW5jdGlvbigpe3JldHVybiByLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiBTLmNzcyhlLHQsIiIpfSx1PXMoKSxsPW4mJm5bM118fChTLmNzc051bWJlclt0XT8iIjoicHgiKSxjPWUubm9kZVR5cGUmJihTLmNzc051bWJlclt0XXx8InB4IiE9PWwmJit1KSYmdGUuZXhlYyhTLmNzcyhlLHQpKTtpZihjJiZjWzNdIT09bCl7dS89MixsPWx8fGNbM10sYz0rdXx8MTt3aGlsZShhLS0pUy5zdHlsZShlLHQsYytsKSwoMS1vKSooMS0obz1zKCkvdXx8LjUpKTw9MCYmKGE9MCksYy89bztjKj0yLFMuc3R5bGUoZSx0LGMrbCksbj1ufHxbXX1yZXR1cm4gbiYmKGM9K2N8fCt1fHwwLGk9blsxXT9jKyhuWzFdKzEpKm5bMl06K25bMl0sciYmKHIudW5pdD1sLHIuc3RhcnQ9YyxyLmVuZD1pKSksaX12YXIgdWU9e307ZnVuY3Rpb24gbGUoZSx0KXtmb3IodmFyIG4scixpLG8sYSxzLHUsbD1bXSxjPTAsZj1lLmxlbmd0aDtjPGY7YysrKShyPWVbY10pLnN0eWxlJiYobj1yLnN0eWxlLmRpc3BsYXksdD8oIm5vbmUiPT09biYmKGxbY109WS5nZXQociwiZGlzcGxheSIpfHxudWxsLGxbY118fChyLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PXIuc3R5bGUuZGlzcGxheSYmYWUocikmJihsW2NdPSh1PWE9bz12b2lkIDAsYT0oaT1yKS5vd25lckRvY3VtZW50LHM9aS5ub2RlTmFtZSwodT11ZVtzXSl8fChvPWEuYm9keS5hcHBlbmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQocykpLHU9Uy5jc3MobywiZGlzcGxheSIpLG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwibm9uZSI9PT11JiYodT0iYmxvY2siKSx1ZVtzXT11KSkpKToibm9uZSIhPT1uJiYobFtjXT0ibm9uZSIsWS5zZXQociwiZGlzcGxheSIsbikpKTtmb3IoYz0wO2M8ZjtjKyspbnVsbCE9bFtjXSYmKGVbY10uc3R5bGUuZGlzcGxheT1sW2NdKTtyZXR1cm4gZX1TLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGU/ZT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXthZSh0aGlzKT9TKHRoaXMpLnNob3coKTpTKHRoaXMpLmhpZGUoKX0pfX0pO3ZhciBjZSxmZSxwZT0vXig/OmNoZWNrYm94fHJhZGlvKSQvaSxkZT0vPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKikvaSxoZT0vXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2k7Y2U9RS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoRS5jcmVhdGVFbGVtZW50KCJkaXYiKSksKGZlPUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxmZS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIiksZmUuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLGNlLmFwcGVuZENoaWxkKGZlKSx5LmNoZWNrQ2xvbmU9Y2UuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGNlLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIseS5ub0Nsb25lQ2hlY2tlZD0hIWNlLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZSxjZS5pbm5lckhUTUw9IjxvcHRpb24+PC9vcHRpb24+Iix5Lm9wdGlvbj0hIWNlLmxhc3RDaGlsZDt2YXIgZ2U9e3RoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtmdW5jdGlvbiB2ZShlLHQpe3ZhciBuO3JldHVybiBuPSJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKHR8fCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGw/ZS5xdWVyeVNlbGVjdG9yQWxsKHR8fCIqIik6W10sdm9pZCAwPT09dHx8dCYmQShlLHQpP1MubWVyZ2UoW2VdLG4pOm59ZnVuY3Rpb24geWUoZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspWS5zZXQoZVtuXSwiZ2xvYmFsRXZhbCIsIXR8fFkuZ2V0KHRbbl0sImdsb2JhbEV2YWwiKSl9Z2UudGJvZHk9Z2UudGZvb3Q9Z2UuY29sZ3JvdXA9Z2UuY2FwdGlvbj1nZS50aGVhZCxnZS50aD1nZS50ZCx5Lm9wdGlvbnx8KGdlLm9wdGdyb3VwPWdlLm9wdGlvbj1bMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdKTt2YXIgbWU9Lzx8JiM/XHcrOy87ZnVuY3Rpb24geGUoZSx0LG4scixpKXtmb3IodmFyIG8sYSxzLHUsbCxjLGY9dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkscD1bXSxkPTAsaD1lLmxlbmd0aDtkPGg7ZCsrKWlmKChvPWVbZF0pfHwwPT09bylpZigib2JqZWN0Ij09PXcobykpUy5tZXJnZShwLG8ubm9kZVR5cGU/W29dOm8pO2Vsc2UgaWYobWUudGVzdChvKSl7YT1hfHxmLmFwcGVuZENoaWxkKHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLHM9KGRlLmV4ZWMobyl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksdT1nZVtzXXx8Z2UuX2RlZmF1bHQsYS5pbm5lckhUTUw9dVsxXStTLmh0bWxQcmVmaWx0ZXIobykrdVsyXSxjPXVbMF07d2hpbGUoYy0tKWE9YS5sYXN0Q2hpbGQ7Uy5tZXJnZShwLGEuY2hpbGROb2RlcyksKGE9Zi5maXJzdENoaWxkKS50ZXh0Q29udGVudD0iIn1lbHNlIHAucHVzaCh0LmNyZWF0ZVRleHROb2RlKG8pKTtmLnRleHRDb250ZW50PSIiLGQ9MDt3aGlsZShvPXBbZCsrXSlpZihyJiYtMTxTLmluQXJyYXkobyxyKSlpJiZpLnB1c2gobyk7ZWxzZSBpZihsPWllKG8pLGE9dmUoZi5hcHBlbmRDaGlsZChvKSwic2NyaXB0IiksbCYmeWUoYSksbil7Yz0wO3doaWxlKG89YVtjKytdKWhlLnRlc3Qoby50eXBlfHwiIikmJm4ucHVzaChvKX1yZXR1cm4gZn12YXIgYmU9L14oW14uXSopKD86XC4oLispfCkvO2Z1bmN0aW9uIHdlKCl7cmV0dXJuITB9ZnVuY3Rpb24gVGUoKXtyZXR1cm4hMX1mdW5jdGlvbiBDZShlLHQpe3JldHVybiBlPT09ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIEUuYWN0aXZlRWxlbWVudH1jYXRjaChlKXt9fSgpPT0oImZvY3VzIj09PXQpfWZ1bmN0aW9uIEVlKGUsdCxuLHIsaSxvKXt2YXIgYSxzO2lmKCJvYmplY3QiPT10eXBlb2YgdCl7Zm9yKHMgaW4ic3RyaW5nIiE9dHlwZW9mIG4mJihyPXJ8fG4sbj12b2lkIDApLHQpRWUoZSxzLG4scix0W3NdLG8pO3JldHVybiBlfWlmKG51bGw9PXImJm51bGw9PWk/KGk9bixyPW49dm9pZCAwKTpudWxsPT1pJiYoInN0cmluZyI9PXR5cGVvZiBuPyhpPXIscj12b2lkIDApOihpPXIscj1uLG49dm9pZCAwKSksITE9PT1pKWk9VGU7ZWxzZSBpZighaSlyZXR1cm4gZTtyZXR1cm4gMT09PW8mJihhPWksKGk9ZnVuY3Rpb24oZSl7cmV0dXJuIFMoKS5vZmYoZSksYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KS5ndWlkPWEuZ3VpZHx8KGEuZ3VpZD1TLmd1aWQrKykpLGUuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQuYWRkKHRoaXMsdCxpLHIsbil9KX1mdW5jdGlvbiBTZShlLGksbyl7bz8oWS5zZXQoZSxpLCExKSxTLmV2ZW50LmFkZChlLGkse25hbWVzcGFjZTohMSxoYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj1ZLmdldCh0aGlzLGkpO2lmKDEmZS5pc1RyaWdnZXImJnRoaXNbaV0pe2lmKHIubGVuZ3RoKShTLmV2ZW50LnNwZWNpYWxbaV18fHt9KS5kZWxlZ2F0ZVR5cGUmJmUuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZihyPXMuY2FsbChhcmd1bWVudHMpLFkuc2V0KHRoaXMsaSxyKSx0PW8odGhpcyxpKSx0aGlzW2ldKCksciE9PShuPVkuZ2V0KHRoaXMsaSkpfHx0P1kuc2V0KHRoaXMsaSwhMSk6bj17fSxyIT09bilyZXR1cm4gZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnByZXZlbnREZWZhdWx0KCksbiYmbi52YWx1ZX1lbHNlIHIubGVuZ3RoJiYoWS5zZXQodGhpcyxpLHt2YWx1ZTpTLmV2ZW50LnRyaWdnZXIoUy5leHRlbmQoclswXSxTLkV2ZW50LnByb3RvdHlwZSksci5zbGljZSgxKSx0aGlzKX0pLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfX0pKTp2b2lkIDA9PT1ZLmdldChlLGkpJiZTLmV2ZW50LmFkZChlLGksd2UpfVMuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24odCxlLG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHY9WS5nZXQodCk7aWYoVih0KSl7bi5oYW5kbGVyJiYobj0obz1uKS5oYW5kbGVyLGk9by5zZWxlY3RvciksaSYmUy5maW5kLm1hdGNoZXNTZWxlY3RvcihyZSxpKSxuLmd1aWR8fChuLmd1aWQ9Uy5ndWlkKyspLCh1PXYuZXZlbnRzKXx8KHU9di5ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSksKGE9di5oYW5kbGUpfHwoYT12LmhhbmRsZT1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFMmJlMuZXZlbnQudHJpZ2dlcmVkIT09ZS50eXBlP1MuZXZlbnQuZGlzcGF0Y2guYXBwbHkodCxhcmd1bWVudHMpOnZvaWQgMH0pLGw9KGU9KGV8fCIiKS5tYXRjaChQKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlkPWc9KHM9YmUuZXhlYyhlW2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkJiYoZj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LGQ9KGk/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGQsZj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LGM9Uy5leHRlbmQoe3R5cGU6ZCxvcmlnVHlwZTpnLGRhdGE6cixoYW5kbGVyOm4sZ3VpZDpuLmd1aWQsc2VsZWN0b3I6aSxuZWVkc0NvbnRleHQ6aSYmUy5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGkpLG5hbWVzcGFjZTpoLmpvaW4oIi4iKX0sbyksKHA9dVtkXSl8fCgocD11W2RdPVtdKS5kZWxlZ2F0ZUNvdW50PTAsZi5zZXR1cCYmITEhPT1mLnNldHVwLmNhbGwodCxyLGgsYSl8fHQuYWRkRXZlbnRMaXN0ZW5lciYmdC5hZGRFdmVudExpc3RlbmVyKGQsYSkpLGYuYWRkJiYoZi5hZGQuY2FsbCh0LGMpLGMuaGFuZGxlci5ndWlkfHwoYy5oYW5kbGVyLmd1aWQ9bi5ndWlkKSksaT9wLnNwbGljZShwLmRlbGVnYXRlQ291bnQrKywwLGMpOnAucHVzaChjKSxTLmV2ZW50Lmdsb2JhbFtkXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHY9WS5oYXNEYXRhKGUpJiZZLmdldChlKTtpZih2JiYodT12LmV2ZW50cykpe2w9KHQ9KHR8fCIiKS5tYXRjaChQKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlpZihkPWc9KHM9YmUuZXhlYyh0W2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkKXtmPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30scD11W2Q9KHI/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGRdfHxbXSxzPXNbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksYT1vPXAubGVuZ3RoO3doaWxlKG8tLSljPXBbb10sIWkmJmchPT1jLm9yaWdUeXBlfHxuJiZuLmd1aWQhPT1jLmd1aWR8fHMmJiFzLnRlc3QoYy5uYW1lc3BhY2UpfHxyJiZyIT09Yy5zZWxlY3RvciYmKCIqKiIhPT1yfHwhYy5zZWxlY3Rvcil8fChwLnNwbGljZShvLDEpLGMuc2VsZWN0b3ImJnAuZGVsZWdhdGVDb3VudC0tLGYucmVtb3ZlJiZmLnJlbW92ZS5jYWxsKGUsYykpO2EmJiFwLmxlbmd0aCYmKGYudGVhcmRvd24mJiExIT09Zi50ZWFyZG93bi5jYWxsKGUsaCx2LmhhbmRsZSl8fFMucmVtb3ZlRXZlbnQoZSxkLHYuaGFuZGxlKSxkZWxldGUgdVtkXSl9ZWxzZSBmb3IoZCBpbiB1KVMuZXZlbnQucmVtb3ZlKGUsZCt0W2xdLG4sciwhMCk7Uy5pc0VtcHR5T2JqZWN0KHUpJiZZLnJlbW92ZShlLCJoYW5kbGUgZXZlbnRzIil9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGEscz1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksdT1TLmV2ZW50LmZpeChlKSxsPShZLmdldCh0aGlzLCJldmVudHMiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbdS50eXBlXXx8W10sYz1TLmV2ZW50LnNwZWNpYWxbdS50eXBlXXx8e307Zm9yKHNbMF09dSx0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylzW3RdPWFyZ3VtZW50c1t0XTtpZih1LmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWMucHJlRGlzcGF0Y2h8fCExIT09Yy5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsdSkpe2E9Uy5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsdSxsKSx0PTA7d2hpbGUoKGk9YVt0KytdKSYmIXUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7dS5jdXJyZW50VGFyZ2V0PWkuZWxlbSxuPTA7d2hpbGUoKG89aS5oYW5kbGVyc1tuKytdKSYmIXUuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl1LnJuYW1lc3BhY2UmJiExIT09by5uYW1lc3BhY2UmJiF1LnJuYW1lc3BhY2UudGVzdChvLm5hbWVzcGFjZSl8fCh1LmhhbmRsZU9iaj1vLHUuZGF0YT1vLmRhdGEsdm9pZCAwIT09KHI9KChTLmV2ZW50LnNwZWNpYWxbby5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fG8uaGFuZGxlcikuYXBwbHkoaS5lbGVtLHMpKSYmITE9PT0odS5yZXN1bHQ9cikmJih1LnByZXZlbnREZWZhdWx0KCksdS5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBjLnBvc3REaXNwYXRjaCYmYy5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLHUpLHUucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhLHM9W10sdT10LmRlbGVnYXRlQ291bnQsbD1lLnRhcmdldDtpZih1JiZsLm5vZGVUeXBlJiYhKCJjbGljayI9PT1lLnR5cGUmJjE8PWUuYnV0dG9uKSlmb3IoO2whPT10aGlzO2w9bC5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1sLm5vZGVUeXBlJiYoImNsaWNrIiE9PWUudHlwZXx8ITAhPT1sLmRpc2FibGVkKSl7Zm9yKG89W10sYT17fSxuPTA7bjx1O24rKyl2b2lkIDA9PT1hW2k9KHI9dFtuXSkuc2VsZWN0b3IrIiAiXSYmKGFbaV09ci5uZWVkc0NvbnRleHQ/LTE8UyhpLHRoaXMpLmluZGV4KGwpOlMuZmluZChpLHRoaXMsbnVsbCxbbF0pLmxlbmd0aCksYVtpXSYmby5wdXNoKHIpO28ubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczpvfSl9cmV0dXJuIGw9dGhpcyx1PHQubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczp0LnNsaWNlKHUpfSksc30sYWRkUHJvcDpmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLkV2ZW50LnByb3RvdHlwZSx0LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6bShlKT9mdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gZSh0aGlzLm9yaWdpbmFsRXZlbnQpfTpmdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50W3RdfSxzZXQ6ZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZX0pfX0pfSxmaXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbUy5leHBhbmRvXT9lOm5ldyBTLkV2ZW50KGUpfSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sY2xpY2s6e3NldHVwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZTZSh0LCJjbGljayIsd2UpLCExfSx0cmlnZ2VyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZTZSh0LCJjbGljayIpLCEwfSxfZGVmYXVsdDpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldDtyZXR1cm4gcGUudGVzdCh0LnR5cGUpJiZ0LmNsaWNrJiZBKHQsImlucHV0IikmJlkuZ2V0KHQsImNsaWNrIil8fEEodCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZS5yZXN1bHQmJmUub3JpZ2luYWxFdmVudCYmKGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1lLnJlc3VsdCl9fX19LFMucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbil9LFMuRXZlbnQ9ZnVuY3Rpb24oZSx0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBTLkV2ZW50KSlyZXR1cm4gbmV3IFMuRXZlbnQoZSx0KTtlJiZlLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1lLHRoaXMudHlwZT1lLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1lLmRlZmF1bHRQcmV2ZW50ZWQmJiExPT09ZS5yZXR1cm5WYWx1ZT93ZTpUZSx0aGlzLnRhcmdldD1lLnRhcmdldCYmMz09PWUudGFyZ2V0Lm5vZGVUeXBlP2UudGFyZ2V0LnBhcmVudE5vZGU6ZS50YXJnZXQsdGhpcy5jdXJyZW50VGFyZ2V0PWUuY3VycmVudFRhcmdldCx0aGlzLnJlbGF0ZWRUYXJnZXQ9ZS5yZWxhdGVkVGFyZ2V0KTp0aGlzLnR5cGU9ZSx0JiZTLmV4dGVuZCh0aGlzLHQpLHRoaXMudGltZVN0YW1wPWUmJmUudGltZVN0YW1wfHxEYXRlLm5vdygpLHRoaXNbUy5leHBhbmRvXT0hMH0sUy5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlMuRXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOlRlLGlzUHJvcGFnYXRpb25TdG9wcGVkOlRlLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOlRlLGlzU2ltdWxhdGVkOiExLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXdlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXdlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD13ZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX0sUy5lYWNoKHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNoYW5nZWRUb3VjaGVzOiEwLGN0cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtleTohMCxwYWdlWDohMCxwYWdlWTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjb2RlOiEwLGNoYXJDb2RlOiEwLGtleTohMCxrZXlDb2RlOiEwLGJ1dHRvbjohMCxidXR0b25zOiEwLGNsaWVudFg6ITAsY2xpZW50WTohMCxvZmZzZXRYOiEwLG9mZnNldFk6ITAscG9pbnRlcklkOiEwLHBvaW50ZXJUeXBlOiEwLHNjcmVlblg6ITAsc2NyZWVuWTohMCx0YXJnZXRUb3VjaGVzOiEwLHRvRWxlbWVudDohMCx0b3VjaGVzOiEwLHdoaWNoOiEwfSxTLmV2ZW50LmFkZFByb3ApLFMuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oZSx0KXtTLmV2ZW50LnNwZWNpYWxbZV09e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIFNlKHRoaXMsZSxDZSksITF9LHRyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gU2UodGhpcyxlKSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZGVsZWdhdGVUeXBlOnR9fSksUy5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVhdmU6InBvaW50ZXJvdXQifSxmdW5jdGlvbihlLGkpe1MuZXZlbnQuc3BlY2lhbFtlXT17ZGVsZWdhdGVUeXBlOmksYmluZFR5cGU6aSxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnJlbGF0ZWRUYXJnZXQscj1lLmhhbmRsZU9iajtyZXR1cm4gbiYmKG49PT10aGlzfHxTLmNvbnRhaW5zKHRoaXMsbikpfHwoZS50eXBlPXIub3JpZ1R5cGUsdD1yLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudHlwZT1pKSx0fX19KSxTLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIEVlKHRoaXMsZSx0LG4scil9LG9uZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gRWUodGhpcyxlLHQsbixyLDEpfSxvZmY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7aWYoZSYmZS5wcmV2ZW50RGVmYXVsdCYmZS5oYW5kbGVPYmopcmV0dXJuIHI9ZS5oYW5kbGVPYmosUyhlLmRlbGVnYXRlVGFyZ2V0KS5vZmYoci5uYW1lc3BhY2U/ci5vcmlnVHlwZSsiLiIrci5uYW1lc3BhY2U6ci5vcmlnVHlwZSxyLnNlbGVjdG9yLHIuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGUpe2ZvcihpIGluIGUpdGhpcy5vZmYoaSx0LGVbaV0pO3JldHVybiB0aGlzfXJldHVybiExIT09dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHR8fChuPXQsdD12b2lkIDApLCExPT09biYmKG49VGUpLHRoaXMuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQucmVtb3ZlKHRoaXMsZSxuLHQpfSl9fSk7dmFyIGtlPS88c2NyaXB0fDxzdHlsZXw8bGluay9pLEFlPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLE5lPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztmdW5jdGlvbiBqZShlLHQpe3JldHVybiBBKGUsInRhYmxlIikmJkEoMTEhPT10Lm5vZGVUeXBlP3Q6dC5maXJzdENoaWxkLCJ0ciIpJiZTKGUpLmNoaWxkcmVuKCJ0Ym9keSIpWzBdfHxlfWZ1bmN0aW9uIERlKGUpe3JldHVybiBlLnR5cGU9KG51bGwhPT1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKSsiLyIrZS50eXBlLGV9ZnVuY3Rpb24gcWUoZSl7cmV0dXJuInRydWUvIj09PShlLnR5cGV8fCIiKS5zbGljZSgwLDUpP2UudHlwZT1lLnR5cGUuc2xpY2UoNSk6ZS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxlfWZ1bmN0aW9uIExlKGUsdCl7dmFyIG4scixpLG8sYSxzO2lmKDE9PT10Lm5vZGVUeXBlKXtpZihZLmhhc0RhdGEoZSkmJihzPVkuZ2V0KGUpLmV2ZW50cykpZm9yKGkgaW4gWS5yZW1vdmUodCwiaGFuZGxlIGV2ZW50cyIpLHMpZm9yKG49MCxyPXNbaV0ubGVuZ3RoO248cjtuKyspUy5ldmVudC5hZGQodCxpLHNbaV1bbl0pO1EuaGFzRGF0YShlKSYmKG89US5hY2Nlc3MoZSksYT1TLmV4dGVuZCh7fSxvKSxRLnNldCh0LGEpKX19ZnVuY3Rpb24gSGUobixyLGksbyl7cj1nKHIpO3ZhciBlLHQsYSxzLHUsbCxjPTAsZj1uLmxlbmd0aCxwPWYtMSxkPXJbMF0saD1tKGQpO2lmKGh8fDE8ZiYmInN0cmluZyI9PXR5cGVvZiBkJiYheS5jaGVja0Nsb25lJiZBZS50ZXN0KGQpKXJldHVybiBuLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bi5lcShlKTtoJiYoclswXT1kLmNhbGwodGhpcyxlLHQuaHRtbCgpKSksSGUodCxyLGksbyl9KTtpZihmJiYodD0oZT14ZShyLG5bMF0ub3duZXJEb2N1bWVudCwhMSxuLG8pKS5maXJzdENoaWxkLDE9PT1lLmNoaWxkTm9kZXMubGVuZ3RoJiYoZT10KSx0fHxvKSl7Zm9yKHM9KGE9Uy5tYXAodmUoZSwic2NyaXB0IiksRGUpKS5sZW5ndGg7YzxmO2MrKyl1PWUsYyE9PXAmJih1PVMuY2xvbmUodSwhMCwhMCkscyYmUy5tZXJnZShhLHZlKHUsInNjcmlwdCIpKSksaS5jYWxsKG5bY10sdSxjKTtpZihzKWZvcihsPWFbYS5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxTLm1hcChhLHFlKSxjPTA7YzxzO2MrKyl1PWFbY10saGUudGVzdCh1LnR5cGV8fCIiKSYmIVkuYWNjZXNzKHUsImdsb2JhbEV2YWwiKSYmUy5jb250YWlucyhsLHUpJiYodS5zcmMmJiJtb2R1bGUiIT09KHUudHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk/Uy5fZXZhbFVybCYmIXUubm9Nb2R1bGUmJlMuX2V2YWxVcmwodS5zcmMse25vbmNlOnUubm9uY2V8fHUuZ2V0QXR0cmlidXRlKCJub25jZSIpfSxsKTpiKHUudGV4dENvbnRlbnQucmVwbGFjZShOZSwiIiksdSxsKSl9cmV0dXJuIG59ZnVuY3Rpb24gT2UoZSx0LG4pe2Zvcih2YXIgcixpPXQ/Uy5maWx0ZXIodCxlKTplLG89MDtudWxsIT0ocj1pW29dKTtvKyspbnx8MSE9PXIubm9kZVR5cGV8fFMuY2xlYW5EYXRhKHZlKHIpKSxyLnBhcmVudE5vZGUmJihuJiZpZShyKSYmeWUodmUociwic2NyaXB0IikpLHIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKSk7cmV0dXJuIGV9Uy5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGNsb25lOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjPWUuY2xvbmVOb2RlKCEwKSxmPWllKGUpO2lmKCEoeS5ub0Nsb25lQ2hlY2tlZHx8MSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZXx8Uy5pc1hNTERvYyhlKSkpZm9yKGE9dmUoYykscj0wLGk9KG89dmUoZSkpLmxlbmd0aDtyPGk7cisrKXM9b1tyXSx1PWFbcl0sdm9pZCAwLCJpbnB1dCI9PT0obD11Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpJiZwZS50ZXN0KHMudHlwZSk/dS5jaGVja2VkPXMuY2hlY2tlZDoiaW5wdXQiIT09bCYmInRleHRhcmVhIiE9PWx8fCh1LmRlZmF1bHRWYWx1ZT1zLmRlZmF1bHRWYWx1ZSk7aWYodClpZihuKWZvcihvPW98fHZlKGUpLGE9YXx8dmUoYykscj0wLGk9by5sZW5ndGg7cjxpO3IrKylMZShvW3JdLGFbcl0pO2Vsc2UgTGUoZSxjKTtyZXR1cm4gMDwoYT12ZShjLCJzY3JpcHQiKSkubGVuZ3RoJiZ5ZShhLCFmJiZ2ZShlLCJzY3JpcHQiKSksY30sY2xlYW5EYXRhOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLHIsaT1TLmV2ZW50LnNwZWNpYWwsbz0wO3ZvaWQgMCE9PShuPWVbb10pO28rKylpZihWKG4pKXtpZih0PW5bWS5leHBhbmRvXSl7aWYodC5ldmVudHMpZm9yKHIgaW4gdC5ldmVudHMpaVtyXT9TLmV2ZW50LnJlbW92ZShuLHIpOlMucmVtb3ZlRXZlbnQobixyLHQuaGFuZGxlKTtuW1kuZXhwYW5kb109dm9pZCAwfW5bUS5leHBhbmRvXSYmKG5bUS5leHBhbmRvXT12b2lkIDApfX19KSxTLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGUpe3JldHVybiBPZSh0aGlzLGUsITApfSxyZW1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIE9lKHRoaXMsZSl9LHRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuICQodGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZT9TLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9ZSl9KX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gSGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fGplKHRoaXMsZSkuYXBwZW5kQ2hpbGQoZSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIHQ9amUodGhpcyxlKTt0Lmluc2VydEJlZm9yZShlLHQuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PTA7bnVsbCE9KGU9dGhpc1t0XSk7dCsrKTE9PT1lLm5vZGVUeXBlJiYoUy5jbGVhbkRhdGEodmUoZSwhMSkpLGUudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihlLHQpe3JldHVybiBlPW51bGwhPWUmJmUsdD1udWxsPT10P2U6dCx0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBTLmNsb25lKHRoaXMsZSx0KX0pfSxodG1sOmZ1bmN0aW9uKGUpe3JldHVybiAkKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc1swXXx8e30sbj0wLHI9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09ZSYmMT09PXQubm9kZVR5cGUpcmV0dXJuIHQuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgZSYmIWtlLnRlc3QoZSkmJiFnZVsoZGUuZXhlYyhlKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2U9Uy5odG1sUHJlZmlsdGVyKGUpO3RyeXtmb3IoO248cjtuKyspMT09PSh0PXRoaXNbbl18fHt9KS5ub2RlVHlwZSYmKFMuY2xlYW5EYXRhKHZlKHQsITEpKSx0LmlubmVySFRNTD1lKTt0PTB9Y2F0Y2goZSl7fX10JiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGUpfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIG49W107cmV0dXJuIEhlKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtTLmluQXJyYXkodGhpcyxuKTwwJiYoUy5jbGVhbkRhdGEodmUodGhpcykpLHQmJnQucmVwbGFjZUNoaWxkKGUsdGhpcykpfSxuKX19KSxTLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihlLGEpe1MuZm5bZV09ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49W10scj1TKGUpLGk9ci5sZW5ndGgtMSxvPTA7bzw9aTtvKyspdD1vPT09aT90aGlzOnRoaXMuY2xvbmUoITApLFMocltvXSlbYV0odCksdS5hcHBseShuLHQuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhuKX19KTt2YXIgUGU9bmV3IFJlZ0V4cCgiXigiK2VlKyIpKD8hcHgpW2EteiVdKyQiLCJpIiksUmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O3JldHVybiB0JiZ0Lm9wZW5lcnx8KHQ9QyksdC5nZXRDb21wdXRlZFN0eWxlKGUpfSxNZT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXt9O2ZvcihpIGluIHQpb1tpXT1lLnN0eWxlW2ldLGUuc3R5bGVbaV09dFtpXTtmb3IoaSBpbiByPW4uY2FsbChlKSx0KWUuc3R5bGVbaV09b1tpXTtyZXR1cm4gcn0sSWU9bmV3IFJlZ0V4cChuZS5qb2luKCJ8IiksImkiKTtmdW5jdGlvbiBXZShlLHQsbil7dmFyIHIsaSxvLGEscz1lLnN0eWxlO3JldHVybihuPW58fFJlKGUpKSYmKCIiIT09KGE9bi5nZXRQcm9wZXJ0eVZhbHVlKHQpfHxuW3RdKXx8aWUoZSl8fChhPVMuc3R5bGUoZSx0KSksIXkucGl4ZWxCb3hTdHlsZXMoKSYmUGUudGVzdChhKSYmSWUudGVzdCh0KSYmKHI9cy53aWR0aCxpPXMubWluV2lkdGgsbz1zLm1heFdpZHRoLHMubWluV2lkdGg9cy5tYXhXaWR0aD1zLndpZHRoPWEsYT1uLndpZHRoLHMud2lkdGg9cixzLm1pbldpZHRoPWkscy5tYXhXaWR0aD1vKSksdm9pZCAwIT09YT9hKyIiOmF9ZnVuY3Rpb24gRmUoZSx0KXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7aWYoIWUoKSlyZXR1cm4odGhpcy5nZXQ9dCkuYXBwbHkodGhpcyxhcmd1bWVudHMpO2RlbGV0ZSB0aGlzLmdldH19fSFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpZihsKXt1LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7d2lkdGg6NjBweDttYXJnaW4tdG9wOjFweDtwYWRkaW5nOjA7Ym9yZGVyOjAiLGwuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6c2Nyb2xsO21hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NjAlO3RvcDoxJSIscmUuYXBwZW5kQ2hpbGQodSkuYXBwZW5kQ2hpbGQobCk7dmFyIGU9Qy5nZXRDb21wdXRlZFN0eWxlKGwpO249IjElIiE9PWUudG9wLHM9MTI9PT10KGUubWFyZ2luTGVmdCksbC5zdHlsZS5yaWdodD0iNjAlIixvPTM2PT09dChlLnJpZ2h0KSxyPTM2PT09dChlLndpZHRoKSxsLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaT0xMj09PXQobC5vZmZzZXRXaWR0aC8zKSxyZS5yZW1vdmVDaGlsZCh1KSxsPW51bGx9fWZ1bmN0aW9uIHQoZSl7cmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChlKSl9dmFyIG4scixpLG8sYSxzLHU9RS5jcmVhdGVFbGVtZW50KCJkaXYiKSxsPUUuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5zdHlsZSYmKGwuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixsLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIseS5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWwuc3R5bGUuYmFja2dyb3VuZENsaXAsUy5leHRlbmQoeSx7Ym94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHJ9LHBpeGVsQm94U3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxvfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxufSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHN9LHNjcm9sbGJveFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLGl9LHJlbGlhYmxlVHJEaW1lbnNpb25zOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLHI7cmV0dXJuIG51bGw9PWEmJihlPUUuY3JlYXRlRWxlbWVudCgidGFibGUiKSx0PUUuY3JlYXRlRWxlbWVudCgidHIiKSxuPUUuY3JlYXRlRWxlbWVudCgiZGl2IiksZS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZSIsdC5zdHlsZS5jc3NUZXh0PSJib3JkZXI6MXB4IHNvbGlkIix0LnN0eWxlLmhlaWdodD0iMXB4IixuLnN0eWxlLmhlaWdodD0iOXB4IixuLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixyZS5hcHBlbmRDaGlsZChlKS5hcHBlbmRDaGlsZCh0KS5hcHBlbmRDaGlsZChuKSxyPUMuZ2V0Q29tcHV0ZWRTdHlsZSh0KSxhPXBhcnNlSW50KHIuaGVpZ2h0LDEwKStwYXJzZUludChyLmJvcmRlclRvcFdpZHRoLDEwKStwYXJzZUludChyLmJvcmRlckJvdHRvbVdpZHRoLDEwKT09PXQub2Zmc2V0SGVpZ2h0LHJlLnJlbW92ZUNoaWxkKGUpKSxhfX0pKX0oKTt2YXIgQmU9WyJXZWJraXQiLCJNb3oiLCJtcyJdLCRlPUUuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsX2U9e307ZnVuY3Rpb24gemUoZSl7dmFyIHQ9Uy5jc3NQcm9wc1tlXXx8X2VbZV07cmV0dXJuIHR8fChlIGluICRlP2U6X2VbZV09ZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj1CZS5sZW5ndGg7d2hpbGUobi0tKWlmKChlPUJlW25dK3QpaW4gJGUpcmV0dXJuIGV9KGUpfHxlKX12YXIgVWU9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFhlPS9eLS0vLFZlPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxHZT17bGV0dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn07ZnVuY3Rpb24gWWUoZSx0LG4pe3ZhciByPXRlLmV4ZWModCk7cmV0dXJuIHI/TWF0aC5tYXgoMCxyWzJdLShufHwwKSkrKHJbM118fCJweCIpOnR9ZnVuY3Rpb24gUWUoZSx0LG4scixpLG8pe3ZhciBhPSJ3aWR0aCI9PT10PzE6MCxzPTAsdT0wO2lmKG49PT0ocj8iYm9yZGVyIjoiY29udGVudCIpKXJldHVybiAwO2Zvcig7YTw0O2ErPTIpIm1hcmdpbiI9PT1uJiYodSs9Uy5jc3MoZSxuK25lW2FdLCEwLGkpKSxyPygiY29udGVudCI9PT1uJiYodS09Uy5jc3MoZSwicGFkZGluZyIrbmVbYV0sITAsaSkpLCJtYXJnaW4iIT09biYmKHUtPVMuY3NzKGUsImJvcmRlciIrbmVbYV0rIldpZHRoIiwhMCxpKSkpOih1Kz1TLmNzcyhlLCJwYWRkaW5nIituZVthXSwhMCxpKSwicGFkZGluZyIhPT1uP3UrPVMuY3NzKGUsImJvcmRlciIrbmVbYV0rIldpZHRoIiwhMCxpKTpzKz1TLmNzcyhlLCJib3JkZXIiK25lW2FdKyJXaWR0aCIsITAsaSkpO3JldHVybiFyJiYwPD1vJiYodSs9TWF0aC5tYXgoMCxNYXRoLmNlaWwoZVsib2Zmc2V0Iit0WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKV0tby11LXMtLjUpKXx8MCksdX1mdW5jdGlvbiBKZShlLHQsbil7dmFyIHI9UmUoZSksaT0oIXkuYm94U2l6aW5nUmVsaWFibGUoKXx8bikmJiJib3JkZXItYm94Ij09PVMuY3NzKGUsImJveFNpemluZyIsITEsciksbz1pLGE9V2UoZSx0LHIpLHM9Im9mZnNldCIrdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSk7aWYoUGUudGVzdChhKSl7aWYoIW4pcmV0dXJuIGE7YT0iYXV0byJ9cmV0dXJuKCF5LmJveFNpemluZ1JlbGlhYmxlKCkmJml8fCF5LnJlbGlhYmxlVHJEaW1lbnNpb25zKCkmJkEoZSwidHIiKXx8ImF1dG8iPT09YXx8IXBhcnNlRmxvYXQoYSkmJiJpbmxpbmUiPT09Uy5jc3MoZSwiZGlzcGxheSIsITEscikpJiZlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiYoaT0iYm9yZGVyLWJveCI9PT1TLmNzcyhlLCJib3hTaXppbmciLCExLHIpLChvPXMgaW4gZSkmJihhPWVbc10pKSwoYT1wYXJzZUZsb2F0KGEpfHwwKStRZShlLHQsbnx8KGk/ImJvcmRlciI6ImNvbnRlbnQiKSxvLHIsYSkrInB4In1mdW5jdGlvbiBLZShlLHQsbixyLGkpe3JldHVybiBuZXcgS2UucHJvdG90eXBlLmluaXQoZSx0LG4scixpKX1TLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPVdlKGUsIm9wYWNpdHkiKTtyZXR1cm4iIj09PW4/IjEiOm59fX19LGNzc051bWJlcjp7YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsY29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGdyaWRBcmVhOiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTdGFydDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOnt9LHN0eWxlOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKGUmJjMhPT1lLm5vZGVUeXBlJiY4IT09ZS5ub2RlVHlwZSYmZS5zdHlsZSl7dmFyIGksbyxhLHM9WCh0KSx1PVhlLnRlc3QodCksbD1lLnN0eWxlO2lmKHV8fCh0PXplKHMpKSxhPVMuY3NzSG9va3NbdF18fFMuY3NzSG9va3Nbc10sdm9pZCAwPT09bilyZXR1cm4gYSYmImdldCJpbiBhJiZ2b2lkIDAhPT0oaT1hLmdldChlLCExLHIpKT9pOmxbdF07InN0cmluZyI9PT0obz10eXBlb2YgbikmJihpPXRlLmV4ZWMobikpJiZpWzFdJiYobj1zZShlLHQsaSksbz0ibnVtYmVyIiksbnVsbCE9biYmbj09biYmKCJudW1iZXIiIT09b3x8dXx8KG4rPWkmJmlbM118fChTLmNzc051bWJlcltzXT8iIjoicHgiKSkseS5jbGVhckNsb25lU3R5bGV8fCIiIT09bnx8MCE9PXQuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwobFt0XT0iaW5oZXJpdCIpLGEmJiJzZXQiaW4gYSYmdm9pZCAwPT09KG49YS5zZXQoZSxuLHIpKXx8KHU/bC5zZXRQcm9wZXJ0eSh0LG4pOmxbdF09bikpfX0sY3NzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzPVgodCk7cmV0dXJuIFhlLnRlc3QodCl8fCh0PXplKHMpKSwoYT1TLmNzc0hvb2tzW3RdfHxTLmNzc0hvb2tzW3NdKSYmImdldCJpbiBhJiYoaT1hLmdldChlLCEwLG4pKSx2b2lkIDA9PT1pJiYoaT1XZShlLHQscikpLCJub3JtYWwiPT09aSYmdCBpbiBHZSYmKGk9R2VbdF0pLCIiPT09bnx8bj8obz1wYXJzZUZsb2F0KGkpLCEwPT09bnx8aXNGaW5pdGUobyk/b3x8MDppKTppfX0pLFMuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oZSx1KXtTLmNzc0hvb2tzW3VdPXtnZXQ6ZnVuY3Rpb24oZSx0LG4pe2lmKHQpcmV0dXJuIVVlLnRlc3QoUy5jc3MoZSwiZGlzcGxheSIpKXx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aD9KZShlLHUsbik6TWUoZSxWZSxmdW5jdGlvbigpe3JldHVybiBKZShlLHUsbil9KX0sc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPVJlKGUpLG89IXkuc2Nyb2xsYm94U2l6ZSgpJiYiYWJzb2x1dGUiPT09aS5wb3NpdGlvbixhPShvfHxuKSYmImJvcmRlci1ib3giPT09Uy5jc3MoZSwiYm94U2l6aW5nIiwhMSxpKSxzPW4/UWUoZSx1LG4sYSxpKTowO3JldHVybiBhJiZvJiYocy09TWF0aC5jZWlsKGVbIm9mZnNldCIrdVswXS50b1VwcGVyQ2FzZSgpK3Uuc2xpY2UoMSldLXBhcnNlRmxvYXQoaVt1XSktUWUoZSx1LCJib3JkZXIiLCExLGkpLS41KSkscyYmKHI9dGUuZXhlYyh0KSkmJiJweCIhPT0oclszXXx8InB4IikmJihlLnN0eWxlW3VdPXQsdD1TLmNzcyhlLHUpKSxZZSgwLHQscyl9fX0pLFMuY3NzSG9va3MubWFyZ2luTGVmdD1GZSh5LnJlbGlhYmxlTWFyZ2luTGVmdCxmdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuKHBhcnNlRmxvYXQoV2UoZSwibWFyZ2luTGVmdCIpKXx8ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LU1lKGUse21hcmdpbkxlZnQ6MH0sZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSkpKyJweCJ9KSxTLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihpLG8pe1MuY3NzSG9va3NbaStvXT17ZXhwYW5kOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49e30scj0ic3RyaW5nIj09dHlwZW9mIGU/ZS5zcGxpdCgiICIpOltlXTt0PDQ7dCsrKW5baStuZVt0XStvXT1yW3RdfHxyW3QtMl18fHJbMF07cmV0dXJuIG59fSwibWFyZ2luIiE9PWkmJihTLmNzc0hvb2tzW2krb10uc2V0PVllKX0pLFMuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJCh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89e30sYT0wO2lmKEFycmF5LmlzQXJyYXkodCkpe2ZvcihyPVJlKGUpLGk9dC5sZW5ndGg7YTxpO2ErKylvW3RbYV1dPVMuY3NzKGUsdFthXSwhMSxyKTtyZXR1cm4gb31yZXR1cm4gdm9pZCAwIT09bj9TLnN0eWxlKGUsdCxuKTpTLmNzcyhlLHQpfSxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX19KSwoKFMuVHdlZW49S2UpLnByb3RvdHlwZT17Y29uc3RydWN0b3I6S2UsaW5pdDpmdW5jdGlvbihlLHQsbixyLGksbyl7dGhpcy5lbGVtPWUsdGhpcy5wcm9wPW4sdGhpcy5lYXNpbmc9aXx8Uy5lYXNpbmcuX2RlZmF1bHQsdGhpcy5vcHRpb25zPXQsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPXIsdGhpcy51bml0PW98fChTLmNzc051bWJlcltuXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGU9S2UucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGUmJmUuZ2V0P2UuZ2V0KHRoaXMpOktlLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihlKXt2YXIgdCxuPUtlLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9dD1TLmVhc2luZ1t0aGlzLmVhc2luZ10oZSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qZSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz10PWUsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKnQrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksbiYmbi5zZXQ/bi5zZXQodGhpcyk6S2UucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0pLmluaXQucHJvdG90eXBlPUtlLnByb3RvdHlwZSwoS2UucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiAxIT09ZS5lbGVtLm5vZGVUeXBlfHxudWxsIT1lLmVsZW1bZS5wcm9wXSYmbnVsbD09ZS5lbGVtLnN0eWxlW2UucHJvcF0/ZS5lbGVtW2UucHJvcF06KHQ9Uy5jc3MoZS5lbGVtLGUucHJvcCwiIikpJiYiYXV0byIhPT10P3Q6MH0sc2V0OmZ1bmN0aW9uKGUpe1MuZnguc3RlcFtlLnByb3BdP1MuZnguc3RlcFtlLnByb3BdKGUpOjEhPT1lLmVsZW0ubm9kZVR5cGV8fCFTLmNzc0hvb2tzW2UucHJvcF0mJm51bGw9PWUuZWxlbS5zdHlsZVt6ZShlLnByb3ApXT9lLmVsZW1bZS5wcm9wXT1lLm5vdzpTLnN0eWxlKGUuZWxlbSxlLnByb3AsZS5ub3crZS51bml0KX19fSkuc2Nyb2xsVG9wPUtlLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oZSl7ZS5lbGVtLm5vZGVUeXBlJiZlLmVsZW0ucGFyZW50Tm9kZSYmKGUuZWxlbVtlLnByb3BdPWUubm93KX19LFMuZWFzaW5nPXtsaW5lYXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHN3aW5nOmZ1bmN0aW9uKGUpe3JldHVybi41LU1hdGguY29zKGUqTWF0aC5QSSkvMn0sX2RlZmF1bHQ6InN3aW5nIn0sUy5meD1LZS5wcm90b3R5cGUuaW5pdCxTLmZ4LnN0ZXA9e307dmFyIFplLGV0LHR0LG50LHJ0PS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxpdD0vcXVldWVIb29rcyQvO2Z1bmN0aW9uIG90KCl7ZXQmJighMT09PUUuaGlkZGVuJiZDLnJlcXVlc3RBbmltYXRpb25GcmFtZT9DLnJlcXVlc3RBbmltYXRpb25GcmFtZShvdCk6Qy5zZXRUaW1lb3V0KG90LFMuZnguaW50ZXJ2YWwpLFMuZngudGljaygpKX1mdW5jdGlvbiBhdCgpe3JldHVybiBDLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtaZT12b2lkIDB9KSxaZT1EYXRlLm5vdygpfWZ1bmN0aW9uIHN0KGUsdCl7dmFyIG4scj0wLGk9e2hlaWdodDplfTtmb3IodD10PzE6MDtyPDQ7cis9Mi10KWlbIm1hcmdpbiIrKG49bmVbcl0pXT1pWyJwYWRkaW5nIituXT1lO3JldHVybiB0JiYoaS5vcGFjaXR5PWkud2lkdGg9ZSksaX1mdW5jdGlvbiB1dChlLHQsbil7Zm9yKHZhciByLGk9KGx0LnR3ZWVuZXJzW3RdfHxbXSkuY29uY2F0KGx0LnR3ZWVuZXJzWyIqIl0pLG89MCxhPWkubGVuZ3RoO288YTtvKyspaWYocj1pW29dLmNhbGwobix0LGUpKXJldHVybiByfWZ1bmN0aW9uIGx0KG8sZSx0KXt2YXIgbixhLHI9MCxpPWx0LnByZWZpbHRlcnMubGVuZ3RoLHM9Uy5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSB1LmVsZW19KSx1PWZ1bmN0aW9uKCl7aWYoYSlyZXR1cm4hMTtmb3IodmFyIGU9WmV8fGF0KCksdD1NYXRoLm1heCgwLGwuc3RhcnRUaW1lK2wuZHVyYXRpb24tZSksbj0xLSh0L2wuZHVyYXRpb258fDApLHI9MCxpPWwudHdlZW5zLmxlbmd0aDtyPGk7cisrKWwudHdlZW5zW3JdLnJ1bihuKTtyZXR1cm4gcy5ub3RpZnlXaXRoKG8sW2wsbix0XSksbjwxJiZpP3Q6KGl8fHMubm90aWZ5V2l0aChvLFtsLDEsMF0pLHMucmVzb2x2ZVdpdGgobyxbbF0pLCExKX0sbD1zLnByb21pc2Uoe2VsZW06byxwcm9wczpTLmV4dGVuZCh7fSxlKSxvcHRzOlMuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9LGVhc2luZzpTLmVhc2luZy5fZGVmYXVsdH0sdCksb3JpZ2luYWxQcm9wZXJ0aWVzOmUsb3JpZ2luYWxPcHRpb25zOnQsc3RhcnRUaW1lOlplfHxhdCgpLGR1cmF0aW9uOnQuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGUsdCl7dmFyIG49Uy5Ud2VlbihvLGwub3B0cyxlLHQsbC5vcHRzLnNwZWNpYWxFYXNpbmdbZV18fGwub3B0cy5lYXNpbmcpO3JldHVybiBsLnR3ZWVucy5wdXNoKG4pLG59LHN0b3A6ZnVuY3Rpb24oZSl7dmFyIHQ9MCxuPWU/bC50d2VlbnMubGVuZ3RoOjA7aWYoYSlyZXR1cm4gdGhpcztmb3IoYT0hMDt0PG47dCsrKWwudHdlZW5zW3RdLnJ1bigxKTtyZXR1cm4gZT8ocy5ub3RpZnlXaXRoKG8sW2wsMSwwXSkscy5yZXNvbHZlV2l0aChvLFtsLGVdKSk6cy5yZWplY3RXaXRoKG8sW2wsZV0pLHRoaXN9fSksYz1sLnByb3BzO2ZvcighZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhO2ZvcihuIGluIGUpaWYoaT10W3I9WChuKV0sbz1lW25dLEFycmF5LmlzQXJyYXkobykmJihpPW9bMV0sbz1lW25dPW9bMF0pLG4hPT1yJiYoZVtyXT1vLGRlbGV0ZSBlW25dKSwoYT1TLmNzc0hvb2tzW3JdKSYmImV4cGFuZCJpbiBhKWZvcihuIGluIG89YS5leHBhbmQobyksZGVsZXRlIGVbcl0sbyluIGluIGV8fChlW25dPW9bbl0sdFtuXT1pKTtlbHNlIHRbcl09aX0oYyxsLm9wdHMuc3BlY2lhbEVhc2luZyk7cjxpO3IrKylpZihuPWx0LnByZWZpbHRlcnNbcl0uY2FsbChsLG8sYyxsLm9wdHMpKXJldHVybiBtKG4uc3RvcCkmJihTLl9xdWV1ZUhvb2tzKGwuZWxlbSxsLm9wdHMucXVldWUpLnN0b3A9bi5zdG9wLmJpbmQobikpLG47cmV0dXJuIFMubWFwKGMsdXQsbCksbShsLm9wdHMuc3RhcnQpJiZsLm9wdHMuc3RhcnQuY2FsbChvLGwpLGwucHJvZ3Jlc3MobC5vcHRzLnByb2dyZXNzKS5kb25lKGwub3B0cy5kb25lLGwub3B0cy5jb21wbGV0ZSkuZmFpbChsLm9wdHMuZmFpbCkuYWx3YXlzKGwub3B0cy5hbHdheXMpLFMuZngudGltZXIoUy5leHRlbmQodSx7ZWxlbTpvLGFuaW06bCxxdWV1ZTpsLm9wdHMucXVldWV9KSksbH1TLkFuaW1hdGlvbj1TLmV4dGVuZChsdCx7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNyZWF0ZVR3ZWVuKGUsdCk7cmV0dXJuIHNlKG4uZWxlbSxlLHRlLmV4ZWModCksbiksbn1dfSx0d2VlbmVyOmZ1bmN0aW9uKGUsdCl7bShlKT8odD1lLGU9WyIqIl0pOmU9ZS5tYXRjaChQKTtmb3IodmFyIG4scj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyluPWVbcl0sbHQudHdlZW5lcnNbbl09bHQudHdlZW5lcnNbbl18fFtdLGx0LnR3ZWVuZXJzW25dLnVuc2hpZnQodCl9LHByZWZpbHRlcnM6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjLGY9IndpZHRoImluIHR8fCJoZWlnaHQiaW4gdCxwPXRoaXMsZD17fSxoPWUuc3R5bGUsZz1lLm5vZGVUeXBlJiZhZShlKSx2PVkuZ2V0KGUsImZ4c2hvdyIpO2ZvcihyIGluIG4ucXVldWV8fChudWxsPT0oYT1TLl9xdWV1ZUhvb2tzKGUsImZ4IikpLnVucXVldWVkJiYoYS51bnF1ZXVlZD0wLHM9YS5lbXB0eS5maXJlLGEuZW1wdHkuZmlyZT1mdW5jdGlvbigpe2EudW5xdWV1ZWR8fHMoKX0pLGEudW5xdWV1ZWQrKyxwLmFsd2F5cyhmdW5jdGlvbigpe3AuYWx3YXlzKGZ1bmN0aW9uKCl7YS51bnF1ZXVlZC0tLFMucXVldWUoZSwiZngiKS5sZW5ndGh8fGEuZW1wdHkuZmlyZSgpfSl9KSksdClpZihpPXRbcl0scnQudGVzdChpKSl7aWYoZGVsZXRlIHRbcl0sbz1vfHwidG9nZ2xlIj09PWksaT09PShnPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1pfHwhdnx8dm9pZCAwPT09dltyXSljb250aW51ZTtnPSEwfWRbcl09diYmdltyXXx8Uy5zdHlsZShlLHIpfWlmKCh1PSFTLmlzRW1wdHlPYmplY3QodCkpfHwhUy5pc0VtcHR5T2JqZWN0KGQpKWZvcihyIGluIGYmJjE9PT1lLm5vZGVUeXBlJiYobi5vdmVyZmxvdz1baC5vdmVyZmxvdyxoLm92ZXJmbG93WCxoLm92ZXJmbG93WV0sbnVsbD09KGw9diYmdi5kaXNwbGF5KSYmKGw9WS5nZXQoZSwiZGlzcGxheSIpKSwibm9uZSI9PT0oYz1TLmNzcyhlLCJkaXNwbGF5IikpJiYobD9jPWw6KGxlKFtlXSwhMCksbD1lLnN0eWxlLmRpc3BsYXl8fGwsYz1TLmNzcyhlLCJkaXNwbGF5IiksbGUoW2VdKSkpLCgiaW5saW5lIj09PWN8fCJpbmxpbmUtYmxvY2siPT09YyYmbnVsbCE9bCkmJiJub25lIj09PVMuY3NzKGUsImZsb2F0IikmJih1fHwocC5kb25lKGZ1bmN0aW9uKCl7aC5kaXNwbGF5PWx9KSxudWxsPT1sJiYoYz1oLmRpc3BsYXksbD0ibm9uZSI9PT1jPyIiOmMpKSxoLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxuLm92ZXJmbG93JiYoaC5vdmVyZmxvdz0iaGlkZGVuIixwLmFsd2F5cyhmdW5jdGlvbigpe2gub3ZlcmZsb3c9bi5vdmVyZmxvd1swXSxoLm92ZXJmbG93WD1uLm92ZXJmbG93WzFdLGgub3ZlcmZsb3dZPW4ub3ZlcmZsb3dbMl19KSksdT0hMSxkKXV8fCh2PyJoaWRkZW4iaW4gdiYmKGc9di5oaWRkZW4pOnY9WS5hY2Nlc3MoZSwiZnhzaG93Iix7ZGlzcGxheTpsfSksbyYmKHYuaGlkZGVuPSFnKSxnJiZsZShbZV0sITApLHAuZG9uZShmdW5jdGlvbigpe2ZvcihyIGluIGd8fGxlKFtlXSksWS5yZW1vdmUoZSwiZnhzaG93IiksZClTLnN0eWxlKGUscixkW3JdKX0pKSx1PXV0KGc/dltyXTowLHIscCksciBpbiB2fHwodltyXT11LnN0YXJ0LGcmJih1LmVuZD11LnN0YXJ0LHUuc3RhcnQ9MCkpfV0scHJlZmlsdGVyOmZ1bmN0aW9uKGUsdCl7dD9sdC5wcmVmaWx0ZXJzLnVuc2hpZnQoZSk6bHQucHJlZmlsdGVycy5wdXNoKGUpfX0pLFMuc3BlZWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUmJiJvYmplY3QiPT10eXBlb2YgZT9TLmV4dGVuZCh7fSxlKTp7Y29tcGxldGU6bnx8IW4mJnR8fG0oZSkmJmUsZHVyYXRpb246ZSxlYXNpbmc6biYmdHx8dCYmIW0odCkmJnR9O3JldHVybiBTLmZ4Lm9mZj9yLmR1cmF0aW9uPTA6Im51bWJlciIhPXR5cGVvZiByLmR1cmF0aW9uJiYoci5kdXJhdGlvbiBpbiBTLmZ4LnNwZWVkcz9yLmR1cmF0aW9uPVMuZnguc3BlZWRzW3IuZHVyYXRpb25dOnIuZHVyYXRpb249Uy5meC5zcGVlZHMuX2RlZmF1bHQpLG51bGwhPXIucXVldWUmJiEwIT09ci5xdWV1ZXx8KHIucXVldWU9ImZ4Iiksci5vbGQ9ci5jb21wbGV0ZSxyLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bShyLm9sZCkmJnIub2xkLmNhbGwodGhpcyksci5xdWV1ZSYmUy5kZXF1ZXVlKHRoaXMsci5xdWV1ZSl9LHJ9LFMuZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuZmlsdGVyKGFlKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OnR9LGUsbixyKX0sYW5pbWF0ZTpmdW5jdGlvbih0LGUsbixyKXt2YXIgaT1TLmlzRW1wdHlPYmplY3QodCksbz1TLnNwZWVkKGUsbixyKSxhPWZ1bmN0aW9uKCl7dmFyIGU9bHQodGhpcyxTLmV4dGVuZCh7fSx0KSxvKTsoaXx8WS5nZXQodGhpcywiZmluaXNoIikpJiZlLnN0b3AoITApfTtyZXR1cm4gYS5maW5pc2g9YSxpfHwhMT09PW8ucXVldWU/dGhpcy5lYWNoKGEpOnRoaXMucXVldWUoby5xdWV1ZSxhKX0sc3RvcDpmdW5jdGlvbihpLGUsbyl7dmFyIGE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdG9wO2RlbGV0ZSBlLnN0b3AsdChvKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBpJiYobz1lLGU9aSxpPXZvaWQgMCksZSYmdGhpcy5xdWV1ZShpfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0hMCx0PW51bGwhPWkmJmkrInF1ZXVlSG9va3MiLG49Uy50aW1lcnMscj1ZLmdldCh0aGlzKTtpZih0KXJbdF0mJnJbdF0uc3RvcCYmYShyW3RdKTtlbHNlIGZvcih0IGluIHIpclt0XSYmclt0XS5zdG9wJiZpdC50ZXN0KHQpJiZhKHJbdF0pO2Zvcih0PW4ubGVuZ3RoO3QtLTspblt0XS5lbGVtIT09dGhpc3x8bnVsbCE9aSYmblt0XS5xdWV1ZSE9PWl8fChuW3RdLmFuaW0uc3RvcChvKSxlPSExLG4uc3BsaWNlKHQsMSkpOyFlJiZvfHxTLmRlcXVldWUodGhpcyxpKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuITEhPT1hJiYoYT1hfHwiZngiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0PVkuZ2V0KHRoaXMpLG49dFthKyJxdWV1ZSJdLHI9dFthKyJxdWV1ZUhvb2tzIl0saT1TLnRpbWVycyxvPW4/bi5sZW5ndGg6MDtmb3IodC5maW5pc2g9ITAsUy5xdWV1ZSh0aGlzLGEsW10pLHImJnIuc3RvcCYmci5zdG9wLmNhbGwodGhpcywhMCksZT1pLmxlbmd0aDtlLS07KWlbZV0uZWxlbT09PXRoaXMmJmlbZV0ucXVldWU9PT1hJiYoaVtlXS5hbmltLnN0b3AoITApLGkuc3BsaWNlKGUsMSkpO2ZvcihlPTA7ZTxvO2UrKyluW2VdJiZuW2VdLmZpbmlzaCYmbltlXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgdC5maW5pc2h9KX19KSxTLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGUscil7dmFyIGk9Uy5mbltyXTtTLmZuW3JdPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT10eXBlb2YgZT9pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoc3QociwhMCksZSx0LG4pfX0pLFMuZWFjaCh7c2xpZGVEb3duOnN0KCJzaG93Iiksc2xpZGVVcDpzdCgiaGlkZSIpLHNsaWRlVG9nZ2xlOnN0KCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGUscil7Uy5mbltlXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuYW5pbWF0ZShyLGUsdCxuKX19KSxTLnRpbWVycz1bXSxTLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgZSx0PTAsbj1TLnRpbWVycztmb3IoWmU9RGF0ZS5ub3coKTt0PG4ubGVuZ3RoO3QrKykoZT1uW3RdKSgpfHxuW3RdIT09ZXx8bi5zcGxpY2UodC0tLDEpO24ubGVuZ3RofHxTLmZ4LnN0b3AoKSxaZT12b2lkIDB9LFMuZngudGltZXI9ZnVuY3Rpb24oZSl7Uy50aW1lcnMucHVzaChlKSxTLmZ4LnN0YXJ0KCl9LFMuZnguaW50ZXJ2YWw9MTMsUy5meC5zdGFydD1mdW5jdGlvbigpe2V0fHwoZXQ9ITAsb3QoKSl9LFMuZnguc3RvcD1mdW5jdGlvbigpe2V0PW51bGx9LFMuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LFMuZm4uZGVsYXk9ZnVuY3Rpb24ocixlKXtyZXR1cm4gcj1TLmZ4JiZTLmZ4LnNwZWVkc1tyXXx8cixlPWV8fCJmeCIsdGhpcy5xdWV1ZShlLGZ1bmN0aW9uKGUsdCl7dmFyIG49Qy5zZXRUaW1lb3V0KGUscik7dC5zdG9wPWZ1bmN0aW9uKCl7Qy5jbGVhclRpbWVvdXQobil9fSl9LHR0PUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxudD1FLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLmFwcGVuZENoaWxkKEUuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLHR0LnR5cGU9ImNoZWNrYm94Iix5LmNoZWNrT249IiIhPT10dC52YWx1ZSx5Lm9wdFNlbGVjdGVkPW50LnNlbGVjdGVkLCh0dD1FLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnZhbHVlPSJ0Iix0dC50eXBlPSJyYWRpbyIseS5yYWRpb1ZhbHVlPSJ0Ij09PXR0LnZhbHVlO3ZhciBjdCxmdD1TLmV4cHIuYXR0ckhhbmRsZTtTLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQpe3JldHVybiAkKHRoaXMsUy5hdHRyLGUsdCwxPGFyZ3VtZW50cy5sZW5ndGgpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtTLnJlbW92ZUF0dHIodGhpcyxlKX0pfX0pLFMuZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgZS5nZXRBdHRyaWJ1dGU/Uy5wcm9wKGUsdCxuKTooMT09PW8mJlMuaXNYTUxEb2MoZSl8fChpPVMuYXR0ckhvb2tzW3QudG9Mb3dlckNhc2UoKV18fChTLmV4cHIubWF0Y2guYm9vbC50ZXN0KHQpP2N0OnZvaWQgMCkpLHZvaWQgMCE9PW4/bnVsbD09PW4/dm9pZCBTLnJlbW92ZUF0dHIoZSx0KTppJiYic2V0ImluIGkmJnZvaWQgMCE9PShyPWkuc2V0KGUsbix0KSk/cjooZS5zZXRBdHRyaWJ1dGUodCxuKyIiKSxuKTppJiYiZ2V0ImluIGkmJm51bGwhPT0ocj1pLmdldChlLHQpKT9yOm51bGw9PShyPVMuZmluZC5hdHRyKGUsdCkpP3ZvaWQgMDpyKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oZSx0KXtpZigheS5yYWRpb1ZhbHVlJiYicmFkaW8iPT09dCYmQShlLCJpbnB1dCIpKXt2YXIgbj1lLnZhbHVlO3JldHVybiBlLnNldEF0dHJpYnV0ZSgidHlwZSIsdCksbiYmKGUudmFsdWU9biksdH19fX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MCxpPXQmJnQubWF0Y2goUCk7aWYoaSYmMT09PWUubm9kZVR5cGUpd2hpbGUobj1pW3IrK10pZS5yZW1vdmVBdHRyaWJ1dGUobil9fSksY3Q9e3NldDpmdW5jdGlvbihlLHQsbil7cmV0dXJuITE9PT10P1MucmVtb3ZlQXR0cihlLG4pOmUuc2V0QXR0cmlidXRlKG4sbiksbn19LFMuZWFjaChTLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihlLHQpe3ZhciBhPWZ0W3RdfHxTLmZpbmQuYXR0cjtmdFt0XT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXQudG9Mb3dlckNhc2UoKTtyZXR1cm4gbnx8KGk9ZnRbb10sZnRbb109cixyPW51bGwhPWEoZSx0LG4pP286bnVsbCxmdFtvXT1pKSxyfX0pO3ZhciBwdD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLGR0PS9eKD86YXxhcmVhKSQvaTtmdW5jdGlvbiBodChlKXtyZXR1cm4oZS5tYXRjaChQKXx8W10pLmpvaW4oIiAiKX1mdW5jdGlvbiBndChlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn1mdW5jdGlvbiB2dChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOiJzdHJpbmciPT10eXBlb2YgZSYmZS5tYXRjaChQKXx8W119Uy5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJCh0aGlzLFMucHJvcCxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbUy5wcm9wRml4W2VdfHxlXX0pfX0pLFMuZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiAxPT09byYmUy5pc1hNTERvYyhlKXx8KHQ9Uy5wcm9wRml4W3RdfHx0LGk9Uy5wcm9wSG9va3NbdF0pLHZvaWQgMCE9PW4/aSYmInNldCJpbiBpJiZ2b2lkIDAhPT0ocj1pLnNldChlLG4sdCkpP3I6ZVt0XT1uOmkmJiJnZXQiaW4gaSYmbnVsbCE9PShyPWkuZ2V0KGUsdCkpP3I6ZVt0XX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PVMuZmluZC5hdHRyKGUsInRhYmluZGV4Iik7cmV0dXJuIHQ/cGFyc2VJbnQodCwxMCk6cHQudGVzdChlLm5vZGVOYW1lKXx8ZHQudGVzdChlLm5vZGVOYW1lKSYmZS5ocmVmPzA6LTF9fX0scHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9fSkseS5vcHRTZWxlY3RlZHx8KFMucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiZ0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LG51bGx9LHNldDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7dCYmKHQuc2VsZWN0ZWRJbmRleCx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KSxTLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe1MucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxTLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIGUsbixyLGksbyxhLHMsdT0wO2lmKG0odCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLmFkZENsYXNzKHQuY2FsbCh0aGlzLGUsZ3QodGhpcykpKX0pO2lmKChlPXZ0KHQpKS5sZW5ndGgpd2hpbGUobj10aGlzW3UrK10paWYoaT1ndChuKSxyPTE9PT1uLm5vZGVUeXBlJiYiICIraHQoaSkrIiAiKXthPTA7d2hpbGUobz1lW2ErK10pci5pbmRleE9mKCIgIitvKyIgIik8MCYmKHIrPW8rIiAiKTtpIT09KHM9aHQocikpJiZuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHMpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxvLGEscyx1PTA7aWYobSh0KSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1ModGhpcykucmVtb3ZlQ2xhc3ModC5jYWxsKHRoaXMsZSxndCh0aGlzKSkpfSk7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCIiKTtpZigoZT12dCh0KSkubGVuZ3RoKXdoaWxlKG49dGhpc1t1KytdKWlmKGk9Z3Qobikscj0xPT09bi5ub2RlVHlwZSYmIiAiK2h0KGkpKyIgIil7YT0wO3doaWxlKG89ZVthKytdKXdoaWxlKC0xPHIuaW5kZXhPZigiICIrbysiICIpKXI9ci5yZXBsYWNlKCIgIitvKyIgIiwiICIpO2khPT0ocz1odChyKSkmJm4uc2V0QXR0cmlidXRlKCJjbGFzcyIscyl9cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGksdCl7dmFyIG89dHlwZW9mIGksYT0ic3RyaW5nIj09PW98fEFycmF5LmlzQXJyYXkoaSk7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdCYmYT90P3RoaXMuYWRkQ2xhc3MoaSk6dGhpcy5yZW1vdmVDbGFzcyhpKTptKGkpP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLnRvZ2dsZUNsYXNzKGkuY2FsbCh0aGlzLGUsZ3QodGhpcyksdCksdCl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0LG4scjtpZihhKXt0PTAsbj1TKHRoaXMpLHI9dnQoaSk7d2hpbGUoZT1yW3QrK10pbi5oYXNDbGFzcyhlKT9uLnJlbW92ZUNsYXNzKGUpOm4uYWRkQ2xhc3MoZSl9ZWxzZSB2b2lkIDAhPT1pJiYiYm9vbGVhbiIhPT1vfHwoKGU9Z3QodGhpcykpJiZZLnNldCh0aGlzLCJfX2NsYXNzTmFtZV9fIixlKSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixlfHwhMT09PWk/IiI6WS5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj0wO3Q9IiAiK2UrIiAiO3doaWxlKG49dGhpc1tyKytdKWlmKDE9PT1uLm5vZGVUeXBlJiYtMTwoIiAiK2h0KGd0KG4pKSsiICIpLmluZGV4T2YodCkpcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIHl0PS9cci9nO1MuZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24obil7dmFyIHIsZSxpLHQ9dGhpc1swXTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1tKG4pLHRoaXMuZWFjaChmdW5jdGlvbihlKXt2YXIgdDsxPT09dGhpcy5ub2RlVHlwZSYmKG51bGw9PSh0PWk/bi5jYWxsKHRoaXMsZSxTKHRoaXMpLnZhbCgpKTpuKT90PSIiOiJudW1iZXIiPT10eXBlb2YgdD90Kz0iIjpBcnJheS5pc0FycmF5KHQpJiYodD1TLm1hcCh0LGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9KSksKHI9Uy52YWxIb29rc1t0aGlzLnR5cGVdfHxTLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYic2V0ImluIHImJnZvaWQgMCE9PXIuc2V0KHRoaXMsdCwidmFsdWUiKXx8KHRoaXMudmFsdWU9dCkpfSkpOnQ/KHI9Uy52YWxIb29rc1t0LnR5cGVdfHxTLnZhbEhvb2tzW3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYiZ2V0ImluIHImJnZvaWQgMCE9PShlPXIuZ2V0KHQsInZhbHVlIikpP2U6InN0cmluZyI9PXR5cGVvZihlPXQudmFsdWUpP2UucmVwbGFjZSh5dCwiIik6bnVsbD09ZT8iIjplOnZvaWQgMH19KSxTLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PVMuZmluZC5hdHRyKGUsInZhbHVlIik7cmV0dXJuIG51bGwhPXQ/dDpodChTLnRleHQoZSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGk9ZS5vcHRpb25zLG89ZS5zZWxlY3RlZEluZGV4LGE9InNlbGVjdC1vbmUiPT09ZS50eXBlLHM9YT9udWxsOltdLHU9YT9vKzE6aS5sZW5ndGg7Zm9yKHI9bzwwP3U6YT9vOjA7cjx1O3IrKylpZigoKG49aVtyXSkuc2VsZWN0ZWR8fHI9PT1vKSYmIW4uZGlzYWJsZWQmJighbi5wYXJlbnROb2RlLmRpc2FibGVkfHwhQShuLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtpZih0PVMobikudmFsKCksYSlyZXR1cm4gdDtzLnB1c2godCl9cmV0dXJuIHN9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaT1lLm9wdGlvbnMsbz1TLm1ha2VBcnJheSh0KSxhPWkubGVuZ3RoO3doaWxlKGEtLSkoKHI9aVthXSkuc2VsZWN0ZWQ9LTE8Uy5pbkFycmF5KFMudmFsSG9va3Mub3B0aW9uLmdldChyKSxvKSkmJihuPSEwKTtyZXR1cm4gbnx8KGUuc2VsZWN0ZWRJbmRleD0tMSksb319fX0pLFMuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe1MudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGUuY2hlY2tlZD0tMTxTLmluQXJyYXkoUyhlKS52YWwoKSx0KX19LHkuY2hlY2tPbnx8KFMudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZS5nZXRBdHRyaWJ1dGUoInZhbHVlIik/Im9uIjplLnZhbHVlfSl9KSx5LmZvY3VzaW49Im9uZm9jdXNpbiJpbiBDO3ZhciBtdD0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8seHQ9ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX07Uy5leHRlbmQoUy5ldmVudCx7dHJpZ2dlcjpmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGwsYyxmLHA9W258fEVdLGQ9di5jYWxsKGUsInR5cGUiKT9lLnR5cGU6ZSxoPXYuY2FsbChlLCJuYW1lc3BhY2UiKT9lLm5hbWVzcGFjZS5zcGxpdCgiLiIpOltdO2lmKG89Zj1hPW49bnx8RSwzIT09bi5ub2RlVHlwZSYmOCE9PW4ubm9kZVR5cGUmJiFtdC50ZXN0KGQrUy5ldmVudC50cmlnZ2VyZWQpJiYoLTE8ZC5pbmRleE9mKCIuIikmJihkPShoPWQuc3BsaXQoIi4iKSkuc2hpZnQoKSxoLnNvcnQoKSksdT1kLmluZGV4T2YoIjoiKTwwJiYib24iK2QsKGU9ZVtTLmV4cGFuZG9dP2U6bmV3IFMuRXZlbnQoZCwib2JqZWN0Ij09dHlwZW9mIGUmJmUpKS5pc1RyaWdnZXI9cj8yOjMsZS5uYW1lc3BhY2U9aC5qb2luKCIuIiksZS5ybmFtZXNwYWNlPWUubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxlLnJlc3VsdD12b2lkIDAsZS50YXJnZXR8fChlLnRhcmdldD1uKSx0PW51bGw9PXQ/W2VdOlMubWFrZUFycmF5KHQsW2VdKSxjPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30scnx8IWMudHJpZ2dlcnx8ITEhPT1jLnRyaWdnZXIuYXBwbHkobix0KSkpe2lmKCFyJiYhYy5ub0J1YmJsZSYmIXgobikpe2ZvcihzPWMuZGVsZWdhdGVUeXBlfHxkLG10LnRlc3QocytkKXx8KG89by5wYXJlbnROb2RlKTtvO289by5wYXJlbnROb2RlKXAucHVzaChvKSxhPW87YT09PShuLm93bmVyRG9jdW1lbnR8fEUpJiZwLnB1c2goYS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3d8fEMpfWk9MDt3aGlsZSgobz1wW2krK10pJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWY9byxlLnR5cGU9MTxpP3M6Yy5iaW5kVHlwZXx8ZCwobD0oWS5nZXQobywiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUobnVsbCkpW2UudHlwZV0mJlkuZ2V0KG8sImhhbmRsZSIpKSYmbC5hcHBseShvLHQpLChsPXUmJm9bdV0pJiZsLmFwcGx5JiZWKG8pJiYoZS5yZXN1bHQ9bC5hcHBseShvLHQpLCExPT09ZS5yZXN1bHQmJmUucHJldmVudERlZmF1bHQoKSk7cmV0dXJuIGUudHlwZT1kLHJ8fGUuaXNEZWZhdWx0UHJldmVudGVkKCl8fGMuX2RlZmF1bHQmJiExIT09Yy5fZGVmYXVsdC5hcHBseShwLnBvcCgpLHQpfHwhVihuKXx8dSYmbShuW2RdKSYmIXgobikmJigoYT1uW3VdKSYmKG5bdV09bnVsbCksUy5ldmVudC50cmlnZ2VyZWQ9ZCxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYuYWRkRXZlbnRMaXN0ZW5lcihkLHh0KSxuW2RdKCksZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZmLnJlbW92ZUV2ZW50TGlzdGVuZXIoZCx4dCksUy5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGEmJihuW3VdPWEpKSxlLnJlc3VsdH19LHNpbXVsYXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1TLmV4dGVuZChuZXcgUy5FdmVudCxuLHt0eXBlOmUsaXNTaW11bGF0ZWQ6ITB9KTtTLmV2ZW50LnRyaWdnZXIocixudWxsLHQpfX0pLFMuZm4uZXh0ZW5kKHt0cmlnZ2VyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQudHJpZ2dlcihlLHQsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzWzBdO2lmKG4pcmV0dXJuIFMuZXZlbnQudHJpZ2dlcihlLHQsbiwhMCl9fSkseS5mb2N1c2lufHxTLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKG4scil7dmFyIGk9ZnVuY3Rpb24oZSl7Uy5ldmVudC5zaW11bGF0ZShyLGUudGFyZ2V0LFMuZXZlbnQuZml4KGUpKX07Uy5ldmVudC5zcGVjaWFsW3JdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcy5kb2N1bWVudHx8dGhpcyx0PVkuYWNjZXNzKGUscik7dHx8ZS5hZGRFdmVudExpc3RlbmVyKG4saSwhMCksWS5hY2Nlc3MoZSxyLCh0fHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMsdD1ZLmFjY2VzcyhlLHIpLTE7dD9ZLmFjY2VzcyhlLHIsdCk6KGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLGksITApLFkucmVtb3ZlKGUscikpfX19KTt2YXIgYnQ9Qy5sb2NhdGlvbix3dD17Z3VpZDpEYXRlLm5vdygpfSxUdD0vXD8vO1MucGFyc2VYTUw9ZnVuY3Rpb24oZSl7dmFyIHQsbjtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBudWxsO3RyeXt0PShuZXcgQy5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhlLCJ0ZXh0L3htbCIpfWNhdGNoKGUpe31yZXR1cm4gbj10JiZ0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpWzBdLHQmJiFufHxTLmVycm9yKCJJbnZhbGlkIFhNTDogIisobj9TLm1hcChuLmNoaWxkTm9kZXMsZnVuY3Rpb24oZSl7cmV0dXJuIGUudGV4dENvbnRlbnR9KS5qb2luKCJcbiIpOmUpKSx0fTt2YXIgQ3Q9L1xbXF0kLyxFdD0vXHI/XG4vZyxTdD0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksa3Q9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIEF0KG4sZSxyLGkpe3ZhciB0O2lmKEFycmF5LmlzQXJyYXkoZSkpUy5lYWNoKGUsZnVuY3Rpb24oZSx0KXtyfHxDdC50ZXN0KG4pP2kobix0KTpBdChuKyJbIisoIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT10P2U6IiIpKyJdIix0LHIsaSl9KTtlbHNlIGlmKHJ8fCJvYmplY3QiIT09dyhlKSlpKG4sZSk7ZWxzZSBmb3IodCBpbiBlKUF0KG4rIlsiK3QrIl0iLGVbdF0scixpKX1TLnBhcmFtPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49bSh0KT90KCk6dDtyW3IubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoZSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChudWxsPT1uPyIiOm4pfTtpZihudWxsPT1lKXJldHVybiIiO2lmKEFycmF5LmlzQXJyYXkoZSl8fGUuanF1ZXJ5JiYhUy5pc1BsYWluT2JqZWN0KGUpKVMuZWFjaChlLGZ1bmN0aW9uKCl7aSh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihuIGluIGUpQXQobixlW25dLHQsaSk7cmV0dXJuIHIuam9pbigiJiIpfSxTLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIFMucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT1TLnByb3AodGhpcywiZWxlbWVudHMiKTtyZXR1cm4gZT9TLm1ha2VBcnJheShlKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFTKHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSYma3QudGVzdCh0aGlzLm5vZGVOYW1lKSYmIVN0LnRlc3QoZSkmJih0aGlzLmNoZWNrZWR8fCFwZS50ZXN0KGUpKX0pLm1hcChmdW5jdGlvbihlLHQpe3ZhciBuPVModGhpcykudmFsKCk7cmV0dXJuIG51bGw9PW4/bnVsbDpBcnJheS5pc0FycmF5KG4pP1MubWFwKG4sZnVuY3Rpb24oZSl7cmV0dXJue25hbWU6dC5uYW1lLHZhbHVlOmUucmVwbGFjZShFdCwiXHJcbiIpfX0pOntuYW1lOnQubmFtZSx2YWx1ZTpuLnJlcGxhY2UoRXQsIlxyXG4iKX19KS5nZXQoKX19KTt2YXIgTnQ9LyUyMC9nLGp0PS8jLiokLyxEdD0vKFs/Jl0pXz1bXiZdKi8scXQ9L14oLio/KTpbIFx0XSooW15cclxuXSopJC9nbSxMdD0vXig/OkdFVHxIRUFEKSQvLEh0PS9eXC9cLy8sT3Q9e30sUHQ9e30sUnQ9IiovIi5jb25jYXQoIioiKSxNdD1FLmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBJdChvKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT0iKiIpO3ZhciBuLHI9MCxpPWUudG9Mb3dlckNhc2UoKS5tYXRjaChQKXx8W107aWYobSh0KSl3aGlsZShuPWlbcisrXSkiKyI9PT1uWzBdPyhuPW4uc2xpY2UoMSl8fCIqIiwob1tuXT1vW25dfHxbXSkudW5zaGlmdCh0KSk6KG9bbl09b1tuXXx8W10pLnB1c2godCl9fWZ1bmN0aW9uIFd0KHQsaSxvLGEpe3ZhciBzPXt9LHU9dD09PVB0O2Z1bmN0aW9uIGwoZSl7dmFyIHI7cmV0dXJuIHNbZV09ITAsUy5lYWNoKHRbZV18fFtdLGZ1bmN0aW9uKGUsdCl7dmFyIG49dChpLG8sYSk7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBufHx1fHxzW25dP3U/IShyPW4pOnZvaWQgMDooaS5kYXRhVHlwZXMudW5zaGlmdChuKSxsKG4pLCExKX0pLHJ9cmV0dXJuIGwoaS5kYXRhVHlwZXNbMF0pfHwhc1siKiJdJiZsKCIqIil9ZnVuY3Rpb24gRnQoZSx0KXt2YXIgbixyLGk9Uy5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihuIGluIHQpdm9pZCAwIT09dFtuXSYmKChpW25dP2U6cnx8KHI9e30pKVtuXT10W25dKTtyZXR1cm4gciYmUy5leHRlbmQoITAsZSxyKSxlfU10LmhyZWY9YnQuaHJlZixTLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6YnQuaHJlZix0eXBlOiJHRVQiLGlzTG9jYWw6L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8udGVzdChidC5wcm90b2NvbCksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpSdCx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDovXGJ4bWxcYi8saHRtbDovXGJodG1sLyxqc29uOi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpKU09OLnBhcnNlLCJ0ZXh0IHhtbCI6Uy5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/RnQoRnQoZSxTLmFqYXhTZXR0aW5ncyksdCk6RnQoUy5hamF4U2V0dGluZ3MsZSl9LGFqYXhQcmVmaWx0ZXI6SXQoT3QpLGFqYXhUcmFuc3BvcnQ6SXQoUHQpLGFqYXg6ZnVuY3Rpb24oZSx0KXsib2JqZWN0Ij09dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLHQ9dHx8e307dmFyIGMsZixwLG4sZCxyLGgsZyxpLG8sdj1TLmFqYXhTZXR1cCh7fSx0KSx5PXYuY29udGV4dHx8dixtPXYuY29udGV4dCYmKHkubm9kZVR5cGV8fHkuanF1ZXJ5KT9TKHkpOlMuZXZlbnQseD1TLkRlZmVycmVkKCksYj1TLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSx3PXYuc3RhdHVzQ29kZXx8e30sYT17fSxzPXt9LHU9ImNhbmNlbGVkIixUPXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoaCl7aWYoIW4pe249e307d2hpbGUodD1xdC5leGVjKHApKW5bdFsxXS50b0xvd2VyQ2FzZSgpKyIgIl09KG5bdFsxXS50b0xvd2VyQ2FzZSgpKyIgIl18fFtdKS5jb25jYXQodFsyXSl9dD1uW2UudG9Mb3dlckNhc2UoKSsiICJdfXJldHVybiBudWxsPT10P251bGw6dC5qb2luKCIsICIpfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaD9wOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09aCYmKGU9c1tlLnRvTG93ZXJDYXNlKCldPXNbZS50b0xvd2VyQ2FzZSgpXXx8ZSxhW2VdPXQpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWgmJih2Lm1pbWVUeXBlPWUpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZSlpZihoKVQuYWx3YXlzKGVbVC5zdGF0dXNdKTtlbHNlIGZvcih0IGluIGUpd1t0XT1bd1t0XSxlW3RdXTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8dTtyZXR1cm4gYyYmYy5hYm9ydCh0KSxsKDAsdCksdGhpc319O2lmKHgucHJvbWlzZShUKSx2LnVybD0oKGV8fHYudXJsfHxidC5ocmVmKSsiIikucmVwbGFjZShIdCxidC5wcm90b2NvbCsiLy8iKSx2LnR5cGU9dC5tZXRob2R8fHQudHlwZXx8di5tZXRob2R8fHYudHlwZSx2LmRhdGFUeXBlcz0odi5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKFApfHxbIiJdLG51bGw9PXYuY3Jvc3NEb21haW4pe3I9RS5jcmVhdGVFbGVtZW50KCJhIik7dHJ5e3IuaHJlZj12LnVybCxyLmhyZWY9ci5ocmVmLHYuY3Jvc3NEb21haW49TXQucHJvdG9jb2wrIi8vIitNdC5ob3N0IT1yLnByb3RvY29sKyIvLyIrci5ob3N0fWNhdGNoKGUpe3YuY3Jvc3NEb21haW49ITB9fWlmKHYuZGF0YSYmdi5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiB2LmRhdGEmJih2LmRhdGE9Uy5wYXJhbSh2LmRhdGEsdi50cmFkaXRpb25hbCkpLFd0KE90LHYsdCxUKSxoKXJldHVybiBUO2ZvcihpIGluKGc9Uy5ldmVudCYmdi5nbG9iYWwpJiYwPT1TLmFjdGl2ZSsrJiZTLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLHYudHlwZT12LnR5cGUudG9VcHBlckNhc2UoKSx2Lmhhc0NvbnRlbnQ9IUx0LnRlc3Qodi50eXBlKSxmPXYudXJsLnJlcGxhY2UoanQsIiIpLHYuaGFzQ29udGVudD92LmRhdGEmJnYucHJvY2Vzc0RhdGEmJjA9PT0odi5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiYodi5kYXRhPXYuZGF0YS5yZXBsYWNlKE50LCIrIikpOihvPXYudXJsLnNsaWNlKGYubGVuZ3RoKSx2LmRhdGEmJih2LnByb2Nlc3NEYXRhfHwic3RyaW5nIj09dHlwZW9mIHYuZGF0YSkmJihmKz0oVHQudGVzdChmKT8iJiI6Ij8iKSt2LmRhdGEsZGVsZXRlIHYuZGF0YSksITE9PT12LmNhY2hlJiYoZj1mLnJlcGxhY2UoRHQsIiQxIiksbz0oVHQudGVzdChmKT8iJiI6Ij8iKSsiXz0iK3d0Lmd1aWQrKytvKSx2LnVybD1mK28pLHYuaWZNb2RpZmllZCYmKFMubGFzdE1vZGlmaWVkW2ZdJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixTLmxhc3RNb2RpZmllZFtmXSksUy5ldGFnW2ZdJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLFMuZXRhZ1tmXSkpLCh2LmRhdGEmJnYuaGFzQ29udGVudCYmITEhPT12LmNvbnRlbnRUeXBlfHx0LmNvbnRlbnRUeXBlKSYmVC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLHYuY29udGVudFR5cGUpLFQuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0Iix2LmRhdGFUeXBlc1swXSYmdi5hY2NlcHRzW3YuZGF0YVR5cGVzWzBdXT92LmFjY2VwdHNbdi5kYXRhVHlwZXNbMF1dKygiKiIhPT12LmRhdGFUeXBlc1swXT8iLCAiK1J0KyI7IHE9MC4wMSI6IiIpOnYuYWNjZXB0c1siKiJdKSx2LmhlYWRlcnMpVC5zZXRSZXF1ZXN0SGVhZGVyKGksdi5oZWFkZXJzW2ldKTtpZih2LmJlZm9yZVNlbmQmJighMT09PXYuYmVmb3JlU2VuZC5jYWxsKHksVCx2KXx8aCkpcmV0dXJuIFQuYWJvcnQoKTtpZih1PSJhYm9ydCIsYi5hZGQodi5jb21wbGV0ZSksVC5kb25lKHYuc3VjY2VzcyksVC5mYWlsKHYuZXJyb3IpLGM9V3QoUHQsdix0LFQpKXtpZihULnJlYWR5U3RhdGU9MSxnJiZtLnRyaWdnZXIoImFqYXhTZW5kIixbVCx2XSksaClyZXR1cm4gVDt2LmFzeW5jJiYwPHYudGltZW91dCYmKGQ9Qy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VC5hYm9ydCgidGltZW91dCIpfSx2LnRpbWVvdXQpKTt0cnl7aD0hMSxjLnNlbmQoYSxsKX1jYXRjaChlKXtpZihoKXRocm93IGU7bCgtMSxlKX19ZWxzZSBsKC0xLCJObyBUcmFuc3BvcnQiKTtmdW5jdGlvbiBsKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD10O2h8fChoPSEwLGQmJkMuY2xlYXJUaW1lb3V0KGQpLGM9dm9pZCAwLHA9cnx8IiIsVC5yZWFkeVN0YXRlPTA8ZT80OjAsaT0yMDA8PWUmJmU8MzAwfHwzMDQ9PT1lLG4mJihzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzPWUuY29udGVudHMsdT1lLmRhdGFUeXBlczt3aGlsZSgiKiI9PT11WzBdKXUuc2hpZnQoKSx2b2lkIDA9PT1yJiYocj1lLm1pbWVUeXBlfHx0LmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7aWYocilmb3IoaSBpbiBzKWlmKHNbaV0mJnNbaV0udGVzdChyKSl7dS51bnNoaWZ0KGkpO2JyZWFrfWlmKHVbMF1pbiBuKW89dVswXTtlbHNle2ZvcihpIGluIG4pe2lmKCF1WzBdfHxlLmNvbnZlcnRlcnNbaSsiICIrdVswXV0pe289aTticmVha31hfHwoYT1pKX1vPW98fGF9aWYobylyZXR1cm4gbyE9PXVbMF0mJnUudW5zaGlmdChvKSxuW29dfSh2LFQsbikpLCFpJiYtMTxTLmluQXJyYXkoInNjcmlwdCIsdi5kYXRhVHlwZXMpJiZTLmluQXJyYXkoImpzb24iLHYuZGF0YVR5cGVzKTwwJiYodi5jb252ZXJ0ZXJzWyJ0ZXh0IHNjcmlwdCJdPWZ1bmN0aW9uKCl7fSkscz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGw9e30sYz1lLmRhdGFUeXBlcy5zbGljZSgpO2lmKGNbMV0pZm9yKGEgaW4gZS5jb252ZXJ0ZXJzKWxbYS50b0xvd2VyQ2FzZSgpXT1lLmNvbnZlcnRlcnNbYV07bz1jLnNoaWZ0KCk7d2hpbGUobylpZihlLnJlc3BvbnNlRmllbGRzW29dJiYobltlLnJlc3BvbnNlRmllbGRzW29dXT10KSwhdSYmciYmZS5kYXRhRmlsdGVyJiYodD1lLmRhdGFGaWx0ZXIodCxlLmRhdGFUeXBlKSksdT1vLG89Yy5zaGlmdCgpKWlmKCIqIj09PW8pbz11O2Vsc2UgaWYoIioiIT09dSYmdSE9PW8pe2lmKCEoYT1sW3UrIiAiK29dfHxsWyIqICIrb10pKWZvcihpIGluIGwpaWYoKHM9aS5zcGxpdCgiICIpKVsxXT09PW8mJihhPWxbdSsiICIrc1swXV18fGxbIiogIitzWzBdXSkpeyEwPT09YT9hPWxbaV06ITAhPT1sW2ldJiYobz1zWzBdLGMudW5zaGlmdChzWzFdKSk7YnJlYWt9aWYoITAhPT1hKWlmKGEmJmVbInRocm93cyJdKXQ9YSh0KTtlbHNlIHRyeXt0PWEodCl9Y2F0Y2goZSl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6YT9lOiJObyBjb252ZXJzaW9uIGZyb20gIit1KyIgdG8gIitvfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fSh2LHMsVCxpKSxpPyh2LmlmTW9kaWZpZWQmJigodT1ULmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIikpJiYoUy5sYXN0TW9kaWZpZWRbZl09dSksKHU9VC5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpKSYmKFMuZXRhZ1tmXT11KSksMjA0PT09ZXx8IkhFQUQiPT09di50eXBlP2w9Im5vY29udGVudCI6MzA0PT09ZT9sPSJub3Rtb2RpZmllZCI6KGw9cy5zdGF0ZSxvPXMuZGF0YSxpPSEoYT1zLmVycm9yKSkpOihhPWwsIWUmJmx8fChsPSJlcnJvciIsZTwwJiYoZT0wKSkpLFQuc3RhdHVzPWUsVC5zdGF0dXNUZXh0PSh0fHxsKSsiIixpP3gucmVzb2x2ZVdpdGgoeSxbbyxsLFRdKTp4LnJlamVjdFdpdGgoeSxbVCxsLGFdKSxULnN0YXR1c0NvZGUodyksdz12b2lkIDAsZyYmbS50cmlnZ2VyKGk/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixbVCx2LGk/bzphXSksYi5maXJlV2l0aCh5LFtULGxdKSxnJiYobS50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFtULHZdKSwtLVMuYWN0aXZlfHxTLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpKX1yZXR1cm4gVH0sZ2V0SlNPTjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFMuZ2V0KGUsdCxuLCJqc29uIil9LGdldFNjcmlwdDpmdW5jdGlvbihlLHQpe3JldHVybiBTLmdldChlLHZvaWQgMCx0LCJzY3JpcHQiKX19KSxTLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oZSxpKXtTW2ldPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBtKHQpJiYocj1yfHxuLG49dCx0PXZvaWQgMCksUy5hamF4KFMuZXh0ZW5kKHt1cmw6ZSx0eXBlOmksZGF0YVR5cGU6cixkYXRhOnQsc3VjY2VzczpufSxTLmlzUGxhaW5PYmplY3QoZSkmJmUpKX19KSxTLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZS5oZWFkZXJzKSJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpJiYoZS5jb250ZW50VHlwZT1lLmhlYWRlcnNbdF18fCIiKX0pLFMuX2V2YWxVcmw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBTLmFqYXgoe3VybDplLHR5cGU6IkdFVCIsZGF0YVR5cGU6InNjcmlwdCIsY2FjaGU6ITAsYXN5bmM6ITEsZ2xvYmFsOiExLGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oKXt9fSxkYXRhRmlsdGVyOmZ1bmN0aW9uKGUpe1MuZ2xvYmFsRXZhbChlLHQsbil9fSl9LFMuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0aGlzWzBdJiYobShlKSYmKGU9ZS5jYWxsKHRoaXNbMF0pKSx0PVMoZSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJnQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLHQubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpczt3aGlsZShlLmZpcnN0RWxlbWVudENoaWxkKWU9ZS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gZX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKG4pe3JldHVybiBtKG4pP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLndyYXBJbm5lcihuLmNhbGwodGhpcyxlKSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1TKHRoaXMpLHQ9ZS5jb250ZW50cygpO3QubGVuZ3RoP3Qud3JhcEFsbChuKTplLmFwcGVuZChuKX0pfSx3cmFwOmZ1bmN0aW9uKHQpe3ZhciBuPW0odCk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLndyYXBBbGwobj90LmNhbGwodGhpcyxlKTp0KX0pfSx1bndyYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucGFyZW50KGUpLm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24oKXtTKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KSx0aGlzfX0pLFMuZXhwci5wc2V1ZG9zLmhpZGRlbj1mdW5jdGlvbihlKXtyZXR1cm4hUy5leHByLnBzZXVkb3MudmlzaWJsZShlKX0sUy5leHByLnBzZXVkb3MudmlzaWJsZT1mdW5jdGlvbihlKXtyZXR1cm4hIShlLm9mZnNldFdpZHRofHxlLm9mZnNldEhlaWdodHx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9LFMuYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IEMuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goZSl7fX07dmFyIEJ0PXswOjIwMCwxMjIzOjIwNH0sJHQ9Uy5hamF4U2V0dGluZ3MueGhyKCk7eS5jb3JzPSEhJHQmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gJHQseS5hamF4PSR0PSEhJHQsUy5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGkpe3ZhciBvLGE7aWYoeS5jb3JzfHwkdCYmIWkuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWkueGhyKCk7aWYoci5vcGVuKGkudHlwZSxpLnVybCxpLmFzeW5jLGkudXNlcm5hbWUsaS5wYXNzd29yZCksaS54aHJGaWVsZHMpZm9yKG4gaW4gaS54aHJGaWVsZHMpcltuXT1pLnhockZpZWxkc1tuXTtmb3IobiBpbiBpLm1pbWVUeXBlJiZyLm92ZXJyaWRlTWltZVR5cGUmJnIub3ZlcnJpZGVNaW1lVHlwZShpLm1pbWVUeXBlKSxpLmNyb3NzRG9tYWlufHxlWyJYLVJlcXVlc3RlZC1XaXRoIl18fChlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0IiksZSlyLnNldFJlcXVlc3RIZWFkZXIobixlW25dKTtvPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe28mJihvPWE9ci5vbmxvYWQ9ci5vbmVycm9yPXIub25hYm9ydD1yLm9udGltZW91dD1yLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLCJhYm9ydCI9PT1lP3IuYWJvcnQoKToiZXJyb3IiPT09ZT8ibnVtYmVyIiE9dHlwZW9mIHIuc3RhdHVzP3QoMCwiZXJyb3IiKTp0KHIuc3RhdHVzLHIuc3RhdHVzVGV4dCk6dChCdFtyLnN0YXR1c118fHIuc3RhdHVzLHIuc3RhdHVzVGV4dCwidGV4dCIhPT0oci5yZXNwb25zZVR5cGV8fCJ0ZXh0Iil8fCJzdHJpbmciIT10eXBlb2Ygci5yZXNwb25zZVRleHQ/e2JpbmFyeTpyLnJlc3BvbnNlfTp7dGV4dDpyLnJlc3BvbnNlVGV4dH0sci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX0sci5vbmxvYWQ9bygpLGE9ci5vbmVycm9yPXIub250aW1lb3V0PW8oImVycm9yIiksdm9pZCAwIT09ci5vbmFib3J0P3Iub25hYm9ydD1hOnIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PXIucmVhZHlTdGF0ZSYmQy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7byYmYSgpfSl9LG89bygiYWJvcnQiKTt0cnl7ci5zZW5kKGkuaGFzQ29udGVudCYmaS5kYXRhfHxudWxsKX1jYXRjaChlKXtpZihvKXRocm93IGV9fSxhYm9ydDpmdW5jdGlvbigpe28mJm8oKX19fSksUy5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGUpe2UuY3Jvc3NEb21haW4mJihlLmNvbnRlbnRzLnNjcmlwdD0hMSl9KSxTLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xiKD86amF2YXxlY21hKXNjcmlwdFxiL30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihlKXtyZXR1cm4gUy5nbG9iYWxFdmFsKGUpLGV9fX0pLFMuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihlKXt2b2lkIDA9PT1lLmNhY2hlJiYoZS5jYWNoZT0hMSksZS5jcm9zc0RvbWFpbiYmKGUudHlwZT0iR0VUIil9KSxTLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24obil7dmFyIHIsaTtpZihuLmNyb3NzRG9tYWlufHxuLnNjcmlwdEF0dHJzKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsdCl7cj1TKCI8c2NyaXB0PiIpLmF0dHIobi5zY3JpcHRBdHRyc3x8e30pLnByb3Aoe2NoYXJzZXQ6bi5zY3JpcHRDaGFyc2V0LHNyYzpuLnVybH0pLm9uKCJsb2FkIGVycm9yIixpPWZ1bmN0aW9uKGUpe3IucmVtb3ZlKCksaT1udWxsLGUmJnQoImVycm9yIj09PWUudHlwZT80MDQ6MjAwLGUudHlwZSl9KSxFLmhlYWQuYXBwZW5kQ2hpbGQoclswXSl9LGFib3J0OmZ1bmN0aW9uKCl7aSYmaSgpfX19KTt2YXIgX3QsenQ9W10sVXQ9Lyg9KVw/KD89JnwkKXxcP1w/LztTLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGU9enQucG9wKCl8fFMuZXhwYW5kbysiXyIrd3QuZ3VpZCsrO3JldHVybiB0aGlzW2VdPSEwLGV9fSksUy5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE9ITEhPT1lLmpzb25wJiYoVXQudGVzdChlLnVybCk/InVybCI6InN0cmluZyI9PXR5cGVvZiBlLmRhdGEmJjA9PT0oZS5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZVdC50ZXN0KGUuZGF0YSkmJiJkYXRhIik7aWYoYXx8Impzb25wIj09PWUuZGF0YVR5cGVzWzBdKXJldHVybiByPWUuanNvbnBDYWxsYmFjaz1tKGUuanNvbnBDYWxsYmFjayk/ZS5qc29ucENhbGxiYWNrKCk6ZS5qc29ucENhbGxiYWNrLGE/ZVthXT1lW2FdLnJlcGxhY2UoVXQsIiQxIityKTohMSE9PWUuanNvbnAmJihlLnVybCs9KFR0LnRlc3QoZS51cmwpPyImIjoiPyIpK2UuanNvbnArIj0iK3IpLGUuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBvfHxTLmVycm9yKHIrIiB3YXMgbm90IGNhbGxlZCIpLG9bMF19LGUuZGF0YVR5cGVzWzBdPSJqc29uIixpPUNbcl0sQ1tyXT1mdW5jdGlvbigpe289YXJndW1lbnRzfSxuLmFsd2F5cyhmdW5jdGlvbigpe3ZvaWQgMD09PWk/UyhDKS5yZW1vdmVQcm9wKHIpOkNbcl09aSxlW3JdJiYoZS5qc29ucENhbGxiYWNrPXQuanNvbnBDYWxsYmFjayx6dC5wdXNoKHIpKSxvJiZtKGkpJiZpKG9bMF0pLG89aT12b2lkIDB9KSwic2NyaXB0In0pLHkuY3JlYXRlSFRNTERvY3VtZW50PSgoX3Q9RS5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHkpLmlubmVySFRNTD0iPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iLDI9PT1fdC5jaGlsZE5vZGVzLmxlbmd0aCksUy5wYXJzZUhUTUw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiJzdHJpbmciIT10eXBlb2YgZT9bXTooImJvb2xlYW4iPT10eXBlb2YgdCYmKG49dCx0PSExKSx0fHwoeS5jcmVhdGVIVE1MRG9jdW1lbnQ/KChyPSh0PUUuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKSkuY3JlYXRlRWxlbWVudCgiYmFzZSIpKS5ocmVmPUUubG9jYXRpb24uaHJlZix0LmhlYWQuYXBwZW5kQ2hpbGQocikpOnQ9RSksbz0hbiYmW10sKGk9Ti5leGVjKGUpKT9bdC5jcmVhdGVFbGVtZW50KGlbMV0pXTooaT14ZShbZV0sdCxvKSxvJiZvLmxlbmd0aCYmUyhvKS5yZW1vdmUoKSxTLm1lcmdlKFtdLGkuY2hpbGROb2RlcykpKTt2YXIgcixpLG99LFMuZm4ubG9hZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE9dGhpcyxzPWUuaW5kZXhPZigiICIpO3JldHVybi0xPHMmJihyPWh0KGUuc2xpY2UocykpLGU9ZS5zbGljZSgwLHMpKSxtKHQpPyhuPXQsdD12b2lkIDApOnQmJiJvYmplY3QiPT10eXBlb2YgdCYmKGk9IlBPU1QiKSwwPGEubGVuZ3RoJiZTLmFqYXgoe3VybDplLHR5cGU6aXx8IkdFVCIsZGF0YVR5cGU6Imh0bWwiLGRhdGE6dH0pLmRvbmUoZnVuY3Rpb24oZSl7bz1hcmd1bWVudHMsYS5odG1sKHI/UygiPGRpdj4iKS5hcHBlbmQoUy5wYXJzZUhUTUwoZSkpLmZpbmQocik6ZSl9KS5hbHdheXMobiYmZnVuY3Rpb24oZSx0KXthLmVhY2goZnVuY3Rpb24oKXtuLmFwcGx5KHRoaXMsb3x8W2UucmVzcG9uc2VUZXh0LHQsZV0pfSl9KSx0aGlzfSxTLmV4cHIucHNldWRvcy5hbmltYXRlZD1mdW5jdGlvbih0KXtyZXR1cm4gUy5ncmVwKFMudGltZXJzLGZ1bmN0aW9uKGUpe3JldHVybiB0PT09ZS5lbGVtfSkubGVuZ3RofSxTLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbD1TLmNzcyhlLCJwb3NpdGlvbiIpLGM9UyhlKSxmPXt9OyJzdGF0aWMiPT09bCYmKGUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIikscz1jLm9mZnNldCgpLG89Uy5jc3MoZSwidG9wIiksdT1TLmNzcyhlLCJsZWZ0IiksKCJhYnNvbHV0ZSI9PT1sfHwiZml4ZWQiPT09bCkmJi0xPChvK3UpLmluZGV4T2YoImF1dG8iKT8oYT0ocj1jLnBvc2l0aW9uKCkpLnRvcCxpPXIubGVmdCk6KGE9cGFyc2VGbG9hdChvKXx8MCxpPXBhcnNlRmxvYXQodSl8fDApLG0odCkmJih0PXQuY2FsbChlLG4sUy5leHRlbmQoe30scykpKSxudWxsIT10LnRvcCYmKGYudG9wPXQudG9wLXMudG9wK2EpLG51bGwhPXQubGVmdCYmKGYubGVmdD10LmxlZnQtcy5sZWZ0K2kpLCJ1c2luZyJpbiB0P3QudXNpbmcuY2FsbChlLGYpOmMuY3NzKGYpfX0sUy5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbih0KXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT10P3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1Mub2Zmc2V0LnNldE9mZnNldCh0aGlzLHQsZSl9KTt2YXIgZSxuLHI9dGhpc1swXTtyZXR1cm4gcj9yLmdldENsaWVudFJlY3RzKCkubGVuZ3RoPyhlPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1yLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcse3RvcDplLnRvcCtuLnBhZ2VZT2Zmc2V0LGxlZnQ6ZS5sZWZ0K24ucGFnZVhPZmZzZXR9KTp7dG9wOjAsbGVmdDowfTp2b2lkIDB9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGUsdCxuLHI9dGhpc1swXSxpPXt0b3A6MCxsZWZ0OjB9O2lmKCJmaXhlZCI9PT1TLmNzcyhyLCJwb3NpdGlvbiIpKXQ9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlbHNle3Q9dGhpcy5vZmZzZXQoKSxuPXIub3duZXJEb2N1bWVudCxlPXIub2Zmc2V0UGFyZW50fHxuLmRvY3VtZW50RWxlbWVudDt3aGlsZShlJiYoZT09PW4uYm9keXx8ZT09PW4uZG9jdW1lbnRFbGVtZW50KSYmInN0YXRpYyI9PT1TLmNzcyhlLCJwb3NpdGlvbiIpKWU9ZS5wYXJlbnROb2RlO2UmJmUhPT1yJiYxPT09ZS5ub2RlVHlwZSYmKChpPVMoZSkub2Zmc2V0KCkpLnRvcCs9Uy5jc3MoZSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxpLmxlZnQrPVMuY3NzKGUsImJvcmRlckxlZnRXaWR0aCIsITApKX1yZXR1cm57dG9wOnQudG9wLWkudG9wLVMuY3NzKHIsIm1hcmdpblRvcCIsITApLGxlZnQ6dC5sZWZ0LWkubGVmdC1TLmNzcyhyLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vZmZzZXRQYXJlbnQ7d2hpbGUoZSYmInN0YXRpYyI9PT1TLmNzcyhlLCJwb3NpdGlvbiIpKWU9ZS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGV8fHJlfSl9fSksUy5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKHQsaSl7dmFyIG89InBhZ2VZT2Zmc2V0Ij09PWk7Uy5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gJCh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZih4KGUpP3I9ZTo5PT09ZS5ub2RlVHlwZSYmKHI9ZS5kZWZhdWx0Vmlldyksdm9pZCAwPT09bilyZXR1cm4gcj9yW2ldOmVbdF07cj9yLnNjcm9sbFRvKG8/ci5wYWdlWE9mZnNldDpuLG8/bjpyLnBhZ2VZT2Zmc2V0KTplW3RdPW59LHQsZSxhcmd1bWVudHMubGVuZ3RoKX19KSxTLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oZSxuKXtTLmNzc0hvb2tzW25dPUZlKHkucGl4ZWxQb3NpdGlvbixmdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuIHQ9V2UoZSxuKSxQZS50ZXN0KHQpP1MoZSkucG9zaXRpb24oKVtuXSsicHgiOnR9KX0pLFMuZWFjaCh7SGVpZ2h0OiJoZWlnaHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9uKGEscyl7Uy5lYWNoKHtwYWRkaW5nOiJpbm5lciIrYSxjb250ZW50OnMsIiI6Im91dGVyIithfSxmdW5jdGlvbihyLG8pe1MuZm5bb109ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoJiYocnx8ImJvb2xlYW4iIT10eXBlb2YgZSksaT1yfHwoITA9PT1lfHwhMD09PXQ/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVybiAkKHRoaXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiB4KGUpPzA9PT1vLmluZGV4T2YoIm91dGVyIik/ZVsiaW5uZXIiK2FdOmUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2FdOjk9PT1lLm5vZGVUeXBlPyhyPWUuZG9jdW1lbnRFbGVtZW50LE1hdGgubWF4KGUuYm9keVsic2Nyb2xsIithXSxyWyJzY3JvbGwiK2FdLGUuYm9keVsib2Zmc2V0IithXSxyWyJvZmZzZXQiK2FdLHJbImNsaWVudCIrYV0pKTp2b2lkIDA9PT1uP1MuY3NzKGUsdCxpKTpTLnN0eWxlKGUsdCxuLGkpfSxzLG4/ZTp2b2lkIDAsbil9fSl9KSxTLmVhY2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0ZSIsImFqYXhFcnJvciIsImFqYXhTdWNjZXNzIiwiYWpheFNlbmQiXSxmdW5jdGlvbihlLHQpe1MuZm5bdF09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub24odCxlKX19KSxTLmZuLmV4dGVuZCh7YmluZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMub24oZSxudWxsLHQsbil9LHVuYmluZDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm9mZihlLG51bGwsdCl9LGRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLm9uKHQsZSxuLHIpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoZSwiKioiKTp0aGlzLm9mZih0LGV8fCIqKiIsbil9LGhvdmVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubW91c2VlbnRlcihlKS5tb3VzZWxlYXZlKHR8fGUpfX0pLFMuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLG4pe1MuZm5bbl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMDxhcmd1bWVudHMubGVuZ3RoP3RoaXMub24obixudWxsLGUsdCk6dGhpcy50cmlnZ2VyKG4pfX0pO3ZhciBYdD0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2c7Uy5wcm94eT1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaTtpZigic3RyaW5nIj09dHlwZW9mIHQmJihuPWVbdF0sdD1lLGU9biksbShlKSlyZXR1cm4gcj1zLmNhbGwoYXJndW1lbnRzLDIpLChpPWZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodHx8dGhpcyxyLmNvbmNhdChzLmNhbGwoYXJndW1lbnRzKSkpfSkuZ3VpZD1lLmd1aWQ9ZS5ndWlkfHxTLmd1aWQrKyxpfSxTLmhvbGRSZWFkeT1mdW5jdGlvbihlKXtlP1MucmVhZHlXYWl0Kys6Uy5yZWFkeSghMCl9LFMuaXNBcnJheT1BcnJheS5pc0FycmF5LFMucGFyc2VKU09OPUpTT04ucGFyc2UsUy5ub2RlTmFtZT1BLFMuaXNGdW5jdGlvbj1tLFMuaXNXaW5kb3c9eCxTLmNhbWVsQ2FzZT1YLFMudHlwZT13LFMubm93PURhdGUubm93LFMuaXNOdW1lcmljPWZ1bmN0aW9uKGUpe3ZhciB0PVMudHlwZShlKTtyZXR1cm4oIm51bWJlciI9PT10fHwic3RyaW5nIj09PXQpJiYhaXNOYU4oZS1wYXJzZUZsb2F0KGUpKX0sUy50cmltPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOihlKyIiKS5yZXBsYWNlKFh0LCIiKX0sImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIFN9KTt2YXIgVnQ9Qy5qUXVlcnksR3Q9Qy4kO3JldHVybiBTLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIEMuJD09PVMmJihDLiQ9R3QpLGUmJkMualF1ZXJ5PT09UyYmKEMualF1ZXJ5PVZ0KSxTfSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihDLmpRdWVyeT1DLiQ9UyksU30pOwo="></script>
<link href="data:text/css,%3Aroot%7B%2D%2Ddt%2Drow%2Dselected%3A%2013%2C%20110%2C%20253%3B%2D%2Ddt%2Drow%2Dselected%2Dtext%3A%20255%2C%20255%2C%20255%3B%2D%2Ddt%2Drow%2Dselected%2Dlink%3A%209%2C%2010%2C%2011%3B%2D%2Ddt%2Drow%2Dstripe%3A%200%2C%200%2C%200%3B%2D%2Ddt%2Drow%2Dhover%3A%200%2C%200%2C%200%3B%2D%2Ddt%2Dcolumn%2Dordering%3A%200%2C%200%2C%200%3B%2D%2Ddt%2Dhtml%2Dbackground%3A%20white%7D%3Aroot%2Edark%7B%2D%2Ddt%2Dhtml%2Dbackground%3A%20rgb%2833%2C%2037%2C%2041%29%7Dtable%2EdataTable%20td%2Edt%2Dcontrol%7Btext%2Dalign%3Acenter%3Bcursor%3Apointer%7Dtable%2EdataTable%20td%2Edt%2Dcontrol%3Abefore%7Bdisplay%3Ainline%2Dblock%3Bcolor%3Argba%280%2C%200%2C%200%2C%200%2E5%29%3Bcontent%3A%22%E2%96%BA%22%7Dtable%2EdataTable%20tr%2Edt%2DhasChild%20td%2Edt%2Dcontrol%3Abefore%7Bcontent%3A%22%E2%96%BC%22%7Dhtml%2Edark%20table%2EdataTable%20td%2Edt%2Dcontrol%3Abefore%7Bcolor%3Argba%28255%2C%20255%2C%20255%2C%200%2E5%29%7Dhtml%2Edark%20table%2EdataTable%20tr%2Edt%2DhasChild%20td%2Edt%2Dcontrol%3Abefore%7Bcolor%3Argba%28255%2C%20255%2C%20255%2C%200%2E5%29%7Dtable%2EdataTable%20thead%3Etr%3Eth%2Esorting%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fasc%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fdesc%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fasc%5Fdisabled%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fdesc%5Fdisabled%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fasc%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fdesc%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fasc%5Fdisabled%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fdesc%5Fdisabled%7Bcursor%3Apointer%3Bposition%3Arelative%3Bpadding%2Dright%3A26px%7Dtable%2EdataTable%20thead%3Etr%3Eth%2Esorting%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fasc%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fasc%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fdesc%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fdesc%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fasc%5Fdisabled%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fasc%5Fdisabled%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fdesc%5Fdisabled%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fdesc%5Fdisabled%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fasc%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fasc%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fdesc%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fdesc%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fasc%5Fdisabled%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fasc%5Fdisabled%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fdesc%5Fdisabled%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fdesc%5Fdisabled%3Aafter%7Bposition%3Aabsolute%3Bdisplay%3Ablock%3Bopacity%3A%2E125%3Bright%3A10px%3Bline%2Dheight%3A9px%3Bfont%2Dsize%3A%2E8em%7Dtable%2EdataTable%20thead%3Etr%3Eth%2Esorting%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fasc%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fdesc%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fasc%5Fdisabled%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fdesc%5Fdisabled%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fasc%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fdesc%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fasc%5Fdisabled%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fdesc%5Fdisabled%3Abefore%7Bbottom%3A50%25%3Bcontent%3A%22%E2%96%B2%22%3Bcontent%3A%22%E2%96%B2%22%2F%22%22%7Dtable%2EdataTable%20thead%3Etr%3Eth%2Esorting%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fasc%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fdesc%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fasc%5Fdisabled%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fdesc%5Fdisabled%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fasc%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fdesc%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fasc%5Fdisabled%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fdesc%5Fdisabled%3Aafter%7Btop%3A50%25%3Bcontent%3A%22%E2%96%BC%22%3Bcontent%3A%22%E2%96%BC%22%2F%22%22%7Dtable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fasc%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fdesc%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fasc%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fdesc%3Aafter%7Bopacity%3A%2E6%7Dtable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fdesc%5Fdisabled%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Eth%2Esorting%5Fasc%5Fdisabled%3Abefore%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fdesc%5Fdisabled%3Aafter%2Ctable%2EdataTable%20thead%3Etr%3Etd%2Esorting%5Fasc%5Fdisabled%3Abefore%7Bdisplay%3Anone%7Dtable%2EdataTable%20thead%3Etr%3Eth%3Aactive%2Ctable%2EdataTable%20thead%3Etr%3Etd%3Aactive%7Boutline%3Anone%7Ddiv%2EdataTables%5FscrollBody%3Etable%2EdataTable%3Ethead%3Etr%3Eth%3Abefore%2Cdiv%2EdataTables%5FscrollBody%3Etable%2EdataTable%3Ethead%3Etr%3Eth%3Aafter%2Cdiv%2EdataTables%5FscrollBody%3Etable%2EdataTable%3Ethead%3Etr%3Etd%3Abefore%2Cdiv%2EdataTables%5FscrollBody%3Etable%2EdataTable%3Ethead%3Etr%3Etd%3Aafter%7Bdisplay%3Anone%7Ddiv%2EdataTables%5Fprocessing%7Bposition%3Aabsolute%3Btop%3A50%25%3Bleft%3A50%25%3Bwidth%3A200px%3Bmargin%2Dleft%3A%2D100px%3Bmargin%2Dtop%3A%2D26px%3Btext%2Dalign%3Acenter%3Bpadding%3A2px%7Ddiv%2EdataTables%5Fprocessing%3Ediv%3Alast%2Dchild%7Bposition%3Arelative%3Bwidth%3A80px%3Bheight%3A15px%3Bmargin%3A1em%20auto%7Ddiv%2EdataTables%5Fprocessing%3Ediv%3Alast%2Dchild%3Ediv%7Bposition%3Aabsolute%3Btop%3A0%3Bwidth%3A13px%3Bheight%3A13px%3Bborder%2Dradius%3A50%25%3Bbackground%3Argb%2813%2C%20110%2C%20253%29%3Bbackground%3Argb%28var%28%2D%2Ddt%2Drow%2Dselected%29%29%3Banimation%2Dtiming%2Dfunction%3Acubic%2Dbezier%280%2C%201%2C%201%2C%200%29%7Ddiv%2EdataTables%5Fprocessing%3Ediv%3Alast%2Dchild%3Ediv%3Anth%2Dchild%281%29%7Bleft%3A8px%3Banimation%3Adatatables%2Dloader%2D1%20%2E6s%20infinite%7Ddiv%2EdataTables%5Fprocessing%3Ediv%3Alast%2Dchild%3Ediv%3Anth%2Dchild%282%29%7Bleft%3A8px%3Banimation%3Adatatables%2Dloader%2D2%20%2E6s%20infinite%7Ddiv%2EdataTables%5Fprocessing%3Ediv%3Alast%2Dchild%3Ediv%3Anth%2Dchild%283%29%7Bleft%3A32px%3Banimation%3Adatatables%2Dloader%2D2%20%2E6s%20infinite%7Ddiv%2EdataTables%5Fprocessing%3Ediv%3Alast%2Dchild%3Ediv%3Anth%2Dchild%284%29%7Bleft%3A56px%3Banimation%3Adatatables%2Dloader%2D3%20%2E6s%20infinite%7D%40keyframes%20datatables%2Dloader%2D1%7B0%25%7Btransform%3Ascale%280%29%7D100%25%7Btransform%3Ascale%281%29%7D%7D%40keyframes%20datatables%2Dloader%2D3%7B0%25%7Btransform%3Ascale%281%29%7D100%25%7Btransform%3Ascale%280%29%7D%7D%40keyframes%20datatables%2Dloader%2D2%7B0%25%7Btransform%3Atranslate%280%2C%200%29%7D100%25%7Btransform%3Atranslate%2824px%2C%200%29%7D%7Dtable%2EdataTable%2Enowrap%20th%2Ctable%2EdataTable%2Enowrap%20td%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%20th%2Edt%2Dleft%2Ctable%2EdataTable%20td%2Edt%2Dleft%7Btext%2Dalign%3Aleft%7Dtable%2EdataTable%20th%2Edt%2Dcenter%2Ctable%2EdataTable%20td%2Edt%2Dcenter%2Ctable%2EdataTable%20td%2EdataTables%5Fempty%7Btext%2Dalign%3Acenter%7Dtable%2EdataTable%20th%2Edt%2Dright%2Ctable%2EdataTable%20td%2Edt%2Dright%7Btext%2Dalign%3Aright%7Dtable%2EdataTable%20th%2Edt%2Djustify%2Ctable%2EdataTable%20td%2Edt%2Djustify%7Btext%2Dalign%3Ajustify%7Dtable%2EdataTable%20th%2Edt%2Dnowrap%2Ctable%2EdataTable%20td%2Edt%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%20thead%20th%2Ctable%2EdataTable%20thead%20td%2Ctable%2EdataTable%20tfoot%20th%2Ctable%2EdataTable%20tfoot%20td%7Btext%2Dalign%3Aleft%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dleft%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dleft%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dleft%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dleft%7Btext%2Dalign%3Aleft%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dcenter%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dcenter%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dcenter%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dcenter%7Btext%2Dalign%3Acenter%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dright%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dright%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dright%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dright%7Btext%2Dalign%3Aright%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Djustify%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Djustify%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Djustify%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Djustify%7Btext%2Dalign%3Ajustify%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dnowrap%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dnowrap%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dnowrap%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dleft%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dleft%7Btext%2Dalign%3Aleft%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dcenter%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dcenter%7Btext%2Dalign%3Acenter%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dright%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dright%7Btext%2Dalign%3Aright%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Djustify%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Djustify%7Btext%2Dalign%3Ajustify%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dnowrap%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%7Bwidth%3A100%25%3Bmargin%3A0%20auto%3Bclear%3Aboth%3Bborder%2Dcollapse%3Aseparate%3Bborder%2Dspacing%3A0%7Dtable%2EdataTable%20thead%20th%2Ctable%2EdataTable%20tfoot%20th%7Bfont%2Dweight%3Abold%7Dtable%2EdataTable%3Ethead%3Etr%3Eth%2Ctable%2EdataTable%3Ethead%3Etr%3Etd%7Bpadding%3A10px%3Bborder%2Dbottom%3A1px%20solid%20rgba%280%2C%200%2C%200%2C%200%2E3%29%7Dtable%2EdataTable%3Ethead%3Etr%3Eth%3Aactive%2Ctable%2EdataTable%3Ethead%3Etr%3Etd%3Aactive%7Boutline%3Anone%7Dtable%2EdataTable%3Etfoot%3Etr%3Eth%2Ctable%2EdataTable%3Etfoot%3Etr%3Etd%7Bpadding%3A10px%2010px%206px%2010px%3Bborder%2Dtop%3A1px%20solid%20rgba%280%2C%200%2C%200%2C%200%2E3%29%7Dtable%2EdataTable%20tbody%20tr%7Bbackground%2Dcolor%3Atransparent%7Dtable%2EdataTable%20tbody%20tr%2Eselected%3E%2A%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%2813%2C%20110%2C%20253%2C%200%2E9%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%200%2E9%29%3Bcolor%3Argb%28255%2C%20255%2C%20255%29%3Bcolor%3Argb%28var%28%2D%2Ddt%2Drow%2Dselected%2Dtext%29%29%7Dtable%2EdataTable%20tbody%20tr%2Eselected%20a%7Bcolor%3Argb%289%2C%2010%2C%2011%29%3Bcolor%3Argb%28var%28%2D%2Ddt%2Drow%2Dselected%2Dlink%29%29%7Dtable%2EdataTable%20tbody%20th%2Ctable%2EdataTable%20tbody%20td%7Bpadding%3A8px%2010px%7Dtable%2EdataTable%2Erow%2Dborder%3Etbody%3Etr%3Eth%2Ctable%2EdataTable%2Erow%2Dborder%3Etbody%3Etr%3Etd%2Ctable%2EdataTable%2Edisplay%3Etbody%3Etr%3Eth%2Ctable%2EdataTable%2Edisplay%3Etbody%3Etr%3Etd%7Bborder%2Dtop%3A1px%20solid%20rgba%280%2C%200%2C%200%2C%200%2E15%29%7Dtable%2EdataTable%2Erow%2Dborder%3Etbody%3Etr%3Afirst%2Dchild%3Eth%2Ctable%2EdataTable%2Erow%2Dborder%3Etbody%3Etr%3Afirst%2Dchild%3Etd%2Ctable%2EdataTable%2Edisplay%3Etbody%3Etr%3Afirst%2Dchild%3Eth%2Ctable%2EdataTable%2Edisplay%3Etbody%3Etr%3Afirst%2Dchild%3Etd%7Bborder%2Dtop%3Anone%7Dtable%2EdataTable%2Erow%2Dborder%3Etbody%3Etr%2Eselected%2Btr%2Eselected%3Etd%2Ctable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eselected%2Btr%2Eselected%3Etd%7Bborder%2Dtop%2Dcolor%3A%230262ef%7Dtable%2EdataTable%2Ecell%2Dborder%3Etbody%3Etr%3Eth%2Ctable%2EdataTable%2Ecell%2Dborder%3Etbody%3Etr%3Etd%7Bborder%2Dtop%3A1px%20solid%20rgba%280%2C%200%2C%200%2C%200%2E15%29%3Bborder%2Dright%3A1px%20solid%20rgba%280%2C%200%2C%200%2C%200%2E15%29%7Dtable%2EdataTable%2Ecell%2Dborder%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2Ctable%2EdataTable%2Ecell%2Dborder%3Etbody%3Etr%3Etd%3Afirst%2Dchild%7Bborder%2Dleft%3A1px%20solid%20rgba%280%2C%200%2C%200%2C%200%2E15%29%7Dtable%2EdataTable%2Ecell%2Dborder%3Etbody%3Etr%3Afirst%2Dchild%3Eth%2Ctable%2EdataTable%2Ecell%2Dborder%3Etbody%3Etr%3Afirst%2Dchild%3Etd%7Bborder%2Dtop%3Anone%7Dtable%2EdataTable%2Estripe%3Etbody%3Etr%2Eodd%3E%2A%2Ctable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eodd%3E%2A%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%280%2C%200%2C%200%2C%200%2E023%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dstripe%29%2C%200%2E023%29%7Dtable%2EdataTable%2Estripe%3Etbody%3Etr%2Eodd%2Eselected%3E%2A%2Ctable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eodd%2Eselected%3E%2A%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%2813%2C%20110%2C%20253%2C%200%2E923%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%200%2E923%29%7Dtable%2EdataTable%2Ehover%3Etbody%3Etr%3Ahover%3E%2A%2Ctable%2EdataTable%2Edisplay%3Etbody%3Etr%3Ahover%3E%2A%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%280%2C%200%2C%200%2C%200%2E035%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dhover%29%2C%200%2E035%29%7Dtable%2EdataTable%2Ehover%3Etbody%3Etr%2Eselected%3Ahover%3E%2A%2Ctable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eselected%3Ahover%3E%2A%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20%230d6efd%20%21important%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%201%29%20%21important%7Dtable%2EdataTable%2Eorder%2Dcolumn%3Etbody%20tr%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%3Etbody%20tr%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%3Etbody%20tr%3E%2Esorting%5F3%2Ctable%2EdataTable%2Edisplay%3Etbody%20tr%3E%2Esorting%5F1%2Ctable%2EdataTable%2Edisplay%3Etbody%20tr%3E%2Esorting%5F2%2Ctable%2EdataTable%2Edisplay%3Etbody%20tr%3E%2Esorting%5F3%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%280%2C%200%2C%200%2C%200%2E019%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Dcolumn%2Dordering%29%2C%200%2E019%29%7Dtable%2EdataTable%2Eorder%2Dcolumn%3Etbody%20tr%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%3Etbody%20tr%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%3Etbody%20tr%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Edisplay%3Etbody%20tr%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Edisplay%3Etbody%20tr%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Edisplay%3Etbody%20tr%2Eselected%3E%2Esorting%5F3%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%2813%2C%20110%2C%20253%2C%200%2E919%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%200%2E919%29%7Dtable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eodd%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%3Etbody%3Etr%2Eodd%3E%2Esorting%5F1%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%280%2C%200%2C%200%2C%200%2E054%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Dcolumn%2Dordering%29%2C%200%2E054%29%7Dtable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eodd%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%3Etbody%3Etr%2Eodd%3E%2Esorting%5F2%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%280%2C%200%2C%200%2C%200%2E047%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Dcolumn%2Dordering%29%2C%200%2E047%29%7Dtable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eodd%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%3Etbody%3Etr%2Eodd%3E%2Esorting%5F3%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%280%2C%200%2C%200%2C%200%2E039%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Dcolumn%2Dordering%29%2C%200%2E039%29%7Dtable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eodd%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%3Etbody%3Etr%2Eodd%2Eselected%3E%2Esorting%5F1%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%2813%2C%20110%2C%20253%2C%200%2E954%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%200%2E954%29%7Dtable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eodd%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%3Etbody%3Etr%2Eodd%2Eselected%3E%2Esorting%5F2%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%2813%2C%20110%2C%20253%2C%200%2E947%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%200%2E947%29%7Dtable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eodd%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%3Etbody%3Etr%2Eodd%2Eselected%3E%2Esorting%5F3%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%2813%2C%20110%2C%20253%2C%200%2E939%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%200%2E939%29%7Dtable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eeven%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%3Etbody%3Etr%2Eeven%3E%2Esorting%5F1%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%280%2C%200%2C%200%2C%200%2E019%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%200%2E019%29%7Dtable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eeven%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%3Etbody%3Etr%2Eeven%3E%2Esorting%5F2%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%280%2C%200%2C%200%2C%200%2E011%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%200%2E011%29%7Dtable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eeven%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%3Etbody%3Etr%2Eeven%3E%2Esorting%5F3%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%280%2C%200%2C%200%2C%200%2E003%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%200%2E003%29%7Dtable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eeven%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%3Etbody%3Etr%2Eeven%2Eselected%3E%2Esorting%5F1%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%2813%2C%20110%2C%20253%2C%200%2E919%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%200%2E919%29%7Dtable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eeven%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%3Etbody%3Etr%2Eeven%2Eselected%3E%2Esorting%5F2%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%2813%2C%20110%2C%20253%2C%200%2E911%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%200%2E911%29%7Dtable%2EdataTable%2Edisplay%3Etbody%3Etr%2Eeven%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%3Etbody%3Etr%2Eeven%2Eselected%3E%2Esorting%5F3%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%2813%2C%20110%2C%20253%2C%200%2E903%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%200%2E903%29%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%3E%2Esorting%5F1%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%280%2C%200%2C%200%2C%200%2E082%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dhover%29%2C%200%2E082%29%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%3E%2Esorting%5F2%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%280%2C%200%2C%200%2C%200%2E074%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dhover%29%2C%200%2E074%29%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%3E%2Esorting%5F3%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%280%2C%200%2C%200%2C%200%2E062%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dhover%29%2C%200%2E062%29%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F1%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%2813%2C%20110%2C%20253%2C%200%2E982%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%200%2E982%29%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F2%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%2813%2C%20110%2C%20253%2C%200%2E974%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%200%2E974%29%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F3%7Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%2813%2C%20110%2C%20253%2C%200%2E962%29%3Bbox%2Dshadow%3Ainset%200%200%200%209999px%20rgba%28var%28%2D%2Ddt%2Drow%2Dselected%29%2C%200%2E962%29%7Dtable%2EdataTable%2Eno%2Dfooter%7Bborder%2Dbottom%3A1px%20solid%20rgba%280%2C%200%2C%200%2C%200%2E3%29%7Dtable%2EdataTable%2Ecompact%20thead%20th%2Ctable%2EdataTable%2Ecompact%20thead%20td%2Ctable%2EdataTable%2Ecompact%20tfoot%20th%2Ctable%2EdataTable%2Ecompact%20tfoot%20td%2Ctable%2EdataTable%2Ecompact%20tbody%20th%2Ctable%2EdataTable%2Ecompact%20tbody%20td%7Bpadding%3A4px%7Dtable%2EdataTable%20th%2Ctable%2EdataTable%20td%7Bbox%2Dsizing%3Acontent%2Dbox%7D%2EdataTables%5Fwrapper%7Bposition%3Arelative%3Bclear%3Aboth%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Flength%7Bfloat%3Aleft%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Flength%20select%7Bborder%3A1px%20solid%20%23aaa%3Bborder%2Dradius%3A3px%3Bpadding%3A5px%3Bbackground%2Dcolor%3Atransparent%3Bcolor%3Ainherit%3Bpadding%3A4px%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%7Bfloat%3Aright%3Btext%2Dalign%3Aright%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%20input%7Bborder%3A1px%20solid%20%23aaa%3Bborder%2Dradius%3A3px%3Bpadding%3A5px%3Bbackground%2Dcolor%3Atransparent%3Bcolor%3Ainherit%3Bmargin%2Dleft%3A3px%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Finfo%7Bclear%3Aboth%3Bfloat%3Aleft%3Bpadding%2Dtop%3A%2E755em%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bfloat%3Aright%3Btext%2Dalign%3Aright%3Bpadding%2Dtop%3A%2E25em%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%7Bbox%2Dsizing%3Aborder%2Dbox%3Bdisplay%3Ainline%2Dblock%3Bmin%2Dwidth%3A1%2E5em%3Bpadding%3A%2E5em%201em%3Bmargin%2Dleft%3A2px%3Btext%2Dalign%3Acenter%3Btext%2Ddecoration%3Anone%20%21important%3Bcursor%3Apointer%3Bcolor%3Ainherit%20%21important%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A2px%3Bbackground%3Atransparent%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Ecurrent%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Ecurrent%3Ahover%7Bcolor%3Ainherit%20%21important%3Bborder%3A1px%20solid%20rgba%280%2C%200%2C%200%2C%200%2E3%29%3Bbackground%2Dcolor%3Argba%280%2C%200%2C%200%2C%200%2E05%29%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%20rgba%28230%2C%20230%2C%20230%2C%200%2E05%29%29%2C%20color%2Dstop%28100%25%2C%20rgba%280%2C%200%2C%200%2C%200%2E05%29%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20rgba%28230%2C%20230%2C%20230%2C%200%2E05%29%200%25%2C%20rgba%280%2C%200%2C%200%2C%200%2E05%29%20100%25%29%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20rgba%28230%2C%20230%2C%20230%2C%200%2E05%29%200%25%2C%20rgba%280%2C%200%2C%200%2C%200%2E05%29%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20rgba%28230%2C%20230%2C%20230%2C%200%2E05%29%200%25%2C%20rgba%280%2C%200%2C%200%2C%200%2E05%29%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%20rgba%28230%2C%20230%2C%20230%2C%200%2E05%29%200%25%2C%20rgba%280%2C%200%2C%200%2C%200%2E05%29%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%20rgba%28230%2C%20230%2C%20230%2C%200%2E05%29%200%25%2C%20rgba%280%2C%200%2C%200%2C%200%2E05%29%20100%25%29%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Edisabled%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Edisabled%3Ahover%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Edisabled%3Aactive%7Bcursor%3Adefault%3Bcolor%3A%23666%20%21important%3Bborder%3A1px%20solid%20transparent%3Bbackground%3Atransparent%3Bbox%2Dshadow%3Anone%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%3Ahover%7Bcolor%3Awhite%20%21important%3Bborder%3A1px%20solid%20%23111%3Bbackground%2Dcolor%3A%23111%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%20%23585858%29%2C%20color%2Dstop%28100%25%2C%20%23111%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%20%23585858%200%25%2C%20%23111%20100%25%29%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%3Aactive%7Boutline%3Anone%3Bbackground%2Dcolor%3A%230c0c0c%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%20%232b2b2b%29%2C%20color%2Dstop%28100%25%2C%20%230c0c0c%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbox%2Dshadow%3Ainset%200%200%203px%20%23111%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Eellipsis%7Bpadding%3A0%201em%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Flength%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Finfo%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fprocessing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bcolor%3Ainherit%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%7Bclear%3Aboth%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%7B%2Dwebkit%2Doverflow%2Dscrolling%3Atouch%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Ethead%3Etr%3Eth%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Ethead%3Etr%3Etd%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Eth%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Etd%7Bvertical%2Dalign%3Amiddle%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Ethead%3Etr%3Eth%3Ediv%2EdataTables%5Fsizing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Ethead%3Etr%3Etd%3Ediv%2EdataTables%5Fsizing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Eth%3Ediv%2EdataTables%5Fsizing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Etd%3Ediv%2EdataTables%5Fsizing%7Bheight%3A0%3Boverflow%3Ahidden%3Bmargin%3A0%20%21important%3Bpadding%3A0%20%21important%7D%2EdataTables%5Fwrapper%2Eno%2Dfooter%20%2EdataTables%5FscrollBody%7Bborder%2Dbottom%3A1px%20solid%20rgba%280%2C%200%2C%200%2C%200%2E3%29%7D%2EdataTables%5Fwrapper%2Eno%2Dfooter%20div%2EdataTables%5FscrollHead%20table%2EdataTable%2C%2EdataTables%5Fwrapper%2Eno%2Dfooter%20div%2EdataTables%5FscrollBody%3Etable%7Bborder%2Dbottom%3Anone%7D%2EdataTables%5Fwrapper%3Aafter%7Bvisibility%3Ahidden%3Bdisplay%3Ablock%3Bcontent%3A%22%22%3Bclear%3Aboth%3Bheight%3A0%7D%40media%20screen%20and%20%28max%2Dwidth%3A%20767px%29%7B%2EdataTables%5Fwrapper%20%2EdataTables%5Finfo%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bfloat%3Anone%3Btext%2Dalign%3Acenter%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bmargin%2Dtop%3A%2E5em%7D%7D%40media%20screen%20and%20%28max%2Dwidth%3A%20640px%29%7B%2EdataTables%5Fwrapper%20%2EdataTables%5Flength%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%7Bfloat%3Anone%3Btext%2Dalign%3Acenter%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%7Bmargin%2Dtop%3A%2E5em%7D%7Dhtml%2Edark%7B%2D%2Ddt%2Drow%2Dhover%3A%20255%2C%20255%2C%20255%3B%2D%2Ddt%2Drow%2Dstripe%3A%20255%2C%20255%2C%20255%3B%2D%2Ddt%2Dcolumn%2Dordering%3A%20255%2C%20255%2C%20255%7Dhtml%2Edark%20table%2EdataTable%3Ethead%3Etr%3Eth%2Chtml%2Edark%20table%2EdataTable%3Ethead%3Etr%3Etd%7Bborder%2Dbottom%3A1px%20solid%20rgb%2889%2C%2091%2C%2094%29%7Dhtml%2Edark%20table%2EdataTable%3Ethead%3Etr%3Eth%3Aactive%2Chtml%2Edark%20table%2EdataTable%3Ethead%3Etr%3Etd%3Aactive%7Boutline%3Anone%7Dhtml%2Edark%20table%2EdataTable%3Etfoot%3Etr%3Eth%2Chtml%2Edark%20table%2EdataTable%3Etfoot%3Etr%3Etd%7Bborder%2Dtop%3A1px%20solid%20rgb%2889%2C%2091%2C%2094%29%7Dhtml%2Edark%20table%2EdataTable%2Erow%2Dborder%3Etbody%3Etr%3Eth%2Chtml%2Edark%20table%2EdataTable%2Erow%2Dborder%3Etbody%3Etr%3Etd%2Chtml%2Edark%20table%2EdataTable%2Edisplay%3Etbody%3Etr%3Eth%2Chtml%2Edark%20table%2EdataTable%2Edisplay%3Etbody%3Etr%3Etd%7Bborder%2Dtop%3A1px%20solid%20rgb%2864%2C%2067%2C%2070%29%7Dhtml%2Edark%20table%2EdataTable%2Erow%2Dborder%3Etbody%3Etr%2Eselected%2Btr%2Eselected%3Etd%2Chtml%2Edark%20table%2EdataTable%2Edisplay%3Etbody%3Etr%2Eselected%2Btr%2Eselected%3Etd%7Bborder%2Dtop%2Dcolor%3A%230257d5%7Dhtml%2Edark%20table%2EdataTable%2Ecell%2Dborder%3Etbody%3Etr%3Eth%2Chtml%2Edark%20table%2EdataTable%2Ecell%2Dborder%3Etbody%3Etr%3Etd%7Bborder%2Dtop%3A1px%20solid%20rgb%2864%2C%2067%2C%2070%29%3Bborder%2Dright%3A1px%20solid%20rgb%2864%2C%2067%2C%2070%29%7Dhtml%2Edark%20table%2EdataTable%2Ecell%2Dborder%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2Chtml%2Edark%20table%2EdataTable%2Ecell%2Dborder%3Etbody%3Etr%3Etd%3Afirst%2Dchild%7Bborder%2Dleft%3A1px%20solid%20rgb%2864%2C%2067%2C%2070%29%7Dhtml%2Edark%20%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%20input%2Chtml%2Edark%20%2EdataTables%5Fwrapper%20%2EdataTables%5Flength%20select%7Bborder%3A1px%20solid%20rgba%28255%2C%20255%2C%20255%2C%200%2E2%29%3Bbackground%2Dcolor%3Avar%28%2D%2Ddt%2Dhtml%2Dbackground%29%7Dhtml%2Edark%20%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Ecurrent%2Chtml%2Edark%20%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Ecurrent%3Ahover%7Bborder%3A1px%20solid%20rgb%2889%2C%2091%2C%2094%29%3Bbackground%3Argba%28255%2C%20255%2C%20255%2C%200%2E15%29%7Dhtml%2Edark%20%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Edisabled%2Chtml%2Edark%20%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Edisabled%3Ahover%2Chtml%2Edark%20%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Edisabled%3Aactive%7Bcolor%3A%23666%20%21important%7Dhtml%2Edark%20%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%3Ahover%7Bborder%3A1px%20solid%20rgb%2853%2C%2053%2C%2053%29%3Bbackground%3Argb%2853%2C%2053%2C%2053%29%7Dhtml%2Edark%20%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%3Aactive%7Bbackground%3A%233a3a3a%7D%0A" rel="stylesheet" />
<link href="data:text/css,%0Atable%2EdataTable%20tr%2Eselected%20td%2C%20table%2EdataTable%20td%2Eselected%20%7B%0Abackground%2Dcolor%3A%20%23b0bed9%20%21important%3B%0A%7D%0A%0A%2EdataTables%5FscrollBody%20%2EdataTables%5Fsizing%20%7B%0Avisibility%3A%20hidden%3B%0A%7D%0A%0Adiv%2Edatatables%20%7B%0Acolor%3A%20%23333%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,LyohIERhdGFUYWJsZXMgMS4xMy42CiAqIMKpMjAwOC0yMDIzIFNwcnlNZWRpYSBMdGQgLSBkYXRhdGFibGVzLm5ldC9saWNlbnNlCiAqLwohZnVuY3Rpb24obil7InVzZSBzdHJpY3QiO3ZhciBhOyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5Il0sZnVuY3Rpb24odCl7cmV0dXJuIG4odCx3aW5kb3csZG9jdW1lbnQpfSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzPyhhPXJlcXVpcmUoImpxdWVyeSIpLCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93P21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9dHx8d2luZG93LGU9ZXx8YSh0KSxuKGUsdCx0LmRvY3VtZW50KX06bihhLHdpbmRvdyx3aW5kb3cuZG9jdW1lbnQpKTp3aW5kb3cuRGF0YVRhYmxlPW4oalF1ZXJ5LHdpbmRvdyxkb2N1bWVudCl9KGZ1bmN0aW9uKFAsaix2LEgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKHQpe3ZhciBlPXBhcnNlSW50KHQsMTApO3JldHVybiFpc05hTihlKSYmaXNGaW5pdGUodCk/ZTpudWxsfWZ1bmN0aW9uIGwodCxlLG4pe3ZhciBhPXR5cGVvZiB0LHI9InN0cmluZyI9PWE7cmV0dXJuIm51bWJlciI9PWF8fCJiaWdpbnQiPT1hfHwhIWgodCl8fChlJiZyJiYodD0kKHQsZSkpLG4mJnImJih0PXQucmVwbGFjZShxLCIiKSksIWlzTmFOKHBhcnNlRmxvYXQodCkpJiZpc0Zpbml0ZSh0KSl9ZnVuY3Rpb24gYSh0LGUsbil7dmFyIGE7cmV0dXJuISFoKHQpfHwoaChhPXQpfHwic3RyaW5nIj09dHlwZW9mIGEpJiYhIWwodC5yZXBsYWNlKFYsIiIpLnJlcGxhY2UoLzxzY3JpcHQvaSwiIiksZSxuKXx8bnVsbH1mdW5jdGlvbiBtKHQsZSxuLGEpe3ZhciByPVtdLG89MCxpPWUubGVuZ3RoO2lmKGEhPT1IKWZvcig7bzxpO28rKyl0W2Vbb11dW25dJiZyLnB1c2godFtlW29dXVtuXVthXSk7ZWxzZSBmb3IoO288aTtvKyspci5wdXNoKHRbZVtvXV1bbl0pO3JldHVybiByfWZ1bmN0aW9uIGYodCxlKXt2YXIgbixhPVtdO2U9PT1IPyhlPTAsbj10KToobj1lLGU9dCk7Zm9yKHZhciByPWU7cjxuO3IrKylhLnB1c2gocik7cmV0dXJuIGF9ZnVuY3Rpb24gXyh0KXtmb3IodmFyIGU9W10sbj0wLGE9dC5sZW5ndGg7bjxhO24rKyl0W25dJiZlLnB1c2godFtuXSk7cmV0dXJuIGV9ZnVuY3Rpb24gcyh0LGUpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKHQsZT1lPT09SD8wOmUpfXZhciBwLGUsdCx3PWZ1bmN0aW9uKHQsdil7aWYody5mYWN0b3J5KHQsdikpcmV0dXJuIHc7aWYodGhpcyBpbnN0YW5jZW9mIHcpcmV0dXJuIFAodCkuRGF0YVRhYmxlKHYpO3Y9dCx0aGlzLiQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hcGkoITApLiQodCxlKX0sdGhpcy5fPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYXBpKCEwKS5yb3dzKHQsZSkuZGF0YSgpfSx0aGlzLmFwaT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEIodD9nZSh0aGlzW3AuaUFwaUluZGV4XSk6dGhpcyl9LHRoaXMuZm5BZGREYXRhPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5hcGkoITApLHQ9KEFycmF5LmlzQXJyYXkodCkmJihBcnJheS5pc0FycmF5KHRbMF0pfHxQLmlzUGxhaW5PYmplY3QodFswXSkpP24ucm93czpuLnJvdykuYWRkKHQpO3JldHVybiBlIT09SCYmIWV8fG4uZHJhdygpLHQuZmxhdHRlbigpLnRvQXJyYXkoKX0sdGhpcy5mbkFkanVzdENvbHVtblNpemluZz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmFwaSghMCkuY29sdW1ucy5hZGp1c3QoKSxuPWUuc2V0dGluZ3MoKVswXSxhPW4ub1Njcm9sbDt0PT09SHx8dD9lLmRyYXcoITEpOiIiPT09YS5zWCYmIiI9PT1hLnNZfHxRdChuKX0sdGhpcy5mbkNsZWFyVGFibGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5hcGkoITApLmNsZWFyKCk7dCE9PUgmJiF0fHxlLmRyYXcoKX0sdGhpcy5mbkNsb3NlPWZ1bmN0aW9uKHQpe3RoaXMuYXBpKCEwKS5yb3codCkuY2hpbGQuaGlkZSgpfSx0aGlzLmZuRGVsZXRlUm93PWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT10aGlzLmFwaSghMCksdD1hLnJvd3ModCkscj10LnNldHRpbmdzKClbMF0sbz1yLmFvRGF0YVt0WzBdWzBdXTtyZXR1cm4gdC5yZW1vdmUoKSxlJiZlLmNhbGwodGhpcyxyLG8pLG4hPT1IJiYhbnx8YS5kcmF3KCksb30sdGhpcy5mbkRlc3Ryb3k9ZnVuY3Rpb24odCl7dGhpcy5hcGkoITApLmRlc3Ryb3kodCl9LHRoaXMuZm5EcmF3PWZ1bmN0aW9uKHQpe3RoaXMuYXBpKCEwKS5kcmF3KHQpfSx0aGlzLmZuRmlsdGVyPWZ1bmN0aW9uKHQsZSxuLGEscixvKXt2YXIgaT10aGlzLmFwaSghMCk7KG51bGw9PT1lfHxlPT09SD9pOmkuY29sdW1uKGUpKS5zZWFyY2godCxuLGEsbyksaS5kcmF3KCl9LHRoaXMuZm5HZXREYXRhPWZ1bmN0aW9uKHQsZSl7dmFyIG4sYT10aGlzLmFwaSghMCk7cmV0dXJuIHQhPT1IPyhuPXQubm9kZU5hbWU/dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOiIiLGUhPT1IfHwidGQiPT1ufHwidGgiPT1uP2EuY2VsbCh0LGUpLmRhdGEoKTphLnJvdyh0KS5kYXRhKCl8fG51bGwpOmEuZGF0YSgpLnRvQXJyYXkoKX0sdGhpcy5mbkdldE5vZGVzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYXBpKCEwKTtyZXR1cm4gdCE9PUg/ZS5yb3codCkubm9kZSgpOmUucm93cygpLm5vZGVzKCkuZmxhdHRlbigpLnRvQXJyYXkoKX0sdGhpcy5mbkdldFBvc2l0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYXBpKCEwKSxuPXQubm9kZU5hbWUudG9VcHBlckNhc2UoKTtyZXR1cm4iVFIiPT1uP2Uucm93KHQpLmluZGV4KCk6IlREIj09bnx8IlRIIj09bj9bKG49ZS5jZWxsKHQpLmluZGV4KCkpLnJvdyxuLmNvbHVtblZpc2libGUsbi5jb2x1bW5dOm51bGx9LHRoaXMuZm5Jc09wZW49ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYXBpKCEwKS5yb3codCkuY2hpbGQuaXNTaG93bigpfSx0aGlzLmZuT3Blbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuYXBpKCEwKS5yb3codCkuY2hpbGQoZSxuKS5zaG93KCkuY2hpbGQoKVswXX0sdGhpcy5mblBhZ2VDaGFuZ2U9ZnVuY3Rpb24odCxlKXt0PXRoaXMuYXBpKCEwKS5wYWdlKHQpO2UhPT1IJiYhZXx8dC5kcmF3KCExKX0sdGhpcy5mblNldENvbHVtblZpcz1mdW5jdGlvbih0LGUsbil7dD10aGlzLmFwaSghMCkuY29sdW1uKHQpLnZpc2libGUoZSk7biE9PUgmJiFufHx0LmNvbHVtbnMuYWRqdXN0KCkuZHJhdygpfSx0aGlzLmZuU2V0dGluZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gZ2UodGhpc1twLmlBcGlJbmRleF0pfSx0aGlzLmZuU29ydD1mdW5jdGlvbih0KXt0aGlzLmFwaSghMCkub3JkZXIodCkuZHJhdygpfSx0aGlzLmZuU29ydExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxuKXt0aGlzLmFwaSghMCkub3JkZXIubGlzdGVuZXIodCxlLG4pfSx0aGlzLmZuVXBkYXRlPWZ1bmN0aW9uKHQsZSxuLGEscil7dmFyIG89dGhpcy5hcGkoITApO3JldHVybihuPT09SHx8bnVsbD09PW4/by5yb3coZSk6by5jZWxsKGUsbikpLmRhdGEodCksciE9PUgmJiFyfHxvLmNvbHVtbnMuYWRqdXN0KCksYSE9PUgmJiFhfHxvLmRyYXcoKSwwfSx0aGlzLmZuVmVyc2lvbkNoZWNrPXAuZm5WZXJzaW9uQ2hlY2s7dmFyIGUseT10aGlzLEQ9dj09PUgsXz10aGlzLmxlbmd0aDtmb3IoZSBpbiBEJiYodj17fSksdGhpcy5vQXBpPXRoaXMuaW50ZXJuYWw9cC5pbnRlcm5hbCx3LmV4dC5pbnRlcm5hbCllJiYodGhpc1tlXT0kZShlKSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciByPTE8Xz9iZSh7fSx2LCEwKTp2LG89MCx0PXRoaXMuZ2V0QXR0cmlidXRlKCJpZCIpLGk9ITEsZT13LmRlZmF1bHRzLGw9UCh0aGlzKTtpZigidGFibGUiIT10aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpVyhudWxsLDAsIk5vbi10YWJsZSBub2RlIGluaXRpYWxpc2F0aW9uICgiK3RoaXMubm9kZU5hbWUrIikiLDIpO2Vsc2V7SyhlKSxRKGUuY29sdW1uKSxDKGUsZSwhMCksQyhlLmNvbHVtbixlLmNvbHVtbiwhMCksQyhlLFAuZXh0ZW5kKHIsbC5kYXRhKCkpLCEwKTtmb3IodmFyIG49dy5zZXR0aW5ncyxvPTAscz1uLmxlbmd0aDtvPHM7bysrKXt2YXIgYT1uW29dO2lmKGEublRhYmxlPT10aGlzfHxhLm5USGVhZCYmYS5uVEhlYWQucGFyZW50Tm9kZT09dGhpc3x8YS5uVEZvb3QmJmEublRGb290LnBhcmVudE5vZGU9PXRoaXMpe3ZhciB1PShyLmJSZXRyaWV2ZSE9PUg/cjplKS5iUmV0cmlldmUsYz0oci5iRGVzdHJveSE9PUg/cjplKS5iRGVzdHJveTtpZihEfHx1KXJldHVybiBhLm9JbnN0YW5jZTtpZihjKXthLm9JbnN0YW5jZS5mbkRlc3Ryb3koKTticmVha31yZXR1cm4gdm9pZCBXKGEsMCwiQ2Fubm90IHJlaW5pdGlhbGlzZSBEYXRhVGFibGUiLDMpfWlmKGEuc1RhYmxlSWQ9PXRoaXMuaWQpe24uc3BsaWNlKG8sMSk7YnJlYWt9fW51bGwhPT10JiYiIiE9PXR8fCh0PSJEYXRhVGFibGVzX1RhYmxlXyIrdy5leHQuX3VuaXF1ZSsrLHRoaXMuaWQ9dCk7dmFyIGYsZCxoPVAuZXh0ZW5kKCEwLHt9LHcubW9kZWxzLm9TZXR0aW5ncyx7c0Rlc3Ryb3lXaWR0aDpsWzBdLnN0eWxlLndpZHRoLHNJbnN0YW5jZTp0LHNUYWJsZUlkOnR9KSxwPShoLm5UYWJsZT10aGlzLGgub0FwaT15LmludGVybmFsLGgub0luaXQ9cixuLnB1c2goaCksaC5vSW5zdGFuY2U9MT09PXkubGVuZ3RoP3k6bC5kYXRhVGFibGUoKSxLKHIpLFooci5vTGFuZ3VhZ2UpLHIuYUxlbmd0aE1lbnUmJiFyLmlEaXNwbGF5TGVuZ3RoJiYoci5pRGlzcGxheUxlbmd0aD0oQXJyYXkuaXNBcnJheShyLmFMZW5ndGhNZW51WzBdKT9yLmFMZW5ndGhNZW51WzBdOnIuYUxlbmd0aE1lbnUpWzBdKSxyPWJlKFAuZXh0ZW5kKCEwLHt9LGUpLHIpLEYoaC5vRmVhdHVyZXMscixbImJQYWdpbmF0ZSIsImJMZW5ndGhDaGFuZ2UiLCJiRmlsdGVyIiwiYlNvcnQiLCJiU29ydE11bHRpIiwiYkluZm8iLCJiUHJvY2Vzc2luZyIsImJBdXRvV2lkdGgiLCJiU29ydENsYXNzZXMiLCJiU2VydmVyU2lkZSIsImJEZWZlclJlbmRlciJdKSxGKGgscixbImFzU3RyaXBlQ2xhc3NlcyIsImFqYXgiLCJmblNlcnZlckRhdGEiLCJmbkZvcm1hdE51bWJlciIsInNTZXJ2ZXJNZXRob2QiLCJhYVNvcnRpbmciLCJhYVNvcnRpbmdGaXhlZCIsImFMZW5ndGhNZW51Iiwic1BhZ2luYXRpb25UeXBlIiwic0FqYXhTb3VyY2UiLCJzQWpheERhdGFQcm9wIiwiaVN0YXRlRHVyYXRpb24iLCJzRG9tIiwiYlNvcnRDZWxsc1RvcCIsImlUYWJJbmRleCIsImZuU3RhdGVMb2FkQ2FsbGJhY2siLCJmblN0YXRlU2F2ZUNhbGxiYWNrIiwicmVuZGVyZXIiLCJzZWFyY2hEZWxheSIsInJvd0lkIixbImlDb29raWVEdXJhdGlvbiIsImlTdGF0ZUR1cmF0aW9uIl0sWyJvU2VhcmNoIiwib1ByZXZpb3VzU2VhcmNoIl0sWyJhb1NlYXJjaENvbHMiLCJhb1ByZVNlYXJjaENvbHMiXSxbImlEaXNwbGF5TGVuZ3RoIiwiX2lEaXNwbGF5TGVuZ3RoIl1dKSxGKGgub1Njcm9sbCxyLFtbInNTY3JvbGxYIiwic1giXSxbInNTY3JvbGxYSW5uZXIiLCJzWElubmVyIl0sWyJzU2Nyb2xsWSIsInNZIl0sWyJiU2Nyb2xsQ29sbGFwc2UiLCJiQ29sbGFwc2UiXV0pLEYoaC5vTGFuZ3VhZ2UsciwiZm5JbmZvQ2FsbGJhY2siKSxMKGgsImFvRHJhd0NhbGxiYWNrIixyLmZuRHJhd0NhbGxiYWNrLCJ1c2VyIiksTChoLCJhb1NlcnZlclBhcmFtcyIsci5mblNlcnZlclBhcmFtcywidXNlciIpLEwoaCwiYW9TdGF0ZVNhdmVQYXJhbXMiLHIuZm5TdGF0ZVNhdmVQYXJhbXMsInVzZXIiKSxMKGgsImFvU3RhdGVMb2FkUGFyYW1zIixyLmZuU3RhdGVMb2FkUGFyYW1zLCJ1c2VyIiksTChoLCJhb1N0YXRlTG9hZGVkIixyLmZuU3RhdGVMb2FkZWQsInVzZXIiKSxMKGgsImFvUm93Q2FsbGJhY2siLHIuZm5Sb3dDYWxsYmFjaywidXNlciIpLEwoaCwiYW9Sb3dDcmVhdGVkQ2FsbGJhY2siLHIuZm5DcmVhdGVkUm93LCJ1c2VyIiksTChoLCJhb0hlYWRlckNhbGxiYWNrIixyLmZuSGVhZGVyQ2FsbGJhY2ssInVzZXIiKSxMKGgsImFvRm9vdGVyQ2FsbGJhY2siLHIuZm5Gb290ZXJDYWxsYmFjaywidXNlciIpLEwoaCwiYW9Jbml0Q29tcGxldGUiLHIuZm5Jbml0Q29tcGxldGUsInVzZXIiKSxMKGgsImFvUHJlRHJhd0NhbGxiYWNrIixyLmZuUHJlRHJhd0NhbGxiYWNrLCJ1c2VyIiksaC5yb3dJZEZuPUEoci5yb3dJZCksdHQoaCksaC5vQ2xhc3NlcyksZz0oUC5leHRlbmQocCx3LmV4dC5jbGFzc2VzLHIub0NsYXNzZXMpLGwuYWRkQ2xhc3MocC5zVGFibGUpLGguaUluaXREaXNwbGF5U3RhcnQ9PT1IJiYoaC5pSW5pdERpc3BsYXlTdGFydD1yLmlEaXNwbGF5U3RhcnQsaC5faURpc3BsYXlTdGFydD1yLmlEaXNwbGF5U3RhcnQpLG51bGwhPT1yLmlEZWZlckxvYWRpbmcmJihoLmJEZWZlckxvYWRpbmc9ITAsdD1BcnJheS5pc0FycmF5KHIuaURlZmVyTG9hZGluZyksaC5faVJlY29yZHNEaXNwbGF5PXQ/ci5pRGVmZXJMb2FkaW5nWzBdOnIuaURlZmVyTG9hZGluZyxoLl9pUmVjb3Jkc1RvdGFsPXQ/ci5pRGVmZXJMb2FkaW5nWzFdOnIuaURlZmVyTG9hZGluZyksaC5vTGFuZ3VhZ2UpLHQ9KFAuZXh0ZW5kKCEwLGcsci5vTGFuZ3VhZ2UpLGcuc1VybD8oUC5hamF4KHtkYXRhVHlwZToianNvbiIsdXJsOmcuc1VybCxzdWNjZXNzOmZ1bmN0aW9uKHQpe0MoZS5vTGFuZ3VhZ2UsdCksWih0KSxQLmV4dGVuZCghMCxnLHQsaC5vSW5pdC5vTGFuZ3VhZ2UpLFIoaCxudWxsLCJpMThuIixbaF0pLEp0KGgpfSxlcnJvcjpmdW5jdGlvbigpe0p0KGgpfX0pLGk9ITApOlIoaCxudWxsLCJpMThuIixbaF0pLG51bGw9PT1yLmFzU3RyaXBlQ2xhc3NlcyYmKGguYXNTdHJpcGVDbGFzc2VzPVtwLnNTdHJpcGVPZGQscC5zU3RyaXBlRXZlbl0pLGguYXNTdHJpcGVDbGFzc2VzKSxiPWwuY2hpbGRyZW4oInRib2R5IikuZmluZCgidHIiKS5lcSgwKSxtPSgtMSE9PVAuaW5BcnJheSghMCxQLm1hcCh0LGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGIuaGFzQ2xhc3ModCl9KSkmJihQKCJ0Ym9keSB0ciIsdGhpcykucmVtb3ZlQ2xhc3ModC5qb2luKCIgIikpLGguYXNEZXN0cm95U3RyaXBlcz10LnNsaWNlKCkpLFtdKSx0PXRoaXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRoZWFkIik7aWYoMCE9PXQubGVuZ3RoJiYod3QoaC5hb0hlYWRlcix0WzBdKSxtPUN0KGgpKSxudWxsPT09ci5hb0NvbHVtbnMpZm9yKGY9W10sbz0wLHM9bS5sZW5ndGg7bzxzO28rKylmLnB1c2gobnVsbCk7ZWxzZSBmPXIuYW9Db2x1bW5zO2ZvcihvPTAscz1mLmxlbmd0aDtvPHM7bysrKW50KGgsbT9tW29dOm51bGwpO3N0KGgsci5hb0NvbHVtbkRlZnMsZixmdW5jdGlvbih0LGUpe2F0KGgsdCxlKX0pLGIubGVuZ3RoJiYoZD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsIT09dC5nZXRBdHRyaWJ1dGUoImRhdGEtIitlKT9lOm51bGx9LFAoYlswXSkuY2hpbGRyZW4oInRoLCB0ZCIpLmVhY2goZnVuY3Rpb24odCxlKXt2YXIgbixhPWguYW9Db2x1bW5zW3RdO2F8fFcoaCwwLCJJbmNvcnJlY3QgY29sdW1uIGNvdW50IiwxOCksYS5tRGF0YT09PXQmJihuPWQoZSwic29ydCIpfHxkKGUsIm9yZGVyIiksZT1kKGUsImZpbHRlciIpfHxkKGUsInNlYXJjaCIpLG51bGw9PT1uJiZudWxsPT09ZXx8KGEubURhdGE9e186dCsiLmRpc3BsYXkiLHNvcnQ6bnVsbCE9PW4/dCsiLkBkYXRhLSIrbjpILHR5cGU6bnVsbCE9PW4/dCsiLkBkYXRhLSIrbjpILGZpbHRlcjpudWxsIT09ZT90KyIuQGRhdGEtIitlOkh9LGEuX2lzQXJyYXlIb3N0PSEwLGF0KGgsdCkpKX0pKTt2YXIgUz1oLm9GZWF0dXJlcyx0PWZ1bmN0aW9uKCl7aWYoci5hYVNvcnRpbmc9PT1IKXt2YXIgdD1oLmFhU29ydGluZztmb3Iobz0wLHM9dC5sZW5ndGg7bzxzO28rKyl0W29dWzFdPWguYW9Db2x1bW5zW29dLmFzU29ydGluZ1swXX1jZShoKSxTLmJTb3J0JiZMKGgsImFvRHJhd0NhbGxiYWNrIixmdW5jdGlvbigpe3ZhciB0LG47aC5iU29ydGVkJiYodD1JKGgpLG49e30sUC5lYWNoKHQsZnVuY3Rpb24odCxlKXtuW2Uuc3JjXT1lLmRpcn0pLFIoaCxudWxsLCJvcmRlciIsW2gsdCxuXSksbGUoaCkpfSksTChoLCJhb0RyYXdDYWxsYmFjayIsZnVuY3Rpb24oKXsoaC5iU29ydGVkfHwic3NwIj09PUUoaCl8fFMuYkRlZmVyUmVuZGVyKSYmY2UoaCl9LCJzYyIpO3ZhciBlPWwuY2hpbGRyZW4oImNhcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5fY2FwdGlvblNpZGU9UCh0aGlzKS5jc3MoImNhcHRpb24tc2lkZSIpfSksbj1sLmNoaWxkcmVuKCJ0aGVhZCIpLGE9KDA9PT1uLmxlbmd0aCYmKG49UCgiPHRoZWFkLz4iKS5hcHBlbmRUbyhsKSksaC5uVEhlYWQ9blswXSxsLmNoaWxkcmVuKCJ0Ym9keSIpKSxuPSgwPT09YS5sZW5ndGgmJihhPVAoIjx0Ym9keS8+IikuaW5zZXJ0QWZ0ZXIobikpLGgublRCb2R5PWFbMF0sbC5jaGlsZHJlbigidGZvb3QiKSk7aWYoMD09PShuPTA9PT1uLmxlbmd0aCYmMDxlLmxlbmd0aCYmKCIiIT09aC5vU2Nyb2xsLnNYfHwiIiE9PWgub1Njcm9sbC5zWSk/UCgiPHRmb290Lz4iKS5hcHBlbmRUbyhsKTpuKS5sZW5ndGh8fDA9PT1uLmNoaWxkcmVuKCkubGVuZ3RoP2wuYWRkQ2xhc3MocC5zTm9Gb290ZXIpOjA8bi5sZW5ndGgmJihoLm5URm9vdD1uWzBdLHd0KGguYW9Gb290ZXIsaC5uVEZvb3QpKSxyLmFhRGF0YSlmb3Iobz0wO288ci5hYURhdGEubGVuZ3RoO28rKyl4KGgsci5hYURhdGFbb10pO2Vsc2UhaC5iRGVmZXJMb2FkaW5nJiYiZG9tIiE9RShoKXx8dXQoaCxQKGgublRCb2R5KS5jaGlsZHJlbigidHIiKSk7aC5haURpc3BsYXk9aC5haURpc3BsYXlNYXN0ZXIuc2xpY2UoKSwhKGguYkluaXRpYWxpc2VkPSEwKT09PWkmJkp0KGgpfTtMKGgsImFvRHJhd0NhbGxiYWNrIixkZSwic3RhdGVfc2F2ZSIpLHIuYlN0YXRlU2F2ZT8oUy5iU3RhdGVTYXZlPSEwLGhlKGgsMCx0KSk6dCgpfX0pLHk9bnVsbCx0aGlzfSxjPXt9LFU9L1tcclxuXHUyMDI4XS9nLFY9LzwuKj8+L2csWD0vXlxkezIsNH1bXC5cL1wtXVxkezEsMn1bXC5cL1wtXVxkezEsMn0oW1QgXXsxfVxkezEsMn1bOlwuXVxkezJ9KFtcLjpdXGR7Mn0pPyk/JC8sSj1uZXcgUmVnRXhwKCIoXFwiK1siLyIsIi4iLCIqIiwiKyIsIj8iLCJ8IiwiKCIsIikiLCJbIiwiXSIsInsiLCJ9IiwiXFwiLCIkIiwiXiIsIi0iXS5qb2luKCJ8XFwiKSsiKSIsImciKSxxPS9bJ1x1MDBBMCwkwqPigqzCpSVcdTIwMDlcdTIwMkZcdTIwQkRcdTIwYTlcdTIwQkFyZmvJg86eXS9naSxoPWZ1bmN0aW9uKHQpe3JldHVybiF0fHwhMD09PXR8fCItIj09PXR9LCQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gY1tlXXx8KGNbZV09bmV3IFJlZ0V4cChPdChlKSwiZyIpKSwic3RyaW5nIj09dHlwZW9mIHQmJiIuIiE9PWU/dC5yZXBsYWNlKC9cLi9nLCIiKS5yZXBsYWNlKGNbZV0sIi4iKTp0fSxOPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1bXSxyPTAsbz10Lmxlbmd0aDtpZihuIT09SClmb3IoO3I8bztyKyspdFtyXSYmdFtyXVtlXSYmYS5wdXNoKHRbcl1bZV1bbl0pO2Vsc2UgZm9yKDtyPG87cisrKXRbcl0mJmEucHVzaCh0W3JdW2VdKTtyZXR1cm4gYX0sRz1mdW5jdGlvbih0KXtpZighKHQubGVuZ3RoPDIpKWZvcih2YXIgZT10LnNsaWNlKCkuc29ydCgpLG49ZVswXSxhPTEscj1lLmxlbmd0aDthPHI7YSsrKXtpZihlW2FdPT09bilyZXR1cm4hMTtuPWVbYV19cmV0dXJuITB9LHo9ZnVuY3Rpb24odCl7aWYoRyh0KSlyZXR1cm4gdC5zbGljZSgpO3ZhciBlLG4sYSxyPVtdLG89dC5sZW5ndGgsaT0wO3Q6Zm9yKG49MDtuPG87bisrKXtmb3IoZT10W25dLGE9MDthPGk7YSsrKWlmKHJbYV09PT1lKWNvbnRpbnVlIHQ7ci5wdXNoKGUpLGkrK31yZXR1cm4gcn0sWT1mdW5jdGlvbih0LGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspWSh0LGVbbl0pO2Vsc2UgdC5wdXNoKGUpO3JldHVybiB0fTtmdW5jdGlvbiBpKG4pe3ZhciBhLHIsbz17fTtQLmVhY2gobixmdW5jdGlvbih0LGUpeyhhPXQubWF0Y2goL14oW15BLVpdKz8pKFtBLVpdKS8pKSYmLTEhPT0iYSBhYSBhaSBhbyBhcyBiIGZuIGkgbSBvIHMgIi5pbmRleE9mKGFbMV0rIiAiKSYmKHI9dC5yZXBsYWNlKGFbMF0sYVsyXS50b0xvd2VyQ2FzZSgpKSxvW3JdPXQsIm8iPT09YVsxXSkmJmkoblt0XSl9KSxuLl9odW5nYXJpYW5NYXA9b31mdW5jdGlvbiBDKG4sYSxyKXt2YXIgbztuLl9odW5nYXJpYW5NYXB8fGkobiksUC5lYWNoKGEsZnVuY3Rpb24odCxlKXsobz1uLl9odW5nYXJpYW5NYXBbdF0pPT09SHx8IXImJmFbb10hPT1IfHwoIm8iPT09by5jaGFyQXQoMCk/KGFbb118fChhW29dPXt9KSxQLmV4dGVuZCghMCxhW29dLGFbdF0pLEMobltvXSxhW29dLHIpKTphW29dPWFbdF0pfSl9ZnVuY3Rpb24gWih0KXt2YXIgZSxuPXcuZGVmYXVsdHMub0xhbmd1YWdlLGE9bi5zRGVjaW1hbDthJiZNZShhKSx0JiYoZT10LnNaZXJvUmVjb3JkcywhdC5zRW1wdHlUYWJsZSYmZSYmIk5vIGRhdGEgYXZhaWxhYmxlIGluIHRhYmxlIj09PW4uc0VtcHR5VGFibGUmJkYodCx0LCJzWmVyb1JlY29yZHMiLCJzRW1wdHlUYWJsZSIpLCF0LnNMb2FkaW5nUmVjb3JkcyYmZSYmIkxvYWRpbmcuLi4iPT09bi5zTG9hZGluZ1JlY29yZHMmJkYodCx0LCJzWmVyb1JlY29yZHMiLCJzTG9hZGluZ1JlY29yZHMiKSx0LnNJbmZvVGhvdXNhbmRzJiYodC5zVGhvdXNhbmRzPXQuc0luZm9UaG91c2FuZHMpLGU9dC5zRGVjaW1hbCkmJmEhPT1lJiZNZShlKX1BcnJheS5pc0FycmF5fHwoQXJyYXkuaXNBcnJheT1mdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSksQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzfHwoQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzPXMpLFN0cmluZy5wcm90b3R5cGUudHJpbXx8KFN0cmluZy5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlcGxhY2UoL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLCIiKX0pLFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXN8fChTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzPXMpLHcudXRpbD17dGhyb3R0bGU6ZnVuY3Rpb24oYSx0KXt2YXIgcixvLGk9dCE9PUg/dDoyMDA7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPStuZXcgRGF0ZSxuPWFyZ3VtZW50cztyJiZlPHIraT8oY2xlYXJUaW1lb3V0KG8pLG89c2V0VGltZW91dChmdW5jdGlvbigpe3I9SCxhLmFwcGx5KHQsbil9LGkpKToocj1lLGEuYXBwbHkodCxuKSl9fSxlc2NhcGVSZWdleDpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKEosIlxcJDEiKX0sc2V0OmZ1bmN0aW9uKGEpe3ZhciBkO3JldHVybiBQLmlzUGxhaW5PYmplY3QoYSk/dy51dGlsLnNldChhLl8pOm51bGw9PT1hP2Z1bmN0aW9uKCl7fToiZnVuY3Rpb24iPT10eXBlb2YgYT9mdW5jdGlvbih0LGUsbil7YSh0LCJzZXQiLGUsbil9OiJzdHJpbmciIT10eXBlb2YgYXx8LTE9PT1hLmluZGV4T2YoIi4iKSYmLTE9PT1hLmluZGV4T2YoIlsiKSYmLTE9PT1hLmluZGV4T2YoIigiKT9mdW5jdGlvbih0LGUpe3RbYV09ZX06KGQ9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgYSxyLG8saSxsPWR0KG4pLG49bFtsLmxlbmd0aC0xXSxzPTAsdT1sLmxlbmd0aC0xO3M8dTtzKyspe2lmKCJfX3Byb3RvX18iPT09bFtzXXx8ImNvbnN0cnVjdG9yIj09PWxbc10pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc2V0IHByb3RvdHlwZSB2YWx1ZXMiKTtpZihhPWxbc10ubWF0Y2goZnQpLHI9bFtzXS5tYXRjaChnKSxhKXtpZihsW3NdPWxbc10ucmVwbGFjZShmdCwiIiksdFtsW3NdXT1bXSwoYT1sLnNsaWNlKCkpLnNwbGljZSgwLHMrMSksaT1hLmpvaW4oIi4iKSxBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgYz0wLGY9ZS5sZW5ndGg7YzxmO2MrKylkKG89e30sZVtjXSxpKSx0W2xbc11dLnB1c2gobyk7ZWxzZSB0W2xbc11dPWU7cmV0dXJufXImJihsW3NdPWxbc10ucmVwbGFjZShnLCIiKSx0PXRbbFtzXV0oZSkpLG51bGwhPT10W2xbc11dJiZ0W2xbc11dIT09SHx8KHRbbFtzXV09e30pLHQ9dFtsW3NdXX1uLm1hdGNoKGcpP3Rbbi5yZXBsYWNlKGcsIiIpXShlKTp0W24ucmVwbGFjZShmdCwiIildPWV9LGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGQodCxlLGEpfSl9LGdldDpmdW5jdGlvbihyKXt2YXIgbyxkO3JldHVybiBQLmlzUGxhaW5PYmplY3Qocik/KG89e30sUC5lYWNoKHIsZnVuY3Rpb24odCxlKXtlJiYob1t0XT13LnV0aWwuZ2V0KGUpKX0pLGZ1bmN0aW9uKHQsZSxuLGEpe3ZhciByPW9bZV18fG8uXztyZXR1cm4gciE9PUg/cih0LGUsbixhKTp0fSk6bnVsbD09PXI/ZnVuY3Rpb24odCl7cmV0dXJuIHR9OiJmdW5jdGlvbiI9PXR5cGVvZiByP2Z1bmN0aW9uKHQsZSxuLGEpe3JldHVybiByKHQsZSxuLGEpfToic3RyaW5nIiE9dHlwZW9mIHJ8fC0xPT09ci5pbmRleE9mKCIuIikmJi0xPT09ci5pbmRleE9mKCJbIikmJi0xPT09ci5pbmRleE9mKCIoIik/ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtyXX06KGQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBhLHIsbztpZigiIiE9PW4pZm9yKHZhciBpPWR0KG4pLGw9MCxzPWkubGVuZ3RoO2w8cztsKyspe2lmKGY9aVtsXS5tYXRjaChmdCksYT1pW2xdLm1hdGNoKGcpLGYpe2lmKGlbbF09aVtsXS5yZXBsYWNlKGZ0LCIiKSwiIiE9PWlbbF0mJih0PXRbaVtsXV0pLHI9W10saS5zcGxpY2UoMCxsKzEpLG89aS5qb2luKCIuIiksQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHU9MCxjPXQubGVuZ3RoO3U8Yzt1Kyspci5wdXNoKGQodFt1XSxlLG8pKTt2YXIgZj1mWzBdLnN1YnN0cmluZygxLGZbMF0ubGVuZ3RoLTEpO3Q9IiI9PT1mP3I6ci5qb2luKGYpO2JyZWFrfWlmKGEpaVtsXT1pW2xdLnJlcGxhY2UoZywiIiksdD10W2lbbF1dKCk7ZWxzZXtpZihudWxsPT09dHx8bnVsbD09PXRbaVtsXV0pcmV0dXJuIG51bGw7aWYodD09PUh8fHRbaVtsXV09PT1IKXJldHVybiBIO3Q9dFtpW2xdXX19cmV0dXJuIHR9LGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGQodCxlLHIpfSl9fTt2YXIgcj1mdW5jdGlvbih0LGUsbil7dFtlXSE9PUgmJih0W25dPXRbZV0pfTtmdW5jdGlvbiBLKHQpe3IodCwib3JkZXJpbmciLCJiU29ydCIpLHIodCwib3JkZXJNdWx0aSIsImJTb3J0TXVsdGkiKSxyKHQsIm9yZGVyQ2xhc3NlcyIsImJTb3J0Q2xhc3NlcyIpLHIodCwib3JkZXJDZWxsc1RvcCIsImJTb3J0Q2VsbHNUb3AiKSxyKHQsIm9yZGVyIiwiYWFTb3J0aW5nIikscih0LCJvcmRlckZpeGVkIiwiYWFTb3J0aW5nRml4ZWQiKSxyKHQsInBhZ2luZyIsImJQYWdpbmF0ZSIpLHIodCwicGFnaW5nVHlwZSIsInNQYWdpbmF0aW9uVHlwZSIpLHIodCwicGFnZUxlbmd0aCIsImlEaXNwbGF5TGVuZ3RoIikscih0LCJzZWFyY2hpbmciLCJiRmlsdGVyIiksImJvb2xlYW4iPT10eXBlb2YgdC5zU2Nyb2xsWCYmKHQuc1Njcm9sbFg9dC5zU2Nyb2xsWD8iMTAwJSI6IiIpLCJib29sZWFuIj09dHlwZW9mIHQuc2Nyb2xsWCYmKHQuc2Nyb2xsWD10LnNjcm9sbFg/IjEwMCUiOiIiKTt2YXIgZT10LmFvU2VhcmNoQ29scztpZihlKWZvcih2YXIgbj0wLGE9ZS5sZW5ndGg7bjxhO24rKyllW25dJiZDKHcubW9kZWxzLm9TZWFyY2gsZVtuXSl9ZnVuY3Rpb24gUSh0KXtyKHQsIm9yZGVyYWJsZSIsImJTb3J0YWJsZSIpLHIodCwib3JkZXJEYXRhIiwiYURhdGFTb3J0Iikscih0LCJvcmRlclNlcXVlbmNlIiwiYXNTb3J0aW5nIikscih0LCJvcmRlckRhdGFUeXBlIiwic29ydERhdGFUeXBlIik7dmFyIGU9dC5hRGF0YVNvcnQ7Im51bWJlciIhPXR5cGVvZiBlfHxBcnJheS5pc0FycmF5KGUpfHwodC5hRGF0YVNvcnQ9W2VdKX1mdW5jdGlvbiB0dCh0KXt2YXIgZSxuLGEscjt3Ll9fYnJvd3Nlcnx8KHcuX19icm93c2VyPWU9e30scj0oYT0obj1QKCI8ZGl2Lz4iKS5jc3Moe3Bvc2l0aW9uOiJmaXhlZCIsdG9wOjAsbGVmdDotMSpQKGopLnNjcm9sbExlZnQoKSxoZWlnaHQ6MSx3aWR0aDoxLG92ZXJmbG93OiJoaWRkZW4ifSkuYXBwZW5kKFAoIjxkaXYvPiIpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix0b3A6MSxsZWZ0OjEsd2lkdGg6MTAwLG92ZXJmbG93OiJzY3JvbGwifSkuYXBwZW5kKFAoIjxkaXYvPiIpLmNzcyh7d2lkdGg6IjEwMCUiLGhlaWdodDoxMH0pKSkuYXBwZW5kVG8oImJvZHkiKSkuY2hpbGRyZW4oKSkuY2hpbGRyZW4oKSxlLmJhcldpZHRoPWFbMF0ub2Zmc2V0V2lkdGgtYVswXS5jbGllbnRXaWR0aCxlLmJTY3JvbGxPdmVyc2l6ZT0xMDA9PT1yWzBdLm9mZnNldFdpZHRoJiYxMDAhPT1hWzBdLmNsaWVudFdpZHRoLGUuYlNjcm9sbGJhckxlZnQ9MSE9PU1hdGgucm91bmQoci5vZmZzZXQoKS5sZWZ0KSxlLmJCb3VuZGluZz0hIW5bMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgsbi5yZW1vdmUoKSksUC5leHRlbmQodC5vQnJvd3Nlcix3Ll9fYnJvd3NlciksdC5vU2Nyb2xsLmlCYXJXaWR0aD13Ll9fYnJvd3Nlci5iYXJXaWR0aH1mdW5jdGlvbiBldCh0LGUsbixhLHIsbyl7dmFyIGksbD1hLHM9ITE7Zm9yKG4hPT1IJiYoaT1uLHM9ITApO2whPT1yOyl0Lmhhc093blByb3BlcnR5KGwpJiYoaT1zP2UoaSx0W2xdLGwsdCk6dFtsXSxzPSEwLGwrPW8pO3JldHVybiBpfWZ1bmN0aW9uIG50KHQsZSl7dmFyIG49dy5kZWZhdWx0cy5jb2x1bW4sYT10LmFvQ29sdW1ucy5sZW5ndGgsbj1QLmV4dGVuZCh7fSx3Lm1vZGVscy5vQ29sdW1uLG4se25UaDplfHx2LmNyZWF0ZUVsZW1lbnQoInRoIiksc1RpdGxlOm4uc1RpdGxlfHwoZT9lLmlubmVySFRNTDoiIiksYURhdGFTb3J0Om4uYURhdGFTb3J0fHxbYV0sbURhdGE6bi5tRGF0YXx8YSxpZHg6YX0pLG49KHQuYW9Db2x1bW5zLnB1c2gobiksdC5hb1ByZVNlYXJjaENvbHMpO25bYV09UC5leHRlbmQoe30sdy5tb2RlbHMub1NlYXJjaCxuW2FdKSxhdCh0LGEsUChlKS5kYXRhKCkpfWZ1bmN0aW9uIGF0KHQsZSxuKXtmdW5jdGlvbiBhKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmLTEhPT10LmluZGV4T2YoIkAiKX12YXIgZT10LmFvQ29sdW1uc1tlXSxyPXQub0NsYXNzZXMsbz1QKGUublRoKSxpPSghZS5zV2lkdGhPcmlnJiYoZS5zV2lkdGhPcmlnPW8uYXR0cigid2lkdGgiKXx8bnVsbCx1PShvLmF0dHIoInN0eWxlIil8fCIiKS5tYXRjaCgvd2lkdGg6XHMqKFxkK1tweGVtJV0rKS8pKSYmKGUuc1dpZHRoT3JpZz11WzFdKSxuIT09SCYmbnVsbCE9PW4mJihRKG4pLEMody5kZWZhdWx0cy5jb2x1bW4sbiwhMCksbi5tRGF0YVByb3A9PT1IfHxuLm1EYXRhfHwobi5tRGF0YT1uLm1EYXRhUHJvcCksbi5zVHlwZSYmKGUuX3NNYW51YWxUeXBlPW4uc1R5cGUpLG4uY2xhc3NOYW1lJiYhbi5zQ2xhc3MmJihuLnNDbGFzcz1uLmNsYXNzTmFtZSksbi5zQ2xhc3MmJm8uYWRkQ2xhc3Mobi5zQ2xhc3MpLHU9ZS5zQ2xhc3MsUC5leHRlbmQoZSxuKSxGKGUsbiwic1dpZHRoIiwic1dpZHRoT3JpZyIpLHUhPT1lLnNDbGFzcyYmKGUuc0NsYXNzPXUrIiAiK2Uuc0NsYXNzKSxuLmlEYXRhU29ydCE9PUgmJihlLmFEYXRhU29ydD1bbi5pRGF0YVNvcnRdKSxGKGUsbiwiYURhdGFTb3J0IiksZS5hcmlhVGl0bGV8fChlLmFyaWFUaXRsZT1vLmF0dHIoImFyaWEtbGFiZWwiKSkpLGUubURhdGEpLGw9QShpKSxzPWUubVJlbmRlcj9BKGUubVJlbmRlcik6bnVsbCx1PShlLl9iQXR0clNyYz1QLmlzUGxhaW5PYmplY3QoaSkmJihhKGkuc29ydCl8fGEoaS50eXBlKXx8YShpLmZpbHRlcikpLGUuX3NldHRlcj1udWxsLGUuZm5HZXREYXRhPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1sKHQsZSxILG4pO3JldHVybiBzJiZlP3MoYSxlLHQsbik6YX0sZS5mblNldERhdGE9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBiKGkpKHQsZSxuKX0sIm51bWJlciI9PXR5cGVvZiBpfHxlLl9pc0FycmF5SG9zdHx8KHQuX3Jvd1JlYWRPYmplY3Q9ITApLHQub0ZlYXR1cmVzLmJTb3J0fHwoZS5iU29ydGFibGU9ITEsby5hZGRDbGFzcyhyLnNTb3J0YWJsZU5vbmUpKSwtMSE9PVAuaW5BcnJheSgiYXNjIixlLmFzU29ydGluZykpLG49LTEhPT1QLmluQXJyYXkoImRlc2MiLGUuYXNTb3J0aW5nKTtlLmJTb3J0YWJsZSYmKHV8fG4pP3UmJiFuPyhlLnNTb3J0aW5nQ2xhc3M9ci5zU29ydGFibGVBc2MsZS5zU29ydGluZ0NsYXNzSlVJPXIuc1NvcnRKVUlBc2NBbGxvd2VkKTohdSYmbj8oZS5zU29ydGluZ0NsYXNzPXIuc1NvcnRhYmxlRGVzYyxlLnNTb3J0aW5nQ2xhc3NKVUk9ci5zU29ydEpVSURlc2NBbGxvd2VkKTooZS5zU29ydGluZ0NsYXNzPXIuc1NvcnRhYmxlLGUuc1NvcnRpbmdDbGFzc0pVST1yLnNTb3J0SlVJKTooZS5zU29ydGluZ0NsYXNzPXIuc1NvcnRhYmxlTm9uZSxlLnNTb3J0aW5nQ2xhc3NKVUk9IiIpfWZ1bmN0aW9uIE8odCl7aWYoITEhPT10Lm9GZWF0dXJlcy5iQXV0b1dpZHRoKXt2YXIgZT10LmFvQ29sdW1ucztlZSh0KTtmb3IodmFyIG49MCxhPWUubGVuZ3RoO248YTtuKyspZVtuXS5uVGguc3R5bGUud2lkdGg9ZVtuXS5zV2lkdGh9dmFyIHI9dC5vU2Nyb2xsOyIiPT09ci5zWSYmIiI9PT1yLnNYfHxRdCh0KSxSKHQsbnVsbCwiY29sdW1uLXNpemluZyIsW3RdKX1mdW5jdGlvbiBydCh0LGUpe3Q9aXQodCwiYlZpc2libGUiKTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHRbZV0/dFtlXTpudWxsfWZ1bmN0aW9uIG90KHQsZSl7dD1pdCh0LCJiVmlzaWJsZSIpLGU9UC5pbkFycmF5KGUsdCk7cmV0dXJuLTEhPT1lP2U6bnVsbH1mdW5jdGlvbiBUKHQpe3ZhciBuPTA7cmV0dXJuIFAuZWFjaCh0LmFvQ29sdW1ucyxmdW5jdGlvbih0LGUpe2UuYlZpc2libGUmJiJub25lIiE9PVAoZS5uVGgpLmNzcygiZGlzcGxheSIpJiZuKyt9KSxufWZ1bmN0aW9uIGl0KHQsbil7dmFyIGE9W107cmV0dXJuIFAubWFwKHQuYW9Db2x1bW5zLGZ1bmN0aW9uKHQsZSl7dFtuXSYmYS5wdXNoKGUpfSksYX1mdW5jdGlvbiBsdCh0KXtmb3IodmFyIGUsbixhLHIsbyxpLGwscz10LmFvQ29sdW1ucyx1PXQuYW9EYXRhLGM9dy5leHQudHlwZS5kZXRlY3QsZj0wLGQ9cy5sZW5ndGg7ZjxkO2YrKylpZihsPVtdLCEobz1zW2ZdKS5zVHlwZSYmby5fc01hbnVhbFR5cGUpby5zVHlwZT1vLl9zTWFudWFsVHlwZTtlbHNlIGlmKCFvLnNUeXBlKXtmb3IoZT0wLG49Yy5sZW5ndGg7ZTxuO2UrKyl7Zm9yKGE9MCxyPXUubGVuZ3RoO2E8ciYmKGxbYV09PT1IJiYobFthXT1TKHQsYSxmLCJ0eXBlIikpLChpPWNbZV0obFthXSx0KSl8fGU9PT1jLmxlbmd0aC0xKSYmKCJodG1sIiE9PWl8fGgobFthXSkpO2ErKyk7aWYoaSl7by5zVHlwZT1pO2JyZWFrfX1vLnNUeXBlfHwoby5zVHlwZT0ic3RyaW5nIil9fWZ1bmN0aW9uIHN0KHQsZSxuLGEpe3ZhciByLG8saSxsLHM9dC5hb0NvbHVtbnM7aWYoZSlmb3Iocj1lLmxlbmd0aC0xOzA8PXI7ci0tKWZvcih2YXIgdSxjPSh1PWVbcl0pLnRhcmdldCE9PUg/dS50YXJnZXQ6dS50YXJnZXRzIT09SD91LnRhcmdldHM6dS5hVGFyZ2V0cyxmPTAsZD0oYz1BcnJheS5pc0FycmF5KGMpP2M6W2NdKS5sZW5ndGg7ZjxkO2YrKylpZigibnVtYmVyIj09dHlwZW9mIGNbZl0mJjA8PWNbZl0pe2Zvcig7cy5sZW5ndGg8PWNbZl07KW50KHQpO2EoY1tmXSx1KX1lbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgY1tmXSYmY1tmXTwwKWEocy5sZW5ndGgrY1tmXSx1KTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgY1tmXSlmb3IoaT0wLGw9cy5sZW5ndGg7aTxsO2krKykiX2FsbCIhPWNbZl0mJiFQKHNbaV0ublRoKS5oYXNDbGFzcyhjW2ZdKXx8YShpLHUpO2lmKG4pZm9yKHI9MCxvPW4ubGVuZ3RoO3I8bztyKyspYShyLG5bcl0pfWZ1bmN0aW9uIHgodCxlLG4sYSl7Zm9yKHZhciByPXQuYW9EYXRhLmxlbmd0aCxvPVAuZXh0ZW5kKCEwLHt9LHcubW9kZWxzLm9Sb3cse3NyYzpuPyJkb20iOiJkYXRhIixpZHg6cn0pLGk9KG8uX2FEYXRhPWUsdC5hb0RhdGEucHVzaChvKSx0LmFvQ29sdW1ucyksbD0wLHM9aS5sZW5ndGg7bDxzO2wrKylpW2xdLnNUeXBlPW51bGw7dC5haURpc3BsYXlNYXN0ZXIucHVzaChyKTtlPXQucm93SWRGbihlKTtyZXR1cm4gZSE9PUgmJih0LmFJZHNbZV09byksIW4mJnQub0ZlYXR1cmVzLmJEZWZlclJlbmRlcnx8U3QodCxyLG4sYSkscn1mdW5jdGlvbiB1dChuLHQpe3ZhciBhO3JldHVybih0PXQgaW5zdGFuY2VvZiBQP3Q6UCh0KSkubWFwKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGE9bXQobixlKSx4KG4sYS5kYXRhLGUsYS5jZWxscyl9KX1mdW5jdGlvbiBTKHQsZSxuLGEpeyJzZWFyY2giPT09YT9hPSJmaWx0ZXIiOiJvcmRlciI9PT1hJiYoYT0ic29ydCIpO3ZhciByPXQuaURyYXcsbz10LmFvQ29sdW1uc1tuXSxpPXQuYW9EYXRhW2VdLl9hRGF0YSxsPW8uc0RlZmF1bHRDb250ZW50LHM9by5mbkdldERhdGEoaSxhLHtzZXR0aW5nczp0LHJvdzplLGNvbDpufSk7aWYocz09PUgpcmV0dXJuIHQuaURyYXdFcnJvciE9ciYmbnVsbD09PWwmJihXKHQsMCwiUmVxdWVzdGVkIHVua25vd24gcGFyYW1ldGVyICIrKCJmdW5jdGlvbiI9PXR5cGVvZiBvLm1EYXRhPyJ7ZnVuY3Rpb259IjoiJyIrby5tRGF0YSsiJyIpKyIgZm9yIHJvdyAiK2UrIiwgY29sdW1uICIrbiw0KSx0LmlEcmF3RXJyb3I9ciksbDtpZihzIT09aSYmbnVsbCE9PXN8fG51bGw9PT1sfHxhPT09SCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHMpcmV0dXJuIHMuY2FsbChpKX1lbHNlIHM9bDtyZXR1cm4gbnVsbD09PXMmJiJkaXNwbGF5Ij09PWE/IiI6ImZpbHRlciI9PT1hJiYoZT13LmV4dC50eXBlLnNlYXJjaClbby5zVHlwZV0/ZVtvLnNUeXBlXShzKTpzfWZ1bmN0aW9uIGN0KHQsZSxuLGEpe3ZhciByPXQuYW9Db2x1bW5zW25dLG89dC5hb0RhdGFbZV0uX2FEYXRhO3IuZm5TZXREYXRhKG8sYSx7c2V0dGluZ3M6dCxyb3c6ZSxjb2w6bn0pfXZhciBmdD0vXFsuKj9cXSQvLGc9L1woXCkkLztmdW5jdGlvbiBkdCh0KXtyZXR1cm4gUC5tYXAodC5tYXRjaCgvKFxcLnxbXlwuXSkrL2cpfHxbIiJdLGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1xcXC4vZywiLiIpfSl9dmFyIEE9dy51dGlsLmdldCxiPXcudXRpbC5zZXQ7ZnVuY3Rpb24gaHQodCl7cmV0dXJuIE4odC5hb0RhdGEsIl9hRGF0YSIpfWZ1bmN0aW9uIHB0KHQpe3QuYW9EYXRhLmxlbmd0aD0wLHQuYWlEaXNwbGF5TWFzdGVyLmxlbmd0aD0wLHQuYWlEaXNwbGF5Lmxlbmd0aD0wLHQuYUlkcz17fX1mdW5jdGlvbiBndCh0LGUsbil7Zm9yKHZhciBhPS0xLHI9MCxvPXQubGVuZ3RoO3I8bztyKyspdFtyXT09ZT9hPXI6dFtyXT5lJiZ0W3JdLS07LTEhPWEmJm49PT1IJiZ0LnNwbGljZShhLDEpfWZ1bmN0aW9uIGJ0KG4sYSx0LGUpe2Z1bmN0aW9uIHIodCxlKXtmb3IoO3QuY2hpbGROb2Rlcy5sZW5ndGg7KXQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKTt0LmlubmVySFRNTD1TKG4sYSxlLCJkaXNwbGF5Iil9dmFyIG8saSxsPW4uYW9EYXRhW2FdO2lmKCJkb20iIT09dCYmKHQmJiJhdXRvIiE9PXR8fCJkb20iIT09bC5zcmMpKXt2YXIgcz1sLmFuQ2VsbHM7aWYocylpZihlIT09SClyKHNbZV0sZSk7ZWxzZSBmb3Iobz0wLGk9cy5sZW5ndGg7bzxpO28rKylyKHNbb10sbyl9ZWxzZSBsLl9hRGF0YT1tdChuLGwsZSxlPT09SD9IOmwuX2FEYXRhKS5kYXRhO2wuX2FTb3J0RGF0YT1udWxsLGwuX2FGaWx0ZXJEYXRhPW51bGw7dmFyIHU9bi5hb0NvbHVtbnM7aWYoZSE9PUgpdVtlXS5zVHlwZT1udWxsO2Vsc2V7Zm9yKG89MCxpPXUubGVuZ3RoO288aTtvKyspdVtvXS5zVHlwZT1udWxsO3Z0KG4sbCl9fWZ1bmN0aW9uIG10KHQsZSxuLGEpe2Z1bmN0aW9uIHIodCxlKXt2YXIgbjsic3RyaW5nIj09dHlwZW9mIHQmJi0xIT09KG49dC5pbmRleE9mKCJAIikpJiYobj10LnN1YnN0cmluZyhuKzEpLGIodCkoYSxlLmdldEF0dHJpYnV0ZShuKSkpfWZ1bmN0aW9uIG8odCl7biE9PUgmJm4hPT1mfHwobD1kW2ZdLHM9dC5pbm5lckhUTUwudHJpbSgpLGwmJmwuX2JBdHRyU3JjPyhiKGwubURhdGEuXykoYSxzKSxyKGwubURhdGEuc29ydCx0KSxyKGwubURhdGEudHlwZSx0KSxyKGwubURhdGEuZmlsdGVyLHQpKTpoPyhsLl9zZXR0ZXJ8fChsLl9zZXR0ZXI9YihsLm1EYXRhKSksbC5fc2V0dGVyKGEscykpOmFbZl09cyksZisrfXZhciBpLGwscyx1PVtdLGM9ZS5maXJzdENoaWxkLGY9MCxkPXQuYW9Db2x1bW5zLGg9dC5fcm93UmVhZE9iamVjdDthPWEhPT1IP2E6aD97fTpbXTtpZihjKWZvcig7YzspIlREIiE9KGk9Yy5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpKSYmIlRIIiE9aXx8KG8oYyksdS5wdXNoKGMpKSxjPWMubmV4dFNpYmxpbmc7ZWxzZSBmb3IodmFyIHA9MCxnPSh1PWUuYW5DZWxscykubGVuZ3RoO3A8ZztwKyspbyh1W3BdKTt2YXIgZT1lLmZpcnN0Q2hpbGQ/ZTplLm5UcjtyZXR1cm4gZSYmKGU9ZS5nZXRBdHRyaWJ1dGUoImlkIikpJiZiKHQucm93SWQpKGEsZSkse2RhdGE6YSxjZWxsczp1fX1mdW5jdGlvbiBTdCh0LGUsbixhKXt2YXIgcixvLGksbCxzLHUsYz10LmFvRGF0YVtlXSxmPWMuX2FEYXRhLGQ9W107aWYobnVsbD09PWMublRyKXtmb3Iocj1ufHx2LmNyZWF0ZUVsZW1lbnQoInRyIiksYy5uVHI9cixjLmFuQ2VsbHM9ZCxyLl9EVF9Sb3dJbmRleD1lLHZ0KHQsYyksbD0wLHM9dC5hb0NvbHVtbnMubGVuZ3RoO2w8cztsKyspaT10LmFvQ29sdW1uc1tsXSwobz0odT0hbik/di5jcmVhdGVFbGVtZW50KGkuc0NlbGxUeXBlKTphW2xdKXx8Vyh0LDAsIkluY29ycmVjdCBjb2x1bW4gY291bnQiLDE4KSxvLl9EVF9DZWxsSW5kZXg9e3JvdzplLGNvbHVtbjpsfSxkLnB1c2gobyksIXUmJighaS5tUmVuZGVyJiZpLm1EYXRhPT09bHx8UC5pc1BsYWluT2JqZWN0KGkubURhdGEpJiZpLm1EYXRhLl89PT1sKyIuZGlzcGxheSIpfHwoby5pbm5lckhUTUw9Uyh0LGUsbCwiZGlzcGxheSIpKSxpLnNDbGFzcyYmKG8uY2xhc3NOYW1lKz0iICIraS5zQ2xhc3MpLGkuYlZpc2libGUmJiFuP3IuYXBwZW5kQ2hpbGQobyk6IWkuYlZpc2libGUmJm4mJm8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSxpLmZuQ3JlYXRlZENlbGwmJmkuZm5DcmVhdGVkQ2VsbC5jYWxsKHQub0luc3RhbmNlLG8sUyh0LGUsbCksZixlLGwpO1IodCwiYW9Sb3dDcmVhdGVkQ2FsbGJhY2siLG51bGwsW3IsZixlLGRdKX19ZnVuY3Rpb24gdnQodCxlKXt2YXIgbj1lLm5UcixhPWUuX2FEYXRhO24mJigodD10LnJvd0lkRm4oYSkpJiYobi5pZD10KSxhLkRUX1Jvd0NsYXNzJiYodD1hLkRUX1Jvd0NsYXNzLnNwbGl0KCIgIiksZS5fX3Jvd2M9ZS5fX3Jvd2M/eihlLl9fcm93Yy5jb25jYXQodCkpOnQsUChuKS5yZW1vdmVDbGFzcyhlLl9fcm93Yy5qb2luKCIgIikpLmFkZENsYXNzKGEuRFRfUm93Q2xhc3MpKSxhLkRUX1Jvd0F0dHImJlAobikuYXR0cihhLkRUX1Jvd0F0dHIpLGEuRFRfUm93RGF0YSkmJlAobikuZGF0YShhLkRUX1Jvd0RhdGEpfWZ1bmN0aW9uIHl0KHQpe3ZhciBlLG4sYSxyPXQublRIZWFkLG89dC5uVEZvb3QsaT0wPT09UCgidGgsIHRkIixyKS5sZW5ndGgsbD10Lm9DbGFzc2VzLHM9dC5hb0NvbHVtbnM7Zm9yKGkmJihuPVAoIjx0ci8+IikuYXBwZW5kVG8ocikpLGM9MCxmPXMubGVuZ3RoO2M8ZjtjKyspYT1zW2NdLGU9UChhLm5UaCkuYWRkQ2xhc3MoYS5zQ2xhc3MpLGkmJmUuYXBwZW5kVG8obiksdC5vRmVhdHVyZXMuYlNvcnQmJihlLmFkZENsYXNzKGEuc1NvcnRpbmdDbGFzcyksITEhPT1hLmJTb3J0YWJsZSkmJihlLmF0dHIoInRhYmluZGV4Iix0LmlUYWJJbmRleCkuYXR0cigiYXJpYS1jb250cm9scyIsdC5zVGFibGVJZCksdWUodCxhLm5UaCxjKSksYS5zVGl0bGUhPWVbMF0uaW5uZXJIVE1MJiZlLmh0bWwoYS5zVGl0bGUpLHZlKHQsImhlYWRlciIpKHQsZSxhLGwpO2lmKGkmJnd0KHQuYW9IZWFkZXIsciksUChyKS5jaGlsZHJlbigidHIiKS5jaGlsZHJlbigidGgsIHRkIikuYWRkQ2xhc3MobC5zSGVhZGVyVEgpLFAobykuY2hpbGRyZW4oInRyIikuY2hpbGRyZW4oInRoLCB0ZCIpLmFkZENsYXNzKGwuc0Zvb3RlclRIKSxudWxsIT09bylmb3IodmFyIHU9dC5hb0Zvb3RlclswXSxjPTAsZj11Lmxlbmd0aDtjPGY7YysrKShhPXNbY10pPyhhLm5UZj11W2NdLmNlbGwsYS5zQ2xhc3MmJlAoYS5uVGYpLmFkZENsYXNzKGEuc0NsYXNzKSk6Vyh0LDAsIkluY29ycmVjdCBjb2x1bW4gY291bnQiLDE4KX1mdW5jdGlvbiBEdCh0LGUsbil7dmFyIGEscixvLGksbCxzLHUsYyxmLGQ9W10saD1bXSxwPXQuYW9Db2x1bW5zLmxlbmd0aDtpZihlKXtmb3Iobj09PUgmJihuPSExKSxhPTAscj1lLmxlbmd0aDthPHI7YSsrKXtmb3IoZFthXT1lW2FdLnNsaWNlKCksZFthXS5uVHI9ZVthXS5uVHIsbz1wLTE7MDw9bztvLS0pdC5hb0NvbHVtbnNbb10uYlZpc2libGV8fG58fGRbYV0uc3BsaWNlKG8sMSk7aC5wdXNoKFtdKX1mb3IoYT0wLHI9ZC5sZW5ndGg7YTxyO2ErKyl7aWYodT1kW2FdLm5Ucilmb3IoO3M9dS5maXJzdENoaWxkOyl1LnJlbW92ZUNoaWxkKHMpO2ZvcihvPTAsaT1kW2FdLmxlbmd0aDtvPGk7bysrKWlmKGY9Yz0xLGhbYV1bb109PT1IKXtmb3IodS5hcHBlbmRDaGlsZChkW2FdW29dLmNlbGwpLGhbYV1bb109MTtkW2ErY10hPT1IJiZkW2FdW29dLmNlbGw9PWRbYStjXVtvXS5jZWxsOyloW2ErY11bb109MSxjKys7Zm9yKDtkW2FdW28rZl0hPT1IJiZkW2FdW29dLmNlbGw9PWRbYV1bbytmXS5jZWxsOyl7Zm9yKGw9MDtsPGM7bCsrKWhbYStsXVtvK2ZdPTE7ZisrfVAoZFthXVtvXS5jZWxsKS5hdHRyKCJyb3dzcGFuIixjKS5hdHRyKCJjb2xzcGFuIixmKX19fX1mdW5jdGlvbiB5KHQsZSl7bj0ic3NwIj09RShzPXQpLChsPXMuaUluaXREaXNwbGF5U3RhcnQpIT09SCYmLTEhPT1sJiYocy5faURpc3BsYXlTdGFydD0hbiYmbD49cy5mblJlY29yZHNEaXNwbGF5KCk/MDpsLHMuaUluaXREaXNwbGF5U3RhcnQ9LTEpO3ZhciBuPVIodCwiYW9QcmVEcmF3Q2FsbGJhY2siLCJwcmVEcmF3IixbdF0pO2lmKC0xIT09UC5pbkFycmF5KCExLG4pKUQodCwhMSk7ZWxzZXt2YXIgYT1bXSxyPTAsbz10LmFzU3RyaXBlQ2xhc3NlcyxpPW8ubGVuZ3RoLGw9dC5vTGFuZ3VhZ2Uscz0ic3NwIj09RSh0KSx1PXQuYWlEaXNwbGF5LG49dC5faURpc3BsYXlTdGFydCxjPXQuZm5EaXNwbGF5RW5kKCk7aWYodC5iRHJhd2luZz0hMCx0LmJEZWZlckxvYWRpbmcpdC5iRGVmZXJMb2FkaW5nPSExLHQuaURyYXcrKyxEKHQsITEpO2Vsc2UgaWYocyl7aWYoIXQuYkRlc3Ryb3lpbmcmJiFlKXJldHVybiB2b2lkIHh0KHQpfWVsc2UgdC5pRHJhdysrO2lmKDAhPT11Lmxlbmd0aClmb3IodmFyIGY9cz90LmFvRGF0YS5sZW5ndGg6YyxkPXM/MDpuO2Q8ZjtkKyspe3ZhciBoLHA9dVtkXSxnPXQuYW9EYXRhW3BdLGI9KG51bGw9PT1nLm5UciYmU3QodCxwKSxnLm5Ucik7MCE9PWkmJihoPW9bciVpXSxnLl9zUm93U3RyaXBlIT1oKSYmKFAoYikucmVtb3ZlQ2xhc3MoZy5fc1Jvd1N0cmlwZSkuYWRkQ2xhc3MoaCksZy5fc1Jvd1N0cmlwZT1oKSxSKHQsImFvUm93Q2FsbGJhY2siLG51bGwsW2IsZy5fYURhdGEscixkLHBdKSxhLnB1c2goYikscisrfWVsc2V7ZT1sLnNaZXJvUmVjb3JkczsxPT10LmlEcmF3JiYiYWpheCI9PUUodCk/ZT1sLnNMb2FkaW5nUmVjb3JkczpsLnNFbXB0eVRhYmxlJiYwPT09dC5mblJlY29yZHNUb3RhbCgpJiYoZT1sLnNFbXB0eVRhYmxlKSxhWzBdPVAoIjx0ci8+Iix7Y2xhc3M6aT9vWzBdOiIifSkuYXBwZW5kKFAoIjx0ZCAvPiIse3ZhbGlnbjoidG9wIixjb2xTcGFuOlQodCksY2xhc3M6dC5vQ2xhc3Nlcy5zUm93RW1wdHl9KS5odG1sKGUpKVswXX1SKHQsImFvSGVhZGVyQ2FsbGJhY2siLCJoZWFkZXIiLFtQKHQublRIZWFkKS5jaGlsZHJlbigidHIiKVswXSxodCh0KSxuLGMsdV0pLFIodCwiYW9Gb290ZXJDYWxsYmFjayIsImZvb3RlciIsW1AodC5uVEZvb3QpLmNoaWxkcmVuKCJ0ciIpWzBdLGh0KHQpLG4sYyx1XSk7cz1QKHQublRCb2R5KTtzLmNoaWxkcmVuKCkuZGV0YWNoKCkscy5hcHBlbmQoUChhKSksUih0LCJhb0RyYXdDYWxsYmFjayIsImRyYXciLFt0XSksdC5iU29ydGVkPSExLHQuYkZpbHRlcmVkPSExLHQuYkRyYXdpbmc9ITF9fWZ1bmN0aW9uIHUodCxlKXt2YXIgbj10Lm9GZWF0dXJlcyxhPW4uYlNvcnQsbj1uLmJGaWx0ZXI7YSYmaWUodCksbj9SdCh0LHQub1ByZXZpb3VzU2VhcmNoKTp0LmFpRGlzcGxheT10LmFpRGlzcGxheU1hc3Rlci5zbGljZSgpLCEwIT09ZSYmKHQuX2lEaXNwbGF5U3RhcnQ9MCksdC5fZHJhd0hvbGQ9ZSx5KHQpLHQuX2RyYXdIb2xkPSExfWZ1bmN0aW9uIF90KHQpe2Zvcih2YXIgZSxuLGEscixvLGksbCxzPXQub0NsYXNzZXMsdT1QKHQublRhYmxlKSx1PVAoIjxkaXYvPiIpLmluc2VydEJlZm9yZSh1KSxjPXQub0ZlYXR1cmVzLGY9UCgiPGRpdi8+Iix7aWQ6dC5zVGFibGVJZCsiX3dyYXBwZXIiLGNsYXNzOnMuc1dyYXBwZXIrKHQublRGb290PyIiOiIgIitzLnNOb0Zvb3Rlcil9KSxkPSh0Lm5Ib2xkaW5nPXVbMF0sdC5uVGFibGVXcmFwcGVyPWZbMF0sdC5uVGFibGVSZWluc2VydEJlZm9yZT10Lm5UYWJsZS5uZXh0U2libGluZyx0LnNEb20uc3BsaXQoIiIpKSxoPTA7aDxkLmxlbmd0aDtoKyspe2lmKGU9bnVsbCwiPCI9PShuPWRbaF0pKXtpZihhPVAoIjxkaXYvPiIpWzBdLCInIj09KHI9ZFtoKzFdKXx8JyInPT1yKXtmb3Iobz0iIixpPTI7ZFtoK2ldIT1yOylvKz1kW2graV0saSsrOyJIIj09bz9vPXMuc0pVSUhlYWRlcjoiRiI9PW8mJihvPXMuc0pVSUZvb3RlciksLTEhPW8uaW5kZXhPZigiLiIpPyhsPW8uc3BsaXQoIi4iKSxhLmlkPWxbMF0uc3Vic3RyKDEsbFswXS5sZW5ndGgtMSksYS5jbGFzc05hbWU9bFsxXSk6IiMiPT1vLmNoYXJBdCgwKT9hLmlkPW8uc3Vic3RyKDEsby5sZW5ndGgtMSk6YS5jbGFzc05hbWU9byxoKz1pfWYuYXBwZW5kKGEpLGY9UChhKX1lbHNlIGlmKCI+Ij09bilmPWYucGFyZW50KCk7ZWxzZSBpZigibCI9PW4mJmMuYlBhZ2luYXRlJiZjLmJMZW5ndGhDaGFuZ2UpZT1HdCh0KTtlbHNlIGlmKCJmIj09biYmYy5iRmlsdGVyKWU9THQodCk7ZWxzZSBpZigiciI9PW4mJmMuYlByb2Nlc3NpbmcpZT1adCh0KTtlbHNlIGlmKCJ0Ij09billPUt0KHQpO2Vsc2UgaWYoImkiPT1uJiZjLmJJbmZvKWU9VXQodCk7ZWxzZSBpZigicCI9PW4mJmMuYlBhZ2luYXRlKWU9enQodCk7ZWxzZSBpZigwIT09dy5leHQuZmVhdHVyZS5sZW5ndGgpZm9yKHZhciBwPXcuZXh0LmZlYXR1cmUsZz0wLGI9cC5sZW5ndGg7ZzxiO2crKylpZihuPT1wW2ddLmNGZWF0dXJlKXtlPXBbZ10uZm5Jbml0KHQpO2JyZWFrfWUmJigobD10LmFhbkZlYXR1cmVzKVtuXXx8KGxbbl09W10pLGxbbl0ucHVzaChlKSxmLmFwcGVuZChlKSl9dS5yZXBsYWNlV2l0aChmKSx0Lm5Ib2xkaW5nPW51bGx9ZnVuY3Rpb24gd3QodCxlKXt2YXIgbixhLHIsbyxpLGwscyx1LGMsZixkPVAoZSkuY2hpbGRyZW4oInRyIik7Zm9yKHQuc3BsaWNlKDAsdC5sZW5ndGgpLHI9MCxsPWQubGVuZ3RoO3I8bDtyKyspdC5wdXNoKFtdKTtmb3Iocj0wLGw9ZC5sZW5ndGg7cjxsO3IrKylmb3IoYT0obj1kW3JdKS5maXJzdENoaWxkO2E7KXtpZigiVEQiPT1hLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCl8fCJUSCI9PWEubm9kZU5hbWUudG9VcHBlckNhc2UoKSlmb3IodT0odT0rYS5nZXRBdHRyaWJ1dGUoImNvbHNwYW4iKSkmJjAhPXUmJjEhPXU/dToxLGM9KGM9K2EuZ2V0QXR0cmlidXRlKCJyb3dzcGFuIikpJiYwIT1jJiYxIT1jP2M6MSxzPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGE9dFtlXTthW25dOyluKys7cmV0dXJuIG59KHQsciwwKSxmPTE9PXUsaT0wO2k8dTtpKyspZm9yKG89MDtvPGM7bysrKXRbcitvXVtzK2ldPXtjZWxsOmEsdW5pcXVlOmZ9LHRbcitvXS5uVHI9bjthPWEubmV4dFNpYmxpbmd9fWZ1bmN0aW9uIEN0KHQsZSxuKXt2YXIgYT1bXTtufHwobj10LmFvSGVhZGVyLGUmJnd0KG49W10sZSkpO2Zvcih2YXIgcj0wLG89bi5sZW5ndGg7cjxvO3IrKylmb3IodmFyIGk9MCxsPW5bcl0ubGVuZ3RoO2k8bDtpKyspIW5bcl1baV0udW5pcXVlfHxhW2ldJiZ0LmJTb3J0Q2VsbHNUb3B8fChhW2ldPW5bcl1baV0uY2VsbCk7cmV0dXJuIGF9ZnVuY3Rpb24gVHQocix0LG4pe2Z1bmN0aW9uIGUodCl7dmFyIGU9ci5qcVhIUj9yLmpxWEhSLnN0YXR1czpudWxsOyhudWxsPT09dHx8Im51bWJlciI9PXR5cGVvZiBlJiYyMDQ9PWUpJiZGdChyLHQ9e30sW10pLChlPXQuZXJyb3J8fHQuc0Vycm9yKSYmVyhyLDAsZSksci5qc29uPXQsUihyLG51bGwsInhociIsW3IsdCxyLmpxWEhSXSksbih0KX1SKHIsImFvU2VydmVyUGFyYW1zIiwic2VydmVyUGFyYW1zIixbdF0pLHQmJkFycmF5LmlzQXJyYXkodCkmJihhPXt9LG89LyguKj8pXFtcXSQvLFAuZWFjaCh0LGZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5uYW1lLm1hdGNoKG8pO24/KG49blswXSxhW25dfHwoYVtuXT1bXSksYVtuXS5wdXNoKGUudmFsdWUpKTphW2UubmFtZV09ZS52YWx1ZX0pLHQ9YSk7dmFyIGEsbyxpLGw9ci5hamF4LHM9ci5vSW5zdGFuY2UsdT0oUC5pc1BsYWluT2JqZWN0KGwpJiZsLmRhdGEmJih1PSJmdW5jdGlvbiI9PXR5cGVvZihpPWwuZGF0YSk/aSh0LHIpOmksdD0iZnVuY3Rpb24iPT10eXBlb2YgaSYmdT91OlAuZXh0ZW5kKCEwLHQsdSksZGVsZXRlIGwuZGF0YSkse2RhdGE6dCxzdWNjZXNzOmUsZGF0YVR5cGU6Impzb24iLGNhY2hlOiExLHR5cGU6ci5zU2VydmVyTWV0aG9kLGVycm9yOmZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1SKHIsbnVsbCwieGhyIixbcixudWxsLHIuanFYSFJdKTstMT09PVAuaW5BcnJheSghMCxhKSYmKCJwYXJzZXJlcnJvciI9PWU/VyhyLDAsIkludmFsaWQgSlNPTiByZXNwb25zZSIsMSk6ND09PXQucmVhZHlTdGF0ZSYmVyhyLDAsIkFqYXggZXJyb3IiLDcpKSxEKHIsITEpfX0pO3Iub0FqYXhEYXRhPXQsUihyLG51bGwsInByZVhociIsW3IsdF0pLHIuZm5TZXJ2ZXJEYXRhP3IuZm5TZXJ2ZXJEYXRhLmNhbGwocyxyLnNBamF4U291cmNlLFAubWFwKHQsZnVuY3Rpb24odCxlKXtyZXR1cm57bmFtZTplLHZhbHVlOnR9fSksZSxyKTpyLnNBamF4U291cmNlfHwic3RyaW5nIj09dHlwZW9mIGw/ci5qcVhIUj1QLmFqYXgoUC5leHRlbmQodSx7dXJsOmx8fHIuc0FqYXhTb3VyY2V9KSk6ImZ1bmN0aW9uIj09dHlwZW9mIGw/ci5qcVhIUj1sLmNhbGwocyx0LGUscik6KHIuanFYSFI9UC5hamF4KFAuZXh0ZW5kKHUsbCkpLGwuZGF0YT1pKX1mdW5jdGlvbiB4dChlKXtlLmlEcmF3KyssRChlLCEwKTt2YXIgbj1lLl9kcmF3SG9sZDtUdChlLEF0KGUpLGZ1bmN0aW9uKHQpe2UuX2RyYXdIb2xkPW4sSXQoZSx0KSxlLl9kcmF3SG9sZD0hMX0pfWZ1bmN0aW9uIEF0KHQpe2Zvcih2YXIgZSxuLGEscj10LmFvQ29sdW1ucyxvPXIubGVuZ3RoLGk9dC5vRmVhdHVyZXMsbD10Lm9QcmV2aW91c1NlYXJjaCxzPXQuYW9QcmVTZWFyY2hDb2xzLHU9W10sYz1JKHQpLGY9dC5faURpc3BsYXlTdGFydCxkPSExIT09aS5iUGFnaW5hdGU/dC5faURpc3BsYXlMZW5ndGg6LTEsaD1mdW5jdGlvbih0LGUpe3UucHVzaCh7bmFtZTp0LHZhbHVlOmV9KX0scD0oaCgic0VjaG8iLHQuaURyYXcpLGgoImlDb2x1bW5zIixvKSxoKCJzQ29sdW1ucyIsTihyLCJzTmFtZSIpLmpvaW4oIiwiKSksaCgiaURpc3BsYXlTdGFydCIsZiksaCgiaURpc3BsYXlMZW5ndGgiLGQpLHtkcmF3OnQuaURyYXcsY29sdW1uczpbXSxvcmRlcjpbXSxzdGFydDpmLGxlbmd0aDpkLHNlYXJjaDp7dmFsdWU6bC5zU2VhcmNoLHJlZ2V4OmwuYlJlZ2V4fX0pLGc9MDtnPG87ZysrKW49cltnXSxhPXNbZ10sZT0iZnVuY3Rpb24iPT10eXBlb2Ygbi5tRGF0YT8iZnVuY3Rpb24iOm4ubURhdGEscC5jb2x1bW5zLnB1c2goe2RhdGE6ZSxuYW1lOm4uc05hbWUsc2VhcmNoYWJsZTpuLmJTZWFyY2hhYmxlLG9yZGVyYWJsZTpuLmJTb3J0YWJsZSxzZWFyY2g6e3ZhbHVlOmEuc1NlYXJjaCxyZWdleDphLmJSZWdleH19KSxoKCJtRGF0YVByb3BfIitnLGUpLGkuYkZpbHRlciYmKGgoInNTZWFyY2hfIitnLGEuc1NlYXJjaCksaCgiYlJlZ2V4XyIrZyxhLmJSZWdleCksaCgiYlNlYXJjaGFibGVfIitnLG4uYlNlYXJjaGFibGUpKSxpLmJTb3J0JiZoKCJiU29ydGFibGVfIitnLG4uYlNvcnRhYmxlKTtpLmJGaWx0ZXImJihoKCJzU2VhcmNoIixsLnNTZWFyY2gpLGgoImJSZWdleCIsbC5iUmVnZXgpKSxpLmJTb3J0JiYoUC5lYWNoKGMsZnVuY3Rpb24odCxlKXtwLm9yZGVyLnB1c2goe2NvbHVtbjplLmNvbCxkaXI6ZS5kaXJ9KSxoKCJpU29ydENvbF8iK3QsZS5jb2wpLGgoInNTb3J0RGlyXyIrdCxlLmRpcil9KSxoKCJpU29ydGluZ0NvbHMiLGMubGVuZ3RoKSk7Zj13LmV4dC5sZWdhY3kuYWpheDtyZXR1cm4gbnVsbD09PWY/dC5zQWpheFNvdXJjZT91OnA6Zj91OnB9ZnVuY3Rpb24gSXQodCxuKXtmdW5jdGlvbiBlKHQsZSl7cmV0dXJuIG5bdF0hPT1IP25bdF06bltlXX12YXIgYT1GdCh0LG4pLHI9ZSgic0VjaG8iLCJkcmF3Iiksbz1lKCJpVG90YWxSZWNvcmRzIiwicmVjb3Jkc1RvdGFsIiksaT1lKCJpVG90YWxEaXNwbGF5UmVjb3JkcyIsInJlY29yZHNGaWx0ZXJlZCIpO2lmKHIhPT1IKXtpZigrcjx0LmlEcmF3KXJldHVybjt0LmlEcmF3PStyfWE9YXx8W10scHQodCksdC5faVJlY29yZHNUb3RhbD1wYXJzZUludChvLDEwKSx0Ll9pUmVjb3Jkc0Rpc3BsYXk9cGFyc2VJbnQoaSwxMCk7Zm9yKHZhciBsPTAscz1hLmxlbmd0aDtsPHM7bCsrKXgodCxhW2xdKTt0LmFpRGlzcGxheT10LmFpRGlzcGxheU1hc3Rlci5zbGljZSgpLHkodCwhMCksdC5fYkluaXRDb21wbGV0ZXx8cXQodCxuKSxEKHQsITEpfWZ1bmN0aW9uIEZ0KHQsZSxuKXt0PVAuaXNQbGFpbk9iamVjdCh0LmFqYXgpJiZ0LmFqYXguZGF0YVNyYyE9PUg/dC5hamF4LmRhdGFTcmM6dC5zQWpheERhdGFQcm9wO2lmKCFuKXJldHVybiJkYXRhIj09PXQ/ZS5hYURhdGF8fGVbdF06IiIhPT10P0EodCkoZSk6ZTtiKHQpKGUsbil9ZnVuY3Rpb24gTHQobil7ZnVuY3Rpb24gZSh0KXtpLmY7dmFyIGU9dGhpcy52YWx1ZXx8IiI7by5yZXR1cm4mJiJFbnRlciIhPT10LmtleXx8ZSE9by5zU2VhcmNoJiYoUnQobix7c1NlYXJjaDplLGJSZWdleDpvLmJSZWdleCxiU21hcnQ6by5iU21hcnQsYkNhc2VJbnNlbnNpdGl2ZTpvLmJDYXNlSW5zZW5zaXRpdmUscmV0dXJuOm8ucmV0dXJufSksbi5faURpc3BsYXlTdGFydD0wLHkobikpfXZhciB0PW4ub0NsYXNzZXMsYT1uLnNUYWJsZUlkLHI9bi5vTGFuZ3VhZ2Usbz1uLm9QcmV2aW91c1NlYXJjaCxpPW4uYWFuRmVhdHVyZXMsbD0nPGlucHV0IHR5cGU9InNlYXJjaCIgY2xhc3M9IicrdC5zRmlsdGVySW5wdXQrJyIvPicscz0ocz1yLnNTZWFyY2gpLm1hdGNoKC9fSU5QVVRfLyk/cy5yZXBsYWNlKCJfSU5QVVRfIixsKTpzK2wsbD1QKCI8ZGl2Lz4iLHtpZDppLmY/bnVsbDphKyJfZmlsdGVyIixjbGFzczp0LnNGaWx0ZXJ9KS5hcHBlbmQoUCgiPGxhYmVsLz4iKS5hcHBlbmQocykpLHQ9bnVsbCE9PW4uc2VhcmNoRGVsYXk/bi5zZWFyY2hEZWxheToic3NwIj09PUUobik/NDAwOjAsdT1QKCJpbnB1dCIsbCkudmFsKG8uc1NlYXJjaCkuYXR0cigicGxhY2Vob2xkZXIiLHIuc1NlYXJjaFBsYWNlaG9sZGVyKS5vbigia2V5dXAuRFQgc2VhcmNoLkRUIGlucHV0LkRUIHBhc3RlLkRUIGN1dC5EVCIsdD9uZShlLHQpOmUpLm9uKCJtb3VzZXVwLkRUIixmdW5jdGlvbih0KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5jYWxsKHVbMF0sdCl9LDEwKX0pLm9uKCJrZXlwcmVzcy5EVCIsZnVuY3Rpb24odCl7aWYoMTM9PXQua2V5Q29kZSlyZXR1cm4hMX0pLmF0dHIoImFyaWEtY29udHJvbHMiLGEpO3JldHVybiBQKG4ublRhYmxlKS5vbigic2VhcmNoLmR0LkRUIixmdW5jdGlvbih0LGUpe2lmKG49PT1lKXRyeXt1WzBdIT09di5hY3RpdmVFbGVtZW50JiZ1LnZhbChvLnNTZWFyY2gpfWNhdGNoKHQpe319KSxsWzBdfWZ1bmN0aW9uIFJ0KHQsZSxuKXtmdW5jdGlvbiBhKHQpe28uc1NlYXJjaD10LnNTZWFyY2gsby5iUmVnZXg9dC5iUmVnZXgsby5iU21hcnQ9dC5iU21hcnQsby5iQ2FzZUluc2Vuc2l0aXZlPXQuYkNhc2VJbnNlbnNpdGl2ZSxvLnJldHVybj10LnJldHVybn1mdW5jdGlvbiByKHQpe3JldHVybiB0LmJFc2NhcGVSZWdleCE9PUg/IXQuYkVzY2FwZVJlZ2V4OnQuYlJlZ2V4fXZhciBvPXQub1ByZXZpb3VzU2VhcmNoLGk9dC5hb1ByZVNlYXJjaENvbHM7aWYobHQodCksInNzcCIhPUUodCkpe0h0KHQsZS5zU2VhcmNoLG4scihlKSxlLmJTbWFydCxlLmJDYXNlSW5zZW5zaXRpdmUpLGEoZSk7Zm9yKHZhciBsPTA7bDxpLmxlbmd0aDtsKyspanQodCxpW2xdLnNTZWFyY2gsbCxyKGlbbF0pLGlbbF0uYlNtYXJ0LGlbbF0uYkNhc2VJbnNlbnNpdGl2ZSk7UHQodCl9ZWxzZSBhKGUpO3QuYkZpbHRlcmVkPSEwLFIodCxudWxsLCJzZWFyY2giLFt0XSl9ZnVuY3Rpb24gUHQodCl7Zm9yKHZhciBlLG4sYT13LmV4dC5zZWFyY2gscj10LmFpRGlzcGxheSxvPTAsaT1hLmxlbmd0aDtvPGk7bysrKXtmb3IodmFyIGw9W10scz0wLHU9ci5sZW5ndGg7czx1O3MrKyluPXJbc10sZT10LmFvRGF0YVtuXSxhW29dKHQsZS5fYUZpbHRlckRhdGEsbixlLl9hRGF0YSxzKSYmbC5wdXNoKG4pO3IubGVuZ3RoPTAsUC5tZXJnZShyLGwpfX1mdW5jdGlvbiBqdCh0LGUsbixhLHIsbyl7aWYoIiIhPT1lKXtmb3IodmFyIGksbD1bXSxzPXQuYWlEaXNwbGF5LHU9TnQoZSxhLHIsbyksYz0wO2M8cy5sZW5ndGg7YysrKWk9dC5hb0RhdGFbc1tjXV0uX2FGaWx0ZXJEYXRhW25dLHUudGVzdChpKSYmbC5wdXNoKHNbY10pO3QuYWlEaXNwbGF5PWx9fWZ1bmN0aW9uIEh0KHQsZSxuLGEscixvKXt2YXIgaSxsLHMsdT1OdChlLGEscixvKSxyPXQub1ByZXZpb3VzU2VhcmNoLnNTZWFyY2gsbz10LmFpRGlzcGxheU1hc3RlcixjPVtdO2lmKDAhPT13LmV4dC5zZWFyY2gubGVuZ3RoJiYobj0hMCksbD1XdCh0KSxlLmxlbmd0aDw9MCl0LmFpRGlzcGxheT1vLnNsaWNlKCk7ZWxzZXtmb3IoKGx8fG58fGF8fHIubGVuZ3RoPmUubGVuZ3RofHwwIT09ZS5pbmRleE9mKHIpfHx0LmJTb3J0ZWQpJiYodC5haURpc3BsYXk9by5zbGljZSgpKSxpPXQuYWlEaXNwbGF5LHM9MDtzPGkubGVuZ3RoO3MrKyl1LnRlc3QodC5hb0RhdGFbaVtzXV0uX3NGaWx0ZXJSb3cpJiZjLnB1c2goaVtzXSk7dC5haURpc3BsYXk9Y319ZnVuY3Rpb24gTnQodCxlLG4sYSl7cmV0dXJuIHQ9ZT90Ok90KHQpLG4mJih0PSJeKD89Lio/IitQLm1hcCh0Lm1hdGNoKC9bIlx1MjAxQ11bXiJcdTIwMURdK1siXHUyMDFEXXxbXiBdKy9nKXx8WyIiXSxmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4nIic9PT10LmNoYXJBdCgwKT90PShlPXQubWF0Y2goL14iKC4qKSIkLykpP2VbMV06dDoi4oCcIj09PXQuY2hhckF0KDApJiYodD0oZT10Lm1hdGNoKC9eXHUyMDFDKC4qKVx1MjAxRCQvKSk/ZVsxXTp0KSx0LnJlcGxhY2UoJyInLCIiKX0pLmpvaW4oIikoPz0uKj8iKSsiKS4qJCIpLG5ldyBSZWdFeHAodCxhPyJpIjoiIil9dmFyIE90PXcudXRpbC5lc2NhcGVSZWdleCxrdD1QKCI8ZGl2PiIpWzBdLE10PWt0LnRleHRDb250ZW50IT09SDtmdW5jdGlvbiBXdCh0KXtmb3IodmFyIGUsbixhLHIsbyxpPXQuYW9Db2x1bW5zLGw9ITEscz0wLHU9dC5hb0RhdGEubGVuZ3RoO3M8dTtzKyspaWYoIShvPXQuYW9EYXRhW3NdKS5fYUZpbHRlckRhdGEpe2ZvcihhPVtdLGU9MCxuPWkubGVuZ3RoO2U8bjtlKyspaVtlXS5iU2VhcmNoYWJsZT8ic3RyaW5nIiE9dHlwZW9mKHI9bnVsbD09PShyPVModCxzLGUsImZpbHRlciIpKT8iIjpyKSYmci50b1N0cmluZyYmKHI9ci50b1N0cmluZygpKTpyPSIiLHIuaW5kZXhPZiYmLTEhPT1yLmluZGV4T2YoIiYiKSYmKGt0LmlubmVySFRNTD1yLHI9TXQ/a3QudGV4dENvbnRlbnQ6a3QuaW5uZXJUZXh0KSxyLnJlcGxhY2UmJihyPXIucmVwbGFjZSgvW1xyXG5cdTIwMjhdL2csIiIpKSxhLnB1c2gocik7by5fYUZpbHRlckRhdGE9YSxvLl9zRmlsdGVyUm93PWEuam9pbigiICAiKSxsPSEwfXJldHVybiBsfWZ1bmN0aW9uIEV0KHQpe3JldHVybntzZWFyY2g6dC5zU2VhcmNoLHNtYXJ0OnQuYlNtYXJ0LHJlZ2V4OnQuYlJlZ2V4LGNhc2VJbnNlbnNpdGl2ZTp0LmJDYXNlSW5zZW5zaXRpdmV9fWZ1bmN0aW9uIEJ0KHQpe3JldHVybntzU2VhcmNoOnQuc2VhcmNoLGJTbWFydDp0LnNtYXJ0LGJSZWdleDp0LnJlZ2V4LGJDYXNlSW5zZW5zaXRpdmU6dC5jYXNlSW5zZW5zaXRpdmV9fWZ1bmN0aW9uIFV0KHQpe3ZhciBlPXQuc1RhYmxlSWQsbj10LmFhbkZlYXR1cmVzLmksYT1QKCI8ZGl2Lz4iLHtjbGFzczp0Lm9DbGFzc2VzLnNJbmZvLGlkOm4/bnVsbDplKyJfaW5mbyJ9KTtyZXR1cm4gbnx8KHQuYW9EcmF3Q2FsbGJhY2sucHVzaCh7Zm46VnQsc05hbWU6ImluZm9ybWF0aW9uIn0pLGEuYXR0cigicm9sZSIsInN0YXR1cyIpLmF0dHIoImFyaWEtbGl2ZSIsInBvbGl0ZSIpLFAodC5uVGFibGUpLmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLGUrIl9pbmZvIikpLGFbMF19ZnVuY3Rpb24gVnQodCl7dmFyIGUsbixhLHIsbyxpLGw9dC5hYW5GZWF0dXJlcy5pOzAhPT1sLmxlbmd0aCYmKGk9dC5vTGFuZ3VhZ2UsZT10Ll9pRGlzcGxheVN0YXJ0KzEsbj10LmZuRGlzcGxheUVuZCgpLGE9dC5mblJlY29yZHNUb3RhbCgpLG89KHI9dC5mblJlY29yZHNEaXNwbGF5KCkpP2kuc0luZm86aS5zSW5mb0VtcHR5LHIhPT1hJiYobys9IiAiK2kuc0luZm9GaWx0ZXJlZCksbz1YdCh0LG8rPWkuc0luZm9Qb3N0Rml4KSxudWxsIT09KGk9aS5mbkluZm9DYWxsYmFjaykmJihvPWkuY2FsbCh0Lm9JbnN0YW5jZSx0LGUsbixhLHIsbykpLFAobCkuaHRtbChvKSl9ZnVuY3Rpb24gWHQodCxlKXt2YXIgbj10LmZuRm9ybWF0TnVtYmVyLGE9dC5faURpc3BsYXlTdGFydCsxLHI9dC5faURpc3BsYXlMZW5ndGgsbz10LmZuUmVjb3Jkc0Rpc3BsYXkoKSxpPS0xPT09cjtyZXR1cm4gZS5yZXBsYWNlKC9fU1RBUlRfL2csbi5jYWxsKHQsYSkpLnJlcGxhY2UoL19FTkRfL2csbi5jYWxsKHQsdC5mbkRpc3BsYXlFbmQoKSkpLnJlcGxhY2UoL19NQVhfL2csbi5jYWxsKHQsdC5mblJlY29yZHNUb3RhbCgpKSkucmVwbGFjZSgvX1RPVEFMXy9nLG4uY2FsbCh0LG8pKS5yZXBsYWNlKC9fUEFHRV8vZyxuLmNhbGwodCxpPzE6TWF0aC5jZWlsKGEvcikpKS5yZXBsYWNlKC9fUEFHRVNfL2csbi5jYWxsKHQsaT8xOk1hdGguY2VpbChvL3IpKSl9ZnVuY3Rpb24gSnQobil7dmFyIGEsdCxlLHI9bi5pSW5pdERpc3BsYXlTdGFydCxvPW4uYW9Db2x1bW5zLGk9bi5vRmVhdHVyZXMsbD1uLmJEZWZlckxvYWRpbmc7aWYobi5iSW5pdGlhbGlzZWQpe2ZvcihfdChuKSx5dChuKSxEdChuLG4uYW9IZWFkZXIpLER0KG4sbi5hb0Zvb3RlciksRChuLCEwKSxpLmJBdXRvV2lkdGgmJmVlKG4pLGE9MCx0PW8ubGVuZ3RoO2E8dDthKyspKGU9b1thXSkuc1dpZHRoJiYoZS5uVGguc3R5bGUud2lkdGg9TShlLnNXaWR0aCkpO1IobixudWxsLCJwcmVJbml0Iixbbl0pLHUobik7aT1FKG4pOyJzc3AiPT1pJiYhbHx8KCJhamF4Ij09aT9UdChuLFtdLGZ1bmN0aW9uKHQpe3ZhciBlPUZ0KG4sdCk7Zm9yKGE9MDthPGUubGVuZ3RoO2ErKyl4KG4sZVthXSk7bi5pSW5pdERpc3BsYXlTdGFydD1yLHUobiksRChuLCExKSxxdChuLHQpfSk6KEQobiwhMSkscXQobikpKX1lbHNlIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtKdChuKX0sMjAwKX1mdW5jdGlvbiBxdCh0LGUpe3QuX2JJbml0Q29tcGxldGU9ITAsKGV8fHQub0luaXQuYWFEYXRhKSYmTyh0KSxSKHQsbnVsbCwicGx1Z2luLWluaXQiLFt0LGVdKSxSKHQsImFvSW5pdENvbXBsZXRlIiwiaW5pdCIsW3QsZV0pfWZ1bmN0aW9uICR0KHQsZSl7ZT1wYXJzZUludChlLDEwKTt0Ll9pRGlzcGxheUxlbmd0aD1lLFNlKHQpLFIodCxudWxsLCJsZW5ndGgiLFt0LGVdKX1mdW5jdGlvbiBHdChhKXtmb3IodmFyIHQ9YS5vQ2xhc3NlcyxlPWEuc1RhYmxlSWQsbj1hLmFMZW5ndGhNZW51LHI9QXJyYXkuaXNBcnJheShuWzBdKSxvPXI/blswXTpuLGk9cj9uWzFdOm4sbD1QKCI8c2VsZWN0Lz4iLHtuYW1lOmUrIl9sZW5ndGgiLCJhcmlhLWNvbnRyb2xzIjplLGNsYXNzOnQuc0xlbmd0aFNlbGVjdH0pLHM9MCx1PW8ubGVuZ3RoO3M8dTtzKyspbFswXVtzXT1uZXcgT3B0aW9uKCJudW1iZXIiPT10eXBlb2YgaVtzXT9hLmZuRm9ybWF0TnVtYmVyKGlbc10pOmlbc10sb1tzXSk7dmFyIGM9UCgiPGRpdj48bGFiZWwvPjwvZGl2PiIpLmFkZENsYXNzKHQuc0xlbmd0aCk7cmV0dXJuIGEuYWFuRmVhdHVyZXMubHx8KGNbMF0uaWQ9ZSsiX2xlbmd0aCIpLGMuY2hpbGRyZW4oKS5hcHBlbmQoYS5vTGFuZ3VhZ2Uuc0xlbmd0aE1lbnUucmVwbGFjZSgiX01FTlVfIixsWzBdLm91dGVySFRNTCkpLFAoInNlbGVjdCIsYykudmFsKGEuX2lEaXNwbGF5TGVuZ3RoKS5vbigiY2hhbmdlLkRUIixmdW5jdGlvbih0KXskdChhLFAodGhpcykudmFsKCkpLHkoYSl9KSxQKGEublRhYmxlKS5vbigibGVuZ3RoLmR0LkRUIixmdW5jdGlvbih0LGUsbil7YT09PWUmJlAoInNlbGVjdCIsYykudmFsKG4pfSksY1swXX1mdW5jdGlvbiB6dCh0KXtmdW5jdGlvbiBjKHQpe3kodCl9dmFyIGU9dC5zUGFnaW5hdGlvblR5cGUsZj13LmV4dC5wYWdlcltlXSxkPSJmdW5jdGlvbiI9PXR5cGVvZiBmLGU9UCgiPGRpdi8+IikuYWRkQ2xhc3ModC5vQ2xhc3Nlcy5zUGFnaW5nK2UpWzBdLGg9dC5hYW5GZWF0dXJlcztyZXR1cm4gZHx8Zi5mbkluaXQodCxlLGMpLGgucHx8KGUuaWQ9dC5zVGFibGVJZCsiX3BhZ2luYXRlIix0LmFvRHJhd0NhbGxiYWNrLnB1c2goe2ZuOmZ1bmN0aW9uKHQpe2lmKGQpZm9yKHZhciBlPXQuX2lEaXNwbGF5U3RhcnQsbj10Ll9pRGlzcGxheUxlbmd0aCxhPXQuZm5SZWNvcmRzRGlzcGxheSgpLHI9LTE9PT1uLG89cj8wOk1hdGguY2VpbChlL24pLGk9cj8xOk1hdGguY2VpbChhL24pLGw9ZihvLGkpLHM9MCx1PWgucC5sZW5ndGg7czx1O3MrKyl2ZSh0LCJwYWdlQnV0dG9uIikodCxoLnBbc10scyxsLG8saSk7ZWxzZSBmLmZuVXBkYXRlKHQsYyl9LHNOYW1lOiJwYWdpbmF0aW9uIn0pKSxlfWZ1bmN0aW9uIFl0KHQsZSxuKXt2YXIgYT10Ll9pRGlzcGxheVN0YXJ0LHI9dC5faURpc3BsYXlMZW5ndGgsbz10LmZuUmVjb3Jkc0Rpc3BsYXkoKSxvPSgwPT09b3x8LTE9PT1yP2E9MDoibnVtYmVyIj09dHlwZW9mIGU/bzwoYT1lKnIpJiYoYT0wKToiZmlyc3QiPT1lP2E9MDoicHJldmlvdXMiPT1lPyhhPTA8PXI/YS1yOjApPDAmJihhPTApOiJuZXh0Ij09ZT9hK3I8byYmKGErPXIpOiJsYXN0Ij09ZT9hPU1hdGguZmxvb3IoKG8tMSkvcikqcjpXKHQsMCwiVW5rbm93biBwYWdpbmcgYWN0aW9uOiAiK2UsNSksdC5faURpc3BsYXlTdGFydCE9PWEpO3JldHVybiB0Ll9pRGlzcGxheVN0YXJ0PWEsbz8oUih0LG51bGwsInBhZ2UiLFt0XSksbiYmeSh0KSk6Uih0LG51bGwsInBhZ2UtbmMiLFt0XSksb31mdW5jdGlvbiBadCh0KXtyZXR1cm4gUCgiPGRpdi8+Iix7aWQ6dC5hYW5GZWF0dXJlcy5yP251bGw6dC5zVGFibGVJZCsiX3Byb2Nlc3NpbmciLGNsYXNzOnQub0NsYXNzZXMuc1Byb2Nlc3Npbmcscm9sZToic3RhdHVzIn0pLmh0bWwodC5vTGFuZ3VhZ2Uuc1Byb2Nlc3NpbmcpLmFwcGVuZCgiPGRpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjwvZGl2PiIpLmluc2VydEJlZm9yZSh0Lm5UYWJsZSlbMF19ZnVuY3Rpb24gRCh0LGUpe3Qub0ZlYXR1cmVzLmJQcm9jZXNzaW5nJiZQKHQuYWFuRmVhdHVyZXMucikuY3NzKCJkaXNwbGF5IixlPyJibG9jayI6Im5vbmUiKSxSKHQsbnVsbCwicHJvY2Vzc2luZyIsW3QsZV0pfWZ1bmN0aW9uIEt0KHQpe3ZhciBlLG4sYSxyLG8saSxsLHMsdSxjLGYsZCxoPVAodC5uVGFibGUpLHA9dC5vU2Nyb2xsO3JldHVybiIiPT09cC5zWCYmIiI9PT1wLnNZP3QublRhYmxlOihlPXAuc1gsbj1wLnNZLGE9dC5vQ2xhc3NlcyxvPShyPWguY2hpbGRyZW4oImNhcHRpb24iKSkubGVuZ3RoP3JbMF0uX2NhcHRpb25TaWRlOm51bGwscz1QKGhbMF0uY2xvbmVOb2RlKCExKSksaT1QKGhbMF0uY2xvbmVOb2RlKCExKSksdT1mdW5jdGlvbih0KXtyZXR1cm4gdD9NKHQpOm51bGx9LChsPWguY2hpbGRyZW4oInRmb290IikpLmxlbmd0aHx8KGw9bnVsbCkscz1QKGY9IjxkaXYvPiIse2NsYXNzOmEuc1Njcm9sbFdyYXBwZXJ9KS5hcHBlbmQoUChmLHtjbGFzczphLnNTY3JvbGxIZWFkfSkuY3NzKHtvdmVyZmxvdzoiaGlkZGVuIixwb3NpdGlvbjoicmVsYXRpdmUiLGJvcmRlcjowLHdpZHRoOmU/dShlKToiMTAwJSJ9KS5hcHBlbmQoUChmLHtjbGFzczphLnNTY3JvbGxIZWFkSW5uZXJ9KS5jc3MoeyJib3gtc2l6aW5nIjoiY29udGVudC1ib3giLHdpZHRoOnAuc1hJbm5lcnx8IjEwMCUifSkuYXBwZW5kKHMucmVtb3ZlQXR0cigiaWQiKS5jc3MoIm1hcmdpbi1sZWZ0IiwwKS5hcHBlbmQoInRvcCI9PT1vP3I6bnVsbCkuYXBwZW5kKGguY2hpbGRyZW4oInRoZWFkIikpKSkpLmFwcGVuZChQKGYse2NsYXNzOmEuc1Njcm9sbEJvZHl9KS5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsb3ZlcmZsb3c6ImF1dG8iLHdpZHRoOnUoZSl9KS5hcHBlbmQoaCkpLGwmJnMuYXBwZW5kKFAoZix7Y2xhc3M6YS5zU2Nyb2xsRm9vdH0pLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiIsYm9yZGVyOjAsd2lkdGg6ZT91KGUpOiIxMDAlIn0pLmFwcGVuZChQKGYse2NsYXNzOmEuc1Njcm9sbEZvb3RJbm5lcn0pLmFwcGVuZChpLnJlbW92ZUF0dHIoImlkIikuY3NzKCJtYXJnaW4tbGVmdCIsMCkuYXBwZW5kKCJib3R0b20iPT09bz9yOm51bGwpLmFwcGVuZChoLmNoaWxkcmVuKCJ0Zm9vdCIpKSkpKSx1PXMuY2hpbGRyZW4oKSxjPXVbMF0sZj11WzFdLGQ9bD91WzJdOm51bGwsZSYmUChmKS5vbigic2Nyb2xsLkRUIixmdW5jdGlvbih0KXt2YXIgZT10aGlzLnNjcm9sbExlZnQ7Yy5zY3JvbGxMZWZ0PWUsbCYmKGQuc2Nyb2xsTGVmdD1lKX0pLFAoZikuY3NzKCJtYXgtaGVpZ2h0IixuKSxwLmJDb2xsYXBzZXx8UChmKS5jc3MoImhlaWdodCIsbiksdC5uU2Nyb2xsSGVhZD1jLHQublNjcm9sbEJvZHk9Zix0Lm5TY3JvbGxGb290PWQsdC5hb0RyYXdDYWxsYmFjay5wdXNoKHtmbjpRdCxzTmFtZToic2Nyb2xsaW5nIn0pLHNbMF0pfWZ1bmN0aW9uIFF0KG4pe2Z1bmN0aW9uIHQodCl7KHQ9dC5zdHlsZSkucGFkZGluZ1RvcD0iMCIsdC5wYWRkaW5nQm90dG9tPSIwIix0LmJvcmRlclRvcFdpZHRoPSIwIix0LmJvcmRlckJvdHRvbVdpZHRoPSIwIix0LmhlaWdodD0wfXZhciBlLGEscixvLGksbD1uLm9TY3JvbGwscz1sLnNYLHU9bC5zWElubmVyLGM9bC5zWSxsPWwuaUJhcldpZHRoLGY9UChuLm5TY3JvbGxIZWFkKSxkPWZbMF0uc3R5bGUsaD1mLmNoaWxkcmVuKCJkaXYiKSxwPWhbMF0uc3R5bGUsaD1oLmNoaWxkcmVuKCJ0YWJsZSIpLGc9bi5uU2Nyb2xsQm9keSxiPVAoZyksbT1nLnN0eWxlLFM9UChuLm5TY3JvbGxGb290KS5jaGlsZHJlbigiZGl2Iiksdj1TLmNoaWxkcmVuKCJ0YWJsZSIpLHk9UChuLm5USGVhZCksRD1QKG4ublRhYmxlKSxfPURbMF0sdz1fLnN0eWxlLEM9bi5uVEZvb3Q/UChuLm5URm9vdCk6bnVsbCxUPW4ub0Jyb3dzZXIseD1ULmJTY3JvbGxPdmVyc2l6ZSxBPShOKG4uYW9Db2x1bW5zLCJuVGgiKSxbXSksST1bXSxGPVtdLEw9W10sUj1nLnNjcm9sbEhlaWdodD5nLmNsaWVudEhlaWdodDtuLnNjcm9sbEJhclZpcyE9PVImJm4uc2Nyb2xsQmFyVmlzIT09SD8obi5zY3JvbGxCYXJWaXM9UixPKG4pKToobi5zY3JvbGxCYXJWaXM9UixELmNoaWxkcmVuKCJ0aGVhZCwgdGZvb3QiKS5yZW1vdmUoKSxDJiYoUj1DLmNsb25lKCkucHJlcGVuZFRvKEQpLGk9Qy5maW5kKCJ0ciIpLGE9Ui5maW5kKCJ0ciIpLFIuZmluZCgiW2lkXSIpLnJlbW92ZUF0dHIoImlkIikpLFI9eS5jbG9uZSgpLnByZXBlbmRUbyhEKSx5PXkuZmluZCgidHIiKSxlPVIuZmluZCgidHIiKSxSLmZpbmQoInRoLCB0ZCIpLnJlbW92ZUF0dHIoInRhYmluZGV4IiksUi5maW5kKCJbaWRdIikucmVtb3ZlQXR0cigiaWQiKSxzfHwobS53aWR0aD0iMTAwJSIsZlswXS5zdHlsZS53aWR0aD0iMTAwJSIpLFAuZWFjaChDdChuLFIpLGZ1bmN0aW9uKHQsZSl7cj1ydChuLHQpLGUuc3R5bGUud2lkdGg9bi5hb0NvbHVtbnNbcl0uc1dpZHRofSksQyYmayhmdW5jdGlvbih0KXt0LnN0eWxlLndpZHRoPSIifSxhKSxmPUQub3V0ZXJXaWR0aCgpLCIiPT09cz8ody53aWR0aD0iMTAwJSIseCYmKEQuZmluZCgidGJvZHkiKS5oZWlnaHQoKT5nLm9mZnNldEhlaWdodHx8InNjcm9sbCI9PWIuY3NzKCJvdmVyZmxvdy15IikpJiYody53aWR0aD1NKEQub3V0ZXJXaWR0aCgpLWwpKSxmPUQub3V0ZXJXaWR0aCgpKToiIiE9PXUmJih3LndpZHRoPU0odSksZj1ELm91dGVyV2lkdGgoKSksayh0LGUpLGsoZnVuY3Rpb24odCl7dmFyIGU9ai5nZXRDb21wdXRlZFN0eWxlP2ouZ2V0Q29tcHV0ZWRTdHlsZSh0KS53aWR0aDpNKFAodCkud2lkdGgoKSk7Ri5wdXNoKHQuaW5uZXJIVE1MKSxBLnB1c2goZSl9LGUpLGsoZnVuY3Rpb24odCxlKXt0LnN0eWxlLndpZHRoPUFbZV19LHkpLFAoZSkuY3NzKCJoZWlnaHQiLDApLEMmJihrKHQsYSksayhmdW5jdGlvbih0KXtMLnB1c2godC5pbm5lckhUTUwpLEkucHVzaChNKFAodCkuY3NzKCJ3aWR0aCIpKSl9LGEpLGsoZnVuY3Rpb24odCxlKXt0LnN0eWxlLndpZHRoPUlbZV19LGkpLFAoYSkuaGVpZ2h0KDApKSxrKGZ1bmN0aW9uKHQsZSl7dC5pbm5lckhUTUw9JzxkaXYgY2xhc3M9ImRhdGFUYWJsZXNfc2l6aW5nIj4nK0ZbZV0rIjwvZGl2PiIsdC5jaGlsZE5vZGVzWzBdLnN0eWxlLmhlaWdodD0iMCIsdC5jaGlsZE5vZGVzWzBdLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iLHQuc3R5bGUud2lkdGg9QVtlXX0sZSksQyYmayhmdW5jdGlvbih0LGUpe3QuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJkYXRhVGFibGVzX3NpemluZyI+JytMW2VdKyI8L2Rpdj4iLHQuY2hpbGROb2Rlc1swXS5zdHlsZS5oZWlnaHQ9IjAiLHQuY2hpbGROb2Rlc1swXS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIix0LnN0eWxlLndpZHRoPUlbZV19LGEpLE1hdGgucm91bmQoRC5vdXRlcldpZHRoKCkpPE1hdGgucm91bmQoZik/KG89Zy5zY3JvbGxIZWlnaHQ+Zy5vZmZzZXRIZWlnaHR8fCJzY3JvbGwiPT1iLmNzcygib3ZlcmZsb3cteSIpP2YrbDpmLHgmJihnLnNjcm9sbEhlaWdodD5nLm9mZnNldEhlaWdodHx8InNjcm9sbCI9PWIuY3NzKCJvdmVyZmxvdy15IikpJiYody53aWR0aD1NKG8tbCkpLCIiIT09cyYmIiI9PT11fHxXKG4sMSwiUG9zc2libGUgY29sdW1uIG1pc2FsaWdubWVudCIsNikpOm89IjEwMCUiLG0ud2lkdGg9TShvKSxkLndpZHRoPU0obyksQyYmKG4ublNjcm9sbEZvb3Quc3R5bGUud2lkdGg9TShvKSksY3x8eCYmKG0uaGVpZ2h0PU0oXy5vZmZzZXRIZWlnaHQrbCkpLFI9RC5vdXRlcldpZHRoKCksaFswXS5zdHlsZS53aWR0aD1NKFIpLHAud2lkdGg9TShSKSx5PUQuaGVpZ2h0KCk+Zy5jbGllbnRIZWlnaHR8fCJzY3JvbGwiPT1iLmNzcygib3ZlcmZsb3cteSIpLHBbaT0icGFkZGluZyIrKFQuYlNjcm9sbGJhckxlZnQ/IkxlZnQiOiJSaWdodCIpXT15P2wrInB4IjoiMHB4IixDJiYodlswXS5zdHlsZS53aWR0aD1NKFIpLFNbMF0uc3R5bGUud2lkdGg9TShSKSxTWzBdLnN0eWxlW2ldPXk/bCsicHgiOiIwcHgiKSxELmNoaWxkcmVuKCJjb2xncm91cCIpLmluc2VydEJlZm9yZShELmNoaWxkcmVuKCJ0aGVhZCIpKSxiLnRyaWdnZXIoInNjcm9sbCIpLCFuLmJTb3J0ZWQmJiFuLmJGaWx0ZXJlZHx8bi5fZHJhd0hvbGR8fChnLnNjcm9sbFRvcD0wKSl9ZnVuY3Rpb24gayh0LGUsbil7Zm9yKHZhciBhLHIsbz0wLGk9MCxsPWUubGVuZ3RoO2k8bDspe2ZvcihhPWVbaV0uZmlyc3RDaGlsZCxyPW4/bltpXS5maXJzdENoaWxkOm51bGw7YTspMT09PWEubm9kZVR5cGUmJihuP3QoYSxyLG8pOnQoYSxvKSxvKyspLGE9YS5uZXh0U2libGluZyxyPW4/ci5uZXh0U2libGluZzpudWxsO2krK319dmFyIHRlPS88Lio/Pi9nO2Z1bmN0aW9uIGVlKHQpe3ZhciBlLG4sYT10Lm5UYWJsZSxyPXQuYW9Db2x1bW5zLG89dC5vU2Nyb2xsLGk9by5zWSxsPW8uc1gsbz1vLnNYSW5uZXIscz1yLmxlbmd0aCx1PWl0KHQsImJWaXNpYmxlIiksYz1QKCJ0aCIsdC5uVEhlYWQpLGY9YS5nZXRBdHRyaWJ1dGUoIndpZHRoIiksZD1hLnBhcmVudE5vZGUsaD0hMSxwPXQub0Jyb3dzZXIsZz1wLmJTY3JvbGxPdmVyc2l6ZSxiPWEuc3R5bGUud2lkdGg7Zm9yKGImJi0xIT09Yi5pbmRleE9mKCIlIikmJihmPWIpLEQ9MDtEPHUubGVuZ3RoO0QrKyludWxsIT09KGU9clt1W0RdXSkuc1dpZHRoJiYoZS5zV2lkdGg9YWUoZS5zV2lkdGhPcmlnLGQpLGg9ITApO2lmKGd8fCFoJiYhbCYmIWkmJnM9PVQodCkmJnM9PWMubGVuZ3RoKWZvcihEPTA7RDxzO0QrKyl7dmFyIG09cnQodCxEKTtudWxsIT09bSYmKHJbbV0uc1dpZHRoPU0oYy5lcShEKS53aWR0aCgpKSl9ZWxzZXt2YXIgYj1QKGEpLmNsb25lKCkuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIikucmVtb3ZlQXR0cigiaWQiKSxTPShiLmZpbmQoInRib2R5IHRyIikucmVtb3ZlKCksUCgiPHRyLz4iKS5hcHBlbmRUbyhiLmZpbmQoInRib2R5IikpKTtmb3IoYi5maW5kKCJ0aGVhZCwgdGZvb3QiKS5yZW1vdmUoKSxiLmFwcGVuZChQKHQublRIZWFkKS5jbG9uZSgpKS5hcHBlbmQoUCh0Lm5URm9vdCkuY2xvbmUoKSksYi5maW5kKCJ0Zm9vdCB0aCwgdGZvb3QgdGQiKS5jc3MoIndpZHRoIiwiIiksYz1DdCh0LGIuZmluZCgidGhlYWQiKVswXSksRD0wO0Q8dS5sZW5ndGg7RCsrKWU9clt1W0RdXSxjW0RdLnN0eWxlLndpZHRoPW51bGwhPT1lLnNXaWR0aE9yaWcmJiIiIT09ZS5zV2lkdGhPcmlnP00oZS5zV2lkdGhPcmlnKToiIixlLnNXaWR0aE9yaWcmJmwmJlAoY1tEXSkuYXBwZW5kKFAoIjxkaXYvPiIpLmNzcyh7d2lkdGg6ZS5zV2lkdGhPcmlnLG1hcmdpbjowLHBhZGRpbmc6MCxib3JkZXI6MCxoZWlnaHQ6MX0pKTtpZih0LmFvRGF0YS5sZW5ndGgpZm9yKEQ9MDtEPHUubGVuZ3RoO0QrKyllPXJbbj11W0RdXSxQKHJlKHQsbikpLmNsb25lKCExKS5hcHBlbmQoZS5zQ29udGVudFBhZGRpbmcpLmFwcGVuZFRvKFMpO1AoIltuYW1lXSIsYikucmVtb3ZlQXR0cigibmFtZSIpO2Zvcih2YXIgdj1QKCI8ZGl2Lz4iKS5jc3MobHx8aT97cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsaGVpZ2h0OjEscmlnaHQ6MCxvdmVyZmxvdzoiaGlkZGVuIn06e30pLmFwcGVuZChiKS5hcHBlbmRUbyhkKSx5PShsJiZvP2Iud2lkdGgobyk6bD8oYi5jc3MoIndpZHRoIiwiYXV0byIpLGIucmVtb3ZlQXR0cigid2lkdGgiKSxiLndpZHRoKCk8ZC5jbGllbnRXaWR0aCYmZiYmYi53aWR0aChkLmNsaWVudFdpZHRoKSk6aT9iLndpZHRoKGQuY2xpZW50V2lkdGgpOmYmJmIud2lkdGgoZiksMCksRD0wO0Q8dS5sZW5ndGg7RCsrKXt2YXIgXz1QKGNbRF0pLHc9Xy5vdXRlcldpZHRoKCktXy53aWR0aCgpLF89cC5iQm91bmRpbmc/TWF0aC5jZWlsKGNbRF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpOl8ub3V0ZXJXaWR0aCgpO3krPV8sclt1W0RdXS5zV2lkdGg9TShfLXcpfWEuc3R5bGUud2lkdGg9TSh5KSx2LnJlbW92ZSgpfWYmJihhLnN0eWxlLndpZHRoPU0oZikpLCFmJiYhbHx8dC5fcmVzekV2dHx8KG89ZnVuY3Rpb24oKXtQKGopLm9uKCJyZXNpemUuRFQtIit0LnNJbnN0YW5jZSxuZShmdW5jdGlvbigpe08odCl9KSl9LGc/c2V0VGltZW91dChvLDFlMyk6bygpLHQuX3Jlc3pFdnQ9ITApfXZhciBuZT13LnV0aWwudGhyb3R0bGU7ZnVuY3Rpb24gYWUodCxlKXtyZXR1cm4gdD8oZT0odD1QKCI8ZGl2Lz4iKS5jc3MoIndpZHRoIixNKHQpKS5hcHBlbmRUbyhlfHx2LmJvZHkpKVswXS5vZmZzZXRXaWR0aCx0LnJlbW92ZSgpLGUpOjB9ZnVuY3Rpb24gcmUodCxlKXt2YXIgbixhPW9lKHQsZSk7cmV0dXJuIGE8MD9udWxsOihuPXQuYW9EYXRhW2FdKS5uVHI/bi5hbkNlbGxzW2VdOlAoIjx0ZC8+IikuaHRtbChTKHQsYSxlLCJkaXNwbGF5IikpWzBdfWZ1bmN0aW9uIG9lKHQsZSl7Zm9yKHZhciBuLGE9LTEscj0tMSxvPTAsaT10LmFvRGF0YS5sZW5ndGg7bzxpO28rKykobj0obj0obj1TKHQsbyxlLCJkaXNwbGF5IikrIiIpLnJlcGxhY2UodGUsIiIpKS5yZXBsYWNlKC8mbmJzcDsvZywiICIpKS5sZW5ndGg+YSYmKGE9bi5sZW5ndGgscj1vKTtyZXR1cm4gcn1mdW5jdGlvbiBNKHQpe3JldHVybiBudWxsPT09dD8iMHB4IjoibnVtYmVyIj09dHlwZW9mIHQ/dDwwPyIwcHgiOnQrInB4Ijp0Lm1hdGNoKC9cZCQvKT90KyJweCI6dH1mdW5jdGlvbiBJKHQpe2Z1bmN0aW9uIGUodCl7dC5sZW5ndGgmJiFBcnJheS5pc0FycmF5KHRbMF0pP2gucHVzaCh0KTpQLm1lcmdlKGgsdCl9dmFyIG4sYSxyLG8saSxsLHMsdT1bXSxjPXQuYW9Db2x1bW5zLGY9dC5hYVNvcnRpbmdGaXhlZCxkPVAuaXNQbGFpbk9iamVjdChmKSxoPVtdO2ZvcihBcnJheS5pc0FycmF5KGYpJiZlKGYpLGQmJmYucHJlJiZlKGYucHJlKSxlKHQuYWFTb3J0aW5nKSxkJiZmLnBvc3QmJmUoZi5wb3N0KSxuPTA7bjxoLmxlbmd0aDtuKyspZm9yKHI9KG89Y1tzPWhbbl1bYT0wXV0uYURhdGFTb3J0KS5sZW5ndGg7YTxyO2ErKylsPWNbaT1vW2FdXS5zVHlwZXx8InN0cmluZyIsaFtuXS5faWR4PT09SCYmKGhbbl0uX2lkeD1QLmluQXJyYXkoaFtuXVsxXSxjW2ldLmFzU29ydGluZykpLHUucHVzaCh7c3JjOnMsY29sOmksZGlyOmhbbl1bMV0saW5kZXg6aFtuXS5faWR4LHR5cGU6bCxmb3JtYXR0ZXI6dy5leHQudHlwZS5vcmRlcltsKyItcHJlIl19KTtyZXR1cm4gdX1mdW5jdGlvbiBpZSh0KXt2YXIgZSxuLGEscixjLGY9W10sdT13LmV4dC50eXBlLm9yZGVyLGQ9dC5hb0RhdGEsbz0odC5hb0NvbHVtbnMsMCksaT10LmFpRGlzcGxheU1hc3Rlcjtmb3IobHQodCksZT0wLG49KGM9SSh0KSkubGVuZ3RoO2U8bjtlKyspKHI9Y1tlXSkuZm9ybWF0dGVyJiZvKyssZmUodCxyLmNvbCk7aWYoInNzcCIhPUUodCkmJjAhPT1jLmxlbmd0aCl7Zm9yKGU9MCxhPWkubGVuZ3RoO2U8YTtlKyspZltpW2VdXT1lO289PT1jLmxlbmd0aD9pLnNvcnQoZnVuY3Rpb24odCxlKXtmb3IodmFyIG4sYSxyLG8saT1jLmxlbmd0aCxsPWRbdF0uX2FTb3J0RGF0YSxzPWRbZV0uX2FTb3J0RGF0YSx1PTA7dTxpO3UrKylpZigwIT0ocj0obj1sWyhvPWNbdV0pLmNvbF0pPChhPXNbby5jb2xdKT8tMTphPG4/MTowKSlyZXR1cm4iYXNjIj09PW8uZGlyP3I6LXI7cmV0dXJuKG49Zlt0XSk8KGE9ZltlXSk/LTE6YTxuPzE6MH0pOmkuc29ydChmdW5jdGlvbih0LGUpe2Zvcih2YXIgbixhLHIsbz1jLmxlbmd0aCxpPWRbdF0uX2FTb3J0RGF0YSxsPWRbZV0uX2FTb3J0RGF0YSxzPTA7czxvO3MrKylpZihuPWlbKHI9Y1tzXSkuY29sXSxhPWxbci5jb2xdLDAhPT0ocj0odVtyLnR5cGUrIi0iK3IuZGlyXXx8dVsic3RyaW5nLSIrci5kaXJdKShuLGEpKSlyZXR1cm4gcjtyZXR1cm4obj1mW3RdKTwoYT1mW2VdKT8tMTphPG4/MTowfSl9dC5iU29ydGVkPSEwfWZ1bmN0aW9uIGxlKHQpe2Zvcih2YXIgZT10LmFvQ29sdW1ucyxuPUkodCksYT10Lm9MYW5ndWFnZS5vQXJpYSxyPTAsbz1lLmxlbmd0aDtyPG87cisrKXt2YXIgaT1lW3JdLGw9aS5hc1NvcnRpbmcscz1pLmFyaWFUaXRsZXx8aS5zVGl0bGUucmVwbGFjZSgvPC4qPz4vZywiIiksdT1pLm5UaDt1LnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1zb3J0IiksaT1pLmJTb3J0YWJsZT9zKygiYXNjIj09PSgwPG4ubGVuZ3RoJiZuWzBdLmNvbD09ciYmKHUuc2V0QXR0cmlidXRlKCJhcmlhLXNvcnQiLCJhc2MiPT1uWzBdLmRpcj8iYXNjZW5kaW5nIjoiZGVzY2VuZGluZyIpLGxbblswXS5pbmRleCsxXSl8fGxbMF0pP2Euc1NvcnRBc2NlbmRpbmc6YS5zU29ydERlc2NlbmRpbmcpOnMsdS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLGkpfX1mdW5jdGlvbiBzZSh0LGUsbixhKXtmdW5jdGlvbiByKHQsZSl7dmFyIG49dC5faWR4O3JldHVybihuPW49PT1IP1AuaW5BcnJheSh0WzFdLHMpOm4pKzE8cy5sZW5ndGg/bisxOmU/bnVsbDowfXZhciBvLGk9dC5hb0NvbHVtbnNbZV0sbD10LmFhU29ydGluZyxzPWkuYXNTb3J0aW5nOyJudW1iZXIiPT10eXBlb2YgbFswXSYmKGw9dC5hYVNvcnRpbmc9W2xdKSxuJiZ0Lm9GZWF0dXJlcy5iU29ydE11bHRpPy0xIT09KGk9UC5pbkFycmF5KGUsTihsLCIwIikpKT9udWxsPT09KG89bnVsbD09PShvPXIobFtpXSwhMCkpJiYxPT09bC5sZW5ndGg/MDpvKT9sLnNwbGljZShpLDEpOihsW2ldWzFdPXNbb10sbFtpXS5faWR4PW8pOihsLnB1c2goW2Usc1swXSwwXSksbFtsLmxlbmd0aC0xXS5faWR4PTApOmwubGVuZ3RoJiZsWzBdWzBdPT1lPyhvPXIobFswXSksbC5sZW5ndGg9MSxsWzBdWzFdPXNbb10sbFswXS5faWR4PW8pOihsLmxlbmd0aD0wLGwucHVzaChbZSxzWzBdXSksbFswXS5faWR4PTApLHUodCksImZ1bmN0aW9uIj09dHlwZW9mIGEmJmEodCl9ZnVuY3Rpb24gdWUoZSx0LG4sYSl7dmFyIHI9ZS5hb0NvbHVtbnNbbl07bWUodCx7fSxmdW5jdGlvbih0KXshMSE9PXIuYlNvcnRhYmxlJiYoZS5vRmVhdHVyZXMuYlByb2Nlc3Npbmc/KEQoZSwhMCksc2V0VGltZW91dChmdW5jdGlvbigpe3NlKGUsbix0LnNoaWZ0S2V5LGEpLCJzc3AiIT09RShlKSYmRChlLCExKX0sMCkpOnNlKGUsbix0LnNoaWZ0S2V5LGEpKX0pfWZ1bmN0aW9uIGNlKHQpe3ZhciBlLG4sYSxyPXQuYUxhc3RTb3J0LG89dC5vQ2xhc3Nlcy5zU29ydENvbHVtbixpPUkodCksbD10Lm9GZWF0dXJlcztpZihsLmJTb3J0JiZsLmJTb3J0Q2xhc3Nlcyl7Zm9yKGU9MCxuPXIubGVuZ3RoO2U8bjtlKyspYT1yW2VdLnNyYyxQKE4odC5hb0RhdGEsImFuQ2VsbHMiLGEpKS5yZW1vdmVDbGFzcyhvKyhlPDI/ZSsxOjMpKTtmb3IoZT0wLG49aS5sZW5ndGg7ZTxuO2UrKylhPWlbZV0uc3JjLFAoTih0LmFvRGF0YSwiYW5DZWxscyIsYSkpLmFkZENsYXNzKG8rKGU8Mj9lKzE6MykpfXQuYUxhc3RTb3J0PWl9ZnVuY3Rpb24gZmUodCxlKXtmb3IodmFyIG4sYSxyLG89dC5hb0NvbHVtbnNbZV0saT13LmV4dC5vcmRlcltvLnNTb3J0RGF0YVR5cGVdLGw9KGkmJihuPWkuY2FsbCh0Lm9JbnN0YW5jZSx0LGUsb3QodCxlKSkpLHcuZXh0LnR5cGUub3JkZXJbby5zVHlwZSsiLXByZSJdKSxzPTAsdT10LmFvRGF0YS5sZW5ndGg7czx1O3MrKykoYT10LmFvRGF0YVtzXSkuX2FTb3J0RGF0YXx8KGEuX2FTb3J0RGF0YT1bXSksYS5fYVNvcnREYXRhW2VdJiYhaXx8KHI9aT9uW3NdOlModCxzLGUsInNvcnQiKSxhLl9hU29ydERhdGFbZV09bD9sKHIpOnIpfWZ1bmN0aW9uIGRlKG4pe3ZhciB0O24uX2JMb2FkaW5nU3RhdGV8fCh0PXt0aW1lOituZXcgRGF0ZSxzdGFydDpuLl9pRGlzcGxheVN0YXJ0LGxlbmd0aDpuLl9pRGlzcGxheUxlbmd0aCxvcmRlcjpQLmV4dGVuZCghMCxbXSxuLmFhU29ydGluZyksc2VhcmNoOkV0KG4ub1ByZXZpb3VzU2VhcmNoKSxjb2x1bW5zOlAubWFwKG4uYW9Db2x1bW5zLGZ1bmN0aW9uKHQsZSl7cmV0dXJue3Zpc2libGU6dC5iVmlzaWJsZSxzZWFyY2g6RXQobi5hb1ByZVNlYXJjaENvbHNbZV0pfX0pfSxuLm9TYXZlZFN0YXRlPXQsUihuLCJhb1N0YXRlU2F2ZVBhcmFtcyIsInN0YXRlU2F2ZVBhcmFtcyIsW24sdF0pLG4ub0ZlYXR1cmVzLmJTdGF0ZVNhdmUmJiFuLmJEZXN0cm95aW5nJiZuLmZuU3RhdGVTYXZlQ2FsbGJhY2suY2FsbChuLm9JbnN0YW5jZSxuLHQpKX1mdW5jdGlvbiBoZShlLHQsbil7dmFyIGE7aWYoZS5vRmVhdHVyZXMuYlN0YXRlU2F2ZSlyZXR1cm4oYT1lLmZuU3RhdGVMb2FkQ2FsbGJhY2suY2FsbChlLm9JbnN0YW5jZSxlLGZ1bmN0aW9uKHQpe3BlKGUsdCxuKX0pKSE9PUgmJnBlKGUsYSxuKSwhMDtuKCl9ZnVuY3Rpb24gcGUobix0LGUpe3ZhciBhLHIsbz1uLmFvQ29sdW1ucyxpPShuLl9iTG9hZGluZ1N0YXRlPSEwLG4uX2JJbml0Q29tcGxldGU/bmV3IHcuQXBpKG4pOm51bGwpO2lmKHQmJnQudGltZSl7dmFyIGw9UihuLCJhb1N0YXRlTG9hZFBhcmFtcyIsInN0YXRlTG9hZFBhcmFtcyIsW24sdF0pO2lmKC0xIT09UC5pbkFycmF5KCExLGwpKW4uX2JMb2FkaW5nU3RhdGU9ITE7ZWxzZXtsPW4uaVN0YXRlRHVyYXRpb247aWYoMDxsJiZ0LnRpbWU8K25ldyBEYXRlLTFlMypsKW4uX2JMb2FkaW5nU3RhdGU9ITE7ZWxzZSBpZih0LmNvbHVtbnMmJm8ubGVuZ3RoIT09dC5jb2x1bW5zLmxlbmd0aCluLl9iTG9hZGluZ1N0YXRlPSExO2Vsc2V7aWYobi5vTG9hZGVkU3RhdGU9UC5leHRlbmQoITAse30sdCksdC5sZW5ndGghPT1IJiYoaT9pLnBhZ2UubGVuKHQubGVuZ3RoKTpuLl9pRGlzcGxheUxlbmd0aD10Lmxlbmd0aCksdC5zdGFydCE9PUgmJihudWxsPT09aT8obi5faURpc3BsYXlTdGFydD10LnN0YXJ0LG4uaUluaXREaXNwbGF5U3RhcnQ9dC5zdGFydCk6WXQobix0LnN0YXJ0L24uX2lEaXNwbGF5TGVuZ3RoKSksdC5vcmRlciE9PUgmJihuLmFhU29ydGluZz1bXSxQLmVhY2godC5vcmRlcixmdW5jdGlvbih0LGUpe24uYWFTb3J0aW5nLnB1c2goZVswXT49by5sZW5ndGg/WzAsZVsxXV06ZSl9KSksdC5zZWFyY2ghPT1IJiZQLmV4dGVuZChuLm9QcmV2aW91c1NlYXJjaCxCdCh0LnNlYXJjaCkpLHQuY29sdW1ucyl7Zm9yKGE9MCxyPXQuY29sdW1ucy5sZW5ndGg7YTxyO2ErKyl7dmFyIHM9dC5jb2x1bW5zW2FdO3MudmlzaWJsZSE9PUgmJihpP2kuY29sdW1uKGEpLnZpc2libGUocy52aXNpYmxlLCExKTpvW2FdLmJWaXNpYmxlPXMudmlzaWJsZSkscy5zZWFyY2ghPT1IJiZQLmV4dGVuZChuLmFvUHJlU2VhcmNoQ29sc1thXSxCdChzLnNlYXJjaCkpfWkmJmkuY29sdW1ucy5hZGp1c3QoKX1uLl9iTG9hZGluZ1N0YXRlPSExLFIobiwiYW9TdGF0ZUxvYWRlZCIsInN0YXRlTG9hZGVkIixbbix0XSl9fX1lbHNlIG4uX2JMb2FkaW5nU3RhdGU9ITE7ZSgpfWZ1bmN0aW9uIGdlKHQpe3ZhciBlPXcuc2V0dGluZ3MsdD1QLmluQXJyYXkodCxOKGUsIm5UYWJsZSIpKTtyZXR1cm4tMSE9PXQ/ZVt0XTpudWxsfWZ1bmN0aW9uIFcodCxlLG4sYSl7aWYobj0iRGF0YVRhYmxlcyB3YXJuaW5nOiAiKyh0PyJ0YWJsZSBpZD0iK3Quc1RhYmxlSWQrIiAtICI6IiIpK24sYSYmKG4rPSIuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZXJyb3IsIHBsZWFzZSBzZWUgaHR0cDovL2RhdGF0YWJsZXMubmV0L3RuLyIrYSksZSlqLmNvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZyhuKTtlbHNle2U9dy5leHQsZT1lLnNFcnJNb2RlfHxlLmVyck1vZGU7aWYodCYmUih0LG51bGwsImVycm9yIixbdCxhLG5dKSwiYWxlcnQiPT1lKWFsZXJ0KG4pO2Vsc2V7aWYoInRocm93Ij09ZSl0aHJvdyBuZXcgRXJyb3Iobik7ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUodCxhLG4pfX19ZnVuY3Rpb24gRihuLGEsdCxlKXtBcnJheS5pc0FycmF5KHQpP1AuZWFjaCh0LGZ1bmN0aW9uKHQsZSl7QXJyYXkuaXNBcnJheShlKT9GKG4sYSxlWzBdLGVbMV0pOkYobixhLGUpfSk6KGU9PT1IJiYoZT10KSxhW3RdIT09SCYmKG5bZV09YVt0XSkpfWZ1bmN0aW9uIGJlKHQsZSxuKXt2YXIgYSxyO2ZvcihyIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmKGE9ZVtyXSxQLmlzUGxhaW5PYmplY3QoYSk/KFAuaXNQbGFpbk9iamVjdCh0W3JdKXx8KHRbcl09e30pLFAuZXh0ZW5kKCEwLHRbcl0sYSkpOm4mJiJkYXRhIiE9PXImJiJhYURhdGEiIT09ciYmQXJyYXkuaXNBcnJheShhKT90W3JdPWEuc2xpY2UoKTp0W3JdPWEpO3JldHVybiB0fWZ1bmN0aW9uIG1lKGUsdCxuKXtQKGUpLm9uKCJjbGljay5EVCIsdCxmdW5jdGlvbih0KXtQKGUpLnRyaWdnZXIoImJsdXIiKSxuKHQpfSkub24oImtleXByZXNzLkRUIix0LGZ1bmN0aW9uKHQpezEzPT09dC53aGljaCYmKHQucHJldmVudERlZmF1bHQoKSxuKHQpKX0pLm9uKCJzZWxlY3RzdGFydC5EVCIsZnVuY3Rpb24oKXtyZXR1cm4hMX0pfWZ1bmN0aW9uIEwodCxlLG4sYSl7biYmdFtlXS5wdXNoKHtmbjpuLHNOYW1lOmF9KX1mdW5jdGlvbiBSKG4sdCxlLGEpe3ZhciByPVtdO3JldHVybiB0JiYocj1QLm1hcChuW3RdLnNsaWNlKCkucmV2ZXJzZSgpLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZm4uYXBwbHkobi5vSW5zdGFuY2UsYSl9KSksbnVsbCE9PWUmJih0PVAuRXZlbnQoZSsiLmR0IiksKGU9UChuLm5UYWJsZSkpLnRyaWdnZXIodCxhKSwwPT09ZS5wYXJlbnRzKCJib2R5IikubGVuZ3RoJiZQKCJib2R5IikudHJpZ2dlcih0LGEpLHIucHVzaCh0LnJlc3VsdCkpLHJ9ZnVuY3Rpb24gU2UodCl7dmFyIGU9dC5faURpc3BsYXlTdGFydCxuPXQuZm5EaXNwbGF5RW5kKCksYT10Ll9pRGlzcGxheUxlbmd0aDtuPD1lJiYoZT1uLWEpLGUtPWUlYSx0Ll9pRGlzcGxheVN0YXJ0PWU9LTE9PT1hfHxlPDA/MDplfWZ1bmN0aW9uIHZlKHQsZSl7dmFyIHQ9dC5yZW5kZXJlcixuPXcuZXh0LnJlbmRlcmVyW2VdO3JldHVybiBQLmlzUGxhaW5PYmplY3QodCkmJnRbZV0/blt0W2VdXXx8bi5fOiJzdHJpbmciPT10eXBlb2YgdCYmblt0XXx8bi5ffWZ1bmN0aW9uIEUodCl7cmV0dXJuIHQub0ZlYXR1cmVzLmJTZXJ2ZXJTaWRlPyJzc3AiOnQuYWpheHx8dC5zQWpheFNvdXJjZT8iYWpheCI6ImRvbSJ9ZnVuY3Rpb24geWUodCxuKXt2YXIgYTtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT9QLm1hcCh0LGZ1bmN0aW9uKHQpe3JldHVybiB5ZSh0LG4pfSk6Im51bWJlciI9PXR5cGVvZiB0P1tuW3RdXTooYT1QLm1hcChuLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQublRhYmxlfSksUChhKS5maWx0ZXIodCkubWFwKGZ1bmN0aW9uKHQpe3ZhciBlPVAuaW5BcnJheSh0aGlzLGEpO3JldHVybiBuW2VdfSkudG9BcnJheSgpKX1mdW5jdGlvbiBEZShyLG8sdCl7dmFyIGUsbjt0JiYoZT1uZXcgQihyKSkub25lKCJkcmF3IixmdW5jdGlvbigpe3QoZS5hamF4Lmpzb24oKSl9KSwic3NwIj09RShyKT91KHIsbyk6KEQociwhMCksKG49ci5qcVhIUikmJjQhPT1uLnJlYWR5U3RhdGUmJm4uYWJvcnQoKSxUdChyLFtdLGZ1bmN0aW9uKHQpe3B0KHIpO2Zvcih2YXIgZT1GdChyLHQpLG49MCxhPWUubGVuZ3RoO248YTtuKyspeChyLGVbbl0pO3UocixvKSxEKHIsITEpfSkpfWZ1bmN0aW9uIF9lKHQsZSxuLGEscil7Zm9yKHZhciBvLGksbCxzLHU9W10sYz10eXBlb2YgZSxmPTAsZD0oZT1lJiYic3RyaW5nIiE9YyYmImZ1bmN0aW9uIiE9YyYmZS5sZW5ndGghPT1IP2U6W2VdKS5sZW5ndGg7ZjxkO2YrKylmb3IobD0wLHM9KGk9ZVtmXSYmZVtmXS5zcGxpdCYmIWVbZl0ubWF0Y2goL1tcW1woOl0vKT9lW2ZdLnNwbGl0KCIsIik6W2VbZl1dKS5sZW5ndGg7bDxzO2wrKykobz1uKCJzdHJpbmciPT10eXBlb2YgaVtsXT9pW2xdLnRyaW0oKTppW2xdKSkmJm8ubGVuZ3RoJiYodT11LmNvbmNhdChvKSk7dmFyIGg9cC5zZWxlY3Rvclt0XTtpZihoLmxlbmd0aClmb3IoZj0wLGQ9aC5sZW5ndGg7ZjxkO2YrKyl1PWhbZl0oYSxyLHUpO3JldHVybiB6KHUpfWZ1bmN0aW9uIHdlKHQpe3JldHVybih0PXR8fHt9KS5maWx0ZXImJnQuc2VhcmNoPT09SCYmKHQuc2VhcmNoPXQuZmlsdGVyKSxQLmV4dGVuZCh7c2VhcmNoOiJub25lIixvcmRlcjoiY3VycmVudCIscGFnZToiYWxsIn0sdCl9ZnVuY3Rpb24gQ2UodCl7Zm9yKHZhciBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKWlmKDA8dFtlXS5sZW5ndGgpcmV0dXJuIHRbMF09dFtlXSx0WzBdLmxlbmd0aD0xLHQubGVuZ3RoPTEsdC5jb250ZXh0PVt0LmNvbnRleHRbZV1dLHQ7cmV0dXJuIHQubGVuZ3RoPTAsdH1mdW5jdGlvbiBUZShvLHQsZSxuKXtmdW5jdGlvbiBpKHQsZSl7dmFyIG47aWYoQXJyYXkuaXNBcnJheSh0KXx8dCBpbnN0YW5jZW9mIFApZm9yKHZhciBhPTAscj10Lmxlbmd0aDthPHI7YSsrKWkodFthXSxlKTtlbHNlIHQubm9kZU5hbWUmJiJ0ciI9PT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/bC5wdXNoKHQpOihuPVAoIjx0cj48dGQ+PC90ZD48L3RyPiIpLmFkZENsYXNzKGUpLFAoInRkIixuKS5hZGRDbGFzcyhlKS5odG1sKHQpWzBdLmNvbFNwYW49VChvKSxsLnB1c2goblswXSkpfXZhciBsPVtdO2koZSxuKSx0Ll9kZXRhaWxzJiZ0Ll9kZXRhaWxzLmRldGFjaCgpLHQuX2RldGFpbHM9UChsKSx0Ll9kZXRhaWxzU2hvdyYmdC5fZGV0YWlscy5pbnNlcnRBZnRlcih0Lm5Ucil9ZnVuY3Rpb24geGUodCxlKXt2YXIgbj10LmNvbnRleHQ7aWYobi5sZW5ndGgmJnQubGVuZ3RoKXt2YXIgYT1uWzBdLmFvRGF0YVt0WzBdXTtpZihhLl9kZXRhaWxzKXsoYS5fZGV0YWlsc1Nob3c9ZSk/KGEuX2RldGFpbHMuaW5zZXJ0QWZ0ZXIoYS5uVHIpLFAoYS5uVHIpLmFkZENsYXNzKCJkdC1oYXNDaGlsZCIpKTooYS5fZGV0YWlscy5kZXRhY2goKSxQKGEublRyKS5yZW1vdmVDbGFzcygiZHQtaGFzQ2hpbGQiKSksUihuWzBdLG51bGwsImNoaWxkUm93IixbZSx0LnJvdyh0WzBdKV0pO3ZhciBzPW5bMF0scj1uZXcgQihzKSxhPSIuZHQuRFRfZGV0YWlscyIsZT0iZHJhdyIrYSx0PSJjb2x1bW4tc2l6aW5nIithLGE9ImRlc3Ryb3kiK2EsdT1zLmFvRGF0YTtpZihyLm9mZihlKyIgIit0KyIgIithKSxOKHUsIl9kZXRhaWxzIikubGVuZ3RoPjApe3Iub24oZSxmdW5jdGlvbih0LGUpe2lmKHMhPT1lKXJldHVybjtyLnJvd3Moe3BhZ2U6ImN1cnJlbnQifSkuZXEoMCkuZWFjaChmdW5jdGlvbih0KXt2YXIgZT11W3RdO2lmKGUuX2RldGFpbHNTaG93KWUuX2RldGFpbHMuaW5zZXJ0QWZ0ZXIoZS5uVHIpfSl9KTtyLm9uKHQsZnVuY3Rpb24odCxlLG4sYSl7aWYocyE9PWUpcmV0dXJuO3ZhciByLG89VChlKTtmb3IodmFyIGk9MCxsPXUubGVuZ3RoO2k8bDtpKyspe3I9dVtpXTtpZihyLl9kZXRhaWxzKXIuX2RldGFpbHMuY2hpbGRyZW4oInRkW2NvbHNwYW5dIikuYXR0cigiY29sc3BhbiIsbyl9fSk7ci5vbihhLGZ1bmN0aW9uKHQsZSl7aWYocyE9PWUpcmV0dXJuO2Zvcih2YXIgbj0wLGE9dS5sZW5ndGg7bjxhO24rKylpZih1W25dLl9kZXRhaWxzKVJlKHIsbil9KX1MZShuKX19fWZ1bmN0aW9uIEFlKHQsZSxuLGEscil7Zm9yKHZhciBvPVtdLGk9MCxsPXIubGVuZ3RoO2k8bDtpKyspby5wdXNoKFModCxyW2ldLGUpKTtyZXR1cm4gb312YXIgSWU9W10sbz1BcnJheS5wcm90b3R5cGUsQj1mdW5jdGlvbih0LGUpe2lmKCEodGhpcyBpbnN0YW5jZW9mIEIpKXJldHVybiBuZXcgQih0LGUpO2Z1bmN0aW9uIG4odCl7dmFyIGUsbixhLHI7dD10LGE9dy5zZXR0aW5ncyxyPVAubWFwKGEsZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5uVGFibGV9KSwodD10P3QublRhYmxlJiZ0Lm9BcGk/W3RdOnQubm9kZU5hbWUmJiJ0YWJsZSI9PT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/LTEhPT0oZT1QLmluQXJyYXkodCxyKSk/W2FbZV1dOm51bGw6dCYmImZ1bmN0aW9uIj09dHlwZW9mIHQuc2V0dGluZ3M/dC5zZXR0aW5ncygpLnRvQXJyYXkoKTooInN0cmluZyI9PXR5cGVvZiB0P249UCh0KTp0IGluc3RhbmNlb2YgUCYmKG49dCksbj9uLm1hcChmdW5jdGlvbih0KXtyZXR1cm4tMSE9PShlPVAuaW5BcnJheSh0aGlzLHIpKT9hW2VdOm51bGx9KS50b0FycmF5KCk6dm9pZCAwKTpbXSkmJm8ucHVzaC5hcHBseShvLHQpfXZhciBvPVtdO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBhPTAscj10Lmxlbmd0aDthPHI7YSsrKW4odFthXSk7ZWxzZSBuKHQpO3RoaXMuY29udGV4dD16KG8pLGUmJlAubWVyZ2UodGhpcyxlKSx0aGlzLnNlbGVjdG9yPXtyb3dzOm51bGwsY29sczpudWxsLG9wdHM6bnVsbH0sQi5leHRlbmQodGhpcyx0aGlzLEllKX0sRmU9KHcuQXBpPUIsUC5leHRlbmQoQi5wcm90b3R5cGUse2FueTpmdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5jb3VudCgpfSxjb25jYXQ6by5jb25jYXQsY29udGV4dDpbXSxjb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZsYXR0ZW4oKS5sZW5ndGh9LGVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsbj10aGlzLmxlbmd0aDtlPG47ZSsrKXQuY2FsbCh0aGlzLHRoaXNbZV0sZSx0aGlzKTtyZXR1cm4gdGhpc30sZXE6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jb250ZXh0O3JldHVybiBlLmxlbmd0aD50P25ldyBCKGVbdF0sdGhpc1t0XSk6bnVsbH0sZmlsdGVyOmZ1bmN0aW9uKHQpe3ZhciBlPVtdO2lmKG8uZmlsdGVyKWU9by5maWx0ZXIuY2FsbCh0aGlzLHQsdGhpcyk7ZWxzZSBmb3IodmFyIG49MCxhPXRoaXMubGVuZ3RoO248YTtuKyspdC5jYWxsKHRoaXMsdGhpc1tuXSxuLHRoaXMpJiZlLnB1c2godGhpc1tuXSk7cmV0dXJuIG5ldyBCKHRoaXMuY29udGV4dCxlKX0sZmxhdHRlbjpmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiBuZXcgQih0aGlzLmNvbnRleHQsdC5jb25jYXQuYXBwbHkodCx0aGlzLnRvQXJyYXkoKSkpfSxqb2luOm8uam9pbixpbmRleE9mOm8uaW5kZXhPZnx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49ZXx8MCxhPXRoaXMubGVuZ3RoO248YTtuKyspaWYodGhpc1tuXT09PXQpcmV0dXJuIG47cmV0dXJuLTF9LGl0ZXJhdG9yOmZ1bmN0aW9uKHQsZSxuLGEpe3ZhciByLG8saSxsLHMsdSxjLGYsZD1bXSxoPXRoaXMuY29udGV4dCxwPXRoaXMuc2VsZWN0b3I7Zm9yKCJzdHJpbmciPT10eXBlb2YgdCYmKGE9bixuPWUsZT10LHQ9ITEpLG89MCxpPWgubGVuZ3RoO288aTtvKyspe3ZhciBnPW5ldyBCKGhbb10pO2lmKCJ0YWJsZSI9PT1lKShyPW4uY2FsbChnLGhbb10sbykpIT09SCYmZC5wdXNoKHIpO2Vsc2UgaWYoImNvbHVtbnMiPT09ZXx8InJvd3MiPT09ZSkocj1uLmNhbGwoZyxoW29dLHRoaXNbb10sbykpIT09SCYmZC5wdXNoKHIpO2Vsc2UgaWYoImNvbHVtbiI9PT1lfHwiY29sdW1uLXJvd3MiPT09ZXx8InJvdyI9PT1lfHwiY2VsbCI9PT1lKWZvcihjPXRoaXNbb10sImNvbHVtbi1yb3dzIj09PWUmJih1PUZlKGhbb10scC5vcHRzKSksbD0wLHM9Yy5sZW5ndGg7bDxzO2wrKylmPWNbbF0sKHI9ImNlbGwiPT09ZT9uLmNhbGwoZyxoW29dLGYucm93LGYuY29sdW1uLG8sbCk6bi5jYWxsKGcsaFtvXSxmLG8sbCx1KSkhPT1IJiZkLnB1c2gocil9cmV0dXJuIGQubGVuZ3RofHxhPygodD0oYT1uZXcgQihoLHQ/ZC5jb25jYXQuYXBwbHkoW10sZCk6ZCkpLnNlbGVjdG9yKS5yb3dzPXAucm93cyx0LmNvbHM9cC5jb2xzLHQub3B0cz1wLm9wdHMsYSk6dGhpc30sbGFzdEluZGV4T2Y6by5sYXN0SW5kZXhPZnx8ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pbmRleE9mLmFwcGx5KHRoaXMudG9BcnJheS5yZXZlcnNlKCksYXJndW1lbnRzKX0sbGVuZ3RoOjAsbWFwOmZ1bmN0aW9uKHQpe3ZhciBlPVtdO2lmKG8ubWFwKWU9by5tYXAuY2FsbCh0aGlzLHQsdGhpcyk7ZWxzZSBmb3IodmFyIG49MCxhPXRoaXMubGVuZ3RoO248YTtuKyspZS5wdXNoKHQuY2FsbCh0aGlzLHRoaXNbbl0sbikpO3JldHVybiBuZXcgQih0aGlzLmNvbnRleHQsZSl9LHBsdWNrOmZ1bmN0aW9uKHQpe3ZhciBlPXcudXRpbC5nZXQodCk7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpfSl9LHBvcDpvLnBvcCxwdXNoOm8ucHVzaCxyZWR1Y2U6by5yZWR1Y2V8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV0KHRoaXMsdCxlLDAsdGhpcy5sZW5ndGgsMSl9LHJlZHVjZVJpZ2h0Om8ucmVkdWNlUmlnaHR8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV0KHRoaXMsdCxlLHRoaXMubGVuZ3RoLTEsLTEsLTEpfSxyZXZlcnNlOm8ucmV2ZXJzZSxzZWxlY3RvcjpudWxsLHNoaWZ0Om8uc2hpZnQsc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEIodGhpcy5jb250ZXh0LHRoaXMpfSxzb3J0Om8uc29ydCxzcGxpY2U6by5zcGxpY2UsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBvLnNsaWNlLmNhbGwodGhpcyl9LHRvJDpmdW5jdGlvbigpe3JldHVybiBQKHRoaXMpfSx0b0pRdWVyeTpmdW5jdGlvbigpe3JldHVybiBQKHRoaXMpfSx1bmlxdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEIodGhpcy5jb250ZXh0LHoodGhpcykpfSx1bnNoaWZ0Om8udW5zaGlmdH0pLEIuZXh0ZW5kPWZ1bmN0aW9uKHQsZSxuKXtpZihuLmxlbmd0aCYmZSYmKGUgaW5zdGFuY2VvZiBCfHxlLl9fZHRfd3JhcHBlcikpZm9yKHZhciBhLHI9MCxvPW4ubGVuZ3RoO3I8bztyKyspZVsoYT1uW3JdKS5uYW1lXT0iZnVuY3Rpb24iPT09YS50eXBlP2Z1bmN0aW9uKGUsbixhKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD1uLmFwcGx5KGUsYXJndW1lbnRzKTtyZXR1cm4gQi5leHRlbmQodCx0LGEubWV0aG9kRXh0KSx0fX0odCxhLnZhbCxhKToib2JqZWN0Ij09PWEudHlwZT97fTphLnZhbCxlW2EubmFtZV0uX19kdF93cmFwcGVyPSEwLEIuZXh0ZW5kKHQsZVthLm5hbWVdLGEucHJvcEV4dCl9LEIucmVnaXN0ZXI9ZT1mdW5jdGlvbih0LGUpe2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBuPTAsYT10Lmxlbmd0aDtuPGE7bisrKUIucmVnaXN0ZXIodFtuXSxlKTtlbHNlIGZvcih2YXIgcj10LnNwbGl0KCIuIiksbz1JZSxpPTAsbD1yLmxlbmd0aDtpPGw7aSsrKXt2YXIgcyx1LGM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49MCxhPXQubGVuZ3RoO248YTtuKyspaWYodFtuXS5uYW1lPT09ZSlyZXR1cm4gdFtuXTtyZXR1cm4gbnVsbH0obyx1PShzPS0xIT09cltpXS5pbmRleE9mKCIoKSIpKT9yW2ldLnJlcGxhY2UoIigpIiwiIik6cltpXSk7Y3x8by5wdXNoKGM9e25hbWU6dSx2YWw6e30sbWV0aG9kRXh0OltdLHByb3BFeHQ6W10sdHlwZToib2JqZWN0In0pLGk9PT1sLTE/KGMudmFsPWUsYy50eXBlPSJmdW5jdGlvbiI9PXR5cGVvZiBlPyJmdW5jdGlvbiI6UC5pc1BsYWluT2JqZWN0KGUpPyJvYmplY3QiOiJvdGhlciIpOm89cz9jLm1ldGhvZEV4dDpjLnByb3BFeHR9fSxCLnJlZ2lzdGVyUGx1cmFsPXQ9ZnVuY3Rpb24odCxlLG4pe0IucmVnaXN0ZXIodCxuKSxCLnJlZ2lzdGVyKGUsZnVuY3Rpb24oKXt2YXIgdD1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gdD09PXRoaXM/dGhpczp0IGluc3RhbmNlb2YgQj90Lmxlbmd0aD9BcnJheS5pc0FycmF5KHRbMF0pP25ldyBCKHQuY29udGV4dCx0WzBdKTp0WzBdOkg6dH0pfSxlKCJ0YWJsZXMoKSIsZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1IJiZudWxsIT09dD9uZXcgQih5ZSh0LHRoaXMuY29udGV4dCkpOnRoaXN9KSxlKCJ0YWJsZSgpIixmdW5jdGlvbih0KXt2YXIgdD10aGlzLnRhYmxlcyh0KSxlPXQuY29udGV4dDtyZXR1cm4gZS5sZW5ndGg/bmV3IEIoZVswXSk6dH0pLHQoInRhYmxlcygpLm5vZGVzKCkiLCJ0YWJsZSgpLm5vZGUoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5UYWJsZX0sMSl9KSx0KCJ0YWJsZXMoKS5ib2R5KCkiLCJ0YWJsZSgpLmJvZHkoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5UQm9keX0sMSl9KSx0KCJ0YWJsZXMoKS5oZWFkZXIoKSIsInRhYmxlKCkuaGVhZGVyKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbih0KXtyZXR1cm4gdC5uVEhlYWR9LDEpfSksdCgidGFibGVzKCkuZm9vdGVyKCkiLCJ0YWJsZSgpLmZvb3RlcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24odCl7cmV0dXJuIHQublRGb290fSwxKX0pLHQoInRhYmxlcygpLmNvbnRhaW5lcnMoKSIsInRhYmxlKCkuY29udGFpbmVyKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbih0KXtyZXR1cm4gdC5uVGFibGVXcmFwcGVyfSwxKX0pLGUoImRyYXcoKSIsZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbih0KXsicGFnZSI9PT1lP3kodCk6dSh0LCExPT09KGU9InN0cmluZyI9PXR5cGVvZiBlPyJmdWxsLWhvbGQiIT09ZTplKSl9KX0pLGUoInBhZ2UoKSIsZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1IP3RoaXMucGFnZS5pbmZvKCkucGFnZTp0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24odCl7WXQodCxlKX0pfSksZSgicGFnZS5pbmZvKCkiLGZ1bmN0aW9uKHQpe3ZhciBlLG4sYSxyLG87cmV0dXJuIDA9PT10aGlzLmNvbnRleHQubGVuZ3RoP0g6KG49KGU9dGhpcy5jb250ZXh0WzBdKS5faURpc3BsYXlTdGFydCxhPWUub0ZlYXR1cmVzLmJQYWdpbmF0ZT9lLl9pRGlzcGxheUxlbmd0aDotMSxyPWUuZm5SZWNvcmRzRGlzcGxheSgpLHtwYWdlOihvPS0xPT09YSk/MDpNYXRoLmZsb29yKG4vYSkscGFnZXM6bz8xOk1hdGguY2VpbChyL2EpLHN0YXJ0Om4sZW5kOmUuZm5EaXNwbGF5RW5kKCksbGVuZ3RoOmEscmVjb3Jkc1RvdGFsOmUuZm5SZWNvcmRzVG90YWwoKSxyZWNvcmRzRGlzcGxheTpyLHNlcnZlclNpZGU6InNzcCI9PT1FKGUpfSl9KSxlKCJwYWdlLmxlbigpIixmdW5jdGlvbihlKXtyZXR1cm4gZT09PUg/MCE9PXRoaXMuY29udGV4dC5sZW5ndGg/dGhpcy5jb250ZXh0WzBdLl9pRGlzcGxheUxlbmd0aDpIOnRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbih0KXskdCh0LGUpfSl9KSxlKCJhamF4Lmpzb24oKSIsZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnRleHQ7aWYoMDx0Lmxlbmd0aClyZXR1cm4gdFswXS5qc29ufSksZSgiYWpheC5wYXJhbXMoKSIsZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnRleHQ7aWYoMDx0Lmxlbmd0aClyZXR1cm4gdFswXS5vQWpheERhdGF9KSxlKCJhamF4LnJlbG9hZCgpIixmdW5jdGlvbihlLG4pe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24odCl7RGUodCwhMT09PW4sZSl9KX0pLGUoImFqYXgudXJsKCkiLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY29udGV4dDtyZXR1cm4gZT09PUg/MD09PXQubGVuZ3RoP0g6KHQ9dFswXSkuYWpheD9QLmlzUGxhaW5PYmplY3QodC5hamF4KT90LmFqYXgudXJsOnQuYWpheDp0LnNBamF4U291cmNlOnRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbih0KXtQLmlzUGxhaW5PYmplY3QodC5hamF4KT90LmFqYXgudXJsPWU6dC5hamF4PWV9KX0pLGUoImFqYXgudXJsKCkubG9hZCgpIixmdW5jdGlvbihlLG4pe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24odCl7RGUodCwhMT09PW4sZSl9KX0pLGZ1bmN0aW9uKHQsZSl7dmFyIG4sYT1bXSxyPXQuYWlEaXNwbGF5LG89dC5haURpc3BsYXlNYXN0ZXIsaT1lLnNlYXJjaCxsPWUub3JkZXIsZT1lLnBhZ2U7aWYoInNzcCI9PUUodCkpcmV0dXJuInJlbW92ZWQiPT09aT9bXTpmKDAsby5sZW5ndGgpO2lmKCJjdXJyZW50Ij09ZSlmb3IodT10Ll9pRGlzcGxheVN0YXJ0LGM9dC5mbkRpc3BsYXlFbmQoKTt1PGM7dSsrKWEucHVzaChyW3VdKTtlbHNlIGlmKCJjdXJyZW50Ij09bHx8ImFwcGxpZWQiPT1sKXtpZigibm9uZSI9PWkpYT1vLnNsaWNlKCk7ZWxzZSBpZigiYXBwbGllZCI9PWkpYT1yLnNsaWNlKCk7ZWxzZSBpZigicmVtb3ZlZCI9PWkpe2Zvcih2YXIgcz17fSx1PTAsYz1yLmxlbmd0aDt1PGM7dSsrKXNbclt1XV09bnVsbDthPVAubWFwKG8sZnVuY3Rpb24odCl7cmV0dXJuIHMuaGFzT3duUHJvcGVydHkodCk/bnVsbDp0fSl9fWVsc2UgaWYoImluZGV4Ij09bHx8Im9yaWdpbmFsIj09bClmb3IodT0wLGM9dC5hb0RhdGEubGVuZ3RoO3U8Yzt1KyspKCJub25lIj09aXx8LTE9PT0obj1QLmluQXJyYXkodSxyKSkmJiJyZW1vdmVkIj09aXx8MDw9biYmImFwcGxpZWQiPT1pKSYmYS5wdXNoKHUpO3JldHVybiBhfSksTGU9KGUoInJvd3MoKSIsZnVuY3Rpb24oZSxuKXtlPT09SD9lPSIiOlAuaXNQbGFpbk9iamVjdChlKSYmKG49ZSxlPSIiKSxuPXdlKG4pO3ZhciB0PXRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbih0KXtyZXR1cm4gX2UoInJvdyIsZSxmdW5jdGlvbihuKXt2YXIgdD1kKG4pLGE9ci5hb0RhdGE7aWYobnVsbCE9PXQmJiFvKXJldHVyblt0XTtpZihpPWl8fEZlKHIsbyksbnVsbCE9PXQmJi0xIT09UC5pbkFycmF5KHQsaSkpcmV0dXJuW3RdO2lmKG51bGw9PT1ufHxuPT09SHx8IiI9PT1uKXJldHVybiBpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybiBQLm1hcChpLGZ1bmN0aW9uKHQpe3ZhciBlPWFbdF07cmV0dXJuIG4odCxlLl9hRGF0YSxlLm5Ucik/dDpudWxsfSk7aWYobi5ub2RlTmFtZSlyZXR1cm4gdD1uLl9EVF9Sb3dJbmRleCxlPW4uX0RUX0NlbGxJbmRleCx0IT09SD9hW3RdJiZhW3RdLm5Ucj09PW4/W3RdOltdOmU/YVtlLnJvd10mJmFbZS5yb3ddLm5Ucj09PW4ucGFyZW50Tm9kZT9bZS5yb3ddOltdOih0PVAobikuY2xvc2VzdCgiKltkYXRhLWR0LXJvd10iKSkubGVuZ3RoP1t0LmRhdGEoImR0LXJvdyIpXTpbXTtpZigic3RyaW5nIj09dHlwZW9mIG4mJiIjIj09PW4uY2hhckF0KDApKXt2YXIgZT1yLmFJZHNbbi5yZXBsYWNlKC9eIy8sIiIpXTtpZihlIT09SClyZXR1cm5bZS5pZHhdfXQ9XyhtKHIuYW9EYXRhLGksIm5UciIpKTtyZXR1cm4gUCh0KS5maWx0ZXIobikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX0RUX1Jvd0luZGV4fSkudG9BcnJheSgpfSxyPXQsbz1uKTt2YXIgcixvLGl9LDEpO3JldHVybiB0LnNlbGVjdG9yLnJvd3M9ZSx0LnNlbGVjdG9yLm9wdHM9bix0fSksZSgicm93cygpLm5vZGVzKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInJvdyIsZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5hb0RhdGFbZV0ublRyfHxIfSwxKX0pLGUoInJvd3MoKS5kYXRhKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoITAsInJvd3MiLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0odC5hb0RhdGEsZSwiX2FEYXRhIil9LDEpfSksdCgicm93cygpLmNhY2hlKCkiLCJyb3coKS5jYWNoZSgpIixmdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigicm93IixmdW5jdGlvbih0LGUpe3Q9dC5hb0RhdGFbZV07cmV0dXJuInNlYXJjaCI9PT1uP3QuX2FGaWx0ZXJEYXRhOnQuX2FTb3J0RGF0YX0sMSl9KSx0KCJyb3dzKCkuaW52YWxpZGF0ZSgpIiwicm93KCkuaW52YWxpZGF0ZSgpIixmdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigicm93IixmdW5jdGlvbih0LGUpe2J0KHQsZSxuKX0pfSksdCgicm93cygpLmluZGV4ZXMoKSIsInJvdygpLmluZGV4KCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInJvdyIsZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0sMSl9KSx0KCJyb3dzKCkuaWRzKCkiLCJyb3coKS5pZCgpIixmdW5jdGlvbih0KXtmb3IodmFyIGU9W10sbj10aGlzLmNvbnRleHQsYT0wLHI9bi5sZW5ndGg7YTxyO2ErKylmb3IodmFyIG89MCxpPXRoaXNbYV0ubGVuZ3RoO288aTtvKyspe3ZhciBsPW5bYV0ucm93SWRGbihuW2FdLmFvRGF0YVt0aGlzW2FdW29dXS5fYURhdGEpO2UucHVzaCgoITA9PT10PyIjIjoiIikrbCl9cmV0dXJuIG5ldyBCKG4sZSl9KSx0KCJyb3dzKCkucmVtb3ZlKCkiLCJyb3coKS5yZW1vdmUoKSIsZnVuY3Rpb24oKXt2YXIgZj10aGlzO3JldHVybiB0aGlzLml0ZXJhdG9yKCJyb3ciLGZ1bmN0aW9uKHQsZSxuKXt2YXIgYSxyLG8saSxsLHMsdT10LmFvRGF0YSxjPXVbZV07Zm9yKHUuc3BsaWNlKGUsMSksYT0wLHI9dS5sZW5ndGg7YTxyO2ErKylpZihzPShsPXVbYV0pLmFuQ2VsbHMsbnVsbCE9PWwublRyJiYobC5uVHIuX0RUX1Jvd0luZGV4PWEpLG51bGwhPT1zKWZvcihvPTAsaT1zLmxlbmd0aDtvPGk7bysrKXNbb10uX0RUX0NlbGxJbmRleC5yb3c9YTtndCh0LmFpRGlzcGxheU1hc3RlcixlKSxndCh0LmFpRGlzcGxheSxlKSxndChmW25dLGUsITEpLDA8dC5faVJlY29yZHNEaXNwbGF5JiZ0Ll9pUmVjb3Jkc0Rpc3BsYXktLSxTZSh0KTtuPXQucm93SWRGbihjLl9hRGF0YSk7biE9PUgmJmRlbGV0ZSB0LmFJZHNbbl19KSx0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsbj10LmFvRGF0YS5sZW5ndGg7ZTxuO2UrKyl0LmFvRGF0YVtlXS5pZHg9ZX0pLHRoaXN9KSxlKCJyb3dzLmFkZCgpIixmdW5jdGlvbihvKXt2YXIgdD10aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49W10sYT0wLHI9by5sZW5ndGg7YTxyO2ErKykoZT1vW2FdKS5ub2RlTmFtZSYmIlRSIj09PWUubm9kZU5hbWUudG9VcHBlckNhc2UoKT9uLnB1c2godXQodCxlKVswXSk6bi5wdXNoKHgodCxlKSk7cmV0dXJuIG59LDEpLGU9dGhpcy5yb3dzKC0xKTtyZXR1cm4gZS5wb3AoKSxQLm1lcmdlKGUsdCksZX0pLGUoInJvdygpIixmdW5jdGlvbih0LGUpe3JldHVybiBDZSh0aGlzLnJvd3ModCxlKSl9KSxlKCJyb3coKS5kYXRhKCkiLGZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5jb250ZXh0O3JldHVybiB0PT09SD9uLmxlbmd0aCYmdGhpcy5sZW5ndGg/blswXS5hb0RhdGFbdGhpc1swXV0uX2FEYXRhOkg6KChlPW5bMF0uYW9EYXRhW3RoaXNbMF1dKS5fYURhdGE9dCxBcnJheS5pc0FycmF5KHQpJiZlLm5UciYmZS5uVHIuaWQmJmIoblswXS5yb3dJZCkodCxlLm5Uci5pZCksYnQoblswXSx0aGlzWzBdLCJkYXRhIiksdGhpcyl9KSxlKCJyb3coKS5ub2RlKCkiLGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb250ZXh0O3JldHVybiB0Lmxlbmd0aCYmdGhpcy5sZW5ndGgmJnRbMF0uYW9EYXRhW3RoaXNbMF1dLm5Ucnx8bnVsbH0pLGUoInJvdy5hZGQoKSIsZnVuY3Rpb24oZSl7ZSBpbnN0YW5jZW9mIFAmJmUubGVuZ3RoJiYoZT1lWzBdKTt2YXIgdD10aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24odCl7cmV0dXJuIGUubm9kZU5hbWUmJiJUUiI9PT1lLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk/dXQodCxlKVswXTp4KHQsZSl9KTtyZXR1cm4gdGhpcy5yb3codFswXSl9KSxQKHYpLm9uKCJwbHVnaW4taW5pdC5kdCIsZnVuY3Rpb24odCxlKXt2YXIgbj1uZXcgQihlKSxhPSJvbi1wbHVnaW4taW5pdCIscj0ic3RhdGVTYXZlUGFyYW1zLiIrYSxvPSJkZXN0cm95LiAiK2EsYT0obi5vbihyLGZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGE9ZS5yb3dJZEZuLHI9ZS5hb0RhdGEsbz1bXSxpPTA7aTxyLmxlbmd0aDtpKyspcltpXS5fZGV0YWlsc1Nob3cmJm8ucHVzaCgiIyIrYShyW2ldLl9hRGF0YSkpO24uY2hpbGRSb3dzPW99KSxuLm9uKG8sZnVuY3Rpb24oKXtuLm9mZihyKyIgIitvKX0pLG4uc3RhdGUubG9hZGVkKCkpO2EmJmEuY2hpbGRSb3dzJiZuLnJvd3MoUC5tYXAoYS5jaGlsZFJvd3MsZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZSgvOi9nLCJcXDoiKX0pKS5ldmVyeShmdW5jdGlvbigpe1IoZSxudWxsLCJyZXF1ZXN0Q2hpbGQiLFt0aGlzXSl9KX0pLHcudXRpbC50aHJvdHRsZShmdW5jdGlvbih0KXtkZSh0WzBdKX0sNTAwKSksUmU9ZnVuY3Rpb24odCxlKXt2YXIgbj10LmNvbnRleHQ7bi5sZW5ndGgmJihlPW5bMF0uYW9EYXRhW2UhPT1IP2U6dFswXV0pJiZlLl9kZXRhaWxzJiYoZS5fZGV0YWlscy5yZW1vdmUoKSxlLl9kZXRhaWxzU2hvdz1ILGUuX2RldGFpbHM9SCxQKGUublRyKS5yZW1vdmVDbGFzcygiZHQtaGFzQ2hpbGQiKSxMZShuKSl9LFBlPSJyb3coKS5jaGlsZCIsamU9UGUrIigpIixIZT0oZShqZSxmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuY29udGV4dDtyZXR1cm4gdD09PUg/bi5sZW5ndGgmJnRoaXMubGVuZ3RoP25bMF0uYW9EYXRhW3RoaXNbMF1dLl9kZXRhaWxzOkg6KCEwPT09dD90aGlzLmNoaWxkLnNob3coKTohMT09PXQ/UmUodGhpcyk6bi5sZW5ndGgmJnRoaXMubGVuZ3RoJiZUZShuWzBdLG5bMF0uYW9EYXRhW3RoaXNbMF1dLHQsZSksdGhpcyl9KSxlKFtQZSsiLnNob3coKSIsamUrIi5zaG93KCkiXSxmdW5jdGlvbih0KXtyZXR1cm4geGUodGhpcywhMCksdGhpc30pLGUoW1BlKyIuaGlkZSgpIixqZSsiLmhpZGUoKSJdLGZ1bmN0aW9uKCl7cmV0dXJuIHhlKHRoaXMsITEpLHRoaXN9KSxlKFtQZSsiLnJlbW92ZSgpIixqZSsiLnJlbW92ZSgpIl0sZnVuY3Rpb24oKXtyZXR1cm4gUmUodGhpcyksdGhpc30pLGUoUGUrIi5pc1Nob3duKCkiLGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb250ZXh0O3JldHVybiB0Lmxlbmd0aCYmdGhpcy5sZW5ndGgmJnRbMF0uYW9EYXRhW3RoaXNbMF1dLl9kZXRhaWxzU2hvd3x8ITF9KSwvXihbXjpdKyk6KG5hbWV8dmlzSWR4fHZpc2libGUpJC8pLE5lPShlKCJjb2x1bW5zKCkiLGZ1bmN0aW9uKG4sYSl7bj09PUg/bj0iIjpQLmlzUGxhaW5PYmplY3QobikmJihhPW4sbj0iIiksYT13ZShhKTt2YXIgdD10aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24odCl7cmV0dXJuIGU9bixsPWEscz0oaT10KS5hb0NvbHVtbnMsdT1OKHMsInNOYW1lIiksYz1OKHMsIm5UaCIpLF9lKCJjb2x1bW4iLGUsZnVuY3Rpb24obil7dmFyIGEsdD1kKG4pO2lmKCIiPT09bilyZXR1cm4gZihzLmxlbmd0aCk7aWYobnVsbCE9PXQpcmV0dXJuWzA8PXQ/dDpzLmxlbmd0aCt0XTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbilyZXR1cm4gYT1GZShpLGwpLFAubWFwKHMsZnVuY3Rpb24odCxlKXtyZXR1cm4gbihlLEFlKGksZSwwLDAsYSksY1tlXSk/ZTpudWxsfSk7dmFyIHI9InN0cmluZyI9PXR5cGVvZiBuP24ubWF0Y2goSGUpOiIiO2lmKHIpc3dpdGNoKHJbMl0pe2Nhc2UidmlzSWR4IjpjYXNlInZpc2libGUiOnZhciBlLG89cGFyc2VJbnQoclsxXSwxMCk7cmV0dXJuIG88MD9bKGU9UC5tYXAocyxmdW5jdGlvbih0LGUpe3JldHVybiB0LmJWaXNpYmxlP2U6bnVsbH0pKVtlLmxlbmd0aCtvXV06W3J0KGksbyldO2Nhc2UibmFtZSI6cmV0dXJuIFAubWFwKHUsZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PXJbMV0/ZTpudWxsfSk7ZGVmYXVsdDpyZXR1cm5bXX1yZXR1cm4gbi5ub2RlTmFtZSYmbi5fRFRfQ2VsbEluZGV4P1tuLl9EVF9DZWxsSW5kZXguY29sdW1uXToodD1QKGMpLmZpbHRlcihuKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gUC5pbkFycmF5KHRoaXMsYyl9KS50b0FycmF5KCkpLmxlbmd0aHx8IW4ubm9kZU5hbWU/dDoodD1QKG4pLmNsb3Nlc3QoIipbZGF0YS1kdC1jb2x1bW5dIikpLmxlbmd0aD9bdC5kYXRhKCJkdC1jb2x1bW4iKV06W119LGksbCk7dmFyIGksZSxsLHMsdSxjfSwxKTtyZXR1cm4gdC5zZWxlY3Rvci5jb2xzPW4sdC5zZWxlY3Rvci5vcHRzPWEsdH0pLHQoImNvbHVtbnMoKS5oZWFkZXIoKSIsImNvbHVtbigpLmhlYWRlcigpIixmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4iLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuYW9Db2x1bW5zW2VdLm5UaH0sMSl9KSx0KCJjb2x1bW5zKCkuZm9vdGVyKCkiLCJjb2x1bW4oKS5mb290ZXIoKSIsZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY29sdW1uIixmdW5jdGlvbih0LGUpe3JldHVybiB0LmFvQ29sdW1uc1tlXS5uVGZ9LDEpfSksdCgiY29sdW1ucygpLmRhdGEoKSIsImNvbHVtbigpLmRhdGEoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY29sdW1uLXJvd3MiLEFlLDEpfSksdCgiY29sdW1ucygpLmRhdGFTcmMoKSIsImNvbHVtbigpLmRhdGFTcmMoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY29sdW1uIixmdW5jdGlvbih0LGUpe3JldHVybiB0LmFvQ29sdW1uc1tlXS5tRGF0YX0sMSl9KSx0KCJjb2x1bW5zKCkuY2FjaGUoKSIsImNvbHVtbigpLmNhY2hlKCkiLGZ1bmN0aW9uKG8pe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4tcm93cyIsZnVuY3Rpb24odCxlLG4sYSxyKXtyZXR1cm4gbSh0LmFvRGF0YSxyLCJzZWFyY2giPT09bz8iX2FGaWx0ZXJEYXRhIjoiX2FTb3J0RGF0YSIsZSl9LDEpfSksdCgiY29sdW1ucygpLm5vZGVzKCkiLCJjb2x1bW4oKS5ub2RlcygpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4tcm93cyIsZnVuY3Rpb24odCxlLG4sYSxyKXtyZXR1cm4gbSh0LmFvRGF0YSxyLCJhbkNlbGxzIixlKX0sMSl9KSx0KCJjb2x1bW5zKCkudmlzaWJsZSgpIiwiY29sdW1uKCkudmlzaWJsZSgpIixmdW5jdGlvbihmLG4pe3ZhciBlPXRoaXMsdD10aGlzLml0ZXJhdG9yKCJjb2x1bW4iLGZ1bmN0aW9uKHQsZSl7aWYoZj09PUgpcmV0dXJuIHQuYW9Db2x1bW5zW2VdLmJWaXNpYmxlO3ZhciBuLGEscj1lLGU9ZixvPXQuYW9Db2x1bW5zLGk9b1tyXSxsPXQuYW9EYXRhO2lmKGU9PT1IKWkuYlZpc2libGU7ZWxzZSBpZihpLmJWaXNpYmxlIT09ZSl7aWYoZSlmb3IodmFyIHM9UC5pbkFycmF5KCEwLE4obywiYlZpc2libGUiKSxyKzEpLHU9MCxjPWwubGVuZ3RoO3U8Yzt1KyspYT1sW3VdLm5UcixuPWxbdV0uYW5DZWxscyxhJiZhLmluc2VydEJlZm9yZShuW3JdLG5bc118fG51bGwpO2Vsc2UgUChOKHQuYW9EYXRhLCJhbkNlbGxzIixyKSkuZGV0YWNoKCk7aS5iVmlzaWJsZT1lfX0pO3JldHVybiBmIT09SCYmdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKHQpe0R0KHQsdC5hb0hlYWRlciksRHQodCx0LmFvRm9vdGVyKSx0LmFpRGlzcGxheS5sZW5ndGh8fFAodC5uVEJvZHkpLmZpbmQoInRkW2NvbHNwYW5dIikuYXR0cigiY29sc3BhbiIsVCh0KSksZGUodCksZS5pdGVyYXRvcigiY29sdW1uIixmdW5jdGlvbih0LGUpe1IodCxudWxsLCJjb2x1bW4tdmlzaWJpbGl0eSIsW3QsZSxmLG5dKX0pLG4hPT1IJiYhbnx8ZS5jb2x1bW5zLmFkanVzdCgpfSksdH0pLHQoImNvbHVtbnMoKS5pbmRleGVzKCkiLCJjb2x1bW4oKS5pbmRleCgpIixmdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY29sdW1uIixmdW5jdGlvbih0LGUpe3JldHVybiJ2aXNpYmxlIj09PW4/b3QodCxlKTplfSwxKX0pLGUoImNvbHVtbnMuYWRqdXN0KCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbih0KXtPKHQpfSwxKX0pLGUoImNvbHVtbi5pbmRleCgpIixmdW5jdGlvbih0LGUpe3ZhciBuO2lmKDAhPT10aGlzLmNvbnRleHQubGVuZ3RoKXJldHVybiBuPXRoaXMuY29udGV4dFswXSwiZnJvbVZpc2libGUiPT09dHx8InRvRGF0YSI9PT10P3J0KG4sZSk6ImZyb21EYXRhIj09PXR8fCJ0b1Zpc2libGUiPT09dD9vdChuLGUpOnZvaWQgMH0pLGUoImNvbHVtbigpIixmdW5jdGlvbih0LGUpe3JldHVybiBDZSh0aGlzLmNvbHVtbnModCxlKSl9KSxlKCJjZWxscygpIixmdW5jdGlvbihnLHQsYil7dmFyIGEscixvLGksbCxzLGU7cmV0dXJuIFAuaXNQbGFpbk9iamVjdChnKSYmKGcucm93PT09SD8oYj1nLGc9bnVsbCk6KGI9dCx0PW51bGwpKSxQLmlzUGxhaW5PYmplY3QodCkmJihiPXQsdD1udWxsKSxudWxsPT09dHx8dD09PUg/dGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKHQpe3JldHVybiBhPXQsdD1nLGU9d2UoYiksZj1hLmFvRGF0YSxkPUZlKGEsZSksbj1fKG0oZixkLCJhbkNlbGxzIikpLGg9UChZKFtdLG4pKSxwPWEuYW9Db2x1bW5zLmxlbmd0aCxfZSgiY2VsbCIsdCxmdW5jdGlvbih0KXt2YXIgZSxuPSJmdW5jdGlvbiI9PXR5cGVvZiB0O2lmKG51bGw9PT10fHx0PT09SHx8bil7Zm9yKG89W10saT0wLGw9ZC5sZW5ndGg7aTxsO2krKylmb3Iocj1kW2ldLHM9MDtzPHA7cysrKXU9e3JvdzpyLGNvbHVtbjpzfSwoIW58fChjPWZbcl0sdCh1LFMoYSxyLHMpLGMuYW5DZWxscz9jLmFuQ2VsbHNbc106bnVsbCkpKSYmby5wdXNoKHUpO3JldHVybiBvfXJldHVybiBQLmlzUGxhaW5PYmplY3QodCk/dC5jb2x1bW4hPT1IJiZ0LnJvdyE9PUgmJi0xIT09UC5pbkFycmF5KHQucm93LGQpP1t0XTpbXTooZT1oLmZpbHRlcih0KS5tYXAoZnVuY3Rpb24odCxlKXtyZXR1cm57cm93OmUuX0RUX0NlbGxJbmRleC5yb3csY29sdW1uOmUuX0RUX0NlbGxJbmRleC5jb2x1bW59fSkudG9BcnJheSgpKS5sZW5ndGh8fCF0Lm5vZGVOYW1lP2U6KGM9UCh0KS5jbG9zZXN0KCIqW2RhdGEtZHQtcm93XSIpKS5sZW5ndGg/W3tyb3c6Yy5kYXRhKCJkdC1yb3ciKSxjb2x1bW46Yy5kYXRhKCJkdC1jb2x1bW4iKX1dOltdfSxhLGUpO3ZhciBhLGUscixvLGksbCxzLHUsYyxmLGQsbixoLHB9KTooZT1iP3twYWdlOmIucGFnZSxvcmRlcjpiLm9yZGVyLHNlYXJjaDpiLnNlYXJjaH06e30sYT10aGlzLmNvbHVtbnModCxlKSxyPXRoaXMucm93cyhnLGUpLGU9dGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKHQsZSl7dmFyIG49W107Zm9yKG89MCxpPXJbZV0ubGVuZ3RoO288aTtvKyspZm9yKGw9MCxzPWFbZV0ubGVuZ3RoO2w8cztsKyspbi5wdXNoKHtyb3c6cltlXVtvXSxjb2x1bW46YVtlXVtsXX0pO3JldHVybiBufSwxKSxlPWImJmIuc2VsZWN0ZWQ/dGhpcy5jZWxscyhlLGIpOmUsUC5leHRlbmQoZS5zZWxlY3Rvcix7Y29sczp0LHJvd3M6ZyxvcHRzOmJ9KSxlKX0pLHQoImNlbGxzKCkubm9kZXMoKSIsImNlbGwoKS5ub2RlKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNlbGwiLGZ1bmN0aW9uKHQsZSxuKXt0PXQuYW9EYXRhW2VdO3JldHVybiB0JiZ0LmFuQ2VsbHM/dC5hbkNlbGxzW25dOkh9LDEpfSksZSgiY2VsbHMoKS5kYXRhKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNlbGwiLGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gUyh0LGUsbil9LDEpfSksdCgiY2VsbHMoKS5jYWNoZSgpIiwiY2VsbCgpLmNhY2hlKCkiLGZ1bmN0aW9uKGEpe3JldHVybiBhPSJzZWFyY2giPT09YT8iX2FGaWx0ZXJEYXRhIjoiX2FTb3J0RGF0YSIsdGhpcy5pdGVyYXRvcigiY2VsbCIsZnVuY3Rpb24odCxlLG4pe3JldHVybiB0LmFvRGF0YVtlXVthXVtuXX0sMSl9KSx0KCJjZWxscygpLnJlbmRlcigpIiwiY2VsbCgpLnJlbmRlcigpIixmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY2VsbCIsZnVuY3Rpb24odCxlLG4pe3JldHVybiBTKHQsZSxuLGEpfSwxKX0pLHQoImNlbGxzKCkuaW5kZXhlcygpIiwiY2VsbCgpLmluZGV4KCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNlbGwiLGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm57cm93OmUsY29sdW1uOm4sY29sdW1uVmlzaWJsZTpvdCh0LG4pfX0sMSl9KSx0KCJjZWxscygpLmludmFsaWRhdGUoKSIsImNlbGwoKS5pbnZhbGlkYXRlKCkiLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjZWxsIixmdW5jdGlvbih0LGUsbil7YnQodCxlLGEsbil9KX0pLGUoImNlbGwoKSIsZnVuY3Rpb24odCxlLG4pe3JldHVybiBDZSh0aGlzLmNlbGxzKHQsZSxuKSl9KSxlKCJjZWxsKCkuZGF0YSgpIixmdW5jdGlvbih0KXt2YXIgZT10aGlzLmNvbnRleHQsbj10aGlzWzBdO3JldHVybiB0PT09SD9lLmxlbmd0aCYmbi5sZW5ndGg/UyhlWzBdLG5bMF0ucm93LG5bMF0uY29sdW1uKTpIOihjdChlWzBdLG5bMF0ucm93LG5bMF0uY29sdW1uLHQpLGJ0KGVbMF0sblswXS5yb3csImRhdGEiLG5bMF0uY29sdW1uKSx0aGlzKX0pLGUoIm9yZGVyKCkiLGZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5jb250ZXh0O3JldHVybiBlPT09SD8wIT09bi5sZW5ndGg/blswXS5hYVNvcnRpbmc6SDooIm51bWJlciI9PXR5cGVvZiBlP2U9W1tlLHRdXTplLmxlbmd0aCYmIUFycmF5LmlzQXJyYXkoZVswXSkmJihlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpLHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbih0KXt0LmFhU29ydGluZz1lLnNsaWNlKCl9KSl9KSxlKCJvcmRlci5saXN0ZW5lcigpIixmdW5jdGlvbihlLG4sYSl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbih0KXt1ZSh0LGUsbixhKX0pfSksZSgib3JkZXIuZml4ZWQoKSIsZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIGU/dGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKHQpe3QuYWFTb3J0aW5nRml4ZWQ9UC5leHRlbmQoITAse30sZSl9KToodD0odD10aGlzLmNvbnRleHQpLmxlbmd0aD90WzBdLmFhU29ydGluZ0ZpeGVkOkgsQXJyYXkuaXNBcnJheSh0KT97cHJlOnR9OnQpfSksZShbImNvbHVtbnMoKS5vcmRlcigpIiwiY29sdW1uKCkub3JkZXIoKSJdLGZ1bmN0aW9uKGEpe3ZhciByPXRoaXM7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbih0LGUpe3ZhciBuPVtdO1AuZWFjaChyW2VdLGZ1bmN0aW9uKHQsZSl7bi5wdXNoKFtlLGFdKX0pLHQuYWFTb3J0aW5nPW59KX0pLGUoInNlYXJjaCgpIixmdW5jdGlvbihlLG4sYSxyKXt2YXIgdD10aGlzLmNvbnRleHQ7cmV0dXJuIGU9PT1IPzAhPT10Lmxlbmd0aD90WzBdLm9QcmV2aW91c1NlYXJjaC5zU2VhcmNoOkg6dGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKHQpe3Qub0ZlYXR1cmVzLmJGaWx0ZXImJlJ0KHQsUC5leHRlbmQoe30sdC5vUHJldmlvdXNTZWFyY2gse3NTZWFyY2g6ZSsiIixiUmVnZXg6bnVsbCE9PW4mJm4sYlNtYXJ0Om51bGw9PT1hfHxhLGJDYXNlSW5zZW5zaXRpdmU6bnVsbD09PXJ8fHJ9KSwxKX0pfSksdCgiY29sdW1ucygpLnNlYXJjaCgpIiwiY29sdW1uKCkuc2VhcmNoKCkiLGZ1bmN0aW9uKGEscixvLGkpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4iLGZ1bmN0aW9uKHQsZSl7dmFyIG49dC5hb1ByZVNlYXJjaENvbHM7aWYoYT09PUgpcmV0dXJuIG5bZV0uc1NlYXJjaDt0Lm9GZWF0dXJlcy5iRmlsdGVyJiYoUC5leHRlbmQobltlXSx7c1NlYXJjaDphKyIiLGJSZWdleDpudWxsIT09ciYmcixiU21hcnQ6bnVsbD09PW98fG8sYkNhc2VJbnNlbnNpdGl2ZTpudWxsPT09aXx8aX0pLFJ0KHQsdC5vUHJldmlvdXNTZWFyY2gsMSkpfSl9KSxlKCJzdGF0ZSgpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRleHQubGVuZ3RoP3RoaXMuY29udGV4dFswXS5vU2F2ZWRTdGF0ZTpudWxsfSksZSgic3RhdGUuY2xlYXIoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKHQpe3QuZm5TdGF0ZVNhdmVDYWxsYmFjay5jYWxsKHQub0luc3RhbmNlLHQse30pfSl9KSxlKCJzdGF0ZS5sb2FkZWQoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZXh0Lmxlbmd0aD90aGlzLmNvbnRleHRbMF0ub0xvYWRlZFN0YXRlOm51bGx9KSxlKCJzdGF0ZS5zYXZlKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbih0KXtkZSh0KX0pfSksdy51c2U9ZnVuY3Rpb24odCxlKXsibGliIj09PWV8fHQuZm4/UD10OiJ3aW4iPT1lfHx0LmRvY3VtZW50P3Y9KGo9dCkuZG9jdW1lbnQ6ImRhdGV0aW1lIiE9PWUmJiJEYXRlVGltZSIhPT10LnR5cGV8fCh3LkRhdGVUaW1lPXQpfSx3LmZhY3Rvcnk9ZnVuY3Rpb24odCxlKXt2YXIgbj0hMTtyZXR1cm4gdCYmdC5kb2N1bWVudCYmKHY9KGo9dCkuZG9jdW1lbnQpLGUmJmUuZm4mJmUuZm4uanF1ZXJ5JiYoUD1lLG49ITApLG59LHcudmVyc2lvbkNoZWNrPXcuZm5WZXJzaW9uQ2hlY2s9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG4sYT13LnZlcnNpb24uc3BsaXQoIi4iKSxyPXQuc3BsaXQoIi4iKSxvPTAsaT1yLmxlbmd0aDtvPGk7bysrKWlmKChlPXBhcnNlSW50KGFbb10sMTApfHwwKSE9PShuPXBhcnNlSW50KHJbb10sMTApfHwwKSlyZXR1cm4gbjxlO3JldHVybiEwfSx3LmlzRGF0YVRhYmxlPXcuZm5Jc0RhdGFUYWJsZT1mdW5jdGlvbih0KXt2YXIgcj1QKHQpLmdldCgwKSxvPSExO3JldHVybiB0IGluc3RhbmNlb2Ygdy5BcGl8fChQLmVhY2gody5zZXR0aW5ncyxmdW5jdGlvbih0LGUpe3ZhciBuPWUublNjcm9sbEhlYWQ/UCgidGFibGUiLGUublNjcm9sbEhlYWQpWzBdOm51bGwsYT1lLm5TY3JvbGxGb290P1AoInRhYmxlIixlLm5TY3JvbGxGb290KVswXTpudWxsO2UublRhYmxlIT09ciYmbiE9PXImJmEhPT1yfHwobz0hMCl9KSxvKX0sdy50YWJsZXM9dy5mblRhYmxlcz1mdW5jdGlvbihlKXt2YXIgdD0hMSxuPShQLmlzUGxhaW5PYmplY3QoZSkmJih0PWUuYXBpLGU9ZS52aXNpYmxlKSxQLm1hcCh3LnNldHRpbmdzLGZ1bmN0aW9uKHQpe2lmKCFlfHxQKHQublRhYmxlKS5pcygiOnZpc2libGUiKSlyZXR1cm4gdC5uVGFibGV9KSk7cmV0dXJuIHQ/bmV3IEIobik6bn0sdy5jYW1lbFRvSHVuZ2FyaWFuPUMsZSgiJCgpIixmdW5jdGlvbih0LGUpe2U9dGhpcy5yb3dzKGUpLm5vZGVzKCksZT1QKGUpO3JldHVybiBQKFtdLmNvbmNhdChlLmZpbHRlcih0KS50b0FycmF5KCksZS5maW5kKHQpLnRvQXJyYXkoKSkpfSksUC5lYWNoKFsib24iLCJvbmUiLCJvZmYiXSxmdW5jdGlvbih0LG4pe2UobisiKCkiLGZ1bmN0aW9uKCl7dmFyIHQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSxlPSh0WzBdPVAubWFwKHRbMF0uc3BsaXQoL1xzLyksZnVuY3Rpb24odCl7cmV0dXJuIHQubWF0Y2goL1wuZHRcYi8pP3Q6dCsiLmR0In0pLmpvaW4oIiAiKSxQKHRoaXMudGFibGVzKCkubm9kZXMoKSkpO3JldHVybiBlW25dLmFwcGx5KGUsdCksdGhpc30pfSksZSgiY2xlYXIoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKHQpe3B0KHQpfSl9KSxlKCJzZXR0aW5ncygpIixmdW5jdGlvbigpe3JldHVybiBuZXcgQih0aGlzLmNvbnRleHQsdGhpcy5jb250ZXh0KX0pLGUoImluaXQoKSIsZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnRleHQ7cmV0dXJuIHQubGVuZ3RoP3RbMF0ub0luaXQ6bnVsbH0pLGUoImRhdGEoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKHQpe3JldHVybiBOKHQuYW9EYXRhLCJfYURhdGEiKX0pLmZsYXR0ZW4oKX0pLGUoImRlc3Ryb3koKSIsZnVuY3Rpb24oYyl7cmV0dXJuIGM9Y3x8ITEsdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGUpe3ZhciBuLHQ9ZS5vQ2xhc3NlcyxhPWUublRhYmxlLHI9ZS5uVEJvZHksbz1lLm5USGVhZCxpPWUublRGb290LGw9UChhKSxyPVAocikscz1QKGUublRhYmxlV3JhcHBlciksdT1QLm1hcChlLmFvRGF0YSxmdW5jdGlvbih0KXtyZXR1cm4gdC5uVHJ9KSxpPShlLmJEZXN0cm95aW5nPSEwLFIoZSwiYW9EZXN0cm95Q2FsbGJhY2siLCJkZXN0cm95IixbZV0pLGN8fG5ldyBCKGUpLmNvbHVtbnMoKS52aXNpYmxlKCEwKSxzLm9mZigiLkRUIikuZmluZCgiOm5vdCh0Ym9keSAqKSIpLm9mZigiLkRUIiksUChqKS5vZmYoIi5EVC0iK2Uuc0luc3RhbmNlKSxhIT1vLnBhcmVudE5vZGUmJihsLmNoaWxkcmVuKCJ0aGVhZCIpLmRldGFjaCgpLGwuYXBwZW5kKG8pKSxpJiZhIT1pLnBhcmVudE5vZGUmJihsLmNoaWxkcmVuKCJ0Zm9vdCIpLmRldGFjaCgpLGwuYXBwZW5kKGkpKSxlLmFhU29ydGluZz1bXSxlLmFhU29ydGluZ0ZpeGVkPVtdLGNlKGUpLFAodSkucmVtb3ZlQ2xhc3MoZS5hc1N0cmlwZUNsYXNzZXMuam9pbigiICIpKSxQKCJ0aCwgdGQiLG8pLnJlbW92ZUNsYXNzKHQuc1NvcnRhYmxlKyIgIit0LnNTb3J0YWJsZUFzYysiICIrdC5zU29ydGFibGVEZXNjKyIgIit0LnNTb3J0YWJsZU5vbmUpLHIuY2hpbGRyZW4oKS5kZXRhY2goKSxyLmFwcGVuZCh1KSxlLm5UYWJsZVdyYXBwZXIucGFyZW50Tm9kZSksbz1jPyJyZW1vdmUiOiJkZXRhY2giLHU9KGxbb10oKSxzW29dKCksIWMmJmkmJihpLmluc2VydEJlZm9yZShhLGUublRhYmxlUmVpbnNlcnRCZWZvcmUpLGwuY3NzKCJ3aWR0aCIsZS5zRGVzdHJveVdpZHRoKS5yZW1vdmVDbGFzcyh0LnNUYWJsZSksbj1lLmFzRGVzdHJveVN0cmlwZXMubGVuZ3RoKSYmci5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24odCl7UCh0aGlzKS5hZGRDbGFzcyhlLmFzRGVzdHJveVN0cmlwZXNbdCVuXSl9KSxQLmluQXJyYXkoZSx3LnNldHRpbmdzKSk7LTEhPT11JiZ3LnNldHRpbmdzLnNwbGljZSh1LDEpfSl9KSxQLmVhY2goWyJjb2x1bW4iLCJyb3ciLCJjZWxsIl0sZnVuY3Rpb24odCxzKXtlKHMrInMoKS5ldmVyeSgpIixmdW5jdGlvbihvKXt2YXIgaT10aGlzLnNlbGVjdG9yLm9wdHMsbD10aGlzO3JldHVybiB0aGlzLml0ZXJhdG9yKHMsZnVuY3Rpb24odCxlLG4sYSxyKXtvLmNhbGwobFtzXShlLCJjZWxsIj09PXM/bjppLCJjZWxsIj09PXM/aTpIKSxlLG4sYSxyKX0pfSl9KSxlKCJpMThuKCkiLGZ1bmN0aW9uKHQsZSxuKXt2YXIgYT10aGlzLmNvbnRleHRbMF0sdD1BKHQpKGEub0xhbmd1YWdlKTtyZXR1cm4gdD09PUgmJih0PWUpLCJzdHJpbmciPT10eXBlb2YodD1uIT09SCYmUC5pc1BsYWluT2JqZWN0KHQpP3Rbbl0hPT1IP3Rbbl06dC5fOnQpP3QucmVwbGFjZSgiJWQiLG4pOnR9KSx3LnZlcnNpb249IjEuMTMuNiIsdy5zZXR0aW5ncz1bXSx3Lm1vZGVscz17fSx3Lm1vZGVscy5vU2VhcmNoPXtiQ2FzZUluc2Vuc2l0aXZlOiEwLHNTZWFyY2g6IiIsYlJlZ2V4OiExLGJTbWFydDohMCxyZXR1cm46ITF9LHcubW9kZWxzLm9Sb3c9e25UcjpudWxsLGFuQ2VsbHM6bnVsbCxfYURhdGE6W10sX2FTb3J0RGF0YTpudWxsLF9hRmlsdGVyRGF0YTpudWxsLF9zRmlsdGVyUm93Om51bGwsX3NSb3dTdHJpcGU6IiIsc3JjOm51bGwsaWR4Oi0xfSx3Lm1vZGVscy5vQ29sdW1uPXtpZHg6bnVsbCxhRGF0YVNvcnQ6bnVsbCxhc1NvcnRpbmc6bnVsbCxiU2VhcmNoYWJsZTpudWxsLGJTb3J0YWJsZTpudWxsLGJWaXNpYmxlOm51bGwsX3NNYW51YWxUeXBlOm51bGwsX2JBdHRyU3JjOiExLGZuQ3JlYXRlZENlbGw6bnVsbCxmbkdldERhdGE6bnVsbCxmblNldERhdGE6bnVsbCxtRGF0YTpudWxsLG1SZW5kZXI6bnVsbCxuVGg6bnVsbCxuVGY6bnVsbCxzQ2xhc3M6bnVsbCxzQ29udGVudFBhZGRpbmc6bnVsbCxzRGVmYXVsdENvbnRlbnQ6bnVsbCxzTmFtZTpudWxsLHNTb3J0RGF0YVR5cGU6InN0ZCIsc1NvcnRpbmdDbGFzczpudWxsLHNTb3J0aW5nQ2xhc3NKVUk6bnVsbCxzVGl0bGU6bnVsbCxzVHlwZTpudWxsLHNXaWR0aDpudWxsLHNXaWR0aE9yaWc6bnVsbH0sdy5kZWZhdWx0cz17YWFEYXRhOm51bGwsYWFTb3J0aW5nOltbMCwiYXNjIl1dLGFhU29ydGluZ0ZpeGVkOltdLGFqYXg6bnVsbCxhTGVuZ3RoTWVudTpbMTAsMjUsNTAsMTAwXSxhb0NvbHVtbnM6bnVsbCxhb0NvbHVtbkRlZnM6bnVsbCxhb1NlYXJjaENvbHM6W10sYXNTdHJpcGVDbGFzc2VzOm51bGwsYkF1dG9XaWR0aDohMCxiRGVmZXJSZW5kZXI6ITEsYkRlc3Ryb3k6ITEsYkZpbHRlcjohMCxiSW5mbzohMCxiTGVuZ3RoQ2hhbmdlOiEwLGJQYWdpbmF0ZTohMCxiUHJvY2Vzc2luZzohMSxiUmV0cmlldmU6ITEsYlNjcm9sbENvbGxhcHNlOiExLGJTZXJ2ZXJTaWRlOiExLGJTb3J0OiEwLGJTb3J0TXVsdGk6ITAsYlNvcnRDZWxsc1RvcDohMSxiU29ydENsYXNzZXM6ITAsYlN0YXRlU2F2ZTohMSxmbkNyZWF0ZWRSb3c6bnVsbCxmbkRyYXdDYWxsYmFjazpudWxsLGZuRm9vdGVyQ2FsbGJhY2s6bnVsbCxmbkZvcm1hdE51bWJlcjpmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZygpLnJlcGxhY2UoL1xCKD89KFxkezN9KSsoPyFcZCkpL2csdGhpcy5vTGFuZ3VhZ2Uuc1Rob3VzYW5kcyl9LGZuSGVhZGVyQ2FsbGJhY2s6bnVsbCxmbkluZm9DYWxsYmFjazpudWxsLGZuSW5pdENvbXBsZXRlOm51bGwsZm5QcmVEcmF3Q2FsbGJhY2s6bnVsbCxmblJvd0NhbGxiYWNrOm51bGwsZm5TZXJ2ZXJEYXRhOm51bGwsZm5TZXJ2ZXJQYXJhbXM6bnVsbCxmblN0YXRlTG9hZENhbGxiYWNrOmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gSlNPTi5wYXJzZSgoLTE9PT10LmlTdGF0ZUR1cmF0aW9uP3Nlc3Npb25TdG9yYWdlOmxvY2FsU3RvcmFnZSkuZ2V0SXRlbSgiRGF0YVRhYmxlc18iK3Quc0luc3RhbmNlKyJfIitsb2NhdGlvbi5wYXRobmFtZSkpfWNhdGNoKHQpe3JldHVybnt9fX0sZm5TdGF0ZUxvYWRQYXJhbXM6bnVsbCxmblN0YXRlTG9hZGVkOm51bGwsZm5TdGF0ZVNhdmVDYWxsYmFjazpmdW5jdGlvbih0LGUpe3RyeXsoLTE9PT10LmlTdGF0ZUR1cmF0aW9uP3Nlc3Npb25TdG9yYWdlOmxvY2FsU3RvcmFnZSkuc2V0SXRlbSgiRGF0YVRhYmxlc18iK3Quc0luc3RhbmNlKyJfIitsb2NhdGlvbi5wYXRobmFtZSxKU09OLnN0cmluZ2lmeShlKSl9Y2F0Y2godCl7fX0sZm5TdGF0ZVNhdmVQYXJhbXM6bnVsbCxpU3RhdGVEdXJhdGlvbjo3MjAwLGlEZWZlckxvYWRpbmc6bnVsbCxpRGlzcGxheUxlbmd0aDoxMCxpRGlzcGxheVN0YXJ0OjAsaVRhYkluZGV4OjAsb0NsYXNzZXM6e30sb0xhbmd1YWdlOntvQXJpYTp7c1NvcnRBc2NlbmRpbmc6IjogYWN0aXZhdGUgdG8gc29ydCBjb2x1bW4gYXNjZW5kaW5nIixzU29ydERlc2NlbmRpbmc6IjogYWN0aXZhdGUgdG8gc29ydCBjb2x1bW4gZGVzY2VuZGluZyJ9LG9QYWdpbmF0ZTp7c0ZpcnN0OiJGaXJzdCIsc0xhc3Q6Ikxhc3QiLHNOZXh0OiJOZXh0IixzUHJldmlvdXM6IlByZXZpb3VzIn0sc0VtcHR5VGFibGU6Ik5vIGRhdGEgYXZhaWxhYmxlIGluIHRhYmxlIixzSW5mbzoiU2hvd2luZyBfU1RBUlRfIHRvIF9FTkRfIG9mIF9UT1RBTF8gZW50cmllcyIsc0luZm9FbXB0eToiU2hvd2luZyAwIHRvIDAgb2YgMCBlbnRyaWVzIixzSW5mb0ZpbHRlcmVkOiIoZmlsdGVyZWQgZnJvbSBfTUFYXyB0b3RhbCBlbnRyaWVzKSIsc0luZm9Qb3N0Rml4OiIiLHNEZWNpbWFsOiIiLHNUaG91c2FuZHM6IiwiLHNMZW5ndGhNZW51OiJTaG93IF9NRU5VXyBlbnRyaWVzIixzTG9hZGluZ1JlY29yZHM6IkxvYWRpbmcuLi4iLHNQcm9jZXNzaW5nOiIiLHNTZWFyY2g6IlNlYXJjaDoiLHNTZWFyY2hQbGFjZWhvbGRlcjoiIixzVXJsOiIiLHNaZXJvUmVjb3JkczoiTm8gbWF0Y2hpbmcgcmVjb3JkcyBmb3VuZCJ9LG9TZWFyY2g6UC5leHRlbmQoe30sdy5tb2RlbHMub1NlYXJjaCksc0FqYXhEYXRhUHJvcDoiZGF0YSIsc0FqYXhTb3VyY2U6bnVsbCxzRG9tOiJsZnJ0aXAiLHNlYXJjaERlbGF5Om51bGwsc1BhZ2luYXRpb25UeXBlOiJzaW1wbGVfbnVtYmVycyIsc1Njcm9sbFg6IiIsc1Njcm9sbFhJbm5lcjoiIixzU2Nyb2xsWToiIixzU2VydmVyTWV0aG9kOiJHRVQiLHJlbmRlcmVyOm51bGwscm93SWQ6IkRUX1Jvd0lkIn0saSh3LmRlZmF1bHRzKSx3LmRlZmF1bHRzLmNvbHVtbj17YURhdGFTb3J0Om51bGwsaURhdGFTb3J0Oi0xLGFzU29ydGluZzpbImFzYyIsImRlc2MiXSxiU2VhcmNoYWJsZTohMCxiU29ydGFibGU6ITAsYlZpc2libGU6ITAsZm5DcmVhdGVkQ2VsbDpudWxsLG1EYXRhOm51bGwsbVJlbmRlcjpudWxsLHNDZWxsVHlwZToidGQiLHNDbGFzczoiIixzQ29udGVudFBhZGRpbmc6IiIsc0RlZmF1bHRDb250ZW50Om51bGwsc05hbWU6IiIsc1NvcnREYXRhVHlwZToic3RkIixzVGl0bGU6bnVsbCxzVHlwZTpudWxsLHNXaWR0aDpudWxsfSxpKHcuZGVmYXVsdHMuY29sdW1uKSx3Lm1vZGVscy5vU2V0dGluZ3M9e29GZWF0dXJlczp7YkF1dG9XaWR0aDpudWxsLGJEZWZlclJlbmRlcjpudWxsLGJGaWx0ZXI6bnVsbCxiSW5mbzpudWxsLGJMZW5ndGhDaGFuZ2U6bnVsbCxiUGFnaW5hdGU6bnVsbCxiUHJvY2Vzc2luZzpudWxsLGJTZXJ2ZXJTaWRlOm51bGwsYlNvcnQ6bnVsbCxiU29ydE11bHRpOm51bGwsYlNvcnRDbGFzc2VzOm51bGwsYlN0YXRlU2F2ZTpudWxsfSxvU2Nyb2xsOntiQ29sbGFwc2U6bnVsbCxpQmFyV2lkdGg6MCxzWDpudWxsLHNYSW5uZXI6bnVsbCxzWTpudWxsfSxvTGFuZ3VhZ2U6e2ZuSW5mb0NhbGxiYWNrOm51bGx9LG9Ccm93c2VyOntiU2Nyb2xsT3ZlcnNpemU6ITEsYlNjcm9sbGJhckxlZnQ6ITEsYkJvdW5kaW5nOiExLGJhcldpZHRoOjB9LGFqYXg6bnVsbCxhYW5GZWF0dXJlczpbXSxhb0RhdGE6W10sYWlEaXNwbGF5OltdLGFpRGlzcGxheU1hc3RlcjpbXSxhSWRzOnt9LGFvQ29sdW1uczpbXSxhb0hlYWRlcjpbXSxhb0Zvb3RlcjpbXSxvUHJldmlvdXNTZWFyY2g6e30sYW9QcmVTZWFyY2hDb2xzOltdLGFhU29ydGluZzpudWxsLGFhU29ydGluZ0ZpeGVkOltdLGFzU3RyaXBlQ2xhc3NlczpudWxsLGFzRGVzdHJveVN0cmlwZXM6W10sc0Rlc3Ryb3lXaWR0aDowLGFvUm93Q2FsbGJhY2s6W10sYW9IZWFkZXJDYWxsYmFjazpbXSxhb0Zvb3RlckNhbGxiYWNrOltdLGFvRHJhd0NhbGxiYWNrOltdLGFvUm93Q3JlYXRlZENhbGxiYWNrOltdLGFvUHJlRHJhd0NhbGxiYWNrOltdLGFvSW5pdENvbXBsZXRlOltdLGFvU3RhdGVTYXZlUGFyYW1zOltdLGFvU3RhdGVMb2FkUGFyYW1zOltdLGFvU3RhdGVMb2FkZWQ6W10sc1RhYmxlSWQ6IiIsblRhYmxlOm51bGwsblRIZWFkOm51bGwsblRGb290Om51bGwsblRCb2R5Om51bGwsblRhYmxlV3JhcHBlcjpudWxsLGJEZWZlckxvYWRpbmc6ITEsYkluaXRpYWxpc2VkOiExLGFvT3BlblJvd3M6W10sc0RvbTpudWxsLHNlYXJjaERlbGF5Om51bGwsc1BhZ2luYXRpb25UeXBlOiJ0d29fYnV0dG9uIixpU3RhdGVEdXJhdGlvbjowLGFvU3RhdGVTYXZlOltdLGFvU3RhdGVMb2FkOltdLG9TYXZlZFN0YXRlOm51bGwsb0xvYWRlZFN0YXRlOm51bGwsc0FqYXhTb3VyY2U6bnVsbCxzQWpheERhdGFQcm9wOm51bGwsanFYSFI6bnVsbCxqc29uOkgsb0FqYXhEYXRhOkgsZm5TZXJ2ZXJEYXRhOm51bGwsYW9TZXJ2ZXJQYXJhbXM6W10sc1NlcnZlck1ldGhvZDpudWxsLGZuRm9ybWF0TnVtYmVyOm51bGwsYUxlbmd0aE1lbnU6bnVsbCxpRHJhdzowLGJEcmF3aW5nOiExLGlEcmF3RXJyb3I6LTEsX2lEaXNwbGF5TGVuZ3RoOjEwLF9pRGlzcGxheVN0YXJ0OjAsX2lSZWNvcmRzVG90YWw6MCxfaVJlY29yZHNEaXNwbGF5OjAsb0NsYXNzZXM6e30sYkZpbHRlcmVkOiExLGJTb3J0ZWQ6ITEsYlNvcnRDZWxsc1RvcDpudWxsLG9Jbml0Om51bGwsYW9EZXN0cm95Q2FsbGJhY2s6W10sZm5SZWNvcmRzVG90YWw6ZnVuY3Rpb24oKXtyZXR1cm4ic3NwIj09RSh0aGlzKT8rdGhpcy5faVJlY29yZHNUb3RhbDp0aGlzLmFpRGlzcGxheU1hc3Rlci5sZW5ndGh9LGZuUmVjb3Jkc0Rpc3BsYXk6ZnVuY3Rpb24oKXtyZXR1cm4ic3NwIj09RSh0aGlzKT8rdGhpcy5faVJlY29yZHNEaXNwbGF5OnRoaXMuYWlEaXNwbGF5Lmxlbmd0aH0sZm5EaXNwbGF5RW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faURpc3BsYXlMZW5ndGgsZT10aGlzLl9pRGlzcGxheVN0YXJ0LG49ZSt0LGE9dGhpcy5haURpc3BsYXkubGVuZ3RoLHI9dGhpcy5vRmVhdHVyZXMsbz1yLmJQYWdpbmF0ZTtyZXR1cm4gci5iU2VydmVyU2lkZT8hMT09PW98fC0xPT09dD9lK2E6TWF0aC5taW4oZSt0LHRoaXMuX2lSZWNvcmRzRGlzcGxheSk6IW98fGE8bnx8LTE9PT10P2E6bn0sb0luc3RhbmNlOm51bGwsc0luc3RhbmNlOm51bGwsaVRhYkluZGV4OjAsblNjcm9sbEhlYWQ6bnVsbCxuU2Nyb2xsRm9vdDpudWxsLGFMYXN0U29ydDpbXSxvUGx1Z2luczp7fSxyb3dJZEZuOm51bGwscm93SWQ6bnVsbH0sdy5leHQ9cD17YnV0dG9uczp7fSxjbGFzc2VzOnt9LGJ1aWxkZXI6Ii1zb3VyY2UtIixlcnJNb2RlOiJhbGVydCIsZmVhdHVyZTpbXSxzZWFyY2g6W10sc2VsZWN0b3I6e2NlbGw6W10sY29sdW1uOltdLHJvdzpbXX0saW50ZXJuYWw6e30sbGVnYWN5OnthamF4Om51bGx9LHBhZ2VyOnt9LHJlbmRlcmVyOntwYWdlQnV0dG9uOnt9LGhlYWRlcjp7fX0sb3JkZXI6e30sdHlwZTp7ZGV0ZWN0OltdLHNlYXJjaDp7fSxvcmRlcjp7fX0sX3VuaXF1ZTowLGZuVmVyc2lvbkNoZWNrOncuZm5WZXJzaW9uQ2hlY2ssaUFwaUluZGV4OjAsb0pVSUNsYXNzZXM6e30sc1ZlcnNpb246dy52ZXJzaW9ufSxQLmV4dGVuZChwLHthZm5GaWx0ZXJpbmc6cC5zZWFyY2gsYVR5cGVzOnAudHlwZS5kZXRlY3Qsb2ZuU2VhcmNoOnAudHlwZS5zZWFyY2gsb1NvcnQ6cC50eXBlLm9yZGVyLGFmblNvcnREYXRhOnAub3JkZXIsYW9GZWF0dXJlczpwLmZlYXR1cmUsb0FwaTpwLmludGVybmFsLG9TdGRDbGFzc2VzOnAuY2xhc3NlcyxvUGFnaW5hdGlvbjpwLnBhZ2VyfSksUC5leHRlbmQody5leHQuY2xhc3Nlcyx7c1RhYmxlOiJkYXRhVGFibGUiLHNOb0Zvb3Rlcjoibm8tZm9vdGVyIixzUGFnZUJ1dHRvbjoicGFnaW5hdGVfYnV0dG9uIixzUGFnZUJ1dHRvbkFjdGl2ZToiY3VycmVudCIsc1BhZ2VCdXR0b25EaXNhYmxlZDoiZGlzYWJsZWQiLHNTdHJpcGVPZGQ6Im9kZCIsc1N0cmlwZUV2ZW46ImV2ZW4iLHNSb3dFbXB0eToiZGF0YVRhYmxlc19lbXB0eSIsc1dyYXBwZXI6ImRhdGFUYWJsZXNfd3JhcHBlciIsc0ZpbHRlcjoiZGF0YVRhYmxlc19maWx0ZXIiLHNJbmZvOiJkYXRhVGFibGVzX2luZm8iLHNQYWdpbmc6ImRhdGFUYWJsZXNfcGFnaW5hdGUgcGFnaW5nXyIsc0xlbmd0aDoiZGF0YVRhYmxlc19sZW5ndGgiLHNQcm9jZXNzaW5nOiJkYXRhVGFibGVzX3Byb2Nlc3NpbmciLHNTb3J0QXNjOiJzb3J0aW5nX2FzYyIsc1NvcnREZXNjOiJzb3J0aW5nX2Rlc2MiLHNTb3J0YWJsZToic29ydGluZyIsc1NvcnRhYmxlQXNjOiJzb3J0aW5nX2Rlc2NfZGlzYWJsZWQiLHNTb3J0YWJsZURlc2M6InNvcnRpbmdfYXNjX2Rpc2FibGVkIixzU29ydGFibGVOb25lOiJzb3J0aW5nX2Rpc2FibGVkIixzU29ydENvbHVtbjoic29ydGluZ18iLHNGaWx0ZXJJbnB1dDoiIixzTGVuZ3RoU2VsZWN0OiIiLHNTY3JvbGxXcmFwcGVyOiJkYXRhVGFibGVzX3Njcm9sbCIsc1Njcm9sbEhlYWQ6ImRhdGFUYWJsZXNfc2Nyb2xsSGVhZCIsc1Njcm9sbEhlYWRJbm5lcjoiZGF0YVRhYmxlc19zY3JvbGxIZWFkSW5uZXIiLHNTY3JvbGxCb2R5OiJkYXRhVGFibGVzX3Njcm9sbEJvZHkiLHNTY3JvbGxGb290OiJkYXRhVGFibGVzX3Njcm9sbEZvb3QiLHNTY3JvbGxGb290SW5uZXI6ImRhdGFUYWJsZXNfc2Nyb2xsRm9vdElubmVyIixzSGVhZGVyVEg6IiIsc0Zvb3RlclRIOiIiLHNTb3J0SlVJQXNjOiIiLHNTb3J0SlVJRGVzYzoiIixzU29ydEpVSToiIixzU29ydEpVSUFzY0FsbG93ZWQ6IiIsc1NvcnRKVUlEZXNjQWxsb3dlZDoiIixzU29ydEpVSVdyYXBwZXI6IiIsc1NvcnRJY29uOiIiLHNKVUlIZWFkZXI6IiIsc0pVSUZvb3RlcjoiIn0pLHcuZXh0LnBhZ2VyKTtmdW5jdGlvbiBPZSh0LGUpe3ZhciBuPVtdLGE9TmUubnVtYmVyc19sZW5ndGgscj1NYXRoLmZsb29yKGEvMik7cmV0dXJuIGU8PWE/bj1mKDAsZSk6dDw9cj8oKG49ZigwLGEtMikpLnB1c2goImVsbGlwc2lzIiksbi5wdXNoKGUtMSkpOigoZS0xLXI8PXQ/bj1mKGUtKGEtMiksZSk6KChuPWYodC1yKzIsdCtyLTEpKS5wdXNoKCJlbGxpcHNpcyIpLG4ucHVzaChlLTEpLG4pKS5zcGxpY2UoMCwwLCJlbGxpcHNpcyIpLG4uc3BsaWNlKDAsMCwwKSksbi5EVF9lbD0ic3BhbiIsbn1QLmV4dGVuZChOZSx7c2ltcGxlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuWyJwcmV2aW91cyIsIm5leHQiXX0sZnVsbDpmdW5jdGlvbih0LGUpe3JldHVyblsiZmlyc3QiLCJwcmV2aW91cyIsIm5leHQiLCJsYXN0Il19LG51bWJlcnM6ZnVuY3Rpb24odCxlKXtyZXR1cm5bT2UodCxlKV19LHNpbXBsZV9udW1iZXJzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuWyJwcmV2aW91cyIsT2UodCxlKSwibmV4dCJdfSxmdWxsX251bWJlcnM6ZnVuY3Rpb24odCxlKXtyZXR1cm5bImZpcnN0IiwicHJldmlvdXMiLE9lKHQsZSksIm5leHQiLCJsYXN0Il19LGZpcnN0X2xhc3RfbnVtYmVyczpmdW5jdGlvbih0LGUpe3JldHVyblsiZmlyc3QiLE9lKHQsZSksImxhc3QiXX0sX251bWJlcnM6T2UsbnVtYmVyc19sZW5ndGg6N30pLFAuZXh0ZW5kKCEwLHcuZXh0LnJlbmRlcmVyLHtwYWdlQnV0dG9uOntfOmZ1bmN0aW9uKHUsdCxjLGUsZixkKXtmdW5jdGlvbiBoKHQsZSl7Zm9yKHZhciBuLGE9Yi5zUGFnZUJ1dHRvbkRpc2FibGVkLHI9ZnVuY3Rpb24odCl7WXQodSx0LmRhdGEuYWN0aW9uLCEwKX0sbz0wLGk9ZS5sZW5ndGg7bzxpO28rKylpZihuPWVbb10sQXJyYXkuaXNBcnJheShuKSl7dmFyIGw9UCgiPCIrKG4uRFRfZWx8fCJkaXYiKSsiLz4iKS5hcHBlbmRUbyh0KTtoKGwsbil9ZWxzZXt2YXIgcz0hMTtzd2l0Y2gocD1udWxsLGc9bil7Y2FzZSJlbGxpcHNpcyI6dC5hcHBlbmQoJzxzcGFuIGNsYXNzPSJlbGxpcHNpcyI+JiN4MjAyNjs8L3NwYW4+Jyk7YnJlYWs7Y2FzZSJmaXJzdCI6cD1tLnNGaXJzdCwwPT09ZiYmKHM9ITApO2JyZWFrO2Nhc2UicHJldmlvdXMiOnA9bS5zUHJldmlvdXMsMD09PWYmJihzPSEwKTticmVhaztjYXNlIm5leHQiOnA9bS5zTmV4dCwwIT09ZCYmZiE9PWQtMXx8KHM9ITApO2JyZWFrO2Nhc2UibGFzdCI6cD1tLnNMYXN0LDAhPT1kJiZmIT09ZC0xfHwocz0hMCk7YnJlYWs7ZGVmYXVsdDpwPXUuZm5Gb3JtYXROdW1iZXIobisxKSxnPWY9PT1uP2Iuc1BhZ2VCdXR0b25BY3RpdmU6IiJ9bnVsbCE9PXAmJihsPXUub0luaXQucGFnaW5nVGFnfHwiYSIscyYmKGcrPSIgIithKSxtZShQKCI8IitsKyI+Iix7Y2xhc3M6Yi5zUGFnZUJ1dHRvbisiICIrZywiYXJpYS1jb250cm9scyI6dS5zVGFibGVJZCwiYXJpYS1kaXNhYmxlZCI6cz8idHJ1ZSI6bnVsbCwiYXJpYS1sYWJlbCI6U1tuXSxyb2xlOiJsaW5rIiwiYXJpYS1jdXJyZW50IjpnPT09Yi5zUGFnZUJ1dHRvbkFjdGl2ZT8icGFnZSI6bnVsbCwiZGF0YS1kdC1pZHgiOm4sdGFiaW5kZXg6cz8tMTp1LmlUYWJJbmRleCxpZDowPT09YyYmInN0cmluZyI9PXR5cGVvZiBuP3Uuc1RhYmxlSWQrIl8iK246bnVsbH0pLmh0bWwocCkuYXBwZW5kVG8odCkse2FjdGlvbjpufSxyKSl9fXZhciBwLGcsbixiPXUub0NsYXNzZXMsbT11Lm9MYW5ndWFnZS5vUGFnaW5hdGUsUz11Lm9MYW5ndWFnZS5vQXJpYS5wYWdpbmF0ZXx8e307dHJ5e249UCh0KS5maW5kKHYuYWN0aXZlRWxlbWVudCkuZGF0YSgiZHQtaWR4Iil9Y2F0Y2godCl7fWgoUCh0KS5lbXB0eSgpLGUpLG4hPT1IJiZQKHQpLmZpbmQoIltkYXRhLWR0LWlkeD0iK24rIl0iKS50cmlnZ2VyKCJmb2N1cyIpfX19KSxQLmV4dGVuZCh3LmV4dC50eXBlLmRldGVjdCxbZnVuY3Rpb24odCxlKXtlPWUub0xhbmd1YWdlLnNEZWNpbWFsO3JldHVybiBsKHQsZSk/Im51bSIrZTpudWxsfSxmdW5jdGlvbih0LGUpe3ZhciBuO3JldHVybighdHx8dCBpbnN0YW5jZW9mIERhdGV8fFgudGVzdCh0KSkmJihudWxsIT09KG49RGF0ZS5wYXJzZSh0KSkmJiFpc05hTihuKXx8aCh0KSk/ImRhdGUiOm51bGx9LGZ1bmN0aW9uKHQsZSl7ZT1lLm9MYW5ndWFnZS5zRGVjaW1hbDtyZXR1cm4gbCh0LGUsITApPyJudW0tZm10IitlOm51bGx9LGZ1bmN0aW9uKHQsZSl7ZT1lLm9MYW5ndWFnZS5zRGVjaW1hbDtyZXR1cm4gYSh0LGUpPyJodG1sLW51bSIrZTpudWxsfSxmdW5jdGlvbih0LGUpe2U9ZS5vTGFuZ3VhZ2Uuc0RlY2ltYWw7cmV0dXJuIGEodCxlLCEwKT8iaHRtbC1udW0tZm10IitlOm51bGx9LGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGgodCl8fCJzdHJpbmciPT10eXBlb2YgdCYmLTEhPT10LmluZGV4T2YoIjwiKT8iaHRtbCI6bnVsbH1dKSxQLmV4dGVuZCh3LmV4dC50eXBlLnNlYXJjaCx7aHRtbDpmdW5jdGlvbih0KXtyZXR1cm4gaCh0KT90OiJzdHJpbmciPT10eXBlb2YgdD90LnJlcGxhY2UoVSwiICIpLnJlcGxhY2UoViwiIik6IiJ9LHN0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4haCh0KSYmInN0cmluZyI9PXR5cGVvZiB0P3QucmVwbGFjZShVLCIgIik6dH19KTtmdW5jdGlvbiBrZSh0LGUsbixhKXt2YXIgcjtyZXR1cm4gMD09PXR8fHQmJiItIiE9PXQ/Im51bWJlciI9PShyPXR5cGVvZiB0KXx8ImJpZ2ludCI9PXI/dDorKHQ9KHQ9ZT8kKHQsZSk6dCkucmVwbGFjZSYmKG4mJih0PXQucmVwbGFjZShuLCIiKSksYSk/dC5yZXBsYWNlKGEsIiIpOnQpOi0xLzB9ZnVuY3Rpb24gTWUobil7UC5lYWNoKHtudW06ZnVuY3Rpb24odCl7cmV0dXJuIGtlKHQsbil9LCJudW0tZm10IjpmdW5jdGlvbih0KXtyZXR1cm4ga2UodCxuLHEpfSwiaHRtbC1udW0iOmZ1bmN0aW9uKHQpe3JldHVybiBrZSh0LG4sVil9LCJodG1sLW51bS1mbXQiOmZ1bmN0aW9uKHQpe3JldHVybiBrZSh0LG4sVixxKX19LGZ1bmN0aW9uKHQsZSl7cC50eXBlLm9yZGVyW3QrbisiLXByZSJdPWUsdC5tYXRjaCgvXmh0bWxcLS8pJiYocC50eXBlLnNlYXJjaFt0K25dPXAudHlwZS5zZWFyY2guaHRtbCl9KX1QLmV4dGVuZChwLnR5cGUub3JkZXIseyJkYXRlLXByZSI6ZnVuY3Rpb24odCl7dD1EYXRlLnBhcnNlKHQpO3JldHVybiBpc05hTih0KT8tMS8wOnR9LCJodG1sLXByZSI6ZnVuY3Rpb24odCl7cmV0dXJuIGgodCk/IiI6dC5yZXBsYWNlP3QucmVwbGFjZSgvPC4qPz4vZywiIikudG9Mb3dlckNhc2UoKTp0KyIifSwic3RyaW5nLXByZSI6ZnVuY3Rpb24odCl7cmV0dXJuIGgodCk/IiI6InN0cmluZyI9PXR5cGVvZiB0P3QudG9Mb3dlckNhc2UoKTp0LnRvU3RyaW5nP3QudG9TdHJpbmcoKToiIn0sInN0cmluZy1hc2MiOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ8ZT8tMTplPHQ/MTowfSwic3RyaW5nLWRlc2MiOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ8ZT8xOmU8dD8tMTowfX0pLE1lKCIiKSxQLmV4dGVuZCghMCx3LmV4dC5yZW5kZXJlcix7aGVhZGVyOntfOmZ1bmN0aW9uKHIsbyxpLGwpe1Aoci5uVGFibGUpLm9uKCJvcmRlci5kdC5EVCIsZnVuY3Rpb24odCxlLG4sYSl7cj09PWUmJihlPWkuaWR4LG8ucmVtb3ZlQ2xhc3MobC5zU29ydEFzYysiICIrbC5zU29ydERlc2MpLmFkZENsYXNzKCJhc2MiPT1hW2VdP2wuc1NvcnRBc2M6ImRlc2MiPT1hW2VdP2wuc1NvcnREZXNjOmkuc1NvcnRpbmdDbGFzcykpfSl9LGpxdWVyeXVpOmZ1bmN0aW9uKHIsbyxpLGwpe1AoIjxkaXYvPiIpLmFkZENsYXNzKGwuc1NvcnRKVUlXcmFwcGVyKS5hcHBlbmQoby5jb250ZW50cygpKS5hcHBlbmQoUCgiPHNwYW4vPiIpLmFkZENsYXNzKGwuc1NvcnRJY29uKyIgIitpLnNTb3J0aW5nQ2xhc3NKVUkpKS5hcHBlbmRUbyhvKSxQKHIublRhYmxlKS5vbigib3JkZXIuZHQuRFQiLGZ1bmN0aW9uKHQsZSxuLGEpe3I9PT1lJiYoZT1pLmlkeCxvLnJlbW92ZUNsYXNzKGwuc1NvcnRBc2MrIiAiK2wuc1NvcnREZXNjKS5hZGRDbGFzcygiYXNjIj09YVtlXT9sLnNTb3J0QXNjOiJkZXNjIj09YVtlXT9sLnNTb3J0RGVzYzppLnNTb3J0aW5nQ2xhc3MpLG8uZmluZCgic3Bhbi4iK2wuc1NvcnRJY29uKS5yZW1vdmVDbGFzcyhsLnNTb3J0SlVJQXNjKyIgIitsLnNTb3J0SlVJRGVzYysiICIrbC5zU29ydEpVSSsiICIrbC5zU29ydEpVSUFzY0FsbG93ZWQrIiAiK2wuc1NvcnRKVUlEZXNjQWxsb3dlZCkuYWRkQ2xhc3MoImFzYyI9PWFbZV0/bC5zU29ydEpVSUFzYzoiZGVzYyI9PWFbZV0/bC5zU29ydEpVSURlc2M6aS5zU29ydGluZ0NsYXNzSlVJKSl9KX19fSk7ZnVuY3Rpb24gV2UodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZih0PUFycmF5LmlzQXJyYXkodCk/dC5qb2luKCIsIik6dCk/dC5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKTp0fWZ1bmN0aW9uIEVlKHQsZSxuLGEscil7cmV0dXJuIGoubW9tZW50P3RbZV0ocik6ai5sdXhvbj90W25dKHIpOmE/dFthXShyKTp0fXZhciBCZT0hMTtmdW5jdGlvbiBVZSh0LGUsbil7dmFyIGE7aWYoai5tb21lbnQpe2lmKCEoYT1qLm1vbWVudC51dGModCxlLG4sITApKS5pc1ZhbGlkKCkpcmV0dXJuIG51bGx9ZWxzZSBpZihqLmx1eG9uKXtpZighKGE9ZSYmInN0cmluZyI9PXR5cGVvZiB0P2oubHV4b24uRGF0ZVRpbWUuZnJvbUZvcm1hdCh0LGUpOmoubHV4b24uRGF0ZVRpbWUuZnJvbUlTTyh0KSkuaXNWYWxpZClyZXR1cm4gbnVsbDthLnNldExvY2FsZShuKX1lbHNlIGU/KEJlfHxhbGVydCgiRGF0YVRhYmxlcyB3YXJuaW5nOiBGb3JtYXR0ZWQgZGF0ZSB3aXRob3V0IE1vbWVudC5qcyBvciBMdXhvbiAtIGh0dHBzOi8vZGF0YXRhYmxlcy5uZXQvdG4vMTciKSxCZT0hMCk6YT1uZXcgRGF0ZSh0KTtyZXR1cm4gYX1mdW5jdGlvbiBWZShzKXtyZXR1cm4gZnVuY3Rpb24oYSxyLG8saSl7MD09PWFyZ3VtZW50cy5sZW5ndGg/KG89ImVuIixhPXI9bnVsbCk6MT09PWFyZ3VtZW50cy5sZW5ndGg/KG89ImVuIixyPWEsYT1udWxsKToyPT09YXJndW1lbnRzLmxlbmd0aCYmKG89cixyPWEsYT1udWxsKTt2YXIgbD0iZGF0ZXRpbWUtIityO3JldHVybiB3LmV4dC50eXBlLm9yZGVyW2xdfHwody5leHQudHlwZS5kZXRlY3QudW5zaGlmdChmdW5jdGlvbih0KXtyZXR1cm4gdD09PWwmJmx9KSx3LmV4dC50eXBlLm9yZGVyW2wrIi1hc2MiXT1mdW5jdGlvbih0LGUpe3Q9dC52YWx1ZU9mKCksZT1lLnZhbHVlT2YoKTtyZXR1cm4gdD09PWU/MDp0PGU/LTE6MX0sdy5leHQudHlwZS5vcmRlcltsKyItZGVzYyJdPWZ1bmN0aW9uKHQsZSl7dD10LnZhbHVlT2YoKSxlPWUudmFsdWVPZigpO3JldHVybiB0PT09ZT8wOmU8dD8tMToxfSksZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gbnVsbCE9PXQmJnQhPT1IfHwodD0iLS1ub3ciPT09aT8obj1uZXcgRGF0ZSxuZXcgRGF0ZShEYXRlLlVUQyhuLmdldEZ1bGxZZWFyKCksbi5nZXRNb250aCgpLG4uZ2V0RGF0ZSgpLG4uZ2V0SG91cnMoKSxuLmdldE1pbnV0ZXMoKSxuLmdldFNlY29uZHMoKSkpKToiIiksInR5cGUiPT09ZT9sOiIiPT09dD8ic29ydCIhPT1lPyIiOlVlKCIwMDAwLTAxLTAxIDAwOjAwOjAwIixudWxsLG8pOiEobnVsbD09PXJ8fGEhPT1yfHwic29ydCI9PT1lfHwidHlwZSI9PT1lfHx0IGluc3RhbmNlb2YgRGF0ZSl8fG51bGw9PT0obj1VZSh0LGEsbykpP3Q6InNvcnQiPT09ZT9uOih0PW51bGw9PT1yP0VlKG4sInRvRGF0ZSIsInRvSlNEYXRlIiwiIilbc10oKTpFZShuLCJmb3JtYXQiLCJ0b0Zvcm1hdCIsInRvSVNPU3RyaW5nIixyKSwiZGlzcGxheSI9PT1lP1dlKHQpOnQpfX19dmFyIFhlPSIsIixKZT0iLiI7aWYoai5JbnRsIT09SCl0cnl7Zm9yKHZhciBxZT0obmV3IEludGwuTnVtYmVyRm9ybWF0KS5mb3JtYXRUb1BhcnRzKDEwMDAwMC4xKSxuPTA7bjxxZS5sZW5ndGg7bisrKSJncm91cCI9PT1xZVtuXS50eXBlP1hlPXFlW25dLnZhbHVlOiJkZWNpbWFsIj09PXFlW25dLnR5cGUmJihKZT1xZVtuXS52YWx1ZSl9Y2F0Y2godCl7fWZ1bmN0aW9uICRlKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PVtnZSh0aGlzW3cuZXh0LmlBcGlJbmRleF0pXS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7cmV0dXJuIHcuZXh0LmludGVybmFsW2VdLmFwcGx5KHRoaXMsdCl9fXJldHVybiB3LmRhdGV0aW1lPWZ1bmN0aW9uKG4sYSl7dmFyIHI9ImRhdGV0aW1lLWRldGVjdC0iK247YT1hfHwiZW4iLHcuZXh0LnR5cGUub3JkZXJbcl18fCh3LmV4dC50eXBlLmRldGVjdC51bnNoaWZ0KGZ1bmN0aW9uKHQpe3ZhciBlPVVlKHQsbixhKTtyZXR1cm4hKCIiIT09dCYmIWUpJiZyfSksdy5leHQudHlwZS5vcmRlcltyKyItcHJlIl09ZnVuY3Rpb24odCl7cmV0dXJuIFVlKHQsbixhKXx8MH0pfSx3LnJlbmRlcj17ZGF0ZTpWZSgidG9Mb2NhbGVEYXRlU3RyaW5nIiksZGF0ZXRpbWU6VmUoInRvTG9jYWxlU3RyaW5nIiksdGltZTpWZSgidG9Mb2NhbGVUaW1lU3RyaW5nIiksbnVtYmVyOmZ1bmN0aW9uKGEscixvLGksbCl7cmV0dXJuIG51bGwhPT1hJiZhIT09SHx8KGE9WGUpLG51bGwhPT1yJiZyIT09SHx8KHI9SmUpLHtkaXNwbGF5OmZ1bmN0aW9uKHQpe2lmKCJudW1iZXIiIT10eXBlb2YgdCYmInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiB0O2lmKCIiPT09dHx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIGU9dDwwPyItIjoiIixuPXBhcnNlRmxvYXQodCk7aWYoaXNOYU4obikpcmV0dXJuIFdlKHQpO249bi50b0ZpeGVkKG8pLHQ9TWF0aC5hYnMobik7bj1wYXJzZUludCh0LDEwKSx0PW8/cisodC1uKS50b0ZpeGVkKG8pLnN1YnN0cmluZygyKToiIjtyZXR1cm4oZT0wPT09biYmMD09PXBhcnNlRmxvYXQodCk/IiI6ZSkrKGl8fCIiKStuLnRvU3RyaW5nKCkucmVwbGFjZSgvXEIoPz0oXGR7M30pKyg/IVxkKSkvZyxhKSt0KyhsfHwiIil9fX0sdGV4dDpmdW5jdGlvbigpe3JldHVybntkaXNwbGF5OldlLGZpbHRlcjpXZX19fSxQLmV4dGVuZCh3LmV4dC5pbnRlcm5hbCx7X2ZuRXh0ZXJuQXBpRnVuYzokZSxfZm5CdWlsZEFqYXg6VHQsX2ZuQWpheFVwZGF0ZTp4dCxfZm5BamF4UGFyYW1ldGVyczpBdCxfZm5BamF4VXBkYXRlRHJhdzpJdCxfZm5BamF4RGF0YVNyYzpGdCxfZm5BZGRDb2x1bW46bnQsX2ZuQ29sdW1uT3B0aW9uczphdCxfZm5BZGp1c3RDb2x1bW5TaXppbmc6TyxfZm5WaXNpYmxlVG9Db2x1bW5JbmRleDpydCxfZm5Db2x1bW5JbmRleFRvVmlzaWJsZTpvdCxfZm5WaXNibGVDb2x1bW5zOlQsX2ZuR2V0Q29sdW1uczppdCxfZm5Db2x1bW5UeXBlczpsdCxfZm5BcHBseUNvbHVtbkRlZnM6c3QsX2ZuSHVuZ2FyaWFuTWFwOmksX2ZuQ2FtZWxUb0h1bmdhcmlhbjpDLF9mbkxhbmd1YWdlQ29tcGF0OlosX2ZuQnJvd3NlckRldGVjdDp0dCxfZm5BZGREYXRhOngsX2ZuQWRkVHI6dXQsX2ZuTm9kZVRvRGF0YUluZGV4OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuX0RUX1Jvd0luZGV4IT09SD9lLl9EVF9Sb3dJbmRleDpudWxsfSxfZm5Ob2RlVG9Db2x1bW5JbmRleDpmdW5jdGlvbih0LGUsbil7cmV0dXJuIFAuaW5BcnJheShuLHQuYW9EYXRhW2VdLmFuQ2VsbHMpfSxfZm5HZXRDZWxsRGF0YTpTLF9mblNldENlbGxEYXRhOmN0LF9mblNwbGl0T2JqTm90YXRpb246ZHQsX2ZuR2V0T2JqZWN0RGF0YUZuOkEsX2ZuU2V0T2JqZWN0RGF0YUZuOmIsX2ZuR2V0RGF0YU1hc3RlcjpodCxfZm5DbGVhclRhYmxlOnB0LF9mbkRlbGV0ZUluZGV4Omd0LF9mbkludmFsaWRhdGU6YnQsX2ZuR2V0Um93RWxlbWVudHM6bXQsX2ZuQ3JlYXRlVHI6U3QsX2ZuQnVpbGRIZWFkOnl0LF9mbkRyYXdIZWFkOkR0LF9mbkRyYXc6eSxfZm5SZURyYXc6dSxfZm5BZGRPcHRpb25zSHRtbDpfdCxfZm5EZXRlY3RIZWFkZXI6d3QsX2ZuR2V0VW5pcXVlVGhzOkN0LF9mbkZlYXR1cmVIdG1sRmlsdGVyOkx0LF9mbkZpbHRlckNvbXBsZXRlOlJ0LF9mbkZpbHRlckN1c3RvbTpQdCxfZm5GaWx0ZXJDb2x1bW46anQsX2ZuRmlsdGVyOkh0LF9mbkZpbHRlckNyZWF0ZVNlYXJjaDpOdCxfZm5Fc2NhcGVSZWdleDpPdCxfZm5GaWx0ZXJEYXRhOld0LF9mbkZlYXR1cmVIdG1sSW5mbzpVdCxfZm5VcGRhdGVJbmZvOlZ0LF9mbkluZm9NYWNyb3M6WHQsX2ZuSW5pdGlhbGlzZTpKdCxfZm5Jbml0Q29tcGxldGU6cXQsX2ZuTGVuZ3RoQ2hhbmdlOiR0LF9mbkZlYXR1cmVIdG1sTGVuZ3RoOkd0LF9mbkZlYXR1cmVIdG1sUGFnaW5hdGU6enQsX2ZuUGFnZUNoYW5nZTpZdCxfZm5GZWF0dXJlSHRtbFByb2Nlc3Npbmc6WnQsX2ZuUHJvY2Vzc2luZ0Rpc3BsYXk6RCxfZm5GZWF0dXJlSHRtbFRhYmxlOkt0LF9mblNjcm9sbERyYXc6UXQsX2ZuQXBwbHlUb0NoaWxkcmVuOmssX2ZuQ2FsY3VsYXRlQ29sdW1uV2lkdGhzOmVlLF9mblRocm90dGxlOm5lLF9mbkNvbnZlcnRUb1dpZHRoOmFlLF9mbkdldFdpZGVzdE5vZGU6cmUsX2ZuR2V0TWF4TGVuU3RyaW5nOm9lLF9mblN0cmluZ1RvQ3NzOk0sX2ZuU29ydEZsYXR0ZW46SSxfZm5Tb3J0OmllLF9mblNvcnRBcmlhOmxlLF9mblNvcnRMaXN0ZW5lcjpzZSxfZm5Tb3J0QXR0YWNoTGlzdGVuZXI6dWUsX2ZuU29ydGluZ0NsYXNzZXM6Y2UsX2ZuU29ydERhdGE6ZmUsX2ZuU2F2ZVN0YXRlOmRlLF9mbkxvYWRTdGF0ZTpoZSxfZm5JbXBsZW1lbnRTdGF0ZTpwZSxfZm5TZXR0aW5nc0Zyb21Ob2RlOmdlLF9mbkxvZzpXLF9mbk1hcDpGLF9mbkJpbmRBY3Rpb246bWUsX2ZuQ2FsbGJhY2tSZWc6TCxfZm5DYWxsYmFja0ZpcmU6UixfZm5MZW5ndGhPdmVyZmxvdzpTZSxfZm5SZW5kZXJlcjp2ZSxfZm5EYXRhU291cmNlOkUsX2ZuUm93QXR0cmlidXRlczp2dCxfZm5FeHRlbmQ6YmUsX2ZuQ2FsY3VsYXRlRW5kOmZ1bmN0aW9uKCl7fX0pLCgoUC5mbi5kYXRhVGFibGU9dykuJD1QKS5mbi5kYXRhVGFibGVTZXR0aW5ncz13LnNldHRpbmdzLFAuZm4uZGF0YVRhYmxlRXh0PXcuZXh0LFAuZm4uRGF0YVRhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBQKHRoaXMpLmRhdGFUYWJsZSh0KS5hcGkoKX0sUC5lYWNoKHcsZnVuY3Rpb24odCxlKXtQLmZuLkRhdGFUYWJsZVt0XT1lfSksd30pOw=="></script>
<link href="data:text/css,div%2Edts%7Bdisplay%3Ablock%20%21important%7Ddiv%2Edts%20tbody%20th%2Cdiv%2Edts%20tbody%20td%7Bwhite%2Dspace%3Anowrap%7Ddiv%2Edts%20div%2Edts%5Floading%7Bz%2Dindex%3A1%7Ddiv%2Edts%20div%2Edts%5Flabel%7Bposition%3Aabsolute%3Bright%3A20px%3Bbackground%3Argba%280%2C%200%2C%200%2C%200%2E8%29%3Bcolor%3Awhite%3Bbox%2Dshadow%3A3px%203px%2010px%20rgba%280%2C%200%2C%200%2C%200%2E5%29%3Btext%2Dalign%3Aright%3Bborder%2Dradius%3A3px%3Bpadding%3A%2E4em%3Bz%2Dindex%3A2%3Bdisplay%3Anone%7Ddiv%2Edts%20div%2EdataTables%5FscrollBody%7Bbackground%3Arepeating%2Dlinear%2Dgradient%2845deg%2C%20rgba%280%2C%200%2C%200%2C%200%2E025%29%2C%20rgba%280%2C%200%2C%200%2C%200%2E025%29%2010px%2C%20rgba%280%2C%200%2C%200%2C%200%29%2010px%2C%20rgba%280%2C%200%2C%200%2C%200%29%2020px%29%7Ddiv%2Edts%20div%2EdataTables%5FscrollBody%20table%7Bbackground%2Dcolor%3Awhite%3Bz%2Dindex%3A2%7Ddiv%2Edts%20div%2EdataTables%5Fpaginate%2Cdiv%2Edts%20div%2EdataTables%5Flength%7Bdisplay%3Anone%7Dhtml%2Edark%20div%2Edts%20div%2Edts%5Flabel%7Bbackground%3Argba%28255%2C%20255%2C%20255%2C%200%2E8%29%3Bcolor%3Ablack%7Dhtml%2Edark%20div%2Edts%20div%2EdataTables%5FscrollBody%7Bbackground%3Arepeating%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C%20255%2C%20255%2C%200%2E025%29%2C%20rgba%28255%2C%20255%2C%20255%2C%200%2E025%29%2010px%2C%20rgba%28255%2C%20255%2C%20255%2C%200%29%2010px%2C%20rgba%28255%2C%20255%2C%20255%2C%200%29%2020px%29%7Dhtml%2Edark%20div%2Edts%20div%2EdataTables%5FscrollBody%20table%7Bbackground%2Dcolor%3Avar%28%2D%2Ddt%2Dhtml%2Dbackground%29%3Bz%2Dindex%3A2%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,LyohIFNjcm9sbGVyIDIuMi4wCiAqIMKpIFNwcnlNZWRpYSBMdGQgLSBkYXRhdGFibGVzLm5ldC9saWNlbnNlCiAqLwohZnVuY3Rpb24obyl7dmFyIGUsbDsiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSIsImRhdGF0YWJsZXMubmV0Il0sZnVuY3Rpb24ocyl7cmV0dXJuIG8ocyx3aW5kb3csZG9jdW1lbnQpfSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzPyhlPXJlcXVpcmUoImpxdWVyeSIpLGw9ZnVuY3Rpb24ocyx0KXt0LmZuLmRhdGFUYWJsZXx8cmVxdWlyZSgiZGF0YXRhYmxlcy5uZXQiKShzLHQpfSwidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvdz9tb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihzLHQpe3JldHVybiBzPXN8fHdpbmRvdyx0PXR8fGUocyksbChzLHQpLG8odCxzLHMuZG9jdW1lbnQpfToobCh3aW5kb3csZSksbW9kdWxlLmV4cG9ydHM9byhlLHdpbmRvdyx3aW5kb3cuZG9jdW1lbnQpKSk6byhqUXVlcnksd2luZG93LGRvY3VtZW50KX0oZnVuY3Rpb24oZixpLG8sYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGwocyx0KXt0aGlzIGluc3RhbmNlb2YgbD8odD09PWEmJih0PXt9KSxzPWYuZm4uZGF0YVRhYmxlLkFwaShzKSx0aGlzLnM9e2R0OnMuc2V0dGluZ3MoKVswXSxkdEFwaTpzLHRhYmxlVG9wOjAsdGFibGVCb3R0b206MCxyZWRyYXdUb3A6MCxyZWRyYXdCb3R0b206MCxhdXRvSGVpZ2h0OiEwLHZpZXdwb3J0Um93czowLHN0YXRlVE86bnVsbCxzdGF0ZVNhdmVUaHJvdHRsZTpmdW5jdGlvbigpe30sZHJhd1RPOm51bGwsaGVpZ2h0czp7anVtcDpudWxsLHBhZ2U6bnVsbCx2aXJ0dWFsOm51bGwsc2Nyb2xsOm51bGwscm93Om51bGwsdmlld3BvcnQ6bnVsbCxsYWJlbEhlaWdodDowLHhiYXI6MH0sdG9wUm93RmxvYXQ6MCxzY3JvbGxEcmF3RGlmZjpudWxsLGxvYWRlclZpc2libGU6ITEsZm9yY2VSZXBvc2l0aW9uOiExLGJhc2VSb3dUb3A6MCxiYXNlU2Nyb2xsVG9wOjAsbW91c2Vkb3duOiExLGxhc3RTY3JvbGxUb3A6MH0sdGhpcy5zPWYuZXh0ZW5kKHRoaXMucyxsLm9EZWZhdWx0cyx0KSx0aGlzLnMuaGVpZ2h0cy5yb3c9dGhpcy5zLnJvd0hlaWdodCx0aGlzLmRvbT17Zm9yY2U6by5jcmVhdGVFbGVtZW50KCJkaXYiKSxsYWJlbDpmKCc8ZGl2IGNsYXNzPSJkdHNfbGFiZWwiPjA8L2Rpdj4nKSxzY3JvbGxlcjpudWxsLHRhYmxlOm51bGwsbG9hZGVyOm51bGx9LHRoaXMucy5kdC5vU2Nyb2xsZXJ8fCh0aGlzLnMuZHQub1Njcm9sbGVyPXRoaXMpLmNvbnN0cnVjdCgpKTphbGVydCgiU2Nyb2xsZXIgd2FybmluZzogU2Nyb2xsZXIgbXVzdCBiZSBpbml0aWFsaXNlZCB3aXRoIHRoZSAnbmV3JyBrZXl3b3JkLiIpfXZhciByPWYuZm4uZGF0YVRhYmxlLHM9KGYuZXh0ZW5kKGwucHJvdG90eXBlLHttZWFzdXJlOmZ1bmN0aW9uKHMpe3RoaXMucy5hdXRvSGVpZ2h0JiZ0aGlzLl9jYWxjUm93SGVpZ2h0KCk7dmFyIHQ9dGhpcy5zLmhlaWdodHMsbz0odC5yb3cmJih0LnZpZXdwb3J0PXRoaXMuX3BhcnNlSGVpZ2h0KGYodGhpcy5kb20uc2Nyb2xsZXIpLmNzcygibWF4LWhlaWdodCIpKSx0aGlzLnMudmlld3BvcnRSb3dzPXBhcnNlSW50KHQudmlld3BvcnQvdC5yb3csMTApKzEsdGhpcy5zLmR0Ll9pRGlzcGxheUxlbmd0aD10aGlzLnMudmlld3BvcnRSb3dzKnRoaXMucy5kaXNwbGF5QnVmZmVyKSx0aGlzLmRvbS5sYWJlbC5vdXRlckhlaWdodCgpKTt0LnhiYXI9dGhpcy5kb20uc2Nyb2xsZXIub2Zmc2V0SGVpZ2h0LXRoaXMuZG9tLnNjcm9sbGVyLmNsaWVudEhlaWdodCx0LmxhYmVsSGVpZ2h0PW8scyE9PWEmJiFzfHx0aGlzLnMuZHQub0luc3RhbmNlLmZuRHJhdyghMSl9LHBhZ2VJbmZvOmZ1bmN0aW9uKCl7dmFyIHM9dGhpcy5zLmR0LHQ9dGhpcy5kb20uc2Nyb2xsZXIuc2Nyb2xsVG9wLHM9cy5mblJlY29yZHNEaXNwbGF5KCksbz1NYXRoLmNlaWwodGhpcy5waXhlbHNUb1Jvdyh0K3RoaXMucy5oZWlnaHRzLnZpZXdwb3J0LCExLHRoaXMucy5hbmkpKTtyZXR1cm57c3RhcnQ6TWF0aC5mbG9vcih0aGlzLnBpeGVsc1RvUm93KHQsITEsdGhpcy5zLmFuaSkpLGVuZDpzPG8/cy0xOm8tMX19LHBpeGVsc1RvUm93OmZ1bmN0aW9uKHMsdCxvKXtzLT10aGlzLnMuYmFzZVNjcm9sbFRvcCxvPW8/KHRoaXMuX2RvbWFpbigicGh5c2ljYWxUb1ZpcnR1YWwiLHRoaXMucy5iYXNlU2Nyb2xsVG9wKStzKS90aGlzLnMuaGVpZ2h0cy5yb3c6cy90aGlzLnMuaGVpZ2h0cy5yb3crdGhpcy5zLmJhc2VSb3dUb3A7cmV0dXJuIHR8fHQ9PT1hP3BhcnNlSW50KG8sMTApOm99LHJvd1RvUGl4ZWxzOmZ1bmN0aW9uKHMsdCxvKXtzLT10aGlzLnMuYmFzZVJvd1RvcCxvPW8/dGhpcy5fZG9tYWluKCJ2aXJ0dWFsVG9QaHlzaWNhbCIsdGhpcy5zLmJhc2VTY3JvbGxUb3ApOnRoaXMucy5iYXNlU2Nyb2xsVG9wO3JldHVybiBvKz1zKnRoaXMucy5oZWlnaHRzLnJvdyx0fHx0PT09YT9wYXJzZUludChvLDEwKTpvfSxzY3JvbGxUb1JvdzpmdW5jdGlvbihzLHQpe3ZhciBvPXRoaXMsZT0hMSxsPXRoaXMucm93VG9QaXhlbHMocykscj1zLSh0aGlzLnMuZGlzcGxheUJ1ZmZlci0xKS8yKnRoaXMucy52aWV3cG9ydFJvd3M7cjwwJiYocj0wKSwodD0obD50aGlzLnMucmVkcmF3Qm90dG9tfHxsPHRoaXMucy5yZWRyYXdUb3ApJiZ0aGlzLnMuZHQuX2lEaXNwbGF5U3RhcnQhPT1yJiYoZT0hMCxsPXRoaXMuX2RvbWFpbigidmlydHVhbFRvUGh5c2ljYWwiLHMqdGhpcy5zLmhlaWdodHMucm93KSx0aGlzLnMucmVkcmF3VG9wPGwpJiZsPHRoaXMucy5yZWRyYXdCb3R0b20/ISh0aGlzLnMuZm9yY2VSZXBvc2l0aW9uPSEwKTp0KT09PWF8fHQ/KHRoaXMucy5hbmk9ZSxmKHRoaXMuZG9tLnNjcm9sbGVyKS5hbmltYXRlKHtzY3JvbGxUb3A6bH0sZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7by5zLmFuaT0hMX0sMjUwKX0pKTpmKHRoaXMuZG9tLnNjcm9sbGVyKS5zY3JvbGxUb3AobCl9LGNvbnN0cnVjdDpmdW5jdGlvbigpe3ZhciBlLGwscj10aGlzLHM9dGhpcy5zLmR0QXBpO3RoaXMucy5kdC5vRmVhdHVyZXMuYlBhZ2luYXRlPyh0aGlzLmRvbS5mb3JjZS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLHRoaXMuZG9tLmZvcmNlLnN0eWxlLnRvcD0iMHB4Iix0aGlzLmRvbS5mb3JjZS5zdHlsZS5sZWZ0PSIwcHgiLHRoaXMuZG9tLmZvcmNlLnN0eWxlLndpZHRoPSIxcHgiLHRoaXMuZG9tLnNjcm9sbGVyPWYoImRpdi4iK3RoaXMucy5kdC5vQ2xhc3Nlcy5zU2Nyb2xsQm9keSx0aGlzLnMuZHQublRhYmxlV3JhcHBlcilbMF0sdGhpcy5kb20uc2Nyb2xsZXIuYXBwZW5kQ2hpbGQodGhpcy5kb20uZm9yY2UpLHRoaXMuZG9tLnNjcm9sbGVyLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsdGhpcy5kb20udGFibGU9ZigiPnRhYmxlIix0aGlzLmRvbS5zY3JvbGxlcilbMF0sdGhpcy5kb20udGFibGUuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0aGlzLmRvbS50YWJsZS5zdHlsZS50b3A9IjBweCIsdGhpcy5kb20udGFibGUuc3R5bGUubGVmdD0iMHB4IixmKHMudGFibGUoKS5jb250YWluZXIoKSkuYWRkQ2xhc3MoImR0cyBEVFMiKSx0aGlzLnMubG9hZGluZ0luZGljYXRvciYmKHRoaXMuZG9tLmxvYWRlcj1mKCc8ZGl2IGNsYXNzPSJkYXRhVGFibGVzX3Byb2Nlc3NpbmcgZHRzX2xvYWRpbmciPicrdGhpcy5zLmR0Lm9MYW5ndWFnZS5zTG9hZGluZ1JlY29yZHMrIjwvZGl2PiIpLmNzcygiZGlzcGxheSIsIm5vbmUiKSxmKHRoaXMuZG9tLnNjcm9sbGVyLnBhcmVudE5vZGUpLmNzcygicG9zaXRpb24iLCJyZWxhdGl2ZSIpLmFwcGVuZCh0aGlzLmRvbS5sb2FkZXIpKSx0aGlzLmRvbS5sYWJlbC5hcHBlbmRUbyh0aGlzLmRvbS5zY3JvbGxlciksdGhpcy5zLmhlaWdodHMucm93JiYiYXV0byIhPXRoaXMucy5oZWlnaHRzLnJvdyYmKHRoaXMucy5hdXRvSGVpZ2h0PSExKSx0aGlzLnMuaW5nbm9yZVNjcm9sbD0hMCxmKHRoaXMuZG9tLnNjcm9sbGVyKS5vbigic2Nyb2xsLmR0LXNjcm9sbGVyIixmdW5jdGlvbihzKXtyLl9zY3JvbGwuY2FsbChyKX0pLGYodGhpcy5kb20uc2Nyb2xsZXIpLm9uKCJ0b3VjaHN0YXJ0LmR0LXNjcm9sbGVyIixmdW5jdGlvbigpe3IuX3Njcm9sbC5jYWxsKHIpfSksZih0aGlzLmRvbS5zY3JvbGxlcikub24oIm1vdXNlZG93bi5kdC1zY3JvbGxlciIsZnVuY3Rpb24oKXtyLnMubW91c2Vkb3duPSEwfSkub24oIm1vdXNldXAuZHQtc2Nyb2xsZXIiLGZ1bmN0aW9uKCl7ci5zLmxhYmVsVmlzaWJsZT0hMSxyLnMubW91c2Vkb3duPSExLHIuZG9tLmxhYmVsLmNzcygiZGlzcGxheSIsIm5vbmUiKX0pLGYoaSkub24oInJlc2l6ZS5kdC1zY3JvbGxlciIsZnVuY3Rpb24oKXtyLm1lYXN1cmUoITEpLHIuX2luZm8oKX0pLGU9ITAsbD1zLnN0YXRlLmxvYWRlZCgpLHMub24oInN0YXRlU2F2ZVBhcmFtcy5zY3JvbGxlciIsZnVuY3Rpb24ocyx0LG8pe2UmJmw/KG8uc2Nyb2xsZXI9bC5zY3JvbGxlcixlPSExLG8uc2Nyb2xsZXImJihyLnMubGFzdFNjcm9sbFRvcD1vLnNjcm9sbGVyLnNjcm9sbFRvcCkpOm8uc2Nyb2xsZXI9e3RvcFJvdzpyLnMudG9wUm93RmxvYXQsYmFzZVNjcm9sbFRvcDpyLnMuYmFzZVNjcm9sbFRvcCxiYXNlUm93VG9wOnIucy5iYXNlUm93VG9wLHNjcm9sbFRvcDpyLnMubGFzdFNjcm9sbFRvcH19KSxzLm9uKCJzdGF0ZUxvYWRQYXJhbXMuc2Nyb2xsZXIiLGZ1bmN0aW9uKHMsdCxvKXtvLnNjcm9sbGVyIT09YSYmci5zY3JvbGxUb1JvdyhvLnNjcm9sbGVyLnRvcFJvdyl9KSxsJiZsLnNjcm9sbGVyJiYodGhpcy5zLnRvcFJvd0Zsb2F0PWwuc2Nyb2xsZXIudG9wUm93LHRoaXMucy5iYXNlU2Nyb2xsVG9wPWwuc2Nyb2xsZXIuYmFzZVNjcm9sbFRvcCx0aGlzLnMuYmFzZVJvd1RvcD1sLnNjcm9sbGVyLmJhc2VSb3dUb3ApLHRoaXMubWVhc3VyZSghMSksci5zLnN0YXRlU2F2ZVRocm90dGxlPXIucy5kdC5vQXBpLl9mblRocm90dGxlKGZ1bmN0aW9uKCl7ci5zLmR0QXBpLnN0YXRlLnNhdmUoKX0sNTAwKSxzLm9uKCJpbml0LnNjcm9sbGVyIixmdW5jdGlvbigpe3IubWVhc3VyZSghMSksci5zLnNjcm9sbFR5cGU9Imp1bXAiLHIuX2RyYXcoKSxzLm9uKCJkcmF3LnNjcm9sbGVyIixmdW5jdGlvbigpe3IuX2RyYXcoKX0pfSkscy5vbigicHJlRHJhdy5kdC5zY3JvbGxlciIsZnVuY3Rpb24oKXtyLl9zY3JvbGxGb3JjZSgpfSkscy5vbigiZGVzdHJveS5zY3JvbGxlciIsZnVuY3Rpb24oKXtmKGkpLm9mZigicmVzaXplLmR0LXNjcm9sbGVyIiksZihyLmRvbS5zY3JvbGxlcikub2ZmKCIuZHQtc2Nyb2xsZXIiKSxmKHIucy5kdC5uVGFibGUpLm9mZigiLnNjcm9sbGVyIiksZihyLnMuZHQublRhYmxlV3JhcHBlcikucmVtb3ZlQ2xhc3MoIkRUUyIpLGYoImRpdi5EVFNfTG9hZGluZyIsci5kb20uc2Nyb2xsZXIucGFyZW50Tm9kZSkucmVtb3ZlKCksci5kb20udGFibGUuc3R5bGUucG9zaXRpb249IiIsci5kb20udGFibGUuc3R5bGUudG9wPSIiLHIuZG9tLnRhYmxlLnN0eWxlLmxlZnQ9IiJ9KSk6dGhpcy5zLmR0Lm9BcGkuX2ZuTG9nKHRoaXMucy5kdCwwLCJQYWdpbmF0aW9uIG11c3QgYmUgZW5hYmxlZCBmb3IgU2Nyb2xsZXIiKX0sX2NhbGNSb3dIZWlnaHQ6ZnVuY3Rpb24oKXt2YXIgcz10aGlzLnMuZHQsdD1zLm5UYWJsZSxvPXQuY2xvbmVOb2RlKCExKSxlPWYoIjx0Ym9keS8+IikuYXBwZW5kVG8obyksbD1mKCc8ZGl2IGNsYXNzPSInK3Mub0NsYXNzZXMuc1dyYXBwZXIrJyBEVFMiPjxkaXYgY2xhc3M9Iicrcy5vQ2xhc3Nlcy5zU2Nyb2xsV3JhcHBlcisnIj48ZGl2IGNsYXNzPSInK3Mub0NsYXNzZXMuc1Njcm9sbEJvZHkrJyI+PC9kaXY+PC9kaXY+PC9kaXY+Jykscj0oZigidGJvZHkgdHI6bHQoNCkiLHQpLmNsb25lKCkuYXBwZW5kVG8oZSksZigidHIiLGUpLmxlbmd0aCk7aWYoMT09PXIpZS5wcmVwZW5kKCI8dHI+PHRkPiYjMTYwOzwvdGQ+PC90cj4iKSxlLmFwcGVuZCgiPHRyPjx0ZD4mIzE2MDs8L3RkPjwvdHI+Iik7ZWxzZSBmb3IoO3I8MztyKyspZS5hcHBlbmQoIjx0cj48dGQ+JiMxNjA7PC90ZD48L3RyPiIpO2YoImRpdi4iK3Mub0NsYXNzZXMuc1Njcm9sbEJvZHksbCkuYXBwZW5kKG8pO3M9dGhpcy5zLmR0Lm5Ib2xkaW5nfHx0LnBhcmVudE5vZGU7ZihzKS5pcygiOnZpc2libGUiKXx8KHM9ImJvZHkiKSxsLmZpbmQoImlucHV0IikucmVtb3ZlQXR0cigibmFtZSIpLGwuYXBwZW5kVG8ocyksdGhpcy5zLmhlaWdodHMucm93PWYoInRyIixlKS5lcSgxKS5vdXRlckhlaWdodCgpLGwucmVtb3ZlKCl9LF9kcmF3OmZ1bmN0aW9uKCl7dmFyIHM9dGhpcyx0PXRoaXMucy5oZWlnaHRzLG89dGhpcy5kb20uc2Nyb2xsZXIuc2Nyb2xsVG9wLGU9Zih0aGlzLnMuZHQublRhYmxlKS5oZWlnaHQoKSxsPXRoaXMucy5kdC5faURpc3BsYXlTdGFydCxyPXRoaXMucy5kdC5faURpc3BsYXlMZW5ndGgsaT10aGlzLnMuZHQuZm5SZWNvcmRzRGlzcGxheSgpLGE9byt0LnZpZXdwb3J0LG49KHRoaXMucy5za2lwPSEwLCF0aGlzLnMuZHQuYlNvcnRlZCYmIXRoaXMucy5kdC5iRmlsdGVyZWR8fDAhPT1sfHx0aGlzLnMuZHQuX2RyYXdIb2xkfHwodGhpcy5zLnRvcFJvd0Zsb2F0PTApLG89Imp1bXAiPT09dGhpcy5zLnNjcm9sbFR5cGU/dGhpcy5fZG9tYWluKCJ2aXJ0dWFsVG9QaHlzaWNhbCIsdGhpcy5zLnRvcFJvd0Zsb2F0KnQucm93KTpvLHRoaXMucy5iYXNlU2Nyb2xsVG9wPW8sdGhpcy5zLmJhc2VSb3dUb3A9dGhpcy5zLnRvcFJvd0Zsb2F0LG8tKHRoaXMucy50b3BSb3dGbG9hdC1sKSp0LnJvdyksbD0oMD09PWw/bj0wOmk8PWwrcj9uPXQuc2Nyb2xsLWU6bitlPGEmJih0aGlzLnMuYmFzZVNjcm9sbFRvcCs9MSsoKGk9YS1lKS1uKSxuPWkpLHRoaXMuZG9tLnRhYmxlLnN0eWxlLnRvcD1uKyJweCIsdGhpcy5zLnRhYmxlVG9wPW4sdGhpcy5zLnRhYmxlQm90dG9tPWUrdGhpcy5zLnRhYmxlVG9wLChvLXRoaXMucy50YWJsZVRvcCkqdGhpcy5zLmJvdW5kYXJ5U2NhbGUpO3RoaXMucy5yZWRyYXdUb3A9by1sLHRoaXMucy5yZWRyYXdCb3R0b209bytsPnQuc2Nyb2xsLXQudmlld3BvcnQtdC5yb3c/dC5zY3JvbGwtdC52aWV3cG9ydC10LnJvdzpvK2wsdGhpcy5zLnNraXA9ITEscy5zLmluZ25vcmVTY3JvbGwmJih0aGlzLnMuZHQub0ZlYXR1cmVzLmJTdGF0ZVNhdmUmJm51bGwhPT10aGlzLnMuZHQub0xvYWRlZFN0YXRlJiZ2b2lkIDAhPT10aGlzLnMuZHQub0xvYWRlZFN0YXRlLnNjcm9sbGVyPygocj0hKCF0aGlzLnMuZHQuc0FqYXhTb3VyY2UmJiFzLnMuZHQuYWpheHx8dGhpcy5zLmR0Lm9GZWF0dXJlcy5iU2VydmVyU2lkZSkpJiYyPD10aGlzLnMuZHQuaURyYXd8fCFyJiYxPD10aGlzLnMuZHQuaURyYXcpJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZihzLmRvbS5zY3JvbGxlcikuc2Nyb2xsVG9wKHMucy5kdC5vTG9hZGVkU3RhdGUuc2Nyb2xsZXIuc2Nyb2xsVG9wKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cy5zLmluZ25vcmVTY3JvbGw9ITF9LDApfSwwKTpzLnMuaW5nbm9yZVNjcm9sbD0hMSksdGhpcy5zLmR0Lm9GZWF0dXJlcy5iSW5mbyYmc2V0VGltZW91dChmdW5jdGlvbigpe3MuX2luZm8uY2FsbChzKX0sMCksZih0aGlzLnMuZHQublRhYmxlKS50cmlnZ2VySGFuZGxlcigicG9zaXRpb24uZHRzLmR0IixuKSx0aGlzLmRvbS5sb2FkZXImJnRoaXMucy5sb2FkZXJWaXNpYmxlJiYodGhpcy5kb20ubG9hZGVyLmNzcygiZGlzcGxheSIsIm5vbmUiKSx0aGlzLnMubG9hZGVyVmlzaWJsZT0hMSl9LF9kb21haW46ZnVuY3Rpb24ocyx0KXt2YXIgbyxlPXRoaXMucy5oZWlnaHRzLGw9MWU0O3JldHVybiBlLnZpcnR1YWw9PT1lLnNjcm9sbHx8dDxsP3Q6InZpcnR1YWxUb1BoeXNpY2FsIj09PXMmJnQ+PWUudmlydHVhbC1sPyhvPWUudmlydHVhbC10LGUuc2Nyb2xsLW8pOiJwaHlzaWNhbFRvVmlydHVhbCI9PT1zJiZ0Pj1lLnNjcm9sbC1sPyhvPWUuc2Nyb2xsLXQsZS52aXJ0dWFsLW8pOihlPWwtKG89KGUudmlydHVhbC1sLWwpLyhlLnNjcm9sbC1sLWwpKSpsLCJ2aXJ0dWFsVG9QaHlzaWNhbCI9PT1zPyh0LWUpL286byp0K2UpfSxfaW5mbzpmdW5jdGlvbigpe2lmKHRoaXMucy5kdC5vRmVhdHVyZXMuYkluZm8pe3ZhciBzPXRoaXMucy5kdCx0PXMub0xhbmd1YWdlLG89dGhpcy5kb20uc2Nyb2xsZXIuc2Nyb2xsVG9wLGU9TWF0aC5mbG9vcih0aGlzLnBpeGVsc1RvUm93KG8sITEsdGhpcy5zLmFuaSkrMSksbD1zLmZuUmVjb3Jkc1RvdGFsKCkscj1zLmZuUmVjb3Jkc0Rpc3BsYXkoKSxvPU1hdGguY2VpbCh0aGlzLnBpeGVsc1RvUm93KG8rdGhpcy5zLmhlaWdodHMudmlld3BvcnQsITEsdGhpcy5zLmFuaSkpLG89cjxvP3I6byxpPXMuZm5Gb3JtYXROdW1iZXIoZSksYT1zLmZuRm9ybWF0TnVtYmVyKG8pLG49cy5mbkZvcm1hdE51bWJlcihsKSxoPXMuZm5Gb3JtYXROdW1iZXIociksYz0wPT09cy5mblJlY29yZHNEaXNwbGF5KCkmJnMuZm5SZWNvcmRzRGlzcGxheSgpPT1zLmZuUmVjb3Jkc1RvdGFsKCk/dC5zSW5mb0VtcHR5K3Quc0luZm9Qb3N0Rml4OjA9PT1zLmZuUmVjb3Jkc0Rpc3BsYXkoKT90LnNJbmZvRW1wdHkrIiAiK3Quc0luZm9GaWx0ZXJlZC5yZXBsYWNlKCJfTUFYXyIsbikrdC5zSW5mb1Bvc3RGaXg6cy5mblJlY29yZHNEaXNwbGF5KCk9PXMuZm5SZWNvcmRzVG90YWwoKT90LnNJbmZvLnJlcGxhY2UoIl9TVEFSVF8iLGkpLnJlcGxhY2UoIl9FTkRfIixhKS5yZXBsYWNlKCJfTUFYXyIsbikucmVwbGFjZSgiX1RPVEFMXyIsaCkrdC5zSW5mb1Bvc3RGaXg6dC5zSW5mby5yZXBsYWNlKCJfU1RBUlRfIixpKS5yZXBsYWNlKCJfRU5EXyIsYSkucmVwbGFjZSgiX01BWF8iLG4pLnJlcGxhY2UoIl9UT1RBTF8iLGgpKyIgIit0LnNJbmZvRmlsdGVyZWQucmVwbGFjZSgiX01BWF8iLHMuZm5Gb3JtYXROdW1iZXIocy5mblJlY29yZHNUb3RhbCgpKSkrdC5zSW5mb1Bvc3RGaXgsaT10LmZuSW5mb0NhbGxiYWNrLGQ9KGkmJihjPWkuY2FsbChzLm9JbnN0YW5jZSxzLGUsbyxsLHIsYykpLHMuYWFuRmVhdHVyZXMuaSk7aWYodm9pZCAwIT09ZClmb3IodmFyIHA9MCx1PWQubGVuZ3RoO3A8dTtwKyspZihkW3BdKS5odG1sKGMpO2Yocy5uVGFibGUpLnRyaWdnZXJIYW5kbGVyKCJpbmZvLmR0Iil9fSxfcGFyc2VIZWlnaHQ6ZnVuY3Rpb24ocyl7dmFyIHQsbyxzPS9eKFsrLV0/KD86XGQrKD86XC5cZCspP3xcLlxkKykpKHB4fGVtfHJlbXx2aCkkLy5leGVjKHMpO3JldHVybiBudWxsIT09cyYmKG89cGFyc2VGbG9hdChzWzFdKSwicHgiPT09KHM9c1syXSk/dD1vOiJ2aCI9PT1zP3Q9by8xMDAqZihpKS5oZWlnaHQoKToicmVtIj09PXM/dD1vKnBhcnNlRmxvYXQoZigiOnJvb3QiKS5jc3MoImZvbnQtc2l6ZSIpKToiZW0iPT09cyYmKHQ9bypwYXJzZUZsb2F0KGYoImJvZHkiKS5jc3MoImZvbnQtc2l6ZSIpKSksdCl8fDB9LF9zY3JvbGw6ZnVuY3Rpb24oKXt2YXIgcyx0PXRoaXMsbz10aGlzLnMuaGVpZ2h0cyxlPXRoaXMuZG9tLnNjcm9sbGVyLnNjcm9sbFRvcDt0aGlzLnMuc2tpcHx8dGhpcy5zLmluZ25vcmVTY3JvbGx8fGUhPT10aGlzLnMubGFzdFNjcm9sbFRvcCYmKHRoaXMucy5kdC5iRmlsdGVyZWR8fHRoaXMucy5kdC5iU29ydGVkP3RoaXMucy5sYXN0U2Nyb2xsVG9wPTA6KHRoaXMuX2luZm8oKSxjbGVhclRpbWVvdXQodGhpcy5zLnN0YXRlVE8pLHRoaXMucy5zdGF0ZVRPPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LnMuZHRBcGkuc3RhdGUuc2F2ZSgpfSwyNTApLHRoaXMucy5zY3JvbGxUeXBlPU1hdGguYWJzKGUtdGhpcy5zLmxhc3RTY3JvbGxUb3ApPm8udmlld3BvcnQ/Imp1bXAiOiJjb250Iix0aGlzLnMudG9wUm93RmxvYXQ9ImNvbnQiPT09dGhpcy5zLnNjcm9sbFR5cGU/dGhpcy5waXhlbHNUb1JvdyhlLCExLCExKTp0aGlzLl9kb21haW4oInBoeXNpY2FsVG9WaXJ0dWFsIixlKS9vLnJvdyx0aGlzLnMudG9wUm93RmxvYXQ8MCYmKHRoaXMucy50b3BSb3dGbG9hdD0wKSx0aGlzLnMuZm9yY2VSZXBvc2l0aW9ufHxlPHRoaXMucy5yZWRyYXdUb3B8fGU+dGhpcy5zLnJlZHJhd0JvdHRvbT8ocz1NYXRoLmNlaWwoKHRoaXMucy5kaXNwbGF5QnVmZmVyLTEpLzIqdGhpcy5zLnZpZXdwb3J0Um93cykscz1wYXJzZUludCh0aGlzLnMudG9wUm93RmxvYXQsMTApLXMsdGhpcy5zLmZvcmNlUmVwb3NpdGlvbj0hMSxzPD0wP3M9MDpzK3RoaXMucy5kdC5faURpc3BsYXlMZW5ndGg+dGhpcy5zLmR0LmZuUmVjb3Jkc0Rpc3BsYXkoKT8ocz10aGlzLnMuZHQuZm5SZWNvcmRzRGlzcGxheSgpLXRoaXMucy5kdC5faURpc3BsYXlMZW5ndGgpPDAmJihzPTApOnMlMiE9MCYmcysrLCh0aGlzLnMudGFyZ2V0VG9wPXMpIT10aGlzLnMuZHQuX2lEaXNwbGF5U3RhcnQmJih0aGlzLnMudGFibGVUb3A9Zih0aGlzLnMuZHQublRhYmxlKS5vZmZzZXQoKS50b3AsdGhpcy5zLnRhYmxlQm90dG9tPWYodGhpcy5zLmR0Lm5UYWJsZSkuaGVpZ2h0KCkrdGhpcy5zLnRhYmxlVG9wLHM9ZnVuY3Rpb24oKXt0LnMuZHQuX2lEaXNwbGF5U3RhcnQ9dC5zLnRhcmdldFRvcCx0LnMuZHQub0FwaS5fZm5EcmF3KHQucy5kdCl9LHRoaXMucy5kdC5vRmVhdHVyZXMuYlNlcnZlclNpZGU/KHRoaXMucy5mb3JjZVJlcG9zaXRpb249ITAsY2xlYXJUaW1lb3V0KHRoaXMucy5kcmF3VE8pLHRoaXMucy5kcmF3VE89c2V0VGltZW91dChzLHRoaXMucy5zZXJ2ZXJXYWl0KSk6cygpLHRoaXMuZG9tLmxvYWRlcikmJiF0aGlzLnMubG9hZGVyVmlzaWJsZSYmKHRoaXMuZG9tLmxvYWRlci5jc3MoImRpc3BsYXkiLCJibG9jayIpLHRoaXMucy5sb2FkZXJWaXNpYmxlPSEwKSk6dGhpcy5zLnRvcFJvd0Zsb2F0PXRoaXMucGl4ZWxzVG9Sb3coZSwhMSwhMCksdGhpcy5zLmxhc3RTY3JvbGxUb3A9ZSx0aGlzLnMuc3RhdGVTYXZlVGhyb3R0bGUoKSwianVtcCI9PT10aGlzLnMuc2Nyb2xsVHlwZSYmdGhpcy5zLm1vdXNlZG93biYmKHRoaXMucy5sYWJlbFZpc2libGU9ITApLHRoaXMucy5sYWJlbFZpc2libGUmJihzPShvLnZpZXdwb3J0LW8ubGFiZWxIZWlnaHQtby54YmFyKS9vLnNjcm9sbCx0aGlzLmRvbS5sYWJlbC5odG1sKHRoaXMucy5kdC5mbkZvcm1hdE51bWJlcihwYXJzZUludCh0aGlzLnMudG9wUm93RmxvYXQsMTApKzEpKS5jc3MoInRvcCIsZStlKnMpLmNzcygiZGlzcGxheSIsImJsb2NrIikpKSl9LF9zY3JvbGxGb3JjZTpmdW5jdGlvbigpe3ZhciBzPXRoaXMucy5oZWlnaHRzO3MudmlydHVhbD1zLnJvdyp0aGlzLnMuZHQuZm5SZWNvcmRzRGlzcGxheSgpLHMuc2Nyb2xsPXMudmlydHVhbCwxZTY8cy5zY3JvbGwmJihzLnNjcm9sbD0xZTYpLHRoaXMuZG9tLmZvcmNlLnN0eWxlLmhlaWdodD1zLnNjcm9sbD50aGlzLnMuaGVpZ2h0cy5yb3c/cy5zY3JvbGwrInB4Ijp0aGlzLnMuaGVpZ2h0cy5yb3crInB4In19KSxsLm9EZWZhdWx0cz1sLmRlZmF1bHRzPXtib3VuZGFyeVNjYWxlOi41LGRpc3BsYXlCdWZmZXI6OSxsb2FkaW5nSW5kaWNhdG9yOiExLHJvd0hlaWdodDoiYXV0byIsc2VydmVyV2FpdDoyMDB9LGwudmVyc2lvbj0iMi4yLjAiLGYobykub24oInByZUluaXQuZHQuZHRzY3JvbGxlciIsZnVuY3Rpb24ocyx0KXt2YXIgbyxlOyJkdCI9PT1zLm5hbWVzcGFjZSYmKHM9dC5vSW5pdC5zY3JvbGxlcixvPXIuZGVmYXVsdHMuc2Nyb2xsZXIsc3x8bykmJihlPWYuZXh0ZW5kKHt9LHMsbyksITEhPT1zKSYmbmV3IGwodCxlKX0pLGYuZm4uZGF0YVRhYmxlLlNjcm9sbGVyPWwsZi5mbi5EYXRhVGFibGUuU2Nyb2xsZXI9bCxmLmZuLmRhdGFUYWJsZS5BcGkpO3JldHVybiBzLnJlZ2lzdGVyKCJzY3JvbGxlcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzfSkscy5yZWdpc3Rlcigic2Nyb2xsZXIoKS5yb3dUb1BpeGVscygpIixmdW5jdGlvbihzLHQsbyl7dmFyIGU9dGhpcy5jb250ZXh0O2lmKGUubGVuZ3RoJiZlWzBdLm9TY3JvbGxlcilyZXR1cm4gZVswXS5vU2Nyb2xsZXIucm93VG9QaXhlbHMocyx0LG8pfSkscy5yZWdpc3Rlcigic2Nyb2xsZXIoKS5waXhlbHNUb1JvdygpIixmdW5jdGlvbihzLHQsbyl7dmFyIGU9dGhpcy5jb250ZXh0O2lmKGUubGVuZ3RoJiZlWzBdLm9TY3JvbGxlcilyZXR1cm4gZVswXS5vU2Nyb2xsZXIucGl4ZWxzVG9Sb3cocyx0LG8pfSkscy5yZWdpc3RlcihbInNjcm9sbGVyKCkuc2Nyb2xsVG9Sb3coKSIsInNjcm9sbGVyLnRvUG9zaXRpb24oKSJdLGZ1bmN0aW9uKHQsbyl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihzKXtzLm9TY3JvbGxlciYmcy5vU2Nyb2xsZXIuc2Nyb2xsVG9Sb3codCxvKX0pLHRoaXN9KSxzLnJlZ2lzdGVyKCJyb3coKS5zY3JvbGxUbygpIixmdW5jdGlvbihvKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLml0ZXJhdG9yKCJyb3ciLGZ1bmN0aW9uKHMsdCl7cy5vU2Nyb2xsZXImJih0PWUucm93cyh7b3JkZXI6ImFwcGxpZWQiLHNlYXJjaDoiYXBwbGllZCJ9KS5pbmRleGVzKCkuaW5kZXhPZih0KSxzLm9TY3JvbGxlci5zY3JvbGxUb1Jvdyh0LG8pKX0pLHRoaXN9KSxzLnJlZ2lzdGVyKCJzY3JvbGxlci5tZWFzdXJlKCkiLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24ocyl7cy5vU2Nyb2xsZXImJnMub1Njcm9sbGVyLm1lYXN1cmUodCl9KSx0aGlzfSkscy5yZWdpc3Rlcigic2Nyb2xsZXIucGFnZSgpIixmdW5jdGlvbigpe3ZhciBzPXRoaXMuY29udGV4dDtpZihzLmxlbmd0aCYmc1swXS5vU2Nyb2xsZXIpcmV0dXJuIHNbMF0ub1Njcm9sbGVyLnBhZ2VJbmZvKCl9KSxyfSk7"></script>
<link href="data:text/css,%2Econtainer%2Dfluid%2Ecrosstalk%2Dbscols%7Bmargin%2Dleft%3A%2D30px%3Bmargin%2Dright%3A%2D30px%3Bwhite%2Dspace%3Anormal%7Dbody%3E%2Econtainer%2Dfluid%2Ecrosstalk%2Dbscols%7Bmargin%2Dleft%3Aauto%3Bmargin%2Dright%3Aauto%7D%2Ecrosstalk%2Dinput%2Dcheckboxgroup%20%2Ecrosstalk%2Doptions%2Dgroup%20%2Ecrosstalk%2Doptions%2Dcolumn%7Bdisplay%3Ainline%2Dblock%3Bpadding%2Dright%3A12px%3Bvertical%2Dalign%3Atop%7D%40media%20only%20screen%20and%20%28max%2Dwidth%3A%20480px%29%7B%2Ecrosstalk%2Dinput%2Dcheckboxgroup%20%2Ecrosstalk%2Doptions%2Dgroup%20%2Ecrosstalk%2Doptions%2Dcolumn%7Bdisplay%3Ablock%3Bpadding%2Dright%3Ainherit%7D%7D%2Ecrosstalk%2Dinput%7Bmargin%2Dbottom%3A15px%7D%2Ecrosstalk%2Dinput%20%2Econtrol%2Dlabel%7Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Ecrosstalk%2Dinput%20input%5Btype%3D%22checkbox%22%5D%7Bmargin%3A4px%200%200%3Bmargin%2Dtop%3A1px%3Bline%2Dheight%3Anormal%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bmargin%2Dtop%3A10px%3Bmargin%2Dbottom%3A10px%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%3Elabel%7Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3A400%3Bcursor%3Apointer%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%20input%5Btype%3D%22checkbox%22%5D%2C%2Ecrosstalk%2Dinput%20%2Echeckbox%2Dinline%20input%5Btype%3D%22checkbox%22%5D%7Bposition%3Aabsolute%3Bmargin%2Dtop%3A2px%3Bmargin%2Dleft%3A%2D20px%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%2B%2Echeckbox%7Bmargin%2Dtop%3A%2D5px%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%2Dinline%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3A400%3Bvertical%2Dalign%3Amiddle%3Bcursor%3Apointer%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%2Dinline%2B%2Echeckbox%2Dinline%7Bmargin%2Dtop%3A0%3Bmargin%2Dleft%3A10px%7D%0A" rel="stylesheet" />
<script src="data:application/javascript;base64,IWZ1bmN0aW9uIG8odSxhLGwpe2Z1bmN0aW9uIHMobixlKXtpZighYVtuXSl7aWYoIXVbbl0pe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFlJiZ0KXJldHVybiB0KG4sITApO2lmKGYpcmV0dXJuIGYobiwhMCk7dmFyIHI9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrbisiJyIpO3Rocm93IHIuY29kZT0iTU9EVUxFX05PVF9GT1VORCIscn12YXIgaT1hW25dPXtleHBvcnRzOnt9fTt1W25dWzBdLmNhbGwoaS5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciB0PXVbbl1bMV1bZV07cmV0dXJuIHModHx8ZSl9LGksaS5leHBvcnRzLG8sdSxhLGwpfXJldHVybiBhW25dLmV4cG9ydHN9Zm9yKHZhciBmPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGU9MDtlPGwubGVuZ3RoO2UrKylzKGxbZV0pO3JldHVybiBzfSh7MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCYmcihlLnByb3RvdHlwZSx0KSxuJiZyKGUsbiksZX19KCk7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZSksdGhpcy5fdHlwZXM9e30sdGhpcy5fc2VxPTB9cmV0dXJuIHIoZSxbe2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fdHlwZXNbZV07bnx8KG49dGhpcy5fdHlwZXNbZV09e30pO3ZhciByPSJzdWIiK3RoaXMuX3NlcSsrO3JldHVybiBuW3JdPXQscn19LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl90eXBlc1tlXTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCl7Zm9yKHZhciByIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSYmbltyXT09PXQpcmV0dXJuIGRlbGV0ZSBuW3JdLHI7cmV0dXJuITF9aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiEoIW58fCFuW3RdKSYmKGRlbGV0ZSBuW3RdLHQpO3Rocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCB0eXBlIGZvciBsaXN0ZW5lciIpfX0se2tleToidHJpZ2dlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3R5cGVzW2VdO2Zvcih2YXIgaSBpbiByKXIuaGFzT3duUHJvcGVydHkoaSkmJnJbaV0uY2FsbChuLHQpfX1dKSxlfSgpO24uZGVmYXVsdD1pfSx7fV0sMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbi5GaWx0ZXJIYW5kbGU9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQmJnIoZS5wcm90b3R5cGUsdCksbiYmcihlLG4pLGV9fSgpLGk9bChlKCIuL2V2ZW50cyIpKSxvPWwoZSgiLi9maWx0ZXJzZXQiKSksdT1sKGUoIi4vZ3JvdXAiKSksYT1mdW5jdGlvbihlKXt7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fX0oZSgiLi91dGlsIikpO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBzPTE7bi5GaWx0ZXJIYW5kbGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGUsdCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsbiksdGhpcy5fZXZlbnRSZWxheT1uZXcgaS5kZWZhdWx0LHRoaXMuX2VtaXR0ZXI9bmV3IGEuU3Vic2NyaXB0aW9uVHJhY2tlcih0aGlzLl9ldmVudFJlbGF5KSx0aGlzLl9ncm91cD1udWxsLHRoaXMuX2ZpbHRlclNldD1udWxsLHRoaXMuX2ZpbHRlclZhcj1udWxsLHRoaXMuX3Zhck9uQ2hhbmdlU3ViPW51bGwsdGhpcy5fZXh0cmFJbmZvPWEuZXh0ZW5kKHtzZW5kZXI6dGhpc30sdCksdGhpcy5faWQ9ImZpbHRlciIrcysrLHRoaXMuc2V0R3JvdXAoZSl9cmV0dXJuIHIobixbe2tleToic2V0R3JvdXAiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj10aGlzO2lmKHRoaXMuX2dyb3VwIT09ZSYmKCh0aGlzLl9ncm91cHx8ZSkmJih0aGlzLl9maWx0ZXJWYXImJih0aGlzLl9maWx0ZXJWYXIub2ZmKCJjaGFuZ2UiLHRoaXMuX3Zhck9uQ2hhbmdlU3ViKSx0aGlzLmNsZWFyKCksdGhpcy5fdmFyT25DaGFuZ2VTdWI9bnVsbCx0aGlzLl9maWx0ZXJWYXI9bnVsbCx0aGlzLl9maWx0ZXJTZXQ9bnVsbCksdGhpcy5fZ3JvdXA9ZSkpKXtlPSgwLHUuZGVmYXVsdCkoZSksdGhpcy5fZmlsdGVyU2V0PSh0PWUudmFyKCJmaWx0ZXJzZXQiKSwobj10LmdldCgpKXx8KG49bmV3IG8uZGVmYXVsdCx0LnNldChuKSksbiksdGhpcy5fZmlsdGVyVmFyPSgwLHUuZGVmYXVsdCkoZSkudmFyKCJmaWx0ZXIiKTt2YXIgaT10aGlzLl9maWx0ZXJWYXIub24oImNoYW5nZSIsZnVuY3Rpb24oZSl7ci5fZXZlbnRSZWxheS50cmlnZ2VyKCJjaGFuZ2UiLGUscil9KTt0aGlzLl92YXJPbkNoYW5nZVN1Yj1pfX19LHtrZXk6Il9tZXJnZUV4dHJhSW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGEuZXh0ZW5kKHt9LHRoaXMuX2V4dHJhSW5mbz90aGlzLl9leHRyYUluZm86bnVsbCxlfHxudWxsKX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2VtaXR0ZXIucmVtb3ZlQWxsTGlzdGVuZXJzKCksdGhpcy5jbGVhcigpLHRoaXMuc2V0R3JvdXAobnVsbCl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fZmlsdGVyU2V0JiYodGhpcy5fZmlsdGVyU2V0LmNsZWFyKHRoaXMuX2lkKSx0aGlzLl9vbkNoYW5nZShlKSl9fSx7a2V5OiJzZXQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fZmlsdGVyU2V0JiYodGhpcy5fZmlsdGVyU2V0LnVwZGF0ZSh0aGlzLl9pZCxlKSx0aGlzLl9vbkNoYW5nZSh0KSl9fSx7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fZW1pdHRlci5vbihlLHQpfX0se2tleToib2ZmIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9lbWl0dGVyLm9mZihlLHQpfX0se2tleToiX29uQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl9maWx0ZXJTZXQmJnRoaXMuX2ZpbHRlclZhci5zZXQodGhpcy5fZmlsdGVyU2V0LnZhbHVlLHRoaXMuX21lcmdlRXh0cmFJbmZvKGUpKX19LHtrZXk6ImZpbHRlcmVkS2V5cyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZpbHRlclNldD90aGlzLl9maWx0ZXJTZXQudmFsdWU6bnVsbH19XSksbn0oKX0seyIuL2V2ZW50cyI6MSwiLi9maWx0ZXJzZXQiOjMsIi4vZ3JvdXAiOjQsIi4vdXRpbCI6MTF9XSwzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiZyKGUucHJvdG90eXBlLHQpLG4mJnIoZSxuKSxlfX0oKSxhPWUoIi4vdXRpbCIpO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZT09PXQ/MDplPHQ/LTE6dDxlPzE6dm9pZCAwfXZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGUpLHRoaXMucmVzZXQoKX1yZXR1cm4gcihlLFt7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9oYW5kbGVzPXt9LHRoaXMuX2tleXM9e30sdGhpcy5fdmFsdWU9bnVsbCx0aGlzLl9hY3RpdmVIYW5kbGVzPTB9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7bnVsbCE9PXQmJih0PXQuc2xpY2UoMCkpLnNvcnQobCk7dmFyIG49KDAsYS5kaWZmU29ydGVkTGlzdHMpKHRoaXMuX2hhbmRsZXNbZV0sdCkscj1uLmFkZGVkLGk9bi5yZW1vdmVkO3RoaXMuX2hhbmRsZXNbZV09dDtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKyl0aGlzLl9rZXlzW3Jbb11dPSh0aGlzLl9rZXlzW3Jbb11dfHwwKSsxO2Zvcih2YXIgdT0wO3U8aS5sZW5ndGg7dSsrKXRoaXMuX2tleXNbaVt1XV0tLTt0aGlzLl91cGRhdGVWYWx1ZSh0KX19LHtrZXk6Il91cGRhdGVWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT0wPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5fYWxsS2V5cyx0PU9iamVjdC5rZXlzKHRoaXMuX2hhbmRsZXMpLmxlbmd0aDtpZigwPT09dCl0aGlzLl92YWx1ZT1udWxsO2Vsc2V7dGhpcy5fdmFsdWU9W107Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3RoaXMuX2tleXNbZVtuXV09PT10JiZ0aGlzLl92YWx1ZS5wdXNoKGVbbl0pfX19fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT09dGhpcy5faGFuZGxlc1tlXSl7dmFyIHQ9dGhpcy5faGFuZGxlc1tlXTt0fHwodD1bXSk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspdGhpcy5fa2V5c1t0W25dXS0tO2RlbGV0ZSB0aGlzLl9oYW5kbGVzW2VdLHRoaXMuX3VwZGF0ZVZhbHVlKCl9fX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX19LHtrZXk6Il9hbGxLZXlzIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3Qua2V5cyh0aGlzLl9rZXlzKTtyZXR1cm4gZS5zb3J0KGwpLGV9fV0pLGV9KCk7bi5kZWZhdWx0PWl9LHsiLi91dGlsIjoxMX1dLDQ6W2Z1bmN0aW9uKGwsZSxzKXsoZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiZyKGUucHJvdG90eXBlLHQpLG4mJnIoZSxuKSxlfX0oKSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfTtzLmRlZmF1bHQ9ZnVuY3Rpb24gZSh0KXt7aWYodCYmInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB1Lmhhc093blByb3BlcnR5KHQpfHwodVt0XT1uZXcgYSh0KSksdVt0XTtpZigib2JqZWN0Ij09PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnIodCkpJiZ0Ll92YXJzJiZ0LnZhcilyZXR1cm4gdDtpZihBcnJheS5pc0FycmF5KHQpJiYxPT10Lmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiB0WzBdKXJldHVybiBlKHRbMF0pO3Rocm93IG5ldyBFcnJvcigiSW52YWxpZCBncm91cE5hbWUgYXJndW1lbnQiKX19O3ZhciB0LGk9bCgiLi92YXIiKSxvPSh0PWkpJiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fTtlLl9fY3Jvc3N0YWxrX2dyb3Vwcz1lLl9fY3Jvc3N0YWxrX2dyb3Vwc3x8e307dmFyIHU9ZS5fX2Nyb3NzdGFsa19ncm91cHM7dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLHRoaXMubmFtZT1lLHRoaXMuX3ZhcnM9e319cmV0dXJuIG4odCxbe2tleToidmFyIix2YWx1ZTpmdW5jdGlvbihlKXtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB2YXIgbmFtZSIpO3JldHVybiB0aGlzLl92YXJzLmhhc093blByb3BlcnR5KGUpfHwodGhpcy5fdmFyc1tlXT1uZXcgby5kZWZhdWx0KHRoaXMsZSkpLHRoaXMuX3ZhcnNbZV19fSx7a2V5OiJoYXMiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHZhciBuYW1lIik7cmV0dXJuIHRoaXMuX3ZhcnMuaGFzT3duUHJvcGVydHkoZSl9fV0pLHR9KCl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiLi92YXIiOjEyfV0sNTpbZnVuY3Rpb24oZixlLGMpeyhmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB0LG49ZigiLi9ncm91cCIpLHI9KHQ9bikmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9LGk9ZigiLi9zZWxlY3Rpb24iKSxvPWYoIi4vZmlsdGVyIiksdT1mKCIuL2lucHV0Iik7ZigiLi9pbnB1dF9zZWxlY3RpemUiKSxmKCIuL2lucHV0X2NoZWNrYm94Z3JvdXAiKSxmKCIuL2lucHV0X3NsaWRlciIpO3ZhciBhPSgwLHIuZGVmYXVsdCkoImRlZmF1bHQiKTtmdW5jdGlvbiBsKGUpe3JldHVybiBhLnZhcihlKX1lLlNoaW55JiZlLlNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCJ1cGRhdGUtY2xpZW50LXZhbHVlIixmdW5jdGlvbihlKXsic3RyaW5nIj09dHlwZW9mIGUuZ3JvdXA/KDAsci5kZWZhdWx0KShlLmdyb3VwKS52YXIoZS5uYW1lKS5zZXQoZS52YWx1ZSk6bChlLm5hbWUpLnNldChlLnZhbHVlKX0pO3ZhciBzPXtncm91cDpyLmRlZmF1bHQsdmFyOmwsaGFzOmZ1bmN0aW9uKGUpe3JldHVybiBhLmhhcyhlKX0sU2VsZWN0aW9uSGFuZGxlOmkuU2VsZWN0aW9uSGFuZGxlLEZpbHRlckhhbmRsZTpvLkZpbHRlckhhbmRsZSxiaW5kOnUuYmluZH07Yy5kZWZhdWx0PXMsZS5jcm9zc3RhbGs9c30pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyIuL2ZpbHRlciI6MiwiLi9ncm91cCI6NCwiLi9pbnB1dCI6NiwiLi9pbnB1dF9jaGVja2JveGdyb3VwIjo3LCIuL2lucHV0X3NlbGVjdGl6ZSI6OCwiLi9pbnB1dF9zbGlkZXIiOjksIi4vc2VsZWN0aW9uIjoxMH1dLDY6W2Z1bmN0aW9uKGUsdCxhKXsoZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxhLnJlZ2lzdGVyPWZ1bmN0aW9uKGUpe3JbZS5jbGFzc05hbWVdPWUsdC5kb2N1bWVudCYmImNvbXBsZXRlIiE9PXQuZG9jdW1lbnQucmVhZHlTdGF0ZT9vKGZ1bmN0aW9uKCl7bigpfSk6dC5kb2N1bWVudCYmc2V0VGltZW91dChuLDEwMCl9LGEuYmluZD1uO3ZhciBvPXQualF1ZXJ5LHI9e307ZnVuY3Rpb24gbigpe09iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG49cltlXTtvKCIuIituLmNsYXNzTmFtZSkubm90KCIuY3Jvc3N0YWxrLWlucHV0LWJvdW5kIikuZWFjaChmdW5jdGlvbihlLHQpe2kobix0KX0pfSl9ZnVuY3Rpb24gaShlLHQpe3ZhciBuPW8odCkuZmluZCgic2NyaXB0W3R5cGU9J2FwcGxpY2F0aW9uL2pzb24nXVtkYXRhLWZvcj0nIit0LmlkLnJlcGxhY2UoLyhbISIjJCUmJygpKissLi86Ozw9Pj9AW1xcXF1eYHt8fX5dKS9nLCJcXCQxIikrIiddIikscj1KU09OLnBhcnNlKG5bMF0uaW5uZXJUZXh0KSxpPWUuZmFjdG9yeSh0LHIpO28odCkuZGF0YSgiY3Jvc3N0YWxrLWluc3RhbmNlIixpKSxvKHQpLmFkZENsYXNzKCJjcm9zc3RhbGstaW5wdXQtYm91bmQiKX1pZih0LlNoaW55KXt2YXIgZT1uZXcgdC5TaGlueS5JbnB1dEJpbmRpbmcsdT10LmpRdWVyeTt1LmV4dGVuZChlLHtmaW5kOmZ1bmN0aW9uKGUpe3JldHVybiB1KGUpLmZpbmQoIi5jcm9zc3RhbGstaW5wdXQiKX0saW5pdGlhbGl6ZTpmdW5jdGlvbihlKXt2YXIgdCxuO3UoZSkuaGFzQ2xhc3MoImNyb3NzdGFsay1pbnB1dC1ib3VuZCIpfHwobj1vKHQ9ZSksT2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbihlKXtuLmhhc0NsYXNzKGUpJiYhbi5oYXNDbGFzcygiY3Jvc3N0YWxrLWlucHV0LWJvdW5kIikmJmkocltlXSx0KX0pKX0sZ2V0SWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWR9LGdldFZhbHVlOmZ1bmN0aW9uKGUpe30sc2V0VmFsdWU6ZnVuY3Rpb24oZSx0KXt9LHJlY2VpdmVNZXNzYWdlOmZ1bmN0aW9uKGUsdCl7fSxzdWJzY3JpYmU6ZnVuY3Rpb24oZSx0KXt1KGUpLmRhdGEoImNyb3NzdGFsay1pbnN0YW5jZSIpLnJlc3VtZSgpfSx1bnN1YnNjcmliZTpmdW5jdGlvbihlKXt1KGUpLmRhdGEoImNyb3NzdGFsay1pbnN0YW5jZSIpLnN1c3BlbmQoKX19KSx0LlNoaW55LmlucHV0QmluZGluZ3MucmVnaXN0ZXIoZSwiY3Jvc3N0YWxrLmlucHV0QmluZGluZyIpfX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se31dLDc6W2Z1bmN0aW9uKHIsZSx0KXsoZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO3ZhciB0PWZ1bmN0aW9uKGUpe3tpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9fShyKCIuL2lucHV0IikpLG49cigiLi9maWx0ZXIiKTt2YXIgYT1lLmpRdWVyeTt0LnJlZ2lzdGVyKHtjbGFzc05hbWU6ImNyb3NzdGFsay1pbnB1dC1jaGVja2JveGdyb3VwIixmYWN0b3J5OmZ1bmN0aW9uKGUscil7dmFyIGk9bmV3IG4uRmlsdGVySGFuZGxlKHIuZ3JvdXApLG89dm9pZCAwLHU9YShlKTtyZXR1cm4gdS5vbigiY2hhbmdlIiwiaW5wdXRbdHlwZT0nY2hlY2tib3gnXSIsZnVuY3Rpb24oKXt2YXIgZT11LmZpbmQoImlucHV0W3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZCIpO2lmKDA9PT1lLmxlbmd0aClvPW51bGwsaS5jbGVhcigpO2Vsc2V7dmFyIHQ9e307ZS5lYWNoKGZ1bmN0aW9uKCl7ci5tYXBbdGhpcy52YWx1ZV0uZm9yRWFjaChmdW5jdGlvbihlKXt0W2VdPSEwfSl9KTt2YXIgbj1PYmplY3Qua2V5cyh0KTtuLnNvcnQoKSxvPW4saS5zZXQobil9fSkse3N1c3BlbmQ6ZnVuY3Rpb24oKXtpLmNsZWFyKCl9LHJlc3VtZTpmdW5jdGlvbigpe28mJmkuc2V0KG8pfX19fSl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiLi9maWx0ZXIiOjIsIi4vaW5wdXQiOjZ9XSw4OltmdW5jdGlvbihyLGUsdCl7KGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1uKHIoIi4vaW5wdXQiKSksbD1uKHIoIi4vdXRpbCIpKSxzPXIoIi4vZmlsdGVyIik7ZnVuY3Rpb24gbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9dmFyIGY9ZS5qUXVlcnk7dC5yZWdpc3Rlcih7Y2xhc3NOYW1lOiJjcm9zc3RhbGstaW5wdXQtc2VsZWN0IixmYWN0b3J5OmZ1bmN0aW9uKGUsbil7dmFyIHQ9bC5kYXRhZnJhbWVUb0QzKG4uaXRlbXMpLHI9e29wdGlvbnM6W3t2YWx1ZToiIixsYWJlbDoiKEFsbCkifV0uY29uY2F0KHQpLHZhbHVlRmllbGQ6InZhbHVlIixsYWJlbEZpZWxkOiJsYWJlbCIsc2VhcmNoRmllbGQ6ImxhYmVsIn0saT1mKGUpLmZpbmQoInNlbGVjdCIpWzBdLG89ZihpKS5zZWxlY3RpemUocilbMF0uc2VsZWN0aXplLHU9bmV3IHMuRmlsdGVySGFuZGxlKG4uZ3JvdXApLGE9dm9pZCAwO3JldHVybiBvLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7aWYoMD09PW8uaXRlbXMubGVuZ3RoKWE9bnVsbCx1LmNsZWFyKCk7ZWxzZXt2YXIgdD17fTtvLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oZSl7bi5tYXBbZV0uZm9yRWFjaChmdW5jdGlvbihlKXt0W2VdPSEwfSl9KTt2YXIgZT1PYmplY3Qua2V5cyh0KTtlLnNvcnQoKSxhPWUsdS5zZXQoZSl9fSkse3N1c3BlbmQ6ZnVuY3Rpb24oKXt1LmNsZWFyKCl9LHJlc3VtZTpmdW5jdGlvbigpe2EmJnUuc2V0KGEpfX19fSl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiLi9maWx0ZXIiOjIsIi4vaW5wdXQiOjYsIi4vdXRpbCI6MTF9XSw5OltmdW5jdGlvbihuLGUsdCl7KGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgZD1mdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGU7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSlyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLGk9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgdSxhPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0odT1hLm5leHQoKSkuZG9uZSkmJihuLnB1c2godS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe2k9ITAsbz1lfWZpbmFsbHl7dHJ5eyFyJiZhLnJldHVybiYmYS5yZXR1cm4oKX1maW5hbGx5e2lmKGkpdGhyb3cgb319cmV0dXJuIG59KGUsdCk7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSx0PWZ1bmN0aW9uKGUpe3tpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9fShuKCIuL2lucHV0IikpLGE9bigiLi9maWx0ZXIiKTt2YXIgdj1lLmpRdWVyeSxwPWUuc3RyZnRpbWU7ZnVuY3Rpb24geShlLHQpe2Zvcih2YXIgbj1lLnRvU3RyaW5nKCk7bi5sZW5ndGg8dDspbj0iMCIrbjtyZXR1cm4gbn10LnJlZ2lzdGVyKHtjbGFzc05hbWU6ImNyb3NzdGFsay1pbnB1dC1zbGlkZXIiLGZhY3Rvcnk6ZnVuY3Rpb24oZSxsKXt2YXIgcz1uZXcgYS5GaWx0ZXJIYW5kbGUobC5ncm91cCksdD17fSxmPXYoZSkuZmluZCgiaW5wdXQiKSxuPWYuZGF0YSgiZGF0YS10eXBlIikscj1mLmRhdGEoInRpbWUtZm9ybWF0IiksaT1mLmRhdGEoInJvdW5kIiksbz12b2lkIDA7aWYoImRhdGUiPT09bilvPXAudXRjKCksdC5wcmV0dGlmeT1mdW5jdGlvbihlKXtyZXR1cm4gbyhyLG5ldyBEYXRlKGUpKX07ZWxzZSBpZigiZGF0ZXRpbWUiPT09bil7dmFyIHU9Zi5kYXRhKCJ0aW1lem9uZSIpO289dT9wLnRpbWV6b25lKHUpOnAsdC5wcmV0dGlmeT1mdW5jdGlvbihlKXtyZXR1cm4gbyhyLG5ldyBEYXRlKGUpKX19ZWxzZSJudW1iZXIiPT09biYmdm9pZCAwIT09aSYmKHQucHJldHRpZnk9ZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aC5wb3coMTAsaSk7cmV0dXJuIE1hdGgucm91bmQoZSp0KS90fSk7ZnVuY3Rpb24gYygpe3ZhciBlPWYuZGF0YSgiaW9uUmFuZ2VTbGlkZXIiKS5yZXN1bHQsdD12b2lkIDAsbj1mLmRhdGEoImRhdGEtdHlwZSIpO3JldHVybiB0PSJkYXRlIj09PW4/ZnVuY3Rpb24oZSl7cmV0dXJuKHQ9bmV3IERhdGUoK2UpKWluc3RhbmNlb2YgRGF0ZT90LmdldFVUQ0Z1bGxZZWFyKCkrIi0iK3kodC5nZXRVVENNb250aCgpKzEsMikrIi0iK3kodC5nZXRVVENEYXRlKCksMik6bnVsbDt2YXIgdH06ImRhdGV0aW1lIj09PW4/ZnVuY3Rpb24oZSl7cmV0dXJuK2UvMWUzfTpmdW5jdGlvbihlKXtyZXR1cm4rZX0sImRvdWJsZSI9PT1mLmRhdGEoImlvblJhbmdlU2xpZGVyIikub3B0aW9ucy50eXBlP1t0KGUuZnJvbSksdChlLnRvKV06dChlLmZyb20pfWYuaW9uUmFuZ2VTbGlkZXIodCk7dmFyIGg9bnVsbDtyZXR1cm4gZi5vbigiY2hhbmdlLmNyb3NzdGFsa1NsaWRlcklucHV0IixmdW5jdGlvbihlKXtpZighZi5kYXRhKCJ1cGRhdGluZyIpJiYhZi5kYXRhKCJhbmltYXRpbmciKSl7Zm9yKHZhciB0PWMoKSxuPWQodCwyKSxyPW5bMF0saT1uWzFdLG89W10sdT0wO3U8bC52YWx1ZXMubGVuZ3RoO3UrKyl7dmFyIGE9bC52YWx1ZXNbdV07cjw9YSYmYTw9aSYmby5wdXNoKGwua2V5c1t1XSl9by5zb3J0KCkscy5zZXQobyksaD1vfX0pLHtzdXNwZW5kOmZ1bmN0aW9uKCl7cy5jbGVhcigpfSxyZXN1bWU6ZnVuY3Rpb24oKXtoJiZzLnNldChoKX19fX0pfSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7Ii4vZmlsdGVyIjoyLCIuL2lucHV0Ijo2fV0sMTA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4uU2VsZWN0aW9uSGFuZGxlPXZvaWQgMDt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiZyKGUucHJvdG90eXBlLHQpLG4mJnIoZSxuKSxlfX0oKSxpPWEoZSgiLi9ldmVudHMiKSksbz1hKGUoIi4vZ3JvdXAiKSksdT1mdW5jdGlvbihlKXt7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fX0oZSgiLi91dGlsIikpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fW4uU2VsZWN0aW9uSGFuZGxlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3ZhciBlPTA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLHQ9MTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsbiksdGhpcy5fZXZlbnRSZWxheT1uZXcgaS5kZWZhdWx0LHRoaXMuX2VtaXR0ZXI9bmV3IHUuU3Vic2NyaXB0aW9uVHJhY2tlcih0aGlzLl9ldmVudFJlbGF5KSx0aGlzLl9ncm91cD1udWxsLHRoaXMuX3Zhcj1udWxsLHRoaXMuX3Zhck9uQ2hhbmdlU3ViPW51bGwsdGhpcy5fZXh0cmFJbmZvPXUuZXh0ZW5kKHtzZW5kZXI6dGhpc30sdCksdGhpcy5zZXRHcm91cChlKX1yZXR1cm4gcihuLFt7a2V5OiJzZXRHcm91cCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZih0aGlzLl9ncm91cCE9PWUmJih0aGlzLl9ncm91cHx8ZSkmJih0aGlzLl92YXImJih0aGlzLl92YXIub2ZmKCJjaGFuZ2UiLHRoaXMuX3Zhck9uQ2hhbmdlU3ViKSx0aGlzLl92YXI9bnVsbCx0aGlzLl92YXJPbkNoYW5nZVN1Yj1udWxsKSx0aGlzLl9ncm91cD1lKSl7dGhpcy5fdmFyPSgwLG8uZGVmYXVsdCkoZSkudmFyKCJzZWxlY3Rpb24iKTt2YXIgbj10aGlzLl92YXIub24oImNoYW5nZSIsZnVuY3Rpb24oZSl7dC5fZXZlbnRSZWxheS50cmlnZ2VyKCJjaGFuZ2UiLGUsdCl9KTt0aGlzLl92YXJPbkNoYW5nZVN1Yj1ufX19LHtrZXk6Il9tZXJnZUV4dHJhSW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHUuZXh0ZW5kKHt9LHRoaXMuX2V4dHJhSW5mbz90aGlzLl9leHRyYUluZm86bnVsbCxlfHxudWxsKX19LHtrZXk6InNldCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLl92YXImJnRoaXMuX3Zhci5zZXQoZSx0aGlzLl9tZXJnZUV4dHJhSW5mbyh0KSl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fdmFyJiZ0aGlzLnNldCh2b2lkIDAsdGhpcy5fbWVyZ2VFeHRyYUluZm8oZSkpfX0se2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2VtaXR0ZXIub24oZSx0KX19LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fZW1pdHRlci5vZmYoZSx0KX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2VtaXR0ZXIucmVtb3ZlQWxsTGlzdGVuZXJzKCksdGhpcy5zZXRHcm91cChudWxsKX19LHtrZXk6InZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFyP3RoaXMuX3Zhci5nZXQoKTpudWxsfX1dKSxufSgpfSx7Ii4vZXZlbnRzIjoxLCIuL2dyb3VwIjo0LCIuL3V0aWwiOjExfV0sMTE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQmJnIoZS5wcm90b3R5cGUsdCksbiYmcihlLG4pLGV9fSgpLGw9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9O2Z1bmN0aW9uIHUoZSl7Zm9yKHZhciB0PTE7dDxlLmxlbmd0aDt0KyspaWYoZVt0XTw9ZVt0LTFdKXRocm93IG5ldyBFcnJvcigiTGlzdCBpcyBub3Qgc29ydGVkIG9yIGNvbnRhaW5zIGR1cGxpY2F0ZSIpfW4uZXh0ZW5kPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkoMTx0P3QtMTowKSxyPTE7cjx0O3IrKyluW3ItMV09YXJndW1lbnRzW3JdO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1uW2ldO2lmKG51bGwhPW8pZm9yKHZhciB1IGluIG8pby5oYXNPd25Qcm9wZXJ0eSh1KSYmKGVbdV09b1t1XSl9cmV0dXJuIGV9LG4uY2hlY2tTb3J0ZWQ9dSxuLmRpZmZTb3J0ZWRMaXN0cz1mdW5jdGlvbihlLHQpe3ZhciBuPTAscj0wO2V8fChlPVtdKTt0fHwodD1bXSk7dmFyIGk9W10sbz1bXTt1KGUpLHUodCk7Zm9yKDtuPGUubGVuZ3RoJiZyPHQubGVuZ3RoOyllW25dPT09dFtyXT8obisrLHIrKyk6ZVtuXTx0W3JdP2kucHVzaChlW24rK10pOm8ucHVzaCh0W3IrK10pO248ZS5sZW5ndGgmJihpPWkuY29uY2F0KGUuc2xpY2UobikpKTtyPHQubGVuZ3RoJiYobz1vLmNvbmNhdCh0LnNsaWNlKHIpKSk7cmV0dXJue3JlbW92ZWQ6aSxhZGRlZDpvfX0sbi5kYXRhZnJhbWVUb0QzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49dm9pZCAwO2Zvcih2YXIgciBpbiBlKXtpZihlLmhhc093blByb3BlcnR5KHIpJiZ0LnB1c2gociksIm9iamVjdCIhPT1sKGVbcl0pfHx2b2lkIDA9PT1lW3JdLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMiKTtpZih2b2lkIDAhPT1uJiZuIT09ZVtyXS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIG9mIHRoZSBzYW1lIGxlbmd0aCIpO249ZVtyXS5sZW5ndGh9Zm9yKHZhciBpPVtdLG89dm9pZCAwLHU9MDt1PG47dSsrKXtvPXt9O2Zvcih2YXIgYT0wO2E8dC5sZW5ndGg7YSsrKW9bdFthXV09ZVt0W2FdXVt1XTtpLnB1c2gobyl9cmV0dXJuIGl9O24uU3Vic2NyaXB0aW9uVHJhY2tlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCksdGhpcy5fZW1pdHRlcj1lLHRoaXMuX3N1YnM9e319cmV0dXJuIHIodCxbe2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fZW1pdHRlci5vbihlLHQpO3JldHVybiB0aGlzLl9zdWJzW25dPWUsbn19LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9lbWl0dGVyLm9mZihlLHQpO3JldHVybiBuJiZkZWxldGUgdGhpcy5fc3Vic1tuXSxufX0se2tleToicmVtb3ZlQWxsTGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj10aGlzLl9zdWJzO3RoaXMuX3N1YnM9e30sT2JqZWN0LmtleXMobikuZm9yRWFjaChmdW5jdGlvbihlKXt0Ll9lbWl0dGVyLm9mZihuW2VdLGUpfSl9fV0pLHR9KCl9LHt9XSwxMjpbZnVuY3Rpb24oYSxlLGwpeyhmdW5jdGlvbihvKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlLHU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCYmcihlLnByb3RvdHlwZSx0KSxuJiZyKGUsbiksZX19KCksbj1hKCIuL2V2ZW50cyIpLGk9KGU9bikmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9O3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLHQsbil7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsciksdGhpcy5fZ3JvdXA9ZSx0aGlzLl9uYW1lPXQsdGhpcy5fdmFsdWU9bix0aGlzLl9ldmVudHM9bmV3IGkuZGVmYXVsdH1yZXR1cm4gdChyLFt7a2V5OiJnZXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX0se2tleToic2V0Iix2YWx1ZTpmdW5jdGlvbihlLHQpe2lmKHRoaXMuX3ZhbHVlIT09ZSl7dmFyIG49dGhpcy5fdmFsdWU7dGhpcy5fdmFsdWU9ZTt2YXIgcj17fTtpZih0JiYib2JqZWN0Ij09PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnUodCkpKWZvcih2YXIgaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJihyW2ldPXRbaV0pO3Iub2xkVmFsdWU9bixyLnZhbHVlPWUsdGhpcy5fZXZlbnRzLnRyaWdnZXIoImNoYW5nZSIscix0aGlzKSxvLlNoaW55JiZvLlNoaW55Lm9uSW5wdXRDaGFuZ2UmJm8uU2hpbnkub25JbnB1dENoYW5nZSgiLmNsaWVudFZhbHVlLSIrKG51bGwhPT10aGlzLl9ncm91cC5uYW1lP3RoaXMuX2dyb3VwLm5hbWUrIi0iOiIiKSt0aGlzLl9uYW1lLHZvaWQgMD09PWU/bnVsbDplKX19fSx7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fZXZlbnRzLm9uKGUsdCl9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2V2ZW50cy5vZmYoZSx0KX19XSkscn0oKTtsLmRlZmF1bHQ9cn0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyIuL2V2ZW50cyI6MX1dfSx7fSxbNV0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1jcm9zc3RhbGsubWluLmpzLm1hcA=="></script>
</head>
<body>
<div id="htmlwidget_container">
<div class="datatables html-widget html-fill-item" id="htmlwidget-4e76decdcbbf63c62edc" style="width:100%;height:auto;"></div>
</div>
<script type="application/json" data-for="htmlwidget-4e76decdcbbf63c62edc">{"x":{"filter":"none","vertical":false,"extensions":["Scroller"],"data":[["Food","Food at home","Cereals and bakery","Cereals","Bakery","Beef and veal","Pork","Other meats","Poultry","Fish and seafood","Eggs","Dairy","Fresh fruits","Fresh vegetables","Processed fruits and vegetables","Nonalcoholic beverages and beverage materials","Nonalcoholic drinks","Beverage materials","Sugar and sweets","Fats and oils","Other foods","Food away from home","Alcoholic beverages","Alcoholic beverages at home","Alcoholic beverages away from home","Housing","Shelter","Rent of primary residence","Lodging away from home","Housing at school, excluding board","Other lodging away from home","Owners' equivalent rent of residence","Tenants' and household insurance","Fuel oil and other fuels","Energy services","Electricity","Utility gas service","Water and sewer and trash collection","Water and sewerage maintenance","Garbage and trash collection","Household furnishings and operations","Household furnishings and supplies","Window and floor coverings","Furniture bedding","Appliances","Other household equipment","Tools, hardware, outdoor equipment and supplies","Housekeeping supplies","Apparel","Men's and boys' apparel","Men's apparel","Boys' apparel","Women's apparel","Girls' apparel","Footwear","Infants' and toddlers' apparel","Jewelry and watches","Transportation","Private transportation","Transportation goods","New and used motor vehicles","New vehicles","Used cars and trucks","Car and truck rental","Motor fuel","Gasoline","Motor vehicle parts and equipment","Motor vehicle maintenance and repair","Motor vehicle insurance","Motor vehicle fees","Public transportation","Airline fares","Medical care","Medical care goods","Medical care services","Professional services","Hospital and related services","Health insurance","Medicinal drugs","Medical equipment and supplies","Recreation","Recreation goods","Recreation services","Video and audio","Televisions","Cable, satellite and live streaming television service","Other video equipment","Purchase, subscription and rental of video","Audio equipment","Recorded music and music subscriptions","Pets products and services","Pets and pet products","Pet services including veterinary","Sporting goods","Photography","Photographic equipment and supplies","Photographers and photo processing","Other recreational goods","Toys","Sewing machines, fabric and supplies","Music instruments and accessories","Other recreation services","Club membership","Admissions","Fees for lessons or instructions","Recreational reading materials","Education and communication","Education and communication goods","Education and communication services","Educational books and supplies","Tuition, other school fees, and childcare","Postage and delivery services","Postage","Delivery services","Telephone services","Information technology","Computers and peripherals","Computer software and accessories","Internet services and electronic information providers","Telephone hardware and other consumer information items","Other goods and services","Other goods","Other personal services","Tobacco and smoking products","Personal care","Personal care products","Personal care services","Miscellaneous personal services","Miscellaneous personal goods","All Items","Energy","Core CPI","All items less food","All items less energy","All items less shelter","Core less shelter","Core less shelter and used cars","Goods","Core goods","Nondurables","Nondurables less food","Durables","Energy goods","Services","Core services","Services less shelter","Rent of shelter","Transportation services"],["Food","Food at home","Cereals and bakery","Cereals","Bakery","Beef and veal","Pork","Other meats","Poultry","Fish and seafood","Eggs","Dairy","Fresh fruits","Fresh vegetables","Processed fruits and vegetables","Nonalcoholic beverages and beverage materials","Nonalcoholic drinks","Beverage materials","Sugar and sweets","Fats and oils","Other foods","Food away from home","Alcoholic beverages","Alcoholic beverages at home","Alcoholic beverages away from home","Housing","Shelter","Rent of primary residence","Lodging away from home","Housing at school, excluding board","Other lodging away from home","Owners' equivalent rent of residence","Tenants' and household insurance","Fuel oil and other fuels","Energy services","Electricity","Utility gas service","Water and sewer and trash collection","Water and sewerage maintenance","Garbage and trash collection","Household furnishings and operations","Household furnishings and supplies","Window and floor coverings","Furniture bedding","Appliances","Other household equipment","Tools, hardware, outdoor equipment and supplies","Housekeeping supplies","Apparel","Men's and boys' apparel","Men's apparel","Boys' apparel","Women's apparel","Girls' apparel","Footwear","Infants' and toddlers' apparel","Jewelry and watches","Transportation","Private transportation","Transportation goods","New and used motor vehicles","New vehicles","Used cars and trucks","Car and truck rental","Motor fuel","Gasoline","Motor vehicle parts and equipment","Motor vehicle maintenance and repair","Motor vehicle insurance","Motor vehicle fees","Public transportation","Airline fares","Medical care","Medical care goods","Medical care services","Professional services","Hospital and related services","Health insurance","Medicinal drugs","Medical equipment and supplies","Recreation","Recreation goods","Recreation services","Video and audio","Televisions","Cable and satellite television service","Other video equipment","Video discs and other media","Audio equipment","Recorded music and music subscriptions","Pets products and services","Pets and pet products","Pet services including veterinary","Sporting goods","Photography","Photographic equipment and supplies","Photographers and photo processing","Other recreational goods","Toys","Sewing machines, fabric and supplies","Music instruments and accessories","Other recreation services","Club membership","Admissions","Fees for lessons or instructions","Recreational reading materials","Education and communication","Education and communication goods","Education and communication services","Educational books and supplies","Tuition, other school fees, and childcare","Postage and delivery services","Postage","Delivery services","Telephone services","Information technology","Computers and peripherals","Computer software and accessories","Internet services and electronic information providers","Telephone hardware and other consumer information items","Other goods and services","Other goods","Other personal services","Tobacco and smoking products","Personal care","Personal care products","Personal care services","Miscellaneous personal services","Miscellaneous personal goods","All Items","Energy","Core CPI","All items less food","All items less energy","All items less shelter","Core less shelter","Core less shelter and used cars","Goods","Core goods","Nondurables","Nondurables less food","Durables","Energy goods","Services","Core services","Services less shelter","Rent of shelter","Transportation services"],["CUSR0000SAF1","CUSR0000SAF11","CUSR0000SAF111","CUSR0000SEFA","CUSR0000SEFB","CUSR0000SEFC","CUSR0000SEFD","CUSR0000SEFE","CUSR0000SEFF","CUSR0000SEFG","CUSR0000SEFH","CUSR0000SEFJ","CUSR0000SEFK","CUSR0000SEFL","CUSR0000SEFM","CUSR0000SAF114","CUSR0000SEFN","CUSR0000SEFP","CUSR0000SEFR","CUSR0000SEFS","CUSR0000SEFT","CUSR0000SEFV","CUSR0000SAF116","CUSR0000SEFW","CUSR0000SEFX","CUSR0000SAH","CUSR0000SAH1","CUSR0000SEHA","CUSR0000SEHB","CUSR0000SEHB01","CUSR0000SEHB02","CUSR0000SEHC","CUUR0000SEHD","CUSR0000SEHE","CUSR0000SEHF","CUSR0000SEHF01","CUSR0000SEHF02","CUSR0000SEHG","CUSR0000SEHG01","CUSR0000SEHG02","CUSR0000SAH3","CUSR0000SAH31","CUSR0000SEHH","CUSR0000SEHJ","CUSR0000SEHK","CUSR0000SEHL","CUSR0000SEHM","CUSR0000SEHN","CUSR0000SAA","CUSR0000SAA1","CUSR0000SEAA","CUSR0000SEAB","CUSR0000SEAC","CUSR0000SEAD","CUSR0000SEAE","CUSR0000SEAF","CUSR0000SEAG","CUSR0000SAT","CUSR0000SAT1","CUSR0000SATCLTB","CUSR0000SETA","CUSR0000SETA01","CUSR0000SETA02","CUSR0000SETA04","CUSR0000SETB","CUSR0000SETB01","CUSR0000SETC","CUSR0000SETD","CUSR0000SETE","CUUR0000SETF","CUSR0000SETG","CUSR0000SETG01","CUSR0000SAM","CUSR0000SAM1","CUSR0000SAM2","CUSR0000SEMC","CUSR0000SEMD","CUUR0000SEME","CUSR0000SEMF","CUUR0000SEMG","CUSR0000SAR","CUSR0000SARC","CUSR0000SARS","CUSR0000SERA","CUSR0000SERA01","CUSR0000SERA02","CUSR0000SERA03","CUUR0000SERA04","CUSR0000SERA05","CUUR0000SERA06","CUSR0000SERB","CUSR0000SERB01","CUSR0000SERB02","CUSR0000SERC","CUSR0000SERD","CUSR0000SERD01","CUUR0000SERD02","CUSR0000SERE","CUSR0000SERE01","CUSR0000SERE02","CUSR0000SERE03","CUSR0000SERF","CUUR0000SERF01","CUSR0000SERF02","CUSR0000SERF03","CUSR0000SERG","CUSR0000SAE","CUSR0000SAEC","CUSR0000SAES","CUSR0000SEEA","CUSR0000SEEB","CUSR0000SEEC","CUSR0000SEEC01","CUSR0000SEEC02","CUUR0000SEED","CUSR0000SEEE","CUSR0000SEEE01","CUUR0000SEEE02","CUSR0000SEEE03","CUSR0000SEEE04","CUSR0000SAG","CUSR0000SAGC","CUUR0000SAGS","CUSR0000SEGA","CUSR0000SAG1","CUUR0000SEGB","CUUR0000SEGC","CUSR0000SEGD","CUSR0000SEGE","CUSR0000SA0","CUSR0000SA0E","CUSR0000SA0L1E","CUSR0000SA0L1","CUSR0000SA0LE","CUSR0000SA0L2","CUSR0000SA0L12E","CUSR0000SA0L12E4","CUSR0000SAC","CUSR0000SACL1E","CUSR0000SAN","CUSR0000SANL1","CUSR0000SAD","CUSR0000SACE","CUSR0000SAS","CUSR0000SASLE","CUSR0000SASL2RS","CUSR0000SAS2RS","CUSR0000SAS4"],["CUUR0000SAF1","CUUR0000SAF11","CUUR0000SAF111","CUUR0000SEFA","CUUR0000SEFB","CUUR0000SEFC","CUUR0000SEFD","CUUR0000SEFE","CUUR0000SEFF","CUUR0000SEFG","CUUR0000SEFH","CUUR0000SEFJ","CUUR0000SEFK","CUUR0000SEFL","CUUR0000SEFM","CUUR0000SAF114","CUUR0000SEFN","CUUR0000SEFP","CUUR0000SEFR","CUUR0000SEFS","CUUR0000SEFT","CUUR0000SEFV","CUUR0000SAF116","CUUR0000SEFW","CUUR0000SEFX","CUUR0000SAH","CUUR0000SAH1","CUUR0000SEHA","CUUR0000SEHB","CUUR0000SEHB01","CUUR0000SEHB02","CUUR0000SEHC","CUUR0000SEHD","CUUR0000SEHE","CUUR0000SEHF","CUUR0000SEHF01","CUUR0000SEHF02","CUUR0000SEHG","CUUR0000SEHG01","CUUR0000SEHG02","CUUR0000SAH3","CUUR0000SAH31","CUUR0000SEHH","CUUR0000SEHJ","CUUR0000SEHK","CUUR0000SEHL","CUUR0000SEHM","CUUR0000SEHN","CUUR0000SAA","CUUR0000SAA1","CUUR0000SEAA","CUUR0000SEAB","CUUR0000SEAC","CUUR0000SEAD","CUUR0000SEAE","CUUR0000SEAF","CUUR0000SEAG","CUUR0000SAT","CUUR0000SAT1","CUUR0000SATCLTB","CUUR0000SETA","CUUR0000SETA01","CUUR0000SETA02","CUUR0000SETA04","CUUR0000SETB","CUUR0000SETB01","CUUR0000SETC","CUUR0000SETD","CUUR0000SETE","CUUR0000SETF","CUUR0000SETG","CUUR0000SETG01","CUUR0000SAM","CUUR0000SAM1","CUUR0000SAM2","CUUR0000SEMC","CUUR0000SEMD","CUUR0000SEME","CUUR0000SEMF","CUUR0000SEMG","CUUR0000SAR","CUUR0000SARC","CUUR0000SARS","CUUR0000SERA","CUUR0000SERA01","CUUR0000SERA02","CUUR0000SERA03","CUUR0000SERA04","CUUR0000SERA05","CUUR0000SERA06","CUUR0000SERB","CUUR0000SERB01","CUUR0000SERB02","CUUR0000SERC","CUUR0000SERD","CUUR0000SERD01","CUUR0000SERD02","CUUR0000SERE","CUUR0000SERE01","CUUR0000SERE02","CUUR0000SERE03","CUUR0000SERF","CUUR0000SERF01","CUUR0000SERF02","CUUR0000SERF03","CUUR0000SERG","CUUR0000SAE","CUUR0000SAEC","CUUR0000SAES","CUUR0000SEEA","CUUR0000SEEB","CUUR0000SEEC","CUUR0000SEEC01","CUUR0000SEEC02","CUUR0000SEED","CUUR0000SEEE","CUUR0000SEEE01","CUUR0000SEEE02","CUUR0000SEEE03","CUUR0000SEEE04","CUUR0000SAG","CUUR0000SAGC","CUUR0000SAGS","CUUR0000SEGA","CUUR0000SAG1","CUUR0000SEGB","CUUR0000SEGC","CUUR0000SEGD","CUUR0000SEGE","CUUR0000SA0","CUUR0000SA0E","CUUR0000SA0L1E","CUUR0000SA0L1","CUUR0000SA0LE","CUUR0000SA0L2","CUUR0000SA0L12E","CUUR0000SA0L12E4","CUUR0000SAC","CUUR0000SACL1E","CUUR0000SAN","CUUR0000SANL1","CUUR0000SAD","CUUR0000SACE","CUUR0000SAS","CUUR0000SASLE","CUUR0000SASL2RS","CUUR0000SAS2RS","CUUR0000SAS4"],[2,3,4,5,10,25,30,38,41,46,51,52,61,67,72,80,81,85,91,95,102,114,232,233,239,364,253,255,256,257,258,259,261,124,133,134,135,262,263,264,385,139,140,144,148,152,157,160,164,165,166,171,173,178,179,183,184,381,382,187,383,188,191,285,127,128,192,286,290,291,295,296,380,197,270,271,276,282,198,201,370,202,301,371,204,303,205,304,206,207,372,208,307,211,373,214,310,219,220,222,223,311,312,313,316,216,365,224,317,225,318,323,324,325,326,369,228,229,329,230,386,243,330,244,387,247,331,333,250,1,122,137,344,350,345,347,348,351,138,359,360,358,123,355,252,356,254,283],[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[0,0,1,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,0,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,0,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1,0,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0,1,1,0,0,1,1,1,1,0,0,1,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,1,0,0,1,1,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,1,1,0,0,1,1,0,0,0,0,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[14.255,8.608000000000001,1.24,0.478,0.762,0.551,0.374,0.268,0.337,0.303,0.108,0.912,0.495,0.462,0.308,0.96,0.717,0.244,0.308,0.267,1.715,5.648,0.953,0.576,0.377,40.832,31.413,6.453,0.793,0.154,0.639,23.823,0.345,0.35,3.8,2.894,0.907,1.163,0.874,0.288,4.106,3.379,0.279,0.718,0.293,0.503,0.6870000000000001,0.899,3.527,0.85,0.677,0.173,1.232,0.249,0.669,0.199,0.327,17.196,16.03,5.585,5.607,3.197,1.882,0.066,5.872,5.681,0.436,1.151,2.401,0.5629999999999999,1.166,0.759,7.083,1.725,5.358,2.989,1.745,0.624,1.646,0.079,6.035,2.34,3.695,1.93,0.172,1.385,0.028,0.112,0.074,0.045,1.097,0.6899999999999999,0.407,0.464,0.114,0.054,0.058,0.477,0.357,0.061,0.039,1.732,0.5679999999999999,0.629,0.23,0.222,6.761,0.608,6.153,0.202,2.99,0.15,0.139,0.01,2.416,1.004,0.268,0.049,0.583,0.089,3.357,1.656,1.701,0.798,2.559,0.649,0.629,1.072,0.209,100,10.022,75.72199999999999,85.745,89.97799999999999,68.587,44.309,42.427,40.25,19.773,31.32,17.065,8.93,6.222,59.75,55.949,28.682,31.068,5.739],[14.167,8.550000000000001,1.227,0.473,0.755,0.551,0.374,0.268,0.339,0.302,0.107,0.904,0.489,0.453,0.304,0.951,0.711,0.241,0.308,0.265,1.707,5.616,0.944,0.571,0.373,40.592,31.259,6.414,0.8129999999999999,0.153,0.66,23.688,0.344,0.354,3.748,2.857,0.892,1.159,0.872,0.287,4.073,3.35,0.277,0.718,0.29,0.493,0.68,0.891,3.612,0.865,0.6820000000000001,0.183,1.286,0.259,0.676,0.2,0.327,17.577,16.403,5.565,5.589,3.173,1.889,0.068,6.293,6.095,0.433,1.141,2.388,0.5590000000000001,1.173,0.767,7.047,1.719,5.328,2.969,1.732,0.627,1.64,0.078,6.008,2.32,3.688,1.924,0.168,1.387,0.027,0.112,0.073,0.044,1.094,0.6889999999999999,0.405,0.459,0.113,0.053,0.058,0.47,0.351,0.061,0.039,1.726,0.5679999999999999,0.625,0.228,0.222,6.712,0.601,6.111,0.201,2.968,0.148,0.138,0.01,2.399,0.995,0.264,0.048,0.581,0.08799999999999999,3.341,1.65,1.692,0.79,2.552,0.652,0.626,1.066,0.208,100,10.395,75.438,85.833,89.605,68.741,44.179,42.29,40.573,19.76,31.699,17.533,8.874000000000001,6.647,59.427,55.679,28.512,30.915,5.719],[14.151,8.537000000000001,1.228,0.473,0.754,0.551,0.371,0.265,0.339,0.305,0.108,0.893,0.5,0.45,0.304,0.947,0.706,0.241,0.308,0.262,1.706,5.614,0.9409999999999999,0.5669999999999999,0.374,40.506,31.216,6.403,0.8100000000000001,0.152,0.658,23.657,0.346,0.348,3.718,2.853,0.865,1.163,0.877,0.286,4.061,3.337,0.275,0.716,0.289,0.491,0.681,0.886,3.636,0.876,0.6899999999999999,0.185,1.305,0.252,0.6830000000000001,0.199,0.321,17.702,16.507,5.583,5.608,3.168,1.914,0.06900000000000001,6.385,6.186,0.432,1.137,2.388,0.5570000000000001,1.195,0.788,7.042,1.713,5.33,2.964,1.735,0.631,1.635,0.078,5.989,2.305,3.683,1.919,0.165,1.387,0.027,0.112,0.07199999999999999,0.044,1.091,0.6860000000000001,0.405,0.46,0.113,0.054,0.058,0.464,0.345,0.061,0.039,1.719,0.5649999999999999,0.623,0.228,0.222,6.694,0.595,6.099,0.2,2.959,0.148,0.138,0.01,2.394,0.992,0.26,0.048,0.583,0.08699999999999999,3.34,1.647,1.692,0.789,2.551,0.652,0.625,1.067,0.206,100,10.451,75.398,85.849,89.54900000000001,68.78400000000001,44.182,42.268,40.641,19.757,31.764,17.613,8.877000000000001,6.733,59.359,55.641,28.488,30.871,5.734],[14.174,8.539,1.232,0.477,0.755,0.555,0.368,0.263,0.335,0.304,0.102,0.89,0.509,0.447,0.306,0.9399999999999999,0.702,0.238,0.307,0.264,1.715,5.634,0.945,0.569,0.376,40.606,31.303,6.418,0.831,0.153,0.678,23.707,0.347,0.337,3.741,2.911,0.83,1.166,0.88,0.286,4.059,3.335,0.272,0.718,0.288,0.491,0.6820000000000001,0.883,3.618,0.877,0.696,0.182,1.292,0.246,0.6870000000000001,0.198,0.316,17.538,16.331,5.619,5.638,3.169,1.948,0.067,6.163,5.97,0.433,1.142,2.396,0.5580000000000001,1.208,0.799,7.071,1.715,5.356,2.978,1.741,0.637,1.636,0.079,5.998,2.305,3.693,1.922,0.163,1.394,0.027,0.112,0.07099999999999999,0.044,1.092,0.6870000000000001,0.406,0.459,0.113,0.054,0.058,0.466,0.346,0.061,0.039,1.722,0.5629999999999999,0.628,0.228,0.223,6.712,0.597,6.115,0.202,2.967,0.148,0.138,0.01,2.399,0.995,0.261,0.048,0.586,0.08699999999999999,3.34,1.641,1.698,0.788,2.551,0.647,0.626,1.072,0.206,100,10.241,75.58499999999999,85.82599999999999,89.759,68.697,44.282,42.334,40.448,19.774,31.536,17.362,8.912000000000001,6.5,59.552,55.811,28.596,30.957,5.757],[14.208,8.552,1.228,0.475,0.752,0.5590000000000001,0.368,0.263,0.341,0.306,0.103,0.889,0.503,0.456,0.307,0.9409999999999999,0.703,0.239,0.308,0.263,1.715,5.656,0.949,0.57,0.379,40.863,31.411,6.432,0.866,0.153,0.713,23.766,0.347,0.314,3.897,3.045,0.852,1.172,0.884,0.288,4.069,3.341,0.271,0.719,0.289,0.492,0.6820000000000001,0.889,3.554,0.861,0.6830000000000001,0.178,1.249,0.241,0.6860000000000001,0.198,0.32,17.214,16.01,5.648,5.671,3.173,1.973,0.06900000000000001,5.794,5.612,0.434,1.145,2.407,0.5590000000000001,1.204,0.792,7.11,1.719,5.391,2.993,1.755,0.644,1.64,0.079,6.027,2.307,3.72,1.921,0.158,1.398,0.026,0.112,0.07099999999999999,0.043,1.099,0.6909999999999999,0.407,0.461,0.113,0.053,0.058,0.467,0.346,0.061,0.039,1.744,0.5649999999999999,0.642,0.229,0.224,6.721,0.597,6.124,0.203,2.972,0.149,0.138,0.011,2.405,0.992,0.262,0.047,0.584,0.08599999999999999,3.354,1.648,1.706,0.793,2.561,0.65,0.627,1.078,0.206,100,10.005,75.78700000000001,85.792,89.995,68.589,44.376,42.403,40.079,19.763,31.14,16.932,8.939,6.108,59.921,56.024,28.857,31.064,5.772],[14.235,8.558,1.235,0.477,0.758,0.5639999999999999,0.371,0.262,0.345,0.307,0.103,0.886,0.492,0.456,0.305,0.9409999999999999,0.703,0.238,0.31,0.264,1.719,5.677,0.949,0.571,0.378,40.979,31.519,6.46,0.863,0.154,0.709,23.846,0.349,0.31,3.891,3.026,0.865,1.182,0.891,0.291,4.077,3.348,0.271,0.723,0.288,0.495,0.6820000000000001,0.889,3.476,0.861,0.6840000000000001,0.177,1.194,0.231,0.676,0.197,0.316,17.077,15.887,5.656,5.679,3.169,1.982,0.075,5.647,5.468,0.436,1.146,2.417,0.5620000000000001,1.19,0.773,7.146,1.73,5.416,3.003,1.762,0.651,1.651,0.079,6.03,2.301,3.728,1.922,0.155,1.403,0.026,0.111,0.07099999999999999,0.043,1.098,0.6879999999999999,0.41,0.462,0.113,0.054,0.058,0.465,0.344,0.062,0.039,1.745,0.5659999999999999,0.644,0.228,0.224,6.736,0.596,6.141,0.204,2.999,0.149,0.138,0.01,2.397,0.987,0.26,0.047,0.581,0.08500000000000001,3.372,1.66,1.712,0.803,2.569,0.652,0.629,1.083,0.205,100,9.849,75.916,85.765,90.151,68.48099999999999,44.397,42.415,39.91,19.717,30.96,16.724,8.949999999999999,5.957,60.09,56.199,28.921,31.17,5.773],[14.189,8.526,1.225,0.472,0.753,0.5580000000000001,0.374,0.262,0.342,0.304,0.11,0.882,0.498,0.445,0.305,0.9370000000000001,0.7,0.237,0.306,0.262,1.716,5.663,0.9419999999999999,0.5659999999999999,0.376,40.822,31.397,6.438,0.836,0.156,0.68,23.776,0.347,0.318,3.879,3.003,0.876,1.189,0.899,0.289,4.039,3.314,0.267,0.715,0.285,0.489,0.674,0.884,3.492,0.86,0.6850000000000001,0.175,1.204,0.228,0.678,0.198,0.324,17.364,16.199,5.607,5.628,3.147,1.959,0.075,6.02,5.831,0.433,1.14,2.419,0.5600000000000001,1.165,0.752,7.113,1.726,5.387,2.993,1.743,0.65,1.648,0.078,5.995,2.282,3.713,1.914,0.152,1.4,0.026,0.11,0.07099999999999999,0.043,1.092,0.6840000000000001,0.408,0.459,0.112,0.054,0.057,0.459,0.338,0.062,0.039,1.737,0.5639999999999999,0.637,0.23,0.223,6.724,0.59,6.133,0.208,3.024,0.148,0.138,0.01,2.376,0.968,0.253,0.045,0.571,0.08400000000000001,3.359,1.653,1.706,0.798,2.562,0.651,0.627,1.079,0.204,100,10.216,75.595,85.81100000000001,89.78400000000001,68.60299999999999,44.198,42.239,40.133,19.607,31.272,17.083,8.861000000000001,6.337,59.867,55.988,28.818,31.05,5.737],[14.134,8.484,1.215,0.463,0.751,0.554,0.368,0.259,0.34,0.303,0.109,0.881,0.5,0.446,0.302,0.9389999999999999,0.705,0.235,0.306,0.262,1.699,5.65,0.9389999999999999,0.5639999999999999,0.376,40.677,31.307,6.428,0.8110000000000001,0.157,0.654,23.723,0.345,0.325,3.851,2.986,0.865,1.183,0.894,0.289,4.012,3.29,0.268,0.713,0.283,0.479,0.666,0.882,3.619,0.865,0.6879999999999999,0.178,1.284,0.25,0.6919999999999999,0.201,0.327,17.495,16.335,5.535,5.554,3.132,1.903,0.06900000000000001,6.24,6.044,0.431,1.137,2.416,0.5580000000000001,1.16,0.749,7.096,1.717,5.38,2.985,1.744,0.651,1.639,0.078,5.97,2.269,3.701,1.905,0.148,1.396,0.026,0.109,0.07000000000000001,0.043,1.09,0.6840000000000001,0.407,0.458,0.112,0.054,0.057,0.452,0.332,0.062,0.039,1.73,0.5629999999999999,0.633,0.231,0.222,6.724,0.586,6.138,0.209,3.042,0.147,0.137,0.01,2.368,0.958,0.249,0.045,0.5669999999999999,0.08400000000000001,3.344,1.645,1.699,0.795,2.549,0.649,0.624,1.075,0.201,100,10.416,75.45,85.866,89.584,68.693,44.143,42.24,40.299,19.6,31.544,17.41,8.755000000000001,6.565,59.701,55.85,28.739,30.962,5.72],[14.175,8.518000000000001,1.22,0.464,0.756,0.5570000000000001,0.369,0.262,0.345,0.302,0.111,0.888,0.506,0.449,0.302,0.9379999999999999,0.703,0.234,0.305,0.262,1.701,5.656,0.9399999999999999,0.5639999999999999,0.376,40.658,31.389,6.462,0.799,0.158,0.641,23.782,0.346,0.328,3.741,2.868,0.872,1.187,0.897,0.29,4.013,3.292,0.268,0.712,0.283,0.479,0.667,0.882,3.698,0.877,0.696,0.181,1.315,0.273,0.702,0.205,0.325,17.382,16.214,5.507,5.521,3.14,1.869,0.066,6.115,5.919,0.431,1.14,2.45,0.5580000000000001,1.169,0.758,7.105,1.717,5.387,2.987,1.749,0.651,1.639,0.078,5.963,2.265,3.698,1.893,0.147,1.386,0.026,0.11,0.07000000000000001,0.044,1.092,0.6850000000000001,0.407,0.459,0.111,0.052,0.058,0.45,0.331,0.06,0.039,1.735,0.5620000000000001,0.637,0.231,0.222,6.733,0.584,6.149,0.209,3.047,0.147,0.137,0.01,2.374,0.955,0.247,0.045,0.5659999999999999,0.08400000000000001,3.347,1.644,1.703,0.795,2.553,0.647,0.625,1.078,0.202,100,10.184,75.642,85.825,89.816,68.611,44.253,42.384,40.265,19.647,31.539,17.365,8.725,6.443,59.735,55.995,28.692,31.043,5.761],[14.243,8.553000000000001,1.226,0.469,0.757,0.5600000000000001,0.365,0.263,0.346,0.304,0.112,0.9,0.511,0.453,0.3,0.9409999999999999,0.707,0.234,0.303,0.262,1.706,5.69,0.945,0.5659999999999999,0.379,40.871,31.559,6.509,0.759,0.158,0.6,23.942,0.349,0.331,3.746,2.842,0.904,1.196,0.904,0.292,4.039,3.311,0.269,0.715,0.285,0.482,0.674,0.888,3.665,0.882,0.698,0.184,1.298,0.262,0.704,0.202,0.317,17.012,15.832,5.519,5.531,3.171,1.847,0.067,5.682,5.49,0.432,1.147,2.479,0.5610000000000001,1.181,0.768,7.144,1.718,5.426,3,1.77,0.656,1.639,0.079,5.991,2.272,3.718,1.897,0.145,1.393,0.025,0.109,0.07000000000000001,0.044,1.101,0.6909999999999999,0.41,0.46,0.111,0.052,0.058,0.45,0.331,0.061,0.04,1.747,0.569,0.637,0.235,0.224,6.763,0.584,6.179,0.211,3.061,0.148,0.138,0.01,2.387,0.956,0.245,0.045,0.569,0.083,3.366,1.654,1.712,0.799,2.567,0.649,0.628,1.084,0.206,100,9.759,75.998,85.75700000000001,90.241,68.441,44.438,42.591,39.924,19.668,31.177,16.933,8.747,6.013,60.076,56.33,28.866,31.21,5.812],[14.312,8.598000000000001,1.231,0.471,0.76,0.5639999999999999,0.36,0.265,0.349,0.303,0.113,0.905,0.526,0.461,0.299,0.9429999999999999,0.708,0.235,0.305,0.263,1.711,5.713,0.949,0.5679999999999999,0.381,41.021,31.681,6.545,0.741,0.159,0.582,24.041,0.354,0.332,3.767,2.85,0.917,1.201,0.908,0.293,4.04,3.309,0.266,0.713,0.285,0.481,0.675,0.89,3.564,0.858,0.675,0.183,1.238,0.257,0.696,0.2,0.315,16.846,15.657,5.536,5.551,3.189,1.844,0.07000000000000001,5.462,5.274,0.434,1.149,2.497,0.5629999999999999,1.189,0.771,7.163,1.714,5.448,3.01,1.781,0.658,1.635,0.079,5.99,2.263,3.727,1.897,0.144,1.396,0.025,0.108,0.06900000000000001,0.044,1.099,0.6879999999999999,0.411,0.461,0.109,0.05,0.058,0.446,0.326,0.062,0.039,1.753,0.5679999999999999,0.642,0.235,0.226,6.779,0.582,6.198,0.211,3.069,0.148,0.138,0.01,2.394,0.957,0.242,0.046,0.572,0.083,3.376,1.657,1.719,0.805,2.571,0.646,0.633,1.086,0.206,100,9.561,76.127,85.688,90.43899999999999,68.319,44.446,42.602,39.68,19.574,30.921,16.61,8.759,5.795,60.32,56.553,28.993,31.327,5.848],[14.327,8.622,1.232,0.468,0.764,0.5610000000000001,0.362,0.262,0.35,0.305,0.111,0.906,0.519,0.482,0.305,0.948,0.712,0.236,0.306,0.265,1.709,5.705,0.95,0.57,0.38,41.039,31.678,6.54,0.768,0.159,0.609,24.016,0.353,0.334,3.787,2.881,0.906,1.206,0.913,0.293,4.034,3.305,0.267,0.707,0.287,0.484,0.676,0.884,3.526,0.864,0.6870000000000001,0.177,1.203,0.254,0.6889999999999999,0.196,0.32,16.832,15.645,5.532,5.548,3.195,1.839,0.07000000000000001,5.46,5.273,0.431,1.15,2.494,0.5629999999999999,1.186,0.771,7.176,1.716,5.46,3.015,1.786,0.659,1.637,0.079,5.992,2.263,3.729,1.9,0.143,1.4,0.024,0.108,0.07000000000000001,0.044,1.097,0.6870000000000001,0.411,0.458,0.108,0.049,0.058,0.449,0.33,0.06,0.039,1.751,0.5679999999999999,0.641,0.234,0.229,6.786,0.584,6.203,0.213,3.072,0.15,0.139,0.011,2.394,0.957,0.241,0.045,0.573,0.08400000000000001,3.373,1.654,1.719,0.8070000000000001,2.565,0.642,0.633,1.086,0.205,100,9.58,76.093,85.673,90.42,68.322,44.415,42.576,39.65,19.53,30.898,16.571,8.752000000000001,5.793,60.35,56.563,29.025,31.325,5.84],[14.208,8.545,1.223,0.468,0.755,0.5590000000000001,0.362,0.263,0.347,0.298,0.112,0.895,0.511,0.481,0.303,0.9370000000000001,0.704,0.233,0.3,0.26,1.694,5.663,0.948,0.569,0.379,40.812,31.503,6.501,0.786,0.157,0.629,23.861,0.354,0.339,3.761,2.861,0.9,1.202,0.911,0.291,4.008,3.283,0.263,0.704,0.284,0.48,0.672,0.88,3.542,0.857,0.68,0.177,1.243,0.238,0.6889999999999999,0.196,0.318,17.26,16.079,5.506,5.523,3.17,1.842,0.07000000000000001,5.95,5.756,0.426,1.143,2.477,0.5590000000000001,1.181,0.772,7.161,1.704,5.457,3.002,1.796,0.659,1.626,0.079,5.971,2.249,3.722,1.901,0.14,1.404,0.024,0.109,0.07000000000000001,0.043,1.093,0.6840000000000001,0.409,0.455,0.109,0.05,0.057,0.445,0.328,0.06,0.039,1.742,0.57,0.632,0.234,0.227,6.746,0.579,6.166,0.211,3.047,0.156,0.145,0.011,2.374,0.958,0.24,0.045,0.576,0.08400000000000001,3.351,1.639,1.712,0.799,2.553,0.637,0.629,1.084,0.203,100,10.05,75.742,85.792,89.95,68.497,44.239,42.397,39.948,19.451,31.245,17.037,8.702999999999999,6.289,60.052,56.291,28.903,31.149,5.804],[14.173,8.513,1.22,0.463,0.757,0.5580000000000001,0.363,0.26,0.347,0.3,0.109,0.887,0.504,0.478,0.299,0.9330000000000001,0.702,0.232,0.299,0.257,1.698,5.66,0.946,0.569,0.377,40.753,31.494,6.498,0.8129999999999999,0.157,0.656,23.831,0.353,0.334,3.735,2.84,0.895,1.201,0.911,0.29,3.989,3.264,0.259,0.704,0.282,0.473,0.669,0.877,3.588,0.86,0.6830000000000001,0.177,1.288,0.237,0.6909999999999999,0.194,0.318,17.34,16.137,5.52,5.534,3.163,1.863,0.07000000000000001,6.013,5.819,0.426,1.14,2.466,0.5590000000000001,1.203,0.785,7.158,1.704,5.454,3.001,1.795,0.658,1.625,0.078,5.957,2.243,3.714,1.904,0.138,1.411,0.025,0.108,0.067,0.043,1.093,0.6850000000000001,0.409,0.452,0.11,0.051,0.057,0.444,0.325,0.06,0.039,1.727,0.5639999999999999,0.629,0.231,0.228,6.733,0.576,6.157,0.212,3.039,0.156,0.145,0.011,2.366,0.96,0.238,0.044,0.582,0.083,3.351,1.641,1.71,0.795,2.556,0.643,0.628,1.082,0.202,100,10.081,75.746,85.827,89.919,68.506,44.251,42.389,40.002,19.482,31.308,17.135,8.694000000000001,6.346,59.998,56.263,28.857,31.141,5.808],[14.218,8.532999999999999,1.23,0.466,0.764,0.555,0.361,0.262,0.35,0.309,0.111,0.888,0.502,0.466,0.299,0.9350000000000001,0.704,0.23,0.299,0.258,1.71,5.685,0.948,0.569,0.379,40.858,31.566,6.509,0.8159999999999999,0.157,0.658,23.892,0.35,0.323,3.774,2.853,0.921,1.205,0.913,0.292,3.989,3.266,0.259,0.705,0.281,0.471,0.674,0.876,3.608,0.882,0.706,0.176,1.288,0.231,0.698,0.192,0.317,17.163,15.95,5.545,5.559,3.171,1.882,0.07000000000000001,5.8,5.612,0.424,1.142,2.466,0.5590000000000001,1.213,0.794,7.16,1.706,5.454,3.011,1.785,0.658,1.627,0.079,5.962,2.246,3.716,1.902,0.135,1.414,0.025,0.107,0.067,0.043,1.098,0.6870000000000001,0.411,0.454,0.109,0.05,0.057,0.446,0.327,0.061,0.039,1.724,0.5659999999999999,0.625,0.231,0.228,6.721,0.574,6.147,0.212,3.043,0.156,0.145,0.011,2.354,0.956,0.236,0.044,0.581,0.082,3.363,1.645,1.717,0.801,2.562,0.641,0.63,1.087,0.203,100,9.897,75.884,85.782,90.10299999999999,68.434,44.318,42.436,39.88,19.539,31.162,16.944,8.718,6.123,60.12,56.345,28.904,31.216,5.818],[14.174,8.49,1.226,0.468,0.758,0.5570000000000001,0.363,0.258,0.349,0.305,0.107,0.879,0.513,0.456,0.303,0.919,0.6889999999999999,0.229,0.298,0.257,1.7,5.685,0.947,0.5679999999999999,0.379,40.949,31.587,6.511,0.838,0.157,0.681,23.887,0.351,0.314,3.857,2.922,0.9350000000000001,1.205,0.913,0.292,3.987,3.265,0.26,0.703,0.279,0.474,0.673,0.876,3.577,0.885,0.709,0.176,1.259,0.227,0.698,0.192,0.316,17.199,15.969,5.541,5.551,3.16,1.891,0.067,5.832,5.648,0.422,1.143,2.462,0.5580000000000001,1.23,0.8120000000000001,7.131,1.692,5.439,3.005,1.779,0.655,1.614,0.078,5.962,2.245,3.718,1.9,0.135,1.413,0.025,0.106,0.067,0.043,1.098,0.6870000000000001,0.411,0.454,0.109,0.05,0.057,0.445,0.325,0.061,0.04,1.729,0.5669999999999999,0.629,0.23,0.228,6.707,0.57,6.137,0.212,3.039,0.156,0.145,0.011,2.352,0.949,0.233,0.043,0.578,0.081,3.354,1.638,1.716,0.799,2.555,0.637,0.629,1.087,0.202,100,10.003,75.82299999999999,85.82599999999999,89.997,68.413,44.236,42.346,39.794,19.474,31.086,16.912,8.708,6.146,60.206,56.349,28.97,31.236,5.826],[14.156,8.476000000000001,1.226,0.469,0.758,0.5580000000000001,0.364,0.259,0.353,0.306,0.108,0.876,0.498,0.456,0.303,0.917,0.6899999999999999,0.227,0.298,0.255,1.7,5.68,0.945,0.5659999999999999,0.379,41.062,31.585,6.504,0.857,0.157,0.701,23.873,0.351,0.31,3.984,3.049,0.9350000000000001,1.204,0.913,0.291,3.979,3.255,0.26,0.702,0.278,0.47,0.669,0.875,3.519,0.872,0.697,0.176,1.216,0.227,0.694,0.188,0.321,17.205,15.978,5.538,5.55,3.155,1.894,0.067,5.85,5.668,0.42,1.141,2.458,0.5580000000000001,1.227,0.8070000000000001,7.137,1.692,5.446,3.008,1.782,0.656,1.614,0.078,5.94,2.227,3.713,1.891,0.133,1.408,0.024,0.106,0.066,0.043,1.091,0.68,0.411,0.451,0.108,0.05,0.057,0.442,0.321,0.062,0.04,1.729,0.5639999999999999,0.63,0.23,0.228,6.686,0.5659999999999999,6.12,0.212,3.033,0.155,0.144,0.011,2.344,0.9409999999999999,0.231,0.043,0.574,0.081,3.349,1.636,1.713,0.798,2.551,0.638,0.627,1.086,0.2,100,10.145,75.699,85.84399999999999,89.855,68.41500000000001,44.114,42.22,39.695,19.378,31.008,16.852,8.686999999999999,6.161,60.305,56.321,29.071,31.234,5.817],[14.163,8.476000000000001,1.224,0.468,0.756,0.5600000000000001,0.37,0.256,0.351,0.307,0.108,0.875,0.495,0.463,0.303,0.912,0.6850000000000001,0.227,0.297,0.255,1.701,5.687,0.947,0.5669999999999999,0.38,41.101,31.638,6.515,0.87,0.157,0.712,23.9,0.353,0.312,3.982,3.059,0.923,1.211,0.918,0.292,3.958,3.233,0.257,0.698,0.275,0.465,0.669,0.869,3.462,0.856,0.681,0.175,1.185,0.228,0.6820000000000001,0.187,0.325,17.194,15.991,5.537,5.556,3.146,1.903,0.07199999999999999,5.824,5.642,0.419,1.145,2.485,0.5620000000000001,1.203,0.783,7.144,1.695,5.449,3.009,1.784,0.656,1.618,0.077,5.936,2.222,3.714,1.888,0.129,1.409,0.024,0.106,0.067,0.043,1.091,0.68,0.411,0.453,0.108,0.049,0.057,0.44,0.32,0.061,0.04,1.729,0.5610000000000001,0.633,0.23,0.228,6.695,0.5629999999999999,6.132,0.213,3.048,0.155,0.144,0.01,2.346,0.9330000000000001,0.228,0.043,0.569,0.08,3.357,1.643,1.714,0.8090000000000001,2.549,0.635,0.63,1.085,0.199,100,10.118,75.71899999999999,85.837,89.88200000000001,68.36199999999999,44.081,42.177,39.602,19.303,30.936,16.773,8.666,6.136,60.398,56.416,29.113,31.285,5.833],[14.17,8.481,1.223,0.464,0.758,0.5590000000000001,0.375,0.258,0.355,0.308,0.108,0.878,0.497,0.474,0.302,0.913,0.6879999999999999,0.225,0.293,0.255,1.684,5.689,0.946,0.5659999999999999,0.38,41.086,31.669,6.532,0.842,0.159,0.6830000000000001,23.943,0.351,0.317,3.944,3.04,0.904,1.213,0.92,0.293,3.944,3.217,0.255,0.696,0.273,0.459,0.668,0.866,3.501,0.855,0.6820000000000001,0.173,1.223,0.229,0.6850000000000001,0.187,0.322,17.113,15.943,5.528,5.546,3.133,1.91,0.073,5.791,5.608,0.417,1.144,2.483,0.5620000000000001,1.169,0.752,7.17,1.7,5.47,3.005,1.806,0.659,1.623,0.077,5.927,2.212,3.714,1.884,0.127,1.407,0.024,0.106,0.066,0.043,1.09,0.679,0.411,0.449,0.108,0.049,0.057,0.436,0.317,0.061,0.04,1.732,0.5620000000000001,0.635,0.23,0.228,6.726,0.5580000000000001,6.168,0.212,3.088,0.155,0.144,0.01,2.342,0.93,0.225,0.042,0.57,0.079,3.361,1.644,1.717,0.8110000000000001,2.55,0.639,0.63,1.087,0.194,100,10.052,75.77800000000001,85.83,89.94799999999999,68.331,44.109,42.2,39.585,19.308,30.949,16.779,8.635999999999999,6.107,60.415,56.471,29.097,31.318,5.794],[14.161,8.473000000000001,1.219,0.462,0.758,0.5570000000000001,0.376,0.26,0.356,0.31,0.109,0.877,0.499,0.471,0.301,0.911,0.6879999999999999,0.223,0.294,0.254,1.679,5.688,0.944,0.5639999999999999,0.38,41.082,31.67,6.54,0.8139999999999999,0.16,0.653,23.965,0.351,0.321,3.946,3.046,0.9,1.212,0.919,0.293,3.933,3.206,0.255,0.6889999999999999,0.274,0.458,0.668,0.863,3.607,0.865,0.6840000000000001,0.18,1.286,0.246,0.696,0.19,0.324,17.005,15.84,5.506,5.523,3.133,1.889,0.06900000000000001,5.713,5.528,0.416,1.145,2.481,0.5610000000000001,1.165,0.746,7.181,1.7,5.48,3.006,1.816,0.659,1.623,0.077,5.913,2.193,3.72,1.88,0.125,1.406,0.023,0.106,0.066,0.043,1.088,0.676,0.412,0.444,0.108,0.049,0.058,0.43,0.311,0.061,0.04,1.737,0.57,0.632,0.231,0.226,6.748,0.5600000000000001,6.188,0.215,3.104,0.155,0.144,0.01,2.344,0.93,0.224,0.043,0.572,0.078,3.36,1.644,1.716,0.8110000000000001,2.549,0.639,0.63,1.086,0.194,100,9.98,75.86,85.839,90.02,68.33,44.189,42.3,39.555,19.36,30.958,16.797,8.597,6.034,60.445,56.499,29.126,31.319,5.786],[14.218,8.507999999999999,1.22,0.464,0.756,0.5600000000000001,0.379,0.262,0.359,0.314,0.11,0.878,0.508,0.474,0.297,0.917,0.6919999999999999,0.225,0.296,0.255,1.679,5.71,0.948,0.5659999999999999,0.382,41.108,31.797,6.577,0.777,0.161,0.616,24.089,0.354,0.322,3.829,2.926,0.902,1.221,0.926,0.295,3.939,3.209,0.255,0.6899999999999999,0.274,0.457,0.664,0.869,3.654,0.888,0.701,0.187,1.302,0.251,0.699,0.192,0.321,16.803,15.616,5.503,5.524,3.142,1.877,0.067,5.452,5.27,0.417,1.149,2.513,0.5620000000000001,1.187,0.769,7.2,1.71,5.491,3.015,1.818,0.658,1.632,0.078,5.928,2.198,3.73,1.883,0.124,1.41,0.023,0.106,0.066,0.044,1.095,0.681,0.414,0.447,0.108,0.048,0.058,0.427,0.309,0.061,0.04,1.741,0.572,0.632,0.231,0.228,6.772,0.5600000000000001,6.212,0.217,3.117,0.155,0.144,0.011,2.355,0.929,0.223,0.043,0.573,0.077,3.368,1.648,1.72,0.8139999999999999,2.555,0.638,0.63,1.09,0.197,100,9.603,76.179,85.782,90.39700000000001,68.203,44.381,42.504,39.423,19.431,30.832,16.614,8.592000000000001,5.775,60.577,56.748,29.133,31.444,5.847],[14.233,8.497,1.22,0.464,0.756,0.5639999999999999,0.372,0.262,0.353,0.314,0.114,0.883,0.509,0.468,0.294,0.913,0.6899999999999999,0.223,0.295,0.253,1.684,5.736,0.951,0.5659999999999999,0.384,41.208,31.933,6.609,0.758,0.162,0.597,24.211,0.356,0.326,3.792,2.889,0.903,1.225,0.928,0.296,3.932,3.199,0.255,0.6889999999999999,0.271,0.455,0.661,0.867,3.616,0.878,0.6889999999999999,0.188,1.29,0.245,0.694,0.194,0.315,16.673,15.463,5.497,5.515,3.151,1.86,0.066,5.288,5.107,0.417,1.15,2.53,0.5639999999999999,1.21,0.791,7.209,1.711,5.499,3.022,1.821,0.656,1.634,0.077,5.947,2.203,3.744,1.888,0.124,1.416,0.023,0.104,0.067,0.043,1.099,0.6840000000000001,0.415,0.45,0.107,0.048,0.058,0.424,0.307,0.06,0.039,1.749,0.572,0.639,0.232,0.23,6.785,0.5610000000000001,6.225,0.218,3.126,0.155,0.145,0.011,2.357,0.928,0.221,0.043,0.572,0.079,3.378,1.652,1.726,0.8139999999999999,2.564,0.639,0.634,1.092,0.199,100,9.406000000000001,76.361,85.767,90.59399999999999,68.06699999999999,44.427,42.567,39.236,19.388,30.656,16.422,8.58,5.614,60.764,56.973,29.187,31.578,5.889],[13.891,8.186999999999999,1.141,0.374,0.766,0.494,0.346,0.258,0.357,0.281,0.122,0.86,0.5600000000000001,0.482,0.304,0.955,0.703,0.252,0.298,0.245,1.485,5.704,1.01,0.597,0.412,41.448,32.029,6.977,0.795,0.169,0.626,23.9,0.358,0.275,3.705,2.872,0.834,1.177,0.902,0.275,4.262,3.431,0.278,0.787,0.288,0.503,0.715,0.86,3.437,0.866,0.678,0.188,1.263,0.24,0.71,0.136,0.222,16.418,15.254,5.782,5.815,3.559,1.673,0.073,5.065,4.979,0.441,1.153,2.213,0.5669999999999999,1.164,0.742,7.551,1.704,5.847,3.003,2.081,0.763,1.628,0.076,5.793,2.075,3.718,1.867,0.161,1.448,0.03,0.093,0.07199999999999999,0.046,1.053,0.662,0.391,0.412,0.121,0.059,0.061,0.399,0.295,0.051,0.041,1.723,0.604,0.641,0.208,0.216,7.087,0.646,6.441,0.195,3.049,0.14,0.126,0.014,2.534,1.169,0.306,0.06900000000000001,0.705,0.076,3.365,1.625,1.74,0.703,2.662,0.727,0.633,1.107,0.195,100,9.045999999999999,77.063,86.10899999999999,90.95399999999999,67.971,45.034,43.361,38.942,19.71,29.74,15.849,9.201000000000001,5.34,61.058,57.353,29.387,31.671,5.571],[13.898,8.211,1.144,0.377,0.767,0.492,0.347,0.258,0.357,0.286,0.12,0.861,0.5629999999999999,0.487,0.308,0.959,0.706,0.253,0.3,0.247,1.482,5.687,1.008,0.598,0.41,41.541,32.015,6.967,0.826,0.169,0.657,23.863,0.359,0.293,3.797,2.933,0.865,1.178,0.904,0.274,4.257,3.43,0.281,0.785,0.289,0.5,0.717,0.857,3.365,0.858,0.673,0.185,1.226,0.228,0.697,0.133,0.223,16.398,15.265,5.754,5.784,3.549,1.658,0.073,5.114,5.028,0.438,1.151,2.209,0.5669999999999999,1.133,0.716,7.568,1.713,5.855,2.999,2.095,0.761,1.637,0.076,5.792,2.068,3.724,1.868,0.16,1.45,0.03,0.094,0.073,0.045,1.049,0.658,0.391,0.41,0.121,0.06,0.061,0.4,0.296,0.051,0.041,1.727,0.609,0.64,0.208,0.216,7.068,0.641,6.427,0.192,3.037,0.141,0.126,0.014,2.535,1.165,0.303,0.06900000000000001,0.703,0.077,3.361,1.624,1.737,0.705,2.656,0.726,0.631,1.106,0.194,100,9.204000000000001,76.89700000000001,86.102,90.79600000000001,67.985,44.882,43.224,38.908,19.603,29.742,15.844,9.166,5.407,61.092,57.294,29.436,31.656,5.53],[13.89,8.207000000000001,1.138,0.373,0.765,0.51,0.347,0.255,0.354,0.284,0.121,0.863,0.5659999999999999,0.482,0.309,0.949,0.699,0.251,0.298,0.246,1.487,5.682,1.004,0.595,0.409,41.504,31.977,6.952,0.851,0.168,0.6830000000000001,23.814,0.359,0.312,3.801,2.911,0.891,1.18,0.907,0.273,4.235,3.414,0.278,0.774,0.289,0.498,0.72,0.855,3.386,0.861,0.678,0.183,1.242,0.229,0.7,0.133,0.222,16.431,15.29,5.748,5.78,3.549,1.655,0.073,5.153,5.065,0.436,1.151,2.205,0.5659999999999999,1.141,0.727,7.595,1.723,5.872,2.994,2.116,0.761,1.648,0.076,5.79,2.065,3.725,1.873,0.159,1.456,0.03,0.093,0.073,0.045,1.046,0.654,0.392,0.41,0.12,0.059,0.06,0.404,0.299,0.052,0.041,1.722,0.608,0.637,0.207,0.215,7.044,0.637,6.408,0.193,3.031,0.145,0.13,0.014,2.515,1.162,0.301,0.068,0.705,0.075,3.355,1.619,1.736,0.701,2.654,0.724,0.628,1.108,0.193,100,9.266,76.845,86.11,90.73399999999999,68.023,44.868,43.213,38.95,19.596,29.805,15.916,9.145,5.465,61.05,57.249,29.433,31.618,5.531],[13.846,8.183999999999999,1.131,0.373,0.757,0.516,0.351,0.255,0.355,0.281,0.122,0.866,0.574,0.469,0.307,0.9419999999999999,0.6909999999999999,0.251,0.298,0.245,1.473,5.662,0.999,0.592,0.407,41.429,31.892,6.927,0.889,0.167,0.722,23.716,0.36,0.288,3.867,2.919,0.948,1.175,0.903,0.272,4.206,3.39,0.275,0.769,0.287,0.494,0.715,0.851,3.455,0.865,0.6830000000000001,0.182,1.295,0.234,0.706,0.135,0.22,16.612,15.464,5.724,5.761,3.524,1.659,0.077,5.375,5.287,0.433,1.142,2.19,0.5620000000000001,1.149,0.734,7.557,1.71,5.847,2.979,2.113,0.755,1.635,0.075,5.758,2.046,3.713,1.872,0.156,1.46,0.03,0.093,0.07099999999999999,0.045,1.036,0.646,0.391,0.407,0.121,0.06,0.06,0.4,0.295,0.052,0.041,1.708,0.602,0.632,0.206,0.215,7.003,0.632,6.372,0.191,3.015,0.144,0.129,0.014,2.497,1.157,0.299,0.067,0.703,0.075,3.34,1.611,1.729,0.697,2.643,0.721,0.625,1.104,0.193,100,9.529999999999999,76.624,86.154,90.47,68.108,44.731,43.073,39.075,19.565,29.982,16.135,9.093,5.663,60.925,57.058,29.394,31.532,5.513],[13.855,8.196,1.128,0.37,0.758,0.53,0.361,0.258,0.35,0.284,0.122,0.868,0.584,0.467,0.301,0.9370000000000001,0.6860000000000001,0.251,0.294,0.242,1.47,5.658,0.996,0.588,0.407,41.243,31.843,6.919,0.888,0.167,0.722,23.677,0.359,0.271,3.765,2.832,0.9330000000000001,1.174,0.901,0.272,4.19,3.369,0.272,0.772,0.282,0.488,0.708,0.846,3.463,0.872,0.6860000000000001,0.186,1.291,0.24,0.708,0.136,0.217,16.826,15.642,5.732,5.767,3.522,1.671,0.075,5.545,5.458,0.432,1.139,2.198,0.5610000000000001,1.183,0.77,7.544,1.709,5.835,2.974,2.11,0.751,1.634,0.075,5.753,2.042,3.711,1.869,0.153,1.458,0.031,0.094,0.07000000000000001,0.045,1.037,0.646,0.391,0.409,0.122,0.061,0.06,0.393,0.288,0.052,0.041,1.707,0.6,0.634,0.206,0.217,6.988,0.631,6.357,0.191,3.007,0.143,0.129,0.014,2.491,1.157,0.299,0.067,0.704,0.075,3.332,1.607,1.725,0.695,2.637,0.719,0.623,1.102,0.193,100,9.581,76.56399999999999,86.145,90.419,68.157,44.721,43.051,39.22,19.549,30.134,16.279,9.086,5.816,60.78,57.015,29.296,31.484,5.548],[13.864,8.215999999999999,1.126,0.371,0.755,0.528,0.371,0.257,0.353,0.288,0.119,0.87,0.593,0.468,0.305,0.929,0.679,0.25,0.292,0.242,1.473,5.648,0.994,0.587,0.407,41.286,31.835,6.911,0.926,0.166,0.76,23.635,0.362,0.265,3.844,2.936,0.908,1.17,0.899,0.271,4.173,3.352,0.273,0.769,0.275,0.487,0.704,0.843,3.434,0.872,0.6860000000000001,0.186,1.271,0.234,0.709,0.134,0.214,16.875,15.64,5.721,5.752,3.509,1.675,0.07099999999999999,5.562,5.475,0.43,1.138,2.2,0.5590000000000001,1.235,0.825,7.532,1.708,5.824,2.974,2.103,0.748,1.632,0.075,5.732,2.03,3.702,1.861,0.15,1.456,0.031,0.093,0.07000000000000001,0.045,1.037,0.647,0.39,0.403,0.122,0.06,0.06,0.39,0.286,0.052,0.041,1.702,0.599,0.63,0.206,0.218,6.962,0.625,6.337,0.191,3,0.143,0.129,0.014,2.48,1.148,0.294,0.067,0.702,0.073,3.321,1.601,1.721,0.694,2.627,0.715,0.622,1.098,0.192,100,9.670999999999999,76.465,86.136,90.32899999999999,68.16500000000001,44.63,42.955,39.154,19.463,30.11,16.246,9.045,5.827,60.846,57.001,29.373,31.473,5.592],[13.837,8.188000000000001,1.122,0.371,0.751,0.528,0.373,0.26,0.354,0.289,0.119,0.865,0.5679999999999999,0.475,0.304,0.928,0.679,0.249,0.292,0.242,1.47,5.649,0.99,0.584,0.407,41.413,31.84,6.913,0.931,0.166,0.765,23.635,0.361,0.259,3.974,3.084,0.89,1.169,0.898,0.271,4.171,3.346,0.274,0.77,0.274,0.487,0.7,0.841,3.383,0.863,0.679,0.184,1.242,0.226,0.704,0.131,0.218,16.855,15.618,5.7,5.728,3.487,1.678,0.07099999999999999,5.566,5.48,0.428,1.138,2.199,0.5580000000000001,1.237,0.825,7.526,1.713,5.813,2.968,2.1,0.745,1.639,0.075,5.722,2.022,3.7,1.855,0.146,1.455,0.031,0.093,0.06900000000000001,0.045,1.038,0.648,0.39,0.403,0.121,0.06,0.06,0.39,0.286,0.052,0.041,1.702,0.599,0.631,0.205,0.215,6.951,0.62,6.331,0.19,3.001,0.142,0.128,0.014,2.474,1.144,0.291,0.067,0.702,0.07099999999999999,3.322,1.605,1.717,0.7,2.622,0.713,0.622,1.095,0.191,100,9.798999999999999,76.364,86.163,90.20099999999999,68.16,44.524,42.846,39.041,19.379,30.032,16.195,9.009,5.825,60.959,56.985,29.48,31.479,5.589],[13.883,8.215,1.127,0.372,0.754,0.53,0.375,0.26,0.356,0.289,0.119,0.867,0.5649999999999999,0.472,0.305,0.931,0.679,0.252,0.291,0.244,1.484,5.668,0.99,0.584,0.406,41.532,31.947,6.939,0.946,0.166,0.78,23.698,0.364,0.259,3.985,3.091,0.894,1.179,0.907,0.272,4.162,3.334,0.275,0.76,0.275,0.487,0.698,0.837,3.314,0.855,0.675,0.18,1.18,0.22,0.706,0.131,0.221,16.735,15.563,5.713,5.746,3.489,1.688,0.076,5.485,5.4,0.428,1.141,2.203,0.5590000000000001,1.172,0.759,7.539,1.721,5.818,2.967,2.107,0.744,1.646,0.075,5.715,2.006,3.709,1.844,0.141,1.453,0.031,0.091,0.068,0.044,1.033,0.642,0.39,0.4,0.121,0.059,0.06,0.389,0.285,0.051,0.041,1.713,0.602,0.636,0.206,0.215,6.965,0.619,6.346,0.191,3.013,0.142,0.128,0.014,2.475,1.143,0.288,0.068,0.703,0.07199999999999999,3.327,1.607,1.721,0.698,2.629,0.717,0.623,1.098,0.192,100,9.728999999999999,76.387,86.117,90.271,68.053,44.441,42.752,38.93,19.303,29.928,16.045,9.002000000000001,5.744,61.07,57.085,29.487,31.583,5.537],[13.951,8.259,1.129,0.372,0.757,0.554,0.384,0.263,0.358,0.289,0.12,0.874,0.5629999999999999,0.465,0.304,0.9350000000000001,0.681,0.254,0.292,0.246,1.483,5.691,0.998,0.59,0.408,41.619,32.066,6.971,0.929,0.168,0.761,23.8,0.366,0.258,3.954,3.085,0.869,1.188,0.915,0.272,4.153,3.32,0.272,0.756,0.273,0.484,0.699,0.836,3.348,0.839,0.669,0.171,1.221,0.221,0.714,0.131,0.222,16.492,15.368,5.722,5.753,3.49,1.696,0.076,5.271,5.187,0.43,1.143,2.212,0.5600000000000001,1.123,0.713,7.549,1.724,5.825,2.978,2.104,0.743,1.65,0.075,5.698,2.003,3.695,1.834,0.141,1.444,0.031,0.09,0.068,0.044,1.033,0.642,0.391,0.4,0.123,0.061,0.061,0.386,0.283,0.051,0.04,1.708,0.599,0.635,0.206,0.214,7.009,0.619,6.39,0.196,3.053,0.143,0.129,0.014,2.479,1.139,0.283,0.068,0.704,0.07199999999999999,3.336,1.609,1.727,0.7,2.637,0.72,0.624,1.102,0.19,100,9.483000000000001,76.566,86.04900000000001,90.517,67.934,44.5,42.804,38.824,19.344,29.827,15.876,8.997,5.529,61.176,57.222,29.476,31.701,5.499],[13.987,8.282,1.122,0.367,0.755,0.5639999999999999,0.384,0.267,0.358,0.291,0.12,0.878,0.574,0.465,0.302,0.9370000000000001,0.6830000000000001,0.254,0.297,0.247,1.476,5.705,0.997,0.588,0.409,41.606,32.1,6.99,0.904,0.169,0.735,23.839,0.367,0.255,3.919,3.053,0.866,1.188,0.915,0.273,4.144,3.313,0.272,0.75,0.274,0.483,0.7,0.834,3.468,0.859,0.681,0.178,1.28,0.24,0.733,0.134,0.223,16.336,15.222,5.693,5.721,3.487,1.671,0.06900000000000001,5.156,5.072,0.428,1.147,2.216,0.554,1.114,0.705,7.557,1.731,5.826,2.976,2.109,0.741,1.656,0.075,5.693,2.003,3.69,1.833,0.139,1.447,0.031,0.089,0.067,0.043,1.039,0.647,0.391,0.402,0.123,0.061,0.061,0.383,0.279,0.051,0.041,1.701,0.597,0.629,0.207,0.214,7.021,0.614,6.407,0.197,3.073,0.142,0.128,0.014,2.476,1.132,0.279,0.067,0.702,0.07000000000000001,3.335,1.61,1.725,0.699,2.636,0.721,0.624,1.102,0.189,100,9.33,76.68300000000001,86.01300000000001,90.67,67.90000000000001,44.584,42.912,38.826,19.428,29.871,15.884,8.955,5.411,61.174,57.255,29.441,31.733,5.488],[14.053,8.321999999999999,1.128,0.37,0.758,0.5669999999999999,0.382,0.269,0.356,0.289,0.12,0.884,0.586,0.474,0.304,0.947,0.6909999999999999,0.255,0.294,0.248,1.474,5.731,1,0.589,0.412,41.668,32.255,7.032,0.891,0.17,0.721,23.964,0.367,0.25,3.789,2.941,0.848,1.198,0.925,0.274,4.176,3.335,0.271,0.757,0.275,0.487,0.703,0.841,3.52,0.869,0.6840000000000001,0.185,1.306,0.25,0.74,0.136,0.22,16.093,14.954,5.681,5.715,3.506,1.639,0.06900000000000001,4.847,4.765,0.429,1.153,2.252,0.5580000000000001,1.139,0.728,7.584,1.735,5.849,2.985,2.121,0.743,1.66,0.075,5.713,2.007,3.706,1.842,0.138,1.456,0.031,0.091,0.067,0.043,1.043,0.65,0.393,0.402,0.122,0.06,0.061,0.382,0.278,0.051,0.041,1.704,0.599,0.629,0.208,0.217,7.015,0.615,6.4,0.199,3.087,0.143,0.129,0.014,2.451,1.135,0.279,0.068,0.706,0.07000000000000001,3.354,1.619,1.735,0.705,2.649,0.723,0.628,1.108,0.191,100,8.885999999999999,77.06100000000001,85.947,91.114,67.745,44.806,43.167,38.663,19.513,29.705,15.652,8.958,5.097,61.337,57.547,29.449,31.887,5.565],[14.131,8.348000000000001,1.13,0.37,0.76,0.575,0.376,0.272,0.36,0.291,0.124,0.888,0.573,0.484,0.298,0.953,0.696,0.256,0.295,0.245,1.485,5.783,1.012,0.596,0.416,41.873,32.482,7.099,0.851,0.171,0.68,24.163,0.369,0.246,3.753,2.903,0.85,1.21,0.9350000000000001,0.275,4.181,3.336,0.271,0.762,0.271,0.482,0.706,0.844,3.461,0.864,0.68,0.184,1.273,0.242,0.732,0.136,0.214,15.743,14.584,5.674,5.709,3.529,1.606,0.07099999999999999,4.444,4.364,0.43,1.161,2.279,0.5610000000000001,1.159,0.743,7.65,1.751,5.899,3.011,2.139,0.748,1.675,0.076,5.725,2.004,3.721,1.841,0.135,1.459,0.03,0.09,0.067,0.043,1.05,0.655,0.396,0.401,0.122,0.059,0.061,0.379,0.275,0.051,0.042,1.714,0.602,0.632,0.21,0.218,7.037,0.613,6.425,0.2,3.106,0.144,0.129,0.014,2.454,1.134,0.276,0.068,0.709,0.068,3.368,1.621,1.747,0.708,2.66,0.721,0.631,1.116,0.192,100,8.443,77.426,85.869,91.557,67.518,44.943,43.337,38.294,19.473,29.352,15.221,8.942,4.691,61.706,57.953,29.593,32.113,5.624],[14.257,8.427,1.138,0.37,0.767,0.582,0.372,0.275,0.36,0.291,0.134,0.898,0.575,0.5,0.303,0.955,0.699,0.256,0.299,0.245,1.499,5.83,1.015,0.597,0.418,42.173,32.711,7.159,0.839,0.172,0.666,24.339,0.375,0.236,3.815,2.94,0.875,1.222,0.945,0.277,4.189,3.342,0.266,0.769,0.271,0.479,0.71,0.847,3.343,0.834,0.653,0.181,1.21,0.229,0.725,0.135,0.211,15.289,14.167,5.685,5.72,3.551,1.591,0.073,3.979,3.904,0.435,1.168,2.3,0.5649999999999999,1.122,0.702,7.716,1.772,5.944,3.032,2.159,0.753,1.696,0.076,5.75,2.007,3.744,1.847,0.133,1.468,0.029,0.09,0.066,0.044,1.058,0.659,0.399,0.4,0.12,0.058,0.062,0.381,0.277,0.05,0.042,1.724,0.602,0.64,0.211,0.22,7.062,0.61,6.452,0.203,3.122,0.144,0.13,0.014,2.462,1.132,0.272,0.068,0.711,0.068,3.394,1.634,1.76,0.718,2.676,0.724,0.638,1.122,0.192,100,8.029999999999999,77.71299999999999,85.74299999999999,91.97,67.289,45.002,43.411,37.88,19.408,28.93,14.673,8.949999999999999,4.215,62.12,58.305,29.784,32.336,5.625],[14.357,8.49,1.156,0.379,0.777,0.586,0.373,0.277,0.364,0.293,0.13,0.895,0.573,0.509,0.309,0.969,0.707,0.262,0.306,0.249,1.502,5.867,1.019,0.599,0.42,42.522,32.985,7.21,0.881,0.173,0.708,24.514,0.379,0.22,3.871,3.01,0.862,1.233,0.955,0.278,4.213,3.36,0.27,0.769,0.275,0.484,0.714,0.848,3.321,0.84,0.657,0.183,1.184,0.23,0.715,0.135,0.217,14.677,13.563,5.708,5.744,3.568,1.593,0.074,3.316,3.251,0.437,1.175,2.322,0.5679999999999999,1.114,0.695,7.774,1.782,5.993,3.053,2.182,0.758,1.706,0.075,5.798,2.012,3.786,1.864,0.134,1.481,0.03,0.092,0.067,0.044,1.06,0.657,0.403,0.403,0.12,0.057,0.062,0.384,0.281,0.05,0.042,1.747,0.613,0.647,0.212,0.221,7.106,0.613,6.492,0.205,3.146,0.145,0.131,0.015,2.472,1.137,0.272,0.068,0.716,0.06900000000000001,3.426,1.651,1.775,0.722,2.704,0.736,0.64,1.135,0.193,100,7.408,78.235,85.643,92.592,67.015,45.25,43.657,37.358,19.465,28.368,14.011,8.99,3.536,62.642,58.77,30.036,32.606,5.653],[14.303,8.445,1.148,0.375,0.773,0.587,0.367,0.276,0.363,0.289,0.131,0.882,0.5669999999999999,0.493,0.311,0.966,0.705,0.261,0.308,0.247,1.51,5.858,1.017,0.598,0.419,42.434,32.938,7.2,0.9,0.173,0.727,24.46,0.378,0.221,3.837,3.004,0.833,1.234,0.956,0.278,4.203,3.351,0.268,0.762,0.274,0.485,0.714,0.848,3.359,0.859,0.679,0.181,1.203,0.232,0.716,0.132,0.216,14.848,13.729,5.725,5.754,3.572,1.608,0.07199999999999999,3.47,3.407,0.436,1.171,2.329,0.569,1.12,0.705,7.773,1.792,5.981,3.039,2.186,0.756,1.716,0.076,5.788,2.003,3.786,1.869,0.133,1.486,0.03,0.093,0.067,0.044,1.057,0.654,0.403,0.403,0.119,0.057,0.061,0.38,0.277,0.05,0.041,1.742,0.603,0.653,0.21,0.219,7.073,0.611,6.461,0.204,3.133,0.145,0.13,0.014,2.458,1.133,0.272,0.068,0.713,0.068,3.405,1.643,1.762,0.72,2.685,0.732,0.633,1.129,0.191,100,7.528,78.169,85.697,92.47199999999999,67.062,45.231,43.623,37.494,19.5,28.494,14.191,9,3.691,62.506,58.668,29.945,32.561,5.653],[14.182,8.35,1.145,0.375,0.77,0.584,0.359,0.274,0.363,0.287,0.129,0.872,0.547,0.484,0.305,0.954,0.696,0.258,0.306,0.242,1.5,5.832,1.012,0.595,0.417,42.258,32.859,7.176,0.9350000000000001,0.172,0.763,24.373,0.375,0.226,3.758,2.947,0.8120000000000001,1.229,0.953,0.276,4.186,3.337,0.264,0.764,0.272,0.48,0.71,0.848,3.44,0.87,0.6899999999999999,0.18,1.262,0.232,0.727,0.135,0.215,15.173,14.062,5.736,5.773,3.556,1.639,0.074,3.808,3.744,0.432,1.163,2.32,0.5649999999999999,1.111,0.698,7.748,1.784,5.965,3.031,2.181,0.753,1.709,0.075,5.766,1.99,3.777,1.863,0.132,1.484,0.029,0.091,0.066,0.043,1.054,0.652,0.402,0.398,0.118,0.056,0.061,0.378,0.275,0.051,0.041,1.738,0.598,0.656,0.21,0.218,7.031,0.606,6.425,0.204,3.122,0.144,0.129,0.014,2.434,1.127,0.268,0.068,0.713,0.066,3.389,1.631,1.759,0.716,2.674,0.725,0.633,1.126,0.19,100,7.793,78.02500000000001,85.818,92.20699999999999,67.14100000000001,45.166,43.528,37.752,19.535,28.762,14.58,8.99,4.035,62.248,58.49,29.765,32.484,5.628],[14.157,8.323,1.141,0.375,0.765,0.585,0.348,0.273,0.362,0.29,0.125,0.864,0.553,0.476,0.305,0.956,0.697,0.259,0.302,0.241,1.502,5.834,1.009,0.591,0.418,42.233,32.865,7.174,0.9350000000000001,0.171,0.764,24.381,0.376,0.212,3.727,2.945,0.783,1.229,0.953,0.276,4.199,3.345,0.265,0.773,0.272,0.479,0.711,0.846,3.443,0.866,0.6830000000000001,0.183,1.267,0.233,0.729,0.136,0.212,15.209,14.079,5.762,5.798,3.556,1.666,0.073,3.799,3.737,0.43,1.165,2.322,0.5649999999999999,1.13,0.714,7.779,1.782,5.997,3.034,2.205,0.757,1.707,0.075,5.765,1.983,3.782,1.862,0.129,1.487,0.03,0.091,0.066,0.043,1.049,0.646,0.402,0.401,0.118,0.056,0.061,0.377,0.274,0.051,0.041,1.74,0.6,0.656,0.209,0.219,7.024,0.605,6.419,0.203,3.124,0.143,0.129,0.014,2.427,1.127,0.269,0.068,0.713,0.065,3.381,1.622,1.759,0.713,2.668,0.721,0.633,1.126,0.188,100,7.739,78.104,85.843,92.261,67.13500000000001,45.238,43.572,37.719,19.55,28.696,14.539,9.023,4.011,62.281,58.553,29.791,32.49,5.648],[14.09,8.271000000000001,1.136,0.374,0.762,0.582,0.346,0.268,0.354,0.286,0.123,0.853,0.5600000000000001,0.473,0.308,0.9419999999999999,0.6870000000000001,0.255,0.304,0.24,1.497,5.818,1.006,0.589,0.417,42.089,32.768,7.153,0.9360000000000001,0.17,0.765,24.305,0.374,0.208,3.72,2.951,0.768,1.225,0.949,0.275,4.169,3.318,0.262,0.763,0.268,0.477,0.708,0.84,3.385,0.865,0.6830000000000001,0.183,1.231,0.224,0.722,0.133,0.209,15.596,14.412,5.745,5.773,3.539,1.668,0.07199999999999999,4.173,4.11,0.429,1.163,2.312,0.5620000000000001,1.184,0.771,7.749,1.774,5.974,3.022,2.199,0.754,1.699,0.075,5.743,1.97,3.773,1.849,0.128,1.475,0.029,0.092,0.065,0.043,1.048,0.645,0.403,0.394,0.117,0.055,0.06,0.373,0.271,0.05,0.041,1.742,0.598,0.659,0.209,0.219,6.973,0.6,6.373,0.202,3.111,0.143,0.129,0.014,2.406,1.111,0.266,0.068,0.702,0.064,3.369,1.615,1.754,0.712,2.657,0.716,0.631,1.123,0.188,100,8.101000000000001,77.81,85.91,91.899,67.232,45.042,43.374,37.884,19.413,28.908,14.818,8.976000000000001,4.381,62.116,58.397,29.722,32.394,5.678],[14.068,8.257999999999999,1.135,0.374,0.762,0.585,0.346,0.267,0.357,0.283,0.144,0.845,0.541,0.47,0.307,0.9389999999999999,0.6860000000000001,0.253,0.302,0.239,1.498,5.81,0.999,0.584,0.415,42.189,32.759,7.148,0.9370000000000001,0.17,0.767,24.302,0.372,0.203,3.853,3.079,0.773,1.222,0.948,0.274,4.152,3.299,0.263,0.761,0.267,0.472,0.703,0.834,3.317,0.848,0.669,0.18,1.197,0.216,0.711,0.132,0.212,15.664,14.469,5.724,5.753,3.525,1.665,0.07199999999999999,4.263,4.199,0.425,1.16,2.308,0.5600000000000001,1.195,0.781,7.705,1.767,5.938,3.019,2.17,0.749,1.693,0.075,5.733,1.96,3.773,1.84,0.127,1.47,0.029,0.089,0.065,0.043,1.048,0.645,0.403,0.393,0.116,0.055,0.06,0.369,0.268,0.05,0.041,1.75,0.609,0.655,0.21,0.217,6.95,0.591,6.359,0.2,3.108,0.142,0.128,0.014,2.4,1.1,0.262,0.067,0.697,0.062,3.375,1.612,1.763,0.716,2.659,0.711,0.639,1.124,0.185,100,8.318,77.613,85.932,91.682,67.241,44.854,43.189,37.805,19.27,28.872,14.804,8.932,4.466,62.195,58.343,29.808,32.387,5.677],[14.086,8.275,1.14,0.373,0.767,0.582,0.35,0.268,0.356,0.282,0.148,0.852,0.539,0.465,0.308,0.9419999999999999,0.6870000000000001,0.255,0.303,0.238,1.501,5.811,1,0.585,0.415,42.277,32.886,7.174,0.972,0.171,0.801,24.367,0.372,0.197,3.83,3.064,0.766,1.228,0.954,0.274,4.137,3.283,0.261,0.756,0.264,0.469,0.699,0.834,3.254,0.827,0.654,0.173,1.156,0.212,0.71,0.133,0.217,15.603,14.47,5.709,5.745,3.508,1.666,0.079,4.253,4.191,0.425,1.16,2.319,0.5679999999999999,1.134,0.715,7.713,1.771,5.943,3.024,2.17,0.749,1.697,0.074,5.731,1.953,3.778,1.836,0.124,1.47,0.029,0.089,0.065,0.043,1.041,0.637,0.404,0.396,0.117,0.056,0.06,0.369,0.266,0.05,0.042,1.753,0.612,0.654,0.21,0.218,6.958,0.59,6.368,0.201,3.12,0.142,0.128,0.014,2.405,1.09,0.261,0.066,0.6889999999999999,0.062,3.378,1.615,1.763,0.721,2.656,0.71,0.639,1.124,0.183,100,8.279999999999999,77.634,85.914,91.72,67.114,44.748,43.082,37.709,19.174,28.81,14.724,8.9,4.45,62.291,58.46,29.777,32.513,5.641],[14.144,8.313000000000001,1.139,0.372,0.767,0.58,0.352,0.27,0.355,0.285,0.162,0.85,0.552,0.47,0.308,0.947,0.6909999999999999,0.256,0.304,0.241,1.498,5.831,1.002,0.586,0.416,42.375,32.995,7.209,0.9429999999999999,0.172,0.771,24.47,0.373,0.187,3.828,3.06,0.768,1.241,0.965,0.276,4.124,3.266,0.258,0.748,0.263,0.468,0.696,0.833,3.31,0.827,0.657,0.17,1.188,0.22,0.72,0.139,0.216,15.336,14.247,5.704,5.736,3.503,1.666,0.079,4.028,3.969,0.425,1.161,2.328,0.569,1.089,0.669,7.72,1.779,5.941,3.024,2.169,0.749,1.705,0.074,5.725,1.947,3.778,1.83,0.122,1.464,0.029,0.091,0.065,0.042,1.044,0.638,0.406,0.396,0.117,0.056,0.06,0.365,0.263,0.049,0.041,1.755,0.609,0.658,0.211,0.219,7.003,0.589,6.414,0.205,3.155,0.142,0.128,0.014,2.424,1.078,0.257,0.067,0.681,0.061,3.384,1.616,1.768,0.725,2.659,0.709,0.64,1.129,0.182,100,8.042,77.81399999999999,85.85599999999999,91.958,67.005,44.818,43.152,37.571,19.213,28.697,14.553,8.874000000000001,4.215,62.429,58.601,29.806,32.622,5.604],[14.221,8.349,1.135,0.367,0.768,0.577,0.355,0.273,0.352,0.283,0.164,0.857,0.5639999999999999,0.479,0.308,0.949,0.695,0.253,0.306,0.242,1.505,5.872,1.003,0.586,0.417,42.504,33.132,7.251,0.922,0.174,0.748,24.585,0.374,0.185,3.802,3.041,0.761,1.245,0.968,0.277,4.14,3.281,0.259,0.753,0.264,0.472,0.698,0.834,3.422,0.856,0.679,0.176,1.249,0.229,0.73,0.142,0.218,14.923,13.841,5.684,5.71,3.505,1.643,0.073,3.63,3.574,0.428,1.164,2.338,0.57,1.082,0.663,7.745,1.779,5.967,3.033,2.179,0.754,1.705,0.074,5.731,1.954,3.777,1.833,0.121,1.467,0.029,0.092,0.065,0.043,1.05,0.643,0.407,0.397,0.118,0.056,0.061,0.364,0.262,0.05,0.041,1.748,0.608,0.651,0.213,0.221,7.055,0.591,6.463,0.206,3.19,0.143,0.128,0.014,2.434,1.082,0.259,0.067,0.6850000000000001,0.059,3.396,1.619,1.776,0.725,2.67,0.712,0.643,1.134,0.182,100,7.617,78.16200000000001,85.779,92.383,66.86799999999999,45.03,43.388,37.369,19.334,28.501,14.28,8.869,3.814,62.631,58.829,29.873,32.758,5.609],[14.251,8.365,1.145,0.373,0.772,0.571,0.357,0.275,0.354,0.279,0.155,0.856,0.577,0.484,0.303,0.955,0.702,0.253,0.304,0.245,1.505,5.887,1.01,0.592,0.418,42.477,33.228,7.283,0.908,0.175,0.733,24.662,0.374,0.186,3.674,2.921,0.753,1.247,0.969,0.278,4.142,3.283,0.257,0.753,0.263,0.474,0.702,0.834,3.447,0.861,0.675,0.186,1.268,0.231,0.732,0.14,0.216,14.799,13.687,5.651,5.681,3.505,1.613,0.07000000000000001,3.49,3.435,0.425,1.167,2.354,0.571,1.112,0.6899999999999999,7.797,1.78,6.017,3.033,2.22,0.764,1.706,0.074,5.738,1.951,3.787,1.838,0.12,1.473,0.03,0.091,0.065,0.044,1.051,0.643,0.408,0.395,0.118,0.055,0.062,0.364,0.261,0.051,0.042,1.751,0.604,0.657,0.213,0.22,7.071,0.592,6.479,0.207,3.195,0.142,0.129,0.014,2.439,1.087,0.257,0.068,0.6899999999999999,0.06,3.41,1.629,1.782,0.727,2.683,0.717,0.643,1.138,0.184,100,7.35,78.398,85.749,92.65000000000001,66.77200000000001,45.171,43.557,37.27,19.343,28.434,14.183,8.836,3.676,62.73,59.055,29.876,32.853,5.658],[14.239,8.329000000000001,1.139,0.369,0.77,0.5649999999999999,0.35,0.277,0.354,0.281,0.152,0.853,0.576,0.491,0.3,0.948,0.697,0.251,0.303,0.24,1.502,5.909,1.011,0.592,0.419,42.555,33.349,7.321,0.871,0.176,0.695,24.781,0.376,0.186,3.63,2.883,0.747,1.253,0.974,0.279,4.137,3.274,0.259,0.754,0.258,0.465,0.7,0.838,3.39,0.857,0.667,0.19,1.232,0.227,0.724,0.142,0.208,14.72,13.587,5.643,5.672,3.52,1.588,0.068,3.352,3.297,0.428,1.171,2.392,0.572,1.133,0.711,7.836,1.786,6.05,3.057,2.222,0.771,1.712,0.074,5.733,1.942,3.792,1.841,0.118,1.479,0.029,0.09,0.065,0.043,1.049,0.639,0.41,0.394,0.117,0.055,0.062,0.361,0.258,0.051,0.041,1.75,0.6,0.659,0.215,0.221,7.095,0.59,6.505,0.208,3.204,0.143,0.129,0.014,2.455,1.085,0.256,0.067,0.6919999999999999,0.059,3.421,1.632,1.789,0.731,2.69,0.717,0.647,1.142,0.184,100,7.168,78.59399999999999,85.761,92.83199999999999,66.651,45.244,43.656,37.044,19.268,28.236,13.997,8.808,3.538,62.956,59.326,29.983,32.973,5.725],[14.015,8.23,1.098,0.371,0.727,0.498,0.339,0.268,0.354,0.264,0.153,0.846,0.587,0.515,0.297,0.977,0.6870000000000001,0.29,0.297,0.24,1.496,5.785,0.958,0.592,0.366,42.235,33.15,7.733,0.841,0.12,0.721,24.227,0.35,0.18,3.588,2.833,0.755,1.157,0.87,0.287,4.16,3.31,0.272,0.794,0.189,0.48,0.6919999999999999,0.885,3.101,0.789,0.629,0.16,1.041,0.208,0.696,0.157,0.209,15.259,14.125,6.335,6.604,3.742,2.101,0.095,3.048,3,0.396,1.167,2.379,0.53,1.135,0.669,8.375,1.806,6.569,3.131,2.459,0.979,1.746,0.061,5.734,1.888,3.846,1.856,0.132,1.497,0.026,0.107,0.064,0.024,0.962,0.594,0.368,0.446,0.089,0.038,0.05,0.403,0.328,0.026,0.033,1.824,0.639,0.638,0.224,0.155,7.145,0.65,6.495,0.16,3.028,0.138,0.131,0.007,2.588,1.23,0.296,0.096,0.728,0.098,3.177,1.563,1.613,0.655,2.522,0.717,0.61,1.003,0.191,100,6.816,79.169,85.985,93.184,66.84999999999999,46.018,43.918,36.856,19.613,27.209,13.194,9.647,3.228,63.144,59.556,30.343,32.801,5.876],[14.033,8.239000000000001,1.101,0.37,0.732,0.49,0.336,0.265,0.352,0.266,0.138,0.845,0.59,0.539,0.304,0.983,0.6899999999999999,0.293,0.296,0.242,1.491,5.794,0.962,0.596,0.366,42.325,33.225,7.741,0.885,0.12,0.765,24.25,0.35,0.173,3.605,2.848,0.758,1.16,0.873,0.287,4.161,3.313,0.273,0.793,0.192,0.484,0.6919999999999999,0.881,3.073,0.786,0.625,0.161,1.013,0.208,0.6909999999999999,0.154,0.22,15.126,13.997,6.346,6.615,3.752,2.1,0.097,2.907,2.863,0.397,1.166,2.381,0.531,1.129,0.667,8.419,1.816,6.603,3.138,2.478,0.988,1.755,0.061,5.746,1.891,3.856,1.856,0.13,1.499,0.026,0.106,0.063,0.024,0.964,0.597,0.368,0.445,0.08799999999999999,0.038,0.05,0.407,0.332,0.026,0.034,1.832,0.639,0.644,0.224,0.153,7.138,0.644,6.494,0.16,3.023,0.139,0.132,0.007,2.588,1.229,0.292,0.095,0.733,0.097,3.177,1.564,1.614,0.656,2.521,0.717,0.611,1.003,0.191,100,6.686,79.28100000000001,85.967,93.31399999999999,66.77500000000001,46.056,43.956,36.722,19.609,27.067,13.034,9.654,3.08,63.278,59.673,30.403,32.876,5.873],[14.031,8.233000000000001,1.101,0.372,0.729,0.491,0.333,0.266,0.352,0.262,0.138,0.84,0.597,0.531,0.304,0.985,0.6929999999999999,0.292,0.296,0.241,1.496,5.798,0.965,0.598,0.367,42.394,33.308,7.755,0.921,0.12,0.801,24.281,0.35,0.171,3.591,2.837,0.754,1.163,0.875,0.287,4.162,3.311,0.271,0.786,0.192,0.485,0.6929999999999999,0.884,3.163,0.798,0.642,0.156,1.058,0.213,0.706,0.158,0.231,14.889,13.75,6.381,6.652,3.77,2.118,0.101,2.618,2.577,0.396,1.165,2.388,0.531,1.14,0.679,8.488,1.834,6.654,3.149,2.505,1,1.773,0.061,5.77,1.885,3.885,1.876,0.129,1.52,0.026,0.106,0.064,0.024,0.966,0.596,0.37,0.443,0.08799999999999999,0.038,0.05,0.403,0.329,0.025,0.034,1.839,0.644,0.644,0.224,0.154,7.12,0.641,6.479,0.159,3.023,0.141,0.134,0.007,2.57,1.227,0.291,0.095,0.734,0.096,3.179,1.564,1.615,0.655,2.524,0.718,0.611,1.003,0.192,100,6.379,79.589,85.96899999999999,93.621,66.69199999999999,46.282,44.163,36.565,19.746,26.884,12.853,9.680999999999999,2.789,63.435,59.844,30.477,32.957,5.891],[13.925,8.138999999999999,1.09,0.367,0.723,0.495,0.332,0.264,0.349,0.263,0.129,0.83,0.578,0.508,0.299,0.975,0.6870000000000001,0.288,0.294,0.239,1.494,5.785,0.96,0.595,0.366,42.295,33.253,7.741,0.9399999999999999,0.119,0.821,24.225,0.348,0.17,3.569,2.824,0.746,1.161,0.875,0.286,4.141,3.293,0.265,0.785,0.189,0.48,0.6909999999999999,0.882,3.196,0.787,0.633,0.154,1.108,0.216,0.707,0.157,0.222,15.135,13.998,6.384,6.658,3.753,2.141,0.106,2.87,2.828,0.393,1.164,2.385,0.529,1.137,0.676,8.458,1.831,6.626,3.137,2.49,0.999,1.771,0.06,5.767,1.87,3.897,1.887,0.126,1.534,0.026,0.105,0.063,0.024,0.963,0.593,0.37,0.441,0.08799999999999999,0.037,0.05,0.399,0.324,0.026,0.034,1.838,0.647,0.641,0.223,0.151,7.091,0.635,6.456,0.158,3.011,0.14,0.133,0.007,2.558,1.225,0.29,0.092,0.736,0.095,3.173,1.56,1.613,0.653,2.519,0.714,0.61,1.003,0.192,100,6.609,79.46599999999999,86.075,93.39100000000001,66.747,46.213,44.072,36.694,19.73,27.03,13.105,9.664,3.04,63.306,59.737,30.401,32.906,5.882],[13.883,8.111000000000001,1.088,0.366,0.722,0.491,0.333,0.26,0.35,0.268,0.12,0.827,0.575,0.493,0.302,0.974,0.6860000000000001,0.288,0.295,0.238,1.497,5.772,0.956,0.591,0.365,42.149,33.171,7.722,0.929,0.119,0.8100000000000001,24.175,0.345,0.169,3.539,2.801,0.739,1.16,0.876,0.284,4.109,3.267,0.264,0.779,0.188,0.477,0.6850000000000001,0.873,3.19,0.793,0.634,0.159,1.104,0.21,0.709,0.153,0.221,15.397,14.235,6.366,6.641,3.727,2.15,0.106,3.113,3.07,0.393,1.162,2.399,0.527,1.162,0.702,8.443,1.83,6.613,3.132,2.482,0.998,1.77,0.06,5.761,1.865,3.896,1.881,0.123,1.532,0.026,0.106,0.062,0.024,0.962,0.593,0.369,0.446,0.08599999999999999,0.036,0.049,0.396,0.322,0.026,0.034,1.839,0.65,0.643,0.221,0.15,7.06,0.638,6.422,0.159,2.999,0.137,0.13,0.007,2.546,1.219,0.288,0.094,0.729,0.097,3.161,1.552,1.609,0.65,2.511,0.711,0.608,1.001,0.192,100,6.821,79.295,86.117,93.179,66.82899999999999,46.124,43.974,36.829,19.663,27.197,13.313,9.632,3.282,63.171,59.632,30.346,32.826,5.919],[13.796,8.035,1.08,0.365,0.715,0.49,0.331,0.255,0.348,0.265,0.112,0.8149999999999999,0.58,0.483,0.301,0.96,0.673,0.287,0.292,0.236,1.487,5.761,0.953,0.588,0.365,42.155,33.162,7.713,0.954,0.118,0.835,24.151,0.344,0.173,3.574,2.834,0.74,1.16,0.876,0.284,4.086,3.244,0.261,0.772,0.187,0.474,0.68,0.869,3.177,0.803,0.645,0.158,1.085,0.208,0.702,0.151,0.227,15.579,14.386,6.327,6.603,3.705,2.137,0.107,3.304,3.258,0.389,1.159,2.405,0.526,1.193,0.732,8.435,1.816,6.619,3.139,2.48,1,1.756,0.06,5.738,1.853,3.885,1.874,0.121,1.527,0.026,0.107,0.061,0.024,0.96,0.591,0.369,0.444,0.08699999999999999,0.036,0.049,0.392,0.318,0.025,0.034,1.831,0.645,0.642,0.22,0.15,7.014,0.629,6.385,0.158,2.989,0.137,0.13,0.007,2.525,1.204,0.284,0.089,0.723,0.097,3.155,1.543,1.611,0.648,2.507,0.706,0.607,1.004,0.189,100,7.051,79.15300000000001,86.20399999999999,92.949,66.83799999999999,45.991,43.854,36.814,19.541,27.251,13.454,9.564,3.477,63.186,59.612,30.368,32.818,5.949],[13.729,7.978,1.078,0.364,0.714,0.486,0.334,0.253,0.346,0.265,0.105,0.8080000000000001,0.5620000000000001,0.482,0.3,0.95,0.668,0.283,0.291,0.234,1.484,5.752,0.948,0.584,0.364,42.269,33.183,7.71,0.982,0.118,0.864,24.148,0.343,0.176,3.683,2.941,0.742,1.156,0.874,0.283,4.071,3.224,0.258,0.765,0.187,0.468,0.679,0.867,3.109,0.786,0.629,0.157,1.068,0.202,0.6820000000000001,0.145,0.226,15.657,14.467,6.283,6.561,3.683,2.117,0.111,3.437,3.389,0.388,1.156,2.4,0.525,1.19,0.729,8.427,1.828,6.6,3.13,2.469,1.001,1.768,0.06,5.722,1.83,3.893,1.872,0.117,1.531,0.026,0.108,0.061,0.023,0.956,0.588,0.368,0.436,0.08699999999999999,0.037,0.049,0.386,0.314,0.024,0.033,1.836,0.645,0.646,0.22,0.149,6.987,0.625,6.362,0.16,2.984,0.136,0.129,0.007,2.513,1.194,0.281,0.089,0.718,0.094,3.152,1.54,1.612,0.652,2.5,0.701,0.605,1.007,0.187,100,7.296,78.97499999999999,86.271,92.70399999999999,66.81699999999999,45.791,43.674,36.729,19.386,27.242,13.513,9.487,3.613,63.271,59.589,30.431,32.84,5.936],[13.756,7.983,1.08,0.366,0.713,0.48,0.336,0.252,0.345,0.266,0.105,0.8080000000000001,0.5600000000000001,0.482,0.301,0.956,0.671,0.284,0.292,0.235,1.486,5.772,0.949,0.585,0.365,42.451,33.32,7.748,0.971,0.119,0.852,24.257,0.344,0.175,3.728,2.956,0.773,1.158,0.874,0.283,4.07,3.22,0.262,0.762,0.185,0.463,0.68,0.867,3.054,0.778,0.622,0.155,1.032,0.188,0.68,0.149,0.228,15.438,14.306,6.275,6.567,3.686,2.108,0.118,3.255,3.207,0.386,1.16,2.411,0.528,1.132,0.669,8.478,1.841,6.637,3.148,2.479,1.009,1.781,0.06,5.72,1.823,3.898,1.871,0.113,1.535,0.026,0.106,0.061,0.023,0.957,0.587,0.37,0.438,0.08799999999999999,0.038,0.049,0.382,0.31,0.024,0.034,1.837,0.643,0.648,0.22,0.148,6.993,0.623,6.369,0.161,2.995,0.137,0.13,0.007,2.511,1.189,0.28,0.09,0.715,0.093,3.161,1.54,1.621,0.653,2.508,0.704,0.606,1.015,0.183,100,7.158,79.086,86.244,92.842,66.68000000000001,45.767,43.659,36.511,19.326,27.044,13.288,9.467000000000001,3.43,63.489,59.761,30.513,32.976,5.908],[13.753,7.973,1.078,0.362,0.715,0.48,0.338,0.253,0.344,0.264,0.1,0.8110000000000001,0.5649999999999999,0.479,0.298,0.957,0.673,0.284,0.292,0.235,1.478,5.781,0.948,0.584,0.365,42.508,33.387,7.769,0.958,0.12,0.838,24.316,0.343,0.171,3.738,2.954,0.784,1.163,0.879,0.284,4.05,3.201,0.261,0.753,0.184,0.463,0.676,0.865,3.097,0.783,0.63,0.153,1.038,0.199,0.6929999999999999,0.152,0.232,15.273,14.178,6.253,6.529,3.673,2.098,0.114,3.155,3.108,0.388,1.159,2.419,0.529,1.095,0.632,8.539999999999999,1.859,6.681,3.156,2.506,1.019,1.799,0.06,5.704,1.821,3.883,1.855,0.111,1.524,0.026,0.105,0.06,0.023,0.958,0.588,0.37,0.436,0.089,0.039,0.049,0.381,0.309,0.024,0.034,1.834,0.641,0.648,0.22,0.15,7.013,0.622,6.391,0.163,3.017,0.136,0.129,0.007,2.512,1.185,0.278,0.08799999999999999,0.715,0.093,3.163,1.542,1.621,0.657,2.506,0.705,0.607,1.014,0.18,100,7.064,79.18300000000001,86.247,92.93600000000001,66.613,45.796,43.698,36.423,19.344,27.004,13.25,9.419,3.326,63.577,59.839,30.534,33.043,5.865],[13.731,7.955,1.071,0.36,0.711,0.476,0.333,0.254,0.345,0.267,0.101,0.8129999999999999,0.573,0.477,0.295,0.952,0.669,0.283,0.292,0.235,1.47,5.777,0.949,0.584,0.365,42.52,33.403,7.777,0.9350000000000001,0.121,0.8139999999999999,24.349,0.342,0.174,3.737,2.949,0.788,1.163,0.88,0.283,4.043,3.196,0.261,0.752,0.183,0.462,0.674,0.864,3.177,0.791,0.632,0.159,1.088,0.216,0.703,0.152,0.228,15.252,14.163,6.195,6.46,3.658,2.058,0.106,3.221,3.173,0.384,1.154,2.418,0.525,1.089,0.629,8.534000000000001,1.865,6.669,3.15,2.504,1.016,1.806,0.059,5.682,1.809,3.873,1.837,0.107,1.512,0.025,0.105,0.058,0.022,0.958,0.588,0.37,0.434,0.089,0.039,0.049,0.376,0.304,0.023,0.034,1.837,0.645,0.646,0.221,0.151,6.989,0.62,6.369,0.164,3.033,0.136,0.129,0.007,2.475,1.181,0.276,0.08799999999999999,0.715,0.091,3.166,1.543,1.623,0.656,2.51,0.703,0.606,1.016,0.184,100,7.132,79.137,86.26900000000001,92.86799999999999,66.59699999999999,45.734,43.675,36.48,19.353,27.133,13.402,9.346,3.395,63.52,59.784,30.459,33.061,5.836],[13.723,7.945,1.071,0.359,0.712,0.468,0.329,0.257,0.345,0.263,0.099,0.8179999999999999,0.58,0.478,0.295,0.952,0.672,0.281,0.289,0.235,1.466,5.777,0.952,0.586,0.365,42.49,33.472,7.805,0.925,0.121,0.804,24.401,0.342,0.18,3.628,2.835,0.792,1.163,0.88,0.283,4.046,3.198,0.263,0.761,0.181,0.46,0.673,0.862,3.22,0.799,0.634,0.165,1.109,0.22,0.713,0.152,0.228,15.294,14.199,6.16,6.425,3.664,2.019,0.103,3.276,3.227,0.384,1.153,2.437,0.523,1.095,0.636,8.525,1.861,6.664,3.142,2.508,1.013,1.802,0.059,5.664,1.798,3.865,1.835,0.107,1.514,0.026,0.102,0.057,0.022,0.955,0.585,0.37,0.434,0.089,0.039,0.049,0.372,0.299,0.025,0.034,1.83,0.644,0.641,0.221,0.149,6.971,0.616,6.355,0.164,3.037,0.136,0.129,0.007,2.463,1.171,0.276,0.08599999999999999,0.708,0.089,3.162,1.542,1.62,0.657,2.505,0.7,0.606,1.014,0.185,100,7.084,79.193,86.277,92.916,66.52800000000001,45.721,43.702,36.527,19.348,27.217,13.494,9.31,3.456,63.473,59.845,30.343,33.131,5.858],[13.709,7.917,1.071,0.357,0.714,0.467,0.323,0.256,0.344,0.265,0.1,0.8139999999999999,0.576,0.478,0.292,0.951,0.67,0.281,0.289,0.228,1.464,5.792,0.952,0.585,0.367,42.558,33.587,7.848,0.868,0.121,0.747,24.528,0.343,0.181,3.589,2.793,0.796,1.17,0.885,0.286,4.03,3.18,0.258,0.756,0.178,0.454,0.675,0.86,3.152,0.783,0.622,0.161,1.083,0.213,0.702,0.152,0.22,15.257,14.15,6.139,6.401,3.673,1.991,0.101,3.202,3.153,0.382,1.162,2.475,0.529,1.107,0.646,8.539999999999999,1.853,6.687,3.161,2.512,1.014,1.793,0.06,5.674,1.793,3.881,1.848,0.101,1.532,0.025,0.102,0.058,0.022,0.958,0.587,0.371,0.432,0.089,0.039,0.049,0.37,0.297,0.025,0.034,1.826,0.649,0.634,0.22,0.15,6.987,0.616,6.371,0.166,3.041,0.136,0.129,0.007,2.465,1.179,0.275,0.08500000000000001,0.718,0.091,3.171,1.546,1.625,0.659,2.512,0.699,0.609,1.016,0.187,100,6.972,79.319,86.291,93.02800000000001,66.413,45.732,43.741,36.323,19.23,27.055,13.346,9.266999999999999,3.383,63.677,60.089,30.433,33.245,5.917],[13.698,7.899,1.068,0.357,0.711,0.46,0.318,0.258,0.341,0.263,0.099,0.8179999999999999,0.5669999999999999,0.479,0.292,0.949,0.67,0.279,0.289,0.231,1.466,5.799,0.952,0.584,0.367,42.634,33.652,7.875,0.851,0.121,0.73,24.583,0.343,0.19,3.592,2.794,0.798,1.172,0.885,0.286,4.029,3.172,0.252,0.755,0.177,0.452,0.675,0.861,3.034,0.75,0.596,0.154,1.024,0.205,0.6909999999999999,0.15,0.215,15.318,14.232,6.141,6.403,3.678,1.986,0.103,3.257,3.208,0.384,1.165,2.494,0.529,1.086,0.624,8.539,1.852,6.687,3.163,2.512,1.012,1.792,0.06,5.663,1.784,3.879,1.846,0.097,1.535,0.024,0.101,0.058,0.022,0.955,0.587,0.368,0.431,0.089,0.039,0.049,0.366,0.293,0.025,0.033,1.824,0.645,0.636,0.221,0.153,6.984,0.614,6.37,0.166,3.044,0.136,0.129,0.007,2.465,1.174,0.274,0.08400000000000001,0.714,0.091,3.178,1.551,1.627,0.665,2.513,0.7,0.61,1.018,0.186,100,7.039,79.26300000000001,86.30200000000001,92.961,66.348,45.612,43.626,36.246,19.101,26.986,13.288,9.26,3.447,63.754,60.162,30.445,33.309,5.92],[13.669,7.883,1.068,0.357,0.712,0.456,0.317,0.253,0.339,0.263,0.108,0.82,0.5610000000000001,0.476,0.292,0.95,0.669,0.281,0.288,0.232,1.459,5.786,0.95,0.585,0.365,42.584,33.565,7.849,0.88,0.121,0.759,24.496,0.341,0.196,3.62,2.807,0.8139999999999999,1.174,0.888,0.286,4.029,3.177,0.256,0.758,0.179,0.459,0.672,0.854,3.028,0.767,0.616,0.151,1.009,0.2,0.68,0.147,0.224,15.465,14.378,6.144,6.398,3.695,1.973,0.097,3.41,3.359,0.383,1.164,2.496,0.527,1.087,0.63,8.529999999999999,1.854,6.676,3.151,2.515,1.01,1.795,0.059,5.668,1.778,3.89,1.853,0.1,1.539,0.024,0.102,0.058,0.023,0.95,0.582,0.368,0.427,0.08799999999999999,0.038,0.048,0.367,0.295,0.025,0.033,1.831,0.64,0.644,0.223,0.151,6.942,0.611,6.331,0.162,3.024,0.136,0.129,0.007,2.449,1.17,0.273,0.08599999999999999,0.711,0.09,3.163,1.54,1.623,0.662,2.501,0.695,0.607,1.016,0.183,100,7.226,79.104,86.331,92.774,66.435,45.539,43.566,36.358,19.083,27.089,13.419,9.269,3.606,63.642,60.022,30.418,33.224,5.911],[13.657,7.877,1.06,0.355,0.705,0.457,0.321,0.252,0.339,0.264,0.103,0.821,0.5570000000000001,0.479,0.292,0.96,0.676,0.284,0.286,0.232,1.456,5.78,0.948,0.583,0.365,42.579,33.561,7.843,0.91,0.12,0.79,24.468,0.34,0.197,3.628,2.814,0.8139999999999999,1.174,0.889,0.286,4.019,3.17,0.256,0.755,0.18,0.458,0.67,0.852,3.092,0.789,0.638,0.151,1.044,0.201,0.679,0.149,0.23,15.405,14.297,6.137,6.399,3.687,1.974,0.097,3.328,3.277,0.382,1.162,2.501,0.525,1.109,0.654,8.555,1.858,6.697,3.147,2.539,1.011,1.798,0.06,5.7,1.775,3.925,1.874,0.101,1.558,0.025,0.103,0.058,0.023,0.948,0.579,0.369,0.427,0.08799999999999999,0.039,0.048,0.367,0.295,0.025,0.034,1.846,0.646,0.651,0.223,0.15,6.908,0.61,6.299,0.163,3.016,0.139,0.132,0.007,2.426,1.163,0.271,0.08500000000000001,0.706,0.09,3.156,1.536,1.62,0.66,2.496,0.694,0.606,1.014,0.182,100,7.153,79.191,86.343,92.84699999999999,66.43899999999999,45.63,43.656,36.306,19.125,27.05,13.394,9.256,3.524,63.694,60.066,30.473,33.221,5.941],[13.666,7.882,1.061,0.354,0.707,0.459,0.327,0.254,0.342,0.261,0.099,0.8129999999999999,0.5620000000000001,0.476,0.292,0.954,0.672,0.282,0.287,0.233,1.463,5.784,0.948,0.583,0.365,42.593,33.602,7.854,0.921,0.12,0.801,24.486,0.34,0.195,3.605,2.802,0.803,1.175,0.89,0.285,4.017,3.168,0.257,0.754,0.18,0.455,0.67,0.852,3.142,0.771,0.62,0.15,1.097,0.211,0.6909999999999999,0.147,0.225,15.466,14.349,6.143,6.4,3.673,1.994,0.099,3.362,3.311,0.383,1.16,2.519,0.525,1.117,0.66,8.548,1.858,6.69,3.141,2.541,1.009,1.799,0.059,5.705,1.767,3.938,1.888,0.1,1.574,0.025,0.101,0.057,0.024,0.948,0.579,0.369,0.424,0.08799999999999999,0.038,0.048,0.362,0.291,0.024,0.033,1.845,0.645,0.649,0.225,0.15,6.775,0.604,6.171,0.164,3.01,0.139,0.132,0.007,2.304,1.158,0.268,0.08400000000000001,0.707,0.089,3.156,1.53,1.626,0.661,2.495,0.6889999999999999,0.607,1.019,0.179,100,7.161,79.173,86.334,92.839,66.398,45.571,43.577,36.383,19.16,27.133,13.467,9.25,3.556,63.617,60.012,30.356,33.262,5.961],[13.657,7.877,1.057,0.352,0.705,0.46,0.322,0.249,0.34,0.26,0.099,0.8070000000000001,0.569,0.491,0.289,0.95,0.668,0.282,0.285,0.232,1.466,5.78,0.948,0.583,0.364,42.559,33.578,7.846,0.9350000000000001,0.12,0.8149999999999999,24.455,0.341,0.193,3.616,2.807,0.8090000000000001,1.174,0.89,0.284,3.998,3.15,0.255,0.749,0.179,0.445,0.669,0.853,3.135,0.76,0.608,0.152,1.089,0.21,0.697,0.149,0.231,15.597,14.456,6.142,6.402,3.66,2.006,0.097,3.485,3.434,0.382,1.159,2.504,0.524,1.141,0.6830000000000001,8.505000000000001,1.837,6.668,3.113,2.552,1.004,1.778,0.059,5.691,1.758,3.933,1.889,0.099,1.574,0.024,0.102,0.058,0.024,0.946,0.577,0.369,0.424,0.08699999999999999,0.039,0.048,0.357,0.287,0.023,0.033,1.839,0.641,0.648,0.225,0.149,6.733,0.599,6.133,0.161,3.002,0.139,0.132,0.007,2.272,1.159,0.267,0.083,0.71,0.089,3.175,1.552,1.623,0.6850000000000001,2.49,0.6889999999999999,0.606,1.017,0.178,100,7.294,79.04900000000001,86.343,92.706,66.422,45.472,43.465,36.456,19.122,27.229,13.572,9.227,3.677,63.544,59.927,30.308,33.236,5.97],[13.661,7.875,1.058,0.352,0.706,0.461,0.323,0.249,0.341,0.263,0.094,0.804,0.571,0.488,0.291,0.951,0.668,0.283,0.285,0.234,1.462,5.786,0.944,0.579,0.365,42.669,33.639,7.863,0.957,0.12,0.838,24.478,0.341,0.187,3.676,2.857,0.82,1.175,0.89,0.284,3.992,3.141,0.249,0.748,0.18,0.444,0.67,0.851,3.089,0.77,0.62,0.15,1.055,0.201,0.6899999999999999,0.146,0.227,15.57,14.416,6.128,6.393,3.647,2.008,0.098,3.433,3.383,0.38,1.159,2.526,0.524,1.154,0.697,8.497,1.837,6.66,3.112,2.547,1.001,1.778,0.059,5.683,1.751,3.932,1.892,0.1,1.579,0.025,0.101,0.056,0.024,0.945,0.576,0.368,0.422,0.08699999999999999,0.038,0.048,0.354,0.284,0.023,0.033,1.835,0.642,0.643,0.225,0.149,6.716,0.595,6.121,0.159,3.001,0.139,0.131,0.007,2.264,1.153,0.264,0.08500000000000001,0.707,0.08799999999999999,3.17,1.549,1.621,0.6840000000000001,2.486,0.6840000000000001,0.605,1.016,0.18,100,7.297,79.042,86.339,92.703,66.361,45.403,43.395,36.315,19.034,27.108,13.448,9.207000000000001,3.62,63.685,60.009,30.387,33.298,6.009],[13.628,7.846,1.057,0.351,0.706,0.474,0.326,0.246,0.341,0.264,0.093,0.796,0.5590000000000001,0.482,0.291,0.9419999999999999,0.662,0.28,0.287,0.233,1.455,5.782,0.9429999999999999,0.576,0.366,42.844,33.716,7.88,0.966,0.12,0.846,24.529,0.341,0.182,3.79,2.967,0.823,1.175,0.89,0.284,3.981,3.132,0.245,0.747,0.177,0.446,0.667,0.849,3.039,0.752,0.61,0.142,1.037,0.198,0.6830000000000001,0.143,0.226,15.483,14.339,6.091,6.364,3.624,1.994,0.108,3.372,3.322,0.38,1.153,2.545,0.524,1.145,0.6870000000000001,8.504,1.848,6.656,3.098,2.557,1.001,1.789,0.059,5.675,1.744,3.931,1.892,0.102,1.58,0.024,0.099,0.055,0.024,0.9419999999999999,0.574,0.368,0.421,0.08699999999999999,0.038,0.048,0.35,0.281,0.024,0.033,1.835,0.643,0.642,0.225,0.148,6.707,0.597,6.11,0.159,3.007,0.138,0.131,0.007,2.25,1.153,0.265,0.08500000000000001,0.705,0.08799999999999999,3.176,1.551,1.625,0.6850000000000001,2.491,0.6860000000000001,0.604,1.02,0.18,100,7.345,79.027,86.372,92.655,66.28400000000001,45.311,43.318,36.128,18.946,26.959,13.331,9.169,3.554,63.872,60.081,30.497,33.374,6.02],[13.668,7.873,1.056,0.352,0.703,0.479,0.331,0.251,0.341,0.264,0.093,0.801,0.5629999999999999,0.481,0.29,0.9419999999999999,0.661,0.281,0.288,0.236,1.457,5.796,0.944,0.578,0.366,42.915,33.793,7.907,0.9320000000000001,0.12,0.8120000000000001,24.612,0.342,0.18,3.797,2.981,0.8169999999999999,1.178,0.893,0.285,3.967,3.112,0.246,0.744,0.176,0.434,0.664,0.848,2.989,0.741,0.598,0.144,1.008,0.195,0.674,0.143,0.228,15.356,14.257,6.062,6.345,3.601,1.988,0.119,3.298,3.249,0.381,1.155,2.551,0.526,1.099,0.641,8.542,1.87,6.672,3.101,2.567,1.004,1.811,0.059,5.696,1.74,3.956,1.895,0.1,1.587,0.025,0.097,0.054,0.024,0.946,0.576,0.37,0.422,0.08699999999999999,0.038,0.048,0.345,0.274,0.024,0.033,1.853,0.647,0.652,0.225,0.148,6.706,0.602,6.104,0.161,3.012,0.138,0.131,0.007,2.249,1.145,0.267,0.08599999999999999,0.694,0.08699999999999999,3.185,1.554,1.631,0.6870000000000001,2.498,0.6870000000000001,0.607,1.024,0.18,100,7.275,79.057,86.33199999999999,92.72499999999999,66.20699999999999,45.264,43.276,36.018,18.872,26.896,13.228,9.122,3.478,63.982,60.185,30.531,33.451,5.996],[13.643,7.846,1.055,0.351,0.704,0.475,0.334,0.249,0.341,0.263,0.095,0.799,0.5610000000000001,0.48,0.289,0.9379999999999999,0.662,0.276,0.287,0.234,1.448,5.797,0.9419999999999999,0.576,0.366,42.913,33.832,7.917,0.9419999999999999,0.12,0.822,24.632,0.341,0.183,3.774,2.963,0.8110000000000001,1.178,0.894,0.284,3.946,3.091,0.244,0.744,0.177,0.425,0.658,0.843,3.02,0.75,0.596,0.154,1.022,0.2,0.674,0.145,0.23,15.401,14.345,6.029,6.304,3.578,1.98,0.114,3.415,3.365,0.379,1.156,2.565,0.526,1.056,0.6,8.529999999999999,1.868,6.662,3.101,2.559,1.001,1.81,0.059,5.679,1.726,3.954,1.89,0.098,1.584,0.024,0.099,0.053,0.024,0.944,0.574,0.37,0.417,0.08699999999999999,0.039,0.048,0.342,0.271,0.024,0.033,1.852,0.649,0.651,0.224,0.147,6.701,0.595,6.106,0.161,3.025,0.138,0.131,0.007,2.242,1.136,0.263,0.08500000000000001,0.6909999999999999,0.08599999999999999,3.17,1.542,1.628,0.6840000000000001,2.486,0.681,0.608,1.02,0.177,100,7.372,78.985,86.357,92.628,66.16800000000001,45.153,43.173,36.054,18.813,26.994,13.351,9.06,3.598,63.946,60.172,30.455,33.491,5.957],[13.598,7.814,1.046,0.347,0.699,0.467,0.334,0.247,0.339,0.261,0.097,0.795,0.57,0.477,0.286,0.9360000000000001,0.66,0.276,0.285,0.233,1.442,5.784,0.9399999999999999,0.577,0.364,42.75,33.731,7.895,0.922,0.121,0.801,24.575,0.339,0.193,3.734,2.935,0.8,1.174,0.891,0.283,3.918,3.067,0.247,0.739,0.176,0.418,0.651,0.837,3.101,0.762,0.605,0.157,1.059,0.212,0.6820000000000001,0.156,0.23,15.634,14.581,5.948,6.211,3.543,1.938,0.102,3.756,3.702,0.377,1.157,2.559,0.521,1.054,0.596,8.478,1.842,6.635,3.088,2.553,0.994,1.784,0.059,5.649,1.716,3.933,1.883,0.096,1.58,0.024,0.099,0.054,0.023,0.9379999999999999,0.569,0.369,0.417,0.08799999999999999,0.039,0.048,0.34,0.27,0.024,0.033,1.837,0.646,0.642,0.224,0.148,6.69,0.586,6.104,0.158,3.035,0.137,0.13,0.007,2.234,1.125,0.26,0.083,0.6870000000000001,0.08400000000000001,3.159,1.54,1.619,0.6820000000000001,2.477,0.681,0.604,1.014,0.177,100,7.683,78.71899999999999,86.402,92.31699999999999,66.26900000000001,44.988,43.05,36.289,18.741,27.338,13.74,8.949999999999999,3.949,63.711,59.977,30.319,33.392,5.93],[13.627,7.832,1.044,0.347,0.697,0.463,0.334,0.252,0.339,0.261,0.102,0.798,0.578,0.483,0.284,0.9399999999999999,0.663,0.277,0.284,0.233,1.438,5.794,0.944,0.58,0.364,42.8,33.865,7.932,0.918,0.121,0.797,24.677,0.338,0.196,3.634,2.833,0.801,1.177,0.892,0.285,3.928,3.07,0.248,0.736,0.175,0.418,0.654,0.839,3.138,0.774,0.619,0.155,1.082,0.215,0.6840000000000001,0.153,0.23,15.467,14.392,5.926,6.192,3.541,1.921,0.097,3.557,3.503,0.375,1.162,2.584,0.522,1.075,0.615,8.494999999999999,1.84,6.655,3.091,2.57,0.995,1.781,0.058,5.643,1.713,3.93,1.878,0.094,1.576,0.024,0.1,0.054,0.023,0.9389999999999999,0.569,0.369,0.417,0.08699999999999999,0.039,0.048,0.341,0.27,0.025,0.033,1.837,0.65,0.638,0.224,0.145,6.71,0.587,6.122,0.159,3.044,0.138,0.13,0.007,2.243,1.126,0.261,0.08500000000000001,0.6870000000000001,0.083,3.177,1.556,1.621,0.6929999999999999,2.484,0.6820000000000001,0.605,1.015,0.181,100,7.388,78.985,86.373,92.61199999999999,66.13500000000001,45.12,43.199,36.155,18.775,27.228,13.602,8.927,3.754,63.845,60.21,30.318,33.527,5.983],[13.6,7.795,1.039,0.345,0.694,0.464,0.326,0.25,0.337,0.263,0.101,0.797,0.573,0.479,0.279,0.93,0.658,0.273,0.284,0.229,1.443,5.805,0.945,0.581,0.365,42.808,33.902,7.961,0.854,0.121,0.733,24.749,0.337,0.205,3.608,2.802,0.8070000000000001,1.181,0.895,0.286,3.911,3.051,0.241,0.736,0.17,0.421,0.656,0.827,3.037,0.754,0.604,0.149,1.034,0.205,0.672,0.148,0.224,15.586,14.512,5.925,6.197,3.555,1.907,0.095,3.649,3.593,0.373,1.158,2.614,0.52,1.074,0.617,8.496,1.846,6.65,3.085,2.573,0.992,1.787,0.059,5.631,1.699,3.932,1.873,0.091,1.581,0.024,0.096,0.051,0.023,0.9350000000000001,0.5649999999999999,0.369,0.417,0.08699999999999999,0.039,0.048,0.335,0.265,0.025,0.033,1.838,0.65,0.638,0.225,0.147,6.72,0.587,6.133,0.161,3.046,0.138,0.13,0.007,2.251,1.125,0.26,0.08400000000000001,0.6879999999999999,0.083,3.178,1.557,1.621,0.694,2.484,0.6840000000000001,0.604,1.017,0.179,100,7.462,78.938,86.40000000000001,92.538,66.098,45.036,43.128,36.101,18.647,27.185,13.585,8.916,3.854,63.899,60.291,30.334,33.565,6.012],[13.384,7.382,0.964,0.313,0.651,0.436,0.3,0.227,0.324,0.25,0.097,0.744,0.555,0.478,0.269,0.873,0.612,0.26,0.282,0.217,1.365,6.002,0.974,0.607,0.367,41.772,32.843,7.823,0.898,0.114,0.784,23.747,0.375,0.186,3.419,2.628,0.791,1.074,0.8129999999999999,0.261,4.25,3.397,0.261,0.893,0.209,0.529,0.671,0.835,3.018,0.737,0.581,0.156,1.044,0.185,0.671,0.134,0.247,16.537,15.384,6.703,7.08,3.805,2.402,0.117,3.908,3.823,0.382,1.123,2.352,0.538,1.153,0.6909999999999999,8.673,1.748,6.924,3.284,2.577,1.063,1.691,0.058,5.737,1.864,3.872,1.853,0.122,1.512,0.027,0.08599999999999999,0.046,0.051,1.017,0.603,0.414,0.502,0.075,0.034,0.039,0.355,0.282,0.023,0.037,1.82,0.676,0.651,0.22,0.113,6.707,0.5649999999999999,6.142,0.132,2.901,0.107,0.094,0.013,2.332,1.234,0.325,0.025,0.792,0.083,3.198,1.579,1.619,0.651,2.547,0.704,0.623,0.996,0.223,100,7.513,79.10299999999999,86.616,92.48699999999999,67.157,46.26,43.858,37.327,19.849,27.192,13.808,10.135,4.094,62.673,59.254,30.205,32.468,5.926],[13.371,7.38,0.967,0.313,0.654,0.428,0.302,0.225,0.319,0.249,0.097,0.743,0.5620000000000001,0.483,0.273,0.877,0.619,0.258,0.284,0.217,1.354,5.991,0.971,0.605,0.367,41.711,32.767,7.803,0.912,0.113,0.799,23.679,0.374,0.198,3.408,2.636,0.772,1.074,0.8139999999999999,0.259,4.264,3.404,0.271,0.894,0.211,0.522,0.671,0.835,3.042,0.756,0.593,0.163,1.06,0.18,0.663,0.132,0.253,16.635,15.485,6.689,7.064,3.797,2.397,0.111,4.013,3.925,0.381,1.118,2.368,0.541,1.149,0.6879999999999999,8.685,1.742,6.942,3.275,2.604,1.063,1.685,0.057,5.72,1.856,3.864,1.846,0.119,1.505,0.027,0.089,0.046,0.051,1.016,0.603,0.414,0.501,0.074,0.034,0.039,0.355,0.281,0.024,0.037,1.816,0.674,0.649,0.22,0.113,6.669,0.5649999999999999,6.104,0.131,2.882,0.108,0.094,0.014,2.317,1.231,0.324,0.026,0.788,0.08400000000000001,3.194,1.577,1.617,0.65,2.544,0.703,0.623,0.994,0.224,100,7.619,79.01000000000001,86.629,92.381,67.233,46.242,43.846,37.43,19.848,27.316,13.945,10.114,4.211,62.57,59.162,30.177,32.393,5.933],[13.306,7.327,0.959,0.311,0.648,0.426,0.298,0.223,0.318,0.245,0.099,0.735,0.554,0.471,0.273,0.873,0.617,0.256,0.282,0.218,1.352,5.978,0.97,0.604,0.366,41.663,32.697,7.779,0.9389999999999999,0.113,0.826,23.606,0.373,0.195,3.433,2.634,0.799,1.073,0.8139999999999999,0.259,4.264,3.395,0.271,0.888,0.208,0.525,0.673,0.83,3.136,0.778,0.612,0.166,1.111,0.181,0.674,0.134,0.257,16.723,15.551,6.676,7.059,3.775,2.407,0.111,4.059,3.971,0.38,1.116,2.396,0.541,1.171,0.712,8.679,1.74,6.939,3.277,2.602,1.06,1.682,0.058,5.716,1.849,3.867,1.849,0.117,1.513,0.027,0.089,0.044,0.051,1.011,0.6,0.411,0.499,0.074,0.034,0.038,0.356,0.284,0.024,0.036,1.814,0.668,0.655,0.218,0.112,6.624,0.5620000000000001,6.063,0.132,2.869,0.109,0.095,0.014,2.298,1.216,0.321,0.025,0.778,0.083,3.184,1.569,1.616,0.646,2.538,0.7,0.621,0.995,0.222,100,7.687,79.00700000000001,86.694,92.313,67.303,46.309,43.902,37.455,19.895,27.368,14.062,10.087,4.254,62.545,59.112,30.22,32.325,5.987],[13.281,7.31,0.961,0.31,0.651,0.43,0.3,0.225,0.319,0.248,0.1,0.733,0.542,0.463,0.27,0.871,0.615,0.256,0.282,0.215,1.35,5.971,0.968,0.603,0.365,41.678,32.752,7.777,0.988,0.112,0.875,23.615,0.372,0.192,3.404,2.62,0.784,1.072,0.8139999999999999,0.259,4.258,3.389,0.266,0.883,0.209,0.525,0.674,0.832,3.178,0.767,0.603,0.164,1.137,0.186,0.6929999999999999,0.137,0.258,16.724,15.547,6.698,7.081,3.764,2.439,0.118,4.039,3.952,0.381,1.112,2.393,0.542,1.177,0.716,8.679,1.735,6.943,3.282,2.604,1.058,1.679,0.056,5.712,1.849,3.863,1.849,0.115,1.516,0.027,0.08799999999999999,0.044,0.051,1.011,0.599,0.411,0.503,0.074,0.035,0.038,0.353,0.281,0.024,0.036,1.808,0.671,0.647,0.218,0.114,6.595,0.5580000000000001,6.037,0.132,2.855,0.109,0.095,0.014,2.292,1.208,0.32,0.025,0.772,0.082,3.184,1.561,1.623,0.643,2.541,0.699,0.621,1.001,0.22,100,7.635,79.083,86.71899999999999,92.36499999999999,67.248,46.331,43.893,37.451,19.938,27.347,14.065,10.104,4.232,62.549,59.145,30.169,32.38,5.987],[13.273,7.311,0.955,0.311,0.644,0.436,0.297,0.224,0.318,0.251,0.106,0.732,0.551,0.46,0.272,0.864,0.61,0.254,0.278,0.216,1.351,5.962,0.966,0.602,0.364,41.607,32.715,7.768,0.993,0.112,0.881,23.584,0.371,0.192,3.367,2.596,0.771,1.072,0.8129999999999999,0.26,4.26,3.394,0.265,0.889,0.213,0.521,0.673,0.833,3.185,0.768,0.599,0.169,1.144,0.19,0.6899999999999999,0.138,0.255,16.889,15.7,6.644,7.022,3.732,2.42,0.117,4.27,4.181,0.378,1.11,2.379,0.54,1.19,0.73,8.645,1.722,6.923,3.273,2.597,1.053,1.666,0.056,5.675,1.841,3.834,1.833,0.112,1.503,0.028,0.08799999999999999,0.044,0.05,1.011,0.601,0.41,0.501,0.075,0.035,0.038,0.347,0.275,0.023,0.036,1.794,0.665,0.644,0.216,0.114,6.565,0.556,6.009,0.131,2.844,0.108,0.094,0.014,2.282,1.2,0.32,0.025,0.766,0.081,3.195,1.562,1.633,0.647,2.548,0.695,0.622,1.011,0.22,100,7.83,78.898,86.727,92.17,67.285,46.182,43.762,37.606,19.87,27.556,14.283,10.05,4.463,62.394,59.027,30.05,32.344,5.975],[13.212,7.255,0.952,0.309,0.643,0.429,0.295,0.22,0.317,0.248,0.1,0.725,0.549,0.459,0.271,0.857,0.603,0.254,0.277,0.214,1.342,5.957,0.96,0.597,0.363,41.586,32.707,7.753,1.041,0.112,0.93,23.541,0.372,0.19,3.392,2.628,0.764,1.071,0.8100000000000001,0.261,4.227,3.359,0.261,0.883,0.213,0.512,0.665,0.826,3.147,0.764,0.594,0.17,1.128,0.184,0.679,0.139,0.253,17.09,15.888,6.611,6.985,3.724,2.395,0.112,4.5,4.408,0.379,1.107,2.376,0.541,1.202,0.745,8.624000000000001,1.73,6.894,3.256,2.589,1.049,1.673,0.057,5.646,1.818,3.827,1.823,0.11,1.495,0.028,0.08799999999999999,0.044,0.05,1.011,0.6,0.411,0.492,0.074,0.034,0.038,0.339,0.269,0.023,0.035,1.794,0.663,0.647,0.215,0.113,6.553,0.556,5.997,0.134,2.834,0.108,0.094,0.014,2.276,1.201,0.318,0.024,0.77,0.079,3.183,1.555,1.628,0.646,2.537,0.6919999999999999,0.62,1.007,0.218,100,8.082000000000001,78.706,86.788,91.91800000000001,67.29300000000001,45.999,43.604,37.637,19.735,27.659,14.447,9.978999999999999,4.69,62.363,58.971,30.028,32.335,5.979],[13.198,7.239,0.957,0.31,0.647,0.433,0.294,0.215,0.317,0.249,0.092,0.725,0.542,0.457,0.271,0.856,0.604,0.252,0.277,0.213,1.341,5.959,0.961,0.597,0.364,41.649,32.72,7.761,1.022,0.111,0.911,23.564,0.373,0.189,3.454,2.697,0.757,1.072,0.8100000000000001,0.262,4.214,3.345,0.258,0.883,0.213,0.502,0.663,0.827,3.069,0.749,0.584,0.164,1.092,0.175,0.667,0.138,0.248,17.107,15.915,6.617,7.005,3.723,2.401,0.117,4.509,4.415,0.378,1.109,2.376,0.538,1.192,0.739,8.631,1.733,6.898,3.252,2.598,1.048,1.676,0.057,5.651,1.812,3.839,1.817,0.11,1.492,0.027,0.08699999999999999,0.044,0.05,1.011,0.6,0.411,0.493,0.07199999999999999,0.032,0.038,0.335,0.265,0.024,0.035,1.81,0.663,0.662,0.214,0.113,6.556,0.549,6.006,0.132,2.838,0.108,0.094,0.014,2.274,1.204,0.315,0.024,0.778,0.078,3.179,1.548,1.631,0.645,2.534,0.6879999999999999,0.624,1.006,0.215,100,8.151,78.651,86.80200000000001,91.849,67.28,45.931,43.529,37.53,19.635,27.562,14.364,9.968,4.697,62.47,59.016,30.122,32.347,5.982],[13.224,7.259,0.955,0.31,0.645,0.435,0.297,0.216,0.318,0.249,0.095,0.723,0.545,0.464,0.27,0.857,0.603,0.253,0.275,0.215,1.345,5.965,0.959,0.596,0.364,41.736,32.811,7.786,1.019,0.112,0.907,23.632,0.375,0.189,3.445,2.688,0.756,1.075,0.8129999999999999,0.262,4.216,3.344,0.257,0.878,0.215,0.5,0.664,0.832,3.006,0.741,0.584,0.157,1.037,0.17,0.67,0.135,0.253,17.055,15.897,6.643,7.049,3.722,2.429,0.129,4.445,4.351,0.378,1.11,2.377,0.538,1.158,0.702,8.616,1.719,6.897,3.248,2.603,1.046,1.662,0.057,5.656,1.815,3.841,1.815,0.109,1.491,0.027,0.08699999999999999,0.044,0.05,1.011,0.599,0.411,0.497,0.07199999999999999,0.032,0.038,0.334,0.263,0.024,0.036,1.813,0.664,0.664,0.214,0.115,6.566,0.545,6.021,0.133,2.847,0.108,0.094,0.014,2.277,1.203,0.309,0.024,0.781,0.079,3.181,1.549,1.632,0.647,2.534,0.6889999999999999,0.624,1.007,0.214,100,8.079000000000001,78.697,86.776,91.92100000000001,67.18899999999999,45.887,43.458,37.44,19.582,27.451,14.227,9.989000000000001,4.634,62.56,59.115,30.124,32.436,5.967],[13.234,7.261,0.955,0.311,0.644,0.435,0.3,0.217,0.315,0.252,0.094,0.726,0.542,0.464,0.272,0.86,0.606,0.253,0.275,0.214,1.34,5.973,0.959,0.595,0.364,41.812,32.888,7.813,1.006,0.113,0.893,23.694,0.375,0.19,3.452,2.688,0.764,1.08,0.8159999999999999,0.265,4.202,3.331,0.256,0.874,0.215,0.494,0.66,0.832,2.995,0.731,0.574,0.156,1.038,0.171,0.671,0.135,0.251,17.001,15.87,6.638,7.039,3.711,2.434,0.126,4.427,4.334,0.378,1.113,2.374,0.54,1.131,0.678,8.593,1.719,6.874,3.238,2.594,1.042,1.663,0.056,5.639,1.804,3.835,1.814,0.108,1.495,0.027,0.08400000000000001,0.043,0.049,1.009,0.599,0.41,0.492,0.073,0.033,0.038,0.33,0.259,0.023,0.036,1.805,0.667,0.654,0.213,0.115,6.59,0.545,6.045,0.131,2.883,0.108,0.094,0.014,2.266,1.202,0.312,0.024,0.779,0.078,3.178,1.545,1.632,0.647,2.53,0.6879999999999999,0.624,1.009,0.21,100,8.068,78.69799999999999,86.76600000000001,91.932,67.11199999999999,45.81,43.375,37.386,19.536,27.421,14.188,9.965,4.617,62.614,59.162,30.101,32.513,5.936],[13.235,7.256,0.955,0.31,0.645,0.43,0.298,0.217,0.312,0.25,0.093,0.726,0.547,0.462,0.271,0.865,0.613,0.252,0.278,0.215,1.338,5.979,0.963,0.598,0.365,41.773,32.893,7.825,0.971,0.114,0.858,23.723,0.374,0.193,3.401,2.655,0.747,1.079,0.8149999999999999,0.265,4.206,3.336,0.258,0.883,0.216,0.491,0.659,0.829,3.114,0.762,0.593,0.17,1.103,0.185,0.673,0.14,0.251,16.896,15.763,6.514,6.91,3.695,2.329,0.118,4.437,4.344,0.378,1.117,2.382,0.539,1.133,0.6830000000000001,8.592000000000001,1.71,6.883,3.239,2.591,1.053,1.653,0.057,5.641,1.792,3.85,1.818,0.105,1.501,0.027,0.08599999999999999,0.043,0.048,1.012,0.6,0.413,0.488,0.073,0.033,0.038,0.327,0.256,0.023,0.036,1.81,0.666,0.655,0.217,0.113,6.608,0.546,6.062,0.131,2.9,0.108,0.094,0.014,2.266,1.204,0.315,0.024,0.78,0.076,3.177,1.545,1.632,0.647,2.53,0.6879999999999999,0.623,1.009,0.21,100,8.031000000000001,78.73399999999999,86.765,91.96899999999999,67.107,45.84,43.512,37.384,19.519,27.543,14.308,9.840999999999999,4.63,62.616,59.215,30.097,32.519,5.945],[13.21,7.235,0.948,0.304,0.644,0.424,0.294,0.219,0.313,0.25,0.091,0.725,0.543,0.467,0.268,0.869,0.617,0.252,0.276,0.214,1.335,5.974,0.965,0.6,0.365,41.752,32.907,7.838,0.9360000000000001,0.114,0.823,23.76,0.373,0.199,3.345,2.606,0.739,1.079,0.8139999999999999,0.265,4.221,3.353,0.263,0.884,0.218,0.499,0.659,0.83,3.149,0.784,0.606,0.177,1.105,0.19,0.674,0.141,0.255,16.951,15.802,6.523,6.909,3.686,2.347,0.118,4.459,4.363,0.378,1.118,2.4,0.539,1.15,0.702,8.587,1.703,6.884,3.233,2.589,1.063,1.646,0.057,5.617,1.78,3.837,1.808,0.103,1.491,0.027,0.08799999999999999,0.044,0.047,1.012,0.598,0.413,0.481,0.073,0.033,0.038,0.324,0.254,0.023,0.036,1.804,0.668,0.646,0.218,0.115,6.592,0.538,6.053,0.13,2.902,0.107,0.094,0.014,2.257,1.195,0.311,0.024,0.778,0.074,3.178,1.541,1.637,0.656,2.523,0.6860000000000001,0.626,1.012,0.2,100,8.003,78.788,86.79000000000001,91.997,67.093,45.88,43.533,37.418,19.551,27.572,14.363,9.846,4.658,62.582,59.236,30.047,32.535,5.97],[13.255,7.244,0.955,0.305,0.65,0.425,0.294,0.219,0.313,0.253,0.092,0.724,0.536,0.473,0.264,0.863,0.614,0.25,0.277,0.211,1.344,6.011,0.97,0.603,0.367,41.925,33.078,7.897,0.882,0.114,0.768,23.924,0.374,0.196,3.329,2.582,0.747,1.096,0.822,0.274,4.226,3.353,0.257,0.882,0.215,0.503,0.66,0.837,3.057,0.762,0.585,0.177,1.065,0.182,0.667,0.139,0.243,16.725,15.578,6.579,6.966,3.704,2.382,0.119,4.155,4.06,0.38,1.126,2.409,0.542,1.147,0.699,8.645,1.713,6.932,3.243,2.608,1.081,1.655,0.057,5.649,1.781,3.868,1.815,0.1,1.501,0.026,0.08799999999999999,0.043,0.047,1.015,0.601,0.414,0.484,0.074,0.034,0.039,0.321,0.251,0.023,0.036,1.824,0.68,0.648,0.22,0.115,6.576,0.533,6.042,0.13,2.914,0.108,0.094,0.014,2.229,1.195,0.306,0.025,0.783,0.073,3.197,1.549,1.649,0.659,2.538,0.6860000000000001,0.628,1.02,0.203,100,7.679,79.065,86.745,92.321,66.922,45.987,43.605,37.142,19.536,27.245,13.99,9.897,4.351,62.858,59.529,30.154,32.704,5.99],[13.341,7.286,0.962,0.308,0.654,0.425,0.29,0.221,0.314,0.253,0.093,0.729,0.541,0.491,0.266,0.868,0.616,0.253,0.277,0.212,1.344,6.055,0.973,0.605,0.368,42.202,33.259,7.943,0.887,0.114,0.773,24.054,0.375,0.185,3.4,2.607,0.794,1.101,0.827,0.274,4.257,3.363,0.254,0.891,0.215,0.493,0.666,0.845,2.959,0.735,0.5620000000000001,0.174,1.016,0.174,0.658,0.138,0.237,16.348,15.235,6.611,7.005,3.724,2.391,0.122,3.762,3.671,0.383,1.128,2.415,0.543,1.113,0.66,8.682,1.707,6.974,3.255,2.621,1.099,1.65,0.057,5.694,1.806,3.888,1.817,0.098,1.509,0.026,0.08599999999999999,0.043,0.047,1.022,0.605,0.417,0.505,0.073,0.033,0.039,0.324,0.252,0.025,0.036,1.836,0.68,0.662,0.219,0.116,6.596,0.536,6.06,0.131,2.924,0.108,0.094,0.014,2.234,1.2,0.309,0.024,0.786,0.07199999999999999,3.204,1.548,1.657,0.661,2.544,0.6879999999999999,0.633,1.023,0.199,100,7.347,79.312,86.65900000000001,92.65300000000001,66.741,46.053,43.662,36.791,19.503,26.838,13.497,9.952999999999999,3.947,63.209,59.809,30.325,32.884,5.975],[13.379,7.315,0.962,0.307,0.655,0.428,0.293,0.219,0.313,0.254,0.093,0.729,0.549,0.493,0.268,0.882,0.63,0.253,0.28,0.214,1.337,6.064,0.973,0.606,0.368,42.271,33.307,7.947,0.921,0.114,0.8070000000000001,24.064,0.375,0.184,3.398,2.605,0.793,1.097,0.829,0.268,4.286,3.391,0.263,0.892,0.221,0.5,0.671,0.843,3,0.75,0.572,0.178,1.026,0.174,0.668,0.133,0.248,16.16,15.051,6.637,7.02,3.74,2.399,0.114,3.561,3.475,0.384,1.13,2.411,0.545,1.109,0.659,8.715,1.711,7.004,3.262,2.627,1.115,1.653,0.058,5.71,1.813,3.897,1.826,0.098,1.512,0.027,0.089,0.045,0.047,1.025,0.607,0.418,0.503,0.073,0.033,0.038,0.327,0.256,0.025,0.035,1.838,0.6820000000000001,0.661,0.219,0.118,6.588,0.532,6.056,0.129,2.919,0.11,0.096,0.014,2.23,1.2,0.308,0.024,0.789,0.07099999999999999,3.205,1.553,1.652,0.662,2.543,0.6899999999999999,0.633,1.019,0.201,100,7.143,79.47799999999999,86.621,92.857,66.693,46.171,43.772,36.733,19.609,26.738,13.359,9.994999999999999,3.745,63.267,59.869,30.335,32.932,5.962],[13.364,7.304,0.962,0.308,0.654,0.426,0.29,0.221,0.315,0.252,0.092,0.724,0.543,0.491,0.271,0.884,0.633,0.251,0.279,0.214,1.34,6.06,0.972,0.607,0.365,42.217,33.293,7.932,0.962,0.114,0.848,24.026,0.373,0.188,3.361,2.594,0.767,1.094,0.826,0.268,4.282,3.394,0.257,0.895,0.219,0.507,0.676,0.839,3.065,0.784,0.603,0.181,1.045,0.181,0.674,0.138,0.243,16.224,15.091,6.621,6.987,3.729,2.397,0.108,3.641,3.556,0.382,1.13,2.407,0.545,1.133,0.6840000000000001,8.696,1.696,7,3.259,2.617,1.124,1.638,0.057,5.688,1.796,3.892,1.827,0.096,1.515,0.027,0.091,0.044,0.047,1.027,0.608,0.42,0.493,0.07199999999999999,0.032,0.038,0.326,0.255,0.025,0.035,1.827,0.6850000000000001,0.647,0.219,0.115,6.565,0.527,6.038,0.13,2.911,0.113,0.099,0.014,2.219,1.192,0.304,0.024,0.786,0.07000000000000001,3.207,1.553,1.654,0.66,2.547,0.6840000000000001,0.632,1.022,0.208,100,7.19,79.446,86.636,92.81,66.70699999999999,46.153,43.756,36.817,19.624,26.842,13.477,9.975,3.829,63.183,59.822,30.264,32.919,5.962],[13.315,7.278,0.961,0.311,0.65,0.427,0.293,0.219,0.31,0.25,0.091,0.723,0.54,0.489,0.272,0.877,0.628,0.25,0.281,0.213,1.333,6.037,0.965,0.601,0.364,42.113,33.238,7.916,0.998,0.113,0.884,23.954,0.371,0.188,3.339,2.58,0.759,1.09,0.823,0.267,4.258,3.376,0.257,0.895,0.216,0.499,0.67,0.84,3.052,0.761,0.591,0.171,1.065,0.177,0.669,0.138,0.241,16.497,15.363,6.62,6.981,3.722,2.405,0.109,3.94,3.853,0.38,1.132,2.388,0.542,1.133,0.6820000000000001,8.666,1.693,6.973,3.234,2.606,1.132,1.637,0.056,5.676,1.785,3.892,1.819,0.091,1.511,0.027,0.091,0.043,0.047,1.024,0.606,0.418,0.495,0.07199999999999999,0.032,0.038,0.321,0.249,0.025,0.035,1.832,0.68,0.656,0.219,0.114,6.524,0.524,6.001,0.129,2.899,0.113,0.099,0.014,2.207,1.178,0.304,0.023,0.774,0.068,3.191,1.551,1.641,0.666,2.526,0.678,0.629,1.011,0.207,100,7.466,79.218,86.685,92.53400000000001,66.762,45.98,43.575,37.009,19.566,27.058,13.743,9.951000000000001,4.128,62.991,59.652,30.124,32.868,5.936],[13.244,7.22,0.953,0.307,0.647,0.428,0.289,0.218,0.311,0.249,0.08699999999999999,0.72,0.538,0.48,0.268,0.866,0.617,0.249,0.275,0.208,1.33,6.025,0.959,0.596,0.362,41.981,33.182,7.902,1.013,0.113,0.9,23.898,0.369,0.186,3.303,2.561,0.741,1.089,0.822,0.266,4.222,3.339,0.252,0.886,0.216,0.489,0.662,0.835,3.03,0.745,0.578,0.166,1.065,0.177,0.662,0.137,0.245,16.827,15.674,6.585,6.945,3.704,2.391,0.109,4.316,4.227,0.378,1.13,2.364,0.54,1.153,0.702,8.638999999999999,1.692,6.947,3.221,2.583,1.143,1.635,0.057,5.65,1.774,3.876,1.803,0.089,1.497,0.027,0.09,0.045,0.047,1.022,0.605,0.417,0.492,0.07099999999999999,0.033,0.037,0.314,0.244,0.025,0.035,1.833,0.68,0.659,0.218,0.115,6.495,0.518,5.977,0.128,2.884,0.112,0.098,0.014,2.199,1.172,0.3,0.022,0.774,0.068,3.176,1.547,1.629,0.663,2.512,0.677,0.626,1.003,0.206,100,7.805,78.95099999999999,86.756,92.19499999999999,66.818,45.769,43.378,37.19,19.444,27.311,14.066,9.880000000000001,4.502,62.81,59.507,29.997,32.813,5.925],[13.237,7.212,0.955,0.306,0.65,0.43,0.296,0.217,0.31,0.251,0.083,0.719,0.534,0.474,0.27,0.867,0.617,0.249,0.275,0.211,1.321,6.024,0.958,0.597,0.361,42,33.208,7.901,1.039,0.112,0.926,23.9,0.368,0.184,3.308,2.578,0.73,1.088,0.821,0.266,4.213,3.338,0.25,0.888,0.214,0.494,0.659,0.833,2.997,0.744,0.578,0.166,1.043,0.172,0.657,0.137,0.244,16.889,15.697,6.542,6.891,3.691,2.359,0.109,4.411,4.321,0.379,1.125,2.35,0.54,1.192,0.739,8.648,1.687,6.961,3.22,2.583,1.158,1.63,0.058,5.612,1.768,3.844,1.793,0.08799999999999999,1.49,0.027,0.089,0.044,0.047,1.024,0.607,0.417,0.486,0.07099999999999999,0.032,0.037,0.313,0.242,0.024,0.036,1.809,0.664,0.655,0.218,0.115,6.482,0.513,5.969,0.126,2.882,0.112,0.098,0.014,2.196,1.166,0.297,0.022,0.771,0.067,3.178,1.548,1.63,0.664,2.514,0.675,0.624,1.006,0.209,100,7.903,78.86,86.76300000000001,92.09699999999999,66.792,45.652,43.293,37.181,19.35,27.353,14.117,9.827999999999999,4.595,62.819,59.511,29.979,32.84,5.936],[13.232,7.189,0.952,0.308,0.644,0.429,0.295,0.216,0.31,0.249,0.079,0.718,0.523,0.468,0.271,0.861,0.611,0.25,0.279,0.209,1.329,6.043,0.959,0.598,0.362,42.202,33.318,7.931,1.045,0.112,0.9320000000000001,23.972,0.37,0.177,3.375,2.645,0.729,1.09,0.823,0.266,4.242,3.343,0.247,0.896,0.215,0.493,0.659,0.834,2.98,0.736,0.571,0.165,1.022,0.179,0.657,0.132,0.254,16.704,15.518,6.568,6.921,3.684,2.392,0.118,4.196,4.108,0.379,1.129,2.353,0.54,1.186,0.738,8.657999999999999,1.68,6.978,3.228,2.577,1.172,1.622,0.058,5.606,1.766,3.839,1.789,0.08699999999999999,1.486,0.026,0.09,0.043,0.047,1.025,0.607,0.418,0.488,0.07099999999999999,0.032,0.037,0.312,0.241,0.024,0.036,1.806,0.662,0.654,0.218,0.115,6.487,0.508,5.98,0.127,2.885,0.112,0.098,0.014,2.199,1.164,0.292,0.023,0.774,0.066,3.173,1.542,1.632,0.664,2.509,0.673,0.625,1.006,0.205,100,7.748,79.021,86.768,92.252,66.682,45.703,43.311,36.951,19.346,27.095,13.863,9.856,4.373,63.049,59.675,30.101,32.948,5.94],[13.22,7.175,0.953,0.308,0.645,0.431,0.299,0.217,0.307,0.248,0.08,0.717,0.521,0.474,0.269,0.857,0.608,0.249,0.277,0.209,1.319,6.045,0.96,0.598,0.362,42.232,33.349,7.941,1.046,0.112,0.9340000000000001,23.994,0.369,0.176,3.376,2.655,0.721,1.091,0.824,0.267,4.24,3.337,0.25,0.895,0.212,0.486,0.661,0.832,2.937,0.731,0.57,0.161,0.995,0.173,0.654,0.13,0.253,16.702,15.557,6.579,6.944,3.669,2.421,0.129,4.221,4.134,0.377,1.126,2.349,0.54,1.145,0.698,8.68,1.681,6.999,3.226,2.583,1.191,1.624,0.057,5.595,1.757,3.838,1.782,0.08599999999999999,1.486,0.026,0.08599999999999999,0.043,0.047,1.029,0.609,0.42,0.483,0.07099999999999999,0.033,0.037,0.307,0.236,0.024,0.036,1.808,0.668,0.651,0.218,0.116,6.488,0.514,5.975,0.126,2.884,0.112,0.098,0.014,2.198,1.168,0.3,0.022,0.772,0.065,3.185,1.548,1.636,0.67,2.515,0.676,0.627,1.009,0.203,100,7.774,79.006,86.78,92.226,66.651,45.656,43.236,36.93,19.312,27.072,13.851,9.858000000000001,4.398,63.07,59.694,30.089,32.98,5.902],[13.228,7.17,0.95,0.305,0.644,0.428,0.296,0.218,0.307,0.249,0.078,0.721,0.517,0.475,0.268,0.859,0.61,0.249,0.277,0.207,1.319,6.058,0.961,0.599,0.362,42.26,33.408,7.966,1.009,0.113,0.896,24.065,0.368,0.173,3.364,2.639,0.725,1.093,0.826,0.268,4.221,3.319,0.252,0.88,0.211,0.485,0.663,0.826,2.972,0.74,0.575,0.165,1.017,0.17,0.666,0.132,0.247,16.521,15.393,6.588,6.947,3.655,2.442,0.124,4.044,3.959,0.378,1.135,2.349,0.54,1.128,0.676,8.737,1.691,7.046,3.227,2.605,1.214,1.634,0.057,5.611,1.757,3.854,1.79,0.08400000000000001,1.495,0.026,0.08599999999999999,0.043,0.046,1.028,0.607,0.421,0.484,0.07099999999999999,0.034,0.036,0.308,0.237,0.024,0.036,1.814,0.67,0.654,0.218,0.117,6.515,0.518,5.998,0.128,2.906,0.112,0.098,0.014,2.197,1.172,0.302,0.022,0.774,0.065,3.194,1.555,1.639,0.672,2.522,0.676,0.63,1.009,0.208,100,7.581,79.19,86.77200000000001,92.41800000000001,66.592,45.782,43.34,36.807,19.361,26.951,13.723,9.855,4.217,63.193,59.829,30.154,33.04,5.889],[13.245,7.176,0.951,0.303,0.648,0.427,0.297,0.217,0.306,0.247,0.08400000000000001,0.724,0.518,0.468,0.267,0.861,0.614,0.248,0.282,0.208,1.318,6.069,0.96,0.597,0.363,42.315,33.475,7.988,1.002,0.114,0.888,24.117,0.368,0.175,3.341,2.627,0.714,1.094,0.827,0.268,4.23,3.331,0.252,0.888,0.214,0.484,0.666,0.826,3.051,0.769,0.593,0.176,1.05,0.18,0.673,0.135,0.244,16.372,15.239,6.477,6.827,3.637,2.349,0.115,4.005,3.92,0.38,1.137,2.347,0.543,1.133,0.6840000000000001,8.74,1.676,7.063,3.231,2.602,1.23,1.62,0.056,5.602,1.758,3.844,1.791,0.083,1.499,0.026,0.08699999999999999,0.044,0.045,1.027,0.606,0.421,0.491,0.07199999999999999,0.034,0.036,0.306,0.237,0.023,0.035,1.8,0.667,0.648,0.215,0.115,6.522,0.511,6.011,0.126,2.922,0.111,0.098,0.014,2.201,1.162,0.3,0.022,0.768,0.064,3.193,1.553,1.64,0.674,2.519,0.673,0.63,1.01,0.206,100,7.521,79.23399999999999,86.755,92.479,66.52500000000001,45.759,43.41,36.742,19.318,26.983,13.739,9.759,4.18,63.258,59.916,30.151,33.107,5.89],[13.25,7.183,0.946,0.301,0.645,0.427,0.298,0.218,0.308,0.247,0.082,0.725,0.53,0.471,0.267,0.86,0.614,0.246,0.281,0.208,1.314,6.067,0.958,0.596,0.361,42.214,33.418,7.99,0.9389999999999999,0.114,0.825,24.122,0.367,0.178,3.299,2.571,0.728,1.095,0.827,0.268,4.223,3.323,0.247,0.886,0.213,0.488,0.663,0.825,3.024,0.768,0.593,0.175,1.028,0.178,0.672,0.132,0.246,16.424,15.279,6.454,6.807,3.625,2.34,0.118,4.059,3.973,0.379,1.136,2.354,0.544,1.145,0.7,8.800000000000001,1.69,7.11,3.226,2.63,1.255,1.633,0.057,5.618,1.761,3.858,1.791,0.081,1.501,0.026,0.08500000000000001,0.044,0.045,1.028,0.607,0.421,0.493,0.07199999999999999,0.034,0.036,0.304,0.234,0.023,0.036,1.813,0.672,0.654,0.215,0.118,6.513,0.501,6.012,0.125,2.922,0.111,0.097,0.014,2.202,1.153,0.293,0.022,0.768,0.062,3.2,1.561,1.639,0.676,2.524,0.674,0.63,1.008,0.211,100,7.536,79.214,86.75,92.464,66.58199999999999,45.795,43.456,36.758,19.271,27.033,13.783,9.725,4.237,63.242,59.942,30.191,33.051,5.911],[13.249,7.169,0.946,0.3,0.646,0.428,0.296,0.219,0.307,0.248,0.083,0.728,0.518,0.471,0.264,0.86,0.613,0.247,0.281,0.205,1.316,6.08,0.955,0.594,0.361,42.258,33.489,8.022,0.893,0.114,0.779,24.207,0.367,0.18,3.282,2.543,0.739,1.099,0.83,0.268,4.208,3.306,0.241,0.884,0.211,0.485,0.656,0.828,2.949,0.735,0.5679999999999999,0.166,1.004,0.174,0.665,0.13,0.241,16.376,15.231,6.442,6.794,3.627,2.324,0.123,4.019,3.931,0.381,1.138,2.355,0.545,1.145,0.698,8.83,1.689,7.141,3.23,2.637,1.274,1.631,0.057,5.64,1.759,3.881,1.795,0.078,1.51,0.026,0.08400000000000001,0.043,0.045,1.03,0.608,0.422,0.496,0.07199999999999999,0.034,0.036,0.302,0.231,0.024,0.037,1.827,0.679,0.656,0.217,0.119,6.535,0.501,6.034,0.125,2.923,0.111,0.097,0.014,2.213,1.162,0.293,0.021,0.778,0.062,3.209,1.567,1.642,0.6820000000000001,2.527,0.674,0.634,1.008,0.211,100,7.481,79.271,86.751,92.51900000000001,66.511,45.782,43.458,36.615,19.167,26.918,13.669,9.696999999999999,4.199,63.385,60.103,30.264,33.122,5.916],[13.771,7.579,0.984,0.301,0.6820000000000001,0.454,0.31,0.225,0.323,0.268,0.102,0.768,0.537,0.502,0.278,0.903,0.642,0.261,0.262,0.209,1.453,6.191,1.023,0.572,0.452,42.107,33.158,7.792,0.924,0.118,0.8070000000000001,24.071,0.371,0.17,3.096,2.405,0.6909999999999999,1.083,0.795,0.288,4.6,3.725,0.279,0.9360000000000001,0.21,0.537,0.872,0.891,2.81,0.697,0.553,0.144,0.961,0.197,0.668,0.133,0.154,15.738,14.465,6.899,7.277,3.734,2.533,0.129,3.44,3.362,0.397,1.077,1.701,0.573,1.274,0.786,8.833,1.643,7.19,3.643,2.378,1.17,1.569,0.074,5.821,2.04,3.781,1.518,0.097,1.159,0.042,0.08400000000000001,0.078,0.046,1.203,0.653,0.551,0.597,0.07000000000000001,0.025,0.044,0.374,0.289,0.021,0.047,1.942,0.701,0.704,0.213,0.117,6.77,0.521,6.249,0.11,2.922,0.108,0.098,0.01,2.305,1.325,0.298,0.019,0.902,0.094,3.127,1.476,1.651,0.587,2.54,0.6889999999999999,0.666,0.984,0.2,100,6.706,79.524,86.229,93.294,66.842,46.366,43.833,37.518,20.137,26.838,13.068,10.679,3.61,62.482,59.387,29.696,32.787,5.399],[13.783,7.593,0.983,0.302,0.681,0.452,0.312,0.225,0.318,0.27,0.099,0.769,0.534,0.518,0.28,0.912,0.65,0.262,0.268,0.214,1.439,6.19,1.024,0.573,0.451,42.137,33.162,7.785,0.958,0.117,0.84,24.05,0.368,0.17,3.113,2.421,0.6909999999999999,1.085,0.795,0.289,4.608,3.735,0.291,0.9350000000000001,0.211,0.539,0.873,0.886,2.84,0.72,0.581,0.139,0.958,0.196,0.672,0.132,0.162,15.663,14.386,6.88,7.249,3.746,2.504,0.123,3.399,3.322,0.397,1.074,1.694,0.572,1.277,0.791,8.840999999999999,1.631,7.21,3.629,2.396,1.185,1.558,0.073,5.819,2.04,3.779,1.516,0.097,1.161,0.042,0.082,0.078,0.045,1.199,0.649,0.55,0.597,0.07000000000000001,0.026,0.044,0.377,0.292,0.021,0.047,1.942,0.702,0.703,0.212,0.118,6.758,0.514,6.245,0.107,2.915,0.109,0.099,0.01,2.302,1.325,0.295,0.019,0.906,0.093,3.135,1.481,1.654,0.586,2.549,0.6870000000000001,0.668,0.986,0.207,100,6.682,79.536,86.217,93.318,66.83799999999999,46.374,43.87,37.497,20.145,26.838,13.056,10.658,3.569,62.503,59.39,29.71,32.793,5.383],[13.788,7.601,0.983,0.301,0.6820000000000001,0.451,0.313,0.225,0.319,0.267,0.099,0.772,0.53,0.51,0.28,0.914,0.65,0.264,0.265,0.213,1.459,6.187,1.026,0.575,0.451,42.149,33.194,7.782,1.011,0.117,0.894,24.032,0.369,0.161,3.095,2.417,0.678,1.086,0.795,0.291,4.613,3.737,0.293,0.9399999999999999,0.211,0.535,0.874,0.882,2.916,0.74,0.601,0.139,1,0.203,0.678,0.133,0.162,15.582,14.277,6.903,7.268,3.75,2.522,0.12,3.261,3.186,0.396,1.079,1.7,0.572,1.305,0.82,8.848000000000001,1.62,7.228,3.63,2.4,1.199,1.547,0.07199999999999999,5.807,2.038,3.769,1.517,0.096,1.162,0.042,0.081,0.079,0.045,1.199,0.651,0.548,0.594,0.073,0.027,0.045,0.375,0.29,0.022,0.047,1.932,0.698,0.7,0.212,0.118,6.746,0.516,6.23,0.107,2.912,0.112,0.102,0.01,2.293,1.321,0.298,0.019,0.901,0.091,3.139,1.484,1.654,0.586,2.552,0.6929999999999999,0.669,0.986,0.205,100,6.517,79.69499999999999,86.212,93.483,66.806,46.501,43.979,37.45,20.24,26.767,12.979,10.683,3.422,62.55,59.455,29.724,32.825,5.418],[13.862,7.652,0.989,0.304,0.6840000000000001,0.455,0.314,0.226,0.324,0.267,0.101,0.778,0.534,0.506,0.282,0.923,0.657,0.266,0.268,0.215,1.471,6.21,1.032,0.58,0.452,42.239,33.303,7.82,0.982,0.117,0.865,24.134,0.367,0.146,3.082,2.412,0.67,1.091,0.799,0.292,4.617,3.738,0.292,0.9320000000000001,0.212,0.536,0.879,0.887,2.908,0.735,0.594,0.141,1.009,0.203,0.671,0.129,0.16,15.321,14.12,6.961,7.321,3.741,2.587,0.117,3.028,2.957,0.396,1.088,1.713,0.574,1.201,0.719,8.896000000000001,1.623,7.273,3.646,2.411,1.216,1.55,0.07199999999999999,5.829,2.026,3.803,1.526,0.095,1.17,0.042,0.081,0.08,0.045,1.199,0.648,0.551,0.586,0.073,0.027,0.045,0.372,0.287,0.02,0.048,1.955,0.705,0.71,0.212,0.118,6.758,0.52,6.238,0.108,2.919,0.112,0.102,0.01,2.298,1.32,0.303,0.019,0.897,0.09,3.155,1.493,1.661,0.595,2.56,0.694,0.671,0.991,0.205,100,6.256,79.88200000000001,86.13800000000001,93.744,66.697,46.579,43.992,37.336,20.3,26.601,12.739,10.735,3.174,62.664,59.582,29.728,32.936,5.332],[14.17,7.91,1.022,0.312,0.71,0.477,0.325,0.233,0.341,0.281,0.117,0.794,0.549,0.513,0.292,0.954,0.6830000000000001,0.271,0.271,0.218,1.521,6.26,1.042,0.587,0.455,42.51,33.518,7.887,0.928,0.118,0.8100000000000001,24.333,0.37,0.131,3.095,2.425,0.669,1.099,0.806,0.293,4.667,3.781,0.292,0.92,0.217,0.547,0.89,0.916,2.799,0.7,0.5649999999999999,0.136,0.958,0.203,0.655,0.126,0.158,14.658,13.539,6.978,7.33,3.763,2.581,0.097,2.552,2.486,0.397,1.096,1.592,0.572,1.119,0.635,8.981,1.631,7.35,3.676,2.436,1.238,1.559,0.07199999999999999,5.853,2.021,3.832,1.537,0.095,1.18,0.043,0.082,0.08,0.045,1.201,0.645,0.556,0.585,0.073,0.027,0.044,0.371,0.285,0.02,0.048,1.968,0.712,0.713,0.214,0.118,6.812,0.525,6.287,0.11,2.94,0.113,0.103,0.01,2.319,1.331,0.307,0.018,0.904,0.09,3.174,1.504,1.671,0.597,2.577,0.697,0.675,0.996,0.209,100,5.777,80.05200000000001,85.83,94.223,66.482,46.534,43.953,37.134,20.281,26.364,12.194,10.77,2.683,62.866,59.771,29.718,33.148,5.128],[14.259,7.976,1.021,0.316,0.705,0.53,0.334,0.233,0.349,0.283,0.108,0.799,0.551,0.518,0.295,0.949,0.679,0.27,0.272,0.219,1.517,6.283,1.047,0.587,0.46,42.609,33.594,7.903,0.9399999999999999,0.118,0.822,24.383,0.369,0.125,3.108,2.436,0.672,1.1,0.8070000000000001,0.294,4.682,3.797,0.288,0.931,0.217,0.546,0.892,0.924,2.709,0.6840000000000001,0.553,0.131,0.911,0.193,0.639,0.125,0.157,14.483,13.375,6.966,7.31,3.768,2.562,0.093,2.545,2.481,0.4,1.101,1.449,0.571,1.108,0.629,9.018000000000001,1.633,7.385,3.701,2.433,1.251,1.559,0.074,5.893,2.015,3.878,1.537,0.095,1.182,0.043,0.081,0.079,0.045,1.202,0.644,0.5590000000000001,0.583,0.07199999999999999,0.027,0.044,0.368,0.283,0.021,0.048,2.011,0.73,0.727,0.214,0.119,6.81,0.523,6.287,0.11,2.941,0.113,0.103,0.01,2.319,1.328,0.304,0.018,0.903,0.091,3.171,1.498,1.672,0.595,2.575,0.695,0.676,0.996,0.208,100,5.777,79.96299999999999,85.741,94.223,66.40600000000001,46.369,43.807,37.118,20.189,26.351,12.092,10.767,2.67,62.882,59.774,29.657,33.225,4.972],[14.252,7.971,1.02,0.316,0.703,0.556,0.346,0.235,0.347,0.279,0.102,0.789,0.536,0.519,0.295,0.949,0.679,0.27,0.269,0.217,1.514,6.282,1.043,0.584,0.459,42.535,33.468,7.871,0.953,0.117,0.836,24.277,0.367,0.129,3.161,2.494,0.668,1.097,0.804,0.293,4.68,3.799,0.292,0.9320000000000001,0.219,0.543,0.894,0.919,2.698,0.6840000000000001,0.551,0.133,0.898,0.192,0.637,0.129,0.157,14.72,13.608,6.896,7.259,3.745,2.521,0.115,2.778,2.715,0.395,1.095,1.514,0.5659999999999999,1.112,0.64,8.996,1.624,7.372,3.691,2.424,1.257,1.55,0.073,5.825,2.003,3.822,1.525,0.094,1.172,0.042,0.081,0.078,0.045,1.191,0.634,0.5570000000000001,0.588,0.07199999999999999,0.027,0.045,0.362,0.279,0.02,0.047,1.967,0.7,0.726,0.214,0.12,6.769,0.518,6.251,0.109,2.928,0.112,0.102,0.01,2.303,1.317,0.304,0.018,0.897,0.08799999999999999,3.163,1.492,1.671,0.597,2.566,0.6870000000000001,0.68,0.991,0.208,100,6.069,79.679,85.748,93.931,66.532,46.211,43.69,37.231,20.071,26.535,12.283,10.696,2.908,62.769,59.607,29.668,33.101,5.046],[14.133,7.853,1.012,0.312,0.7,0.508,0.337,0.232,0.338,0.276,0.097,0.78,0.534,0.52,0.293,0.9389999999999999,0.672,0.266,0.265,0.217,1.507,6.279,1.033,0.581,0.453,42.417,33.378,7.846,0.958,0.117,0.842,24.207,0.366,0.132,3.146,2.488,0.658,1.095,0.803,0.293,4.666,3.787,0.289,0.92,0.219,0.54,0.888,0.93,2.673,0.678,0.543,0.135,0.88,0.185,0.64,0.129,0.161,15.032,13.929,6.968,7.339,3.744,2.592,0.129,2.895,2.832,0.395,1.089,1.644,0.5659999999999999,1.103,0.632,8.984,1.616,7.368,3.688,2.415,1.265,1.543,0.073,5.762,2.003,3.759,1.531,0.093,1.178,0.042,0.082,0.079,0.045,1.188,0.632,0.5570000000000001,0.595,0.07199999999999999,0.027,0.045,0.359,0.275,0.021,0.048,1.896,0.664,0.7,0.214,0.12,6.809,0.515,6.295,0.109,2.921,0.112,0.102,0.01,2.359,1.309,0.301,0.018,0.891,0.08699999999999999,3.158,1.485,1.672,0.6,2.557,0.6870000000000001,0.6870000000000001,0.985,0.197,100,6.172,79.69499999999999,85.867,93.828,66.622,46.317,43.725,37.24,20.08,26.489,12.356,10.751,3.027,62.76,59.615,29.749,33.012,5.169],[14.1,7.822,1.006,0.308,0.698,0.483,0.332,0.234,0.337,0.275,0.095,0.792,0.54,0.514,0.291,0.9379999999999999,0.671,0.267,0.266,0.215,1.504,6.277,1.033,0.578,0.455,42.349,33.315,7.833,0.9419999999999999,0.117,0.825,24.175,0.365,0.133,3.125,2.468,0.657,1.099,0.806,0.293,4.678,3.797,0.29,0.9320000000000001,0.223,0.543,0.886,0.923,2.712,0.6879999999999999,0.553,0.135,0.897,0.191,0.645,0.131,0.161,15.105,14.041,7.091,7.456,3.722,2.735,0.131,2.886,2.824,0.393,1.093,1.646,0.5659999999999999,1.065,0.614,8.965999999999999,1.615,7.351,3.67,2.409,1.272,1.543,0.07199999999999999,5.78,2.015,3.765,1.536,0.093,1.181,0.043,0.082,0.079,0.046,1.194,0.638,0.5570000000000001,0.596,0.07199999999999999,0.027,0.044,0.361,0.274,0.024,0.047,1.9,0.663,0.704,0.213,0.12,6.813,0.514,6.299,0.109,2.921,0.111,0.102,0.01,2.367,1.305,0.302,0.018,0.888,0.08500000000000001,3.142,1.476,1.666,0.6,2.542,0.6860000000000001,0.6830000000000001,0.983,0.19,100,6.144,79.75700000000001,85.90000000000001,93.85599999999999,66.685,46.442,43.707,37.372,20.253,26.48,12.381,10.892,3.019,62.628,59.503,29.677,32.951,5.128],[14.084,7.781,1.004,0.308,0.696,0.475,0.327,0.231,0.338,0.276,0.095,0.789,0.539,0.511,0.291,0.9330000000000001,0.668,0.265,0.268,0.215,1.488,6.304,1.032,0.577,0.454,42.328,33.281,7.833,0.919,0.118,0.8,24.166,0.364,0.131,3.148,2.472,0.676,1.098,0.805,0.293,4.671,3.788,0.29,0.9389999999999999,0.22,0.542,0.887,0.911,2.78,0.696,0.5600000000000001,0.136,0.9399999999999999,0.205,0.646,0.129,0.164,15.109,14.027,7.139,7.482,3.716,2.788,0.127,2.903,2.841,0.393,1.093,1.585,0.57,1.082,0.607,8.94,1.603,7.337,3.669,2.417,1.251,1.533,0.07000000000000001,5.777,2.006,3.772,1.537,0.093,1.18,0.043,0.083,0.079,0.046,1.186,0.629,0.5570000000000001,0.593,0.07199999999999999,0.027,0.045,0.365,0.278,0.023,0.048,1.906,0.68,0.695,0.213,0.118,6.806,0.501,6.305,0.109,2.924,0.111,0.101,0.01,2.368,1.294,0.29,0.017,0.89,0.08500000000000001,3.143,1.475,1.668,0.601,2.542,0.6830000000000001,0.6840000000000001,0.984,0.191,100,6.182,79.73399999999999,85.916,93.818,66.71899999999999,46.453,43.665,37.441,20.323,26.514,12.429,10.928,3.034,62.559,59.411,29.642,32.917,5.066],[14.113,7.795,1.005,0.307,0.698,0.474,0.33,0.232,0.336,0.276,0.097,0.783,0.548,0.516,0.288,0.9350000000000001,0.67,0.265,0.269,0.214,1.491,6.318,1.036,0.581,0.455,42.295,33.283,7.845,0.855,0.118,0.736,24.218,0.365,0.132,3.116,2.439,0.677,1.1,0.806,0.294,4.663,3.778,0.285,0.9340000000000001,0.221,0.536,0.887,0.915,2.774,0.6879999999999999,0.551,0.137,0.944,0.202,0.655,0.125,0.161,15.13,14.003,7.18,7.536,3.729,2.814,0.134,2.856,2.795,0.392,1.094,1.557,0.569,1.127,0.664,8.906000000000001,1.591,7.315,3.666,2.413,1.235,1.522,0.06900000000000001,5.794,2.003,3.79,1.537,0.092,1.183,0.043,0.081,0.08,0.046,1.183,0.624,0.5590000000000001,0.596,0.07199999999999999,0.027,0.045,0.364,0.278,0.022,0.048,1.921,0.6850000000000001,0.699,0.215,0.12,6.808,0.498,6.311,0.109,2.925,0.111,0.101,0.01,2.374,1.289,0.288,0.017,0.889,0.083,3.144,1.477,1.666,0.602,2.542,0.6820000000000001,0.6870000000000001,0.98,0.194,100,6.104,79.782,85.887,93.896,66.717,46.499,43.685,37.439,20.338,26.481,12.368,10.958,2.988,62.561,59.445,29.642,32.918,5.094],[14.082,7.753,0.999,0.306,0.6929999999999999,0.474,0.325,0.233,0.336,0.278,0.098,0.785,0.543,0.512,0.286,0.923,0.661,0.261,0.269,0.211,1.482,6.33,1.041,0.583,0.458,42.364,33.32,7.86,0.841,0.118,0.722,24.253,0.366,0.136,3.125,2.42,0.705,1.105,0.8100000000000001,0.295,4.678,3.795,0.277,0.9429999999999999,0.221,0.537,0.891,0.927,2.716,0.678,0.543,0.135,0.905,0.198,0.655,0.127,0.154,15.12,13.965,7.148,7.547,3.734,2.778,0.139,2.782,2.721,0.391,1.1,1.577,0.5669999999999999,1.155,0.6870000000000001,8.896000000000001,1.586,7.311,3.667,2.42,1.224,1.52,0.066,5.818,2.007,3.811,1.534,0.092,1.187,0.042,0.077,0.079,0.046,1.189,0.629,0.5600000000000001,0.6,0.073,0.027,0.045,0.361,0.276,0.022,0.047,1.942,0.6879999999999999,0.712,0.218,0.12,6.815,0.5,6.315,0.109,2.926,0.111,0.101,0.01,2.373,1.296,0.294,0.018,0.893,0.08,3.147,1.485,1.662,0.605,2.542,0.6830000000000001,0.6879999999999999,0.974,0.197,100,6.044,79.874,85.91800000000001,93.956,66.68000000000001,46.554,43.776,37.28,20.279,26.336,12.254,10.944,2.919,62.72,59.595,29.766,32.954,5.189],[14.119,7.772,1.001,0.308,0.6929999999999999,0.471,0.322,0.233,0.333,0.278,0.099,0.792,0.538,0.516,0.288,0.93,0.666,0.264,0.27,0.212,1.489,6.347,1.038,0.58,0.458,42.385,33.316,7.862,0.825,0.118,0.707,24.263,0.366,0.145,3.135,2.425,0.71,1.107,0.8100000000000001,0.297,4.682,3.783,0.271,0.944,0.22,0.535,0.892,0.922,2.663,0.666,0.532,0.134,0.875,0.2,0.644,0.125,0.153,15.16,14.055,7.144,7.525,3.756,2.75,0.134,2.875,2.811,0.393,1.099,1.598,0.5649999999999999,1.105,0.633,8.869999999999999,1.58,7.289,3.662,2.419,1.209,1.515,0.066,5.797,2.008,3.789,1.537,0.091,1.192,0.042,0.076,0.079,0.045,1.192,0.632,0.5600000000000001,0.604,0.07099999999999999,0.026,0.044,0.356,0.274,0.02,0.046,1.916,0.6889999999999999,0.6879999999999999,0.218,0.12,6.81,0.501,6.308,0.109,2.924,0.111,0.101,0.01,2.369,1.297,0.297,0.018,0.893,0.077,3.159,1.483,1.676,0.608,2.551,0.678,0.694,0.981,0.197,100,6.155,79.726,85.881,93.845,66.684,46.41,43.661,37.339,20.2,26.397,12.278,10.942,3.02,62.661,59.526,29.711,32.95,5.142],[14.107,7.765,0.994,0.306,0.6879999999999999,0.474,0.324,0.232,0.333,0.277,0.098,0.788,0.546,0.517,0.288,0.9379999999999999,0.673,0.265,0.271,0.215,1.471,6.342,1.035,0.578,0.456,42.306,33.233,7.836,0.837,0.118,0.719,24.195,0.366,0.155,3.135,2.424,0.711,1.108,0.8100000000000001,0.298,4.675,3.773,0.278,0.9360000000000001,0.22,0.544,0.876,0.92,2.73,0.6909999999999999,0.553,0.139,0.893,0.208,0.648,0.123,0.166,15.25,14.165,7.097,7.439,3.748,2.716,0.125,3.059,2.993,0.394,1.097,1.609,0.5669999999999999,1.085,0.614,8.888999999999999,1.572,7.317,3.684,2.431,1.202,1.505,0.067,5.746,2.008,3.738,1.526,0.093,1.182,0.043,0.076,0.076,0.044,1.196,0.63,0.5659999999999999,0.605,0.07199999999999999,0.027,0.044,0.358,0.277,0.02,0.045,1.868,0.6860000000000001,0.648,0.221,0.121,6.781,0.497,6.284,0.109,2.909,0.112,0.102,0.01,2.362,1.29,0.296,0.018,0.89,0.075,3.157,1.493,1.664,0.616,2.54,0.679,0.696,0.967,0.197,100,6.349,79.544,85.893,93.651,66.767,46.311,43.595,37.526,20.205,26.648,12.541,10.878,3.214,62.474,59.339,29.607,32.867,5.093],[14.052,7.741,0.993,0.303,0.6889999999999999,0.473,0.324,0.231,0.329,0.274,0.102,0.78,0.549,0.507,0.287,0.9350000000000001,0.672,0.264,0.269,0.215,1.474,6.311,1.03,0.576,0.454,42.199,33.125,7.804,0.846,0.117,0.729,24.115,0.36,0.167,3.143,2.431,0.712,1.106,0.8070000000000001,0.299,4.657,3.758,0.278,0.93,0.223,0.548,0.876,0.903,2.766,0.698,0.5610000000000001,0.136,0.927,0.206,0.652,0.122,0.161,15.419,14.344,7.072,7.414,3.731,2.711,0.131,3.251,3.181,0.392,1.094,1.626,0.5669999999999999,1.076,0.6,8.875999999999999,1.553,7.323,3.708,2.424,1.191,1.485,0.067,5.756,2.01,3.747,1.532,0.094,1.188,0.043,0.078,0.074,0.044,1.192,0.627,0.5659999999999999,0.611,0.07199999999999999,0.027,0.045,0.359,0.277,0.02,0.045,1.869,0.6840000000000001,0.652,0.22,0.12,6.75,0.494,6.256,0.109,2.895,0.113,0.103,0.01,2.353,1.279,0.293,0.018,0.883,0.074,3.152,1.49,1.663,0.617,2.535,0.677,0.694,0.968,0.195,100,6.561,79.387,85.94799999999999,93.43899999999999,66.875,46.262,43.551,37.642,20.172,26.786,12.734,10.856,3.418,62.358,59.215,29.593,32.765,5.095],[13.976,7.702,0.988,0.302,0.6860000000000001,0.475,0.323,0.229,0.329,0.273,0.103,0.77,0.549,0.503,0.286,0.928,0.666,0.262,0.268,0.212,1.465,6.274,1.025,0.573,0.452,42.037,33.004,7.76,0.896,0.116,0.779,23.991,0.357,0.168,3.125,2.409,0.717,1.1,0.803,0.298,4.64,3.746,0.275,0.9399999999999999,0.223,0.543,0.876,0.889,2.763,0.697,0.556,0.141,0.93,0.197,0.653,0.12,0.167,15.802,14.728,7.085,7.448,3.7,2.757,0.149,3.606,3.529,0.389,1.097,1.628,0.5610000000000001,1.074,0.595,8.821999999999999,1.543,7.28,3.686,2.42,1.174,1.476,0.067,5.741,1.99,3.752,1.529,0.092,1.187,0.042,0.077,0.074,0.044,1.185,0.623,0.5620000000000001,0.599,0.07199999999999999,0.027,0.044,0.359,0.275,0.02,0.047,1.88,0.68,0.664,0.22,0.118,6.684,0.481,6.203,0.106,2.867,0.112,0.102,0.01,2.332,1.267,0.285,0.018,0.88,0.07199999999999999,3.148,1.483,1.665,0.616,2.532,0.671,0.6919999999999999,0.973,0.195,100,6.899,79.125,86.024,93.101,66.996,46.121,43.364,37.866,20.116,27.015,13.039,10.85,3.774,62.134,59.009,29.488,32.647,5.111],[13.928,7.686,0.982,0.298,0.6840000000000001,0.477,0.327,0.229,0.33,0.271,0.102,0.767,0.5600000000000001,0.497,0.287,0.918,0.658,0.26,0.265,0.213,1.459,6.242,1.019,0.569,0.45,41.88,32.857,7.709,0.956,0.116,0.841,23.838,0.354,0.161,3.133,2.412,0.721,1.093,0.798,0.295,4.637,3.745,0.274,0.952,0.221,0.539,0.868,0.889,2.739,0.6860000000000001,0.547,0.139,0.915,0.196,0.653,0.122,0.166,16.166,15.016,7.318,7.712,3.684,2.998,0.169,3.648,3.57,0.389,1.09,1.622,0.556,1.15,0.668,8.747999999999999,1.539,7.209,3.653,2.403,1.153,1.473,0.066,5.74,1.996,3.744,1.519,0.094,1.179,0.042,0.074,0.074,0.044,1.18,0.621,0.5600000000000001,0.601,0.07099999999999999,0.026,0.044,0.362,0.279,0.021,0.046,1.887,0.676,0.681,0.215,0.119,6.651,0.493,6.158,0.107,2.845,0.112,0.102,0.01,2.311,1.277,0.297,0.017,0.88,0.07099999999999999,3.129,1.477,1.652,0.612,2.517,0.667,0.6870000000000001,0.966,0.197,100,6.941,79.131,86.072,93.059,67.143,46.274,43.277,38.062,20.325,26.964,13.037,11.097,3.809,61.938,58.806,29.436,32.503,5.2],[13.874,7.647,0.979,0.299,0.679,0.491,0.329,0.224,0.334,0.275,0.099,0.762,0.555,0.495,0.286,0.902,0.643,0.259,0.264,0.214,1.44,6.226,1.013,0.5659999999999999,0.447,41.756,32.704,7.664,0.976,0.115,0.861,23.713,0.351,0.161,3.144,2.418,0.726,1.084,0.792,0.292,4.663,3.75,0.273,0.963,0.221,0.536,0.874,0.884,2.724,0.679,0.544,0.135,0.905,0.197,0.652,0.122,0.168,16.552,15.329,7.519,7.928,3.709,3.166,0.185,3.768,3.69,0.389,1.078,1.613,0.553,1.223,0.744,8.667,1.526,7.141,3.627,2.382,1.132,1.46,0.066,5.704,1.987,3.717,1.508,0.095,1.17,0.042,0.074,0.07199999999999999,0.043,1.174,0.616,0.5590000000000001,0.606,0.07099999999999999,0.026,0.043,0.358,0.274,0.021,0.047,1.87,0.668,0.679,0.212,0.118,6.61,0.491,6.119,0.106,2.829,0.111,0.101,0.01,2.297,1.267,0.297,0.017,0.871,0.07000000000000001,3.1,1.463,1.637,0.608,2.492,0.659,0.677,0.96,0.195,100,7.073,79.053,86.126,92.92700000000001,67.29600000000001,46.349,43.184,38.276,20.473,26.965,13.091,11.311,3.929,61.724,58.58,29.371,32.353,5.265],[13.846,7.633,0.97,0.298,0.672,0.513,0.339,0.222,0.334,0.276,0.097,0.754,0.545,0.493,0.283,0.902,0.643,0.259,0.262,0.211,1.432,6.213,1.008,0.5629999999999999,0.445,41.626,32.575,7.611,1.041,0.114,0.927,23.575,0.348,0.163,3.19,2.457,0.733,1.078,0.788,0.29,4.621,3.726,0.276,0.96,0.22,0.527,0.869,0.875,2.685,0.664,0.531,0.133,0.897,0.192,0.644,0.122,0.166,16.972,15.735,7.87,8.311999999999999,3.74,3.474,0.205,3.816,3.737,0.388,1.071,1.6,0.548,1.237,0.756,8.571999999999999,1.506,7.066,3.594,2.362,1.111,1.441,0.065,5.657,1.961,3.696,1.505,0.096,1.169,0.041,0.073,0.07099999999999999,0.043,1.162,0.608,0.554,0.6,0.07000000000000001,0.026,0.043,0.349,0.266,0.021,0.046,1.856,0.662,0.67,0.216,0.115,6.557,0.485,6.072,0.106,2.81,0.11,0.1,0.01,2.281,1.252,0.295,0.017,0.861,0.068,3.076,1.452,1.625,0.606,2.47,0.652,0.672,0.952,0.193,100,7.168,78.986,86.154,92.83199999999999,67.425,46.411,42.937,38.518,20.694,26.885,13.039,11.634,3.979,61.482,58.292,29.255,32.227,5.285],[13.875,7.644,0.975,0.298,0.677,0.513,0.344,0.225,0.338,0.279,0.098,0.754,0.533,0.49,0.283,0.901,0.644,0.257,0.261,0.214,1.437,6.231,1.005,0.5610000000000001,0.444,41.61,32.573,7.589,1.105,0.113,0.992,23.533,0.347,0.163,3.2,2.457,0.743,1.078,0.788,0.29,4.595,3.702,0.271,0.95,0.219,0.519,0.863,0.88,2.644,0.663,0.531,0.132,0.873,0.185,0.635,0.121,0.168,17.034,15.841,7.924,8.349,3.779,3.485,0.213,3.892,3.811,0.391,1.076,1.586,0.548,1.193,0.714,8.551,1.502,7.05,3.59,2.361,1.099,1.437,0.065,5.661,1.961,3.7,1.507,0.098,1.17,0.04,0.073,0.07099999999999999,0.043,1.164,0.614,0.55,0.597,0.07000000000000001,0.026,0.043,0.345,0.264,0.021,0.045,1.863,0.661,0.676,0.215,0.115,6.536,0.488,6.048,0.106,2.803,0.109,0.099,0.01,2.268,1.25,0.297,0.017,0.857,0.068,3.083,1.447,1.636,0.606,2.477,0.648,0.6840000000000001,0.952,0.193,100,7.255,78.87,86.125,92.745,67.42700000000001,46.296,42.812,38.603,20.673,26.94,13.065,11.663,4.055,61.397,58.197,29.17,32.226,5.219],[13.897,7.652,0.971,0.297,0.674,0.515,0.346,0.221,0.342,0.278,0.099,0.749,0.532,0.493,0.282,0.91,0.65,0.26,0.261,0.216,1.438,6.245,1.007,0.5620000000000001,0.445,41.64,32.552,7.6,1.051,0.114,0.9370000000000001,23.555,0.346,0.162,3.223,2.467,0.756,1.08,0.789,0.292,4.623,3.725,0.277,0.97,0.221,0.517,0.865,0.876,2.686,0.679,0.549,0.13,0.884,0.186,0.644,0.123,0.169,16.901,15.804,7.897,8.292,3.806,3.427,0.19,3.909,3.828,0.397,1.082,1.579,0.546,1.096,0.623,8.550000000000001,1.496,7.055,3.593,2.372,1.09,1.431,0.065,5.679,1.977,3.702,1.512,0.1,1.171,0.041,0.074,0.07000000000000001,0.043,1.162,0.612,0.55,0.609,0.07000000000000001,0.027,0.043,0.347,0.265,0.02,0.046,1.863,0.661,0.677,0.215,0.116,6.551,0.486,6.064,0.104,2.815,0.109,0.099,0.01,2.265,1.257,0.296,0.017,0.864,0.06900000000000001,3.09,1.45,1.64,0.606,2.484,0.65,0.6860000000000001,0.954,0.194,100,7.294,78.809,86.10299999999999,92.706,67.44799999999999,46.257,42.829,38.692,20.724,27.019,13.122,11.673,4.071,61.308,58.085,29.102,32.206,5.094],[13.977,7.716,0.979,0.296,0.6820000000000001,0.53,0.349,0.225,0.34,0.281,0.102,0.753,0.537,0.492,0.281,0.918,0.659,0.26,0.261,0.219,1.449,6.261,1.006,0.5610000000000001,0.446,41.727,32.576,7.613,1.024,0.114,0.91,23.594,0.346,0.169,3.242,2.469,0.773,1.081,0.787,0.294,4.659,3.765,0.286,0.99,0.224,0.52,0.868,0.877,2.727,0.6899999999999999,0.555,0.135,0.899,0.193,0.652,0.126,0.166,16.716,15.673,7.787,8.163,3.834,3.291,0.172,3.911,3.83,0.399,1.079,1.575,0.546,1.043,0.58,8.52,1.496,7.024,3.578,2.37,1.076,1.431,0.066,5.673,1.969,3.703,1.51,0.099,1.172,0.041,0.074,0.06900000000000001,0.043,1.163,0.614,0.549,0.605,0.07000000000000001,0.027,0.042,0.344,0.263,0.019,0.046,1.865,0.659,0.681,0.213,0.115,6.569,0.488,6.082,0.104,2.83,0.109,0.099,0.01,2.265,1.262,0.299,0.016,0.867,0.06900000000000001,3.084,1.447,1.637,0.608,2.476,0.648,0.6820000000000001,0.956,0.191,100,7.322,78.70099999999999,86.023,92.678,67.42400000000001,46.125,42.834,38.743,20.686,27.155,13.178,11.588,4.08,61.257,58.016,29.026,32.231,5.018],[13.995,7.733,0.979,0.298,0.681,0.536,0.354,0.227,0.34,0.28,0.102,0.75,0.536,0.494,0.281,0.92,0.659,0.261,0.26,0.217,1.458,6.262,0.997,0.555,0.442,41.611,32.425,7.585,0.984,0.114,0.87,23.514,0.342,0.185,3.262,2.446,0.8159999999999999,1.074,0.783,0.292,4.665,3.774,0.281,0.985,0.221,0.522,0.888,0.876,2.725,0.6879999999999999,0.551,0.137,0.911,0.19,0.648,0.127,0.161,16.906,15.856,7.872,8.25,3.856,3.35,0.176,4.022,3.937,0.401,1.085,1.557,0.54,1.05,0.596,8.494,1.493,7.002,3.549,2.364,1.089,1.427,0.065,5.664,1.961,3.703,1.494,0.096,1.161,0.04,0.073,0.07000000000000001,0.043,1.156,0.609,0.547,0.61,0.07000000000000001,0.026,0.042,0.341,0.261,0.019,0.046,1.879,0.656,0.697,0.211,0.115,6.523,0.48,6.043,0.103,2.812,0.112,0.102,0.01,2.249,1.247,0.294,0.017,0.859,0.067,3.085,1.453,1.632,0.615,2.47,0.643,0.674,0.958,0.195,100,7.469,78.536,86.005,92.53100000000001,67.575,46.111,42.761,38.957,20.755,27.274,13.279,11.683,4.207,61.043,57.781,28.961,32.083,5.012],[13.99,7.722,0.978,0.299,0.68,0.536,0.355,0.228,0.341,0.281,0.099,0.746,0.538,0.49,0.277,0.909,0.652,0.257,0.262,0.216,1.464,6.269,0.993,0.553,0.441,41.552,32.393,7.583,0.961,0.113,0.849,23.509,0.339,0.189,3.238,2.412,0.825,1.07,0.781,0.29,4.662,3.766,0.275,0.986,0.217,0.523,0.892,0.873,2.669,0.6840000000000001,0.547,0.137,0.882,0.185,0.642,0.124,0.152,17.137,16.061,7.975,8.363,3.884,3.419,0.179,4.115,4.027,0.404,1.08,1.56,0.539,1.075,0.619,8.474,1.487,6.987,3.539,2.345,1.102,1.422,0.065,5.621,1.953,3.668,1.483,0.093,1.154,0.04,0.07199999999999999,0.07000000000000001,0.042,1.152,0.606,0.546,0.609,0.07000000000000001,0.026,0.043,0.342,0.261,0.019,0.045,1.852,0.653,0.678,0.21,0.115,6.487,0.473,6.014,0.102,2.799,0.112,0.102,0.01,2.237,1.237,0.289,0.016,0.855,0.066,3.077,1.45,1.626,0.617,2.46,0.637,0.672,0.954,0.196,100,7.542,78.468,86.01000000000001,92.458,67.607,46.075,42.656,39.062,20.768,27.286,13.296,11.776,4.304,60.938,57.7,28.885,32.053,5.046],[13.37,8.164999999999999,1.03,0.332,0.699,0.546,0.365,0.236,0.344,0.289,0.109,0.752,0.581,0.504,0.323,0.9330000000000001,0.663,0.27,0.277,0.23,1.646,5.205,0.889,0.593,0.296,42.363,32.946,7.398,0.914,0.129,0.785,24.251,0.383,0.192,3.334,2.454,0.879,1.111,0.801,0.31,4.78,3.936,0.296,0.971,0.254,0.5610000000000001,0.9320000000000001,0.922,2.458,0.625,0.477,0.148,0.799,0.154,0.61,0.113,0.158,18.182,17.404,8.76,9.218,4.105,4.143,0.153,3.822,3.748,0.423,1.038,2.383,0.521,0.777,0.481,8.487,1.524,6.962,3.585,2.573,0.804,1.422,0.103,5.108,1.92,3.188,1.471,0.147,1.069,0.027,0.093,0.076,0.054,1.058,0.546,0.512,0.5639999999999999,0.051,0.021,0.03,0.384,0.299,0.027,0.042,1.483,0.648,0.468,0.174,0.097,6.406,0.853,5.553,0.08699999999999999,2.59,0.08599999999999999,0.078,0.008,1.9,1.743,0.36,0.021,0.967,0.385,2.737,1.358,1.38,0.526,2.211,0.648,0.546,0.833,0.184,100,7.348,79.282,86.63,92.652,67.054,46.336,42.193,39.083,21.699,26.027,12.656,13.057,4.014,60.917,57.583,28.354,32.563,5.599],[13.388,8.193,1.039,0.332,0.706,0.535,0.362,0.237,0.343,0.291,0.11,0.756,0.589,0.505,0.326,0.9350000000000001,0.66,0.276,0.279,0.236,1.65,5.195,0.886,0.591,0.295,42.357,32.802,7.374,0.898,0.128,0.77,24.151,0.379,0.201,3.418,2.543,0.875,1.113,0.805,0.308,4.823,3.982,0.299,0.986,0.258,0.569,0.9409999999999999,0.929,2.498,0.638,0.488,0.15,0.8080000000000001,0.156,0.611,0.116,0.169,18.171,17.398,8.779999999999999,9.24,4.094,4.17,0.135,3.794,3.72,0.427,1.031,2.388,0.518,0.772,0.481,8.496,1.525,6.971,3.567,2.584,0.82,1.422,0.103,5.115,1.929,3.186,1.47,0.145,1.071,0.026,0.092,0.076,0.054,1.06,0.546,0.514,0.573,0.051,0.021,0.03,0.386,0.301,0.026,0.043,1.478,0.647,0.466,0.174,0.097,6.354,0.847,5.507,0.089,2.568,0.08500000000000001,0.076,0.008999999999999999,1.885,1.727,0.36,0.021,0.96,0.378,2.735,1.357,1.378,0.522,2.214,0.647,0.548,0.83,0.189,100,7.413,79.199,86.61199999999999,92.587,67.19799999999999,46.397,42.227,39.187,21.804,26.075,12.687,13.112,3.995,60.813,57.395,28.39,32.423,5.597],[13.405,8.234,1.043,0.333,0.709,0.533,0.361,0.239,0.346,0.289,0.112,0.761,0.605,0.5,0.33,0.944,0.666,0.278,0.28,0.237,1.657,5.171,0.886,0.592,0.294,42.208,32.695,7.345,0.9379999999999999,0.127,0.8120000000000001,24.035,0.376,0.212,3.374,2.502,0.872,1.109,0.801,0.308,4.819,3.985,0.296,0.977,0.258,0.583,0.9379999999999999,0.9330000000000001,2.551,0.654,0.504,0.15,0.84,0.161,0.617,0.119,0.16,18.349,17.555,8.753,9.201000000000001,4.067,4.167,0.136,3.961,3.883,0.43,1.04,2.409,0.514,0.794,0.502,8.448,1.517,6.932,3.541,2.562,0.828,1.415,0.102,5.116,1.931,3.185,1.468,0.143,1.073,0.027,0.092,0.075,0.053,1.063,0.549,0.514,0.571,0.051,0.021,0.03,0.388,0.302,0.026,0.043,1.475,0.642,0.469,0.173,0.1,6.298,0.835,5.463,0.08799999999999999,2.548,0.08400000000000001,0.076,0.008999999999999999,1.871,1.707,0.359,0.02,0.951,0.368,2.739,1.357,1.382,0.52,2.219,0.646,0.549,0.832,0.191,100,7.547,79.048,86.595,92.453,67.30500000000001,46.353,42.186,39.393,21.815,26.321,12.916,13.072,4.173,60.607,57.233,28.288,32.319,5.635],[13.361,8.244999999999999,1.047,0.337,0.71,0.531,0.361,0.24,0.347,0.287,0.112,0.759,0.598,0.501,0.333,0.9419999999999999,0.665,0.277,0.28,0.24,1.668,5.116,0.878,0.586,0.292,41.948,32.452,7.278,0.988,0.125,0.863,23.816,0.371,0.241,3.369,2.511,0.858,1.095,0.789,0.306,4.791,3.968,0.295,0.97,0.258,0.586,0.9330000000000001,0.926,2.538,0.644,0.496,0.148,0.841,0.161,0.613,0.117,0.162,18.921,18.085,8.563000000000001,9.051,4.014,4.038,0.152,4.685,4.59,0.423,1.023,2.397,0.506,0.836,0.543,8.381,1.5,6.881,3.505,2.542,0.835,1.399,0.1,5.061,1.903,3.158,1.449,0.138,1.064,0.026,0.091,0.07199999999999999,0.052,1.071,0.551,0.519,0.5600000000000001,0.051,0.021,0.03,0.382,0.296,0.027,0.043,1.453,0.636,0.457,0.17,0.095,6.196,0.8169999999999999,5.379,0.08699999999999999,2.514,0.083,0.075,0.008999999999999999,1.835,1.677,0.358,0.02,0.9379999999999999,0.353,2.717,1.347,1.369,0.516,2.201,0.644,0.54,0.83,0.187,100,8.295,78.34399999999999,86.639,91.705,67.548,45.892,41.854,39.8,21.513,26.965,13.603,12.835,4.926,60.2,56.831,28.118,32.082,5.673],[13.421,8.304,1.052,0.339,0.713,0.527,0.362,0.244,0.355,0.288,0.123,0.773,0.601,0.498,0.332,0.95,0.669,0.281,0.278,0.242,1.678,5.117,0.877,0.585,0.292,41.954,32.437,7.275,1.011,0.124,0.887,23.782,0.368,0.242,3.393,2.521,0.873,1.092,0.787,0.305,4.789,3.969,0.296,0.979,0.257,0.575,0.931,0.9330000000000001,2.489,0.632,0.487,0.145,0.821,0.16,0.604,0.115,0.158,18.984,18.033,8.536,9.066000000000001,4.031,3.992,0.155,4.619,4.519,0.426,1.022,2.397,0.503,0.951,0.659,8.362,1.492,6.869,3.486,2.536,0.847,1.392,0.1,5.05,1.901,3.149,1.445,0.134,1.064,0.026,0.091,0.07199999999999999,0.052,1.075,0.553,0.522,0.5620000000000001,0.051,0.02,0.03,0.38,0.294,0.028,0.042,1.441,0.635,0.448,0.17,0.097,6.15,0.794,5.356,0.08599999999999999,2.503,0.083,0.074,0.008999999999999999,1.827,1.651,0.348,0.019,0.9340000000000001,0.341,2.713,1.344,1.369,0.515,2.198,0.643,0.539,0.83,0.186,100,8.255000000000001,78.324,86.57899999999999,91.745,67.563,45.887,41.895,39.686,21.403,26.906,13.485,12.779,4.862,60.314,56.921,28.246,32.068,5.829],[13.423,8.324,1.058,0.342,0.716,0.522,0.361,0.242,0.362,0.292,0.128,0.785,0.595,0.495,0.335,0.95,0.667,0.283,0.276,0.245,1.679,5.099,0.87,0.579,0.291,41.863,32.285,7.239,1.026,0.123,0.902,23.657,0.364,0.267,3.471,2.541,0.93,1.082,0.779,0.303,4.758,3.93,0.291,0.967,0.252,0.5570000000000001,0.9320000000000001,0.9320000000000001,2.459,0.625,0.482,0.143,0.806,0.154,0.6,0.116,0.157,19.297,18.25,8.515000000000001,9.003,4.026,3.975,0.152,4.927,4.82,0.428,1.016,2.379,0.498,1.046,0.756,8.301,1.48,6.821,3.454,2.512,0.855,1.379,0.101,5.013,1.883,3.13,1.441,0.13,1.064,0.026,0.092,0.07199999999999999,0.051,1.066,0.552,0.514,0.554,0.051,0.02,0.03,0.376,0.291,0.028,0.042,1.43,0.631,0.444,0.168,0.096,6.079,0.772,5.307,0.08699999999999999,2.48,0.083,0.074,0.008999999999999999,1.807,1.622,0.34,0.019,0.929,0.326,2.696,1.34,1.356,0.514,2.182,0.638,0.536,0.82,0.189,100,8.664999999999999,77.91200000000001,86.577,91.33499999999999,67.715,45.627,41.652,39.866,21.249,27.176,13.754,12.689,5.194,60.134,56.663,28.213,31.921,5.855],[13.372,8.295,1.064,0.346,0.719,0.512,0.356,0.241,0.362,0.289,0.127,0.785,0.576,0.492,0.334,0.945,0.663,0.282,0.275,0.247,1.69,5.077,0.862,0.574,0.288,41.72,32.065,7.195,1.004,0.122,0.883,23.502,0.362,0.261,3.602,2.609,0.993,1.071,0.771,0.3,4.722,3.904,0.288,0.964,0.25,0.553,0.918,0.931,2.419,0.613,0.471,0.142,0.785,0.151,0.597,0.115,0.158,19.755,18.723,8.516999999999999,9.061999999999999,3.999,4.008,0.156,5.337,5.227,0.424,1.023,2.384,0.493,1.032,0.745,8.237,1.465,6.772,3.43,2.481,0.861,1.365,0.1,4.958,1.863,3.095,1.422,0.126,1.05,0.025,0.092,0.073,0.05,1.058,0.55,0.508,0.545,0.05,0.02,0.029,0.37,0.285,0.028,0.041,1.416,0.621,0.445,0.165,0.097,6.006,0.763,5.243,0.08599999999999999,2.457,0.081,0.073,0.008999999999999999,1.781,1.601,0.339,0.02,0.915,0.318,2.672,1.329,1.343,0.51,2.162,0.634,0.53,0.8129999999999999,0.186,100,9.199999999999999,77.428,86.628,90.8,67.935,45.363,41.356,40.092,21.122,27.443,14.071,12.648,5.598,59.908,56.306,28.206,31.702,5.9],[13.527,8.414,1.086,0.353,0.733,0.511,0.36,0.242,0.367,0.287,0.132,0.798,0.574,0.495,0.338,0.964,0.675,0.289,0.281,0.254,1.724,5.113,0.865,0.576,0.289,41.919,32.247,7.246,0.984,0.122,0.862,23.654,0.363,0.239,3.612,2.658,0.954,1.076,0.775,0.301,4.745,3.92,0.287,0.973,0.247,0.55,0.919,0.9429999999999999,2.391,0.604,0.465,0.139,0.775,0.146,0.594,0.112,0.16,19.362,18.4,8.558999999999999,9.106,4.024,4.021,0.155,4.931,4.824,0.425,1.034,2.407,0.497,0.962,0.673,8.281000000000001,1.474,6.807,3.431,2.496,0.88,1.373,0.101,4.974,1.865,3.108,1.416,0.126,1.043,0.024,0.094,0.07199999999999999,0.051,1.067,0.554,0.513,0.544,0.051,0.021,0.029,0.371,0.286,0.028,0.041,1.429,0.624,0.454,0.165,0.096,5.999,0.76,5.239,0.08599999999999999,2.461,0.081,0.073,0.008999999999999999,1.78,1.59,0.333,0.019,0.908,0.321,2.682,1.333,1.349,0.511,2.171,0.64,0.531,0.8169999999999999,0.182,100,8.782,77.691,86.473,91.218,67.753,45.444,41.422,39.865,21.168,27.177,13.65,12.688,5.17,60.135,56.523,28.251,31.884,5.872],[13.635,8.475,1.098,0.355,0.743,0.51,0.36,0.242,0.37,0.287,0.136,0.804,0.571,0.5,0.343,0.973,0.6840000000000001,0.288,0.285,0.258,1.74,5.16,0.869,0.579,0.29,42.236,32.47,7.304,0.967,0.124,0.843,23.837,0.363,0.229,3.679,2.688,0.992,1.084,0.783,0.301,4.774,3.947,0.294,0.978,0.244,0.552,0.931,0.947,2.433,0.614,0.474,0.141,0.795,0.152,0.597,0.115,0.16,18.77,17.869,8.574,9.119999999999999,4.049,4.008,0.148,4.336,4.238,0.43,1.052,2.431,0.5,0.902,0.615,8.342000000000001,1.478,6.864,3.448,2.514,0.901,1.377,0.101,4.989,1.88,3.108,1.41,0.123,1.04,0.025,0.095,0.07099999999999999,0.05,1.079,0.5629999999999999,0.516,0.549,0.051,0.021,0.03,0.373,0.288,0.028,0.041,1.428,0.626,0.448,0.168,0.098,6.024,0.757,5.267,0.08599999999999999,2.488,0.081,0.073,0.008999999999999999,1.781,1.586,0.331,0.02,0.907,0.32,2.702,1.349,1.353,0.517,2.186,0.65,0.535,0.8179999999999999,0.182,100,8.244,78.121,86.36499999999999,91.756,67.53,45.651,41.643,39.488,21.288,26.769,13.134,12.719,4.565,60.512,56.833,28.405,32.108,5.86],[13.705,8.507,1.105,0.355,0.75,0.507,0.363,0.244,0.372,0.288,0.131,0.806,0.576,0.507,0.348,0.979,0.6909999999999999,0.287,0.289,0.262,1.732,5.198,0.868,0.577,0.291,42.424,32.622,7.352,0.9330000000000001,0.124,0.8080000000000001,23.977,0.361,0.224,3.7,2.685,1.016,1.089,0.783,0.306,4.79,3.966,0.296,0.975,0.244,0.5580000000000001,0.9419999999999999,0.95,2.481,0.615,0.476,0.141,0.823,0.164,0.599,0.116,0.165,18.437,17.536,8.404999999999999,8.986000000000001,4.057,3.83,0.141,4.086,3.99,0.433,1.069,2.461,0.501,0.902,0.615,8.368,1.473,6.894,3.465,2.51,0.918,1.372,0.102,4.984,1.877,3.106,1.404,0.124,1.034,0.025,0.095,0.07099999999999999,0.05,1.089,0.5669999999999999,0.522,0.542,0.051,0.021,0.03,0.375,0.29,0.028,0.041,1.426,0.627,0.441,0.172,0.097,6.028,0.751,5.277,0.08500000000000001,2.504,0.081,0.073,0.008999999999999999,1.778,1.578,0.336,0.02,0.904,0.309,2.705,1.351,1.354,0.517,2.189,0.651,0.535,0.8179999999999999,0.183,100,8.01,78.285,86.295,91.98999999999999,67.378,45.663,41.833,39.19,21.175,26.638,12.933,12.552,4.31,60.81,57.11,28.549,32.262,5.946],[13.744,8.52,1.107,0.356,0.752,0.501,0.36,0.25,0.366,0.286,0.143,0.805,0.569,0.507,0.348,0.983,0.695,0.287,0.291,0.265,1.738,5.225,0.871,0.578,0.293,42.432,32.706,7.378,0.925,0.124,0.8,24.043,0.36,0.254,3.611,2.64,0.971,1.085,0.779,0.306,4.777,3.953,0.297,0.959,0.241,0.556,0.947,0.954,2.458,0.611,0.471,0.14,0.828,0.16,0.591,0.112,0.157,18.492,17.574,8.303000000000001,8.877000000000001,4.06,3.726,0.141,4.195,4.096,0.432,1.072,2.501,0.497,0.918,0.633,8.300000000000001,1.468,6.832,3.453,2.501,0.878,1.367,0.101,4.998,1.882,3.116,1.406,0.122,1.036,0.024,0.095,0.073,0.051,1.092,0.572,0.521,0.548,0.051,0.021,0.03,0.37,0.286,0.027,0.041,1.434,0.633,0.442,0.172,0.096,5.999,0.737,5.262,0.08599999999999999,2.496,0.08400000000000001,0.075,0.008999999999999999,1.768,1.565,0.334,0.019,0.905,0.297,2.707,1.354,1.353,0.516,2.191,0.651,0.534,0.819,0.187,100,8.058999999999999,78.197,86.256,91.941,67.294,45.491,41.765,39.219,21.026,26.794,13.05,12.425,4.448,60.781,57.171,28.435,32.346,5.994],[13.781,8.525,1.118,0.358,0.76,0.496,0.353,0.252,0.363,0.287,0.147,0.8110000000000001,0.574,0.512,0.345,0.981,0.6929999999999999,0.288,0.29,0.261,1.734,5.257,0.877,0.583,0.294,42.599,32.929,7.447,0.887,0.124,0.762,24.235,0.36,0.257,3.56,2.61,0.95,1.089,0.782,0.308,4.764,3.949,0.292,0.952,0.24,0.549,0.955,0.961,2.409,0.602,0.465,0.137,0.803,0.153,0.586,0.112,0.153,18.282,17.368,8.212,8.766999999999999,4.068,3.624,0.141,4.052,3.951,0.435,1.087,2.532,0.496,0.914,0.63,8.26,1.472,6.788,3.455,2.491,0.842,1.369,0.103,5.021,1.874,3.147,1.411,0.118,1.047,0.023,0.094,0.07199999999999999,0.051,1.099,0.575,0.524,0.549,0.051,0.02,0.03,0.364,0.281,0.026,0.042,1.452,0.634,0.458,0.171,0.095,6.041,0.725,5.316,0.08599999999999999,2.502,0.08400000000000001,0.075,0.008999999999999999,1.807,1.562,0.326,0.019,0.915,0.295,2.729,1.364,1.366,0.52,2.209,0.653,0.542,0.823,0.19,100,7.868,78.34999999999999,86.21899999999999,92.13200000000001,67.071,45.421,41.797,38.971,20.882,26.661,12.88,12.31,4.308,61.029,57.469,28.46,32.569,6.018],[13.531,8.728,1.164,0.365,0.799,0.437,0.338,0.262,0.352,0.291,0.167,0.8179999999999999,0.589,0.543,0.38,1.039,0.728,0.311,0.302,0.26,1.785,4.803,0.845,0.513,0.332,44.384,34.413,7.528,1.085,0.163,0.923,25.424,0.376,0.215,3.431,2.541,0.89,1.056,0.757,0.3,5.269,4.397,0.316,1.188,0.285,0.575,1.067,0.966,2.479,0.645,0.476,0.169,0.84,0.167,0.506,0.102,0.219,16.744,15.959,7.719,8.083,4.313,2.668,0.127,3.275,3.172,0.491,1.104,2.511,0.495,0.785,0.587,8.108000000000001,1.455,6.653,3.611,2.273,0.77,1.34,0.115,5.385,2.292,3.092,1.266,0.142,0.865,0.016,0.117,0.056,0.06,1.205,0.669,0.536,0.764,0.061,0.021,0.038,0.44,0.353,0.024,0.051,1.536,0.677,0.438,0.184,0.114,5.845,0.9319999999999999,4.913,0.099,2.175,0.074,0.063,0.01,1.687,1.81,0.371,0.023,0.97,0.439,2.677,1.242,1.435,0.494,2.183,0.599,0.607,0.828,0.149,100,6.921,79.548,86.46899999999999,93.07899999999999,65.587,45.13500000000001,42.46700000000001,38.382,21.361,25.737,12.205,12.646,3.49,61.618,58.187,27.581,34.037,5.75],[13.521,8.727,1.169,0.367,0.802,0.436,0.336,0.255,0.349,0.29,0.18,0.8129999999999999,0.596,0.533,0.38,1.046,0.732,0.314,0.305,0.262,1.778,4.794,0.843,0.511,0.331,44.46,34.393,7.521,1.113,0.162,0.953,25.385,0.374,0.212,3.52,2.579,0.9409999999999999,1.059,0.76,0.3,5.277,4.412,0.324,1.178,0.291,0.579,1.069,0.971,2.524,0.665,0.495,0.17,0.846,0.169,0.505,0.104,0.234,16.733,15.965,7.637,7.998,4.299,2.605,0.12,3.344,3.246,0.488,1.11,2.528,0.497,0.768,0.574,8.050000000000001,1.459,6.591,3.585,2.27,0.737,1.346,0.113,5.379,2.285,3.093,1.266,0.143,0.863,0.016,0.117,0.057,0.06,1.205,0.665,0.539,0.762,0.062,0.021,0.039,0.438,0.352,0.024,0.051,1.535,0.675,0.439,0.184,0.113,5.815,0.924,4.891,0.098,2.161,0.074,0.063,0.011,1.677,1.805,0.369,0.023,0.972,0.434,2.673,1.242,1.431,0.493,2.18,0.596,0.603,0.828,0.152,100,7.076,79.40300000000001,86.479,92.92400000000001,65.607,45.01,42.406,38.402,21.325,25.845,12.323,12.558,3.556,61.598,58.078,27.579,34.019,5.752],[13.507,8.708,1.168,0.364,0.804,0.436,0.336,0.255,0.348,0.29,0.167,0.8100000000000001,0.597,0.52,0.384,1.053,0.738,0.314,0.304,0.261,1.782,4.798,0.838,0.509,0.329,44.451,34.473,7.533,1.158,0.161,0.997,25.411,0.371,0.2,3.417,2.568,0.849,1.062,0.76,0.301,5.3,4.43,0.318,1.173,0.292,0.585,1.09,0.971,2.592,0.678,0.502,0.176,0.886,0.179,0.514,0.106,0.23,16.759,15.96,7.569,7.943,4.288,2.554,0.118,3.379,3.283,0.483,1.106,2.554,0.496,0.799,0.606,7.977,1.453,6.525,3.562,2.26,0.703,1.34,0.112,5.406,2.285,3.121,1.277,0.139,0.879,0.016,0.116,0.057,0.059,1.216,0.669,0.548,0.759,0.062,0.021,0.039,0.443,0.357,0.022,0.052,1.537,0.676,0.442,0.183,0.112,5.786,0.912,4.874,0.097,2.15,0.075,0.064,0.011,1.667,1.797,0.372,0.023,0.975,0.419,2.683,1.244,1.439,0.496,2.187,0.596,0.604,0.835,0.153,100,6.995,79.498,86.49299999999999,93.005,65.527,45.025,42.471,38.408,21.323,25.912,12.405,12.496,3.578,61.592,58.175,27.491,34.102,5.812],[13.474,8.663,1.174,0.368,0.8070000000000001,0.436,0.332,0.256,0.345,0.286,0.148,0.804,0.585,0.506,0.381,1.051,0.738,0.313,0.302,0.259,1.796,4.811,0.836,0.508,0.329,44.457,34.586,7.542,1.237,0.16,1.077,25.437,0.37,0.194,3.32,2.542,0.779,1.06,0.759,0.301,5.297,4.431,0.318,1.174,0.293,0.582,1.091,0.973,2.605,0.679,0.502,0.177,0.896,0.179,0.513,0.105,0.233,16.849,16.041,7.584,7.987,4.286,2.57,0.123,3.394,3.304,0.482,1.106,2.578,0.493,0.8090000000000001,0.616,7.927,1.457,6.47,3.552,2.247,0.671,1.343,0.113,5.395,2.28,3.115,1.284,0.136,0.89,0.017,0.114,0.057,0.059,1.221,0.672,0.549,0.752,0.061,0.021,0.039,0.444,0.357,0.023,0.053,1.521,0.671,0.433,0.182,0.113,5.77,0.904,4.865,0.095,2.149,0.074,0.063,0.011,1.654,1.796,0.374,0.023,0.98,0.412,2.687,1.247,1.441,0.498,2.19,0.599,0.603,0.838,0.15,100,6.908,79.617,86.526,93.092,65.414,45.032,42.462,38.406,21.344,25.912,12.438,12.494,3.588,61.594,58.274,27.378,34.216,5.871],[13.436,8.632,1.168,0.365,0.803,0.44,0.328,0.255,0.345,0.285,0.145,0.799,0.587,0.503,0.376,1.043,0.734,0.309,0.302,0.256,1.796,4.804,0.836,0.505,0.331,44.339,34.564,7.542,1.221,0.159,1.061,25.432,0.37,0.185,3.247,2.511,0.735,1.058,0.757,0.301,5.285,4.393,0.311,1.162,0.288,0.575,1.082,0.975,2.565,0.671,0.497,0.174,0.876,0.178,0.507,0.104,0.229,17.112,16.29,7.681,8.073,4.278,2.673,0.122,3.547,3.459,0.483,1.106,2.591,0.491,0.822,0.63,7.878,1.456,6.423,3.535,2.245,0.642,1.342,0.114,5.395,2.274,3.12,1.283,0.136,0.889,0.017,0.115,0.057,0.059,1.237,0.675,0.5610000000000001,0.746,0.061,0.02,0.039,0.441,0.352,0.025,0.052,1.515,0.668,0.424,0.19,0.112,5.739,0.898,4.841,0.094,2.142,0.074,0.063,0.011,1.647,1.783,0.367,0.023,0.972,0.415,2.698,1.243,1.455,0.496,2.203,0.599,0.602,0.854,0.149,100,6.978,79.586,86.56399999999999,93.02200000000001,65.43600000000001,45.021,42.348,38.515,21.347,25.968,12.532,12.547,3.732,61.485,58.238,27.29,34.195,5.884],[13.431,8.616,1.166,0.364,0.802,0.445,0.328,0.252,0.345,0.282,0.125,0.793,0.594,0.508,0.382,1.044,0.734,0.31,0.302,0.257,1.792,4.815,0.838,0.506,0.332,44.357,34.674,7.558,1.249,0.159,1.091,25.497,0.37,0.173,3.213,2.495,0.719,1.06,0.756,0.304,5.237,4.358,0.309,1.15,0.285,0.5669999999999999,1.074,0.972,2.552,0.669,0.498,0.17,0.87,0.175,0.506,0.105,0.228,17.162,16.334,7.76,8.135999999999999,4.278,2.752,0.119,3.488,3.403,0.481,1.11,2.628,0.49,0.828,0.636,7.862,1.462,6.4,3.526,2.257,0.617,1.345,0.116,5.378,2.268,3.11,1.279,0.134,0.886,0.017,0.116,0.057,0.059,1.237,0.68,0.5570000000000001,0.736,0.061,0.02,0.039,0.441,0.352,0.024,0.053,1.511,0.669,0.421,0.19,0.113,5.715,0.894,4.821,0.095,2.138,0.073,0.063,0.011,1.634,1.776,0.364,0.023,0.97,0.413,2.706,1.247,1.458,0.497,2.209,0.603,0.601,0.857,0.147,100,6.874,79.69499999999999,86.569,93.126,65.32599999999999,45.022,42.27,38.469,21.378,25.889,12.459,12.58,3.661,61.531,58.317,27.226,34.304,5.915],[13.4,8.582000000000001,1.166,0.365,0.8,0.449,0.324,0.251,0.347,0.283,0.115,0.787,0.585,0.51,0.382,1.039,0.729,0.31,0.306,0.255,1.783,4.818,0.836,0.503,0.333,44.464,34.728,7.569,1.25,0.158,1.092,25.54,0.37,0.17,3.283,2.574,0.709,1.061,0.757,0.304,5.222,4.338,0.306,1.147,0.282,0.5629999999999999,1.069,0.97,2.526,0.663,0.492,0.172,0.856,0.169,0.503,0.105,0.23,17.189,16.403,7.775,8.159000000000001,4.27,2.776,0.123,3.497,3.415,0.479,1.121,2.657,0.489,0.786,0.593,7.836,1.46,6.377,3.527,2.257,0.593,1.344,0.116,5.361,2.25,3.111,1.273,0.134,0.882,0.016,0.115,0.056,0.06,1.231,0.675,0.556,0.732,0.06,0.02,0.039,0.436,0.347,0.024,0.054,1.517,0.665,0.43,0.189,0.112,5.685,0.891,4.794,0.093,2.136,0.073,0.063,0.011,1.609,1.774,0.364,0.022,0.97,0.412,2.701,1.244,1.457,0.496,2.205,0.603,0.601,0.856,0.146,100,6.951,79.649,86.59999999999999,93.04900000000001,65.27200000000001,44.921,42.145,38.388,21.321,25.816,12.416,12.572,3.667,61.612,58.328,27.253,34.358,5.917],[13.415,8.598000000000001,1.168,0.367,0.801,0.459,0.326,0.253,0.345,0.282,0.113,0.788,0.583,0.512,0.384,1.036,0.727,0.31,0.306,0.256,1.789,4.817,0.834,0.502,0.333,44.53,34.81,7.585,1.24,0.16,1.08,25.616,0.369,0.172,3.28,2.559,0.721,1.065,0.757,0.307,5.203,4.306,0.3,1.141,0.281,0.5600000000000001,1.055,0.968,2.496,0.657,0.487,0.169,0.838,0.167,0.496,0.105,0.233,17.185,16.453,7.756,8.148,4.264,2.766,0.13,3.509,3.428,0.477,1.131,2.697,0.492,0.732,0.537,7.811,1.464,6.347,3.529,2.249,0.5679999999999999,1.349,0.115,5.355,2.228,3.127,1.271,0.133,0.884,0.016,0.115,0.054,0.059,1.229,0.671,0.5580000000000001,0.732,0.06,0.02,0.038,0.423,0.334,0.024,0.054,1.529,0.67,0.434,0.191,0.11,5.675,0.878,4.797,0.093,2.138,0.07199999999999999,0.062,0.01,1.608,1.765,0.358,0.021,0.973,0.406,2.699,1.246,1.453,0.498,2.201,0.604,0.604,0.85,0.144,100,6.961,79.624,86.58499999999999,93.039,65.19,44.813,42.048,38.304,21.208,25.791,12.376,12.513,3.682,61.696,58.416,27.255,34.441,5.92],[13.38,8.568,1.163,0.362,0.801,0.46,0.331,0.248,0.347,0.282,0.109,0.782,0.578,0.509,0.38,1.035,0.728,0.306,0.307,0.255,1.782,4.813,0.832,0.5,0.331,44.448,34.749,7.59,1.177,0.162,1.015,25.613,0.369,0.183,3.274,2.552,0.722,1.067,0.761,0.306,5.175,4.291,0.306,1.123,0.279,0.5620000000000001,1.063,0.959,2.525,0.661,0.489,0.172,0.86,0.168,0.504,0.104,0.229,17.339,16.627,7.682,8.074999999999999,4.246,2.715,0.124,3.705,3.616,0.475,1.138,2.743,0.49,0.712,0.52,7.797,1.466,6.331,3.529,2.257,0.545,1.351,0.115,5.32,2.211,3.109,1.269,0.13,0.884,0.016,0.116,0.053,0.06,1.213,0.661,0.552,0.729,0.06,0.02,0.039,0.423,0.335,0.024,0.053,1.517,0.667,0.431,0.186,0.109,5.66,0.868,4.792,0.092,2.143,0.07099999999999999,0.061,0.011,1.598,1.755,0.353,0.021,0.973,0.401,2.699,1.242,1.457,0.499,2.2,0.603,0.603,0.854,0.14,100,7.162,79.45699999999999,86.62,92.83799999999999,65.251,44.708,41.993,38.386,21.117,25.973,12.593,12.412,3.888,61.614,58.34,27.234,34.381,5.951],[13.372,8.552,1.157,0.36,0.798,0.46,0.335,0.249,0.347,0.279,0.11,0.78,0.58,0.505,0.38,1.033,0.726,0.307,0.307,0.253,1.776,4.82,0.834,0.501,0.333,44.568,34.863,7.614,1.183,0.162,1.02,25.696,0.371,0.192,3.27,2.562,0.709,1.066,0.76,0.305,5.176,4.278,0.305,1.107,0.276,0.5659999999999999,1.064,0.96,2.555,0.67,0.496,0.174,0.875,0.173,0.509,0.104,0.225,17.189,16.476,7.5,7.889,4.237,2.556,0.115,3.722,3.628,0.467,1.138,2.77,0.489,0.713,0.519,7.782,1.458,6.324,3.521,2.278,0.525,1.343,0.115,5.329,2.214,3.116,1.267,0.13,0.881,0.016,0.117,0.053,0.06,1.214,0.664,0.551,0.728,0.061,0.02,0.039,0.423,0.334,0.025,0.053,1.527,0.665,0.443,0.185,0.11,5.663,0.869,4.794,0.092,2.155,0.07099999999999999,0.061,0.011,1.592,1.751,0.359,0.022,0.968,0.396,2.708,1.245,1.463,0.498,2.209,0.604,0.602,0.861,0.142,100,7.185,79.443,86.628,92.815,65.137,44.58,42.024,38.241,20.954,26.025,12.653,12.216,3.915,61.759,58.489,27.267,34.492,5.966],[13.42,8.58,1.158,0.358,0.8,0.465,0.34,0.252,0.348,0.277,0.11,0.78,0.585,0.503,0.382,1.034,0.729,0.305,0.306,0.258,1.78,4.84,0.837,0.503,0.334,44.64,34.967,7.658,1.111,0.163,0.948,25.825,0.373,0.193,3.239,2.524,0.715,1.067,0.762,0.306,5.173,4.274,0.3,1.123,0.27,0.5629999999999999,1.054,0.963,2.549,0.67,0.495,0.176,0.878,0.17,0.507,0.103,0.221,17.038,16.306,7.457,7.839,4.231,2.521,0.115,3.531,3.438,0.466,1.14,2.836,0.493,0.732,0.538,7.804,1.465,6.339,3.508,2.301,0.53,1.352,0.113,5.333,2.216,3.117,1.263,0.129,0.877,0.016,0.116,0.054,0.06,1.217,0.664,0.553,0.731,0.062,0.021,0.039,0.419,0.33,0.025,0.053,1.53,0.66,0.448,0.187,0.111,5.653,0.858,4.795,0.092,2.155,0.07099999999999999,0.061,0.011,1.595,1.74,0.356,0.021,0.967,0.389,2.726,1.259,1.467,0.508,2.218,0.607,0.605,0.862,0.144,100,6.963,79.617,86.58,93.03700000000001,65.033,44.65,42.129,38.057,20.914,25.894,12.474,12.163,3.724,61.943,58.703,27.348,34.595,6.05],[13.424,8.553000000000001,1.162,0.359,0.803,0.46,0.331,0.253,0.346,0.279,0.113,0.78,0.593,0.503,0.372,1.03,0.726,0.304,0.306,0.255,1.77,4.87,0.837,0.502,0.335,44.837,35.17,7.714,1.063,0.163,0.9,26.018,0.375,0.19,3.267,2.522,0.745,1.073,0.765,0.308,5.136,4.23,0.291,1.113,0.265,0.551,1.05,0.96,2.464,0.646,0.478,0.167,0.842,0.162,0.501,0.1,0.213,16.883,16.147,7.473,7.889,4.222,2.544,0.113,3.283,3.194,0.467,1.145,2.874,0.488,0.736,0.543,7.849,1.475,6.374,3.529,2.308,0.537,1.361,0.114,5.327,2.202,3.125,1.256,0.125,0.878,0.015,0.116,0.053,0.059,1.216,0.663,0.552,0.728,0.063,0.022,0.039,0.416,0.328,0.024,0.052,1.537,0.663,0.453,0.187,0.111,5.643,0.838,4.805,0.091,2.157,0.07199999999999999,0.061,0.011,1.598,1.725,0.351,0.021,0.971,0.375,2.737,1.263,1.474,0.515,2.222,0.605,0.608,0.866,0.143,100,6.741,79.836,86.57599999999999,93.259,64.83,44.666,42.122,37.678,20.781,25.557,12.133,12.121,3.473,62.322,59.055,27.528,34.795,6.127],[13.555,8.167,1.066,0.314,0.752,0.461,0.328,0.244,0.314,0.257,0.119,0.748,0.575,0.495,0.34,1.027,0.73,0.298,0.295,0.252,1.646,5.388,0.854,0.477,0.377,45.065,36.191,7.671,1.338,0.245,1.093,26.769,0.413,0.167,3.116,2.428,0.6879999999999999,1.086,0.759,0.326,4.506,3.523,0.294,0.966,0.224,0.514,0.722,0.804,2.512,0.636,0.488,0.147,0.887,0.122,0.53,0.099,0.238,15.898,14.828,6.232,6.42,3.684,2.012,0.139,3.372,3.261,0.469,1.233,2.794,0.54,1.071,0.751,8.004,1.489,6.515,3.63,2.305,0.58,1.37,0.118,5.307,2.041,3.265,1.19,0.125,0.78,0.026,0.129,0.059,0.067,1.055,0.629,0.426,0.648,0.077,0.024,0.052,0.356,0.28,0.03,0.03,1.878,0.716,0.641,0.221,0.102,5.906,0.868,5.038,0.082,2.406,0.065,0.056,0.008999999999999999,1.578,1.774,0.309,0.02,0.98,0.456,2.899,1.372,1.526,0.542,2.357,0.666,0.629,0.898,0.165,100,6.655,79.79000000000001,86.44499999999999,93.345,63.809,43.599,41.587,35.985,18.891,25.685,12.129,10.301,3.539,64.015,60.899,28.237,35.778,6.294],[13.561,8.177,1.062,0.313,0.749,0.457,0.325,0.242,0.313,0.253,0.12,0.747,0.573,0.507,0.341,1.044,0.743,0.301,0.296,0.253,1.643,5.384,0.852,0.476,0.375,45.176,36.222,7.655,1.388,0.244,1.143,26.766,0.413,0.167,3.177,2.483,0.695,1.095,0.768,0.327,4.514,3.53,0.298,0.973,0.229,0.514,0.713,0.803,2.541,0.66,0.509,0.15,0.887,0.118,0.527,0.099,0.251,15.736,14.662,6.132,6.285,3.671,1.926,0.129,3.3,3.194,0.469,1.237,2.828,0.543,1.074,0.76,8.015000000000001,1.472,6.543,3.628,2.329,0.585,1.356,0.116,5.316,2.052,3.264,1.195,0.127,0.78,0.026,0.129,0.06,0.068,1.054,0.626,0.428,0.658,0.077,0.024,0.052,0.356,0.281,0.029,0.03,1.874,0.717,0.636,0.221,0.101,5.897,0.868,5.029,0.081,2.399,0.066,0.057,0.008999999999999999,1.569,1.782,0.313,0.021,0.986,0.453,2.906,1.373,1.532,0.54,2.365,0.665,0.629,0.903,0.167,100,6.644,79.794,86.43899999999999,93.35599999999999,63.778,43.572,41.646,35.849,18.82,25.629,12.068,10.219,3.467,64.151,60.974,28.342,35.809,6.304],[13.495,8.138,1.062,0.314,0.747,0.454,0.321,0.24,0.308,0.25,0.13,0.738,0.5649999999999999,0.504,0.339,1.04,0.739,0.3,0.297,0.253,1.638,5.356,0.848,0.478,0.37,45.101,36.184,7.639,1.422,0.243,1.179,26.713,0.41,0.169,3.16,2.464,0.695,1.095,0.768,0.327,4.494,3.509,0.296,0.961,0.227,0.518,0.709,0.798,2.605,0.677,0.522,0.155,0.916,0.132,0.54,0.105,0.235,15.91,14.798,6.1,6.285,3.648,1.921,0.133,3.419,3.312,0.466,1.234,2.854,0.541,1.112,0.806,7.966,1.464,6.501,3.608,2.309,0.584,1.348,0.116,5.303,2.039,3.264,1.202,0.128,0.785,0.026,0.129,0.062,0.06900000000000001,1.051,0.622,0.429,0.65,0.076,0.025,0.05,0.354,0.279,0.028,0.03,1.87,0.716,0.638,0.216,0.101,5.885,0.865,5.02,0.081,2.391,0.067,0.058,0.008999999999999999,1.559,1.786,0.313,0.021,0.993,0.449,2.888,1.374,1.513,0.541,2.347,0.668,0.627,0.886,0.165,100,6.748,79.758,86.505,93.252,63.816,43.573,41.653,35.887,18.805,25.723,12.228,10.164,3.588,64.113,60.953,28.339,35.774,6.39],[13.421,8.085000000000001,1.049,0.31,0.739,0.454,0.323,0.239,0.31,0.249,0.129,0.73,0.5590000000000001,0.498,0.338,1.035,0.738,0.297,0.293,0.248,1.63,5.336,0.843,0.474,0.369,45.021,36.159,7.618,1.491,0.241,1.25,26.64,0.41,0.165,3.139,2.465,0.674,1.089,0.765,0.325,4.469,3.482,0.297,0.957,0.224,0.513,0.703,0.787,2.621,0.666,0.513,0.153,0.93,0.139,0.541,0.103,0.242,16.154,15.037,6.063,6.269,3.618,1.918,0.139,3.61,3.503,0.462,1.247,2.911,0.538,1.117,0.8080000000000001,7.953,1.457,6.496,3.586,2.322,0.587,1.341,0.116,5.264,2.015,3.249,1.204,0.125,0.787,0.026,0.133,0.06,0.06900000000000001,1.055,0.62,0.435,0.639,0.075,0.024,0.05,0.346,0.272,0.028,0.03,1.843,0.712,0.621,0.214,0.102,5.841,0.85,4.992,0.08,2.375,0.067,0.058,0.008999999999999999,1.546,1.773,0.31,0.021,0.994,0.438,2.883,1.367,1.515,0.54,2.343,0.665,0.624,0.892,0.162,100,6.915,79.664,86.57899999999999,93.08499999999999,63.841,43.506,41.588,35.894,18.698,25.814,12.393,10.08,3.775,64.10599999999999,60.967,28.357,35.749,6.481],[13.395,8.061,1.049,0.314,0.734,0.456,0.322,0.238,0.307,0.25,0.124,0.73,0.5570000000000001,0.492,0.338,1.028,0.732,0.295,0.293,0.25,1.628,5.334,0.84,0.472,0.369,44.906,36.143,7.61,1.498,0.241,1.257,26.627,0.408,0.162,3.088,2.442,0.646,1.089,0.765,0.324,4.425,3.454,0.295,0.949,0.222,0.507,0.696,0.786,2.608,0.666,0.512,0.154,0.926,0.138,0.536,0.102,0.241,16.34,15.191,6.031,6.233,3.604,1.902,0.136,3.777,3.67,0.459,1.242,2.939,0.541,1.148,0.838,7.946,1.458,6.488,3.574,2.327,0.587,1.343,0.115,5.252,2.007,3.246,1.202,0.123,0.787,0.025,0.134,0.061,0.06900000000000001,1.048,0.613,0.435,0.643,0.075,0.024,0.05,0.344,0.271,0.027,0.029,1.839,0.71,0.619,0.215,0.101,5.827,0.847,4.98,0.081,2.368,0.067,0.058,0.008999999999999999,1.542,1.769,0.311,0.021,0.994,0.433,2.886,1.361,1.525,0.538,2.348,0.661,0.629,0.896,0.162,100,7.027,79.578,86.605,92.973,63.857,43.436,41.534,35.94,18.606,25.919,12.524,10.021,3.94,64.06,60.972,28.325,35.735,6.531],[13.39,8.047000000000001,1.05,0.312,0.737,0.456,0.326,0.238,0.308,0.25,0.121,0.727,0.5590000000000001,0.49,0.339,1.02,0.724,0.296,0.292,0.249,1.621,5.343,0.84,0.472,0.369,44.979,36.24,7.623,1.517,0.24,1.277,26.691,0.409,0.157,3.091,2.446,0.646,1.086,0.763,0.323,4.404,3.438,0.289,0.9409999999999999,0.222,0.504,0.697,0.786,2.583,0.667,0.512,0.155,0.912,0.132,0.533,0.1,0.24,16.309,15.152,6.026,6.23,3.592,1.908,0.135,3.752,3.648,0.461,1.243,2.927,0.539,1.157,0.847,7.97,1.474,6.496,3.577,2.33,0.589,1.359,0.115,5.232,2.001,3.232,1.187,0.123,0.774,0.025,0.131,0.061,0.06900000000000001,1.048,0.612,0.436,0.64,0.073,0.024,0.049,0.344,0.27,0.028,0.029,1.841,0.711,0.619,0.215,0.1,5.814,0.832,4.983,0.081,2.371,0.067,0.058,0.008999999999999999,1.542,1.752,0.307,0.021,0.993,0.422,2.883,1.365,1.518,0.546,2.337,0.658,0.629,0.889,0.161,100,7.001,79.60899999999999,86.61,92.999,63.76,43.369,41.461,35.858,18.559,25.87,12.48,9.988,3.909,64.142,61.05,28.311,35.831,6.531],[13.41,8.045999999999999,1.05,0.31,0.74,0.459,0.327,0.236,0.308,0.252,0.12,0.731,0.544,0.489,0.338,1.019,0.723,0.297,0.292,0.252,1.63,5.364,0.842,0.472,0.37,45.141,36.315,7.639,1.508,0.241,1.267,26.762,0.406,0.153,3.156,2.495,0.661,1.088,0.764,0.324,4.429,3.433,0.288,0.9330000000000001,0.223,0.506,0.696,0.788,2.564,0.652,0.5,0.152,0.902,0.131,0.53,0.098,0.251,16.124,15.012,6.031,6.214,3.592,1.914,0.144,3.606,3.504,0.46,1.245,2.949,0.537,1.112,0.799,7.982,1.477,6.505,3.585,2.331,0.589,1.36,0.116,5.231,2.005,3.226,1.181,0.124,0.769,0.024,0.13,0.06,0.068,1.051,0.617,0.434,0.634,0.074,0.025,0.049,0.346,0.272,0.028,0.03,1.843,0.71,0.622,0.215,0.102,5.81,0.827,4.983,0.081,2.377,0.067,0.058,0.008999999999999999,1.54,1.745,0.302,0.021,0.989,0.425,2.897,1.365,1.531,0.548,2.349,0.657,0.633,0.899,0.16,100,6.915,79.676,86.59,93.08499999999999,63.685,43.361,41.447,35.714,18.545,25.734,12.325,9.978999999999999,3.758,64.286,61.13,28.378,35.909,6.487],[13.429,8.06,1.047,0.31,0.737,0.467,0.329,0.237,0.308,0.249,0.126,0.731,0.545,0.494,0.339,1.022,0.724,0.298,0.291,0.252,1.623,5.369,0.842,0.472,0.37,45.219,36.392,7.662,1.498,0.243,1.255,26.825,0.406,0.154,3.151,2.493,0.658,1.092,0.768,0.325,4.43,3.419,0.282,0.922,0.223,0.507,0.697,0.788,2.521,0.642,0.493,0.15,0.881,0.126,0.524,0.097,0.25,16.09,15.037,6.001,6.196,3.584,1.89,0.152,3.63,3.528,0.462,1.24,2.972,0.539,1.053,0.741,7.955,1.477,6.478,3.586,2.306,0.586,1.361,0.116,5.231,1.996,3.235,1.186,0.124,0.769,0.024,0.134,0.061,0.06900000000000001,1.049,0.614,0.435,0.628,0.074,0.025,0.049,0.344,0.271,0.027,0.03,1.847,0.711,0.624,0.218,0.102,5.815,0.83,4.985,0.081,2.383,0.067,0.058,0.008999999999999999,1.537,1.748,0.302,0.021,0.989,0.427,2.898,1.365,1.534,0.549,2.35,0.658,0.633,0.901,0.158,100,6.935,79.636,86.571,93.065,63.608,43.244,41.354,35.663,18.45,25.725,12.296,9.938000000000001,3.784,64.337,61.185,28.351,35.986,6.459],[13.426,8.047000000000001,1.044,0.309,0.735,0.468,0.329,0.237,0.311,0.249,0.132,0.733,0.546,0.489,0.336,1.017,0.722,0.295,0.293,0.249,1.614,5.378,0.842,0.472,0.37,45.3,36.517,7.686,1.486,0.246,1.24,26.937,0.409,0.151,3.124,2.473,0.651,1.096,0.77,0.325,4.413,3.41,0.287,0.912,0.222,0.503,0.694,0.791,2.562,0.65,0.492,0.157,0.913,0.131,0.525,0.1,0.244,15.963,14.923,5.975,6.169,3.575,1.874,0.142,3.528,3.429,0.461,1.246,2.981,0.538,1.04,0.731,7.954,1.473,6.481,3.582,2.313,0.586,1.357,0.115,5.224,1.991,3.233,1.183,0.121,0.77,0.025,0.133,0.06,0.06900000000000001,1.048,0.612,0.436,0.628,0.074,0.025,0.049,0.346,0.272,0.028,0.03,1.844,0.713,0.618,0.22,0.101,5.828,0.825,5.003,0.081,2.404,0.066,0.058,0.008999999999999999,1.539,1.739,0.301,0.021,0.984,0.424,2.901,1.365,1.536,0.555,2.346,0.655,0.636,0.9,0.155,100,6.803,79.771,86.574,93.197,63.483,43.254,41.38,35.549,18.444,25.662,12.236,9.887,3.679,64.45099999999999,61.327,28.343,36.109,6.46],[13.458,8.07,1.044,0.309,0.735,0.469,0.332,0.237,0.31,0.248,0.145,0.732,0.5610000000000001,0.488,0.336,1.016,0.72,0.296,0.291,0.252,1.61,5.388,0.841,0.472,0.37,45.342,36.538,7.703,1.427,0.247,1.18,27.002,0.406,0.149,3.132,2.479,0.653,1.1,0.774,0.327,4.423,3.414,0.288,0.926,0.221,0.504,0.6870000000000001,0.788,2.633,0.661,0.5,0.162,0.944,0.138,0.534,0.1,0.255,15.833,14.773,5.966,6.157,3.568,1.87,0.135,3.346,3.25,0.464,1.256,3.007,0.542,1.06,0.751,7.967,1.46,6.507,3.604,2.315,0.588,1.345,0.116,5.194,1.984,3.21,1.18,0.121,0.766,0.025,0.135,0.06,0.07000000000000001,1.042,0.609,0.434,0.625,0.073,0.025,0.048,0.346,0.272,0.028,0.03,1.828,0.697,0.621,0.218,0.1,5.83,0.8179999999999999,5.012,0.082,2.428,0.066,0.058,0.008999999999999999,1.538,1.715,0.297,0.021,0.971,0.418,2.902,1.367,1.535,0.554,2.348,0.657,0.635,0.9,0.156,100,6.627,79.91500000000001,86.542,93.373,63.462,43.377,41.507,35.436,18.484,25.565,12.107,9.871,3.494,64.56399999999999,61.431,28.432,36.132,6.521],[13.467,8.071999999999999,1.051,0.31,0.741,0.462,0.33,0.235,0.309,0.246,0.135,0.737,0.5679999999999999,0.487,0.335,1.021,0.724,0.296,0.293,0.252,1.61,5.394,0.844,0.47,0.374,45.383,36.6,7.722,1.376,0.247,1.129,27.093,0.408,0.151,3.117,2.459,0.658,1.104,0.776,0.327,4.412,3.407,0.282,0.9340000000000001,0.218,0.5,0.6889999999999999,0.784,2.584,0.656,0.497,0.159,0.92,0.131,0.535,0.099,0.243,15.822,14.714,5.961,6.146,3.558,1.875,0.134,3.281,3.186,0.464,1.268,3.013,0.541,1.108,0.798,7.98,1.456,6.524,3.612,2.323,0.59,1.34,0.115,5.206,1.979,3.227,1.176,0.122,0.76,0.024,0.133,0.062,0.07099999999999999,1.043,0.606,0.437,0.621,0.073,0.025,null,0.342,0.269,0.027,0.03,1.848,0.71,0.625,0.217,0.103,5.804,0.8090000000000001,4.996,0.082,2.428,0.06900000000000001,0.06,0.008999999999999999,1.53,1.695,0.292,0.021,0.96,0.413,2.91,1.372,1.537,0.556,2.353,0.658,0.636,0.902,0.158,100,6.549,79.985,86.533,93.45099999999999,63.4,43.385,41.51,35.311,18.413,25.453,11.987,9.858000000000001,3.432,64.688,61.572,28.497,36.192,6.579],[13.483,8.071,1.038,0.307,0.731,0.471,0.329,0.236,0.308,0.247,0.146,0.735,0.57,0.492,0.327,1.026,0.728,0.298,0.294,0.248,1.606,5.412,0.844,0.469,0.376,45.485,36.707,7.75,1.364,0.247,1.116,27.185,0.408,0.151,3.103,2.419,0.6840000000000001,1.11,0.78,0.33,4.415,3.408,0.283,0.9330000000000001,0.216,0.498,0.6899999999999999,0.788,2.515,0.645,0.491,0.154,0.885,0.126,0.528,0.097,0.235,15.755,14.639,5.981,6.166,3.566,1.889,0.131,3.189,3.095,0.461,1.271,3.015,0.537,1.116,0.8090000000000001,7.997,1.455,6.542,3.626,2.326,0.591,1.34,0.115,5.217,1.967,3.25,1.168,0.119,0.76,0.024,0.13,0.061,0.07000000000000001,1.048,0.609,0.44,0.62,0.073,0.024,0.048,0.338,0.265,0.027,0.03,1.871,0.73,0.623,0.219,0.098,5.781,0.8,4.982,0.08699999999999999,2.43,0.06900000000000001,0.06,0.008999999999999999,1.529,1.666,0.287,0.021,0.945,0.404,2.921,1.377,1.544,0.5620000000000001,2.359,0.657,0.64,0.904,0.157,100,6.442,80.075,86.517,93.55800000000001,63.293,43.368,41.48,35.169,18.347,25.315,11.832,9.853999999999999,3.339,64.831,61.728,28.532,36.299,6.586],[13.505,8.079000000000001,1.044,0.31,0.734,0.47,0.325,0.237,0.308,0.247,0.158,0.736,0.5580000000000001,0.496,0.33,1.021,0.722,0.299,0.296,0.246,1.608,5.426,0.841,0.468,0.374,45.581,36.784,7.774,1.334,0.247,1.086,27.267,0.408,0.153,3.127,2.426,0.701,1.11,0.78,0.33,4.408,3.394,0.285,0.924,0.21,0.498,0.6870000000000001,0.791,2.472,0.635,0.483,0.152,0.866,0.122,0.518,0.096,0.236,15.7,14.6,5.985,6.158,3.566,1.892,0.127,3.154,3.061,0.461,1.273,3.022,0.532,1.1,0.788,8,1.454,6.546,3.626,2.33,0.591,1.341,0.114,5.215,1.955,3.261,1.17,0.117,0.764,0.024,0.132,0.059,0.07000000000000001,1.046,0.606,0.44,0.618,0.07199999999999999,0.023,null,0.335,0.262,0.027,0.031,1.876,0.729,0.627,0.22,0.098,5.775,0.792,4.984,0.08599999999999999,2.428,0.06900000000000001,0.06,0.008999999999999999,1.53,1.662,0.284,0.02,0.948,0.4,2.909,1.37,1.539,0.5620000000000001,2.348,0.65,0.64,0.899,0.158,100,6.434,80.062,86.495,93.56699999999999,63.217,43.278,41.387,35.074,18.263,25.249,11.744,9.824999999999999,3.306,64.926,61.799,28.55,36.376,6.562],[13.496,8.093,1.035,0.302,0.734,0.468,0.325,0.234,0.305,0.247,0.179,0.733,0.5649999999999999,0.489,0.331,1.036,0.735,0.301,0.301,0.247,1.6,5.403,0.838,0.467,0.373,45.551,36.716,7.748,1.377,0.246,1.13,27.18,0.41,0.161,3.163,2.455,0.708,1.11,0.781,0.329,4.402,3.394,0.288,0.92,0.213,0.5,0.6870000000000001,0.787,2.477,0.649,0.494,0.155,0.852,0.125,0.517,0.096,0.24,15.76,14.668,5.968,6.145,3.552,1.89,0.121,3.19,3.096,0.462,1.271,3.069,0.542,1.094,0.791,7.986,1.461,6.524,3.599,2.335,0.592,1.351,0.113,5.245,1.954,3.291,1.183,0.116,0.775,0.024,0.135,0.059,0.07000000000000001,1.044,0.604,0.44,0.615,0.073,0.023,null,0.338,0.266,0.027,0.031,1.893,0.731,0.637,0.221,0.099,5.753,0.788,4.966,0.08599999999999999,2.413,0.068,0.059,0.008999999999999999,1.523,1.662,0.285,0.02,0.952,0.395,2.888,1.368,1.521,0.5610000000000001,2.329,0.648,0.639,0.883,0.159,100,6.513,79.995,86.504,93.48999999999999,63.281,43.276,41.388,35.089,18.248,25.29,11.795,9.802,3.35,64.91,61.747,28.601,36.306,6.613],[13.467,8.066000000000001,1.035,0.304,0.732,0.475,0.318,0.232,0.303,0.246,0.201,0.723,0.5600000000000001,0.479,0.332,1.031,0.729,0.303,0.298,0.246,1.589,5.4,0.838,0.467,0.373,45.552,36.686,7.733,1.411,0.245,1.165,27.129,0.411,0.162,3.173,2.455,0.717,1.116,0.782,0.334,4.415,3.396,0.29,0.915,0.214,0.507,0.6899999999999999,0.78,2.549,0.668,0.51,0.158,0.887,0.135,0.524,0.098,0.237,15.728,14.66,5.942,6.112,3.537,1.883,0.12,3.217,3.122,0.458,1.269,3.084,0.54,1.075,0.778,7.97,1.456,6.513,3.594,2.33,0.591,1.347,0.112,5.249,1.936,3.311,1.192,0.114,0.783,0.024,0.137,0.059,0.07000000000000001,1.047,0.602,0.445,0.599,0.073,0.023,null,0.338,0.267,0.027,0.031,1.898,0.732,0.641,0.219,0.099,5.742,0.783,4.959,0.08599999999999999,2.406,0.067,0.058,0.008999999999999999,1.518,1.664,0.286,0.021,0.959,0.39,2.901,1.373,1.528,0.5620000000000001,2.34,0.651,0.639,0.89,0.161,100,6.551,79.988,86.53400000000001,93.453,63.309,43.297,41.418,35.107,18.268,25.351,11.887,9.763999999999999,3.378,64.89100000000001,61.718,28.613,36.275,6.585],[13.651,8.029999999999999,1.101,0.335,0.767,0.45,0.282,0.181,0.283,0.242,0.217,0.728,0.5629999999999999,0.535,0.222,0.906,0.638,0.268,0.334,0.249,1.735,5.621,0.833,0.447,0.385,44.173,35.389,7.459,1.366,0.241,1.125,26.149,0.413,0.147,3.139,2.372,0.767,1.085,0.74,0.345,4.413,3.379,0.245,0.78,0.218,0.5,0.841,0.795,2.557,0.6879999999999999,0.554,0.133,0.882,0.119,0.584,0.104,0.181,16.6,15.165,7.23,7.391,4.357,2.378,0.123,3.043,2.96,0.36,1.016,2.853,0.503,1.435,0.907,8.243,1.53,6.713,3.669,2.252,0.792,1.353,0.176,5.327,1.829,3.498,1.079,0.08799999999999999,0.669,0.028,0.161,0.053,0.074,1.164,0.627,0.536,0.465,0.076,0.019,0.056,0.37,0.29,0.023,0.043,2.075,0.82,0.756,0.167,0.099,5.698,0.743,4.955,0.042,2.519,0.053,0.051,0.002,1.439,1.646,0.264,0.028,0.9360000000000001,0.41,2.917,1.292,1.625,0.481,2.435,0.65,0.658,0.967,0.16,100,6.329,80.01900000000001,86.349,93.67100000000001,64.611,44.631,42.253,36.235,19.394,25.328,11.677,10.906,3.19,63.765,60.626,28.79,34.975,6.327],[13.608,7.98,1.09,0.328,0.763,0.452,0.277,0.183,0.285,0.244,0.194,0.724,0.5629999999999999,0.53,0.218,0.907,0.634,0.272,0.334,0.244,1.733,5.628,0.831,0.445,0.384,44.201,35.399,7.456,1.39,0.24,1.149,26.139,0.413,0.139,3.148,2.37,0.778,1.085,0.74,0.344,4.431,3.374,0.242,0.789,0.219,0.491,0.839,0.794,2.52,0.68,0.546,0.133,0.87,0.118,0.575,0.102,0.175,16.698,15.255,7.235,7.407,4.359,2.383,0.129,3.118,3.036,0.359,1.02,2.851,0.502,1.443,0.915,8.25,1.532,6.718,3.668,2.257,0.793,1.354,0.176,5.306,1.83,3.476,1.071,0.08599999999999999,0.662,0.028,0.158,0.057,0.074,1.165,0.627,0.536,0.467,0.076,0.019,null,0.369,0.289,0.023,0.043,2.062,0.8169999999999999,0.75,0.164,0.098,5.67,0.744,4.926,0.042,2.511,0.053,0.051,0.002,1.435,1.631,0.265,0.029,0.919,0.409,2.916,1.292,1.624,0.481,2.434,0.649,0.657,0.967,0.162,100,6.404,79.986,86.392,93.596,64.601,44.588,42.206,36.223,19.358,25.307,11.698,10.915,3.257,63.777,60.629,28.792,34.985,6.345],[13.566,7.93,1.079,0.322,0.759,0.454,0.272,0.185,0.287,0.246,0.173,0.72,0.5629999999999999,0.525,0.214,0.908,0.63,0.276,0.334,0.239,1.731,5.635,0.829,0.443,0.383,44.229,35.409,7.453,1.414,0.239,1.174,26.129,0.413,0.131,3.157,2.368,0.789,1.085,0.74,0.343,4.449,3.369,0.239,0.798,0.22,0.482,0.837,0.793,2.483,0.672,0.538,0.133,0.858,0.117,0.5659999999999999,0.1,0.169,16.797,15.345,7.24,7.423,4.361,2.388,0.136,3.195,3.114,0.358,1.024,2.849,0.501,1.451,0.923,8.257,1.534,6.723,3.667,2.262,0.794,1.355,0.176,5.285,1.831,3.454,1.063,0.08400000000000001,0.655,0.028,0.155,0.062,0.074,1.166,0.627,0.536,0.469,0.076,0.019,null,0.368,0.288,0.023,0.043,2.049,0.8139999999999999,0.744,0.162,0.097,5.642,0.745,4.897,0.042,2.503,0.053,0.051,0.002,1.431,1.616,0.266,0.03,0.903,0.408,2.915,1.292,1.623,0.481,2.433,0.648,0.656,0.967,0.164,100,6.48,79.953,86.435,93.521,64.59099999999999,44.545,42.159,36.211,19.322,25.286,11.719,10.924,3.326,63.789,60.632,28.794,34.995,6.363]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>Items<\/th>\n <th>BLS Code sa<\/th>\n <th>BLS Code nsa<\/th>\n <th>Weights indexes<\/th>\n <th>Food dummy<\/th>\n <th>Housing dummy<\/th>\n <th>Apparel dummy<\/th>\n <th>Transportation dummy<\/th>\n <th>Medical dummy<\/th>\n <th>Recreation dummy<\/th>\n <th>Education dummy<\/th>\n <th>Others dummy<\/th>\n <th>Core dummy<\/th>\n <th>Seasonal components<\/th>\n <th>Diffusion components<\/th>\n <th>2012-02-01<\/th>\n <th>2012-03-01<\/th>\n <th>2012-04-01<\/th>\n <th>2012-05-01<\/th>\n <th>2012-06-01<\/th>\n <th>2012-07-01<\/th>\n <th>2012-08-01<\/th>\n <th>2012-09-01<\/th>\n <th>2012-10-01<\/th>\n <th>2012-11-01<\/th>\n <th>2012-12-01<\/th>\n <th>2013-01-01<\/th>\n <th>2013-02-01<\/th>\n <th>2013-03-01<\/th>\n <th>2013-04-01<\/th>\n <th>2013-05-01<\/th>\n <th>2013-06-01<\/th>\n <th>2013-07-01<\/th>\n <th>2013-08-01<\/th>\n <th>2013-09-01<\/th>\n <th>2013-10-01<\/th>\n <th>2013-11-01<\/th>\n <th>2013-12-01<\/th>\n <th>2014-01-01<\/th>\n <th>2014-02-01<\/th>\n <th>2014-03-01<\/th>\n <th>2014-04-01<\/th>\n <th>2014-05-01<\/th>\n <th>2014-06-01<\/th>\n <th>2014-07-01<\/th>\n <th>2014-08-01<\/th>\n <th>2014-09-01<\/th>\n <th>2014-10-01<\/th>\n <th>2014-11-01<\/th>\n <th>2014-12-01<\/th>\n <th>2015-01-01<\/th>\n <th>2015-02-01<\/th>\n <th>2015-03-01<\/th>\n <th>2015-04-01<\/th>\n <th>2015-05-01<\/th>\n <th>2015-06-01<\/th>\n <th>2015-07-01<\/th>\n <th>2015-08-01<\/th>\n <th>2015-09-01<\/th>\n <th>2015-10-01<\/th>\n <th>2015-11-01<\/th>\n <th>2015-12-01<\/th>\n <th>2016-01-01<\/th>\n <th>2016-02-01<\/th>\n <th>2016-03-01<\/th>\n <th>2016-04-01<\/th>\n <th>2016-05-01<\/th>\n <th>2016-06-01<\/th>\n <th>2016-07-01<\/th>\n <th>2016-08-01<\/th>\n <th>2016-09-01<\/th>\n <th>2016-10-01<\/th>\n <th>2016-11-01<\/th>\n <th>2016-12-01<\/th>\n <th>2017-01-01<\/th>\n <th>2017-02-01<\/th>\n <th>2017-03-01<\/th>\n <th>2017-04-01<\/th>\n <th>2017-05-01<\/th>\n <th>2017-06-01<\/th>\n <th>2017-07-01<\/th>\n <th>2017-08-01<\/th>\n <th>2017-09-01<\/th>\n <th>2017-10-01<\/th>\n <th>2017-11-01<\/th>\n <th>2017-12-01<\/th>\n <th>2018-01-01<\/th>\n <th>2018-02-01<\/th>\n <th>2018-03-01<\/th>\n <th>2018-04-01<\/th>\n <th>2018-05-01<\/th>\n <th>2018-06-01<\/th>\n <th>2018-07-01<\/th>\n <th>2018-08-01<\/th>\n <th>2018-09-01<\/th>\n <th>2018-10-01<\/th>\n <th>2018-11-01<\/th>\n <th>2018-12-01<\/th>\n <th>2019-01-01<\/th>\n <th>2019-02-01<\/th>\n <th>2019-03-01<\/th>\n <th>2019-04-01<\/th>\n <th>2019-05-01<\/th>\n <th>2019-06-01<\/th>\n <th>2019-07-01<\/th>\n <th>2019-08-01<\/th>\n <th>2019-09-01<\/th>\n <th>2019-10-01<\/th>\n <th>2019-11-01<\/th>\n <th>2019-12-01<\/th>\n <th>2020-01-01<\/th>\n <th>2020-02-01<\/th>\n <th>2020-03-01<\/th>\n <th>2020-04-01<\/th>\n <th>2020-05-01<\/th>\n <th>2020-06-01<\/th>\n <th>2020-07-01<\/th>\n <th>2020-08-01<\/th>\n <th>2020-09-01<\/th>\n <th>2020-10-01<\/th>\n <th>2020-11-01<\/th>\n <th>2020-12-01<\/th>\n <th>2021-01-01<\/th>\n <th>2021-02-01<\/th>\n <th>2021-03-01<\/th>\n <th>2021-04-01<\/th>\n <th>2021-05-01<\/th>\n <th>2021-06-01<\/th>\n <th>2021-07-01<\/th>\n <th>2021-08-01<\/th>\n <th>2021-09-01<\/th>\n <th>2021-10-01<\/th>\n <th>2021-11-01<\/th>\n <th>2021-12-01<\/th>\n <th>2022-01-01<\/th>\n <th>2022-02-01<\/th>\n <th>2022-03-01<\/th>\n <th>2022-04-01<\/th>\n <th>2022-05-01<\/th>\n <th>2022-06-01<\/th>\n <th>2022-07-01<\/th>\n <th>2022-08-01<\/th>\n <th>2022-09-01<\/th>\n <th>2022-10-01<\/th>\n <th>2022-11-01<\/th>\n <th>2022-12-01<\/th>\n <th>2023-01-01<\/th>\n <th>2023-02-01<\/th>\n <th>2023-03-01<\/th>\n <th>2023-04-01<\/th>\n <th>2023-05-01<\/th>\n <th>2023-06-01<\/th>\n <th>2023-07-01<\/th>\n <th>2023-08-01<\/th>\n <th>2023-09-01<\/th>\n <th>2023-10-01<\/th>\n <th>2023-11-01<\/th>\n <th>2023-12-01<\/th>\n <th>2024-01-01<\/th>\n <th>2024-02-01<\/th>\n <th>2024-03-01<\/th>\n <th>2024-04-01<\/th>\n <th>2024-05-01<\/th>\n <th>2024-06-01<\/th>\n <th>2024-07-01<\/th>\n <th>2024-08-01<\/th>\n <th>2024-09-01<\/th>\n <th>2024-10-01<\/th>\n <th>2024-11-01<\/th>\n <th>2024-12-01<\/th>\n <th>2025-01-01<\/th>\n <th>2025-02-01<\/th>\n <th>2025-03-01<\/th>\n <th>2025-04-01<\/th>\n <th>2025-04-01<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"scrollX":true,"scrollY":500,"scroller":true,"pageLength":20,"columnDefs":[{"className":"dt-right","targets":[4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175]},{"orderable":false,"targets":0},{"name":" ","targets":0},{"name":"Items","targets":1},{"name":"BLS Code sa","targets":2},{"name":"BLS Code nsa","targets":3},{"name":"Weights indexes","targets":4},{"name":"Food dummy","targets":5},{"name":"Housing dummy","targets":6},{"name":"Apparel dummy","targets":7},{"name":"Transportation dummy","targets":8},{"name":"Medical dummy","targets":9},{"name":"Recreation dummy","targets":10},{"name":"Education dummy","targets":11},{"name":"Others dummy","targets":12},{"name":"Core dummy","targets":13},{"name":"Seasonal components","targets":14},{"name":"Diffusion components","targets":15},{"name":"2012-02-01","targets":16},{"name":"2012-03-01","targets":17},{"name":"2012-04-01","targets":18},{"name":"2012-05-01","targets":19},{"name":"2012-06-01","targets":20},{"name":"2012-07-01","targets":21},{"name":"2012-08-01","targets":22},{"name":"2012-09-01","targets":23},{"name":"2012-10-01","targets":24},{"name":"2012-11-01","targets":25},{"name":"2012-12-01","targets":26},{"name":"2013-01-01","targets":27},{"name":"2013-02-01","targets":28},{"name":"2013-03-01","targets":29},{"name":"2013-04-01","targets":30},{"name":"2013-05-01","targets":31},{"name":"2013-06-01","targets":32},{"name":"2013-07-01","targets":33},{"name":"2013-08-01","targets":34},{"name":"2013-09-01","targets":35},{"name":"2013-10-01","targets":36},{"name":"2013-11-01","targets":37},{"name":"2013-12-01","targets":38},{"name":"2014-01-01","targets":39},{"name":"2014-02-01","targets":40},{"name":"2014-03-01","targets":41},{"name":"2014-04-01","targets":42},{"name":"2014-05-01","targets":43},{"name":"2014-06-01","targets":44},{"name":"2014-07-01","targets":45},{"name":"2014-08-01","targets":46},{"name":"2014-09-01","targets":47},{"name":"2014-10-01","targets":48},{"name":"2014-11-01","targets":49},{"name":"2014-12-01","targets":50},{"name":"2015-01-01","targets":51},{"name":"2015-02-01","targets":52},{"name":"2015-03-01","targets":53},{"name":"2015-04-01","targets":54},{"name":"2015-05-01","targets":55},{"name":"2015-06-01","targets":56},{"name":"2015-07-01","targets":57},{"name":"2015-08-01","targets":58},{"name":"2015-09-01","targets":59},{"name":"2015-10-01","targets":60},{"name":"2015-11-01","targets":61},{"name":"2015-12-01","targets":62},{"name":"2016-01-01","targets":63},{"name":"2016-02-01","targets":64},{"name":"2016-03-01","targets":65},{"name":"2016-04-01","targets":66},{"name":"2016-05-01","targets":67},{"name":"2016-06-01","targets":68},{"name":"2016-07-01","targets":69},{"name":"2016-08-01","targets":70},{"name":"2016-09-01","targets":71},{"name":"2016-10-01","targets":72},{"name":"2016-11-01","targets":73},{"name":"2016-12-01","targets":74},{"name":"2017-01-01","targets":75},{"name":"2017-02-01","targets":76},{"name":"2017-03-01","targets":77},{"name":"2017-04-01","targets":78},{"name":"2017-05-01","targets":79},{"name":"2017-06-01","targets":80},{"name":"2017-07-01","targets":81},{"name":"2017-08-01","targets":82},{"name":"2017-09-01","targets":83},{"name":"2017-10-01","targets":84},{"name":"2017-11-01","targets":85},{"name":"2017-12-01","targets":86},{"name":"2018-01-01","targets":87},{"name":"2018-02-01","targets":88},{"name":"2018-03-01","targets":89},{"name":"2018-04-01","targets":90},{"name":"2018-05-01","targets":91},{"name":"2018-06-01","targets":92},{"name":"2018-07-01","targets":93},{"name":"2018-08-01","targets":94},{"name":"2018-09-01","targets":95},{"name":"2018-10-01","targets":96},{"name":"2018-11-01","targets":97},{"name":"2018-12-01","targets":98},{"name":"2019-01-01","targets":99},{"name":"2019-02-01","targets":100},{"name":"2019-03-01","targets":101},{"name":"2019-04-01","targets":102},{"name":"2019-05-01","targets":103},{"name":"2019-06-01","targets":104},{"name":"2019-07-01","targets":105},{"name":"2019-08-01","targets":106},{"name":"2019-09-01","targets":107},{"name":"2019-10-01","targets":108},{"name":"2019-11-01","targets":109},{"name":"2019-12-01","targets":110},{"name":"2020-01-01","targets":111},{"name":"2020-02-01","targets":112},{"name":"2020-03-01","targets":113},{"name":"2020-04-01","targets":114},{"name":"2020-05-01","targets":115},{"name":"2020-06-01","targets":116},{"name":"2020-07-01","targets":117},{"name":"2020-08-01","targets":118},{"name":"2020-09-01","targets":119},{"name":"2020-10-01","targets":120},{"name":"2020-11-01","targets":121},{"name":"2020-12-01","targets":122},{"name":"2021-01-01","targets":123},{"name":"2021-02-01","targets":124},{"name":"2021-03-01","targets":125},{"name":"2021-04-01","targets":126},{"name":"2021-05-01","targets":127},{"name":"2021-06-01","targets":128},{"name":"2021-07-01","targets":129},{"name":"2021-08-01","targets":130},{"name":"2021-09-01","targets":131},{"name":"2021-10-01","targets":132},{"name":"2021-11-01","targets":133},{"name":"2021-12-01","targets":134},{"name":"2022-01-01","targets":135},{"name":"2022-02-01","targets":136},{"name":"2022-03-01","targets":137},{"name":"2022-04-01","targets":138},{"name":"2022-05-01","targets":139},{"name":"2022-06-01","targets":140},{"name":"2022-07-01","targets":141},{"name":"2022-08-01","targets":142},{"name":"2022-09-01","targets":143},{"name":"2022-10-01","targets":144},{"name":"2022-11-01","targets":145},{"name":"2022-12-01","targets":146},{"name":"2023-01-01","targets":147},{"name":"2023-02-01","targets":148},{"name":"2023-03-01","targets":149},{"name":"2023-04-01","targets":150},{"name":"2023-05-01","targets":151},{"name":"2023-06-01","targets":152},{"name":"2023-07-01","targets":153},{"name":"2023-08-01","targets":154},{"name":"2023-09-01","targets":155},{"name":"2023-10-01","targets":156},{"name":"2023-11-01","targets":157},{"name":"2023-12-01","targets":158},{"name":"2024-01-01","targets":159},{"name":"2024-02-01","targets":160},{"name":"2024-03-01","targets":161},{"name":"2024-04-01","targets":162},{"name":"2024-05-01","targets":163},{"name":"2024-06-01","targets":164},{"name":"2024-07-01","targets":165},{"name":"2024-08-01","targets":166},{"name":"2024-09-01","targets":167},{"name":"2024-10-01","targets":168},{"name":"2024-11-01","targets":169},{"name":"2024-12-01","targets":170},{"name":"2025-01-01","targets":171},{"name":"2025-02-01","targets":172},{"name":"2025-03-01","targets":173},{"name":"2025-04-01","targets":174},{"name":"2025-04-01","targets":175}],"order":[],"autoWidth":false,"orderClasses":false,"lengthMenu":[10,20,25,50,100]}},"evals":[],"jsHooks":[]}</script>
<script type="application/htmlwidget-sizing" data-for="htmlwidget-4e76decdcbbf63c62edc">{"viewer":{"width":"100%","height":"auto","padding":15,"fill":true},"browser":{"width":"100%","height":"auto","padding":40,"fill":false}}</script>
</body>
</html>