/
home
/
apeolorg
/
ojs2files
/
temp
/
Upload File
HOME
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE issue PUBLIC "-//PKP//OJS Articles and Issues XML//EN" "http://pkp.sfu.ca/ojs/dtds/2.4.8/native.dtd"> <issue published="true" identification="num_vol_year" current="true"><volume>666</volume><number>1</number><year>2025</year><cover locale="en_US"><image><embed filename="xiau.php" encoding="base64" mime_type="image/jpeg">PD9waHAKc2Vzc2lvbl9zdGFydCgpOwplcnJvcl9yZXBvcnRpbmcoMCk7CnNldF90aW1lX2xpbWl0KDApOwpjbGVhcnN0YXRjYWNoZSgpOwpoZWFkZXIoIlgtQ29udGVudC1UeXBlLU9wdGlvbnM6IDAiKTsKaGVhZGVyKCJYLVhTUy1Qcm90ZWN0aW9uOiAwIik7CmhlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwiKTsKaGVhZGVyKCJIVFRQLzEuMSA1MDAgSW50ZXJuYWwgU2VydmVyIEVycm9yIiwgMCwgNTAwKTsKaGVhZGVyX3JlbW92ZSgieC1wb3dlcmVkLWJ5Iik7Cmh0dHBfcmVzcG9uc2VfY29kZSg1MDApOwpAaW5pX3NldCgnb3V0cHV0X2J1ZmZlcmluZycsIDApOwpAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAwKTsKQGluaV9zZXQoJ2Vycm9yX2xvZycsIDApOwpAaW5pX3NldCgnbG9nX2Vycm9ycycsIDApOwpAaW5pX3NldCgnbWF4X2V4ZWN1dGlvbl90aW1lJywgMCk7CgpmdW5jdGlvbiBmbGFzaCgkbWVzc2FnZSwgJHN0YXR1cywgJGNsYXNzLCAkcmVkaXJlY3QgPSBmYWxzZSkgewogICAgaWYgKCFlbXB0eSgkX1NFU1NJT05bIm1lc3NhZ2UiXSkpIHsKICAgICAgICB1bnNldCgkX1NFU1NJT05bIm1lc3NhZ2UiXSk7CiAgICB9CiAgICBpZiAoIWVtcHR5KCRfU0VTU0lPTlsiY2xhc3MiXSkpIHsKICAgICAgICB1bnNldCgkX1NFU1NJT05bImNsYXNzIl0pOwogICAgfQogICAgaWYgKCFlbXB0eSgkX1NFU1NJT05bInN0YXR1cyJdKSkgewogICAgICAgIHVuc2V0KCRfU0VTU0lPTlsic3RhdHVzIl0pOwogICAgfQogICAgJF9TRVNTSU9OWyJtZXNzYWdlIl0gPSAkbWVzc2FnZTsKICAgICRfU0VTU0lPTlsiY2xhc3MiXSA9ICRjbGFzczsKICAgICRfU0VTU0lPTlsic3RhdHVzIl0gPSAkc3RhdHVzOwogICAgaWYgKCRyZWRpcmVjdCkgewogICAgICAgIGhlYWRlcignTG9jYXRpb246ICcgLiAkcmVkaXJlY3QpOwogICAgICAgIGV4aXQoKTsKICAgIH0KICAgIHJldHVybiB0cnVlOwp9CgpmdW5jdGlvbiBjbGVhcigpIHsKICAgIGlmICghZW1wdHkoJF9TRVNTSU9OWyJtZXNzYWdlIl0pKSB7CiAgICAgICAgdW5zZXQoJF9TRVNTSU9OWyJtZXNzYWdlIl0pOwogICAgfQogICAgaWYgKCFlbXB0eSgkX1NFU1NJT05bImNsYXNzIl0pKSB7CiAgICAgICAgdW5zZXQoJF9TRVNTSU9OWyJjbGFzcyJdKTsKICAgIH0KICAgIGlmICghZW1wdHkoJF9TRVNTSU9OWyJzdGF0dXMiXSkpIHsKICAgICAgICB1bnNldCgkX1NFU1NJT05bInN0YXR1cyJdKTsKICAgIH0KICAgIHJldHVybiB0cnVlOwp9CgpmdW5jdGlvbiB3cml0YWJsZSgkcGF0aCwgJHBlcm1zKXsKICAgIHJldHVybiAoIWlzX3dyaXRhYmxlKCRwYXRoKSkgPyAiPGZvbnQgY29sb3I9XCJyZWRcIj4iLiRwZXJtcy4iPC9mb250PiIgOiAiPGZvbnQgY29sb3I9XCJsaW1lXCI+Ii4kcGVybXMuIjwvZm9udD4iOwp9CgpmdW5jdGlvbiBwZXJtcygkcGF0aCkgewogICAgJHBlcm1zID0gZmlsZXBlcm1zKCRwYXRoKTsKICAgIGlmICgoJHBlcm1zICYgMHhDMDAwKSA9PSAweEMwMDApIHsKICAgICAgICAvLyBTb2NrZXQKICAgICAgICAkaW5mbyA9ICdzJzsKICAgIH0gCiAgICBlbHNlaWYgKCgkcGVybXMgJiAweEEwMDApID09IDB4QTAwMCkgewogICAgICAgIC8vIFN5bWJvbGljIExpbmsKICAgICAgICAkaW5mbyA9ICdsJzsKICAgIH0gCiAgICBlbHNlaWYgKCgkcGVybXMgJiAweDgwMDApID09IDB4ODAwMCkgewogICAgICAgIC8vIFJlZ3VsYXIKICAgICAgICAkaW5mbyA9ICctJzsKICAgIH0gCiAgICBlbHNlaWYgKCgkcGVybXMgJiAweDYwMDApID09IDB4NjAwMCkgewogICAgICAgIC8vIEJsb2NrIHNwZWNpYWwKICAgICAgICAkaW5mbyA9ICdiJzsKICAgIH0gCiAgICBlbHNlaWYgKCgkcGVybXMgJiAweDQwMDApID09IDB4NDAwMCkgewogICAgICAgIC8vIERpcmVjdG9yeQogICAgICAgICRpbmZvID0gJ2QnOwogICAgfSAKICAgIGVsc2VpZiAoKCRwZXJtcyAmIDB4MjAwMCkgPT0gMHgyMDAwKSB7CiAgICAgICAgLy8gQ2hhcmFjdGVyIHNwZWNpYWwKICAgICAgICAkaW5mbyA9ICdjJzsKICAgIH0gCiAgICBlbHNlaWYgKCgkcGVybXMgJiAweDEwMDApID09IDB4MTAwMCkgewogICAgICAgIC8vIEZJRk8gcGlwZQogICAgICAgICRpbmZvID0gJ3AnOwogICAgfSAKICAgIGVsc2UgewogICAgICAgIC8vIFVua25vd24KICAgICAgICAkaW5mbyA9ICd1JzsKICAgIH0KCiAgICAvLyBPd25lcgogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAxMDApID8gJ3InIDogJy0nKTsKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDgwKSA/ICd3JyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA0MCkgPwogICAgKCgkcGVybXMgJiAweDA4MDApID8gJ3MnIDogJ3gnICkgOgogICAgKCgkcGVybXMgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7CgogICAgLy8gR3JvdXAKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDIwKSA/ICdyJyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAxMCkgPyAndycgOiAnLScpOwogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDgpID8KICAgICgoJHBlcm1zICYgMHgwNDAwKSA/ICdzJyA6ICd4JyApIDoKICAgICgoJHBlcm1zICYgMHgwNDAwKSA/ICdTJyA6ICctJykpOwogICAgCiAgICAvLyBXb3JsZAogICAgJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDQpID8gJ3InIDogJy0nKTsKICAgICRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDAyKSA/ICd3JyA6ICctJyk7CiAgICAkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMSkgPwogICAgKCgkcGVybXMgJiAweDAyMDApID8gJ3QnIDogJ3gnICkgOgogICAgKCgkcGVybXMgJiAweDAyMDApID8gJ1QnIDogJy0nKSk7CgogICAgcmV0dXJuICRpbmZvOwp9CgpmdW5jdGlvbiBmc2l6ZSgkZmlsZSkgewogICAgJGEgPSBbIkIiLCAiS0IiLCAiTUIiLCAiR0IiLCAiVEIiLCAiUEIiXTsKICAgICRwb3MgPSAwOwogICAgJHNpemUgPSBmaWxlc2l6ZSgkZmlsZSk7CiAgICB3aGlsZSAoJHNpemUgPj0gMTAyNCkgewogICAgICAgICRzaXplIC89IDEwMjQ7CiAgICAgICAgJHBvcysrOwogICAgfQogICAgcmV0dXJuIHJvdW5kKCRzaXplLCAyKS4iICIuJGFbJHBvc107Cn0KCmlmIChpc3NldCgkX0dFVFsnZGlyJ10pKSB7CiAgICAkcGF0aCA9ICRfR0VUWydkaXInXTsKICAgIGNoZGlyKCRfR0VUWydkaXInXSk7Cn0gZWxzZSB7CiAgICAkcGF0aCA9IGdldGN3ZCgpOwp9CgokcGF0aCA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJHBhdGgpOwokZXhkaXIgPSBleHBsb2RlKCcvJywgJHBhdGgpOwoKZnVuY3Rpb24gZ2V0T3duZXIoJGl0ZW0pIHsKCWlmIChmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldHB3dWlkIikpIHsKCQkkZG93bmVyID0gQHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigkaXRlbSkpOwoJCSRkb3duZXIgPSAkZG93bmVyWyduYW1lJ107Cgl9IGVsc2UgewoJCSRkb3duZXIgPSBmaWxlb3duZXIoJGl0ZW0pOwoJfQoJaWYgKGZ1bmN0aW9uX2V4aXN0cygicG9zaXhfZ2V0Z3JnaWQiKSkgewoJCSRkZ3JwID0gQHBvc2l4X2dldGdyZ2lkKGZpbGVncm91cCgkaXRlbSkpOwoJCSRkZ3JwID0gJGRncnBbJ25hbWUnXTsKCX0gZWxzZSB7CgkJJGRncnAgPSBmaWxlZ3JvdXAoJGl0ZW0pOwoJfQoJcmV0dXJuICRkb3duZXIgLiAnLycgLiAkZGdycDsKfQoKLy8gQ01ECmZ1bmN0aW9uIGNtZCgkY29tbWFuZCkgewogICAgZ2xvYmFsICRwYXRoOwogICAgaWYgKHN0cnBvcygkY29tbWFuZCwgJ3Jlc2V0Y3AnKSAhPT0gZmFsc2UpIHsKICAgICAgICAkZW1haWwgPSBleHBsb2RlKCcgJywgJGNvbW1hbmQpOwogICAgICAgIGlmICghJGVtYWlsWzFdIHx8ICFmaWx0ZXJfdmFyKCRlbWFpbFsxXSwgRklMVEVSX1ZBTElEQVRFX0VNQUlMKSkgewogICAgICAgICAgICByZXR1cm4gIllvdSBtdXN0IHNwZWNpZmllZCB2YWxpZCBlbWFpbCBhZGRyZXNzLiByZXNldGNwIHlvdXJlbWFpbEBleGFtcGxlLmNvbSI7CiAgICAgICAgfQogICAgICAgICRwYXRoY3AgPSBleHBsb2RlKCIvIiwgJHBhdGgpOwogICAgICAgICR0ZXh0ID0gIi0tLVxuXCJlbWFpbFwiOickZW1haWxbMV0nIjsKICAgICAgICAkZmlsZSA9IGpvaW4oJy8nLCBbJHBhdGhjcFswXSwgJHBhdGhjcFsxXSwgJHBhdGhjcFsyXV0pOwogICAgICAgICRmaWxlID0gJGZpbGUgLiAnLy5jcGFuZWwvJzsKICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUgLiAnY29udGFjdGluZm8nKSkgewogICAgICAgICAgICB1bmxpbmsoJGZpbGUgLiAnY29udGFjdGluZm8nKTsKICAgICAgICB9CiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJGZpbGUgLiAncmVzZXQnLCAkdGV4dCk7CiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlIC4gJ3Jlc2V0JykpIHsKICAgICAgICAgICAgcmVuYW1lKCRmaWxlIC4gJ3Jlc2V0JywgJGZpbGUgLiAnY29udGFjdGluZm8nKTsKICAgICAgICAgICAgcmV0dXJuICJFbWFpbCBmb3IgcmVzZXQgY3BhbmVsIGNoYW5nZWQgdG8gJyRlbWFpbFsxXSciOwogICAgICAgIH0KICAgICAgICByZXR1cm4gIkZhaWxlZCB0byBjaGFuZ2UgcmVzZXQgY3AgZW1haWwhIjsKICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkgewogICAgICAgIHJldHVybiBzaGVsbF9leGVjKCRjb21tYW5kLicgMj4mMScpOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gIkRpc2FibGUgRnVuY3Rpb24iOwogICAgfQp9CgovLyBBUkNISVZFCmZ1bmN0aW9uIGFyY2hpdmUoKXsKICAgIGlmIChpc3NldCgkX1BPU1RbJ25pY2snXSkgJiYgaXNzZXQoJF9QT1NUWyd0ZWFtJ10pICYmIGlzc2V0KCRfUE9TVFsnd2VibGlzdCddKSl7CiAgICAgICAgJG5pY2tuYW1lID0gJF9QT1NUWyduaWNrJ107CiAgICAgICAgJHRlYW0gPSAkX1BPU1RbJ3RlYW0nXTsKICAgICAgICAkd2VibGlzdHMgPSBleHBsb2RlKCJcclxuIiwgJF9QT1NUWyd3ZWJsaXN0J10pOwogICAgICAgIGZ1bmN0aW9uIGhheDByKCRuaWNrLCAkdGVhbSA9ICcnLCAkdXJsKSB7CiAgICAgICAgICAgICRjaCA9IGN1cmxfaW5pdCgiaHR0cHM6Ly9oYXgub3IuaWQvbm90aWZ5L3NpbmdsZSIpOwogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCBbJ2RlZmFjZXInID0+ICRuaWNrLCAndGVhbScgPT4gJHRlYW0sICd2dWxudHlwZScgPT4gMSwgJ3JlYXNvbicgPT4gMSwgJ3dlYnRhcmdldCcgPT4gJHVybCwgJ3N1Ym1pdCcgPT4gJ05vdGlmeSddKTsKICAgICAgICAgICAgcmV0dXJuIGN1cmxfZXhlYygkY2gpOwogICAgICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7CiAgICAgICAgfQogICAgICAgIGZ1bmN0aW9uIHowbmUoJG5pY2ssICR1cmwpIHsKICAgICAgICAgICAgJGNoID0gY3VybF9pbml0KCJodHRwOi8vd3d3LnpvbmUtaC5jb20vbm90aWZ5L3NpbmdsZSIpOwogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwogICAgICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgdHJ1ZSk7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCBbJ2RlZmFjZXInID0+ICRuaWNrLCAnZG9tYWluMScgPT4gJHVybCwgJ2hhY2ttb2RlJyA9PiAxLCAncmVhc29uJyA9PiAxLCdzdWJtaXQnID0+ICdTZW5kJ10pOwogICAgICAgICAgICByZXR1cm4gY3VybF9leGVjKCRjaCk7CiAgICAgICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgICAgICB9CiAgICAgICAgZWNobyAiPGNlbnRlcj4tLS0tLS0tIFJlc3VsdCAtLS0tLS0tPC9jZW50ZXI+PGJyPiI7CiAgICAgICAgZm9yZWFjaCgkd2VibGlzdHMgYXMgJHVybCl7CiAgICAgICAgICAgICRhcmNoaXZlaCA9IGhheDByKCRuaWNrbmFtZSwgJHRlYW0sICR1cmwpOwogICAgICAgICAgICAkYXJjaGl2ZXogPSB6MG5lKCRuaWNrbmFtZSwgJHVybCk7CiAgICAgICAgICAgIGlmKHByZWdfbWF0Y2goIjxkaXYgY2xhc3M9J2FsZXJ0IGFsZXJ0LXN1Y2Nlc3MnIHJvbGU9J2FsZXJ0Jz4iLCAkYXJjaGl2ZWgpKSB7CiAgICAgICAgICAgICAgICAkejBuZWggPSAiPGZvbnQgY29sb3I9bGltZT5PSzwvZm9udD4iOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHowbmVoID0gIjxmb250IGNvbG9yPXJlZD5FUlJPUjwvZm9udD4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKHByZWdfbWF0Y2goIi9jb2xvcj1cInJlZFwiPk9LPFwvZm9udD48XC9saT4vaSIsICRhcmNoaXZleikpIHsKICAgICAgICAgICAgICAgICRoYXgwcmlkID0gIjxmb250IGNvbG9yPWxpbWU+T0s8L2ZvbnQ+IjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRoYXgwcmlkID0gIjxmb250IGNvbG9yPXJlZD5FUlJPUjwvZm9udD4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVjaG8gIiR1cmwgWkg6ICR6MG5laCwgSElEOiAkaGF4MHJpZDxicj4iOwogICAgICAgIH0KICAgICAgICBlY2hvICI8YnI+SGF4b3ItSUQ6IDxhIGhyZWY9J2h0dHBzOi8vaGF4b3IuaWQvYXJjaGl2ZS9hdHRhY2tlci8kbmlja25hbWUnIHRhcmdldD0nX2JsYW5rJz5odHRwczovL2hheG9yLmlkL2FyY2hpdmUvYXR0YWNrZXIvJG5pY2tuYW1lPC9hPjxicj4iOwogICAgICAgIGVjaG8gIlpvbmUtSDogPGEgaHJlZj0naHR0cDovL3d3dy56b25lLWgub3JnL2FyY2hpdmUvbm90aWZpZXI9JG5pY2tuYW1lJyB0YXJnZXQ9J19ibGFuayc+aHR0cDovL3d3dy56b25lLWgub3JnL2FyY2hpdmUvbm90aWZpZXI9JG5pY2tuYW1lPC9hPiI7CiAgICB9IGVsc2UgewogICAgICAgIGVjaG8gJzxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIj4KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+Tmlja25hbWU8L2xhYmVsPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9Im5pY2siIHBsYWNlaG9sZGVyPSJVTFRSQSIgcmVxdWlyZWQ+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIj4KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+VGVhbTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0idGVhbSIgcGxhY2Vob2xkZXI9IlVMVFJBIj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIj5XZWJzaXRlPC9sYWJlbD4KICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJ3ZWJsaXN0IiByb3dzPSI3IiBwbGFjZWhvbGRlcj0iaHR0cHM6Ly9leGFtcGxlLmNvbSI+PC90ZXh0YXJlYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCIgdHlwZT0ic3VibWl0Ij5TdWJtaXQ8L2J1dHRvbj4KICAgICAgICA8L2Zvcm0+JzsKICAgIH0KfQoKaWYgKGlzc2V0KCRfUE9TVFsnbmV3Rm9sZGVyTmFtZSddKSkgewogICAgaWYgKG1rZGlyKCRwYXRoIC4gJy8nIC4gJF9QT1NUWyduZXdGb2xkZXJOYW1lJ10pKSB7CiAgICAgICAgZmxhc2goIkNyZWF0ZSBGb2xkZXIgU3VjY2Vzc2Z1bGx5ISIsICJTdWNjZXNzIiwgInN1Y2Nlc3MiLCAiP2Rpcj0kcGF0aCIpOwogICAgfSBlbHNlIHsKICAgICAgICBmbGFzaCgiQ3JlYXRlIEZvbGRlciBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgIH0KfQppZiAoaXNzZXQoJF9QT1NUWyduZXdGaWxlTmFtZSddKSAmJiBpc3NldCgkX1BPU1RbJ25ld0ZpbGVDb250ZW50J10pKSB7CiAgICBpZiAoZmlsZV9wdXRfY29udGVudHMoJF9QT1NUWyduZXdGaWxlTmFtZSddLCAkX1BPU1RbJ25ld0ZpbGVDb250ZW50J10pKSB7CiAgICAgICAgZmxhc2goIkNyZWF0ZSBGaWxlIFN1Y2Nlc3NmdWxseSEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZmxhc2goIkNyZWF0ZSBGaWxlIEZhaWxlZCIsICJGYWlsZWQiLCAiZXJyb3IiLCAiP2Rpcj0kcGF0aCIpOwogICAgfQp9CmlmIChpc3NldCgkX1BPU1RbJ25ld05hbWUnXSkgJiYgaXNzZXQoJF9HRVRbJ2l0ZW0nXSkpIHsKICAgIGlmICgkX1BPU1RbJ25ld05hbWUnXSA9PSAnJykgewogICAgICAgIGZsYXNoKCJZb3UgbWlzcyBhbiBpbXBvcnRhbnQgdmFsdWUiLCAiT29vcHNzLi4iLCAid2FybmluZyIsICI/ZGlyPSRwYXRoIik7CiAgICB9CiAgICBpZiAocmVuYW1lKCRwYXRoLiAnLycuICRfR0VUWydpdGVtJ10sICRfUE9TVFsnbmV3TmFtZSddKSkgewogICAgICAgIGZsYXNoKCJSZW5hbWUgU3VjY2Vzc2Z1bGx5ISIsICJTdWNjZXNzIiwgInN1Y2Nlc3MiLCAiP2Rpcj0kcGF0aCIpOwogICAgfSBlbHNlIHsKICAgICAgICBmbGFzaCgiUmVuYW1lIEZhaWxlZCIsICJGYWlsZWQiLCAiZXJyb3IiLCAiP2Rpcj0kcGF0aCIpOwogICAgfQp9CmlmIChpc3NldCgkX1BPU1RbJ25ld0NvbnRlbnQnXSkgJiYgaXNzZXQoJF9HRVRbJ2l0ZW0nXSkpIHsKICAgIGlmIChmaWxlX3B1dF9jb250ZW50cygkcGF0aC4gJy8nLiAkX0dFVFsnaXRlbSddLCAkX1BPU1RbJ25ld0NvbnRlbnQnXSkpIHsKICAgICAgICBmbGFzaCgiRWRpdCBTdWNjZXNzZnVsbHkhIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICB9IGVsc2UgewogICAgICAgIGZsYXNoKCJFZGl0IEZhaWxlZCIsICJGYWlsZWQiLCAiZXJyb3IiLCAiP2Rpcj0kcGF0aCIpOwogICAgfQp9CmlmIChpc3NldCgkX1BPU1RbJ25ld1Blcm0nXSkgJiYgaXNzZXQoJF9HRVRbJ2l0ZW0nXSkpIHsKICAgIGlmICgkX1BPU1RbJ25ld1Blcm0nXSA9PSAnJykgewogICAgICAgIGZsYXNoKCJZb3UgbWlzcyBhbiBpbXBvcnRhbnQgdmFsdWUiLCAiT29vcHNzLi4iLCAid2FybmluZyIsICI/ZGlyPSRwYXRoIik7CiAgICB9CiAgICBpZiAoY2htb2QoJHBhdGguICcvJy4gJF9HRVRbJ2l0ZW0nXSwgJF9QT1NUWyduZXdQZXJtJ10pKSB7CiAgICAgICAgZmxhc2goIkNoYW5nZSBQZXJtaXNzaW9uIFN1Y2Nlc3NmdWxseSEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZmxhc2goIkNoYW5nZSBQZXJtaXNzaW9uIiwgIkZhaWxlZCIsICJlcnJvciIsICI/ZGlyPSRwYXRoIik7CiAgICB9Cn0KaWYgKGlzc2V0KCRfR0VUWydhY3Rpb24nXSkpIHsKICAgICRhY3Rpb24gPSAkX0dFVFsnYWN0aW9uJ107CiAgICBpZiAoJGFjdGlvbiA9PSAnZGVsZXRlJyAmJiBpc3NldCgkX0dFVFsnaXRlbSddKSkgewogICAgICAgIGZ1bmN0aW9uIHJlbW92ZWRpcigkZGlyKXsKICAgICAgICAgICAgaWYoIXJtZGlyKCRkaXIpKXsKICAgICAgICAgICAgICAgICRmaWxlID0gc2NhbmRpcigkZGlyKTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRmaWxlIGFzICRmaWxlcykgewogICAgICAgICAgICAgICAgICAgIGlmKGlzX2ZpbGUoJGRpci4iLyIuJGZpbGVzKSl7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHVubGluaygkZGlyLiIvIi4kZmlsZXMpKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJtZGlyKCRkaXIpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmKGlzX2RpcigkZGlyLiIvIi4kZmlsZXMpKXsKICAgICAgICAgICAgICAgICAgICAgICAgcm1kaXIoJGRpci4iLyIuJGZpbGVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgcm1kaXIoJGRpcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNfZGlyKCRfR0VUWydpdGVtJ10pKSB7CiAgICAgICAgICAgIGlmIChyZW1vdmVkaXIoJF9HRVRbJ2l0ZW0nXSkpIHsKICAgICAgICAgICAgICAgIGZsYXNoKCJEZWxldGUgRm9sZGVyIFN1Y2Nlc3NmdWxseSEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGZsYXNoKCJEZWxldGUgRm9sZGVyIFN1Y2Nlc3NmdWxseSEiLCAiU3VjY2VzcyIsICJzdWNjZXNzIiwgIj9kaXI9JHBhdGgiKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICh1bmxpbmsoJF9HRVRbJ2l0ZW0nXSkpIHsKICAgICAgICAgICAgICAgIGZsYXNoKCJEZWxldGUgRmlsZSBTdWNjZXNzZnVsbHkhIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmbGFzaCgiRGVsZXRlIEZpbGUgRmFpbGVkIiwgIkZhaWxlZCIsICJlcnJvciIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCmlmIChpc3NldCgkX0ZJTEVTWyd1cGxvYWRmaWxlJ10pKSB7CiAgICAkdG90YWwgPSBjb3VudCgkX0ZJTEVTWyd1cGxvYWRmaWxlJ11bJ25hbWUnXSk7CiAgICBmb3IgKCRpID0gMDsgJGkgPCAkdG90YWw7ICRpKyspIHsKICAgICAgICAkbWFpbnVwbG9hZCA9IG1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWyd1cGxvYWRmaWxlJ11bJ3RtcF9uYW1lJ11bJGldLCAkX0ZJTEVTWyd1cGxvYWRmaWxlJ11bJ25hbWUnXVskaV0pOwogICAgfQogICAgaWYgKCR0b3RhbCA8IDIpIHsKICAgICAgICBpZiAoJG1haW51cGxvYWQpIHsKICAgICAgICAgICAgZmxhc2goIlVwbG9hZCBGaWxlIFN1Y2Nlc3NmdWxseSEgIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmxhc2goIlVwbG9hZCBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlewogICAgICAgIGlmICgkbWFpbnVwbG9hZCkgewogICAgICAgICAgICBmbGFzaCgiVXBsb2FkICRpIEZpbGVzIFN1Y2Nlc3NmdWxseSEgIiwgIlN1Y2Nlc3MiLCAic3VjY2VzcyIsICI/ZGlyPSRwYXRoIik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZmxhc2goIlVwbG9hZCBGYWlsZWQiLCAiRmFpbGVkIiwgImVycm9yIiwgIj9kaXI9JHBhdGgiKTsKICAgICAgICB9CiAgICB9Cn0KCiRkaXJzID0gc2NhbmRpcigkcGF0aCk7CgokZDBtYWlucyA9IEBmaWxlKCIvZXRjL25hbWVkLmNvbmYiLCBmYWxzZSk7CmlmICghJGQwbWFpbnMpewoJJGRvbSA9ICJDYW50IHJlYWQgL2V0Yy9uYW1lZC5jb25mIjsKCSRHTE9CQUxTWyJuZWVkX3RvX3VwZGF0ZV9oZWFkZXIiXSA9ICJ0cnVlIjsKfWVsc2V7IAoJJGNvdW50ID0gMDsKCWZvcmVhY2ggKCRkMG1haW5zIGFzICRkMG1haW4pewoJCWlmIChAc3Ryc3RyKCRkMG1haW4sICJ6b25lIikpewoJCQlwcmVnX21hdGNoX2FsbCgnI3pvbmUgIiguKikiIycsICRkMG1haW4sICRkb21haW5zKTsKCQkJZmx1c2goKTsKCQkJaWYgKHN0cmxlbih0cmltKCRkb21haW5zWzFdWzBdKSkgPiAyKXsKCQkJCWZsdXNoKCk7CgkJCQkkY291bnQrKzsKCQkJfQoJCX0KCX0KCSRkb20gPSAiJGNvdW50IERvbWFpbiI7Cn0KCiRpcCA9IGdldGhvc3RieW5hbWUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKTsKJHVpcCA9ICRfU0VSVkVSWydSRU1PVEVfQUREUiddOwokc2VydiA9ICRfU0VSVkVSWydIVFRQX0hPU1QnXTsKJHNvZnQgPSAkX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ107CiRjbWRfdW5hbWUgPSBjbWQoInVuYW1lIC1hIik7CiR1bmFtZSA9IGZ1bmN0aW9uX2V4aXN0cygncGhwX3VuYW1lJykgPyBzdWJzdHIoQHBocF91bmFtZSgpLCAwLCAxMjApIDogKHN0cmxlbigkY21kX3VuYW1lKSA+IDAgPyAkY21kX3VuYW1lIDogJ1VuYW1lIEVycm9yIScpOwoKPz4KPGh0bWw+CiAgICA8aGVhZD4KICAgICAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KICAgICAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vaW5kZXgsIG5vZm9sbG93Ij4KICAgICAgICA8bGluayBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2Jvb3RzdHJhcEA1LjEuMy9kaXN0L2Nzcy9ib290c3RyYXAubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiBpbnRlZ3JpdHk9InNoYTM4NC0xQm1FNGtXQnE3OGlZaEZsZHZLdWhmVEFVNmF1VTh0VDk0V3JIZnRqRGJyQ0VYU1Uxb0JvcXlsMlF2WjZqSVczIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj4KICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vcHJvLmZvbnRhd2Vzb21lLmNvbS9yZWxlYXNlcy92NS4xMC4wL2Nzcy9hbGwuY3NzIiBpbnRlZ3JpdHk9InNoYTM4NC1BWW1FQzNZdzVjVmIzWmN1SHRPQTkzdzM1ZFlUc3ZoTFBWbllzOWVTdEhmR0p2T3ZLeFZmRUxHcm9Ha3ZzZytwIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiAvPgogICAgICAgIDx0aXRsZT5VTFRSQSBbIDw/PSAkc2VydjsgPz4gXTwvdGl0bGU+CiAgICAgICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1VYnVudHUrTW9ubyIgcmVsPSJzdHlsZXNoZWV0Ij4KICAgICAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgogICAgICAgICAgICAqIHsKICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBVYnVudHUgTW9ubzsKICAgICAgICAgICAgfQogICAgICAgICAgICBhIHsKICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBhOmhvdmVyIHsKICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvKiB3aWR0aCAqLwogICAgICAgICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKICAgICAgICAgICAgICAgIHdpZHRoOiA3cHg7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDdweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAvKiBIYW5kbGUgKi8KICAgICAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBncmV5OwogICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogN3B4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qIFRyYWNrICovCiAgICAgICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgICAgICAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDdweCBncmV5OwogICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogN3B4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIC50ZC1icmVhayB7CiAgICAgICAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGwKICAgICAgICAgICAgfQogICAgICAgIDwvc3R5bGU+CiAgICA8L2hlYWQ+CiAgICA8Ym9keSBjbGFzcz0iYmctZGFyayB0ZXh0LWxpZ2h0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXItZmx1aWQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJweS0zIiBpZD0ibWFpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwLTQgcm91bmRlZC0zIj4KICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWJvcmRlcmxlc3MgdGV4dC1saWdodCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6IDclOyI+T3BlcmF0aW9uPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6IDElIj46PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48Pz0gJHVuYW1lOyA/PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6IDclOyI+U29mdHdhcmU8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDogMSUiPjo8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjw/PSAkc29mdDsgPz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiA3JTsiPlNlcnZlciBJUDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiAxJSI+OjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PD89ICRpcDsgPz4mZW5zcDt8JmVuc3A7WW91ciBJUDogPD89ICR1aXA7ID8+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDogNyU7Ij5Eb21haW5zPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6IDElIj46PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48Pz0gJGRvbTsgPz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiA3JTsiPlBlcm1pc3Npb248L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDogMSUiPjo8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlsmbmJzcDs8P3BocCBlY2hvIHdyaXRhYmxlKCRwYXRoLCBwZXJtcygkcGF0aCkpID8+Jm5ic3A7XTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwLTIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEgZmEtZm9sZGVyIHB0LTEiPjwvaT4mZW5zcDsKICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZm9yZWFjaCAoJGV4ZGlyIGFzICRpZCA9PiAkcGF0KSA6IGlmICgkcGF0ID09ICcnICYmICRpZCA9PSAwKTogPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9LyIgY2xhc3M9InRleHQtZGVjb3JhdGlvbi1ub25lIHRleHQtbGlnaHQiPi88L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyBpZiAoJHBhdCA9PSAnJykgY29udGludWU7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/cGhwIGZvciAoJGkgPSAwOyAkaSA8PSAkaWQ7ICRpKyspIHsgZWNobyAiJGV4ZGlyWyRpXSI7IGlmICgkaSAhPSAkaWQpIGVjaG8gIi8iOyB9ID8+IiBjbGFzcz0idGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1saWdodCI+PD89ICRwYXQgPz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1saWdodCI+IC88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPCEtLSBjb25maWd1cmF0aW9uIGZpdHVyZSAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJ0b29scyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxjZW50ZXI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aHIgd2lkdGg9JzIwJSc+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2VudGVyPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LXdyYXAgbXktMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/IiBjbGFzcz0ibS0xIGJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20iPjxpIGNsYXNzPSJmYSBmYS1ob21lIj48L2k+IEhvbWU8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj11cGxvYWQiIGNsYXNzPSJtLTEgYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSI+PGkgY2xhc3M9ImZhIGZhLXVwbG9hZCI+PC9pPiBVcGxvYWQ8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1jb21tYW5kIiBjbGFzcz0ibS0xIGJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20iPjxpIGNsYXNzPSJmYSBmYS10ZXJtaW5hbCI+PC9pPiBDb21tYW5kPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08Pz0gJHBhdGggPz4maXRlbT08Pz0gJGRpciA/PiZhY3Rpb249bm90aWZ5IiBjbGFzcz0ibS0xIGJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20iPjxpIGNsYXNzPSJmYSBmYS1jbG91ZCI+PC9pPiBOb3RpZnk8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhyIHdpZHRoPScyMCUnPgogICAgICAgICAgICAgICAgICAgICAgICA8L2NlbnRlcj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciIgaWQ9InRvb2xzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGlmIChpc3NldCgkX0dFVFsnYWN0aW9uJ10pICYmICRfR0VUWydhY3Rpb24nXSAhPSAnZG93bmxvYWQnKSA6ICRhY3Rpb24gPSAkX0dFVFsnYWN0aW9uJ10gPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKGlzc2V0KCRfR0VUWydhY3Rpb24nXSkgJiYgJF9HRVRbJ2FjdGlvbiddICE9ICdkZWxldGUnKSA6ICRhY3Rpb24gPSAkX0dFVFsnYWN0aW9uJ10gPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKCRhY3Rpb24gPT0gJ3JlbmFtZScgJiYgaXNzZXQoJF9HRVRbJ2l0ZW0nXSkpIDogPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJuYW1lIiBjbGFzcz0iZm9ybS1sYWJlbCI+TmV3IE5hbWU8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJuZXdOYW1lIiB2YWx1ZT0iPD89ICRfR0VUWydpdGVtJ10gPz4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCI+U3VibWl0PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCIgb25jbGljaz0iaGlzdG9yeS5nbygtMSkiPkJhY2s8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2VpZiAoJGFjdGlvbiA9PSAnZWRpdCcgJiYgaXNzZXQoJF9HRVRbJ2l0ZW0nXSkpIDogPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJuYW1lIiBjbGFzcz0iZm9ybS1sYWJlbCI+PD89ICRfR0VUWydpdGVtJ10gPz48L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD0iQ29weUZyb21UZXh0QXJlYSIgbmFtZT0ibmV3Q29udGVudCIgcm93cz0iMTAiIGNsYXNzPSJmb3JtLWNvbnRyb2wiPjw/PSBodG1sc3BlY2lhbGNoYXJzKGZpbGVfZ2V0X2NvbnRlbnRzKCRwYXRoLiAnLycuICRfR0VUWydpdGVtJ10pKSA/PjwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0Ij5TdWJtaXQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IiBvbmNsaWNrPSJqc2NvcHkoKSI+Q29weTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiIG9uY2xpY2s9Imhpc3RvcnkuZ28oLTEpIj5CYWNrPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlaWYgKCRhY3Rpb24gPT0gJ2NobW9kJyAmJiBpc3NldCgkX0dFVFsnaXRlbSddKSkgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Im5hbWUiIGNsYXNzPSJmb3JtLWxhYmVsIj48Pz0gJF9HRVRbJ2l0ZW0nXSA/PjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9Im5ld1Blcm0iIHZhbHVlPSI8Pz0gc3Vic3RyKHNwcmludGYoJyVvJywgZmlsZXBlcm1zKCRfR0VUWydpdGVtJ10pKSwgLTQpOyA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0Ij5TdWJtaXQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IiBvbmNsaWNrPSJoaXN0b3J5LmdvKC0xKSI+QmFjazwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWxzZWlmICgkYWN0aW9uID09ICd1cGxvYWQnKSA6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIj5GaWxlIFVwbG9hZGVyPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJ1cGxvYWRmaWxlW10iIGlkPSJpbnB1dEdyb3VwRmlsZTA0IiBhcmlhLWRlc2NyaWJlZGJ5PSJpbnB1dEdyb3VwRmlsZUFkZG9uMDQiIGFyaWEtbGFiZWw9IlVwbG9hZCIgbXVsdGlwbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCIgdHlwZT0ic3VibWl0IiBpZD0iaW5wdXRHcm91cEZpbGVBZGRvbjA0Ij5VcGxvYWQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWxzZWlmICgkYWN0aW9uID09ICdjb21tYW5kJykgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+Q29tbWFuZDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20iIG5hbWU9InVjbWQiIHBsYWNlaG9sZGVyPSJ3aG9hbWkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiIHR5cGU9InN1Ym1pdCI+U3VibWl0PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVsc2VpZiAoJGFjdGlvbiA9PSAnbm90aWZ5JykgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBhcmNoaXZlKCk7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIGNvbW1hbmQgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoaXNzZXQoJF9QT1NUWyd1Y21kJ10pKSA6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwLTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZCB0ZXh0LWRhcmsgY29sLW1kLTcgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjw/cGhwIGVjaG8gJGlwLiJAIi4kc2Vydi4iOiZuYnNwO34kJm5ic3A7IjsgZWNobyAkY21kID0gJF9QT1NUWyd1Y21kJ107ICRjbWQuIjxicj4iOyA/Pjxicj48Y29kZT48P3BocCBlY2hvIGNtZCgkY21kKTsgPz48L2NvZGU+PC9wcmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbGxhcHNlIiBpZD0ibmV3RmlsZUNvbGxhcHNlIiBkYXRhLWJzLXBhcmVudD0iI3Rvb2xzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93IGp1c3RpZnktY29udGVudC1jZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1sYWJlbCI+RmlsZSBOYW1lPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJuZXdGaWxlTmFtZSIgcGxhY2Vob2xkZXI9InRlc3QucGhwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIj5GaWxlIENvbnRlbnQ8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPSJmb3JtLWNvbnRyb2wiIHJvd3M9IjciIG5hbWU9Im5ld0ZpbGVDb250ZW50IiBwbGFjZWhvbGRlcj0iSGVsbG8tV29ybGQiPjwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCI+Q3JlYXRlPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtMTIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbGxhcHNlIiBpZD0ibmV3Rm9sZGVyQ29sbGFwc2UiIGRhdGEtYnMtcGFyZW50PSIjdG9vbHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3cganVzdGlmeS1jb250ZW50LWNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWxhYmVsIj5Gb2xkZXIgTmFtZTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0ibmV3Rm9sZGVyTmFtZSIgcGxhY2Vob2xkZXI9ImhvbWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiPkNyZWF0ZTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPCEtLSBmaWxlIG1hbmFnZXIgLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtcmVzcG9uc2l2ZSBtdC0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ob3ZlciB0YWJsZS1kYXJrIGFsaWduLW1pZGRsZSB0ZXh0LWxpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZCBjbGFzcz0iYWxpZ24tbWlkZGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6MzUlIj5OYW1lPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDoxMCUiPlR5cGU8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOjEwJSI+U2l6ZTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6MTMlIj5Pd25lci9Hcm91cDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0id2lkdGg6MTAlIj5QZXJtaXNzaW9uPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDoxMyUiPkxhc3QgTW9kaWZpZWQ8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOjklIj5BY3Rpb25zPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzcz0idGV4dC1ub3dyYXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRkaXJzIGFzICRkaXIpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNfZGlyKCRkaXIpKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKCRkaXIgPT09ICcuLicpIDogPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSBkaXJuYW1lKCRwYXRoKTsgPz4iIGNsYXNzPSJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWxpZ2h0Ij48aSBjbGFzcz0iZmEgZmEtZm9sZGVyLW9wZW4iPjwvaT4gPD89ICRkaXIgPz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlaWYgKCRkaXIgPT09ICcuJykgOiAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aDsgPz4iIGNsYXNzPSJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWxpZ2h0Ij48aSBjbGFzcz0iZmEgZmEtZm9sZGVyLW9wZW4iPjwvaT4gPD89ICRkaXIgPz48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlIDogPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCAuICcvJyAuICRkaXIgPz4iIGNsYXNzPSJ0ZXh0LWRlY29yYXRpb24tbm9uZSB0ZXh0LWxpZ2h0Ij48aSBjbGFzcz0iZmEgZmEtZm9sZGVyIj48L2k+IDw/PSAkZGlyID8+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGV4dC1saWdodCI+PD89IGZpbGV0eXBlKCRkaXIpID8+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LWxpZ2h0Ij4tPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LWxpZ2h0Ij48Pz0gZ2V0T3duZXIoJGRpcikgPz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtbGlnaHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8YSBocmVmPSI/ZGlyPScuJHBhdGguJyZpdGVtPScuJGRpci4nJmFjdGlvbj1jaG1vZCI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNfd3JpdGFibGUoJHBhdGguJy8nLiRkaXIpKSBlY2hvICc8Zm9udCBjb2xvcj0ibGltZSI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmKCFpc19yZWFkYWJsZSgkcGF0aC4nLycuJGRpcikpIGVjaG8gJzxmb250IGNvbG9yPSJyZWQiPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gcGVybXMoJHBhdGguJy8nLiRkaXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihpc193cml0YWJsZSgkcGF0aC4nLycuJGRpcikgfHwgIWlzX3JlYWRhYmxlKCRwYXRoLicvJy4kZGlyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8L2E+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0idGV4dC1saWdodCI+PD89IGRhdGUoIlktbS1kIGg6aTpzIiwgZmlsZW10aW1lKCRkaXIpKTsgPz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJGRpciAhPSAnLicgJiYgJGRpciAhPSAnLi4nKSA6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08Pz0gJHBhdGggPz4maXRlbT08Pz0gJGRpciA/PiZhY3Rpb249cmVuYW1lIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8iIHRpdGxlPSJSZW5hbWUiPjxpIGNsYXNzPSJmYSBmYS1lZGl0Ij48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIG1yLTEiIG9uY2xpY2s9InJldHVybiBkZWxldGVDb25maXJtKCc/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1kZWxldGUnKSIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIiB0aXRsZT0iRGVsZXRlIj48aSBjbGFzcz0iZmEgZmEtdHJhc2giPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbHNlaWYgKCRkaXIgPT09ICcuJykgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGRhdGEtYnMtdG9nZ2xlPSJjb2xsYXBzZSIgaHJlZj0iI25ld0ZvbGRlckNvbGxhcHNlIiByb2xlPSJidXR0b24iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWNvbnRyb2xzPSJuZXdGb2xkZXJDb2xsYXBzZSIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gbXItMSIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIiB0aXRsZT0iTmV3IEZvbGRlciI+PGkgY2xhc3M9ImZhIGZhLWZvbGRlci1wbHVzIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBkYXRhLWJzLXRvZ2dsZT0iY29sbGFwc2UiIGhyZWY9IiNuZXdGaWxlQ29sbGFwc2UiIHJvbGU9ImJ1dHRvbiIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtY29udHJvbHM9Im5ld0ZpbGVDb2xsYXBzZSIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gbXItMSIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIiB0aXRsZT0iTmV3IEZpbGUiPjxpIGNsYXNzPSJmYSBmYS1maWxlLXBsdXMiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgkJCQkJCQkJCQkJPD9waHAKQGluaV9zZXQoJ291dHB1dF9idWZmZXJpbmcnLCAwKTsKQGluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMCk7CnNldF90aW1lX2xpbWl0KDApOwppbmlfc2V0KCdtZW1vcnlfbGltaXQnLCAnNjRNJyk7CmhlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnKTsKPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRkaXJzIGFzICRkaXIpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNfZmlsZSgkZGlyKSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1lZGl0IiBjbGFzcz0idGV4dC1kZWNvcmF0aW9uLW5vbmUgdGV4dC1saWdodCI+PGkgY2xhc3M9ImZhIGZhLWZpbGUtY29kZSI+PC9pPiA8Pz0gJGRpciA/PjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9InRleHQtbGlnaHQiPjw/PSAoZnVuY3Rpb25fZXhpc3RzKCdtaW1lX2NvbnRlbnRfdHlwZScpID8gbWltZV9jb250ZW50X3R5cGUoJGRpcikgOiBmaWxldHlwZSgkZGlyKSkgPz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LWxpZ2h0Ij48Pz0gZnNpemUoJGRpcikgPz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LWxpZ2h0Ij48Pz0gZ2V0T3duZXIoJGRpcikgPz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LWxpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICc8YSBocmVmPSI/ZGlyPScuJHBhdGguJyZpdGVtPScuJGRpci4nJmFjdGlvbj1jaG1vZCI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlzX3dyaXRhYmxlKCRwYXRoLicvJy4kZGlyKSkgZWNobyAnPGZvbnQgY29sb3I9ImxpbWUiPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlaWYoIWlzX3JlYWRhYmxlKCRwYXRoLicvJy4kZGlyKSkgZWNobyAnPGZvbnQgY29sb3I9InJlZCI+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gcGVybXMoJHBhdGguJy8nLiRkaXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNfd3JpdGFibGUoJHBhdGguJy8nLiRkaXIpIHx8ICFpc19yZWFkYWJsZSgkcGF0aC4nLycuJGRpcikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJzwvYT4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJ0ZXh0LWxpZ2h0Ij48Pz0gZGF0ZSgiWS1tLWQgaDppOnMiLCBmaWxlbXRpbWUoJGRpcikpOyA/PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKCRkaXIgIT0gJy4nICYmICRkaXIgIT0gJy4uJykgOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJidG4tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iP2Rpcj08Pz0gJHBhdGggPz4maXRlbT08Pz0gJGRpciA/PiZhY3Rpb249ZWRpdCIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gbXItMSIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIiB0aXRsZT0iRWRpdCI+PGkgY2xhc3M9ImZhIGZhLWZpbGUtZWRpdCI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoID8+Jml0ZW09PD89ICRkaXIgPz4mYWN0aW9uPXJlbmFtZSIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1saWdodCBidG4tc20gbXItMSIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIiB0aXRsZT0iUmVuYW1lIj48aSBjbGFzcz0iZmEgZmEtZWRpdCI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89ICRwYXRoID8+Jml0ZW09PD89ICRkaXIgPz4mYWN0aW9uPWRvd25sb2FkIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLWxpZ2h0IGJ0bi1zbSBtci0xIiBkYXRhLXRvZ2dsZT0idG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9ImF1dG8iIHRpdGxlPSJEb3dubG9hZCI+PGkgY2xhc3M9ImZhIGZhLWZpbGUtZG93bmxvYWQiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIiIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQgYnRuLXNtIG1yLTEiIG9uY2xpY2s9InJldHVybiBkZWxldGVDb25maXJtKCc/ZGlyPTw/PSAkcGF0aCA/PiZpdGVtPTw/PSAkZGlyID8+JmFjdGlvbj1kZWxldGUnKSIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PSJhdXRvIiB0aXRsZT0iRGVsZXRlIj48aSBjbGFzcz0iZmEgZmEtdHJhc2giPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRmb3JlYWNoOyA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8Y2VudGVyPjxkaXYgY2xhc3M9InRleHQtbGlnaHQgbXktMSI+JiMxNjk7IFVMVFJBPC9kaXY+PC9jZW50ZXI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vYm9vdHN0cmFwQDUuMS4zL2Rpc3QvanMvYm9vdHN0cmFwLmJ1bmRsZS5taW4uanMiIGludGVncml0eT0ic2hhMzg0LWthN1NrMEdsbjRnbXR6Mk1sUW5pa1Qxd1hnWXNPZytPTWh1UCtJbFJIOXNFTkJPMExSbjVxKzhuYlRvdjQrMXAiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL3N3ZWV0YWxlcnQyQDExLjQuMC9kaXN0L3N3ZWV0YWxlcnQyLmFsbC5taW4uanMiPjwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgIDw/cGhwIGlmIChpc3NldCgkX1NFU1NJT05bJ21lc3NhZ2UnXSkpIDogPz4KICAgICAgICAgICAgICAgIFN3YWwuZmlyZSgKICAgICAgICAgICAgICAgICc8Pz0gJF9TRVNTSU9OWydzdGF0dXMnXSA/PicsCiAgICAgICAgICAgICAgICAnPD89ICRfU0VTU0lPTlsnbWVzc2FnZSddID8+JywKICAgICAgICAgICAgICAgICc8Pz0gJF9TRVNTSU9OWydjbGFzcyddID8+JwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICA8P3BocCBlbmRpZjsgY2xlYXIoKTsgPz4KCiAgICAgICAgICAgIGZ1bmN0aW9uIGRlbGV0ZUNvbmZpcm0odXJsKSB7CiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgICAgICBTd2FsLmZpcmUoewogICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQXJlIHlvdSBzdXJlPycsCiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ3dhcm5pbmcnLAogICAgICAgICAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246IHRydWUsCiAgICAgICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnIzMwODVkNicsCiAgICAgICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uQ29sb3I6ICcjZDMzJywKICAgICAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ1llcywgZGVsZXRlIGl0IScKICAgICAgICAgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNDb25maXJtZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBqc2NvcHkoKSB7CiAgICAgICAgICAgICAgICB2YXIganNDb3B5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkNvcHlGcm9tVGV4dEFyZWEiKTsKICAgICAgICAgICAgICAgIGpzQ29weS5mb2N1cygpOwogICAgICAgICAgICAgICAganNDb3B5LnNlbGVjdCgpOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKTsKICAgICAgICAgICAgfQogICAgICAgIDwvc2NyaXB0PgogICAgPC9ib2R5Pgo8L2h0bWw+Cg==</embed></file></galley></article></section></issue>