{"id":189,"date":"2026-10-20T17:08:38","date_gmt":"2026-10-20T15:08:38","guid":{"rendered":"https:\/\/vinivers.org\/?page_id=189"},"modified":"2026-11-03T08:53:00","modified_gmt":"2026-11-03T07:53:00","slug":"restaurateur","status":"publish","type":"page","link":"https:\/\/vinivers.org\/?page_id=189","title":{"rendered":"D\u00e9mo : espace restaurateur"},"content":{"rendered":"\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,600;1,9..144,400&#038;family=IBM+Plex+Mono:wght@400;500&#038;family=Karla:wght@400;500;600;700&#038;display=swap\">\n<style>\n.vc {\n  --paper: #f1ebdf;\n  --card: #f8f4ec;\n  --ink: #22261f;\n  --muted: #5f584c;\n  --line: #d6cbb5;\n  --plum: #7a2e35;\n  --plum-soft: #7a2e3514;\n  --leaf: #4b6a2e;\n  --leaf-soft: #4b6a2e18;\n  --warn: #9a5a00;\n  --c-rouge: #8e1f2f; --c-blanc: #cdb84f; --c-orange: #d98a2b; --c-rose: #e39ba6; --c-bulles: #9fb985;\n  --f-display: \"Fraunces\", \"Georgia\", serif;\n  --f-body: \"Karla\", \"Segoe UI\", system-ui, sans-serif;\n  --f-mono: \"IBM Plex Mono\", ui-monospace, \"Consolas\", monospace;\n}\n.vc * { box-sizing: border-box; }\n.vc { margin: 0; }\n.vc {\n  background: var(--paper); color: var(--ink);\n  font: 15px\/1.5 var(--f-body);\n  padding-left: max(16px, env(safe-area-inset-left, 0px));\n  padding-right: max(16px, env(safe-area-inset-right, 0px));\n}\n.vc .wrap { max-width: 720px; margin: 0 auto; padding-block: 24px 56px; display: grid; gap: 28px; }\n.vc .wrap.wide { max-width: 1080px; }\n.vc h1, .vc h2, .vc h3 { font-family: var(--f-display); font-weight: 400; margin: 0; text-wrap: balance; }\n.vc h1 { font-size: clamp(30px, 7vw, 44px); line-height: 1.05; }\n.vc h2 { font-size: 24px; }\n.vc h3 { font-size: 19px; }\n.vc .eyebrow { font: 600 11px\/1 var(--f-body); letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }\n.vc .muted { color: var(--muted); }\n.vc .mono { font-family: var(--f-mono); font-variant-numeric: tabular-nums; }\n.vc a { color: var(--plum); }\n.vc button, .vc input, .vc select, .vc textarea { font: inherit; color: inherit; }\n.vc :focus-visible { outline: 2px solid var(--plum); outline-offset: 2px; }\n.vc .masthead { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; flex-wrap: wrap; border-bottom: 1px solid var(--ink); padding-bottom: 14px; }\n.vc .masthead .where { display: grid; gap: 6px; }\n.vc .demo-tag { font: 500 11px var(--f-mono); color: var(--warn); border: 1px dashed var(--warn); padding: 2px 6px; border-radius: 3px; }\n.vc .chips { display: flex; flex-wrap: wrap; gap: 6px; }\n.vc .chip {\n  border: 1px solid var(--line); background: transparent; border-radius: 3px;\n  padding: 5px 12px; cursor: pointer; font-size: 13px; line-height: 1.2;\n}\n.vc .chip[aria-pressed=\"true\"] { background: var(--ink); color: var(--paper); border-color: var(--ink); }\n.vc .dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 6px; vertical-align: 1px; }\n.vc .dot.rouge { background: var(--c-rouge); }\n.vc .dot.blanc { background: var(--c-blanc); }\n.vc .dot.orange { background: var(--c-orange); }\n.vc .dot.ros\u00e9 { background: var(--c-rose); }\n.vc .dot.bulles { background: var(--c-bulles); }\n.vc .btn {\n  border: 1px solid var(--ink); background: var(--ink); color: var(--paper);\n  padding: 10px 16px; border-radius: 3px; cursor: pointer; font-weight: 600;\n}\n.vc .btn.ghost { background: transparent; color: var(--ink); }\n.vc .btn:disabled { opacity: .5; cursor: progress; }\n.vc .btn.small { padding: 6px 10px; font-size: 13px; font-weight: 500; }\n.vc .somm { background: var(--card); border: 1px solid var(--line); border-radius: 3px; padding: 18px; display: grid; gap: 14px; }\n.vc .somm .row { display: grid; gap: 6px; }\n.vc .somm label.lbl { font-size: 13px; color: var(--muted); }\n.vc .field { width: 100%; padding: 9px 11px; border: 1px solid var(--line); border-radius: 3px; background: var(--paper); }\n.vc .answer { border-left: 3px solid var(--plum); padding: 4px 0 4px 14px; min-height: 1.5em; }\n.vc .answer:empty { display: none; }\n.vc .answer p { margin: 0 0 8px; }\n.vc .answer ul { margin: 0 0 8px; padding-left: 18px; }\n.vc .answer .err { color: var(--warn); }\n.vc .typing::after { content: \"\u258d\"; animation: blink 1s steps(1) infinite; color: var(--plum); }\n@keyframes blink { 50% { opacity: 0; } }\n@media (prefers-reduced-motion: reduce) {\n.vc .typing::after { animation: none; }\n.vc * { scroll-behavior: auto !important; }\n}\n.vc .section-title { display: flex; align-items: baseline; gap: 10px; border-bottom: 1px solid var(--line); padding-bottom: 6px; margin-top: 8px; }\n.vc .wines { display: grid; gap: 0; }\n.vc .wine { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 16px; padding: 14px 0; border-bottom: 1px dotted var(--line); scroll-margin-top: 24px; }\n.vc .wine.pick { background: var(--plum-soft); border-radius: 3px; padding: 14px 12px; margin: 0 -12px; border-bottom-color: transparent; }\n.vc .wine .name { font-family: var(--f-display); font-size: 20px; line-height: 1.15; }\n.vc .wine .dom { font-weight: 600; }\n.vc .wine .meta { color: var(--muted); font-size: 13px; }\n.vc .wine .desc { font-size: 14px; grid-column: 1 \/ -1; }\n.vc .wine .prices { text-align: right; font-family: var(--f-mono); font-variant-numeric: tabular-nums; font-size: 14px; white-space: nowrap; }\n.vc .wine .prices small { display: block; color: var(--muted); font-size: 11px; }\n.vc .labels { grid-column: 1 \/ -1; display: flex; flex-wrap: wrap; gap: 5px; }\n.vc .lab { font-size: 11px; padding: 2px 7px; border-radius: 3px; border: 1px solid var(--line); color: var(--muted); }\n.vc .lab.nat { border-color: transparent; background: var(--leaf-soft); color: var(--leaf); font-weight: 600; }\n.vc .lab.so2 { border-style: dashed; }\n.vc .empty { color: var(--muted); padding: 18px 0; }\n.vc .foot { font-size: 12px; color: var(--muted); display: grid; gap: 4px; border-top: 1px solid var(--line); padding-top: 14px; }\n@media print {\n.vc { background: #fff; color: #000; padding: 0; }\n.vc .no-print { display: none !important; }\n.vc .wrap { padding: 0; max-width: none; gap: 14px; }\n.vc .wine { break-inside: avoid; padding: 8px 0; }\n.vc .wine.pick { background: none; margin: 0; padding: 8px 0; }\n.vc .section-title { break-after: avoid; }\n}\n.vc .ceps { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; font-size: 13px; color: var(--muted); align-items: center; }\n.vc .cep { font: 500 12.5px var(--f-body); color: var(--ink); background: var(--card); border: 1px solid var(--line); border-radius: 3px; padding: 2px 9px 2px 7px; cursor: pointer; display: inline-flex; gap: 5px; align-items: center; }\n.vc .cep:hover { border-color: var(--plum); }\n.vc .cep .dot { width: 7px; height: 7px; margin: 0; }\n.vc dialog.cepfiche { border: 0; padding: 0; width: min(520px, 100vw); max-width: 100vw; border-radius: 3px; background: var(--card); color: var(--ink); box-shadow: 0 24px 60px -24px #000a; }\n.vc dialog.cepfiche::backdrop { background: #22261f77; }\n@media (max-width: 600px) {\n.vc dialog.cepfiche { margin: auto 0 0 0; width: 100vw; border-radius: 3px 3px 0 0; }\n}\n.vc .cepfiche .in { padding: 18px 18px 22px; display: grid; gap: 14px; border-top: 5px solid var(--c, var(--plum)); border-radius: inherit; }\n.vc .cepfiche .hd { display: flex; justify-content: space-between; gap: 12px; align-items: start; }\n.vc .cepfiche h3 { font: 400 30px\/1.05 var(--f-display); margin: 0; }\n.vc .cepfiche .x { font: 500 18px\/1 var(--f-body); width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--line); background: var(--paper); color: var(--ink); cursor: pointer; flex: none; }\n.vc .cepfiche .prof { display: grid; grid-template-columns: 76px 1fr; gap: 6px 12px; align-items: center; font-size: 12.5px; color: var(--muted); }\n.vc .cepfiche .sc { display: grid; grid-template-columns: repeat(5, 1fr); gap: 3px; }\n.vc .cepfiche .sc i { height: 7px; border-radius: 2px; background: var(--line); }\n.vc .cepfiche .sc i.on { background: var(--c, var(--ink)); }\n.vc .cepfiche .ar { display: flex; flex-wrap: wrap; gap: 5px; }\n.vc .cepfiche .ar span { font-size: 12.5px; padding: 2px 9px; border-radius: 3px; background: var(--plum-soft); }\n.vc .cepfiche a.go { font-weight: 600; }\n@media print {\n.vc .cep { border: 0; padding: 0; background: none; }\n.vc .cep .dot { display: none; }\n}\n.vc .cep.terr { background: var(--leaf-soft); border-color: transparent; color: var(--leaf); font-weight: 600; }\n.vc .cepfiche .tx { font-size: 14.5px; line-height: 1.55; margin: 0; }\n.vc .cepfiche .minimap { height: 230px; border-radius: 3px; border: 1px solid var(--line); z-index: 0; }\n.vc .cepfiche .couches { display: flex; gap: 6px; flex-wrap: wrap; }\n.vc .cepfiche .couches button { font: 500 12px var(--f-body); border: 1px solid var(--line); background: var(--paper); color: var(--ink); border-radius: 3px; padding: 3px 10px; cursor: pointer; }\n.vc .cepfiche .couches button[aria-pressed=\"true\"] { background: var(--ink); color: var(--paper); border-color: var(--ink); }\n.vc .cepfiche .src { font-size: 11.5px; color: var(--muted); }\n.vc .carnet-btn { grid-column: 1 \/ -1; justify-self: start; border: 1px dashed var(--plum); background: transparent; color: var(--plum);\n  border-radius: 999px; padding: 4px 12px; font-size: 13px; font-weight: 600; cursor: pointer; }\n.vc .carnet-btn:hover { background: var(--plum-soft); }\n.vc .carnet-btn.au-carnet { border-style: solid; background: var(--plum); color: var(--paper); }\n@media print {\n.vc .carnet-btn { display: none; }\n}\n.vc .grid2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; }\n.vc .panel { background: var(--card); border: 1px solid var(--line); border-radius: 3px; padding: 18px; display: grid; gap: 12px; align-content: start; min-width: 0; }\n.vc .bar { height: 10px; background: var(--line); border-radius: 5px; position: relative; overflow: hidden; }\n.vc .bar i { position: absolute; inset: 0 auto 0 0; background: var(--leaf); border-radius: 5px; }\n.vc .bar b { position: absolute; top: -3px; bottom: -3px; width: 2px; background: var(--ink); }\n.vc .status { font-weight: 600; }\n.vc .status.ok { color: var(--leaf); }\n.vc .status.ko { color: var(--warn); }\n.vc .qr { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; }\n.vc #qr { background: #fff; padding: 8px; border-radius: 3px; line-height: 0; }\n.vc .url { font: 12px var(--f-mono); word-break: break-all; }\n.vc .actions { display: flex; flex-wrap: wrap; gap: 8px; }\n.vc .tablewrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 3px; background: var(--card); }\n.vc table { border-collapse: collapse; width: 100%; min-width: 760px; font-size: 14px; }\n.vc th, .vc td { padding: 9px 10px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }\n.vc th { font: 600 11px var(--f-body); letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }\n.vc tr.off td { opacity: .55; }\n.vc td .cv { font-family: var(--f-display); font-size: 16px; }\n.vc td input[type=number] { width: 78px; padding: 5px 6px; border: 1px solid var(--line); border-radius: 4px; background: var(--paper); font-family: var(--f-mono); }\n.vc .toggle { border: 1px solid var(--line); background: transparent; border-radius: 3px; padding: 3px 10px; font-size: 12px; cursor: pointer; white-space: nowrap; }\n.vc .toggle.on { border-color: var(--leaf); color: var(--leaf); }\n.vc .toggle.out { border-color: var(--warn); color: var(--warn); }\n.vc .form { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; }\n.vc .form label { display: grid; gap: 4px; font-size: 13px; color: var(--muted); }\n.vc .form .full { grid-column: 1 \/ -1; }\n.vc textarea.field { min-height: 120px; resize: vertical; }\n.vc .note { font-size: 12px; color: var(--muted); }\n.vc .msg { font-size: 13px; min-height: 1em; }\n.vc button { display: inline-block; }\n.vc button, .vc input, .vc select, .vc textarea { text-transform: none; letter-spacing: normal; box-shadow: none; min-height: 0; height: auto; line-height: 1.3; margin: 0; }\n.vc h1, .vc h2, .vc h3 { color: var(--ink); text-transform: none; letter-spacing: normal; }\n.vc [hidden] { display: none !important; }\n<\/style>\n<div class=\"vc\">\n<div class=\"wrap wide\">\n  <header class=\"masthead\">\n    <div class=\"where\">\n      <span class=\"eyebrow\" data-i18n=\"eyebrow\">Vinivers \u00b7 espace restaurateur<\/span>\n      <h1 id=\"etab\">\u2026<\/h1>\n      <span class=\"muted\" id=\"ville\"><\/span>\n    <\/div>\n    <div class=\"actions\">\n      <a class=\"btn ghost small\" id=\"voir\" target=\"_blank\" rel=\"noopener\" data-i18n=\"voir\">Voir la carte client<\/a>\n      <a class=\"btn ghost small\" id=\"imprimer\" target=\"_blank\" rel=\"noopener\" data-i18n=\"imprimer\">Imprimer \/ PDF<\/a>\n    <\/div>\n  <\/header>\n\n  <div class=\"grid2\">\n    <section class=\"panel\" aria-labelledby=\"elig-t\">\n      <span class=\"eyebrow\" id=\"elig-t\" data-i18n=\"eligT\">Offre Vinivers<\/span>\n      <div class=\"status\" id=\"elig-status\"><\/div>\n      <div class=\"bar\" aria-hidden=\"true\"><i id=\"elig-bar\"><\/i><b id=\"elig-seuil\"><\/b><\/div>\n      <div class=\"mono muted\" id=\"elig-detail\"><\/div>\n      <p class=\"note\" data-i18n=\"eligNote\">Gratuit pour un \u00e9tablissement inscrit sur Vinivers, avec une fiche mise \u00e0 jour depuis moins d&#8217;un an, et dont la carte compte au moins 50 % de vins nature ; abonnement payant sinon.<\/p>\n    <\/section>\n\n    <section class=\"panel\" aria-labelledby=\"qr-t\">\n      <span class=\"eyebrow\" id=\"qr-t\" data-i18n=\"qrT\">QR code de table<\/span>\n      <div class=\"qr\">\n        <div id=\"qr\"><\/div>\n        <div style=\"display:grid;gap:8px;min-width:0;flex:1\">\n          <span class=\"url\" id=\"url\"><\/span>\n          <p class=\"note\" style=\"margin:0\" data-i18n=\"qrNote\">\u00c0 imprimer sur les chevalets de table. La carte se met \u00e0 jour sans changer le QR code.<\/p>\n        <\/div>\n      <\/div>\n    <\/section>\n  <\/div>\n\n  <section style=\"display:grid;gap:12px\">\n    <div style=\"display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap\">\n      <h2 data-i18n=\"vinsT\">Vins de la carte<\/h2>\n      <div class=\"actions\">\n        <button class=\"btn ghost small\" id=\"export\" data-i18n=\"export\">Exporter (JSON)<\/button>\n        <label class=\"btn ghost small\" for=\"import\" style=\"cursor:pointer\" data-i18n=\"import\">Importer (JSON)<\/label>\n        <input type=\"file\" id=\"import\" accept=\"application\/json\" hidden>\n        <button class=\"btn ghost small\" id=\"reset\" data-i18n=\"reset\">Revenir \u00e0 la carte de d\u00e9mo<\/button>\n      <\/div>\n    <\/div>\n    <div class=\"tablewrap\">\n      <table>\n        <thead><tr><th data-i18n=\"thStatut\">Statut<\/th><th data-i18n=\"thVin\">Vin<\/th><th data-i18n=\"thCouleur\">Couleur<\/th><th data-i18n=\"thNature\">Nature<\/th><th data-i18n=\"thVerre\">Verre<\/th><th data-i18n=\"thBouteille\">Bouteille<\/th><th><\/th><\/tr><\/thead>\n        <tbody id=\"rows\"><\/tbody>\n      <\/table>\n    <\/div>\n    <span class=\"msg\" id=\"msg-table\" aria-live=\"polite\"><\/span>\n  <\/section>\n\n  <div class=\"grid2\">\n    <section class=\"panel\" aria-labelledby=\"add-t\">\n      <h3 id=\"add-t\" data-i18n=\"addT\">Ajouter un vin<\/h3>\n      <form class=\"form\" id=\"add\">\n        <label><span data-i18n=\"fCuvee\">Cuv\u00e9e<\/span><input class=\"field\" id=\"f-cuvee\" required><\/label>\n        <label><span data-i18n=\"fDomaine\">Domaine<\/span><input class=\"field\" id=\"f-domaine\" required><\/label>\n        <label><span data-i18n=\"fAppellation\">Appellation<\/span><input class=\"field\" id=\"f-appellation\" placeholder=\"Vin de France\"><\/label>\n        <label><span data-i18n=\"fRegion\">R\u00e9gion<\/span><input class=\"field\" id=\"f-region\"><\/label>\n        <label><span data-i18n=\"fMillesime\">Mill\u00e9sime<\/span><input class=\"field\" id=\"f-millesime\" type=\"number\" min=\"1900\" max=\"2100\"><\/label>\n        <label><span data-i18n=\"fCouleur\">Couleur<\/span><select class=\"field\" id=\"f-couleur\"><option>rouge<\/option><option>blanc<\/option><option>orange<\/option><option>ros\u00e9<\/option><option>bulles<\/option><\/select><\/label>\n        <label><span data-i18n=\"fCepages\">C\u00e9pages<\/span><input class=\"field\" id=\"f-cepages\"><\/label>\n        <label><span data-i18n=\"fPb\">Prix bouteille (\u20ac)<\/span><input class=\"field\" id=\"f-pb\" type=\"number\" step=\"0.5\" min=\"0\" required><\/label>\n        <label><span data-i18n=\"fPv\">Prix verre (\u20ac)<\/span><input class=\"field\" id=\"f-pv\" type=\"number\" step=\"0.5\" min=\"0\"><\/label>\n        <label><span data-i18n=\"fSo2\">Soufre<\/span><select class=\"field\" id=\"f-so2\"><option>sans sulfites ajout\u00e9s<\/option><option>moins de 30 mg\/L<\/option><option>conventionnel<\/option><\/select><\/label>\n        <label><span data-i18n=\"fLabels\">Labels (virgules)<\/span><input class=\"field\" id=\"f-labels\" placeholder=\"Vin M\u00e9thode Nature, AB\"><\/label>\n        <label style=\"flex-direction:row;display:flex;gap:8px;align-items:center\"><input type=\"checkbox\" id=\"f-nature\" checked> <span data-i18n=\"fNature\">Vin nature<\/span><\/label>\n        <label class=\"full\"><span data-i18n=\"fDesc\">Description courte<\/span><input class=\"field\" id=\"f-desc\" placeholder=\"Sol, vinification, \u00e9levage, profil\" data-i18n-ph=\"phDesc\"><\/label>\n        <div class=\"full\"><button class=\"btn small\" type=\"submit\" data-i18n=\"addBtn\">Ajouter \u00e0 la carte<\/button><\/div>\n      <\/form>\n    <\/section>\n\n    <section class=\"panel\" aria-labelledby=\"ia-t\">\n      <h3 id=\"ia-t\" data-i18n=\"iaT\">Reprendre une carte existante<\/h3>\n      <p class=\"note\" style=\"margin:0\" data-i18n=\"iaNote\">Collez le texte de votre carte actuelle (copi\u00e9 d&#8217;un PDF ou d&#8217;un tableur). Freia en extrait les vins ; v\u00e9rifiez-les avant de les publier.<\/p>\n      <textarea class=\"field\" id=\"ia-txt\" data-i18n-ph=\"iaPh\" placeholder=\"MORGON 2024 \u2013 Dom. des Grillons, \u00ab Petit Caillou \u00bb, sans soufre ajout\u00e9 ....... 8 \u20ac \/ 38 \u20ac\"><\/textarea>\n      <div><button class=\"btn small\" id=\"ia-go\" data-i18n=\"iaGo\">Extraire les vins<\/button><\/div>\n      <span class=\"msg\" id=\"ia-msg\" aria-live=\"polite\"><\/span>\n    <\/section>\n  <\/div>\n\n  <section class=\"panel\" aria-labelledby=\"conf-t\">\n    <div style=\"display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap\">\n      <div>\n        <h3 id=\"conf-t\" data-i18n=\"confT\">V\u00e9rifier ma carte<\/h3>\n        <p class=\"note\" style=\"margin:4px 0 0\" data-i18n=\"confNote\">Freia relit la carte : affichage des prix, labels revendiqu\u00e9s, descriptions au regard de la loi \u00c9vin, coh\u00e9rence des mentions \u00ab nature \u00bb. Aide \u00e0 la relecture, pas un avis juridique.<\/p>\n      <\/div>\n      <button class=\"btn small\" id=\"conf-go\" data-i18n=\"confGo\">Lancer la v\u00e9rification<\/button>\n    <\/div>\n    <div class=\"answer\" id=\"conf-out\" aria-live=\"polite\"><\/div>\n  <\/section>\n<\/div>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/qrcodejs\/1.0.0\/qrcode.min.js\"><\/script>\n<script>(function(){var b=atob(\"d2luZG93LlZDX0lOTElORSA9IHsiY2FydGUiOnsic2x1ZyI6ImRlbW8iLCJldGFibGlzc2VtZW50IjoiTGUgQ29tcHRvaXIgZGVzIExpZXMiLCJ2aWxsZSI6Ikx5b24gMWVyIiwiZGVtbyI6dHJ1ZSwidmluaXZlcnNfaWQiOiJWSU4tREVNTy0wMDAxIiwidmluaXZlcnNfaW5zY3JpdCI6dHJ1ZSwiZmljaGVfbWFqIjoiMjAyNi0wOS0xNCIsIm1lbnRpb25fc2VydmljZSI6IlByaXggbmV0cyBUVEMsIHNlcnZpY2UgY29tcHJpcy4gVmVycmUgOiAxMiBjbC4gQm91dGVpbGxlIDogNzUgY2wgc2F1ZiBtZW50aW9uLiIsInBsYXRzIjpbIkJ1cnJhdGEsIHRvbWF0ZXMgYW5jaWVubmVzIiwiU2F1Y2lzc29uIGRlIEx5b24gcGlzdGFjaMOpIiwiVGFydGFyZSBkZSBixZN1ZiBhdSBjb3V0ZWF1IiwiUG91bGV0IGZlcm1pZXIgcsO0dGksIGp1cyBjb3Jzw6kiLCJEb3MgZGUgY2FiaWxsYXVkLCBiZXVycmUgYmxhbmMiLCJDb210w6kgMjQgbW9pcyIsIlRhcnRlIGZpbmUgYXV4IGFicmljb3RzIl0sInZpbnMiOlt7ImlkIjoidjAxIiwiY3V2ZWUiOiJQZXRpdCBDYWlsbG91IiwiZG9tYWluZSI6IkRvbWFpbmUgZGVzIEdyaWxsb25zIChkw6ltbykiLCJyZWdpb24iOiJCZWF1am9sYWlzIiwiYXBwZWxsYXRpb24iOiJNb3Jnb24iLCJtaWxsZXNpbWUiOjIwMjQsImNvdWxldXIiOiJyb3VnZSIsImNlcGFnZXMiOiJHYW1heSIsInByaXhfYm91dGVpbGxlIjozOCwicHJpeF92ZXJyZSI6OCwibGFiZWxzIjpbIlZpbiBNw6l0aG9kZSBOYXR1cmUiLCJBQiJdLCJzbzIiOiJzYW5zIHN1bGZpdGVzIGFqb3V0w6lzIiwibmF0dXJlIjp0cnVlLCJkaXNwbyI6dHJ1ZSwiZGVzY3JpcHRpb24iOiJNYWPDqXJhdGlvbiBjYXJib25pcXVlLCDDqWxldmFnZSBlbiBjdXZlLiBGcnVpdCByb3VnZSBjcm9xdWFudCwgZmluYWxlIGdyYW5pdGlxdWUuIn0seyJpZCI6InYwMiIsImN1dmVlIjoiTGVzIE1vdHRlcyIsImRvbWFpbmUiOiJMYSBGZXJtZSBkZSBsJ0F1YmFuY2UgKGTDqW1vKSIsInJlZ2lvbiI6IkxvaXJlIiwiYXBwZWxsYXRpb24iOiJBbmpvdSIsIm1pbGxlc2ltZSI6MjAyMywiY291bGV1ciI6ImJsYW5jIiwiY2VwYWdlcyI6IkNoZW5pbiIsInByaXhfYm91dGVpbGxlIjo0NCwicHJpeF92ZXJyZSI6OSwibGFiZWxzIjpbIkFCIiwiRGVtZXRlciJdLCJzbzIiOiJtb2lucyBkZSAzMCBtZy9MIiwibmF0dXJlIjp0cnVlLCJkaXNwbyI6dHJ1ZSwiZGVzY3JpcHRpb24iOiJTY2hpc3RlcywgcHJlc3N1cmFnZSBsZW50LCB1biBhbiBlbiB2aWV1eCBmw7t0cy4gU2VjLCB0ZW5kdSwgbm90ZXMgZGUgY29pbmcuIn0seyJpZCI6InYwMyIsImN1dmVlIjoiUGVhdSBkJ09yYW5nZSIsImRvbWFpbmUiOiJNYXMgVHJhbW9udGFuZSAoZMOpbW8pIiwicmVnaW9uIjoiUm91c3NpbGxvbiIsImFwcGVsbGF0aW9uIjoiVmluIGRlIEZyYW5jZSIsIm1pbGxlc2ltZSI6MjAyNCwiY291bGV1ciI6Im9yYW5nZSIsImNlcGFnZXMiOiJNYWNhYmV1LCBNdXNjYXQgcGV0aXRzIGdyYWlucyIsInByaXhfYm91dGVpbGxlIjo0MiwicHJpeF92ZXJyZSI6bnVsbCwibGFiZWxzIjpbIlZpbiBNw6l0aG9kZSBOYXR1cmUiXSwic28yIjoic2FucyBzdWxmaXRlcyBham91dMOpcyIsIm5hdHVyZSI6dHJ1ZSwiZGlzcG8iOnRydWUsImRlc2NyaXB0aW9uIjoiVHJvaXMgc2VtYWluZXMgZGUgbWFjw6lyYXRpb24gcGVsbGljdWxhaXJlLiDDiWNvcmNlIGQnYWdydW1lLCB0aMOpLCBsw6lnZXIgdGFuaW4uIn0seyJpZCI6InYwNCIsImN1dmVlIjoiUMOpdCdOYXQgUm9zw6kiLCJkb21haW5lIjoiTGVzIFZpZ25lcyBCdWlzc29ubmnDqHJlcyAoZMOpbW8pIiwicmVnaW9uIjoiVG91cmFpbmUiLCJhcHBlbGxhdGlvbiI6IlZpbiBkZSBGcmFuY2UiLCJtaWxsZXNpbWUiOjIwMjQsImNvdWxldXIiOiJidWxsZXMiLCJjZXBhZ2VzIjoiR3JvbGxlYXUsIEdhbWF5IiwicHJpeF9ib3V0ZWlsbGUiOjM0LCJwcml4X3ZlcnJlIjo3LCJsYWJlbHMiOlsiQUIiXSwic28yIjoic2FucyBzdWxmaXRlcyBham91dMOpcyIsIm5hdHVyZSI6dHJ1ZSwiZGlzcG8iOnRydWUsImRlc2NyaXB0aW9uIjoiTcOpdGhvZGUgYW5jZXN0cmFsZSwgbWlzZSBlbiBib3V0ZWlsbGUgZW4gZmluIGRlIGZlcm1lbnRhdGlvbi4gRnJhaXNlIGRlcyBib2lzLCBidWxsZSBmaW5lLiJ9LHsiaWQiOiJ2MDUiLCJjdXZlZSI6IlRlcnJlcyBOb2lyZXMiLCJkb21haW5lIjoiRG9tYWluZSBkdSBSb2NoZXIgQnLDu2zDqSAoZMOpbW8pIiwicmVnaW9uIjoiUmjDtG5lIiwiYXBwZWxsYXRpb24iOiJTYWludC1Kb3NlcGgiLCJtaWxsZXNpbWUiOjIwMjIsImNvdWxldXIiOiJyb3VnZSIsImNlcGFnZXMiOiJTeXJhaCIsInByaXhfYm91dGVpbGxlIjo2MiwicHJpeF92ZXJyZSI6bnVsbCwibGFiZWxzIjpbIkFCIiwiVmluIE3DqXRob2RlIE5hdHVyZSJdLCJzbzIiOiJtb2lucyBkZSAzMCBtZy9MIiwibmF0dXJlIjp0cnVlLCJkaXNwbyI6dHJ1ZSwiZGVzY3JpcHRpb24iOiJHcmFuaXRlLCB2ZW5kYW5nZSBlbnRpw6hyZSwgw6lsZXZhZ2UgZW4gZGVtaS1tdWlkcy4gUG9pdnJlLCBvbGl2ZSBub2lyZSwgdGFuaW5zIGZpbnMuIn0seyJpZCI6InYwNiIsImN1dmVlIjoiQ2xvcyBkdSBQdWl0cyIsImRvbWFpbmUiOiJEb21haW5lIENyZXNzb25uacOocmUgKGTDqW1vKSIsInJlZ2lvbiI6IkJvdXJnb2duZSIsImFwcGVsbGF0aW9uIjoiQm91cmdvZ25lIEFsaWdvdMOpIiwibWlsbGVzaW1lIjoyMDIzLCJjb3VsZXVyIjoiYmxhbmMiLCJjZXBhZ2VzIjoiQWxpZ290w6kiLCJwcml4X2JvdXRlaWxsZSI6MzYsInByaXhfdmVycmUiOjcuNSwibGFiZWxzIjpbIkFCIl0sInNvMiI6Im1vaW5zIGRlIDMwIG1nL0wiLCJuYXR1cmUiOnRydWUsImRpc3BvIjp0cnVlLCJkZXNjcmlwdGlvbiI6IlZpZWlsbGVzIHZpZ25lcywgbGV2dXJlcyBpbmRpZ8OobmVzLiBDaXRyb24sIG5vaXNldHRlIGZyYcOuY2hlLCB0csOocyBkaWdlc3RlLiJ9LHsiaWQiOiJ2MDciLCJjdXZlZSI6IlJvc8OpIGRlIFNhaWduw6llIiwiZG9tYWluZSI6IkNow6J0ZWF1IExhdmFuZGluIChkw6ltbykiLCJyZWdpb24iOiJQcm92ZW5jZSIsImFwcGVsbGF0aW9uIjoiQ8O0dGVzIGRlIFByb3ZlbmNlIiwibWlsbGVzaW1lIjoyMDI0LCJjb3VsZXVyIjoicm9zw6kiLCJjZXBhZ2VzIjoiR3JlbmFjaGUsIENpbnNhdWx0IiwicHJpeF9ib3V0ZWlsbGUiOjMyLCJwcml4X3ZlcnJlIjo2LjUsImxhYmVscyI6WyJIVkUiXSwic28yIjoiY29udmVudGlvbm5lbCIsIm5hdHVyZSI6ZmFsc2UsImRpc3BvIjp0cnVlLCJkZXNjcmlwdGlvbiI6IlByZXNzdXJhZ2UgZGlyZWN0LCBmZXJtZW50YXRpb24gw6AgYmFzc2UgdGVtcMOpcmF0dXJlLiBQw6pjaGUgYmxhbmNoZSwgZmluYWxlIHNhbGluZS4ifSx7ImlkIjoidjA4IiwiY3V2ZWUiOiJWaWVpbGxlcyBWaWduZXMiLCJkb21haW5lIjoiRG9tYWluZSBkZSBNb250Y2xhcmV0IChkw6ltbykiLCJyZWdpb24iOiJCb3JkZWF1eCIsImFwcGVsbGF0aW9uIjoiQ8O0dGVzIGRlIEJvdXJnIiwibWlsbGVzaW1lIjoyMDIwLCJjb3VsZXVyIjoicm91Z2UiLCJjZXBhZ2VzIjoiTWVybG90LCBNYWxiZWMiLCJwcml4X2JvdXRlaWxsZSI6NDYsInByaXhfdmVycmUiOm51bGwsImxhYmVscyI6W10sInNvMiI6ImNvbnZlbnRpb25uZWwiLCJuYXR1cmUiOmZhbHNlLCJkaXNwbyI6dHJ1ZSwiZGVzY3JpcHRpb24iOiJBcmdpbG8tY2FsY2FpcmUsIMOpbGV2YWdlIGVuIGJhcnJpcXVlcy4gRnJ1aXRzIG5vaXJzLCBjYWNhbywgc3RydWN0dXJlIGFtcGxlLiJ9LHsiaWQiOiJ2MDkiLCJjdXZlZSI6IlNhdmFnbmluIE91aWxsw6kiLCJkb21haW5lIjoiTGVzIE1hcm5lcyBCbGV1ZXMgKGTDqW1vKSIsInJlZ2lvbiI6Ikp1cmEiLCJhcHBlbGxhdGlvbiI6IkPDtHRlcyBkdSBKdXJhIiwibWlsbGVzaW1lIjoyMDIyLCJjb3VsZXVyIjoiYmxhbmMiLCJjZXBhZ2VzIjoiU2F2YWduaW4iLCJwcml4X2JvdXRlaWxsZSI6NTgsInByaXhfdmVycmUiOm51bGwsImxhYmVscyI6WyJBQiIsIlZpbiBNw6l0aG9kZSBOYXR1cmUiXSwic28yIjoic2FucyBzdWxmaXRlcyBham91dMOpcyIsIm5hdHVyZSI6dHJ1ZSwiZGlzcG8iOmZhbHNlLCJkZXNjcmlwdGlvbiI6Ik1hcm5lcywgw6lsZXZhZ2Ugb3VpbGzDqSBkZXV4IGFucy4gTm9peCBmcmHDrmNoZSwgY3VycnkgbMOpZ2VyLCBncmFuZGUgdGVuc2lvbi4ifSx7ImlkIjoidjEwIiwiY3V2ZWUiOiJDYXJpZ25hbiBkZSBDb3RlYXUiLCJkb21haW5lIjoiRG9tYWluZSBTYXV2YWdpbmUgKGTDqW1vKSIsInJlZ2lvbiI6Ikxhbmd1ZWRvYyIsImFwcGVsbGF0aW9uIjoiVmluIGRlIEZyYW5jZSIsIm1pbGxlc2ltZSI6MjAyMywiY291bGV1ciI6InJvdWdlIiwiY2VwYWdlcyI6IkNhcmlnbmFuIiwicHJpeF9ib3V0ZWlsbGUiOjMzLCJwcml4X3ZlcnJlIjo2LjUsImxhYmVscyI6WyJWaW4gTcOpdGhvZGUgTmF0dXJlIiwiQUIiXSwic28yIjoic2FucyBzdWxmaXRlcyBham91dMOpcyIsIm5hdHVyZSI6dHJ1ZSwiZGlzcG8iOnRydWUsImRlc2NyaXB0aW9uIjoiVmlnbmVzIGNlbnRlbmFpcmVzIHN1ciBzY2hpc3RlLCBncmFwcGVzIGVudGnDqHJlcy4gR2FycmlndWUsIGNlcmlzZSBub2lyZSwgc291cGxlLiJ9LHsiaWQiOiJ2MTEiLCJjdXZlZSI6Ikdld3VyeicgZW4gTGliZXJ0w6kiLCJkb21haW5lIjoiRG9tYWluZSBIdW1tZWwtS8WTbmlnIChkw6ltbykiLCJyZWdpb24iOiJBbHNhY2UiLCJhcHBlbGxhdGlvbiI6IkFsc2FjZSIsIm1pbGxlc2ltZSI6MjAyMywiY291bGV1ciI6Im9yYW5nZSIsImNlcGFnZXMiOiJHZXd1cnp0cmFtaW5lciIsInByaXhfYm91dGVpbGxlIjo0MCwicHJpeF92ZXJyZSI6bnVsbCwibGFiZWxzIjpbIkRlbWV0ZXIiXSwic28yIjoibW9pbnMgZGUgMzAgbWcvTCIsIm5hdHVyZSI6dHJ1ZSwiZGlzcG8iOnRydWUsImRlc2NyaXB0aW9uIjoiRGl4IGpvdXJzIHN1ciBwZWF1eC4gUm9zZSwgbGl0Y2hpLCBzZWMgZXQgbMOpZ8OocmVtZW50IHRhbm5pcXVlLiJ9XX0sInVybENhcnRlIjoiaHR0cHM6Ly92aW5pdmVycy5vcmcvP3BhZ2VfaWQ9MTg4IiwiaTE4biI6eyJfbm90ZSI6IlRyYWR1Y3Rpb25zIGRlcyB0ZXh0ZXMgZGUgY2FydGVzL2RlbW8uanNvbiAoY2zDqSA6IHRleHRlIGZyYW7Dp2FpcyBleGFjdCkuIE5vbXMgZGUgdmlucywgZG9tYWluZXMsIGFwcGVsbGF0aW9ucyBldCBjw6lwYWdlcyBub24gdHJhZHVpdHMuIiwiZW4iOnsiTHlvbiAxZXIiOiJMeW9uLCAxc3QgYXJyb25kaXNzZW1lbnQiLCJQcml4IG5ldHMgVFRDLCBzZXJ2aWNlIGNvbXByaXMuIFZlcnJlIDogMTIgY2wuIEJvdXRlaWxsZSA6IDc1IGNsIHNhdWYgbWVudGlvbi4iOiJQcmljZXMgaW5jbHVkZSBWQVQgYW5kIHNlcnZpY2UuIEdsYXNzOiAxMiBjbC4gQm90dGxlOiA3NSBjbCB1bmxlc3Mgb3RoZXJ3aXNlIHN0YXRlZC4iLCJCdXJyYXRhLCB0b21hdGVzIGFuY2llbm5lcyI6IkJ1cnJhdGEsIGhlaXJsb29tIHRvbWF0b2VzIiwiU2F1Y2lzc29uIGRlIEx5b24gcGlzdGFjaMOpIjoiTHlvbiBzYXVjaXNzb24gd2l0aCBwaXN0YWNoaW9zIiwiVGFydGFyZSBkZSBixZN1ZiBhdSBjb3V0ZWF1IjoiSGFuZC1jdXQgYmVlZiB0YXJ0YXJlIiwiUG91bGV0IGZlcm1pZXIgcsO0dGksIGp1cyBjb3Jzw6kiOiJSb2FzdCBmcmVlLXJhbmdlIGNoaWNrZW4sIHJpY2gganVzIiwiRG9zIGRlIGNhYmlsbGF1ZCwgYmV1cnJlIGJsYW5jIjoiQ29kIGxvaW4sIGJldXJyZSBibGFuYyIsIkNvbXTDqSAyNCBtb2lzIjoiMjQtbW9udGggQ29tdMOpIiwiVGFydGUgZmluZSBhdXggYWJyaWNvdHMiOiJUaGluIGFwcmljb3QgdGFydCIsIk1hY8OpcmF0aW9uIGNhcmJvbmlxdWUsIMOpbGV2YWdlIGVuIGN1dmUuIEZydWl0IHJvdWdlIGNyb3F1YW50LCBmaW5hbGUgZ3Jhbml0aXF1ZS4iOiJDYXJib25pYyBtYWNlcmF0aW9uLCBhZ2VkIGluIHRhbmsuIENydW5jaHkgcmVkIGZydWl0LCBncmFuaXRpYyBmaW5pc2guIiwiU2NoaXN0ZXMsIHByZXNzdXJhZ2UgbGVudCwgdW4gYW4gZW4gdmlldXggZsO7dHMuIFNlYywgdGVuZHUsIG5vdGVzIGRlIGNvaW5nLiI6IlNjaGlzdCwgc2xvdyBwcmVzc2luZywgYSB5ZWFyIGluIG9sZCBiYXJyZWxzLiBEcnkgYW5kIHRhdXQsIHdpdGggbm90ZXMgb2YgcXVpbmNlLiIsIlRyb2lzIHNlbWFpbmVzIGRlIG1hY8OpcmF0aW9uIHBlbGxpY3VsYWlyZS4gw4ljb3JjZSBkJ2FncnVtZSwgdGjDqSwgbMOpZ2VyIHRhbmluLiI6IlRocmVlIHdlZWtzIG9mIHNraW4gY29udGFjdC4gQ2l0cnVzIHBlZWwsIHRlYSwgbGlnaHQgdGFubmluLiIsIk3DqXRob2RlIGFuY2VzdHJhbGUsIG1pc2UgZW4gYm91dGVpbGxlIGVuIGZpbiBkZSBmZXJtZW50YXRpb24uIEZyYWlzZSBkZXMgYm9pcywgYnVsbGUgZmluZS4iOiJBbmNlc3RyYWwgbWV0aG9kLCBib3R0bGVkIGFzIGZlcm1lbnRhdGlvbiBmaW5pc2hlcy4gV2lsZCBzdHJhd2JlcnJ5LCBmaW5lIGJ1YmJsZXMuIiwiR3Jhbml0ZSwgdmVuZGFuZ2UgZW50acOocmUsIMOpbGV2YWdlIGVuIGRlbWktbXVpZHMuIFBvaXZyZSwgb2xpdmUgbm9pcmUsIHRhbmlucyBmaW5zLiI6IkdyYW5pdGUsIHdob2xlIGJ1bmNoZXMsIGFnZWQgaW4gZGVtaS1tdWlkcy4gUGVwcGVyLCBibGFjayBvbGl2ZSwgZmluZSB0YW5uaW5zLiIsIlZpZWlsbGVzIHZpZ25lcywgbGV2dXJlcyBpbmRpZ8OobmVzLiBDaXRyb24sIG5vaXNldHRlIGZyYcOuY2hlLCB0csOocyBkaWdlc3RlLiI6Ik9sZCB2aW5lcywgbmF0aXZlIHllYXN0cy4gTGVtb24sIGZyZXNoIGhhemVsbnV0LCB2ZXJ5IGVhc3kgZHJpbmtpbmcuIiwiUHJlc3N1cmFnZSBkaXJlY3QsIGZlcm1lbnRhdGlvbiDDoCBiYXNzZSB0ZW1ww6lyYXR1cmUuIFDDqmNoZSBibGFuY2hlLCBmaW5hbGUgc2FsaW5lLiI6IkRpcmVjdCBwcmVzc2luZywgbG93LXRlbXBlcmF0dXJlIGZlcm1lbnRhdGlvbi4gV2hpdGUgcGVhY2gsIHNhbGluZSBmaW5pc2guIiwiQXJnaWxvLWNhbGNhaXJlLCDDqWxldmFnZSBlbiBiYXJyaXF1ZXMuIEZydWl0cyBub2lycywgY2FjYW8sIHN0cnVjdHVyZSBhbXBsZS4iOiJDbGF5IGFuZCBsaW1lc3RvbmUsIGFnZWQgaW4gYmFycmlxdWVzLiBCbGFjayBmcnVpdCwgY29jb2EsIGJyb2FkIHN0cnVjdHVyZS4iLCJNYXJuZXMsIMOpbGV2YWdlIG91aWxsw6kgZGV1eCBhbnMuIE5vaXggZnJhw65jaGUsIGN1cnJ5IGzDqWdlciwgZ3JhbmRlIHRlbnNpb24uIjoiTWFybCwgdHdvIHllYXJzJyB0b3BwZWQtdXAgYWdlaW5nLiBGcmVzaCB3YWxudXQsIGEgaGludCBvZiBjdXJyeSwgZ3JlYXQgdGVuc2lvbi4iLCJWaWduZXMgY2VudGVuYWlyZXMgc3VyIHNjaGlzdGUsIGdyYXBwZXMgZW50acOocmVzLiBHYXJyaWd1ZSwgY2VyaXNlIG5vaXJlLCBzb3VwbGUuIjoiSHVuZHJlZC15ZWFyLW9sZCB2aW5lcyBvbiBzY2hpc3QsIHdob2xlIGJ1bmNoZXMuIEdhcnJpZ3VlLCBibGFjayBjaGVycnksIHN1cHBsZS4iLCJEaXggam91cnMgc3VyIHBlYXV4LiBSb3NlLCBsaXRjaGksIHNlYyBldCBsw6lnw6hyZW1lbnQgdGFubmlxdWUuIjoiVGVuIGRheXMgb24gdGhlIHNraW5zLiBSb3NlLCBseWNoZWUsIGRyeSBhbmQgbGlnaHRseSB0YW5uaWMuIn0sImRhIjp7Ikx5b24gMWVyIjoiTHlvbiwgMS4gYXJyb25kaXNzZW1lbnQiLCJQcml4IG5ldHMgVFRDLCBzZXJ2aWNlIGNvbXByaXMuIFZlcnJlIDogMTIgY2wuIEJvdXRlaWxsZSA6IDc1IGNsIHNhdWYgbWVudGlvbi4iOiJBbGxlIHByaXNlciBlciBpbmtsLiBtb21zIG9nIHNlcnZpY2UuIEdsYXM6IDEyIGNsLiBGbGFza2U6IDc1IGNsLCBtZWRtaW5kcmUgYW5kZXQgZXIgYW5naXZldC4iLCJCdXJyYXRhLCB0b21hdGVzIGFuY2llbm5lcyI6IkJ1cnJhdGEgbWVkIGdhbWxlIHRvbWF0c29ydGVyIiwiU2F1Y2lzc29uIGRlIEx5b24gcGlzdGFjaMOpIjoiTHlvbi1zcGVnZXDDuGxzZSBtZWQgcGlzdGFjaWUiLCJUYXJ0YXJlIGRlIGLFk3VmIGF1IGNvdXRlYXUiOiJIw6VuZHNrw6VyZXQgb2tzZXRhdGFyIiwiUG91bGV0IGZlcm1pZXIgcsO0dGksIGp1cyBjb3Jzw6kiOiJPdm5zdGVndCBmcmlsYW5kc2t5bGxpbmcgbWVkIGtyYWZ0aWcgc2t5IiwiRG9zIGRlIGNhYmlsbGF1ZCwgYmV1cnJlIGJsYW5jIjoiVG9yc2tlcnlnIG1lZCBiZXVycmUgYmxhbmMiLCJDb210w6kgMjQgbW9pcyI6IkNvbXTDqSBsYWdyZXQgaSAyNCBtw6VuZWRlciIsIlRhcnRlIGZpbmUgYXV4IGFicmljb3RzIjoiVHluZCBhYnJpa29zdMOmcnRlIiwiTWFjw6lyYXRpb24gY2FyYm9uaXF1ZSwgw6lsZXZhZ2UgZW4gY3V2ZS4gRnJ1aXQgcm91Z2UgY3JvcXVhbnQsIGZpbmFsZSBncmFuaXRpcXVlLiI6Ikt1bHN5cmVtYWNlcmF0aW9uLCBsYWdyZXQgcMOlIHRhbmsuIFNwcsO4ZCByw7hkIGZydWd0LCBncmFuaXRwcsOmZ2V0IGZpbmlzaC4iLCJTY2hpc3RlcywgcHJlc3N1cmFnZSBsZW50LCB1biBhbiBlbiB2aWV1eCBmw7t0cy4gU2VjLCB0ZW5kdSwgbm90ZXMgZGUgY29pbmcuIjoiU2tpZmVyLCBsYW5nc29tIHByZXNuaW5nLCBldCDDpXIgcMOlIGdhbWxlIGZhZGUuIFTDuHIgb2cgc3RyYW0gbWVkIG5vdGVyIGFmIGt2w6ZkZS4iLCJUcm9pcyBzZW1haW5lcyBkZSBtYWPDqXJhdGlvbiBwZWxsaWN1bGFpcmUuIMOJY29yY2UgZCdhZ3J1bWUsIHRow6ksIGzDqWdlciB0YW5pbi4iOiJUcmUgdWdlcnMgc2thbG1hY2VyYXRpb24uIENpdHJ1c3NrYWwsIHRlLCBsZXQgdGFubmluLiIsIk3DqXRob2RlIGFuY2VzdHJhbGUsIG1pc2UgZW4gYm91dGVpbGxlIGVuIGZpbiBkZSBmZXJtZW50YXRpb24uIEZyYWlzZSBkZXMgYm9pcywgYnVsbGUgZmluZS4iOiJNw6l0aG9kZSBhbmNlc3RyYWxlLCB0YXBwZXQgcMOlIGZsYXNrZSBzaWRzdCBpIGfDpnJpbmdlbi4gU2tvdmpvcmRiw6ZyLCBmaW5lIGJvYmxlci4iLCJHcmFuaXRlLCB2ZW5kYW5nZSBlbnRpw6hyZSwgw6lsZXZhZ2UgZW4gZGVtaS1tdWlkcy4gUG9pdnJlLCBvbGl2ZSBub2lyZSwgdGFuaW5zIGZpbnMuIjoiR3Jhbml0LCBoZWxlIGtsYXNlciwgbGFncmV0IHDDpSBkZW1pLW11aWRzLiBQZWJlciwgc29ydCBvbGl2ZW4sIGZpbmUgdGFubmluZXIuIiwiVmllaWxsZXMgdmlnbmVzLCBsZXZ1cmVzIGluZGlnw6huZXMuIENpdHJvbiwgbm9pc2V0dGUgZnJhw65jaGUsIHRyw6hzIGRpZ2VzdGUuIjoiR2FtbGUgdmluc3Rva2tlLCB2aWxkZ8Omci4gQ2l0cm9uLCBmcmlzayBoYXNzZWxuw7hkLCBtZWdldCBsZXQgYXQgZHJpa2tlLiIsIlByZXNzdXJhZ2UgZGlyZWN0LCBmZXJtZW50YXRpb24gw6AgYmFzc2UgdGVtcMOpcmF0dXJlLiBQw6pjaGUgYmxhbmNoZSwgZmluYWxlIHNhbGluZS4iOiJEaXJla3RlIHByZXNuaW5nLCBnw6ZyaW5nIHZlZCBsYXYgdGVtcGVyYXR1ci4gSHZpZCBmZXJza2VuLCBzYWx0IGZpbmlzaC4iLCJBcmdpbG8tY2FsY2FpcmUsIMOpbGV2YWdlIGVuIGJhcnJpcXVlcy4gRnJ1aXRzIG5vaXJzLCBjYWNhbywgc3RydWN0dXJlIGFtcGxlLiI6IkxlciBvZyBrYWxrLCBsYWdyZXQgcMOlIGJhcnJpcXVlLiBNw7hya2UgYsOmciwga2FrYW8sIGZ5bGRpZyBzdHJ1a3R1ci4iLCJNYXJuZXMsIMOpbGV2YWdlIG91aWxsw6kgZGV1eCBhbnMuIE5vaXggZnJhw65jaGUsIGN1cnJ5IGzDqWdlciwgZ3JhbmRlIHRlbnNpb24uIjoiTWVyZ2VsLCB0byDDpXJzIGxhZ3JpbmcgcMOlIG9wZnlsZHRlIGZhZGUuIEZyaXNrIHZhbG7DuGQsIGV0IHN0cmVqZiBhZiBrYXJyeSwgc3RvciBzcMOmbmRpbmcuIiwiVmlnbmVzIGNlbnRlbmFpcmVzIHN1ciBzY2hpc3RlLCBncmFwcGVzIGVudGnDqHJlcy4gR2FycmlndWUsIGNlcmlzZSBub2lyZSwgc291cGxlLiI6Ikh1bmRyZWTDpXJpZ2Ugdmluc3Rva2tlIHDDpSBza2lmZXIsIGhlbGUga2xhc2VyLiBHYXJyaWd1ZSwgc29ydGUga2lyc2Viw6ZyLCBibMO4ZC4iLCJEaXggam91cnMgc3VyIHBlYXV4LiBSb3NlLCBsaXRjaGksIHNlYyBldCBsw6lnw6hyZW1lbnQgdGFubmlxdWUuIjoiVGkgZGFnZSBww6Ugc2thbGxlcm5lLiBSb3NlLCBsaXRjaGksIHTDuHIgb2cgbGV0IHRhbm5pbmhvbGRpZy4ifSwiZXMiOnsiTHlvbiAxZXIiOiJMeW9uLCBkaXN0cml0byAxIiwiUHJpeCBuZXRzIFRUQywgc2VydmljZSBjb21wcmlzLiBWZXJyZSA6IDEyIGNsLiBCb3V0ZWlsbGUgOiA3NSBjbCBzYXVmIG1lbnRpb24uIjoiUHJlY2lvcyBjb24gSVZBIHkgc2VydmljaW8gaW5jbHVpZG9zLiBDb3BhOiAxMiBjbC4gQm90ZWxsYTogNzUgY2wgc2Fsdm8gaW5kaWNhY2nDs24gY29udHJhcmlhLiIsIkJ1cnJhdGEsIHRvbWF0ZXMgYW5jaWVubmVzIjoiQnVycmF0YSBjb24gdG9tYXRlcyBkZSB2YXJpZWRhZGVzIGFudGlndWFzIiwiU2F1Y2lzc29uIGRlIEx5b24gcGlzdGFjaMOpIjoiU2FsY2hpY2jDs24gZGUgTHlvbiBjb24gcGlzdGFjaG9zIiwiVGFydGFyZSBkZSBixZN1ZiBhdSBjb3V0ZWF1IjoiU3RlYWsgdGFydGFyIGNvcnRhZG8gYSBjdWNoaWxsbyIsIlBvdWxldCBmZXJtaWVyIHLDtHRpLCBqdXMgY29yc8OpIjoiUG9sbG8gZGUgY29ycmFsIGFzYWRvIGNvbiBzdSBqdWdvIiwiRG9zIGRlIGNhYmlsbGF1ZCwgYmV1cnJlIGJsYW5jIjoiTG9tbyBkZSBiYWNhbGFvIGNvbiBiZXVycmUgYmxhbmMiLCJDb210w6kgMjQgbW9pcyI6IkNvbXTDqSBjdXJhZG8gMjQgbWVzZXMiLCJUYXJ0ZSBmaW5lIGF1eCBhYnJpY290cyI6IlRhcnRhIGZpbmEgZGUgYWxiYXJpY29xdWUiLCJNYWPDqXJhdGlvbiBjYXJib25pcXVlLCDDqWxldmFnZSBlbiBjdXZlLiBGcnVpdCByb3VnZSBjcm9xdWFudCwgZmluYWxlIGdyYW5pdGlxdWUuIjoiTWFjZXJhY2nDs24gY2FyYsOzbmljYSwgY3JpYW56YSBlbiBkZXDDs3NpdG8uIEZydXRhIHJvamEgY3J1amllbnRlLCBmaW5hbCBncmFuw610aWNvLiIsIlNjaGlzdGVzLCBwcmVzc3VyYWdlIGxlbnQsIHVuIGFuIGVuIHZpZXV4IGbDu3RzLiBTZWMsIHRlbmR1LCBub3RlcyBkZSBjb2luZy4iOiJQaXphcnJhcywgcHJlbnNhZG8gbGVudG8sIHVuIGHDsW8gZW4gYmFycmljYXMgdmllamFzLiBTZWNvIHkgdGVuc28sIGNvbiBub3RhcyBkZSBtZW1icmlsbG8uIiwiVHJvaXMgc2VtYWluZXMgZGUgbWFjw6lyYXRpb24gcGVsbGljdWxhaXJlLiDDiWNvcmNlIGQnYWdydW1lLCB0aMOpLCBsw6lnZXIgdGFuaW4uIjoiVHJlcyBzZW1hbmFzIGRlIG1hY2VyYWNpw7NuIGNvbiBsYXMgcGllbGVzLiBQaWVsIGRlIGPDrXRyaWNvcywgdMOpLCB0YW5pbm8gbGlnZXJvLiIsIk3DqXRob2RlIGFuY2VzdHJhbGUsIG1pc2UgZW4gYm91dGVpbGxlIGVuIGZpbiBkZSBmZXJtZW50YXRpb24uIEZyYWlzZSBkZXMgYm9pcywgYnVsbGUgZmluZS4iOiJNw6l0b2RvIGFuY2VzdHJhbCwgZW1ib3RlbGxhZG8gYWwgZmluYWwgZGUgbGEgZmVybWVudGFjacOzbi4gRnJlc2Egc2lsdmVzdHJlLCBidXJidWphIGZpbmEuIiwiR3Jhbml0ZSwgdmVuZGFuZ2UgZW50acOocmUsIMOpbGV2YWdlIGVuIGRlbWktbXVpZHMuIFBvaXZyZSwgb2xpdmUgbm9pcmUsIHRhbmlucyBmaW5zLiI6IkdyYW5pdG8sIHJhY2ltbyBlbnRlcm8sIGNyaWFuemEgZW4gZGVtaS1tdWlkcy4gUGltaWVudGEsIGFjZWl0dW5hIG5lZ3JhLCB0YW5pbm9zIGZpbm9zLiIsIlZpZWlsbGVzIHZpZ25lcywgbGV2dXJlcyBpbmRpZ8OobmVzLiBDaXRyb24sIG5vaXNldHRlIGZyYcOuY2hlLCB0csOocyBkaWdlc3RlLiI6IlZpw7FhcyB2aWVqYXMsIGxldmFkdXJhcyBhdXTDs2N0b25hcy4gTGltw7NuLCBhdmVsbGFuYSBmcmVzY2EsIG11eSBmw6FjaWwgZGUgYmViZXIuIiwiUHJlc3N1cmFnZSBkaXJlY3QsIGZlcm1lbnRhdGlvbiDDoCBiYXNzZSB0ZW1ww6lyYXR1cmUuIFDDqmNoZSBibGFuY2hlLCBmaW5hbGUgc2FsaW5lLiI6IlByZW5zYWRvIGRpcmVjdG8sIGZlcm1lbnRhY2nDs24gYSBiYWphIHRlbXBlcmF0dXJhLiBNZWxvY290w7NuIGJsYW5jbywgZmluYWwgc2FsaW5vLiIsIkFyZ2lsby1jYWxjYWlyZSwgw6lsZXZhZ2UgZW4gYmFycmlxdWVzLiBGcnVpdHMgbm9pcnMsIGNhY2FvLCBzdHJ1Y3R1cmUgYW1wbGUuIjoiU3VlbG9zIGFyY2lsbG8tY2FsY8OhcmVvcywgY3JpYW56YSBlbiBiYXJyaWNhLiBGcnV0YSBuZWdyYSwgY2FjYW8sIGVzdHJ1Y3R1cmEgYW1wbGlhLiIsIk1hcm5lcywgw6lsZXZhZ2Ugb3VpbGzDqSBkZXV4IGFucy4gTm9peCBmcmHDrmNoZSwgY3VycnkgbMOpZ2VyLCBncmFuZGUgdGVuc2lvbi4iOiJNYXJnYXMsIGRvcyBhw7FvcyBkZSBjcmlhbnphIGNvbiByZWxsZW5hZG8gZGUgYmFycmljYXMgKG91aWxsw6kpLiBOdWV6IGZyZXNjYSwgdW4gdG9xdWUgZGUgY3VycnksIGdyYW4gdGVuc2nDs24uIiwiVmlnbmVzIGNlbnRlbmFpcmVzIHN1ciBzY2hpc3RlLCBncmFwcGVzIGVudGnDqHJlcy4gR2FycmlndWUsIGNlcmlzZSBub2lyZSwgc291cGxlLiI6IlZpw7FhcyBjZW50ZW5hcmlhcyBzb2JyZSBwaXphcnJhLCByYWNpbW9zIGVudGVyb3MuIEdhcnJpZ2EsIGNlcmV6YSBuZWdyYSwgc3VhdmUuIiwiRGl4IGpvdXJzIHN1ciBwZWF1eC4gUm9zZSwgbGl0Y2hpLCBzZWMgZXQgbMOpZ8OocmVtZW50IHRhbm5pcXVlLiI6IkRpZXogZMOtYXMgY29uIGxhcyBwaWVsZXMuIFJvc2EsIGxpY2hpLCBzZWNvIHkgbGlnZXJhbWVudGUgdMOhbmljby4ifX19Ow==\");var s=document.createElement(\"script\");s.text=new TextDecoder().decode(Uint8Array.from(b,function(c){return c.charCodeAt(0)}));document.currentScript.after(s);})();<\/script>\n<script>(function(){var b=atob(\"Ci8vIENhcnRlIGRlcyB2aW5zIFZpbml2ZXJzIDogZm9uY3Rpb25zIHBhcnRhZ8OpZXMgcGFyIGxhIGNhcnRlIGNsaWVudCAoaW5kZXguaHRtbCkKLy8gZXQgbCdlc3BhY2UgcmVzdGF1cmF0ZXVyIChhZG1pbi5odG1sKS4KLy8gUHJvdG90eXBlIDogbGEgY2FydGUgZXN0IGx1ZSBkYW5zIGNhcnRlcy88c2x1Zz4uanNvbiwgcHVpcyBzdXJjaGFyZ8OpZSBwYXIgbGEKLy8gdmVyc2lvbiBlbnJlZ2lzdHLDqWUgZGFucyBsZSBuYXZpZ2F0ZXVyIChsb2NhbFN0b3JhZ2UpIGRlcHVpcyBsJ2VzcGFjZSByZXN0YXVyYXRldXIuCmNvbnN0IFZDID0gKCgpID0+IHsKICAvLyBGcmVpYVNlcnZlciwgcmVsYXnDqSBwYXIgc2VydmUucHkgc291cyAvZnJlaWEgKG3Dqm1lIG9yaWdpbmUgcXVlIGxhIHBhZ2UsIGRvbmMgcGFzIGRlIENPUlMpLgogIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMobG9jYXRpb24uc2VhcmNoKTsKICAvLyBMYW5ndWUgOiB3aW5kb3cuVlZfTEFORyAocGFnZSBXb3JkUHJlc3MgZCd1bmUgbGFuZ3VlKSwgc2lub24gP2xhbmc9eHgsIHNpbm9uIDxodG1sIGxhbmc+LCBzaW5vbiBmci4KICBjb25zdCBMQU5HUyA9IFsiZnIiLCAiZW4iLCAiZGEiLCAiZXMiXTsKICBjb25zdCBMT0NBTEVTID0geyBmcjogImZyLUZSIiwgZW46ICJlbi1HQiIsIGRhOiAiZGEtREsiLCBlczogImVzLUVTIiB9OwogIGNvbnN0IG9rTGFuZyA9IChsKSA9PiB7IGwgPSBTdHJpbmcobCB8fCAiIikuc2xpY2UoMCwgMikudG9Mb3dlckNhc2UoKTsgcmV0dXJuIExBTkdTLmluY2x1ZGVzKGwpID8gbCA6IG51bGw7IH07CiAgbGV0IExBTkcgPSBva0xhbmcod2luZG93LlZWX0xBTkcpIHx8IG9rTGFuZyhwYXJhbXMuZ2V0KCJsYW5nIikpIHx8IG9rTGFuZyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubGFuZykgfHwgImZyIjsKICBjb25zdCBzZXRMYW5nID0gKGwpID0+IHsgTEFORyA9IG9rTGFuZyhsKSB8fCBMQU5HOyByZXR1cm4gTEFORzsgfTsKICAvLyBUZXh0ZXMgY29tbXVucyDDoCBsYSBjYXJ0ZSBjbGllbnQgZXQgw6AgbCdlc3BhY2UgcmVzdGF1cmF0ZXVyLgogIGNvbnN0IFRYID0gewogICAgZnI6IHsgdmVycmU6ICJsZSB2ZXJyZSIsIGJvdXRlaWxsZTogImxhIGJvdXRlaWxsZSIsIHRlcnJvaXI6ICLim7AgVGVycm9pciIsCiAgICAgIHNvMjogeyAic2FucyBzdWxmaXRlcyBham91dMOpcyI6ICJzYW5zIHN1bGZpdGVzIGFqb3V0w6lzIiwgIm1vaW5zIGRlIDMwIG1nL0wiOiAibW9pbnMgZGUgMzAgbWcvTCIsICJjb252ZW50aW9ubmVsIjogImNvbnZlbnRpb25uZWwiIH0sCiAgICAgIGludHJvdXZhYmxlOiAocykgPT4gYENhcnRlIMKrICR7c30gwrsgaW50cm91dmFibGUgKGNhcnRlcy8ke3N9Lmpzb24pLmAsIGZyZWlhS286IChuKSA9PiBgRnJlaWFTZXJ2ZXIgYSByw6lwb25kdSAke259YCB9LAogICAgZW46IHsgdmVycmU6ICJwZXIgZ2xhc3MiLCBib3V0ZWlsbGU6ICJwZXIgYm90dGxlIiwgdGVycm9pcjogIuKbsCBUZXJyb2lyIiwKICAgICAgc28yOiB7ICJzYW5zIHN1bGZpdGVzIGFqb3V0w6lzIjogIm5vIGFkZGVkIHN1bHBoaXRlcyIsICJtb2lucyBkZSAzMCBtZy9MIjogInVuZGVyIDMwIG1nL0wiLCAiY29udmVudGlvbm5lbCI6ICJjb252ZW50aW9uYWwiIH0sCiAgICAgIGludHJvdXZhYmxlOiAocykgPT4gYFdpbmUgbGlzdCDigJwke3N94oCdIG5vdCBmb3VuZCAoY2FydGVzLyR7c30uanNvbikuYCwgZnJlaWFLbzogKG4pID0+IGBGcmVpYVNlcnZlciByZXBsaWVkIHdpdGggZXJyb3IgJHtufWAgfSwKICAgIGRhOiB7IHZlcnJlOiAicHIuIGdsYXMiLCBib3V0ZWlsbGU6ICJwci4gZmxhc2tlIiwgdGVycm9pcjogIuKbsCBUZXJyb2lyIiwKICAgICAgc28yOiB7ICJzYW5zIHN1bGZpdGVzIGFqb3V0w6lzIjogInVkZW4gdGlsc2F0dGUgc3VsZml0dGVyIiwgIm1vaW5zIGRlIDMwIG1nL0wiOiAidW5kZXIgMzAgbWcvTCIsICJjb252ZW50aW9ubmVsIjogImtvbnZlbnRpb25lbCIgfSwKICAgICAgaW50cm91dmFibGU6IChzKSA9PiBgVmlua29ydGV0IMK7JHtzfcKrIGJsZXYgaWtrZSBmdW5kZXQgKGNhcnRlcy8ke3N9Lmpzb24pLmAsIGZyZWlhS286IChuKSA9PiBgRnJlaWFTZXJ2ZXIgc3ZhcmVkZSBtZWQgZmVqbCAke259YCB9LAogICAgZXM6IHsgdmVycmU6ICJsYSBjb3BhIiwgYm91dGVpbGxlOiAibGEgYm90ZWxsYSIsIHRlcnJvaXI6ICLim7AgVGVycnXDsW8iLAogICAgICBzbzI6IHsgInNhbnMgc3VsZml0ZXMgYWpvdXTDqXMiOiAic2luIHN1bGZpdG9zIGHDsWFkaWRvcyIsICJtb2lucyBkZSAzMCBtZy9MIjogIm1lbm9zIGRlIDMwIG1nL0wiLCAiY29udmVudGlvbm5lbCI6ICJjb252ZW5jaW9uYWwiIH0sCiAgICAgIGludHJvdXZhYmxlOiAocykgPT4gYE5vIHNlIGVuY3VlbnRyYSBsYSBjYXJ0YSDCqyR7c33CuyAoY2FydGVzLyR7c30uanNvbikuYCwgZnJlaWFLbzogKG4pID0+IGBGcmVpYVNlcnZlciByZXNwb25kacOzIGNvbiBlbCBlcnJvciAke259YCB9LAogIH07CiAgY29uc3QgdHggPSAoaywgLi4uYSkgPT4geyBjb25zdCB2ID0gKFRYW0xBTkddIHx8IFRYLmZyKVtrXTsgcmV0dXJuIHR5cGVvZiB2ID09PSAiZnVuY3Rpb24iID8gdiguLi5hKSA6IHY7IH07CiAgY29uc3QgRlJFSUEgPSBgJHtsb2NhdGlvbi5vcmlnaW59L2ZyZWlhYDsKICAvLyBQYWdlIFdvcmRQcmVzcyAob3V0aWxzL2VtcGFxdWV0ZXIucHkpIDogY2FydGUsIHLDqXBvbnNlcyBldCBhZHJlc3NlIGRlIGxhIGNhcnRlIGludMOpZ3LDqWVzIMOgIGxhIHBhZ2UsCiAgLy8gw6AgbGEgcGxhY2UgZGVzIGZpY2hpZXJzIGNhcnRlcy8uIEFic2VudCBlbiBsb2NhbCBldCBkYW5zIGxlIGRvc3NpZXIgY2FydGUtZGVtby8uCiAgY29uc3QgSU5MSU5FID0gd2luZG93LlZDX0lOTElORSB8fCBudWxsOwogIGNvbnN0IFVSTF9DQVJURSA9IElOTElORT8udXJsQ2FydGUgfHwgImluZGV4Lmh0bWwiOwogIGNvbnN0IFNMVUcgPSAocGFyYW1zLmdldCgiciIpIHx8ICJkZW1vIikucmVwbGFjZSgvW15hLXowLTlfLV0vZ2ksICIiKTsKICBjb25zdCBLRVkgPSBgdmluaXZlcnNfY2FydGVfJHtTTFVHfWA7CiAgY29uc3QgQ09VTEVVUlMgPSBbImJ1bGxlcyIsICJibGFuYyIsICJvcmFuZ2UiLCAicm9zw6kiLCAicm91Z2UiXTsKICAvLyBPZmZyZSA6IGdyYXR1aXRlIHBvdXIgdW4gw6l0YWJsaXNzZW1lbnQgVmluaXZlcnMgYWN0aWYgZG9udCBsYSBjYXJ0ZSBjb21wdGUgYXUgbW9pbnMKICAvLyA1MCAlIGRlIHZpbnMgbmF0dXJlIDsgcGF5YW50ZSBzaW5vbi4gVmluaXZlcnMgbmUgdmVuZCBwYXMgZGUgdmluIDogwqsgYWN0aWYgwrsgdmV1dCBkaXJlCiAgLy8gaW5zY3JpdCAodmluaXZlcnNfaW5zY3JpdCkgYXZlYyB1bmUgZmljaGUgbWlzZSDDoCBqb3VyIGRlcHVpcyBtb2lucyBkZSBGSUNIRV9NQVhfSk9VUlMgKGZpY2hlX21haikuCiAgY29uc3QgU0VVSUxfTkFUVVJFID0gMC41OwogIC8vIEZvcm1hdCBpbXBvc8OpIGRhbnMgbGEgZGVtYW5kZSA6IGxhIGNvbnNpZ25lIGRlIGxhIHBlcnNvbmEgc2V1bGUgbmUgc3VmZml0IHBhcyAocsOpcG9uc2VzIGRlCiAgLy8gNDAwIG1vdHMsIHRyb2lzIHZpbnMsIHBhcnRpZSDCqyDDoCDDqXZpdGVyIMK7KS4gTcOqbWUgdGV4dGUgZGFucyBvdXRpbHMvZ2VuZXJlcl9yZXBvbnNlcy5weS4KICBjb25zdCBGT1JNQVRfU09NTUVMSUVSRSA9ICJbRk9STUFUXSBEZXV4IGNvdXJ0cyBwYXJhZ3JhcGhlcywgMTAwIG1vdHMgYXUgcGx1cyBlbiB0b3V0IDogZCdhYm9yZCBsZSB2aW4gcHJvcG9zw6kgKG5vbSBleGFjdCBkZSBsYSBjdXbDqWUsIHByaXgpIGV0IHBvdXJxdW9pIGlsIHZhIGF2ZWMgbGUgcGxhdCwgcHVpcyB1bmUgYWx0ZXJuYXRpdmUuIEJ1ZGdldCA6IGF1Y3VuIGRlcyBkZXV4IHZpbnMgbidlc3QgcGx1cyBjaGVyIHF1ZSBsZSBidWRnZXQsIHVuZSBhbHRlcm5hdGl2ZSBtb2lucyBjaMOocmUgZXN0IHBvc3NpYmxlIDsgwqsgYXUtZGVsw6AgZGUgNjAg4oKsIMK7IHZldXQgZGlyZSA2MCDigqwgb3UgcGx1cywgc2FucyBtYXhpbXVtIDsgwqsgYXUgdmVycmUgwrsgOiB1bmlxdWVtZW50IGRlcyB2aW5zIHNlcnZpcyBhdSB2ZXJyZS4gUGFzIGRlIHRpdHJlLCBwYXMgZGUgbGlzdGUsIHBhcyBkZSBwYXJ0aWUgc3VyIGxlcyB2aW5zIMOgIMOpdml0ZXIsIHBhcyBkZSBzb3VyY2VzLiI7CiAgY29uc3QgRklDSEVfTUFYX0pPVVJTID0gMzY1OwoKICAvLyBUcmFkdWN0aW9ucyBkZXMgdGV4dGVzIGRlIGxhIGNhcnRlIChkZXNjcmlwdGlvbnMsIHBsYXRzLCBtZW50aW9ucykgOiBjYXJ0ZXMvPHNsdWc+LmkxOG4uanNvbiwgb3UKICAvLyBWQ19JTkxJTkUuaTE4biBkYW5zIFdvcmRQcmVzcyA6IHsgImVuIjogeyAidGV4dGUgZnJhbsOnYWlzIjogInRyYWR1Y3Rpb24iLCDigKYgfSwgImRhIjog4oCmLCAiZXMiOiDigKYgfS4KICAvLyBVbiB0ZXh0ZSBtb2RpZmnDqSBwYXIgbGUgcmVzdGF1cmF0ZXVyIG4nYSBwYXMgZGUgdHJhZHVjdGlvbiA6IGlsIHMnYWZmaWNoZSB0ZWwgcXUnaWwgYSDDqXTDqSBzYWlzaS4KICBsZXQgSTE4TiA9IElOTElORT8uaTE4biB8fCBudWxsOwogIGFzeW5jIGZ1bmN0aW9uIGxvYWRJMThuKCkgewogICAgaWYgKEkxOE4pIHJldHVybiBJMThOOwogICAgdHJ5IHsKICAgICAgY29uc3QgciA9IGF3YWl0IGZldGNoKGBjYXJ0ZXMvJHtTTFVHfS5pMThuLmpzb25gLCB7IGNhY2hlOiAibm8tc3RvcmUiIH0pOwogICAgICBJMThOID0gci5vayA\/IGF3YWl0IHIuanNvbigpIDoge307CiAgICB9IGNhdGNoIChlKSB7IEkxOE4gPSB7fTsgfQogICAgcmV0dXJuIEkxOE47CiAgfQogIGNvbnN0IHRyID0gKHMpID0+IChMQU5HICE9PSAiZnIiICYmIHR5cGVvZiBzID09PSAic3RyaW5nIiAmJiBJMThOPy5bTEFOR10\/LltzXSkgfHwgczsKICBjb25zdCBzbzJMYWJlbCA9IChzKSA9PiAoVFhbTEFOR10gfHwgVFguZnIpLnNvMltzXSB8fCB0cihzKTsKCiAgY29uc3QgZXNjID0gKHMpID0+IFN0cmluZyhzID8\/ICIiKS5yZXBsYWNlKC9bJjw+IiddL2csIChjKSA9PiAoeyAiJiI6ICImYW1wOyIsICI8IjogIiZsdDsiLCAiPiI6ICImZ3Q7IiwgJyInOiAiJnF1b3Q7IiwgIiciOiAiJiMzOTsiIH1bY10pKTsKCiAgZnVuY3Rpb24gcHJpeChuKSB7CiAgICBpZiAobiA9PT0gbnVsbCB8fCBuID09PSB1bmRlZmluZWQgfHwgbiA9PT0gIiIpIHJldHVybiAi4oCUIjsKICAgIGNvbnN0IHYgPSBOdW1iZXIobik7CiAgICBpZiAoTEFORyAhPT0gImZyIikgcmV0dXJuIHYudG9Mb2NhbGVTdHJpbmcoTE9DQUxFU1tMQU5HXSwgeyBzdHlsZTogImN1cnJlbmN5IiwgY3VycmVuY3k6ICJFVVIiLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IHYgJSAxID8gMiA6IDAsIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMiB9KTsKICAgIHJldHVybiB2LnRvTG9jYWxlU3RyaW5nKCJmci1GUiIsIHsgbWluaW11bUZyYWN0aW9uRGlnaXRzOiB2ICUgMSA\/IDIgOiAwLCBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIgfSkgKyAiIOKCrCI7CiAgfQoKICBhc3luYyBmdW5jdGlvbiBsb2FkKCkgewogICAgYXdhaXQgbG9hZEkxOG4oKTsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHNhdmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oS0VZKTsKICAgICAgaWYgKHNhdmVkKSByZXR1cm4gSlNPTi5wYXJzZShzYXZlZCk7CiAgICB9IGNhdGNoIChlKSB7IC8qIHN0b2NrYWdlIGluZGlzcG9uaWJsZSA6IG9uIGxpdCBsZSBmaWNoaWVyICovIH0KICAgIGlmIChJTkxJTkU\/LmNhcnRlKSByZXR1cm4gc3RydWN0dXJlZENsb25lKElOTElORS5jYXJ0ZSk7CiAgICBjb25zdCByID0gYXdhaXQgZmV0Y2goYGNhcnRlcy8ke1NMVUd9Lmpzb25gLCB7IGNhY2hlOiAibm8tc3RvcmUiIH0pOwogICAgaWYgKCFyLm9rKSB0aHJvdyBuZXcgRXJyb3IodHgoImludHJvdXZhYmxlIiwgU0xVRykpOwogICAgcmV0dXJuIHIuanNvbigpOwogIH0KCiAgLy8gU29tbWVsacOocmUgZW4gZGlyZWN0IGTDqHMgcXVlIEZyZWlhIHLDqXBvbmQgKGNhcnRlIHNlcnZpZSBwYXIgc2VydmUucHksIHF1aSByZWxhaWUgL2ZyZWlhL2hlYWx0aCkuCiAgLy8gUsOpcG9uc2VzIHByw6lwYXLDqWVzIChjYXJ0ZXMvPHNsdWc+LnJlcG9uc2VzLmpzb24pIHNldWxlbWVudCBwb3VyIGxhIGTDqW1vIHB1YmxpcXVlIDogcGFnZSBXb3JkUHJlc3MsCiAgLy8gZG9zc2llciBjYXJ0ZS1kZW1vLyBow6liZXJnw6kgc2FucyBGcmVpYSwgRnJlaWEgYXJyw6p0w6llLCBvdSA\/ZGVtbz0xLiA\/bGl2ZT0xIGZvcmNlIGxlIGRpcmVjdC4KICBsZXQgX2ZyZWlhT2sgPSBudWxsOwogIGFzeW5jIGZ1bmN0aW9uIGZyZWlhRGlzcG9uaWJsZSgpIHsKICAgIGlmIChfZnJlaWFPayAhPT0gbnVsbCkgcmV0dXJuIF9mcmVpYU9rOwogICAgdHJ5IHsKICAgICAgY29uc3QgY3RsID0gbmV3IEFib3J0Q29udHJvbGxlcigpOwogICAgICBjb25zdCB0ID0gc2V0VGltZW91dCgoKSA9PiBjdGwuYWJvcnQoKSwgNTAwMCk7CiAgICAgIGNvbnN0IHIgPSBhd2FpdCBmZXRjaChgJHtGUkVJQX0vaGVhbHRoYCwgeyBjYWNoZTogIm5vLXN0b3JlIiwgc2lnbmFsOiBjdGwuc2lnbmFsIH0pOwogICAgICBjbGVhclRpbWVvdXQodCk7CiAgICAgIF9mcmVpYU9rID0gci5vazsKICAgIH0gY2F0Y2ggKGUpIHsgX2ZyZWlhT2sgPSBmYWxzZTsgfQogICAgcmV0dXJuIF9mcmVpYU9rOwogIH0KICBhc3luYyBmdW5jdGlvbiBsb2FkUmVwb25zZXMoKSB7CiAgICBpZiAocGFyYW1zLmdldCgibGl2ZSIpID09PSAiMSIpIHJldHVybiBudWxsOwogICAgaWYgKElOTElORSkgcmV0dXJuIElOTElORS5yZXBvbnNlcyB8fCB7IHJlcG9uc2VzOiB7fSB9OyAgLy8gcGFnZSBXb3JkUHJlc3MgOiB0b3Vqb3VycyBlbiBkw6ltbwogICAgaWYgKHBhcmFtcy5nZXQoImRlbW8iKSAhPT0gIjEiICYmIGF3YWl0IGZyZWlhRGlzcG9uaWJsZSgpKSByZXR1cm4gbnVsbDsKICAgIHRyeSB7CiAgICAgIGNvbnN0IHIgPSBhd2FpdCBmZXRjaChgY2FydGVzLyR7U0xVR30ucmVwb25zZXMuanNvbmAsIHsgY2FjaGU6ICJuby1zdG9yZSIgfSk7CiAgICAgIGlmICghci5vaykgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByLmpzb24oKTsKICAgICAgZGF0YS5yZXBvbnNlcyB8fD0ge307CiAgICAgIC8vIFLDqXBvbnNlcyB0cmFkdWl0ZXMgZGVzIGF1dHJlcyBsYW5ndWVzIChmYWN1bHRhdGl2ZXMpIDogY2FydGVzLzxzbHVnPi5yZXBvbnNlcy48bGFuZz4uanNvbi4KICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoTEFOR1MuZmlsdGVyKChsKSA9PiBsICE9PSAiZnIiKS5tYXAoYXN5bmMgKGwpID0+IHsKICAgICAgICB0cnkgewogICAgICAgICAgY29uc3QgeCA9IGF3YWl0IGZldGNoKGBjYXJ0ZXMvJHtTTFVHfS5yZXBvbnNlcy4ke2x9Lmpzb25gLCB7IGNhY2hlOiAibm8tc3RvcmUiIH0pOwogICAgICAgICAgaWYgKHgub2spIE9iamVjdC5hc3NpZ24oZGF0YS5yZXBvbnNlcywgKGF3YWl0IHguanNvbigpKS5yZXBvbnNlcyB8fCB7fSk7CiAgICAgICAgfSBjYXRjaCAoZSkgeyAvKiBwYXMgZGUgcsOpcG9uc2VzIGRhbnMgY2V0dGUgbGFuZ3VlICovIH0KICAgICAgfSkpOwogICAgICByZXR1cm4gZGF0YTsKICAgIH0gY2F0Y2ggKGUpIHsgcmV0dXJuIG51bGw7IH0KICB9CgogIGZ1bmN0aW9uIHNhdmUoY2FydGUpIHsKICAgIHRyeSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKEtFWSwgSlNPTi5zdHJpbmdpZnkoY2FydGUpKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9CiAgfQoKICBmdW5jdGlvbiByZXNldCgpIHsgdHJ5IHsgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oS0VZKTsgfSBjYXRjaCAoZSkgeyAvKiByaWVuICovIH0gfQoKICAvLyBUcmFuY2hlcyBkZSBidWRnZXQgcHJvcG9zw6llcyBhdSBjbGllbnQgOiBzZXVsZW1lbnQgY2VsbGVzIG\/DuSBsYSBjYXJ0ZSBhIGF1IG1vaW5zIDIgdmlucwogIC8vIGRpc3BvbmlibGVzICh1bmUgcHJvcG9zaXRpb24gZXQgdW5lIGFsdGVybmF0aXZlKS4gQXZlYyB1biBzZXVsIHZpbiBhdS1kZWzDoCBkZSA2MCDigqwsIGxhCiAgLy8gc29tbWVsacOocmUgw6l0YWl0IGZvcmPDqWUgZGUgbGUgcHJvcG9zZXIsIG3Dqm1lIG1hbCBhY2NvcmTDqS4gTcOqbWUgcsOoZ2xlIGRhbnMgZ2VuZXJlcl9yZXBvbnNlcy5weS4KICBjb25zdCBUUkFOQ0hFUyA9IHsKICAgICJhdSB2ZXJyZSI6ICh2KSA9PiAhIXYucHJpeF92ZXJyZSwKICAgICJib3V0ZWlsbGUgw6AgbW9pbnMgZGUgNDAg4oKsIjogKHYpID0+IHYucHJpeF9ib3V0ZWlsbGUgPCA0MCwKICAgICJib3V0ZWlsbGUgZW50cmUgNDAgZXQgNjAg4oKsIjogKHYpID0+IHYucHJpeF9ib3V0ZWlsbGUgPj0gNDAgJiYgdi5wcml4X2JvdXRlaWxsZSA8PSA2MCwKICAgICJib3V0ZWlsbGUgYXUtZGVsw6AgZGUgNjAg4oKsIjogKHYpID0+IHYucHJpeF9ib3V0ZWlsbGUgPiA2MCwKICB9OwogIGZ1bmN0aW9uIHRyYW5jaGVzKGNhcnRlKSB7CiAgICByZXR1cm4gT2JqZWN0LmtleXMoVFJBTkNIRVMpLmZpbHRlcigodCkgPT4gKGNhcnRlLnZpbnMgfHwgW10pLmZpbHRlcigodikgPT4gdi5kaXNwbyAmJiBUUkFOQ0hFU1t0XSh2KSkubGVuZ3RoID49IDIpOwogIH0KCiAgZnVuY3Rpb24gZWxpZ2liaWxpdGUoY2FydGUpIHsKICAgIGNvbnN0IHZpbnMgPSBjYXJ0ZS52aW5zIHx8IFtdOwogICAgY29uc3QgbmF0ID0gdmlucy5maWx0ZXIoKHYpID0+IHYubmF0dXJlKS5sZW5ndGg7CiAgICBjb25zdCByYXRpbyA9IHZpbnMubGVuZ3RoID8gbmF0IC8gdmlucy5sZW5ndGggOiAwOwogICAgY29uc3QgbWFucXVlID0gTWF0aC5tYXgoMCwgTWF0aC5jZWlsKFNFVUlMX05BVFVSRSAqIHZpbnMubGVuZ3RoKSAtIG5hdCk7CiAgICBjb25zdCBpbnNjcml0ID0gISFjYXJ0ZS52aW5pdmVyc19pbnNjcml0OwogICAgY29uc3QgbWFqID0gY2FydGUuZmljaGVfbWFqID8gbmV3IERhdGUoY2FydGUuZmljaGVfbWFqKSA6IG51bGw7CiAgICBjb25zdCBhZ2UgPSBtYWogJiYgIWlzTmFOKG1haikgPyBNYXRoLmZsb29yKChEYXRlLm5vdygpIC0gbWFqKSAvIDg2NDAwMDAwKSA6IG51bGw7CiAgICBjb25zdCBmaWNoZV9vayA9IGFnZSAhPT0gbnVsbCAmJiBhZ2UgPD0gRklDSEVfTUFYX0pPVVJTOwogICAgY29uc3QgYWN0aWYgPSBpbnNjcml0ICYmIGZpY2hlX29rLCBuYXRfb2sgPSByYXRpbyA+PSBTRVVJTF9OQVRVUkU7CiAgICByZXR1cm4geyB0b3RhbDogdmlucy5sZW5ndGgsIG5hdHVyZTogbmF0LCByYXRpbywgaW5zY3JpdCwgZmljaGVfb2ssIG1haiwgYWN0aWYsIG5hdF9vaywgb2s6IGFjdGlmICYmIG5hdF9vaywKICAgICAgbWFucXVlLCBzZXVpbDogU0VVSUxfTkFUVVJFLCBmaWNoZU1heEpvdXJzOiBGSUNIRV9NQVhfSk9VUlMgfTsKICB9CgogIC8vIEJsb2MgdGV4dGUgZGUgbGEgY2FydGUsIGluamVjdMOpIGRhbnMgbGUgbWVzc2FnZSBlbnZvecOpIMOgIEZyZWlhLgogIGZ1bmN0aW9uIGNhcnRlVGV4dGUoY2FydGUsIHsgZGlzcG9TZXVsZW1lbnQgPSB0cnVlIH0gPSB7fSkgewogICAgY29uc3QgbGlnbmVzID0gKGNhcnRlLnZpbnMgfHwgW10pLmZpbHRlcigodikgPT4gIWRpc3BvU2V1bGVtZW50IHx8IHYuZGlzcG8pLm1hcCgodikgPT4KICAgICAgYC0gJHt2LmN1dmVlfSDigJQgJHt2LmRvbWFpbmV9IHwgJHt2LmFwcGVsbGF0aW9ufSAke3YubWlsbGVzaW1lIHx8ICIifSB8ICR7di5jb3VsZXVyfSB8ICR7di5jZXBhZ2VzIHx8ICIifSB8IGAgKwogICAgICBgYm91dGVpbGxlICR7cHJpeCh2LnByaXhfYm91dGVpbGxlKX0ke3YucHJpeF92ZXJyZSA\/IGAsIHZlcnJlICR7cHJpeCh2LnByaXhfdmVycmUpfWAgOiAiLCBwYXMgYXUgdmVycmUifSB8IGAgKwogICAgICBgJHt2Lm5hdHVyZSA\/ICJuYXR1cmUiIDogIm5vbiBuYXR1cmUifSR7di5sYWJlbHM\/Lmxlbmd0aCA\/ICIsIGxhYmVscyA6ICIgKyB2LmxhYmVscy5qb2luKCIsICIpIDogIiJ9IHwgU08yIDogJHt2LnNvMiB8fCAiPyJ9YCArCiAgICAgIGAke3YuZGlzcG8gPyAiIiA6ICIgfCDDiVBVSVPDiSJ9IHwgJHt2LmRlc2NyaXB0aW9uIHx8ICIifWApOwogICAgcmV0dXJuIGBbQ0FSVEUgRFUgUkVTVEFVUkFOVCDigJQgJHtjYXJ0ZS5ldGFibGlzc2VtZW50fSwgJHtjYXJ0ZS52aWxsZSB8fCAiIn1dXG4ke2NhcnRlLm1lbnRpb25fc2VydmljZSB8fCAiIn1cbiR7bGlnbmVzLmpvaW4oIlxuIil9YDsKICB9CgogIC8vIEFwcGVsIGRlIEZyZWlhU2VydmVyIC9jaGF0IGVuIHN0cmVhbWluZyAodGV4dGUgYnJ1dCkuIG9uQ2h1bmsodGV4dGVDdW11bMOpKSDDoCBjaGFxdWUgbW9yY2VhdS4KICBhc3luYyBmdW5jdGlvbiBhc2tGcmVpYSh7IG1lc3NhZ2UsIHBlcnNvbmEsIGNvcnB1cyA9IG51bGwsIG1heFRva2VucyA9IDcwMCwgdGVtcGVyYXR1cmUgPSAwLjUsIG9uQ2h1bmssIHNpZ25hbCB9KSB7CiAgICBjb25zdCByID0gYXdhaXQgZmV0Y2goYCR7RlJFSUF9L2NoYXRgLCB7CiAgICAgIG1ldGhvZDogIlBPU1QiLCBzaWduYWwsCiAgICAgIGhlYWRlcnM6IHsgIkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi9qc29uIiB9LAogICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IG1lc3NhZ2UsIHBlcnNvbmEsIGNvcnB1cywgdG9wX2s6IDMsIHN0cmVhbTogdHJ1ZSwgbWF4X3Rva2VuczogbWF4VG9rZW5zLCB0ZW1wZXJhdHVyZSB9KSwKICAgIH0pOwogICAgaWYgKCFyLm9rKSB0aHJvdyBuZXcgRXJyb3IodHgoImZyZWlhS28iLCByLnN0YXR1cykpOwogICAgY29uc3QgcmVhZGVyID0gci5ib2R5LmdldFJlYWRlcigpOwogICAgY29uc3QgZGVjID0gbmV3IFRleHREZWNvZGVyKCk7CiAgICBsZXQgdHh0ID0gIiI7CiAgICBmb3IgKDs7KSB7CiAgICAgIGNvbnN0IHsgdmFsdWUsIGRvbmUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKCk7CiAgICAgIGlmIChkb25lKSBicmVhazsKICAgICAgdHh0ICs9IGRlYy5kZWNvZGUodmFsdWUsIHsgc3RyZWFtOiB0cnVlIH0pOwogICAgICBvbkNodW5rPy4oY2xlYW4odHh0KSk7CiAgICB9CiAgICByZXR1cm4gY2xlYW4odHh0KTsKICB9CgogIC8vIFJldGlyZSB1biDDqXZlbnR1ZWwgYmxvYyBkZSByw6lmbGV4aW9uICg8dGhpbms+4oCmPC90aGluaz4pIGRlcyBtb2TDqGxlcyDCqyB0aGlua2luZyDCuy4KICBmdW5jdGlvbiBjbGVhbih0KSB7CiAgICByZXR1cm4gdC5yZXBsYWNlKC88dGhpbms+W1xzXFNdKj8oPFwvdGhpbms+fCQpL2csICIiKS5yZXBsYWNlKC9eXHMrLywgIiIpOwogIH0KCiAgLy8gTWFya2Rvd24gbWluaW1hbCA6IGdyYXMsIGl0YWxpcXVlLCBsaXN0ZXMsIHBhcmFncmFwaGVzLgogIGZ1bmN0aW9uIG1kKHQpIHsKICAgIGNvbnN0IG91dCA9IFtdOwogICAgbGV0IGxpc3QgPSBudWxsOwogICAgZm9yIChjb25zdCByYXcgb2YgZXNjKHQpLnNwbGl0KC9cbi8pKSB7CiAgICAgIGNvbnN0IGxpbmUgPSByYXcucmVwbGFjZSgvXCpcKiguKz8pXCpcKi9nLCAiPHN0cm9uZz4kMTwvc3Ryb25nPiIpLnJlcGxhY2UoLyhefFxXKVwqKFxTLio\/KVwqKD89XFd8JCkvZywgIiQxPGVtPiQyPC9lbT4iKTsKICAgICAgY29uc3QgbGkgPSBsaW5lLm1hdGNoKC9eXHMqKD86Wy0q4oCiXXxcZCtbLildKVxzKyguKikvKTsKICAgICAgaWYgKGxpKSB7IGlmICghbGlzdCkgeyBsaXN0ID0gW107IG91dC5wdXNoKGxpc3QpOyB9IGxpc3QucHVzaChsaVsxXSk7IGNvbnRpbnVlOyB9CiAgICAgIGxpc3QgPSBudWxsOwogICAgICBpZiAobGluZS50cmltKCkpIG91dC5wdXNoKGxpbmUucmVwbGFjZSgvXiMrXHMqLywgIiIpKTsKICAgIH0KICAgIHJldHVybiBvdXQubWFwKChiKSA9PiBBcnJheS5pc0FycmF5KGIpID8gYDx1bD4ke2IubWFwKCh4KSA9PiBgPGxpPiR7eH08L2xpPmApLmpvaW4oIiIpfTwvdWw+YCA6IGA8cD4ke2J9PC9wPmApLmpvaW4oIiIpOwogIH0KCiAgLy8gQ8OpcGFnZXMgOiByw6lmw6lyZW50aWVsIFZpbml2ZXJzIChjZXBhZ2VzX21pbmkuanMsIG91IFZDX0lOTElORS5jZXBhZ2VzIGRhbnMgV29yZFByZXNzKS4KICAvLyDCqyBTeXJhaCA2MCAlLCBHcmVuYWNoZSDCuyAtPiBmaWNoZXMgcmVjb25udWVzIDsgdW4gY8OpcGFnZSBpbmNvbm51IHJlc3RlIGR1IHRleHRlIHNpbXBsZS4KICBjb25zdCBVUkxfQVRMQVMgPSBJTkxJTkU\/LnVybEF0bGFzIHx8ICJjZXBhZ2VzLmh0bWwiOwogIGNvbnN0IGZvbGQgPSAocykgPT4gU3RyaW5nKHMgfHwgIiIpLm5vcm1hbGl6ZSgiTkZEIikucmVwbGFjZSgvW1x1MDMwMC1cdTAzNmZdL2csICIiKS50b0xvd2VyQ2FzZSgpLnRyaW0oKTsKICBsZXQgX2NlcEluZGV4ID0gbnVsbDsKICBmdW5jdGlvbiBjZXBJbmRleCgpIHsKICAgIGlmIChfY2VwSW5kZXgpIHJldHVybiBfY2VwSW5kZXg7CiAgICBjb25zdCBsaXN0ZSA9IElOTElORT8uY2VwYWdlcyB8fCB3aW5kb3cuVlZfQ0VQQUdFUyB8fCBbXTsKICAgIGNvbnN0IGJ5SWQgPSBPYmplY3QuZnJvbUVudHJpZXMobGlzdGUubWFwKChjKSA9PiBbYy5pZCwgY10pKTsKICAgIGNvbnN0IG5vbXMgPSBuZXcgTWFwKCk7CiAgICBmb3IgKGNvbnN0IGMgb2YgbGlzdGUpIHsKICAgICAgY29uc3QgY2libGUgPSAoYy52b2lyICYmIGJ5SWRbYy52b2lyXSkgfHwgYzsKICAgICAgZm9yIChjb25zdCBuIG9mIFtjLm5vbSwgYy5ub21fZW4sIC4uLihjLnN5bm9ueW1lcyB8fCBbXSksIC4uLihjLm1hdGNoIHx8IFtdKV0pIHsKICAgICAgICBjb25zdCBrID0gZm9sZChTdHJpbmcobiB8fCAiIikucmVwbGFjZSgvXCguKj9cKS9nLCAiIikpOwogICAgICAgIGlmIChrICYmICFub21zLmhhcyhrKSkgbm9tcy5zZXQoaywgY2libGUpOwogICAgICB9CiAgICB9CiAgICBfY2VwSW5kZXggPSB7IGJ5SWQsIG5vbXMgfTsKICAgIHJldHVybiBfY2VwSW5kZXg7CiAgfQogIGZ1bmN0aW9uIGNlcGFnZXNEZSh0ZXh0ZSkgewogICAgcmV0dXJuIFN0cmluZyh0ZXh0ZSB8fCAiIikuc3BsaXQoLyx8XC98XCt8O3xcYmV0XGJ8XGJhbmRcYi8pLm1hcCgoYnJ1dCkgPT4gewogICAgICBjb25zdCBub20gPSBicnV0LnJlcGxhY2UoL1xkK1xzKiUvZywgIiIpLnRyaW0oKTsKICAgICAgcmV0dXJuIG5vbSA\/IHsgbm9tLCBmaWNoZTogY2VwSW5kZXgoKS5ub21zLmdldChmb2xkKG5vbSkpIHx8IG51bGwgfSA6IG51bGw7CiAgICB9KS5maWx0ZXIoQm9vbGVhbik7CiAgfQogIGZ1bmN0aW9uIGNlcGFnZXNIVE1MKHRleHRlKSB7CiAgICByZXR1cm4gY2VwYWdlc0RlKHRleHRlKS5tYXAoKHsgbm9tLCBmaWNoZSB9KSA9PiBmaWNoZQogICAgICA\/IGA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNlcCIgZGF0YS1jZXA9IiR7ZXNjKGZpY2hlLmlkKX0iPjxzcGFuIGNsYXNzPSJkb3QgJHtmaWNoZS5jb3VsZXVyID09PSAicm91Z2UiID8gInJvdWdlIiA6ICJibGFuYyJ9Ij48L3NwYW4+JHtlc2Mobm9tKX08L2J1dHRvbj5gCiAgICAgIDogZXNjKG5vbSkpLmpvaW4oIiAiKTsKICB9CgogIC8vIFRlcnJvaXIgZGUgbCdhcHBlbGxhdGlvbiAoY2FoaWVycyBkZXMgY2hhcmdlcyBJTkFPIC8gcmVnaXN0cmUgZXVyb3DDqWVuKSA6IGluZGV4IGzDqWdlciBjaGFyZ8OpIGF2ZWMgbGEKICAvLyBjYXJ0ZSAodGVycm9pcnNfaW5kZXguanMsIG91IFZDX0lOTElORS50ZXJyb2lycyBkYW5zIFdvcmRQcmVzcyksIHRleHRlIGNvbXBsZXQgY2hhcmfDqSDDoCBsYSBkZW1hbmRlLgogIGNvbnN0IGNsZVQgPSAocykgPT4gU3RyaW5nKHMgfHwgIiIpLm5vcm1hbGl6ZSgiTkZEIikucmVwbGFjZSgvW8yALc2vXS9nLCAiIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtejAtOV0rL2csICIgIikudHJpbSgpOwogIGxldCBfdElkeCA9IG51bGw7CiAgZnVuY3Rpb24gdGVycm9pckRlKGFwcGVsbGF0aW9uKSB7CiAgICBfdElkeCB8fD0gbmV3IFNldChJTkxJTkU\/LnRlcnJvaXJzID8gT2JqZWN0LmtleXMoSU5MSU5FLnRlcnJvaXJzKSA6ICh3aW5kb3cuVlZfVEVSUk9JUlNfSU5ERVggfHwgW10pKTsKICAgIGNvbnN0IGsgPSBjbGVUKGFwcGVsbGF0aW9uKTsKICAgIHJldHVybiBrICYmIF90SWR4LmhhcyhrKSA\/IGsgOiBudWxsOwogIH0KICBmdW5jdGlvbiBjaGFyZ2VyKHNyYywgY3NzID0gZmFsc2UpIHsKICAgIHJldHVybiBuZXcgUHJvbWlzZSgob2ssIGtvKSA9PiB7CiAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1jaGFyZ2U9IiR7c3JjfSJdYCkpIHJldHVybiBvaygpOwogICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoY3NzID8gImxpbmsiIDogInNjcmlwdCIpOwogICAgICBlbC5kYXRhc2V0LmNoYXJnZSA9IHNyYzsKICAgICAgaWYgKGNzcykgeyBlbC5yZWwgPSAic3R5bGVzaGVldCI7IGVsLmhyZWYgPSBzcmM7IG9rKCk7IH0gZWxzZSB7IGVsLnNyYyA9IHNyYzsgZWwub25sb2FkID0gb2s7IGVsLm9uZXJyb3IgPSBrbzsgfQogICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGVsKTsKICAgIH0pOwogIH0KICBhc3luYyBmdW5jdGlvbiB0ZXJyb2lycygpIHsKICAgIGlmIChJTkxJTkU\/LnRlcnJvaXJzKSByZXR1cm4gSU5MSU5FLnRlcnJvaXJzOwogICAgaWYgKCF3aW5kb3cuVlZfVEVSUk9JUlMpIGF3YWl0IGNoYXJnZXIoInRlcnJvaXJzX2RhdGEuanMiKTsKICAgIHJldHVybiB3aW5kb3cuVlZfVEVSUk9JUlMgfHwge307CiAgfQogIGFzeW5jIGZ1bmN0aW9uIHRlcnJvaXIoaykgewogICAgY29uc3QgVCA9IGF3YWl0IHRlcnJvaXJzKCk7CiAgICBsZXQgdCA9IFRba107CiAgICBpZiAodCAmJiB0LmFsaWFzKSB0ID0gVFt0LmFsaWFzXTsKICAgIHJldHVybiB0ICYmIHQubiA\/IHQgOiBudWxsOwogIH0KICBhc3luYyBmdW5jdGlvbiBsZWFmbGV0KCkgewogICAgaWYgKHdpbmRvdy5MPy5tYXApIHJldHVybiB3aW5kb3cuTDsKICAgIGF3YWl0IGNoYXJnZXIoImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2xlYWZsZXQvMS45LjQvbGVhZmxldC5taW4uY3NzIiwgdHJ1ZSk7CiAgICBhd2FpdCBjaGFyZ2VyKCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9sZWFmbGV0LzEuOS40L2xlYWZsZXQubWluLmpzIik7CiAgICByZXR1cm4gd2luZG93Lkw7CiAgfQoKICBmdW5jdGlvbiB3aW5lSFRNTCh2KSB7CiAgICBjb25zdCBsYWJzID0gWwogICAgICAuLi4odi5sYWJlbHMgfHwgW10pLm1hcCgobCkgPT4gYDxzcGFuIGNsYXNzPSJsYWIkey9uYXR1cmV8QUJ8RGVtZXRlcnxCaW9keXZpbi9pLnRlc3QobCkgPyAiIG5hdCIgOiAiIn0iPiR7ZXNjKGwpfTwvc3Bhbj5gKSwKICAgICAgdi5zbzIgJiYgdi5zbzIgIT09ICJjb252ZW50aW9ubmVsIiA\/IGA8c3BhbiBjbGFzcz0ibGFiIHNvMiI+JHtlc2Moc28yTGFiZWwodi5zbzIpKX08L3NwYW4+YCA6ICIiLAogICAgXS5qb2luKCIiKTsKICAgIHJldHVybiBgPGFydGljbGUgY2xhc3M9IndpbmUiIGlkPSJ3LSR7ZXNjKHYuaWQpfSIgZGF0YS1pZD0iJHtlc2Modi5pZCl9Ij4KICAgICAgPGRpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lIj4ke2VzYyh2LmN1dmVlKX08L2Rpdj4KICAgICAgICA8ZGl2PjxzcGFuIGNsYXNzPSJkb20iPiR7ZXNjKHYuZG9tYWluZSl9PC9zcGFuPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1ldGEiPiR7ZXNjKHYuYXBwZWxsYXRpb24pfSR7di5taWxsZXNpbWUgPyAiIMK3ICIgKyBlc2Modi5taWxsZXNpbWUpIDogIiJ9IMK3ICR7ZXNjKHYucmVnaW9uIHx8ICIiKX08L2Rpdj4KICAgICAgICAke3YuY2VwYWdlcyB8fCB0ZXJyb2lyRGUodi5hcHBlbGxhdGlvbikgPyBgPGRpdiBjbGFzcz0iY2VwcyI+JHt2LmNlcGFnZXMgPyBjZXBhZ2VzSFRNTCh2LmNlcGFnZXMpIDogIiJ9CiAgICAgICAgICAke3RlcnJvaXJEZSh2LmFwcGVsbGF0aW9uKSA\/IGA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNlcCB0ZXJyIiBkYXRhLXRlcnJvaXI9IiR7ZXNjKHRlcnJvaXJEZSh2LmFwcGVsbGF0aW9uKSl9IiBkYXRhLXZpbj0iJHtlc2Modi5pZCl9Ij4ke3R4KCJ0ZXJyb2lyIil9PC9idXR0b24+YCA6ICIifTwvZGl2PmAgOiAiIn0KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InByaWNlcyI+JHt2LnByaXhfdmVycmUgPyBgJHtwcml4KHYucHJpeF92ZXJyZSl9PHNtYWxsPiR7dHgoInZlcnJlIil9PC9zbWFsbD5gIDogIiJ9JHtwcml4KHYucHJpeF9ib3V0ZWlsbGUpfTxzbWFsbD4ke3R4KCJib3V0ZWlsbGUiKX08L3NtYWxsPjwvZGl2PgogICAgICAke3YuZGVzY3JpcHRpb24gPyBgPGRpdiBjbGFzcz0iZGVzYyI+JHtlc2ModHIodi5kZXNjcmlwdGlvbikpfTwvZGl2PmAgOiAiIn0KICAgICAgJHtsYWJzID8gYDxkaXYgY2xhc3M9ImxhYmVscyI+JHtsYWJzfTwvZGl2PmAgOiAiIn0KICAgIDwvYXJ0aWNsZT5gOwogIH0KCiAgcmV0dXJuIHsgZ2V0IExBTkcoKSB7IHJldHVybiBMQU5HOyB9LCBnZXQgTE9DQUxFKCkgeyByZXR1cm4gTE9DQUxFU1tMQU5HXTsgfSwgTEFOR1MsIExPQ0FMRVMsIHNldExhbmcsIHR4LCB0ciwgc28yTGFiZWwsIGxvYWRJMThuLAogICAgdGVycm9pckRlLCB0ZXJyb2lyLCBsZWFmbGV0LCBjbGVULCBmcmVpYURpc3BvbmlibGUsIFVSTF9BVExBUywgY2VwSW5kZXgsIGNlcGFnZXNEZSwgRlJFSUEsIFNMVUcsIEtFWSwgSU5MSU5FLCBVUkxfQ0FSVEUsIENPVUxFVVJTLCBGT1JNQVRfU09NTUVMSUVSRSwgdHJhbmNoZXMsIGVzYywgcHJpeCwgbG9hZCwgbG9hZFJlcG9uc2VzLCBzYXZlLCByZXNldCwgZWxpZ2liaWxpdGUsIGNhcnRlVGV4dGUsIGFza0ZyZWlhLCBtZCwgd2luZUhUTUwgfTsKfSkoKTsK\");var s=document.createElement(\"script\");s.text=new TextDecoder().decode(Uint8Array.from(b,function(c){return c.charCodeAt(0)}));document.currentScript.after(s);})();<\/script>\n<script>(function(){var b=atob(\"Ci8vIFRleHRlcyBkZSBsJ2VzcGFjZSByZXN0YXVyYXRldXIuIExhbmd1ZSA6IHdpbmRvdy5WVl9MQU5HLCA\/bGFuZz14eCwgPGh0bWwgbGFuZz4gb3UgZnIgKFZDLkxBTkcsIGNhcnRlLmpzKS4KLy8gTGEgcGFnZSBIVE1MIGVzdCDDqWNyaXRlIGVuIGZyYW7Dp2FpcyA7IGRhbnMgdW5lIGF1dHJlIGxhbmd1ZSwgbGVzIMOpbMOpbWVudHMgW2RhdGEtaTE4bl0gc29udCByw6nDqWNyaXRzLgpjb25zdCBBID0gewogIGZyOiB7CiAgICB0aXRyZTogIkVzcGFjZSByZXN0YXVyYXRldXIiLCBleWVicm93OiAiVmluaXZlcnMgwrcgZXNwYWNlIHJlc3RhdXJhdGV1ciIsIHZvaXI6ICJWb2lyIGxhIGNhcnRlIGNsaWVudCIsIGltcHJpbWVyOiAiSW1wcmltZXIgLyBQREYiLAogICAgZWxpZ1Q6ICJPZmZyZSBWaW5pdmVycyIsIGVsaWdOb3RlOiAiR3JhdHVpdCBwb3VyIHVuIMOpdGFibGlzc2VtZW50IGluc2NyaXQgc3VyIFZpbml2ZXJzLCBhdmVjIHVuZSBmaWNoZSBtaXNlIMOgIGpvdXIgZGVwdWlzIG1vaW5zIGQndW4gYW4sIGV0IGRvbnQgbGEgY2FydGUgY29tcHRlIGF1IG1vaW5zIDUwICUgZGUgdmlucyBuYXR1cmUgOyBhYm9ubmVtZW50IHBheWFudCBzaW5vbi4iLAogICAgcXJUOiAiUVIgY29kZSBkZSB0YWJsZSIsIHFyTm90ZTogIsOAIGltcHJpbWVyIHN1ciBsZXMgY2hldmFsZXRzIGRlIHRhYmxlLiBMYSBjYXJ0ZSBzZSBtZXQgw6Agam91ciBzYW5zIGNoYW5nZXIgbGUgUVIgY29kZS4iLAogICAgdmluc1Q6ICJWaW5zIGRlIGxhIGNhcnRlIiwgZXhwb3J0OiAiRXhwb3J0ZXIgKEpTT04pIiwgaW1wb3J0OiAiSW1wb3J0ZXIgKEpTT04pIiwgcmVzZXQ6ICJSZXZlbmlyIMOgIGxhIGNhcnRlIGRlIGTDqW1vIiwKICAgIHRoU3RhdHV0OiAiU3RhdHV0IiwgdGhWaW46ICJWaW4iLCB0aENvdWxldXI6ICJDb3VsZXVyIiwgdGhOYXR1cmU6ICJOYXR1cmUiLCB0aFZlcnJlOiAiVmVycmUiLCB0aEJvdXRlaWxsZTogIkJvdXRlaWxsZSIsCiAgICBhZGRUOiAiQWpvdXRlciB1biB2aW4iLCBmQ3V2ZWU6ICJDdXbDqWUiLCBmRG9tYWluZTogIkRvbWFpbmUiLCBmQXBwZWxsYXRpb246ICJBcHBlbGxhdGlvbiIsIGZSZWdpb246ICJSw6lnaW9uIiwgZk1pbGxlc2ltZTogIk1pbGzDqXNpbWUiLCBmQ291bGV1cjogIkNvdWxldXIiLAogICAgZkNlcGFnZXM6ICJDw6lwYWdlcyIsIGZQYjogIlByaXggYm91dGVpbGxlICjigqwpIiwgZlB2OiAiUHJpeCB2ZXJyZSAo4oKsKSIsIGZTbzI6ICJTb3VmcmUiLCBmTGFiZWxzOiAiTGFiZWxzICh2aXJndWxlcykiLCBmTmF0dXJlOiAiVmluIG5hdHVyZSIsIGZEZXNjOiAiRGVzY3JpcHRpb24gY291cnRlIiwKICAgIHBoRGVzYzogIlNvbCwgdmluaWZpY2F0aW9uLCDDqWxldmFnZSwgcHJvZmlsIiwgYWRkQnRuOiAiQWpvdXRlciDDoCBsYSBjYXJ0ZSIsCiAgICBpYVQ6ICJSZXByZW5kcmUgdW5lIGNhcnRlIGV4aXN0YW50ZSIsIGlhTm90ZTogIkNvbGxleiBsZSB0ZXh0ZSBkZSB2b3RyZSBjYXJ0ZSBhY3R1ZWxsZSAoY29wacOpIGQndW4gUERGIG91IGQndW4gdGFibGV1cikuIEZyZWlhIGVuIGV4dHJhaXQgbGVzIHZpbnMgOyB2w6lyaWZpZXotbGVzIGF2YW50IGRlIGxlcyBwdWJsaWVyLiIsCiAgICBpYVBoOiAiTU9SR09OIDIwMjQg4oCTIERvbS4gZGVzIEdyaWxsb25zLCDCqyBQZXRpdCBDYWlsbG91IMK7LCBzYW5zIHNvdWZyZSBham91dMOpIC4uLi4uLi4gOCDigqwgLyAzOCDigqwiLCBpYUdvOiAiRXh0cmFpcmUgbGVzIHZpbnMiLAogICAgY29uZlQ6ICJWw6lyaWZpZXIgbWEgY2FydGUiLCBjb25mTm90ZTogIkZyZWlhIHJlbGl0IGxhIGNhcnRlIDogYWZmaWNoYWdlIGRlcyBwcml4LCBsYWJlbHMgcmV2ZW5kaXF1w6lzLCBkZXNjcmlwdGlvbnMgYXUgcmVnYXJkIGRlIGxhIGxvaSDDiXZpbiwgY29ow6lyZW5jZSBkZXMgbWVudGlvbnMgwqsgbmF0dXJlIMK7LiBBaWRlIMOgIGxhIHJlbGVjdHVyZSwgcGFzIHVuIGF2aXMganVyaWRpcXVlLiIsIGNvbmZHbzogIkxhbmNlciBsYSB2w6lyaWZpY2F0aW9uIiwKICAgIHNhdmVkOiAiRW5yZWdpc3Ryw6kuIExhIGNhcnRlIGNsaWVudCBlc3Qgw6Agam91ci4iLCBzYXZlS286ICJFbnJlZ2lzdHJlbWVudCBpbXBvc3NpYmxlIGRhbnMgY2UgbmF2aWdhdGV1ciA6IGV4cG9ydGV6IGxhIGNhcnRlIGVuIEpTT04uIiwKICAgIGVsaWdPazogIsOJbGlnaWJsZSA6IGNhcnRlIG9mZmVydGUgcGFyIFZpbml2ZXJzIiwgZWxpZ0luc2NyaXQ6ICJPZmZyZSBwYXlhbnRlIDogw6l0YWJsaXNzZW1lbnQgbm9uIGluc2NyaXQgc3VyIFZpbml2ZXJzIiwgZWxpZ0ZpY2hlOiAiT2ZmcmUgcGF5YW50ZSA6IGZpY2hlIFZpbml2ZXJzIMOgIG1ldHRyZSDDoCBqb3VyIiwKICAgIGVsaWdNYW5xdWU6IChuKSA9PiBgT2ZmcmUgcGF5YW50ZSA6IGVuY29yZSAke259IHZpbiR7biA+IDEgPyAicyIgOiAiIn0gbmF0dXJlIHBvdXIgbGEgZ3JhdHVpdMOpYCwKICAgIGZpY2hlTWFqOiAoZCkgPT4gYGZpY2hlIG1pc2Ugw6Agam91ciBsZSAke2R9YCwgZmljaGVKYW1haXM6ICJmaWNoZSBqYW1haXMgbWlzZSDDoCBqb3VyIiwgaW5zY3JpdDogIkluc2NyaXQiLCBub25JbnNjcml0OiAiTm9uIGluc2NyaXQiLAogICAgZGV0YWlsOiAobmF0LCB0b3RhbCwgcGN0LCBzZXVpbCkgPT4gYCR7bmF0fSB2aW5zIG5hdHVyZSBzdXIgJHt0b3RhbH0gwrcgJHtwY3R9ICUgKHNldWlsICR7c2V1aWx9ICUpYCwKICAgIGRpc3BvOiAiRGlzcG9uaWJsZSIsIGVwdWlzZTogIsOJcHVpc8OpIiwgbmF0dXJlT3VpOiAiTmF0dXJlIiwgbmF0dXJlTm9uOiAiTm9uIiwgYXJpYVB2OiAiUHJpeCBhdSB2ZXJyZSIsIGFyaWFQYjogIlByaXggYm91dGVpbGxlIiwgcmV0aXJlcjogIlJldGlyZXIiLCBhcmlhUmV0aXJlcjogKGMpID0+IGBSZXRpcmVyICR7Y31gLCBjb25maXJtZXI6ICJDb25maXJtZXIiLAogICAgY291bGV1cnM6IHsgcm91Z2U6ICJyb3VnZSIsIGJsYW5jOiAiYmxhbmMiLCBvcmFuZ2U6ICJvcmFuZ2UiLCAicm9zw6kiOiAicm9zw6kiLCBidWxsZXM6ICJidWxsZXMiIH0sCiAgICBkZW1vVGFnOiAiZMOpbW8iLCBxcktvOiAiUVIgaW5kaXNwb25pYmxlIGhvcnMgbGlnbmUiLCBham91dGU6ICJWaW4gYWpvdXTDqS4gTGEgY2FydGUgY2xpZW50IGVzdCDDoCBqb3VyLiIsIGltcG9ydE9rOiAiQ2FydGUgaW1wb3J0w6llLiIsIGltcG9ydEtvOiAobSkgPT4gIkZpY2hpZXIgbm9uIHJlY29ubnUgOiAiICsgbSwgc2Fuc1ZpbnM6ICJjaGFtcCDCqyB2aW5zIMK7IGFic2VudCIsCiAgICByZXNldENvbmZpcm06ICJDb25maXJtZXIgOiBlZmZhY2VyIG1lcyBtb2RpZmljYXRpb25zIiwgcmVzZXRPazogIkNhcnRlIGRlIGTDqW1vIHLDqXRhYmxpZS4iLAogICAgaWFWaWRlOiAiQ29sbGV6IGQnYWJvcmQgbGUgdGV4dGUgZGUgdm90cmUgY2FydGUuIiwgaWFMaXQ6ICJGcmVpYSBsaXQgdm90cmUgY2FydGXigKYiLCBpYVNhbnNKc29uOiAicsOpcG9uc2Ugc2FucyB0YWJsZWF1IEpTT04iLAogICAgaWFPazogKG4pID0+IGAke259IHZpbiR7biA+IDEgPyAicyIgOiAiIn0gYWpvdXTDqSR7biA+IDEgPyAicyIgOiAiIn0uIFbDqXJpZmlleiBsZXMgcHJpeCBldCBsYSBtZW50aW9uIMKrIG5hdHVyZSDCuyBkYW5zIGxlIHRhYmxlYXUuYCwKICAgIGlhS286IChtKSA9PiAiRXh0cmFjdGlvbiBpbXBvc3NpYmxlIDogIiArIG0gKyAiLiBGcmVpYVNlcnZlciBlc3QtaWwgZMOpbWFycsOpID8iLAogICAgY29uZktvOiAobSwgdSkgPT4gYFbDqXJpZmljYXRpb24gaW1wb3NzaWJsZSA6ICR7bX0uIEZyZWlhU2VydmVyIGVzdC1pbCBkw6ltYXJyw6kgKCR7dX0pID9gLAogICAgcGlsb3RlOiAiRGlzcG9uaWJsZSBkYW5zIGxhIHZlcnNpb24gcGlsb3RlIiwgcGlsb3RlTm90ZTogIkTDqW1vIDogY2V0dGUgZm9uY3Rpb24gdXRpbGlzZSBGcmVpYSBlbiBkaXJlY3QsIGVsbGUgc2VyYSBkaXNwb25pYmxlIGRhbnMgbGEgdmVyc2lvbiBwaWxvdGUuIiwKICAgIHJlcG9uZHJlOiAiIiwKICB9LAogIGVuOiB7CiAgICB0aXRyZTogIlJlc3RhdXJhbnQgYmFjayBvZmZpY2UiLCBleWVicm93OiAiVmluaXZlcnMgwrcgcmVzdGF1cmFudCBiYWNrIG9mZmljZSIsIHZvaXI6ICJWaWV3IHRoZSBjdXN0b21lciB3aW5lIGxpc3QiLCBpbXByaW1lcjogIlByaW50IC8gUERGIiwKICAgIGVsaWdUOiAiVmluaXZlcnMgb2ZmZXIiLCBlbGlnTm90ZTogIkZyZWUgZm9yIHZlbnVlcyByZWdpc3RlcmVkIG9uIFZpbml2ZXJzIHdob3NlIGxpc3RpbmcgaGFzIGJlZW4gdXBkYXRlZCB3aXRoaW4gdGhlIHBhc3QgeWVhciBhbmQgd2hvc2Ugd2luZSBsaXN0IGlzIGF0IGxlYXN0IDUwJSBuYXR1cmFsIHdpbmU7IG90aGVyd2lzZSBhIHBhaWQgc3Vic2NyaXB0aW9uIGFwcGxpZXMuIiwKICAgIHFyVDogIlRhYmxlIFFSIGNvZGUiLCBxck5vdGU6ICJQcmludCBpdCBvbiB5b3VyIHRhYmxlIHRlbnRzLiBUaGUgd2luZSBsaXN0IHVwZGF0ZXMgd2l0aG91dCB0aGUgUVIgY29kZSBoYXZpbmcgdG8gY2hhbmdlLiIsCiAgICB2aW5zVDogIldpbmVzIG9uIHRoZSBsaXN0IiwgZXhwb3J0OiAiRXhwb3J0IChKU09OKSIsIGltcG9ydDogIkltcG9ydCAoSlNPTikiLCByZXNldDogIlJlc3RvcmUgdGhlIGRlbW8gd2luZSBsaXN0IiwKICAgIHRoU3RhdHV0OiAiU3RhdHVzIiwgdGhWaW46ICJXaW5lIiwgdGhDb3VsZXVyOiAiQ29sb3VyIiwgdGhOYXR1cmU6ICJOYXR1cmFsIiwgdGhWZXJyZTogIkdsYXNzIiwgdGhCb3V0ZWlsbGU6ICJCb3R0bGUiLAogICAgYWRkVDogIkFkZCBhIHdpbmUiLCBmQ3V2ZWU6ICJDdXbDqWUiLCBmRG9tYWluZTogIkVzdGF0ZSIsIGZBcHBlbGxhdGlvbjogIkFwcGVsbGF0aW9uIiwgZlJlZ2lvbjogIlJlZ2lvbiIsIGZNaWxsZXNpbWU6ICJWaW50YWdlIiwgZkNvdWxldXI6ICJDb2xvdXIiLAogICAgZkNlcGFnZXM6ICJHcmFwZXMiLCBmUGI6ICJCb3R0bGUgcHJpY2UgKOKCrCkiLCBmUHY6ICJHbGFzcyBwcmljZSAo4oKsKSIsIGZTbzI6ICJTdWxwaGl0ZXMiLCBmTGFiZWxzOiAiTGFiZWxzIChjb21tYS1zZXBhcmF0ZWQpIiwgZk5hdHVyZTogIk5hdHVyYWwgd2luZSIsIGZEZXNjOiAiU2hvcnQgZGVzY3JpcHRpb24iLAogICAgcGhEZXNjOiAiU29pbCwgd2luZW1ha2luZywgYWdlaW5nLCBzdHlsZSIsIGFkZEJ0bjogIkFkZCB0byB0aGUgbGlzdCIsCiAgICBpYVQ6ICJCcmluZyBpbiBhbiBleGlzdGluZyB3aW5lIGxpc3QiLCBpYU5vdGU6ICJQYXN0ZSB0aGUgdGV4dCBvZiB5b3VyIGN1cnJlbnQgd2luZSBsaXN0IChjb3BpZWQgZnJvbSBhIFBERiBvciBhIHNwcmVhZHNoZWV0KS4gRnJlaWEgcGlja3Mgb3V0IHRoZSB3aW5lczsgY2hlY2sgdGhlbSBiZWZvcmUgcHVibGlzaGluZy4iLAogICAgaWFQaDogIk1PUkdPTiAyMDI0IOKAkyBEb20uIGRlcyBHcmlsbG9ucywg4oCcUGV0aXQgQ2FpbGxvdeKAnSwgbm8gYWRkZWQgc3VscGhpdGVzIC4uLi4uLi4g4oKsOCAvIOKCrDM4IiwgaWFHbzogIkV4dHJhY3QgdGhlIHdpbmVzIiwKICAgIGNvbmZUOiAiQ2hlY2sgbXkgd2luZSBsaXN0IiwgY29uZk5vdGU6ICJGcmVpYSByZXZpZXdzIHlvdXIgbGlzdDogcHJpY2UgZGlzcGxheSwgY2xhaW1lZCBsYWJlbHMsIGRlc2NyaXB0aW9ucyBpbiB0aGUgbGlnaHQgb2YgdGhlIExvaSDDiXZpbiAodGhlIEZyZW5jaCBsYXcgb24gYWxjb2hvbCBhZHZlcnRpc2luZykgYW5kIGNvbnNpc3RlbmN5IG9mIOKAnG5hdHVyYWzigJ0gY2xhaW1zLiBBIHByb29mcmVhZGluZyBhaWQsIG5vdCBsZWdhbCBhZHZpY2UuIiwgY29uZkdvOiAiUnVuIHRoZSBjaGVjayIsCiAgICBzYXZlZDogIlNhdmVkLiBUaGUgY3VzdG9tZXIgd2luZSBsaXN0IGlzIHVwIHRvIGRhdGUuIiwgc2F2ZUtvOiAiQ291bGRuJ3Qgc2F2ZSBpbiB0aGlzIGJyb3dzZXI6IGV4cG9ydCB0aGUgd2luZSBsaXN0IGFzIEpTT04uIiwKICAgIGVsaWdPazogIkVsaWdpYmxlOiB3aW5lIGxpc3QgcHJvdmlkZWQgZnJlZSBieSBWaW5pdmVycyIsIGVsaWdJbnNjcml0OiAiUGFpZCBvZmZlcjogdmVudWUgbm90IHJlZ2lzdGVyZWQgb24gVmluaXZlcnMiLCBlbGlnRmljaGU6ICJQYWlkIG9mZmVyOiBWaW5pdmVycyBsaXN0aW5nIG5lZWRzIHVwZGF0aW5nIiwKICAgIGVsaWdNYW5xdWU6IChuKSA9PiBgUGFpZCBvZmZlcjogJHtufSBtb3JlIG5hdHVyYWwgd2luZSR7biAhPT0gMSA\/ICJzIiA6ICIifSBuZWVkZWQgdG8gcXVhbGlmeSBmb3IgZnJlZSB1c2VgLAogICAgZmljaGVNYWo6IChkKSA9PiBgbGlzdGluZyB1cGRhdGVkIG9uICR7ZH1gLCBmaWNoZUphbWFpczogImxpc3RpbmcgbmV2ZXIgdXBkYXRlZCIsIGluc2NyaXQ6ICJSZWdpc3RlcmVkIiwgbm9uSW5zY3JpdDogIk5vdCByZWdpc3RlcmVkIiwKICAgIGRldGFpbDogKG5hdCwgdG90YWwsIHBjdCwgc2V1aWwpID0+IGAke25hdH0gbmF0dXJhbCB3aW5lcyBvdXQgb2YgJHt0b3RhbH0gwrcgJHtwY3R9JSAodGhyZXNob2xkICR7c2V1aWx9JSlgLAogICAgZGlzcG86ICJBdmFpbGFibGUiLCBlcHVpc2U6ICJTb2xkIG91dCIsIG5hdHVyZU91aTogIk5hdHVyYWwiLCBuYXR1cmVOb246ICJObyIsIGFyaWFQdjogIlByaWNlIHBlciBnbGFzcyIsIGFyaWFQYjogIkJvdHRsZSBwcmljZSIsIHJldGlyZXI6ICJSZW1vdmUiLCBhcmlhUmV0aXJlcjogKGMpID0+IGBSZW1vdmUgJHtjfWAsIGNvbmZpcm1lcjogIkNvbmZpcm0iLAogICAgY291bGV1cnM6IHsgcm91Z2U6ICJyZWQiLCBibGFuYzogIndoaXRlIiwgb3JhbmdlOiAib3JhbmdlIiwgInJvc8OpIjogInJvc8OpIiwgYnVsbGVzOiAic3BhcmtsaW5nIiB9LAogICAgZGVtb1RhZzogImRlbW8iLCBxcktvOiAiUVIgY29kZSB1bmF2YWlsYWJsZSBvZmZsaW5lIiwgYWpvdXRlOiAiV2luZSBhZGRlZC4gVGhlIGN1c3RvbWVyIHdpbmUgbGlzdCBpcyB1cCB0byBkYXRlLiIsIGltcG9ydE9rOiAiV2luZSBsaXN0IGltcG9ydGVkLiIsIGltcG9ydEtvOiAobSkgPT4gIkZpbGUgbm90IHJlY29nbmlzZWQ6ICIgKyBtLCBzYW5zVmluczogIuKAnHZpbnPigJ0gZmllbGQgbWlzc2luZyIsCiAgICByZXNldENvbmZpcm06ICJDb25maXJtOiBkaXNjYXJkIG15IGNoYW5nZXMiLCByZXNldE9rOiAiRGVtbyB3aW5lIGxpc3QgcmVzdG9yZWQuIiwKICAgIGlhVmlkZTogIlBhc3RlIHRoZSB0ZXh0IG9mIHlvdXIgd2luZSBsaXN0IGZpcnN0LiIsIGlhTGl0OiAiRnJlaWEgaXMgcmVhZGluZyB5b3VyIHdpbmUgbGlzdOKApiIsIGlhU2Fuc0pzb246ICJyZXBseSBjb250YWlucyBubyBKU09OIGFycmF5IiwKICAgIGlhT2s6IChuKSA9PiBgJHtufSB3aW5lJHtuICE9PSAxID8gInMiIDogIiJ9IGFkZGVkLiBDaGVjayB0aGUgcHJpY2VzIGFuZCB0aGUg4oCcbmF0dXJhbOKAnSBmbGFnIGluIHRoZSB0YWJsZS5gLAogICAgaWFLbzogKG0pID0+ICJFeHRyYWN0aW9uIGZhaWxlZDogIiArIG0gKyAiLiBJcyBGcmVpYVNlcnZlciBydW5uaW5nPyIsCiAgICBjb25mS286IChtLCB1KSA9PiBgQ2hlY2sgZmFpbGVkOiAke219LiBJcyBGcmVpYVNlcnZlciBydW5uaW5nICgke3V9KT9gLAogICAgcGlsb3RlOiAiQXZhaWxhYmxlIGluIHRoZSBwaWxvdCB2ZXJzaW9uIiwgcGlsb3RlTm90ZTogIkRlbW86IHRoaXMgZmVhdHVyZSB1c2VzIEZyZWlhIGxpdmU7IGl0IHdpbGwgYmUgYXZhaWxhYmxlIGluIHRoZSBwaWxvdCB2ZXJzaW9uLiIsCiAgICByZXBvbmRyZTogIiBSw6lwb25kcyBlbiBhbmdsYWlzLiIsCiAgfSwKICBkYTogewogICAgdGl0cmU6ICJSZXN0YXVyYW50b21yw6VkZSIsIGV5ZWJyb3c6ICJWaW5pdmVycyDCtyByZXN0YXVyYW50b21yw6VkZSIsIHZvaXI6ICJTZSBnw6ZzdGVybmVzIHZpbmtvcnQiLCBpbXByaW1lcjogIlVkc2tyaXYgLyBQREYiLAogICAgZWxpZ1Q6ICJWaW5pdmVycy10aWxidWQiLCBlbGlnTm90ZTogIkdyYXRpcyBmb3IgcmVzdGF1cmFudGVyLCBkZXIgZXIgdGlsbWVsZHQgVmluaXZlcnMsIGhhciBlbiBwcm9maWwsIGRlciBlciBvcGRhdGVyZXQgaW5kZW4gZm9yIGRldCBzZW5lc3RlIMOlciwgb2cgZXQgdmlua29ydCBtZWQgbWluZHN0IDUwICUgbmF0dXJ2aW47IGVsbGVycyBrcsOmdmVzIGV0IGJldGFsdCBhYm9ubmVtZW50LiIsCiAgICBxclQ6ICJRUi1rb2RlIHRpbCBib3JkZW5lIiwgcXJOb3RlOiAiUHJpbnQgZGVuIHDDpSBib3Jkc2tpbHRlbmUuIFZpbmtvcnRldCBvcGRhdGVyZXMsIHVkZW4gYXQgUVIta29kZW4gc2thbCBza2lmdGVzLiIsCiAgICB2aW5zVDogIlZpbmVuZSBww6Uga29ydGV0IiwgZXhwb3J0OiAiRWtzcG9ydMOpciAoSlNPTikiLCBpbXBvcnQ6ICJJbXBvcnTDqXIgKEpTT04pIiwgcmVzZXQ6ICJHw6UgdGlsYmFnZSB0aWwgZGVtby12aW5rb3J0ZXQiLAogICAgdGhTdGF0dXQ6ICJTdGF0dXMiLCB0aFZpbjogIlZpbiIsIHRoQ291bGV1cjogIkZhcnZlIiwgdGhOYXR1cmU6ICJOYXR1ciIsIHRoVmVycmU6ICJHbGFzIiwgdGhCb3V0ZWlsbGU6ICJGbGFza2UiLAogICAgYWRkVDogIlRpbGbDuGogZW4gdmluIiwgZkN1dmVlOiAiQ3V2w6llIiwgZkRvbWFpbmU6ICJWaW5nw6VyZCIsIGZBcHBlbGxhdGlvbjogIkFwcGVsbGF0aW9uIiwgZlJlZ2lvbjogIlJlZ2lvbiIsIGZNaWxsZXNpbWU6ICLDhXJnYW5nIiwgZkNvdWxldXI6ICJGYXJ2ZSIsCiAgICBmQ2VwYWdlczogIkRydWVzb3J0ZXIiLCBmUGI6ICJQcmlzIHByLiBmbGFza2UgKOKCrCkiLCBmUHY6ICJQcmlzIHByLiBnbGFzICjigqwpIiwgZlNvMjogIlN2b3ZsIiwgZkxhYmVsczogIk3DpnJrZXIgKGFkc2tpbHQgbWVkIGtvbW1hKSIsIGZOYXR1cmU6ICJOYXR1cnZpbiIsIGZEZXNjOiAiS29ydCBiZXNrcml2ZWxzZSIsCiAgICBwaERlc2M6ICJKb3JkYnVuZCwgdmluaWZpa2F0aW9uLCBsYWdyaW5nLCBzdGlsIiwgYWRkQnRuOiAiRsO4aiB0aWwga29ydGV0IiwKICAgIGlhVDogIk92ZXJ0YWcgZXQgZWtzaXN0ZXJlbmRlIHZpbmtvcnQiLCBpYU5vdGU6ICJJbmRzw6Z0IHRla3N0ZW4gZnJhIGRpdCBudXbDpnJlbmRlIHZpbmtvcnQgKGtvcGllcmV0IGZyYSBlbiBwZGYgZWxsZXIgZXQgcmVnbmVhcmspLiBGcmVpYSBmaW5kZXIgdmluZW5lOyB0amVrIGRlbSwgZsO4ciBkdSB1ZGdpdmVyIGRlbS4iLAogICAgaWFQaDogIk1PUkdPTiAyMDI0IOKAkyBEb20uIGRlcyBHcmlsbG9ucywgwrtQZXRpdCBDYWlsbG91wqssIHVkZW4gdGlsc2F0dGUgc3VsZml0dGVyIC4uLi4uLi4gOCDigqwgLyAzOCDigqwiLCBpYUdvOiAiRmluZCB2aW5lbmUiLAogICAgY29uZlQ6ICJUamVrIG1pdCB2aW5rb3J0IiwgY29uZk5vdGU6ICJGcmVpYSBnZW5uZW1nw6VyIGtvcnRldDogcHJpc2FuZ2l2ZWxzZSwgYW5mw7hydGUgbcOmcmtlciwgYmVza3JpdmVsc2VyIHNldCBpIGZvcmhvbGQgdGlsIMOJdmluLWxvdmVuIChkZW4gZnJhbnNrZSBsb3Ygb20gYWxrb2hvbHJla2xhbWUpIG9nIHNhbW1lbmjDpm5nIGkgwrtuYXR1csKrLWFuZ2l2ZWxzZXJuZS4gRW4gaGrDpmxwIHRpbCBrb3JyZWt0dXJlbiwgaWtrZSBqdXJpZGlzayByw6VkZ2l2bmluZy4iLCBjb25mR286ICJTdGFydCB0amVra2V0IiwKICAgIHNhdmVkOiAiR2VtdC4gR8Omc3Rlcm5lcyB2aW5rb3J0IGVyIG9wZGF0ZXJldC4iLCBzYXZlS286ICJLdW5uZSBpa2tlIGdlbW1lIGkgZGVubmUgYnJvd3NlcjogZWtzcG9ydMOpciB2aW5rb3J0ZXQgc29tIEpTT04uIiwKICAgIGVsaWdPazogIkJlcmV0dGlnZXQ6IFZpbml2ZXJzIGdpdmVyIHZpbmtvcnRldCBncmF0aXMiLCBlbGlnSW5zY3JpdDogIkJldGFsdCB0aWxidWQ6IHJlc3RhdXJhbnRlbiBlciBpa2tlIHRpbG1lbGR0IFZpbml2ZXJzIiwgZWxpZ0ZpY2hlOiAiQmV0YWx0IHRpbGJ1ZDogVmluaXZlcnMtcHJvZmlsZW4gc2thbCBvcGRhdGVyZXMiLAogICAgZWxpZ01hbnF1ZTogKG4pID0+IGBCZXRhbHQgdGlsYnVkOiBkZXIgbWFuZ2xlciAke259IG5hdHVydmluJHtuICE9PSAxID8gImUiIDogIiJ9LCBmw7hyIGRldCBibGl2ZXIgZ3JhdGlzYCwKICAgIGZpY2hlTWFqOiAoZCkgPT4gYHByb2ZpbCBvcGRhdGVyZXQgJHtkfWAsIGZpY2hlSmFtYWlzOiAicHJvZmlsIGFsZHJpZyBvcGRhdGVyZXQiLCBpbnNjcml0OiAiVGlsbWVsZHQiLCBub25JbnNjcml0OiAiSWtrZSB0aWxtZWxkdCIsCiAgICBkZXRhaWw6IChuYXQsIHRvdGFsLCBwY3QsIHNldWlsKSA9PiBgJHtuYXR9IG5hdHVydmluZSB1ZCBhZiAke3RvdGFsfSDCtyAke3BjdH0gJSAoZ3LDpm5zZSAke3NldWlsfSAlKWAsCiAgICBkaXNwbzogIlDDpSBsYWdlciIsIGVwdWlzZTogIlVkc29sZ3QiLCBuYXR1cmVPdWk6ICJOYXR1ciIsIG5hdHVyZU5vbjogIk5laiIsIGFyaWFQdjogIlByaXMgcHIuIGdsYXMiLCBhcmlhUGI6ICJQcmlzIHByLiBmbGFza2UiLCByZXRpcmVyOiAiRmplcm4iLCBhcmlhUmV0aXJlcjogKGMpID0+IGBGamVybiAke2N9YCwgY29uZmlybWVyOiAiQmVrcsOmZnQiLAogICAgY291bGV1cnM6IHsgcm91Z2U6ICJyw7hkIiwgYmxhbmM6ICJodmlkIiwgb3JhbmdlOiAib3JhbmdlIiwgInJvc8OpIjogInJvc8OpIiwgYnVsbGVzOiAibW91c3NlcmVuZGUiIH0sCiAgICBkZW1vVGFnOiAiZGVtbyIsIHFyS286ICJRUi1rb2RlbiBlciBpa2tlIHRpbGfDpm5nZWxpZyBvZmZsaW5lIiwgYWpvdXRlOiAiVmluZW4gZXIgdGlsZsO4amV0LiBHw6ZzdGVybmVzIHZpbmtvcnQgZXIgb3BkYXRlcmV0LiIsIGltcG9ydE9rOiAiVmlua29ydGV0IGVyIGltcG9ydGVyZXQuIiwgaW1wb3J0S286IChtKSA9PiAiRmlsZW4gYmxldiBpa2tlIGdlbmtlbmR0OiAiICsgbSwgc2Fuc1ZpbnM6ICJmZWx0ZXQgwrt2aW5zwqsgbWFuZ2xlciIsCiAgICByZXNldENvbmZpcm06ICJCZWtyw6ZmdDogc2xldCBtaW5lIMOmbmRyaW5nZXIiLCByZXNldE9rOiAiRGVtby12aW5rb3J0ZXQgZXIgZ2VuZGFubmV0LiIsCiAgICBpYVZpZGU6ICJJbmRzw6Z0IGbDuHJzdCB0ZWtzdGVuIGZyYSBkaXQgdmlua29ydC4iLCBpYUxpdDogIkZyZWlhIGzDpnNlciBkaXQgdmlua29ydCDigKYiLCBpYVNhbnNKc29uOiAic3ZhcmV0IGluZGVob2xkZXIgaW5nZW4gSlNPTi10YWJlbCIsCiAgICBpYU9rOiAobikgPT4gYCR7bn0gdmluJHtuICE9PSAxID8gImUiIDogIiJ9IHRpbGbDuGpldC4gVGplayBwcmlzZXJuZSBvZyDCu25hdHVywqstbWFya2VyaW5nZW4gaSB0YWJlbGxlbi5gLAogICAgaWFLbzogKG0pID0+ICJEZXQgbHlra2VkZXMgaWtrZSBhdCBmaW5kZSB2aW5lbmU6ICIgKyBtICsgIi4gS8O4cmVyIEZyZWlhU2VydmVyPyIsCiAgICBjb25mS286IChtLCB1KSA9PiBgVGpla2tldCBtaXNseWtrZWRlczogJHttfS4gS8O4cmVyIEZyZWlhU2VydmVyICgke3V9KT9gLAogICAgcGlsb3RlOiAiS29tbWVyIGkgcGlsb3R2ZXJzaW9uZW4iLCBwaWxvdGVOb3RlOiAiRGVtbzogZGVubmUgZnVua3Rpb24gYnJ1Z2VyIEZyZWlhIGxpdmUgb2cgYmxpdmVyIHRpbGfDpm5nZWxpZyBpIHBpbG90dmVyc2lvbmVuLiIsCiAgICByZXBvbmRyZTogIiBSw6lwb25kcyBlbiBkYW5vaXMuIiwKICB9LAogIGVzOiB7CiAgICB0aXRyZTogIkVzcGFjaW8gZGVsIHJlc3RhdXJhbnRlIiwgZXllYnJvdzogIlZpbml2ZXJzIMK3IGVzcGFjaW8gZGVsIHJlc3RhdXJhbnRlIiwgdm9pcjogIlZlciBsYSBjYXJ0YSBkZWwgY2xpZW50ZSIsIGltcHJpbWVyOiAiSW1wcmltaXIgLyBQREYiLAogICAgZWxpZ1Q6ICJPZmVydGEgVmluaXZlcnMiLCBlbGlnTm90ZTogIkdyYXRpcyBwYXJhIGxvcyBlc3RhYmxlY2ltaWVudG9zIGluc2NyaXRvcyBlbiBWaW5pdmVycywgY29uIHVuYSBmaWNoYSBhY3R1YWxpemFkYSBlbiBlbCDDumx0aW1vIGHDsW8geSBjdXlhIGNhcnRhIHRlbmdhIGFsIG1lbm9zIHVuIDUwICUgZGUgdmlub3MgbmF0dXJhbGVzOyBzaSBubywgc3VzY3JpcGNpw7NuIGRlIHBhZ28uIiwKICAgIHFyVDogIkPDs2RpZ28gUVIgcGFyYSBsYXMgbWVzYXMiLCBxck5vdGU6ICJQYXJhIGltcHJpbWlyIGVuIGxvcyBleHBvc2l0b3JlcyBkZSBtZXNhLiBMYSBjYXJ0YSBzZSBhY3R1YWxpemEgc2luIG5lY2VzaWRhZCBkZSBjYW1iaWFyIGVsIGPDs2RpZ28gUVIuIiwKICAgIHZpbnNUOiAiVmlub3MgZGUgbGEgY2FydGEiLCBleHBvcnQ6ICJFeHBvcnRhciAoSlNPTikiLCBpbXBvcnQ6ICJJbXBvcnRhciAoSlNPTikiLCByZXNldDogIlZvbHZlciBhIGxhIGNhcnRhIGRlIGRlbW9zdHJhY2nDs24iLAogICAgdGhTdGF0dXQ6ICJFc3RhZG8iLCB0aFZpbjogIlZpbm8iLCB0aENvdWxldXI6ICJDb2xvciIsIHRoTmF0dXJlOiAiTmF0dXJhbCIsIHRoVmVycmU6ICJDb3BhIiwgdGhCb3V0ZWlsbGU6ICJCb3RlbGxhIiwKICAgIGFkZFQ6ICJBw7FhZGlyIHVuIHZpbm8iLCBmQ3V2ZWU6ICJDdXbDqWUiLCBmRG9tYWluZTogIkJvZGVnYSIsIGZBcHBlbGxhdGlvbjogIkRlbm9taW5hY2nDs24iLCBmUmVnaW9uOiAiUmVnacOzbiIsIGZNaWxsZXNpbWU6ICJBw7FhZGEiLCBmQ291bGV1cjogIkNvbG9yIiwKICAgIGZDZXBhZ2VzOiAiVmFyaWVkYWRlcyIsIGZQYjogIlByZWNpbyBib3RlbGxhICjigqwpIiwgZlB2OiAiUHJlY2lvIGNvcGEgKOKCrCkiLCBmU28yOiAiU3VsZml0b3MiLCBmTGFiZWxzOiAiU2VsbG9zIChzZXBhcmFkb3MgcG9yIGNvbWFzKSIsIGZOYXR1cmU6ICJWaW5vIG5hdHVyYWwiLCBmRGVzYzogIkRlc2NyaXBjacOzbiBicmV2ZSIsCiAgICBwaERlc2M6ICJTdWVsbywgdmluaWZpY2FjacOzbiwgY3JpYW56YSwgcGVyZmlsIiwgYWRkQnRuOiAiQcOxYWRpciBhIGxhIGNhcnRhIiwKICAgIGlhVDogIkltcG9ydGFyIHVuYSBjYXJ0YSBleGlzdGVudGUiLCBpYU5vdGU6ICJQZWd1ZSBlbCB0ZXh0byBkZSBzdSBjYXJ0YSBhY3R1YWwgKGNvcGlhZG8gZGUgdW4gUERGIG8gZGUgdW5hIGhvamEgZGUgY8OhbGN1bG8pLiBGcmVpYSBleHRyYWUgbG9zIHZpbm9zOyByZXbDrXNlbG9zIGFudGVzIGRlIHB1YmxpY2FybG9zLiIsCiAgICBpYVBoOiAiTU9SR09OIDIwMjQg4oCTIERvbS4gZGVzIEdyaWxsb25zLCDCq1BldGl0IENhaWxsb3XCuywgc2luIHN1bGZpdG9zIGHDsWFkaWRvcyAuLi4uLi4uIDgg4oKsIC8gMzgg4oKsIiwgaWFHbzogIkV4dHJhZXIgbG9zIHZpbm9zIiwKICAgIGNvbmZUOiAiUmV2aXNhciBtaSBjYXJ0YSIsIGNvbmZOb3RlOiAiRnJlaWEgcmV2aXNhIGxhIGNhcnRhOiBpbmRpY2FjacOzbiBkZSBwcmVjaW9zLCBzZWxsb3MgZGVjbGFyYWRvcywgZGVzY3JpcGNpb25lcyBhIGxhIGx1eiBkZSBsYSBsZXkgw4l2aW4gKGxhIGxleSBmcmFuY2VzYSBzb2JyZSBwdWJsaWNpZGFkIGRlIGJlYmlkYXMgYWxjb2jDs2xpY2FzKSB5IGNvaGVyZW5jaWEgZGUgbGFzIG1lbmNpb25lcyDCq25hdHVyYWzCuy4gVW5hIGF5dWRhIHBhcmEgbGEgcmV2aXNpw7NuLCBubyB1biBkaWN0YW1lbiBqdXLDrWRpY28uIiwgY29uZkdvOiAiSW5pY2lhciBsYSByZXZpc2nDs24iLAogICAgc2F2ZWQ6ICJHdWFyZGFkby4gTGEgY2FydGEgZGVsIGNsaWVudGUgZXN0w6EgYWN0dWFsaXphZGEuIiwgc2F2ZUtvOiAiTm8gc2UgcHVlZGUgZ3VhcmRhciBlbiBlc3RlIG5hdmVnYWRvcjogZXhwb3J0ZSBsYSBjYXJ0YSBlbiBKU09OLiIsCiAgICBlbGlnT2s6ICJBcHRvOiBWaW5pdmVycyBsZSBvZnJlY2UgbGEgY2FydGEiLCBlbGlnSW5zY3JpdDogIk9mZXJ0YSBkZSBwYWdvOiBlc3RhYmxlY2ltaWVudG8gbm8gaW5zY3JpdG8gZW4gVmluaXZlcnMiLCBlbGlnRmljaGU6ICJPZmVydGEgZGUgcGFnbzogaGF5IHF1ZSBhY3R1YWxpemFyIGxhIGZpY2hhIGRlIFZpbml2ZXJzIiwKICAgIGVsaWdNYW5xdWU6IChuKSA9PiBgT2ZlcnRhIGRlIHBhZ286ICR7biAhPT0gMSA\/ICJmYWx0YW4iIDogImZhbHRhIn0gJHtufSB2aW5vJHtuICE9PSAxID8gInMgbmF0dXJhbGVzIiA6ICIgbmF0dXJhbCJ9IHBhcmEgYWNjZWRlciBhIGxhIGdyYXR1aWRhZGAsCiAgICBmaWNoZU1hajogKGQpID0+IGBmaWNoYSBhY3R1YWxpemFkYSBlbCAke2R9YCwgZmljaGVKYW1haXM6ICJmaWNoYSBudW5jYSBhY3R1YWxpemFkYSIsIGluc2NyaXQ6ICJJbnNjcml0byIsIG5vbkluc2NyaXQ6ICJObyBpbnNjcml0byIsCiAgICBkZXRhaWw6IChuYXQsIHRvdGFsLCBwY3QsIHNldWlsKSA9PiBgJHtuYXR9IHZpbm9zIG5hdHVyYWxlcyBkZSAke3RvdGFsfSDCtyAke3BjdH0gJSAodW1icmFsICR7c2V1aWx9ICUpYCwKICAgIGRpc3BvOiAiRGlzcG9uaWJsZSIsIGVwdWlzZTogIkFnb3RhZG8iLCBuYXR1cmVPdWk6ICJOYXR1cmFsIiwgbmF0dXJlTm9uOiAiTm8iLCBhcmlhUHY6ICJQcmVjaW8gcG9yIGNvcGEiLCBhcmlhUGI6ICJQcmVjaW8gcG9yIGJvdGVsbGEiLCByZXRpcmVyOiAiUXVpdGFyIiwgYXJpYVJldGlyZXI6IChjKSA9PiBgUXVpdGFyICR7Y31gLCBjb25maXJtZXI6ICJDb25maXJtYXIiLAogICAgY291bGV1cnM6IHsgcm91Z2U6ICJ0aW50byIsIGJsYW5jOiAiYmxhbmNvIiwgb3JhbmdlOiAibmFyYW5qYSIsICJyb3PDqSI6ICJyb3NhZG8iLCBidWxsZXM6ICJlc3B1bW9zbyIgfSwKICAgIGRlbW9UYWc6ICJkZW1vIiwgcXJLbzogIkPDs2RpZ28gUVIgbm8gZGlzcG9uaWJsZSBzaW4gY29uZXhpw7NuIiwgYWpvdXRlOiAiVmlubyBhw7FhZGlkby4gTGEgY2FydGEgZGVsIGNsaWVudGUgZXN0w6EgYWN0dWFsaXphZGEuIiwgaW1wb3J0T2s6ICJDYXJ0YSBpbXBvcnRhZGEuIiwgaW1wb3J0S286IChtKSA9PiAiQXJjaGl2byBubyByZWNvbm9jaWRvOiAiICsgbSwgc2Fuc1ZpbnM6ICJmYWx0YSBlbCBjYW1wbyDCq3ZpbnPCuyIsCiAgICByZXNldENvbmZpcm06ICJDb25maXJtYXI6IGJvcnJhciBtaXMgY2FtYmlvcyIsIHJlc2V0T2s6ICJDYXJ0YSBkZSBkZW1vc3RyYWNpw7NuIHJlc3RhYmxlY2lkYS4iLAogICAgaWFWaWRlOiAiUGVndWUgcHJpbWVybyBlbCB0ZXh0byBkZSBzdSBjYXJ0YS4iLCBpYUxpdDogIkZyZWlhIGVzdMOhIGxleWVuZG8gc3UgY2FydGHigKYiLCBpYVNhbnNKc29uOiAicmVzcHVlc3RhIHNpbiB0YWJsYSBKU09OIiwKICAgIGlhT2s6IChuKSA9PiBgJHtufSB2aW5vJHtuICE9PSAxID8gInMiIDogIiJ9IGHDsWFkaWRvJHtuICE9PSAxID8gInMiIDogIiJ9LiBSZXZpc2UgbG9zIHByZWNpb3MgeSBsYSBtZW5jacOzbiDCq25hdHVyYWzCuyBlbiBsYSB0YWJsYS5gLAogICAgaWFLbzogKG0pID0+ICJObyBzZSBoYW4gcG9kaWRvIGV4dHJhZXIgbG9zIHZpbm9zOiAiICsgbSArICIuIMK\/RXN0w6EgZW4gbWFyY2hhIEZyZWlhU2VydmVyPyIsCiAgICBjb25mS286IChtLCB1KSA9PiBgTm8gc2UgaGEgcG9kaWRvIHJldmlzYXIgbGEgY2FydGE6ICR7bX0uIMK\/RXN0w6EgZW4gbWFyY2hhIEZyZWlhU2VydmVyICgke3V9KT9gLAogICAgcGlsb3RlOiAiRGlzcG9uaWJsZSBlbiBsYSB2ZXJzacOzbiBwaWxvdG8iLCBwaWxvdGVOb3RlOiAiRGVtbzogZXN0YSBmdW5jacOzbiB1c2EgRnJlaWEgZW4gZGlyZWN0bzsgZXN0YXLDoSBkaXNwb25pYmxlIGVuIGxhIHZlcnNpw7NuIHBpbG90by4iLAogICAgcmVwb25kcmU6ICIgUsOpcG9uZHMgZW4gZXNwYWdub2wuIiwKICB9LAp9Owpjb25zdCBMID0gQVtWQy5MQU5HXSB8fCBBLmZyOwpjb25zdCB0ID0gKGssIC4uLmEpID0+IHsgY29uc3QgdiA9IExba10gPz8gQS5mcltrXTsgcmV0dXJuIHR5cGVvZiB2ID09PSAiZnVuY3Rpb24iID8gdiguLi5hKSA6IHY7IH07CmlmIChWQy5MQU5HICE9PSAiZnIiKSB7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtaTE4bl0iKS5mb3JFYWNoKChlbCkgPT4geyBlbC50ZXh0Q29udGVudCA9IHQoZWwuZGF0YXNldC5pMThuKTsgfSk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtaTE4bi1waF0iKS5mb3JFYWNoKChlbCkgPT4geyBlbC5wbGFjZWhvbGRlciA9IHQoZWwuZGF0YXNldC5pMThuUGgpOyB9KTsKICBpZiAoZG9jdW1lbnQudGl0bGUgPT09ICJFc3BhY2UgcmVzdGF1cmF0ZXVyIikgZG9jdW1lbnQudGl0bGUgPSB0KCJ0aXRyZSIpOyAgLy8gcGFzIGRhbnMgV29yZFByZXNzIDogbGEgcGFnZSBnYXJkZSBzb24gdGl0cmUKICAvLyBMaXN0ZXMgZHUgZm9ybXVsYWlyZSA6IHZhbGV1cnMgZW4gZnJhbsOnYWlzIChkb25uw6llcyBkZSBsYSBjYXJ0ZSksIGxpYmVsbMOpcyB0cmFkdWl0cy4KICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjZi1jb3VsZXVyIG9wdGlvbiIpLmZvckVhY2goKG8pID0+IHsgby52YWx1ZSA9IG8udmFsdWU7IG8udGV4dENvbnRlbnQgPSBMLmNvdWxldXJzW28udmFsdWVdIHx8IG8udmFsdWU7IH0pOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIiNmLXNvMiBvcHRpb24iKS5mb3JFYWNoKChvKSA9PiB7IG8udmFsdWUgPSBvLnZhbHVlOyBvLnRleHRDb250ZW50ID0gVkMuc28yTGFiZWwoby52YWx1ZSk7IH0pOwp9CmxldCBjYXJ0ZSA9IG51bGw7CmNvbnN0ICQgPSAocykgPT4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzKTsKY29uc3QgY2FydGVVcmwgPSAoKSA9PiB7CiAgY29uc3QgdSA9IG5ldyBVUkwoVkMuVVJMX0NBUlRFLCBsb2NhdGlvbi5ocmVmKTsgdS5zZWFyY2hQYXJhbXMuc2V0KCJyIiwgVkMuU0xVRyk7CiAgaWYgKCFWQy5JTkxJTkUgJiYgVkMuTEFORyAhPT0gImZyIikgdS5zZWFyY2hQYXJhbXMuc2V0KCJsYW5nIiwgVkMuTEFORyk7ICAvLyBXb3JkUHJlc3MgOiB1bmUgcGFnZSBwYXIgbGFuZ3VlICh1cmxDYXJ0ZSkKICByZXR1cm4gdS5ocmVmOwp9OwoKZnVuY3Rpb24gcGVyc2lzdChtc2cpIHsKICBjb25zdCBvayA9IFZDLnNhdmUoY2FydGUpOwogICQoIiNtc2ctdGFibGUiKS50ZXh0Q29udGVudCA9IG9rID8gKG1zZyB8fCB0KCJzYXZlZCIpKSA6IHQoInNhdmVLbyIpOwogIHJlbmRlckVsaWcoKTsKfQoKZnVuY3Rpb24gcmVuZGVyRWxpZygpIHsKICBjb25zdCBlID0gVkMuZWxpZ2liaWxpdGUoY2FydGUpOwogICQoIiNlbGlnLXN0YXR1cyIpLnRleHRDb250ZW50ID0gZS5vayA\/IHQoImVsaWdPayIpCiAgICA6ICFlLmluc2NyaXQgPyB0KCJlbGlnSW5zY3JpdCIpCiAgICA6ICFlLmZpY2hlX29rID8gdCgiZWxpZ0ZpY2hlIikKICAgIDogdCgiZWxpZ01hbnF1ZSIsIGUubWFucXVlKTsKICAkKCIjZWxpZy1zdGF0dXMiKS5jbGFzc05hbWUgPSAic3RhdHVzICIgKyAoZS5vayA\/ICJvayIgOiAia28iKTsKICAkKCIjZWxpZy1iYXIiKS5zdHlsZS53aWR0aCA9IE1hdGgucm91bmQoZS5yYXRpbyAqIDEwMCkgKyAiJSI7CiAgJCgiI2VsaWctc2V1aWwiKS5zdHlsZS5sZWZ0ID0gTWF0aC5yb3VuZChlLnNldWlsICogMTAwKSArICIlIjsKICBjb25zdCBmaWNoZSA9IGUubWFqICYmICFpc05hTihlLm1haikgPyB0KCJmaWNoZU1haiIsIGUubWFqLnRvTG9jYWxlRGF0ZVN0cmluZyhWQy5MT0NBTEUpKSA6IHQoImZpY2hlSmFtYWlzIik7CiAgJCgiI2VsaWctZGV0YWlsIikudGV4dENvbnRlbnQgPSBgJHtlLmluc2NyaXQgPyB0KCJpbnNjcml0IikgOiB0KCJub25JbnNjcml0Iil9IMK3ICR7ZmljaGV9IMK3ICR7dCgiZGV0YWlsIiwgZS5uYXR1cmUsIGUudG90YWwsIE1hdGgucm91bmQoZS5yYXRpbyAqIDEwMCksIE1hdGgucm91bmQoZS5zZXVpbCAqIDEwMCkpfWA7Cn0KCmZ1bmN0aW9uIHJlbmRlclJvd3MoKSB7CiAgJCgiI3Jvd3MiKS5pbm5lckhUTUwgPSBjYXJ0ZS52aW5zLm1hcCgodiwgaSkgPT4gYAogICAgPHRyIGNsYXNzPSIke3YuZGlzcG8gPyAiIiA6ICJvZmYifSIgZGF0YS1pPSIke2l9Ij4KICAgICAgPHRkPjxidXR0b24gY2xhc3M9InRvZ2dsZSAke3YuZGlzcG8gPyAib24iIDogIm91dCJ9IiBkYXRhLWFjdD0iZGlzcG8iPiR7di5kaXNwbyA\/IHQoImRpc3BvIikgOiB0KCJlcHVpc2UiKX08L2J1dHRvbj48L3RkPgogICAgICA8dGQ+PGRpdiBjbGFzcz0iY3YiPiR7VkMuZXNjKHYuY3V2ZWUpfTwvZGl2PjxkaXYgY2xhc3M9Im11dGVkIj4ke1ZDLmVzYyh2LmRvbWFpbmUpfSDCtyAke1ZDLmVzYyh2LmFwcGVsbGF0aW9uIHx8ICIiKX0gJHtWQy5lc2Modi5taWxsZXNpbWUgfHwgIiIpfTwvZGl2PjwvdGQ+CiAgICAgIDx0ZD48c3BhbiBjbGFzcz0iZG90ICR7VkMuZXNjKHYuY291bGV1cil9Ij48L3NwYW4+JHtWQy5lc2MoTC5jb3VsZXVyc1t2LmNvdWxldXJdIHx8IHYuY291bGV1cil9PC90ZD4KICAgICAgPHRkPjxidXR0b24gY2xhc3M9InRvZ2dsZSAke3YubmF0dXJlID8gIm9uIiA6ICIifSIgZGF0YS1hY3Q9Im5hdHVyZSI+JHt2Lm5hdHVyZSA\/IHQoIm5hdHVyZU91aSIpIDogdCgibmF0dXJlTm9uIil9PC9idXR0b24+PC90ZD4KICAgICAgPHRkPjxpbnB1dCB0eXBlPSJudW1iZXIiIHN0ZXA9IjAuNSIgbWluPSIwIiB2YWx1ZT0iJHt2LnByaXhfdmVycmUgPz8gIiJ9IiBkYXRhLWFjdD0icHYiIGFyaWEtbGFiZWw9IiR7dCgiYXJpYVB2Iil9Ij48L3RkPgogICAgICA8dGQ+PGlucHV0IHR5cGU9Im51bWJlciIgc3RlcD0iMC41IiBtaW49IjAiIHZhbHVlPSIke3YucHJpeF9ib3V0ZWlsbGUgPz8gIiJ9IiBkYXRhLWFjdD0icGIiIGFyaWEtbGFiZWw9IiR7dCgiYXJpYVBiIil9Ij48L3RkPgogICAgICA8dGQ+PGJ1dHRvbiBjbGFzcz0idG9nZ2xlIiBkYXRhLWFjdD0iZGVsIiBhcmlhLWxhYmVsPSIke1ZDLmVzYyh0KCJhcmlhUmV0aXJlciIsIHYuY3V2ZWUpKX0iPiR7dCgicmV0aXJlciIpfTwvYnV0dG9uPjwvdGQ+CiAgICA8L3RyPmApLmpvaW4oIiIpOwp9CgpmdW5jdGlvbiByZW5kZXJBbGwoKSB7CiAgJCgiI2V0YWIiKS50ZXh0Q29udGVudCA9IGNhcnRlLmV0YWJsaXNzZW1lbnQ7CiAgJCgiI3ZpbGxlIikuaW5uZXJIVE1MID0gVkMuZXNjKFZDLnRyKGNhcnRlLnZpbGxlIHx8ICIiKSkgKyAoY2FydGUuZGVtbyA\/IGAgPHNwYW4gY2xhc3M9ImRlbW8tdGFnIj4ke3QoImRlbW9UYWciKX08L3NwYW4+YCA6ICIiKTsKICAkKCIjdm9pciIpLmhyZWYgPSBjYXJ0ZVVybCgpOwogICQoIiNpbXByaW1lciIpLmhyZWYgPSBjYXJ0ZVVybCgpICsgIiZwcmludD0xIjsKICAkKCIjdXJsIikudGV4dENvbnRlbnQgPSBjYXJ0ZVVybCgpOwogICQoIiNxciIpLmlubmVySFRNTCA9ICIiOwogIGlmICh3aW5kb3cuUVJDb2RlKSBuZXcgUVJDb2RlKCQoIiNxciIpLCB7IHRleHQ6IGNhcnRlVXJsKCksIHdpZHRoOiAxMzIsIGhlaWdodDogMTMyLCBjb3JyZWN0TGV2ZWw6IFFSQ29kZS5Db3JyZWN0TGV2ZWwuTSB9KTsKICBlbHNlICQoIiNxciIpLnRleHRDb250ZW50ID0gdCgicXJLbyIpOwogIHJlbmRlclJvd3MoKTsgcmVuZGVyRWxpZygpOwp9CgokKCIjcm93cyIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKGUpID0+IHsKICBjb25zdCBiID0gZS50YXJnZXQuY2xvc2VzdCgiYnV0dG9uW2RhdGEtYWN0XSIpOyBpZiAoIWIpIHJldHVybjsKICBjb25zdCBpID0gK2IuY2xvc2VzdCgidHIiKS5kYXRhc2V0LmksIHYgPSBjYXJ0ZS52aW5zW2ldOwogIGlmIChiLmRhdGFzZXQuYWN0ID09PSAiZGlzcG8iKSB2LmRpc3BvID0gIXYuZGlzcG87CiAgaWYgKGIuZGF0YXNldC5hY3QgPT09ICJuYXR1cmUiKSB2Lm5hdHVyZSA9ICF2Lm5hdHVyZTsKICBpZiAoYi5kYXRhc2V0LmFjdCA9PT0gImRlbCIpIHsKICAgIGlmIChiLmRhdGFzZXQuY29uZmlybSAhPT0gIjEiKSB7IGIuZGF0YXNldC5jb25maXJtID0gIjEiOyBiLnRleHRDb250ZW50ID0gdCgiY29uZmlybWVyIik7IHJldHVybjsgfQogICAgY2FydGUudmlucy5zcGxpY2UoaSwgMSk7CiAgfQogIHJlbmRlclJvd3MoKTsgcGVyc2lzdCgpOwp9KTsKJCgiI3Jvd3MiKS5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCAoZSkgPT4gewogIGNvbnN0IGlucCA9IGUudGFyZ2V0LmNsb3Nlc3QoImlucHV0W2RhdGEtYWN0XSIpOyBpZiAoIWlucCkgcmV0dXJuOwogIGNvbnN0IHYgPSBjYXJ0ZS52aW5zWytpbnAuY2xvc2VzdCgidHIiKS5kYXRhc2V0LmldOwogIGNvbnN0IG4gPSBpbnAudmFsdWUgPT09ICIiID8gbnVsbCA6IE51bWJlcihpbnAudmFsdWUpOwogIGlmIChpbnAuZGF0YXNldC5hY3QgPT09ICJwdiIpIHYucHJpeF92ZXJyZSA9IG47IGVsc2Ugdi5wcml4X2JvdXRlaWxsZSA9IG47CiAgcGVyc2lzdCgpOwp9KTsKCiQoIiNhZGQiKS5hZGRFdmVudExpc3RlbmVyKCJzdWJtaXQiLCAoZSkgPT4gewogIGUucHJldmVudERlZmF1bHQoKTsKICBjb25zdCBnID0gKGlkKSA9PiAkKCIjZi0iICsgaWQpLnZhbHVlLnRyaW0oKTsKICBjYXJ0ZS52aW5zLnB1c2goewogICAgaWQ6ICJ2IiArIERhdGUubm93KCkudG9TdHJpbmcoMzYpLCBjdXZlZTogZygiY3V2ZWUiKSwgZG9tYWluZTogZygiZG9tYWluZSIpLCBhcHBlbGxhdGlvbjogZygiYXBwZWxsYXRpb24iKSB8fCAiVmluIGRlIEZyYW5jZSIsCiAgICByZWdpb246IGcoInJlZ2lvbiIpLCBtaWxsZXNpbWU6IGcoIm1pbGxlc2ltZSIpID8gTnVtYmVyKGcoIm1pbGxlc2ltZSIpKSA6IG51bGwsIGNvdWxldXI6IGcoImNvdWxldXIiKSwgY2VwYWdlczogZygiY2VwYWdlcyIpLAogICAgcHJpeF9ib3V0ZWlsbGU6IE51bWJlcihnKCJwYiIpKSwgcHJpeF92ZXJyZTogZygicHYiKSA\/IE51bWJlcihnKCJwdiIpKSA6IG51bGwsIHNvMjogZygic28yIiksCiAgICBsYWJlbHM6IGcoImxhYmVscyIpID8gZygibGFiZWxzIikuc3BsaXQoIiwiKS5tYXAoKHMpID0+IHMudHJpbSgpKS5maWx0ZXIoQm9vbGVhbikgOiBbXSwKICAgIG5hdHVyZTogJCgiI2YtbmF0dXJlIikuY2hlY2tlZCwgZGlzcG86IHRydWUsIGRlc2NyaXB0aW9uOiBnKCJkZXNjIiksCiAgfSk7CiAgZS50YXJnZXQucmVzZXQoKTsgJCgiI2YtbmF0dXJlIikuY2hlY2tlZCA9IHRydWU7CiAgcmVuZGVyUm93cygpOyBwZXJzaXN0KHQoImFqb3V0ZSIpKTsKfSk7CgokKCIjZXhwb3J0IikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7CiAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShjYXJ0ZSwgbnVsbCwgMildLCB7IHR5cGU6ICJhcHBsaWNhdGlvbi9qc29uIiB9KTsKICBjb25zdCBhID0gT2JqZWN0LmFzc2lnbihkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIiksIHsgaHJlZjogVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSwgZG93bmxvYWQ6IGAke1ZDLlNMVUd9Lmpzb25gIH0pOwogIGEuY2xpY2soKTsgVVJMLnJldm9rZU9iamVjdFVSTChhLmhyZWYpOwp9KTsKJCgiI2ltcG9ydCIpLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIGFzeW5jIChlKSA9PiB7CiAgY29uc3QgZiA9IGUudGFyZ2V0LmZpbGVzWzBdOyBpZiAoIWYpIHJldHVybjsKICB0cnkgeyBjb25zdCBjID0gSlNPTi5wYXJzZShhd2FpdCBmLnRleHQoKSk7IGlmICghQXJyYXkuaXNBcnJheShjLnZpbnMpKSB0aHJvdyBuZXcgRXJyb3IodCgic2Fuc1ZpbnMiKSk7IGNhcnRlID0gYzsgcmVuZGVyQWxsKCk7IHBlcnNpc3QodCgiaW1wb3J0T2siKSk7IH0KICBjYXRjaCAoZXJyKSB7ICQoIiNtc2ctdGFibGUiKS50ZXh0Q29udGVudCA9IHQoImltcG9ydEtvIiwgZXJyLm1lc3NhZ2UpOyB9CiAgZS50YXJnZXQudmFsdWUgPSAiIjsKfSk7CiQoIiNyZXNldCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgYXN5bmMgKGUpID0+IHsKICBjb25zdCBiID0gZS5jdXJyZW50VGFyZ2V0OwogIGlmIChiLmRhdGFzZXQuY29uZmlybSAhPT0gIjEiKSB7IGIuZGF0YXNldC5jb25maXJtID0gIjEiOyBiLnRleHRDb250ZW50ID0gdCgicmVzZXRDb25maXJtIik7IHJldHVybjsgfQogIFZDLnJlc2V0KCk7IGNhcnRlID0gYXdhaXQgVkMubG9hZCgpOyByZW5kZXJBbGwoKTsgJCgiI21zZy10YWJsZSIpLnRleHRDb250ZW50ID0gdCgicmVzZXRPayIpOwogIGIuZGF0YXNldC5jb25maXJtID0gIiI7IGIudGV4dENvbnRlbnQgPSB0KCJyZXNldCIpOwp9KTsKCi8vIFJlcHJpc2UgZCd1bmUgY2FydGUgZXhpc3RhbnRlIDogRnJlaWEgcmVudm9pZSB1biB0YWJsZWF1IEpTT04gZGUgdmlucy4KJCgiI2lhLWdvIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBhc3luYyAoKSA9PiB7CiAgY29uc3QgdHh0ID0gJCgiI2lhLXR4dCIpLnZhbHVlLnRyaW0oKSwgbXNnID0gJCgiI2lhLW1zZyIpLCBidG4gPSAkKCIjaWEtZ28iKTsKICBpZiAoIXR4dCkgeyBtc2cudGV4dENvbnRlbnQgPSB0KCJpYVZpZGUiKTsgcmV0dXJuOyB9CiAgYnRuLmRpc2FibGVkID0gdHJ1ZTsgbXNnLnRleHRDb250ZW50ID0gdCgiaWFMaXQiKTsKICBjb25zdCBtZXNzYWdlID0gIkV4dHJhaXMgbGVzIHZpbnMgZGUgY2V0dGUgY2FydGUgZGUgcmVzdGF1cmFudC4gUsOpcG9uZHMgVU5JUVVFTUVOVCBwYXIgdW4gdGFibGVhdSBKU09OLCBzYW5zIHRleHRlIGF1dG91ci4gIiArCiAgICAiQ2hhcXVlIMOpbMOpbWVudCA6IHtcImN1dmVlXCIsIFwiZG9tYWluZVwiLCBcImFwcGVsbGF0aW9uXCIsIFwicmVnaW9uXCIsIFwibWlsbGVzaW1lXCIgKG5vbWJyZSBvdSBudWxsKSwgXCJjb3VsZXVyXCIgKHJvdWdlfGJsYW5jfG9yYW5nZXxyb3PDqXxidWxsZXMpLCAiICsKICAgICJcImNlcGFnZXNcIiwgXCJwcml4X2JvdXRlaWxsZVwiIChub21icmUpLCBcInByaXhfdmVycmVcIiAobm9tYnJlIG91IG51bGwpLCBcInNvMlwiIChzYW5zIHN1bGZpdGVzIGFqb3V0w6lzfG1vaW5zIGRlIDMwIG1nL0x8Y29udmVudGlvbm5lbHxudWxsKSwgIiArCiAgICAiXCJsYWJlbHNcIiAobGlzdGUpLCBcIm5hdHVyZVwiICh0cnVlIHNldWxlbWVudCBzaSBsYSBjYXJ0ZSBsJ2luZGlxdWUgOiBuYXR1cmUsIHNhbnMgc291ZnJlIGFqb3V0w6ksIFZpbiBNw6l0aG9kZSBOYXR1cmUpLCBcImRlc2NyaXB0aW9uXCJ9LiAiICsKICAgICJOJ2ludmVudGUgcmllbiA6IHVuZSBpbmZvcm1hdGlvbiBhYnNlbnRlIHZhdXQgbnVsbC5cblxuW0NBUlRFXVxuIiArIHR4dDsKICB0cnkgewogICAgY29uc3Qgb3V0ID0gYXdhaXQgVkMuYXNrRnJlaWEoeyBtZXNzYWdlLCBwZXJzb25hOiAidmluIiwgY29ycHVzOiBudWxsLCBtYXhUb2tlbnM6IDI1MDAsIHRlbXBlcmF0dXJlOiAwLjEgfSk7CiAgICBjb25zdCBtID0gb3V0Lm1hdGNoKC9cW1tcc1xTXSpcXS8pOyBpZiAoIW0pIHRocm93IG5ldyBFcnJvcih0KCJpYVNhbnNKc29uIikpOwogICAgY29uc3QgdmlucyA9IEpTT04ucGFyc2UobVswXSkuZmlsdGVyKCh2KSA9PiB2ICYmICh2LmN1dmVlIHx8IHYuZG9tYWluZSkpOwogICAgdmlucy5mb3JFYWNoKCh2LCBrKSA9PiBjYXJ0ZS52aW5zLnB1c2goeyBpZDogInYiICsgRGF0ZS5ub3coKS50b1N0cmluZygzNikgKyBrLCBkaXNwbzogdHJ1ZSwgLi4udiwKICAgICAgY291bGV1cjogVkMuQ09VTEVVUlMuaW5jbHVkZXModi5jb3VsZXVyKSA\/IHYuY291bGV1ciA6ICJyb3VnZSIsIG5hdHVyZTogISF2Lm5hdHVyZSwgbGFiZWxzOiBBcnJheS5pc0FycmF5KHYubGFiZWxzKSA\/IHYubGFiZWxzIDogW10gfSkpOwogICAgcmVuZGVyUm93cygpOyBwZXJzaXN0KCk7CiAgICBtc2cudGV4dENvbnRlbnQgPSB0KCJpYU9rIiwgdmlucy5sZW5ndGgpOwogIH0gY2F0Y2ggKGVycikgeyBtc2cudGV4dENvbnRlbnQgPSB0KCJpYUtvIiwgZXJyLm1lc3NhZ2UpOyB9CiAgZmluYWxseSB7IGJ0bi5kaXNhYmxlZCA9IGZhbHNlOyB9Cn0pOwoKJCgiI2NvbmYtZ28iKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGFzeW5jICgpID0+IHsKICBjb25zdCBvdXQgPSAkKCIjY29uZi1vdXQiKSwgYnRuID0gJCgiI2NvbmYtZ28iKTsKICBidG4uZGlzYWJsZWQgPSB0cnVlOyBvdXQuY2xhc3NMaXN0LmFkZCgidHlwaW5nIik7IG91dC5pbm5lckhUTUwgPSAiPHA+PC9wPiI7CiAgY29uc3QgbWVzc2FnZSA9ICJSZWxpcyBjZXR0ZSBjYXJ0ZSBkZXMgdmlucyBkZSByZXN0YXVyYW50IGF2YW50IHB1YmxpY2F0aW9uIChRUiBjb2RlIGV0IFBERikgZXQgc2lnbmFsZSBsZXMgcG9pbnRzIMOgIGNvcnJpZ2VyLCBzb3VzIGZvcm1lIGRlIGxpc3RlIGNvdXJ0ZSBjbGFzc8OpZSBwYXIgaW1wb3J0YW5jZSA6XG4iICsKICAgICIxLiBhZmZpY2hhZ2UgZGVzIHByaXggKFRUQywgY29udGVuYW5jZSBkdSB2ZXJyZSBldCBkZSBsYSBib3V0ZWlsbGUpIDtcbjIuIGxhYmVscyByZXZlbmRpcXXDqXMgKFZpbiBNw6l0aG9kZSBOYXR1cmUsIEFCLCBEZW1ldGVyLCBIVkUpIDogcHLDqWNpc2VyIHF1J2lscyBzdXBwb3NlbnQgdW5lIGNlcnRpZmljYXRpb24gb3UgdW5lIGFkaMOpc2lvbiBkdSB2aWduZXJvbiwgZXQgcmVww6lyZXIgbGVzIGluY29ow6lyZW5jZXMgKGV4LiDCqyBuYXR1cmUgwrsgYXZlYyBzb3VmcmUgY29udmVudGlvbm5lbCkgO1xuIiArCiAgICAiMy4gZGVzY3JpcHRpb25zIDogZm9ybXVsYXRpb25zIGNvbnRyYWlyZXMgw6AgbGEgbG9pIMOJdmluIChpbmNpdGF0aW9uLCBhbGzDqWdhdGlvbiBzYW50w6kpIDtcbjQuIGluZm9ybWF0aW9ucyBtYW5xdWFudGVzIHV0aWxlcyBhdSBjbGllbnQgKG1pbGzDqXNpbWUsIGFwcGVsbGF0aW9uKS5cbiIgKwogICAgIkNpdGUgbGVzIHRleHRlcyBxdWFuZCBsZXMgZG9jdW1lbnRzIGxlcyBmb3Vybmlzc2VudC4gU2kgdG91dCBlc3QgY29uZm9ybWUgc3VyIHVuIHBvaW50LCBkaXMtbGUgZW4gdW5lIGxpZ25lLiIgKyB0KCJyZXBvbmRyZSIpICsgIlxuXG4iICsgVkMuY2FydGVUZXh0ZShjYXJ0ZSwgeyBkaXNwb1NldWxlbWVudDogZmFsc2UgfSk7CiAgdHJ5IHsKICAgIGNvbnN0IGZ1bGwgPSBhd2FpdCBWQy5hc2tGcmVpYSh7IG1lc3NhZ2UsIHBlcnNvbmE6ICJ2aW4iLCBjb3JwdXM6ICJvZW5vbG9ndWUiLCBtYXhUb2tlbnM6IDE1MDAsIHRlbXBlcmF0dXJlOiAwLjIsIG9uQ2h1bms6ICh0KSA9PiB7IG91dC5pbm5lckhUTUwgPSBWQy5tZCh0KTsgfSB9KTsKICAgIG91dC5pbm5lckhUTUwgPSBWQy5tZChmdWxsKTsKICB9IGNhdGNoIChlcnIpIHsgb3V0LmlubmVySFRNTCA9IGA8cCBjbGFzcz0iZXJyIj4ke3QoImNvbmZLbyIsIFZDLmVzYyhlcnIubWVzc2FnZSksIFZDLmVzYyhWQy5GUkVJQSkpfTwvcD5gOyB9CiAgZmluYWxseSB7IG91dC5jbGFzc0xpc3QucmVtb3ZlKCJ0eXBpbmciKTsgYnRuLmRpc2FibGVkID0gZmFsc2U7IH0KfSk7CgooYXN5bmMgKCkgPT4gewogIHRyeSB7IGNhcnRlID0gYXdhaXQgVkMubG9hZCgpOyByZW5kZXJBbGwoKTsgfQogIGNhdGNoIChlKSB7ICQoIiNldGFiIikudGV4dENvbnRlbnQgPSBlLm1lc3NhZ2U7IHJldHVybjsgfQogIC8vIETDqW1vIHB1YmxpcXVlIDogRnJlaWEgbidlc3QgcGFzIGpvaWduYWJsZSwgbGVzIGRldXggZm9uY3Rpb25zIHF1aSBsJ2ludGVycm9nZW50IHNvbnQgcHLDqXNlbnTDqWVzIHNhbnMgw6p0cmUgbGFuY8OpZXMuCiAgaWYgKGF3YWl0IFZDLmxvYWRSZXBvbnNlcygpKSB7CiAgICBmb3IgKGNvbnN0IGlkIG9mIFsiI2lhLWdvIiwgIiNjb25mLWdvIl0pIHsKICAgICAgY29uc3QgYiA9ICQoaWQpOyBiLmRpc2FibGVkID0gdHJ1ZTsgYi50aXRsZSA9IHQoInBpbG90ZSIpOwogICAgICBiLmluc2VydEFkamFjZW50SFRNTCgiYWZ0ZXJlbmQiLCBgPHAgY2xhc3M9Im5vdGUiIHN0eWxlPSJtYXJnaW46OHB4IDAgMCI+JHt0KCJwaWxvdGVOb3RlIil9PC9wPmApOwogICAgfQogIH0KfSkoKTsK\");var s=document.createElement(\"script\");s.text=new TextDecoder().decode(Uint8Array.from(b,function(c){return c.charCodeAt(0)}));document.currentScript.after(s);})();<\/script>\n<script src=\"nav.js\" onerror=\"void 0\"><\/script>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Vinivers \u00b7 espace restaurateur \u2026 Voir la carte client Imprimer \/ PDF Offre Vinivers Gratuit pour un \u00e9tablissement inscrit sur Vinivers, avec une fiche mise \u00e0 jour depuis moins d&#8217;un<\/p>\n<p><a href=\"https:\/\/vinivers.org\/?page_id=189\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\">D\u00e9mo : espace restaurateur<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":188,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/fullwidth-page.php","meta":{"_price":"","_stock":"","_tribe_ticket_header":"","_tribe_default_ticket_provider":"","_tribe_ticket_capacity":"0","_ticket_start_date":"","_ticket_end_date":"","_tribe_ticket_show_description":"","_tribe_ticket_show_not_going":false,"_tribe_ticket_use_global_stock":"","_tribe_ticket_global_stock_level":"","_global_stock_mode":"","_global_stock_cap":"","_tribe_rsvp_for_event":"","_tribe_ticket_going_count":"","_tribe_ticket_not_going_count":"","_tribe_tickets_list":"[]","_tribe_ticket_has_attendee_info_fields":false,"footnotes":"","_tec_slr_enabled":"","_tec_slr_layout":""},"class_list":["post-189","page","type-page","status-publish","hentry"],"ticketed":false,"_links":{"self":[{"href":"https:\/\/vinivers.org\/index.php?rest_route=\/wp\/v2\/pages\/189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vinivers.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vinivers.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vinivers.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vinivers.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=189"}],"version-history":[{"count":3,"href":"https:\/\/vinivers.org\/index.php?rest_route=\/wp\/v2\/pages\/189\/revisions"}],"predecessor-version":[{"id":492,"href":"https:\/\/vinivers.org\/index.php?rest_route=\/wp\/v2\/pages\/189\/revisions\/492"}],"up":[{"embeddable":true,"href":"https:\/\/vinivers.org\/index.php?rest_route=\/wp\/v2\/pages\/188"}],"wp:attachment":[{"href":"https:\/\/vinivers.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}