Specification & Design Development — +91 93109 97953
dhawan@mkdhawan.com Mon–Sat · New Delhi, India
Get a Quote
LyogRHNlYWwgQUkgVGVjaG5pY2FsIEJyYWluIOKAlCBmbG9hdGluZyBhc3Npc3RhbnQ6IEFzayAoY2hhdCkgwrcgRmluZCBteSBqb2ludCAoc2VsZWN0b3IpIMK3IFNwZWMgd3JpdGVyLgogICBHYXRlZCBiZWhpbmQgYSBsZWFkIGZvcm07IGdyb3VuZGVkIG9uIHRoZSBEc2VhbCBwcm9kdWN0IEtCLiBTZWxmLWNvbnRhaW5lZCwgbm8gZGVwcy4gKi8KKGZ1bmN0aW9uKCl7CiAgaWYod2luZG93Ll9fZHNlYWxBSSkgcmV0dXJuOyB3aW5kb3cuX19kc2VhbEFJPTE7CiAgdmFyIFNJVEU9bG9jYXRpb24ub3JpZ2luOwogIHZhciBMRUFEPVNJVEUrJy93cC1qc29uL2RzZWFsL3YxL2xlYWQnOwogIHZhciBDSEFUPVNJVEUrJy93cC1qc29uL2RzZWFsL3YxL2FpL2NoYXQnOwogIHZhciBLQj1bXSwgc2lkPShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZHNlYWxfYWlfc2lkJyl8fCgncycrRGF0ZS5ub3coKStNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWU2KSkpOwogIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkc2VhbF9haV9zaWQnLHNpZCk7CiAgdmFyIGxlYWQ9bnVsbDsgdHJ5e2xlYWQ9SlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZHNlYWxfYWlfbGVhZCcpfHwnbnVsbCcpO31jYXRjaChlKXt9CiAgdmFyIFRSQU5LPXtub25lOjAscGVkZXN0cmlhbjoxLCdsaWdodC12ZWhpY2xlJzoyLCdtZWRpdW0tdmVoaWNsZSc6MywnaGVhdnktdmVoaWNsZSc6NH07CiAgdmFyIExPQ1M9W1snZmxvb3InLCdGbG9vciAvIGhvcml6b250YWwnXSxbJ3dhbGwnLCdXYWxsIC8gdmVydGljYWwnXSxbJ3Jvb2YnLCdSb29mJ10sWydzZWlzbWljJywnU2Vpc21pYyddLFsnY29ybmVyJywnQ29ybmVyJ10sWydiZWxvdy1ncmFkZScsJ0JlbG93LWdyYWRlIC8gd2F0ZXJwcm9vZiddXTsKICB2YXIgVFJBRj1bWydub25lJywnTm8gdHJhZmZpYyAoc2VhbCBvbmx5KSddLFsncGVkZXN0cmlhbicsJ1BlZGVzdHJpYW4nXSxbJ2xpZ2h0LXZlaGljbGUnLCdMaWdodCB2ZWhpY2xlIC8gcmFtcCddLFsnbWVkaXVtLXZlaGljbGUnLCdNZWRpdW0taGVhdnkgdmVoaWNsZSddLFsnaGVhdnktdmVoaWNsZScsJ0hlYXZ5IHZlaGljbGUnXV07CgogIC8vIC0tLS0tLS0tLS0gc3R5bGVzIC0tLS0tLS0tLS0KICB2YXIgY3NzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7IGNzcy50ZXh0Q29udGVudD1gCiAgI2RhaS1mYWJ7cG9zaXRpb246Zml4ZWQ7cmlnaHQ6MjBweDtib3R0b206MjBweDt6LWluZGV4Ojk5OTgwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjlweDtiYWNrZ3JvdW5kOiMxNTE4MWQ7Y29sb3I6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICMyYTJmMzc7cGFkZGluZzoxMXB4IDE3cHggMTFweCAxM3B4O2JvcmRlci1yYWRpdXM6NTBweDtjdXJzb3I6cG9pbnRlcjtmb250LWZhbWlseTpJbnRlcixBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtd2VpZ2h0OjYwMDtmb250LXNpemU6LjkycmVtO2JveC1zaGFkb3c6MCA4cHggMjZweCByZ2JhKDAsMCwwLC4zNSl9CiAgI2RhaS1mYWIgLmRvdHt3aWR0aDo5cHg7aGVpZ2h0OjlweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOiMzNmQzOTk7Ym94LXNoYWRvdzowIDAgMCAwIHJnYmEoNTQsMjExLDE1MywuNik7YW5pbWF0aW9uOmRhaXB1bHNlIDJzIGluZmluaXRlfQogIEBrZXlmcmFtZXMgZGFpcHVsc2V7MCV7Ym94LXNoYWRvdzowIDAgMCAwIHJnYmEoNTQsMjExLDE1MywuNSl9NzAle2JveC1zaGFkb3c6MCAwIDAgOHB4IHJnYmEoNTQsMjExLDE1MywwKX0xMDAle2JveC1zaGFkb3c6MCAwIDAgMCByZ2JhKDU0LDIxMSwxNTMsMCl9fQogICNkYWktZmFiIGJ7Y29sb3I6I2Q4YjY1YX0KICAjZGFpLXBhbmVse3Bvc2l0aW9uOmZpeGVkO3JpZ2h0OjIwcHg7Ym90dG9tOjIwcHg7ei1pbmRleDo5OTk4MTt3aWR0aDozOTBweDttYXgtd2lkdGg6Y2FsYygxMDB2dyAtIDI0cHgpO2hlaWdodDo2MDBweDttYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSAyNHB4KTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czoxNnB4O2JveC1zaGFkb3c6MCAyMHB4IDYwcHggcmdiYSgwLDAsMCwuNCk7ZGlzcGxheTpub25lO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtvdmVyZmxvdzpoaWRkZW47Zm9udC1mYW1pbHk6SW50ZXIsQXJpYWwsc2Fucy1zZXJpZn0KICAjZGFpLXBhbmVsLm9ue2Rpc3BsYXk6ZmxleH0KICAuZGFpLWhke2JhY2tncm91bmQ6IzE1MTgxZDtjb2xvcjojZmZmO3BhZGRpbmc6MTRweCAxNnB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHh9CiAgLmRhaS1oZCAudGl7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxcmVtO2xpbmUtaGVpZ2h0OjEuMTV9LmRhaS1oZCAudGkgc3BhbntkaXNwbGF5OmJsb2NrO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXNpemU6LjcycmVtO2NvbG9yOiM5YWEzYWZ9CiAgLmRhaS1oZCAueHttYXJnaW4tbGVmdDphdXRvO2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxLjVyZW07Y29sb3I6IzlhYTNhZjtsaW5lLWhlaWdodDoxfQogIC5kYWktYm90e3dpZHRoOjM0cHg7aGVpZ2h0OjM0cHg7Ym9yZGVyLXJhZGl1czo5cHg7YmFja2dyb3VuZDojZDhiNjVhO2NvbG9yOiMxNTE4MWQ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZvbnQtd2VpZ2h0OjgwMH0KICAuZGFpLXRhYnN7ZGlzcGxheTpmbGV4O2JhY2tncm91bmQ6I2YzZjRmNjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTVlN2VifQogIC5kYWktdGFie2ZsZXg6MTtwYWRkaW5nOjEwcHggNnB4O3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtc2l6ZTouNzhyZW07Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOiM2YjcyODA7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLWJvdHRvbToycHggc29saWQgdHJhbnNwYXJlbnR9CiAgLmRhaS10YWIub257Y29sb3I6IzE1MTgxZDtib3JkZXItYm90dG9tLWNvbG9yOiNkOGI2NWE7YmFja2dyb3VuZDojZmZmfQogIC5kYWktYm9keXtmbGV4OjE7b3ZlcmZsb3cteTphdXRvO3BhZGRpbmc6MTZweDtiYWNrZ3JvdW5kOiNmYWZhZmF9CiAgLmRhaS1mb290e2JvcmRlci10b3A6MXB4IHNvbGlkICNlNWU3ZWI7cGFkZGluZzoxMHB4O2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2JhY2tncm91bmQ6I2ZmZn0KICAuZGFpLWZvb3QgaW5wdXR7ZmxleDoxO2JvcmRlcjoxcHggc29saWQgI2QxZDVkYjtib3JkZXItcmFkaXVzOjlweDtwYWRkaW5nOjEwcHggMTJweDtmb250LXNpemU6LjlyZW07Zm9udC1mYW1pbHk6aW5oZXJpdDtvdXRsaW5lOm5vbmV9CiAgLmRhaS1mb290IGlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjojZDhiNjVhfQogIC5kYWktc2VuZHtiYWNrZ3JvdW5kOiMxNTE4MWQ7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjlweDtwYWRkaW5nOjAgMTVweDtjdXJzb3I6cG9pbnRlcjtmb250LXdlaWdodDo2MDB9CiAgLmRhaS1tc2d7bWFyZ2luOjAgMCAxMnB4O21heC13aWR0aDo4NSU7cGFkZGluZzoxMHB4IDEzcHg7Ym9yZGVyLXJhZGl1czoxM3B4O2ZvbnQtc2l6ZTouOXJlbTtsaW5lLWhlaWdodDoxLjU7d2hpdGUtc3BhY2U6cHJlLXdyYXB9CiAgLmRhaS1tc2cudXttYXJnaW4tbGVmdDphdXRvO2JhY2tncm91bmQ6IzE1MTgxZDtjb2xvcjojZmZmO2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweH0KICAuZGFpLW1zZy5he2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNlNWU3ZWI7Y29sb3I6IzFmMjQzMDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjRweH0KICAuZGFpLW1zZy5hIGF7Y29sb3I6IzlhN2IxZTtmb250LXdlaWdodDo2MDB9CiAgLmRhaS10eXBpbmd7Zm9udC1zaXplOi44cmVtO2NvbG9yOiM5YWEzYWY7bWFyZ2luOjAgMCAxMnB4fQogIC5kYWktbGJse2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOi43OHJlbTtmb250LXdlaWdodDo2MDA7Y29sb3I6IzM3NDE1MTttYXJnaW46MTJweCAwIDVweH0KICAuZGFpLWluLC5kYWktc2VsLC5kYWktdGF7d2lkdGg6MTAwJTtib3JkZXI6MXB4IHNvbGlkICNkMWQ1ZGI7Ym9yZGVyLXJhZGl1czo5cHg7cGFkZGluZzoxMHB4IDEycHg7Zm9udC1zaXplOi45cmVtO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Ym94LXNpemluZzpib3JkZXItYm94O291dGxpbmU6bm9uZTtiYWNrZ3JvdW5kOiNmZmZ9CiAgLmRhaS1pbjpmb2N1cywuZGFpLXNlbDpmb2N1cywuZGFpLXRhOmZvY3Vze2JvcmRlci1jb2xvcjojZDhiNjVhfQogIC5kYWktdGF7bWluLWhlaWdodDoxNTBweDtyZXNpemU6dmVydGljYWw7bGluZS1oZWlnaHQ6MS41fQogIC5kYWktYnRue2JhY2tncm91bmQ6I2Q4YjY1YTtjb2xvcjojMTUxODFkO2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6OXB4O3BhZGRpbmc6MTFweCAxNnB4O2ZvbnQtd2VpZ2h0OjcwMDtjdXJzb3I6cG9pbnRlcjt3aWR0aDoxMDAlO21hcmdpbi10b3A6MTRweDtmb250LXNpemU6LjkycmVtfQogIC5kYWktYnRuLmFsdHtiYWNrZ3JvdW5kOiMxNTE4MWQ7Y29sb3I6I2ZmZn0KICAuZGFpLW5vdGV7Zm9udC1zaXplOi43OHJlbTtjb2xvcjojNmI3MjgwO2xpbmUtaGVpZ2h0OjEuNTttYXJnaW46NnB4IDAgMH0KICAuZGFpLWNhcmR7Ym9yZGVyOjFweCBzb2xpZCAjZTVlN2ViO2JvcmRlci1yYWRpdXM6MTJweDtiYWNrZ3JvdW5kOiNmZmY7cGFkZGluZzoxM3B4IDE0cHg7bWFyZ2luOjAgMCAxMXB4fQogIC5kYWktY2FyZCBoNHttYXJnaW46MCAwIDNweDtmb250LXNpemU6Ljk4cmVtO2NvbG9yOiMxNTE4MWR9CiAgLmRhaS1jYXJkIC5jYXR7Zm9udC1zaXplOi43MnJlbTtjb2xvcjojOWE3YjFlO2ZvbnQtd2VpZ2h0OjYwMDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6LjA0ZW19CiAgLmRhaS1jYXJkIC53aHl7Zm9udC1zaXplOi44MnJlbTtjb2xvcjojNGI1NTYzO21hcmdpbjo3cHggMDtsaW5lLWhlaWdodDoxLjQ1fQogIC5kYWktY2FyZCAubG5re2Rpc3BsYXk6aW5saW5lLWZsZXg7Z2FwOjE0cHg7Zm9udC1zaXplOi44MnJlbTtmb250LXdlaWdodDo2MDB9CiAgLmRhaS1jYXJkIC5sbmsgYXtjb2xvcjojMTUxODFkO3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkOGI2NWF9CiAgLmRhaS1nYXRlIHAuaW50cm97Zm9udC1zaXplOi45cmVtO2NvbG9yOiMzNzQxNTE7bGluZS1oZWlnaHQ6MS41O21hcmdpbjowIDAgNnB4fQogIC5kYWktZXJye2NvbG9yOiNiOTFjMWM7Zm9udC1zaXplOi44MnJlbTttYXJnaW46OHB4IDAgMH0KICBAbWVkaWEobWF4LXdpZHRoOjQ4MHB4KXsjZGFpLXBhbmVse3JpZ2h0OjA7Ym90dG9tOjA7d2lkdGg6MTAwdnc7aGVpZ2h0OjEwMHZoO21heC1oZWlnaHQ6MTAwdmg7Ym9yZGVyLXJhZGl1czowfSNkYWktZmFie3JpZ2h0OjE0cHg7Ym90dG9tOjE0cHh9fQogIGA7IGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoY3NzKTsKCiAgLy8gLS0tLS0tLS0tLSBET00gLS0tLS0tLS0tLQogIHZhciBmYWI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IGZhYi5pZD0nZGFpLWZhYic7CiAgZmFiLmlubmVySFRNTD0nPHNwYW4gY2xhc3M9ImRvdCI+PC9zcGFuPjxzcGFuPkFzayA8Yj5Ec2VhbCZuYnNwO0FJPC9iPjwvc3Bhbj4nOwogIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZmFiKTsKICB2YXIgcGFuZWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IHBhbmVsLmlkPSdkYWktcGFuZWwnOwogIHBhbmVsLmlubmVySFRNTD0KICAgJzxkaXYgY2xhc3M9ImRhaS1oZCI+PGRpdiBjbGFzcz0iZGFpLWJvdCI+RDwvZGl2PjxkaXYgY2xhc3M9InRpIj5Ec2VhbCBUZWNobmljYWwgQXNzaXN0YW50PHNwYW4+RXhwYW5zaW9uIGpvaW50cyDCtyBwb3dlcmVkIGJ5IENsYXVkZTwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJ4Ij4mdGltZXM7PC9kaXY+PC9kaXY+JysKICAgJzxkaXYgY2xhc3M9ImRhaS10YWJzIj48ZGl2IGNsYXNzPSJkYWktdGFiIG9uIiBkYXRhLXQ9ImFzayI+QXNrPC9kaXY+PGRpdiBjbGFzcz0iZGFpLXRhYiIgZGF0YS10PSJmaW5kIj5GaW5kIG15IGpvaW50PC9kaXY+PGRpdiBjbGFzcz0iZGFpLXRhYiIgZGF0YS10PSJzcGVjIj5TcGVjIHdyaXRlcjwvZGl2PjwvZGl2PicrCiAgICc8ZGl2IGNsYXNzPSJkYWktYm9keSIgaWQ9ImRhaS1ib2R5Ij48L2Rpdj4nKwogICAnPGRpdiBjbGFzcz0iZGFpLWZvb3QiIGlkPSJkYWktZm9vdCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PGlucHV0IGlkPSJkYWktcSIgcGxhY2Vob2xkZXI9IkFzayBhYm91dCBnYXBzLCBtb3ZlbWVudCwgbWF0ZXJpYWxzLi4uIiBhdXRvY29tcGxldGU9Im9mZiI+PGJ1dHRvbiBjbGFzcz0iZGFpLXNlbmQiIGlkPSJkYWktZ28iPlNlbmQ8L2J1dHRvbj48L2Rpdj4nOwogIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGFuZWwpOwogIHZhciBib2R5PXBhbmVsLnF1ZXJ5U2VsZWN0b3IoJyNkYWktYm9keScpLCBmb290PXBhbmVsLnF1ZXJ5U2VsZWN0b3IoJyNkYWktZm9vdCcpOwogIHZhciB0YWI9J2Fzayc7CgogIGZhYi5vbmNsaWNrPWZ1bmN0aW9uKCl7cGFuZWwuY2xhc3NMaXN0LmFkZCgnb24nKTtmYWIuc3R5bGUuZGlzcGxheT0nbm9uZSc7cmVuZGVyKCk7fTsKICBwYW5lbC5xdWVyeVNlbGVjdG9yKCcueCcpLm9uY2xpY2s9ZnVuY3Rpb24oKXtwYW5lbC5jbGFzc0xpc3QucmVtb3ZlKCdvbicpO2ZhYi5zdHlsZS5kaXNwbGF5PSdmbGV4Jzt9OwogIHBhbmVsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5kYWktdGFiJykuZm9yRWFjaChmdW5jdGlvbih0KXt0Lm9uY2xpY2s9ZnVuY3Rpb24oKXt0YWI9dC5kYXRhc2V0LnQ7cGFuZWwucXVlcnlTZWxlY3RvckFsbCgnLmRhaS10YWInKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guY2xhc3NMaXN0LnRvZ2dsZSgnb24nLHg9PT10KTt9KTtyZW5kZXIoKTt9O30pOwoKICBmdW5jdGlvbiBlc2Mocyl7cmV0dXJuIFN0cmluZyhzPT1udWxsPycnOnMpLnJlcGxhY2UoL1smPD4iXS9nLGZ1bmN0aW9uKGMpe3JldHVybnsnJic6JyZhbXA7JywnPCc6JyZsdDsnLCc+JzonJmd0OycsJyInOicmcXVvdDsnfVtjXTt9KTt9CiAgZnVuY3Rpb24gcHJvZChzbHVnKXtyZXR1cm4gS0IuZmluZChmdW5jdGlvbihwKXtyZXR1cm4gcC5zbHVnPT09c2x1Zzt9KTt9CiAgZnVuY3Rpb24gc2F2ZUxlYWQodHlwZSxleHRyYSl7IGlmKCFsZWFkKXJldHVybjsgdmFyIHBheWxvYWQ9e25hbWU6bGVhZC5uYW1lLGVtYWlsOmxlYWQuZW1haWwsY29tcGFueTpsZWFkLmNvbXBhbnkscGhvbmU6bGVhZC5waG9uZXx8Jycsc291cmNlOidhaS0nK3R5cGUsbWVzc2FnZTpleHRyYXx8Jyd9OwogICAgZmV0Y2goTEVBRCx7bWV0aG9kOidQT1NUJyxoZWFkZXJzOnsnQ29udGVudC1UeXBlJzonYXBwbGljYXRpb24vanNvbid9LGJvZHk6SlNPTi5zdHJpbmdpZnkocGF5bG9hZCl9KS5jYXRjaChmdW5jdGlvbigpe30pOyB9CgogIC8vIC0tLS0tLS0tLS0gcmVuZGVyIGRpc3BhdGNoZXIgLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHJlbmRlcigpewogICAgZm9vdC5zdHlsZS5kaXNwbGF5PSdub25lJzsKICAgIGlmKCFsZWFkKXsgcmVuZGVyR2F0ZSgpOyByZXR1cm47IH0KICAgIGlmKHRhYj09PSdhc2snKSByZW5kZXJBc2soKTsKICAgIGVsc2UgaWYodGFiPT09J2ZpbmQnKSByZW5kZXJGaW5kKCk7CiAgICBlbHNlIHJlbmRlclNwZWMoKTsKICB9CgogIC8vIC0tLS0tLS0tLS0gbGVhZCBnYXRlIC0tLS0tLS0tLS0KICBmdW5jdGlvbiByZW5kZXJHYXRlKCl7CiAgICBib2R5LmlubmVySFRNTD0nPGRpdiBjbGFzcz0iZGFpLWdhdGUiPjxwIGNsYXNzPSJpbnRybyI+R2V0IGluc3RhbnQsIG5vLW9ibGlnYXRpb24gdGVjaG5pY2FsIGhlbHAgc2VsZWN0aW5nIHRoZSByaWdodCBEc2VhbCBleHBhbnNpb24gam9pbnQuIFRlbGwgdXMgd2hvIHlvdSBhcmUgYW5kIHdl4oCZbGwgdGFpbG9yIHRoZSBhbnN3ZXJzIOKAlCBhbmQgc2VuZCBkcmF3aW5ncy9URFMgb24gcmVxdWVzdC48L3A+JysKICAgICAnPGxhYmVsIGNsYXNzPSJkYWktbGJsIj5OYW1lICo8L2xhYmVsPjxpbnB1dCBjbGFzcz0iZGFpLWluIiBpZD0iZy1uYW1lIj4nKwogICAgICc8bGFiZWwgY2xhc3M9ImRhaS1sYmwiPldvcmsgZW1haWwgKjwvbGFiZWw+PGlucHV0IGNsYXNzPSJkYWktaW4iIGlkPSJnLWVtYWlsIiB0eXBlPSJlbWFpbCI+JysKICAgICAnPGxhYmVsIGNsYXNzPSJkYWktbGJsIj5Db21wYW55ICo8L2xhYmVsPjxpbnB1dCBjbGFzcz0iZGFpLWluIiBpZD0iZy1jbyI+JysKICAgICAnPGxhYmVsIGNsYXNzPSJkYWktbGJsIj5QaG9uZSAob3B0aW9uYWwpPC9sYWJlbD48aW5wdXQgY2xhc3M9ImRhaS1pbiIgaWQ9ImctcGgiPicrCiAgICAgJzxidXR0b24gY2xhc3M9ImRhaS1idG4iIGlkPSJnLWdvIj5TdGFydCDihpI8L2J1dHRvbj48cCBjbGFzcz0iZGFpLW5vdGUiPldlIHVzZSB0aGlzIG9ubHkgdG8gYXNzaXN0IHlvdSBhbmQgZm9sbG93IHVwIG9uIHlvdXIgZW5xdWlyeS4gTm8gc3BhbS48L3A+PGRpdiBjbGFzcz0iZGFpLWVyciIgaWQ9ImctZXJyIj48L2Rpdj48L2Rpdj4nOwogICAgYm9keS5xdWVyeVNlbGVjdG9yKCcjZy1nbycpLm9uY2xpY2s9ZnVuY3Rpb24oKXsKICAgICAgdmFyIG49Ym9keS5xdWVyeVNlbGVjdG9yKCcjZy1uYW1lJykudmFsdWUudHJpbSgpLGU9Ym9keS5xdWVyeVNlbGVjdG9yKCcjZy1lbWFpbCcpLnZhbHVlLnRyaW0oKSxjPWJvZHkucXVlcnlTZWxlY3RvcignI2ctY28nKS52YWx1ZS50cmltKCkscD1ib2R5LnF1ZXJ5U2VsZWN0b3IoJyNnLXBoJykudmFsdWUudHJpbSgpOwogICAgICB2YXIgZXJyPWJvZHkucXVlcnlTZWxlY3RvcignI2ctZXJyJyk7CiAgICAgIGlmKCFufHwhYyl7ZXJyLnRleHRDb250ZW50PSdQbGVhc2UgZW50ZXIgeW91ciBuYW1lIGFuZCBjb21wYW55Lic7cmV0dXJuO30KICAgICAgaWYoIS9eW15AXHNdK0BbXkBcc10rXC5bXkBcc10rJC8udGVzdChlKSl7ZXJyLnRleHRDb250ZW50PSdQbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbC4nO3JldHVybjt9CiAgICAgIGxlYWQ9e25hbWU6bixlbWFpbDplLGNvbXBhbnk6YyxwaG9uZTpwfTsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2RzZWFsX2FpX2xlYWQnLEpTT04uc3RyaW5naWZ5KGxlYWQpKTsKICAgICAgc2F2ZUxlYWQoJ2Fzc2lzdGFudC1zdGFydCcsJ1N0YXJ0ZWQgQUkgYXNzaXN0YW50IHNlc3Npb24nKTsgcmVuZGVyKCk7CiAgICB9OwogIH0KCiAgLy8gLS0tLS0tLS0tLSBUQUI6IEFzayAoY2hhdCkgLS0tLS0tLS0tLQogIHZhciBoaXN0b3J5PVtdOyAvLyB7cm9sZSxjb250ZW50fQogIGZ1bmN0aW9uIHJlbmRlckFzaygpewogICAgZm9vdC5zdHlsZS5kaXNwbGF5PSdmbGV4JzsKICAgIGJvZHkuaW5uZXJIVE1MPScnOwogICAgaWYoIWhpc3RvcnkubGVuZ3RoKXsgYWRkTXNnKCdhJywnSGkgJytlc2MobGVhZC5uYW1lLnNwbGl0KCcgJylbMF0pKycg4oCUIEnigJltIHRoZSBEc2VhbCB0ZWNobmljYWwgYXNzaXN0YW50LiBBc2sgbWUgYWJvdXQgam9pbnQgZ2FwcywgbW92ZW1lbnQgY2FwYWNpdHksIG1hdGVyaWFscywgdHJhZmZpYyByYXRpbmdzLCBvciB3aGljaCBwcm9kdWN0IGZpdHMgeW91ciBwcm9qZWN0LiBJIGFuc3dlciBvbmx5IGZyb20gRHNlYWzigJlzIHByb2R1Y3QgcmFuZ2UuJyk7IH0KICAgIGVsc2UgaGlzdG9yeS5mb3JFYWNoKGZ1bmN0aW9uKG0pe2FkZE1zZyhtLnJvbGU9PT0ndXNlcic/J3UnOidhJyxtLmNvbnRlbnQsdHJ1ZSk7fSk7CiAgICBib2R5LnNjcm9sbFRvcD1ib2R5LnNjcm9sbEhlaWdodDsKICAgIHBhbmVsLnF1ZXJ5U2VsZWN0b3IoJyNkYWktZ28nKS5vbmNsaWNrPXNlbmRDaGF0OwogICAgdmFyIHE9cGFuZWwucXVlcnlTZWxlY3RvcignI2RhaS1xJyk7IHEub25rZXlkb3duPWZ1bmN0aW9uKGUpe2lmKGUua2V5PT09J0VudGVyJylzZW5kQ2hhdCgpO307CiAgICBxLmZvY3VzKCk7CiAgfQogIGZ1bmN0aW9uIGFkZE1zZyhyb2xlLHR4dCxyYXcpeyB2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgZC5jbGFzc05hbWU9J2RhaS1tc2cgJytyb2xlOwogICAgZC5pbm5lckhUTUw9cm9sZT09PSdhJz9yZW5kZXJBc3Npc3RhbnQodHh0KTplc2ModHh0KTsgYm9keS5hcHBlbmRDaGlsZChkKTsgYm9keS5zY3JvbGxUb3A9Ym9keS5zY3JvbGxIZWlnaHQ7IHJldHVybiBkOyB9CiAgZnVuY3Rpb24gbGlua05hbWVzKHMpewogICAgS0Iuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIubmFtZS5sZW5ndGgtYS5uYW1lLmxlbmd0aDt9KS5mb3JFYWNoKGZ1bmN0aW9uKHApewogICAgICB2YXIgcmU9bmV3IFJlZ0V4cCgnKF58W15cXHcvLV0pKCcrcC5uYW1lLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCdcXCQmJykrJykoPyFbXFx3Ly1dKScsJ2cnKTsKICAgICAgcz1zLnJlcGxhY2UocmUsZnVuY3Rpb24obSxwcmUsbm0pe3JldHVybiBwcmUrJzxhIGhyZWY9IicrcC51cmwrJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPicrbm0rJzwvYT4nO30pOwogICAgfSk7CiAgICByZXR1cm4gczsKICB9CiAgZnVuY3Rpb24gcmVuZGVyQXNzaXN0YW50KHR4dCl7CiAgICB2YXIgaD1lc2ModHh0KTsKICAgIGg9aC5yZXBsYWNlKC9cWyhbXlxdXSspXF1cKChodHRwcz86W14pXHNdKylcKS9nLCc8YSBocmVmPSIkMiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPiQxPC9hPicpOyAvLyBtZCBsaW5rcwogICAgaD1oLnJlcGxhY2UoL15ccyojezEsNn1ccyooLispJC9nbSwnPHN0cm9uZz4kMTwvc3Ryb25nPicpOyAvLyBoZWFkZXJzCiAgICBoPWgucmVwbGFjZSgvXCpcKihbXipdKylcKlwqL2csJzxzdHJvbmc+JDE8L3N0cm9uZz4nKTsgLy8gYm9sZAogICAgaD1oLnJlcGxhY2UoL15ccypbLSpdXHMrL2dtLCfigKIgJyk7IC8vIGJ1bGxldHMKICAgIHZhciBwYXJ0cz1oLnNwbGl0KC8oPGFbXj5dKj5bXHNcU10qPzxcL2E+KS9nKTsgLy8gbGlua2lmeSBwcm9kdWN0IG5hbWVzIG91dHNpZGUgZXhpc3RpbmcgYW5jaG9ycwogICAgZm9yKHZhciBpPTA7aTxwYXJ0cy5sZW5ndGg7aSsrKXsgaWYocGFydHNbaV0uc2xpY2UoMCwyKSE9PSc8YScpIHBhcnRzW2ldPWxpbmtOYW1lcyhwYXJ0c1tpXSk7IH0KICAgIHJldHVybiBwYXJ0cy5qb2luKCcnKTsKICB9CiAgZnVuY3Rpb24gc2VuZENoYXQoKXsKICAgIHZhciBxPXBhbmVsLnF1ZXJ5U2VsZWN0b3IoJyNkYWktcScpOyB2YXIgdGV4dD1xLnZhbHVlLnRyaW0oKTsgaWYoIXRleHQpcmV0dXJuOyBxLnZhbHVlPScnOwogICAgYWRkTXNnKCd1Jyx0ZXh0KTsgaGlzdG9yeS5wdXNoKHtyb2xlOid1c2VyJyxjb250ZW50OnRleHR9KTsKICAgIHZhciB0eXBpbmc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IHR5cGluZy5jbGFzc05hbWU9J2RhaS10eXBpbmcnOyB0eXBpbmcudGV4dENvbnRlbnQ9J0RzZWFsIEFJIGlzIHRoaW5raW5n4oCmJzsgYm9keS5hcHBlbmRDaGlsZCh0eXBpbmcpOyBib2R5LnNjcm9sbFRvcD1ib2R5LnNjcm9sbEhlaWdodDsKICAgIGZldGNoKENIQVQse21ldGhvZDonUE9TVCcsaGVhZGVyczp7J0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9uL2pzb24nfSxib2R5OkpTT04uc3RyaW5naWZ5KHtuYW1lOmxlYWQubmFtZSxlbWFpbDpsZWFkLmVtYWlsLGNvbXBhbnk6bGVhZC5jb21wYW55LHNpZDpzaWQsbWVzc2FnZXM6aGlzdG9yeS5zbGljZSgtMTApfSl9KQogICAgIC50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiByLmpzb24oKS50aGVuKGZ1bmN0aW9uKGope3JldHVybntvazpyLm9rLHN0YXR1czpyLnN0YXR1cyxqOmp9O30pO30pCiAgICAgLnRoZW4oZnVuY3Rpb24ocmVzKXsgdHlwaW5nLnJlbW92ZSgpOwogICAgICAgaWYocmVzLm9rJiZyZXMuaiYmcmVzLmoucmVwbHkpeyBoaXN0b3J5LnB1c2goe3JvbGU6J2Fzc2lzdGFudCcsY29udGVudDpyZXMuai5yZXBseX0pOyBhZGRNc2coJ2EnLHJlcy5qLnJlcGx5KTsgfQogICAgICAgZWxzZSBpZihyZXMuc3RhdHVzPT09NDI5KXsgYWRkTXNnKCdhJywnWW914oCZdmUgcmVhY2hlZCB0aGUgbWVzc2FnZSBsaW1pdCBmb3IgdGhpcyBzZXNzaW9uLiBQbGVhc2UgY29udGludWUgb24gV2hhdHNBcHAgKCs5MSA5MzEwOSA5Nzk1Mykgb3IgZW1haWwgYW5kIG91ciBlbmdpbmVlcnMgd2lsbCBoZWxwIGRpcmVjdGx5LicpOyB9CiAgICAgICBlbHNlIHsgYWRkTXNnKCdhJywnTGl2ZSBjaGF0IGlzIGJlaW5nIGFjdGl2YXRlZC4gSW4gdGhlIG1lYW50aW1lLCB0cnkgdGhlIOKAnEZpbmQgbXkgam9pbnTigJ0gc2VsZWN0b3Igb3Ig4oCcU3BlYyB3cml0ZXLigJ0gdGFicyBhYm92ZSwgb3IgcmVhY2ggdXMgb24gV2hhdHNBcHAgKCs5MSA5MzEwOSA5Nzk1MykuJyk7IH0KICAgICB9KS5jYXRjaChmdW5jdGlvbigpeyB0eXBpbmcucmVtb3ZlKCk7IGFkZE1zZygnYScsJ0Nvbm5lY3Rpb24gaXNzdWUuIFBsZWFzZSB0cnkgYWdhaW4sIG9yIHJlYWNoIHVzIG9uIFdoYXRzQXBwICgrOTEgOTMxMDkgOTc5NTMpLicpOyB9KTsKICB9CgogIC8vIC0tLS0tLS0tLS0gVEFCOiBGaW5kIG15IGpvaW50IChzZWxlY3RvciwgY2xpZW50LXNpZGUpIC0tLS0tLS0tLS0KICBmdW5jdGlvbiByZW5kZXJGaW5kKCl7CiAgICBib2R5LmlubmVySFRNTD0nPGxhYmVsIGNsYXNzPSJkYWktbGJsIj5XaGVyZSBpcyB0aGUgam9pbnQ/PC9sYWJlbD48c2VsZWN0IGNsYXNzPSJkYWktc2VsIiBpZD0iZi1sb2MiPicrTE9DUy5tYXAoZnVuY3Rpb24obCl7cmV0dXJuICc8b3B0aW9uIHZhbHVlPSInK2xbMF0rJyI+JytsWzFdKyc8L29wdGlvbj4nO30pLmpvaW4oJycpKyc8L3NlbGVjdD4nKwogICAgICc8bGFiZWwgY2xhc3M9ImRhaS1sYmwiPlRyYWZmaWMgLyBsb2FkPC9sYWJlbD48c2VsZWN0IGNsYXNzPSJkYWktc2VsIiBpZD0iZi10cmFmIj4nK1RSQUYubWFwKGZ1bmN0aW9uKHQpe3JldHVybiAnPG9wdGlvbiB2YWx1ZT0iJyt0WzBdKyciPicrdFsxXSsnPC9vcHRpb24+Jzt9KS5qb2luKCcnKSsnPC9zZWxlY3Q+JysKICAgICAnPGxhYmVsIGNsYXNzPSJkYWktbGJsIj5Kb2ludCBnYXAgd2lkdGggKG1tLCBvcHRpb25hbCk8L2xhYmVsPjxpbnB1dCBjbGFzcz0iZGFpLWluIiBpZD0iZi1nYXAiIHR5cGU9Im51bWJlciIgcGxhY2Vob2xkZXI9ImUuZy4gNTAiPicrCiAgICAgJzxidXR0b24gY2xhc3M9ImRhaS1idG4iIGlkPSJmLWdvIj5SZWNvbW1lbmQgcHJvZHVjdHMg4oaSPC9idXR0b24+PGRpdiBpZD0iZi1yZXMiIHN0eWxlPSJtYXJnaW4tdG9wOjE2cHgiPjwvZGl2Pic7CiAgICBib2R5LnF1ZXJ5U2VsZWN0b3IoJyNmLWdvJykub25jbGljaz1mdW5jdGlvbigpewogICAgICB2YXIgbG9jPWJvZHkucXVlcnlTZWxlY3RvcignI2YtbG9jJykudmFsdWUsIHRyYWY9Ym9keS5xdWVyeVNlbGVjdG9yKCcjZi10cmFmJykudmFsdWUsIGdhcD1wYXJzZUZsb2F0KGJvZHkucXVlcnlTZWxlY3RvcignI2YtZ2FwJykudmFsdWUpOwogICAgICB2YXIgbmVlZD1UUkFOS1t0cmFmXTsgdmFyIGhhc0dhcD0haXNOYU4oZ2FwKTsKICAgICAgdmFyIHNjb3JlZD1LQi5tYXAoZnVuY3Rpb24ocCl7CiAgICAgICAgdmFyIHM9MCx3aHk9W107CiAgICAgICAgaWYocC5sb2NhdGlvbi5pbmRleE9mKGxvYyk8MCkgcmV0dXJuIG51bGw7IHMrPTM7IHdoeS5wdXNoKGxvYysnIGpvaW50Jyk7CiAgICAgICAgdmFyIHB0PVRSQU5LW3AudHJhZmZpY107CiAgICAgICAgaWYodHJhZj09PSdub25lJyl7IGlmKHAudHJhZmZpYz09PSdub25lJyl7cys9Mjt3aHkucHVzaCgnc2VhbGluZyBzeXN0ZW0nKTt9IGVsc2Ugcys9MDsgfQogICAgICAgIGVsc2UgeyBpZihwdD49bmVlZCl7cys9Mjsgd2h5LnB1c2goJ3JhdGVkIGZvciAnK3RyYWYucmVwbGFjZSgnLScsJyAnKSsnIHRyYWZmaWMnKTt9IGVsc2UgcmV0dXJuIG51bGw7IH0KICAgICAgICBpZihoYXNHYXApeyB2YXIgbG89cC5nYXBNaW4sIGhpPXAuZ2FwTWF4OwogICAgICAgICAgaWYobG89PW51bGwmJmhpPT1udWxsKXsgcys9MDsgfQogICAgICAgICAgZWxzZSBpZigobG89PW51bGx8fGdhcD49bG8tNSkmJihoaT09bnVsbHx8Z2FwPD1oaSs1KSl7IHMrPTM7IHdoeS5wdXNoKCdoYW5kbGVzICcrZ2FwKycgbW0gZ2FwJyk7IH0KICAgICAgICAgIGVsc2UgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIHJldHVybiB7cDpwLHM6cyx3aHk6d2h5fTsKICAgICAgfSkuZmlsdGVyKEJvb2xlYW4pLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi5zLWEuczt9KS5zbGljZSgwLDUpOwogICAgICB2YXIgcmVzPWJvZHkucXVlcnlTZWxlY3RvcignI2YtcmVzJyk7CiAgICAgIGlmKCFzY29yZWQubGVuZ3RoKXsgcmVzLmlubmVySFRNTD0nPHAgY2xhc3M9ImRhaS1ub3RlIj5ObyBleGFjdCBtYXRjaCBmb3IgdGhvc2UgY3JpdGVyaWEuIE91ciBlbmdpbmVlcnMgY2FuIHNwZWNpZnkgYSBjdXN0b20gc29sdXRpb24g4oCUIGFzayBvbiB0aGUgPGI+QXNrPC9iPiB0YWIgb3IgV2hhdHNBcHAgKzkxIDkzMTA5IDk3OTUzLjwvcD4nOyBzYXZlTGVhZCgnc2VsZWN0b3InLCdsb2M9Jytsb2MrJyB0cmFmZmljPScrdHJhZisnIGdhcD0nKyhoYXNHYXA/Z2FwOictJykrJyB8IG5vIG1hdGNoJyk7IHJldHVybjsgfQogICAgICByZXMuaW5uZXJIVE1MPXNjb3JlZC5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuICc8ZGl2IGNsYXNzPSJkYWktY2FyZCI+PGRpdiBjbGFzcz0iY2F0Ij4nK2VzYyh4LnAuY2F0ZWdvcnkpKyc8L2Rpdj48aDQ+RHNlYWwgJytlc2MoeC5wLm5hbWUpKyc8L2g0PjxwIGNsYXNzPSJ3aHkiPicrZXNjKHgucC5zdW1tYXJ5KSsnPC9wPjxwIGNsYXNzPSJ3aHkiIHN0eWxlPSJjb2xvcjojMTU4MDNkIj7inJMgJyt4LndoeS5tYXAoZXNjKS5qb2luKCcgwrcgJykrJzwvcD48ZGl2IGNsYXNzPSJsbmsiPjxhIGhyZWY9IicreC5wLnVybCsnIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+VmlldyBwcm9kdWN0PC9hPjxhIGhyZWY9IicreC5wLnRkcysnIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+RG93bmxvYWQgVERTPC9hPjwvZGl2PjwvZGl2Pic7fSkuam9pbignJyk7CiAgICAgIHNhdmVMZWFkKCdzZWxlY3RvcicsJ2xvYz0nK2xvYysnIHRyYWZmaWM9Jyt0cmFmKycgZ2FwPScrKGhhc0dhcD9nYXA6Jy0nKSsnIHwgdG9wOiAnK3Njb3JlZC5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgucC5uYW1lO30pLmpvaW4oJywgJykpOwogICAgfTsKICB9CgogIC8vIC0tLS0tLS0tLS0gVEFCOiBTcGVjIHdyaXRlciAoZGV0ZXJtaW5pc3RpYywgZnJvbSBLQikgLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHJlbmRlclNwZWMoKXsKICAgIGJvZHkuaW5uZXJIVE1MPSc8bGFiZWwgY2xhc3M9ImRhaS1sYmwiPlNlbGVjdCBhIHByb2R1Y3Q8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImRhaS1zZWwiIGlkPSJzLXByb2QiPjxvcHRpb24gdmFsdWU9IiI+4oCUIGNob29zZSDigJQ8L29wdGlvbj4nKwogICAgIEtCLnNsaWNlKCkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpO30pLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gJzxvcHRpb24gdmFsdWU9IicrcC5zbHVnKyciPicrZXNjKHAubmFtZSkrJzwvb3B0aW9uPic7fSkuam9pbignJykrJzwvc2VsZWN0PicrCiAgICAgJzxidXR0b24gY2xhc3M9ImRhaS1idG4iIGlkPSJzLWdvIj5HZW5lcmF0ZSBzcGVjaWZpY2F0aW9uIOKGkjwvYnV0dG9uPicrCiAgICAgJzxkaXYgaWQ9InMtb3V0IiBzdHlsZT0ibWFyZ2luLXRvcDoxNHB4Ij48L2Rpdj4nOwogICAgYm9keS5xdWVyeVNlbGVjdG9yKCcjcy1nbycpLm9uY2xpY2s9ZnVuY3Rpb24oKXsKICAgICAgdmFyIHNsdWc9Ym9keS5xdWVyeVNlbGVjdG9yKCcjcy1wcm9kJykudmFsdWU7IGlmKCFzbHVnKXtyZXR1cm47fSB2YXIgcD1wcm9kKHNsdWcpOwogICAgICB2YXIgc3BlY3M9KHAuc3BlY3N8fFtdKS5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIHJbMF0rJzogJytyWzFdO30pLmpvaW4oJzsgJyk7CiAgICAgIHZhciB0eHQ9J1NFQ1RJT04g4oCUIEVYUEFOU0lPTiBKT0lOVDogRHNlYWwgJytwLm5hbWUrJ1xuXG4nKwogICAgICAgJzEuIFBST0RVQ1Q6IFN1cHBseSBhbmQgaW5zdGFsbCB0aGUgRHNlYWwgJytwLm5hbWUrJyAnK3AuY2F0ZWdvcnkucmVwbGFjZSgvwrcvZywnLScpKycgZXhwYW5zaW9uIGpvaW50IHN5c3RlbSwgbWFudWZhY3R1cmVkIGJ5IERoYXdhbiBBc3NvY2lhdGVzIChEc2VhbCksIEluZGlhLlxuXG4nKwogICAgICAgJzIuIERFU0NSSVBUSU9OOiAnK3Auc3VtbWFyeSsnXG5cbicrCiAgICAgICAnMy4gVEVDSE5JQ0FMIFJFUVVJUkVNRU5UUzogJysoc3BlY3N8fCdBcyBwZXIgbWFudWZhY3R1cmVy4oCZcyB0ZWNobmljYWwgZGF0YSBzaGVldCcpKycuXG5cbicrCiAgICAgICAnNC4gUVVBTElUWTogVGhlIG1hbnVmYWN0dXJlciBzaGFsbCBiZSBjZXJ0aWZpZWQgdG8gSVNPIDkwMDE6MjAxNSwgSVNPIDE0MDAxOjIwMTUgYW5kIElTTyA0NTAwMToyMDE4LiBNYXRlcmlhbHMgYW5kIHByb2ZpbGVzIHNoYWxsIGNvbmZvcm0gdG8gdGhlIG1hbnVmYWN0dXJlcuKAmXMgcHVibGlzaGVkIHNwZWNpZmljYXRpb25zLlxuXG4nKwogICAgICAgJzUuIFNVQk1JVFRBTFM6IFN1Ym1pdCBtYW51ZmFjdHVyZXLigJlzIHRlY2huaWNhbCBkYXRhIHNoZWV0LCBzaG9wIGRyYXdpbmdzIGFuZCBpbnN0YWxsYXRpb24gbWV0aG9kIHN0YXRlbWVudCBmb3IgYXBwcm92YWwgcHJpb3IgdG8gb3JkZXJpbmcuXG5cbicrCiAgICAgICAnNi4gSU5TVEFMTEFUSU9OOiBJbnN0YWxsIHN0cmljdGx5IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbWFudWZhY3R1cmVy4oCZcyBwcmludGVkIGluc3RydWN0aW9ucyBhbmQgYXBwcm92ZWQgc2hvcCBkcmF3aW5ncy5cblxuJysKICAgICAgICdSZWZlcmVuY2UgLyBkYXRhc2hlZXQ6ICcrcC51cmw7CiAgICAgIHZhciBvdXQ9Ym9keS5xdWVyeVNlbGVjdG9yKCcjcy1vdXQnKTsKICAgICAgb3V0LmlubmVySFRNTD0nPHRleHRhcmVhIGNsYXNzPSJkYWktdGEiIGlkPSJzLXRhIj48L3RleHRhcmVhPjxidXR0b24gY2xhc3M9ImRhaS1idG4iIGlkPSJzLWNvcHkiPkNvcHkgdG8gY2xpcGJvYXJkPC9idXR0b24+PGEgY2xhc3M9ImRhaS1idG4gYWx0IiBzdHlsZT0iZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOmNlbnRlcjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3gtc2l6aW5nOmJvcmRlci1ib3giIGhyZWY9IicrcC50ZHMrJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPkRvd25sb2FkIFREUyAoUERGKTwvYT48cCBjbGFzcz0iZGFpLW5vdGUiPkVkaXRhYmxlIGRyYWZ0IGdlbmVyYXRlZCBmcm9tIERzZWFsIHB1Ymxpc2hlZCBkYXRhLiBWZXJpZnkgcHJvamVjdC1zcGVjaWZpYyB2YWx1ZXMgd2l0aCBvdXIgZW5naW5lZXJzIGJlZm9yZSB0ZW5kZXIgaXNzdWUuPC9wPic7CiAgICAgIG91dC5xdWVyeVNlbGVjdG9yKCcjcy10YScpLnZhbHVlPXR4dDsKICAgICAgb3V0LnF1ZXJ5U2VsZWN0b3IoJyNzLWNvcHknKS5vbmNsaWNrPWZ1bmN0aW9uKCl7dmFyIHRhPW91dC5xdWVyeVNlbGVjdG9yKCcjcy10YScpO3RhLnNlbGVjdCgpO3RyeXtkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO3RoaXMudGV4dENvbnRlbnQ9J0NvcGllZCDinJMnO31jYXRjaChlKXt9fTsKICAgICAgc2F2ZUxlYWQoJ3NwZWMnLCdHZW5lcmF0ZWQgc3BlYyBmb3IgJytwLm5hbWUpOwogICAgfTsKICB9CgogIC8vIC0tLS0tLS0tLS0gYm9vdDogbG9hZCBLQiAtLS0tLS0tLS0tCiAgZmV0Y2goU0lURSsnL3dwLWpzb24vd3AvdjIvcGFnZXM/c2x1Zz1kc2VhbC1haS1rYiZfZmllbGRzPWNvbnRlbnQnKQogICAudGhlbihmdW5jdGlvbihyKXtyZXR1cm4gci5qc29uKCk7fSkKICAgLnRoZW4oZnVuY3Rpb24oZCl7IHZhciByYXc9KGQmJmRbMF0mJmRbMF0uY29udGVudCYmZFswXS5jb250ZW50LnJlbmRlcmVkKXx8Jyc7IHZhciBiNjQ9cmF3LnJlcGxhY2UoLzxbXj5dKz4vZywnJykudHJpbSgpOwogICAgIHRyeXsgS0I9SlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGF0b2IoYjY0KSkpKTsgfWNhdGNoKGUpeyB0cnl7S0I9SlNPTi5wYXJzZShhdG9iKGI2NCkpO31jYXRjaChlMil7S0I9W107fSB9IH0pCiAgIC5jYXRjaChmdW5jdGlvbigpe0tCPVtdO30pOwp9KSgpOwo=
Chat with us