{"id":9446,"date":"2026-10-08T01:32:24","date_gmt":"2026-10-07T23:32:24","guid":{"rendered":"https:\/\/dorelaiepan.com\/good-seeds\/"},"modified":"2026-10-19T17:28:00","modified_gmt":"2026-10-19T15:28:00","slug":"good-seeds","status":"publish","type":"page","link":"https:\/\/dorelaiepan.com\/ro\/good-seeds\/","title":{"rendered":"Good Seeds"},"content":{"rendered":"<title>Good Seeds<\/title>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Alegreya:ital,wght@0,500;0,700;1,500&#038;family=Nunito+Sans:opsz,wght@6..12,400;6..12,600;6..12,700&#038;display=swap\"><style>#sb button,#sb input,#sb textarea{font:inherit;color:inherit;margin:0;box-shadow:none;text-transform:none;letter-spacing:normal;text-shadow:none;min-height:0;min-width:0;line-height:inherit}\n#sb button{background:none;border:0;border-radius:0;padding:0}\n#sb h1,#sb h2,#sb h3,#sb h4,#sb strong,#sb b{color:inherit;letter-spacing:normal;text-transform:none;padding:0}\n#sb a{box-shadow:none}\nbody.admin-bar #sb{height:calc(100dvh - 46px);margin-top:0}\n@media (min-width:783px){body.admin-bar #sb{height:calc(100dvh - 32px)}}\n\/* Good Seeds: sister of Semin\u021be Bune. Same shell; palette moved to deep lagoon teal + terracotta on warm ivory, brand pink only as a tiny accent. *\/\n:root{\n  --bg:#F6F2EC; --surface:#FFFFFF; --ink:#22313A; --muted:#66727A; --line:#E3DCD2;\n  --moss:#2E6E73; --moss-soft:#DCEBEA; --soil:#B35E39; --soil-soft:#F5E5DA;\n  --header:#1D383E; --on-header:#F6F2EC; --danger:#A1422F; --accent:#FC1370;\n  color-scheme:only light;\n  --display:\"Alegreya\", Georgia, \"Times New Roman\", serif;\n  --body:\"Nunito Sans\", \"Segoe UI\", system-ui, -apple-system, sans-serif;\n}\nhtml{color-scheme:only light;background:#F6F2EC;height:100%;overflow:hidden}\nhtml,body{height:100%}\nbody{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.5;margin:0;padding:0;overflow:hidden}\n[hidden]{display:none!important}\n*{box-sizing:border-box}\n#sb button,#sb input{font:inherit;color:inherit}\n#sb button{cursor:pointer;width:auto}\n:focus-visible{outline:2px solid var(--moss);outline-offset:2px}\n#sb .brand .seed{fill:var(--accent);stroke:none}\n#sb .hd-actions{display:flex;gap:8px;align-items:center}\n#sb .langbtn{background:transparent;color:var(--on-header);border:1px solid color-mix(in srgb,var(--on-header) 40%,transparent);border-radius:999px;padding:6px 10px;font-size:.78rem;font-weight:700;letter-spacing:.06em;display:inline-flex;align-items:center;gap:6px}\n#sb .langlist{display:flex;flex-direction:column;gap:8px}\n#sb .langlist button{display:flex;justify-content:space-between;align-items:center;text-align:left;border:1px solid var(--line);background:var(--bg);border-radius:12px;padding:14px 16px;font-size:1rem}\n#sb .langlist button[aria-pressed=\"true\"]{background:var(--moss-soft);border-color:var(--moss);font-weight:700}\n#sb .langlist button[disabled]{opacity:.55;cursor:default}\n#sb .langlist small{font-size:.75rem;color:var(--muted);font-weight:600}\n#sb .objpanel.short{height:auto;max-height:78%}\n#sb nav.bar button[aria-current=\"page\"]::after{content:\"\";width:4px;height:4px;border-radius:50%;background:var(--accent);margin-top:1px}\n#sb nav.bar .plant[aria-current=\"page\"]::after{display:none}\n#sb{color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.5;height:100vh;height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));margin-top:env(safe-area-inset-top,0px);display:flex;flex-direction:column;max-width:560px;margin:0 auto;background:var(--bg)}\n#sb header.top{background:var(--header);color:var(--on-header);padding:14px 16px 16px;display:flex;align-items:center;gap:12px}\n#sb .brand{display:flex;align-items:center;gap:10px;min-width:0;flex:1}\n#sb .brand svg{flex:none}\n#sb .brand h1{font-family:var(--display);font-weight:700;font-size:clamp(1.05rem,5.2vw,1.35rem);margin:0;line-height:1.1;text-wrap:balance}\n#sb .brand small{display:block;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;opacity:.75}\n#sb .sbback{color:var(--on-header);text-decoration:none;font-size:.8rem;font-weight:600;border:1px solid color-mix(in srgb,var(--on-header) 40%,transparent);border-radius:999px;padding:6px 12px;white-space:nowrap}\n#sb main{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}\n#sb .view{padding-inline:16px;padding-block:20px 32px;display:flex;flex-direction:column;gap:18px}\n#sb h2{font-family:var(--display);font-weight:700;font-size:1.6rem;line-height:1.15;margin:0;text-wrap:balance}\n#sb h3{font-family:var(--display);font-weight:700;font-size:1.15rem;margin:0}\n#sb .lead{color:var(--muted);margin:4px 0 0}\n#sb .eyebrow{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--soil);font-weight:700}\n#sb .card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:12px}\n#sb .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}\n#sb .stat{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 10px;text-align:center}\n#sb .stat b{display:block;font-family:var(--display);font-size:1.7rem;line-height:1;color:var(--moss);font-variant-numeric:tabular-nums}\n#sb .stat span{font-size:.75rem;color:var(--muted)}\n#sb .tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n#sb .tile{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px 12px;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}\n#sb .tile:hover{border-color:var(--moss)}\n#sb .tile .hx{color:var(--moss)}\n#sb .tile strong{font-size:.95rem}\n#sb .tile em{font-style:normal;font-size:.75rem;color:var(--muted)}\n\/* chips *\/\n#sb .label{font-size:.8rem;font-weight:700;color:var(--muted);letter-spacing:.04em}\n#sb .chips{display:flex;flex-wrap:wrap;gap:8px}\n#sb .chip{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 14px;font-size:.9rem;font-variant-numeric:tabular-nums}\n#sb .chip[aria-pressed=\"true\"]{background:var(--moss);border-color:var(--moss);color:var(--surface);font-weight:700}\n#sb .seg{display:grid;grid-template-columns:1fr 1fr;background:var(--moss-soft);border-radius:12px;padding:4px;gap:4px}\n#sb .seg button{border:0;background:transparent;border-radius:9px;padding:9px;font-weight:700;color:var(--muted);display:flex;align-items:center;justify-content:center;gap:8px}\n#sb .seg button[aria-pressed=\"true\"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgb(0 0 0 \/ .12)}\n#sb input[type=text],#sb input[type=number],#sb input[type=date]{width:100%;border:1px solid var(--line);background:var(--bg);border-radius:10px;padding:10px 12px}\n#sb .row{display:flex;gap:8px;align-items:center}\n#sb .row input[type=number]{width:90px}\n#sb .btn{border:0;border-radius:12px;padding:13px 18px;font-weight:700;background:var(--moss);color:var(--surface);width:100%}\n#sb .btn.soft{background:var(--soil-soft);color:var(--soil)}\n#sb .btn.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}\n#sb .btn.danger{background:transparent;border:1px solid var(--danger);color:var(--danger)}\n#sb .btns{display:flex;gap:10px}\n#sb .btns .btn{flex:1}\n#sb .link{background:none;border:0;color:var(--soil);font-weight:700;padding:0;text-decoration:underline;text-underline-offset:3px}\n\/* timer *\/\n#sb .dial{position:relative;width:min(260px,72vw);aspect-ratio:1;max-width:100%;margin:4px auto 0}\n#sb .dial svg{width:100%;height:100%;transform:rotate(-90deg)}\n#sb .dial .track{stroke:var(--moss-soft)}\n#sb .dial .prog{stroke:var(--moss);transition:stroke-dashoffset .25s linear}\n#sb .dial.prep .prog{stroke:var(--soil)}\n#sb .dial .center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}\n#sb .dial .phase{font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:var(--soil);font-weight:700}\n#sb .dial .clock{font-family:var(--display);font-size:3.2rem;line-height:1;font-variant-numeric:tabular-nums}\n#sb .dial .sub{font-size:.85rem;color:var(--muted)}\n#sb .note{font-size:.82rem;color:var(--muted);margin:0}\n#sb .done{background:var(--moss-soft);border-color:transparent}\n\/* journal *\/\n#sb .day{display:flex;flex-direction:column;gap:8px}\n#sb .day h4{margin:0;font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);display:flex;justify-content:space-between;gap:8px}\n#sb .entry{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;align-items:center;gap:12px}\n#sb .entry .hx{color:var(--moss);flex:none}\n#sb .entry.yoga .hx,#sb .entry.recunostinte .hx{color:var(--soil)}\n#sb .entry .txt{flex:1 1 auto;min-width:0;width:auto}\n#sb .entry .txt b{display:block;font-size:.95rem;overflow-wrap:anywhere}\n#sb .entry .txt span{font-size:.8rem;color:var(--muted)}\n#sb .entry .min{font-family:var(--display);font-size:1.2rem;font-variant-numeric:tabular-nums;white-space:nowrap}\n#sb .entry .del{flex:none;width:auto;background:none;border:0;color:var(--muted);padding:4px 6px;font-size:1.1rem;line-height:1}\n#sb .confirm{display:flex;gap:8px;align-items:center;font-size:.85rem;flex-wrap:wrap}\n#sb .empty{text-align:center;color:var(--muted);padding:24px 8px;display:flex;flex-direction:column;align-items:center;gap:10px}\n#sb .empty .hx{color:var(--line)}\n#sb textarea{width:100%;border:1px solid var(--line);background:var(--bg);border-radius:10px;padding:10px 12px;min-height:84px;resize:vertical;font:inherit;color:inherit;line-height:1.45}\n#sb .q{display:flex;flex-direction:column;gap:6px}\n#sb .q label{font-weight:700;font-size:.95rem;line-height:1.35}\n#sb .q .num{font-family:var(--display);color:var(--soil);font-size:1.1rem;margin-right:4px}\n#sb .rrow{display:flex;flex-direction:column;gap:8px;padding-block:12px;border-top:1px solid var(--line)}\n#sb .rrow:first-of-type{border-top:0;padding-top:0}\n#sb .rrow .top{display:flex;gap:8px;align-items:center;justify-content:space-between}\n#sb .mini{display:inline-flex;background:var(--moss-soft);border-radius:999px;padding:3px;gap:2px}\n#sb .mini button{border:0;background:transparent;border-radius:999px;padding:5px 12px;font-size:.82rem;font-weight:700;color:var(--muted)}\n#sb .mini button[aria-pressed=\"true\"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgb(0 0 0 \/ .12)}\n#sb .mini button[data-rk=\"succes\"][aria-pressed=\"true\"]{color:var(--soil)}\n#sb .rm{background:none;border:0;color:var(--muted);font-size:.85rem;padding:4px}\n#sb .recap dt{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--soil);font-weight:700}\n#sb .recap dd{margin:2px 0 12px;white-space:pre-wrap;overflow-wrap:anywhere}\n#sb .recap dd:last-child{margin-bottom:0}\n#sb .vow{background:var(--moss-soft);border-radius:18px;padding:24px 20px;display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center}\n#sb .vow .hx{color:var(--moss)}\n#sb .vow p{font-family:var(--display);font-size:1.18rem;line-height:1.6;margin:0;max-width:34ch;text-wrap:pretty}\n#sb .vow p.last{font-style:italic;color:var(--moss);font-size:1.25rem}\n#sb .breath{display:flex;flex-direction:column;align-items:center;gap:14px;padding-block:8px}\n#sb .orb{width:120px;height:120px;border-radius:50%;background:radial-gradient(circle at 40% 35%,var(--surface),var(--moss-soft) 60%,var(--moss) 140%);transform:scale(.6);transition:transform 4s ease-in-out;display:grid;place-items:center}\n#sb .orb span{font-family:var(--display);font-size:1rem;color:var(--forest,var(--header))}\n#sb .breath .cue{font-family:var(--display);font-size:1.3rem;color:var(--soil);min-height:1.6em}\n#sb .items{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:.88rem}\n#sb .items li{display:flex;gap:8px;align-items:baseline}\n#sb .items .tag{font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--moss);white-space:nowrap}\n#sb .items .tag.succes{color:var(--soil)}\n#sb .entry.col{align-items:flex-start}\n#sb .entry.open{cursor:pointer}\n#sb .rinput{display:flex;align-items:center;gap:0;border:1px solid var(--line);background:var(--bg);border-radius:10px;padding-left:12px}\n#sb .rinput .pre{white-space:nowrap;font-size:.9rem;color:var(--moss);font-weight:700}\n#sb .rinput.succes .pre{color:var(--soil)}\n#sb .rinput input{border:0!important;background:transparent!important;padding:10px 12px 10px 6px!important;min-width:0;flex:1}\n#sb .prev{display:flex;flex-direction:column;gap:6px}\n#sb .prev button{text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:8px 12px;font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n#sb .prev button[aria-pressed=\"true\"]{border-color:var(--moss);background:var(--moss-soft);font-weight:700}\n#sb .todo-btn{align-self:flex-start;border:1px dashed var(--moss);background:transparent;color:var(--moss);border-radius:999px;padding:6px 14px;font-size:.85rem;font-weight:700}\n#sb .todo-btn[disabled]{border-style:solid;opacity:.75;cursor:default}\n#sb .todo{display:flex;align-items:flex-start;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px}\n#sb .todo .ck{flex:none;width:26px;height:26px;border-radius:50%;border:2px solid var(--moss);background:transparent;display:grid;place-items:center;color:var(--surface);margin-top:1px}\n#sb .todo.done .ck{background:var(--moss)}\n#sb .todo.done .tt b{text-decoration:line-through;color:var(--muted);font-weight:600}\n#sb .todo .tt{flex:1;min-width:0}\n#sb .todo .tt b{display:block;font-weight:600;overflow-wrap:anywhere;white-space:pre-wrap}\n#sb .todo .tt span{font-size:.75rem;color:var(--muted)}\n#sb .addrow{display:flex;gap:8px}\n#sb .addrow input{flex:1;min-width:0}\n#sb .addrow .btn{width:auto;padding-inline:16px}\n#sb .gen{background:var(--soil-soft);border-color:transparent}\n#sb .gen .btns .btn{padding:10px}\n#sb .foot{font-size:.8rem;color:var(--muted);text-align:center}\n#sb .objpick{display:flex;flex-direction:column;gap:8px}\n#sb .objtoggle{align-self:flex-start;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:6px 14px;font-size:.85rem;font-weight:700;color:var(--moss)}\n#sb .sheet-bg{position:fixed;inset:0;background:rgb(16 24 26 \/ .45);z-index:2000;display:flex;align-items:flex-end;justify-content:center}\n#sb .objpanel{background:var(--surface);width:100%;max-width:560px;height:78%;border-radius:20px 20px 0 0;padding:14px 16px calc(14px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:10px;box-shadow:0 -6px 24px rgb(0 0 0 \/ .18)}\n#sb .objpanel .grab{width:44px;height:5px;border-radius:3px;background:var(--line);align-self:center}\n#sb .objpanel .top{display:flex;justify-content:space-between;align-items:center;gap:8px}\n#sb .objpanel .x{border:0;background:var(--moss-soft);border-radius:999px;width:34px;height:34px;font-size:1.1rem;line-height:1;color:var(--ink)}\n#sb .objlist{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:6px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}\n#sb .objlist button{text-align:left;border:1px solid var(--line);background:var(--bg);border-radius:12px;padding:12px 14px;font-size:.95rem;line-height:1.4}\n#sb .objlist button[aria-pressed=\"true\"]{background:var(--moss-soft);font-weight:700}\n#sb .objlist .none{font-size:.85rem;color:var(--muted);padding:6px 4px}\n#sb .power{gap:10px}\n#sb .power .eyebrow{display:flex;justify-content:space-between;gap:8px}\n#sb .power .ptext{font-family:var(--display);font-size:1.05rem;line-height:1.55;margin:0;color:var(--ink)}\n#sb .power textarea{min-height:64px}\n#sb .variants{display:grid;grid-template-columns:1fr;gap:6px}\n#sb .variants .chip{text-align:left;border-radius:12px;padding:10px 14px;display:flex;align-items:center;gap:10px;width:100%}\n#sb .variants .chip b{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--moss-soft);color:var(--moss);font-size:.8rem;flex:none}\n#sb .variants .chip[aria-pressed=\"true\"] b{background:var(--surface);color:var(--moss)}\n#sb .variants .chip[disabled]{opacity:.5;cursor:default}\n#sb .ptext mark{background:var(--moss-soft);color:var(--ink);padding:0 3px;border-radius:4px;font-family:var(--body);font-size:.95rem;font-weight:600}\n#sb .precap{display:flex;flex-direction:column;gap:14px}\n#sb .precap h4{margin:0;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--soil)}\n#sb .next{background:var(--header);color:var(--on-header);border-radius:16px;padding:18px;display:flex;flex-direction:column;gap:12px;text-align:center;align-items:center}\n#sb .next h3{color:var(--on-header)}\n#sb .next .btn{background:var(--on-header);color:var(--header);max-width:280px}\n#sb .gate{align-items:center;text-align:center;padding:28px 20px;margin-top:8px}\n#sb .gate .hx{color:var(--moss)}\n#sb .tema-row{display:flex;gap:8px}\n#sb .tema-row input{flex:1;min-width:0}\n#sb .tema-row .btn{width:auto;padding-inline:14px}\n#sb .tag-tema{display:inline-block;background:var(--soil-soft);color:var(--soil);border-radius:999px;padding:2px 10px;font-size:.75rem;font-weight:700;letter-spacing:.02em}\n#sb .exp-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n#sb .exp-row label{display:flex;flex-direction:column;gap:4px;font-size:.8rem;font-weight:700;color:var(--muted)}\n#sb .exp-item{display:flex;flex-direction:column;gap:12px}\n#sb .exp-item+.exp-item{border-top:1px dashed var(--line);padding-top:16px}\n#sb .journal-link{flex-direction:row;align-items:center;justify-content:space-between;text-align:left}\n#sb .slider{display:flex;flex-direction:column;gap:6px}\n#sb .slider .top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}\n#sb .slider output{font-family:var(--display);font-size:1.4rem;color:var(--moss);font-variant-numeric:tabular-nums}\n#sb .slider .ends{display:flex;justify-content:space-between;font-size:.75rem;color:var(--muted)}\n#sb input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:30px;background:transparent;margin:0}\n#sb input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:3px;background:linear-gradient(to right,var(--moss) var(--fill,50%),var(--moss-soft) var(--fill,50%))}\n#sb input[type=range]::-moz-range-track{height:6px;border-radius:3px;background:var(--moss-soft)}\n#sb input[type=range]::-moz-range-progress{height:6px;border-radius:3px;background:var(--moss)}\n#sb input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;margin-top:-10px;border-radius:50%;background:var(--surface);border:3px solid var(--moss);box-shadow:0 1px 4px rgb(0 0 0 \/ .2)}\n#sb input[type=range]::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--surface);border:3px solid var(--moss)}\n#sb input.prep-range::-webkit-slider-runnable-track{background:linear-gradient(to right,var(--soil) var(--fill,50%),var(--soil-soft) var(--fill,50%))}\n#sb input.prep-range::-webkit-slider-thumb{border-color:var(--soil)}\n#sb input.prep-range::-moz-range-progress{background:var(--soil)}\n#sb input.prep-range::-moz-range-thumb{border-color:var(--soil)}\n#sb .slider.prep output{color:var(--soil)}\n#sb .soon{align-items:center;text-align:center;padding:28px 18px}\n#sb .soon .hx{color:var(--soil)}\n#sb .banner{font-size:.78rem;color:var(--soil);background:var(--soil-soft);border-radius:10px;padding:8px 12px}\n.toast{position:fixed;left:50%;bottom:calc(96px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:999px;font-size:.9rem;font-weight:600;z-index:3000;max-width:calc(100vw - 32px);text-align:center}\n\/* community *\/\n#sb .post{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 14px 10px;display:flex;flex-direction:column;gap:10px}\n#sb .post .who{display:flex;align-items:center;gap:10px}\n#sb .av{flex:none;width:38px;height:42px;display:grid;place-items:center;background:var(--moss-soft);color:var(--moss);font-family:var(--display);font-weight:700;font-size:1.05rem;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}\n#sb .av.me{background:var(--soil-soft);color:var(--soil)}\n#sb .post .who b{display:block;font-size:.95rem;line-height:1.2}\n#sb .post .who span{font-size:.75rem;color:var(--muted)}\n#sb .post .who .kind{margin-left:auto;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--soil);text-align:right}\n#sb .post .body{font-size:.95rem;line-height:1.5;overflow-wrap:anywhere}\n#sb .post .body p{margin:0 0 6px}\n#sb .post .body .ql{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--soil);font-weight:700;margin:6px 0 2px}\n#sb .post .body .ptext{font-size:.98rem}\n#sb .post .body h4{margin:8px 0 2px;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--soil)}\n#sb .post .more{background:none;border:0;padding:0;color:var(--moss);font-weight:700;font-size:.85rem;align-self:flex-start}\n#sb .post .acts{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding-top:8px}\n#sb .react{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--moss);background:transparent;color:var(--moss);border-radius:999px;padding:6px 12px;font-weight:700;font-size:.85rem}\n#sb .react[aria-pressed=\"true\"]{background:var(--moss);color:var(--surface)}\n#sb .post .count{font-size:.78rem;color:var(--muted)}\n#sb .post .dots{margin-left:auto;background:none;border:0;color:var(--muted);font-size:.82rem;padding:4px 2px;text-decoration:underline;text-underline-offset:3px}\n#sb .post .who .kind .lang-tag{display:inline-block;border:1px solid currentColor;border-radius:4px;padding:0 4px;margin-right:4px;font-size:.62rem;opacity:.8}\n#sb .shared-tag{display:inline-block;background:var(--moss-soft);color:var(--moss);border-radius:999px;padding:1px 8px;font-size:.68rem;font-weight:700;margin-left:6px;vertical-align:middle}\n#sb .inspo{background:var(--moss-soft);border:0;border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:6px;text-align:left}\n#sb .inspo .eyebrow{color:var(--moss)}\n#sb .inspo p{margin:0;font-family:var(--display);font-size:1.05rem;line-height:1.45}\n#sb .inspo span{font-size:.78rem;color:var(--muted)}\n#sb .chk{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-top:1px solid var(--line);font-size:.92rem;line-height:1.4}\n#sb .chk:first-child{border-top:0}\n#sb .chk input{width:20px;height:20px;margin-top:1px;accent-color:var(--moss);flex:none}\n#sb .chk .ql{display:block;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--soil);font-weight:700}\n#sb .sharebox{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:12px;-webkit-overflow-scrolling:touch}\n#sb .namebox{display:flex;align-items:center;gap:10px;background:var(--bg);border-radius:12px;padding:10px 12px}\n\/* bottom nav *\/\n#sb nav.bar{background:var(--surface);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);align-items:end;padding:6px 4px calc(8px + env(safe-area-inset-bottom,0px))}\n#sb nav.bar button{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:.7rem;font-weight:600;color:var(--muted);padding:4px 0}\n#sb nav.bar button[aria-current=\"page\"]{color:var(--moss)}\n#sb nav.bar .plant{margin-top:-26px}\n#sb nav.bar .plant .hexbtn{width:58px;height:62px;display:grid;place-items:center;background:var(--moss);color:var(--surface);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}\n#sb nav.bar .plant[aria-current=\"page\"] .hexbtn{background:var(--soil)}\n\/* uneltele zilei *\/\n#sb .unelte .uhead{display:flex;align-items:center;justify-content:space-between;gap:8px}\n#sb .unelte .lock{color:var(--muted)}\n#sb .tpair{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n#sb .tcard{perspective:900px;min-height:190px}\n#sb .tcard .in{display:grid;height:100%;transition:transform .7s cubic-bezier(.3,.7,.2,1);transform-style:preserve-3d}\n#sb .tcard.flipped .in{transform:rotateY(180deg)}\n#sb .tcard .face{grid-area:1\/1;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:8px}\n#sb .tcard .back{background:var(--header);color:var(--on-header);align-items:center;justify-content:center;text-align:center;font-family:var(--display);font-size:.95rem;\n  background-image:radial-gradient(circle at 30% 20%,rgb(255 255 255 \/ .08),transparent 50%),repeating-linear-gradient(60deg,rgb(255 255 255 \/ .04) 0 2px,transparent 2px 12px)}\n#sb .tcard .back .hx{color:var(--on-header)}\n#sb .tcard .front{transform:rotateY(180deg);background:var(--ts);border:2px solid var(--tc);color:var(--ink)}\n#sb .tcard .th{display:flex;align-items:center;gap:8px;color:var(--ti)}\n#sb .tcard .th svg{color:var(--tc)}\n#sb .tcard .th svg{flex:none}\n#sb .tcard .set{display:block;font-size:.7rem;letter-spacing:.05em;text-transform:uppercase;font-weight:800;line-height:1.2}\n#sb .tcard .num{display:block;font-size:.72rem;color:var(--muted)}\n#sb .tcard .tt{margin:0;font-size:.9rem;line-height:1.45;overflow-wrap:anywhere}\n#sb .tcard .tt b{color:var(--ti);font-weight:650}\n#sb .tcard .sub{margin:0;font-size:.72rem;color:var(--muted);font-style:italic}\n#sb .tcard .ex{margin:0;font-size:.8rem;line-height:1.45;color:var(--muted)}\n#sb .prow small{display:block;font-weight:400;font-size:.78rem;color:var(--muted)}\n#sb .asteps .kl{margin:8px 0 4px;font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--moss)}\n#sb .asteps ul.kc{margin:0 0 8px;padding-left:18px;line-height:1.5}.asteps ul.kc li{margin:2px 0}\n#sb .kgroup{margin:4px 0 -8px;font-size:.78rem;letter-spacing:.12em;color:var(--soil)}\n#sb .kdom{display:flex;flex-direction:column;gap:12px}.kdom>div{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:6px}\n#sb .kdom b{font-family:var(--display);font-size:1.05rem}.kdom span{display:flex;gap:8px;align-items:center;font-size:.9rem}.kdom i{font-style:normal;flex:none;width:24px;height:26px;display:grid;place-items:center;background:var(--moss-soft);color:var(--moss);font-weight:700;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);font-size:.8rem}\n#sb .asteps .seed{font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--soil);font-weight:700}\n@media (max-width:380px){.tpair{grid-template-columns:1fr}}\n#sb .tsets{display:flex;gap:8px;flex-wrap:wrap}\n#sb .tsets span{color:var(--tc);opacity:.9}\n#sb .lockmsg{margin:0;font-weight:700;color:var(--soil);font-size:.9rem}\n#sb .unote{margin:6px 0 0;font-size:.88rem;white-space:pre-wrap;overflow-wrap:anywhere;border-left:3px solid var(--line);padding-left:8px}\n\/* profil *\/\n#sb .phead{display:flex;align-items:center;gap:14px}\n#sb .phead h2{font-size:1.4rem}\n#sb .stats.four{grid-template-columns:repeat(4,1fr)}\n#sb .stats.four .stat b{font-size:1.4rem}\n#sb .plist{padding:4px 16px;gap:0}\n#sb .prow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 0;border:0;border-bottom:1px solid var(--line);background:none;color:inherit;text-decoration:none;font-weight:600;width:100%;text-align:left}\n#sb .prow:last-child{border-bottom:0}\n#sb .prow .pv{color:var(--muted);font-weight:400;font-size:.85rem}\n#sb .avgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:6px 0 14px;border-bottom:1px solid var(--line)}\n#sb .avgrid button{background:none;border:2px solid transparent;border-radius:12px;padding:4px;display:grid;place-items:center}\n#sb .avgrid button[aria-pressed=\"true\"]{border-color:var(--moss);background:var(--moss-soft)}\n\/* introducere \u0219i despre *\/\n#sb .ovl{position:fixed;inset:0;z-index:2500;display:flex;justify-content:center;background:rgb(20 25 18 \/ .5)}\n#sb .ovl .slide{width:100%;max-width:560px;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:32px 24px calc(28px + env(safe-area-inset-bottom,0px));text-align:center;position:relative;color:#1E2A17}\n#sb .ovl .slide h2{font-size:1.7rem}\n#sb .ovl .slide p{font-size:1.05rem;line-height:1.6;max-width:34ch;margin:0}\n#sb .ovl .x{position:absolute;top:14px;right:14px;border:0;background:rgb(255 255 255 \/ .6);border-radius:999px;width:36px;height:36px;font-size:1.2rem;color:#1E2A17}\n#sb .hexnum{width:64px;height:70px;display:grid;place-items:center;background:var(--moss);color:#fff;font-family:var(--display);font-size:2rem;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);flex:none}\n#sb .hexnum.sm{width:40px;height:44px;font-size:1.25rem}\n#sb .ovl .dots{display:flex;gap:8px}.ovl .dots span{width:8px;height:8px;border-radius:50%;background:rgb(0 0 0 \/ .2)}.ovl .dots span.on{background:var(--moss)}\n#sb .ovl .slide .btns{width:100%;max-width:340px}\n#sb .ovl .about{width:100%;max-width:560px;height:100%;background:var(--bg);display:flex;flex-direction:column}\n#sb .ovl .atop{display:flex;align-items:center;justify-content:space-between;padding:16px;background:var(--header);color:var(--on-header)}\n#sb .ovl .atop .x{position:static;background:rgb(255 255 255 \/ .15);color:var(--on-header)}\n#sb .asteps{flex:1;overflow-y:auto;padding:20px 16px 40px;display:flex;flex-direction:column;gap:22px}\n#sb .asteps section{display:flex;gap:14px;align-items:flex-start}\n#sb .asteps h3{margin:6px 0 6px}\n#sb .asteps p{margin:0 0 8px;line-height:1.55}\n@media print{\n  html,body{height:auto!important;overflow:visible!important;background:#fff!important}\n  .app,#sb{height:auto!important;max-width:none!important}\n  main{overflow:visible!important}\n  header.top,nav.bar,.btn,.btns,.breath,.next,.banner,.toast,.note,.link,.exp-row{display:none!important}\n  .card,.vow{border:0!important;break-inside:avoid}\n}\n@media (prefers-reduced-motion: reduce){*{transition:none!important}}\n\/* Aspect identic cu Detox 21 (func\u021bioneaz\u0103 \u00een aplica\u021bia de telefon): \u00een\u0103l\u021bime fix\u0103, zona din mijloc se deruleaz\u0103, meniul jos *\/\n#sb{display:flex!important;flex-direction:column;height:100vh!important;height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))!important;overflow:hidden;margin-top:0!important}\nbody.admin-bar #sb{height:calc(100vh - 46px)!important;height:calc(100dvh - 46px)!important}\n@media (min-width:783px){body.admin-bar #sb{height:calc(100vh - 32px)!important;height:calc(100dvh - 32px)!important}}\n#sb header.top{flex:none}\n#sb main{flex:1 1 auto!important;min-height:0!important;overflow-y:auto!important;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}\n#sb nav.bar{position:relative;flex:none;z-index:1000}\n\/* Aplica\u021bia de telefon \u00eencarc\u0103 Framework7, care are reguli pentru .view \u0219i .card; le anul\u0103m aici *\/\n#sb .view{position:static!important;height:auto!important;overflow:visible!important;z-index:auto!important;width:auto!important}\n#sb .card{margin:0!important;box-shadow:none!important}\n#sb .chip{height:auto!important;line-height:1.3!important;font-weight:inherit;color:inherit}\n#sb .chip[aria-pressed=\"true\"]{color:var(--surface)!important}\n<\/style><div class=\"app\" id=\"sb\" translate=\"no\" data-no-translation>\n  <header class=\"top\">\n    <div class=\"brand\">\n      <svg width=\"34\" height=\"38\" viewBox=\"0 0 34 38\" aria-hidden=\"true\"><path d=\"M17 2 32 10.5v17L17 36 2 27.5v-17Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"\/><path d=\"M17 28V17M17 20c0-4-3-6-7-6 0 4 3 6 7 6ZM17 17c0-4 3-6.5 7-6.5 0 4-3 6.5-7 6.5Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"\/><path d=\"M10 28h14\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-dasharray=\"1 3\"\/><circle class=\"seed\" cx=\"17\" cy=\"29.6\" r=\"1.7\"\/><\/svg>\n      <div><small>Dorela Iepan<\/small><h1 id=\"appName\">Good Seeds<\/h1><\/div>\n    <\/div>\n    <div class=\"hd-actions\">\n      <button class=\"langbtn\" id=\"langBtn\" type=\"button\" aria-haspopup=\"dialog\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M3 12h18M12 3c2.5 2.6 3.8 5.6 3.8 9s-1.3 6.4-3.8 9c-2.5-2.6-3.8-5.6-3.8-9S9.5 5.6 12 3Z\"\/><\/svg><span id=\"langCode\">EN<\/span><\/button>\n      <a class=\"sbback external\" id=\"backLink\" href=\"#\" target=\"_top\">My courses<\/a>\n    <\/div>\n  <\/header>\n  <main id=\"main\"><\/main>\n  <nav class=\"bar\" id=\"nav\">\n    <button data-tab=\"azi\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"><path d=\"M4 11 12 4l8 7v9h-5v-6H9v6H4Z\"\/><\/svg><span data-i=\"navToday\"><\/span><\/button>\n    <button data-tab=\"jurnal\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"><path d=\"M6 3.5h11a1.5 1.5 0 0 1 1.5 1.5v15H7.5A2 2 0 0 1 5.5 18V4a.5.5 0 0 1 .5-.5Z\"\/><path d=\"M5.5 18a2 2 0 0 1 2-2h11M9 7.5h6M9 10.5h4\"\/><\/svg><span data-i=\"navJournal\"><\/span><\/button>\n    <button data-tab=\"practica\" class=\"plant\"><span class=\"hexbtn\"><svg width=\"26\" height=\"26\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linejoin=\"round\"><path d=\"M12 3c3 3.5 5 6.5 5 10a5 5 0 0 1-10 0c0-3.5 2-6.5 5-10Z\"\/><path d=\"M12 10c1.5 1.8 2.2 3.2 2.2 4.6a2.2 2.2 0 0 1-4.4 0c0-1.4.7-2.8 2.2-4.6Z\"\/><\/svg><\/span><span data-i=\"navPractice\"><\/span><\/button>\n    <button data-tab=\"todo\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"4\" y=\"3.5\" width=\"16\" height=\"17\" rx=\"2.5\"\/><path d=\"m8 9 1.5 1.5L12.5 7.5M8 15.5l1.5 1.5 3-3M15 9.5h1.5M15 16h1.5\"\/><\/svg><span data-i=\"navTodo\"><\/span><\/button>\n    <button data-tab=\"profil\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"><path d=\"M12 2.8 19.8 7.3v9.4L12 21.2 4.2 16.7V7.3Z\"\/><circle cx=\"12\" cy=\"10\" r=\"2.6\"\/><path d=\"M7.6 16.6c.9-2 2.5-3 4.4-3s3.5 1 4.4 3\"\/><\/svg><span data-i=\"navProfile\"><\/span><\/button>\n  <\/nav>\n<\/div><script>window.GRADINA_CONFIG={\"api\": null, \"coursesUrl\": \"https:\/\/dorelaiepan.com\/my-courses\/\", \"loginGate\": true, \"loginUrl\": \"https:\/\/dorelaiepan.com\/membership-profile\/?redirect_to=https:\/\/dorelaiepan.com\/good-seeds\/\", \"registerUrl\": null, \"subsUrl\": \"https:\/\/dorelaiepan.com\/membership-account\/subscriptions\/\"};window.GRADINA_CONFIG.api=window.SB_API||null;(function(){var b=atob(\"Ci8qID09PT09PT09PT09PSBDb25maWcgKGZpbGxlZCBpbiB3aGVuIHB1Ymxpc2hlZCBvbiB0aGUgc2l0ZSkgPT09PT09PT09PT09ICovCmNvbnN0IENPTkZJRyA9IHdpbmRvdy5HUkFESU5BX0NPTkZJRyB8fCB7CiAgYXBpOiBudWxsLAogIGNvdXJzZXNVcmw6ICdodHRwczovL3d3dy5kb3JlbGFpZXBhbi5jb20vJywKICBzdWJzVXJsOiAnaHR0cHM6Ly9kb3JlbGFpZXBhbi5jb20vbWVtYmVyc2hpcC1hY2NvdW50L3N1YnNjcmlwdGlvbnMvJywKICBsb2dpbkdhdGU6IGZhbHNlLCBsb2dpblVybDogbnVsbCwgcmVnaXN0ZXJVcmw6IG51bGwKfTsKCi8qID09PT09PT09PT09PSBMYW5ndWFnZXMgPT09PT09PT09PT09CiAgIEFsbCBpbnRlcmZhY2UgdGV4dCBsaXZlcyBpbiBVSVtsYW5nXTsgYWxsIHByYWN0aWNlIHRleHRzICh2b3dzLCA0IHBvd2VycykgaW4gVFhbbGFuZ10uCiAgIFdoYXQgdGhlIHBlcnNvbiB3cml0ZXMgaXMgc3RvcmVkIG9uY2UsIHVudHJhbnNsYXRlZCwgc28gc3dpdGNoaW5nIGxhbmd1YWdlIG5ldmVyIGxvc2VzIGFueXRoaW5nOgogICBvbmx5IHRoZSBzdXJyb3VuZGluZyB0ZXh0cyBjaGFuZ2UuIEJhc2UgdGhlbWVzIGFyZSBzdG9yZWQgYXMga2V5cyAoQG1vbmV5KSBhbmQgc2hvd24gdHJhbnNsYXRlZC4gKi8KY29uc3QgTEFOR1MgPSBbIFsnZW4nLCdFbmdsaXNoJywnRU4nXSwgWydmcicsJ0ZyYW7Dp2FpcycsJ0ZSJ10sIFsnaXQnLCdJdGFsaWFubycsJ0lUJ10sIFsncm8nLCdSb23Dom7EgycsJ1JPJ10gXTsKY29uc3QgUkVBRFkgPSBbJ2VuJywnZnInLCdpdCcsJ3JvJ107CmNvbnN0IE5FRURTX0dFTkRFUiA9IFsnZnInLCdpdCcsJ3JvJ107ICAgICAvLyBFbmdsaXNoIGhhcyBubyBncmFtbWF0aWNhbCBnZW5kZXIsIHNvIHdlIGRvbid0IGFzawpjb25zdCBMT0NBTEUgPSB7IGVuOidlbi1HQicsIGZyOidmci1GUicsIGl0OidpdC1JVCcsIHJvOidyby1STycgfTsKCmNvbnN0IFVJID0geyBlbjp7CiAgYXBwTmFtZTonR29vZCBTZWVkcycsIGNvdXJzZXM6J015IGNvdXJzZXMnLCBsYW5ndWFnZTonTGFuZ3VhZ2UnLCBzb29uOidjb21pbmcgc29vbicsIGNsb3NlOidDbG9zZScsCiAgbmF2VG9kYXk6J1RvZGF5JywgbmF2Sm95OidKb3knLCBuYXZQcmFjdGljZTonUHJhY3RpY2UnLCBuYXZUb2RvOidUbyBEbycsIG5hdlBvd2VyczonNCBQb3dlcnMnLCBtZW51OidNZW51JywKICBzYXZlRmFpbDoiQ291bGRuJ3Qgc2F2ZS4gQ2hlY2sgeW91ciBpbnRlcm5ldCBjb25uZWN0aW9uLiIsIGxvYWRGYWlsOiJDb3VsZG4ndCBsb2FkIHlvdXIgZGF0YS4iLAogIHRvZGF5OidUb2RheScsIHllc3RlcmRheTonWWVzdGVyZGF5JywKICBraW5kOnsgbWVkaXRhdGllOidNZWRpdGF0aW9uJywgeW9nYTonWW9nYScsIGJ1Y3VyaWU6J0pveSBtZWRpdGF0aW9uJywgcmVjdW5vc3RpbnRlOidHcmF0aXR1ZGUgJiBzdWNjZXNzZXMnLCBwdXRlcmk6J1RoZSA0IHBvd2VycycgfSwKICB0ZXN0QmFubmVyOidUZXN0IHZlcnNpb246IHlvdXIgZW50cmllcyBhcmUga2VwdCBvbmx5IG9uIHRoaXMgZGV2aWNlLiBPbiB0aGUgc2l0ZSB0aGV5IHdpbGwgYmUgc2F2ZWQgdG8geW91ciBhY2NvdW50LicsCiAgZ2VuUTonSG93IHdvdWxkIHlvdSBsaWtlIG1lIHRvIGFkZHJlc3MgeW91PycsIGdlbk5vdGU6J1NvIHRoZSB0ZXh0cyBzb3VuZCBuYXR1cmFsLicsIGZlbTonRmVtaW5pbmUnLCBtYXNjOidNYXNjdWxpbmUnLAogIGdlbkZvb3Q6Zz0+YEFkZHJlc3NpbmcgeW91IGluIHRoZSAke2c9PT0nbSc\/J21hc2N1bGluZSc6J2ZlbWluaW5lJ31gLCBjaGFuZ2U6J2NoYW5nZScsCiAgaGVhZGxpbmU6J1doYXQgYXJlIHlvdSBwbGFudGluZyB0b2RheT8nLCBzdHJlYWs6J2RheXMgaW4gYSByb3cnLCBtaW5Ub2RheTonbWludXRlcyB0b2RheScsIHByYWN0VG9kYXk6J3ByYWN0aWNlcyB0b2RheScsIG5Ub2RheTpuPT5gJHtufSB0b2RheWAsCiAgdGlsZU1lZDonTWVkaXRhdGlvbiAvIFlvZ2EnLCB0aWxlUmVjOidHcmF0aXR1ZGUgLyBTdWNjZXNzZXMnLCB0aWxlSm95OidKb3kgbWVkaXRhdGlvbicsIHRpbGVQb3c6J1RoZSA0IHBvd2VycycsCiAgam91cm5hbDonTXkgam91cm5hbCcsIG5FbnRyaWVzOm49PmAke259ICR7bj09PTE\/J2VudHJ5JzonZW50cmllcyd9YCwKICBqb3lUaXRsZTonSm95IG1lZGl0YXRpb24nLCBqb3lMZWFkOidGaWxsIGluIHRoZSB0aHJlZSBhbnN3ZXJzLCB0aGVuIHNhdmUuJywgYnJlYXRoZUN1ZTonQnJlYXRoZSBpbiBhbmQgb3V0IGRlZXBseSAzIHRpbWVzJywgYnJlYXRoZUJ0bjonQnJlYXRoZSB3aXRoIG1lJywKICBhZGRIZWxwVG9kbzonKyBBZGQgdG8gVG8gRG86IHdobyBJIGhlbHAnLCBuZXdKb3k6J0EgbmV3IGpveSBtZWRpdGF0aW9uJywgc2F2ZTonU2F2ZScsCiAgcGlja1ByZXY6bj0+YENob29zZSBhIHByZXZpb3VzIGdvYWwgKCR7bn0pYCwgbXlHb2FsczonTXkgZ29hbHMnLCBzZWFyY2hHb2FsczonU2VhcmNoIG15IGdvYWxzJywgbm9Hb2FsOidObyBnb2FsIGZvdW5kLicsIG5ld0dvYWxQaDonb3Igd3JpdGUgYSBuZXcgZ29hbCcsCiAgYWRkVG9kbzonKyBBZGQgdG8gVG8gRG8nLCBhZGRlZFRvZG86J+KckyBBZGRlZCB0byBUbyBEbycsIHRvYXN0QWRkZWQ6J0FkZGVkIHRvIFRvIERvJywgZmlsbEFuc3dlcnM6J0ZpbGwgaW4gdGhlIGFuc3dlcnMuJywKICBpbmhhbGU6J0JyZWF0aGUgaW7igKYnLCBleGhhbGU6J0JyZWF0aGUgb3V04oCmJywgYWdhaW46J09uY2UgbW9yZScsIGRvbmVCcmVhdGhQOidZb3UgaGF2ZSBwcmFjdGlzZWQgdG8gZGVhY3RpdmF0ZSB0aGUgc2VlZC4nLCBkb25lQnJlYXRoSjonVGhlIHNlZWQgaGFzIGJlZW4gd2F0ZXJlZC4nLAogIHBvd1RpdGxlOidUaGUgNCBwb3dlcnMnLCBwb3dMZWFkOidDaG9vc2UgdGhlIHRoZW1lIGFuZCB3aGVyZSB5b3Ugc3RhcnQgZnJvbSwgZmlsbCBpbiBlYWNoIHBvd2VyLCB0aGVuIHNhdmUuJywgdGhlbWU6J1RIRU1FJywgdGhlbWVBcmlhOidUaGVtZScsCiAgZmV3ZXI6J1Nob3cgZmV3ZXInLCBhbGxUaGVtZXM6bj0+YEFsbCB0aGVtZXMgKCR7bn0pYCwgbmV3VGhlbWVQaDonb3IgYWRkIGEgbmV3IHRoZW1lJywgYWRkOidBZGQnLCBzdGFydDonV0hFUkUgWU9VIFNUQVJUIEZST00nLAogIHdoZW46J1doZW4nLCB6VG9kYXk6J1RvZGF5JywgelRvbW9ycm93OidUb21vcnJvdycsIGhvd0xvbmc6J0hvdyBsb25nJywKICBwNG5vdGU6J0FmdGVyIHNhdmluZywgeW91ciBwcm9taXNlIGdvZXMgdG8geW91ciBUbyBEbyBsaXN0IGF1dG9tYXRpY2FsbHkuJywgZmlsbFBvd2VyczonRmlsbCBpbiB0aGUgcG93ZXJzLicsIGV4cG9ydExpbms6J0V4cG9ydCB5b3VyIHByYWN0aWNlcyBmb3IgYSBwZXJpb2QnLAogIGluVG9kbzonV2hhdCB5b3UgcHJvbWlzZWQgaW4gdGhlIDR0aCBwb3dlciBpcyBpbiB5b3VyIFRvIERvIGxpc3QuJywgY29weTonQ29weSB0ZXh0JywgcGRmOidTYXZlIFBERicsCiAgZG9Kb3lOb3c6J0RvIHRoZSBqb3kgbWVkaXRhdGlvbiBub3cnLCBnb0pveTonR28gdG8gdGhlIGpveSBtZWRpdGF0aW9uJywgbmV3UG93ZXJzOidTdGFydCBhIG5ldyA0IFBvd2VycyBleGVyY2lzZScsCiAgY29waWVkOidUZXh0IGNvcGllZC4gWW91IGNhbiBwYXN0ZSBpdCBhbnl3aGVyZS4nLCBjb3B5RmFpbDoiQ291bGRuJ3QgY29weSBvbiB0aGlzIGRldmljZS4iLAogIGJhY2s6J+KAuSBCYWNrJywgZXhwVGl0bGU6J0V4cG9ydCB5b3VyIHByYWN0aWNlcycsIGV4cExlYWQ6J0Nob29zZSB0aGUgcGVyaW9kLiBZb3UgY2FuIGNvcHkgdGhlIHRleHQgb3Igc2F2ZSBpdCBhcyBhIFBERi4nLCBmcm9tOidGUk9NJywgdG86J1RPJywKICBuUHJhY3Q6bj0+YCR7bn0gJHtuPT09MT8ncHJhY3RpY2UnOidwcmFjdGljZXMnfSBpbiB0aGlzIHBlcmlvZC5gLCBub1ByYWN0OidZb3UgaGF2ZSBubyA0IHBvd2VycyBwcmFjdGljZXMgaW4gdGhpcyBwZXJpb2QuJywKICByZWNUaXRsZTonR3JhdGl0dWRlIC8gU3VjY2Vzc2VzJywgcmVjTGVhZDonV3JpdGUgYXMgbWFueSBhcyB5b3UgbGlrZS4gRWFjaCBsaW5lIGlzIGEgZ3JhdGl0dWRlIG9yIGEgc3VjY2Vzcy4nLAogIGdyYXRpdHVkZTonR3JhdGl0dWRlJywgc3VjY2VzczonU3VjY2VzcycsIHJvd1R5cGU6aT0+YFR5cGUgb2YgbGluZSAke2l9YCwgZGVsUm93OidEZWxldGUgbGluZScsIHJlbW92ZTonUmVtb3ZlJywgc3VjY2Vzc1BoOid3aGF0IEkgZGlkIHRvZGF5JywKICBhZGRSb3c6JysgQWRkIGFub3RoZXIgbGluZScsIHdyaXRlT25lOidXcml0ZSBhdCBsZWFzdCBvbmUgbGluZS4nLCBzYXZlZEo6J1NhdmVkIHRvIHlvdXIgam91cm5hbCcsCiAgcHJlRzooKT0+IkknbSBncmF0ZWZ1bCBmb3IiLCBwcmVTOigpPT4iSSdtIGhhcHB5IGFib3V0IiwKICBuUmVjOihucixucyk9Pltucj9ucisobnI9PT0xPycgZ3JhdGl0dWRlJzonIGdyYXRpdHVkZXMnKTonJywgbnM\/bnMrKG5zPT09MT8nIHN1Y2Nlc3MnOicgc3VjY2Vzc2VzJyk6JyddLmZpbHRlcihCb29sZWFuKS5qb2luKCcgwrcgJyksCiAgdG9kb1RpdGxlOidUbyBEbycsIHRvZG9MZWFkOidXaGF0IEkgbmVlZCB0byBkbyBzbyB0aGUgc2VlZHMgY2FuIGdyb3cuJywgdG9kb1BoOidBZGQgc29tZXRoaW5nIHRvIGRvJywKICBtYXJrRG9uZTonTWFyayBhcyBkb25lJywgbWFya1VuZG9uZTonTWFyayBhcyBub3QgZG9uZScsIGRlbDonRGVsZXRlJywgbm86J05vJywKICB0b2RvRW1wdHk6J05vdGhpbmcgdG8gZG8gcmlnaHQgbm93Ljxicj5XaGF0IHlvdSB3cml0ZSB1bmRlciDigJx3aG8gSSBoZWxw4oCdIGluIHRoZSBqb3kgbWVkaXRhdGlvbiBhbmQgaW4gdGhlIDR0aCBwb3dlciBjYW4gbGFuZCBoZXJlLicsCiAgc2hvd0RvbmU6KHMsbik9PmAke3M\/J0hpZGUnOidTaG93J30gd2hhdCBJJ3ZlIGRvbmUgKCR7bn0pYCwgc3JjOntidWN1cmllOidKb3kgbWVkaXRhdGlvbicscHV0ZXJpOidUaGUgNCBwb3dlcnMnLG1hbnVhbDonQWRkZWQgYnkgbWUnfSwgZG9uZVRvYXN0OidEb25lLiBXZWxsIGRvbmUhJywKICB0b2RvUHJvbWlzZTp6PT56PT09J21haW5lJz8nVG9tb3Jyb3cgSSBwcm9taXNlIHRvJzonVG9kYXkgSSBwcm9taXNlIHRvJywKICBraW5kQXJpYTonVHlwZSBvZiBwcmFjdGljZScsIGRvbmVIOidEb25lLiBUaGUgc2VlZCBpcyBwbGFudGVkLicsIGRvbmVOb3RlOihrLG0pPT5gJHtrfSwgJHttfSBtaW4uIFNhdmVkIHRvIHlvdXIgam91cm5hbC5gLAogIHRpdGxlT3B0OidUaXRsZSAob3B0aW9uYWwpJywgcGhNb3JuaW5nOidlLmcuIE1vcm5pbmcgbWVkaXRhdGlvbicsIGFub3RoZXI6J0Fub3RoZXIgcHJhY3RpY2UnLAogIHN0b3BwZWRBZnRlcjptPT5gWW91IHN0b3BwZWQgYWZ0ZXIgJHttfSBtaW4uYCwgd2FudFNhdmU6J1NoYWxsIEkgYWRkIGl0IHRvIHlvdXIgam91cm5hbD8nLCBzYXZlTWluOm09PmBTYXZlICR7bX0gbWluYCwgZG9udFNhdmU6IkRvbid0IHNhdmUiLAogIHN0b3BwZWQ6J1RoZSBwcmFjdGljZSB3YXMgc3RvcHBlZC4nLCBiYWNrUGxhaW46J0JhY2snLCByZXN1bWU6J0NvbnRpbnVlJywgcGF1c2U6J1BhdXNlJywgc3RvcDonU3RvcCcsCiAgc2NyZWVuTm90ZToiS2VlcCB5b3VyIHNjcmVlbiBvbi4gSWYgeW91ciBwaG9uZSBsb2NrcywgdGhlIGZpbmFsIGJlbGwgbWF5IG5vdCByaW5nLCBidXQgdGhlIHByYWN0aWNlIGlzIHNhdmVkIHdoZW4geW91IGNvbWUgYmFjay4iLAogIGR1cmF0aW9uOidEVVJBVElPTicsIHByZXA6J1BSRVBBUkFUSU9OJywgc291bmQ6J1NPVU5EJywgYmVsbDonQmVsbCcsIGJvd2w6J1RpYmV0YW4gYm93bCcsIGxpc3RlbjonTGlzdGVuJywgdGl0bGVDYXA6J1RJVExFIChPUFRJT05BTCknLCBwaFNpbGVuY2U6J2UuZy4gNSBtaW51dGVzIG9mIHNpbGVuY2UnLAogIGJlZ2luOidCZWdpbicsIG1hbnVhbExpbms6J0kgcHJhY3Rpc2VkIHdpdGhvdXQgdGhlIHRpbWVyLCBJIGp1c3Qgd2FudCB0byBsb2cgaXQnLCBub1RpbWVyOidXaXRob3V0IHRoZSB0aW1lcicsIGxvZ1ByYWN0OidMb2cgYSBwcmFjdGljZScsIGRheTonREFZJywKICBwaEV2ZW5pbmc6J2UuZy4gRXZlbmluZyB5b2dhJywgc2F2ZUpvdXJuYWw6J1NhdmUgdG8gam91cm5hbCcsIGNhbmNlbDonQ2FuY2VsJywgbG9nZ2VkOidsb2dnZWQnLAogIHJlYWR5OidSZWFkeSB0byBiZWdpbicsIHByZXBQaGFzZTonUHJlcGFyYXRpb24nLCBiZWxsU3RhcnQ6J1RoZSBiZWxsIHJpbmdzIGF0IHRoZSBzdGFydCcsIG9mOidvZiAnLCBwYXVzZWQ6J1BhdXNlZCcsIHByZXNzQ29udDonUHJlc3MgQ29udGludWUnLAogIHBsdXNQcmVwOmw9PmArICR7bH0gcHJlcGFyYXRpb25gLCBub1ByZXA6J25vIHByZXBhcmF0aW9uJywgbm9uZTonTm9uZScsIHVuaXRNaW46J21pbicsIHVuaXRTZWM6J3NlYycsCiAgYWxsOidBbGwnLCBuUHJhY3RpY2VzOm49PmAke259ICR7bj09PTE\/J3ByYWN0aWNlJzoncHJhY3RpY2VzJ31gLCB0b3RNaW46bT0+YCDCtyAke219IG1pbnV0ZXMgaW4gdG90YWxgLAogIGpFbXB0eTonTm8gc2VlZHMgaGVyZSB5ZXQuPGJyPk1lZGl0YXRlIG9yIGxvZyBhIHByYWN0aWNlIGFuZCBpdCB3aWxsIHNob3cgdXAgaW4geW91ciBqb3VybmFsLicsIGdvUHJhY3RpY2U6J0dvIHRvIHByYWN0aWNlJywKICBkZWxROidEZWxldGUgdGhpcyBwcmFjdGljZT8nLCBkZWxldGVkOidEZWxldGVkJywKICBnYXRlTGVhZDonVGhlIGFwcCBpcyBmcmVlLiBTaWduIGluIHNvIHlvdXIgZW50cmllcyBzdGF5IHNhdmVkLicsIHNpZ25JbjonU2lnbiBpbicsIHJlZ2lzdGVyOiJEb24ndCBoYXZlIGFuIGFjY291bnQ\/IENyZWF0ZSBvbmUgZm9yIGZyZWUiCn19OwoKY29uc3QgVFggPSB7IGVuOnsKICB2b3dKb3k6WwogICAgJ0kgZG8gdGhlc2UgdGhpbmdzIGJlY2F1c2UgbXkgcmVhbGl0eSBpcyBkaWN0YXRlZCBieSB0aGUgc2VlZHMgSSBwbGFudCwgd2hpY2ggYXJlIHByb2plY3RlZCBvbnRvIHRoZSBlbXB0aW5lc3Mgb2YgYSByZWFsaXR5IHRoYXQgZG9lcyBub3QgY29tZSBmcm9tIGl0cyBvd24gc2lkZS4nLAogICAgJ0JlY2F1c2UgSSBoYXZlIHBsYW50ZWQgdGhlc2Ugc2VlZHMsIHdoaWNoIEkgYW0gbm93IGFsc28gd2F0ZXJpbmcsIEkgd2lsbCBzdWNjZWVkLicsCiAgICAnQmVjYXVzZSBJIHN1Y2NlZWQgdXNpbmcgdGhpcyBzeXN0ZW0sIHNvbWUgb2YgbXkgZnJpZW5kcyBhbmQgYWNxdWFpbnRhbmNlcyB3aWxsIGNvcHkgbWUgYW5kIHN1Y2NlZWQgaW4gdHVybi4gQmVjYXVzZSB0aGV5IHN1Y2NlZWQgdXNpbmcgdGhpcyBzeXN0ZW0sIHRoZWlyIGZyaWVuZHMgYW5kIGFjcXVhaW50YW5jZXMgd2lsbCBjb3B5IHRoZW0gaW4gdHVybi4nLAogICAgJ0luIHRoaXMgd2F5LCB0aHJvdWdoIG15IGV4YW1wbGUsIEkgc2V0IG9mZiBhIGNoYWluIHJlYWN0aW9uIHRoYXQgaW5zcGlyZXMgdGhvdXNhbmRzIGFuZCB0aG91c2FuZHMgb2YgcGVvcGxlIHRvIHVzZSB0aGlzIHN5c3RlbSBhbmQgc3VjY2VlZC4nXSwKICB2b3dKb3lMYXN0OidXaGljaCB3aWxsIG1ha2UgdGhlIHdvcmxkIGEgYmV0dGVyIGFuZCBtb3JlIGJlYXV0aWZ1bCBwbGFjZS4nLAogIHFKb3k6eyBvYmllY3RpdjonVGhlIGdvYWwgSSBkZWRpY2F0ZSB0aGlzIGpveSBtZWRpdGF0aW9uIHRvJywgc2VtaW50ZTonV2hhdCBzZWVkcyBJIGhhdmUgcGxhbnRlZCcsCiAgICAgICAgIGFqdXRvcjonV2hvIGRvIEkgaW50ZW5kIHRvIGhlbHAgZm9yIDEgaG91ciBhIHdlZWs\/IFdoZW4gZG8gSSB3YW50IHRvIGRvIGl0PyBXaGF0IHdpbGwgSSBkbyBmb3IgdGhpcyBwZXJzb24\/JyB9LAogIHBvd2Vyczp7IHAxOlsnUG93ZXIgMScsJ1JlbWVtYmVyaW5nIHRoZSBwZW4nXSwgcDI6WydQb3dlciAyJywnSW50ZWxsaWdlbnQgcmVncmV0J10sIHAzOlsnUG93ZXIgMycsJ1Jlc3RyYWludCddLCBwNDpbJ1Bvd2VyIDQnLCdUaGUgYW50aWRvdGUnXSB9LAogIHZvd1BvdzooKT0+WwogICAgJ0kgZG8gdGhlc2UgdGhpbmdzIGJlY2F1c2UgcmVhbGl0eSBpcyBkaWN0YXRlZCBieSB0aGUgc2VlZHMgSSBwbGFudCBhbmQgaXMgcHJvamVjdGVkIG9udG8gdGhlIGVtcHRpbmVzcyBvZiBhIHJlYWxpdHkgdGhhdCBkb2VzIG5vdCBjb21lIGZyb20gaXRzIG93biBzaWRlLicsCiAgICAnSWYgSSBwbGFudCBwb3NpdGl2ZSBzZWVkcywgSSBhbSBmb3JjZWQgdG8gcGVyY2VpdmUgYSBwb3NpdGl2ZSByZWFsaXR5LCBldmVuIGlmIHRoZSBwZW9wbGUgYXJvdW5kIG1lIHBlcmNlaXZlIGl0IGFzIG5lZ2F0aXZlLiBJZiBJIHBsYW50IG5lZ2F0aXZlIHNlZWRzLCBJIGFtIGZvcmNlZCB0byBwZXJjZWl2ZSBhIHJlYWxpdHkgdGhhdCBpcyB1bmZhdm91cmFibGUgdG8gbWUsIGV2ZW4gaWYgdGhlIHBlb3BsZSBhcm91bmQgbWUgcGVyY2VpdmUgaXQgYXMgcG9zaXRpdmUuJywKICAgICdTbyBJIGNob29zZSB0byBwbGFudCBwb3NpdGl2ZSBzZWVkcy4nLAogICAgJ0JlY2F1c2UgSSBzdWNjZWVkIHVzaW5nIHRoaXMgc3lzdGVtLCBzb21lIG9mIG15IGZyaWVuZHMgYW5kIGFjcXVhaW50YW5jZXMgd2lsbCBjb3B5IG1lIGFuZCBzdWNjZWVkIGluIHR1cm4uIEJlY2F1c2UgdGhleSBzdWNjZWVkLCB0aGVpciBmcmllbmRzIGFuZCBhY3F1YWludGFuY2VzIHdpbGwgY29weSB0aGVtIGFuZCBzdWNjZWVkLiddLAogIHZvd1Bvd0xhc3Q6J0luIHRoaXMgd2F5LCB0aGUgd29ybGQgYmVjb21lcyBhIGJldHRlciBhbmQgbW9yZSBiZWF1dGlmdWwgcGxhY2UuJywKICBwb3dIZWFkOidUSEUgNCBQT1dFUlMnLCBwb3dIZWFkQ2FzZTonVGhlIDQgcG93ZXJzJywKICB0aGVtZXM6eyAnQG1vbmV5JzonTW9uZXknLCAnQHJlbGF0aW9uc2hpcHMnOidSZWxhdGlvbnNoaXBzJywgJ0BoZWFsdGgnOidIZWFsdGgnIH0sCiAgZHVyOlsnNSBzZWNvbmRzJywnMSBtaW51dGUnLCc1IG1pbnV0ZXMnLCcxMCBtaW51dGVzJywnMSBob3VyJywndGhlIHdob2xlIGRheSddLAogIC8qIGNoaXBzIHVuZGVyIFBvd2VyIDM6ICJmb3IgYXQgbGVhc3QgWCIgaXMgYWRkZWQgdG8gKG9yIHJlcGxhY2VzIHRoZSBlbmQgb2YpIHdoYXQgdGhlIHBlcnNvbiB3cm90ZSAqLwogIGR1ckFwcGVuZDpkPT5kPT09J3RoZSB3aG9sZSBkYXknPydmb3IgdGhlIHdob2xlIGRheSc6J2ZvciBhdCBsZWFzdCAnK2QsCiAgZHVyU3RyaXA6L1xzKihmb3JccyspPyhhdCBsZWFzdFxzKyk\/KDUgc2Vjb25kc3wxIG1pbnV0ZXw1IG1pbnV0ZXN8MTAgbWludXRlc3wxIGhvdXJ8dGhlIHdob2xlIGRheSlccyokL2ksCiAgbGVhZDovXnRvXHMrL2ksICAgLy8gInRvIGNhbGwgbXkgbW90aGVyIiAtPiAiY2FsbCBteSBtb3RoZXIiIGFmdGVyICJJIHByb21pc2UgdG8iCiAgemk6ej0+ej09PSdtYWluZSc\/J3RvbW9ycm93JzondG9kYXknLAogIHRhaWxQMToiQW5kIHBlcmhhcHMgSSBkb24ndCBldmVuIGtub3cgeWV0IHdoYXQgb3RoZXIgc2VlZHMgSSBoYXZlIHBsYW50ZWQsIHN1cmVseSBtYW55IG90aGVycyB0aGF0IEkgZG9uJ3QgcmVtZW1iZXIgbm93LiBXaGF0ZXZlciBJIG1heSBoYXZlIHRob3VnaHQsIHNhaWQgb3IgZG9uZSwgSSB3YW50IHRvIGRlYWN0aXZhdGUgdGhlc2Ugc2VlZHMgbm93LiIsCiAgdGFpbFAyOiJJIGhhdmUgaHVydCBteXNlbGYgYW5kIHRoZSBwZW9wbGUgYXJvdW5kIG1lLiBJIGFtIHNvcnJ5LCBhbmQgSSB3YW50IHRvIGRlYWN0aXZhdGUgdGhlc2Ugc2VlZHMgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSwgYWxvbmcgd2l0aCBhbGwgdGhlIGNoYWlucyBvZiBldmVudHMgdGhhdCBmb2xsb3cgZnJvbSB0aGVtLCBiZWNhdXNlIEkgbm93IHVuZGVyc3RhbmQgdGhhdCB0aGV5IGRvdWJsZSBldmVyeSAyNCBob3VycywgYW5kIHRoZSBzb29uZXIgSSBkZWFjdGl2YXRlIHRoZW0sIHRoZSBiZXR0ZXIhIiwKICBuaWdodDonQW5kIHRvbmlnaHQsIGNvbnNjaW91c2x5LCBmcm9tIHRoZSBtb21lbnQgSSBsYXkgbXkgaGVhZCBvbiB0aGUgcGlsbG93IGFuZCBmYWxsIGFzbGVlcCB1bnRpbCBJIHdha2UgdXAgaW4gdGhlIG1vcm5pbmcuJywKICBzdGQ6ewogICAgcDI6eyBmb3JtOigpPT5bWyd0JywnV2hhdCBiZW5lZml0cyBJIGhhdmUgaGFkJ10sWydwMicsJ21hdGVyaWFsIG9yIGVnbyBiZW5lZml0cyddXSwKICAgICAgICAgcmVjYXA6ZT0+YFdpdGggdGhlIGxldmVsIG9mIGF3YXJlbmVzcyBJIGhhZCBpbiB0aGUgeWVhcnMgd2hlbiBJIHRob3VnaHQgLyBzYWlkIC8gZGlkIHRoZXNlIHRoaW5ncywgdGhhdCB3YXMgYWxsIEkga25ldyBob3cgdG8gZG8uIEkgY2VydGFpbmx5IGhhZCBtYXRlcmlhbCBvciBlZ28gYmVuZWZpdHM6ICR7bWsoZS5wMil9LiBBbmQgcGVyaGFwcyBJIGFsc28gaGFkIG90aGVyIGJlbmVmaXRzIHRoYXQgSSBkb24ndCByZW1lbWJlciBub3cuIEkgbm93IHJlYWxpc2UgdGhhdCBJIGhhdmUgcGFpZCwgYW5kIGFtIHN0aWxsIHBheWluZywgZmFyIHRvbyBoaWdoIGEgcHJpY2UgZm9yIGFsbCB0aGVzZSBiZW5lZml0cy4gJHt0eCgpLnRhaWxQMn1gIH0sCiAgICBwMzp7IGZvcm06KCk9PltbJ3QnLCdJIHByb21pc2XigKYnXSxbJ3AzJywnd2hhdCBJIHByb21pc2Ugbm90IHRvIGRvIGFueW1vcmUsIGFuZCBmb3IgaG93IGxvbmcsIGUuZy46IG5vdCB0byDigKYgZm9yIGF0IGxlYXN0IDEgbWludXRlJ10sWydkdXInLCdhZGQnXV0sCiAgICAgICAgIHJlY2FwOmU9PmBJIHByb21pc2UgJHttayhlLnAzKX0uICR7dHgoKS5uaWdodH1gIH0sCiAgICBwNDp7IGZvcm06KCk9PltbJ3ppJ10sWyd0JyxgJHtwRHJhZnQuemk9PT0nbWFpbmUnPydUb21vcnJvdyc6J1RvZGF5J30gSSBwcm9taXNlIHRv4oCmYF0sWydwNCcsJ3doYXQgSSB3aWxsIGRvLCBhcyB0aGUgc2VlZCBvcHBvc2l0ZSB0byB0aGUgb25lIEkgd2FudCB0byBkZWFjdGl2YXRlJ11dLAogICAgICAgICByZWNhcDplPT5gQXMgYSBjb21wZW5zYXRpbmcgZ2VzdHVyZSwgSSBkZWRpY2F0ZSB0aGUgZmFjdCB0aGF0IEkgbm93IHVuZGVyc3RhbmQgdGhhdCB0aGUgcmVhbGl0eSBJIGV4cGVyaWVuY2UgY29tZXMgZnJvbSB0aGUgc2VlZHMgSSBwbGFudGVkIGluIHRoZSBwYXN0LCB3aGljaCBhcmUgcHJvamVjdGVkIG9udG8gdGhlIGVtcHRpbmVzcyBvZiBhIHJlYWxpdHkgdGhhdCBkb2VzIG5vdCBjb21lIGZyb20gaXRzIG93biBzaWRlLCBhbmQgJHt0eCgpLnppKGUuemkpfSBJIHByb21pc2UgdG8gJHttayhub0xlYWQoZS5wNCkpfS5gIH0KICB9LAogIHB2OnsKICAgIDE6eyBuYW1lOigpPT4nV2hhdCBJIGFtIGZvcmNlZCB0byBleHBlcmllbmNlJywKICAgICAgICBwMTp7IGZvcm06KCk9PltbJ3QnLCdJIGFtIGZvcmNlZCB0byBleHBlcmllbmNlIGluIG15IHJlYWxpdHnigKYnXSxbJ3AxYScsJ3doYXQgSSBhbSBleHBlcmllbmNpbmcgbm93J10sCiAgICAgICAgICAgICAgICAgICAgICAgWyd0Jywn4oCmYmVjYXVzZSBvZiBteSB0aG91Z2h0cywgd29yZHMgYW5kIGFjdGlvbnMgZnJvbSBteSBwYXN0LCBpbiB0aGlzIGxpZmUgb3IgaW4gYSBwcmV2aW91cyBsaWZlLCB3aGVu4oCmJ10sWydwMWInLCd3aGF0IHNlZWRzIEkgcGxhbnRlZCddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBJIGFtIGZvcmNlZCB0byBleHBlcmllbmNlIGluIG15IHJlYWxpdHkgJHttayhlLnAxYSl9IGJlY2F1c2Ugb2YgbXkgdGhvdWdodHMsIHdvcmRzIGFuZCBhY3Rpb25zIGZyb20gbXkgcGFzdCwgaW4gdGhpcyBsaWZlIG9yIGluIGEgcHJldmlvdXMgbGlmZSwgd2hlbiAke21rKGUucDFiKX0uICR7dHgoKS50YWlsUDF9YCB9IH0sCiAgICAyOnsgbmFtZTooKT0+J1doaWNoIHNlZWRzIEkgd2FudCB0byBjbGVhcicsCiAgICAgICAgcDE6eyBmb3JtOigpPT5bWyd0JywnSSB3YW50IHRvIGRlYWN0aXZhdGUgdGhlIHNlZWRzIHBsYW50ZWQgd2hlbuKApiddLFsncDFiJywnd2hhdCBJIHRob3VnaHQsIHNhaWQgb3IgZGlkJ11dLAogICAgICAgICAgICAgcmVjYXA6ZT0+YEkgd2FudCB0byBkZWFjdGl2YXRlIHRoZSBzZWVkcyBwbGFudGVkIHdoZW4gJHttayhlLnAxYil9LCBiZWNhdXNlIHRoZXkgZG91YmxlIGV2ZXJ5IDI0IGhvdXJzIGFuZCBJIG5vIGxvbmdlciB3YW50IHRoZXNlIHNlZWRzIHRvIGdyb3cuIFdoYXQncyBtb3JlLCBwZXJoYXBzIEkgaGF2ZSBhbHNvIHBsYW50ZWQgb3RoZXIgc2VlZHMgdGhhdCBJIGRvbid0IHJlbWVtYmVyIG5vdy4gV2hhdGV2ZXIgSSBtYXkgaGF2ZSB0aG91Z2h0LCBzYWlkIG9yIGRvbmUsIEkgd2FudCB0byBkZWFjdGl2YXRlIHRoZXNlIHNlZWRzIG5vdy5gIH0gfSwKICAgIDM6eyBuYW1lOigpPT4nSSBjbGVhciBhbiBlbW90aW9uJywKICAgICAgICBwMTp7IGZvcm06KCk9PltbJ3QnLCdJIHdhbnQgdG8gY2xlYXIgdGhlIHNlZWRzIG9m4oCmJ10sWydwMWUnLCd0aGUgZW1vdGlvbiBvciBwYXR0ZXJuOiBhbmdlciwgZW52eSwgZmVhcuKApiddLAogICAgICAgICAgICAgICAgICAgICAgIFsndCcsJ+KApnBsYW50ZWQgdGhyb3VnaCB0aG91Z2h0cywgd29yZHMgYW5kIGFjdGlvbnMgaW4gbXkgcGFzdCwgaW4gdGhpcyBsaWZlIG9yIGluIGEgcHJldmlvdXMgbGlmZSwgd2hpY2ggZm9yY2UgbWUgdG8gZXhwZXJpZW5jZeKApiddLFsncDFhJywndGhlIHNpdHVhdGlvbiBJIGFtIGxpdmluZyddLAogICAgICAgICAgICAgICAgICAgICAgIFsndCcsJ1doZW7igKYnXSxbJ3AxYicsJ3doYXQgSSB0aGluayBJIHBsYW50ZWQnXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gSSB3YW50IHRvIGNsZWFyIHRoZSBzZWVkcyBvZiAke21rKGUucDFlKX0gcGxhbnRlZCB0aHJvdWdoIHRob3VnaHRzLCB3b3JkcyBhbmQgYWN0aW9ucyBpbiBteSBwYXN0LCBpbiB0aGlzIGxpZmUgb3IgaW4gYSBwcmV2aW91cyBsaWZlLCB3aGljaCBmb3JjZSBtZSB0byBleHBlcmllbmNlICR7bWsoZS5wMWEpfS4gV2hlbiAke21rKGUucDFiKX0uICR7dHgoKS50YWlsUDF9YCB9IH0sCiAgICA0OnsgbmFtZTooKT0+IkkgZG9uJ3Qga25vdyB3aGF0IHNlZWRzIEkgcGxhbnRlZCIsCiAgICAgICAgcDE6eyBmb3JtOigpPT5bWyd0JywnSSBoYXZlIG5vIGlkZWEgd2hhdCBJIGNvdWxkIGhhdmUgcGxhbnRlZCB0byBleHBlcmllbmNlIHRoaXMgc2l0dWF0aW9uOiddLFsncDFhJywndGhlIHNpdHVhdGlvbiBJIGFtIGxpdmluZyddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBJIGhhdmUgbm8gaWRlYSB3aGF0IEkgY291bGQgaGF2ZSBwbGFudGVkIHRvIGV4cGVyaWVuY2UgdGhpcyBzaXR1YXRpb246ICR7bWsoZS5wMWEpfS4gQnV0IEkgbm93IHVuZGVyc3RhbmQgdGhhdCBpZiBJIGhhZCBub3QgcGxhbnRlZCB0aGUgc2VlZHMsIHRoaXMgc2l0dWF0aW9uIHdvdWxkIG5vdCBiZSBpbiBteSByZWFsaXR5LiBJIHdhbnQgdG8gZGVhY3RpdmF0ZSB0aGUgcGxhbnRlZCBzZWVkcyBub3cuYCB9LAogICAgICAgIHAyOnsgZm9ybTooKT0+W1sndCcsJ0lmIGEgZmV3IGJlbmVmaXRzIGNvbWUgdG8gbWluZCAob3B0aW9uYWwpJ10sWydwMicsJ3lvdSBjYW4gbGVhdmUgdGhpcyBibGFuayddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBJIGNlcnRhaW5seSBoYWQgYmVuZWZpdHMsIGV2ZW4gaWYgSSBkb24ndCBrbm93IHdoYXQgc2VlZHMgSSBwbGFudGVkIG9yIHdoYXQgYmVuZWZpdHMgSSBoYWQuICR7U3RyaW5nKGUucDJ8fCcnKS50cmltKCkgPyBgUGVyaGFwcyAke21rKGUucDIpfSwgYW5kIHRoZXJlIGFyZSBzdXJlbHkgb3RoZXIgYmVuZWZpdHMgSSBtYXkgaGF2ZSBoYWQuYCA6ICdUaGVyZSBhcmUgc3VyZWx5IGJlbmVmaXRzIEkgbWF5IGhhdmUgaGFkLid9ICR7dHgoKS50YWlsUDJ9YCB9LAogICAgICAgIHAzOnsgZm9ybTooKT0+W1sndCcsJ0kgcHJvbWlzZSBub3QgdG8gcGxhbnQgdGhlIHNhbWUgc2VlZHMgYWdhaW4gZm9yIGF0IGxlYXN04oCmJ10sWydwMycsJ2hvdyBsb25nLCBlLmcuOiAxIGhvdXInXSxbJ2R1cicsJ3NldCddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBJIHByb21pc2Ugbm90IHRvIHBsYW50IHRoZSBzYW1lIHNlZWRzIGFnYWluIGZvciBhdCBsZWFzdCAke21rKGUucDMpfS4gJHt0eCgpLm5pZ2h0fWAgfSwKICAgICAgICBwNDp7IGZvcm06KCk9PltbJ3ppJ10sWyd0JyxgQXMgYSBjb21wZW5zYXRpbmcgZ2VzdHVyZSwgJHtwRHJhZnQuemk9PT0nbWFpbmUnPyd0b21vcnJvdyc6J3RvZGF5J30gSSBwcm9taXNlIHRv4oCmYF0sWydwNCcsJ3doYXQgSSB3aWxsIGRvJ11dLAogICAgICAgICAgICAgcmVjYXA6ZT0+YEFzIGEgY29tcGVuc2F0aW5nIGdlc3R1cmUsICR7dHgoKS56aShlLnppKX0gSSBwcm9taXNlIHRvICR7bWsobm9MZWFkKGUucDQpKX0uYCB9IH0KICB9Cn19OwoKLyogLS0tLS0tLS0tLSBjb21tdW5pdHkgdGV4dHMgKEVuZ2xpc2gpIC0tLS0tLS0tLS0gKi8KT2JqZWN0LmFzc2lnbihVSS5lbiwgewogIHBlcnNvbmFsOidQZXJzb25hbCcsIGNvbW11bml0eTonQ29tbXVuaXR5Jywgc2VnQXJpYTonV2hhdCB5b3Ugc2VlJywKICBjb21tVGl0bGU6J0NvbW11bml0eScsIGNvbW1MZWFkOiJXaGVuIHlvdSByZWpvaWNlIGluIG90aGVyIHBlb3BsZSdzIHN1Y2Nlc3NlcywgeW91IHdhdGVyIHRoZSBzZWVkcyBmb3IgeW91ciBvd24gZ29hbC4gV2hlbiB5b3UgcmVhZCBzb21lb25lJ3MgNCBwb3dlcnMsIHlvdSBjYW4gZ28gdGhyb3VnaCB0aGVtIGZvciB5b3Vyc2VsZiB0b28uIiwKICBjb21tVGVzdEJhbm5lcjonVGVzdCB2ZXJzaW9uOiB5b3Ugc2VlIGEgZmV3IGV4YW1wbGVzIGhlcmUuIE9uIHRoZSBzaXRlLCB0aGUgcmVhbCBwb3N0cyBvZiB0aG9zZSB3aG8gY2hvb3NlIHRvIHNoYXJlIHdpbGwgYXBwZWFyLicsCiAgY29tbUVtcHR5OidOb3RoaW5nIGhlcmUgeWV0LicsIGFwcGVhckluOm49PmBZb3UgYXBwZWFyIGluIHRoZSBjb21tdW5pdHkgYXMgPGI+JHtufTwvYj5gLAogIHJlYWN0Sm95OidJIHJlam9pY2UnLCBjb3VudEpveToncmVqb2ljZWQnLCB0b2FzdEpveTonV2hlbiB5b3UgcmVqb2ljZSBmb3Igb3RoZXJzLCB5b3Ugd2F0ZXIgdGhlIHNlZWRzIGZvciB5b3VyIG93biBnb2FsLicsCiAgcmVhY3RQb3c6J0kgcmVhZCBpdCcsIGNvdW50UG93OidyZWFkIGl0JywgdG9hc3RQb3c6J1lvdeKAmXZlIHJlYWQgdGhlIDQgcG93ZXJzIGFzIHdlbGwuJywKICBnZXN0Tm90ZToiTWluZCB0aGUgY29tcGVuc2F0aW5nIGdlc3R1cmU6IGNob29zZSBhIHBlcnNvbmFsIG9uZSBhbmQgcHJhY3Rpc2UgaXQgdG8gZGVhY3RpdmF0ZSB0aGUgc2VlZHMuIEl0IGRvZXNuJ3QgaGF2ZSB0byBiZSB3aGF0IHRoZSBvdGhlciBwZXJzb24gcHJvbWlzZWQuIiwKICBub2JvZHlZZXQ6J05vIG9uZSB5ZXQnLCB3aXRoZHJhdzonV2l0aGRyYXcnLCByZXBvcnQ6J1JlcG9ydCcsIHJlcG9ydEFnYWluOidUYXAgYWdhaW4gdG8gcmVwb3J0JywgcmVwb3J0ZWQ6J1RoYW5rIHlvdS4gVGhlIHBvc3QgaGFzIGJlZW4gaGlkZGVuIGFuZCB3aWxsIGJlIHJldmlld2VkLicsCiAgcmVhZEZ1bGw6J1JlYWQgYWxsIDQgcG93ZXJzIGluIGZ1bGwnLCBzaG93TGVzczonU2hvdyBsZXNzJywgeW91Oid5b3UnLAogIGluc3BvSGVhZDpuPT5gRnJvbSB0aGUgY29tbXVuaXR5IMK3ICR7bn1gLCBpbnNwb01vcmU6J1NlZSB3aGF0IG90aGVycyBoYXZlIHBsYW50ZWQg4oC6JywKICBzaGFyZUJ0bjonU2hhcmUgYW5vbnltb3VzbHkgd2l0aCB0aGUgY29tbXVuaXR5Jywgc2hhcmVkQnRuOidTaGFyZWQgaW4gdGhlIGNvbW11bml0eSDCtyB3aXRoZHJhdycsIHNoYXJlZFRhZzonaW4gdGhlIGNvbW11bml0eScsCiAgd2hvU2VlczonV0hPIFNFRVMgSVQnLCBvbmx5TWU6J09ubHkgbWUnLCBzaGFyZUFub246J1NoYXJlIGFub255bW91c2x5Jywgc2hhcmVBZnRlcjonQWZ0ZXIgc2F2aW5nLCB5b3UgY2hvb3NlIHdoYXQgYXBwZWFycyBpbiB0aGUgY29tbXVuaXR5IGFuZCB1bmRlciB3aGljaCBuYW1lLicsCiAgc2hlZXRTaGFyZWQ6J1NoYXJlZCBpbiB0aGUgY29tbXVuaXR5Jywgc2hlZXRTaGFyZWROb3RlOm49PmBUaGlzIGVudHJ5IGlzIHZpc2libGUgaW4gdGhlIGNvbW11bml0eSB1bmRlciB0aGUgbmFtZSA8Yj4ke259PC9iPi4gSWYgeW91IHdpdGhkcmF3IGl0LCBpdCBkaXNhcHBlYXJzIGZvciBldmVyeW9uZS4gSXQgc3RheXMgaW4geW91ciBqb3VybmFsLmAsCiAgYmxvY2tlZE5vdGU6J1NoYXJpbmcgaW4gdGhlIGNvbW11bml0eSBpcyBubyBsb25nZXIgYXZhaWxhYmxlIGZvciB5b3VyIGFjY291bnQuJywKICBuYW1lTGFiZWw6J1lvdXIgbmFtZSBpbiB0aGUgY29tbXVuaXR5JywgbmFtZVBoOidlLmcuIExpbmRlbiBCbG9zc29tJywgbmFtZU5vdGU6Ikl0IGRvZXNuJ3QgaGF2ZSB0byBiZSB5b3VyIHJlYWwgbmFtZS4gWW91IGNhbiBjaGFuZ2UgaXQgYW55dGltZS4iLAogIGFwcGVhcnNBczpuPT5gWW91IGFwcGVhciBhcyA8Yj4ke259PC9iPmAsIG90aGVyc1JlYWQ6J1RISVMgSVMgV0hBVCBPVEhFUlMgV0lMTCBSRUFEJywgY2hvb3NlU2hhcmU6J0NIT09TRSBXSEFUIFRPIFNIQVJFJywKICBwcml2YWN5Tm90ZTonQmVmb3JlIHNoYXJpbmcsIGNoZWNrIHRoYXQgbm8gbmFtZXMgb3IgZGV0YWlscyBhcHBlYXIgYnkgd2hpY2ggc29tZW9uZSBjb3VsZCBiZSByZWNvZ25pc2VkLicsCiAgd2l0aGRyYXdCdG46J1dpdGhkcmF3IGZyb20gdGhlIGNvbW11bml0eScsIHNoYXJlRG86J1NoYXJlJywgbmFtZVNob3J0OidDaG9vc2UgYSBuYW1lIG9mIGF0IGxlYXN0IDIgbGV0dGVycy4nLCBjaG9vc2VPbmU6J0Nob29zZSBhdCBsZWFzdCBvbmUgbGluZS4nLAogIHNoYXJlZFRvYXN0OidTaGFyZWQgd2l0aCB0aGUgY29tbXVuaXR5Jywgd2l0aGRyYXduOidXaXRoZHJhd24gZnJvbSB0aGUgY29tbXVuaXR5JywgbmFtZVNhdmVkOidOYW1lIHNhdmVkJywKICBuYW1lU2hlZXROb3RlOiJJdCBkb2Vzbid0IGhhdmUgdG8gYmUgeW91ciByZWFsIG5hbWUuIEl0IGFsc28gY2hhbmdlcyBvbiB3aGF0IHlvdSBoYXZlIGFscmVhZHkgc2hhcmVkLiIsCiAgZmlyc3RROidIb3cgZG8geW91IHdhbnQgdG8gYXBwZWFyIGluIHRoZSBjb21tdW5pdHk\/JywgZmlyc3ROb3RlOiJDaG9vc2UgYSBuYW1lIHRoYXQgZG9lc24ndCBoYXZlIHRvIGJlIHlvdXIgcmVhbCBvbmUuIFlvdSBvbmx5IHVzZSBpdCB3aGVuIHlvdSBjaG9vc2UgdG8gc2hhcmUgc29tZXRoaW5nLiBZb3UgY2FuIGNoYW5nZSBpdCBhbnl0aW1lLiIsCiAgbGF0ZXI6J0xhdGVyJywgd2VsY29tZTpuPT5gV2VsY29tZSwgJHtufSFgLCBhcGlGYWlsOiJDb3VsZG4ndCBjb25uZWN0IHRvIHRoZSBzaXRlLiIsCiAgZXJyOnsgYmxvY2F0OidTaGFyaW5nIGlzIG5vIGxvbmdlciBhdmFpbGFibGUgZm9yIHlvdXIgYWNjb3VudC4nLCBmYXJhX251bWU6J0ZpcnN0IGNob29zZSBhIG5hbWUgZm9yIHRoZSBjb21tdW5pdHkuJywgZ29sOidUaGVyZSBpcyBub3RoaW5nIHRvIHNoYXJlLicsCiAgICAgICAgcHJlYV9tdWx0ZToiWW91J3ZlIHNoYXJlZCBhIGxvdCB0b2RheS4gQ29tZSBiYWNrIHRvbW9ycm93LiIsIGx1YXQ6J1RoaXMgbmFtZSBpcyBhbHJlYWR5IHRha2VuLiBDaG9vc2UgYW5vdGhlciBvbmUuJywgbnVtZTonVGhlIG5hbWUgbXVzdCBoYXZlIGJldHdlZW4gMiBhbmQgMzAgbGV0dGVycy4nIH0KfSk7CgovKiAtLS0tLS0tLS0tIEZyYW7Dp2FpcyAtLS0tLS0tLS0tICovClVJLmZyID0gewogIGFwcE5hbWU6J0Jvbm5lcyBHcmFpbmVzJywgY291cnNlczonTWVzIGNvdXJzJywgbGFuZ3VhZ2U6J0xhbmd1ZScsIHNvb246J2JpZW50w7R0JywgY2xvc2U6J0Zlcm1lcicsCiAgbmF2VG9kYXk6IkF1am91cmQnaHVpIiwgbmF2Sm95OidCb25oZXVyJywgbmF2UHJhY3RpY2U6J1ByYXRpcXVlJywgbmF2VG9kbzonw4AgZmFpcmUnLCBuYXZQb3dlcnM6JzQgUG91dm9pcnMnLCBtZW51OidNZW51JywKICBzYXZlRmFpbDoiSW1wb3NzaWJsZSBkJ2VucmVnaXN0cmVyLiBWw6lyaWZpZSB0YSBjb25uZXhpb24gaW50ZXJuZXQuIiwgbG9hZEZhaWw6J0ltcG9zc2libGUgZGUgY2hhcmdlciB0ZXMgZG9ubsOpZXMuJywKICB0b2RheToiQXVqb3VyZCdodWkiLCB5ZXN0ZXJkYXk6J0hpZXInLAogIGtpbmQ6eyBtZWRpdGF0aWU6J03DqWRpdGF0aW9uJywgeW9nYTonWW9nYScsIGJ1Y3VyaWU6J03DqWRpdGF0aW9uIGR1IGJvbmhldXInLCByZWN1bm9zdGludGU6J0dyYXRpdHVkZXMgZXQgc3VjY8OocycsIHB1dGVyaTonTGVzIDQgcG91dm9pcnMnIH0sCiAgdGVzdEJhbm5lcjoiVmVyc2lvbiBkZSB0ZXN0IDogdGVzIG5vdGVzIHJlc3RlbnQgc2V1bGVtZW50IHN1ciBjZXQgYXBwYXJlaWwuIFN1ciBsZSBzaXRlLCBlbGxlcyBzZXJvbnQgZW5yZWdpc3Ryw6llcyBkYW5zIHRvbiBjb21wdGUuIiwKICBnZW5ROidDb21tZW50IHByw6lmw6hyZXMtdHUgcXVlIGplIG3igJlhZHJlc3NlIMOgIHRvaSA\/JywgZ2VuTm90ZTonUG91ciBxdWUgbGVzIHRleHRlcyBzb25uZW50IG5hdHVyZWxzLCBwYXIgZXhlbXBsZSDCqyBKZSBzdWlzIHJlY29ubmFpc3NhbnRlIMK7IG91IMKrIEplIHN1aXMgcmVjb25uYWlzc2FudCDCuy4nLCBmZW06J0F1IGbDqW1pbmluJywgbWFzYzonQXUgbWFzY3VsaW4nLAogIGdlbkZvb3Q6Zz0+YEplIG3igJlhZHJlc3NlIMOgIHRvaSBhdSAke2c9PT0nbSc\/J21hc2N1bGluJzonZsOpbWluaW4nfWAsIGNoYW5nZTonY2hhbmdlcicsCiAgaGVhZGxpbmU6IlF1ZSBwbGFudGVzLXR1IGF1am91cmQnaHVpID8iLCBzdHJlYWs6J2pvdXJzIGRlIHN1aXRlJywgbWluVG9kYXk6Im1pbnV0ZXMgYXVqb3VyZCdodWkiLCBwcmFjdFRvZGF5OiJwcmF0aXF1ZXMgYXVqb3VyZCdodWkiLCBuVG9kYXk6bj0+YCR7bn0gYXVqb3VyZCdodWlgLAogIHRpbGVNZWQ6J03DqWRpdGF0aW9uIC8gWW9nYScsIHRpbGVSZWM6J0dyYXRpdHVkZXMgLyBTdWNjw6hzJywgdGlsZUpveTonTcOpZGl0YXRpb24gZHUgYm9uaGV1cicsIHRpbGVQb3c6J0xlcyA0IHBvdXZvaXJzJywKICBqb3VybmFsOidNb24gam91cm5hbCcsIG5FbnRyaWVzOm49PmAke259ICR7bj09PTE\/J25vdGUnOidub3Rlcyd9YCwKICBqb3lUaXRsZTonTcOpZGl0YXRpb24gZHUgYm9uaGV1cicsIGpveUxlYWQ6J1JlbXBsaXMgbGVzIHRyb2lzIHLDqXBvbnNlcywgcHVpcyBlbnJlZ2lzdHJlLicsIGJyZWF0aGVDdWU6J0luc3BpcmUgZXQgZXhwaXJlIHByb2ZvbmTDqW1lbnQgMyBmb2lzJywgYnJlYXRoZUJ0bjonUmVzcGlyZSBhdmVjIG1vaScsCiAgYWRkSGVscFRvZG86JysgQWpvdXRlciDDoCBmYWlyZSA6IHF1aSBq4oCZYWlkZScsIG5ld0pveTonVW5lIG5vdXZlbGxlIG3DqWRpdGF0aW9uIGR1IGJvbmhldXInLCBzYXZlOidFbnJlZ2lzdHJlcicsCiAgcGlja1ByZXY6bj0+YENob2lzaXIgdW4gb2JqZWN0aWYgcHLDqWPDqWRlbnQgKCR7bn0pYCwgbXlHb2FsczonTWVzIG9iamVjdGlmcycsIHNlYXJjaEdvYWxzOidDaGVyY2hlciBkYW5zIG1lcyBvYmplY3RpZnMnLCBub0dvYWw6J0F1Y3VuIG9iamVjdGlmIHRyb3V2w6kuJywgbmV3R29hbFBoOidvdSDDqWNyaXMgdW4gbm91dmVsIG9iamVjdGlmJywKICBhZGRUb2RvOicrIEFqb3V0ZXIgw6AgZmFpcmUnLCBhZGRlZFRvZG86J+KckyBBam91dMOpIMOgIGZhaXJlJywgdG9hc3RBZGRlZDonQWpvdXTDqSDDoCBmYWlyZScsIGZpbGxBbnN3ZXJzOidSZW1wbGlzIGxlcyByw6lwb25zZXMuJywKICBpbmhhbGU6J0luc3BpcmXigKYnLCBleGhhbGU6J0V4cGlyZeKApicsIGFnYWluOidFbmNvcmUgdW5lIGZvaXMnLCBkb25lQnJlYXRoUDonVHUgYXMgcHJhdGlxdcOpIHBvdXIgZMOpc2FjdGl2ZXIgbGEgZ3JhaW5lLicsIGRvbmVCcmVhdGhKOidMYSBncmFpbmUgZXN0IGFycm9zw6llLicsCiAgcG93VGl0bGU6J0xlcyA0IHBvdXZvaXJzJywgcG93TGVhZDoiQ2hvaXNpcyBsZSB0aMOobWUgZXQgdG9uIHBvaW50IGRlIGTDqXBhcnQsIHJlbXBsaXMgY2hhcXVlIHBvdXZvaXIsIHB1aXMgZW5yZWdpc3RyZS4iLCB0aGVtZTonVEjDiE1FJywgdGhlbWVBcmlhOidUaMOobWUnLAogIGZld2VyOidNb2lucycsIGFsbFRoZW1lczpuPT5gVG91cyBsZXMgdGjDqG1lcyAoJHtufSlgLCBuZXdUaGVtZVBoOidvdSBham91dGUgdW4gbm91dmVhdSB0aMOobWUnLCBhZGQ6J0Fqb3V0ZXInLCBzdGFydDoiRCdPw5kgVFUgUEFSUyIsCiAgd2hlbjonUXVhbmQnLCB6VG9kYXk6IkF1am91cmQnaHVpIiwgelRvbW9ycm93OidEZW1haW4nLCBob3dMb25nOidDb21iaWVuIGRlIHRlbXBzJywKICBwNG5vdGU6J0FwcsOocyBs4oCZZW5yZWdpc3RyZW1lbnQsIHRhIHByb21lc3NlIHZhIGF1dG9tYXRpcXVlbWVudCBkYW5zIHRhIGxpc3RlIMOAIGZhaXJlLicsIGZpbGxQb3dlcnM6J1JlbXBsaXMgbGVzIHBvdXZvaXJzLicsIGV4cG9ydExpbms6J0V4cG9ydGVyIHRlcyBwcmF0aXF1ZXMgc3VyIHVuZSBww6lyaW9kZScsCiAgaW5Ub2RvOidDZSBxdWUgdHUgYXMgcHJvbWlzIGRhbnMgbGUgNGUgcG91dm9pciBlc3QgZGFucyB0YSBsaXN0ZSDDgCBmYWlyZS4nLCBjb3B5OidDb3BpZXIgbGUgdGV4dGUnLCBwZGY6J0VucmVnaXN0cmVyIGVuIFBERicsCiAgZG9Kb3lOb3c6J0ZhaXMgbGEgbcOpZGl0YXRpb24gZHUgYm9uaGV1ciBtYWludGVuYW50JywgZ29Kb3k6J0FsbGVyIMOgIGxhIG3DqWRpdGF0aW9uIGR1IGJvbmhldXInLCBuZXdQb3dlcnM6J0NvbW1lbmNlciB1biBub3V2ZWwgZXhlcmNpY2UgZGVzIDQgcG91dm9pcnMnLAogIGNvcGllZDonVGV4dGUgY29wacOpLiBUdSBwZXV4IGxlIGNvbGxlciBvw7kgdHUgdmV1eC4nLCBjb3B5RmFpbDonSW1wb3NzaWJsZSBkZSBjb3BpZXIgc3VyIGNldCBhcHBhcmVpbC4nLAogIGJhY2s6J+KAuSBSZXRvdXInLCBleHBUaXRsZTonRXhwb3J0ZXIgdGVzIHByYXRpcXVlcycsIGV4cExlYWQ6J0Nob2lzaXMgbGEgcMOpcmlvZGUuIFR1IHBldXggY29waWVyIGxlIHRleHRlIG91IGzigJllbnJlZ2lzdHJlciBlbiBQREYuJywgZnJvbTonRFUnLCB0bzonQVUnLAogIG5QcmFjdDpuPT5gJHtufSAke249PT0xPydwcmF0aXF1ZSc6J3ByYXRpcXVlcyd9IHN1ciBjZXR0ZSBww6lyaW9kZS5gLCBub1ByYWN0OidUdSBu4oCZYXMgcGFzIGRlIHByYXRpcXVlIGRlcyA0IHBvdXZvaXJzIHN1ciBjZXR0ZSBww6lyaW9kZS4nLAogIHJlY1RpdGxlOidHcmF0aXR1ZGVzIC8gU3VjY8OocycsIHJlY0xlYWQ6J8OJY3Jpcy1lbiBhdXRhbnQgcXVlIHR1IHZldXguIENoYXF1ZSBsaWduZSBlc3QgdW5lIGdyYXRpdHVkZSBvdSB1biBzdWNjw6hzLicsCiAgZ3JhdGl0dWRlOidHcmF0aXR1ZGUnLCBzdWNjZXNzOidTdWNjw6hzJywgcm93VHlwZTppPT5gVHlwZSBkZSBsYSBsaWduZSAke2l9YCwgZGVsUm93OidTdXBwcmltZXIgbGEgbGlnbmUnLCByZW1vdmU6J1N1cHByaW1lcicsIHN1Y2Nlc3NQaDoiY2UgcXVlIGonYWkgZmFpdCBhdWpvdXJkJ2h1aSIsCiAgYWRkUm93OicrIEFqb3V0ZXIgdW5lIGxpZ25lJywgd3JpdGVPbmU6J8OJY3JpcyBhdSBtb2lucyB1bmUgbGlnbmUuJywgc2F2ZWRKOidFbnJlZ2lzdHLDqSBkYW5zIHRvbiBqb3VybmFsJywKICBwcmVHOkc9PmBKZSBzdWlzICR7RygncmVjb25uYWlzc2FudGUnLCdyZWNvbm5haXNzYW50Jyl9IHBvdXJgLCBwcmVTOkc9PmBKZSBzdWlzICR7RygnaGV1cmV1c2UnLCdoZXVyZXV4Jyl9IGRlYCwKICBuUmVjOihucixucyk9Pltucj9ucisobnI9PT0xPycgZ3JhdGl0dWRlJzonIGdyYXRpdHVkZXMnKTonJywgbnM\/bnMrJyBzdWNjw6hzJzonJ10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyDCtyAnKSwKICB0b2RvVGl0bGU6J8OAIGZhaXJlJywgdG9kb0xlYWQ6J0NlIHF1ZSBq4oCZYWkgw6AgZmFpcmUgcG91ciBxdWUgbGVzIGdyYWluZXMgcG91c3NlbnQuJywgdG9kb1BoOidBam91dGVyIHF1ZWxxdWUgY2hvc2Ugw6AgZmFpcmUnLAogIG1hcmtEb25lOidNYXJxdWVyIGNvbW1lIGZhaXQnLCBtYXJrVW5kb25lOidNYXJxdWVyIGNvbW1lIG5vbiBmYWl0JywgZGVsOidTdXBwcmltZXInLCBubzonTm9uJywKICB0b2RvRW1wdHk6J1JpZW4gw6AgZmFpcmUgcG91ciBsZSBtb21lbnQuPGJyPkNlIHF1ZSB0dSDDqWNyaXMgw6AgwqsgcXVpIGrigJlhaWRlIMK7IGRhbnMgbGEgbcOpZGl0YXRpb24gZHUgYm9uaGV1ciBldCBkYW5zIGxlIDRlIHBvdXZvaXIgcGV1dCBhcnJpdmVyIGljaS4nLAogIHNob3dEb25lOihzLG4pPT5gJHtzPydNYXNxdWVyJzonQWZmaWNoZXInfSBjZSBxdWUgauKAmWFpIGZhaXQgKCR7bn0pYCwgc3JjOntidWN1cmllOidNw6lkaXRhdGlvbiBkdSBib25oZXVyJyxwdXRlcmk6J0xlcyA0IHBvdXZvaXJzJyxtYW51YWw6J0Fqb3V0w6kgcGFyIG1vaSd9LCBkb25lVG9hc3Q6J0ZhaXQuIEJyYXZvICEnLAogIHRvZG9Qcm9taXNlOno9Pno9PT0nbWFpbmUnPydEZW1haW4gamUgcHJvbWV0cyBkZSc6IkF1am91cmQnaHVpIGplIHByb21ldHMgZGUiLAogIGtpbmRBcmlhOidUeXBlIGRlIHByYXRpcXVlJywgZG9uZUg6J0ZpbmkuIExhIGdyYWluZSBlc3QgcGxhbnTDqWUuJywgZG9uZU5vdGU6KGssbSk9PmAke2t9LCAke219IG1pbi4gRW5yZWdpc3Ryw6kgZGFucyB0b24gam91cm5hbC5gLAogIHRpdGxlT3B0OidUaXRyZSAoZmFjdWx0YXRpZiknLCBwaE1vcm5pbmc6J3BhciBleC4gTcOpZGl0YXRpb24gZHUgbWF0aW4nLCBhbm90aGVyOidVbmUgYXV0cmUgcHJhdGlxdWUnLAogIHN0b3BwZWRBZnRlcjptPT5gVHUgYXMgYXJyw6p0w6kgYXByw6hzICR7bX0gbWluLmAsIHdhbnRTYXZlOidKZSBs4oCZYWpvdXRlIMOgIHRvbiBqb3VybmFsID8nLCBzYXZlTWluOm09PmBFbnJlZ2lzdHJlciAke219IG1pbmAsIGRvbnRTYXZlOidOZSBwYXMgZW5yZWdpc3RyZXInLAogIHN0b3BwZWQ6J0xhIHByYXRpcXVlIGEgw6l0w6kgYXJyw6p0w6llLicsIGJhY2tQbGFpbjonUmV0b3VyJywgcmVzdW1lOidDb250aW51ZXInLCBwYXVzZTonUGF1c2UnLCBzdG9wOidBcnLDqnRlcicsCiAgc2NyZWVuTm90ZToiR2FyZGUgbOKAmcOpY3JhbiBhbGx1bcOpLiBTaSB0b24gdMOpbMOpcGhvbmUgc2UgdmVycm91aWxsZSwgbGEgY2xvY2hlIGRlIGZpbiBwZXV0IG5lIHBhcyBzb25uZXIsIG1haXMgbGEgcHJhdGlxdWUgZXN0IGVucmVnaXN0csOpZSBxdWFuZCB0dSByZXZpZW5zLiIsCiAgZHVyYXRpb246J0RVUsOJRScsIHByZXA6J1BSw4lQQVJBVElPTicsIHNvdW5kOidTT04nLCBiZWxsOidDbG9jaGUnLCBib3dsOidCb2wgdGliw6l0YWluJywgbGlzdGVuOifDiWNvdXRlcicsIHRpdGxlQ2FwOidUSVRSRSAoRkFDVUxUQVRJRiknLCBwaFNpbGVuY2U6J3BhciBleC4gNSBtaW51dGVzIGRlIHNpbGVuY2UnLAogIGJlZ2luOidDb21tZW5jZXInLCBtYW51YWxMaW5rOidK4oCZYWkgcHJhdGlxdcOpIHNhbnMgbWludXRldXIsIGplIHZldXgganVzdGUgbGUgbm90ZXInLCBub1RpbWVyOidTYW5zIG1pbnV0ZXVyJywgbG9nUHJhY3Q6J05vdGVyIHVuZSBwcmF0aXF1ZScsIGRheTonSk9VUicsCiAgcGhFdmVuaW5nOidwYXIgZXguIFlvZ2EgZHUgc29pcicsIHNhdmVKb3VybmFsOidFbnJlZ2lzdHJlciBkYW5zIGxlIGpvdXJuYWwnLCBjYW5jZWw6J0FubnVsZXInLCBsb2dnZWQ6J25vdMOpZScsCiAgcmVhZHk6J1Byw6p0IMOgIGNvbW1lbmNlcicsIHByZXBQaGFzZTonUHLDqXBhcmF0aW9uJywgYmVsbFN0YXJ0OidMYSBjbG9jaGUgc29ubmUgYXUgZMOpYnV0Jywgb2Y6J3N1ciAnLCBwYXVzZWQ6J1BhdXNlJywgcHJlc3NDb250OidBcHB1aWUgc3VyIENvbnRpbnVlcicsCiAgcGx1c1ByZXA6bD0+YCsgJHtsfSBkZSBwcsOpcGFyYXRpb25gLCBub1ByZXA6J3NhbnMgcHLDqXBhcmF0aW9uJywgbm9uZTonQXVjdW5lJywgdW5pdE1pbjonbWluJywgdW5pdFNlYzoncycsCiAgYWxsOidUb3V0JywgblByYWN0aWNlczpuPT5gJHtufSAke249PT0xPydwcmF0aXF1ZSc6J3ByYXRpcXVlcyd9YCwgdG90TWluOm09PmAgwrcgJHttfSBtaW51dGVzIGF1IHRvdGFsYCwKICBqRW1wdHk6J0F1Y3VuZSBncmFpbmUgaWNpIHBvdXIgbOKAmWluc3RhbnQuPGJyPk3DqWRpdGUgb3Ugbm90ZSB1bmUgcHJhdGlxdWUgZXQgZWxsZSBhcHBhcmHDrnRyYSBkYW5zIHRvbiBqb3VybmFsLicsIGdvUHJhY3RpY2U6J0FsbGVyIMOgIGxhIHByYXRpcXVlJywKICBkZWxROidTdXBwcmltZXIgY2V0dGUgcHJhdGlxdWUgPycsIGRlbGV0ZWQ6J1N1cHByaW3DqScsCiAgZ2F0ZUxlYWQ6J0zigJlhcHBsaWNhdGlvbiBlc3QgZ3JhdHVpdGUuIENvbm5lY3RlLXRvaSBwb3VyIHF1ZSB0ZXMgbm90ZXMgcmVzdGVudCBlbnJlZ2lzdHLDqWVzLicsIHNpZ25JbjonU2UgY29ubmVjdGVyJywgcmVnaXN0ZXI6J1BhcyBkZSBjb21wdGUgPyBDcsOpZS1sZSBncmF0dWl0ZW1lbnQnLAogIHBlcnNvbmFsOidQZXJzb25uZWwnLCBjb21tdW5pdHk6J0NvbW11bmF1dMOpJywgc2VnQXJpYTonQ2UgcXVlIHR1IHZvaXMnLAogIGNvbW1UaXRsZTonQ29tbXVuYXV0w6knLCBjb21tTGVhZDonUXVhbmQgdHUgdGUgcsOpam91aXMgZGVzIHN1Y2PDqHMgZGVzIGF1dHJlcywgdHUgYXJyb3NlcyBsZXMgZ3JhaW5lcyBkZSB0b24gcHJvcHJlIG9iamVjdGlmLiBRdWFuZCB0dSBsaXMgbGVzIDQgcG91dm9pcnMgZGUgcXVlbHF14oCZdW4sIHR1IHBldXggbGVzIHBhcmNvdXJpciBwb3VyIHRvaSBhdXNzaS4nLAogIGNvbW1UZXN0QmFubmVyOidWZXJzaW9uIGRlIHRlc3QgOiB0dSB2b2lzIGljaSBxdWVscXVlcyBleGVtcGxlcy4gU3VyIGxlIHNpdGUgYXBwYXJhw650cm9udCBsZXMgdnJhaXMgcGFydGFnZXMgZGUgY2V1eCBxdWkgY2hvaXNpc3NlbnQgZGUgcGFydGFnZXIuJywKICBjb21tRW1wdHk6J1JpZW4gaWNpIHBvdXIgbOKAmWluc3RhbnQuJywgYXBwZWFySW46bj0+YFR1IGFwcGFyYWlzIGRhbnMgbGEgY29tbXVuYXV0w6kgc291cyBsZSBub20gPGI+JHtufTwvYj5gLAogIHJlYWN0Sm95OidKZSBtZSByw6lqb3VpcycsIGNvdW50Sm95OidzZSBzb250IHLDqWpvdWlzJywgdG9hc3RKb3k6J1F1YW5kIHR1IHRlIHLDqWpvdWlzIHBvdXIgbGVzIGF1dHJlcywgdHUgYXJyb3NlcyBsZXMgZ3JhaW5lcyBkZSB0b24gb2JqZWN0aWYuJywKICByZWFjdFBvdzonSuKAmWFpIGx1JywgY291bnRQb3c6J2zigJlvbnQgbHUnLCB0b2FzdFBvdzonVHUgYXMgbHUgbGVzIDQgcG91dm9pcnMgw6AgdG9uIHRvdXIuJywKICBnZXN0Tm90ZTonQXR0ZW50aW9uIGF1IGdlc3RlIGRlIGNvbXBlbnNhdGlvbiA6IGNob2lzaXMtZW4gdW4gcGVyc29ubmVsIGV0IHByYXRpcXVlLWxlIHBvdXIgZMOpc2FjdGl2ZXIgbGVzIGdyYWluZXMuIENlIG7igJllc3QgcGFzIGZvcmPDqW1lbnQgY2UgcXVlIGzigJlhdXRyZSBwZXJzb25uZSBhIHByb21pcy4nLAogIG5vYm9keVlldDonUGVyc29ubmUgcG91ciBs4oCZaW5zdGFudCcsIHdpdGhkcmF3OidSZXRpcmVyJywgcmVwb3J0OidTaWduYWxlcicsIHJlcG9ydEFnYWluOidBcHB1aWUgZW5jb3JlIHBvdXIgc2lnbmFsZXInLCByZXBvcnRlZDonTWVyY2kuIExlIHBhcnRhZ2UgYSDDqXTDqSBtYXNxdcOpIGV0IHNlcmEgdsOpcmlmacOpLicsCiAgcmVhZEZ1bGw6J0xpcmUgbGVzIDQgcG91dm9pcnMgZW4gZW50aWVyJywgc2hvd0xlc3M6J01vaW5zJywgeW91Oid0b2knLAogIGluc3BvSGVhZDpuPT5gRGUgbGEgY29tbXVuYXV0w6kgwrcgJHtufWAsIGluc3BvTW9yZTonVm9pciBjZSBxdWUgbGVzIGF1dHJlcyBvbnQgcGxhbnTDqSDigLonLAogIHNoYXJlQnRuOidQYXJ0YWdlciBhbm9ueW1lbWVudCBhdmVjIGxhIGNvbW11bmF1dMOpJywgc2hhcmVkQnRuOidQYXJ0YWfDqSBkYW5zIGxhIGNvbW11bmF1dMOpIMK3IHJldGlyZXInLCBzaGFyZWRUYWc6J2RhbnMgbGEgY29tbXVuYXV0w6knLAogIHdob1NlZXM6J1FVSSBWT0lUJywgb25seU1lOidNb2kgc2V1bGVtZW50Jywgc2hhcmVBbm9uOidQYXJ0YWdlciBhbm9ueW1lbWVudCcsIHNoYXJlQWZ0ZXI6J0FwcsOocyBs4oCZZW5yZWdpc3RyZW1lbnQsIHR1IGNob2lzaXMgY2UgcXVpIGFwcGFyYcOudCBkYW5zIGxhIGNvbW11bmF1dMOpIGV0IHNvdXMgcXVlbCBub20uJywKICBzaGVldFNoYXJlZDonUGFydGFnw6kgZGFucyBsYSBjb21tdW5hdXTDqScsIHNoZWV0U2hhcmVkTm90ZTpuPT5gQ2V0dGUgbm90ZSBlc3QgdmlzaWJsZSBkYW5zIGxhIGNvbW11bmF1dMOpIHNvdXMgbGUgbm9tIDxiPiR7bn08L2I+LiBTaSB0dSBsYSByZXRpcmVzLCBlbGxlIGRpc3BhcmHDrnQgcG91ciB0b3V0IGxlIG1vbmRlLiBFbGxlIHJlc3RlIGRhbnMgdG9uIGpvdXJuYWwuYCwKICBibG9ja2VkTm90ZTonTGUgcGFydGFnZSBkYW5zIGxhIGNvbW11bmF1dMOpIG7igJllc3QgcGx1cyBkaXNwb25pYmxlIHBvdXIgdG9uIGNvbXB0ZS4nLAogIG5hbWVMYWJlbDonVG9uIG5vbSBkYW5zIGxhIGNvbW11bmF1dMOpJywgbmFtZVBoOidwYXIgZXguIEZsZXVyIGRlIHRpbGxldWwnLCBuYW1lTm90ZTonQ2UgbuKAmWVzdCBwYXMgZm9yY8OpbWVudCB0b24gdnJhaSBub20uIFR1IHBldXggbGUgY2hhbmdlciDDoCB0b3V0IG1vbWVudC4nLAogIGFwcGVhcnNBczpuPT5gVHUgYXBwYXJhaXMgc291cyBsZSBub20gPGI+JHtufTwvYj5gLCBvdGhlcnNSZWFkOidWT0lDSSBDRSBRVUUgTEVTIEFVVFJFUyBMSVJPTlQnLCBjaG9vc2VTaGFyZTonQ0hPSVNJUyBDRSBRVUUgVFUgUEFSVEFHRVMnLAogIHByaXZhY3lOb3RlOidBdmFudCBkZSBwYXJ0YWdlciwgdsOpcmlmaWUgcXXigJlpbCBu4oCZeSBhIHBhcyBkZSBub21zIG91IGRlIGTDqXRhaWxzIHBlcm1ldHRhbnQgZGUgcmVjb25uYcOudHJlIHF1ZWxxdeKAmXVuLicsCiAgd2l0aGRyYXdCdG46J1JldGlyZXIgZGUgbGEgY29tbXVuYXV0w6knLCBzaGFyZURvOidQYXJ0YWdlcicsIG5hbWVTaG9ydDonQ2hvaXNpcyB1biBub20gZOKAmWF1IG1vaW5zIDIgbGV0dHJlcy4nLCBjaG9vc2VPbmU6J0Nob2lzaXMgYXUgbW9pbnMgdW5lIGxpZ25lLicsCiAgc2hhcmVkVG9hc3Q6J1BhcnRhZ8OpIGF2ZWMgbGEgY29tbXVuYXV0w6knLCB3aXRoZHJhd246J1JldGlyw6kgZGUgbGEgY29tbXVuYXV0w6knLCBuYW1lU2F2ZWQ6J05vbSBlbnJlZ2lzdHLDqScsCiAgbmFtZVNoZWV0Tm90ZTonQ2UgbuKAmWVzdCBwYXMgZm9yY8OpbWVudCB0b24gdnJhaSBub20uIElsIGNoYW5nZSBhdXNzaSBzdXIgY2UgcXVlIHR1IGFzIGTDqWrDoCBwYXJ0YWfDqS4nLAogIGZpcnN0UTonQ29tbWVudCB2ZXV4LXR1IGFwcGFyYcOudHJlIGRhbnMgbGEgY29tbXVuYXV0w6kgPycsIGZpcnN0Tm90ZTonQ2hvaXNpcyB1biBub20gcXVpIG7igJllc3QgcGFzIGZvcmPDqW1lbnQgdG9uIHZyYWkgbm9tLiBUdSBuZSBs4oCZdXRpbGlzZXMgcXVlIGxvcnNxdWUgdHUgY2hvaXNpcyBkZSBwYXJ0YWdlciBxdWVscXVlIGNob3NlLiBUdSBwZXV4IGxlIGNoYW5nZXIgw6AgdG91dCBtb21lbnQuJywKICBsYXRlcjonUGx1cyB0YXJkJywgd2VsY29tZTpuPT5gQmllbnZlbnVlLCAke259ICFgLCBhcGlGYWlsOidJbXBvc3NpYmxlIGRlIHNlIGNvbm5lY3RlciBhdSBzaXRlLicsCiAgZXJyOnsgYmxvY2F0OidMZSBwYXJ0YWdlIG7igJllc3QgcGx1cyBkaXNwb25pYmxlIHBvdXIgdG9uIGNvbXB0ZS4nLCBmYXJhX251bWU6J0Nob2lzaXMgZOKAmWFib3JkIHVuIG5vbSBwb3VyIGxhIGNvbW11bmF1dMOpLicsIGdvbDonSWwgbuKAmXkgYSByaWVuIMOgIHBhcnRhZ2VyLicsCiAgICAgICAgcHJlYV9tdWx0ZTonVHUgYXMgZMOpasOgIGJlYXVjb3VwIHBhcnRhZ8OpIGF1am91cmTigJlodWkuIFJldmllbnMgZGVtYWluLicsIGx1YXQ6J0NlIG5vbSBlc3QgZMOpasOgIHByaXMuIENob2lzaXMtZW4gdW4gYXV0cmUuJywgbnVtZTonTGUgbm9tIGRvaXQgYXZvaXIgZW50cmUgMiBldCAzMCBsZXR0cmVzLicgfQp9OwoKLyogLS0tLS0tLS0tLSBJdGFsaWFubyAtLS0tLS0tLS0tICovClVJLml0ID0gewogIGFwcE5hbWU6J1NlbWkgQnVvbmknLCBjb3Vyc2VzOidJIG1pZWkgY29yc2knLCBsYW5ndWFnZTonTGluZ3VhJywgc29vbjoncHJlc3RvJywgY2xvc2U6J0NoaXVkaScsCiAgbmF2VG9kYXk6J09nZ2knLCBuYXZKb3k6J0dpb2lhJywgbmF2UHJhY3RpY2U6J1ByYXRpY2EnLCBuYXZUb2RvOidEYSBmYXJlJywgbmF2UG93ZXJzOic0IFBvdGVyaScsIG1lbnU6J01lbnUnLAogIHNhdmVGYWlsOidJbXBvc3NpYmlsZSBzYWx2YXJlLiBDb250cm9sbGEgbGEgY29ubmVzc2lvbmUgaW50ZXJuZXQuJywgbG9hZEZhaWw6J0ltcG9zc2liaWxlIGNhcmljYXJlIGkgdHVvaSBkYXRpLicsCiAgdG9kYXk6J09nZ2knLCB5ZXN0ZXJkYXk6J0llcmknLAogIGtpbmQ6eyBtZWRpdGF0aWU6J01lZGl0YXppb25lJywgeW9nYTonWW9nYScsIGJ1Y3VyaWU6J01lZGl0YXppb25lIGRlbGxhIGdpb2lhJywgcmVjdW5vc3RpbnRlOidHcmF0aXR1ZGluaSBlIHN1Y2Nlc3NpJywgcHV0ZXJpOidJIDQgcG90ZXJpJyB9LAogIHRlc3RCYW5uZXI6J1ZlcnNpb25lIGRpIHByb3ZhOiBsZSB0dWUgbm90ZSByZXN0YW5vIHNvbG8gc3UgcXVlc3RvIGRpc3Bvc2l0aXZvLiBTdWwgc2l0byB2ZXJyYW5ubyBzYWx2YXRlIG5lbCB0dW8gYWNjb3VudC4nLAogIGdlblE6J0NvbWUgcHJlZmVyaXNjaSBjaGUgbWkgcml2b2xnYSBhIHRlPycsIGdlbk5vdGU6J1BlcmNow6kgaSB0ZXN0aSBzdW9uaW5vIG5hdHVyYWxpLCBhZCBlc2VtcGlvIMKrU29ubyBncmF0YcK7IG8gwqtTb25vIGdyYXRvwrsuJywgZmVtOidBbCBmZW1taW5pbGUnLCBtYXNjOidBbCBtYXNjaGlsZScsCiAgZ2VuRm9vdDpnPT5gTWkgcml2b2xnbyBhIHRlIGFsICR7Zz09PSdtJz8nbWFzY2hpbGUnOidmZW1taW5pbGUnfWAsIGNoYW5nZTonY2FtYmlhJywKICBoZWFkbGluZTonQ2hlIGNvc2EgcGlhbnRpIG9nZ2k\/Jywgc3RyZWFrOidnaW9ybmkgZGkgZmlsYScsIG1pblRvZGF5OidtaW51dGkgb2dnaScsIHByYWN0VG9kYXk6J3ByYXRpY2hlIG9nZ2knLCBuVG9kYXk6bj0+YCR7bn0gb2dnaWAsCiAgdGlsZU1lZDonTWVkaXRhemlvbmUgLyBZb2dhJywgdGlsZVJlYzonR3JhdGl0dWRpbmkgLyBTdWNjZXNzaScsIHRpbGVKb3k6J01lZGl0YXppb25lIGRlbGxhIGdpb2lhJywgdGlsZVBvdzonSSA0IHBvdGVyaScsCiAgam91cm5hbDonSWwgbWlvIGRpYXJpbycsIG5FbnRyaWVzOm49PmAke259ICR7bj09PTE\/J25vdGEnOidub3RlJ31gLAogIGpveVRpdGxlOidNZWRpdGF6aW9uZSBkZWxsYSBnaW9pYScsIGpveUxlYWQ6J0NvbXBpbGEgbGUgdHJlIHJpc3Bvc3RlLCBwb2kgc2FsdmEuJywgYnJlYXRoZUN1ZTonSW5zcGlyYSBlZCBlc3BpcmEgcHJvZm9uZGFtZW50ZSAzIHZvbHRlJywgYnJlYXRoZUJ0bjonUmVzcGlyYSBjb24gbWUnLAogIGFkZEhlbHBUb2RvOicrIEFnZ2l1bmdpIGEgRGEgZmFyZTogY2hpIGFpdXRvJywgbmV3Sm95OidVbmEgbnVvdmEgbWVkaXRhemlvbmUgZGVsbGEgZ2lvaWEnLCBzYXZlOidTYWx2YScsCiAgcGlja1ByZXY6bj0+YFNjZWdsaSB1biBvYmlldHRpdm8gcHJlY2VkZW50ZSAoJHtufSlgLCBteUdvYWxzOidJIG1pZWkgb2JpZXR0aXZpJywgc2VhcmNoR29hbHM6J0NlcmNhIG5laSBtaWVpIG9iaWV0dGl2aScsIG5vR29hbDonTmVzc3VuIG9iaWV0dGl2byB0cm92YXRvLicsIG5ld0dvYWxQaDonb3BwdXJlIHNjcml2aSB1biBudW92byBvYmlldHRpdm8nLAogIGFkZFRvZG86JysgQWdnaXVuZ2kgYSBEYSBmYXJlJywgYWRkZWRUb2RvOifinJMgQWdnaXVudG8gYSBEYSBmYXJlJywgdG9hc3RBZGRlZDonQWdnaXVudG8gYSBEYSBmYXJlJywgZmlsbEFuc3dlcnM6J0NvbXBpbGEgbGUgcmlzcG9zdGUuJywKICBpbmhhbGU6J0luc3BpcmHigKYnLCBleGhhbGU6J0VzcGlyYeKApicsIGFnYWluOidBbmNvcmEgdW5hIHZvbHRhJywgZG9uZUJyZWF0aFA6J0hhaSBwcmF0aWNhdG8gcGVyIGRpc2F0dGl2YXJlIGlsIHNlbWUuJywgZG9uZUJyZWF0aEo6J0lsIHNlbWUgw6ggaW5uYWZmaWF0by4nLAogIHBvd1RpdGxlOidJIDQgcG90ZXJpJywgcG93TGVhZDonU2NlZ2xpIGlsIHRlbWEgZSBpbCB0dW8gcHVudG8gZGkgcGFydGVuemEsIGNvbXBpbGEgb2duaSBwb3RlcmUsIHBvaSBzYWx2YS4nLCB0aGVtZTonVEVNQScsIHRoZW1lQXJpYTonVGVtYScsCiAgZmV3ZXI6J01lbm8nLCBhbGxUaGVtZXM6bj0+YFR1dHRpIGkgdGVtaSAoJHtufSlgLCBuZXdUaGVtZVBoOidvcHB1cmUgYWdnaXVuZ2kgdW4gbnVvdm8gdGVtYScsIGFkZDonQWdnaXVuZ2knLCBzdGFydDonREEgRE9WRSBQQVJUSScsCiAgd2hlbjonUXVhbmRvJywgelRvZGF5OidPZ2dpJywgelRvbW9ycm93OidEb21hbmknLCBob3dMb25nOidQZXIgcXVhbnRvIHRlbXBvJywKICBwNG5vdGU6J0RvcG8gaWwgc2FsdmF0YWdnaW8sIGxhIHR1YSBwcm9tZXNzYSB2YSBhdXRvbWF0aWNhbWVudGUgbmVsbGEgbGlzdGEgRGEgZmFyZS4nLCBmaWxsUG93ZXJzOidDb21waWxhIGkgcG90ZXJpLicsIGV4cG9ydExpbms6J0VzcG9ydGEgbGUgdHVlIHByYXRpY2hlIHBlciB1biBwZXJpb2RvJywKICBpblRvZG86J0Npw7IgY2hlIGhhaSBwcm9tZXNzbyBuZWwgNMKwIHBvdGVyZSDDqCBuZWxsYSB0dWEgbGlzdGEgRGEgZmFyZS4nLCBjb3B5OidDb3BpYSBpbCB0ZXN0bycsIHBkZjonU2FsdmEgaW4gUERGJywKICBkb0pveU5vdzonRmFpIG9yYSBsYSBtZWRpdGF6aW9uZSBkZWxsYSBnaW9pYScsIGdvSm95OidWYWkgYWxsYSBtZWRpdGF6aW9uZSBkZWxsYSBnaW9pYScsIG5ld1Bvd2VyczonSW5pemlhIHVuIG51b3ZvIGVzZXJjaXppbyBkZWkgNCBwb3RlcmknLAogIGNvcGllZDonVGVzdG8gY29waWF0by4gUHVvaSBpbmNvbGxhcmxvIGRvdmUgdnVvaS4nLCBjb3B5RmFpbDonSW1wb3NzaWJpbGUgY29waWFyZSBzdSBxdWVzdG8gZGlzcG9zaXRpdm8uJywKICBiYWNrOifigLkgSW5kaWV0cm8nLCBleHBUaXRsZTonRXNwb3J0YSBsZSB0dWUgcHJhdGljaGUnLCBleHBMZWFkOidTY2VnbGkgaWwgcGVyaW9kby4gUHVvaSBjb3BpYXJlIGlsIHRlc3RvIG8gc2FsdmFybG8gaW4gUERGLicsIGZyb206J0RBTCcsIHRvOidBTCcsCiAgblByYWN0Om49PmAke259ICR7bj09PTE\/J3ByYXRpY2EnOidwcmF0aWNoZSd9IGluIHF1ZXN0byBwZXJpb2RvLmAsIG5vUHJhY3Q6J05vbiBoYWkgcHJhdGljaGUgZGVpIDQgcG90ZXJpIGluIHF1ZXN0byBwZXJpb2RvLicsCiAgcmVjVGl0bGU6J0dyYXRpdHVkaW5pIC8gU3VjY2Vzc2knLCByZWNMZWFkOidTY3JpdmluZSBxdWFudGUgdnVvaS4gT2duaSByaWdhIMOoIHVuYSBncmF0aXR1ZGluZSBvIHVuIHN1Y2Nlc3NvLicsCiAgZ3JhdGl0dWRlOidHcmF0aXR1ZGluZScsIHN1Y2Nlc3M6J1N1Y2Nlc3NvJywgcm93VHlwZTppPT5gVGlwbyBkZWxsYSByaWdhICR7aX1gLCBkZWxSb3c6J0VsaW1pbmEgbGEgcmlnYScsIHJlbW92ZTonRWxpbWluYScsIHN1Y2Nlc3NQaDonY2nDsiBjaGUgaG8gZmF0dG8gb2dnaScsCiAgYWRkUm93OicrIEFnZ2l1bmdpIHVu4oCZYWx0cmEgcmlnYScsIHdyaXRlT25lOidTY3JpdmkgYWxtZW5vIHVuYSByaWdhLicsIHNhdmVkSjonU2FsdmF0byBuZWwgdHVvIGRpYXJpbycsCiAgcHJlRzpHPT5gU29ubyAke0coJ2dyYXRhJywnZ3JhdG8nKX0gcGVyYCwgcHJlUzooKT0+J1Nvbm8gZmVsaWNlIHBlcicsCiAgblJlYzoobnIsbnMpPT5bbnI\/bnIrKG5yPT09MT8nIGdyYXRpdHVkaW5lJzonIGdyYXRpdHVkaW5pJyk6JycsIG5zP25zKyhucz09PTE\/JyBzdWNjZXNzbyc6JyBzdWNjZXNzaScpOicnXS5maWx0ZXIoQm9vbGVhbikuam9pbignIMK3ICcpLAogIHRvZG9UaXRsZTonRGEgZmFyZScsIHRvZG9MZWFkOidDacOyIGNoZSBkZXZvIGZhcmUgcGVyY2jDqSBpIHNlbWkgY3Jlc2Nhbm8uJywgdG9kb1BoOidBZ2dpdW5naSBxdWFsY29zYSBkYSBmYXJlJywKICBtYXJrRG9uZTonU2VnbmEgY29tZSBmYXR0bycsIG1hcmtVbmRvbmU6J1NlZ25hIGNvbWUgbm9uIGZhdHRvJywgZGVsOidFbGltaW5hJywgbm86J05vJywKICB0b2RvRW1wdHk6J05pZW50ZSBkYSBmYXJlIHBlciBvcmEuPGJyPkNpw7IgY2hlIHNjcml2aSBpbiDCq2NoaSBhaXV0b8K7IG5lbGxhIG1lZGl0YXppb25lIGRlbGxhIGdpb2lhIGUgbmVsIDTCsCBwb3RlcmUgcHXDsiBhcnJpdmFyZSBxdWkuJywKICBzaG93RG9uZToocyxuKT0+YCR7cz8nTmFzY29uZGknOidNb3N0cmEnfSBjacOyIGNoZSBobyBmYXR0byAoJHtufSlgLCBzcmM6e2J1Y3VyaWU6J01lZGl0YXppb25lIGRlbGxhIGdpb2lhJyxwdXRlcmk6J0kgNCBwb3RlcmknLG1hbnVhbDonQWdnaXVudG8gZGEgbWUnfSwgZG9uZVRvYXN0OidGYXR0by4gQnJhdmEhJywKICB0b2RvUHJvbWlzZTp6PT56PT09J21haW5lJz8nRG9tYW5pIHByb21ldHRvIGRpJzonT2dnaSBwcm9tZXR0byBkaScsCiAga2luZEFyaWE6J1RpcG8gZGkgcHJhdGljYScsIGRvbmVIOidGYXR0by4gSWwgc2VtZSDDqCBwaWFudGF0by4nLCBkb25lTm90ZTooayxtKT0+YCR7a30sICR7bX0gbWluLiBTYWx2YXRvIG5lbCB0dW8gZGlhcmlvLmAsCiAgdGl0bGVPcHQ6J1RpdG9sbyAoZmFjb2x0YXRpdm8pJywgcGhNb3JuaW5nOidlcy4gTWVkaXRhemlvbmUgZGVsIG1hdHRpbm8nLCBhbm90aGVyOidVbuKAmWFsdHJhIHByYXRpY2EnLAogIHN0b3BwZWRBZnRlcjptPT5gVGkgc2VpIGZlcm1hdGEgZG9wbyAke219IG1pbi5gLCB3YW50U2F2ZTonTGEgYWdnaXVuZ28gYWwgdHVvIGRpYXJpbz8nLCBzYXZlTWluOm09PmBTYWx2YSAke219IG1pbmAsIGRvbnRTYXZlOidOb24gc2FsdmFyZScsCiAgc3RvcHBlZDonTGEgcHJhdGljYSDDqCBzdGF0YSBpbnRlcnJvdHRhLicsIGJhY2tQbGFpbjonSW5kaWV0cm8nLCByZXN1bWU6J0NvbnRpbnVhJywgcGF1c2U6J1BhdXNhJywgc3RvcDonRmVybWEnLAogIHNjcmVlbk5vdGU6J1RpZW5pIGxvIHNjaGVybW8gYWNjZXNvLiBTZSBpbCB0ZWxlZm9ubyBzaSBibG9jY2EsIGxhIGNhbXBhbmEgZmluYWxlIHBvdHJlYmJlIG5vbiBzdW9uYXJlLCBtYSBsYSBwcmF0aWNhIHZpZW5lIHNhbHZhdGEgcXVhbmRvIHRvcm5pLicsCiAgZHVyYXRpb246J0RVUkFUQScsIHByZXA6J1BSRVBBUkFaSU9ORScsIHNvdW5kOidTVU9OTycsIGJlbGw6J0NhbXBhbmEnLCBib3dsOidDYW1wYW5hIHRpYmV0YW5hJywgbGlzdGVuOidBc2NvbHRhJywgdGl0bGVDYXA6J1RJVE9MTyAoRkFDT0xUQVRJVk8pJywgcGhTaWxlbmNlOidlcy4gNSBtaW51dGkgZGkgc2lsZW56aW8nLAogIGJlZ2luOidJbml6aWEnLCBtYW51YWxMaW5rOidIbyBwcmF0aWNhdG8gc2VuemEgdGltZXIsIHZvZ2xpbyBzb2xvIHNlZ25hcmxvJywgbm9UaW1lcjonU2VuemEgdGltZXInLCBsb2dQcmFjdDonU2VnbmEgdW5hIHByYXRpY2EnLCBkYXk6J0dJT1JOTycsCiAgcGhFdmVuaW5nOidlcy4gWW9nYSBkZWxsYSBzZXJhJywgc2F2ZUpvdXJuYWw6J1NhbHZhIG5lbCBkaWFyaW8nLCBjYW5jZWw6J0FubnVsbGEnLCBsb2dnZWQ6J3NlZ25hdGEnLAogIHJlYWR5OidQcm9udGEgcGVyIGluaXppYXJlJywgcHJlcFBoYXNlOidQcmVwYXJhemlvbmUnLCBiZWxsU3RhcnQ6J0xhIGNhbXBhbmEgc3VvbmEgYWxs4oCZaW5pemlvJywgb2Y6J3N1ICcsIHBhdXNlZDonUGF1c2EnLCBwcmVzc0NvbnQ6J1ByZW1pIENvbnRpbnVhJywKICBwbHVzUHJlcDpsPT5gKyAke2x9IGRpIHByZXBhcmF6aW9uZWAsIG5vUHJlcDonc2VuemEgcHJlcGFyYXppb25lJywgbm9uZTonTmVzc3VuYScsIHVuaXRNaW46J21pbicsIHVuaXRTZWM6J3MnLAogIGFsbDonVHV0dG8nLCBuUHJhY3RpY2VzOm49PmAke259ICR7bj09PTE\/J3ByYXRpY2EnOidwcmF0aWNoZSd9YCwgdG90TWluOm09PmAgwrcgJHttfSBtaW51dGkgaW4gdG90YWxlYCwKICBqRW1wdHk6J0FuY29yYSBuZXNzdW4gc2VtZSBxdWkuPGJyPk1lZGl0YSBvIHNlZ25hIHVuYSBwcmF0aWNhIGUgYXBwYXJpcsOgIG5lbCB0dW8gZGlhcmlvLicsIGdvUHJhY3RpY2U6J1ZhaSBhbGxhIHByYXRpY2EnLAogIGRlbFE6J0VsaW1pbmFyZSBxdWVzdGEgcHJhdGljYT8nLCBkZWxldGVkOidFbGltaW5hdG8nLAogIGdhdGVMZWFkOidM4oCZYXBwIMOoIGdyYXR1aXRhLiBBY2NlZGkgcGVyY2jDqSBsZSB0dWUgbm90ZSByZXN0aW5vIHNhbHZhdGUuJywgc2lnbkluOidBY2NlZGknLCByZWdpc3RlcjonTm9uIGhhaSB1biBhY2NvdW50PyBDcmVhbG8gZ3JhdGlzJywKICBwZXJzb25hbDonUGVyc29uYWxlJywgY29tbXVuaXR5OidDb211bml0w6AnLCBzZWdBcmlhOidDb3NhIHZlZGknLAogIGNvbW1UaXRsZTonQ29tdW5pdMOgJywgY29tbUxlYWQ6J1F1YW5kbyBnaW9pc2NpIGRlaSBzdWNjZXNzaSBkZWdsaSBhbHRyaSwgaW5uYWZmaSBpIHNlbWkgZGVsIHR1byBvYmlldHRpdm8uIFF1YW5kbyBsZWdnaSBpIDQgcG90ZXJpIGRpIHF1YWxjdW5vLCBwdW9pIHBlcmNvcnJlcmxpIGFuY2hlIHBlciB0ZS4nLAogIGNvbW1UZXN0QmFubmVyOidWZXJzaW9uZSBkaSBwcm92YTogcXVpIHZlZGkgYWxjdW5pIGVzZW1waS4gU3VsIHNpdG8gYXBwYXJpcmFubm8gbGUgY29uZGl2aXNpb25pIHJlYWxpIGRpIGNoaSBzY2VnbGllIGRpIGNvbmRpdmlkZXJlLicsCiAgY29tbUVtcHR5OidBbmNvcmEgbmllbnRlIHF1aS4nLCBhcHBlYXJJbjpuPT5gQXBwYXJpIG5lbGxhIGNvbXVuaXTDoCBjb21lIDxiPiR7bn08L2I+YCwKICByZWFjdEpveTonR2lvaXNjbycsIGNvdW50Sm95OidoYW5ubyBnaW9pdG8nLCB0b2FzdEpveTonUXVhbmRvIGdpb2lzY2kgcGVyIGdsaSBhbHRyaSwgaW5uYWZmaSBpIHNlbWkgZGVsIHR1byBvYmlldHRpdm8uJywKICByZWFjdFBvdzonSG8gbGV0dG8nLCBjb3VudFBvdzonbOKAmWhhbm5vIGxldHRvJywgdG9hc3RQb3c6J0hhaSBsZXR0byBpIDQgcG90ZXJpIGEgdHVhIHZvbHRhLicsCiAgZ2VzdE5vdGU6J0F0dGVuemlvbmUgYWwgZ2VzdG8gY29tcGVuc2F0aXZvOiBzY2VnbGluZSB1bm8gcGVyc29uYWxlIGUgcHJhdGljYWxvIHBlciBkaXNhdHRpdmFyZSBpIHNlbWkuIE5vbiBkZXZlIGVzc2VyZSBwZXIgZm9yemEgY2nDsiBjaGUgaGEgcHJvbWVzc28gbOKAmWFsdHJhIHBlcnNvbmEuJywKICBub2JvZHlZZXQ6J0FuY29yYSBuZXNzdW5vJywgd2l0aGRyYXc6J1JpdGlyYScsIHJlcG9ydDonU2VnbmFsYScsIHJlcG9ydEFnYWluOidQcmVtaSBkaSBudW92byBwZXIgc2VnbmFsYXJlJywgcmVwb3J0ZWQ6J0dyYXppZS4gTGEgY29uZGl2aXNpb25lIMOoIHN0YXRhIG5hc2Nvc3RhIGUgdmVycsOgIHZlcmlmaWNhdGEuJywKICByZWFkRnVsbDonTGVnZ2kgcGVyIGludGVybyBpIDQgcG90ZXJpJywgc2hvd0xlc3M6J01lbm8nLCB5b3U6J3R1JywKICBpbnNwb0hlYWQ6bj0+YERhbGxhIGNvbXVuaXTDoCDCtyAke259YCwgaW5zcG9Nb3JlOidHdWFyZGEgY29zYSBoYW5ubyBwaWFudGF0byBnbGkgYWx0cmkg4oC6JywKICBzaGFyZUJ0bjonQ29uZGl2aWRpIGluIGZvcm1hIGFub25pbWEgY29uIGxhIGNvbXVuaXTDoCcsIHNoYXJlZEJ0bjonQ29uZGl2aXNvIG5lbGxhIGNvbXVuaXTDoCDCtyByaXRpcmEnLCBzaGFyZWRUYWc6J25lbGxhIGNvbXVuaXTDoCcsCiAgd2hvU2VlczonQ0hJIFZFREUnLCBvbmx5TWU6J1NvbG8gaW8nLCBzaGFyZUFub246J0NvbmRpdmlkaSBpbiBmb3JtYSBhbm9uaW1hJywgc2hhcmVBZnRlcjonRG9wbyBpbCBzYWx2YXRhZ2dpbyBzY2VnbGkgY29zYSBhcHBhcmUgbmVsbGEgY29tdW5pdMOgIGUgY29uIHF1YWxlIG5vbWUuJywKICBzaGVldFNoYXJlZDonQ29uZGl2aXNvIG5lbGxhIGNvbXVuaXTDoCcsIHNoZWV0U2hhcmVkTm90ZTpuPT5gUXVlc3RhIG5vdGEgw6ggdmlzaWJpbGUgbmVsbGEgY29tdW5pdMOgIGNvbiBpbCBub21lIDxiPiR7bn08L2I+LiBTZSBsYSByaXRpcmksIHNjb21wYXJlIHBlciB0dXR0aS4gUmVzdGEgbmVsIHR1byBkaWFyaW8uYCwKICBibG9ja2VkTm90ZTonTGEgY29uZGl2aXNpb25lIG5lbGxhIGNvbXVuaXTDoCBub24gw6ggcGnDuSBkaXNwb25pYmlsZSBwZXIgaWwgdHVvIGFjY291bnQuJywKICBuYW1lTGFiZWw6J0lsIHR1byBub21lIG5lbGxhIGNvbXVuaXTDoCcsIG5hbWVQaDonZXMuIEZpb3JlIGRpIHRpZ2xpbycsIG5hbWVOb3RlOidOb24gZGV2ZSBlc3NlcmUgcGVyIGZvcnphIGlsIHR1byB2ZXJvIG5vbWUuIFB1b2kgY2FtYmlhcmxvIGluIHF1YWxzaWFzaSBtb21lbnRvLicsCiAgYXBwZWFyc0FzOm49PmBBcHBhcmkgY29tZSA8Yj4ke259PC9iPmAsIG90aGVyc1JlYWQ6J0VDQ08gQ09TQSBMRUdHRVJBTk5PIEdMSSBBTFRSSScsIGNob29zZVNoYXJlOidTQ0VHTEkgQ09TQSBDT05ESVZJREVSRScsCiAgcHJpdmFjeU5vdGU6J1ByaW1hIGRpIGNvbmRpdmlkZXJlLCBjb250cm9sbGEgY2hlIG5vbiBjb21wYWlhbm8gbm9taSBvIGRldHRhZ2xpIGRhIGN1aSBzaSBwb3NzYSByaWNvbm9zY2VyZSBxdWFsY3Vuby4nLAogIHdpdGhkcmF3QnRuOidSaXRpcmEgZGFsbGEgY29tdW5pdMOgJywgc2hhcmVEbzonQ29uZGl2aWRpJywgbmFtZVNob3J0OidTY2VnbGkgdW4gbm9tZSBkaSBhbG1lbm8gMiBsZXR0ZXJlLicsIGNob29zZU9uZTonU2NlZ2xpIGFsbWVubyB1bmEgcmlnYS4nLAogIHNoYXJlZFRvYXN0OidDb25kaXZpc28gY29uIGxhIGNvbXVuaXTDoCcsIHdpdGhkcmF3bjonUml0aXJhdG8gZGFsbGEgY29tdW5pdMOgJywgbmFtZVNhdmVkOidOb21lIHNhbHZhdG8nLAogIG5hbWVTaGVldE5vdGU6J05vbiBkZXZlIGVzc2VyZSBwZXIgZm9yemEgaWwgdHVvIHZlcm8gbm9tZS4gQ2FtYmlhIGFuY2hlIHN1IGNpw7IgY2hlIGhhaSBnacOgIGNvbmRpdmlzby4nLAogIGZpcnN0UTonQ29tZSB2dW9pIGFwcGFyaXJlIG5lbGxhIGNvbXVuaXTDoD8nLCBmaXJzdE5vdGU6J1NjZWdsaSB1biBub21lIGNoZSBub24gZGV2ZSBlc3NlcmUgcGVyIGZvcnphIHF1ZWxsbyB2ZXJvLiBMbyB1c2kgc29sbyBxdWFuZG8gc2NlZ2xpIGRpIGNvbmRpdmlkZXJlIHF1YWxjb3NhLiBQdW9pIGNhbWJpYXJsbyBpbiBxdWFsc2lhc2kgbW9tZW50by4nLAogIGxhdGVyOidQacO5IHRhcmRpJywgd2VsY29tZTpuPT5gQmVudmVudXRhLCAke259IWAsIGFwaUZhaWw6J0ltcG9zc2liaWxlIGNvbGxlZ2Fyc2kgYWwgc2l0by4nLAogIGVycjp7IGJsb2NhdDonTGEgY29uZGl2aXNpb25lIG5vbiDDqCBwacO5IGRpc3BvbmliaWxlIHBlciBpbCB0dW8gYWNjb3VudC4nLCBmYXJhX251bWU6J1NjZWdsaSBwcmltYSB1biBub21lIHBlciBsYSBjb211bml0w6AuJywgZ29sOidOb24gY+KAmcOoIG5pZW50ZSBkYSBjb25kaXZpZGVyZS4nLAogICAgICAgIHByZWFfbXVsdGU6J09nZ2kgaGFpIGdpw6AgY29uZGl2aXNvIG1vbHRvLiBUb3JuYSBkb21hbmkuJywgbHVhdDonUXVlc3RvIG5vbWUgw6ggZ2nDoCB1c2F0by4gU2NlZ2xpbmUgdW4gYWx0cm8uJywgbnVtZTonSWwgbm9tZSBkZXZlIGF2ZXJlIHRyYSAyIGUgMzAgbGV0dGVyZS4nIH0KfTsKLyogYSBmZXcgSXRhbGlhbi9GcmVuY2ggVUkgd29yZHMgZm9sbG93IHRoZSBwZXJzb24ncyBncmFtbWF0aWNhbCBnZW5kZXIgKi8KY29uc3QgR1VJID0gewogIGl0OnsgcmVhZHk6KCk9PkcoJ1Byb250YSBwZXIgaW5pemlhcmUnLCdQcm9udG8gcGVyIGluaXppYXJlJyksIHN0b3BwZWRBZnRlcjooKT0+bT0+YFRpIHNlaSAke0coJ2Zlcm1hdGEnLCdmZXJtYXRvJyl9IGRvcG8gJHttfSBtaW4uYCwgZG9uZVRvYXN0OigpPT5gRmF0dG8uICR7RygnQnJhdmEnLCdCcmF2bycpfSFgLCB3ZWxjb21lOigpPT5uPT5gJHtHKCdCZW52ZW51dGEnLCdCZW52ZW51dG8nKX0sICR7bn0hYCB9LAogIGZyOnsgcmVhZHk6KCk9PkcoJ1Byw6p0ZSDDoCBjb21tZW5jZXInLCdQcsOqdCDDoCBjb21tZW5jZXInKSB9Cn07CgovKiAtLS0tLS0tLS0tIHByYWN0aWNlIHRleHRzOiBGcmFuw6dhaXMgLS0tLS0tLS0tLSAqLwpjb25zdCBkZUZyID0gdiA9PiAvXlthZWlvdXlow6DDosOkw6nDqMOqw6vDrsOvw7TDtsO7w7nDvF0vaS50ZXN0KFN0cmluZyh2fHwnJykudHJpbSgpKSA\/ICJk4oCZIiA6ICdkZSAnOwpUWC5mciA9IHsKICB2b3dKb3k6WwogICAgJ0plIGZhaXMgY2VzIGNob3NlcyBwYXJjZSBxdWUgbWEgcsOpYWxpdMOpIGVzdCBkaWN0w6llIHBhciBsZXMgZ3JhaW5lcyBxdWUgamUgcGxhbnRlLCBxdWkgc2UgcHJvamV0dGVudCBzdXIgbGEgdmFjdWl0w6kgZOKAmXVuZSByw6lhbGl0w6kgcXVpIG5lIHZpZW50IHBhcyBk4oCZZWxsZS1tw6ptZS4nLAogICAgJ1BhcmNlIHF1ZSBq4oCZYWkgcGxhbnTDqSBjZXMgZ3JhaW5lcywgcXVlIGrigJlhcnJvc2UgbWFpbnRlbmFudCwgamUgdmFpcyByw6l1c3Npci4nLAogICAgJ1BhcmNlIHF1ZSBqZSByw6l1c3NpcyBlbiB1dGlsaXNhbnQgY2Ugc3lzdMOobWUsIHF1ZWxxdWVzLXVucyBkZSBtZXMgYW1pcyBldCBkZSBtZXMgY29ubmFpc3NhbmNlcyB2b250IG3igJlpbWl0ZXIgZXQgcsOpdXNzaXIgw6AgbGV1ciB0b3VyLiBQYXJjZSBxdeKAmWlscyByw6l1c3Npc3NlbnQgZW4gdXRpbGlzYW50IGNlIHN5c3TDqG1lLCBsZXVycyBhbWlzIGV0IGxldXJzIGNvbm5haXNzYW5jZXMgdm9udCBsZXMgaW1pdGVyIMOgIGxldXIgdG91ci4nLAogICAgJ0FpbnNpLCBwYXIgbW9uIGV4ZW1wbGUsIGplIGTDqWNsZW5jaGUgdW5lIHLDqWFjdGlvbiBlbiBjaGHDrm5lIHF1aSBpbnNwaXJlIGRlcyBtaWxsaWVycyBldCBkZXMgbWlsbGllcnMgZGUgcGVyc29ubmVzIMOgIHV0aWxpc2VyIGNlIHN5c3TDqG1lIGV0IMOgIHLDqXVzc2lyLiddLAogIHZvd0pveUxhc3Q6J0NlIHF1aSBmZXJhIGR1IG1vbmRlIHVuIGVuZHJvaXQgbWVpbGxldXIgZXQgcGx1cyBiZWF1LicsCiAgcUpveTp7IG9iaWVjdGl2OidM4oCZb2JqZWN0aWYgYXVxdWVsIGplIGTDqWRpZSBjZXR0ZSBtw6lkaXRhdGlvbiBkdSBib25oZXVyJywgc2VtaW50ZTonUXVlbGxlcyBncmFpbmVzIGrigJlhaSBwbGFudMOpZXMnLAogICAgICAgICBhanV0b3I6J1F1aSBhaS1qZSBs4oCZaW50ZW50aW9uIGTigJlhaWRlciAxIGhldXJlIHBhciBzZW1haW5lID8gUXVhbmQgZXN0LWNlIHF1ZSBqZSB2ZXV4IGxlIGZhaXJlID8gUXVlIHZhaXMtamUgZmFpcmUgcG91ciBjZXR0ZSBwZXJzb25uZSA\/JyB9LAogIHBvd2Vyczp7IHAxOlsnUG91dm9pciAxJywnU2Ugc291dmVuaXIgZHUgc3R5bG8nXSwgcDI6WydQb3V2b2lyIDInLCdMZSByZWdyZXQgaW50ZWxsaWdlbnQnXSwgcDM6WydQb3V2b2lyIDMnLCdMYSByZXN0cmljdGlvbiddLCBwNDpbJ1BvdXZvaXIgNCcsJ0zigJlhbnRpZG90ZSddIH0sCiAgdm93UG93OigpPT5bCiAgICAnSmUgZmFpcyBjZXMgY2hvc2VzIHBhcmNlIHF1ZSBsYSByw6lhbGl0w6kgZXN0IGRpY3TDqWUgcGFyIGxlcyBncmFpbmVzIHF1ZSBqZSBwbGFudGUgZXQgc2UgcHJvamV0dGUgc3VyIGxhIHZhY3VpdMOpIGTigJl1bmUgcsOpYWxpdMOpIHF1aSBuZSB2aWVudCBwYXMgZOKAmWVsbGUtbcOqbWUuJywKICAgIGBTaSBqZSBwbGFudGUgZHUgcG9zaXRpZiwgamUgc3VpcyAke0coJ29ibGlnw6llJywnb2JsaWfDqScpfSBkZSBwZXJjZXZvaXIgdW5lIHLDqWFsaXTDqSBwb3NpdGl2ZSwgbcOqbWUgc2kgY2V1eCBxdWkgbeKAmWVudG91cmVudCBsYSBwZXLDp29pdmVudCBjb21tZSBuw6lnYXRpdmUuIFNpIGplIHBsYW50ZSBkdSBuw6lnYXRpZiwgamUgc3VpcyAke0coJ29ibGlnw6llJywnb2JsaWfDqScpfSBkZSBwZXJjZXZvaXIgdW5lIHLDqWFsaXTDqSBxdWkgbeKAmWVzdCBkw6lmYXZvcmFibGUsIG3Dqm1lIHNpIGNldXggcXVpIG3igJllbnRvdXJlbnQgbGEgcGVyw6dvaXZlbnQgY29tbWUgcG9zaXRpdmUuYCwKICAgICdBbG9ycyBqZSBjaG9pc2lzIGRlIHBsYW50ZXIgZGVzIGdyYWluZXMgcG9zaXRpdmVzLicsCiAgICAnUGFyY2UgcXVlIGplIHLDqXVzc2lzIGVuIHV0aWxpc2FudCBjZSBzeXN0w6htZSwgcXVlbHF1ZXMtdW5zIGRlIG1lcyBhbWlzIGV0IGRlIG1lcyBjb25uYWlzc2FuY2VzIHZvbnQgbeKAmWltaXRlciBldCByw6l1c3NpciDDoCBsZXVyIHRvdXIuIFBhcmNlIHF14oCZaWxzIHLDqXVzc2lzc2VudCwgbGV1cnMgYW1pcyBldCBsZXVycyBjb25uYWlzc2FuY2VzIHZvbnQgbGVzIGltaXRlciBldCByw6l1c3Npci4nXSwKICB2b3dQb3dMYXN0OidBaW5zaSwgbGUgbW9uZGUgZGV2aWVudCB1biBlbmRyb2l0IG1laWxsZXVyIGV0IHBsdXMgYmVhdS4nLAogIHBvd0hlYWQ6J0xFUyA0IFBPVVZPSVJTJywgcG93SGVhZENhc2U6J0xlcyA0IHBvdXZvaXJzJywKICB0aGVtZXM6eyAnQG1vbmV5JzonQXJnZW50JywgJ0ByZWxhdGlvbnNoaXBzJzonUmVsYXRpb25zJywgJ0BoZWFsdGgnOidTYW50w6knIH0sCiAgZHVyOlsnNSBzZWNvbmRlcycsJzEgbWludXRlJywnNSBtaW51dGVzJywnMTAgbWludXRlcycsJzEgaGV1cmUnLCd0b3V0ZSBsYSBqb3VybsOpZSddLAogIGR1ckFwcGVuZDpkPT5kPT09J3RvdXRlIGxhIGpvdXJuw6llJz8ndG91dGUgbGEgam91cm7DqWUnOidwZW5kYW50IGF1IG1vaW5zICcrZCwKICBkdXJTdHJpcDovXHMqKHBlbmRhbnRccyspPyhhdSBtb2luc1xzKyk\/KDUgc2Vjb25kZXN8MSBtaW51dGV8NSBtaW51dGVzfDEwIG1pbnV0ZXN8MSBoZXVyZXx0b3V0ZSBsYSBqb3VybsOpZSlccyokL2ksCiAgbGVhZDovXihkZVxzK3xkWyfigJldXHMqKS9pLAogIHppOno9Pno9PT0nbWFpbmUnPydkZW1haW4nOidhdWpvdXJk4oCZaHVpJywKICB0YWlsUDE6J0V0IHBldXQtw6p0cmUgcXVlIGplIG5lIHNhaXMgbcOqbWUgcGFzIGVuY29yZSBxdWVsbGVzIGF1dHJlcyBncmFpbmVzIGrigJlhaSBwbGFudMOpZXMsIHPDu3JlbWVudCBiZWF1Y291cCBk4oCZYXV0cmVzIGRvbnQgamUgbmUgbWUgc291dmllbnMgcGFzIG1haW50ZW5hbnQuIFF1b2kgcXVlIGrigJlhaWUgcHUgcGVuc2VyLCBkaXJlIG91IGZhaXJlLCBqZSB2ZXV4IGTDqXNhY3RpdmVyIGNlcyBncmFpbmVzIG1haW50ZW5hbnQuJywKICB0YWlsUDI6J0plIG1lIHN1aXMgZmFpdCBkdSBtYWwgZXQgauKAmWFpIGZhaXQgZHUgbWFsIGF1eCBwZXJzb25uZXMgYXV0b3VyIGRlIG1vaS4gSmUgbGUgcmVncmV0dGUsIGV0IGplIHZldXggZMOpc2FjdGl2ZXIgY2VzIGdyYWluZXMgbGUgcGx1cyB2aXRlIHBvc3NpYmxlLCBhaW5zaSBxdWUgdG91dGVzIGxlcyBjaGHDrm5lcyBk4oCZw6l2w6luZW1lbnRzIHF1aSBlbiBkw6ljb3VsZW50LCBjYXIgamUgY29tcHJlbmRzIG1haW50ZW5hbnQgcXXigJllbGxlcyBkb3VibGVudCB0b3V0ZXMgbGVzIDI0IGhldXJlcywgZXQgcGx1cyB2aXRlIGplIGxlcyBkw6lzYWN0aXZlLCBtaWV1eCBj4oCZZXN0ICEnLAogIG5pZ2h0OidFdCBjZSBzb2lyLCBjb25zY2llbW1lbnQsIGRlcHVpcyBsZSBtb21lbnQgb8O5IGplIHBvc2UgbGEgdMOqdGUgc3VyIGzigJlvcmVpbGxlciBldCBt4oCZZW5kb3JzIGp1c3F14oCZw6AgbW9uIHLDqXZlaWwgbGUgbWF0aW4uJywKICBzdGQ6ewogICAgcDI6eyBmb3JtOigpPT5bWyd0JywnUXVlbHMgYsOpbsOpZmljZXMgauKAmWFpIGV1cyddLFsncDInLCdiw6luw6lmaWNlcyBtYXTDqXJpZWxzIG91IGTigJllZ28nXV0sCiAgICAgICAgIHJlY2FwOmU9PmBBdmVjIGxlIG5pdmVhdSBkZSBjb25zY2llbmNlIHF1ZSBq4oCZYXZhaXMgcGVuZGFudCBsZXMgYW5uw6llcyBvw7kgauKAmWFpIHBlbnPDqSAvIGRpdCAvIGZhaXQgY2VzIGNob3NlcywgY+KAmWVzdCB0b3V0IGNlIHF1ZSBqZSBzYXZhaXMgZmFpcmUuIErigJlhaSBjZXJ0YWluZW1lbnQgZXUgZGVzIGLDqW7DqWZpY2VzIG1hdMOpcmllbHMgb3UgZOKAmWVnbyA6ICR7bWsoZS5wMil9LiBFdCBwZXV0LcOqdHJlIGFpLWplIGV1IGF1c3NpIGTigJlhdXRyZXMgYsOpbsOpZmljZXMgZG9udCBqZSBuZSBtZSBzb3V2aWVucyBwYXMgbWFpbnRlbmFudC4gSmUgbWUgcmVuZHMgY29tcHRlIG1haW50ZW5hbnQgcXVlIGrigJlhaSBwYXnDqSwgZXQgcXVlIGplIHBhaWUgZW5jb3JlLCB1biBwcml4IGJpZW4gdHJvcCDDqWxldsOpIHBvdXIgdG91cyBjZXMgYsOpbsOpZmljZXMuICR7dHgoKS50YWlsUDJ9YCB9LAogICAgcDM6eyBmb3JtOigpPT5bWyd0JywnSmUgcHJvbWV0c+KApiddLFsncDMnLCdjZSBxdWUgamUgcHJvbWV0cyBkZSBuZSBwbHVzIGZhaXJlLCBldCBwZW5kYW50IGNvbWJpZW4gZGUgdGVtcHMsIHBhciBleC4gOiBkZSBuZSBwbHVzIOKApiBwZW5kYW50IGF1IG1vaW5zIDEgbWludXRlJ10sWydkdXInLCdhZGQnXV0sCiAgICAgICAgIHJlY2FwOmU9PmBKZSBwcm9tZXRzICR7bWsoZS5wMyl9LiAke3R4KCkubmlnaHR9YCB9LAogICAgcDQ6eyBmb3JtOigpPT5bWyd6aSddLFsndCcsYCR7cERyYWZ0LnppPT09J21haW5lJz8nRGVtYWluJzonQXVqb3VyZOKAmWh1aSd9IGplIHByb21ldHMgZGXigKZgXSxbJ3A0JywnY2UgcXVlIGplIHZhaXMgZmFpcmUsIGNvbW1lIGdyYWluZSBvcHBvc8OpZSDDoCBjZWxsZSBxdWUgamUgdmV1eCBkw6lzYWN0aXZlciddXSwKICAgICAgICAgcmVjYXA6ZT0+YEVuIGdlc3RlIGRlIGNvbXBlbnNhdGlvbiwgamUgZMOpZGllIGxlIGZhaXQgZGUgY29tcHJlbmRyZSBtYWludGVuYW50IHF1ZSBsYSByw6lhbGl0w6kgcXVlIGplIHZpcyB2aWVudCBkZXMgZ3JhaW5lcyBxdWUgauKAmWFpIHBsYW50w6llcyBkYW5zIGxlIHBhc3PDqSwgcXVpIHNlIHByb2pldHRlbnQgc3VyIGxhIHZhY3VpdMOpIGTigJl1bmUgcsOpYWxpdMOpIHF1aSBuZSB2aWVudCBwYXMgZOKAmWVsbGUtbcOqbWUsIGV0ICR7dHgoKS56aShlLnppKX0gamUgcHJvbWV0cyAke2RlRnIobm9MZWFkKGUucDQpKX0ke21rKG5vTGVhZChlLnA0KSl9LmAgfQogIH0sCiAgcHY6ewogICAgMTp7IG5hbWU6KCk9PmBDZSBxdWUgamUgc3VpcyAke0coJ29ibGlnw6llJywnb2JsaWfDqScpfSBkZSB2aXZyZWAsCiAgICAgICAgcDE6eyBmb3JtOigpPT5bWyd0JyxgSmUgc3VpcyAke0coJ29ibGlnw6llJywnb2JsaWfDqScpfSBkZSB2aXZyZSBkYW5zIG1hIHLDqWFsaXTDqeKApmBdLFsncDFhJywnY2UgcXVlIGplIHZpcyBtYWludGVuYW50J10sCiAgICAgICAgICAgICAgICAgICAgICAgWyd0Jywn4oCmw6AgY2F1c2UgZGUgbWVzIHBlbnPDqWVzLCBwYXJvbGVzIGV0IGFjdGVzIGRlIG1vbiBwYXNzw6ksIGRhbnMgY2V0dGUgdmllIG91IGRhbnMgdW5lIHZpZSBhbnTDqXJpZXVyZSwgcXVhbmTigKYnXSxbJ3AxYicsJ3F1ZWxsZXMgZ3JhaW5lcyBq4oCZYWkgcGxhbnTDqWVzJ11dLAogICAgICAgICAgICAgcmVjYXA6ZT0+YEplIHN1aXMgJHtHKCdvYmxpZ8OpZScsJ29ibGlnw6knKX0gZGUgdml2cmUgZGFucyBtYSByw6lhbGl0w6kgJHttayhlLnAxYSl9IMOgIGNhdXNlIGRlIG1lcyBwZW5zw6llcywgcGFyb2xlcyBldCBhY3RlcyBkZSBtb24gcGFzc8OpLCBkYW5zIGNldHRlIHZpZSBvdSBkYW5zIHVuZSB2aWUgYW50w6lyaWV1cmUsIHF1YW5kICR7bWsoZS5wMWIpfS4gJHt0eCgpLnRhaWxQMX1gIH0gfSwKICAgIDI6eyBuYW1lOigpPT4nUXVlbGxlcyBncmFpbmVzIGplIHZldXggbmV0dG95ZXInLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsJ0plIHZldXggZMOpc2FjdGl2ZXIgbGVzIGdyYWluZXMgcGxhbnTDqWVzIHF1YW5k4oCmJ10sWydwMWInLCdjZSBxdWUgauKAmWFpIHBlbnPDqSwgZGl0IG91IGZhaXQnXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gSmUgdmV1eCBkw6lzYWN0aXZlciBsZXMgZ3JhaW5lcyBwbGFudMOpZXMgcXVhbmQgJHttayhlLnAxYil9LCBjYXIgZWxsZXMgZG91YmxlbnQgdG91dGVzIGxlcyAyNCBoZXVyZXMgZXQgamUgbmUgdmV1eCBwbHVzIHF1ZSBjZXMgZ3JhaW5lcyBncmFuZGlzc2VudC4gRGUgcGx1cywgcGV1dC3DqnRyZSBhaS1qZSBhdXNzaSBwbGFudMOpIGTigJlhdXRyZXMgZ3JhaW5lcyBkb250IGplIG5lIG1lIHNvdXZpZW5zIHBhcyBtYWludGVuYW50LiBRdW9pIHF1ZSBq4oCZYWllIHB1IHBlbnNlciwgZGlyZSBvdSBmYWlyZSwgamUgdmV1eCBkw6lzYWN0aXZlciBjZXMgZ3JhaW5lcyBtYWludGVuYW50LmAgfSB9LAogICAgMzp7IG5hbWU6KCk9PidKZSBuZXR0b2llIHVuZSDDqW1vdGlvbicsCiAgICAgICAgcDE6eyBmb3JtOigpPT5bWyd0JywnSmUgdmV1eCBuZXR0b3llciBsZXMgZ3JhaW5lcyBkZeKApiddLFsncDFlJywnbOKAmcOpbW90aW9uIG91IGxlIHNjaMOpbWEgOiBjb2zDqHJlLCBlbnZpZSwgcGV1cuKApiddLAogICAgICAgICAgICAgICAgICAgICAgIFsndCcsJ+KApnBsYW50w6llcyBwYXIgZGVzIHBlbnPDqWVzLCBwYXJvbGVzIGV0IGFjdGVzIGRhbnMgbW9uIHBhc3PDqSwgZGFucyBjZXR0ZSB2aWUgb3UgZGFucyB1bmUgdmllIGFudMOpcmlldXJlLCBxdWkgbeKAmW9ibGlnZW50IMOgIHZpdnJl4oCmJ10sWydwMWEnLCdsYSBzaXR1YXRpb24gcXVlIGplIHZpcyddLAogICAgICAgICAgICAgICAgICAgICAgIFsndCcsJ1F1YW5k4oCmJ10sWydwMWInLCdjZSBxdWUgamUgcGVuc2UgYXZvaXIgcGxhbnTDqSddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBKZSB2ZXV4IG5ldHRveWVyIGxlcyBncmFpbmVzIGRlICR7bWsoZS5wMWUpfSBwbGFudMOpZXMgcGFyIGRlcyBwZW5zw6llcywgcGFyb2xlcyBldCBhY3RlcyBkYW5zIG1vbiBwYXNzw6ksIGRhbnMgY2V0dGUgdmllIG91IGRhbnMgdW5lIHZpZSBhbnTDqXJpZXVyZSwgcXVpIG3igJlvYmxpZ2VudCDDoCB2aXZyZSAke21rKGUucDFhKX0uIFF1YW5kICR7bWsoZS5wMWIpfS4gJHt0eCgpLnRhaWxQMX1gIH0gfSwKICAgIDQ6eyBuYW1lOigpPT4nSmUgbmUgc2FpcyBwYXMgcXVlbGxlcyBncmFpbmVzIGrigJlhaSBwbGFudMOpZXMnLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsJ0plIG7igJlhaSBhdWN1bmUgaWTDqWUgZGUgY2UgcXVlIGrigJlhaSBwdSBwbGFudGVyIHBvdXIgdml2cmUgY2V0dGUgc2l0dWF0aW9uIDonXSxbJ3AxYScsJ2xhIHNpdHVhdGlvbiBxdWUgamUgdmlzJ11dLAogICAgICAgICAgICAgcmVjYXA6ZT0+YEplIG7igJlhaSBhdWN1bmUgaWTDqWUgZGUgY2UgcXVlIGrigJlhaSBwdSBwbGFudGVyIHBvdXIgdml2cmUgY2V0dGUgc2l0dWF0aW9uIDogJHttayhlLnAxYSl9LiBNYWlzIGplIGNvbXByZW5kcyBtYWludGVuYW50IHF1ZSwgc2kgamUgbuKAmWF2YWlzIHBhcyBwbGFudMOpIGNlcyBncmFpbmVzLCBjZXR0ZSBzaXR1YXRpb24gbmUgc2VyYWl0IHBhcyBkYW5zIG1hIHLDqWFsaXTDqS4gSmUgdmV1eCBkw6lzYWN0aXZlciBtYWludGVuYW50IGxlcyBncmFpbmVzIHBsYW50w6llcy5gIH0sCiAgICAgICAgcDI6eyBmb3JtOigpPT5bWyd0JywnU2kgcXVlbHF1ZXMgYsOpbsOpZmljZXMgbWUgdmllbm5lbnQgw6AgbOKAmWVzcHJpdCAoZmFjdWx0YXRpZiknXSxbJ3AyJywndHUgcGV1eCBsYWlzc2VyIHZpZGUnXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gSuKAmWFpIGNlcnRhaW5lbWVudCBldSBkZXMgYsOpbsOpZmljZXMsIG3Dqm1lIHNpIGplIG5lIHNhaXMgcGFzIHF1ZWxsZXMgZ3JhaW5lcyBq4oCZYWkgcGxhbnTDqWVzIG5pIHF1ZWxzIGLDqW7DqWZpY2VzIGrigJlhaSBldXMuICR7U3RyaW5nKGUucDJ8fCcnKS50cmltKCkgPyBgUGV1dC3DqnRyZSAke21rKGUucDIpfSwgZXQgaWwgeSBhIHPDu3JlbWVudCBk4oCZYXV0cmVzIGLDqW7DqWZpY2VzIHF1ZSBq4oCZYWkgcHUgYXZvaXIuYCA6ICdJbCB5IGEgc8O7cmVtZW50IGRlcyBiw6luw6lmaWNlcyBxdWUgauKAmWFpIHB1IGF2b2lyLid9ICR7dHgoKS50YWlsUDJ9YCB9LAogICAgICAgIHAzOnsgZm9ybTooKT0+W1sndCcsJ0plIHByb21ldHMgZGUgbmUgcGx1cyBwbGFudGVyIGxlcyBtw6ptZXMgZ3JhaW5lcyBwZW5kYW50IGF1IG1vaW5z4oCmJ10sWydwMycsJ2NvbWJpZW4gZGUgdGVtcHMsIHBhciBleC4gOiAxIGhldXJlJ10sWydkdXInLCdzZXQnXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gSmUgcHJvbWV0cyBkZSBuZSBwbHVzIHBsYW50ZXIgbGVzIG3Dqm1lcyBncmFpbmVzIHBlbmRhbnQgYXUgbW9pbnMgJHttayhlLnAzKX0uICR7dHgoKS5uaWdodH1gIH0sCiAgICAgICAgcDQ6eyBmb3JtOigpPT5bWyd6aSddLFsndCcsYEVuIGdlc3RlIGRlIGNvbXBlbnNhdGlvbiwgJHtwRHJhZnQuemk9PT0nbWFpbmUnPydkZW1haW4nOidhdWpvdXJk4oCZaHVpJ30gamUgcHJvbWV0cyBkZeKApmBdLFsncDQnLCdjZSBxdWUgamUgdmFpcyBmYWlyZSddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBFbiBnZXN0ZSBkZSBjb21wZW5zYXRpb24sICR7dHgoKS56aShlLnppKX0gamUgcHJvbWV0cyAke2RlRnIobm9MZWFkKGUucDQpKX0ke21rKG5vTGVhZChlLnA0KSl9LmAgfSB9CiAgfQp9OwoKLyogLS0tLS0tLS0tLSBwcmFjdGljZSB0ZXh0czogSXRhbGlhbm8gLS0tLS0tLS0tLSAqLwpUWC5pdCA9IHsKICB2b3dKb3k6WwogICAgJ0ZhY2NpbyBxdWVzdGUgY29zZSBwZXJjaMOpIGxhIG1pYSByZWFsdMOgIMOoIGRldHRhdGEgZGFpIHNlbWkgY2hlIHBpYW50bywgY2hlIHNpIHByb2lldHRhbm8gc3VsbGEgdmFjdWl0w6AgZGkgdW5hIHJlYWx0w6AgY2hlIG5vbiB2aWVuZSBkYSBzw6kgc3Rlc3NhLicsCiAgICAnUG9pY2jDqSBobyBwaWFudGF0byBxdWVzdGkgc2VtaSwgY2hlIG9yYSBzdG8gYW5jaGUgaW5uYWZmaWFuZG8sIGF2csOyIHN1Y2Nlc3NvLicsCiAgICAnUG9pY2jDqSBobyBzdWNjZXNzbyB1c2FuZG8gcXVlc3RvIHNpc3RlbWEsIGFsY3VuaSBkZWkgbWllaSBhbWljaSBlIGNvbm9zY2VudGkgbWkgaW1pdGVyYW5ubyBlIGF2cmFubm8gc3VjY2Vzc28gYSBsb3JvIHZvbHRhLiBQb2ljaMOpIGxvcm8gYXZyYW5ubyBzdWNjZXNzbyB1c2FuZG8gcXVlc3RvIHNpc3RlbWEsIGkgbG9ybyBhbWljaSBlIGNvbm9zY2VudGkgbGkgaW1pdGVyYW5ubyBhIGxvcm8gdm9sdGEuJywKICAgICdJbiBxdWVzdG8gbW9kbywgY29uIGlsIG1pbyBlc2VtcGlvLCBhdnZpbyB1bmEgcmVhemlvbmUgYSBjYXRlbmEgY2hlIGlzcGlyYSBtaWdsaWFpYSBlIG1pZ2xpYWlhIGRpIHBlcnNvbmUgYSB1c2FyZSBxdWVzdG8gc2lzdGVtYSBlIGFkIGF2ZXJlIHN1Y2Nlc3NvLiddLAogIHZvd0pveUxhc3Q6J0lsIGNoZSByZW5kZXLDoCBpbCBtb25kbyB1biBwb3N0byBtaWdsaW9yZSBlIHBpw7kgYmVsbG8uJywKICBxSm95Onsgb2JpZWN0aXY6J0zigJlvYmlldHRpdm8gYSBjdWkgZGVkaWNvIHF1ZXN0YSBtZWRpdGF6aW9uZSBkZWxsYSBnaW9pYScsIHNlbWludGU6J1F1YWxpIHNlbWkgaG8gcGlhbnRhdG8nLAogICAgICAgICBhanV0b3I6J0NoaSBtaSBwcm9wb25nbyBkaSBhaXV0YXJlIDEgb3JhIGFsbGEgc2V0dGltYW5hPyBRdWFuZG8gdm9nbGlvIGZhcmxvPyBDaGUgY29zYSBmYXLDsiBwZXIgcXVlc3RhIHBlcnNvbmE\/JyB9LAogIHBvd2Vyczp7IHAxOlsnUG90ZXJlIDEnLCdSaWNvcmRhcmUgbGEgcGVubmEnXSwgcDI6WydQb3RlcmUgMicsJ0lsIHJpbXBpYW50byBpbnRlbGxpZ2VudGUnXSwgcDM6WydQb3RlcmUgMycsJ0xhIHJlc3RyaXppb25lJ10sIHA0OlsnUG90ZXJlIDQnLCdM4oCZYW50aWRvdG8nXSB9LAogIHZvd1BvdzooKT0+WwogICAgJ0ZhY2NpbyBxdWVzdGUgY29zZSBwZXJjaMOpIGxhIHJlYWx0w6Agw6ggZGV0dGF0YSBkYWkgc2VtaSBjaGUgcGlhbnRvIGUgc2kgcHJvaWV0dGEgc3VsbGEgdmFjdWl0w6AgZGkgdW5hIHJlYWx0w6AgY2hlIG5vbiB2aWVuZSBkYSBzw6kgc3Rlc3NhLicsCiAgICBgU2UgcGlhbnRvIHBvc2l0aXZvLCBzb25vICR7RygnY29zdHJldHRhJywnY29zdHJldHRvJyl9IGEgcGVyY2VwaXJlIHVuYSByZWFsdMOgIHBvc2l0aXZhLCBhbmNoZSBzZSBjaGkgbWkgc3RhIGludG9ybm8gbGEgcGVyY2VwaXNjZSBjb21lIG5lZ2F0aXZhLiBTZSBwaWFudG8gbmVnYXRpdm8sIHNvbm8gJHtHKCdjb3N0cmV0dGEnLCdjb3N0cmV0dG8nKX0gYSBwZXJjZXBpcmUgdW5hIHJlYWx0w6AgYSBtZSBzZmF2b3Jldm9sZSwgYW5jaGUgc2UgY2hpIG1pIHN0YSBpbnRvcm5vIGxhIHBlcmNlcGlzY2UgY29tZSBwb3NpdGl2YS5gLAogICAgJ0Nvc8OsIHNjZWxnbyBkaSBwaWFudGFyZSBzZW1pIHBvc2l0aXZpLicsCiAgICAnUG9pY2jDqSBobyBzdWNjZXNzbyB1c2FuZG8gcXVlc3RvIHNpc3RlbWEsIGFsY3VuaSBkZWkgbWllaSBhbWljaSBlIGNvbm9zY2VudGkgbWkgaW1pdGVyYW5ubyBlIGF2cmFubm8gc3VjY2Vzc28gYSBsb3JvIHZvbHRhLiBQb2ljaMOpIGxvcm8gYXZyYW5ubyBzdWNjZXNzbywgaSBsb3JvIGFtaWNpIGUgY29ub3NjZW50aSBsaSBpbWl0ZXJhbm5vIGUgYXZyYW5ubyBzdWNjZXNzby4nXSwKICB2b3dQb3dMYXN0OidDb3PDrCBpbCBtb25kbyBkaXZlbnRhIHVuIHBvc3RvIG1pZ2xpb3JlIGUgcGnDuSBiZWxsby4nLAogIHBvd0hlYWQ6J0kgNCBQT1RFUkknLCBwb3dIZWFkQ2FzZTonSSA0IHBvdGVyaScsCiAgdGhlbWVzOnsgJ0Btb25leSc6J1NvbGRpJywgJ0ByZWxhdGlvbnNoaXBzJzonUmVsYXppb25pJywgJ0BoZWFsdGgnOidTYWx1dGUnIH0sCiAgZHVyOlsnNSBzZWNvbmRpJywnMSBtaW51dG8nLCc1IG1pbnV0aScsJzEwIG1pbnV0aScsJzEgb3JhJywndHV0dG8gaWwgZ2lvcm5vJ10sCiAgZHVyQXBwZW5kOmQ9PmQ9PT0ndHV0dG8gaWwgZ2lvcm5vJz8ncGVyIHR1dHRvIGlsIGdpb3Jubyc6J3BlciBhbG1lbm8gJytkLAogIGR1clN0cmlwOi9ccyoocGVyXHMrKT8oYWxtZW5vXHMrKT8odHV0dG8gaWwgZ2lvcm5vfDUgc2Vjb25kaXwxIG1pbnV0b3w1IG1pbnV0aXwxMCBtaW51dGl8MSBvcmEpXHMqJC9pLAogIGxlYWQ6L15kaVxzKy9pLAogIHppOno9Pno9PT0nbWFpbmUnPydkb21hbmknOidvZ2dpJywKICB0YWlsUDE6J0UgZm9yc2Ugbm9uIHNvIGFuY29yYSBxdWFsaSBhbHRyaSBzZW1pIGhvIHBpYW50YXRvLCBzaWN1cmFtZW50ZSBtb2x0aSBhbHRyaSBjaGUgb3JhIG5vbiByaWNvcmRvLiBRdWFsdW5xdWUgY29zYSBpbyBhYmJpYSBwZW5zYXRvLCBkZXR0byBvIGZhdHRvLCB2b2dsaW8gZGlzYXR0aXZhcmUgb3JhIHF1ZXN0aSBzZW1pLicsCiAgZ2V0IHRhaWxQMigpeyByZXR1cm4gYEhvIGZhdHRvIGRlbCBtYWxlIGEgbWUgJHtHKCdzdGVzc2EnLCdzdGVzc28nKX0gZSBhbGxlIHBlcnNvbmUgaW50b3JubyBhIG1lLiBNaSBkaXNwaWFjZSwgZSB2b2dsaW8gZGlzYXR0aXZhcmUgcXVlc3RpIHNlbWkgaWwgcHJpbWEgcG9zc2liaWxlLCBpbnNpZW1lIGEgdHV0dGUgbGUgY2F0ZW5lIGRpIGV2ZW50aSBjaGUgbmUgZGVyaXZhbm8sIHBlcmNow6kgb3JhIGNhcGlzY28gY2hlIHNpIHJhZGRvcHBpYW5vIG9nbmkgMjQgb3JlLCBlIHByaW1hIGxpIGRpc2F0dGl2bywgbWVnbGlvIMOoIWAgfSwKICBuaWdodDonRSBzdGFzZXJhLCBjb25zYXBldm9sbWVudGUsIGRhbCBtb21lbnRvIGluIGN1aSBwb3NvIGxhIHRlc3RhIHN1bCBjdXNjaW5vIGUgbWkgYWRkb3JtZW50byBmaW5vIGEgcXVhbmRvIG1pIHN2ZWdsaW8gYWwgbWF0dGluby4nLAogIHN0ZDp7CiAgICBwMjp7IGZvcm06KCk9PltbJ3QnLCdRdWFsaSBiZW5lZmljaSBobyBhdnV0byddLFsncDInLCdiZW5lZmljaSBtYXRlcmlhbGkgbyBkZWxs4oCZZWdvJ11dLAogICAgICAgICByZWNhcDplPT5gQ29uIGlsIGxpdmVsbG8gZGkgY29uc2FwZXZvbGV6emEgY2hlIGF2ZXZvIG5lZ2xpIGFubmkgaW4gY3VpIGhvIHBlbnNhdG8gLyBkZXR0byAvIGZhdHRvIHF1ZXN0ZSBjb3NlLCBlcmEgdHV0dG8gY2nDsiBjaGUgc2FwZXZvIGZhcmUuIERpIHNpY3VybyBobyBhdnV0byBiZW5lZmljaSBtYXRlcmlhbGkgbyBkZWxs4oCZZWdvOiAke21rKGUucDIpfS4gRSBmb3JzZSBobyBhdnV0byBhbmNoZSBhbHRyaSBiZW5lZmljaSBjaGUgb3JhIG5vbiByaWNvcmRvLiBPcmEgbWkgcmVuZG8gY29udG8gZGkgYXZlciBwYWdhdG8sIGUgZGkgcGFnYXJlIGFuY29yYSwgdW4gcHJlenpvIHRyb3BwbyBhbHRvIHBlciB0dXR0aSBxdWVzdGkgYmVuZWZpY2kuICR7dHgoKS50YWlsUDJ9YCB9LAogICAgcDM6eyBmb3JtOigpPT5bWyd0JywnUHJvbWV0dG\/igKYnXSxbJ3AzJywnY29zYSBwcm9tZXR0byBkaSBub24gZmFyZSBwacO5LCBlIHBlciBxdWFudG8gdGVtcG8sIGFkIGVzLjogZGkgbm9uIOKApiBwZXIgYWxtZW5vIDEgbWludXRvJ10sWydkdXInLCdhZGQnXV0sCiAgICAgICAgIHJlY2FwOmU9PmBQcm9tZXR0byAke21rKGUucDMpfS4gJHt0eCgpLm5pZ2h0fWAgfSwKICAgIHA0OnsgZm9ybTooKT0+W1snemknXSxbJ3QnLGAke3BEcmFmdC56aT09PSdtYWluZSc\/J0RvbWFuaSc6J09nZ2knfSBwcm9tZXR0byBkaeKApmBdLFsncDQnLCdjb3NhIGZhcsOyLCBjb21lIHNlbWUgb3Bwb3N0byBhIHF1ZWxsbyBjaGUgdm9nbGlvIGRpc2F0dGl2YXJlJ11dLAogICAgICAgICByZWNhcDplPT5gQ29tZSBnZXN0byBjb21wZW5zYXRpdm8sIGRlZGljbyBpbCBmYXR0byBkaSBjb21wcmVuZGVyZSBvcmEgY2hlIGxhIHJlYWx0w6AgY2hlIHZpdm8gdmllbmUgZGFpIHNlbWkgY2hlIGhvIHBpYW50YXRvIGluIHBhc3NhdG8sIGNoZSBzaSBwcm9pZXR0YW5vIHN1bGxhIHZhY3VpdMOgIGRpIHVuYSByZWFsdMOgIGNoZSBub24gdmllbmUgZGEgc8OpIHN0ZXNzYSwgZSAke3R4KCkuemkoZS56aSl9IHByb21ldHRvIGRpICR7bWsobm9MZWFkKGUucDQpKX0uYCB9CiAgfSwKICBwdjp7CiAgICAxOnsgbmFtZTooKT0+YENpw7IgY2hlIHNvbm8gJHtHKCdjb3N0cmV0dGEnLCdjb3N0cmV0dG8nKX0gYSB2aXZlcmVgLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsYFNvbm8gJHtHKCdjb3N0cmV0dGEnLCdjb3N0cmV0dG8nKX0gYSB2aXZlcmUgbmVsbGEgbWlhIHJlYWx0w6DigKZgXSxbJ3AxYScsJ2Npw7IgY2hlIHZpdm8gb3JhJ10sCiAgICAgICAgICAgICAgICAgICAgICAgWyd0Jywn4oCmYSBjYXVzYSBkZWkgbWllaSBwZW5zaWVyaSwgcGFyb2xlIGUgYXppb25pIGRlbCBtaW8gcGFzc2F0bywgaW4gcXVlc3RhIHZpdGEgbyBpbiB1bmEgdml0YSBwcmVjZWRlbnRlLCBxdWFuZG\/igKYnXSxbJ3AxYicsJ3F1YWxpIHNlbWkgaG8gcGlhbnRhdG8nXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gU29ubyAke0coJ2Nvc3RyZXR0YScsJ2Nvc3RyZXR0bycpfSBhIHZpdmVyZSBuZWxsYSBtaWEgcmVhbHTDoCAke21rKGUucDFhKX0gYSBjYXVzYSBkZWkgbWllaSBwZW5zaWVyaSwgcGFyb2xlIGUgYXppb25pIGRlbCBtaW8gcGFzc2F0bywgaW4gcXVlc3RhIHZpdGEgbyBpbiB1bmEgdml0YSBwcmVjZWRlbnRlLCBxdWFuZG8gJHttayhlLnAxYil9LiAke3R4KCkudGFpbFAxfWAgfSB9LAogICAgMjp7IG5hbWU6KCk9PidRdWFsaSBzZW1pIHZvZ2xpbyBwdWxpcmUnLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsJ1ZvZ2xpbyBkaXNhdHRpdmFyZSBpIHNlbWkgcGlhbnRhdGkgcXVhbmRv4oCmJ10sWydwMWInLCdjb3NhIGhvIHBlbnNhdG8sIGRldHRvIG8gZmF0dG8nXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gVm9nbGlvIGRpc2F0dGl2YXJlIGkgc2VtaSBwaWFudGF0aSBxdWFuZG8gJHttayhlLnAxYil9LCBwZXJjaMOpIHNpIHJhZGRvcHBpYW5vIG9nbmkgMjQgb3JlIGUgbm9uIHZvZ2xpbyBwacO5IGNoZSBxdWVzdGkgc2VtaSBjcmVzY2Fuby4gSW5vbHRyZSwgZm9yc2UgaG8gcGlhbnRhdG8gYW5jaGUgYWx0cmkgc2VtaSBjaGUgb3JhIG5vbiByaWNvcmRvLiBRdWFsdW5xdWUgY29zYSBpbyBhYmJpYSBwZW5zYXRvLCBkZXR0byBvIGZhdHRvLCB2b2dsaW8gZGlzYXR0aXZhcmUgb3JhIHF1ZXN0aSBzZW1pLmAgfSB9LAogICAgMzp7IG5hbWU6KCk9PidQdWxpc2NvIHVu4oCZZW1vemlvbmUnLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsJ1ZvZ2xpbyBwdWxpcmUgaSBzZW1pIGRp4oCmJ10sWydwMWUnLCds4oCZZW1vemlvbmUgbyBsbyBzY2hlbWE6IHJhYmJpYSwgaW52aWRpYSwgcGF1cmHigKYnXSwKICAgICAgICAgICAgICAgICAgICAgICBbJ3QnLCfigKZwaWFudGF0aSBjb24gcGVuc2llcmksIHBhcm9sZSBlIGF6aW9uaSBuZWwgbWlvIHBhc3NhdG8sIGluIHF1ZXN0YSB2aXRhIG8gaW4gdW5hIHZpdGEgcHJlY2VkZW50ZSwgY2hlIG1pIGNvc3RyaW5nb25vIGEgdml2ZXJl4oCmJ10sWydwMWEnLCdsYSBzaXR1YXppb25lIGNoZSB2aXZvJ10sCiAgICAgICAgICAgICAgICAgICAgICAgWyd0JywnUXVhbmRv4oCmJ10sWydwMWInLCdjb3NhIHBlbnNvIGRpIGF2ZXIgcGlhbnRhdG8nXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gVm9nbGlvIHB1bGlyZSBpIHNlbWkgZGkgJHttayhlLnAxZSl9IHBpYW50YXRpIGNvbiBwZW5zaWVyaSwgcGFyb2xlIGUgYXppb25pIG5lbCBtaW8gcGFzc2F0bywgaW4gcXVlc3RhIHZpdGEgbyBpbiB1bmEgdml0YSBwcmVjZWRlbnRlLCBjaGUgbWkgY29zdHJpbmdvbm8gYSB2aXZlcmUgJHttayhlLnAxYSl9LiBRdWFuZG8gJHttayhlLnAxYil9LiAke3R4KCkudGFpbFAxfWAgfSB9LAogICAgNDp7IG5hbWU6KCk9PidOb24gc28gcXVhbGkgc2VtaSBobyBwaWFudGF0bycsCiAgICAgICAgcDE6eyBmb3JtOigpPT5bWyd0JywnTm9uIGhvIGlkZWEgZGkgY29zYSBpbyBhYmJpYSBwb3R1dG8gcGlhbnRhcmUgcGVyIHZpdmVyZSBxdWVzdGEgc2l0dWF6aW9uZTonXSxbJ3AxYScsJ2xhIHNpdHVhemlvbmUgY2hlIHZpdm8nXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gTm9uIGhvIGlkZWEgZGkgY29zYSBpbyBhYmJpYSBwb3R1dG8gcGlhbnRhcmUgcGVyIHZpdmVyZSBxdWVzdGEgc2l0dWF6aW9uZTogJHttayhlLnAxYSl9LiBNYSBvcmEgY2FwaXNjbyBjaGUsIHNlIG5vbiBhdmVzc2kgcGlhbnRhdG8gcXVlaSBzZW1pLCBxdWVzdGEgc2l0dWF6aW9uZSBub24gc2FyZWJiZSBuZWxsYSBtaWEgcmVhbHTDoC4gVm9nbGlvIGRpc2F0dGl2YXJlIG9yYSBpIHNlbWkgcGlhbnRhdGkuYCB9LAogICAgICAgIHAyOnsgZm9ybTooKT0+W1sndCcsJ1NlIG1pIHZlbmdvbm8gaW4gbWVudGUgYWxjdW5pIGJlbmVmaWNpIChmYWNvbHRhdGl2byknXSxbJ3AyJywncHVvaSBsYXNjaWFyZSB2dW90byddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBEaSBzaWN1cm8gaG8gYXZ1dG8gZGVpIGJlbmVmaWNpLCBhbmNoZSBzZSBub24gc28gcXVhbGkgc2VtaSBobyBwaWFudGF0byBuw6kgcXVhbGkgYmVuZWZpY2kgaG8gYXZ1dG8uICR7U3RyaW5nKGUucDJ8fCcnKS50cmltKCkgPyBgRm9yc2UgJHttayhlLnAyKX0sIGUgY2kgc29ubyBzaWN1cmFtZW50ZSBhbHRyaSBiZW5lZmljaSBjaGUgaG8gcG90dXRvIGF2ZXJlLmAgOiAnQ2kgc29ubyBzaWN1cmFtZW50ZSBiZW5lZmljaSBjaGUgaG8gcG90dXRvIGF2ZXJlLid9ICR7dHgoKS50YWlsUDJ9YCB9LAogICAgICAgIHAzOnsgZm9ybTooKT0+W1sndCcsJ1Byb21ldHRvIGRpIG5vbiBwaWFudGFyZSBwacO5IGdsaSBzdGVzc2kgc2VtaSBwZXIgYWxtZW5v4oCmJ10sWydwMycsJ3BlciBxdWFudG8gdGVtcG8sIGFkIGVzLjogMSBvcmEnXSxbJ2R1cicsJ3NldCddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBQcm9tZXR0byBkaSBub24gcGlhbnRhcmUgcGnDuSBnbGkgc3Rlc3NpIHNlbWkgcGVyIGFsbWVubyAke21rKGUucDMpfS4gJHt0eCgpLm5pZ2h0fWAgfSwKICAgICAgICBwNDp7IGZvcm06KCk9PltbJ3ppJ10sWyd0JyxgQ29tZSBnZXN0byBjb21wZW5zYXRpdm8sICR7cERyYWZ0LnppPT09J21haW5lJz8nZG9tYW5pJzonb2dnaSd9IHByb21ldHRvIGRp4oCmYF0sWydwNCcsJ2Nvc2EgZmFyw7InXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gQ29tZSBnZXN0byBjb21wZW5zYXRpdm8sICR7dHgoKS56aShlLnppKX0gcHJvbWV0dG8gZGkgJHttayhub0xlYWQoZS5wNCkpfS5gIH0gfQogIH0KfTsKCi8qIC0tLS0tLS0tLS0gUm9tw6JuxIMgLS0tLS0tLS0tLSAqLwovKiBudW1lcmVsZSBkZSBsYSAyMCDDrm4gc3VzICjImWkgMTAwLCAyMDDigKYpIGNlciDigJ5kZeKAnTogMjAgZGUgbWludXRlLCAxIHByYWN0aWPEgywgNSBwcmFjdGljaSAqLwpjb25zdCBkZVJvID0gbiA9PiAobj49MjAgJiYgKG4lMTAwPT09MCB8fCBuJTEwMD49MjApKSA\/ICdkZSAnIDogJyc7CmNvbnN0IHJvTiA9IChuLHMscCkgPT4gbj09PTEgPyBgMSAke3N9YCA6IGAke259ICR7ZGVSbyhuKX0ke3B9YDsKVUkucm8gPSB7CiAgYXBwTmFtZTonU2VtaW7Im2UgQnVuZScsIGNvdXJzZXM6J0N1cnN1cmlsZSBtZWxlJywgbGFuZ3VhZ2U6J0xpbWJhJywgc29vbjonw65uIGN1csOibmQnLCBjbG9zZTonw45uY2hpZGUnLAogIG5hdlRvZGF5OidBemknLCBuYXZKb3k6J0J1Y3VyaWUnLCBuYXZQcmFjdGljZTonUHJhY3RpY8SDJywgbmF2VG9kbzonVG8gRG8nLCBuYXZQb3dlcnM6JzQgUHV0ZXJpJywgbWVudTonTWVuaXUnLAogIHNhdmVGYWlsOidOdSBzLWEgcHV0dXQgc2FsdmEuIFZlcmlmaWPEgyBpbnRlcm5ldHVsLicsIGxvYWRGYWlsOidOdSBzLWF1IHB1dHV0IMOubmPEg3JjYSBkYXRlbGUuJywKICB0b2RheTonQXppJywgeWVzdGVyZGF5OidJZXJpJywKICBraW5kOnsgbWVkaXRhdGllOidNZWRpdGHIm2llJywgeW9nYTonWW9nYScsIGJ1Y3VyaWU6J01lZGl0YcibaWEgYnVjdXJpZWknLCByZWN1bm9zdGludGU6J1JlY3Vub8iZdGluyJtlIMiZaSBzdWNjZXNlJywgcHV0ZXJpOidDZWxlIDQgcHV0ZXJpJyB9LAogIHRlc3RCYW5uZXI6J1ZhcmlhbnTEgyBkZSB0ZXN0OiDDrm5zZW1uxINyaWxlIHNlIHDEg3N0cmVhesSDIGRvYXIgcGUgYWNlc3QgZGlzcG96aXRpdi4gUGUgc2l0ZSBzZSB2b3Igc2FsdmEgw65uIGNvbnR1bCB0xIN1LicsCiAgZ2VuUTonQ3VtIHByZWZlcmkgc8SDIMOuyJtpIHZvcmJlc2M\/JywgZ2VuTm90ZTonQ2EgdGV4dGVsZSBzxIMgc3VuZSBmaXJlc2MsIGRlIGV4ZW1wbHUg4oCeU3VudCByZWN1bm9zY8SDdG9hcmXigJ0gc2F1IOKAnlN1bnQgcmVjdW5vc2PEg3RvcuKAnS4nLCBmZW06J0ZlbWluaW4nLCBtYXNjOidNYXNjdWxpbicsCiAgZ2VuRm9vdDpnPT5gw47Im2kgdm9yYmVzYyBsYSAke2c9PT0nbSc\/J21hc2N1bGluJzonZmVtaW5pbid9YCwgY2hhbmdlOidzY2hpbWLEgycsCiAgaGVhZGxpbmU6J0NlIHBsYW50ZXppIGF6aT8nLCBzdHJlYWs6J3ppbGUgbGEgcsOibmQnLCBtaW5Ub2RheTonbWludXRlIGF6aScsIHByYWN0VG9kYXk6J3ByYWN0aWNpIGF6aScsIG5Ub2RheTpuPT5gJHtufSBhemlgLAogIHRpbGVNZWQ6J01lZGl0YcibaWUgLyBZb2dhJywgdGlsZVJlYzonUmVjdW5vyJl0aW7Im2UgLyBTdWNjZXNlJywgdGlsZUpveTonTWVkaXRhyJtpYSBidWN1cmllaScsIHRpbGVQb3c6J0NlbGUgNCBwdXRlcmknLAogIGpvdXJuYWw6J0p1cm5hbHVsIG1ldScsIG5FbnRyaWVzOm49Pm49PT0xPycxIMOubnNlbW5hcmUnOmAke259ICR7ZGVSbyhuKX3Drm5zZW1uxINyaWAsCiAgam95VGl0bGU6J01lZGl0YcibaWEgYnVjdXJpZWknLCBqb3lMZWFkOidDb21wbGV0ZWF6xIMgY2VsZSB0cmVpIHLEg3NwdW5zdXJpLCBhcG9pIHNhbHZlYXrEgy4nLCBicmVhdGhlQ3VlOidJbnNwaXLEgyDImWkgZXhwaXLEgyBwcm9mdW5kIGRlIDMgb3JpJywgYnJlYXRoZUJ0bjonUmVzcGlyxIMgY3UgbWluZScsCiAgYWRkSGVscFRvZG86JysgQWRhdWfEgyDDrm4gVG8gRG86IHBlIGNpbmUgYWp1dCcsIG5ld0pveTonTyBub3XEgyBtZWRpdGHIm2llIGEgYnVjdXJpZWknLCBzYXZlOidTYWx2ZWF6xIMnLAogIHBpY2tQcmV2Om49PmBBbGVnZSB1biBvYmllY3RpdiBkZSBkaW5haW50ZSAoJHtufSlgLCBteUdvYWxzOidPYmllY3RpdmVsZSBtZWxlJywgc2VhcmNoR29hbHM6J0NhdXTEgyDDrm4gb2JpZWN0aXZlbGUgbWVsZScsIG5vR29hbDonTmljaXVuIG9iaWVjdGl2IGfEg3NpdC4nLCBuZXdHb2FsUGg6J3NhdSBzY3JpZSB1biBvYmllY3RpdiBub3UnLAogIGFkZFRvZG86JysgQWRhdWfEgyDDrm4gVG8gRG8nLCBhZGRlZFRvZG86J+KckyBBZMSDdWdhdCDDrm4gVG8gRG8nLCB0b2FzdEFkZGVkOidBZMSDdWdhdCDDrm4gVG8gRG8nLCBmaWxsQW5zd2VyczonQ29tcGxldGVhesSDIHLEg3NwdW5zdXJpbGUuJywKICBpbmhhbGU6J0luc3BpcsSD4oCmJywgZXhoYWxlOidFeHBpcsSD4oCmJywgYWdhaW46J8OObmPEgyBvIGRhdMSDJywgZG9uZUJyZWF0aFA6J0FpIHByYWN0aWNhdCBwZW50cnUgYSBkZXphY3RpdmEgc8SDbcOibsibYS4nLCBkb25lQnJlYXRoSjonU8SDbcOibsibYSBlIHVkYXTEgy4nLAogIHBvd1RpdGxlOidDZWxlIDQgcHV0ZXJpJywgcG93TGVhZDonQWxlZ2UgdGVtYSDImWkgZGUgdW5kZSBwb3JuZciZdGksIGNvbXBsZXRlYXrEgyBmaWVjYXJlIHB1dGVyZSwgYXBvaSBzYWx2ZWF6xIMuJywgdGhlbWU6J1RFTUEnLCB0aGVtZUFyaWE6J1RlbWEnLAogIGZld2VyOidNYWkgcHXIm2luZScsIGFsbFRoZW1lczpuPT5gVG9hdGUgdGVtZWxlICgke259KWAsIG5ld1RoZW1lUGg6J3NhdSBhZGF1Z8SDIG8gdGVtxIMgbm91xIMnLCBhZGQ6J0FkYXVnxIMnLCBzdGFydDonREUgVU5ERSBQT1JORciYVEknLAogIHdoZW46J0PDom5kJywgelRvZGF5OidBc3TEg3ppJywgelRvbW9ycm93OidNw6JpbmUnLCBob3dMb25nOidDw6J0IHRpbXAnLAogIHA0bm90ZTonRHVwxIMgc2FsdmFyZSwgcHJvbWlzaXVuZWEgYWp1bmdlIGF1dG9tYXQgw65uIFRvIERvLicsIGZpbGxQb3dlcnM6J0NvbXBsZXRlYXrEgyBwdXRlcmlsZS4nLCBleHBvcnRMaW5rOidFeHBvcnTEgyBwcmFjdGljaWxlIHBlIG8gcGVyaW9hZMSDJywKICBpblRvZG86J0NlIGFpIHByb21pcyBsYSBwdXRlcmVhIGEgNC1hIGUgw65uIGxpc3RhIFRvIERvLicsIGNvcHk6J0NvcGlhesSDIHRleHQnLCBwZGY6J1NhbHZlYXrEgyBQREYnLAogIGRvSm95Tm93OidGxIMgbWVkaXRhyJtpYSBidWN1cmllaSBhY3VtJywgZ29Kb3k6J01lcmdpIGxhIG1lZGl0YcibaWEgYnVjdXJpZWknLCBuZXdQb3dlcnM6J8OObmNlcGUgdW4gbm91IGV4ZXJjacibaXUgNCBQdXRlcmknLAogIGNvcGllZDonVGV4dCBjb3BpYXQuIMOObCBwb8ibaSBsaXBpIHVuZGUgdnJlaS4nLCBjb3B5RmFpbDonTnUgYW0gcHV0dXQgY29waWEgcGUgYWNlc3QgZGlzcG96aXRpdi4nLAogIGJhY2s6J+KAuSDDjm5hcG9pJywgZXhwVGl0bGU6J0V4cG9ydMSDIHByYWN0aWNpbGUnLCBleHBMZWFkOidBbGVnZSBwZXJpb2FkYS4gUG\/Im2kgY29waWEgdGV4dHVsIHNhdSDDrmwgcG\/Im2kgc2FsdmEgY2EgUERGLicsIGZyb206J0RFIExBJywgdG86J1DDgk7EgiBMQScsCiAgblByYWN0Om49PmAke3JvTihuLCdwcmFjdGljxIMnLCdwcmFjdGljaScpfSDDrm4gYWNlYXN0xIMgcGVyaW9hZMSDLmAsIG5vUHJhY3Q6J051IGFpIHByYWN0aWNpIGN1IGNlbGUgNCBwdXRlcmkgw65uIGFjZWFzdMSDIHBlcmlvYWTEgy4nLAogIHJlY1RpdGxlOidSZWN1bm\/ImXRpbsibZSAvIFN1Y2Nlc2UnLCByZWNMZWFkOidTY3JpZSBjw6J0ZSB2cmVpLiBGaWVjYXJlIHLDom5kIGUgbyByZWN1bm\/ImXRpbsibxIMgc2F1IHVuIHN1Y2Nlcy4nLAogIGdyYXRpdHVkZTonUmVjdW5vyJl0aW7Im8SDJywgc3VjY2VzczonU3VjY2VzJywgcm93VHlwZTppPT5gVGlwdWwgcsOibmR1bHVpICR7aX1gLCBkZWxSb3c6J8iYdGVyZ2UgcsOibmR1bCcsIHJlbW92ZTonyJh0ZXJnZScsIHN1Y2Nlc3NQaDonY2UgYW0gcmV1yJlpdCBhemknLAogIGFkZFJvdzonKyDDjm5jxIMgdW4gcsOibmQnLCB3cml0ZU9uZTonU2NyaWUgY2VsIHB1yJtpbiB1biByw6JuZC4nLCBzYXZlZEo6J1NhbHZhdCDDrm4ganVybmFsJywKICBwcmVHOkc9PmBTdW50ICR7RygncmVjdW5vc2PEg3RvYXJlJywncmVjdW5vc2PEg3RvcicpfSBwZW50cnVgLCBwcmVTOkc9PmBTdW50ICR7RygnYnVjdXJvYXPEgycsJ2J1Y3Vyb3MnKX0gcGVudHJ1YCwKICBuUmVjOihucixucyk9Pltucj9yb04obnIsJ3JlY3Vub8iZdGluyJvEgycsJ3JlY3Vub8iZdGluyJtlJyk6JycsIG5zP3JvTihucywnc3VjY2VzJywnc3VjY2VzZScpOicnXS5maWx0ZXIoQm9vbGVhbikuam9pbignIMK3ICcpLAogIHRvZG9UaXRsZTonVG8gRG8nLCB0b2RvTGVhZDonQ2UgYW0gZGUgZsSDY3V0IGNhIHNlbWluyJtlbGUgc8SDIGNyZWFzY8SDLicsIHRvZG9QaDonQWRhdWfEgyBjZXZhIGRlIGbEg2N1dCcsCiAgbWFya0RvbmU6J01hcmNoZWF6xIMgY2EgZsSDY3V0JywgbWFya1VuZG9uZTonTWFyY2hlYXrEgyBjYSBuZWbEg2N1dCcsIGRlbDonyJh0ZXJnZScsIG5vOidOdScsCiAgdG9kb0VtcHR5OidOaW1pYyBkZSBmxINjdXQgYWN1bS48YnI+Q2Ugc2NyaWkgbGEg4oCeUGUgY2luZSBhanV04oCdIMOubiBtZWRpdGHIm2lhIGJ1Y3VyaWVpIMiZaSBsYSBwdXRlcmVhIGEgNC1hIHBvYXRlIGFqdW5nZSBhaWNpLicsCiAgc2hvd0RvbmU6KHMsbik9PmAke3M\/J0FzY3VuZGUnOidBcmF0xIMnfSBjZSBhbSBmxINjdXQgKCR7bn0pYCwgc3JjOntidWN1cmllOidNZWRpdGHIm2lhIGJ1Y3VyaWVpJyxwdXRlcmk6J0NlbGUgNCBwdXRlcmknLG1hbnVhbDonQWTEg3VnYXQgZGUgbWluZSd9LCBkb25lVG9hc3Q6J0bEg2N1dC4gQnJhdm8hJywKICB0b2RvUHJvbWlzZTp6PT56PT09J21haW5lJz8nTcOiaW5lIHByb21pdCBzxIMnOidBc3TEg3ppIHByb21pdCBzxIMnLAogIGtpbmRBcmlhOidUaXB1bCBwcmFjdGljaWknLCBkb25lSDonR2F0YS4gU8SDbcOibsibYSBlIHBsYW50YXTEgy4nLCBkb25lTm90ZTooayxtKT0+YCR7a30sICR7bX0gbWluLiBTYWx2YXQgw65uIGp1cm5hbC5gLAogIHRpdGxlT3B0OidUaXRsdSAob3DIm2lvbmFsKScsIHBoTW9ybmluZzonZXguIE1lZGl0YcibaWEgZGUgZGltaW5lYcibxIMnLCBhbm90aGVyOifDjm5jxIMgbyBwcmFjdGljxIMnLAogIHN0b3BwZWRBZnRlcjptPT5gVGUtYWkgb3ByaXQgZHVwxIMgJHttfSBtaW4uYCwgd2FudFNhdmU6J1ZyZWkgc8SDIG8gdHJlYyDDrm4ganVybmFsPycsIHNhdmVNaW46bT0+YFNhbHZlYXrEgyAke219IG1pbmAsIGRvbnRTYXZlOidOdSBzYWx2YScsCiAgc3RvcHBlZDonUHJhY3RpY2EgYSBmb3N0IG9wcml0xIMuJywgYmFja1BsYWluOifDjm5hcG9pJywgcmVzdW1lOidDb250aW51xIMnLCBwYXVzZTonUGF1esSDJywgc3RvcDonT3ByZciZdGUnLAogIHNjcmVlbk5vdGU6J8iaaW5lIGVjcmFudWwgYXByaW5zLiBEYWPEgyB0ZWxlZm9udWwgc2UgYmxvY2hlYXrEgywgY2xvcG\/Im2VsdWwgZGUgZmluYWwgcG9hdGUgc8SDIG51IHN1bmUsIGRhciBwcmFjdGljYSBzZSBzYWx2ZWF6xIMgY8OibmQgcmV2aWkuJywKICBkdXJhdGlvbjonRFVSQVRBJywgcHJlcDonUFJFR8SCVElSRScsIHNvdW5kOidTVU5FVCcsIGJlbGw6J0Nsb3BvyJtlbCcsIGJvd2w6J0JvbCB0aWJldGFuJywgbGlzdGVuOidBc2N1bHTEgycsIHRpdGxlQ2FwOidUSVRMVSAoT1DImklPTkFMKScsIHBoU2lsZW5jZTonZXguIDUgbWludXRlIGRlIGxpbmnImXRlJywKICBiZWdpbjonw45uY2VwZScsIG1hbnVhbExpbms6J0FtIHByYWN0aWNhdCBmxINyxIMgdGltZXIsIHZyZWF1IGRvYXIgc8SDIGJpZmV6Jywgbm9UaW1lcjonRsSDcsSDIHRpbWVyJywgbG9nUHJhY3Q6J0JpZmVhesSDIG8gcHJhY3RpY8SDJywgZGF5OidaSVVBJywKICBwaEV2ZW5pbmc6J2V4LiBZb2dhIGRlIHNlYXLEgycsIHNhdmVKb3VybmFsOidTYWx2ZWF6xIMgw65uIGp1cm5hbCcsIGNhbmNlbDonUmVudW7Im8SDJywgbG9nZ2VkOidiaWZhdMSDJywKICByZWFkeTonR2F0YSBkZSDDrm5jZXB1dCcsIHByZXBQaGFzZTonUHJlZ8SDdGlyZScsIGJlbGxTdGFydDonQ2xvcG\/Im2VsdWwgc3VuxIMgbGEgw65uY2VwdXQnLCBvZjonZGluICcsIHBhdXNlZDonUGF1esSDJywgcHJlc3NDb250OidBcGFzxIMgQ29udGludcSDJywKICBwbHVzUHJlcDpsPT5gKyAke2x9IHByZWfEg3RpcmVgLCBub1ByZXA6J2bEg3LEgyBwcmVnxIN0aXJlJywgbm9uZTonRsSDcsSDJywgdW5pdE1pbjonbWluJywgdW5pdFNlYzonc2VjJywKICBhbGw6J1RvYXRlJywgblByYWN0aWNlczpuPT5yb04obiwncHJhY3RpY8SDJywncHJhY3RpY2knKSwgdG90TWluOm09PmAgwrcgJHttfSAke2RlUm8obSl9bWludXRlIMOubiB0b3RhbGAsCiAgakVtcHR5OifDjm5jxIMgbnUgYWkgbmljaW8gc8SDbcOibsibxIMgYWljaS48YnI+RsSDIG8gbWVkaXRhyJtpZSBzYXUgYmlmZWF6xIMgbyBwcmFjdGljxIMgyJlpIGFwYXJlIMOubiBqdXJuYWwuJywgZ29QcmFjdGljZTonTWVyZ2kgbGEgcHJhY3RpY8SDJywKICBkZWxROifImHRlcmdpIGFjZWFzdMSDIHByYWN0aWPEgz8nLCBkZWxldGVkOifImHRlcnMnLAogIGdhdGVMZWFkOidBcGxpY2HIm2lhIGUgZ3JhdHVpdMSDLiBJbnRyxIMgw65uIGNvbnR1bCB0xIN1IGNhIMOubnNlbW7Eg3JpbGUgc8SDIHLEg23Dom7EgyBzYWx2YXRlLicsIHNpZ25JbjonSW50csSDIMOubiBjb250JywgcmVnaXN0ZXI6J051IGFpIGNvbnQ\/IENyZWVhesSDLcibaSB1bnVsIGdyYXR1aXQnLAogIC8qIGNvbXVuaXRhdGVhICovCiAgcGVyc29uYWw6J1BlcnNvbmFsJywgY29tbXVuaXR5OidDb211bml0YXRlJywgc2VnQXJpYTonQ2UgdmV6aScsCiAgY29tbVRpdGxlOidDb211bml0YXRlYScsIGNvbW1MZWFkOidDw6JuZCB0ZSBidWN1cmkgZGUgc3VjY2VzZWxlIGFsdG9yYSwgdXppIHNlbWluyJtlbGUgcGVudHJ1IG9iaWVjdGl2dWwgdMSDdS4gQ8OibmQgY2l0ZciZdGkgY2VsZSA0IHB1dGVyaSBhbGUgY3VpdmEsIGxlIHBvyJtpIHBhcmN1cmdlIMiZaSBwZW50cnUgdGluZS4nLAogIGNvbW1UZXN0QmFubmVyOidWYXJpYW50xIMgZGUgdGVzdDogYWljaSB2ZXppIGPDonRldmEgZXhlbXBsZS4gUGUgc2l0ZSB2b3IgYXDEg3JlYSBwb3N0xINyaWxlIHJlYWxlIGFsZSBjZWxvciBjYXJlIGFsZWcgc8SDIMOubXDEg3J0xIPImWVhc2PEgy4nLAogIGNvbW1FbXB0eTonw45uY8SDIG51IGUgbmltaWMgYWljaS4nLCBhcHBlYXJJbjpuPT5gQXBhcmkgw65uIGNvbXVuaXRhdGUgY2EgPGI+JHtufTwvYj5gLAogIHJlYWN0Sm95OidNxIMgYnVjdXInLCBjb3VudEpveToncy1hdSBidWN1cmF0JywgdG9hc3RKb3k6J0PDom5kIHRlIGJ1Y3VyaSBwZW50cnUgYWzIm2lpLCB1emkgc2VtaW7Im2VsZSBwZW50cnUgb2JpZWN0aXZ1bCB0xIN1LicsCiAgcmVhY3RQb3c6J0FtIHBhcmN1cnMnLCBjb3VudFBvdzonYXUgcGFyY3VycycsIHRvYXN0UG93OidBaSBwYXJjdXJzIGNlbGUgNCBwdXRlcmkgbGEgcsOibmR1bCB0xIN1LicsCiAgZ2VzdE5vdGU6J0F0ZW7Im2llIGxhIGdlc3R1bCBjb21wZW5zYXRvcjogYWxlZ2UtyJtpIHVudWwgcGVyc29uYWwgyJlpIHByYWN0aWPEgy1sIGNhIHPEgyBkZXphY3RpdmV6aSBzZW1pbsibZWxlLiBOdSB0cmVidWllIHPEgyBmaWUgbmVhcMSDcmF0IGNlIGEgcHJvbWlzIGNlYWxhbHTEgyBwZXJzb2FuxIMuJywKICBub2JvZHlZZXQ6J8OObmPEgyBuaW1lbmknLCB3aXRoZHJhdzonUmV0cmFnZScsIHJlcG9ydDonUmFwb3J0ZWF6xIMnLCByZXBvcnRBZ2FpbjonQXBhc8SDIGRpbiBub3UgY2Egc8SDIHJhcG9ydGV6aScsIHJlcG9ydGVkOidNdWzIm3VtaW0uIFBvc3RhcmVhIGEgZm9zdCBhc2N1bnPEgyDImWkgdmEgZmkgdmVyaWZpY2F0xIMuJywKICByZWFkRnVsbDonQ2l0ZciZdGUgaW50ZWdyYWwgY2VsZSA0IHB1dGVyaScsIHNob3dMZXNzOidBcmF0xIMgbWFpIHB1yJtpbicsIHlvdTondHUnLAogIGluc3BvSGVhZDpuPT5gRGluIGNvbXVuaXRhdGUgwrcgJHtufWAsIGluc3BvTW9yZTonVmV6aSBjZSBhdSBwbGFudGF0IGNlaWxhbMibaSDigLonLAogIHNoYXJlQnRuOifDjm1wxINydMSDyJllyJl0ZSBhbm9uaW0gY3UgY29tdW5pdGF0ZWEnLCBzaGFyZWRCdG46J8OObXDEg3J0xIPImWl0IMOubiBjb211bml0YXRlIMK3IHJldHJhZ2UnLCBzaGFyZWRUYWc6J8OubiBjb211bml0YXRlJywKICB3aG9TZWVzOidDSU5FIFZFREUnLCBvbmx5TWU6J0RvYXIgZXUnLCBzaGFyZUFub246J8OObXDEg3J0xIPImWXImXRlIGFub25pbScsIHNoYXJlQWZ0ZXI6J0R1cMSDIHNhbHZhcmUgYWxlZ2kgY2UgYXBhcmUgw65uIGNvbXVuaXRhdGUgyJlpIHN1YiBjZSBudW1lLicsCiAgc2hlZXRTaGFyZWQ6J8OObXDEg3J0xIPImWl0IMOubiBjb211bml0YXRlJywgc2hlZXRTaGFyZWROb3RlOm49PmBBY2Vhc3TEgyDDrm5zZW1uYXJlIGUgdml6aWJpbMSDIMOubiBjb211bml0YXRlIHN1YiBudW1lbGUgPGI+JHtufTwvYj4uIERhY8SDIG8gcmV0cmFnaSwgZGlzcGFyZSBwZW50cnUgdG\/Im2kuIMOObiBqdXJuYWx1bCB0xIN1IHLEg23Dom5lLmAsCiAgYmxvY2tlZE5vdGU6J8OObXDEg3J0xIPImWlyZWEgw65uIGNvbXVuaXRhdGUgbnUgbWFpIGVzdGUgZGlzcG9uaWJpbMSDIHBlbnRydSBjb250dWwgdMSDdS4nLAogIG5hbWVMYWJlbDonTnVtZWxlIHTEg3Ugw65uIGNvbXVuaXRhdGUnLCBuYW1lUGg6J2V4LiBGbG9hcmUgZGUgdGVpJywgbmFtZU5vdGU6J051IHRyZWJ1aWUgc8SDIGZpZSBudW1lbGUgdMSDdSByZWFsLiDDjmwgcG\/Im2kgc2NoaW1iYSBvcmljw6JuZC4nLAogIGFwcGVhcnNBczpuPT5gQXBhcmkgY2EgPGI+JHtufTwvYj5gLCBvdGhlcnNSZWFkOidBU1RBIFZPUiBDSVRJIENFSUxBTMiaSScsIGNob29zZVNoYXJlOidBTEVHRSBDRSDDjk1QxIJSVMSCyJhFyJhUSScsCiAgcHJpdmFjeU5vdGU6J8OObmFpbnRlIHPEgyDDrm1wxINydMSDyJllyJl0aSwgdmVyaWZpY8SDIHPEgyBudSBhcGFyxIMgbnVtZSBzYXUgZGV0YWxpaSBkdXDEgyBjYXJlIGNpbmV2YSBwb2F0ZSBmaSByZWN1bm9zY3V0LicsCiAgd2l0aGRyYXdCdG46J1JldHJhZ2UgZGluIGNvbXVuaXRhdGUnLCBzaGFyZURvOifDjm1wxINydMSDyJllyJl0ZScsIG5hbWVTaG9ydDonQWxlZ2UgdW4gbnVtZSBkZSBjZWwgcHXIm2luIDIgbGl0ZXJlLicsIGNob29zZU9uZTonQWxlZ2UgY2VsIHB1yJtpbiB1biByw6JuZC4nLAogIHNoYXJlZFRvYXN0OifDjm1wxINydMSDyJlpdCBjdSBjb211bml0YXRlYScsIHdpdGhkcmF3bjonUmV0cmFzIGRpbiBjb211bml0YXRlJywgbmFtZVNhdmVkOidOdW1lIHNhbHZhdCcsCiAgbmFtZVNoZWV0Tm90ZTonTnUgdHJlYnVpZSBzxIMgZmllIG51bWVsZSB0xIN1IHJlYWwuIFNlIHNjaGltYsSDIMiZaSBsYSBjZSBhaSDDrm1wxINydMSDyJlpdCBkZWphLicsCiAgZmlyc3RROidDdW0gdnJlaSBzxIMgYXBhcmkgw65uIGNvbXVuaXRhdGU\/JywgZmlyc3ROb3RlOidBbGVnZSB1biBudW1lIGNhcmUgbnUgdHJlYnVpZSBzxIMgZmllIGNlbCByZWFsLiDDjmwgZm9sb3NlyJl0aSBkb2FyIGPDom5kIGFsZWdpIHPEgyDDrm1wxINydMSDyJllyJl0aSBjZXZhLiDDjmwgcG\/Im2kgc2NoaW1iYSBvcmljw6JuZC4nLAogIGxhdGVyOidNYWkgdMOicnppdScsIHdlbGNvbWU6bj0+YEJpbmUgYWkgdmVuaXQsICR7bn0hYCwgYXBpRmFpbDonTnUgcy1hIHB1dHV0IGZhY2UgbGVnxIN0dXJhIGN1IHNpdGUtdWwuJywKICBlcnI6eyBibG9jYXQ6J8OObXDEg3J0xIPImWlyZWEgbnUgbWFpIGVzdGUgZGlzcG9uaWJpbMSDIHBlbnRydSBjb250dWwgdMSDdS4nLCBmYXJhX251bWU6J0FsZWdlIG1haSDDrm50w6JpIHVuIG51bWUgcGVudHJ1IGNvbXVuaXRhdGUuJywgZ29sOidOdSBlc3RlIG5pbWljIGRlIMOubXDEg3J0xIPImWl0LicsCiAgICAgICAgcHJlYV9tdWx0ZTonQWkgw65tcMSDcnTEg8iZaXQgZGVqYSBtdWx0IGF6aS4gUmV2aW5vIG3DomluZS4nLCBsdWF0OidOdW1lbGUgYWNlc3RhIGUgZGVqYSBmb2xvc2l0LiBBbGVnZSBhbHR1bC4nLCBudW1lOidOdW1lbGUgdHJlYnVpZSBzxIMgYWlixIMgw65udHJlIDIgyJlpIDMwIGRlIGxpdGVyZS4nIH0KfTsKCi8qIC0tLS0tLS0tLS0gdGV4dGVsZSBwcmFjdGljaWxvcjogUm9tw6JuxIMgKHRleHRlbGUgb3JpZ2luYWxlIGFsZSBEb3JlbGVpKSAtLS0tLS0tLS0tICovCmNvbnN0IFRBSUxfUk9fUDEgPSAnyJhpIHBvYXRlIGPEgyBuaWNpIG51IMiZdGl1IMOubmPEgyBjZSBhbHRlIHNlbWluyJtlIGFtIHBsYW50YXQsIGN1IHNpZ3VyYW7Im8SDIG11bHRlIGFsdGVsZSBkZSBjYXJlIG51IMOubWkgYW1pbnRlc2MgYWN1bS4gT3JpY2UgYciZIGZpIGfDom5kaXQsIHJvc3RpdCBzYXUgZsSDY3V0LCB2cmVhdSBzxIMgZGV6YWN0aXZleiBhY3VtIGFjZXN0ZSBzZW1pbsibZS4nOwpUWC5ybyA9IHsKICB2b3dKb3k6WwogICAgJ0ZhYyBhY2VzdGUgbHVjcnVyaSBwZW50cnUgY8SDIHJlYWxpdGF0ZWEgw65taSBlc3RlIGRpY3RhdMSDIGRlIHNlbWluyJtlbGUgcGUgY2FyZSBsZSBwbGFudGV6LCBjYXJlIHNlIHByb2llY3RlYXrEgyBwZSBhYnNlbsibYSByZWFsaXTEg8ibaWkgY2FyZSB2aW5lIGRpbiBlYSDDrm5zxIPImWkuJywKICAgICdQZW50cnUgY8SDIGFtIHBsYW50YXQgYWNlc3RlIHNlbWluyJtlLCBwZSBjYXJlIGFjdW0gbGUgyJlpIHVkLCB2b2kgYXZlYSBzdWNjZXMuJywKICAgICdQZW50cnUgY8SDIGFtIHN1Y2NlcyBmb2xvc2luZCBhY2VzdCBzaXN0ZW0sIGPDosibaXZhIGRpbnRyZSBwcmlldGVuaWkgbWVpIMiZaSBjdW5vyJl0aW7Im2VsZSBtZWxlIG3EgyB2b3IgY29waWEgyJlpIHZvciBhdmVhIGxhIHLDom5kdWwgbG9yIHN1Y2Nlcy4gUGVudHJ1IGPEgyBlaSB2b3IgYXZlYSBzdWNjZXMgZm9sb3NpbmQgYWNlc3Qgc2lzdGVtLCBwcmlldGVuaWkgyJlpIGN1bm\/ImXRpbsibZWxlIGxvciDDrmkgdm9yIGNvcGlhIGxhIHLDom5kdWwgbG9yLicsCiAgICAnw45uIGFjZXN0IGZlbCwgcHJpbiBleGVtcGx1bCBtZXUsIGRlY2xhbsiZZXogbyByZWFjyJtpZSDDrm4gbGFuyJsgcHJpbiBjYXJlIGluc3BpciBtaWkgyJlpIG1paSBkZSBvYW1lbmkgc8SDIGZvbG9zZWFzY8SDIGFjZXN0IHNpc3RlbSDImWkgc8SDIGFpYsSDIHN1Y2Nlcy4nXSwKICB2b3dKb3lMYXN0OidDZWVhIGNlIHZhIGZhY2UgY2EgbHVtZWEgc8SDIGRldmluxIMgdW4gbG9jIG1haSBidW4gyJlpIG1haSBmcnVtb3MuJywKICBxSm95Onsgb2JpZWN0aXY6J09iaWVjdGl2dWwgcGVudHJ1IGNhcmUgZGVkaWMgYWNlYXN0xIMgbWVkaXRhyJtpZSBhIGJ1Y3VyaWVpJywgc2VtaW50ZTonQ2Ugc2VtaW7Im2UgYW0gcGxhbnRhdCcsCiAgICAgICAgIGFqdXRvcjonUGUgY2luZSDDrm1pIHByb3B1biBzxIMgYWp1dCAxIG9yxIMgcGUgc8SDcHTEg23Dom7Egz8gQ8OibmQgdnJlYXUgc8SDIGZhYyBhc3RhPyBDZSB2b2kgZmFjZSBwZW50cnUgYWNlYXN0xIMgcGVyc29hbsSDPycgfSwKICBwb3dlcnM6eyBwMTpbJ1B1dGVyZWEgMScsJ1JlYW1pbnRpcmVhIHBpeHVsdWknXSwgcDI6WydQdXRlcmVhIDInLCdSZWdyZXR1bCBpbnRlbGlnZW50J10sIHAzOlsnUHV0ZXJlYSAzJywnUmVzdHJpY8ibaWEnXSwgcDQ6WydQdXRlcmVhIDQnLCdBbnRpZG90dWwnXSB9LAogIHZvd1BvdzooKT0+WwogICAgJ0ZhYyBhY2VzdGUgbHVjcnVyaSBwZW50cnUgY8SDIHJlYWxpdGF0ZWEgZXN0ZSBkaWN0YXTEgyBkZSBzZW1pbsibZWxlIHBlIGNhcmUgbGUgcGxhbnRleiDImWkgc2UgcHJvaWVjdGVhesSDIHBlIGFic2VuyJthIHJlYWxpdMSDyJtpaSBjYXJlIHZpbmUgZGluIGVhIMOubnPEg8iZaS4nLAogICAgYERhY8SDIHBsYW50ZXogcG96aXRpdiwgc3VudCAke0coJ2ZvcsibYXTEgycsJ2ZvcsibYXQnKX0gc8SDIHBlcmNlcCBvIHJlYWxpdGF0ZSBwb3ppdGl2xIMsIGNoaWFyIGRhY8SDIGNlaSBkaW4ganVydWwgbWV1IG8gcGVyY2VwIGNhIGZpaW5kIG5lZ2F0aXbEgy4gRGFjxIMgcGxhbnRleiBuZWdhdGl2LCBzdW50ICR7RygnZm9yyJthdMSDJywnZm9yyJthdCcpfSBzxIMgcGVyY2VwIG8gcmVhbGl0YXRlIG5lZmF2b3JhYmlsxIMgbWllLCBjaGlhciBkYWPEgyBjZWkgZGluIGp1cnVsIG1ldSBvIHBlcmNlcCBjYSBmaWluZCBwb3ppdGl2xIMuYCwKICAgICdBc3RmZWwgYWxlZyBzxIMgcGxhbnRleiBzZW1pbsibZSBwb3ppdGl2ZS4nLAogICAgJ1BlbnRydSBjxIMgYW0gc3VjY2VzIGZvbG9zaW5kIGFjZXN0IHNpc3RlbSwgY8OiyJtpdmEgZGludHJlIHByaWV0ZW5paSBtZWkgyJlpIGN1bm\/ImXRpbsibZWxlIG1lbGUgbcSDIHZvciBjb3BpYSDImWkgdm9yIGF2ZWEgbGEgcsOibmR1bCBsb3Igc3VjY2VzLiBQZW50cnUgY8SDIGVpIHZvciBhdmVhIHN1Y2NlcywgcHJpZXRlbmlpIMiZaSBjdW5vyJl0aW7Im2VsZSBsb3Igw65pIHZvciBjb3BpYSDImWkgdm9yIGF2ZWEgc3VjY2VzLiddLAogIHZvd1Bvd0xhc3Q6J0FzdGZlbCwgbHVtZWEgZGV2aW5lIHVuIGxvYyBtYWkgYnVuIMiZaSBtYWkgZnJ1bW9zLicsCiAgcG93SGVhZDonQ0VMRSA0IFBVVEVSSScsIHBvd0hlYWRDYXNlOidDZWxlIDQgcHV0ZXJpJywKICB0aGVtZXM6eyAnQG1vbmV5JzonQmFuaScsICdAcmVsYXRpb25zaGlwcyc6J1JlbGHIm2lpJywgJ0BoZWFsdGgnOidTxINuxIN0YXRlJyB9LAogIGR1cjpbJzUgc2VjdW5kZScsJzEgbWludXQnLCc1IG1pbnV0ZScsJzEwIG1pbnV0ZScsJzEgb3LEgycsJ3RvYXTEgyB6aXVhJ10sCiAgZHVyQXBwZW5kOmQ9PmQ9PT0ndG9hdMSDIHppdWEnPyd0b2F0xIMgeml1YSc6J2NlbCBwdcibaW4gJytkLAogIGR1clN0cmlwOi9ccyooY2VsIHB1yJtpblxzKyk\/KDUgc2VjdW5kZXwxIG1pbnV0fDUgbWludXRlfDEwIG1pbnV0ZXwxIG9yxIN8dG9hdMSDIHppdWEpXHMqJC9pLAogIGxlYWQ6L15zxINccysvaSwKICB6aTp6PT56PT09J21haW5lJz8nbcOiaW5lJzonYXN0xIN6aScsCiAgdGFpbFAxOlRBSUxfUk9fUDEsCiAgdGFpbFAyOidNaS1hbSBmxINjdXQgcsSDdSBtaWUgyJlpIHBlcnNvYW5lbG9yIGRpbiBqdXIuIMOObWkgcGFyZSByxIN1IMiZaSB2cmVhdSBzxIMgZGV6YWN0aXZleiBjw6J0IG1haSByZXBlZGUgYWNlc3RlIHNlbWluyJtlLCBwcmVjdW0gyJlpIHRvYXRlIGxhbsibdXJpbGUgZGUgw65udMOibXBsxINyaSBjZSBkZWN1cmcgZGUgYWljaSwgcGVudHJ1IGPEgyDDrm7Im2VsZWcgYWN1bSBjxIMgc2UgZHVibGVhesSDIGxhIGZpZWNhcmUgMjQgZGUgb3JlIMiZaSBjdSBjw6J0IGxlIGRlemFjdGl2ZXogbWFpIHJlcGVkZSwgY3UgYXTDonQgZXN0ZSBtYWkgYmluZSEnLAogIG5pZ2h0OifImGkgZGlzZWFyxIMsIGRpbiBtb21lbnR1bCDDrm4gY2FyZSBwdW4gY2FwdWwgcGUgcGVybsSDIMiZaSBkb3JtLCBww6JuxIMgZGltaW5lYcibxIMgY8OibmQgbcSDIHRyZXplc2MsIMOubiBtb2QgY29uyJl0aWVudC4nLAogIHN0ZDp7CiAgICBwMjp7IGZvcm06KCk9PltbJ3QnLCdDZSBiZW5lZmljaWkgYW0gYXZ1dCddLFsncDInLCdiZW5lZmljaWkgbWF0ZXJpYWxlIHNhdSBkZSBlZ28nXV0sCiAgICAgICAgIHJlY2FwOmU9PmBEaW4gbml2ZWx1bCBkZSBjb27ImXRpZW7Im8SDIGRpbiBhY2XImXRpIGFuaSDDrm4gY2FyZSBhbSBnw6JuZGl0IC8gcm9zdGl0IC8gZsSDY3V0IGFjZXN0ZSBsdWNydXJpLCBhdMOidCBhbSDImXRpdXQgc8SDIGZhYy4gQ3Ugc2lndXJhbsibxIMgYW0gYXZ1dCBiZW5lZmljaWkgbWF0ZXJpYWxlIHNhdSBkZSBlZ286ICR7bWsoZS5wMil9LiDImGkgcG9hdGUgY8SDIGFtIGF2dXQgyJlpIGFsdGUgYmVuZWZpY2lpIGRlIGNhcmUgYWN1bSBudSDDrm1pIGFtaW50ZXNjLiDDjm1pIGRhdSBzZWFtYSBhY3VtIGPEgyBhbSBwbMSDdGl0IMiZaSBwbMSDdGVzYyB1biBwcmXImyBtdWx0IHByZWEgbWFyZSBwZW50cnUgdG9hdGUgYWNlc3RlIGJlbmVmaWNpaS4gJHt0eCgpLnRhaWxQMn1gIH0sCiAgICBwMzp7IGZvcm06KCk9PltbJ3QnLCdQcm9taXTigKYnXSxbJ3AzJywnY2UgcHJvbWl0IHPEgyBudSBtYWkgZmFjIMiZaSBjw6J0IHRpbXAsIGRlIGV4ZW1wbHU6IHPEgyBudSBtYWkg4oCmIGNlbCBwdcibaW4gMSBtaW51dCddLFsnZHVyJywnYWRkJ11dLAogICAgICAgICByZWNhcDplPT5gUHJvbWl0ICR7bWsoZS5wMyl9LiAke3R4KCkubmlnaHR9YCB9LAogICAgcDQ6eyBmb3JtOigpPT5bWyd6aSddLFsndCcsYCR7cERyYWZ0LnppPT09J21haW5lJz8nTcOiaW5lJzonQXN0xIN6aSd9IHByb21pdCBzxIPigKZgXSxbJ3A0JywnY2UgZmFjLCBjYSBzxINtw6JuyJvEgyBvcHVzxIMgY2VsZWkgcGUgY2FyZSB2cmVhdSBzxIMgbyBkZXphY3RpdmV6J11dLAogICAgICAgICByZWNhcDplPT5gQ2EgyJlpIGdlc3QgY29tcGVuc2F0b3IsIGRlZGljIGZhcHR1bCBjxIMgw65uyJtlbGVnIGFjdW0gY8SDIHJlYWxpdGF0ZWEgcGUgY2FyZSBvIGV4cGVyaW1lbnRleiB2aW5lIGRpbiBzZW1pbsibZWxlIG1lbGUgcGxhbnRhdGUgw65uIHRyZWN1dCwgY2FyZSBzZSBwcm9pZWN0ZWF6xIMgcGUgYWJzZW7Im2EgcmVhbGl0xIPIm2lpIGNhcmUgdmluZSBkaW4gZWEgw65uc8SDyJlpLCDImWkgJHt0eCgpLnppKGUuemkpfSBwcm9taXQgc8SDICR7bWsobm9MZWFkKGUucDQpKX0uYCB9CiAgfSwKICBwdjp7CiAgICAxOnsgbmFtZTooKT0+YENlIHN1bnQgJHtHKCdmb3LIm2F0xIMnLCdmb3LIm2F0Jyl9IHPEgyBleHBlcmltZW50ZXpgLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsYFN1bnQgJHtHKCdmb3LIm2F0xIMnLCdmb3LIm2F0Jyl9IHPEgyBleHBlcmltZW50ZXogw65uIHJlYWxpdGF0ZWEgbWVh4oCmYF0sWydwMWEnLCdjZSBleHBlcmltZW50ZXogYWN1bSddLAogICAgICAgICAgICAgICAgICAgICAgIFsndCcsJ+KApmRhdG9yaXTEgyBnw6JuZHVyaWxvciwgdm9yYmVsb3IsIGZhcHRlbG9yIGRpbiB0cmVjdXR1bCBtZXUsIGRpbiBhY2Vhc3TEgyB2aWHIm8SDIHNhdSBkaW50ci1vIHZpYcibxIMgYW50ZXJpb2FyxIMsIGF0dW5jaSBjw6JuZOKApiddLFsncDFiJywnY2Ugc2VtaW7Im2UgYW0gcGxhbnRhdCddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBTdW50ICR7RygnZm9yyJthdMSDJywnZm9yyJthdCcpfSBzxIMgZXhwZXJpbWVudGV6IMOubiByZWFsaXRhdGVhIG1lYSAke21rKGUucDFhKX0gZGF0b3JpdMSDIGfDom5kdXJpbG9yLCB2b3JiZWxvciwgZmFwdGVsb3IgZGluIHRyZWN1dHVsIG1ldSwgZGluIGFjZWFzdMSDIHZpYcibxIMgc2F1IGRpbnRyLW8gdmlhyJvEgyBhbnRlcmlvYXLEgywgYXR1bmNpIGPDom5kICR7bWsoZS5wMWIpfS4gJHt0eCgpLnRhaWxQMX1gIH0gfSwKICAgIDI6eyBuYW1lOigpPT4nQ2Ugc2VtaW7Im2UgdnJlYXUgc8SDIGN1csSDyJsnLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsJ1ZyZWF1IHPEgyBkZXphY3RpdmV6IHNlbWluyJtlbGUgcGxhbnRhdGUgYXR1bmNpIGPDom5k4oCmJ10sWydwMWInLCdjZSBhbSBnw6JuZGl0LCByb3N0aXQgc2F1IGbEg2N1dCddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBWcmVhdSBzxIMgZGV6YWN0aXZleiBzZW1pbsibZWxlIHBsYW50YXRlIGF0dW5jaSBjw6JuZCAke21rKGUucDFiKX0sIHBlbnRydSBjxIMgZWxlIHNlIGR1YmxlYXrEgyBsYSBmaWVjYXJlIDI0IGRlIG9yZSDImWkgbnUgbWFpIHZyZWF1IHPEgyBjcmVhc2PEgyBhY2VzdGUgc2VtaW7Im2UuIE1haSBtdWx0LCBwb2F0ZSBjxIMgYW0gcGxhbnRhdCDImWkgYWx0ZSBzZW1pbsibZSBkZSBjYXJlIG51IMOubWkgYW1pbnRlc2MgYWN1bS4gT3JpY2UgYciZIGZpIGfDom5kaXQsIHJvc3RpdCBzYXUgZsSDY3V0LCB2cmVhdSBzxIMgZGV6YWN0aXZleiBhY3VtIGFjZXN0ZSBzZW1pbsibZS5gIH0gfSwKICAgIDM6eyBuYW1lOigpPT4nQ3VyxIPImyBvIGVtb8ibaWUnLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsJ1ZyZWF1IHPEgyBjdXLEg8ibIHNlbWluyJtlbGUgZGXigKYnXSxbJ3AxZScsJ2Vtb8ibaWEgc2F1IHRpcGFydWw6IGZ1cmllLCBpbnZpZGllLCBmcmljxIPigKYnXSwKICAgICAgICAgICAgICAgICAgICAgICBbJ3QnLCfigKZwbGFudGF0ZSBjdSBnw6JuZHVyaSwgdm9yYmUsIGZhcHRlIMOubiB0cmVjdXR1bCBtZXUsIGRpbiBhY2Vhc3TEgyB2aWHIm8SDIHNhdSBkaW50ci1vIHZpYcibxIMgYW50ZXJpb2FyxIMsIGNhcmUgbcSDIGZvcsibZWF6xIMgc8SDIGV4cGVyaW1lbnRleuKApiddLFsncDFhJywnc2l0dWHIm2lhIHBlIGNhcmUgbyB0csSDaWVzYyddLAogICAgICAgICAgICAgICAgICAgICAgIFsndCcsJ0F0dW5jaSBjw6JuZOKApiddLFsncDFiJywnY2UgY3JlZCBjxIMgYW0gcGxhbnRhdCddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBWcmVhdSBzxIMgY3VyxIPImyBzZW1pbsibZWxlIGRlICR7bWsoZS5wMWUpfSBwbGFudGF0ZSBjdSBnw6JuZHVyaSwgdm9yYmUsIGZhcHRlIMOubiB0cmVjdXR1bCBtZXUsIGRpbiBhY2Vhc3TEgyB2aWHIm8SDIHNhdSBkaW50ci1vIHZpYcibxIMgYW50ZXJpb2FyxIMsIGNhcmUgbcSDIGZvcsibZWF6xIMgc8SDIGV4cGVyaW1lbnRleiAke21rKGUucDFhKX0uIEF0dW5jaSBjw6JuZCAke21rKGUucDFiKX0uICR7dHgoKS50YWlsUDF9YCB9IH0sCiAgICA0OnsgbmFtZTooKT0+J051IMiZdGl1IGNlIHNlbWluyJtlIGFtIHBsYW50YXQnLAogICAgICAgIHAxOnsgZm9ybTooKT0+W1sndCcsJ0hhYmFyIG51IGFtIGNlIGFtIHB1dHV0IHPEgyBwbGFudGV6IGNhIHPEgyBleHBlcmltZW50ZXogYWNlYXN0xIMgc2l0dWHIm2llOiddLFsncDFhJywnc2l0dWHIm2lhIHBlIGNhcmUgbyB0csSDaWVzYyddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBIYWJhciBudSBhbSBjZSBhbSBwdXR1dCBzxIMgcGxhbnRleiBjYSBzxIMgZXhwZXJpbWVudGV6IGFjZWFzdMSDIHNpdHVhyJtpZTogJHttayhlLnAxYSl9LiBEYXIgw65uyJtlbGVnIGFjdW0gY8SDLCBkYWPEgyBudSBhyJkgZmkgcGxhbnRhdCBzZW1pbsibZWxlLCBhY2Vhc3TEgyBzaXR1YcibaWUgbnUgYXIgZmkgw65uIHJlYWxpdGF0ZWEgbWVhLiBWcmVhdSBzxIMgZGV6YWN0aXZleiBzZW1pbsibZWxlIHBsYW50YXRlIGFjdW0uYCB9LAogICAgICAgIHAyOnsgZm9ybTooKT0+W1sndCcsJ0RhY8SDIMOubWkgdmluIMOubiBtaW50ZSBjw6J0ZXZhIGJlbmVmaWNpaSAob3DIm2lvbmFsKSddLFsncDInLCdwb8ibaSBsxINzYSBnb2wnXV0sCiAgICAgICAgICAgICByZWNhcDplPT5gQ3Ugc2lndXJhbsibxIMgYW0gYXZ1dCBiZW5lZmljaWksIGNoaWFyIGRhY8SDIG51IMiZdGl1IGNlIHNlbWluyJtlIGFtIHBsYW50YXQgyJlpIGNlIGJlbmVmaWNpaSBhbSBhdnV0LiAke1N0cmluZyhlLnAyfHwnJykudHJpbSgpID8gYFBvYXRlIGPEgyAke21rKGUucDIpfSwgyJlpIHNpZ3VyIHN1bnQgyJlpIGFsdGUgYmVuZWZpY2lpIHBlIGNhcmUgYW0gcHV0dXQgc8SDIGxlIGFtLmAgOiAnU2lndXIgc3VudCBiZW5lZmljaWkgcGUgY2FyZSBhbSBwdXR1dCBzxIMgbGUgYW0uJ30gJHt0eCgpLnRhaWxQMn1gIH0sCiAgICAgICAgcDM6eyBmb3JtOigpPT5bWyd0JywnUHJvbWl0IHPEgyBudSBtYWkgcGxhbnRleiBhY2VsZWHImWkgc2VtaW7Im2UgcGVudHJ1IGNlbCBwdcibaW7igKYnXSxbJ3AzJywnY8OidCB0aW1wLCBkZSBleGVtcGx1OiAxIG9yxIMnXSxbJ2R1cicsJ3NldCddXSwKICAgICAgICAgICAgIHJlY2FwOmU9PmBQcm9taXQgc8SDIG51IG1haSBwbGFudGV6IHBlbnRydSBjZWwgcHXIm2luICR7bWsoZS5wMyl9IGFjZWxlYciZaSBzZW1pbsibZS4gJHt0eCgpLm5pZ2h0fWAgfSwKICAgICAgICBwNDp7IGZvcm06KCk9PltbJ3ppJ10sWyd0JyxgQ2EgyJlpIGdlc3QgY29tcGVuc2F0b3IsICR7cERyYWZ0LnppPT09J21haW5lJz8nbcOiaW5lJzonYXN0xIN6aSd9IHByb21pdCBzxIPigKZgXSxbJ3A0JywnY2UgZmFjJ11dLAogICAgICAgICAgICAgcmVjYXA6ZT0+YENhIMiZaSBnZXN0IGNvbXBlbnNhdG9yLCAke3R4KCkuemkoZS56aSl9IHByb21pdCBzxIMgJHttayhub0xlYWQoZS5wNCkpfS5gIH0gfQogIH0KfTsKCi8qIC0tLS0tLS0tLS0gZXhhbXBsZSBwb3N0cyBmb3IgdGhlIHRlc3QgdmVyc2lvbiwgb25lIHNldCBwZXIgbGFuZ3VhZ2UgLS0tLS0tLS0tLSAqLwpjb25zdCBERU1PX0wgPSB7CiAgZW46WwogICAge2lkOidkMScsbmFtZTonTGluZGVuIEJsb3Nzb20nLGdlbjonZicsdHlwZToncmVjdW5vc3RpbnRlJyxkYXRlOicyMDI2LTEwLTA3VDE5OjQwOjAwWicscmVhY3RzOjE0LGl0ZW1zOlt7azonc3VjY2VzJyx0OidmaW5pc2hpbmcgdGhlIHByb2plY3QgSSB3b3JrZWQgb24gZm9yIGEgbW9udGgsIGJlZm9yZSB0aGUgZGVhZGxpbmUnfSx7azoncmVjdW5vc3RpbnRhJyx0Oid0aGUgcGF0aWVuY2Ugb2YgbXkgY29sbGVhZ3VlIHdobyBoZWxwZWQgbWUnfV19LAogICAge2lkOidkMicsbmFtZTonQW5kcmV3X00nLGdlbjonbScsdHlwZTonYnVjdXJpZScsZGF0ZTonMjAyNi0xMC0wN1QwNzoxNTowMFonLHJlYWN0czo5LHE6e29iaWVjdGl2OidBIGhhcm1vbmlvdXMgcmVsYXRpb25zaGlwIHdpdGggbXkgc29uJyxzZW1pbnRlOidJIGxpc3RlbmVkIHRvIGhpbSB3aXRob3V0IGludGVycnVwdGluZyBhbmQgc3BlbnQgYW4gaG91ciBqdXN0IHdpdGggaGltLCB3aXRob3V0IG15IHBob25lLid9fSwKICAgIHtpZDonZDMnLG5hbWU6J0xpZ2h0JyxnZW46J2YnLHR5cGU6J3B1dGVyaScsZGF0ZTonMjAyNi0xMC0wNlQyMTowNTowMFonLHJlYWN0czo2LHY6Mix6aTonbWFpbmUnLHRlbWE6J0Btb25leScscDFiOidJIHNwb2tlIHdpdGggZW52eSBhYm91dCBhIGZyaWVuZOKAmXMgc3VjY2VzcycscDI6J0kgZmVsdCBiZXR0ZXIgdGhhbiBoZXIgZm9yIGEgZmV3IG1pbnV0ZXMnLHAzOidub3QgdG8gdGFsayBhYm91dCBvdGhlcnMgYmVoaW5kIHRoZWlyIGJhY2tzIGZvciBhdCBsZWFzdCAxIGhvdXInLHA0OidzaW5jZXJlbHkgY29uZ3JhdHVsYXRlIG15IGZyaWVuZCd9LAogICAge2lkOidkNCcsbmFtZTonTWFyeSBmcm9tIHRoZSBoaWxscycsZ2VuOidmJyx0eXBlOidyZWN1bm9zdGludGUnLGRhdGU6JzIwMjYtMTAtMDZUMDg6MzA6MDBaJyxyZWFjdHM6MjEsaXRlbXM6W3trOidyZWN1bm9zdGludGEnLHQ6J215IHF1aWV0IG1vcm5pbmcgY29mZmVlJ30se2s6J3JlY3Vub3N0aW50YScsdDonbXkgbW90aGVyLCB3aG8gY2FsbGVkIGp1c3QgdG8gYXNrIGhvdyBJIHdhcyd9LHtrOidzdWNjZXMnLHQ6J21lZGl0YXRpbmcgMTAgZGF5cyBpbiBhIHJvdyd9XX0sCiAgICB7aWQ6J2Q1JyxuYW1lOidTZXJlbmUnLGdlbjonbScsdHlwZToncHV0ZXJpJyxkYXRlOicyMDI2LTEwLTA1VDE4OjIwOjAwWicscmVhY3RzOjQsdjo0LHppOidhemknLHRlbWE6J0BoZWFsdGgnLHAxYTonYmFjayBwYWluIHRoYXQga2VlcHMgY29taW5nIGJhY2snLHAyOicnLHAzOicxIGhvdXInLHA0OidoZWxwIGFuIGVsZGVybHkgbmVpZ2hib3VyIGNhcnJ5IGhpcyBzaG9wcGluZyd9XSwKICBmcjpbCiAgICB7aWQ6J2QxJyxuYW1lOidGbGV1ciBkZSB0aWxsZXVsJyxnZW46J2YnLHR5cGU6J3JlY3Vub3N0aW50ZScsZGF0ZTonMjAyNi0xMC0wN1QxOTo0MDowMFonLHJlYWN0czoxNCxpdGVtczpbe2s6J3N1Y2NlcycsdDonYXZvaXIgdGVybWluw6kgYXZhbnQgbOKAmcOpY2jDqWFuY2UgbGUgcHJvamV0IHN1ciBsZXF1ZWwgauKAmWFpIHRyYXZhaWxsw6kgdW4gbW9pcyd9LHtrOidyZWN1bm9zdGludGEnLHQ6J2xhIHBhdGllbmNlIGRlIG1hIGNvbGzDqGd1ZSBxdWkgbeKAmWEgYWlkw6llJ31dfSwKICAgIHtpZDonZDInLG5hbWU6J0FuZHLDqV9NJyxnZW46J20nLHR5cGU6J2J1Y3VyaWUnLGRhdGU6JzIwMjYtMTAtMDdUMDc6MTU6MDBaJyxyZWFjdHM6OSxxOntvYmllY3RpdjonVW5lIHJlbGF0aW9uIGhhcm1vbmlldXNlIGF2ZWMgbW9uIGZpbHMnLHNlbWludGU6J0plIGzigJlhaSDDqWNvdXTDqSBzYW5zIGzigJlpbnRlcnJvbXByZSBldCBq4oCZYWkgcGFzc8OpIHVuZSBoZXVyZSBzZXVsZW1lbnQgYXZlYyBsdWksIHNhbnMgdMOpbMOpcGhvbmUuJ319LAogICAge2lkOidkMycsbmFtZTonTHVtacOocmUnLGdlbjonZicsdHlwZToncHV0ZXJpJyxkYXRlOicyMDI2LTEwLTA2VDIxOjA1OjAwWicscmVhY3RzOjYsdjoyLHppOidtYWluZScsdGVtYTonQG1vbmV5JyxwMWI6J2rigJlhaSBwYXJsw6kgYXZlYyBlbnZpZSBkdSBzdWNjw6hzIGTigJl1bmUgYW1pZScscDI6J2plIG1lIHN1aXMgc2VudGllIHN1cMOpcmlldXJlIMOgIGVsbGUgcGVuZGFudCBxdWVscXVlcyBtaW51dGVzJyxwMzonZGUgbmUgcGx1cyBwYXJsZXIgZGVzIGF1dHJlcyBkYW5zIGxldXIgZG9zIHBlbmRhbnQgYXUgbW9pbnMgMSBoZXVyZScscDQ6J2bDqWxpY2l0ZXIgc2luY8OocmVtZW50IG1vbiBhbWllJ30sCiAgICB7aWQ6J2Q0JyxuYW1lOidNYXJpZSBkZSBMeW9uJyxnZW46J2YnLHR5cGU6J3JlY3Vub3N0aW50ZScsZGF0ZTonMjAyNi0xMC0wNlQwODozMDowMFonLHJlYWN0czoyMSxpdGVtczpbe2s6J3JlY3Vub3N0aW50YScsdDonbW9uIGNhZsOpIGR1IG1hdGluIGF1IGNhbG1lJ30se2s6J3JlY3Vub3N0aW50YScsdDonbWEgbcOocmUsIHF1aSBt4oCZYSBhcHBlbMOpZSBqdXN0ZSBwb3VyIHNhdm9pciBjb21tZW50IGrigJlhbGxhaXMnfSx7azonc3VjY2VzJyx0Oidhdm9pciBtw6lkaXTDqSAxMCBqb3VycyBkZSBzdWl0ZSd9XX0sCiAgICB7aWQ6J2Q1JyxuYW1lOidTZXJlaW4nLGdlbjonbScsdHlwZToncHV0ZXJpJyxkYXRlOicyMDI2LTEwLTA1VDE4OjIwOjAwWicscmVhY3RzOjQsdjo0LHppOidhemknLHRlbWE6J0BoZWFsdGgnLHAxYTondW4gbWFsIGRlIGRvcyBxdWkgcmV2aWVudCcscDI6JycscDM6JzEgaGV1cmUnLHA0OidhaWRlciB1biB2b2lzaW4gw6Jnw6kgw6AgcG9ydGVyIHNlcyBjb3Vyc2VzJ31dLAogIGl0OlsKICAgIHtpZDonZDEnLG5hbWU6J0Zpb3JlIGRpIHRpZ2xpbycsZ2VuOidmJyx0eXBlOidyZWN1bm9zdGludGUnLGRhdGU6JzIwMjYtMTAtMDdUMTk6NDA6MDBaJyxyZWFjdHM6MTQsaXRlbXM6W3trOidzdWNjZXMnLHQ6J2F2ZXIgZmluaXRvIHByaW1hIGRlbGxhIHNjYWRlbnphIGlsIHByb2dldHRvIHN1IGN1aSBobyBsYXZvcmF0byB1biBtZXNlJ30se2s6J3JlY3Vub3N0aW50YScsdDonbGEgcGF6aWVuemEgZGVsbGEgY29sbGVnYSBjaGUgbWkgaGEgYWl1dGF0YSd9XX0sCiAgICB7aWQ6J2QyJyxuYW1lOidBbmRyZWFfTScsZ2VuOidtJyx0eXBlOididWN1cmllJyxkYXRlOicyMDI2LTEwLTA3VDA3OjE1OjAwWicscmVhY3RzOjkscTp7b2JpZWN0aXY6J1VuYSByZWxhemlvbmUgYXJtb25pb3NhIGNvbiBtaW8gZmlnbGlvJyxzZW1pbnRlOidM4oCZaG8gYXNjb2x0YXRvIHNlbnphIGludGVycm9tcGVybG8gZSBobyBwYXNzYXRvIHVu4oCZb3JhIHNvbG8gY29uIGx1aSwgc2VuemEgdGVsZWZvbm8uJ319LAogICAge2lkOidkMycsbmFtZTonTHVjZScsZ2VuOidmJyx0eXBlOidwdXRlcmknLGRhdGU6JzIwMjYtMTAtMDZUMjE6MDU6MDBaJyxyZWFjdHM6Nix2OjIsemk6J21haW5lJyx0ZW1hOidAbW9uZXknLHAxYjonaG8gcGFybGF0byBjb24gaW52aWRpYSBkZWwgc3VjY2Vzc28gZGkgdW7igJlhbWljYScscDI6J21pIHNvbm8gc2VudGl0YSBzdXBlcmlvcmUgYSBsZWkgcGVyIHF1YWxjaGUgbWludXRvJyxwMzonZGkgbm9uIHBhcmxhcmUgcGnDuSBkZWdsaSBhbHRyaSBhbGxlIGxvcm8gc3BhbGxlIHBlciBhbG1lbm8gMSBvcmEnLHA0OidmYXJlIHNpbmNlcmFtZW50ZSBpIGNvbXBsaW1lbnRpIGFsbGEgbWlhIGFtaWNhJ30sCiAgICB7aWQ6J2Q0JyxuYW1lOidNYXJpYSBkYSBVZGluZScsZ2VuOidmJyx0eXBlOidyZWN1bm9zdGludGUnLGRhdGU6JzIwMjYtMTAtMDZUMDg6MzA6MDBaJyxyZWFjdHM6MjEsaXRlbXM6W3trOidyZWN1bm9zdGludGEnLHQ6J2lsIGNhZmbDqCBkZWwgbWF0dGlubyBpbiBzaWxlbnppbyd9LHtrOidyZWN1bm9zdGludGEnLHQ6J21pYSBtYWRyZSwgY2hlIG1pIGhhIGNoaWFtYXRhIHNvbG8gcGVyIGNoaWVkZXJtaSBjb21lIHN0YXZvJ30se2s6J3N1Y2NlcycsdDonYXZlciBtZWRpdGF0byAxMCBnaW9ybmkgZGkgZmlsYSd9XX0sCiAgICB7aWQ6J2Q1JyxuYW1lOidTZXJlbm8nLGdlbjonbScsdHlwZToncHV0ZXJpJyxkYXRlOicyMDI2LTEwLTA1VDE4OjIwOjAwWicscmVhY3RzOjQsdjo0LHppOidhemknLHRlbWE6J0BoZWFsdGgnLHAxYTondW4gbWFsIGRpIHNjaGllbmEgY2hlIHJpdG9ybmEnLHAyOicnLHAzOicxIG9yYScscDQ6J2FpdXRhcmUgdW4gdmljaW5vIGFuemlhbm8gYSBwb3J0YXJlIGxhIHNwZXNhJ31dCn07CgpERU1PX0wucm8gPSBbCiB7aWQ6J2QxJyxuYW1lOidGbG9hcmUgZGUgdGVpJyxnZW46J2YnLHR5cGU6J3JlY3Vub3N0aW50ZScsZGF0ZTonMjAyNi0xMC0wN1QxOTo0MDowMFonLHJlYWN0czoxNCxpdGVtczpbe2s6J3N1Y2NlcycsdDonYW0gdGVybWluYXQgcHJvaWVjdHVsIGxhIGNhcmUgYW0gbHVjcmF0IG8gbHVuxIMsIMOubmFpbnRlIGRlIHRlcm1lbid9LHtrOidyZWN1bm9zdGludGEnLHQ6J3LEg2JkYXJlYSBjb2xlZ2VpIG1lbGUgY2FyZSBtLWEgYWp1dGF0J31dfSwKIHtpZDonZDInLG5hbWU6J0FuZHJlaV9NJyxnZW46J20nLHR5cGU6J2J1Y3VyaWUnLGRhdGU6JzIwMjYtMTAtMDdUMDc6MTU6MDBaJyxyZWFjdHM6OSxxOntvYmllY3RpdjonTyByZWxhyJtpZSBhcm1vbmlvYXPEgyBjdSBmaXVsIG1ldScsc2VtaW50ZTonTC1hbSBhc2N1bHRhdCBmxINyxIMgc8SDLWwgw65udHJlcnVwIMiZaSBhbSBwZXRyZWN1dCBvIG9yxIMgZG9hciBjdSBlbCwgZsSDcsSDIHRlbGVmb24uJ319LAoge2lkOidkMycsbmFtZTonTHVtaW5hJyxnZW46J2YnLHR5cGU6J3B1dGVyaScsZGF0ZTonMjAyNi0xMC0wNlQyMTowNTowMFonLHJlYWN0czo2LHY6Mix6aTonbWFpbmUnLHRlbWE6J0Btb25leScscDFiOidhbSB2b3JiaXQgY3UgaW52aWRpZSBkZXNwcmUgc3VjY2VzdWwgdW5laSBwcmlldGVuZScscDI6J20tYW0gc2ltyJtpdCBtYWkgYnVuxIMgZGVjw6J0IGVhIHBlbnRydSBjw6J0ZXZhIG1pbnV0ZScscDM6J3PEgyBudSBtYWkgdm9yYmVzYyBkZXNwcmUgYWzIm2lpIHBlIGxhIHNwYXRlIGNlbCBwdcibaW4gMSBvcsSDJyxwNDonbyBmZWxpY2l0IHNpbmNlciBwZSBwcmlldGVuYSBtZWEnfSwKIHtpZDonZDQnLG5hbWU6J01hcmlhIGRpbiBDbHVqJyxnZW46J2YnLHR5cGU6J3JlY3Vub3N0aW50ZScsZGF0ZTonMjAyNi0xMC0wNlQwODozMDowMFonLHJlYWN0czoyMSxpdGVtczpbe2s6J3JlY3Vub3N0aW50YScsdDonY2FmZWF1YSBkZSBkaW1pbmVhyJvEgyDDrm4gbGluaciZdGUnfSx7azoncmVjdW5vc3RpbnRhJyx0OidtYW1hLCBjYXJlIG0tYSBzdW5hdCBkb2FyIGNhIHPEgyBtxIMgw65udHJlYmUgY2UgZmFjJ30se2s6J3N1Y2NlcycsdDonYW0gbWVkaXRhdCAxMCB6aWxlIGxhIHLDom5kJ31dfSwKIHtpZDonZDUnLG5hbWU6J1NlbmluJyxnZW46J20nLHR5cGU6J3B1dGVyaScsZGF0ZTonMjAyNi0xMC0wNVQxODoyMDowMFonLHJlYWN0czo0LHY6NCx6aTonYXppJyx0ZW1hOidAaGVhbHRoJyxwMWE6J2R1cmVyaSBkZSBzcGF0ZSBjYXJlIHJldmluJyxwMjonJyxwMzonMSBvcsSDJyxwNDonYWp1dCB1biB2ZWNpbiDDrm4gdsOicnN0xIMgc8SDLciZaSBjYXJlIGN1bXDEg3LEg3R1cmlsZSd9XTsKLyogZWFjaCBleGFtcGxlIHBvc3Qga25vd3MgaXRzIGxhbmd1YWdlIChpZHMgbWFkZSB1bmlxdWUgYWNyb3NzIGxhbmd1YWdlcykgKi8KT2JqZWN0LmtleXMoREVNT19MKS5mb3JFYWNoKGw9PkRFTU9fTFtsXS5mb3JFYWNoKHA9PnsgcC5sYW5nPWw7IHAuaWQ9bCsnLScrcC5pZCB9KSk7Ci8qIGZpbHRlciB0ZXh0cyBmb3IgdGhlIGNvbW11bml0eTogb25seSBteSBsYW5ndWFnZSAvIGFsbCBsYW5ndWFnZXMgKi8KT2JqZWN0LmFzc2lnbihVSS5lbix7IGxhbmdPbmx5OidPbmx5IGluIEVuZ2xpc2gnLCBsYW5nQWxsOidBbGwgbGFuZ3VhZ2VzJywgY29tbUVtcHR5TGFuZzonTm90aGluZyBpbiBFbmdsaXNoIHlldC4nIH0pOwpPYmplY3QuYXNzaWduKFVJLmZyLHsgbGFuZ09ubHk6J1NldWxlbWVudCBlbiBmcmFuw6dhaXMnLCBsYW5nQWxsOidUb3V0ZXMgbGVzIGxhbmd1ZXMnLCBjb21tRW1wdHlMYW5nOidSaWVuIGVuIGZyYW7Dp2FpcyBwb3VyIGzigJlpbnN0YW50LicgfSk7Ck9iamVjdC5hc3NpZ24oVUkuaXQseyBsYW5nT25seTonU29sbyBpbiBpdGFsaWFubycsIGxhbmdBbGw6J1R1dHRlIGxlIGxpbmd1ZScsIGNvbW1FbXB0eUxhbmc6J0FuY29yYSBuaWVudGUgaW4gaXRhbGlhbm8uJyB9KTsKT2JqZWN0LmFzc2lnbihVSS5ybyx7IGxhbmdPbmx5OidEb2FyIMOubiByb23Dom7EgycsIGxhbmdBbGw6J1RvYXRlIGxpbWJpbGUnLCBjb21tRW1wdHlMYW5nOifDjm5jxIMgbnUgZSBuaW1pYyDDrm4gcm9tw6JuxIMuJyB9KTsKCi8qID09PT09PT09PT09PSBTYXZpbmc6IHRvIHRoZSBhY2NvdW50IG9uIHRoZSBzaXRlLCBvciBvbiB0aGlzIGRldmljZSBpbiB0aGUgdGVzdCB2ZXJzaW9uID09PT09PT09PT09PSAqLwpjb25zdCBMU19LRVkgPSAnZ29vZC1zZWVkcy12MSc7CmNvbnN0IFN0b3JlID0gewogIGFzeW5jIGxvYWQoKXsKICAgIGlmIChDT05GSUcuYXBpKXsKICAgICAgY29uc3QgciA9IGF3YWl0IGZldGNoKENPTkZJRy5hcGkucm9vdCArICdncmFkaW5hL3YxL2RhdGEnLCB7Y3JlZGVudGlhbHM6J3NhbWUtb3JpZ2luJywgaGVhZGVyczp7J1gtV1AtTm9uY2UnOkNPTkZJRy5hcGkubm9uY2V9fSk7CiAgICAgIGlmICghci5vaykgdGhyb3cgbmV3IEVycm9yKCdsb2FkJyk7IGNvbnN0IGQgPSBhd2FpdCByLmpzb24oKTsKICAgICAgaWYgKGQpIHJldHVybiBkOwogICAgICB0cnkgeyBjb25zdCBsb2MgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKExTX0tFWSkpOyBpZiAobG9jKXsgc2V0VGltZW91dCgoKT0+U3RvcmUuc2F2ZShsb2MpLDApOyByZXR1cm4gbG9jIH0gfSBjYXRjaChlKXt9CiAgICAgIHJldHVybiBudWxsOwogICAgfQogICAgdHJ5IHsgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTFNfS0VZKSkgfHwgbnVsbCB9IGNhdGNoKGUpeyByZXR1cm4gbnVsbCB9CiAgfSwKICBhc3luYyBzYXZlKGRhdGEpewogICAgaWYgKENPTkZJRy5hcGkpewogICAgICBjb25zdCByID0gYXdhaXQgZmV0Y2goQ09ORklHLmFwaS5yb290ICsgJ2dyYWRpbmEvdjEvZGF0YScsIHttZXRob2Q6J1BPU1QnLCBjcmVkZW50aWFsczonc2FtZS1vcmlnaW4nLAogICAgICAgIGhlYWRlcnM6eydDb250ZW50LVR5cGUnOidhcHBsaWNhdGlvbi9qc29uJywnWC1XUC1Ob25jZSc6Q09ORklHLmFwaS5ub25jZX0sIGJvZHk6SlNPTi5zdHJpbmdpZnkoZGF0YSl9KTsKICAgICAgaWYgKCFyLm9rKSB0aHJvdyBuZXcgRXJyb3IoJ3NhdmUnKTsgcmV0dXJuOwogICAgfQogICAgdHJ5IHsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTFNfS0VZLCBKU09OLnN0cmluZ2lmeShkYXRhKSkgfSBjYXRjaChlKXt9CiAgfQp9OwpsZXQgREFUQSA9IHsgZW50cmllczpbXSwgdG9kb3M6W10sIGNvbW06eyBuYW1lOm51bGwsIHBvc3RzOltdLCByZWFjdGVkOnt9LCBoaWRkZW46e30gfSwgc2V0dGluZ3M6eyBraW5kOidtZWRpdGF0aWUnLCBwcmVwOjEwLCBkdXI6MTAsIHNvdW5kOidjbG9wb3RlbCcsIGdlbjpudWxsLCBsYW5nOm51bGwgfSB9OwpmdW5jdGlvbiBndWVzc0xhbmcoKXsgY29uc3Qgbj0obmF2aWdhdG9yLmxhbmd1YWdlfHwnZW4nKS5zbGljZSgwLDIpLnRvTG93ZXJDYXNlKCk7IHJldHVybiBSRUFEWS5pbmNsdWRlcyhuKT9uOidlbicgfQpjb25zdCBsYW5nID0gKCkgPT4gUkVBRFkuaW5jbHVkZXMoREFUQS5zZXR0aW5ncy5sYW5nKSA\/IERBVEEuc2V0dGluZ3MubGFuZyA6IGd1ZXNzTGFuZygpOwpjb25zdCB0ID0gayA9PiB7IGNvbnN0IGc9R1VJW2xhbmcoKV0mJkdVSVtsYW5nKCldW2tdOyBpZihnKSByZXR1cm4gZygpOyByZXR1cm4gKFVJW2xhbmcoKV0mJlVJW2xhbmcoKV1ba10hPT11bmRlZmluZWQpID8gVUlbbGFuZygpXVtrXSA6IFVJLmVuW2tdIH07CmNvbnN0IHR4ID0gKCkgPT4gVFhbbGFuZygpXSB8fCBUWC5lbjsKY29uc3QgbG9jID0gKCkgPT4gTE9DQUxFW2xhbmcoKV0gfHwgJ2VuLUdCJzsKY29uc3QgRyA9IChmLG0pID0+IERBVEEuc2V0dGluZ3MuZ2VuPT09J20nP206ZjsgICAvLyB1c2VkIGJ5IEZSL0lUIHRleHRzCmFzeW5jIGZ1bmN0aW9uIHBlcnNpc3QoKXsgdHJ5eyBhd2FpdCBTdG9yZS5zYXZlKERBVEEpIH0gY2F0Y2goZSl7IHRvYXN0KHQoJ3NhdmVGYWlsJykpIH0gfQoKLyogPT09PT09PT09PT09IEhlbHBlcnMgPT09PT09PT09PT09ICovCmNvbnN0ICQgPSAocyxlbD1kb2N1bWVudCk9PmVsLnF1ZXJ5U2VsZWN0b3Iocyk7CmNvbnN0IGVzYyA9IHMgPT4gU3RyaW5nKHM\/PycnKS5yZXBsYWNlKC9bJjw+IiddL2csYz0+KHsnJic6JyZhbXA7JywnPCc6JyZsdDsnLCc+JzonJmd0OycsJyInOicmcXVvdDsnLCInIjonJiMzOTsnfVtjXSkpOwpjb25zdCBkYXlLZXkgPSBkID0+IHsgY29uc3QgeD1uZXcgRGF0ZShkKTsgcmV0dXJuIHguZ2V0RnVsbFllYXIoKSsnLScrU3RyaW5nKHguZ2V0TW9udGgoKSsxKS5wYWRTdGFydCgyLCcwJykrJy0nK1N0cmluZyh4LmdldERhdGUoKSkucGFkU3RhcnQoMiwnMCcpIH07CmNvbnN0IHRvZGF5S2V5ID0gKCkgPT4gZGF5S2V5KG5ldyBEYXRlKCkpOwpjb25zdCBmbXREYXkgPSBrID0+IHsgY29uc3QgW3ksbSxkXT1rLnNwbGl0KCctJykubWFwKE51bWJlcik7IGNvbnN0IGR0PW5ldyBEYXRlKHksbS0xLGQpOwogIGlmIChrPT09dG9kYXlLZXkoKSkgcmV0dXJuIHQoJ3RvZGF5Jyk7IGNvbnN0IGllPW5ldyBEYXRlKCk7IGllLnNldERhdGUoaWUuZ2V0RGF0ZSgpLTEpOyBpZiAoaz09PWRheUtleShpZSkpIHJldHVybiB0KCd5ZXN0ZXJkYXknKTsKICByZXR1cm4gZHQudG9Mb2NhbGVEYXRlU3RyaW5nKGxvYygpLHt3ZWVrZGF5Oidsb25nJyxkYXk6J251bWVyaWMnLG1vbnRoOidsb25nJ30pIH07CmNvbnN0IG1tc3MgPSBzID0+IHsgcz1NYXRoLm1heCgwLE1hdGguY2VpbChzKSk7IGNvbnN0IG09TWF0aC5mbG9vcihzLzYwKSwgcj1zJTYwOyByZXR1cm4gU3RyaW5nKG0pLnBhZFN0YXJ0KDIsJzAnKSsnOicrU3RyaW5nKHIpLnBhZFN0YXJ0KDIsJzAnKSB9Owpjb25zdCBLSU5EID0gbmV3IFByb3h5KHt9LCB7IGdldDoobyxrKT0+dCgna2luZCcpW2tdIH0pOwpjb25zdCB0ZW1hTGFiZWwgPSB4ID0+IHggJiYgeFswXT09PSdAJyA\/ICh0eCgpLnRoZW1lc1t4XSB8fCBUWC5lbi50aGVtZXNbeF0gfHwgeC5zbGljZSgxKSkgOiB4OwpmdW5jdGlvbiBoZXgoa2luZCwgc2l6ZT00MCl7CiAgY29uc3QgaW5uZXIgPSB7CiAgICBtZWRpdGF0aWU6JzxwYXRoIGQ9Ik0yMCAxMWMzLjUgNCA1LjUgNy41IDUuNSAxMWE1LjUgNS41IDAgMCAxLTExIDBjMC0zLjUgMi03IDUuNS0xMVoiLz48cGF0aCBkPSJNMjAgMTguNWMxLjYgMiAyLjQgMy40IDIuNCA0LjhhMi40IDIuNCAwIDAgMS00LjggMGMwLTEuNC44LTIuOCAyLjQtNC44WiIvPicsCiAgICB5b2dhOic8Y2lyY2xlIGN4PSIyMCIgY3k9IjEyLjUiIHI9IjMiLz48cGF0aCBkPSJNMjAgMTUuNXYxM00yMCAyMWwtNS41LTNNMjAgMjFsNS41LTNNMjAgMjguNWwtMy41LTIuNSAzLjUtMyIvPicsCiAgICBidWN1cmllOic8Y2lyY2xlIGN4PSIyMCIgY3k9IjIwIiByPSI0LjUiLz48cGF0aCBkPSJNMjAgMTB2M00yMCAyN3YzTTEwIDIwaDNNMjcgMjBoM00xMyAxM2wyIDJNMjUgMjVsMiAyTTEzIDI3bDItMk0yNSAxNWwyLTIiLz4nLAogICAgcmVjdW5vc3RpbnRlOic8cGF0aCBkPSJNMjAgMTEuNWwyLjQgNS4yIDUuNi42LTQuMiAzLjggMS4yIDUuNkwyMCAyMy45bC01IDIuOCAxLjItNS42TDEyIDE3LjNsNS42LS42WiIvPicsCiAgICBwdXRlcmk6JzxwYXRoIGQ9Ik0yMCAyMGMwLTUtMi41LTgtNi04IDAgNCAyLjUgOCA2IDhaTTIwIDIwYzAtNSAyLjUtOCA2LTggMCA0LTIuNSA4LTYgOFpNMjAgMjBjMCA1LTIuNSA4LTYgOCAwLTQgMi41LTggNi04Wk0yMCAyMGMwIDUgMi41IDggNiA4IDAtNC0yLjUtOC02LThaIi8+JywKICAgIHVuZWx0ZTonPHJlY3QgeD0iMTEiIHk9IjEzIiB3aWR0aD0iMTAiIGhlaWdodD0iMTUiIHJ4PSIxLjYiIHRyYW5zZm9ybT0icm90YXRlKC04IDE2IDIwLjUpIi8+PHJlY3QgeD0iMTkiIHk9IjEzIiB3aWR0aD0iMTAiIGhlaWdodD0iMTUiIHJ4PSIxLjYiIHRyYW5zZm9ybT0icm90YXRlKDggMjQgMjAuNSkiLz4nLAogICAgc2FtYW50YTonPHBhdGggZD0iTTIwIDI5VjIwTTIwIDIyLjVjMC0zLjUtMi42LTUuNS02LTUuNSAwIDMuNSAyLjYgNS41IDYgNS41Wk0yMCAyMGMwLTMuNiAyLjYtNiA2LTYgMCAzLjYtMi42IDYtNiA2WiIvPjxwYXRoIGQ9Ik0xMyAyOWgxNCIgc3Ryb2tlLWRhc2hhcnJheT0iMSAzIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4nCiAgfVtraW5kXTsKICByZXR1cm4gYDxzdmcgY2xhc3M9Imh4IiB3aWR0aD0iJHtzaXplfSIgaGVpZ2h0PSIke3NpemUqMS4xfSIgdmlld0JveD0iMCAwIDQwIDQ0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjYiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMjAgMiAzOCAxMnYyMEwyMCA0MiAyIDMyVjEyWiIvPiR7aW5uZXJ9PC9zdmc+YDsKfQpsZXQgdG9hc3RUOyBmdW5jdGlvbiB0b2FzdChtc2cpeyBsZXQgZWw9JCgnLnRvYXN0Jyk7IGlmKCFlbCl7ZWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7ZWwuY2xhc3NOYW1lPSd0b2FzdCc7ZWwuc2V0QXR0cmlidXRlKCdyb2xlJywnc3RhdHVzJyk7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbCl9IGVsLnRleHRDb250ZW50PW1zZzsgZWwuaGlkZGVuPWZhbHNlOyBjbGVhclRpbWVvdXQodG9hc3RUKTsgdG9hc3RUPXNldFRpbWVvdXQoKCk9PmVsLmhpZGRlbj10cnVlLDI0MDApIH0KZnVuY3Rpb24gYWRkRW50cnkoZSl7IERBVEEuZW50cmllcy5wdXNoKHtpZDpEYXRlLm5vdygpLnRvU3RyaW5nKDM2KStNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLDYpLCAuLi5lfSk7IHBlcnNpc3QoKSB9CgovKiA9PT09PT09PT09PT0gU291bmQ6IHN5bnRoZXNpemVkIGJlbGwgKG5vIGV4dGVybmFsIGZpbGVzKSA9PT09PT09PT09PT0gKi8KbGV0IEFDPW51bGw7CmZ1bmN0aW9uIGF1ZGlvVW5sb2NrKCl7CiAgdHJ5eyBpZiAobmF2aWdhdG9yLmF1ZGlvU2Vzc2lvbikgbmF2aWdhdG9yLmF1ZGlvU2Vzc2lvbi50eXBlPSdwbGF5YmFjaycgfWNhdGNoKGUpe30KICBpZiAoIUFDKXsgY29uc3QgQz13aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0OyBpZihDKSBBQz1uZXcgQygpIH0KICBpZiAoQUMgJiYgQUMuc3RhdGU9PT0nc3VzcGVuZGVkJykgQUMucmVzdW1lKCk7Cn0KZnVuY3Rpb24gc3RyaWtlKHdoZW49MCl7CiAgaWYgKCFBQykgcmV0dXJuOwogIGNvbnN0IGRlZXAgPSBEQVRBLnNldHRpbmdzLnNvdW5kPT09J2JvbCc7CiAgY29uc3QgYmFzZSA9IGRlZXAgPyAxOTYgOiA2NjA7CiAgY29uc3QgcGFydGlhbHMgPSBkZWVwID8gW1sxLDEsOV0sWzIuMDIsLjU1LDddLFsyLjc0LC4zNSw1LjVdLFs1LjMsLjE1LDMuNV1dIDogW1sxLDEsNV0sWzIuMCwuNDUsMy41XSxbMi43NiwuNCwyLjhdLFs1LjQsLjIsMS44XSxbOC45LC4wOCwxXV07CiAgY29uc3QgdDAgPSBBQy5jdXJyZW50VGltZSArIHdoZW4gKyAuMDI7CiAgY29uc3QgbWFzdGVyID0gQUMuY3JlYXRlR2FpbigpOyBtYXN0ZXIuZ2Fpbi52YWx1ZSA9IC4zMjsgbWFzdGVyLmNvbm5lY3QoQUMuZGVzdGluYXRpb24pOwogIHBhcnRpYWxzLmZvckVhY2goKFtyLGEsZGVjXSk9PnsKICAgIFswLDFdLmZvckVhY2goaj0+ewogICAgICBjb25zdCBvPUFDLmNyZWF0ZU9zY2lsbGF0b3IoKSwgZz1BQy5jcmVhdGVHYWluKCk7CiAgICAgIG8udHlwZT0nc2luZSc7IG8uZnJlcXVlbmN5LnZhbHVlID0gYmFzZSpyKihqPyAxLjAwMzUgOiAxKTsKICAgICAgZy5nYWluLnNldFZhbHVlQXRUaW1lKDAsdDApOyBnLmdhaW4ubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoYSouNSx0MCsuMDA2KTsKICAgICAgZy5nYWluLmV4cG9uZW50aWFsUmFtcFRvVmFsdWVBdFRpbWUoLjAwMDEsdDArZGVjKTsKICAgICAgby5jb25uZWN0KGcpLmNvbm5lY3QobWFzdGVyKTsgby5zdGFydCh0MCk7IG8uc3RvcCh0MCtkZWMrLjA1KTsKICAgIH0pOwogIH0pOwp9CmZ1bmN0aW9uIGJlbGxzKG4peyBmb3IobGV0IGk9MDtpPG47aSsrKSBzdHJpa2UoaSoyLjIpIH0KCi8qID09PT09PT09PT09PSBUaW1lciA9PT09PT09PT09PT0gKi8KY29uc3QgVCA9IHsgcGhhc2U6J2lkbGUnLCBlbmRBdDowLCByZW1haW46MCwgcHJlcFM6MCwgZHVyUzowLCBraW5kOidtZWRpdGF0aWUnLCB0aXRsZTonJywgc3RhcnRlZEF0OjAsIHRpY2s6bnVsbCwgd2FrZTpudWxsLCBzYXZlZElkOm51bGwgfTsKYXN5bmMgZnVuY3Rpb24gd2FrZU9uKCl7IHRyeXsgVC53YWtlID0gYXdhaXQgbmF2aWdhdG9yLndha2VMb2NrPy5yZXF1ZXN0KCdzY3JlZW4nKSB9Y2F0Y2goZSl7fSB9CmZ1bmN0aW9uIHdha2VPZmYoKXsgdHJ5eyBULndha2U\/LnJlbGVhc2UoKSB9Y2F0Y2goZSl7fSBULndha2U9bnVsbCB9CmZ1bmN0aW9uIHRpbWVyU3RhcnQoKXsKICBhdWRpb1VubG9jaygpOwogIGNvbnN0IHM9REFUQS5zZXR0aW5nczsKICBULmtpbmQ9cy5raW5kOyBULnByZXBTPXMucHJlcDsgVC5kdXJTPXMuZHVyKjYwOyBULnRpdGxlPSgkKCcjdFRpdGxlJyk\/LnZhbHVlfHwnJykudHJpbSgpOyBULnNhdmVkSWQ9bnVsbDsKICBULnN0YXJ0ZWRBdD1EYXRlLm5vdygpOwogIGlmIChULnByZXBTPjApeyBULnBoYXNlPSdwcmVwJzsgVC5lbmRBdD1EYXRlLm5vdygpK1QucHJlcFMqMTAwMCB9CiAgZWxzZSB7IFQucGhhc2U9J3J1bic7IFQuZW5kQXQ9RGF0ZS5ub3coKStULmR1clMqMTAwMDsgYmVsbHMoMSkgfQogIHdha2VPbigpOyBsb29wKCk7IHJlbmRlclByYWN0aWNhKCk7Cn0KZnVuY3Rpb24gbG9vcCgpeyBjbGVhckludGVydmFsKFQudGljayk7IFQudGljaz1zZXRJbnRlcnZhbChzdGVwLDI1MCk7IHN0ZXAoKSB9CmZ1bmN0aW9uIHN0ZXAoKXsKICBpZiAoVC5waGFzZT09PSdwcmVwJyAmJiBEYXRlLm5vdygpPj1ULmVuZEF0KXsgVC5waGFzZT0ncnVuJzsgVC5lbmRBdD1ULmVuZEF0K1QuZHVyUyoxMDAwOyBiZWxscygxKTsgcmVuZGVyUHJhY3RpY2EoKTsgfQogIGlmIChULnBoYXNlPT09J3J1bicgJiYgRGF0ZS5ub3coKT49VC5lbmRBdCl7IGZpbmlzaCh0cnVlKTsgcmV0dXJuIH0KICBwYWludERpYWwoKTsKfQpmdW5jdGlvbiBwYWludERpYWwoKXsKICBjb25zdCBkPSQoJyNkaWFsJyk7IGlmKCFkKSByZXR1cm47CiAgbGV0IHRvdGFsPTEsIGxlZnQ9MCwgbGFiZWw9dCgncmVhZHknKSwgc3ViPScnOwogIGlmIChULnBoYXNlPT09J3ByZXAnKXsgdG90YWw9VC5wcmVwUzsgbGVmdD0oVC5lbmRBdC1EYXRlLm5vdygpKS8xMDAwOyBsYWJlbD10KCdwcmVwUGhhc2UnKTsgc3ViPXQoJ2JlbGxTdGFydCcpIH0KICBlbHNlIGlmIChULnBoYXNlPT09J3J1bicpeyB0b3RhbD1ULmR1clM7IGxlZnQ9KFQuZW5kQXQtRGF0ZS5ub3coKSkvMTAwMDsgbGFiZWw9S0lORFtULmtpbmRdOyBzdWI9dCgnb2YnKSttbXNzKFQuZHVyUykgfQogIGVsc2UgaWYgKFQucGhhc2U9PT0ncGF1c2VkJyl7IHRvdGFsPVQucGF1c2VkUGhhc2U9PT0ncHJlcCc\/VC5wcmVwUzpULmR1clM7IGxlZnQ9VC5yZW1haW47IGxhYmVsPXQoJ3BhdXNlZCcpOyBzdWI9dCgncHJlc3NDb250JykgfQogIGVsc2UgeyBsZWZ0PURBVEEuc2V0dGluZ3MuZHVyKjYwOyB0b3RhbD1sZWZ0OyBsYWJlbD1LSU5EW0RBVEEuc2V0dGluZ3Mua2luZF07IHN1Yj1EQVRBLnNldHRpbmdzLnByZXA\/dCgncGx1c1ByZXAnKShwcmVwTGFiZWwoREFUQS5zZXR0aW5ncy5wcmVwKSk6dCgnbm9QcmVwJykgfQogIGQuY2xhc3NMaXN0LnRvZ2dsZSgncHJlcCcsIFQucGhhc2U9PT0ncHJlcCcgfHwgKFQucGhhc2U9PT0ncGF1c2VkJyYmVC5wYXVzZWRQaGFzZT09PSdwcmVwJykpOwogIGNvbnN0IEM9MipNYXRoLlBJKjExMCwgZnJhYyA9IFQucGhhc2U9PT0naWRsZSc\/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsbGVmdC90b3RhbCkpOwogICQoJy5wcm9nJyxkKS5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gQyooMS1mcmFjKTsKICAkKCcucGhhc2UnLGQpLnRleHRDb250ZW50PWxhYmVsOyAkKCcuY2xvY2snLGQpLnRleHRDb250ZW50PW1tc3MobGVmdCk7ICQoJy5zdWInLGQpLnRleHRDb250ZW50PXN1YjsKfQpmdW5jdGlvbiB0aW1lclBhdXNlKCl7IFQucmVtYWluPShULmVuZEF0LURhdGUubm93KCkpLzEwMDA7IFQucGF1c2VkUGhhc2U9VC5waGFzZTsgVC5waGFzZT0ncGF1c2VkJzsgY2xlYXJJbnRlcnZhbChULnRpY2spOyByZW5kZXJQcmFjdGljYSgpIH0KZnVuY3Rpb24gdGltZXJSZXN1bWUoKXsgYXVkaW9VbmxvY2soKTsgVC5waGFzZT1ULnBhdXNlZFBoYXNlOyBULmVuZEF0PURhdGUubm93KCkrVC5yZW1haW4qMTAwMDsgbG9vcCgpOyByZW5kZXJQcmFjdGljYSgpIH0KZnVuY3Rpb24gdGltZXJTdG9wKCl7CiAgY29uc3Qgd2FzUnVuID0gVC5waGFzZT09PSdydW4nIHx8IChULnBoYXNlPT09J3BhdXNlZCcmJlQucGF1c2VkUGhhc2U9PT0ncnVuJyk7CiAgY29uc3QgZG9uZVMgPSB3YXNSdW4gPyBULmR1clMtKFQucGhhc2U9PT0ncGF1c2VkJz9ULnJlbWFpbjooVC5lbmRBdC1EYXRlLm5vdygpKS8xMDAwKSA6IDA7CiAgY2xlYXJJbnRlcnZhbChULnRpY2spOyB3YWtlT2ZmKCk7CiAgVC5waGFzZT0nc3RvcHBlZCc7IFQuZG9uZU1pbj1NYXRoLnJvdW5kKGRvbmVTLzYwKTsgcmVuZGVyUHJhY3RpY2EoKTsKfQpmdW5jdGlvbiBmaW5pc2gocmluZyl7CiAgY2xlYXJJbnRlcnZhbChULnRpY2spOyB3YWtlT2ZmKCk7CiAgaWYgKHJpbmcpIGJlbGxzKDMpOwogIFQucGhhc2U9J2RvbmUnOwogIGFkZEVudHJ5KHsgdHlwZTpULmtpbmQsIHRpdGxlOlQudGl0bGUsIG1pbnV0ZXM6TWF0aC5yb3VuZChULmR1clMvNjApLCBkYXRlOm5ldyBEYXRlKFQuc3RhcnRlZEF0KS50b0lTT1N0cmluZygpIH0pOwogIFQuc2F2ZWRJZD1EQVRBLmVudHJpZXNbREFUQS5lbnRyaWVzLmxlbmd0aC0xXS5pZDsKICByZW5kZXJQcmFjdGljYSgpOwp9CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCgpPT57IGlmKCFkb2N1bWVudC5oaWRkZW4gJiYgKFQucGhhc2U9PT0ncHJlcCd8fFQucGhhc2U9PT0ncnVuJykpIHN0ZXAoKSB9KTsKY29uc3QgcHJlcExhYmVsID0gcyA9PiB7IGlmKCFzKSByZXR1cm4gdCgnbm9uZScpOyBjb25zdCBtPU1hdGguZmxvb3Iocy82MCksIHI9cyU2MDsgcmV0dXJuIChtP20rJyAnK3QoJ3VuaXRNaW4nKTonJykrKG0mJnI\/JyAnOicnKSsocj9yKycgJyt0KCd1bml0U2VjJyk6JycpIH07CmNvbnN0IGR1ckxhYmVsID0gbSA9PiBtKycgJyt0KCd1bml0TWluJyk7CmZ1bmN0aW9uIHNsaWRlcihpZCxuYW1lLG1pbixtYXgsc3RlcCx2YWwsZm10LGNscyl7IGNvbnN0IGY9KCh2YWwtbWluKS8obWF4LW1pbikpKjEwMDsKICByZXR1cm4gYDxkaXYgY2xhc3M9InNsaWRlciAke2Nsc3x8Jyd9Ij48ZGl2IGNsYXNzPSJ0b3AiPjxsYWJlbCBjbGFzcz0ibGFiZWwiIGZvcj0iJHtpZH0iPiR7bmFtZX08L2xhYmVsPjxvdXRwdXQgaWQ9IiR7aWR9T3V0Ij4ke2ZtdCh2YWwpfTwvb3V0cHV0PjwvZGl2PgogIDxpbnB1dCB0eXBlPSJyYW5nZSIgaWQ9IiR7aWR9IiBjbGFzcz0iJHtjbHM\/Y2xzKyctcmFuZ2UnOicnfSIgbWluPSIke21pbn0iIG1heD0iJHttYXh9IiBzdGVwPSIke3N0ZXB9IiB2YWx1ZT0iJHt2YWx9IiBzdHlsZT0iLS1maWxsOiR7Zn0lIj4KICA8ZGl2IGNsYXNzPSJlbmRzIj48c3Bhbj4ke2ZtdChtaW4pfTwvc3Bhbj48c3Bhbj4ke2ZtdChtYXgpfTwvc3Bhbj48L2Rpdj48L2Rpdj5gIH0KCi8qID09PT09PT09PT09PSBWaWV3cyA9PT09PT09PT09PT0gKi8KbGV0IHRhYj0nYXppJywgakZpbHRlcj0ndG9hdGUnLCBwZW5kaW5nRGVsPW51bGwsIG1hbnVhbD1mYWxzZSwgbGFuZ09wZW49ZmFsc2UsIGpWaWV3PSdtaW5lJywgY0ZpbHRlcj0ndG9hdGUnLCBwZW5kaW5nUmVwPW51bGwsIG5hbWVMYXRlcj1mYWxzZTsKZnVuY3Rpb24gZ28odG8peyBpZih0YWI9PT0ncmVjdW5vc3RpbnRlJyYmcmVjUm93cykgcmVjQ2FwdHVyZSgpOyB0YWI9dG87IG1hbnVhbD1mYWxzZTsgcGVuZGluZ0RlbD1udWxsOyBpZih0bz09PSdidWN1cmllJyl7IGJ1Y1ZpZXc9bnVsbCB9IGlmKHRvPT09J3B1dGVyaScpeyBwVmlldz1udWxsOyBwRXhwb3J0PWZhbHNlIH0gcmVuZGVyKCk7ICQoJyNtYWluJykuc2Nyb2xsVG9wPTAgfQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmF2JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGU9PnsgY29uc3QgYj1lLnRhcmdldC5jbG9zZXN0KCdidXR0b25bZGF0YS10YWJdJyk7IGlmKGIpIGdvKGIuZGF0YXNldC50YWIpIH0pOwoKZnVuY3Rpb24gc3RyZWFrKCl7CiAgY29uc3QgZGF5cz1uZXcgU2V0KERBVEEuZW50cmllcy5tYXAoZT0+ZGF5S2V5KGUuZGF0ZSkpKTsgbGV0IG49MDsgY29uc3QgZD1uZXcgRGF0ZSgpOwogIGlmICghZGF5cy5oYXMoZGF5S2V5KGQpKSkgZC5zZXREYXRlKGQuZ2V0RGF0ZSgpLTEpOwogIHdoaWxlKGRheXMuaGFzKGRheUtleShkKSkpeyBuKys7IGQuc2V0RGF0ZShkLmdldERhdGUoKS0xKSB9CiAgcmV0dXJuIG47Cn0KY29uc3QgbmVlZHNHZW4gPSAoKSA9PiBORUVEU19HRU5ERVIuaW5jbHVkZXMobGFuZygpKTsKZnVuY3Rpb24gcmVuZGVyQXppKCl7CiAgY29uc3QgdGs9dG9kYXlLZXkoKSwgdG9kYXk9REFUQS5lbnRyaWVzLmZpbHRlcihlPT5kYXlLZXkoZS5kYXRlKT09PXRrKTsKICBjb25zdCBtaW5Ub2RheT10b2RheS5maWx0ZXIoZT0+ZS5taW51dGVzKS5yZWR1Y2UoKGEsZSk9PmErZS5taW51dGVzLDApOwogIGNvbnN0IGNudCA9ICguLi5rKSA9PiB0b2RheS5maWx0ZXIoZT0+ay5pbmNsdWRlcyhlLnR5cGUpKS5sZW5ndGg7CiAgY29uc3Qgbm90ZSA9IG4gPT4gbj9gPGVtPiR7dCgnblRvZGF5Jykobil9PC9lbT5gOicnOwogIGNvbnN0IGRhdGVTdHI9bmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcobG9jKCkse3dlZWtkYXk6J2xvbmcnLGRheTonbnVtZXJpYycsbW9udGg6J2xvbmcnfSk7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJ2aWV3Ij4KICAgICR7Q09ORklHLmFwaT8nJzpgPGRpdiBjbGFzcz0iYmFubmVyIj4ke3QoJ3Rlc3RCYW5uZXInKX08L2Rpdj5gfQogICAgJHtuZWVkc0dlbigpJiYhREFUQS5zZXR0aW5ncy5nZW4\/YDxkaXYgY2xhc3M9ImNhcmQgZ2VuIj48aDM+JHt0KCdnZW5RJyl9PC9oMz48cCBjbGFzcz0ibm90ZSI+JHt0KCdnZW5Ob3RlJyl9PC9wPgogICAgICA8ZGl2IGNsYXNzPSJidG5zIj48YnV0dG9uIGNsYXNzPSJidG4iIGRhdGEtZ2VuPSJmIj4ke3QoJ2ZlbScpfTwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0biBzb2Z0IiBkYXRhLWdlbj0ibSI+JHt0KCdtYXNjJyl9PC9idXR0b24+PC9kaXY+PC9kaXY+YDonJ30KICAgICR7REFUQS5jb21tLm5hbWV8fG5hbWVMYXRlcj8nJzpgPGRpdiBjbGFzcz0iY2FyZCBnZW4iPjxoMz4ke3QoJ2ZpcnN0UScpfTwvaDM+PHAgY2xhc3M9Im5vdGUiPiR7dCgnZmlyc3ROb3RlJyl9PC9wPgogICAgICA8ZGl2IGNsYXNzPSJ0ZW1hLXJvdyI+PGlucHV0IHR5cGU9InRleHQiIGlkPSJmaXJzdE5hbWUiIG1heGxlbmd0aD0iMzAiIHBsYWNlaG9sZGVyPSIke3QoJ25hbWVQaCcpfSI+PGJ1dHRvbiBjbGFzcz0iYnRuIiBkYXRhLWFjdD0iZmlyc3ROYW1lIj4ke3QoJ3NhdmUnKX08L2J1dHRvbj48L2Rpdj4KICAgICAgPGJ1dHRvbiBjbGFzcz0ibGluayIgZGF0YS1hY3Q9Im5hbWVMYXRlciIgc3R5bGU9ImFsaWduLXNlbGY6ZmxleC1zdGFydDtmb250LXNpemU6Ljg1cmVtIj4ke3QoJ2xhdGVyJyl9PC9idXR0b24+PC9kaXY+YH0KICAgIDxkaXY+PGRpdiBjbGFzcz0iZXllYnJvdyI+JHtlc2MoZGF0ZVN0cil9PC9kaXY+PGgyPiR7dCgnaGVhZGxpbmUnKX08L2gyPjwvZGl2PgogICAgJHt1bmVsdGVsQ2FyZCgpfQogICAgJHtpbnNwb0NhcmQoKX0KICAgIDxidXR0b24gY2xhc3M9ImNhcmQgam91cm5hbC1saW5rIiBkYXRhLWdvPSJqdXJuYWwiPjxzcGFuPjxoMz4ke3QoJ2pvdXJuYWwnKX08L2gzPjxzcGFuIGNsYXNzPSJub3RlIj4ke3QoJ25FbnRyaWVzJykoREFUQS5lbnRyaWVzLmxlbmd0aCl9PC9zcGFuPjwvc3Bhbj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgc3R5bGU9ImZvbnQtc2l6ZToxLjRyZW07Y29sb3I6dmFyKC0tbW9zcykiPuKAujwvc3Bhbj48L2J1dHRvbj4KICA8L2Rpdj5gOwp9CgovKiAtLS0tLS0tLS0tIEpveSBtZWRpdGF0aW9uIC0tLS0tLS0tLS0gKi8KY29uc3QgUV9LRVlTPVsnb2JpZWN0aXYnLCdzZW1pbnRlJywnYWp1dG9yJ107CmxldCBidWNWaWV3PW51bGwsIGJ1Y0RyYWZ0PXt9LCBidWNUb2RvQWRkZWQ9ZmFsc2U7CmxldCBvYmpPcGVuPWZhbHNlLCBvYmpRdWVyeT0nJzsKZnVuY3Rpb24gcHJldkxpc3QoKXsgY29uc3Qgc2Vlbj1uZXcgU2V0KCksIG91dD1bXTsgREFUQS5lbnRyaWVzLmZpbHRlcihlPT5lLnR5cGU9PT0nYnVjdXJpZScmJmUub2JpZWN0aXYpLnNvcnQoKGEsYik9PmIuZGF0ZS5sb2NhbGVDb21wYXJlKGEuZGF0ZSkpLmZvckVhY2goZT0+eyBjb25zdCBrPWUub2JpZWN0aXYudHJpbSgpOyBpZighc2Vlbi5oYXMoay50b0xvd2VyQ2FzZSgpKSl7IHNlZW4uYWRkKGsudG9Mb3dlckNhc2UoKSk7IG91dC5wdXNoKGspIH0gfSk7IHJldHVybiBvdXQgfQpjb25zdCBub3JtID0gcyA9PiBzLnRvTG93ZXJDYXNlKCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bzIAtza9dL2csJycpOwpmdW5jdGlvbiBvYmpJdGVtcygpeyBjb25zdCBsPXByZXZMaXN0KCksIHE9bm9ybShvYmpRdWVyeS50cmltKCkpOwogIGNvbnN0IGhpdHM9bC5tYXAoKG8saSk9PltvLGldKS5maWx0ZXIoKFtvXSk9PiFxfHxub3JtKG8pLmluY2x1ZGVzKHEpKTsKICByZXR1cm4gaGl0cy5sZW5ndGggPyBoaXRzLm1hcCgoW28saV0pPT5gPGJ1dHRvbiBkYXRhLXByZXZvYmo9IiR7aX0iIGFyaWEtcHJlc3NlZD0iJHtidWNEcmFmdC5vYmllY3Rpdj09PW99Ij4ke2VzYyhvKX08L2J1dHRvbj5gKS5qb2luKCcnKSA6IGA8ZGl2IGNsYXNzPSJub25lIj4ke3QoJ25vR29hbCcpfTwvZGl2PmAgfQpmdW5jdGlvbiBwcmV2T2JqZWN0aXZlcygpeyBjb25zdCBsPXByZXZMaXN0KCk7IGlmKCFsLmxlbmd0aCkgcmV0dXJuICcnOwogIHJldHVybiBgPGRpdiBjbGFzcz0ib2JqcGljayI+PGJ1dHRvbiBjbGFzcz0ib2JqdG9nZ2xlIiBkYXRhLWFjdD0ib2JqVG9nZ2xlIiBhcmlhLWV4cGFuZGVkPSIke29iak9wZW59Ij4ke3QoJ3BpY2tQcmV2JykobC5sZW5ndGgpfTwvYnV0dG9uPgogICAgJHtvYmpPcGVuP2A8ZGl2IGNsYXNzPSJzaGVldC1iZyIgZGF0YS1hY3Q9Im9ialRvZ2dsZSI+PGRpdiBjbGFzcz0ib2JqcGFuZWwiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbD0iJHt0KCdteUdvYWxzJyl9Ij48ZGl2IGNsYXNzPSJncmFiIj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0idG9wIj48aDM+JHt0KCdteUdvYWxzJyl9PC9oMz48YnV0dG9uIGNsYXNzPSJ4IiBkYXRhLWFjdD0ib2JqVG9nZ2xlIiBhcmlhLWxhYmVsPSIke3QoJ2Nsb3NlJyl9Ij7DlzwvYnV0dG9uPjwvZGl2PgogICAgICA8aW5wdXQgdHlwZT0ic2VhcmNoIiBpZD0ib2JqU2VhcmNoIiBwbGFjZWhvbGRlcj0iJHt0KCdzZWFyY2hHb2FscycpfSIgdmFsdWU9IiR7ZXNjKG9ialF1ZXJ5KX0iIGF1dG9jb21wbGV0ZT0ib2ZmIj4KICAgICAgPGRpdiBjbGFzcz0ib2JqbGlzdCIgaWQ9Im9iakxpc3QiPiR7b2JqSXRlbXMoKX08L2Rpdj48L2Rpdj48L2Rpdj5gOicnfTwvZGl2PmAgfQpmdW5jdGlvbiBicmVhdGhDYXJkKCl7IHJldHVybiBgPGRpdiBjbGFzcz0iY2FyZCBicmVhdGgiPjxkaXYgY2xhc3M9Im9yYiIgaWQ9Im9yYiI+PHNwYW4gaWQ9Im9yYkNvdW50Ij48L3NwYW4+PC9kaXY+CiAgPGRpdiBjbGFzcz0iY3VlIiBpZD0iY3VlIj4ke3QoJ2JyZWF0aGVDdWUnKX08L2Rpdj4KICA8YnV0dG9uIGNsYXNzPSJidG4gc29mdCIgaWQ9ImJyZWF0aEJ0biIgZGF0YS1hY3Q9ImJyZWF0aGUiIHN0eWxlPSJtYXgtd2lkdGg6MjYwcHgiPiR7dCgnYnJlYXRoZUJ0bicpfTwvYnV0dG9uPjwvZGl2PmAgfQpmdW5jdGlvbiByZW5kZXJCdWN1cmllKCl7CiAgY29uc3QgUT10eCgpLnFKb3k7CiAgaWYgKGJ1Y1ZpZXcpewogICAgY29uc3QgZT1EQVRBLmVudHJpZXMuZmluZCh4PT54LmlkPT09YnVjVmlldyk7IGlmKCFlKXsgYnVjVmlldz1udWxsOyByZXR1cm4gcmVuZGVyQnVjdXJpZSgpIH0KICAgIHJldHVybiBgPGRpdiBjbGFzcz0idmlldyI+CiAgICAgIDxkaXY+PGRpdiBjbGFzcz0iZXllYnJvdyI+JHtlc2MoZm10RGF5KGRheUtleShlLmRhdGUpKSl9PC9kaXY+PGgyPiR7dCgnam95VGl0bGUnKX08L2gyPjwvZGl2PgogICAgICA8ZGwgY2xhc3M9ImNhcmQgcmVjYXAiPiR7UV9LRVlTLm1hcChrPT5gPGR0PiR7UVtrXX08L2R0PjxkZD4ke2VzYyhlW2tdfHwn4oCUJyl9PC9kZD5gKS5qb2luKCcnKX08L2RsPgogICAgICA8ZGl2IGNsYXNzPSJ2b3ciPiR7aGV4KCdzYW1hbnRhJyw0NCl9JHt0eCgpLnZvd0pveS5tYXAocD0+YDxwPiR7cH08L3A+YCkuam9pbignJyl9PHAgY2xhc3M9Imxhc3QiPiR7dHgoKS52b3dKb3lMYXN0fTwvcD48L2Rpdj4KICAgICAgJHticmVhdGhDYXJkKCl9CiAgICAgICR7ZS5hanV0b3IgJiYgIURBVEEudG9kb3Muc29tZSh4PT54LmZyb209PT1lLmlkKT9gPGJ1dHRvbiBjbGFzcz0iYnRuIHNvZnQiIGRhdGEtYWN0PSJidWNUb2RvUmVjYXAiIGRhdGEtaWQ9IiR7ZS5pZH0iPiR7dCgnYWRkSGVscFRvZG8nKX08L2J1dHRvbj5gOicnfQogICAgICAke3NoYXJlQnRuKGUpfQogICAgICA8YnV0dG9uIGNsYXNzPSJidG4gZ2hvc3QiIGRhdGEtYWN0PSJidWNOZXciPiR7dCgnbmV3Sm95Jyl9PC9idXR0b24+CiAgICA8L2Rpdj5gOwogIH0KICByZXR1cm4gYDxkaXYgY2xhc3M9InZpZXciPgogICAgPGRpdj48aDI+JHt0KCdqb3lUaXRsZScpfTwvaDI+PHAgY2xhc3M9ImxlYWQiPiR7dCgnam95TGVhZCcpfTwvcD48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNhcmQiPiR7UV9LRVlTLm1hcCgoayxpKT0+eyBjb25zdCBsPVFba107IHJldHVybiBgPGRpdiBjbGFzcz0icSI+PGxhYmVsIGZvcj0iYl8ke2t9Ij48c3BhbiBjbGFzcz0ibnVtIj4ke2krMX0uPC9zcGFuPiR7bH0key9bPzpdJC8udGVzdChsKT8nJzonOid9PC9sYWJlbD4KICAgICAgJHtrPT09J29iaWVjdGl2Jz9wcmV2T2JqZWN0aXZlcygpOicnfQogICAgICA8dGV4dGFyZWEgaWQ9ImJfJHtrfSIgZGF0YS1idWM9IiR7a30iIHJvd3M9IjMiICR7az09PSdvYmllY3RpdicmJnByZXZMaXN0KCkubGVuZ3RoP2BwbGFjZWhvbGRlcj0iJHt0KCduZXdHb2FsUGgnKX0iYDonJ30+JHtlc2MoYnVjRHJhZnRba118fCcnKX08L3RleHRhcmVhPgogICAgICAke2s9PT0nYWp1dG9yJz9gPGJ1dHRvbiBjbGFzcz0idG9kby1idG4iIGlkPSJ0b2RvQnRuIiBkYXRhLWFjdD0iYnVjVG9kbyIgJHtidWNEcmFmdC5hanV0b3I\/Jyc6J2hpZGRlbid9ICR7YnVjVG9kb0FkZGVkPydkaXNhYmxlZCc6Jyd9PiR7YnVjVG9kb0FkZGVkP3QoJ2FkZGVkVG9kbycpOnQoJ2FkZFRvZG8nKX08L2J1dHRvbj5gOicnfTwvZGl2PmAgfSkuam9pbignJyl9PC9kaXY+CiAgICAke3ByaXZDaG9pY2UoJ2J1Y3VyaWUnKX0KICAgIDxidXR0b24gY2xhc3M9ImJ0biIgZGF0YS1hY3Q9ImJ1Y1NhdmUiPiR7dCgnc2F2ZScpfTwvYnV0dG9uPgogIDwvZGl2PmA7Cn0KCi8qIC0tLS0tLS0tLS0gVGhlIDQgcG93ZXJzIC0tLS0tLS0tLS0gKi8KY29uc3QgbWsgPSB2ID0+IGA8bWFyaz4ke2VzYyhTdHJpbmcodnx8J+KApicpLnRyaW0oKS5yZXBsYWNlKC9ccypcbitccyovZywnLCAnKS5yZXBsYWNlKC9bLiE\/LDs6XHNdKyQvLCcnKSl9PC9tYXJrPmA7CmNvbnN0IG5vTGVhZCA9IHYgPT4gU3RyaW5nKHZ8fCcnKS50cmltKCkucmVwbGFjZSh0eCgpLmxlYWQsJycpOwpjb25zdCBQVmsgPSB2ID0+IHsgY29uc3QgcD10eCgpLnB2W3ZdfHx0eCgpLnB2WzFdOyByZXR1cm4geyBuYW1lOnAubmFtZSwgcDE6cC5wMSwgcDI6cC5wMnx8dHgoKS5zdGQucDIsIHAzOnAucDN8fHR4KCkuc3RkLnAzLCBwNDpwLnA0fHx0eCgpLnN0ZC5wNCB9IH07CmNvbnN0IFBPV0VSX0tFWVM9WydwMScsJ3AyJywncDMnLCdwNCddOwpjb25zdCBQVyA9IGsgPT4gdHgoKS5wb3dlcnNba107CmxldCBwRXhwb3J0PWZhbHNlLCBleHBGcm9tPW51bGwsIGV4cFRvPW51bGw7CmNvbnN0IFRFTUVfQkFaQT1bJ0Btb25leScsJ0ByZWxhdGlvbnNoaXBzJywnQGhlYWx0aCddOwpsZXQgdGVtZUFsbD1mYWxzZTsKY29uc3QgdGVtZVRvYXRlPSgpPT57IGNvbnN0IGw9Wy4uLlRFTUVfQkFaQSwgLi4uKERBVEEuc2V0dGluZ3MudGVtZXx8W10pXTsgY29uc3Qgbj17fTsgREFUQS5lbnRyaWVzLmZvckVhY2goZT0+eyBpZihlLnR5cGU9PT0ncHV0ZXJpJyYmZS50ZW1hKXsgbltlLnRlbWFdPShuW2UudGVtYV18fDApKzE7IGlmKCFsLmluY2x1ZGVzKGUudGVtYSkpIGwucHVzaChlLnRlbWEpIH0gfSk7IHJldHVybiBsLm1hcCgoeCxpKT0+W3gsaV0pLnNvcnQoKGEsYik9PihuW2JbMF1dfHwwKS0oblthWzBdXXx8MCl8fGFbMV0tYlsxXSkubWFwKHg9PnhbMF0pIH07CmxldCBwVmlldz1udWxsLCBwRHJhZnQ9e3Y6MSx6aTonYXppJ307CmZ1bmN0aW9uIHBGb3JtKGtleSl7CiAgcmV0dXJuIFBWayhwRHJhZnQudilba2V5XS5mb3JtKCkubWFwKChbZixsXSk9PiBmPT09J3QnID8gYDxwIGNsYXNzPSJwdGV4dCI+JHtsfTwvcD5gCiAgICA6IGY9PT0nemknID8gYDxkaXYgY2xhc3M9ImNoaXBzIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHt0KCd3aGVuJyl9Ij4ke1tbJ2F6aScsdCgnelRvZGF5JyldLFsnbWFpbmUnLHQoJ3pUb21vcnJvdycpXV0ubWFwKChbayx4XSk9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIiBkYXRhLXppPSIke2t9IiBhcmlhLXByZXNzZWQ9IiR7KHBEcmFmdC56aXx8J2F6aScpPT09a30iPiR7eH08L2J1dHRvbj5gKS5qb2luKCcnKX08L2Rpdj5gCiAgICA6IGY9PT0nZHVyJyA\/IGA8ZGl2IGNsYXNzPSJjaGlwcyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7dCgnaG93TG9uZycpfSI+JHt0eCgpLmR1ci5tYXAoZD0+YDxidXR0b24gY2xhc3M9ImNoaXAiIGRhdGEtZHVyPSIke2R9IiBkYXRhLW1vZGU9IiR7bH0iPiR7ZH08L2J1dHRvbj5gKS5qb2luKCcnKX08L2Rpdj5gCiAgICA6IGA8dGV4dGFyZWEgaWQ9InBmXyR7Zn0iIGRhdGEtcGY9IiR7Zn0iIHJvd3M9IjIiIHBsYWNlaG9sZGVyPSIke2x9Ij4ke2VzYyhwRHJhZnRbZl18fCcnKX08L3RleHRhcmVhPmApLmpvaW4oJycpOwp9CmZ1bmN0aW9uIHBSZWNhcChrZXksZSl7IHJldHVybiBgPHAgY2xhc3M9InB0ZXh0Ij4ke1BWayhlLnYpW2tleV0ucmVjYXAoZSl9PC9wPmAgfQpmdW5jdGlvbiBwbGFpbihoKXsgY29uc3QgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgZC5pbm5lckhUTUw9aDsgcmV0dXJuIGQudGV4dENvbnRlbnQucmVwbGFjZSgvXHMrL2csJyAnKS50cmltKCkgfQpjb25zdCBsb25nRGF0ZSA9IGUgPT4gbmV3IERhdGUoZS5kYXRlKS50b0xvY2FsZURhdGVTdHJpbmcobG9jKCkse2RheTonbnVtZXJpYycsbW9udGg6J2xvbmcnLHllYXI6J251bWVyaWMnfSk7CmZ1bmN0aW9uIHB1dGVyaVRleHQoZSl7CiAgY29uc3Qgd2EgPSBoID0+IHsgY29uc3QgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgZC5pbm5lckhUTUw9aC5yZXBsYWNlKC88bWFyaz4vZywnKicpLnJlcGxhY2UoLzxcL21hcms+L2csJyonKTsgcmV0dXJuIGQudGV4dENvbnRlbnQucmVwbGFjZSgvWyBcdF0rL2csJyAnKS50cmltKCkgfTsKICBsZXQgcz0nKicrdHgoKS5wb3dIZWFkKycgwrcgJytsb25nRGF0ZShlKSsoZS50ZW1hPycgwrcgJyt0ZW1hTGFiZWwoZS50ZW1hKTonJykrJypcblxuJzsKICBQT1dFUl9LRVlTLmZvckVhY2goaz0+eyBjb25zdCBbbix0aV09UFcoayk7IHMrPScqJytuKycgwrcgJyt0aSsnKlxuJyt3YShQVmsoZS52KVtrXS5yZWNhcChlKSkrJ1xuXG4nIH0pOwogIHJldHVybiBzK3R4KCkudm93UG93KCkubWFwKHg9PidfJyt4KydfJykuam9pbignXG5cbicpKydcblxuXycrdHgoKS52b3dQb3dMYXN0KydfXG5cbicrdCgnYnJlYXRoZUN1ZScpKycuXG4nOwp9CmZ1bmN0aW9uIHB1dGVyaUh0bWwoZSl7CiAgcmV0dXJuIGA8cD48Yj4ke3R4KCkucG93SGVhZENhc2V9IMK3ICR7bG9uZ0RhdGUoZSl9JHtlLnRlbWE\/JyDCtyAnK2VzYyh0ZW1hTGFiZWwoZS50ZW1hKSk6Jyd9PC9iPjwvcD5gK1BPV0VSX0tFWVMubWFwKGs9PnsgY29uc3QgW24sdGldPVBXKGspOyByZXR1cm4gYDxwPjxiPiR7bn0gwrcgJHt0aX08L2I+PGJyPiR7UFZrKGUudilba10ucmVjYXAoZSkucmVwbGFjZSgvPG1hcms+L2csJzxiPicpLnJlcGxhY2UoLzxcL21hcms+L2csJzwvYj4nKX08L3A+YCB9KS5qb2luKCcnKQogICAgK3R4KCkudm93UG93KCkubWFwKHg9PmA8cD48aT4ke3h9PC9pPjwvcD5gKS5qb2luKCcnKStgPHA+PGk+JHt0eCgpLnZvd1Bvd0xhc3R9PC9pPjwvcD48cD4ke3QoJ2JyZWF0aGVDdWUnKX0uPC9wPmA7Cn0KZnVuY3Rpb24gY29weVJpY2godHh0LCBodG1sKXsKICBjb25zdCBvaz0oKT0+dG9hc3QodCgnY29waWVkJykpLCBiYWQ9KCk9PnRvYXN0KHQoJ2NvcHlGYWlsJykpOwogIGNvbnN0IGZhbGxiYWNrPSgpPT57IGNvbnN0IHRhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7IHRhLnZhbHVlPXR4dDsgdGEuc2V0QXR0cmlidXRlKCdyZWFkb25seScsJycpOyB0YS5zdHlsZS5jc3NUZXh0PSdwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7b3BhY2l0eTowJzsgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0YSk7IHRhLnNlbGVjdCgpOyB0YS5zZXRTZWxlY3Rpb25SYW5nZSgwLHR4dC5sZW5ndGgpOwogICAgbGV0IGRvbmU9ZmFsc2U7IHRyeXsgZG9uZT1kb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpIH1jYXRjaCh4KXt9IHRhLnJlbW92ZSgpOyBkb25lP29rKCk6YmFkKCkgfTsKICB0cnl7CiAgICBpZiAod2luZG93LkNsaXBib2FyZEl0ZW0gJiYgbmF2aWdhdG9yLmNsaXBib2FyZCAmJiBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlKXsKICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZShbbmV3IENsaXBib2FyZEl0ZW0oeyd0ZXh0L3BsYWluJzpuZXcgQmxvYihbdHh0XSx7dHlwZTondGV4dC9wbGFpbid9KSwndGV4dC9odG1sJzpuZXcgQmxvYihbaHRtbF0se3R5cGU6J3RleHQvaHRtbCd9KX0pXSkudGhlbihvaykuY2F0Y2goKCk9PnsKICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0eHQpLnRoZW4ob2spLmNhdGNoKGZhbGxiYWNrKSB9KTsKICAgIH0gZWxzZSBpZiAobmF2aWdhdG9yLmNsaXBib2FyZCAmJiBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCl7IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHR4dCkudGhlbihvaykuY2F0Y2goZmFsbGJhY2spIH0KICAgIGVsc2UgZmFsbGJhY2soKTsKICB9Y2F0Y2goeCl7IGZhbGxiYWNrKCkgfQp9CmZ1bmN0aW9uIHBDYXB0dXJlKCl7IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXBmXScpLmZvckVhY2goZWw9PnBEcmFmdFtlbC5kYXRhc2V0LnBmXT1lbC52YWx1ZSkgfQpmdW5jdGlvbiBleHBMaXN0KCl7IHJldHVybiBEQVRBLmVudHJpZXMuZmlsdGVyKGU9PmUudHlwZT09PSdwdXRlcmknICYmIGRheUtleShlLmRhdGUpPj1leHBGcm9tICYmIGRheUtleShlLmRhdGUpPD1leHBUbykuc29ydCgoYSxiKT0+YS5kYXRlLmxvY2FsZUNvbXBhcmUoYi5kYXRlKSkgfQpjb25zdCBwb3dCbG9ja3MgPSBlID0+IFBPV0VSX0tFWVMubWFwKGs9PnsgY29uc3QgW24sdGldPVBXKGspOyByZXR1cm4gYDxkaXY+PGg0PiR7bn0gwrcgJHt0aX08L2g0PiR7cFJlY2FwKGssZSl9PC9kaXY+YCB9KS5qb2luKCcnKTsKZnVuY3Rpb24gcmVuZGVyRXhwb3J0KCl7CiAgaWYoIWV4cFRvKXsgZXhwVG89dG9kYXlLZXkoKTsgY29uc3QgZj1uZXcgRGF0ZSgpOyBmLnNldERhdGUoZi5nZXREYXRlKCktMzApOyBleHBGcm9tPWRheUtleShmKSB9CiAgY29uc3QgbD1leHBMaXN0KCk7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJ2aWV3Ij4KICAgIDxidXR0b24gY2xhc3M9ImxpbmsiIGRhdGEtYWN0PSJleHBDbG9zZSIgc3R5bGU9ImFsaWduLXNlbGY6ZmxleC1zdGFydCI+JHt0KCdiYWNrJyl9PC9idXR0b24+CiAgICA8ZGl2PjxoMj4ke3QoJ2V4cFRpdGxlJyl9PC9oMj48cCBjbGFzcz0ibGVhZCI+JHt0KCdleHBMZWFkJyl9PC9wPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0iZXhwLXJvdyI+PGxhYmVsIGZvcj0iZXhwRnJvbSI+JHt0KCdmcm9tJyl9PGlucHV0IHR5cGU9ImRhdGUiIGlkPSJleHBGcm9tIiB2YWx1ZT0iJHtleHBGcm9tfSIgbWF4PSIke3RvZGF5S2V5KCl9Ij48L2xhYmVsPjxsYWJlbCBmb3I9ImV4cFRvIj4ke3QoJ3RvJyl9PGlucHV0IHR5cGU9ImRhdGUiIGlkPSJleHBUbyIgdmFsdWU9IiR7ZXhwVG99IiBtYXg9IiR7dG9kYXlLZXkoKX0iPjwvbGFiZWw+PC9kaXY+CiAgICAgIDxwIGNsYXNzPSJub3RlIj4ke3QoJ25QcmFjdCcpKGwubGVuZ3RoKX08L3A+PC9kaXY+CiAgICAke2wubGVuZ3RoP2A8ZGl2IGNsYXNzPSJidG5zIj48YnV0dG9uIGNsYXNzPSJidG4gc29mdCIgZGF0YS1hY3Q9ImV4cENvcHkiPiR7dCgnY29weScpfTwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0biBzb2Z0IiBkYXRhLWFjdD0icFBkZiI+JHt0KCdwZGYnKX08L2J1dHRvbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNhcmQgcHJlY2FwIj4ke2wubWFwKGU9PmA8ZGl2IGNsYXNzPSJleHAtaXRlbSI+PGRpdj48ZGl2IGNsYXNzPSJleWVicm93Ij4ke2VzYyhuZXcgRGF0ZShlLmRhdGUpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2MoKSx7d2Vla2RheTonbG9uZycsZGF5OidudW1lcmljJyxtb250aDonbG9uZycseWVhcjonbnVtZXJpYyd9KSl9PC9kaXY+JHtlLnRlbWE\/YDxzcGFuIGNsYXNzPSJ0YWctdGVtYSI+JHtlc2ModGVtYUxhYmVsKGUudGVtYSkpfTwvc3Bhbj5gOicnfTwvZGl2PiR7cG93QmxvY2tzKGUpfTwvZGl2PmApLmpvaW4oJycpfTwvZGl2PmAKICAgIDpgPGRpdiBjbGFzcz0iZW1wdHkiPiR7aGV4KCdzYW1hbnRhJyw0OCl9PHA+JHt0KCdub1ByYWN0Jyl9PC9wPjwvZGl2PmB9CiAgPC9kaXY+YDsKfQpmdW5jdGlvbiByZW5kZXJQdXRlcmkoKXsKICBpZiAocEV4cG9ydCkgcmV0dXJuIHJlbmRlckV4cG9ydCgpOwogIGlmIChwVmlldyl7CiAgICBjb25zdCBlPURBVEEuZW50cmllcy5maW5kKHg9PnguaWQ9PT1wVmlldyk7IGlmKCFlKXsgcFZpZXc9bnVsbDsgcmV0dXJuIHJlbmRlclB1dGVyaSgpIH0KICAgIGNvbnN0IGRvbmVCdWMgPSBEQVRBLmVudHJpZXMuc29tZSh4PT54LnR5cGU9PT0nYnVjdXJpZScgJiYgeC5kYXRlPmUuZGF0ZSk7CiAgICByZXR1cm4gYDxkaXYgY2xhc3M9InZpZXciPgogICAgICA8ZGl2PjxkaXYgY2xhc3M9ImV5ZWJyb3ciPiR7ZXNjKGZtdERheShkYXlLZXkoZS5kYXRlKSkpfTwvZGl2PjxoMj4ke3QoJ3Bvd1RpdGxlJyl9PC9oMj4ke2UudGVtYT9gPHNwYW4gY2xhc3M9InRhZy10ZW1hIj4ke2VzYyh0ZW1hTGFiZWwoZS50ZW1hKSl9PC9zcGFuPmA6Jyd9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNhcmQgcHJlY2FwIj4ke3Bvd0Jsb2NrcyhlKX08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0idm93Ij4ke2hleCgnc2FtYW50YScsNDQpfSR7dHgoKS52b3dQb3coKS5tYXAocD0+YDxwPiR7cH08L3A+YCkuam9pbignJyl9PHAgY2xhc3M9Imxhc3QiPiR7dHgoKS52b3dQb3dMYXN0fTwvcD48L2Rpdj4KICAgICAgJHticmVhdGhDYXJkKCl9CiAgICAgICR7ZS5wND9gPHAgY2xhc3M9Im5vdGUiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+JHt0KCdpblRvZG8nKX08L3A+YDonJ30KICAgICAgPGRpdiBjbGFzcz0iYnRucyI+PGJ1dHRvbiBjbGFzcz0iYnRuIHNvZnQiIGRhdGEtYWN0PSJwQ29weSIgZGF0YS1pZD0iJHtlLmlkfSI+JHt0KCdjb3B5Jyl9PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuIHNvZnQiIGRhdGEtYWN0PSJwUGRmIj4ke3QoJ3BkZicpfTwvYnV0dG9uPjwvZGl2PgogICAgICAke2RvbmVCdWM\/Jyc6YDxkaXYgY2xhc3M9Im5leHQiPiR7aGV4KCdidWN1cmllJyw0MCl9PGgzPiR7dCgnZG9Kb3lOb3cnKX08L2gzPjxidXR0b24gY2xhc3M9ImJ0biIgZGF0YS1nbz0iYnVjdXJpZSI+JHt0KCdnb0pveScpfTwvYnV0dG9uPjwvZGl2PmB9CiAgICAgICR7c2hhcmVCdG4oZSl9CiAgICAgIDxidXR0b24gY2xhc3M9ImJ0biBnaG9zdCIgZGF0YS1hY3Q9InBOZXciPiR7dCgnbmV3UG93ZXJzJyl9PC9idXR0b24+CiAgICA8L2Rpdj5gOwogIH0KICByZXR1cm4gYDxkaXYgY2xhc3M9InZpZXciPgogICAgPGRpdj48aDI+JHt0KCdwb3dUaXRsZScpfTwvaDI+PHAgY2xhc3M9ImxlYWQiPiR7dCgncG93TGVhZCcpfTwvcD48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNhcmQiPjxzcGFuIGNsYXNzPSJsYWJlbCI+JHt0KCd0aGVtZScpfTwvc3Bhbj4KICAgICAgPGRpdiBjbGFzcz0iY2hpcHMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke3QoJ3RoZW1lQXJpYScpfSI+JHsoKCk9PnsgY29uc3QgYWxsPXRlbWVUb2F0ZSgpOyBsZXQgc2hvdz10ZW1lQWxsP2FsbDphbGwuc2xpY2UoMCw2KTsgaWYocERyYWZ0LnRlbWEmJiFzaG93LmluY2x1ZGVzKHBEcmFmdC50ZW1hKSkgc2hvdz1bLi4uc2hvdyxwRHJhZnQudGVtYV07CiAgICAgICAgcmV0dXJuIHNob3cubWFwKHg9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIiBkYXRhLXRlbWE9IiR7ZXNjKHgpfSIgYXJpYS1wcmVzc2VkPSIke3BEcmFmdC50ZW1hPT09eH0iPiR7ZXNjKHRlbWFMYWJlbCh4KSl9PC9idXR0b24+YCkuam9pbignJykgKyAoYWxsLmxlbmd0aD42P2A8YnV0dG9uIGNsYXNzPSJjaGlwIiBkYXRhLWFjdD0idGVtZUFsbCI+JHt0ZW1lQWxsP3QoJ2Zld2VyJyk6dCgnYWxsVGhlbWVzJykoYWxsLmxlbmd0aCl9PC9idXR0b24+YDonJykgfSkoKX08L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0idGVtYS1yb3ciPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0idGVtYU5vdWEiIG1heGxlbmd0aD0iNDAiIHBsYWNlaG9sZGVyPSIke3QoJ25ld1RoZW1lUGgnKX0iPjxidXR0b24gY2xhc3M9ImJ0biBzb2Z0IiBkYXRhLWFjdD0idGVtYUFkZCI+JHt0KCdhZGQnKX08L2J1dHRvbj48L2Rpdj4KICAgIDwvZGl2PgogICAgPHNwYW4gY2xhc3M9ImxhYmVsIj4ke3QoJ3N0YXJ0Jyl9PC9zcGFuPgogICAgPGRpdiBjbGFzcz0idmFyaWFudHMiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke3QoJ3N0YXJ0Jyl9Ij4ke09iamVjdC5rZXlzKHR4KCkucHYpLm1hcChOdW1iZXIpLm1hcCh2PT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCIgZGF0YS1wdj0iJHt2fSIgYXJpYS1wcmVzc2VkPSIke3BEcmFmdC52PT09dn0iPjxiPiR7dn08L2I+PHNwYW4+JHtQVmsodikubmFtZSgpfTwvc3Bhbj48L2J1dHRvbj5gKS5qb2luKCcnKX08L2Rpdj4KICAgICR7UE9XRVJfS0VZUy5tYXAoaz0+eyBjb25zdCBbbix0aV09UFcoayk7IHJldHVybiBgPGRpdiBjbGFzcz0iY2FyZCBwb3dlciI+PGRpdiBjbGFzcz0iZXllYnJvdyI+PHNwYW4+JHtufTwvc3Bhbj48L2Rpdj48aDM+JHt0aX08L2gzPgogICAgICAke3BGb3JtKGspfQogICAgICAke2s9PT0ncDQnP2A8cCBjbGFzcz0ibm90ZSI+JHt0KCdwNG5vdGUnKX08L3A+YDonJ30KICAgIDwvZGl2PmAgfSkuam9pbignJyl9CiAgICAke3ByaXZDaG9pY2UoJ3B1dGVyaScpfQogICAgPGJ1dHRvbiBjbGFzcz0iYnRuIiBkYXRhLWFjdD0icFNhdmUiPiR7dCgnc2F2ZScpfTwvYnV0dG9uPgogICAgJHtEQVRBLmVudHJpZXMuc29tZSh4PT54LnR5cGU9PT0ncHV0ZXJpJyk\/YDxidXR0b24gY2xhc3M9ImxpbmsiIGRhdGEtYWN0PSJleHBPcGVuIiBzdHlsZT0iYWxpZ24tc2VsZjpjZW50ZXIiPiR7dCgnZXhwb3J0TGluaycpfTwvYnV0dG9uPmA6Jyd9CiAgPC9kaXY+YDsKfQoKLyogLS0tLS0tLS0tLSBHcmF0aXR1ZGUgLyBzdWNjZXNzZXMgLS0tLS0tLS0tLSAqLwpsZXQgcmVjUm93cz1udWxsOwpjb25zdCByZWNQcmUgPSBrID0+IGs9PT0nc3VjY2VzJyA\/IHQoJ3ByZVMnKShHKSA6IHQoJ3ByZUcnKShHKTsKZnVuY3Rpb24gcmVjSW5pdCgpeyBpZighcmVjUm93cykgcmVjUm93cz1be2s6J3JlY3Vub3N0aW50YScsdDonJ31dIH0KZnVuY3Rpb24gcmVjQ2FwdHVyZSgpeyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1ydF0nKS5mb3JFYWNoKGVsPT57IHJlY1Jvd3NbK2VsLmRhdGFzZXQucnRdLnQ9ZWwudmFsdWUgfSkgfQpjb25zdCBzaGFyZU5leHQ9e2J1Y3VyaWU6ZmFsc2UscmVjdW5vc3RpbnRlOmZhbHNlLHB1dGVyaTpmYWxzZX07CmNvbnN0IHByaXZDaG9pY2UgPSBrID0+IGA8ZGl2IGNsYXNzPSJxIj48c3BhbiBjbGFzcz0ibGFiZWwiPiR7dCgnd2hvU2VlcycpfTwvc3Bhbj48ZGl2IGNsYXNzPSJzZWciIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke3QoJ3dob1NlZXMnKX0iPjxidXR0b24gZGF0YS1wcml2PSIke2t9IiBkYXRhLXZhbD0iMCIgYXJpYS1wcmVzc2VkPSIkeyFzaGFyZU5leHRba119Ij4ke3QoJ29ubHlNZScpfTwvYnV0dG9uPjxidXR0b24gZGF0YS1wcml2PSIke2t9IiBkYXRhLXZhbD0iMSIgYXJpYS1wcmVzc2VkPSIke3NoYXJlTmV4dFtrXX0iPiR7dCgnc2hhcmVBbm9uJyl9PC9idXR0b24+PC9kaXY+JHtzaGFyZU5leHRba10\/YDxwIGNsYXNzPSJub3RlIj4ke3QoJ3NoYXJlQWZ0ZXInKX08L3A+YDonJ308L2Rpdj5gOwpmdW5jdGlvbiByZW5kZXJSZWN1bm9zdGludGUoKXsKICByZWNJbml0KCk7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJ2aWV3Ij4KICAgIDxkaXY+PGgyPiR7dCgncmVjVGl0bGUnKX08L2gyPjxwIGNsYXNzPSJsZWFkIj4ke3QoJ3JlY0xlYWQnKX08L3A+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjYXJkIj4ke3JlY1Jvd3MubWFwKChyLGkpPT5gPGRpdiBjbGFzcz0icnJvdyI+CiAgICAgIDxkaXYgY2xhc3M9InRvcCI+PGRpdiBjbGFzcz0ibWluaSIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7dCgncm93VHlwZScpKGkrMSl9Ij4KICAgICAgICA8YnV0dG9uIGRhdGEtcms9InJlY3Vub3N0aW50YSIgZGF0YS1yaT0iJHtpfSIgYXJpYS1wcmVzc2VkPSIke3Iuaz09PSdyZWN1bm9zdGludGEnfSI+JHt0KCdncmF0aXR1ZGUnKX08L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIGRhdGEtcms9InN1Y2NlcyIgZGF0YS1yaT0iJHtpfSIgYXJpYS1wcmVzc2VkPSIke3Iuaz09PSdzdWNjZXMnfSI+JHt0KCdzdWNjZXNzJyl9PC9idXR0b24+PC9kaXY+CiAgICAgICAgJHtyZWNSb3dzLmxlbmd0aD4xP2A8YnV0dG9uIGNsYXNzPSJybSIgZGF0YS1ycm09IiR7aX0iIGFyaWEtbGFiZWw9IiR7dCgnZGVsUm93Jyl9Ij4ke3QoJ3JlbW92ZScpfTwvYnV0dG9uPmA6Jyd9PC9kaXY+CiAgICAgIDxsYWJlbCBjbGFzcz0icmlucHV0ICR7ci5rfSIgZm9yPSJydF8ke2l9Ij48c3BhbiBjbGFzcz0icHJlIj4ke3JlY1ByZShyLmspfTwvc3Bhbj48aW5wdXQgdHlwZT0idGV4dCIgaWQ9InJ0XyR7aX0iIGRhdGEtcnQ9IiR7aX0iIG1heGxlbmd0aD0iMjgwIiBlbnRlcmtleWhpbnQ9Im5leHQiIHZhbHVlPSIke2VzYyhyLnQpfSIgcGxhY2Vob2xkZXI9IiR7ci5rPT09J3N1Y2Nlcyc\/dCgnc3VjY2Vzc1BoJyk6J+KApid9Ij48L2xhYmVsPgogICAgPC9kaXY+YCkuam9pbignJyl9CiAgICA8YnV0dG9uIGNsYXNzPSJsaW5rIiBkYXRhLWFjdD0icmVjQWRkIiBzdHlsZT0iYWxpZ24tc2VsZjpmbGV4LXN0YXJ0Ij4ke3QoJ2FkZFJvdycpfTwvYnV0dG9uPjwvZGl2PgogICAgJHtwcml2Q2hvaWNlKCdyZWN1bm9zdGludGUnKX0KICAgIDxidXR0b24gY2xhc3M9ImJ0biIgZGF0YS1hY3Q9InJlY1NhdmUiPiR7dCgnc2F2ZScpfTwvYnV0dG9uPgogIDwvZGl2PmA7Cn0KbGV0IGJyZWF0aFQ9W107CmZ1bmN0aW9uIGJyZWF0aGUoKXsKICBicmVhdGhULmZvckVhY2goY2xlYXJUaW1lb3V0KTsgYnJlYXRoVD1bXTsKICBjb25zdCBvcmI9JCgnI29yYicpLCBjdWU9JCgnI2N1ZScpLCBjbnQ9JCgnI29yYkNvdW50JyksIGJ0bj0kKCcjYnJlYXRoQnRuJyk7IGlmKCFvcmIpIHJldHVybjsKICBjb25zdCBzdGlsbCA9IG1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICBidG4uaGlkZGVuPXRydWU7IGxldCBtcz0wOwogIGZvcihsZXQgaT0xO2k8PTM7aSsrKXsKICAgIGJyZWF0aFQucHVzaChzZXRUaW1lb3V0KCgpPT57IGN1ZS50ZXh0Q29udGVudD10KCdpbmhhbGUnKTsgY250LnRleHRDb250ZW50PWkrJyAvIDMnOyBvcmIuc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uPSc0cyc7IGlmKCFzdGlsbCkgb3JiLnN0eWxlLnRyYW5zZm9ybT0nc2NhbGUoMSknIH0sbXMpKTsgbXMrPTQwMDA7CiAgICBicmVhdGhULnB1c2goc2V0VGltZW91dCgoKT0+eyBjdWUudGV4dENvbnRlbnQ9dCgnZXhoYWxlJyk7IG9yYi5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb249JzZzJzsgaWYoIXN0aWxsKSBvcmIuc3R5bGUudHJhbnNmb3JtPSdzY2FsZSguNiknIH0sbXMpKTsgbXMrPTYwMDA7CiAgfQogIGJyZWF0aFQucHVzaChzZXRUaW1lb3V0KCgpPT57IGN1ZS50ZXh0Q29udGVudD0gdGFiPT09J3B1dGVyaScgPyB0KCdkb25lQnJlYXRoUCcpIDogdCgnZG9uZUJyZWF0aEonKTsgY250LnRleHRDb250ZW50PScnOyBidG4uaGlkZGVuPWZhbHNlOyBidG4udGV4dENvbnRlbnQ9dCgnYWdhaW4nKSB9LG1zKSk7Cn0KCi8qIC0tLS0tLS0tLS0gVG8gRG8gLS0tLS0tLS0tLSAqLwpsZXQgdG9kb1Nob3dEb25lPWZhbHNlOwpmdW5jdGlvbiBhZGRUb2RvKHRleHQsIHNvdXJjZSwgZnJvbSwgemkpeyBEQVRBLnRvZG9zLnB1c2goe2lkOkRhdGUubm93KCkudG9TdHJpbmcoMzYpK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsNiksIHRleHQsIHNvdXJjZSwgZnJvbTpmcm9tfHxudWxsLCB6aTp6aXx8bnVsbCwgY3JlYXRlZDpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksIGRvbmU6ZmFsc2V9KTsgcGVyc2lzdCgpIH0KLyogcHJvbWlzZXMgZnJvbSBQb3dlciA0IGFyZSBzdG9yZWQgd2l0aG91dCB0aGUgIlRvZGF5IEkgcHJvbWlzZSB0byIgcGFydCwgc28gaXQgZm9sbG93cyB0aGUgY2hvc2VuIGxhbmd1YWdlICovCmNvbnN0IHRvZG9UZXh0ID0geCA9PiB7IGlmKCEoeC5zb3VyY2U9PT0ncHV0ZXJpJyAmJiB4LnppKSkgcmV0dXJuIHgudGV4dDsgY29uc3QgcHJlPXQoJ3RvZG9Qcm9taXNlJykoeC56aSk7IHJldHVybiBsYW5nKCk9PT0nZnInID8gcHJlLnJlcGxhY2UoLyBkZSQvLCcgJykrZGVGcih4LnRleHQpK3gudGV4dCA6IHByZSsnICcreC50ZXh0IH07CmZ1bmN0aW9uIHJlbmRlclRvZG8oKXsKICBjb25zdCBvcGVuPURBVEEudG9kb3MuZmlsdGVyKHg9PiF4LmRvbmUpLnNvcnQoKGEsYik9PmIuY3JlYXRlZC5sb2NhbGVDb21wYXJlKGEuY3JlYXRlZCkpOwogIGNvbnN0IGRvbmU9REFUQS50b2Rvcy5maWx0ZXIoeD0+eC5kb25lKS5zb3J0KChhLGIpPT4oYi5kb25lQXR8fCcnKS5sb2NhbGVDb21wYXJlKGEuZG9uZUF0fHwnJykpOwogIGNvbnN0IGl0ZW09eD0+YDxkaXYgY2xhc3M9InRvZG8gJHt4LmRvbmU\/J2RvbmUnOicnfSI+PGJ1dHRvbiBjbGFzcz0iY2siIGRhdGEtdGRvbmU9IiR7eC5pZH0iIGFyaWEtbGFiZWw9IiR7eC5kb25lP3QoJ21hcmtVbmRvbmUnKTp0KCdtYXJrRG9uZScpfSI+JHt4LmRvbmU\/Jzxzdmcgd2lkdGg9IjE0IiBoZWlnaHQ9IjE0IiB2aWV3Qm94PSIwIDAgMTQgMTQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIuMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJtMyA3LjUgMi41IDIuNUwxMSA0LjUiLz48L3N2Zz4nOicnfTwvYnV0dG9uPgogICAgPGRpdiBjbGFzcz0idHQiPjxiPiR7ZXNjKHRvZG9UZXh0KHgpKX08L2I+PHNwYW4+JHt0KCdzcmMnKVt4LnNvdXJjZV18fCcnfSDCtyAke25ldyBEYXRlKHguY3JlYXRlZCkudG9Mb2NhbGVEYXRlU3RyaW5nKGxvYygpLHtkYXk6J251bWVyaWMnLG1vbnRoOidzaG9ydCd9KX08L3NwYW4+PC9kaXY+CiAgICAke3BlbmRpbmdEZWw9PT14LmlkP2A8c3BhbiBjbGFzcz0iY29uZmlybSI+PGJ1dHRvbiBjbGFzcz0iYnRuIGRhbmdlciIgc3R5bGU9IndpZHRoOmF1dG87cGFkZGluZzo0cHggMTBweCIgZGF0YS10ZGVsLXllcz0iJHt4LmlkfSI+JHt0KCdkZWwnKX08L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJsaW5rIiBkYXRhLWRlbC1ubz4ke3QoJ25vJyl9PC9idXR0b24+PC9zcGFuPmA6YDxidXR0b24gY2xhc3M9ImRlbCIgZGF0YS10ZGVsPSIke3guaWR9IiBhcmlhLWxhYmVsPSIke3QoJ2RlbCcpfSI+w5c8L2J1dHRvbj5gfTwvZGl2PmA7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJ2aWV3Ij4KICAgIDxkaXY+PGgyPiR7dCgndG9kb1RpdGxlJyl9PC9oMj48cCBjbGFzcz0ibGVhZCI+JHt0KCd0b2RvTGVhZCcpfTwvcD48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImFkZHJvdyI+PGlucHV0IHR5cGU9InRleHQiIGlkPSJ0b2RvTmV3IiBtYXhsZW5ndGg9IjI4MCIgZW50ZXJrZXloaW50PSJkb25lIiBwbGFjZWhvbGRlcj0iJHt0KCd0b2RvUGgnKX0iPjxidXR0b24gY2xhc3M9ImJ0biIgZGF0YS1hY3Q9InRvZG9BZGQiPiR7dCgnYWRkJyl9PC9idXR0b24+PC9kaXY+CiAgICAke29wZW4ubGVuZ3RoP29wZW4ubWFwKGl0ZW0pLmpvaW4oJycpOmA8ZGl2IGNsYXNzPSJlbXB0eSI+JHtoZXgoJ3NhbWFudGEnLDQ4KX08cD4ke3QoJ3RvZG9FbXB0eScpfTwvcD48L2Rpdj5gfQogICAgJHtkb25lLmxlbmd0aD9gPGJ1dHRvbiBjbGFzcz0ibGluayIgZGF0YS1hY3Q9InRvZG9Ub2dnbGVEb25lIiBzdHlsZT0iYWxpZ24tc2VsZjpmbGV4LXN0YXJ0Ij4ke3QoJ3Nob3dEb25lJykodG9kb1Nob3dEb25lLGRvbmUubGVuZ3RoKX08L2J1dHRvbj4ke3RvZG9TaG93RG9uZT9kb25lLm1hcChpdGVtKS5qb2luKCcnKTonJ31gOicnfQogIDwvZGl2PmA7Cn0KCi8qIC0tLS0tLS0tLS0gUHJhY3RpY2UgKHRpbWVyKSAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGNoaXBzKG5hbWUsIG9wdHMsIGN1ciwgZm10KXsgcmV0dXJuIGA8ZGl2IGNsYXNzPSJjaGlwcyIgcm9sZT0iZ3JvdXAiPiR7b3B0cy5tYXAodj0+YDxidXR0b24gY2xhc3M9ImNoaXAiIGRhdGEtc2V0PSIke25hbWV9IiBkYXRhLXZhbD0iJHt2fSIgYXJpYS1wcmVzc2VkPSIke3Y9PT1jdXJ9Ij4ke2ZtdCh2KX08L2J1dHRvbj5gKS5qb2luKCcnKX08L2Rpdj5gIH0KY29uc3Qga2luZFNlZyA9IChzLGJ1c3kpID0+IGA8ZGl2IGNsYXNzPSJzZWciIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIke3QoJ2tpbmRBcmlhJyl9Ij4KICAgICAgPGJ1dHRvbiBkYXRhLXNldD0ia2luZCIgZGF0YS12YWw9Im1lZGl0YXRpZSIgYXJpYS1wcmVzc2VkPSIke3Mua2luZD09PSdtZWRpdGF0aWUnfSIgJHtidXN5PydkaXNhYmxlZCc6Jyd9PiR7S0lORC5tZWRpdGF0aWV9PC9idXR0b24+CiAgICAgIDxidXR0b24gZGF0YS1zZXQ9ImtpbmQiIGRhdGEtdmFsPSJ5b2dhIiBhcmlhLXByZXNzZWQ9IiR7cy5raW5kPT09J3lvZ2EnfSIgJHtidXN5PydkaXNhYmxlZCc6Jyd9PiR7S0lORC55b2dhfTwvYnV0dG9uPjwvZGl2PmA7CmZ1bmN0aW9uIHJlbmRlclByYWN0aWNhKCl7CiAgaWYgKHRhYiE9PSd0aW1lcicpIHJldHVybjsKICBjb25zdCBzPURBVEEuc2V0dGluZ3MsIGJ1c3k9WydwcmVwJywncnVuJywncGF1c2VkJ10uaW5jbHVkZXMoVC5waGFzZSk7CiAgaWYgKG1hbnVhbCl7ICQoJyNtYWluJykuaW5uZXJIVE1MPXJlbmRlck1hbnVhbCgpOyByZXR1cm4gfQogIGxldCBodG1sPSc8ZGl2IGNsYXNzPSJ2aWV3Ij4nK2tpbmRTZWcocyxidXN5KStgCiAgICA8ZGl2IGNsYXNzPSJkaWFsIiBpZD0iZGlhbCI+PHN2ZyB2aWV3Qm94PSIwIDAgMjQwIDI0MCI+PGNpcmNsZSBjbGFzcz0idHJhY2siIGN4PSIxMjAiIGN5PSIxMjAiIHI9IjExMCIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSI4Ii8+PGNpcmNsZSBjbGFzcz0icHJvZyIgY3g9IjEyMCIgY3k9IjEyMCIgcj0iMTEwIiBmaWxsPSJub25lIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWRhc2hhcnJheT0iJHsyKk1hdGguUEkqMTEwfSIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAiLz48L3N2Zz4KICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIj48ZGl2IGNsYXNzPSJwaGFzZSI+PC9kaXY+PGRpdiBjbGFzcz0iY2xvY2siPjAwOjAwPC9kaXY+PGRpdiBjbGFzcz0ic3ViIj48L2Rpdj48L2Rpdj48L2Rpdj5gOwogIGlmIChULnBoYXNlPT09J2RvbmUnKXsKICAgIGNvbnN0IGU9REFUQS5lbnRyaWVzLmZpbmQoeD0+eC5pZD09PVQuc2F2ZWRJZCk7CiAgICBodG1sKz1gPGRpdiBjbGFzcz0iY2FyZCBkb25lIj48aDM+JHt0KCdkb25lSCcpfTwvaDM+PHAgY2xhc3M9Im5vdGUiPiR7dCgnZG9uZU5vdGUnKShLSU5EW2UudHlwZV0sZS5taW51dGVzKX08L3A+CiAgICAgIDxsYWJlbCBjbGFzcz0ibGFiZWwiIGZvcj0iZG9uZVRpdGxlIj4ke3QoJ3RpdGxlT3B0Jyl9PC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImRvbmVUaXRsZSIgbWF4bGVuZ3RoPSI4MCIgdmFsdWU9IiR7ZXNjKGUudGl0bGUpfSIgcGxhY2Vob2xkZXI9IiR7dCgncGhNb3JuaW5nJyl9Ij4KICAgICAgPGRpdiBjbGFzcz0iYnRucyI+PGJ1dHRvbiBjbGFzcz0iYnRuIiBkYXRhLWFjdD0ic2F2ZVRpdGxlIj4ke3QoJ3NhdmUnKX08L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4gZ2hvc3QiIGRhdGEtYWN0PSJyZXNldCI+JHt0KCdhbm90aGVyJyl9PC9idXR0b24+PC9kaXY+PC9kaXY+YDsKICB9IGVsc2UgaWYgKFQucGhhc2U9PT0nc3RvcHBlZCcpewogICAgaHRtbCs9IFQuZG9uZU1pbj4wID8gYDxkaXYgY2xhc3M9ImNhcmQiPjxoMz4ke3QoJ3N0b3BwZWRBZnRlcicpKFQuZG9uZU1pbil9PC9oMz48cCBjbGFzcz0ibm90ZSI+JHt0KCd3YW50U2F2ZScpfTwvcD4KICAgICAgPGRpdiBjbGFzcz0iYnRucyI+PGJ1dHRvbiBjbGFzcz0iYnRuIiBkYXRhLWFjdD0ic2F2ZVBhcnRpYWwiPiR7dCgnc2F2ZU1pbicpKFQuZG9uZU1pbil9PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuIGdob3N0IiBkYXRhLWFjdD0icmVzZXQiPiR7dCgnZG9udFNhdmUnKX08L2J1dHRvbj48L2Rpdj48L2Rpdj5gCiAgICAgIDogYDxkaXYgY2xhc3M9ImNhcmQiPjxoMz4ke3QoJ3N0b3BwZWQnKX08L2gzPjxidXR0b24gY2xhc3M9ImJ0biBnaG9zdCIgZGF0YS1hY3Q9InJlc2V0Ij4ke3QoJ2JhY2tQbGFpbicpfTwvYnV0dG9uPjwvZGl2PmA7CiAgfSBlbHNlIGlmIChidXN5KXsKICAgIGh0bWwrPWA8ZGl2IGNsYXNzPSJidG5zIj4ke1QucGhhc2U9PT0ncGF1c2VkJz9gPGJ1dHRvbiBjbGFzcz0iYnRuIiBkYXRhLWFjdD0icmVzdW1lIj4ke3QoJ3Jlc3VtZScpfTwvYnV0dG9uPmA6YDxidXR0b24gY2xhc3M9ImJ0biBzb2Z0IiBkYXRhLWFjdD0icGF1c2UiPiR7dCgncGF1c2UnKX08L2J1dHRvbj5gfTxidXR0b24gY2xhc3M9ImJ0biBnaG9zdCIgZGF0YS1hY3Q9InN0b3AiPiR7dCgnc3RvcCcpfTwvYnV0dG9uPjwvZGl2PgogICAgICA8cCBjbGFzcz0ibm90ZSI+JHt0KCdzY3JlZW5Ob3RlJyl9PC9wPmA7CiAgfSBlbHNlIHsKICAgIGh0bWwrPWA8ZGl2IGNsYXNzPSJjYXJkIj4KICAgICAgJHtzbGlkZXIoJ2R1clInLHQoJ2R1cmF0aW9uJyksMiw2MCwxLHMuZHVyLGR1ckxhYmVsKX0KICAgICAgJHtzbGlkZXIoJ3ByZXBSJyx0KCdwcmVwJyksMCwxODAsNSxzLnByZXAscHJlcExhYmVsLCdwcmVwJyl9CiAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCI+JHt0KCdzb3VuZCcpfTwvc3Bhbj4KICAgICAgPGRpdiBjbGFzcz0icm93Ij4ke2NoaXBzKCdzb3VuZCcsWydjbG9wb3RlbCcsJ2JvbCddLHMuc291bmQsdj0+dj09PSdib2wnP3QoJ2Jvd2wnKTp0KCdiZWxsJykpfTxidXR0b24gY2xhc3M9ImxpbmsiIGRhdGEtYWN0PSJ0ZXN0Ij4ke3QoJ2xpc3RlbicpfTwvYnV0dG9uPjwvZGl2PgogICAgICA8bGFiZWwgY2xhc3M9ImxhYmVsIiBmb3I9InRUaXRsZSI+JHt0KCd0aXRsZUNhcCcpfTwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGlkPSJ0VGl0bGUiIG1heGxlbmd0aD0iODAiIHBsYWNlaG9sZGVyPSIke3QoJ3BoU2lsZW5jZScpfSI+CiAgICA8L2Rpdj4KICAgIDxidXR0b24gY2xhc3M9ImJ0biIgZGF0YS1hY3Q9InN0YXJ0Ij4ke3QoJ2JlZ2luJyl9PC9idXR0b24+CiAgICA8YnV0dG9uIGNsYXNzPSJsaW5rIiBkYXRhLWFjdD0ibWFudWFsIiBzdHlsZT0iYWxpZ24tc2VsZjpjZW50ZXIiPiR7dCgnbWFudWFsTGluaycpfTwvYnV0dG9uPmA7CiAgfQogIGh0bWwrPSc8L2Rpdj4nOwogICQoJyNtYWluJykuaW5uZXJIVE1MPWh0bWw7IHBhaW50RGlhbCgpOwp9CmZ1bmN0aW9uIHJlbmRlck1hbnVhbCgpewogIGNvbnN0IHM9REFUQS5zZXR0aW5nczsKICByZXR1cm4gYDxkaXYgY2xhc3M9InZpZXciPjxkaXY+PGRpdiBjbGFzcz0iZXllYnJvdyI+JHt0KCdub1RpbWVyJyl9PC9kaXY+PGgyPiR7dCgnbG9nUHJhY3QnKX08L2gyPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iY2FyZCI+CiAgICAgICR7a2luZFNlZyhzLGZhbHNlKX0KICAgICAgJHtzbGlkZXIoJ2R1clInLHQoJ2R1cmF0aW9uJyksMiw2MCwxLHMuZHVyLGR1ckxhYmVsKX0KICAgICAgPGxhYmVsIGNsYXNzPSJsYWJlbCIgZm9yPSJtRGF0ZSI+JHt0KCdkYXknKX08L2xhYmVsPjxpbnB1dCB0eXBlPSJkYXRlIiBpZD0ibURhdGUiIHZhbHVlPSIke3RvZGF5S2V5KCl9IiBtYXg9IiR7dG9kYXlLZXkoKX0iPgogICAgICA8bGFiZWwgY2xhc3M9ImxhYmVsIiBmb3I9Im1UaXRsZSI+JHt0KCd0aXRsZUNhcCcpfTwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIGlkPSJtVGl0bGUiIG1heGxlbmd0aD0iODAiIHBsYWNlaG9sZGVyPSIke3QoJ3BoRXZlbmluZycpfSI+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImJ0bnMiPjxidXR0b24gY2xhc3M9ImJ0biIgZGF0YS1hY3Q9InNhdmVNYW51YWwiPiR7dCgnc2F2ZUpvdXJuYWwnKX08L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4gZ2hvc3QiIGRhdGEtYWN0PSJjYW5jZWxNYW51YWwiPiR7dCgnY2FuY2VsJyl9PC9idXR0b24+PC9kaXY+PC9kaXY+YDsKfQoKLyogLS0tLS0tLS0tLSBKb3VybmFsIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gZW50cnlIdG1sKGUsdG0pewogIGNvbnN0IGRlbD1gPGJ1dHRvbiBjbGFzcz0iZGVsIiBhcmlhLWxhYmVsPSIke3QoJ2RlbCcpfSIgZGF0YS1kZWw9IiR7ZS5pZH0iPsOXPC9idXR0b24+YDsKICBpZiAoZS50eXBlPT09J3VuZWx0ZScpIHJldHVybiB1bmVsdGVFbnRyeUh0bWwoZSx0bSxkZWwpOwogIGlmIChlLnR5cGU9PT0ncHV0ZXJpJykgcmV0dXJuIGA8ZGl2IGNsYXNzPSJlbnRyeSBwdXRlcmkgb3BlbiIgZGF0YS1vcGVucHV0PSIke2UuaWR9Ij4ke2hleCgncHV0ZXJpJywzMil9PGRpdiBjbGFzcz0idHh0Ij48Yj4ke2VzYyhlLnAxZXx8ZS5wMWF8fGUucDFifHxLSU5ELnB1dGVyaSl9JHtzaGFyZWRPZihlLmlkKT9gPHNwYW4gY2xhc3M9InNoYXJlZC10YWciPiR7dCgnc2hhcmVkVGFnJyl9PC9zcGFuPmA6Jyd9PC9iPjxzcGFuPiR7S0lORC5wdXRlcml9JHtlLnRlbWE\/JyDCtyAnK2VzYyh0ZW1hTGFiZWwoZS50ZW1hKSk6Jyd9IMK3ICR7dG19PC9zcGFuPjwvZGl2PiR7ZGVsfTwvZGl2PmA7CiAgaWYgKGUudHlwZT09PSdidWN1cmllJykgcmV0dXJuIGA8ZGl2IGNsYXNzPSJlbnRyeSBidWN1cmllIG9wZW4iIGRhdGEtb3BlbmJ1Yz0iJHtlLmlkfSI+JHtoZXgoJ2J1Y3VyaWUnLDMyKX08ZGl2IGNsYXNzPSJ0eHQiPjxiPiR7ZXNjKGUub2JpZWN0aXZ8fEtJTkQuYnVjdXJpZSl9JHtzaGFyZWRPZihlLmlkKT9gPHNwYW4gY2xhc3M9InNoYXJlZC10YWciPiR7dCgnc2hhcmVkVGFnJyl9PC9zcGFuPmA6Jyd9PC9iPjxzcGFuPiR7S0lORC5idWN1cmllfSDCtyAke3RtfTwvc3Bhbj48L2Rpdj4ke2RlbH08L2Rpdj5gOwogIGlmIChlLnR5cGU9PT0ncmVjdW5vc3RpbnRlJyl7CiAgICBjb25zdCBpdD1lLml0ZW1zfHxbXSwgbnI9aXQuZmlsdGVyKHg9Pnguaz09PSdyZWN1bm9zdGludGEnKS5sZW5ndGgsIG5zPWl0Lmxlbmd0aC1ucjsKICAgIHJldHVybiBgPGRpdiBjbGFzcz0iZW50cnkgcmVjdW5vc3RpbnRlIGNvbCI+JHtoZXgoJ3JlY3Vub3N0aW50ZScsMzIpfTxkaXYgY2xhc3M9InR4dCI+PGI+JHt0KCduUmVjJykobnIsbnMpfTwvYj48c3Bhbj4ke3RtfTwvc3Bhbj4KICAgICAgPHVsIGNsYXNzPSJpdGVtcyI+JHtpdC5tYXAoeD0+YDxsaT48c3BhbiBjbGFzcz0idGFnICR7eC5rfSI+JHt4Lms9PT0nc3VjY2VzJz90KCdzdWNjZXNzJyk6dCgnZ3JhdGl0dWRlJyl9PC9zcGFuPjxzcGFuPiR7cmVjUHJlKHguayl9ICR7ZXNjKHgudCl9PC9zcGFuPjwvbGk+YCkuam9pbignJyl9PC91bD4KICAgICAgPGJ1dHRvbiBjbGFzcz0ibGluayIgZGF0YS1zaGFyZT0iJHtlLmlkfSIgc3R5bGU9ImZvbnQtc2l6ZTouODJyZW07bWFyZ2luLXRvcDo2cHgiPiR7c2hhcmVkT2YoZS5pZCk\/dCgnc2hhcmVkQnRuJyk6dCgnc2hhcmVCdG4nKX08L2J1dHRvbj48L2Rpdj4ke2RlbH08L2Rpdj5gOwogIH0KICByZXR1cm4gYDxkaXYgY2xhc3M9ImVudHJ5ICR7ZS50eXBlfSI+JHtoZXgoZS50eXBlLDMyKX08ZGl2IGNsYXNzPSJ0eHQiPjxiPiR7ZXNjKGUudGl0bGV8fEtJTkRbZS50eXBlXSl9PC9iPjxzcGFuPiR7ZS50aXRsZT9LSU5EW2UudHlwZV0rJyDCtyAnOicnfSR7ZS5tYW51YWw\/dCgnbG9nZ2VkJyk6dG19PC9zcGFuPjwvZGl2PiR7ZS5taW51dGVzP2A8ZGl2IGNsYXNzPSJtaW4iPiR7ZS5taW51dGVzfeKAsjwvZGl2PmA6Jyd9JHtkZWx9PC9kaXY+YDsKfQpmdW5jdGlvbiBqU2VnKCl7IHJldHVybiBgPGRpdiBjbGFzcz0ic2VnIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iJHt0KCdzZWdBcmlhJyl9Ij48YnV0dG9uIGRhdGEtanZpZXc9Im1pbmUiIGFyaWEtcHJlc3NlZD0iJHtqVmlldz09PSdtaW5lJ30iPiR7dCgncGVyc29uYWwnKX08L2J1dHRvbj48YnV0dG9uIGRhdGEtanZpZXc9ImNvbW0iIGFyaWEtcHJlc3NlZD0iJHtqVmlldz09PSdjb21tJ30iPiR7dCgnY29tbXVuaXR5Jyl9PC9idXR0b24+PC9kaXY+YCB9CmZ1bmN0aW9uIHJlbmRlckp1cm5hbCgpewogIGlmIChqVmlldz09PSdjb21tJykgcmV0dXJuIHJlbmRlckNvbW0oKTsKICBjb25zdCB0eXBlcz1bJ3RvYXRlJywnbWVkaXRhdGllJywneW9nYScsJ2J1Y3VyaWUnLCdyZWN1bm9zdGludGUnLCdwdXRlcmknLCd1bmVsdGUnXTsKICBjb25zdCBsaXN0PURBVEEuZW50cmllcy5maWx0ZXIoZT0+akZpbHRlcj09PSd0b2F0ZSd8fGUudHlwZT09PWpGaWx0ZXIpLnNvcnQoKGEsYik9PmIuZGF0ZS5sb2NhbGVDb21wYXJlKGEuZGF0ZSkpOwogIGNvbnN0IHRvdE1pbj1saXN0LnJlZHVjZSgoYSxlKT0+YSsoZS5taW51dGVzfHwwKSwwKTsKICBsZXQgaHRtbD1gPGRpdiBjbGFzcz0idmlldyI+JHtqU2VnKCl9PGRpdj48aDI+JHt0KCdqb3VybmFsJyl9PC9oMj48cCBjbGFzcz0ibGVhZCI+JHt0KCduUHJhY3RpY2VzJykobGlzdC5sZW5ndGgpfSR7dG90TWluP3QoJ3RvdE1pbicpKHRvdE1pbik6Jyd9PC9wPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iY2hpcHMiPiR7dHlwZXMubWFwKHg9PmA8YnV0dG9uIGNsYXNzPSJjaGlwIiBkYXRhLWZpbHRlcj0iJHt4fSIgYXJpYS1wcmVzc2VkPSIke3g9PT1qRmlsdGVyfSI+JHt4PT09J3RvYXRlJz90KCdhbGwnKTpLSU5EW3hdfTwvYnV0dG9uPmApLmpvaW4oJycpfTwvZGl2PmA7CiAgaWYgKCFsaXN0Lmxlbmd0aCl7CiAgICBodG1sKz1gPGRpdiBjbGFzcz0iZW1wdHkiPiR7aGV4KCdzYW1hbnRhJyw1Nil9PHA+JHt0KCdqRW1wdHknKX08L3A+PGJ1dHRvbiBjbGFzcz0iYnRuIiBzdHlsZT0ibWF4LXdpZHRoOjI0MHB4IiBkYXRhLWdvPSJwcmFjdGljYSI+JHt0KCdnb1ByYWN0aWNlJyl9PC9idXR0b24+PC9kaXY+YDsKICB9IGVsc2UgewogICAgY29uc3QgZ3JvdXBzPXt9OyBsaXN0LmZvckVhY2goZT0+eyAoZ3JvdXBzW2RheUtleShlLmRhdGUpXT8\/PVtdKS5wdXNoKGUpIH0pOwogICAgT2JqZWN0LmtleXMoZ3JvdXBzKS5mb3JFYWNoKGs9PnsKICAgICAgY29uc3QgbT1ncm91cHNba10ucmVkdWNlKChhLGUpPT5hKyhlLm1pbnV0ZXN8fDApLDApOwogICAgICBodG1sKz1gPGRpdiBjbGFzcz0iZGF5Ij48aDQ+PHNwYW4+JHtlc2MoZm10RGF5KGspKX08L3NwYW4+PHNwYW4+JHttP20rJyAnK3QoJ3VuaXRNaW4nKTonJ308L3NwYW4+PC9oND5gOwogICAgICBncm91cHNba10uZm9yRWFjaChlPT57CiAgICAgICAgY29uc3QgdG09bmV3IERhdGUoZS5kYXRlKS50b0xvY2FsZVRpbWVTdHJpbmcobG9jKCkse2hvdXI6JzItZGlnaXQnLG1pbnV0ZTonMi1kaWdpdCd9KTsKICAgICAgICBodG1sKz0gcGVuZGluZ0RlbD09PWUuaWQKICAgICAgICAgID8gYDxkaXYgY2xhc3M9ImVudHJ5Ij48ZGl2IGNsYXNzPSJjb25maXJtIj48c3Bhbj4ke3QoJ2RlbFEnKX08L3NwYW4+PGJ1dHRvbiBjbGFzcz0iYnRuIGRhbmdlciIgc3R5bGU9IndpZHRoOmF1dG87cGFkZGluZzo2cHggMTJweCIgZGF0YS1kZWwteWVzPSIke2UuaWR9Ij4ke3QoJ2RlbCcpfTwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImxpbmsiIGRhdGEtZGVsLW5vPiR7dCgnbm8nKX08L2J1dHRvbj48L2Rpdj48L2Rpdj5gCiAgICAgICAgICA6IGVudHJ5SHRtbChlLHRtKTsKICAgICAgfSk7CiAgICAgIGh0bWwrPSc8L2Rpdj4nOwogICAgfSk7CiAgfQogIHJldHVybiBodG1sKyc8L2Rpdj4nOwp9CmZ1bmN0aW9uIHJlbmRlckdhdGUoKXsKICByZXR1cm4gYDxkaXYgY2xhc3M9InZpZXciPjxkaXYgY2xhc3M9ImNhcmQgZ2F0ZSI+JHtoZXgoJ3NhbWFudGEnLDU2KX08aDI+JHt0KCdhcHBOYW1lJyl9PC9oMj4KICAgIDxwIGNsYXNzPSJsZWFkIj4ke3QoJ2dhdGVMZWFkJyl9PC9wPgogICAgPGEgY2xhc3M9ImJ0biIgaHJlZj0iJHtlc2MoQ09ORklHLmxvZ2luVXJsKX0iIHRhcmdldD0iX3RvcCIgb25jbGljaz0iZG9jdW1lbnQuY29va2llPSdnc19yZXR1cm49MTtwYXRoPS87bWF4LWFnZT0xODAwO1NhbWVTaXRlPUxheCciIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246bm9uZTttYXgtd2lkdGg6MjgwcHgiPiR7dCgnc2lnbkluJyl9PC9hPgogICAgJHtDT05GSUcucmVnaXN0ZXJVcmw\/YDxhIGNsYXNzPSJsaW5rIiBocmVmPSIke2VzYyhDT05GSUcucmVnaXN0ZXJVcmwpfSIgdGFyZ2V0PSJfdG9wIj4ke3QoJ3JlZ2lzdGVyJyl9PC9hPmA6Jyd9PC9kaXY+PC9kaXY+YDsKfQoKLyogLS0tLS0tLS0tLSBMYW5ndWFnZSBzaGVldCAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIHJlbmRlckxhbmdTaGVldCgpewogIGxldCBzPSQoJyNsYW5nU2hlZXQnKTsgaWYocykgcy5yZW1vdmUoKTsgaWYoIWxhbmdPcGVuKSByZXR1cm47CiAgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgcy5pZD0nbGFuZ1NoZWV0Jzsgcy5jbGFzc05hbWU9J3NoZWV0LWJnJzsKICBzLmlubmVySFRNTD1gPGRpdiBjbGFzcz0ib2JqcGFuZWwgc2hvcnQiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbD0iJHt0KCdsYW5ndWFnZScpfSI+PGRpdiBjbGFzcz0iZ3JhYiI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJ0b3AiPjxoMz4ke3QoJ2xhbmd1YWdlJyl9PC9oMz48YnV0dG9uIGNsYXNzPSJ4IiBkYXRhLWxhbmctY2xvc2UgYXJpYS1sYWJlbD0iJHt0KCdjbG9zZScpfSI+w5c8L2J1dHRvbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImxhbmdsaXN0Ij4ke0xBTkdTLm1hcCgoW2Msbl0pPT57IGNvbnN0IG9rPVJFQURZLmluY2x1ZGVzKGMpOyByZXR1cm4gYDxidXR0b24gZGF0YS1sYW5nPSIke2N9IiBhcmlhLXByZXNzZWQ9IiR7bGFuZygpPT09Y30iICR7b2s\/Jyc6J2Rpc2FibGVkJ30+PHNwYW4+JHtufTwvc3Bhbj4ke29rPyhsYW5nKCk9PT1jPyc8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+4pyTPC9zcGFuPic6JycpOmA8c21hbGw+JHt0KCdzb29uJyl9PC9zbWFsbD5gfTwvYnV0dG9uPmAgfSkuam9pbignJyl9PC9kaXY+PC9kaXY+YDsKICAkKCcuYXBwJykuYXBwZW5kQ2hpbGQocyk7Cn0KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGU9PnsKICBpZiAoZS50YXJnZXQuY2xvc2VzdCgnI2xhbmdCdG4nKSl7IGxhbmdPcGVuPXRydWU7IHJlbmRlckxhbmdTaGVldCgpOyByZXR1cm4gfQogIGNvbnN0IHNoPWUudGFyZ2V0LmNsb3Nlc3QoJyNsYW5nU2hlZXQnKTsgaWYoIXNoKSByZXR1cm47CiAgY29uc3QgYj1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1sYW5nXScpOwogIGlmIChiICYmICFiLmRpc2FibGVkKXsgaWYodGFiPT09J3JlY3Vub3N0aW50ZScmJnJlY1Jvd3MpIHJlY0NhcHR1cmUoKTsgcENhcHR1cmUoKTsgREFUQS5zZXR0aW5ncy5sYW5nPWIuZGF0YXNldC5sYW5nOyBwZXJzaXN0KCk7IGxhbmdPcGVuPWZhbHNlOyByZW5kZXJMYW5nU2hlZXQoKTsgcmVuZGVyKCk7IGlmKHNoYXJlT3BlbikgcmVuZGVyU2hhcmUoKTsgcmV0dXJuIH0KICBpZiAoZS50YXJnZXQ9PT1zaCB8fCBlLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1sYW5nLWNsb3NlXScpKXsgbGFuZ09wZW49ZmFsc2U7IHJlbmRlckxhbmdTaGVldCgpIH0KfSk7CgpmdW5jdGlvbiBjaHJvbWUoKXsKICBjb25zdCBsPWxhbmcoKTsgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lmxhbmc9bDsKICBkb2N1bWVudC50aXRsZT10KCdhcHBOYW1lJyk7ICQoJyNhcHBOYW1lJykudGV4dENvbnRlbnQ9dCgnYXBwTmFtZScpOwogICQoJyNsYW5nQ29kZScpLnRleHRDb250ZW50PShMQU5HUy5maW5kKHg9PnhbMF09PT1sKXx8TEFOR1NbMF0pWzJdOwogICQoJyNsYW5nQnRuJykuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJyx0KCdsYW5ndWFnZScpKTsKICBjb25zdCBibD0kKCcjYmFja0xpbmsnKTsgYmwudGV4dENvbnRlbnQ9dCgnY291cnNlcycpOyBibC5ocmVmPUNPTkZJRy5jb3Vyc2VzVXJsOwogICQoJyNuYXYnKS5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLHQoJ21lbnUnKSk7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnI25hdiBbZGF0YS1pXScpLmZvckVhY2goZWw9PmVsLnRleHRDb250ZW50PXQoZWwuZGF0YXNldC5pKSk7Cn0KZnVuY3Rpb24gcmVuZGVyKCl7CiAgY2hyb21lKCk7CiAgaWYgKENPTkZJRy5sb2dpbkdhdGUgJiYgIWRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdsb2dnZWQtaW4nKSl7ICQoJyNtYWluJykuaW5uZXJIVE1MPXJlbmRlckdhdGUoKTsgJCgnI25hdicpLmhpZGRlbj10cnVlOyByZXR1cm4gfQogIGNvbnN0IG5hdlRhYiA9IFsndGltZXInLCdyZWN1bm9zdGludGUnLCdidWN1cmllJywncHV0ZXJpJ10uaW5jbHVkZXModGFiKT8ncHJhY3RpY2EnOnRhYjsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjbmF2IGJ1dHRvbicpLmZvckVhY2goYj0+eyBpZihiLmRhdGFzZXQudGFiPT09bmF2VGFiKSBiLnNldEF0dHJpYnV0ZSgnYXJpYS1jdXJyZW50JywncGFnZScpOyBlbHNlIGIucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnKSB9KTsKICBicmVhdGhULmZvckVhY2goY2xlYXJUaW1lb3V0KTsgYnJlYXRoVD1bXTsKICBjb25zdCBtPSQoJyNtYWluJyk7CiAgaWYgKHRhYj09PSdhemknKSBtLmlubmVySFRNTD1yZW5kZXJBemkoKTsKICBlbHNlIGlmICh0YWI9PT0nYnVjdXJpZScpIG0uaW5uZXJIVE1MPXJlbmRlckJ1Y3VyaWUoKTsKICBlbHNlIGlmICh0YWI9PT0ncmVjdW5vc3RpbnRlJykgbS5pbm5lckhUTUw9cmVuZGVyUmVjdW5vc3RpbnRlKCk7CiAgZWxzZSBpZiAodGFiPT09J3RvZG8nKSBtLmlubmVySFRNTD1yZW5kZXJUb2RvKCk7CiAgZWxzZSBpZiAodGFiPT09J3B1dGVyaScpIG0uaW5uZXJIVE1MPXJlbmRlclB1dGVyaSgpOwogIGVsc2UgaWYgKHRhYj09PSdqdXJuYWwnKSBtLmlubmVySFRNTD1yZW5kZXJKdXJuYWwoKTsKICBlbHNlIGlmICh0YWI9PT0ncHJhY3RpY2EnKSBtLmlubmVySFRNTD1yZW5kZXJIdWIoKTsKICBlbHNlIGlmICh0YWI9PT0ncHJvZmlsJykgbS5pbm5lckhUTUw9cmVuZGVyUHJvZmlsKCk7CiAgZWxzZSByZW5kZXJQcmFjdGljYSgpOwp9CgovKiA9PT09PT09PT09PT0gQ29tbXVuaXR5ID09PT09PT09PT09PQogICBFYWNoIHBlcnNvbiBjaG9vc2VzIHdoYXQgdG8gc2hhcmUgKGpveSBtZWRpdGF0aW9uLCBncmF0aXR1ZGUvc3VjY2Vzc2VzLCB0aGUgNCBwb3dlcnMpLCB1bmRlciBhIG5hbWUgb2YgdGhlaXIgY2hvaWNlLgogICBBIGNvcHkgb2YgdGhlIHRleHQgaXMgcHVibGlzaGVkLCBub3QgdGhlIGVudHJ5IGl0c2VsZjsgd2l0aGRyYXdpbmcgcmVtb3ZlcyBpdCBmcm9tIHRoZSBjb21tdW5pdHkuCiAgIE9uIHRoZSBzaXRlLCBldmVyeW9uZSdzIHBvc3RzIGNvbWUgZnJvbSB0aGUgc2VydmVyOyBpbiB0aGUgdGVzdCB2ZXJzaW9uIHRoZSBjb21tdW5pdHkgc2hvd3MgYSBmZXcgZXhhbXBsZXMuICovCmNvbnN0IFNIQVJFQUJMRT1bJ2J1Y3VyaWUnLCdyZWN1bm9zdGludGUnLCdwdXRlcmknXTsKbGV0IHNoYXJlT3Blbj1udWxsLCBzaGFyZVNlbD17fSwgbmFtZURyYWZ0PW51bGwsIG9wZW5Qb3N0PXt9Owpjb25zdCBDQz17cG9zdHM6W10sbG9hZGVkOmZhbHNlLGJsb2NrZWQ6ZmFsc2V9Owphc3luYyBmdW5jdGlvbiBhcGlDKHBhdGgsb3B0PXt9KXsKICBjb25zdCByPWF3YWl0IGZldGNoKENPTkZJRy5hcGkucm9vdCsnZ3JhZGluYS92MS8nK3BhdGgse2NyZWRlbnRpYWxzOidzYW1lLW9yaWdpbicsbWV0aG9kOm9wdC5tZXRob2R8fCdHRVQnLGhlYWRlcnM6eydDb250ZW50LVR5cGUnOidhcHBsaWNhdGlvbi9qc29uJywnWC1XUC1Ob25jZSc6Q09ORklHLmFwaS5ub25jZX0sYm9keTpvcHQuYm9keT9KU09OLnN0cmluZ2lmeShvcHQuYm9keSk6dW5kZWZpbmVkfSk7CiAgbGV0IGo9bnVsbDsgdHJ5eyBqPWF3YWl0IHIuanNvbigpIH1jYXRjaCh4KXt9CiAgaWYoIXIub2speyBjb25zdCBlcnJzPXQoJ2VycicpOyB0aHJvdyBuZXcgRXJyb3IoKGomJmouY29kZSYmZXJyc1tqLmNvZGVdKXx8dCgnYXBpRmFpbCcpKSB9CiAgcmV0dXJuIGo7Cn0KYXN5bmMgZnVuY3Rpb24gY29tbUxvYWQoKXsKICBpZighQ09ORklHLmFwaSkgcmV0dXJuOwogIHRyeXsgY29uc3Qgaj1hd2FpdCBhcGlDKCdjb21tdW5pdHknKTsgQ0MucG9zdHM9ai5wb3N0c3x8W107IENDLmJsb2NrZWQ9ISFqLmJsb2NrZWQ7IENDLmxvYWRlZD10cnVlOwogICAgaWYoai5uYW1lICYmIGoubmFtZSE9PURBVEEuY29tbS5uYW1lKXsgREFUQS5jb21tLm5hbWU9ai5uYW1lIH0KICAgIGNvbnN0IG1pbmU9ai5taW5lfHxbXTsgY29uc3QgYmVmb3JlPURBVEEuY29tbS5wb3N0cy5sZW5ndGg7IERBVEEuY29tbS5wb3N0cz1EQVRBLmNvbW0ucG9zdHMuZmlsdGVyKHg9Pm1pbmUuaW5jbHVkZXMoeC5pZCkpOyBpZihiZWZvcmUhPT1EQVRBLmNvbW0ucG9zdHMubGVuZ3RoKSBwZXJzaXN0KCk7CiAgICBpZih0YWI9PT0nYXppJ3x8dGFiPT09J2p1cm5hbCcpIHJlbmRlcigpOwogIH1jYXRjaChlKXt9Cn0KYXN5bmMgZnVuY3Rpb24gc2V0TmFtZSh2KXsKICB2PVN0cmluZyh2fHwnJykudHJpbSgpOyBpZih2Lmxlbmd0aDwyKXsgdG9hc3QodCgnbmFtZVNob3J0JykpOyByZXR1cm4gZmFsc2UgfQogIGlmKENPTkZJRy5hcGkpeyB0cnl7IGNvbnN0IGo9YXdhaXQgYXBpQygnY29tbXVuaXR5L25hbWUnLHttZXRob2Q6J1BPU1QnLGJvZHk6e25hbWU6dn19KTsgdj1qLm5hbWUgfWNhdGNoKGUpeyB0b2FzdChlLm1lc3NhZ2UpOyByZXR1cm4gZmFsc2UgfSB9CiAgREFUQS5jb21tLm5hbWU9djsgREFUQS5jb21tLnBvc3RzLmZvckVhY2gocD0+cC5uYW1lPXYpOyBDQy5wb3N0cy5mb3JFYWNoKHA9PnsgaWYocC5taW5lKSBwLm5hbWU9diB9KTsgcGVyc2lzdCgpOyByZXR1cm4gdHJ1ZTsKfQpjb25zdCBzaGFyZWRPZiA9IGlkID0+IERBVEEuY29tbS5wb3N0cy5maW5kKHA9PnAuZnJvbT09PWlkKTsKLyogY29tbXVuaXR5IGxhbmd1YWdlOiBvbmx5IHRoZSBwb3N0cyB3cml0dGVuIGluIG15IGxhbmd1YWdlLCBvciBhbGwgbGFuZ3VhZ2VzIChwb3N0cyBmcm9tIGJlZm9yZSB0aGlzIG9wdGlvbiBjb3VudCBhcyBFbmdsaXNoKSAqLwpjb25zdCBjb21tQWxsTGFuZ3MgPSAoKSA9PiBEQVRBLnNldHRpbmdzLmNvbW1MYW5nPT09J2FsbCc7CmNvbnN0IHBvc3RMYW5nID0gcCA9PiBwLmxhbmcgfHwgJ2VuJzsKY29uc3QgY29tbVBvc3RzQWxsID0gKCkgPT4gQ09ORklHLmFwaSA\/IENDLnBvc3RzLmZpbHRlcihwPT4hREFUQS5jb21tLmhpZGRlbltwLmlkXSkKICA6IFsuLi5EQVRBLmNvbW0ucG9zdHMubWFwKHA9Pih7Li4ucCxtaW5lOnRydWV9KSksIC4uLk9iamVjdC52YWx1ZXMoREVNT19MKS5mbGF0KCldLmZpbHRlcihwPT4hREFUQS5jb21tLmhpZGRlbltwLmlkXSkuc29ydCgoYSxiKT0+Yi5kYXRlLmxvY2FsZUNvbXBhcmUoYS5kYXRlKSk7CmNvbnN0IGNvbW1Qb3N0cyA9ICgpID0+IGNvbW1BbGxMYW5ncygpID8gY29tbVBvc3RzQWxsKCkgOiBjb21tUG9zdHNBbGwoKS5maWx0ZXIocD0+cC5taW5lIHx8IHBvc3RMYW5nKHApPT09bGFuZygpKTsKY29uc3QgYXNHZW4gPSAoZyxmbikgPT4geyBjb25zdCBrPURBVEEuc2V0dGluZ3MuZ2VuOyBEQVRBLnNldHRpbmdzLmdlbj1nfHwnZic7IHRyeXsgcmV0dXJuIGZuKCkgfSBmaW5hbGx5IHsgREFUQS5zZXR0aW5ncy5nZW49ayB9IH07CmNvbnN0IGluaXRpYWwgPSBuID0+IGVzYygoU3RyaW5nKG58fCc\/JykudHJpbSgpWzBdfHwnPycpLnRvVXBwZXJDYXNlKCkpOwpjb25zdCByZWFjdE9mID0gdHlwZSA9PiB0eXBlPT09J3B1dGVyaScgPyB7bGFiZWw6dCgncmVhY3RQb3cnKSxjb3VudDp0KCdjb3VudFBvdycpLHRvYXN0OnQoJ3RvYXN0UG93Jyl9IDoge2xhYmVsOnQoJ3JlYWN0Sm95JyksY291bnQ6dCgnY291bnRKb3knKSx0b2FzdDp0KCd0b2FzdEpveScpfTsKZnVuY3Rpb24gc25hcHNob3QoZSwgc2VsKXsKICBjb25zdCBiYXNlPXtmcm9tOmUuaWQsdHlwZTplLnR5cGUsZGF0ZTplLmRhdGUsZ2VuOkRBVEEuc2V0dGluZ3MuZ2VufHwnZicsbGFuZzpsYW5nKCl9OwogIGlmKGUudHlwZT09PSdwdXRlcmknKSByZXR1cm4gey4uLmJhc2UsIHY6ZS52LCB6aTplLnppLCB0ZW1hOmUudGVtYXx8JycsIHAxYTplLnAxYSxwMWI6ZS5wMWIscDFlOmUucDFlLHAyOmUucDIscDM6ZS5wMyxwNDplLnA0fTsKICBpZihlLnR5cGU9PT0nYnVjdXJpZScpeyBjb25zdCBxPXt9OyBRX0tFWVMuZm9yRWFjaChrPT57IGlmKHNlbFtrXSYmZVtrXSkgcVtrXT1lW2tdIH0pOyByZXR1cm4gey4uLmJhc2UscX0gfQogIHJldHVybiB7Li4uYmFzZSwgaXRlbXM6KGUuaXRlbXN8fFtdKS5maWx0ZXIoKHgsaSk9PnNlbFtpXSl9Owp9CmZ1bmN0aW9uIHBvc3RCb2R5KHApewogIGlmKHAudHlwZT09PSdyZWN1bm9zdGludGUnKSByZXR1cm4gYXNHZW4ocC5nZW4sKCk9PmA8ZGl2IGNsYXNzPSJib2R5Ij4keyhwLml0ZW1zfHxbXSkubWFwKHg9PmA8cD48c3BhbiBjbGFzcz0idGFnICR7eC5rfSIgc3R5bGU9ImZvbnQtc2l6ZTouNjZyZW07bGV0dGVyLXNwYWNpbmc6LjA2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjoke3guaz09PSdzdWNjZXMnPyd2YXIoLS1zb2lsKSc6J3ZhcigtLW1vc3MpJ30iPiR7eC5rPT09J3N1Y2Nlcyc\/dCgnc3VjY2VzcycpOnQoJ2dyYXRpdHVkZScpfTwvc3Bhbj48YnI+JHtyZWNQcmUoeC5rKX0gJHtlc2MoeC50KX08L3A+YCkuam9pbignJyl9PC9kaXY+YCk7CiAgaWYocC50eXBlPT09J2J1Y3VyaWUnKXsgY29uc3QgUT10eCgpLnFKb3k7IHJldHVybiBgPGRpdiBjbGFzcz0iYm9keSI+JHtRX0tFWVMuZmlsdGVyKGs9PnAucSYmcC5xW2tdKS5tYXAoaz0+YDxkaXYgY2xhc3M9InFsIj4ke1Fba119PC9kaXY+PHA+JHtlc2MocC5xW2tdKX08L3A+YCkuam9pbignJyl9PC9kaXY+YCB9CiAgY29uc3QgZnVsbD0hIW9wZW5Qb3N0W3AuaWRdOwogIHJldHVybiBhc0dlbihwLmdlbiwoKT0+YDxkaXYgY2xhc3M9ImJvZHkiPiR7cC50ZW1hP2A8c3BhbiBjbGFzcz0idGFnLXRlbWEiPiR7ZXNjKHRlbWFMYWJlbChwLnRlbWEpKX08L3NwYW4+IGA6Jyd9PGRpdiBjbGFzcz0icWwiPiR7UFZrKHAudikubmFtZSgpfTwvZGl2PgogICAgJHsoZnVsbD9QT1dFUl9LRVlTOlBPV0VSX0tFWVMuc2xpY2UoMCwxKSkubWFwKGs9PnsgY29uc3QgW24sdGldPVBXKGspOyByZXR1cm4gYDxoND4ke259IMK3ICR7dGl9PC9oND4ke3BSZWNhcChrLHApfWAgfSkuam9pbignJyl9PC9kaXY+CiAgICA8YnV0dG9uIGNsYXNzPSJtb3JlIiBkYXRhLW1vcmU9IiR7cC5pZH0iPiR7ZnVsbD90KCdzaG93TGVzcycpOnQoJ3JlYWRGdWxsJyl9PC9idXR0b24+YCk7Cn0KZnVuY3Rpb24gcG9zdEh0bWwocCl7CiAgY29uc3Qgcj1yZWFjdE9mKHAudHlwZSksIG9uPUNPTkZJRy5hcGk\/ISFwLnJlYWN0ZWQ6ISFEQVRBLmNvbW0ucmVhY3RlZFtwLmlkXSwgbj1DT05GSUcuYXBpPyhwLnJlYWN0c3x8MCk6KHAucmVhY3RzfHwwKSsob24\/MTowKTsKICBjb25zdCBkdD1uZXcgRGF0ZShwLmRhdGUpLnRvTG9jYWxlRGF0ZVN0cmluZyhsb2MoKSx7ZGF5OidudW1lcmljJyxtb250aDonbG9uZyd9KTsKICByZXR1cm4gYDxhcnRpY2xlIGNsYXNzPSJwb3N0Ij48ZGl2IGNsYXNzPSJ3aG8iPjxzcGFuIGNsYXNzPSJhdiAke3AubWluZT8nbWUnOicnfSIgYXJpYS1oaWRkZW49InRydWUiPiR7aW5pdGlhbChwLm5hbWUpfTwvc3Bhbj48ZGl2PjxiPiR7ZXNjKHAubmFtZSl9JHtwLm1pbmU\/YCA8c3BhbiBjbGFzcz0ic2hhcmVkLXRhZyI+JHt0KCd5b3UnKX08L3NwYW4+YDonJ308L2I+PHNwYW4+JHtkdH08L3NwYW4+PC9kaXY+PHNwYW4gY2xhc3M9ImtpbmQiPiR7cG9zdExhbmcocCkhPT1sYW5nKCk\/YDxzcGFuIGNsYXNzPSJsYW5nLXRhZyI+JHtwb3N0TGFuZyhwKS50b1VwcGVyQ2FzZSgpfTwvc3Bhbj4gYDonJ30ke0tJTkRbcC50eXBlXX08L3NwYW4+PC9kaXY+CiAgICAke3Bvc3RCb2R5KHApfQogICAgJHtwLnR5cGU9PT0ncHV0ZXJpJyYmb24mJiFwLm1pbmU\/YDxwIGNsYXNzPSJiYW5uZXIiIHN0eWxlPSJtYXJnaW46MCI+JHt0KCdnZXN0Tm90ZScpfTwvcD5gOicnfQogICAgPGRpdiBjbGFzcz0iYWN0cyI+JHtwLm1pbmU\/YDxzcGFuIGNsYXNzPSJjb3VudCI+JHtuP24rJyAnK3IuY291bnQ6dCgnbm9ib2R5WWV0Jyl9PC9zcGFuPjxidXR0b24gY2xhc3M9ImRvdHMiIGRhdGEtdW5zaGFyZT0iJHtwLmlkfSI+JHt0KCd3aXRoZHJhdycpfTwvYnV0dG9uPmAKICAgICAgOmA8YnV0dG9uIGNsYXNzPSJyZWFjdCIgZGF0YS1yZWFjdD0iJHtwLmlkfSIgYXJpYS1wcmVzc2VkPSIke29ufSI+JHtvbj8n4pyTICc6J+KZoSAnfSR7ci5sYWJlbH08L2J1dHRvbj48c3BhbiBjbGFzcz0iY291bnQiPiR7bj9uKycgJytyLmNvdW50OicnfTwvc3Bhbj48YnV0dG9uIGNsYXNzPSJkb3RzIiBkYXRhLXJlcG9ydD0iJHtwLmlkfSI+JHt0KCdyZXBvcnQnKX08L2J1dHRvbj5gfTwvZGl2PjwvYXJ0aWNsZT5gOwp9CmZ1bmN0aW9uIHJlbmRlckNvbW0oKXsKICBjb25zdCB0eXBlcz1bJ3RvYXRlJywuLi5TSEFSRUFCTEVdOwogIGNvbnN0IGxpc3Q9Y29tbVBvc3RzKCkuZmlsdGVyKHA9PmNGaWx0ZXI9PT0ndG9hdGUnfHxwLnR5cGU9PT1jRmlsdGVyKTsKICByZXR1cm4gYDxkaXYgY2xhc3M9InZpZXciPjxidXR0b24gY2xhc3M9ImxpbmsiIGRhdGEtZ289ImF6aSIgc3R5bGU9ImFsaWduLXNlbGY6ZmxleC1zdGFydCI+JHt0KCdiYWNrJyl9PC9idXR0b24+JHtqU2VnKCl9CiAgICA8ZGl2PjxoMj4ke3QoJ2NvbW1UaXRsZScpfTwvaDI+PHAgY2xhc3M9ImxlYWQiPiR7dCgnY29tbUxlYWQnKX08L3A+PC9kaXY+CiAgICAke0NPTkZJRy5hcGk\/Jyc6YDxkaXYgY2xhc3M9ImJhbm5lciI+JHt0KCdjb21tVGVzdEJhbm5lcicpfTwvZGl2PmB9CiAgICA8ZGl2IGNsYXNzPSJjaGlwcyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiR7dCgnbGFuZ3VhZ2UnKX0iPjxidXR0b24gY2xhc3M9ImNoaXAiIGRhdGEtY2xhbmc9Im1pbmUiIGFyaWEtcHJlc3NlZD0iJHshY29tbUFsbExhbmdzKCl9Ij4ke3QoJ2xhbmdPbmx5Jyl9PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iY2hpcCIgZGF0YS1jbGFuZz0iYWxsIiBhcmlhLXByZXNzZWQ9IiR7Y29tbUFsbExhbmdzKCl9Ij4ke3QoJ2xhbmdBbGwnKX08L2J1dHRvbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNoaXBzIj4ke3R5cGVzLm1hcCh4PT5gPGJ1dHRvbiBjbGFzcz0iY2hpcCIgZGF0YS1jZmlsdGVyPSIke3h9IiBhcmlhLXByZXNzZWQ9IiR7eD09PWNGaWx0ZXJ9Ij4ke3g9PT0ndG9hdGUnP3QoJ2FsbCcpOktJTkRbeF19PC9idXR0b24+YCkuam9pbignJyl9PC9kaXY+CiAgICAke0RBVEEuY29tbS5uYW1lP2A8cCBjbGFzcz0ibm90ZSI+JHt0KCdhcHBlYXJJbicpKGVzYyhEQVRBLmNvbW0ubmFtZSkpfSDCtyA8YnV0dG9uIGNsYXNzPSJsaW5rIiBkYXRhLWFjdD0ibmFtZUVkaXQiPiR7dCgnY2hhbmdlJyl9PC9idXR0b24+PC9wPmA6Jyd9CiAgICAke2xpc3QubGVuZ3RoP2xpc3QubWFwKHBvc3RIdG1sKS5qb2luKCcnKTpgPGRpdiBjbGFzcz0iZW1wdHkiPiR7aGV4KCdzYW1hbnRhJyw0OCl9PHA+JHtjb21tQWxsTGFuZ3MoKT90KCdjb21tRW1wdHknKTp0KCdjb21tRW1wdHlMYW5nJyl9PC9wPiR7Y29tbUFsbExhbmdzKCk\/Jyc6YDxidXR0b24gY2xhc3M9ImJ0biBzb2Z0IiBkYXRhLWNsYW5nPSJhbGwiIHN0eWxlPSJtYXgtd2lkdGg6MjYwcHgiPiR7dCgnbGFuZ0FsbCcpfTwvYnV0dG9uPmB9PC9kaXY+YH0KICA8L2Rpdj5gOwp9CmZ1bmN0aW9uIGluc3BvQ2FyZCgpewogIGNvbnN0IHA9Y29tbVBvc3RzKCkuZmluZCh4PT4heC5taW5lKTsgaWYoIXApIHJldHVybiAnJzsKICBsZXQgdHh0PScnOwogIGlmKHAudHlwZT09PSdyZWN1bm9zdGludGUnKSB0eHQ9YXNHZW4ocC5nZW4sKCk9PihwLml0ZW1zfHxbXSlbMF0\/cmVjUHJlKHAuaXRlbXNbMF0uaykrJyAnK3AuaXRlbXNbMF0udDonJyk7CiAgZWxzZSBpZihwLnR5cGU9PT0nYnVjdXJpZScpIHR4dD0ocC5xJiYocC5xLnNlbWludGV8fHAucS5vYmllY3RpdikpfHwnJzsKICBlbHNlIHR4dD0ocC50ZW1hP3RlbWFMYWJlbChwLnRlbWEpKyc6ICc6JycpKyhwLnAxZXx8cC5wMWF8fHAucDFifHwnJyk7CiAgaWYodHh0Lmxlbmd0aD4xNDApIHR4dD10eHQuc2xpY2UoMCwxMzcpLnRyaW0oKSsn4oCmJzsKICByZXR1cm4gYDxidXR0b24gY2xhc3M9Imluc3BvIiBkYXRhLWdvPSJqdXJuYWwiIGRhdGEtanY9ImNvbW0iPjxzcGFuIGNsYXNzPSJleWVicm93Ij4ke3QoJ2luc3BvSGVhZCcpKGVzYyhwLm5hbWUpKX08L3NwYW4+PHA+JHtlc2ModHh0KX08L3A+PHNwYW4+JHt0KCdpbnNwb01vcmUnKX08L3NwYW4+PC9idXR0b24+YDsKfQpmdW5jdGlvbiBzaGFyZUJ0bihlKXsKICBpZighU0hBUkVBQkxFLmluY2x1ZGVzKGUudHlwZSkpIHJldHVybiAnJzsKICByZXR1cm4gc2hhcmVkT2YoZS5pZCk\/YDxidXR0b24gY2xhc3M9ImJ0biBnaG9zdCIgZGF0YS1zaGFyZT0iJHtlLmlkfSI+JHt0KCdzaGFyZWRCdG4nKX08L2J1dHRvbj5gOmA8YnV0dG9uIGNsYXNzPSJidG4gc29mdCIgZGF0YS1zaGFyZT0iJHtlLmlkfSI+JHt0KCdzaGFyZUJ0bicpfTwvYnV0dG9uPmA7Cn0KZnVuY3Rpb24gb3BlblNoYXJlKGlkKXsKICBjb25zdCBlPURBVEEuZW50cmllcy5maW5kKHg9PnguaWQ9PT1pZCk7IGlmKCFlKSByZXR1cm47CiAgc2hhcmVPcGVuPWlkOyBuYW1lRHJhZnQ9bnVsbDsgc2hhcmVTZWw9e307CiAgaWYoZS50eXBlPT09J2J1Y3VyaWUnKSBRX0tFWVMuZm9yRWFjaChrPT57IHNoYXJlU2VsW2tdPSBrIT09J2FqdXRvcicgJiYgISFlW2tdIH0pOwogIGlmKGUudHlwZT09PSdyZWN1bm9zdGludGUnKSAoZS5pdGVtc3x8W10pLmZvckVhY2goKHgsaSk9PnNoYXJlU2VsW2ldPXRydWUpOwogIHJlbmRlclNoYXJlKCk7Cn0KZnVuY3Rpb24gcmVuZGVyU2hhcmUoKXsKICBsZXQgcz0kKCcjc2hhcmVTaGVldCcpOyBpZihzKSBzLnJlbW92ZSgpOyBpZighc2hhcmVPcGVuKSByZXR1cm47CiAgaWYoc2hhcmVPcGVuPT09J19fbmFtZScpewogICAgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgcy5pZD0nc2hhcmVTaGVldCc7IHMuY2xhc3NOYW1lPSdzaGVldC1iZyc7CiAgICBzLmlubmVySFRNTD1gPGRpdiBjbGFzcz0ib2JqcGFuZWwgc2hvcnQiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbD0iJHt0KCduYW1lTGFiZWwnKX0iPjxkaXYgY2xhc3M9ImdyYWIiPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJ0b3AiPjxoMz4ke3QoJ25hbWVMYWJlbCcpfTwvaDM+PGJ1dHRvbiBjbGFzcz0ieCIgZGF0YS1zaGFyZS1jbG9zZSBhcmlhLWxhYmVsPSIke3QoJ2Nsb3NlJyl9Ij7DlzwvYnV0dG9uPjwvZGl2PgogICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImNvbW1OYW1lIiBtYXhsZW5ndGg9IjMwIiB2YWx1ZT0iJHtlc2MobmFtZURyYWZ0Pz8nJyl9IiBwbGFjZWhvbGRlcj0iJHt0KCduYW1lUGgnKX0iPgogICAgICA8cCBjbGFzcz0ibm90ZSI+JHt0KCduYW1lU2hlZXROb3RlJyl9PC9wPgogICAgICA8YnV0dG9uIGNsYXNzPSJidG4iIGRhdGEtYWN0PSJuYW1lU2F2ZSI+JHt0KCdzYXZlJyl9PC9idXR0b24+PC9kaXY+YDsKICAgICQoJy5hcHAnKS5hcHBlbmRDaGlsZChzKTsgcmV0dXJuOwogIH0KICBjb25zdCBlPURBVEEuZW50cmllcy5maW5kKHg9PnguaWQ9PT1zaGFyZU9wZW4pOyBpZighZSl7IHNoYXJlT3Blbj1udWxsOyByZXR1cm4gfQogIGNvbnN0IHNoPXNoYXJlZE9mKGUuaWQpLCBuZWVkTmFtZT0hREFUQS5jb21tLm5hbWV8fG5hbWVEcmFmdCE9PW51bGw7CiAgbGV0IHBpY2s9Jyc7CiAgaWYoZS50eXBlPT09J2J1Y3VyaWUnKXsgY29uc3QgUT10eCgpLnFKb3k7IHBpY2s9UV9LRVlTLmZpbHRlcihrPT5lW2tdKS5tYXAoaz0+YDxsYWJlbCBjbGFzcz0iY2hrIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGRhdGEtc2VsPSIke2t9IiAke3NoYXJlU2VsW2tdPydjaGVja2VkJzonJ30+PHNwYW4+PHNwYW4gY2xhc3M9InFsIj4ke1Fba119PC9zcGFuPiR7ZXNjKGVba10pfTwvc3Bhbj48L2xhYmVsPmApLmpvaW4oJycpIH0KICBpZihlLnR5cGU9PT0ncmVjdW5vc3RpbnRlJykgcGljaz0oZS5pdGVtc3x8W10pLm1hcCgoeCxpKT0+YDxsYWJlbCBjbGFzcz0iY2hrIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGRhdGEtc2VsPSIke2l9IiAke3NoYXJlU2VsW2ldPydjaGVja2VkJzonJ30+PHNwYW4+JHtyZWNQcmUoeC5rKX0gJHtlc2MoeC50KX08L3NwYW4+PC9sYWJlbD5gKS5qb2luKCcnKTsKICBpZihlLnR5cGU9PT0ncHV0ZXJpJykgcGljaz1gPGRpdiBjbGFzcz0icG9zdCIgc3R5bGU9ImJvcmRlcjowO3BhZGRpbmc6MCI+JHtwb3N0Qm9keSh7Li4uc25hcHNob3QoZSx7fSksaWQ6J3ByZXZpZXcnfSl9PC9kaXY+YDsKICBzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBzLmlkPSdzaGFyZVNoZWV0Jzsgcy5jbGFzc05hbWU9J3NoZWV0LWJnJzsKICBzLmlubmVySFRNTD1gPGRpdiBjbGFzcz0ib2JqcGFuZWwiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbD0iJHt0KCdzaGFyZUJ0bicpfSI+PGRpdiBjbGFzcz0iZ3JhYiI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJ0b3AiPjxoMz4ke3NoP3QoJ3NoZWV0U2hhcmVkJyk6dCgnc2hhcmVCdG4nKX08L2gzPjxidXR0b24gY2xhc3M9IngiIGRhdGEtc2hhcmUtY2xvc2UgYXJpYS1sYWJlbD0iJHt0KCdjbG9zZScpfSI+w5c8L2J1dHRvbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InNoYXJlYm94Ij4KICAgICR7Q0MuYmxvY2tlZCYmIXNoP2A8cCBjbGFzcz0iYmFubmVyIj4ke3QoJ2Jsb2NrZWROb3RlJyl9PC9wPmA6Jyd9CiAgICAke3NoP2A8cCBjbGFzcz0ibm90ZSI+JHt0KCdzaGVldFNoYXJlZE5vdGUnKShlc2MoREFUQS5jb21tLm5hbWV8fHNoLm5hbWV8fCcnKSl9PC9wPmAKICAgIDpgJHtuZWVkTmFtZT9gPGRpdiBjbGFzcz0icSI+PGxhYmVsIGZvcj0iY29tbU5hbWUiPiR7dCgnbmFtZUxhYmVsJyl9PC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImNvbW1OYW1lIiBtYXhsZW5ndGg9IjMwIiB2YWx1ZT0iJHtlc2MobmFtZURyYWZ0Pz9EQVRBLmNvbW0ubmFtZT8\/JycpfSIgcGxhY2Vob2xkZXI9IiR7dCgnbmFtZVBoJyl9Ij48cCBjbGFzcz0ibm90ZSI+JHt0KCduYW1lTm90ZScpfTwvcD48L2Rpdj5gCiAgICAgIDpgPGRpdiBjbGFzcz0ibmFtZWJveCI+PHNwYW4gY2xhc3M9ImF2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+JHtpbml0aWFsKERBVEEuY29tbS5uYW1lKX08L3NwYW4+PHNwYW4gc3R5bGU9ImZsZXg6MSI+JHt0KCdhcHBlYXJzQXMnKShlc2MoREFUQS5jb21tLm5hbWUpKX08L3NwYW4+PGJ1dHRvbiBjbGFzcz0ibGluayIgZGF0YS1hY3Q9Im5hbWVFZGl0Ij4ke3QoJ2NoYW5nZScpfTwvYnV0dG9uPjwvZGl2PmB9CiAgICAgIDxwIGNsYXNzPSJsYWJlbCI+JHtlLnR5cGU9PT0ncHV0ZXJpJz90KCdvdGhlcnNSZWFkJyk6dCgnY2hvb3NlU2hhcmUnKX08L3A+CiAgICAgIDxkaXY+JHtwaWNrfTwvZGl2PgogICAgICA8cCBjbGFzcz0ibm90ZSI+JHt0KCdwcml2YWN5Tm90ZScpfTwvcD5gfQogICAgPC9kaXY+CiAgICAke3NoP2A8YnV0dG9uIGNsYXNzPSJidG4gZGFuZ2VyIiBkYXRhLXVuc2hhcmU9IiR7c2guaWR9Ij4ke3QoJ3dpdGhkcmF3QnRuJyl9PC9idXR0b24+YDpgPGJ1dHRvbiBjbGFzcz0iYnRuIiBkYXRhLWFjdD0ic2hhcmVQdWJsaXNoIj4ke3QoJ3NoYXJlRG8nKX08L2J1dHRvbj5gfQogIDwvZGl2PmA7CiAgJCgnLmFwcCcpLmFwcGVuZENoaWxkKHMpOwp9CmxldCBwdWJsaXNoaW5nPWZhbHNlOwphc3luYyBmdW5jdGlvbiBwdWJsaXNoU2hhcmUoKXsKICBpZihwdWJsaXNoaW5nKSByZXR1cm47CiAgcHVibGlzaGluZz10cnVlOyBjb25zdCBwYj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjc2hhcmVTaGVldCBbZGF0YS1hY3Q9InNoYXJlUHVibGlzaCJdJyk7IGlmKHBiKXsgcGIuZGlzYWJsZWQ9dHJ1ZTsgcGIuc3R5bGUub3BhY2l0eT0nLjYnIH0KICB0cnl7IGF3YWl0IHB1Ymxpc2hTaGFyZU5vdygpIH0gZmluYWxseSB7IHB1Ymxpc2hpbmc9ZmFsc2U7IGNvbnN0IGI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3NoYXJlU2hlZXQgW2RhdGEtYWN0PSJzaGFyZVB1Ymxpc2giXScpOyBpZihiKXsgYi5kaXNhYmxlZD1mYWxzZTsgYi5zdHlsZS5vcGFjaXR5PScnIH0gfQp9CmFzeW5jIGZ1bmN0aW9uIHB1Ymxpc2hTaGFyZU5vdygpewogIGNvbnN0IGU9REFUQS5lbnRyaWVzLmZpbmQoeD0+eC5pZD09PXNoYXJlT3Blbik7IGlmKCFlKSByZXR1cm47CiAgY29uc3Qgc25hcD1zbmFwc2hvdChlLHNoYXJlU2VsKTsKICBpZihlLnR5cGU9PT0nYnVjdXJpZScmJiFPYmplY3Qua2V5cyhzbmFwLnEpLmxlbmd0aCB8fCBlLnR5cGU9PT0ncmVjdW5vc3RpbnRlJyYmIXNuYXAuaXRlbXMubGVuZ3RoKXsgdG9hc3QodCgnY2hvb3NlT25lJykpOyByZXR1cm4gfQogIGNvbnN0IG5pPSQoJyNjb21tTmFtZScpOyBpZihuaSl7IGlmKCEoYXdhaXQgc2V0TmFtZShuaS52YWx1ZSkpKXsgbmkuZm9jdXMoKTsgcmV0dXJuIH0gbmFtZURyYWZ0PW51bGwgfQogIGlmKENPTkZJRy5hcGkpewogICAgY29uc3Qge2Zyb20sdHlwZSxkYXRlLGdlbixsYW5nOnBsLC4uLmRhdGF9PXNuYXA7CiAgICB0cnl7IGNvbnN0IGo9YXdhaXQgYXBpQygnY29tbXVuaXR5Jyx7bWV0aG9kOidQT1NUJyxib2R5Ontmcm9tLHR5cGUsZGF0ZSxnZW4sbGFuZzpwbCxkYXRhfX0pOyBpZighREFUQS5jb21tLnBvc3RzLnNvbWUoeD0+eC5pZD09PWouaWQpKSBEQVRBLmNvbW0ucG9zdHMucHVzaCh7aWQ6ai5pZCxmcm9tLHR5cGUsZGF0ZX0pOyBpZighQ0MucG9zdHMuc29tZSh4PT54LmlkPT09ai5pZCkpIENDLnBvc3RzLnVuc2hpZnQoaikgfQogICAgY2F0Y2goZXJyKXsgdG9hc3QoZXJyLm1lc3NhZ2UpOyByZXR1cm4gfQogIH0gZWxzZSBEQVRBLmNvbW0ucG9zdHMucHVzaCh7Li4uc25hcCxpZDoncCcrRGF0ZS5ub3coKS50b1N0cmluZygzNiksbmFtZTpEQVRBLmNvbW0ubmFtZSxzaGFyZWQ6bmV3IERhdGUoKS50b0lTT1N0cmluZygpLHJlYWN0czowfSk7CiAgcGVyc2lzdCgpOyBzaGFyZU9wZW49bnVsbDsgcmVuZGVyU2hhcmUoKTsgcmVuZGVyKCk7IHRvYXN0KHQoJ3NoYXJlZFRvYXN0JykpOwp9CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxlPT57CiAgY29uc3Qgc2g9ZS50YXJnZXQuY2xvc2VzdCgnI3NoYXJlU2hlZXQnKTsKICBjb25zdCBvcD1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1zaGFyZV0nKTsgaWYob3ApeyBvcGVuU2hhcmUob3AuZGF0YXNldC5zaGFyZSk7IHJldHVybiB9CiAgY29uc3QgdW49ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtdW5zaGFyZV0nKTsgaWYodW4peyBjb25zdCBpZD11bi5kYXRhc2V0LnVuc2hhcmU7CiAgICAoYXN5bmMoKT0+eyBpZihDT05GSUcuYXBpKXsgdHJ5eyBhd2FpdCBhcGlDKCdjb21tdW5pdHkvJytpZCx7bWV0aG9kOidERUxFVEUnfSkgfWNhdGNoKGVycil7IHRvYXN0KGVyci5tZXNzYWdlKTsgcmV0dXJuIH0gQ0MucG9zdHM9Q0MucG9zdHMuZmlsdGVyKHA9PnAuaWQhPT1pZCkgfQogICAgICBEQVRBLmNvbW0ucG9zdHM9REFUQS5jb21tLnBvc3RzLmZpbHRlcihwPT5wLmlkIT09aWQpOyBwZXJzaXN0KCk7IHNoYXJlT3Blbj1udWxsOyByZW5kZXJTaGFyZSgpOyByZW5kZXIoKTsgdG9hc3QodCgnd2l0aGRyYXduJykpIH0pKCk7IHJldHVybiB9CiAgaWYoIXNoKSByZXR1cm47CiAgaWYoZS50YXJnZXQ9PT1zaHx8ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtc2hhcmUtY2xvc2VdJykpeyBzaGFyZU9wZW49bnVsbDsgcmVuZGVyU2hhcmUoKTsgcmV0dXJuIH0KICBjb25zdCBhPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWFjdF0nKTsgaWYoIWEpIHJldHVybjsKICBpZihhLmRhdGFzZXQuYWN0PT09J3NoYXJlUHVibGlzaCcpIHB1Ymxpc2hTaGFyZSgpOwogIGlmKGEuZGF0YXNldC5hY3Q9PT0nbmFtZVNhdmUnKXsgKGFzeW5jKCk9PnsgaWYoIShhd2FpdCBzZXROYW1lKCQoJyNjb21tTmFtZScpLnZhbHVlKSkpIHJldHVybjsgbmFtZURyYWZ0PW51bGw7IHNoYXJlT3Blbj1udWxsOyByZW5kZXJTaGFyZSgpOyByZW5kZXIoKTsgdG9hc3QodCgnbmFtZVNhdmVkJykpIH0pKCkgfQogIGlmKGEuZGF0YXNldC5hY3Q9PT0nbmFtZUVkaXQnKXsgbmFtZURyYWZ0PURBVEEuY29tbS5uYW1lfHwnJzsgcmVuZGVyU2hhcmUoKTsgY29uc3QgaT0kKCcjY29tbU5hbWUnKTsgaSYmaS5mb2N1cygpIH0KfSk7CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsZT0+eyBjb25zdCBjPWUudGFyZ2V0LmNsb3Nlc3QmJmUudGFyZ2V0LmNsb3Nlc3QoJyNzaGFyZVNoZWV0IFtkYXRhLXNlbF0nKTsgaWYoYykgc2hhcmVTZWxbYy5kYXRhc2V0LnNlbF09Yy5jaGVja2VkIH0pOwpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsZT0+eyBpZihlLnRhcmdldC5pZD09PSdjb21tTmFtZScpIG5hbWVEcmFmdD1lLnRhcmdldC52YWx1ZSB9KTsKCi8qID09PT09PT09PT09PSBUb29scyBvZiB0aGUgZGF5LCBQcmFjdGljZSBodWIsIFByb2ZpbGUsIEludHJvLCBBYm91dCwgMTAgUG9zaXRpdmUgS2FybWFzID09PT09PT09PT09PSAqLwpjb25zdCBYVCA9IHt9OwpYVC5lbiA9IHsKICB1aTp7IG5hdkpvdXJuYWw6J0pvdXJuYWwnLCBuYXZQcm9maWxlOidQcm9maWxlJywKICAgIHRvZG9MZWFkOidXaGF0IEkgcHJvbWlzZWQgdG8gZG8uIFRoZSBjb21taXRtZW50cyBJIGhhdmUgbWFkZS4nLAogICAgdVRpdGxlOidZb3VyIHRvb2xzIGZvciB0b2RheScsIHVMb2NrZWQ6J0V2ZXJ5IGRheSB5b3UgY2FuIGRpc2NvdmVyIDIgb2YgdGhlIDIwIHRvb2xzOiBUaGUgNCBTdGVwcywgVGhlIDQgUG93ZXJzLCBUaGUgNCBMYXdzIG9mIFNlZWRzLCBUaGUgNCBGbG93ZXJzIGFuZCBUaGUgNCBQcmlvcml0aWVzLicsCiAgICB1TG9ja01zZzonWW91IG5lZWQgYW4gYWN0aXZlIHN1YnNjcmlwdGlvbiB0byB1c2UgdGhlIHRvb2xzLicsIHVTZWVTdWJzOidTZWUgdGhlIHN1YnNjcmlwdGlvbnMnLAogICAgdURyYXdOb3RlOidUYXAgYW5kIGRpc2NvdmVyIHRoZSAyIHRvb2xzIHlvdSBhcmUgd29ya2luZyB3aXRoIHRvZGF5LicsIHVEcmF3OiJEaXNjb3ZlciB0b2RheSdzIHRvb2xzIiwKICAgIHVROidIb3cgZG8gSSB1c2UgdGhpcyBjb21iaW5hdGlvbiBvZiB0b29scyB0b2RheT8nLCB1UGg6J1dyaXRlIGZvciB5b3Vyc2VsZi4gSXQgc3RheXMgb25seSBpbiB5b3VyIGpvdXJuYWwuJywKICAgIHVTYXZlOidTYXZlIHRvIGpvdXJuYWwnLCB1VXBkYXRlOidVcGRhdGUgaW4gam91cm5hbCcsIHVBZ2FpbjonQ2hvb3NlIGEgbmV3IGNvbWJpbmF0aW9uIG9mIHRvb2xzJywgdVNhdmVkOidTYXZlZCB0byB5b3VyIGpvdXJuYWwnLAogICAgdVNpbU9uOidUZXN0IHZlcnNpb246IHNpbXVsYXRlIGFuIGFjdGl2ZSBzdWJzY3JpcHRpb24nLCB1U2ltT2ZmOidUZXN0IHZlcnNpb246IHNpbXVsYXRlIG5vIHN1YnNjcmlwdGlvbicsCiAgICBodWJUaXRsZTonV2hhdCBhcmUgeW91IHByYWN0aXNpbmcgbm93PycsIGh1YkxlYWQ6J0Nob29zZSB0aGUgcHJhY3RpY2UuIEV2ZXJ5dGhpbmcgeW91IGRvIGdvZXMgaW50byB5b3VyIGpvdXJuYWwuJywgaHViQnVzeTonQSBwcmFjdGljZSBpcyBpbiBwcm9ncmVzcyDCtyBiYWNrIHRvIHRoZSB0aW1lcicsCiAgICBteVByb2ZpbGU6J015IHByb2ZpbGUnLCBjaGFuZ2VOYW1lOidDaGFuZ2UgbmFtZScsIHBpY2tOYW1lOidDaG9vc2UgYSBuYW1lIGZvciB0aGUgY29tbXVuaXR5JywKICAgIHN0UHJhY3Q6J3ByYWN0aWNlcycsIHN0TWluOidtaW51dGVzJywgc3RUb2RvOidUbyBEb3MgZG9uZScsIGF2YXRhcjonTXkgYXZhdGFyJywgYWRkcmVzczonSG93IEkgYWRkcmVzcyB5b3UnLAogICAgaW50cm86J0ludHJvZHVjdGlvbicsIGFib3V0OidBYm91dCB0aGUgYXBwJywga2FybWE6J1RoZSAxMCBQb3NpdGl2ZSBLYXJtYXMnLCBrYXJtYVN1YjonVGhlIGluc3BpcmF0aW9uIGJlaGluZCB0aGUgYXBwJywgY29udGFjdDonQ29udGFjdCcsCiAgICBwcm9mQmFubmVyOidUZXN0IHZlcnNpb24uIEluIHRoZSBwaG9uZSBhcHAgeW91IHdpbGwgYWxzbyBmaW5kIGhlcmU6IHJlbWluZGVycyAodXAgdG8gNiBhIGRheSksIGNoYW5naW5nIHlvdXIgZW1haWwsIGRlbGV0aW5nIHlvdXIgZGF0YSwgZGVsZXRpbmcgeW91ciBhY2NvdW50LCB0aGUgcHJpdmFjeSBwb2xpY3kgYW5kIHRoZSB0ZXJtcy4nLAogICAgb3ZQcmV2OidCYWNrJywgb3ZOZXh0OidOZXh0Jywgb3ZTdGFydDonQmVnaW4nLCBieURvbWFpbjonR1JPVVBFRCBCWSBBUkVBJywKICAgIGthcm1hTGVhZDonVGhlIGluc3BpcmF0aW9uIGJlaGluZCB0aGUgYXBwLiBZb3UgY2FuIHVzZSB0aGVtIGluIHRoZSBwcmFjdGljZSBvZiB0aGUgNCBwb3dlcnMgYW5kIGluIHRoZSBqb3kgbWVkaXRhdGlvbi4nIH0sCiAga2luZFU6J1Rvb2xzIG9mIHRoZSBkYXknLAogIHNldHM6ewogICAgcGFzaTp7Im5hbWUiOiAiVGhlIDQgU3RlcHMiLCAidW5pdCI6ICJTdGVwIiwgInN1YiI6ICJ0byB3YXRlciB0aGUgc2VlZHMgZm9yIHlvdXIgZ29hbCIsICJpdGVtcyI6IFt7InQiOiAiU2F5IHdoYXQgeW91IHdhbnQgaW4geW91ciBsaWZlIGluIG9uZSBzaG9ydCBzZW50ZW5jZSwiLCAiYWRkIjogImluIHRoZSBhZmZpcm1hdGl2ZSBhbmQgaW4gdGhlIHByZXNlbnQgdGVuc2UuIn0sIHsidCI6ICJQbGFuIHdobyB5b3Ugd2lsbCBoZWxwIHRvIGdldCB0aGUgc2FtZSB0aGluZyBhbmQgd2hlcmUgeW91IHdpbGwgaW52aXRlIHRoYXQgcGVyc29uIGZvciBhIHRhbGsuIiwgImFkZCI6ICJUaGV5IGJlY29tZSB5b3VyIGthcm1pYyBwYXJ0bmVyLiJ9LCB7InQiOiAiQWN0dWFsbHkgaGVscCB0aGF0IHBlcnNvbi4iLCAiYWRkIjogIkZvciBleGFtcGxlLCBvbmUgaG91ciBhIHdlZWssIG92ZXIgYSBjb2ZmZWUuIn0sICJEbyB0aGUgSm95IE1lZGl0YXRpb246IGFzIHlvdSBnbyB0byBzbGVlcCwgdGhpbmsgd2l0aCBqb3kgYWJvdXQgdGhlIGdvb2QgdGhpbmdzIHlvdSBkbyBmb3Igb3RoZXJzLiJdfSwKICAgIHB1dGVyaTp7Im5hbWUiOiAiVGhlIDQgUG93ZXJzIiwgInVuaXQiOiAiUG93ZXIiLCAic3ViIjogInRvIGRlYWN0aXZhdGUgdGhlIG5lZ2F0aXZlIHNlZWRzIHBsYW50ZWQgaW4gdGhlIHBhc3QiLCAiaXRlbXMiOiBbeyJoIjogIlJlbWVtYmVyaW5nIHRoZSBwZW4iLCAiZXgiOiAiQWxsIHRoaW5ncyBjb21lIGZyb20gc2VlZHMgcGxhbnRlZCBpbiB0aGUgcGFzdC4gUmVtZW1iZXIgd2hpY2ggc2VlZHMgeW91IHBsYW50ZWQgaW4gdGhlIHBhc3QgdGhhdCBoYXZlIG5vdyBncm93bi4ifSwgeyJoIjogIkludGVsbGlnZW50IHJlZ3JldCIsICJleCI6ICJCZWNvbWUgYXdhcmUgb2YgdGhlIGJlbmVmaXRzIHlvdSBoYWQgd2hlbiB5b3UgcGxhbnRlZCB0aGUgc2VlZCBhbmQgbWFrZSBhIGZpcm0gZGVjaXNpb24gdG8gZGVhY3RpdmF0ZSBpdCBiZWZvcmUgaXQgbXVsdGlwbGllcyBldmVuIG1vcmUuIn0sIHsiaCI6ICJSZXN0cmFpbnQiLCAiZXgiOiAiUHJvbWlzZSBub3QgdG8gbWFrZSB0aGUgc2FtZSBtaXN0YWtlIGFnYWluIGZvciBhIHNldCBwZXJpb2Qgb2YgdGltZS4ifSwgeyJoIjogIlRoZSBhbnRpZG90ZSIsICJleCI6ICJEbyBzb21ldGhpbmcgcG9zaXRpdmUgdG8gYmFsYW5jZSB0aGUgbmVnYXRpdmUgc2VlZHMuIn1dfSwKICAgIGxlZ2k6eyJuYW1lIjogIlRoZSA0IExhd3Mgb2YgU2VlZHMiLCAidW5pdCI6ICJMYXciLCAic3ViIjogInRoZSBsYXdzIGJ5IHdoaWNoIHNlZWRzIHdvcmsiLCAiaXRlbXMiOiBbeyJoIjogIllvdSBnZXQgd2hhdCB5b3UgZ2l2ZSIsICJleCI6ICJZb3UgcmVhcCB3aGF0IHlvdSBzb3c6IGlmIHlvdSBwbGFudCB3YXRlcm1lbG9uIHNlZWRzLCB5b3Ugd2lsbCBnZXQgYSB3YXRlcm1lbG9uLiIsICJhZGQiOiAiVGhlIGxhdyB3b3JrcyBib3RoIHdheXM6IGdvb2QgYnJpbmdzIGdvb2QsIGFuZCBhIG5lZ2F0aXZlIGFjdGlvbiBicmluZ3Mgc29tZXRoaW5nIG5lZ2F0aXZlLiJ9LCB7ImgiOiAiU2VlZHMgZ3JvdyIsICJleCI6ICJXaGF0IHlvdSBnZXQgYmFjayBpcyBhbHdheXMgbXVjaCwgbXVjaCBiaWdnZXIgdGhhbiB3aGF0IHlvdSBkaWQuIiwgImFkZCI6ICJCb3RoIHRoZSBnb29kIG9uZXMgYW5kIHRoZSBuZWdhdGl2ZSBvbmVzLiJ9LCB7ImgiOiAiSWYgeW91IGRvIG5vdGhpbmcsIG5vdGhpbmcgaGFwcGVucyIsICJleCI6ICJJZiB5b3UgZG8gbm90aGluZywgeW91IHdpbGwgZ2V0IG5vdGhpbmcgYmFjay4iLCAiYWRkIjogIkp1c3QgaG9waW5nIG9yIHdhaXRpbmcgZG9lcyBub3QgcGxhbnQgYW55IHNlZWQuIn0sIHsiaCI6ICJXaGF0IHlvdSBwbGFudGVkIGhhcyB0byBzcHJvdXQiLCAiZXgiOiAiSWYgeW91IGRvIHNvbWV0aGluZywgdGhlbiB5b3UgbXVzdCBnZXQgc29tZXRoaW5nIGJhY2suIiwgImFkZCI6ICJTZWVkcyBkbyBub3QgZGlzYXBwZWFyLCBuZWl0aGVyIHRoZSBnb29kIG9uZXMgbm9yIHRoZSBuZWdhdGl2ZSBvbmVzLiBUaGV5IHNwcm91dCBhdCBzb21lIHBvaW50LiJ9XX0sCiAgICBmbG9yaTp7Im5hbWUiOiAiVGhlIDQgRmxvd2VycyIsICJ1bml0IjogIkZsb3dlciIsICJzdWIiOiAidGhlIHdheSBzZWVkcyBiZWFyIGZydWl0IiwgIml0ZW1zIjogW3siaCI6ICJZb3UgZ2V0IGV4YWN0bHkgd2hhdCB5b3UgZ2l2ZS4iLCAiYWRkIjogIldob2V2ZXIgc293cyBsb3ZlIHJlYXBzIGxvdmUuIn0sIHsiaCI6ICJFdmVyeSBhY3Rpb24gY3JlYXRlcyBhIGhhYml0LiIsICJhZGQiOiAiRXZlbiB0aGUgdGhvdWdodHMgdGhhdCBjb21lIHRvIHlvdSDigJx3aXRob3V0IHdhbnRpbmcgdGhlbeKAnSBhcmUgaGFiaXRzIGNyZWF0ZWQgYnkgd2hhdCB5b3UgZGlkIGJlZm9yZS4gV2hhdCB5b3UgcmVwZWF0IHRvZGF5IGNvbWVzIG1vcmUgZWFzaWx5IHRvbW9ycm93LiJ9LCB7ImgiOiAiV2hhdCB5b3UgZG8gY3JlYXRlcyB0aGUgcGVvcGxlIGFuZCB0aGUgZW52aXJvbm1lbnQgYXJvdW5kIHlvdS4iLCAiYWRkIjogIldoZW4geW91IGFwcHJlY2lhdGUgb3RoZXJzIGFuZCBicmluZyB0aGVtIHRvZ2V0aGVyLCB5b3UgZW5kIHVwIHN1cnJvdW5kZWQgYnkgcGVvcGxlIHdobyBnZXQgYWxvbmcgd2VsbC4gV2hlbiB5b3UgZGl2aWRlLCB5b3Ugd2lsbCBzZWUgcGVvcGxlIHF1YXJyZWxsaW5nLiJ9LCB7ImgiOiAiV2hhdCB5b3UgZG8gY3JlYXRlcyB0aGUgd29ybGQgeW91IHdpbGwgc3RlcCBpbnRvLiIsICJhZGQiOiAiV2hhdCB5b3UgcGxhbnQgdG9kYXkgcHJlcGFyZXMgdGhlIHdvcmxkIHlvdSB3aWxsIGFycml2ZSBpbiB0b21vcnJvdy4gV2hlbiB5b3UgY2hhbmdlIHdoYXQgeW91IGRvLCB5b3VyIHdvcmxkIGNoYW5nZXMgdG9vLiJ9XX0sCiAgICBwcmlvcml0YXRpOnsgbmFtZTonVGhlIDQgUHJpb3JpdGllcycsIHVuaXQ6J1ByaW9yaXR5Jywgc3ViOid0aGUgb3JkZXIgaW4gd2hpY2ggc2VlZHMgYmVhciBmcnVpdCcsIGl0ZW1zOlsKICAgICAgeyBoOidGaXJzdCBpbiwgZmlyc3Qgb3V0LicsIGV4OidBIHNlZWQgcGxhbnRlZCBiZWZvcmUgYW5vdGhlciB3aWxsIHNwcm91dCBiZWZvcmUgdGhlIHNlY29uZCBvbmUuIElmIHlvdSBoZWxwIG9uZSBmcmllbmQgYmUgbW9yZSBjcmVhdGl2ZSBhdCB3b3JrIG9uIE1vbmRheSBhbmQgdGhlbiBoZWxwIGFub3RoZXIgZnJpZW5kIGJlIG1vcmUgY3JlYXRpdmUgb24gVHVlc2RheSwgdGhlIE1vbmRheSBzZWVkIHdpbGwgb3BlbiBmaXJzdC4nIH0sCiAgICAgIHsgaDonV2hlbiB5b3UgaGF2ZSBhIGhhYml0LCB0aGUgc2VlZCBiZWFycyBmcnVpdCBhaGVhZCBvZiBwcmlvcml0eSAxLicsIGV4OidJZiB5b3UgaGVscGVkIHRoZSBUdWVzZGF5IGZyaWVuZCByZWd1bGFybHksIGFzIGEgaGFiaXQsIHRoZSBzZWVkIHBsYW50ZWQgd2l0aCB0aGVtIHdpbGwgb3BlbiBiZWZvcmUgdGhlIHNlZWQgcGxhbnRlZCB3aXRoIHRoZSBNb25kYXkgZnJpZW5kLicgfSwKICAgICAgeyBoOidXaGVuIHlvdSBoZWxwIHNvbWVvbmUgd2hvIGlzIGFib3V0IHRvIGdvIHRocm91Z2ggYSBtYWpvciBwZXJzb25hbCBjaGFuZ2UsIHRoZSBzZWVkIGJlYXJzIGZydWl0IGFoZWFkIG9mIHByaW9yaXR5IDIuJywgZXg6J0lmIHlvdSBoZWxwZWQgeWV0IGFub3RoZXIgZnJpZW5kIGJlIG1vcmUgY3JlYXRpdmUgb24gV2VkbmVzZGF5LCBhbmQgb24gVGh1cnNkYXkgYSBtYWpvciBjaGFuZ2Ugd2FzIGFib3V0IHRvIGhhcHBlbiBpbiB0aGVpciBsaWZlLCBzZWVkcyBwbGFudGVkIHZlcnkgY2xvc2UgdG8gYSBtYWpvciBldmVudCByaXBlbiBiZWZvcmUgdGhvc2UgcGxhbnRlZCBlYXJsaWVyLicgfSwKICAgICAgeyBoOidXaGVuIHlvdSBoZWxwIHNvbWVvbmUgd2hvIGlzIGRlZGljYXRlZCB0byBhIHB1cnBvc2UgdGhhdCBzZXJ2ZXMgbWFueSBwZW9wbGUsIHRoZSBzZWVkIGJlYXJzIGZydWl0IGFoZWFkIG9mIHByaW9yaXR5IDMuJywgZXg6J0lmIHRoZSBmcmllbmQgeW91IGhlbHBlZCBvbiBUdWVzZGF5IHdhcyB0cnlpbmcgdG8gZmluZCBhIGNyZWF0aXZlIHdheSB0byBjdXJlIGNhbmNlciwgd2hpbGUgdGhlIGZyaWVuZHMgeW91IGhlbHBlZCBvbiBNb25kYXkgYW5kIFdlZG5lc2RheSB3ZXJlIHRyeWluZyB0byBmaW5kIGEgbW9yZSBjcmVhdGl2ZSB3YXkgdG8gZG8gdGhlaXIgbWFrZS11cCwgdGhlIFR1ZXNkYXkgc2VlZHMgdGFrZSB0aGUgbGVhZCBhbmQgb3BlbiBmaXJzdC4nIH0gXSB9CiAgfSwKICBpbnRybzpbCiAgICBbJ1dlbGNvbWUgdG8gdGhlIEdvb2QgU2VlZHMgYXBwJywnRXZlcnl0aGluZyB5b3UgZXhwZXJpZW5jZSBjb21lcyBmcm9tIHRoZSBzZWVkcyB5b3UgaGF2ZSBwbGFudGVkIHRocm91Z2ggeW91ciB0aG91Z2h0cywgd29yZHMgYW5kIGFjdGlvbnMuIFRoZSBhcHAgaGVscHMgeW91IHNlZSB3aGF0IHlvdSBwbGFudCBldmVyeSBkYXkgYW5kIGNvbnNjaW91c2x5IGNob29zZSB0aGUgc2VlZHMgZm9yIHRoZSBsaWZlIHlvdSB3YW50LiddLAogICAgWydZb3VyIHByYWN0aWNlcycsJ01lZGl0YXRpb24gYW5kIHlvZ2Egd2l0aCBhIHRpbWVyLCBncmF0aXR1ZGUgYW5kIHN1Y2Nlc3NlcywgdGhlIGpveSBtZWRpdGF0aW9uIGFuZCB0aGUgNCBwb3dlcnMuIFlvdSB3aWxsIGZpbmQgdGhlbSBhbGwgdW5kZXIgdGhlIGJ1dHRvbiBpbiB0aGUgbWlkZGxlLCBhbmQgZXZlcnl0aGluZyB5b3UgZG8gZ29lcyBpbnRvIHlvdXIgam91cm5hbC4nXSwKICAgIFsnVG9vbHMgb2YgdGhlIGRheScsJ0ZpbmQgYSBjcmVhdGl2ZSB3YXkgdG8gdXNlIHRoZSAyIHRvb2xzIGZvciB5b3VyIGdvYWwuJ10sCiAgICBbJ0tlZXAgeW91ciBjb21taXRtZW50IScsJ1doYXQgeW91IHdyaXRlIHVuZGVyIOKAnHdobyBJIGhlbHDigJ0gYW5kIGluIHRoZSA0dGggcG93ZXIgZ29lcyBpbnRvIHlvdXIgVG8gRG8gbGlzdC4gVGljayBpdCBvZmYgb25jZSB5b3UgaGF2ZSBkb25lIGl0OiB0aGUgZ29vZCBzZWVkcyBncm93LCBhbmQgdGhlIG5lZ2F0aXZlIG9uZXMgYXJlIGRlYWN0aXZhdGVkLiddLAogICAgWyJSZWpvaWNlIGluIG90aGVyIHBlb3BsZSdzIHNlZWRzIiwnSW4gdGhlIGNvbW11bml0eSB5b3UgY2FuIHNlZSwgYW5vbnltb3VzbHksIHdoYXQgb3RoZXJzIGhhdmUgcGxhbnRlZC4gV2hlbiB5b3UgcmVqb2ljZSBmb3IgdGhlbSwgeW91IHdhdGVyIHRoZSBzZWVkcyBmb3IgeW91ciBvd24gZ29hbC4nXSBdLAogIGFib3V0OlsKICAgIFsnV2hhdCBHb29kIFNlZWRzIGlzJyxbJ0dvb2QgU2VlZHMgaXMgeW91ciBwcmFjdGljZSBqb3VybmFsIGZvciB0aGUgc2VlZCBzeXN0ZW0uJywnT3VyIG1pbmQgcmVjb3JkcyBldmVyeXRoaW5nIHdlIHRoaW5rLCBzYXkgYW5kIGRvLiBFdmVyeSB0aG91Z2h0LCB3b3JkIG9yIGFjdGlvbiBiZWNvbWVzIGEgc2VlZCB0aGF0IGdyb3dzIGluc2lkZSBvdXIgbWluZCBhbmQsIGF0IHNvbWUgcG9pbnQsIGNvbWVzIGJhY2sgaW50byBvdXIgbGlmZSBhcyBhbiBleHBlcmllbmNlLicsJ1RoZSBhcHAgaGVscHMgeW91IG5vdGljZSB3aGF0IHlvdSBwbGFudCBhbmQgY29uc2Npb3VzbHkgY2hvb3NlIHRoZSBzZWVkcyBmb3Igd2hhdCB5b3Ugd2FudC4nXV0sCiAgICBbJ0hvdyB0byB1c2UgaXQgZXZlcnkgZGF5JyxbJ0luIHRoZSBtb3JuaW5nOiByZW1lbWJlciB5b3VyIGdvYWwgYW5kIGRpc2NvdmVyIHRoZSB0b29scyBvZiB0aGUgZGF5LicsJ0R1cmluZyB0aGUgZGF5OiBub3RpY2Ugd2hhdCB5b3UgcGxhbnQuIFdyaXRlIGRvd24geW91ciBncmF0aXR1ZGVzIGFuZCBzdWNjZXNzZXMsIGFuZCB3aGVuIHlvdSByZWNvZ25pc2UgYSBuZWdhdGl2ZSBzZWVkLCB3b3JrIHdpdGggdGhlIDQgcG93ZXJzLicsJ0luIHRoZSBldmVuaW5nOiBkbyB0aGUgam95IG1lZGl0YXRpb24uJywnVGhlcmUgaXMgbm8gbmVlZCBmb3IgbG9uZyB0ZXh0cy4gQSBmZXcgbWludXRlcyBvZiBob25lc3Qgb2JzZXJ2YXRpb24sIHdpdGhvdXQganVkZ2VtZW50IGFuZCB3aXRob3V0IGd1aWx0LCBhcmUgZW5vdWdoLiBXaGF0IG1hdHRlcnMgaXMgY29taW5nIGJhY2sgZXZlcnkgZGF5LiddXSwKICAgIFsiV2hvIGl0J3MgZm9yIixbJ0ZvciBhbnlvbmUgd2hvIGhhcyBhIGdvYWwgb3IgYSBkcmVhbSBhbmQgd2FudHMgdG8gcmVhY2ggaXQgYnkgcGxhbnRpbmcgdGhlIHJpZ2h0IHNlZWRzLicsJ0lmIHlvdSBhcmUgZ29pbmcgdGhyb3VnaCBhIGhhcmQgdGltZSBvciBhIHNpdHVhdGlvbiBrZWVwcyByZXBlYXRpbmcgaXRzZWxmLCBpdCBpcyBhIHNpZ24gdGhhdCBzZWVkcyBwbGFudGVkIGluIHRoZSBwYXN0IGFyZSByaXBlbmluZy4gV2l0aCB0aGUgNCBwb3dlcnMgeW91IGNhbiBkZWFjdGl2YXRlIHRoZW0sIGFuZCBieSBjb25zY2lvdXNseSBwbGFudGluZyBnb29kIHNlZWRzIHlvdSBiYWxhbmNlIHRoZSBzY2FsZXMuJ11dLAogICAgWydXaGVuIHlvdSByZWNvZ25pc2UgYSBuZWdhdGl2ZSBzZWVkJyxbJ1dlIGFsbCBwbGFudCBuZWdhdGl2ZSBzZWVkcyB0b28sIHdpdGhvdXQgcmVhbGlzaW5nIGl0LiBJZiB3ZSBkbyBub3QgZGVhY3RpdmF0ZSB0aGVtLCB0aGV5IGtlZXAgZ3Jvd2luZy4nLCdXaXRoIHRoZSA0IHBvd2VyczogeW91IHJlbWVtYmVyIHdoZXJlIGFsbCB0aGluZ3MgY29tZSBmcm9tLCB5b3UgYmVjb21lIGF3YXJlIG9mIHRoZSBiZW5lZml0cyB5b3UgaGFkIGFuZCBkZWNpZGUgdG8gZGVhY3RpdmF0ZSB0aGUgc2VlZCwgeW91IHByb21pc2Ugbm90IHRvIHJlcGVhdCB0aGUgbWlzdGFrZSBmb3IgYSB3aGlsZSwgYW5kIHlvdSBkbyBzb21ldGhpbmcgcG9zaXRpdmUgdG8gYmFsYW5jZSBpdC4nLCdXaGF0IHlvdSBwcm9taXNlIGluIHRoZSA0dGggcG93ZXIgZ29lcyBpbnRvIHlvdXIgVG8gRG8gbGlzdCwgc28geW91IGRvIG5vdCBmb3JnZXQgdG8gYWN0dWFsbHkgZG8gaXQuJ11dLAogICAgWydUaGUgam95IG1lZGl0YXRpb24nLFsnVGhlIG1vbWVudCBiZWZvcmUgc2xlZXAgY29ubmVjdHMgdGhlIGNvbnNjaW91cyBhbmQgdGhlIHN1YmNvbnNjaW91cy4gV2hhdCB5b3UgdGhpbmsgdGhlbiBrZWVwcyBncm93aW5nIHdoaWxlIHlvdSBzbGVlcC4nLCdUaGF0IGlzIHdoeSwgaW4gdGhlIGV2ZW5pbmcsIHlvdSB0aGluayB3aXRoIGpveSBhYm91dCB0aGUgZ29vZCB5b3UgaGF2ZSBkb25lIGZvciBvdGhlcnMgYW5kIGRlZGljYXRlIGl0IHRvIHlvdXIgZ29hbC4nLCdZb3UgY2FuIGFsc28gZG8gaXQgZHVyaW5nIHRoZSBkYXksIHdoZW5ldmVyIHlvdSBoYXZlIGEgZmV3IG1pbnV0ZXMuJ11dLAogICAgWydUb29scyBvZiB0aGUgZGF5JyxbJ1RoZSAyMCB0b29scyBhcmUgZ3JvdXBlZCBpbiA1IHNldHM6IFRoZSA0IFN0ZXBzLCBUaGUgNCBQb3dlcnMsIFRoZSA0IExhd3Mgb2YgU2VlZHMsIFRoZSA0IEZsb3dlcnMgYW5kIFRoZSA0IFByaW9yaXRpZXMuIEVhY2ggc2V0IGhhcyBpdHMgb3duIGNvbG91ciBhbmQgc3ltYm9sLicseyBzdWJzOidFdmVyeSBkYXkgeW91IGRpc2NvdmVyIDIgdG9vbHMgYW5kIHdyaXRlIGhvdyB5b3UgdXNlIHRoZWlyIGNvbWJpbmF0aW9uLiBUaGUgdG9vbHMgYXJlIGF2YWlsYWJsZSB0byB0aG9zZSB3aXRoIGFuIGFjdGl2ZSBzdWJzY3JpcHRpb24uJyB9XV0sCiAgICBbJ1RoZSBjb21tdW5pdHknLFsnWW91IGNhbiBhbm9ueW1vdXNseSBzaGFyZSB5b3VyIGdyYXRpdHVkZXMsIHN1Y2Nlc3Nlcywgam95IG1lZGl0YXRpb24gb3IgNCBwb3dlcnMsIHVuZGVyIGEgbmFtZSB5b3UgY2hvb3NlLicsIldoZW4geW91IHJlam9pY2UgaW4gb3RoZXIgcGVvcGxlJ3Mgc2VlZHMsIHlvdSB3YXRlciB0aGUgc2VlZHMgZm9yIHlvdXIgb3duIGdvYWwuIFdoZW4geW91IHJlYWQgc29tZW9uZSdzIDQgcG93ZXJzLCB5b3UgY2FuIGdvIHRocm91Z2ggdGhlbSBmb3IgeW91cnNlbGYgdG9vLiIsJ1doYXQgeW91IHdyaXRlIHN0YXlzIHByaXZhdGUsIGV4Y2VwdCBmb3Igd2hhdCB5b3UgY2hvb3NlIHRvIHNoYXJlLiddXSBdLAogIGthcm1hOlsKICAgIFsnUHJvdGVjdCBsaWZlJywnVGFrZSBjYXJlIG9mIHBlb3BsZSwgYW5pbWFscyBhbmQgcGxhbnRzLiBOZXZlciBpbnRlbnRpb25hbGx5IGh1cnQgYW55IGxpdmluZyBiZWluZy4nLCdUaGUgc2VlZCBvZiBoZWFsdGgnXSwKICAgIFsnUHJvdGVjdCBwcm9wZXJ0eScsJ0dpdmUgYW5kIGhlbHAgb3RoZXJzLiBEbyBub3QgdGFrZSB3aGF0IGRvZXMgbm90IGJlbG9uZyB0byB5b3Ugd2l0aG91dCBwZXJtaXNzaW9uLicsJ1RoZSBzZWVkIG9mIHByb3NwZXJpdHknXSwKICAgIFsnU2V4dWFsIHB1cml0eScsJ0hvbm91ciB0aGUgYm9uZCBiZXR3ZWVuIHR3byBwZW9wbGUgd2hvIGhhdmUgbWFkZSBhIGNvbW1pdG1lbnQgdG8gZWFjaCBvdGhlciwgeW91cnMgYW5kIHRoYXQgb2Ygb3RoZXJzLicsJ1RoZSBzZWVkIG9mIGhhcHBpbmVzcyddLAogICAgWydJbnRlZ3JpdHknLCdUZWxsIHRoZSB0cnV0aCBhbmQga2VlcCB5b3VyIHByb21pc2VzLiBEbyBub3Qgc2F5IHdoYXQgeW91IGRvIG5vdCB0cnVseSBmZWVsLicsJ1RoZSBzZWVkIG9mIHRydXN0J10sCiAgICBbJ1NheSB3b3JkcyB0aGF0IGJyaW5nIHBlb3BsZSB0b2dldGhlcicsJ1VzZSB5b3VyIHdvcmRzIHRvIGJyaW5nIHBlb3BsZSB0b2dldGhlci4gQXZvaWQgd29yZHMgdGhhdCBkaXZpZGUgb3IgY3JlYXRlIG1pc3VuZGVyc3RhbmRpbmdzLicsJ1RoZSBzZWVkIG9mIGhhcm1vbnknXSwKICAgIFsnU3BlYWsgZ2VudGx5IGFuZCBzd2VldGx5JywnQXBwcmVjaWF0ZSBvdGhlcnMgYW5kIHNwZWFrIHRvIHRoZW0gd2l0aCByZXNwZWN0LiBBdm9pZCBoYXJzaCB3b3JkcyB0aGF0IGh1cnQuJywnVGhlIHNlZWQgb2YgcmVzcGVjdCddLAogICAgWydTYXkgb25seSB3b3JkcyB0aGF0IGhhdmUgYSBwdXJwb3NlJywnU2F5IHRoaW5ncyB0aGF0IGhlbHAgYW5kIGhhdmUgYSBwdXJwb3NlLiBBdm9pZCBnb3NzaXAgYW5kIGVtcHR5IHRhbGsuJywnVGhlIHNlZWQgb2YgdGltZSddLAogICAgWyJSZWpvaWNlIGluIG90aGVyIHBlb3BsZSdzIHN1Y2Nlc3MiLCdSZWpvaWNlIHdoZW4gb3RoZXJzIGdldCB3aGF0IHRoZXkgd2FudCBhbmQgYXBwcmVjaWF0ZSB3aGF0IHRoZXkgaGF2ZS4gQXZvaWQgZW52eSBhbmQgZ3JlZWQuJywnVGhlIHNlZWQgb2Ygc3VjY2VzcyddLAogICAgWyJDb21wYXNzaW9uIGZvciBvdGhlciBwZW9wbGUncyBwcm9ibGVtcyIsIk9mZmVyIGNvbXBhc3Npb24gdG8gdGhvc2UgZ29pbmcgdGhyb3VnaCBoYXJkIHRpbWVzIGFuZCBoZWxwIHRoZW0gaG93ZXZlciB5b3UgY2FuLiBEbyBub3QgcmVqb2ljZSBpbiBvdGhlciBwZW9wbGUncyBtaXNmb3J0dW5lLiIsJ1RoZSBzZWVkIG9mIGNvbXBhc3Npb24nXSwKICAgIFsnVW5kZXJzdGFuZCBob3cgdGhlIHBlbiB3b3JrcycsJ1JlbWVtYmVyIHRoYXQgZXZlcnl0aGluZyBjb21lcyBmcm9tIHRoZSBzZWVkcyBwbGFudGVkIGFuZCB0aGF0IGNoYW5nZSBiZWdpbnMgd2l0aCB5b3UuIExpdmUgYW5kIHNoYXJlIHRoZSBwcmluY2lwbGUgb2YgdGhlIHBlbi4nLCdUaGUgc2VlZCBvZiB3aXNkb20nXSBdLAogIGtsYWJlbHM6WyJBdCB0aGUgY2VudHJlIiwgIkluIHRoZSBjaXJjbGVzLCBkYXkgYnkgZGF5IiwgIldoYXQgYmVhcnMgZnJ1aXQiLCAiSW4geW91ciBsaWZlOiIsICJBcm91bmQgeW91OiJdLCBraW50cm86IkVhY2gga2FybWEgaXMgcGxhbnRlZCDigJxhdCB0aGUgY2VudHJl4oCdLCB0aHJvdWdoIHRoZSBzdHJvbmdlc3QgYWN0aW9uLCBhbmQg4oCcaW4gdGhlIGNpcmNsZXPigJ0sIHRocm91Z2ggdGhlIHNtYWxsIGdlc3R1cmVzIG9mIGV2ZXJ5IGRheS4gRWFjaCBzZWVkIGJlYXJzIGZydWl0IGluIHR3byBwbGFjZXM6IGluIHlvdXIgbGlmZSBhbmQgaW4gdGhlIHdvcmxkIGFyb3VuZCB5b3UuIiwKICBrYXJtYVg6W3siYyI6ICJTYXZpbmcgYSBsaWZlIG9yIGhlbHBpbmcgYSBuZXcgbGlmZSBjb21lIGludG8gdGhlIHdvcmxkLiIsICJrIjogWyJUYWtlIGNhcmUgb2YgeW91ciBib2R5OiBtb3ZlbWVudCwgc2xlZXAsIGhlYWx0aHkgZm9vZCwgd2l0aCBsZXNzIG1lYXQsIGFsY29ob2wgYW5kIHN3ZWV0cy4iLCAiQ2FyZSBmb3IgdGhvc2Ugd2hvIGFyZSBpbGwgYW5kIGhlbHAgb3RoZXJzIGxpdmUgaGVhbHRoaWx5LiIsICJEcml2ZSBjYXJlZnVsbHksIHdpdGhvdXQgeW91ciBwaG9uZSBpbiB5b3VyIGhhbmQsIGFuZCBrZWVwIHRoZSBwbGFjZSB3aGVyZSB5b3UgbGl2ZSBhbmQgd29yayBjbGVhbi4iXSwgInYiOiAiaGVhbHRoLCBlbmVyZ3kgYW5kIGEgbGl2ZWx5IGJvZHkgaW50byBvbGQgYWdlLiIsICJqIjogImhlYWx0aHkgcGVvcGxlLCBjbGVhbiBhaXIgYW5kIHF1aWV0LiJ9LCB7ImMiOiAiR2l2aW5nLCBhbnkga2luZCBvZiByZXNvdXJjZXMuIiwgImsiOiBbIkxvb2sgYWZ0ZXIgdGhlIHRoaW5ncyB5b3UgdXNlIGFuZCBkbyBub3Qgd2FzdGUuIiwgIlBheSBiaWxscyBhbmQgdGF4ZXMgb24gdGltZSBhbmQgYXJyaXZlIG9uIHRpbWUgZm9yIG1lZXRpbmdzOiBvdGhlciBwZW9wbGXigJlzIHRpbWUgaXMgYSByZXNvdXJjZSB0b28uIiwgIlJlY29tbWVuZCBnb29kIHByb2R1Y3RzIGFuZCBzZXJ2aWNlcywgY29ubmVjdCBwZW9wbGUsIHRlYWNoIHNvbWVvbmUgaG93IHRvIGVhcm4gbW9uZXkuIl0sICJ2IjogImFidW5kYW5jZSwgZnJlZSB0aW1lIGZvciB5b3Vyc2VsZiwgcGVhY2UsIGFuZCByZXNvdXJjZXMgYXBwZWFyIGV4YWN0bHkgd2hlbiB5b3UgbmVlZCB0aGVtLiIsICJqIjogImEgcGxhY2UgcmljaCBpbiByZXNvdXJjZXMsIHN1cnJvdW5kZWQgYnkgcHJvc3Blcm91cyBwZW9wbGUuIn0sIHsiYyI6ICJGYWl0aGZ1bG5lc3MgaW4geW91ciByZWxhdGlvbnNoaXAgYW5kIHJlc3BlY3QgZm9yIHRoZSBjb21taXRtZW50IHR3byBvdGhlciBwZW9wbGUgaGF2ZSBtYWRlLiIsICJrIjogWyJZb3UgZG8gbm90IHNlZWsgY2xvc2VuZXNzIG9yIGEgcmVsYXRpb25zaGlwIHdpdGggc29tZW9uZSB3aGVyZSB0aGVyZSBpcyBubyBwdXJlIGJvbmQuIiwgIlNwZW5kIHRpbWUgd2l0aCBwZW9wbGUgd2hvIGFyZSBhbG9uZTogdGhlIGVsZGVybHksIGNoaWxkcmVuLCBmcmllbmRzLiIsICJTZWUgeW91ciBwYXJ0bmVyIGFzIGFuIGFuZ2VsIGluIGRpc2d1aXNlIGFuZCB0YWtlIGNhcmUgd2l0aCB3aGF0IHlvdSB3YXRjaCBhbmQgd2hhdCB5b3Ugc2hhcmUuIl0sICJ2IjogImEgZnVsZmlsbGluZyByZWxhdGlvbnNoaXAsIGZ1bGwgb2YgdGVuZGVybmVzcywgd2l0aCBhIHBhcnRuZXIgYXR0ZW50aXZlIHRvIHlvdXIgc21hbGxlc3QgbmVlZHMuIiwgImoiOiAiYSBjbGVhbiBlbnZpcm9ubWVudCwgcHVyaXR5IGluIGV2ZXJ5dGhpbmcgeW91IHNlZS4ifSwgeyJjIjogIlRlbGxpbmcgdGhlIHRydXRoIDEwMCUsIHNvIHRoYXQgdGhlIHBpY3R1cmUgaW4gdGhlIG90aGVyIHBlcnNvbuKAmXMgbWluZCBpcyB0aGUgc2FtZSBhcyByZWFsaXR5LiIsICJrIjogWyJTcGVhayBvcGVubHkgd2l0aCB5b3VyIGZhbWlseSwgY2xpZW50cyBhbmQgY29sbGVhZ3Vlcy4iLCAiS2VlcCB5b3VyIHByb21pc2VzLCBpbmNsdWRpbmcgdGhlIG9uZXMgeW91IG1ha2UgdG8geW91cnNlbGYuIiwgIkRvIG5vdCBtYWtlIHByb21pc2VzIHlvdSBtaWdodCBub3Qga2VlcC4g4oCcV2hpdGUgbGllc+KAnSBoYXZlIG5vIHBsYWNlIGVpdGhlci4iXSwgInYiOiAicGVvcGxlIHRydXN0IHlvdXIgd29yZCwgeW91IGhhdmUgZW5lcmd5IGFuZCBwZWFjZSBvZiBtaW5kLiIsICJqIjogImhvbmVzdCBmcmllbmRzIGFuZCBidXNpbmVzcyBwYXJ0bmVycyB3aG8gcmVzcGVjdCBlYWNoIG90aGVyLiJ9LCB7ImMiOiAiUHJhaXNpbmcgYSBwZXJzb24gaW4gZnJvbnQgb2Ygc29tZW9uZSBlbHNlLiIsICJrIjogWyJMb29rIGZvciBwZW9wbGXigJlzIGdvb2QgcXVhbGl0aWVzIGFuZCBzYXkgdGhlbSBvdXQgbG91ZC4iLCAiRW5jb3VyYWdlIGNvbGxhYm9yYXRpb24sIGNvbm5lY3QgcGVvcGxlLCBwcm9tb3RlIGV2ZW50cyB0aGF0IGJyaW5nIHRoZW0gdG9nZXRoZXIuIiwgIkRvIG5vdCBjb21wYXJlIHBlb3BsZSBhbmQgZG8gbm90IGRpc2NyaW1pbmF0ZSBhZ2FpbnN0IGFueW9uZS4iXSwgInYiOiAiZnVsZmlsbGluZyByZWxhdGlvbnNoaXBzIGFuZCBsYXN0aW5nIGZyaWVuZHNoaXBzLiIsICJqIjogImEgZ3JvdXAgd2hlcmUgcGVvcGxlIHN1cHBvcnQgZWFjaCBvdGhlciwgYW5kIHlvdXIgcGF0aHMgYXJlIGVhc3kuIn0sIHsiYyI6ICJTcGVha2luZyBjYWxtbHksIGluIGEgcmVsYXhlZCB3YXksIHdpdGggYSBnZW50bGUgdG9uZS4iLCAiayI6IFsiUmVhbGx5IGxpc3RlbiBhbmQgZ2l2ZSBjb25zdHJ1Y3RpdmUgZmVlZGJhY2suIiwgIk1lZGl0YXRlLCBkbyB5b2dhLCB3YWxrIGluIG5hdHVyZSwgbGlzdGVuIHRvIGNhbG1pbmcgbXVzaWMuIiwgIlRha2UgY2FyZSBvZiB5b3VyIGlubmVyIHdvcmRzIHRvbywgaW5jbHVkaW5nIHRoZSBvbmVzIHlvdSBzYXkgdG8geW91cnNlbGYuIl0sICJ2IjogInJlc3RmdWwgc2xlZXAgYW5kIHBlYWNlIG9mIG1pbmQuIiwgImoiOiAicGVvcGxlIHdobyBjb21tdW5pY2F0ZSBpbiBhIHJlbGF4ZWQgd2F5LCB3aXRob3V0IGFyZ3VpbmcuIn0sIHsiYyI6ICJQYXNzaW5nIG9uIHRoZSBpZGVhIHRoYXQgZXZlcnl0aGluZyBjb21lcyBmcm9tIHNlZWRzLiIsICJrIjogWyJUYWxrIGFib3V0IHRoaW5ncyB0aGF0IGJyaW5nIHZhbHVlIHRvIHBlb3BsZeKAmXMgbGl2ZXMuIiwgIkNob29zZSBib29rcywgZmlsbXMgYW5kIHBvc3RzIHRoYXQgdGVhY2ggeW91IGhvdyB0byBicmluZyB2YWx1ZSB0byBvdGhlcnMuIiwgIkF2b2lkIGdvc3NpcCBvZiBhbnkga2luZCBhbmQgdGltZSBsb3N0IG9uIGVtcHR5IGNvbnRlbnQuIl0sICJ2IjogInlvdXIgd29yZHMgY2Fycnkgd2VpZ2h0IGFuZCB5b3VyIHRpbWUgZmlsbHMgd2l0aCBtZWFuaW5nZnVsIHRoaW5ncy4iLCAiaiI6ICJwZW9wbGUgbGlzdGVuIHRvIHlvdSB3aGVuIHlvdSBzcGVhay4ifSwgeyJjIjogIlNpbmNlcmVseSByZWpvaWNpbmcgd2hlbiBvdGhlcnMgZ2V0IHdoYXQgdGhleSB3YW50LiIsICJrIjogWyJTdXBwb3J0IGFuZCBlbmNvdXJhZ2Ugb3RoZXJzLiIsICJSZWpvaWNlIGluIG90aGVyIHBlb3BsZeKAmXMgYWNoaWV2ZW1lbnRzIGFuZCBwb3N0cyBhbmQgYXBwcmVjaWF0ZSB0aGVtLiIsICJEbyBub3QgY29tcGFyZSB5b3Vyc2VsZiBhbmQgbmV2ZXIgY29tbWVudCBpcm9uaWNhbGx5IG9uIGFueW9uZeKAmXMgc3VjY2Vzcy4iXSwgInYiOiAic3VjY2VzcyBpbiB5b3VyIHByb2plY3RzLCBqb3kgaW4gd2hhdCB5b3UgZG8sIHlvdSBkaXNjb3ZlciB5b3VyIHBhc3Npb24gYW5kIGNhbGxpbmcuIiwgImoiOiAiYW4gZW52aXJvbm1lbnQgd2hlcmUgeW91IHJlY2VpdmUgc3VwcG9ydCBhbmQgcmVzb3VyY2VzIGFyZSBhdmFpbGFibGUuIn0sIHsiYyI6ICJDb21wYXNzaW9uIGZvciBzb21lb25l4oCZcyBzdWZmZXJpbmcuIiwgImsiOiBbIkhlbHAgd2hlbmV2ZXIgeW91IGhhdmUgdGhlIGNoYW5jZS4iLCAiQ2hvb3NlIGJvb2tzIGFuZCBmaWxtcyB0aGF0IHByb21vdGUgY29tcGFzc2lvbi4iLCAiV2hlbiBzb21lb25lIG1ha2VzIGEgbWlzdGFrZSwgbGVhdmUgYXNpZGUg4oCcSSBrbmV3IGl04oCdIG9yIOKAnEkgd2FzIHJpZ2h04oCdLiJdLCAidiI6ICJ5b3UgZmluZCBoZWxwIHdoZW4geW91IG5lZWQgaXQgYW5kIHlvdSBncm93IHNwaXJpdHVhbGx5LiIsICJqIjogInBlb3BsZSB3aG8gc3VwcG9ydCBlYWNoIG90aGVyLCBhIHBlYWNlZnVsIGVudmlyb25tZW50LiJ9LCB7ImMiOiAiRXhwbGFpbmluZyB0aGUgcHJpbmNpcGxlIG9mIHRoZSBwZW4gdG8gc29tZW9uZSBlbHNlLiIsICJrIjogWyJUYWtlIHBhdXNlcyBkdXJpbmcgdGhlIGRheSB0byByZW1lbWJlciB0aGF0IHdoYXQgeW91IHNlZSwgZG8gYW5kIHRoaW5rIGNvbWVzIGZyb20geW91ciBzZWVkcy4iLCAiUmVhZCBhbmQgbGlzdGVuIHRvIG1hdGVyaWFsIGFib3V0IGhvdyBzZWVkcyB3b3JrLiIsICJXaGVuIHNvbWV0aGluZyBnb2VzIHdyb25nLCBkbyBub3QgYmxhbWUgb3RoZXJzOiBhc2sgeW91cnNlbGYgd2hpY2ggc2VlZHMgdG8gcGxhbnQuIl0sICJ2IjogInlvdXIgcHJvamVjdHMgYXJlIGNhcnJpZWQgdGhyb3VnaCB0byB0aGUgZW5kIGFuZCB5b3UgZmVlbCBtb3JlIGFuZCBtb3JlIGlubmVyIGZyZWVkb20uIiwgImoiOiAieW91IHVuZGVyc3RhbmQgd2hhdCBpcyBoYXBwZW5pbmcgYXJvdW5kIHlvdSBhbmQgbm8gbG9uZ2VyIGZlZWwgb3ZlcndoZWxtZWQgYnkgdGhpbmdzLiJ9XSwKICBncm91cHM6WydERUVEUycsJ1dPUkRTJywnVEhPVUdIVFMnXSwgZG9tYWluczpbJ01vbmV5JywnUmVsYXRpb25zaGlwcycsJ0hlYWx0aCddCn07ClhULmZyID0gewogIHVpOnsgbmF2Sm91cm5hbDonSm91cm5hbCcsIG5hdlByb2ZpbGU6J1Byb2ZpbCcsCiAgICB0b2RvTGVhZDoiQ2UgcXVlIGonYWkgcHJvbWlzIGRlIGZhaXJlLiBMZXMgZW5nYWdlbWVudHMgcXVlIGonYWkgcHJpcy4iLAogICAgdVRpdGxlOiJUZXMgb3V0aWxzIGR1IGpvdXIiLCB1TG9ja2VkOiJDaGFxdWUgam91ciwgdHUgcGV1eCBkw6ljb3V2cmlyIDIgZGVzIDIwIG91dGlscyA6IExlcyA0IMOJdGFwZXMsIExlcyA0IFBvdXZvaXJzLCBMZXMgNCBMb2lzIGRlcyBHcmFpbmVzLCBMZXMgNCBGbGV1cnMgZXQgTGVzIDQgUHJpb3JpdMOpcy4iLAogICAgdUxvY2tNc2c6IlR1IGFzIGJlc29pbiBkJ3VuIGFib25uZW1lbnQgYWN0aWYgcG91ciB1dGlsaXNlciBsZXMgb3V0aWxzLiIsIHVTZWVTdWJzOidWb2lyIGxlcyBhYm9ubmVtZW50cycsCiAgICB1RHJhd05vdGU6IkFwcHVpZSBldCBkw6ljb3V2cmUgbGVzIDIgb3V0aWxzIGF2ZWMgbGVzcXVlbHMgdHUgdHJhdmFpbGxlcyBhdWpvdXJkJ2h1aS4iLCB1RHJhdzonRMOpY291dnJpciBsZXMgb3V0aWxzIGR1IGpvdXInLAogICAgdVE6IkNvbW1lbnQgaid1dGlsaXNlIGNldHRlIGNvbWJpbmFpc29uIGQnb3V0aWxzIGF1am91cmQnaHVpID8iLCB1UGg6J8OJY3JpcyBwb3VyIHRvaS4gQ2VsYSByZXN0ZSBzZXVsZW1lbnQgZGFucyB0b24gam91cm5hbC4nLAogICAgdVNhdmU6J0VucmVnaXN0cmVyIGRhbnMgbGUgam91cm5hbCcsIHVVcGRhdGU6J01ldHRyZSDDoCBqb3VyIGRhbnMgbGUgam91cm5hbCcsIHVBZ2FpbjoiQ2hvaXNpciB1bmUgbm91dmVsbGUgY29tYmluYWlzb24gZCdvdXRpbHMiLCB1U2F2ZWQ6J0VucmVnaXN0csOpIGRhbnMgdG9uIGpvdXJuYWwnLAogICAgdVNpbU9uOidWZXJzaW9uIGRlIHRlc3QgOiBzaW11bGVyIHVuIGFib25uZW1lbnQgYWN0aWYnLCB1U2ltT2ZmOidWZXJzaW9uIGRlIHRlc3QgOiBzaW11bGVyIHNhbnMgYWJvbm5lbWVudCcsCiAgICBodWJUaXRsZTonUXVlIHByYXRpcXVlcy10dSBtYWludGVuYW50ID8nLCBodWJMZWFkOidDaG9pc2lzIGxhIHByYXRpcXVlLiBUb3V0IGNlIHF1ZSB0dSBmYWlzIHZhIGRhbnMgdG9uIGpvdXJuYWwuJywgaHViQnVzeTonVW5lIHByYXRpcXVlIGVzdCBlbiBjb3VycyDCtyByZXRvdXIgYXUgbWludXRldXInLAogICAgbXlQcm9maWxlOidNb24gcHJvZmlsJywgY2hhbmdlTmFtZTonQ2hhbmdlciBsZSBub20nLCBwaWNrTmFtZTonQ2hvaXNpciB1biBub20gcG91ciBsYSBjb21tdW5hdXTDqScsCiAgICBzdFByYWN0OidwcmF0aXF1ZXMnLCBzdE1pbjonbWludXRlcycsIHN0VG9kbzonw4AgZmFpcmUgcsOpYWxpc8OpcycsIGF2YXRhcjonTW9uIGF2YXRhcicsIGFkZHJlc3M6IkNvbW1lbnQgamUgbSdhZHJlc3NlIMOgIHRvaSIsCiAgICBpbnRybzonSW50cm9kdWN0aW9uJywgYWJvdXQ6IsOAIHByb3BvcyBkZSBsJ2FwcGxpY2F0aW9uIiwga2FybWE6J0xlcyAxMCBLYXJtYXMgUG9zaXRpZnMnLCBrYXJtYVN1YjoiTCdpbnNwaXJhdGlvbiBkZSBsJ2FwcGxpY2F0aW9uIiwgY29udGFjdDonQ29udGFjdCcsCiAgICBwcm9mQmFubmVyOiJWZXJzaW9uIGRlIHRlc3QuIERhbnMgbCdhcHBsaWNhdGlvbiBtb2JpbGUsIHR1IHRyb3V2ZXJhcyBhdXNzaSBpY2kgOiBsZXMgcmFwcGVscyAoanVzcXUnw6AgNiBwYXIgam91ciksIGxlIGNoYW5nZW1lbnQgZCdlLW1haWwsIGxhIHN1cHByZXNzaW9uIGRlcyBkb25uw6llcywgbGEgc3VwcHJlc3Npb24gZHUgY29tcHRlLCBsYSBwb2xpdGlxdWUgZGUgY29uZmlkZW50aWFsaXTDqSBldCBsZXMgY29uZGl0aW9ucy4iLAogICAgb3ZQcmV2OidSZXRvdXInLCBvdk5leHQ6J1N1aXZhbnQnLCBvdlN0YXJ0OidDb21tZW5jZXInLCBieURvbWFpbjonUkVHUk9VUMOJUyBQQVIgRE9NQUlORScsCiAgICBrYXJtYUxlYWQ6IkwnaW5zcGlyYXRpb24gZGUgbCdhcHBsaWNhdGlvbi4gVHUgcGV1eCBsZXMgdXRpbGlzZXIgZGFucyBsYSBwcmF0aXF1ZSBkZXMgNCBwb3V2b2lycyBldCBkYW5zIGxhIG3DqWRpdGF0aW9uIGR1IGJvbmhldXIuIiB9LAogIGtpbmRVOidPdXRpbHMgZHUgam91cicsCiAgc2V0czp7CiAgICBwYXNpOnsibmFtZSI6ICJMZXMgNCDDiXRhcGVzIiwgInVuaXQiOiAiw4l0YXBlIiwgInN1YiI6ICJwb3VyIGFycm9zZXIgbGVzIGdyYWluZXMgZGUgdG9uIG9iamVjdGlmIiwgIml0ZW1zIjogW3sidCI6ICJEaXMgY2UgcXVlIHR1IHZldXggZGFucyB0YSB2aWUgZW4gdW5lIHBocmFzZSBjb3VydGUsIiwgImFkZCI6ICLDoCBsYSBmb3JtZSBhZmZpcm1hdGl2ZSBldCBhdSBwcsOpc2VudC4ifSwgeyJ0IjogIlBsYW5pZmllIHF1aSB0dSB2YXMgYWlkZXIgw6Agb2J0ZW5pciBsYSBtw6ptZSBjaG9zZSBldCBvw7kgdHUgaW52aXRlcmFzIGNldHRlIHBlcnNvbm5lIHBvdXIgZW4gcGFybGVyLiIsICJhZGQiOiAiRWxsZSBkZXZpZW50IHRvbiBwYXJ0ZW5haXJlIGthcm1pcXVlLiJ9LCB7InQiOiAiQWlkZSByw6llbGxlbWVudCBjZXR0ZSBwZXJzb25uZS4iLCAiYWRkIjogIlBhciBleGVtcGxlLCB1bmUgaGV1cmUgcGFyIHNlbWFpbmUsIGF1dG91ciBk4oCZdW4gY2Fmw6kuIn0sICJGYWlzIGxhIE3DqWRpdGF0aW9uIGR1IGJvbmhldXIgOiBhdSBtb21lbnQgZGUgdGUgY291Y2hlciwgcGVuc2UgYXZlYyBqb2llIGF1eCBib25uZXMgY2hvc2VzIHF1ZSB0dSBmYWlzIHBvdXIgbGVzIGF1dHJlcy4iXX0sCiAgICBwdXRlcmk6eyJuYW1lIjogIkxlcyA0IFBvdXZvaXJzIiwgInVuaXQiOiAiUG91dm9pciIsICJzdWIiOiAicG91ciBkw6lzYWN0aXZlciBsZXMgZ3JhaW5lcyBuw6lnYXRpdmVzIHBsYW50w6llcyBkYW5zIGxlIHBhc3PDqSIsICJpdGVtcyI6IFt7ImgiOiAiU2Ugc291dmVuaXIgZHUgc3R5bG8iLCAiZXgiOiAiVG91dGVzIGxlcyBjaG9zZXMgdmllbm5lbnQgZGVzIGdyYWluZXMgcGxhbnTDqWVzIGRhbnMgbGUgcGFzc8OpLiBTb3V2aWVucy10b2kgZGVzIGdyYWluZXMgcXVlIHR1IGFzIHBsYW50w6llcyBkYW5zIGxlIHBhc3PDqSBldCBxdWkgb250IHBvdXNzw6kuIn0sIHsiaCI6ICJMZSByZWdyZXQgaW50ZWxsaWdlbnQiLCAiZXgiOiAiUHJlbmRzIGNvbnNjaWVuY2UgZGVzIGLDqW7DqWZpY2VzIHF1ZSB0dSBhcyBldXMgcXVhbmQgdHUgYXMgcGxhbnTDqSBsYSBncmFpbmUgZXQgcHJlbmRzIGxhIGZlcm1lIGTDqWNpc2lvbiBkZSBsYSBkw6lzYWN0aXZlciBhdmFudCBxdSdlbGxlIG5lIHNlIG11bHRpcGxpZSBlbmNvcmUgZGF2YW50YWdlLiJ9LCB7ImgiOiAiTGEgcmVzdHJpY3Rpb24iLCAiZXgiOiAiUHJvbWV0cyBkZSBuZSBwbHVzIHJlZmFpcmUgbGEgbcOqbWUgZXJyZXVyIHBlbmRhbnQgdW5lIHDDqXJpb2RlIGRvbm7DqWUuIn0sIHsiaCI6ICJM4oCZYW50aWRvdGUiLCAiZXgiOiAiRmFpcyBxdWVscXVlIGNob3NlIGRlIHBvc2l0aWYgcG91ciDDqXF1aWxpYnJlciBsZXMgZ3JhaW5lcyBuw6lnYXRpdmVzLiJ9XX0sCiAgICBsZWdpOnsibmFtZSI6ICJMZXMgNCBMb2lzIGRlcyBHcmFpbmVzIiwgInVuaXQiOiAiTG9pIiwgInN1YiI6ICJsZXMgbG9pcyBzZWxvbiBsZXNxdWVsbGVzIGZvbmN0aW9ubmVudCBsZXMgZ3JhaW5lcyIsICJpdGVtcyI6IFt7ImgiOiAiVHUgcmXDp29pcyBjZSBxdWUgdHUgZG9ubmVzIiwgImV4IjogIlR1IHLDqWNvbHRlcyBjZSBxdWUgdHUgYXMgc2Vtw6kgOiBzaSB0dSBwbGFudGVzIGRlcyBncmFpbmVzIGRlIHBhc3TDqHF1ZSwgdHUgb2J0aWVuZHJhcyB1bmUgcGFzdMOocXVlLiIsICJhZGQiOiAiTGEgbG9pIGZvbmN0aW9ubmUgZGFucyBsZXMgZGV1eCBzZW5zIDogbGUgYmllbiBhcHBvcnRlIGxlIGJpZW4sIGV0IHVuIGFjdGUgbsOpZ2F0aWYgYXBwb3J0ZSBxdWVscXVlIGNob3NlIGRlIG7DqWdhdGlmLiJ9LCB7ImgiOiAiTGVzIGdyYWluZXMgZ3JhbmRpc3NlbnQiLCAiZXgiOiAiQ2UgcXVlIHR1IHJlw6dvaXMgZW4gcmV0b3VyIGVzdCB0b3Vqb3VycyBiZWF1Y291cCwgYmVhdWNvdXAgcGx1cyBncmFuZCBxdWUgY2UgcXVlIHR1IGFzIGZhaXQuIiwgImFkZCI6ICJMZXMgYm9ubmVzIGNvbW1lIGxlcyBuw6lnYXRpdmVzLiJ9LCB7ImgiOiAiU2kgdHUgbmUgZmFpcyByaWVuLCBpbCBuZSBzZSBwYXNzZSByaWVuIiwgImV4IjogIlNpIHR1IG5lIGZhaXMgcmllbiwgdHUgbmUgcmVjZXZyYXMgcmllbiBlbiByZXRvdXIuIiwgImFkZCI6ICJTZSBjb250ZW50ZXIgZOKAmWVzcMOpcmVyIG91IGTigJlhdHRlbmRyZSBuZSBwbGFudGUgYXVjdW5lIGdyYWluZS4ifSwgeyJoIjogIkNlIHF1ZSB0dSBhcyBwbGFudMOpIGRvaXQgZ2VybWVyIiwgImV4IjogIlNpIHR1IGZhaXMgcXVlbHF1ZSBjaG9zZSwgYWxvcnMgdHUgZG9pcyByZWNldm9pciBxdWVscXVlIGNob3NlIGVuIHJldG91ci4iLCAiYWRkIjogIkxlcyBncmFpbmVzIG5lIGRpc3BhcmFpc3NlbnQgcGFzLCBuaSBsZXMgYm9ubmVzIG5pIGxlcyBuw6lnYXRpdmVzLiBFbGxlcyBnZXJtZW50IMOgIHVuIG1vbWVudCBkb25uw6kuIn1dfSwKICAgIGZsb3JpOnsibmFtZSI6ICJMZXMgNCBGbGV1cnMiLCAidW5pdCI6ICJGbGV1ciIsICJzdWIiOiAibGEgbWFuacOocmUgZG9udCBsZXMgZ3JhaW5lcyBwb3J0ZW50IGxldXJzIGZydWl0cyIsICJpdGVtcyI6IFt7ImgiOiAiVHUgcmXDp29pcyBleGFjdGVtZW50IGNlIHF1ZSB0dSBkb25uZXMuIiwgImFkZCI6ICJRdWkgc8OobWUgbOKAmWFtb3VyIHLDqWNvbHRlIGzigJlhbW91ci4ifSwgeyJoIjogIkNoYXF1ZSBhY3Rpb24gY3LDqWUgdW5lIGhhYml0dWRlLiIsICJhZGQiOiAiTcOqbWUgbGVzIHBlbnPDqWVzIHF1aSB0ZSB2aWVubmVudCDCqyBzYW5zIGxlIHZvdWxvaXIgwrsgc29udCBkZXMgaGFiaXR1ZGVzIGNyw6nDqWVzIHBhciBjZSBxdWUgdHUgYXMgZmFpdCBhdmFudC4gQ2UgcXVlIHR1IHLDqXDDqHRlcyBhdWpvdXJk4oCZaHVpIHRlIHZpZW50IHBsdXMgZmFjaWxlbWVudCBkZW1haW4uIn0sIHsiaCI6ICJDZSBxdWUgdHUgZmFpcyBjcsOpZSBsZXMgcGVyc29ubmVzIGV0IGwnZW52aXJvbm5lbWVudCBhdXRvdXIgZGUgdG9pLiIsICJhZGQiOiAiUXVhbmQgdHUgYXBwcsOpY2llcyBsZXMgYXV0cmVzIGV0IHF1ZSB0dSBsZXMgcmFwcHJvY2hlcywgdHUgZmluaXMgZW50b3Vyw6kgZGUgcGVyc29ubmVzIHF1aSBz4oCZZW50ZW5kZW50IGJpZW4uIFF1YW5kIHR1IGRpdmlzZXMsIHR1IHZlcnJhcyBkZXMgZ2VucyBxdWkgc2UgZGlzcHV0ZW50LiJ9LCB7ImgiOiAiQ2UgcXVlIHR1IGZhaXMgY3LDqWUgbGUgbW9uZGUgZGFucyBsZXF1ZWwgdHUgdmFzIGVudHJlci4iLCAiYWRkIjogIkNlIHF1ZSB0dSBwbGFudGVzIGF1am91cmTigJlodWkgcHLDqXBhcmUgbGUgbW9uZGUgb8O5IHR1IGFycml2ZXJhcyBkZW1haW4uIFF1YW5kIHR1IGNoYW5nZXMgY2UgcXVlIHR1IGZhaXMsIHRvbiBtb25kZSBjaGFuZ2UgYXVzc2kuIn1dfSwKICAgIHByaW9yaXRhdGk6eyBuYW1lOidMZXMgNCBQcmlvcml0w6lzJywgdW5pdDonUHJpb3JpdMOpJywgc3ViOiJsJ29yZHJlIGRhbnMgbGVxdWVsIGxlcyBncmFpbmVzIHBvcnRlbnQgbGV1cnMgZnJ1aXRzIiwgaXRlbXM6WwogICAgICB7IGg6J1ByZW1pZXIgZW50csOpLCBwcmVtaWVyIHNvcnRpLicsIGV4OiJVbmUgZ3JhaW5lIHBsYW50w6llIGF2YW50IHVuZSBhdXRyZSBnZXJtZXJhIGF2YW50IGxhIHNlY29uZGUuIFNpIHR1IGFpZGVzIHVuIGFtaSDDoCDDqnRyZSBwbHVzIGNyw6lhdGlmIGF1IHRyYXZhaWwgbGUgbHVuZGksIHB1aXMgdW4gYXV0cmUgYW1pIMOgIMOqdHJlIHBsdXMgY3LDqWF0aWYgbGUgbWFyZGksIGxhIGdyYWluZSBkdSBsdW5kaSBzJ291dnJpcmEgZW4gcHJlbWllci4iIH0sCiAgICAgIHsgaDonUXVhbmQgdHUgYXMgdW5lIGhhYml0dWRlLCBsYSBncmFpbmUgcG9ydGUgc2VzIGZydWl0cyBhdmFudCBsYSBwcmlvcml0w6kgMS4nLCBleDoiU2kgdHUgYXMgYWlkw6kgbCdhbWkgZHUgbWFyZGkgcsOpZ3VsacOocmVtZW50LCBjb21tZSB1bmUgaGFiaXR1ZGUsIGxhIGdyYWluZSBwbGFudMOpZSBhdmVjIGx1aSBzJ291dnJpcmEgYXZhbnQgY2VsbGUgcGxhbnTDqWUgYXZlYyBsJ2FtaSBkdSBsdW5kaS4iIH0sCiAgICAgIHsgaDoiUXVhbmQgdHUgYWlkZXMgcXVlbHF1J3VuIHF1aSBlc3Qgc3VyIGxlIHBvaW50IGRlIHZpdnJlIHVuIGdyYW5kIGNoYW5nZW1lbnQgcGVyc29ubmVsLCBsYSBncmFpbmUgcG9ydGUgc2VzIGZydWl0cyBhdmFudCBsYSBwcmlvcml0w6kgMi4iLCBleDoiU2kgdHUgYXMgYWlkw6kgZW5jb3JlIHVuIGF1dHJlIGFtaSDDoCDDqnRyZSBwbHVzIGNyw6lhdGlmIGxlIG1lcmNyZWRpIGV0IHF1ZSBsZSBqZXVkaSB1biBncmFuZCBjaGFuZ2VtZW50IGFsbGFpdCBzZSBwcm9kdWlyZSBkYW5zIHNhIHZpZSwgbGVzIGdyYWluZXMgcGxhbnTDqWVzIHRyw6hzIHByw6hzIGQndW4gw6l2w6luZW1lbnQgbWFqZXVyIG3Du3Jpc3NlbnQgYXZhbnQgY2VsbGVzIHBsYW50w6llcyBhdXBhcmF2YW50LiIgfSwKICAgICAgeyBoOiJRdWFuZCB0dSBhaWRlcyBxdWVscXUndW4gcXVpIHNlIGNvbnNhY3JlIMOgIHVuIGJ1dCBhdSBzZXJ2aWNlIGRlIG5vbWJyZXVzZXMgcGVyc29ubmVzLCBsYSBncmFpbmUgcG9ydGUgc2VzIGZydWl0cyBhdmFudCBsYSBwcmlvcml0w6kgMy4iLCBleDoiU2kgbCdhbWkgYWlkw6kgbGUgbWFyZGkgY2hlcmNoYWl0IHVuZSBtYW5pw6hyZSBjcsOpYXRpdmUgZGUgZ3XDqXJpciBsZSBjYW5jZXIsIHRhbmRpcyBxdWUgbGVzIGFtaXMgYWlkw6lzIGxlIGx1bmRpIGV0IGxlIG1lcmNyZWRpIGNoZXJjaGFpZW50IHVuZSBtYW5pw6hyZSBwbHVzIGNyw6lhdGl2ZSBkZSBzZSBtYXF1aWxsZXIsIGxlcyBncmFpbmVzIGR1IG1hcmRpIHBhc3NlbnQgZGV2YW50IGV0IHMnb3V2cmVudCBlbiBwcmVtaWVyLiIgfSBdIH0KICB9LAogIGludHJvOlsKICAgIFsiQmllbnZlbnVlIGRhbnMgbCdhcHBsaWNhdGlvbiBCb25uZXMgR3JhaW5lcyIsIlRvdXQgY2UgcXVlIHR1IHZpcyB2aWVudCBkZXMgZ3JhaW5lcyBxdWUgdHUgYXMgcGxhbnTDqWVzIHBhciB0ZXMgcGVuc8OpZXMsIHRlcyBwYXJvbGVzIGV0IHRlcyBhY3Rlcy4gTCdhcHBsaWNhdGlvbiB0J2FpZGUgw6Agdm9pciBjZSBxdWUgdHUgcGxhbnRlcyBjaGFxdWUgam91ciBldCDDoCBjaG9pc2lyIGNvbnNjaWVtbWVudCBsZXMgZ3JhaW5lcyBkZSBsYSB2aWUgcXVlIHR1IGTDqXNpcmVzLiJdLAogICAgWydUZXMgcHJhdGlxdWVzJywnTcOpZGl0YXRpb24gZXQgeW9nYSBhdmVjIG1pbnV0ZXVyLCBncmF0aXR1ZGVzIGV0IHN1Y2PDqHMsIGxhIG3DqWRpdGF0aW9uIGR1IGJvbmhldXIgZXQgbGVzIDQgcG91dm9pcnMuIFR1IGxlcyB0cm91dmVzIHRvdXRlcyBzb3VzIGxlIGJvdXRvbiBkdSBtaWxpZXUsIGV0IHRvdXQgY2UgcXVlIHR1IGZhaXMgdmEgZGFucyB0b24gam91cm5hbC4nXSwKICAgIFsnTGVzIG91dGlscyBkdSBqb3VyJywnVHJvdXZlIHVuZSBtYW5pw6hyZSBjcsOpYXRpdmUgZOKAmXV0aWxpc2VyIGxlcyAyIG91dGlscyBwb3VyIHRvbiBvYmplY3RpZi4nXSwKICAgIFsiUmVzcGVjdGUgbCdlbmdhZ2VtZW50IHByaXMgISIsIkNlIHF1ZSB0dSDDqWNyaXMgw6AgwqsgcXVpIGonYWlkZSDCuyBldCBhdSA0ZSBwb3V2b2lyIHZhIGRhbnMgdGEgbGlzdGUgw4AgZmFpcmUuIENvY2hlLWxlIHVuZSBmb2lzIGZhaXQgOiBsZXMgYm9ubmVzIGdyYWluZXMgZ3JhbmRpc3NlbnQgZXQgbGVzIGdyYWluZXMgbsOpZ2F0aXZlcyBzZSBkw6lzYWN0aXZlbnQuIl0sCiAgICBbJ1LDqWpvdWlzLXRvaSBkZXMgZ3JhaW5lcyBkZXMgYXV0cmVzJywiRGFucyBsYSBjb21tdW5hdXTDqSwgdHUgdm9pcywgZGUgbWFuacOocmUgYW5vbnltZSwgY2UgcXVlIGxlcyBhdXRyZXMgb250IHBsYW50w6kuIFF1YW5kIHR1IHRlIHLDqWpvdWlzIHBvdXIgZXV4LCB0dSBhcnJvc2VzIGxlcyBncmFpbmVzIGRlIHRvbiBvYmplY3RpZi4iXSBdLAogIGFib3V0OlsKICAgIFsnQ2UgcXVlIHNvbnQgbGVzIEJvbm5lcyBHcmFpbmVzJyxbIkJvbm5lcyBHcmFpbmVzIGVzdCB0b24gam91cm5hbCBkZSBwcmF0aXF1ZSBkdSBzeXN0w6htZSBkZXMgZ3JhaW5lcy4iLCJOb3RyZSBlc3ByaXQgZW5yZWdpc3RyZSB0b3V0IGNlIHF1ZSBub3VzIHBlbnNvbnMsIGRpc29ucyBldCBmYWlzb25zLiBDaGFxdWUgcGVuc8OpZSwgcGFyb2xlIG91IGFjdGlvbiBkZXZpZW50IHVuZSBncmFpbmUgcXVpIGdyYW5kaXQgw6AgbCdpbnTDqXJpZXVyIGRlIG5vdHJlIGVzcHJpdCBldCwgw6AgdW4gbW9tZW50IGRvbm7DqSwgcmV2aWVudCBkYW5zIG5vdHJlIHZpZSBzb3VzIGZvcm1lIGQnZXhww6lyaWVuY2UuIiwiTCdhcHBsaWNhdGlvbiB0J2FpZGUgw6AgcmVtYXJxdWVyIGNlIHF1ZSB0dSBwbGFudGVzIGV0IMOgIGNob2lzaXIgY29uc2NpZW1tZW50IGxlcyBncmFpbmVzIGRlIGNlIHF1ZSB0dSBkw6lzaXJlcy4iXV0sCiAgICBbIkNvbW1lbnQgbCd1dGlsaXNlciBjaGFxdWUgam91ciIsWyJMZSBtYXRpbiA6IHJhcHBlbGxlLXRvaSB0b24gb2JqZWN0aWYgZXQgZMOpY291dnJlIGxlcyBvdXRpbHMgZHUgam91ci4iLCJQZW5kYW50IGxhIGpvdXJuw6llIDogcmVtYXJxdWUgY2UgcXVlIHR1IHBsYW50ZXMuIE5vdGUgdGVzIGdyYXRpdHVkZXMgZXQgdGVzIHN1Y2PDqHMsIGV0IHF1YW5kIHR1IHJlY29ubmFpcyB1bmUgZ3JhaW5lIG7DqWdhdGl2ZSwgdHJhdmFpbGxlIGF2ZWMgbGVzIDQgcG91dm9pcnMuIiwiTGUgc29pciA6IGZhaXMgbGEgbcOpZGl0YXRpb24gZHUgYm9uaGV1ci4iLCJQYXMgYmVzb2luIGRlIGxvbmdzIHRleHRlcy4gUXVlbHF1ZXMgbWludXRlcyBkJ29ic2VydmF0aW9uIHNpbmPDqHJlLCBzYW5zIGp1Z2VtZW50IGV0IHNhbnMgY3VscGFiaWxpdMOpLCBzdWZmaXNlbnQuIEwnaW1wb3J0YW50IGVzdCBkZSByZXZlbmlyIGNoYXF1ZSBqb3VyLiJdXSwKICAgIFsnUG91ciBxdWknLFsiUG91ciB0b3V0ZSBwZXJzb25uZSBxdWkgYSB1biBvYmplY3RpZiBvdSB1biByw6p2ZSBldCB2ZXV0IGwnYXR0ZWluZHJlIGVuIHBsYW50YW50IGxlcyBib25uZXMgZ3JhaW5lcy4iLCJTaSB0dSB0cmF2ZXJzZXMgdW5lIHDDqXJpb2RlIGRpZmZpY2lsZSBvdSBzaSB1bmUgc2l0dWF0aW9uIHNlIHLDqXDDqHRlLCBjJ2VzdCBsZSBzaWduZSBxdWUgZGVzIGdyYWluZXMgcGxhbnTDqWVzIGRhbnMgbGUgcGFzc8OpIG3Du3Jpc3NlbnQuIEF2ZWMgbGVzIDQgcG91dm9pcnMsIHR1IHBldXggbGVzIGTDqXNhY3RpdmVyLCBldCBlbiBwbGFudGFudCBjb25zY2llbW1lbnQgZGUgYm9ubmVzIGdyYWluZXMsIHR1IHLDqcOpcXVpbGlicmVzIGxhIGJhbGFuY2UuIl1dLAogICAgWydRdWFuZCB0dSByZWNvbm5haXMgdW5lIGdyYWluZSBuw6lnYXRpdmUnLFsiTm91cyBwbGFudG9ucyB0b3VzLCBzYW5zIG5vdXMgZW4gcmVuZHJlIGNvbXB0ZSwgZGVzIGdyYWluZXMgbsOpZ2F0aXZlcyBhdXNzaS4gU2kgbm91cyBuZSBsZXMgZMOpc2FjdGl2b25zIHBhcywgZWxsZXMgY29udGludWVudCBkZSBncmFuZGlyLiIsIkF2ZWMgbGVzIDQgcG91dm9pcnMgOiB0dSB0ZSBzb3V2aWVucyBkJ2\/DuSB2aWVubmVudCB0b3V0ZXMgbGVzIGNob3NlcywgdHUgcHJlbmRzIGNvbnNjaWVuY2UgZGVzIGLDqW7DqWZpY2VzIHF1ZSB0dSBhcyBldXMgZXQgdHUgZMOpY2lkZXMgZGUgZMOpc2FjdGl2ZXIgbGEgZ3JhaW5lLCB0dSBwcm9tZXRzIGRlIG5lIHBsdXMgcsOpcMOpdGVyIGwnZXJyZXVyIHBlbmRhbnQgdW4gdGVtcHMgZXQgdHUgZmFpcyBxdWVscXVlIGNob3NlIGRlIHBvc2l0aWYgcG91ciBsJ8OpcXVpbGlicmVyLiIsIkNlIHF1ZSB0dSBwcm9tZXRzIGF1IDRlIHBvdXZvaXIgdmEgZGFucyB0YSBsaXN0ZSDDgCBmYWlyZSwgcG91ciBuZSBwYXMgb3VibGllciBkZSBsZSBmYWlyZSB2cmFpbWVudC4iXV0sCiAgICBbJ0xhIG3DqWRpdGF0aW9uIGR1IGJvbmhldXInLFsiTGUgbW9tZW50IHF1aSBwcsOpY8OoZGUgbGUgc29tbWVpbCByZWxpZSBsZSBjb25zY2llbnQgZXQgbGUgc3ViY29uc2NpZW50LiBDZSBxdWUgdHUgcGVuc2VzIGFsb3JzIGNvbnRpbnVlIGRlIGdyYW5kaXIgcGVuZGFudCBxdWUgdHUgZG9ycy4iLCJDJ2VzdCBwb3VycXVvaSwgbGUgc29pciwgcGVuc2UgYXZlYyBqb2llIGF1IGJpZW4gcXVlIHR1IGFzIGZhaXQgcG91ciBsZXMgYXV0cmVzIGV0IGTDqWRpZS1sZSDDoCB0b24gb2JqZWN0aWYuIiwiVHUgcGV1eCBhdXNzaSBsYSBmYWlyZSBwZW5kYW50IGxhIGpvdXJuw6llLCBkw6hzIHF1ZSB0dSBhcyBxdWVscXVlcyBtaW51dGVzLiJdXSwKICAgIFsnTGVzIG91dGlscyBkdSBqb3VyJyxbIkxlcyAyMCBvdXRpbHMgc29udCByZWdyb3Vww6lzIGVuIDUgc8OpcmllcyA6IExlcyA0IMOJdGFwZXMsIExlcyA0IFBvdXZvaXJzLCBMZXMgNCBMb2lzIGRlcyBHcmFpbmVzLCBMZXMgNCBGbGV1cnMgZXQgTGVzIDQgUHJpb3JpdMOpcy4gQ2hhcXVlIHPDqXJpZSBhIHNhIGNvdWxldXIgZXQgc29uIHN5bWJvbGUuIix7IHN1YnM6IkNoYXF1ZSBqb3VyLCB0dSBkw6ljb3V2cmVzIDIgb3V0aWxzIGV0IHR1IMOpY3JpcyBjb21tZW50IHR1IHV0aWxpc2VzIGxldXIgY29tYmluYWlzb24uIExlcyBvdXRpbHMgc29udCBhY2Nlc3NpYmxlcyBhdXggcGVyc29ubmVzIGF5YW50IHVuIGFib25uZW1lbnQgYWN0aWYuIiB9XV0sCiAgICBbJ0xhIGNvbW11bmF1dMOpJyxbIlR1IHBldXggcGFydGFnZXIgZGUgbWFuacOocmUgYW5vbnltZSB0ZXMgZ3JhdGl0dWRlcywgdGVzIHN1Y2PDqHMsIHRhIG3DqWRpdGF0aW9uIGR1IGJvbmhldXIgb3UgdGVzIDQgcG91dm9pcnMsIHNvdXMgdW4gbm9tIHF1ZSB0dSBjaG9pc2lzLiIsIlF1YW5kIHR1IHRlIHLDqWpvdWlzIGRlcyBncmFpbmVzIGRlcyBhdXRyZXMsIHR1IGFycm9zZXMgbGVzIGdyYWluZXMgZGUgdG9uIG9iamVjdGlmLiBRdWFuZCB0dSBsaXMgbGVzIDQgcG91dm9pcnMgZGUgcXVlbHF1J3VuLCB0dSBwZXV4IGF1c3NpIGxlcyBwYXJjb3VyaXIgcG91ciB0b2kuIiwiQ2UgcXVlIHR1IMOpY3JpcyByZXN0ZSBwcml2w6ksIHNhdWYgY2UgcXVlIHR1IGNob2lzaXMgZGUgcGFydGFnZXIuIl1dIF0sCiAga2FybWE6WwogICAgWydQcm90w6hnZSBsYSB2aWUnLCdQcmVuZHMgc29pbiBkZXMgcGVyc29ubmVzLCBkZXMgYW5pbWF1eCBldCBkZXMgcGxhbnRlcy4gTmUgYmxlc3NlIGludGVudGlvbm5lbGxlbWVudCBhdWN1biDDqnRyZS4nLCdMYSBncmFpbmUgZGUgbGEgc2FudMOpJ10sCiAgICBbJ1Byb3TDqGdlIGxhIHByb3ByacOpdMOpJywiRG9ubmUgZXQgYWlkZSBsZXMgYXV0cmVzLiBOZSBwcmVuZHMgcGFzIGNlIHF1aSBuZSB0J2FwcGFydGllbnQgcGFzIHNhbnMgcGVybWlzc2lvbi4iLCdMYSBncmFpbmUgZGUgbGEgcHJvc3DDqXJpdMOpJ10sCiAgICBbJ1B1cmV0w6kgc2V4dWVsbGUnLCJIb25vcmUgbGUgbGllbiBlbnRyZSBkZXV4IHBlcnNvbm5lcyBxdWkgc2Ugc29udCBlbmdhZ8OpZXMgbCd1bmUgZW52ZXJzIGwnYXV0cmUsIGxlIHRpZW4gZXQgY2VsdWkgZGVzIGF1dHJlcy4iLCdMYSBncmFpbmUgZHUgYm9uaGV1ciddLAogICAgWydJbnTDqWdyaXTDqScsJ0RpcyBsYSB2w6lyaXTDqSBldCB0aWVucyB0ZXMgcHJvbWVzc2VzLiBOZSBkaXMgcGFzIGNlIHF1ZSB0dSBuZSByZXNzZW5zIHBhcyB2cmFpbWVudC4nLCdMYSBncmFpbmUgZGUgbGEgY29uZmlhbmNlJ10sCiAgICBbJ0RpcyBkZXMgcGFyb2xlcyBxdWkgcmFzc2VtYmxlbnQgbGVzIGdlbnMnLCdVdGlsaXNlIHRlcyBwYXJvbGVzIHBvdXIgcmFzc2VtYmxlciBsZXMgZ2Vucy4gw4l2aXRlIGxlcyBwYXJvbGVzIHF1aSBkaXZpc2VudCBvdSBjcsOpZW50IGRlcyBtYWxlbnRlbmR1cy4nLCJMYSBncmFpbmUgZGUgbCdoYXJtb25pZSJdLAogICAgWydQYXJsZSBhdmVjIGRvdWNldXIgZXQgYmllbnZlaWxsYW5jZScsJ0FwcHLDqWNpZSBsZXMgYXV0cmVzIGV0IHBhcmxlLWxldXIgYXZlYyByZXNwZWN0LiDDiXZpdGUgbGVzIG1vdHMgZHVycyBldCBibGVzc2FudHMuJywnTGEgZ3JhaW5lIGR1IHJlc3BlY3QnXSwKICAgIFsnTmUgZGlzIHF1ZSBkZXMgcGFyb2xlcyB1dGlsZXMnLCdEaXMgZGVzIGNob3NlcyBxdWkgYWlkZW50IGV0IHF1aSBvbnQgdW4gc2Vucy4gw4l2aXRlIGxlcyBjb21tw6lyYWdlcyBldCBsZXMgcGFyb2xlcyB2aWRlcy4nLCdMYSBncmFpbmUgZHUgdGVtcHMnXSwKICAgIFsnUsOpam91aXMtdG9pIGR1IHN1Y2PDqHMgZGVzIGF1dHJlcycsIlLDqWpvdWlzLXRvaSBxdWFuZCBsZXMgYXV0cmVzIG9idGllbm5lbnQgY2UgcXUnaWxzIGTDqXNpcmVudCBldCBhcHByw6ljaWUgY2UgcXVlIHR1IGFzLiDDiXZpdGUgbCdlbnZpZSBldCBsJ2F2aWRpdMOpLiIsJ0xhIGdyYWluZSBkdSBzdWNjw6hzJ10sCiAgICBbJ0NvbXBhc3Npb24gcG91ciBsZXMgcHJvYmzDqG1lcyBkZXMgYXV0cmVzJywnT2ZmcmUgdGEgY29tcGFzc2lvbiDDoCBjZXV4IHF1aSB0cmF2ZXJzZW50IGRlcyBkaWZmaWN1bHTDqXMgZXQgYWlkZS1sZXMgY29tbWUgdHUgcGV1eC4gTmUgdGUgcsOpam91aXMgcGFzIGRlcyBtYWxoZXVycyBkZXMgYXV0cmVzLicsJ0xhIGdyYWluZSBkZSBsYSBjb21wYXNzaW9uJ10sCiAgICBbJ0NvbXByZW5kcyBjb21tZW50IGZvbmN0aW9ubmUgbGUgc3R5bG8nLCJTb3V2aWVucy10b2kgcXVlIHRvdXQgdmllbnQgZGVzIGdyYWluZXMgcGxhbnTDqWVzIGV0IHF1ZSBsZSBjaGFuZ2VtZW50IGNvbW1lbmNlIHBhciB0b2kuIFZpcyBldCBwYXJ0YWdlIGxlIHByaW5jaXBlIGR1IHN0eWxvLiIsJ0xhIGdyYWluZSBkZSBsYSBzYWdlc3NlJ10gXSwKICBrbGFiZWxzOlsiQXUgY2VudHJlIiwgIkRhbnMgbGVzIGNlcmNsZXMsIGF1IHF1b3RpZGllbiIsICJDZSBxdWkgcG9ydGUgc2VzIGZydWl0cyIsICJEYW5zIHRhIHZpZSA6IiwgIkF1dG91ciBkZSB0b2kgOiJdLCBraW50cm86IkNoYXF1ZSBrYXJtYSBzZSBwbGFudGUgwqsgYXUgY2VudHJlIMK7LCBwYXIgbOKAmWFjdGUgbGUgcGx1cyBmb3J0LCBldCDCqyBkYW5zIGxlcyBjZXJjbGVzIMK7LCBwYXIgbGVzIHBldGl0cyBnZXN0ZXMgZGUgY2hhcXVlIGpvdXIuIENoYXF1ZSBncmFpbmUgcG9ydGUgc2VzIGZydWl0cyDDoCBkZXV4IGVuZHJvaXRzIDogZGFucyB0YSB2aWUgZXQgZGFucyBsZSBtb25kZSBxdWkgdOKAmWVudG91cmUuIiwKICBrYXJtYVg6W3siYyI6ICJTYXV2ZXIgdW5lIHZpZSBvdSBhaWRlciB1bmUgbm91dmVsbGUgdmllIMOgIHZlbmlyIGF1IG1vbmRlLiIsICJrIjogWyJQcmVuZHMgc29pbiBkZSB0b24gY29ycHMgOiBtb3V2ZW1lbnQsIHNvbW1laWwsIGFsaW1lbnRhdGlvbiBzYWluZSwgYXZlYyBtb2lucyBkZSB2aWFuZGUsIGTigJlhbGNvb2wgZXQgZGUgc3VjcmVyaWVzLiIsICJTb2lnbmUgbGVzIHBlcnNvbm5lcyBtYWxhZGVzIGV0IGFpZGUgbGVzIGF1dHJlcyDDoCB2aXZyZSBzYWluZW1lbnQuIiwgIkNvbmR1aXMgcHJ1ZGVtbWVudCwgc2FucyB0w6lsw6lwaG9uZSDDoCBsYSBtYWluLCBldCBnYXJkZSBwcm9wcmUgbOKAmWVuZHJvaXQgb8O5IHR1IHZpcyBldCB0cmF2YWlsbGVzLiJdLCAidiI6ICJzYW50w6ksIMOpbmVyZ2llIGV0IHVuIGNvcnBzIHBsZWluIGRlIHZpdGFsaXTDqSBqdXNxdeKAmcOgIHVuIMOiZ2UgYXZhbmPDqS4iLCAiaiI6ICJkZXMgcGVyc29ubmVzIGVuIGJvbm5lIHNhbnTDqSwgdW4gYWlyIHB1ciBldCBkdSBjYWxtZS4ifSwgeyJjIjogIkRvbm5lciwgdG91dGUgc29ydGUgZGUgcmVzc291cmNlcy4iLCAiayI6IFsiUHJlbmRzIHNvaW4gZGVzIGNob3NlcyBxdWUgdHUgdXRpbGlzZXMgZXQgbmUgZ2FzcGlsbGUgcGFzLiIsICJQYWllIHRlcyBmYWN0dXJlcyBldCB0ZXMgaW1ww7R0cyDDoCB0ZW1wcyBldCBhcnJpdmUgw6AgbOKAmWhldXJlIGF1eCByZW5kZXotdm91cyA6IGxlIHRlbXBzIGRlcyBhdXRyZXMgZXN0IGF1c3NpIHVuZSByZXNzb3VyY2UuIiwgIlJlY29tbWFuZGUgbGVzIGJvbnMgcHJvZHVpdHMgZXQgc2VydmljZXMsIG1ldHMgbGVzIGdlbnMgZW4gcmVsYXRpb24sIGFwcHJlbmRzIMOgIHF1ZWxxdeKAmXVuIMOgIGdhZ25lciBkZSBs4oCZYXJnZW50LiJdLCAidiI6ICJhYm9uZGFuY2UsIGR1IHRlbXBzIGxpYnJlIHBvdXIgdG9pLCBkZSBsYSBzw6lyw6luaXTDqSwgZXQgbGVzIHJlc3NvdXJjZXMgYXJyaXZlbnQgZXhhY3RlbWVudCBxdWFuZCB0dSBlbiBhcyBiZXNvaW4uIiwgImoiOiAidW4gbGlldSByaWNoZSBlbiByZXNzb3VyY2VzLCBlbnRvdXLDqSBkZSBwZXJzb25uZXMgcHJvc3DDqHJlcy4ifSwgeyJjIjogIkxhIGZpZMOpbGl0w6kgZGFucyB0YSByZWxhdGlvbiBldCBsZSByZXNwZWN0IGRlIGzigJllbmdhZ2VtZW50IHF1ZSBkZXV4IGF1dHJlcyBwZXJzb25uZXMgb250IHByaXMuIiwgImsiOiBbIlR1IG5lIGNoZXJjaGVzIHBhcyBkZSByYXBwcm9jaGVtZW50IG5pIGRlIHJlbGF0aW9uIGF2ZWMgcXVlbHF14oCZdW4gbMOgIG\/DuSBpbCBu4oCZZXhpc3RlIHBhcyBkZSBsaWVuIHB1ci4iLCAiUGFzc2UgZHUgdGVtcHMgYXZlYyBjZXV4IHF1aSBzb250IHNldWxzIDogcGVyc29ubmVzIMOiZ8OpZXMsIGVuZmFudHMsIGFtaXMuIiwgIlJlZ2FyZGUgdG9uIHBhcnRlbmFpcmUgY29tbWUgdW4gYW5nZSBkw6lndWlzw6kgZXQgZmFpcyBhdHRlbnRpb24gw6AgY2UgcXVlIHR1IHJlZ2FyZGVzIGV0IMOgIGNlIHF1ZSB0dSBwYXJ0YWdlcy4iXSwgInYiOiAidW5lIHJlbGF0aW9uIMOpcGFub3VpZSwgcGxlaW5lIGRlIHRlbmRyZXNzZSwgYXZlYyB1biBwYXJ0ZW5haXJlIGF0dGVudGlmIMOgIHRlcyBtb2luZHJlcyBiZXNvaW5zLiIsICJqIjogInVuIGVudmlyb25uZW1lbnQgcHJvcHJlLCBsYSBwdXJldMOpIGRhbnMgdG91dCBjZSBxdWUgdHUgdm9pcy4ifSwgeyJjIjogIkRpcmUgbGEgdsOpcml0w6kgw6AgMTAwICUsIHBvdXIgcXVlIGzigJlpbWFnZSBkYW5zIGzigJllc3ByaXQgZGUgbOKAmWF1dHJlIHNvaXQgbGEgbcOqbWUgcXVlIGxhIHLDqWFsaXTDqS4iLCAiayI6IFsiUGFybGUgb3V2ZXJ0ZW1lbnQgYXZlYyB0YSBmYW1pbGxlLCB0ZXMgY2xpZW50cyBldCB0ZXMgY29sbGFib3JhdGV1cnMuIiwgIlRpZW5zIHRlcyBwcm9tZXNzZXMsIHkgY29tcHJpcyBjZWxsZXMgcXVlIHR1IHRlIGZhaXMgw6AgdG9pLW3Dqm1lLiIsICJOZSBmYWlzIHBhcyBkZSBwcm9tZXNzZXMgcXVlIHR1IHJpc3F1ZXMgZGUgbmUgcGFzIHRlbmlyLiBMZXMgwqsgcGV0aXRzIG1lbnNvbmdlcyDCuyBu4oCZeSBvbnQgcGFzIGxldXIgcGxhY2Ugbm9uIHBsdXMuIl0sICJ2IjogImxlcyBnZW5zIG9udCBjb25maWFuY2UgZW4gdGEgcGFyb2xlLCB0dSBhcyBkZSBs4oCZw6luZXJnaWUgZXQgbGEgcGFpeCBkZSBs4oCZZXNwcml0LiIsICJqIjogImRlcyBhbWlzIGV0IGRlcyBwYXJ0ZW5haXJlcyBk4oCZYWZmYWlyZXMgaG9ubsOqdGVzLCBxdWkgc2UgcmVzcGVjdGVudCBtdXR1ZWxsZW1lbnQuIn0sIHsiYyI6ICJGYWlyZSBs4oCZw6lsb2dlIGTigJl1bmUgcGVyc29ubmUgZGV2YW50IHF1ZWxxdeKAmXVuIGTigJlhdXRyZS4iLCAiayI6IFsiQ2hlcmNoZSBsZXMgcXVhbGl0w6lzIGRlcyBnZW5zIGV0IGRpcy1sZXMgw6Agdm9peCBoYXV0ZS4iLCAiRW5jb3VyYWdlIGxhIGNvbGxhYm9yYXRpb24sIG1ldHMgbGVzIGdlbnMgZW4gcmVsYXRpb24sIGZhaXMgY29ubmHDrnRyZSBsZXMgw6l2w6luZW1lbnRzIHF1aSBsZXMgcmFzc2VtYmxlbnQuIiwgIk5lIGNvbXBhcmUgcGFzIGxlcyBnZW5zIGV0IG5lIGRpc2NyaW1pbmUgcGVyc29ubmUuIl0sICJ2IjogImRlcyByZWxhdGlvbnMgw6lwYW5vdWllcyBldCBkZXMgYW1pdGnDqXMgcXVpIGR1cmVudC4iLCAiaiI6ICJ1biBncm91cGUgb8O5IGxlcyBnZW5zIHNlIHNvdXRpZW5uZW50LCBldCBkZXMgY2hlbWlucyBmYWNpbGVzIHBvdXIgdG9pLiJ9LCB7ImMiOiAiUGFybGVyIGNhbG1lbWVudCwgZGUgbWFuacOocmUgZMOpdGVuZHVlLCBhdmVjIHVuIHRvbiBkb3V4LiIsICJrIjogWyLDiWNvdXRlIHZyYWltZW50IGV0IGRvbm5lIGRlcyByZXRvdXJzIGNvbnN0cnVjdGlmcy4iLCAiTcOpZGl0ZSwgZmFpcyBkdSB5b2dhLCBwcm9tw6huZS10b2kgZGFucyBsYSBuYXR1cmUsIMOpY291dGUgdW5lIG11c2lxdWUgYXBhaXNhbnRlLiIsICJQcmVuZHMgc29pbiBhdXNzaSBkZSB0ZXMgcGFyb2xlcyBpbnTDqXJpZXVyZXMsIHkgY29tcHJpcyBjZWxsZXMgcXVlIHR1IHRlIGRpcyDDoCB0b2ktbcOqbWUuIl0sICJ2IjogInVuIHNvbW1laWwgcGFpc2libGUgZXQgbGEgcGFpeCBkZSBs4oCZZXNwcml0LiIsICJqIjogImRlcyBwZXJzb25uZXMgcXVpIGNvbW11bmlxdWVudCBkZSBtYW5pw6hyZSBkw6l0ZW5kdWUsIHNhbnMgZGlzcHV0ZXMuIn0sIHsiYyI6ICJUcmFuc21ldHRyZSBs4oCZaWTDqWUgcXVlIHRvdXQgdmllbnQgZGVzIGdyYWluZXMuIiwgImsiOiBbIlBhcmxlIGRlIGNob3NlcyBxdWkgYXBwb3J0ZW50IGRlIGxhIHZhbGV1ciBkYW5zIGxhIHZpZSBkZXMgZ2Vucy4iLCAiQ2hvaXNpcyBkZXMgbGl2cmVzLCBkZXMgZmlsbXMgZXQgZGVzIHB1YmxpY2F0aW9ucyBxdWkgdOKAmWFwcHJlbm5lbnQgw6AgYXBwb3J0ZXIgZGUgbGEgdmFsZXVyIGF1eCBhdXRyZXMuIiwgIsOJdml0ZSBsZXMgY29tbcOpcmFnZXMgZGUgdG91dGUgc29ydGUgZXQgbGUgdGVtcHMgcGVyZHUgc3VyIGRlcyBjb250ZW51cyB2aWRlcy4iXSwgInYiOiAidGVzIHBhcm9sZXMgb250IGR1IHBvaWRzIGV0IHRvbiB0ZW1wcyBzZSByZW1wbGl0IGRlIGNob3NlcyBxdWkgb250IGR1IHNlbnMuIiwgImoiOiAibGVzIGdlbnMgdOKAmcOpY291dGVudCBxdWFuZCB0dSBwYXJsZXMuIn0sIHsiYyI6ICJTZSByw6lqb3VpciBzaW5jw6hyZW1lbnQgcXVhbmQgbGVzIGF1dHJlcyBvYnRpZW5uZW50IGNlIHF14oCZaWxzIGTDqXNpcmVudC4iLCAiayI6IFsiU291dGllbnMgZXQgZW5jb3VyYWdlIGxlcyBhdXRyZXMuIiwgIlLDqWpvdWlzLXRvaSBkZXMgcsOpdXNzaXRlcyBldCBkZXMgcHVibGljYXRpb25zIGRlcyBhdXRyZXMgZXQgYXBwcsOpY2llLWxlcy4iLCAiTmUgdGUgY29tcGFyZSBwYXMgZXQgbmUgY29tbWVudGUgamFtYWlzIGF2ZWMgaXJvbmllIGxlIHN1Y2PDqHMgZGUgcXVlbHF14oCZdW4uIl0sICJ2IjogImR1IHN1Y2PDqHMgZGFucyB0ZXMgcHJvamV0cywgZGUgbGEgam9pZSBkYW5zIGNlIHF1ZSB0dSBmYWlzLCB0dSBkw6ljb3V2cmVzIHRhIHBhc3Npb24gZXQgdGEgdm9jYXRpb24uIiwgImoiOiAidW4gZW52aXJvbm5lbWVudCBvw7kgdHUgcmXDp29pcyBkdSBzb3V0aWVuIGV0IG\/DuSBsZXMgcmVzc291cmNlcyBleGlzdGVudC4ifSwgeyJjIjogIkxhIGNvbXBhc3Npb24gcG91ciBsYSBzb3VmZnJhbmNlIGRlIHF1ZWxxdeKAmXVuLiIsICJrIjogWyJBaWRlIGNoYXF1ZSBmb2lzIHF1ZSB0dSBlbiBhcyBs4oCZb2NjYXNpb24uIiwgIkNob2lzaXMgZGVzIGxpdnJlcyBldCBkZXMgZmlsbXMgcXVpIGVuY291cmFnZW50IGxhIGNvbXBhc3Npb24uIiwgIlF1YW5kIHF1ZWxxdeKAmXVuIHNlIHRyb21wZSwgbGFpc3NlIGRlIGPDtHTDqSDCqyBqZSBsZSBzYXZhaXMgwrsgb3UgwqsgauKAmWF2YWlzIHJhaXNvbiDCuy4iXSwgInYiOiAidHUgdHJvdXZlcyBkZSBs4oCZYWlkZSBxdWFuZCB0dSBlbiBhcyBiZXNvaW4gZXQgdHUgw6l2b2x1ZXMgc3Bpcml0dWVsbGVtZW50LiIsICJqIjogImRlcyBwZXJzb25uZXMgcXVpIHNlIHNvdXRpZW5uZW50LCB1biBlbnZpcm9ubmVtZW50IHBhaXNpYmxlLiJ9LCB7ImMiOiAiRXhwbGlxdWVyIGxlIHByaW5jaXBlIGR1IHN0eWxvIMOgIHF1ZWxxdeKAmXVuIGTigJlhdXRyZS4iLCAiayI6IFsiRmFpcyBkZXMgcGF1c2VzIGRhbnMgbGEgam91cm7DqWUgcG91ciB0ZSByYXBwZWxlciBxdWUgY2UgcXVlIHR1IHZvaXMsIGZhaXMgZXQgcGVuc2VzIHZpZW50IGRlIHRlcyBncmFpbmVzLiIsICJMaXMgZXQgw6ljb3V0ZSBkZXMgY29udGVudXMgc3VyIGxlIGZvbmN0aW9ubmVtZW50IGRlcyBncmFpbmVzLiIsICJRdWFuZCBxdWVscXVlIGNob3NlIG5lIHZhIHBhcywgbmUgcmVqZXR0ZSBwYXMgbGEgZmF1dGUgc3VyIGxlcyBhdXRyZXMgOiBkZW1hbmRlLXRvaSBxdWVsbGVzIGdyYWluZXMgcGxhbnRlci4iXSwgInYiOiAidGVzIHByb2pldHMgdm9udCBqdXNxdeKAmWF1IGJvdXQgZXQgdHUgcmVzc2VucyBkZSBwbHVzIGVuIHBsdXMgZGUgbGliZXJ0w6kgaW50w6lyaWV1cmUuIiwgImoiOiAidHUgY29tcHJlbmRzIGNlIHF1aSBzZSBwYXNzZSBhdXRvdXIgZGUgdG9pIGV0IHR1IG5lIHRlIHNlbnMgcGx1cyBkw6lwYXNzw6kgcGFyIGxlcyBjaG9zZXMuIn1dLAogIGdyb3VwczpbJ0FDVEVTJywnUEFST0xFUycsJ1BFTlPDiUVTJ10sIGRvbWFpbnM6WydBcmdlbnQnLCdSZWxhdGlvbnMnLCdTYW50w6knXQp9OwpYVC5pdCA9IHsKICB1aTp7IG5hdkpvdXJuYWw6J0RpYXJpbycsIG5hdlByb2ZpbGU6J1Byb2ZpbG8nLAogICAgdG9kb0xlYWQ6J0Npw7IgY2hlIGhvIHByb21lc3NvIGRpIGZhcmUuIEdsaSBpbXBlZ25pIGNoZSBobyBwcmVzby4nLAogICAgdVRpdGxlOidJIHR1b2kgc3RydW1lbnRpIGRpIG9nZ2knLCB1TG9ja2VkOidPZ25pIGdpb3JubyBwdW9pIHNjb3ByaXJlIDIgZGVpIDIwIHN0cnVtZW50aTogSSA0IFBhc3NpLCBJIDQgUG90ZXJpLCBMZSA0IExlZ2dpIGRlaSBTZW1pLCBJIDQgRmlvcmkgZSBMZSA0IFByaW9yaXTDoC4nLAogICAgdUxvY2tNc2c6J1RpIHNlcnZlIHVuIGFiYm9uYW1lbnRvIGF0dGl2byBwZXIgdXNhcmUgZ2xpIHN0cnVtZW50aS4nLCB1U2VlU3ViczonVmVkaSBnbGkgYWJib25hbWVudGknLAogICAgdURyYXdOb3RlOidUb2NjYSBlIHNjb3ByaSBpIDIgc3RydW1lbnRpIGNvbiBjdWkgbGF2b3JpIG9nZ2kuJywgdURyYXc6J1Njb3ByaSBnbGkgc3RydW1lbnRpIGRpIG9nZ2knLAogICAgdVE6J0NvbWUgdXNvIG9nZ2kgcXVlc3RhIGNvbWJpbmF6aW9uZSBkaSBzdHJ1bWVudGk\/JywgdVBoOidTY3JpdmkgcGVyIHRlLiBSZXN0YSBzb2xvIG5lbCB0dW8gZGlhcmlvLicsCiAgICB1U2F2ZTonU2FsdmEgbmVsIGRpYXJpbycsIHVVcGRhdGU6J0FnZ2lvcm5hIG5lbCBkaWFyaW8nLCB1QWdhaW46J1NjZWdsaSB1bmEgbnVvdmEgY29tYmluYXppb25lIGRpIHN0cnVtZW50aScsIHVTYXZlZDonU2FsdmF0byBuZWwgdHVvIGRpYXJpbycsCiAgICB1U2ltT246J1ZlcnNpb25lIGRpIHByb3ZhOiBzaW11bGEgdW4gYWJib25hbWVudG8gYXR0aXZvJywgdVNpbU9mZjonVmVyc2lvbmUgZGkgcHJvdmE6IHNpbXVsYSBzZW56YSBhYmJvbmFtZW50bycsCiAgICBodWJUaXRsZTonQ29zYSBwcmF0aWNoaSBhZGVzc28\/JywgaHViTGVhZDonU2NlZ2xpIGxhIHByYXRpY2EuIFR1dHRvIGNpw7IgY2hlIGZhaSBmaW5pc2NlIG5lbCB0dW8gZGlhcmlvLicsIGh1YkJ1c3k6J1VuYSBwcmF0aWNhIMOoIGluIGNvcnNvIMK3IHRvcm5hIGFsIHRpbWVyJywKICAgIG15UHJvZmlsZTonSWwgbWlvIHByb2ZpbG8nLCBjaGFuZ2VOYW1lOidDYW1iaWEgbm9tZScsIHBpY2tOYW1lOidTY2VnbGkgdW4gbm9tZSBwZXIgbGEgY29tdW5pdMOgJywKICAgIHN0UHJhY3Q6J3ByYXRpY2hlJywgc3RNaW46J21pbnV0aScsIHN0VG9kbzonRGEgZmFyZSBjb21wbGV0YXRpJywgYXZhdGFyOidJbCBtaW8gYXZhdGFyJywgYWRkcmVzczonQ29tZSBtaSByaXZvbGdvIGEgdGUnLAogICAgaW50cm86J0ludHJvZHV6aW9uZScsIGFib3V0OiJJbmZvcm1hemlvbmkgc3VsbCdhcHAiLCBrYXJtYTonSSAxMCBLYXJtYSBQb3NpdGl2aScsIGthcm1hU3ViOiJMJ2lzcGlyYXppb25lIGRlbGwnYXBwIiwgY29udGFjdDonQ29udGF0dG8nLAogICAgcHJvZkJhbm5lcjoiVmVyc2lvbmUgZGkgcHJvdmEuIE5lbGwnYXBwIHBlciB0ZWxlZm9ubyB0cm92ZXJhaSBxdWkgYW5jaGU6IGkgcHJvbWVtb3JpYSAoZmlubyBhIDYgYWwgZ2lvcm5vKSwgaWwgY2FtYmlvIGRlbGwnZW1haWwsIGxhIGNhbmNlbGxhemlvbmUgZGVpIGRhdGksIGxhIGNhbmNlbGxhemlvbmUgZGVsbCdhY2NvdW50LCBsJ2luZm9ybWF0aXZhIHN1bGxhIHByaXZhY3kgZSBpIHRlcm1pbmkuIiwKICAgIG92UHJldjonSW5kaWV0cm8nLCBvdk5leHQ6J0F2YW50aScsIG92U3RhcnQ6J0luaXppYScsIGJ5RG9tYWluOidSQUdHUlVQUEFUSSBQRVIgQU1CSVRPJywKICAgIGthcm1hTGVhZDoiTCdpc3BpcmF6aW9uZSBkZWxsJ2FwcC4gUHVvaSB1c2FybGkgbmVsbGEgcHJhdGljYSBkZWkgNCBwb3RlcmkgZSBuZWxsYSBtZWRpdGF6aW9uZSBkZWxsYSBnaW9pYS4iIH0sCiAga2luZFU6J1N0cnVtZW50aSBkZWwgZ2lvcm5vJywKICBzZXRzOnsKICAgIHBhc2k6eyJuYW1lIjogIkkgNCBQYXNzaSIsICJ1bml0IjogIlBhc3NvIiwgInN1YiI6ICJwZXIgYW5uYWZmaWFyZSBpIHNlbWkgZGVsIHR1byBvYmlldHRpdm8iLCAiaXRlbXMiOiBbeyJ0IjogIkRpJyBjb3NhIHZ1b2kgbmVsbGEgdHVhIHZpdGEgY29uIHVuYSBmcmFzZSBicmV2ZSwiLCAiYWRkIjogImluIGZvcm1hIGFmZmVybWF0aXZhIGUgYWwgdGVtcG8gcHJlc2VudGUuIn0sIHsidCI6ICJQaWFuaWZpY2EgY2hpIGFpdXRlcmFpIGEgb3R0ZW5lcmUgbGEgc3Rlc3NhIGNvc2EgZSBkb3ZlIGludml0ZXJhaSBxdWVsbGEgcGVyc29uYSBwZXIgcGFybGFybmUuIiwgImFkZCI6ICJEaXZlbnRhIGlsIHR1byBwYXJ0bmVyIGthcm1pY28uIn0sIHsidCI6ICJBaXV0YSBjb25jcmV0YW1lbnRlIHF1ZWxsYSBwZXJzb25hLiIsICJhZGQiOiAiUGVyIGVzZW1waW8sIHVu4oCZb3JhIGFsbGEgc2V0dGltYW5hLCBkYXZhbnRpIGEgdW4gY2FmZsOoLiJ9LCAiRmFpIGxhIE1lZGl0YXppb25lIGRlbGxhIGdpb2lhOiBxdWFuZG8gdmFpIGEgZG9ybWlyZSwgcGVuc2EgY29uIGdpb2lhIGFsbGUgY29zZSBidW9uZSBjaGUgZmFpIHBlciBnbGkgYWx0cmkuIl19LAogICAgcHV0ZXJpOnsibmFtZSI6ICJJIDQgUG90ZXJpIiwgInVuaXQiOiAiUG90ZXJlIiwgInN1YiI6ICJwZXIgZGlzYXR0aXZhcmUgaSBzZW1pIG5lZ2F0aXZpIHBpYW50YXRpIGluIHBhc3NhdG8iLCAiaXRlbXMiOiBbeyJoIjogIlJpY29yZGFyZSBsYSBwZW5uYSIsICJleCI6ICJUdXR0ZSBsZSBjb3NlIHZlbmdvbm8gZGFpIHNlbWkgcGlhbnRhdGkgaW4gcGFzc2F0by4gUmljb3JkYSBxdWFsaSBzZW1pIGhhaSBwaWFudGF0byBpbiBwYXNzYXRvIGUgc29ubyBjcmVzY2l1dGkuIn0sIHsiaCI6ICJJbCByaW1waWFudG8gaW50ZWxsaWdlbnRlIiwgImV4IjogIlByZW5kaSBjb3NjaWVuemEgZGVpIGJlbmVmaWNpIGNoZSBoYWkgYXZ1dG8gcXVhbmRvIGhhaSBwaWFudGF0byBpbCBzZW1lIGUgcHJlbmRpIGxhIGZlcm1hIGRlY2lzaW9uZSBkaSBkaXNhdHRpdmFybG8gcHJpbWEgY2hlIHNpIG1vbHRpcGxpY2hpIGFuY29yYSBkaSBwacO5LiJ9LCB7ImgiOiAiTGEgcmVzdHJpemlvbmUiLCAiZXgiOiAiUHJvbWV0dGkgZGkgbm9uIHJpcGV0ZXJlIGxvIHN0ZXNzbyBlcnJvcmUgcGVyIHVuIGNlcnRvIHBlcmlvZG8gZGkgdGVtcG8uIn0sIHsiaCI6ICJM4oCZYW50aWRvdG8iLCAiZXgiOiAiRmFpIHF1YWxjb3NhIGRpIHBvc2l0aXZvIHBlciBiaWxhbmNpYXJlIGkgc2VtaSBuZWdhdGl2aS4ifV19LAogICAgbGVnaTp7Im5hbWUiOiAiTGUgNCBMZWdnaSBkZWkgU2VtaSIsICJ1bml0IjogIkxlZ2dlIiwgInN1YiI6ICJsZSBsZWdnaSBzZWNvbmRvIGN1aSBmdW56aW9uYW5vIGkgc2VtaSIsICJpdGVtcyI6IFt7ImgiOiAiUmljZXZpIGNpw7IgY2hlIGRhaSIsICJleCI6ICJSYWNjb2dsaSBjacOyIGNoZSBoYWkgc2VtaW5hdG86IHNlIHBpYW50aSBzZW1pIGRpIGFuZ3VyaWEsIG90dGVycmFpIHVuJ2FuZ3VyaWEuIiwgImFkZCI6ICJMYSBsZWdnZSBmdW56aW9uYSBpbiBlbnRyYW1iaSBpIHNlbnNpOiBpbCBiZW5lIHBvcnRhIGJlbmUsIGUgdW7igJlhemlvbmUgbmVnYXRpdmEgcG9ydGEgcXVhbGNvc2EgZGkgbmVnYXRpdm8uIn0sIHsiaCI6ICJJIHNlbWkgY3Jlc2Nvbm8iLCAiZXgiOiAiQ2nDsiBjaGUgcmljZXZpIGluIGNhbWJpbyDDqCBzZW1wcmUgbW9sdG8sIG1vbHRvIHBpw7kgZ3JhbmRlIGRpIGNpw7IgY2hlIGhhaSBmYXR0by4iLCAiYWRkIjogIlNpYSBxdWVsbGkgYnVvbmkgc2lhIHF1ZWxsaSBuZWdhdGl2aS4ifSwgeyJoIjogIlNlIG5vbiBmYWkgbnVsbGEsIG5vbiBzdWNjZWRlIG51bGxhIiwgImV4IjogIlNlIG5vbiBmYWkgbnVsbGEsIG5vbiByaWNldmVyYWkgbnVsbGEgaW4gY2FtYmlvLiIsICJhZGQiOiAiTGltaXRhcnNpIGEgc3BlcmFyZSBvIGFkIGFzcGV0dGFyZSBub24gcGlhbnRhIG5lc3N1biBzZW1lLiJ9LCB7ImgiOiAiQ2nDsiBjaGUgaGFpIHBpYW50YXRvIGRldmUgZ2VybW9nbGlhcmUiLCAiZXgiOiAiU2UgZmFpIHF1YWxjb3NhLCBhbGxvcmEgZGV2aSByaWNldmVyZSBxdWFsY29zYSBpbiBjYW1iaW8uIiwgImFkZCI6ICJJIHNlbWkgbm9uIHNjb21wYWlvbm8sIG7DqSBxdWVsbGkgYnVvbmkgbsOpIHF1ZWxsaSBuZWdhdGl2aS4gQSB1biBjZXJ0byBwdW50byBnZXJtb2dsaWFuby4ifV19LAogICAgZmxvcmk6eyJuYW1lIjogIkkgNCBGaW9yaSIsICJ1bml0IjogIkZpb3JlIiwgInN1YiI6ICJpbCBtb2RvIGluIGN1aSBpIHNlbWkgZGFubm8gZnJ1dHRvIiwgIml0ZW1zIjogW3siaCI6ICJSaWNldmkgZXNhdHRhbWVudGUgY2nDsiBjaGUgZGFpLiIsICJhZGQiOiAiQ2hpIHNlbWluYSBhbW9yZSByYWNjb2dsaWUgYW1vcmUuIn0sIHsiaCI6ICJPZ25pIGF6aW9uZSBjcmVhIHVuJ2FiaXR1ZGluZS4iLCAiYWRkIjogIkFuY2hlIGkgcGVuc2llcmkgY2hlIHRpIHZlbmdvbm8g4oCcc2VuemEgdm9sZXJsb+KAnSBzb25vIGFiaXR1ZGluaSBjcmVhdGUgZGEgY2nDsiBjaGUgaGFpIGZhdHRvIHByaW1hLiBDacOyIGNoZSByaXBldGkgb2dnaSB0aSB2aWVuZSBwacO5IGZhY2lsZSBkb21hbmkuIn0sIHsiaCI6ICJDacOyIGNoZSBmYWkgY3JlYSBsZSBwZXJzb25lIGUgbCdhbWJpZW50ZSBpbnRvcm5vIGEgdGUuIiwgImFkZCI6ICJRdWFuZG8gYXBwcmV6emkgZ2xpIGFsdHJpIGUgbGkgYXZ2aWNpbmkgdHJhIGxvcm8sIGZpbmlzY2kgY2lyY29uZGF0byBkYSBwZXJzb25lIGNoZSB2YW5ubyBk4oCZYWNjb3Jkby4gUXVhbmRvIGRpdmlkaSwgdmVkcmFpIHBlcnNvbmUgY2hlIGxpdGlnYW5vLiJ9LCB7ImgiOiAiQ2nDsiBjaGUgZmFpIGNyZWEgaWwgbW9uZG8gaW4gY3VpIGVudHJlcmFpLiIsICJhZGQiOiAiQ2nDsiBjaGUgcGlhbnRpIG9nZ2kgcHJlcGFyYSBpbCBtb25kbyBpbiBjdWkgYXJyaXZlcmFpIGRvbWFuaS4gUXVhbmRvIGNhbWJpIGNpw7IgY2hlIGZhaSwgY2FtYmlhIGFuY2hlIGlsIHR1byBtb25kby4ifV19LAogICAgcHJpb3JpdGF0aTp7IG5hbWU6J0xlIDQgUHJpb3JpdMOgJywgdW5pdDonUHJpb3JpdMOgJywgc3ViOiJsJ29yZGluZSBpbiBjdWkgaSBzZW1pIGRhbm5vIGZydXR0byIsIGl0ZW1zOlsKICAgICAgeyBoOidQcmltbyBhIGVudHJhcmUsIHByaW1vIGEgdXNjaXJlLicsIGV4OiJVbiBzZW1lIHBpYW50YXRvIHByaW1hIGRpIHVuIGFsdHJvIGdlcm1vZ2xpZXLDoCBwcmltYSBkZWwgc2Vjb25kby4gU2UgbHVuZWTDrCBhaXV0aSB1biBhbWljbyBhIGVzc2VyZSBwacO5IGNyZWF0aXZvIGFsIGxhdm9ybyBlIG1hcnRlZMOsIGFpdXRpIHVuIGFsdHJvIGFtaWNvIGEgZXNzZXJlIHBpw7kgY3JlYXRpdm8sIGlsIHNlbWUgZGkgbHVuZWTDrCBzaSBhcHJpcsOgIHBlciBwcmltby4iIH0sCiAgICAgIHsgaDoiUXVhbmRvIGhhaSB1bidhYml0dWRpbmUsIGlsIHNlbWUgZMOgIGZydXR0byBwcmltYSBkZWxsYSBwcmlvcml0w6AgMS4iLCBleDoiU2UgaGFpIGFpdXRhdG8gbCdhbWljbyBkaSBtYXJ0ZWTDrCByZWdvbGFybWVudGUsIGNvbWUgdW4nYWJpdHVkaW5lLCBpbCBzZW1lIHBpYW50YXRvIGNvbiBsdWkgc2kgYXByaXLDoCBwcmltYSBkaSBxdWVsbG8gcGlhbnRhdG8gY29uIGwnYW1pY28gZGkgbHVuZWTDrC4iIH0sCiAgICAgIHsgaDonUXVhbmRvIGFpdXRpIHF1YWxjdW5vIGNoZSBzdGEgcGVyIGF0dHJhdmVyc2FyZSB1biBncmFuZGUgY2FtYmlhbWVudG8gcGVyc29uYWxlLCBpbCBzZW1lIGTDoCBmcnV0dG8gcHJpbWEgZGVsbGEgcHJpb3JpdMOgIDIuJywgZXg6IlNlIG1lcmNvbGVkw6wgaGFpIGFpdXRhdG8gYW5jb3JhIHVuIGFsdHJvIGFtaWNvIGEgZXNzZXJlIHBpw7kgY3JlYXRpdm8gZSBnaW92ZWTDrCBuZWxsYSBzdWEgdml0YSBzdGF2YSBwZXIgYXZ2ZW5pcmUgdW4gZ3JhbmRlIGNhbWJpYW1lbnRvLCBpIHNlbWkgcGlhbnRhdGkgbW9sdG8gdmljaW5vIGEgdW4gZXZlbnRvIGltcG9ydGFudGUgbWF0dXJhbm8gcHJpbWEgZGkgcXVlbGxpIHBpYW50YXRpIGluIHByZWNlZGVuemEuIiB9LAogICAgICB7IGg6J1F1YW5kbyBhaXV0aSBxdWFsY3VubyBjaGUgc2kgZGVkaWNhIGEgdW5vIHNjb3BvIGFsIHNlcnZpemlvIGRpIG1vbHRlIHBlcnNvbmUsIGlsIHNlbWUgZMOgIGZydXR0byBwcmltYSBkZWxsYSBwcmlvcml0w6AgMy4nLCBleDoiU2UgbCdhbWljbyBhaXV0YXRvIG1hcnRlZMOsIGNlcmNhdmEgdW4gbW9kbyBjcmVhdGl2byBwZXIgY3VyYXJlIGlsIGNhbmNybywgbWVudHJlIGdsaSBhbWljaSBhaXV0YXRpIGx1bmVkw6wgZSBtZXJjb2xlZMOsIGNlcmNhdmFubyB1biBtb2RvIHBpw7kgY3JlYXRpdm8gcGVyIHRydWNjYXJzaSwgaSBzZW1pIGRpIG1hcnRlZMOsIHBhc3Nhbm8gYXZhbnRpIGUgc2kgYXByb25vIHBlciBwcmltaS4iIH0gXSB9CiAgfSwKICBpbnRybzpbCiAgICBbIkJlbnZlbnV0YSBuZWxsJ2FwcCBTZW1pIEJ1b25pIiwiVHV0dG8gY2nDsiBjaGUgdml2aSB2aWVuZSBkYWkgc2VtaSBjaGUgaGFpIHBpYW50YXRvIGNvbiBpIHBlbnNpZXJpLCBsZSBwYXJvbGUgZSBsZSBhemlvbmkuIEwnYXBwIHRpIGFpdXRhIGEgdmVkZXJlIGNvc2EgcGlhbnRpIG9nbmkgZ2lvcm5vIGUgYSBzY2VnbGllcmUgY29uc2FwZXZvbG1lbnRlIGkgc2VtaSBwZXIgbGEgdml0YSBjaGUgZGVzaWRlcmkuIl0sCiAgICBbJ0xlIHR1ZSBwcmF0aWNoZScsJ01lZGl0YXppb25lIGUgeW9nYSBjb24gaWwgdGltZXIsIGdyYXRpdHVkaW5pIGUgc3VjY2Vzc2ksIGxhIG1lZGl0YXppb25lIGRlbGxhIGdpb2lhIGUgaSA0IHBvdGVyaS4gTGUgdHJvdmkgdHV0dGUgbmVsIHB1bHNhbnRlIGNlbnRyYWxlLCBlIHR1dHRvIGNpw7IgY2hlIGZhaSBmaW5pc2NlIG5lbCB0dW8gZGlhcmlvLiddLAogICAgWydHbGkgc3RydW1lbnRpIGRlbCBnaW9ybm8nLCdUcm92YSB1biBtb2RvIGNyZWF0aXZvIGRpIHVzYXJlIGkgMiBzdHJ1bWVudGkgcGVyIGlsIHR1byBvYmlldHRpdm8uJ10sCiAgICBbIlJpc3BldHRhIGwnaW1wZWdubyBwcmVzbyEiLCJDacOyIGNoZSBzY3JpdmkgaW4gwqtjaGkgYWl1dG\/CuyBlIG5lbCA0wrAgcG90ZXJlIGZpbmlzY2UgbmVsbGEgbGlzdGEgRGEgZmFyZS4gU3B1bnRhbG8gZG9wbyBhdmVybG8gZmF0dG86IGkgc2VtaSBidW9uaSBjcmVzY29ubyBlIHF1ZWxsaSBuZWdhdGl2aSBzaSBkaXNhdHRpdmFuby4iXSwKICAgIFsnR2lvaXNjaSBkZWkgc2VtaSBkZWdsaSBhbHRyaScsJ05lbGxhIGNvbXVuaXTDoCB2ZWRpLCBpbiBmb3JtYSBhbm9uaW1hLCBjb3NhIGhhbm5vIHBpYW50YXRvIGdsaSBhbHRyaS4gUXVhbmRvIGdpb2lzY2kgcGVyIGxvcm8sIGFubmFmZmkgaSBzZW1pIGRlbCB0dW8gb2JpZXR0aXZvLiddIF0sCiAgYWJvdXQ6WwogICAgWydDaGUgY29zYSDDqCBTZW1pIEJ1b25pJyxbIlNlbWkgQnVvbmkgw6ggaWwgdHVvIGRpYXJpbyBkaSBwcmF0aWNhIHBlciBpbCBzaXN0ZW1hIGRlaSBzZW1pLiIsIkxhIG5vc3RyYSBtZW50ZSByZWdpc3RyYSB0dXR0byBjacOyIGNoZSBwZW5zaWFtbywgZGljaWFtbyBlIGZhY2NpYW1vLiBPZ25pIHBlbnNpZXJvLCBwYXJvbGEgbyBhemlvbmUgZGl2ZW50YSB1biBzZW1lIGNoZSBjcmVzY2UgYWxsJ2ludGVybm8gZGVsbGEgbm9zdHJhIG1lbnRlIGUsIGEgdW4gY2VydG8gcHVudG8sIHJpdG9ybmEgbmVsbGEgbm9zdHJhIHZpdGEgY29tZSBlc3BlcmllbnphLiIsIkwnYXBwIHRpIGFpdXRhIGEgbm90YXJlIGNvc2EgcGlhbnRpIGUgYSBzY2VnbGllcmUgY29uc2FwZXZvbG1lbnRlIGkgc2VtaSBwZXIgY2nDsiBjaGUgZGVzaWRlcmkuIl1dLAogICAgWydDb21lIHVzYXJsYSBvZ25pIGdpb3JubycsWyJBbCBtYXR0aW5vOiByaWNvcmRhIGlsIHR1byBvYmlldHRpdm8gZSBzY29wcmkgZ2xpIHN0cnVtZW50aSBkZWwgZ2lvcm5vLiIsIkR1cmFudGUgaWwgZ2lvcm5vOiBvc3NlcnZhIGNvc2EgcGlhbnRpLiBBbm5vdGEgbGUgZ3JhdGl0dWRpbmkgZSBpIHN1Y2Nlc3NpLCBlIHF1YW5kbyByaWNvbm9zY2kgdW4gc2VtZSBuZWdhdGl2bywgbGF2b3JhIGNvbiBpIDQgcG90ZXJpLiIsIkxhIHNlcmE6IGZhaSBsYSBtZWRpdGF6aW9uZSBkZWxsYSBnaW9pYS4iLCJOb24gc2Vydm9ubyB0ZXN0aSBsdW5naGkuIEJhc3Rhbm8gcG9jaGkgbWludXRpIGRpIG9zc2VydmF6aW9uZSBzaW5jZXJhLCBzZW56YSBnaXVkaXppbyBlIHNlbnphIHNlbnNvIGRpIGNvbHBhLiBMJ2ltcG9ydGFudGUgw6ggdG9ybmFyZSBvZ25pIGdpb3Juby4iXV0sCiAgICBbJ1BlciBjaGkgw6gnLFsiUGVyIGNoaXVucXVlIGFiYmlhIHVuIG9iaWV0dGl2byBvIHVuIHNvZ25vIGUgdm9nbGlhIHJhZ2dpdW5nZXJsbyBwaWFudGFuZG8gaSBzZW1pIGdpdXN0aS4iLCJTZSBzdGFpIGF0dHJhdmVyc2FuZG8gdW4gcGVyaW9kbyBkaWZmaWNpbGUgbyB1bmEgc2l0dWF6aW9uZSBzaSByaXBldGUsIMOoIHNlZ25vIGNoZSBzdGFubm8gbWF0dXJhbmRvIHNlbWkgcGlhbnRhdGkgaW4gcGFzc2F0by4gQ29uIGkgNCBwb3RlcmkgcHVvaSBkaXNhdHRpdmFybGkgZSwgcGlhbnRhbmRvIGNvbnNhcGV2b2xtZW50ZSBzZW1pIGJ1b25pLCByaWVxdWlsaWJyaSBsYSBiaWxhbmNpYS4iXV0sCiAgICBbJ1F1YW5kbyByaWNvbm9zY2kgdW4gc2VtZSBuZWdhdGl2bycsWyJUdXR0aSBwaWFudGlhbW8sIHNlbnphIHJlbmRlcmNlbmUgY29udG8sIGFuY2hlIHNlbWkgbmVnYXRpdmkuIFNlIG5vbiBsaSBkaXNhdHRpdmlhbW8sIGNvbnRpbnVhbm8gYSBjcmVzY2VyZS4iLCJDb24gaSA0IHBvdGVyaTogcmljb3JkaSBkYSBkb3ZlIHZlbmdvbm8gdHV0dGUgbGUgY29zZSwgcHJlbmRpIGNvc2NpZW56YSBkZWkgYmVuZWZpY2kgY2hlIGhhaSBhdnV0byBlIGRlY2lkaSBkaSBkaXNhdHRpdmFyZSBpbCBzZW1lLCBwcm9tZXR0aSBkaSBub24gcmlwZXRlcmUgbCdlcnJvcmUgcGVyIHVuIHBlcmlvZG8gZSBmYWkgcXVhbGNvc2EgZGkgcG9zaXRpdm8gcGVyIGJpbGFuY2lhcmxvLiIsIkNpw7IgY2hlIHByb21ldHRpIG5lbCA0wrAgcG90ZXJlIGZpbmlzY2UgbmVsbGEgbGlzdGEgRGEgZmFyZSwgY29zw6wgbm9uIGRpbWVudGljaGkgZGkgZmFybG8gZGF2dmVyby4iXV0sCiAgICBbJ0xhIG1lZGl0YXppb25lIGRlbGxhIGdpb2lhJyxbIklsIG1vbWVudG8gcHJpbWEgZGVsIHNvbm5vIGNvbGxlZ2EgaWwgY29uc2NpbyBlIGlsIHN1YmNvbnNjaW8uIENpw7IgY2hlIHBlbnNpIGFsbG9yYSBjb250aW51YSBhIGNyZXNjZXJlIG1lbnRyZSBkb3JtaS4iLCJQZXIgcXVlc3RvLCBsYSBzZXJhLCBwZW5zYSBjb24gZ2lvaWEgYWwgYmVuZSBjaGUgaGFpIGZhdHRvIHBlciBnbGkgYWx0cmkgZSBkZWRpY2FsbyBhbCB0dW8gb2JpZXR0aXZvLiIsIlB1b2kgZmFybGEgYW5jaGUgZHVyYW50ZSBpbCBnaW9ybm8sIG9nbmkgdm9sdGEgY2hlIGhhaSBxdWFsY2hlIG1pbnV0by4iXV0sCiAgICBbJ0dsaSBzdHJ1bWVudGkgZGVsIGdpb3JubycsWyJJIDIwIHN0cnVtZW50aSBzb25vIHJhZ2dydXBwYXRpIGluIDUgc2VyaWU6IEkgNCBQYXNzaSwgSSA0IFBvdGVyaSwgTGUgNCBMZWdnaSBkZWkgU2VtaSwgSSA0IEZpb3JpIGUgTGUgNCBQcmlvcml0w6AuIE9nbmkgc2VyaWUgaGEgaWwgc3VvIGNvbG9yZSBlIGlsIHN1byBzaW1ib2xvLiIseyBzdWJzOiJPZ25pIGdpb3JubyBzY29wcmkgMiBzdHJ1bWVudGkgZSBzY3JpdmkgY29tZSB1c2kgbGEgbG9ybyBjb21iaW5hemlvbmUuIEdsaSBzdHJ1bWVudGkgc29ubyBkaXNwb25pYmlsaSBwZXIgY2hpIGhhIHVuIGFiYm9uYW1lbnRvIGF0dGl2by4iIH1dXSwKICAgIFsnTGEgY29tdW5pdMOgJyxbIlB1b2kgY29uZGl2aWRlcmUgaW4gZm9ybWEgYW5vbmltYSBncmF0aXR1ZGluaSwgc3VjY2Vzc2ksIGxhIG1lZGl0YXppb25lIGRlbGxhIGdpb2lhIG8gaSA0IHBvdGVyaSwgY29uIHVuIG5vbWUgc2NlbHRvIGRhIHRlLiIsIlF1YW5kbyBnaW9pc2NpIGRlaSBzZW1pIGRlZ2xpIGFsdHJpLCBhbm5hZmZpIGkgc2VtaSBkZWwgdHVvIG9iaWV0dGl2by4gUXVhbmRvIGxlZ2dpIGkgNCBwb3RlcmkgZGkgcXVhbGN1bm8sIHB1b2kgcGVyY29ycmVybGkgYW5jaGUgcGVyIHRlLiIsIkNpw7IgY2hlIHNjcml2aSByZXN0YSBwcml2YXRvLCB0cmFubmUgY2nDsiBjaGUgc2NlZ2xpIGRpIGNvbmRpdmlkZXJlLiJdXSBdLAogIGthcm1hOlsKICAgIFsnUHJvdGVnZ2kgbGEgdml0YScsJ1ByZW5kaXRpIGN1cmEgZGVsbGUgcGVyc29uZSwgZGVnbGkgYW5pbWFsaSBlIGRlbGxlIHBpYW50ZS4gTm9uIGZlcmlyZSBpbnRlbnppb25hbG1lbnRlIG5lc3N1biBlc3NlcmUuJywnSWwgc2VtZSBkZWxsYSBzYWx1dGUnXSwKICAgIFsnUHJvdGVnZ2kgbGEgcHJvcHJpZXTDoCcsJ0RvbmEgZSBhaXV0YSBnbGkgYWx0cmkuIE5vbiBwcmVuZGVyZSBjacOyIGNoZSBub24gdGkgYXBwYXJ0aWVuZSBzZW56YSBwZXJtZXNzby4nLCdJbCBzZW1lIGRlbGxhIHByb3NwZXJpdMOgJ10sCiAgICBbJ1B1cmV6emEgc2Vzc3VhbGUnLCJPbm9yYSBpbCBsZWdhbWUgdHJhIGR1ZSBwZXJzb25lIGNoZSBoYW5ubyBwcmVzbyB1biBpbXBlZ25vIGwndW5hIHZlcnNvIGwnYWx0cmEsIGlsIHR1byBlIHF1ZWxsbyBkZWdsaSBhbHRyaS4iLCdJbCBzZW1lIGRlbGxhIGZlbGljaXTDoCddLAogICAgWydJbnRlZ3JpdMOgJywnRGnigJkgbGEgdmVyaXTDoCBlIG1hbnRpZW5pIGxlIHByb21lc3NlLiBOb24gZGlyZSBjacOyIGNoZSBub24gc2VudGkgZGF2dmVyby4nLCdJbCBzZW1lIGRlbGxhIGZpZHVjaWEnXSwKICAgIFsnRGnigJkgcGFyb2xlIGNoZSB1bmlzY29ubyBsZSBwZXJzb25lJywnVXNhIGxlIHBhcm9sZSBwZXIgdW5pcmUgbGUgcGVyc29uZS4gRXZpdGEgbGUgcGFyb2xlIGNoZSBkaXZpZG9ubyBvIGNyZWFubyBpbmNvbXByZW5zaW9uaS4nLCJJbCBzZW1lIGRlbGwnYXJtb25pYSJdLAogICAgWydQYXJsYSBjb24gZ2VudGlsZXp6YSBlIGRvbGNlenphJywnQXBwcmV6emEgZ2xpIGFsdHJpIGUgcGFybGEgbG9ybyBjb24gcmlzcGV0dG8uIEV2aXRhIGxlIHBhcm9sZSBkdXJlIGUgY2hlIGZlcmlzY29uby4nLCdJbCBzZW1lIGRlbCByaXNwZXR0byddLAogICAgWydEaeKAmSBzb2xvIHBhcm9sZSBjaGUgaGFubm8gc2Vuc28nLCdEaeKAmSBjb3NlIGNoZSBhaXV0YW5vIGUgaGFubm8gdW5vIHNjb3BvLiBFdml0YSBpIHBldHRlZ29sZXp6aSBlIGxlIHBhcm9sZSB2dW90ZS4nLCdJbCBzZW1lIGRlbCB0ZW1wbyddLAogICAgWydHaW9pc2NpIGRlbCBzdWNjZXNzbyBkZWdsaSBhbHRyaScsIkdpb2lzY2kgcXVhbmRvIGdsaSBhbHRyaSBvdHRlbmdvbm8gY2nDsiBjaGUgZGVzaWRlcmFubyBlIGFwcHJlenphIGNpw7IgY2hlIGhhaS4gRXZpdGEgbCdpbnZpZGlhIGUgbCdhdmlkaXTDoC4iLCdJbCBzZW1lIGRlbCBzdWNjZXNzbyddLAogICAgWydDb21wYXNzaW9uZSBwZXIgaSBwcm9ibGVtaSBkZWdsaSBhbHRyaScsJ09mZnJpIGNvbXBhc3Npb25lIGEgY2hpIGF0dHJhdmVyc2EgZGlmZmljb2x0w6AgZSBhaXV0YWxvIGNvbWUgcHVvaS4gTm9uIGdpb2lyZSBkZWxsZSBkaXNncmF6aWUgYWx0cnVpLicsJ0lsIHNlbWUgZGVsbGEgY29tcGFzc2lvbmUnXSwKICAgIFsnQ29tcHJlbmRpIGNvbWUgZnVuemlvbmEgbGEgcGVubmEnLCdSaWNvcmRhIGNoZSB0dXR0byB2aWVuZSBkYWkgc2VtaSBwaWFudGF0aSBlIGNoZSBpbCBjYW1iaWFtZW50byBpbml6aWEgZGEgdGUuIFZpdmkgZSBjb25kaXZpZGkgaWwgcHJpbmNpcGlvIGRlbGxhIHBlbm5hLicsJ0lsIHNlbWUgZGVsbGEgc2FnZ2V6emEnXSBdLAogIGtsYWJlbHM6WyJBbCBjZW50cm8iLCAiTmVpIGNlcmNoaSwgZ2lvcm5vIHBlciBnaW9ybm8iLCAiQ2hlIGNvc2EgZMOgIGZydXR0byIsICJOZWxsYSB0dWEgdml0YToiLCAiSW50b3JubyBhIHRlOiJdLCBraW50cm86Ik9nbmkga2FybWEgc2kgcGlhbnRhIOKAnGFsIGNlbnRyb+KAnSwgY29uIGzigJlhemlvbmUgcGnDuSBmb3J0ZSwgZSDigJxuZWkgY2VyY2hp4oCdLCBjb24gaSBwaWNjb2xpIGdlc3RpIGRpIG9nbmkgZ2lvcm5vLiBPZ25pIHNlbWUgZMOgIGZydXR0byBpbiBkdWUgbHVvZ2hpOiBuZWxsYSB0dWEgdml0YSBlIG5lbCBtb25kbyBpbnRvcm5vIGEgdGUuIiwKICBrYXJtYVg6W3siYyI6ICJTYWx2YXJlIHVuYSB2aXRhIG8gYWl1dGFyZSB1bmEgbnVvdmEgdml0YSBhIHZlbmlyZSBhbCBtb25kby4iLCAiayI6IFsiUHJlbmRpdGkgY3VyYSBkZWwgdHVvIGNvcnBvOiBtb3ZpbWVudG8sIHNvbm5vLCBjaWJvIHNhbm8sIGNvbiBtZW5vIGNhcm5lLCBhbGNvbCBlIGRvbGNpLiIsICJBc3Npc3RpIGNoaSDDqCBtYWxhdG8gZSBhaXV0YSBnbGkgYWx0cmkgYSB2aXZlcmUgaW4gbW9kbyBzYW5vLiIsICJHdWlkYSBjb24gcHJ1ZGVuemEsIHNlbnphIHRlbGVmb25vIGluIG1hbm8sIGUgdGllbmkgcHVsaXRvIGlsIGx1b2dvIGluIGN1aSB2aXZpIGUgbGF2b3JpLiJdLCAidiI6ICJzYWx1dGUsIGVuZXJnaWEgZSB1biBjb3JwbyB2aXRhbGUgZmlubyBhIHRhcmRhIGV0w6AuIiwgImoiOiAicGVyc29uZSBzYW5lLCBhcmlhIHB1bGl0YSBlIHRyYW5xdWlsbGl0w6AuIn0sIHsiYyI6ICJEb25hcmUsIHF1YWxzaWFzaSB0aXBvIGRpIHJpc29yc2EuIiwgImsiOiBbIkFiYmkgY3VyYSBkZWxsZSBjb3NlIGNoZSB1c2kgZSBub24gc3ByZWNhcmUuIiwgIlBhZ2EgaW4gdGVtcG8gYm9sbGV0dGUgZSB0YXNzZSBlIGFycml2YSBwdW50dWFsZSBhZ2xpIGFwcHVudGFtZW50aTogYW5jaGUgaWwgdGVtcG8gZGVnbGkgYWx0cmkgw6ggdW5hIHJpc29yc2EuIiwgIkNvbnNpZ2xpYSBpIHByb2RvdHRpIGUgaSBzZXJ2aXppIGJ1b25pLCBtZXR0aSBpbiBjb250YXR0byBsZSBwZXJzb25lLCBpbnNlZ25hIGEgcXVhbGN1bm8gY29tZSBndWFkYWduYXJlLiJdLCAidiI6ICJhYmJvbmRhbnphLCB0ZW1wbyBsaWJlcm8gcGVyIHRlLCBzZXJlbml0w6AsIGUgbGUgcmlzb3JzZSBhcnJpdmFubyBwcm9wcmlvIHF1YW5kbyBuZSBoYWkgYmlzb2duby4iLCAiaiI6ICJ1biBsdW9nbyByaWNjbyBkaSByaXNvcnNlLCBjaXJjb25kYXRvIGRhIHBlcnNvbmUgcHJvc3BlcmUuIn0sIHsiYyI6ICJGZWRlbHTDoCBuZWxsYSB0dWEgcmVsYXppb25lIGUgcmlzcGV0dG8gcGVyIGzigJlpbXBlZ25vIGNoZSBhbHRyZSBkdWUgcGVyc29uZSBoYW5ubyBwcmVzby4iLCAiayI6IFsiTm9uIGNlcmNoaSB2aWNpbmFuemEgbyB1bmEgcmVsYXppb25lIGNvbiBxdWFsY3VubyBsw6AgZG92ZSBub24gY+KAmcOoIHVuIGxlZ2FtZSBwdXJvLiIsICJQYXNzYSBkZWwgdGVtcG8gY29uIGNoaSDDqCBzb2xvOiBhbnppYW5pLCBiYW1iaW5pLCBhbWljaS4iLCAiR3VhcmRhIGlsIHR1byBwYXJ0bmVyIGNvbWUgdW4gYW5nZWxvIHRyYXZlc3RpdG8gZSBmYWkgYXR0ZW56aW9uZSBhIGNpw7IgY2hlIGd1YXJkaSBlIGEgY2nDsiBjaGUgY29uZGl2aWRpLiJdLCAidiI6ICJ1bmEgcmVsYXppb25lIGFwcGFnYW50ZSwgcGllbmEgZGkgdGVuZXJlenphLCBjb24gdW4gcGFydG5lciBhdHRlbnRvIGFpIHR1b2kgcGnDuSBwaWNjb2xpIGJpc29nbmkuIiwgImoiOiAidW4gYW1iaWVudGUgcHVsaXRvLCBwdXJlenphIGluIHR1dHRvIGNpw7IgY2hlIHZlZGkuIn0sIHsiYyI6ICJEaXJlIGxhIHZlcml0w6AgYWwgMTAwJSwgaW4gbW9kbyBjaGUgbOKAmWltbWFnaW5lIG5lbGxhIG1lbnRlIGRlbGzigJlhbHRybyBzaWEgdWd1YWxlIGFsbGEgcmVhbHTDoC4iLCAiayI6IFsiUGFybGEgYXBlcnRhbWVudGUgY29uIGxhIGZhbWlnbGlhLCBjb24gaSBjbGllbnRpIGUgY29uIGkgY29sbGFib3JhdG9yaS4iLCAiTWFudGllbmkgbGUgcHJvbWVzc2UsIGFuY2hlIHF1ZWxsZSBjaGUgZmFpIGEgdGUgc3Rlc3NvLiIsICJOb24gZmFyZSBwcm9tZXNzZSBjaGUgcG90cmVzdGkgbm9uIG1hbnRlbmVyZS4gTmVhbmNoZSBsZSDigJxidWdpZSBiaWFuY2hl4oCdIGhhbm5vIHBvc3RvLiJdLCAidiI6ICJsZSBwZXJzb25lIHNpIGZpZGFubyBkZWxsYSB0dWEgcGFyb2xhLCBoYWkgZW5lcmdpYSBlIHBhY2UgbWVudGFsZS4iLCAiaiI6ICJhbWljaSBlIHBhcnRuZXIgZOKAmWFmZmFyaSBvbmVzdGksIGNoZSBzaSByaXNwZXR0YW5vIGEgdmljZW5kYS4ifSwgeyJjIjogIkxvZGFyZSB1bmEgcGVyc29uYSBkYXZhbnRpIGEgcXVhbGN1biBhbHRyby4iLCAiayI6IFsiQ2VyY2EgbGUgcXVhbGl0w6AgZGVsbGUgcGVyc29uZSBlIGRpbGxlIGFkIGFsdGEgdm9jZS4iLCAiSW5jb3JhZ2dpYSBsYSBjb2xsYWJvcmF6aW9uZSwgbWV0dGkgaW4gY29udGF0dG8gbGUgcGVyc29uZSwgcHJvbXVvdmkgZXZlbnRpIGNoZSBsZSByaXVuaXNjb25vLiIsICJOb24gZmFyZSBwYXJhZ29uaSB0cmEgbGUgcGVyc29uZSBlIG5vbiBkaXNjcmltaW5hcmUgbmVzc3Vuby4iXSwgInYiOiAicmVsYXppb25pIGFwcGFnYW50aSBlIGFtaWNpemllIGNoZSBkdXJhbm8uIiwgImoiOiAidW4gZ3J1cHBvIGluIGN1aSBsZSBwZXJzb25lIHNpIHNvc3Rlbmdvbm8gYSB2aWNlbmRhLCBlIHN0cmFkZSBmYWNpbGkgcGVyIHRlLiJ9LCB7ImMiOiAiUGFybGFyZSBjb24gY2FsbWEsIGluIG1vZG8gcmlsYXNzYXRvLCBjb24gdW4gdG9ubyBkb2xjZS4iLCAiayI6IFsiQXNjb2x0YSBkYXZ2ZXJvIGUgZGFpIGZlZWRiYWNrIGNvc3RydXR0aXZpLiIsICJNZWRpdGEsIGZhaSB5b2dhLCBwYXNzZWdnaWEgbmVsbGEgbmF0dXJhLCBhc2NvbHRhIG11c2ljYSByaWxhc3NhbnRlLiIsICJBYmJpIGN1cmEgYW5jaGUgZGVsbGUgcGFyb2xlIG5lbGxhIHR1YSBtZW50ZSwgY29tcHJlc2UgcXVlbGxlIGNoZSBkaWNpIGEgdGUgc3Rlc3NvLiJdLCAidiI6ICJzb25ubyB0cmFucXVpbGxvIGUgcGFjZSBtZW50YWxlLiIsICJqIjogInBlcnNvbmUgY2hlIGNvbXVuaWNhbm8gaW4gbW9kbyByaWxhc3NhdG8sIHNlbnphIGxpdGlnaS4ifSwgeyJjIjogIlRyYXNtZXR0ZXJlIGzigJlpZGVhIGNoZSB0dXR0byB2aWVuZSBkYWkgc2VtaS4iLCAiayI6IFsiUGFybGEgZGkgY29zZSBjaGUgcG9ydGFubyB2YWxvcmUgbmVsbGEgdml0YSBkZWxsZSBwZXJzb25lLiIsICJTY2VnbGkgbGlicmksIGZpbG0gZSBwb3N0IGRhIGN1aSBpbXBhcmkgYSBwb3J0YXJlIHZhbG9yZSBhZ2xpIGFsdHJpLiIsICJFdml0YSBpIHBldHRlZ29sZXp6aSBkaSBvZ25pIHRpcG8gZSBpbCB0ZW1wbyBwZXJzbyBpbiBjb250ZW51dGkgdnVvdGkuIl0sICJ2IjogImxlIHR1ZSBwYXJvbGUgaGFubm8gcGVzbyBlIGlsIHR1byB0ZW1wbyBzaSByaWVtcGllIGRpIGNvc2UgY2hlIGhhbm5vIHNlbnNvLiIsICJqIjogImxlIHBlcnNvbmUgdGkgYXNjb2x0YW5vIHF1YW5kbyBwYXJsaS4ifSwgeyJjIjogIkdpb2lyZSBzaW5jZXJhbWVudGUgcXVhbmRvIGdsaSBhbHRyaSBvdHRlbmdvbm8gY2nDsiBjaGUgZGVzaWRlcmFuby4iLCAiayI6IFsiU29zdGllbmkgZSBpbmNvcmFnZ2lhIGdsaSBhbHRyaS4iLCAiR2lvaXNjaSBkZWkgc3VjY2Vzc2kgZSBkZWkgcG9zdCBkZWdsaSBhbHRyaSBlIGFwcHJlenphbGkuIiwgIk5vbiBjb25mcm9udGFydGkgZSBub24gY29tbWVudGFyZSBtYWkgY29uIGlyb25pYSBpbCBzdWNjZXNzbyBkaSBxdWFsY3Vuby4iXSwgInYiOiAic3VjY2Vzc28gbmVpIHR1b2kgcHJvZ2V0dGksIGdpb2lhIGluIGNpw7IgY2hlIGZhaSwgc2NvcHJpIGxhIHR1YSBwYXNzaW9uZSBlIGxhIHR1YSB2b2NhemlvbmUuIiwgImoiOiAidW4gYW1iaWVudGUgaW4gY3VpIHJpY2V2aSBzb3N0ZWdubyBlIGNpIHNvbm8gcmlzb3JzZS4ifSwgeyJjIjogIkNvbXBhc3Npb25lIHBlciBsYSBzb2ZmZXJlbnphIGRpIHF1YWxjdW5vLiIsICJrIjogWyJBaXV0YSBvZ25pIHZvbHRhIGNoZSBuZSBoYWkgbOKAmW9jY2FzaW9uZS4iLCAiU2NlZ2xpIGxpYnJpIGUgZmlsbSBjaGUgcHJvbXVvdm9ubyBsYSBjb21wYXNzaW9uZS4iLCAiUXVhbmRvIHF1YWxjdW5vIHNiYWdsaWEsIGxhc2NpYSBkYSBwYXJ0ZSDigJxsbyBzYXBldm\/igJ0gbyDigJxhdmV2byByYWdpb25l4oCdLiJdLCAidiI6ICJ0cm92aSBhaXV0byBxdWFuZG8gbmUgaGFpIGJpc29nbm8gZWQgZXZvbHZpIHNwaXJpdHVhbG1lbnRlLiIsICJqIjogInBlcnNvbmUgY2hlIHNpIHNvc3Rlbmdvbm8gYSB2aWNlbmRhLCB1biBhbWJpZW50ZSBzZXJlbm8uIn0sIHsiYyI6ICJTcGllZ2FyZSBhIHF1YWxjdW4gYWx0cm8gaWwgcHJpbmNpcGlvIGRlbGxhIHBlbm5hLiIsICJrIjogWyJGYWkgZGVsbGUgcGF1c2UgZHVyYW50ZSBsYSBnaW9ybmF0YSBwZXIgcmljb3JkYXJ0aSBjaGUgY2nDsiBjaGUgdmVkaSwgZmFpIGUgcGVuc2kgdmllbmUgZGFpIHR1b2kgc2VtaS4iLCAiTGVnZ2kgZSBhc2NvbHRhIG1hdGVyaWFsaSBzdSBjb21lIGZ1bnppb25hbm8gaSBzZW1pLiIsICJRdWFuZG8gcXVhbGNvc2Egbm9uIHZhLCBub24gZGFyZSBsYSBjb2xwYSBhZ2xpIGFsdHJpOiBjaGllZGl0aSBxdWFsaSBzZW1pIHBpYW50YXJlLiJdLCAidiI6ICJpIHR1b2kgcHJvZ2V0dGkgYXJyaXZhbm8gZmlubyBpbiBmb25kbyBlIHNlbnRpIHNlbXByZSBwacO5IGxpYmVydMOgIGludGVyaW9yZS4iLCAiaiI6ICJjYXBpc2NpIGNpw7IgY2hlIHN1Y2NlZGUgaW50b3JubyBhIHRlIGUgbm9uIHRpIHNlbnRpIHBpw7kgc29wcmFmZmF0dG8gZGFsbGUgY29zZS4ifV0sCiAgZ3JvdXBzOlsnQVpJT05JJywnUEFST0xFJywnUEVOU0lFUkknXSwgZG9tYWluczpbJ0RlbmFybycsJ1JlbGF6aW9uaScsJ1NhbHV0ZSddCn07ClhULnJvID0gewogIHVpOnsgbmF2Sm91cm5hbDonSnVybmFsJywgbmF2UHJvZmlsZTonUHJvZmlsJywKICAgIHRvZG9MZWFkOidDZSBhbSBwcm9taXMgc8SDIGZhYy4gQ2UgYW5nYWphbWVudGUgbWktYW0gbHVhdC4nLAogICAgdVRpdGxlOidVbmVsdGVsZSB0YWxlIGRlIGF6aScsIHVMb2NrZWQ6J8OObiBmaWVjYXJlIHppIHBvyJtpIGRlc2NvcGVyaSAyIHVuZWx0ZSBkaW4gY2VsZSAyMDogQ2VpIDQgUGHImWksIENlbGUgNCBQdXRlcmksIENlbGUgNCBMZWdpIGFsZSBTZW1pbsibZWxvciwgQ2VsZSA0IEZsb3JpIMiZaSBDZWxlIDQgUHJpb3JpdMSDyJtpLicsCiAgICB1TG9ja01zZzonQWkgbmV2b2llIGRlIHVuIGFib25hbWVudCBhY3RpdiBjYSBzxIMgZm9sb3NlyJl0aSB1bmVsdGVsZS4nLCB1U2VlU3ViczonVmV6aSBhYm9uYW1lbnRlbGUnLAogICAgdURyYXdOb3RlOidBcGFzxIMgyJlpIGRlc2NvcGVyxIMgY2VsZSAyIHVuZWx0ZSBjdSBjYXJlIGx1Y3JlemkgYXN0xIN6aS4nLCB1RHJhdzonRGVzY29wZXLEgyB1bmVsdGVsZSBkZSBhemknLAogICAgdVE6J0N1bSBmb2xvc2VzYyBhY2Vhc3TEgyBjb21iaW5hyJtpZSBkZSB1bmVsdGUgYXN0xIN6aT8nLCB1UGg6J1NjcmllIHBlbnRydSB0aW5lLiBSxINtw6JuZSBkb2FyIMOubiBqdXJuYWx1bCB0xIN1LicsCiAgICB1U2F2ZTonU2FsdmVhesSDIMOubiBqdXJuYWwnLCB1VXBkYXRlOidBY3R1YWxpemVhesSDIMOubiBqdXJuYWwnLCB1QWdhaW46J0FsZWdlIG8gbm91xIMgY29tYmluYcibaWUgZGUgdW5lbHRlJywgdVNhdmVkOidTYWx2YXQgw65uIGp1cm5hbCcsCiAgICB1U2ltT246J1ZhcmlhbnTEgyBkZSB0ZXN0OiBzaW11bGVhesSDIGFib25hbWVudCBhY3RpdicsIHVTaW1PZmY6J1ZhcmlhbnTEgyBkZSB0ZXN0OiBzaW11bGVhesSDIGbEg3LEgyBhYm9uYW1lbnQnLAogICAgaHViVGl0bGU6J0NlIHByYWN0aWNpIGFjdW0\/JywgaHViTGVhZDonQWxlZ2UgcHJhY3RpY2EuIFRvdCBjZSBmYWNpIGFqdW5nZSDDrm4ganVybmFsdWwgdMSDdS4nLCBodWJCdXN5OidQcmFjdGljYSBlIMOubiBjdXJzIMK3IHJldmlubyBsYSB0aW1lcicsCiAgICBteVByb2ZpbGU6J1Byb2ZpbHVsIG1ldScsIGNoYW5nZU5hbWU6J1NjaGltYsSDIG51bWVsZScsIHBpY2tOYW1lOidBbGVnZSB1biBudW1lIHBlbnRydSBjb211bml0YXRlJywKICAgIHN0UHJhY3Q6J3ByYWN0aWNpJywgc3RNaW46J21pbnV0ZScsIHN0VG9kbzonVG8gRG8gZsSDY3V0ZScsIGF2YXRhcjonQXZhdGFydWwgbWV1JywgYWRkcmVzczonQ3VtIMOuyJtpIHZvcmJlc2MnLAogICAgaW50cm86J0ludHJvZHVjZXJlJywgYWJvdXQ6J0Rlc3ByZSBhcGxpY2HIm2llJywga2FybWE6J0NlbGUgMTAgS2FybWEgUG96aXRpdmUnLCBrYXJtYVN1YjonSW5zcGlyYcibaWEgYXBsaWNhyJtpZWknLCBjb250YWN0OidDb250YWN0JywKICAgIHByb2ZCYW5uZXI6J1ZhcmlhbnTEgyBkZSB0ZXN0LiDDjm4gYXBsaWNhyJtpYSBkZSB0ZWxlZm9uIHZlaSBhdmVhIGFpY2kgyJlpOiByZW1pbmRlcmVsZSAocMOibsSDIGxhIDYgcGUgemkpLCBzY2hpbWJhcmVhIGVtYWlsdWx1aSwgyJl0ZXJnZXJlYSBkYXRlbG9yLCDImXRlcmdlcmVhIGNvbnR1bHVpLCBwb2xpdGljYSBkZSBjb25maWRlbsibaWFsaXRhdGUgyJlpIHRlcm1lbmlpLicsCiAgICBvdlByZXY6J8OObmFwb2knLCBvdk5leHQ6J01haSBkZXBhcnRlJywgb3ZTdGFydDonw45uY2VwZScsIGJ5RG9tYWluOidHUlVQQVJFIFBFIERPTUVOSUknLAogICAga2FybWFMZWFkOidJbnNwaXJhyJtpYSBhcGxpY2HIm2llaS4gTGUgcG\/Im2kgZm9sb3NpIMOubiBwcmFjdGljYSBjZWxvciA0IHB1dGVyaSDImWkgbGEgbWVkaXRhyJtpYSBidWN1cmllaS4nIH0sCiAga2luZFU6J1VuZWx0ZWxlIHppbGVpJywKICBzZXRzOnsKICAgIHBhc2k6eyJuYW1lIjogIkNlaSA0IFBhyJlpIiwgInVuaXQiOiAiUGFzdWwiLCAic3ViIjogImNhIHPEgyB1emkgc2VtaW7Im2VsZSBwZW50cnUgb2JpZWN0aXZ1bCB0xIN1IiwgIml0ZW1zIjogW3sidCI6ICJTcHVuZSBjZSB2cmVpIMOubiB2aWHIm2EgdGEgw65udHItbyBwcm9wb3ppyJtpZSBzY3VydMSDLCIsICJhZGQiOiAibGEgYWZpcm1hdGl2LCBsYSB0aW1wdWwgcHJlemVudC4ifSwgeyJ0IjogIlBsYW5pZmljxIMgcGUgY2luZSB2ZWkgYWp1dGEgc8SDIG9iyJtpbsSDIGFjZWxhyJlpIGx1Y3J1IMiZaSB1bmRlIHZlaSBpbnZpdGEgYWNlYSBwZXJzb2FuxIMgcGVudHJ1IG8gZGlzY3XIm2llLiIsICJhZGQiOiAiRWEgZGV2aW5lIHBhcnRlbmVydWwgdMSDdSBrYXJtaWMuIn0sIHsidCI6ICJBanV0xIMgZWZlY3RpdiBwZXJzb2FuYSByZXNwZWN0aXbEgy4iLCAiYWRkIjogIkRlIGV4ZW1wbHUsIG8gb3LEgyBwZSBzxINwdMSDbcOibsSDLCBsYSBvIGNhZmVhLiJ9LCAiRsSDIE1lZGl0YcibaWEgQnVjdXJpZWk6IGPDom5kIG1lcmdpIGxhIGN1bGNhcmUsIGfDom5kZciZdGUtdGUgY3UgYnVjdXJpZSBsYSBsdWNydXJpbGUgYnVuZSBwZSBjYXJlIGxlIGZhY2kgcGVudHJ1IGNlaWxhbMibaS4iXX0sCiAgICBwdXRlcmk6eyJuYW1lIjogIkNlbGUgNCBQdXRlcmkiLCAidW5pdCI6ICJQdXRlcmVhIiwgInN1YiI6ICJwZW50cnUgZGV6YWN0aXZhcmVhIHNlbWluyJtlbG9yIG5lZ2F0aXZlIHBsYW50YXRlIMOubiB0cmVjdXQiLCAiaXRlbXMiOiBbeyJoIjogIlJlYW1pbnRpcmVhIHBpeHVsdWkiLCAiYWRkIjogIlRvYXRlIGx1Y3J1cmlsZSB2aW4gZGluIHNlbWluyJtlbGUgcGxhbnRhdGUgw65uIHRyZWN1dC4gQW1pbnRlyJl0ZS3Im2kgY2Ugc2VtaW7Im2UgYWkgcGxhbnRhdCDDrm4gdHJlY3V0LCBjYXJlIGF1IGNyZXNjdXQuIn0sIHsiaCI6ICJSZWdyZXR1bCBpbnRlbGlnZW50IiwgImV4IjogIkNvbsiZdGllbnRpemVhesSDIGJlbmVmaWNpaWxlIGF2dXRlIGPDom5kIGFpIHBsYW50YXQgc8SDbcOibsibYSDImWkgaWEgbyBkZWNpemllIGZlcm3EgyBkZSBhIGRlemFjdGl2YSBhY2Vhc3TEgyBzxINtw6JuyJvEgyDDrm5haW50ZSBjYSBlYSBzxIMgc2UgbXVsdGlwbGljZSDImWkgbWFpIG11bHQuIn0sIHsiaCI6ICJSZXN0cmljyJtpYSIsICJleCI6ICJQcm9taXRlIHPEgyBudSBtYWkgZmFjaSBhY2VlYciZaSBncmXImWVhbMSDIHBlbnRydSB1biBpbnRlcnZhbCBkZSB0aW1wLiJ9LCB7ImgiOiAiQW50aWRvdHVsIiwgImV4IjogIkbEgyBjZXZhIHBveml0aXYgcGVudHJ1IGEgZWNoaWxpYnJhIHNlbWluyJtlbGUgbmVnYXRpdmUuIn1dfSwKICAgIGxlZ2k6eyJuYW1lIjogIkNlbGUgNCBMZWdpIGFsZSBTZW1pbsibZWxvciIsICJ1bml0IjogIkxlZ2VhIiwgInN1YiI6ICJsZWdpbGUgZHVwxIMgY2FyZSBmdW5jyJtpb25lYXrEgyBzZW1pbsibZWxlIiwgIml0ZW1zIjogW3siaCI6ICJQcmltZciZdGkgY2VlYSBjZSBvZmVyaSIsICJleCI6ICJDdWxlZ2kgY2UgYWkgc2VtxINuYXQ6IGRhY8SDIHBsYW50ZXppIHNlbWluyJtlIGRlIHBlcGVuZSwgdmVpIG9iyJtpbmUgdW4gcGVwZW5lLiIsICJhZGQiOiAiTGVnZWEgZnVuY8ibaW9uZWF6xIMgw65uIGFtYmVsZSBzZW5zdXJpOiBiaW5lbGUgYWR1Y2UgYmluZSwgaWFyIG8gZmFwdMSDIG5lZ2F0aXbEgyBhZHVjZSBjZXZhIG5lZ2F0aXYuIn0sIHsiaCI6ICJTZW1pbsibZWxlIGNyZXNjIiwgImV4IjogIkNlZWEgY2UgcHJpbWXImXRpIMOubmFwb2kgZXN0ZSDDrm50b3RkZWF1bmEgbXVsdCwgbXVsdCBtYWkgbWFyZSBkZWPDonQgY2UgYWkgZsSDY3V0LiIsICJhZGQiOiAiyJhpIGNlbGUgYnVuZSwgyJlpIGNlbGUgbmVnYXRpdmUuIn0sIHsiaCI6ICJEYWPEgyBudSBmYWNpIG5pbWljLCBudSBzZSDDrm50w6JtcGzEgyBuaW1pYyIsICJleCI6ICJEYWPEgyBudSBmYWNpIG5pbWljLCBudSB2ZWkgcHJpbWkgbmltaWMgw65uYXBvaS4iLCAiYWRkIjogIkRvYXIgc8SDIHNwZXJpIHNhdSBzxIMgYciZdGVwyJtpIG51IHBsYW50ZWF6xIMgbmljaW8gc8SDbcOibsibxIMuIn0sIHsiaCI6ICJDZSBhaSBwbGFudGF0IHRyZWJ1aWUgc8SDIHLEg3NhcsSDIiwgImV4IjogIkRhY8SDIGZhY2kgY2V2YSwgYXR1bmNpIHRyZWJ1aWUgc8SDIHByaW1lyJl0aSBjZXZhIMOubmFwb2kuIiwgImFkZCI6ICJTZW1pbsibZWxlIG51IGRpc3BhcjogbmljaSBjZWxlIGJ1bmUsIG5pY2kgY2VsZSBuZWdhdGl2ZS4gUsSDc2FyIGxhIHVuIG1vbWVudCBkYXQuIn1dfSwKICAgIGZsb3JpOnsibmFtZSI6ICJDZWxlIDQgRmxvcmkiLCAidW5pdCI6ICJGbG9hcmVhIiwgInN1YiI6ICJmZWx1bCDDrm4gY2FyZSByb2Rlc2Mgc2VtaW7Im2VsZSIsICJpdGVtcyI6IFt7ImgiOiAiUHJpbWXImXRpIGV4YWN0IGNlZWEgY2UgZGFpLiIsICJhZGQiOiAiQ2luZSBzZWFtxINuxIMgaXViaXJlIGN1bGVnZSBpdWJpcmUuIn0sIHsiaCI6ICJGaWVjYXJlIGFjyJtpdW5lIGNyZWVhesSDIHVuIG9iaWNlaS4iLCAiYWRkIjogIkNoaWFyIMiZaSBnw6JuZHVyaWxlIGNhcmUgw67Im2kgdmluIOKAnmbEg3LEgyBzxIMgdnJlaeKAnSBzdW50IG9iaWNlaXVyaSBjcmVhdGUgZGUgY2UgYWkgZsSDY3V0IMOubmFpbnRlLiBDZSByZXBlyJtpIGF6aSDDrsibaSB2aW5lIG1haSB1yJlvciBtw6JpbmUuIn0sIHsiaCI6ICJDZWVhIGNlIGZhY2kgY3JlZWF6xIMgb2FtZW5paSDImWkgbWVkaXVsIHTEg3UuIiwgImFkZCI6ICJDw6JuZCDDrmkgYXByZWNpZXppIHBlIGNlaWxhbMibaSDImWkgw65pIGFkdWNpIMOubXByZXVuxIMsIGFqdW5naSBzxIMgZmlpIMOubmNvbmp1cmF0IGRlIG9hbWVuaSBjYXJlIHNlIMOubsibZWxlZyBiaW5lLiBDw6JuZCBkZXpiaW5pLCB2ZWkgdmVkZWEgb2FtZW5pIGNhcmUgc2UgY2VhcnTEgy4ifSwgeyJoIjogIkNlZWEgY2UgZmFjaSBjcmVlYXrEgyBsdW1lYSDDrm4gY2FyZSB2ZWkgcMSDyJlpLiIsICJhZGQiOiAiQ2UgcGxhbnRlemkgYXppIHByZWfEg3RlyJl0ZSBsdW1lYSDDrm4gY2FyZSB2ZWkgYWp1bmdlIG3DomluZS4gQ8OibmQgc2NoaW1iaSBjZSBmYWNpLCBzZSBzY2hpbWLEgyDImWkgbHVtZWEgdGEuIn1dfSwKICAgIHByaW9yaXRhdGk6eyBuYW1lOidDZWxlIDQgUHJpb3JpdMSDyJtpJywgdW5pdDonUHJpb3JpdGF0ZWEnLCBzdWI6J29yZGluZWEgw65uIGNhcmUgcm9kZXNjIHNlbWluyJtlbGUnLCBpdGVtczpbCiAgICAgIHsgaDonUHJpbXVsIHZlbml0LCBwcmltdWwgaWXImWl0LicsIGV4OidPIHPEg23Dom7Im8SDIHBsYW50YXTEgyDDrm5haW50ZWEgYWx0ZWlhIHZhIHLEg3PEg3JpIMOubmFpbnRlYSBjZWxlaSBkZS1hIGRvdWEuIERhY8SDIGFqdcibaSB1biBwcmlldGVuIHPEgyBmaWUgbWFpIGNyZWF0aXYgbGEgbXVuY8SDIGx1bmkgyJlpIGFwb2kgYWp1yJtpIHVuIGFsdCBwcmlldGVuIHPEgyBmaWUgbWFpIGNyZWF0aXYgbWFyyJtpLCBzxINtw6JuyJthIGRlIGx1bmkgc2UgdmEgZGVzY2hpZGUgcHJpbWEuJyB9LAogICAgICB7IGg6J0PDom5kIGFpIHVuIG9iaWNlaSwgc8SDbcOibsibYSByb2RlyJl0ZSBjdSBwcmlvcml0YXRlIGZhyJvEgyBkZSBwcmlvcml0YXRlYSAxLicsIGV4OidEYWPEgyBsLWFpIGFqdXRhdCBwZSBwcmlldGVudWwgZGUgbWFyyJtpIMOubiBtb2QgcmVndWxhdCwgY2EgcGUgdW4gb2JpY2VpLCBzxINtw6JuyJthIHBsYW50YXTEgyBjdSBlbCBzZSB2YSBkZXNjaGlkZSDDrm5haW50ZWEgc2VtaW7Im2VpIHBsYW50YXRlIGN1IHByaWV0ZW51bCBkZSBsdW5pLicgfSwKICAgICAgeyBoOidDw6JuZCBhanXIm2kgcGUgY2luZXZhIGNhcmUgdXJtZWF6xIMgc8SDIHRyZWFjxIMgcHJpbnRyLW8gc2NoaW1iYXJlIG1ham9yxIMgcGVyc29uYWzEgywgc8SDbcOibsibYSByb2RlyJl0ZSBjdSBwcmlvcml0YXRlIGZhyJvEgyBkZSBwcmlvcml0YXRlYSAyLicsIGV4OidEYWPEgyBhaSBhanV0YXQgw65uY8SDIHVuIHByaWV0ZW4gc8SDIGZpZSBtYWkgY3JlYXRpdiBtaWVyY3VyaSwgaWFyIGpvaSDDrm4gdmlhyJthIGx1aSB1cm1hIHPEgyBzZSDDrm50w6JtcGxlIG8gc2NoaW1iYXJlIG1ham9yxIMsIHNlbWluyJtlbGUgcGxhbnRhdGUgZm9hcnRlIGFwcm9hcGUgZGUgdW4gZXZlbmltZW50IG1ham9yIHNlIGNvYyDDrm5haW50ZWEgY2Vsb3IgcGxhbnRhdGUgYW50ZXJpb3IuJyB9LAogICAgICB7IGg6J0PDom5kIGFqdcibaSBwZSBjaW5ldmEgY2FyZSBzZSBkZWRpY8SDIHVudWkgc2NvcCBjYXJlIHNlcnZlyJl0ZSBtYWkgbXVsdG9yIHBlcnNvYW5lLCBzxINtw6JuyJthIHJvZGXImXRlIGN1IHByaW9yaXRhdGUgZmHIm8SDIGRlIHByaW9yaXRhdGVhIDMuJywgZXg6J0RhY8SDIHByaWV0ZW51bCBhanV0YXQgbWFyyJtpIMOubmNlcmNhIHPEgyBnxINzZWFzY8SDIHVuIG1vZCBjcmVhdGl2IGRlIGEgdmluZGVjYSBjYW5jZXJ1bCwgaWFyIHByaWV0ZW5paSBhanV0YcibaSBsdW5pIMiZaSBtaWVyY3VyaSDDrm5jZXJjYXUgc8SDIGfEg3NlYXNjxIMgdW4gbW9kIG1haSBjcmVhdGl2IGRlIGEgc2UgbWFjaGlhLCBzZW1pbsibZWxlIGRlIG1hcsibaSBvIGlhdSDDrm5haW50ZSDImWkgc2UgZGVzY2hpZCBwcmltZWxlLicgfSBdIH0KICB9LAogIGludHJvOlsKICAgIFsnQmluZSBhaSB2ZW5pdCDDrm4gYXBsaWNhyJtpYSBTZW1pbsibZSBCdW5lJywnVG90IGNlIHRyxINpZciZdGkgdmluZSBkaW4gc2VtaW7Im2VsZSBwZSBjYXJlIGxlLWFpIHBsYW50YXQgcHJpbiBnw6JuZHVyaSwgdm9yYmUgyJlpIGZhcHRlLiBBcGxpY2HIm2lhIHRlIGFqdXTEgyBzxIMgdmV6aSBjZSBwbGFudGV6aSDDrm4gZmllY2FyZSB6aSDImWkgc8SDIGFsZWdpIGNvbsiZdGllbnQgc2VtaW7Im2VsZSBwZW50cnUgdmlhyJthIHBlIGNhcmUgyJtpLW8gZG9yZciZdGkuJ10sCiAgICBbJ1ByYWN0aWNpbGUgdGFsZScsJ01lZGl0YcibaWUgyJlpIHlvZ2EgY3UgdGltZXIsIHJlY3Vub8iZdGluyJtlIMiZaSBzdWNjZXNlLCBtZWRpdGHIm2lhIGJ1Y3VyaWVpIMiZaSBjZWxlIDQgcHV0ZXJpLiBMZSBnxINzZciZdGkgcGUgdG9hdGUgbGEgYnV0b251bCBkaW4gbWlqbG9jLCBpYXIgdG90IGNlIGZhY2kgYWp1bmdlIMOubiBqdXJuYWx1bCB0xIN1LiddLAogICAgWydVbmVsdGVsZSB6aWxlaScsJ0fEg3NlyJl0ZSB1biBtb2QgY3JlYXRpdiBkZSBhIGZvbG9zaSBjZWxlIDIgdW5lbHRlIHBlbnRydSBvYmllY3RpdnVsIHTEg3UuJ10sCiAgICBbJ1Jlc3BlY3TEgyBhbmdhamFtZW50dWwgbHVhdCEnLCdDZSBzY3JpaSBsYSDigJ5QZSBjaW5lIGFqdXTigJ0gyJlpIGxhIHB1dGVyZWEgYSA0LWEgYWp1bmdlIMOubiBsaXN0YSBUbyBEby4gQmlmZWF6xIMgZHVwxIMgY2UgZmFjaTogc2VtaW7Im2VsZSBidW5lIGNyZXNjLCBpYXIgY2VsZSBuZWdhdGl2ZSBzZSBkZXphY3RpdmVhesSDLiddLAogICAgWydCdWN1csSDLXRlIGRlIHNlbWluyJtlbGUgYWx0b3JhJywnw45uIGNvbXVuaXRhdGUgdmV6aSwgYW5vbmltLCBjZSBhdSBwbGFudGF0IGNlaWxhbMibaS4gQ8OibmQgdGUgYnVjdXJpIHBlbnRydSBlaSwgdXppIHNlbWluyJtlbGUgcGVudHJ1IG9iaWVjdGl2dWwgdMSDdS4nXSBdLAogIGFib3V0OlsKICAgIFsnQ2UgZXN0ZSBTZW1pbsibZSBCdW5lJyxbJ1NlbWluyJtlIEJ1bmUgZXN0ZSBqdXJuYWx1bCB0xIN1IGRlIHByYWN0aWPEgyBwZW50cnUgc2lzdGVtdWwgc2VtaW7Im2Vsb3IuJywnTWludGVhIG5vYXN0csSDIMOubnJlZ2lzdHJlYXrEgyB0b3QgY2UgZ8OibmRpbSwgc3B1bmVtIMiZaSBmYWNlbS4gRmllY2FyZSBnw6JuZCwgdm9yYsSDIHNhdSBmYXB0xIMgZGV2aW5lIG8gc8SDbcOibsibxIMgY2FyZSBjcmXImXRlIMOubiBpbnRlcmlvcnVsIG1pbsibaWkgbm9hc3RyZSDImWksIGxhIHVuIG1vbWVudCBkYXQsIHNlIMOubnRvYXJjZSDDrm4gdmlhyJthIG5vYXN0csSDIGNhIGV4cGVyaWVuyJvEgy4nLCdBcGxpY2HIm2lhIHRlIGFqdXTEgyBzxIMgb2JzZXJ2aSBjZSBwbGFudGV6aSDImWkgc8SDIGFsZWdpIGNvbsiZdGllbnQgc2VtaW7Im2VsZSBwZW50cnUgY2VlYSBjZSDDrsibaSBkb3JlyJl0aS4nXV0sCiAgICBbJ0N1bSBvIGZvbG9zZciZdGkgw65uIGZpZWNhcmUgemknLFsnRGltaW5lYcibYTogYW1pbnRlyJl0ZS3Im2kgb2JpZWN0aXZ1bCDImWkgZGVzY29wZXLEgyB1bmVsdGVsZSB6aWxlaS4nLCfDjm4gdGltcHVsIHppbGVpOiBvYnNlcnbEgyBjZSBwbGFudGV6aS4gTm90ZWF6xIMgcmVjdW5vyJl0aW7Im2VsZSDImWkgc3VjY2VzZWxlLCBpYXIgY8OibmQgcmVjdW5vyJl0aSBvIHPEg23Dom7Im8SDIG5lZ2F0aXbEgywgbHVjcmVhesSDIGN1IGNlbGUgNCBwdXRlcmkuJywnU2VhcmE6IGbEgyBtZWRpdGHIm2lhIGJ1Y3VyaWVpLicsJ051IGUgbmV2b2llIGRlIHRleHRlIGx1bmdpLiBDw6J0ZXZhIG1pbnV0ZSBkZSBvYnNlcnZhcmUgc2luY2VyxIMsIGbEg3LEgyBqdWRlY2F0xIMgyJlpIGbEg3LEgyB2aW5vdsSDyJtpZSwgc3VudCBkZSBhanVucy4gSW1wb3J0YW50IGVzdGUgc8SDIHJldmlpIMOubiBmaWVjYXJlIHppLiddXSwKICAgIFsnUGVudHJ1IGNpbmUgZXN0ZScsWydQZW50cnUgb3JpY2luZSBhcmUgdW4gb2JpZWN0aXYgc2F1IHVuIHZpcyDImWkgdnJlYSBzxIMgYWp1bmfEgyBsYSBlbCBwbGFudMOibmQgc2VtaW7Im2VsZSBwb3RyaXZpdGUuJywnRGFjxIMgdHJlY2kgcHJpbnRyLW8gcGVyaW9hZMSDIGdyZWEgc2F1IG8gc2l0dWHIm2llIHNlIHJlcGV0xIMsIGVzdGUgc2VtbiBjxIMgc2UgY29jIHNlbWluyJtlIHBsYW50YXRlIMOubiB0cmVjdXQuIEN1IGNlbGUgNCBwdXRlcmkgbGUgcG\/Im2kgZGV6YWN0aXZhLCBpYXIgcGxhbnTDom5kIGNvbsiZdGllbnQgc2VtaW7Im2UgYnVuZSBlY2hpbGlicmV6aSBiYWxhbsibYS4nXV0sCiAgICBbJ0PDom5kIHJlY3Vub8iZdGkgbyBzxINtw6JuyJvEgyBuZWdhdGl2xIMnLFsnVG\/Im2kgcGxhbnTEg20sIGbEg3LEgyBzxIMgbmUgZMSDbSBzZWFtYSwgyJlpIHNlbWluyJtlIG5lZ2F0aXZlLiBEYWPEgyBudSBsZSBkZXphY3RpdsSDbSwgZWxlIGNvbnRpbnXEgyBzxIMgY3JlYXNjxIMuJywnQ3UgY2VsZSA0IHB1dGVyaTogw67Im2kgYW1pbnRlyJl0aSBkZSB1bmRlIHZpbiB0b2F0ZSBsdWNydXJpbGUsIGNvbsiZdGllbnRpemV6aSBiZW5lZmljaWlsZSBwZSBjYXJlIGxlLWFpIGF2dXQgyJlpIGRlY2l6aSBzxIMgZGV6YWN0aXZlemkgc8SDbcOibsibYSwgcHJvbWnIm2kgc8SDIG51IG1haSByZXBlyJtpIGdyZciZZWFsYSBvIHBlcmlvYWTEgyDImWkgZmFjaSBjZXZhIHBveml0aXYgY2FyZSBzxIMgbyBlY2hpbGlicmV6ZS4nLCdDZSBwcm9tacibaSBsYSBwdXRlcmVhIGEgNC1hIGFqdW5nZSDDrm4gVG8gRG8sIGNhIHPEgyBudSB1acibaSBzxIMgyJlpIGZhY2kuJ11dLAogICAgWydNZWRpdGHIm2lhIGJ1Y3VyaWVpJyxbJ01vbWVudHVsIGRpbmFpbnRlIGRlIHNvbW4gZmFjZSBsZWfEg3R1cmEgZGludHJlIGNvbsiZdGllbnQgyJlpIHN1YmNvbsiZdGllbnQuIENlIGfDom5kZciZdGkgYXR1bmNpIGNvbnRpbnXEgyBzxIMgY3JlYXNjxIMgw65uIHRpbXAgY2UgZG9ybWkuJywnRGUgYWNlZWEsIHNlYXJhLCBnw6JuZGXImXRlLXRlIGN1IGJ1Y3VyaWUgbGEgYmluZWxlIHBlIGNhcmUgbC1haSBmxINjdXQgcGVudHJ1IGNlaWxhbMibaSDImWkgZGVkaWPEgy1sIG9iaWVjdGl2dWx1aSB0xIN1LicsJ08gcG\/Im2kgZmFjZSDImWkgw65uIHRpbXB1bCB6aWxlaSwgb3JpY8OibmQgYWkgY8OidGV2YSBtaW51dGUuJ11dLAogICAgWydVbmVsdGVsZSB6aWxlaScsWydDZWxlIDIwIGRlIHVuZWx0ZSBzdW50IGdydXBhdGUgw65uIDUgc2V0dXJpOiBDZWkgNCBQYciZaSwgQ2VsZSA0IFB1dGVyaSwgQ2VsZSA0IExlZ2kgYWxlIFNlbWluyJtlbG9yLCBDZWxlIDQgRmxvcmkgyJlpIENlbGUgNCBQcmlvcml0xIPIm2kuIEZpZWNhcmUgc2V0IGFyZSBjdWxvYXJlYSDImWkgc2VtbnVsIGx1aS4nLHsgc3Viczonw45uIGZpZWNhcmUgemkgZGVzY29wZXJpIDIgdW5lbHRlIMiZaSBzY3JpaSBjdW0gZm9sb3NlyJl0aSBjb21iaW5hyJtpYSBsb3IuIFVuZWx0ZWxlIHN1bnQgZGlzcG9uaWJpbGUgcGVudHJ1IGNlaSBjdSBhYm9uYW1lbnQgYWN0aXYuJyB9XV0sCiAgICBbJ0NvbXVuaXRhdGVhJyxbJ1BvyJtpIMOubXDEg3J0xIPImWkgYW5vbmltIHJlY3Vub8iZdGluyJtlbGUsIHN1Y2Nlc2VsZSwgbWVkaXRhyJtpYSBidWN1cmllaSBzYXUgY2VsZSA0IHB1dGVyaSwgc3ViIHVuIG51bWUgYWxlcyBkZSB0aW5lLicsJ0PDom5kIHRlIGJ1Y3VyaSBkZSBzZW1pbsibZWxlIGFsdG9yYSwgdXppIHNlbWluyJtlbGUgcGVudHJ1IG9iaWVjdGl2dWwgdMSDdS4gQ8OibmQgY2l0ZciZdGkgY2VsZSA0IHB1dGVyaSBhbGUgY3VpdmEsIGxlIHBvyJtpIHBhcmN1cmdlIMiZaSBwZW50cnUgdGluZS4nLCdDZSBzY3JpaSByxINtw6JuZSBwcml2YXQsIGN1IGV4Y2VwyJtpYSBhIGNlZWEgY2UgYWxlZ2kgdHUgc8SDIMOubXDEg3J0xIPImWXImXRpLiddXSBdLAogIGthcm1hOlsKICAgIFsnUHJvdGVqZWF6xIMgdmlhyJthJywnQWkgZ3JpasSDIGRlIG9hbWVuaSwgZGUgYW5pbWFsZSDImWkgZGUgcGxhbnRlLiBOdSByxINuaSBpbnRlbsibaW9uYXQgbmljaW8gZmlpbsibxIMuJywnU8SDbcOibsibYSBzxINuxIN0xIPIm2lpJ10sCiAgICBbJ1Byb3RlamVhesSDIHByb3ByaWV0YXRlYScsJ0TEg3J1aWXImXRlIMiZaSBhanV0xIMtaSBwZSBjZWlsYWzIm2kuIE51IGx1YSBjZSBudSDDrsibaSBhcGFyyJtpbmUgZsSDcsSDIHBlcm1pc2l1bmUuJywnU8SDbcOibsibYSBwcm9zcGVyaXTEg8ibaWknXSwKICAgIFsnUHVyaXRhdGUgc2V4dWFsxIMnLCdPbm9yZWF6xIMgbGVnxIN0dXJhIGRpbnRyZSBkb2kgb2FtZW5pIGNhcmUgyJlpLWF1IGx1YXQgdW4gYW5nYWphbWVudCB1bnVsIGZhyJvEgyBkZSBjZWzEg2xhbHQsIGEgdGEgyJlpIGEgY2Vsb3JsYWzIm2kuJywnU8SDbcOibsibYSBmZXJpY2lyaWknXSwKICAgIFsnSW50ZWdyaXRhdGUnLCdTcHVuZSBhZGV2xINydWwgyJlpIMibaW5lLcibaSBwcm9taXNpdW5pbGUuIE51IHNwdW5lIGNlIG51IHNpbcibaSBjdSBhZGV2xINyYXQuJywnU8SDbcOibsibYSDDrm5jcmVkZXJpaSddLAogICAgWydTcHVuZSBjdXZpbnRlIGNhcmUgYWR1YyBvYW1lbmlpIMOubXByZXVuxIMnLCdGb2xvc2XImXRlIGN1dmludGVsZSBjYSBzxIMgYWR1Y2kgb2FtZW5paSDDrm1wcmV1bsSDLiBFdml0xIMgdm9yYmVsZSBjYXJlIGRlemJpbsSDIHNhdSBjcmVlYXrEgyBuZcOubsibZWxlZ2VyaS4nLCdTxINtw6JuyJthIGFybW9uaWVpJ10sCiAgICBbJ1ZvcmJlyJl0ZSBjdSBibMOibmRlyJtlIMiZaSBkdWxjZWHIm8SDJywnQXByZWNpYXrEgy1pIHBlIGNlaWxhbMibaSDImWkgdm9yYmXImXRlLWxlIGN1IHJlc3BlY3QuIEV2aXTEgyBjdXZpbnRlbGUgZHVyZSDImWkgY2FyZSByxINuZXNjLicsJ1PEg23Dom7Im2EgcmVzcGVjdHVsdWknXSwKICAgIFsnU3B1bmUgZG9hciBjdXZpbnRlIGNhcmUgYXUgcm9zdCcsJ1NwdW5lIGx1Y3J1cmkgY2FyZSBhanV0xIMgyJlpIGF1IHVuIHJvc3QuIEV2aXTEgyBiw6JyZmEgyJlpIHZvcmJlbGUgZ29hbGUuJywnU8SDbcOibsibYSB0aW1wdWx1aSddLAogICAgWydCdWN1csSDLXRlIHBlbnRydSBzdWNjZXN1bCBhbHRvcmEnLCdCdWN1csSDLXRlIGPDom5kIGFsyJtpaSBwcmltZXNjIGNlIMOuyJlpIGRvcmVzYyDImWkgYXByZWNpYXrEgyBjZSBhdS4gRXZpdMSDIGludmlkaWEgyJlpIGzEg2NvbWlhLicsJ1PEg23Dom7Im2Egc3VjY2VzdWx1aSddLAogICAgWydDb21wYXNpdW5lIHBlbnRydSBwcm9ibGVtZWxlIGFsdG9yYScsJ09mZXLEgyBjb21wYXNpdW5lIGNlbG9yIGNhcmUgdHJlYyBwcmluIGdyZXV0xIPIm2kgyJlpIGFqdXTEgy1pIGN1bSBwb8ibaS4gTnUgdGUgYnVjdXJhIGRlIG5lY2F6dXJpbGUgYWx0b3JhLicsJ1PEg23Dom7Im2EgY29tcGFzaXVuaWknXSwKICAgIFsnw45uyJtlbGVnZSBjdW0gZnVuY8ibaW9uZWF6xIMgcGl4dWwnLCdBbWludGXImXRlLcibaSBjxIMgdG90dWwgdmluZSBkaW4gc2VtaW7Im2VsZSBwbGFudGF0ZSDImWkgY8SDIHNjaGltYmFyZWEgw65uY2VwZSBkZSBsYSB0aW5lLiBUcsSDaWXImXRlIMiZaSDDrm1wxINydMSDyJllyJl0ZSBwcmluY2lwaXVsIHBpeHVsdWkuJywnU8SDbcOibsibYSDDrm7Im2VsZXBjaXVuaWknXSBdLAogIGtsYWJlbHM6WyLDjm4gY2VudHJ1IiwgIlBlIGNlcmN1cmksIHppIGRlIHppIiwgIkNlIHJvZGXImXRlIiwgIsOObiB2aWHIm2EgdGE6IiwgIsOObiBqdXJ1bCB0xIN1OiJdLCBraW50cm86IkZpZWNhcmUga2FybWEgc2UgcGxhbnRlYXrEgyDigJ7Drm4gY2VudHJ14oCdLCBwcmluIGZhcHRhIGNlYSBtYWkgcHV0ZXJuaWPEgywgyJlpIOKAnnBlIGNlcmN1cmnigJ0sIHByaW4gZ2VzdHVyaWxlIG1pY2kgZGUgemkgY3UgemkuIEZpZWNhcmUgc8SDbcOibsibxIMgcm9kZciZdGUgw65uIGRvdcSDIGxvY3VyaTogw65uIHZpYcibYSB0YSDImWkgw65uIGx1bWVhIGRpbiBqdXJ1bCB0xIN1LiIsCiAga2FybWFYOlt7ImMiOiAiU8SDIHNhbHZlemkgbyB2aWHIm8SDIHNhdSBzxIMgYWp1yJtpIG8gdmlhyJvEgyBub3XEgyBzxIMgdmluxIMgcGUgbHVtZS4iLCAiayI6IFsiQWkgZ3JpasSDIGRlIGNvcnB1bCB0xIN1OiBtaciZY2FyZSwgc29tbiwgaHJhbsSDIHPEg27Eg3RvYXPEgywgY3UgbWFpIHB1yJtpbsSDIGNhcm5lLCBhbGNvb2wgyJlpIGR1bGNpdXJpLiIsICLDjmkgw65uZ3JpamXImXRpIHBlIGNlaSBib2xuYXZpIMiZaSDDrmkgYWp1yJtpIHBlIGNlaWxhbMibaSBzxIMgdHLEg2lhc2PEgyBzxINuxIN0b3MuIiwgIkNvbmR1Y2kgcHJ1ZGVudCwgZsSDcsSDIHRlbGVmb251bCDDrm4gbcOibsSDLCDImWkgcMSDc3RyZXppIGN1cmF0IGxvY3VsIMOubiBjYXJlIHRyxINpZciZdGkgyJlpIGx1Y3JlemkuIl0sICJ2IjogInPEg27Eg3RhdGUsIGVuZXJnaWUgyJlpIHVuIGNvcnAgdmlvaSBww6JuxIMgbGEgdsOicnN0ZSDDrm5haW50YXRlLiIsICJqIjogIm9hbWVuaSBzxINuxIN0b8iZaSwgYWVyIGN1cmF0IMiZaSBsaW5pyJl0ZS4ifSwgeyJjIjogIlPEgyBkxINydWllyJl0aSwgb3JpY2UgZmVsIGRlIHJlc3Vyc2UuIiwgImsiOiBbIkFpIGdyaWrEgyBkZSBsdWNydXJpbGUgcGUgY2FyZSBsZSBmb2xvc2XImXRpIMiZaSBudSByaXNpcGXImXRpLiIsICJQbMSDdGXImXRpIGxhIHRpbXAgZmFjdHVyaWxlIMiZaSB0YXhlbGUgyJlpIGFqdW5naSBsYSB0aW1wIGxhIMOubnTDomxuaXJpOiB0aW1wdWwgY2Vsb3JsYWzIm2kgZSDImWkgZWwgbyByZXN1cnPEgy4iLCAiUmVjb21hbnppIHByb2R1c2VsZSDImWkgc2VydmljaWlsZSBidW5lLCBmYWNpIGxlZ8SDdHVyaSDDrm50cmUgb2FtZW5pLCDDrm52ZcibaSBwZSBjaW5ldmEgY3VtIHPEgyBjw6LImXRpZ2UgYmFuaS4iXSwgInYiOiAiYWJ1bmRlbsibxIMsIHRpbXAgbGliZXIgcGVudHJ1IHRpbmUsIGxpbmnImXRlLCBpYXIgcmVzdXJzZWxlIGFwYXIgZXhhY3QgY8OibmQgYWkgbmV2b2llIGRlIGVsZS4iLCAiaiI6ICJ1biBsb2MgYm9nYXQgw65uIHJlc3Vyc2UsIMOubmNvbmp1cmF0IGRlIG9hbWVuaSBwcm9zcGVyaS4ifSwgeyJjIjogIkZpZGVsaXRhdGUgw65uIHJlbGHIm2lhIHRhIMiZaSByZXNwZWN0IHBlbnRydSBhbmdhamFtZW50dWwgcGUgY2FyZSDImWkgbC1hdSBsdWF0IGFsyJtpIGRvaSBvYW1lbmkuIiwgImsiOiBbIk51IGNhdcibaSBhcHJvcGllcmUgc2F1IG8gcmVsYcibaWUgY3UgY2luZXZhIGFjb2xvIHVuZGUgbnUgZXhpc3TEgyBvIGxlZ8SDdHVyxIMgY3VyYXTEgy4iLCAiUGV0cmVjaSB0aW1wIGN1IGNlaSBzaW5ndXJpOiBixIN0csOibmksIGNvcGlpLCBwcmlldGVuaS4iLCAiw45sIHByaXZlyJl0aSBwZSBwYXJ0ZW5lciBjYSBwZSB1biDDrm5nZXIgZGVnaGl6YXQgyJlpIGFpIGdyaWrEgyBsYSBjZSBwcml2ZciZdGkgyJlpIGNlIMOubXDEg3J0xIPImWXImXRpLiJdLCAidiI6ICJvIHJlbGHIm2llIMOubXBsaW5pdMSDLCBwbGluxIMgZGUgdGFuZHJlyJtlLCBjdSB1biBwYXJ0ZW5lciBhdGVudCBsYSBjZWxlIG1haSBtaWNpIG5ldm9pIGFsZSB0YWxlLiIsICJqIjogInVuIG1lZGl1IGN1cmF0LCBwdXJpdGF0ZSDDrm4gdG90IGNlIHZlemkuIn0sIHsiYyI6ICJTxIMgc3B1aSBhZGV2xINydWwgMTAwJSwgYXN0ZmVsIMOubmPDonQgaW1hZ2luZWEgZGluIG1pbnRlYSBjZWx1aWxhbHQgc8SDIGZpZSBhY2VlYciZaSBjdSByZWFsaXRhdGVhLiIsICJrIjogWyJWb3JiZciZdGkgZGVzY2hpcyBjdSBmYW1pbGlhLCBjdSBjbGllbsibaWkgyJlpIGN1IGNvbGFib3JhdG9yaWkuIiwgIsOOyJtpIMibaWkgcHJvbWlzaXVuaWxlLCBpbmNsdXNpdiBwZSBjZWxlIGbEg2N1dGUgyJtpZS4iLCAiTnUgZmFjaSBwcm9taXNpdW5pIHBlIGNhcmUgcy1hciBwdXRlYSBzxIMgbnUgbGUgcmVzcGVjyJtpLiBOaWNpIOKAnm1pbmNpdW5pbGUgYWxiZeKAnSBudSDDrsiZaSBhdSBsb2N1bC4iXSwgInYiOiAib2FtZW5paSBhdSDDrm5jcmVkZXJlIMOubiBjdXbDom50dWwgdMSDdSwgYWkgZW5lcmdpZSDImWkgcGFjZSBhIG1pbsibaWkuIiwgImoiOiAicHJpZXRlbmkgyJlpIHBhcnRlbmVyaSBkZSBhZmFjZXJpIG9uZciZdGksIGNhcmUgc2UgcmVzcGVjdMSDIHJlY2lwcm9jLiJ9LCB7ImMiOiAiU8SDIGxhdXppIG8gcGVyc29hbsSDIMOubiBmYcibYSBhbHRjdWl2YS4iLCAiayI6IFsiQ2F1yJtpIGNhbGl0xIPIm2lsZSBvYW1lbmlsb3IgyJlpIGxlIHNwdWkgY3Ugdm9jZSB0YXJlLiIsICLDjm5jdXJhamV6aSBjb2xhYm9yYXJlYSwgZmFjaSBsZWfEg3R1cmkgw65udHJlIG9hbWVuaSwgcHJvbW92ZXppIGV2ZW5pbWVudGUgY2FyZSDDrmkgYWR1bsSDLiIsICJOdSBmYWNpIGNvbXBhcmHIm2lpIMOubnRyZSBvYW1lbmkgyJlpIG51IGRpc2NyaW1pbmV6aSBwZSBuaW1lbmkuIl0sICJ2IjogInJlbGHIm2lpIMOubXBsaW5pdGUgyJlpIHByaWV0ZW5paSBjYXJlIGR1cmVhesSDLiIsICJqIjogInVuIGdydXAgw65uIGNhcmUgb2FtZW5paSBzZSBzcHJpamluxIMgdW5paSBwZSBhbMibaWksIGlhciBkcnVtdXJpbGUgdGFsZSBzdW50IHXImW9hcmUuIn0sIHsiYyI6ICJTxIMgdm9yYmXImXRpIGNhbG0sIHJlbGF4YXQsIGN1IHVuIHRvbiBibMOibmQuIiwgImsiOiBbIkFzY3VsyJtpIGN1IGFkZXbEg3JhdCDImWkgZGFpIGZlZWRiYWNrIGNvbnN0cnVjdGl2LiIsICJNZWRpdGV6aSwgZmFjaSB5b2dhLCB0ZSBwbGltYmkgw65uIG5hdHVyxIMsIGFzY3VsyJtpIG11emljxIMgbGluaciZdGl0b2FyZS4iLCAiQWkgZ3JpasSDIMiZaSBsYSBjdXZpbnRlbGUgZGluIGfDom5kLCBpbmNsdXNpdiBsYSBjZWxlIHBlIGNhcmUgyJtpIGxlIHNwdWkgyJtpZS4iXSwgInYiOiAic29tbiBsaW5pyJl0aXQgyJlpIHBhY2UgYSBtaW7Im2lpLiIsICJqIjogIm9hbWVuaSBjYXJlIGNvbXVuaWPEgyByZWxheGF0LCBmxINyxIMgY2VydHVyaS4ifSwgeyJjIjogIlPEgyBkYWkgbWFpIGRlcGFydGUgaWRlZWEgY8SDIHRvdHVsIHZpbmUgZGluIHNlbWluyJtlLiIsICJrIjogWyJWb3JiZciZdGkgZGVzcHJlIGx1Y3J1cmkgY2FyZSBhZHVjIHZhbG9hcmUgw65uIHZpYcibYSBvYW1lbmlsb3IuIiwgIkFsZWdpIGPEg3LIm2ksIGZpbG1lIMiZaSBwb3N0xINyaSBkaW4gY2FyZSDDrm52ZcibaSBjdW0gc8SDIGFkdWNpIHZhbG9hcmUgY2Vsb3JsYWzIm2kuIiwgIkV2acibaSBiw6JyZmEgZGUgb3JpY2UgZmVsIMiZaSB0aW1wdWwgcGllcmR1dCBwZSBjb27Im2ludXQgZ29sLiJdLCAidiI6ICJjdXZpbnRlbGUgdGFsZSBhdSBncmV1dGF0ZSDImWkgdGltcHVsIHTEg3Ugc2UgdW1wbGUgZGUgbHVjcnVyaSBjdSByb3N0LiIsICJqIjogIm9hbWVuaWkgdGUgYXNjdWx0xIMgY8OibmQgdm9yYmXImXRpLiJ9LCB7ImMiOiAiU8SDIHRlIGJ1Y3VyaSBzaW5jZXIgY8OibmQgYWzIm2lpIG9iyJtpbiBjZSDDrsiZaSBkb3Jlc2MuIiwgImsiOiBbIsOOaSBzdXPIm2lpIMiZaSDDrmkgw65uY3VyYWplemkgcGUgY2VpbGFsyJtpLiIsICJUZSBidWN1cmkgZGUgcmV1yJlpdGVsZSDImWkgcG9zdMSDcmlsZSBjZWxvcmxhbMibaSDImWkgbGUgYXByZWNpZXppLiIsICJOdSB0ZSBjb21wYXJpIMiZaSBudSBjb21lbnRlemkgaXJvbmljIHN1Y2Nlc3VsIG5pbcSDbnVpLiJdLCAidiI6ICJzdWNjZXMgw65uIHByb2llY3RlbGUgdGFsZSwgYnVjdXJpZSBwZW50cnUgY2UgZmFjaSwgw67Im2kgZGVzY29wZXJpIHBhc2l1bmVhIMiZaSB2b2NhyJtpYS4iLCAiaiI6ICJ1biBtZWRpdSDDrm4gY2FyZSBwcmltZciZdGkgc3ByaWppbiDImWkgZXhpc3TEgyByZXN1cnNlLiJ9LCB7ImMiOiAiQ29tcGFzaXVuZSBwZW50cnUgc3VmZXJpbsibYSBjdWl2YS4iLCAiayI6IFsiQWp1yJtpIG9yaSBkZSBjw6J0ZSBvcmkgYWkgb2NhemlhLiIsICJBbGVnaSBjxINyyJtpIMiZaSBmaWxtZSBjYXJlIHByb21vdmVhesSDIGNvbXBhc2l1bmVhLiIsICJDw6JuZCBjaW5ldmEgZ3JlyJllyJl0ZSwgbGHImWkgZGVvcGFydGUg4oCeyJl0aWFtIGV14oCdIHNhdSDigJ5hbSBhdnV0IGRyZXB0YXRl4oCdLiJdLCAidiI6ICJnxINzZciZdGkgYWp1dG9yIGPDom5kIGFpIG5ldm9pZSDImWkgZXZvbHVlemkgc3Bpcml0dWFsLiIsICJqIjogIm9hbWVuaSBjYXJlIHNlIHNwcmlqaW7EgyB1bmlpIHBlIGFsyJtpaSwgdW4gbWVkaXUgbGluaciZdGl0LiJ9LCB7ImMiOiAiU8SDIGV4cGxpY2kgYWx0Y3VpdmEgcHJpbmNpcGl1bCBwaXh1bHVpLiIsICJrIjogWyJGYWNpIHBhdXplIMOubiB0aW1wdWwgemlsZWkgY2Egc8SDIMOuyJtpIGFtaW50ZciZdGkgY8SDIGNlIHZlemksIGNlIGZhY2kgyJlpIGNlIGfDom5kZciZdGkgdmluIGRpbiBzZW1pbsibZWxlIHRhbGUuIiwgIkNpdGXImXRpIMiZaSBhc2N1bMibaSBtYXRlcmlhbGUgZGVzcHJlIGN1bSBmdW5jyJtpb25lYXrEgyBzZW1pbsibZWxlLiIsICJDw6JuZCBjZXZhIG51IG1lcmdlLCBudSBkYWkgdmluYSBwZSBjZWlsYWzIm2k6IHRlIMOubnRyZWJpIGNlIHNlbWluyJtlIHPEgyBwbGFudGV6aS4iXSwgInYiOiAicHJvaWVjdGVsZSB0YWxlIG1lcmcgcMOibsSDIGxhIGNhcMSDdCDImWkgc2ltyJtpIHRvdCBtYWkgbXVsdMSDIGxpYmVydGF0ZSBpbnRlcmlvYXLEgy4iLCAiaiI6ICLDrm7Im2VsZWdpIGNlIHNlIMOubnTDom1wbMSDIMOubiBqdXJ1bCB0xIN1IMiZaSBudSB0ZSBtYWkgc2ltyJtpIGNvcGxlyJlpdCBkZSBsdWNydXJpLiJ9XSwKICBncm91cHM6WydGQVBURScsJ1ZPUkJFJywnR8OCTkRVUkknXSwgZG9tYWluczpbJ0JhbmknLCdSZWxhyJtpaScsJ1PEg27Eg3RhdGUnXQp9OwovKiBtZXJnZSB0aGUgbmV3IGludGVyZmFjZSB3b3JkcyBpbnRvIGVhY2ggbGFuZ3VhZ2UgKi8KZm9yIChjb25zdCBsIG9mIE9iamVjdC5rZXlzKFhUKSkgaWYgKFVJW2xdKSB7IE9iamVjdC5hc3NpZ24oVUlbbF0sIFhUW2xdLnVpKTsgVUlbbF0ua2luZCA9IHsgLi4uVUlbbF0ua2luZCwgdW5lbHRlOlhUW2xdLmtpbmRVIH0gfQovKiBJdGFsaWFuIGludHJvIGdyZWV0aW5nIGZvbGxvd3MgdGhlIHBlcnNvbidzIGdlbmRlciAqLwpHVUkuaXQuaW50cm9IZWxsbyA9ICgpID0+IEcoIkJlbnZlbnV0YSBuZWxsJ2FwcCBTZW1pIEJ1b25pIiwiQmVudmVudXRvIG5lbGwnYXBwIFNlbWkgQnVvbmkiKTsKY29uc3QgeHQgPSAoKSA9PiBYVFtsYW5nKCldIHx8IFhULmVuOwoKY29uc3QgU0VUX01FVEEgPSBbCiAgeyBrOidwYXNpJywgY29sb3I6JyNEMjY5MUUnLCBpbms6JyNBNDRFMTAnLCBzb2Z0OicjRkNFN0Q1JywKICAgIGljb246JzxwYXRoIGQ9Ik0xNSAyNWMtMi4yIDAtMy42LTIuNC0zLjItNS42LjQtMy4zIDItNi40IDQuMS02LjQgMiAwIDIuNiAyLjkgMi4yIDYtLjQgMy40LTEuMSA2LTMuMSA2WiIvPjxwYXRoIGQ9Ik0xMy42IDI4LjhjLjQtMS40IDEuOC0yLjEgMy0xLjcgMS4zLjQgMS42IDEuOCAxLjIgMy4xLS40IDEuNC0xLjcgMi4xLTIuOSAxLjctMS4yLS40LTEuNy0xLjctMS4zLTMuMVoiLz48cGF0aCBkPSJNMjUgMjFjMi4yIDAgMy42LTIuNCAzLjItNS42LS40LTMuMy0yLTYuNC00LjEtNi40LTIgMC0yLjYgMi45LTIuMiA2IC40IDMuNCAxLjEgNiAzLjEgNloiLz48cGF0aCBkPSJNMjYuNCAyNC44Yy0uNC0xLjQtMS44LTIuMS0zLTEuNy0xLjMuNC0xLjYgMS44LTEuMiAzLjEuNCAxLjQgMS43IDIuMSAyLjkgMS43IDEuMi0uNCAxLjctMS43IDEuMy0zLjFaIi8+JyB9LAogIHsgazoncHV0ZXJpJywgY29sb3I6JyNENEE4MEMnLCBpbms6JyM3RTYyMDAnLCBzb2Z0OicjRkJGMUM0JywKICAgIGljb246JzxwYXRoIGQ9Ik0yMCA5YzEgNC42IDYuOCA3LjMgNi44IDEzLjZhNi44IDYuOCAwIDAgMS0xMy42IDBjMC0zLjEgMS42LTUuMSAzLjMtNi42LjIgMiAuOSAzLjQgMi4zIDQuMkMxOCAxNS44IDE4LjYgMTIuMyAyMCA5WiIvPjxwYXRoIGQ9Ik0yMCAzMC41YTMgMyAwIDAgMS0zLTNjMC0yIDEuNi0zIDMtNSAxLjQgMiAzIDMgMyA1YTMgMyAwIDAgMS0zIDNaIi8+JyB9LAogIHsgazonbGVnaScsIGNvbG9yOicjMkU1QUFDJywgaW5rOicjMjQ0OThEJywgc29mdDonI0RERTZGNycsCiAgICBpY29uOic8cGF0aCBkPSJNMjAgMTB2MjBNMTQgMzBoMTJNMTIgMTRoMTYiLz48cGF0aCBkPSJNMTIgMTQgOC41IDIyaDdaIi8+PHBhdGggZD0iTTI4IDE0bC0zLjUgOGg3WiIvPjxwYXRoIGQ9Ik04LjUgMjJhMy41IDEuNiAwIDAgMCA3IDBNMjQuNSAyMmEzLjUgMS42IDAgMCAwIDcgMCIvPjxjaXJjbGUgY3g9IjIwIiBjeT0iMTAuNSIgcj0iMS4zIi8+JyB9LAogIHsgazonZmxvcmknLCBjb2xvcjonI0Q2MzM4NCcsIGluazonI0E4MjE2QScsIHNvZnQ6JyNGQkRERUInLAogICAgaWNvbjonPGNpcmNsZSBjeD0iMjAiIGN5PSIxOSIgcj0iMi42Ii8+PHBhdGggZD0iTTIwIDE2LjRjLTEuOC0yLjMtMS44LTUuMiAwLTYuOSAxLjggMS43IDEuOCA0LjYgMCA2LjlaTTIyLjUgMTguMmMxLjItMi42IDMuOC0zLjkgNi4xLTMuMi0uMSAyLjQtMi40IDQuMi01LjMgNC4xWk0yMS42IDIxLjJjMi45LjIgNSAyLjEgNS4yIDQuNS0yLjMuNi00LjgtLjgtNS45LTMuNFpNMTguNCAyMS4yYy0yLjkuMi01IDIuMS01LjIgNC41IDIuMy42IDQuOC0uOCA1LjktMy40Wk0xNy41IDE4LjJjLTEuMi0yLjYtMy44LTMuOS02LjEtMy4yLjEgMi40IDIuNCA0LjIgNS4zIDQuMVoiLz48cGF0aCBkPSJNMjAgMjEuNlYzMk0yMCAyOGMxLjYtMS44IDMuNC0yLjQgNS0yIi8+JyB9LAogIHsgazoncHJpb3JpdGF0aScsIGNvbG9yOicjNzA0OEMyJywgaW5rOicjNUEzNUEzJywgc29mdDonI0U5RTBGOCcsCiAgICBpY29uOic8Y2lyY2xlIGN4PSIyMCIgY3k9IjIwIiByPSI5LjUiLz48cGF0aCBkPSJNMjAgMTAuNWE0Ljc1IDQuNzUgMCAwIDEgMCA5LjUgNC43NSA0Ljc1IDAgMCAwIDAgOS41Ii8+PGNpcmNsZSBjeD0iMjAiIGN5PSIxNS4yNSIgcj0iMS4yIi8+PGNpcmNsZSBjeD0iMjAiIGN5PSIyNC43NSIgcj0iMS4yIi8+JyB9Cl07Ci8qIHRoZSBzZXRzIGluIHRoZSBjdXJyZW50IGxhbmd1YWdlICovCmNvbnN0IFRTID0gKCkgPT4gU0VUX01FVEEubWFwKG09Pih7IC4uLm0sIC4uLnh0KCkuc2V0c1ttLmtdIH0pKTsKY29uc3QgVE9PTF9JRFMgPSBTRVRfTUVUQS5mbGF0TWFwKChtLHNpKT0+WzEsMiwzLDRdLm1hcChuPT4oeyBpZDptLmsrbiwgc2ksIG4gfSkpKTsKY29uc3QgdG9vbEJ5SWQgPSBpZCA9PiB7IGNvbnN0IGI9VE9PTF9JRFMuZmluZCh4PT54LmlkPT09aWQpOyBpZighYikgcmV0dXJuIG51bGw7IGNvbnN0IGl0PVRTKClbYi5zaV0uaXRlbXNbYi5uLTFdOwogIHJldHVybiB0eXBlb2YgaXQ9PT0nc3RyaW5nJyA\/IHsgLi4uYiwgdDppdCB9IDogaXQuaCA\/IHsgLi4uYiwgdDppdC5oLCBoOml0LmgsIGV4Oml0LmV4LCBhZGQ6aXQuYWRkIH0gOiB7IC4uLmIsIHQ6aXQudCwgYWRkOml0LmFkZCB9IH07CmNvbnN0IHRvb2xMYWJlbCA9IHggPT4gVFMoKVt4LnNpXS51bml0KycgJyt4Lm47CmNvbnN0IHRvb2xIZWFkID0geCA9PiB7IGNvbnN0IGM9eC50LmluZGV4T2YoJzonKTsgaWYoYz4wICYmIGM8NDApIHJldHVybiB4LnQuc2xpY2UoMCxjKS50cmltKCk7IGNvbnN0IHM9eC50LnNwbGl0KC8oPzw9Wy4hP+KApl0pXHMvKVswXTsgcmV0dXJuIHMubGVuZ3RoPjcwID8gcy5zbGljZSgwLDY4KS5yZXBsYWNlKC9cc1xTKiQvLCcnKSsn4oCmJyA6IHMucmVwbGFjZSgvWyw7Ol0kLywnJykgfTsKY29uc3QgdG9vbFNldEljb24gPSAocyxzaXplPTQwKSA9PiBgPHN2ZyB3aWR0aD0iJHtzaXplfSIgaGVpZ2h0PSIke3NpemUqMS4xfSIgdmlld0JveD0iMCAwIDQwIDQ0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0yMCAyIDM4IDEydjIwTDIwIDQyIDIgMzJWMTJaIi8+JHtzLmljb259PC9zdmc+YDsKCi8qIHN1YnNjcmlwdGlvbjogb24gdGhlIHNpdGUgdGhlIHNlcnZlciBzYXlzOyBpbiB0aGUgdGVzdCB2ZXJzaW9uIHlvdSBjYW4gc2ltdWxhdGUgaXQgKi8KbGV0IFNVQj1mYWxzZTsKY29uc3QgaGFzU3ViID0gKCkgPT4gQ09ORklHLmFwaSA\/IFNVQiA6ICEhREFUQS5zZXR0aW5ncy5zaW1TdWI7CmFzeW5jIGZ1bmN0aW9uIHN1YkxvYWQoKXsgaWYoIUNPTkZJRy5hcGkpIHJldHVybjsgdHJ5eyBjb25zdCByPWF3YWl0IGZldGNoKENPTkZJRy5hcGkucm9vdCsnZ3JhZGluYS92MS9tZScse2NyZWRlbnRpYWxzOidzYW1lLW9yaWdpbicsaGVhZGVyczp7J1gtV1AtTm9uY2UnOkNPTkZJRy5hcGkubm9uY2V9fSk7IGlmKHIub2speyBjb25zdCBqPWF3YWl0IHIuanNvbigpOyBTVUI9ISFqLnN1YjsgaWYodGFiPT09J2F6aScpIHJlbmRlcigpIH0gfWNhdGNoKGUpe30gfQpsZXQgdUFuaW0gPSAwOwpjb25zdCB1VG9kYXkgPSAoKSA9PiAoREFUQS51bmVsdGUgJiYgREFUQS51bmVsdGUuZGF5PT09dG9kYXlLZXkoKSkgPyBEQVRBLnVuZWx0ZSA6IG51bGw7CmZ1bmN0aW9uIHVEcmF3KCl7CiAgY29uc3QgTj1UT09MX0lEUy5sZW5ndGgsIGE9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKk4pOyBsZXQgYjsgZG8geyBiPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpOKSB9IHdoaWxlKGI9PT1hKTsKICBEQVRBLnVuZWx0ZT17IGRheTp0b2RheUtleSgpLCBjYXJkczpbVE9PTF9JRFNbYV0uaWQsIFRPT0xfSURTW2JdLmlkXSwgbm90ZTonJywgZW50cnk6bnVsbCB9OwogIHBlcnNpc3QoKTsgdUFuaW09MTsgcmVuZGVyKCk7CiAgc2V0VGltZW91dCgoKT0+eyBjb25zdCBjPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50Y2FyZCcpWzBdOyBjJiZjLmNsYXNzTGlzdC5hZGQoJ2ZsaXBwZWQnKSB9LCAzNTApOwogIHNldFRpbWVvdXQoKCk9PnsgY29uc3QgYz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGNhcmQnKVsxXTsgYyYmYy5jbGFzc0xpc3QuYWRkKCdmbGlwcGVkJykgfSwgMTA1MCk7CiAgc2V0VGltZW91dCgoKT0+eyB1QW5pbT0wIH0sIDE4MDApOwp9CmNvbnN0IGNhcmRCYWNrID0gKCkgPT4gYDxkaXYgY2xhc3M9ImZhY2UgYmFjayI+JHtoZXgoJ3NhbWFudGEnLDQ2KX08c3Bhbj4ke2VzYyh0KCdhcHBOYW1lJykpfTwvc3Bhbj48L2Rpdj5gOwpmdW5jdGlvbiB0b29sQ2FyZChpZCwgZmxpcHBlZCl7CiAgY29uc3QgeD10b29sQnlJZChpZCk7IGlmKCF4KSByZXR1cm4gJyc7IGNvbnN0IHM9VFMoKVt4LnNpXTsKICBjb25zdCBjPXgudC5pbmRleE9mKCc6Jyk7IGNvbnN0IGJvZHkgPSAoeC5oID8gYDxiPiR7ZXNjKHguaCl9PC9iPmAgOiAoYz4wJiZjPDQwKSA\/IGA8Yj4ke2VzYyh4LnQuc2xpY2UoMCxjKSl9PC9iPiR7ZXNjKHgudC5zbGljZShjKSl9YCA6IGVzYyh4LnQpKSArICgheC5oJiZ4LmFkZCA\/ICcgJytlc2MoeC5hZGQpIDogJycpOwogIGNvbnN0IGV4aCA9IHguaCA\/IFt4LmV4LCB4LmFkZF0uZmlsdGVyKEJvb2xlYW4pLm1hcChlc2MpLmpvaW4oJyAnKSA6ICcnOwogIHJldHVybiBgPGRpdiBjbGFzcz0idGNhcmQgJHtmbGlwcGVkPydmbGlwcGVkJzonJ30iIHN0eWxlPSItLXRjOiR7cy5jb2xvcn07LS10aToke3MuaW5rfTstLXRzOiR7cy5zb2Z0fSI+PGRpdiBjbGFzcz0iaW4iPgogICAgJHtjYXJkQmFjaygpfQogICAgPGRpdiBjbGFzcz0iZmFjZSBmcm9udCIgYXJpYS1oaWRkZW49IiR7IWZsaXBwZWR9Ij4KICAgICAgPGRpdiBjbGFzcz0idGgiPiR7dG9vbFNldEljb24ocywzNCl9PGRpdj48c3BhbiBjbGFzcz0ic2V0Ij4ke2VzYyhzLm5hbWUpfTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtIj4ke2VzYyh0b29sTGFiZWwoeCkpfTwvc3Bhbj48L2Rpdj48L2Rpdj4KICAgICAgJHtzLnN1Yj9gPHAgY2xhc3M9InN1YiI+JHtlc2Mocy5zdWIpfTwvcD5gOicnfQogICAgICA8cCBjbGFzcz0idHQiPiR7Ym9keX08L3A+CiAgICAgICR7ZXhoP2A8cCBjbGFzcz0iZXgiPiR7ZXhofTwvcD5gOicnfQogICAgPC9kaXY+PC9kaXY+PC9kaXY+YDsKfQpjb25zdCBzaW1CdG4gPSBvbiA9PiBDT05GSUcuYXBpPycnOmA8YnV0dG9uIGNsYXNzPSJsaW5rIiBkYXRhLXVhY3Q9InNpbSIgc3R5bGU9ImFsaWduLXNlbGY6ZmxleC1zdGFydDtmb250LXNpemU6LjhyZW0iPiR7dChvbj8ndVNpbU9uJzondVNpbU9mZicpfTwvYnV0dG9uPmA7CmZ1bmN0aW9uIHVuZWx0ZWxDYXJkKCl7CiAgaWYgKCFoYXNTdWIoKSl7CiAgICByZXR1cm4gYDxkaXYgY2xhc3M9ImNhcmQgdW5lbHRlIGxvY2tlZCI+PGRpdiBjbGFzcz0idWhlYWQiPjxoMz4ke3QoJ3VUaXRsZScpfTwvaDM+PHNwYW4gY2xhc3M9ImxvY2siIGFyaWEtaGlkZGVuPSJ0cnVlIj48c3ZnIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+PHJlY3QgeD0iNSIgeT0iMTAuNSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjEwIiByeD0iMi41Ii8+PHBhdGggZD0iTTggMTAuNVY4YTQgNCAwIDAgMSA4IDB2Mi41Ii8+PC9zdmc+PC9zcGFuPjwvZGl2PgogICAgICA8cCBjbGFzcz0ibm90ZSI+JHt0KCd1TG9ja2VkJyl9PC9wPgogICAgICA8ZGl2IGNsYXNzPSJ0c2V0cyI+JHtUUygpLm1hcChzPT5gPHNwYW4gc3R5bGU9Ii0tdGM6JHtzLmNvbG9yfTstLXRzOiR7cy5zb2Z0fSI+JHt0b29sU2V0SWNvbihzLDI2KX08L3NwYW4+YCkuam9pbignJyl9PC9kaXY+CiAgICAgIDxwIGNsYXNzPSJsb2NrbXNnIj4ke3QoJ3VMb2NrTXNnJyl9PC9wPgogICAgICAke0NPTkZJRy5zdWJzVXJsP2A8YSBjbGFzcz0iYnRuIHNvZnQiIGhyZWY9IiR7ZXNjKENPTkZJRy5zdWJzVXJsKX0iIHRhcmdldD0iX3RvcCIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjpub25lO3RleHQtYWxpZ246Y2VudGVyIj4ke3QoJ3VTZWVTdWJzJyl9PC9hPmA6Jyd9CiAgICAgICR7c2ltQnRuKHRydWUpfQogICAgPC9kaXY+YDsKICB9CiAgY29uc3QgdT11VG9kYXkoKTsKICBpZiAoIXUpewogICAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJjYXJkIHVuZWx0ZSI+PGRpdiBjbGFzcz0idWhlYWQiPjxoMz4ke3QoJ3VUaXRsZScpfTwvaDM+PC9kaXY+CiAgICAgIDxwIGNsYXNzPSJub3RlIj4ke3QoJ3VEcmF3Tm90ZScpfTwvcD4KICAgICAgPGRpdiBjbGFzcz0idHBhaXIiPiR7WzAsMV0ubWFwKCgpPT5gPGRpdiBjbGFzcz0idGNhcmQiPjxkaXYgY2xhc3M9ImluIj4ke2NhcmRCYWNrKCl9PC9kaXY+PC9kaXY+YCkuam9pbignJyl9PC9kaXY+CiAgICAgIDxidXR0b24gY2xhc3M9ImJ0biIgZGF0YS11YWN0PSJkcmF3Ij4ke3QoJ3VEcmF3Jyl9PC9idXR0b24+CiAgICAgICR7c2ltQnRuKGZhbHNlKX0KICAgIDwvZGl2PmA7CiAgfQogIGNvbnN0IGZsaXBwZWQgPSAhdUFuaW07CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJjYXJkIHVuZWx0ZSI+PGRpdiBjbGFzcz0idWhlYWQiPjxoMz4ke3QoJ3VUaXRsZScpfTwvaDM+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJ0cGFpciI+JHt1LmNhcmRzLm1hcChpZD0+dG9vbENhcmQoaWQsIGZsaXBwZWQpKS5qb2luKCcnKX08L2Rpdj4KICAgIDxkaXYgY2xhc3M9InEiPjxsYWJlbCBmb3I9InVOb3RlIj4ke3QoJ3VRJyl9PC9sYWJlbD4KICAgICAgPHRleHRhcmVhIGlkPSJ1Tm90ZSIgcm93cz0iMyIgcGxhY2Vob2xkZXI9IiR7ZXNjKHQoJ3VQaCcpKX0iPiR7ZXNjKHUubm90ZXx8JycpfTwvdGV4dGFyZWE+PC9kaXY+CiAgICA8YnV0dG9uIGNsYXNzPSJidG4iIGRhdGEtdWFjdD0ic2F2ZSI+JHt0KHUuZW50cnk\/J3VVcGRhdGUnOid1U2F2ZScpfTwvYnV0dG9uPgogICAgPGJ1dHRvbiBjbGFzcz0ibGluayIgZGF0YS11YWN0PSJhZ2FpbiIgc3R5bGU9ImFsaWduLXNlbGY6Y2VudGVyIj4ke3QoJ3VBZ2FpbicpfTwvYnV0dG9uPgogICAgJHtzaW1CdG4oZmFsc2UpfQogIDwvZGl2PmA7Cn0KZnVuY3Rpb24gdVNhdmUoKXsKICBjb25zdCB1PXVUb2RheSgpOyBpZighdSkgcmV0dXJuOwogIHUubm90ZT0oJCgnI3VOb3RlJyk\/LnZhbHVlfHwnJykudHJpbSgpOwogIGxldCBlPXUuZW50cnkgJiYgREFUQS5lbnRyaWVzLmZpbmQoeD0+eC5pZD09PXUuZW50cnkpOwogIGlmIChlKXsgZS5jYXJkcz11LmNhcmRzLnNsaWNlKCk7IGUubm90ZT11Lm5vdGU7IHBlcnNpc3QoKSB9CiAgZWxzZSB7IGFkZEVudHJ5KHsgdHlwZTondW5lbHRlJywgY2FyZHM6dS5jYXJkcy5zbGljZSgpLCBub3RlOnUubm90ZSwgZGF0ZTpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgfSk7IHUuZW50cnk9REFUQS5lbnRyaWVzW0RBVEEuZW50cmllcy5sZW5ndGgtMV0uaWQ7IHBlcnNpc3QoKSB9CiAgcmVuZGVyKCk7IHRvYXN0KHQoJ3VTYXZlZCcpKTsKfQpmdW5jdGlvbiB1bmVsdGVFbnRyeUh0bWwoZSx0bSxkZWwpewogIGNvbnN0IHRsPShlLmNhcmRzfHxbXSkubWFwKHRvb2xCeUlkKS5maWx0ZXIoQm9vbGVhbiksIHNldHM9VFMoKTsKICByZXR1cm4gYDxkaXYgY2xhc3M9ImVudHJ5IHVuZWx0ZSBjb2wiPiR7aGV4KCd1bmVsdGUnLDMyKX08ZGl2IGNsYXNzPSJ0eHQiPjxiPiR7ZXNjKEtJTkQudW5lbHRlKX08L2I+PHNwYW4+JHt0bX08L3NwYW4+CiAgICA8dWwgY2xhc3M9Iml0ZW1zIj4ke3RsLm1hcCh4PT5gPGxpPjxzcGFuIGNsYXNzPSJ0YWciIHN0eWxlPSJjb2xvcjoke3NldHNbeC5zaV0uaW5rfSI+JHtlc2ModG9vbExhYmVsKHgpKX08L3NwYW4+PHNwYW4+JHtlc2ModG9vbEhlYWQoeCkpfTwvc3Bhbj48L2xpPmApLmpvaW4oJycpfTwvdWw+CiAgICAke2Uubm90ZT9gPHAgY2xhc3M9InVub3RlIj4ke2VzYyhlLm5vdGUpfTwvcD5gOicnfTwvZGl2PiR7ZGVsfTwvZGl2PmA7Cn0KCi8qID09PT09PT09PT09PSBQcmFjdGljZSBodWIgPT09PT09PT09PT09ICovCmZ1bmN0aW9uIHJlbmRlckh1YigpewogIGNvbnN0IHRrPXRvZGF5S2V5KCksIHRvZGF5PURBVEEuZW50cmllcy5maWx0ZXIoZT0+ZGF5S2V5KGUuZGF0ZSk9PT10ayk7CiAgY29uc3QgY250ID0gKC4uLmspID0+IHRvZGF5LmZpbHRlcihlPT5rLmluY2x1ZGVzKGUudHlwZSkpLmxlbmd0aDsKICBjb25zdCBub3RlID0gbiA9PiBuP2A8ZW0+JHt0KCduVG9kYXknKShuKX08L2VtPmA6Jyc7CiAgY29uc3QgYnVzeT1bJ3ByZXAnLCdydW4nLCdwYXVzZWQnXS5pbmNsdWRlcyhULnBoYXNlKTsKICByZXR1cm4gYDxkaXYgY2xhc3M9InZpZXciPgogICAgPGRpdj48aDI+JHt0KCdodWJUaXRsZScpfTwvaDI+PHAgY2xhc3M9ImxlYWQiPiR7dCgnaHViTGVhZCcpfTwvcD48L2Rpdj4KICAgICR7YnVzeT9gPGJ1dHRvbiBjbGFzcz0iYnRuIHNvZnQiIGRhdGEtZ289InRpbWVyIj4ke3QoJ2h1YkJ1c3knKX08L2J1dHRvbj5gOicnfQogICAgPGRpdiBjbGFzcz0idGlsZXMiPgogICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlIiBkYXRhLWdvPSJ0aW1lciI+JHtoZXgoJ21lZGl0YXRpZScpfTxzdHJvbmc+JHt0KCd0aWxlTWVkJyl9PC9zdHJvbmc+JHtub3RlKGNudCgnbWVkaXRhdGllJywneW9nYScpKX08L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0idGlsZSIgZGF0YS1nbz0icmVjdW5vc3RpbnRlIj4ke2hleCgncmVjdW5vc3RpbnRlJyl9PHN0cm9uZz4ke3QoJ3RpbGVSZWMnKX08L3N0cm9uZz4ke25vdGUoY250KCdyZWN1bm9zdGludGUnKSl9PC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9InRpbGUiIGRhdGEtZ289ImJ1Y3VyaWUiPiR7aGV4KCdidWN1cmllJyl9PHN0cm9uZz4ke3QoJ3RpbGVKb3knKX08L3N0cm9uZz4ke25vdGUoY250KCdidWN1cmllJykpfTwvYnV0dG9uPgogICAgICA8YnV0dG9uIGNsYXNzPSJ0aWxlIiBkYXRhLWdvPSJwdXRlcmkiPiR7aGV4KCdwdXRlcmknKX08c3Ryb25nPiR7dCgndGlsZVBvdycpfTwvc3Ryb25nPiR7bm90ZShjbnQoJ3B1dGVyaScpKX08L2J1dHRvbj4KICAgIDwvZGl2PgogIDwvZGl2PmA7Cn0KCi8qID09PT09PT09PT09PSBQcm9maWxlID09PT09PT09PT09PSAqLwpjb25zdCBBVkFUQVJTID0gewogIHNhbWFudGE6JzxwYXRoIGQ9Ik0yMCAyOVYyME0yMCAyMi41YzAtMy41LTIuNi01LjUtNi01LjUgMCAzLjUgMi42IDUuNSA2IDUuNVpNMjAgMjBjMC0zLjYgMi42LTYgNi02IDAgMy42LTIuNiA2LTYgNloiLz4nLAogIGZydW56YTonPHBhdGggZD0iTTEyIDI5YzAtOSA1LTE1IDE2LTE2IDAgMTAtNSAxNi0xNCAxNloiLz48cGF0aCBkPSJNMTIgMjljNC01IDgtOSAxMy0xMiIvPicsCiAgZmxvYXJlOic8Y2lyY2xlIGN4PSIyMCIgY3k9IjE4IiByPSIyLjQiLz48cGF0aCBkPSJNMjAgMTUuNmMtMS42LTItMS42LTQuNiAwLTYuMSAxLjYgMS41IDEuNiA0LjEgMCA2LjFaTTIyLjMgMTcuMmMxLjEtMi4zIDMuNC0zLjQgNS40LTIuOC0uMSAyLjEtMi4xIDMuNy00LjcgMy42Wk0yMS40IDIwYzIuNi4yIDQuNCAxLjkgNC42IDQtMiAuNS00LjItLjctNS4yLTNaTTE4LjYgMjBjLTIuNi4yLTQuNCAxLjktNC42IDQgMiAuNSA0LjItLjcgNS4yLTNaTTE3LjcgMTcuMmMtMS4xLTIuMy0zLjQtMy40LTUuNC0yLjguMSAyLjEgMi4xIDMuNyA0LjcgMy42WiIvPjxwYXRoIGQ9Ik0yMCAyMC40VjMxIi8+JywKICBjb3BhYzonPHBhdGggZD0iTTIwIDMxdi05TTIwIDI1bC00LTNNMjAgMjNsNC0zIi8+PHBhdGggZD0iTTIwIDEwYy01IDAtOCAzLjQtOCA3LjIgMCAzLjMgMi42IDUuMyA1LjQgNS4zaDUuMmMyLjggMCA1LjQtMiA1LjQtNS4zQzI4IDEzLjQgMjUgMTAgMjAgMTBaIi8+JywKICBzb2FyZTonPGNpcmNsZSBjeD0iMjAiIGN5PSIyMSIgcj0iNC41Ii8+PHBhdGggZD0iTTIwIDExdjIuNk0yMCAyOC40VjMxTTEwIDIxaDIuNk0yNy40IDIxSDMwTTEyLjkgMTMuOWwxLjggMS44TTI1LjMgMjYuM2wxLjggMS44TTEyLjkgMjguMWwxLjgtMS44TTI1LjMgMTUuN2wxLjgtMS44Ii8+JywKICBsdW5hOic8cGF0aCBkPSJNMjQgMTIuNWE4LjUgOC41IDAgMSAwIDQgMTUuNiA3IDcgMCAwIDEtNC0xNS42WiIvPjxwYXRoIGQ9Ik0xNCAxNC41bC42IDEuNCAxLjQuNi0xLjQuNi0uNiAxLjQtLjYtMS40LTEuNC0uNiAxLjQtLjZaIi8+JywKICBwaWNhdHVyYTonPHBhdGggZD0iTTIwIDExYzMuOCA0LjYgNiA4LjQgNiAxMS42YTYgNiAwIDAgMS0xMiAwYzAtMy4yIDIuMi03IDYtMTEuNloiLz48cGF0aCBkPSJNMTcuNSAyNGEyLjcgMi43IDAgMCAwIDIuNSAyLjIiLz4nLAogIG11bnRlOic8cGF0aCBkPSJNOSAyOSAxNyAxNmw0IDYgMy00IDcgMTFaIi8+PHBhdGggZD0iTTE1IDE5LjJsMiAxLjUgMi0xLjYiLz4nCn07CmNvbnN0IEFWX0NPTE9SUyA9IHsgc2FtYW50YTonIzVCN0QzNicsIGZydW56YTonIzNFN0Q0RScsIGZsb2FyZTonI0I4NEU3OCcsIGNvcGFjOicjNkU0QTJDJywgc29hcmU6JyNDMDhBMUUnLCBsdW5hOicjM0I1Qjg2JywgcGljYXR1cmE6JyMyRjdGNzMnLCBtdW50ZTonIzdBNUM4QycgfTsKY29uc3QgYXZhdGFyU3ZnID0gKGssc2l6ZT02NCkgPT4geyBrPUFWQVRBUlNba10\/azonc2FtYW50YSc7CiAgcmV0dXJuIGA8c3ZnIHdpZHRoPSIke3NpemV9IiBoZWlnaHQ9IiR7c2l6ZSoxLjF9IiB2aWV3Qm94PSIwIDAgNDAgNDQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMjAgMiAzOCAxMnYyMEwyMCA0MiAyIDMyVjEyWiIgZmlsbD0iJHtBVl9DT0xPUlNba119Ii8+PGcgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjEuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj4ke0FWQVRBUlNba119PC9nPjwvc3ZnPmAgfTsKbGV0IGF2T3Blbj1mYWxzZTsKZnVuY3Rpb24gcmVuZGVyUHJvZmlsKCl7CiAgY29uc3QgZW50cz1EQVRBLmVudHJpZXMsIHRvZG9Eb25lPURBVEEudG9kb3MuZmlsdGVyKHg9PnguZG9uZSkubGVuZ3RoLCBtaW5zPWVudHMucmVkdWNlKChhLGUpPT5hKyhlLm1pbnV0ZXN8fDApLDApOwogIGNvbnN0IG5hbWU9REFUQS5jb21tLm5hbWUsIGN1ckxhbmc9KExBTkdTLmZpbmQoeD0+eFswXT09PWxhbmcoKSl8fFtdKVsxXXx8Jyc7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJ2aWV3IHByb2ZpbCI+CiAgICA8ZGl2IGNsYXNzPSJwaGVhZCI+JHthdmF0YXJTdmcoREFUQS5zZXR0aW5ncy5hdmF0YXIsNzYpfQogICAgICA8ZGl2PjxoMj4ke25hbWU\/ZXNjKG5hbWUpOnQoJ215UHJvZmlsZScpfTwvaDI+PGJ1dHRvbiBjbGFzcz0ibGluayIgZGF0YS11YWN0PSJuYW1lIj4ke3QobmFtZT8nY2hhbmdlTmFtZSc6J3BpY2tOYW1lJyl9PC9idXR0b24+PC9kaXY+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJzdGF0cyBmb3VyIj4KICAgICAgPGRpdiBjbGFzcz0ic3RhdCI+PGI+JHtzdHJlYWsoKX08L2I+PHNwYW4+JHt0KCdzdHJlYWsnKX08L3NwYW4+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InN0YXQiPjxiPiR7ZW50cy5sZW5ndGh9PC9iPjxzcGFuPiR7dCgnc3RQcmFjdCcpfTwvc3Bhbj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ic3RhdCI+PGI+JHttaW5zfTwvYj48c3Bhbj4ke3QoJ3N0TWluJyl9PC9zcGFuPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJzdGF0Ij48Yj4ke3RvZG9Eb25lfTwvYj48c3Bhbj4ke3QoJ3N0VG9kbycpfTwvc3Bhbj48L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iY2FyZCBwbGlzdCI+CiAgICAgIDxidXR0b24gY2xhc3M9InByb3ciIGRhdGEtdWFjdD0iYXZhdGFyIj48c3Bhbj4ke3QoJ2F2YXRhcicpfTwvc3Bhbj48c3BhbiBjbGFzcz0icHYiPiR7YXZPcGVuPyfijIMnOifigLonfTwvc3Bhbj48L2J1dHRvbj4KICAgICAgJHthdk9wZW4\/YDxkaXYgY2xhc3M9ImF2Z3JpZCI+JHtPYmplY3Qua2V5cyhBVkFUQVJTKS5tYXAoaz0+YDxidXR0b24gZGF0YS1hdj0iJHtrfSIgYXJpYS1wcmVzc2VkPSIkeyhEQVRBLnNldHRpbmdzLmF2YXRhcnx8J3NhbWFudGEnKT09PWt9IiBhcmlhLWxhYmVsPSJBdmF0YXIgJHtrfSI+JHthdmF0YXJTdmcoayw0NCl9PC9idXR0b24+YCkuam9pbignJyl9PC9kaXY+YDonJ30KICAgICAgPGJ1dHRvbiBjbGFzcz0icHJvdyIgZGF0YS11YWN0PSJsYW5nIj48c3Bhbj4ke3QoJ2xhbmd1YWdlJyl9PC9zcGFuPjxzcGFuIGNsYXNzPSJwdiI+JHtlc2MoY3VyTGFuZyl9IOKAujwvc3Bhbj48L2J1dHRvbj4KICAgICAgJHtuZWVkc0dlbigpP2A8ZGl2IGNsYXNzPSJwcm93IHN0YXRpYyI+PHNwYW4+JHt0KCdhZGRyZXNzJyl9PC9zcGFuPjxzcGFuIGNsYXNzPSJtaW5pIj48YnV0dG9uIGRhdGEtZ2VuPSJmIiBhcmlhLXByZXNzZWQ9IiR7REFUQS5zZXR0aW5ncy5nZW4hPT0nbSd9Ij4ke3QoJ2ZlbScpfTwvYnV0dG9uPjxidXR0b24gZGF0YS1nZW49Im0iIGFyaWEtcHJlc3NlZD0iJHtEQVRBLnNldHRpbmdzLmdlbj09PSdtJ30iPiR7dCgnbWFzYycpfTwvYnV0dG9uPjwvc3Bhbj48L2Rpdj5gOicnfQogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjYXJkIHBsaXN0Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0icHJvdyIgZGF0YS11YWN0PSJpbnRybyI+PHNwYW4+JHt0KCdpbnRybycpfTwvc3Bhbj48c3BhbiBjbGFzcz0icHYiPuKAujwvc3Bhbj48L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0icHJvdyIgZGF0YS11YWN0PSJhYm91dCI+PHNwYW4+JHt0KCdhYm91dCcpfTwvc3Bhbj48c3BhbiBjbGFzcz0icHYiPuKAujwvc3Bhbj48L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0icHJvdyIgZGF0YS11YWN0PSJwcmVjZXB0ZSI+PHNwYW4+JHt0KCdrYXJtYScpfTxzbWFsbD4ke3QoJ2thcm1hU3ViJyl9PC9zbWFsbD48L3NwYW4+PHNwYW4gY2xhc3M9InB2Ij7igLo8L3NwYW4+PC9idXR0b24+CiAgICAgICR7Q09ORklHLmNvdXJzZXNVcmw\/YDxhIGNsYXNzPSJwcm93IiBocmVmPSIke2VzYyhDT05GSUcuY291cnNlc1VybCl9IiB0YXJnZXQ9Il90b3AiPjxzcGFuPiR7dCgnY291cnNlcycpfTwvc3Bhbj48c3BhbiBjbGFzcz0icHYiPuKAujwvc3Bhbj48L2E+YDonJ30KICAgICAgPGEgY2xhc3M9InByb3ciIGhyZWY9Im1haWx0bzpjb250YWN0QGRvcmVsYWllcGFuLmNvbSI+PHNwYW4+JHt0KCdjb250YWN0Jyl9PC9zcGFuPjxzcGFuIGNsYXNzPSJwdiI+Y29udGFjdEBkb3JlbGFpZXBhbi5jb208L3NwYW4+PC9hPgogICAgPC9kaXY+CiAgICAke0NPTkZJRy5hcGk\/Jyc6YDxwIGNsYXNzPSJiYW5uZXIiPiR7dCgncHJvZkJhbm5lcicpfTwvcD5gfQogIDwvZGl2PmA7Cn0KCi8qID09PT09PT09PT09PSBJbnRyb2R1Y3Rpb24sIEFib3V0LCAxMCBQb3NpdGl2ZSBLYXJtYXMgPT09PT09PT09PT09ICovCmNvbnN0IElOVFJPX0JHID0gWydsaW5lYXItZ3JhZGllbnQoMTYwZGVnLCNEREU5QzgsIzlEQkI3MiknLCdsaW5lYXItZ3JhZGllbnQoMTYwZGVnLCNFRkU1RDgsI0M5QTQ3RSknLCdsaW5lYXItZ3JhZGllbnQoMTYwZGVnLCNFMUU4RjIsIzlGQjREMyknLCdsaW5lYXItZ3JhZGllbnQoMTYwZGVnLCNGN0UyRUIsI0Q5OUFCNSknLCdsaW5lYXItZ3JhZGllbnQoMTYwZGVnLCNEREVGRUMsIzhDQzJCOCknXTsKY29uc3QgS0FSTUFfR1JPVVBTID0gW1swLDNdLFszLDddLFs3LDEwXV07CmNvbnN0IEtBUk1BX0RPTUFJTlMgPSBbWzIsOCw5XSxbMyw0LDUsNl0sWzEsNiw3XV07CmxldCBvdj1udWxsLCBvdklkeD0wOwpmdW5jdGlvbiByZW5kZXJPdmVybGF5KCl7CiAgbGV0IGVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdmwnKTsKICBpZiAoIW92KXsgaWYoZWwpIGVsLnJlbW92ZSgpOyByZXR1cm4gfQogIGlmICghZWwpeyBlbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgZWwuaWQ9J292bCc7IGVsLmNsYXNzTmFtZT0nb3ZsJzsgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmFwcCcpLmFwcGVuZENoaWxkKGVsKSB9CiAgY29uc3QgWD14dCgpOwogIGlmIChvdj09PSdpbnRybycpewogICAgY29uc3Qgcz1YLmludHJvW292SWR4XSwgbGFzdD1vdklkeD09PVguaW50cm8ubGVuZ3RoLTE7CiAgICBjb25zdCB0aXRsZSA9IChvdklkeD09PTAgJiYgR1VJW2xhbmcoKV0gJiYgR1VJW2xhbmcoKV0uaW50cm9IZWxsbykgPyBHVUlbbGFuZygpXS5pbnRyb0hlbGxvKCkgOiBzWzBdOwogICAgZWwuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJzbGlkZSIgc3R5bGU9ImJhY2tncm91bmQ6JHtJTlRST19CR1tvdklkeF19Ij48YnV0dG9uIGNsYXNzPSJ4IiBkYXRhLW92PSJjbG9zZSIgYXJpYS1sYWJlbD0iJHtlc2ModCgnY2xvc2UnKSl9Ij7DlzwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJoZXhudW0iPiR7b3ZJZHgrMX08L2Rpdj48aDI+JHtlc2ModGl0bGUpfTwvaDI+PHA+JHtlc2Moc1sxXSl9PC9wPgogICAgICA8ZGl2IGNsYXNzPSJkb3RzIj4ke1guaW50cm8ubWFwKChfLGkpPT5gPHNwYW4gY2xhc3M9IiR7aT09PW92SWR4Pydvbic6Jyd9Ij48L3NwYW4+YCkuam9pbignJyl9PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImJ0bnMiPiR7b3ZJZHg\/YDxidXR0b24gY2xhc3M9ImJ0biBnaG9zdCIgZGF0YS1vdj0icHJldiI+JHt0KCdvdlByZXYnKX08L2J1dHRvbj5gOicnfTxidXR0b24gY2xhc3M9ImJ0biIgZGF0YS1vdj0iJHtsYXN0PydjbG9zZSc6J25leHQnfSI+JHt0KGxhc3Q\/J292U3RhcnQnOidvdk5leHQnKX08L2J1dHRvbj48L2Rpdj48L2Rpdj5gOwogIH0gZWxzZSBpZiAob3Y9PT0ncHJlY2VwdGUnKXsKICAgIGVsLmlubmVySFRNTD1gPGRpdiBjbGFzcz0iYWJvdXQiPjxkaXYgY2xhc3M9ImF0b3AiPjxoMj4ke3QoJ2thcm1hJyl9PC9oMj48YnV0dG9uIGNsYXNzPSJ4IiBkYXRhLW92PSJjbG9zZSIgYXJpYS1sYWJlbD0iJHtlc2ModCgnY2xvc2UnKSl9Ij7DlzwvYnV0dG9uPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJhc3RlcHMiPjxwIGNsYXNzPSJsZWFkIiBzdHlsZT0ibWFyZ2luOjAiPiR7dCgna2FybWFMZWFkJyl9PC9wPgogICAgICA8cCBzdHlsZT0ibWFyZ2luOjAiPiR7ZXNjKFgua2ludHJvKX08L3A+CiAgICAgICR7S0FSTUFfR1JPVVBTLm1hcCgoW2EsYl0sZ2kpPT5gPGg0IGNsYXNzPSJrZ3JvdXAiPiR7WC5ncm91cHNbZ2ldfTwvaDQ+YCtYLmthcm1hLnNsaWNlKGEsYikubWFwKChwLGspPT57IGNvbnN0IHg9WC5rYXJtYVhbYStrXSwgTD1YLmtsYWJlbHM7IHJldHVybiBgPHNlY3Rpb24+PGRpdiBjbGFzcz0iaGV4bnVtIHNtIj4ke2EraysxfTwvZGl2PjxkaXY+PGgzPiR7ZXNjKHBbMF0pfTwvaDM+PHA+JHtlc2MocFsxXSl9PC9wPgogICAgICAgIDxwIGNsYXNzPSJrbCI+JHtlc2MoTFswXSl9PC9wPjxwPiR7ZXNjKHguYyl9PC9wPgogICAgICAgIDxwIGNsYXNzPSJrbCI+JHtlc2MoTFsxXSl9PC9wPjx1bCBjbGFzcz0ia2MiPiR7eC5rLm1hcChpPT5gPGxpPiR7ZXNjKGkpfTwvbGk+YCkuam9pbignJyl9PC91bD4KICAgICAgICA8cCBjbGFzcz0ia2wiPiR7ZXNjKExbMl0pfTwvcD48cD48Yj4ke2VzYyhMWzNdKX08L2I+ICR7ZXNjKHgudil9PGJyPjxiPiR7ZXNjKExbNF0pfTwvYj4gJHtlc2MoeC5qKX08L3A+CiAgICAgICAgPHAgY2xhc3M9InNlZWQiPiR7ZXNjKHBbMl0pfTwvcD48L2Rpdj48L3NlY3Rpb24+YCB9KS5qb2luKCcnKSkuam9pbignJyl9CiAgICAgIDxoNCBjbGFzcz0ia2dyb3VwIj4ke3QoJ2J5RG9tYWluJyl9PC9oND4KICAgICAgPGRpdiBjbGFzcz0ia2RvbSI+JHtLQVJNQV9ET01BSU5TLm1hcCgobCxkaSk9PmA8ZGl2PjxiPiR7WC5kb21haW5zW2RpXX08L2I+JHtsLm1hcChuPT5gPHNwYW4+PGk+JHtufTwvaT4ke2VzYyhYLmthcm1hW24tMV1bMF0pfTwvc3Bhbj5gKS5qb2luKCcnKX08L2Rpdj5gKS5qb2luKCcnKX08L2Rpdj48L2Rpdj48L2Rpdj5gOwogIH0gZWxzZSB7CiAgICBlbC5pbm5lckhUTUw9YDxkaXYgY2xhc3M9ImFib3V0Ij48ZGl2IGNsYXNzPSJhdG9wIj48aDI+JHt0KCdhYm91dCcpfTwvaDI+PGJ1dHRvbiBjbGFzcz0ieCIgZGF0YS1vdj0iY2xvc2UiIGFyaWEtbGFiZWw9IiR7ZXNjKHQoJ2Nsb3NlJykpfSI+w5c8L2J1dHRvbj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iYXN0ZXBzIj4ke1guYWJvdXQubWFwKChzLGkpPT5gPHNlY3Rpb24+PGRpdiBjbGFzcz0iaGV4bnVtIHNtIj4ke2krMX08L2Rpdj48ZGl2PjxoMz4ke2VzYyhzWzBdKX08L2gzPiR7c1sxXS5tYXAocD0+dHlwZW9mIHA9PT0nc3RyaW5nJz9gPHA+JHtlc2MocCl9PC9wPmA6YDxwPiR7ZXNjKHAuc3Vicyl9PC9wPiR7Q09ORklHLnN1YnNVcmw\/YDxhIGNsYXNzPSJidG4gc29mdCIgaHJlZj0iJHtlc2MoQ09ORklHLnN1YnNVcmwpfSIgdGFyZ2V0PSJfdG9wIiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOm5vbmU7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLWJvdHRvbTo4cHgiPiR7dCgndVNlZVN1YnMnKX08L2E+YDonJ31gKS5qb2luKCcnKX08L2Rpdj48L3NlY3Rpb24+YCkuam9pbignJyl9PC9kaXY+PC9kaXY+YDsKICB9Cn0KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGU9PnsKICBjb25zdCBiPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLW92XScpOyBpZighYikgcmV0dXJuOwogIGNvbnN0IGE9Yi5kYXRhc2V0Lm92OwogIGlmKGE9PT0nbmV4dCcpIG92SWR4Kys7IGVsc2UgaWYoYT09PSdwcmV2Jykgb3ZJZHgtLTsgZWxzZSB7IGlmKG92PT09J2ludHJvJyAmJiAhREFUQS5zZXR0aW5ncy5pbnRyb1NlZW4peyBEQVRBLnNldHRpbmdzLmludHJvU2Vlbj10cnVlOyBwZXJzaXN0KCkgfSBvdj1udWxsIH0KICByZW5kZXJPdmVybGF5KCk7Cn0pOwoKLyogPT09PT09PT09PT09IE5ldyBhY3Rpb25zID09PT09PT09PT09PSAqLwokKCcjbWFpbicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxlPT57CiAgY29uc3QgYXY9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtYXZdJyk7IGlmKGF2KXsgREFUQS5zZXR0aW5ncy5hdmF0YXI9YXYuZGF0YXNldC5hdjsgcGVyc2lzdCgpOyByZW5kZXIoKTsgcmV0dXJuIH0KICBjb25zdCBiPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXVhY3RdJyk7IGlmKCFiKSByZXR1cm47CiAgY29uc3QgYT1iLmRhdGFzZXQudWFjdDsKICBpZihhPT09J2RyYXcnfHxhPT09J2FnYWluJykgdURyYXcoKTsKICBpZihhPT09J3NhdmUnKSB1U2F2ZSgpOwogIGlmKGE9PT0nc2ltJyl7IERBVEEuc2V0dGluZ3Muc2ltU3ViPSFEQVRBLnNldHRpbmdzLnNpbVN1YjsgcGVyc2lzdCgpOyByZW5kZXIoKSB9CiAgaWYoYT09PSdhdmF0YXInKXsgYXZPcGVuPSFhdk9wZW47IHJlbmRlcigpIH0KICBpZihhPT09J2xhbmcnKXsgJCgnI2xhbmdCdG4nKS5jbGljaygpIH0KICBpZihhPT09J2ludHJvJyl7IG92PSdpbnRybyc7IG92SWR4PTA7IHJlbmRlck92ZXJsYXkoKSB9CiAgaWYoYT09PSdhYm91dCcpeyBvdj0nYWJvdXQnOyByZW5kZXJPdmVybGF5KCkgfQogIGlmKGE9PT0ncHJlY2VwdGUnKXsgb3Y9J3ByZWNlcHRlJzsgcmVuZGVyT3ZlcmxheSgpIH0KICBpZihhPT09J25hbWUnKXsgc2hhcmVPcGVuPSdfX25hbWUnOyBuYW1lRHJhZnQ9REFUQS5jb21tLm5hbWV8fCcnOyByZW5kZXJTaGFyZSgpOyBjb25zdCBpPSQoJyNjb21tTmFtZScpOyBpJiZpLmZvY3VzKCkgfQp9KTsKJCgnI21haW4nKS5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsZT0+eyBpZihlLnRhcmdldC5pZD09PSd1Tm90ZScpeyBjb25zdCB1PXVUb2RheSgpOyBpZih1KXsgdS5ub3RlPWUudGFyZ2V0LnZhbHVlIH0gfSB9KTsKCi8qID09PT09PT09PT09PSBBY3Rpb25zID09PT09PT09PT09PSAqLwokKCcjbWFpbicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxlPT57CiAgY29uc3Qgb3A9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtb3BlbnB1dF0nKTsgaWYob3AgJiYgIWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWRlbF0nKSl7IHRhYj0ncHV0ZXJpJzsgcFZpZXc9b3AuZGF0YXNldC5vcGVucHV0OyByZW5kZXIoKTsgJCgnI21haW4nKS5zY3JvbGxUb3A9MDsgcmV0dXJuIH0KICBjb25zdCBwdj1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1wdl0nKTsgaWYocHYgJiYgIXB2LmRpc2FibGVkKXsgcENhcHR1cmUoKTsgcERyYWZ0LnY9K3B2LmRhdGFzZXQucHY7IHJlbmRlcigpOyByZXR1cm4gfQogIGNvbnN0IHRtPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXRlbWFdJyk7IGlmKHRtKXsgcENhcHR1cmUoKTsgcERyYWZ0LnRlbWEgPSBwRHJhZnQudGVtYT09PXRtLmRhdGFzZXQudGVtYSA\/ICcnIDogdG0uZGF0YXNldC50ZW1hOyByZW5kZXIoKTsgcmV0dXJuIH0KICBjb25zdCB6aT1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS16aV0nKTsgaWYoemkpeyBwQ2FwdHVyZSgpOyBwRHJhZnQuemk9emkuZGF0YXNldC56aTsgcmVuZGVyKCk7IHJldHVybiB9CiAgY29uc3QgZHU9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtZHVyXScpOyBpZihkdSl7IGNvbnN0IGY9JCgnI3BmX3AzJyk7IGlmKGYpeyBjb25zdCBkPWR1LmRhdGFzZXQuZHVyOwogICAgICBpZihkdS5kYXRhc2V0Lm1vZGU9PT0nc2V0JykgZi52YWx1ZT1kOyBlbHNlIHsgY29uc3QgYmFzZT1mLnZhbHVlLnJlcGxhY2UodHgoKS5kdXJTdHJpcCwnJyk7IGYudmFsdWU9KGJhc2U\/YmFzZSsnICc6JycpK3R4KCkuZHVyQXBwZW5kKGQpIH0KICAgICAgcERyYWZ0LnAzPWYudmFsdWU7IGYuZm9jdXMoKSB9IHJldHVybiB9CiAgY29uc3Qgb2I9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtb3BlbmJ1Y10nKTsgaWYob2IgJiYgIWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWRlbF0nKSl7IHRhYj0nYnVjdXJpZSc7IGJ1Y1ZpZXc9b2IuZGF0YXNldC5vcGVuYnVjOyByZW5kZXIoKTsgJCgnI21haW4nKS5zY3JvbGxUb3A9MDsgcmV0dXJuIH0KICBjb25zdCBnYj1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1nZW5dJyk7IGlmKGdiKXsgcmVjUm93cyYmdGFiPT09J3JlY3Vub3N0aW50ZScmJnJlY0NhcHR1cmUoKTsgREFUQS5zZXR0aW5ncy5nZW49Z2IuZGF0YXNldC5nZW47IHBlcnNpc3QoKTsgcmVuZGVyKCk7IHJldHVybiB9CiAgY29uc3QgcG89ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtcHJldm9ial0nKTsgaWYocG8peyBjb25zdCBvPXByZXZMaXN0KClbK3BvLmRhdGFzZXQucHJldm9ial07IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWJ1Y10nKS5mb3JFYWNoKGVsPT5idWNEcmFmdFtlbC5kYXRhc2V0LmJ1Y109ZWwudmFsdWUpOyBidWNEcmFmdC5vYmllY3Rpdj1vOyBvYmpPcGVuPWZhbHNlOyBvYmpRdWVyeT0nJzsgcmVuZGVyKCk7IHJldHVybiB9CiAgY29uc3QgdGQ9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtdGRvbmVdJyk7IGlmKHRkKXsgY29uc3QgeD1EQVRBLnRvZG9zLmZpbmQoeT0+eS5pZD09PXRkLmRhdGFzZXQudGRvbmUpOyB4LmRvbmU9IXguZG9uZTsgeC5kb25lQXQ9eC5kb25lP25ldyBEYXRlKCkudG9JU09TdHJpbmcoKTpudWxsOyBwZXJzaXN0KCk7IHJlbmRlcigpOyBpZih4LmRvbmUpIHRvYXN0KHQoJ2RvbmVUb2FzdCcpKTsgcmV0dXJuIH0KICBjb25zdCB0ZGw9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtdGRlbF0nKTsgaWYodGRsKXsgcGVuZGluZ0RlbD10ZGwuZGF0YXNldC50ZGVsOyByZW5kZXIoKTsgcmV0dXJuIH0KICBjb25zdCB0ZHk9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtdGRlbC15ZXNdJyk7IGlmKHRkeSl7IERBVEEudG9kb3M9REFUQS50b2Rvcy5maWx0ZXIoeD0+eC5pZCE9PXRkeS5kYXRhc2V0LnRkZWxZZXMpOyBwZW5kaW5nRGVsPW51bGw7IHBlcnNpc3QoKTsgcmVuZGVyKCk7IHJldHVybiB9CiAgY29uc3Qgcms9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtcmtdJyk7IGlmKHJrKXsgcmVjQ2FwdHVyZSgpOyByZWNSb3dzWytyay5kYXRhc2V0LnJpXS5rPXJrLmRhdGFzZXQucms7IHJlbmRlcigpOyByZXR1cm4gfQogIGNvbnN0IHJybT1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1ycm1dJyk7IGlmKHJybSl7IHJlY0NhcHR1cmUoKTsgcmVjUm93cy5zcGxpY2UoK3JybS5kYXRhc2V0LnJybSwxKTsgcmVuZGVyKCk7IHJldHVybiB9CiAgY29uc3QgZz1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1nb10nKTsgaWYoZyl7IGlmKGcuZGF0YXNldC5nbz09PSdqdXJuYWwnKXsgalZpZXc9Zy5kYXRhc2V0Lmp2fHwnbWluZSc7IGlmKGpWaWV3PT09J2NvbW0nKSBjb21tTG9hZCgpIH0gZ28oZy5kYXRhc2V0LmdvKTsgcmV0dXJuIH0KICBjb25zdCBzZXQ9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtc2V0XScpOwogIGlmKHNldCl7IGNvbnN0IGs9c2V0LmRhdGFzZXQuc2V0LCB2PXNldC5kYXRhc2V0LnZhbDsgREFUQS5zZXR0aW5nc1trXT0gKGs9PT0na2luZCd8fGs9PT0nc291bmQnKT8gdiA6IE51bWJlcih2KTsgcGVyc2lzdCgpOwogICAgY29uc3Qga2VlcFQ9JCgnI3RUaXRsZScpPy52YWx1ZSwga2VlcE09JCgnI21UaXRsZScpPy52YWx1ZSwga2VlcEQ9JCgnI21EYXRlJyk\/LnZhbHVlOwogICAgcmVuZGVyKCk7IGlmKCQoJyN0VGl0bGUnKSYma2VlcFQpICQoJyN0VGl0bGUnKS52YWx1ZT1rZWVwVDsgaWYoJCgnI21UaXRsZScpJiZrZWVwTSkgJCgnI21UaXRsZScpLnZhbHVlPWtlZXBNOyBpZigkKCcjbURhdGUnKSYma2VlcEQpICQoJyNtRGF0ZScpLnZhbHVlPWtlZXBEOyByZXR1cm4gfQogIGNvbnN0IGY9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtZmlsdGVyXScpOyBpZihmKXsgakZpbHRlcj1mLmRhdGFzZXQuZmlsdGVyOyByZW5kZXIoKTsgcmV0dXJuIH0KICBjb25zdCBwcj1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1wcml2XScpOyBpZihwcil7IGNvbnN0IGs9cHIuZGF0YXNldC5wcml2OyBpZihrPT09J3JlY3Vub3N0aW50ZScpIHJlY0NhcHR1cmUoKTsgaWYoaz09PSdwdXRlcmknKSBwQ2FwdHVyZSgpOyBpZihrPT09J2J1Y3VyaWUnKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1idWNdJykuZm9yRWFjaChlbD0+YnVjRHJhZnRbZWwuZGF0YXNldC5idWNdPWVsLnZhbHVlKTsgc2hhcmVOZXh0W2tdPXByLmRhdGFzZXQudmFsPT09JzEnOyByZW5kZXIoKTsgcmV0dXJuIH0KICBjb25zdCBqdj1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1qdmlld10nKTsgaWYoanYpeyBqVmlldz1qdi5kYXRhc2V0Lmp2aWV3OyByZW5kZXIoKTsgJCgnI21haW4nKS5zY3JvbGxUb3A9MDsgaWYoalZpZXc9PT0nY29tbScpIGNvbW1Mb2FkKCk7IHJldHVybiB9CiAgY29uc3QgY2Y9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtY2ZpbHRlcl0nKTsgaWYoY2YpeyBjRmlsdGVyPWNmLmRhdGFzZXQuY2ZpbHRlcjsgcmVuZGVyKCk7IHJldHVybiB9CiAgY29uc3QgY2w9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtY2xhbmddJyk7IGlmKGNsKXsgREFUQS5zZXR0aW5ncy5jb21tTGFuZz1jbC5kYXRhc2V0LmNsYW5nOyBwZXJzaXN0KCk7IHJlbmRlcigpOyByZXR1cm4gfQogIGNvbnN0IHJjPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXJlYWN0XScpOyBpZihyYyl7IGNvbnN0IGlkPXJjLmRhdGFzZXQucmVhY3QsIHA9Y29tbVBvc3RzKCkuZmluZCh4PT54LmlkPT09aWQpOyBpZighcCkgcmV0dXJuOwogICAgaWYoQ09ORklHLmFwaSl7IGNvbnN0IG9uPSFwLnJlYWN0ZWQ7IHAucmVhY3RlZD1vbjsgcC5yZWFjdHM9KHAucmVhY3RzfHwwKSsob24\/MTotMSk7IHJlbmRlcigpOyBpZihvbikgdG9hc3QocmVhY3RPZihwLnR5cGUpLnRvYXN0KTsKICAgICAgYXBpQygnY29tbXVuaXR5LycraWQrJy9yZWFjdCcse21ldGhvZDonUE9TVCcsYm9keTp7b259fSkudGhlbihqPT57IHAucmVhY3RzPWoucmVhY3RzOyBwLnJlYWN0ZWQ9ai5yZWFjdGVkOyByZW5kZXIoKSB9KS5jYXRjaChlcnI9PnRvYXN0KGVyci5tZXNzYWdlKSk7IHJldHVybiB9CiAgICBjb25zdCBvbj0hREFUQS5jb21tLnJlYWN0ZWRbaWRdOyBpZihvbikgREFUQS5jb21tLnJlYWN0ZWRbaWRdPTE7IGVsc2UgZGVsZXRlIERBVEEuY29tbS5yZWFjdGVkW2lkXTsgcGVyc2lzdCgpOyByZW5kZXIoKTsgaWYob24pIHRvYXN0KHJlYWN0T2YocC50eXBlKS50b2FzdCk7IHJldHVybiB9CiAgY29uc3QgbW89ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtbW9yZV0nKTsgaWYobW8peyBvcGVuUG9zdFttby5kYXRhc2V0Lm1vcmVdPSFvcGVuUG9zdFttby5kYXRhc2V0Lm1vcmVdOyByZW5kZXIoKTsgcmV0dXJuIH0KICBjb25zdCBycD1lLnRhcmdldC5jbG9zZXN0KCdbZGF0YS1yZXBvcnRdJyk7IGlmKHJwKXsgaWYocGVuZGluZ1JlcD09PXJwLmRhdGFzZXQucmVwb3J0KXsgY29uc3QgaWQ9cnAuZGF0YXNldC5yZXBvcnQ7IHBlbmRpbmdSZXA9bnVsbDsKICAgICAgaWYoQ09ORklHLmFwaSl7IGFwaUMoJ2NvbW11bml0eS8nK2lkKycvcmVwb3J0Jyx7bWV0aG9kOidQT1NUJyxib2R5Ont9fSkudGhlbigoKT0+eyBDQy5wb3N0cz1DQy5wb3N0cy5maWx0ZXIocD0+cC5pZCE9PWlkKTsgcmVuZGVyKCk7IHRvYXN0KHQoJ3JlcG9ydGVkJykpIH0pLmNhdGNoKGVycj0+dG9hc3QoZXJyLm1lc3NhZ2UpKSB9CiAgICAgIGVsc2UgeyBEQVRBLmNvbW0uaGlkZGVuW2lkXT0xOyBwZXJzaXN0KCk7IHJlbmRlcigpOyB0b2FzdCh0KCdyZXBvcnRlZCcpKSB9IH0KICAgIGVsc2UgeyBwZW5kaW5nUmVwPXJwLmRhdGFzZXQucmVwb3J0OyBycC50ZXh0Q29udGVudD10KCdyZXBvcnRBZ2FpbicpIH0gcmV0dXJuIH0KICBjb25zdCBkPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWRlbF0nKTsgaWYoZCl7IHBlbmRpbmdEZWw9ZC5kYXRhc2V0LmRlbDsgcmVuZGVyKCk7IHJldHVybiB9CiAgY29uc3QgZHk9ZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtZGVsLXllc10nKTsgaWYoZHkpeyBEQVRBLmVudHJpZXM9REFUQS5lbnRyaWVzLmZpbHRlcih4PT54LmlkIT09ZHkuZGF0YXNldC5kZWxZZXMpOyBwZW5kaW5nRGVsPW51bGw7IHBlcnNpc3QoKTsgcmVuZGVyKCk7IHRvYXN0KHQoJ2RlbGV0ZWQnKSk7IHJldHVybiB9CiAgaWYoZS50YXJnZXQuY2xvc2VzdCgnW2RhdGEtZGVsLW5vXScpKXsgcGVuZGluZ0RlbD1udWxsOyByZW5kZXIoKTsgcmV0dXJuIH0KICBjb25zdCBhPWUudGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLWFjdF0nKTsgaWYoIWEpIHJldHVybjsKICBjb25zdCBhY3Q9YS5kYXRhc2V0LmFjdDsKICBpZihhY3Q9PT0nc3RhcnQnKSB0aW1lclN0YXJ0KCk7CiAgaWYoYWN0PT09J3BhdXNlJykgdGltZXJQYXVzZSgpOwogIGlmKGFjdD09PSdyZXN1bWUnKSB0aW1lclJlc3VtZSgpOwogIGlmKGFjdD09PSdzdG9wJykgdGltZXJTdG9wKCk7CiAgaWYoYWN0PT09J3Rlc3QnKXsgYXVkaW9VbmxvY2soKTsgc3RyaWtlKCkgfQogIGlmKGFjdD09PSdyZWNBZGQnKXsgcmVjQ2FwdHVyZSgpOyBjb25zdCBsYXN0PXJlY1Jvd3NbcmVjUm93cy5sZW5ndGgtMV07IHJlY1Jvd3MucHVzaCh7azpsYXN0P2xhc3QuazoncmVjdW5vc3RpbnRhJyx0OicnfSk7IHJlbmRlcigpOyBjb25zdCBpbnA9JCgnI3J0XycrKHJlY1Jvd3MubGVuZ3RoLTEpKTsgaW5wJiZpbnAuZm9jdXMoKSB9CiAgaWYoYWN0PT09J3JlY1NhdmUnKXsgcmVjQ2FwdHVyZSgpOyBjb25zdCBpdGVtcz1yZWNSb3dzLm1hcCh4PT4oe2s6eC5rLHQ6eC50LnRyaW0oKX0pKS5maWx0ZXIoeD0+eC50KTsKICAgIGlmKCFpdGVtcy5sZW5ndGgpeyB0b2FzdCh0KCd3cml0ZU9uZScpKTsgcmV0dXJuIH0KICAgIGFkZEVudHJ5KHt0eXBlOidyZWN1bm9zdGludGUnLGl0ZW1zLGRhdGU6bmV3IERhdGUoKS50b0lTT1N0cmluZygpfSk7IHJlY1Jvd3M9bnVsbDsgY29uc3QgbmlkPURBVEEuZW50cmllc1tEQVRBLmVudHJpZXMubGVuZ3RoLTFdLmlkOyByZW5kZXIoKTsgdG9hc3QodCgnc2F2ZWRKJykpOyBpZihzaGFyZU5leHQucmVjdW5vc3RpbnRlKXsgc2hhcmVOZXh0LnJlY3Vub3N0aW50ZT1mYWxzZTsgcmVuZGVyKCk7IG9wZW5TaGFyZShuaWQpIH0gfQogIGlmKGFjdD09PSdidWNTYXZlJyl7IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWJ1Y10nKS5mb3JFYWNoKGVsPT5idWNEcmFmdFtlbC5kYXRhc2V0LmJ1Y109ZWwudmFsdWUudHJpbSgpKTsKICAgIGlmKCFRX0tFWVMuc29tZShrPT5idWNEcmFmdFtrXSkpeyB0b2FzdCh0KCdmaWxsQW5zd2VycycpKTsgcmV0dXJuIH0KICAgIGFkZEVudHJ5KHt0eXBlOididWN1cmllJywuLi5idWNEcmFmdCxkYXRlOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKX0pOyBidWNWaWV3PURBVEEuZW50cmllc1tEQVRBLmVudHJpZXMubGVuZ3RoLTFdLmlkOwogICAgaWYoYnVjVG9kb0FkZGVkKXsgY29uc3QgbGFzdD1EQVRBLnRvZG9zW0RBVEEudG9kb3MubGVuZ3RoLTFdOyBpZihsYXN0JiYhbGFzdC5mcm9tKXsgbGFzdC5mcm9tPWJ1Y1ZpZXc7IHBlcnNpc3QoKSB9IH0KICAgIGJ1Y0RyYWZ0PXt9OyBidWNUb2RvQWRkZWQ9ZmFsc2U7IHJlbmRlcigpOyAkKCcjbWFpbicpLnNjcm9sbFRvcD0wOyBpZihzaGFyZU5leHQuYnVjdXJpZSl7IHNoYXJlTmV4dC5idWN1cmllPWZhbHNlOyBvcGVuU2hhcmUoYnVjVmlldykgfSB9CiAgaWYoYWN0PT09J2J1Y1RvZG8nKXsgY29uc3Qgdj0oJCgnI2JfYWp1dG9yJykudmFsdWV8fCcnKS50cmltKCk7IGlmKHYmJiFidWNUb2RvQWRkZWQpeyBhZGRUb2RvKHYsJ2J1Y3VyaWUnKTsgYnVjVG9kb0FkZGVkPXRydWU7IGEuZGlzYWJsZWQ9dHJ1ZTsgYS50ZXh0Q29udGVudD10KCdhZGRlZFRvZG8nKTsgdG9hc3QodCgndG9hc3RBZGRlZCcpKSB9IH0KICBpZihhY3Q9PT0nYnVjVG9kb1JlY2FwJyl7IGNvbnN0IGVuPURBVEEuZW50cmllcy5maW5kKHg9PnguaWQ9PT1hLmRhdGFzZXQuaWQpOyBpZihlbil7IGFkZFRvZG8oZW4uYWp1dG9yLCdidWN1cmllJyxlbi5pZCk7IHJlbmRlcigpOyB0b2FzdCh0KCd0b2FzdEFkZGVkJykpIH0gfQogIGlmKGFjdD09PSd0b2RvQWRkJyl7IGNvbnN0IHY9KCQoJyN0b2RvTmV3JykudmFsdWV8fCcnKS50cmltKCk7IGlmKHYpeyBhZGRUb2RvKHYsJ21hbnVhbCcpOyByZW5kZXIoKTsgJCgnI3RvZG9OZXcnKSYmJCgnI3RvZG9OZXcnKS5mb2N1cygpIH0gfQogIGlmKGFjdD09PSd0b2RvVG9nZ2xlRG9uZScpeyB0b2RvU2hvd0RvbmU9IXRvZG9TaG93RG9uZTsgcmVuZGVyKCkgfQogIGlmKGFjdD09PSdvYmpUb2dnbGUnKXsgaWYoYS5jbGFzc0xpc3QuY29udGFpbnMoJ3NoZWV0LWJnJykgJiYgZS50YXJnZXQhPT1hKSByZXR1cm47IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLWJ1Y10nKS5mb3JFYWNoKGVsPT5idWNEcmFmdFtlbC5kYXRhc2V0LmJ1Y109ZWwudmFsdWUpOyBvYmpPcGVuPSFvYmpPcGVuOyByZW5kZXIoKTsgaWYob2JqT3Blbil7IGNvbnN0IHNpPSQoJyNvYmpTZWFyY2gnKTsgc2kmJnNpLmZvY3VzKCkgfSB9CiAgaWYoYWN0PT09J3BTYXZlJyl7IHBDYXB0dXJlKCk7IGNvbnN0IGtleXM9WydwMWUnLCdwMWEnLCdwMWInLCdwMicsJ3AzJywncDQnXTsKICAgIGlmKCFrZXlzLnNvbWUoaz0+KHBEcmFmdFtrXXx8JycpLnRyaW0oKSkpeyB0b2FzdCh0KCdmaWxsUG93ZXJzJykpOyByZXR1cm4gfQogICAgY29uc3QgZT17dHlwZToncHV0ZXJpJyx2OnBEcmFmdC52LHppOnBEcmFmdC56aXx8J2F6aScsdGVtYTpwRHJhZnQudGVtYXx8JycsZGF0ZTpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCl9OyBrZXlzLmZvckVhY2goaz0+ZVtrXT0ocERyYWZ0W2tdfHwnJykudHJpbSgpKTsgaWYoZS52PT09MikgZS5wMWE9Jyc7IGlmKGUudj09PTQpIGUucDFiPScnOyBpZihlLnYhPT0zKSBlLnAxZT0nJzsKICAgIGFkZEVudHJ5KGUpOyBwVmlldz1EQVRBLmVudHJpZXNbREFUQS5lbnRyaWVzLmxlbmd0aC0xXS5pZDsKICAgIGlmKGUucDQpIGFkZFRvZG8obm9MZWFkKGUucDQpLCdwdXRlcmknLHBWaWV3LGUuemkpOwogICAgcERyYWZ0PXt2OjEsemk6J2F6aSd9OyByZW5kZXIoKTsgJCgnI21haW4nKS5zY3JvbGxUb3A9MDsgaWYoc2hhcmVOZXh0LnB1dGVyaSl7IHNoYXJlTmV4dC5wdXRlcmk9ZmFsc2U7IG9wZW5TaGFyZShwVmlldykgfSB9CiAgaWYoYWN0PT09J3BDb3B5Jyl7IGNvbnN0IGVuPURBVEEuZW50cmllcy5maW5kKHg9PnguaWQ9PT1hLmRhdGFzZXQuaWQpOyBpZihlbikgY29weVJpY2gocHV0ZXJpVGV4dChlbikscHV0ZXJpSHRtbChlbikpIH0KICBpZihhY3Q9PT0ncFBkZicpeyB0cnl7IHdpbmRvdy5wcmludCgpIH1jYXRjaChlcnIpe30gfQogIGlmKGFjdD09PSdmaXJzdE5hbWUnKXsgKGFzeW5jKCk9PnsgaWYoIShhd2FpdCBzZXROYW1lKCQoJyNmaXJzdE5hbWUnKS52YWx1ZSkpKSByZXR1cm47IHJlbmRlcigpOyB0b2FzdCh0KCd3ZWxjb21lJykoREFUQS5jb21tLm5hbWUpKSB9KSgpIH0KICBpZihhY3Q9PT0nbmFtZUxhdGVyJyl7IG5hbWVMYXRlcj10cnVlOyByZW5kZXIoKSB9CiAgaWYoYWN0PT09J25hbWVFZGl0JyAmJiAhZS50YXJnZXQuY2xvc2VzdCgnI3NoYXJlU2hlZXQnKSl7IHNoYXJlT3Blbj0nX19uYW1lJzsgbmFtZURyYWZ0PURBVEEuY29tbS5uYW1lfHwnJzsgcmVuZGVyU2hhcmUoKTsgY29uc3QgaT0kKCcjY29tbU5hbWUnKTsgaSYmaS5mb2N1cygpOyByZXR1cm4gfQogIGlmKGFjdD09PSd0ZW1lQWxsJyl7IHBDYXB0dXJlKCk7IHRlbWVBbGw9IXRlbWVBbGw7IHJlbmRlcigpIH0KICBpZihhY3Q9PT0ndGVtYUFkZCcpeyBwQ2FwdHVyZSgpOyBjb25zdCB2PSgkKCcjdGVtYU5vdWEnKS52YWx1ZXx8JycpLnRyaW0oKTsgaWYodil7IGNvbnN0IGJhc2U9VEVNRV9CQVpBLmZpbmQoYj0+bm9ybSh0ZW1hTGFiZWwoYikpPT09bm9ybSh2KSk7IGNvbnN0IHZhbD1iYXNlfHx2OyBjb25zdCBMPURBVEEuc2V0dGluZ3MudGVtZT1EQVRBLnNldHRpbmdzLnRlbWV8fFtdOyBpZighdGVtZVRvYXRlKCkuaW5jbHVkZXModmFsKSkgTC5wdXNoKHZhbCk7IHBEcmFmdC50ZW1hPXZhbDsgcGVyc2lzdCgpOyByZW5kZXIoKSB9IH0KICBpZihhY3Q9PT0nZXhwT3BlbicpeyBwQ2FwdHVyZSgpOyBwRXhwb3J0PXRydWU7IHJlbmRlcigpOyAkKCcjbWFpbicpLnNjcm9sbFRvcD0wIH0KICBpZihhY3Q9PT0nZXhwQ2xvc2UnKXsgcEV4cG9ydD1mYWxzZTsgcmVuZGVyKCk7ICQoJyNtYWluJykuc2Nyb2xsVG9wPTAgfQogIGlmKGFjdD09PSdleHBDb3B5Jyl7IGNvbnN0IGw9ZXhwTGlzdCgpOyBjb3B5UmljaChsLm1hcChwdXRlcmlUZXh0KS5qb2luKCdcbuKAlCDigJQg4oCUXG5cbicpLCBsLm1hcChwdXRlcmlIdG1sKS5qb2luKCc8aHI+JykpIH0KICBpZihhY3Q9PT0ncE5ldycpeyBwVmlldz1udWxsOyByZW5kZXIoKTsgJCgnI21haW4nKS5zY3JvbGxUb3A9MCB9CiAgaWYoYWN0PT09J2J1Y05ldycpeyBidWNWaWV3PW51bGw7IHJlbmRlcigpOyAkKCcjbWFpbicpLnNjcm9sbFRvcD0wIH0KICBpZihhY3Q9PT0nYnJlYXRoZScpIGJyZWF0aGUoKTsKICBpZihhY3Q9PT0ncmVzZXQnKXsgVC5waGFzZT0naWRsZSc7IHJlbmRlclByYWN0aWNhKCkgfQogIGlmKGFjdD09PSdzYXZlVGl0bGUnKXsgY29uc3QgeD1EQVRBLmVudHJpZXMuZmluZCh5PT55LmlkPT09VC5zYXZlZElkKTsgaWYoeCl7IHgudGl0bGU9JCgnI2RvbmVUaXRsZScpLnZhbHVlLnRyaW0oKTsgcGVyc2lzdCgpOyB0b2FzdCh0KCdzYXZlZEonKSkgfSB9CiAgaWYoYWN0PT09J3NhdmVQYXJ0aWFsJyl7IGFkZEVudHJ5KHt0eXBlOlQua2luZCx0aXRsZTpULnRpdGxlLG1pbnV0ZXM6VC5kb25lTWluLGRhdGU6bmV3IERhdGUoVC5zdGFydGVkQXQpLnRvSVNPU3RyaW5nKCl9KTsgVC5waGFzZT0naWRsZSc7IHJlbmRlclByYWN0aWNhKCk7IHRvYXN0KHQoJ3NhdmVkSicpKSB9CiAgaWYoYWN0PT09J21hbnVhbCcpeyBtYW51YWw9dHJ1ZTsgcmVuZGVyUHJhY3RpY2EoKSB9CiAgaWYoYWN0PT09J2NhbmNlbE1hbnVhbCcpeyBtYW51YWw9ZmFsc2U7IHJlbmRlclByYWN0aWNhKCkgfQogIGlmKGFjdD09PSdzYXZlTWFudWFsJyl7CiAgICBjb25zdCBtaW49REFUQS5zZXR0aW5ncy5kdXI7CiAgICBjb25zdCBkdj0kKCcjbURhdGUnKS52YWx1ZXx8dG9kYXlLZXkoKTsgY29uc3QgW3ksbW8sZGFdPWR2LnNwbGl0KCctJykubWFwKE51bWJlcik7IGNvbnN0IG5vdz1uZXcgRGF0ZSgpOwogICAgY29uc3QgZHQgPSBkdj09PXRvZGF5S2V5KCk\/IG5vdyA6IG5ldyBEYXRlKHksbW8tMSxkYSwxMiwwKTsKICAgIGFkZEVudHJ5KHt0eXBlOkRBVEEuc2V0dGluZ3Mua2luZCx0aXRsZTokKCcjbVRpdGxlJykudmFsdWUudHJpbSgpLG1pbnV0ZXM6bWluLGRhdGU6ZHQudG9JU09TdHJpbmcoKSxtYW51YWw6dHJ1ZX0pOwogICAgbWFudWFsPWZhbHNlOyB0YWI9J2p1cm5hbCc7IHJlbmRlcigpOyB0b2FzdCh0KCdzYXZlZEonKSk7CiAgfQp9KTsKCiQoJyNtYWluJykuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLGU9PnsKICBjb25zdCBlbD1lLnRhcmdldDsKICBpZihlbC50eXBlPT09J3JhbmdlJyl7CiAgICBjb25zdCB2PU51bWJlcihlbC52YWx1ZSksIGtleT1lbC5pZD09PSdkdXJSJz8nZHVyJzoncHJlcCc7CiAgICBEQVRBLnNldHRpbmdzW2tleV09djsgZWwuc3R5bGUuc2V0UHJvcGVydHkoJy0tZmlsbCcsKCh2LWVsLm1pbikvKGVsLm1heC1lbC5taW4pKSoxMDArJyUnKTsKICAgICQoJyMnK2VsLmlkKydPdXQnKS50ZXh0Q29udGVudCA9IGtleT09PSdkdXInP2R1ckxhYmVsKHYpOnByZXBMYWJlbCh2KTsKICAgIGlmIChULnBoYXNlPT09J2lkbGUnKSBwYWludERpYWwoKTsKICAgIHJldHVybjsKICB9CiAgY29uc3Qgaz1lbC5kYXRhc2V0JiZlbC5kYXRhc2V0LmJ1YzsgaWYoayl7IGJ1Y0RyYWZ0W2tdPWVsLnZhbHVlOwogICAgaWYoaz09PSdhanV0b3InKXsgY29uc3QgYj0kKCcjdG9kb0J0bicpOyBpZihiKXsgYi5oaWRkZW49IWVsLnZhbHVlLnRyaW0oKTsgaWYoYnVjVG9kb0FkZGVkKXsgYnVjVG9kb0FkZGVkPWZhbHNlOyBiLmRpc2FibGVkPWZhbHNlOyBiLnRleHRDb250ZW50PXQoJ2FkZFRvZG8nKSB9IH0gfSB9CiAgaWYoZWwuaWQ9PT0nb2JqU2VhcmNoJyl7IG9ialF1ZXJ5PWVsLnZhbHVlOyBjb25zdCBsPSQoJyNvYmpMaXN0Jyk7IGlmKGwpIGwuaW5uZXJIVE1MPW9iakl0ZW1zKCkgfQogIGlmKGVsLmRhdGFzZXQgJiYgZWwuZGF0YXNldC5wZil7IHBEcmFmdFtlbC5kYXRhc2V0LnBmXT1lbC52YWx1ZSB9Cn0pOwokKCcjbWFpbicpLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLGU9PnsKICBpZihlLmtleSE9PSdFbnRlcicgfHwgZS5pc0NvbXBvc2luZykgcmV0dXJuOwogIGlmKGUudGFyZ2V0LmRhdGFzZXQgJiYgZS50YXJnZXQuZGF0YXNldC5ydCE9PXVuZGVmaW5lZCl7IGUucHJldmVudERlZmF1bHQoKTsgY29uc3QgaT0rZS50YXJnZXQuZGF0YXNldC5ydDsgcmVjQ2FwdHVyZSgpOwogICAgaWYoaT09PXJlY1Jvd3MubGVuZ3RoLTEpeyByZWNSb3dzLnB1c2goe2s6cmVjUm93c1tpXS5rLHQ6Jyd9KTsgcmVuZGVyKCkgfSBjb25zdCBuPSQoJyNydF8nKyhpKzEpKTsgbiYmbi5mb2N1cygpOyB9CiAgaWYoZS50YXJnZXQuaWQ9PT0nZmlyc3ROYW1lJyl7IGUucHJldmVudERlZmF1bHQoKTsgY29uc3QgYj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1hY3Q9ImZpcnN0TmFtZSJdJyk7IGImJmIuY2xpY2soKTsgcmV0dXJuIH0KICBpZihlLnRhcmdldC5pZD09PSd0ZW1hTm91YScpeyBlLnByZXZlbnREZWZhdWx0KCk7IGNvbnN0IGI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtYWN0PSJ0ZW1hQWRkIl0nKTsgYiYmYi5jbGljaygpOyByZXR1cm4gfQogIGlmKGUudGFyZ2V0LmlkPT09J3RvZG9OZXcnKXsgZS5wcmV2ZW50RGVmYXVsdCgpOyBjb25zdCB2PWUudGFyZ2V0LnZhbHVlLnRyaW0oKTsgaWYodil7IGFkZFRvZG8odiwnbWFudWFsJyk7IHJlbmRlcigpOyAkKCcjdG9kb05ldycpLmZvY3VzKCkgfSB9Cn0pOwokKCcjbWFpbicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsZT0+eyBpZihlLnRhcmdldC5pZD09PSdleHBGcm9tJ3x8ZS50YXJnZXQuaWQ9PT0nZXhwVG8nKXsgaWYoZS50YXJnZXQuaWQ9PT0nZXhwRnJvbScpIGV4cEZyb209ZS50YXJnZXQudmFsdWV8fGV4cEZyb207IGVsc2UgZXhwVG89ZS50YXJnZXQudmFsdWV8fGV4cFRvOyBpZihleHBGcm9tPmV4cFRvKXsgY29uc3QgeD1leHBGcm9tOyBleHBGcm9tPWV4cFRvOyBleHBUbz14IH0gcmVuZGVyKCk7IHJldHVybiB9IGlmKGUudGFyZ2V0LnR5cGU9PT0ncmFuZ2UnKSBwZXJzaXN0KCkgfSk7Cihhc3luYygpPT57CiAgdHJ5eyBjb25zdCBkPWF3YWl0IFN0b3JlLmxvYWQoKTsgaWYoZCl7IERBVEE9ey4uLkRBVEEsLi4uZCx0b2RvczpkLnRvZG9zfHxbXSxjb21tOnsuLi5EQVRBLmNvbW0sLi4uKGQuY29tbXx8e30pfSxzZXR0aW5nczp7Li4uREFUQS5zZXR0aW5ncywuLi4oZC5zZXR0aW5nc3x8e30pfX0gfSB9Y2F0Y2goZSl7IHRvYXN0KHQoJ2xvYWRGYWlsJykpIH0KICBEQVRBLnNldHRpbmdzLmR1cj1NYXRoLm1pbig2MCxNYXRoLm1heCgyLE1hdGgucm91bmQoREFUQS5zZXR0aW5ncy5kdXJ8fDEwKSkpOwogIERBVEEuc2V0dGluZ3MucHJlcD1NYXRoLm1pbigxODAsTWF0aC5tYXgoMCxNYXRoLnJvdW5kKChEQVRBLnNldHRpbmdzLnByZXB8fDApLzUpKjUpKTsKICBpZighREFUQS5zZXR0aW5ncy5sYW5nKSBEQVRBLnNldHRpbmdzLmxhbmc9Z3Vlc3NMYW5nKCk7CiAgcmVuZGVyKCk7IGNvbW1Mb2FkKCk7IHN1YkxvYWQoKTsKICBpZighREFUQS5zZXR0aW5ncy5pbnRyb1NlZW4peyBvdj0naW50cm8nOyBvdklkeD0wOyByZW5kZXJPdmVybGF5KCkgfQp9KSgpOwo=\");var u=new Uint8Array(b.length);for(var i=0;i<b.length;i++){u[i]=b.charCodeAt(i);}(new Function(new TextDecoder(\"utf-8\").decode(u)))();})();<\/script><script>document.addEventListener('click',function(e){if(e.target.closest&&e.target.closest('#nav button,[data-go],[data-openbuc],[data-openput],[data-act=\"pSave\"],[data-act=\"bucSave\"],[data-act=\"pNew\"],[data-act=\"bucNew\"]')){setTimeout(function(){window.scrollTo(0,0)},0)}},true);<\/script>","protected":false},"excerpt":{"rendered":"<p>Good Seeds Dorela Iepan Good Seeds EN My courses<\/p>\n","protected":false},"author":1,"featured_media":9801,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"pmpro_default_level":"","footnotes":""},"class_list":["post-9446","page","type-page","status-publish","has-post-thumbnail","hentry","pmpro-has-access"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/dorelaiepan.com\/ro\/wp-json\/wp\/v2\/pages\/9446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dorelaiepan.com\/ro\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dorelaiepan.com\/ro\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dorelaiepan.com\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dorelaiepan.com\/ro\/wp-json\/wp\/v2\/comments?post=9446"}],"version-history":[{"count":7,"href":"https:\/\/dorelaiepan.com\/ro\/wp-json\/wp\/v2\/pages\/9446\/revisions"}],"predecessor-version":[{"id":10141,"href":"https:\/\/dorelaiepan.com\/ro\/wp-json\/wp\/v2\/pages\/9446\/revisions\/10141"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dorelaiepan.com\/ro\/wp-json\/wp\/v2\/media\/9801"}],"wp:attachment":[{"href":"https:\/\/dorelaiepan.com\/ro\/wp-json\/wp\/v2\/media?parent=9446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}