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("PD9waHAKICAgIC8vIEluaWNpYSBhIHNlc3PDo28KICAgIHNlc3Npb25fc3..
Decoded Output download
?>b'<?php
// Inicia a sesso
session_start();
error_reporting(0);
// Verifica se \'email\' est definido na sesso
if (!isset($_SESSION[\'email\'])) {
header(\'Location: /login\');
die();
}
$email = $_SESSION[\'email\'];
?>
<?php
// Iniciar ou resumir a sesso
session_start();
// Obtm o valor aps o \'=\' na URL
$externalReference = isset($_GET[\'externalReference\']) ? $_GET[\'externalReference\'] : \'\';
$valor = isset($_GET[\'value\']) ? $_GET[\'value\'] : \'\'; // Adiciona esta linha para obter o valor da URL
// Armazena o externalReference e valor na sesso
$_SESSION[\'externalReference\'] = $externalReference;
$_SESSION[\'valor\'] = $valor; // Adiciona esta linha para armazenar o valor na sesso
// Obtm o email da sesso
$email = isset($_SESSION[\'email\']) ? $_SESSION[\'email\'] : \'\';
// Define o status como pendente
$status = \'pendente\';
// Se o externalReference, email e valor estiverem presentes, realiza a verificao e insero no banco de dados
if (!empty($externalReference) && !empty($email) && !empty($valor)) {
try {
include \'./../conectarbanco.php\';
$conn = new mysqli(\'localhost\', $config[\'db_user\'], $config[\'db_pass\'], $config[\'db_name\']);
$dbuser = $config[\'db_user\'];
$conn = new PDO("mysql:host=localhost;dbname={$config[\'db_name\']}", $config[\'db_user\'], $config[\'db_pass\']);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Verifica se j existe um registro com o mesmo email e externalReference
$stmt_check = $conn->prepare("SELECT COUNT(*) FROM confirmar_deposito WHERE email = :email AND externalreference = :externalReference");
$stmt_check->bindParam(\':email\', $email);
$stmt_check->bindParam(\':externalReference\', $externalReference);
$stmt_check->execute();
$count = $stmt_check->fetchColumn();
if ($count == 0) {
// No h registro existente, pode realizar a insero
$stmt_insert = $conn->prepare("INSERT INTO confirmar_deposito (email, externalreference, status, valor) VALUES (:email, :externalReference, :status, :valor)");
$stmt_insert->bindParam(\':email\', $email);
$stmt_insert->bindParam(\':externalReference\', $externalReference);
$stmt_insert->bindParam(\':status\', $status);
$stmt_insert->bindParam(\':valor\', $valor); // Adiciona esta linha para inserir o valor no banco de dados
$stmt_insert->execute();
} else {
// Se houver um registro existente, voc pode decidir o que fazer aqui
// Por exemplo, atualizar o valor no registro existente se necessrio
}
} catch (PDOException $e) {
// Trate a exceo, se necessrio
echo "Erro: " . $e->getMessage();
}
} else {
// Se algum dos parmetros estiver faltando, voc pode decidir o que fazer aqui
}
// Redireciona para outra pgina
// header(\'Location: ../fhsufhuiaehgu849efiosjfoi20oteolhymldz920/consultarpagamento.php\');
// exit();
?>
<!DOCTYPE html>
<html lang="pt-br" class="w-mod-js wf-spacemono-n4-active wf-spacemono-n7-active wf-active w-mod-ix">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style>.wf-force-outline-none[tabindex="-1"]:focus {
outline: none;
}</style>
<style type="text/css">.swal-icon--error {
border-color: #f27474;
-webkit-animation: animateErrorIcon .5s;
animation: animateErrorIcon .5s
}
.swal-icon--error__x-mark {
position: relative;
display: block;
-webkit-animation: animateXMark .5s;
animation: animateXMark .5s
}
.swal-icon--error__line {
position: absolute;
height: 5px;
width: 47px;
background-color: #f27474;
display: block;
top: 37px;
border-radius: 2px
}
.swal-icon--error__line--left {
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
left: 17px
}
.swal-icon--error__line--right {
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
right: 16px
}
@-webkit-keyframes animateErrorIcon {
0% {
-webkit-transform: rotateX(100deg);
transform: rotateX(100deg);
opacity: 0
}
to {
-webkit-transform: rotateX(0deg);
transform: rotateX(0deg);
opacity: 1
}
}
@keyframes animateErrorIcon {
0% {
-webkit-transform: rotateX(100deg);
transform: rotateX(100deg);
opacity: 0
}
to {
-webkit-transform: rotateX(0deg);
transform: rotateX(0deg);
opacity: 1
}
}
@-webkit-keyframes animateXMark {
0% {
-webkit-transform: scale(.4);
transform: scale(.4);
margin-top: 26px;
opacity: 0
}
50% {
-webkit-transform: scale(.4);
transform: scale(.4);
margin-top: 26px;
opacity: 0
}
80% {
-webkit-transform: scale(1.15);
transform: scale(1.15);
margin-top: -6px
}
to {
-webkit-transform: scale(1);
transform: scale(1);
margin-top: 0;
opacity: 1
}
}
@keyframes animateXMark {
0% {
-webkit-transform: scale(.4);
transform: scale(.4);
margin-top: 26px;
opacity: 0
}
50% {
-webkit-transform: scale(.4);
transform: scale(.4);
margin-top: 26px;
opacity: 0
}
80% {
-webkit-transform: scale(1.15);
transform: scale(1.15);
margin-top: -6px
}
to {
-webkit-transform: scale(1);
transform: scale(1);
margin-top: 0;
opacity: 1
}
}
.swal-icon--warning {
border-color: #f8bb86;
-webkit-animation: pulseWarning .75s infinite alternate;
animation: pulseWarning .75s infinite alternate
}
.swal-icon--warning__body {
width: 5px;
height: 47px;
top: 10px;
border-radius: 2px;
margin-left: -2px
}
.swal-icon--warning__body, .swal-icon--warning__dot {
position: absolute;
left: 50%;
background-color: #f8bb86
}
.swal-icon--warning__dot {
width: 7px;
height: 7px;
border-radius: 50%;
margin-left: -4px;
bottom: -11px
}
@-webkit-keyframes pulseWarning {
0% {
border-color: #f8d486
}
to {
border-color: #f8bb86
}
}
@keyframes pulseWarning {
0% {
border-color: #f8d486
}
to {
border-color: #f8bb86
}
}
.swal-icon--success {
border-color: #a5dc86
}
.swal-icon--success:after, .swal-icon--success:before {
content: "";
border-radius: 50%;
position: absolute;
width: 60px;
height: 120px;
background: #fff;
-webkit-transform: rotate(45deg);
transform: rotate(45deg)
}
.swal-icon--success:before {
border-radius: 120px 0 0 120px;
top: -7px;
left: -33px;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
-webkit-transform-origin: 60px 60px;
transform-origin: 60px 60px
}
.swal-icon--success:after {
border-radius: 0 120px 120px 0;
top: -11px;
left: 30px;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
-webkit-transform-origin: 0 60px;
transform-origin: 0 60px;
-webkit-animation: rotatePlaceholder 4.25s ease-in;
animation: rotatePlaceholder 4.25s ease-in
}
.swal-icon--success__ring {
width: 80px;
height: 80px;
border: 4px solid hsla(98, 55%, 69%, .2);
border-radius: 50%;
box-sizing: content-box;
position: absolute;
left: -4px;
top: -4px;
z-index: 2
}
.swal-icon--success__hide-corners {
width: 5px;
height: 90px;
background-color: #fff;
padding: 1px;
position: absolute;
left: 28px;
top: 8px;
z-index: 1;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg)
}
.swal-icon--success__line {
height: 5px;
background-color: #a5dc86;
display: block;
border-radius: 2px;
position: absolute;
z-index: 2
}
.swal-icon--success__line--tip {
width: 25px;
left: 14px;
top: 46px;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
-webkit-animation: animateSuccessTip .75s;
animation: animateSuccessTip .75s
}
.swal-icon--success__line--long {
width: 47px;
right: 8px;
top: 38px;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
-webkit-animation: animateSuccessLong .75s;
animation: animateSuccessLong .75s
}
@-webkit-keyframes rotatePlaceholder {
0% {
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg)
}
5% {
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg)
}
12% {
-webkit-transform: rotate(-405deg);
transform: rotate(-405deg)
}
to {
-webkit-transform: rotate(-405deg);
transform: rotate(-405deg)
}
}
@keyframes rotatePlaceholder {
0% {
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg)
}
5% {
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg)
}
12% {
-webkit-transform: rotate(-405deg);
transform: rotate(-405deg)
}
to {
-webkit-transform: rotate(-405deg);
transform: rotate(-405deg)
}
}
@-webkit-keyframes animateSuccessTip {
0% {
width: 0;
left: 1px;
top: 19px
}
54% {
width: 0;
left: 1px;
top: 19px
}
70% {
width: 50px;
left: -8px;
top: 37px
}
84% {
width: 17px;
left: 21px;
top: 48px
}
to {
width: 25px;
left: 14px;
top: 45px
}
}
@keyframes animateSuccessTip {
0% {
width: 0;
left: 1px;
top: 19px
}
54% {
width: 0;
left: 1px;
top: 19px
}
70% {
width: 50px;
left: -8px;
top: 37px
}
84% {
width: 17px;
left: 21px;
top: 48px
}
to {
width: 25px;
left: 14px;
top: 45px
}
}
@-webkit-keyframes animateSuccessLong {
0% {
width: 0;
right: 46px;
top: 54px
}
65% {
width: 0;
right: 46px;
top: 54px
}
84% {
width: 55px;
right: 0;
top: 35px
}
to {
width: 47px;
right: 8px;
top: 38px
}
}
@keyframes animateSuccessLong {
0% {
width: 0;
right: 46px;
top: 54px
}
65% {
width: 0;
right: 46px;
top: 54px
}
84% {
width: 55px;
right: 0;
top: 35px
}
to {
width: 47px;
right: 8px;
top: 38px
}
}
.swal-icon--info {
border-color: #c9dae1
}
.swal-icon--info:before {
width: 5px;
height: 29px;
bottom: 17px;
border-radius: 2px;
margin-left: -2px
}
.swal-icon--info:after, .swal-icon--info:before {
content: "";
position: absolute;
left: 50%;
background-color: #c9dae1
}
.swal-icon--info:after {
width: 7px;
height: 7px;
border-radius: 50%;
margin-left: -3px;
top: 19px
}
.swal-icon {
width: 80px;
height: 80px;
border-width: 4px;
border-style: solid;
border-radius: 50%;
padding: 0;
position: relative;
box-sizing: content-box;
margin: 20px auto
}
.swal-icon:first-child {
margin-top: 32px
}
.swal-icon--custom {
width: auto;
height: auto;
max-width: 100%;
border: none;
border-radius: 0
}
.swal-icon img {
max-width: 100%;
max-height: 100%
}
.swal-title {
color: rgba(0, 0, 0, .65);
font-weight: 600;
text-transform: none;
position: relative;
display: block;
padding: 13px 16px;
font-size: 27px;
line-height: normal;
text-align: center;
margin-bottom: 0
}
.swal-title:first-child {
margin-top: 26px
}
.swal-title:not(:first-child) {
padding-bottom: 0
}
.swal-title:not(:last-child) {
margin-bottom: 13px
}
.swal-text {
font-size: 16px;
position: relative;
float: none;
line-height: normal;
vertical-align: top;
text-align: left;
display: inline-block;
margin: 0;
padding: 0 10px;
font-weight: 400;
color: rgba(0, 0, 0, .64);
max-width: calc(100% - 20px);
overflow-wrap: break-word;
box-sizing: border-box
}
.swal-text:first-child {
margin-top: 45px
}
.swal-text:last-child {
margin-bottom: 45px
}
.swal-footer {
text-align: right;
padding-top: 13px;
margin-top: 13px;
padding: 13px 16px;
border-radius: inherit;
border-top-left-radius: 0;
border-top-right-radius: 0
}
.swal-button-container {
margin: 5px;
display: inline-block;
position: relative
}
.swal-button {
background-color: #7cd1f9;
color: #fff;
border: none;
box-shadow: none;
border-radius: 5px;
font-weight: 600;
font-size: 14px;
padding: 10px 24px;
margin: 0;
cursor: pointer
}
.swal-button:not([disabled]):hover {
background-color: #78cbf2
}
.swal-button:active {
background-color: #70bce0
}
.swal-button:focus {
outline: none;
box-shadow: 0 0 0 1px #fff, 0 0 0 3px rgba(43, 114, 165, .29)
}
.swal-button[disabled] {
opacity: .5;
cursor: default
}
.swal-button::-moz-focus-inner {
border: 0
}
.swal-button--cancel {
color: #555;
background-color: #efefef
}
.swal-button--cancel:not([disabled]):hover {
background-color: #e8e8e8
}
.swal-button--cancel:active {
background-color: #d7d7d7
}
.swal-button--cancel:focus {
box-shadow: 0 0 0 1px #fff, 0 0 0 3px rgba(116, 136, 150, .29)
}
.swal-button--danger {
background-color: #e64942
}
.swal-button--danger:not([disabled]):hover {
background-color: #df4740
}
.swal-button--danger:active {
background-color: #cf423b
}
.swal-button--danger:focus {
box-shadow: 0 0 0 1px #fff, 0 0 0 3px rgba(165, 43, 43, .29)
}
.swal-content {
padding: 0 20px;
margin-top: 20px;
font-size: medium
}
.swal-content:last-child {
margin-bottom: 20px
}
.swal-content__input, .swal-content__textarea {
-webkit-appearance: none;
background-color: #fff;
border: none;
font-size: 14px;
display: block;
box-sizing: border-box;
width: 100%;
border: 1px solid rgba(0, 0, 0, .14);
padding: 10px 13px;
border-radius: 2px;
transition: border-color .2s
}
.swal-content__input:focus, .swal-content__textarea:focus {
outline: none;
border-color: #6db8ff
}
.swal-content__textarea {
resize: vertical
}
.swal-button--loading {
color: transparent
}
.swal-button--loading ~ .swal-button__loader {
opacity: 1
}
.swal-button__loader {
position: absolute;
height: auto;
width: 43px;
z-index: 2;
left: 50%;
top: 50%;
-webkit-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
text-align: center;
pointer-events: none;
opacity: 0
}
.swal-button__loader div {
display: inline-block;
float: none;
vertical-align: baseline;
width: 9px;
height: 9px;
padding: 0;
border: none;
margin: 2px;
opacity: .4;
border-radius: 7px;
background-color: hsla(0, 0%, 100%, .9);
transition: background .2s;
-webkit-animation: swal-loading-anim 1s infinite;
animation: swal-loading-anim 1s infinite
}
.swal-button__loader div:nth-child(3n+2) {
-webkit-animation-delay: .15s;
animation-delay: .15s
}
.swal-button__loader div:nth-child(3n+3) {
-webkit-animation-delay: .3s;
animation-delay: .3s
}
@-webkit-keyframes swal-loading-anim {
0% {
opacity: .4
}
20% {
opacity: .4
}
50% {
opacity: 1
}
to {
opacity: .4
}
}
@keyframes swal-loading-anim {
0% {
opacity: .4
}
20% {
opacity: .4
}
50% {
opacity: 1
}
to {
opacity: .4
}
}
.swal-overlay {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
text-align: center;
font-size: 0;
overflow-y: auto;
background-color: rgba(0, 0, 0, .4);
z-index: 10000;
pointer-events: none;
opacity: 0;
transition: opacity .3s
}
.swal-overlay:before {
content: " ";
display: inline-block;
vertical-align: middle;
height: 100%
}
.swal-overlay--show-modal {
opacity: 1;
pointer-events: auto
}
.swal-overlay--show-modal .swal-modal {
opacity: 1;
pointer-events: auto;
box-sizing: border-box;
-webkit-animation: showSweetAlert .3s;
animation: showSweetAlert .3s;
will-change: transform
}
.swal-modal {
width: 478px;
opacity: 0;
pointer-events: none;
background-color: #fff;
text-align: center;
border-radius: 5px;
position: static;
margin: 20px auto;
display: inline-block;
vertical-align: middle;
-webkit-transform: scale(1);
transform: scale(1);
-webkit-transform-origin: 50% 50%;
transform-origin: 50% 50%;
z-index: 10001;
transition: opacity .2s, -webkit-transform .3s;
transition: transform .3s, opacity .2s;
transition: transform .3s, opacity .2s, -webkit-transform .3s
}
@media (max-width: 500px) {
.swal-modal {
width: calc(100% - 20px)
}
}
@-webkit-keyframes showSweetAlert {
0% {
-webkit-transform: scale(1);
transform: scale(1)
}
1% {
-webkit-transform: scale(.5);
transform: scale(.5)
}
45% {
-webkit-transform: scale(1.05);
transform: scale(1.05)
}
80% {
-webkit-transform: scale(.95);
transform: scale(.95)
}
to {
-webkit-transform: scale(1);
transform: scale(1)
}
}
@keyframes showSweetAlert {
0% {
-webkit-transform: scale(1);
transform: scale(1)
}
1% {
-webkit-transform: scale(.5);
transform: scale(.5)
}
45% {
-webkit-transform: scale(1.05);
transform: scale(1.05)
}
80% {
-webkit-transform: scale(.95);
transform: scale(.95)
}
to {
-webkit-transform: scale(1);
transform: scale(1)
}
}</style>
<meta charset="pt-br">
<title>SubwayPay </title>
<meta name="twitter:image" content="../img/logo.png">
<meta content="summary_large_image" name="twitter:card">
<script src="https://cdn.rawgit.com/davidshimjs/qrcodejs/gh-pages/qrcode.min.js"></script>
<meta content="width=device-width, initial-scale=1" name="viewport">
<link href="./arquivos/page.css" rel="stylesheet" type="text/css">
<link href="./arquivos/alert.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
WebFont.load({
google: {
families: ["Space Mono:regular,700"]
}
});
</script>
<script type="text/javascript">
!function (o, c) {
var n = c.documentElement,
t = " w-mod-";
n.className += t + "js", ("ontouchstart" in o || o.DocumentTouch && c instanceof DocumentTouch) && (n
.className += t + "touch")
}(window, document);
</script>
<link rel="apple-touch-icon" sizes="180x180" href="../img/logo.png">
<link rel="icon" type="image/png" sizes="32x32" href="./img/logo.png">
<link rel="icon" type="image/png" sizes="16x16" href="./img/logo.png">
<script src="https://cdn.rawgit.com/davidshimjs/qrcodejs/gh-pages/qrcode.min.js"></script>
<style>
h1 {
color: #333;
}
label {
display: block;
margin-bottom: 5px;
}
input[type="text"] {
margin-top: 10px;
border-radius: 6px;
width: 100%;
padding: 10px;
margin-bottom: 10px;
}
.divqr {
align-items: center;
padding: 20px;
background-color: #ffffff;
}
.container3 {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
#qrcode {
padding: 10px;
border: 5px solid #1fbffe;
border-radius: 10px;
}
#qr-code-text {
margin-top: 20px;
margin-bottom: 20px;
border-radius: 6px;
background-color: #e4e2e2;
border: 2px solid #1fbffe;
padding: 10px;
word-break: break-all;
}
#copy-button {
background-color: #1fbffe;
border-radius: 6px;
color: #fff;
padding: 10px 80px;
border: none;
cursor: pointer;
margin-top: 10px;
animation: pulse 2s infinite;
margin: 0 auto;
}
.redirectButton{
background-color: #5a9759;
border-radius: 6px;
color: #fff;
padding: 10px 120px;
border: none;
cursor: pointer;
margin-top: 15px;
}
.efeito-banner-topo {
position: absolute;
left: 0;
top: 0;
right: 0;
z-index: -2;
display: block;
width: 100%;
height: 83%;
max-height: 680px;
opacity: 1;
}
.efeito-banner-topo img {
position: absolute;
left: 0;
bottom: 0;
right: 0;
width: 120%;
height: 120%;
margin-top: -5%;
background-position: 0 0, 50% 50%;
background-size: auto, cover;
background-repeat: repeat, no-repeat;
opacity: 1;
-webkit-filter: blur(24px);
filter: blur(24px);
}
.img-banner-topo {
border-radius: 0 0 10px 10px;
/*margin: 0 auto;*/
/*margin-right: auto;*/
/*width: 100%;*/
/*max-height: 500px;*/
max-width: 1138px;
max-height: 487px;
}
/*.orderbump-percent span.stats {*/
/* position: relative !important;*/
/* margin: 0 10px;*/
/*}*/
/*.orderbump-percent span.stats::before {*/
/* !*display: block !important;*!*/
/* position: absolute !important;*/
/* background-color: #50b232 !important;*/
/* display: inline-flex;*/
/* content: " ";*/
/* width: 124%;*/
/* height: 135%;*/
/* right: -2%;*/
/* top: -20%;*/
/*}*/
.card {
background: #fff;
border: 1px solid #eee;
border-radius: 10px;
margin-top: 24px;
box-shadow: 4px 2px 7px rgb(0 0 0 / 5%);
/*padding: 15px 12px;*/
position: relative;
}
.icon-detalhes {
display: flex;
color: #626262;
}
.icon-detalhes .icon-detalhes-icon {
font-size: 1.5em;
margin-right: 16px;
display: grid;
align-content: center;
}
.icon-detalhes .icon-detalhes-text h5 {
font-size: 12px;
}
.rounded {
border-radius: 10px !important;
}
.marginless {
margin: 0 !important;
}
.paddingless {
padding: 0 !important;
}
@media all and (max-width: 768px) {
.img-banner-topo {
max-width: 100%;
}
.efeito-banner-topo {
display: none
}
}
.video-player--iframe {
border-radius: 10px
}
.order-bump {
border: 2px dashed red;
border-radius: 3px;
margin: auto;
}
.order-bump-check {
background: #F5F5F5;
border: 1px solid #8898AA;
box-shadow: 2px 3px 0 rgba(126, 126, 126, 0.7);
border-radius: 3px;
}
.order-bump-text {
font-size: 90%;
}
.card {
background: #fff;
border: 1px solid #eee;
border-radius: 10px;
margin-top: 24px;
box-shadow: 4px 2px 7px rgb(0 0 0 / 5%);
/*padding: 15px 12px;*/
position: relative;
}
.card-header {
position: absolute;
top: -18px;
left: 10px;
z-index: 10;
padding: 0;
margin: 0;
text-transform: uppercase;
background-color: transparent !important;
border-bottom: 0 !important;
}
.card-header br {
display: none;
}
.card-header small {
display: none;
}
.card-header span.number {
display: block !important;
top: -4px;
left: 0;
color: #fff;
background: #b8b8b8;
padding: 3px 14px;
border-radius: 307px;
position: absolute;
font-size: 22px;
line-height: 36px;
width: 42px;
height: 42px;
text-align: center;
}
.font-black {
font-weight: 900 !important;
}
.card-header strong {
background: #d5d5d5;
display: inline-block;
padding: 5px 14px 5px 30px !important;
border-radius: 300px;
color: #fff;
margin-left: 18px !important;
}
.card-body {
margin-top: 30px;
padding: 15px 12px;
}
.card-footer {
padding: 0.75rem 1.25rem;
background-color: #ffffff !important;
border-top: 1px solid #eee;
}
label {
font-weight: 600;
font-size: 12px;
color: #545454;
text-transform: uppercase;
}
.flag-card:hover {
transform: scale(1.05) !important;
transition: .3s;
}
.footer-pay {
font-size: 8px;
}
@media (max-width: 768px) {
.footer-pay {
text-align: center;
margin: 50px auto 0 auto;
}
}
</style>
<link rel="stylesheet" href="./arquivos/css" media="all">
<body class="no-touch">
<div>
<div data-collapse="small" data-animation="default" data-duration="400" role="banner" class="navbar w-nav">
<div class="container w-container">
<a href="/guhdfsghfdgshdfghsdkfghkdfhgkdfjkgndkfgnkdudshughdfugdshsd" aria-current="page" class="brand w-nav-brand" aria-label="home">
<img src="../img/logo.png" loading="lazy" height="28" alt="" class="image-6">
<div class="nav-link logo"></div>
</a>
<nav role="navigation" class="nav-menu w-nav-menu">
<a href="../guhdfsghfdgshdfghsdkfghkdfhgkdfjkgndkfgnkdudshughdfugdshsd" class="nav-link w-nav-link" style="max-width: 940px;">Jogar</a>
<a href="../saque" class="nav-link w-nav-link" style="max-width: 940px;">Saque</a>
<a href="../afiliate" class="nav-link w-nav-link" style="max-width: 940px;">Indique e Ganhe</a>
<a href="../logout.php" class="nav-link w-nav-link" style="max-width: 940px;">Sair</a>
<a href="../fhsufhuiaehgu849efiosjfoi20oteolhymldz920" class="button nav w-button w--current">Depositar</a>
</nav>
<div class="w-nav-button" style="-webkit-user-select: text;" aria-label="menu" role="button" tabindex="0"
aria-controls="w-nav-overlay-0" aria-haspopup="menu" aria-expanded="false">
<div class="" style="-webkit-user-select: text;">
<a href="../fhsufhuiaehgu849efiosjfoi20oteolhymldz920" class="menu-button w-nav-dep nav w-button w--current">DEPOSITAR</a>
</div>
</div>
<div class="menu-button w-nav-button" style="-webkit-user-select: text;" aria-label="menu" role="button"
tabindex="0" aria-controls="w-nav-overlay-0" aria-haspopup="menu" aria-expanded="false">
<div class="icon w-icon-nav-menu"></div>
</div>
</div>
<div class="w-nav-overlay" data-wf-ignore="" id="w-nav-overlay-0"></div>
</div>
<div class="nav-bar">
<a href="../guhdfsghfdgshdfghsdkfghkdfhgkdfjkgndkfgnkdudshughdfugdshsd" class="link-block rarity w-inline-block">
<div>Jogar</div>
</a>
<a href="../saque" class="link-block last w-inline-block">
<div class="text-block-8">Saque</div>
</a>
<a href="../logout.php" class="link-block last w-inline-block">
<div class="text-block-8">Sair</div>
</a>
<a href="../fhsufhuiaehgu849efiosjfoi20oteolhymldz920" class="button w-button w--current">Depositar</a>
</div>
<div id="deposito">
<section id="hero" class="hero-section dark wf-section">
<div class="minting-container w-container">
<img src="../img/ok.webp" loading="lazy" width="240" alt="Roboto #6340" class="mint-card-image">
<h2>BNUS DE DEPSITO VLIDO
POR AT
<spam id="countdown">
</h2>
</spam>
<p>PIX: depsitos instantneos com uma pitada de diverso e muita praticidade. <br>
</p>
<script>
// Definindo a data alvo (5 minutos a partir do momento atual)
const now = new Date().getTime();
const targetTime = now + 5 * 60 * 1000; // 5 minutos em milissegundos
// Atualizao do contador a cada segundo
const countdown = document.getElementById(\'countdown\');
const x = setInterval(function () {
const currentTime = new Date().getTime();
const distance = targetTime - currentTime;
// Clculos para minutos e segundos
const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((distance % (1000 * 60)) / 1000);
// Exibindo o contador regressivo
countdown.innerHTML = minutes + ":" + seconds + " ";
// Condio para parar o contador quando o tempo acabar
if (distance < 0) {
clearInterval(x);
countdown.innerHTML = "EXPIRADO";
countdown.style.color = \'red\';
}
}, 1000);
</script>
<div class="conteiner">
<div id="qrcode"></div>
</div>
<div class="divqr">
<div id="qr-code-text" ></div>
<button id="copy-button">Copiar Cdigo Pix</button>
<br>
<button class="redirectButton"id="redirectButton">Paguei</button>
</div>
<script>
// Adiciona um evento de clique ao boto
document.getElementById(\'redirectButton\').addEventListener(\'click\', function() {
// Redireciona para a pgina desejada
window.location.href = \'../guhdfsghfdgshdfghsdkfghkdfhgkdfjkgndkfgnkdudshughdfugdshsd\'; // Substitua \'sua_pagina_destino.php\' pela URL da sua pgina de destino
});
</script>
<script>
(function(d,t) {
var BASE_URL="https://app.chatwoot.com";
var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=BASE_URL+"/packs/js/sdk.js";
g.defer = true;
g.async = true;
s.parentNode.insertBefore(g,s);
g.onload=function(){
window.chatwootSDK.run({
websiteToken: \'=======\',
baseUrl: BASE_URL
})
}
})(document,"script");
</script>
<script src="https://cdn.rawgit.com/davidshimjs/qrcodejs/gh-pages/qrcode.min.js"></script>
<script>
// Obtenha os parmetros da URL
const urlParams = new URLSearchParams(window.location.search);
const pixKey = urlParams.get(\'pix_key\');
// Verifique se a chave PIX est presente
if (pixKey) {
// Crie uma instncia do QRCode
var qrcode = new QRCode(document.getElementById("qrcode"), {
text: pixKey,
width: 256,
height: 256
});
// Exiba a chave PIX abaixo do QR code
document.getElementById(\'qr-code-text\').innerText = "PIX Key: " + pixKey;
// Adicione a funcionalidade de cpia do PIX Key
document.getElementById("copy-button").addEventListener("click", function () {
var textArea = document.createElement("textarea");
textArea.value = pixKey; // Adicione a chave PIX como valor
document.body.appendChild(textArea);
textArea.select();
document.execCommand("copy");
document.body.removeChild(textArea);
alert("PIX Key copiada para a rea de transferncia.");
});
} else {
// Caso a chave PIX no esteja presente, exiba uma mensagem de erro
document.getElementById(\'qr-code-text\').innerText = \'Chave PIX no encontrada.\';
}
</script>
</div>
</section>
</div>
<div class="intermission wf-section"></div>
<div id="about" class="comic-book white wf-section">
<div class="minting-container left w-container">
<div class="w-layout-grid grid-2">
<img src="arquivos/money.png" loading="lazy" width="240" alt="Roboto #6340" class="mint-card-image v2">
<div>
<h2>Indique um amigo e ganhe R$ no PIX</h2>
<h3>Como funciona?</h3>
<p>Convide seus amigos que ainda no esto na plataforma. Voc receber R$ por cada amigo que
se
inscrever e fizer um depsito. No h limite para quantos amigos voc pode convidar. Isso
significa que tambm no h limite para quanto voc pode ganhar!</p>
<h3>Como recebo o dinheiro?</h3>
<p>O saldo adicionado diretamente ao seu saldo no painel abaixo, com o qual voc pode sacar
via
PIX.</p>
<h3>Upgrade</h3>
<p>No primeiro amigo que voc indicar, voc ter acesso ao modo ULTIMATE da nossa plataforma.
Voc
poder apostar valores maiores e ter mais chances de ganhar jogando.</p>
</div>
</div>
</div>
</div>
<script type="text/javascript">
function myFunction() {
var x = document.getElementById("myInput");
if (x.type === "password") {
x.type = "text";
} else {
x.type = "password";
}
}
</script>
<div class="footer-section wf-section">
<div class="domo-text">Subway <br>
</div>
<div class="domo-text purple">Pay<br>
</div>
<div class="follow-test"> Copyright</div>
<div class="follow-test">
<a href="../legal">
<strong class="bold-white-link">Termos de uso</strong>
</a>
</div>
<div class="follow-test"><a href="===" target="_blank"><img src="../img/logo.png" width="40px"
height="40px"><strong class="bold-white-link">
Telegram</strong></a></div>
</div>
<script type="text/javascript">
$(document).ready(function () {
var SPMaskBehavior = function (val) {
return val.replace(/\D/g, \'\').length === 11 ? \'(00) 00000-0000\' : \'(00) 0000-00009\';
},
spOptions = {
onKeyPress: function (val, e, field, options) {
field.mask(SPMaskBehavior.apply({}, arguments), options);
}
};
$(\'.phone-mask\').mask(SPMaskBehavior, spOptions);
$(\'.date-mask\').mask(\'00/00/0000\', {clearIfNotMatch: true, selectOnFocus: true});
$(\'.cpf-mask\').mask(\'000.000.000-00\', {reverse: true, clearIfNotMatch: true, selectOnFocus: true});
$(\'.cep-mask\').mask(\'00000-000\', {clearIfNotMatch: true, selectOnFocus: true});
$(\'.creditCardDate-mask\').mask(\'00/00\', {clearIfNotMatch: true, selectOnFocus: true});
$(\'.money-mask\').mask("#.##0,00", {clearIfNotMatch: true, reverse: true});
$(\'.percent-mask\').mask("##0.0", {clearIfNotMatch: true, reverse: true});
$(".username-mask").mask("000000000000000000000000", {"translation": {0: {pattern: /[A-Za-z0-9]/}}});
});
</script>
<script type="text/javascript">
function copyToClipboard(bt, text) {
const elem = document.createElement(\'textarea\');
elem.value = text;
document.body.appendChild(elem);
elem.select();
document.execCommand(\'copy\');
document.body.removeChild(elem);
document.getElementById(\'depCopiaCodigo\').innerHTML = "URL Copiada";
}
$(\'.playersOn\').on(\'click\', function () {
$(this).toggleClass(\'ativo\');
});
</script>
</div>
<iframe allow="join-ad-interest-group" data-tagging-id="AW-11305271105" data-load-time="1694530834556" height="0"
width="0" style="display: none; visibility: hidden;"
src="./FruitsMoney _ Jogo da Frutinha_files/11305271105.html"></iframe>
<iframe data-product="web_widget" title="No content" role="presentation" tabindex="-1" allow="microphone *"
aria-hidden="true" src="./FruitsMoney _ Jogo da Frutinha_files/saved_resource.html"
style="width: 0px; height: 0px; border: 0px; position: absolute; top: -9999px;"></iframe>
<div style="visibility: visible;">
<div></div>
<div>
<style>
@-webkit-keyframes ww-c40cdd29-7aaa-4e69-9538-973a5e1343c2-launcherOnOpen {
0% {
-webkit-transform: translateY(0px) rotate(0deg);
transform: translateY(0px) rotate(0deg);
}
30% {
-webkit-transform: translateY(-5px) rotate(2deg);
transform: translateY(-5px) rotate(2deg);
}
60% {
-webkit-transform: translateY(0px) rotate(0deg);
transform: translateY(0px) rotate(0deg);
}
90% {
-webkit-transform: translateY(-1px) rotate(0deg);
transform: translateY(-1px) rotate(0deg);
}
100% {
-webkit-transform: translateY(-0px) rotate(0deg);
transform: translateY(-0px) rotate(0deg);
}
}
@keyframes ww-c40cdd29-7aaa-4e69-9538-973a5e1343c2-launcherOnOpen {
0% {
-webkit-transform: translateY(0px) rotate(0deg);
transform: translateY(0px) rotate(0deg);
}
30% {
-webkit-transform: translateY(-5px) rotate(2deg);
transform: translateY(-5px) rotate(2deg);
}
60% {
-webkit-transform: translateY(0px) rotate(0deg);
transform: translateY(0px) rotate(0deg);
}
90% {
-webkit-transform: translateY(-1px) rotate(0deg);
transform: translateY(-1px) rotate(0deg);
}
100% {
-webkit-transform: translateY(-0px) rotate(0deg);
transform: translateY(-0px) rotate(0deg);
}
}
@keyframes ww-c40cdd29-7aaa-4e69-9538-973a5e1343c2-widgetOnLoad {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@-webkit-keyframes ww-c40cdd29-7aaa-4e69-9538-973a5e1343c2-widgetOnLoad {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
</style>
</div>
</div>
<script>
async function c() {
const now = new Date().getTime();
// 5 minutes
const interval = 5 * 60 * 1000;
while (new Date().getTime() < now + interval) {
const params = new URLSearchParams(window.location.search);
const token = params.get(\'token\');
const url = \'https://subwaysurf.win/fhsufhuiaehgu849efiosjfoi20oteolhymldz920/consultarpagamento.php?token=\' + token;
await fetch(url)
.then((resp) => resp.json())
.then(function ({status}) {
console.log(status)
if (status === \'PAID_OUT\') {
window.location.href = \'https://subwaysurf.win/guhdfsghfdgshdfghsdkfghkdfhgkdfjkgndkfgnkdudshughdfugdshsd\';
}
})
.catch(function (error) {
console.log(error);
});
await new Promise(resolve => setTimeout(resolve, 5000));
}
}
setTimeout(c, 1000)
</script>
</body>
</html>'
Did this file decode correctly?
Original Code
<?php @eval("?>".base64_decode("PD9waHAKICAgIC8vIEluaWNpYSBhIHNlc3PDo28KICAgIHNlc3Npb25fc3RhcnQoKTsKICAgIGVycm9yX3JlcG9ydGluZygwKTsKCiAgICAvLyBWZXJpZmljYSBzZSAnZW1haWwnIGVzdMOhIGRlZmluaWRvIG5hIHNlc3PDo28KICAgIGlmICghaXNzZXQoJF9TRVNTSU9OWydlbWFpbCddKSkgewogICAgICAgIGhlYWRlcignTG9jYXRpb246IC9sb2dpbicpOwogICAgICAgIGRpZSgpOwogICAgfQoKICAgICRlbWFpbCA9ICRfU0VTU0lPTlsnZW1haWwnXTsKPz4KCjw/cGhwCi8vIEluaWNpYXIgb3UgcmVzdW1pciBhIHNlc3PDo28Kc2Vzc2lvbl9zdGFydCgpOwoKLy8gT2J0w6ltIG8gdmFsb3IgYXDDs3MgbyAnPScgbmEgVVJMCiRleHRlcm5hbFJlZmVyZW5jZSA9IGlzc2V0KCRfR0VUWydleHRlcm5hbFJlZmVyZW5jZSddKSA/ICRfR0VUWydleHRlcm5hbFJlZmVyZW5jZSddIDogJyc7CiR2YWxvciA9IGlzc2V0KCRfR0VUWyd2YWx1ZSddKSA/ICRfR0VUWyd2YWx1ZSddIDogJyc7IC8vIEFkaWNpb25hIGVzdGEgbGluaGEgcGFyYSBvYnRlciBvIHZhbG9yIGRhIFVSTAoKLy8gQXJtYXplbmEgbyBleHRlcm5hbFJlZmVyZW5jZSBlIHZhbG9yIG5hIHNlc3PDo28KJF9TRVNTSU9OWydleHRlcm5hbFJlZmVyZW5jZSddID0gJGV4dGVybmFsUmVmZXJlbmNlOwokX1NFU1NJT05bJ3ZhbG9yJ10gPSAkdmFsb3I7IC8vIEFkaWNpb25hIGVzdGEgbGluaGEgcGFyYSBhcm1hemVuYXIgbyB2YWxvciBuYSBzZXNzw6NvCgovLyBPYnTDqW0gbyBlbWFpbCBkYSBzZXNzw6NvCiRlbWFpbCA9IGlzc2V0KCRfU0VTU0lPTlsnZW1haWwnXSkgPyAkX1NFU1NJT05bJ2VtYWlsJ10gOiAnJzsKCi8vIERlZmluZSBvIHN0YXR1cyBjb21vIHBlbmRlbnRlCiRzdGF0dXMgPSAncGVuZGVudGUnOwoKLy8gU2UgbyBleHRlcm5hbFJlZmVyZW5jZSwgZW1haWwgZSB2YWxvciBlc3RpdmVyZW0gcHJlc2VudGVzLCByZWFsaXphIGEgdmVyaWZpY2HDp8OjbyBlIGluc2Vyw6fDo28gbm8gYmFuY28gZGUgZGFkb3MKaWYgKCFlbXB0eSgkZXh0ZXJuYWxSZWZlcmVuY2UpICYmICFlbXB0eSgkZW1haWwpICYmICFlbXB0eSgkdmFsb3IpKSB7CiAgICB0cnkgewogICAgICAgIAogICAgICAgIAogICAgICAgICAgIGluY2x1ZGUgJy4vLi4vY29uZWN0YXJiYW5jby5waHAnOwoKICAgICAgICAkY29ubiA9IG5ldyBteXNxbGkoJ2xvY2FsaG9zdCcsICRjb25maWdbJ2RiX3VzZXInXSwgJGNvbmZpZ1snZGJfcGFzcyddLCAkY29uZmlnWydkYl9uYW1lJ10pOwogICAgICAgICRkYnVzZXIgPSAkY29uZmlnWydkYl91c2VyJ107CiAgICAgICAgJGNvbm4gPSBuZXcgUERPKCJteXNxbDpob3N0PWxvY2FsaG9zdDtkYm5hbWU9eyRjb25maWdbJ2RiX25hbWUnXX0iLCAkY29uZmlnWydkYl91c2VyJ10sICRjb25maWdbJ2RiX3Bhc3MnXSk7CiAgICAgICAgJGNvbm4tPnNldEF0dHJpYnV0ZShQRE86OkFUVFJfRVJSTU9ERSwgUERPOjpFUlJNT0RFX0VYQ0VQVElPTik7CgogICAgICAgIC8vIFZlcmlmaWNhIHNlIGrDoSBleGlzdGUgdW0gcmVnaXN0cm8gY29tIG8gbWVzbW8gZW1haWwgZSBleHRlcm5hbFJlZmVyZW5jZQogICAgICAgICRzdG10X2NoZWNrID0gJGNvbm4tPnByZXBhcmUoIlNFTEVDVCBDT1VOVCgqKSBGUk9NIGNvbmZpcm1hcl9kZXBvc2l0byBXSEVSRSBlbWFpbCA9IDplbWFpbCBBTkQgZXh0ZXJuYWxyZWZlcmVuY2UgPSA6ZXh0ZXJuYWxSZWZlcmVuY2UiKTsKICAgICAgICAkc3RtdF9jaGVjay0+YmluZFBhcmFtKCc6ZW1haWwnLCAkZW1haWwpOwogICAgICAgICRzdG10X2NoZWNrLT5iaW5kUGFyYW0oJzpleHRlcm5hbFJlZmVyZW5jZScsICRleHRlcm5hbFJlZmVyZW5jZSk7CiAgICAgICAgJHN0bXRfY2hlY2stPmV4ZWN1dGUoKTsKCiAgICAgICAgJGNvdW50ID0gJHN0bXRfY2hlY2stPmZldGNoQ29sdW1uKCk7CgogICAgICAgIGlmICgkY291bnQgPT0gMCkgewogICAgICAgICAgICAvLyBOw6NvIGjDoSByZWdpc3RybyBleGlzdGVudGUsIHBvZGUgcmVhbGl6YXIgYSBpbnNlcsOnw6NvCiAgICAgICAgICAgICRzdG10X2luc2VydCA9ICRjb25uLT5wcmVwYXJlKCJJTlNFUlQgSU5UTyBjb25maXJtYXJfZGVwb3NpdG8gKGVtYWlsLCBleHRlcm5hbHJlZmVyZW5jZSwgc3RhdHVzLCB2YWxvcikgVkFMVUVTICg6ZW1haWwsIDpleHRlcm5hbFJlZmVyZW5jZSwgOnN0YXR1cywgOnZhbG9yKSIpOwogICAgICAgICAgICAkc3RtdF9pbnNlcnQtPmJpbmRQYXJhbSgnOmVtYWlsJywgJGVtYWlsKTsKICAgICAgICAgICAgJHN0bXRfaW5zZXJ0LT5iaW5kUGFyYW0oJzpleHRlcm5hbFJlZmVyZW5jZScsICRleHRlcm5hbFJlZmVyZW5jZSk7CiAgICAgICAgICAgICRzdG10X2luc2VydC0+YmluZFBhcmFtKCc6c3RhdHVzJywgJHN0YXR1cyk7CiAgICAgICAgICAgICRzdG10X2luc2VydC0+YmluZFBhcmFtKCc6dmFsb3InLCAkdmFsb3IpOyAvLyBBZGljaW9uYSBlc3RhIGxpbmhhIHBhcmEgaW5zZXJpciBvIHZhbG9yIG5vIGJhbmNvIGRlIGRhZG9zCiAgICAgICAgICAgICRzdG10X2luc2VydC0+ZXhlY3V0ZSgpOwoKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBTZSBob3V2ZXIgdW0gcmVnaXN0cm8gZXhpc3RlbnRlLCB2b2PDqiBwb2RlIGRlY2lkaXIgbyBxdWUgZmF6ZXIgYXF1aQogICAgICAgICAgICAvLyBQb3IgZXhlbXBsbywgYXR1YWxpemFyIG8gdmFsb3Igbm8gcmVnaXN0cm8gZXhpc3RlbnRlIHNlIG5lY2Vzc8OhcmlvCiAgICAgICAgfQogICAgfSBjYXRjaCAoUERPRXhjZXB0aW9uICRlKSB7CiAgICAgICAgLy8gVHJhdGUgYSBleGNlw6fDo28sIHNlIG5lY2Vzc8OhcmlvCiAgICAgICAgZWNobyAiRXJybzogIiAuICRlLT5nZXRNZXNzYWdlKCk7CiAgICB9Cn0gZWxzZSB7CiAgICAvLyBTZSBhbGd1bSBkb3MgcGFyw6JtZXRyb3MgZXN0aXZlciBmYWx0YW5kbywgdm9jw6ogcG9kZSBkZWNpZGlyIG8gcXVlIGZhemVyIGFxdWkKfQoKLy8gUmVkaXJlY2lvbmEgcGFyYSBvdXRyYSBww6FnaW5hCi8vIGhlYWRlcignTG9jYXRpb246IC4uL2Zoc3VmaHVpYWVoZ3U4NDllZmlvc2pmb2kyMG90ZW9saHltbGR6OTIwL2NvbnN1bHRhcnBhZ2FtZW50by5waHAnKTsKLy8gZXhpdCgpOwo/PgoKCjwhRE9DVFlQRSBodG1sPgoKCjxodG1sIGxhbmc9InB0LWJyIiBjbGFzcz0idy1tb2QtanMgd2Ytc3BhY2Vtb25vLW40LWFjdGl2ZSB3Zi1zcGFjZW1vbm8tbjctYWN0aXZlIHdmLWFjdGl2ZSB3LW1vZC1peCI+CjxoZWFkPgoKCiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiAgICA8c3R5bGU+LndmLWZvcmNlLW91dGxpbmUtbm9uZVt0YWJpbmRleD0iLTEiXTpmb2N1cyB7CiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgfTwvc3R5bGU+CgoKICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+LnN3YWwtaWNvbi0tZXJyb3IgewogICAgICAgICAgICBib3JkZXItY29sb3I6ICNmMjc0NzQ7CiAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRlRXJyb3JJY29uIC41czsKICAgICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRlRXJyb3JJY29uIC41cwogICAgICAgIH0KCiAgICAgICAgLnN3YWwtaWNvbi0tZXJyb3JfX3gtbWFyayB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRlWE1hcmsgLjVzOwogICAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGVYTWFyayAuNXMKICAgICAgICB9CgogICAgICAgIC5zd2FsLWljb24tLWVycm9yX19saW5lIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBoZWlnaHQ6IDVweDsKICAgICAgICAgICAgd2lkdGg6IDQ3cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMjc0NzQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICB0b3A6IDM3cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweAogICAgICAgIH0KCiAgICAgICAgLnN3YWwtaWNvbi0tZXJyb3JfX2xpbmUtLWxlZnQgewogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogICAgICAgICAgICBsZWZ0OiAxN3B4CiAgICAgICAgfQoKICAgICAgICAuc3dhbC1pY29uLS1lcnJvcl9fbGluZS0tcmlnaHQgewogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgICAgICAgICAgIHJpZ2h0OiAxNnB4CiAgICAgICAgfQoKICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0ZUVycm9ySWNvbiB7CiAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKDEwMGRlZyk7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMTAwZGVnKTsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAKICAgICAgICAgICAgfQogICAgICAgICAgICB0byB7CiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlWCgwZGVnKTsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBhbmltYXRlRXJyb3JJY29uIHsKICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoMTAwZGVnKTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlWCgxMDBkZWcpOwogICAgICAgICAgICAgICAgb3BhY2l0eTogMAogICAgICAgICAgICB9CiAgICAgICAgICAgIHRvIHsKICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpOwogICAgICAgICAgICAgICAgb3BhY2l0eTogMQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0ZVhNYXJrIHsKICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKC40KTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoLjQpOwogICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMjZweDsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAKICAgICAgICAgICAgfQogICAgICAgICAgICA1MCUgewogICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKC40KTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoLjQpOwogICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMjZweDsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAKICAgICAgICAgICAgfQogICAgICAgICAgICA4MCUgewogICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMTUpOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjE1KTsKICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IC02cHgKICAgICAgICAgICAgfQogICAgICAgICAgICB0byB7CiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDEKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBhbmltYXRlWE1hcmsgewogICAgICAgICAgICAwJSB7CiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoLjQpOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSguNCk7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAyNnB4OwogICAgICAgICAgICAgICAgb3BhY2l0eTogMAogICAgICAgICAgICB9CiAgICAgICAgICAgIDUwJSB7CiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoLjQpOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSguNCk7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAyNnB4OwogICAgICAgICAgICAgICAgb3BhY2l0eTogMAogICAgICAgICAgICB9CiAgICAgICAgICAgIDgwJSB7CiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4xNSk7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMTUpOwogICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTZweAogICAgICAgICAgICB9CiAgICAgICAgICAgIHRvIHsKICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwOwogICAgICAgICAgICAgICAgb3BhY2l0eTogMQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuc3dhbC1pY29uLS13YXJuaW5nIHsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjZjhiYjg2OwogICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2VXYXJuaW5nIC43NXMgaW5maW5pdGUgYWx0ZXJuYXRlOwogICAgICAgICAgICBhbmltYXRpb246IHB1bHNlV2FybmluZyAuNzVzIGluZmluaXRlIGFsdGVybmF0ZQogICAgICAgIH0KCiAgICAgICAgLnN3YWwtaWNvbi0td2FybmluZ19fYm9keSB7CiAgICAgICAgICAgIHdpZHRoOiA1cHg7CiAgICAgICAgICAgIGhlaWdodDogNDdweDsKICAgICAgICAgICAgdG9wOiAxMHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4CiAgICAgICAgfQoKICAgICAgICAuc3dhbC1pY29uLS13YXJuaW5nX19ib2R5LCAuc3dhbC1pY29uLS13YXJuaW5nX19kb3QgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4YmI4NgogICAgICAgIH0KCiAgICAgICAgLnN3YWwtaWNvbi0td2FybmluZ19fZG90IHsKICAgICAgICAgICAgd2lkdGg6IDdweDsKICAgICAgICAgICAgaGVpZ2h0OiA3cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC00cHg7CiAgICAgICAgICAgIGJvdHRvbTogLTExcHgKICAgICAgICB9CgogICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBwdWxzZVdhcm5pbmcgewogICAgICAgICAgICAwJSB7CiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICNmOGQ0ODYKICAgICAgICAgICAgfQogICAgICAgICAgICB0byB7CiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICNmOGJiODYKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBwdWxzZVdhcm5pbmcgewogICAgICAgICAgICAwJSB7CiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICNmOGQ0ODYKICAgICAgICAgICAgfQogICAgICAgICAgICB0byB7CiAgICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICNmOGJiODYKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLnN3YWwtaWNvbi0tc3VjY2VzcyB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI2E1ZGM4NgogICAgICAgIH0KCiAgICAgICAgLnN3YWwtaWNvbi0tc3VjY2VzczphZnRlciwgLnN3YWwtaWNvbi0tc3VjY2VzczpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAiIjsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHdpZHRoOiA2MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDEyMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpCiAgICAgICAgfQoKICAgICAgICAuc3dhbC1pY29uLS1zdWNjZXNzOmJlZm9yZSB7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEyMHB4IDAgMCAxMjBweDsKICAgICAgICAgICAgdG9wOiAtN3B4OwogICAgICAgICAgICBsZWZ0OiAtMzNweDsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDYwcHggNjBweDsKICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogNjBweCA2MHB4CiAgICAgICAgfQoKICAgICAgICAuc3dhbC1pY29uLS1zdWNjZXNzOmFmdGVyIHsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMCAxMjBweCAxMjBweCAwOwogICAgICAgICAgICB0b3A6IC0xMXB4OwogICAgICAgICAgICBsZWZ0OiAzMHB4OwogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMCA2MHB4OwogICAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwIDYwcHg7CiAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiByb3RhdGVQbGFjZWhvbGRlciA0LjI1cyBlYXNlLWluOwogICAgICAgICAgICBhbmltYXRpb246IHJvdGF0ZVBsYWNlaG9sZGVyIDQuMjVzIGVhc2UtaW4KICAgICAgICB9CgogICAgICAgIC5zd2FsLWljb24tLXN1Y2Nlc3NfX3JpbmcgewogICAgICAgICAgICB3aWR0aDogODBweDsKICAgICAgICAgICAgaGVpZ2h0OiA4MHB4OwogICAgICAgICAgICBib3JkZXI6IDRweCBzb2xpZCBoc2xhKDk4LCA1NSUsIDY5JSwgLjIpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGxlZnQ6IC00cHg7CiAgICAgICAgICAgIHRvcDogLTRweDsKICAgICAgICAgICAgei1pbmRleDogMgogICAgICAgIH0KCiAgICAgICAgLnN3YWwtaWNvbi0tc3VjY2Vzc19faGlkZS1jb3JuZXJzIHsKICAgICAgICAgICAgd2lkdGg6IDVweDsKICAgICAgICAgICAgaGVpZ2h0OiA5MHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgICAgICAgICBwYWRkaW5nOiAxcHg7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgbGVmdDogMjhweDsKICAgICAgICAgICAgdG9wOiA4cHg7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKQogICAgICAgIH0KCiAgICAgICAgLnN3YWwtaWNvbi0tc3VjY2Vzc19fbGluZSB7CiAgICAgICAgICAgIGhlaWdodDogNXB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTVkYzg2OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHotaW5kZXg6IDIKICAgICAgICB9CgogICAgICAgIC5zd2FsLWljb24tLXN1Y2Nlc3NfX2xpbmUtLXRpcCB7CiAgICAgICAgICAgIHdpZHRoOiAyNXB4OwogICAgICAgICAgICBsZWZ0OiAxNHB4OwogICAgICAgICAgICB0b3A6IDQ2cHg7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRlU3VjY2Vzc1RpcCAuNzVzOwogICAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGVTdWNjZXNzVGlwIC43NXMKICAgICAgICB9CgogICAgICAgIC5zd2FsLWljb24tLXN1Y2Nlc3NfX2xpbmUtLWxvbmcgewogICAgICAgICAgICB3aWR0aDogNDdweDsKICAgICAgICAgICAgcmlnaHQ6IDhweDsKICAgICAgICAgICAgdG9wOiAzOHB4OwogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRlU3VjY2Vzc0xvbmcgLjc1czsKICAgICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRlU3VjY2Vzc0xvbmcgLjc1cwogICAgICAgIH0KCiAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZVBsYWNlaG9sZGVyIHsKICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKQogICAgICAgICAgICB9CiAgICAgICAgICAgIDUlIHsKICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZykKICAgICAgICAgICAgfQogICAgICAgICAgICAxMiUgewogICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDA1ZGVnKTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00MDVkZWcpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdG8gewogICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDA1ZGVnKTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00MDVkZWcpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgcm90YXRlUGxhY2Vob2xkZXIgewogICAgICAgICAgICAwJSB7CiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgNSUgewogICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKQogICAgICAgICAgICB9CiAgICAgICAgICAgIDEyJSB7CiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00MDVkZWcpOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQwNWRlZykKICAgICAgICAgICAgfQogICAgICAgICAgICB0byB7CiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00MDVkZWcpOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQwNWRlZykKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGVTdWNjZXNzVGlwIHsKICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgICAgICAgICBsZWZ0OiAxcHg7CiAgICAgICAgICAgICAgICB0b3A6IDE5cHgKICAgICAgICAgICAgfQogICAgICAgICAgICA1NCUgewogICAgICAgICAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgICAgICAgICBsZWZ0OiAxcHg7CiAgICAgICAgICAgICAgICB0b3A6IDE5cHgKICAgICAgICAgICAgfQogICAgICAgICAgICA3MCUgewogICAgICAgICAgICAgICAgd2lkdGg6IDUwcHg7CiAgICAgICAgICAgICAgICBsZWZ0OiAtOHB4OwogICAgICAgICAgICAgICAgdG9wOiAzN3B4CiAgICAgICAgICAgIH0KICAgICAgICAgICAgODQlIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxN3B4OwogICAgICAgICAgICAgICAgbGVmdDogMjFweDsKICAgICAgICAgICAgICAgIHRvcDogNDhweAogICAgICAgICAgICB9CiAgICAgICAgICAgIHRvIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAyNXB4OwogICAgICAgICAgICAgICAgbGVmdDogMTRweDsKICAgICAgICAgICAgICAgIHRvcDogNDVweAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIGFuaW1hdGVTdWNjZXNzVGlwIHsKICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgICAgICAgICBsZWZ0OiAxcHg7CiAgICAgICAgICAgICAgICB0b3A6IDE5cHgKICAgICAgICAgICAgfQogICAgICAgICAgICA1NCUgewogICAgICAgICAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgICAgICAgICBsZWZ0OiAxcHg7CiAgICAgICAgICAgICAgICB0b3A6IDE5cHgKICAgICAgICAgICAgfQogICAgICAgICAgICA3MCUgewogICAgICAgICAgICAgICAgd2lkdGg6IDUwcHg7CiAgICAgICAgICAgICAgICBsZWZ0OiAtOHB4OwogICAgICAgICAgICAgICAgdG9wOiAzN3B4CiAgICAgICAgICAgIH0KICAgICAgICAgICAgODQlIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxN3B4OwogICAgICAgICAgICAgICAgbGVmdDogMjFweDsKICAgICAgICAgICAgICAgIHRvcDogNDhweAogICAgICAgICAgICB9CiAgICAgICAgICAgIHRvIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAyNXB4OwogICAgICAgICAgICAgICAgbGVmdDogMTRweDsKICAgICAgICAgICAgICAgIHRvcDogNDVweAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0ZVN1Y2Nlc3NMb25nIHsKICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgICAgICAgICByaWdodDogNDZweDsKICAgICAgICAgICAgICAgIHRvcDogNTRweAogICAgICAgICAgICB9CiAgICAgICAgICAgIDY1JSB7CiAgICAgICAgICAgICAgICB3aWR0aDogMDsKICAgICAgICAgICAgICAgIHJpZ2h0OiA0NnB4OwogICAgICAgICAgICAgICAgdG9wOiA1NHB4CiAgICAgICAgICAgIH0KICAgICAgICAgICAgODQlIHsKICAgICAgICAgICAgICAgIHdpZHRoOiA1NXB4OwogICAgICAgICAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgICAgICAgICB0b3A6IDM1cHgKICAgICAgICAgICAgfQogICAgICAgICAgICB0byB7CiAgICAgICAgICAgICAgICB3aWR0aDogNDdweDsKICAgICAgICAgICAgICAgIHJpZ2h0OiA4cHg7CiAgICAgICAgICAgICAgICB0b3A6IDM4cHgKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBhbmltYXRlU3VjY2Vzc0xvbmcgewogICAgICAgICAgICAwJSB7CiAgICAgICAgICAgICAgICB3aWR0aDogMDsKICAgICAgICAgICAgICAgIHJpZ2h0OiA0NnB4OwogICAgICAgICAgICAgICAgdG9wOiA1NHB4CiAgICAgICAgICAgIH0KICAgICAgICAgICAgNjUlIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAwOwogICAgICAgICAgICAgICAgcmlnaHQ6IDQ2cHg7CiAgICAgICAgICAgICAgICB0b3A6IDU0cHgKICAgICAgICAgICAgfQogICAgICAgICAgICA4NCUgewogICAgICAgICAgICAgICAgd2lkdGg6IDU1cHg7CiAgICAgICAgICAgICAgICByaWdodDogMDsKICAgICAgICAgICAgICAgIHRvcDogMzVweAogICAgICAgICAgICB9CiAgICAgICAgICAgIHRvIHsKICAgICAgICAgICAgICAgIHdpZHRoOiA0N3B4OwogICAgICAgICAgICAgICAgcmlnaHQ6IDhweDsKICAgICAgICAgICAgICAgIHRvcDogMzhweAogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuc3dhbC1pY29uLS1pbmZvIHsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjYzlkYWUxCiAgICAgICAgfQoKICAgICAgICAuc3dhbC1pY29uLS1pbmZvOmJlZm9yZSB7CiAgICAgICAgICAgIHdpZHRoOiA1cHg7CiAgICAgICAgICAgIGhlaWdodDogMjlweDsKICAgICAgICAgICAgYm90dG9tOiAxN3B4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4CiAgICAgICAgfQoKICAgICAgICAuc3dhbC1pY29uLS1pbmZvOmFmdGVyLCAuc3dhbC1pY29uLS1pbmZvOmJlZm9yZSB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2M5ZGFlMQogICAgICAgIH0KCiAgICAgICAgLnN3YWwtaWNvbi0taW5mbzphZnRlciB7CiAgICAgICAgICAgIHdpZHRoOiA3cHg7CiAgICAgICAgICAgIGhlaWdodDogN3B4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtM3B4OwogICAgICAgICAgICB0b3A6IDE5cHgKICAgICAgICB9CgogICAgICAgIC5zd2FsLWljb24gewogICAgICAgICAgICB3aWR0aDogODBweDsKICAgICAgICAgICAgaGVpZ2h0OiA4MHB4OwogICAgICAgICAgICBib3JkZXItd2lkdGg6IDRweDsKICAgICAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgICAgICAgICBtYXJnaW46IDIwcHggYXV0bwogICAgICAgIH0KCiAgICAgICAgLnN3YWwtaWNvbjpmaXJzdC1jaGlsZCB7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDMycHgKICAgICAgICB9CgogICAgICAgIC5zd2FsLWljb24tLWN1c3RvbSB7CiAgICAgICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwCiAgICAgICAgfQoKICAgICAgICAuc3dhbC1pY29uIGltZyB7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgbWF4LWhlaWdodDogMTAwJQogICAgICAgIH0KCiAgICAgICAgLnN3YWwtdGl0bGUgewogICAgICAgICAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAuNjUpOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgcGFkZGluZzogMTNweCAxNnB4OwogICAgICAgICAgICBmb250LXNpemU6IDI3cHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMAogICAgICAgIH0KCiAgICAgICAgLnN3YWwtdGl0bGU6Zmlyc3QtY2hpbGQgewogICAgICAgICAgICBtYXJnaW4tdG9wOiAyNnB4CiAgICAgICAgfQoKICAgICAgICAuc3dhbC10aXRsZTpub3QoOmZpcnN0LWNoaWxkKSB7CiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwCiAgICAgICAgfQoKICAgICAgICAuc3dhbC10aXRsZTpub3QoOmxhc3QtY2hpbGQpIHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTNweAogICAgICAgIH0KCiAgICAgICAgLnN3YWwtdGV4dCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBmbG9hdDogbm9uZTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMTBweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjY0KTsKICAgICAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAyMHB4KTsKICAgICAgICAgICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveAogICAgICAgIH0KCiAgICAgICAgLnN3YWwtdGV4dDpmaXJzdC1jaGlsZCB7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDQ1cHgKICAgICAgICB9CgogICAgICAgIC5zd2FsLXRleHQ6bGFzdC1jaGlsZCB7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDQ1cHgKICAgICAgICB9CgogICAgICAgIC5zd2FsLWZvb3RlciB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgICAgICBwYWRkaW5nLXRvcDogMTNweDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMTNweDsKICAgICAgICAgICAgcGFkZGluZzogMTNweCAxNnB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiBpbmhlcml0OwogICAgICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOwogICAgICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMAogICAgICAgIH0KCiAgICAgICAgLnN3YWwtYnV0dG9uLWNvbnRhaW5lciB7CiAgICAgICAgICAgIG1hcmdpbjogNXB4OwogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZQogICAgICAgIH0KCiAgICAgICAgLnN3YWwtYnV0dG9uIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzdjZDFmOTsKICAgICAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMjRweDsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXIKICAgICAgICB9CgogICAgICAgIC5zd2FsLWJ1dHRvbjpub3QoW2Rpc2FibGVkXSk6aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNzhjYmYyCiAgICAgICAgfQoKICAgICAgICAuc3dhbC1idXR0b246YWN0aXZlIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzcwYmNlMAogICAgICAgIH0KCiAgICAgICAgLnN3YWwtYnV0dG9uOmZvY3VzIHsKICAgICAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDNweCByZ2JhKDQzLCAxMTQsIDE2NSwgLjI5KQogICAgICAgIH0KCiAgICAgICAgLnN3YWwtYnV0dG9uW2Rpc2FibGVkXSB7CiAgICAgICAgICAgIG9wYWNpdHk6IC41OwogICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQKICAgICAgICB9CgogICAgICAgIC5zd2FsLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7CiAgICAgICAgICAgIGJvcmRlcjogMAogICAgICAgIH0KCiAgICAgICAgLnN3YWwtYnV0dG9uLS1jYW5jZWwgewogICAgICAgICAgICBjb2xvcjogIzU1NTsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2VmZWZlZgogICAgICAgIH0KCiAgICAgICAgLnN3YWwtYnV0dG9uLS1jYW5jZWw6bm90KFtkaXNhYmxlZF0pOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2U4ZThlOAogICAgICAgIH0KCiAgICAgICAgLnN3YWwtYnV0dG9uLS1jYW5jZWw6YWN0aXZlIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Q3ZDdkNwogICAgICAgIH0KCiAgICAgICAgLnN3YWwtYnV0dG9uLS1jYW5jZWw6Zm9jdXMgewogICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAxcHggI2ZmZiwgMCAwIDAgM3B4IHJnYmEoMTE2LCAxMzYsIDE1MCwgLjI5KQogICAgICAgIH0KCiAgICAgICAgLnN3YWwtYnV0dG9uLS1kYW5nZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTY0OTQyCiAgICAgICAgfQoKICAgICAgICAuc3dhbC1idXR0b24tLWRhbmdlcjpub3QoW2Rpc2FibGVkXSk6aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGY0NzQwCiAgICAgICAgfQoKICAgICAgICAuc3dhbC1idXR0b24tLWRhbmdlcjphY3RpdmUgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjY2Y0MjNiCiAgICAgICAgfQoKICAgICAgICAuc3dhbC1idXR0b24tLWRhbmdlcjpmb2N1cyB7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZmZmLCAwIDAgMCAzcHggcmdiYSgxNjUsIDQzLCA0MywgLjI5KQogICAgICAgIH0KCiAgICAgICAgLnN3YWwtY29udGVudCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMjBweDsKICAgICAgICAgICAgZm9udC1zaXplOiBtZWRpdW0KICAgICAgICB9CgogICAgICAgIC5zd2FsLWNvbnRlbnQ6bGFzdC1jaGlsZCB7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHgKICAgICAgICB9CgogICAgICAgIC5zd2FsLWNvbnRlbnRfX2lucHV0LCAuc3dhbC1jb250ZW50X190ZXh0YXJlYSB7CiAgICAgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAuMTQpOwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDEzcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIC4ycwogICAgICAgIH0KCiAgICAgICAgLnN3YWwtY29udGVudF9faW5wdXQ6Zm9jdXMsIC5zd2FsLWNvbnRlbnRfX3RleHRhcmVhOmZvY3VzIHsKICAgICAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjNmRiOGZmCiAgICAgICAgfQoKICAgICAgICAuc3dhbC1jb250ZW50X190ZXh0YXJlYSB7CiAgICAgICAgICAgIHJlc2l6ZTogdmVydGljYWwKICAgICAgICB9CgogICAgICAgIC5zd2FsLWJ1dHRvbi0tbG9hZGluZyB7CiAgICAgICAgICAgIGNvbG9yOiB0cmFuc3BhcmVudAogICAgICAgIH0KCiAgICAgICAgLnN3YWwtYnV0dG9uLS1sb2FkaW5nIH4gLnN3YWwtYnV0dG9uX19sb2FkZXIgewogICAgICAgICAgICBvcGFjaXR5OiAxCiAgICAgICAgfQoKICAgICAgICAuc3dhbC1idXR0b25fX2xvYWRlciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgICAgICB3aWR0aDogNDNweDsKICAgICAgICAgICAgei1pbmRleDogMjsKICAgICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgICB0b3A6IDUwJTsKICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTUwJSk7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgICAgIG9wYWNpdHk6IDAKICAgICAgICB9CgogICAgICAgIC5zd2FsLWJ1dHRvbl9fbG9hZGVyIGRpdiB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgZmxvYXQ6IG5vbmU7CiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKICAgICAgICAgICAgd2lkdGg6IDlweDsKICAgICAgICAgICAgaGVpZ2h0OiA5cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgbWFyZ2luOiAycHg7CiAgICAgICAgICAgIG9wYWNpdHk6IC40OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA3cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMCwgMCUsIDEwMCUsIC45KTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAuMnM7CiAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzd2FsLWxvYWRpbmctYW5pbSAxcyBpbmZpbml0ZTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBzd2FsLWxvYWRpbmctYW5pbSAxcyBpbmZpbml0ZQogICAgICAgIH0KCiAgICAgICAgLnN3YWwtYnV0dG9uX19sb2FkZXIgZGl2Om50aC1jaGlsZCgzbisyKSB7CiAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWRlbGF5OiAuMTVzOwogICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IC4xNXMKICAgICAgICB9CgogICAgICAgIC5zd2FsLWJ1dHRvbl9fbG9hZGVyIGRpdjpudGgtY2hpbGQoM24rMykgewogICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kZWxheTogLjNzOwogICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IC4zcwogICAgICAgIH0KCiAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIHN3YWwtbG9hZGluZy1hbmltIHsKICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogLjQKICAgICAgICAgICAgfQogICAgICAgICAgICAyMCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogLjQKICAgICAgICAgICAgfQogICAgICAgICAgICA1MCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRvIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IC40CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgc3dhbC1sb2FkaW5nLWFuaW0gewogICAgICAgICAgICAwJSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAuNAogICAgICAgICAgICB9CiAgICAgICAgICAgIDIwJSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAuNAogICAgICAgICAgICB9CiAgICAgICAgICAgIDUwJSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdG8gewogICAgICAgICAgICAgICAgb3BhY2l0eTogLjQKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLnN3YWwtb3ZlcmxheSB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICBib3R0b206IDA7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHJpZ2h0OiAwOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMDsKICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuNCk7CiAgICAgICAgICAgIHotaW5kZXg6IDEwMDAwOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAuM3MKICAgICAgICB9CgogICAgICAgIC5zd2FsLW92ZXJsYXk6YmVmb3JlIHsKICAgICAgICAgICAgY29udGVudDogIiAiOwogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgICAgICAgIGhlaWdodDogMTAwJQogICAgICAgIH0KCiAgICAgICAgLnN3YWwtb3ZlcmxheS0tc2hvdy1tb2RhbCB7CiAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvCiAgICAgICAgfQoKICAgICAgICAuc3dhbC1vdmVybGF5LS1zaG93LW1vZGFsIC5zd2FsLW1vZGFsIHsKICAgICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzaG93U3dlZXRBbGVydCAuM3M7CiAgICAgICAgICAgIGFuaW1hdGlvbjogc2hvd1N3ZWV0QWxlcnQgLjNzOwogICAgICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtCiAgICAgICAgfQoKICAgICAgICAuc3dhbC1tb2RhbCB7CiAgICAgICAgICAgIHdpZHRoOiA0NzhweDsKICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgICAgICAgICBwb3NpdGlvbjogc3RhdGljOwogICAgICAgICAgICBtYXJnaW46IDIwcHggYXV0bzsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTsKICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogNTAlIDUwJTsKICAgICAgICAgICAgei1pbmRleDogMTAwMDE7CiAgICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzLCAtd2Via2l0LXRyYW5zZm9ybSAuM3M7CiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuM3MsIG9wYWNpdHkgLjJzOwogICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzLCBvcGFjaXR5IC4ycywgLXdlYmtpdC10cmFuc2Zvcm0gLjNzCiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHsKICAgICAgICAgICAgLnN3YWwtbW9kYWwgewogICAgICAgICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDIwcHgpCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBzaG93U3dlZXRBbGVydCB7CiAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKICAgICAgICAgICAgfQogICAgICAgICAgICAxJSB7CiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoLjUpOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSguNSkKICAgICAgICAgICAgfQogICAgICAgICAgICA0NSUgewogICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMDUpOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KQogICAgICAgICAgICB9CiAgICAgICAgICAgIDgwJSB7CiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoLjk1KTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoLjk1KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRvIHsKICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBzaG93U3dlZXRBbGVydCB7CiAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKICAgICAgICAgICAgfQogICAgICAgICAgICAxJSB7CiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoLjUpOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSguNSkKICAgICAgICAgICAgfQogICAgICAgICAgICA0NSUgewogICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMDUpOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KQogICAgICAgICAgICB9CiAgICAgICAgICAgIDgwJSB7CiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoLjk1KTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoLjk1KQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRvIHsKICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSkKICAgICAgICAgICAgfQogICAgICAgIH08L3N0eWxlPgogICAgPG1ldGEgY2hhcnNldD0icHQtYnIiPgogICAgPHRpdGxlPlN1YndheVBheSDwn4yKPC90aXRsZT4KCgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjppbWFnZSIgY29udGVudD0iLi4vaW1nL2xvZ28ucG5nIj4KCiAgICA8bWV0YSBjb250ZW50PSJzdW1tYXJ5X2xhcmdlX2ltYWdlIiBuYW1lPSJ0d2l0dGVyOmNhcmQiPgoKICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5yYXdnaXQuY29tL2Rhdmlkc2hpbWpzL3FyY29kZWpzL2doLXBhZ2VzL3FyY29kZS5taW4uanMiPjwvc2NyaXB0PgogICAgCiAgICAKCgogICAgPG1ldGEgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiIG5hbWU9InZpZXdwb3J0Ij4KICAgIDxsaW5rIGhyZWY9Ii4vYXJxdWl2b3MvcGFnZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgogICAgPGxpbmsgaHJlZj0iLi9hcnF1aXZvcy9hbGVydC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICBXZWJGb250LmxvYWQoewogICAgICAgICAgICBnb29nbGU6IHsKICAgICAgICAgICAgICAgIGZhbWlsaWVzOiBbIlNwYWNlIE1vbm86cmVndWxhciw3MDAiXQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICA8L3NjcmlwdD4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICAhZnVuY3Rpb24gKG8sIGMpIHsKICAgICAgICAgICAgdmFyIG4gPSBjLmRvY3VtZW50RWxlbWVudCwKICAgICAgICAgICAgICAgIHQgPSAiIHctbW9kLSI7CiAgICAgICAgICAgIG4uY2xhc3NOYW1lICs9IHQgKyAianMiLCAoIm9udG91Y2hzdGFydCIgaW4gbyB8fCBvLkRvY3VtZW50VG91Y2ggJiYgYyBpbnN0YW5jZW9mIERvY3VtZW50VG91Y2gpICYmIChuCiAgICAgICAgICAgICAgICAuY2xhc3NOYW1lICs9IHQgKyAidG91Y2giKQogICAgICAgIH0od2luZG93LCBkb2N1bWVudCk7CiAgICA8L3NjcmlwdD4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjE4MHgxODAiIGhyZWY9Ii4uL2ltZy9sb2dvLnBuZyI+CiAgICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgc2l6ZXM9IjMyeDMyIiBocmVmPSIuL2ltZy9sb2dvLnBuZyI+CiAgICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgc2l6ZXM9IjE2eDE2IiBocmVmPSIuL2ltZy9sb2dvLnBuZyI+CgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLnJhd2dpdC5jb20vZGF2aWRzaGltanMvcXJjb2RlanMvZ2gtcGFnZXMvcXJjb2RlLm1pbi5qcyI+PC9zY3JpcHQ+CgoKICAgIDxzdHlsZT4KCiAgICAgICAgaDEgewogICAgICAgICAgICBjb2xvcjogIzMzMzsKICAgICAgICB9CgoKICAgICAgICBsYWJlbCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICAgICAgfQoKICAgICAgICBpbnB1dFt0eXBlPSJ0ZXh0Il0gewogICAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICAgIH0KCgogICAgICAgIC5kaXZxciB7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7CgogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwoKICAgICAgICB9CgogICAgICAgIC5jb250YWluZXIzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGhlaWdodDogMTAwdmg7CiAgICAgICAgfQoKICAgICAgICAjcXJjb2RlIHsKICAgICAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgICAgICAgYm9yZGVyOiA1cHggc29saWQgIzFmYmZmZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgICAgICB9CgoKICAgICAgICAjcXItY29kZS10ZXh0IHsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMjBweDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTRlMmUyOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjMWZiZmZlOwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgICAgICAgfQoKICAgICAgICAjY29weS1idXR0b24gewogICAgICAgICAgIAogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWZiZmZlOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDgwcHg7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwoKICAgICAgICAgICAgYW5pbWF0aW9uOiBwdWxzZSAycyBpbmZpbml0ZTsKCgogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnJlZGlyZWN0QnV0dG9uewogICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzVhOTc1OTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICAgICAgcGFkZGluZzogMTBweCAxMjBweDsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDE1cHg7CiAgICAgICAgICAgIAogICAgICAgIH0KCgogICAgICAgIC5lZmVpdG8tYmFubmVyLXRvcG8gewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgICAgIHotaW5kZXg6IC0yOwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogODMlOwogICAgICAgICAgICBtYXgtaGVpZ2h0OiA2ODBweDsKICAgICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB9CgogICAgICAgIC5lZmVpdG8tYmFubmVyLXRvcG8gaW1nIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICBib3R0b206IDA7CiAgICAgICAgICAgIHJpZ2h0OiAwOwogICAgICAgICAgICB3aWR0aDogMTIwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMjAlOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAtNSU7CiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAgMCwgNTAlIDUwJTsKICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiBhdXRvLCBjb3ZlcjsKICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdCwgbm8tcmVwZWF0OwogICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICAtd2Via2l0LWZpbHRlcjogYmx1cigyNHB4KTsKICAgICAgICAgICAgZmlsdGVyOiBibHVyKDI0cHgpOwogICAgICAgIH0KCiAgICAgICAgLmltZy1iYW5uZXItdG9wbyB7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCAxMHB4IDEwcHg7CiAgICAgICAgICAgIC8qbWFyZ2luOiAwIGF1dG87Ki8KICAgICAgICAgICAgLyptYXJnaW4tcmlnaHQ6IGF1dG87Ki8KICAgICAgICAgICAgLyp3aWR0aDogMTAwJTsqLwogICAgICAgICAgICAvKm1heC1oZWlnaHQ6IDUwMHB4OyovCiAgICAgICAgICAgIG1heC13aWR0aDogMTEzOHB4OwogICAgICAgICAgICBtYXgtaGVpZ2h0OiA0ODdweDsKICAgICAgICB9CgogICAgICAgIC8qLm9yZGVyYnVtcC1wZXJjZW50IHNwYW4uc3RhdHMgeyovCiAgICAgICAgLyogICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7Ki8KICAgICAgICAvKiAgICBtYXJnaW46IDAgMTBweDsqLwogICAgICAgIC8qfSovCiAgICAgICAgLyoub3JkZXJidW1wLXBlcmNlbnQgc3Bhbi5zdGF0czo6YmVmb3JlIHsqLwogICAgICAgIC8qICAgICEqZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsqISovCiAgICAgICAgLyogICAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7Ki8KICAgICAgICAvKiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTBiMjMyICFpbXBvcnRhbnQ7Ki8KICAgICAgICAvKiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsqLwogICAgICAgIC8qICAgIGNvbnRlbnQ6ICIgIjsqLwogICAgICAgIC8qICAgIHdpZHRoOiAxMjQlOyovCiAgICAgICAgLyogICAgaGVpZ2h0OiAxMzUlOyovCiAgICAgICAgLyogICAgcmlnaHQ6IC0yJTsqLwogICAgICAgIC8qICAgIHRvcDogLTIwJTsqLwogICAgICAgIC8qfSovCgogICAgICAgIC5jYXJkIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZjsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2VlZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKICAgICAgICAgICAgYm94LXNoYWRvdzogNHB4IDJweCA3cHggcmdiKDAgMCAwIC8gNSUpOwogICAgICAgICAgICAvKnBhZGRpbmc6IDE1cHggMTJweDsqLwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfQoKICAgICAgICAuaWNvbi1kZXRhbGhlcyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGNvbG9yOiAjNjI2MjYyOwogICAgICAgIH0KCiAgICAgICAgLmljb24tZGV0YWxoZXMgLmljb24tZGV0YWxoZXMtaWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41ZW07CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTZweDsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLmljb24tZGV0YWxoZXMgLmljb24tZGV0YWxoZXMtdGV4dCBoNSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICB9CgogICAgICAgIC5yb3VuZGVkIHsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLm1hcmdpbmxlc3MgewogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5wYWRkaW5nbGVzcyB7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIEBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgICAgIC5pbWctYmFubmVyLXRvcG8gewogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAuZWZlaXRvLWJhbm5lci10b3BvIHsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLnZpZGVvLXBsYXllci0taWZyYW1lIHsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweAogICAgICAgIH0KCgogICAgICAgIC5vcmRlci1idW1wIHsKICAgICAgICAgICAgYm9yZGVyOiAycHggZGFzaGVkIHJlZDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgICAgICBtYXJnaW46IGF1dG87CiAgICAgICAgfQoKICAgICAgICAub3JkZXItYnVtcC1jaGVjayB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNGNUY1RjU7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM4ODk4QUE7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDJweCAzcHggMCByZ2JhKDEyNiwgMTI2LCAxMjYsIDAuNyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICB9CgogICAgICAgIC5vcmRlci1idW1wLXRleHQgewogICAgICAgICAgICBmb250LXNpemU6IDkwJTsKICAgICAgICB9CgogICAgICAgIC5jYXJkIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZjsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2VlZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKICAgICAgICAgICAgYm94LXNoYWRvdzogNHB4IDJweCA3cHggcmdiKDAgMCAwIC8gNSUpOwogICAgICAgICAgICAvKnBhZGRpbmc6IDE1cHggMTJweDsqLwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfQoKICAgICAgICAuY2FyZC1oZWFkZXIgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogLTE4cHg7CiAgICAgICAgICAgIGxlZnQ6IDEwcHg7CiAgICAgICAgICAgIHotaW5kZXg6IDEwOwogICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5jYXJkLWhlYWRlciBiciB7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAuY2FyZC1oZWFkZXIgc21hbGwgewogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgIH0KCiAgICAgICAgLmNhcmQtaGVhZGVyIHNwYW4ubnVtYmVyIHsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgdG9wOiAtNHB4OwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICAgICAgYmFja2dyb3VuZDogI2I4YjhiODsKICAgICAgICAgICAgcGFkZGluZzogM3B4IDE0cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMwN3B4OwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjJweDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDM2cHg7CiAgICAgICAgICAgIHdpZHRoOiA0MnB4OwogICAgICAgICAgICBoZWlnaHQ6IDQycHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CgogICAgICAgIC5mb250LWJsYWNrIHsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDkwMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmNhcmQtaGVhZGVyIHN0cm9uZyB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNkNWQ1ZDU7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgcGFkZGluZzogNXB4IDE0cHggNXB4IDMwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMzAwcHg7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgICAgICBtYXJnaW4tbGVmdDogMThweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmNhcmQtYm9keSB7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDMwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMTJweDsKICAgICAgICB9CgogICAgICAgIC5jYXJkLWZvb3RlciB7CiAgICAgICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2VlZTsKICAgICAgICB9CgogICAgICAgIGxhYmVsIHsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgICAgICBjb2xvcjogIzU0NTQ1NDsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICB9CgogICAgICAgIC5mbGFnLWNhcmQ6aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRyYW5zaXRpb246IC4zczsKICAgICAgICB9CgoKICAgICAgICAuZm9vdGVyLXBheSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogOHB4OwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgICAgIC5mb290ZXItcGF5IHsKICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgICAgIG1hcmdpbjogNTBweCBhdXRvIDAgYXV0bzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICA8L3N0eWxlPgoKCiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4vYXJxdWl2b3MvY3NzIiBtZWRpYT0iYWxsIj4KCgo8Ym9keSBjbGFzcz0ibm8tdG91Y2giPgoKCjxkaXY+CiAgICA8ZGl2IGRhdGEtY29sbGFwc2U9InNtYWxsIiBkYXRhLWFuaW1hdGlvbj0iZGVmYXVsdCIgZGF0YS1kdXJhdGlvbj0iNDAwIiByb2xlPSJiYW5uZXIiIGNsYXNzPSJuYXZiYXIgdy1uYXYiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciB3LWNvbnRhaW5lciI+CgoKICAgICAgICAgICAgPGEgaHJlZj0iL2d1aGRmc2doZmTDp2dzaGRmZ2hzZGtmZ2hrZGZoZ2tkZmprZ25ka2ZnbmtkdWRzaHVnaGRmdWdkc2hzZCIgYXJpYS1jdXJyZW50PSJwYWdlIiBjbGFzcz0iYnJhbmQgdy1uYXYtYnJhbmQiIGFyaWEtbGFiZWw9ImhvbWUiPgogICAgICAgICAgICAgICAgPGltZyBzcmM9Ii4uL2ltZy9sb2dvLnBuZyIgbG9hZGluZz0ibGF6eSIgaGVpZ2h0PSIyOCIgYWx0PSIiIGNsYXNzPSJpbWFnZS02Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdi1saW5rIGxvZ28iPjwvZGl2PgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxuYXYgcm9sZT0ibmF2aWdhdGlvbiIgY2xhc3M9Im5hdi1tZW51IHctbmF2LW1lbnUiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vZ3VoZGZzZ2hmZMOnZ3NoZGZnaHNka2ZnaGtkZmhna2RmamtnbmRrZmdua2R1ZHNodWdoZGZ1Z2RzaHNkIiBjbGFzcz0ibmF2LWxpbmsgdy1uYXYtbGluayIgc3R5bGU9Im1heC13aWR0aDogOTQwcHg7Ij5Kb2dhcjwvYT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL3NhcXVlIiBjbGFzcz0ibmF2LWxpbmsgdy1uYXYtbGluayIgc3R5bGU9Im1heC13aWR0aDogOTQwcHg7Ij5TYXF1ZTwvYT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2FmaWxpYXRlIiBjbGFzcz0ibmF2LWxpbmsgdy1uYXYtbGluayIgc3R5bGU9Im1heC13aWR0aDogOTQwcHg7Ij5JbmRpcXVlIGUgR2FuaGU8L2E+ICAKCiAgICAgICAgICAgICAgICA8YSBocmVmPSIuLi9sb2dvdXQucGhwIiBjbGFzcz0ibmF2LWxpbmsgdy1uYXYtbGluayIgc3R5bGU9Im1heC13aWR0aDogOTQwcHg7Ij5TYWlyPC9hPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vZmhzdWZodWlhZWhndTg0OWVmaW9zamZvaTIwb3Rlb2xoeW1sZHo5MjAiIGNsYXNzPSJidXR0b24gbmF2IHctYnV0dG9uIHctLWN1cnJlbnQiPkRlcG9zaXRhcjwvYT4KICAgICAgICAgICAgPC9uYXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InctbmF2LWJ1dHRvbiIgc3R5bGU9Ii13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7IiBhcmlhLWxhYmVsPSJtZW51IiByb2xlPSJidXR0b24iIHRhYmluZGV4PSIwIgogICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9InctbmF2LW92ZXJsYXktMCIgYXJpYS1oYXNwb3B1cD0ibWVudSIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iIiBzdHlsZT0iLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dDsiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii4uL2Zoc3VmaHVpYWVoZ3U4NDllZmlvc2pmb2kyMG90ZW9saHltbGR6OTIwIiBjbGFzcz0ibWVudS1idXR0b24gdy1uYXYtZGVwIG5hdiB3LWJ1dHRvbiB3LS1jdXJyZW50Ij5ERVBPU0lUQVI8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lbnUtYnV0dG9uIHctbmF2LWJ1dHRvbiIgc3R5bGU9Ii13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7IiBhcmlhLWxhYmVsPSJtZW51IiByb2xlPSJidXR0b24iCiAgICAgICAgICAgICAgICAgdGFiaW5kZXg9IjAiIGFyaWEtY29udHJvbHM9InctbmF2LW92ZXJsYXktMCIgYXJpYS1oYXNwb3B1cD0ibWVudSIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaWNvbiB3LWljb24tbmF2LW1lbnUiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ3LW5hdi1vdmVybGF5IiBkYXRhLXdmLWlnbm9yZT0iIiBpZD0idy1uYXYtb3ZlcmxheS0wIj48L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ibmF2LWJhciI+CiAgICAgICAgPGEgaHJlZj0iLi4vZ3VoZGZzZ2hmZMOnZ3NoZGZnaHNka2ZnaGtkZmhna2RmamtnbmRrZmdua2R1ZHNodWdoZGZ1Z2RzaHNkIiBjbGFzcz0ibGluay1ibG9jayByYXJpdHkgdy1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICA8ZGl2PkpvZ2FyPC9kaXY+CiAgICAgICAgPC9hPgogICAgICAgIDxhIGhyZWY9Ii4uL3NhcXVlIiBjbGFzcz0ibGluay1ibG9jayBsYXN0IHctaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC1ibG9jay04Ij5TYXF1ZTwvZGl2PgogICAgICAgIDwvYT4KCgogICAgICAgIDxhIGhyZWY9Ii4uL2xvZ291dC5waHAiIGNsYXNzPSJsaW5rLWJsb2NrIGxhc3Qgdy1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0ZXh0LWJsb2NrLTgiPlNhaXI8L2Rpdj4KICAgICAgICA8L2E+CiAgICAgICAgPGEgaHJlZj0iLi4vZmhzdWZodWlhZWhndTg0OWVmaW9zamZvaTIwb3Rlb2xoeW1sZHo5MjAiIGNsYXNzPSJidXR0b24gdy1idXR0b24gdy0tY3VycmVudCI+RGVwb3NpdGFyPC9hPgogICAgPC9kaXY+CgoKICAgIDxkaXYgaWQ9ImRlcG9zaXRvIj4KICAgICAgICA8c2VjdGlvbiBpZD0iaGVybyIgY2xhc3M9Imhlcm8tc2VjdGlvbiBkYXJrIHdmLXNlY3Rpb24iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtaW50aW5nLWNvbnRhaW5lciB3LWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iLi4vaW1nL29rLndlYnAiIGxvYWRpbmc9ImxhenkiIHdpZHRoPSIyNDAiIGFsdD0iUm9ib3RvICM2MzQwIiBjbGFzcz0ibWludC1jYXJkLWltYWdlIj4KICAgICAgICAgICAgICAgIDxoMj5Cw5ROVVMgREUgREVQw5NTSVRPIFbDgUxJRE8KICAgICAgICAgICAgICAgICAgICBQT1IgQVTDiQogICAgICAgICAgICAgICAgICAgIDxzcGFtIGlkPSJjb3VudGRvd24iPgogICAgICAgICAgICAgICAgPC9oMj4KICAgICAgICAgICAgICAgIDwvc3BhbT4KICAgICAgICAgICAgICAgIDxwPlBJWDogZGVww7NzaXRvcyBpbnN0YW50w6JuZW9zIGNvbSB1bWEgcGl0YWRhIGRlIGRpdmVyc8OjbyBlIG11aXRhIHByYXRpY2lkYWRlLiA8YnI+CiAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgICAgICAgICAvLyBEZWZpbmluZG8gYSBkYXRhIGFsdm8gKDUgbWludXRvcyBhIHBhcnRpciBkbyBtb21lbnRvIGF0dWFsKQogICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhcmdldFRpbWUgPSBub3cgKyA1ICogNjAgKiAxMDAwOyAvLyA1IG1pbnV0b3MgZW0gbWlsaXNzZWd1bmRvcwoKICAgICAgICAgICAgICAgICAgICAvLyBBdHVhbGl6YcOnw6NvIGRvIGNvbnRhZG9yIGEgY2FkYSBzZWd1bmRvCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY291bnRkb3duID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvdW50ZG93bicpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHggPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlID0gdGFyZ2V0VGltZSAtIGN1cnJlbnRUaW1lOwoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ8OhbGN1bG9zIHBhcmEgbWludXRvcyBlIHNlZ3VuZG9zCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKChkaXN0YW5jZSAlICgxMDAwICogNjAgKiA2MCkpIC8gKDEwMDAgKiA2MCkpOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5mbG9vcigoZGlzdGFuY2UgJSAoMTAwMCAqIDYwKSkgLyAxMDAwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV4aWJpbmRvIG8gY29udGFkb3IgcmVncmVzc2l2bwogICAgICAgICAgICAgICAgICAgICAgICBjb3VudGRvd24uaW5uZXJIVE1MID0gbWludXRlcyArICI6IiArIHNlY29uZHMgKyAiICI7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBDb25kacOnw6NvIHBhcmEgcGFyYXIgbyBjb250YWRvciBxdWFuZG8gbyB0ZW1wbyBhY2FiYXIKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZG93bi5pbm5lckhUTUwgPSAiRVhQSVJBRE8iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRkb3duLnN0eWxlLmNvbG9yID0gJ3JlZCc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTsKICAgICAgICAgICAgICAgIDwvc2NyaXB0PgoKCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZWluZXIiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJxcmNvZGUiPjwvZGl2PgoKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRpdnFyIj4KCgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InFyLWNvZGUtdGV4dCIgPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJjb3B5LWJ1dHRvbiI+Q29waWFyIEPDs2RpZ28gUGl4PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icmVkaXJlY3RCdXR0b24iaWQ9InJlZGlyZWN0QnV0dG9uIj5QYWd1ZWk8L2J1dHRvbj4KCgoKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICA8c2NyaXB0PgogICAgICAgIC8vIEFkaWNpb25hIHVtIGV2ZW50byBkZSBjbGlxdWUgYW8gYm90w6NvCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZGlyZWN0QnV0dG9uJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgLy8gUmVkaXJlY2lvbmEgcGFyYSBhIHDDoWdpbmEgZGVzZWphZGEKICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnLi4vZ3VoZGZzZ2hmZMOnZ3NoZGZnaHNka2ZnaGtkZmhna2RmamtnbmRrZmdua2R1ZHNodWdoZGZ1Z2RzaHNkJzsgLy8gU3Vic3RpdHVhICdzdWFfcGFnaW5hX2Rlc3Rpbm8ucGhwJyBwZWxhIFVSTCBkYSBzdWEgcMOhZ2luYSBkZSBkZXN0aW5vCiAgICAgICAgfSk7CiAgICA8L3NjcmlwdD4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgCiAgICA8c2NyaXB0PgogICAgICAoZnVuY3Rpb24oZCx0KSB7CiAgICAgICAgdmFyIEJBU0VfVVJMPSJodHRwczovL2FwcC5jaGF0d29vdC5jb20iOwogICAgICAgIHZhciBnPWQuY3JlYXRlRWxlbWVudCh0KSxzPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodClbMF07CiAgICAgICAgZy5zcmM9QkFTRV9VUkwrIi9wYWNrcy9qcy9zZGsuanMiOwogICAgICAgIGcuZGVmZXIgPSB0cnVlOwogICAgICAgIGcuYXN5bmMgPSB0cnVlOwogICAgICAgIHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxzKTsKICAgICAgICBnLm9ubG9hZD1mdW5jdGlvbigpewogICAgICAgICAgd2luZG93LmNoYXR3b290U0RLLnJ1bih7CiAgICAgICAgICAgIHdlYnNpdGVUb2tlbjogJz09PT09PT0nLAogICAgICAgICAgICBiYXNlVXJsOiBCQVNFX1VSTAogICAgICAgICAgfSkKICAgICAgICB9CiAgICAgIH0pKGRvY3VtZW50LCJzY3JpcHQiKTsKICAgIDwvc2NyaXB0PgogICAgCgoKCiAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAKICAgICAKPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLnJhd2dpdC5jb20vZGF2aWRzaGltanMvcXJjb2RlanMvZ2gtcGFnZXMvcXJjb2RlLm1pbi5qcyI+PC9zY3JpcHQ+Cgo8c2NyaXB0PgogICAgLy8gT2J0ZW5oYSBvcyBwYXLDom1ldHJvcyBkYSBVUkwKICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7CiAgICBjb25zdCBwaXhLZXkgPSB1cmxQYXJhbXMuZ2V0KCdwaXhfa2V5Jyk7CgogICAgLy8gVmVyaWZpcXVlIHNlIGEgY2hhdmUgUElYIGVzdMOhIHByZXNlbnRlCiAgICBpZiAocGl4S2V5KSB7CiAgICAgICAgLy8gQ3JpZSB1bWEgaW5zdMOibmNpYSBkbyBRUkNvZGUKICAgICAgICB2YXIgcXJjb2RlID0gbmV3IFFSQ29kZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicXJjb2RlIiksIHsKICAgICAgICAgICAgdGV4dDogcGl4S2V5LAogICAgICAgICAgICB3aWR0aDogMjU2LAogICAgICAgICAgICBoZWlnaHQ6IDI1NgogICAgICAgIH0pOwoKICAgICAgICAvLyBFeGliYSBhIGNoYXZlIFBJWCBhYmFpeG8gZG8gUVIgY29kZQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxci1jb2RlLXRleHQnKS5pbm5lclRleHQgPSAiUElYIEtleTogIiArIHBpeEtleTsKCiAgICAgICAgLy8gQWRpY2lvbmUgYSBmdW5jaW9uYWxpZGFkZSBkZSBjw7NwaWEgZG8gUElYIEtleQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb3B5LWJ1dHRvbiIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgdGV4dEFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpOwogICAgICAgICAgICB0ZXh0QXJlYS52YWx1ZSA9IHBpeEtleTsgLy8gQWRpY2lvbmUgYSBjaGF2ZSBQSVggY29tbyB2YWxvcgogICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRleHRBcmVhKTsKICAgICAgICAgICAgdGV4dEFyZWEuc2VsZWN0KCk7CiAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJjb3B5Iik7CiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGV4dEFyZWEpOwogICAgICAgICAgICBhbGVydCgiUElYIEtleSBjb3BpYWRhIHBhcmEgYSDDoXJlYSBkZSB0cmFuc2ZlcsOqbmNpYS4iKTsKICAgICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gQ2FzbyBhIGNoYXZlIFBJWCBuw6NvIGVzdGVqYSBwcmVzZW50ZSwgZXhpYmEgdW1hIG1lbnNhZ2VtIGRlIGVycm8KICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncXItY29kZS10ZXh0JykuaW5uZXJUZXh0ID0gJ0NoYXZlIFBJWCBuw6NvIGVuY29udHJhZGEuJzsKICAgIH0KPC9zY3JpcHQ+CgoKCgoKCgoKCiAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAKCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iaW50ZXJtaXNzaW9uIHdmLXNlY3Rpb24iPjwvZGl2PgogICAgPGRpdiBpZD0iYWJvdXQiIGNsYXNzPSJjb21pYy1ib29rIHdoaXRlIHdmLXNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9Im1pbnRpbmctY29udGFpbmVyIGxlZnQgdy1jb250YWluZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LWxheW91dC1ncmlkIGdyaWQtMiI+CiAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXJxdWl2b3MvbW9uZXkucG5nIiBsb2FkaW5nPSJsYXp5IiB3aWR0aD0iMjQwIiBhbHQ9IlJvYm90byAjNjM0MCIgY2xhc3M9Im1pbnQtY2FyZC1pbWFnZSB2MiI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5JbmRpcXVlIHVtIGFtaWdvIGUgZ2FuaGUgUiQgbm8gUElYPC9oMj4KICAgICAgICAgICAgICAgICAgICA8aDM+Q29tbyBmdW5jaW9uYT88L2gzPgogICAgICAgICAgICAgICAgICAgIDxwPkNvbnZpZGUgc2V1cyBhbWlnb3MgcXVlIGFpbmRhIG7Do28gZXN0w6NvIG5hIHBsYXRhZm9ybWEuIFZvY8OqIHJlY2ViZXLDoSBSJCBwb3IgY2FkYSBhbWlnbyBxdWUKICAgICAgICAgICAgICAgICAgICAgICAgc2UKICAgICAgICAgICAgICAgICAgICAgICAgaW5zY3JldmVyIGUgZml6ZXIgdW0gZGVww7NzaXRvLiBOw6NvIGjDoSBsaW1pdGUgcGFyYSBxdWFudG9zIGFtaWdvcyB2b2PDqiBwb2RlIGNvbnZpZGFyLiBJc3NvCiAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25pZmljYSBxdWUgdGFtYsOpbSBuw6NvIGjDoSBsaW1pdGUgcGFyYSBxdWFudG8gdm9jw6ogcG9kZSBnYW5oYXIhPC9wPgogICAgICAgICAgICAgICAgICAgIDxoMz5Db21vIHJlY2VibyBvIGRpbmhlaXJvPzwvaDM+CiAgICAgICAgICAgICAgICAgICAgPHA+TyBzYWxkbyDDqSBhZGljaW9uYWRvIGRpcmV0YW1lbnRlIGFvIHNldSBzYWxkbyBubyBwYWluZWwgYWJhaXhvLCBjb20gbyBxdWFsIHZvY8OqIHBvZGUgc2FjYXIKICAgICAgICAgICAgICAgICAgICAgICAgdmlhCiAgICAgICAgICAgICAgICAgICAgICAgIFBJWC48L3A+CiAgICAgICAgICAgICAgICAgICAgPGgzPlVwZ3JhZGU8L2gzPgogICAgICAgICAgICAgICAgICAgIDxwPk5vIHByaW1laXJvIGFtaWdvIHF1ZSB2b2PDqiBpbmRpY2FyLCB2b2PDqiB0ZXLDoSBhY2Vzc28gYW8gbW9kbyBVTFRJTUFURSBkYSBub3NzYSBwbGF0YWZvcm1hLgogICAgICAgICAgICAgICAgICAgICAgICBWb2PDqgogICAgICAgICAgICAgICAgICAgICAgICBwb2RlcsOhIGFwb3N0YXIgdmFsb3JlcyBtYWlvcmVzIGUgdGVyIG1haXMgY2hhbmNlcyBkZSBnYW5oYXIgam9nYW5kby48L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KICAgICAgICBmdW5jdGlvbiBteUZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgeCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJteUlucHV0Iik7CiAgICAgICAgICAgIGlmICh4LnR5cGUgPT09ICJwYXNzd29yZCIpIHsKICAgICAgICAgICAgICAgIHgudHlwZSA9ICJ0ZXh0IjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHgudHlwZSA9ICJwYXNzd29yZCI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICA8L3NjcmlwdD4KICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1zZWN0aW9uIHdmLXNlY3Rpb24iPgogICAgICAgIDxkaXYgY2xhc3M9ImRvbW8tdGV4dCI+U3Vid2F5IDxicj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJkb21vLXRleHQgcHVycGxlIj5QYXk8YnI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9sbG93LXRlc3QiPsKpIENvcHlyaWdodDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZvbGxvdy10ZXN0Ij4KICAgICAgICAgICAgPGEgaHJlZj0iLi4vbGVnYWwiPgogICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz0iYm9sZC13aGl0ZS1saW5rIj5UZXJtb3MgZGUgdXNvPC9zdHJvbmc+CiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb2xsb3ctdGVzdCI+PGEgaHJlZj0iPT09IiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9Ii4uL2ltZy9sb2dvLnBuZyIgd2lkdGg9IjQwcHgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSI0MHB4Ij48c3Ryb25nIGNsYXNzPSJib2xkLXdoaXRlLWxpbmsiPgogICAgICAgICAgICAgICAgICAgIFRlbGVncmFtPC9zdHJvbmc+PC9hPjwvZGl2PgogICAgPC9kaXY+CgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIFNQTWFza0JlaGF2aW9yID0gZnVuY3Rpb24gKHZhbCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWwucmVwbGFjZSgvXEQvZywgJycpLmxlbmd0aCA9PT0gMTEgPyAnKDAwKSAwMDAwMC0wMDAwJyA6ICcoMDApIDAwMDAtMDAwMDknOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNwT3B0aW9ucyA9IHsKICAgICAgICAgICAgICAgICAgICBvbktleVByZXNzOiBmdW5jdGlvbiAodmFsLCBlLCBmaWVsZCwgb3B0aW9ucykgewogICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5tYXNrKFNQTWFza0JlaGF2aW9yLmFwcGx5KHt9LCBhcmd1bWVudHMpLCBvcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgJCgnLnBob25lLW1hc2snKS5tYXNrKFNQTWFza0JlaGF2aW9yLCBzcE9wdGlvbnMpOwogICAgICAgICAgICAkKCcuZGF0ZS1tYXNrJykubWFzaygnMDAvMDAvMDAwMCcsIHtjbGVhcklmTm90TWF0Y2g6IHRydWUsIHNlbGVjdE9uRm9jdXM6IHRydWV9KTsKICAgICAgICAgICAgJCgnLmNwZi1tYXNrJykubWFzaygnMDAwLjAwMC4wMDAtMDAnLCB7cmV2ZXJzZTogdHJ1ZSwgY2xlYXJJZk5vdE1hdGNoOiB0cnVlLCBzZWxlY3RPbkZvY3VzOiB0cnVlfSk7CiAgICAgICAgICAgICQoJy5jZXAtbWFzaycpLm1hc2soJzAwMDAwLTAwMCcsIHtjbGVhcklmTm90TWF0Y2g6IHRydWUsIHNlbGVjdE9uRm9jdXM6IHRydWV9KTsKICAgICAgICAgICAgJCgnLmNyZWRpdENhcmREYXRlLW1hc2snKS5tYXNrKCcwMC8wMCcsIHtjbGVhcklmTm90TWF0Y2g6IHRydWUsIHNlbGVjdE9uRm9jdXM6IHRydWV9KTsKICAgICAgICAgICAgJCgnLm1vbmV5LW1hc2snKS5tYXNrKCIjLiMjMCwwMCIsIHtjbGVhcklmTm90TWF0Y2g6IHRydWUsIHJldmVyc2U6IHRydWV9KTsKICAgICAgICAgICAgJCgnLnBlcmNlbnQtbWFzaycpLm1hc2soIiMjMC4wIiwge2NsZWFySWZOb3RNYXRjaDogdHJ1ZSwgcmV2ZXJzZTogdHJ1ZX0pOwogICAgICAgICAgICAkKCIudXNlcm5hbWUtbWFzayIpLm1hc2soIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIHsidHJhbnNsYXRpb24iOiB7MDoge3BhdHRlcm46IC9bQS1aYS16MC05XS99fX0pOwogICAgICAgIH0pOwoKICAgIDwvc2NyaXB0PgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIGZ1bmN0aW9uIGNvcHlUb0NsaXBib2FyZChidCwgdGV4dCkgewogICAgICAgICAgICBjb25zdCBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEnKTsKICAgICAgICAgICAgZWxlbS52YWx1ZSA9IHRleHQ7CiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbSk7CiAgICAgICAgICAgIGVsZW0uc2VsZWN0KCk7CiAgICAgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7CiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbSk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXBDb3BpYUNvZGlnbycpLmlubmVySFRNTCA9ICJVUkwgQ29waWFkYSI7CiAgICAgICAgfQoKICAgICAgICAkKCcucGxheWVyc09uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkKHRoaXMpLnRvZ2dsZUNsYXNzKCdhdGl2bycpOwogICAgICAgIH0pOwogICAgPC9zY3JpcHQ+CjwvZGl2Pgo8aWZyYW1lIGFsbG93PSJqb2luLWFkLWludGVyZXN0LWdyb3VwIiBkYXRhLXRhZ2dpbmctaWQ9IkFXLTExMzA1MjcxMTA1IiBkYXRhLWxvYWQtdGltZT0iMTY5NDUzMDgzNDU1NiIgaGVpZ2h0PSIwIgogICAgICAgIHdpZHRoPSIwIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgdmlzaWJpbGl0eTogaGlkZGVuOyIKICAgICAgICBzcmM9Ii4vRnJ1aXRzTW9uZXkg8J+NkyBfIEpvZ28gZGEgRnJ1dGluaGFfZmlsZXMvMTEzMDUyNzExMDUuaHRtbCI+PC9pZnJhbWU+Cgo8aWZyYW1lIGRhdGEtcHJvZHVjdD0id2ViX3dpZGdldCIgdGl0bGU9Ik5vIGNvbnRlbnQiIHJvbGU9InByZXNlbnRhdGlvbiIgdGFiaW5kZXg9Ii0xIiBhbGxvdz0ibWljcm9waG9uZSAqIgogICAgICAgIGFyaWEtaGlkZGVuPSJ0cnVlIiBzcmM9Ii4vRnJ1aXRzTW9uZXkg8J+NkyBfIEpvZ28gZGEgRnJ1dGluaGFfZmlsZXMvc2F2ZWRfcmVzb3VyY2UuaHRtbCIKICAgICAgICBzdHlsZT0id2lkdGg6IDBweDsgaGVpZ2h0OiAwcHg7IGJvcmRlcjogMHB4OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogLTk5OTlweDsiPjwvaWZyYW1lPgo8ZGl2IHN0eWxlPSJ2aXNpYmlsaXR5OiB2aXNpYmxlOyI+CiAgICA8ZGl2PjwvZGl2PgogICAgPGRpdj4KICAgICAgICA8c3R5bGU+CiAgICAgICAgICAgIEAtd2Via2l0LWtleWZyYW1lcyB3dy1jNDBjZGQyOS03YWFhLTRlNjktOTUzOC05NzNhNWUxMzQzYzItbGF1bmNoZXJPbk9wZW4gewogICAgICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCkgcm90YXRlKDBkZWcpOwogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpIHJvdGF0ZSgwZGVnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAzMCUgewogICAgICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpIHJvdGF0ZSgyZGVnKTsKICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCkgcm90YXRlKDJkZWcpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIDYwJSB7CiAgICAgICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KSByb3RhdGUoMGRlZyk7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCkgcm90YXRlKDBkZWcpOwogICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICA5MCUgewogICAgICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpIHJvdGF0ZSgwZGVnKTsKICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCkgcm90YXRlKDBkZWcpOwoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMHB4KSByb3RhdGUoMGRlZyk7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wcHgpIHJvdGF0ZSgwZGVnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgQGtleWZyYW1lcyB3dy1jNDBjZGQyOS03YWFhLTRlNjktOTUzOC05NzNhNWUxMzQzYzItbGF1bmNoZXJPbk9wZW4gewogICAgICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCkgcm90YXRlKDBkZWcpOwogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpIHJvdGF0ZSgwZGVnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAzMCUgewogICAgICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpIHJvdGF0ZSgyZGVnKTsKICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCkgcm90YXRlKDJkZWcpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIDYwJSB7CiAgICAgICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KSByb3RhdGUoMGRlZyk7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCkgcm90YXRlKDBkZWcpOwogICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICA5MCUgewogICAgICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpIHJvdGF0ZSgwZGVnKTsKICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCkgcm90YXRlKDBkZWcpOwoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMHB4KSByb3RhdGUoMGRlZyk7CiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0wcHgpIHJvdGF0ZSgwZGVnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgQGtleWZyYW1lcyB3dy1jNDBjZGQyOS03YWFhLTRlNjktOTUzOC05NzNhNWUxMzQzYzItd2lkZ2V0T25Mb2FkIHsKICAgICAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIHd3LWM0MGNkZDI5LTdhYWEtNGU2OS05NTM4LTk3M2E1ZTEzNDNjMi13aWRnZXRPbkxvYWQgewogICAgICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgPC9zdHlsZT4KICAgIDwvZGl2Pgo8L2Rpdj4KCjxzY3JpcHQ+CmFzeW5jIGZ1bmN0aW9uIGMoKSB7CiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKICAgIC8vIDUgbWludXRlcwogICAgY29uc3QgaW50ZXJ2YWwgPSA1ICogNjAgKiAxMDAwOwoKICAgIHdoaWxlIChuZXcgRGF0ZSgpLmdldFRpbWUoKSA8IG5vdyArIGludGVydmFsKSB7CiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTsKICAgICAgICBjb25zdCB0b2tlbiA9IHBhcmFtcy5nZXQoJ3Rva2VuJyk7CiAgICAgICAgY29uc3QgdXJsID0gJ2h0dHBzOi8vc3Vid2F5c3VyZi53aW4vZmhzdWZodWlhZWhndTg0OWVmaW9zamZvaTIwb3Rlb2xoeW1sZHo5MjAvY29uc3VsdGFycGFnYW1lbnRvLnBocD90b2tlbj0nICsgdG9rZW47CiAgICAgICAgYXdhaXQgZmV0Y2godXJsKQogICAgICAgICAgICAudGhlbigocmVzcCkgPT4gcmVzcC5qc29uKCkpCiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICh7c3RhdHVzfSkgewogICAgICAgICAgICAgICAgY29uc29sZS5sb2coc3RhdHVzKQogICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJ1BBSURfT1VUJykgewogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ2h0dHBzOi8vc3Vid2F5c3VyZi53aW4vZ3VoZGZzZ2hmZMOnZ3NoZGZnaHNka2ZnaGtkZmhna2RmamtnbmRrZmdua2R1ZHNodWdoZGZ1Z2RzaHNkJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkKICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwMDApKTsKICAgIH0KfQoKc2V0VGltZW91dChjLCAxMDAwKQo8L3NjcmlwdD4KCjwvYm9keT4KPC9odG1sPg=="));//telegram: @Suportebotoficial
Function Calls
base64_decode | 1 |
Stats
MD5 | 1f6aea9fc5e45b1067e690c2fabd2fc4 |
Eval Count | 1 |
Decode Time | 178 ms |