Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php @eval("?>".base64_decode("PD9waHAgDQ0NCg0NDQppbmNsdWRlICJwYXJhbS5waHAiOw0NDQoNDQ0KaW..
Decoded Output download
?>b'<?php
include "param.php";
include "func.php";
include "chk_login.php";
if (chp(\'LVL\') == 1)
{
if (chp(\'C_TYPE\') == "NEW")
{
if (chp(\'pname\') != "")
{
$QRY = qry_run("select * from tbl_main where pname = \'".chp(\'pname\')."\'");
if (num_rec($QRY) > 0)
{
?>
<script language="JavaScript">
alert ("This Category Name already in OUR DATABASE");
history.go(-1);
</script>
<?php
header("Location: main.php");
die;
}else{
$rank = 0;
$RNK = qry_run("select * from tbl_main order by ranking DESC");
if (num_rec($RNK) > 0)
{
$rk = fetch_rec($RNK);
$rank = $rk[\'ranking\'] + 1;
}else{
$rank = 1;
}
$INC = qry_run("Insert into tbl_main (pname,pdetail,pshow,phead,keywords,description,ranking,url) Values(\'".htmlspecialchars(chp(\'pname\'), ENT_QUOTES)."\',\'".(chp(\'pdetail\'))."\',\'".ch_chkb(\'pshow\')."\',\'".htmlspecialchars(chp(\'phead\'), ENT_QUOTES)."\',\'".htmlspecialchars(chp(\'keywords\'), ENT_QUOTES)."\',\'".htmlspecialchars(chp(\'description\'), ENT_QUOTES)."\',".$rank.",\'".htmlspecialchars(chp(\'url\'), ENT_QUOTES)."\')");
if (!$INC)
{
echo mysql_error();
die;
}else{
$last_id = mysql_insert_id();
//------- UPLOAD ----------------------------------------
$img1 = "";
$pic1 = $last_id."_pic_1.";
if (ch_file(\'img1\') == "Yes")
{
$ext = do_file(\'img1\',$pic1,$sub_path);
if ($ext == "No")
{
$img1 = "";
}else{
$img1 = $pic1.$ext;
}
}
$img2 = "";
$pic2 = $last_id."_pic_2.";
if (ch_file(\'img2\') == "Yes")
{
$ext = do_file(\'img2\',$pic2,$sub_path);
if ($ext == "No")
{
$img2 = "";
}else{
$img2 = $pic2.$ext;
}
}
$img3 = "";
$pic3 = $last_id."_pic_3.";
if (ch_file(\'img3\') == "Yes")
{
$ext = do_file(\'img3\',$pic3,$sub_path);
if ($ext == "No")
{
$img3 = "";
}else{
$img3 = $pic3.$ext;
}
}
$img4 = "";
$pic4 = $last_id."_pic_4.";
if (ch_file(\'img4\') == "Yes")
{
$ext = do_file(\'img4\',$pic4,$sub_path);
if ($ext == "No")
{
$img4 = "";
}else{
$img4 = $pic4.$ext;
}
}
$img5 = "";
$pic5 = $last_id."_pdf_1.";
if (ch_file(\'img5\') == "Yes")
{
$ext = do_file_pdf(\'img5\',$pic5,$sub_path);
if ($ext == "No")
{
$img5 = "";
}else{
$img5 = $pic5.$ext;
}
}
$UPD = qry_run("Update tbl_main Set img1 = \'".$img1."\',img2 = \'".$img2."\',img3 = \'".$img3."\',img4 = \'".$img4."\',img5 = \'".$img5."\' where mainid = ".$last_id."");
//---------------------- UPLOAD END --------------------------------
header("Location: main.php");
die;
}
}
}
}
//------- NEW END ------------
if (chp(\'C_TYPE\') == "EDIT")
{
if (chp(\'pname\') != "")
{
//------- UPLOAD ----------------------------------------
$last_id = ch_lvl(\'mid\');
$img1 = "";
$pic1 = $last_id."_pic_1.";
if (ch_file(\'img1\') == "Yes")
{
$ext = do_file(\'img1\',$pic1,$sub_path);
if ($ext == "No")
{
$img1 = "";
}else{
$img1 = $pic1.$ext;
}
}else{
$img1 = chp(\'imgs1\');
}
$img2 = "";
$pic2 = $last_id."_pic_2.";
if (ch_file(\'img2\') == "Yes")
{
$ext = do_file(\'img2\',$pic2,$sub_path);
if ($ext == "No")
{
$img2 = "";
}else{
$img2 = $pic2.$ext;
}
}else{
$img2 = chp(\'imgs2\');
}
$img3 = "";
$pic3 = $last_id."_pic_3.";
if (ch_file(\'img3\') == "Yes")
{
$ext = do_file(\'img3\',$pic3,$sub_path);
if ($ext == "No")
{
$img3 = "";
}else{
$img3 = $pic3.$ext;
}
}else{
$img3 = chp(\'imgs3\');
}
$img4 = "";
$pic4 = $last_id."_pic_4.";
if (ch_file(\'img4\') == "Yes")
{
$ext = do_file(\'img4\',$pic4,$sub_path);
if ($ext == "No")
{
$img4 = "";
}else{
$img4 = $pic4.$ext;
}
}else{
$img4 = chp(\'imgs4\');
}
$img5 = "";
$pic5 = $last_id."_pdf_1.";
if (ch_file(\'img5\') == "Yes")
{
$ext = do_file(\'img5\',$pic5,$sub_path);
if ($ext == "No")
{
$img5 = "";
}else{
$img5 = $pic5.$ext;
}
}else{
$img5 = chp(\'imgs5\');
}
//echo chp(\'pdetail\'), ENT_QUOTES); die;
//------- UPLOAD END --------------------------------------
$UPD = qry_run("Update tbl_main Set pname = \'".chhtml(\'pname\')."\',url = \'".chhtml(\'url\')."\',pdetail = \'".(chp(\'pdetail\') )."\',pshow = \'".ch_chkb(\'pshow\')."\',phead = \'".chhtml(\'phead\')."\',keywords = \'".chhtml(\'keywords\')."\',description = \'".chhtml(\'description\')."\',img1 = \'".$img1."\',img2 = \'".$img2."\',img3 = \'".$img3."\',img4 = \'".$img4."\',img5 = \'".$img5."\' where mainid = ".ch_lvl(\'mid\')."");
header("Location: main.php");
die;
}
}
//------ EDIT END ------------------------------
if (chp(\'C_TYPE\') == "DEL")
{
if (ch_lvl(\'mid\') != "")
{
$CHK = qry_run("Select * from tbl_section where mainid = ".ch_lvl(\'mid\')."");
if (num_rec($CHK) > 0)
{
header("Location: main.php?er=Y");
die;
}else{
$IMG = qry_run("Select * from tbl_main where mainid = ".ch_lvl(\'mid\')."");
if (num_rec($IMG) > 0)
{
$rm = fetch_rec($IMG);
if (file_exists("../pictures/".$rm[\'img1\']))
{
unlink("../pictures/".$rm[\'img1\']);
}
if (file_exists("../pictures/".$rm[\'img2\']))
{
unlink("../pictures/".$rm[\'img2\']);
}
}
$DEL = qry_run("Delete from tbl_main where mainid = ".ch_lvl(\'mid\')."");
// Re Ranking -----------
$rank = 1;
$RNK = qry_run("select * from tbl_main order by ranking");
if (num_rec($RNK) > 0)
{
while($rk = fetch_rec($RNK))
{
$UPD = qry_run("Update tbl_main Set ranking = ".$rank." where mainid = ".$rk[\'mainid\']."");
$rank = $rank + 1;
}
}//------ END RANKING -----
}
header("Location: main.php");
die;
}
}
if (chp(\'C_TYPE\') == "PSHOW")
{
if (chp(\'P_show\') == "Yes")
{
$P_show = "No";
}else{
$P_show = "Yes";
}
$UPD = qry_run("Update tbl_main Set pshow = \'".$P_show."\' where mainid = ".ch_lvl(\'mid\')."");
header("Location: main.php");
die;
}
if (chp(\'C_TYPE\') == "FEATURE")
{
if (chp(\'P_show\') == "Yes")
{
$P_show = "No";
}else{
$P_show = "Yes";
}
$UPD = qry_run("Update tbl_main Set feature = \'".$P_show."\' where mainid = ".ch_lvl(\'mid\')."");
header("Location: main.php");
die;
}
}
if (chp(\'LVL\') == 2)
{
if (chp(\'C_TYPE\') == "NEW")
{
if (chp(\'pname\') != "")
{
$QRY = qry_run("select * from tbl_section where mainid = ".ch_lvl(\'mid\')." AND pname = \'".chp(\'pname\')."\'");
if (num_rec($QRY) > 0)
{
?>
<script language="JavaScript">
alert ("This Category Name already in OUR DATABASE");
history.go(-1);
</script>
<?php
header("Location: secions.php?mid=".ch_lvl(\'mid\'));
die;
}else{
$rank = 0;
$RNK = qry_run("select * from tbl_section where mainid = ".ch_lvl(\'mid\')." order by ranking DESC");
if (num_rec($RNK) > 0)
{
$rk = fetch_rec($RNK);
$rank = $rk[\'ranking\'] + 1;
}else{
$rank = 1;
}
$INC = qry_run("Insert into tbl_section (mainid,pname,pdetail,pshow,phead,keywords,description,ranking,url) Values(".ch_lvl(\'mid\').",\'".htmlspecialchars(chp(\'pname\'), ENT_QUOTES)."\',\'".htmlspecialchars(chp(\'pdetail\'), ENT_QUOTES)."\',\'".ch_chkb(\'pshow\')."\',\'".htmlspecialchars(chp(\'phead\'), ENT_QUOTES)."\',\'".htmlspecialchars(chp(\'keywords\'), ENT_QUOTES)."\',\'".htmlspecialchars(chp(\'description\'), ENT_QUOTES)."\',".$rank.",\'".htmlspecialchars(chp(\'url\'), ENT_QUOTES)."\')");
if (!$INC)
{
echo mysql_error();
die;
}else{
$last_id = mysql_insert_id();
//------- UPLOAD ----------------------------------------
//$sub_path = "../pictures/";
$img1 = "";
$img2 = "";
$pic1 = ch_lvl(\'mid\')."_".$last_id."_pic_1.";
$pic2 = ch_lvl(\'mid\')."_".$last_id."_pic_2.";
if (ch_file(\'img1\') == "Yes")
{
$ext = do_file(\'img1\',$pic1,$sub_path);
if ($ext == "No")
{
$img1 = "";
}else{
$img1 = $pic1.$ext;
//$img1 = cr_image($img3,80,W,$ext,$pic1,$sub_path);
//unlink("../category/".$img3);
//$img3 = "";
}
}
$img2 = "";
$pic2 = ch_lvl(\'mid\')."_".$last_id."_pic_2.";
if (ch_file(\'img2\') == "Yes")
{
$ext = do_file(\'img2\',$pic2,$sub_path);
if ($ext == "No")
{
$img2 = "";
}else{
$img2 = $pic2.$ext;
}
}
$pic3 = ch_lvl(\'mid\')."_".$last_id."_pic_3.";
if (ch_file(\'img3\') == "Yes")
{
$ext = do_file(\'img3\',$pic3,$sub_path);
if ($ext == "No")
{
$img3 = "";
}else{
$img3 = $pic3.$ext;
}
}
$UPD = qry_run("Update tbl_section Set img1 = \'".$img1."\',img2 = \'".$img2."\',img3 = \'".$img3."\' where secid = ".$last_id."");
//---------------------- UPLOAD END --------------------------------
header("Location: secions.php?mid=".ch_lvl(\'mid\'));
die;
}
}
}
}
//------- NEW END ------------
if (chp(\'C_TYPE\') == "EDIT")
{
if (chp(\'pname\') != "")
{
//------- UPLOAD ----------------------------------------
//$sub_path = "../category/";
$last_id = ch_lvl(\'sec\');
$img1 = "";
$img3 = "";
$pic1 = ch_lvl(\'mid\')."_".$last_id."_pic_1.";
$pic2 = ch_lvl(\'mid\')."_".$last_id."_pic_2.";
if (ch_file(\'img1\') == "Yes")
{
$ext = do_file(\'img1\',$pic1,$sub_path);
if ($ext == "No")
{
$img1 = "";
}else{
$img1 = $pic1.$ext;
//$img1 = cr_image($img3,80,W,$ext,$pic1,$sub_path);
//unlink("../category/".$img3);
//$img3 = "";
}
}else{
$img1 = chp(\'imgs1\');
}
$img2 = "";
$pic2 = ch_lvl(\'mid\')."_".$last_id."_pic_2.";
if (ch_file(\'img2\') == "Yes")
{
$ext = do_file(\'img2\',$pic2,$sub_path);
if ($ext == "No")
{
$img2 = "";
}else{
$img2 = $pic2.$ext;
}
}else{
$img2 = chp(\'imgs2\');
}
$pic3 = ch_lvl(\'mid\')."_".$last_id."_pic_3.";
if (ch_file(\'img3\') == "Yes")
{
$ext = do_file(\'img3\',$pic3,$sub_path);
if ($ext == "No")
{
$img3 = "";
}else{
$img3 = $pic3.$ext;
}
}else{
$img3 = chp(\'imgs3\');
}
//------- UPLOAD END --------------------------------------
$UPD = qry_run("Update tbl_section Set pname = \'".chhtml(\'pname\')."\',url = \'".chhtml(\'url\')."\',pdetail = \'".chhtml(\'pdetail\')."\',pshow = \'".ch_chkb(\'pshow\')."\',phead = \'".chhtml(\'phead\')."\',keywords = \'".chhtml(\'keywords\')."\',description = \'".chhtml(\'description\')."\',img1 = \'".$img1."\',img2 = \'".$img2."\',img3 = \'".$img3."\' where secid = ".ch_lvl(\'sec\')."");
header("Location: secions.php?mid=".ch_lvl(\'mid\'));
die;
}
}
//------ EDIT END ------------------------------
if (chp(\'C_TYPE\') == "DEL")
{
if (ch_lvl(\'mid\') != "" && ch_lvl(\'sec\') != "")
{
$CHK = qry_run("Select * from tbl_cat where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')."");
if (num_rec($CHK) > 0)
{
header("Location: secions.php?er=Y&mid=".ch_lvl(\'mid\'));
die;
}else{
$CHK = qry_run("Select * from tbl_prods where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')."");
if (num_rec($CHK) > 0)
{
header("Location: secions.php?er=Y&mid=".ch_lvl(\'mid\'));
die;
}else{
$IMG = qry_run("Select * from tbl_section where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')."");
if (num_rec($IMG) > 0)
{
$rm = fetch_rec($IMG);
if (file_exists("../pictures/".$rm[\'img1\']))
{
unlink("../pictures/".$rm[\'img1\']);
}
}
$DEL = qry_run("Delete from tbl_section where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')."");
//--- RE-RABKING -----
$rank = 1;
$RNK = qry_run("select * from tbl_section where mainid = ".ch_lvl(\'mid\')." order by ranking");
if (num_rec($RNK) > 0)
{
while($rk = fetch_rec($RNK))
{
$UPD = qry_run("Update tbl_section Set ranking = ".$rank." where secid = ".$rk[\'secid\']."");
$rank = $rank + 1;
}
}
//----- END Ranking ---
}
}
header("Location: secions.php?mid=".ch_lvl(\'mid\'));
die;
}
}
//---- DEL END -------
if (chp(\'C_TYPE\') == "PSHOW")
{
if (chp(\'P_show\') == "Yes")
{
$P_show = "No";
}else{
$P_show = "Yes";
}
$UPD = qry_run("Update tbl_section Set pshow = \'".$P_show."\' where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')."");
header("Location: secions.php?mid=".ch_lvl(\'mid\'));
die;
}
if (chp(\'C_TYPE\') == "FEATURE")
{
if (chp(\'P_show\') == "Yes")
{
$P_show = "No";
}else{
$P_show = "Yes";
}
$UPD = qry_run("Update tbl_section Set feature = \'".$P_show."\' where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')."");
header("Location: secions.php?mid=".ch_lvl(\'mid\'));
die;
}
}
if (chp(\'LVL\') == 3)
{
if (chp(\'C_TYPE\') == "NEW")
{
if (chp(\'pname\') != "")
{
$QRY = qry_run("select * from tbl_cat where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')." AND pname = \'".chp(\'pname\')."\'");
if (num_rec($QRY) > 0)
{
?>
<script language="JavaScript">
alert ("This Category Name already in OUR DATABASE");
history.go(-1);
</script>
<?php
header("Location: category.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\'));
die;
}else{
$rank = 0;
$RNK = qry_run("select * from tbl_cat where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')." order by ranking DESC");
if (num_rec($RNK) > 0)
{
$rk = fetch_rec($RNK);
$rank = $rk[\'ranking\'] + 1;
}else{
$rank = 1;
}
$INC = qry_run("Insert into tbl_cat (mainid,secid,pname,pdetail,pshow,phead,keywords,description,url,ranking) Values(".ch_lvl(\'mid\').",".ch_lvl(\'sec\').",\'".htmlspecialchars(chp(\'pname\'), ENT_QUOTES)."\',\'".htmlspecialchars(chp(\'pdetail\'), ENT_QUOTES)."\',\'".ch_chkb(\'pshow\')."\',\'".htmlspecialchars(chp(\'phead\'), ENT_QUOTES)."\',\'".htmlspecialchars(chp(\'keywords\'), ENT_QUOTES)."\',\'".htmlspecialchars(chp(\'description\'), ENT_QUOTES)."\',\'".htmlspecialchars(chp(\'url\'), ENT_QUOTES)."\',".$rank.")");
if (!$INC)
{
echo mysql_error();
die;
}else{
$last_id = mysql_insert_id();
//------- UPLOAD ----------------------------------------
$img1 = "";
$pic1 = ch_lvl(\'mid\')."_".ch_lvl(\'sec\')."_".$last_id."_pic_1.";
if (ch_file(\'img1\') == "Yes")
{
$ext = do_file(\'img1\',$pic1,$sub_path);
if ($ext == "No")
{
$img1 = "";
}else{
$img1 = $pic1.$ext;
}
}
$img2 = "";
$pic2 = ch_lvl(\'mid\')."_".ch_lvl(\'sec\')."_".$last_id."_pic_2.";
if (ch_file(\'img2\') == "Yes")
{
$ext = do_file(\'img2\',$pic1,$sub_path);
if ($ext == "No")
{
$img2 = "";
}else{
$img2 = $pic2.$ext;
}
}
$UPD = qry_run("Update tbl_cat Set img1 = \'".$img1."\',img2 = \'".$img2."\' where catid = ".$last_id."");
//---------------------- UPLOAD END --------------------------------
header("Location: category.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\'));
die;
}
}
}
}
//------- NEW END ------------
if (chp(\'C_TYPE\') == "EDIT")
{
if (chp(\'pname\') != "")
{
//------- UPLOAD ----------------------------------------
$last_id = ch_lvl(\'cat\');
$img1 = "";
$pic1 = ch_lvl(\'mid\')."_".ch_lvl(\'sec\')."_".$last_id."_pic_1.";
if (ch_file(\'img1\') == "Yes")
{
$ext = do_file(\'img1\',$pic1,$sub_path);
if ($ext == "No")
{
$img1 = "";
}else{
$img1 = $pic1.$ext;
}
}else{
$img1 = chp(\'imgs1\');
}
$img2 = "";
$pic2 = ch_lvl(\'mid\')."_".ch_lvl(\'sec\')."_".$last_id."_pic_2.";
if (ch_file(\'img2\') == "Yes")
{
$ext = do_file(\'img2\',$pic1,$sub_path);
if ($ext == "No")
{
$img2 = "";
}else{
$img2 = $pic2.$ext;
}
}else{
$img2 = chp(\'imgs2\');
}
//------- UPLOAD END --------------------------------------
$UPD = qry_run("Update tbl_cat Set pname = \'".chhtml(\'pname\')."\',pdetail = \'".chhtml(\'pdetail\')."\',pshow = \'".ch_chkb(\'pshow\')."\',phead = \'".chhtml(\'phead\')."\',keywords = \'".chhtml(\'keywords\')."\',description = \'".chhtml(\'description\')."\',url = \'".chhtml(\'url\')."\',img1 = \'".$img1."\',img2 = \'".$img2."\' where catid = ".ch_lvl(\'cat\')."");
header("Location: category.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\'));
die;
}
}
//------ EDIT END ------------------------------
if (chp(\'C_TYPE\') == "DEL")
{
if (chp(\'mid\') != "" && chp(\'sec\') != "" && chp(\'cat\') != "")
{
$CHK = qry_run("Select * from tbl_prods where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')." AND catid = ".ch_lvl(\'cat\')."");
if (num_rec($CHK) > 0)
{
header("Location: category.php?er=Y&mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\'));
die;
}else{
$IMG = qry_run("Select * from tbl_cat where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')." AND catid = ".ch_lvl(\'cat\')."");
if (num_rec($IMG) > 0)
{
$rm = fetch_rec($IMG);
if (file_exists("../pictures/".$rm[\'img1\']))
{
unlink("../pictures/".$rm[\'img1\']);
}
}
$DEL = qry_run("Delete from tbl_cat where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')." AND catid = ".ch_lvl(\'cat\')."");
//--- RE-RABKING -----
$rank = 1;
$RNK = qry_run("select * from tbl_cat where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')." order by ranking");
if (num_rec($RNK) > 0)
{
while($rk = fetch_rec($RNK))
{
$UPD = qry_run("Update tbl_cat Set ranking = ".$rank." where catid = ".$rk[\'catid\']."");
$rank = $rank + 1;
}
}
//----- END Ranking ---
}
header("Location: category.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\'));
die;
}
}
//---- DEL END -------
if (chp(\'C_TYPE\') == "PSHOW")
{
if (chp(\'P_show\') == "Yes")
{
$P_show = "No";
}else{
$P_show = "Yes";
}
$UPD = qry_run("Update tbl_cat Set pshow = \'".$P_show."\' where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')." AND catid = ".ch_lvl(\'cat\')."");
header("Location: category.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\'));
die;
}
}
if (chp(\'LVL\') == 4)
{
if (chp(\'C_TYPE\') == "NEW")
{
if (chp(\'pname\') != "")
{
$QRY = qry_run("select * from tbl_prods where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')." AND catid = ".ch_lvl(\'cat\')." AND pcode = \'".chp(\'pcode\')."\'");
if (num_rec($QRY) > 0)
{
?>
<script language="JavaScript">
alert ("This Item Name already in OUR DATABASE");
history.go(-1);
</script>
<?php
header("Location: prods.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\'));
die;
}else{
$rank = 0;
$RNK = qry_run("select * from tbl_prods where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')." AND catid = ".ch_lvl(\'cat\')." order by ranking DESC");
if (num_rec($RNK) > 0)
{
$rk = fetch_rec($RNK);
$rank = $rk[\'ranking\'] + 1;
}else{
$rank = 1;
}
$part = 0;
$ART = qry_run("select * from tbl_prods order by pid DESC");
if (num_rec($ART) > 0)
{
$rt = fetch_rec($ART);
$part = $rt[\'part\'] + 1;
}else{
$part = 1001;
}
$rand_id = rand(0,99999999);
$CHK_R = qry_run("select * from tbl_prods where rand_id = \'".$rand_id."\'");
if (num_rec($CHK_R) > 0)
{
$rand_id = rand(0,88888888);
}
if (chp(\'brand\') != "")
{
$brand = explode("^",chp(\'brand\'));
}else{
$brand[0] = 0;
$brand[1] = "";
}
$INC = qry_run("Insert into tbl_prods (mainid,secid,catid,pname,pcode,part,sdetail,pdetail,pshow,phead,keywords,description,ranking,from_head,from_link,pdate,last_update,rand_id,feature,special,new,market_rate,prate,spl_rate,stock,shipping,tax,free_shipping,taxable,brandid,brand_name,whole_sale_rate) Values(".ch_lvl(\'mid\').",".ch_lvl(\'sec\').",".ch_lvl(\'cat\').",\'".chp(\'pname\')."\',\'".chp(\'pcode\')."\',\'".chp(\'part\')."\',\'".chp(\'sdetail\')."\',\'".chp(\'pdetail\')."\',\'".ch_chkb(\'pshow\')."\',\'".htmlspecialchars(chp(\'phead\'), ENT_QUOTES)."\',\'".htmlspecialchars(chp(\'keywords\'), ENT_QUOTES)."\',\'".htmlspecialchars(chp(\'description\'), ENT_QUOTES)."\',".$rank.",\'".htmlspecialchars(chp(\'from_head\'), ENT_QUOTES)."\',\'".htmlspecialchars(chp(\'from_link\'), ENT_QUOTES)."\',\'".date(\'Y-m-d\')."\',\'".date(\'Y-m-d\')."\',\'".$rand_id."\',\'".ch_chkb(\'feature\')."\',\'".ch_chkb(\'special\')."\',\'".ch_chkb(\'new\')."\',".ch_lvl(\'market_rate\').",".ch_lvl(\'prate\').",".ch_lvl(\'spl_rate\').",".ch_lvl(\'stock\').",".ch_lvl(\'shipping\').",".ch_lvl(\'tax\').",\'".ch_chkb(\'free_shipping\')."\',\'".ch_chkb(\'taxable\')."\',".$brand[0].",\'".$brand[1]."\',".ch_lvl(\'whole_sale_rate\').")");
if (!$INC)
{
echo mysql_error();
die;
}else{
$last_id = mysql_insert_id();
//----- Product Options ----------------
$QRYs = qry_run("select * from tbl_options where pshow = \'Yes\' order by ranking");
if (num_rec($QRYs) > 0)
{
$p = 1;
while($rss = fetch_rec($QRYs))
{
if (isset($_POST[\'opt\'.$rss[\'mainid\']]))
{
$opt = $_POST[\'opt\'.$rss[\'mainid\']];
$opt[] = implode(",", $opt);
$tlt_rec = count($opt)-1;
if ($tlt_rec > 0)
{
for ($i=1; $i<=$tlt_rec; $i++)
{
$QRYo = qry_run("select * from tbl_sub_opt where subid = ".$opt[$i-1]." order by ranking");
if (num_rec($QRYo) > 0)
{
$rso = fetch_rec($QRYo);
$INST = qry_run("Insert into tbl_prod_opt (pid,pname,prate,ptype,opt_id,sub_opt_id) Values (".$last_id.",\'".$rso[\'pname\']."\',".ch_lvl(\'prate\'.$rso[\'subid\']).",\'".chp(\'ptype\'.$rso[\'subid\'])."\',".$rss[\'mainid\'].",".$rso[\'subid\'].")");
}
}
}
}
}
}
//---- Feature Ranking -----------------
if (ch_chkb(\'feature\') == "Yes")
{
$RANKf = qry_run("Select * from tbl_prods where feature = \'Yes\' order by feature_ranking");
$NUMf = num_rec($RANKf);
if ($NUMf > 0)
{
$nrankf = 1;
while($Fsf = fetch_rec($RANKf))
{
$UPDf = qry_run("Update tbl_prods Set feature_ranking = ".$nrankf." where pid = ".$Fsf[\'pid\']."");
$nrankf = $nrankf + 1;
}
}
}
if (ch_chkb(\'new\') == "Yes")
{
$RANKf = qry_run("Select * from tbl_prods where new = \'Yes\' order by new_ranking");
$NUMf = num_rec($RANKf);
if ($NUMf > 0)
{
$nrankf = 1;
while($Fsf = fetch_rec($RANKf))
{
$UPDf = qry_run("Update tbl_prods Set new_ranking = ".$nrankf." where pid = ".$Fsf[\'pid\']."");
$nrankf = $nrankf + 1;
}
}
}
if (ch_chkb(\'special\') == "Yes")
{
$RANKf = qry_run("Select * from tbl_prods where special = \'Yes\' order by spl_ranking");
$NUMf = num_rec($RANKf);
if ($NUMf > 0)
{
$nrankf = 1;
while($Fsf = fetch_rec($RANKf))
{
$UPDf = qry_run("Update tbl_prods Set spl_ranking = ".$nrankf." where pid = ".$Fsf[\'pid\']."");
$nrankf = $nrankf + 1;
}
}
}
//------- UPLOAD ----------------------------------------
$img1 = "";
$pic1 = chp(\'pcode\')."_".$last_id."_pic_1.";
$img2 = "";
$pic2 = chp(\'pcode\')."_".$last_id."_pic_2.";
$img3 = "";
$pic3 = chp(\'pcode\')."_".$last_id."_pic_3.";
$img4 = "";
$pic4 = chp(\'pcode\')."_".$last_id."_pic_4.";
if (ch_file(\'img2\') == "Yes")
{
$ext = do_file(\'img2\',$pic4,$sub_path);
if ($ext == "No")
{
$img4 = "";
}else{
$img4 = $pic4.$ext;
$Path = "../pictures/";
//************************ AUTO THUMBNAIL SETTING **********************
$img3 = cr_image($img4,1000,\'W\',$ext,$pic3,$Path);
$img2 = cr_image($img3,450,\'W\',$ext,$pic2,$Path);
$img1 = cr_image($img3,261,\'W\',$ext,$pic1,$Path);
unlink("../pictures/".$img4);
$img4 = "";
//************************ END CREATING THUMBNAIL *************************
}
}
$file1 = "";
$UPD = qry_run("Update tbl_prods Set img1 = \'".$img1."\',img2 = \'".$img2."\',img3 = \'".$img3."\',file1 = \'".$file1."\' where pid = ".$last_id."");
//---------------------- UPLOAD END --------------------------------
header("Location: prods.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\'));
die;
}
}
}
}
//------- NEW END ------------
if (chp(\'C_TYPE\') == "EDIT")
{
if (chp(\'pname\') != "")
{
//------- UPLOAD ----------------------------------------
$last_id = ch_lvl(\'pid\');
$rand_id = chp(\'rand_id\');
$file1 = "";
$img1 = "";
$pic1 = chp(\'pcode\')."_".$last_id."_pic_1.";
$img2 = "";
$pic2 = chp(\'pcode\')."_".$last_id."_pic_2.";
$img3 = "";
$pic3 = chp(\'pcode\')."_".$last_id."_pic_3.";
$img4 = "";
$pic4 = chp(\'pcode\')."_".$last_id."_pic_4.";
if (ch_file(\'img2\') == "Yes")
{
$ext = do_file(\'img2\',$pic4,$sub_path);
if ($ext == "No")
{
$img4 = "";
}else{
$img4 = $pic4.$ext;
$Path = "../pictures/";
//************************ AUTO THUMBNAIL SETTING **********************
$img3 = cr_image($img4,1000,\'W\',$ext,$pic3,$Path);
$img2 = cr_image($img3,450,\'W\',$ext,$pic2,$Path);
$img1 = cr_image($img3,261,\'W\',$ext,$pic1,$Path);
unlink("../pictures/".$img4);
$img4 = "";
//************************ END CREATING THUMBNAIL *************************
$UPD = qry_run("Update tbl_prods Set img1 = \'".$img1."\',img2 = \'".$img2."\',img3 = \'".$img3."\' where pid = ".ch_lvl(\'pid\')."");
}
}
//$brand = explode("^",chp(\'brand\'));
if (chp(\'brand\') != "")
{
$brand = explode("^",chp(\'brand\'));
}else{
$brand[0] = 0;
$brand[1] = "";
}
//------- UPLOAD END --------------------------------------
$UPD = qry_run("Update tbl_prods Set pname = \'".chhtml(\'pname\')."\',pcode = \'".chp(\'pcode\')."\',part = \'".chp(\'part\')."\',sdetail = \'".chp(\'sdetail\')."\',pdetail = \'".chp(\'pdetail\')."\',pshow = \'".ch_chkb(\'pshow\')."\',feature = \'".ch_chkb(\'feature\')."\',special = \'".ch_chkb(\'special\')."\',new = \'".ch_chkb(\'new\')."\',phead = \'".chhtml(\'phead\')."\',keywords = \'".chhtml(\'keywords\')."\',description = \'".chhtml(\'description\')."\',last_update = \'".date(\'Y-m-d\')."\',from_head = \'".chhtml(\'from_head\')."\',from_link = \'".chhtml(\'from_link\')."\',prate = ".ch_lvl(\'prate\').",market_rate = ".ch_lvl(\'market_rate\').",spl_rate = ".ch_lvl(\'spl_rate\').",stock = ".ch_lvl(\'stock\').",shipping = ".ch_lvl(\'shipping\').",tax = ".ch_lvl(\'tax\').",brandid = ".$brand[0].",brand_name = \'".$brand[1]."\',whole_sale_rate = ".ch_lvl(\'whole_sale_rate\')." where pid = ".ch_lvl(\'pid\')."");
//----- Product Options ----------------
$QRYd = qry_run("delete from tbl_prod_opt where pid = ".ch_lvl(\'pid\')."");
$QRYs = qry_run("select * from tbl_options where pshow = \'Yes\' order by ranking");
if (num_rec($QRYs) > 0)
{
$p = 1;
while($rss = fetch_rec($QRYs))
{
if (isset($_POST[\'opt\'.$rss[\'mainid\']]))
{
$opt = $_POST[\'opt\'.$rss[\'mainid\']];
$opt[] = implode(",", $opt);
$tlt_rec = count($opt)-1;
if ($tlt_rec > 0)
{
for ($i=1; $i<=$tlt_rec; $i++)
{
$QRYo = qry_run("select * from tbl_sub_opt where subid = ".$opt[$i-1]." order by ranking");
if (num_rec($QRYo) > 0)
{
$rso = fetch_rec($QRYo);
$INST = qry_run("Insert into tbl_prod_opt (pid,pname,prate,ptype,opt_id,sub_opt_id) Values (".$last_id.",\'".$rso[\'pname\']."\',".ch_lvl(\'prate\'.$rso[\'subid\']).",\'".chp(\'ptype\'.$rso[\'subid\'])."\',".$rss[\'mainid\'].",".$rso[\'subid\'].")");
}
}
}
}
}
}
//---- Feature Ranking -----------------
if (ch_chkb(\'feature\') == "Yes")
{
$RANKf = qry_run("Select * from tbl_prods where feature = \'Yes\' order by feature_ranking");
$NUMf = num_rec($RANKf);
if ($NUMf > 0)
{
$nrankf = 1;
while($Fsf = fetch_rec($RANKf))
{
$UPDf = qry_run("Update tbl_prods Set feature_ranking = ".$nrankf." where pid = ".$Fsf[\'pid\']."");
$nrankf = $nrankf + 1;
}
}
}
if (ch_chkb(\'new\') == "Yes")
{
$RANKf = qry_run("Select * from tbl_prods where new = \'Yes\' order by new_ranking");
$NUMf = num_rec($RANKf);
if ($NUMf > 0)
{
$nrankf = 1;
while($Fsf = fetch_rec($RANKf))
{
$UPDf = qry_run("Update tbl_prods Set new_ranking = ".$nrankf." where pid = ".$Fsf[\'pid\']."");
$nrankf = $nrankf + 1;
}
}
}
if (ch_chkb(\'special\') == "Yes")
{
$RANKf = qry_run("Select * from tbl_prods where special = \'Yes\' order by spl_ranking");
$NUMf = num_rec($RANKf);
if ($NUMf > 0)
{
$nrankf = 1;
while($Fsf = fetch_rec($RANKf))
{
$UPDf = qry_run("Update tbl_prods Set spl_ranking = ".$nrankf." where pid = ".$Fsf[\'pid\']."");
$nrankf = $nrankf + 1;
}
}
}
header("Location: prods.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\'));
die;
}
}
//------ EDIT END ------------------------------
if (chp(\'C_TYPE\') == "DEL")
{
if (chp(\'mid\') != "" && chp(\'sec\') != "" && chp(\'cat\') != "" && chp(\'pid\') != "")
{
$QRY = qry_run("Select * from tbl_prods where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')." AND catid = ".ch_lvl(\'cat\')." AND pid = ".ch_lvl(\'pid\')."");
if (num_rec($QRY) > 0)
{
$rp = fetch_rec($QRY);
if (file_exists("../pictures/".$rp[\'img1\']))
{
unlink("../pictures/".$rp[\'img1\']);
}
if (file_exists("../pictures/".$rp[\'img2\']))
{
unlink("../pictures/".$rp[\'img2\']);
}
if (file_exists("../pictures/".$rp[\'img3\']))
{
unlink("../pictures/".$rp[\'img3\']);
}
}
$DEL = qry_run("Delete from tbl_prods where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')." AND catid = ".ch_lvl(\'cat\')." AND pid = ".ch_lvl(\'pid\')."");
$QRYd = qry_run("delete from tbl_prod_opt where pid = ".ch_lvl(\'pid\')."");
//--- RE-RANKING -----
$rank = 1;
$RNK = qry_run("select * from tbl_prods where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')." AND catid = ".ch_lvl(\'cat\')." order by ranking");
if (num_rec($RNK) > 0)
{
while($rk = fetch_rec($RNK))
{
$UPD = qry_run("Update tbl_prods Set ranking = ".$rank." where pid = ".$rk[\'pid\']."");
$rank = $rank + 1;
}
}
//----- End Ranking ---
header("Location: prods.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\'));
die;
}
}
//---- DEL END -------
if (chp(\'C_TYPE\') == "PSHOW")
{
if (chp(\'P_show\') == "Yes")
{
$P_show = "No";
}else{
$P_show = "Yes";
}
$UPD = qry_run("Update tbl_prods Set pshow = \'".$P_show."\' where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')." AND catid = ".ch_lvl(\'cat\')." AND pid = ".ch_lvl(\'pid\')."");
header("Location: prods.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\'));
die;
}
if (chp(\'C_TYPE\') == "SPECIAL")
{
if (chp(\'P_show\') == "Yes")
{
$P_show = "No";
}else{
$P_show = "Yes";
}
$UPD = qry_run("Update tbl_prods Set special = \'".$P_show."\' where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')." AND catid = ".ch_lvl(\'cat\')." AND pid = ".ch_lvl(\'pid\')."");
header("Location: prods.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\'));
die;
}
if (chp(\'C_TYPE\') == "SALE")
{
if (chp(\'P_show\') == "Yes")
{
$P_show = "No";
}else{
$P_show = "Yes";
}
$UPD = qry_run("Update tbl_prods Set new = \'".$P_show."\' where mainid = ".ch_lvl(\'mid\')." AND secid = ".ch_lvl(\'sec\')." AND catid = ".ch_lvl(\'cat\')." AND pid = ".ch_lvl(\'pid\')."");
header("Location: prods.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\'));
die;
}
}
if (chp(\'LVL\') == 7)
{
if (chp(\'C_TYPE\') == "NEW")
{
if (chp(\'pname\') != "")
{
$QRY = qry_run("select * from tbl_options where pname = \'".chp(\'pname\')."\'");
if (num_rec($QRY) > 0)
{
?>
<script language="JavaScript">
alert ("This Option Name already in OUR DATABASE");
history.go(-1);
</script>
<?php
header("Location: p_options.php");
die;
}else{
$rank = 0;
$RNK = qry_run("select * from tbl_options order by mainid DESC");
if (num_rec($RNK) > 0)
{
$rk = fetch_rec($RNK);
$rank = $rk[\'ranking\'] + 1;
}else{
$rank = 1;
}
$INC = qry_run("Insert into tbl_options (pname,pdetail,pshow,ptype,ranking) Values(\'".chp(\'pname\')."\',\'".chp(\'pdetail\')."\',\'".ch_chkb(\'pshow\')."\',\'".chp(\'ptype\')."\',".$rank.")");
if (!$INC)
{
echo mysql_error();
die;
}else{
$last_id = mysql_insert_id();
//------- UPLOAD ----------------------------------------
$img1 = "";
$pic1 = $last_id."_opt_1.";
if (ch_file(\'img1\') == "Yes")
{
$ext = do_file(\'img1\',$pic1,$sub_path);
if ($ext == "No")
{
$img1 = "";
}else{
$img1 = $pic1.$ext;
}
}
$UPD = qry_run("Update tbl_options Set img1 = \'".$img1."\' where mainid = ".$last_id."");
//---------------------- UPLOAD END --------------------------------
header("Location: p_options.php");
die;
}
}
}
}
//------- NEW END ------------
if (chp(\'C_TYPE\') == "EDIT")
{
if (chp(\'pname\') != "")
{
//------- UPLOAD ----------------------------------------
$last_id = ch_lvl(\'mid\');
$img1 = "";
$pic1 = $last_id."_opt_1.";
if (ch_file(\'img1\') == "Yes")
{
$ext = do_file(\'img1\',$pic1,$sub_path);
if ($ext == "No")
{
$img1 = "";
}else{
$img1 = $pic1.$ext;
}
}else{
$img1 = chp(\'imgs1\');
}
//------- UPLOAD END --------------------------------------
$UPD = qry_run("Update tbl_options Set pname = \'".chhtml(\'pname\')."\',pdetail = \'".chhtml(\'pdetail\')."\',pshow = \'".ch_chkb(\'pshow\')."\',ptype = \'".chp(\'ptype\')."\',pstyle = \'".chp(\'pstyle\')."\',img1 = \'".$img1."\' where mainid = ".ch_lvl(\'mid\')."");
header("Location: p_options.php");
die;
}
}
//------ EDIT END ------------------------------
if (chp(\'C_TYPE\') == "DEL")
{
if (ch_lvl(\'mid\') != "")
{
$DEL_opt = qry_run("Delete from tbl_sub_opt where mainid = ".ch_lvl(\'mid\')."");
$DEL = qry_run("Delete from tbl_options where mainid = ".ch_lvl(\'mid\')."");
// Re Ranking -----------
$rank = 1;
$RNK = qry_run("select * from tbl_options order by ranking");
if (num_rec($RNK) > 0)
{
while($rk = fetch_rec($RNK))
{
$UPD = qry_run("Update tbl_options Set ranking = ".$rank." where mainid = ".$rk[\'mainid\']."");
$rank = $rank + 1;
}
}//------ END RANKING -----
header("Location: p_options.php");
die;
}
}
if (chp(\'C_TYPE\') == "PSHOW")
{
if (chp(\'P_show\') == "Yes")
{
$P_show = "No";
}else{
$P_show = "Yes";
}
$UPD = qry_run("Update tbl_options Set pshow = \'".$P_show."\' where mainid = ".ch_lvl(\'mid\')."");
header("Location: p_options.php");
die;
}
}
if (chp(\'LVL\') == 8)
{
if (chp(\'C_TYPE\') == "NEW")
{
if (chp(\'pname\') != "")
{
$QRY = qry_run("select * from tbl_sub_opt where mainid = ".ch_lvl(\'mid\')." AND pname = \'".chp(\'pname\')."\'");
if (num_rec($QRY) > 0)
{
?>
<script language="JavaScript">
alert ("This Option Name already in OUR DATABASE");
history.go(-1);
</script>
<?php
header("Location: sub_opt.php?mid=".ch_lvl(\'mid\'));
die;
}else{
$rank = 0;
$RNK = qry_run("select * from tbl_sub_opt where mainid = ".ch_lvl(\'mid\')." order by subid DESC");
if (num_rec($RNK) > 0)
{
$rk = fetch_rec($RNK);
$rank = $rk[\'ranking\'] + 1;
}else{
$rank = 1;
}
$INC = qry_run("Insert into tbl_sub_opt (mainid,pname,pdetail,pshow,ranking) Values(".ch_lvl(\'mid\').",\'".chp(\'pname\')."\',\'".chp(\'pdetail\')."\',\'".ch_chkb(\'pshow\')."\',".$rank.")");
if (!$INC)
{
echo mysql_error();
die;
}else{
$last_id = mysql_insert_id();
//------- UPLOAD ----------------------------------------
$img1 = "";
$pic1 = $last_id."_sub_opt_1.";
if (ch_file(\'img1\') == "Yes")
{
$ext = do_file(\'img1\',$pic1,$sub_path);
if ($ext == "No")
{
$img1 = "";
}else{
$img1 = $pic1.$ext;
}
}
$UPD = qry_run("Update tbl_sub_opt Set img1 = \'".$img1."\' where subid = ".$last_id."");
//---------------------- UPLOAD END --------------------------------
header("Location: sub_opt.php?mid=".ch_lvl(\'mid\'));
die;
}
}
}
}
//------- NEW END ------------
if (chp(\'C_TYPE\') == "EDIT")
{
if (chp(\'pname\') != "")
{
//------- UPLOAD ----------------------------------------
$last_id = ch_lvl(\'sid\');
$img1 = "";
$pic1 = $last_id."_sub_opt_1.";
if (ch_file(\'img1\') == "Yes")
{
$ext = do_file(\'img1\',$pic1,$sub_path);
if ($ext == "No")
{
$img1 = "";
}else{
$img1 = $pic1.$ext;
}
}else{
$img1 = chp(\'imgs1\');
}
//------- UPLOAD END --------------------------------------
$UPD = qry_run("Update tbl_sub_opt Set pname = \'".chhtml(\'pname\')."\',pdetail = \'".chhtml(\'pdetail\')."\',pshow = \'".ch_chkb(\'pshow\')."\',img1 = \'".$img1."\' where subid = ".ch_lvl(\'sid\')."");
header("Location: sub_opt.php?mid=".ch_lvl(\'mid\'));
die;
}
}
//------ EDIT END ------------------------------
if (chp(\'C_TYPE\') == "DEL")
{
if (ch_lvl(\'mid\') != "")
{
$DEL = qry_run("Delete from tbl_sub_opt where mainid = ".ch_lvl(\'mid\')." AND subid = ".ch_lvl(\'sid\')."");
// Re Ranking -----------
$rank = 1;
$RNK = qry_run("select * from tbl_sub_opt where mainid = ".ch_lvl(\'mid\')." order by ranking");
if (num_rec($RNK) > 0)
{
while($rk = fetch_rec($RNK))
{
$UPD = qry_run("Update tbl_sub_opt Set ranking = ".$rank." where subid = ".$rk[\'subid\']."");
$rank = $rank + 1;
}
}//------ END RANKING -----
header("Location: sub_opt.php?mid=".ch_lvl(\'mid\'));
die;
}
}
if (chp(\'C_TYPE\') == "PSHOW")
{
if (chp(\'P_show\') == "Yes")
{
$P_show = "No";
}else{
$P_show = "Yes";
}
$UPD = qry_run("Update tbl_sub_opt Set pshow = \'".$P_show."\' where subid = ".ch_lvl(\'sid\')."");
header("Location: sub_opt.php?mid=".ch_lvl(\'mid\'));
die;
}
}
if (chp(\'LVL\') == 9)
{
if (chp(\'C_TYPE\') == "NEW")
{
if (chp(\'pname\') != "")
{
$QRY = qry_run("select * from tbl_more where pid = ".ch_lvl(\'pid\')." AND pname = \'".chp(\'pname\')."\'");
if (num_rec($QRY) > 0)
{
?>
<script language="JavaScript">
alert ("This Heading Name already in OUR DATABASE");
history.go(-1);
</script>
<?php
header("Location: more_prods.php?mid=".ch_lvl(\'main\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\')."&pid=".ch_lvl(\'pid\'));
die;
}else{
$rank = 0;
$RNK = qry_run("select * from tbl_more where pid = ".ch_lvl(\'pid\')." order by mainid DESC");
if (num_rec($RNK) > 0)
{
$rk = fetch_rec($RNK);
$rank = $rk[\'ranking\'] + 1;
}else{
$rank = 1;
}
$INC = qry_run("Insert into tbl_more (mid,sec,cat,pid,pname,pdetail,pshow,ranking,sizecm,sizein) Values(".ch_lvl(\'main\').",".ch_lvl(\'sec\').",".ch_lvl(\'cat\').",".ch_lvl(\'pid\').",\'".chp(\'pname\')."\',\'".chp(\'pdetail\')."\',\'".ch_chkb(\'pshow\')."\',".$rank.",\'".ch_chkb(\'sizecm\')."\',\'".ch_chkb(\'sizein\')."\')");
if (!$INC)
{
echo mysql_error();
die;
}else{
$last_id = mysql_insert_id();
//------- UPLOAD ----------------------------------------
$img1 = "";
$img2 = "";
$img3 = "";
$img4 = "";
$pic1 = ch_lvl(\'pid\')."_".$last_id."_more_1.";
$pic2 = ch_lvl(\'pid\')."_".$last_id."_more_2.";
$pic3 = ch_lvl(\'pid\')."_".$last_id."_more_4.";
$pic4 = ch_lvl(\'pid\')."_".$last_id."_more_3.";
if (ch_file(\'img2\') == "Yes")
{
$ext = do_file(\'img2\',$pic3,$sub_path);
if ($ext == "No")
{
$img3 = "";
}else{
$img3 = $pic3.$ext;
$Path = "../pictures/";
//************************ AUTO THUMBNAIL SETTING **********************
$img4 = cr_image($img3,2500,\'W\',$ext,$pic4,$Path);
$img2 = cr_image($img3,700,\'W\',$ext,$pic2,$Path);
$img1 = cr_image($img3,100,\'W\',$ext,$pic1,$Path);
unlink("../pictures/".$img3);
$img3 = "";
//************************ END CREATING THUMBNAIL *************************
}
}
$UPD = qry_run("Update tbl_more Set img1 = \'".$img1."\',img2 = \'".$img2."\',img3 = \'".$img4."\' where mainid = ".$last_id."");
//---------------------- UPLOAD END --------------------------------
header("Location: more_prods.php?mid=".ch_lvl(\'main\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\')."&pid=".ch_lvl(\'pid\'));
die;
}
}
}
}
//------- NEW END ------------
if (chp(\'C_TYPE\') == "EDIT")
{
if (chp(\'pname\') != "")
{
//------- UPLOAD ----------------------------------------
$last_id = ch_lvl(\'more\');
//------- UPLOAD ----------------------------------------
$img1 = "";
$img2 = "";
$img3 = "";
$img4 = "";
$pic1 = ch_lvl(\'pid\')."_".$last_id."_more_1.";
$pic2 = ch_lvl(\'pid\')."_".$last_id."_more_2.";
$pic3 = ch_lvl(\'pid\')."_".$last_id."_more_4.";
$pic4 = ch_lvl(\'pid\')."_".$last_id."_more_3.";
if (ch_file(\'img2\') == "Yes")
{
$ext = do_file(\'img2\',$pic3,$sub_path);
if ($ext == "No")
{
$img3 = "";
}else{
$img3 = $pic3.$ext;
$Path = "../pictures/";
//************************ AUTO THUMBNAIL SETTING **********************
$img4 = cr_image($img3,2000,\'W\',$ext,$pic4,$Path);
$img2 = cr_image($img3,500,\'W\',$ext,$pic2,$Path);
$img1 = cr_image($img3,80,\'W\',$ext,$pic1,$Path);
unlink("../pictures/".$img3);
$img3 = "";
$UPD = qry_run("Update tbl_more Set img1 = \'".$img1."\',img2 = \'".$img2."\',img3 = \'".$img4."\' where mainid = ".$last_id."");
//************************ END CREATING THUMBNAIL *************************
}
}
//------- UPLOAD END --------------------------------------
$UPD = qry_run("Update tbl_more Set pname = \'".chhtml(\'pname\')."\',sizecm = \'".chhtml(\'sizecm\')."\',sizein = \'".chhtml(\'sizein\')."\',pdetail = \'".chhtml(\'pdetail\')."\',pshow = \'".ch_chkb(\'pshow\')."\' where mainid = ".ch_lvl(\'more\')."");
header("Location: more_prods.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\')."&pid=".ch_lvl(\'pid\'));
die;
}
}
//------ EDIT END ------------------------------
if (chp(\'C_TYPE\') == "DEL")
{
if (ch_lvl(\'pid\') != "")
{
$QRY = qry_run("Select * from tbl_more where pid = ".ch_lvl(\'pid\')." AND mainid = ".ch_lvl(\'more\')."");
if (num_rec($QRY) > 0)
{
$rp = fetch_rec($QRY);
if (file_exists("../pictures/".$rp[\'img1\']))
{
unlink("../pictures/".$rp[\'img1\']);
}
if (file_exists("../pictures/".$rp[\'img2\']))
{
unlink("../pictures/".$rp[\'img2\']);
}
if (file_exists("../pictures/".$rp[\'img3\']))
{
unlink("../pictures/".$rp[\'img3\']);
}
}
$DEL = qry_run("Delete from tbl_more where pid = ".ch_lvl(\'pid\')." AND mainid = ".ch_lvl(\'more\')."");
// Re Ranking -----------
$rank = 1;
$RNK = qry_run("select * from tbl_more where pid = ".ch_lvl(\'pid\')." order by ranking");
if (num_rec($RNK) > 0)
{
while($rk = fetch_rec($RNK))
{
$UPD = qry_run("Update tbl_more Set ranking = ".$rank." where mainid = ".$rk[\'mainid\']."");
$rank = $rank + 1;
}
}//------ END RANKING -----
header("Location: more_prods.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\')."&pid=".ch_lvl(\'pid\'));
die;
}
}
if (chp(\'C_TYPE\') == "PSHOW")
{
if (chp(\'P_show\') == "Yes")
{
$P_show = "No";
}else{
$P_show = "Yes";
}
$UPD = qry_run("Update tbl_more Set pshow = \'".$P_show."\' where mainid = ".ch_lvl(\'more\')."");
header("Location: more_prods.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\')."&pid=".ch_lvl(\'pid\'));
die;
}
}
if (chp(\'LVL\') == 10)
{
if (chp(\'C_TYPE\') == "NEW")
{
if (chp(\'pname\') != "")
{
$QRY = qry_run("select * from tbl_brands where bname = \'".chp(\'pname\')."\'");
if (num_rec($QRY) > 0)
{
?>
<script language="JavaScript">
alert ("This Brand Name already in OUR DATABASE");
history.go(-1);
</script>
<?php
header("Location: brands.php");
die;
}else{
$rank = 0;
$RNK = qry_run("select * from tbl_brands order by mainid DESC");
if (num_rec($RNK) > 0)
{
$rk = fetch_rec($RNK);
$rank = $rk[\'ranking\'] + 1;
}else{
$rank = 1;
}
$INC = qry_run("Insert into tbl_brands (bname,bdetail,pshow,phead,keywords,description,ranking,location) Values(\'".htmlspecialchars(chp(\'pname\'), ENT_QUOTES)."\',\'".htmlspecialchars(chp(\'pdetail\'), ENT_QUOTES)."\',\'".ch_chkb(\'pshow\')."\',\'".htmlspecialchars(chp(\'phead\'), ENT_QUOTES)."\',\'".htmlspecialchars(chp(\'keywords\'), ENT_QUOTES)."\',\'".htmlspecialchars(chp(\'description\'), ENT_QUOTES)."\',".$rank.",\'".chp(\'location\')."\')");
if (!$INC)
{
echo mysql_error();
die;
}else{
$last_id = mysql_insert_id();
//------- UPLOAD ----------------------------------------
$img1 = "";
$pic1 = $last_id."_brand_1.";
if (ch_file(\'img1\') == "Yes")
{
$ext = do_file(\'img1\',$pic1,$sub_path);
if ($ext == "No")
{
$img1 = "";
}else{
$img1 = $pic1.$ext;
}
}
$UPD = qry_run("Update tbl_brands Set img1 = \'".$img1."\' where mainid = ".$last_id."");
//---------------------- UPLOAD END --------------------------------
header("Location: brands.php");
die;
}
}
}
}
//------- NEW END ------------
if (chp(\'C_TYPE\') == "EDIT")
{
if (chp(\'pname\') != "")
{
//------- UPLOAD ----------------------------------------
$last_id = ch_lvl(\'mid\');
$img1 = "";
$pic1 = $last_id."_brand_1.";
if (ch_file(\'img1\') == "Yes")
{
$ext = do_file(\'img1\',$pic1,$sub_path);
if ($ext == "No")
{
$img1 = "";
}else{
$img1 = $pic1.$ext;
}
}else{
$img1 = chp(\'imgs1\');
}
//------- UPLOAD END --------------------------------------
$UPD = qry_run("Update tbl_brands Set bname = \'".chhtml(\'pname\')."\',bdetail = \'".chhtml(\'pdetail\')."\',pshow = \'".ch_chkb(\'pshow\')."\',phead = \'".chhtml(\'phead\')."\',keywords = \'".chhtml(\'keywords\')."\',description = \'".chhtml(\'description\')."\',img1 = \'".$img1."\',location = \'".chp(\'location\')."\' where mainid = ".ch_lvl(\'mid\')."");
header("Location: brands.php");
die;
}
}
//------ EDIT END ------------------------------
if (chp(\'C_TYPE\') == "DEL")
{
if (ch_lvl(\'mid\') != "")
{
$DEL = qry_run("Delete from tbl_brands where mainid = ".ch_lvl(\'mid\')."");
// Re Ranking -----------
$rank = 1;
$RNK = qry_run("select * from tbl_brands order by ranking");
if (num_rec($RNK) > 0)
{
while($rk = fetch_rec($RNK))
{
$UPD = qry_run("Update tbl_brands Set ranking = ".$rank." where mainid = ".$rk[\'mainid\']."");
$rank = $rank + 1;
}
}//------ END RANKING -----
header("Location: brands.php");
die;
}
}
if (chp(\'C_TYPE\') == "PSHOW")
{
if (chp(\'P_show\') == "Yes")
{
$P_show = "No";
}else{
$P_show = "Yes";
}
$UPD = qry_run("Update tbl_brands Set pshow = \'".$P_show."\' where mainid = ".ch_lvl(\'mid\')."");
header("Location: brands.php");
die;
}
}
if (chp(\'LVL\') == 11)
{
if (chp(\'C_TYPE\') == "NEW")
{
if (chp(\'cid\') != "")
{
$QRY = qry_run("select * from tbl_coupon where cid = \'".chp(\'cid\')."\'");
if (num_rec($QRY) > 0)
{
?>
<script language="JavaScript">
alert ("This Coupon Code already in OUR DATABASE");
history.go(-1);
</script>
<?php
header("Location: coupons.php");
die;
}else{
$expiry = chp(\'fy\')."-".chp(\'fm\')."-".chp(\'fd\');
$INC = qry_run("Insert into tbl_coupon (cid,cname,cdetail,pshow,prate,dist_opt,min_val,expiry) Values(\'".chp(\'cid\')."\',\'".chp(\'cname\')."\',\'".chp(\'cdetail\')."\',\'".ch_chkb(\'pshow\')."\',".ch_lvl(\'prate\').",\'".chp(\'dist_opt\')."\',".ch_lvl(\'min_val\').",\'".$expiry."\')");
if (!$INC)
{
echo mysql_error();
die;
}else{
header("Location: coupons.php");
die;
}
}
}
}
//------- NEW END ------------
if (chp(\'C_TYPE\') == "EDIT")
{
if (chp(\'cid\') != "")
{
$expiry = chp(\'fy\')."-".chp(\'fm\')."-".chp(\'fd\');
$UPD = qry_run("Update tbl_coupon Set cid = \'".chhtml(\'cid\')."\',cname = \'".chhtml(\'cname\')."\',cdetail = \'".chhtml(\'cdetail\')."\',pshow = \'".ch_chkb(\'pshow\')."\',prate = ".ch_lvl(\'prate\').",dist_opt = \'".chhtml(\'dist_opt\')."\',min_val = ".ch_lvl(\'min_val\').",expiry = \'".$expiry."\' where mainid = ".ch_lvl(\'mid\')."");
header("Location: coupons.php");
die;
}
}
//------ EDIT END ------------------------------
if (chp(\'C_TYPE\') == "DEL")
{
if (ch_lvl(\'mid\') != "")
{
$DEL = qry_run("Delete from tbl_coupon where mainid = ".ch_lvl(\'mid\')."");
header("Location: coupons.php");
die;
}
}
if (chp(\'C_TYPE\') == "PSHOW")
{
if (chp(\'P_show\') == "Yes")
{
$P_show = "No";
}else{
$P_show = "Yes";
}
$UPD = qry_run("Update tbl_coupon Set pshow = \'".$P_show."\' where mainid = ".ch_lvl(\'mid\')."");
header("Location: coupons.php");
die;
}
}
if (chp(\'LVL\') == 12)
{
if (chp(\'C_TYPE\') == "NEW")
{
if (chp(\'panmes\') != "")
{
$QRY = qry_run("select * from tbl_colors where pid = ".ch_lvl(\'pid\')." AND pname = \'".chp(\'pnames\')."\'");
if (num_rec($QRY) < 0)
{
?>
<script language="JavaScript">
alert ("This Heading Name already in OUR DATABASE");
history.go(-1);
</script>
<?php
header("Location: more_color.php?mid=".ch_lvl(\'main\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\')."&pid=".ch_lvl(\'pid\'));
die;
}else{
$rank = 0;
$RNK = qry_run("select * from tbl_colors where pid = ".ch_lvl(\'pid\')." order by mainid DESC");
if (num_rec($RNK) > 0)
{
$rk = fetch_rec($RNK);
$rank = $rk[\'ranking\'] + 1;
}else{
$rank = 1;
}
$INC = qry_run("Insert into tbl_colors (mid,sec,cat,pid,pname,pdetail,pshow,ranking) Values(".ch_lvl(\'main\').",".ch_lvl(\'sec\').",".ch_lvl(\'cat\').",".ch_lvl(\'pid\').",\'".chp(\'pname\')."\',\'".chp(\'pdetail\')."\',\'".ch_chkb(\'pshow\')."\',".$rank.")");
if (!$INC)
{
echo mysql_error();
die;
}else{
$last_id = mysql_insert_id();
//------- UPLOAD ----------------------------------------
$img1 = "";
$img2 = "";
$img3 = "";
$img4 = "";
$pic1 = ch_lvl(\'pid\')."_".$last_id."_color_1.";
$pic2 = ch_lvl(\'pid\')."_".$last_id."_color_2.";
$pic3 = ch_lvl(\'pid\')."_".$last_id."_color_4.";
$pic4 = ch_lvl(\'pid\')."_".$last_id."_color_3.";
if (ch_file(\'img2\') == "Yes")
{
$ext = do_file(\'img2\',$pic3,$sub_path);
if ($ext == "No")
{
$img3 = "";
}else{
$img3 = $pic3.$ext;
$Path = "../pictures/";
//************************ AUTO THUMBNAIL SETTING **********************
$img4 = cr_image($img3,1200,\'W\',$ext,$pic4,$Path);
$img2 = cr_image($img3,450,\'W\',$ext,$pic2,$Path);
$img1 = cr_image($img3,150,\'W\',$ext,$pic1,$Path);
unlink("../pictures/".$img3);
$img3 = "";
//************************ END CREATING THUMBNAIL *************************
}
}
$UPD = qry_run("Update tbl_colors Set img1 = \'".$img1."\',img2 = \'".$img2."\',img3 = \'".$img4."\' where mainid = ".$last_id."");
//---------------------- UPLOAD END --------------------------------
header("Location: more_color.php?mid=".ch_lvl(\'main\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\')."&pid=".ch_lvl(\'pid\'));
die;
}
}
}
}
//------- NEW END ------------
if (chp(\'C_TYPE\') == "EDIT")
{
if (chp(\'pnames\') != "")
{
//------- UPLOAD ----------------------------------------
$last_id = ch_lvl(\'more\');
//------- UPLOAD ----------------------------------------
$img1 = "";
$img2 = "";
$img3 = "";
$img4 = "";
$pic1 = ch_lvl(\'pid\')."_".$last_id."_color_1.";
$pic2 = ch_lvl(\'pid\')."_".$last_id."_color_2.";
$pic3 = ch_lvl(\'pid\')."_".$last_id."_color_4.";
$pic4 = ch_lvl(\'pid\')."_".$last_id."_color_3.";
if (ch_file(\'img2\') == "Yes")
{
$ext = do_file(\'img2\',$pic3,$sub_path);
if ($ext == "No")
{
$img3 = "";
}else{
$img3 = $pic3.$ext;
$Path = "../pictures/";
//************************ AUTO THUMBNAIL SETTING **********************
$img4 = cr_image($img3,1200,\'W\',$ext,$pic4,$Path);
$img2 = cr_image($img3,450,\'W\',$ext,$pic2,$Path);
$img1 = cr_image($img3,150,\'W\',$ext,$pic1,$Path);
unlink("../pictures/".$img3);
$img3 = "";
$UPD = qry_run("Update tbl_colors Set img1 = \'".$img1."\',img2 = \'".$img2."\',img3 = \'".$img4."\' where mainid = ".$last_id."");
//************************ END CREATING THUMBNAIL *************************
}
}
//------- UPLOAD END --------------------------------------
$UPD = qry_run("Update tbl_colors Set pname = \'".chhtml(\'pname\')."\',pdetail = \'".chhtml(\'pdetail\')."\',pshow = \'".ch_chkb(\'pshow\')."\' where mainid = ".ch_lvl(\'more\')."");
header("Location: more_color.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\')."&pid=".ch_lvl(\'pid\'));
die;
}
}
//------ EDIT END ------------------------------
if (chp(\'C_TYPE\') == "DEL")
{
if (ch_lvl(\'pid\') != "")
{
$QRY = qry_run("Select * from tbl_colors where pid = ".ch_lvl(\'pid\')." AND mainid = ".ch_lvl(\'more\')."");
if (num_rec($QRY) > 0)
{
$rp = fetch_rec($QRY);
if (file_exists("../pictures/".$rp[\'img1\']))
{
unlink("../pictures/".$rp[\'img1\']);
}
if (file_exists("../pictures/".$rp[\'img2\']))
{
unlink("../pictures/".$rp[\'img2\']);
}
if (file_exists("../pictures/".$rp[\'img3\']))
{
unlink("../pictures/".$rp[\'img3\']);
}
}
$DEL = qry_run("Delete from tbl_colors where pid = ".ch_lvl(\'pid\')." AND mainid = ".ch_lvl(\'more\')."");
// Re Ranking -----------
$rank = 1;
$RNK = qry_run("select * from tbl_colors where pid = ".ch_lvl(\'pid\')." order by ranking");
if (num_rec($RNK) > 0)
{
while($rk = fetch_rec($RNK))
{
$UPD = qry_run("Update tbl_colors Set ranking = ".$rank." where mainid = ".$rk[\'mainid\']."");
$rank = $rank + 1;
}
}//------ END RANKING -----
header("Location: more_color.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\')."&pid=".ch_lvl(\'pid\'));
die;
}
}
if (chp(\'C_TYPE\') == "PSHOW")
{
if (chp(\'P_show\') == "Yes")
{
$P_show = "No";
}else{
$P_show = "Yes";
}
$UPD = qry_run("Update tbl_colors Set pshow = \'".$P_show."\' where mainid = ".ch_lvl(\'more\')."");
header("Location: more_color.php?mid=".ch_lvl(\'mid\')."&sec=".ch_lvl(\'sec\')."&cat=".ch_lvl(\'cat\')."&pid=".ch_lvl(\'pid\'));
die;
}
}
?>'
Did this file decode correctly?
Original Code
<?php @eval("?>".base64_decode("PD9waHAgDQ0NCg0NDQppbmNsdWRlICJwYXJhbS5waHAiOw0NDQoNDQ0KaW5jbHVkZSAiZnVuYy5waHAiOw0NDQoNDQ0KaW5jbHVkZSAiY2hrX2xvZ2luLnBocCI7DQ0NCg0NDQppZiAoY2hwKCdMVkwnKSA9PSAxKQ0NDQoNDQ0Kew0NDQoNDQ0KCWlmIChjaHAoJ0NfVFlQRScpID09ICJORVciKQ0NDQoNDQ0KCXsNDQ0KDQ0NCgkJaWYgKGNocCgncG5hbWUnKSAhPSAiIikNDQ0KDQ0NCgkJew0NDQoNDQ0KCQkJJFFSWSA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX21haW4gd2hlcmUgcG5hbWUgPSAnIi5jaHAoJ3BuYW1lJykuIiciKTsNDQ0KDQ0NCgkJCWlmIChudW1fcmVjKCRRUlkpID4gMCkNDQ0KDQ0NCgkJCXsNDQ0KDQ0NCgkJCQk/Pg0NDQoNDQ0KCQkJCTxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiPg0NDQoNDQ0KCQkJCWFsZXJ0ICgiVGhpcyBDYXRlZ29yeSBOYW1lIGFscmVhZHkgaW4gT1VSIERBVEFCQVNFIik7DQ0NCg0NDQoJCQkJaGlzdG9yeS5nbygtMSk7DQ0NCg0NDQoJCQkJPC9zY3JpcHQ+DQ0NCg0NDQoJCQkJPD9waHANDQ0KDQ0NCgkJCQloZWFkZXIoIkxvY2F0aW9uOiBtYWluLnBocCIpOw0NDQoNDQ0KCQkJCWRpZTsNDQ0KDQ0NCgkJCX1lbHNlew0NDQoNDQ0KCQkJCSRyYW5rID0gMDsNDQ0KDQ0NCgkJCQkkUk5LID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfbWFpbiBvcmRlciBieSByYW5raW5nIERFU0MiKTsNDQ0KDQ0NCgkJCQlpZiAobnVtX3JlYygkUk5LKSA+IDApDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQkkcmsgPSBmZXRjaF9yZWMoJFJOSyk7DQ0NCg0NDQoJCQkJCSRyYW5rID0gJHJrWydyYW5raW5nJ10gKyAxOw0NDQoNDQ0KCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkkcmFuayA9IDE7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJCSRJTkMgPSBxcnlfcnVuKCJJbnNlcnQgaW50byB0YmxfbWFpbiAocG5hbWUscGRldGFpbCxwc2hvdyxwaGVhZCxrZXl3b3JkcyxkZXNjcmlwdGlvbixyYW5raW5nLHVybCkgVmFsdWVzKCciLmh0bWxzcGVjaWFsY2hhcnMoY2hwKCdwbmFtZScpLCBFTlRfUVVPVEVTKS4iJywnIi4oY2hwKCdwZGV0YWlsJykpLiInLCciLmNoX2Noa2IoJ3BzaG93JykuIicsJyIuaHRtbHNwZWNpYWxjaGFycyhjaHAoJ3BoZWFkJyksIEVOVF9RVU9URVMpLiInLCciLmh0bWxzcGVjaWFsY2hhcnMoY2hwKCdrZXl3b3JkcycpLCBFTlRfUVVPVEVTKS4iJywnIi5odG1sc3BlY2lhbGNoYXJzKGNocCgnZGVzY3JpcHRpb24nKSwgRU5UX1FVT1RFUykuIicsIi4kcmFuay4iLCciLmh0bWxzcGVjaWFsY2hhcnMoY2hwKCd1cmwnKSwgRU5UX1FVT1RFUykuIicpIik7DQ0NCg0NDQoJCQkJaWYgKCEkSU5DKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJZWNobyBteXNxbF9lcnJvcigpOw0NDQoNDQ0KCQkJCQlkaWU7DQ0NCg0NDQoJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCSRsYXN0X2lkID0gbXlzcWxfaW5zZXJ0X2lkKCk7DQ0NCg0NDQoJCQkJCS8vLS0tLS0tLSBVUExPQUQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoNDQ0KCQkJCQkkaW1nMSA9ICIiOw0NDQoNDQ0KCQkJCQkkcGljMSA9ICRsYXN0X2lkLiJfcGljXzEuIjsNDQ0KDQ0NCgkJCQkJaWYgKGNoX2ZpbGUoJ2ltZzEnKSA9PSAiWWVzIikNDQ0KDQ0NCgkJCQkJew0NDQoNDQ0KCQkJCQkJJGV4dCA9IGRvX2ZpbGUoJ2ltZzEnLCRwaWMxLCRzdWJfcGF0aCk7DQ0NCg0NDQoJCQkJCQlpZiAoJGV4dCA9PSAiTm8iKQ0NDQoNDQ0KCQkJCQkJew0NDQoNDQ0KCQkJCQkJCSRpbWcxID0gIiI7DQ0NCg0NDQoJCQkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJCQkkaW1nMSA9ICRwaWMxLiRleHQ7DQ0NCg0NDQoJCQkJCQl9DQ0NCg0NDQoJCQkJCX0NDQ0KDQ0NCgkJCQkJJGltZzIgPSAiIjsNDQ0KDQ0NCgkJCQkJJHBpYzIgPSAkbGFzdF9pZC4iX3BpY18yLiI7DQ0NCg0NDQoJCQkJCWlmIChjaF9maWxlKCdpbWcyJykgPT0gIlllcyIpDQ0NCg0NDQoJCQkJCXsNDQ0KDQ0NCgkJCQkJCSRleHQgPSBkb19maWxlKCdpbWcyJywkcGljMiwkc3ViX3BhdGgpOw0NDQoNDQ0KCQkJCQkJaWYgKCRleHQgPT0gIk5vIikNDQ0KDQ0NCgkJCQkJCXsNDQ0KDQ0NCgkJCQkJCQkkaW1nMiA9ICIiOw0NDQoNDQ0KCQkJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCQkJJGltZzIgPSAkcGljMi4kZXh0Ow0NDQoNDQ0KCQkJCQkJfQ0NDQoNDQ0KCQkJCQl9DQ0NCg0NDQoJCQkJCSRpbWczID0gIiI7DQ0NCg0NDQoJCQkJCSRwaWMzID0gJGxhc3RfaWQuIl9waWNfMy4iOw0NDQoNDQ0KCQkJCQlpZiAoY2hfZmlsZSgnaW1nMycpID09ICJZZXMiKQ0NDQoNDQ0KCQkJCQl7DQ0NCg0NDQoJCQkJCQkkZXh0ID0gZG9fZmlsZSgnaW1nMycsJHBpYzMsJHN1Yl9wYXRoKTsNDQ0KDQ0NCgkJCQkJCWlmICgkZXh0ID09ICJObyIpDQ0NCg0NDQoJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJJGltZzMgPSAiIjsNDQ0KDQ0NCgkJCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkJCSRpbWczID0gJHBpYzMuJGV4dDsNDQ0KDQ0NCgkJCQkJCX0NDQ0KDQ0NCgkJCQkJfQ0NDQoNDQ0KCQkJCQkkaW1nNCA9ICIiOw0NDQoNDQ0KCQkJCQkkcGljNCA9ICRsYXN0X2lkLiJfcGljXzQuIjsNDQ0KDQ0NCgkJCQkJaWYgKGNoX2ZpbGUoJ2ltZzQnKSA9PSAiWWVzIikNDQ0KDQ0NCgkJCQkJew0NDQoNDQ0KCQkJCQkJJGV4dCA9IGRvX2ZpbGUoJ2ltZzQnLCRwaWM0LCRzdWJfcGF0aCk7DQ0NCg0NDQoJCQkJCQlpZiAoJGV4dCA9PSAiTm8iKQ0NDQoNDQ0KCQkJCQkJew0NDQoNDQ0KCQkJCQkJCSRpbWc0ID0gIiI7DQ0NCg0NDQoJCQkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJCQkkaW1nNCA9ICRwaWM0LiRleHQ7DQ0NCg0NDQoJCQkJCQl9DQ0NCg0NDQoJCQkJCX0NDQ0KCQkJCQkNDQ0KCQkJCQkNDQ0KCQkJCQkkaW1nNSA9ICIiOw0NDQoNDQ0KCQkJCQkkcGljNSA9ICRsYXN0X2lkLiJfcGRmXzEuIjsNDQ0KDQ0NCgkJCQkJaWYgKGNoX2ZpbGUoJ2ltZzUnKSA9PSAiWWVzIikNDQ0KDQ0NCgkJCQkJew0NDQoNDQ0KCQkJCQkJJGV4dCA9IGRvX2ZpbGVfcGRmKCdpbWc1JywkcGljNSwkc3ViX3BhdGgpOw0NDQoNDQ0KCQkJCQkJaWYgKCRleHQgPT0gIk5vIikNDQ0KDQ0NCgkJCQkJCXsNDQ0KDQ0NCgkJCQkJCQkkaW1nNSA9ICIiOw0NDQoNDQ0KCQkJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCQkJJGltZzUgPSAkcGljNS4kZXh0Ow0NDQoNDQ0KCQkJCQkJfQ0NDQoNDQ0KCQkJCQl9DQ0NCgkJCQkJDQ0NCg0NDQoNDQ0KCQkJCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9tYWluIFNldCBpbWcxID0gJyIuJGltZzEuIicsaW1nMiA9ICciLiRpbWcyLiInLGltZzMgPSAnIi4kaW1nMy4iJyxpbWc0ID0gJyIuJGltZzQuIicsaW1nNSA9ICciLiRpbWc1LiInIHdoZXJlIG1haW5pZCA9ICIuJGxhc3RfaWQuIiIpOw0NDQoNDQ0KCQkJCQkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVVBMT0FEIEVORCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoNDQ0KCQkJCQloZWFkZXIoIkxvY2F0aW9uOiBtYWluLnBocCIpOw0NDQoNDQ0KCQkJCQlkaWU7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJfQ0NDQoNDQ0KCQl9DQ0NCg0NDQoJfQ0NDQoNDQ0KCS8vLS0tLS0tLSBORVcgRU5EIC0tLS0tLS0tLS0tLQ0NDQoNDQ0KCWlmIChjaHAoJ0NfVFlQRScpID09ICJFRElUIikNDQ0KDQ0NCgl7DQ0NCg0NDQoJCWlmIChjaHAoJ3BuYW1lJykgIT0gIiIpDQ0NCg0NDQoJCXsNDQ0KDQ0NCgkJCS8vLS0tLS0tLSBVUExPQUQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoNDQ0KCQkJJGxhc3RfaWQgPSBjaF9sdmwoJ21pZCcpOw0NDQoNDQ0KCQkJJGltZzEgPSAiIjsNDQ0KDQ0NCgkJCSRwaWMxID0gJGxhc3RfaWQuIl9waWNfMS4iOw0NDQoNDQ0KCQkJaWYgKGNoX2ZpbGUoJ2ltZzEnKSA9PSAiWWVzIikNDQ0KDQ0NCgkJCXsNDQ0KDQ0NCgkJCQkkZXh0ID0gZG9fZmlsZSgnaW1nMScsJHBpYzEsJHN1Yl9wYXRoKTsNDQ0KDQ0NCgkJCQlpZiAoJGV4dCA9PSAiTm8iKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJJGltZzEgPSAiIjsNDQ0KDQ0NCgkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJJGltZzEgPSAkcGljMS4kZXh0Ow0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCX1lbHNlew0NDQoNDQ0KCQkJCSRpbWcxID0gY2hwKCdpbWdzMScpOw0NDQoNDQ0KCQkJfQ0NDQoNDQ0KCQkJJGltZzIgPSAiIjsNDQ0KDQ0NCgkJCSRwaWMyID0gJGxhc3RfaWQuIl9waWNfMi4iOw0NDQoNDQ0KCQkJaWYgKGNoX2ZpbGUoJ2ltZzInKSA9PSAiWWVzIikNDQ0KDQ0NCgkJCXsNDQ0KDQ0NCgkJCQkkZXh0ID0gZG9fZmlsZSgnaW1nMicsJHBpYzIsJHN1Yl9wYXRoKTsNDQ0KDQ0NCgkJCQlpZiAoJGV4dCA9PSAiTm8iKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJJGltZzIgPSAiIjsNDQ0KDQ0NCgkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJJGltZzIgPSAkcGljMi4kZXh0Ow0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCX1lbHNlew0NDQoNDQ0KCQkJCSRpbWcyID0gY2hwKCdpbWdzMicpOw0NDQoNDQ0KCQkJfQ0NDQoNDQ0KCQkJJGltZzMgPSAiIjsNDQ0KDQ0NCgkJCSRwaWMzID0gJGxhc3RfaWQuIl9waWNfMy4iOw0NDQoNDQ0KCQkJaWYgKGNoX2ZpbGUoJ2ltZzMnKSA9PSAiWWVzIikNDQ0KDQ0NCgkJCXsNDQ0KDQ0NCgkJCQkkZXh0ID0gZG9fZmlsZSgnaW1nMycsJHBpYzMsJHN1Yl9wYXRoKTsNDQ0KDQ0NCgkJCQlpZiAoJGV4dCA9PSAiTm8iKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJJGltZzMgPSAiIjsNDQ0KDQ0NCgkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJJGltZzMgPSAkcGljMy4kZXh0Ow0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCX1lbHNlew0NDQoNDQ0KCQkJCSRpbWczID0gY2hwKCdpbWdzMycpOw0NDQoNDQ0KCQkJfQ0NDQoNDQ0KCQkJJGltZzQgPSAiIjsNDQ0KDQ0NCgkJCSRwaWM0ID0gJGxhc3RfaWQuIl9waWNfNC4iOw0NDQoNDQ0KCQkJaWYgKGNoX2ZpbGUoJ2ltZzQnKSA9PSAiWWVzIikNDQ0KDQ0NCgkJCXsNDQ0KDQ0NCgkJCQkkZXh0ID0gZG9fZmlsZSgnaW1nNCcsJHBpYzQsJHN1Yl9wYXRoKTsNDQ0KDQ0NCgkJCQlpZiAoJGV4dCA9PSAiTm8iKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJJGltZzQgPSAiIjsNDQ0KDQ0NCgkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJJGltZzQgPSAkcGljNC4kZXh0Ow0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCX1lbHNlew0NDQoNDQ0KCQkJCSRpbWc0ID0gY2hwKCdpbWdzNCcpOw0NDQoNDQ0KCQkJfQ0NDQoJCQkNDQ0KCQkJDQ0NCgkJCQ0NDQoJCQkkaW1nNSA9ICIiOw0NDQoNDQ0KCQkJJHBpYzUgPSAkbGFzdF9pZC4iX3BkZl8xLiI7DQ0NCg0NDQoJCQlpZiAoY2hfZmlsZSgnaW1nNScpID09ICJZZXMiKQ0NDQoNDQ0KCQkJew0NDQoNDQ0KCQkJCSRleHQgPSBkb19maWxlKCdpbWc1JywkcGljNSwkc3ViX3BhdGgpOw0NDQoNDQ0KCQkJCWlmICgkZXh0ID09ICJObyIpDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQkkaW1nNSA9ICIiOw0NDQoNDQ0KCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkkaW1nNSA9ICRwaWM1LiRleHQ7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJfWVsc2V7DQ0NCg0NDQoJCQkJJGltZzUgPSBjaHAoJ2ltZ3M1Jyk7DQ0NCg0NDQoJCQl9DQ0NCgkJCS8vZWNobyBjaHAoJ3BkZXRhaWwnKSwgRU5UX1FVT1RFUyk7IGRpZTsNDQ0KDQ0NCgkJCS8vLS0tLS0tLSBVUExPQUQgRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9tYWluIFNldCBwbmFtZSA9ICciLmNoaHRtbCgncG5hbWUnKS4iJyx1cmwgPSAnIi5jaGh0bWwoJ3VybCcpLiInLHBkZXRhaWwgPSAnIi4oY2hwKCdwZGV0YWlsJykgKS4iJyxwc2hvdyA9ICciLmNoX2Noa2IoJ3BzaG93JykuIicscGhlYWQgPSAnIi5jaGh0bWwoJ3BoZWFkJykuIicsa2V5d29yZHMgPSAnIi5jaGh0bWwoJ2tleXdvcmRzJykuIicsZGVzY3JpcHRpb24gPSAnIi5jaGh0bWwoJ2Rlc2NyaXB0aW9uJykuIicsaW1nMSA9ICciLiRpbWcxLiInLGltZzIgPSAnIi4kaW1nMi4iJyxpbWczID0gJyIuJGltZzMuIicsaW1nNCA9ICciLiRpbWc0LiInLGltZzUgPSAnIi4kaW1nNS4iJyB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiIpOw0NDQoNDQ0KCQkJaGVhZGVyKCJMb2NhdGlvbjogbWFpbi5waHAiKTsNDQ0KDQ0NCgkJCWRpZTsJDQ0NCg0NDQoJCX0NDQ0KDQ0NCgl9DQ0NCg0NDQoJLy8tLS0tLS0gRURJVCBFTkQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIkRFTCIpDQ0NCg0NDQoJew0NDQoNDQ0KCQlpZiAoY2hfbHZsKCdtaWQnKSAhPSAiIikNDQ0KDQ0NCgkJew0NDQoNDQ0KCQkJJENISyA9IHFyeV9ydW4oIlNlbGVjdCAqIGZyb20gdGJsX3NlY3Rpb24gd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIiKTsNDQ0KDQ0NCgkJCWlmIChudW1fcmVjKCRDSEspID4gMCkNDQ0KDQ0NCgkJCXsNDQ0KDQ0NCgkJCQloZWFkZXIoIkxvY2F0aW9uOiBtYWluLnBocD9lcj1ZIik7DQ0NCg0NDQoJCQkJZGllOw0NDQoNDQ0KCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCSRJTUcgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF9tYWluIHdoZXJlIG1haW5pZCA9ICIuY2hfbHZsKCdtaWQnKS4iIik7DQ0NCg0NDQoJCQkJCWlmIChudW1fcmVjKCRJTUcpID4gMCkNDQ0KDQ0NCgkJCQkJew0NDQoNDQ0KCQkJCQkJJHJtID0gZmV0Y2hfcmVjKCRJTUcpOw0NDQoNDQ0KCQkJCQkJaWYgKGZpbGVfZXhpc3RzKCIuLi9waWN0dXJlcy8iLiRybVsnaW1nMSddKSkgDQ0NCg0NDQoJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJdW5saW5rKCIuLi9waWN0dXJlcy8iLiRybVsnaW1nMSddKTsNDQ0KDQ0NCgkJCQkJCX0NDQ0KCQkJCQkJDQ0NCgkJCQkJCQ0NDQoJCQkJCQlpZiAoZmlsZV9leGlzdHMoIi4uL3BpY3R1cmVzLyIuJHJtWydpbWcyJ10pKSANDQ0KDQ0NCgkJCQkJCXsNDQ0KDQ0NCgkJCQkJCQl1bmxpbmsoIi4uL3BpY3R1cmVzLyIuJHJtWydpbWcyJ10pOw0NDQoNDQ0KCQkJCQkJfQ0NDQoNDQ0KCQkJCQl9DQ0NCg0NDQoJCQkJCSRERUwgPSBxcnlfcnVuKCJEZWxldGUgZnJvbSB0YmxfbWFpbiB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiIpOw0NDQoNDQ0KCQkJCQkvLyBSZSBSYW5raW5nIC0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkJCSRyYW5rID0gMTsNDQ0KDQ0NCgkJCQkJJFJOSyA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX21haW4gb3JkZXIgYnkgcmFua2luZyIpOw0NDQoNDQ0KCQkJCQlpZiAobnVtX3JlYygkUk5LKSA+IDApDQ0NCg0NDQoJCQkJCXsNDQ0KDQ0NCgkJCQkJCXdoaWxlKCRyayA9IGZldGNoX3JlYygkUk5LKSkNDQ0KDQ0NCgkJCQkJCXsNDQ0KDQ0NCgkJCQkJCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9tYWluIFNldCByYW5raW5nID0gIi4kcmFuay4iIHdoZXJlIG1haW5pZCA9ICIuJHJrWydtYWluaWQnXS4iIik7DQ0NCg0NDQoJCQkJCQkJJHJhbmsgPSAkcmFuayArIDE7DQ0NCg0NDQoJCQkJCQl9DQ0NCg0NDQoJCQkJCX0vLy0tLS0tLSBFTkQgUkFOS0lORyAtLS0tLQ0NDQoNDQ0KCQkJfQ0NDQoNDQ0KCQkJaGVhZGVyKCJMb2NhdGlvbjogbWFpbi5waHAiKTsNDQ0KDQ0NCgkJCWRpZTsNDQ0KDQ0NCgkJfQ0NDQoNDQ0KCX0NDQ0KDQ0NCglpZiAoY2hwKCdDX1RZUEUnKSA9PSAiUFNIT1ciKQ0NDQoNDQ0KCXsNDQ0KDQ0NCgkJaWYgKGNocCgnUF9zaG93JykgPT0gIlllcyIpDQ0NCg0NDQoJCXsNDQ0KDQ0NCgkJCSRQX3Nob3cgPSAiTm8iOw0NDQoNDQ0KCQl9ZWxzZXsNDQ0KDQ0NCgkJCSRQX3Nob3cgPSAiWWVzIjsNDQ0KDQ0NCgkJfQ0NDQoNDQ0KCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9tYWluIFNldCBwc2hvdyA9ICciLiRQX3Nob3cuIicgd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIiKTsNDQ0KDQ0NCgkJaGVhZGVyKCJMb2NhdGlvbjogbWFpbi5waHAiKTsNDQ0KDQ0NCgkJZGllOw0NDQoNDQ0KCX0NDQ0KDQ0NCglpZiAoY2hwKCdDX1RZUEUnKSA9PSAiRkVBVFVSRSIpDQ0NCg0NDQoJew0NDQoNDQ0KCQlpZiAoY2hwKCdQX3Nob3cnKSA9PSAiWWVzIikNDQ0KDQ0NCgkJew0NDQoNDQ0KCQkJJFBfc2hvdyA9ICJObyI7DQ0NCg0NDQoJCX1lbHNlew0NDQoNDQ0KCQkJJFBfc2hvdyA9ICJZZXMiOw0NDQoNDQ0KCQl9DQ0NCg0NDQoJCSRVUEQgPSBxcnlfcnVuKCJVcGRhdGUgdGJsX21haW4gU2V0IGZlYXR1cmUgPSAnIi4kUF9zaG93LiInIHdoZXJlIG1haW5pZCA9ICIuY2hfbHZsKCdtaWQnKS4iIik7DQ0NCg0NDQoJCWhlYWRlcigiTG9jYXRpb246IG1haW4ucGhwIik7DQ0NCg0NDQoJCWRpZTsNDQ0KDQ0NCgl9DQ0NCg0NDQp9DQ0NCg0NDQppZiAoY2hwKCdMVkwnKSA9PSAyKQ0NDQoNDQ0Kew0NDQoNDQ0KCWlmIChjaHAoJ0NfVFlQRScpID09ICJORVciKQ0NDQoNDQ0KCXsNDQ0KDQ0NCgkJaWYgKGNocCgncG5hbWUnKSAhPSAiIikNDQ0KDQ0NCgkJew0NDQoNDQ0KCQkJJFFSWSA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX3NlY3Rpb24gd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIgQU5EIHBuYW1lID0gJyIuY2hwKCdwbmFtZScpLiInIik7DQ0NCg0NDQoJCQlpZiAobnVtX3JlYygkUVJZKSA+IDApDQ0NCg0NDQoJCQl7DQ0NCg0NDQoJCQkJPz4NDQ0KDQ0NCgkJCQk8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0Ij4NDQ0KDQ0NCgkJCQlhbGVydCAoIlRoaXMgQ2F0ZWdvcnkgTmFtZSBhbHJlYWR5IGluIE9VUiBEQVRBQkFTRSIpOw0NDQoNDQ0KCQkJCWhpc3RvcnkuZ28oLTEpOw0NDQoNDQ0KCQkJCTwvc2NyaXB0Pg0NDQoNDQ0KCQkJCTw/cGhwDQ0NCg0NDQoJCQkJaGVhZGVyKCJMb2NhdGlvbjogc2VjaW9ucy5waHA/bWlkPSIuY2hfbHZsKCdtaWQnKSk7DQ0NCg0NDQoJCQkJZGllOw0NDQoNDQ0KCQkJfWVsc2V7DQ0NCg0NDQoJCQkJJHJhbmsgPSAwOw0NDQoNDQ0KCQkJCSRSTksgPSBxcnlfcnVuKCJzZWxlY3QgKiBmcm9tIHRibF9zZWN0aW9uIHdoZXJlIG1haW5pZCA9ICIuY2hfbHZsKCdtaWQnKS4iIG9yZGVyIGJ5IHJhbmtpbmcgREVTQyIpOw0NDQoNDQ0KCQkJCWlmIChudW1fcmVjKCRSTkspID4gMCkNDQ0KDQ0NCgkJCQl7DQ0NCg0NDQoJCQkJCSRyayA9IGZldGNoX3JlYygkUk5LKTsNDQ0KDQ0NCgkJCQkJJHJhbmsgPSAkcmtbJ3JhbmtpbmcnXSArIDE7DQ0NCg0NDQoJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCSRyYW5rID0gMTsNDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQkJJElOQyA9IHFyeV9ydW4oIkluc2VydCBpbnRvIHRibF9zZWN0aW9uIChtYWluaWQscG5hbWUscGRldGFpbCxwc2hvdyxwaGVhZCxrZXl3b3JkcyxkZXNjcmlwdGlvbixyYW5raW5nLHVybCkgVmFsdWVzKCIuY2hfbHZsKCdtaWQnKS4iLCciLmh0bWxzcGVjaWFsY2hhcnMoY2hwKCdwbmFtZScpLCBFTlRfUVVPVEVTKS4iJywnIi5odG1sc3BlY2lhbGNoYXJzKGNocCgncGRldGFpbCcpLCBFTlRfUVVPVEVTKS4iJywnIi5jaF9jaGtiKCdwc2hvdycpLiInLCciLmh0bWxzcGVjaWFsY2hhcnMoY2hwKCdwaGVhZCcpLCBFTlRfUVVPVEVTKS4iJywnIi5odG1sc3BlY2lhbGNoYXJzKGNocCgna2V5d29yZHMnKSwgRU5UX1FVT1RFUykuIicsJyIuaHRtbHNwZWNpYWxjaGFycyhjaHAoJ2Rlc2NyaXB0aW9uJyksIEVOVF9RVU9URVMpLiInLCIuJHJhbmsuIiwnIi5odG1sc3BlY2lhbGNoYXJzKGNocCgndXJsJyksIEVOVF9RVU9URVMpLiInKSIpOw0NDQoNDQ0KCQkJCWlmICghJElOQykNDQ0KDQ0NCgkJCQl7DQ0NCg0NDQoJCQkJCWVjaG8gbXlzcWxfZXJyb3IoKTsNDQ0KDQ0NCgkJCQkJZGllOw0NDQoNDQ0KCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkkbGFzdF9pZCA9IG15c3FsX2luc2VydF9pZCgpOw0NDQoNDQ0KCQkJCQkvLy0tLS0tLS0gVVBMT0FEIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQ0KDQ0NCgkJCQkJLy8kc3ViX3BhdGggPSAiLi4vcGljdHVyZXMvIjsNDQ0KDQ0NCgkJCQkJJGltZzEgPSAiIjsNDQ0KDQ0NCgkJCQkJJGltZzIgPSAiIjsNDQ0KDQ0NCgkJCQkJJHBpYzEgPSBjaF9sdmwoJ21pZCcpLiJfIi4kbGFzdF9pZC4iX3BpY18xLiI7DQ0NCg0NDQoJCQkJCSRwaWMyID0gY2hfbHZsKCdtaWQnKS4iXyIuJGxhc3RfaWQuIl9waWNfMi4iOw0NDQoNDQ0KCQkJCQlpZiAoY2hfZmlsZSgnaW1nMScpID09ICJZZXMiKQ0NDQoNDQ0KCQkJCQl7DQ0NCg0NDQoJCQkJCQkkZXh0ID0gZG9fZmlsZSgnaW1nMScsJHBpYzEsJHN1Yl9wYXRoKTsNDQ0KCQkJCQkJDQ0NCg0NDQoJCQkJCQlpZiAoJGV4dCA9PSAiTm8iKQ0NDQoNDQ0KCQkJCQkJew0NDQoNDQ0KCQkJCQkJCSRpbWcxID0gIiI7DQ0NCg0NDQoJCQkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJCQkkaW1nMSA9ICRwaWMxLiRleHQ7DQ0NCg0NDQoJCQkJCQkJLy8kaW1nMSA9IGNyX2ltYWdlKCRpbWczLDgwLFcsJGV4dCwkcGljMSwkc3ViX3BhdGgpOw0NDQoNDQ0KCQkJCQkJCS8vdW5saW5rKCIuLi9jYXRlZ29yeS8iLiRpbWczKTsNDQ0KDQ0NCgkJCQkJCQkvLyRpbWczID0gIiI7DQ0NCg0NDQoJCQkJCQl9DQ0NCg0NDQoJCQkJCX0NDQ0KDQ0NCgkJCQkJJGltZzIgPSAiIjsNDQ0KDQ0NCgkJCQkJJHBpYzIgPSBjaF9sdmwoJ21pZCcpLiJfIi4kbGFzdF9pZC4iX3BpY18yLiI7DQ0NCg0NDQoJCQkJCWlmIChjaF9maWxlKCdpbWcyJykgPT0gIlllcyIpDQ0NCg0NDQoJCQkJCXsNDQ0KDQ0NCgkJCQkJCSRleHQgPSBkb19maWxlKCdpbWcyJywkcGljMiwkc3ViX3BhdGgpOw0NDQoJCQkJCQ0NDQoNDQ0KCQkJCQkJaWYgKCRleHQgPT0gIk5vIikNDQ0KDQ0NCgkJCQkJCXsNDQ0KDQ0NCgkJCQkJCQkkaW1nMiA9ICIiOw0NDQoNDQ0KCQkJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCQkJJGltZzIgPSAkcGljMi4kZXh0Ow0NDQoNDQ0KCQkJCQkJfQ0NDQoNDQ0KCQkJCQl9DQ0NCg0NDQoJCQkJCSRwaWMzID0gY2hfbHZsKCdtaWQnKS4iXyIuJGxhc3RfaWQuIl9waWNfMy4iOw0NDQoNDQ0KCQkJCQlpZiAoY2hfZmlsZSgnaW1nMycpID09ICJZZXMiKQ0NDQoNDQ0KCQkJCQl7DQ0NCg0NDQoJCQkJCQkkZXh0ID0gZG9fZmlsZSgnaW1nMycsJHBpYzMsJHN1Yl9wYXRoKTsNDQ0KCQkJCQkNDQ0KDQ0NCgkJCQkJCWlmICgkZXh0ID09ICJObyIpDQ0NCg0NDQoJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJJGltZzMgPSAiIjsNDQ0KDQ0NCgkJCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkJCSRpbWczID0gJHBpYzMuJGV4dDsNDQ0KDQ0NCgkJCQkJCX0NDQ0KDQ0NCgkJCQkJfQ0NDQoJCQkJCQ0NDQoJCQkJCSRVUEQgPSBxcnlfcnVuKCJVcGRhdGUgdGJsX3NlY3Rpb24gU2V0IGltZzEgPSAnIi4kaW1nMS4iJyxpbWcyID0gJyIuJGltZzIuIicsaW1nMyA9ICciLiRpbWczLiInIHdoZXJlIHNlY2lkID0gIi4kbGFzdF9pZC4iIik7DQ0NCg0NDQoJCQkJCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVUExPQUQgRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkJCWhlYWRlcigiTG9jYXRpb246IHNlY2lvbnMucGhwP21pZD0iLmNoX2x2bCgnbWlkJykpOw0NDQoNDQ0KCQkJCQlkaWU7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJfQ0NDQoNDQ0KCQl9DQ0NCg0NDQoJfQ0NDQoNDQ0KCS8vLS0tLS0tLSBORVcgRU5EIC0tLS0tLS0tLS0tLQ0NDQoNDQ0KCWlmIChjaHAoJ0NfVFlQRScpID09ICJFRElUIikNDQ0KDQ0NCgl7DQ0NCg0NDQoJCWlmIChjaHAoJ3BuYW1lJykgIT0gIiIpDQ0NCg0NDQoJCXsNDQ0KDQ0NCgkJCS8vLS0tLS0tLSBVUExPQUQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoNDQ0KCQkJLy8kc3ViX3BhdGggPSAiLi4vY2F0ZWdvcnkvIjsNDQ0KDQ0NCgkJCSRsYXN0X2lkID0gY2hfbHZsKCdzZWMnKTsNDQ0KDQ0NCgkJCSRpbWcxID0gIiI7DQ0NCg0NDQoJCQkkaW1nMyA9ICIiOw0NDQoNDQ0KCQkJJHBpYzEgPSBjaF9sdmwoJ21pZCcpLiJfIi4kbGFzdF9pZC4iX3BpY18xLiI7DQ0NCg0NDQoJCQkkcGljMiA9IGNoX2x2bCgnbWlkJykuIl8iLiRsYXN0X2lkLiJfcGljXzIuIjsNDQ0KDQ0NCgkJCWlmIChjaF9maWxlKCdpbWcxJykgPT0gIlllcyIpDQ0NCg0NDQoJCQl7DQ0NCg0NDQoJCQkJJGV4dCA9IGRvX2ZpbGUoJ2ltZzEnLCRwaWMxLCRzdWJfcGF0aCk7DQ0NCg0NDQoJCQkJaWYgKCRleHQgPT0gIk5vIikNDQ0KDQ0NCgkJCQl7DQ0NCg0NDQoJCQkJCSRpbWcxID0gIiI7DQ0NCg0NDQoJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCSRpbWcxID0gJHBpYzEuJGV4dDsNDQ0KDQ0NCgkJCQkJLy8kaW1nMSA9IGNyX2ltYWdlKCRpbWczLDgwLFcsJGV4dCwkcGljMSwkc3ViX3BhdGgpOw0NDQoNDQ0KCQkJCQkvL3VubGluaygiLi4vY2F0ZWdvcnkvIi4kaW1nMyk7DQ0NCg0NDQoJCQkJCS8vJGltZzMgPSAiIjsNDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkkaW1nMSA9IGNocCgnaW1nczEnKTsNDQ0KDQ0NCgkJCX0NDQ0KDQ0NCgkJCSRpbWcyID0gIiI7DQ0NCg0NDQoJCQkkcGljMiA9IGNoX2x2bCgnbWlkJykuIl8iLiRsYXN0X2lkLiJfcGljXzIuIjsNDQ0KDQ0NCgkJCWlmIChjaF9maWxlKCdpbWcyJykgPT0gIlllcyIpDQ0NCg0NDQoJCQl7DQ0NCg0NDQoJCQkJJGV4dCA9IGRvX2ZpbGUoJ2ltZzInLCRwaWMyLCRzdWJfcGF0aCk7DQ0NCg0NDQoJCQkJaWYgKCRleHQgPT0gIk5vIikNDQ0KDQ0NCgkJCQl7DQ0NCg0NDQoJCQkJCSRpbWcyID0gIiI7DQ0NCg0NDQoJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCSRpbWcyID0gJHBpYzIuJGV4dDsNDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkkaW1nMiA9IGNocCgnaW1nczInKTsNDQ0KDQ0NCgkJCX0NDQ0KDQ0NCg0NDQoJCQkkcGljMyA9IGNoX2x2bCgnbWlkJykuIl8iLiRsYXN0X2lkLiJfcGljXzMuIjsNDQ0KDQ0NCgkJCWlmIChjaF9maWxlKCdpbWczJykgPT0gIlllcyIpDQ0NCg0NDQoJCQl7DQ0NCg0NDQoJCQkJJGV4dCA9IGRvX2ZpbGUoJ2ltZzMnLCRwaWMzLCRzdWJfcGF0aCk7DQ0NCg0NDQoJCQkJaWYgKCRleHQgPT0gIk5vIikNDQ0KDQ0NCgkJCQl7DQ0NCg0NDQoJCQkJCSRpbWczID0gIiI7DQ0NCg0NDQoJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCSRpbWczID0gJHBpYzMuJGV4dDsNDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkkaW1nMyA9IGNocCgnaW1nczMnKTsNDQ0KDQ0NCgkJCX0NDQ0KDQ0NCgkJCS8vLS0tLS0tLSBVUExPQUQgRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9zZWN0aW9uIFNldCBwbmFtZSA9ICciLmNoaHRtbCgncG5hbWUnKS4iJyx1cmwgPSAnIi5jaGh0bWwoJ3VybCcpLiInLHBkZXRhaWwgPSAnIi5jaGh0bWwoJ3BkZXRhaWwnKS4iJyxwc2hvdyA9ICciLmNoX2Noa2IoJ3BzaG93JykuIicscGhlYWQgPSAnIi5jaGh0bWwoJ3BoZWFkJykuIicsa2V5d29yZHMgPSAnIi5jaGh0bWwoJ2tleXdvcmRzJykuIicsZGVzY3JpcHRpb24gPSAnIi5jaGh0bWwoJ2Rlc2NyaXB0aW9uJykuIicsaW1nMSA9ICciLiRpbWcxLiInLGltZzIgPSAnIi4kaW1nMi4iJyxpbWczID0gJyIuJGltZzMuIicgd2hlcmUgc2VjaWQgPSAiLmNoX2x2bCgnc2VjJykuIiIpOw0NDQoNDQ0KCQkJaGVhZGVyKCJMb2NhdGlvbjogc2VjaW9ucy5waHA/bWlkPSIuY2hfbHZsKCdtaWQnKSk7DQ0NCg0NDQoJCQlkaWU7CQ0NDQoNDQ0KCQl9DQ0NCg0NDQoJfQ0NDQoNDQ0KCS8vLS0tLS0tIEVESVQgRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoNDQ0KCWlmIChjaHAoJ0NfVFlQRScpID09ICJERUwiKQ0NDQoNDQ0KCXsNDQ0KDQ0NCgkJaWYgKGNoX2x2bCgnbWlkJykgIT0gIiIgJiYgY2hfbHZsKCdzZWMnKSAhPSAiIikNDQ0KDQ0NCgkJew0NDQoNDQ0KCQkJJENISyA9IHFyeV9ydW4oIlNlbGVjdCAqIGZyb20gdGJsX2NhdCB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiBBTkQgc2VjaWQgPSAiLmNoX2x2bCgnc2VjJykuIiIpOw0NDQoNDQ0KCQkJaWYgKG51bV9yZWMoJENISykgPiAwKQ0NDQoNDQ0KCQkJew0NDQoNDQ0KCQkJCWhlYWRlcigiTG9jYXRpb246IHNlY2lvbnMucGhwP2VyPVkmbWlkPSIuY2hfbHZsKCdtaWQnKSk7DQ0NCg0NDQoJCQkJZGllOw0NDQoNDQ0KCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCSRDSEsgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF9wcm9kcyB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiBBTkQgc2VjaWQgPSAiLmNoX2x2bCgnc2VjJykuIiIpOw0NDQoNDQ0KCQkJCQlpZiAobnVtX3JlYygkQ0hLKSA+IDApDQ0NCg0NDQoJCQkJCXsNDQ0KDQ0NCgkJCQkJCWhlYWRlcigiTG9jYXRpb246IHNlY2lvbnMucGhwP2VyPVkmbWlkPSIuY2hfbHZsKCdtaWQnKSk7DQ0NCg0NDQoJCQkJCQlkaWU7DQ0NCg0NDQoJCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkJCSRJTUcgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF9zZWN0aW9uIHdoZXJlIG1haW5pZCA9ICIuY2hfbHZsKCdtaWQnKS4iIEFORCBzZWNpZCA9ICIuY2hfbHZsKCdzZWMnKS4iIik7DQ0NCg0NDQoJCQkJCQkJaWYgKG51bV9yZWMoJElNRykgPiAwKQ0NDQoNDQ0KCQkJCQkJCXsNDQ0KDQ0NCgkJCQkJCQkJJHJtID0gZmV0Y2hfcmVjKCRJTUcpOw0NDQoNDQ0KCQkJCQkJCQlpZiAoZmlsZV9leGlzdHMoIi4uL3BpY3R1cmVzLyIuJHJtWydpbWcxJ10pKSANDQ0KDQ0NCgkJCQkJCQkJew0NDQoNDQ0KCQkJCQkJCQkJdW5saW5rKCIuLi9waWN0dXJlcy8iLiRybVsnaW1nMSddKTsNDQ0KDQ0NCgkJCQkJCQkJfQ0NDQoNDQ0KCQkJCQkJCX0NDQ0KDQ0NCgkJCQkJCQ0NDQoNDQ0KCQkJCQkJCSRERUwgPSBxcnlfcnVuKCJEZWxldGUgZnJvbSB0Ymxfc2VjdGlvbiB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiBBTkQgc2VjaWQgPSAiLmNoX2x2bCgnc2VjJykuIiIpOw0NDQoNDQ0KCQkJCQkJCS8vLS0tIFJFLVJBQktJTkcgLS0tLS0NDQ0KDQ0NCgkJCQkJCQkkcmFuayA9IDE7DQ0NCg0NDQoJCQkJCQkJJFJOSyA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX3NlY3Rpb24gd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIgb3JkZXIgYnkgcmFua2luZyIpOw0NDQoNDQ0KCQkJCQkJCWlmIChudW1fcmVjKCRSTkspID4gMCkNDQ0KDQ0NCgkJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJCXdoaWxlKCRyayA9IGZldGNoX3JlYygkUk5LKSkNDQ0KDQ0NCgkJCQkJCQkJew0NDQoNDQ0KCQkJCQkJCQkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0Ymxfc2VjdGlvbiBTZXQgcmFua2luZyA9ICIuJHJhbmsuIiB3aGVyZSBzZWNpZCA9ICIuJHJrWydzZWNpZCddLiIiKTsNDQ0KDQ0NCgkJCQkJCQkJCSRyYW5rID0gJHJhbmsgKyAxOw0NDQoNDQ0KCQkJCQkJCQl9DQ0NCg0NDQoJCQkJCQkJfQ0NDQoNDQ0KCQkJCQkJCS8vLS0tLS0gRU5EIFJhbmtpbmcgLS0tDQ0NCg0NDQoJCQkJCX0NDQ0KDQ0NCgkJCX0NDQ0KDQ0NCgkJCWhlYWRlcigiTG9jYXRpb246IHNlY2lvbnMucGhwP21pZD0iLmNoX2x2bCgnbWlkJykpOw0NDQoNDQ0KCQkJZGllOw0NDQoNDQ0KCQl9DQ0NCg0NDQoJfQ0NDQoNDQ0KCS8vLS0tLSBERUwgRU5EIC0tLS0tLS0NDQ0KDQ0NCglpZiAoY2hwKCdDX1RZUEUnKSA9PSAiUFNIT1ciKQ0NDQoNDQ0KCXsNDQ0KDQ0NCgkJaWYgKGNocCgnUF9zaG93JykgPT0gIlllcyIpDQ0NCg0NDQoJCXsNDQ0KDQ0NCgkJCSRQX3Nob3cgPSAiTm8iOw0NDQoNDQ0KCQl9ZWxzZXsNDQ0KDQ0NCgkJCSRQX3Nob3cgPSAiWWVzIjsNDQ0KDQ0NCgkJfQ0NDQoNDQ0KCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9zZWN0aW9uIFNldCBwc2hvdyA9ICciLiRQX3Nob3cuIicgd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIgQU5EIHNlY2lkID0gIi5jaF9sdmwoJ3NlYycpLiIiKTsNDQ0KDQ0NCgkJaGVhZGVyKCJMb2NhdGlvbjogc2VjaW9ucy5waHA/bWlkPSIuY2hfbHZsKCdtaWQnKSk7DQ0NCg0NDQoJCWRpZTsNDQ0KDQ0NCgl9DQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIkZFQVRVUkUiKQ0NDQoNDQ0KCXsNDQ0KDQ0NCgkJaWYgKGNocCgnUF9zaG93JykgPT0gIlllcyIpDQ0NCg0NDQoJCXsNDQ0KDQ0NCgkJCSRQX3Nob3cgPSAiTm8iOw0NDQoNDQ0KCQl9ZWxzZXsNDQ0KDQ0NCgkJCSRQX3Nob3cgPSAiWWVzIjsNDQ0KDQ0NCgkJfQ0NDQoNDQ0KCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9zZWN0aW9uIFNldCBmZWF0dXJlID0gJyIuJFBfc2hvdy4iJyB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiBBTkQgc2VjaWQgPSAiLmNoX2x2bCgnc2VjJykuIiIpOw0NDQoNDQ0KCQloZWFkZXIoIkxvY2F0aW9uOiBzZWNpb25zLnBocD9taWQ9Ii5jaF9sdmwoJ21pZCcpKTsNDQ0KDQ0NCgkJZGllOw0NDQoNDQ0KCX0NDQ0KDQ0NCn0NDQ0KDQ0NCmlmIChjaHAoJ0xWTCcpID09IDMpDQ0NCg0NDQp7DQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIk5FVyIpDQ0NCg0NDQoJew0NDQoNDQ0KCQlpZiAoY2hwKCdwbmFtZScpICE9ICIiKQ0NDQoNDQ0KCQl7DQ0NCg0NDQoJCQkkUVJZID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfY2F0IHdoZXJlIG1haW5pZCA9ICIuY2hfbHZsKCdtaWQnKS4iIEFORCBzZWNpZCA9ICIuY2hfbHZsKCdzZWMnKS4iIEFORCBwbmFtZSA9ICciLmNocCgncG5hbWUnKS4iJyIpOw0NDQoNDQ0KCQkJaWYgKG51bV9yZWMoJFFSWSkgPiAwKQ0NDQoNDQ0KCQkJew0NDQoNDQ0KCQkJCT8+DQ0NCg0NDQoJCQkJPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCI+DQ0NCg0NDQoJCQkJYWxlcnQgKCJUaGlzIENhdGVnb3J5IE5hbWUgYWxyZWFkeSBpbiBPVVIgREFUQUJBU0UiKTsNDQ0KDQ0NCgkJCQloaXN0b3J5LmdvKC0xKTsNDQ0KDQ0NCgkJCQk8L3NjcmlwdD4NDQ0KDQ0NCgkJCQk8P3BocA0NDQoNDQ0KCQkJCWhlYWRlcigiTG9jYXRpb246IGNhdGVnb3J5LnBocD9taWQ9Ii5jaF9sdmwoJ21pZCcpLiImc2VjPSIuY2hfbHZsKCdzZWMnKSk7DQ0NCg0NDQoJCQkJZGllOw0NDQoNDQ0KCQkJfWVsc2V7DQ0NCg0NDQoJCQkJJHJhbmsgPSAwOw0NDQoNDQ0KCQkJCSRSTksgPSBxcnlfcnVuKCJzZWxlY3QgKiBmcm9tIHRibF9jYXQgd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIgQU5EIHNlY2lkID0gIi5jaF9sdmwoJ3NlYycpLiIgb3JkZXIgYnkgcmFua2luZyBERVNDIik7DQ0NCg0NDQoJCQkJaWYgKG51bV9yZWMoJFJOSykgPiAwKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJJHJrID0gZmV0Y2hfcmVjKCRSTkspOw0NDQoNDQ0KCQkJCQkkcmFuayA9ICRya1sncmFua2luZyddICsgMTsNDQ0KDQ0NCgkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJJHJhbmsgPSAxOw0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCQkkSU5DID0gcXJ5X3J1bigiSW5zZXJ0IGludG8gdGJsX2NhdCAobWFpbmlkLHNlY2lkLHBuYW1lLHBkZXRhaWwscHNob3cscGhlYWQsa2V5d29yZHMsZGVzY3JpcHRpb24sdXJsLHJhbmtpbmcpIFZhbHVlcygiLmNoX2x2bCgnbWlkJykuIiwiLmNoX2x2bCgnc2VjJykuIiwnIi5odG1sc3BlY2lhbGNoYXJzKGNocCgncG5hbWUnKSwgRU5UX1FVT1RFUykuIicsJyIuaHRtbHNwZWNpYWxjaGFycyhjaHAoJ3BkZXRhaWwnKSwgRU5UX1FVT1RFUykuIicsJyIuY2hfY2hrYigncHNob3cnKS4iJywnIi5odG1sc3BlY2lhbGNoYXJzKGNocCgncGhlYWQnKSwgRU5UX1FVT1RFUykuIicsJyIuaHRtbHNwZWNpYWxjaGFycyhjaHAoJ2tleXdvcmRzJyksIEVOVF9RVU9URVMpLiInLCciLmh0bWxzcGVjaWFsY2hhcnMoY2hwKCdkZXNjcmlwdGlvbicpLCBFTlRfUVVPVEVTKS4iJywnIi5odG1sc3BlY2lhbGNoYXJzKGNocCgndXJsJyksIEVOVF9RVU9URVMpLiInLCIuJHJhbmsuIikiKTsNDQ0KDQ0NCgkJCQlpZiAoISRJTkMpDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQllY2hvIG15c3FsX2Vycm9yKCk7DQ0NCg0NDQoJCQkJCWRpZTsNDQ0KDQ0NCgkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJJGxhc3RfaWQgPSBteXNxbF9pbnNlcnRfaWQoKTsNDQ0KDQ0NCgkJCQkJLy8tLS0tLS0tIFVQTE9BRCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkJCSRpbWcxID0gIiI7DQ0NCg0NDQoJCQkJCSRwaWMxID0gY2hfbHZsKCdtaWQnKS4iXyIuY2hfbHZsKCdzZWMnKS4iXyIuJGxhc3RfaWQuIl9waWNfMS4iOw0NDQoNDQ0KCQkJCQlpZiAoY2hfZmlsZSgnaW1nMScpID09ICJZZXMiKQ0NDQoNDQ0KCQkJCQl7DQ0NCg0NDQoJCQkJCQkkZXh0ID0gZG9fZmlsZSgnaW1nMScsJHBpYzEsJHN1Yl9wYXRoKTsNDQ0KDQ0NCgkJCQkJCWlmICgkZXh0ID09ICJObyIpDQ0NCg0NDQoJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJJGltZzEgPSAiIjsNDQ0KDQ0NCgkJCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkJCSRpbWcxID0gJHBpYzEuJGV4dDsNDQ0KDQ0NCgkJCQkJCX0NDQ0KDQ0NCgkJCQkJfQ0NDQoNDQ0KCQkJCQkkaW1nMiA9ICIiOw0NDQoNDQ0KCQkJCQkkcGljMiA9IGNoX2x2bCgnbWlkJykuIl8iLmNoX2x2bCgnc2VjJykuIl8iLiRsYXN0X2lkLiJfcGljXzIuIjsNDQ0KDQ0NCgkJCQkJaWYgKGNoX2ZpbGUoJ2ltZzInKSA9PSAiWWVzIikNDQ0KDQ0NCgkJCQkJew0NDQoNDQ0KCQkJCQkJJGV4dCA9IGRvX2ZpbGUoJ2ltZzInLCRwaWMxLCRzdWJfcGF0aCk7DQ0NCg0NDQoJCQkJCQlpZiAoJGV4dCA9PSAiTm8iKQ0NDQoNDQ0KCQkJCQkJew0NDQoNDQ0KCQkJCQkJCSRpbWcyID0gIiI7DQ0NCg0NDQoJCQkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJCQkkaW1nMiA9ICRwaWMyLiRleHQ7DQ0NCg0NDQoJCQkJCQl9DQ0NCg0NDQoJCQkJCX0NDQ0KDQ0NCgkJCQkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfY2F0IFNldCBpbWcxID0gJyIuJGltZzEuIicsaW1nMiA9ICciLiRpbWcyLiInIHdoZXJlIGNhdGlkID0gIi4kbGFzdF9pZC4iIik7DQ0NCg0NDQoJCQkJCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVUExPQUQgRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkJCWhlYWRlcigiTG9jYXRpb246IGNhdGVnb3J5LnBocD9taWQ9Ii5jaF9sdmwoJ21pZCcpLiImc2VjPSIuY2hfbHZsKCdzZWMnKSk7DQ0NCg0NDQoJCQkJCWRpZTsNDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQl9DQ0NCg0NDQoJCX0NDQ0KDQ0NCgl9DQ0NCg0NDQoJLy8tLS0tLS0tIE5FVyBFTkQgLS0tLS0tLS0tLS0tDQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIkVESVQiKQ0NDQoNDQ0KCXsNDQ0KDQ0NCgkJaWYgKGNocCgncG5hbWUnKSAhPSAiIikNDQ0KDQ0NCgkJew0NDQoNDQ0KCQkJLy8tLS0tLS0tIFVQTE9BRCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkkbGFzdF9pZCA9IGNoX2x2bCgnY2F0Jyk7DQ0NCg0NDQoJCQkkaW1nMSA9ICIiOw0NDQoNDQ0KCQkJJHBpYzEgPSBjaF9sdmwoJ21pZCcpLiJfIi5jaF9sdmwoJ3NlYycpLiJfIi4kbGFzdF9pZC4iX3BpY18xLiI7DQ0NCg0NDQoJCQlpZiAoY2hfZmlsZSgnaW1nMScpID09ICJZZXMiKQ0NDQoNDQ0KCQkJew0NDQoNDQ0KCQkJCSRleHQgPSBkb19maWxlKCdpbWcxJywkcGljMSwkc3ViX3BhdGgpOw0NDQoNDQ0KCQkJCWlmICgkZXh0ID09ICJObyIpDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQkkaW1nMSA9ICIiOw0NDQoNDQ0KCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkkaW1nMSA9ICRwaWMxLiRleHQ7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJfWVsc2V7DQ0NCg0NDQoJCQkJJGltZzEgPSBjaHAoJ2ltZ3MxJyk7DQ0NCg0NDQoJCQl9DQ0NCg0NDQoJCQkkaW1nMiA9ICIiOw0NDQoNDQ0KCQkJJHBpYzIgPSBjaF9sdmwoJ21pZCcpLiJfIi5jaF9sdmwoJ3NlYycpLiJfIi4kbGFzdF9pZC4iX3BpY18yLiI7DQ0NCg0NDQoJCQlpZiAoY2hfZmlsZSgnaW1nMicpID09ICJZZXMiKQ0NDQoNDQ0KCQkJew0NDQoNDQ0KCQkJCSRleHQgPSBkb19maWxlKCdpbWcyJywkcGljMSwkc3ViX3BhdGgpOw0NDQoNDQ0KCQkJCWlmICgkZXh0ID09ICJObyIpDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQkkaW1nMiA9ICIiOw0NDQoNDQ0KCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkkaW1nMiA9ICRwaWMyLiRleHQ7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJfWVsc2V7DQ0NCg0NDQoJCQkJJGltZzIgPSBjaHAoJ2ltZ3MyJyk7DQ0NCg0NDQoJCQl9DQ0NCg0NDQoJCQkvLy0tLS0tLS0gVVBMT0FEIEVORCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoNDQ0KCQkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfY2F0IFNldCBwbmFtZSA9ICciLmNoaHRtbCgncG5hbWUnKS4iJyxwZGV0YWlsID0gJyIuY2hodG1sKCdwZGV0YWlsJykuIicscHNob3cgPSAnIi5jaF9jaGtiKCdwc2hvdycpLiInLHBoZWFkID0gJyIuY2hodG1sKCdwaGVhZCcpLiInLGtleXdvcmRzID0gJyIuY2hodG1sKCdrZXl3b3JkcycpLiInLGRlc2NyaXB0aW9uID0gJyIuY2hodG1sKCdkZXNjcmlwdGlvbicpLiInLHVybCA9ICciLmNoaHRtbCgndXJsJykuIicsaW1nMSA9ICciLiRpbWcxLiInLGltZzIgPSAnIi4kaW1nMi4iJyB3aGVyZSBjYXRpZCA9ICIuY2hfbHZsKCdjYXQnKS4iIik7DQ0NCg0NDQoJCQloZWFkZXIoIkxvY2F0aW9uOiBjYXRlZ29yeS5waHA/bWlkPSIuY2hfbHZsKCdtaWQnKS4iJnNlYz0iLmNoX2x2bCgnc2VjJykpOw0NDQoNDQ0KCQkJZGllOwkNDQ0KDQ0NCgkJfQ0NDQoNDQ0KCX0NDQ0KDQ0NCgkvLy0tLS0tLSBFRElUIEVORCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQ0KDQ0NCglpZiAoY2hwKCdDX1RZUEUnKSA9PSAiREVMIikNDQ0KDQ0NCgl7DQ0NCg0NDQoJCWlmIChjaHAoJ21pZCcpICE9ICIiICYmIGNocCgnc2VjJykgIT0gIiIgJiYgY2hwKCdjYXQnKSAhPSAiIikNDQ0KDQ0NCgkJew0NDQoNDQ0KCQkJJENISyA9IHFyeV9ydW4oIlNlbGVjdCAqIGZyb20gdGJsX3Byb2RzIHdoZXJlIG1haW5pZCA9ICIuY2hfbHZsKCdtaWQnKS4iIEFORCBzZWNpZCA9ICIuY2hfbHZsKCdzZWMnKS4iIEFORCBjYXRpZCA9ICIuY2hfbHZsKCdjYXQnKS4iIik7DQ0NCg0NDQoJCQlpZiAobnVtX3JlYygkQ0hLKSA+IDApDQ0NCg0NDQoJCQl7DQ0NCg0NDQoJCQkJaGVhZGVyKCJMb2NhdGlvbjogY2F0ZWdvcnkucGhwP2VyPVkmbWlkPSIuY2hfbHZsKCdtaWQnKS4iJnNlYz0iLmNoX2x2bCgnc2VjJykpOw0NDQoNDQ0KCQkJCWRpZTsNDQ0KDQ0NCgkJCX1lbHNlew0NDQoNDQ0KCQkJCQkkSU1HID0gcXJ5X3J1bigiU2VsZWN0ICogZnJvbSB0YmxfY2F0IHdoZXJlIG1haW5pZCA9ICIuY2hfbHZsKCdtaWQnKS4iIEFORCBzZWNpZCA9ICIuY2hfbHZsKCdzZWMnKS4iIEFORCBjYXRpZCA9ICIuY2hfbHZsKCdjYXQnKS4iIik7DQ0NCg0NDQoJCQkJCWlmIChudW1fcmVjKCRJTUcpID4gMCkNDQ0KDQ0NCgkJCQkJew0NDQoNDQ0KCQkJCQkJJHJtID0gZmV0Y2hfcmVjKCRJTUcpOw0NDQoNDQ0KCQkJCQkJaWYgKGZpbGVfZXhpc3RzKCIuLi9waWN0dXJlcy8iLiRybVsnaW1nMSddKSkgDQ0NCg0NDQoJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJdW5saW5rKCIuLi9waWN0dXJlcy8iLiRybVsnaW1nMSddKTsNDQ0KDQ0NCgkJCQkJCX0NDQ0KDQ0NCgkJCQkJfQ0NDQoNDQ0KCQkJCQkkREVMID0gcXJ5X3J1bigiRGVsZXRlIGZyb20gdGJsX2NhdCB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiBBTkQgc2VjaWQgPSAiLmNoX2x2bCgnc2VjJykuIiBBTkQgY2F0aWQgPSAiLmNoX2x2bCgnY2F0JykuIiIpOw0NDQoNDQ0KCQkJCQkvLy0tLSBSRS1SQUJLSU5HIC0tLS0tDQ0NCg0NDQoJCQkJCSRyYW5rID0gMTsNDQ0KDQ0NCgkJCQkJJFJOSyA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX2NhdCB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiBBTkQgc2VjaWQgPSAiLmNoX2x2bCgnc2VjJykuIiBvcmRlciBieSByYW5raW5nIik7DQ0NCg0NDQoJCQkJCWlmIChudW1fcmVjKCRSTkspID4gMCkNDQ0KDQ0NCgkJCQkJew0NDQoNDQ0KCQkJCQkJd2hpbGUoJHJrID0gZmV0Y2hfcmVjKCRSTkspKQ0NDQoNDQ0KCQkJCQkJew0NDQoNDQ0KCQkJCQkJCSRVUEQgPSBxcnlfcnVuKCJVcGRhdGUgdGJsX2NhdCBTZXQgcmFua2luZyA9ICIuJHJhbmsuIiB3aGVyZSBjYXRpZCA9ICIuJHJrWydjYXRpZCddLiIiKTsNDQ0KDQ0NCgkJCQkJCQkkcmFuayA9ICRyYW5rICsgMTsNDQ0KDQ0NCgkJCQkJCX0NDQ0KDQ0NCgkJCQkJfQ0NDQoNDQ0KCQkJCQkvLy0tLS0tIEVORCBSYW5raW5nIC0tLQ0NDQoNDQ0KCQkJfQ0NDQoNDQ0KCQkJaGVhZGVyKCJMb2NhdGlvbjogY2F0ZWdvcnkucGhwP21pZD0iLmNoX2x2bCgnbWlkJykuIiZzZWM9Ii5jaF9sdmwoJ3NlYycpKTsNDQ0KDQ0NCgkJCWRpZTsNDQ0KDQ0NCgkJfQ0NDQoNDQ0KCX0NDQ0KDQ0NCgkvLy0tLS0gREVMIEVORCAtLS0tLS0tDQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIlBTSE9XIikNDQ0KDQ0NCgl7DQ0NCg0NDQoJCWlmIChjaHAoJ1Bfc2hvdycpID09ICJZZXMiKQ0NDQoNDQ0KCQl7DQ0NCg0NDQoJCQkkUF9zaG93ID0gIk5vIjsNDQ0KDQ0NCgkJfWVsc2V7DQ0NCg0NDQoJCQkkUF9zaG93ID0gIlllcyI7DQ0NCg0NDQoJCX0NDQ0KDQ0NCgkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfY2F0IFNldCBwc2hvdyA9ICciLiRQX3Nob3cuIicgd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIgQU5EIHNlY2lkID0gIi5jaF9sdmwoJ3NlYycpLiIgQU5EIGNhdGlkID0gIi5jaF9sdmwoJ2NhdCcpLiIiKTsNDQ0KDQ0NCgkJaGVhZGVyKCJMb2NhdGlvbjogY2F0ZWdvcnkucGhwP21pZD0iLmNoX2x2bCgnbWlkJykuIiZzZWM9Ii5jaF9sdmwoJ3NlYycpKTsNDQ0KDQ0NCgkJZGllOw0NDQoNDQ0KCX0NDQ0KDQ0NCn0NDQ0KDQ0NCmlmIChjaHAoJ0xWTCcpID09IDQpDQ0NCg0NDQp7DQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIk5FVyIpDQ0NCg0NDQoJew0NDQoNDQ0KCQlpZiAoY2hwKCdwbmFtZScpICE9ICIiKQ0NDQoNDQ0KCQl7DQ0NCg0NDQoJCQkNDQ0KDQ0NCgkJCSRRUlkgPSBxcnlfcnVuKCJzZWxlY3QgKiBmcm9tIHRibF9wcm9kcyB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiBBTkQgc2VjaWQgPSAiLmNoX2x2bCgnc2VjJykuIiBBTkQgY2F0aWQgPSAiLmNoX2x2bCgnY2F0JykuIiBBTkQgcGNvZGUgPSAnIi5jaHAoJ3Bjb2RlJykuIiciKTsNDQ0KDQ0NCgkJCWlmIChudW1fcmVjKCRRUlkpID4gMCkNDQ0KDQ0NCgkJCXsNDQ0KDQ0NCgkJCQk/Pg0NDQoNDQ0KCQkJCTxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiPg0NDQoNDQ0KCQkJCWFsZXJ0ICgiVGhpcyBJdGVtIE5hbWUgYWxyZWFkeSBpbiBPVVIgREFUQUJBU0UiKTsNDQ0KDQ0NCgkJCQloaXN0b3J5LmdvKC0xKTsNDQ0KDQ0NCgkJCQk8L3NjcmlwdD4NDQ0KDQ0NCgkJCQk8P3BocA0NDQoNDQ0KCQkJCWhlYWRlcigiTG9jYXRpb246IHByb2RzLnBocD9taWQ9Ii5jaF9sdmwoJ21pZCcpLiImc2VjPSIuY2hfbHZsKCdzZWMnKS4iJmNhdD0iLmNoX2x2bCgnY2F0JykpOw0NDQoNDQ0KCQkJCWRpZTsNDQ0KDQ0NCgkJCX1lbHNlew0NDQoNDQ0KCQkJCSRyYW5rID0gMDsNDQ0KDQ0NCgkJCQkkUk5LID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfcHJvZHMgd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIgQU5EIHNlY2lkID0gIi5jaF9sdmwoJ3NlYycpLiIgQU5EIGNhdGlkID0gIi5jaF9sdmwoJ2NhdCcpLiIgb3JkZXIgYnkgcmFua2luZyBERVNDIik7DQ0NCg0NDQoJCQkJaWYgKG51bV9yZWMoJFJOSykgPiAwKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJJHJrID0gZmV0Y2hfcmVjKCRSTkspOw0NDQoNDQ0KCQkJCQkkcmFuayA9ICRya1sncmFua2luZyddICsgMTsNDQ0KDQ0NCgkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJJHJhbmsgPSAxOw0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCQkkcGFydCA9IDA7DQ0NCg0NDQoJCQkJJEFSVCA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX3Byb2RzIG9yZGVyIGJ5IHBpZCBERVNDIik7DQ0NCg0NDQoJCQkJaWYgKG51bV9yZWMoJEFSVCkgPiAwKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJJHJ0ID0gZmV0Y2hfcmVjKCRBUlQpOw0NDQoNDQ0KCQkJCQkkcGFydCA9ICRydFsncGFydCddICsgMTsNDQ0KDQ0NCgkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJJHBhcnQgPSAxMDAxOw0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCQkkcmFuZF9pZCA9IHJhbmQoMCw5OTk5OTk5OSk7DQ0NCg0NDQoJCQkJJENIS19SID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfcHJvZHMgd2hlcmUgcmFuZF9pZCA9ICciLiRyYW5kX2lkLiInIik7DQ0NCg0NDQoJCQkJaWYgKG51bV9yZWMoJENIS19SKSA+IDApDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQkkcmFuZF9pZCA9IHJhbmQoMCw4ODg4ODg4OCk7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJCWlmIChjaHAoJ2JyYW5kJykgIT0gIiIpDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQkkYnJhbmQgPSBleHBsb2RlKCJeIixjaHAoJ2JyYW5kJykpOw0NDQoNDQ0KCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkkYnJhbmRbMF0gPSAwOw0NDQoNDQ0KCQkJCQkkYnJhbmRbMV0gPSAiIjsNDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQkJJElOQyA9IHFyeV9ydW4oIkluc2VydCBpbnRvIHRibF9wcm9kcyAobWFpbmlkLHNlY2lkLGNhdGlkLHBuYW1lLHBjb2RlLHBhcnQsc2RldGFpbCxwZGV0YWlsLHBzaG93LHBoZWFkLGtleXdvcmRzLGRlc2NyaXB0aW9uLHJhbmtpbmcsZnJvbV9oZWFkLGZyb21fbGluayxwZGF0ZSxsYXN0X3VwZGF0ZSxyYW5kX2lkLGZlYXR1cmUsc3BlY2lhbCxuZXcsbWFya2V0X3JhdGUscHJhdGUsc3BsX3JhdGUsc3RvY2ssc2hpcHBpbmcsdGF4LGZyZWVfc2hpcHBpbmcsdGF4YWJsZSxicmFuZGlkLGJyYW5kX25hbWUsd2hvbGVfc2FsZV9yYXRlKSBWYWx1ZXMoIi5jaF9sdmwoJ21pZCcpLiIsIi5jaF9sdmwoJ3NlYycpLiIsIi5jaF9sdmwoJ2NhdCcpLiIsJyIuY2hwKCdwbmFtZScpLiInLCciLmNocCgncGNvZGUnKS4iJywnIi5jaHAoJ3BhcnQnKS4iJywnIi5jaHAoJ3NkZXRhaWwnKS4iJywnIi5jaHAoJ3BkZXRhaWwnKS4iJywnIi5jaF9jaGtiKCdwc2hvdycpLiInLCciLmh0bWxzcGVjaWFsY2hhcnMoY2hwKCdwaGVhZCcpLCBFTlRfUVVPVEVTKS4iJywnIi5odG1sc3BlY2lhbGNoYXJzKGNocCgna2V5d29yZHMnKSwgRU5UX1FVT1RFUykuIicsJyIuaHRtbHNwZWNpYWxjaGFycyhjaHAoJ2Rlc2NyaXB0aW9uJyksIEVOVF9RVU9URVMpLiInLCIuJHJhbmsuIiwnIi5odG1sc3BlY2lhbGNoYXJzKGNocCgnZnJvbV9oZWFkJyksIEVOVF9RVU9URVMpLiInLCciLmh0bWxzcGVjaWFsY2hhcnMoY2hwKCdmcm9tX2xpbmsnKSwgRU5UX1FVT1RFUykuIicsJyIuZGF0ZSgnWS1tLWQnKS4iJywnIi5kYXRlKCdZLW0tZCcpLiInLCciLiRyYW5kX2lkLiInLCciLmNoX2Noa2IoJ2ZlYXR1cmUnKS4iJywnIi5jaF9jaGtiKCdzcGVjaWFsJykuIicsJyIuY2hfY2hrYignbmV3JykuIicsIi5jaF9sdmwoJ21hcmtldF9yYXRlJykuIiwiLmNoX2x2bCgncHJhdGUnKS4iLCIuY2hfbHZsKCdzcGxfcmF0ZScpLiIsIi5jaF9sdmwoJ3N0b2NrJykuIiwiLmNoX2x2bCgnc2hpcHBpbmcnKS4iLCIuY2hfbHZsKCd0YXgnKS4iLCciLmNoX2Noa2IoJ2ZyZWVfc2hpcHBpbmcnKS4iJywnIi5jaF9jaGtiKCd0YXhhYmxlJykuIicsIi4kYnJhbmRbMF0uIiwnIi4kYnJhbmRbMV0uIicsIi5jaF9sdmwoJ3dob2xlX3NhbGVfcmF0ZScpLiIpIik7DQ0NCg0NDQoJCQkJaWYgKCEkSU5DKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJZWNobyBteXNxbF9lcnJvcigpOw0NDQoNDQ0KCQkJCQlkaWU7DQ0NCg0NDQoJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCSRsYXN0X2lkID0gbXlzcWxfaW5zZXJ0X2lkKCk7DQ0NCg0NDQoJCQkJCS8vLS0tLS0gUHJvZHVjdCBPcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0NDQ0KDQ0NCgkJCQkJCSRRUllzID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0Ymxfb3B0aW9ucyB3aGVyZSBwc2hvdyA9ICdZZXMnIG9yZGVyIGJ5IHJhbmtpbmciKTsNDQ0KDQ0NCgkJCQkJCWlmIChudW1fcmVjKCRRUllzKSA+IDApDQ0NCg0NDQoJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJJHAgPSAxOw0NDQoNDQ0KCQkJCQkJCXdoaWxlKCRyc3MgPSBmZXRjaF9yZWMoJFFSWXMpKQ0NDQoNDQ0KCQkJCQkJCXsNDQ0KDQ0NCgkJCQkJCQkJaWYgKGlzc2V0KCRfUE9TVFsnb3B0Jy4kcnNzWydtYWluaWQnXV0pKQ0NDQoNDQ0KCQkJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJCQkkb3B0ID0gJF9QT1NUWydvcHQnLiRyc3NbJ21haW5pZCddXTsNDQ0KDQ0NCgkJCQkJCQkJCSRvcHRbXSA9IGltcGxvZGUoIiwiLCAkb3B0KTsNDQ0KDQ0NCgkJCQkJCQkJCSR0bHRfcmVjID0gIGNvdW50KCRvcHQpLTE7DQ0NCg0NDQoJCQkJCQkJCQlpZiAoJHRsdF9yZWMgPiAwKQ0NDQoNDQ0KCQkJCQkJCQkJew0NDQoNDQ0KCQkJCQkJCQkJCQ0NDQoNDQ0KCQkJCQkJCQkJCWZvciAoJGk9MTsgJGk8PSR0bHRfcmVjOyAkaSsrKQ0NDQoNDQ0KCQkJCQkJCQkJCXsNDQ0KDQ0NCgkJCQkJCQkJCQkJJFFSWW8gPSBxcnlfcnVuKCJzZWxlY3QgKiBmcm9tIHRibF9zdWJfb3B0IHdoZXJlIHN1YmlkID0gIi4kb3B0WyRpLTFdLiIgb3JkZXIgYnkgcmFua2luZyIpOw0NDQoNDQ0KCQkJCQkJCQkJCQlpZiAobnVtX3JlYygkUVJZbykgPiAwKQ0NDQoNDQ0KCQkJCQkJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJCQkJCQkkcnNvID0gZmV0Y2hfcmVjKCRRUllvKTsNDQ0KDQ0NCgkJCQkJCQkJCQkJCSRJTlNUID0gcXJ5X3J1bigiSW5zZXJ0IGludG8gdGJsX3Byb2Rfb3B0IChwaWQscG5hbWUscHJhdGUscHR5cGUsb3B0X2lkLHN1Yl9vcHRfaWQpIFZhbHVlcyAoIi4kbGFzdF9pZC4iLCciLiRyc29bJ3BuYW1lJ10uIicsIi5jaF9sdmwoJ3ByYXRlJy4kcnNvWydzdWJpZCddKS4iLCciLmNocCgncHR5cGUnLiRyc29bJ3N1YmlkJ10pLiInLCIuJHJzc1snbWFpbmlkJ10uIiwiLiRyc29bJ3N1YmlkJ10uIikiKTsNDQ0KDQ0NCgkJCQkJCQkJCQkJfQ0NDQoNDQ0KCQkJCQkJCQkJCX0NDQ0KDQ0NCgkJCQkJCQkJCX0NDQ0KDQ0NCgkJCQkJCQkJfQ0NDQoNDQ0KCQkJCQkJCX0NDQ0KDQ0NCgkJCQkJCX0NDQ0KDQ0NCgkJCQkJLy8tLS0tIEZlYXR1cmUgUmFua2luZyAtLS0tLS0tLS0tLS0tLS0tLQ0NDQoNDQ0KCQkJCQlpZiAoY2hfY2hrYignZmVhdHVyZScpID09ICJZZXMiKQ0NDQoNDQ0KCQkJCQl7DQ0NCg0NDQoJCQkJCQkkUkFOS2YgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF9wcm9kcyB3aGVyZSBmZWF0dXJlID0gJ1llcycgb3JkZXIgYnkgZmVhdHVyZV9yYW5raW5nIik7DQ0NCg0NDQoJCQkJCQkkTlVNZiA9IG51bV9yZWMoJFJBTktmKTsNDQ0KDQ0NCgkJCQkJCWlmICgkTlVNZiA+IDApDQ0NCg0NDQoJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJJG5yYW5rZiA9IDE7DQ0NCg0NDQoJCQkJCQkJd2hpbGUoJEZzZiA9IGZldGNoX3JlYygkUkFOS2YpKQ0NDQoNDQ0KCQkJCQkJCXsNDQ0KDQ0NCgkJCQkJCQkJJFVQRGYgPSBxcnlfcnVuKCJVcGRhdGUgdGJsX3Byb2RzIFNldCBmZWF0dXJlX3JhbmtpbmcgPSAiLiRucmFua2YuIiB3aGVyZSBwaWQgPSAiLiRGc2ZbJ3BpZCddLiIiKTsNDQ0KDQ0NCgkJCQkJCQkJJG5yYW5rZiA9ICRucmFua2YgKyAxOw0NDQoNDQ0KCQkJCQkJCX0NDQ0KDQ0NCgkJCQkJCX0NDQ0KDQ0NCgkJCQkJfQ0NDQoNDQ0KCQkJCQlpZiAoY2hfY2hrYignbmV3JykgPT0gIlllcyIpDQ0NCg0NDQoJCQkJCXsNDQ0KDQ0NCgkJCQkJCSRSQU5LZiA9IHFyeV9ydW4oIlNlbGVjdCAqIGZyb20gdGJsX3Byb2RzIHdoZXJlIG5ldyA9ICdZZXMnIG9yZGVyIGJ5IG5ld19yYW5raW5nIik7DQ0NCg0NDQoJCQkJCQkkTlVNZiA9IG51bV9yZWMoJFJBTktmKTsNDQ0KDQ0NCgkJCQkJCWlmICgkTlVNZiA+IDApDQ0NCg0NDQoJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJJG5yYW5rZiA9IDE7DQ0NCg0NDQoJCQkJCQkJd2hpbGUoJEZzZiA9IGZldGNoX3JlYygkUkFOS2YpKQ0NDQoNDQ0KCQkJCQkJCXsNDQ0KDQ0NCgkJCQkJCQkJJFVQRGYgPSBxcnlfcnVuKCJVcGRhdGUgdGJsX3Byb2RzIFNldCBuZXdfcmFua2luZyA9ICIuJG5yYW5rZi4iIHdoZXJlIHBpZCA9ICIuJEZzZlsncGlkJ10uIiIpOw0NDQoNDQ0KCQkJCQkJCQkkbnJhbmtmID0gJG5yYW5rZiArIDE7DQ0NCg0NDQoJCQkJCQkJfQ0NDQoNDQ0KCQkJCQkJfQ0NDQoNDQ0KCQkJCQl9DQ0NCg0NDQoJCQkJCWlmIChjaF9jaGtiKCdzcGVjaWFsJykgPT0gIlllcyIpDQ0NCg0NDQoJCQkJCXsNDQ0KDQ0NCgkJCQkJCSRSQU5LZiA9IHFyeV9ydW4oIlNlbGVjdCAqIGZyb20gdGJsX3Byb2RzIHdoZXJlIHNwZWNpYWwgPSAnWWVzJyBvcmRlciBieSBzcGxfcmFua2luZyIpOw0NDQoNDQ0KCQkJCQkJJE5VTWYgPSBudW1fcmVjKCRSQU5LZik7DQ0NCg0NDQoJCQkJCQlpZiAoJE5VTWYgPiAwKQ0NDQoNDQ0KCQkJCQkJew0NDQoNDQ0KCQkJCQkJCSRucmFua2YgPSAxOw0NDQoNDQ0KCQkJCQkJCXdoaWxlKCRGc2YgPSBmZXRjaF9yZWMoJFJBTktmKSkNDQ0KDQ0NCgkJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJCSRVUERmID0gcXJ5X3J1bigiVXBkYXRlIHRibF9wcm9kcyBTZXQgc3BsX3JhbmtpbmcgPSAiLiRucmFua2YuIiB3aGVyZSBwaWQgPSAiLiRGc2ZbJ3BpZCddLiIiKTsNDQ0KDQ0NCgkJCQkJCQkJJG5yYW5rZiA9ICRucmFua2YgKyAxOw0NDQoNDQ0KCQkJCQkJCX0NDQ0KDQ0NCgkJCQkJCX0NDQ0KDQ0NCgkJCQkJfQ0NDQoNDQ0KCQkJCQkvLy0tLS0tLS0gVVBMT0FEIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQ0KDQ0NCgkJCQkJJGltZzEgPSAiIjsNDQ0KDQ0NCgkJCQkJJHBpYzEgPSBjaHAoJ3Bjb2RlJykuIl8iLiRsYXN0X2lkLiJfcGljXzEuIjsNDQ0KDQ0NCgkJCQkJJGltZzIgPSAiIjsNDQ0KDQ0NCgkJCQkJJHBpYzIgPSBjaHAoJ3Bjb2RlJykuIl8iLiRsYXN0X2lkLiJfcGljXzIuIjsNDQ0KDQ0NCgkJCQkJJGltZzMgPSAiIjsNDQ0KDQ0NCgkJCQkJJHBpYzMgPSBjaHAoJ3Bjb2RlJykuIl8iLiRsYXN0X2lkLiJfcGljXzMuIjsNDQ0KDQ0NCgkJCQkJJGltZzQgPSAiIjsNDQ0KDQ0NCgkJCQkJJHBpYzQgPSBjaHAoJ3Bjb2RlJykuIl8iLiRsYXN0X2lkLiJfcGljXzQuIjsNDQ0KCQkJCQkNDQ0KCQkJCQkNDQ0KDQ0NCgkJCQkJDQ0NCg0NDQoJCQkJCWlmIChjaF9maWxlKCdpbWcyJykgPT0gIlllcyIpDQ0NCg0NDQoJCQkJCXsNDQ0KDQ0NCgkJCQkJCSRleHQgPSBkb19maWxlKCdpbWcyJywkcGljNCwkc3ViX3BhdGgpOw0NDQoNDQ0KCQkJCQkJaWYgKCRleHQgPT0gIk5vIikNDQ0KDQ0NCgkJCQkJCXsNDQ0KDQ0NCgkJCQkJCQkkaW1nNCA9ICIiOw0NDQoNDQ0KCQkJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCQkJJGltZzQgPSAkcGljNC4kZXh0Ow0NDQoNDQ0KCQkJCQkJCSRQYXRoID0gIi4uL3BpY3R1cmVzLyI7DQ0NCg0NDQoJCQkJCQkJLy8qKioqKioqKioqKioqKioqKioqKioqKiogQVVUTyBUSFVNQk5BSUwgU0VUVElORyAqKioqKioqKioqKioqKioqKioqKioqDQ0NCg0NDQoJCQkJCQkJJGltZzMgPSBjcl9pbWFnZSgkaW1nNCwxMDAwLCdXJywkZXh0LCRwaWMzLCRQYXRoKTsNDQ0KDQ0NCgkJCQkJCQkkaW1nMiA9IGNyX2ltYWdlKCRpbWczLDQ1MCwnVycsJGV4dCwkcGljMiwkUGF0aCk7DQ0NCg0NDQoJCQkJCQkJJGltZzEgPSBjcl9pbWFnZSgkaW1nMywyNjEsJ1cnLCRleHQsJHBpYzEsJFBhdGgpOw0NDQoNDQ0KCQkJCQkJCXVubGluaygiLi4vcGljdHVyZXMvIi4kaW1nNCk7DQ0NCg0NDQoJCQkJCQkJJGltZzQgPSAiIjsNDQ0KDQ0NCgkJCQkJCQkvLyoqKioqKioqKioqKioqKioqKioqKioqKiBFTkQgQ1JFQVRJTkcgVEhVTUJOQUlMICoqKioqKioqKioqKioqKioqKioqKioqKioNDQ0KDQ0NCgkJCQkJCX0NDQ0KDQ0NCgkJCQkJfQ0NDQoNDQ0KCQkJCQkkZmlsZTEgPSAiIjsNDQ0KDQ0NCgkJCQkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfcHJvZHMgU2V0IGltZzEgPSAnIi4kaW1nMS4iJyxpbWcyID0gJyIuJGltZzIuIicsaW1nMyA9ICciLiRpbWczLiInLGZpbGUxID0gJyIuJGZpbGUxLiInIHdoZXJlIHBpZCA9ICIuJGxhc3RfaWQuIiIpOw0NDQoNDQ0KCQkJCQkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVVBMT0FEIEVORCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoNDQ0KCQkJCQloZWFkZXIoIkxvY2F0aW9uOiBwcm9kcy5waHA/bWlkPSIuY2hfbHZsKCdtaWQnKS4iJnNlYz0iLmNoX2x2bCgnc2VjJykuIiZjYXQ9Ii5jaF9sdmwoJ2NhdCcpKTsNDQ0KDQ0NCgkJCQkJZGllOw0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCX0NDQ0KDQ0NCgkJfQ0NDQoNDQ0KCX0NDQ0KDQ0NCgkvLy0tLS0tLS0gTkVXIEVORCAtLS0tLS0tLS0tLS0NDQ0KDQ0NCglpZiAoY2hwKCdDX1RZUEUnKSA9PSAiRURJVCIpDQ0NCg0NDQoJew0NDQoNDQ0KCQlpZiAoY2hwKCdwbmFtZScpICE9ICIiKQ0NDQoNDQ0KCQl7DQ0NCg0NDQoJCQkvLy0tLS0tLS0gVVBMT0FEIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQ0KDQ0NCgkJCSRsYXN0X2lkID0gY2hfbHZsKCdwaWQnKTsNDQ0KDQ0NCgkJCSRyYW5kX2lkID0gY2hwKCdyYW5kX2lkJyk7DQ0NCg0NDQoJCQkNDQ0KDQ0NCgkJCSRmaWxlMSA9ICIiOw0NDQoNDQ0KCQkJJGltZzEgPSAiIjsNDQ0KDQ0NCgkJCSRwaWMxID0gY2hwKCdwY29kZScpLiJfIi4kbGFzdF9pZC4iX3BpY18xLiI7DQ0NCg0NDQoJCQkkaW1nMiA9ICIiOw0NDQoNDQ0KCQkJJHBpYzIgPSBjaHAoJ3Bjb2RlJykuIl8iLiRsYXN0X2lkLiJfcGljXzIuIjsNDQ0KDQ0NCgkJCSRpbWczID0gIiI7DQ0NCg0NDQoJCQkkcGljMyA9IGNocCgncGNvZGUnKS4iXyIuJGxhc3RfaWQuIl9waWNfMy4iOw0NDQoNDQ0KCQkJJGltZzQgPSAiIjsNDQ0KDQ0NCgkJCSRwaWM0ID0gY2hwKCdwY29kZScpLiJfIi4kbGFzdF9pZC4iX3BpY180LiI7DQ0NCg0NDQoJCQkNDQ0KDQ0NCgkJCWlmIChjaF9maWxlKCdpbWcyJykgPT0gIlllcyIpDQ0NCg0NDQoJCQl7DQ0NCg0NDQoJCQkJJGV4dCA9IGRvX2ZpbGUoJ2ltZzInLCRwaWM0LCRzdWJfcGF0aCk7DQ0NCg0NDQoJCQkJaWYgKCRleHQgPT0gIk5vIikNDQ0KDQ0NCgkJCQl7DQ0NCg0NDQoJCQkJCSRpbWc0ID0gIiI7DQ0NCg0NDQoJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCSRpbWc0ID0gJHBpYzQuJGV4dDsNDQ0KDQ0NCgkJCQkJJFBhdGggPSAiLi4vcGljdHVyZXMvIjsNDQ0KDQ0NCgkJCQkJLy8qKioqKioqKioqKioqKioqKioqKioqKiogQVVUTyBUSFVNQk5BSUwgU0VUVElORyAqKioqKioqKioqKioqKioqKioqKioqDQ0NCg0NDQoJCQkJCSRpbWczID0gY3JfaW1hZ2UoJGltZzQsMTAwMCwnVycsJGV4dCwkcGljMywkUGF0aCk7DQ0NCg0NDQoJCQkJCSRpbWcyID0gY3JfaW1hZ2UoJGltZzMsNDUwLCdXJywkZXh0LCRwaWMyLCRQYXRoKTsNDQ0KDQ0NCgkJCQkJJGltZzEgPSBjcl9pbWFnZSgkaW1nMywyNjEsJ1cnLCRleHQsJHBpYzEsJFBhdGgpOw0NDQoNDQ0KCQkJCQl1bmxpbmsoIi4uL3BpY3R1cmVzLyIuJGltZzQpOw0NDQoNDQ0KCQkJCQkkaW1nNCA9ICIiOw0NDQoNDQ0KCQkJCQkvLyoqKioqKioqKioqKioqKioqKioqKioqKiBFTkQgQ1JFQVRJTkcgVEhVTUJOQUlMICoqKioqKioqKioqKioqKioqKioqKioqKioNDQ0KDQ0NCgkJCQkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfcHJvZHMgU2V0IGltZzEgPSAnIi4kaW1nMS4iJyxpbWcyID0gJyIuJGltZzIuIicsaW1nMyA9ICciLiRpbWczLiInIHdoZXJlIHBpZCA9ICIuY2hfbHZsKCdwaWQnKS4iIik7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJfQ0NDQoNDQ0KCQkJLy8kYnJhbmQgPSBleHBsb2RlKCJeIixjaHAoJ2JyYW5kJykpOw0NDQoNDQ0KCQkJaWYgKGNocCgnYnJhbmQnKSAhPSAiIikNDQ0KDQ0NCgkJCXsNDQ0KDQ0NCgkJCQkkYnJhbmQgPSBleHBsb2RlKCJeIixjaHAoJ2JyYW5kJykpOw0NDQoNDQ0KCQkJfWVsc2V7DQ0NCg0NDQoJCQkJJGJyYW5kWzBdID0gMDsNDQ0KDQ0NCgkJCQkkYnJhbmRbMV0gPSAiIjsNDQ0KDQ0NCgkJCX0NDQ0KDQ0NCgkJCS8vLS0tLS0tLSBVUExPQUQgRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9wcm9kcyBTZXQgcG5hbWUgPSAnIi5jaGh0bWwoJ3BuYW1lJykuIicscGNvZGUgPSAnIi5jaHAoJ3Bjb2RlJykuIicscGFydCA9ICciLmNocCgncGFydCcpLiInLHNkZXRhaWwgPSAnIi5jaHAoJ3NkZXRhaWwnKS4iJyxwZGV0YWlsID0gJyIuY2hwKCdwZGV0YWlsJykuIicscHNob3cgPSAnIi5jaF9jaGtiKCdwc2hvdycpLiInLGZlYXR1cmUgPSAnIi5jaF9jaGtiKCdmZWF0dXJlJykuIicsc3BlY2lhbCA9ICciLmNoX2Noa2IoJ3NwZWNpYWwnKS4iJyxuZXcgPSAnIi5jaF9jaGtiKCduZXcnKS4iJyxwaGVhZCA9ICciLmNoaHRtbCgncGhlYWQnKS4iJyxrZXl3b3JkcyA9ICciLmNoaHRtbCgna2V5d29yZHMnKS4iJyxkZXNjcmlwdGlvbiA9ICciLmNoaHRtbCgnZGVzY3JpcHRpb24nKS4iJyxsYXN0X3VwZGF0ZSA9ICciLmRhdGUoJ1ktbS1kJykuIicsZnJvbV9oZWFkID0gJyIuY2hodG1sKCdmcm9tX2hlYWQnKS4iJyxmcm9tX2xpbmsgPSAnIi5jaGh0bWwoJ2Zyb21fbGluaycpLiInLHByYXRlID0gIi5jaF9sdmwoJ3ByYXRlJykuIixtYXJrZXRfcmF0ZSA9ICIuY2hfbHZsKCdtYXJrZXRfcmF0ZScpLiIsc3BsX3JhdGUgPSAiLmNoX2x2bCgnc3BsX3JhdGUnKS4iLHN0b2NrID0gIi5jaF9sdmwoJ3N0b2NrJykuIixzaGlwcGluZyA9ICIuY2hfbHZsKCdzaGlwcGluZycpLiIsdGF4ID0gIi5jaF9sdmwoJ3RheCcpLiIsYnJhbmRpZCA9ICIuJGJyYW5kWzBdLiIsYnJhbmRfbmFtZSA9ICciLiRicmFuZFsxXS4iJyx3aG9sZV9zYWxlX3JhdGUgPSAiLmNoX2x2bCgnd2hvbGVfc2FsZV9yYXRlJykuIiB3aGVyZSBwaWQgPSAiLmNoX2x2bCgncGlkJykuIiIpOw0NDQoNDQ0KCQkJLy8tLS0tLSBQcm9kdWN0IE9wdGlvbnMgLS0tLS0tLS0tLS0tLS0tLQ0NDQoNDQ0KCQkJJFFSWWQgPSBxcnlfcnVuKCJkZWxldGUgZnJvbSB0YmxfcHJvZF9vcHQgd2hlcmUgcGlkID0gIi5jaF9sdmwoJ3BpZCcpLiIiKTsNDQ0KDQ0NCgkJCSRRUllzID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0Ymxfb3B0aW9ucyB3aGVyZSBwc2hvdyA9ICdZZXMnIG9yZGVyIGJ5IHJhbmtpbmciKTsNDQ0KDQ0NCgkJCWlmIChudW1fcmVjKCRRUllzKSA+IDApDQ0NCg0NDQoJCQl7DQ0NCg0NDQoJCQkJJHAgPSAxOw0NDQoNDQ0KCQkJCXdoaWxlKCRyc3MgPSBmZXRjaF9yZWMoJFFSWXMpKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJaWYgKGlzc2V0KCRfUE9TVFsnb3B0Jy4kcnNzWydtYWluaWQnXV0pKQ0NDQoNDQ0KCQkJCQl7DQ0NCg0NDQoJCQkJCQkkb3B0ID0gJF9QT1NUWydvcHQnLiRyc3NbJ21haW5pZCddXTsNDQ0KDQ0NCgkJCQkJCSRvcHRbXSA9IGltcGxvZGUoIiwiLCAkb3B0KTsNDQ0KDQ0NCgkJCQkJCSR0bHRfcmVjID0gIGNvdW50KCRvcHQpLTE7DQ0NCg0NDQoJCQkJCQlpZiAoJHRsdF9yZWMgPiAwKQ0NDQoNDQ0KCQkJCQkJew0NDQoNDQ0KCQkJCQkJCQ0NDQoNDQ0KCQkJCQkJCWZvciAoJGk9MTsgJGk8PSR0bHRfcmVjOyAkaSsrKQ0NDQoNDQ0KCQkJCQkJCXsNDQ0KDQ0NCgkJCQkJCQkJJFFSWW8gPSBxcnlfcnVuKCJzZWxlY3QgKiBmcm9tIHRibF9zdWJfb3B0IHdoZXJlIHN1YmlkID0gIi4kb3B0WyRpLTFdLiIgb3JkZXIgYnkgcmFua2luZyIpOw0NDQoNDQ0KCQkJCQkJCQlpZiAobnVtX3JlYygkUVJZbykgPiAwKQ0NDQoNDQ0KCQkJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJCQkkcnNvID0gZmV0Y2hfcmVjKCRRUllvKTsNDQ0KDQ0NCgkJCQkJCQkJCSRJTlNUID0gcXJ5X3J1bigiSW5zZXJ0IGludG8gdGJsX3Byb2Rfb3B0IChwaWQscG5hbWUscHJhdGUscHR5cGUsb3B0X2lkLHN1Yl9vcHRfaWQpIFZhbHVlcyAoIi4kbGFzdF9pZC4iLCciLiRyc29bJ3BuYW1lJ10uIicsIi5jaF9sdmwoJ3ByYXRlJy4kcnNvWydzdWJpZCddKS4iLCciLmNocCgncHR5cGUnLiRyc29bJ3N1YmlkJ10pLiInLCIuJHJzc1snbWFpbmlkJ10uIiwiLiRyc29bJ3N1YmlkJ10uIikiKTsNDQ0KDQ0NCgkJCQkJCQkJfQ0NDQoNDQ0KCQkJCQkJCX0NDQ0KDQ0NCgkJCQkJCX0NDQ0KDQ0NCgkJCQkJfQ0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCX0NDQ0KDQ0NCgkJCS8vLS0tLSBGZWF0dXJlIFJhbmtpbmcgLS0tLS0tLS0tLS0tLS0tLS0NDQ0KDQ0NCgkJCQlpZiAoY2hfY2hrYignZmVhdHVyZScpID09ICJZZXMiKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJJFJBTktmID0gcXJ5X3J1bigiU2VsZWN0ICogZnJvbSB0YmxfcHJvZHMgd2hlcmUgZmVhdHVyZSA9ICdZZXMnIG9yZGVyIGJ5IGZlYXR1cmVfcmFua2luZyIpOw0NDQoNDQ0KCQkJCQkkTlVNZiA9IG51bV9yZWMoJFJBTktmKTsNDQ0KDQ0NCgkJCQkJaWYgKCROVU1mID4gMCkNDQ0KDQ0NCgkJCQkJew0NDQoNDQ0KCQkJCQkJJG5yYW5rZiA9IDE7DQ0NCg0NDQoJCQkJCQl3aGlsZSgkRnNmID0gZmV0Y2hfcmVjKCRSQU5LZikpDQ0NCg0NDQoJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJJFVQRGYgPSBxcnlfcnVuKCJVcGRhdGUgdGJsX3Byb2RzIFNldCBmZWF0dXJlX3JhbmtpbmcgPSAiLiRucmFua2YuIiB3aGVyZSBwaWQgPSAiLiRGc2ZbJ3BpZCddLiIiKTsNDQ0KDQ0NCgkJCQkJCQkkbnJhbmtmID0gJG5yYW5rZiArIDE7DQ0NCg0NDQoJCQkJCQl9DQ0NCg0NDQoJCQkJCX0NDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQkJaWYgKGNoX2Noa2IoJ25ldycpID09ICJZZXMiKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJJFJBTktmID0gcXJ5X3J1bigiU2VsZWN0ICogZnJvbSB0YmxfcHJvZHMgd2hlcmUgbmV3ID0gJ1llcycgb3JkZXIgYnkgbmV3X3JhbmtpbmciKTsNDQ0KDQ0NCgkJCQkJJE5VTWYgPSBudW1fcmVjKCRSQU5LZik7DQ0NCg0NDQoJCQkJCWlmICgkTlVNZiA+IDApDQ0NCg0NDQoJCQkJCXsNDQ0KDQ0NCgkJCQkJCSRucmFua2YgPSAxOw0NDQoNDQ0KCQkJCQkJd2hpbGUoJEZzZiA9IGZldGNoX3JlYygkUkFOS2YpKQ0NDQoNDQ0KCQkJCQkJew0NDQoNDQ0KCQkJCQkJCSRVUERmID0gcXJ5X3J1bigiVXBkYXRlIHRibF9wcm9kcyBTZXQgbmV3X3JhbmtpbmcgPSAiLiRucmFua2YuIiB3aGVyZSBwaWQgPSAiLiRGc2ZbJ3BpZCddLiIiKTsNDQ0KDQ0NCgkJCQkJCQkkbnJhbmtmID0gJG5yYW5rZiArIDE7DQ0NCg0NDQoJCQkJCQl9DQ0NCg0NDQoJCQkJCX0NDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQkJaWYgKGNoX2Noa2IoJ3NwZWNpYWwnKSA9PSAiWWVzIikNDQ0KDQ0NCgkJCQl7DQ0NCg0NDQoJCQkJCSRSQU5LZiA9IHFyeV9ydW4oIlNlbGVjdCAqIGZyb20gdGJsX3Byb2RzIHdoZXJlIHNwZWNpYWwgPSAnWWVzJyBvcmRlciBieSBzcGxfcmFua2luZyIpOw0NDQoNDQ0KCQkJCQkkTlVNZiA9IG51bV9yZWMoJFJBTktmKTsNDQ0KDQ0NCgkJCQkJaWYgKCROVU1mID4gMCkNDQ0KDQ0NCgkJCQkJew0NDQoNDQ0KCQkJCQkJJG5yYW5rZiA9IDE7DQ0NCg0NDQoJCQkJCQl3aGlsZSgkRnNmID0gZmV0Y2hfcmVjKCRSQU5LZikpDQ0NCg0NDQoJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJJFVQRGYgPSBxcnlfcnVuKCJVcGRhdGUgdGJsX3Byb2RzIFNldCBzcGxfcmFua2luZyA9ICIuJG5yYW5rZi4iIHdoZXJlIHBpZCA9ICIuJEZzZlsncGlkJ10uIiIpOw0NDQoNDQ0KCQkJCQkJCSRucmFua2YgPSAkbnJhbmtmICsgMTsNDQ0KDQ0NCgkJCQkJCX0NDQ0KDQ0NCgkJCQkJfQ0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCWhlYWRlcigiTG9jYXRpb246IHByb2RzLnBocD9taWQ9Ii5jaF9sdmwoJ21pZCcpLiImc2VjPSIuY2hfbHZsKCdzZWMnKS4iJmNhdD0iLmNoX2x2bCgnY2F0JykpOw0NDQoNDQ0KCQkJZGllOwkNDQ0KDQ0NCgkJfQ0NDQoNDQ0KCX0NDQ0KDQ0NCgkvLy0tLS0tLSBFRElUIEVORCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQ0KDQ0NCglpZiAoY2hwKCdDX1RZUEUnKSA9PSAiREVMIikNDQ0KDQ0NCgl7DQ0NCg0NDQoJCWlmIChjaHAoJ21pZCcpICE9ICIiICYmIGNocCgnc2VjJykgIT0gIiIgJiYgY2hwKCdjYXQnKSAhPSAiIiAmJiBjaHAoJ3BpZCcpICE9ICIiKQ0NDQoNDQ0KCQl7DQ0NCg0NDQoJCQkkUVJZID0gcXJ5X3J1bigiU2VsZWN0ICogZnJvbSB0YmxfcHJvZHMgd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIgQU5EIHNlY2lkID0gIi5jaF9sdmwoJ3NlYycpLiIgQU5EIGNhdGlkID0gIi5jaF9sdmwoJ2NhdCcpLiIgQU5EIHBpZCA9ICIuY2hfbHZsKCdwaWQnKS4iIik7DQ0NCg0NDQoJCQlpZiAobnVtX3JlYygkUVJZKSA+IDApDQ0NCg0NDQoJCQl7DQ0NCg0NDQoJCQkJJHJwID0gZmV0Y2hfcmVjKCRRUlkpOw0NDQoNDQ0KCQkJCWlmIChmaWxlX2V4aXN0cygiLi4vcGljdHVyZXMvIi4kcnBbJ2ltZzEnXSkpIA0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJdW5saW5rKCIuLi9waWN0dXJlcy8iLiRycFsnaW1nMSddKTsNDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQkJaWYgKGZpbGVfZXhpc3RzKCIuLi9waWN0dXJlcy8iLiRycFsnaW1nMiddKSkgDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQl1bmxpbmsoIi4uL3BpY3R1cmVzLyIuJHJwWydpbWcyJ10pOw0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCQlpZiAoZmlsZV9leGlzdHMoIi4uL3BpY3R1cmVzLyIuJHJwWydpbWczJ10pKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJdW5saW5rKCIuLi9waWN0dXJlcy8iLiRycFsnaW1nMyddKTsNDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQl9DQ0NCg0NDQoJCQkNDQ0KDQ0NCgkJCSRERUwgPSBxcnlfcnVuKCJEZWxldGUgZnJvbSB0YmxfcHJvZHMgd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIgQU5EIHNlY2lkID0gIi5jaF9sdmwoJ3NlYycpLiIgQU5EIGNhdGlkID0gIi5jaF9sdmwoJ2NhdCcpLiIgQU5EIHBpZCA9ICIuY2hfbHZsKCdwaWQnKS4iIik7DQ0NCg0NDQoJCQkNDQ0KDQ0NCgkJCSRRUllkID0gcXJ5X3J1bigiZGVsZXRlIGZyb20gdGJsX3Byb2Rfb3B0IHdoZXJlIHBpZCA9ICIuY2hfbHZsKCdwaWQnKS4iIik7DQ0NCg0NDQoJCQkvLy0tLSBSRS1SQU5LSU5HIC0tLS0tDQ0NCg0NDQoJCQkkcmFuayA9IDE7DQ0NCg0NDQoJCQkkUk5LID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfcHJvZHMgd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIgQU5EIHNlY2lkID0gIi5jaF9sdmwoJ3NlYycpLiIgQU5EIGNhdGlkID0gIi5jaF9sdmwoJ2NhdCcpLiIgb3JkZXIgYnkgcmFua2luZyIpOw0NDQoNDQ0KCQkJaWYgKG51bV9yZWMoJFJOSykgPiAwKQ0NDQoNDQ0KCQkJew0NDQoNDQ0KCQkJCXdoaWxlKCRyayA9IGZldGNoX3JlYygkUk5LKSkNDQ0KDQ0NCgkJCQl7DQ0NCg0NDQoJCQkJCSRVUEQgPSBxcnlfcnVuKCJVcGRhdGUgdGJsX3Byb2RzIFNldCByYW5raW5nID0gIi4kcmFuay4iIHdoZXJlIHBpZCA9ICIuJHJrWydwaWQnXS4iIik7DQ0NCg0NDQoJCQkJCSRyYW5rID0gJHJhbmsgKyAxOw0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCX0NDQ0KDQ0NCgkJCS8vLS0tLS0gRW5kIFJhbmtpbmcgLS0tDQ0NCg0NDQoJCQloZWFkZXIoIkxvY2F0aW9uOiBwcm9kcy5waHA/bWlkPSIuY2hfbHZsKCdtaWQnKS4iJnNlYz0iLmNoX2x2bCgnc2VjJykuIiZjYXQ9Ii5jaF9sdmwoJ2NhdCcpKTsNDQ0KDQ0NCgkJCWRpZTsNDQ0KDQ0NCgkJfQ0NDQoNDQ0KCX0NDQ0KDQ0NCgkvLy0tLS0gREVMIEVORCAtLS0tLS0tDQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIlBTSE9XIikNDQ0KDQ0NCgl7DQ0NCg0NDQoJCWlmIChjaHAoJ1Bfc2hvdycpID09ICJZZXMiKQ0NDQoNDQ0KCQl7DQ0NCg0NDQoJCQkkUF9zaG93ID0gIk5vIjsNDQ0KDQ0NCgkJfWVsc2V7DQ0NCg0NDQoJCQkkUF9zaG93ID0gIlllcyI7DQ0NCg0NDQoJCX0NDQ0KDQ0NCgkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfcHJvZHMgU2V0IHBzaG93ID0gJyIuJFBfc2hvdy4iJyB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiBBTkQgc2VjaWQgPSAiLmNoX2x2bCgnc2VjJykuIiBBTkQgY2F0aWQgPSAiLmNoX2x2bCgnY2F0JykuIiBBTkQgcGlkID0gIi5jaF9sdmwoJ3BpZCcpLiIiKTsNDQ0KDQ0NCgkJaGVhZGVyKCJMb2NhdGlvbjogcHJvZHMucGhwP21pZD0iLmNoX2x2bCgnbWlkJykuIiZzZWM9Ii5jaF9sdmwoJ3NlYycpLiImY2F0PSIuY2hfbHZsKCdjYXQnKSk7DQ0NCg0NDQoJCWRpZTsNDQ0KDQ0NCgl9DQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIlNQRUNJQUwiKQ0NDQoNDQ0KCXsNDQ0KDQ0NCgkJaWYgKGNocCgnUF9zaG93JykgPT0gIlllcyIpDQ0NCg0NDQoJCXsNDQ0KDQ0NCgkJCSRQX3Nob3cgPSAiTm8iOw0NDQoNDQ0KCQl9ZWxzZXsNDQ0KDQ0NCgkJCSRQX3Nob3cgPSAiWWVzIjsNDQ0KDQ0NCgkJfQ0NDQoNDQ0KCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9wcm9kcyBTZXQgc3BlY2lhbCA9ICciLiRQX3Nob3cuIicgd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIgQU5EIHNlY2lkID0gIi5jaF9sdmwoJ3NlYycpLiIgQU5EIGNhdGlkID0gIi5jaF9sdmwoJ2NhdCcpLiIgQU5EIHBpZCA9ICIuY2hfbHZsKCdwaWQnKS4iIik7DQ0NCg0NDQoJCWhlYWRlcigiTG9jYXRpb246IHByb2RzLnBocD9taWQ9Ii5jaF9sdmwoJ21pZCcpLiImc2VjPSIuY2hfbHZsKCdzZWMnKS4iJmNhdD0iLmNoX2x2bCgnY2F0JykpOw0NDQoNDQ0KCQlkaWU7DQ0NCg0NDQoJfQ0NDQoNDQ0KCWlmIChjaHAoJ0NfVFlQRScpID09ICJTQUxFIikNDQ0KDQ0NCgl7DQ0NCg0NDQoJCWlmIChjaHAoJ1Bfc2hvdycpID09ICJZZXMiKQ0NDQoNDQ0KCQl7DQ0NCg0NDQoJCQkkUF9zaG93ID0gIk5vIjsNDQ0KDQ0NCgkJfWVsc2V7DQ0NCg0NDQoJCQkkUF9zaG93ID0gIlllcyI7DQ0NCg0NDQoJCX0NDQ0KDQ0NCgkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfcHJvZHMgU2V0IG5ldyA9ICciLiRQX3Nob3cuIicgd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIgQU5EIHNlY2lkID0gIi5jaF9sdmwoJ3NlYycpLiIgQU5EIGNhdGlkID0gIi5jaF9sdmwoJ2NhdCcpLiIgQU5EIHBpZCA9ICIuY2hfbHZsKCdwaWQnKS4iIik7DQ0NCg0NDQoJCWhlYWRlcigiTG9jYXRpb246IHByb2RzLnBocD9taWQ9Ii5jaF9sdmwoJ21pZCcpLiImc2VjPSIuY2hfbHZsKCdzZWMnKS4iJmNhdD0iLmNoX2x2bCgnY2F0JykpOw0NDQoNDQ0KCQlkaWU7DQ0NCg0NDQoJfQ0NDQoNDQ0KfQ0NDQoNDQ0KaWYgKGNocCgnTFZMJykgPT0gNykNDQ0KDQ0NCnsNDQ0KDQ0NCglpZiAoY2hwKCdDX1RZUEUnKSA9PSAiTkVXIikNDQ0KDQ0NCgl7DQ0NCg0NDQoJCWlmIChjaHAoJ3BuYW1lJykgIT0gIiIpDQ0NCg0NDQoJCXsNDQ0KDQ0NCgkJCSRRUlkgPSBxcnlfcnVuKCJzZWxlY3QgKiBmcm9tIHRibF9vcHRpb25zIHdoZXJlIHBuYW1lID0gJyIuY2hwKCdwbmFtZScpLiInIik7DQ0NCg0NDQoJCQlpZiAobnVtX3JlYygkUVJZKSA+IDApDQ0NCg0NDQoJCQl7DQ0NCg0NDQoJCQkJPz4NDQ0KDQ0NCgkJCQk8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0Ij4NDQ0KDQ0NCgkJCQlhbGVydCAoIlRoaXMgT3B0aW9uIE5hbWUgYWxyZWFkeSBpbiBPVVIgREFUQUJBU0UiKTsNDQ0KDQ0NCgkJCQloaXN0b3J5LmdvKC0xKTsNDQ0KDQ0NCgkJCQk8L3NjcmlwdD4NDQ0KDQ0NCgkJCQk8P3BocA0NDQoNDQ0KCQkJCWhlYWRlcigiTG9jYXRpb246IHBfb3B0aW9ucy5waHAiKTsNDQ0KDQ0NCgkJCQlkaWU7DQ0NCg0NDQoJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkkcmFuayA9IDA7DQ0NCg0NDQoJCQkJJFJOSyA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX29wdGlvbnMgb3JkZXIgYnkgbWFpbmlkIERFU0MiKTsNDQ0KDQ0NCgkJCQlpZiAobnVtX3JlYygkUk5LKSA+IDApDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQkkcmsgPSBmZXRjaF9yZWMoJFJOSyk7DQ0NCg0NDQoJCQkJCSRyYW5rID0gJHJrWydyYW5raW5nJ10gKyAxOw0NDQoNDQ0KCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkkcmFuayA9IDE7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJCSRJTkMgPSBxcnlfcnVuKCJJbnNlcnQgaW50byB0Ymxfb3B0aW9ucyAocG5hbWUscGRldGFpbCxwc2hvdyxwdHlwZSxyYW5raW5nKSBWYWx1ZXMoJyIuY2hwKCdwbmFtZScpLiInLCciLmNocCgncGRldGFpbCcpLiInLCciLmNoX2Noa2IoJ3BzaG93JykuIicsJyIuY2hwKCdwdHlwZScpLiInLCIuJHJhbmsuIikiKTsNDQ0KDQ0NCgkJCQlpZiAoISRJTkMpDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQllY2hvIG15c3FsX2Vycm9yKCk7DQ0NCg0NDQoJCQkJCWRpZTsNDQ0KDQ0NCgkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJJGxhc3RfaWQgPSBteXNxbF9pbnNlcnRfaWQoKTsNDQ0KDQ0NCgkJCQkJLy8tLS0tLS0tIFVQTE9BRCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkJCSRpbWcxID0gIiI7DQ0NCg0NDQoJCQkJCSRwaWMxID0gJGxhc3RfaWQuIl9vcHRfMS4iOw0NDQoNDQ0KCQkJCQlpZiAoY2hfZmlsZSgnaW1nMScpID09ICJZZXMiKQ0NDQoNDQ0KCQkJCQl7DQ0NCg0NDQoJCQkJCQkkZXh0ID0gZG9fZmlsZSgnaW1nMScsJHBpYzEsJHN1Yl9wYXRoKTsNDQ0KDQ0NCgkJCQkJCWlmICgkZXh0ID09ICJObyIpDQ0NCg0NDQoJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJJGltZzEgPSAiIjsNDQ0KDQ0NCgkJCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkJCSRpbWcxID0gJHBpYzEuJGV4dDsNDQ0KDQ0NCgkJCQkJCX0NDQ0KDQ0NCgkJCQkJfQ0NDQoNDQ0KCQkJCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9vcHRpb25zIFNldCBpbWcxID0gJyIuJGltZzEuIicgd2hlcmUgbWFpbmlkID0gIi4kbGFzdF9pZC4iIik7DQ0NCg0NDQoJCQkJCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVUExPQUQgRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkJCWhlYWRlcigiTG9jYXRpb246IHBfb3B0aW9ucy5waHAiKTsNDQ0KDQ0NCgkJCQkJZGllOw0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCX0NDQ0KDQ0NCgkJfQ0NDQoNDQ0KCX0NDQ0KDQ0NCgkvLy0tLS0tLS0gTkVXIEVORCAtLS0tLS0tLS0tLS0NDQ0KDQ0NCglpZiAoY2hwKCdDX1RZUEUnKSA9PSAiRURJVCIpDQ0NCg0NDQoJew0NDQoNDQ0KCQlpZiAoY2hwKCdwbmFtZScpICE9ICIiKQ0NDQoNDQ0KCQl7DQ0NCg0NDQoJCQkvLy0tLS0tLS0gVVBMT0FEIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQ0KDQ0NCgkJCSRsYXN0X2lkID0gY2hfbHZsKCdtaWQnKTsNDQ0KDQ0NCgkJCSRpbWcxID0gIiI7DQ0NCg0NDQoJCQkkcGljMSA9ICRsYXN0X2lkLiJfb3B0XzEuIjsNDQ0KDQ0NCgkJCWlmIChjaF9maWxlKCdpbWcxJykgPT0gIlllcyIpDQ0NCg0NDQoJCQl7DQ0NCg0NDQoJCQkJJGV4dCA9IGRvX2ZpbGUoJ2ltZzEnLCRwaWMxLCRzdWJfcGF0aCk7DQ0NCg0NDQoJCQkJaWYgKCRleHQgPT0gIk5vIikNDQ0KDQ0NCgkJCQl7DQ0NCg0NDQoJCQkJCSRpbWcxID0gIiI7DQ0NCg0NDQoJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCSRpbWcxID0gJHBpYzEuJGV4dDsNDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkkaW1nMSA9IGNocCgnaW1nczEnKTsNDQ0KDQ0NCgkJCX0NDQ0KDQ0NCgkJCS8vLS0tLS0tLSBVUExPQUQgRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9vcHRpb25zIFNldCBwbmFtZSA9ICciLmNoaHRtbCgncG5hbWUnKS4iJyxwZGV0YWlsID0gJyIuY2hodG1sKCdwZGV0YWlsJykuIicscHNob3cgPSAnIi5jaF9jaGtiKCdwc2hvdycpLiInLHB0eXBlID0gJyIuY2hwKCdwdHlwZScpLiInLHBzdHlsZSA9ICciLmNocCgncHN0eWxlJykuIicsaW1nMSA9ICciLiRpbWcxLiInIHdoZXJlIG1haW5pZCA9ICIuY2hfbHZsKCdtaWQnKS4iIik7DQ0NCg0NDQoJCQloZWFkZXIoIkxvY2F0aW9uOiBwX29wdGlvbnMucGhwIik7DQ0NCg0NDQoJCQlkaWU7CQ0NDQoNDQ0KCQl9DQ0NCg0NDQoJfQ0NDQoNDQ0KCS8vLS0tLS0tIEVESVQgRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoNDQ0KCWlmIChjaHAoJ0NfVFlQRScpID09ICJERUwiKQ0NDQoNDQ0KCXsNDQ0KDQ0NCgkJaWYgKGNoX2x2bCgnbWlkJykgIT0gIiIpDQ0NCg0NDQoJCXsNDQ0KDQ0NCgkJCSRERUxfb3B0ID0gcXJ5X3J1bigiRGVsZXRlIGZyb20gdGJsX3N1Yl9vcHQgd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIiKTsNDQ0KDQ0NCgkJCSRERUwgPSBxcnlfcnVuKCJEZWxldGUgZnJvbSB0Ymxfb3B0aW9ucyB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiIpOw0NDQoNDQ0KCQkJLy8gUmUgUmFua2luZyAtLS0tLS0tLS0tLQ0NDQoNDQ0KCQkJJHJhbmsgPSAxOw0NDQoNDQ0KCQkJJFJOSyA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX29wdGlvbnMgb3JkZXIgYnkgcmFua2luZyIpOw0NDQoNDQ0KCQkJaWYgKG51bV9yZWMoJFJOSykgPiAwKQ0NDQoNDQ0KCQkJew0NDQoNDQ0KCQkJCXdoaWxlKCRyayA9IGZldGNoX3JlYygkUk5LKSkNDQ0KDQ0NCgkJCQl7DQ0NCg0NDQoJCQkJCSRVUEQgPSBxcnlfcnVuKCJVcGRhdGUgdGJsX29wdGlvbnMgU2V0IHJhbmtpbmcgPSAiLiRyYW5rLiIgd2hlcmUgbWFpbmlkID0gIi4kcmtbJ21haW5pZCddLiIiKTsNDQ0KDQ0NCgkJCQkJJHJhbmsgPSAkcmFuayArIDE7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJfS8vLS0tLS0tIEVORCBSQU5LSU5HIC0tLS0tDQ0NCg0NDQoJCQloZWFkZXIoIkxvY2F0aW9uOiBwX29wdGlvbnMucGhwIik7DQ0NCg0NDQoJCQlkaWU7DQ0NCg0NDQoJCX0NDQ0KDQ0NCgl9DQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIlBTSE9XIikNDQ0KDQ0NCgl7DQ0NCg0NDQoJCWlmIChjaHAoJ1Bfc2hvdycpID09ICJZZXMiKQ0NDQoNDQ0KCQl7DQ0NCg0NDQoJCQkkUF9zaG93ID0gIk5vIjsNDQ0KDQ0NCgkJfWVsc2V7DQ0NCg0NDQoJCQkkUF9zaG93ID0gIlllcyI7DQ0NCg0NDQoJCX0NDQ0KDQ0NCgkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0Ymxfb3B0aW9ucyBTZXQgcHNob3cgPSAnIi4kUF9zaG93LiInIHdoZXJlIG1haW5pZCA9ICIuY2hfbHZsKCdtaWQnKS4iIik7DQ0NCg0NDQoJCWhlYWRlcigiTG9jYXRpb246IHBfb3B0aW9ucy5waHAiKTsNDQ0KDQ0NCgkJZGllOw0NDQoNDQ0KCX0NDQ0KDQ0NCn0NDQ0KDQ0NCmlmIChjaHAoJ0xWTCcpID09IDgpDQ0NCg0NDQp7DQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIk5FVyIpDQ0NCg0NDQoJew0NDQoNDQ0KCQlpZiAoY2hwKCdwbmFtZScpICE9ICIiKQ0NDQoNDQ0KCQl7DQ0NCg0NDQoJCQkkUVJZID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0Ymxfc3ViX29wdCB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiBBTkQgcG5hbWUgPSAnIi5jaHAoJ3BuYW1lJykuIiciKTsNDQ0KDQ0NCgkJCWlmIChudW1fcmVjKCRRUlkpID4gMCkNDQ0KDQ0NCgkJCXsNDQ0KDQ0NCgkJCQk/Pg0NDQoNDQ0KCQkJCTxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiPg0NDQoNDQ0KCQkJCWFsZXJ0ICgiVGhpcyBPcHRpb24gTmFtZSBhbHJlYWR5IGluIE9VUiBEQVRBQkFTRSIpOw0NDQoNDQ0KCQkJCWhpc3RvcnkuZ28oLTEpOw0NDQoNDQ0KCQkJCTwvc2NyaXB0Pg0NDQoNDQ0KCQkJCTw/cGhwDQ0NCg0NDQoJCQkJaGVhZGVyKCJMb2NhdGlvbjogc3ViX29wdC5waHA/bWlkPSIuY2hfbHZsKCdtaWQnKSk7DQ0NCg0NDQoJCQkJZGllOw0NDQoNDQ0KCQkJfWVsc2V7DQ0NCg0NDQoJCQkJJHJhbmsgPSAwOw0NDQoNDQ0KCQkJCSRSTksgPSBxcnlfcnVuKCJzZWxlY3QgKiBmcm9tIHRibF9zdWJfb3B0IHdoZXJlIG1haW5pZCA9ICIuY2hfbHZsKCdtaWQnKS4iIG9yZGVyIGJ5IHN1YmlkIERFU0MiKTsNDQ0KDQ0NCgkJCQlpZiAobnVtX3JlYygkUk5LKSA+IDApDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQkkcmsgPSBmZXRjaF9yZWMoJFJOSyk7DQ0NCg0NDQoJCQkJCSRyYW5rID0gJHJrWydyYW5raW5nJ10gKyAxOw0NDQoNDQ0KCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkkcmFuayA9IDE7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJCSRJTkMgPSBxcnlfcnVuKCJJbnNlcnQgaW50byB0Ymxfc3ViX29wdCAobWFpbmlkLHBuYW1lLHBkZXRhaWwscHNob3cscmFua2luZykgVmFsdWVzKCIuY2hfbHZsKCdtaWQnKS4iLCciLmNocCgncG5hbWUnKS4iJywnIi5jaHAoJ3BkZXRhaWwnKS4iJywnIi5jaF9jaGtiKCdwc2hvdycpLiInLCIuJHJhbmsuIikiKTsNDQ0KDQ0NCgkJCQlpZiAoISRJTkMpDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQllY2hvIG15c3FsX2Vycm9yKCk7DQ0NCg0NDQoJCQkJCWRpZTsNDQ0KDQ0NCgkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJJGxhc3RfaWQgPSBteXNxbF9pbnNlcnRfaWQoKTsNDQ0KDQ0NCgkJCQkJLy8tLS0tLS0tIFVQTE9BRCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkJCSRpbWcxID0gIiI7DQ0NCg0NDQoJCQkJCSRwaWMxID0gJGxhc3RfaWQuIl9zdWJfb3B0XzEuIjsNDQ0KDQ0NCgkJCQkJaWYgKGNoX2ZpbGUoJ2ltZzEnKSA9PSAiWWVzIikNDQ0KDQ0NCgkJCQkJew0NDQoNDQ0KCQkJCQkJJGV4dCA9IGRvX2ZpbGUoJ2ltZzEnLCRwaWMxLCRzdWJfcGF0aCk7DQ0NCg0NDQoJCQkJCQlpZiAoJGV4dCA9PSAiTm8iKQ0NDQoNDQ0KCQkJCQkJew0NDQoNDQ0KCQkJCQkJCSRpbWcxID0gIiI7DQ0NCg0NDQoJCQkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJCQkkaW1nMSA9ICRwaWMxLiRleHQ7DQ0NCg0NDQoJCQkJCQl9DQ0NCg0NDQoJCQkJCX0NDQ0KDQ0NCgkJCQkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0Ymxfc3ViX29wdCBTZXQgaW1nMSA9ICciLiRpbWcxLiInIHdoZXJlIHN1YmlkID0gIi4kbGFzdF9pZC4iIik7DQ0NCg0NDQoJCQkJCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBVUExPQUQgRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkJCWhlYWRlcigiTG9jYXRpb246IHN1Yl9vcHQucGhwP21pZD0iLmNoX2x2bCgnbWlkJykpOw0NDQoNDQ0KCQkJCQlkaWU7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJfQ0NDQoNDQ0KCQl9DQ0NCg0NDQoJfQ0NDQoNDQ0KCS8vLS0tLS0tLSBORVcgRU5EIC0tLS0tLS0tLS0tLQ0NDQoNDQ0KCWlmIChjaHAoJ0NfVFlQRScpID09ICJFRElUIikNDQ0KDQ0NCgl7DQ0NCg0NDQoJCWlmIChjaHAoJ3BuYW1lJykgIT0gIiIpDQ0NCg0NDQoJCXsNDQ0KDQ0NCgkJCS8vLS0tLS0tLSBVUExPQUQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoNDQ0KCQkJJGxhc3RfaWQgPSBjaF9sdmwoJ3NpZCcpOw0NDQoNDQ0KCQkJJGltZzEgPSAiIjsNDQ0KDQ0NCgkJCSRwaWMxID0gJGxhc3RfaWQuIl9zdWJfb3B0XzEuIjsNDQ0KDQ0NCgkJCWlmIChjaF9maWxlKCdpbWcxJykgPT0gIlllcyIpDQ0NCg0NDQoJCQl7DQ0NCg0NDQoJCQkJJGV4dCA9IGRvX2ZpbGUoJ2ltZzEnLCRwaWMxLCRzdWJfcGF0aCk7DQ0NCg0NDQoJCQkJaWYgKCRleHQgPT0gIk5vIikNDQ0KDQ0NCgkJCQl7DQ0NCg0NDQoJCQkJCSRpbWcxID0gIiI7DQ0NCg0NDQoJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCSRpbWcxID0gJHBpYzEuJGV4dDsNDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkkaW1nMSA9IGNocCgnaW1nczEnKTsNDQ0KDQ0NCgkJCX0NDQ0KDQ0NCgkJCS8vLS0tLS0tLSBVUExPQUQgRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9zdWJfb3B0IFNldCBwbmFtZSA9ICciLmNoaHRtbCgncG5hbWUnKS4iJyxwZGV0YWlsID0gJyIuY2hodG1sKCdwZGV0YWlsJykuIicscHNob3cgPSAnIi5jaF9jaGtiKCdwc2hvdycpLiInLGltZzEgPSAnIi4kaW1nMS4iJyB3aGVyZSBzdWJpZCA9ICIuY2hfbHZsKCdzaWQnKS4iIik7DQ0NCg0NDQoJCQloZWFkZXIoIkxvY2F0aW9uOiBzdWJfb3B0LnBocD9taWQ9Ii5jaF9sdmwoJ21pZCcpKTsNDQ0KDQ0NCgkJCWRpZTsJDQ0NCg0NDQoJCX0NDQ0KDQ0NCgl9DQ0NCg0NDQoJLy8tLS0tLS0gRURJVCBFTkQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIkRFTCIpDQ0NCg0NDQoJew0NDQoNDQ0KCQlpZiAoY2hfbHZsKCdtaWQnKSAhPSAiIikNDQ0KDQ0NCgkJew0NDQoNDQ0KCQkJJERFTCA9IHFyeV9ydW4oIkRlbGV0ZSBmcm9tIHRibF9zdWJfb3B0IHdoZXJlIG1haW5pZCA9ICIuY2hfbHZsKCdtaWQnKS4iIEFORCBzdWJpZCA9ICIuY2hfbHZsKCdzaWQnKS4iIik7DQ0NCg0NDQoJCQkvLyBSZSBSYW5raW5nIC0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkkcmFuayA9IDE7DQ0NCg0NDQoJCQkkUk5LID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0Ymxfc3ViX29wdCB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiBvcmRlciBieSByYW5raW5nIik7DQ0NCg0NDQoJCQlpZiAobnVtX3JlYygkUk5LKSA+IDApDQ0NCg0NDQoJCQl7DQ0NCg0NDQoJCQkJd2hpbGUoJHJrID0gZmV0Y2hfcmVjKCRSTkspKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0Ymxfc3ViX29wdCBTZXQgcmFua2luZyA9ICIuJHJhbmsuIiB3aGVyZSBzdWJpZCA9ICIuJHJrWydzdWJpZCddLiIiKTsNDQ0KDQ0NCgkJCQkJJHJhbmsgPSAkcmFuayArIDE7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJfS8vLS0tLS0tIEVORCBSQU5LSU5HIC0tLS0tDQ0NCg0NDQoJCQloZWFkZXIoIkxvY2F0aW9uOiBzdWJfb3B0LnBocD9taWQ9Ii5jaF9sdmwoJ21pZCcpKTsNDQ0KDQ0NCgkJCWRpZTsNDQ0KDQ0NCgkJfQ0NDQoNDQ0KCX0NDQ0KDQ0NCglpZiAoY2hwKCdDX1RZUEUnKSA9PSAiUFNIT1ciKQ0NDQoNDQ0KCXsNDQ0KDQ0NCgkJaWYgKGNocCgnUF9zaG93JykgPT0gIlllcyIpDQ0NCg0NDQoJCXsNDQ0KDQ0NCgkJCSRQX3Nob3cgPSAiTm8iOw0NDQoNDQ0KCQl9ZWxzZXsNDQ0KDQ0NCgkJCSRQX3Nob3cgPSAiWWVzIjsNDQ0KDQ0NCgkJfQ0NDQoNDQ0KCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9zdWJfb3B0IFNldCBwc2hvdyA9ICciLiRQX3Nob3cuIicgd2hlcmUgc3ViaWQgPSAiLmNoX2x2bCgnc2lkJykuIiIpOw0NDQoNDQ0KCQloZWFkZXIoIkxvY2F0aW9uOiBzdWJfb3B0LnBocD9taWQ9Ii5jaF9sdmwoJ21pZCcpKTsNDQ0KDQ0NCgkJZGllOw0NDQoNDQ0KCX0NDQ0KDQ0NCn0NDQ0KDQ0NCmlmIChjaHAoJ0xWTCcpID09IDkpDQ0NCg0NDQp7DQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIk5FVyIpDQ0NCg0NDQoJew0NDQoNDQ0KCQlpZiAoY2hwKCdwbmFtZScpICE9ICIiKQ0NDQoNDQ0KCQl7DQ0NCg0NDQoJCQkkUVJZID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfbW9yZSB3aGVyZSBwaWQgPSAiLmNoX2x2bCgncGlkJykuIiBBTkQgcG5hbWUgPSAnIi5jaHAoJ3BuYW1lJykuIiciKTsNDQ0KDQ0NCgkJCWlmIChudW1fcmVjKCRRUlkpID4gMCkNDQ0KDQ0NCgkJCXsNDQ0KDQ0NCgkJCQk/Pg0NDQoNDQ0KCQkJCTxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiPg0NDQoNDQ0KCQkJCWFsZXJ0ICgiVGhpcyBIZWFkaW5nIE5hbWUgYWxyZWFkeSBpbiBPVVIgREFUQUJBU0UiKTsNDQ0KDQ0NCgkJCQloaXN0b3J5LmdvKC0xKTsNDQ0KDQ0NCgkJCQk8L3NjcmlwdD4NDQ0KDQ0NCgkJCQk8P3BocA0NDQoNDQ0KCQkJCWhlYWRlcigiTG9jYXRpb246IG1vcmVfcHJvZHMucGhwP21pZD0iLmNoX2x2bCgnbWFpbicpLiImc2VjPSIuY2hfbHZsKCdzZWMnKS4iJmNhdD0iLmNoX2x2bCgnY2F0JykuIiZwaWQ9Ii5jaF9sdmwoJ3BpZCcpKTsNDQ0KDQ0NCgkJCQlkaWU7DQ0NCg0NDQoJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkkcmFuayA9IDA7DQ0NCg0NDQoJCQkJJFJOSyA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX21vcmUgd2hlcmUgcGlkID0gIi5jaF9sdmwoJ3BpZCcpLiIgb3JkZXIgYnkgbWFpbmlkIERFU0MiKTsNDQ0KDQ0NCgkJCQlpZiAobnVtX3JlYygkUk5LKSA+IDApDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQkkcmsgPSBmZXRjaF9yZWMoJFJOSyk7DQ0NCg0NDQoJCQkJCSRyYW5rID0gJHJrWydyYW5raW5nJ10gKyAxOw0NDQoNDQ0KCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkkcmFuayA9IDE7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJCSRJTkMgPSBxcnlfcnVuKCJJbnNlcnQgaW50byB0YmxfbW9yZSAobWlkLHNlYyxjYXQscGlkLHBuYW1lLHBkZXRhaWwscHNob3cscmFua2luZyxzaXplY20sc2l6ZWluKSBWYWx1ZXMoIi5jaF9sdmwoJ21haW4nKS4iLCIuY2hfbHZsKCdzZWMnKS4iLCIuY2hfbHZsKCdjYXQnKS4iLCIuY2hfbHZsKCdwaWQnKS4iLCciLmNocCgncG5hbWUnKS4iJywnIi5jaHAoJ3BkZXRhaWwnKS4iJywnIi5jaF9jaGtiKCdwc2hvdycpLiInLCIuJHJhbmsuIiwnIi5jaF9jaGtiKCdzaXplY20nKS4iJywnIi5jaF9jaGtiKCdzaXplaW4nKS4iJykiKTsNDQ0KDQ0NCgkJCQlpZiAoISRJTkMpDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQllY2hvIG15c3FsX2Vycm9yKCk7DQ0NCg0NDQoJCQkJCWRpZTsNDQ0KDQ0NCgkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJJGxhc3RfaWQgPSBteXNxbF9pbnNlcnRfaWQoKTsNDQ0KDQ0NCgkJCQkJLy8tLS0tLS0tIFVQTE9BRCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkJCSRpbWcxID0gIiI7DQ0NCg0NDQoJCQkJCSRpbWcyID0gIiI7DQ0NCg0NDQoJCQkJCSRpbWczID0gIiI7DQ0NCg0NDQoJCQkJCSRpbWc0ID0gIiI7DQ0NCg0NDQoJCQkJCSRwaWMxID0gY2hfbHZsKCdwaWQnKS4iXyIuJGxhc3RfaWQuIl9tb3JlXzEuIjsNDQ0KDQ0NCgkJCQkJJHBpYzIgPSBjaF9sdmwoJ3BpZCcpLiJfIi4kbGFzdF9pZC4iX21vcmVfMi4iOw0NDQoNDQ0KCQkJCQkkcGljMyA9IGNoX2x2bCgncGlkJykuIl8iLiRsYXN0X2lkLiJfbW9yZV80LiI7DQ0NCg0NDQoJCQkJCSRwaWM0ID0gY2hfbHZsKCdwaWQnKS4iXyIuJGxhc3RfaWQuIl9tb3JlXzMuIjsNDQ0KDQ0NCgkJCQkJaWYgKGNoX2ZpbGUoJ2ltZzInKSA9PSAiWWVzIikNDQ0KDQ0NCgkJCQkJew0NDQoNDQ0KCQkJCQkJJGV4dCA9IGRvX2ZpbGUoJ2ltZzInLCRwaWMzLCRzdWJfcGF0aCk7DQ0NCg0NDQoJCQkJCQlpZiAoJGV4dCA9PSAiTm8iKQ0NDQoNDQ0KCQkJCQkJew0NDQoNDQ0KCQkJCQkJCSRpbWczID0gIiI7DQ0NCg0NDQoJCQkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJCQkkaW1nMyA9ICRwaWMzLiRleHQ7DQ0NCg0NDQoJCQkJCQkJJFBhdGggPSAiLi4vcGljdHVyZXMvIjsNDQ0KDQ0NCgkJCQkJCQkvLyoqKioqKioqKioqKioqKioqKioqKioqKiBBVVRPIFRIVU1CTkFJTCBTRVRUSU5HICoqKioqKioqKioqKioqKioqKioqKioNDQ0KDQ0NCgkJCQkJCQkkaW1nNCA9IGNyX2ltYWdlKCRpbWczLDI1MDAsJ1cnLCRleHQsJHBpYzQsJFBhdGgpOw0NDQoNDQ0KCQkJCQkJCSRpbWcyID0gY3JfaW1hZ2UoJGltZzMsNzAwLCdXJywkZXh0LCRwaWMyLCRQYXRoKTsNDQ0KDQ0NCgkJCQkJCQkkaW1nMSA9IGNyX2ltYWdlKCRpbWczLDEwMCwnVycsJGV4dCwkcGljMSwkUGF0aCk7DQ0NCg0NDQoJCQkJCQkJdW5saW5rKCIuLi9waWN0dXJlcy8iLiRpbWczKTsNDQ0KDQ0NCgkJCQkJCQkkaW1nMyA9ICIiOw0NDQoNDQ0KCQkJCQkJCS8vKioqKioqKioqKioqKioqKioqKioqKioqIEVORCBDUkVBVElORyBUSFVNQk5BSUwgKioqKioqKioqKioqKioqKioqKioqKioqKg0NDQoNDQ0KCQkJCQkJfQ0NDQoNDQ0KCQkJCQl9DQ0NCg0NDQoJCQkJCSRVUEQgPSBxcnlfcnVuKCJVcGRhdGUgdGJsX21vcmUgU2V0IGltZzEgPSAnIi4kaW1nMS4iJyxpbWcyID0gJyIuJGltZzIuIicsaW1nMyA9ICciLiRpbWc0LiInIHdoZXJlIG1haW5pZCA9ICIuJGxhc3RfaWQuIiIpOw0NDQoNDQ0KCQkJCQkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVVBMT0FEIEVORCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoNDQ0KCQkJCQloZWFkZXIoIkxvY2F0aW9uOiBtb3JlX3Byb2RzLnBocD9taWQ9Ii5jaF9sdmwoJ21haW4nKS4iJnNlYz0iLmNoX2x2bCgnc2VjJykuIiZjYXQ9Ii5jaF9sdmwoJ2NhdCcpLiImcGlkPSIuY2hfbHZsKCdwaWQnKSk7DQ0NCg0NDQoJCQkJCWRpZTsNDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQl9DQ0NCg0NDQoJCX0NDQ0KDQ0NCgl9DQ0NCg0NDQoJLy8tLS0tLS0tIE5FVyBFTkQgLS0tLS0tLS0tLS0tDQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIkVESVQiKQ0NDQoNDQ0KCXsNDQ0KDQ0NCgkJaWYgKGNocCgncG5hbWUnKSAhPSAiIikNDQ0KDQ0NCgkJew0NDQoNDQ0KCQkJLy8tLS0tLS0tIFVQTE9BRCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkkbGFzdF9pZCA9IGNoX2x2bCgnbW9yZScpOw0NDQoNDQ0KCQkJLy8tLS0tLS0tIFVQTE9BRCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkkaW1nMSA9ICIiOw0NDQoNDQ0KCQkJJGltZzIgPSAiIjsNDQ0KDQ0NCgkJCSRpbWczID0gIiI7DQ0NCg0NDQoJCQkkaW1nNCA9ICIiOw0NDQoNDQ0KCQkJJHBpYzEgPSBjaF9sdmwoJ3BpZCcpLiJfIi4kbGFzdF9pZC4iX21vcmVfMS4iOw0NDQoNDQ0KCQkJJHBpYzIgPSBjaF9sdmwoJ3BpZCcpLiJfIi4kbGFzdF9pZC4iX21vcmVfMi4iOw0NDQoNDQ0KCQkJJHBpYzMgPSBjaF9sdmwoJ3BpZCcpLiJfIi4kbGFzdF9pZC4iX21vcmVfNC4iOw0NDQoNDQ0KCQkJJHBpYzQgPSBjaF9sdmwoJ3BpZCcpLiJfIi4kbGFzdF9pZC4iX21vcmVfMy4iOw0NDQoNDQ0KCQkJaWYgKGNoX2ZpbGUoJ2ltZzInKSA9PSAiWWVzIikNDQ0KDQ0NCgkJCXsNDQ0KDQ0NCgkJCQkkZXh0ID0gZG9fZmlsZSgnaW1nMicsJHBpYzMsJHN1Yl9wYXRoKTsNDQ0KDQ0NCgkJCQlpZiAoJGV4dCA9PSAiTm8iKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJJGltZzMgPSAiIjsNDQ0KDQ0NCgkJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkJJGltZzMgPSAkcGljMy4kZXh0Ow0NDQoNDQ0KCQkJCQkkUGF0aCA9ICIuLi9waWN0dXJlcy8iOw0NDQoNDQ0KCQkJCQkvLyoqKioqKioqKioqKioqKioqKioqKioqKiBBVVRPIFRIVU1CTkFJTCBTRVRUSU5HICoqKioqKioqKioqKioqKioqKioqKioNDQ0KDQ0NCgkJCQkJJGltZzQgPSBjcl9pbWFnZSgkaW1nMywyMDAwLCdXJywkZXh0LCRwaWM0LCRQYXRoKTsNDQ0KDQ0NCgkJCQkJJGltZzIgPSBjcl9pbWFnZSgkaW1nMyw1MDAsJ1cnLCRleHQsJHBpYzIsJFBhdGgpOw0NDQoNDQ0KCQkJCQkkaW1nMSA9IGNyX2ltYWdlKCRpbWczLDgwLCdXJywkZXh0LCRwaWMxLCRQYXRoKTsNDQ0KDQ0NCgkJCQkJdW5saW5rKCIuLi9waWN0dXJlcy8iLiRpbWczKTsNDQ0KDQ0NCgkJCQkJJGltZzMgPSAiIjsNDQ0KDQ0NCgkJCQkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfbW9yZSBTZXQgaW1nMSA9ICciLiRpbWcxLiInLGltZzIgPSAnIi4kaW1nMi4iJyxpbWczID0gJyIuJGltZzQuIicgd2hlcmUgbWFpbmlkID0gIi4kbGFzdF9pZC4iIik7DQ0NCg0NDQoJCQkJCS8vKioqKioqKioqKioqKioqKioqKioqKioqIEVORCBDUkVBVElORyBUSFVNQk5BSUwgKioqKioqKioqKioqKioqKioqKioqKioqKg0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCX0NDQ0KDQ0NCgkJCS8vLS0tLS0tLSBVUExPQUQgRU5EIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9tb3JlIFNldCBwbmFtZSA9ICciLmNoaHRtbCgncG5hbWUnKS4iJyxzaXplY20gPSAnIi5jaGh0bWwoJ3NpemVjbScpLiInLHNpemVpbiA9ICciLmNoaHRtbCgnc2l6ZWluJykuIicscGRldGFpbCA9ICciLmNoaHRtbCgncGRldGFpbCcpLiInLHBzaG93ID0gJyIuY2hfY2hrYigncHNob3cnKS4iJyB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbW9yZScpLiIiKTsNDQ0KDQ0NCgkJCWhlYWRlcigiTG9jYXRpb246IG1vcmVfcHJvZHMucGhwP21pZD0iLmNoX2x2bCgnbWlkJykuIiZzZWM9Ii5jaF9sdmwoJ3NlYycpLiImY2F0PSIuY2hfbHZsKCdjYXQnKS4iJnBpZD0iLmNoX2x2bCgncGlkJykpOw0NDQoNDQ0KCQkJZGllOwkNDQ0KDQ0NCgkJfQ0NDQoNDQ0KCX0NDQ0KDQ0NCgkvLy0tLS0tLSBFRElUIEVORCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQ0KDQ0NCglpZiAoY2hwKCdDX1RZUEUnKSA9PSAiREVMIikNDQ0KDQ0NCgl7DQ0NCg0NDQoJCWlmIChjaF9sdmwoJ3BpZCcpICE9ICIiKQ0NDQoNDQ0KCQl7DQ0NCg0NDQoJCQkkUVJZID0gcXJ5X3J1bigiU2VsZWN0ICogZnJvbSB0YmxfbW9yZSB3aGVyZSBwaWQgPSAiLmNoX2x2bCgncGlkJykuIiBBTkQgbWFpbmlkID0gIi5jaF9sdmwoJ21vcmUnKS4iIik7DQ0NCg0NDQoJCQlpZiAobnVtX3JlYygkUVJZKSA+IDApDQ0NCg0NDQoJCQl7DQ0NCg0NDQoJCQkJJHJwID0gZmV0Y2hfcmVjKCRRUlkpOw0NDQoNDQ0KCQkJCWlmIChmaWxlX2V4aXN0cygiLi4vcGljdHVyZXMvIi4kcnBbJ2ltZzEnXSkpIA0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJdW5saW5rKCIuLi9waWN0dXJlcy8iLiRycFsnaW1nMSddKTsNDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQkJaWYgKGZpbGVfZXhpc3RzKCIuLi9waWN0dXJlcy8iLiRycFsnaW1nMiddKSkgDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQl1bmxpbmsoIi4uL3BpY3R1cmVzLyIuJHJwWydpbWcyJ10pOw0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCQlpZiAoZmlsZV9leGlzdHMoIi4uL3BpY3R1cmVzLyIuJHJwWydpbWczJ10pKSANDQ0KDQ0NCgkJCQl7DQ0NCg0NDQoJCQkJCXVubGluaygiLi4vcGljdHVyZXMvIi4kcnBbJ2ltZzMnXSk7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJfQ0NDQoNDQ0KCQkJJERFTCA9IHFyeV9ydW4oIkRlbGV0ZSBmcm9tIHRibF9tb3JlIHdoZXJlIHBpZCA9ICIuY2hfbHZsKCdwaWQnKS4iIEFORCBtYWluaWQgPSAiLmNoX2x2bCgnbW9yZScpLiIiKTsNDQ0KDQ0NCgkJCS8vIFJlIFJhbmtpbmcgLS0tLS0tLS0tLS0NDQ0KDQ0NCgkJCSRyYW5rID0gMTsNDQ0KDQ0NCgkJCSRSTksgPSBxcnlfcnVuKCJzZWxlY3QgKiBmcm9tIHRibF9tb3JlIHdoZXJlIHBpZCA9ICIuY2hfbHZsKCdwaWQnKS4iIG9yZGVyIGJ5IHJhbmtpbmciKTsNDQ0KDQ0NCgkJCWlmIChudW1fcmVjKCRSTkspID4gMCkNDQ0KDQ0NCgkJCXsNDQ0KDQ0NCgkJCQl3aGlsZSgkcmsgPSBmZXRjaF9yZWMoJFJOSykpDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9tb3JlIFNldCByYW5raW5nID0gIi4kcmFuay4iIHdoZXJlIG1haW5pZCA9ICIuJHJrWydtYWluaWQnXS4iIik7DQ0NCg0NDQoJCQkJCSRyYW5rID0gJHJhbmsgKyAxOw0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCX0vLy0tLS0tLSBFTkQgUkFOS0lORyAtLS0tLQ0NDQoNDQ0KCQkJaGVhZGVyKCJMb2NhdGlvbjogbW9yZV9wcm9kcy5waHA/bWlkPSIuY2hfbHZsKCdtaWQnKS4iJnNlYz0iLmNoX2x2bCgnc2VjJykuIiZjYXQ9Ii5jaF9sdmwoJ2NhdCcpLiImcGlkPSIuY2hfbHZsKCdwaWQnKSk7DQ0NCg0NDQoJCQlkaWU7DQ0NCg0NDQoJCX0NDQ0KDQ0NCgl9DQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIlBTSE9XIikNDQ0KDQ0NCgl7DQ0NCg0NDQoJCWlmIChjaHAoJ1Bfc2hvdycpID09ICJZZXMiKQ0NDQoNDQ0KCQl7DQ0NCg0NDQoJCQkkUF9zaG93ID0gIk5vIjsNDQ0KDQ0NCgkJfWVsc2V7DQ0NCg0NDQoJCQkkUF9zaG93ID0gIlllcyI7DQ0NCg0NDQoJCX0NDQ0KDQ0NCgkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfbW9yZSBTZXQgcHNob3cgPSAnIi4kUF9zaG93LiInIHdoZXJlIG1haW5pZCA9ICIuY2hfbHZsKCdtb3JlJykuIiIpOw0NDQoNDQ0KCQloZWFkZXIoIkxvY2F0aW9uOiBtb3JlX3Byb2RzLnBocD9taWQ9Ii5jaF9sdmwoJ21pZCcpLiImc2VjPSIuY2hfbHZsKCdzZWMnKS4iJmNhdD0iLmNoX2x2bCgnY2F0JykuIiZwaWQ9Ii5jaF9sdmwoJ3BpZCcpKTsNDQ0KDQ0NCgkJZGllOw0NDQoNDQ0KCX0NDQ0KDQ0NCn0NDQ0KDQ0NCmlmIChjaHAoJ0xWTCcpID09IDEwKQ0NDQoNDQ0Kew0NDQoNDQ0KCWlmIChjaHAoJ0NfVFlQRScpID09ICJORVciKQ0NDQoNDQ0KCXsNDQ0KDQ0NCgkJaWYgKGNocCgncG5hbWUnKSAhPSAiIikNDQ0KDQ0NCgkJew0NDQoNDQ0KCQkJJFFSWSA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX2JyYW5kcyB3aGVyZSBibmFtZSA9ICciLmNocCgncG5hbWUnKS4iJyIpOw0NDQoNDQ0KCQkJaWYgKG51bV9yZWMoJFFSWSkgPiAwKQ0NDQoNDQ0KCQkJew0NDQoNDQ0KCQkJCT8+DQ0NCg0NDQoJCQkJPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCI+DQ0NCg0NDQoJCQkJYWxlcnQgKCJUaGlzIEJyYW5kIE5hbWUgYWxyZWFkeSBpbiBPVVIgREFUQUJBU0UiKTsNDQ0KDQ0NCgkJCQloaXN0b3J5LmdvKC0xKTsNDQ0KDQ0NCgkJCQk8L3NjcmlwdD4NDQ0KDQ0NCgkJCQk8P3BocA0NDQoNDQ0KCQkJCWhlYWRlcigiTG9jYXRpb246IGJyYW5kcy5waHAiKTsNDQ0KDQ0NCgkJCQlkaWU7DQ0NCg0NDQoJCQl9ZWxzZXsNDQ0KDQ0NCgkJCQkkcmFuayA9IDA7DQ0NCg0NDQoJCQkJJFJOSyA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX2JyYW5kcyBvcmRlciBieSBtYWluaWQgREVTQyIpOw0NDQoNDQ0KCQkJCWlmIChudW1fcmVjKCRSTkspID4gMCkNDQ0KDQ0NCgkJCQl7DQ0NCg0NDQoJCQkJCSRyayA9IGZldGNoX3JlYygkUk5LKTsNDQ0KDQ0NCgkJCQkJJHJhbmsgPSAkcmtbJ3JhbmtpbmcnXSArIDE7DQ0NCg0NDQoJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCSRyYW5rID0gMTsNDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQkJJElOQyA9IHFyeV9ydW4oIkluc2VydCBpbnRvIHRibF9icmFuZHMgKGJuYW1lLGJkZXRhaWwscHNob3cscGhlYWQsa2V5d29yZHMsZGVzY3JpcHRpb24scmFua2luZyxsb2NhdGlvbikgVmFsdWVzKCciLmh0bWxzcGVjaWFsY2hhcnMoY2hwKCdwbmFtZScpLCBFTlRfUVVPVEVTKS4iJywnIi5odG1sc3BlY2lhbGNoYXJzKGNocCgncGRldGFpbCcpLCBFTlRfUVVPVEVTKS4iJywnIi5jaF9jaGtiKCdwc2hvdycpLiInLCciLmh0bWxzcGVjaWFsY2hhcnMoY2hwKCdwaGVhZCcpLCBFTlRfUVVPVEVTKS4iJywnIi5odG1sc3BlY2lhbGNoYXJzKGNocCgna2V5d29yZHMnKSwgRU5UX1FVT1RFUykuIicsJyIuaHRtbHNwZWNpYWxjaGFycyhjaHAoJ2Rlc2NyaXB0aW9uJyksIEVOVF9RVU9URVMpLiInLCIuJHJhbmsuIiwnIi5jaHAoJ2xvY2F0aW9uJykuIicpIik7DQ0NCg0NDQoJCQkJaWYgKCEkSU5DKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJZWNobyBteXNxbF9lcnJvcigpOw0NDQoNDQ0KCQkJCQlkaWU7DQ0NCg0NDQoJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCSRsYXN0X2lkID0gbXlzcWxfaW5zZXJ0X2lkKCk7DQ0NCg0NDQoJCQkJCS8vLS0tLS0tLSBVUExPQUQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoNDQ0KCQkJCQkkaW1nMSA9ICIiOw0NDQoNDQ0KCQkJCQkkcGljMSA9ICRsYXN0X2lkLiJfYnJhbmRfMS4iOw0NDQoNDQ0KCQkJCQlpZiAoY2hfZmlsZSgnaW1nMScpID09ICJZZXMiKQ0NDQoNDQ0KCQkJCQl7DQ0NCg0NDQoJCQkJCQkkZXh0ID0gZG9fZmlsZSgnaW1nMScsJHBpYzEsJHN1Yl9wYXRoKTsNDQ0KDQ0NCgkJCQkJCWlmICgkZXh0ID09ICJObyIpDQ0NCg0NDQoJCQkJCQl7DQ0NCg0NDQoJCQkJCQkJJGltZzEgPSAiIjsNDQ0KDQ0NCgkJCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkJCSRpbWcxID0gJHBpYzEuJGV4dDsNDQ0KDQ0NCgkJCQkJCX0NDQ0KDQ0NCgkJCQkJfQ0NDQoNDQ0KCQkJCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9icmFuZHMgU2V0IGltZzEgPSAnIi4kaW1nMS4iJyB3aGVyZSBtYWluaWQgPSAiLiRsYXN0X2lkLiIiKTsNDQ0KDQ0NCgkJCQkJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFVQTE9BRCBFTkQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQ0KDQ0NCgkJCQkJaGVhZGVyKCJMb2NhdGlvbjogYnJhbmRzLnBocCIpOw0NDQoNDQ0KCQkJCQlkaWU7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJfQ0NDQoNDQ0KCQl9DQ0NCg0NDQoJfQ0NDQoNDQ0KCS8vLS0tLS0tLSBORVcgRU5EIC0tLS0tLS0tLS0tLQ0NDQoNDQ0KCWlmIChjaHAoJ0NfVFlQRScpID09ICJFRElUIikNDQ0KDQ0NCgl7DQ0NCg0NDQoJCWlmIChjaHAoJ3BuYW1lJykgIT0gIiIpDQ0NCg0NDQoJCXsNDQ0KDQ0NCgkJCS8vLS0tLS0tLSBVUExPQUQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoNDQ0KCQkJJGxhc3RfaWQgPSBjaF9sdmwoJ21pZCcpOw0NDQoNDQ0KCQkJJGltZzEgPSAiIjsNDQ0KDQ0NCgkJCSRwaWMxID0gJGxhc3RfaWQuIl9icmFuZF8xLiI7DQ0NCg0NDQoJCQlpZiAoY2hfZmlsZSgnaW1nMScpID09ICJZZXMiKQ0NDQoNDQ0KCQkJew0NDQoNDQ0KCQkJCSRleHQgPSBkb19maWxlKCdpbWcxJywkcGljMSwkc3ViX3BhdGgpOw0NDQoNDQ0KCQkJCWlmICgkZXh0ID09ICJObyIpDQ0NCg0NDQoJCQkJew0NDQoNDQ0KCQkJCQkkaW1nMSA9ICIiOw0NDQoNDQ0KCQkJCX1lbHNlew0NDQoNDQ0KCQkJCQkkaW1nMSA9ICRwaWMxLiRleHQ7DQ0NCg0NDQoJCQkJfQ0NDQoNDQ0KCQkJfWVsc2V7DQ0NCg0NDQoJCQkJJGltZzEgPSBjaHAoJ2ltZ3MxJyk7DQ0NCg0NDQoJCQl9DQ0NCg0NDQoJCQkvLy0tLS0tLS0gVVBMT0FEIEVORCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoNDQ0KCQkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfYnJhbmRzIFNldCBibmFtZSA9ICciLmNoaHRtbCgncG5hbWUnKS4iJyxiZGV0YWlsID0gJyIuY2hodG1sKCdwZGV0YWlsJykuIicscHNob3cgPSAnIi5jaF9jaGtiKCdwc2hvdycpLiInLHBoZWFkID0gJyIuY2hodG1sKCdwaGVhZCcpLiInLGtleXdvcmRzID0gJyIuY2hodG1sKCdrZXl3b3JkcycpLiInLGRlc2NyaXB0aW9uID0gJyIuY2hodG1sKCdkZXNjcmlwdGlvbicpLiInLGltZzEgPSAnIi4kaW1nMS4iJyxsb2NhdGlvbiA9ICciLmNocCgnbG9jYXRpb24nKS4iJyB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiIpOw0NDQoNDQ0KCQkJaGVhZGVyKCJMb2NhdGlvbjogYnJhbmRzLnBocCIpOw0NDQoNDQ0KCQkJZGllOwkNDQ0KDQ0NCgkJfQ0NDQoNDQ0KCX0NDQ0KDQ0NCgkvLy0tLS0tLSBFRElUIEVORCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQ0KDQ0NCglpZiAoY2hwKCdDX1RZUEUnKSA9PSAiREVMIikNDQ0KDQ0NCgl7DQ0NCg0NDQoJCWlmIChjaF9sdmwoJ21pZCcpICE9ICIiKQ0NDQoNDQ0KCQl7DQ0NCg0NDQoJCQkkREVMID0gcXJ5X3J1bigiRGVsZXRlIGZyb20gdGJsX2JyYW5kcyB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiIpOw0NDQoNDQ0KCQkJLy8gUmUgUmFua2luZyAtLS0tLS0tLS0tLQ0NDQoNDQ0KCQkJJHJhbmsgPSAxOw0NDQoNDQ0KCQkJJFJOSyA9IHFyeV9ydW4oInNlbGVjdCAqIGZyb20gdGJsX2JyYW5kcyBvcmRlciBieSByYW5raW5nIik7DQ0NCg0NDQoJCQlpZiAobnVtX3JlYygkUk5LKSA+IDApDQ0NCg0NDQoJCQl7DQ0NCg0NDQoJCQkJd2hpbGUoJHJrID0gZmV0Y2hfcmVjKCRSTkspKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfYnJhbmRzIFNldCByYW5raW5nID0gIi4kcmFuay4iIHdoZXJlIG1haW5pZCA9ICIuJHJrWydtYWluaWQnXS4iIik7DQ0NCg0NDQoJCQkJCSRyYW5rID0gJHJhbmsgKyAxOw0NDQoNDQ0KCQkJCX0NDQ0KDQ0NCgkJCX0vLy0tLS0tLSBFTkQgUkFOS0lORyAtLS0tLQ0NDQoNDQ0KCQkJaGVhZGVyKCJMb2NhdGlvbjogYnJhbmRzLnBocCIpOw0NDQoNDQ0KCQkJZGllOw0NDQoNDQ0KCQl9DQ0NCg0NDQoJfQ0NDQoNDQ0KCWlmIChjaHAoJ0NfVFlQRScpID09ICJQU0hPVyIpDQ0NCg0NDQoJew0NDQoNDQ0KCQlpZiAoY2hwKCdQX3Nob3cnKSA9PSAiWWVzIikNDQ0KDQ0NCgkJew0NDQoNDQ0KCQkJJFBfc2hvdyA9ICJObyI7DQ0NCg0NDQoJCX1lbHNlew0NDQoNDQ0KCQkJJFBfc2hvdyA9ICJZZXMiOw0NDQoNDQ0KCQl9DQ0NCg0NDQoJCSRVUEQgPSBxcnlfcnVuKCJVcGRhdGUgdGJsX2JyYW5kcyBTZXQgcHNob3cgPSAnIi4kUF9zaG93LiInIHdoZXJlIG1haW5pZCA9ICIuY2hfbHZsKCdtaWQnKS4iIik7DQ0NCg0NDQoJCWhlYWRlcigiTG9jYXRpb246IGJyYW5kcy5waHAiKTsNDQ0KDQ0NCgkJZGllOw0NDQoNDQ0KCX0NDQ0KDQ0NCn0NDQ0KDQ0NCmlmIChjaHAoJ0xWTCcpID09IDExKQ0NDQoNDQ0Kew0NDQoNDQ0KCWlmIChjaHAoJ0NfVFlQRScpID09ICJORVciKQ0NDQoNDQ0KCXsNDQ0KDQ0NCgkJaWYgKGNocCgnY2lkJykgIT0gIiIpDQ0NCg0NDQoJCXsNDQ0KDQ0NCgkJCSRRUlkgPSBxcnlfcnVuKCJzZWxlY3QgKiBmcm9tIHRibF9jb3Vwb24gd2hlcmUgY2lkID0gJyIuY2hwKCdjaWQnKS4iJyIpOw0NDQoNDQ0KCQkJaWYgKG51bV9yZWMoJFFSWSkgPiAwKQ0NDQoNDQ0KCQkJew0NDQoNDQ0KCQkJCT8+DQ0NCg0NDQoJCQkJPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCI+DQ0NCg0NDQoJCQkJYWxlcnQgKCJUaGlzIENvdXBvbiBDb2RlIGFscmVhZHkgaW4gT1VSIERBVEFCQVNFIik7DQ0NCg0NDQoJCQkJaGlzdG9yeS5nbygtMSk7DQ0NCg0NDQoJCQkJPC9zY3JpcHQ+DQ0NCg0NDQoJCQkJPD9waHANDQ0KDQ0NCgkJCQloZWFkZXIoIkxvY2F0aW9uOiBjb3Vwb25zLnBocCIpOw0NDQoNDQ0KCQkJCWRpZTsNDQ0KDQ0NCgkJCX1lbHNlew0NDQoNDQ0KCQkJCSRleHBpcnkgPSBjaHAoJ2Z5JykuIi0iLmNocCgnZm0nKS4iLSIuY2hwKCdmZCcpOw0NDQoNDQ0KCQkJCSRJTkMgPSBxcnlfcnVuKCJJbnNlcnQgaW50byB0YmxfY291cG9uIChjaWQsY25hbWUsY2RldGFpbCxwc2hvdyxwcmF0ZSxkaXN0X29wdCxtaW5fdmFsLGV4cGlyeSkgVmFsdWVzKCciLmNocCgnY2lkJykuIicsJyIuY2hwKCdjbmFtZScpLiInLCciLmNocCgnY2RldGFpbCcpLiInLCciLmNoX2Noa2IoJ3BzaG93JykuIicsIi5jaF9sdmwoJ3ByYXRlJykuIiwnIi5jaHAoJ2Rpc3Rfb3B0JykuIicsIi5jaF9sdmwoJ21pbl92YWwnKS4iLCciLiRleHBpcnkuIicpIik7DQ0NCg0NDQoJCQkJaWYgKCEkSU5DKQ0NDQoNDQ0KCQkJCXsNDQ0KDQ0NCgkJCQkJZWNobyBteXNxbF9lcnJvcigpOw0NDQoNDQ0KCQkJCQlkaWU7DQ0NCg0NDQoJCQkJfWVsc2V7DQ0NCg0NDQoJCQkJCWhlYWRlcigiTG9jYXRpb246IGNvdXBvbnMucGhwIik7DQ0NCg0NDQoJCQkJCWRpZTsNDQ0KDQ0NCgkJCQl9DQ0NCg0NDQoJCQl9DQ0NCg0NDQoJCX0NDQ0KDQ0NCgl9DQ0NCg0NDQoJLy8tLS0tLS0tIE5FVyBFTkQgLS0tLS0tLS0tLS0tDQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIkVESVQiKQ0NDQoNDQ0KCXsNDQ0KDQ0NCgkJaWYgKGNocCgnY2lkJykgIT0gIiIpDQ0NCg0NDQoJCXsNDQ0KDQ0NCgkJCSRleHBpcnkgPSBjaHAoJ2Z5JykuIi0iLmNocCgnZm0nKS4iLSIuY2hwKCdmZCcpOw0NDQoNDQ0KCQkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfY291cG9uIFNldCBjaWQgPSAnIi5jaGh0bWwoJ2NpZCcpLiInLGNuYW1lID0gJyIuY2hodG1sKCdjbmFtZScpLiInLGNkZXRhaWwgPSAnIi5jaGh0bWwoJ2NkZXRhaWwnKS4iJyxwc2hvdyA9ICciLmNoX2Noa2IoJ3BzaG93JykuIicscHJhdGUgPSAiLmNoX2x2bCgncHJhdGUnKS4iLGRpc3Rfb3B0ID0gJyIuY2hodG1sKCdkaXN0X29wdCcpLiInLG1pbl92YWwgPSAiLmNoX2x2bCgnbWluX3ZhbCcpLiIsZXhwaXJ5ID0gJyIuJGV4cGlyeS4iJyB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbWlkJykuIiIpOw0NDQoNDQ0KCQkJaGVhZGVyKCJMb2NhdGlvbjogY291cG9ucy5waHAiKTsNDQ0KDQ0NCgkJCWRpZTsJDQ0NCg0NDQoJCX0NDQ0KDQ0NCgl9DQ0NCg0NDQoJLy8tLS0tLS0gRURJVCBFTkQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIkRFTCIpDQ0NCg0NDQoJew0NDQoNDQ0KCQlpZiAoY2hfbHZsKCdtaWQnKSAhPSAiIikNDQ0KDQ0NCgkJew0NDQoNDQ0KCQkJJERFTCA9IHFyeV9ydW4oIkRlbGV0ZSBmcm9tIHRibF9jb3Vwb24gd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIiKTsNDQ0KDQ0NCgkJCWhlYWRlcigiTG9jYXRpb246IGNvdXBvbnMucGhwIik7DQ0NCg0NDQoJCQlkaWU7DQ0NCg0NDQoJCX0NDQ0KDQ0NCgl9DQ0NCg0NDQoJaWYgKGNocCgnQ19UWVBFJykgPT0gIlBTSE9XIikNDQ0KDQ0NCgl7DQ0NCg0NDQoJCWlmIChjaHAoJ1Bfc2hvdycpID09ICJZZXMiKQ0NDQoNDQ0KCQl7DQ0NCg0NDQoJCQkkUF9zaG93ID0gIk5vIjsNDQ0KDQ0NCgkJfWVsc2V7DQ0NCg0NDQoJCQkkUF9zaG93ID0gIlllcyI7DQ0NCg0NDQoJCX0NDQ0KDQ0NCgkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfY291cG9uIFNldCBwc2hvdyA9ICciLiRQX3Nob3cuIicgd2hlcmUgbWFpbmlkID0gIi5jaF9sdmwoJ21pZCcpLiIiKTsNDQ0KDQ0NCgkJaGVhZGVyKCJMb2NhdGlvbjogY291cG9ucy5waHAiKTsNDQ0KDQ0NCgkJZGllOw0NDQoNDQ0KCX0NDQ0KDQ0NCn0NDQ0KDQ0NCmlmIChjaHAoJ0xWTCcpID09IDEyKQ0NDQp7DQ0NCglpZiAoY2hwKCdDX1RZUEUnKSA9PSAiTkVXIikNDQ0KCXsNDQ0KCQlpZiAoY2hwKCdwYW5tZXMnKSAhPSAiIikNDQ0KCQl7DQ0NCgkJCSRRUlkgPSBxcnlfcnVuKCJzZWxlY3QgKiBmcm9tIHRibF9jb2xvcnMgd2hlcmUgcGlkID0gIi5jaF9sdmwoJ3BpZCcpLiIgQU5EIHBuYW1lID0gJyIuY2hwKCdwbmFtZXMnKS4iJyIpOw0NDQoJCQkNDQ0KCQlpZiAobnVtX3JlYygkUVJZKSA8IDApDQ0NCgkJew0NDQoJCQkJPz4NDQ0KCQkJCTxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiPg0NDQoJCQkJYWxlcnQgKCJUaGlzIEhlYWRpbmcgTmFtZSBhbHJlYWR5IGluIE9VUiBEQVRBQkFTRSIpOw0NDQoJCQkJaGlzdG9yeS5nbygtMSk7DQ0NCgkJCQk8L3NjcmlwdD4NDQ0KCQkJCTw/cGhwDQ0NCgkJCQloZWFkZXIoIkxvY2F0aW9uOiBtb3JlX2NvbG9yLnBocD9taWQ9Ii5jaF9sdmwoJ21haW4nKS4iJnNlYz0iLmNoX2x2bCgnc2VjJykuIiZjYXQ9Ii5jaF9sdmwoJ2NhdCcpLiImcGlkPSIuY2hfbHZsKCdwaWQnKSk7DQ0NCgkJCQlkaWU7DQ0NCgkJfWVsc2V7DQ0NCgkJCQkkcmFuayA9IDA7DQ0NCgkJCQkkUk5LID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfY29sb3JzIHdoZXJlIHBpZCA9ICIuY2hfbHZsKCdwaWQnKS4iIG9yZGVyIGJ5IG1haW5pZCBERVNDIik7DQ0NCgkJCQlpZiAobnVtX3JlYygkUk5LKSA+IDApDQ0NCgkJCQl7DQ0NCgkJCQkJJHJrID0gZmV0Y2hfcmVjKCRSTkspOw0NDQoJCQkJCSRyYW5rID0gJHJrWydyYW5raW5nJ10gKyAxOw0NDQoJCQkJfWVsc2V7DQ0NCgkJCQkJJHJhbmsgPSAxOw0NDQoJCQkJfQ0NDQoJCQkJJElOQyA9IHFyeV9ydW4oIkluc2VydCBpbnRvIHRibF9jb2xvcnMgKG1pZCxzZWMsY2F0LHBpZCxwbmFtZSxwZGV0YWlsLHBzaG93LHJhbmtpbmcpIFZhbHVlcygiLmNoX2x2bCgnbWFpbicpLiIsIi5jaF9sdmwoJ3NlYycpLiIsIi5jaF9sdmwoJ2NhdCcpLiIsIi5jaF9sdmwoJ3BpZCcpLiIsJyIuY2hwKCdwbmFtZScpLiInLCciLmNocCgncGRldGFpbCcpLiInLCciLmNoX2Noa2IoJ3BzaG93JykuIicsIi4kcmFuay4iKSIpOw0NDQoJCQkJaWYgKCEkSU5DKQ0NDQoJCQkJew0NDQoJCQkJCWVjaG8gbXlzcWxfZXJyb3IoKTsNDQ0KCQkJCQlkaWU7DQ0NCgkJCQl9ZWxzZXsNDQ0KCQkJCQkkbGFzdF9pZCA9IG15c3FsX2luc2VydF9pZCgpOw0NDQoJCQkJCS8vLS0tLS0tLSBVUExPQUQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoJCQkJCSRpbWcxID0gIiI7DQ0NCgkJCQkJJGltZzIgPSAiIjsNDQ0KCQkJCQkkaW1nMyA9ICIiOw0NDQoJCQkJCSRpbWc0ID0gIiI7DQ0NCgkJCQkJJHBpYzEgPSBjaF9sdmwoJ3BpZCcpLiJfIi4kbGFzdF9pZC4iX2NvbG9yXzEuIjsNDQ0KCQkJCQkkcGljMiA9IGNoX2x2bCgncGlkJykuIl8iLiRsYXN0X2lkLiJfY29sb3JfMi4iOw0NDQoJCQkJCSRwaWMzID0gY2hfbHZsKCdwaWQnKS4iXyIuJGxhc3RfaWQuIl9jb2xvcl80LiI7DQ0NCgkJCQkJJHBpYzQgPSBjaF9sdmwoJ3BpZCcpLiJfIi4kbGFzdF9pZC4iX2NvbG9yXzMuIjsNDQ0KCQkJCQlpZiAoY2hfZmlsZSgnaW1nMicpID09ICJZZXMiKQ0NDQoJCQkJCXsNDQ0KCQkJCQkJJGV4dCA9IGRvX2ZpbGUoJ2ltZzInLCRwaWMzLCRzdWJfcGF0aCk7DQ0NCgkJCQkJCWlmICgkZXh0ID09ICJObyIpDQ0NCgkJCQkJCXsNDQ0KCQkJCQkJCSRpbWczID0gIiI7DQ0NCgkJCQkJCX1lbHNlew0NDQoJCQkJCQkJJGltZzMgPSAkcGljMy4kZXh0Ow0NDQoJCQkJCQkJJFBhdGggPSAiLi4vcGljdHVyZXMvIjsNDQ0KCQkJCQkJCS8vKioqKioqKioqKioqKioqKioqKioqKioqIEFVVE8gVEhVTUJOQUlMIFNFVFRJTkcgKioqKioqKioqKioqKioqKioqKioqKg0NDQoJCQkJCQkJJGltZzQgPSBjcl9pbWFnZSgkaW1nMywxMjAwLCdXJywkZXh0LCRwaWM0LCRQYXRoKTsNDQ0KCQkJCQkJCSRpbWcyID0gY3JfaW1hZ2UoJGltZzMsNDUwLCdXJywkZXh0LCRwaWMyLCRQYXRoKTsNDQ0KCQkJCQkJCSRpbWcxID0gY3JfaW1hZ2UoJGltZzMsMTUwLCdXJywkZXh0LCRwaWMxLCRQYXRoKTsNDQ0KCQkJCQkJCXVubGluaygiLi4vcGljdHVyZXMvIi4kaW1nMyk7DQ0NCgkJCQkJCQkkaW1nMyA9ICIiOw0NDQoJCQkJCQkJLy8qKioqKioqKioqKioqKioqKioqKioqKiogRU5EIENSRUFUSU5HIFRIVU1CTkFJTCAqKioqKioqKioqKioqKioqKioqKioqKioqDQ0NCgkJCQkJCX0NDQ0KCQkJCQl9DQ0NCgkJCQkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfY29sb3JzIFNldCBpbWcxID0gJyIuJGltZzEuIicsaW1nMiA9ICciLiRpbWcyLiInLGltZzMgPSAnIi4kaW1nNC4iJyB3aGVyZSBtYWluaWQgPSAiLiRsYXN0X2lkLiIiKTsNDQ0KCQkJCQkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVVBMT0FEIEVORCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoJCQkJCWhlYWRlcigiTG9jYXRpb246IG1vcmVfY29sb3IucGhwP21pZD0iLmNoX2x2bCgnbWFpbicpLiImc2VjPSIuY2hfbHZsKCdzZWMnKS4iJmNhdD0iLmNoX2x2bCgnY2F0JykuIiZwaWQ9Ii5jaF9sdmwoJ3BpZCcpKTsNDQ0KCQkJCQlkaWU7DQ0NCgkJCQl9DQ0NCgkJCX0NDQ0KCQl9DQ0NCgl9DQ0NCgkvLy0tLS0tLS0gTkVXIEVORCAtLS0tLS0tLS0tLS0NDQ0KCWlmIChjaHAoJ0NfVFlQRScpID09ICJFRElUIikNDQ0KCXsNDQ0KCQlpZiAoY2hwKCdwbmFtZXMnKSAhPSAiIikNDQ0KCQl7DQ0NCgkJCS8vLS0tLS0tLSBVUExPQUQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0NDQoJCQkkbGFzdF9pZCA9IGNoX2x2bCgnbW9yZScpOw0NDQoJCQkvLy0tLS0tLS0gVVBMT0FEIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQ0KCQkJJGltZzEgPSAiIjsNDQ0KCQkJJGltZzIgPSAiIjsNDQ0KCQkJJGltZzMgPSAiIjsNDQ0KCQkJJGltZzQgPSAiIjsNDQ0KCQkJJHBpYzEgPSBjaF9sdmwoJ3BpZCcpLiJfIi4kbGFzdF9pZC4iX2NvbG9yXzEuIjsNDQ0KCQkJJHBpYzIgPSBjaF9sdmwoJ3BpZCcpLiJfIi4kbGFzdF9pZC4iX2NvbG9yXzIuIjsNDQ0KCQkJJHBpYzMgPSBjaF9sdmwoJ3BpZCcpLiJfIi4kbGFzdF9pZC4iX2NvbG9yXzQuIjsNDQ0KCQkJJHBpYzQgPSBjaF9sdmwoJ3BpZCcpLiJfIi4kbGFzdF9pZC4iX2NvbG9yXzMuIjsNDQ0KCQkJaWYgKGNoX2ZpbGUoJ2ltZzInKSA9PSAiWWVzIikNDQ0KCQkJew0NDQoJCQkJJGV4dCA9IGRvX2ZpbGUoJ2ltZzInLCRwaWMzLCRzdWJfcGF0aCk7DQ0NCgkJCQlpZiAoJGV4dCA9PSAiTm8iKQ0NDQoJCQkJew0NDQoJCQkJCSRpbWczID0gIiI7DQ0NCgkJCQl9ZWxzZXsNDQ0KCQkJCQkkaW1nMyA9ICRwaWMzLiRleHQ7DQ0NCgkJCQkJJFBhdGggPSAiLi4vcGljdHVyZXMvIjsNDQ0KCQkJCQkvLyoqKioqKioqKioqKioqKioqKioqKioqKiBBVVRPIFRIVU1CTkFJTCBTRVRUSU5HICoqKioqKioqKioqKioqKioqKioqKioNDQ0KCQkJCQkkaW1nNCA9IGNyX2ltYWdlKCRpbWczLDEyMDAsJ1cnLCRleHQsJHBpYzQsJFBhdGgpOw0NDQoJCQkJCSRpbWcyID0gY3JfaW1hZ2UoJGltZzMsNDUwLCdXJywkZXh0LCRwaWMyLCRQYXRoKTsNDQ0KCQkJCQkkaW1nMSA9IGNyX2ltYWdlKCRpbWczLDE1MCwnVycsJGV4dCwkcGljMSwkUGF0aCk7DQ0NCgkJCQkJdW5saW5rKCIuLi9waWN0dXJlcy8iLiRpbWczKTsNDQ0KCQkJCQkkaW1nMyA9ICIiOw0NDQoJCQkJCSRVUEQgPSBxcnlfcnVuKCJVcGRhdGUgdGJsX2NvbG9ycyBTZXQgaW1nMSA9ICciLiRpbWcxLiInLGltZzIgPSAnIi4kaW1nMi4iJyxpbWczID0gJyIuJGltZzQuIicgd2hlcmUgbWFpbmlkID0gIi4kbGFzdF9pZC4iIik7DQ0NCgkJCQkJLy8qKioqKioqKioqKioqKioqKioqKioqKiogRU5EIENSRUFUSU5HIFRIVU1CTkFJTCAqKioqKioqKioqKioqKioqKioqKioqKioqDQ0NCgkJCQl9DQ0NCgkJCX0NDQ0KCQkJLy8tLS0tLS0tIFVQTE9BRCBFTkQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NDQ0KCQkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfY29sb3JzIFNldCBwbmFtZSA9ICciLmNoaHRtbCgncG5hbWUnKS4iJyxwZGV0YWlsID0gJyIuY2hodG1sKCdwZGV0YWlsJykuIicscHNob3cgPSAnIi5jaF9jaGtiKCdwc2hvdycpLiInIHdoZXJlIG1haW5pZCA9ICIuY2hfbHZsKCdtb3JlJykuIiIpOw0NDQoJCQloZWFkZXIoIkxvY2F0aW9uOiBtb3JlX2NvbG9yLnBocD9taWQ9Ii5jaF9sdmwoJ21pZCcpLiImc2VjPSIuY2hfbHZsKCdzZWMnKS4iJmNhdD0iLmNoX2x2bCgnY2F0JykuIiZwaWQ9Ii5jaF9sdmwoJ3BpZCcpKTsNDQ0KCQkJZGllOwkNDQ0KDQ0NCgkJfQ0NDQoJfQ0NDQoJLy8tLS0tLS0gRURJVCBFTkQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQ0NCglpZiAoY2hwKCdDX1RZUEUnKSA9PSAiREVMIikNDQ0KCXsNDQ0KCQlpZiAoY2hfbHZsKCdwaWQnKSAhPSAiIikNDQ0KCQl7DQ0NCgkJCSRRUlkgPSBxcnlfcnVuKCJTZWxlY3QgKiBmcm9tIHRibF9jb2xvcnMgd2hlcmUgcGlkID0gIi5jaF9sdmwoJ3BpZCcpLiIgQU5EIG1haW5pZCA9ICIuY2hfbHZsKCdtb3JlJykuIiIpOw0NDQoJCQlpZiAobnVtX3JlYygkUVJZKSA+IDApDQ0NCgkJCXsNDQ0KCQkJCSRycCA9IGZldGNoX3JlYygkUVJZKTsNDQ0KCQkJCWlmIChmaWxlX2V4aXN0cygiLi4vcGljdHVyZXMvIi4kcnBbJ2ltZzEnXSkpIA0NDQoJCQkJew0NDQoJCQkJCXVubGluaygiLi4vcGljdHVyZXMvIi4kcnBbJ2ltZzEnXSk7DQ0NCgkJCQl9DQ0NCgkJCQlpZiAoZmlsZV9leGlzdHMoIi4uL3BpY3R1cmVzLyIuJHJwWydpbWcyJ10pKSANDQ0KCQkJCXsNDQ0KCQkJCQl1bmxpbmsoIi4uL3BpY3R1cmVzLyIuJHJwWydpbWcyJ10pOw0NDQoJCQkJfQ0NDQoJCQkJaWYgKGZpbGVfZXhpc3RzKCIuLi9waWN0dXJlcy8iLiRycFsnaW1nMyddKSkgDQ0NCgkJCQl7DQ0NCgkJCQkJdW5saW5rKCIuLi9waWN0dXJlcy8iLiRycFsnaW1nMyddKTsNDQ0KCQkJCX0NDQ0KCQkJfQ0NDQoJCQkkREVMID0gcXJ5X3J1bigiRGVsZXRlIGZyb20gdGJsX2NvbG9ycyB3aGVyZSBwaWQgPSAiLmNoX2x2bCgncGlkJykuIiBBTkQgbWFpbmlkID0gIi5jaF9sdmwoJ21vcmUnKS4iIik7DQ0NCgkJCS8vIFJlIFJhbmtpbmcgLS0tLS0tLS0tLS0NDQ0KCQkJJHJhbmsgPSAxOw0NDQoJCQkkUk5LID0gcXJ5X3J1bigic2VsZWN0ICogZnJvbSB0YmxfY29sb3JzIHdoZXJlIHBpZCA9ICIuY2hfbHZsKCdwaWQnKS4iIG9yZGVyIGJ5IHJhbmtpbmciKTsNDQ0KCQkJaWYgKG51bV9yZWMoJFJOSykgPiAwKQ0NDQoJCQl7DQ0NCgkJCQl3aGlsZSgkcmsgPSBmZXRjaF9yZWMoJFJOSykpDQ0NCgkJCQl7DQ0NCgkJCQkJJFVQRCA9IHFyeV9ydW4oIlVwZGF0ZSB0YmxfY29sb3JzIFNldCByYW5raW5nID0gIi4kcmFuay4iIHdoZXJlIG1haW5pZCA9ICIuJHJrWydtYWluaWQnXS4iIik7DQ0NCgkJCQkJJHJhbmsgPSAkcmFuayArIDE7DQ0NCgkJCQl9DQ0NCgkJCX0vLy0tLS0tLSBFTkQgUkFOS0lORyAtLS0tLQ0NDQoJCQloZWFkZXIoIkxvY2F0aW9uOiBtb3JlX2NvbG9yLnBocD9taWQ9Ii5jaF9sdmwoJ21pZCcpLiImc2VjPSIuY2hfbHZsKCdzZWMnKS4iJmNhdD0iLmNoX2x2bCgnY2F0JykuIiZwaWQ9Ii5jaF9sdmwoJ3BpZCcpKTsNDQ0KCQkJZGllOw0NDQoJCX0NDQ0KCX0NDQ0KCWlmIChjaHAoJ0NfVFlQRScpID09ICJQU0hPVyIpDQ0NCgl7DQ0NCgkJaWYgKGNocCgnUF9zaG93JykgPT0gIlllcyIpDQ0NCgkJew0NDQoJCQkkUF9zaG93ID0gIk5vIjsNDQ0KCQl9ZWxzZXsNDQ0KCQkJJFBfc2hvdyA9ICJZZXMiOw0NDQoJCX0NDQ0KCQkkVVBEID0gcXJ5X3J1bigiVXBkYXRlIHRibF9jb2xvcnMgU2V0IHBzaG93ID0gJyIuJFBfc2hvdy4iJyB3aGVyZSBtYWluaWQgPSAiLmNoX2x2bCgnbW9yZScpLiIiKTsNDQ0KCQloZWFkZXIoIkxvY2F0aW9uOiBtb3JlX2NvbG9yLnBocD9taWQ9Ii5jaF9sdmwoJ21pZCcpLiImc2VjPSIuY2hfbHZsKCdzZWMnKS4iJmNhdD0iLmNoX2x2bCgnY2F0JykuIiZwaWQ9Ii5jaF9sdmwoJ3BpZCcpKTsNDQ0KCQlkaWU7DQ0NCgl9DQ0NCn0NDQ0KDQ0NCj8+"));//Generated by Ampare PHP Encoder. For more security please use php protect before encode the php program
Function Calls
base64_decode | 1 |
Stats
MD5 | 9220dbcc5d8f89cf4c979650cc3ec601 |
Eval Count | 1 |
Decode Time | 124 ms |