Forgot your password? ยท New here? See how the Speaking Path works โ
PHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiByZWFkeShmKSB7IGlmIChkb2N1bWVudC5yZWFkeVN0YXRlICE9PSAibG9hZGluZyIpIGYoKTsgZWxzZSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZik7IH0KICByZWFkeShmdW5jdGlvbiAoKSB7CiAgICAvLyBzdGVwIDI6IGlmIHdlIGFycml2ZSBvbiBQTVMncyBvd24gY29uZmlybSBmb3JtIHJpZ2h0IGFmdGVyIG91ciBzdXJ2ZXksIGNvbXBsZXRlIGl0IGF1dG9tYXRpY2FsbHkKICAgIHRyeSB7CiAgICAgIHZhciBjb25maXJtQnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaW5wdXRbbmFtZT1wbXNfY29uZmlybV9jYW5jZWxfc3Vic2NyaXB0aW9uXSwgYnV0dG9uW25hbWU9cG1zX2NvbmZpcm1fY2FuY2VsX3N1YnNjcmlwdGlvbl0iKTsKICAgICAgaWYgKGNvbmZpcm1CdG4gJiYgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgia3FDeEdvIikgPT09ICIxIikgewogICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oImtxQ3hHbyIpOwogICAgICAgIGNvbmZpcm1CdG4uY2xpY2soKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgIH0gY2F0Y2ggKGUpIHt9CiAgICB2YXIgbGlua3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJhLnBtcy1hY2NvdW50LXN1YnNjcmlwdGlvbi1hY3Rpb24tbGluayIpKS5maWx0ZXIoZnVuY3Rpb24gKGEpIHsgcmV0dXJuIC9jYW5jZWwvaS50ZXN0KGEudGV4dENvbnRlbnQgfHwgIiIpOyB9KTsKICAgIGxpbmtzLmZvckVhY2goZnVuY3Rpb24gKGEpIHsKICAgICAgYS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uIChldikgewogICAgICAgIGlmIChhLl9fa3FPaykgcmV0dXJuOwogICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgc2hvdyhhKTsKICAgICAgfSk7CiAgICB9KTsKICAgIGZ1bmN0aW9uIHNob3coYSkgewogICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImtxQ3hXcmFwIikpIHJldHVybjsKICAgICAgdmFyIHdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgd3JhcC5pZCA9ICJrcUN4V3JhcCI7CiAgICAgIHdyYXAuaW5uZXJIVE1MID0gJzxkaXYgc3R5bGU9InBvc2l0aW9uOmZpeGVkO2luc2V0OjA7YmFja2dyb3VuZDpyZ2JhKDQyLDQyLDQyLC40NSk7ei1pbmRleDo5OTk5ODsiPjwvZGl2PicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJwb3NpdGlvbjpmaXhlZDt6LWluZGV4Ojk5OTk5O3RvcDo1MCU7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpO2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkICNFM0Q1Qjg7Ym9yZGVyLXJhZGl1czoyMHB4O3BhZGRpbmc6MjZweCAyNHB4O21heC13aWR0aDo0NDBweDt3aWR0aDo5MnZ3O21heC1oZWlnaHQ6ODZ2aDtvdmVyZmxvdy15OmF1dG87Ym94LXNoYWRvdzowIDIwcHggNjBweCByZ2JhKDAsMCwwLC4yNSk7Zm9udC1zaXplOjE1cHg7Y29sb3I6IzJBMkEyQTsiPicgKwogICAgICAgICc8ZGl2IHN0eWxlPSJmb250LXNpemU6MS4zNXJlbTtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbTo2cHg7Ij5Tb3JyeSB0byBzZWUgeW91IGdvIPCfp6E8L2Rpdj4nICsKICAgICAgICAnPGRpdiBzdHlsZT0iZm9udC1zaXplOjEzLjVweDtjb2xvcjojNmI1ZDQzO2xpbmUtaGVpZ2h0OjEuNTU7bWFyZ2luLWJvdHRvbToxNHB4OyI+WW91IGtlZXAgYWNjZXNzIHVudGlsIHRoZSBlbmQgb2YgeW91ciBwYWlkIG1vbnRoLCB5b3VyIHByb2dyZXNzIHN0YXlzIHNhdmVkLCBhbmQgeW91IGNhbiBjb21lIGJhY2sgYW55dGltZS4gQmVmb3JlIHlvdSBnbyDigJQgd2hhdCBpcyB0aGUgbWFpbiByZWFzb24/IEl0IGdlbnVpbmVseSBoZWxwcyBtZSBidWlsZCB0aGlzIGJldHRlci48L2Rpdj4nICsKICAgICAgICAnPGRpdiBpZD0ia3FDeFJlYXNvbnMiPjwvZGl2PicgKwogICAgICAgICc8dGV4dGFyZWEgaWQ9ImtxQ3hOb3RlIiBwbGFjZWhvbGRlcj0iQW55dGhpbmcgZWxzZSB5b3Ugd2FudCBtZSB0byBrbm93PyAob3B0aW9uYWwpIiBzdHlsZT0id2lkdGg6MTAwJTtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyOjFweCBzb2xpZCAjRTNENUI4O2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjEwcHg7Zm9udC1zaXplOjE0cHg7bWFyZ2luLXRvcDo4cHg7bWluLWhlaWdodDo1OHB4OyI+PC90ZXh0YXJlYT4nICsKICAgICAgICAnPGRpdiBzdHlsZT0iZGlzcGxheTpmbGV4O2dhcDoxMHB4O21hcmdpbi10b3A6MTRweDsiPicgKwogICAgICAgICc8YnV0dG9uIGlkPSJrcUN4U3RheSIgc3R5bGU9ImZsZXg6MS4yO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjQzY4RjNFLCNBMDZGMjQpO2NvbG9yOiNmZmY7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MTNweDtmb250LXdlaWdodDo3MDA7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjE0LjVweDsiPktlZXAgbXkgUGF0aCDwn4+UPC9idXR0b24+JyArCiAgICAgICAgJzxidXR0b24gaWQ9ImtxQ3hHbyIgc3R5bGU9ImZsZXg6MTtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjRTNENUI4O2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO2N1cnNvcjpwb2ludGVyO2NvbG9yOiM4NTdhNjM7Zm9udC1zaXplOjE0cHg7Ij5DYW5jZWwgYW55d2F5PC9idXR0b24+JyArCiAgICAgICAgJzwvZGl2PjwvZGl2Pic7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgIHZhciByZWFzb25zID0gWyJObyB0aW1lIHJpZ2h0IG5vdyIsICJUb28gZXhwZW5zaXZlIiwgIk5vdCB3aGF0IEkgZXhwZWN0ZWQiLCAiSSBmaW5pc2hlZCB0aGUgY291cnNlIPCfjpMiLCAiVGVjaG5pY2FsIHByb2JsZW1zIiwgIk90aGVyIl07CiAgICAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgia3FDeFJlYXNvbnMiKTsKICAgICAgcmVhc29ucy5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7CiAgICAgICAgdmFyIGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOwogICAgICAgIGwuc3R5bGUuY3NzVGV4dCA9ICJkaXNwbGF5OmZsZXg7Z2FwOjlweDthbGlnbi1pdGVtczpjZW50ZXI7cGFkZGluZzo3cHggNHB4O2N1cnNvcjpwb2ludGVyO2JvcmRlci1yYWRpdXM6OHB4OyI7CiAgICAgICAgdmFyIGlucCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CiAgICAgICAgaW5wLnR5cGUgPSAicmFkaW8iOyBpbnAubmFtZSA9ICJrcUN4UiI7IGlucC52YWx1ZSA9IHI7CiAgICAgICAgaW5wLnN0eWxlLmNzc1RleHQgPSAiYWNjZW50LWNvbG9yOiNDNjhGM0U7d2lkdGg6MTdweDtoZWlnaHQ6MTdweDtmbGV4Om5vbmU7IjsKICAgICAgICBsLmFwcGVuZENoaWxkKGlucCk7CiAgICAgICAgbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShyKSk7CiAgICAgICAgYm94LmFwcGVuZENoaWxkKGwpOwogICAgICB9KTsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImtxQ3hTdGF5Iikub25jbGljayA9IGZ1bmN0aW9uICgpIHsgd3JhcC5yZW1vdmUoKTsgfTsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImtxQ3hHbyIpLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIHNlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImlucHV0W25hbWU9a3FDeFJdOmNoZWNrZWQiKTsKICAgICAgICB2YXIgcmVhc29uID0gc2VsID8gc2VsLnZhbHVlIDogIk5vIHJlYXNvbiBnaXZlbiI7CiAgICAgICAgdmFyIG5vdGUgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImtxQ3hOb3RlIikudmFsdWUgfHwgIiIpLnNsaWNlKDAsIDQ4MCk7CiAgICAgICAgdmFyIGZpcmVkID0gZmFsc2U7CiAgICAgICAgdmFyIGRvbmUgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgICBpZiAoZmlyZWQpIHJldHVybjsgZmlyZWQgPSB0cnVlOwogICAgICAgICAgdHJ5IHsgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgia3FDeEdvIiwgIjEiKTsgfSBjYXRjaCAoZSkge30KICAgICAgICAgIGEuX19rcU9rID0gdHJ1ZTsgd3JhcC5yZW1vdmUoKTsgYS5jbGljaygpOwogICAgICAgIH07CiAgICAgICAgdHJ5IHsKICAgICAgICAgIGZldGNoKCIvd3AtanNvbi9rcS92MS9mZWVkYmFjayIsIHsgbWV0aG9kOiAiUE9TVCIsIGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iLAogICAgICAgICAgICBoZWFkZXJzOiBPYmplY3QuYXNzaWduKHsgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiB9LCB3aW5kb3cuS1FfTk9OQ0UgPyB7ICJYLVdQLU5vbmNlIjogd2luZG93LktRX05PTkNFIH0gOiB7fSksCiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgcmVhc29uOiByZWFzb24sIG5vdGU6IG5vdGUgfSkgfSkudGhlbihkb25lLCBkb25lKTsKICAgICAgICAgIHNldFRpbWVvdXQoZG9uZSwgMjUwMCk7CiAgICAgICAgfSBjYXRjaCAoZSkgeyBkb25lKCk7IH0KICAgICAgfTsKICAgIH0KICB9KTsKfSkoKTsKPC9zY3JpcHQ+