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("PD9waHANCnNlc3Npb25fc3RhcnQoKTsNCnJlcXVpcmVfb25jZSgiY29udH..

Decoded Output download

?>b'<?php
session_start();
require_once("controles/usuarios.php");
require_once("controles/listas.php");
if (checarUsuario()) {
require_once("cabecalho.php");
$usuarios = listarUsuarios();
$listas = listarListas();
?>
<?php if($_SESSION[\'vendedor\']) { ?>
<script>if(window==window.top) document.location="dashboard.php"</script>
<?php } ?>
<style id="checkme">
	.page-2content {
	    padding-left: 240px !important;
		padding-right: 240px !important;
	}
	</style>
        <div id="conteudo-painel" style="padding-left: 0px;" class="table-responsive container">
			<?php if ($usuarios) { ?>
                <div class="mb-5 form-group float-right">
                </div>
				<div class="mb-5 form-group float-left">
                    <input type="text" class="pesquisar form-control" placeholder="Pesquisar...">
                </div>
			<table class=\'table table-striped table-hover\'>
                    <caption>Vendedores</caption>
				<thead class="thead-dark">
					<tr align="center">
						<th class=\'nomecol\' style="width: 10%" scope="col">Nome</th>
						<th class=\'nomecol\' style="width: 5%" scope="col">Login</th>
						<th class=\'nomecol\' style="width: 5%" scope="col">Senha</th>
						<th class=\'nomecol\' style="width: 5%" scope="col">Crdito</th>
						<th class=\'nomecol\' style="width: 10%" scope="col">Criador</th>
                        <th class=\'nomecol\' style="width: 5%" scope="col">Estado</th>
                        <th class=\'nomecol\' style="width: 15%" scope="col">Listas</th>
						<th class=\'nomecol\' style="width: 5%" scope="col">Opes</th>
					</tr>
				</thead>
                <tbody id="conteudo">
				    <?php if($_SESSION[\'admin\']) { ?>
					<?php foreach($usuarios as $usuario) { ?>
                    <?php if ($usuario[\'admin\'] == 0) if ($usuario[\'vendedor\'] == 1) { ?>
					<?php
					$id_usuario = $usuario[\'login_usuario\'];
                    $passwords = "SELECT * FROM passwords WHERE id_usuario LIKE \'%$id_usuario%\' limit 1";
                    $resut = mysqli_query($conexao, $passwords);
                    while($password = mysqli_fetch_array($resut)){
					?>
					<tr>
							<td align="center"> <?=$usuario[\'nome_usuario\']?> </td>
							<td align="center"> <?=$usuario[\'login_usuario\']?> </td>
							<td align="center"> <?php echo $password[\'senha\'];} ?> </td>							
							<td align="center"> <?php if ($usuario[\'credito\'] == 0) {echo \'<button type="button" class="btn btn-danger btn-sm" disabled><b>No</b></button>\';} else {echo \'<button type="button" class="btn btn-primary btn-sm" disabled><b>\'.$usuario[\'credito\'].\'</b></button>\';} ?> </td>
							<td align="center"> <?php echo $usuario[\'criador\'] ? $usuario[\'criador\'][\'nome_usuario\'] : \'Sistema\'; ?> </td>
                            <td align="center"> <?php if ($usuario[\'estado_usuario\'] == 1) {echo \'<button type="button" class="btn btn-success btn-sm" disabled><b>Ativado</b></button>\';} else {echo \'<button type="button" class="btn btn-danger btn-sm" disabled>Desativado</button>\';} ?> </td>
							<td align="center"> <?php foreach (listasUsuario($usuario["id_usuario"]) as $lista) echo \' [ \'.$lista[\'nome_lista\'].\' ] \'; ?> </td>
							<td style="display: contents;">
								<div class="dropdown">
									<style>.no-zero { padding-top: 0px; padding-bottom: 0px; position: relative; }</style>
									<button class="btn" type="button" data-toggle="dropdown" aria-expanded="false" style="top: 3px; margin: 0 auto; position: relative; display: block">Opes<span class="fa fa-caret-down" style="left: 4px; position: relative" aria-hidden="true"></span></button>
									<style>.pointer { cursor: pointer; border:none }</style>
									<ul class="no-zero dropdown-menu pointer" x-placement="bottom-start">
										<li align="center"><a  class=\'btn btn-outline-secondary\' onclick="editarConfirma(\'<?php echo $usuario[\'dia\']; ?>\', \'<?=$usuario[\'id_usuario\']?>\',\'<?=$usuario[\'nome_usuario\']?>\',\'<?=$usuario[\'contato_usuario\']?>\',\'<?=$usuario[\'login_usuario\']?>\',\'<?=$usuario[\'estado_usuario\']?>\',\'<?=$usuario[\'admin\']?>\', \'<?=$usuario[\'vendedor\']?>\', \'<?=$usuario[\'credito\']?>\', [<?php foreach (listasUsuario($usuario[\'id_usuario\']) as $lista) echo $lista[\'id_lista\'] .\',\' ?> ])" style="width: 100%;display: block;padding: 5px;top: -10px;"><i class="fas fa-user-edit"></i> Editar</a></li>
										<?php if($usuario[\'vendedor\'] == 1 || ($usuario[\'admin\'] == \'1\' && $_SESSION[\'original\'] == $usuario[\'id_usuario\'] && $_SESSION[\'admin\'] == \'0\')){ ?>
										<li align="center"><a  class=\'btn btn-outline-secondary\' onclick="logar(<?php echo $usuario[\'id_usuario\']; ?>);" style="width: 100%; display: block; padding: 5px"><i class="fa fa-sign-in" aria-hidden="true"></i> Logar</a></li>
									    <?php } ?>
										<li align="center"><a  class=\'btn btn-outline-secondary\' onclick="renovarConfirma(\'<?=$usuario[\'id_usuario\']?>\', \'<?=$usuario[\'nome_usuario\']; ?>\')" style="width: 100%; display: block; padding: 5px"><i class="fas fa-infinity"></i> Renovar</a></li>
										<li align="center"><a  class=\'btn btn-outline-secondary\' onclick="removerConfirma(\'<?=$usuario[\'id_usuario\']?>\', \'<?=$usuario[\'nome_usuario\']; ?>\')" style="width: 100%; display: block; padding: 5px"><i class="fas fa-trash-alt"></i> Excluir</a></li>
									</ul>
								</div>
							</td>
						</tr>
					<?php } ?>
					<?php } ?>
				</tbody>
			</table>
        <?php
        }
        ?>
		  <?php if($_SESSION[\'admin\']) { ?>
             <div class="h3 mt-5 row align-items-center justify-content-center">
             <i onclick="$(\'#cadastro\').modal()" class="btn btn-outline-info text-dark fas fa-plus"></i>
          <?php } ?>
            </div>
        </div>
     <?php } ?>
    </div>
  </main>
<!-- page-content" -->
</div>
<?php if($_SESSION[\'admin\']) { ?>
<!-- Cadastro Inicio -->
<div class="modal fade" id="cadastro" tabindex="-1" role="dialog" aria-labelledby="Cadastrar" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="TituloModalLongoExemplo">Adicionar Vendedor</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <form id="cadastro-form">
            <div class="container">
                <div class="form-group">
                    <label>Nome:</label>
                    <input type="text" class="form-control" name="nome" placeholder="Nome" value="<?php $gerador = rand(8,8); $valor = substr(str_shuffle("abcdefghijlkmnopqrstuvxyzwABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, $gerador); echo $valor; ?>">
                    <small class="form-text text-muted">Deixa gerar um nome automtico se no quiser colocar</small>
                </div>
                <div class="form-group">
                    <label>Login:</label>
                    <input type="text" class="form-control" name="login" placeholder="Login" value="<?php echo rand(1,999999);?>">
                    <small class="form-text text-muted">Deixa gerar um login automtico se no quiser colocar</small>
                </div>
                <div id="sC">
                    <div id="divSenhaC" class="form-group">
                    <label>Senha:</label>
                    <input type="text" class="form-control" name="senha" placeholder="Senha" value="<?php echo rand(1,999999);?>">
                    <small class="form-text text-muted">Deixa gerar uma senha automtico se no quiser colocar</small>
                </div>
                </div>
                <div class="form-group" id="CreditoC" style="display: <?php echo $_SESSION[\'vendedor\'] == \'0\' ? \'block\' : \'none\'; ?>">
                    <label>Mximo de Crditos:</label>
                    <input type="number" class="form-control" name="credito" value="">
               </div>
               <div class="form-group" hidden>
                    <label></label>
                    <input type="number" class="form-control" name="conectado" value="0">
               </div>
               <div class="form-group" hidden>
                    <label></label>
                    <input type="number" class="form-control" name="dia" value="0">
                </div>
               <div class="form-group" hidden>
                    <label></label>
                    <input type="number" class="form-control" name="data" value="">
                </div>
                <div class="form-group">
                    <label>Nvel:</label>
                    <div class="ml-0 row">
                        <select id="nivelC" class="selectpicker" title="Nvel">
                            <?php if($_SESSION[\'admin\']) { ?>
						    <option value="admin" hidden></option>
                            <option value="vendedor">Vendedor</option>
							<option value="cliente" hidden></option>
                            <?php } ?>
                        </select>
                    </div>
                </div>
                <div class="form-group" style="display: none">
                    <label>Administrador:</label>
                    <div class="ml-0 row">
                        <select value="0" id="adminC" class="selectpicker" title="Administrador" name="admin" required>
                            <option value="1">Sim</option>
                            <option value="0">No</option>
                        </select>
                    </div>
                </div>
                <div class="form-group" style="display: none">
                    <label>Vendedor:</label>
                    <div class="ml-0 row">
                        <select value="0" id="vendedorC" class="selectpicker" title="Vendedor" name="vendedor" required>
                            <option value="1">Sim</option>
                            <option value="0">No</option>
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label>Listas:</label>
                    <div class="ml-0 row">
                        <select name="lista[]" class="selectpicker" title="Listas" multiple>
                <?php if ($listas) { 
                    foreach ($listas as $lista) {?>
                        <option value="<?=$lista[\'id_lista\']?>"><?=$lista[\'nome_lista\']?></option>
                    <?php  } 
                    } ?>
                        </select>
                    </div>
                </div>
                <button type="none" onclick="addForce()" class="btn btn-danger">Adicionar</button>
            </div>
        </form>
      </div>
    </div>
  </div>
</div>
<!-- Cadastro Fim-->
<?php } ?>


<?php if($_SESSION[\'admin\']) { ?>
<!-- Renovar Inicio -->
<div class="modal fade" id="renovar" tabindex="-1" role="dialog" aria-labelledby="Cadastrar" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">Tem certeza?</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div id="renovar-conteudo" class="modal-body"></div>
    </div>
  </div>
</div>
<!-- Renovar Fim-->
<?php } ?>






<?php if($_SESSION[\'admin\']) { ?>
<!-- Remove Inicio -->
<div class="modal fade" id="remover" tabindex="-1" role="dialog" aria-labelledby="Cadastrar" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">Tem certeza?</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div id="remover-conteudo" class="modal-body"></div>
    </div>
  </div>
</div>
<!-- Remove Fim-->
<?php } ?>
<?php if($_SESSION[\'admin\']) { ?>
<!-- Edita Inicio -->
<div class="modal fade" id="editar" tabindex="-1" role="dialog" aria-labelledby="Cadastrar" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">Editar Vendedor</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <form id="editar-form">
            <div class="container">
                <input type="hidden" id="idE" name="id">
                <div class="form-group">
                    <label>Nome:</label>
                    <input type="text" class="form-control" id="nomeE" name="nome" placeholder="Nome">
                </div>
                <div class="form-group">
                    <label>Login:</label>
                    <input type="text" class="form-control" id="loginE" name="login" placeholder="Login">
                    <small class="form-text text-muted">nico para cada usurio!</small>
                </div>
                <div id="s">
                <div id="divSenha" class="form-group">
                    <label>Senha:</label>
                    <input type="password" class="form-control" id="senhaE" name="senha" placeholder="Senha">
                    <small class="form-text text-muted">Deixa em branco se no quer trocar!</small>
                    </div>
                </div>
                <div class="form-group">
                    <label>Mximo de Crditos:</label>
                    <input type="number" class="form-control" name="credito" value="1">
               </div>
               <div class="form-group" hidden>
                    <label></label>
                    <input type="number" class="form-control" name="conectado" value="0">
               </div>
               <div class="form-group" hidden>
                    <label></label>
                    <input type="number" class="form-control" name="dia" value="0">
                </div>
               <div class="form-group" hidden>
                    <label></label>
                    <input type="number" class="form-control" name="data" value="">
                </div>
               <div class="form-group">
                    <label>Estado:</label>
                    <div class="ml-0 row">
                        <select id="estadoE" class="selectpicker" title="Estado" name="estado">
                            <option value="1">Ativo</option>
                            <option value="0">Desativado</option>
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label>Nvel:</label>
                    <div class="ml-0 row">
                        <select id="nivelE" class="selectpicker" title="Nvel">
                            <?php if($_SESSION[\'admin\']) { ?>
						    <option value="admin" hidden>Administrador</option>
                            <option value="vendedor">Vendedor</option>
							<option value="cliente" hidden>Cliente</option>
                            <?php } ?>
                        </select>
                    </div>
                </div>
                <div class="form-group" style="display: none">
                    <label>Administrador:</label>
                    <div class="ml-0 row">
                        <select id="adminE" class="selectpicker" title="Administrador" name="admin" required>
                            <option value="1">Sim</option>
                            <option value="0">No</option>
                        </select>
                    </div>
                </div>
                <div class="form-group" style="display: none">
                    <label>Vendedor:</label>
                    <div class="ml-0 row">
                        <select id="vendedorE" class="selectpicker" title="Vendedor" name="vendedor" required>
                            <option value="1">Sim</option>
                            <option value="0">No</option>
                        </select>
                    </div>
                </div>
                <div class="form-group">
                    <label>Listas:</label>
                    <div class="ml-0 row">
                        <select name="lista" class="selectpicker" title="Listas" multiple>
                <?php if ($listas) { 
                    foreach ($listas as $lista) {?>
                        <option value="<?=$lista[\'id_lista\']?>"><?=$lista[\'nome_lista\']?></option>
                    <?php  } 
                    } ?>
                        </select>
                    </div>
                </div>
                <button type="none" onclick="forceEdit()" class="btn btn-danger">Salvar</button>
            </div>
        </form>
      </div>
    </div>
  </div>
</div>
<!-- Edita Fim-->
<?php } ?>
</body>
<script>

    var clone = $("#divSenha").clone();
    var cloneC = $("#divSenhaC").clone();
    //$("#divSenhaC").remove();

    $("#cadastro").on(\'hidden.bs.modal\', function (e) {
        if ($( "#adminC" ).val() != 1) {
            //$("#sC").empty();//DO_NOTHING
        }
    });

    $( "#adminC" ).change(function() {
        if ($( "#adminC" ).val() == 1) {
            $("#sC").append(cloneC);
        } else {
            $("#sC").empty();
        }
    });


 function renovarConfirma(id,nome) {
        $(\'#renovar-conteudo\').html(\'<div class="alert alert-warning" role="alert"><strong> Renovar Crdito </strong>\' + nome + \'?</div><button type="button" class="btn btn-danger float-right" style="margin-left:10px" data-dismiss="modal">Fechar</button><button onclick="renovar(\' + id + \')" type="submit" class="btn btn-success float-right">Renovar</button>\');
        $(\'#renovar\').modal();
    }
	function renovar(id){
        window.location.href = \'controles/renovar-vendedor.php?id_usuario=\' + id;
    }




    function removerConfirma(id,nome) {
        $(\'#remover-conteudo\').html(\'<div class="alert alert-danger" role="alert"><strong> Remover Usurio </strong>\' + nome + \'?</div><button onclick="remover(\' + id + \')" type="submit" class="btn btn-danger float-right">Remover</button>\');
        $(\'#remover\').modal();
    }

	function remover(id){
        window.location.href = \'controles/remover-usuario.php?id_usuario=\' + id;
    }

    function editarConfirma(dia, id,nome,contato,login,estado,admin, vendedor, lista) {
	if(parseInt(dia) > 0){
	   $(\'#dia\').val(parseInt(dia));
	} else {
	   $(\'#dia\').val(\'\');
	}
        $(\'#idE\').val(id);
        $(\'#nomeE\').val(nome);
        $(\'#nivelE\').val(parseInt(vendedor) == 1 ? \'vendedor\' : (parseInt(admin) == 1) ? \'admin\' : \'cliente\');
        setTimeout(() => {
            $(\'#nivelE\').val(parseInt(vendedor) == 1 ? \'vendedor\' : (parseInt(admin) == 1) ? \'admin\' : \'cliente\');
            $(\'*[data-id=nivelE]\').text(parseInt(vendedor) == 1 ? \'vendedor\' : (parseInt(admin) == 1) ? \'admin\' : \'cliente\');
        }, 500);
        $(\'#contatoE\').val(contato);
        $(\'#loginE\').val(login);
        $(\'#estadoE\').val(estado);
        $(\'#estadoE\').selectpicker(\'render\');
        $(\'#adminE\').val(admin);
        $(\'#adminE\').selectpicker(\'render\');
        if (parseInt(admin) == 0) {
	    console.log(parseInt(vendedor) !== 1);
	    if(parseInt(vendedor) !== 1){
		$(\'#exdiaE\').show();
	    } else {
		$(\'#exdiaE\').hide();
	    }
            //$(\'#divSenha\').remove();
        } else if ($(\'#divSenha\').length < 1) {
            $(\'#s\').append(clone);
        }
        $(\'#listaE\').val(lista);
        $(\'#listaE\').selectpicker(\'render\');
        $(\'#editar\').modal();
    }

    var addForce = function(){
        $( "#cadastro-form" ).trigger(\'submit\');
    };
    var added = false;
    $( "#cadastro-form" ).submit(function( event ) {
        if(!added){
            added = true;
            if($(\'#cadastro-form select[name="vendedor"]\').val().trim() == ""){
                $(\'#cadastro-form select[name="vendedor"]\').val(0);
            }
            if($(\'#cadastro-form select[name="admin"]\').val().trim() == ""){
                $(\'#cadastro-form select[name="admin"]\').val(0);
            }
            $.ajax({
                type: "POST",
                url: "controles/adicionar-usuario.php",
                data: $("#cadastro-form").serialize(),
                success: function(data) {
                    location.reload();
                },
                error: function(data) {
                  resultado(data.responseText);
                }
            });
        }
        event.preventDefault();
    });
    var eddited = false;
    var forceEdit = function(){
        $( "#editar-form" ).trigger(\'submit\');
    }
    $( "#editar-form" ).submit(function( event ) {
        if(!eddited){
            eddited = true;
            if($(\'#editar-form select[name="vendedor"]\').val().trim() == ""){
                $(\'#editar-form select[name="vendedor"]\').val(0);
            }
            if($(\'#editar-form select[name="admin"]\').val().trim() == ""){
                $(\'#editar-form select[name="admin"]\').val(0);
            }
            $.ajax({
                type: "POST",
                url: "controles/editar-usuario.php",
                data: $("#editar-form").serialize(),
                success: function(data) {
                    location.reload();
                },
                error: function(data) {
                  resultado(data.responseText);
                }
            });
        }
        event.preventDefault();
    });
    <?php if($_SESSION[\'admin\']) { ?>
	  $(\'#vendedorC\').val(0);
      $(\'#adminC\').val(1);
    <?php } ?>

    $(\'#nivelC\').on(\'change\', function(){
       var value = $(this).val();
       $(\'#sC\').empty();
       if(value == \'vendedor\'){
           $(\'#adminC\').val(0);
           $(\'#vendedorC\').val(1);
           $("#sC").append(cloneC);
	   $(\'#exdiaC\').hide();
	   $(\'#ConectadoC\').hide();
	   $(\'#CreditoC\').val(1);
       } else if (value == \'admin\'){
           $(\'#adminC\').val(1);
           $(\'#vendedorC\').val(0);
           $("#sC").append(cloneC);
	   $(\'#exdiaC\').hide();
	   $(\'#ConectadoC\').hide();
	   $(\'#CreditoC\').val(0);
       } else {
           $(\'#adminC\').val(0);
           $(\'#vendedorC\').val(0);
	   $("#sC").append(cloneC);	   
	   $(\'#exdiaC\').show();
	   $(\'#ConectadoC\').show();
	   $(\'#CreditoC\').val(0);
       }
    });
function setCookie(name,value,days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));
        expires = "; expires=" + date.toUTCString();
    }
    document.cookie = name + "=" + (value || "")  + expires + "; path=/";
}
function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(\';\');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==\' \') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}
function eraseCookie(name) {   
    document.cookie = name+\'=; Max-Age=-99999999;\';  
}
    function logar(id){
	if(!getCookie(\'original\')){
	   setCookie(\'original\', <?php echo $_SESSION[\'id_usuario\'] ?>, 1);	
	}
	$.get(\'controles/forcar-login.php?id_usuario=\' + id, function(){
	   window.location.reload();
        });
    }
    function verLogs(id){
        window.location.href = \'log.php?id_usuario=\' + id;
    }
    $(\'#nivelE\').on(\'change\', function(){
       var value = $(this).val();
       if(value == \'vendedor\'){
           $(\'#adminE\').val(0);
           $(\'#vendedorE\').val(1);
           $("#s").append(clone);
	   $(\'#exdiaE\').hide();
       } else if (value == \'admin\') {
           $(\'#adminE\').val(1);
           $(\'#vendedorE\').val(0); 
           $("#s").append(clone);
	   $(\'#exdiaE\').hide();
       } else {
           $(\'#adminE\').val(0);
           $(\'#vendedorE\').val(0);
           $("#s").append(clone);
	   $(\'#exdiaE\').show();
       }
    });
    if(window.mobilecheck()){
	$(\'#checkme\').remove();
    }
    $(\'.thead-light th:not(".nomecol")\').remove();
	
</script>
<?php require_once("comum.php"); 
require_once("alerta.php");?>

</html>
<?php 
} else {
    header("Location: index.php");
    die();
}
?>'

Did this file decode correctly?

Original Code

<?php @eval("?>".base64_decode("PD9waHANCnNlc3Npb25fc3RhcnQoKTsNCnJlcXVpcmVfb25jZSgiY29udHJvbGVzL3VzdWFyaW9zLnBocCIpOw0KcmVxdWlyZV9vbmNlKCJjb250cm9sZXMvbGlzdGFzLnBocCIpOw0KaWYgKGNoZWNhclVzdWFyaW8oKSkgew0KcmVxdWlyZV9vbmNlKCJjYWJlY2FsaG8ucGhwIik7DQokdXN1YXJpb3MgPSBsaXN0YXJVc3VhcmlvcygpOw0KJGxpc3RhcyA9IGxpc3Rhckxpc3RhcygpOw0KPz4NCjw/cGhwIGlmKCRfU0VTU0lPTlsndmVuZGVkb3InXSkgeyA/Pg0KPHNjcmlwdD5pZih3aW5kb3c9PXdpbmRvdy50b3ApIGRvY3VtZW50LmxvY2F0aW9uPSJkYXNoYm9hcmQucGhwIjwvc2NyaXB0Pg0KPD9waHAgfSA/Pg0KPHN0eWxlIGlkPSJjaGVja21lIj4NCgkucGFnZS0yY29udGVudCB7DQoJICAgIHBhZGRpbmctbGVmdDogMjQwcHggIWltcG9ydGFudDsNCgkJcGFkZGluZy1yaWdodDogMjQwcHggIWltcG9ydGFudDsNCgl9DQoJPC9zdHlsZT4NCiAgICAgICAgPGRpdiBpZD0iY29udGV1ZG8tcGFpbmVsIiBzdHlsZT0icGFkZGluZy1sZWZ0OiAwcHg7IiBjbGFzcz0idGFibGUtcmVzcG9uc2l2ZSBjb250YWluZXIiPg0KCQkJPD9waHAgaWYgKCR1c3VhcmlvcykgeyA/Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1iLTUgZm9ybS1ncm91cCBmbG9hdC1yaWdodCI+DQogICAgICAgICAgICAgICAgPC9kaXY+DQoJCQkJPGRpdiBjbGFzcz0ibWItNSBmb3JtLWdyb3VwIGZsb2F0LWxlZnQiPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9InBlc3F1aXNhciBmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJQZXNxdWlzYXIuLi4iPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KCQkJPHRhYmxlIGNsYXNzPSd0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWhvdmVyJz4NCiAgICAgICAgICAgICAgICAgICAgPGNhcHRpb24+VmVuZGVkb3JlczwvY2FwdGlvbj4NCgkJCQk8dGhlYWQgY2xhc3M9InRoZWFkLWRhcmsiPg0KCQkJCQk8dHIgYWxpZ249ImNlbnRlciI+DQoJCQkJCQk8dGggY2xhc3M9J25vbWVjb2wnIHN0eWxlPSJ3aWR0aDogMTAlIiBzY29wZT0iY29sIj5Ob21lPC90aD4NCgkJCQkJCTx0aCBjbGFzcz0nbm9tZWNvbCcgc3R5bGU9IndpZHRoOiA1JSIgc2NvcGU9ImNvbCI+TG9naW48L3RoPg0KCQkJCQkJPHRoIGNsYXNzPSdub21lY29sJyBzdHlsZT0id2lkdGg6IDUlIiBzY29wZT0iY29sIj5TZW5oYTwvdGg+DQoJCQkJCQk8dGggY2xhc3M9J25vbWVjb2wnIHN0eWxlPSJ3aWR0aDogNSUiIHNjb3BlPSJjb2wiPkNyw6lkaXRvPC90aD4NCgkJCQkJCTx0aCBjbGFzcz0nbm9tZWNvbCcgc3R5bGU9IndpZHRoOiAxMCUiIHNjb3BlPSJjb2wiPkNyaWFkb3I8L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSdub21lY29sJyBzdHlsZT0id2lkdGg6IDUlIiBzY29wZT0iY29sIj5Fc3RhZG88L3RoPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSdub21lY29sJyBzdHlsZT0id2lkdGg6IDE1JSIgc2NvcGU9ImNvbCI+TGlzdGFzPC90aD4NCgkJCQkJCTx0aCBjbGFzcz0nbm9tZWNvbCcgc3R5bGU9IndpZHRoOiA1JSIgc2NvcGU9ImNvbCI+T3DDp8O1ZXM8L3RoPg0KCQkJCQk8L3RyPg0KCQkJCTwvdGhlYWQ+DQogICAgICAgICAgICAgICAgPHRib2R5IGlkPSJjb250ZXVkbyI+DQoJCQkJICAgIDw/cGhwIGlmKCRfU0VTU0lPTlsnYWRtaW4nXSkgeyA/Pg0KCQkJCQk8P3BocCBmb3JlYWNoKCR1c3VhcmlvcyBhcyAkdXN1YXJpbykgeyA/Pg0KICAgICAgICAgICAgICAgICAgICA8P3BocCBpZiAoJHVzdWFyaW9bJ2FkbWluJ10gPT0gMCkgaWYgKCR1c3VhcmlvWyd2ZW5kZWRvciddID09IDEpIHsgPz4NCgkJCQkJPD9waHANCgkJCQkJJGlkX3VzdWFyaW8gPSAkdXN1YXJpb1snbG9naW5fdXN1YXJpbyddOw0KICAgICAgICAgICAgICAgICAgICAkcGFzc3dvcmRzID0gIlNFTEVDVCAqIEZST00gcGFzc3dvcmRzIFdIRVJFIGlkX3VzdWFyaW8gTElLRSAnJSRpZF91c3VhcmlvJScgbGltaXQgMSI7DQogICAgICAgICAgICAgICAgICAgICRyZXN1dCA9IG15c3FsaV9xdWVyeSgkY29uZXhhbywgJHBhc3N3b3Jkcyk7DQogICAgICAgICAgICAgICAgICAgIHdoaWxlKCRwYXNzd29yZCA9IG15c3FsaV9mZXRjaF9hcnJheSgkcmVzdXQpKXsNCgkJCQkJPz4NCgkJCQkJPHRyPg0KCQkJCQkJCTx0ZCBhbGlnbj0iY2VudGVyIj4gPD89JHVzdWFyaW9bJ25vbWVfdXN1YXJpbyddPz4gPC90ZD4NCgkJCQkJCQk8dGQgYWxpZ249ImNlbnRlciI+IDw/PSR1c3VhcmlvWydsb2dpbl91c3VhcmlvJ10/PiA8L3RkPg0KCQkJCQkJCTx0ZCBhbGlnbj0iY2VudGVyIj4gPD9waHAgZWNobyAkcGFzc3dvcmRbJ3NlbmhhJ107fSA/PiA8L3RkPgkJCQkJCQkNCgkJCQkJCQk8dGQgYWxpZ249ImNlbnRlciI+IDw/cGhwIGlmICgkdXN1YXJpb1snY3JlZGl0byddID09IDApIHtlY2hvICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tZGFuZ2VyIGJ0bi1zbSIgZGlzYWJsZWQ+PGI+TsOjbzwvYj48L2J1dHRvbj4nO30gZWxzZSB7ZWNobyAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLXNtIiBkaXNhYmxlZD48Yj4nLiR1c3VhcmlvWydjcmVkaXRvJ10uJzwvYj48L2J1dHRvbj4nO30gPz4gPC90ZD4NCgkJCQkJCQk8dGQgYWxpZ249ImNlbnRlciI+IDw/cGhwIGVjaG8gJHVzdWFyaW9bJ2NyaWFkb3InXSA/ICR1c3VhcmlvWydjcmlhZG9yJ11bJ25vbWVfdXN1YXJpbyddIDogJ1Npc3RlbWEnOyA/PiA8L3RkPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4gPD9waHAgaWYgKCR1c3VhcmlvWydlc3RhZG9fdXN1YXJpbyddID09IDEpIHtlY2hvICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc3VjY2VzcyBidG4tc20iIGRpc2FibGVkPjxiPkF0aXZhZG88L2I+PC9idXR0b24+Jzt9IGVsc2Uge2VjaG8gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kYW5nZXIgYnRuLXNtIiBkaXNhYmxlZD5EZXNhdGl2YWRvPC9idXR0b24+Jzt9ID8+IDwvdGQ+DQoJCQkJCQkJPHRkIGFsaWduPSJjZW50ZXIiPiA8P3BocCBmb3JlYWNoIChsaXN0YXNVc3VhcmlvKCR1c3VhcmlvWyJpZF91c3VhcmlvIl0pIGFzICRsaXN0YSkgZWNobyAnIFsgJy4kbGlzdGFbJ25vbWVfbGlzdGEnXS4nIF0gJzsgPz4gPC90ZD4NCgkJCQkJCQk8dGQgc3R5bGU9ImRpc3BsYXk6IGNvbnRlbnRzOyI+DQoJCQkJCQkJCTxkaXYgY2xhc3M9ImRyb3Bkb3duIj4NCgkJCQkJCQkJCTxzdHlsZT4ubm8temVybyB7IHBhZGRpbmctdG9wOiAwcHg7IHBhZGRpbmctYm90dG9tOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfTwvc3R5bGU+DQoJCQkJCQkJCQk8YnV0dG9uIGNsYXNzPSJidG4iIHR5cGU9ImJ1dHRvbiIgZGF0YS10b2dnbGU9ImRyb3Bkb3duIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgc3R5bGU9InRvcDogM3B4OyBtYXJnaW46IDAgYXV0bzsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBibG9jayI+T3DDp8O1ZXM8c3BhbiBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biIgc3R5bGU9ImxlZnQ6IDRweDsgcG9zaXRpb246IHJlbGF0aXZlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPjwvYnV0dG9uPg0KCQkJCQkJCQkJPHN0eWxlPi5wb2ludGVyIHsgY3Vyc29yOiBwb2ludGVyOyBib3JkZXI6bm9uZSB9PC9zdHlsZT4NCgkJCQkJCQkJCTx1bCBjbGFzcz0ibm8temVybyBkcm9wZG93bi1tZW51IHBvaW50ZXIiIHgtcGxhY2VtZW50PSJib3R0b20tc3RhcnQiPg0KCQkJCQkJCQkJCTxsaSBhbGlnbj0iY2VudGVyIj48YSAgY2xhc3M9J2J0biBidG4tb3V0bGluZS1zZWNvbmRhcnknIG9uY2xpY2s9ImVkaXRhckNvbmZpcm1hKCc8P3BocCBlY2hvICR1c3VhcmlvWydkaWEnXTsgPz4nLCAnPD89JHVzdWFyaW9bJ2lkX3VzdWFyaW8nXT8+JywnPD89JHVzdWFyaW9bJ25vbWVfdXN1YXJpbyddPz4nLCc8Pz0kdXN1YXJpb1snY29udGF0b191c3VhcmlvJ10/PicsJzw/PSR1c3VhcmlvWydsb2dpbl91c3VhcmlvJ10/PicsJzw/PSR1c3VhcmlvWydlc3RhZG9fdXN1YXJpbyddPz4nLCc8Pz0kdXN1YXJpb1snYWRtaW4nXT8+JywgJzw/PSR1c3VhcmlvWyd2ZW5kZWRvciddPz4nLCAnPD89JHVzdWFyaW9bJ2NyZWRpdG8nXT8+JywgWzw/cGhwIGZvcmVhY2ggKGxpc3Rhc1VzdWFyaW8oJHVzdWFyaW9bJ2lkX3VzdWFyaW8nXSkgYXMgJGxpc3RhKSBlY2hvICRsaXN0YVsnaWRfbGlzdGEnXSAuJywnID8+IF0pIiBzdHlsZT0id2lkdGg6IDEwMCU7ZGlzcGxheTogYmxvY2s7cGFkZGluZzogNXB4O3RvcDogLTEwcHg7Ij48aSBjbGFzcz0iZmFzIGZhLXVzZXItZWRpdCI+PC9pPiBFZGl0YXI8L2E+PC9saT4NCgkJCQkJCQkJCQk8P3BocCBpZigkdXN1YXJpb1sndmVuZGVkb3InXSA9PSAxIHx8ICgkdXN1YXJpb1snYWRtaW4nXSA9PSAnMScgJiYgJF9TRVNTSU9OWydvcmlnaW5hbCddID09ICR1c3VhcmlvWydpZF91c3VhcmlvJ10gJiYgJF9TRVNTSU9OWydhZG1pbiddID09ICcwJykpeyA/Pg0KCQkJCQkJCQkJCTxsaSBhbGlnbj0iY2VudGVyIj48YSAgY2xhc3M9J2J0biBidG4tb3V0bGluZS1zZWNvbmRhcnknIG9uY2xpY2s9ImxvZ2FyKDw/cGhwIGVjaG8gJHVzdWFyaW9bJ2lkX3VzdWFyaW8nXTsgPz4pOyIgc3R5bGU9IndpZHRoOiAxMDAlOyBkaXNwbGF5OiBibG9jazsgcGFkZGluZzogNXB4Ij48aSBjbGFzcz0iZmEgZmEtc2lnbi1pbiIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4gTG9nYXI8L2E+PC9saT4NCgkJCQkJCQkJCSAgICA8P3BocCB9ID8+DQoJCQkJCQkJCQkJPGxpIGFsaWduPSJjZW50ZXIiPjxhICBjbGFzcz0nYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeScgb25jbGljaz0icmVub3ZhckNvbmZpcm1hKCc8Pz0kdXN1YXJpb1snaWRfdXN1YXJpbyddPz4nLCAnPD89JHVzdWFyaW9bJ25vbWVfdXN1YXJpbyddOyA/PicpIiBzdHlsZT0id2lkdGg6IDEwMCU7IGRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nOiA1cHgiPjxpIGNsYXNzPSJmYXMgZmEtaW5maW5pdHkiPjwvaT4gUmVub3ZhcjwvYT48L2xpPg0KCQkJCQkJCQkJCTxsaSBhbGlnbj0iY2VudGVyIj48YSAgY2xhc3M9J2J0biBidG4tb3V0bGluZS1zZWNvbmRhcnknIG9uY2xpY2s9InJlbW92ZXJDb25maXJtYSgnPD89JHVzdWFyaW9bJ2lkX3VzdWFyaW8nXT8+JywgJzw/PSR1c3VhcmlvWydub21lX3VzdWFyaW8nXTsgPz4nKSIgc3R5bGU9IndpZHRoOiAxMDAlOyBkaXNwbGF5OiBibG9jazsgcGFkZGluZzogNXB4Ij48aSBjbGFzcz0iZmFzIGZhLXRyYXNoLWFsdCI+PC9pPiBFeGNsdWlyPC9hPjwvbGk+DQoJCQkJCQkJCQk8L3VsPg0KCQkJCQkJCQk8L2Rpdj4NCgkJCQkJCQk8L3RkPg0KCQkJCQkJPC90cj4NCgkJCQkJPD9waHAgfSA/Pg0KCQkJCQk8P3BocCB9ID8+DQoJCQkJPC90Ym9keT4NCgkJCTwvdGFibGU+DQogICAgICAgIDw/cGhwDQogICAgICAgIH0NCiAgICAgICAgPz4NCgkJICA8P3BocCBpZigkX1NFU1NJT05bJ2FkbWluJ10pIHsgPz4NCiAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoMyBtdC01IHJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciI+DQogICAgICAgICAgICAgPGkgb25jbGljaz0iJCgnI2NhZGFzdHJvJykubW9kYWwoKSIgY2xhc3M9ImJ0biBidG4tb3V0bGluZS1pbmZvIHRleHQtZGFyayBmYXMgZmEtcGx1cyI+PC9pPg0KICAgICAgICAgIDw/cGhwIH0gPz4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICAgPD9waHAgfSA/Pg0KICAgIDwvZGl2Pg0KICA8L21haW4+DQo8IS0tIHBhZ2UtY29udGVudCIgLS0+DQo8L2Rpdj4NCjw/cGhwIGlmKCRfU0VTU0lPTlsnYWRtaW4nXSkgeyA/Pg0KPCEtLSBDYWRhc3RybyBJbmljaW8gLS0+DQo8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iY2FkYXN0cm8iIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9IkNhZGFzdHJhciIgYXJpYS1oaWRkZW49InRydWUiPg0KICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4NCiAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4NCiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+DQogICAgICAgIDxoNSBjbGFzcz0ibW9kYWwtdGl0bGUiIGlkPSJUaXR1bG9Nb2RhbExvbmdvRXhlbXBsbyI+QWRpY2lvbmFyIFZlbmRlZG9yPC9oNT4NCiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iRmVjaGFyIj4NCiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj4NCiAgICAgICAgPC9idXR0b24+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPg0KICAgICAgICA8Zm9ybSBpZD0iY2FkYXN0cm8tZm9ybSI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPg0KICAgICAgICAgICAgICAgICAgICA8bGFiZWw+Tm9tZTo8L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0ibm9tZSIgcGxhY2Vob2xkZXI9Ik5vbWUiIHZhbHVlPSI8P3BocCAkZ2VyYWRvciA9IHJhbmQoOCw4KTsgJHZhbG9yID0gc3Vic3RyKHN0cl9zaHVmZmxlKCJhYmNkZWZnaGlqbGttbm9wcXJzdHV2eHl6d0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIiksIDAsICRnZXJhZG9yKTsgZWNobyAkdmFsb3I7ID8+Ij4NCiAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJmb3JtLXRleHQgdGV4dC1tdXRlZCI+RGVpeGEgZ2VyYXIgdW0gbm9tZSBhdXRvbcOhdGljbyBzZSBuw6NvIHF1aXNlciBjb2xvY2FyPC9zbWFsbD4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4NCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkxvZ2luOjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJsb2dpbiIgcGxhY2Vob2xkZXI9IkxvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyByYW5kKDEsOTk5OTk5KTs/PiI+DQogICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0iZm9ybS10ZXh0IHRleHQtbXV0ZWQiPkRlaXhhIGdlcmFyIHVtIGxvZ2luIGF1dG9tw6F0aWNvIHNlIG7Do28gcXVpc2VyIGNvbG9jYXI8L3NtYWxsPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InNDIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGl2U2VuaGFDIiBjbGFzcz0iZm9ybS1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5TZW5oYTo8L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0ic2VuaGEiIHBsYWNlaG9sZGVyPSJTZW5oYSIgdmFsdWU9Ijw/cGhwIGVjaG8gcmFuZCgxLDk5OTk5OSk7Pz4iPg0KICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9ImZvcm0tdGV4dCB0ZXh0LW11dGVkIj5EZWl4YSBnZXJhciB1bWEgc2VuaGEgYXV0b23DoXRpY28gc2UgbsOjbyBxdWlzZXIgY29sb2Nhcjwvc21hbGw+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCIgaWQ9IkNyZWRpdG9DIiBzdHlsZT0iZGlzcGxheTogPD9waHAgZWNobyAkX1NFU1NJT05bJ3ZlbmRlZG9yJ10gPT0gJzAnID8gJ2Jsb2NrJyA6ICdub25lJzsgPz4iPg0KICAgICAgICAgICAgICAgICAgICA8bGFiZWw+TcOheGltbyBkZSBDcsOpZGl0b3M6PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0iY3JlZGl0byIgdmFsdWU9IiI+DQogICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiIGhpZGRlbj4NCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9ImNvbmVjdGFkbyIgdmFsdWU9IjAiPg0KICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIiBoaWRkZW4+DQogICAgICAgICAgICAgICAgICAgIDxsYWJlbD48L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJkaWEiIHZhbHVlPSIwIj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiIGhpZGRlbj4NCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJudW1iZXIiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIG5hbWU9ImRhdGEiIHZhbHVlPSIiPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPg0KICAgICAgICAgICAgICAgICAgICA8bGFiZWw+TsOtdmVsOjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1sLTAgcm93Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9Im5pdmVsQyIgY2xhc3M9InNlbGVjdHBpY2tlciIgdGl0bGU9Ik7DrXZlbCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYoJF9TRVNTSU9OWydhZG1pbiddKSB7ID8+DQoJCQkJCQkgICAgPG9wdGlvbiB2YWx1ZT0iYWRtaW4iIGhpZGRlbj48L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJ2ZW5kZWRvciI+VmVuZGVkb3I8L29wdGlvbj4NCgkJCQkJCQk8b3B0aW9uIHZhbHVlPSJjbGllbnRlIiBoaWRkZW4+PC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgfSA/Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiIHN0eWxlPSJkaXNwbGF5OiBub25lIj4NCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkFkbWluaXN0cmFkb3I6PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWwtMCByb3ciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCB2YWx1ZT0iMCIgaWQ9ImFkbWluQyIgY2xhc3M9InNlbGVjdHBpY2tlciIgdGl0bGU9IkFkbWluaXN0cmFkb3IiIG5hbWU9ImFkbWluIiByZXF1aXJlZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIj5TaW08L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwIj5Ow6NvPC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPg0KICAgICAgICAgICAgICAgICAgICA8bGFiZWw+VmVuZGVkb3I6PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWwtMCByb3ciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCB2YWx1ZT0iMCIgaWQ9InZlbmRlZG9yQyIgY2xhc3M9InNlbGVjdHBpY2tlciIgdGl0bGU9IlZlbmRlZG9yIiBuYW1lPSJ2ZW5kZWRvciIgcmVxdWlyZWQ+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMSI+U2ltPC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCI+TsOjbzwvb3B0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPg0KICAgICAgICAgICAgICAgICAgICA8bGFiZWw+TGlzdGFzOjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1sLTAgcm93Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT0ibGlzdGFbXSIgY2xhc3M9InNlbGVjdHBpY2tlciIgdGl0bGU9Ikxpc3RhcyIgbXVsdGlwbGU+DQogICAgICAgICAgICAgICAgPD9waHAgaWYgKCRsaXN0YXMpIHsgDQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRsaXN0YXMgYXMgJGxpc3RhKSB7Pz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ijw/PSRsaXN0YVsnaWRfbGlzdGEnXT8+Ij48Pz0kbGlzdGFbJ25vbWVfbGlzdGEnXT8+PC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgIDw/cGhwICB9IA0KICAgICAgICAgICAgICAgICAgICB9ID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJub25lIiBvbmNsaWNrPSJhZGRGb3JjZSgpIiBjbGFzcz0iYnRuIGJ0bi1kYW5nZXIiPkFkaWNpb25hcjwvYnV0dG9uPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZm9ybT4NCiAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICA8L2Rpdj4NCjwvZGl2Pg0KPCEtLSBDYWRhc3RybyBGaW0tLT4NCjw/cGhwIH0gPz4NCg0KDQo8P3BocCBpZigkX1NFU1NJT05bJ2FkbWluJ10pIHsgPz4NCjwhLS0gUmVub3ZhciBJbmljaW8gLS0+DQo8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0icmVub3ZhciIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iQ2FkYXN0cmFyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+DQogIDxkaXYgY2xhc3M9Im1vZGFsLWRpYWxvZyIgcm9sZT0iZG9jdW1lbnQiPg0KICAgIDxkaXYgY2xhc3M9Im1vZGFsLWNvbnRlbnQiPg0KICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4NCiAgICAgICAgPGg1IGNsYXNzPSJtb2RhbC10aXRsZSI+VGVtIGNlcnRlemE/PC9oNT4NCiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1sYWJlbD0iRmVjaGFyIj4NCiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj4NCiAgICAgICAgPC9idXR0b24+DQogICAgICA8L2Rpdj4NCiAgICAgIDxkaXYgaWQ9InJlbm92YXItY29udGV1ZG8iIGNsYXNzPSJtb2RhbC1ib2R5Ij48L2Rpdj4NCiAgICA8L2Rpdj4NCiAgPC9kaXY+DQo8L2Rpdj4NCjwhLS0gUmVub3ZhciBGaW0tLT4NCjw/cGhwIH0gPz4NCg0KDQoNCg0KDQoNCjw/cGhwIGlmKCRfU0VTU0lPTlsnYWRtaW4nXSkgeyA/Pg0KPCEtLSBSZW1vdmUgSW5pY2lvIC0tPg0KPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSIgaWQ9InJlbW92ZXIiIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9IkNhZGFzdHJhciIgYXJpYS1oaWRkZW49InRydWUiPg0KICA8ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij4NCiAgICA8ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij4NCiAgICAgIDxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+DQogICAgICAgIDxoNSBjbGFzcz0ibW9kYWwtdGl0bGUiPlRlbSBjZXJ0ZXphPzwvaDU+DQogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkZlY2hhciI+DQogICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPiZ0aW1lczs8L3NwYW4+DQogICAgICAgIDwvYnV0dG9uPg0KICAgICAgPC9kaXY+DQogICAgICA8ZGl2IGlkPSJyZW1vdmVyLWNvbnRldWRvIiBjbGFzcz0ibW9kYWwtYm9keSI+PC9kaXY+DQogICAgPC9kaXY+DQogIDwvZGl2Pg0KPC9kaXY+DQo8IS0tIFJlbW92ZSBGaW0tLT4NCjw/cGhwIH0gPz4NCjw/cGhwIGlmKCRfU0VTU0lPTlsnYWRtaW4nXSkgeyA/Pg0KPCEtLSBFZGl0YSBJbmljaW8gLS0+DQo8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIiBpZD0iZWRpdGFyIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJDYWRhc3RyYXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj4NCiAgPGRpdiBjbGFzcz0ibW9kYWwtZGlhbG9nIiByb2xlPSJkb2N1bWVudCI+DQogICAgPGRpdiBjbGFzcz0ibW9kYWwtY29udGVudCI+DQogICAgICA8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPg0KICAgICAgICA8aDUgY2xhc3M9Im1vZGFsLXRpdGxlIj5FZGl0YXIgVmVuZGVkb3I8L2g1Pg0KICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWxhYmVsPSJGZWNoYXIiPg0KICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4mdGltZXM7PC9zcGFuPg0KICAgICAgICA8L2J1dHRvbj4NCiAgICAgIDwvZGl2Pg0KICAgICAgPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+DQogICAgICAgIDxmb3JtIGlkPSJlZGl0YXItZm9ybSI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJpZEUiIG5hbWU9ImlkIj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4NCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPk5vbWU6PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJub21lRSIgbmFtZT0ibm9tZSIgcGxhY2Vob2xkZXI9Ik5vbWUiPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPg0KICAgICAgICAgICAgICAgICAgICA8bGFiZWw+TG9naW46PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3JtLWNvbnRyb2wiIGlkPSJsb2dpbkUiIG5hbWU9ImxvZ2luIiBwbGFjZWhvbGRlcj0iTG9naW4iPg0KICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9ImZvcm0tdGV4dCB0ZXh0LW11dGVkIj7Dmm5pY28gcGFyYSBjYWRhIHVzdcOhcmlvITwvc21hbGw+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBpZD0icyI+DQogICAgICAgICAgICAgICAgPGRpdiBpZD0iZGl2U2VuaGEiIGNsYXNzPSJmb3JtLWdyb3VwIj4NCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlNlbmhhOjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJwYXNzd29yZCIgY2xhc3M9ImZvcm0tY29udHJvbCIgaWQ9InNlbmhhRSIgbmFtZT0ic2VuaGEiIHBsYWNlaG9sZGVyPSJTZW5oYSI+DQogICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0iZm9ybS10ZXh0IHRleHQtbXV0ZWQiPkRlaXhhIGVtIGJyYW5jbyBzZSBuw6NvIHF1ZXIgdHJvY2FyITwvc21hbGw+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPg0KICAgICAgICAgICAgICAgICAgICA8bGFiZWw+TcOheGltbyBkZSBDcsOpZGl0b3M6PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0iY3JlZGl0byIgdmFsdWU9IjEiPg0KICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIiBoaWRkZW4+DQogICAgICAgICAgICAgICAgICAgIDxsYWJlbD48L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJjb25lY3RhZG8iIHZhbHVlPSIwIj4NCiAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCIgaGlkZGVuPg0KICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgY2xhc3M9ImZvcm0tY29udHJvbCIgbmFtZT0iZGlhIiB2YWx1ZT0iMCI+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIiBoaWRkZW4+DQogICAgICAgICAgICAgICAgICAgIDxsYWJlbD48L2xhYmVsPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0ibnVtYmVyIiBjbGFzcz0iZm9ybS1jb250cm9sIiBuYW1lPSJkYXRhIiB2YWx1ZT0iIj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPg0KICAgICAgICAgICAgICAgICAgICA8bGFiZWw+RXN0YWRvOjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1sLTAgcm93Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImVzdGFkb0UiIGNsYXNzPSJzZWxlY3RwaWNrZXIiIHRpdGxlPSJFc3RhZG8iIG5hbWU9ImVzdGFkbyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMSI+QXRpdm88L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwIj5EZXNhdGl2YWRvPC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5Ow612ZWw6PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWwtMCByb3ciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0ibml2ZWxFIiBjbGFzcz0ic2VsZWN0cGlja2VyIiB0aXRsZT0iTsOtdmVsIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBpZigkX1NFU1NJT05bJ2FkbWluJ10pIHsgPz4NCgkJCQkJCSAgICA8b3B0aW9uIHZhbHVlPSJhZG1pbiIgaGlkZGVuPkFkbWluaXN0cmFkb3I8L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJ2ZW5kZWRvciI+VmVuZGVkb3I8L29wdGlvbj4NCgkJCQkJCQk8b3B0aW9uIHZhbHVlPSJjbGllbnRlIiBoaWRkZW4+Q2xpZW50ZTwvb3B0aW9uPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIH0gPz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIiBzdHlsZT0iZGlzcGxheTogbm9uZSI+DQogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5BZG1pbmlzdHJhZG9yOjwvbGFiZWw+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1sLTAgcm93Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImFkbWluRSIgY2xhc3M9InNlbGVjdHBpY2tlciIgdGl0bGU9IkFkbWluaXN0cmFkb3IiIG5hbWU9ImFkbWluIiByZXF1aXJlZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIj5TaW08L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwIj5Ow6NvPC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPg0KICAgICAgICAgICAgICAgICAgICA8bGFiZWw+VmVuZGVkb3I6PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWwtMCByb3ciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0idmVuZGVkb3JFIiBjbGFzcz0ic2VsZWN0cGlja2VyIiB0aXRsZT0iVmVuZGVkb3IiIG5hbWU9InZlbmRlZG9yIiByZXF1aXJlZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIj5TaW08L29wdGlvbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwIj5Ow6NvPC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5MaXN0YXM6PC9sYWJlbD4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWwtMCByb3ciPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPSJsaXN0YSIgY2xhc3M9InNlbGVjdHBpY2tlciIgdGl0bGU9Ikxpc3RhcyIgbXVsdGlwbGU+DQogICAgICAgICAgICAgICAgPD9waHAgaWYgKCRsaXN0YXMpIHsgDQogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRsaXN0YXMgYXMgJGxpc3RhKSB7Pz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ijw/PSRsaXN0YVsnaWRfbGlzdGEnXT8+Ij48Pz0kbGlzdGFbJ25vbWVfbGlzdGEnXT8+PC9vcHRpb24+DQogICAgICAgICAgICAgICAgICAgIDw/cGhwICB9IA0KICAgICAgICAgICAgICAgICAgICB9ID8+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJub25lIiBvbmNsaWNrPSJmb3JjZUVkaXQoKSIgY2xhc3M9ImJ0biBidG4tZGFuZ2VyIj5TYWx2YXI8L2J1dHRvbj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Zvcm0+DQogICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgPC9kaXY+DQo8L2Rpdj4NCjwhLS0gRWRpdGEgRmltLS0+DQo8P3BocCB9ID8+DQo8L2JvZHk+DQo8c2NyaXB0Pg0KDQogICAgdmFyIGNsb25lID0gJCgiI2RpdlNlbmhhIikuY2xvbmUoKTsNCiAgICB2YXIgY2xvbmVDID0gJCgiI2RpdlNlbmhhQyIpLmNsb25lKCk7DQogICAgLy8kKCIjZGl2U2VuaGFDIikucmVtb3ZlKCk7DQoNCiAgICAkKCIjY2FkYXN0cm8iKS5vbignaGlkZGVuLmJzLm1vZGFsJywgZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgaWYgKCQoICIjYWRtaW5DIiApLnZhbCgpICE9IDEpIHsNCiAgICAgICAgICAgIC8vJCgiI3NDIikuZW1wdHkoKTsvL0RPX05PVEhJTkcNCiAgICAgICAgfQ0KICAgIH0pOw0KDQogICAgJCggIiNhZG1pbkMiICkuY2hhbmdlKGZ1bmN0aW9uKCkgew0KICAgICAgICBpZiAoJCggIiNhZG1pbkMiICkudmFsKCkgPT0gMSkgew0KICAgICAgICAgICAgJCgiI3NDIikuYXBwZW5kKGNsb25lQyk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkKCIjc0MiKS5lbXB0eSgpOw0KICAgICAgICB9DQogICAgfSk7DQoNCg0KIGZ1bmN0aW9uIHJlbm92YXJDb25maXJtYShpZCxub21lKSB7DQogICAgICAgICQoJyNyZW5vdmFyLWNvbnRldWRvJykuaHRtbCgnPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyIgcm9sZT0iYWxlcnQiPjxzdHJvbmc+IFJlbm92YXIgQ3LDqWRpdG8gPC9zdHJvbmc+JyArIG5vbWUgKyAnPzwvZGl2PjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1kYW5nZXIgZmxvYXQtcmlnaHQiIHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4IiBkYXRhLWRpc21pc3M9Im1vZGFsIj5GZWNoYXI8L2J1dHRvbj48YnV0dG9uIG9uY2xpY2s9InJlbm92YXIoJyArIGlkICsgJykiIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tc3VjY2VzcyBmbG9hdC1yaWdodCI+UmVub3ZhcjwvYnV0dG9uPicpOw0KICAgICAgICAkKCcjcmVub3ZhcicpLm1vZGFsKCk7DQogICAgfQ0KCWZ1bmN0aW9uIHJlbm92YXIoaWQpew0KICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdjb250cm9sZXMvcmVub3Zhci12ZW5kZWRvci5waHA/aWRfdXN1YXJpbz0nICsgaWQ7DQogICAgfQ0KDQoNCg0KDQogICAgZnVuY3Rpb24gcmVtb3ZlckNvbmZpcm1hKGlkLG5vbWUpIHsNCiAgICAgICAgJCgnI3JlbW92ZXItY29udGV1ZG8nKS5odG1sKCc8ZGl2IGNsYXNzPSJhbGVydCBhbGVydC1kYW5nZXIiIHJvbGU9ImFsZXJ0Ij48c3Ryb25nPiBSZW1vdmVyIFVzdcOhcmlvIDwvc3Ryb25nPicgKyBub21lICsgJz88L2Rpdj48YnV0dG9uIG9uY2xpY2s9InJlbW92ZXIoJyArIGlkICsgJykiIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tZGFuZ2VyIGZsb2F0LXJpZ2h0Ij5SZW1vdmVyPC9idXR0b24+Jyk7DQogICAgICAgICQoJyNyZW1vdmVyJykubW9kYWwoKTsNCiAgICB9DQoNCglmdW5jdGlvbiByZW1vdmVyKGlkKXsNCiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnY29udHJvbGVzL3JlbW92ZXItdXN1YXJpby5waHA/aWRfdXN1YXJpbz0nICsgaWQ7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gZWRpdGFyQ29uZmlybWEoZGlhLCBpZCxub21lLGNvbnRhdG8sbG9naW4sZXN0YWRvLGFkbWluLCB2ZW5kZWRvciwgbGlzdGEpIHsNCglpZihwYXJzZUludChkaWEpID4gMCl7DQoJICAgJCgnI2RpYScpLnZhbChwYXJzZUludChkaWEpKTsNCgl9IGVsc2Ugew0KCSAgICQoJyNkaWEnKS52YWwoJycpOw0KCX0NCiAgICAgICAgJCgnI2lkRScpLnZhbChpZCk7DQogICAgICAgICQoJyNub21lRScpLnZhbChub21lKTsNCiAgICAgICAgJCgnI25pdmVsRScpLnZhbChwYXJzZUludCh2ZW5kZWRvcikgPT0gMSA/ICd2ZW5kZWRvcicgOiAocGFyc2VJbnQoYWRtaW4pID09IDEpID8gJ2FkbWluJyA6ICdjbGllbnRlJyk7DQogICAgICAgIHNldFRpbWVvdXQoKCkgPT4gew0KICAgICAgICAgICAgJCgnI25pdmVsRScpLnZhbChwYXJzZUludCh2ZW5kZWRvcikgPT0gMSA/ICd2ZW5kZWRvcicgOiAocGFyc2VJbnQoYWRtaW4pID09IDEpID8gJ2FkbWluJyA6ICdjbGllbnRlJyk7DQogICAgICAgICAgICAkKCcqW2RhdGEtaWQ9bml2ZWxFXScpLnRleHQocGFyc2VJbnQodmVuZGVkb3IpID09IDEgPyAndmVuZGVkb3InIDogKHBhcnNlSW50KGFkbWluKSA9PSAxKSA/ICdhZG1pbicgOiAnY2xpZW50ZScpOw0KICAgICAgICB9LCA1MDApOw0KICAgICAgICAkKCcjY29udGF0b0UnKS52YWwoY29udGF0byk7DQogICAgICAgICQoJyNsb2dpbkUnKS52YWwobG9naW4pOw0KICAgICAgICAkKCcjZXN0YWRvRScpLnZhbChlc3RhZG8pOw0KICAgICAgICAkKCcjZXN0YWRvRScpLnNlbGVjdHBpY2tlcigncmVuZGVyJyk7DQogICAgICAgICQoJyNhZG1pbkUnKS52YWwoYWRtaW4pOw0KICAgICAgICAkKCcjYWRtaW5FJykuc2VsZWN0cGlja2VyKCdyZW5kZXInKTsNCiAgICAgICAgaWYgKHBhcnNlSW50KGFkbWluKSA9PSAwKSB7DQoJICAgIGNvbnNvbGUubG9nKHBhcnNlSW50KHZlbmRlZG9yKSAhPT0gMSk7DQoJICAgIGlmKHBhcnNlSW50KHZlbmRlZG9yKSAhPT0gMSl7DQoJCSQoJyNleGRpYUUnKS5zaG93KCk7DQoJICAgIH0gZWxzZSB7DQoJCSQoJyNleGRpYUUnKS5oaWRlKCk7DQoJICAgIH0NCiAgICAgICAgICAgIC8vJCgnI2RpdlNlbmhhJykucmVtb3ZlKCk7DQogICAgICAgIH0gZWxzZSBpZiAoJCgnI2RpdlNlbmhhJykubGVuZ3RoIDwgMSkgew0KICAgICAgICAgICAgJCgnI3MnKS5hcHBlbmQoY2xvbmUpOw0KICAgICAgICB9DQogICAgICAgICQoJyNsaXN0YUUnKS52YWwobGlzdGEpOw0KICAgICAgICAkKCcjbGlzdGFFJykuc2VsZWN0cGlja2VyKCdyZW5kZXInKTsNCiAgICAgICAgJCgnI2VkaXRhcicpLm1vZGFsKCk7DQogICAgfQ0KDQogICAgdmFyIGFkZEZvcmNlID0gZnVuY3Rpb24oKXsNCiAgICAgICAgJCggIiNjYWRhc3Ryby1mb3JtIiApLnRyaWdnZXIoJ3N1Ym1pdCcpOw0KICAgIH07DQogICAgdmFyIGFkZGVkID0gZmFsc2U7DQogICAgJCggIiNjYWRhc3Ryby1mb3JtIiApLnN1Ym1pdChmdW5jdGlvbiggZXZlbnQgKSB7DQogICAgICAgIGlmKCFhZGRlZCl7DQogICAgICAgICAgICBhZGRlZCA9IHRydWU7DQogICAgICAgICAgICBpZigkKCcjY2FkYXN0cm8tZm9ybSBzZWxlY3RbbmFtZT0idmVuZGVkb3IiXScpLnZhbCgpLnRyaW0oKSA9PSAiIil7DQogICAgICAgICAgICAgICAgJCgnI2NhZGFzdHJvLWZvcm0gc2VsZWN0W25hbWU9InZlbmRlZG9yIl0nKS52YWwoMCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZigkKCcjY2FkYXN0cm8tZm9ybSBzZWxlY3RbbmFtZT0iYWRtaW4iXScpLnZhbCgpLnRyaW0oKSA9PSAiIil7DQogICAgICAgICAgICAgICAgJCgnI2NhZGFzdHJvLWZvcm0gc2VsZWN0W25hbWU9ImFkbWluIl0nKS52YWwoMCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkLmFqYXgoew0KICAgICAgICAgICAgICAgIHR5cGU6ICJQT1NUIiwNCiAgICAgICAgICAgICAgICB1cmw6ICJjb250cm9sZXMvYWRpY2lvbmFyLXVzdWFyaW8ucGhwIiwNCiAgICAgICAgICAgICAgICBkYXRhOiAkKCIjY2FkYXN0cm8tZm9ybSIpLnNlcmlhbGl6ZSgpLA0KICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGEpIHsNCiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7DQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oZGF0YSkgew0KICAgICAgICAgICAgICAgICAgcmVzdWx0YWRvKGRhdGEucmVzcG9uc2VUZXh0KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOw0KICAgIH0pOw0KICAgIHZhciBlZGRpdGVkID0gZmFsc2U7DQogICAgdmFyIGZvcmNlRWRpdCA9IGZ1bmN0aW9uKCl7DQogICAgICAgICQoICIjZWRpdGFyLWZvcm0iICkudHJpZ2dlcignc3VibWl0Jyk7DQogICAgfQ0KICAgICQoICIjZWRpdGFyLWZvcm0iICkuc3VibWl0KGZ1bmN0aW9uKCBldmVudCApIHsNCiAgICAgICAgaWYoIWVkZGl0ZWQpew0KICAgICAgICAgICAgZWRkaXRlZCA9IHRydWU7DQogICAgICAgICAgICBpZigkKCcjZWRpdGFyLWZvcm0gc2VsZWN0W25hbWU9InZlbmRlZG9yIl0nKS52YWwoKS50cmltKCkgPT0gIiIpew0KICAgICAgICAgICAgICAgICQoJyNlZGl0YXItZm9ybSBzZWxlY3RbbmFtZT0idmVuZGVkb3IiXScpLnZhbCgwKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmKCQoJyNlZGl0YXItZm9ybSBzZWxlY3RbbmFtZT0iYWRtaW4iXScpLnZhbCgpLnRyaW0oKSA9PSAiIil7DQogICAgICAgICAgICAgICAgJCgnI2VkaXRhci1mb3JtIHNlbGVjdFtuYW1lPSJhZG1pbiJdJykudmFsKDApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgICAgICB0eXBlOiAiUE9TVCIsDQogICAgICAgICAgICAgICAgdXJsOiAiY29udHJvbGVzL2VkaXRhci11c3VhcmlvLnBocCIsDQogICAgICAgICAgICAgICAgZGF0YTogJCgiI2VkaXRhci1mb3JtIikuc2VyaWFsaXplKCksDQogICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oZGF0YSkgew0KICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTsNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihkYXRhKSB7DQogICAgICAgICAgICAgICAgICByZXN1bHRhZG8oZGF0YS5yZXNwb25zZVRleHQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQogICAgfSk7DQogICAgPD9waHAgaWYoJF9TRVNTSU9OWydhZG1pbiddKSB7ID8+DQoJICAkKCcjdmVuZGVkb3JDJykudmFsKDApOw0KICAgICAgJCgnI2FkbWluQycpLnZhbCgxKTsNCiAgICA8P3BocCB9ID8+DQoNCiAgICAkKCcjbml2ZWxDJykub24oJ2NoYW5nZScsIGZ1bmN0aW9uKCl7DQogICAgICAgdmFyIHZhbHVlID0gJCh0aGlzKS52YWwoKTsNCiAgICAgICAkKCcjc0MnKS5lbXB0eSgpOw0KICAgICAgIGlmKHZhbHVlID09ICd2ZW5kZWRvcicpew0KICAgICAgICAgICAkKCcjYWRtaW5DJykudmFsKDApOw0KICAgICAgICAgICAkKCcjdmVuZGVkb3JDJykudmFsKDEpOw0KICAgICAgICAgICAkKCIjc0MiKS5hcHBlbmQoY2xvbmVDKTsNCgkgICAkKCcjZXhkaWFDJykuaGlkZSgpOw0KCSAgICQoJyNDb25lY3RhZG9DJykuaGlkZSgpOw0KCSAgICQoJyNDcmVkaXRvQycpLnZhbCgxKTsNCiAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09ICdhZG1pbicpew0KICAgICAgICAgICAkKCcjYWRtaW5DJykudmFsKDEpOw0KICAgICAgICAgICAkKCcjdmVuZGVkb3JDJykudmFsKDApOw0KICAgICAgICAgICAkKCIjc0MiKS5hcHBlbmQoY2xvbmVDKTsNCgkgICAkKCcjZXhkaWFDJykuaGlkZSgpOw0KCSAgICQoJyNDb25lY3RhZG9DJykuaGlkZSgpOw0KCSAgICQoJyNDcmVkaXRvQycpLnZhbCgwKTsNCiAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAkKCcjYWRtaW5DJykudmFsKDApOw0KICAgICAgICAgICAkKCcjdmVuZGVkb3JDJykudmFsKDApOw0KCSAgICQoIiNzQyIpLmFwcGVuZChjbG9uZUMpOwkgICANCgkgICAkKCcjZXhkaWFDJykuc2hvdygpOw0KCSAgICQoJyNDb25lY3RhZG9DJykuc2hvdygpOw0KCSAgICQoJyNDcmVkaXRvQycpLnZhbCgwKTsNCiAgICAgICB9DQogICAgfSk7DQpmdW5jdGlvbiBzZXRDb29raWUobmFtZSx2YWx1ZSxkYXlzKSB7DQogICAgdmFyIGV4cGlyZXMgPSAiIjsNCiAgICBpZiAoZGF5cykgew0KICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7DQogICAgICAgIGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArIChkYXlzKjI0KjYwKjYwKjEwMDApKTsNCiAgICAgICAgZXhwaXJlcyA9ICI7IGV4cGlyZXM9IiArIGRhdGUudG9VVENTdHJpbmcoKTsNCiAgICB9DQogICAgZG9jdW1lbnQuY29va2llID0gbmFtZSArICI9IiArICh2YWx1ZSB8fCAiIikgICsgZXhwaXJlcyArICI7IHBhdGg9LyI7DQp9DQpmdW5jdGlvbiBnZXRDb29raWUobmFtZSkgew0KICAgIHZhciBuYW1lRVEgPSBuYW1lICsgIj0iOw0KICAgIHZhciBjYSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpOw0KICAgIGZvcih2YXIgaT0wO2kgPCBjYS5sZW5ndGg7aSsrKSB7DQogICAgICAgIHZhciBjID0gY2FbaV07DQogICAgICAgIHdoaWxlIChjLmNoYXJBdCgwKT09JyAnKSBjID0gYy5zdWJzdHJpbmcoMSxjLmxlbmd0aCk7DQogICAgICAgIGlmIChjLmluZGV4T2YobmFtZUVRKSA9PSAwKSByZXR1cm4gYy5zdWJzdHJpbmcobmFtZUVRLmxlbmd0aCxjLmxlbmd0aCk7DQogICAgfQ0KICAgIHJldHVybiBudWxsOw0KfQ0KZnVuY3Rpb24gZXJhc2VDb29raWUobmFtZSkgeyAgIA0KICAgIGRvY3VtZW50LmNvb2tpZSA9IG5hbWUrJz07IE1heC1BZ2U9LTk5OTk5OTk5Oyc7ICANCn0NCiAgICBmdW5jdGlvbiBsb2dhcihpZCl7DQoJaWYoIWdldENvb2tpZSgnb3JpZ2luYWwnKSl7DQoJICAgc2V0Q29va2llKCdvcmlnaW5hbCcsIDw/cGhwIGVjaG8gJF9TRVNTSU9OWydpZF91c3VhcmlvJ10gPz4sIDEpOwkNCgl9DQoJJC5nZXQoJ2NvbnRyb2xlcy9mb3JjYXItbG9naW4ucGhwP2lkX3VzdWFyaW89JyArIGlkLCBmdW5jdGlvbigpew0KCSAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsNCiAgICAgICAgfSk7DQogICAgfQ0KICAgIGZ1bmN0aW9uIHZlckxvZ3MoaWQpew0KICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdsb2cucGhwP2lkX3VzdWFyaW89JyArIGlkOw0KICAgIH0NCiAgICAkKCcjbml2ZWxFJykub24oJ2NoYW5nZScsIGZ1bmN0aW9uKCl7DQogICAgICAgdmFyIHZhbHVlID0gJCh0aGlzKS52YWwoKTsNCiAgICAgICBpZih2YWx1ZSA9PSAndmVuZGVkb3InKXsNCiAgICAgICAgICAgJCgnI2FkbWluRScpLnZhbCgwKTsNCiAgICAgICAgICAgJCgnI3ZlbmRlZG9yRScpLnZhbCgxKTsNCiAgICAgICAgICAgJCgiI3MiKS5hcHBlbmQoY2xvbmUpOw0KCSAgICQoJyNleGRpYUUnKS5oaWRlKCk7DQogICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PSAnYWRtaW4nKSB7DQogICAgICAgICAgICQoJyNhZG1pbkUnKS52YWwoMSk7DQogICAgICAgICAgICQoJyN2ZW5kZWRvckUnKS52YWwoMCk7IA0KICAgICAgICAgICAkKCIjcyIpLmFwcGVuZChjbG9uZSk7DQoJICAgJCgnI2V4ZGlhRScpLmhpZGUoKTsNCiAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAkKCcjYWRtaW5FJykudmFsKDApOw0KICAgICAgICAgICAkKCcjdmVuZGVkb3JFJykudmFsKDApOw0KICAgICAgICAgICAkKCIjcyIpLmFwcGVuZChjbG9uZSk7DQoJICAgJCgnI2V4ZGlhRScpLnNob3coKTsNCiAgICAgICB9DQogICAgfSk7DQogICAgaWYod2luZG93Lm1vYmlsZWNoZWNrKCkpew0KCSQoJyNjaGVja21lJykucmVtb3ZlKCk7DQogICAgfQ0KICAgICQoJy50aGVhZC1saWdodCB0aDpub3QoIi5ub21lY29sIiknKS5yZW1vdmUoKTsNCgkNCjwvc2NyaXB0Pg0KPD9waHAgcmVxdWlyZV9vbmNlKCJjb211bS5waHAiKTsgDQpyZXF1aXJlX29uY2UoImFsZXJ0YS5waHAiKTs/Pg0KDQo8L2h0bWw+DQo8P3BocCANCn0gZWxzZSB7DQogICAgaGVhZGVyKCJMb2NhdGlvbjogaW5kZXgucGhwIik7DQogICAgZGllKCk7DQp9DQo/Pg=="));//Generated by Ampare PHP Encoder. For more security please use php protect before encode the php program

Function Calls

base64_decode 1

Variables

None

Stats

MD5 9337124afe0ee78e4cb10853c4974697
Eval Count 1
Decode Time 68 ms