﻿form fieldset a,.bodycopy li a,.bodycopy dl a,.bodycopy dd a,p a,cite a,blockquote a,h5 a,li a,dl a,dd a{text-decoration:none;color:#ed2793}form fieldset a:hover,p a:hover,cite a:hover,blockquote a:hover,h5 a:hover,li a:hover,dl a:hover,dd a:hover{color:#ff1595}form fieldset a::-moz-selection,.bodycopy li a::-moz-selection,.bodycopy dl a::-moz-selection,.bodycopy dd a::-moz-selection,p a::-moz-selection,cite a::-moz-selection,blockquote a::-moz-selection,h5 a::-moz-selection,li a::-moz-selection,dl a::-moz-selection,dd a::-moz-selection{color:rgba(255,255,255,0.6) !important;background:#ed2793}form fieldset a::selection,.bodycopy li a::selection,.bodycopy dl a::selection,.bodycopy dd a::selection,p a::selection,cite a::selection,blockquote a::selection,h5 a::selection,li a::selection,dl a::selection,dd a::selection{color:rgba(255,255,255,0.6) !important;background:#ed2793}form fieldset a span::-moz-selection,.bodycopy li a span::-moz-selection,.bodycopy dl a span::-moz-selection,.bodycopy dd a span::-moz-selection,p a span::-moz-selection,cite a span::-moz-selection,blockquote a span::-moz-selection,h5 a span::-moz-selection,li a span::-moz-selection,dl a span::-moz-selection,dd a span::-moz-selection{color:rgba(255,255,255,0.6) !important;background:#ed2793}form fieldset a span::selection,.bodycopy li a span::selection,.bodycopy dl a span::selection,.bodycopy dd a span::selection,p a span::selection,cite a span::selection,blockquote a span::selection,h5 a span::selection,li a span::selection,dl a span::selection,dd a span::selection{color:rgba(255,255,255,0.6) !important;background:#ed2793}form fieldset a,.bodycopy li a,.bodycopy dl a,.bodycopy dd a,p a,cite a,blockquote a{border-bottom:1px solid rgba(18,189,255,0.25)}form fieldset a:hover,.bodycopy li a:hover,.bodycopy dl a:hover,.bodycopy dd a:hover,p a:hover,cite a:hover,blockquote a:hover{border-bottom:1px solid rgba(18,189,255,0.5)}form fieldset a,.bodycopy li a,.bodycopy dl a,.bodycopy dd a,p a,cite a,blockquote a,h5 a,li a,dl a,dd a{text-decoration:none;color:#ed2793}form fieldset a:hover,p a:hover,cite a:hover,blockquote a:hover,h5 a:hover,li a:hover,dl a:hover,dd a:hover{color:#ff1595}form fieldset a::-moz-selection,.bodycopy li a::-moz-selection,.bodycopy dl a::-moz-selection,.bodycopy dd a::-moz-selection,p a::-moz-selection,cite a::-moz-selection,blockquote a::-moz-selection,h5 a::-moz-selection,li a::-moz-selection,dl a::-moz-selection,dd a::-moz-selection{color:rgba(255,255,255,0.6) !important;background:#ed2793}form fieldset a::selection,.bodycopy li a::selection,.bodycopy dl a::selection,.bodycopy dd a::selection,p a::selection,cite a::selection,blockquote a::selection,h5 a::selection,li a::selection,dl a::selection,dd a::selection{color:rgba(255,255,255,0.6) !important;background:#ed2793}form fieldset a span::-moz-selection,.bodycopy li a span::-moz-selection,.bodycopy dl a span::-moz-selection,.bodycopy dd a span::-moz-selection,p a span::-moz-selection,cite a span::-moz-selection,blockquote a span::-moz-selection,h5 a span::-moz-selection,li a span::-moz-selection,dl a span::-moz-selection,dd a span::-moz-selection{color:rgba(255,255,255,0.6) !important;background:#ed2793}form fieldset a span::selection,.bodycopy li a span::selection,.bodycopy dl a span::selection,.bodycopy dd a span::selection,p a span::selection,cite a span::selection,blockquote a span::selection,h5 a span::selection,li a span::selection,dl a span::selection,dd a span::selection{color:rgba(255,255,255,0.6) !important;background:#ed2793}form fieldset a,.bodycopy li a,.bodycopy dl a,.bodycopy dd a,p a,cite a,blockquote a{border-bottom:1px solid rgba(18,189,255,0.25)}form fieldset a:hover,.bodycopy li a:hover,.bodycopy dl a:hover,.bodycopy dd a:hover,p a:hover,cite a:hover,blockquote a:hover{border-bottom:1px solid rgba(18,189,255,0.5)}html{width:100%;height:100%;font-size:100%}body{width:100%;height:100%;color:#fff;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;-ms-font-smoothing:antialiased;font-smoothing:antialiased;background-image:url(/assets/images/design/bg-default.jpg);background-size:100%;background-size:cover;background-position:center top;background-repeat:repeat;background-attachment:scroll;background-attachment:fixed;background-color:#15191d}body.leader{background-position:center top;background-repeat:no-repeat;background-attachment:fixed}body:before{content:"";width:100%;height:100%;display:inline-block;background:url(/assets/images/design/bg-overlay-texture.png) left top repeat;background-attachment:fixed;top:0px;position:fixed;z-index:-2}body #doodlebg{width:100%;height:100%;min-width:100%;min-height:100%;position:fixed;top:0px;left:0px;z-index:-1;display:block;background-repeat:no-repeat;background-image:url(/assets/images/design/bg-doodles1.png);background-position:center bottom;background-size:contain}body #doodlebg svg{min-width:100%;min-height:100%;width:auto;height:auto;overflow:hidden}html.svg body #doodlebg{background-image:none !important}body * ::selection{background:#ed2793}blockquote{background:url(/assets/images/design/ssheet.png) repeat-y 0 0;background-size:auto 24px;background-position:4.5977% top}html.svg blockquote{background:url(/assets/images/design/bg-zigzag.svg) repeat-y 4.5977% top}blockquote.quotes{quotes:"\201C" "\201D" "\2018" "\2019"}blockquote.quotes:before{color:#ed2793;content:open-quote;font-size:5em;line-height:0em;position:relative;float:left;top:0.6em;left:1.14943%;padding:0 1em 0 0}@media (min-width: 888px) and (max-width: 1100px){blockquote.quotes:before{left:-1.14943%}}@media (min-width: 680px) and (max-width: 888px){blockquote.quotes:before{left:3.44828%}}@media (min-width: 410px) and (max-width: 680px){blockquote.quotes:before{left:1.14943%}}@media (max-width: 410px){blockquote.quotes:before{left:-1.14943%}}blockquote.quotes:after{color:#ed2793;content:close-quote;font-size:3.5em;line-height:0em;position:relative;float:right;bottom:0.6em;right:4.5977%;padding:0 .375em 0 0}header.topnav{position:fixed;top:0px;z-index:50}header.topnav:before{content:"";display:block;width:100%;height:160px;background-image:linear-gradient(rgba(0,0,0,0.7), transparent);top:0px;position:fixed;z-index:1}header.topnav div{position:relative;z-index:2}header.topnav h1{position:relative;padding-top:1.14943%;font-size:1em;line-height:1.5em}header.topnav h1 a#mm-logo{margin-left:6.89655%;display:block;height:3.25em;width:11.5em;background:url(/assets/images/design/mainmenu.png) no-repeat -26.4375em 0;background-size:auto 9.375em}header.topnav h1 a#mm-logo span{display:none}html.svg header.topnav h1 a#mm-logo#mm-logo{background-image:none}@media (max-width: 78.125em){body header.topnav ul.mainmenu{font-size:.9375em;line-height:1.6em}}@media (max-width: 73.125em){body header.topnav ul.mainmenu{font-size:.875em;line-height:1.71429em}}@media (max-width: 68.75em){body header.topnav h1{font-size:.875em;line-height:1.71429em}body header.topnav ul.mainmenu{font-size:.8125em;line-height:1.84615em}}@media (max-width: 63.75em){body header.topnav ul.mainmenu{font-size:.75em;line-height:2em}}@media (max-width: 58.75em){body header.topnav ul.mainmenu{font-size:.6875em;line-height:2.18182em}}@media (max-width: 53.75em){body header.topnav ul.mainmenu{font-size:.625em;line-height:2.4em}}@media (max-width: 49.25em){body header.topnav ul.mainmenu{font-size:.5625em;line-height:2.66667em}}html.svg svg .doodlepath{stroke-linecap:round;stroke-linejoin:round;fill-opacity:0;stroke-opacity:0.6;visibility:hidden}html.svg svg .path1{fill:#ed2793;stroke:#ed2793;stroke-width:6;stroke-dasharray:0.2, 12}html.svg svg .path2{fill:#12bdff;stroke:#12bdff;stroke-width:2}html.svg svg .path3{fill:#ed2793;stroke:#ed2793;stroke-width:2;stroke-dasharray:6, 16}html.svg svg .path4{fill:#ed2793;stroke:#ed2793;stroke-width:3;stroke-dasharray:3, 6}html.svg svg .path5{fill:#12bdff;stroke:#12bdff;stroke-width:3;stroke-dasharray:0.1, 6}html.svg svg .path6{fill:#4c516f;stroke:#4c516f;stroke-width:3;stroke-dasharray:3, 6}html.svg svg .path7{fill:#ed2793;stroke:#ed2793;stroke-width:3.5;stroke-opacity:1;stroke-dasharray:0}html.svg svg .arrow{visibility:visible;stroke-width:0;fill-opacity:0.6;stroke-opacity:0}html.svg svg .mask{stroke:#FFF;stroke-opacity:1;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;visibility:visible;fill:none;fill-opacity:0}.button{border-radius:4px;border:0px;word-break:none;padding-left:2.29885%;padding-right:2.29885%;padding-top:2px;padding-bottom:2px;color:#fff;background-color:#12bdff;cursor:pointer}.button.big{font-size:2em}.button.secondary{background-color:#b4b7b7}a.button{text-decoration:none;border:0}a.button:hover{background-color:#00a0de;text-decoration:none;border:0px !important}form fieldset p.formtext{margin-top:-1.5em}form fieldset select{font-size:1.3125em;line-height:2.28571em;line-height:1.5em;-webkit-appearance:menulist;background-color:rgba(180,183,183,0.05)}form fieldset input{border:1px solid #b4b7b7;border-radius:4px;background-color:rgba(180,183,183,0.05);line-height:1.5em;padding-top:1px;padding-bottom:1px}form fieldset input.file{font-size:1em;border:0px;border-radius:0px;background-color:transparent;line-height:1.5em}form fieldset input.searchbox{width:69%;margin-right:0px;border-right:0px;border-bottom-right-radius:0;border-top-right-radius:0}form fieldset input.search.button{width:30%;margin-left:0px;border-bottom-left-radius:0;border-top-left-radius:0}form fieldset textarea{border:1px solid #b4b7b7;border-radius:.25em;background-color:rgba(180,183,183,0.05)}form fieldset fieldset legend{font-size:1.3125em;line-height:2.28571em}form fieldset fieldset label{font-size:inherit}form fieldset ul{padding:0 !important;margin:0 !important;list-style-type:none}form fieldset ul li{display:inline}form fieldset label abbr{color:#b4b7b7}form fieldset div.error em,form fieldset div.error label{color:#ed134b}form fieldset p.error{padding-bottom:0 !important}form fieldset ul.errors{padding:0 0 2.29885% 9.1954% !important;list-style-type:disc}form fieldset ul.errors li{display:list-item;color:#ed134b}form fieldset .negaimportancce{display:none !important;visibility:hidden !important}html,body,body>header,body>footer section,main{min-width:300px}body{position:static}html,body>footer section,main{position:relative}body>header{width:100%}body>header div{max-width:87em;margin-left:auto;margin-right:auto}body>header div:after{content:" ";display:block;clear:both}body>header div h1{width:100%;float:left;margin-left:0;margin-right:0}@media (min-width: 889px){body>header div h1{width:24.69136%;float:left;margin-right:1.23457%}}body>header div ul{width:100%;float:left;margin-left:0;margin-right:0}@media (min-width: 889px){body>header div ul{width:74.07407%;float:right;margin-right:0}}main{max-width:87em;margin-left:auto;margin-right:auto;padding-top:5.625em}main:after{content:" ";display:block;clear:both}@media (min-width: 889px){main{padding-top:11.25em}}main section{width:100%;float:left;margin-left:0;margin-right:0}body>footer{width:100%}body>footer section{max-width:87em;margin-left:auto;margin-right:auto}body>footer section:after{content:" ";display:block;clear:both}form fieldset legend{margin-top:0em;padding-top:0em;padding-bottom:0em;margin-bottom:0em;margin-top:0}form fieldset fieldset legend{margin-bottom:0}form fieldset p{padding-left:0px !important;padding-right:0px !important}form fieldset div{clear:both;width:100%;float:left;margin-left:0;margin-right:0;margin-top:0em;padding-top:0em;padding-bottom:0em;margin-bottom:0em;margin-top:0}form fieldset div.submit{clear:both;width:100%;float:left;margin-left:0;margin-right:0}form fieldset label,form fieldset .text,form fieldset select,form fieldset fieldset,form fieldset textarea,form fieldset label+label,form fieldset em,form fieldset .file{clear:both;width:100%;float:left;margin-left:0;margin-right:0}form fieldset li label{float:none;width:auto;padding-right:1.14943%}@media (min-width: 889px){form fieldset div{width:100%;float:left;margin-left:0;margin-right:0;margin-top:0em;padding-top:0em;padding-bottom:0em;margin-bottom:0em;margin-top:0}form fieldset div.submit{margin-left:35.48387%}form fieldset div div.searchfield{margin-bottom:0px;margin-top:0px}form fieldset label{width:32.25806%;float:left;margin-right:3.22581%;margin-right:0;clear:none}form fieldset label.full{clear:both;width:100%;float:left;margin-left:0;margin-right:0;margin-bottom:.5em}form fieldset .text,form fieldset select,form fieldset fieldset,form fieldset textarea,form fieldset label+label,form fieldset .file,form fieldset .searchfield{width:64.51613%;float:right;margin-right:0;clear:none}form fieldset em{width:64.51613%;float:right;margin-right:0;clear:none}}.end{clear:both;display:block}main article .bodycopy h1,main article .bodycopy h2,main article .bodycopy h3{padding:0 4.5977% 2.29885% 4.5977%}main article .bodycopy h4,main article .bodycopy h5,main article .bodycopy h6{padding:0 4.5977% 2.29885% 4.5977%}main article .bodycopy p,main article .bodycopy li,main article .bodycopy dl,main article .bodycopy blockquote cite,main article .bodycopy pre,main article .bodycopy caption,main article .bodycopy form{padding:0 4.5977% 2.29885% 4.5977%}main article .bodycopy hr{clear:both;margin:0 4.5977% 2.29885% 4.5977%}main article .bodycopy table{width:100%;margin:2.29885% auto}main article .bodycopy col,main article .bodycopy th,main article .bodycopy td{padding:1.14943% 4.5977%}main article .bodycopy blockquote{margin-bottom:2.29885%}main article .bodycopy ul,main article .bodycopy ol{padding:0 4.5977% 2.29885% 9.1954%}main article .bodycopy ul ul,main article .bodycopy ul ol,main article .bodycopy ul dl,main article .bodycopy ol ul,main article .bodycopy ol ol,main article .bodycopy ol dl{padding:0 4.5977% 1.14943% 4.5977%}main article .bodycopy ul.inline,main article .bodycopy ol.inline{padding:0 4.5977% 2.29885% 4.5977%}main article .bodycopy ul.inline li,main article .bodycopy ol.inline li{display:inline;padding:0}main article .bodycopy ul.inline li.hide,main article .bodycopy ol.inline li.hide{display:none}main article .bodycopy li,main article .bodycopy li p{padding:0}main article .bodycopy dd{padding:0 0 0 4.5977%}main article .bodycopy dd ul,main article .bodycopy dd ol,main article .bodycopy dd dl{padding:0 4.5977% 1.14943% 0}@media (min-width: 321px) and (max-width: 888px){main article .bodycopy figure{padding-bottom:1.14943%}}@media (max-width: 320px){main article .bodycopy figure{padding-bottom:2.29885%}}main a[name]{outline:0}main a[name]:before{display:block;content:" ";margin-top:-100px;height:100px;visibility:hidden}main a[name]:focus{outline:0}@media (min-width: 889px){main a[name]:before{margin-top:-160px;height:160px}}footer p,footer cite,footer li,footer dl,footer h6{padding:0 2.29885% 1em 2.29885%}html.fontface .hide{display:none}.nolinkcolour{color:inherit !important}.grey{color:#b4b7b7}.floatleft{float:left}.floatright{float:right}.clearer{clear:both;overflow:hidden;*zoom:1}.center,.centre{text-align:center}.center img,.centre img{margin:auto}html body .nobg{background-color:transparent}html body .nobg:before,html body .nobg:after{background-color:transparent;visibility:hidden}a.view{cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:-ms-zoom-in;cursor:-o-zoom-in;cursor:zoom-in}.error{color:#ed134b}.force-error{color:#ed134b !important}@font-face{font-family:'MmIcons';src:url("/assets/fonts/mmicons/mmicons-normal-webfont.eot");src:url("/assets/fonts/mmicons/mmicons-normal-webfont.eot?#iefix") format("embedded-opentype"),url("/assets/fonts/mmicons/mmicons-normal-webfont.woff") format("woff"),url("/assets/fonts/mmicons/mmicons-normal-webfont.ttf") format("truetype"),url("/assets/fonts/mmicons/mmicons-normal-webfont.svg#mmicons-normal") format("svg");font-weight:normal}.icon:after{font-family:'MmIcons';font-weight:normal;font-size:1.4em;line-height:0px;margin-right:0.3em}.icon.time:after{content:"\E001"}.icon.externalresource:after{content:"\E002"}.icon.burger:after{content:"\E003"}main .bodycopy.archive p a{border-bottom:0px}main .bodycopy.archive .floatleft,main .bodycopy.archive .alignleft{float:left}main .bodycopy.archive img.floatright,main .bodycopy.archive img.alignright{margin:0 0 1.5em 1.5em}main .bodycopy.archive .floatright,main .bodycopy.archive .alignright{float:right}main .bodycopy.archive img.floatleft,main .bodycopy.archive img.alignleft{margin:0 1.5em 1.5em 0}main .bodycopy.archive img.fullimg{position:relative;width:100%}main .bodycopy.archive>object,main .bodycopy.archive>embed,main .bodycopy.archive>iframe{padding:0 4.5977% 2.29885% 4.5977%}main .bodycopy.archive blockquote{padding:0 4.5977% 2.29885% 9.1954%}main .bodycopy.archive blockquote p{padding-left:0 !important;padding-right:0 !important}.mmpicks-level{display:block;float:left;clear:both;width:90%;margin:0 5% 5% 5%;padding:0;border:1px solid #FC0BA0;border-radius:6px;-moz-border-radius:6px;-moz-border-radius:6px;-webkit-border-radius:6px;-webkit-border-radius:6px}.mmpicks-level .padder{padding:12px !important}.mmpicks-level .hr{display:none}.mmpicks-badge{display:block;float:left;width:25%;height:0;margin-bottom:25%;text-align:center;background-image:url(//archive.lolrus.mediamolecule.com/2014/uploads/mmpicks/Human_Body.png);background-position:top left;background-repeat:no-repeat;padding:0px}.mmpicks-badge img{display:block;float:left;width:100%}.mmpicks-info{display:block;float:left;width:75%;padding:0 0 12px 0}.mmpicks-info h3,.mmpicks-info h1{display:block;float:left;clear:both;padding:0 0 0 0;font-size:1.5em}.mmpicks-info p{display:block;float:left;clear:both;padding:0 0 0 0}.mmpicks-level .info{width:75%}.mmpicks-rating{display:block;float:left;clear:both;padding:6px 0 0 16px}.mmpicks-desc{display:block;float:left;clear:both;padding:6px 0 0 0;width:400px}.mmpicks-desc p{width:400px}.mmpicks-video{display:block;float:left;clear:both;width:100%;text-align:center;padding:24px 0 12px 0}.mmpicks-video p{padding:6px 0 0 0}.mmpicks-level .review{display:block;float:left;clear:both;width:90%;text-align:center;padding:12px 5%;text-align:left}.mmpicks-level .review img{display:block;float:left;width:20%}.mmpicks-level .review div{display:block;float:left;width:75%;padding:12px 0 0 5%}form fieldset a,.bodycopy li a,.bodycopy dl a,.bodycopy dd a,p a,cite a,blockquote a,h5 a,li a,dl a,dd a{text-decoration:none;color:#ed2793}form fieldset a:hover,p a:hover,cite a:hover,blockquote a:hover,h5 a:hover,li a:hover,dl a:hover,dd a:hover{color:#ff1595}form fieldset a::-moz-selection,.bodycopy li a::-moz-selection,.bodycopy dl a::-moz-selection,.bodycopy dd a::-moz-selection,p a::-moz-selection,cite a::-moz-selection,blockquote a::-moz-selection,h5 a::-moz-selection,li a::-moz-selection,dl a::-moz-selection,dd a::-moz-selection{color:rgba(255,255,255,0.6) !important;background:#ed2793}form fieldset a::selection,.bodycopy li a::selection,.bodycopy dl a::selection,.bodycopy dd a::selection,p a::selection,cite a::selection,blockquote a::selection,h5 a::selection,li a::selection,dl a::selection,dd a::selection{color:rgba(255,255,255,0.6) !important;background:#ed2793}form fieldset a span::-moz-selection,.bodycopy li a span::-moz-selection,.bodycopy dl a span::-moz-selection,.bodycopy dd a span::-moz-selection,p a span::-moz-selection,cite a span::-moz-selection,blockquote a span::-moz-selection,h5 a span::-moz-selection,li a span::-moz-selection,dl a span::-moz-selection,dd a span::-moz-selection{color:rgba(255,255,255,0.6) !important;background:#ed2793}form fieldset a span::selection,.bodycopy li a span::selection,.bodycopy dl a span::selection,.bodycopy dd a span::selection,p a span::selection,cite a span::selection,blockquote a span::selection,h5 a span::selection,li a span::selection,dl a span::selection,dd a span::selection{color:rgba(255,255,255,0.6) !important;background:#ed2793}form fieldset a,.bodycopy li a,.bodycopy dl a,.bodycopy dd a,p a,cite a,blockquote a{border-bottom:1px solid rgba(18,189,255,0.25)}form fieldset a:hover,.bodycopy li a:hover,.bodycopy dl a:hover,.bodycopy dd a:hover,p a:hover,cite a:hover,blockquote a:hover{border-bottom:1px solid rgba(18,189,255,0.5)}@font-face{font-family:"Rokkitt";src:url("/assets/fonts/rokkitt/rokkitt-webfont.eot");src:url("/assets/fonts/rokkitt/rokkitt-webfont.eot?#iefix") format("embedded-opentype"),url("/assets/fonts/rokkitt/rokkitt-webfont.woff") format("woff"),url("/assets/fonts/rokkitt/rokkitt-webfont.ttf") format("truetype"),url("/assets/fonts/rokkitt/rokkitt-webfont.svg#rokkitt") format("svg");font-weight:normal}@font-face{font-family:"Crikey Squat";src:url("/assets/fonts/crikey_squat/crikey_squat-webfont.eot");src:url("/assets/fonts/crikey_squat/crikey_squat-webfont.eot?#iefix") format("embedded-opentype"),url("/assets/fonts/crikey_squat/crikey_squat-webfont.woff") format("woff"),url("/assets/fonts/crikey_squat/crikey_squat-webfont.ttf") format("truetype"),url("/assets/fonts/crikey_squat/crikey_squat-webfont.svg#crikey_squat") format("svg");font-weight:normal}@font-face{font-family:"Jonny Quest Classic";src:url("/assets/fonts/jonny_quest_classic/jonny_quest_classic-webfont.eot");src:url("/assets/fonts/jonny_quest_classic/jonny_quest_classic-webfont.eot?#iefix") format("embedded-opentype"),url("/assets/fonts/jonny_quest_classic/jonny_quest_classic-webfont.woff") format("woff"),url("/assets/fonts/jonny_quest_classic/jonny_quest_classic-webfont.ttf") format("truetype"),url("/assets/fonts/jonny_quest_classic/jonny_quest_classic-webfont.svg#jonny_quest_classic") format("svg");font-weight:normal}@font-face{font-family:"PT Sans";src:url("/assets/fonts/ptsans_regular/PTS55F-webfont.eot");src:url("/assets/fonts/ptsans_regular/PTS55F-webfont.eot?#iefix") format("embedded-opentype"),url("/assets/fonts/ptsans_regular/PTS55F-webfont.woff") format("woff"),url("/assets/fonts/ptsans_regular/PTS55F-webfont.ttf") format("truetype"),url("/assets/fonts/ptsans_regular/PTS55F-webfont.svg#ptsans_regular") format("svg");font-weight:normal}@font-face{font-family:"PT Sans";src:url("/assets/fonts/ptsans_italic/PTS56F-webfont.eot");src:url("/assets/fonts/ptsans_italic/PTS56F-webfont.eot?#iefix") format("embedded-opentype"),url("/assets/fonts/ptsans_italic/PTS56F-webfont.woff") format("woff"),url("/assets/fonts/ptsans_italic/PTS56F-webfont.ttf") format("truetype"),url("/assets/fonts/ptsans_italic/PTS56F-webfont.svg#ptsans_italic") format("svg");font-weight:normal;font-style:italic}@font-face{font-family:"PT Sans";src:url("/assets/fonts/ptsans_bold/PTS75F-webfont.eot");src:url("/assets/fonts/ptsans_bold/PTS75F-webfont.eot?#iefix") format("embedded-opentype"),url("/assets/fonts/ptsans_bold/PTS75F-webfont.woff") format("woff"),url("/assets/fonts/ptsans_bold/PTS75F-webfont.ttf") format("truetype"),url("/assets/fonts/ptsans_bold/PTS75F-webfont.svg#ptsans_bold") format("svg");font-weight:bold}@font-face{font-family:"PT Sans";src:url("/assets/fonts/ptsans_bolditalic/PTS76F-webfont.eot");src:url("/assets/fonts/ptsans_bolditalic/PTS76F-webfont.eot?#iefix") format("embedded-opentype"),url("/assets/fonts/ptsans_bolditalic/PTS76F-webfont.woff") format("woff"),url("/assets/fonts/ptsans_bolditalic/PTS76F-webfont.ttf") format("truetype"),url("/assets/fonts/ptsans_bolditalic/PTS76F-webfont.svg#ptsans_bold_italic") format("svg");font-weight:bold;font-style:italic}/*!
 * The fonts listed in this notice are subject to the End User License Agreement(s) entered into by the website owner.
 * ALL OTHER PARTIES ARE EXPLICITLY RESTRICTED FROM USING THE WEBFONTS BELOW.
 *
 * If you would like to use the fonts listed below, you may obtain a valid license at the following URLs.
 *
 * Webfont: Fela Bold by Maciej Włoczewski
 * URL: http://www.myfonts.com/fonts/maciej-wloczewski/fela/bold/
 *
 * Webfont: Fela by Maciej Włoczewski
 * URL: http://www.myfonts.com/fonts/maciej-wloczewski/fela/regular/ *
 *
 * Webfonts copyright: Copyright 2014 by Maciej Wloczewski. All rights reserved.
 */@font-face{font-family:"Fela Pro";src:url("/assets/fonts/fela_pro_regular/FelaPro-Regular.eot");src:url("/assets/fonts/fela_pro_regular/FelaPro-Regular.eot?#iefix") format("embedded-opentype"),url("/assets/fonts/fela_pro_regular/FelaPro-Regular.woff") format("woff");font-weight:normal}@font-face{font-family:"Fela Pro";src:url("/assets/fonts/fela_pro_bold/FelaPro-Bold.eot");src:url("/assets/fonts/fela_pro_bold/FelaPro-Bold.eot?#iefix") format("embedded-opentype"),url("/assets/fonts/fela_pro_bold/FelaPro-Bold.woff") format("woff");font-weight:bold}html{line-height:1.5em}h1,h2{color:#fff;font-weight:normal;font-family:Rockwell, 'Courier Bold', Courier, Georgia, Times, 'Times New Roman', serif}html.fontface h1,html.fontface h2{font-family:Rokkitt}h3,h4,h5,h6,.crikey{color:#fff;font-weight:normal;font-family:'Courier New', Courier, 'Lucida Sans Typewriter', 'Lucida Typewriter', monospace}html.fontface h3,html.fontface h4,html.fontface h5,html.fontface h6,html.fontface .crikey{font-family:Crikey Squat}p,cite,li,dl,figcaption,td,th,col,caption,label,select,input,button,legend,fieldset{font-weight:normal;font-family:Candara, Calibri, Segoe, 'Segoe UI', Optima, Arial, sans-serif}html.fontface p,html.fontface cite,html.fontface li,html.fontface dl,html.fontface figcaption,html.fontface td,html.fontface th,html.fontface col,html.fontface caption,html.fontface label,html.fontface select,html.fontface input,html.fontface button,html.fontface legend,html.fontface fieldset{font-family:PT Sans}blockquote,q,blockquote *,q *{font-weight:normal;font-style:italic;font-family:Garamond, Baskerville, 'Baskerville Old Face', 'Hoefler Text', 'Times New Roman', serif}html.fontface blockquote,html.fontface q,html.fontface blockquote *,html.fontface q *{font-family:PT Serif}em,i,cite,var,dfn,acronym{font-style:italic}abbr,dfn,acronym{cursor:help}strong,b{font-weight:bold}h1{font-size:4.5em;line-height:1.33333em;line-height:1.2em}h1.long{font-size:3.75em;line-height:1em}h2{font-size:3.125em;line-height:1.44em;line-height:1.2em}h1 em,h2 em,.jonnyquest{font-family:Rockwell, 'Courier Bold', Courier, Georgia, Times, 'Times New Roman', serif}html.fontface h1 em,html.fontface h2 em,html.fontface .jonnyquest{font-family:Jonny Quest Classic}html.fontface h1 em,html.fontface h2 em,html.fontface .jonnyquest{font-style:normal;display:inline-block;top:.09375em;position:relative}h3{font-size:1.5em;line-height:2em;line-height:1.1em}h4,h5,h6{font-size:1.3125em;line-height:2.28571em}h1 a,h2 a,h3 a,h4 a,h5 a{text-decoration:none;color:inherit}li,dl,dd{color:#202b30;font-size:1.3125em;line-height:2.28571em}li li,li dl,li dd,li p,dl li,dl dl,dl dd,dl p,dd li,dd dl,dd dd,dd p{font-size:inherit}dt{font-weight:bold}p,cite,td,th,label,input,button,legend,select,textarea{color:#202b30;font-size:1.3125em;line-height:2.28571em}p,cite{color:#202b30;font-size:1.3125em;line-height:2.28571em;line-height:2.1em}p s,cite s{text-decoration:line-through}p abbr,p dfn,p acronym,cite abbr,cite dfn,cite acronym{border-bottom:1px dotted #b4b7b7}p cite{font-style:italic;font-size:inherit}sup,sub{font-size:60%;line-height:90%}sup{vertical-align:super}sub{vertical-align:sub}code,samp,kbd kbd,kbd{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;font-family:'Courier New', Courier, 'Lucida Sans Typewriter', 'Lucida Typewriter', monospace}samp,kbd kbd{font-weight:bold}kbd{border:1px solid #b4b7b7;background-color:rgba(255,255,255,0.5);border-radius:.25em;padding:0 .25em 0 .25em}kbd kbd{padding:0;border:none;background-color:none}del,ins,mark{padding:0 .125em}mark{background-color:rgba(237,39,147,0.2)}del{opacity:0.6}ins{text-decoration:underline}pre{font-size:1.3125em;line-height:2.28571em}small{font-size:70%}figcaption h1,figcaption h2,figcaption h3,figcaption h4,figcaption h5,figcaption h6{line-height:1em}figcaption p{font-style:italic;color:#b4b7b7;font-size:1em;line-height:1.5em}blockquote,q{color:#0b6180}blockquote p{color:#0b6180;font-size:1.8125em;line-height:1.65517em;padding-right:0}blockquote.short p{font-size:2.25em;line-height:1.33333em}q{font-size:inherit}cite{font-size:1.125em;line-height:1.33333em}svg{display:none}html.svg svg{display:block}caption,legend{font-size:1.5em;line-height:2em;font-weight:bold}table thead{border-bottom:3px solid #12bdff}table tbody tr{border-bottom:1px solid #b4b7b7}table tbody tr td{color:#4f5555}table tbody tr:nth-child(odd){background-color:rgba(180,183,183,0.05)}main .sectiontitle{display:none}body>footer{padding:2em 0}body>footer h6,html.fontface body>footer h6{font-weight:normal;font-family:Candara, Calibri, Segoe, 'Segoe UI', Optima, Arial, sans-serif}html.fontface body>footer h6,html.fontface html.fontface body>footer h6{font-family:PT Sans}body>footer p,body>footer h6{font-size:1.125em;line-height:2em;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,0.25)}@media (max-width: 320px){body>footer p,body>footer h6{font-size:.75em;line-height:2.4em}}.hr{position:relative;text-align:center;padding-top:2rem;padding-bottom:2rem}.hr hr{display:none}.hr:before{margin:auto;content:'';display:block;width:100%;height:4px;background-image:url(/assets/images/design/timeline-nanomarker-left.png);background-repeat:repeat-x;background-size:contain}html.svg .hr:before{background-image:url(/assets/images/design/timeline-nanomarker-left.svg)}.hr.hr--half:before{width:50%}@media print{html{font-size:70%}html *,body *{color:#202b30;background-image:none !important}html body footer h6,html body footer p{color:#202b30;text-shadow:none}.galleryLayout .galleryItem{display:inline}header.topnav .nav,header.topnav h1 svg,#doodlebg,#scene div,#connector,section.comments,#relatedContent,section.games .game .description h2 img,img.artwork,.pagination{display:none}ul.bloglisting{height:auto !important}ul.bloglisting li{left:auto !important;top:auto !important;position:relative !important;clear:both}.jobslisting ul li,aside ul li,.inline li{display:inline}.jobslisting img,.tweetDetails .tweetAvatar{width:1.5em;margin-right:.5em}}.followmehalloumi{position:fixed;bottom:0;right:0;width:390px;height:124px;z-index:200;overflow:hidden;z-index:1000}.followmehalloumi.active{height:574px}.followmehalloumi__baked{overflow:hidden;width:390px;height:574px;position:absolute;right:0;bottom:0}.morearrow{transform:rotate(6deg);font-family:Rockwell, 'Courier Bold', Courier, Georgia, Times, 'Times New Roman', serif;font-size:1.75em;line-height:1.71429em;padding:.375em 1em .25em 1em;color:#000;display:inline-block;margin:auto;font-size:28px;background-image:url(/assets/images/design/bg-morearrow.png);background-repeat:no-repeat;background-position:center center;background-size:contain}html.fontface .morearrow{font-family:Rokkitt}html.svg .morearrow{background-image:url(/assets/images/design/bg-morearrow.svg)}html.svg .morearrow:hover{color:#ed2793;background-image:url(/assets/images/design/bg-morearrow-animated.svg)}.morearrow span{display:inline-block}.morearrow.morearrow--altwonk{transform:rotate(-5deg)}.morearrow.morearrow--blue{background-image:url(/assets/images/design/bg-morearrow-blue.png)}html.svg .morearrow.morearrow--blue{background-image:url(/assets/images/design/bg-morearrow-blue.svg)}html.svg .morearrow.morearrow--blue:hover{background-image:url(/assets/images/design/bg-morearrow-blue-animated.svg)}@-webkit-keyframes slideInDownSubnavOdd{0%{visibility:visible;transform:translateY(-300px) translateZ(1px) rotate(-60deg)}100%{visibility:visible;transform:translateY(0) translateZ(1px) rotate(-2deg)}}@-moz-keyframes slideInDownSubnavOdd{0%{visibility:visible;transform:translateY(-300px) translateZ(1px) rotate(-60deg)}100%{visibility:visible;transform:translateY(0) translateZ(1px) rotate(-2deg)}}@-ms-keyframes slideInDownSubnavOdd{0%{visibility:visible;transform:translateY(-300px) translateZ(1px) rotate(-60deg)}100%{visibility:visible;transform:translateY(0) translateZ(1px) rotate(-2deg)}}@keyframes slideInDownSubnavOdd{0%{visibility:visible;transform:translateY(-300px) translateZ(1px) rotate(-60deg)}100%{visibility:visible;transform:translateY(0) translateZ(1px) rotate(-2deg)}}@-webkit-keyframes slideInDownSubnavEven{0%{visibility:visible;transform:translateY(-300px) translateZ(1px) rotate(45deg)}100%{visibility:visible;transform:translateY(0) translateZ(1px) rotate(2deg)}}@-moz-keyframes slideInDownSubnavEven{0%{visibility:visible;transform:translateY(-300px) translateZ(1px) rotate(45deg)}100%{visibility:visible;transform:translateY(0) translateZ(1px) rotate(2deg)}}@-ms-keyframes slideInDownSubnavEven{0%{visibility:visible;transform:translateY(-300px) translateZ(1px) rotate(45deg)}100%{visibility:visible;transform:translateY(0) translateZ(1px) rotate(2deg)}}@keyframes slideInDownSubnavEven{0%{visibility:visible;transform:translateY(-300px) translateZ(1px) rotate(45deg)}100%{visibility:visible;transform:translateY(0) translateZ(1px) rotate(2deg)}}@-webkit-keyframes slideInDown{0%{visibility:visible;transform:translateY(-2000px)}100%{visibility:visible;transform:translateY(0)}}@-moz-keyframes slideInDown{0%{visibility:visible;transform:translateY(-2000px)}100%{visibility:visible;transform:translateY(0)}}@-ms-keyframes slideInDown{0%{visibility:visible;transform:translateY(-2000px)}100%{visibility:visible;transform:translateY(0)}}@keyframes slideInDown{0%{visibility:visible;transform:translateY(-2000px)}100%{visibility:visible;transform:translateY(0)}}@-webkit-keyframes slideOutUp{0%{visibility:visible;transform:translateY(0)}100%{visibility:visible;transform:translateY(-2000px)}}@-moz-keyframes slideOutUp{0%{visibility:visible;transform:translateY(0)}100%{visibility:visible;transform:translateY(-2000px)}}@-ms-keyframes slideOutUp{0%{visibility:visible;transform:translateY(0)}100%{visibility:visible;transform:translateY(-2000px)}}@keyframes slideOutUp{0%{visibility:visible;transform:translateY(0)}100%{visibility:visible;transform:translateY(-2000px)}}@-webkit-keyframes bounce{0%{transform:translateY(0)}20%{transform:translateY(0)}40%{transform:translateY(-30px)}50%{transform:translateY(0)}60%{transform:translateY(-15px)}80%{transform:translateY(0)}100%{transform:translateY(0)}}@-moz-keyframes bounce{0%{transform:translateY(0)}20%{transform:translateY(0)}40%{transform:translateY(-30px)}50%{transform:translateY(0)}60%{transform:translateY(-15px)}80%{transform:translateY(0)}100%{transform:translateY(0)}}@-ms-keyframes bounce{0%{transform:translateY(0)}20%{transform:translateY(0)}40%{transform:translateY(-30px)}50%{transform:translateY(0)}60%{transform:translateY(-15px)}80%{transform:translateY(0)}100%{transform:translateY(0)}}@keyframes bounce{0%{transform:translateY(0)}20%{transform:translateY(0)}40%{transform:translateY(-30px)}50%{transform:translateY(0)}60%{transform:translateY(-15px)}80%{transform:translateY(0)}100%{transform:translateY(0)}}@-webkit-keyframes bounceIn{0%{opacity:0;transform:scale(0.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(0.9)}100%{transform:scale(1)}}@-moz-keyframes bounceIn{0%{opacity:0;transform:scale(0.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(0.9)}100%{transform:scale(1)}}@-ms-keyframes bounceIn{0%{opacity:0;transform:scale(0.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(0.9)}100%{transform:scale(1)}}@keyframes bounceIn{0%{opacity:0;transform:scale(0.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(0.9)}100%{transform:scale(1)}}@-webkit-keyframes bounceOut{0%{transform:scale(1)}50%{transform:scale(0.95)}70%{opacity:1;transform:scale(1.01)}100%{opacity:0;transform:scale(0.3)}}@-moz-keyframes bounceOut{0%{transform:scale(1)}50%{transform:scale(0.95)}70%{opacity:1;transform:scale(1.01)}100%{opacity:0;transform:scale(0.3)}}@-ms-keyframes bounceOut{0%{transform:scale(1)}50%{transform:scale(0.95)}70%{opacity:1;transform:scale(1.01)}100%{opacity:0;transform:scale(0.3)}}@keyframes bounceOut{0%{transform:scale(1)}50%{transform:scale(0.95)}70%{opacity:1;transform:scale(1.01)}100%{opacity:0;transform:scale(0.3)}}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-moz-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-ms-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-moz-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-ms-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes fadeInOut{0%{opacity:1}50%{opacity:0}100%{opacity:1}}@-moz-keyframes fadeInOut{0%{opacity:1}50%{opacity:0}100%{opacity:1}}@-ms-keyframes fadeInOut{0%{opacity:1}50%{opacity:0}100%{opacity:1}}@keyframes fadeInOut{0%{opacity:1}50%{opacity:0}100%{opacity:1}}@-webkit-keyframes slightFadeInOut{0%{opacity:1}50%{opacity:0.5}100%{opacity:1}}@-moz-keyframes slightFadeInOut{0%{opacity:1}50%{opacity:0.5}100%{opacity:1}}@-ms-keyframes slightFadeInOut{0%{opacity:1}50%{opacity:0.5}100%{opacity:1}}@keyframes slightFadeInOut{0%{opacity:1}50%{opacity:0.5}100%{opacity:1}}@-webkit-keyframes eatburger{0%{background-position:0px -190px}100%{background-position:0px -418px}}@-moz-keyframes eatburger{0%{background-position:0px -190px}100%{background-position:0px -418px}}@-ms-keyframes eatburger{0%{background-position:0px -190px}100%{background-position:0px -418px}}@keyframes eatburger{0%{background-position:0px -190px}100%{background-position:0px -418px}}@-webkit-keyframes makeburger{0%{background-position:0px -0px}100%{background-position:0px -190px}}@-moz-keyframes makeburger{0%{background-position:0px -0px}100%{background-position:0px -190px}}@-ms-keyframes makeburger{0%{background-position:0px -0px}100%{background-position:0px -190px}}@keyframes makeburger{0%{background-position:0px -0px}100%{background-position:0px -190px}}@-webkit-keyframes float{from{transform:translate3d(0, -8px, 0)}50%{transform:translate3d(0, 8px, 0)}to{transform:translate3d(0, -8px, 0)}}@-moz-keyframes float{from{transform:translate3d(0, -8px, 0)}50%{transform:translate3d(0, 8px, 0)}to{transform:translate3d(0, -8px, 0)}}@-ms-keyframes float{from{transform:translate3d(0, -8px, 0)}50%{transform:translate3d(0, 8px, 0)}to{transform:translate3d(0, -8px, 0)}}@keyframes float{from{transform:translate3d(0, -8px, 0)}50%{transform:translate3d(0, 8px, 0)}to{transform:translate3d(0, -8px, 0)}}@-webkit-keyframes spinner{to{transform:rotate(360deg)}}@-moz-keyframes spinner{to{transform:rotate(360deg)}}@-ms-keyframes spinner{to{transform:rotate(360deg)}}@keyframes spinner{to{transform:rotate(360deg)}}@media (max-width: 320px){html{content:'mobile';font-size:80%}}@media (min-width: 321px) and (max-width: 888px){html{content:'tablet';font-size:80%}}@media (max-width: 888px){body{background-size:200% auto}#doodlebg{background-size:cover}header.topnav h1{position:absolute;top:.625em;font-size:.75em;line-height:2em}header.topnav h1 a#mm-logo{margin-left:2.29885%}html.svg header.topnav h1 a#mm-logo svg *{fill:#FFFFFF}header.topnav .nav{position:absolute;bottom:0;width:100%}html.csstransitions header.topnav .nav{transition-property:bottom;transition-duration:0.5s}body.blog header.topnav .nav .mainmenu #m-blog,body.about header.topnav .nav .mainmenu #m-about,body.games header.topnav .nav .mainmenu #m-games,body.jobs header.topnav .nav .mainmenu #m-jobs,body.fanclub header.topnav .nav .mainmenu #m-fanclub{border-bottom:4px solid #f9aa2a}header.topnav .nav ul.mainmenu,header.topnav .nav #subnav{background-color:#ed2793;font-size:2em;line-height:1.5em}header.topnav .nav ul.mainmenu li,header.topnav .nav #subnav li{display:inline-block;float:left;padding:0 2.29885%;font-size:1.75em;line-height:1.71429em;font-family:Rockwell, 'Courier Bold', Courier, Georgia, Times, 'Times New Roman', serif;line-height:1.2em}html.fontface header.topnav .nav ul.mainmenu li,html.fontface header.topnav .nav #subnav li{font-family:Rokkitt}header.topnav .nav ul.mainmenu li a,header.topnav .nav #subnav li a{color:white}header.topnav .nav #subnav{padding-bottom:.5em}header.topnav .nav #subnav li{font-size:1.125em;line-height:1.33333em;line-height:1.4em;padding:0 1.14943%}header.topnav .nav #subnav li a{background-color:#f9aa2a;color:white;padding:0 6px}header.topnav .nav #subnav li a:hover{background-color:white;color:#f9aa2a}header.topnav .nav #subnav li:nth-child(odd){transform:rotate(-2deg)}header.topnav .nav #subnav li:nth-child(even){transform:rotate(1deg)}html.svg header.topnav .nav:after{pointer-events:none;position:absolute;bottom:-24px;z-index:0;display:block;height:24px;width:100%;background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMTAwJScgaGVpZ2h0PScyNCcgdmlld1BvcnQ9JzAgMCA4ODhweCAyNCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cG9seWdvbiBwb2ludHM9JzAgMCwgODg4IDAsODg4IDI0JyBzdHlsZT0nZmlsbDojZWQyNzkzJy8+PC9zdmc+");background-position:left bottom;background-repeat:no-repeat;background-position:100% 100%;content:""}header.topnav .nav.closed{bottom:0}header.topnav .nav.open,header.topnav .nav:hover{bottom:auto}html.svg.cssanimations header.topnav .nav.open a .icon.burger:after{-webkit-animation:compact(eatburger 0.8s 1s steps(6) forwards, false, false, false, false, false, false, false, false, false);-moz-animation:compact(eatburger 0.8s 1s steps(6) forwards, false, false, false, false, false, false, false, false, false);-ms-animation:compact(eatburger 0.8s 1s steps(6) forwards, false, false, false, false, false, false, false, false, false);-o-animation:compact(eatburger 0.8s 1s steps(6) forwards, false, false, false, false, false, false, false, false, false);animation:compact(eatburger 0.8s 1s steps(6) forwards, false, false, false, false, false, false, false, false, false)}html.svg.cssanimations header.topnav .nav a .icon.burger:after{-webkit-animation:compact(makeburger 1s 0.5s steps(5) backwards, false, false, false, false, false, false, false, false, false);-moz-animation:compact(makeburger 1s 0.5s steps(5) backwards, false, false, false, false, false, false, false, false, false);-ms-animation:compact(makeburger 1s 0.5s steps(5) backwards, false, false, false, false, false, false, false, false, false);-o-animation:compact(makeburger 1s 0.5s steps(5) backwards, false, false, false, false, false, false, false, false, false);animation:compact(makeburger 1s 0.5s steps(5) backwards, false, false, false, false, false, false, false, false, false)}header.topnav .nav .showmenu{float:left;padding:5px 5px;font-size:1.3125em;line-height:2.28571em;font-family:Rockwell, 'Courier Bold', Courier, Georgia, Times, 'Times New Roman', serif;position:absolute;right:2.29885%;bottom:-45px;z-index:1;display:block;background-color:#12bdff}html.fontface header.topnav .nav .showmenu{font-family:Rokkitt}header.topnav .nav .showmenu:before,header.topnav .nav .showmenu:after{content:"";display:block;position:absolute;right:0px;width:48px;height:8px;background-position:center center;background-repeat:no-repeat}header.topnav .nav .showmenu:before{top:-8px;background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nNDgnIGhlaWdodD0nOCcgdmlld1BvcnQ9JzAgMCA0OHB4IDhweCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cG9seWdvbiBwb2ludHM9JzAgMCwgMjQgOCwgNDggMCwgNDggOCwgMCA4LCAwIDAgJyBzdHlsZT0nZmlsbDojMTJiZGZmJy8+PC9zdmc+")}header.topnav .nav .showmenu:after{bottom:-8px;background-image:url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nNDgnIGhlaWdodD0nOCcgdmlld1BvcnQ9JzAgMCA0OHB4IDhweCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cG9seWdvbiBwb2ludHM9JzAgMCwgNDggMCwyNCA4LDAgMCAnIHN0eWxlPSdmaWxsOiMxMmJkZmYnLz48L3N2Zz4=")}header.topnav .nav .showmenu a{color:white;text-decoration:none}header.topnav .nav .showmenu a span.icon{display:none}header.topnav .nav .showmenu a span.hide{display:inline}html.svg header.topnav .nav .showmenu a .icon.burger{display:block}html.svg header.topnav .nav .showmenu a .icon.burger:after{content:"";font-size:3em;margin-right:0;position:relative;background-image:url(/assets/images/design/burger.svg);background-position:0px 0px;height:38px;width:38px;display:block}html.svg header.topnav .nav .showmenu a span.hide{display:none}html.svg.cssanimations header.topnav .nav .showmenu a .icon.burger:after{background-image:url(/assets/images/design/burger-frames.svg);background-position:0px -190px}html.svg header.topnav ul svg{display:none !important}header.topnav .button-nav:after{content:'';display:block;clear:both}header.topnav .button-nav li{float:left}.followmehalloumi{display:none !important}}@media (min-width: 889px){html{content:'desktop'}blockquote.right.quotes:before,blockquote.left.quotes:before{font-size:3em}blockquote.right.quotes:after,blockquote.left.quotes:after{font-size:2em;bottom:0.9em}header.topnav h1{z-index:3}header.topnav ul.mainmenu{list-style-type:none;font-size:1em;line-height:1.5em}header.topnav ul.mainmenu li{font-size:1em;line-height:1.5em;float:left;display:inline-block}header.topnav ul.mainmenu li a{display:block;float:left;height:9.375em;margin-top:-25px;visibility:visible}header.topnav ul.mainmenu li a span{display:none}html.svg header.topnav ul.mainmenu li svg{display:none}html.svg header.topnav ul.mainmenu li .loaded svg{display:block}html.svg.cssanimations header.topnav ul.mainmenu li a{visibility:hidden}html.svg.cssanimations header.topnav ul.mainmenu li #m-blog.loaded{-webkit-animation:slideInDown .8s .1s ease-out 1 normal forwards;-moz-animation:slideInDown .8s .1s ease-out 1 normal forwards;-ms-animation:slideInDown .8s .1s ease-out 1 normal forwards;-o-animation:slideInDown .8s .1s ease-out 1 normal forwards;animation:slideInDown .8s .1s ease-out 1 normal forwards}html.svg.cssanimations header.topnav ul.mainmenu li #m-about.loaded{-webkit-animation:slideInDown .8s .3s ease-out 1 normal forwards;-moz-animation:slideInDown .8s .3s ease-out 1 normal forwards;-ms-animation:slideInDown .8s .3s ease-out 1 normal forwards;-o-animation:slideInDown .8s .3s ease-out 1 normal forwards;animation:slideInDown .8s .3s ease-out 1 normal forwards}html.svg.cssanimations header.topnav ul.mainmenu li #m-games.loaded{-webkit-animation:slideInDown .8s .5s ease-out 1 normal forwards;-moz-animation:slideInDown .8s .5s ease-out 1 normal forwards;-ms-animation:slideInDown .8s .5s ease-out 1 normal forwards;-o-animation:slideInDown .8s .5s ease-out 1 normal forwards;animation:slideInDown .8s .5s ease-out 1 normal forwards}html.svg.cssanimations header.topnav ul.mainmenu li #m-jobs.loaded{-webkit-animation:slideInDown .8s .7s ease-out 1 normal forwards;-moz-animation:slideInDown .8s .7s ease-out 1 normal forwards;-ms-animation:slideInDown .8s .7s ease-out 1 normal forwards;-o-animation:slideInDown .8s .7s ease-out 1 normal forwards;animation:slideInDown .8s .7s ease-out 1 normal forwards}html.svg.cssanimations header.topnav ul.mainmenu li #m-fanclub.loaded{-webkit-animation:slideInDown .8s 1s ease-out 1 normal forwards;-moz-animation:slideInDown .8s 1s ease-out 1 normal forwards;-ms-animation:slideInDown .8s 1s ease-out 1 normal forwards;-o-animation:slideInDown .8s 1s ease-out 1 normal forwards;animation:slideInDown .8s 1s ease-out 1 normal forwards}html.svg.cssanimations header.topnav ul.mainmenu li #m-vips.loaded{-webkit-animation:slideInDown .8s 1s ease-out 1 normal forwards;-moz-animation:slideInDown .8s 1s ease-out 1 normal forwards;-ms-animation:slideInDown .8s 1s ease-out 1 normal forwards;-o-animation:slideInDown .8s 1s ease-out 1 normal forwards;animation:slideInDown .8s 1s ease-out 1 normal forwards}html.svg.cssanimations.cubicbezierrange header.topnav ul.mainmenu #m-blog.loaded{-webkit-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-moz-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-ms-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-o-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);animation-timing-function:cubic-bezier(.28,.90,.78,1.06)}html.svg.cssanimations.cubicbezierrange header.topnav ul.mainmenu #m-about.loaded{-webkit-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-moz-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-ms-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-o-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);animation-timing-function:cubic-bezier(.28,.90,.78,1.06)}html.svg.cssanimations.cubicbezierrange header.topnav ul.mainmenu #m-games.loaded{-webkit-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-moz-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-ms-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-o-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);animation-timing-function:cubic-bezier(.28,.90,.78,1.06)}html.svg.cssanimations.cubicbezierrange header.topnav ul.mainmenu #m-jobs.loaded{-webkit-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-moz-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-ms-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-o-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);animation-timing-function:cubic-bezier(.28,.90,.78,1.06)}html.svg.cssanimations.cubicbezierrange header.topnav ul.mainmenu #m-fanclub.loaded{-webkit-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-moz-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-ms-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-o-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);animation-timing-function:cubic-bezier(.28,.90,.78,1.06)}html.svg.cssanimations.cubicbezierrange header.topnav ul.mainmenu #m-vips.loaded{-webkit-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-moz-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-ms-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-o-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);animation-timing-function:cubic-bezier(.28,.90,.78,1.06)}header.topnav ul.mainmenu li.vip{position:absolute;width:5em;height:5em;top:8em;right:5%;transform-origin:center center;transform:translateZ(1px) rotate(5deg) scale(1)}header.topnav ul.mainmenu li.vip a{display:inline-block;position:absolute;width:5em;height:5em;margin-top:0;border-radius:50%;background-color:#fff;background-image:url(/assets/images/design/m-vip.svg);background-repeat:no-repeat;background-position:center center;background-size:90% auto}html.csstransitions header.topnav ul.mainmenu li.vip{transition-property:transform;transition-duration:0.5s}header.topnav ul.mainmenu li.vip:hover{transform:translateZ(1px) rotate(365deg) scale(1.1)}header.topnav .showmenu{display:none}html.svg header.topnav ul.mainmenu li #m-blog,html.svg header.topnav ul.mainmenu li #m-about,html.svg header.topnav ul.mainmenu li #m-games,html.svg header.topnav ul.mainmenu li #m-fanclub,html.svg header.topnav ul.mainmenu li #m-jobs{background-image:none}html.svg header.topnav ul.mainmenu li a svg{width:100%;height:100%}header.topnav ul.mainmenu li a,html.svg.playstation header.topnav ul.mainmenu li a{visibility:visible}header.topnav ul.mainmenu li a svg,html.svg.playstation header.topnav ul.mainmenu li a svg{display:none}header.topnav ul.mainmenu li #m-about,html.svg.playstation header.topnav ul.mainmenu li #m-about{height:9.375em;width:9.125em;background:url(/assets/images/design/mainmenu.png) no-repeat -17em 0;background-size:auto 9.375em}header.topnav ul.mainmenu li #m-blog,html.svg.playstation header.topnav ul.mainmenu li #m-blog{height:9.375em;width:16em;background:url(/assets/images/design/mainmenu.png) no-repeat -53.0625em 0;background-size:auto 9.375em}header.topnav ul.mainmenu li #m-fanclub,html.svg.playstation header.topnav ul.mainmenu li #m-fanclub{height:9.375em;width:7.75em;background:url(/assets/images/design/mainmenu.png) no-repeat 0 0;background-size:auto 9.375em}header.topnav ul.mainmenu li #m-games,html.svg.playstation header.topnav ul.mainmenu li #m-games{height:9.375em;width:8.625em;background:url(/assets/images/design/mainmenu.png) no-repeat -8.0625em 0;background-size:auto 9.375em}header.topnav ul.mainmenu li #m-jobs,html.svg.playstation header.topnav ul.mainmenu li #m-jobs{height:9.375em;width:14.5em;background:url(/assets/images/design/mainmenu.png) no-repeat -38.25em 0;background-size:auto 9.375em}header.topnav ul.mainmenu li #m-mm-logo,html.svg.playstation header.topnav ul.mainmenu li #m-mm-logo{height:3.25em;width:11.5em;background:url(/assets/images/design/mainmenu.png) no-repeat -26.4375em 0;background-size:auto 3.25em}html.svg.playstation header.topnav div.nav svg{display:none !important}header.topnav .button-nav{line-height:2em}header.topnav .button-nav li{font-size:1.3125em;line-height:2.28571em;line-height:1em;margin:auto;display:inline-block;font-family:'Courier New', Courier, 'Lucida Sans Typewriter', 'Lucida Typewriter', monospace;visibility:visible}html.fontface header.topnav .button-nav li{font-family:Crikey Squat}header.topnav .button-nav li a{color:#12bdff;display:inline-block;position:relative}header.topnav .button-nav li a span{padding:5px 12px;background-color:#fff;border-radius:16px;display:block}html.borderimage header.topnav .button-nav li a{padding:0px 0px;border-image:url(/assets/images/design/bg-subnav.png) 6 6 6 6 stretch stretch;border-style:solid;border-width:6px}html.borderimage header.topnav .button-nav li a span{padding:0px 4px;border-radius:2px}html.boxshadow header.topnav .button-nav li a span{box-shadow:0 0 2px #fff;margin:-1px;border:1px solid #fff}html.svg.cssanimations header.topnav .button-nav li a{transform:translateZ(1px) rotate(0deg);transition-property:transform;transform-origin:center center;transition-duration:0.2s}html.svg.cssanimations header.topnav .button-nav li:nth-child(odd) a:hover{transform:translateZ(1px) rotate(2deg)}html.svg.cssanimations header.topnav .button-nav li:nth-child(even) a:hover{transform:translateZ(1px) rotate(-2deg)}header.topnav .button-nav li.special a span{background-color:#fff;border-radius:16px;display:block}html.svg.cssanimations header.topnav .nav #subnav{display:none}html.svg.cssanimations header.topnav .nav.loaded #subnav{display:block}header.topnav #subnav{position:relative;text-align:left}html.svg.cssanimations header.topnav #subnav li{visibility:hidden;transform-origin:center center}html.svg.cssanimations header.topnav #subnav li:nth-child(1){-webkit-animation:slideInDownSubnavOdd .6s 1.2s ease-out 1 forwards;-moz-animation:slideInDownSubnavOdd .6s 1.2s ease-out 1 forwards;-ms-animation:slideInDownSubnavOdd .6s 1.2s ease-out 1 forwards;-o-animation:slideInDownSubnavOdd .6s 1.2s ease-out 1 forwards;animation:slideInDownSubnavOdd .6s 1.2s ease-out 1 forwards}html.svg.cssanimations header.topnav #subnav li:nth-child(2){-webkit-animation:slideInDownSubnavEven .6s 1.3s ease-out 1 forwards;-moz-animation:slideInDownSubnavEven .6s 1.3s ease-out 1 forwards;-ms-animation:slideInDownSubnavEven .6s 1.3s ease-out 1 forwards;-o-animation:slideInDownSubnavEven .6s 1.3s ease-out 1 forwards;animation:slideInDownSubnavEven .6s 1.3s ease-out 1 forwards}html.svg.cssanimations header.topnav #subnav li:nth-child(3){-webkit-animation:slideInDownSubnavOdd .6s 1.4s ease-out 1 forwards;-moz-animation:slideInDownSubnavOdd .6s 1.4s ease-out 1 forwards;-ms-animation:slideInDownSubnavOdd .6s 1.4s ease-out 1 forwards;-o-animation:slideInDownSubnavOdd .6s 1.4s ease-out 1 forwards;animation:slideInDownSubnavOdd .6s 1.4s ease-out 1 forwards}html.svg.cssanimations header.topnav #subnav li:nth-child(4){-webkit-animation:slideInDownSubnavEven .6s 1.5s ease-out 1 forwards;-moz-animation:slideInDownSubnavEven .6s 1.5s ease-out 1 forwards;-ms-animation:slideInDownSubnavEven .6s 1.5s ease-out 1 forwards;-o-animation:slideInDownSubnavEven .6s 1.5s ease-out 1 forwards;animation:slideInDownSubnavEven .6s 1.5s ease-out 1 forwards}html.svg.cssanimations header.topnav #subnav li:nth-child(5){-webkit-animation:slideInDownSubnavOdd .6s 1.6s ease-out 1 forwards;-moz-animation:slideInDownSubnavOdd .6s 1.6s ease-out 1 forwards;-ms-animation:slideInDownSubnavOdd .6s 1.6s ease-out 1 forwards;-o-animation:slideInDownSubnavOdd .6s 1.6s ease-out 1 forwards;animation:slideInDownSubnavOdd .6s 1.6s ease-out 1 forwards}html.svg.cssanimations header.topnav #subnav li:nth-child(6){-webkit-animation:slideInDownSubnavEven .6s 1.7s ease-out 1 forwards;-moz-animation:slideInDownSubnavEven .6s 1.7s ease-out 1 forwards;-ms-animation:slideInDownSubnavEven .6s 1.7s ease-out 1 forwards;-o-animation:slideInDownSubnavEven .6s 1.7s ease-out 1 forwards;animation:slideInDownSubnavEven .6s 1.7s ease-out 1 forwards}html.svg.cssanimations.cubicbezierrange header.topnav #subnav li:nth-child(1){-webkit-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-moz-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-ms-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-o-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);animation-timing-function:cubic-bezier(.28,.90,.78,1.06)}html.svg.cssanimations.cubicbezierrange header.topnav #subnav li:nth-child(2){-webkit-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-moz-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-ms-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-o-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);animation-timing-function:cubic-bezier(.28,.90,.78,1.06)}html.svg.cssanimations.cubicbezierrange header.topnav #subnav li:nth-child(3){-webkit-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-moz-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-ms-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-o-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);animation-timing-function:cubic-bezier(.28,.90,.78,1.06)}html.svg.cssanimations.cubicbezierrange header.topnav #subnav li:nth-child(4){-webkit-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-moz-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-ms-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-o-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);animation-timing-function:cubic-bezier(.28,.90,.78,1.06)}html.svg.cssanimations.cubicbezierrange header.topnav #subnav li:nth-child(5){-webkit-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-moz-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-ms-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-o-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);animation-timing-function:cubic-bezier(.28,.90,.78,1.06)}html.svg.cssanimations.cubicbezierrange header.topnav #subnav li:nth-child(6){-webkit-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-moz-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-ms-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);-o-animation-timing-function:cubic-bezier(.28,.90,.78,1.06);animation-timing-function:cubic-bezier(.28,.90,.78,1.06)}body.jobs header.topnav #subnav{text-align:right;padding-right:20%}body.games header.topnav #subnav{text-align:center}header.topnav #menuconnector{display:none}header.topnav #menuconnector{display:block;position:absolute;z-index:-1}}@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 2dppx), (-webkit-min-device-pixel-ratio: 2), (min--moz-device-pixel-ratio: 2), (min-resolution: 192dpi){blockquote{background:url(/assets/images/design/ssheet2x.png) repeat-y 0 0;background-size:auto 4em}header.topnav h1 a#mm-logo{background:url(/assets/images/design/mainmenu2x.png) no-repeat -52.875em 0;background-size:auto 18.75em}header.topnav ul.mainmenu li #m-544px,header.topnav ul.mainmenu li 0px,header.topnav ul.mainmenu li -544px,header.topnav ul.mainmenu li 0px,header.topnav ul.mainmenu li 292px,header.topnav ul.mainmenu li 300px,header.topnav ul.mainmenu li 2210px,header.topnav ul.mainmenu li 300px,header.topnav ul.mainmenu li mainmenu2x.png,header.topnav ul.mainmenu li about,html.svg.playstation header.topnav ul.mainmenu li #m-544px,html.svg.playstation header.topnav ul.mainmenu li 0px,html.svg.playstation header.topnav ul.mainmenu li -544px,html.svg.playstation header.topnav ul.mainmenu li 0px,html.svg.playstation header.topnav ul.mainmenu li 292px,html.svg.playstation header.topnav ul.mainmenu li 300px,html.svg.playstation header.topnav ul.mainmenu li 2210px,html.svg.playstation header.topnav ul.mainmenu li 300px,html.svg.playstation header.topnav ul.mainmenu li mainmenu2x.png,html.svg.playstation header.topnav ul.mainmenu li about{background:url(/assets/images/design/mainmenu2x.png) no-repeat -34em 0;background-size:auto 18.75em}header.topnav ul.mainmenu li #m-1698px,header.topnav ul.mainmenu li 0px,header.topnav ul.mainmenu li -1698px,header.topnav ul.mainmenu li 0px,header.topnav ul.mainmenu li 512px,header.topnav ul.mainmenu li 300px,header.topnav ul.mainmenu li 2210px,header.topnav ul.mainmenu li 300px,header.topnav ul.mainmenu li mainmenu2x.png,header.topnav ul.mainmenu li blog,html.svg.playstation header.topnav ul.mainmenu li #m-1698px,html.svg.playstation header.topnav ul.mainmenu li 0px,html.svg.playstation header.topnav ul.mainmenu li -1698px,html.svg.playstation header.topnav ul.mainmenu li 0px,html.svg.playstation header.topnav ul.mainmenu li 512px,html.svg.playstation header.topnav ul.mainmenu li 300px,html.svg.playstation header.topnav ul.mainmenu li 2210px,html.svg.playstation header.topnav ul.mainmenu li 300px,html.svg.playstation header.topnav ul.mainmenu li mainmenu2x.png,html.svg.playstation header.topnav ul.mainmenu li blog{background:url(/assets/images/design/mainmenu2x.png) no-repeat -106.125em 0;background-size:auto 18.75em}header.topnav ul.mainmenu li #m-0px,header.topnav ul.mainmenu li 0px,header.topnav ul.mainmenu li 0px,header.topnav ul.mainmenu li 0px,header.topnav ul.mainmenu li 248px,header.topnav ul.mainmenu li 300px,header.topnav ul.mainmenu li 2210px,header.topnav ul.mainmenu li 300px,header.topnav ul.mainmenu li mainmenu2x.png,header.topnav ul.mainmenu li fanclub,html.svg.playstation header.topnav ul.mainmenu li #m-0px,html.svg.playstation header.topnav ul.mainmenu li 0px,html.svg.playstation header.topnav ul.mainmenu li 0px,html.svg.playstation header.topnav ul.mainmenu li 0px,html.svg.playstation header.topnav ul.mainmenu li 248px,html.svg.playstation header.topnav ul.mainmenu li 300px,html.svg.playstation header.topnav ul.mainmenu li 2210px,html.svg.playstation header.topnav ul.mainmenu li 300px,html.svg.playstation header.topnav ul.mainmenu li mainmenu2x.png,html.svg.playstation header.topnav ul.mainmenu li fanclub{background:url(/assets/images/design/mainmenu2x.png) no-repeat 0 0;background-size:auto 18.75em}header.topnav ul.mainmenu li #m-258px,header.topnav ul.mainmenu li 0px,header.topnav ul.mainmenu li -258px,header.topnav ul.mainmenu li 0px,header.topnav ul.mainmenu li 276px,header.topnav ul.mainmenu li 300px,header.topnav ul.mainmenu li 2210px,header.topnav ul.mainmenu li 300px,header.topnav ul.mainmenu li mainmenu2x.png,header.topnav ul.mainmenu li games,html.svg.playstation header.topnav ul.mainmenu li #m-258px,html.svg.playstation header.topnav ul.mainmenu li 0px,html.svg.playstation header.topnav ul.mainmenu li -258px,html.svg.playstation header.topnav ul.mainmenu li 0px,html.svg.playstation header.topnav ul.mainmenu li 276px,html.svg.playstation header.topnav ul.mainmenu li 300px,html.svg.playstation header.topnav ul.mainmenu li 2210px,html.svg.playstation header.topnav ul.mainmenu li 300px,html.svg.playstation header.topnav ul.mainmenu li mainmenu2x.png,html.svg.playstation header.topnav ul.mainmenu li games{background:url(/assets/images/design/mainmenu2x.png) no-repeat -16.125em 0;background-size:auto 18.75em}header.topnav ul.mainmenu li #m-1224px,header.topnav ul.mainmenu li 0px,header.topnav ul.mainmenu li -1224px,header.topnav ul.mainmenu li 0px,header.topnav ul.mainmenu li 464px,header.topnav ul.mainmenu li 300px,header.topnav ul.mainmenu li 2210px,header.topnav ul.mainmenu li 300px,header.topnav ul.mainmenu li mainmenu2x.png,header.topnav ul.mainmenu li jobs,html.svg.playstation header.topnav ul.mainmenu li #m-1224px,html.svg.playstation header.topnav ul.mainmenu li 0px,html.svg.playstation header.topnav ul.mainmenu li -1224px,html.svg.playstation header.topnav ul.mainmenu li 0px,html.svg.playstation header.topnav ul.mainmenu li 464px,html.svg.playstation header.topnav ul.mainmenu li 300px,html.svg.playstation header.topnav ul.mainmenu li 2210px,html.svg.playstation header.topnav ul.mainmenu li 300px,html.svg.playstation header.topnav ul.mainmenu li mainmenu2x.png,html.svg.playstation header.topnav ul.mainmenu li jobs{background:url(/assets/images/design/mainmenu2x.png) no-repeat -76.5em 0;background-size:auto 18.75em}header.topnav ul.mainmenu li #m-846px,header.topnav ul.mainmenu li 0px,header.topnav ul.mainmenu li -846px,header.topnav ul.mainmenu li 0px,header.topnav ul.mainmenu li 368px,header.topnav ul.mainmenu li 104px,header.topnav ul.mainmenu li 2210px,header.topnav ul.mainmenu li 300px,header.topnav ul.mainmenu li mainmenu2x.png,header.topnav ul.mainmenu li mm-logo,html.svg.playstation header.topnav ul.mainmenu li #m-846px,html.svg.playstation header.topnav ul.mainmenu li 0px,html.svg.playstation header.topnav ul.mainmenu li -846px,html.svg.playstation header.topnav ul.mainmenu li 0px,html.svg.playstation header.topnav ul.mainmenu li 368px,html.svg.playstation header.topnav ul.mainmenu li 104px,html.svg.playstation header.topnav ul.mainmenu li 2210px,html.svg.playstation header.topnav ul.mainmenu li 300px,html.svg.playstation header.topnav ul.mainmenu li mainmenu2x.png,html.svg.playstation header.topnav ul.mainmenu li mm-logo{background:url(/assets/images/design/mainmenu2x.png) no-repeat -52.875em 0;background-size:auto 6.5em}}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlcyI6WyJzdHlsZS5zY3NzIiwibW9kdWxlcy9fc2V0dXAuc2NzcyIsIm1vZHVsZXMvX2NvbXBhc3NfbWl4aW5zLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL19zdXN5LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2UvX3N1c3kuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9fc3Uuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdXRpbGl0aWVzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3NldHRpbmdzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3ZhbGlkYXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fZ3JpZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fZmxvYXQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3NoYXJlZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc3VwcG9ydC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19zdXBwb3J0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3ByZWZpeC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19iYWNrZ3JvdW5kLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JveC1zaXppbmcuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9faW5zcGVjdC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX291dHB1dC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2JhY2tncm91bmQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19jb250YWluZXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19tYXJnaW5zLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fcGFkZGluZy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fY29udGFpbmVyLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19zcGFuLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19lbmQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2lzb2xhdGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zZXR0aW5ncy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3ZhbGlkYXRpb24uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ncmlkcy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JveC1zaXppbmcuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250ZXh0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmFja2dyb3VuZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRhaW5lci5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ndXR0ZXJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9faXNvbGF0ZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dhbGxlcnkuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fbWFyZ2lucy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3BhZGRpbmcuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ibGVlZC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL19icmVha3BvaW50LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3NldHRpbmdzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX2NvbnRleHQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9faGVscGVycy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L19wYXJzZXJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fcXVlcnkuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19zaW5nbGUuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL3NpbmdsZS9fZGVmYXVsdC5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvX2RvdWJsZS5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kZWZhdWx0LXBhaXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL2RvdWJsZS9fZG91YmxlLXN0cmluZy5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL2JyZWFrcG9pbnQtc2Fzcy9zdHlsZXNoZWV0cy9icmVha3BvaW50L3BhcnNlcnMvZG91YmxlL19kZWZhdWx0LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9fdHJpcGxlLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy90cmlwbGUvX2RlZmF1bHQuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9wYXJzZXJzL19yZXNvbHV0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvcGFyc2Vycy9yZXNvbHV0aW9uL19yZXNvbHV0aW9uLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX25vLXF1ZXJ5LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvYnJlYWtwb2ludC1zYXNzL3N0eWxlc2hlZXRzL2JyZWFrcG9pbnQvX3Jlc3BvbmQtdG8uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9icmVha3BvaW50LXNhc3Mvc3R5bGVzaGVldHMvYnJlYWtwb2ludC9fbGVnYWN5LXNldHRpbmdzLnNjc3MiLCJtb2R1bGVzL19iYXNlLnNjc3MiLCJtb2R1bGVzL19taXhpbnMuc2NzcyIsIm1vZHVsZXMvX2NvbG91cnMuc2NzcyIsIm1vZHVsZXMvX3BsYWNlaG9sZGVycy5zY3NzIiwiYnVpbHQvX21haW5tZW51LnNjc3MiLCJidWlsdC9fbWFpbm1lbnUyeC5zY3NzIiwiYnVpbHQvX3NzaGVldC5zY3NzIiwiYnVpbHQvX3NzaGVldDJ4LnNjc3MiLCJwYXJ0aWFscy9fZ2VuZXJhbC5zY3NzIiwicGFydGlhbHMvX3RvcG5hdi5zY3NzIiwicGFydGlhbHMvX2Zvcm1zLnNjc3MiLCJwYXJ0aWFscy9fYnV0dG9ucy5zY3NzIiwicGFydGlhbHMvX2dyaWQuc2NzcyIsInBhcnRpYWxzL19oZWxwZXJzLnNjc3MiLCJwYXJ0aWFscy9faWNvbnMuc2NzcyIsInBhcnRpYWxzL19sZWdhY3kuc2NzcyIsInBhcnRpYWxzL190eXBvZ3JhcGh5LnNjc3MiLCJwYXJ0aWFscy9fZm9sbG93bWVoYWxsb3VtaS5zY3NzIiwicGFydGlhbHMvX21vcmVhcnJvdy5zY3NzIiwicGFydGlhbHMvX2FuaW1hdGlvbi5zY3NzIiwicGFydGlhbHMvX21lZGlhcXVlcmllcy5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBjaGFyc2V0IFwiVVRGLThcIjtcbi8vIE1vZHVsZXNcbi8vIFx0XHRTYXNzIGNvZGUgdGhhdCBkb2VzbuKAmXQgY2F1c2UgU2FzcyB0byBhY3R1YWxseSBvdXRwdXQgQ1NTLiBUaGluZ3MgbGlrZSBtaXhpbiBkZWNsYXJhdGlvbnMsIGZ1bmN0aW9ucywgYW5kIHZhcmlhYmxlcy5cbkBpbXBvcnQgXCJtb2R1bGVzL3NldHVwXCI7XG5cbi8vIFBhcnRpYWxzXG4vLyBcdFx0V2hlcmUgdGhlIG1lYXQgb2YgQ1NTIGlzIGNvbnN0cnVjdGVkLlxuQGltcG9ydCBcInBhcnRpYWxzL2dlbmVyYWxcIjtcbkBpbXBvcnQgXCJwYXJ0aWFscy9mb3Jtc1wiO1xuQGltcG9ydCBcInBhcnRpYWxzL2J1dHRvbnNcIjtcbkBpbXBvcnQgXCJwYXJ0aWFscy9ncmlkXCI7XG5AaW1wb3J0IFwicGFydGlhbHMvaGVscGVyc1wiO1xuQGltcG9ydCBcInBhcnRpYWxzL2ljb25zXCI7XG5AaW1wb3J0IFwicGFydGlhbHMvbGVnYWN5XCI7XG5AaW1wb3J0IFwicGFydGlhbHMvdHlwb2dyYXBoeVwiO1xuXG4vLyBibG9ja3NcbkBpbXBvcnQgXCJwYXJ0aWFscy9mb2xsb3dtZWhhbGxvdW1pXCI7XG5AaW1wb3J0IFwicGFydGlhbHMvbW9yZWFycm93XCI7XG5cblxuLy8gRW5oYW5jZW1lbnRcbkBpbXBvcnQgXCJwYXJ0aWFscy9hbmltYXRpb25cIjtcblxuXG4vLyBtZWRpYSBxdWVyaWVzXG5AaW1wb3J0IFwicGFydGlhbHMvbWVkaWFxdWVyaWVzXCI7XG5cbi8qIERFQlVHICovXG4vL0BpbXBvcnQgXCJwYXJ0aWFscy9kZWJ1Z1wiO1xuIiwiLy8gVGhlIHN0cnVjdHVyZSBvZiB0aGlzIHByb2plY3QgYXR0ZW1wdHMgdG8gZm9sbG93IHRoZSBhZHZpY2UgZnJvbSB0aGlzIGFydGljbGU6XG4vLyBodHRwOi8vdGhlc2Fzc3dheS5jb20vYmVnaW5uZXIvaG93LXRvLXN0cnVjdHVyZS1hLXNhc3MtcHJvamVjdFxuXG4vLyBWZW5kb3Jcbi8vXHRcdFRoaXJkLXBhcnR5IENTUy5cbi8vIEBpbXBvcnQgXCJjb21wYXNzXCI7XG4vLyBAaW1wb3J0IFwiYW5pbWF0ZVwiOyAvLyAoY29tcGFzcyBhbmltYXRlKVxuQGltcG9ydCBcImNvbXBhc3NfbWl4aW5zXCI7XG5AaW1wb3J0IFwic3VzeVwiO1xuQGltcG9ydCBcImJyZWFrcG9pbnRcIjtcblxuLy8gT3VyIFNldHRpbmdzXG5AaW1wb3J0IFwiYmFzZVwiO1xuQGltcG9ydCBcIm1peGluc1wiO1xuQGltcG9ydCBcImNvbG91cnNcIjtcbkBpbXBvcnQgXCJwbGFjZWhvbGRlcnNcIjtcblxuLy8gU3ByaXRlc2hlZXRzXG5AaW1wb3J0IFwiLi4vYnVpbHQvbWFpbm1lbnUuc2Nzc1wiO1xuQGltcG9ydCBcIi4uL2J1aWx0L21haW5tZW51Mnguc2Nzc1wiO1xuQGltcG9ydCBcIi4uL2J1aWx0L3NzaGVldC5zY3NzXCI7XG5AaW1wb3J0IFwiLi4vYnVpbHQvc3NoZWV0Mnguc2Nzc1wiO1xuIiwiXG5cbi8vIENvbXBhc3Mgc3BlY2lmaWMgdmFyaWFibGVzXG5cbi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuXG5cbi8vIFBhdGhzXG4kaW1hZ2VzX2RpcjogICAgICBcIi9hc3NldHMvaW1hZ2VzL2Rlc2lnbi9cIjtcbiRmb250c19kaXI6ICAgICAgIFwiL2Fzc2V0cy9mb250cy9cIjtcblxuLy8gU2V0IHRvIGZhbHNlIGlmIHlvdSB3YW50IHRvIHVzZSBhYnNvbHV0ZSBwaXhlbHMgaW4gc2l6aW5nIHlvdXIgdHlwb2dyYXBoeS5cbiRyZWxhdGl2ZS1mb250LXNpemluZzogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiRicm93c2VyLWRlZmF1bHQtZm9udC1zaXplOiAxNnB4O1xuXG4vLyAkYmFzZS1mb250LXNpemUgYnV0IGluIHlvdXIgb3V0cHV0IHVuaXQgb2YgY2hvaWNlLlxuLy8gRGVmYXVsdHMgdG8gMWVtIHdoZW4gYCRyZWxhdGl2ZS1mb250LXNpemluZ2AgaXMgdHJ1ZS5cbiRmb250LXVuaXQ6IGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgMWVtLCAkYmFzZS1mb250LXNpemUpICFkZWZhdWx0O1xuXG4vLyBBbGxvd3MgdGhlIGBhZGp1c3QtZm9udC1zaXplLXRvYCBtaXhpbiBhbmQgdGhlIGBsaW5lcy1mb3ItZm9udC1zaXplYCBmdW5jdGlvblxuLy8gdG8gcm91bmQgdGhlIGxpbmUgaGVpZ2h0IHRvIHRoZSBuZWFyZXN0IGhhbGYgbGluZSBoZWlnaHQgaW5zdGVhZCBvZiB0aGVcbi8vIG5lYXJlc3QgaW50ZWdyYWwgbGluZSBoZWlnaHQgdG8gYXZvaWQgbGFyZ2Ugc3BhY2luZyBiZXR3ZWVuIGxpbmVzLlxuJHJvdW5kLXRvLW5lYXJlc3QtaGFsZi1saW5lOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gRW5zdXJlIHRoZXJlIGlzIGF0IGxlYXN0IHRoaXMgbWFueSBwaXhlbHNcbi8vIG9mIHZlcnRpY2FsIHBhZGRpbmcgYWJvdmUgYW5kIGJlbG93IHRoZSB0ZXh0LlxuJG1pbi1saW5lLXBhZGRpbmc6IDJweCAhZGVmYXVsdDtcblxuXG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuXG4vLyBAbWl4aW4gc2V0LWV4cGVyaW1lbnRhbC1zdXBwb3J0KCRtb3o6IGZhbHNlLCAkd2Via2l0OiBmYWxzZSwgJG1zOiBmYWxzZSwgJG86IGZhbHNlLCAka2h0bWw6IGZhbHNlKSB7XG4vLyAgICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogJG1vejtcbi8vICAgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ6ICR3ZWJraXQ7XG4vLyAgICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiAkbXM7XG4vLyAgICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmE6ICRvO1xuLy8gICAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sOiAka2h0bWw7XG4vLyB9XG4vL1xuLy8gQG1peGluIHdpdGgtb25seS1zdXBwb3J0LWZvcigkbW96OiBmYWxzZSwgJHdlYmtpdDogZmFsc2UsICRtczogZmFsc2UsICRvOiBmYWxzZSwgJGtodG1sOiBmYWxzZSkge1xuLy8gICAvLyBDYXB0dXJlIHRoZSBjdXJyZW50IHN0YXRlXG4vLyAgICRvcmlnaW5hbC1tb3o6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTtcbi8vICAgJG9yaWdpbmFsLXdlYmtpdDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQ7XG4vLyAgICRvcmlnaW5hbC1vOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhO1xuLy8gICAkb3JpZ2luYWwtbXM6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0O1xuLy8gICAkb3JpZ2luYWwta2h0bWw6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWw7XG4vL1xuLy8gICBAaW5jbHVkZSBzZXQtZXhwZXJpbWVudGFsLXN1cHBvcnQoJG1veiwgJHdlYmtpdCwgJG1zLCAkbywgJGtodG1sKTtcbi8vXG4vLyAgIEBjb250ZW50O1xuLy9cbi8vICAgQGluY2x1ZGUgc2V0LWV4cGVyaW1lbnRhbC1zdXBwb3J0KCRvcmlnaW5hbC1tb3osICRvcmlnaW5hbC13ZWJraXQsICRvcmlnaW5hbC1tcywgJG9yaWdpbmFsLW8sICRvcmlnaW5hbC1raHRtbCk7XG4vLyB9XG4vL1xuLy9cbi8vIC8vIENTUyBBbmltYXRpb25zLlxuLy9cbi8vIEFwcGx5IGFuIGFuaW1hdGlvbiBwcm9wZXJ0eSBhbmQgdmFsdWUgd2l0aCB0aGUgY29ycmVjdCBicm93c2VyIHN1cHBvcnRcbkBtaXhpbiBhbmltYXRpb24tc3VwcG9ydCgkcHJvcGVydHksICR2YWx1ZSkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCAta2h0bWwsIG9mZmljaWFsKTsgfVxuXG4vLyBTaG9ydGN1dCB0byBhcHBseSBhIG5hbWVkIGFuaW1hdGlvbiB0byBhbiBlbGVtZW50LCB3aXRoIGFsbCB0aGUgc2V0dGluZ3MuXG4vL1xuLy8gICAgICRhbmltYXRpb24tMSAgIDogTmFtZSBhbmQgc2V0dGluZ3MgZm9yIHRoZSBmaXJzdCBhbmltYXRpb24uIFs8dmFsdWVzPiB8IGRlZmF1bHRdXG4vLyAgICAgLi4uXG4vLyAgICAgJGFuaW1hdGlvbi0xMCAgOiBOYW1lIGFuZCBzZXR0aW5ncyBmb3IgdGhlIHRlbnRoIGFuaW1hdGlvbi4gPHZhbHVlcz5cbkBtaXhpbiBhbmltYXRpb24oJGFuaW1hdGlvbi0xOiBkZWZhdWx0LCAkYW5pbWF0aW9uLTI6IGZhbHNlLCAkYW5pbWF0aW9uLTM6IGZhbHNlLCAkYW5pbWF0aW9uLTQ6IGZhbHNlLCAkYW5pbWF0aW9uLTU6IGZhbHNlLCAkYW5pbWF0aW9uLTY6IGZhbHNlLCAkYW5pbWF0aW9uLTc6IGZhbHNlLCAkYW5pbWF0aW9uLTg6IGZhbHNlLCAkYW5pbWF0aW9uLTk6IGZhbHNlLCAkYW5pbWF0aW9uLTEwOiBmYWxzZSkge1xuICBAaWYgJGFuaW1hdGlvbi0xID09IGRlZmF1bHQge1xuICAgICRhbmltYXRpb24tMTogLWNvbXBhc3Mtc3BhY2UtbGlzdChjb21wYWN0KCRkZWZhdWx0LWFuaW1hdGlvbi1uYW1lLCAkZGVmYXVsdC1hbmltYXRpb24tZHVyYXRpb24sICRkZWZhdWx0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24sICRkZWZhdWx0LWFuaW1hdGlvbi1kZWxheSwgJGRlZmF1bHQtYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCwgJGRlZmF1bHQtYW5pbWF0aW9uLWRpcmVjdGlvbiwgJGRlZmF1bHQtYW5pbWF0aW9uLWZpbGwtbW9kZSwgJGRlZmF1bHQtYW5pbWF0aW9uLXBsYXktc3RhdGUpKTsgfVxuICAkYW5pbWF0aW9uOiBjb21wYWN0KCRhbmltYXRpb24tMSwgJGFuaW1hdGlvbi0yLCAkYW5pbWF0aW9uLTMsICRhbmltYXRpb24tNCwgJGFuaW1hdGlvbi01LCAkYW5pbWF0aW9uLTYsICRhbmltYXRpb24tNywgJGFuaW1hdGlvbi04LCAkYW5pbWF0aW9uLTksICRhbmltYXRpb24tMTApO1xuICBAaW5jbHVkZSBhbmltYXRpb24tc3VwcG9ydChhbmltYXRpb24sICRhbmltYXRpb24pOyB9XG5cblxuICAvLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4gIC8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4gIC8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4gICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbiAgLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3JcbiAgLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbiAgLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG4gIEBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICAgIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICAgIH0gQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jaztcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICAgKnpvb206IDE7XG4gICAgfVxuICB9XG5cbiAgQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICAgIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICAgJiB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gICAgfVxuICB9XG5cblxuICBAbWl4aW4gY2xlYXJmaXgge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgQGluY2x1ZGUgaGFzLWxheW91dDtcbiAgfVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGEgZGlmZmVyZW50IGZvbnQgc2l6ZSBhbmQgbGluZSBoZWlnaHQgdG8gbWFpbnRhaW4gdGhlXG4vLyByaHl0aG0uICRsaW5lcyBzcGVjaWZpZXMgaG93IG1hbnkgbXVsdGlwbGVzIG9mIHRoZSBiYXNlbGluZSByaHl0aG0gZWFjaCBsaW5lXG4vLyBvZiB0aGlzIGZvbnQgc2hvdWxkIHVzZSB1cC4gSXQgZG9lcyBub3QgaGF2ZSB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXRcbi8vIGRlZmF1bHRzIHRvIHRoZSBzbWFsbGVzdCBpbnRlZ2VyIHRoYXQgaXMgbGFyZ2UgZW5vdWdoIHRvIGZpdCB0aGUgZm9udC5cbi8vIFVzZSAkZnJvbS1zaXplIHRvIGFkanVzdCBmcm9tIGEgZm9udC1zaXplIG90aGVyIHRoYW4gdGhlIGJhc2UgZm9udC1zaXplLlxuQG1peGluIGFkanVzdC1mb250LXNpemUtdG8oJHRvLXNpemUsICRsaW5lczogbGluZXMtZm9yLWZvbnQtc2l6ZSgkdG8tc2l6ZSksICRmcm9tLXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaWYgbm90KCRyZWxhdGl2ZS1mb250LXNpemluZykgYW5kICRmcm9tLXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byBhZGp1c3QtZm9udC1zaXplLXRvXCI7XG4gIH1cbiAgZm9udC1zaXplOiAkZm9udC11bml0ICogJHRvLXNpemUgLyAkZnJvbS1zaXplO1xuICBAaW5jbHVkZSBhZGp1c3QtbGVhZGluZy10bygkbGluZXMsIGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgJHRvLXNpemUsICRiYXNlLWZvbnQtc2l6ZSkpO1xufVxuXG4vLyBBZGp1c3QgYSBibG9jayB0byBoYXZlIGRpZmZlcmVudCBsaW5lIGhlaWdodCB0byBtYWludGFpbiB0aGUgcmh5dGhtLlxuLy8gJGxpbmVzIHNwZWNpZmllcyBob3cgbWFueSBtdWx0aXBsZXMgb2YgdGhlIGJhc2VsaW5lIHJoeXRobSBlYWNoIGxpbmUgb2YgdGhpc1xuLy8gZm9udCBzaG91bGQgdXNlIHVwLiBJdCBkb2VzIG5vdCBoYXZlIHRvIGJlIGFuIGludGVnZXIsIGJ1dCBpdCBkZWZhdWx0cyB0byB0aGVcbi8vIHNtYWxsZXN0IGludGVnZXIgdGhhdCBpcyBsYXJnZSBlbm91Z2ggdG8gZml0IHRoZSBmb250LlxuQG1peGluIGFkanVzdC1sZWFkaW5nLXRvKCRsaW5lcywgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIGxpbmUtaGVpZ2h0OiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQ2FsY3VsYXRlIHRoZSBtaW5pbXVtIG11bHRpcGxlIG9mIHJoeXRobSB1bml0cyBuZWVkZWQgdG8gY29udGFpbiB0aGUgZm9udC1zaXplLlxuQGZ1bmN0aW9uIGxpbmVzLWZvci1mb250LXNpemUoJGZvbnQtc2l6ZSkge1xuICAkbGluZXM6IGlmKCRyb3VuZC10by1uZWFyZXN0LWhhbGYtbGluZSxcbiAgICAgICAgICAgICAgY2VpbCgyICogJGZvbnQtc2l6ZSAvICRiYXNlLWxpbmUtaGVpZ2h0KSAvIDIsXG4gICAgICAgICAgICAgIGNlaWwoJGZvbnQtc2l6ZSAvICRiYXNlLWxpbmUtaGVpZ2h0KSk7XG4gIEBpZiAkbGluZXMgKiAkYmFzZS1saW5lLWhlaWdodCAtICRmb250LXNpemUgPCAkbWluLWxpbmUtcGFkZGluZyAqIDIge1xuICAgICRsaW5lczogJGxpbmVzICsgaWYoJHJvdW5kLXRvLW5lYXJlc3QtaGFsZi1saW5lLCAwLjUsIDEpO1xuICB9XG4gIEByZXR1cm4gJGxpbmVzO1xufVxuXG4vLyBDYWxjdWxhdGUgcmh5dGhtIHVuaXRzLlxuQGZ1bmN0aW9uIHJoeXRobShcbiAgJGxpbmVzOiAxLFxuICAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsXG4gICRvZmZzZXQ6IDBcbikge1xuICBAaWYgbm90KCRyZWxhdGl2ZS1mb250LXNpemluZykgYW5kICRmb250LXNpemUgIT0gJGJhc2UtZm9udC1zaXplIHtcbiAgICBAd2FybiBcIiRyZWxhdGl2ZS1mb250LXNpemluZyBpcyBmYWxzZSBidXQgYSByZWxhdGl2ZSBmb250IHNpemUgd2FzIHBhc3NlZCB0byB0aGUgcmh5dGhtIGZ1bmN0aW9uXCI7XG4gIH1cbiAgJHJoeXRobTogJGZvbnQtdW5pdCAqICgkbGluZXMgKiAkYmFzZS1saW5lLWhlaWdodCAtICRvZmZzZXQpIC8gJGZvbnQtc2l6ZTtcbiAgLy8gUm91bmQgdGhlIHBpeGVscyBkb3duIHRvIG5lYXJlc3QgaW50ZWdlci5cbiAgQGlmIHVuaXQoJHJoeXRobSkgPT0gcHgge1xuICAgICRyaHl0aG06IGZsb29yKCRyaHl0aG0pO1xuICB9XG4gIEByZXR1cm4gJHJoeXRobTtcbn1cblxuLy8gQXBwbHkgbGVhZGluZyB3aGl0ZXNwYWNlLiBUaGUgJHByb3BlcnR5IGNhbiBiZSBtYXJnaW4gb3IgcGFkZGluZy5cbkBtaXhpbiBsZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRwcm9wZXJ0eTogbWFyZ2luKSB7XG4gICN7JHByb3BlcnR5fS10b3A6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSBsZWFkaW5nIHdoaXRlc3BhY2UgYXMgcGFkZGluZy5cbkBtaXhpbiBwYWRkaW5nLWxlYWRlcigkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBwYWRkaW5nLXRvcDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IHRyYWlsaW5nIHdoaXRlc3BhY2UuIFRoZSAkcHJvcGVydHkgY2FuIGJlIG1hcmdpbiBvciBwYWRkaW5nLlxuQG1peGluIHRyYWlsZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRwcm9wZXJ0eTogbWFyZ2luKSB7XG4gICN7JHByb3BlcnR5fS1ib3R0b206IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFzIHBhZGRpbmcuXG5AbWl4aW4gcGFkZGluZy10cmFpbGVyKCRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIHBhZGRpbmctYm90dG9tOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gU2hvcnRoYW5kIG1peGluIHRvIGFwcGx5IHdoaXRlc3BhY2UgZm9yIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgYW5kIHBhZGRpbmcuXG5AbWl4aW4gcmh5dGhtKCRsZWFkZXI6IDAsICRwYWRkaW5nLWxlYWRlcjogMCwgJHBhZGRpbmctdHJhaWxlcjogMCwgJHRyYWlsZXI6IDAsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBAaW5jbHVkZSBsZWFkZXIoJGxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctbGVhZGVyKCRwYWRkaW5nLWxlYWRlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHBhZGRpbmctdHJhaWxlcigkcGFkZGluZy10cmFpbGVyLCAkZm9udC1zaXplKTtcbiAgQGluY2x1ZGUgdHJhaWxlcigkdHJhaWxlciwgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEVzdGFibGlzaGVzIGEgZm9udCBiYXNlbGluZSBmb3IgdGhlIGdpdmVuIGZvbnQtc2l6ZS5cbkBtaXhpbiBlc3RhYmxpc2gtYmFzZWxpbmUoJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIC8vIElFIDYgcmVmdXNlcyB0byByZXNpemUgZm9udHMgc2V0IGluIHBpeGVscyBhbmQgaXQgd2VpcmRseSByZXNpemVzIGZvbnRzXG4gIC8vIHdob3NlIHJvb3QgaXMgc2V0IGluIGVtcy4gU28gd2Ugc2V0IHRoZSByb290IGZvbnQgc2l6ZSBpbiBwZXJjZW50YWdlcyBvZlxuICAvLyB0aGUgZGVmYXVsdCBmb250IHNpemUuXG4gICogaHRtbCB7XG4gICAgZm9udC1zaXplOiAxMDAlICogKCRmb250LXNpemUgLyAkYnJvd3Nlci1kZWZhdWx0LWZvbnQtc2l6ZSk7XG4gIH1cbiAgaHRtbCB7XG4gICAgZm9udC1zaXplOiAkZm9udC1zaXplO1xuICAgIEBpbmNsdWRlIGFkanVzdC1sZWFkaW5nLXRvKDEsIGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgJGZvbnQtc2l6ZSwgJGJhc2UtZm9udC1zaXplKSk7XG4gIH1cbn1cblxuXG5cblxuLy8gQmFzZWQgb24gW0VyaWMgTWV5ZXIncyByZXNldCAyLjBdKGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvaW5kZXguaHRtbClcbi8vIEdsb2JhbCByZXNldCBydWxlcy5cbi8vIEZvciBtb3JlIHNwZWNpZmljIHJlc2V0cywgdXNlIHRoZSByZXNldCBtaXhpbnMgcHJvdmlkZWQgYmVsb3dcbkBtaXhpbiBnbG9iYWwtcmVzZXQge1xuICBodG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCxcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICAvLyBVbmxpa2UgRXJpYydzIG9yaWdpbmFsIHJlc2V0LCB3ZSByZXNldCB0aGUgaHRtbCBlbGVtZW50IHRvIGJlIGNvbXBhdGlibGVcbiAgLy8gd2l0aCB0aGUgdmVydGljYWwgcmh5dGhtIG1peGlucy5cbiAgaHRtbCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm9keTsgfVxuICBvbCwgdWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWxpc3Qtc3R5bGU7IH1cbiAgdGFibGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlOyB9XG4gIGNhcHRpb24sIHRoLCB0ZCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGUtY2VsbDsgfVxuICBxLCBibG9ja3F1b3RlIHtcbiAgICBAaW5jbHVkZSByZXNldC1xdW90YXRpb247IH1cbiAgYSBpbWcge1xuICAgIEBpbmNsdWRlIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXI7IH1cbiAgQGluY2x1ZGUgcmVzZXQtaHRtbDU7IH1cblxuLy8gUmVzZXQgYWxsIGVsZW1lbnRzIHdpdGhpbiBzb21lIHNlbGVjdG9yIHNjb3BlLiBUbyByZXNldCB0aGUgc2VsZWN0b3IgaXRzZWxmLFxuLy8gbWl4aW4gdGhlIGFwcHJvcHJpYXRlIHJlc2V0IG1peGluIGZvciB0aGF0IGVsZW1lbnQgdHlwZSBhcyB3ZWxsLiBUaGlzIGNvdWxkIGJlXG4vLyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gc3R5bGUgYSBwYXJ0IG9mIHlvdXIgcGFnZSBpbiBhIGRyYW1hdGljYWxseSBkaWZmZXJlbnQgd2F5LlxuQG1peGluIG5lc3RlZC1yZXNldCB7XG4gIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgY29udGVudDogbm9uZTsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgYm9yZGVyLlxuQG1peGluIHJlc2V0LWltYWdlLWFuY2hvci1ib3JkZXIge1xuICBib3JkZXI6IG5vbmU7IH1cblxuLy8gVW5yZWNvZ25pemVkIGVsZW1lbnRzIGFyZSBkaXNwbGF5ZWQgaW5saW5lLlxuLy8gVGhpcyByZXNldCBwcm92aWRlcyBhIGJhc2ljIHJlc2V0IGZvciBibG9jayBodG1sNSBlbGVtZW50c1xuLy8gc28gdGhleSBhcmUgcmVuZGVyZWQgY29ycmVjdGx5IGluIGJyb3dzZXJzIHRoYXQgZG9uJ3QgcmVjb2duaXplIHRoZW1cbi8vIGFuZCByZXNldCBpbiBicm93c2VycyB0aGF0IGhhdmUgZGVmYXVsdCBzdHlsZXMgZm9yIHRoZW0uXG5AbWl4aW4gcmVzZXQtaHRtbDUge1xuICAje2VsZW1lbnRzLW9mLXR5cGUoaHRtbDUtYmxvY2spfSB7XG4gICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGRpc3BsYXkgb2YgaW5saW5lIGFuZCBibG9jayBlbGVtZW50cyB0byB0aGVpciBkZWZhdWx0IGRpc3BsYXlcbi8vIGFjY29yZGluZyB0byB0aGVpciB0YWcgdHlwZS4gRWxlbWVudHMgdGhhdCBoYXZlIGEgZGVmYXVsdCBkaXNwbGF5IHRoYXQgdmFyaWVzIGFjcm9zc1xuLy8gdmVyc2lvbnMgb2YgaHRtbCBvciBicm93c2VyIGFyZSBub3QgaGFuZGxlZCBoZXJlLCBidXQgdGhpcyBjb3ZlcnMgdGhlIDkwJSB1c2UgY2FzZS5cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIC8vIFR1cm4gb2ZmIHRoZSBkaXNwbGF5IGZvciBib3RoIG9mIHRoZXNlIGNsYXNzZXNcbi8vICAgICAudW5yZWdpc3RlcmVkLW9ubHksIC5yZWdpc3RlcmVkLW9ubHlcbi8vICAgICAgIGRpc3BsYXk6IG5vbmVcbi8vICAgICAvLyBOb3cgdHVybiBvbmx5IG9uZSBvZiB0aGVtIGJhY2sgb24gZGVwZW5kaW5nIG9uIHNvbWUgb3RoZXIgY29udGV4dC5cbi8vICAgICBib2R5LnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnJlZ2lzdGVyZWQtb25seVwiKVxuLy8gICAgIGJvZHkudW5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi51bnJlZ2lzdGVyZWQtb25seVwiKVxuQG1peGluIHJlc2V0LWRpc3BsYXkoJHNlbGVjdG9yOiBcIlwiLCAkaW1wb3J0YW50OiBmYWxzZSkge1xuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiaW5saW5lXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmU7IH0gfVxuICAje2FwcGVuZC1zZWxlY3RvcihlbGVtZW50cy1vZi10eXBlKFwiYmxvY2tcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfSB9XG4iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEZWZhdWx0IFZhcmlhYmxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kQnJlYWtwb2ludC1TZXR0aW5nczogKFxuICAnZGVmYXVsdCBtZWRpYSc6IGFsbCxcbiAgJ2RlZmF1bHQgZmVhdHVyZSc6IG1pbi13aWR0aCxcbiAgJ2RlZmF1bHQgcGFpcic6IHdpZHRoLFxuXG4gICdmb3JjZSBhbGwgbWVkaWEgdHlwZSc6IGZhbHNlLFxuICAndG8gZW1zJzogZmFsc2UsXG4gICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnOiB0cnVlLFxuXG4gICdubyBxdWVyaWVzJzogZmFsc2UsXG4gICdubyBxdWVyeSBmYWxsYmFja3MnOiBmYWxzZSxcblxuICAnYmFzZSBmb250IHNpemUnOiAxNnB4LFxuXG4gICdsZWdhY3kgc3ludGF4JzogZmFsc2Vcbik7XG5cbiRicmVha3BvaW50OiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJicmVha3BvaW50L3NldHRpbmdzXCI7XG5AaW1wb3J0ICdicmVha3BvaW50L2NvbnRleHQnO1xuQGltcG9ydCAnYnJlYWtwb2ludC9oZWxwZXJzJztcbkBpbXBvcnQgJ2JyZWFrcG9pbnQvcGFyc2Vycyc7XG5AaW1wb3J0ICdicmVha3BvaW50L25vLXF1ZXJ5JztcblxuQGltcG9ydCAnYnJlYWtwb2ludC9yZXNwb25kLXRvJztcblxuQGltcG9ydCBcImJyZWFrcG9pbnQvbGVnYWN5LXNldHRpbmdzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBsZWdhY3ktc2V0dGluZ3Mtd2FybmluZztcblxuICAvLyBSZXNldCBjb250ZXh0c1xuICBAaW5jbHVkZSBwcml2YXRlLWJyZWFrcG9pbnQtcmVzZXQtY29udGV4dHMoKTtcblxuICAkYnJlYWtwb2ludDogYnJlYWtwb2ludCgkcXVlcnksIGZhbHNlKTtcblxuICAkcXVlcnktc3RyaW5nOiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnknKTtcbiAgJHF1ZXJ5LWZhbGxiYWNrOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnZmFsbGJhY2snKTtcblxuICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtZ2V0KCRicmVha3BvaW50LCAnY29udGV4dCBob2xkZXInKSAhZ2xvYmFsO1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiBtYXAtZ2V0KCRicmVha3BvaW50LCAncXVlcnkgY291bnQnKSAhZ2xvYmFsO1xuXG4gIC8vIEFsbG93IGZvciBhbiBhcy1uZWVkZWQgb3ZlcnJpZGUgb3IgdXNhZ2Ugb2Ygbm8gcXVlcnkgZmFsbGJhY2suXG4gIEBpZiAkbm8tcXVlcnkgIT0gZmFsc2Uge1xuICAgICRxdWVyeS1mYWxsYmFjazogJG5vLXF1ZXJ5O1xuICB9XG5cbiAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJ25vLXF1ZXJ5JywgJHF1ZXJ5LWZhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFByaW50IE91dCBRdWVyeSBTdHJpbmdcbiAgQGlmIG5vdCBicmVha3BvaW50LWdldCgnbm8gcXVlcmllcycpIHtcbiAgICBAbWVkaWEgI3skcXVlcnktc3RyaW5nfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxuICBAaWYgYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpICE9IGZhbHNlIG9yIGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykgPT0gdHJ1ZSB7XG5cbiAgICAkdHlwZTogdHlwZS1vZihicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykpO1xuICAgICRwcmludDogZmFsc2U7XG5cbiAgICBAaWYgKCR0eXBlID09ICdib29sJykge1xuICAgICAgJHByaW50OiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgIEBpZiAkcXVlcnktZmFsbGJhY2sgPT0gYnJlYWtwb2ludC1nZXQoJ25vIHF1ZXJ5IGZhbGxiYWNrcycpIHtcbiAgICAgICAgJHByaW50OiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSBpZiAoJHR5cGUgPT0gJ2xpc3QnKSB7XG4gICAgICBAZWFjaCAkd3JhcHBlciBpbiBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgICAgICBAaWYgJHF1ZXJ5LWZhbGxiYWNrID09ICR3cmFwcGVyIHtcbiAgICAgICAgICAkcHJpbnQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBXcml0ZSBGYWxsYmFja1xuICAgIEBpZiAoJHF1ZXJ5LWZhbGxiYWNrICE9IGZhbHNlKSBhbmQgKCRwcmludCA9PSB0cnVlKSB7XG4gICAgICAkdHlwZS1mYWxsYmFjazogdHlwZS1vZigkcXVlcnktZmFsbGJhY2spO1xuXG4gICAgICBAaWYgKCR0eXBlLWZhbGxiYWNrICE9ICdib29sJykge1xuICAgICAgICAjeyRxdWVyeS1mYWxsYmFja30gJiB7XG4gICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgcHJpdmF0ZS1icmVha3BvaW50LXJlc2V0LWNvbnRleHRzKCk7XG59XG5cblxuQG1peGluIG1xKCRxdWVyeSwgJG5vLXF1ZXJ5OiBmYWxzZSkge1xuICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSGFzIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtaGFzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludCwgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiBicmVha3BvaW50LWhhcygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludCwgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEJyZWFrcG9pbnQtU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaWYgKHN0ci1pbmRleCgkc2V0dGluZywgJy0nKSBvciBzdHItaW5kZXgoJHNldHRpbmcsICdfJykpIGFuZCBzdHItaW5kZXgoJHNldHRpbmcsICcgJykgPT0gbnVsbCB7XG4gICAgQHdhcm4gXCJXb3JkcyBpbiBCcmVha3BvaW50IHNldHRpbmdzIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgc3BhY2VzLCBub3QgZGFzaGVzIG9yIHVuZGVyc2NvcmVzLiBQbGVhc2UgcmVwbGFjZSBkYXNoZXMgYW5kIHVuZGVyc2NvcmVzIGJldHdlZW4gd29yZHMgd2l0aCBzcGFjZXMuIFNldHRpbmdzIHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgdW50aWwgY2hhbmdlZC5cIjtcbiAgfVxuICAkYnJlYWtwb2ludDogbWFwLW1lcmdlKCRicmVha3BvaW50LCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJGJyZWFrcG9pbnQtY2hhbmdlOiBicmVha3BvaW50LXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIGJyZWFrcG9pbnQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBia3B0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuQG1peGluIGJrcHQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAxIHtcbiAgICAkc2V0dGluZ3M6IG50aCgkc2V0dGluZ3MsIDEpO1xuICB9XG5cbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkYnJlYWtwb2ludDogbWFwLXJlbW92ZSgkYnJlYWtwb2ludCwgJHNldHRpbmcpICFnbG9iYWw7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gYnJlYWtwb2ludC1yZXNldCgkc2V0dGluZ3MuLi4pIHtcbiAgJGJyZWFrcG9pbnQtcmVzZXQ6IGJyZWFrcG9pbnQtcmVzZXQoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIGJrcHQtcmVzZXQoJHNldHRpbmdzLi4uKSB7XG4gICRicmVha3BvaW50LXJlc2V0OiBicmVha3BvaW50LXJlc2V0KCRzZXR0aW5ncyk7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIEJyZWFrcG9pbnQgVmFyaWFibGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpO1xuJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEhhcyBDb250ZXh0XG4vLyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHlvdSBhcmUgaW5zaWRlIGEgQnJlYWtwb2ludCBxdWVyeVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIHtcbiAgQGlmIGxlbmd0aCgkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50KSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQnJlYWtwb2ludCBHZXQgQ29udGV4dFxuLy8gJGZlYXR1cmU6IElucHV0IGZlYXR1cmUgdG8gZ2V0IGl0J3MgY3VycmVudCBNUSBjb250ZXh0LiBSZXR1cm5zIGZhbHNlIGlmIG5vIGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGZlYXR1cmUpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKSB7XG4gICAgJGdldDogbWFwLWdldCgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSk7XG4gICAgLy8gU3BlY2lhbCBoYW5kbGluZyBvZiBuby1xdWVyeSBmcm9tIGdldCBzaWRlIHNvIC9mYWxzZS8gcHJlcGVuZHMgYXJlbid0IHJldHVybmVkXG4gICAgQGlmICRmZWF0dXJlID09ICduby1xdWVyeScge1xuICAgICAgQGlmIHR5cGUtb2YoJGdldCkgPT0gJ2xpc3QnIGFuZCBsZW5ndGgoJGdldCkgPiAxIGFuZCBudGgoJGdldCwgMSkgPT0gZmFsc2Uge1xuICAgICAgICAkZ2V0OiBudGgoJGdldCwgbGVuZ3RoKCRnZXQpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQHJldHVybiAkZ2V0O1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgYnJlYWtwb2ludC1oYXMtY29udGV4dCgpIGFuZCAkZmVhdHVyZSA9PSAnbWVkaWEnIHtcbiAgICAgIEByZXR1cm4gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHNldCBjb250ZXh0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSkge1xuICBAaWYgJHZhbHVlID09ICdtb25vY2hyb21lJyB7XG4gICAgJGZlYXR1cmU6ICdtb25vY2hyb21lJztcbiAgfVxuXG4gICRjdXJyZW50OiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgQGlmICRjdXJyZW50IGFuZCBsZW5ndGgoJGN1cnJlbnQpID09ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgIEB3YXJuIFwiWW91IGhhdmUgYWxyZWFkeSBxdWVyaWVkIGFnYWluc3QgYCN7JGZlYXR1cmV9YC4gVW5leHBlY3RlZCB0aGluZ3MgbWF5IGhhcHBlbiBpZiB5b3UgcXVlcnkgYWdhaW5zdCB0aGUgc2FtZSBmZWF0dXJlIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBzYW1lIGBhbmRgIHF1ZXJ5LiBCcmVha3BvaW50IGlzIG92ZXJ3cml0aW5nIHRoZSBjdXJyZW50IGNvbnRleHQgd2l0aCBgI3skdmFsdWV9YFwiO1xuICB9XG5cbiAgQGlmIG5vdCBtYXAtaGFzLWtleSgkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyLCAkZmVhdHVyZSkge1xuICAgICR2LWhvbGRlcjogKCk7XG4gICAgQGZvciAkaSBmcm9tIDEgdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHYtaG9sZGVyOiBtYXAtZ2V0KCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICRmZWF0dXJlKTtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJHYtaG9sZGVyKTtcbiAgICBAZm9yICRpIGZyb20gJGxlbmd0aCB0byAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50IC0gMSB7XG4gICAgICBAaWYgJGZlYXR1cmUgPT0gJ21lZGlhJyB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgbWVkaWEnKSk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICR2LWhvbGRlcjogYXBwZW5kKCR2LWhvbGRlciwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsICR2YWx1ZSk7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogbWFwLW1lcmdlKCRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXIsICgkZmVhdHVyZTogJHYtaG9sZGVyKSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQcml2YXRlIGZ1bmN0aW9uIHRvIHJlc2V0IGNvbnRleHRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHByaXZhdGUtYnJlYWtwb2ludC1yZXNldC1jb250ZXh0cyB7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQ6IDAgIWdsb2JhbDtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbnZlcnRzIHRoZSBpbnB1dCB2YWx1ZSB0byBCYXNlIEVNc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSkge1xuICAkdmFsdWUtdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIC8vIFdpbGwgY29udmVydCByZWxhdGl2ZSBFTXMgaW50byByb290IEVNcy5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIGFuZCB0eXBlLW9mKGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpKSA9PSAnbnVtYmVyJyBhbmQgJHZhbHVlLXVuaXQgPT0gJ2VtJyB7XG4gICAgJGJhc2UtdW5pdDogdW5pdChicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSk7XG5cbiAgICBAaWYgJGJhc2UtdW5pdCA9PSAncHgnIG9yICRiYXNlLXVuaXQgPT0gJyUnIG9yICRiYXNlLXVuaXQgPT0gJ2VtJyBvciAkYmFzZS11bml0ID09ICdwdCcge1xuICAgICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKSAvIGJhc2UtY29udmVyc2lvbihicmVha3BvaW50LWdldCgnYmFzZSBmb250IHNpemUnKSkgKiAxZW07XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICcje2JyZWFrcG9pbnQtZ2V0KFxcJ2Jhc2UgZm9udCBzaXplXFwnKX0gaXMgbm90IHNldCBpbiB2YWxpZCB1bml0cyBmb3IgZm9udCBzaXplISc7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBiYXNlLWNvbnZlcnNpb24oJHZhbHVlKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gYmFzZS1jb252ZXJzaW9uKCR2YWx1ZSkge1xuICAkdW5pdDogdW5pdCgkdmFsdWUpO1xuXG4gIEBpZiAkdW5pdCA9PSAncHgnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDE2cHggKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJyUnIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIDEwMCUgKiAxZW07XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ2VtJyB7XG4gICAgQHJldHVybiAkdmFsdWU7XG4gIH1cbiAgQGVsc2UgaWYgJHVuaXQgPT0gJ3B0JyB7XG4gICAgQHJldHVybiAkdmFsdWUgLyAxMnB0ICogMWVtO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWx1ZTtcbi8vICAgIEB3YXJuICdFdmVyeXRoaW5nIGlzIHRlcnJpYmxlISBXaGF0IGhhdmUgeW91IGRvbmU/ISc7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIGhhdmUgYSBtaW4vbWF4IHBhaXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWluLW1heC1mZWF0dXJlczogJ2NvbG9yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvci1pbmRleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtYXNwZWN0LXJhdGlvJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtaGVpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2Utd2lkdGgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9ub2Nocm9tZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzb2x1dGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4tbWF4KCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LW1pbi1tYXgtZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlIGNhbiBoYXZlIGEgc3RyaW5nIHZhbHVlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXN0cmluZy1mZWF0dXJlczogICdvcmllbnRhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NhbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlLWFzcGVjdC1yYXRpbycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHVtaW5vc2l0eSc7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXN0cmluZy12YWx1ZSgkZmVhdHVyZSkge1xuICBAZWFjaCAkaXRlbSBpbiAkYnJlYWtwb2ludC1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiBicmVha3BvaW50LW1pbi1tYXgoJGl0ZW0pIHtcbiAgICAgIEBpZiAkZmVhdHVyZSA9PSAnbWluLSN7JGl0ZW19JyBvciAkZmVhdHVyZSA9PSAnbWF4LSN7JGl0ZW19JyB7XG4gICAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGZlYXR1cmUgPT0gJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJldHVybnMgd2hldGhlciB0aGUgZmVhdHVyZSBpcyBhIG1lZGlhIHR5cGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnQtbWVkaWEtdHlwZXM6ICAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyYWlsbGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnZW1ib3NzZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZGhlbGQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvamVjdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JlZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc3BlZWNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R0eScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICd0dic7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLW1lZGlhKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRtZWRpYSBpbiAkYnJlYWtwb2ludC1tZWRpYS10eXBlcyB7XG4gICAgQGlmICgkZmVhdHVyZSA9PSAkbWVkaWEpIG9yICgkZmVhdHVyZSA9PSAnbm90ICN7JG1lZGlhfScpIG9yICgkZmVhdHVyZSA9PSAnb25seSAjeyRtZWRpYX0nKSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiBmYWxzZTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZXR1cm5zIHdoZXRoZXIgdGhlIGZlYXR1cmUgY2FuIHN0YW5kIGFsb25lXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXM6ICdjb2xvcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3ItaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dyaWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vbm9jaHJvbWUnO1xuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSB7XG4gIEBlYWNoICRpdGVtIGluICRicmVha3BvaW50LXNpbmdsZS1zdHJpbmctZmVhdHVyZXMge1xuICAgIEBpZiAkZmVhdHVyZSA9PSAkaXRlbSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBmZWF0dXJlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LWlzLXJlc29sdXRpb24oJGZlYXR1cmUpIHtcbiAgJHJlc29sdXRpb25zOiAnZGV2aWNlLXBpeGVsLXJhdGlvJywgJ2Rwcic7XG5cbiAgQGlmIGJyZWFrcG9pbnQtZ2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnKSB7XG4gICAgJHJlc29sdXRpb25zOiBhcHBlbmQoJHJlc29sdXRpb25zLCAncmVzb2x1dGlvbicpO1xuICB9XG5cbiAgQGVhY2ggJHJlc28gaW4gJHJlc29sdXRpb25zIHtcbiAgICBAaWYgaW5kZXgoJGZlYXR1cmUsICRyZXNvKSBvciBpbmRleCgkZmVhdHVyZSwgJ21pbi0jeyRyZXNvfScpIG9yIGluZGV4KCRmZWF0dXJlLCAnbWF4LSN7JHJlc299Jykge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQYXJzZXIgUGllY2VzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJwYXJzZXJzL3F1ZXJ5XCI7XG5AaW1wb3J0IFwicGFyc2Vycy9zaW5nbGVcIjtcbkBpbXBvcnQgXCJwYXJzZXJzL2RvdWJsZVwiO1xuQGltcG9ydCBcInBhcnNlcnMvdHJpcGxlXCI7XG5AaW1wb3J0IFwicGFyc2Vycy9yZXNvbHV0aW9uXCI7XG5cbiRNZW1vLUV4aXN0czogZnVuY3Rpb24tZXhpc3RzKG1lbW8tZ2V0KSBhbmQgZnVuY3Rpb24tZXhpc3RzKG1lbW8tc2V0KTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBCcmVha3BvaW50IEZ1bmN0aW9uXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50KCRxdWVyeSwgJGNvbnRleHRzLi4uKSB7XG4gICRydW46IHRydWU7XG4gICRyZXR1cm46ICgpO1xuXG4gIC8vIEdyYWIgdGhlIE1lbW8gT3V0cHV0IGlmIE1lbW9pemF0aW9uIGNhbiBiZSBhIHRoaW5nXG4gIEBpZiAkTWVtby1FeGlzdHMge1xuICAgICRyZXR1cm46IG1lbW8tZ2V0KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnQgJHF1ZXJ5ICRjb250ZXh0cyk7XG5cbiAgICBAaWYgJHJldHVybiAhPSBudWxsIHtcbiAgICAgICRydW46IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBub3QgJE1lbW8tRXhpc3RzIG9yICRydW4ge1xuICAgIC8vIEludGVybmFsIFZhcmlhYmxlc1xuICAgICRxdWVyeS1zdHJpbmc6ICcnO1xuICAgICRxdWVyeS1mYWxsYmFjazogZmFsc2U7XG4gICAgJHJldHVybjogKCk7XG5cbiAgICAvLyBSZXNlcnZlIEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRob2xkZXItY29udGV4dDogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjtcbiAgICAkaG9sZGVyLXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50O1xuXG4gICAgLy8gUmVzZXQgR2xvYmFsIFByaXZhdGUgQnJlYWtwb2ludCBDb250ZXh0XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcjogKCkgIWdsb2JhbDtcbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAwICFnbG9iYWw7XG5cblxuICAgIC8vIFRlc3QgdG8gc2VlIGlmIGl0J3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdFxuICAgICRvci1saXN0OiBpZihsaXN0LXNlcGFyYXRvcigkcXVlcnkpID09ICdjb21tYScsIHRydWUsIGZhbHNlKTtcblxuXG4gICAgQGlmICgkb3ItbGlzdCA9PSBmYWxzZSBhbmQgYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSBmYWxzZSkge1xuICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkcXVlcnkpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkbGVuZ3RoOiBsZW5ndGgoJHF1ZXJ5KTtcblxuICAgICAgJGxhc3Q6IG50aCgkcXVlcnksICRsZW5ndGgpO1xuICAgICAgJHF1ZXJ5LWZhbGxiYWNrOiBicmVha3BvaW50LW5vLXF1ZXJ5KCRsYXN0KTtcblxuICAgICAgQGlmICgkcXVlcnktZmFsbGJhY2sgIT0gZmFsc2UpIHtcbiAgICAgICAgJGxlbmd0aDogJGxlbmd0aCAtIDE7XG4gICAgICB9XG5cbiAgICAgIEBpZiAoYnJlYWtwb2ludC1nZXQoJ2xlZ2FjeSBzeW50YXgnKSA9PSB0cnVlKSB7XG4gICAgICAgICRtcTogKCk7XG5cbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkbXE6IGFwcGVuZCgkbXEsIG50aCgkcXVlcnksICRpKSwgY29tbWEpO1xuICAgICAgICB9XG5cbiAgICAgICAgJHF1ZXJ5LXN0cmluZzogYnJlYWtwb2ludC1wYXJzZSgkbXEpO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcXVlcnktc3RyaW5nOiAnJztcbiAgICAgICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAgICAgICAkcXVlcnktc3RyaW5nOiAkcXVlcnktc3RyaW5nICsgaWYoJGkgPT0gMSwgJycsICcsICcpICsgYnJlYWtwb2ludC1wYXJzZShudGgoJHF1ZXJ5LCAkaSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHJldHVybjogKCdxdWVyeSc6ICRxdWVyeS1zdHJpbmcsXG4gICAgICAgICdmYWxsYmFjayc6ICRxdWVyeS1mYWxsYmFjayxcbiAgICAgICAgJ2NvbnRleHQgaG9sZGVyJzogJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlcixcbiAgICAgICAgJ3F1ZXJ5IGNvdW50JzogJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudFxuICAgICk7XG4gICAgQGlmIGxlbmd0aCgkY29udGV4dHMpID4gMCBhbmQgbnRoKCRjb250ZXh0cywgMSkgIT0gZmFsc2Uge1xuICAgICAgQGlmICRxdWVyeS1mYWxsYmFjayAhPSBmYWxzZSB7XG4gICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KCduby1xdWVyeScsICRxdWVyeS1mYWxsYmFjayk7XG4gICAgICB9XG4gICAgICAkY29udGV4dC1tYXA6ICgpO1xuICAgICAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAgICAgJGNvbnRleHQtbWFwOiBtYXAtbWVyZ2UoJGNvbnRleHQtbWFwLCAoJGNvbnRleHQ6IGJyZWFrcG9pbnQtZ2V0LWNvbnRleHQoJGNvbnRleHQpKSk7XG4gICAgICB9XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKGNvbnRleHQ6ICRjb250ZXh0LW1hcCkpO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IEdsb2JhbCBQcml2YXRlIEJyZWFrcG9pbnQgQ29udGV4dFxuICAgICRwcml2YXRlLWJyZWFrcG9pbnQtY29udGV4dC1ob2xkZXI6ICgpICFnbG9iYWw7XG4gICAgJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudDogMCAhZ2xvYmFsO1xuXG4gICAgQGlmICRNZW1vLUV4aXN0cyB7XG4gICAgICAkaG9sZGVyOiBtZW1vLXNldChicmVha3BvaW50LCBicmVha3BvaW50ICRxdWVyeSAkY29udGV4dHMsICRyZXR1cm4pO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmFsIEJyZWFrcG9pbnQgUGFyc2VyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlKCRxdWVyeSkge1xuICAvLyBJbmNyZWFzZSBudW1iZXIgb2YgJ2FuZCcgcXVlcmllc1xuICAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50OiAkcHJpdmF0ZS1icmVha3BvaW50LXF1ZXJ5LWNvdW50ICsgMSAhZ2xvYmFsO1xuXG4gIC8vIFNldCB1cCBNZWRpYSBUeXBlXG4gICRxdWVyeS1wcmludDogJyc7XG5cbiAgJGZvcmNlLWFsbDogKChicmVha3BvaW50LWdldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnKSA9PSB0cnVlKSBhbmQgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgPT0gJ2FsbCcpKTtcbiAgJGVtcHR5LW1lZGlhOiB0cnVlO1xuICBAaWYgKCRmb3JjZS1hbGwgPT0gdHJ1ZSkgb3IgKGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykgIT0gJ2FsbCcpIHtcbiAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAkcXVlcnktcHJpbnQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJyk7XG4gICAgJGVtcHR5LW1lZGlhOiBmYWxzZTtcbiAgfVxuXG5cbiAgJHF1ZXJ5LXJlc29sdXRpb246IGZhbHNlO1xuXG4gICRxdWVyeS1ob2xkZXI6IGJyZWFrcG9pbnQtcGFyc2UtcXVlcnkoJHF1ZXJ5KTtcblxuXG5cbiAgLy8gTG9vcCBvdmVyIGVhY2ggcGFyc2VkIG91dCBxdWVyeSBhbmQgd3JpdGUgaXQgdG8gJHF1ZXJ5LXByaW50XG4gICRmaXJzdDogdHJ1ZTtcblxuICBAZWFjaCAkZmVhdHVyZSBpbiAkcXVlcnktaG9sZGVyIHtcbiAgICAkbGVuZ3RoOiBsZW5ndGgoJGZlYXR1cmUpO1xuXG4gICAgLy8gUGFyc2UgYSBzaW5nbGUgZmVhdHVyZVxuICAgIEBpZiAoJGxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBGZWF0dXJlIGlzIGN1cnJlbnRseSBhIGxpc3QsIGdyYWIgdGhlIGFjdHVhbCB2YWx1ZVxuICAgICAgJGZlYXR1cmU6IG50aCgkZmVhdHVyZSwgMSk7XG5cbiAgICAgIC8vIE1lZGlhIFR5cGUgbXVzdCBieSBjb252ZW50aW9uIGJlIHRoZSBmaXJzdCBpdGVtLCBzbyBpdCdzIHNhZmUgdG8gZmxhdCBvdmVycmlkZSAkcXVlcnktcHJpbnQsIHdoaWNoIHJpZ2h0IG5vdyBzaG91bGQgb25seSBiZSB0aGUgZGVmYXVsdCBtZWRpYSB0eXBlXG4gICAgICBAaWYgKGJyZWFrcG9pbnQtaXMtbWVkaWEoJGZlYXR1cmUpKSB7XG4gICAgICAgIEBpZiAoJGZvcmNlLWFsbCA9PSB0cnVlKSBvciAoJGZlYXR1cmUgIT0gJ2FsbCcpIHtcbiAgICAgICAgICAvLyBGb3JjZSB0aGUgcHJpbnQgb2YgdGhlIGRlZmF1bHQgbWVkaWEgdHlwZSBpZiAoZm9yY2UgYWxsIGlzIHRydWUgYW5kIGRlZmF1bHQgbWVkaWEgdHlwZSBpcyBhbGwpIG9yIChkZWZhdWx0IG1lZGlhIHR5cGUgaXMgbm90IGFsbClcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICRmZWF0dXJlO1xuICAgICAgICAgICRlbXB0eS1tZWRpYTogZmFsc2U7XG5cbiAgICAgICAgICAvLyBTZXQgQ29udGV4dFxuICAgICAgICAgICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1lZGlhLCAkcXVlcnktcHJpbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICRxdWVyeS1wcmludDogJyN7JHF1ZXJ5LXByaW50fSAjeyRwYXJzZWR9JztcbiAgICAgICAgJGZpcnN0OiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSBkb3VibGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDIpIHtcbiAgICAgIEBpZiAoYnJlYWtwb2ludC1pcy1yZXNvbHV0aW9uKCRmZWF0dXJlKSAhPSBmYWxzZSkge1xuICAgICAgICAkcXVlcnktcmVzb2x1dGlvbjogJGZlYXR1cmU7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRwYXJzZWQ6IG51bGw7XG4gICAgICAgIC8vIElmIGl0J3MgYSBzdHJpbmcvbnVtYmVyIHBhaXIsXG4gICAgICAgIC8vIHdlIGNoZWNrIHRvIHNlZSBpZiBvbmUgaXMgYSBzaW5nbGUtc3RyaW5nIHZhbHVlLFxuICAgICAgICAvLyB0aGVuIHdlIHBhcnNlIGl0IGFzIGEgbm9ybWFsIGRvdWJsZVxuICAgICAgICAkYWxwaGE6IG50aCgkZmVhdHVyZSwgMSk7XG4gICAgICAgICRiZXRhOiBudGgoJGZlYXR1cmUsIDIpO1xuICAgICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRhbHBoYSkgb3IgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRiZXRhKSB7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGFscGhhLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgICAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS1zaW5nbGUoJGJldGEsICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgICAgICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAgIH1cbiAgICAgICAgQGVsc2Uge1xuICAgICAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAgICAgJHF1ZXJ5LXByaW50OiAnI3skcXVlcnktcHJpbnR9ICN7JHBhcnNlZH0nO1xuICAgICAgICAgICRmaXJzdDogZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUGFyc2UgYSB0cmlwbGUgZmVhdHVyZVxuICAgIEBlbHNlIGlmICgkbGVuZ3RoID09IDMpIHtcbiAgICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtdHJpcGxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCk7XG4gICAgICAkcXVlcnktcHJpbnQ6ICcjeyRxdWVyeS1wcmludH0gI3skcGFyc2VkfSc7XG4gICAgICAkZmlyc3Q6IGZhbHNlO1xuICAgIH1cblxuICB9XG5cbiAgQGlmICgkcXVlcnktcmVzb2x1dGlvbiAhPSBmYWxzZSkge1xuICAgICRxdWVyeS1wcmludDogYnJlYWtwb2ludC1idWlsZC1yZXNvbHV0aW9uKCRxdWVyeS1wcmludCwgJHF1ZXJ5LXJlc29sdXRpb24sICRlbXB0eS1tZWRpYSwgJGZpcnN0KTtcbiAgfVxuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGZlYXR1cmUgdGhhdCdzIGJlZW4gZGV0ZWN0ZWQgc28gZmFyIGFuZCBhcHBlbmQgJ2ZhbHNlJyB0byB0aGUgdGhlIHZhbHVlIGxpc3QgdG8gaW5jcmVtZW50IHRoZWlyIGNvdW50ZXJzXG4gIEBlYWNoICRmLCAkdiBpbiAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyIHtcbiAgICAkdi1ob2xkZXI6ICR2O1xuICAgICRsZW5ndGg6IGxlbmd0aCgkdi1ob2xkZXIpO1xuICAgIEBpZiBsZW5ndGgoJHYtaG9sZGVyKSA8ICRwcml2YXRlLWJyZWFrcG9pbnQtcXVlcnktY291bnQge1xuICAgICAgQGZvciAkaSBmcm9tICRsZW5ndGggdG8gJHByaXZhdGUtYnJlYWtwb2ludC1xdWVyeS1jb3VudCB7XG4gICAgICAgIEBpZiAkZiA9PSAnbWVkaWEnIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IG1lZGlhJykpO1xuICAgICAgICB9XG4gICAgICAgIEBlbHNlIHtcbiAgICAgICAgICAkdi1ob2xkZXI6IGFwcGVuZCgkdi1ob2xkZXIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAkcHJpdmF0ZS1icmVha3BvaW50LWNvbnRleHQtaG9sZGVyOiBtYXAtbWVyZ2UoJHByaXZhdGUtYnJlYWtwb2ludC1jb250ZXh0LWhvbGRlciwgKCRmOiAkdi1ob2xkZXIpKSAhZ2xvYmFsO1xuICB9XG5cbiAgQHJldHVybiAkcXVlcnktcHJpbnQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1xdWVyeSgkcXVlcnkpIHtcbiAgLy8gUGFyc2UgZmVhdHVyZXMgb3V0IG9mIGFuIGluZGl2aWR1YWwgcXVlcnlcbiAgJGZlYXR1cmUtaG9sZGVyOiAoKTtcbiAgJHF1ZXJ5LWhvbGRlcjogKCk7XG4gICRsZW5ndGg6IGxlbmd0aCgkcXVlcnkpO1xuXG4gIEBpZiAkbGVuZ3RoID09IDIge1xuICAgIC8vIElmIHdlJ3ZlIGdvdCBhIHN0cmluZy9udW1iZXIsIG51bWJlci9zdHJpbmcsIGNoZWNrIHRvIHNlZSBpZiBpdCdzIGEgdmFsaWQgc3RyaW5nL251bWJlciBwYWlyIG9yIHR3byBzaW5nbGVzXG4gICAgQGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnc3RyaW5nJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIG9yICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ3N0cmluZycpIHtcblxuICAgICAgJG51bWJlcjogJyc7XG4gICAgICAkdmFsdWU6ICcnO1xuXG4gICAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gJ3N0cmluZycge1xuICAgICAgICAkbnVtYmVyOiBudGgoJHF1ZXJ5LCAyKTtcbiAgICAgICAgJHZhbHVlOiBudGgoJHF1ZXJ5LCAxKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcjogbnRoKCRxdWVyeSwgMSk7XG4gICAgICAgICR2YWx1ZTogbnRoKCRxdWVyeSwgMik7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgdmFsdWUgY2FuIGJlIGEgc2luZ2xlIHZhbHVlLCBjaGVjayB0byBzZWUgaWYgdGhlIG51bWJlciBwYXNzZWQgaW4gaXMgYSB2YWxpZCBpbnB1dCBmb3Igc2FpZCBzaW5nbGUgdmFsdWUuIEZvcnR1bmF0ZWx5LCBhbGwgY3VycmVudCBzaW5nbGUtdmFsdWUgb3B0aW9ucyBvbmx5IGFjY2VwdCB1bml0bGVzcyBudW1iZXJzLCBzbyB0aGlzIGNoZWNrIGlzIGVhc3kuXG4gICAgICBAaWYgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCR2YWx1ZSkge1xuICAgICAgICBAaWYgdW5pdGxlc3MoJG51bWJlcikge1xuICAgICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCR2YWx1ZSwgJG51bWJlciwgc3BhY2UpO1xuICAgICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCAkZmVhdHVyZS1ob2xkZXIsIGNvbW1hKTtcbiAgICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgYSBtZWRpYSB0eXBlLCBzcGxpdCB0aGUgcXVlcnlcbiAgICAgIEBpZiBicmVha3BvaW50LWlzLW1lZGlhKCR2YWx1ZSkge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMSkpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgbnRoKCRxdWVyeSwgMikpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBJZiBpdCdzIG5vdCBhIHNpbmdsZSBmZWF0dXJlLCB3ZSdyZSBqdXN0IGdvaW5nIHRvIGFzc3VtZSBpdCdzIGEgcHJvcGVyIHN0cmluZy92YWx1ZSBwYWlyLCBhbmQgcm9sbCB3aXRoIGl0LlxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZmVhdHVyZS1ob2xkZXI6IGFwcGVuZCgkdmFsdWUsICRudW1iZXIsIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG5cbiAgICB9XG4gICAgLy8gSWYgdGhleSdyZSBib3RoIG51bWJlcnMsIHdlIGFzc3VtZSBpdCdzIGEgZG91YmxlIGFuZCByb2xsIHdpdGggdGhhdFxuICAgIEBlbHNlIGlmICh0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSAnbnVtYmVyJyBhbmQgdHlwZS1vZihudGgoJHF1ZXJ5LCAyKSkgPT0gJ251bWJlcicpIHtcbiAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgIH1cbiAgICAvLyBJZiB0aGV5J3JlIGJvdGggc3RyaW5ncyBhbmQgbmVpdGhlciBhcmUgc2luZ2xlcywgd2Ugcm9sbCB3aXRoIHRoYXQuXG4gICAgQGVsc2UgaWYgKHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSA9PSAnc3RyaW5nJykge1xuICAgICAgQGlmIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDIpKSB7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDEpLCBudGgoJHF1ZXJ5LCAyKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyLCBjb21tYSk7XG4gICAgICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHtcbiAgICAvLyBJZiB3ZSd2ZSBnb3QgdGhyZWUgaXRlbXMgYW5kIG5vbmUgaXMgYSBsaXN0LCB3ZSBjaGVjayB0byBzZWVcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgIT0gJ2xpc3QnIGFuZCB0eXBlLW9mKG50aCgkcXVlcnksIDIpKSAhPSAnbGlzdCcgYW5kIHR5cGUtb2YobnRoKCRxdWVyeSwgMykpICE9ICdsaXN0JyB7XG4gICAgICAvLyBJZiBub25lIG9mIHRoZSBpdGVtcyBhcmUgc2luZ2xlIHN0cmluZyB2YWx1ZXMgYW5kIG5vbmUgb2YgdGhlIHZhbHVlcyBhcmUgbWVkaWEgdmFsdWVzLCB3ZSdyZSBnb29kLlxuICAgICAgQGlmIChub3QgYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKG50aCgkcXVlcnksIDEpKSBhbmQgbm90IGJyZWFrcG9pbnQtc2luZ2xlLXN0cmluZyhudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LXNpbmdsZS1zdHJpbmcobnRoKCRxdWVyeSwgMykpKSBhbmQgICgobm90IGJyZWFrcG9pbnQtaXMtbWVkaWEobnRoKCRxdWVyeSwgMSkpIGFuZCBub3QgYnJlYWtwb2ludC1pcy1tZWRpYShudGgoJHF1ZXJ5LCAyKSkgYW5kIG5vdCBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDMpKSkpIHtcbiAgICAgICAgJGZlYXR1cmUtaG9sZGVyOiBhcHBlbmQobnRoKCRxdWVyeSwgMSksIG50aCgkcXVlcnksIDIpLCBzcGFjZSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKCRmZWF0dXJlLWhvbGRlciwgbnRoKCRxdWVyeSwgMyksIHNwYWNlKTtcbiAgICAgICAgJHF1ZXJ5LWhvbGRlcjogYXBwZW5kKCRxdWVyeS1ob2xkZXIsICRmZWF0dXJlLWhvbGRlciwgY29tbWEpO1xuICAgICAgICBAcmV0dXJuICRxdWVyeS1ob2xkZXI7XG4gICAgICB9XG4gICAgICAvLyBsZXQncyBjaGVjayB0byBzZWUgaWYgdGhlIGZpcnN0IGl0ZW0gaXMgYSBtZWRpYSB0eXBlXG4gICAgICBAZWxzZSBpZiBicmVha3BvaW50LWlzLW1lZGlhKG50aCgkcXVlcnksIDEpKSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6IGFwcGVuZCgkcXVlcnktaG9sZGVyLCBudGgoJHF1ZXJ5LCAxKSk7XG4gICAgICAgICRmZWF0dXJlLWhvbGRlcjogYXBwZW5kKG50aCgkcXVlcnksIDIpLCBudGgoJHF1ZXJ5LCAzKSwgc3BhY2UpO1xuICAgICAgICAkcXVlcnktaG9sZGVyOiBhcHBlbmQoJHF1ZXJ5LWhvbGRlciwgJGZlYXR1cmUtaG9sZGVyKTtcbiAgICAgICAgQHJldHVybiAkcXVlcnktaG9sZGVyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgaXRlbSwgb3IgaWYgaXQncyBub3QgYSBzcGVjaWFsIGNhc2UgZG91YmxlIG9yIHRyaXBsZSwgd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHF1ZXJ5LlxuICBAcmV0dXJuICRxdWVyeTtcbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwic2luZ2xlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2Utc2luZ2xlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIElmIGl0J3MgYSBzaW5nbGUgZmVhdHVyZSB0aGF0IGNhbiBzdGFuZCBhbG9uZSwgd2UgbGV0IGl0XG4gIEBpZiAoYnJlYWtwb2ludC1zaW5nbGUtc3RyaW5nKCRmZWF0dXJlKSkge1xuICAgICRwYXJzZWQ6ICRmZWF0dXJlO1xuICAgIC8vIFNldCBDb250ZXh0XG4gICAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICRmZWF0dXJlKTtcbiAgfVxuICAvLyBJZiBpdCdzIG5vdCBhIHN0YW5kIGFsb25lIGZlYXR1cmUsIHdlIHBhc3MgaXQgb2ZmIHRvIHRoZSBkZWZhdWx0IGhhbmRsZXIuXG4gIEBlbHNlIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpO1xuICB9XG5cbiAgQHJldHVybiAkbGVhZGVyICsgJygnICsgJHBhcnNlZCArICcpJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRlZmF1bHQoJGZlYXR1cmUpIHtcbiAgJGRlZmF1bHQ6IGJyZWFrcG9pbnQtZ2V0KCdkZWZhdWx0IGZlYXR1cmUnKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZGVmYXVsdCwgJGZlYXR1cmUpO1xuXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIGFuZCAodHlwZS1vZigkZmVhdHVyZSkgPT0gJ251bWJlcicpIHtcbiAgICBAcmV0dXJuICcjeyRkZWZhdWx0fTogI3ticmVha3BvaW50LXRvLWJhc2UtZW0oJGZlYXR1cmUpfSc7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJyN7JGRlZmF1bHR9OiAjeyRmZWF0dXJlfSc7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0IFBpZWNlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHQtcGFpclwiO1xuQGltcG9ydCBcImRvdWJsZS9kb3VibGUtc3RyaW5nXCI7XG5AaW1wb3J0IFwiZG91YmxlL2RlZmF1bHRcIjtcblxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlKCRmZWF0dXJlLCAkZW1wdHktbWVkaWEsICRmaXJzdCkge1xuICAkcGFyc2VkOiAnJztcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gICRmaXJzdDogbnRoKCRmZWF0dXJlLCAxKTtcbiAgJHNlY29uZDogbnRoKCRmZWF0dXJlLCAyKTtcblxuICAvLyBJZiB3ZSd2ZSBnb3QgdHdvIG51bWJlcnMsIHdlIGtub3cgd2UgbmVlZCB0byB1c2UgdGhlIGRlZmF1bHQgcGFpciBiZWNhdXNlIHRoZXJlIGFyZSBubyBtZWRpYSBxdWVyaWVzIHRoYXQgaGFzIGEgbWVkaWEgZmVhdHVyZSB0aGF0IGlzIGEgbnVtYmVyXG4gIEBpZiB0eXBlLW9mKCRmaXJzdCkgPT0gJ251bWJlcicgYW5kIHR5cGUtb2YoJHNlY29uZCkgPT0gJ251bWJlcicge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZGVmYXVsdC1wYWlyKCRmaXJzdCwgJHNlY29uZCk7XG4gIH1cbiAgLy8gSWYgdGhleSBhcmUgYm90aCBzdHJpbmdzLCB3ZSBzZW5kIGl0IHRocm91Z2ggdGhlIHN0cmluZyBwYXJzZXJcbiAgQGVsc2UgaWYgdHlwZS1vZigkZmlyc3QpID09ICdzdHJpbmcnIGFuZCB0eXBlLW9mKCRzZWNvbmQpID09ICdzdHJpbmcnIHtcbiAgICAkcGFyc2VkOiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuICAvLyBJZiBpdCdzIGEgc3RyaW5nL251bWJlciBwYWlyLCB3ZSBwYXJzZSBpdCBhcyBhIG5vcm1hbCBkb3VibGVcbiAgQGVsc2Uge1xuICAgICRwYXJzZWQ6IGJyZWFrcG9pbnQtcGFyc2UtZG91YmxlLWRlZmF1bHQoJGZpcnN0LCAkc2Vjb25kKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxlYWRlciArICRwYXJzZWQ7XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS1kZWZhdWx0LXBhaXIoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRkZWZhdWx0OiBicmVha3BvaW50LWdldCgnZGVmYXVsdCBwYWlyJyk7XG4gICRtaW46ICcnO1xuICAkbWF4OiAnJztcblxuICAvLyBTb3J0IGludG8gbWluIGFuZCBtYXhcbiAgJG1pbjogbWluKCRmaXJzdCwgJHNlY29uZCk7XG4gICRtYXg6IG1heCgkZmlyc3QsICRzZWNvbmQpO1xuXG4gIC8vIFNldCBDb250ZXh0XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1pbi0jeyRkZWZhdWx0fSwgJG1pbik7XG4gICRjb250ZXh0LXNldHRlcjogcHJpdmF0ZS1icmVha3BvaW50LXNldC1jb250ZXh0KG1heC0jeyRkZWZhdWx0fSwgJG1heCk7XG5cbiAgLy8gTWFrZSB0aGVtIEVNcyBpZiBuZWVkIGJlXG4gIEBpZiAoYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpID09IHRydWUpIHtcbiAgICAkbWluOiBicmVha3BvaW50LXRvLWJhc2UtZW0oJG1pbik7XG4gICAgJG1heDogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtYXgpO1xuICB9XG5cbiAgQHJldHVybiAnKG1pbi0jeyRkZWZhdWx0fTogI3skbWlufSkgYW5kIChtYXgtI3skZGVmYXVsdH06ICN7JG1heH0pJztcbn1cbiIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1zdHJpbmcoJGZpcnN0LCAkc2Vjb25kKSB7XG4gICRmZWF0dXJlOiAnJztcbiAgJHZhbHVlOiAnJztcblxuICAvLyBUZXN0IHRvIHNlZSB3aGljaCBpcyB0aGUgZmVhdHVyZSBhbmQgd2hpY2ggaXMgdGhlIHZhbHVlXG4gIEBpZiAoYnJlYWtwb2ludC1zdHJpbmctdmFsdWUoJGZpcnN0KSA9PSB0cnVlKSB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2UgaWYgKGJyZWFrcG9pbnQtc3RyaW5nLXZhbHVlKCRzZWNvbmQpID09IHRydWUpIHtcbiAgICAkZmVhdHVyZTogJHNlY29uZDtcbiAgICAkdmFsdWU6ICRmaXJzdDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJOZWl0aGVyICN7JGZpcnN0fSBub3IgI3skc2Vjb25kfSBpcyBhIHZhbGlkIG1lZGlhIHF1ZXJ5IG5hbWUuXCI7XG4gIH1cblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dCgkZmVhdHVyZSwgJHZhbHVlKTtcblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknO1xufSIsIkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLWRvdWJsZS1kZWZhdWx0KCRmaXJzdCwgJHNlY29uZCkge1xuICAkZmVhdHVyZTogJyc7XG4gICR2YWx1ZTogJyc7XG5cbiAgQGlmIHR5cGUtb2YoJGZpcnN0KSA9PSAnc3RyaW5nJyB7XG4gICAgJGZlYXR1cmU6ICRmaXJzdDtcbiAgICAkdmFsdWU6ICRzZWNvbmQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRmZWF0dXJlOiAkc2Vjb25kO1xuICAgICR2YWx1ZTogJGZpcnN0O1xuICB9XG5cbiAgLy8gU2V0IENvbnRleHRcbiAgJGNvbnRleHQtc2V0dGVyOiBwcml2YXRlLWJyZWFrcG9pbnQtc2V0LWNvbnRleHQoJGZlYXR1cmUsICR2YWx1ZSk7XG5cbiAgQGlmIChicmVha3BvaW50LWdldCgndG8gZW1zJykgPT0gdHJ1ZSkge1xuICAgICR2YWx1ZTogYnJlYWtwb2ludC10by1iYXNlLWVtKCR2YWx1ZSk7XG4gIH1cblxuICBAcmV0dXJuICcoI3skZmVhdHVyZX06ICN7JHZhbHVlfSknXG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydCBQaWVjZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRyaXBsZS9kZWZhdWx0XCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LXBhcnNlLXRyaXBsZSgkZmVhdHVyZSwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJHBhcnNlZDogJyc7XG4gICRsZWFkZXI6ICcnO1xuXG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIC8vIHNlcGFyYXRlIHRoZSBzdHJpbmcgZmVhdHVyZXMgZnJvbSB0aGUgdmFsdWUgbnVtYmVyc1xuICAkc3RyaW5nOiBudWxsO1xuICAkbnVtYmVyczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkZmVhdHVyZSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbCkgPT0gc3RyaW5nIHtcbiAgICAgICRzdHJpbmc6ICR2YWw7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRudW1iZXJzKSA9PSAnbnVsbCcge1xuICAgICAgICAkbnVtYmVyczogJHZhbDtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJG51bWJlcnM6IGFwcGVuZCgkbnVtYmVycywgJHZhbCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJHBhcnNlZDogYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkc3RyaW5nLCBudGgoJG51bWJlcnMsIDEpLCBudGgoJG51bWJlcnMsIDIpKTtcblxuICBAcmV0dXJuICRsZWFkZXIgKyAkcGFyc2VkO1xuXG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1wYXJzZS10cmlwbGUtZGVmYXVsdCgkZmVhdHVyZSwgJGZpcnN0LCAkc2Vjb25kKSB7XG5cbiAgLy8gU29ydCBpbnRvIG1pbiBhbmQgbWF4XG4gICRtaW46IG1pbigkZmlyc3QsICRzZWNvbmQpO1xuICAkbWF4OiBtYXgoJGZpcnN0LCAkc2Vjb25kKTtcblxuICAvLyBTZXQgQ29udGV4dFxuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtaW4tI3skZmVhdHVyZX0sICRtaW4pO1xuICAkY29udGV4dC1zZXR0ZXI6IHByaXZhdGUtYnJlYWtwb2ludC1zZXQtY29udGV4dChtYXgtI3skZmVhdHVyZX0sICRtYXgpO1xuXG4gIC8vIE1ha2UgdGhlbSBFTXMgaWYgbmVlZCBiZVxuICBAaWYgKGJyZWFrcG9pbnQtZ2V0KCd0byBlbXMnKSA9PSB0cnVlKSB7XG4gICAgJG1pbjogYnJlYWtwb2ludC10by1iYXNlLWVtKCRtaW4pO1xuICAgICRtYXg6IGJyZWFrcG9pbnQtdG8tYmFzZS1lbSgkbWF4KTtcbiAgfVxuXG4gIEByZXR1cm4gJyhtaW4tI3skZmVhdHVyZX06ICN7JG1pbn0pIGFuZCAobWF4LSN7JGZlYXR1cmV9OiAjeyRtYXh9KSc7XG59XG4iLCJAaW1wb3J0IFwicmVzb2x1dGlvbi9yZXNvbHV0aW9uXCI7XG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWJ1aWxkLXJlc29sdXRpb24oJHF1ZXJ5LXByaW50LCAkcXVlcnktcmVzb2x1dGlvbiwgJGVtcHR5LW1lZGlhLCAkZmlyc3QpIHtcbiAgJGxlYWRlcjogJyc7XG4gIC8vIElmIHdlJ3JlIGZvcmNpbmdcbiAgQGlmIG5vdCAoJGVtcHR5LW1lZGlhKSBvciBub3QgKCRmaXJzdCkge1xuICAgICRsZWFkZXI6ICdhbmQgJztcbiAgfVxuXG4gIEBpZiBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykgYW5kICRxdWVyeS1yZXNvbHV0aW9uIHtcbiAgICAkcmVzb2x1dGlvbnM6IGJyZWFrcG9pbnQtbWFrZS1yZXNvbHV0aW9ucygkcXVlcnktcmVzb2x1dGlvbik7XG4gICAgJGxlbmd0aDogbGVuZ3RoKCRyZXNvbHV0aW9ucyk7XG4gICAgJHF1ZXJ5LWhvbGRlcjogJyc7XG5cbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICAgJHF1ZXJ5OiAnI3skcXVlcnktcHJpbnR9ICN7JGxlYWRlcn0je250aCgkcmVzb2x1dGlvbnMsICRpKX0nO1xuICAgICAgQGlmICRpID09IDEge1xuICAgICAgICAkcXVlcnktaG9sZGVyOiAkcXVlcnk7XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRxdWVyeS1ob2xkZXI6ICcjeyRxdWVyeS1ob2xkZXJ9LCAjeyRxdWVyeX0nO1xuICAgICAgfVxuICAgIH1cblxuICAgIEByZXR1cm4gJHF1ZXJ5LWhvbGRlcjtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gUmV0dXJuIHdpdGggYXR0YWNoZWQgcmVzb2x1dGlvblxuICAgIEByZXR1cm4gJHF1ZXJ5LXByaW50O1xuICB9XG59XG4iLCJAZnVuY3Rpb24gYnJlYWtwb2ludC1tYWtlLXJlc29sdXRpb25zKCRyZXNvbHV0aW9uKSB7XG4gICRsZW5ndGg6IGxlbmd0aCgkcmVzb2x1dGlvbik7XG5cbiAgJG91dHB1dDogKCk7XG5cbiAgQGlmICRsZW5ndGggPT0gMiB7XG4gICAgJGZlYXR1cmU6ICcnO1xuICAgICR2YWx1ZTogJyc7XG5cbiAgICAvLyBGaW5kIHdoaWNoIGlzIG51bWJlclxuICAgIEBpZiB0eXBlLW9mKG50aCgkcmVzb2x1dGlvbiwgMSkpID09ICdudW1iZXInIHtcbiAgICAgICR2YWx1ZTogbnRoKCRyZXNvbHV0aW9uLCAxKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHZhbHVlOiBudGgoJHJlc29sdXRpb24sIDIpO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSBtaW4vbWF4L3N0YW5kYXJkXG4gICAgQGlmIGluZGV4KCRyZXNvbHV0aW9uLCAnbWluLXJlc29sdXRpb24nKSB7XG4gICAgICAkZmVhdHVyZTogJ21pbi0nO1xuICAgIH1cbiAgICBAZWxzZSBpZiBpbmRleCgkcmVzb2x1dGlvbiwgJ21heC1yZXNvbHV0aW9uJykge1xuICAgICAgJGZlYXR1cmU6ICdtYXgtJztcbiAgICB9XG5cbiAgICAkc3RhbmRhcmQ6ICcoI3skZmVhdHVyZX1yZXNvbHV0aW9uOiAjeyR2YWx1ZX0pJztcblxuICAgIC8vIElmIHdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggZHBweCxcbiAgICBAaWYgdW5pdCgkdmFsdWUpICE9ICdkcHB4JyB7XG4gICAgICAkYmFzZTogOTZkcGk7XG4gICAgICBAaWYgdW5pdCgkdmFsdWUpID09ICdkcGNtJyB7XG4gICAgICAgICRiYXNlOiAyNDMuODRkcGNtO1xuICAgICAgfVxuICAgICAgLy8gV3JpdGUgb3V0IGZlYXR1cmUgdGVzdHNcbiAgICAgICR3ZWJraXQ6ICcnO1xuICAgICAgJG1vejogJyc7XG4gICAgICAkd2Via2l0OiAnKC13ZWJraXQtI3skZmVhdHVyZX1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAkbW96OiAnKCN7JGZlYXR1cmV9LW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86ICN7JHZhbHVlIC8gJGJhc2V9KSc7XG4gICAgICAvLyBBcHBlbmQgdG8gb3V0cHV0XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHN0YW5kYXJkLCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJHdlYmtpdCwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRtb3osIHNwYWNlKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJHdlYmtpdDogJyc7XG4gICAgICAkbW96OiAnJztcbiAgICAgICR3ZWJraXQ6ICcoLXdlYmtpdC0jeyRmZWF0dXJlfWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRtb3o6ICcoI3skZmVhdHVyZX0tbW96LWRldmljZS1waXhlbC1yYXRpbzogI3skdmFsdWUgLyAxZHBweH0pJztcbiAgICAgICRmYWxsYmFjazogJygjeyRmZWF0dXJlfXJlc29sdXRpb246ICN7JHZhbHVlIC8gMWRwcHggKiA5NmRwaX0pJztcbiAgICAgIC8vIEFwcGVuZCB0byBvdXRwdXRcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkc3RhbmRhcmQsIHNwYWNlKTtcbiAgICAgICRvdXRwdXQ6IGFwcGVuZCgkb3V0cHV0LCAkd2Via2l0LCBzcGFjZSk7XG4gICAgICAkb3V0cHV0OiBhcHBlbmQoJG91dHB1dCwgJG1veiwgc3BhY2UpO1xuICAgICAgJG91dHB1dDogYXBwZW5kKCRvdXRwdXQsICRmYWxsYmFjaywgc3BhY2UpO1xuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuIiwiQGZ1bmN0aW9uIGJyZWFrcG9pbnQtbm8tcXVlcnkoJHF1ZXJ5KSB7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gJ2xpc3QnIHtcbiAgICAka2V5d29yZDogbnRoKCRxdWVyeSwgMSk7XG5cbiAgICBAaWYgdHlwZS1vZigka2V5d29yZCkgPT0gJ3N0cmluZycgYW5kICgka2V5d29yZCA9PSAnbm8tcXVlcnknIG9yICRrZXl3b3JkID09ICdubyBxdWVyeScgb3IgJGtleXdvcmQgPT0gJ2ZhbGxiYWNrJykge1xuICAgICAgQHJldHVybiBudGgoJHF1ZXJ5LCAyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRGVmYXVsdCB0aGUgQnJlYWtwb2ludHMgdmFyaWFibGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJGJyZWFrcG9pbnRzOiAoKSAhZGVmYXVsdDtcbiRCUkVBS1BPSU5UUzogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVzcG9uZC10byBBUEkgTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHJlc3BvbmQtdG8oJGNvbnRleHQsICRuby1xdWVyeTogZmFsc2UpIHtcbiAgQGlmIGxlbmd0aCgkYnJlYWtwb2ludHMpID4gMCBhbmQgbGVuZ3RoKCRCUkVBS1BPSU5UUykgPT0gMCB7XG4gICAgQHdhcm4gXCJJbiBvcmRlciB0byBhdm9pZCB2YXJpYWJsZSBuYW1lc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gYWRkIGJyZWFrcG9pbnRzIGZvciByZXNwb25kLXRvLiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50czogYWRkLWJyZWFrcG9pbnQoKWAgdG8gYEBpbmNsdWRlIGFkZC1icmVha3BvaW50KClgLiBUaGUgYGFkZC1icmVha3BvaW50KClgIGZ1bmN0aW9uIHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiO1xuICAgICRCUkVBS1BPSU5UUzogJGJyZWFrcG9pbnRzICFnbG9iYWw7XG4gICAgJGJyZWFrcG9pbnRzOiAoKSAhZ2xvYmFsO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJEJSRUFLUE9JTlRTKSAhPSAnbWFwJyB7XG4gICAgLy8gSnVzdCBpbiBjYXNlIHNvbWVvbmUgd3JpdGVzIGdpYmJlcmlzaCB0byB0aGUgJGJyZWFrcG9pbnRzIHZhcmlhYmxlLlxuICAgIEB3YXJuIFwiWW91ciBicmVha3BvaW50cyBhcmVuJ3QgYSBtYXAhIGByZXNwb25kLXRvYCBleHBlY3RzIGEgbWFwLiBQbGVhc2UgY2hlY2sgdGhlIHZhbHVlIG9mICRCUkVBS1BPSU5UUyB2YXJpYWJsZS5cIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSBpZiBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRjb250ZXh0KSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXAtZ2V0KCRCUkVBS1BPSU5UUywgJGNvbnRleHQpLCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiBub3QgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkY29udGV4dCkge1xuICAgIEB3YXJuIFwiYCN7JGNvbnRleHR9YCBpc24ndCBhIGRlZmluZWQgYnJlYWtwb2ludCEgUGxlYXNlIGFkZCBpdCB1c2luZyBgJGJyZWFrcG9pbnRzOiBhZGQtYnJlYWtwb2ludChgI3skY29udGV4dH1gLCAkdmFsdWUpO2BcIjtcbiAgICBAY29udGVudDtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJZb3UgaGF2ZW4ndCBjcmVhdGVkIGFueSBicmVha3BvaW50cyB5ZXQhIE1ha2Ugc29tZSBhbHJlYWR5ISBgQGluY2x1ZGUgYWRkLWJyZWFrcG9pbnQoJG5hbWUsICRia3B0KWBcIjtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFkZCBCcmVha3BvaW50IHRvIEJyZWFrcG9pbnRzXG4vLyBUT0RPOiBSZW1vdmUgZnVuY3Rpb24gaW4gbmV4dCByZWxlYXNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBhZGQtYnJlYWtwb2ludCgkbmFtZSwgJGJrcHQsICRvdmVyd3JpdGU6IGZhbHNlKSB7XG4gICRvdXRwdXQ6ICgkbmFtZTogJGJrcHQpO1xuXG4gIEBpZiBsZW5ndGgoJGJyZWFrcG9pbnRzKSA9PSAwIHtcbiAgICBAcmV0dXJuICRvdXRwdXQ7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBhbmQgJG92ZXJ3cml0ZSAhPSB0cnVlIHtcbiAgICAgIEB3YXJuIFwiWW91IGFscmVhZHkgaGF2ZSBhIGJyZWFrcG9pbnQgbmFtZWQgYCN7JG5hbWV9YCwgcGxlYXNlIGNob29zZSBhbm90aGVyIGJyZWFrcG9pbnQgbmFtZSwgb3IgcGFzcyBpbiBgJG92ZXJ3cml0ZTogdHJ1ZWAgdG8gb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBicmVha3BvaW50LlwiO1xuICAgICAgQHJldHVybiAkYnJlYWtwb2ludHM7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgQHJldHVybiBtYXAtbWVyZ2UoJGJyZWFrcG9pbnRzLCAkb3V0cHV0KTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGFkZC1icmVha3BvaW50KCRuYW1lLCAkYmtwdCwgJG92ZXJ3cml0ZTogZmFsc2UpIHtcbiAgJG91dHB1dDogKCRuYW1lOiAkYmtwdCk7XG5cbiAgQGlmIGxlbmd0aCgkQlJFQUtQT0lOVFMpID09IDAge1xuICAgICRCUkVBS1BPSU5UUzogJG91dHB1dCAhZ2xvYmFsO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJEJSRUFLUE9JTlRTLCAkbmFtZSkgYW5kICRvdmVyd3JpdGUgIT0gdHJ1ZSB7XG4gICAgICBAd2FybiBcIllvdSBhbHJlYWR5IGhhdmUgYSBicmVha3BvaW50IG5hbWVkIGAjeyRuYW1lfWAsIHBsZWFzZSBjaG9vc2UgYW5vdGhlciBicmVha3BvaW50IG5hbWUsIG9yIHBhc3MgaW4gYCRvdmVyd3JpdGU6IHRydWVgIHRvIG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgYnJlYWtwb2ludC5cIjtcbiAgICAgICRCUkVBS1BPSU5UUzogJEJSRUFLUE9JTlRTICFnbG9iYWw7XG4gICAgfVxuICAgIEBlbHNlIGlmIG5vdCBtYXAtaGFzLWtleSgkQlJFQUtQT0lOVFMsICRuYW1lKSBvciAkb3ZlcndyaXRlID09IHRydWUge1xuICAgICAgJEJSRUFLUE9JTlRTOiBtYXAtbWVyZ2UoJEJSRUFLUE9JTlRTLCAkb3V0cHV0KSAhZ2xvYmFsO1xuICAgIH1cbiAgfVxufVxuXG5AZnVuY3Rpb24gZ2V0LWJyZWFrcG9pbnQoJG5hbWU6IGZhbHNlKSB7XG4gIEBpZiAkbmFtZSA9PSBmYWxzZSB7XG4gICAgQHJldHVybiAkQlJFQUtQT0lOVFM7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkQlJFQUtQT0lOVFMsICRuYW1lKTtcbiAgfVxufVxuIiwiQG1peGluIGxlZ2FjeS1zZXR0aW5ncy13YXJuaW5nIHtcbiAgJGxlZ2FjeVZhcnM6IChcbiAgICAnZGVmYXVsdC1tZWRpYSc6ICdkZWZhdWx0IG1lZGlhJyxcbiAgICAnZGVmYXVsdC1mZWF0dXJlJzogJ2RlZmF1bHQgZmVhdHVyZScsXG4gICAgJ2ZvcmNlLW1lZGlhLWFsbCc6ICdmb3JjZSBhbGwgbWVkaWEgdHlwZScsXG4gICAgJ3RvLWVtcyc6ICd0byBlbXMnLFxuICAgICdyZXNvbHV0aW9ucyc6ICd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLFxuICAgICduby1xdWVyaWVzJzogJ25vIHF1ZXJpZXMnLFxuICAgICduby1xdWVyeS1mYWxsYmFja3MnOiAnbm8gcXVlcnkgZmFsbGJhY2tzJyxcbiAgICAnYmFzZS1mb250LXNpemUnOiAnYmFzZSBmb250IHNpemUnLFxuICAgICdsZWdhY3ktc3ludGF4JzogJ2xlZ2FjeSBzeW50YXgnXG4gICk7XG5cbiAgQGVhY2ggJGxlZ2FjeSwgJG5ldyBpbiAkbGVnYWN5VmFycyB7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtJyArICRsZWdhY3kpIHtcbiAgICAgIEB3YXJuIFwiSW4gb3JkZXIgdG8gYXZvaWQgdmFyaWFibGUgbmFtc3BhY2UgY29sbGlzaW9ucywgd2UgaGF2ZSB1cGRhdGVkIHRoZSB3YXkgdG8gY2hhbmdlIHNldHRpbmdzIGZvciBCcmVha3BvaW50LiBQbGVhc2UgY2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgYCRicmVha3BvaW50LSN7JGxlZ2FjeX06IHt7c2V0dGluZ319YCB0byBgQGluY2x1ZGUgYnJlYWtwb2ludC1zZXQoJyN7JG5ld30nLCB7e3NldHRpbmd9fSlgLiBWYXJpYWJsZSBzZXR0aW5ncywgYXMgd2VsbCBhcyB0aGlzIHdhcm5pbmcgd2lsbCBiZSBkZXByZWNhdGVkIGluIGEgZnV0dXJlIHJlbGVhc2UuXCJcbiAgICB9XG4gIH07XG5cbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIC8vIEhhbmQgY29ycmVjdCBlYWNoIHNldHRpbmdcbiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtbWVkaWEnKSBhbmQgJGJyZWFrcG9pbnQtZGVmYXVsdC1tZWRpYSAhPSBicmVha3BvaW50LWdldCgnZGVmYXVsdCBtZWRpYScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBtZWRpYScsICRicmVha3BvaW50LWRlZmF1bHQtbWVkaWEpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWRlZmF1bHQtZmVhdHVyZScpIGFuZCAkYnJlYWtwb2ludC1kZWZhdWx0LWZlYXR1cmUgIT0gYnJlYWtwb2ludC1nZXQoJ2RlZmF1bHQgZmVhdHVyZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZGVmYXVsdCBmZWF0dXJlJywgJGJyZWFrcG9pbnQtZGVmYXVsdC1mZWF0dXJlKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwnKSBhbmQgJGJyZWFrcG9pbnQtZm9yY2UtbWVkaWEtYWxsICE9IGJyZWFrcG9pbnQtZ2V0KCdmb3JjZSBhbGwgbWVkaWEgdHlwZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnZm9yY2UgYWxsIG1lZGlhIHR5cGUnLCAkYnJlYWtwb2ludC1mb3JjZS1tZWRpYS1hbGwpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LXRvLWVtcycpIGFuZCAkYnJlYWtwb2ludC10by1lbXMgIT0gYnJlYWtwb2ludC1nZXQoJ3RvIGVtcycpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgndG8gZW1zJywgJGJyZWFrcG9pbnQtdG8tZW1zKTtcbiAgfVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygnYnJlYWtwb2ludC1yZXNvbHV0aW9ucycpIGFuZCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyAhPSBicmVha3BvaW50LWdldCgndHJhbnNmb3JtIHJlc29sdXRpb25zJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCd0cmFuc2Zvcm0gcmVzb2x1dGlvbnMnLCAkYnJlYWtwb2ludC1yZXNvbHV0aW9ucyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcmllcycpIGFuZCAkYnJlYWtwb2ludC1uby1xdWVyaWVzICE9IGJyZWFrcG9pbnQtZ2V0KCdubyBxdWVyaWVzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyaWVzJywgJGJyZWFrcG9pbnQtbm8tcXVlcmllcyk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbm8tcXVlcnktZmFsbGJhY2tzJykgYW5kICRicmVha3BvaW50LW5vLXF1ZXJ5LWZhbGxiYWNrcyAhPSBicmVha3BvaW50LWdldCgnbm8gcXVlcnkgZmFsbGJhY2tzJykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdubyBxdWVyeSBmYWxsYmFja3MnLCAkYnJlYWtwb2ludC1uby1xdWVyeS1mYWxsYmFja3MpO1xuICB9XG4gIEBpZiBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKCdicmVha3BvaW50LWJhc2UtZm9udC1zaXplJykgYW5kICRicmVha3BvaW50LWJhc2UtZm9udC1zaXplICE9IGJyZWFrcG9pbnQtZ2V0KCdiYXNlIGZvbnQgc2l6ZScpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50LXNldCgnYmFzZSBmb250IHNpemUnLCAkYnJlYWtwb2ludC1iYXNlLWZvbnQtc2l6ZSk7XG4gIH1cbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJ2JyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCcpIGFuZCAkYnJlYWtwb2ludC1sZWdhY3ktc3ludGF4ICE9IGJyZWFrcG9pbnQtZ2V0KCdsZWdhY3kgc3ludGF4Jykge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQtc2V0KCdsZWdhY3kgc3ludGF4JywgJGJyZWFrcG9pbnQtbGVnYWN5LXN5bnRheCk7XG4gIH1cbn0iLCIvLyBUeXBvZ3JhcGh5XG4kYmFzZS1mb250LXNpemUgICA6IDE2cHg7XG4kYmFzZS1saW5lLWhlaWdodCA6IDI0cHg7XG4kaGVhZGVyLWhlaWdodCAgICA6IDE2MHB4O1xuLy8gRm9udCBuYW1lcyAoZm9yIEBmb250LWZhY2UpXG4kY3Jpa2V5ICAgICAgICAgICA6IFwiQ3Jpa2V5IFNxdWF0XCI7XG4kY3Jpa2V5X3RhbGwgICAgICA6IFwiQ3Jpa2V5IFRhbGxcIjtcbiRqb25ueSAgICAgICAgICAgIDogXCJKb25ueSBRdWVzdCBDbGFzc2ljXCI7XG4kcm9ja3dlbGwgICAgICAgICA6IFwiUm9ra2l0dFwiO1xuJHB0c2FucyAgICAgICAgICAgOiBcIlBUIFNhbnNcIjtcbiRwdHNlcmlmICAgICAgICAgIDogXCJQVCBTZXJpZlwiO1xuJGZlbGFcdCAgICAgICAgICA6IFwiRmVsYSBQcm9cIjtcbiRtb25vc3BhY2UgICAgICAgIDogXCJDb3VyaWVyIE5ld1wiO1xuLy8gRmFsbGJhY2sgc3RhY2tzXG4kY3Jpa2V5X3N0YWNrOiAgICAgICAgKHN0YWNrICRjcmlrZXksICAgICBmYWxsYmFjayBcIidDb3VyaWVyIE5ldycsIENvdXJpZXIsICdMdWNpZGEgU2FucyBUeXBld3JpdGVyJywgJ0x1Y2lkYSBUeXBld3JpdGVyJywgbW9ub3NwYWNlXCIpO1xuJGNyaWtleV90YWxsX3N0YWNrOiAgIChzdGFjayAkY3Jpa2V5X3RhbGwsICBmYWxsYmFjayBcIidDb3VyaWVyIE5ldycsIENvdXJpZXIsICdMdWNpZGEgU2FucyBUeXBld3JpdGVyJywgJ0x1Y2lkYSBUeXBld3JpdGVyJywgbW9ub3NwYWNlXCIpO1xuJGpvbm55X3N0YWNrOiAgICAgICAgIChzdGFjayAkam9ubnksICAgICAgZmFsbGJhY2sgXCJSb2Nrd2VsbCwgJ0NvdXJpZXIgQm9sZCcsIENvdXJpZXIsIEdlb3JnaWEsIFRpbWVzLCAnVGltZXMgTmV3IFJvbWFuJywgc2VyaWZcIik7XG4kcm9ja3dlbGxfc3RhY2s6ICAgICAgKHN0YWNrICRyb2Nrd2VsbCwgICAgIGZhbGxiYWNrIFwiUm9ja3dlbGwsICdDb3VyaWVyIEJvbGQnLCBDb3VyaWVyLCBHZW9yZ2lhLCBUaW1lcywgJ1RpbWVzIE5ldyBSb21hbicsIHNlcmlmXCIpO1xuJHB0c2Fuc19zdGFjazogICAgICAgIChzdGFjayAkcHRzYW5zLCAgICAgZmFsbGJhY2sgXCJDYW5kYXJhLCBDYWxpYnJpLCBTZWdvZSwgJ1NlZ29lIFVJJywgT3B0aW1hLCBBcmlhbCwgc2Fucy1zZXJpZlwiKTtcbiRwdHNlcmlmX3N0YWNrOiAgICAgICAoc3RhY2sgJHB0c2VyaWYsICAgIGZhbGxiYWNrIFwiR2FyYW1vbmQsIEJhc2tlcnZpbGxlLCAnQmFza2VydmlsbGUgT2xkIEZhY2UnLCAnSG9lZmxlciBUZXh0JywgJ1RpbWVzIE5ldyBSb21hbicsIHNlcmlmXCIpO1xuJGZlbGFfc3RhY2s6XHRcdFx0XHRcdChzdGFjayAkZmVsYSwgICAgZmFsbGJhY2sgXCJDYW5kYXJhLCBDYWxpYnJpLCBTZWdvZSwgJ1NlZ29lIFVJJywgT3B0aW1hLCBBcmlhbCwgc2Fucy1zZXJpZlwiKTtcbiRtb25vc3BhY2Vfc3RhY2s6ICAgICAoc3RhY2sgJG1vbm9zcGFjZSwgICAgZmFsbGJhY2sgXCInQ291cmllciBOZXcnLCBDb3VyaWVyLCAnTHVjaWRhIFNhbnMgVHlwZXdyaXRlcicsICdMdWNpZGEgVHlwZXdyaXRlcicsIG1vbm9zcGFjZVwiKTtcblxuXG4vLyBQYXRoc1xuJGltYWdlc19kaXI6ICAgICAgXCIvYXNzZXRzL2ltYWdlcy9kZXNpZ24vXCI7XG4kZm9udHNfZGlyOiAgICAgICBcIi9hc3NldHMvZm9udHMvXCI7XG5cbi8vIFdvcmtpbmcgaW4gZW1zIGlzIGFubm95aW5nLiBUaGluayBpbiBwaXhlbHMgYnkgdXNpbmcgdGhpcyBoYW5keSBmdW5jdGlvbiwgZW1DYWxjKCNweClcbkBmdW5jdGlvbiBlbSgkcHhXaWR0aCkge1xuICBAcmV0dXJuICRweFdpZHRoIC8gJGJhc2UtZm9udC1zaXplICogMWVtO1xufVxuXG5cbi8qIFN1c3kgZ3JpZCAtIGh0dHA6Ly9zdXN5LnJlYWR0aGVkb2NzLm9yZy9lbi8gKi9cbiRzdXN5OiAoXG4gIC8vIHRoZSBiYXNpY3NcbiAgbWF0aDogZmx1aWQsXG4gIGNvbHVtbnM6IDgsXG4gIGd1dHRlcnM6IGVtKDE2cHgpIC8gZW0oMTYwcHgpLFxuICBjb2x1bW4td2lkdGg6IGVtKDE2MHB4KSxcbik7XG5cblxuLyogQnJlYWtwb2ludHMgLSBodHRwOi8vYnJlYWtwb2ludC1zYXNzLmNvbS8gKi9cbiRtb2JpbGUgICAgICAgICAgICAgOiBtYXgtd2lkdGggMzIwcHg7XG4kdGFibGV0ICAgICAgICAgICAgIDogKG1pbi13aWR0aCAzMjFweCkgKG1heC13aWR0aCA4ODhweCk7ICAgIC8vIHdhcyA3NjhcbiRtb2JpbGVfYW5kX3RhYmxldCAgOiBtYXgtd2lkdGggODg4cHg7XG4kZGVza3RvcCAgICAgICAgICAgIDogbWluLXdpZHRoIDg4OXB4OyAgICAgICAgICAgICAgLy8gd2FzIDc2OVxuJHByb3Blcl9kZXNrdG9wICAgICA6IG1pbi13aWR0aCAxMjAwcHg7XG4kcmV0aW5hICAgICAgICAgICA6ICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLXJlc29sdXRpb246IDJkcHB4KTsgLy8gPSAxOTJkcGlcblxuLy8gQ29tcGFzcyBDU1Mgb3V0cHV0IHNldHRpbmdzXG4kREVCVUc6IHRydWU7XG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogdHJ1ZTtcbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0OiB0cnVlO1xuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYTogdHJ1ZTtcbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0OiB0cnVlO1xuIiwiLy8gTUlYSU5TXG5cbi8vIEFwcGx5IHZlbmRvciBwcmVmaXhlcyB0byBhIHByb3BlcnR5XG5AbWl4aW4gdmVuZG9ycHJvcCgkcHJvcG5hbWUsICRwcm9wdmFsdWUpe1xuICAtd2Via2l0LSN7JHByb3BuYW1lfTogI3skcHJvcHZhbHVlfTtcbiAgLW1vei0jeyRwcm9wbmFtZX06ICN7JHByb3B2YWx1ZX07XG4gIC1tcy0jeyRwcm9wbmFtZX06ICN7JHByb3B2YWx1ZX07XG4gIC1vLSN7JHByb3BuYW1lfTogI3skcHJvcHZhbHVlfTtcbiAgI3skcHJvcG5hbWV9OiAjeyRwcm9wdmFsdWV9O1xufVxuLy8gQXBwbHkgdmVuZG9yIHByZWZpeGVzIHRvIGEgcHJvcGVydHkgdmFsdWVcbkBtaXhpbiB2ZW5kb3J2YWx1ZSgkcHJvcG5hbWUsICRwcm9wdmFsdWUpe1xuICAjeyRwcm9wbmFtZX06IC13ZWJraXQtI3skcHJvcHZhbHVlfTtcbiAgI3skcHJvcG5hbWV9OiAtbW96LSN7JHByb3B2YWx1ZX07XG4gICN7JHByb3BuYW1lfTogLW1zLSN7JHByb3B2YWx1ZX07XG4gICN7JHByb3BuYW1lfTogLW8tI3skcHJvcHZhbHVlfTtcbiAgI3skcHJvcG5hbWV9OiAjeyRwcm9wdmFsdWV9O1xufVxuXG4vLyBBbnRpYWxpYXMgdGV4dFxuQG1peGluIHNtb290aCgkc3RhdGU6IHRydWUpe1xuXHRAaWYgJHN0YXRlID09IHRydWUge1xuXHRcdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHRcdC1tb3otZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHRcdC1tcy1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG5cdFx0Zm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHR9XG5cdEBlbHNle1xuXHRcdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IHN1YnBpeGVsLWFudGlhbGlhc2VkO1xuXHRcdC1tb3otZm9udC1zbW9vdGhpbmc6IHN1YnBpeGVsLWFudGlhbGlhc2VkO1xuXHRcdC1tcy1mb250LXNtb290aGluZzogc3VicGl4ZWwtYW50aWFsaWFzZWQ7XG5cdFx0Zm9udC1zbW9vdGhpbmc6IHN1YnBpeGVsLWFudGlhbGlhc2VkO1xuXHR9XG59XG5cbi8vIDo6c2VsZWN0aW9uXG4kcHJlZml4ZXM6IChcIi1tb3otXCIsIFwiXCIpO1xuQG1peGluIHNlbGVjdGlvbigkY29sb3IsICRiYWNrZ3JvdW5kKSB7XG4gICAgQGVhY2ggJHByZWZpeCBpbiAkcHJlZml4ZXMge1xuICAgICAgICAmOjojeyRwcmVmaXh9c2VsZWN0aW9uIHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3IgIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vLyBTVkcgaGVscGVyXG5AZnVuY3Rpb24gc3ZnaWZ5KCRzdmcpIHtcbiAgQHJldHVybiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsJyArIGJhc2U2NGVuY29kZSgkc3ZnKSk7XG59XG5cbi8vIENsZWFyZml4XG5AbWl4aW4gY2xlYXJlcigpIHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbn1cblxuLy9cbkBtaXhpbiBtbS1oZWFkaW5nKCRjb2xvdXI6ICRtbS1waW5rKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRjb2xvdXI7XG4gIGJveC1zaGFkb3c6ICRiYXNlLWZvbnQtc2l6ZS8yIDAgMCAkY29sb3VyLCAtKCRiYXNlLWZvbnQtc2l6ZS8yKSAwIDAgJGNvbG91cjtcbiAgLy8gQGluY2x1ZGUgdmVuZG9ycHJvcChcImJhY2tmYWNlLXZpc2liaWxpdHlcIiwgXCJoaWRkZW5cIik7IC8vIHRoaXMgaXMgd2VpcmQuIGFkZGluZyBpdCBtYWtlcyBqYWdnaWVzIGdvIGF3YXkgb24gY2hyb21lIGJ1dCBhZGRzIHRoZW0gb24gaW9zXG59XG5cblxuLy8gU3RyaXAgdW5pdHMgZnVuY3Rpb25cbkBmdW5jdGlvbiBzdHJpcC11bml0cygkbnVtYmVyKSB7XG4gIEByZXR1cm4gJG51bWJlciAvICgkbnVtYmVyICogMCArIDEpO1xufVxuXG4vLyAgUmV0aW5hIGJhY2tncm91bmcgaW1hZ2VcbkBtaXhpbiBiYWNrZ3JvdW5kLXJldGluYSgkbm9ybWFsLCAkcmV0aW5hKSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2VVcmwoJG5vcm1hbCk7XG4gICAgLy8gMS41ZHBweCA9IDE0NGRwaVxuICAgIEBtZWRpYSAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDMvMiksIChtaW4tLW1vei1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLWRldmljZS1waXhlbC1yYXRpbzogMiksIChtaW4tcmVzb2x1dGlvbjogMS41ZHBweCkge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZVVybCgkcmV0aW5hKTtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAoaW1hZ2Utd2lkdGgoJHJldGluYSkgLyAyKSAoaW1hZ2UtaGVpZ2h0KCRyZXRpbmEpIC8gMik7XG4gICAgfVxufVxuXG4vLyBTdW0gb2YgdmFsdWVzIGluIGEgbGlzdFxuQGZ1bmN0aW9uIHN1bSgkbGlzdCwgJGZvcmNlOiBmYWxzZSkge1xuICAkcmVzdWx0OiAwO1xuICBAZWFjaCAkaXRlbSBpbiAkbGlzdCB7XG4gICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciB7XG4gICAgICBAaWYgJGZvcmNlIGFuZCB1bml0KCRpdGVtKSB7XG4gICAgICAgICRpdGVtOiAkaXRlbSAvICgkaXRlbSAqIDAgKyAxKTtcbiAgICAgIH1cbiAgICAgIEBpZiB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgJGl0ZW07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuLy8gQ29udmVydCBzcGFjZSBzZXBlcmF0ZWQgc3RyaW5nIG9mIHZhbHVlcyB0byBlbXNcbkBmdW5jdGlvbiBwb3NpdGlvbl90b19lbXMoJGxpc3QpIHtcblx0JHJlc3VsdDogKCk7XG5cdEBlYWNoICRpdGVtIGluICRsaXN0IHtcblx0ICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIge1xuXHQgICAgXHRAaWYgJGl0ZW0gPT0gMCB7XG5cdCAgICBcdFx0JHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsIDApO1xuXHQgICAgXHR9IEBlbHNlIHtcblx0ICAgIFx0XHQkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgZW0oJGl0ZW0pKTtcblx0ICAgIFx0fVxuXHQgICAgfVxuXHR9XG5cdEByZXR1cm4gJHJlc3VsdDtcbn1cblxuLy8gRm9udCBmYW1pbHlcbkBtaXhpbiBkZWZpbmVmb250cygkZm9udCwgJGZvbnRmYWNlX3NpemU6IGZhbHNlLCAkZm9udGZhY2VfZGVmOiB0cnVlKSB7XG5cdCRmYWxsYmFjazogZmluZC12YWx1ZSgkZm9udCwgZmFsbGJhY2spO1xuXHQkc3RhY2s6IGZpbmQtdmFsdWUoJGZvbnQsIHN0YWNrKTtcblx0Zm9udC1mYW1pbHk6IHVucXVvdGUoJGZhbGxiYWNrKTtcblx0QGlmICRmb250ZmFjZV9kZWYge1xuXHRcdGh0bWwuZm9udGZhY2UgJiB7XG5cdFx0ICBmb250LWZhbWlseTogdW5xdW90ZSgkc3RhY2spO1xuXHRcdFx0QGlmICRmb250ZmFjZV9zaXplIHtcblx0XHRcdFx0Zm9udC1zaXplOiAkZm9udGZhY2Vfc2l6ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLy8gRmluZCB2YWx1ZSBpbiBsaXN0XG5AZnVuY3Rpb24gZmluZC12YWx1ZSgkbGlzdCwgJGtleSkge1xuICAgIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICAgICAgQGlmICgka2V5ID09IG50aCgkaXRlbSwgMSkpIHtcbiAgICAgICAgICAgIEByZXR1cm4gbnRoKCRpdGVtLCAyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBAcmV0dXJuIGZhbHNlO1xufVxuXG4vLyBrZXlmcmFtZXMgbWl4aW5cbkBtaXhpbiBrZXlmcmFtZXMoJG5hbWUpIHtcbiAgQC13ZWJraXQta2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1vei1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbXMta2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAa2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5cblxuLy8gTWFnaWNuZXNzIFBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoXG4gICRwZXJzcGVjdGl2ZSAgOiAkcGFyYWxsYXgtcGVyc3BlY3RpdmUsXG4gICRlbGVtZW50ICAgICAgOiAkcGFyYWxsYXgtZWxlbWVudCxcbiAgJHBhcmFsbGF4LWlvcyA6ICRwYXJhbGxheC1pb3NcbiAgKSB7XG4gIEBpZiAkZWxlbWVudCA9PSBcImJvZHlcIiB7XG4gICAgaHRtbCwgYm9keSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuICAjeyRlbGVtZW50fSB7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgIC8vIEFsbG93cyBmb3Igc21vb3RoIHNjcm9sbGluZyBidXQgZGlzYWJsZXMgcGFyYWxsYXggZWZmZWN0cy5cbiAgICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gICAgfVxuICAgIC8vIFByZXNlcnZlIDNEXG4gICAgJiwgKiB7XG4gICAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgIH1cbiAgfVxufVxuQG1peGluIHBhcmFsbGF4KFxuICAkZGlzdGFuY2UgICAgOiAwLFxuICAkcGVyc3BlY3RpdmUgOiAkcGFyYWxsYXgtcGVyc3BlY3RpdmVcbiAgKSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWigkZGlzdGFuY2UgKiAkcGVyc3BlY3RpdmUgKiAxcHgpIHNjYWxlKGFicygkZGlzdGFuY2UgLSAxKSk7XG4gIHotaW5kZXg6ICRkaXN0YW5jZSAqIDEwMDA7XG59XG5cblxuXG5cblxuXG5cbi8vICBTcHJpdGVzaGVldCBtaXhpbnNcbkBmdW5jdGlvbiBzcHJpdGUtd2lkdGgoJHNwcml0ZSkge1xuICBAcmV0dXJuIG50aCgkc3ByaXRlLCA1KTtcbn1cblxuQGZ1bmN0aW9uIHNwcml0ZS1oZWlnaHQoJHNwcml0ZSkge1xuICBAcmV0dXJuIG50aCgkc3ByaXRlLCA2KTtcbn1cblxuQGZ1bmN0aW9uIHNwcml0ZS1wb3NpdGlvbigkc3ByaXRlKSB7XG4gICRzcHJpdGUtb2Zmc2V0LXg6IG50aCgkc3ByaXRlLCAzKTtcbiAgJHNwcml0ZS1vZmZzZXQteTogbnRoKCRzcHJpdGUsIDQpO1xuICBAcmV0dXJuICRzcHJpdGUtb2Zmc2V0LXggICRzcHJpdGUtb2Zmc2V0LXk7XG59XG5cbkBmdW5jdGlvbiBzcHJpdGUtdXJsKCRzcHJpdGUpIHtcbiAgJHNwcml0ZS1pbWFnZTogbnRoKCRzcHJpdGUsIDkpO1xuICBAcmV0dXJuIHVybCgjeyRpbWFnZXNfZGlyfSN7JHNwcml0ZS1pbWFnZX0pO1xufVxuXG5AZnVuY3Rpb24gc3ByaXRlc2hlZXQtdXJsKCRzcHJpdGVzaGVldCkge1xuICAkc3ByaXRlLWltYWdlOiBudGgoJHNwcml0ZXNoZWV0LCAzKTtcbiAgQHJldHVybiB1cmwoI3skaW1hZ2VzX2Rpcn0jeyRzcHJpdGUtaW1hZ2V9KTtcbn1cblxuLy8gQG1peGluIHNwcml0ZSgkc3ByaXRlKSB7XG4vLyAgIEBpbmNsdWRlIHNwcml0ZS1pbWFnZSgkc3ByaXRlKTtcbi8vICAgQGluY2x1ZGUgc3ByaXRlLXBvc2l0aW9uKCRzcHJpdGUpO1xuLy8gICBAaW5jbHVkZSBzcHJpdGUtd2lkdGgoJHNwcml0ZSk7XG4vLyAgIEBpbmNsdWRlIHNwcml0ZS1oZWlnaHQoJHNwcml0ZSk7XG4vLyB9XG5cbi8vIFRoZSBgc3ByaXRlc2AgbWl4aW4gZ2VuZXJhdGVzIGlkZW50aWNhbCBvdXRwdXQgdG8gdGhlIENTUyB0ZW1wbGF0ZVxuLy8gICBidXQgY2FuIGJlIG92ZXJyaWRkZW4gaW5zaWRlIG9mIFNDU1Ncbi8vXG4vLyBAaW5jbHVkZSBzcHJpdGVzKCRzcHJpdGVzaGVldC1zcHJpdGVzKTtcbkBtaXhpbiBzcHJpdGVzKCRzcHJpdGVzKSB7XG4gIEBlYWNoICRzcHJpdGUgaW4gJHNwcml0ZXMge1xuICAgICRzcHJpdGUtbmFtZTogbnRoKCRzcHJpdGUsIDEwKTtcbiAgICAuI3skc3ByaXRlLW5hbWV9IHtcbiAgICAgIEBpbmNsdWRlIHNwcml0ZSgkc3ByaXRlKTtcbiAgICB9XG4gIH1cbn1cblxuXG5cblxuXG5AZnVuY3Rpb24gaW1hZ2VVcmwoJGltZykge1xuICBAcmV0dXJuIHVybCgjeyRpbWFnZXNfZGlyfSN7JGltZ30pO1xufVxuIiwiLyogTW0gQ29sb3VyIHBhbGV0dGUgKi9cbiRkYXJrLWJnXHRcdDogIzE1MTkxZDtcblxuJG1tLXBpbmtcdFx0OiAjZWQyNzkzO1xuJG1tLWJsdWVcdFx0OiAjMTJiZGZmO1xuJG1tLW9yYW5nZVx0XHQ6ICNmOWFhMmE7XG5cbiRtbS1ncmVlblx0XHQ6ICMyN2I1MWM7XG5cbiRtbS13aGl0ZVx0XHQ6ICNmZmZmZmY7IC8vIFllYWggYnV0IGhleSAtIEl0J3MgKk1NKiB3aGl0ZVxuJG1tLWxpZ2h0Z3JleVx0OiBmYWRlX291dCgkbW0td2hpdGUsIDAuNSk7XG4kbW0tcGFsZWdyZXlcdDogI2YyZjJmMjtcbiRtbS1ncmV5XHRcdDogI2I0YjdiNztcbiRtbS1kYXJrZ3JleVx0OiAjNGY1NTU1O1xuXG4kbW0tdGVhbCBcdFx0OiAjMGI2MTgwO1xuJG1tLWRhcmtcdFx0OiAjMjAyYjMwO1xuJG1tLW1ldGFkYXRhLWJsdWU6ICM0YzUxNmY7XG4kbW0tbWV0YWRhdGEtbGlnaHRibHVlOiBmYWRlX291dCgkbW0tbWV0YWRhdGEtYmx1ZSwwLjUpO1xuXG4kbW0taW1hZ2Vib3JkZXJcdDogI2YyZTdjNTtcblxuJG1tLWVycm9yLXJlZDogI2VkMTM0YjsiLCIvKiBnZW5lcmFsIHBsYWNlaG9sZGVycyAqL1xuXG5cbi8qIGxpbmsgc3R5bGVzICovXG5cbiViYXNlbGlua3N0eWxlIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogJG1tLXBpbms7XG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiBzYXR1cmF0ZSgkbW0tcGluaywgNTAlKTtcbiAgfVxuICBAaW5jbHVkZSBzZWxlY3Rpb24ocmdiYSgkbW0td2hpdGUsIDAuNiksICRtbS1waW5rKTtcbiAgc3BhbiB7XG4gICAgQGluY2x1ZGUgc2VsZWN0aW9uKHJnYmEoJG1tLXdoaXRlLCAwLjYpLCAkbW0tcGluayk7XG4gIH1cbn1cbiVsaW5rc3R5bGUge1xuICBAZXh0ZW5kICViYXNlbGlua3N0eWxlO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgkbW0tYmx1ZSwgMC4yNSk7XG4gICY6aG92ZXIge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKCRtbS1ibHVlLCAwLjUpO1xuICB9XG59IiwiLy8gU0NTUyB2YXJpYWJsZXMgYXJlIGluZm9ybWF0aW9uIGFib3V0IGljb24ncyBjb21waWxlZCBzdGF0ZSwgc3RvcmVkIHVuZGVyIGl0cyBvcmlnaW5hbCBmaWxlIG5hbWVcbi8vXG4vLyAuaWNvbi1ob21lIHtcbi8vICAgd2lkdGg6ICRpY29uLWhvbWUtd2lkdGg7XG4vLyB9XG4vL1xuLy8gVGhlIGxhcmdlIGFycmF5LWxpa2UgdmFyaWFibGVzIGNvbnRhaW4gYWxsIGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIGljb25cbi8vICRpY29uLWhvbWU6IHggeSBvZmZzZXRfeCBvZmZzZXRfeSB3aWR0aCBoZWlnaHQgdG90YWxfd2lkdGggdG90YWxfaGVpZ2h0IGltYWdlX3BhdGg7XG4vL1xuLy8gQXQgdGhlIGJvdHRvbSBvZiB0aGlzIHNlY3Rpb24sIHdlIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNwcml0ZXNoZWV0IGl0c2VsZlxuLy8gJG1haW5tZW51OiB3aWR0aCBoZWlnaHQgaW1hZ2UgJG1haW5tZW51LXNwcml0ZXM7XG4kbWVudS1hYm91dDogKDI3MnB4LCAwcHgsIC0yNzJweCwgMHB4LCAxNDZweCwgMTUwcHgsIDExMDVweCwgMTUwcHgsICdtYWlubWVudS5wbmcnLCAnYWJvdXQnLCApO1xuJG1lbnUtYmxvZzogKDg0OXB4LCAwcHgsIC04NDlweCwgMHB4LCAyNTZweCwgMTUwcHgsIDExMDVweCwgMTUwcHgsICdtYWlubWVudS5wbmcnLCAnYmxvZycsICk7XG4kbWVudS1mYW5jbHViOiAoMHB4LCAwcHgsIDBweCwgMHB4LCAxMjRweCwgMTUwcHgsIDExMDVweCwgMTUwcHgsICdtYWlubWVudS5wbmcnLCAnZmFuY2x1YicsICk7XG4kbWVudS1nYW1lczogKDEyOXB4LCAwcHgsIC0xMjlweCwgMHB4LCAxMzhweCwgMTUwcHgsIDExMDVweCwgMTUwcHgsICdtYWlubWVudS5wbmcnLCAnZ2FtZXMnLCApO1xuJG1lbnUtam9iczogKDYxMnB4LCAwcHgsIC02MTJweCwgMHB4LCAyMzJweCwgMTUwcHgsIDExMDVweCwgMTUwcHgsICdtYWlubWVudS5wbmcnLCAnam9icycsICk7XG4kbWVudS1tbS1sb2dvOiAoNDIzcHgsIDBweCwgLTQyM3B4LCAwcHgsIDE4NHB4LCA1MnB4LCAxMTA1cHgsIDE1MHB4LCAnbWFpbm1lbnUucG5nJywgJ21tLWxvZ28nLCApO1xuJG1haW5tZW51LXNwcml0ZXM6ICgkbWVudS1hYm91dCwgJG1lbnUtYmxvZywgJG1lbnUtZmFuY2x1YiwgJG1lbnUtZ2FtZXMsICRtZW51LWpvYnMsICRtZW51LW1tLWxvZ28sICk7XG4kbWFpbm1lbnU6ICgxMTA1cHgsIDE1MHB4LCAnbWFpbm1lbnUucG5nJywgJG1haW5tZW51LXNwcml0ZXMsICk7XG5cblxuIiwiLy8gU0NTUyB2YXJpYWJsZXMgYXJlIGluZm9ybWF0aW9uIGFib3V0IGljb24ncyBjb21waWxlZCBzdGF0ZSwgc3RvcmVkIHVuZGVyIGl0cyBvcmlnaW5hbCBmaWxlIG5hbWVcbi8vXG4vLyAuaWNvbi1ob21lIHtcbi8vICAgd2lkdGg6ICRpY29uLWhvbWUtd2lkdGg7XG4vLyB9XG4vL1xuLy8gVGhlIGxhcmdlIGFycmF5LWxpa2UgdmFyaWFibGVzIGNvbnRhaW4gYWxsIGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIGljb25cbi8vICRpY29uLWhvbWU6IHggeSBvZmZzZXRfeCBvZmZzZXRfeSB3aWR0aCBoZWlnaHQgdG90YWxfd2lkdGggdG90YWxfaGVpZ2h0IGltYWdlX3BhdGg7XG4vL1xuLy8gQXQgdGhlIGJvdHRvbSBvZiB0aGlzIHNlY3Rpb24sIHdlIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNwcml0ZXNoZWV0IGl0c2VsZlxuLy8gJG1haW5tZW51Mng6IHdpZHRoIGhlaWdodCBpbWFnZSAkbWFpbm1lbnUyeC1zcHJpdGVzO1xuJG1lbnUyeC1hYm91dDogKDU0NHB4LCAwcHgsIC01NDRweCwgMHB4LCAyOTJweCwgMzAwcHgsIDIyMTBweCwgMzAwcHgsICdtYWlubWVudTJ4LnBuZycsICdhYm91dCcsICk7XG4kbWVudTJ4LWJsb2c6ICgxNjk4cHgsIDBweCwgLTE2OThweCwgMHB4LCA1MTJweCwgMzAwcHgsIDIyMTBweCwgMzAwcHgsICdtYWlubWVudTJ4LnBuZycsICdibG9nJywgKTtcbiRtZW51MngtZmFuY2x1YjogKDBweCwgMHB4LCAwcHgsIDBweCwgMjQ4cHgsIDMwMHB4LCAyMjEwcHgsIDMwMHB4LCAnbWFpbm1lbnUyeC5wbmcnLCAnZmFuY2x1YicsICk7XG4kbWVudTJ4LWdhbWVzOiAoMjU4cHgsIDBweCwgLTI1OHB4LCAwcHgsIDI3NnB4LCAzMDBweCwgMjIxMHB4LCAzMDBweCwgJ21haW5tZW51MngucG5nJywgJ2dhbWVzJywgKTtcbiRtZW51Mngtam9iczogKDEyMjRweCwgMHB4LCAtMTIyNHB4LCAwcHgsIDQ2NHB4LCAzMDBweCwgMjIxMHB4LCAzMDBweCwgJ21haW5tZW51MngucG5nJywgJ2pvYnMnLCApO1xuJG1lbnUyeC1tbS1sb2dvOiAoODQ2cHgsIDBweCwgLTg0NnB4LCAwcHgsIDM2OHB4LCAxMDRweCwgMjIxMHB4LCAzMDBweCwgJ21haW5tZW51MngucG5nJywgJ21tLWxvZ28nLCApO1xuJG1haW5tZW51Mngtc3ByaXRlczogKCRtZW51MngtYWJvdXQsICRtZW51MngtYmxvZywgJG1lbnUyeC1mYW5jbHViLCAkbWVudTJ4LWdhbWVzLCAkbWVudTJ4LWpvYnMsICRtZW51MngtbW0tbG9nbywgKTtcbiRtYWlubWVudTJ4OiAoMjIxMHB4LCAzMDBweCwgJ21haW5tZW51MngucG5nJywgJG1haW5tZW51Mngtc3ByaXRlcywgKTtcblxuXG4iLCIvLyBTQ1NTIHZhcmlhYmxlcyBhcmUgaW5mb3JtYXRpb24gYWJvdXQgaWNvbidzIGNvbXBpbGVkIHN0YXRlLCBzdG9yZWQgdW5kZXIgaXRzIG9yaWdpbmFsIGZpbGUgbmFtZVxuLy9cbi8vIC5pY29uLWhvbWUge1xuLy8gICB3aWR0aDogJGljb24taG9tZS13aWR0aDtcbi8vIH1cbi8vXG4vLyBUaGUgbGFyZ2UgYXJyYXktbGlrZSB2YXJpYWJsZXMgY29udGFpbiBhbGwgaW5mb3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgaWNvblxuLy8gJGljb24taG9tZTogeCB5IG9mZnNldF94IG9mZnNldF95IHdpZHRoIGhlaWdodCB0b3RhbF93aWR0aCB0b3RhbF9oZWlnaHQgaW1hZ2VfcGF0aDtcbi8vXG4vLyBBdCB0aGUgYm90dG9tIG9mIHRoaXMgc2VjdGlvbiwgd2UgcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3ByaXRlc2hlZXQgaXRzZWxmXG4vLyAkc3ByaXRlc2hlZXQ6IHdpZHRoIGhlaWdodCBpbWFnZSAkc3ByaXRlc2hlZXQtc3ByaXRlcztcbiRzc2hlZXQtcGFnaW5nLWN1cnJlbnQ6ICgyOXB4LCAwcHgsIC0yOXB4LCAwcHgsIDM1cHgsIDQ1cHgsIDY0cHgsIDQ1cHgsICdzc2hlZXQucG5nJywgJ3BhZ2luZy1jdXJyZW50Jyk7XG4kc3NoZWV0LXppZ3phZzogKDBweCwgMHB4LCAwcHgsIDBweCwgMjRweCwgMzJweCwgNjRweCwgNDVweCwgJ3NzaGVldC5wbmcnLCAnemlnemFnJyk7XG4kc3ByaXRlc2hlZXQtc3ByaXRlczogKCRzc2hlZXQtcGFnaW5nLWN1cnJlbnQsICRzc2hlZXQtemlnemFnLCApO1xuJHNwcml0ZXNoZWV0OiAoNjRweCwgNDVweCwgJ3NzaGVldC5wbmcnLCAkc3ByaXRlc2hlZXQtc3ByaXRlcywgKTtcbiIsIi8vIFNDU1MgdmFyaWFibGVzIGFyZSBpbmZvcm1hdGlvbiBhYm91dCBpY29uJ3MgY29tcGlsZWQgc3RhdGUsIHN0b3JlZCB1bmRlciBpdHMgb3JpZ2luYWwgZmlsZSBuYW1lXG4vL1xuLy8gLmljb24taG9tZSB7XG4vLyAgIHdpZHRoOiAkaWNvbi1ob21lLXdpZHRoO1xuLy8gfVxuLy9cbi8vIFRoZSBsYXJnZSBhcnJheS1saWtlIHZhcmlhYmxlcyBjb250YWluIGFsbCBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBpY29uXG4vLyAkaWNvbi1ob21lOiB4IHkgb2Zmc2V0X3ggb2Zmc2V0X3kgd2lkdGggaGVpZ2h0IHRvdGFsX3dpZHRoIHRvdGFsX2hlaWdodCBpbWFnZV9wYXRoO1xuLy9cbi8vIEF0IHRoZSBib3R0b20gb2YgdGhpcyBzZWN0aW9uLCB3ZSBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzcHJpdGVzaGVldCBpdHNlbGZcbi8vICRzcHJpdGVzaGVldDJ4OiB3aWR0aCBoZWlnaHQgaW1hZ2UgJHNwcml0ZXNoZWV0Mngtc3ByaXRlcztcbiRzc2hlZXQyeC1wYWdpbmctY3VycmVudDogKDU4cHgsIDBweCwgLTU4cHgsIDBweCwgNzBweCwgOTBweCwgMTI4cHgsIDkwcHgsICdzc2hlZXQyeC5wbmcnLCAncGFnaW5nLWN1cnJlbnQnLCApO1xuJHNzaGVldDJ4LXppZ3phZzogKDBweCwgMHB4LCAwcHgsIDBweCwgNDhweCwgNjRweCwgMTI4cHgsIDkwcHgsICdzc2hlZXQyeC5wbmcnLCAnemlnemFnJywgKTtcbiRzcHJpdGVzaGVldDJ4LXNwcml0ZXM6ICgkc3NoZWV0MngtcGFnaW5nLWN1cnJlbnQsICRzc2hlZXQyeC16aWd6YWcsICk7XG4kc3ByaXRlc2hlZXQyeDogKDEyOHB4LCA5MHB4LCAnc3NoZWV0MngucG5nJywgJHNwcml0ZXNoZWV0Mngtc3ByaXRlcywgKTtcblxuXG4iLCJAaW1wb3J0IFwibW9kdWxlcy9wbGFjZWhvbGRlcnNcIjtcbi8qIEdlbmVyYWwgc3R5bGVzICovXG5cbmh0bWwge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBmb250LXNpemU6IDEwMCU7XG59XG5ib2R5IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgY29sb3I6ICRtbS13aGl0ZTtcbiAgQGluY2x1ZGUgc21vb3RoKHRydWUpO1xuICAvKiBTZXQgZGVmYXVsdCBiYWNrZ3JvdW5kIGltYWdlIHNldHRpbmdzIGhlcmUsIHBhZ2UgdGVtcGxhdGVzIGNhbiBsYXRlciBvdmVycmlkZSAqL1xuICBiYWNrZ3JvdW5kOiB7XG4gICAgaW1hZ2U6IGltYWdlVXJsKFwiYmctZGVmYXVsdC5qcGdcIik7XG4gICAgc2l6ZTogMTAwJTtcbiAgICBzaXplOiBjb3ZlcjsgLyogdGVzdGluZyAqL1xuICAgIHBvc2l0aW9uOiBjZW50ZXIgdG9wO1xuICAgIHJlcGVhdDogcmVwZWF0O1xuICAgIGF0dGFjaG1lbnQ6IHNjcm9sbDtcbiAgICBhdHRhY2htZW50OiBmaXhlZDtcbiAgICBjb2xvcjogJGRhcmstYmc7XG4gIH1cbiAgJi5sZWFkZXIge1xuICAgIGJhY2tncm91bmQ6IHtcbiAgICAgIHBvc2l0aW9uOiBjZW50ZXIgdG9wO1xuICAgICAgcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICBhdHRhY2htZW50OiBmaXhlZDtcbiAgICB9XG4gIH1cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZVVybChcImJnLW92ZXJsYXktdGV4dHVyZS5wbmdcIikgbGVmdCB0b3AgcmVwZWF0O1xuICAgIGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7XG4gICAgdG9wOiAwcHg7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHotaW5kZXg6IC0yO1xuICB9XG4gICNkb29kbGViZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDBweDtcbiAgICBsZWZ0OiAwcHg7XG4gICAgei1pbmRleDogLTE7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgc3ZnIHtcbiAgICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgICB3aWR0aDogYXV0bztcbiAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICAgIC8vIEF0dGVtcHRlZCBubyBzdmcgZmFsbGJhY2tcbiAgICBiYWNrZ3JvdW5kOiB7XG4gICAgICByZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgIGltYWdlOiBpbWFnZVVybCgnYmctZG9vZGxlczEucG5nJyk7XG4gICAgICBwb3NpdGlvbjogY2VudGVyIGJvdHRvbTtcbiAgICAgIHNpemU6IGNvbnRhaW47XG4gICAgfVxuICAgIGh0bWwuc3ZnICYge1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuICAqIDo6c2VsZWN0aW9uIHtcbiAgICBiYWNrZ3JvdW5kOiAkbW0tcGluaztcbiAgfVxufVxuXG5ibG9ja3F1b3RlIHtcbiAgYmFja2dyb3VuZDogc3ByaXRlc2hlZXQtdXJsKCRzcHJpdGVzaGVldCkgcmVwZWF0LXkgcG9zaXRpb25fdG9fZW1zKHNwcml0ZS1wb3NpdGlvbigkc3NoZWV0LXppZ3phZykpO1xuICBiYWNrZ3JvdW5kLXNpemU6IGF1dG8gMjRweDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogZ3V0dGVyKCkgKiA0IHRvcDtcblxuICBodG1sLnN2ZyAmIHtcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZVVybChcImJnLXppZ3phZy5zdmdcIikgcmVwZWF0LXkgZ3V0dGVyKCkgKiA0IHRvcDtcbiAgfVxuICAmLnF1b3RlcyB7XG4gICAgcXVvdGVzOiBcIlxcMjAxQ1wiIFwiXFwyMDFEXCIgXCJcXDIwMThcIiBcIlxcMjAxOVwiO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbG9yOiAkbW0tcGluaztcbiAgICAgIGNvbnRlbnQ6IG9wZW4tcXVvdGU7XG4gICAgICBmb250LXNpemU6IDVlbTtcbiAgICAgIGxpbmUtaGVpZ2h0OiAwZW07XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIHRvcDogMC42ZW07XG4gICAgICBsZWZ0OiBndXR0ZXIoKTtcbiAgICAgIHBhZGRpbmc6IDAgZW0oMTZweCkgMCAwO1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgobWluLXdpZHRoIDg4OHB4KSAobWF4LXdpZHRoIDExMDBweCkpIHtcbiAgICAgICAgbGVmdDogLShndXR0ZXIoKSk7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KChtaW4td2lkdGggNjgwcHgpIChtYXgtd2lkdGggODg4cHgpKSB7XG4gICAgICAgIGxlZnQ6IGd1dHRlcigpKjM7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KChtaW4td2lkdGggNDEwcHgpIChtYXgtd2lkdGggNjgwcHgpKSB7XG4gICAgICAgIGxlZnQ6IGd1dHRlcigpO1xuICAgICAgfVxuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXgtd2lkdGggNDEwcHgpIHtcbiAgICAgICAgbGVmdDogLShndXR0ZXIoKSk7XG4gICAgICB9XG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgY29sb3I6ICRtbS1waW5rO1xuICAgICAgY29udGVudDogY2xvc2UtcXVvdGU7XG4gICAgICBmb250LXNpemU6IDMuNWVtO1xuICAgICAgbGluZS1oZWlnaHQ6IDBlbTtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIGJvdHRvbTogMC42ZW07XG4gICAgICByaWdodDogZ3V0dGVyKCkgKiA0O1xuICAgICAgcGFkZGluZzogMCBlbSg2cHgpIDAgMDtcbiAgICB9XG4gIH1cbn1cblxuLyogVG9wIG5hdiAqL1xuQGltcG9ydCBcInBhcnRpYWxzL3RvcG5hdlwiO1xuXG4vKiBTVkcgcGF0aCBzdHlsZXMgKi9cbmh0bWwuc3ZnIHN2ZyB7XG4gIC5kb29kbGVwYXRoIHtcbiAgICBzdHJva2UtbGluZWNhcDogcm91bmQ7XG4gICAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDtcbiAgICBmaWxsLW9wYWNpdHk6IDA7XG4gICAgc3Ryb2tlLW9wYWNpdHk6IDAuNjtcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIH1cbiAgLnBhdGgxIHtcbiAgICBmaWxsOiAkbW0tcGluaztcbiAgICBzdHJva2U6ICRtbS1waW5rO1xuICAgIHN0cm9rZS13aWR0aDogNjtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAwLjIsIDEyO1xuICB9XG4gIC5wYXRoMiB7XG4gICAgZmlsbDogJG1tLWJsdWU7XG4gICAgc3Ryb2tlOiAkbW0tYmx1ZTtcbiAgICBzdHJva2Utd2lkdGg6IDI7XG4gIH1cbiAgLnBhdGgzIHtcbiAgICBmaWxsOiAkbW0tcGluaztcbiAgICBzdHJva2U6ICRtbS1waW5rO1xuICAgIHN0cm9rZS13aWR0aDogMjtcbiAgICBzdHJva2UtZGFzaGFycmF5OiA2LCAxNjtcbiAgfVxuICAucGF0aDQge1xuICAgIGZpbGw6ICRtbS1waW5rO1xuICAgIHN0cm9rZTogJG1tLXBpbms7XG4gICAgc3Ryb2tlLXdpZHRoOiAzO1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDMsIDY7XG4gIH1cbiAgLnBhdGg1IHtcbiAgICBmaWxsOiAkbW0tYmx1ZTtcbiAgICBzdHJva2U6ICRtbS1ibHVlO1xuICAgIHN0cm9rZS13aWR0aDogMztcbiAgICBzdHJva2UtZGFzaGFycmF5OiAwLjEsIDY7XG4gIH1cbiAgLnBhdGg2IHtcbiAgICBmaWxsOiAkbW0tbWV0YWRhdGEtYmx1ZTtcbiAgICBzdHJva2U6ICRtbS1tZXRhZGF0YS1ibHVlO1xuICAgIHN0cm9rZS13aWR0aDogMztcbiAgICBzdHJva2UtZGFzaGFycmF5OiAzLCA2O1xuICB9XG4gIC5wYXRoNyB7XG4gICAgZmlsbDogJG1tLXBpbms7XG4gICAgc3Ryb2tlOiAkbW0tcGluaztcbiAgICBzdHJva2Utd2lkdGg6IDMuNTtcbiAgICBzdHJva2Utb3BhY2l0eTogMTtcbiAgICBzdHJva2UtZGFzaGFycmF5OiAwO1xuICB9XG4gIC5hcnJvdyB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBzdHJva2Utd2lkdGg6IDA7XG4gICAgZmlsbC1vcGFjaXR5OiAwLjY7XG4gICAgc3Ryb2tlLW9wYWNpdHk6IDA7XG4gIH1cbiAgLm1hc2sge1xuICAgIHN0cm9rZTogI0ZGRjtcbiAgICBzdHJva2Utb3BhY2l0eTogMTtcbiAgICBzdHJva2Utd2lkdGg6IDY7XG4gICAgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kO1xuICAgIHN0cm9rZS1saW5lam9pbjogcm91bmQ7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBmaWxsOiBub25lO1xuICAgIGZpbGwtb3BhY2l0eTogMDtcbiAgfVxufVxuXG5cblxuXG5cblxuXG5cbkBtaXhpbiBtcS1tb2JpbGUtZ2VuZXJhbCgpIHtcbiAgaHRtbCB7XG4gICAgY29udGVudDogJ21vYmlsZSc7XG4gICAgZm9udC1zaXplOiA4MCU7XG4gIH1cbn1cblxuXG5AbWl4aW4gbXEtdGFibGV0LWdlbmVyYWwoKSB7XG4gIGh0bWwge1xuICAgIGNvbnRlbnQ6ICd0YWJsZXQnO1xuICAgIGZvbnQtc2l6ZTogODAlO1xuICB9XG59XG5cblxuQG1peGluIG1xLW1vYmlsZV9hbmRfdGFibGV0LWdlbmVyYWwoKSB7XG4gIGJvZHkge1xuICAgIGJhY2tncm91bmQtc2l6ZTogMjAwJSBhdXRvO1xuICB9XG4gICNkb29kbGViZyB7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgfVxufVxuXG5cbkBtaXhpbiBtcS1kZXNrdG9wLWdlbmVyYWwoKSB7XG4gIGh0bWwge1xuICAgIGNvbnRlbnQ6ICdkZXNrdG9wJztcbiAgfVxuICBibG9ja3F1b3RlIHtcbiAgICAmLnJpZ2h0LnF1b3RlczpiZWZvcmUsICYubGVmdC5xdW90ZXM6YmVmb3JlIHtcbiAgICAgIGZvbnQtc2l6ZTogM2VtO1xuICAgIH1cbiAgICAmLnJpZ2h0LnF1b3RlczphZnRlciwgJi5sZWZ0LnF1b3RlczphZnRlciB7XG4gICAgICBmb250LXNpemU6IDJlbTtcbiAgICAgIGJvdHRvbTogMC45ZW07XG4gICAgfVxuICB9XG59XG5cblxuXG5AbWl4aW4gbXEtcmV0aW5hLWdlbmVyYWwoKSB7XG4gIGJsb2NrcXVvdGUge1xuICAgIGJhY2tncm91bmQ6IHNwcml0ZXNoZWV0LXVybCgkc3ByaXRlc2hlZXQyeCkgcmVwZWF0LXkgcG9zaXRpb25fdG9fZW1zKHNwcml0ZS1wb3NpdGlvbigkc3NoZWV0MngtemlnemFnKSk7XG4gICAgYmFja2dyb3VuZC1zaXplOiBhdXRvIGVtKHNwcml0ZS1oZWlnaHQoJHNzaGVldDJ4LXppZ3phZykpO1xuICB9XG59XG4iLCJcblxuLyogVG9wIG5hdiAqL1xuaGVhZGVyLnRvcG5hdiB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwcHg7XG4gIHotaW5kZXg6IDUwO1xuICAvLyBQbGFjZXMgdG9wYmFyIGFib3ZlIGJhY2tncm9uZCBhc3NldHNcbiAgLyogR3JhZGllbnQgb24gdG9wIG9mIHBhZ2UgKi9cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAkaGVhZGVyLWhlaWdodDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQocmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDApKTtcbiAgICB0b3A6IDBweDtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgei1pbmRleDogMTtcbiAgfVxuICBkaXYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyO1xuICB9XG4gIC8qIE1tIExvZ28gKi9cbiAgaDEge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nLXRvcDogZ3V0dGVyKCk7XG4gICAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygkYmFzZS1mb250LXNpemUpO1xuICAgIGEjbW0tbG9nbyB7XG4gICAgICBtYXJnaW4tbGVmdDogZ3V0dGVyKCkgKiA2O1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBoZWlnaHQ6IGVtKHNwcml0ZS1oZWlnaHQoJG1lbnUtbW0tbG9nbykpO1xuICAgICAgd2lkdGg6IGVtKHNwcml0ZS13aWR0aCgkbWVudS1tbS1sb2dvKSk7XG4gICAgICBiYWNrZ3JvdW5kOiBzcHJpdGUtdXJsKCRtZW51LW1tLWxvZ28pIG5vLXJlcGVhdCBwb3NpdGlvbl90b19lbXMoc3ByaXRlLXBvc2l0aW9uKCRtZW51LW1tLWxvZ28pKTtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byBlbShzcHJpdGUtaGVpZ2h0KCRtZW51LWJsb2cpKTtcblxuICAgICAgc3BhbiB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgICBodG1sLnN2ZyAmI21tLWxvZ28ge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qIFJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgbWFpbiBtZW51IGF0IHNtYWxsZXIgc2l6ZWQgdmlld3BvcnRzICovXG4gIEBpbmNsdWRlIGJyZWFrcG9pbnQobWF4LXdpZHRoIGVtKDEyNTBweCkpIHtcbiAgICBib2R5ICYgdWwubWFpbm1lbnUge1xuICAgICAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygxNXB4KTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KG1heC13aWR0aCBlbSgxMTcwcHgpKSB7XG4gICAgYm9keSAmIHVsLm1haW5tZW51IHtcbiAgICAgIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oMTRweCk7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXgtd2lkdGggZW0oMTEwMHB4KSkge1xuICAgIGJvZHkgJiBoMSB7XG4gICAgICBAaW5jbHVkZSBhZGp1c3QtZm9udC1zaXplLXRvKDE0cHgpO1xuICAgIH1cbiAgICBib2R5ICYgdWwubWFpbm1lbnUge1xuICAgICAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygxM3B4KTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBicmVha3BvaW50KG1heC13aWR0aCBlbSgxMDIwcHgpKSB7XG4gICAgYm9keSAmIHVsLm1haW5tZW51IHtcbiAgICAgIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oMTJweCk7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXgtd2lkdGggZW0oOTQwcHgpKSB7XG4gICAgYm9keSAmIHVsLm1haW5tZW51IHtcbiAgICAgIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oMTFweCk7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXgtd2lkdGggZW0oODYwcHgpKSB7XG4gICAgYm9keSAmIHVsLm1haW5tZW51IHtcbiAgICAgIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oMTBweCk7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgYnJlYWtwb2ludChtYXgtd2lkdGggZW0oNzg4cHgpKSB7XG4gICAgYm9keSAmIHVsLm1haW5tZW51IHtcbiAgICAgIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oOXB4KTtcbiAgICB9XG4gIH1cblxufVxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8vIEBtaXhpbiBtcS1tb2JpbGUtdG9wbmF2KCkge1xuLy9cbi8vIH1cbi8vXG4vL1xuLy8gQG1peGluIG1xLXRhYmxldC10b3BuYXYoKSB7XG4vL1xuLy8gfVxuXG5cbkBtaXhpbiBtcS1tb2JpbGVfYW5kX3RhYmxldC10b3BuYXYoKSB7XG5cbiAgaGVhZGVyLnRvcG5hdiB7XG4gICAgLyogTWFpbiBtZW51IC0gVGFibGV0IChwb3J0cmFpdCkgYW5kIG1vYmlsZSAtIGFsdGVybmF0ZSBkZXNpZ24gKi9cbiAgICBoMSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IGVtKDEwcHgpO1xuICAgICAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygxMnB4KTtcbiAgICAgIGEjbW0tbG9nbyB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBndXR0ZXIoKSAqIDI7XG4gICAgICAgIGh0bWwuc3ZnICYgc3ZnICoge1xuICAgICAgICAgIGZpbGw6ICNGRkZGRkY7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgJG1haW5tZW51aGVpZ2h0OiAxMDZweDtcbiAgICAkc3VibmF2aGVpZ2h0OiAxMDJweDtcbiAgICAkbWVudWhlaWdodDogMjIwcHg7XG4gICAgJG1lbnVmb250c2l6ZTogMzJweDtcbiAgICAkbW0tbWVudS1jb2w6ICRtbS1ibHVlO1xuICAgIC5uYXYge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgaHRtbC5jc3N0cmFuc2l0aW9ucyAmIHtcbiAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYm90dG9tO1xuICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzO1xuICAgICAgfVxuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAvLyBtYXgtaGVpZ2h0OiAkbWVudWhlaWdodDtcbiAgICAgICYubm9zdWJuYXYgdWwubWFpbm1lbnUge1xuICAgICAgICAvLyBwYWRkaW5nLXRvcDogJHN1Ym5hdmhlaWdodDtcbiAgICAgIH1cbiAgICAgIGJvZHkuYmxvZyAmIC5tYWlubWVudSAjbS1ibG9nLCBib2R5LmFib3V0ICYgLm1haW5tZW51ICNtLWFib3V0LCBib2R5LmdhbWVzICYgLm1haW5tZW51ICNtLWdhbWVzLCBib2R5LmpvYnMgJiAubWFpbm1lbnUgI20tam9icywgYm9keS5mYW5jbHViICYgLm1haW5tZW51ICNtLWZhbmNsdWIge1xuICAgICAgICBib3JkZXItYm90dG9tOiA0cHggc29saWQgJG1tLW9yYW5nZTtcbiAgICAgIH1cbiAgICAgIHVsLm1haW5tZW51LCAjc3VibmF2IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1tLXBpbms7XG4gICAgICAgIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oJG1lbnVmb250c2l6ZSk7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgcGFkZGluZzogMCBndXR0ZXIoKSoyO1xuICAgICAgICAgIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oMjhweCk7XG4gICAgICAgICAgQGluY2x1ZGUgZGVmaW5lZm9udHMoJHJvY2t3ZWxsX3N0YWNrKTtcbiAgICAgICAgICBsaW5lLWhlaWdodDogMS4yZW07XG4gICAgICAgICAgYSB7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAjc3VibmF2IHtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IGVtKDhweCk7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICBAaW5jbHVkZSBhZGp1c3QtZm9udC1zaXplLXRvKDE4cHgpO1xuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjRlbTtcbiAgICAgICAgICBwYWRkaW5nOiAwIGd1dHRlcigpO1xuICAgICAgICAgIGEge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG1tLW9yYW5nZTtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgNnB4O1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICBjb2xvcjogJG1tLW9yYW5nZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgJjpudGgtY2hpbGQob2RkKSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtMmRlZyk7XG4gICAgICAgICAgfVxuICAgICAgICAgICY6bnRoLWNoaWxkKGV2ZW4pIHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDFkZWcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaHRtbC5zdmcgJjphZnRlciB7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogLSgkYmFzZS1saW5lLWhlaWdodCk7XG4gICAgICAgIHotaW5kZXg6IDA7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6ICRiYXNlLWxpbmUtaGVpZ2h0O1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgYmFja2dyb3VuZDoge1xuICAgICAgICAgIGltYWdlOiBzdmdpZnkoXCI8c3ZnIHdpZHRoPScxMDAlJyBoZWlnaHQ9JyN7c3RyaXAtdW5pdHMoJGJhc2UtbGluZS1oZWlnaHQpfScgdmlld1BvcnQ9JzAgMCA4ODhweCAje3N0cmlwLXVuaXRzKCRiYXNlLWxpbmUtaGVpZ2h0KX0nIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHBvbHlnb24gcG9pbnRzPScwIDAsIDg4OCAwLDg4OCAje3N0cmlwLXVuaXRzKCRiYXNlLWxpbmUtaGVpZ2h0KX0nIHN0eWxlPSdmaWxsOiN7JG1tLXBpbmt9Jy8+PC9zdmc+XCIpO1xuICAgICAgICAgIHBvc2l0aW9uOiBsZWZ0IGJvdHRvbTtcbiAgICAgICAgICByZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICBwb3NpdGlvbjogMTAwJSAxMDAlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICB9XG4gICAgICAmLmNsb3NlZCB7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgIH1cbiAgICAgICYub3BlbiwgJjpob3ZlciB7XG4gICAgICAgIGJvdHRvbTogYXV0bztcbiAgICAgIH1cbiAgICAgIGh0bWwuc3ZnLmNzc2FuaW1hdGlvbnMgJi5vcGVuIGEgLmljb24uYnVyZ2VyOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgYW5pbWF0aW9uKGVhdGJ1cmdlciAuOHMgMXMgc3RlcHMoNikgZm9yd2FyZHMpO1xuICAgICAgfVxuICAgICAgaHRtbC5zdmcuY3NzYW5pbWF0aW9ucyAmIGEgLmljb24uYnVyZ2VyOmFmdGVyIHtcbiAgICAgICAgQGluY2x1ZGUgYW5pbWF0aW9uKG1ha2VidXJnZXIgMXMgMC41cyBzdGVwcyg1KSBiYWNrd2FyZHMpO1xuICAgICAgfVxuICAgICAgJi5ub3N1Ym5hdi5vcGVuLCAmLm5vc3VibmF2OmhvdmVyIHtcbiAgICAgICAgLy8gdG9wOiAtKCRzdWJuYXZoZWlnaHQpO1xuICAgICAgfVxuICAgICAgLnNob3dtZW51IHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHBhZGRpbmc6IDVweCA1cHg7XG4gICAgICAgIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oMjFweCk7XG4gICAgICAgIEBpbmNsdWRlIGRlZmluZWZvbnRzKCRyb2Nrd2VsbF9zdGFjayk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IGd1dHRlcigpICogMjtcbiAgICAgICAgYm90dG9tOiAtNDVweDtcbiAgICAgICAgei1pbmRleDogMTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtbS1tZW51LWNvbDtcbiAgICAgICAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHJpZ2h0OiAwcHg7XG4gICAgICAgICAgd2lkdGg6IDQ4cHg7XG4gICAgICAgICAgaGVpZ2h0OiA4cHg7XG4gICAgICAgICAgYmFja2dyb3VuZDoge1xuICAgICAgICAgICAgcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG4gICAgICAgICAgICByZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgIHRvcDogLThweDtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB7XG4gICAgICAgICAgICBpbWFnZTogc3ZnaWZ5KFwiPHN2ZyB3aWR0aD0nNDgnIGhlaWdodD0nOCcgdmlld1BvcnQ9JzAgMCA0OHB4IDhweCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cG9seWdvbiBwb2ludHM9JzAgMCwgMjQgOCwgNDggMCwgNDggOCwgMCA4LCAwIDAgJyBzdHlsZT0nZmlsbDojeyRtbS1tZW51LWNvbH0nLz48L3N2Zz5cIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgIGJvdHRvbTogLThweDtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiB7XG4gICAgICAgICAgICBpbWFnZTogc3ZnaWZ5KFwiPHN2ZyB3aWR0aD0nNDgnIGhlaWdodD0nOCcgdmlld1BvcnQ9JzAgMCA0OHB4IDhweCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cG9seWdvbiBwb2ludHM9JzAgMCwgNDggMCwyNCA4LDAgMCAnIHN0eWxlPSdmaWxsOiN7JG1tLW1lbnUtY29sfScvPjwvc3ZnPlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYSB7XG4gICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICBzcGFuLmljb24geyBkaXNwbGF5OiBub25lOyB9XG4gICAgICAgICAgc3Bhbi5oaWRlIHsgZGlzcGxheTogaW5saW5lOyB9XG4gICAgICAgICAgaHRtbC5zdmcgJiB7XG4gICAgICAgICAgICAuaWNvbi5idXJnZXIge1xuICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDNlbTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6IHtcbiAgICAgICAgICAgICAgICAgIGltYWdlOiB1cmwoL2Fzc2V0cy9pbWFnZXMvZGVzaWduL2J1cmdlci5zdmcpO1xuICAgICAgICAgICAgICAgICAgcG9zaXRpb246IDBweCAwcHg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGhlaWdodDogMzhweDtcbiAgICAgICAgICAgICAgICB3aWR0aDogMzhweDtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3Bhbi5oaWRlIHtcbiAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaHRtbC5zdmcuY3NzYW5pbWF0aW9ucyAmIC5pY29uLmJ1cmdlcjphZnRlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiB7XG4gICAgICAgICAgICAgIGltYWdlOiB1cmwoL2Fzc2V0cy9pbWFnZXMvZGVzaWduL2J1cmdlci1mcmFtZXMuc3ZnKTtcbiAgICAgICAgICAgICAgcG9zaXRpb246IDBweCAtMTkwcHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIERpc2FibGUgc3ZnIG9uIG1haW4gbWVudVxuICAgIGh0bWwuc3ZnICYgdWwgc3ZnIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuYnV0dG9uLW5hdiB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmVyO1xuICAgICAgbGkge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgYSB7XG4gICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuXG59XG5cblxuQG1peGluIG1xLWRlc2t0b3AtdG9wbmF2KCkge1xuXG4gIGhlYWRlci50b3BuYXYgaDEge1xuICAgIHotaW5kZXg6IDM7XG4gIH1cblxuICBoZWFkZXIudG9wbmF2IHtcbiAgICAvKiBNYWluIG1lbnUgLSBEZXNrdG9wICovXG4gICAgJG1lbnVpdGVtX3dpZHRoczogc3ByaXRlLXdpZHRoKCRtZW51LWJsb2cpICsgc3ByaXRlLXdpZHRoKCRtZW51LWdhbWVzKSAgKyBzcHJpdGUtd2lkdGgoJG1lbnUtYWJvdXQpICArIHNwcml0ZS13aWR0aCgkbWVudS1qb2JzKSAgKyBzcHJpdGUtd2lkdGgoJG1lbnUtZmFuY2x1Yik7XG4gICAgdWwubWFpbm1lbnUge1xuICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICAgICAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygkYmFzZS1mb250LXNpemUpO1xuICAgICAgLy93aWR0aDogZW0oJG1lbnVpdGVtX3dpZHRocykgIWltcG9ydGFudDtcbiAgICAgIGxpIHtcbiAgICAgICAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygkYmFzZS1mb250LXNpemUpO1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBhIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICBoZWlnaHQ6IGVtKDE1MHB4KTtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAtMjVweDtcbiAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGh0bWwuc3ZnICYgbGkge1xuICAgICAgICBzdmcge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLmxvYWRlZCBzdmcge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBodG1sLnN2Zy5jc3NhbmltYXRpb25zICYge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgYSB7XG4gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgfVxuICAgICAgICAgICNtLWJsb2cubG9hZGVkIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHZlbmRvcnByb3AoJ2FuaW1hdGlvbicsICdzbGlkZUluRG93biAuOHMgLjFzIGVhc2Utb3V0IDEgbm9ybWFsIGZvcndhcmRzJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgICNtLWFib3V0LmxvYWRlZCB7XG4gICAgICAgICAgICBAaW5jbHVkZSB2ZW5kb3Jwcm9wKCdhbmltYXRpb24nLCAnc2xpZGVJbkRvd24gLjhzIC4zcyBlYXNlLW91dCAxIG5vcm1hbCBmb3J3YXJkcycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAjbS1nYW1lcy5sb2FkZWQge1xuICAgICAgICAgICAgQGluY2x1ZGUgdmVuZG9ycHJvcCgnYW5pbWF0aW9uJywgJ3NsaWRlSW5Eb3duIC44cyAuNXMgZWFzZS1vdXQgMSBub3JtYWwgZm9yd2FyZHMnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgI20tam9icy5sb2FkZWQge1xuICAgICAgICAgICAgQGluY2x1ZGUgdmVuZG9ycHJvcCgnYW5pbWF0aW9uJywgJ3NsaWRlSW5Eb3duIC44cyAuN3MgZWFzZS1vdXQgMSBub3JtYWwgZm9yd2FyZHMnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgI20tZmFuY2x1Yi5sb2FkZWQge1xuICAgICAgICAgICAgQGluY2x1ZGUgdmVuZG9ycHJvcCgnYW5pbWF0aW9uJywgJ3NsaWRlSW5Eb3duIC44cyAxcyBlYXNlLW91dCAxIG5vcm1hbCBmb3J3YXJkcycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAjbS12aXBzLmxvYWRlZCB7XG4gICAgICAgICAgICBAaW5jbHVkZSB2ZW5kb3Jwcm9wKCdhbmltYXRpb24nLCAnc2xpZGVJbkRvd24gLjhzIDFzIGVhc2Utb3V0IDEgbm9ybWFsIGZvcndhcmRzJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBQb3NoZXIgY3ViaWMgYmV6aWVyIGZvciB0aG9zZSB3aG8gc3VwcG9ydCBpdFxuICAgICAgaHRtbC5zdmcuY3NzYW5pbWF0aW9ucy5jdWJpY2JlemllcnJhbmdlICYge1xuICAgICAgICAjbS1ibG9nLmxvYWRlZCB7XG4gICAgICAgICAgQGluY2x1ZGUgdmVuZG9ycHJvcCgnYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbicsICdjdWJpYy1iZXppZXIoLjI4LC45MCwuNzgsMS4wNiknKTtcbiAgICAgICAgfVxuICAgICAgICAjbS1hYm91dC5sb2FkZWQge1xuICAgICAgICAgIEBpbmNsdWRlIHZlbmRvcnByb3AoJ2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24nLCAnY3ViaWMtYmV6aWVyKC4yOCwuOTAsLjc4LDEuMDYpJyk7XG4gICAgICAgIH1cbiAgICAgICAgI20tZ2FtZXMubG9hZGVkIHtcbiAgICAgICAgICBAaW5jbHVkZSB2ZW5kb3Jwcm9wKCdhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uJywgJ2N1YmljLWJlemllciguMjgsLjkwLC43OCwxLjA2KScpO1xuICAgICAgICB9XG4gICAgICAgICNtLWpvYnMubG9hZGVkIHtcbiAgICAgICAgICBAaW5jbHVkZSB2ZW5kb3Jwcm9wKCdhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uJywgJ2N1YmljLWJlemllciguMjgsLjkwLC43OCwxLjA2KScpO1xuICAgICAgICB9XG4gICAgICAgICNtLWZhbmNsdWIubG9hZGVkIHtcbiAgICAgICAgICBAaW5jbHVkZSB2ZW5kb3Jwcm9wKCdhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uJywgJ2N1YmljLWJlemllciguMjgsLjkwLC43OCwxLjA2KScpO1xuICAgICAgICB9XG4gICAgICAgICNtLXZpcHMubG9hZGVkIHtcbiAgICAgICAgICBAaW5jbHVkZSB2ZW5kb3Jwcm9wKCdhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uJywgJ2N1YmljLWJlemllciguMjgsLjkwLC43OCwxLjA2KScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsaS52aXAge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiA1ZW07XG4gICAgICAgIGhlaWdodDogNWVtO1xuICAgICAgICB0b3A6IDhlbTtcbiAgICAgICAgcmlnaHQ6IDUlO1xuICAgICAgICBhIHtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgIHdpZHRoOiA1ZW07XG4gICAgICAgICAgaGVpZ2h0OiA1ZW07XG4gICAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgICAgYmFja2dyb3VuZDoge1xuICAgICAgICAgICAgY29sb3I6ICRtbS13aGl0ZTtcbiAgICAgICAgICAgIGltYWdlOiBpbWFnZVVybCgnbS12aXAuc3ZnJyk7XG4gICAgICAgICAgICByZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICAgICAgc2l6ZTogOTAlIGF1dG87XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMXB4KSByb3RhdGUoNWRlZykgc2NhbGUoMSk7XG4gICAgICAgIGh0bWwuY3NzdHJhbnNpdGlvbnMgJiB7XG4gICAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtO1xuICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNXM7XG4gICAgICAgIH1cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDFweCkgcm90YXRlKDM2NWRlZykgc2NhbGUoMS4xKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAuc2hvd21lbnUge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgLy8gRGlzYWJsZSBmYWxsYmFjayBpbWFnZXMgd2hlbiBTVkcgYXZhaWxhYmxlXG4gICAgaHRtbC5zdmcgJiB1bC5tYWlubWVudSBsaSB7XG4gICAgICAjbS1ibG9nLCAjbS1hYm91dCwgI20tZ2FtZXMsICNtLWZhbmNsdWIsICNtLWpvYnMge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgICAgfVxuICAgICAgYSBzdmcge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgIH1cbiAgICAmLGh0bWwuc3ZnLnBsYXlzdGF0aW9uICYge1xuICAgICAgdWwubWFpbm1lbnUgbGkgYSB7XG4gICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJiB1bC5tYWlubWVudSBsaSB7XG4gICAgICAgIC8vIEJhY2tncm91bmQgaW1hZ2VzIChubyBTVkcgZmFsbGJhY2spXG4gICAgICAgIEBlYWNoICRzcHJpdGUgaW4gJG1haW5tZW51LXNwcml0ZXMge1xuICAgICAgICAgICRlbGVtZW50bmFtZTogbnRoKCRzcHJpdGUsIDEwKTtcbiAgICAgICAgICAjbS0jeyRlbGVtZW50bmFtZX0ge1xuICAgICAgICAgICAgaGVpZ2h0OiBlbShzcHJpdGUtaGVpZ2h0KCRzcHJpdGUpKTtcbiAgICAgICAgICAgIHdpZHRoOiBlbShzcHJpdGUtd2lkdGgoJHNwcml0ZSkpO1xuICAgICAgICAgICAgYmFja2dyb3VuZDogc3ByaXRlLXVybCgkc3ByaXRlKSBuby1yZXBlYXQgcG9zaXRpb25fdG9fZW1zKHNwcml0ZS1wb3NpdGlvbigkc3ByaXRlKSk7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGF1dG8gZW0oc3ByaXRlLWhlaWdodCgkc3ByaXRlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgcGxheXN0YXRpb24gLSByZW1vdmUgYW5pbWF0ZWQgc3Znc1xuICAgIGh0bWwuc3ZnLnBsYXlzdGF0aW9uICYgZGl2Lm5hdiB7XG4gICAgICBzdmcge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgfVxuXG5cbiAgICAvKiBTdWIgbmF2ICovXG4gICAgLmJ1dHRvbi1uYXYge1xuICAgICAgbGluZS1oZWlnaHQ6IDJlbTtcbiAgICAgIGxpIHtcbiAgICAgICAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygyMXB4KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgICAgICAgbWFyZ2luOiBhdXRvO1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIEBpbmNsdWRlIGRlZmluZWZvbnRzKCRjcmlrZXlfc3RhY2spO1xuICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuXG4gICAgICAgIGEge1xuICAgICAgICAgIGNvbG9yOiAkbW0tYmx1ZTtcbiAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgcGFkZGluZzogNXB4IDEycHg7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkbW0td2hpdGU7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgfVxuICAgICAgICAgIGh0bWwuYm9yZGVyaW1hZ2UgJiB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwcHggMHB4O1xuICAgICAgICAgICAgYm9yZGVyLWltYWdlOiBpbWFnZVVybChcImJnLXN1Ym5hdi5wbmdcIikgNiA2IDYgNiBzdHJldGNoIHN0cmV0Y2g7XG4gICAgICAgICAgICBib3JkZXI6IHtcbiAgICAgICAgICAgICAgc3R5bGU6IHNvbGlkO1xuICAgICAgICAgICAgICB3aWR0aDogNnB4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgIHBhZGRpbmc6IDBweCA0cHg7XG4gICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaHRtbC5ib3hzaGFkb3cgJiB7IC8vIEZpeGVzIElFIHZpc3VhbCBib3JkZXIgYnVnXG4gICAgICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDJweCAkbW0td2hpdGU7XG4gICAgICAgICAgICAgIG1hcmdpbjogLTFweDtcbiAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJG1tLXdoaXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBodG1sLnN2Zy5jc3NhbmltYXRpb25zICYge1xuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDFweCkgcm90YXRlKDBkZWcpO1xuICAgICAgICAgICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtO1xuICAgICAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcbiAgICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGh0bWwuc3ZnLmNzc2FuaW1hdGlvbnMgJjpudGgtY2hpbGQob2RkKSBhOmhvdmVyIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMXB4KSByb3RhdGUoMmRlZyk7XG4gICAgICAgIH1cbiAgICAgICAgaHRtbC5zdmcuY3NzYW5pbWF0aW9ucyAmOm50aC1jaGlsZChldmVuKSBhOmhvdmVyIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMXB4KSByb3RhdGUoLTJkZWcpO1xuICAgICAgICB9XG4gICAgICAgICYuc3BlY2lhbCBhIHNwYW4ge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRtbS13aGl0ZTtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGh0bWwuc3ZnLmNzc2FuaW1hdGlvbnMgJiAubmF2ICNzdWJuYXYge1xuICAgICAgZGlzcGxheTogbm9uZTsgLy8gaGlkZSB1bnRpbCBqYXZhc2NyaXB0IGNhbiBkaXNwbGF5XG4gICAgfVxuICAgIGh0bWwuc3ZnLmNzc2FuaW1hdGlvbnMgJiAubmF2LmxvYWRlZCAjc3VibmF2IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7IC8vIEpTIHJldmVhbHMgdGhpc1xuICAgIH1cbiAgICAjc3VibmF2IHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAvL1xuICAgICAgaHRtbC5zdmcuY3NzYW5pbWF0aW9ucyAmIHtcbiAgICAgICAgbGkge1xuICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xuICAgICAgICB9XG4gICAgICAgIGxpOm50aC1jaGlsZCgxKSB7XG4gICAgICAgICAgQGluY2x1ZGUgdmVuZG9ycHJvcCgnYW5pbWF0aW9uJywgJ3NsaWRlSW5Eb3duU3VibmF2T2RkIC42cyAxLjJzIGVhc2Utb3V0IDEgZm9yd2FyZHMnKTtcbiAgICAgICAgfVxuICAgICAgICBsaTpudGgtY2hpbGQoMikge1xuICAgICAgICAgIEBpbmNsdWRlIHZlbmRvcnByb3AoJ2FuaW1hdGlvbicsICdzbGlkZUluRG93blN1Ym5hdkV2ZW4gLjZzIDEuM3MgZWFzZS1vdXQgMSBmb3J3YXJkcycpO1xuICAgICAgICB9XG4gICAgICAgIGxpOm50aC1jaGlsZCgzKSB7XG4gICAgICAgICAgQGluY2x1ZGUgdmVuZG9ycHJvcCgnYW5pbWF0aW9uJywgJ3NsaWRlSW5Eb3duU3VibmF2T2RkIC42cyAxLjRzIGVhc2Utb3V0IDEgZm9yd2FyZHMnKTtcbiAgICAgICAgfVxuICAgICAgICBsaTpudGgtY2hpbGQoNCkge1xuICAgICAgICAgIEBpbmNsdWRlIHZlbmRvcnByb3AoJ2FuaW1hdGlvbicsICdzbGlkZUluRG93blN1Ym5hdkV2ZW4gLjZzIDEuNXMgZWFzZS1vdXQgMSBmb3J3YXJkcycpO1xuICAgICAgICB9XG4gICAgICAgIGxpOm50aC1jaGlsZCg1KSB7XG4gICAgICAgICAgQGluY2x1ZGUgdmVuZG9ycHJvcCgnYW5pbWF0aW9uJywgJ3NsaWRlSW5Eb3duU3VibmF2T2RkIC42cyAxLjZzIGVhc2Utb3V0IDEgZm9yd2FyZHMnKTtcbiAgICAgICAgfVxuICAgICAgICBsaTpudGgtY2hpbGQoNikge1xuICAgICAgICAgIEBpbmNsdWRlIHZlbmRvcnByb3AoJ2FuaW1hdGlvbicsICdzbGlkZUluRG93blN1Ym5hdkV2ZW4gLjZzIDEuN3MgZWFzZS1vdXQgMSBmb3J3YXJkcycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBQb3NoZXIgY3ViaWMgYmV6aWVyIGZvciB0aG9zZSB3aG8gc3VwcG9ydCBpdFxuICAgICAgaHRtbC5zdmcuY3NzYW5pbWF0aW9ucy5jdWJpY2JlemllcnJhbmdlICYge1xuICAgICAgICBsaTpudGgtY2hpbGQoMSkge1xuICAgICAgICAgIEBpbmNsdWRlIHZlbmRvcnByb3AoJ2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24nLCAnY3ViaWMtYmV6aWVyKC4yOCwuOTAsLjc4LDEuMDYpJyk7XG4gICAgICAgIH1cbiAgICAgICAgbGk6bnRoLWNoaWxkKDIpIHtcbiAgICAgICAgICBAaW5jbHVkZSB2ZW5kb3Jwcm9wKCdhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uJywgJ2N1YmljLWJlemllciguMjgsLjkwLC43OCwxLjA2KScpO1xuICAgICAgICB9XG4gICAgICAgIGxpOm50aC1jaGlsZCgzKSB7XG4gICAgICAgICAgQGluY2x1ZGUgdmVuZG9ycHJvcCgnYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbicsICdjdWJpYy1iZXppZXIoLjI4LC45MCwuNzgsMS4wNiknKTtcbiAgICAgICAgfVxuICAgICAgICBsaTpudGgtY2hpbGQoNCkge1xuICAgICAgICAgIEBpbmNsdWRlIHZlbmRvcnByb3AoJ2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24nLCAnY3ViaWMtYmV6aWVyKC4yOCwuOTAsLjc4LDEuMDYpJyk7XG4gICAgICAgIH1cbiAgICAgICAgbGk6bnRoLWNoaWxkKDUpIHtcbiAgICAgICAgICBAaW5jbHVkZSB2ZW5kb3Jwcm9wKCdhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uJywgJ2N1YmljLWJlemllciguMjgsLjkwLC43OCwxLjA2KScpO1xuICAgICAgICB9XG4gICAgICAgIGxpOm50aC1jaGlsZCg2KSB7XG4gICAgICAgICAgQGluY2x1ZGUgdmVuZG9ycHJvcCgnYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbicsICdjdWJpYy1iZXppZXIoLjI4LC45MCwuNzgsMS4wNiknKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGJvZHkuam9icyAmIHtcbiAgICAgICNzdWJuYXYge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMjAlO1xuICAgICAgfVxuICAgIH1cbiAgICBib2R5LmdhbWVzICYge1xuICAgICAgI3N1Ym5hdiB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cbiAgICB9XG4gICAgI21lbnVjb25uZWN0b3Ige1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gICAgI21lbnVjb25uZWN0b3Ige1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB6LWluZGV4OiAtMTtcbiAgICB9XG5cbiAgfVxuXG5cbn1cblxuXG5AbWl4aW4gbXEtcmV0aW5hLXRvcG5hdigpIHtcblxuICBoZWFkZXIudG9wbmF2IGgxIGEjbW0tbG9nbyB7XG4gICAgYmFja2dyb3VuZDogc3ByaXRlLXVybCgkbWVudTJ4LW1tLWxvZ28pIG5vLXJlcGVhdCBwb3NpdGlvbl90b19lbXMoc3ByaXRlLXBvc2l0aW9uKCRtZW51MngtbW0tbG9nbykpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byBlbShzcHJpdGUtaGVpZ2h0KCRtZW51MngtYmxvZykpO1xuICB9XG5cbiAgaGVhZGVyLnRvcG5hdiB7XG4gICAgLyogTWFpbiBtZW51IC0gRGVza3RvcCAqL1xuICAgICRtZW51aXRlbV93aWR0aHM6IHNwcml0ZS13aWR0aCgkbWVudS1ibG9nKSArIHNwcml0ZS13aWR0aCgkbWVudS1nYW1lcykgICsgc3ByaXRlLXdpZHRoKCRtZW51LWFib3V0KSAgKyBzcHJpdGUtd2lkdGgoJG1lbnUtam9icykgICsgc3ByaXRlLXdpZHRoKCRtZW51LWZhbmNsdWIpO1xuICAgICYsaHRtbC5zdmcucGxheXN0YXRpb24gJiB7XG4gICAgICAmIHVsLm1haW5tZW51IGxpIHtcbiAgICAgICAgQGVhY2ggJHJldGluYS1zcHJpdGUgaW4gJG1haW5tZW51Mngtc3ByaXRlcyB7XG4gICAgICAgICAgI20tI3skcmV0aW5hLXNwcml0ZX0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogc3ByaXRlLXVybCgkcmV0aW5hLXNwcml0ZSkgbm8tcmVwZWF0IHBvc2l0aW9uX3RvX2VtcyhzcHJpdGUtcG9zaXRpb24oJHJldGluYS1zcHJpdGUpKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byBlbShzcHJpdGUtaGVpZ2h0KCRyZXRpbmEtc3ByaXRlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cbiIsIi8qIEZvcm1zISAqL1xuXG4uYnV0dG9uIHtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBib3JkZXI6IDBweDtcbiAgd29yZC1icmVhazogbm9uZTtcbiAgcGFkZGluZzoge1xuICAgIGxlZnQ6IGd1dHRlcigpICogMjtcbiAgICByaWdodDogZ3V0dGVyKCkgKiAyO1xuICAgIHRvcDogMnB4O1xuICAgIGJvdHRvbTogMnB4O1xuICB9XG4gIGNvbG9yOiAkbW0td2hpdGU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRtbS1ibHVlO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gICYuYmlnIHtcbiAgICBmb250LXNpemU6IDJlbTtcbiAgfVxuICAmLnNlY29uZGFyeSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG1tLWdyZXk7XG4gIH1cbn1cbmEuYnV0dG9uIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBib3JkZXI6IDA7XG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtlbigkbW0tYmx1ZSwgMTAlKTtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYm9yZGVyOiAwcHggIWltcG9ydGFudDtcbiAgfVxufVxuXG5cbmZvcm0ge1xuICBmaWVsZHNldCB7XG4gICAgYSB7XG4gICAgICBAZXh0ZW5kICVsaW5rc3R5bGU7XG4gICAgfVxuICAgIHAuZm9ybXRleHQge1xuICAgICAgbWFyZ2luLXRvcDogLTEuNWVtO1xuICAgIH1cbiAgICBzZWxlY3Qge1xuICAgICAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygyMXB4KTtcbiAgICAgIEBpbmNsdWRlIGFkanVzdC1sZWFkaW5nLXRvKDEsIDE2cHgpO1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBtZW51bGlzdDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJG1tLWdyZXksIDAuMDUpO1xuICAgIH1cbiAgICBpbnB1dCB7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAkbW0tZ3JleTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJG1tLWdyZXksIDAuMDUpO1xuICAgICAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oMSwgMTZweCk7XG4gICAgICBwYWRkaW5nOiB7XG4gICAgICAgIHRvcDogMXB4O1xuICAgICAgICBib3R0b206IDFweDtcbiAgICAgIH1cbiAgICAgICYuZmlsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgICAgICBib3JkZXI6IDBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oMSwgMTZweCk7XG4gICAgICB9XG4gICAgICAmLnNlYXJjaGJveCB7XG4gICAgICAgIHdpZHRoOiA2OSU7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMHB4O1xuICAgICAgICBib3JkZXItcmlnaHQ6IDBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICAgICAgfVxuICAgICAgJi5zZWFyY2guYnV0dG9uIHtcbiAgICAgICAgd2lkdGg6IDMwJTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGV4dGFyZWEge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJG1tLWdyZXk7XG4gICAgICBib3JkZXItcmFkaXVzOiBlbSg0cHgpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkbW0tZ3JleSwgMC4wNSk7XG4gICAgfVxuICAgIGZpZWxkc2V0IHtcbiAgICAgIGxlZ2VuZCB7XG4gICAgICAgIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oMjFweCk7XG4gICAgICB9XG4gICAgICBsYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICAgIH1cbiAgICB9XG4gICAgdWwge1xuICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGFiZWwgYWJiciB7XG4gICAgICBjb2xvcjogJG1tLWdyZXk7XG4gICAgfVxuICAgIGRpdi5lcnJvciBlbSwgZGl2LmVycm9yIGxhYmVsIHtcbiAgICAgIGNvbG9yOiAkbW0tZXJyb3ItcmVkO1xuICAgIH1cbiAgICBwLmVycm9yIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIHVsLmVycm9ycyB7XG4gICAgICBwYWRkaW5nOiAwIDAgZ3V0dGVyKCkqMiBndXR0ZXIoKSo4ICFpbXBvcnRhbnQ7XG4gICAgICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XG4gICAgICBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcbiAgICAgICAgY29sb3I6ICRtbS1lcnJvci1yZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEhvbmV5cG90IGNhcHRjaGFcbiAgICAubmVnYWltcG9ydGFuY2NlIHtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuIiwiIiwiLyogR3JpZCAqL1xuaHRtbCwgYm9keSwgYm9keSA+IGhlYWRlciwgYm9keSA+IGZvb3RlciBzZWN0aW9uLCBtYWluIHtcbiAgbWluLXdpZHRoOiAzMDBweDtcbn1cbmJvZHkge1xuICBwb3NpdGlvbjogc3RhdGljO1xufVxuaHRtbCwgYm9keSA+IGZvb3RlciBzZWN0aW9uLCBtYWluIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuYm9keSA+IGhlYWRlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXYge1xuICAgIEBpbmNsdWRlIGNvbnRhaW5lcjtcbiAgICBoMSB7XG4gICAgICBAaW5jbHVkZSBzcGFuKDgpO1xuICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkZGVza3RvcCkge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDEgb2YgKDIgNikgYXQgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHVsIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4oOCk7XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCRkZXNrdG9wKSB7XG4gICAgICAgIEBpbmNsdWRlIHNwYW4oMSBvZiAoMiA2KSBhdCAyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbm1haW4ge1xuICBAaW5jbHVkZSBjb250YWluZXI7XG4gIHBhZGRpbmctdG9wOiBlbSg5MHB4KTtcbiAgQGluY2x1ZGUgYnJlYWtwb2ludCgkZGVza3RvcCkge1xuICAgIHBhZGRpbmctdG9wOiBlbSgkaGVhZGVyLWhlaWdodCsyMCk7XG4gIH1cbiAgc2VjdGlvbiB7XG4gICAgQGluY2x1ZGUgc3Bhbig4KTtcbiAgfVxufVxuYm9keSA+IGZvb3RlciB7XG4gIHdpZHRoOiAxMDAlO1xuICBzZWN0aW9uIHtcbiAgICBAaW5jbHVkZSBjb250YWluZXI7XG4gIH1cbn1cblxuZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBsZWdlbmQge1xuICAgICAgQGluY2x1ZGUgcmh5dGhtO1xuICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG4gICAgZmllbGRzZXQgbGVnZW5kIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICAgIHAge1xuICAgICAgcGFkZGluZzoge1xuICAgICAgICBsZWZ0OiAwcHggIWltcG9ydGFudDtcbiAgICAgICAgcmlnaHQ6IDBweCAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cbiAgICBkaXYge1xuICAgICAgQGluY2x1ZGUgZnVsbDtcbiAgICAgIEBpbmNsdWRlIHJoeXRobTtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAmLnN1Ym1pdCB7XG4gICAgICAgIEBpbmNsdWRlIGZ1bGw7XG4gICAgICB9XG4gICAgfVxuICAgIGxhYmVsLCAudGV4dCwgc2VsZWN0LCBmaWVsZHNldCwgdGV4dGFyZWEsIGxhYmVsICsgbGFiZWwsIGVtLCAuZmlsZSB7XG4gICAgICBAaW5jbHVkZSBmdWxsO1xuICAgIH1cbiAgICBsaSBsYWJlbCB7XG4gICAgICBmbG9hdDogbm9uZTtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgcGFkZGluZy1yaWdodDogZ3V0dGVyKCk7XG4gICAgfVxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJGRlc2t0b3ApIHtcbiAgICAgICRmb3JtZ3JpZDogKDEgMik7XG4gICAgICBkaXYge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDIgb2YgJGZvcm1ncmlkIGF0IDEpO1xuICAgICAgICBAaW5jbHVkZSByaHl0aG07XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICYuc3VibWl0IHtcbiAgICAgICAgICBAaW5jbHVkZSBwdXNoKDEgb2YgJGZvcm1ncmlkKTtcbiAgICAgICAgfVxuICAgICAgICBkaXYuc2VhcmNoZmllbGQge1xuICAgICAgICAgIG1hcmdpbjoge1xuICAgICAgICAgICAgYm90dG9tOiAwcHg7XG4gICAgICAgICAgICB0b3A6IDBweDtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkY29udGV4dDogbmVzdGVkKDIgb2YgJGZvcm1ncmlkIGF0IDEpO1xuICAgICAgbGFiZWwge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDEgb2YgJGNvbnRleHQgYXQgMSk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICAgICAgY2xlYXI6IG5vbmU7XG4gICAgICAgICYuZnVsbCB7XG4gICAgICAgICAgQGluY2x1ZGUgZnVsbDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiBlbSg4cHgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAudGV4dCwgc2VsZWN0LCBmaWVsZHNldCwgdGV4dGFyZWEsIGxhYmVsICsgbGFiZWwsIC5maWxlLCAuc2VhcmNoZmllbGQge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDEgb2YgJGNvbnRleHQgYXQgMik7XG4gICAgICAgIGNsZWFyOiBub25lO1xuICAgICAgfVxuICAgICAgZW0ge1xuICAgICAgICBAaW5jbHVkZSBzcGFuKDEgb2YgJGNvbnRleHQgYXQgMik7XG4gICAgICAgIGNsZWFyOiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uZW5kIHtcbiAgY2xlYXI6IGJvdGg7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKiBOb3QgZXhjbHVzaXZlbHkgZ3JpZCwgYnV0IGxheW91dCByZWxhdGluZyB0byB0eXBvZ3JhcGh5ICovXG5cbm1haW4ge1xuICBhcnRpY2xlIHtcbiAgICAuYm9keWNvcHkge1xuICAgICAgaDEsIGgyLCBoMyB7XG4gICAgICAgIHBhZGRpbmc6IDAgZ3V0dGVyKCkqNCBndXR0ZXIoKSoyIGd1dHRlcigpKjQ7XG4gICAgICB9XG4gICAgICBoNCwgaDUsIGg2IHtcbiAgICAgICAgcGFkZGluZzogMCBndXR0ZXIoKSo0IGd1dHRlcigpKjIgZ3V0dGVyKCkqNDtcbiAgICAgIH1cbiAgICAgIHAsIGxpLCBkbCwgYmxvY2txdW90ZSBjaXRlLCBwcmUsIGNhcHRpb24sIGZvcm0ge1xuICAgICAgICBwYWRkaW5nOiAwIGd1dHRlcigpKjQgZ3V0dGVyKCkqMiBndXR0ZXIoKSo0O1xuICAgICAgfVxuICAgICAgaHIge1xuICAgICAgICBjbGVhcjogYm90aDtcbiAgICAgICAgbWFyZ2luOiAwIGd1dHRlcigpKjQgZ3V0dGVyKCkqMiBndXR0ZXIoKSo0O1xuICAgICAgfVxuICAgICAgdGFibGUge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgbWFyZ2luOiBndXR0ZXIoKSoyIGF1dG87XG4gICAgICB9XG4gICAgICBjb2wsIHRoLCB0ZCB7XG4gICAgICAgIHBhZGRpbmc6IGd1dHRlcigpIGd1dHRlcigpKjQ7XG4gICAgICB9XG4gICAgICBmaWdjYXB0aW9uIHAge1xuXG4gICAgICB9XG4gICAgICBibG9ja3F1b3RlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogZ3V0dGVyKCkqMjtcbiAgICAgIH1cbiAgICAgIGJsb2NrcXVvdGUsIHEge1xuXG4gICAgICB9XG4gICAgICB1bCwgb2wge1xuICAgICAgICBwYWRkaW5nOiAwIGd1dHRlcigpKjQgZ3V0dGVyKCkqMiBndXR0ZXIoKSo4O1xuICAgICAgICB1bCwgb2wsIGRsIHtcbiAgICAgICAgICBwYWRkaW5nOiAwIGd1dHRlcigpKjQgZ3V0dGVyKCkgZ3V0dGVyKCkqNDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdWwuaW5saW5lLCBvbC5pbmxpbmUge1xuICAgICAgICBwYWRkaW5nOiAwIGd1dHRlcigpKjQgZ3V0dGVyKCkqMiBndXR0ZXIoKSo0O1xuICAgICAgICBsaSB7XG4gICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgJi5oaWRlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsaSwgbGkgcCB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB9XG4gICAgICBkZCB7XG4gICAgICAgIHBhZGRpbmc6IDAgMCAwIGd1dHRlcigpKjQ7XG4gICAgICAgIHVsLCBvbCwgZGwge1xuICAgICAgICAgIHBhZGRpbmc6IDAgZ3V0dGVyKCkqNCBndXR0ZXIoKSAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQpIHtcbiAgICAgICAgZmlndXJlIHtcbiAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogZ3V0dGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJG1vYmlsZSkge1xuICAgICAgICBmaWd1cmUge1xuICAgICAgICAgIHBhZGRpbmctYm90dG9tOiBndXR0ZXIoKSoyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4vLyBPZmZzZXQgYW55IGFuY2hvciB0YWcgYmVpbmcgdXNlZCBhcyBhY3R1YWwgYW5jaG9ycyBieSB0aGUgaGVpZ2h0IG9mIHRoZSB0b3BiYXIsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBvYnNjdXJlIHRoZSBhbmNob3Jcbm1haW4ge1xuICBhW25hbWVdIHtcbiAgICBvdXRsaW5lOiAwO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBtYXJnaW4tdG9wOiAtMTAwcHg7XG4gICAgICBoZWlnaHQ6IDEwMHB4O1xuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cbiAgICAmOmZvY3VzIHtcbiAgICAgIG91dGxpbmU6IDA7XG4gICAgfVxuICB9XG59XG5AaW5jbHVkZSBicmVha3BvaW50KCRkZXNrdG9wKSB7XG4gIG1haW4ge1xuICAgIGFbbmFtZV0ge1xuICAgICAgJjpiZWZvcmUge1xuICAgICAgICBtYXJnaW4tdG9wOiAtJGhlYWRlci1oZWlnaHQ7XG4gICAgICAgIGhlaWdodDogJGhlYWRlci1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5mb290ZXIge1xuICBwLCBjaXRlLCBsaSwgZGwsIGg2IHtcbiAgICBwYWRkaW5nOiAwIGd1dHRlcigpKjIgZW0oJGJhc2UtZm9udC1zaXplKSBndXR0ZXIoKSoyO1xuICB9XG59XG4iLCIvKiBIZWxwZXIgY2xhc3NlcyAqL1xuaHRtbC5mb250ZmFjZSAuaGlkZSB7XG5cdGRpc3BsYXk6IG5vbmU7XG59XG4ubm9saW5rY29sb3VyIHtcblx0Y29sb3I6IGluaGVyaXQgIWltcG9ydGFudDtcbn1cbi5ncmV5IHtcblx0Y29sb3I6ICRtbS1ncmV5O1xufVxuLmZsb2F0bGVmdCB7XG5cdGZsb2F0OiBsZWZ0O1xufVxuLmZsb2F0cmlnaHQge1xuXHRmbG9hdDogcmlnaHQ7XG59XG4uY2xlYXJlciB7IFxuXHRjbGVhcjpib3RoO1xuXHRAaW5jbHVkZSBjbGVhcmZpeCgpO1xufVxuLmNlbnRlciwgLmNlbnRyZSB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0aW1nIHtcblx0XHRtYXJnaW46IGF1dG87XG5cdH1cbn1cbmh0bWwgYm9keSAubm9iZyB7XG5cdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHQmOmJlZm9yZSwgJjphZnRlciB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG5cdFx0dmlzaWJpbGl0eTogaGlkZGVuO1xuXHR9XG59XG5hLnZpZXcge1xuXHRAaW5jbHVkZSB2ZW5kb3J2YWx1ZShcImN1cnNvclwiLCBcInpvb20taW5cIik7XG59XG4uZXJyb3Ige1xuXHRjb2xvcjogJG1tLWVycm9yLXJlZDtcbn1cbi5mb3JjZS1lcnJvciB7XG5cdGNvbG9yOiAkbW0tZXJyb3ItcmVkICFpbXBvcnRhbnQ7XG59IiwiLyogSWNvbnMgKi9cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ01tSWNvbnMnO1xuICBzcmM6IHVybCgnI3skZm9udHMtZGlyfW1taWNvbnMvbW1pY29ucy1ub3JtYWwtd2ViZm9udC5lb3QnKTtcbiAgc3JjOiB1cmwoJyN7JGZvbnRzLWRpcn1tbWljb25zL21taWNvbnMtbm9ybWFsLXdlYmZvbnQuZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKSxcbiAgICAgICB1cmwoJyN7JGZvbnRzLWRpcn1tbWljb25zL21taWNvbnMtbm9ybWFsLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLFxuICAgICAgIHVybCgnI3skZm9udHMtZGlyfW1taWNvbnMvbW1pY29ucy1ub3JtYWwtd2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgICAgdXJsKCcjeyRmb250cy1kaXJ9bW1pY29ucy9tbWljb25zLW5vcm1hbC13ZWJmb250LnN2ZyNtbWljb25zLW5vcm1hbCcpIGZvcm1hdCgnc3ZnJyk7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbi5pY29uOmFmdGVyIHtcbiAgZm9udC1mYW1pbHk6ICdNbUljb25zJztcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zaXplOiAxLjRlbTtcbiAgbGluZS1oZWlnaHQ6IDBweDtcbiAgbWFyZ2luLXJpZ2h0OiAwLjNlbTtcbn1cbi5pY29uLnRpbWU6YWZ0ZXIge1xuICBjb250ZW50OiBcIlxcRTAwMVwiO1xufVxuLmljb24uZXh0ZXJuYWxyZXNvdXJjZTphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXFxFMDAyXCI7XG59XG4uaWNvbi5idXJnZXI6YWZ0ZXIge1xuICBjb250ZW50OiBcIlxcRTAwM1wiO1xufVxuIiwiLyogTWVzc3kgb2xkIHN0eWxlcyBmb3IgZm9ybWF0dGluZyBvbGRlciBibG9nIHBvc3RzICovXG5cbm1haW4gLmJvZHljb3B5LmFyY2hpdmUge1xuXHRwIGEge1xuXHRcdGJvcmRlci1ib3R0b206IDBweDtcblx0fVxuXHQuZmxvYXRsZWZ0LCAuYWxpZ25sZWZ0IHtcblx0XHRmbG9hdDogbGVmdDtcblx0fVxuXHRpbWcuZmxvYXRyaWdodCwgaW1nLmFsaWducmlnaHQge1xuXHRcdG1hcmdpbjogMCAwIGVtKDI0cHgpIGVtKDI0cHgpO1xuXHR9XG5cdC5mbG9hdHJpZ2h0LCAuYWxpZ25yaWdodCB7XG5cdFx0ZmxvYXQ6IHJpZ2h0O1xuXHR9XG5cdGltZy5mbG9hdGxlZnQsIGltZy5hbGlnbmxlZnQge1xuXHRcdG1hcmdpbjogMCBlbSgyNHB4KSBlbSgyNHB4KSAwO1xuXHR9XG5cdGltZy5mdWxsaW1nIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0Ly8gbWFyZ2luLWxlZnQ6IC0oZ3V0dGVyKCkqNCk7XG5cdFx0Ly8gbWFyZ2luLXJpZ2h0OiAtKGd1dHRlcigpKjQpO1xuXHRcdC8vIHdpZHRoOiAxMDAlKyg0LjU5NzclKjIpO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG5cdCYgPiBvYmplY3QsICYgPiBlbWJlZCwgJiA+IGlmcmFtZSB7XG5cdFx0cGFkZGluZzogMCBndXR0ZXIoKSo0IGd1dHRlcigpKjIgZ3V0dGVyKCkqNDtcblx0fVxuXHRibG9ja3F1b3RlIHtcblx0ICAvLyBAaW5jbHVkZSBhZGp1c3QtZm9udC1zaXplLXRvKDIxcHgpO1xuXHQgIC8vIGxpbmUtaGVpZ2h0OiAyLjFlbTtcbiAgXHRwYWRkaW5nOiAwIGd1dHRlcigpKjQgZ3V0dGVyKCkqMiBndXR0ZXIoKSo4O1xuXHR9XG5cdGJsb2NrcXVvdGUgcCB7XG5cdFx0cGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XG5cdFx0cGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50O1xuXHR9XG59XG5cblxuLm1tcGlja3MtbGV2ZWwge1xuXHRkaXNwbGF5OiBibG9jaztcblx0ZmxvYXQ6IGxlZnQ7XG5cdGNsZWFyOiBib3RoO1xuXHR3aWR0aDogOTAlO1xuXHRtYXJnaW46IDAgNSUgNSUgNSU7XG5cdHBhZGRpbmc6IDA7XG5cdGJvcmRlcjogMXB4IHNvbGlkICNGQzBCQTA7XG5cdGJvcmRlci1yYWRpdXM6IDZweDtcblx0LW1vei1ib3JkZXItcmFkaXVzOiA2cHg7XG5cdC1tb3otYm9yZGVyLXJhZGl1czogNnB4O1xuXHQtd2Via2l0LWJvcmRlci1yYWRpdXM6IDZweDtcblx0LXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7XG59XG4ubW1waWNrcy1sZXZlbCAucGFkZGVyIHtcblx0cGFkZGluZzogMTJweCAhaW1wb3J0YW50O1xufVxuLm1tcGlja3MtbGV2ZWwgLmhyIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cbi5tbXBpY2tzLWJhZGdlIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdGZsb2F0OiBsZWZ0O1xuXHR3aWR0aDogMjUlO1xuXHRoZWlnaHQ6IDA7XG5cdG1hcmdpbi1ib3R0b206IDI1JTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLy9hcmNoaXZlLmxvbHJ1cy5tZWRpYW1vbGVjdWxlLmNvbS8yMDE0L3VwbG9hZHMvbW1waWNrcy9IdW1hbl9Cb2R5LnBuZyk7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IHRvcCBsZWZ0O1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRwYWRkaW5nOiAwcHg7XG59XG4ubW1waWNrcy1iYWRnZSBpbWcge1xuXHRkaXNwbGF5OiBibG9jaztcblx0ZmxvYXQ6IGxlZnQ7XG5cdHdpZHRoOiAxMDAlO1xufVxuLm1tcGlja3MtaW5mbyB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRmbG9hdDogbGVmdDtcblx0d2lkdGg6IDc1JTtcblx0cGFkZGluZzogMCAwIDEycHggMDtcbn1cbi5tbXBpY2tzLWluZm8gaDMsIC5tbXBpY2tzLWluZm8gaDEge1xuXHRkaXNwbGF5OiBibG9jaztcblx0ZmxvYXQ6IGxlZnQ7XG5cdGNsZWFyOiBib3RoO1xuXHRwYWRkaW5nOiAwIDAgMCAwO1xuXHRmb250LXNpemU6IDEuNWVtO1xufVxuLm1tcGlja3MtaW5mbyBwIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdGZsb2F0OiBsZWZ0O1xuXHRjbGVhcjogYm90aDtcblx0cGFkZGluZzogMCAwIDAgMDtcbn1cbi5tbXBpY2tzLWxldmVsIC5pbmZvIHtcblx0d2lkdGg6IDc1JTtcbn1cbi8qXG4ubW1waWNrcy1sZXZlbCAuaW5mbyAucGFkZGVyIHtcblx0d2lkdGg6IDYwMHB4ICFpbXBvcnRhbnQ7XG59XG4ubW1waWNrcy1sZXZlbCAuaW5mbyAucGFkZGVyIC5wIHtcblx0d2lkdGg6IDM2NHB4ICFpbXBvcnRhbnQ7XG59XG4qL1xuLm1tcGlja3MtcmF0aW5nIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdGZsb2F0OiBsZWZ0O1xuXHRjbGVhcjogYm90aDtcblx0cGFkZGluZzogNnB4IDAgMCAxNnB4XG59XG4ubW1waWNrcy1kZXNjIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdGZsb2F0OiBsZWZ0O1xuXHRjbGVhcjogYm90aDtcblx0cGFkZGluZzogNnB4IDAgMCAwO1xuXHR3aWR0aDogNDAwcHg7XG59XG4ubW1waWNrcy1kZXNjIHAge1xuXHR3aWR0aDogNDAwcHg7XG59XG4ubW1waWNrcy12aWRlbyB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRmbG9hdDogbGVmdDtcblx0Y2xlYXI6IGJvdGg7XG5cdHdpZHRoOiAxMDAlO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdHBhZGRpbmc6IDI0cHggMCAxMnB4IDA7XG59XG4ubW1waWNrcy12aWRlbyBwe1xuXHRwYWRkaW5nOiA2cHggMCAwIDA7XG59XG4ubW1waWNrcy1sZXZlbCB7XG5cdC5yZXZpZXcge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdGNsZWFyOiBib3RoO1xuXHRcdHdpZHRoOiA5MCU7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdHBhZGRpbmc6IDEycHggNSU7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0fVxuXHQucmV2aWV3IGltZyB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0d2lkdGg6IDIwJTtcblx0fVxuXHQucmV2aWV3IGRpdiB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0d2lkdGg6IDc1JTtcblx0XHRwYWRkaW5nOiAxMnB4IDAgMCA1JTtcblx0fVxufVxuIiwiQGltcG9ydCBcIm1vZHVsZXMvcGxhY2Vob2xkZXJzXCI7XG5cbi8qIEZvbnQgZmFjZSBkZWZpbml0aW9ucyAqL1xuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICRyb2Nrd2VsbDtcbiAgc3JjOiB1cmwoJyN7JGZvbnRzLWRpcn1yb2traXR0L3Jva2tpdHQtd2ViZm9udC5lb3QnKTtcbiAgc3JjOiB1cmwoJyN7JGZvbnRzLWRpcn1yb2traXR0L3Jva2tpdHQtd2ViZm9udC5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgIHVybCgnI3skZm9udHMtZGlyfXJva2tpdHQvcm9ra2l0dC13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcbiAgICAgICB1cmwoJyN7JGZvbnRzLWRpcn1yb2traXR0L3Jva2tpdHQtd2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgICAgdXJsKCcjeyRmb250cy1kaXJ9cm9ra2l0dC9yb2traXR0LXdlYmZvbnQuc3ZnI3Jva2tpdHQnKSBmb3JtYXQoJ3N2ZycpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICRjcmlrZXk7XG4gIHNyYzogdXJsKCcjeyRmb250cy1kaXJ9Y3Jpa2V5X3NxdWF0L2NyaWtleV9zcXVhdC13ZWJmb250LmVvdCcpO1xuICBzcmM6IHVybCgnI3skZm9udHMtZGlyfWNyaWtleV9zcXVhdC9jcmlrZXlfc3F1YXQtd2ViZm9udC5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgIHVybCgnI3skZm9udHMtZGlyfWNyaWtleV9zcXVhdC9jcmlrZXlfc3F1YXQtd2ViZm9udC53b2ZmJykgZm9ybWF0KCd3b2ZmJyksXG4gICAgICAgdXJsKCcjeyRmb250cy1kaXJ9Y3Jpa2V5X3NxdWF0L2NyaWtleV9zcXVhdC13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcbiAgICAgICB1cmwoJyN7JGZvbnRzLWRpcn1jcmlrZXlfc3F1YXQvY3Jpa2V5X3NxdWF0LXdlYmZvbnQuc3ZnI2NyaWtleV9zcXVhdCcpIGZvcm1hdCgnc3ZnJyk7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJGpvbm55O1xuICBzcmM6IHVybCgnI3skZm9udHMtZGlyfWpvbm55X3F1ZXN0X2NsYXNzaWMvam9ubnlfcXVlc3RfY2xhc3NpYy13ZWJmb250LmVvdCcpO1xuICBzcmM6IHVybCgnI3skZm9udHMtZGlyfWpvbm55X3F1ZXN0X2NsYXNzaWMvam9ubnlfcXVlc3RfY2xhc3NpYy13ZWJmb250LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgICAgdXJsKCcjeyRmb250cy1kaXJ9am9ubnlfcXVlc3RfY2xhc3NpYy9qb25ueV9xdWVzdF9jbGFzc2ljLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLFxuICAgICAgIHVybCgnI3skZm9udHMtZGlyfWpvbm55X3F1ZXN0X2NsYXNzaWMvam9ubnlfcXVlc3RfY2xhc3NpYy13ZWJmb250LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKSxcbiAgICAgICB1cmwoJyN7JGZvbnRzLWRpcn1qb25ueV9xdWVzdF9jbGFzc2ljL2pvbm55X3F1ZXN0X2NsYXNzaWMtd2ViZm9udC5zdmcjam9ubnlfcXVlc3RfY2xhc3NpYycpIGZvcm1hdCgnc3ZnJyk7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJHB0c2FucztcbiAgc3JjOiB1cmwoJyN7JGZvbnRzLWRpcn1wdHNhbnNfcmVndWxhci9QVFM1NUYtd2ViZm9udC5lb3QnKTtcbiAgc3JjOiB1cmwoJyN7JGZvbnRzLWRpcn1wdHNhbnNfcmVndWxhci9QVFM1NUYtd2ViZm9udC5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgIHVybCgnI3skZm9udHMtZGlyfXB0c2Fuc19yZWd1bGFyL1BUUzU1Ri13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcbiAgICAgICB1cmwoJyN7JGZvbnRzLWRpcn1wdHNhbnNfcmVndWxhci9QVFM1NUYtd2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgICAgdXJsKCcjeyRmb250cy1kaXJ9cHRzYW5zX3JlZ3VsYXIvUFRTNTVGLXdlYmZvbnQuc3ZnI3B0c2Fuc19yZWd1bGFyJykgZm9ybWF0KCdzdmcnKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAkcHRzYW5zO1xuICBzcmM6IHVybCgnI3skZm9udHMtZGlyfXB0c2Fuc19pdGFsaWMvUFRTNTZGLXdlYmZvbnQuZW90Jyk7XG4gIHNyYzogdXJsKCcjeyRmb250cy1kaXJ9cHRzYW5zX2l0YWxpYy9QVFM1NkYtd2ViZm9udC5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgIHVybCgnI3skZm9udHMtZGlyfXB0c2Fuc19pdGFsaWMvUFRTNTZGLXdlYmZvbnQud29mZicpIGZvcm1hdCgnd29mZicpLFxuICAgICAgIHVybCgnI3skZm9udHMtZGlyfXB0c2Fuc19pdGFsaWMvUFRTNTZGLXdlYmZvbnQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpLFxuICAgICAgIHVybCgnI3skZm9udHMtZGlyfXB0c2Fuc19pdGFsaWMvUFRTNTZGLXdlYmZvbnQuc3ZnI3B0c2Fuc19pdGFsaWMnKSBmb3JtYXQoJ3N2ZycpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJHB0c2FucztcbiAgc3JjOiB1cmwoJyN7JGZvbnRzLWRpcn1wdHNhbnNfYm9sZC9QVFM3NUYtd2ViZm9udC5lb3QnKTtcbiAgc3JjOiB1cmwoJyN7JGZvbnRzLWRpcn1wdHNhbnNfYm9sZC9QVFM3NUYtd2ViZm9udC5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgIHVybCgnI3skZm9udHMtZGlyfXB0c2Fuc19ib2xkL1BUUzc1Ri13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcbiAgICAgICB1cmwoJyN7JGZvbnRzLWRpcn1wdHNhbnNfYm9sZC9QVFM3NUYtd2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgICAgdXJsKCcjeyRmb250cy1kaXJ9cHRzYW5zX2JvbGQvUFRTNzVGLXdlYmZvbnQuc3ZnI3B0c2Fuc19ib2xkJykgZm9ybWF0KCdzdmcnKTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJHB0c2FucztcbiAgc3JjOiB1cmwoJyN7JGZvbnRzLWRpcn1wdHNhbnNfYm9sZGl0YWxpYy9QVFM3NkYtd2ViZm9udC5lb3QnKTtcbiAgc3JjOiB1cmwoJyN7JGZvbnRzLWRpcn1wdHNhbnNfYm9sZGl0YWxpYy9QVFM3NkYtd2ViZm9udC5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpLFxuICAgICAgIHVybCgnI3skZm9udHMtZGlyfXB0c2Fuc19ib2xkaXRhbGljL1BUUzc2Ri13ZWJmb250LndvZmYnKSBmb3JtYXQoJ3dvZmYnKSxcbiAgICAgICB1cmwoJyN7JGZvbnRzLWRpcn1wdHNhbnNfYm9sZGl0YWxpYy9QVFM3NkYtd2ViZm9udC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyksXG4gICAgICAgdXJsKCcjeyRmb250cy1kaXJ9cHRzYW5zX2JvbGRpdGFsaWMvUFRTNzZGLXdlYmZvbnQuc3ZnI3B0c2Fuc19ib2xkX2l0YWxpYycpIGZvcm1hdCgnc3ZnJyk7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qIVxuICogVGhlIGZvbnRzIGxpc3RlZCBpbiB0aGlzIG5vdGljZSBhcmUgc3ViamVjdCB0byB0aGUgRW5kIFVzZXIgTGljZW5zZSBBZ3JlZW1lbnQocykgZW50ZXJlZCBpbnRvIGJ5IHRoZSB3ZWJzaXRlIG93bmVyLlxuICogQUxMIE9USEVSIFBBUlRJRVMgQVJFIEVYUExJQ0lUTFkgUkVTVFJJQ1RFRCBGUk9NIFVTSU5HIFRIRSBXRUJGT05UUyBCRUxPVy5cbiAqXG4gKiBJZiB5b3Ugd291bGQgbGlrZSB0byB1c2UgdGhlIGZvbnRzIGxpc3RlZCBiZWxvdywgeW91IG1heSBvYnRhaW4gYSB2YWxpZCBsaWNlbnNlIGF0IHRoZSBmb2xsb3dpbmcgVVJMcy5cbiAqXG4gKiBXZWJmb250OiBGZWxhIEJvbGQgYnkgTWFjaWVqIFfFgm9jemV3c2tpXG4gKiBVUkw6IGh0dHA6Ly93d3cubXlmb250cy5jb20vZm9udHMvbWFjaWVqLXdsb2N6ZXdza2kvZmVsYS9ib2xkL1xuICpcbiAqIFdlYmZvbnQ6IEZlbGEgYnkgTWFjaWVqIFfFgm9jemV3c2tpXG4gKiBVUkw6IGh0dHA6Ly93d3cubXlmb250cy5jb20vZm9udHMvbWFjaWVqLXdsb2N6ZXdza2kvZmVsYS9yZWd1bGFyLyAqXG4gKlxuICogV2ViZm9udHMgY29weXJpZ2h0OiBDb3B5cmlnaHQgMjAxNCBieSBNYWNpZWogV2xvY3pld3NraS4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqL1xuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICRmZWxhO1xuICBzcmM6IHVybCgnI3skZm9udHMtZGlyfWZlbGFfcHJvX3JlZ3VsYXIvRmVsYVByby1SZWd1bGFyLmVvdCcpO1xuICBzcmM6IHVybCgnI3skZm9udHMtZGlyfWZlbGFfcHJvX3JlZ3VsYXIvRmVsYVByby1SZWd1bGFyLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgICAgdXJsKCcjeyRmb250cy1kaXJ9ZmVsYV9wcm9fcmVndWxhci9GZWxhUHJvLVJlZ3VsYXIud29mZicpIGZvcm1hdCgnd29mZicpO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICRmZWxhO1xuICBzcmM6IHVybCgnI3skZm9udHMtZGlyfWZlbGFfcHJvX2JvbGQvRmVsYVByby1Cb2xkLmVvdCcpO1xuICBzcmM6IHVybCgnI3skZm9udHMtZGlyfWZlbGFfcHJvX2JvbGQvRmVsYVByby1Cb2xkLmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyksXG4gICAgICAgdXJsKCcjeyRmb250cy1kaXJ9ZmVsYV9wcm9fYm9sZC9GZWxhUHJvLUJvbGQud29mZicpIGZvcm1hdCgnd29mZicpO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyogQ29yZSB0eXBvZ3JhcGh5IGRlZmluaXRpb25zIGFjcm9zcyBzY3JlZW4gYW5kIHByaW50ICAqL1xuXG4vLyBCYXNlbGluZSBmb3IgQ29tcGFzcyBWZXJ0aWNhbCBSaHl0aG1cbmh0bWwge1xuICBsaW5lLWhlaWdodDogMS41ZW07XG59XG5cbi8qIFR5cGVmYWNlcyAtIEhUTUwgZGVmYXVsdHMgYXJlIGRlZmluZWQgaGVyZSwgYW55dGhpbmcgZWxzZSBzaG91bGQgYmUgY2xhc3MtYmFzZWQgKi9cbmgxLCBoMiB7XG4gIGNvbG9yOiAkbW0td2hpdGU7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIEBpbmNsdWRlIGRlZmluZWZvbnRzKCRyb2Nrd2VsbF9zdGFjayk7XG59XG5cbmgzLCBoNCwgaDUsIGg2LCAuY3Jpa2V5IHtcbiAgY29sb3I6ICRtbS13aGl0ZTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgQGluY2x1ZGUgZGVmaW5lZm9udHMoJGNyaWtleV9zdGFjayk7XG59XG5cbnAsIGNpdGUsIGxpLCBkbCwgZmlnY2FwdGlvbiwgdGQsIHRoLCBjb2wsIGNhcHRpb24sIGxhYmVsLCBzZWxlY3QsIGlucHV0LCBidXR0b24sIGxlZ2VuZCwgZmllbGRzZXQge1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBAaW5jbHVkZSBkZWZpbmVmb250cygkcHRzYW5zX3N0YWNrKTtcbn1cblxuYmxvY2txdW90ZSwgcSwgYmxvY2txdW90ZSAqLCBxICoge1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gIEBpbmNsdWRlIGRlZmluZWZvbnRzKCRwdHNlcmlmX3N0YWNrKTtcbn1cblxuZW0sIGksIGNpdGUsIHZhciwgZGZuLCBhY3JvbnltIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG5hYmJyLCBkZm4sIGFjcm9ueW0ge1xuICBjdXJzb3I6IGhlbHA7XG59XG5cbnN0cm9uZywgYiB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKiBUeXBlIHNpemVzIC0gQWdhaW4sIGVpdGhlciBjaGFuZ2UgZ2xvYmFsbHkgaGVyZSBvciBzcGVjaWZpY2FsbHkgd2l0aCBjdXN0b20gc3R5bGVzICovXG5oMSB7XG4gIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oNzJweCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjJlbTtcbiAgJi5sb25nIHtcbiAgICBAaW5jbHVkZSBhZGp1c3QtZm9udC1zaXplLXRvKDYwcHgsIDIuNSk7XG4gIH1cbn1cblxuaDIge1xuICBAaW5jbHVkZSBhZGp1c3QtZm9udC1zaXplLXRvKDUwcHgpO1xuICBsaW5lLWhlaWdodDogMS4yZW07XG59XG5cbmgxIGVtLCBoMiBlbSwgLmpvbm55cXVlc3Qge1xuICBAaW5jbHVkZSBkZWZpbmVmb250cygkam9ubnlfc3RhY2spO1xuICBodG1sLmZvbnRmYWNlICYge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdG9wOiBlbSgxLjVweCk7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG5cbmgzIHtcbiAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygyNHB4KTtcbiAgbGluZS1oZWlnaHQ6IDEuMWVtO1xufVxuXG5oNCwgaDUsIGg2IHtcbiAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygyMXB4KTtcbn1cblxuaDEsIGgyLCBoMywgaDQsIGg1IHtcbiAgYSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICB9XG59XG5cbmg1IHtcbiAgYSB7XG4gICAgQGV4dGVuZCAlYmFzZWxpbmtzdHlsZTtcbiAgfVxufVxuXG5saSwgZGwsIGRkIHtcbiAgY29sb3I6ICRtbS1kYXJrO1xuICBAaW5jbHVkZSBhZGp1c3QtZm9udC1zaXplLXRvKDIxcHgpO1xuICBhIHtcbiAgICBAZXh0ZW5kICViYXNlbGlua3N0eWxlO1xuICB9XG4gIGxpLCBkbCwgZGQsIHAge1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgfVxufVxuLmJvZHljb3B5IHtcbiAgbGksIGRsLCBkZCB7XG4gICAgYSB7XG4gICAgICBAZXh0ZW5kICVsaW5rc3R5bGU7XG4gICAgfVxuICB9XG59XG5cbmR0IHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbnAsIGNpdGUsIHRkLCB0aCwgbGFiZWwsIGlucHV0LCBidXR0b24sIGxlZ2VuZCwgc2VsZWN0LCB0ZXh0YXJlYSB7XG4gIGNvbG9yOiAkbW0tZGFyaztcbiAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygyMXB4KTtcbn1cblxucCwgY2l0ZSB7XG4gIGNvbG9yOiAkbW0tZGFyaztcbiAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygyMXB4KTtcbiAgbGluZS1oZWlnaHQ6IDIuMWVtO1xuICBhIHtcbiAgICBAZXh0ZW5kICVsaW5rc3R5bGU7XG4gIH1cbiAgcyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7XG4gIH1cbiAgYWJiciwgZGZuLCBhY3JvbnltIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggZG90dGVkICRtbS1ncmV5O1xuICB9XG59XG5cbnAgY2l0ZSB7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC1zaXplOiBpbmhlcml0O1xufVxuXG5zdXAsIHN1YiB7XG4gIGZvbnQtc2l6ZTogNjAlO1xuICBsaW5lLWhlaWdodDogOTAlO1xufVxuXG5zdXAge1xuICB2ZXJ0aWNhbC1hbGlnbjogc3VwZXI7XG59XG5cbnN1YiB7XG4gIHZlcnRpY2FsLWFsaWduOiBzdWI7XG59XG5cbmNvZGUsIGtiZCB7XG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgICAgICAgLyogQ1NTIDMgKi9cbiAgd2hpdGUtc3BhY2U6IC1tb3otcHJlLXdyYXA7ICAvKiBNb3ppbGxhLCBzaW5jZSAxOTk5ICovXG4gIHdoaXRlLXNwYWNlOiAtcHJlLXdyYXA7ICAgICAgLyogT3BlcmEgNC02ICovXG4gIHdoaXRlLXNwYWNlOiAtby1wcmUtd3JhcDsgICAgLyogT3BlcmEgNyAqL1xuICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIEBpbmNsdWRlIGRlZmluZWZvbnRzKCRtb25vc3BhY2Vfc3RhY2ssIGZhbHNlLCBmYWxzZSk7XG59XG5cbnNhbXAsIGtiZCBrYmQge1xuICBAZXh0ZW5kIGNvZGU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG5rYmQge1xuICBib3JkZXI6IDFweCBzb2xpZCAkbW0tZ3JleTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJG1tLWxpZ2h0Z3JleTtcbiAgYm9yZGVyLXJhZGl1czogZW0oNHB4KTtcbiAgcGFkZGluZzogMCBlbSg0cHgpIDAgZW0oNHB4KTtcbn1cblxua2JkIGtiZCB7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogbm9uZTtcbn1cblxuZGVsLCBpbnMsIG1hcmsge1xuICBwYWRkaW5nOiAwIGVtKDJweCk7XG59XG5cbm1hcmsge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRtbS1waW5rLCAwLjIpO1xufVxuXG5kZWwge1xuICBvcGFjaXR5OiAwLjY7XG59XG5cbmlucyB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG5wcmUge1xuICBAaW5jbHVkZSBhZGp1c3QtZm9udC1zaXplLXRvKDIxcHgpO1xufVxuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogNzAlO1xufVxuXG5maWdjYXB0aW9uIHtcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG4gICAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oMSwgMjRweCk7XG4gIH1cbiAgcCB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGNvbG9yOiAkbW0tZ3JleTtcbiAgICBAaW5jbHVkZSBhZGp1c3QtZm9udC1zaXplLXRvKDE2cHgpO1xuICB9XG59XG5cbmJsb2NrcXVvdGUsIHEge1xuICBjb2xvcjogJG1tLXRlYWw7XG59XG5ibG9ja3F1b3RlIHtcbiAgYSB7XG4gICAgQGV4dGVuZCAlbGlua3N0eWxlO1xuICB9XG4gIHAge1xuICAgIGNvbG9yOiAkbW0tdGVhbDtcbiAgICBAaW5jbHVkZSBhZGp1c3QtZm9udC1zaXplLXRvKDI5cHgpO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gIH1cbiAgJi5zaG9ydCBwIHtcbiAgICBAaW5jbHVkZSBhZGp1c3QtZm9udC1zaXplLXRvKDM2cHgpO1xuICB9XG59XG5xIHtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xufVxuXG5jaXRlIHtcbiAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygxOHB4KTtcbn1cblxuc3ZnIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuaHRtbC5zdmcgc3ZnIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbmNhcHRpb24sIGxlZ2VuZCB7XG4gIEBpbmNsdWRlIGFkanVzdC1mb250LXNpemUtdG8oMjRweCk7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG50YWJsZSB7XG4gIGNvbGdyb3VwIHtcbiAgICBjb2wge31cbiAgfVxuICB0aGVhZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICRtbS1ibHVlO1xuICAgIHRyIHtcbiAgICAgIHRoIHt9XG4gICAgfVxuICB9XG4gIHRib2R5IHtcbiAgICB0ciB7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJG1tLWdyZXk7XG4gICAgICB0ZCB7XG4gICAgICAgIGNvbG9yOiAkbW0tZGFya2dyZXk7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZChvZGQpIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgkbW0tZ3JleSwgMC4wNSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qIE1haW4gZWxlbWVudCwgcGFnZSBpbnNwZWNpZmljICovXG5tYWluIHtcbiAgLnNlY3Rpb250aXRsZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vKiBGb290ZXIgKi9cbmJvZHkgPiBmb290ZXIge1xuICBwYWRkaW5nOiBlbSgkYmFzZS1mb250LXNpemUqMikgMDtcbiAgaDYsIGh0bWwuZm9udGZhY2UgJiBoNiB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBAaW5jbHVkZSBkZWZpbmVmb250cygkcHRzYW5zX3N0YWNrKTtcbiAgfVxuICBwLCBoNiB7XG4gICAgQGluY2x1ZGUgYWRqdXN0LWZvbnQtc2l6ZS10bygxOHB4LCAxLjUpO1xuICAgIGNvbG9yOiAkbW0td2hpdGU7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4yNSk7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkbW9iaWxlKSB7XG4gICAgICBAaW5jbHVkZSBhZGp1c3QtZm9udC1zaXplLXRvKDEycHgsIDEuMik7XG4gICAgfVxuICB9XG59XG5cbi5ociB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nLXRvcDogMnJlbTtcbiAgcGFkZGluZy1ib3R0b206IDJyZW07XG4gIGhyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gICY6YmVmb3JlIHtcbiAgICBtYXJnaW46IGF1dG87XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA0cHg7XG4gICAgYmFja2dyb3VuZDoge1xuICAgICAgaW1hZ2U6IGltYWdlVXJsKFwidGltZWxpbmUtbmFub21hcmtlci1sZWZ0LnBuZ1wiKTtcbiAgICAgIHJlcGVhdDogcmVwZWF0LXg7XG4gICAgICBzaXplOiBjb250YWluO1xuICAgIH1cbiAgICBodG1sLnN2ZyAmIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlVXJsKFwidGltZWxpbmUtbmFub21hcmtlci1sZWZ0LnN2Z1wiKTtcbiAgICB9XG4gIH1cbiAgJi5oci0taGFsZiB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgd2lkdGg6IDUwJTtcbiAgICB9XG4gIH1cbn1cblxuLyogUHJpbnQgc3BlY2lmaWMgc3R5bGVzICovXG5AaW5jbHVkZSBicmVha3BvaW50KHByaW50KSB7XG4gIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogNzAlO1xuICB9XG4gIGh0bWwgKiwgYm9keSAqIHtcbiAgICBjb2xvcjogJG1tLWRhcms7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIGh0bWwgYm9keSBmb290ZXIge1xuICAgIGg2LHAge1xuICAgIGNvbG9yOiAkbW0tZGFyaztcbiAgICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgICB9XG4gIH1cbiAgLmdhbGxlcnlMYXlvdXQgLmdhbGxlcnlJdGVtIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbiAgaGVhZGVyLnRvcG5hdiAubmF2LCBoZWFkZXIudG9wbmF2IGgxIHN2ZywgI2Rvb2RsZWJnLCAjc2NlbmUgZGl2LCAjY29ubmVjdG9yLCBzZWN0aW9uLmNvbW1lbnRzLCAjcmVsYXRlZENvbnRlbnQsIHNlY3Rpb24uZ2FtZXMgLmdhbWUgLmRlc2NyaXB0aW9uIGgyIGltZywgaW1nLmFydHdvcmssIC5wYWdpbmF0aW9uICB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICB1bC5ibG9nbGlzdGluZyB7XG4gICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgbGkge1xuICAgICAgbGVmdDogYXV0byAhaW1wb3J0YW50O1xuICAgICAgdG9wOiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxuICAuam9ic2xpc3RpbmcgdWwgbGksIGFzaWRlIHVsIGxpLCAuaW5saW5lIGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbiAgLmpvYnNsaXN0aW5nIGltZywgLnR3ZWV0RGV0YWlscyAudHdlZXRBdmF0YXIge1xuICAgIHdpZHRoOiAxLjVlbTtcbiAgICBtYXJnaW4tcmlnaHQ6IC41ZW07XG4gIH1cbn1cbiIsIlxuXG4uZm9sbG93bWVoYWxsb3VtaSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgd2lkdGg6IDM5MHB4O1xuICBoZWlnaHQ6IDEyNHB4O1xuICB6LWluZGV4OiAyMDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHotaW5kZXg6IDEwMDA7XG59XG4uZm9sbG93bWVoYWxsb3VtaS5hY3RpdmUge1xuICBoZWlnaHQ6IDU3NHB4O1xufVxuLy8gXG4vLyAuZm9sbG93bWVoYWxsb3VtaTpob3ZlciwgLmZvbGxvd21laGFsbG91bWk6Zm9jdXMge1xuLy8gICB6LWluZGV4OiAxMDAwO1xuLy8gfVxuXG4uZm9sbG93bWVoYWxsb3VtaV9fYmFrZWQge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aWR0aDogMzkwcHg7XG4gIGhlaWdodDogNTc0cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDA7XG4gIGJvdHRvbTogMDtcbn1cblxuXG5cbkBtaXhpbiBtcS1tb2JpbGVfYW5kX3RhYmxldC1mYWxsb3VtaSgpIHtcbiAgLmZvbGxvd21laGFsbG91bWkge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuIiwiLm1vcmVhcnJvdyB7XG4gIHRyYW5zZm9ybTogcm90YXRlKDZkZWcpO1xuICBAaW5jbHVkZSBkZWZpbmVmb250cygkcm9ja3dlbGxfc3RhY2spO1xuICBAaW5jbHVkZSBhZGp1c3QtZm9udC1zaXplLXRvKDI4cHgpO1xuICBwYWRkaW5nOiBlbSg2cHgpIGVtKDE2cHgpIGVtKDRweCkgZW0oMTZweCk7XG4gIGNvbG9yOiAjMDAwO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbjogYXV0bztcbiAgZm9udC1zaXplOiAyOHB4O1xuICBiYWNrZ3JvdW5kOiB7XG4gICAgaW1hZ2U6IGltYWdlVXJsKFwiYmctbW9yZWFycm93LnBuZ1wiKTtcbiAgICByZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBwb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgICBzaXplOiBjb250YWluO1xuICB9XG4gIGh0bWwuc3ZnICYge1xuICAgIGJhY2tncm91bmQ6IHtcbiAgICAgIGltYWdlOiBpbWFnZVVybChcImJnLW1vcmVhcnJvdy5zdmdcIik7XG4gICAgfVxuICB9XG4gIGh0bWwuc3ZnICY6aG92ZXIge1xuICAgIGNvbG9yOiAkbW0tcGluaztcbiAgICBiYWNrZ3JvdW5kOiB7XG4gICAgICBpbWFnZTogaW1hZ2VVcmwoXCJiZy1tb3JlYXJyb3ctYW5pbWF0ZWQuc3ZnXCIpO1xuICAgIH1cbiAgfVxuICBzcGFuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cbiAgJi5tb3JlYXJyb3ctLWFsdHdvbmsge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC01ZGVnKTtcbiAgfVxuXG4gICYubW9yZWFycm93LS1ibHVlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZVVybChcImJnLW1vcmVhcnJvdy1ibHVlLnBuZ1wiKTtcbiAgICBodG1sLnN2ZyAmIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlVXJsKFwiYmctbW9yZWFycm93LWJsdWUuc3ZnXCIpO1xuICAgIH1cbiAgICBodG1sLnN2ZyAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGltYWdlVXJsKFwiYmctbW9yZWFycm93LWJsdWUtYW5pbWF0ZWQuc3ZnXCIpO1xuICAgIH1cbiAgfVxufVxuIiwiLyogQW5pbWF0aW9ucyAqL1xuXG5cbi8qXG5TZWxlY3RlZCBhbmltYXRpb25zIGZyb206IGh0dHA6Ly90aGVjc3NndXJ1LmZyZWVpei5jb20vYW5pbWF0ZS9zcmMvcGFydGlhbHMvX2FuaW1hdGUuc2Fzc1xuVmlhOiBodHRwOi8vdGhlY3NzZ3VydS5mcmVlaXouY29tL2FuaW1hdGUvXG5Gcm9tOiBodHRwOi8vZGFuZWRlbi5naXRodWIuaW8vYW5pbWF0ZS5jc3MvXG4qL1xuXG5AaW5jbHVkZSBrZXlmcmFtZXMoc2xpZGVJbkRvd25TdWJuYXZPZGQpIHtcbiAgMCUge1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zMDBweCkgdHJhbnNsYXRlWigxcHgpIHJvdGF0ZSgtNjBkZWcpO1xuICB9XG4gIDEwMCUge1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHRyYW5zbGF0ZVooMXB4KSByb3RhdGUoLTJkZWcpO1xuICB9XG59XG5AaW5jbHVkZSBrZXlmcmFtZXMoc2xpZGVJbkRvd25TdWJuYXZFdmVuKSB7XG4gIDAlIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMzAwcHgpIHRyYW5zbGF0ZVooMXB4KSByb3RhdGUoNDVkZWcpO1xuICB9XG4gIDEwMCUge1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHRyYW5zbGF0ZVooMXB4KSByb3RhdGUoMmRlZyk7XG4gIH1cbn1cbkBpbmNsdWRlIGtleWZyYW1lcyhzbGlkZUluRG93bikge1xuICAwJSB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoIC0yMDAwcHgpO1xuICB9XG4gIDEwMCUge1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCAwKTtcbiAgfVxufVxuQGluY2x1ZGUga2V5ZnJhbWVzKHNsaWRlT3V0VXApIHtcbiAgMCUge1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCAwKTtcbiAgfVxuICAxMDAlIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSggLTIwMDBweCk7XG4gIH1cbn1cblxuQGluY2x1ZGUga2V5ZnJhbWVzKGJvdW5jZSkge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCAwKTtcbiAgfVxuICAyMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSggMCk7XG4gIH1cbiAgNDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoIC0zMHB4KTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSggMCk7XG4gIH1cbiAgNjAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoIC0xNXB4KTtcbiAgfVxuICA4MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSggMCk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKCAwKTtcbiAgfVxufVxuXG5AaW5jbHVkZSBrZXlmcmFtZXMoYm91bmNlSW4pIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjMpO1xuICB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xuICB9XG4gIDcwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIH1cbn1cblxuQGluY2x1ZGUga2V5ZnJhbWVzKGJvdW5jZU91dCkge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45NSk7XG4gIH1cbiAgNzAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMSk7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuMyk7XG4gIH1cbn1cblxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVJbikge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbkBpbmNsdWRlIGtleWZyYW1lcyhmYWRlT3V0KSB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuQGluY2x1ZGUga2V5ZnJhbWVzKGZhZGVJbk91dCkge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICA1MCUge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG5AaW5jbHVkZSBrZXlmcmFtZXMoc2xpZ2h0RmFkZUluT3V0KSB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbkBpbmNsdWRlIGtleWZyYW1lcyhlYXRidXJnZXIpIHtcbiAgMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDBweCAtMTkwcHg7XG4gIH1cbiAgMTAwJSB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMHB4IC00MThweDtcbiAgfVxufVxuQGluY2x1ZGUga2V5ZnJhbWVzKG1ha2VidXJnZXIpIHtcbiAgMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDBweCAtMHB4O1xuICB9XG4gIDEwMCUge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDBweCAtMTkwcHg7XG4gIH1cbn1cblxuLyoqXG4gKiBNYWtlIHNvbWV0aGluZyBmbG9hdC5cbiAqL1xuQGluY2x1ZGUga2V5ZnJhbWVzKGZsb2F0KSB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwtOHB4LDApO1xuICB9XG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLDhweCwwKTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLC04cHgsMCk7XG4gIH1cbn1cblxuXG5cblxuXG5cbkBpbmNsdWRlIGtleWZyYW1lcyhzcGlubmVyKSB7XG4gIHRvIHt0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO31cbn1cbiIsIi8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIHNhc3Mgb3B0aW1pc2F0aW9uOiBicmluZ2luZyBtZWRpYSBxdWVyaWVzIGluIHRvIGEgc2luZ2xlIGxvY2F0aW9uLiBVcmdoXG4vL1xuXG5cblxuXG4vLyBtb2JpbGVcbkBpbmNsdWRlIGJyZWFrcG9pbnQoJG1vYmlsZSkge1xuICBAaW5jbHVkZSBtcS1tb2JpbGUtZ2VuZXJhbCgpO1xuICAvLyBAaW5jbHVkZSBtcS1tb2JpbGUtdG9wbmF2KCk7XG5cbn1cblxuLy8gdGFibGV0XG5AaW5jbHVkZSBicmVha3BvaW50KCR0YWJsZXQpIHtcbiAgQGluY2x1ZGUgbXEtdGFibGV0LWdlbmVyYWwoKTtcbiAgLy8gQGluY2x1ZGUgbXEtdGFibGV0LXRvcG5hdigpO1xuXG59XG5cbi8vIG1vYmlsZV9hbmRfdGFibGV0XG5AaW5jbHVkZSBicmVha3BvaW50KCRtb2JpbGVfYW5kX3RhYmxldCkge1xuICBAaW5jbHVkZSBtcS1tb2JpbGVfYW5kX3RhYmxldC1nZW5lcmFsKCk7XG4gIEBpbmNsdWRlIG1xLW1vYmlsZV9hbmRfdGFibGV0LXRvcG5hdigpO1xuICBAaW5jbHVkZSBtcS1tb2JpbGVfYW5kX3RhYmxldC1mYWxsb3VtaSgpO1xuXG59XG5cbi8vIGRlc2t0b3BcbkBpbmNsdWRlIGJyZWFrcG9pbnQoJGRlc2t0b3ApIHtcbiAgQGluY2x1ZGUgbXEtZGVza3RvcC1nZW5lcmFsKCk7XG4gIEBpbmNsdWRlIG1xLWRlc2t0b3AtdG9wbmF2KCk7XG5cbn1cblxuXG4vLyByZXRpbmFcbkBpbmNsdWRlIGJyZWFrcG9pbnQoJHJldGluYSkge1xuICBAaW5jbHVkZSBtcS1yZXRpbmEtZ2VuZXJhbCgpO1xuICBAaW5jbHVkZSBtcS1yZXRpbmEtdG9wbmF2KCk7XG5cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiRzJFaUNBLEFQNUJBLElPNEJJLENBQ0YsUUFBUSxDQUNOLENBQUMsQ00yS0wsQWJ6TUEsU2F5TVMsQ0FDUCxFQUFFLENBQ0EsQ0FBQyxDQUZMLEFiek1BLFNheU1TLENBQ0gsRUFBRSxDQUNKLENBQUMsQ0FGTCxBYnpNQSxTYXlNUyxDQUNDLEVBQUUsQ0FDUixDQUFDLENBZUwsQWIxTkEsQ2EwTkMsQ0FJQyxDQUFDLENBSkEsQWIxTkgsSWEwTk8sQ0FJTCxDQUFDLENBOEZILEFiNVRBLFVhNFRVLENBQ1IsQ0FBQyxDQXBJSCxBYnpMQSxFYXlMRSxDQUNBLENBQUMsQ0FLSCxBYi9MQSxFYStMRSxDQUdBLENBQUMsQ0FIQyxBYi9MSixFYStMTSxDQUdKLENBQUMsQ0FISyxBYi9MUixFYStMVSxDQUdSLENBQUMsQWJsTVksQ0FDYixlQUFlLENBQUUsSUFBSSxDQUNyQixLQUFLLENESkssT0FBTyxDQ1lsQixBT2tCRCxBUDVCQSxJTzRCSSxDQUNGLFFBQVEsQ0FDTixDQUFDLEFQM0JMLE1BQVMsQ2F1TlQsQWIxTkEsQ2EwTkMsQ0FJQyxDQUFDLEFiM05ILE1BQVMsQ2F1Tk4sQWIxTkgsSWEwTk8sQ0FJTCxDQUFDLEFiM05ILE1BQVMsQ2F5VFQsQWI1VEEsVWE0VFUsQ0FDUixDQUFDLEFiMVRILE1BQVMsQ2FzTFQsQWJ6TEEsRWF5TEUsQ0FDQSxDQUFDLEFidkxILE1BQVMsQ2E0TFQsQWIvTEEsRWErTEUsQ0FHQSxDQUFDLEFiL0xILE1BQVMsQ2E0TEwsQWIvTEosRWErTE0sQ0FHSixDQUFDLEFiL0xILE1BQVMsQ2E0TEQsQWIvTFIsRWErTFUsQ0FHUixDQUFDLEFiL0xILE1BQVMsQUFBQyxDQUNOLEtBQUssQ0FBRSxPQUF1QixDQUMvQixBT3VCSCxBUDVCQSxJTzRCSSxDQUNGLFFBQVEsQ0FDTixDQUFDLEFUSUcsZ0JBQWlCLENldUt6QixBYnpNQSxTYXlNUyxDQUNQLEVBQUUsQ0FDQSxDQUFDLEFmektHLGdCQUFpQixDZXVLekIsQWJ6TUEsU2F5TVMsQ0FDSCxFQUFFLENBQ0osQ0FBQyxBZnpLRyxnQkFBaUIsQ2V1S3pCLEFiek1BLFNheU1TLENBQ0MsRUFBRSxDQUNSLENBQUMsQWZ6S0csZ0JBQWlCLENld0x6QixBYjFOQSxDYTBOQyxDQUlDLENBQUMsQWY1TEssZ0JBQWlCLENld0x0QixBYjFOSCxJYTBOTyxDQUlMLENBQUMsQWY1TEssZ0JBQWlCLENlMFJ6QixBYjVUQSxVYTRUVSxDQUNSLENBQUMsQWYzUkssZ0JBQWlCLENldUp6QixBYnpMQSxFYXlMRSxDQUNBLENBQUMsQWZ4SkssZ0JBQWlCLENlNkp6QixBYi9MQSxFYStMRSxDQUdBLENBQUMsQWZoS0ssZ0JBQWlCLENlNkpyQixBYi9MSixFYStMTSxDQUdKLENBQUMsQWZoS0ssZ0JBQWlCLENlNkpqQixBYi9MUixFYStMVSxDQUdSLENBQUMsQWZoS0ssZ0JBQWlCLEFBQU0sQ0FDbkIsS0FBSyxDQy9CSixxQkFBTyxDRCtCTSxVQUFVLENBQ3hCLFVBQVUsQ0N0Q1YsT0FBTyxDRHVDVixBU1RULEFQNUJBLElPNEJJLENBQ0YsUUFBUSxDQUNOLENBQUMsQVRJRyxXQUFZLENldUtwQixBYnpNQSxTYXlNUyxDQUNQLEVBQUUsQ0FDQSxDQUFDLEFmektHLFdBQVksQ2V1S3BCLEFiek1BLFNheU1TLENBQ0gsRUFBRSxDQUNKLENBQUMsQWZ6S0csV0FBWSxDZXVLcEIsQWJ6TUEsU2F5TVMsQ0FDQyxFQUFFLENBQ1IsQ0FBQyxBZnpLRyxXQUFZLENld0xwQixBYjFOQSxDYTBOQyxDQUlDLENBQUMsQWY1TEssV0FBWSxDZXdMakIsQWIxTkgsSWEwTk8sQ0FJTCxDQUFDLEFmNUxLLFdBQVksQ2UwUnBCLEFiNVRBLFVhNFRVLENBQ1IsQ0FBQyxBZjNSSyxXQUFZLENldUpwQixBYnpMQSxFYXlMRSxDQUNBLENBQUMsQWZ4SkssV0FBWSxDZTZKcEIsQWIvTEEsRWErTEUsQ0FHQSxDQUFD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QUUsQ0FDSixDQUFDLEFmektHLFdBQVksQ2V1S3BCLEFiek1BLFNheU1TLENBQ0MsRUFBRSxDQUNSLENBQUMsQWZ6S0csV0FBWSxDZXdMcEIsQWIxTkEsQ2EwTkMsQ0FJQyxDQUFDLEFmNUxLLFdBQVksQ2V3TGpCLEFiMU5ILElhME5PLENBSUwsQ0FBQyxBZjVMSyxXQUFZLENlMFJwQixBYjVUQSxVYTRUVSxDQUNSLENBQUMsQWYzUkssV0FBWSxDZXVKcEIsQWJ6TEEsRWF5TEUsQ0FDQSxDQUFDLEFmeEpLLFdBQVksQ2U2SnBCLEFiL0xBLEVhK0xFLENBR0EsQ0FBQyxBZmhLSyxXQUFZLENlNkpoQixBYi9MSixFYStMTSxDQUdKLENBQUMsQWZoS0ssV0FBWSxDZTZKWixBYi9MUixFYStMVSxDQUdSLENBQUMsQWZoS0ssV0FBWSxBQUFXLENBQ25CLEtBQUssQ0MvQkoscUJBQU8sQ0QrQk0sVUFBVSxDQUN4QixVQUFVLENDdENWLE9BQU8sQ0R1Q1YsQVNUVCxBUHJCRSxJT3FCRSxDQUNGLFFBQVEsQ0FDTixDQUFDLENQdkJILElBQUksQUYyQkUsZ0JBQWlCLENldUt6QixBYmxNRSxTYWtNTyxDQUNQLEVBQUUsQ0FDQSxDQUFDLENicE1ILElBQUksQUYyQkUsZ0JBQWlCLENldUt6QixBYmxNRSxTYWtNTyxDQUNILEVBQUUsQ0FDSixDQUFDLENicE1ILElBQUksQUYyQkUsZ0JBQWlCLENldUt6QixBYmxNRSxTYWtNTyxDQUNDLEVBQUUsQ0FDUixDQUFDLENicE1ILElBQUksQUYyQkUsZ0JBQWlCLENld0x6QixBYm5ORSxDYW1ORCxDQUlDLENBQUMsQ2J2TkQsSUFBSSxBRjJCRSxnQkFBaUIsQ2V3THRCLEFibk5ELElhbU5LLENBSUwsQ0FBQyxDYnZORCxJQUFJLEFGMkJFLGdCQUFpQixDZTBSekIsQWJyVEUsVWFxVFEsQ0FDUixDQUFDLENidFRELElBQUksQUYyQkUsZ0JBQWlCLENldUp6QixBYmxMRSxFYWtMQSxDQUNBLENBQUMsQ2JuTEQsSUFBSSxBRjJCRSxnQkFBaUIsQ2U2SnpCLEFieExFLEVhd0xB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RSxnQkFBaUIsQ2V1S3pCLEFibE1FLFNha01PLENBQ0MsRUFBRSxDQUNSLENBQUMsQ2JwTUgsSUFBSSxBRjJCRSxnQkFBaUIsQ2V3THpCLEFibk5FLENhbU5ELENBSUMsQ0FBQyxDYnZORCxJQUFJLEFGMkJFLGdCQUFpQixDZXdMdEIsQWJuTkQsSWFtTkssQ0FJTCxDQUFDLENidk5ELElBQUksQUYyQkUsZ0JBQWlCLENlMFJ6QixBYnJURSxVYXFUUSxDQUNSLENBQUMsQ2J0VEQsSUFBSSxBRjJCRSxnQkFBaUIsQ2V1SnpCLEFibExFLEVha0xBLENBQ0EsQ0FBQyxDYm5MRCxJQUFJLEFGMkJFLGdCQUFpQixDZTZKekIsQWJ4TEUsRWF3TEEsQ0FHQSxDQUFDLENiM0xELElBQUksQUYyQkUsZ0JBQWlCLENlNkpyQixBYnhMRixFYXdMSSxDQUdKLENBQUMsQ2IzTEQsSUFBSSxBRjJCRSxnQkFBaUIsQ2U2SmpCLEFieExOLEVhd0xRLENBR1IsQ0FBQyxDYjNMRCxJQUFJLEFGMkJFLGdCQUFpQixBQUFNLENBQ25CLEtBQUssQ0MvQkoscUJBQU8sQ0QrQk0sVUFBVSxDQUN4QixVQUFVLENDdENWLE9BQU8sQ0R1Q1YsQVNUVCxBUHJCRSxJT3FCRSxDQUNGLFFBQVEsQ0FDTixDQUFDLENQdkJILElBQUksQUYyQkUsV0FBWSxDZXVLcEIsQWJsTUUsU2FrTU8sQ0FDUCxFQUFFLENBQ0EsQ0FBQyxDYnBNSCxJQUFJLEFGMkJFLFdBQVksQ2V1S3BCLEFibE1FLFNha01PLENBQ0gsRUFBRSxDQUNKLENBQUMsQ2JwTUgsSUFBSSxBRjJCRSxXQUFZLENldUtwQixBYmxNRSxTYWtNTyxDQUNDLEVBQUUsQ0FDUixDQUFDLENicE1ILElBQUksQUYyQkUsV0FBWSxDZXdMcEIsQWJuTkUsQ2FtTkQsQ0FJQyxDQUFDLENidk5ELElBQUksQUYyQkUsV0FBWSxDZXdMakIsQWJuTkQsSWFtTkssQ0FJTCxDQUFDLENidk5ELElBQUksQUYyQkUsV0FBWSxDZTBScEIsQWJyVEUsVWFxVFEsQ0FDUixDQUFDLENidFRELElBQUksQUYyQkUs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 */
